",e(c).insertAfter(t.find("div.calendars-nav,div.ui-datepicker-header:first")).find("a").click(function(){var e=r.calendarsPicker("retrieveDate",this);return r.calendarsPicker("showMonth",e.year(),e.month()),!1})},selectWeek:function(t,a,i){var r=e(this);t.find("td.calendars-week span").each(function(){e(''+e(this).text()+"").click(function(){for(var e=r.calendarsPicker("retrieveDate",this),t=[e],n=1;n'+e(this).text()+"").click(function(){for(var t=r.calendarsPicker("retrieveDate",e(this).parents("table").find("td:not(.calendars-week) *:not(.calendars-other-month)")[0]),n=[t.day(1)],s=a.daysInMonth(t),d=1;s>d;d++)n.push(t=t.newDate().add(1,"d"));i.options.rangeSelect&&n.splice(1,n.length-2),r.calendarsPicker("setDate",n).calendarsPicker("hide")}).appendTo(this)})},monthOnly:function(t,a,i){var r=e(this);e('').insertAfter(t.find(".calendars-month-row:last,.ui-datepicker-row-break:last")).children().click(function(){var e=t.find(".calendars-month-year:first").val().split("/");r.calendarsPicker("setDate",a.newDate(parseInt(e[1],10),parseInt(e[0],10),a.minDay)).calendarsPicker("hide")});t.find(".calendars-month-row table,.ui-datepicker-row-break table").remove()}})}(jQuery);
diff --git a/src/Orchard.Web/Modules/Orchard.Resources/Scripts/Calendars/jquery.calendars.picker.js b/src/Orchard.Web/Modules/Orchard.Resources/Scripts/Calendars/jquery.calendars.picker.js
index 1f013895b..f5a26c384 100644
--- a/src/Orchard.Web/Modules/Orchard.Resources/Scripts/Calendars/jquery.calendars.picker.js
+++ b/src/Orchard.Web/Modules/Orchard.Resources/Scripts/Calendars/jquery.calendars.picker.js
@@ -1824,5 +1824,3 @@
});
})(jQuery);
-
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImpxdWVyeS5jYWxlbmRhcnMucGlja2VyLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxBQUxBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6ImpxdWVyeS5jYWxlbmRhcnMucGlja2VyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyogaHR0cDovL2tlaXRoLXdvb2QubmFtZS9jYWxlbmRhcnMuaHRtbFxuICAgQ2FsZW5kYXJzIGRhdGUgcGlja2VyIGZvciBqUXVlcnkgdjIuMC4xLlxuICAgV3JpdHRlbiBieSBLZWl0aCBXb29kIChrYndvb2R7YXR9aWluZXQuY29tLmF1KSBBdWd1c3QgMjAwOS5cbiAgIEF2YWlsYWJsZSB1bmRlciB0aGUgTUlUIChodHRwOi8va2VpdGgtd29vZC5uYW1lL2xpY2VuY2UuaHRtbCkgbGljZW5zZS4gXG4gICBQbGVhc2UgYXR0cmlidXRlIHRoZSBhdXRob3IgaWYgeW91IHVzZSBpdC4gKi9cblxuKGZ1bmN0aW9uKCQpIHsgLy8gSGlkZSBzY29wZSwgbm8gJCBjb25mbGljdFxuXG5cdHZhciBwbHVnaW5OYW1lID0gJ2NhbGVuZGFyc1BpY2tlcic7XG5cblxuXHQvKiogQ3JlYXRlIHRoZSBjYWxlbmRhcnMgZGF0ZXBpY2tlciBwbHVnaW4uXG5cdFx0PHA+U2V0cyBhbiBpbnB1dCBmaWVsZCB0byBwb3B1cCBhIGNhbGVuZGFyIGZvciBkYXRlIGVudHJ5LFxuXHRcdFx0b3IgYSA8Y29kZT5kaXY8L2NvZGU+IG9yIDxjb2RlPnNwYW48L2NvZGU+IHRvIHNob3cgYW4gaW5saW5lIGNhbGVuZGFyLjwvcD5cblx0XHQ8cD5FeHBlY3RzIEhUTUwgbGlrZTo8L3A+XG5cdFx0PHByZT4mbHQ7aW5wdXQgdHlwZT1cInRleHRcIj4gb3IgJmx0O2Rpdj4mbHQ7L2Rpdj48L3ByZT5cblx0XHQ8cD5Qcm92aWRlIGlubGluZSBjb25maWd1cmF0aW9uIGxpa2U6PC9wPlxuXHRcdDxwcmU+Jmx0O2lucHV0IHR5cGU9XCJ0ZXh0XCIgZGF0YS1jYWxlbmRhcnNQaWNrZXI9XCJuYW1lOiAndmFsdWUnXCIvPjwvcHJlPlxuXHQgXHRAY2xhc3MgQ2FsZW5kYXJzUGlja2VyXG5cdFx0QGF1Z21lbnRzIEpRUGx1Z2luXG5cdFx0QGV4YW1wbGUgJChzZWxlY3RvcikuY2FsZW5kYXJzUGlja2VyKClcbiAkKHNlbGVjdG9yKS5jYWxlbmRhcnNQaWNrZXIoe21pbkRhdGU6IDAsIG1heERhdGU6ICcrMW0gKzF3J30pICovXG5cdCQuSlFQbHVnaW4uY3JlYXRlUGx1Z2luKHtcblx0XG5cdFx0LyoqIFRoZSBuYW1lIG9mIHRoZSBwbHVnaW4uXG5cdFx0XHRAbWVtYmVyb2YgQ2FsZW5kYXJzUGlja2VyICovXG5cdFx0bmFtZTogcGx1Z2luTmFtZSxcblx0XHRcblx0XHQvKiogRGVmYXVsdCB0ZW1wbGF0ZSBmb3IgZ2VuZXJhdGluZyBhIGRhdGVwaWNrZXIuXG5cdFx0XHRJbnNlcnQgYW55d2hlcmU6XG5cdFx0XHQ8dWw+XG5cdFx0XHQ8bGk+J3tsMTBuOm5hbWV9JyB0byBpbnNlcnQgbG9jYWxpc2VkIHZhbHVlIGZvciBuYW1lLDwvbGk+XG5cdFx0XHQ8bGk+J3tsaW5rOm5hbWV9JyB0byBpbnNlcnQgYSBsaW5rIHRyaWdnZXIgZm9yIGNvbW1hbmQgbmFtZSw8L2xpPlxuXHRcdFx0PGxpPid7YnV0dG9uOm5hbWV9JyB0byBpbnNlcnQgYSBidXR0b24gdHJpZ2dlciBmb3IgY29tbWFuZCBuYW1lLDwvbGk+XG5cdFx0XHQ8bGk+J3twb3B1cDpzdGFydH0uLi57cG9wdXA6ZW5kfScgdG8gbWFyayBhIHNlY3Rpb24gZm9yIGluY2x1c2lvbiBpbiBhIHBvcHVwIGRhdGVwaWNrZXIgb25seSw8L2xpPlxuXHRcdFx0PGxpPid7aW5saW5lOnN0YXJ0fS4uLntpbmxpbmU6ZW5kfScgdG8gbWFyayBhIHNlY3Rpb24gZm9yIGluY2x1c2lvbiBpbiBhbiBpbmxpbmUgZGF0ZXBpY2tlciBvbmx5LjwvbGk+XG5cdFx0XHQ8L3VsPlxuXHRcdFx0QG1lbWJlcm9mIENhbGVuZGFyc1BpY2tlclxuXHRcdFx0QHByb3BlcnR5IHBpY2tlciB7c3RyaW5nfSBPdmVyYWxsIHN0cnVjdHVyZTogJ3ttb250aHN9JyB0byBpbnNlcnQgY2FsZW5kYXIgbW9udGhzLlxuXHRcdFx0QHByb3BlcnR5IG1vbnRoUm93IHtzdHJpbmd9IE9uZSByb3cgb2YgbW9udGhzOiAne21vbnRoc30nIHRvIGluc2VydCBjYWxlbmRhciBtb250aHMuXG5cdFx0XHRAcHJvcGVydHkgbW9udGgge3N0cmluZ30gQSBzaW5nbGUgbW9udGg6ICd7bW9udGhIZWFkZXI8ZW0+OmRhdGVGb3JtYXQ8L2VtPn0nIHRvIGluc2VydCB0aGUgbW9udGggaGVhZGVyIC1cblx0XHRcdFx0XHRcdDxlbT5kYXRlRm9ybWF0PC9lbT4gaXMgb3B0aW9uYWwgYW5kIGRlZmF1bHRzIHRvICdNTSB5eXl5Jyxcblx0XHRcdFx0XHRcdCd7d2Vla0hlYWRlcn0nIHRvIGluc2VydCBhIHdlZWsgaGVhZGVyLCAne3dlZWtzfScgdG8gaW5zZXJ0IHRoZSBtb250aCdzIHdlZWtzLlxuXHRcdFx0QHByb3BlcnR5IHdlZWtIZWFkZXIge3N0cmluZ30gQSB3ZWVrIGhlYWRlcjogJ3tkYXlzfScgdG8gaW5zZXJ0IGluZGl2aWR1YWwgZGF5IG5hbWVzLlxuXHRcdFx0QHByb3BlcnR5IGRheUhlYWRlciB7c3RyaW5nfSBJbmRpdmlkdWFsIGRheSBoZWFkZXI6ICd7ZGF5fScgdG8gaW5zZXJ0IGRheSBuYW1lLlxuXHRcdFx0QHByb3BlcnR5IHdlZWsge3N0cmluZ30gT25lIHdlZWsgb2YgdGhlIG1vbnRoOiAne2RheXN9JyB0byBpbnNlcnQgdGhlIHdlZWsncyBkYXlzLFxuXHRcdFx0XHRcdFx0J3t3ZWVrT2ZZZWFyfScgdG8gaW5zZXJ0IHdlZWsgb2YgeWVhci5cblx0XHRcdEBwcm9wZXJ0eSBkYXkge3N0cmluZ30gQW4gaW5kaXZpZHVhbCBkYXk6ICd7ZGF5fScgdG8gaW5zZXJ0IGRheSB2YWx1ZS5cblx0XHRcdEBwcm9wZXJ0eSBtb250aFNlbGVjdG9yIHtzdHJpbmd9IGpRdWVyeSBzZWxlY3RvciwgcmVsYXRpdmUgdG8gcGlja2VyLCBmb3IgYSBzaW5nbGUgbW9udGguXG5cdFx0XHRAcHJvcGVydHkgZGF5U2VsZWN0b3Ige3N0cmluZ30galF1ZXJ5IHNlbGVjdG9yLCByZWxhdGl2ZSB0byBwaWNrZXIsIGZvciBpbmRpdmlkdWFsIGRheXMuXG5cdFx0XHRAcHJvcGVydHkgcnRsQ2xhc3Mge3N0cmluZ30gQ2xhc3MgZm9yIHJpZ2h0LXRvLWxlZnQgKFJUTCkgbGFuZ3VhZ2VzLlxuXHRcdFx0QHByb3BlcnR5IG11bHRpQ2xhc3Mge3N0cmluZ30gQ2xhc3MgZm9yIG11bHRpLW1vbnRoIGRhdGVwaWNrZXJzLlxuXHRcdFx0QHByb3BlcnR5IGRlZmF1bHRDbGFzcyB7c3RyaW5nfSBDbGFzcyBmb3Igc2VsZWN0YWJsZSBkYXRlcy5cblx0XHRcdEBwcm9wZXJ0eSBzZWxlY3RlZENsYXNzIHtzdHJpbmd9IENsYXNzIGZvciBjdXJyZW50bHkgc2VsZWN0ZWQgZGF0ZXMuXG5cdFx0XHRAcHJvcGVydHkgaGlnaGxpZ2h0ZWRDbGFzcyB7c3RyaW5nfSBDbGFzcyBmb3IgaGlnaGxpZ2h0ZWQgZGF0ZXMuXG5cdFx0XHRAcHJvcGVydHkgdG9kYXlDbGFzcyB7c3RyaW5nfSBDbGFzcyBmb3IgdG9kYXkuXG5cdFx0XHRAcHJvcGVydHkgb3RoZXJNb250aENsYXNzIHtzdHJpbmd9IENsYXNzIGZvciBkYXlzIGZyb20gb3RoZXIgbW9udGhzLlxuXHRcdFx0QHByb3BlcnR5IHdlZWtlbmRDbGFzcyB7c3RyaW5nfSBDbGFzcyBmb3IgZGF5cyBvbiB3ZWVrZW5kcy5cblx0XHRcdEBwcm9wZXJ0eSBjb21tYW5kQ2xhc3Mge3N0cmluZ30gQ2xhc3MgcHJlZml4IGZvciBjb21tYW5kcy5cblx0XHRcdEBwcm9wZXJ0eSBjb21tYW5kQnV0dG9uQ2xhc3Mge3N0cmluZ30gRXh0cmEgY2xhc3MoZXMpIGZvciBjb21tYW5kcyB0aGF0IGFyZSBidXR0b25zLlxuXHRcdFx0QHByb3BlcnR5IGNvbW1hbmRMaW5rQ2xhc3Mge3N0cmluZ30gRXh0cmEgY2xhc3MoZXMpIGZvciBjb21tYW5kcyB0aGF0IGFyZSBsaW5rcy5cblx0XHRcdEBwcm9wZXJ0eSBkaXNhYmxlZENsYXNzIHtzdHJpbmd9IENsYXNzIGZvciBkaXNhYmxlZCBjb21tYW5kcy4gKi9cblx0XHRkZWZhdWx0UmVuZGVyZXI6IHtcblx0XHRcdHBpY2tlcjogJzxkaXYgY2xhc3M9XCJjYWxlbmRhcnNcIj4nICtcblx0XHRcdCc8ZGl2IGNsYXNzPVwiY2FsZW5kYXJzLW5hdlwiPntsaW5rOnByZXZ9e2xpbms6dG9kYXl9e2xpbms6bmV4dH08L2Rpdj57bW9udGhzfScgK1xuXHRcdFx0J3twb3B1cDpzdGFydH08ZGl2IGNsYXNzPVwiY2FsZW5kYXJzLWN0cmxcIj57bGluazpjbGVhcn17bGluazpjbG9zZX08L2Rpdj57cG9wdXA6ZW5kfScgK1xuXHRcdFx0JzxkaXYgY2xhc3M9XCJjYWxlbmRhcnMtY2xlYXItZml4XCI+PC9kaXY+PC9kaXY+Jyxcblx0XHRcdG1vbnRoUm93OiAnPGRpdiBjbGFzcz1cImNhbGVuZGFycy1tb250aC1yb3dcIj57bW9udGhzfTwvZGl2PicsXG5cdFx0XHRtb250aDogJzxkaXYgY2xhc3M9XCJjYWxlbmRhcnMtbW9udGhcIj48ZGl2IGNsYXNzPVwiY2FsZW5kYXJzLW1vbnRoLWhlYWRlclwiPnttb250aEhlYWRlcn08L2Rpdj4nICtcblx0XHRcdCc8dGFibGU+PHRoZWFkPnt3ZWVrSGVhZGVyfTwvdGhlYWQ+PHRib2R5Pnt3ZWVrc308L3Rib2R5PjwvdGFibGU+PC9kaXY+Jyxcblx0XHRcdHdlZWtIZWFkZXI6ICc8dHI+e2RheXN9PC90cj4nLFxuXHRcdFx0ZGF5SGVhZGVyOiAnPHRoPntkYXl9PC90aD4nLFxuXHRcdFx0d2VlazogJzx0cj57ZGF5c308L3RyPicsXG5cdFx0XHRkYXk6ICc8dGQ+e2RheX08L3RkPicsXG5cdFx0XHRtb250aFNlbGVjdG9yOiAnLmNhbGVuZGFycy1tb250aCcsXG5cdFx0XHRkYXlTZWxlY3RvcjogJ3RkJyxcblx0XHRcdHJ0bENsYXNzOiAnY2FsZW5kYXJzLXJ0bCcsXG5cdFx0XHRtdWx0aUNsYXNzOiAnY2FsZW5kYXJzLW11bHRpJyxcblx0XHRcdGRlZmF1bHRDbGFzczogJycsXG5cdFx0XHRzZWxlY3RlZENsYXNzOiAnY2FsZW5kYXJzLXNlbGVjdGVkJyxcblx0XHRcdGhpZ2hsaWdodGVkQ2xhc3M6ICdjYWxlbmRhcnMtaGlnaGxpZ2h0Jyxcblx0XHRcdHRvZGF5Q2xhc3M6ICdjYWxlbmRhcnMtdG9kYXknLFxuXHRcdFx0b3RoZXJNb250aENsYXNzOiAnY2FsZW5kYXJzLW90aGVyLW1vbnRoJyxcblx0XHRcdHdlZWtlbmRDbGFzczogJ2NhbGVuZGFycy13ZWVrZW5kJyxcblx0XHRcdGNvbW1hbmRDbGFzczogJ2NhbGVuZGFycy1jbWQnLFxuXHRcdFx0Y29tbWFuZEJ1dHRvbkNsYXNzOiAnJyxcblx0XHRcdGNvbW1hbmRMaW5rQ2xhc3M6ICcnLFxuXHRcdFx0ZGlzYWJsZWRDbGFzczogJ2NhbGVuZGFycy1kaXNhYmxlZCdcblx0XHR9LFxuXHRcblx0XHQvKiogQ29tbWFuZCBhY3Rpb25zIHRoYXQgbWF5IGJlIGFkZGVkIHRvIGEgbGF5b3V0IGJ5IG5hbWUuXG5cdFx0XHQ8dWw+XG5cdFx0XHQ8bGk+cHJldiAtIFNob3cgdGhlIHByZXZpb3VzIG1vbnRoIChiYXNlZCBvbiA8Y29kZT5tb250aHNUb1N0ZXA8L2NvZGU+IG9wdGlvbikgLSA8ZW0+UGFnZVVwPC9lbT48L2xpPlxuXHRcdFx0PGxpPnByZXZKdW1wIC0gU2hvdyB0aGUgcHJldmlvdXMgeWVhciAoYmFzZWQgb24gPGNvZGU+bW9udGhzVG9KdW1wPC9jb2RlPiBvcHRpb24pIC0gPGVtPkN0cmwrUGFnZVVwPC9lbT48L2xpPlxuXHRcdFx0PGxpPm5leHQgLSBTaG93IHRoZSBuZXh0IG1vbnRoIChiYXNlZCBvbiA8Y29kZT5tb250aHNUb1N0ZXA8L2NvZGU+IG9wdGlvbikgLSA8ZW0+UGFnZURvd248L2VtPjwvbGk+XG5cdFx0XHQ8bGk+bmV4dEp1bXAgLSBTaG93IHRoZSBuZXh0IHllYXIgKGJhc2VkIG9uIDxjb2RlPm1vbnRoc1RvSnVtcDwvY29kZT4gb3B0aW9uKSAtIDxlbT5DdHJsK1BhZ2VEb3duPC9lbT48L2xpPlxuXHRcdFx0PGxpPmN1cnJlbnQgLSBTaG93IHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgbW9udGggb3IgdG9kYXkncyBpZiBub25lIHNlbGVjdGVkIC0gPGVtPkN0cmwrSG9tZTwvZW0+PC9saT5cblx0XHRcdDxsaT50b2RheSAtIFNob3cgdG9kYXkncyBtb250aCAtIDxlbT5DdHJsK0hvbWU8L2VtPjwvbGk+XG5cdFx0XHQ8bGk+Y2xlYXIgLSBFcmFzZSB0aGUgZGF0ZSBhbmQgY2xvc2UgdGhlIGRhdGVwaWNrZXIgcG9wdXAgLSA8ZW0+Q3RybCtFbmQ8L2VtPjwvbGk+XG5cdFx0XHQ8bGk+Y2xvc2UgLSBDbG9zZSB0aGUgZGF0ZXBpY2tlciBwb3B1cCAtIDxlbT5Fc2M8L2VtPjwvbGk+XG5cdFx0XHQ8bGk+cHJldldlZWsgLSBNb3ZlIHRoZSBjdXJzb3IgdG8gdGhlIHByZXZpb3VzIHdlZWsgLSA8ZW0+Q3RybCtVcDwvZW0+PC9saT5cblx0XHRcdDxsaT5wcmV2RGF5IC0gTW92ZSB0aGUgY3Vyc29yIHRvIHRoZSBwcmV2aW91cyBkYXkgLSA8ZW0+Q3RybCtMZWZ0PC9lbT48L2xpPlxuXHRcdFx0PGxpPm5leHREYXkgLSBNb3ZlIHRoZSBjdXJzb3IgdG8gdGhlIG5leHQgZGF5IC0gPGVtPkN0cmwrUmlnaHQ8L2VtPjwvbGk+XG5cdFx0XHQ8bGk+bmV4dFdlZWsgLSBNb3ZlIHRoZSBjdXJzb3IgdG8gdGhlIG5leHQgd2VlayAtIDxlbT5DdHJsK0Rvd248L2VtPjwvbGk+XG5cdFx0XHQ8L3VsPlxuXHRcdFx0VGhlIGNvbW1hbmQgbmFtZSBpcyB0aGUga2V5IG5hbWUgYW5kIGlzIHVzZWQgdG8gYWRkIHRoZSBjb21tYW5kIHRvIGEgbGF5b3V0XG5cdFx0XHR3aXRoICd7YnV0dG9uOm5hbWV9JyBvciAne2xpbms6bmFtZX0nLiBFYWNoIGhhcyB0aGUgZm9sbG93aW5nIGF0dHJpYnV0ZXMuXG5cdFx0XHRAbWVtYmVyb2YgQ2FsZW5kYXJzUGlja2VyXG5cdFx0XHRAcHJvcGVydHkgdGV4dCB7c3RyaW5nfSBUaGUgZmllbGQgaW4gdGhlIHJlZ2lvbmFsIHNldHRpbmdzIGZvciB0aGUgZGlzcGxheWVkIHRleHQuXG5cdFx0XHRAcHJvcGVydHkgc3RhdHVzIHtzdHJpbmd9IFRoZSBmaWVsZCBpbiB0aGUgcmVnaW9uYWwgc2V0dGluZ3MgZm9yIHRoZSBzdGF0dXMgdGV4dC5cblx0XHRcdEBwcm9wZXJ0eSBrZXlzdHJva2Uge29iamVjdH0gVGhlIGtleXN0cm9rZSB0byB0cmlnZ2VyIHRoZSBhY3Rpb24sIHdpdGggYXR0cmlidXRlczpcblx0XHRcdFx0PGNvZGU+a2V5Q29kZTwvY29kZT4ge251bWJlcn0gdGhlIGNvZGUgZm9yIHRoZSBrZXlzdHJva2UsXG5cdFx0XHRcdDxjb2RlPmN0cmxLZXk8L2NvZGU+IHtib29sZWFufSA8Y29kZT50cnVlPC9jb2RlPiBpZiA8ZW0+Q3RybDwvZW0+IGlzIHJlcXVpcmVkLFxuXHRcdFx0XHQ8Y29kZT5hbHRLZXk8L2NvZGU+IHtib29sZWFufSA8Y29kZT50cnVlPC9jb2RlPiBpZiA8ZW0+QWx0PC9lbT4gaXMgcmVxdWlyZWQsXG5cdFx0XHRcdDxjb2RlPnNoaWZ0S2V5PC9jb2RlPiB7Ym9vbGVhbn0gPGNvZGU+dHJ1ZTwvY29kZT4gaWYgPGVtPlNoaWZ0PC9lbT4gaXMgcmVxdWlyZWQuXG5cdFx0XHRAcHJvcGVydHkgZW5hYmxlZCB7Q2FsZW5kYXJzUGlja2VyQ29tbWFuZEVuYWJsZWR9IFRoZSBmdW5jdGlvbiB0aGF0IGluZGljYXRlcyB0aGUgY29tbWFuZCBpcyBlbmFibGVkLlxuXHRcdFx0QHByb3BlcnR5IGRhdGUge0NhbGVuZGFyc1BpY2tlckNvbW1hbmREYXRlfSBUaGUgZnVuY3Rpb24gdG8gZ2V0IHRoZSBkYXRlIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGFjdGlvbi5cblx0XHRcdEBwcm9wZXJ0eSBhY3Rpb24ge0NhbGVuZGFyc1BpY2tlckNvbW1hbmRBY3Rpb259IFRoZSBmdW5jdGlvbiB0aGF0IGltcGxlbWVudHMgdGhlIGFjdGlvbi4gKi9cblx0XHRjb21tYW5kczoge1xuXHRcdFx0cHJldjoge3RleHQ6ICdwcmV2VGV4dCcsIHN0YXR1czogJ3ByZXZTdGF0dXMnLCAvLyBQcmV2aW91cyBtb250aFxuXHRcdFx0XHRrZXlzdHJva2U6IHtrZXlDb2RlOiAzM30sIC8vIFBhZ2UgdXBcblx0XHRcdFx0ZW5hYmxlZDogZnVuY3Rpb24oaW5zdCkge1xuXHRcdFx0XHRcdHZhciBtaW5EYXRlID0gaW5zdC5jdXJNaW5EYXRlKCk7XG5cdFx0XHRcdFx0cmV0dXJuICghbWluRGF0ZSB8fCBpbnN0LmRyYXdEYXRlLm5ld0RhdGUoKS5cblx0XHRcdFx0XHRcdGFkZCgxIC0gaW5zdC5vcHRpb25zLm1vbnRoc1RvU3RlcCAtIGluc3Qub3B0aW9ucy5tb250aHNPZmZzZXQsICdtJykuXG5cdFx0XHRcdFx0XHRkYXkoaW5zdC5vcHRpb25zLmNhbGVuZGFyLm1pbkRheSkuYWRkKC0xLCAnZCcpLmNvbXBhcmVUbyhtaW5EYXRlKSAhPT0gLTEpOyB9LFxuXHRcdFx0XHRkYXRlOiBmdW5jdGlvbihpbnN0KSB7XG5cdFx0XHRcdFx0cmV0dXJuIGluc3QuZHJhd0RhdGUubmV3RGF0ZSgpLlxuXHRcdFx0XHRcdFx0YWRkKC1pbnN0Lm9wdGlvbnMubW9udGhzVG9TdGVwIC0gaW5zdC5vcHRpb25zLm1vbnRoc09mZnNldCwgJ20nKS5cblx0XHRcdFx0XHRcdGRheShpbnN0Lm9wdGlvbnMuY2FsZW5kYXIubWluRGF5KTsgfSxcblx0XHRcdFx0YWN0aW9uOiBmdW5jdGlvbihpbnN0KSB7XG5cdFx0XHRcdFx0cGx1Z2luLmNoYW5nZU1vbnRoKHRoaXMsIC1pbnN0Lm9wdGlvbnMubW9udGhzVG9TdGVwKTsgfVxuXHRcdFx0fSxcblx0XHRcdHByZXZKdW1wOiB7dGV4dDogJ3ByZXZKdW1wVGV4dCcsIHN0YXR1czogJ3ByZXZKdW1wU3RhdHVzJywgLy8gUHJldmlvdXMgeWVhclxuXHRcdFx0XHRrZXlzdHJva2U6IHtrZXlDb2RlOiAzMywgY3RybEtleTogdHJ1ZX0sIC8vIEN0cmwgKyBQYWdlIHVwXG5cdFx0XHRcdGVuYWJsZWQ6IGZ1bmN0aW9uKGluc3QpIHtcblx0XHRcdFx0XHR2YXIgbWluRGF0ZSA9IGluc3QuY3VyTWluRGF0ZSgpO1xuXHRcdFx0XHRcdHJldHVybiAoIW1pbkRhdGUgfHwgaW5zdC5kcmF3RGF0ZS5uZXdEYXRlKCkuXG5cdFx0XHRcdFx0XHRhZGQoMSAtIGluc3Qub3B0aW9ucy5tb250aHNUb0p1bXAgLSBpbnN0Lm9wdGlvbnMubW9udGhzT2Zmc2V0LCAnbScpLlxuXHRcdFx0XHRcdFx0ZGF5KGluc3Qub3B0aW9ucy5jYWxlbmRhci5taW5EYXkpLmFkZCgtMSwgJ2QnKS5jb21wYXJlVG8obWluRGF0ZSkgIT09IC0xKTsgfSxcblx0XHRcdFx0ZGF0ZTogZnVuY3Rpb24oaW5zdCkge1xuXHRcdFx0XHRcdHJldHVybiBpbnN0LmRyYXdEYXRlLm5ld0RhdGUoKS5cblx0XHRcdFx0XHRcdGFkZCgtaW5zdC5vcHRpb25zLm1vbnRoc1RvSnVtcCAtIGluc3Qub3B0aW9ucy5tb250aHNPZmZzZXQsICdtJykuXG5cdFx0XHRcdFx0XHRkYXkoaW5zdC5vcHRpb25zLmNhbGVuZGFyLm1pbkRheSk7IH0sXG5cdFx0XHRcdGFjdGlvbjogZnVuY3Rpb24oaW5zdCkge1xuXHRcdFx0XHRcdHBsdWdpbi5jaGFuZ2VNb250aCh0aGlzLCAtaW5zdC5vcHRpb25zLm1vbnRoc1RvSnVtcCk7IH1cblx0XHRcdH0sXG5cdFx0XHRuZXh0OiB7dGV4dDogJ25leHRUZXh0Jywgc3RhdHVzOiAnbmV4dFN0YXR1cycsIC8vIE5leHQgbW9udGhcblx0XHRcdFx0a2V5c3Ryb2tlOiB7a2V5Q29kZTogMzR9LCAvLyBQYWdlIGRvd25cblx0XHRcdFx0ZW5hYmxlZDogZnVuY3Rpb24oaW5zdCkge1xuXHRcdFx0XHRcdHZhciBtYXhEYXRlID0gaW5zdC5nZXQoJ21heERhdGUnKTtcblx0XHRcdFx0XHRyZXR1cm4gKCFtYXhEYXRlIHx8IGluc3QuZHJhd0RhdGUubmV3RGF0ZSgpLlxuXHRcdFx0XHRcdFx0YWRkKGluc3Qub3B0aW9ucy5tb250aHNUb1N0ZXAgLSBpbnN0Lm9wdGlvbnMubW9udGhzT2Zmc2V0LCAnbScpLlxuXHRcdFx0XHRcdFx0ZGF5KGluc3Qub3B0aW9ucy5jYWxlbmRhci5taW5EYXkpLmNvbXBhcmVUbyhtYXhEYXRlKSAhPT0gKzEpOyB9LFxuXHRcdFx0XHRkYXRlOiBmdW5jdGlvbihpbnN0KSB7XG5cdFx0XHRcdFx0cmV0dXJuIGluc3QuZHJhd0RhdGUubmV3RGF0ZSgpLlxuXHRcdFx0XHRcdFx0YWRkKGluc3Qub3B0aW9ucy5tb250aHNUb1N0ZXAgLSBpbnN0Lm9wdGlvbnMubW9udGhzT2Zmc2V0LCAnbScpLlxuXHRcdFx0XHRcdFx0ZGF5KGluc3Qub3B0aW9ucy5jYWxlbmRhci5taW5EYXkpOyB9LFxuXHRcdFx0XHRhY3Rpb246IGZ1bmN0aW9uKGluc3QpIHtcblx0XHRcdFx0XHRwbHVnaW4uY2hhbmdlTW9udGgodGhpcywgaW5zdC5vcHRpb25zLm1vbnRoc1RvU3RlcCk7IH1cblx0XHRcdH0sXG5cdFx0XHRuZXh0SnVtcDoge3RleHQ6ICduZXh0SnVtcFRleHQnLCBzdGF0dXM6ICduZXh0SnVtcFN0YXR1cycsIC8vIE5leHQgeWVhclxuXHRcdFx0XHRrZXlzdHJva2U6IHtrZXlDb2RlOiAzNCwgY3RybEtleTogdHJ1ZX0sIC8vIEN0cmwgKyBQYWdlIGRvd25cblx0XHRcdFx0ZW5hYmxlZDogZnVuY3Rpb24oaW5zdCkge1xuXHRcdFx0XHRcdHZhciBtYXhEYXRlID0gaW5zdC5nZXQoJ21heERhdGUnKTtcblx0XHRcdFx0XHRyZXR1cm4gKCFtYXhEYXRlIHx8IGluc3QuZHJhd0RhdGUubmV3RGF0ZSgpLlxuXHRcdFx0XHRcdFx0YWRkKGluc3Qub3B0aW9ucy5tb250aHNUb0p1bXAgLSBpbnN0Lm9wdGlvbnMubW9udGhzT2Zmc2V0LCAnbScpLlxuXHRcdFx0XHRcdFx0ZGF5KGluc3Qub3B0aW9ucy5jYWxlbmRhci5taW5EYXkpLmNvbXBhcmVUbyhtYXhEYXRlKSAhPT0gKzEpO1x0fSxcblx0XHRcdFx0ZGF0ZTogZnVuY3Rpb24oaW5zdCkge1xuXHRcdFx0XHRcdHJldHVybiBpbnN0LmRyYXdEYXRlLm5ld0RhdGUoKS5cblx0XHRcdFx0XHRcdGFkZChpbnN0Lm9wdGlvbnMubW9udGhzVG9KdW1wIC0gaW5zdC5vcHRpb25zLm1vbnRoc09mZnNldCwgJ20nKS5cblx0XHRcdFx0XHRcdGRheShpbnN0Lm9wdGlvbnMuY2FsZW5kYXIubWluRGF5KTsgfSxcblx0XHRcdFx0YWN0aW9uOiBmdW5jdGlvbihpbnN0KSB7XG5cdFx0XHRcdFx0cGx1Z2luLmNoYW5nZU1vbnRoKHRoaXMsIGluc3Qub3B0aW9ucy5tb250aHNUb0p1bXApOyB9XG5cdFx0XHR9LFxuXHRcdFx0Y3VycmVudDoge3RleHQ6ICdjdXJyZW50VGV4dCcsIHN0YXR1czogJ2N1cnJlbnRTdGF0dXMnLCAvLyBDdXJyZW50IG1vbnRoXG5cdFx0XHRcdGtleXN0cm9rZToge2tleUNvZGU6IDM2LCBjdHJsS2V5OiB0cnVlfSwgLy8gQ3RybCArIEhvbWVcblx0XHRcdFx0ZW5hYmxlZDogZnVuY3Rpb24oaW5zdCkge1xuXHRcdFx0XHRcdHZhciBtaW5EYXRlID0gaW5zdC5jdXJNaW5EYXRlKCk7XG5cdFx0XHRcdFx0dmFyIG1heERhdGUgPSBpbnN0LmdldCgnbWF4RGF0ZScpO1xuXHRcdFx0XHRcdHZhciBjdXJEYXRlID0gaW5zdC5zZWxlY3RlZERhdGVzWzBdIHx8IGluc3Qub3B0aW9ucy5jYWxlbmRhci50b2RheSgpO1xuXHRcdFx0XHRcdHJldHVybiAoIW1pbkRhdGUgfHwgY3VyRGF0ZS5jb21wYXJlVG8obWluRGF0ZSkgIT09IC0xKSAmJlxuXHRcdFx0XHRcdFx0KCFtYXhEYXRlIHx8IGN1ckRhdGUuY29tcGFyZVRvKG1heERhdGUpICE9PSArMSk7IH0sXG5cdFx0XHRcdGRhdGU6IGZ1bmN0aW9uKGluc3QpIHtcblx0XHRcdFx0XHRyZXR1cm4gaW5zdC5zZWxlY3RlZERhdGVzWzBdIHx8IGluc3Qub3B0aW9ucy5jYWxlbmRhci50b2RheSgpOyB9LFxuXHRcdFx0XHRhY3Rpb246IGZ1bmN0aW9uKGluc3QpIHtcblx0XHRcdFx0XHR2YXIgY3VyRGF0ZSA9IGluc3Quc2VsZWN0ZWREYXRlc1swXSB8fCBpbnN0Lm9wdGlvbnMuY2FsZW5kYXIudG9kYXkoKTtcblx0XHRcdFx0XHRwbHVnaW4uc2hvd01vbnRoKHRoaXMsIGN1ckRhdGUueWVhcigpLCBjdXJEYXRlLm1vbnRoKCkpOyB9XG5cdFx0XHR9LFxuXHRcdFx0dG9kYXk6IHt0ZXh0OiAndG9kYXlUZXh0Jywgc3RhdHVzOiAndG9kYXlTdGF0dXMnLCAvLyBUb2RheSdzIG1vbnRoXG5cdFx0XHRcdGtleXN0cm9rZToge2tleUNvZGU6IDM2LCBjdHJsS2V5OiB0cnVlfSwgLy8gQ3RybCArIEhvbWVcblx0XHRcdFx0ZW5hYmxlZDogZnVuY3Rpb24oaW5zdCkge1xuXHRcdFx0XHRcdHZhciBtaW5EYXRlID0gaW5zdC5jdXJNaW5EYXRlKCk7XG5cdFx0XHRcdFx0dmFyIG1heERhdGUgPSBpbnN0LmdldCgnbWF4RGF0ZScpO1xuXHRcdFx0XHRcdHJldHVybiAoIW1pbkRhdGUgfHwgaW5zdC5vcHRpb25zLmNhbGVuZGFyLnRvZGF5KCkuY29tcGFyZVRvKG1pbkRhdGUpICE9PSAtMSkgJiZcblx0XHRcdFx0XHRcdCghbWF4RGF0ZSB8fCBpbnN0Lm9wdGlvbnMuY2FsZW5kYXIudG9kYXkoKS5jb21wYXJlVG8obWF4RGF0ZSkgIT09ICsxKTsgfSxcblx0XHRcdFx0ZGF0ZTogZnVuY3Rpb24oaW5zdCkgeyByZXR1cm4gaW5zdC5vcHRpb25zLmNhbGVuZGFyLnRvZGF5KCk7IH0sXG5cdFx0XHRcdGFjdGlvbjogZnVuY3Rpb24oaW5zdCkgeyBwbHVnaW4uc2hvd01vbnRoKHRoaXMpOyB9XG5cdFx0XHR9LFxuXHRcdFx0Y2xlYXI6IHt0ZXh0OiAnY2xlYXJUZXh0Jywgc3RhdHVzOiAnY2xlYXJTdGF0dXMnLCAvLyBDbGVhciB0aGUgZGF0ZXBpY2tlclxuXHRcdFx0XHRrZXlzdHJva2U6IHtrZXlDb2RlOiAzNSwgY3RybEtleTogdHJ1ZX0sIC8vIEN0cmwgKyBFbmRcblx0XHRcdFx0ZW5hYmxlZDogZnVuY3Rpb24oaW5zdCkgeyByZXR1cm4gdHJ1ZTsgfSxcblx0XHRcdFx0ZGF0ZTogZnVuY3Rpb24oaW5zdCkgeyByZXR1cm4gbnVsbDsgfSxcblx0XHRcdFx0YWN0aW9uOiBmdW5jdGlvbihpbnN0KSB7IHBsdWdpbi5jbGVhcih0aGlzKTsgfVxuXHRcdFx0fSxcblx0XHRcdGNsb3NlOiB7dGV4dDogJ2Nsb3NlVGV4dCcsIHN0YXR1czogJ2Nsb3NlU3RhdHVzJywgLy8gQ2xvc2UgdGhlIGRhdGVwaWNrZXJcblx0XHRcdFx0a2V5c3Ryb2tlOiB7a2V5Q29kZTogMjd9LCAvLyBFc2NhcGVcblx0XHRcdFx0ZW5hYmxlZDogZnVuY3Rpb24oaW5zdCkgeyByZXR1cm4gdHJ1ZTsgfSxcblx0XHRcdFx0ZGF0ZTogZnVuY3Rpb24oaW5zdCkgeyByZXR1cm4gbnVsbDsgfSxcblx0XHRcdFx0YWN0aW9uOiBmdW5jdGlvbihpbnN0KSB7IHBsdWdpbi5oaWRlKHRoaXMpOyB9XG5cdFx0XHR9LFxuXHRcdFx0cHJldldlZWs6IHt0ZXh0OiAncHJldldlZWtUZXh0Jywgc3RhdHVzOiAncHJldldlZWtTdGF0dXMnLCAvLyBQcmV2aW91cyB3ZWVrXG5cdFx0XHRcdGtleXN0cm9rZToge2tleUNvZGU6IDM4LCBjdHJsS2V5OiB0cnVlfSwgLy8gQ3RybCArIFVwXG5cdFx0XHRcdGVuYWJsZWQ6IGZ1bmN0aW9uKGluc3QpIHtcblx0XHRcdFx0XHR2YXIgbWluRGF0ZSA9IGluc3QuY3VyTWluRGF0ZSgpO1xuXHRcdFx0XHRcdHJldHVybiAoIW1pbkRhdGUgfHwgaW5zdC5kcmF3RGF0ZS5uZXdEYXRlKCkuXG5cdFx0XHRcdFx0XHRhZGQoLWluc3Qub3B0aW9ucy5jYWxlbmRhci5kYXlzSW5XZWVrKCksICdkJykuY29tcGFyZVRvKG1pbkRhdGUpICE9PSAtMSk7IH0sXG5cdFx0XHRcdGRhdGU6IGZ1bmN0aW9uKGluc3QpIHsgcmV0dXJuIGluc3QuZHJhd0RhdGUubmV3RGF0ZSgpLlxuXHRcdFx0XHRcdGFkZCgtaW5zdC5vcHRpb25zLmNhbGVuZGFyLmRheXNJbldlZWsoKSwgJ2QnKTsgfSxcblx0XHRcdFx0YWN0aW9uOiBmdW5jdGlvbihpbnN0KSB7IHBsdWdpbi5jaGFuZ2VEYXkodGhpcywgLWluc3Qub3B0aW9ucy5jYWxlbmRhci5kYXlzSW5XZWVrKCkpOyB9XG5cdFx0XHR9LFxuXHRcdFx0cHJldkRheToge3RleHQ6ICdwcmV2RGF5VGV4dCcsIHN0YXR1czogJ3ByZXZEYXlTdGF0dXMnLCAvLyBQcmV2aW91cyBkYXlcblx0XHRcdFx0a2V5c3Ryb2tlOiB7a2V5Q29kZTogMzcsIGN0cmxLZXk6IHRydWV9LCAvLyBDdHJsICsgTGVmdFxuXHRcdFx0XHRlbmFibGVkOiBmdW5jdGlvbihpbnN0KSB7XG5cdFx0XHRcdFx0dmFyIG1pbkRhdGUgPSBpbnN0LmN1ck1pbkRhdGUoKTtcblx0XHRcdFx0XHRyZXR1cm4gKCFtaW5EYXRlIHx8IGluc3QuZHJhd0RhdGUubmV3RGF0ZSgpLmFkZCgtMSwgJ2QnKS5cblx0XHRcdFx0XHRcdGNvbXBhcmVUbyhtaW5EYXRlKSAhPT0gLTEpOyB9LFxuXHRcdFx0XHRkYXRlOiBmdW5jdGlvbihpbnN0KSB7IHJldHVybiBpbnN0LmRyYXdEYXRlLm5ld0RhdGUoKS5hZGQoLTEsICdkJyk7IH0sXG5cdFx0XHRcdGFjdGlvbjogZnVuY3Rpb24oaW5zdCkgeyBwbHVnaW4uY2hhbmdlRGF5KHRoaXMsIC0xKTsgfVxuXHRcdFx0fSxcblx0XHRcdG5leHREYXk6IHt0ZXh0OiAnbmV4dERheVRleHQnLCBzdGF0dXM6ICduZXh0RGF5U3RhdHVzJywgLy8gTmV4dCBkYXlcblx0XHRcdFx0a2V5c3Ryb2tlOiB7a2V5Q29kZTogMzksIGN0cmxLZXk6IHRydWV9LCAvLyBDdHJsICsgUmlnaHRcblx0XHRcdFx0ZW5hYmxlZDogZnVuY3Rpb24oaW5zdCkge1xuXHRcdFx0XHRcdHZhciBtYXhEYXRlID0gaW5zdC5nZXQoJ21heERhdGUnKTtcblx0XHRcdFx0XHRyZXR1cm4gKCFtYXhEYXRlIHx8IGluc3QuZHJhd0RhdGUubmV3RGF0ZSgpLmFkZCgxLCAnZCcpLlxuXHRcdFx0XHRcdFx0Y29tcGFyZVRvKG1heERhdGUpICE9PSArMSk7IH0sXG5cdFx0XHRcdGRhdGU6IGZ1bmN0aW9uKGluc3QpIHsgcmV0dXJuIGluc3QuZHJhd0RhdGUubmV3RGF0ZSgpLmFkZCgxLCAnZCcpOyB9LFxuXHRcdFx0XHRhY3Rpb246IGZ1bmN0aW9uKGluc3QpIHsgcGx1Z2luLmNoYW5nZURheSh0aGlzLCAxKTsgfVxuXHRcdFx0fSxcblx0XHRcdG5leHRXZWVrOiB7dGV4dDogJ25leHRXZWVrVGV4dCcsIHN0YXR1czogJ25leHRXZWVrU3RhdHVzJywgLy8gTmV4dCB3ZWVrXG5cdFx0XHRcdGtleXN0cm9rZToge2tleUNvZGU6IDQwLCBjdHJsS2V5OiB0cnVlfSwgLy8gQ3RybCArIERvd25cblx0XHRcdFx0ZW5hYmxlZDogZnVuY3Rpb24oaW5zdCkge1xuXHRcdFx0XHRcdHZhciBtYXhEYXRlID0gaW5zdC5nZXQoJ21heERhdGUnKTtcblx0XHRcdFx0XHRyZXR1cm4gKCFtYXhEYXRlIHx8IGluc3QuZHJhd0RhdGUubmV3RGF0ZSgpLlxuXHRcdFx0XHRcdFx0YWRkKGluc3Qub3B0aW9ucy5jYWxlbmRhci5kYXlzSW5XZWVrKCksICdkJykuY29tcGFyZVRvKG1heERhdGUpICE9PSArMSk7IH0sXG5cdFx0XHRcdGRhdGU6IGZ1bmN0aW9uKGluc3QpIHsgcmV0dXJuIGluc3QuZHJhd0RhdGUubmV3RGF0ZSgpLlxuXHRcdFx0XHRcdGFkZChpbnN0Lm9wdGlvbnMuY2FsZW5kYXIuZGF5c0luV2VlaygpLCAnZCcpOyB9LFxuXHRcdFx0XHRhY3Rpb246IGZ1bmN0aW9uKGluc3QpIHsgcGx1Z2luLmNoYW5nZURheSh0aGlzLCBpbnN0Lm9wdGlvbnMuY2FsZW5kYXIuZGF5c0luV2VlaygpKTsgfVxuXHRcdFx0fVxuXHRcdH0sXG5cblx0XHQvKiogRGV0ZXJtaW5lIHdoZXRoZXIgYSBjb21tYW5kIGlzIGVuYWJsZWQuXG5cdFx0XHRAY2FsbGJhY2sgQ2FsZW5kYXJzUGlja2VyQ29tbWFuZEVuYWJsZWRcblx0XHRcdEBwYXJhbSBpbnN0IHtvYmplY3R9IFRoZSBjdXJyZW50IGluc3RhbmNlIHNldHRpbmdzLlxuXHRcdFx0QHJldHVybiB7Ym9vbGVhbn0gPGNvZGU+dHJ1ZTwvY29kZT4gaWYgdGhpcyBjb21tYW5kIGlzIGVuYWJsZWQsIDxjb2RlPmZhbHNlPC9jb2RlPiBpZiBub3QuXG5cdFx0XHRAZXhhbXBsZSBlbmFibGVkOiBmdW5jdGlvbihpbnN0KSB7XG5cdHJldHVybiAhIWluc3QuY3VyTWluRGF0ZSgpO1xuIH0gKi9cblxuXHRcdC8qKiBDYWxjdWxhdGUgdGhlIHJlcHJlc2VudGF0aXZlIGRhdGUgZm9yIGEgY29tbWFuZC5cblx0XHRcdEBjYWxsYmFjayBDYWxlbmRhcnNQaWNrZXJDb21tYW5kRGF0ZVxuXHRcdFx0QHBhcmFtIGluc3Qge29iamVjdH0gVGhlIGN1cnJlbnQgaW5zdGFuY2Ugc2V0dGluZ3MuXG5cdFx0XHRAcmV0dXJuIHtDRGF0ZX0gQSBkYXRlIGFwcHJvcHJpYXRlIGZvciB0aGlzIGNvbW1hbmQuXG5cdFx0XHRAZXhhbXBsZSBkYXRlOiBmdW5jdGlvbihpbnN0KSB7XG5cdHJldHVybiBpbnN0LmN1ck1pbkRhdGUoKTtcbiB9ICovXG5cblx0XHQvKiogUGVyZm9ybSB0aGUgYWN0aW9uIGZvciBhIGNvbW1hbmQuXG5cdFx0XHRAY2FsbGJhY2sgQ2FsZW5kYXJzUGlja2VyQ29tbWFuZEFjdGlvblxuXHRcdFx0QHBhcmFtIGluc3Qge29iamVjdH0gVGhlIGN1cnJlbnQgaW5zdGFuY2Ugc2V0dGluZ3MuXG5cdFx0XHRAZXhhbXBsZSBkYXRlOiBmdW5jdGlvbihpbnN0KSB7XG5cdCQuZGF0ZXBpY2suc2V0RGF0ZShpbnN0LmVsZW0sIGluc3QuY3VyTWluRGF0ZSgpKTtcbiB9ICovXG5cblx0XHQvKiogQ2FsY3VsYXRlIHRoZSB3ZWVrIG9mIHRoZSB5ZWFyIGZvciBhIGRhdGUuXG5cdFx0XHRAY2FsbGJhY2sgQ2FsZW5kYXJzUGlja2VyQ2FsY3VsYXRlV2Vla1xuXHRcdFx0QHBhcmFtIGRhdGUge0NEYXRlfSBUaGUgZGF0ZSB0byBldmFsdWF0ZS5cblx0XHRcdEByZXR1cm4ge251bWJlcn0gVGhlIHdlZWsgb2YgdGhlIHllYXIuXG5cdFx0XHRAZXhhbXBsZSBjYWxjdWxhdGVXZWVrOiBmdW5jdGlvbihkYXRlKSB7XG5cdHZhciBzdGFydFllYXIgPSAkLmNhbGVuZGFycy5uZXdEYXRlKGRhdGUueWVhcigpLCAxLCAxKTtcblx0cmV0dXJuIE1hdGguZmxvb3IoKGRhdGUuZGF5T2ZZZWFyKCkgLSBzdGFydFllYXIuZGF5T2ZZZWFyKCkpIC8gNykgKyAxO1xuIH0gKi9cblxuXHRcdC8qKiBQcm92aWRlIGluZm9ybWF0aW9uIGFib3V0IGFuIGluZGl2aWR1YWwgZGF0ZSBzaG93biBpbiB0aGUgY2FsZW5kYXIuXG5cdFx0XHRAY2FsbGJhY2sgQ2FsZW5kYXJzUGlja2VyT25EYXRlXG5cdFx0XHRAcGFyYW0gZGF0ZSB7Q0RhdGV9IFRoZSBkYXRlIHRvIGV2YWx1YXRlLlxuXHRcdFx0QHJldHVybiB7b2JqZWN0fSBJbmZvcm1hdGlvbiBhYm91dCB0aGF0IGRhdGUsIHdpdGggdGhlIHByb3BlcnRpZXMgYWJvdmUuXG5cdFx0XHRAcHJvcGVydHkgc2VsZWN0YWJsZSB7Ym9vbGVhbn0gPGNvZGU+dHJ1ZTwvY29kZT4gaWYgdGhpcyBkYXRlIGNhbiBiZSBzZWxlY3RlZC5cblx0XHRcdEBwcm9wZXJ0eSBkYXRlQ2xhc3Mge3N0cmluZ30gQ2xhc3MoZXMpIHRvIGJlIGFwcGxpZWQgdG8gdGhlIGRhdGUuXG5cdFx0XHRAcHJvcGVydHkgY29udGVudCB7c3RyaW5nfSBUaGUgZGF0ZSBjZWxsIGNvbnRlbnQuXG5cdFx0XHRAcHJvcGVydHkgdG9vbHRpcCB7c3RyaW5nfSBBIHBvcHVwIHRvb2x0aXAgZm9yIHRoZSBkYXRlLlxuXHRcdFx0QGV4YW1wbGUgb25EYXRlOiBmdW5jdGlvbihkYXRlKSB7XG5cdHJldHVybiB7c2VsZWN0YWJsZTogZGF0ZS5kYXkoKSA+IDAgJiYgZGF0ZS5kYXkoKSAmbHQ7IDUsXG5cdFx0ZGF0ZUNsYXNzOiBkYXRlLmRheSgpID09PSA0ID8gJ2xhc3QtZGF5JyA6ICcnfTtcbiB9ICovXG5cblx0XHQvKiogVXBkYXRlIHRoZSBkYXRlcGlja2VyIGRpc3BsYXkuXG5cdFx0XHRAY2FsbGJhY2sgQ2FsZW5kYXJzUGlja2VyT25TaG93XG5cdFx0XHRAcGFyYW0gcGlja2VyIHtqUXVlcnl9IFRoZSBkYXRlcGlja2VyIDxjb2RlPmRpdjwvY29kZT4gdG8gYmUgc2hvd24uXG5cdFx0XHRAcGFyYW0gaW5zdCB7b2JqZWN0fSBUaGUgY3VycmVudCBpbnN0YW5jZSBzZXR0aW5ncy5cblx0XHRcdEBleGFtcGxlIG9uU2hvdzogZnVuY3Rpb24ocGlja2VyLCBpbnN0KSB7XG5cdHBpY2tlci5hcHBlbmQoJyZsdDtidXR0b24gdHlwZT1cImJ1dHRvblwiPkhpJmx0Oy9idXR0b24+JykuXG5cdFx0ZmluZCgnYnV0dG9uOmxhc3QnKS5jbGljayhmdW5jdGlvbigpIHtcblx0XHRcdGFsZXJ0KCdIaSEnKTtcblx0XHR9KTtcbiB9ICovXG5cblx0XHQvKiogUmVhY3QgdG8gbmF2aWdhdGluZyB0aHJvdWdoIHRoZSBtb250aHMveWVhcnMuXG5cdFx0XHRAY2FsbGJhY2sgQ2FsZW5kYXJzUGlja2VyT25DaGFuZ2VNb250aFllYXJcblx0XHRcdEBwYXJhbSB5ZWFyIHtudW1iZXJ9IFRoZSBuZXcgeWVhci5cblx0XHRcdEBwYXJhbSBtb250aCB7bnVtYmVyfSBUaGUgbmV3IG1vbnRoICgxIHRvIDEyKS5cblx0XHRcdEBleGFtcGxlIG9uQ2hhbmdlTW9udGhZZWFyOiBmdW5jdGlvbih5ZWFyLCBtb250aCkge1xuXHRhbGVydCgnTm93IGluICcgKyBtb250aCArICcvJyArIHllYXIpO1xuIH0gKi9cblx0XHRcdFxuXHRcdC8qKiBEYXRlcGlja2VyIG9uIHNlbGVjdCBjYWxsYmFjay5cblx0XHRcdFRyaWdnZXJlZCB3aGVuIGEgZGF0ZSBpcyBzZWxlY3RlZC5cblx0XHRcdEBjYWxsYmFjayBDYWxlbmRhcnNQaWNrZXJPblNlbGVjdFxuXHRcdFx0QHBhcmFtIGRhdGVzIHtDRGF0ZVtdfSBUaGUgc2VsZWN0ZWQgZGF0ZShzKS5cblx0XHRcdEBleGFtcGxlIG9uU2VsZWN0OiBmdW5jdGlvbihkYXRlcykge1xuIFx0YWxlcnQoJ1NlbGVjdGVkICcgKyBkYXRlcyk7XG4gfSAqL1xuXHRcdFx0XG5cdFx0LyoqIERhdGVwaWNrZXIgb24gY2xvc2UgY2FsbGJhY2suXG5cdFx0XHRUcmlnZ2VyZWQgd2hlbiBhIHBvcHVwIGNhbGVuZGFyIGlzIGNsb3NlZC5cblx0XHRcdEBjYWxsYmFjayBDYWxlbmRhcnNQaWNrZXJPbkNsb3NlXG5cdFx0XHRAcGFyYW0gZGF0ZXMge0NEYXRlW119IFRoZSBzZWxlY3RlZCBkYXRlKHMpLlxuXHRcdFx0QGV4YW1wbGUgb25DbG9zZTogZnVuY3Rpb24oZGF0ZXMpIHtcbiBcdGFsZXJ0KCdTZWxlY3RlZCAnICsgZGF0ZXMpO1xuIH0gKi9cblx0XHRcblx0XHQvKiogRGVmYXVsdCBzZXR0aW5ncyBmb3IgdGhlIHBsdWdpbi5cblx0XHRcdEBtZW1iZXJvZiBDYWxlbmRhcnNQaWNrZXJcblx0XHRcdEBwcm9wZXJ0eSBbY2FsZW5kYXI9JC5jYWxlbmRhcnMuaW5zdGFuY2UoKV0ge0NhbGVuZGFyfSBUaGUgY2FsZW5kYXIgZm9yIHRoaXMgZGF0ZXBpY2tlci5cblx0XHRcdEBwcm9wZXJ0eSBbcGlja2VyQ2xhc3M9JyddIHtzdHJpbmd9IENTUyBjbGFzcyB0byBhZGQgdG8gdGhpcyBpbnN0YW5jZSBvZiB0aGUgZGF0ZXBpY2tlci5cblx0XHRcdEBwcm9wZXJ0eSBbc2hvd09uRm9jdXM9dHJ1ZV0ge2Jvb2xlYW59IDxjb2RlPnRydWU8L2NvZGU+IGZvciBwb3B1cCBvbiBmb2N1cywgPGNvZGU+ZmFsc2U8L2NvZGU+IGZvciBub3QuXG5cdFx0XHRAcHJvcGVydHkgW3Nob3dUcmlnZ2VyPW51bGxdIHtzdHJpbmd8RWxlbWVudHxqUXVlcnl9IEVsZW1lbnQgdG8gYmUgY2xvbmVkIGZvciBhIHRyaWdnZXIsIDxjb2RlPm51bGw8L2NvZGU+IGZvciBub25lLlxuXHRcdFx0QHByb3BlcnR5IFtzaG93QW5pbT0nc2hvdyddIHtzdHJpbmd9IE5hbWUgb2YgalF1ZXJ5IGFuaW1hdGlvbiBmb3IgcG9wdXAsICcnIGZvciBubyBhbmltYXRpb24uXG5cdFx0XHRAcHJvcGVydHkgW3Nob3dPcHRpb25zPW51bGxdIHtvYmplY3R9IE9wdGlvbnMgZm9yIGVuaGFuY2VkIGFuaW1hdGlvbnMuXG5cdFx0XHRAcHJvcGVydHkgW3Nob3dTcGVlZD0nbm9ybWFsJ10ge3N0cmluZ30gRHVyYXRpb24gb2YgZGlzcGxheS9jbG9zdXJlLlxuXHRcdFx0QHByb3BlcnR5IFtwb3B1cENvbnRhaW5lcj1udWxsXSB7c3RyaW5nfEVsZW1lbnR8alF1ZXJ5fSBUaGUgZWxlbWVudCB0byB3aGljaCBhIHBvcHVwIGNhbGVuZGFyIGlzIGFkZGVkLCA8Y29kZT5udWxsPC9jb2RlPiBmb3IgYm9keS5cblx0XHRcdEBwcm9wZXJ0eSBbYWxpZ25tZW50PSdib3R0b20nXSB7c3RyaW5nfSBBbGlnbm1lbnQgb2YgcG9wdXAgLSB3aXRoIG5vbWluYXRlZCBjb3JuZXIgb2YgaW5wdXQ6XG5cdFx0XHRcdFx0XHQndG9wJyBvciAnYm90dG9tJyBhbGlnbnMgZGVwZW5kaW5nIG9uIGxhbmd1YWdlIGRpcmVjdGlvbixcblx0XHRcdFx0XHRcdCd0b3BMZWZ0JywgJ3RvcFJpZ2h0JywgJ2JvdHRvbUxlZnQnLCAnYm90dG9tUmlnaHQnLlxuXHRcdFx0QHByb3BlcnR5IFtmaXhlZFdlZWtzPWZhbHNlXSB7Ym9vbGVhbn0gPGNvZGU+dHJ1ZTwvY29kZT4gdG8gYWx3YXlzIHNob3cgNiB3ZWVrcywgPGNvZGU+ZmFsc2U8L2NvZGU+IHRvIG9ubHkgc2hvdyBhcyBtYW55IGFzIGFyZSBuZWVkZWQuXG5cdFx0XHRAcHJvcGVydHkgW2ZpcnN0RGF5PW51bGxdIHtudW1iZXJ9IEZpcnN0IGRheSBvZiB0aGUgd2VlaywgMCA9IFN1bmRheSwgMSA9IE1vbmRheSwgZXRjLiwgPGNvZGU+bnVsbDwvY29kZT4gZm9yIDxjb2RlPmNhbGVuZGFyPC9jb2RlPiBkZWZhdWx0LlxuXHRcdFx0QHByb3BlcnR5IFtjYWxjdWxhdGVXZWVrPW51bGxdIHtDYWxlbmRhcnNQaWNrZXJDYWxjdWxhdGVXZWVrfSBDYWxjdWxhdGUgd2VlayBvZiB0aGUgeWVhciBmcm9tIGEgZGF0ZSwgPGNvZGU+bnVsbDwvY29kZT4gZm9yIDxjb2RlPmNhbGVuZGFyPC9jb2RlPiBkZWZhdWx0LlxuXHRcdFx0QHByb3BlcnR5IFttb250aHNUb1Nob3c9MV0ge251bWJlcnxudW1iZXJbXX0gSG93IG1hbnkgbW9udGhzIHRvIHNob3csIGNvbHMgb3IgW3Jvd3MsIGNvbHNdLlxuXHRcdFx0QHByb3BlcnR5IFttb250aHNPZmZzZXQ9MF0ge251bWJlcn0gSG93IG1hbnkgbW9udGhzIHRvIG9mZnNldCB0aGUgcHJpbWFyeSBtb250aCBieTtcblx0XHRcdFx0XHRcdG1heSBiZSBhIGZ1bmN0aW9uIHRoYXQgdGFrZXMgdGhlIGRhdGUgYW5kIHJldHVybnMgdGhlIG9mZnNldC5cblx0XHRcdEBwcm9wZXJ0eSBbbW9udGhzVG9TdGVwPTFdIHtudW1iZXJ9IEhvdyBtYW55IG1vbnRocyB0byBtb3ZlIHdoZW4gcHJldi9uZXh0IGNsaWNrZWQuXG5cdFx0XHRAcHJvcGVydHkgW21vbnRoc1RvSnVtcD0xMl0ge251bWJlcn0gSG93IG1hbnkgbW9udGhzIHRvIG1vdmUgd2hlbiBsYXJnZSBwcmV2L25leHQgY2xpY2tlZC5cblx0XHRcdEBwcm9wZXJ0eSBbdXNlTW91c2VXaGVlbD10cnVlXSB7Ym9vbGVhbn0gPGNvZGU+dHJ1ZTwvY29kZT4gdG8gdXNlIG1vdXNld2hlZWwgaWYgYXZhaWxhYmxlLCA8Y29kZT5mYWxzZTwvY29kZT4gdG8gbmV2ZXIgdXNlIGl0LlxuXHRcdFx0QHByb3BlcnR5IFtjaGFuZ2VNb250aD10cnVlXSB7Ym9vbGVhbn0gPGNvZGU+dHJ1ZTwvY29kZT4gdG8gY2hhbmdlIG1vbnRoL3llYXIgdmlhIGRyb3AtZG93biwgPGNvZGU+ZmFsc2U8L2NvZGU+IGZvciBuYXZpZ2F0aW9uIG9ubHkuXG5cdFx0XHRAcHJvcGVydHkgW3llYXJSYW5nZT0nYy0xMDpjKzEwJ10ge3N0cmluZ30gUmFuZ2Ugb2YgeWVhcnMgdG8gc2hvdyBpbiBkcm9wLWRvd246ICdhbnknIGZvciBkaXJlY3QgdGV4dCBlbnRyeVxuXHRcdFx0XHRcdFx0b3IgJ3N0YXJ0OmVuZCcsIHdoZXJlIHN0YXJ0L2VuZCBhcmUgJystbm4nIGZvciByZWxhdGl2ZSB0byB0b2RheVxuXHRcdFx0XHRcdFx0b3IgJ2MrLW5uJyBmb3IgcmVsYXRpdmUgdG8gdGhlIGN1cnJlbnRseSBzZWxlY3RlZCBkYXRlXG5cdFx0XHRcdFx0XHRvciAnbm5ubicgZm9yIGFuIGFic29sdXRlIHllYXIuXG5cdFx0XHRAcHJvcGVydHkgW3Nob3dPdGhlck1vbnRocz1mYWxzZV0ge2Jvb2xlYW59IDxjb2RlPnRydWU8L2NvZGU+IHRvIHNob3cgZGF0ZXMgZnJvbSBvdGhlciBtb250aHMsIDxjb2RlPmZhbHNlPC9jb2RlPiB0byBub3Qgc2hvdyB0aGVtLlxuXHRcdFx0QHByb3BlcnR5IFtzZWxlY3RPdGhlck1vbnRocz1mYWxzZV0ge2Jvb2xlYW59IDxjb2RlPnRydWU8L2NvZGU+IHRvIGFsbG93IHNlbGVjdGlvbiBvZiBkYXRlcyBmcm9tIG90aGVyIG1vbnRocyB0b28uXG5cdFx0XHRAcHJvcGVydHkgW2RlZmF1bHREYXRlPW51bGxdIHtzdHJpbmd8bnVtYmVyfENEYXRlfSBEYXRlIHRvIHNob3cgaWYgbm8gb3RoZXIgc2VsZWN0ZWQuXG5cdFx0XHRAcHJvcGVydHkgW3NlbGVjdERlZmF1bHREYXRlPWZhbHNlXSB7Ym9vbGVhbn0gPGNvZGU+dHJ1ZTwvY29kZT4gdG8gcHJlLXNlbGVjdCB0aGUgZGVmYXVsdCBkYXRlIGlmIG5vIG90aGVyIGlzIGNob3Nlbi5cblx0XHRcdEBwcm9wZXJ0eSBbbWluRGF0ZT1udWxsXSB7c3RyaW5nfG51bWJlcnxDRGF0ZX0gVGhlIG1pbmltdW0gc2VsZWN0YWJsZSBkYXRlLlxuXHRcdFx0QHByb3BlcnR5IFttYXhEYXRlPW51bGxdIHtzdHJpbmd8bnVtYmVyfENEYXRlfSBUaGUgbWF4aW11bSBzZWxlY3RhYmxlIGRhdGUuXG5cdFx0XHRAcHJvcGVydHkgW2RhdGVGb3JtYXQ9J21tL2RkL3l5eXknXSB7c3RyaW5nfSBGb3JtYXQgZm9yIGRhdGVzLlxuXHRcdFx0QHByb3BlcnR5IFthdXRvU2l6ZT1mYWxzZV0ge2Jvb2xlYW59IDxjb2RlPnRydWU8L2NvZGU+IHRvIHNpemUgdGhlIGlucHV0IGZpZWxkIGFjY29yZGluZyB0byB0aGUgZGF0ZSBmb3JtYXQuXG5cdFx0XHRAcHJvcGVydHkgW3JhbmdlU2VsZWN0PWZhbHNlXSB7Ym9vbGVhbn0gQWxsb3dzIGZvciBzZWxlY3RpbmcgYSBkYXRlIHJhbmdlIG9uIG9uZSBkYXRlIHBpY2tlci5cblx0XHRcdEBwcm9wZXJ0eSBbcmFuZ2VTZXBhcmF0b3I9JyAtICddIHtzdHJpbmd9IFRleHQgYmV0d2VlbiB0d28gZGF0ZXMgaW4gYSByYW5nZS5cblx0XHRcdEBwcm9wZXJ0eSBbbXVsdGlTZWxlY3Q9MF0ge251bWJlcn0gTWF4aW11bSBudW1iZXIgb2Ygc2VsZWN0YWJsZSBkYXRlcywgemVybyBmb3Igc2luZ2xlIHNlbGVjdC5cblx0XHRcdEBwcm9wZXJ0eSBbbXVsdGlTZXBhcmF0b3I9JywnXSB7c3RyaW5nfSBUZXh0IGJldHdlZW4gbXVsdGlwbGUgZGF0ZXMuXG5cdFx0XHRAcHJvcGVydHkgW29uRGF0ZT1udWxsXSB7Q2FsZW5kYXJzUGlja2VyT25EYXRlfSBDYWxsYmFjayBhcyBhIGRhdGUgaXMgYWRkZWQgdG8gdGhlIGRhdGVwaWNrZXIuXG5cdFx0XHRAcHJvcGVydHkgW29uU2hvdz1udWxsXSB7Q2FsZW5kYXJzUGlja2VyT25TaG93fSBDYWxsYmFjayBqdXN0IGJlZm9yZSBhIGRhdGVwaWNrZXIgaXMgc2hvd24uXG5cdFx0XHRAcHJvcGVydHkgW29uQ2hhbmdlTW9udGhZZWFyPW51bGxdIHtDYWxlbmRhcnNQaWNrZXJPbkNoYW5nZU1vbnRoWWVhcn0gQ2FsbGJhY2sgd2hlbiBhIG5ldyBtb250aC95ZWFyIGlzIHNlbGVjdGVkLlxuXHRcdFx0QHByb3BlcnR5IFtvblNlbGVjdD1udWxsXSB7Q2FsZW5kYXJzUGlja2VyT25TZWxlY3R9IENhbGxiYWNrIHdoZW4gYSBkYXRlIGlzIHNlbGVjdGVkLlxuXHRcdFx0QHByb3BlcnR5IFtvbkNsb3NlPW51bGxdIHtDYWxlbmRhcnNQaWNrZXJPbkNsb3NlfSBDYWxsYmFjayB3aGVuIGEgZGF0ZXBpY2tlciBpcyBjbG9zZWQuXG5cdFx0XHRAcHJvcGVydHkgW2FsdEZpZWxkPW51bGxdIHtzdHJpbmd8RWxlbWVudHxqUXVlcnl9IEFsdGVybmF0ZSBmaWVsZCB0byB1cGRhdGUgaW4gc3luY2ggd2l0aCB0aGUgZGF0ZXBpY2tlci5cblx0XHRcdEBwcm9wZXJ0eSBbYWx0Rm9ybWF0PW51bGxdIHtzdHJpbmd9IERhdGUgZm9ybWF0IGZvciBhbHRlcm5hdGUgZmllbGQsIGRlZmF1bHRzIHRvIDxjb2RlPmRhdGVGb3JtYXQ8L2NvZGU+LlxuXHRcdFx0QHByb3BlcnR5IFtjb25zdHJhaW5JbnB1dD10cnVlXSB7Ym9vbGVhbn0gPGNvZGU+dHJ1ZTwvY29kZT4gdG8gY29uc3RyYWluIHR5cGVkIGlucHV0IHRvIDxjb2RlPmRhdGVGb3JtYXQ8L2NvZGU+IGFsbG93ZWQgY2hhcmFjdGVycy5cblx0XHRcdEBwcm9wZXJ0eSBbY29tbWFuZHNBc0RhdGVGb3JtYXQ9ZmFsc2VdIHtib29sZWFufSA8Y29kZT50cnVlPC9jb2RlPiB0byBhcHBseVxuXHRcdFx0XHRcdFx0PGNvZGU+PGEgaHJlZj1cIiNmb3JtYXREYXRlXCI+Zm9ybWF0RGF0ZTwvYT48L2NvZGU+IHRvIHRoZSBjb21tYW5kIHRleHRzLlxuXHRcdFx0QHByb3BlcnR5IFtjb21tYW5kcz10aGlzLmNvbW1hbmRzXSB7b2JqZWN0fSBDb21tYW5kIGFjdGlvbnMgdGhhdCBtYXkgYmUgYWRkZWQgdG8gYSBsYXlvdXQgYnkgbmFtZS4gKi9cblx0XHRkZWZhdWx0T3B0aW9uczoge1xuXHRcdFx0Y2FsZW5kYXI6ICQuY2FsZW5kYXJzLmluc3RhbmNlKCksXG5cdFx0XHRwaWNrZXJDbGFzczogJycsXG5cdFx0XHRzaG93T25Gb2N1czogdHJ1ZSxcblx0XHRcdHNob3dUcmlnZ2VyOiBudWxsLFxuXHRcdFx0c2hvd0FuaW06ICdzaG93Jyxcblx0XHRcdHNob3dPcHRpb25zOiB7fSxcblx0XHRcdHNob3dTcGVlZDogJ25vcm1hbCcsXG5cdFx0XHRwb3B1cENvbnRhaW5lcjogbnVsbCxcblx0XHRcdGFsaWdubWVudDogJ2JvdHRvbScsXG5cdFx0XHRmaXhlZFdlZWtzOiBmYWxzZSxcblx0XHRcdGZpcnN0RGF5OiBudWxsLFxuXHRcdFx0Y2FsY3VsYXRlV2VlazogbnVsbCxcblx0XHRcdG1vbnRoc1RvU2hvdzogMSxcblx0XHRcdG1vbnRoc09mZnNldDogMCxcblx0XHRcdG1vbnRoc1RvU3RlcDogMSxcblx0XHRcdG1vbnRoc1RvSnVtcDogMTIsXG5cdFx0XHR1c2VNb3VzZVdoZWVsOiB0cnVlLFxuXHRcdFx0Y2hhbmdlTW9udGg6IHRydWUsXG5cdFx0XHR5ZWFyUmFuZ2U6ICdjLTEwOmMrMTAnLFxuXHRcdFx0c2hvd090aGVyTW9udGhzOiBmYWxzZSxcblx0XHRcdHNlbGVjdE90aGVyTW9udGhzOiBmYWxzZSxcblx0XHRcdGRlZmF1bHREYXRlOiBudWxsLFxuXHRcdFx0c2VsZWN0RGVmYXVsdERhdGU6IGZhbHNlLFxuXHRcdFx0bWluRGF0ZTogbnVsbCxcblx0XHRcdG1heERhdGU6IG51bGwsXG5cdFx0XHRkYXRlRm9ybWF0OiBudWxsLFxuXHRcdFx0YXV0b1NpemU6IGZhbHNlLFxuXHRcdFx0cmFuZ2VTZWxlY3Q6IGZhbHNlLFxuXHRcdFx0cmFuZ2VTZXBhcmF0b3I6ICcgLSAnLFxuXHRcdFx0bXVsdGlTZWxlY3Q6IDAsXG5cdFx0XHRtdWx0aVNlcGFyYXRvcjogJywnLFxuXHRcdFx0b25EYXRlOiBudWxsLFxuXHRcdFx0b25TaG93OiBudWxsLFxuXHRcdFx0b25DaGFuZ2VNb250aFllYXI6IG51bGwsXG5cdFx0XHRvblNlbGVjdDogbnVsbCxcblx0XHRcdG9uQ2xvc2U6IG51bGwsXG5cdFx0XHRhbHRGaWVsZDogbnVsbCxcblx0XHRcdGFsdEZvcm1hdDogbnVsbCxcblx0XHRcdGNvbnN0cmFpbklucHV0OiB0cnVlLFxuXHRcdFx0Y29tbWFuZHNBc0RhdGVGb3JtYXQ6IGZhbHNlLFxuXHRcdFx0Y29tbWFuZHM6IHt9IC8vIHRoaXMuY29tbWFuZHNcblx0XHR9LFxuXG5cdFx0LyoqIExvY2FsaXNhdGlvbnMgZm9yIHRoZSBwbHVnaW4uXG5cdFx0XHRFbnRyaWVzIGFyZSBvYmplY3RzIGluZGV4ZWQgYnkgdGhlIGxhbmd1YWdlIGNvZGUgKCcnIGJlaW5nIHRoZSBkZWZhdWx0IFVTL0VuZ2xpc2gpLlxuXHRcdFx0RWFjaCBvYmplY3QgaGFzIHRoZSBmb2xsb3dpbmcgYXR0cmlidXRlcy5cblx0XHRcdEBtZW1iZXJvZiBDYWxlbmRhcnNQaWNrZXJcblx0XHRcdEBwcm9wZXJ0eSBbcmVuZGVyZXI9dGhpcy5kZWZhdWx0UmVuZGVyZXJdIHtzdHJpbmd9IFRoZSByZW5kZXJpbmcgdGVtcGxhdGVzLlxuXHRcdFx0QHByb3BlcnR5IFtwcmV2VGV4dD0nJmx0O1ByZXYnXSB7c3RyaW5nfSBUZXh0IGZvciB0aGUgcHJldmlvdXMgbW9udGggY29tbWFuZC5cblx0XHRcdEBwcm9wZXJ0eSBbcHJldlN0YXR1cz0nU2hvdyB0aGUgcHJldmlvdXMgbW9udGgnXSB7c3RyaW5nfSBTdGF0dXMgdGV4dCBmb3IgdGhlIHByZXZpb3VzIG1vbnRoIGNvbW1hbmQuXG5cdFx0XHRAcHJvcGVydHkgW3ByZXZKdW1wVGV4dD0nJmx0OyZsdDsnXSB7c3RyaW5nfSBUZXh0IGZvciB0aGUgcHJldmlvdXMgeWVhciBjb21tYW5kLlxuXHRcdFx0QHByb3BlcnR5IFtwcmV2SnVtcFN0YXR1cz0nU2hvdyB0aGUgcHJldmlvdXMgeWVhciddIHtzdHJpbmd9IFN0YXR1cyB0ZXh0IGZvciB0aGUgcHJldmlvdXMgeWVhciBjb21tYW5kLlxuXHRcdFx0QHByb3BlcnR5IFtuZXh0VGV4dD0nTmV4dCZndDsnXSB7c3RyaW5nfSBUZXh0IGZvciB0aGUgbmV4dCBtb250aCBjb21tYW5kLlxuXHRcdFx0QHByb3BlcnR5IFtuZXh0U3RhdHVzPSdTaG93IHRoZSBuZXh0IG1vbnRoJ10ge3N0cmluZ30gU3RhdHVzIHRleHQgZm9yIHRoZSBuZXh0IG1vbnRoIGNvbW1hbmQuXG5cdFx0XHRAcHJvcGVydHkgW25leHRKdW1wVGV4dD0nJmd0OyZndDsnXSB7c3RyaW5nfSBUZXh0IGZvciB0aGUgbmV4dCB5ZWFyIGNvbW1hbmQuXG5cdFx0XHRAcHJvcGVydHkgW25leHRKdW1wU3RhdHVzPSdTaG93IHRoZSBuZXh0IHllYXInXSB7c3RyaW5nfSBTdGF0dXMgdGV4dCBmb3IgdGhlIG5leHQgeWVhciBjb21tYW5kLlxuXHRcdFx0QHByb3BlcnR5IFtjdXJyZW50VGV4dD0nQ3VycmVudCddIHtzdHJpbmd9IFRleHQgZm9yIHRoZSBjdXJyZW50IG1vbnRoIGNvbW1hbmQuXG5cdFx0XHRAcHJvcGVydHkgW2N1cnJlbnRTdGF0dXM9J1Nob3cgdGhlIGN1cnJlbnQgbW9udGgnXSB7c3RyaW5nfSBTdGF0dXMgdGV4dCBmb3IgdGhlIGN1cnJlbnQgbW9udGggY29tbWFuZC5cblx0XHRcdEBwcm9wZXJ0eSBbdG9kYXlUZXh0PSdUb2RheSddIHtzdHJpbmd9IFRleHQgZm9yIHRoZSB0b2RheSdzIG1vbnRoIGNvbW1hbmQuXG5cdFx0XHRAcHJvcGVydHkgW3RvZGF5U3RhdHVzPSdTaG93IHRvZGF5XFwncyBtb250aCddIHtzdHJpbmd9IFN0YXR1cyB0ZXh0IGZvciB0aGUgdG9kYXkncyBtb250aCBjb21tYW5kLlxuXHRcdFx0QHByb3BlcnR5IFtjbGVhclRleHQ9J0NsZWFyJ10ge3N0cmluZ30gVGV4dCBmb3IgdGhlIGNsZWFyIGNvbW1hbmQuXG5cdFx0XHRAcHJvcGVydHkgW2NsZWFyU3RhdHVzPSdDbGVhciBhbGwgdGhlIGRhdGVzJ10ge3N0cmluZ30gU3RhdHVzIHRleHQgZm9yIHRoZSBjbGVhciBjb21tYW5kLlxuXHRcdFx0QHByb3BlcnR5IFtjbG9zZVRleHQ9J0Nsb3NlJ10ge3N0cmluZ30gVGV4dCBmb3IgdGhlIGNsb3NlIGNvbW1hbmQuXG5cdFx0XHRAcHJvcGVydHkgW2Nsb3NlU3RhdHVzPSdDbG9zZSB0aGUgZGF0ZXBpY2tlciddIHtzdHJpbmd9IFN0YXR1cyB0ZXh0IGZvciB0aGUgY2xvc2UgY29tbWFuZC5cblx0XHRcdEBwcm9wZXJ0eSBbeWVhclN0YXR1cz0nQ2hhbmdlIHRoZSB5ZWFyJ10ge3N0cmluZ30gU3RhdHVzIHRleHQgZm9yIHllYXIgc2VsZWN0aW9uLlxuXHRcdFx0QHByb3BlcnR5IFtlYXJsaWVyVGV4dD0nJiMxNjA7JiMxNjA74payJ10ge3N0cmluZ30gVGV4dCBmb3IgZWFybGllciB5ZWFycy5cblx0XHRcdEBwcm9wZXJ0eSBbbGF0ZXJUZXh0PScmIzE2MDsmIzE2MDvilrwnXSB7c3RyaW5nfSBUZXh0IGZvciBsYXRlciB5ZWFycy5cblx0XHRcdEBwcm9wZXJ0eSBbbW9udGhTdGF0dXM9J0NoYW5nZSB0aGUgbW9udGgnXSB7c3RyaW5nfSBTdGF0dXMgdGV4dCBmb3IgbW9udGggc2VsZWN0aW9uLlxuXHRcdFx0QHByb3BlcnR5IFt3ZWVrVGV4dD0nV2snXSB7c3RyaW5nfSBUZXh0IGZvciB3ZWVrIG9mIHRoZSB5ZWFyIGNvbHVtbiBoZWFkZXIuXG5cdFx0XHRAcHJvcGVydHkgW3dlZWtTdGF0dXM9J1dlZWsgb2YgdGhlIHllYXInXSB7c3RyaW5nfSBTdGF0dXMgdGV4dCBmb3Igd2VlayBvZiB0aGUgeWVhciBjb2x1bW4gaGVhZGVyLlxuXHRcdFx0QHByb3BlcnR5IFtkYXlTdGF0dXM9J1NlbGVjdCBERCwmIzE2MDtNJiMxNjA7ZCwmIzE2MDt5eXl5J10ge3N0cmluZ30gU3RhdHVzIHRleHQgZm9yIHNlbGVjdGFibGUgZGF5cy5cblx0XHRcdEBwcm9wZXJ0eSBbZGVmYXVsdFN0YXR1cz0nU2VsZWN0IGEgZGF0ZSddIHtzdHJpbmd9IFN0YXR1cyB0ZXh0IHNob3duIGJ5IGRlZmF1bHQuXG5cdFx0XHRAcHJvcGVydHkgW2lzUlRMPWZhbHNlXSB7Ym9vbGVhbn0gPGNvZGU+dHJ1ZTwvY29kZT4gaWYgbGFuZ3VhZ2UgaXMgcmlnaHQtdG8tbGVmdC4gKi9cblx0XHRyZWdpb25hbE9wdGlvbnM6IHsgLy8gQXZhaWxhYmxlIHJlZ2lvbmFsIHNldHRpbmdzLCBpbmRleGVkIGJ5IGxhbmd1YWdlL2NvdW50cnkgY29kZVxuXHRcdFx0Jyc6IHsgLy8gRGVmYXVsdCByZWdpb25hbCBzZXR0aW5ncyAtIEVuZ2xpc2gvVVNcblx0XHRcdFx0cmVuZGVyZXI6IHt9LCAvLyB0aGlzLmRlZmF1bHRSZW5kZXJlclxuXHRcdFx0XHRwcmV2VGV4dDogJyZsdDtQcmV2Jyxcblx0XHRcdFx0cHJldlN0YXR1czogJ1Nob3cgdGhlIHByZXZpb3VzIG1vbnRoJyxcblx0XHRcdFx0cHJldkp1bXBUZXh0OiAnJmx0OyZsdDsnLFxuXHRcdFx0XHRwcmV2SnVtcFN0YXR1czogJ1Nob3cgdGhlIHByZXZpb3VzIHllYXInLFxuXHRcdFx0XHRuZXh0VGV4dDogJ05leHQmZ3Q7Jyxcblx0XHRcdFx0bmV4dFN0YXR1czogJ1Nob3cgdGhlIG5leHQgbW9udGgnLFxuXHRcdFx0XHRuZXh0SnVtcFRleHQ6ICcmZ3Q7Jmd0OycsXG5cdFx0XHRcdG5leHRKdW1wU3RhdHVzOiAnU2hvdyB0aGUgbmV4dCB5ZWFyJyxcblx0XHRcdFx0Y3VycmVudFRleHQ6ICdDdXJyZW50Jyxcblx0XHRcdFx0Y3VycmVudFN0YXR1czogJ1Nob3cgdGhlIGN1cnJlbnQgbW9udGgnLFxuXHRcdFx0XHR0b2RheVRleHQ6ICdUb2RheScsXG5cdFx0XHRcdHRvZGF5U3RhdHVzOiAnU2hvdyB0b2RheVxcJ3MgbW9udGgnLFxuXHRcdFx0XHRjbGVhclRleHQ6ICdDbGVhcicsXG5cdFx0XHRcdGNsZWFyU3RhdHVzOiAnQ2xlYXIgYWxsIHRoZSBkYXRlcycsXG5cdFx0XHRcdGNsb3NlVGV4dDogJ0Nsb3NlJyxcblx0XHRcdFx0Y2xvc2VTdGF0dXM6ICdDbG9zZSB0aGUgZGF0ZXBpY2tlcicsXG5cdFx0XHRcdHllYXJTdGF0dXM6ICdDaGFuZ2UgdGhlIHllYXInLFxuXHRcdFx0XHRlYXJsaWVyVGV4dDogJyYjMTYwOyYjMTYwO+KWsicsXG5cdFx0XHRcdGxhdGVyVGV4dDogJyYjMTYwOyYjMTYwO+KWvCcsXG5cdFx0XHRcdG1vbnRoU3RhdHVzOiAnQ2hhbmdlIHRoZSBtb250aCcsXG5cdFx0XHRcdHdlZWtUZXh0OiAnV2snLFxuXHRcdFx0XHR3ZWVrU3RhdHVzOiAnV2VlayBvZiB0aGUgeWVhcicsXG5cdFx0XHRcdGRheVN0YXR1czogJ1NlbGVjdCBERCwgTSBkLCB5eXl5Jyxcblx0XHRcdFx0ZGVmYXVsdFN0YXR1czogJ1NlbGVjdCBhIGRhdGUnLFxuXHRcdFx0XHRpc1JUTDogZmFsc2Vcblx0XHRcdH1cblx0XHR9LFxuXHRcdFxuXHRcdC8qKiBOYW1lcyBvZiBnZXR0ZXIgbWV0aG9kcyAtIHRob3NlIHRoYXQgY2FuJ3QgYmUgY2hhaW5lZC5cblx0XHRcdEBtZW1iZXJvZiBDYWxlbmRhcnNQaWNrZXIgKi9cblx0XHRfZ2V0dGVyczogWydnZXREYXRlJywgJ2lzRGlzYWJsZWQnLCAnaXNTZWxlY3RhYmxlJywgJ3JldHJpZXZlRGF0ZSddLFxuXG5cdFx0X2Rpc2FibGVkOiBbXSxcblx0XHRcblx0XHRfcG9wdXBDbGFzczogJ2NhbGVuZGFycy1wb3B1cCcsIC8vIE1hcmtlciBmb3IgcG9wdXAgZGl2aXNpb25cblx0XHRfdHJpZ2dlckNsYXNzOiAnY2FsZW5kYXJzLXRyaWdnZXInLCAvLyBNYXJrZXIgZm9yIHRyaWdnZXIgZWxlbWVudFxuXHRcdF9kaXNhYmxlQ2xhc3M6ICdjYWxlbmRhcnMtZGlzYWJsZScsIC8vIE1hcmtlciBmb3IgZGlzYWJsZWQgZWxlbWVudFxuXHRcdF9tb250aFllYXJDbGFzczogJ2NhbGVuZGFycy1tb250aC15ZWFyJywgLy8gTWFya2VyIGZvciBtb250aC95ZWFyIGlucHV0c1xuXHRcdF9jdXJNb250aENsYXNzOiAnY2FsZW5kYXJzLW1vbnRoLScsIC8vIE1hcmtlciBmb3IgY3VycmVudCBtb250aC95ZWFyXG5cdFx0X2FueVllYXJDbGFzczogJ2NhbGVuZGFycy1hbnkteWVhcicsIC8vIE1hcmtlciBmb3IgeWVhciBkaXJlY3QgaW5wdXRcblx0XHRfY3VyRG9XQ2xhc3M6ICdjYWxlbmRhcnMtZG93LScsIC8vIE1hcmtlciBmb3IgZGF5IG9mIHdlZWtcblxuXHRcdF9pbml0OiBmdW5jdGlvbigpIHtcblx0XHRcdHRoaXMuZGVmYXVsdE9wdGlvbnMuY29tbWFuZHMgPSB0aGlzLmNvbW1hbmRzO1xuXHRcdFx0dGhpcy5yZWdpb25hbE9wdGlvbnNbJyddLnJlbmRlcmVyID0gdGhpcy5kZWZhdWx0UmVuZGVyZXI7XG5cdFx0XHR0aGlzLl9zdXBlcigpO1xuXHRcdH0sXG5cblx0XHRfaW5zdFNldHRpbmdzOiBmdW5jdGlvbihlbGVtLCBvcHRpb25zKSB7XG5cdFx0XHRyZXR1cm4ge3NlbGVjdGVkRGF0ZXM6IFtdLCBkcmF3RGF0ZTogbnVsbCwgcGlja2luZ1JhbmdlOiBmYWxzZSxcblx0XHRcdFx0aW5saW5lOiAoJC5pbkFycmF5KGVsZW1bMF0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKSwgWydkaXYnLCAnc3BhbiddKSA+IC0xKSxcblx0XHRcdFx0Z2V0OiBmdW5jdGlvbihuYW1lKSB7IC8vIEdldCBhIHNldHRpbmcgdmFsdWUsIGNvbXB1dGluZyBpZiBuZWNlc3Nhcnlcblx0XHRcdFx0XHRpZiAoJC5pbkFycmF5KG5hbWUsIFsnZGVmYXVsdERhdGUnLCAnbWluRGF0ZScsICdtYXhEYXRlJ10pID4gLTEpIHsgLy8gRGVjb2RlIGRhdGUgc2V0dGluZ3Ncblx0XHRcdFx0XHRcdHJldHVybiB0aGlzLm9wdGlvbnMuY2FsZW5kYXIuZGV0ZXJtaW5lRGF0ZSh0aGlzLm9wdGlvbnNbbmFtZV0sIG51bGwsXG5cdFx0XHRcdFx0XHRcdHRoaXMuc2VsZWN0ZWREYXRlc1swXSwgdGhpcy5nZXQoJ2RhdGVGb3JtYXQnKSwgdGhpcy5nZXRDb25maWcoKSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmIChuYW1lID09PSAnZGF0ZUZvcm1hdCcpIHtcblx0XHRcdFx0XHRcdHJldHVybiB0aGlzLm9wdGlvbnMuZGF0ZUZvcm1hdCB8fCB0aGlzLm9wdGlvbnMuY2FsZW5kYXIubG9jYWwuZGF0ZUZvcm1hdDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0cmV0dXJuIHRoaXMub3B0aW9uc1tuYW1lXTtcblx0XHRcdFx0fSxcblx0XHRcdFx0Y3VyTWluRGF0ZTogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0cmV0dXJuICh0aGlzLnBpY2tpbmdSYW5nZSA/IHRoaXMuc2VsZWN0ZWREYXRlc1swXSA6IHRoaXMuZ2V0KCdtaW5EYXRlJykpO1xuXHRcdFx0XHR9LFxuXHRcdFx0XHRnZXRDb25maWc6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdHJldHVybiB7ZGF5TmFtZXNTaG9ydDogdGhpcy5vcHRpb25zLmRheU5hbWVzU2hvcnQsIGRheU5hbWVzOiB0aGlzLm9wdGlvbnMuZGF5TmFtZXMsXG5cdFx0XHRcdFx0XHRtb250aE5hbWVzU2hvcnQ6IHRoaXMub3B0aW9ucy5tb250aE5hbWVzU2hvcnQsIG1vbnRoTmFtZXM6IHRoaXMub3B0aW9ucy5tb250aE5hbWVzLFxuXHRcdFx0XHRcdFx0Y2FsY3VsYXRlV2VlazogdGhpcy5vcHRpb25zLmNhbGN1bGF0ZVdlZWssIHNob3J0WWVhckN1dG9mZjogdGhpcy5vcHRpb25zLnNob3J0WWVhckN1dG9mZn07XG5cdFx0XHRcdH1cblx0XHRcdH07XG5cdFx0fSxcblxuXHRcdF9wb3N0QXR0YWNoOiBmdW5jdGlvbihlbGVtLCBpbnN0KSB7XG5cdFx0XHRpZiAoaW5zdC5pbmxpbmUpIHtcblx0XHRcdFx0aW5zdC5kcmF3RGF0ZSA9IHBsdWdpbi5fY2hlY2tNaW5NYXgoKGluc3Quc2VsZWN0ZWREYXRlc1swXSB8fFxuXHRcdFx0XHRcdGluc3QuZ2V0KCdkZWZhdWx0RGF0ZScpIHx8IGluc3Qub3B0aW9ucy5jYWxlbmRhci50b2RheSgpKS5uZXdEYXRlKCksIGluc3QpO1xuXHRcdFx0XHRpbnN0LnByZXZEYXRlID0gaW5zdC5kcmF3RGF0ZS5uZXdEYXRlKCk7XG5cdFx0XHRcdHRoaXMuX3VwZGF0ZShlbGVtWzBdKTtcblx0XHRcdFx0aWYgKCQuZm4ubW91c2V3aGVlbCkge1xuXHRcdFx0XHRcdGVsZW0ubW91c2V3aGVlbCh0aGlzLl9kb01vdXNlV2hlZWwpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRlbHNlIHtcblx0XHRcdFx0dGhpcy5fYXR0YWNobWVudHMoZWxlbSwgaW5zdCk7XG5cdFx0XHRcdGVsZW0ub24oJ2tleWRvd24uJyArIGluc3QubmFtZSwgdGhpcy5fa2V5RG93bikub24oJ2tleXByZXNzLicgKyBpbnN0Lm5hbWUsIHRoaXMuX2tleVByZXNzKS5cblx0XHRcdFx0XHRvbigna2V5dXAuJyArIGluc3QubmFtZSwgdGhpcy5fa2V5VXApO1xuXHRcdFx0XHRpZiAoZWxlbS5hdHRyKCdkaXNhYmxlZCcpKSB7XG5cdFx0XHRcdFx0dGhpcy5kaXNhYmxlKGVsZW1bMF0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSxcblxuXHRcdF9vcHRpb25zQ2hhbmdlZDogZnVuY3Rpb24oZWxlbSwgaW5zdCwgb3B0aW9ucykge1xuXHRcdFx0aWYgKG9wdGlvbnMuY2FsZW5kYXIgJiYgb3B0aW9ucy5jYWxlbmRhciAhPT0gaW5zdC5vcHRpb25zLmNhbGVuZGFyKSB7XG5cdFx0XHRcdHZhciBkaXNjYXJkRGF0ZSA9IGZ1bmN0aW9uKG5hbWUpIHtcblx0XHRcdFx0XHRyZXR1cm4gKHR5cGVvZiBpbnN0Lm9wdGlvbnNbbmFtZV0gPT09ICdvYmplY3QnID8gbnVsbCA6IGluc3Qub3B0aW9uc1tuYW1lXSk7XG5cdFx0XHRcdH07XG5cdFx0XHRcdG9wdGlvbnMgPSAkLmV4dGVuZCh7ZGVmYXVsdERhdGU6IGRpc2NhcmREYXRlKCdkZWZhdWx0RGF0ZScpLFxuXHRcdFx0XHRcdG1pbkRhdGU6IGRpc2NhcmREYXRlKCdtaW5EYXRlJyksIG1heERhdGU6IGRpc2NhcmREYXRlKCdtYXhEYXRlJyl9LCBvcHRpb25zKTtcblx0XHRcdFx0aW5zdC5zZWxlY3RlZERhdGVzID0gW107XG5cdFx0XHRcdGluc3QuZHJhd0RhdGUgPSBudWxsO1xuXHRcdFx0fVxuXHRcdFx0dmFyIGRhdGVzID0gaW5zdC5zZWxlY3RlZERhdGVzO1xuXHRcdFx0JC5leHRlbmQoaW5zdC5vcHRpb25zLCBvcHRpb25zKTtcblx0XHRcdHRoaXMuc2V0RGF0ZShlbGVtWzBdLCBkYXRlcywgbnVsbCwgZmFsc2UsIHRydWUpO1xuXHRcdFx0aW5zdC5waWNraW5nUmFuZ2UgPSBmYWxzZTtcblx0XHRcdHZhciBjYWxlbmRhciA9IGluc3Qub3B0aW9ucy5jYWxlbmRhcjtcblx0XHRcdHZhciBkZWZhdWx0RGF0ZSA9IGluc3QuZ2V0KCdkZWZhdWx0RGF0ZScpO1xuXHRcdFx0aW5zdC5kcmF3RGF0ZSA9IHRoaXMuX2NoZWNrTWluTWF4KChkZWZhdWx0RGF0ZSA/IGRlZmF1bHREYXRlIDogaW5zdC5kcmF3RGF0ZSkgfHxcblx0XHRcdFx0ZGVmYXVsdERhdGUgfHwgY2FsZW5kYXIudG9kYXkoKSwgaW5zdCkubmV3RGF0ZSgpO1xuXHRcdFx0aWYgKCFpbnN0LmlubGluZSkge1xuXHRcdFx0XHR0aGlzLl9hdHRhY2htZW50cyhlbGVtLCBpbnN0KTtcblx0XHRcdH1cblx0XHRcdGlmIChpbnN0LmlubGluZSB8fCBpbnN0LmRpdikge1xuXHRcdFx0XHR0aGlzLl91cGRhdGUoZWxlbVswXSk7XG5cdFx0XHR9XG5cdFx0fSxcblxuXHRcdC8qKiBBdHRhY2ggZXZlbnRzIGFuZCB0cmlnZ2VyLCBpZiBuZWNlc3NhcnkuXG5cdFx0XHRAbWVtYmVyb2YgQ2FsZW5kYXJzUGlja2VyXG5cdFx0XHRAcHJpdmF0ZVxuXHRcdFx0QHBhcmFtIGVsZW0ge2pRdWVyeX0gVGhlIGNvbnRyb2wgdG8gYWZmZWN0LlxuXHRcdFx0QHBhcmFtIGluc3Qge29iamVjdH0gVGhlIGN1cnJlbnQgaW5zdGFuY2Ugc2V0dGluZ3MuICovXG5cdFx0X2F0dGFjaG1lbnRzOiBmdW5jdGlvbihlbGVtLCBpbnN0KSB7XG5cdFx0XHRlbGVtLm9mZignZm9jdXMuJyArIGluc3QubmFtZSk7XG5cdFx0XHRpZiAoaW5zdC5vcHRpb25zLnNob3dPbkZvY3VzKSB7XG5cdFx0XHRcdGVsZW0ub24oJ2ZvY3VzLicgKyBpbnN0Lm5hbWUsIHRoaXMuc2hvdyk7XG5cdFx0XHR9XG5cdFx0XHRpZiAoaW5zdC50cmlnZ2VyKSB7XG5cdFx0XHRcdGluc3QudHJpZ2dlci5yZW1vdmUoKTtcblx0XHRcdH1cblx0XHRcdHZhciB0cmlnZ2VyID0gaW5zdC5vcHRpb25zLnNob3dUcmlnZ2VyO1xuXHRcdFx0aW5zdC50cmlnZ2VyID0gKCF0cmlnZ2VyID8gJChbXSkgOlxuXHRcdFx0XHQkKHRyaWdnZXIpLmNsb25lKCkucmVtb3ZlQXR0cignaWQnKS5hZGRDbGFzcyh0aGlzLl90cmlnZ2VyQ2xhc3MpXG5cdFx0XHRcdFx0W2luc3Qub3B0aW9ucy5pc1JUTCA/ICdpbnNlcnRCZWZvcmUnIDogJ2luc2VydEFmdGVyJ10oZWxlbSkuXG5cdFx0XHRcdFx0Y2xpY2soZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0XHRpZiAoIXBsdWdpbi5pc0Rpc2FibGVkKGVsZW1bMF0pKSB7XG5cdFx0XHRcdFx0XHRcdHBsdWdpbltwbHVnaW4uY3VySW5zdCA9PT0gaW5zdCA/ICdoaWRlJyA6ICdzaG93J10oZWxlbVswXSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSkpO1xuXHRcdFx0dGhpcy5fYXV0b1NpemUoZWxlbSwgaW5zdCk7XG5cdFx0XHR2YXIgZGF0ZXMgPSB0aGlzLl9leHRyYWN0RGF0ZXMoaW5zdCwgZWxlbS52YWwoKSk7XG5cdFx0XHRpZiAoZGF0ZXMpIHtcblx0XHRcdFx0dGhpcy5zZXREYXRlKGVsZW1bMF0sIGRhdGVzLCBudWxsLCB0cnVlKTtcblx0XHRcdH1cblx0XHRcdHZhciBkZWZhdWx0RGF0ZSA9IGluc3QuZ2V0KCdkZWZhdWx0RGF0ZScpO1xuXHRcdFx0aWYgKGluc3Qub3B0aW9ucy5zZWxlY3REZWZhdWx0RGF0ZSAmJiBkZWZhdWx0RGF0ZSAmJiBpbnN0LnNlbGVjdGVkRGF0ZXMubGVuZ3RoID09PSAwKSB7XG5cdFx0XHRcdHRoaXMuc2V0RGF0ZShlbGVtWzBdLCAoZGVmYXVsdERhdGUgfHwgaW5zdC5vcHRpb25zLmNhbGVuZGFyLnRvZGF5KCkpLm5ld0RhdGUoKSk7XG5cdFx0XHR9XG5cdFx0fSxcblxuXHRcdC8qKiBBcHBseSB0aGUgbWF4aW11bSBsZW5ndGggZm9yIHRoZSBkYXRlIGZvcm1hdC5cblx0XHRcdEBtZW1iZXJvZiBDYWxlbmRhcnNQaWNrZXJcblx0XHRcdEBwcml2YXRlXG5cdFx0XHRAcGFyYW0gZWxlbSB7alF1ZXJ5fSBUaGUgY29udHJvbCB0byBhZmZlY3QuXG5cdFx0XHRAcGFyYW0gaW5zdCB7b2JqZWN0fSBUaGUgY3VycmVudCBpbnN0YW5jZSBzZXR0aW5ncy4gKi9cblx0XHRfYXV0b1NpemU6IGZ1bmN0aW9uKGVsZW0sIGluc3QpIHtcblx0XHRcdGlmIChpbnN0Lm9wdGlvbnMuYXV0b1NpemUgJiYgIWluc3QuaW5saW5lKSB7XG5cdFx0XHRcdHZhciBjYWxlbmRhciA9IGluc3Qub3B0aW9ucy5jYWxlbmRhcjtcblx0XHRcdFx0dmFyIGRhdGUgPSBjYWxlbmRhci5uZXdEYXRlKDIwMDksIDEwLCAyMCk7IC8vIEVuc3VyZSBkb3VibGUgZGlnaXRzXG5cdFx0XHRcdHZhciBkYXRlRm9ybWF0ID0gaW5zdC5nZXQoJ2RhdGVGb3JtYXQnKTtcblx0XHRcdFx0aWYgKGRhdGVGb3JtYXQubWF0Y2goL1tETV0vKSkge1xuXHRcdFx0XHRcdHZhciBmaW5kTWF4ID0gZnVuY3Rpb24obmFtZXMpIHtcblx0XHRcdFx0XHRcdHZhciBtYXggPSAwO1xuXHRcdFx0XHRcdFx0dmFyIG1heEkgPSAwO1xuXHRcdFx0XHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBuYW1lcy5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRcdFx0XHRpZiAobmFtZXNbaV0ubGVuZ3RoID4gbWF4KSB7XG5cdFx0XHRcdFx0XHRcdFx0bWF4ID0gbmFtZXNbaV0ubGVuZ3RoO1xuXHRcdFx0XHRcdFx0XHRcdG1heEkgPSBpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRyZXR1cm4gbWF4STtcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdGRhdGUubW9udGgoZmluZE1heChjYWxlbmRhci5sb2NhbFtkYXRlRm9ybWF0Lm1hdGNoKC9NTS8pID8gLy8gTG9uZ2VzdCBtb250aFxuXHRcdFx0XHRcdFx0J21vbnRoTmFtZXMnIDogJ21vbnRoTmFtZXNTaG9ydCddKSArIDEpO1xuXHRcdFx0XHRcdGRhdGUuZGF5KGZpbmRNYXgoY2FsZW5kYXIubG9jYWxbZGF0ZUZvcm1hdC5tYXRjaCgvREQvKSA/IC8vIExvbmdlc3QgZGF5XG5cdFx0XHRcdFx0XHQnZGF5TmFtZXMnIDogJ2RheU5hbWVzU2hvcnQnXSkgKyAyMCAtIGRhdGUuZGF5T2ZXZWVrKCkpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGluc3QuZWxlbS5hdHRyKCdzaXplJywgZGF0ZS5mb3JtYXREYXRlKGRhdGVGb3JtYXQpLmxlbmd0aCk7XG5cdFx0XHR9XG5cdFx0fSxcblxuXHRcdF9wcmVEZXN0cm95OiBmdW5jdGlvbihlbGVtLCBpbnN0KSB7XG5cdFx0XHRpZiAoaW5zdC50cmlnZ2VyKSB7XG5cdFx0XHRcdGluc3QudHJpZ2dlci5yZW1vdmUoKTtcblx0XHRcdH1cblx0XHRcdGVsZW0uZW1wdHkoKS5vZmYoJy4nICsgaW5zdC5uYW1lKTtcblx0XHRcdGlmIChpbnN0LmlubGluZSAmJiAkLmZuLm1vdXNld2hlZWwpIHtcblx0XHRcdFx0ZWxlbS51bm1vdXNld2hlZWwoKTtcblx0XHRcdH1cblx0XHRcdGlmICghaW5zdC5pbmxpbmUgJiYgaW5zdC5vcHRpb25zLmF1dG9TaXplKSB7XG5cdFx0XHRcdGVsZW0ucmVtb3ZlQXR0cignc2l6ZScpO1xuXHRcdFx0fVxuXHRcdH0sXG5cblx0XHQvKiogQXBwbHkgbXVsdGlwbGUgZXZlbnQgZnVuY3Rpb25zLlxuXHRcdFx0QG1lbWJlcm9mIENhbGVuZGFyc1BpY2tlclxuXHRcdFx0QHBhcmFtIGZucyB7ZnVuY3Rpb259IFRoZSBmdW5jdGlvbnMgdG8gYXBwbHkuXG5cdFx0XHRAZXhhbXBsZSBvblNob3c6IG11bHRpcGxlRXZlbnRzKGZuMSwgZm4yLCAuLi4pICovXG5cdFx0bXVsdGlwbGVFdmVudHM6IGZ1bmN0aW9uKGZucykge1xuXHRcdFx0dmFyIGZ1bmNzID0gYXJndW1lbnRzO1xuXHRcdFx0cmV0dXJuIGZ1bmN0aW9uKGFyZ3MpIHtcblx0XHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBmdW5jcy5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRcdGZ1bmNzW2ldLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG5cdFx0XHRcdH1cblx0XHRcdH07XG5cdFx0fSxcblxuXHRcdC8qKiBFbmFibGUgdGhlIGNvbnRyb2wuXG5cdFx0XHRAbWVtYmVyb2YgQ2FsZW5kYXJzUGlja2VyXG5cdFx0XHRAcGFyYW0gZWxlbSB7RWxlbWVudH0gVGhlIGNvbnRyb2wgdG8gYWZmZWN0LlxuXHRcdFx0QGV4YW1wbGUgJChzZWxlY3RvcikuZGF0ZXBpY2soJ2VuYWJsZScpICovXG5cdFx0ZW5hYmxlOiBmdW5jdGlvbihlbGVtKSB7XG5cdFx0XHRlbGVtID0gJChlbGVtKTtcblx0XHRcdGlmICghZWxlbS5oYXNDbGFzcyh0aGlzLl9nZXRNYXJrZXIoKSkpIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0dmFyIGluc3QgPSB0aGlzLl9nZXRJbnN0KGVsZW0pO1xuXHRcdFx0aWYgKGluc3QuaW5saW5lKSB7XG5cdFx0XHRcdGVsZW0uY2hpbGRyZW4oJy4nICsgdGhpcy5fZGlzYWJsZUNsYXNzKS5yZW1vdmUoKS5lbmQoKS5cblx0XHRcdFx0XHRmaW5kKCdidXR0b24sc2VsZWN0JykucHJvcCgnZGlzYWJsZWQnLCBmYWxzZSkuZW5kKCkuXG5cdFx0XHRcdFx0ZmluZCgnYScpLmF0dHIoJ2hyZWYnLCAnamF2YXNjcmlwdDp2b2lkKDApJyk7XG5cdFx0XHR9XG5cdFx0XHRlbHNlIHtcblx0XHRcdFx0ZWxlbS5wcm9wKCdkaXNhYmxlZCcsIGZhbHNlKTtcblx0XHRcdFx0aW5zdC50cmlnZ2VyLmZpbHRlcignYnV0dG9uLicgKyB0aGlzLl90cmlnZ2VyQ2xhc3MpLnByb3AoJ2Rpc2FibGVkJywgZmFsc2UpLmVuZCgpLlxuXHRcdFx0XHRcdGZpbHRlcignaW1nLicgKyB0aGlzLl90cmlnZ2VyQ2xhc3MpLmNzcyh7b3BhY2l0eTogJzEuMCcsIGN1cnNvcjogJyd9KTtcblx0XHRcdH1cblx0XHRcdHRoaXMuX2Rpc2FibGVkID0gJC5tYXAodGhpcy5fZGlzYWJsZWQsXG5cdFx0XHRcdGZ1bmN0aW9uKHZhbHVlKSB7IHJldHVybiAodmFsdWUgPT09IGVsZW1bMF0gPyBudWxsIDogdmFsdWUpOyB9KTsgLy8gRGVsZXRlIGVudHJ5XG5cdFx0fSxcblxuXHRcdC8qKiBEaXNhYmxlIHRoZSBjb250cm9sLlxuXHRcdFx0QG1lbWJlcm9mIENhbGVuZGFyc1BpY2tlclxuXHRcdFx0QHBhcmFtIGVsZW0ge0VsZW1lbnR9IFRoZSBjb250cm9sIHRvIGFmZmVjdC5cblx0XHRcdEBleGFtcGxlICQoc2VsZWN0b3IpLmRhdGVwaWNrKCdkaXNhYmxlJykgKi9cblx0XHRkaXNhYmxlOiBmdW5jdGlvbihlbGVtKSB7XG5cdFx0XHRlbGVtID0gJChlbGVtKTtcblx0XHRcdGlmICghZWxlbS5oYXNDbGFzcyh0aGlzLl9nZXRNYXJrZXIoKSkpIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0dmFyIGluc3QgPSB0aGlzLl9nZXRJbnN0KGVsZW0pO1xuXHRcdFx0aWYgKGluc3QuaW5saW5lKSB7XG5cdFx0XHRcdHZhciBpbmxpbmUgPSBlbGVtLmNoaWxkcmVuKCc6bGFzdCcpO1xuXHRcdFx0XHR2YXIgb2Zmc2V0ID0gaW5saW5lLm9mZnNldCgpO1xuXHRcdFx0XHR2YXIgcmVsT2Zmc2V0ID0ge2xlZnQ6IDAsIHRvcDogMH07XG5cdFx0XHRcdGlubGluZS5wYXJlbnRzKCkuZWFjaChmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRpZiAoJCh0aGlzKS5jc3MoJ3Bvc2l0aW9uJykgPT09ICdyZWxhdGl2ZScpIHtcblx0XHRcdFx0XHRcdHJlbE9mZnNldCA9ICQodGhpcykub2Zmc2V0KCk7XG5cdFx0XHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblx0XHRcdFx0dmFyIHpJbmRleCA9IGVsZW0uY3NzKCd6SW5kZXgnKTtcblx0XHRcdFx0ekluZGV4ID0gKHpJbmRleCA9PT0gJ2F1dG8nID8gMCA6IHBhcnNlSW50KHpJbmRleCwgMTApKSArIDE7XG5cdFx0XHRcdGVsZW0ucHJlcGVuZCgnPGRpdiBjbGFzcz1cIicgKyB0aGlzLl9kaXNhYmxlQ2xhc3MgKyAnXCIgc3R5bGU9XCInICtcblx0XHRcdFx0XHQnd2lkdGg6ICcgKyBpbmxpbmUub3V0ZXJXaWR0aCgpICsgJ3B4OyBoZWlnaHQ6ICcgKyBpbmxpbmUub3V0ZXJIZWlnaHQoKSArXG5cdFx0XHRcdFx0J3B4OyBsZWZ0OiAnICsgKG9mZnNldC5sZWZ0IC0gcmVsT2Zmc2V0LmxlZnQpICsgJ3B4OyB0b3A6ICcgK1xuXHRcdFx0XHRcdChvZmZzZXQudG9wIC0gcmVsT2Zmc2V0LnRvcCkgKyAncHg7IHotaW5kZXg6ICcgKyB6SW5kZXggKyAnXCI+PC9kaXY+JykuXG5cdFx0XHRcdFx0ZmluZCgnYnV0dG9uLHNlbGVjdCcpLnByb3AoJ2Rpc2FibGVkJywgdHJ1ZSkuZW5kKCkuXG5cdFx0XHRcdFx0ZmluZCgnYScpLnJlbW92ZUF0dHIoJ2hyZWYnKTtcblx0XHRcdH1cblx0XHRcdGVsc2Uge1xuXHRcdFx0XHRlbGVtLnByb3AoJ2Rpc2FibGVkJywgdHJ1ZSk7XG5cdFx0XHRcdGluc3QudHJpZ2dlci5maWx0ZXIoJ2J1dHRvbi4nICsgdGhpcy5fdHJpZ2dlckNsYXNzKS5wcm9wKCdkaXNhYmxlZCcsIHRydWUpLmVuZCgpLlxuXHRcdFx0XHRcdGZpbHRlcignaW1nLicgKyB0aGlzLl90cmlnZ2VyQ2xhc3MpLmNzcyh7b3BhY2l0eTogJzAuNScsIGN1cnNvcjogJ2RlZmF1bHQnfSk7XG5cdFx0XHR9XG5cdFx0XHR0aGlzLl9kaXNhYmxlZCA9ICQubWFwKHRoaXMuX2Rpc2FibGVkLFxuXHRcdFx0XHRmdW5jdGlvbih2YWx1ZSkgeyByZXR1cm4gKHZhbHVlID09PSBlbGVtWzBdID8gbnVsbCA6IHZhbHVlKTsgfSk7IC8vIERlbGV0ZSBlbnRyeVxuXHRcdFx0dGhpcy5fZGlzYWJsZWQucHVzaChlbGVtWzBdKTtcblx0XHR9LFxuXG5cdFx0LyoqIElzIHRoZSBmaXJzdCBmaWVsZCBpbiBhIGpRdWVyeSBjb2xsZWN0aW9uIGRpc2FibGVkIGFzIGEgZGF0ZXBpY2tlcj9cblx0XHRcdEBtZW1iZXJvZiBDYWxlbmRhcnNQaWNrZXJcblx0XHRcdEBwYXJhbSBlbGVtIHtFbGVtZW50fSBUaGUgY29udHJvbCB0byBleGFtaW5lLlxuXHRcdFx0QHJldHVybiB7Ym9vbGVhbn0gPGNvZGU+dHJ1ZTwvY29kZT4gaWYgZGlzYWJsZWQsIDxjb2RlPmZhbHNlPC9jb2RlPiBpZiBlbmFibGVkLlxuXHRcdFx0QGV4YW1wbGUgaWYgKCQoc2VsZWN0b3IpLmRhdGVwaWNrKCdpc0Rpc2FibGVkJykpIHsuLi59ICovXG5cdFx0aXNEaXNhYmxlZDogZnVuY3Rpb24oZWxlbSkge1xuXHRcdFx0cmV0dXJuIChlbGVtICYmICQuaW5BcnJheShlbGVtLCB0aGlzLl9kaXNhYmxlZCkgPiAtMSk7XG5cdFx0fSxcblxuXHRcdC8qKiBTaG93IGEgcG9wdXAgZGF0ZXBpY2tlci5cblx0XHRcdEBtZW1iZXJvZiBDYWxlbmRhcnNQaWNrZXJcblx0XHRcdEBwYXJhbSBlbGVtIHtFdmVudHxFbGVtZW50fSBhIGZvY3VzIGV2ZW50IG9yIHRoZSBjb250cm9sIHRvIHVzZS5cblx0XHRcdEBleGFtcGxlICQoc2VsZWN0b3IpLmRhdGVwaWNrKCdzaG93JykgKi9cblx0XHRzaG93OiBmdW5jdGlvbihlbGVtKSB7XG5cdFx0XHRlbGVtID0gJChlbGVtLnRhcmdldCB8fCBlbGVtKTtcblx0XHRcdHZhciBpbnN0ID0gcGx1Z2luLl9nZXRJbnN0KGVsZW0pO1xuXHRcdFx0aWYgKHBsdWdpbi5jdXJJbnN0ID09PSBpbnN0KSB7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdGlmIChwbHVnaW4uY3VySW5zdCkge1xuXHRcdFx0XHRwbHVnaW4uaGlkZShwbHVnaW4uY3VySW5zdCwgdHJ1ZSk7XG5cdFx0XHR9XG5cdFx0XHRpZiAoISQuaXNFbXB0eU9iamVjdChpbnN0KSkge1xuXHRcdFx0XHQvLyBSZXRyaWV2ZSBleGlzdGluZyBkYXRlKHMpXG5cdFx0XHRcdGluc3QubGFzdFZhbCA9IG51bGw7XG5cdFx0XHRcdGluc3Quc2VsZWN0ZWREYXRlcyA9IHBsdWdpbi5fZXh0cmFjdERhdGVzKGluc3QsIGVsZW0udmFsKCkpO1xuXHRcdFx0XHRpbnN0LnBpY2tpbmdSYW5nZSA9IGZhbHNlO1xuXHRcdFx0XHRpbnN0LmRyYXdEYXRlID0gcGx1Z2luLl9jaGVja01pbk1heCgoaW5zdC5zZWxlY3RlZERhdGVzWzBdIHx8XG5cdFx0XHRcdFx0aW5zdC5nZXQoJ2RlZmF1bHREYXRlJykgfHwgaW5zdC5vcHRpb25zLmNhbGVuZGFyLnRvZGF5KCkpLm5ld0RhdGUoKSwgaW5zdCk7XG5cdFx0XHRcdGluc3QucHJldkRhdGUgPSBpbnN0LmRyYXdEYXRlLm5ld0RhdGUoKTtcblx0XHRcdFx0cGx1Z2luLmN1ckluc3QgPSBpbnN0O1xuXHRcdFx0XHQvLyBHZW5lcmF0ZSBjb250ZW50XG5cdFx0XHRcdHBsdWdpbi5fdXBkYXRlKGVsZW1bMF0sIHRydWUpO1xuXHRcdFx0XHQvLyBBZGp1c3QgcG9zaXRpb24gYmVmb3JlIHNob3dpbmdcblx0XHRcdFx0dmFyIG9mZnNldCA9IHBsdWdpbi5fY2hlY2tPZmZzZXQoaW5zdCk7XG5cdFx0XHRcdGluc3QuZGl2LmNzcyh7bGVmdDogb2Zmc2V0LmxlZnQsIHRvcDogb2Zmc2V0LnRvcH0pO1xuXHRcdFx0XHQvLyBBbmQgZGlzcGxheVxuXHRcdFx0XHR2YXIgc2hvd0FuaW0gPSBpbnN0Lm9wdGlvbnMuc2hvd0FuaW07XG5cdFx0XHRcdHZhciBzaG93U3BlZWQgPSBpbnN0Lm9wdGlvbnMuc2hvd1NwZWVkO1xuXHRcdFx0XHRzaG93U3BlZWQgPSAoc2hvd1NwZWVkID09PSAnbm9ybWFsJyAmJiAkLnVpICYmXG5cdFx0XHRcdFx0cGFyc2VJbnQoJC51aS52ZXJzaW9uLnN1YnN0cmluZygyKSkgPj0gOCA/ICdfZGVmYXVsdCcgOiBzaG93U3BlZWQpO1xuXHRcdFx0XHRpZiAoJC5lZmZlY3RzICYmICgkLmVmZmVjdHNbc2hvd0FuaW1dIHx8ICgkLmVmZmVjdHMuZWZmZWN0ICYmICQuZWZmZWN0cy5lZmZlY3Rbc2hvd0FuaW1dKSkpIHtcblx0XHRcdFx0XHR2YXIgZGF0YSA9IGluc3QuZGl2LmRhdGEoKTsgLy8gVXBkYXRlIG9sZCBlZmZlY3RzIGRhdGFcblx0XHRcdFx0XHRmb3IgKHZhciBrZXkgaW4gZGF0YSkge1xuXHRcdFx0XHRcdFx0aWYgKGtleS5tYXRjaCgvXmVjXFwuc3RvcmFnZVxcLi8pKSB7XG5cdFx0XHRcdFx0XHRcdGRhdGFba2V5XSA9IGluc3QuX21haW5EaXYuY3NzKGtleS5yZXBsYWNlKC9lY1xcLnN0b3JhZ2VcXC4vLCAnJykpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpbnN0LmRpdi5kYXRhKGRhdGEpLnNob3coc2hvd0FuaW0sIGluc3Qub3B0aW9ucy5zaG93T3B0aW9ucywgc2hvd1NwZWVkKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRpbnN0LmRpdltzaG93QW5pbSB8fCAnc2hvdyddKHNob3dBbmltID8gc2hvd1NwZWVkIDogMCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9LFxuXG5cdFx0LyoqIEV4dHJhY3QgcG9zc2libGUgZGF0ZXMgZnJvbSBhIHN0cmluZy5cblx0XHRcdEBtZW1iZXJvZiBDYWxlbmRhcnNQaWNrZXJcblx0XHRcdEBwcml2YXRlXG5cdFx0XHRAcGFyYW0gaW5zdCB7b2JqZWN0fSBUaGUgY3VycmVudCBpbnN0YW5jZSBzZXR0aW5ncy5cblx0XHRcdEBwYXJhbSB0ZXh0IHtzdHJpbmd9IFRoZSB0ZXh0IHRvIGV4dHJhY3QgZnJvbS5cblx0XHRcdEByZXR1cm4ge0NEYXRlW119IFRoZSBleHRyYWN0ZWQgZGF0ZXMuICovXG5cdFx0X2V4dHJhY3REYXRlczogZnVuY3Rpb24oaW5zdCwgZGF0ZXNUZXh0KSB7XG5cdFx0XHRpZiAoZGF0ZXNUZXh0ID09PSBpbnN0Lmxhc3RWYWwpIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0aW5zdC5sYXN0VmFsID0gZGF0ZXNUZXh0O1xuXHRcdFx0ZGF0ZXNUZXh0ID0gZGF0ZXNUZXh0LnNwbGl0KGluc3Qub3B0aW9ucy5tdWx0aVNlbGVjdCA/IGluc3Qub3B0aW9ucy5tdWx0aVNlcGFyYXRvciA6XG5cdFx0XHRcdChpbnN0Lm9wdGlvbnMucmFuZ2VTZWxlY3QgPyBpbnN0Lm9wdGlvbnMucmFuZ2VTZXBhcmF0b3IgOiAnXFx4MDAnKSk7XG5cdFx0XHR2YXIgZGF0ZXMgPSBbXTtcblx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgZGF0ZXNUZXh0Lmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0dmFyIGRhdGUgPSBpbnN0Lm9wdGlvbnMuY2FsZW5kYXIucGFyc2VEYXRlKGluc3QuZ2V0KCdkYXRlRm9ybWF0JyksIGRhdGVzVGV4dFtpXSk7XG5cdFx0XHRcdFx0aWYgKGRhdGUpIHtcblx0XHRcdFx0XHRcdHZhciBmb3VuZCA9IGZhbHNlO1xuXHRcdFx0XHRcdFx0Zm9yICh2YXIgaiA9IDA7IGogPCBkYXRlcy5sZW5ndGg7IGorKykge1xuXHRcdFx0XHRcdFx0XHRpZiAoZGF0ZXNbal0uY29tcGFyZVRvKGRhdGUpID09PSAwKSB7XG5cdFx0XHRcdFx0XHRcdFx0Zm91bmQgPSB0cnVlO1xuXHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRpZiAoIWZvdW5kKSB7XG5cdFx0XHRcdFx0XHRcdGRhdGVzLnB1c2goZGF0ZSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdGNhdGNoIChlKSB7XG5cdFx0XHRcdFx0Ly8gSWdub3JlXG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGRhdGVzLnNwbGljZShpbnN0Lm9wdGlvbnMubXVsdGlTZWxlY3QgfHwgKGluc3Qub3B0aW9ucy5yYW5nZVNlbGVjdCA/IDIgOiAxKSwgZGF0ZXMubGVuZ3RoKTtcblx0XHRcdGlmIChpbnN0Lm9wdGlvbnMucmFuZ2VTZWxlY3QgJiYgZGF0ZXMubGVuZ3RoID09PSAxKSB7XG5cdFx0XHRcdGRhdGVzWzFdID0gZGF0ZXNbMF07XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gZGF0ZXM7XG5cdFx0fSxcblxuXHRcdC8qKiBVcGRhdGUgdGhlIGRhdGVwaWNrZXIgZGlzcGxheS5cblx0XHRcdEBtZW1iZXJvZiBDYWxlbmRhcnNQaWNrZXJcblx0XHRcdEBwcml2YXRlXG5cdFx0XHRAcGFyYW0gZWxlbSB7RXZlbnR8RWxlbWVudH0gYSBmb2N1cyBldmVudCBvciB0aGUgY29udHJvbCB0byB1c2UuXG5cdFx0XHRAcGFyYW0gaGlkZGVuIHtib29sZWFufSA8Y29kZT50cnVlPC9jb2RlPiB0byBpbml0aWFsbHkgaGlkZSB0aGUgZGF0ZXBpY2tlci4gKi9cblx0XHRfdXBkYXRlOiBmdW5jdGlvbihlbGVtLCBoaWRkZW4pIHtcblx0XHRcdGVsZW0gPSAkKGVsZW0udGFyZ2V0IHx8IGVsZW0pO1xuXHRcdFx0dmFyIGluc3QgPSBwbHVnaW4uX2dldEluc3QoZWxlbSk7XG5cdFx0XHRpZiAoISQuaXNFbXB0eU9iamVjdChpbnN0KSkge1xuXHRcdFx0XHRpZiAoaW5zdC5pbmxpbmUgfHwgcGx1Z2luLmN1ckluc3QgPT09IGluc3QpIHtcblx0XHRcdFx0XHRpZiAoJC5pc0Z1bmN0aW9uKGluc3Qub3B0aW9ucy5vbkNoYW5nZU1vbnRoWWVhcikgJiYgKCFpbnN0LnByZXZEYXRlIHx8XG5cdFx0XHRcdFx0XHRcdGluc3QucHJldkRhdGUueWVhcigpICE9PSBpbnN0LmRyYXdEYXRlLnllYXIoKSB8fFxuXHRcdFx0XHRcdFx0XHRpbnN0LnByZXZEYXRlLm1vbnRoKCkgIT09IGluc3QuZHJhd0RhdGUubW9udGgoKSkpIHtcblx0XHRcdFx0XHRcdGluc3Qub3B0aW9ucy5vbkNoYW5nZU1vbnRoWWVhci5hcHBseShlbGVtWzBdLFxuXHRcdFx0XHRcdFx0XHRbaW5zdC5kcmF3RGF0ZS55ZWFyKCksIGluc3QuZHJhd0RhdGUubW9udGgoKV0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoaW5zdC5pbmxpbmUpIHtcblx0XHRcdFx0XHR2YXIgaW5kZXggPSAkKCdhLCA6aW5wdXQnLCBlbGVtKS5pbmRleCgkKCc6Zm9jdXMnLCBlbGVtKSk7XG5cdFx0XHRcdFx0ZWxlbS5odG1sKHRoaXMuX2dlbmVyYXRlQ29udGVudChlbGVtWzBdLCBpbnN0KSk7XG5cdFx0XHRcdFx0dmFyIGZvY3VzID0gZWxlbS5maW5kKCdhLCA6aW5wdXQnKTtcblx0XHRcdFx0XHRmb2N1cy5lcShNYXRoLm1heChNYXRoLm1pbihpbmRleCwgZm9jdXMubGVuZ3RoIC0gMSksIDApKS5mb2N1cygpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGVsc2UgaWYgKHBsdWdpbi5jdXJJbnN0ID09PSBpbnN0KSB7XG5cdFx0XHRcdFx0aWYgKCFpbnN0LmRpdikge1xuXHRcdFx0XHRcdFx0aW5zdC5kaXYgPSAkKCc8ZGl2PjwvZGl2PicpLmFkZENsYXNzKHRoaXMuX3BvcHVwQ2xhc3MpLlxuXHRcdFx0XHRcdFx0XHRjc3Moe2Rpc3BsYXk6IChoaWRkZW4gPyAnbm9uZScgOiAnc3RhdGljJyksIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuXHRcdFx0XHRcdFx0XHRcdGxlZnQ6IGVsZW0ub2Zmc2V0KCkubGVmdCwgdG9wOiBlbGVtLm9mZnNldCgpLnRvcCArIGVsZW0ub3V0ZXJIZWlnaHQoKX0pLlxuXHRcdFx0XHRcdFx0XHRhcHBlbmRUbygkKGluc3Qub3B0aW9ucy5wb3B1cENvbnRhaW5lciB8fCAnYm9keScpKTtcblx0XHRcdFx0XHRcdGlmICgkLmZuLm1vdXNld2hlZWwpIHtcblx0XHRcdFx0XHRcdFx0aW5zdC5kaXYubW91c2V3aGVlbCh0aGlzLl9kb01vdXNlV2hlZWwpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpbnN0LmRpdi5odG1sKHRoaXMuX2dlbmVyYXRlQ29udGVudChlbGVtWzBdLCBpbnN0KSk7XG5cdFx0XHRcdFx0ZWxlbS5mb2N1cygpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSxcblxuXHRcdC8qKiBVcGRhdGUgdGhlIGlucHV0IGZpZWxkIGFuZCBhbnkgYWx0ZXJuYXRlIGZpZWxkIHdpdGggdGhlIGN1cnJlbnQgZGF0ZXMuXG5cdFx0XHRAbWVtYmVyb2YgQ2FsZW5kYXJzUGlja2VyXG5cdFx0XHRAcHJpdmF0ZVxuXHRcdFx0QHBhcmFtIGVsZW0ge0VsZW1lbnR9IFRoZSBjb250cm9sIHRvIHVzZS5cblx0XHRcdEBwYXJhbSBrZXlVcCB7Ym9vbGVhbn0gPGNvZGU+dHJ1ZTwvY29kZT4gaWYgY29taW5nIGZyb20gPGNvZGU+a2V5VXA8L2NvZGU+IHByb2Nlc3NpbmcgKGludGVybmFsKS4gKi9cblx0XHRfdXBkYXRlSW5wdXQ6IGZ1bmN0aW9uKGVsZW0sIGtleVVwKSB7XG5cdFx0XHR2YXIgaW5zdCA9IHRoaXMuX2dldEluc3QoZWxlbSk7XG5cdFx0XHRpZiAoISQuaXNFbXB0eU9iamVjdChpbnN0KSkge1xuXHRcdFx0XHR2YXIgdmFsdWUgPSAnJztcblx0XHRcdFx0dmFyIGFsdFZhbHVlID0gJyc7XG5cdFx0XHRcdHZhciBzZXAgPSAoaW5zdC5vcHRpb25zLm11bHRpU2VsZWN0ID8gaW5zdC5vcHRpb25zLm11bHRpU2VwYXJhdG9yIDpcblx0XHRcdFx0XHRpbnN0Lm9wdGlvbnMucmFuZ2VTZXBhcmF0b3IpO1xuXHRcdFx0XHR2YXIgY2FsZW5kYXIgPSBpbnN0Lm9wdGlvbnMuY2FsZW5kYXI7XG5cdFx0XHRcdHZhciBkYXRlRm9ybWF0ID0gaW5zdC5nZXQoJ2RhdGVGb3JtYXQnKTtcblx0XHRcdFx0dmFyIGFsdEZvcm1hdCA9IGluc3Qub3B0aW9ucy5hbHRGb3JtYXQgfHwgZGF0ZUZvcm1hdDtcblx0XHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBpbnN0LnNlbGVjdGVkRGF0ZXMubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0XHR2YWx1ZSArPSAoa2V5VXAgPyAnJyA6IChpID4gMCA/IHNlcCA6ICcnKSArXG5cdFx0XHRcdFx0XHRjYWxlbmRhci5mb3JtYXREYXRlKGRhdGVGb3JtYXQsIGluc3Quc2VsZWN0ZWREYXRlc1tpXSkpO1xuXHRcdFx0XHRcdGFsdFZhbHVlICs9IChpID4gMCA/IHNlcCA6ICcnKSArXG5cdFx0XHRcdFx0XHRjYWxlbmRhci5mb3JtYXREYXRlKGFsdEZvcm1hdCwgaW5zdC5zZWxlY3RlZERhdGVzW2ldKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoIWluc3QuaW5saW5lICYmICFrZXlVcCkge1xuXHRcdFx0XHRcdCQoZWxlbSkudmFsKHZhbHVlKTtcblx0XHRcdFx0fVxuXHRcdFx0XHQkKGluc3Qub3B0aW9ucy5hbHRGaWVsZCkudmFsKGFsdFZhbHVlKTtcblx0XHRcdFx0aWYgKCQuaXNGdW5jdGlvbihpbnN0Lm9wdGlvbnMub25TZWxlY3QpICYmICFrZXlVcCAmJiAhaW5zdC5pblNlbGVjdCkge1xuXHRcdFx0XHRcdGluc3QuaW5TZWxlY3QgPSB0cnVlOyAvLyBQcmV2ZW50IGVuZGxlc3MgbG9vcHNcblx0XHRcdFx0XHRpbnN0Lm9wdGlvbnMub25TZWxlY3QuYXBwbHkoZWxlbSwgW2luc3Quc2VsZWN0ZWREYXRlc10pO1xuXHRcdFx0XHRcdGluc3QuaW5TZWxlY3QgPSBmYWxzZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0sXG5cblx0XHQvKiogUmV0cmlldmUgdGhlIHNpemUgb2YgbGVmdCBhbmQgdG9wIGJvcmRlcnMgZm9yIGFuIGVsZW1lbnQuXG5cdFx0XHRAbWVtYmVyb2YgQ2FsZW5kYXJzUGlja2VyXG5cdFx0XHRAcHJpdmF0ZVxuXHRcdFx0QHBhcmFtIGVsZW0ge2pRdWVyeX0gVGhlIGVsZW1lbnQgb2YgaW50ZXJlc3QuXG5cdFx0XHRAcmV0dXJuIHtudW1iZXJbXX0gVGhlIGxlZnQgYW5kIHRvcCBib3JkZXJzLiAqL1xuXHRcdF9nZXRCb3JkZXJzOiBmdW5jdGlvbihlbGVtKSB7XG5cdFx0XHR2YXIgY29udmVydCA9IGZ1bmN0aW9uKHZhbHVlKSB7XG5cdFx0XHRcdHJldHVybiB7dGhpbjogMSwgbWVkaXVtOiAzLCB0aGljazogNX1bdmFsdWVdIHx8IHZhbHVlO1xuXHRcdFx0fTtcblx0XHRcdHJldHVybiBbcGFyc2VGbG9hdChjb252ZXJ0KGVsZW0uY3NzKCdib3JkZXItbGVmdC13aWR0aCcpKSksXG5cdFx0XHRcdHBhcnNlRmxvYXQoY29udmVydChlbGVtLmNzcygnYm9yZGVyLXRvcC13aWR0aCcpKSldO1xuXHRcdH0sXG5cblx0XHQvKiogQ2hlY2sgcG9zaXRpb25pbmcgdG8gcmVtYWluIG9uIHRoZSBzY3JlZW4uXG5cdFx0XHRAbWVtYmVyb2YgQ2FsZW5kYXJzUGlja2VyXG5cdFx0XHRAcHJpdmF0ZVxuXHRcdFx0QHBhcmFtIGluc3Qge29iamVjdH0gVGhlIGN1cnJlbnQgaW5zdGFuY2Ugc2V0dGluZ3MuXG5cdFx0XHRAcmV0dXJuIHtvYmplY3R9IFRoZSB1cGRhdGVkIG9mZnNldCBmb3IgdGhlIGRhdGVwaWNrZXIuICovXG5cdFx0X2NoZWNrT2Zmc2V0OiBmdW5jdGlvbihpbnN0KSB7XG5cdFx0XHR2YXIgYmFzZSA9IChpbnN0LmVsZW0uaXMoJzpoaWRkZW4nKSAmJiBpbnN0LnRyaWdnZXIgPyBpbnN0LnRyaWdnZXIgOiBpbnN0LmVsZW0pO1xuXHRcdFx0dmFyIG9mZnNldCA9IGJhc2Uub2Zmc2V0KCk7XG5cdFx0XHR2YXIgYnJvd3NlcldpZHRoID0gJCh3aW5kb3cpLndpZHRoKCk7XG5cdFx0XHR2YXIgYnJvd3NlckhlaWdodCA9ICQod2luZG93KS5oZWlnaHQoKTtcblx0XHRcdGlmIChicm93c2VyV2lkdGggPT09IDApIHtcblx0XHRcdFx0cmV0dXJuIG9mZnNldDtcblx0XHRcdH1cblx0XHRcdHZhciBpc0ZpeGVkID0gZmFsc2U7XG5cdFx0XHQkKGluc3QuZWxlbSkucGFyZW50cygpLmVhY2goZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGlzRml4ZWQgfD0gJCh0aGlzKS5jc3MoJ3Bvc2l0aW9uJykgPT09ICdmaXhlZCc7XG5cdFx0XHRcdHJldHVybiAhaXNGaXhlZDtcblx0XHRcdH0pO1xuXHRcdFx0dmFyIHNjcm9sbFggPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsTGVmdCB8fCBkb2N1bWVudC5ib2R5LnNjcm9sbExlZnQ7XG5cdFx0XHR2YXIgc2Nyb2xsWSA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3AgfHwgZG9jdW1lbnQuYm9keS5zY3JvbGxUb3A7XG5cdFx0XHR2YXIgYWJvdmUgPSBvZmZzZXQudG9wIC0gKGlzRml4ZWQgPyBzY3JvbGxZIDogMCkgLSBpbnN0LmRpdi5vdXRlckhlaWdodCgpO1xuXHRcdFx0dmFyIGJlbG93ID0gb2Zmc2V0LnRvcCAtIChpc0ZpeGVkID8gc2Nyb2xsWSA6IDApICsgYmFzZS5vdXRlckhlaWdodCgpO1xuXHRcdFx0dmFyIGFsaWduTCA9IG9mZnNldC5sZWZ0IC0gKGlzRml4ZWQgPyBzY3JvbGxYIDogMCk7XG5cdFx0XHR2YXIgYWxpZ25SID0gb2Zmc2V0LmxlZnQgLSAoaXNGaXhlZCA/IHNjcm9sbFggOiAwKSArIGJhc2Uub3V0ZXJXaWR0aCgpIC0gaW5zdC5kaXYub3V0ZXJXaWR0aCgpO1xuXHRcdFx0dmFyIHRvb1dpZGUgPSAob2Zmc2V0LmxlZnQgLSBzY3JvbGxYICsgaW5zdC5kaXYub3V0ZXJXaWR0aCgpKSA+IGJyb3dzZXJXaWR0aDtcblx0XHRcdHZhciB0b29IaWdoID0gKG9mZnNldC50b3AgLSBzY3JvbGxZICsgaW5zdC5lbGVtLm91dGVySGVpZ2h0KCkgK1xuXHRcdFx0XHRpbnN0LmRpdi5vdXRlckhlaWdodCgpKSA+IGJyb3dzZXJIZWlnaHQ7XG5cdFx0XHRpbnN0LmRpdi5jc3MoJ3Bvc2l0aW9uJywgaXNGaXhlZCA/ICdmaXhlZCcgOiAnYWJzb2x1dGUnKTtcblx0XHRcdHZhciBhbGlnbm1lbnQgPSBpbnN0Lm9wdGlvbnMuYWxpZ25tZW50O1xuXHRcdFx0aWYgKGFsaWdubWVudCA9PT0gJ3RvcExlZnQnKSB7XG5cdFx0XHRcdG9mZnNldCA9IHtsZWZ0OiBhbGlnbkwsIHRvcDogYWJvdmV9O1xuXHRcdFx0fVxuXHRcdFx0ZWxzZSBpZiAoYWxpZ25tZW50ID09PSAndG9wUmlnaHQnKSB7XG5cdFx0XHRcdG9mZnNldCA9IHtsZWZ0OiBhbGlnblIsIHRvcDogYWJvdmV9O1xuXHRcdFx0fVxuXHRcdFx0ZWxzZSBpZiAoYWxpZ25tZW50ID09PSAnYm90dG9tTGVmdCcpIHtcblx0XHRcdFx0b2Zmc2V0ID0ge2xlZnQ6IGFsaWduTCwgdG9wOiBiZWxvd307XG5cdFx0XHR9XG5cdFx0XHRlbHNlIGlmIChhbGlnbm1lbnQgPT09ICdib3R0b21SaWdodCcpIHtcblx0XHRcdFx0b2Zmc2V0ID0ge2xlZnQ6IGFsaWduUiwgdG9wOiBiZWxvd307XG5cdFx0XHR9XG5cdFx0XHRlbHNlIGlmIChhbGlnbm1lbnQgPT09ICd0b3AnKSB7XG5cdFx0XHRcdG9mZnNldCA9IHtsZWZ0OiAoaW5zdC5vcHRpb25zLmlzUlRMIHx8IHRvb1dpZGUgPyBhbGlnblIgOiBhbGlnbkwpLCB0b3A6IGFib3ZlfTtcblx0XHRcdH1cblx0XHRcdGVsc2UgeyAvLyBib3R0b21cblx0XHRcdFx0b2Zmc2V0ID0ge2xlZnQ6IChpbnN0Lm9wdGlvbnMuaXNSVEwgfHwgdG9vV2lkZSA/IGFsaWduUiA6IGFsaWduTCksXG5cdFx0XHRcdFx0dG9wOiAodG9vSGlnaCA/IGFib3ZlIDogYmVsb3cpfTtcblx0XHRcdH1cblx0XHRcdG9mZnNldC5sZWZ0ID0gTWF0aC5tYXgoKGlzRml4ZWQgPyAwIDogc2Nyb2xsWCksIG9mZnNldC5sZWZ0KTtcblx0XHRcdG9mZnNldC50b3AgPSBNYXRoLm1heCgoaXNGaXhlZCA/IDAgOiBzY3JvbGxZKSwgb2Zmc2V0LnRvcCk7XG5cdFx0XHRyZXR1cm4gb2Zmc2V0O1xuXHRcdH0sXG5cblx0XHQvKiogQ2xvc2UgZGF0ZSBwaWNrZXIgaWYgY2xpY2tlZCBlbHNld2hlcmUuXG5cdFx0XHRAbWVtYmVyb2YgQ2FsZW5kYXJzUGlja2VyXG5cdFx0XHRAcHJpdmF0ZVxuXHRcdFx0QHBhcmFtIGV2ZW50IHtNb3VzZUV2ZW50fSBUaGUgbW91c2UgY2xpY2sgdG8gY2hlY2suICovXG5cdFx0X2NoZWNrRXh0ZXJuYWxDbGljazogZnVuY3Rpb24oZXZlbnQpIHtcblx0XHRcdGlmICghcGx1Z2luLmN1ckluc3QpIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0dmFyIGVsZW0gPSAkKGV2ZW50LnRhcmdldCk7XG5cdFx0XHRpZiAoZWxlbS5jbG9zZXN0KCcuJyArIHBsdWdpbi5fcG9wdXBDbGFzcyArICcsLicgKyBwbHVnaW4uX3RyaWdnZXJDbGFzcykubGVuZ3RoID09PSAwICYmXG5cdFx0XHRcdFx0IWVsZW0uaGFzQ2xhc3MocGx1Z2luLl9nZXRNYXJrZXIoKSkpIHtcblx0XHRcdFx0cGx1Z2luLmhpZGUocGx1Z2luLmN1ckluc3QpO1xuXHRcdFx0fVxuXHRcdH0sXG5cblx0XHQvKiogSGlkZSBhIHBvcHVwIGRhdGVwaWNrZXIuXG5cdFx0XHRAbWVtYmVyb2YgQ2FsZW5kYXJzUGlja2VyXG5cdFx0XHRAcGFyYW0gZWxlbSB7RWxlbWVudHxvYmplY3R9IFRoZSBjb250cm9sIHRvIHVzZSBvciB0aGUgY3VycmVudCBpbnN0YW5jZSBzZXR0aW5ncy5cblx0XHRcdEBwYXJhbSBpbW1lZGlhdGUge2Jvb2xlYW59IDxjb2RlPnRydWU8L2NvZGU+IHRvIGNsb3NlIGltbWVkaWF0ZWx5IHdpdGhvdXQgYW5pbWF0aW9uIChpbnRlcm5hbCkuXG5cdFx0XHRAZXhhbXBsZSAkKHNlbGVjdG9yKS5kYXRlcGljaygnaGlkZScpICovXG5cdFx0aGlkZTogZnVuY3Rpb24oZWxlbSwgaW1tZWRpYXRlKSB7XG5cdFx0XHRpZiAoIWVsZW0pIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0dmFyIGluc3QgPSB0aGlzLl9nZXRJbnN0KGVsZW0pO1xuXHRcdFx0aWYgKCQuaXNFbXB0eU9iamVjdChpbnN0KSkge1xuXHRcdFx0XHRpbnN0ID0gZWxlbTtcblx0XHRcdH1cblx0XHRcdGlmIChpbnN0ICYmIGluc3QgPT09IHBsdWdpbi5jdXJJbnN0KSB7XG5cdFx0XHRcdHZhciBzaG93QW5pbSA9IChpbW1lZGlhdGUgPyAnJyA6IGluc3Qub3B0aW9ucy5zaG93QW5pbSk7XG5cdFx0XHRcdHZhciBzaG93U3BlZWQgPSBpbnN0Lm9wdGlvbnMuc2hvd1NwZWVkO1xuXHRcdFx0XHRzaG93U3BlZWQgPSAoc2hvd1NwZWVkID09PSAnbm9ybWFsJyAmJiAkLnVpICYmXG5cdFx0XHRcdFx0cGFyc2VJbnQoJC51aS52ZXJzaW9uLnN1YnN0cmluZygyKSkgPj0gOCA/ICdfZGVmYXVsdCcgOiBzaG93U3BlZWQpO1xuXHRcdFx0XHR2YXIgcG9zdFByb2Nlc3MgPSBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRpZiAoIWluc3QuZGl2KSB7XG5cdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGluc3QuZGl2LnJlbW92ZSgpO1xuXHRcdFx0XHRcdGluc3QuZGl2ID0gbnVsbDtcblx0XHRcdFx0XHRwbHVnaW4uY3VySW5zdCA9IG51bGw7XG5cdFx0XHRcdFx0aWYgKCQuaXNGdW5jdGlvbihpbnN0Lm9wdGlvbnMub25DbG9zZSkpIHtcblx0XHRcdFx0XHRcdGluc3Qub3B0aW9ucy5vbkNsb3NlLmFwcGx5KGVsZW0sIFtpbnN0LnNlbGVjdGVkRGF0ZXNdKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH07XG5cdFx0XHRcdGluc3QuZGl2LnN0b3AoKTtcblx0XHRcdFx0aWYgKCQuZWZmZWN0cyAmJiAoJC5lZmZlY3RzW3Nob3dBbmltXSB8fCAoJC5lZmZlY3RzLmVmZmVjdCAmJiAkLmVmZmVjdHMuZWZmZWN0W3Nob3dBbmltXSkpKSB7XG5cdFx0XHRcdFx0aW5zdC5kaXYuaGlkZShzaG93QW5pbSwgaW5zdC5vcHRpb25zLnNob3dPcHRpb25zLCBzaG93U3BlZWQsIHBvc3RQcm9jZXNzKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHR2YXIgaGlkZUFuaW0gPSAoc2hvd0FuaW0gPT09ICdzbGlkZURvd24nID8gJ3NsaWRlVXAnIDpcblx0XHRcdFx0XHRcdChzaG93QW5pbSA9PT0gJ2ZhZGVJbicgPyAnZmFkZU91dCcgOiAnaGlkZScpKTtcblx0XHRcdFx0XHRpbnN0LmRpdltoaWRlQW5pbV0oKHNob3dBbmltID8gc2hvd1NwZWVkIDogJycpLCBwb3N0UHJvY2Vzcyk7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKCFzaG93QW5pbSkge1xuXHRcdFx0XHRcdHBvc3RQcm9jZXNzKCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9LFxuXG5cdFx0LyoqIEhhbmRsZSBrZXlzdHJva2VzIGluIHRoZSBkYXRlcGlja2VyLlxuXHRcdFx0QG1lbWJlcm9mIENhbGVuZGFyc1BpY2tlclxuXHRcdFx0QHByaXZhdGVcblx0XHRcdEBwYXJhbSBldmVudCB7S2V5RXZlbnR9IFRoZSBrZXlzdHJva2UuXG5cdFx0XHRAcmV0dXJuIHtib29sZWFufSA8Y29kZT50cnVlPC9jb2RlPiBpZiBub3QgaGFuZGxlZCwgPGNvZGU+ZmFsc2U8L2NvZGU+IGlmIGhhbmRsZWQuICovXG5cdFx0X2tleURvd246IGZ1bmN0aW9uKGV2ZW50KSB7XG5cdFx0XHR2YXIgZWxlbSA9IChldmVudC5kYXRhICYmIGV2ZW50LmRhdGEuZWxlbSkgfHwgZXZlbnQudGFyZ2V0O1xuXHRcdFx0dmFyIGluc3QgPSBwbHVnaW4uX2dldEluc3QoZWxlbSk7XG5cdFx0XHR2YXIgaGFuZGxlZCA9IGZhbHNlO1xuXHRcdFx0aWYgKGluc3QuaW5saW5lIHx8IGluc3QuZGl2KSB7XG5cdFx0XHRcdGlmIChldmVudC5rZXlDb2RlID09PSA5KSB7IC8vIFRhYiAtIGNsb3NlXG5cdFx0XHRcdFx0cGx1Z2luLmhpZGUoZWxlbSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0ZWxzZSBpZiAoZXZlbnQua2V5Q29kZSA9PT0gMTMpIHsgLy8gRW50ZXIgLSBzZWxlY3Rcblx0XHRcdFx0XHRwbHVnaW4uc2VsZWN0RGF0ZShlbGVtLFxuXHRcdFx0XHRcdFx0JCgnYS4nICsgaW5zdC5vcHRpb25zLnJlbmRlcmVyLmhpZ2hsaWdodGVkQ2xhc3MsIGluc3QuZGl2KVswXSk7XG5cdFx0XHRcdFx0aGFuZGxlZCA9IHRydWU7XG5cdFx0XHRcdH1cblx0XHRcdFx0ZWxzZSB7IC8vIENvbW1hbmQga2V5c3Ryb2tlc1xuXHRcdFx0XHRcdHZhciBjb21tYW5kcyA9IGluc3Qub3B0aW9ucy5jb21tYW5kcztcblx0XHRcdFx0XHRmb3IgKHZhciBuYW1lIGluIGNvbW1hbmRzKSB7XG5cdFx0XHRcdFx0XHR2YXIgY29tbWFuZCA9IGNvbW1hbmRzW25hbWVdO1xuXHRcdFx0XHRcdFx0aWYgKGNvbW1hbmQua2V5c3Ryb2tlLmtleUNvZGUgPT09IGV2ZW50LmtleUNvZGUgJiZcblx0XHRcdFx0XHRcdFx0XHQhIWNvbW1hbmQua2V5c3Ryb2tlLmN0cmxLZXkgPT09ICEhKGV2ZW50LmN0cmxLZXkgfHwgZXZlbnQubWV0YUtleSkgJiZcblx0XHRcdFx0XHRcdFx0XHQhIWNvbW1hbmQua2V5c3Ryb2tlLmFsdEtleSA9PT0gZXZlbnQuYWx0S2V5ICYmXG5cdFx0XHRcdFx0XHRcdFx0ISFjb21tYW5kLmtleXN0cm9rZS5zaGlmdEtleSA9PT0gZXZlbnQuc2hpZnRLZXkpIHtcblx0XHRcdFx0XHRcdFx0cGx1Z2luLnBlcmZvcm1BY3Rpb24oZWxlbSwgbmFtZSk7XG5cdFx0XHRcdFx0XHRcdGhhbmRsZWQgPSB0cnVlO1xuXHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGVsc2UgeyAvLyBTaG93IG9uICdjdXJyZW50JyBrZXlzdHJva2Vcblx0XHRcdFx0dmFyIGNvbW1hbmQgPSBpbnN0Lm9wdGlvbnMuY29tbWFuZHMuY3VycmVudDtcblx0XHRcdFx0aWYgKGNvbW1hbmQua2V5c3Ryb2tlLmtleUNvZGUgPT09IGV2ZW50LmtleUNvZGUgJiZcblx0XHRcdFx0XHRcdCEhY29tbWFuZC5rZXlzdHJva2UuY3RybEtleSA9PT0gISEoZXZlbnQuY3RybEtleSB8fCBldmVudC5tZXRhS2V5KSAmJlxuXHRcdFx0XHRcdFx0ISFjb21tYW5kLmtleXN0cm9rZS5hbHRLZXkgPT09IGV2ZW50LmFsdEtleSAmJlxuXHRcdFx0XHRcdFx0ISFjb21tYW5kLmtleXN0cm9rZS5zaGlmdEtleSA9PT0gZXZlbnQuc2hpZnRLZXkpIHtcblx0XHRcdFx0XHRwbHVnaW4uc2hvdyhlbGVtKTtcblx0XHRcdFx0XHRoYW5kbGVkID0gdHJ1ZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0aW5zdC5jdHJsS2V5ID0gKChldmVudC5rZXlDb2RlIDwgNDggJiYgZXZlbnQua2V5Q29kZSAhPT0gMzIpIHx8IGV2ZW50LmN0cmxLZXkgfHwgZXZlbnQubWV0YUtleSk7XG5cdFx0XHRpZiAoaGFuZGxlZCkge1xuXHRcdFx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdFx0XHRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblx0XHRcdH1cblx0XHRcdHJldHVybiAhaGFuZGxlZDtcblx0XHR9LFxuXG5cdFx0LyoqIEZpbHRlciBrZXlzdHJva2VzIGluIHRoZSBkYXRlcGlja2VyLlxuXHRcdFx0QG1lbWJlcm9mIENhbGVuZGFyc1BpY2tlclxuXHRcdFx0QHByaXZhdGVcblx0XHRcdEBwYXJhbSBldmVudCB7S2V5RXZlbnR9IFRoZSBrZXlzdHJva2UuXG5cdFx0XHRAcmV0dXJuIHtib29sZWFufSA8Y29kZT50cnVlPC9jb2RlPiBpZiBhbGxvd2VkLCA8Y29kZT5mYWxzZTwvY29kZT4gaWYgbm90IGFsbG93ZWQuICovXG5cdFx0X2tleVByZXNzOiBmdW5jdGlvbihldmVudCkge1xuXHRcdFx0dmFyIGluc3QgPSBwbHVnaW4uX2dldEluc3QoKGV2ZW50LmRhdGEgJiYgZXZlbnQuZGF0YS5lbGVtKSB8fCBldmVudC50YXJnZXQpO1xuXHRcdFx0aWYgKCEkLmlzRW1wdHlPYmplY3QoaW5zdCkgJiYgaW5zdC5vcHRpb25zLmNvbnN0cmFpbklucHV0KSB7XG5cdFx0XHRcdHZhciBjaCA9IFN0cmluZy5mcm9tQ2hhckNvZGUoZXZlbnQua2V5Q29kZSB8fCBldmVudC5jaGFyQ29kZSk7XG5cdFx0XHRcdHZhciBhbGxvd2VkQ2hhcnMgPSBwbHVnaW4uX2FsbG93ZWRDaGFycyhpbnN0KTtcblx0XHRcdFx0cmV0dXJuIChldmVudC5tZXRhS2V5IHx8IGluc3QuY3RybEtleSB8fCBjaCA8ICcgJyB8fFxuXHRcdFx0XHRcdCFhbGxvd2VkQ2hhcnMgfHwgYWxsb3dlZENoYXJzLmluZGV4T2YoY2gpID4gLTEpO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fSxcblxuXHRcdC8qKiBEZXRlcm1pbmUgdGhlIHNldCBvZiBjaGFyYWN0ZXJzIGFsbG93ZWQgYnkgdGhlIGRhdGUgZm9ybWF0LlxuXHRcdFx0QG1lbWJlcm9mIENhbGVuZGFyc1BpY2tlclxuXHRcdFx0QHByaXZhdGVcblx0XHRcdEBwYXJhbSBpbnN0IHtvYmplY3R9IFRoZSBjdXJyZW50IGluc3RhbmNlIHNldHRpbmdzLlxuXHRcdFx0QHJldHVybiB7c3RyaW5nfSBUaGUgc2V0IG9mIGFsbG93ZWQgY2hhcmFjdGVycywgb3IgPGNvZGU+bnVsbDwvY29kZT4gaWYgYW55dGhpbmcgYWxsb3dlZC4gKi9cblx0XHRfYWxsb3dlZENoYXJzOiBmdW5jdGlvbihpbnN0KSB7XG5cdFx0XHR2YXIgYWxsb3dlZENoYXJzID0gKGluc3Qub3B0aW9ucy5tdWx0aVNlbGVjdCA/IGluc3Qub3B0aW9ucy5tdWx0aVNlcGFyYXRvciA6XG5cdFx0XHRcdChpbnN0Lm9wdGlvbnMucmFuZ2VTZWxlY3QgPyBpbnN0Lm9wdGlvbnMucmFuZ2VTZXBhcmF0b3IgOiAnJykpO1xuXHRcdFx0dmFyIGxpdGVyYWwgPSBmYWxzZTtcblx0XHRcdHZhciBoYXNOdW0gPSBmYWxzZTtcblx0XHRcdHZhciBkYXRlRm9ybWF0ID0gaW5zdC5nZXQoJ2RhdGVGb3JtYXQnKTtcblx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgZGF0ZUZvcm1hdC5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHR2YXIgY2ggPSBkYXRlRm9ybWF0LmNoYXJBdChpKTtcblx0XHRcdFx0aWYgKGxpdGVyYWwpIHtcblx0XHRcdFx0XHRpZiAoY2ggPT09IFwiJ1wiICYmIGRhdGVGb3JtYXQuY2hhckF0KGkgKyAxKSAhPT0gXCInXCIpIHtcblx0XHRcdFx0XHRcdGxpdGVyYWwgPSBmYWxzZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0XHRhbGxvd2VkQ2hhcnMgKz0gY2g7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdHN3aXRjaCAoY2gpIHtcblx0XHRcdFx0XHRcdGNhc2UgJ2QnOiBjYXNlICdtJzogY2FzZSAnbyc6IGNhc2UgJ3cnOlxuXHRcdFx0XHRcdFx0XHRhbGxvd2VkQ2hhcnMgKz0gKGhhc051bSA/ICcnIDogJzAxMjM0NTY3ODknKTsgaGFzTnVtID0gdHJ1ZTsgYnJlYWs7XG5cdFx0XHRcdFx0XHRjYXNlICd5JzogY2FzZSAnQCc6IGNhc2UgJyEnOlxuXHRcdFx0XHRcdFx0XHRhbGxvd2VkQ2hhcnMgKz0gKGhhc051bSA/ICcnIDogJzAxMjM0NTY3ODknKSArICctJzsgaGFzTnVtID0gdHJ1ZTsgYnJlYWs7XG5cdFx0XHRcdFx0XHRjYXNlICdKJzpcblx0XHRcdFx0XHRcdFx0YWxsb3dlZENoYXJzICs9IChoYXNOdW0gPyAnJyA6ICcwMTIzNDU2Nzg5JykgKyAnLS4nOyBoYXNOdW0gPSB0cnVlOyBicmVhaztcblx0XHRcdFx0XHRcdGNhc2UgJ0QnOiBjYXNlICdNJzogY2FzZSAnWSc6XG5cdFx0XHRcdFx0XHRcdHJldHVybiBudWxsOyAvLyBBY2NlcHQgYW55dGhpbmdcblx0XHRcdFx0XHRcdGNhc2UgXCInXCI6XG5cdFx0XHRcdFx0XHRcdGlmIChkYXRlRm9ybWF0LmNoYXJBdChpICsgMSkgPT09IFwiJ1wiKSB7XG5cdFx0XHRcdFx0XHRcdFx0YWxsb3dlZENoYXJzICs9IFwiJ1wiO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdGxpdGVyYWwgPSB0cnVlO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRcdFx0YWxsb3dlZENoYXJzICs9IGNoO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIGFsbG93ZWRDaGFycztcblx0XHR9LFxuXG5cdFx0LyoqIFN5bmNocm9uaXNlIGRhdGVwaWNrZXIgd2l0aCB0aGUgZmllbGQuXG5cdFx0XHRAbWVtYmVyb2YgQ2FsZW5kYXJzUGlja2VyXG5cdFx0XHRAcHJpdmF0ZVxuXHRcdFx0QHBhcmFtIGV2ZW50IHtLZXlFdmVudH0gVGhlIGtleXN0cm9rZS5cblx0XHRcdEByZXR1cm4ge2Jvb2xlYW59IDxjb2RlPnRydWU8L2NvZGU+IGlmIGFsbG93ZWQsIDxjb2RlPmZhbHNlPC9jb2RlPiBpZiBub3QgYWxsb3dlZC4gKi9cblx0XHRfa2V5VXA6IGZ1bmN0aW9uKGV2ZW50KSB7XG5cdFx0XHR2YXIgZWxlbSA9IChldmVudC5kYXRhICYmIGV2ZW50LmRhdGEuZWxlbSkgfHwgZXZlbnQudGFyZ2V0O1xuXHRcdFx0dmFyIGluc3QgPSBwbHVnaW4uX2dldEluc3QoZWxlbSk7XG5cdFx0XHRpZiAoISQuaXNFbXB0eU9iamVjdChpbnN0KSAmJiAhaW5zdC5jdHJsS2V5ICYmIGluc3QubGFzdFZhbCAhPT0gaW5zdC5lbGVtLnZhbCgpKSB7XG5cdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0dmFyIGRhdGVzID0gcGx1Z2luLl9leHRyYWN0RGF0ZXMoaW5zdCwgaW5zdC5lbGVtLnZhbCgpKTtcblx0XHRcdFx0XHRpZiAoZGF0ZXMubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRcdFx0cGx1Z2luLnNldERhdGUoZWxlbSwgZGF0ZXMsIG51bGwsIHRydWUpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRjYXRjaCAoZXZlbnQpIHtcblx0XHRcdFx0XHQvLyBJZ25vcmVcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fSxcblxuXHRcdC8qKiBJbmNyZW1lbnQvZGVjcmVtZW50IG1vbnRoL3llYXIgb24gbW91c2Ugd2hlZWwgYWN0aXZpdHkuXG5cdFx0XHRAbWVtYmVyb2YgQ2FsZW5kYXJzUGlja2VyXG5cdFx0XHRAcHJpdmF0ZVxuXHRcdFx0QHBhcmFtIGV2ZW50IHtldmVudH0gVGhlIG1vdXNlIHdoZWVsIGV2ZW50LlxuXHRcdFx0QHBhcmFtIGRlbHRhIHtudW1iZXJ9IFRoZSBhbW91bnQgb2YgY2hhbmdlLiAqL1xuXHRcdF9kb01vdXNlV2hlZWw6IGZ1bmN0aW9uKGV2ZW50LCBkZWx0YSkge1xuXHRcdFx0dmFyIGVsZW0gPSAocGx1Z2luLmN1ckluc3QgJiYgcGx1Z2luLmN1ckluc3QuZWxlbVswXSkgfHxcblx0XHRcdFx0JChldmVudC50YXJnZXQpLmNsb3Nlc3QoJy4nICsgcGx1Z2luLl9nZXRNYXJrZXIoKSlbMF07XG5cdFx0XHRpZiAocGx1Z2luLmlzRGlzYWJsZWQoZWxlbSkpIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0dmFyIGluc3QgPSBwbHVnaW4uX2dldEluc3QoZWxlbSk7XG5cdFx0XHRpZiAoaW5zdC5vcHRpb25zLnVzZU1vdXNlV2hlZWwpIHtcblx0XHRcdFx0ZGVsdGEgPSAoZGVsdGEgPCAwID8gLTEgOiArMSk7XG5cdFx0XHRcdHBsdWdpbi5jaGFuZ2VNb250aChlbGVtLCAtaW5zdC5vcHRpb25zW2V2ZW50LmN0cmxLZXkgPyAnbW9udGhzVG9KdW1wJyA6ICdtb250aHNUb1N0ZXAnXSAqIGRlbHRhKTtcblx0XHRcdH1cblx0XHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cdFx0fSxcblxuXHRcdC8qKiBDbGVhciBhbiBpbnB1dCBhbmQgY2xvc2UgYSBwb3B1cCBkYXRlcGlja2VyLlxuXHRcdFx0QG1lbWJlcm9mIENhbGVuZGFyc1BpY2tlclxuXHRcdFx0QHBhcmFtIGVsZW0ge0VsZW1lbnR9IFRoZSBjb250cm9sIHRvIHVzZS5cblx0XHRcdEBleGFtcGxlICQoc2VsZWN0b3IpLmRhdGVwaWNrKCdjbGVhcicpICovXG5cdFx0Y2xlYXI6IGZ1bmN0aW9uKGVsZW0pIHtcblx0XHRcdHZhciBpbnN0ID0gdGhpcy5fZ2V0SW5zdChlbGVtKTtcblx0XHRcdGlmICghJC5pc0VtcHR5T2JqZWN0KGluc3QpKSB7XG5cdFx0XHRcdGluc3Quc2VsZWN0ZWREYXRlcyA9IFtdO1xuXHRcdFx0XHR0aGlzLmhpZGUoZWxlbSk7XG5cdFx0XHRcdHZhciBkZWZhdWx0RGF0ZSA9IGluc3QuZ2V0KCdkZWZhdWx0RGF0ZScpO1xuXHRcdFx0XHRpZiAoaW5zdC5vcHRpb25zLnNlbGVjdERlZmF1bHREYXRlICYmIGRlZmF1bHREYXRlKSB7XG5cdFx0XHRcdFx0dGhpcy5zZXREYXRlKGVsZW0sIChkZWZhdWx0RGF0ZSB8fCBpbnN0Lm9wdGlvbnMuY2FsZW5kYXIudG9kYXkoKSkubmV3RGF0ZSgpKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHR0aGlzLl91cGRhdGVJbnB1dChlbGVtKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0sXG5cblx0XHQvKiogUmV0cmlldmUgdGhlIHNlbGVjdGVkIGRhdGUocykgZm9yIGEgZGF0ZXBpY2tlci5cblx0XHRcdEBtZW1iZXJvZiBDYWxlbmRhcnNQaWNrZXJcblx0XHRcdEBwYXJhbSBlbGVtIHtFbGVtZW50fSBUaGUgY29udHJvbCB0byBleGFtaW5lLlxuXHRcdFx0QHJldHVybiB7Q0RhdGVbXX0gVGhlIHNlbGVjdGVkIGRhdGUocykuXG5cdFx0XHRAZXhhbXBsZSB2YXIgZGF0ZXMgPSAkKHNlbGVjdG9yKS5kYXRlcGljaygnZ2V0RGF0ZScpICovXG5cdFx0Z2V0RGF0ZTogZnVuY3Rpb24oZWxlbSkge1xuXHRcdFx0dmFyIGluc3QgPSB0aGlzLl9nZXRJbnN0KGVsZW0pO1xuXHRcdFx0cmV0dXJuICghJC5pc0VtcHR5T2JqZWN0KGluc3QpID8gaW5zdC5zZWxlY3RlZERhdGVzIDogW10pO1xuXHRcdH0sXG5cblx0XHQvKiogU2V0IHRoZSBzZWxlY3RlZCBkYXRlKHMpIGZvciBhIGRhdGVwaWNrZXIuXG5cdFx0XHRAbWVtYmVyb2YgQ2FsZW5kYXJzUGlja2VyXG5cdFx0XHRAcGFyYW0gZWxlbSB7RWxlbWVudH0gdGhlIGNvbnRyb2wgdG8gZXhhbWluZS5cblx0XHRcdEBwYXJhbSBkYXRlcyB7Q0RhdGV8bnVtYmVyfHN0cmluZ3xhcnJheX0gdGhlIHNlbGVjdGVkIGRhdGUocykuXG5cdFx0XHRAcGFyYW0gW2VuZERhdGVdIHtDRGF0ZXxudW1iZXJ8c3RyaW5nfSB0aGUgZW5kaW5nIGRhdGUgZm9yIGEgcmFuZ2UuXG5cdFx0XHRAcGFyYW0gW2tleVVwXSB7Ym9vbGVhbn0gPGNvZGU+dHJ1ZTwvY29kZT4gaWYgY29taW5nIGZyb20gPGNvZGU+a2V5VXA8L2NvZGU+IHByb2Nlc3NpbmcgKGludGVybmFsKS5cblx0XHRcdEBwYXJhbSBbc2V0T3B0XSB7Ym9vbGVhbn0gPGNvZGU+dHJ1ZTwvY29kZT4gaWYgY29taW5nIGZyb20gb3B0aW9uIHByb2Nlc3NpbmcgKGludGVybmFsKS5cblx0XHRcdEBleGFtcGxlICQoc2VsZWN0b3IpLmRhdGVwaWNrKCdzZXREYXRlJywgbmV3IERhdGUoMjAxNCwgMTItMSwgMjUpKVxuICQoc2VsZWN0b3IpLmRhdGVwaWNrKCdzZXREYXRlJywgJzEyLzI1LzIwMTQnLCAnMDEvMDEvMjAxNScpXG4gJChzZWxlY3RvcikuZGF0ZXBpY2soJ3NldERhdGUnLCBbZGF0ZTEsIGRhdGUyLCBkYXRlM10pICovXG5cdFx0c2V0RGF0ZTogZnVuY3Rpb24oZWxlbSwgZGF0ZXMsIGVuZERhdGUsIGtleVVwLCBzZXRPcHQpIHtcblx0XHRcdHZhciBpbnN0ID0gdGhpcy5fZ2V0SW5zdChlbGVtKTtcblx0XHRcdGlmICghJC5pc0VtcHR5T2JqZWN0KGluc3QpKSB7XG5cdFx0XHRcdGlmICghJC5pc0FycmF5KGRhdGVzKSkge1xuXHRcdFx0XHRcdGRhdGVzID0gW2RhdGVzXTtcblx0XHRcdFx0XHRpZiAoZW5kRGF0ZSkge1xuXHRcdFx0XHRcdFx0ZGF0ZXMucHVzaChlbmREYXRlKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0dmFyIG1pbkRhdGUgPSBpbnN0LmdldCgnbWluRGF0ZScpO1xuXHRcdFx0XHR2YXIgbWF4RGF0ZSA9IGluc3QuZ2V0KCdtYXhEYXRlJyk7XG5cdFx0XHRcdHZhciBjdXJEYXRlID0gaW5zdC5zZWxlY3RlZERhdGVzWzBdO1xuXHRcdFx0XHRpbnN0LnNlbGVjdGVkRGF0ZXMgPSBbXTtcblx0XHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBkYXRlcy5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRcdHZhciBkYXRlID0gaW5zdC5vcHRpb25zLmNhbGVuZGFyLmRldGVybWluZURhdGUoXG5cdFx0XHRcdFx0XHRkYXRlc1tpXSwgbnVsbCwgY3VyRGF0ZSwgaW5zdC5nZXQoJ2RhdGVGb3JtYXQnKSwgaW5zdC5nZXRDb25maWcoKSk7XG5cdFx0XHRcdFx0aWYgKGRhdGUpIHtcblx0XHRcdFx0XHRcdGlmICgoIW1pbkRhdGUgfHwgZGF0ZS5jb21wYXJlVG8obWluRGF0ZSkgIT09IC0xKSAmJlxuXHRcdFx0XHRcdFx0XHRcdCghbWF4RGF0ZSB8fCBkYXRlLmNvbXBhcmVUbyhtYXhEYXRlKSAhPT0gKzEpKSB7XG5cdFx0XHRcdFx0XHRcdHZhciBmb3VuZCA9IGZhbHNlO1xuXHRcdFx0XHRcdFx0XHRmb3IgKHZhciBqID0gMDsgaiA8IGluc3Quc2VsZWN0ZWREYXRlcy5sZW5ndGg7IGorKykge1xuXHRcdFx0XHRcdFx0XHRcdGlmIChpbnN0LnNlbGVjdGVkRGF0ZXNbal0uY29tcGFyZVRvKGRhdGUpID09PSAwKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRmb3VuZCA9IHRydWU7XG5cdFx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0aWYgKCFmb3VuZCkge1xuXHRcdFx0XHRcdFx0XHRcdGluc3Quc2VsZWN0ZWREYXRlcy5wdXNoKGRhdGUpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdGluc3Quc2VsZWN0ZWREYXRlcy5zcGxpY2UoaW5zdC5vcHRpb25zLm11bHRpU2VsZWN0IHx8XG5cdFx0XHRcdFx0KGluc3Qub3B0aW9ucy5yYW5nZVNlbGVjdCA/IDIgOiAxKSwgaW5zdC5zZWxlY3RlZERhdGVzLmxlbmd0aCk7XG5cdFx0XHRcdGlmIChpbnN0Lm9wdGlvbnMucmFuZ2VTZWxlY3QpIHtcblx0XHRcdFx0XHRzd2l0Y2ggKGluc3Quc2VsZWN0ZWREYXRlcy5sZW5ndGgpIHtcblx0XHRcdFx0XHRcdGNhc2UgMTogaW5zdC5zZWxlY3RlZERhdGVzWzFdID0gaW5zdC5zZWxlY3RlZERhdGVzWzBdOyBicmVhaztcblx0XHRcdFx0XHRcdGNhc2UgMjogaW5zdC5zZWxlY3RlZERhdGVzWzFdID1cblx0XHRcdFx0XHRcdFx0KGluc3Quc2VsZWN0ZWREYXRlc1swXS5jb21wYXJlVG8oaW5zdC5zZWxlY3RlZERhdGVzWzFdKSA9PT0gKzEgP1xuXHRcdFx0XHRcdFx0XHRpbnN0LnNlbGVjdGVkRGF0ZXNbMF0gOiBpbnN0LnNlbGVjdGVkRGF0ZXNbMV0pOyBicmVhaztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aW5zdC5waWNraW5nUmFuZ2UgPSBmYWxzZTtcblx0XHRcdFx0fVxuXHRcdFx0XHRpbnN0LnByZXZEYXRlID0gKGluc3QuZHJhd0RhdGUgPyBpbnN0LmRyYXdEYXRlLm5ld0RhdGUoKSA6IG51bGwpO1xuXHRcdFx0XHRpbnN0LmRyYXdEYXRlID0gdGhpcy5fY2hlY2tNaW5NYXgoKGluc3Quc2VsZWN0ZWREYXRlc1swXSB8fFxuXHRcdFx0XHRcdGluc3QuZ2V0KCdkZWZhdWx0RGF0ZScpIHx8IGluc3Qub3B0aW9ucy5jYWxlbmRhci50b2RheSgpKS5uZXdEYXRlKCksIGluc3QpO1xuXHRcdFx0XHRpZiAoIXNldE9wdCkge1xuXHRcdFx0XHRcdHRoaXMuX3VwZGF0ZShlbGVtKTtcblx0XHRcdFx0XHR0aGlzLl91cGRhdGVJbnB1dChlbGVtLCBrZXlVcCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9LFxuXG5cdFx0LyoqIERldGVybWluZSB3aGV0aGVyIGEgZGF0ZSBpcyBzZWxlY3RhYmxlIGZvciB0aGlzIGRhdGVwaWNrZXIuXG5cdFx0XHRAbWVtYmVyb2YgQ2FsZW5kYXJzUGlja2VyXG5cdFx0XHRAcHJpdmF0ZVxuXHRcdFx0QHBhcmFtIGVsZW0ge0VsZW1lbnR9IFRoZSBjb250cm9sIHRvIGNoZWNrLlxuXHRcdFx0QHBhcmFtIGRhdGUge0NEYXRlfHN0cmluZ3xudW1iZXJ9IFRoZSBkYXRlIHRvIGNoZWNrLlxuXHRcdFx0QHJldHVybiB7Ym9vbGVhbn0gPGNvZGU+dHJ1ZTwvY29kZT4gaWYgc2VsZWN0YWJsZSwgPGNvZGU+ZmFsc2U8L2NvZGU+IGlmIG5vdC5cblx0XHRcdEBleGFtcGxlIHZhciBzZWxlY3RhYmxlID0gJChzZWxlY3RvcikuZGF0ZXBpY2soJ2lzU2VsZWN0YWJsZScsIGRhdGUpICovXG5cdFx0aXNTZWxlY3RhYmxlOiBmdW5jdGlvbihlbGVtLCBkYXRlKSB7XG5cdFx0XHR2YXIgaW5zdCA9IHRoaXMuX2dldEluc3QoZWxlbSk7XG5cdFx0XHRpZiAoJC5pc0VtcHR5T2JqZWN0KGluc3QpKSB7XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH1cblx0XHRcdGRhdGUgPSBpbnN0Lm9wdGlvbnMuY2FsZW5kYXIuZGV0ZXJtaW5lRGF0ZShkYXRlLFxuXHRcdFx0XHRpbnN0LnNlbGVjdGVkRGF0ZXNbMF0gfHwgaW5zdC5vcHRpb25zLmNhbGVuZGFyLnRvZGF5KCksIG51bGwsXG5cdFx0XHRcdGluc3Qub3B0aW9ucy5kYXRlRm9ybWF0LCBpbnN0LmdldENvbmZpZygpKTtcblx0XHRcdHJldHVybiB0aGlzLl9pc1NlbGVjdGFibGUoZWxlbSwgZGF0ZSwgaW5zdC5vcHRpb25zLm9uRGF0ZSxcblx0XHRcdFx0aW5zdC5nZXQoJ21pbkRhdGUnKSwgaW5zdC5nZXQoJ21heERhdGUnKSk7XG5cdFx0fSxcblxuXHRcdC8qKiBJbnRlcm5hbGx5IGRldGVybWluZSB3aGV0aGVyIGEgZGF0ZSBpcyBzZWxlY3RhYmxlIGZvciB0aGlzIGRhdGVwaWNrZXIuXG5cdFx0XHRAbWVtYmVyb2YgQ2FsZW5kYXJzUGlja2VyXG5cdFx0XHRAcHJpdmF0ZVxuXHRcdFx0QHBhcmFtIGVsZW0ge0VsZW1lbnR9IHRoZSBjb250cm9sIHRvIGNoZWNrLlxuXHRcdFx0QHBhcmFtIGRhdGUge0NEYXRlfSBUaGUgZGF0ZSB0byBjaGVjay5cblx0XHRcdEBwYXJhbSBvbkRhdGUge2Z1bmN0aW9ufGJvb2xlYW59IEFueSA8Y29kZT5vbkRhdGU8L2NvZGU+IGNhbGxiYWNrIG9yIDxjb2RlPmNhbGxiYWNrLnNlbGVjdGFibGU8L2NvZGU+LlxuXHRcdFx0QHBhcmFtIG1pbkRhdGUge0NEYXRlfSBUaGUgbWluaW11bSBhbGxvd2VkIGRhdGUuXG5cdFx0XHRAcGFyYW0gbWF4RGF0ZSB7Q0RhdGV9IFRoZSBtYXhpbXVtIGFsbG93ZWQgZGF0ZS5cblx0XHRcdEByZXR1cm4ge2Jvb2xlYW59IDxjb2RlPnRydWU8L2NvZGU+IGlmIHNlbGVjdGFibGUsIDxjb2RlPmZhbHNlPC9jb2RlPiBpZiBub3QuICovXG5cdFx0X2lzU2VsZWN0YWJsZTogZnVuY3Rpb24oZWxlbSwgZGF0ZSwgb25EYXRlLCBtaW5EYXRlLCBtYXhEYXRlKSB7XG5cdFx0XHR2YXIgZGF0ZUluZm8gPSAodHlwZW9mIG9uRGF0ZSA9PT0gJ2Jvb2xlYW4nID8ge3NlbGVjdGFibGU6IG9uRGF0ZX0gOlxuXHRcdFx0XHQoISQuaXNGdW5jdGlvbihvbkRhdGUpID8ge30gOiBvbkRhdGUuYXBwbHkoZWxlbSwgW2RhdGUsIHRydWVdKSkpO1xuXHRcdFx0cmV0dXJuIChkYXRlSW5mby5zZWxlY3RhYmxlICE9PSBmYWxzZSkgJiZcblx0XHRcdFx0KCFtaW5EYXRlIHx8IGRhdGUudG9KRCgpID49IG1pbkRhdGUudG9KRCgpKSAmJiAoIW1heERhdGUgfHwgZGF0ZS50b0pEKCkgPD0gbWF4RGF0ZS50b0pEKCkpO1xuXHRcdH0sXG5cblx0XHQvKiogUGVyZm9ybSBhIG5hbWVkIGFjdGlvbiBmb3IgYSBkYXRlcGlja2VyLlxuXHRcdFx0QG1lbWJlcm9mIENhbGVuZGFyc1BpY2tlclxuXHRcdFx0QHBhcmFtIGVsZW0ge2VsZW1lbnR9IFRoZSBjb250cm9sIHRvIGFmZmVjdC5cblx0XHRcdEBwYXJhbSBhY3Rpb24ge3N0cmluZ30gVGhlIG5hbWUgb2YgdGhlIGFjdGlvbi4gKi9cblx0XHRwZXJmb3JtQWN0aW9uOiBmdW5jdGlvbihlbGVtLCBhY3Rpb24pIHtcblx0XHRcdHZhciBpbnN0ID0gdGhpcy5fZ2V0SW5zdChlbGVtKTtcblx0XHRcdGlmICghJC5pc0VtcHR5T2JqZWN0KGluc3QpICYmICF0aGlzLmlzRGlzYWJsZWQoZWxlbSkpIHtcblx0XHRcdFx0dmFyIGNvbW1hbmRzID0gaW5zdC5vcHRpb25zLmNvbW1hbmRzO1xuXHRcdFx0XHRpZiAoY29tbWFuZHNbYWN0aW9uXSAmJiBjb21tYW5kc1thY3Rpb25dLmVuYWJsZWQuYXBwbHkoZWxlbSwgW2luc3RdKSkge1xuXHRcdFx0XHRcdGNvbW1hbmRzW2FjdGlvbl0uYWN0aW9uLmFwcGx5KGVsZW0sIFtpbnN0XSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9LFxuXG5cdFx0LyoqIFNldCB0aGUgY3VycmVudGx5IHNob3duIG1vbnRoLCBkZWZhdWx0aW5nIHRvIHRvZGF5J3MuXG5cdFx0XHRAbWVtYmVyb2YgQ2FsZW5kYXJzUGlja2VyXG5cdFx0XHRAcGFyYW0gZWxlbSB7RWxlbWVudH0gVGhlIGNvbnRyb2wgdG8gYWZmZWN0LlxuXHRcdFx0QHBhcmFtIFt5ZWFyXSB7bnVtYmVyfSBUaGUgeWVhciB0byBzaG93LlxuXHRcdFx0QHBhcmFtIFttb250aF0ge251bWJlcn0gVGhlIG1vbnRoIHRvIHNob3cgKDEtMTIpLlxuXHRcdFx0QHBhcmFtIFtkYXldIHtudW1iZXJ9IFRoZSBkYXkgdG8gc2hvdy5cblx0XHRcdEBleGFtcGxlICQoc2VsZWN0b3IpLmRhdGVwaWNrKCdzaG93TW9udGgnLCAyMDE0LCAxMiwgMjUpICovXG5cdFx0c2hvd01vbnRoOiBmdW5jdGlvbihlbGVtLCB5ZWFyLCBtb250aCwgZGF5KSB7XG5cdFx0XHR2YXIgaW5zdCA9IHRoaXMuX2dldEluc3QoZWxlbSk7XG5cdFx0XHRpZiAoISQuaXNFbXB0eU9iamVjdChpbnN0KSAmJiAoZGF5ICE9IG51bGwgfHxcblx0XHRcdFx0XHQoaW5zdC5kcmF3RGF0ZS55ZWFyKCkgIT09IHllYXIgfHwgaW5zdC5kcmF3RGF0ZS5tb250aCgpICE9PSBtb250aCkpKSB7XG5cdFx0XHRcdGluc3QucHJldkRhdGUgPSBpbnN0LmRyYXdEYXRlLm5ld0RhdGUoKTtcblx0XHRcdFx0dmFyIGNhbGVuZGFyID0gaW5zdC5vcHRpb25zLmNhbGVuZGFyO1xuXHRcdFx0XHR2YXIgc2hvdyA9IHRoaXMuX2NoZWNrTWluTWF4KCh5ZWFyICE9IG51bGwgP1xuXHRcdFx0XHRcdGNhbGVuZGFyLm5ld0RhdGUoeWVhciwgbW9udGgsIDEpIDogY2FsZW5kYXIudG9kYXkoKSksIGluc3QpO1xuXHRcdFx0XHRpbnN0LmRyYXdEYXRlLmRhdGUoc2hvdy55ZWFyKCksIHNob3cubW9udGgoKSwgXG5cdFx0XHRcdFx0KGRheSAhPSBudWxsID8gZGF5IDogTWF0aC5taW4oaW5zdC5kcmF3RGF0ZS5kYXkoKSxcblx0XHRcdFx0XHRjYWxlbmRhci5kYXlzSW5Nb250aChzaG93LnllYXIoKSwgc2hvdy5tb250aCgpKSkpKTtcblx0XHRcdFx0dGhpcy5fdXBkYXRlKGVsZW0pO1xuXHRcdFx0fVxuXHRcdH0sXG5cblx0XHQvKiogQWRqdXN0IHRoZSBjdXJyZW50bHkgc2hvd24gbW9udGguXG5cdFx0XHRAbWVtYmVyb2YgQ2FsZW5kYXJzUGlja2VyXG5cdFx0XHRAcGFyYW0gZWxlbSB7RWxlbWVudH0gVGhlIGNvbnRyb2wgdG8gYWZmZWN0LlxuXHRcdFx0QHBhcmFtIG9mZnNldCB7bnVtYmVyfSBUaGUgbnVtYmVyIG9mIG1vbnRocyB0byBjaGFuZ2UgYnkuXG5cdFx0XHRAZXhhbXBsZSAkKHNlbGVjdG9yKS5kYXRlcGljaygnY2hhbmdlTW9udGgnLCAyKSovXG5cdFx0Y2hhbmdlTW9udGg6IGZ1bmN0aW9uKGVsZW0sIG9mZnNldCkge1xuXHRcdFx0dmFyIGluc3QgPSB0aGlzLl9nZXRJbnN0KGVsZW0pO1xuXHRcdFx0aWYgKCEkLmlzRW1wdHlPYmplY3QoaW5zdCkpIHtcblx0XHRcdFx0dmFyIGRhdGUgPSBpbnN0LmRyYXdEYXRlLm5ld0RhdGUoKS5hZGQob2Zmc2V0LCAnbScpO1xuXHRcdFx0XHR0aGlzLnNob3dNb250aChlbGVtLCBkYXRlLnllYXIoKSwgZGF0ZS5tb250aCgpKTtcblx0XHRcdH1cblx0XHR9LFxuXG5cdFx0LyoqIEFkanVzdCB0aGUgY3VycmVudGx5IHNob3duIGRheS5cblx0XHRcdEBtZW1iZXJvZiBDYWxlbmRhcnNQaWNrZXJcblx0XHRcdEBwYXJhbSBlbGVtIHtFbGVtZW50fSBUaGUgY29udHJvbCB0byBhZmZlY3QuXG5cdFx0XHRAcGFyYW0gb2Zmc2V0IHtudW1iZXJ9IFRoZSBudW1iZXIgb2YgZGF5cyB0byBjaGFuZ2UgYnkuXG5cdFx0XHRAZXhhbXBsZSAkKHNlbGVjdG9yKS5kYXRlcGljaygnY2hhbmdlRGF5JywgNykqL1xuXHRcdGNoYW5nZURheTogZnVuY3Rpb24oZWxlbSwgb2Zmc2V0KSB7XG5cdFx0XHR2YXIgaW5zdCA9IHRoaXMuX2dldEluc3QoZWxlbSk7XG5cdFx0XHRpZiAoISQuaXNFbXB0eU9iamVjdChpbnN0KSkge1xuXHRcdFx0XHR2YXIgZGF0ZSA9IGluc3QuZHJhd0RhdGUubmV3RGF0ZSgpLmFkZChvZmZzZXQsICdkJyk7XG5cdFx0XHRcdHRoaXMuc2hvd01vbnRoKGVsZW0sIGRhdGUueWVhcigpLCBkYXRlLm1vbnRoKCksIGRhdGUuZGF5KCkpO1xuXHRcdFx0fVxuXHRcdH0sXG5cblx0XHQvKiogUmVzdHJpY3QgYSBkYXRlIHRvIHRoZSBtaW5pbXVtL21heGltdW0gc3BlY2lmaWVkLlxuXHRcdFx0QG1lbWJlcm9mIENhbGVuZGFyc1BpY2tlclxuXHRcdFx0QHByaXZhdGVcblx0XHRcdEBwYXJhbSBkYXRlIHtDRGF0ZX0gVGhlIGRhdGUgdG8gY2hlY2suXG5cdFx0XHRAcGFyYW0gaW5zdCB7b2JqZWN0fSBUaGUgY3VycmVudCBpbnN0YW5jZSBzZXR0aW5ncy4gKi9cblx0XHRfY2hlY2tNaW5NYXg6IGZ1bmN0aW9uKGRhdGUsIGluc3QpIHtcblx0XHRcdHZhciBtaW5EYXRlID0gaW5zdC5nZXQoJ21pbkRhdGUnKTtcblx0XHRcdHZhciBtYXhEYXRlID0gaW5zdC5nZXQoJ21heERhdGUnKTtcblx0XHRcdGRhdGUgPSAobWluRGF0ZSAmJiBkYXRlLmNvbXBhcmVUbyhtaW5EYXRlKSA9PT0gLTEgPyBtaW5EYXRlLm5ld0RhdGUoKSA6IGRhdGUpO1xuXHRcdFx0ZGF0ZSA9IChtYXhEYXRlICYmIGRhdGUuY29tcGFyZVRvKG1heERhdGUpID09PSArMSA/IG1heERhdGUubmV3RGF0ZSgpIDogZGF0ZSk7XG5cdFx0XHRyZXR1cm4gZGF0ZTtcblx0XHR9LFxuXG5cdFx0LyoqIFJldHJpZXZlIHRoZSBkYXRlIGFzc29jaWF0ZWQgd2l0aCBhbiBlbnRyeSBpbiB0aGUgZGF0ZXBpY2tlci5cblx0XHRcdEBtZW1iZXJvZiBDYWxlbmRhcnNQaWNrZXJcblx0XHRcdEBwYXJhbSBlbGVtIHtFbGVtZW50fSBUaGUgY29udHJvbCB0byBleGFtaW5lLlxuXHRcdFx0QHBhcmFtIHRhcmdldCB7RWxlbWVudH0gVGhlIHNlbGVjdGVkIGRhdGVwaWNrZXIgZWxlbWVudC5cblx0XHRcdEByZXR1cm4ge0NEYXRlfSBUaGUgY29ycmVzcG9uZGluZyBkYXRlLCBvciA8Y29kZT5udWxsPC9jb2RlPi5cdFx0XHRcblx0XHRcdEBleGFtcGxlIHZhciBkYXRlID0gJChzZWxlY3RvcikuZGF0ZXBpY2soJ3JldHJpZXZlRGF0ZScsICQoJ2Rpdi5kYXRlcGljay1wb3B1cCBhOmNvbnRhaW5zKDEwKScpWzBdKSAqL1xuXHRcdHJldHJpZXZlRGF0ZTogZnVuY3Rpb24oZWxlbSwgdGFyZ2V0KSB7XG5cdFx0XHR2YXIgaW5zdCA9IHRoaXMuX2dldEluc3QoZWxlbSk7XG5cdFx0XHRyZXR1cm4gKCQuaXNFbXB0eU9iamVjdChpbnN0KSA/IG51bGwgOiBpbnN0Lm9wdGlvbnMuY2FsZW5kYXIuZnJvbUpEKFxuXHRcdFx0XHRwYXJzZUZsb2F0KHRhcmdldC5jbGFzc05hbWUucmVwbGFjZSgvXi4qamQoXFxkK1xcLjUpLiokLywgJyQxJykpKSk7XG5cdFx0fSxcblxuXHRcdC8qKiBTZWxlY3QgYSBkYXRlIGZvciB0aGlzIGRhdGVwaWNrZXIuXG5cdFx0XHRAbWVtYmVyb2YgQ2FsZW5kYXJzUGlja2VyXG5cdFx0XHRAcGFyYW0gZWxlbSB7RWxlbWVudH0gVGhlIGNvbnRyb2wgdG8gZXhhbWluZS5cblx0XHRcdEBwYXJhbSB0YXJnZXQge0VsZW1lbnR9IFRoZSBzZWxlY3RlZCBkYXRlcGlja2VyIGVsZW1lbnQuXG5cdFx0XHRAZXhhbXBsZSAkKHNlbGVjdG9yKS5kYXRlcGljaygnc2VsZWN0RGF0ZScsICQoJ2Rpdi5kYXRlcGljay1wb3B1cCBhOmNvbnRhaW5zKDEwKScpWzBdKSAqL1xuXHRcdHNlbGVjdERhdGU6IGZ1bmN0aW9uKGVsZW0sIHRhcmdldCkge1xuXHRcdFx0dmFyIGluc3QgPSB0aGlzLl9nZXRJbnN0KGVsZW0pO1xuXHRcdFx0aWYgKCEkLmlzRW1wdHlPYmplY3QoaW5zdCkgJiYgIXRoaXMuaXNEaXNhYmxlZChlbGVtKSkge1xuXHRcdFx0XHR2YXIgZGF0ZSA9IHRoaXMucmV0cmlldmVEYXRlKGVsZW0sIHRhcmdldCk7XG5cdFx0XHRcdGlmIChpbnN0Lm9wdGlvbnMubXVsdGlTZWxlY3QpIHtcblx0XHRcdFx0XHR2YXIgZm91bmQgPSBmYWxzZTtcblx0XHRcdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IGluc3Quc2VsZWN0ZWREYXRlcy5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRcdFx0aWYgKGRhdGUuY29tcGFyZVRvKGluc3Quc2VsZWN0ZWREYXRlc1tpXSkgPT09IDApIHtcblx0XHRcdFx0XHRcdFx0aW5zdC5zZWxlY3RlZERhdGVzLnNwbGljZShpLCAxKTtcblx0XHRcdFx0XHRcdFx0Zm91bmQgPSB0cnVlO1xuXHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aWYgKCFmb3VuZCAmJiBpbnN0LnNlbGVjdGVkRGF0ZXMubGVuZ3RoIDwgaW5zdC5vcHRpb25zLm11bHRpU2VsZWN0KSB7XG5cdFx0XHRcdFx0XHRpbnN0LnNlbGVjdGVkRGF0ZXMucHVzaChkYXRlKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0ZWxzZSBpZiAoaW5zdC5vcHRpb25zLnJhbmdlU2VsZWN0KSB7XG5cdFx0XHRcdFx0aWYgKGluc3QucGlja2luZ1JhbmdlKSB7XG5cdFx0XHRcdFx0XHRpbnN0LnNlbGVjdGVkRGF0ZXNbMV0gPSBkYXRlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRcdGluc3Quc2VsZWN0ZWREYXRlcyA9IFtkYXRlLCBkYXRlXTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aW5zdC5waWNraW5nUmFuZ2UgPSAhaW5zdC5waWNraW5nUmFuZ2U7XG5cdFx0XHRcdH1cblx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0aW5zdC5zZWxlY3RlZERhdGVzID0gW2RhdGVdO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGluc3QucHJldkRhdGUgPSBpbnN0LmRyYXdEYXRlID0gZGF0ZS5uZXdEYXRlKCk7XG5cdFx0XHRcdHRoaXMuX3VwZGF0ZUlucHV0KGVsZW0pO1xuXHRcdFx0XHRpZiAoaW5zdC5pbmxpbmUgfHwgaW5zdC5waWNraW5nUmFuZ2UgfHwgaW5zdC5zZWxlY3RlZERhdGVzLmxlbmd0aCA8XG5cdFx0XHRcdFx0XHQoaW5zdC5vcHRpb25zLm11bHRpU2VsZWN0IHx8IChpbnN0Lm9wdGlvbnMucmFuZ2VTZWxlY3QgPyAyIDogMSkpKSB7XG5cdFx0XHRcdFx0dGhpcy5fdXBkYXRlKGVsZW0pO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdHRoaXMuaGlkZShlbGVtKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0sXG5cblx0XHQvKiogR2VuZXJhdGUgdGhlIGRhdGVwaWNrZXIgY29udGVudCBmb3IgdGhpcyBjb250cm9sLlxuXHRcdFx0QG1lbWJlcm9mIENhbGVuZGFyc1BpY2tlclxuXHRcdFx0QHByaXZhdGVcblx0XHRcdEBwYXJhbSBlbGVtIHtFbGVtZW50fSBUaGUgY29udHJvbCB0byBhZmZlY3QuXG5cdFx0XHRAcGFyYW0gaW5zdCB7b2JqZWN0fSBUaGUgY3VycmVudCBpbnN0YW5jZSBzZXR0aW5ncy5cblx0XHRcdEByZXR1cm4ge2pRdWVyeX0gVGhlIGRhdGVwaWNrZXIgY29udGVudCAqL1xuXHRcdF9nZW5lcmF0ZUNvbnRlbnQ6IGZ1bmN0aW9uKGVsZW0sIGluc3QpIHtcblx0XHRcdHZhciBtb250aHNUb1Nob3cgPSBpbnN0Lm9wdGlvbnMubW9udGhzVG9TaG93O1xuXHRcdFx0bW9udGhzVG9TaG93ID0gKCQuaXNBcnJheShtb250aHNUb1Nob3cpID8gbW9udGhzVG9TaG93IDogWzEsIG1vbnRoc1RvU2hvd10pO1xuXHRcdFx0aW5zdC5kcmF3RGF0ZSA9IHRoaXMuX2NoZWNrTWluTWF4KFxuXHRcdFx0XHRpbnN0LmRyYXdEYXRlIHx8IGluc3QuZ2V0KCdkZWZhdWx0RGF0ZScpIHx8IGluc3Qub3B0aW9ucy5jYWxlbmRhci50b2RheSgpLCBpbnN0KTtcblx0XHRcdHZhciBkcmF3RGF0ZSA9IGluc3QuZHJhd0RhdGUubmV3RGF0ZSgpLmFkZCgtaW5zdC5vcHRpb25zLm1vbnRoc09mZnNldCwgJ20nKTtcblx0XHRcdC8vIEdlbmVyYXRlIG1vbnRoc1xuXHRcdFx0dmFyIG1vbnRoUm93cyA9ICcnO1xuXHRcdFx0Zm9yICh2YXIgcm93ID0gMDsgcm93IDwgbW9udGhzVG9TaG93WzBdOyByb3crKykge1xuXHRcdFx0XHR2YXIgbW9udGhzID0gJyc7XG5cdFx0XHRcdGZvciAodmFyIGNvbCA9IDA7IGNvbCA8IG1vbnRoc1RvU2hvd1sxXTsgY29sKyspIHtcblx0XHRcdFx0XHRtb250aHMgKz0gdGhpcy5fZ2VuZXJhdGVNb250aChlbGVtLCBpbnN0LCBkcmF3RGF0ZS55ZWFyKCksXG5cdFx0XHRcdFx0XHRkcmF3RGF0ZS5tb250aCgpLCBpbnN0Lm9wdGlvbnMuY2FsZW5kYXIsIGluc3Qub3B0aW9ucy5yZW5kZXJlciwgKHJvdyA9PT0gMCAmJiBjb2wgPT09IDApKTtcblx0XHRcdFx0XHRkcmF3RGF0ZS5hZGQoMSwgJ20nKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRtb250aFJvd3MgKz0gdGhpcy5fcHJlcGFyZShpbnN0Lm9wdGlvbnMucmVuZGVyZXIubW9udGhSb3csIGluc3QpLnJlcGxhY2UoL1xce21vbnRoc1xcfS8sIG1vbnRocyk7XG5cdFx0XHR9XG5cdFx0XHR2YXIgcGlja2VyID0gdGhpcy5fcHJlcGFyZShpbnN0Lm9wdGlvbnMucmVuZGVyZXIucGlja2VyLCBpbnN0KS5yZXBsYWNlKC9cXHttb250aHNcXH0vLCBtb250aFJvd3MpLlxuXHRcdFx0XHRyZXBsYWNlKC9cXHt3ZWVrSGVhZGVyXFx9L2csIHRoaXMuX2dlbmVyYXRlRGF5SGVhZGVycyhpbnN0LCBpbnN0Lm9wdGlvbnMuY2FsZW5kYXIsIGluc3Qub3B0aW9ucy5yZW5kZXJlcikpO1xuXHRcdFx0Ly8gQWRkIGNvbW1hbmRzXG5cdFx0XHR2YXIgYWRkQ29tbWFuZCA9IGZ1bmN0aW9uKHR5cGUsIG9wZW4sIGNsb3NlLCBuYW1lLCBjbGFzc2VzKSB7XG5cdFx0XHRcdGlmIChwaWNrZXIuaW5kZXhPZigneycgKyB0eXBlICsgJzonICsgbmFtZSArICd9JykgPT09IC0xKSB7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHZhciBjb21tYW5kID0gaW5zdC5vcHRpb25zLmNvbW1hbmRzW25hbWVdO1xuXHRcdFx0XHR2YXIgZGF0ZSA9IChpbnN0Lm9wdGlvbnMuY29tbWFuZHNBc0RhdGVGb3JtYXQgPyBjb21tYW5kLmRhdGUuYXBwbHkoZWxlbSwgW2luc3RdKSA6IG51bGwpO1xuXHRcdFx0XHRwaWNrZXIgPSBwaWNrZXIucmVwbGFjZShuZXcgUmVnRXhwKCdcXFxceycgKyB0eXBlICsgJzonICsgbmFtZSArICdcXFxcfScsICdnJyksXG5cdFx0XHRcdFx0JzwnICsgb3BlbiArIChjb21tYW5kLnN0YXR1cyA/ICcgdGl0bGU9XCInICsgaW5zdC5vcHRpb25zW2NvbW1hbmQuc3RhdHVzXSArICdcIicgOiAnJykgK1xuXHRcdFx0XHRcdCcgY2xhc3M9XCInICsgaW5zdC5vcHRpb25zLnJlbmRlcmVyLmNvbW1hbmRDbGFzcyArICcgJyArXG5cdFx0XHRcdFx0aW5zdC5vcHRpb25zLnJlbmRlcmVyLmNvbW1hbmRDbGFzcyArICctJyArIG5hbWUgKyAnICcgKyBjbGFzc2VzICtcblx0XHRcdFx0XHQoY29tbWFuZC5lbmFibGVkKGluc3QpID8gJycgOiAnICcgKyBpbnN0Lm9wdGlvbnMucmVuZGVyZXIuZGlzYWJsZWRDbGFzcykgKyAnXCI+JyArXG5cdFx0XHRcdFx0KGRhdGUgPyBkYXRlLmZvcm1hdERhdGUoaW5zdC5vcHRpb25zW2NvbW1hbmQudGV4dF0pIDpcblx0XHRcdFx0XHRpbnN0Lm9wdGlvbnNbY29tbWFuZC50ZXh0XSkgKyAnPC8nICsgY2xvc2UgKyAnPicpO1xuXHRcdFx0fTtcblx0XHRcdGZvciAodmFyIG5hbWUgaW4gaW5zdC5vcHRpb25zLmNvbW1hbmRzKSB7XG5cdFx0XHRcdGFkZENvbW1hbmQoJ2J1dHRvbicsICdidXR0b24gdHlwZT1cImJ1dHRvblwiJywgJ2J1dHRvbicsIG5hbWUsXG5cdFx0XHRcdFx0aW5zdC5vcHRpb25zLnJlbmRlcmVyLmNvbW1hbmRCdXR0b25DbGFzcyk7XG5cdFx0XHRcdGFkZENvbW1hbmQoJ2xpbmsnLCAnYSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCInLCAnYScsIG5hbWUsXG5cdFx0XHRcdFx0aW5zdC5vcHRpb25zLnJlbmRlcmVyLmNvbW1hbmRMaW5rQ2xhc3MpO1xuXHRcdFx0fVxuXHRcdFx0cGlja2VyID0gJChwaWNrZXIpO1xuXHRcdFx0aWYgKG1vbnRoc1RvU2hvd1sxXSA+IDEpIHtcblx0XHRcdFx0dmFyIGNvdW50ID0gMDtcblx0XHRcdFx0JChpbnN0Lm9wdGlvbnMucmVuZGVyZXIubW9udGhTZWxlY3RvciwgcGlja2VyKS5lYWNoKGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdHZhciBudGggPSArK2NvdW50ICUgbW9udGhzVG9TaG93WzFdO1xuXHRcdFx0XHRcdCQodGhpcykuYWRkQ2xhc3MobnRoID09PSAxID8gJ2ZpcnN0JyA6IChudGggPT09IDAgPyAnbGFzdCcgOiAnJykpO1xuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHRcdC8vIEFkZCBkYXRlcGlja2VyIGJlaGF2aW91clxuXHRcdFx0dmFyIHNlbGYgPSB0aGlzO1xuXHRcdFx0ZnVuY3Rpb24gcmVtb3ZlSGlnaGxpZ2h0KCkge1xuXHRcdFx0XHQoaW5zdC5pbmxpbmUgPyAkKHRoaXMpLmNsb3Nlc3QoJy4nICsgc2VsZi5fZ2V0TWFya2VyKCkpIDogaW5zdC5kaXYpLlxuXHRcdFx0XHRcdGZpbmQoaW5zdC5vcHRpb25zLnJlbmRlcmVyLmRheVNlbGVjdG9yICsgJyBhJykuXG5cdFx0XHRcdFx0cmVtb3ZlQ2xhc3MoaW5zdC5vcHRpb25zLnJlbmRlcmVyLmhpZ2hsaWdodGVkQ2xhc3MpO1xuXHRcdFx0fVxuXHRcdFx0cGlja2VyLmZpbmQoaW5zdC5vcHRpb25zLnJlbmRlcmVyLmRheVNlbGVjdG9yICsgJyBhJykuaG92ZXIoXG5cdFx0XHRcdFx0ZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0XHRyZW1vdmVIaWdobGlnaHQuYXBwbHkodGhpcyk7XG5cdFx0XHRcdFx0XHQkKHRoaXMpLmFkZENsYXNzKGluc3Qub3B0aW9ucy5yZW5kZXJlci5oaWdobGlnaHRlZENsYXNzKTtcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdHJlbW92ZUhpZ2hsaWdodCkuXG5cdFx0XHRcdGNsaWNrKGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdHNlbGYuc2VsZWN0RGF0ZShlbGVtLCB0aGlzKTtcblx0XHRcdFx0fSkuZW5kKCkuXG5cdFx0XHRcdGZpbmQoJ3NlbGVjdC4nICsgdGhpcy5fbW9udGhZZWFyQ2xhc3MgKyAnOm5vdCguJyArIHRoaXMuX2FueVllYXJDbGFzcyArICcpJykuXG5cdFx0XHRcdGNoYW5nZShmdW5jdGlvbigpIHtcblx0XHRcdFx0XHR2YXIgbW9udGhZZWFyID0gJCh0aGlzKS52YWwoKS5zcGxpdCgnLycpO1xuXHRcdFx0XHRcdHNlbGYuc2hvd01vbnRoKGVsZW0sIHBhcnNlSW50KG1vbnRoWWVhclsxXSwgMTApLCBwYXJzZUludChtb250aFllYXJbMF0sIDEwKSk7XG5cdFx0XHRcdH0pLmVuZCgpLlxuXHRcdFx0XHRmaW5kKCdzZWxlY3QuJyArIHRoaXMuX2FueVllYXJDbGFzcykuY2xpY2soZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0JCh0aGlzKS5jc3MoJ3Zpc2liaWxpdHknLCAnaGlkZGVuJykuXG5cdFx0XHRcdFx0XHRuZXh0KCdpbnB1dCcpLmNzcyh7bGVmdDogdGhpcy5vZmZzZXRMZWZ0LCB0b3A6IHRoaXMub2Zmc2V0VG9wLFxuXHRcdFx0XHRcdFx0d2lkdGg6IHRoaXMub2Zmc2V0V2lkdGgsIGhlaWdodDogdGhpcy5vZmZzZXRIZWlnaHR9KS5zaG93KCkuZm9jdXMoKTtcblx0XHRcdFx0fSkuZW5kKCkuXG5cdFx0XHRcdGZpbmQoJ2lucHV0LicgKyBzZWxmLl9tb250aFllYXJDbGFzcykuY2hhbmdlKGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0XHR2YXIgeWVhciA9IHBhcnNlSW50KCQodGhpcykudmFsKCksIDEwKTtcblx0XHRcdFx0XHRcdHllYXIgPSAoaXNOYU4oeWVhcikgPyBpbnN0LmRyYXdEYXRlLnllYXIoKSA6IHllYXIpO1xuXHRcdFx0XHRcdFx0c2VsZi5zaG93TW9udGgoZWxlbSwgeWVhciwgaW5zdC5kcmF3RGF0ZS5tb250aCgpLCBpbnN0LmRyYXdEYXRlLmRheSgpKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Y2F0Y2ggKGUpIHtcblx0XHRcdFx0XHRcdGFsZXJ0KGUpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSkua2V5ZG93bihmdW5jdGlvbihldmVudCkge1xuXHRcdFx0XHRcdGlmIChldmVudC5rZXlDb2RlID09PSAxMykgeyAvLyBFbnRlclxuXHRcdFx0XHRcdFx0JChldmVudC5lbGVtKS5jaGFuZ2UoKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0ZWxzZSBpZiAoZXZlbnQua2V5Q29kZSA9PT0gMjcpIHsgLy8gRXNjYXBlXG5cdFx0XHRcdFx0XHQkKGV2ZW50LmVsZW0pLmhpZGUoKS5wcmV2KCdzZWxlY3QnKS5jc3MoJ3Zpc2liaWxpdHknLCAndmlzaWJsZScpO1xuXHRcdFx0XHRcdFx0aW5zdC5lbGVtLmZvY3VzKCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblx0XHRcdC8vIEFkZCBrZXlib2FyZCBoYW5kbGluZ1xuXHRcdFx0dmFyIGRhdGEgPSB7ZWxlbTogaW5zdC5lbGVtWzBdfTtcblx0XHRcdHBpY2tlci5rZXlkb3duKGRhdGEsIHRoaXMuX2tleURvd24pLmtleXByZXNzKGRhdGEsIHRoaXMuX2tleVByZXNzKS5rZXl1cChkYXRhLCB0aGlzLl9rZXlVcCk7XG5cdFx0XHQvLyBBZGQgY29tbWFuZCBiZWhhdmlvdXJcblx0XHRcdHBpY2tlci5maW5kKCcuJyArIGluc3Qub3B0aW9ucy5yZW5kZXJlci5jb21tYW5kQ2xhc3MpLmNsaWNrKGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdGlmICghJCh0aGlzKS5oYXNDbGFzcyhpbnN0Lm9wdGlvbnMucmVuZGVyZXIuZGlzYWJsZWRDbGFzcykpIHtcblx0XHRcdFx0XHRcdHZhciBhY3Rpb24gPSB0aGlzLmNsYXNzTmFtZS5yZXBsYWNlKFxuXHRcdFx0XHRcdFx0XHRuZXcgUmVnRXhwKCdeLionICsgaW5zdC5vcHRpb25zLnJlbmRlcmVyLmNvbW1hbmRDbGFzcyArICctKFteIF0rKS4qJCcpLCAnJDEnKTtcblx0XHRcdFx0XHRcdHBsdWdpbi5wZXJmb3JtQWN0aW9uKGVsZW0sIGFjdGlvbik7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblx0XHRcdC8vIEFkZCBjbGFzc2VzXG5cdFx0XHRpZiAoaW5zdC5vcHRpb25zLmlzUlRMKSB7XG5cdFx0XHRcdHBpY2tlci5hZGRDbGFzcyhpbnN0Lm9wdGlvbnMucmVuZGVyZXIucnRsQ2xhc3MpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKG1vbnRoc1RvU2hvd1swXSAqIG1vbnRoc1RvU2hvd1sxXSA+IDEpIHtcblx0XHRcdFx0cGlja2VyLmFkZENsYXNzKGluc3Qub3B0aW9ucy5yZW5kZXJlci5tdWx0aUNsYXNzKTtcblx0XHRcdH1cblx0XHRcdGlmIChpbnN0Lm9wdGlvbnMucGlja2VyQ2xhc3MpIHtcblx0XHRcdFx0cGlja2VyLmFkZENsYXNzKGluc3Qub3B0aW9ucy5waWNrZXJDbGFzcyk7XG5cdFx0XHR9XG5cdFx0XHQvLyBSZXNpemVcblx0XHRcdCQoJ2JvZHknKS5hcHBlbmQocGlja2VyKTtcblx0XHRcdHZhciB3aWR0aCA9IDA7XG5cdFx0XHRwaWNrZXIuZmluZChpbnN0Lm9wdGlvbnMucmVuZGVyZXIubW9udGhTZWxlY3RvcikuZWFjaChmdW5jdGlvbigpIHtcblx0XHRcdFx0d2lkdGggKz0gJCh0aGlzKS5vdXRlcldpZHRoKCk7XG5cdFx0XHR9KTtcblx0XHRcdHBpY2tlci53aWR0aCh3aWR0aCAvIG1vbnRoc1RvU2hvd1swXSk7XG5cdFx0XHQvLyBQcmUtc2hvdyBjdXN0b21pc2F0aW9uXG5cdFx0XHRpZiAoJC5pc0Z1bmN0aW9uKGluc3Qub3B0aW9ucy5vblNob3cpKSB7XG5cdFx0XHRcdGluc3Qub3B0aW9ucy5vblNob3cuYXBwbHkoZWxlbSwgW3BpY2tlciwgaW5zdC5vcHRpb25zLmNhbGVuZGFyLCBpbnN0XSk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gcGlja2VyO1xuXHRcdH0sXG5cblx0XHQvKiogR2VuZXJhdGUgdGhlIGNvbnRlbnQgZm9yIGEgc2luZ2xlIG1vbnRoLlxuXHRcdFx0QG1lbWJlcm9mIENhbGVuZGFyc1BpY2tlclxuXHRcdFx0QHByaXZhdGVcblx0XHRcdEBwYXJhbSBlbGVtIHtFbGVtZW50fSBUaGUgY29udHJvbCB0byBhZmZlY3QuXG5cdFx0XHRAcGFyYW0gaW5zdCB7b2JqZWN0fSBUaGUgY3VycmVudCBpbnN0YW5jZSBzZXR0aW5ncy5cblx0XHRcdEBwYXJhbSB5ZWFyIHtudW1iZXJ9IFRoZSB5ZWFyIHRvIGdlbmVyYXRlLlxuXHRcdFx0QHBhcmFtIG1vbnRoIHtudW1iZXJ9IFRoZSBtb250aCB0byBnZW5lcmF0ZS5cblx0XHRcdEBwYXJhbSBjYWxlbmRhciB7QmFzZUNhbGVuZGFyfSBUaGUgY3VycmVudCBjYWxlbmRhci5cblx0XHRcdEBwYXJhbSByZW5kZXJlciB7b2JqZWN0fSBUaGUgcmVuZGVyaW5nIHRlbXBsYXRlcy5cblx0XHRcdEBwYXJhbSBmaXJzdCB7Ym9vbGVhbn0gPGNvZGU+dHJ1ZTwvY29kZT4gaWYgZmlyc3Qgb2YgbXVsdGlwbGUgbW9udGhzLlxuXHRcdFx0QHJldHVybiB7c3RyaW5nfSBUaGUgbW9udGggY29udGVudC4gKi9cblx0XHRfZ2VuZXJhdGVNb250aDogZnVuY3Rpb24oZWxlbSwgaW5zdCwgeWVhciwgbW9udGgsIGNhbGVuZGFyLCByZW5kZXJlciwgZmlyc3QpIHtcblx0XHRcdHZhciBkYXlzSW5Nb250aCA9IGNhbGVuZGFyLmRheXNJbk1vbnRoKHllYXIsIG1vbnRoKTtcblx0XHRcdHZhciBtb250aHNUb1Nob3cgPSBpbnN0Lm9wdGlvbnMubW9udGhzVG9TaG93O1xuXHRcdFx0bW9udGhzVG9TaG93ID0gKCQuaXNBcnJheShtb250aHNUb1Nob3cpID8gbW9udGhzVG9TaG93IDogWzEsIG1vbnRoc1RvU2hvd10pO1xuXHRcdFx0dmFyIGZpeGVkV2Vla3MgPSBpbnN0Lm9wdGlvbnMuZml4ZWRXZWVrcyB8fCAobW9udGhzVG9TaG93WzBdICogbW9udGhzVG9TaG93WzFdID4gMSk7XG5cdFx0XHR2YXIgZmlyc3REYXkgPSBpbnN0Lm9wdGlvbnMuZmlyc3REYXk7XG5cdFx0XHRmaXJzdERheSA9IChmaXJzdERheSA9PSBudWxsID8gY2FsZW5kYXIubG9jYWwuZmlyc3REYXkgOiBmaXJzdERheSk7XG5cdFx0XHR2YXIgbGVhZERheXMgPSAoY2FsZW5kYXIuZGF5T2ZXZWVrKHllYXIsIG1vbnRoLCBjYWxlbmRhci5taW5EYXkpIC1cblx0XHRcdFx0Zmlyc3REYXkgKyBjYWxlbmRhci5kYXlzSW5XZWVrKCkpICUgY2FsZW5kYXIuZGF5c0luV2VlaygpO1xuXHRcdFx0dmFyIG51bVdlZWtzID0gKGZpeGVkV2Vla3MgPyA2IDogTWF0aC5jZWlsKChsZWFkRGF5cyArIGRheXNJbk1vbnRoKSAvIGNhbGVuZGFyLmRheXNJbldlZWsoKSkpO1xuXHRcdFx0dmFyIHNlbGVjdE90aGVyTW9udGhzID0gaW5zdC5vcHRpb25zLnNlbGVjdE90aGVyTW9udGhzICYmIGluc3Qub3B0aW9ucy5zaG93T3RoZXJNb250aHM7XG5cdFx0XHR2YXIgbWluRGF0ZSA9IChpbnN0LnBpY2tpbmdSYW5nZSA/IGluc3Quc2VsZWN0ZWREYXRlc1swXSA6IGluc3QuZ2V0KCdtaW5EYXRlJykpO1xuXHRcdFx0dmFyIG1heERhdGUgPSBpbnN0LmdldCgnbWF4RGF0ZScpO1xuXHRcdFx0dmFyIHNob3dXZWVrcyA9IHJlbmRlcmVyLndlZWsuaW5kZXhPZigne3dlZWtPZlllYXJ9JykgPiAtMTtcblx0XHRcdHZhciB0b2RheSA9IGNhbGVuZGFyLnRvZGF5KCk7XG5cdFx0XHR2YXIgZHJhd0RhdGUgPSBjYWxlbmRhci5uZXdEYXRlKHllYXIsIG1vbnRoLCBjYWxlbmRhci5taW5EYXkpO1xuXHRcdFx0ZHJhd0RhdGUuYWRkKC1sZWFkRGF5cyAtIChmaXhlZFdlZWtzICYmXG5cdFx0XHRcdChkcmF3RGF0ZS5kYXlPZldlZWsoKSA9PT0gZmlyc3REYXkgfHwgZHJhd0RhdGUuZGF5c0luTW9udGgoKSA8IGNhbGVuZGFyLmRheXNJbldlZWsoKSk/XG5cdFx0XHRcdGNhbGVuZGFyLmRheXNJbldlZWsoKSA6IDApLCAnZCcpO1xuXHRcdFx0dmFyIGpkID0gZHJhd0RhdGUudG9KRCgpO1xuXHRcdFx0Ly8gR2VuZXJhdGUgd2Vla3Ncblx0XHRcdHZhciB3ZWVrcyA9ICcnO1xuXHRcdFx0Zm9yICh2YXIgd2VlayA9IDA7IHdlZWsgPCBudW1XZWVrczsgd2VlaysrKSB7XG5cdFx0XHRcdHZhciB3ZWVrT2ZZZWFyID0gKCFzaG93V2Vla3MgPyAnJyA6ICc8c3BhbiBjbGFzcz1cImpkJyArIGpkICsgJ1wiPicgK1xuXHRcdFx0XHRcdCgkLmlzRnVuY3Rpb24oaW5zdC5vcHRpb25zLmNhbGN1bGF0ZVdlZWspID9cblx0XHRcdFx0XHRpbnN0Lm9wdGlvbnMuY2FsY3VsYXRlV2VlayhkcmF3RGF0ZSkgOiBkcmF3RGF0ZS53ZWVrT2ZZZWFyKCkpICsgJzwvc3Bhbj4nKTtcblx0XHRcdFx0dmFyIGRheXMgPSAnJztcblx0XHRcdFx0Zm9yICh2YXIgZGF5ID0gMDsgZGF5IDwgY2FsZW5kYXIuZGF5c0luV2VlaygpOyBkYXkrKykge1xuXHRcdFx0XHRcdHZhciBzZWxlY3RlZCA9IGZhbHNlO1xuXHRcdFx0XHRcdGlmIChpbnN0Lm9wdGlvbnMucmFuZ2VTZWxlY3QgJiYgaW5zdC5zZWxlY3RlZERhdGVzLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0XHRcdHNlbGVjdGVkID0gKGRyYXdEYXRlLmNvbXBhcmVUbyhpbnN0LnNlbGVjdGVkRGF0ZXNbMF0pICE9PSAtMSAmJlxuXHRcdFx0XHRcdFx0XHRkcmF3RGF0ZS5jb21wYXJlVG8oaW5zdC5zZWxlY3RlZERhdGVzWzFdKSAhPT0gKzEpXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBpbnN0LnNlbGVjdGVkRGF0ZXMubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0XHRcdFx0aWYgKGluc3Quc2VsZWN0ZWREYXRlc1tpXS5jb21wYXJlVG8oZHJhd0RhdGUpID09PSAwKSB7XG5cdFx0XHRcdFx0XHRcdFx0c2VsZWN0ZWQgPSB0cnVlO1xuXHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHZhciBkYXRlSW5mbyA9ICghJC5pc0Z1bmN0aW9uKGluc3Qub3B0aW9ucy5vbkRhdGUpID8ge30gOlxuXHRcdFx0XHRcdFx0aW5zdC5vcHRpb25zLm9uRGF0ZS5hcHBseShlbGVtLCBbZHJhd0RhdGUsIGRyYXdEYXRlLm1vbnRoKCkgPT09IG1vbnRoXSkpO1xuXHRcdFx0XHRcdHZhciBzZWxlY3RhYmxlID0gKHNlbGVjdE90aGVyTW9udGhzIHx8IGRyYXdEYXRlLm1vbnRoKCkgPT09IG1vbnRoKSAmJlxuXHRcdFx0XHRcdFx0dGhpcy5faXNTZWxlY3RhYmxlKGVsZW0sIGRyYXdEYXRlLCBkYXRlSW5mby5zZWxlY3RhYmxlLCBtaW5EYXRlLCBtYXhEYXRlKTtcblx0XHRcdFx0XHRkYXlzICs9IHRoaXMuX3ByZXBhcmUocmVuZGVyZXIuZGF5LCBpbnN0KS5yZXBsYWNlKC9cXHtkYXlcXH0vZyxcblx0XHRcdFx0XHRcdChzZWxlY3RhYmxlID8gJzxhIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIicgOiAnPHNwYW4nKSArXG5cdFx0XHRcdFx0XHQnIGNsYXNzPVwiamQnICsgamQgKyAnICcgKyAoZGF0ZUluZm8uZGF0ZUNsYXNzIHx8ICcnKSArXG5cdFx0XHRcdFx0XHQoc2VsZWN0ZWQgJiYgKHNlbGVjdE90aGVyTW9udGhzIHx8IGRyYXdEYXRlLm1vbnRoKCkgPT09IG1vbnRoKSA/XG5cdFx0XHRcdFx0XHQnICcgKyByZW5kZXJlci5zZWxlY3RlZENsYXNzIDogJycpICtcblx0XHRcdFx0XHRcdChzZWxlY3RhYmxlID8gJyAnICsgcmVuZGVyZXIuZGVmYXVsdENsYXNzIDogJycpICtcblx0XHRcdFx0XHRcdChkcmF3RGF0ZS53ZWVrRGF5KCkgPyAnJyA6ICcgJyArIHJlbmRlcmVyLndlZWtlbmRDbGFzcykgK1xuXHRcdFx0XHRcdFx0KGRyYXdEYXRlLm1vbnRoKCkgPT09IG1vbnRoID8gJycgOiAnICcgKyByZW5kZXJlci5vdGhlck1vbnRoQ2xhc3MpICtcblx0XHRcdFx0XHRcdChkcmF3RGF0ZS5jb21wYXJlVG8odG9kYXkpID09PSAwICYmIGRyYXdEYXRlLm1vbnRoKCkgPT09IG1vbnRoID9cblx0XHRcdFx0XHRcdCcgJyArIHJlbmRlcmVyLnRvZGF5Q2xhc3MgOiAnJykgK1xuXHRcdFx0XHRcdFx0KGRyYXdEYXRlLmNvbXBhcmVUbyhpbnN0LmRyYXdEYXRlKSA9PT0gMCAmJiBkcmF3RGF0ZS5tb250aCgpID09PSBtb250aCA/XG5cdFx0XHRcdFx0XHQnICcgKyByZW5kZXJlci5oaWdobGlnaHRlZENsYXNzIDogJycpICsgJ1wiJyArXG5cdFx0XHRcdFx0XHQoZGF0ZUluZm8udGl0bGUgfHwgKGluc3Qub3B0aW9ucy5kYXlTdGF0dXMgJiYgc2VsZWN0YWJsZSkgPyAnIHRpdGxlPVwiJyArXG5cdFx0XHRcdFx0XHQoZGF0ZUluZm8udGl0bGUgfHwgZHJhd0RhdGUuZm9ybWF0RGF0ZShpbnN0Lm9wdGlvbnMuZGF5U3RhdHVzKSkgKyAnXCInIDogJycpICsgJz4nICtcblx0XHRcdFx0XHRcdChpbnN0Lm9wdGlvbnMuc2hvd090aGVyTW9udGhzIHx8IGRyYXdEYXRlLm1vbnRoKCkgPT09IG1vbnRoID9cblx0XHRcdFx0XHRcdGRhdGVJbmZvLmNvbnRlbnQgfHwgZHJhd0RhdGUuZGF5KCkgOiAnJiMxNjA7JykgK1xuXHRcdFx0XHRcdFx0KHNlbGVjdGFibGUgPyAnPC9hPicgOiAnPC9zcGFuPicpKTtcblx0XHRcdFx0XHRkcmF3RGF0ZS5hZGQoMSwgJ2QnKTtcblx0XHRcdFx0XHRqZCsrO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHdlZWtzICs9IHRoaXMuX3ByZXBhcmUocmVuZGVyZXIud2VlaywgaW5zdCkucmVwbGFjZSgvXFx7ZGF5c1xcfS9nLCBkYXlzKS5cblx0XHRcdFx0XHRyZXBsYWNlKC9cXHt3ZWVrT2ZZZWFyXFx9L2csIHdlZWtPZlllYXIpO1xuXHRcdFx0fVxuXHRcdFx0dmFyIG1vbnRoSGVhZGVyID0gdGhpcy5fcHJlcGFyZShyZW5kZXJlci5tb250aCwgaW5zdCkubWF0Y2goL1xce21vbnRoSGVhZGVyKDpbXlxcfV0rKT9cXH0vKTtcblx0XHRcdG1vbnRoSGVhZGVyID0gKG1vbnRoSGVhZGVyWzBdLmxlbmd0aCA8PSAxMyA/ICdNTSB5eXl5JyA6XG5cdFx0XHRcdG1vbnRoSGVhZGVyWzBdLnN1YnN0cmluZygxMywgbW9udGhIZWFkZXJbMF0ubGVuZ3RoIC0gMSkpO1xuXHRcdFx0bW9udGhIZWFkZXIgPSAoZmlyc3QgPyB0aGlzLl9nZW5lcmF0ZU1vbnRoU2VsZWN0aW9uKFxuXHRcdFx0XHRpbnN0LCB5ZWFyLCBtb250aCwgbWluRGF0ZSwgbWF4RGF0ZSwgbW9udGhIZWFkZXIsIGNhbGVuZGFyLCByZW5kZXJlcikgOlxuXHRcdFx0XHRjYWxlbmRhci5mb3JtYXREYXRlKG1vbnRoSGVhZGVyLCBjYWxlbmRhci5uZXdEYXRlKHllYXIsIG1vbnRoLCBjYWxlbmRhci5taW5EYXkpKSk7XG5cdFx0XHR2YXIgd2Vla0hlYWRlciA9IHRoaXMuX3ByZXBhcmUocmVuZGVyZXIud2Vla0hlYWRlciwgaW5zdCkuXG5cdFx0XHRcdHJlcGxhY2UoL1xce2RheXNcXH0vZywgdGhpcy5fZ2VuZXJhdGVEYXlIZWFkZXJzKGluc3QsIGNhbGVuZGFyLCByZW5kZXJlcikpO1xuXHRcdFx0cmV0dXJuIHRoaXMuX3ByZXBhcmUocmVuZGVyZXIubW9udGgsIGluc3QpLnJlcGxhY2UoL1xce21vbnRoSGVhZGVyKDpbXlxcfV0rKT9cXH0vZywgbW9udGhIZWFkZXIpLlxuXHRcdFx0XHRyZXBsYWNlKC9cXHt3ZWVrSGVhZGVyXFx9L2csIHdlZWtIZWFkZXIpLnJlcGxhY2UoL1xce3dlZWtzXFx9L2csIHdlZWtzKTtcblx0XHR9LFxuXG5cdFx0LyoqIEdlbmVyYXRlIHRoZSBIVE1MIGZvciB0aGUgZGF5IGhlYWRlcnMuXG5cdFx0XHRAbWVtYmVyb2YgQ2FsZW5kYXJzUGlja2VyXG5cdFx0XHRAcHJpdmF0ZVxuXHRcdFx0QHBhcmFtIGluc3Qge29iamVjdH0gVGhlIGN1cnJlbnQgaW5zdGFuY2Ugc2V0dGluZ3MuXG5cdFx0XHRAcGFyYW0gY2FsZW5kYXIge0Jhc2VDYWxlbmRhcn0gVGhlIGN1cnJlbnQgY2FsZW5kYXIuXG5cdFx0XHRAcGFyYW0gcmVuZGVyZXIge29iamVjdH0gVGhlIHJlbmRlcmluZyB0ZW1wbGF0ZXMuXG5cdFx0XHRAcmV0dXJuIHtzdHJpbmd9IEEgd2VlaydzIHdvcnRoIG9mIGRheSBoZWFkZXJzLiAqL1xuXHRcdF9nZW5lcmF0ZURheUhlYWRlcnM6IGZ1bmN0aW9uKGluc3QsIGNhbGVuZGFyLCByZW5kZXJlcikge1xuXHRcdFx0dmFyIGZpcnN0RGF5ID0gaW5zdC5vcHRpb25zLmZpcnN0RGF5O1xuXHRcdFx0Zmlyc3REYXkgPSAoZmlyc3REYXkgPT0gbnVsbCA/IGNhbGVuZGFyLmxvY2FsLmZpcnN0RGF5IDogZmlyc3REYXkpO1xuXHRcdFx0dmFyIGhlYWRlciA9ICcnO1xuXHRcdFx0Zm9yICh2YXIgZGF5ID0gMDsgZGF5IDwgY2FsZW5kYXIuZGF5c0luV2VlaygpOyBkYXkrKykge1xuXHRcdFx0XHR2YXIgZG93ID0gKGRheSArIGZpcnN0RGF5KSAlIGNhbGVuZGFyLmRheXNJbldlZWsoKTtcblx0XHRcdFx0aGVhZGVyICs9IHRoaXMuX3ByZXBhcmUocmVuZGVyZXIuZGF5SGVhZGVyLCBpbnN0KS5yZXBsYWNlKC9cXHtkYXlcXH0vZyxcblx0XHRcdFx0XHQnPHNwYW4gY2xhc3M9XCInICsgdGhpcy5fY3VyRG9XQ2xhc3MgKyBkb3cgKyAnXCIgdGl0bGU9XCInICtcblx0XHRcdFx0XHRjYWxlbmRhci5sb2NhbC5kYXlOYW1lc1tkb3ddICsgJ1wiPicgKyBjYWxlbmRhci5sb2NhbC5kYXlOYW1lc01pbltkb3ddICsgJzwvc3Bhbj4nKTtcblx0XHRcdH1cblx0XHRcdHJldHVybiBoZWFkZXI7XG5cdFx0fSxcblxuXHRcdC8qKiBHZW5lcmF0ZSBzZWxlY3Rpb24gY29udHJvbHMgZm9yIG1vbnRoLlxuXHRcdFx0QG1lbWJlcm9mIENhbGVuZGFyc1BpY2tlclxuXHRcdFx0QHByaXZhdGVcblx0XHRcdEBwYXJhbSBpbnN0IHtvYmplY3R9IFRoZSBjdXJyZW50IGluc3RhbmNlIHNldHRpbmdzLlxuXHRcdFx0QHBhcmFtIHllYXIge251bWJlcn0gVGhlIHllYXIgdG8gZ2VuZXJhdGUuXG5cdFx0XHRAcGFyYW0gbW9udGgge251bWJlcn0gVGhlIG1vbnRoIHRvIGdlbmVyYXRlLlxuXHRcdFx0QHBhcmFtIG1pbkRhdGUge0NEYXRlfSBUaGUgbWluaW11bSBkYXRlIGFsbG93ZWQuXG5cdFx0XHRAcGFyYW0gbWF4RGF0ZSB7Q0RhdGV9IFRoZSBtYXhpbXVtIGRhdGUgYWxsb3dlZC5cblx0XHRcdEBwYXJhbSBtb250aEhlYWRlciB7c3RyaW5nfSBUaGUgbW9udGgveWVhciBmb3JtYXQuXG5cdFx0XHRAcGFyYW0gY2FsZW5kYXIge0Jhc2VDYWxlbmRhcn0gVGhlIGN1cnJlbnQgY2FsZW5kYXIuXG5cdFx0XHRAcmV0dXJuIHtzdHJpbmd9IFRoZSBtb250aCBzZWxlY3Rpb24gY29udGVudC4gKi9cblx0XHRfZ2VuZXJhdGVNb250aFNlbGVjdGlvbjogZnVuY3Rpb24oaW5zdCwgeWVhciwgbW9udGgsIG1pbkRhdGUsIG1heERhdGUsIG1vbnRoSGVhZGVyLCBjYWxlbmRhcikge1xuXHRcdFx0aWYgKCFpbnN0Lm9wdGlvbnMuY2hhbmdlTW9udGgpIHtcblx0XHRcdFx0cmV0dXJuIGNhbGVuZGFyLmZvcm1hdERhdGUobW9udGhIZWFkZXIsIGNhbGVuZGFyLm5ld0RhdGUoeWVhciwgbW9udGgsIDEpKTtcblx0XHRcdH1cblx0XHRcdC8vIE1vbnRoc1xuXHRcdFx0dmFyIG1vbnRoTmFtZXMgPSBjYWxlbmRhci5sb2NhbFtcblx0XHRcdFx0J21vbnRoTmFtZXMnICsgKG1vbnRoSGVhZGVyLm1hdGNoKC9tbS9pKSA/ICcnIDogJ1Nob3J0JyldO1xuXHRcdFx0dmFyIGh0bWwgPSBtb250aEhlYWRlci5yZXBsYWNlKC9tKy9pLCAnXFxcXHgyRScpLnJlcGxhY2UoL3krL2ksICdcXFxceDJGJyk7XG5cdFx0XHR2YXIgc2VsZWN0b3IgPSAnPHNlbGVjdCBjbGFzcz1cIicgKyB0aGlzLl9tb250aFllYXJDbGFzcyArXG5cdFx0XHRcdCdcIiB0aXRsZT1cIicgKyBpbnN0Lm9wdGlvbnMubW9udGhTdGF0dXMgKyAnXCI+Jztcblx0XHRcdHZhciBtYXhNb250aCA9IGNhbGVuZGFyLm1vbnRoc0luWWVhcih5ZWFyKSArIGNhbGVuZGFyLm1pbk1vbnRoO1xuXHRcdFx0Zm9yICh2YXIgbSA9IGNhbGVuZGFyLm1pbk1vbnRoOyBtIDwgbWF4TW9udGg7IG0rKykge1xuXHRcdFx0XHRpZiAoKCFtaW5EYXRlIHx8IGNhbGVuZGFyLm5ld0RhdGUoeWVhciwgbSxcblx0XHRcdFx0XHRcdGNhbGVuZGFyLmRheXNJbk1vbnRoKHllYXIsIG0pIC0gMSArIGNhbGVuZGFyLm1pbkRheSkuXG5cdFx0XHRcdFx0XHRjb21wYXJlVG8obWluRGF0ZSkgIT09IC0xKSAmJlxuXHRcdFx0XHRcdFx0KCFtYXhEYXRlIHx8IGNhbGVuZGFyLm5ld0RhdGUoeWVhciwgbSwgY2FsZW5kYXIubWluRGF5KS5cblx0XHRcdFx0XHRcdGNvbXBhcmVUbyhtYXhEYXRlKSAhPT0gKzEpKSB7XG5cdFx0XHRcdFx0c2VsZWN0b3IgKz0gJzxvcHRpb24gdmFsdWU9XCInICsgbSArICcvJyArIHllYXIgKyAnXCInICtcblx0XHRcdFx0XHRcdChtb250aCA9PT0gbSA/ICcgc2VsZWN0ZWQ9XCJzZWxlY3RlZFwiJyA6ICcnKSArICc+JyArXG5cdFx0XHRcdFx0XHRtb250aE5hbWVzW20gLSBjYWxlbmRhci5taW5Nb250aF0gKyAnPC9vcHRpb24+Jztcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0c2VsZWN0b3IgKz0gJzwvc2VsZWN0Pic7XG5cdFx0XHRodG1sID0gaHRtbC5yZXBsYWNlKC9cXFxceDJFLywgc2VsZWN0b3IpO1xuXHRcdFx0Ly8gWWVhcnNcblx0XHRcdHZhciB5ZWFyUmFuZ2UgPSBpbnN0Lm9wdGlvbnMueWVhclJhbmdlO1xuXHRcdFx0aWYgKHllYXJSYW5nZSA9PT0gJ2FueScpIHtcblx0XHRcdFx0c2VsZWN0b3IgPSAnPHNlbGVjdCBjbGFzcz1cIicgKyB0aGlzLl9tb250aFllYXJDbGFzcyArICcgJyArIHRoaXMuX2FueVllYXJDbGFzcyArXG5cdFx0XHRcdFx0J1wiIHRpdGxlPVwiJyArIGluc3Qub3B0aW9ucy55ZWFyU3RhdHVzICsgJ1wiPicgK1xuXHRcdFx0XHRcdCc8b3B0aW9uPicgKyB5ZWFyICsgJzwvb3B0aW9uPjwvc2VsZWN0PicgK1xuXHRcdFx0XHRcdCc8aW5wdXQgY2xhc3M9XCInICsgdGhpcy5fbW9udGhZZWFyQ2xhc3MgKyAnICcgKyB0aGlzLl9jdXJNb250aENsYXNzICtcblx0XHRcdFx0XHRtb250aCArICdcIiB2YWx1ZT1cIicgKyB5ZWFyICsgJ1wiPic7XG5cdFx0XHR9XG5cdFx0XHRlbHNlIHtcblx0XHRcdFx0eWVhclJhbmdlID0geWVhclJhbmdlLnNwbGl0KCc6Jyk7XG5cdFx0XHRcdHZhciB0b2RheVllYXIgPSBjYWxlbmRhci50b2RheSgpLnllYXIoKTtcblx0XHRcdFx0dmFyIHN0YXJ0ID0gKHllYXJSYW5nZVswXS5tYXRjaCgnY1srLV0uKicpID8geWVhciArIHBhcnNlSW50KHllYXJSYW5nZVswXS5zdWJzdHJpbmcoMSksIDEwKSA6XG5cdFx0XHRcdFx0KCh5ZWFyUmFuZ2VbMF0ubWF0Y2goJ1srLV0uKicpID8gdG9kYXlZZWFyIDogMCkgKyBwYXJzZUludCh5ZWFyUmFuZ2VbMF0sIDEwKSkpO1xuXHRcdFx0XHR2YXIgZW5kID0gKHllYXJSYW5nZVsxXS5tYXRjaCgnY1srLV0uKicpID8geWVhciArIHBhcnNlSW50KHllYXJSYW5nZVsxXS5zdWJzdHJpbmcoMSksIDEwKSA6XG5cdFx0XHRcdFx0KCh5ZWFyUmFuZ2VbMV0ubWF0Y2goJ1srLV0uKicpID8gdG9kYXlZZWFyIDogMCkgKyBwYXJzZUludCh5ZWFyUmFuZ2VbMV0sIDEwKSkpO1xuXHRcdFx0XHRzZWxlY3RvciA9ICc8c2VsZWN0IGNsYXNzPVwiJyArIHRoaXMuX21vbnRoWWVhckNsYXNzICtcblx0XHRcdFx0XHQnXCIgdGl0bGU9XCInICsgaW5zdC5vcHRpb25zLnllYXJTdGF0dXMgKyAnXCI+Jztcblx0XHRcdFx0c3RhcnQgPSBjYWxlbmRhci5uZXdEYXRlKHN0YXJ0ICsgMSwgY2FsZW5kYXIuZmlyc3RNb250aCwgY2FsZW5kYXIubWluRGF5KS5hZGQoLTEsICdkJyk7XG5cdFx0XHRcdGVuZCA9IGNhbGVuZGFyLm5ld0RhdGUoZW5kLCBjYWxlbmRhci5maXJzdE1vbnRoLCBjYWxlbmRhci5taW5EYXkpO1xuXHRcdFx0XHR2YXIgYWRkWWVhciA9IGZ1bmN0aW9uKHksIHlEaXNwbGF5KSB7XG5cdFx0XHRcdFx0aWYgKHkgIT09IDAgfHwgY2FsZW5kYXIuaGFzWWVhclplcm8pIHtcblx0XHRcdFx0XHRcdHNlbGVjdG9yICs9ICc8b3B0aW9uIHZhbHVlPVwiJyArXG5cdFx0XHRcdFx0XHRcdE1hdGgubWluKG1vbnRoLCBjYWxlbmRhci5tb250aHNJblllYXIoeSkgLSAxICsgY2FsZW5kYXIubWluTW9udGgpICtcblx0XHRcdFx0XHRcdFx0Jy8nICsgeSArICdcIicgKyAoeWVhciA9PT0geSA/ICcgc2VsZWN0ZWQ9XCJzZWxlY3RlZFwiJyA6ICcnKSArICc+JyArXG5cdFx0XHRcdFx0XHRcdCh5RGlzcGxheSB8fCB5KSArICc8L29wdGlvbj4nO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fTtcblx0XHRcdFx0aWYgKHN0YXJ0LnRvSkQoKSA8IGVuZC50b0pEKCkpIHtcblx0XHRcdFx0XHRzdGFydCA9IChtaW5EYXRlICYmIG1pbkRhdGUuY29tcGFyZVRvKHN0YXJ0KSA9PT0gKzEgPyBtaW5EYXRlIDogc3RhcnQpLnllYXIoKTtcblx0XHRcdFx0XHRlbmQgPSAobWF4RGF0ZSAmJiBtYXhEYXRlLmNvbXBhcmVUbyhlbmQpID09PSAtMSA/IG1heERhdGUgOiBlbmQpLnllYXIoKTtcblx0XHRcdFx0XHR2YXIgZWFybGllckxhdGVyID0gTWF0aC5mbG9vcigoZW5kIC0gc3RhcnQpIC8gMik7XG5cdFx0XHRcdFx0aWYgKCFtaW5EYXRlIHx8IG1pbkRhdGUueWVhcigpIDwgc3RhcnQpIHtcblx0XHRcdFx0XHRcdGFkZFllYXIoc3RhcnQgLSBlYXJsaWVyTGF0ZXIsIGluc3Qub3B0aW9ucy5lYXJsaWVyVGV4dCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGZvciAodmFyIHkgPSBzdGFydDsgeSA8PSBlbmQ7IHkrKykge1xuXHRcdFx0XHRcdFx0YWRkWWVhcih5KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aWYgKCFtYXhEYXRlIHx8IG1heERhdGUueWVhcigpID4gZW5kKSB7XG5cdFx0XHRcdFx0XHRhZGRZZWFyKGVuZCArIGVhcmxpZXJMYXRlciwgaW5zdC5vcHRpb25zLmxhdGVyVGV4dCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdHN0YXJ0ID0gKG1heERhdGUgJiYgbWF4RGF0ZS5jb21wYXJlVG8oc3RhcnQpID09PSAtMSA/IG1heERhdGUgOiBzdGFydCkueWVhcigpO1xuXHRcdFx0XHRcdGVuZCA9IChtaW5EYXRlICYmIG1pbkRhdGUuY29tcGFyZVRvKGVuZCkgPT09ICsxID8gbWluRGF0ZSA6IGVuZCkueWVhcigpO1xuXHRcdFx0XHRcdHZhciBlYXJsaWVyTGF0ZXIgPSBNYXRoLmZsb29yKChzdGFydCAtIGVuZCkgLyAyKTtcblx0XHRcdFx0XHRpZiAoIW1heERhdGUgfHwgbWF4RGF0ZS55ZWFyKCkgPiBzdGFydCkge1xuXHRcdFx0XHRcdFx0YWRkWWVhcihzdGFydCArIGVhcmxpZXJMYXRlciwgaW5zdC5vcHRpb25zLmVhcmxpZXJUZXh0KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Zm9yICh2YXIgeSA9IHN0YXJ0OyB5ID49IGVuZDsgeS0tKSB7XG5cdFx0XHRcdFx0XHRhZGRZZWFyKHkpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZiAoIW1pbkRhdGUgfHwgbWluRGF0ZS55ZWFyKCkgPCBlbmQpIHtcblx0XHRcdFx0XHRcdGFkZFllYXIoZW5kIC0gZWFybGllckxhdGVyLCBpbnN0Lm9wdGlvbnMubGF0ZXJUZXh0KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0c2VsZWN0b3IgKz0gJzwvc2VsZWN0Pic7XG5cdFx0XHR9XG5cdFx0XHRodG1sID0gaHRtbC5yZXBsYWNlKC9cXFxceDJGLywgc2VsZWN0b3IpO1xuXHRcdFx0cmV0dXJuIGh0bWw7XG5cdFx0fSxcblxuXHRcdC8qKiBQcmVwYXJlIGEgcmVuZGVyIHRlbXBsYXRlIGZvciB1c2UuXG5cdFx0XHRFeGNsdWRlIHBvcHVwL2lubGluZSBzZWN0aW9ucyB0aGF0IGFyZSBub3QgYXBwbGljYWJsZS5cblx0XHRcdExvY2FsaXNlIHRleHQgb2YgdGhlIGZvcm06IHtsMTBuOm5hbWV9LlxuXHRcdFx0QG1lbWJlcm9mIENhbGVuZGFyc1BpY2tlclxuXHRcdFx0QHByaXZhdGVcblx0XHRcdEBwYXJhbSB0ZXh0IHtzdHJpbmd9IFRoZSB0ZXh0IHRvIGxvY2FsaXNlLlxuXHRcdFx0QHBhcmFtIGluc3Qge29iamVjdH0gVGhlIGN1cnJlbnQgaW5zdGFuY2Ugc2V0dGluZ3MuXG5cdFx0XHRAcmV0dXJuIHtzdHJpbmd9IFRoZSBsb2NhbGlzZWQgdGV4dC4gKi9cblx0XHRfcHJlcGFyZTogZnVuY3Rpb24odGV4dCwgaW5zdCkge1xuXHRcdFx0dmFyIHJlcGxhY2VTZWN0aW9uID0gZnVuY3Rpb24odHlwZSwgcmV0YWluKSB7XG5cdFx0XHRcdHdoaWxlICh0cnVlKSB7XG5cdFx0XHRcdFx0dmFyIHN0YXJ0ID0gdGV4dC5pbmRleE9mKCd7JyArIHR5cGUgKyAnOnN0YXJ0fScpO1xuXHRcdFx0XHRcdGlmIChzdGFydCA9PT0gLTEpIHtcblx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0dmFyIGVuZCA9IHRleHQuc3Vic3RyaW5nKHN0YXJ0KS5pbmRleE9mKCd7JyArIHR5cGUgKyAnOmVuZH0nKTtcblx0XHRcdFx0XHRpZiAoZW5kID4gLTEpIHtcblx0XHRcdFx0XHRcdHRleHQgPSB0ZXh0LnN1YnN0cmluZygwLCBzdGFydCkgK1xuXHRcdFx0XHRcdFx0XHQocmV0YWluID8gdGV4dC5zdWJzdHIoc3RhcnQgKyB0eXBlLmxlbmd0aCArIDgsIGVuZCAtIHR5cGUubGVuZ3RoIC0gOCkgOiAnJykgK1xuXHRcdFx0XHRcdFx0XHR0ZXh0LnN1YnN0cmluZyhzdGFydCArIGVuZCArIHR5cGUubGVuZ3RoICsgNik7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9O1xuXHRcdFx0cmVwbGFjZVNlY3Rpb24oJ2lubGluZScsIGluc3QuaW5saW5lKTtcblx0XHRcdHJlcGxhY2VTZWN0aW9uKCdwb3B1cCcsICFpbnN0LmlubGluZSk7XG5cdFx0XHR2YXIgcGF0dGVybiA9IC9cXHtsMTBuOihbXlxcfV0rKVxcfS87XG5cdFx0XHR2YXIgbWF0Y2hlcyA9IG51bGw7XG5cdFx0XHR3aGlsZSAobWF0Y2hlcyA9IHBhdHRlcm4uZXhlYyh0ZXh0KSkge1xuXHRcdFx0XHR0ZXh0ID0gdGV4dC5yZXBsYWNlKG1hdGNoZXNbMF0sIGluc3Qub3B0aW9uc1ttYXRjaGVzWzFdXSk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gdGV4dDtcblx0XHR9XG5cdH0pO1xuXG5cdHZhciBwbHVnaW4gPSAkLmNhbGVuZGFyc1BpY2tlcjsgLy8gU2luZ2xldG9uIGluc3RhbmNlXG5cblx0JChmdW5jdGlvbigpIHtcblx0XHQkKGRvY3VtZW50KS5vbignbW91c2Vkb3duLicgKyBwbHVnaW5OYW1lLCBwbHVnaW4uX2NoZWNrRXh0ZXJuYWxDbGljaykuXG5cdFx0XHRvbigncmVzaXplLicgKyBwbHVnaW5OYW1lLCBmdW5jdGlvbigpIHsgcGx1Z2luLmhpZGUocGx1Z2luLmN1ckluc3QpOyB9KTtcblx0fSk7XG5cbn0pKGpRdWVyeSk7XG4iXSwic291cmNlUm9vdCI6Ii9zb3VyY2UvIn0=
diff --git a/src/Orchard.Web/Modules/Orchard.Resources/Scripts/Calendars/jquery.calendars.picker.lang.js b/src/Orchard.Web/Modules/Orchard.Resources/Scripts/Calendars/jquery.calendars.picker.lang.js
index 58683c4ff..b03a4fc8c 100644
--- a/src/Orchard.Web/Modules/Orchard.Resources/Scripts/Calendars/jquery.calendars.picker.lang.js
+++ b/src/Orchard.Web/Modules/Orchard.Resources/Scripts/Calendars/jquery.calendars.picker.lang.js
@@ -1574,5 +1574,3 @@
};
$.calendarsPicker.setDefaults($.calendarsPicker.regionalOptions['zh-TW']);
})(jQuery);
-
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImpxdWVyeS5jYWxlbmRhcnMucGlja2VyLmxhbmcuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEFBTEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6ImpxdWVyeS5jYWxlbmRhcnMucGlja2VyLmxhbmcuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBodHRwOi8va2VpdGgtd29vZC5uYW1lL2NhbGVuZGFycy5odG1sXG4gICBDYWxlbmRhcnMgZGF0ZSBwaWNrZXIgbG9jYWxpc2F0aW9ucyBmb3IgalF1ZXJ5IHYyLjAuMS5cbiAgIFdyaXR0ZW4gYnkgS2VpdGggV29vZCAoa2J3b29ke2F0fWlpbmV0LmNvbS5hdSkgQXVndXN0IDIwMDkuXG4gICBBdmFpbGFibGUgdW5kZXIgdGhlIE1JVCAoaHR0cDovL2tlaXRoLXdvb2QubmFtZS9saWNlbmNlLmh0bWwpIGxpY2Vuc2UuIFxuICAgUGxlYXNlIGF0dHJpYnV0ZSB0aGUgYXV0aG9yIGlmIHlvdSB1c2UgaXQuICovXG4vKiBodHRwOi8va2VpdGgtd29vZC5uYW1lL2NhbGVuZGFycy5odG1sXG4gICBBZnJpa2FhbnMgbG9jYWxpc2F0aW9uIGZvciBjYWxlbmRhcnMgZGF0ZXBpY2tlciBmb3IgalF1ZXJ5LlxuICAgV3JpdHRlbiBieSBSZW5pZXIgUHJldG9yaXVzIGFuZCBSdWVkaWdlciBUaGllZGUuICovXG4oZnVuY3Rpb24oJCkge1xuXHQkLmNhbGVuZGFyc1BpY2tlci5yZWdpb25hbE9wdGlvbnNbJ2FmJ10gPSB7XG5cdFx0cmVuZGVyZXI6ICQuY2FsZW5kYXJzUGlja2VyLmRlZmF1bHRSZW5kZXJlcixcblx0XHRwcmV2VGV4dDogJ1ZvcmlnZScsIHByZXZTdGF0dXM6ICdWZXJ0b29uIHZvcmlnZSBtYWFuZCcsXG5cdFx0cHJldkp1bXBUZXh0OiAnJiN4M2M7JiN4M2M7JywgcHJldkp1bXBTdGF0dXM6ICdWZXJ0b29uIHZvcmlnZSBqYWFyJyxcblx0XHRuZXh0VGV4dDogJ1ZvbGdlbmRlJywgbmV4dFN0YXR1czogJ1ZlcnRvb24gdm9sZ2VuZGUgbWFhbmQnLFxuXHRcdG5leHRKdW1wVGV4dDogJyYjeDNlOyYjeDNlOycsIG5leHRKdW1wU3RhdHVzOiAnVmVydG9vbiB2b2xnZW5kZSBqYWFyJyxcblx0XHRjdXJyZW50VGV4dDogJ1ZhbmRhZycsIGN1cnJlbnRTdGF0dXM6ICdWZXJ0b29uIGh1aWRpZ2UgbWFhbmQnLFxuXHRcdHRvZGF5VGV4dDogJ1ZhbmRhZycsIHRvZGF5U3RhdHVzOiAnVmVydG9vbiBodWlkaWdlIG1hYW5kJyxcblx0XHRjbGVhclRleHQ6ICdWZWUgdWl0JywgY2xlYXJTdGF0dXM6ICdWZXJ3eWRlciBkaWUgaHVpZGlnZSBkYXR1bScsXG5cdFx0Y2xvc2VUZXh0OiAnS2xhYXInLCBjbG9zZVN0YXR1czogJ1NsdWl0IHNvbmRlciB2ZXJhbmRlcmluZycsXG5cdFx0eWVhclN0YXR1czogJ1ZlcnRvb24gXFwnbiBhbmRlciBqYWFyJywgbW9udGhTdGF0dXM6ICdWZXJ0b29uIFxcJ24gYW5kZXIgbWFhbmQnLFxuXHRcdHdlZWtUZXh0OiAnV2snLCB3ZWVrU3RhdHVzOiAnV2VlayB2YW4gZGllIGphYXInLFxuXHRcdGRheVN0YXR1czogJ0tpZXMgREQsIE0gZCcsIGRlZmF1bHRTdGF0dXM6ICdLaWVzIFxcJ24gZGF0dW0nLFxuXHRcdGlzUlRMOiBmYWxzZVxuXHR9O1xuXHQkLmNhbGVuZGFyc1BpY2tlci5zZXREZWZhdWx0cygkLmNhbGVuZGFyc1BpY2tlci5yZWdpb25hbE9wdGlvbnNbJ2FmJ10pO1xufSkoalF1ZXJ5KTtcbu+7vy8qIGh0dHA6Ly9rZWl0aC13b29kLm5hbWUvY2FsZW5kYXJzLmh0bWxcbiAgIEFtaGFyaWMgKOGKoOGIm+GIreGKmykgbG9jYWxpc2F0aW9uIGZvciBjYWxlbmRhcnMgZGF0ZXBpY2tlciBmb3IgalF1ZXJ5LlxuICAgTGV5dSBTaXNheS4gKi9cbihmdW5jdGlvbigkKSB7XG5cdCQuY2FsZW5kYXJzUGlja2VyLnJlZ2lvbmFsT3B0aW9uc1snYW0nXSA9IHtcblx0XHRyZW5kZXJlcjogJC5jYWxlbmRhcnNQaWNrZXIuZGVmYXVsdFJlbmRlcmVyLFxuXHRcdHByZXZUZXh0OiAn4Yur4YiI4Y2IJywgcHJldlN0YXR1czogJ+GLq+GIiOGNiOGLjeGKlSDhi4jhiK0g4Yqg4Yiz4YutJyxcblx0XHRwcmV2SnVtcFRleHQ6ICcmI3gzYzsmI3gzYzsnLCBwcmV2SnVtcFN0YXR1czogJ+GLq+GIiOGNiOGLjeGKlSDhi5PhiJjhibUg4Yqg4Yiz4YutJyxcblx0XHRuZXh0VGV4dDogJ+GJgOGMo+GLrScsIG5leHRTdGF0dXM6ICfhiYDhjKPhi6nhipUg4YuI4YitIOGKoOGIs+GLrScsXG5cdFx0bmV4dEp1bXBUZXh0OiAnJiN4M2U7JiN4M2U7JywgbmV4dEp1bXBTdGF0dXM6ICfhiYDhjKPhi6nhipUg4YuT4YiY4Ym1IOGKoOGIs+GLrScsXG5cdFx0Y3VycmVudFRleHQ6ICfhiqDhiIHhipUnLCBjdXJyZW50U3RhdHVzOiAn4Yuo4Yqg4YiB4YqR4YqVIOGLiOGIrSDhiqDhiLPhi60nLFxuXHRcdHRvZGF5VGV4dDogJ+GLm+GIrCcsIHRvZGF5U3RhdHVzOiAn4Yuo4Yub4Yis4YqVIOGLiOGIrSDhiqDhiLPhi60nLFxuXHRcdGNsZWFyVGV4dDogJ+GKoOGMpeGNiycsIGNsZWFyU3RhdHVzOiAn4Yuo4Ymw4YiY4Yio4Yyg4YuN4YqVIOGJgOGKlSDhiqDhjKXhjYsnLFxuXHRcdGNsb3NlVGV4dDogJ+GLneGMiycsIGNsb3NlU3RhdHVzOiAn4Yuo4YmA4YqVIOGImOGIneGIqOGMq+GLjeGKlSDhi53hjIsnLFxuXHRcdHllYXJTdGF0dXM6ICfhi5PhiJjhibHhipUg4YmA4Yut4YitJywgbW9udGhTdGF0dXM6ICfhi4jhiKnhipUg4YmA4Yut4YitJyxcblx0XHR3ZWVrVGV4dDogJ+GIs+GInScsIHdlZWtTdGF0dXM6ICfhi6jhi5PhiJjhibEg4Yiz4Yid4YqV4Ym1ICcsXG5cdFx0ZGF5U3RhdHVzOiAnREQsIE0gZCwgeXl5eSDhiJ3hiKjhjKUnLCBkZWZhdWx0U3RhdHVzOiAn4YmA4YqVIOGIneGIqOGMpScsXG5cdFx0aXNSVEw6IGZhbHNlXG5cdH07XG5cdCQuY2FsZW5kYXJzUGlja2VyLnNldERlZmF1bHRzKCQuY2FsZW5kYXJzUGlja2VyLnJlZ2lvbmFsT3B0aW9uc1snYW0nXSk7XG59KShqUXVlcnkpO1xu77u/LyogaHR0cDovL2tlaXRoLXdvb2QubmFtZS9jYWxlbmRhcnMuaHRtbFxuICAgQWxnZXJpYW4gKGFuZCBUdW5pc2lhbikgQXJhYmljIGxvY2FsaXNhdGlvbiBmb3IgY2FsZW5kYXJzIGRhdGVwaWNrZXIgZm9yIGpRdWVyeS5cbiAgIE1vaGFtZWQgQ2hlcmlmIEJPVUNIRUxBR0hFTSAtLSBjaGVyaWZib3VjaGVsYWdoZW1AeWFob28uZnIgKi9cbihmdW5jdGlvbigkKSB7XG5cdCQuY2FsZW5kYXJzUGlja2VyLnJlZ2lvbmFsT3B0aW9uc1snYXItRFonXSA9IHtcblx0XHRyZW5kZXJlcjogJC5jYWxlbmRhcnNQaWNrZXIuZGVmYXVsdFJlbmRlcmVyLFxuXHRcdHByZXZUZXh0OiAnJiN4M2M72KfZhNiz2KfYqNmCJywgcHJldlN0YXR1czogJ9i52LHYtiDYp9mE2LTZh9ixINin2YTYs9in2KjZgicsXG5cdFx0cHJldkp1bXBUZXh0OiAnJiN4M2M7JiN4M2M7JywgcHJldkp1bXBTdGF0dXM6ICcnLFxuXHRcdG5leHRUZXh0OiAn2KfZhNiq2KfZhNmKJiN4M2U7JywgbmV4dFN0YXR1czogJ9i52LHYtiDYp9mE2LTZh9ixINin2YTZgtin2K/ZhScsXG5cdFx0bmV4dEp1bXBUZXh0OiAnJiN4M2U7JiN4M2U7JywgbmV4dEp1bXBTdGF0dXM6ICcnLFxuXHRcdGN1cnJlbnRUZXh0OiAn2KfZhNmK2YjZhScsIGN1cnJlbnRTdGF0dXM6ICfYudix2LYg2KfZhNi02YfYsSDYp9mE2K3Yp9mE2YonLFxuXHRcdHRvZGF5VGV4dDogJ9in2YTZitmI2YUnLCB0b2RheVN0YXR1czogJ9i52LHYtiDYp9mE2LTZh9ixINin2YTYrdin2YTZiicsXG5cdFx0Y2xlYXJUZXh0OiAn2YXYs9itJywgY2xlYXJTdGF0dXM6ICfYp9mF2LPYrSDYp9mE2KrYp9ix2YrYriDYp9mE2K3Yp9mE2YonLFxuXHRcdGNsb3NlVGV4dDogJ9il2LrZhNin2YInLCBjbG9zZVN0YXR1czogJ9il2LrZhNin2YIg2KjYr9mI2YYg2K3Zgdi4Jyxcblx0XHR5ZWFyU3RhdHVzOiAn2LnYsdi2INiz2YbYqSDYotiu2LHZiScsIG1vbnRoU3RhdHVzOiAn2LnYsdi2INi02YfYsSDYotiu2LEnLFxuXHRcdHdlZWtUZXh0OiAn2KPYs9io2YjYuScsIHdlZWtTdGF0dXM6ICfYo9iz2KjZiNi5INin2YTYs9mG2KknLFxuXHRcdGRheVN0YXR1czogJ9in2K7YqtixIEQsIE0gZCcsIGRlZmF1bHRTdGF0dXM6ICfYp9iu2KrYsSDZitmI2YUnLFxuXHRcdGlzUlRMOiB0cnVlXG5cdH07XG5cdCQuY2FsZW5kYXJzUGlja2VyLnNldERlZmF1bHRzKCQuY2FsZW5kYXJzUGlja2VyLnJlZ2lvbmFsT3B0aW9uc1snYXItRFonXSk7XG59KShqUXVlcnkpO1xu77u/LyogaHR0cDovL2tlaXRoLXdvb2QubmFtZS9jYWxlbmRhcnMuaHRtbFxuICAgQXJhYmljIGxvY2FsaXNhdGlvbiBmb3IgY2FsZW5kYXJzIGRhdGVwaWNrZXIgZm9yIGpRdWVyeS5cbiAgIE1haG1vdWQgS2hhbGVkIC0tIG1haG1vdWQua2hhbGVkQGJhZHJpdC5jb21cbiAgIE5PVEU6IG1vbnRoTmFtZXMgYXJlIHRoZSBuZXcgbW9udGhzIG5hbWVzICovXG4oZnVuY3Rpb24oJCkge1xuXHQkLmNhbGVuZGFyc1BpY2tlci5yZWdpb25hbE9wdGlvbnNbJ2FyLUVHJ10gPSB7XG5cdFx0cmVuZGVyZXI6ICQuY2FsZW5kYXJzUGlja2VyLmRlZmF1bHRSZW5kZXJlcixcblx0XHRwcmV2VGV4dDogJyYjeDNjO9in2YTYs9in2KjZgicsIHByZXZTdGF0dXM6ICfYudix2LYg2KfZhNi02YfYsSDYp9mE2LPYp9io2YInLFxuXHRcdHByZXZKdW1wVGV4dDogJyYjeDNjOyYjeDNjOycsIHByZXZKdW1wU3RhdHVzOiAnJyxcblx0XHRuZXh0VGV4dDogJ9in2YTYqtin2YTZiiYjeDNlOycsIG5leHRTdGF0dXM6ICfYudix2LYg2KfZhNi02YfYsSDYp9mE2YLYp9iv2YUnLFxuXHRcdG5leHRKdW1wVGV4dDogJyYjeDNlOyYjeDNlOycsIG5leHRKdW1wU3RhdHVzOiAnJyxcblx0XHRjdXJyZW50VGV4dDogJ9in2YTZitmI2YUnLCBjdXJyZW50U3RhdHVzOiAn2LnYsdi2INin2YTYtNmH2LEg2KfZhNit2KfZhNmKJyxcblx0XHR0b2RheVRleHQ6ICfYp9mE2YrZiNmFJywgdG9kYXlTdGF0dXM6ICfYudix2LYg2KfZhNi02YfYsSDYp9mE2K3Yp9mE2YonLFxuXHRcdGNsZWFyVGV4dDogJ9mF2LPYrScsIGNsZWFyU3RhdHVzOiAn2KfZhdiz2K0g2KfZhNiq2KfYsdmK2K4g2KfZhNit2KfZhNmKJyxcblx0XHRjbG9zZVRleHQ6ICfYpdi62YTYp9mCJywgY2xvc2VTdGF0dXM6ICfYpdi62YTYp9mCINio2K/ZiNmGINit2YHYuCcsXG5cdFx0eWVhclN0YXR1czogJ9i52LHYtiDYs9mG2Kkg2KLYrtix2YknLCBtb250aFN0YXR1czogJ9i52LHYtiDYtNmH2LEg2KLYrtixJyxcblx0XHR3ZWVrVGV4dDogJ9ij2LPYqNmI2LknLCB3ZWVrU3RhdHVzOiAn2KPYs9io2YjYuSDYp9mE2LPZhtipJyxcblx0XHRkYXlTdGF0dXM6ICfYp9iu2KrYsSBELCBNIGQnLCBkZWZhdWx0U3RhdHVzOiAn2KfYrtiq2LEg2YrZiNmFJyxcblx0XHRpc1JUTDogdHJ1ZVxuXHR9O1xuXHQkLmNhbGVuZGFyc1BpY2tlci5zZXREZWZhdWx0cygkLmNhbGVuZGFyc1BpY2tlci5yZWdpb25hbE9wdGlvbnNbJ2FyLUVHJ10pO1xufSkoalF1ZXJ5KTtcbu+7vy8qIGh0dHA6Ly9rZWl0aC13b29kLm5hbWUvY2FsZW5kYXJzLmh0bWxcbiAgIEFyYWJpYyBsb2NhbGlzYXRpb24gZm9yIGNhbGVuZGFycyBkYXRlcGlja2VyIGZvciBqUXVlcnkuXG4gICBLaGFsZWQgQWwgSG9yYW5pIC0tINiu2KfZhNivINin2YTYrdmI2LHYp9mG2YogLS0ga29rby5kd0BnbWFpbC5jb20gKi9cbihmdW5jdGlvbigkKSB7XG5cdCQuY2FsZW5kYXJzUGlja2VyLnJlZ2lvbmFsT3B0aW9uc1snYXInXSA9IHtcblx0XHRyZW5kZXJlcjogJC5jYWxlbmRhcnNQaWNrZXIuZGVmYXVsdFJlbmRlcmVyLFxuXHRcdHByZXZUZXh0OiAnJiN4M2M72KfZhNiz2KfYqNmCJywgcHJldlN0YXR1czogJ9i52LHYtiDYp9mE2LTZh9ixINin2YTYs9in2KjZgicsXG5cdFx0cHJldkp1bXBUZXh0OiAnJiN4M2M7JiN4M2M7JywgcHJldkp1bXBTdGF0dXM6ICcnLFxuXHRcdG5leHRUZXh0OiAn2KfZhNiq2KfZhNmKJiN4M2U7JywgbmV4dFN0YXR1czogJ9i52LHYtiDYp9mE2LTZh9ixINin2YTZgtin2K/ZhScsXG5cdFx0bmV4dEp1bXBUZXh0OiAnJiN4M2U7JiN4M2U7JywgbmV4dEp1bXBTdGF0dXM6ICcnLFxuXHRcdGN1cnJlbnRUZXh0OiAn2KfZhNmK2YjZhScsIGN1cnJlbnRTdGF0dXM6ICfYudix2LYg2KfZhNi02YfYsSDYp9mE2K3Yp9mE2YonLFxuXHRcdHRvZGF5VGV4dDogJ9in2YTZitmI2YUnLCB0b2RheVN0YXR1czogJ9i52LHYtiDYp9mE2LTZh9ixINin2YTYrdin2YTZiicsXG5cdFx0Y2xlYXJUZXh0OiAn2YXYs9itJywgY2xlYXJTdGF0dXM6ICfYp9mF2LPYrSDYp9mE2KrYp9ix2YrYriDYp9mE2K3Yp9mE2YonLFxuXHRcdGNsb3NlVGV4dDogJ9il2LrZhNin2YInLCBjbG9zZVN0YXR1czogJ9il2LrZhNin2YIg2KjYr9mI2YYg2K3Zgdi4Jyxcblx0XHR5ZWFyU3RhdHVzOiAn2LnYsdi2INiz2YbYqSDYotiu2LHZiScsIG1vbnRoU3RhdHVzOiAn2LnYsdi2INi02YfYsSDYotiu2LEnLFxuXHRcdHdlZWtUZXh0OiAn2KPYs9io2YjYuScsIHdlZWtTdGF0dXM6ICfYo9iz2KjZiNi5INin2YTYs9mG2KknLFxuXHRcdGRheVN0YXR1czogJ9in2K7YqtixIEQsIE0gZCcsIGRlZmF1bHRTdGF0dXM6ICfYp9iu2KrYsSDZitmI2YUnLFxuXHRcdGlzUlRMOiB0cnVlXG5cdH07XG5cdCQuY2FsZW5kYXJzUGlja2VyLnNldERlZmF1bHRzKCQuY2FsZW5kYXJzUGlja2VyLnJlZ2lvbmFsT3B0aW9uc1snYXInXSk7XG59KShqUXVlcnkpO1xu77u/LyogaHR0cDovL2tlaXRoLXdvb2QubmFtZS9jYWxlbmRhcnMuaHRtbFxuICAgQXplcmJhaWphbmkgbG9jYWxpc2F0aW9uIGZvciBjYWxlbmRhcnMgZGF0ZXBpY2tlciBmb3IgalF1ZXJ5LlxuICAgV3JpdHRlbiBieSBKYW1pbCBOYWphZm92IChuZWNlZm92MzNAZ21haWwuY29tKS4gKi9cbihmdW5jdGlvbigkKSB7XG5cdCQuY2FsZW5kYXJzUGlja2VyLnJlZ2lvbmFsT3B0aW9uc1snYXonXSA9IHtcblx0XHRyZW5kZXJlcjogJC5jYWxlbmRhcnNQaWNrZXIuZGVmYXVsdFJlbmRlcmVyLFxuXHRcdHByZXZUZXh0OiAnJiN4M2M7R2VyaScsICBwcmV2U3RhdHVzOiAnxo92dsmZbGtpIGF5Jyxcblx0XHRwcmV2SnVtcFRleHQ6ICcmI3gzYzsmI3gzYzsnLCBwcmV2SnVtcFN0YXR1czogJ8aPdnbJmWxraSBpbCcsXG5cdFx0bmV4dFRleHQ6ICfEsHLJmWxpJiN4M2U7JywgbmV4dFN0YXR1czogJ1NvbnJha8SxIGF5Jyxcblx0XHRuZXh0SnVtcFRleHQ6ICcmI3gzZTsmI3gzZTsnLCBuZXh0SnVtcFN0YXR1czogJ1NvbnJha8SxIGlsJyxcblx0XHRjdXJyZW50VGV4dDogJ0J1Z8O8bicsIGN1cnJlbnRTdGF0dXM6ICfEsG5kaWtpIGF5Jyxcblx0XHR0b2RheVRleHQ6ICdCdWfDvG4nLCB0b2RheVN0YXR1czogJ8SwbmRpa2kgYXknLFxuXHRcdGNsZWFyVGV4dDogJ1TJmW1pemzJmScsIGNsZWFyU3RhdHVzOiAnVGFyaXhpIHNpbCcsXG5cdFx0Y2xvc2VUZXh0OiAnQmHEn2xhJywgY2xvc2VTdGF0dXM6ICdUyZlxdmltaSBiYcSfbGEnLFxuXHRcdHllYXJTdGF0dXM6ICdCYcWfcWEgaWwnLCBtb250aFN0YXR1czogJ0JhxZ9xYSBheScsXG5cdFx0d2Vla1RleHQ6ICdIZicsIHdlZWtTdGF0dXM6ICdIyZlmdMmZbMmZcicsXG5cdFx0ZGF5U3RhdHVzOiAnRCwgTSBkIHNlw6dpbicsIGRlZmF1bHRTdGF0dXM6ICdCaXIgdGFyaXggc2XDp2luJyxcblx0XHRpc1JUTDogZmFsc2Vcblx0fTtcblx0JC5jYWxlbmRhcnNQaWNrZXIuc2V0RGVmYXVsdHMoJC5jYWxlbmRhcnNQaWNrZXIucmVnaW9uYWxPcHRpb25zWydheiddKTtcbn0pKGpRdWVyeSk7XG7vu78vKiBodHRwOi8va2VpdGgtd29vZC5uYW1lL2NhbGVuZGFycy5odG1sXG4gICBCdWxnYXJpYW4gbG9jYWxpc2F0aW9uIGZvciBjYWxlbmRhcnMgZGF0ZXBpY2tlciBmb3IgalF1ZXJ5LlxuICAgV3JpdHRlbiBieSBTdG95YW4gS3lvc2V2IChodHRwOi8vc3Zlc3Qub3JnKS4gKi9cbihmdW5jdGlvbigkKSB7XG5cdCQuY2FsZW5kYXJzUGlja2VyLnJlZ2lvbmFsT3B0aW9uc1snYmcnXSA9IHtcblx0XHRyZW5kZXJlcjogJC5jYWxlbmRhcnNQaWNrZXIuZGVmYXVsdFJlbmRlcmVyLFxuICAgICAgICBwcmV2VGV4dDogJyYjeDNjO9C90LDQt9Cw0LQnLCBwcmV2U3RhdHVzOiAn0L/QvtC60LDQttC4INC/0L7RgdC70LXQtNC90LjRjyDQvNC10YHQtdGGJyxcblx0XHRwcmV2SnVtcFRleHQ6ICcmI3gzYzsmI3gzYzsnLCBwcmV2SnVtcFN0YXR1czogJycsXG4gICAgICAgIG5leHRUZXh0OiAn0L3QsNC/0YDQtdC0JiN4M2U7JywgbmV4dFN0YXR1czogJ9C/0L7QutCw0LbQuCDRgdC70LXQtNCy0LDRidC40Y8g0LzQtdGB0LXRhicsXG5cdFx0bmV4dEp1bXBUZXh0OiAnJiN4M2U7JiN4M2U7JywgbmV4dEp1bXBTdGF0dXM6ICcnLFxuICAgICAgICBjdXJyZW50VGV4dDogJ9C00L3QtdGBJywgY3VycmVudFN0YXR1czogJycsXG5cdFx0dG9kYXlUZXh0OiAn0LTQvdC10YEnLCB0b2RheVN0YXR1czogJycsXG5cdFx0Y2xlYXJUZXh0OiAn0LjQt9GH0LjRgdGC0LgnLCBjbGVhclN0YXR1czogJ9C40LfRh9C40YHRgtC4INCw0LrRgtGD0LDQu9C90LDRgtCwINC00LDRgtCwJyxcbiAgICAgICAgY2xvc2VUZXh0OiAn0LfQsNGC0LLQvtGA0LgnLCBjbG9zZVN0YXR1czogJ9C30LDRgtCy0L7RgNC4INCx0LXQtyDQv9GA0L7QvNC10L3QuCcsXG5cdFx0eWVhclN0YXR1czogJ9C/0L7QutCw0LbQuCDQtNGA0YPQs9CwINCz0L7QtNC40L3QsCcsIG1vbnRoU3RhdHVzOiAn0L/QvtC60LDQttC4INC00YDRg9CzINC80LXRgdC10YYnLFxuXHRcdHdlZWtUZXh0OiAnV2snLCB3ZWVrU3RhdHVzOiAn0YHQtdC00LzQuNGG0LAg0L7RgiDQvNC10YHQtdGG0LAnLFxuXHRcdGRheVN0YXR1czogJ9CY0LfQsdC10YDQuCBELCBNIGQnLCBkZWZhdWx0U3RhdHVzOiAn0JjQt9Cx0LXRgNC4INC00LDRgtCwJyxcblx0XHRpc1JUTDogZmFsc2Vcblx0fTtcblx0JC5jYWxlbmRhcnNQaWNrZXIuc2V0RGVmYXVsdHMoJC5jYWxlbmRhcnNQaWNrZXIucmVnaW9uYWxPcHRpb25zWydiZyddKTtcbn0pKGpRdWVyeSk7XG7vu78vKiBodHRwOi8va2VpdGgtd29vZC5uYW1lL2NhbGVuZGFycy5odG1sXG4gICBCb3NuaWFuIGxvY2FsaXNhdGlvbiBmb3IgY2FsZW5kYXJzIGRhdGVwaWNrZXIgZm9yIGpRdWVyeS5cbiAgIEtlbmFuIEtvbmpvLiAqL1xuKGZ1bmN0aW9uKCQpIHtcblx0JC5jYWxlbmRhcnNQaWNrZXIucmVnaW9uYWxPcHRpb25zWydicyddID0ge1xuXHRcdHJlbmRlcmVyOiAkLmNhbGVuZGFyc1BpY2tlci5kZWZhdWx0UmVuZGVyZXIsXG5cdFx0cHJldlRleHQ6ICcmI3gzYzsnLCBwcmV2U3RhdHVzOiAnJyxcblx0XHRwcmV2SnVtcFRleHQ6ICcmI3gzYzsmI3gzYzsnLCBwcmV2SnVtcFN0YXR1czogJycsXG5cdFx0bmV4dFRleHQ6ICcmI3gzZTsnLCBuZXh0U3RhdHVzOiAnJyxcblx0XHRuZXh0SnVtcFRleHQ6ICcmI3gzZTsmI3gzZTsnLCBuZXh0SnVtcFN0YXR1czogJycsXG5cdFx0Y3VycmVudFRleHQ6ICdEYW5hcycsIGN1cnJlbnRTdGF0dXM6ICcnLFxuXHRcdHRvZGF5VGV4dDogJ0RhbmFzJywgdG9kYXlTdGF0dXM6ICcnLFxuXHRcdGNsZWFyVGV4dDogJ1gnLCBjbGVhclN0YXR1czogJycsXG5cdFx0Y2xvc2VUZXh0OiAnWmF0dm9yaScsIGNsb3NlU3RhdHVzOiAnJyxcblx0XHR5ZWFyU3RhdHVzOiAnJywgbW9udGhTdGF0dXM6ICcnLFxuXHRcdHdlZWtUZXh0OiAnV2snLCB3ZWVrU3RhdHVzOiAnJyxcblx0XHRkYXlTdGF0dXM6ICcnLCBkZWZhdWx0U3RhdHVzOiAnJyxcblx0XHRpc1JUTDogZmFsc2Vcblx0fTtcblx0JC5jYWxlbmRhcnNQaWNrZXIuc2V0RGVmYXVsdHMoJC5jYWxlbmRhcnNQaWNrZXIucmVnaW9uYWxPcHRpb25zWydicyddKTtcbn0pKGpRdWVyeSk7XG7vu78vKiBodHRwOi8va2VpdGgtd29vZC5uYW1lL2NhbGVuZGFycy5odG1sXG4gICBDYXRhbGFuIGxvY2FsaXNhdGlvbiBmb3IgY2FsZW5kYXJzIGRhdGVwaWNrZXIgZm9yIGpRdWVyeS5cbiAgIFdyaXRlcnM6IChqb2FuLmxlb25AZ21haWwuY29tKS4gKi9cbihmdW5jdGlvbigkKSB7XG5cdCQuY2FsZW5kYXJzUGlja2VyLnJlZ2lvbmFsT3B0aW9uc1snY2EnXSA9IHtcblx0XHRyZW5kZXJlcjogJC5jYWxlbmRhcnNQaWNrZXIuZGVmYXVsdFJlbmRlcmVyLFxuXHRcdHByZXZUZXh0OiAnJiN4M2M7QW50JywgcHJldlN0YXR1czogJycsXG5cdFx0cHJldkp1bXBUZXh0OiAnJiN4M2M7JiN4M2M7JywgcHJldkp1bXBTdGF0dXM6ICcnLFxuXHRcdG5leHRUZXh0OiAnU2VnJiN4M2U7JywgbmV4dFN0YXR1czogJycsXG5cdFx0bmV4dEp1bXBUZXh0OiAnJiN4M2U7JiN4M2U7JywgbmV4dEp1bXBTdGF0dXM6ICcnLFxuXHRcdGN1cnJlbnRUZXh0OiAnQXZ1aScsIGN1cnJlbnRTdGF0dXM6ICcnLFxuXHRcdHRvZGF5VGV4dDogJ0F2dWknLCB0b2RheVN0YXR1czogJycsXG5cdFx0Y2xlYXJUZXh0OiAnTmV0ZWphcicsIGNsZWFyU3RhdHVzOiAnJyxcblx0XHRjbG9zZVRleHQ6ICdUYW5jYXInLCBjbG9zZVN0YXR1czogJycsXG5cdFx0eWVhclN0YXR1czogJycsIG1vbnRoU3RhdHVzOiAnJyxcblx0XHR3ZWVrVGV4dDogJ1drJywgd2Vla1N0YXR1czogJycsXG5cdFx0ZGF5U3RhdHVzOiAnREQsIE0gZCcsIGRlZmF1bHRTdGF0dXM6ICcnLFxuXHRcdGlzUlRMOiBmYWxzZVxuXHR9O1xuXHQkLmNhbGVuZGFyc1BpY2tlci5zZXREZWZhdWx0cygkLmNhbGVuZGFyc1BpY2tlci5yZWdpb25hbE9wdGlvbnNbJ2NhJ10pO1xufSkoalF1ZXJ5KTtcbu+7vy8qIGh0dHA6Ly9rZWl0aC13b29kLm5hbWUvY2FsZW5kYXJzLmh0bWxcbiAgIEN6ZWNoIGxvY2FsaXNhdGlvbiBmb3IgY2FsZW5kYXJzIGRhdGVwaWNrZXIgZm9yIGpRdWVyeS5cbiAgIFdyaXR0ZW4gYnkgVG9tYXMgTXVsbGVyICh0b21hc0B0b21hcy1tdWxsZXIubmV0KS4gKi9cbihmdW5jdGlvbigkKSB7XG5cdCQuY2FsZW5kYXJzUGlja2VyLnJlZ2lvbmFsT3B0aW9uc1snY3MnXSA9IHtcblx0XHRyZW5kZXJlcjogJC5jYWxlbmRhcnNQaWNrZXIuZGVmYXVsdFJlbmRlcmVyLFxuXHRcdHByZXZUZXh0OiAnJiN4M2M7RMWZw612ZScsIHByZXZTdGF0dXM6ICdQxZllasOtdCBuYSBwxZllZGNob3rDrSBtxJtzw60nLFxuXHRcdHByZXZKdW1wVGV4dDogJyYjeDNjOyYjeDNjOycsIHByZXZKdW1wU3RhdHVzOiAnJyxcblx0XHRuZXh0VGV4dDogJ1BvemTEm2ppJiN4M2U7JywgbmV4dFN0YXR1czogJ1DFmWVqw610IG5hIGRhbMWhw60gbcSbc8OtYycsXG5cdFx0bmV4dEp1bXBUZXh0OiAnJiN4M2U7JiN4M2U7JywgbmV4dEp1bXBTdGF0dXM6ICcnLFxuXHRcdGN1cnJlbnRUZXh0OiAnTnluw60nLCBjdXJyZW50U3RhdHVzOiAnUMWZZWpkZSBuYSBha3R1w6FsbsOtIG3Em3PDrWMnLFxuXHRcdHRvZGF5VGV4dDogJ055bsOtJywgdG9kYXlTdGF0dXM6ICdQxZllamRlIG5hIGFrdHXDoWxuw60gbcSbc8OtYycsXG5cdFx0Y2xlYXJUZXh0OiAnVnltYXphdCcsIGNsZWFyU3RhdHVzOiAnVnltYcW+ZSB6YWRhbsOpIGRhdHVtJyxcblx0XHRjbG9zZVRleHQ6ICdaYXbFmcOtdCcsICBjbG9zZVN0YXR1czogJ1phdsWZZSBrYWxlbmTDocWZIGJlemUgem3Em255Jyxcblx0XHR5ZWFyU3RhdHVzOiAnUMWZZWrDrXQgbmEgamluw70gcm9rJywgbW9udGhTdGF0dXM6ICdQxZllasOtdCBuYSBqaW7DvSBtxJtzw61jJyxcblx0XHR3ZWVrVGV4dDogJ1TDvWQnLCB3ZWVrU3RhdHVzOiAnVMO9ZGVuIHYgcm9jZScsXG5cdFx0ZGF5U3RhdHVzOiAnXFwnVnliZXJcXCcgREQsIE0gZCcsIGRlZmF1bHRTdGF0dXM6ICdWeWJlcnRlIGRhdHVtJyxcblx0XHRpc1JUTDogZmFsc2Vcblx0fTtcblx0JC5jYWxlbmRhcnNQaWNrZXIuc2V0RGVmYXVsdHMoJC5jYWxlbmRhcnNQaWNrZXIucmVnaW9uYWxPcHRpb25zWydjcyddKTtcbn0pKGpRdWVyeSk7XG7vu78vKiBodHRwOi8va2VpdGgtd29vZC5uYW1lL2NhbGVuZGFycy5odG1sXG4gICBEYW5pc2ggbG9jYWxpc2F0aW9uIGZvciBjYWxlbmRhcnMgZGF0ZXBpY2tlciBmb3IgalF1ZXJ5LlxuICAgV3JpdHRlbiBieSBKYW4gQ2hyaXN0ZW5zZW4gKCBkZWxldGVzdHVmZkBnbWFpbC5jb20pLiAqL1xuKGZ1bmN0aW9uKCQpIHtcblx0JC5jYWxlbmRhcnNQaWNrZXIucmVnaW9uYWxPcHRpb25zWydkYSddID0ge1xuXHRcdHJlbmRlcmVyOiAkLmNhbGVuZGFyc1BpY2tlci5kZWZhdWx0UmVuZGVyZXIsXG4gICAgICAgIHByZXZUZXh0OiAnJiN4M2M7Rm9ycmlnZScsIHByZXZTdGF0dXM6ICdWaXMgZm9ycmlnZSBtw6VuZWQnLFxuXHRcdHByZXZKdW1wVGV4dDogJyYjeDNjOyYjeDNjOycsIHByZXZKdW1wU3RhdHVzOiAnJyxcblx0XHRuZXh0VGV4dDogJ07DpnN0ZSYjeDNlOycsIG5leHRTdGF0dXM6ICdWaXMgbsOmc3RlIG3DpW5lZCcsXG5cdFx0bmV4dEp1bXBUZXh0OiAnJiN4M2U7JiN4M2U7JywgbmV4dEp1bXBTdGF0dXM6ICcnLFxuXHRcdGN1cnJlbnRUZXh0OiAnSWRhZycsIGN1cnJlbnRTdGF0dXM6ICdWaXMgYWt0dWVsIG3DpW5lZCcsXG5cdFx0dG9kYXlUZXh0OiAnSWRhZycsIHRvZGF5U3RhdHVzOiAnVmlzIGFrdHVlbCBtw6VuZWQnLFxuXHRcdGNsZWFyVGV4dDogJ051bHN0aWwnLCBjbGVhclN0YXR1czogJ051bHN0aWwgZGVuIGFrdHVlbGxlIGRhdG8nLFxuXHRcdGNsb3NlVGV4dDogJ0x1aycsIGNsb3NlU3RhdHVzOiAnTHVrIHVkZW4gw6ZuZHJpbmdlcicsXG5cdFx0eWVhclN0YXR1czogJ1ZpcyBldCBhbmRldCDDpXInLCBtb250aFN0YXR1czogJ1ZpcyBlbiBhbmRlbiBtw6VuZWQnLFxuXHRcdHdlZWtUZXh0OiAnVWdlJywgd2Vla1N0YXR1czogJ8OFcmV0cyB1Z2UnLFxuXHRcdGRheVN0YXR1czogJ1bDpmxnIEQsIE0gZCcsIGRlZmF1bHRTdGF0dXM6ICdWw6ZsZyBlbiBkYXRvJyxcblx0XHRpc1JUTDogZmFsc2Vcblx0fTtcblx0JC5jYWxlbmRhcnNQaWNrZXIuc2V0RGVmYXVsdHMoJC5jYWxlbmRhcnNQaWNrZXIucmVnaW9uYWxPcHRpb25zWydkYSddKTtcbn0pKGpRdWVyeSk7XG7vu78vKiBodHRwOi8va2VpdGgtd29vZC5uYW1lL2NhbGVuZGFycy5odG1sXG4gICBTd2lzcy1HZXJtYW4gbG9jYWxpc2F0aW9uIGZvciBjYWxlbmRhcnMgZGF0ZXBpY2tlciBmb3IgalF1ZXJ5LlxuICAgV3JpdHRlbiBieSBEb3VnbGFzIEpvc2UgJiBKdWVyZyBNZWllci4gKi9cbihmdW5jdGlvbigkKSB7XG5cdCQuY2FsZW5kYXJzUGlja2VyLnJlZ2lvbmFsT3B0aW9uc1snZGUtQ0gnXSA9IHtcblx0XHRyZW5kZXJlcjogJC5jYWxlbmRhcnNQaWNrZXIuZGVmYXVsdFJlbmRlcmVyLFxuXHRcdHByZXZUZXh0OiAnJiN4M2M7enVyw7xjaycsIHByZXZTdGF0dXM6ICdsZXR6dGVuIE1vbmF0IHplaWdlbicsXG5cdFx0cHJldkp1bXBUZXh0OiAnJiN4M2M7JiN4M2M7JywgcHJldkp1bXBTdGF0dXM6ICcnLFxuXHRcdG5leHRUZXh0OiAnbsOkY2hzdGVyJiN4M2U7JywgbmV4dFN0YXR1czogJ27DpGNoc3RlbiBNb25hdCB6ZWlnZW4nLFxuXHRcdG5leHRKdW1wVGV4dDogJyYjeDNlOyYjeDNlOycsIG5leHRKdW1wU3RhdHVzOiAnJyxcblx0XHRjdXJyZW50VGV4dDogJ2hldXRlJywgY3VycmVudFN0YXR1czogJycsXG5cdFx0dG9kYXlUZXh0OiAnaGV1dGUnLCB0b2RheVN0YXR1czogJycsXG5cdFx0Y2xlYXJUZXh0OiAnbMO2c2NoZW4nLCBjbGVhclN0YXR1czogJ2FrdHVlbGxlcyBEYXR1bSBsw7ZzY2hlbicsXG5cdFx0Y2xvc2VUZXh0OiAnc2NobGllc3NlbicsIGNsb3NlU3RhdHVzOiAnb2huZSDDhG5kZXJ1bmdlbiBzY2hsaWVzc2VuJyxcblx0XHR5ZWFyU3RhdHVzOiAnYW5kZXJlcyBKYWhyIGFuemVpZ2VuJywgbW9udGhTdGF0dXM6ICdhbmRlcmVuIE1vbmF0IGFuemVpZ2UnLFxuXHRcdHdlZWtUZXh0OiAnV28nLCB3ZWVrU3RhdHVzOiAnV29jaGUgZGVzIE1vbmF0cycsXG5cdFx0ZGF5U3RhdHVzOiAnV8OkaGxlIEQsIE0gZCcsIGRlZmF1bHRTdGF0dXM6ICdXw6RobGUgZWluIERhdHVtJyxcblx0XHRpc1JUTDogZmFsc2Vcblx0fTtcblx0JC5jYWxlbmRhcnNQaWNrZXIuc2V0RGVmYXVsdHMoJC5jYWxlbmRhcnNQaWNrZXIucmVnaW9uYWxPcHRpb25zWydkZS1DSCddKTtcbn0pKGpRdWVyeSk7XG7vu78vKiBodHRwOi8va2VpdGgtd29vZC5uYW1lL2NhbGVuZGFycy5odG1sXG4gICBHZXJtYW4gbG9jYWxpc2F0aW9uIGZvciBjYWxlbmRhcnMgZGF0ZXBpY2tlciBmb3IgalF1ZXJ5LlxuICAgV3JpdHRlbiBieSBNaWxpYW4gV29sZmYgKG1haWxAbWlsaWFudy5kZSkuICovXG4oZnVuY3Rpb24oJCkge1xuXHQkLmNhbGVuZGFyc1BpY2tlci5yZWdpb25hbE9wdGlvbnNbJ2RlJ10gPSB7XG5cdFx0cmVuZGVyZXI6ICQuY2FsZW5kYXJzUGlja2VyLmRlZmF1bHRSZW5kZXJlcixcblx0XHRwcmV2VGV4dDogJyYjeDNjO3p1csO8Y2snLCBwcmV2U3RhdHVzOiAnbGV0enRlbiBNb25hdCB6ZWlnZW4nLFxuXHRcdHByZXZKdW1wVGV4dDogJyYjeDNjOyYjeDNjOycsIHByZXZKdW1wU3RhdHVzOiAnJyxcblx0XHRuZXh0VGV4dDogJ1ZvciYjeDNlOycsIG5leHRTdGF0dXM6ICduw6RjaHN0ZW4gTW9uYXQgemVpZ2VuJyxcblx0XHRuZXh0SnVtcFRleHQ6ICcmI3gzZTsmI3gzZTsnLCBuZXh0SnVtcFN0YXR1czogJycsXG5cdFx0Y3VycmVudFRleHQ6ICdoZXV0ZScsIGN1cnJlbnRTdGF0dXM6ICcnLFxuXHRcdHRvZGF5VGV4dDogJ2hldXRlJywgdG9kYXlTdGF0dXM6ICcnLFxuXHRcdGNsZWFyVGV4dDogJ2zDtnNjaGVuJywgY2xlYXJTdGF0dXM6ICdha3R1ZWxsZXMgRGF0dW0gbMO2c2NoZW4nLFxuXHRcdGNsb3NlVGV4dDogJ3NjaGxpZcOfZW4nLCBjbG9zZVN0YXR1czogJ29obmUgw4RuZGVydW5nZW4gc2NobGllw59lbicsXG5cdFx0eWVhclN0YXR1czogJ2FuZGVyZXMgSmFociBhbnplaWdlbicsIG1vbnRoU3RhdHVzOiAnYW5kZXJlbiBNb25hdCBhbnplaWdlJyxcblx0XHR3ZWVrVGV4dDogJ1dvJywgd2Vla1N0YXR1czogJ1dvY2hlIGRlcyBNb25hdHMnLFxuXHRcdGRheVN0YXR1czogJ1fDpGhsZSBELCBNIGQnLCBkZWZhdWx0U3RhdHVzOiAnV8OkaGxlIGVpbiBEYXR1bScsXG5cdFx0aXNSVEw6IGZhbHNlXG5cdH07XG5cdCQuY2FsZW5kYXJzUGlja2VyLnNldERlZmF1bHRzKCQuY2FsZW5kYXJzUGlja2VyLnJlZ2lvbmFsT3B0aW9uc1snZGUnXSk7XG59KShqUXVlcnkpO1xu77u/LyogaHR0cDovL2tlaXRoLXdvb2QubmFtZS9jYWxlbmRhcnMuaHRtbFxuICAgR3JlZWsgbG9jYWxpc2F0aW9uIGZvciBjYWxlbmRhcnMgZGF0ZXBpY2tlciBmb3IgalF1ZXJ5LlxuICAgV3JpdHRlbiBieSBBbGV4IENpY292aWMgKGh0dHA6Ly93d3cuYWxleGNpY292aWMuY29tKS4gKi9cbihmdW5jdGlvbigkKSB7XG5cdCQuY2FsZW5kYXJzUGlja2VyLnJlZ2lvbmFsT3B0aW9uc1snZWwnXSA9IHtcblx0XHRyZW5kZXJlcjogJC5jYWxlbmRhcnNQaWNrZXIuZGVmYXVsdFJlbmRlcmVyLFxuXHRcdHByZXZUZXh0OiAnzqDPgc6/zrfOs86/z43OvM61zr3Ov8+CJywgcHJldlN0YXR1czogJ86Vz4DOuc+DzrrPjM+AzrfPg863IM+Az4HOv863zrPOv8+NzrzOtc69zr/PhSDOvM6uzr3OsScsXG5cdFx0cHJldkp1bXBUZXh0OiAnJiN4M2M7JiN4M2M7JywgcHJldkp1bXBTdGF0dXM6ICcnLFxuXHRcdG5leHRUZXh0OiAnzpXPgM+MzrzOtc69zr/PgicsIG5leHRTdGF0dXM6ICfOlc+AzrnPg866z4zPgM63z4POtyDOtc+Az4zOvM61zr3Ov8+FIM68zq7Ovc6xJyxcblx0XHRuZXh0SnVtcFRleHQ6ICcmI3gzZTsmI3gzZTsnLCBuZXh0SnVtcFN0YXR1czogJycsXG5cdFx0Y3VycmVudFRleHQ6ICfOpM+Bzq3Ph8+Jzr0gzpzOrs69zrHPgicsIGN1cnJlbnRTdGF0dXM6ICfOlc+AzrnPg866z4zPgM63z4POtyDPhM+Bzq3Ph86/zr3PhM6/z4IgzrzOrs69zrEnLFxuXHRcdHRvZGF5VGV4dDogJ86kz4HOrc+Hz4nOvSDOnM6uzr3Osc+CJywgdG9kYXlTdGF0dXM6ICfOlc+AzrnPg866z4zPgM63z4POtyDPhM+Bzq3Ph86/zr3PhM6/z4IgzrzOrs69zrEnLFxuXHRcdGNsZWFyVGV4dDogJ86jzrLOrs+DzrnOvM6/JywgY2xlYXJTdGF0dXM6ICfOo86yzq7Pg865zrzOvyDPhM63z4IgzrXPgM65zrvOtc6zzrzOrc69zrfPgiDOt868zrXPgc6/zrzOt869zq/Osc+CJyxcblx0XHRjbG9zZVRleHQ6ICfOms67zrXOr8+DzrnOvM6/JywgY2xvc2VTdGF0dXM6ICfOms67zrXOr8+DzrnOvM6/IM+Hz4nPgc6vz4IgzrHOu867zrHOs86uJyxcblx0XHR5ZWFyU3RhdHVzOiAnzpXPgM65z4POus+Mz4DOt8+DzrcgzqzOu867zr/PhSDOrc+Ezr/Phc+CJywgbW9udGhTdGF0dXM6ICfOlc+AzrnPg866z4zPgM63z4POtyDOrM67zrvOv8+FIM68zq7Ovc6xJyxcblx0XHR3ZWVrVGV4dDogJ86VzrLOtCcsIHdlZWtTdGF0dXM6ICcnLFxuXHRcdGRheVN0YXR1czogJ86Vz4DOuc67zr/Os86uIEREIGQgTU0nLCBkZWZhdWx0U3RhdHVzOiAnzpXPgM65zrvOrc6+z4TOtSDOvM65zrEgzrfOvM61z4HOv868zrfOvc6vzrEnLFxuXHRcdGlzUlRMOiBmYWxzZVxuXHR9O1xuXHQkLmNhbGVuZGFyc1BpY2tlci5zZXREZWZhdWx0cygkLmNhbGVuZGFyc1BpY2tlci5yZWdpb25hbE9wdGlvbnNbJ2VsJ10pO1xufSkoalF1ZXJ5KTtcbu+7vy8qIGh0dHA6Ly9rZWl0aC13b29kLm5hbWUvY2FsZW5kYXJzLmh0bWxcbiAgIEVuZ2xpc2gvQXVzdHJhbGlhIGxvY2FsaXNhdGlvbiBmb3IgY2FsZW5kYXJzIGRhdGVwaWNrZXIgZm9yIGpRdWVyeS5cbiAgIEJhc2VkIG9uIGVuLUdCLiAqL1xuKGZ1bmN0aW9uKCQpIHtcblx0JC5jYWxlbmRhcnNQaWNrZXIucmVnaW9uYWxPcHRpb25zWydlbi1BVSddID0ge1xuXHRcdHJlbmRlcmVyOiAkLmNhbGVuZGFyc1BpY2tlci5kZWZhdWx0UmVuZGVyZXIsXG5cdFx0cHJldlRleHQ6ICdQcmV2JywgcHJldlN0YXR1czogJ1Nob3cgdGhlIHByZXZpb3VzIG1vbnRoJyxcblx0XHRwcmV2SnVtcFRleHQ6ICcmbHQ7Jmx0OycsIHByZXZKdW1wU3RhdHVzOiAnU2hvdyB0aGUgcHJldmlvdXMgeWVhcicsXG5cdFx0bmV4dFRleHQ6ICdOZXh0JywgbmV4dFN0YXR1czogJ1Nob3cgdGhlIG5leHQgbW9udGgnLFxuXHRcdG5leHRKdW1wVGV4dDogJyZndDsmZ3Q7JywgbmV4dEp1bXBTdGF0dXM6ICdTaG93IHRoZSBuZXh0IHllYXInLFxuXHRcdGN1cnJlbnRUZXh0OiAnQ3VycmVudCcsIGN1cnJlbnRTdGF0dXM6ICdTaG93IHRoZSBjdXJyZW50IG1vbnRoJyxcblx0XHR0b2RheVRleHQ6ICdUb2RheScsIHRvZGF5U3RhdHVzOiAnU2hvdyB0b2RheVxcJ3MgbW9udGgnLFxuXHRcdGNsZWFyVGV4dDogJ0NsZWFyJywgY2xlYXJTdGF0dXM6ICdDbGVhciBhbGwgdGhlIGRhdGVzJyxcblx0XHRjbG9zZVRleHQ6ICdEb25lJywgY2xvc2VTdGF0dXM6ICdDbG9zZSB0aGUgZGF0ZXBpY2tlcicsXG5cdFx0eWVhclN0YXR1czogJ0NoYW5nZSB0aGUgeWVhcicsIG1vbnRoU3RhdHVzOiAnQ2hhbmdlIHRoZSBtb250aCcsXG5cdFx0d2Vla1RleHQ6ICdXaycsIHdlZWtTdGF0dXM6ICdXZWVrIG9mIHRoZSB5ZWFyJyxcblx0XHRkYXlTdGF0dXM6ICdTZWxlY3QgREQsIE0gZCwgeXl5eScsIGRlZmF1bHRTdGF0dXM6ICdTZWxlY3QgYSBkYXRlJyxcblx0XHRpc1JUTDogZmFsc2Vcblx0fTtcblx0JC5jYWxlbmRhcnNQaWNrZXIuc2V0RGVmYXVsdHMoJC5jYWxlbmRhcnNQaWNrZXIucmVnaW9uYWxPcHRpb25zWydlbi1BVSddKTtcbn0pKGpRdWVyeSk7XG7vu78vKiBodHRwOi8va2VpdGgtd29vZC5uYW1lL2NhbGVuZGFycy5odG1sXG4gICBFbmdsaXNoL1VLIGxvY2FsaXNhdGlvbiBmb3IgY2FsZW5kYXJzIGRhdGVwaWNrZXIgZm9yIGpRdWVyeS5cbiAgIFN0dWFydC4gKi9cbihmdW5jdGlvbigkKSB7XG5cdCQuY2FsZW5kYXJzUGlja2VyLnJlZ2lvbmFsT3B0aW9uc1snZW4tR0InXSA9IHtcblx0XHRyZW5kZXJlcjogJC5jYWxlbmRhcnNQaWNrZXIuZGVmYXVsdFJlbmRlcmVyLFxuXHRcdHByZXZUZXh0OiAnUHJldicsIHByZXZTdGF0dXM6ICdTaG93IHRoZSBwcmV2aW91cyBtb250aCcsXG5cdFx0cHJldkp1bXBUZXh0OiAnJmx0OyZsdDsnLCBwcmV2SnVtcFN0YXR1czogJ1Nob3cgdGhlIHByZXZpb3VzIHllYXInLFxuXHRcdG5leHRUZXh0OiAnTmV4dCcsIG5leHRTdGF0dXM6ICdTaG93IHRoZSBuZXh0IG1vbnRoJyxcblx0XHRuZXh0SnVtcFRleHQ6ICcmZ3Q7Jmd0OycsIG5leHRKdW1wU3RhdHVzOiAnU2hvdyB0aGUgbmV4dCB5ZWFyJyxcblx0XHRjdXJyZW50VGV4dDogJ0N1cnJlbnQnLCBjdXJyZW50U3RhdHVzOiAnU2hvdyB0aGUgY3VycmVudCBtb250aCcsXG5cdFx0dG9kYXlUZXh0OiAnVG9kYXknLCB0b2RheVN0YXR1czogJ1Nob3cgdG9kYXlcXCdzIG1vbnRoJyxcblx0XHRjbGVhclRleHQ6ICdDbGVhcicsIGNsZWFyU3RhdHVzOiAnQ2xlYXIgYWxsIHRoZSBkYXRlcycsXG5cdFx0Y2xvc2VUZXh0OiAnRG9uZScsIGNsb3NlU3RhdHVzOiAnQ2xvc2UgdGhlIGRhdGVwaWNrZXInLFxuXHRcdHllYXJTdGF0dXM6ICdDaGFuZ2UgdGhlIHllYXInLCBtb250aFN0YXR1czogJ0NoYW5nZSB0aGUgbW9udGgnLFxuXHRcdHdlZWtUZXh0OiAnV2snLCB3ZWVrU3RhdHVzOiAnV2VlayBvZiB0aGUgeWVhcicsXG5cdFx0ZGF5U3RhdHVzOiAnU2VsZWN0IERELCBNIGQsIHl5eXknLCBkZWZhdWx0U3RhdHVzOiAnU2VsZWN0IGEgZGF0ZScsXG5cdFx0aXNSVEw6IGZhbHNlXG5cdH07XG5cdCQuY2FsZW5kYXJzUGlja2VyLnNldERlZmF1bHRzKCQuY2FsZW5kYXJzUGlja2VyLnJlZ2lvbmFsT3B0aW9uc1snZW4tR0InXSk7XG59KShqUXVlcnkpO1xu77u/LyogaHR0cDovL2tlaXRoLXdvb2QubmFtZS9jYWxlbmRhcnMuaHRtbFxuICAgRW5nbGlzaC9OZXcgWmVhbGFuZCBsb2NhbGlzYXRpb24gZm9yIGNhbGVuZGFycyBkYXRlcGlja2VyIGZvciBqUXVlcnkuXG4gICBCYXNlZCBvbiBlbi1HQi4gKi9cbihmdW5jdGlvbigkKSB7XG5cdCQuY2FsZW5kYXJzUGlja2VyLnJlZ2lvbmFsT3B0aW9uc1snZW4tTlonXSA9IHtcblx0XHRyZW5kZXJlcjogJC5jYWxlbmRhcnNQaWNrZXIuZGVmYXVsdFJlbmRlcmVyLFxuXHRcdHByZXZUZXh0OiAnUHJldicsIHByZXZTdGF0dXM6ICdTaG93IHRoZSBwcmV2aW91cyBtb250aCcsXG5cdFx0cHJldkp1bXBUZXh0OiAnJmx0OyZsdDsnLCBwcmV2SnVtcFN0YXR1czogJ1Nob3cgdGhlIHByZXZpb3VzIHllYXInLFxuXHRcdG5leHRUZXh0OiAnTmV4dCcsIG5leHRTdGF0dXM6ICdTaG93IHRoZSBuZXh0IG1vbnRoJyxcblx0XHRuZXh0SnVtcFRleHQ6ICcmZ3Q7Jmd0OycsIG5leHRKdW1wU3RhdHVzOiAnU2hvdyB0aGUgbmV4dCB5ZWFyJyxcblx0XHRjdXJyZW50VGV4dDogJ0N1cnJlbnQnLCBjdXJyZW50U3RhdHVzOiAnU2hvdyB0aGUgY3VycmVudCBtb250aCcsXG5cdFx0dG9kYXlUZXh0OiAnVG9kYXknLCB0b2RheVN0YXR1czogJ1Nob3cgdG9kYXlcXCdzIG1vbnRoJyxcblx0XHRjbGVhclRleHQ6ICdDbGVhcicsIGNsZWFyU3RhdHVzOiAnQ2xlYXIgYWxsIHRoZSBkYXRlcycsXG5cdFx0Y2xvc2VUZXh0OiAnRG9uZScsIGNsb3NlU3RhdHVzOiAnQ2xvc2UgdGhlIGRhdGVwaWNrZXInLFxuXHRcdHllYXJTdGF0dXM6ICdDaGFuZ2UgdGhlIHllYXInLCBtb250aFN0YXR1czogJ0NoYW5nZSB0aGUgbW9udGgnLFxuXHRcdHdlZWtUZXh0OiAnV2snLCB3ZWVrU3RhdHVzOiAnV2VlayBvZiB0aGUgeWVhcicsXG5cdFx0ZGF5U3RhdHVzOiAnU2VsZWN0IERELCBNIGQsIHl5eXknLCBkZWZhdWx0U3RhdHVzOiAnU2VsZWN0IGEgZGF0ZScsXG5cdFx0aXNSVEw6IGZhbHNlXG5cdH07XG5cdCQuY2FsZW5kYXJzUGlja2VyLnNldERlZmF1bHRzKCQuY2FsZW5kYXJzUGlja2VyLnJlZ2lvbmFsT3B0aW9uc1snZW4tTlonXSk7XG59KShqUXVlcnkpO1xu77u/LyogaHR0cDovL2tlaXRoLXdvb2QubmFtZS9jYWxlbmRhcnMuaHRtbFxuICAgRXNwZXJhbnRvIGxvY2FsaXNhdGlvbiBmb3IgY2FsZW5kYXJzIGRhdGVwaWNrZXIgZm9yIGpRdWVyeS5cbiAgIFdyaXR0ZW4gYnkgT2xpdmllciBNLiAob2xpdmllcndlYkBpZnJhbmNlLmNvbSkuICovXG4oZnVuY3Rpb24oJCkge1xuXHQkLmNhbGVuZGFyc1BpY2tlci5yZWdpb25hbE9wdGlvbnNbJ2VvJ10gPSB7XG5cdFx0cmVuZGVyZXI6ICQuY2FsZW5kYXJzUGlja2VyLmRlZmF1bHRSZW5kZXJlcixcblx0XHRwcmV2VGV4dDogJyZsdDtBbnRhJywgcHJldlN0YXR1czogJ1ZpZGkgbGEgYW50YcWtYW4gbW9uYXRvbicsXG5cdFx0cHJldkp1bXBUZXh0OiAnJiN4M2M7JiN4M2M7JywgcHJldkp1bXBTdGF0dXM6ICcnLFxuXHRcdG5leHRUZXh0OiAnU2VrdiZndDsnLCBuZXh0U3RhdHVzOiAnVmlkaSBsYSBzZWt2YW4gbW9uYXRvbicsXG5cdFx0bmV4dEp1bXBUZXh0OiAnJiN4M2U7JiN4M2U7JywgbmV4dEp1bXBTdGF0dXM6ICcnLFxuXHRcdGN1cnJlbnRUZXh0OiAnTnVuYScsIGN1cnJlbnRTdGF0dXM6ICdWaWRpIGxhIG51bmFuIG1vbmF0b24nLFxuXHRcdHRvZGF5VGV4dDogJ051bmEnLCB0b2RheVN0YXR1czogJ1ZpZGkgbGEgbnVuYW4gbW9uYXRvbicsXG5cdFx0Y2xlYXJUZXh0OiAnVmFraWdpJywgY2xlYXJTdGF0dXM6ICcnLFxuXHRcdGNsb3NlVGV4dDogJ0Zlcm1pJywgY2xvc2VTdGF0dXM6ICdGZXJtaSBzZW4gbW9kaWZpJyxcblx0XHR5ZWFyU3RhdHVzOiAnVmlkaSBhbGlhbiBqYXJvbicsIG1vbnRoU3RhdHVzOiAnVmlkaSBhbGlhbiBtb25hdG9uJyxcblx0XHR3ZWVrVGV4dDogJ1NiJywgd2Vla1N0YXR1czogJycsXG5cdFx0ZGF5U3RhdHVzOiAnRWxla3RpIERELCBNTSBkJywgZGVmYXVsdFN0YXR1czogJ0VsZWt0aSBsYSBkYXRvbicsXG5cdFx0aXNSVEw6IGZhbHNlXG5cdH07XG5cdCQuY2FsZW5kYXJzUGlja2VyLnNldERlZmF1bHRzKCQuY2FsZW5kYXJzUGlja2VyLnJlZ2lvbmFsT3B0aW9uc1snZW8nXSk7XG59KShqUXVlcnkpO1xu77u/LyogaHR0cDovL2tlaXRoLXdvb2QubmFtZS9jYWxlbmRhcnMuaHRtbFxuICAgU3BhbmlzaC9BcmdlbnRpbmEgbG9jYWxpc2F0aW9uIGZvciBjYWxlbmRhcnMgZGF0ZXBpY2tlciBmb3IgalF1ZXJ5LlxuICAgV3JpdHRlbiBieSBFc3RlYmFuIEFjb3N0YSBWaWxsYWZhbmUgKGVzdGViYW4uYWNvc3RhQGdsb2JhbnQuY29tKSBvZiBHbG9iYW50IChodHRwOi8vd3d3Lmdsb2JhbnQuY29tKS4gKi9cbihmdW5jdGlvbigkKSB7XG5cdCQuY2FsZW5kYXJzUGlja2VyLnJlZ2lvbmFsT3B0aW9uc1snZXMtQVInXSA9IHtcblx0XHRyZW5kZXJlcjogJC5jYWxlbmRhcnNQaWNrZXIuZGVmYXVsdFJlbmRlcmVyLFxuXHRcdHByZXZUZXh0OiAnJiN4M2M7QW50JywgcHJldlN0YXR1czogJycsXG5cdFx0cHJldkp1bXBUZXh0OiAnJiN4M2M7JiN4M2M7JywgcHJldkp1bXBTdGF0dXM6ICcnLFxuXHRcdG5leHRUZXh0OiAnU2lnJiN4M2U7JywgbmV4dFN0YXR1czogJycsXG5cdFx0bmV4dEp1bXBUZXh0OiAnJiN4M2U7JiN4M2U7JywgbmV4dEp1bXBTdGF0dXM6ICcnLFxuXHRcdGN1cnJlbnRUZXh0OiAnSG95JywgY3VycmVudFN0YXR1czogJycsXG5cdFx0dG9kYXlUZXh0OiAnSG95JywgdG9kYXlTdGF0dXM6ICcnLFxuXHRcdGNsZWFyVGV4dDogJ0xpbXBpYXInLCBjbGVhclN0YXR1czogJycsXG5cdFx0Y2xvc2VUZXh0OiAnQ2VycmFyJywgY2xvc2VTdGF0dXM6ICcnLFxuXHRcdHllYXJTdGF0dXM6ICcnLCBtb250aFN0YXR1czogJycsXG5cdFx0d2Vla1RleHQ6ICdTbScsIHdlZWtTdGF0dXM6ICcnLFxuXHRcdGRheVN0YXR1czogJ0RELCBNIGQnLCBkZWZhdWx0U3RhdHVzOiAnJyxcblx0XHRpc1JUTDogZmFsc2Vcblx0fTtcblx0JC5jYWxlbmRhcnNQaWNrZXIuc2V0RGVmYXVsdHMoJC5jYWxlbmRhcnNQaWNrZXIucmVnaW9uYWxPcHRpb25zWydlcy1BUiddKTtcbn0pKGpRdWVyeSk7XG7vu78vKiBodHRwOi8va2VpdGgtd29vZC5uYW1lL2NhbGVuZGFycy5odG1sXG4gICBTcGFuaXNoL1BlcsO6IGxvY2FsaXNhdGlvbiBmb3IgY2FsZW5kYXJzIGRhdGVwaWNrZXIgZm9yIGpRdWVyeS5cbiAgIFdyaXR0ZW4gYnkgRmlzY2hlciBUaXJhZG8gKGZpc2hkZXZAZ2xvYmFudC5jb20pIG9mIEFTSVggKGh0dHA6Ly93d3cuYXNpeG9ubGluZS5jb20pLiAqL1xuKGZ1bmN0aW9uKCQpIHtcblx0JC5jYWxlbmRhcnNQaWNrZXIucmVnaW9uYWxPcHRpb25zWydlcy1QRSddID0ge1xuXHRcdHJlbmRlcmVyOiAkLmNhbGVuZGFyc1BpY2tlci5kZWZhdWx0UmVuZGVyZXIsXG5cdFx0cHJldlRleHQ6ICcmI3gzYztBbnQnLCBwcmV2U3RhdHVzOiAnJyxcblx0XHRwcmV2SnVtcFRleHQ6ICcmI3gzYzsmI3gzYzsnLCBwcmV2SnVtcFN0YXR1czogJycsXG5cdFx0bmV4dFRleHQ6ICdTaWcmI3gzZTsnLCBuZXh0U3RhdHVzOiAnJyxcblx0XHRuZXh0SnVtcFRleHQ6ICcmI3gzZTsmI3gzZTsnLCBuZXh0SnVtcFN0YXR1czogJycsXG5cdFx0Y3VycmVudFRleHQ6ICdIb3knLCBjdXJyZW50U3RhdHVzOiAnJyxcblx0XHR0b2RheVRleHQ6ICdIb3knLCB0b2RheVN0YXR1czogJycsXG5cdFx0Y2xlYXJUZXh0OiAnTGltcGlhcicsIGNsZWFyU3RhdHVzOiAnJyxcblx0XHRjbG9zZVRleHQ6ICdDZXJyYXInLCBjbG9zZVN0YXR1czogJycsXG5cdFx0eWVhclN0YXR1czogJycsIG1vbnRoU3RhdHVzOiAnJyxcblx0XHR3ZWVrVGV4dDogJ1NtJywgd2Vla1N0YXR1czogJycsXG5cdFx0ZGF5U3RhdHVzOiAnREQgZCwgTU0geXl5eScsIGRlZmF1bHRTdGF0dXM6ICcnLFxuXHRcdGlzUlRMOiBmYWxzZVxuXHR9O1xuXHQkLmNhbGVuZGFyc1BpY2tlci5zZXREZWZhdWx0cygkLmNhbGVuZGFyc1BpY2tlci5yZWdpb25hbE9wdGlvbnNbJ2VzLVBFJ10pO1xufSkoalF1ZXJ5KTtcbu+7vy8qIGh0dHA6Ly9rZWl0aC13b29kLm5hbWUvY2FsZW5kYXJzLmh0bWxcbiAgIFNwYW5pc2ggbG9jYWxpc2F0aW9uIGZvciBjYWxlbmRhcnMgZGF0ZXBpY2tlciBmb3IgalF1ZXJ5LlxuICAgVHJhZHVjaWRvIHBvciBWZXN0ZXIgKHh2ZXN0ZXJAZ21haWwuY29tKS4gKi9cbihmdW5jdGlvbigkKSB7XG5cdCQuY2FsZW5kYXJzUGlja2VyLnJlZ2lvbmFsT3B0aW9uc1snZXMnXSA9IHtcblx0XHRyZW5kZXJlcjogJC5jYWxlbmRhcnNQaWNrZXIuZGVmYXVsdFJlbmRlcmVyLFxuXHRcdHByZXZUZXh0OiAnJiN4M2M7QW50JywgcHJldlN0YXR1czogJycsXG5cdFx0cHJldkp1bXBUZXh0OiAnJiN4M2M7JiN4M2M7JywgcHJldkp1bXBTdGF0dXM6ICcnLFxuXHRcdG5leHRUZXh0OiAnU2lnJiN4M2U7JywgbmV4dFN0YXR1czogJycsXG5cdFx0bmV4dEp1bXBUZXh0OiAnJiN4M2U7JiN4M2U7JywgbmV4dEp1bXBTdGF0dXM6ICcnLFxuXHRcdGN1cnJlbnRUZXh0OiAnSG95JywgY3VycmVudFN0YXR1czogJycsXG5cdFx0dG9kYXlUZXh0OiAnSG95JywgdG9kYXlTdGF0dXM6ICcnLFxuXHRcdGNsZWFyVGV4dDogJ0xpbXBpYXInLCBjbGVhclN0YXR1czogJycsXG5cdFx0Y2xvc2VUZXh0OiAnQ2VycmFyJywgY2xvc2VTdGF0dXM6ICcnLFxuXHRcdHllYXJTdGF0dXM6ICcnLCBtb250aFN0YXR1czogJycsXG5cdFx0d2Vla1RleHQ6ICdTbScsIHdlZWtTdGF0dXM6ICcnLFxuXHRcdGRheVN0YXR1czogJ0RELCBNIGQnLCBkZWZhdWx0U3RhdHVzOiAnJyxcblx0XHRpc1JUTDogZmFsc2Vcblx0fTtcblx0JC5jYWxlbmRhcnNQaWNrZXIuc2V0RGVmYXVsdHMoJC5jYWxlbmRhcnNQaWNrZXIucmVnaW9uYWxPcHRpb25zWydlcyddKTtcbn0pKGpRdWVyeSk7XG7vu78vKiBodHRwOi8va2VpdGgtd29vZC5uYW1lL2NhbGVuZGFycy5odG1sXG4gICBFc3RvbmlhbiBsb2NhbGlzYXRpb24gZm9yIGNhbGVuZGFycyBkYXRlcGlja2VyIGZvciBqUXVlcnkuXG4gICBXcml0dGVuIGJ5IE1hcnQgU8O1bWVybWFhIChtcnRzLnB5ZGV2IGF0IGdtYWlsIGNvbSkuICovXG4oZnVuY3Rpb24oJCkge1xuXHQkLmNhbGVuZGFyc1BpY2tlci5yZWdpb25hbE9wdGlvbnNbJ2V0J10gPSB7XG5cdFx0cmVuZGVyZXI6ICQuY2FsZW5kYXJzUGlja2VyLmRlZmF1bHRSZW5kZXJlcixcblx0XHRwcmV2VGV4dDogJ0VlbG5ldicsIHByZXZTdGF0dXM6ICcnLFxuXHRcdHByZXZKdW1wVGV4dDogJyYjeDNjOyYjeDNjOycsIHByZXZKdW1wU3RhdHVzOiAnJyxcblx0XHRuZXh0VGV4dDogJ0rDpHJnbmV2JywgbmV4dFN0YXR1czogJycsXG5cdFx0bmV4dEp1bXBUZXh0OiAnJiN4M2U7JiN4M2U7JywgbmV4dEp1bXBTdGF0dXM6ICcnLFxuXHRcdGN1cnJlbnRUZXh0OiAnVMOkbmEnLCBjdXJyZW50U3RhdHVzOiAnJyxcblx0XHR0b2RheVRleHQ6ICdUw6RuYScsIHRvZGF5U3RhdHVzOiAnJyxcblx0XHRjbGVhclRleHQ6ICdYJywgY2xlYXJTdGF0dXM6ICcnLFxuXHRcdGNsb3NlVGV4dDogJ1N1bGdlJywgY2xvc2VTdGF0dXM6ICcnLFxuXHRcdHllYXJTdGF0dXM6ICcnLCBtb250aFN0YXR1czogJycsXG5cdFx0d2Vla1RleHQ6ICdXaycsIHdlZWtTdGF0dXM6ICcnLFxuXHRcdGRheVN0YXR1czogJ0RELCBNIGQnLCBkZWZhdWx0U3RhdHVzOiAnJyxcblx0XHRpc1JUTDogZmFsc2Vcblx0fTtcblx0JC5jYWxlbmRhcnNQaWNrZXIuc2V0RGVmYXVsdHMoJC5jYWxlbmRhcnNQaWNrZXIucmVnaW9uYWxPcHRpb25zWydldCddKTtcbn0pKGpRdWVyeSk7XG7vu78vKiBodHRwOi8va2VpdGgtd29vZC5uYW1lL2NhbGVuZGFycy5odG1sXG4gICBCYXNxdWUgbG9jYWxpc2F0aW9uIGZvciBjYWxlbmRhcnMgZGF0ZXBpY2tlciBmb3IgalF1ZXJ5LlxuICAgS2FycmlrYXMtZWsgaXR6dWxpYSAoa2FycmlrYXNAa2FycmlrYXMuY29tKS4gKi9cbihmdW5jdGlvbigkKSB7XG5cdCQuY2FsZW5kYXJzUGlja2VyLnJlZ2lvbmFsT3B0aW9uc1snZXUnXSA9IHtcblx0XHRyZW5kZXJlcjogJC5jYWxlbmRhcnNQaWNrZXIuZGVmYXVsdFJlbmRlcmVyLFxuXHRcdHByZXZUZXh0OiAnJiN4M2M7QXVyJywgcHJldlN0YXR1czogJycsXG5cdFx0cHJldkp1bXBUZXh0OiAnJiN4M2M7JiN4M2M7JywgcHJldkp1bXBTdGF0dXM6ICcnLFxuXHRcdG5leHRUZXh0OiAnSHVyJiN4M2U7JywgbmV4dFN0YXR1czogJycsXG5cdFx0bmV4dEp1bXBUZXh0OiAnJiN4M2U7JiN4M2U7JywgbmV4dEp1bXBTdGF0dXM6ICcnLFxuXHRcdGN1cnJlbnRUZXh0OiAnR2F1cicsIGN1cnJlbnRTdGF0dXM6ICcnLFxuXHRcdHRvZGF5VGV4dDogJ0dhdXInLCB0b2RheVN0YXR1czogJycsXG5cdFx0Y2xlYXJUZXh0OiAnWCcsIGNsZWFyU3RhdHVzOiAnJyxcblx0XHRjbG9zZVRleHQ6ICdFZ2luYScsIGNsb3NlU3RhdHVzOiAnJyxcblx0XHR5ZWFyU3RhdHVzOiAnJywgbW9udGhTdGF0dXM6ICcnLFxuXHRcdHdlZWtUZXh0OiAnV2snLCB3ZWVrU3RhdHVzOiAnJyxcblx0XHRkYXlTdGF0dXM6ICdERCBkIE1NJywgZGVmYXVsdFN0YXR1czogJycsXG5cdFx0aXNSVEw6IGZhbHNlXG5cdH07XG5cdCQuY2FsZW5kYXJzUGlja2VyLnNldERlZmF1bHRzKCQuY2FsZW5kYXJzUGlja2VyLnJlZ2lvbmFsT3B0aW9uc1snZXUnXSk7XG59KShqUXVlcnkpO1xu77u/LyogaHR0cDovL2tlaXRoLXdvb2QubmFtZS9jYWxlbmRhcnMuaHRtbFxuICAgRmFyc2kvUGVyc2lhbiBsb2NhbGlzYXRpb24gZm9yIGNhbGVuZGFycyBkYXRlcGlja2VyIGZvciBqUXVlcnkuXG4gICBKYXZhZCBNb3dsYW5lemhhZCAtLSBqbW93bGFAZ21haWwuY29tLiAqL1xuKGZ1bmN0aW9uKCQpIHtcblx0JC5jYWxlbmRhcnNQaWNrZXIucmVnaW9uYWxPcHRpb25zWydmYSddID0ge1xuXHRcdHJlbmRlcmVyOiAkLmNhbGVuZGFyc1BpY2tlci5kZWZhdWx0UmVuZGVyZXIsXG5cdFx0cHJldlRleHQ6ICcmI3gzYzvZgtio2YTZiicsIHByZXZTdGF0dXM6ICfZhtmF2KfZiti0INmF2KfZhyDZgtio2YQnLFxuXHRcdHByZXZKdW1wVGV4dDogJyYjeDNjOyYjeDNjOycsIHByZXZKdW1wU3RhdHVzOiAnJyxcblx0XHRuZXh0VGV4dDogJ9io2LnYr9mKJiN4M2U7JywgbmV4dFN0YXR1czogJ9mG2YXYp9mK2LQg2YXYp9mHINio2LnYrycsXG5cdFx0bmV4dEp1bXBUZXh0OiAnJiN4M2U7JiN4M2U7JywgbmV4dEp1bXBTdGF0dXM6ICcnLFxuXHRcdGN1cnJlbnRUZXh0OiAn2KfZhdix2YjYsicsIGN1cnJlbnRTdGF0dXM6ICfZhtmF2KfZiti0INmF2KfZhyDYrNin2LHZiicsXG5cdFx0dG9kYXlUZXh0OiAn2KfZhdix2YjYsicsIHRvZGF5U3RhdHVzOiAn2YbZhdin2YrYtCDZhdin2Ycg2KzYp9ix2YonLFxuXHRcdGNsZWFyVGV4dDogJ9it2LDZgSDYqtin2LHZitiuJywgY2xlYXJTdGF0dXM6ICfZvtin2qkg2qnYsdiv2YYg2KrYp9ix2YrYriDYrNin2LHZiicsXG5cdFx0Y2xvc2VUZXh0OiAn2KjYs9iq2YYnLCBjbG9zZVN0YXR1czogJ9io2LPYqtmGINio2K/ZiNmGINin2LnZhdin2YQg2KrYutmK2YrYsdin2KonLFxuXHRcdHllYXJTdGF0dXM6ICfZhtmF2KfZiti0INiz2KfZhCDZhdiq2YHYp9mI2KonLCBtb250aFN0YXR1czogJ9mG2YXYp9mK2LQg2YXYp9mHINmF2KrZgdin2YjYqicsXG5cdFx0d2Vla1RleHQ6ICfZh9mBJywgd2Vla1N0YXR1czogJ9mH2YHYqtmH2ZAg2LPYp9mEJyxcblx0XHRkYXlTdGF0dXM6ICfYp9mG2KrYrtin2KggRCwgTSBkJywgZGVmYXVsdFN0YXR1czogJ9in2YbYqtiu2KfYqCDYqtin2LHZitiuJyxcblx0XHRpc1JUTDogdHJ1ZVxuXHR9O1xuXHQkLmNhbGVuZGFyc1BpY2tlci5zZXREZWZhdWx0cygkLmNhbGVuZGFyc1BpY2tlci5yZWdpb25hbE9wdGlvbnNbJ2ZhJ10pO1xufSkoalF1ZXJ5KTtcbu+7vy8qIGh0dHA6Ly9rZWl0aC13b29kLm5hbWUvY2FsZW5kYXJzLmh0bWxcbiAgIEZpbm5pc2ggbG9jYWxpc2F0aW9uIGZvciBjYWxlbmRhcnMgZGF0ZXBpY2tlciBmb3IgalF1ZXJ5LlxuICAgV3JpdHRlbiBieSBIYXJyaSBLaWxwacO2IChoYXJyaWtpbHBpb0BnbWFpbC5jb20pLiAqL1xuKGZ1bmN0aW9uKCQpIHtcblx0JC5jYWxlbmRhcnNQaWNrZXIucmVnaW9uYWxPcHRpb25zWydmaSddID0ge1xuXHRcdHJlbmRlcmVyOiAkLmNhbGVuZGFyc1BpY2tlci5kZWZhdWx0UmVuZGVyZXIsXG5cdFx0cHJldlRleHQ6ICcmbGFxdW87RWRlbGxpbmVuJywgcHJldlN0YXR1czogJycsXG5cdFx0cHJldkp1bXBUZXh0OiAnJiN4M2M7JiN4M2M7JywgcHJldkp1bXBTdGF0dXM6ICcnLFxuXHRcdG5leHRUZXh0OiAnU2V1cmFhdmEmcmFxdW87JywgbmV4dFN0YXR1czogJycsXG5cdFx0bmV4dEp1bXBUZXh0OiAnJiN4M2U7JiN4M2U7JywgbmV4dEp1bXBTdGF0dXM6ICcnLFxuXHRcdGN1cnJlbnRUZXh0OiAnVCZhdW1sO24mYXVtbDsmYXVtbDtuJywgY3VycmVudFN0YXR1czogJycsXG5cdFx0dG9kYXlUZXh0OiAnVCZhdW1sO24mYXVtbDsmYXVtbDtuJywgdG9kYXlTdGF0dXM6ICcnLFxuXHRcdGNsZWFyVGV4dDogJ1R5aGplbm4mYXVtbDsnLCBjbGVhclN0YXR1czogJycsXG5cdFx0Y2xvc2VUZXh0OiAnU3VsamUnLCBjbG9zZVN0YXR1czogJycsXG5cdFx0eWVhclN0YXR1czogJycsIG1vbnRoU3RhdHVzOiAnJyxcblx0XHR3ZWVrVGV4dDogJ1ZrJywgd2Vla1N0YXR1czogJycsXG5cdFx0ZGF5U3RhdHVzOiAnREQsIE0gZCcsIGRlZmF1bHRTdGF0dXM6ICcnLFxuXHRcdGlzUlRMOiBmYWxzZVxuXHR9O1xuXHQkLmNhbGVuZGFyc1BpY2tlci5zZXREZWZhdWx0cygkLmNhbGVuZGFyc1BpY2tlci5yZWdpb25hbE9wdGlvbnNbJ2ZpJ10pO1xufSkoalF1ZXJ5KTtcbu+7vy8qIGh0dHA6Ly9rZWl0aC13b29kLm5hbWUvY2FsZW5kYXJzLmh0bWxcbiAgIEZhcm9lc2UgbG9jYWxpc2F0aW9uIGZvciBjYWxlbmRhcnMgZGF0ZXBpY2tlciBmb3IgalF1ZXJ5LlxuICAgV3JpdHRlbiBieSBTdmVycmkgTW9ociBPbHNlbiwgc3ZlcnJpbW9AZ21haWwuY29tICovXG4oZnVuY3Rpb24oJCkge1xuXHQkLmNhbGVuZGFyc1BpY2tlci5yZWdpb25hbE9wdGlvbnNbJ2ZvJ10gPSB7XG5cdFx0cmVuZGVyZXI6ICQuY2FsZW5kYXJzUGlja2VyLmRlZmF1bHRSZW5kZXJlcixcblx0XHRwcmV2VGV4dDogJyYjeDNjO1PDrXN0YScsIHByZXZTdGF0dXM6ICdWw61zIHPDrXN0YSBtw6FuYcOwYW4nLFxuXHRcdHByZXZKdW1wVGV4dDogJyYjeDNjOyYjeDNjOycsIHByZXZKdW1wU3RhdHVzOiAnVsOtcyBzw61zdGEgw6FyacOwJyxcblx0XHRuZXh0VGV4dDogJ07DpnN0YSYjeDNlOycsIG5leHRTdGF0dXM6ICdWw61zIG7DpnN0YSBtw6FuYcOwYW4nLFxuXHRcdG5leHRKdW1wVGV4dDogJyYjeDNlOyYjeDNlOycsIG5leHRKdW1wU3RhdHVzOiAnVsOtcyBuw6ZzdGEgw6FyacOwJyxcblx0XHRjdXJyZW50VGV4dDogJ0hlc2luJywgY3VycmVudFN0YXR1czogJ1bDrXMgaGVuZGFuIG3DoW5hw7BhbicsXG5cdFx0dG9kYXlUZXh0OiAnw40gZGFnJywgdG9kYXlTdGF0dXM6ICdWw61zIG3DoW5hw7BhbiBmeXJpIMOtIGRhZycsXG5cdFx0Y2xlYXJUZXh0OiAnU3RyaWthJywgY2xlYXJTdGF0dXM6ICdTdHJpa2EgYWxsaXIgbcOhbmHDsGFybmFyJyxcblx0XHRjbG9zZVRleHQ6ICdHb3ltJywgY2xvc2VTdGF0dXM6ICdHb3ltIGhldHRhIHZpbmRlecOwZ2EnLFxuXHRcdHllYXJTdGF0dXM6ICdCcm95dCDDoXJpw7AnLCBtb250aFN0YXR1czogJ0Jyb3l0IG3DoW5hw7BhbnMnLFxuXHRcdHdlZWtUZXh0OiAnVmsnLCB3ZWVrU3RhdHVzOiAnVmlrYSBhdiDDoXJpbnVtJyxcblx0XHRkYXlTdGF0dXM6ICdWZWwgREQsIE0gZCwgeXl5eScsIGRlZmF1bHRTdGF0dXM6ICdWZWwgZWluIGRhdG8nLFxuXHRcdGlzUlRMOiBmYWxzZVxuXHR9O1xuXHQkLmNhbGVuZGFyc1BpY2tlci5zZXREZWZhdWx0cygkLmNhbGVuZGFyc1BpY2tlci5yZWdpb25hbE9wdGlvbnNbJ2ZvJ10pO1xufSkoalF1ZXJ5KTtcbu+7vy8qIGh0dHA6Ly9rZWl0aC13b29kLm5hbWUvY2FsZW5kYXJzLmh0bWxcbiAgIFN3aXNzIEZyZW5jaCBsb2NhbGlzYXRpb24gZm9yIGNhbGVuZGFycyBkYXRlcGlja2VyIGZvciBqUXVlcnkuXG4gICBXcml0dGVuIGJ5IE1hcnRpbiBWb2Vsa2xlIChtYXJ0aW4udm9lbGtsZUBlLXRjLmNoKS4gKi9cbihmdW5jdGlvbigkKSB7XG5cdCQuY2FsZW5kYXJzUGlja2VyLnJlZ2lvbmFsT3B0aW9uc1snZnItQ0gnXSA9IHtcblx0XHRyZW5kZXJlcjogJC5jYWxlbmRhcnNQaWNrZXIuZGVmYXVsdFJlbmRlcmVyLFxuXHRcdHByZXZUZXh0OiAnJiN4M2M7UHLDqWMnLCBwcmV2U3RhdHVzOiAnVm9pciBsZSBtb2lzIHByw6ljw6lkZW50Jyxcblx0XHRwcmV2SnVtcFRleHQ6ICcmI3gzYzsmI3gzYzsnLCBwcmV2SnVtcFN0YXR1czogJ1ZvaXIgbFxcJ2FubsOpZSBwcsOpY8OpZGVudCcsXG5cdFx0bmV4dFRleHQ6ICdTdWl2JiN4M2U7JywgbmV4dFN0YXR1czogJ1ZvaXIgbGUgbW9pcyBzdWl2YW50Jyxcblx0XHRuZXh0SnVtcFRleHQ6ICcmI3gzZTsmI3gzZTsnLCBuZXh0SnVtcFN0YXR1czogJ1ZvaXIgbFxcJ2FubsOpZSBzdWl2YW50Jyxcblx0XHRjdXJyZW50VGV4dDogJ0NvdXJhbnQnLCBjdXJyZW50U3RhdHVzOiAnVm9pciBsZSBtb2lzIGNvdXJhbnQnLFxuXHRcdHRvZGF5VGV4dDogJ0F1am91cmRcXCdodWknLCB0b2RheVN0YXR1czogJ1ZvaXIgYXVqb3VyZFxcJ2h1aScsXG5cdFx0Y2xlYXJUZXh0OiAnRWZmYWNlcicsIGNsZWFyU3RhdHVzOiAnRWZmYWNlciBsYSBkYXRlIHPDqWxlY3Rpb25uw6llJyxcblx0XHRjbG9zZVRleHQ6ICdGZXJtZXInLCBjbG9zZVN0YXR1czogJ0Zlcm1lciBzYW5zIG1vZGlmaWVyJyxcblx0XHR5ZWFyU3RhdHVzOiAnVm9pciB1bmUgYXV0cmUgYW5uw6llJywgbW9udGhTdGF0dXM6ICdWb2lyIHVuIGF1dHJlIG1vaXMnLFxuXHRcdHdlZWtUZXh0OiAnU20nLCB3ZWVrU3RhdHVzOiAnU2VtYWluZSBkZSBsXFwnYW5uw6llJyxcblx0XHRkYXlTdGF0dXM6ICdcXCdDaG9pc2lyXFwnIGxlIEREIGQgTU0nLCBkZWZhdWx0U3RhdHVzOiAnQ2hvaXNpciBsYSBkYXRlJyxcblx0XHRpc1JUTDogZmFsc2Vcblx0fTtcblx0JC5jYWxlbmRhcnNQaWNrZXIuc2V0RGVmYXVsdHMoJC5jYWxlbmRhcnNQaWNrZXIucmVnaW9uYWxPcHRpb25zWydmci1DSCddKTtcbn0pKGpRdWVyeSk7XG7vu78vKiBodHRwOi8va2VpdGgtd29vZC5uYW1lL2NhbGVuZGFycy5odG1sXG4gICBGcmVuY2ggbG9jYWxpc2F0aW9uIGZvciBjYWxlbmRhcnMgZGF0ZXBpY2tlciBmb3IgalF1ZXJ5LlxuICAgU3TDqXBoYW5lIE5haG1hbmkgKHNob2xieUBzaG9sYnkubmV0KS4gKi9cbihmdW5jdGlvbigkKSB7XG5cdCQuY2FsZW5kYXJzUGlja2VyLnJlZ2lvbmFsT3B0aW9uc1snZnInXSA9IHtcblx0XHRyZW5kZXJlcjogJC5jYWxlbmRhcnNQaWNrZXIuZGVmYXVsdFJlbmRlcmVyLFxuXHRcdHByZXZUZXh0OiAnJiN4M2M7UHLDqWMnLCBwcmV2U3RhdHVzOiAnVm9pciBsZSBtb2lzIHByw6ljw6lkZW50Jyxcblx0XHRwcmV2SnVtcFRleHQ6ICcmI3gzYzsmI3gzYzsnLCBwcmV2SnVtcFN0YXR1czogJ1ZvaXIgbFxcJ2FubsOpZSBwcsOpY8OpZGVudCcsXG5cdFx0bmV4dFRleHQ6ICdTdWl2JiN4M2U7JywgbmV4dFN0YXR1czogJ1ZvaXIgbGUgbW9pcyBzdWl2YW50Jyxcblx0XHRuZXh0SnVtcFRleHQ6ICcmI3gzZTsmI3gzZTsnLCBuZXh0SnVtcFN0YXR1czogJ1ZvaXIgbFxcJ2FubsOpZSBzdWl2YW50Jyxcblx0XHRjdXJyZW50VGV4dDogJ0NvdXJhbnQnLCBjdXJyZW50U3RhdHVzOiAnVm9pciBsZSBtb2lzIGNvdXJhbnQnLFxuXHRcdHRvZGF5VGV4dDogJ0F1am91cmRcXCdodWknLCB0b2RheVN0YXR1czogJ1ZvaXIgYXVqb3VyZFxcJ2h1aScsXG5cdFx0Y2xlYXJUZXh0OiAnRWZmYWNlcicsIGNsZWFyU3RhdHVzOiAnRWZmYWNlciBsYSBkYXRlIHPDqWxlY3Rpb25uw6llJyxcblx0XHRjbG9zZVRleHQ6ICdGZXJtZXInLCBjbG9zZVN0YXR1czogJ0Zlcm1lciBzYW5zIG1vZGlmaWVyJyxcblx0XHR5ZWFyU3RhdHVzOiAnVm9pciB1bmUgYXV0cmUgYW5uw6llJywgbW9udGhTdGF0dXM6ICdWb2lyIHVuIGF1dHJlIG1vaXMnLFxuXHRcdHdlZWtUZXh0OiAnU20nLCB3ZWVrU3RhdHVzOiAnU2VtYWluZSBkZSBsXFwnYW5uw6llJyxcblx0XHRkYXlTdGF0dXM6ICdcXCdDaG9pc2lyXFwnIGxlIEREIGQgTU0nLCBkZWZhdWx0U3RhdHVzOiAnQ2hvaXNpciBsYSBkYXRlJyxcblx0XHRpc1JUTDogZmFsc2Vcblx0fTtcblx0JC5jYWxlbmRhcnNQaWNrZXIuc2V0RGVmYXVsdHMoJC5jYWxlbmRhcnNQaWNrZXIucmVnaW9uYWxPcHRpb25zWydmciddKTtcbn0pKGpRdWVyeSk7XG7vu78vKiBodHRwOi8va2VpdGgtd29vZC5uYW1lL2NhbGVuZGFycy5odG1sXG4gICBJbmljaWFjaW9uIGVuIGdhbGVnbyBwYXJhIGEgZXh0ZW5zacOzbiAnVUkgZGF0ZSBwaWNrZXInIHBhcmEgalF1ZXJ5LlxuICAgVHJhZHVjaWRvIHBvciBNYW51ZWwgKE1jTnVlbEBnbXgubmV0KS4gKi9cbihmdW5jdGlvbigkKSB7XG5cdCQuY2FsZW5kYXJzUGlja2VyLnJlZ2lvbmFsT3B0aW9uc1snZ2wnXSA9IHtcblx0XHRyZW5kZXJlcjogJC5jYWxlbmRhcnNQaWNrZXIuZGVmYXVsdFJlbmRlcmVyLFxuXHRcdHByZXZUZXh0OiAnJiN4M2M7QW50JywgcHJldlN0YXR1czogJ0Ftb3NhciBtZXMgYW50ZXJpb3InLFxuXHRcdHByZXZKdW1wVGV4dDogJyYjeDNjOyYjeDNjOycsIHByZXZKdW1wU3RhdHVzOiAnQW1vc2FyIGFubyBhbnRlcmlvcicsXG5cdFx0bmV4dFRleHQ6ICdTZWcmI3gzZTsnLCBuZXh0U3RhdHVzOiAnQW1vc2FyIG1lcyBzZWd1aW50ZScsXG5cdFx0bmV4dEp1bXBUZXh0OiAnJiN4M2U7JiN4M2U7JywgbmV4dEp1bXBTdGF0dXM6ICdBbW9zYXIgYW5vIHNlZ3VpbnRlJyxcblx0XHRjdXJyZW50VGV4dDogJ0hveGUnLCBjdXJyZW50U3RhdHVzOiAnQW1vc2FyIG1lcyBhY3R1YWwnLFxuXHRcdHRvZGF5VGV4dDogJ0hveGUnLCB0b2RheVN0YXR1czogJ0Ftb3NhciBtZXMgYWN0dWFsJyxcblx0XHRjbGVhclRleHQ6ICdMaW1wYXInLCBjbGVhclN0YXR1czogJ0JvcnJhciBkYXRhIGFjdHVhbCcsXG5cdFx0Y2xvc2VUZXh0OiAnUGVjaGFyJywgY2xvc2VTdGF0dXM6ICdQZWNoYXIgc2VuIGdhcmRhcicsXG5cdFx0eWVhclN0YXR1czogJ0Ftb3NhciBvdXRybyBhbm8nLCBtb250aFN0YXR1czogJ0Ftb3NhciBvdXRybyBtZXMnLFxuXHRcdHdlZWtUZXh0OiAnU20nLCB3ZWVrU3RhdHVzOiAnU2VtYW5hIGRvIGFubycsXG5cdFx0ZGF5U3RhdHVzOiAnRCwgTSBkJywgZGVmYXVsdFN0YXR1czogJ1NlbGVjY2lvbmEgRGF0YScsXG5cdFx0aXNSVEw6IGZhbHNlXG5cdH07XG5cdCQuY2FsZW5kYXJzUGlja2VyLnNldERlZmF1bHRzKCQuY2FsZW5kYXJzUGlja2VyLnJlZ2lvbmFsT3B0aW9uc1snZ2wnXSk7XG59KShqUXVlcnkpO1xu77u/LyogaHR0cDovL2tlaXRoLXdvb2QubmFtZS9jYWxlbmRhcnMuaHRtbFxuICAgR3VqYXJhdGkgKOCql+CrgeCqnOCqsOCqvuCqpOCrgCkgbG9jYWxpc2F0aW9uIGZvciBjYWxlbmRhcnMgZGF0ZXBpY2tlciBmb3IgalF1ZXJ5LlxuICAgTmF5bWVzaCBNaXN0cnkgKG5heW1lc2hAeWFob28uY29tKS4gKi9cbihmdW5jdGlvbigkKSB7XG5cdCQuY2FsZW5kYXJzUGlja2VyLnJlZ2lvbmFsT3B0aW9uc1snZ3UnXSA9IHtcblx0XHRyZW5kZXJlcjogJC5jYWxlbmRhcnNQaWNrZXIuZGVmYXVsdFJlbmRlcmVyLFxuXHRcdHByZXZUZXh0OiAnJiN4M2M74Kqq4Kq+4Kqb4KqzJywgcHJldlN0YXR1czogJ+CqquCqvuCqm+CqsuCriyDgqq7gqrngqr/gqqjgq4sg4Kqs4Kqk4Kq+4Kq14KuLJyxcblx0XHRwcmV2SnVtcFRleHQ6ICcmI3gzYzsmI3gzYzsnLCBwcmV2SnVtcFN0YXR1czogJ+CqquCqvuCqm+CqsycsXG5cdFx0bmV4dFRleHQ6ICfgqobgqpfgqrMmI3gzZTsnLCBuZXh0U3RhdHVzOiAn4KqG4KqX4Kqy4KuLIOCqruCqueCqv+CqqOCriyDgqqzgqqTgqr7gqrXgq4snLFxuXHRcdG5leHRKdW1wVGV4dDogJyYjeDNlOyYjeDNlOycsIG5leHRKdW1wU3RhdHVzOiAn4KqG4KqX4KqzJyxcblx0XHRjdXJyZW50VGV4dDogJ+CqhuCqnOCrhycsIGN1cnJlbnRTdGF0dXM6ICfgqobgqpzgqqjgq4sg4Kqm4Kq/4Kq14Kq4IOCqrOCqpOCqvuCqteCriycsXG5cdFx0dG9kYXlUZXh0OiAn4KqG4Kqc4KuHJywgdG9kYXlTdGF0dXM6ICfgqobgqpzgqqjgq4sg4Kqm4Kq/4Kq14Kq4Jyxcblx0XHRjbGVhclRleHQ6ICfgqq3gq4LgqoLgqrjgq4snLCBjbGVhclN0YXR1czogJ+CqueCqvuCqsiDgqqrgqrjgqoLgqqYg4KqV4Kqw4KuH4Kqy4KuAIOCqpOCqvuCqsOCrgOCqliDgqq3gq4LgqoLgqrjgq4snLFxuXHRcdGNsb3NlVGV4dDogJ+CqrOCqguCqpyDgqpXgqrDgq4snLCBjbG9zZVN0YXR1czogJ+CqpOCqvuCqsOCrgOCqliDgqqrgqrjgqoLgqqYg4KqV4Kqw4KuN4Kqv4Kq+IOCqteCql+CqsCDgqqzgqoLgqqcg4KqV4Kqw4KuLJyxcblx0XHR5ZWFyU3RhdHVzOiAn4Kqc4KuB4Kqm4KuBIOCqteCqsOCrjeCqtyDgqqzgqqTgqr7gqrXgq4snLCBtb250aFN0YXR1czogJ+CqnOCrgeCqpuCriyDgqq7gqrngqr/gqqjgq4sg4Kqs4Kqk4Kq+4Kq14KuLJyxcblx0XHR3ZWVrVGV4dDogJ+CqheCqoOCqteCqvuCqoeCqv+Cqr+CrgeCqgicsIHdlZWtTdGF0dXM6ICfgqoXgqqDgqrXgqr7gqqHgqr/gqq/gq4HgqoInLFxuXHRcdGRheVN0YXR1czogJ+CqheCqoOCqteCqvuCqoeCqv+Cqr+CqvuCqqOCriyDgqqrgqrngq4fgqrLgq4sg4Kqm4Kq/4Kq14Kq4IOCqquCquOCqguCqpiDgqpXgqrDgq4snLCBkZWZhdWx0U3RhdHVzOiAn4Kqk4Kq+4Kqw4KuA4KqWIOCqquCquOCqguCqpiDgqpXgqrDgq4snLFx0XHRcblx0XHRpc1JUTDogZmFsc2Vcblx0fTtcblx0JC5jYWxlbmRhcnNQaWNrZXIuc2V0RGVmYXVsdHMoJC5jYWxlbmRhcnNQaWNrZXIucmVnaW9uYWxPcHRpb25zWydndSddKTtcbn0pKGpRdWVyeSk7XG7vu78vKiBodHRwOi8va2VpdGgtd29vZC5uYW1lL2NhbGVuZGFycy5odG1sXG4gICBIZWJyZXcgbG9jYWxpc2F0aW9uIGZvciBjYWxlbmRhcnMgZGF0ZXBpY2tlciBmb3IgalF1ZXJ5LlxuICAgV3JpdHRlbiBieSBBbWlyIEhhcmRvbiAoYWhhcmRvbiBhdCBnbWFpbCBkb3QgY29tKS4gKi9cbihmdW5jdGlvbigkKSB7XG5cdCQuY2FsZW5kYXJzUGlja2VyLnJlZ2lvbmFsT3B0aW9uc1snaGUnXSA9IHtcblx0XHRyZW5kZXJlcjogJC5jYWxlbmRhcnNQaWNrZXIuZGVmYXVsdFJlbmRlcmVyLFxuXHRcdHByZXZUZXh0OiAnJiN4M2M715TXp9eV15PXnScsIHByZXZTdGF0dXM6ICcnLFxuXHRcdHByZXZKdW1wVGV4dDogJyYjeDNjOyYjeDNjOycsIHByZXZKdW1wU3RhdHVzOiAnJyxcblx0XHRuZXh0VGV4dDogJ9eU15HXkCYjeDNlOycsIG5leHRTdGF0dXM6ICcnLFxuXHRcdG5leHRKdW1wVGV4dDogJyYjeDNlOyYjeDNlOycsIG5leHRKdW1wU3RhdHVzOiAnJyxcblx0XHRjdXJyZW50VGV4dDogJ9eU15nXldedJywgY3VycmVudFN0YXR1czogJycsXG5cdFx0dG9kYXlUZXh0OiAn15TXmdeV150nLCB0b2RheVN0YXR1czogJycsXG5cdFx0Y2xlYXJUZXh0OiAn16DXp9eUJywgY2xlYXJTdGF0dXM6ICcnLFxuXHRcdGNsb3NlVGV4dDogJ9eh15LXldeoJywgY2xvc2VTdGF0dXM6ICcnLFxuXHRcdHllYXJTdGF0dXM6ICcnLCBtb250aFN0YXR1czogJycsXG5cdFx0d2Vla1RleHQ6ICdXaycsIHdlZWtTdGF0dXM6ICcnLFxuXHRcdGRheVN0YXR1czogJ0RELCBNIGQnLCBkZWZhdWx0U3RhdHVzOiAnJyxcblx0XHRpc1JUTDogdHJ1ZVxuXHR9O1xuXHQkLmNhbGVuZGFyc1BpY2tlci5zZXREZWZhdWx0cygkLmNhbGVuZGFyc1BpY2tlci5yZWdpb25hbE9wdGlvbnNbJ2hlJ10pO1xufSkoalF1ZXJ5KTtcbu+7vy8qIGh0dHA6Ly9rZWl0aC13b29kLm5hbWUvY2FsZW5kYXJzLmh0bWxcbiAgIEhpbmRpIElORElBIGxvY2FsaXNhdGlvbiBmb3IgY2FsZW5kYXJzIGRhdGVwaWNrZXIgZm9yIGpRdWVyeS5cbiAgIFdyaXR0ZW4gYnkgUGF3YW4gS3VtYXIgU2luZ2guICovXG4oZnVuY3Rpb24oJCkge1xuXHQkLmNhbGVuZGFyc1BpY2tlci5yZWdpb25hbE9wdGlvbnNbJ2hpLUlOJ10gPSB7XG5cdFx0cmVuZGVyZXI6ICQuY2FsZW5kYXJzUGlja2VyLmRlZmF1bHRSZW5kZXJlcixcblx0XHRwcmV2VGV4dDogJ+CkquCkv+Ckm+CksuCkvicsIHByZXZTdGF0dXM6ICfgpKrgpL/gpJvgpLLgpL4g4KSu4KS54KWA4KSo4KS+IOCkpuClh+CkluClh+CkgicsXG5cdFx0cHJldkp1bXBUZXh0OiAnJiN4M2M7JiN4M2M7JywgcHJldkp1bXBTdGF0dXM6ICfgpKrgpL/gpJvgpLLgpL4g4KS14KSw4KWN4KS3IOCkpuClh+CkluClh+CkgicsXG5cdFx0bmV4dFRleHQ6ICfgpIXgpJfgpLLgpL4nLCBuZXh0U3RhdHVzOiAn4KSF4KSX4KSy4KS+IOCkruCkueClgOCkqOCkviDgpKbgpYfgpJbgpYfgpIInLFxuXHRcdG5leHRKdW1wVGV4dDogJyYjeDNlOyYjeDNlOycsIG5leHRKdW1wU3RhdHVzOiAn4KSF4KSX4KSy4KS+IOCkteCksOCljeCktyDgpKbgpYfgpJbgpYfgpIInLFxuXHRcdGN1cnJlbnRUZXh0OiAn4KS14KSw4KWN4KSk4KSu4KS+4KSoJywgY3VycmVudFN0YXR1czogJ+CkteCksOCljeCkpOCkruCkvuCkqCDgpK7gpLngpYDgpKjgpL4g4KSm4KWH4KSW4KWH4KSCJyxcblx0XHR0b2RheVRleHQ6ICfgpIbgpJwnLCB0b2RheVN0YXR1czogJ+CkteCksOCljeCkpOCkruCkvuCkqCDgpKbgpL/gpKgg4KSm4KWH4KSW4KWH4KSCJyxcblx0XHRjbGVhclRleHQ6ICfgpLjgpL7gpKsnLCBjbGVhclN0YXR1czogJ+CkteCksOCljeCkpOCkruCkvuCkqCDgpKbgpL/gpKjgpL7gpILgpJUg4KSu4KS/4KSf4KS+4KSPJyxcblx0XHRjbG9zZVRleHQ6ICfgpLjgpK7gpL7gpKrgpY3gpKQnLCBjbG9zZVN0YXR1czogJ+CkrOCkpuCksuCkvuCktSDgpJXgpYcg4KSs4KS/4KSo4KS+IOCkrOCkguCkpicsXG5cdFx0eWVhclN0YXR1czogJ+Ckj+CklSDgpIXgpLLgpJcg4KS14KSw4KWN4KS3IOCkleCkviDgpJrgpK/gpKgg4KSV4KSw4KWH4KSCJywgbW9udGhTdGF0dXM6ICfgpI/gpJUg4KSF4KSy4KSXIOCkruCkueClgOCkqOClhyDgpJXgpL4g4KSa4KSv4KSoIOCkleCksOClh+CkgicsXG5cdFx0d2Vla1RleHQ6ICdXaycsIHdlZWtTdGF0dXM6ICfgpLXgpLDgpY3gpLcg4KSV4KS+IOCkuOCkquCljeCkpOCkvuCkuScsXG5cdFx0ZGF5U3RhdHVzOiAn4KSa4KWB4KSo4KWHIERELCBNIGQnLCBkZWZhdWx0U3RhdHVzOiAn4KSP4KSVIOCkpOCkv+CkpeCkvyDgpJXgpL4g4KSa4KSv4KSoIOCkleCksOClh+CkgicsXG5cdFx0aXNSVEw6IGZhbHNlXG5cdH07XG5cdCQuY2FsZW5kYXJzUGlja2VyLnNldERlZmF1bHRzKCQuY2FsZW5kYXJzUGlja2VyLnJlZ2lvbmFsT3B0aW9uc1snaGktSU4nXSk7XG59KShqUXVlcnkpO1xu77u/LyogaHR0cDovL2tlaXRoLXdvb2QubmFtZS9jYWxlbmRhcnMuaHRtbFxuICAgQ3JvYXRpYW4gbG9jYWxpc2F0aW9uIGZvciBjYWxlbmRhcnMgZGF0ZXBpY2tlciBmb3IgalF1ZXJ5LlxuICAgV3JpdHRlbiBieSBWamVrb3NsYXYgTmVzZWsuICovXG4oZnVuY3Rpb24oJCkge1xuXHQkLmNhbGVuZGFyc1BpY2tlci5yZWdpb25hbE9wdGlvbnNbJ2hyJ10gPSB7XG5cdFx0cmVuZGVyZXI6ICQuY2FsZW5kYXJzUGlja2VyLmRlZmF1bHRSZW5kZXJlcixcblx0XHRwcmV2VGV4dDogJyYjeDNjOycsIHByZXZTdGF0dXM6ICdQcmlrYcW+aSBwcmV0aG9kbmkgbWplc2VjJyxcblx0XHRwcmV2SnVtcFRleHQ6ICcmI3gzYzsmI3gzYzsnLCBwcmV2SnVtcFN0YXR1czogJycsXG5cdFx0bmV4dFRleHQ6ICcmI3gzZTsnLCBuZXh0U3RhdHVzOiAnUHJpa2HFvmkgc2xpamVkZcSHaSBtamVzZWMnLFxuXHRcdG5leHRKdW1wVGV4dDogJyYjeDNlOyYjeDNlOycsIG5leHRKdW1wU3RhdHVzOiAnJyxcblx0XHRjdXJyZW50VGV4dDogJ0RhbmFzJywgY3VycmVudFN0YXR1czogJ0RhbmHFoW5qaSBkYXR1bScsXG5cdFx0dG9kYXlUZXh0OiAnRGFuYXMnLCB0b2RheVN0YXR1czogJ0RhbmHFoW5qaSBkYXR1bScsXG5cdFx0Y2xlYXJUZXh0OiAnaXpicmnFoWknLCBjbGVhclN0YXR1czogJ0l6YnJpxaFpIHRyZW51dG5pIGRhdHVtJyxcblx0XHRjbG9zZVRleHQ6ICdaYXR2b3JpJywgY2xvc2VTdGF0dXM6ICdaYXR2b3JpIGthbGVuZGFyJyxcblx0XHR5ZWFyU3RhdHVzOiAnUHJpa2HFvmkgZ29kaW5lJywgbW9udGhTdGF0dXM6ICdQcmlrYcW+aSBtamVzZWNlJyxcblx0XHR3ZWVrVGV4dDogJ1RqZScsIHdlZWtTdGF0dXM6ICdUamVkYW5yJyxcblx0XHRkYXlTdGF0dXM6ICdcXCdEYXR1bVxcJyBERCwgTSBkJywgZGVmYXVsdFN0YXR1czogJ09kYWJlcmkgZGF0dW0nLFxuXHRcdGlzUlRMOiBmYWxzZVxuXHR9O1xuXHQkLmNhbGVuZGFyc1BpY2tlci5zZXREZWZhdWx0cygkLmNhbGVuZGFyc1BpY2tlci5yZWdpb25hbE9wdGlvbnNbJ2hyJ10pO1xufSkoalF1ZXJ5KTtcbu+7vy8qIGh0dHA6Ly9rZWl0aC13b29kLm5hbWUvY2FsZW5kYXJzLmh0bWxcbiAgIEh1bmdhcmlhbiBsb2NhbGlzYXRpb24gZm9yIGNhbGVuZGFycyBkYXRlcGlja2VyIGZvciBqUXVlcnkuXG4gICBXcml0dGVuIGJ5IElzdHZhbiBLYXJhc3ppIChqcXVlcnljYWxlbmRhckBzcGFtLnJhc3ppLmh1KS4gKi9cbihmdW5jdGlvbigkKSB7XG5cdCQuY2FsZW5kYXJzUGlja2VyLnJlZ2lvbmFsT3B0aW9uc1snaHUnXSA9IHtcblx0XHRyZW5kZXJlcjogJC5jYWxlbmRhcnNQaWNrZXIuZGVmYXVsdFJlbmRlcmVyLFxuXHRcdHByZXZUZXh0OiAnJmxhcXVvOyZuYnNwO3Zpc3N6YScsIHByZXZTdGF0dXM6ICcnLFxuXHRcdHByZXZKdW1wVGV4dDogJyYjeDNjOyYjeDNjOycsIHByZXZKdW1wU3RhdHVzOiAnJyxcblx0XHRuZXh0VGV4dDogJ2VsxZFyZSZuYnNwOyZyYXF1bzsnLCBuZXh0U3RhdHVzOiAnJyxcblx0XHRuZXh0SnVtcFRleHQ6ICcmI3gzZTsmI3gzZTsnLCBuZXh0SnVtcFN0YXR1czogJycsXG5cdFx0Y3VycmVudFRleHQ6ICdtYScsIGN1cnJlbnRTdGF0dXM6ICcnLFxuXHRcdHRvZGF5VGV4dDogJ21hJywgdG9kYXlTdGF0dXM6ICcnLFxuXHRcdGNsZWFyVGV4dDogJ3TDtnJsw6lzJywgY2xlYXJTdGF0dXM6ICcnLFxuXHRcdGNsb3NlVGV4dDogJ2JlesOhcsOhcycsIGNsb3NlU3RhdHVzOiAnJyxcblx0XHR5ZWFyU3RhdHVzOiAnJywgbW9udGhTdGF0dXM6ICcnLFxuXHRcdHdlZWtUZXh0OiAnSMOpJywgd2Vla1N0YXR1czogJycsXG5cdFx0ZGF5U3RhdHVzOiAnREQsIE0gZCcsIGRlZmF1bHRTdGF0dXM6ICcnLFxuXHRcdGlzUlRMOiBmYWxzZVxuXHR9O1xuXHQkLmNhbGVuZGFyc1BpY2tlci5zZXREZWZhdWx0cygkLmNhbGVuZGFyc1BpY2tlci5yZWdpb25hbE9wdGlvbnNbJ2h1J10pO1xufSkoalF1ZXJ5KTtcbu+7vy8qIGh0dHA6Ly9rZWl0aC13b29kLm5hbWUvY2FsZW5kYXJzLmh0bWxcbiAgIEFybWVuaWFuIGxvY2FsaXNhdGlvbiBmb3IgY2FsZW5kYXJzIGRhdGVwaWNrZXIgZm9yIGpRdWVyeS5cbiAgIFdyaXR0ZW4gYnkgTGV2b24gWmFrYXJ5YW4gKGxldm9uLnpha2FyeWFuQGdtYWlsLmNvbSkgKi9cbihmdW5jdGlvbigkKSB7XG5cdCQuY2FsZW5kYXJzUGlja2VyLnJlZ2lvbmFsT3B0aW9uc1snaHknXSA9IHtcblx0XHRyZW5kZXJlcjogJC5jYWxlbmRhcnNQaWNrZXIuZGVmYXVsdFJlbmRlcmVyLFxuXHRcdHByZXZUZXh0OiAnJiN4M2M71YbVodWtLicsICBwcmV2U3RhdHVzOiAnJyxcblx0XHRwcmV2SnVtcFRleHQ6ICcmI3gzYzsmI3gzYzsnLCBwcmV2SnVtcFN0YXR1czogJycsXG5cdFx0bmV4dFRleHQ6ICfVgNWh1bsuJiN4M2U7JywgbmV4dFN0YXR1czogJycsXG5cdFx0bmV4dEp1bXBUZXh0OiAnJiN4M2U7JiN4M2U7JywgbmV4dEp1bXBTdGF0dXM6ICcnLFxuXHRcdGN1cnJlbnRUZXh0OiAn1LHVtdW91oXWgCcsIGN1cnJlbnRTdGF0dXM6ICcnLFxuXHRcdHRvZGF5VGV4dDogJ9Sx1bXVvdaF1oAnLCB0b2RheVN0YXR1czogJycsXG5cdFx0Y2xlYXJUZXh0OiAn1YTVodaE1oDVpdWsJywgY2xlYXJTdGF0dXM6ICcnLFxuXHRcdGNsb3NlVGV4dDogJ9WT1aHVr9Wl1awnLCBjbG9zZVN0YXR1czogJycsXG5cdFx0eWVhclN0YXR1czogJycsIG1vbnRoU3RhdHVzOiAnJyxcblx0XHR3ZWVrVGV4dDogJ9WH1LLVjycsIHdlZWtTdGF0dXM6ICcnLFxuXHRcdGRheVN0YXR1czogJ0RELCBNIGQnLCBkZWZhdWx0U3RhdHVzOiAnJyxcblx0XHRpc1JUTDogZmFsc2Vcblx0fTtcblx0JC5jYWxlbmRhcnNQaWNrZXIuc2V0RGVmYXVsdHMoJC5jYWxlbmRhcnNQaWNrZXIucmVnaW9uYWxPcHRpb25zWydoeSddKTtcbn0pKGpRdWVyeSk7XG7vu78vKiBodHRwOi8va2VpdGgtd29vZC5uYW1lL2NhbGVuZGFycy5odG1sXG4gICBJbmRvbmVzaWFuIGxvY2FsaXNhdGlvbiBmb3IgY2FsZW5kYXJzIGRhdGVwaWNrZXIgZm9yIGpRdWVyeS5cbiAgIFdyaXR0ZW4gYnkgRGVkZW4gRmF0aHVyYWhtYW4gKGRlZGVuZkBnbWFpbC5jb20pLiAqL1xuKGZ1bmN0aW9uKCQpIHtcblx0JC5jYWxlbmRhcnNQaWNrZXIucmVnaW9uYWxPcHRpb25zWydpZCddID0ge1xuXHRcdHJlbmRlcmVyOiAkLmNhbGVuZGFyc1BpY2tlci5kZWZhdWx0UmVuZGVyZXIsXG5cdFx0cHJldlRleHQ6ICcmI3gzYzttdW5kdXInLCBwcmV2U3RhdHVzOiAnVGFtcGlsa2FuIGJ1bGFuIHNlYmVsdW1ueWEnLFxuXHRcdHByZXZKdW1wVGV4dDogJyYjeDNjOyYjeDNjOycsIHByZXZKdW1wU3RhdHVzOiAnJyxcblx0XHRuZXh0VGV4dDogJ21hanUmI3gzZTsnLCBuZXh0U3RhdHVzOiAnVGFtcGlsa2FuIGJ1bGFuIGJlcmlrdXRueWEnLFxuXHRcdG5leHRKdW1wVGV4dDogJyYjeDNlOyYjeDNlOycsIG5leHRKdW1wU3RhdHVzOiAnJyxcblx0XHRjdXJyZW50VGV4dDogJ2hhcmkgaW5pJywgY3VycmVudFN0YXR1czogJ1RhbXBpbGthbiBidWxhbiBzZWthcmFuZycsXG5cdFx0dG9kYXlUZXh0OiAnaGFyaSBpbmknLCB0b2RheVN0YXR1czogJ1RhbXBpbGthbiBidWxhbiBzZWthcmFuZycsXG5cdFx0Y2xlYXJUZXh0OiAna29zb25na2FuJywgY2xlYXJTdGF0dXM6ICdiZXJzaWhrYW4gdGFuZ2dhbCB5YW5nIHNla2FyYW5nJyxcblx0XHRjbG9zZVRleHQ6ICdUdXR1cCcsIGNsb3NlU3RhdHVzOiAnVHV0dXAgdGFucGEgbWVuZ3ViYWgnLFxuXHRcdHllYXJTdGF0dXM6ICdUYW1waWxrYW4gdGFodW4geWFuZyBiZXJiZWRhJywgbW9udGhTdGF0dXM6ICdUYW1waWxrYW4gYnVsYW4geWFuZyBiZXJiZWRhJyxcblx0XHR3ZWVrVGV4dDogJ01nJywgd2Vla1N0YXR1czogJ01pbmdndSBkYWxhbSB0YWh1Jyxcblx0XHRkYXlTdGF0dXM6ICdwaWxpaCBsZSBERCwgTU0gZCcsIGRlZmF1bHRTdGF0dXM6ICdQaWxpaCBUYW5nZ2FsJyxcblx0XHRpc1JUTDogZmFsc2Vcblx0fTtcblx0JC5jYWxlbmRhcnNQaWNrZXIuc2V0RGVmYXVsdHMoJC5jYWxlbmRhcnNQaWNrZXIucmVnaW9uYWxPcHRpb25zWydpZCddKTtcbn0pKGpRdWVyeSk7XG7vu78vKiBodHRwOi8va2VpdGgtd29vZC5uYW1lL2NhbGVuZGFycy5odG1sXG4gICBJY2VsYW5kaWMgbG9jYWxpc2F0aW9uIGZvciBjYWxlbmRhcnMgZGF0ZXBpY2tlciBmb3IgalF1ZXJ5LlxuICAgV3JpdHRlbiBieSBIYXVrdXIgSC4gVGhvcnNzb24gKGhhdWt1ckBlc2tpbGwuaXMpLiAqL1xuKGZ1bmN0aW9uKCQpIHtcblx0JC5jYWxlbmRhcnNQaWNrZXIucmVnaW9uYWxPcHRpb25zWydpcyddID0ge1xuXHRcdHJlbmRlcmVyOiAkLmNhbGVuZGFyc1BpY2tlci5kZWZhdWx0UmVuZGVyZXIsXG5cdFx0cHJldlRleHQ6ICcmI3gzYzsgRnlycmknLCBwcmV2U3RhdHVzOiAnJyxcblx0XHRwcmV2SnVtcFRleHQ6ICcmI3gzYzsmI3gzYzsnLCBwcmV2SnVtcFN0YXR1czogJycsXG5cdFx0bmV4dFRleHQ6ICdOJmFlbGlnO3N0aSAmI3gzZTsnLCBuZXh0U3RhdHVzOiAnJyxcblx0XHRuZXh0SnVtcFRleHQ6ICcmI3gzZTsmI3gzZTsnLCBuZXh0SnVtcFN0YXR1czogJycsXG5cdFx0Y3VycmVudFRleHQ6ICcmSWFjdXRlOyBkYWcnLCBjdXJyZW50U3RhdHVzOiAnJyxcblx0XHR0b2RheVRleHQ6ICcmSWFjdXRlOyBkYWcnLCB0b2RheVN0YXR1czogJycsXG5cdFx0Y2xlYXJUZXh0OiAnSHJlaW5zYScsIGNsZWFyU3RhdHVzOiAnJyxcblx0XHRjbG9zZVRleHQ6ICdMb2thJywgY2xvc2VTdGF0dXM6ICcnLFxuXHRcdHllYXJTdGF0dXM6ICcnLCBtb250aFN0YXR1czogJycsXG5cdFx0d2Vla1RleHQ6ICdWaWthJywgd2Vla1N0YXR1czogJycsXG5cdFx0ZGF5U3RhdHVzOiAnREQsIE0gZCcsIGRlZmF1bHRTdGF0dXM6ICcnLFxuXHRcdGlzUlRMOiBmYWxzZVxuXHR9O1xuXHQkLmNhbGVuZGFyc1BpY2tlci5zZXREZWZhdWx0cygkLmNhbGVuZGFyc1BpY2tlci5yZWdpb25hbE9wdGlvbnNbJ2lzJ10pO1xufSkoalF1ZXJ5KTtcbu+7vy8qIGh0dHA6Ly9rZWl0aC13b29kLm5hbWUvY2FsZW5kYXJzLmh0bWxcbiAgIEl0YWxpYW4gbG9jYWxpc2F0aW9uIGZvciBjYWxlbmRhcnMgZGF0ZXBpY2tlciBmb3IgalF1ZXJ5LlxuICAgV3JpdHRlbiBieSBBcGFlbGxhIChhcGFlbGxhQGdtYWlsLmNvbSkuICovXG4oZnVuY3Rpb24oJCkge1xuXHQkLmNhbGVuZGFyc1BpY2tlci5yZWdpb25hbE9wdGlvbnNbJ2l0J10gPSB7XG5cdFx0cmVuZGVyZXI6ICQuY2FsZW5kYXJzUGlja2VyLmRlZmF1bHRSZW5kZXJlcixcblx0XHRwcmV2VGV4dDogJyYjeDNjO1ByZWMnLCBwcmV2U3RhdHVzOiAnTWVzZSBwcmVjZWRlbnRlJyxcblx0XHRwcmV2SnVtcFRleHQ6ICcmI3gzYzsmI3gzYzsnLCBwcmV2SnVtcFN0YXR1czogJ01vc3RyYSBsXFwnYW5ubyBwcmVjZWRlbnRlJyxcblx0XHRuZXh0VGV4dDogJ1N1Y2MmI3gzZTsnLCBuZXh0U3RhdHVzOiAnTWVzZSBzdWNjZXNzaXZvJyxcblx0XHRuZXh0SnVtcFRleHQ6ICcmI3gzZTsmI3gzZTsnLCBuZXh0SnVtcFN0YXR1czogJ01vc3RyYSBsXFwnYW5ubyBzdWNjZXNzaXZvJyxcblx0XHRjdXJyZW50VGV4dDogJ09nZ2knLCBjdXJyZW50U3RhdHVzOiAnTWVzZSBjb3JyZW50ZScsXG5cdFx0dG9kYXlUZXh0OiAnT2dnaScsIHRvZGF5U3RhdHVzOiAnTWVzZSBjb3JyZW50ZScsXG5cdFx0Y2xlYXJUZXh0OiAnU3Z1b3RhJywgY2xlYXJTdGF0dXM6ICdBbm51bGxhJyxcblx0XHRjbG9zZVRleHQ6ICdDaGl1ZGknLCBjbG9zZVN0YXR1czogJ0NoaXVkZXJlIHNlbnphIG1vZGlmaWNhcmUnLFxuXHRcdHllYXJTdGF0dXM6ICdTZWxlemlvbmEgdW4gYWx0cm8gYW5ubycsIG1vbnRoU3RhdHVzOiAnU2VsZXppb25hIHVuIGFsdHJvIG1lc2UnLFxuXHRcdHdlZWtUZXh0OiAnU20nLCB3ZWVrU3RhdHVzOiAnU2V0dGltYW5hIGRlbGxcXCdhbm5vJyxcblx0XHRkYXlTdGF0dXM6ICdcXCdTZWxlemlvbmFcXCcgREQsIE0gZCcsIGRlZmF1bHRTdGF0dXM6ICdTY2VnbGllcmUgdW5hIGRhdGEnLFxuXHRcdGlzUlRMOiBmYWxzZVxuXHR9O1xuXHQkLmNhbGVuZGFyc1BpY2tlci5zZXREZWZhdWx0cygkLmNhbGVuZGFyc1BpY2tlci5yZWdpb25hbE9wdGlvbnNbJ2l0J10pO1xufSkoalF1ZXJ5KTtcbu+7vy8qIGh0dHA6Ly9rZWl0aC13b29kLm5hbWUvY2FsZW5kYXJzLmh0bWxcbiAgIEphcGFuZXNlIGxvY2FsaXNhdGlvbiBmb3IgY2FsZW5kYXJzIGRhdGVwaWNrZXIgZm9yIGpRdWVyeS5cbiAgIFdyaXR0ZW4gYnkgS2VudGFybyBTQVRPIChrZW50YXJvQHJhbnZpcy5jb20pLiAqL1xuKGZ1bmN0aW9uKCQpIHtcblx0JC5jYWxlbmRhcnNQaWNrZXIucmVnaW9uYWxPcHRpb25zWydqYSddID0ge1xuXHRcdHJlbmRlcmVyOiAkLmV4dGVuZCh7fSwgJC5jYWxlbmRhcnNQaWNrZXIuZGVmYXVsdFJlbmRlcmVyLFxuXHRcdFx0e21vbnRoOiAkLmNhbGVuZGFyc1BpY2tlci5kZWZhdWx0UmVuZGVyZXIubW9udGguXG5cdFx0XHRcdHJlcGxhY2UoL21vbnRoSGVhZGVyLywgJ21vbnRoSGVhZGVyOnl5eXnlubQgTU0nKX0pLFxuXHRcdHByZXZUZXh0OiAnJiN4M2M75YmNJywgcHJldlN0YXR1czogJ+WJjeaciOOCkuihqOekuuOBl+OBvuOBmScsXG5cdFx0cHJldkp1bXBUZXh0OiAnJiN4M2M7JiN4M2M7JywgcHJldkp1bXBTdGF0dXM6ICfliY3lubTjgpLooajnpLrjgZfjgb7jgZknLFxuXHRcdG5leHRUZXh0OiAn5qyhJiN4M2U7JywgbmV4dFN0YXR1czogJ+e/jOaciOOCkuihqOekuuOBl+OBvuOBmScsXG5cdFx0bmV4dEp1bXBUZXh0OiAnJiN4M2U7JiN4M2U7JywgbmV4dEp1bXBTdGF0dXM6ICfnv4zlubTjgpLooajnpLrjgZfjgb7jgZknLFxuXHRcdGN1cnJlbnRUZXh0OiAn5LuK5pelJywgY3VycmVudFN0YXR1czogJ+S7iuaciOOCkuihqOekuuOBl+OBvuOBmScsXG5cdFx0dG9kYXlUZXh0OiAn5LuK5pelJywgdG9kYXlTdGF0dXM6ICfku4rmnIjjgpLooajnpLrjgZfjgb7jgZknLFxuXHRcdGNsZWFyVGV4dDogJ+OCr+ODquOCoicsIGNsZWFyU3RhdHVzOiAn5pel5LuY44KS44Kv44Oq44Ki44GX44G+44GZJyxcblx0XHRjbG9zZVRleHQ6ICfplonjgZjjgosnLCBjbG9zZVN0YXR1czogJ+WkieabtOOBm+OBmuOBq+mWieOBmOOBvuOBmScsXG5cdFx0eWVhclN0YXR1czogJ+ihqOekuuOBmeOCi+W5tOOCkuWkieabtOOBl+OBvuOBmScsIG1vbnRoU3RhdHVzOiAn6KGo56S644GZ44KL5pyI44KS5aSJ5pu044GX44G+44GZJyxcblx0XHR3ZWVrVGV4dDogJ+mAsScsIHdlZWtTdGF0dXM6ICfmmqbpgLHjgafnrKzkvZXpgLHnm67jgYvjgpLooajjgZfjgb7jgZknLFxuXHRcdGRheVN0YXR1czogJ3l5eXkvbW0vZGQnLCBkZWZhdWx0U3RhdHVzOiAn5pel5LuY44KS6YG45oqe44GX44G+44GZJyxcblx0XHRpc1JUTDogZmFsc2Vcblx0fTtcblx0JC5jYWxlbmRhcnNQaWNrZXIuc2V0RGVmYXVsdHMoJC5jYWxlbmRhcnNQaWNrZXIucmVnaW9uYWxPcHRpb25zWydqYSddKTtcbn0pKGpRdWVyeSk7XG7vu78vKiBodHRwOi8va2VpdGgtd29vZC5uYW1lL2NhbGVuZGFycy5odG1sXG4gICBHZW9yZ2lhbiBsb2NhbGlzYXRpb24gZm9yIGNhbGVuZGFycyBkYXRlcGlja2VyIGZvciBqUXVlcnkuXG4gICBBbmRyZWkgR29yYnVzaGtpbi4gKi9cbihmdW5jdGlvbigkKSB7XG5cdCQuY2FsZW5kYXJzUGlja2VyLnJlZ2lvbmFsT3B0aW9uc1sna2EnXSA9IHtcblx0XHRyZW5kZXJlcjogJC5jYWxlbmRhcnNQaWNrZXIuZGVmYXVsdFJlbmRlcmVyLFxuXHRcdHByZXZUZXh0OiAnPOGDo+GDmeGDkOGDnCcsIHByZXZTdGF0dXM6ICfhg6zhg5jhg5zhg5Ag4YOX4YOV4YOUJyxcblx0XHRwcmV2SnVtcFRleHQ6ICcmI3gzYzsmI3gzYzsnLCBwcmV2SnVtcFN0YXR1czogJ+GDrOGDmOGDnOGDkCDhg6zhg5Thg5rhg5gnLFxuXHRcdG5leHRUZXh0OiAn4YOs4YOY4YOcPicsIG5leHRTdGF0dXM6ICfhg6jhg5Thg5vhg5Phg5Thg5Lhg5gg4YOX4YOV4YOUJyxcblx0XHRuZXh0SnVtcFRleHQ6ICcmI3gzZTsmI3gzZTsnLCBuZXh0SnVtcFN0YXR1czogJ+GDqOGDlOGDm+GDk+GDlOGDkuGDmCDhg6zhg5Thg5rhg5gnLFxuXHRcdGN1cnJlbnRUZXh0OiAn4YOb4YOY4YOb4YOT4YOY4YOc4YOQ4YOg4YOUJywgY3VycmVudFN0YXR1czogJ+GDm+GDmOGDm+GDk+GDmOGDnOGDkOGDoOGDlCDhg5fhg5Xhg5QnLFxuXHRcdHRvZGF5VGV4dDogJ+GDk+GDpuGDlOGDoScsIHRvZGF5U3RhdHVzOiAn4YOb4YOY4YOb4YOT4YOY4YOc4YOQ4YOg4YOUIOGDk+GDpuGDlCcsXG5cdFx0Y2xlYXJUZXh0OiAn4YOS4YOQ4YOh4YOj4YOk4YOX4YOQ4YOV4YOU4YOR4YOQJywgY2xlYXJTdGF0dXM6ICfhg5vhg5jhg5vhg5Phg5jhg5zhg5Dhg6Dhg5Qg4YOX4YOQ4YOg4YOY4YOm4YOY4YOhIOGDrOGDkOGDqOGDmuGDkCcsXG5cdFx0Y2xvc2VUZXh0OiAn4YOQ4YOg4YOY4YOhJywgY2xvc2VTdGF0dXM6ICfhg5Phg5Dhg67hg6Phg6Dhg5Xhg5Ag4YOj4YOq4YOV4YOa4YOY4YOa4YOU4YOR4YOd4YOTJyxcblx0XHR5ZWFyU3RhdHVzOiAn4YOh4YOu4YOV4YOQIOGDrOGDlOGDmuGDmCcsIG1vbnRoU3RhdHVzOiAn4YOh4YOu4YOV4YOQIOGDl+GDleGDlCcsXG5cdFx0d2Vla1RleHQ6ICfhg5nhg5UnLCB3ZWVrU3RhdHVzOiAn4YOs4YOa4YOY4YOhIOGDmeGDleGDmOGDoOGDkCcsXG5cdFx0ZGF5U3RhdHVzOiAn4YOQ4YOY4YOg4YOp4YOY4YOU4YOXIERELCBNIGQnLCBkZWZhdWx0U3RhdHVzOiAn4YOQ4YOY4YOm4YOp4YOY4YOU4YOXIOGDl+GDkOGDoOGDmOGDpuGDmCcsXG5cdFx0aXNSVEw6IGZhbHNlXG5cdH07XG5cdCQuY2FsZW5kYXJzUGlja2VyLnNldERlZmF1bHRzKCQuY2FsZW5kYXJzUGlja2VyLnJlZ2lvbmFsT3B0aW9uc1sna2EnXSk7XG59KShqUXVlcnkpO1xu77u/LyogaHR0cDovL2tlaXRoLXdvb2QubmFtZS9jYWxlbmRhcnMuaHRtbFxuICAgS2htZXIgaW5pdGlhbGlzYXRpb24gZm9yIGNhbGVuZGFycyBkYXRlcGlja2VyIGZvciBqUXVlcnkuXG4gICBXcml0dGVuIGJ5IFNvdmljaGV0IFRlcCAoc292aWNoZXQudGVwQGdtYWlsLmNvbSkuICovXG4oZnVuY3Rpb24oJCkge1xuXHQkLmNhbGVuZGFyc1BpY2tlci5yZWdpb25hbE9wdGlvbnNbJ2ttJ10gPSB7XG5cdFx0cmVuZGVyZXI6ICQuY2FsZW5kYXJzUGlja2VyLmRlZmF1bHRSZW5kZXJlcixcblx0XHRwcmV2VGV4dDogJ+GekOGemeKAi+GegOGfkuGemuGfhOGemScsIHByZXZTdGF0dXM6ICcnLFxuXHRcdHByZXZKdW1wVGV4dDogJyYjeDNjOyYjeDNjOycsIHByZXZKdW1wU3RhdHVzOiAnJyxcblx0XHRuZXh0VGV4dDogJ+GekeGfheKAi+GemOGeu+GegScsIG5leHRTdGF0dXM6ICcnLFxuXHRcdG5leHRKdW1wVGV4dDogJyYjeDNlOyYjeDNlOycsIG5leHRKdW1wU3RhdHVzOiAnJyxcblx0XHRjdXJyZW50VGV4dDogJ+GekOGfkuGehOGfg+KAi+Gek+GfgeGfhycsIGN1cnJlbnRTdGF0dXM6ICcnLFxuXHRcdHRvZGF5VGV4dDogJ+GekOGfkuGehOGfg+KAi+Gek+GfgeGfhycsIHRvZGF5U3RhdHVzOiAnJyxcblx0XHRjbGVhclRleHQ6ICdYJywgY2xlYXJTdGF0dXM6ICcnLFxuXHRcdGNsb3NlVGV4dDogJ+GemuGeveGeheKAi+GemuGetuGem+GfiycsIGNsb3NlU3RhdHVzOiAnJyxcblx0XHR5ZWFyU3RhdHVzOiAnJywgbW9udGhTdGF0dXM6ICcnLFxuXHRcdHdlZWtUZXh0OiAnV2snLCB3ZWVrU3RhdHVzOiAnJyxcblx0XHRkYXlTdGF0dXM6ICdERCBkIE1NJywgZGVmYXVsdFN0YXR1czogJycsXG5cdFx0aXNSVEw6IGZhbHNlXG5cdH07XG5cdCQuY2FsZW5kYXJzUGlja2VyLnNldERlZmF1bHRzKCQuY2FsZW5kYXJzUGlja2VyLnJlZ2lvbmFsT3B0aW9uc1sna20nXSk7XG59KShqUXVlcnkpO1xu77u/LyogaHR0cDovL2tlaXRoLXdvb2QubmFtZS9jYWxlbmRhcnMuaHRtbFxuICAgS29yZWFuIGxvY2FsaXNhdGlvbiBmb3IgY2FsZW5kYXJzIGRhdGVwaWNrZXIgZm9yIGpRdWVyeS5cbiAgIFdyaXR0ZW4gYnkgRGFlS3dvbiBLYW5nIChuY3Jhc2guZGtAZ21haWwuY29tKSwgRWRpdGVkIGJ5IEdlbmllLiAqL1xuKGZ1bmN0aW9uKCQpIHtcblx0JC5jYWxlbmRhcnNQaWNrZXIucmVnaW9uYWxPcHRpb25zWydrbyddID0ge1xuXHRcdHJlbmRlcmVyOiAkLmV4dGVuZCh7fSwgJC5jYWxlbmRhcnNQaWNrZXIuZGVmYXVsdFJlbmRlcmVyLFxuXHRcdFx0e21vbnRoOiAkLmNhbGVuZGFyc1BpY2tlci5kZWZhdWx0UmVuZGVyZXIubW9udGguXG5cdFx0XHRcdHJlcGxhY2UoL21vbnRoSGVhZGVyLywgJ21vbnRoSGVhZGVyOnl5eXnrhYQgTU0nKX0pLFxuXHRcdHByZXZUZXh0OiAn7J207KCE64usJywgcHJldlN0YXR1czogJ+ydtOyghOuLrOydhCDtkZzsi5ztlanri4jri6QnLFxuXHRcdHByZXZKdW1wVGV4dDogJyYjeDNjOyYjeDNjOycsIHByZXZKdW1wU3RhdHVzOiAn7J207KCEIOyXsOuPhOulvCDtkZzsi5ztlanri4jri6QnLFxuXHRcdG5leHRUZXh0OiAn64uk7J2M64usJywgbmV4dFN0YXR1czogJ+uLpOydjOuLrOydhCDtkZzsi5ztlanri4jri6QnLFxuXHRcdG5leHRKdW1wVGV4dDogJyYjeDNlOyYjeDNlOycsIG5leHRKdW1wU3RhdHVzOiAn64uk7J2MIOyXsOuPhOulvCDtkZzsi5ztlanri4jri6QnLFxuXHRcdGN1cnJlbnRUZXh0OiAn7ZiE7J6sJywgY3VycmVudFN0YXR1czogJ+yeheugpe2VnCDri6zsnYQg7ZGc7Iuc7ZWp64uI64ukJyxcblx0XHR0b2RheVRleHQ6ICfsmKTripgnLCB0b2RheVN0YXR1czogJ+ydtOuyiOuLrOydhCDtkZzsi5ztlanri4jri6QnLFxuXHRcdGNsZWFyVGV4dDogJ+yngOyasOq4sCcsIGNsZWFyU3RhdHVzOiAn7J6F66Cl7ZWcIOuCoOynnOulvCDsp4Dsm4Hri4jri6QnLFxuXHRcdGNsb3NlVGV4dDogJ+uLq+q4sCcsIGNsb3NlU3RhdHVzOiAnJyxcblx0XHR5ZWFyU3RhdHVzOiAn7ZGc7Iuc7ZWgIOyXsOuPhOulvCDrs4Dqsr3tlanri4jri6QnLCBtb250aFN0YXR1czogJ+2RnOyLnO2VoCDsm5TsnYQg67OA6rK97ZWp64uI64ukJyxcblx0XHR3ZWVrVGV4dDogJ1drJywgd2Vla1N0YXR1czogJ+2VtOuLuSDsl7Drj4TsnZgg7KO87LCoJyxcblx0XHRkYXlTdGF0dXM6ICdNIGTsnbwgKEQpJywgZGVmYXVsdFN0YXR1czogJ+uCoOynnOulvCDshKDtg53tlZjshLjsmpQnLFxuXHRcdGlzUlRMOiBmYWxzZVxuXHR9O1xuXHQkLmNhbGVuZGFyc1BpY2tlci5zZXREZWZhdWx0cygkLmNhbGVuZGFyc1BpY2tlci5yZWdpb25hbE9wdGlvbnNbJ2tvJ10pO1xufSkoalF1ZXJ5KTtcbu+7vy8qIGh0dHA6Ly9rZWl0aC13b29kLm5hbWUvY2FsZW5kYXJzLmh0bWxcbiAgIExpdGh1YW5pYW4gbG9jYWxpc2F0aW9uIGZvciBjYWxlbmRhcnMgZGF0ZXBpY2tlciBmb3IgalF1ZXJ5LlxuICAgQXJ0dXJhcyBQYWxlaWNpa2FzIDxhcnR1cmFzQGF2YWxvbi5sdD4uICovXG4oZnVuY3Rpb24oJCkge1xuXHQkLmNhbGVuZGFyc1BpY2tlci5yZWdpb25hbE9wdGlvbnNbJ2x0J10gPSB7XG5cdFx0cmVuZGVyZXI6ICQuY2FsZW5kYXJzUGlja2VyLmRlZmF1bHRSZW5kZXJlcixcblx0XHRwcmV2VGV4dDogJyYjeDNjO0F0Z2FsJywgIHByZXZTdGF0dXM6ICcnLFxuXHRcdHByZXZKdW1wVGV4dDogJyYjeDNjOyYjeDNjOycsIHByZXZKdW1wU3RhdHVzOiAnJyxcblx0XHRuZXh0VGV4dDogJ1Bpcm15biYjeDNlOycsIG5leHRTdGF0dXM6ICcnLFxuXHRcdG5leHRKdW1wVGV4dDogJyYjeDNlOyYjeDNlOycsIG5leHRKdW1wU3RhdHVzOiAnJyxcblx0XHRjdXJyZW50VGV4dDogJ8WgaWFuZGllbicsIGN1cnJlbnRTdGF0dXM6ICcnLFxuXHRcdHRvZGF5VGV4dDogJ8WgaWFuZGllbicsIHRvZGF5U3RhdHVzOiAnJyxcblx0XHRjbGVhclRleHQ6ICdJxaF2YWx5dGknLCBjbGVhclN0YXR1czogJycsXG5cdFx0Y2xvc2VUZXh0OiAnVcW+ZGFyeXRpJywgY2xvc2VTdGF0dXM6ICcnLFxuXHRcdHllYXJTdGF0dXM6ICcnLCBtb250aFN0YXR1czogJycsXG5cdFx0d2Vla1RleHQ6ICdXaycsIHdlZWtTdGF0dXM6ICcnLFxuXHRcdGRheVN0YXR1czogJ0RELCBNIGQnLCBkZWZhdWx0U3RhdHVzOiAnJyxcblx0XHRpc1JUTDogZmFsc2Vcblx0fTtcblx0JC5jYWxlbmRhcnNQaWNrZXIuc2V0RGVmYXVsdHMoJC5jYWxlbmRhcnNQaWNrZXIucmVnaW9uYWxPcHRpb25zWydsdCddKTtcbn0pKGpRdWVyeSk7XG7vu78vKiBodHRwOi8va2VpdGgtd29vZC5uYW1lL2NhbGVuZGFycy5odG1sXG4gICBMYXR2aWFuIGxvY2FsaXNhdGlvbiBmb3IgY2FsZW5kYXJzIGRhdGVwaWNrZXIgZm9yIGpRdWVyeS5cbiAgIEFydHVyYXMgUGFsZWljaWthcyA8YXJ0dXJhcy5wYWxlaWNpa2FzQG1ldGFzaXRlLm5ldD4uICovXG4oZnVuY3Rpb24oJCkge1xuXHQkLmNhbGVuZGFyc1BpY2tlci5yZWdpb25hbE9wdGlvbnNbJ2x2J10gPSB7XG5cdFx0cmVuZGVyZXI6ICQuY2FsZW5kYXJzUGlja2VyLmRlZmF1bHRSZW5kZXJlcixcblx0XHRwcmV2VGV4dDogJ0llcHInLCAgcHJldlN0YXR1czogJycsXG5cdFx0cHJldkp1bXBUZXh0OiAnJiN4M2M7JiN4M2M7JywgcHJldkp1bXBTdGF0dXM6ICcnLFxuXHRcdG5leHRUZXh0OiAnTsSBa2EnLCBuZXh0U3RhdHVzOiAnJyxcblx0XHRuZXh0SnVtcFRleHQ6ICcmI3gzZTsmI3gzZTsnLCBuZXh0SnVtcFN0YXR1czogJycsXG5cdFx0Y3VycmVudFRleHQ6ICfFoG9kaWVuJywgY3VycmVudFN0YXR1czogJycsXG5cdFx0dG9kYXlUZXh0OiAnxaBvZGllbicsIHRvZGF5U3RhdHVzOiAnJyxcblx0XHRjbGVhclRleHQ6ICdOb3TEq3LEq3QnLCBjbGVhclN0YXR1czogJycsXG5cdFx0Y2xvc2VUZXh0OiAnQWl6dsSTcnQnLCBjbG9zZVN0YXR1czogJycsXG5cdFx0eWVhclN0YXR1czogJycsIG1vbnRoU3RhdHVzOiAnJyxcblx0XHR3ZWVrVGV4dDogJ05hdicsIHdlZWtTdGF0dXM6ICcnLFxuXHRcdGRheVN0YXR1czogJ0RELCBNIGQnLCBkZWZhdWx0U3RhdHVzOiAnJyxcblx0XHRpc1JUTDogZmFsc2Vcblx0fTtcblx0JC5jYWxlbmRhcnNQaWNrZXIuc2V0RGVmYXVsdHMoJC5jYWxlbmRhcnNQaWNrZXIucmVnaW9uYWxPcHRpb25zWydsdiddKTtcbn0pKGpRdWVyeSk7XG7vu78vKiBodHRwOi8va2VpdGgtd29vZC5uYW1lL2NhbGVuZGFycy5odG1sXG4gICBNb250ZW5lZ3JpbiBsb2NhbGlzYXRpb24gZm9yIGNhbGVuZGFycyBkYXRlcGlja2VyIGZvciBqUXVlcnkuXG4gICBXcml0dGVuIGJ5IE1pbG/FoSBNaWxvxaFldmnEhyAtIGZsZWthIGQuby5vLiAqL1xuKGZ1bmN0aW9uKCQpIHtcblx0JC5jYWxlbmRhcnNQaWNrZXIucmVnaW9uYWxPcHRpb25zWydtZS1NRSddID0ge1xuXHRcdHJlbmRlcmVyOiAkLmNhbGVuZGFyc1BpY2tlci5kZWZhdWx0UmVuZGVyZXIsXG5cdFx0cHJldlRleHQ6ICcmI3gzYzsnLCBwcmV2U3RhdHVzOiAnUHJpa2HFvmkgcHJldGhvZG5pIG1qZXNlYycsXG5cdFx0cHJldkp1bXBUZXh0OiAnJiN4M2M7JiN4M2M7JywgcHJldkp1bXBTdGF0dXM6ICdQcmlrYcW+aSBwcmV0aG9kbnUgZ29kaW51Jyxcblx0XHRuZXh0VGV4dDogJyYjeDNlOycsIG5leHRTdGF0dXM6ICdQcmlrYcW+aSBzbGplZGXEh2kgbWplc2VjJyxcblx0XHRuZXh0SnVtcFRleHQ6ICcmI3gzZTsmI3gzZTsnLCBuZXh0SnVtcFN0YXR1czogJ1ByaWthxb5pIHNsamVkZcSHdSBnb2RpbnUnLFxuXHRcdGN1cnJlbnRUZXh0OiAnRGFuYXMnLCBjdXJyZW50U3RhdHVzOiAnVGVrdcSHaSBtamVzZWMnLFxuXHRcdHRvZGF5VGV4dDogJ0RhbmFzJywgdG9kYXlTdGF0dXM6ICdUZWt1xIdpIG1qZXNlYycsXG5cdFx0Y2xlYXJUZXh0OiAnT2JyacWhaScsIGNsZWFyU3RhdHVzOiAnT2JyacWhaSB0cmVudXRuaSBkYXR1bScsXG5cdFx0Y2xvc2VUZXh0OiAnWmF0dm9yaScsIGNsb3NlU3RhdHVzOiAnWmF0dm9yaSBrYWxlbmRhcicsXG5cdFx0eWVhclN0YXR1czogJ1ByaWthxb5pIGdvZGluZScsIG1vbnRoU3RhdHVzOiAnUHJpa2HFvmkgbWplc2VjZScsXG5cdFx0d2Vla1RleHQ6ICdTZWQnLCB3ZWVrU3RhdHVzOiAnU2VkbWljYScsXG5cdFx0ZGF5U3RhdHVzOiAnXFwnRGF0dW1cXCcgREQsIE0gZCcsIGRlZmF1bHRTdGF0dXM6ICdPZGFiZXJpIGRhdHVtJyxcblx0XHRpc1JUTDogZmFsc2Vcblx0fTtcblx0JC5jYWxlbmRhcnNQaWNrZXIuc2V0RGVmYXVsdHMoJC5jYWxlbmRhcnNQaWNrZXIucmVnaW9uYWxPcHRpb25zWydtZS1NRSddKTtcbn0pKGpRdWVyeSk7XG4vKiBodHRwOi8va2VpdGgtd29vZC5uYW1lL2NhbGVuZGFycy5odG1sXG4gICBNb250ZW5lZ3JpbiBsb2NhbGlzYXRpb24gZm9yIGNhbGVuZGFycyBkYXRlcGlja2VyIGZvciBqUXVlcnkuXG4gICBXcml0dGVuIGJ5IE1pbG/FoSBNaWxvxaFldmnEhyAtIGZsZWthIGQuby5vLiAqL1xuKGZ1bmN0aW9uKCQpIHtcblx0JC5jYWxlbmRhcnNQaWNrZXIucmVnaW9uYWxPcHRpb25zWydtZSddID0ge1xuXHRcdHJlbmRlcmVyOiAkLmNhbGVuZGFyc1BpY2tlci5kZWZhdWx0UmVuZGVyZXIsXG5cdFx0cHJldlRleHQ6ICcmI3gzYzsnLCBwcmV2U3RhdHVzOiAn0J/RgNC40LrQsNC20Lgg0L/RgNC10YLRhdC+0LTQvdC4INC80ZjQtdGB0LXRhicsXG5cdFx0cHJldkp1bXBUZXh0OiAnJiN4M2M7JiN4M2M7JywgcHJldkp1bXBTdGF0dXM6ICfQn9GA0LjQutCw0LbQuCDQv9GA0LXRgtGF0L7QtNC90YMg0LPQvtC00LjQvdGDJyxcblx0XHRuZXh0VGV4dDogJyYjeDNlOycsIG5leHRTdGF0dXM6ICfQn9GA0LjQutCw0LbQuCDRgdGZ0LXQtNC10ZvQuCDQvNGY0LXRgdC10YYnLFxuXHRcdG5leHRKdW1wVGV4dDogJyYjeDNlOyYjeDNlOycsIG5leHRKdW1wU3RhdHVzOiAn0J/RgNC40LrQsNC20Lgg0YHRmdC10LTQtdGb0YMg0LPQvtC00LjQvdGDJyxcblx0XHRjdXJyZW50VGV4dDogJ9CU0LDQvdCw0YEnLCBjdXJyZW50U3RhdHVzOiAn0KLQtdC60YPRm9C4INC80ZjQtdGB0LXRhicsXG5cdFx0dG9kYXlUZXh0OiAn0JTQsNC90LDRgScsIHRvZGF5U3RhdHVzOiAn0KLQtdC60YPRm9C4INC80ZjQtdGB0LXRhicsXG5cdFx0Y2xlYXJUZXh0OiAn0J7QsdGA0LjRiNC4JywgY2xlYXJTdGF0dXM6ICfQntCx0YDQuNGI0Lgg0YLRgNC10L3Rg9GC0L3QuCDQtNCw0YLRg9C8Jyxcblx0XHRjbG9zZVRleHQ6ICfQl9Cw0YLQstC+0YDQuCcsIGNsb3NlU3RhdHVzOiAn0JfQsNGC0LLQvtGA0Lgg0LrQsNC70LXQvdC00LDRgCcsXG5cdFx0eWVhclN0YXR1czogJ9Cf0YDQuNC60LDQttC4INCz0L7QtNC40L3QtScsIG1vbnRoU3RhdHVzOiAn0J/RgNC40LrQsNC20Lgg0LzRmNC10YHQtdGG0LUnLFxuXHRcdHdlZWtUZXh0OiAn0KHQtdC0Jywgd2Vla1N0YXR1czogJ9Ch0LXQtNC80LjRhtCwJyxcblx0XHRkYXlTdGF0dXM6ICdcXCfQlNCw0YLRg9C8XFwnIEREIGQgTU0nLCBkZWZhdWx0U3RhdHVzOiAn0J7QtNCw0LHQtdGA0Lgg0LTQsNGC0YPQvCcsXG5cdFx0aXNSVEw6IGZhbHNlXG5cdH07XG5cdCQuY2FsZW5kYXJzUGlja2VyLnNldERlZmF1bHRzKCQuY2FsZW5kYXJzUGlja2VyLnJlZ2lvbmFsT3B0aW9uc1snbWUnXSk7XG59KShqUXVlcnkpO1xu77u/LyogaHR0cDovL2tlaXRoLXdvb2QubmFtZS9jYWxlbmRhcnMuaHRtbFxuICAg0JzQsNC60LXQtNC+0L3RgdC60LggTUsgbG9jYWxpc2F0aW9uIGZvciBjYWxlbmRhcnMgZGF0ZXBpY2tlciBmb3IgalF1ZXJ5LlxuICAgSGFqYW4gU2VsbWFuaSAoaGFqYW4gW2F0XSBsaXZlIFtkb3RdIGNvbSkuICovXG4oZnVuY3Rpb24oJCkge1xuXHQkLmNhbGVuZGFyc1BpY2tlci5yZWdpb25hbE9wdGlvbnNbJ21rJ10gPSB7XG5cdFx0cmVuZGVyZXI6ICQuY2FsZW5kYXJzUGlja2VyLmRlZmF1bHRSZW5kZXJlcixcblx0XHRwcmV2VGV4dDogJ9Cf0YDQtdGC0YUuJywgcHJldlN0YXR1czogJ9Cf0YDQuNC60LDQttC4INCz0L4g0L/RgNC10YLRhdC+0LTQvdC40L7RgiDQvNC10YHQtdGGJyxcblx0XHRwcmV2SnVtcFRleHQ6ICcmI3gzYzsmI3gzYzsnLCBwcmV2SnVtcFN0YXR1czogJ9Cf0YDQuNC60LDQttC4INGY0LAg0L/RgNC10YLRhdC+0LTQvdCw0YLQsCDQs9C+0LTQuNC90LAnLFxuXHRcdG5leHRUZXh0OiAn0KHQu9C10LTQtdC9JywgbmV4dFN0YXR1czogJ9Cf0YDQuNC60LDQttC4INCz0L4g0YHQu9C10LTQvdC40L7RgiDQvNC10YHQtdGGJyxcblx0XHRuZXh0SnVtcFRleHQ6ICcmI3gzZTsmI3gzZTsnLCBuZXh0SnVtcFN0YXR1czogJ9Cf0YDQuNC60LDQttC4INGY0LAg0YHQu9C10LTQvdCw0YLQsCDQs9C+0LTQuNC90LAnLFxuXHRcdGN1cnJlbnRUZXh0OiAn0KLQtdC60L7QstC10L0nLCBjdXJyZW50U3RhdHVzOiAn0J/RgNC40LrQsNC20Lgg0LPQviDRgtC10LrQvtCy0L3QuNC+0YIg0LzQtdGB0LXRhicsXG5cdFx0dG9kYXlUZXh0OiAn0JTQtdC90LXRgScsIHRvZGF5U3RhdHVzOiAn0J/RgNC40LrQsNC20Lgg0LPQviDQtNC10L3QtdGI0L3QuNC+0YIg0LzQtdGB0LXRhicsXG5cdFx0Y2xlYXJUZXh0OiAn0JHRgNC40YjQuCcsIGNsZWFyU3RhdHVzOiAn0JjQt9Cx0YDQuNGI0Lgg0LPQviDRgtC10LrQvtCy0L3QuNC+0YIg0LTQsNGC0YPQvCcsXG5cdFx0Y2xvc2VUZXh0OiAn0JfQsNGC0LLQvtGA0LgnLCBjbG9zZVN0YXR1czogJ9CX0LDRgtCy0L7RgNC4INCx0LXQtyDQv9GA0L7QvNC10L3QuCcsXG5cdFx0eWVhclN0YXR1czogJ9CY0LfQsdC10YDQuCDQtNGA0YPQs9CwINCz0L7QtNC40L3QsCcsIG1vbnRoU3RhdHVzOiAn0JjQt9Cx0LXRgNC4INC00YDRg9CzINC80LXRgdC10YYnLFxuXHRcdHdlZWtUZXh0OiAn0J3QtdC0Jywgd2Vla1N0YXR1czogJ9Cd0LXQtNC10LvQsCDQstC+INCz0L7QtNC40L3QsNGC0LAnLFxuXHRcdGRheVN0YXR1czogJ9CY0LfQsdC10YDQuCBERCwgTSBkJywgZGVmYXVsdFN0YXR1czogJ9CY0LfQsdC10YDQuCDQtNCw0YLRg9C8Jyxcblx0XHRpc1JUTDogZmFsc2Vcblx0fTtcblx0JC5jYWxlbmRhcnNQaWNrZXIuc2V0RGVmYXVsdHMoJC5jYWxlbmRhcnNQaWNrZXIucmVnaW9uYWxPcHRpb25zWydtayddKTtcbn0pKGpRdWVyeSk7XG7vu78vKiBodHRwOi8va2VpdGgtd29vZC5uYW1lL2NhbGVuZGFycy5odG1sXG4gICBNYWxheWFsYW0gbG9jYWxpc2F0aW9uIGZvciBjYWxlbmRhcnMgZGF0ZXBpY2tlciBmb3IgalF1ZXJ5LlxuICAgU2FqaSBOZWRpeWFuY2hhdGggKHNhamk4OUBnbWFpbC5jb20pLiAqL1xuKGZ1bmN0aW9uKCQpIHtcblx0JC5jYWxlbmRhcnNQaWNrZXIucmVnaW9uYWxPcHRpb25zWydtbCddID0ge1xuXHRcdHJlbmRlcmVyOiAkLmNhbGVuZGFyc1BpY2tlci5kZWZhdWx0UmVuZGVyZXIsXG5cdFx0cHJldlRleHQ6ICfgtK7gtYHgtKjgtY3gtKjgtKTgtY3gtKTgtYYnLCBwcmV2U3RhdHVzOiAnJyxcblx0XHRwcmV2SnVtcFRleHQ6ICcmI3gzYzsmI3gzYzsnLCBwcmV2SnVtcFN0YXR1czogJycsXG5cdFx0bmV4dFRleHQ6ICfgtIXgtJ/gtYHgtKTgtY3gtKTgtKTgtY0gJywgbmV4dFN0YXR1czogJycsXG5cdFx0bmV4dEp1bXBUZXh0OiAnJiN4M2U7JiN4M2U7JywgbmV4dEp1bXBTdGF0dXM6ICcnLFxuXHRcdGN1cnJlbnRUZXh0OiAn4LSH4LSo4LWN4LSo4LWNJywgY3VycmVudFN0YXR1czogJycsXG5cdFx0dG9kYXlUZXh0OiAn4LSH4LSo4LWN4LSo4LWNJywgdG9kYXlTdGF0dXM6ICcnLFxuXHRcdGNsZWFyVGV4dDogJ1gnLCBjbGVhclN0YXR1czogJycsXG5cdFx0Y2xvc2VUZXh0OiAn4LS24LSw4LS/JywgY2xvc2VTdGF0dXM6ICcnLFxuXHRcdHllYXJTdGF0dXM6ICcnLCBtb250aFN0YXR1czogJycsXG5cdFx0d2Vla1RleHQ6ICfgtIYnLCB3ZWVrU3RhdHVzOiAnJyxcblx0XHRkYXlTdGF0dXM6ICdERCBkIE1NJywgZGVmYXVsdFN0YXR1czogJycsXG5cdFx0aXNSVEw6IGZhbHNlXG5cdH07XG5cdCQuY2FsZW5kYXJzUGlja2VyLnNldERlZmF1bHRzKCQuY2FsZW5kYXJzUGlja2VyLnJlZ2lvbmFsT3B0aW9uc1snbWwnXSk7XG59KShqUXVlcnkpO1xu77u/LyogaHR0cDovL2tlaXRoLXdvb2QubmFtZS9jYWxlbmRhcnMuaHRtbFxuICAgTWFsYXlzaWFuIGxvY2FsaXNhdGlvbiBmb3IgY2FsZW5kYXJzIGRhdGVwaWNrZXIgZm9yIGpRdWVyeS5cbiAgIFdyaXR0ZW4gYnkgTW9oZCBOYXdhd2kgTW9oYW1hZCBKYW1pbGkgKG5hd2F3aUByb25nZ2VuZy5uZXQpLiAqL1xuKGZ1bmN0aW9uKCQpIHtcblx0JC5jYWxlbmRhcnNQaWNrZXIucmVnaW9uYWxPcHRpb25zWydtcyddID0ge1xuXHRcdHJlbmRlcmVyOiAkLmNhbGVuZGFyc1BpY2tlci5kZWZhdWx0UmVuZGVyZXIsXG5cdFx0cHJldlRleHQ6ICcmI3gzYztTZWJlbHVtJywgcHJldlN0YXR1czogJ1R1bmp1a2thbiBidWxhbiBsZXBhcycsXG5cdFx0cHJldkp1bXBUZXh0OiAnJiN4M2M7JiN4M2M7JywgcHJldkp1bXBTdGF0dXM6ICdUdW5qdWtrYW4gdGFodW4gbGVwYXMnLFxuXHRcdG5leHRUZXh0OiAnU2VsZXBhcyYjeDNlOycsIG5leHRTdGF0dXM6ICdUdW5qdWtrYW4gYnVsYW4gZGVwYW4nLFxuXHRcdG5leHRKdW1wVGV4dDogJyYjeDNlOyYjeDNlOycsIG5leHRKdW1wU3RhdHVzOiAnVHVuanVra2FuIHRhaHVuIGRlcGFuJyxcblx0XHRjdXJyZW50VGV4dDogJ2hhcmkgaW5pJywgY3VycmVudFN0YXR1czogJ1R1bmp1a2thbiBidWxhbiB0ZXJraW5pJyxcblx0XHR0b2RheVRleHQ6ICdoYXJpIGluaScsIHRvZGF5U3RhdHVzOiAnVHVuanVra2FuIGJ1bGFuIHRlcmtpbmknLFxuXHRcdGNsZWFyVGV4dDogJ1BhZGFtJywgY2xlYXJTdGF0dXM6ICdQYWRhbWthbiB0YXJpa2ggdGVya2luaScsXG5cdFx0Y2xvc2VUZXh0OiAnVHV0dXAnLCBjbG9zZVN0YXR1czogJ1R1dHVwIHRhbnBhIHBlcnViYWhhbicsXG5cdFx0eWVhclN0YXR1czogJ1R1bmp1a2thbiB0YWh1biB5YW5nIGxhaW4nLCBtb250aFN0YXR1czogJ1R1bmp1a2thbiBidWxhbiB5YW5nIGxhaW4nLFxuXHRcdHdlZWtUZXh0OiAnTWcnLCB3ZWVrU3RhdHVzOiAnTWluZ2d1IGJhZ2kgdGFodW4gaW5pJyxcblx0XHRkYXlTdGF0dXM6ICdERCwgZCBNTScsIGRlZmF1bHRTdGF0dXM6ICdTaWxhIHBpbGloIHRhcmlraCcsXG5cdFx0aXNSVEw6IGZhbHNlXG5cdH07XG5cdCQuY2FsZW5kYXJzUGlja2VyLnNldERlZmF1bHRzKCQuY2FsZW5kYXJzUGlja2VyLnJlZ2lvbmFsT3B0aW9uc1snbXMnXSk7XG59KShqUXVlcnkpO1xu77u/LyogaHR0cDovL2tlaXRoLXdvb2QubmFtZS9jYWxlbmRhcnMuaHRtbFxuICAgTWFsdGVzZSBsb2NhbGlzYXRpb24gZm9yIGNhbGVuZGFycyBkYXRlcGlja2VyIGZvciBqUXVlcnkuXG4gICBXcml0dGVuIGJ5IENocml0aWFuIFNjaWJlcnJhcyAodXVmNjQyOUBnbWFpbC5jb20pLiAqL1xuKGZ1bmN0aW9uKCQpIHtcblx0JC5jYWxlbmRhcnNQaWNrZXIucmVnaW9uYWxPcHRpb25zWydtdCddID0ge1xuXHRcdHJlbmRlcmVyOiAkLmNhbGVuZGFyc1BpY2tlci5kZWZhdWx0UmVuZGVyZXIsXG5cdFx0cHJldlRleHQ6ICdUYSBRYWJlbCcsIHByZXZTdGF0dXM6ICdJeC14YWhhciB0YSBxYWJlbCcsXG4gXHRcdHByZXZKdW1wVGV4dDogJyYjeDNjOyYjeDNjOycsIHByZXZKdW1wU3RhdHVzOiAnSXMtc2VuYSB0YSBxYWJlbCcsXG4gXHRcdG5leHRUZXh0OiAnTGkgSm1pc3MnLCBuZXh0U3RhdHVzOiAnSXgteGFoYXIgbGkgam1pc3MnLFxuIFx0XHRuZXh0SnVtcFRleHQ6ICcmI3gzZTsmI3gzZTsnLCBuZXh0SnVtcFN0YXR1czogJ0lzLXNlbmEgbGkgam1pc3MnLFxuIFx0XHRjdXJyZW50VGV4dDogJ0lsbHVtJywgY3VycmVudFN0YXR1czogJ0l4LXhhaGFyIHRhIGxsdW0nLFxuIFx0XHR0b2RheVRleHQ6ICdJbGx1bScsIHRvZGF5U3RhdHVzOiAnVXJpIGl4LXhhaGFyIHRhIGxsdW0nLFxuIFx0XHRjbGVhclRleHQ6ICfEpmFzc2FyJywgY2xlYXJTdGF0dXM6ICfEpmFzc2FyIGlkLWRhdGEnLFxuIFx0XHRjbG9zZVRleHQ6ICdMZXN0JywgY2xvc2VTdGF0dXM6ICdHxKdhbGFxIG1pbmfEp2FqciB0aWJkaWxpZXQnLFxuIFx0XHR5ZWFyU3RhdHVzOiAnVXJpIHNlbmEgZGlmZmVyZW50aScsIG1vbnRoU3RhdHVzOiAnVXJpIHhhaGFyIGRpZmZlcmVudGknLFxuXHRcdHdlZWtUZXh0OiAnxKBtJywgd2Vla1N0YXR1czogJ0lsLcSgaW1nxKdhIGZpcy1zZW5hJyxcblx0XHRkYXlTdGF0dXM6ICdHxKdhemVsIERELCBNIGQnLCBkZWZhdWx0U3RhdHVzOiAnR8SnYXplbCBkYXRhJyxcblx0XHRpc1JUTDogZmFsc2Vcblx0fTtcblx0JC5jYWxlbmRhcnNQaWNrZXIuc2V0RGVmYXVsdHMoJC5jYWxlbmRhcnNQaWNrZXIucmVnaW9uYWxPcHRpb25zWydtdCddKTtcbn0pKGpRdWVyeSk7XG7vu78vKiBodHRwOi8va2VpdGgtd29vZC5uYW1lL2NhbGVuZGFycy5odG1sXG4gICBEdXRjaC9CZWxnaWFuIGxvY2FsaXNhdGlvbiBmb3IgY2FsZW5kYXJzIGRhdGVwaWNrZXIgZm9yIGpRdWVyeS5cbiAgIFdyaXR0ZW4gYnkgTWF0aGlhcyBCeW5lbnMgPGh0dHA6Ly9tYXRoaWFzYnluZW5zLmJlLz4uICovXG4oZnVuY3Rpb24oJCkge1xuXHQkLmNhbGVuZGFyc1BpY2tlci5yZWdpb25hbE9wdGlvbnNbJ25sLUJFJ10gPSB7XG5cdFx0cmVuZGVyZXI6ICQuY2FsZW5kYXJzUGlja2VyLmRlZmF1bHRSZW5kZXJlcixcblx0XHRwcmV2VGV4dDogJ+KGkCcsIHByZXZTdGF0dXM6ICdCZWtpamsgZGUgdm9yaWdlIG1hYW5kJyxcblx0XHRwcmV2SnVtcFRleHQ6ICfCqycsIG5leHRKdW1wU3RhdHVzOiAnQmVraWprIGhldCB2b3JpZ2UgamFhcicsXG5cdFx0bmV4dFRleHQ6ICfihpInLCBuZXh0U3RhdHVzOiAnQmVraWprIGRlIHZvbGdlbmRlIG1hYW5kJyxcblx0XHRuZXh0SnVtcFRleHQ6ICfCuycsIG5leHRKdW1wU3RhdHVzOiAnQmVraWprIGhldCB2b2xnZW5kZSBqYWFyJyxcblx0XHRjdXJyZW50VGV4dDogJ1ZhbmRhYWcnLCBjdXJyZW50U3RhdHVzOiAnQmVraWprIGRlIGh1aWRpZ2UgbWFhbmQnLFxuXHRcdHRvZGF5VGV4dDogJ1ZhbmRhYWcnLCB0b2RheVN0YXR1czogJ0Jla2lqayBkZSBodWlkaWdlIG1hYW5kJyxcblx0XHRjbGVhclRleHQ6ICdXaXNzZW4nLCBjbGVhclN0YXR1czogJ1dpcyBkZSBodWlkaWdlIGRhdHVtJyxcblx0XHRjbG9zZVRleHQ6ICdTbHVpdGVuJywgY2xvc2VTdGF0dXM6ICdTbHVpdCB6b25kZXIgdmVyYW5kZXJpbmcnLFxuXHRcdHllYXJTdGF0dXM6ICdCZWtpamsgZWVuIGFuZGVyIGphYXInLCBtb250aFN0YXR1czogJ0Jla2lqayBlZW4gYW5kZXJlIG1hYW5kJyxcblx0XHR3ZWVrVGV4dDogJ1drJywgd2Vla1N0YXR1czogJ1dlZWsgdmFuIGhldCBqYWFyJyxcblx0XHRkYXlTdGF0dXM6ICdkZC9tbS95eXl5JywgZGVmYXVsdFN0YXR1czogJ0tpZXMgZWVuIGRhdHVtJyxcblx0XHRpc1JUTDogZmFsc2Vcblx0fTtcblx0JC5jYWxlbmRhcnNQaWNrZXIuc2V0RGVmYXVsdHMoJC5jYWxlbmRhcnNQaWNrZXIucmVnaW9uYWxPcHRpb25zWydubC1CRSddKTtcbn0pKGpRdWVyeSk7XG7vu78vKiBodHRwOi8va2VpdGgtd29vZC5uYW1lL2NhbGVuZGFycy5odG1sXG4gICBEdXRjaCBsb2NhbGlzYXRpb24gZm9yIGNhbGVuZGFycyBkYXRlcGlja2VyIGZvciBqUXVlcnkuXG4gICBXcml0dGVuIGJ5IE1hdGhpYXMgQnluZW5zIDxodHRwOi8vbWF0aGlhc2J5bmVucy5iZS8+LiAqL1xuKGZ1bmN0aW9uKCQpIHtcblx0JC5jYWxlbmRhcnNQaWNrZXIucmVnaW9uYWxPcHRpb25zWydubCddID0ge1xuXHRcdHJlbmRlcmVyOiAkLmNhbGVuZGFyc1BpY2tlci5kZWZhdWx0UmVuZGVyZXIsXG5cdFx0cHJldlRleHQ6ICfihpAnLCBwcmV2U3RhdHVzOiAnQmVraWprIGRlIHZvcmlnZSBtYWFuZCcsXG5cdFx0cHJldkp1bXBUZXh0OiAnwqsnLCBuZXh0SnVtcFN0YXR1czogJ0Jla2lqayBoZXQgdm9yaWdlIGphYXInLFxuXHRcdG5leHRUZXh0OiAn4oaSJywgbmV4dFN0YXR1czogJ0Jla2lqayBkZSB2b2xnZW5kZSBtYWFuZCcsXG5cdFx0bmV4dEp1bXBUZXh0OiAnwrsnLCBuZXh0SnVtcFN0YXR1czogJ0Jla2lqayBoZXQgdm9sZ2VuZGUgamFhcicsXG5cdFx0Y3VycmVudFRleHQ6ICdWYW5kYWFnJywgY3VycmVudFN0YXR1czogJ0Jla2lqayBkZSBodWlkaWdlIG1hYW5kJyxcblx0XHR0b2RheVRleHQ6ICdWYW5kYWFnJywgdG9kYXlTdGF0dXM6ICdCZWtpamsgZGUgaHVpZGlnZSBtYWFuZCcsXG5cdFx0Y2xlYXJUZXh0OiAnV2lzc2VuJywgY2xlYXJTdGF0dXM6ICdXaXMgZGUgaHVpZGlnZSBkYXR1bScsXG5cdFx0Y2xvc2VUZXh0OiAnU2x1aXRlbicsIGNsb3NlU3RhdHVzOiAnU2x1aXQgem9uZGVyIHZlcmFuZGVyaW5nJyxcblx0XHR5ZWFyU3RhdHVzOiAnQmVraWprIGVlbiBhbmRlciBqYWFyJywgbW9udGhTdGF0dXM6ICdCZWtpamsgZWVuIGFuZGVyZSBtYWFuZCcsXG5cdFx0d2Vla1RleHQ6ICdXaycsIHdlZWtTdGF0dXM6ICdXZWVrIHZhbiBoZXQgamFhcicsXG5cdFx0ZGF5U3RhdHVzOiAnZGQtbW0teXl5eScsIGRlZmF1bHRTdGF0dXM6ICdLaWVzIGVlbiBkYXR1bScsXG5cdFx0aXNSVEw6IGZhbHNlXG5cdH07XG5cdCQuY2FsZW5kYXJzUGlja2VyLnNldERlZmF1bHRzKCQuY2FsZW5kYXJzUGlja2VyLnJlZ2lvbmFsT3B0aW9uc1snbmwnXSk7XG59KShqUXVlcnkpO1xu77u/LyogaHR0cDovL2tlaXRoLXdvb2QubmFtZS9jYWxlbmRhcnMuaHRtbFxuICAgTm9yd2VnaWFuIGxvY2FsaXNhdGlvbiBmb3IgY2FsZW5kYXJzIGRhdGVwaWNrZXIgZm9yIGpRdWVyeS5cbiAgIFdyaXR0ZW4gYnkgTmFpbWRqb24gVGFraGlyb3YgKG5haW1kam9uQGdtYWlsLmNvbSkuICovXG4oZnVuY3Rpb24oJCkge1xuXHQkLmNhbGVuZGFyc1BpY2tlci5yZWdpb25hbE9wdGlvbnNbJ25vJ10gPSB7XG5cdFx0cmVuZGVyZXI6ICQuY2FsZW5kYXJzUGlja2VyLmRlZmF1bHRSZW5kZXJlcixcblx0XHRwcmV2VGV4dDogJyZsYXF1bztGb3JyaWdlJywgIHByZXZTdGF0dXM6ICcnLFxuXHRcdHByZXZKdW1wVGV4dDogJyYjeDNjOyYjeDNjOycsIHByZXZKdW1wU3RhdHVzOiAnJyxcblx0XHRuZXh0VGV4dDogJ05lc3RlJnJhcXVvOycsIG5leHRTdGF0dXM6ICcnLFxuXHRcdG5leHRKdW1wVGV4dDogJyYjeDNlOyYjeDNlOycsIG5leHRKdW1wU3RhdHVzOiAnJyxcblx0XHRjdXJyZW50VGV4dDogJ0kgZGFnJywgY3VycmVudFN0YXR1czogJycsXG5cdFx0dG9kYXlUZXh0OiAnSSBkYWcnLCB0b2RheVN0YXR1czogJycsXG5cdFx0Y2xlYXJUZXh0OiAnVMO4bScsIGNsZWFyU3RhdHVzOiAnJyxcblx0XHRjbG9zZVRleHQ6ICdMdWtrJywgY2xvc2VTdGF0dXM6ICcnLFxuXHRcdHllYXJTdGF0dXM6ICcnLCBtb250aFN0YXR1czogJycsXG5cdFx0d2Vla1RleHQ6ICdVa2UnLCB3ZWVrU3RhdHVzOiAnJyxcblx0XHRkYXlTdGF0dXM6ICdERCwgTSBkJywgZGVmYXVsdFN0YXR1czogJycsXG5cdFx0aXNSVEw6IGZhbHNlXG5cdH07XG5cdCQuY2FsZW5kYXJzUGlja2VyLnNldERlZmF1bHRzKCQuY2FsZW5kYXJzUGlja2VyLnJlZ2lvbmFsT3B0aW9uc1snbm8nXSk7XG59KShqUXVlcnkpO1xu77u/LyogaHR0cDovL2tlaXRoLXdvb2QubmFtZS9jYWxlbmRhcnMuaHRtbFxuICAgUG9saXNoIGxvY2FsaXNhdGlvbiBmb3IgY2FsZW5kYXJzIGRhdGVwaWNrZXIgZm9yIGpRdWVyeS5cbiAgIFdyaXR0ZW4gYnkgSmFjZWsgV3lzb2NraSAoamFjZWsud3lzb2NraUBnbWFpbC5jb20pLiAqL1xuKGZ1bmN0aW9uKCQpIHtcblx0JC5jYWxlbmRhcnNQaWNrZXIucmVnaW9uYWxPcHRpb25zWydwbCddID0ge1xuXHRcdHJlbmRlcmVyOiAkLmNhbGVuZGFyc1BpY2tlci5kZWZhdWx0UmVuZGVyZXIsXG5cdFx0cHJldlRleHQ6ICcmI3gzYztQb3ByemVkbmknLCBwcmV2U3RhdHVzOiAnUG9rYcW8IHBvcHJ6ZWRuaSBtaWVzacSFYycsXG5cdFx0cHJldkp1bXBUZXh0OiAnJiN4M2M7JiN4M2M7JywgcHJldkp1bXBTdGF0dXM6ICcnLFxuXHRcdG5leHRUZXh0OiAnTmFzdMSZcG55JiN4M2U7JywgbmV4dFN0YXR1czogJ1Bva2HFvCBuYXN0xJlwbnkgbWllc2nEhWMnLFxuXHRcdG5leHRKdW1wVGV4dDogJyYjeDNlOyYjeDNlOycsIG5leHRKdW1wU3RhdHVzOiAnJyxcblx0XHRjdXJyZW50VGV4dDogJ0R6acWbJywgY3VycmVudFN0YXR1czogJ1Bva2HFvCBha3R1YWxueSBtaWVzacSFYycsXG5cdFx0dG9kYXlUZXh0OiAnRHppxZsnLCB0b2RheVN0YXR1czogJ1Bva2HFvCBha3R1YWxueSBtaWVzacSFYycsXG5cdFx0Y2xlYXJUZXh0OiAnV3ljennFm8SHJywgY2xlYXJTdGF0dXM6ICdXeWN6ecWbxIcgb2JlY27EhSBkYXTEmScsXG5cdFx0Y2xvc2VUZXh0OiAnWmFta25paicsIGNsb3NlU3RhdHVzOiAnWmFta25paiBiZXogemFwaXN5d2FuaWEnLFxuXHRcdHllYXJTdGF0dXM6ICdQb2thxbwgaW5ueSByb2snLCBtb250aFN0YXR1czogJ1Bva2HFvCBpbm55IG1pZXNpxIVjJyxcblx0XHR3ZWVrVGV4dDogJ1R5ZHonLCB3ZWVrU3RhdHVzOiAnVHlkemllxYQgcm9rdScsXG5cdFx0ZGF5U3RhdHVzOiAnXFwnV3liaWVyelxcJyBERCwgTSBkJywgZGVmYXVsdFN0YXR1czogJ1d5YmllcnogZGF0xJknLFxuXHRcdGlzUlRMOiBmYWxzZVxuXHR9O1xuXHQkLmNhbGVuZGFyc1BpY2tlci5zZXREZWZhdWx0cygkLmNhbGVuZGFyc1BpY2tlci5yZWdpb25hbE9wdGlvbnNbJ3BsJ10pO1xufSkoalF1ZXJ5KTtcbu+7vy8qIGh0dHA6Ly9rZWl0aC13b29kLm5hbWUvY2FsZW5kYXJzLmh0bWxcbiAgIEJyYXppbGlhbiBQb3J0dWd1ZXNlIGxvY2FsaXNhdGlvbiBmb3IgY2FsZW5kYXJzIGRhdGVwaWNrZXIgZm9yIGpRdWVyeS5cbiAgIFdyaXR0ZW4gYnkgTGVvbmlsZG8gQ29zdGEgU2lsdmEgKGxlb2NzaWx2YUBnbWFpbC5jb20pLiAqL1xuKGZ1bmN0aW9uKCQpIHtcblx0JC5jYWxlbmRhcnNQaWNrZXIucmVnaW9uYWxPcHRpb25zWydwdC1CUiddID0ge1xuXHRcdHJlbmRlcmVyOiAkLmNhbGVuZGFyc1BpY2tlci5kZWZhdWx0UmVuZGVyZXIsXG5cdFx0cHJldlRleHQ6ICcmbHQ7QW50ZXJpb3InLCBwcmV2U3RhdHVzOiAnTW9zdHJhIG8gbcOqcyBhbnRlcmlvcicsIFxuXHRcdHByZXZKdW1wVGV4dDogJyZsdDsmbHQ7JywgcHJldkp1bXBTdGF0dXM6ICdNb3N0cmEgbyBhbm8gYW50ZXJpb3InLCBcblx0XHRuZXh0VGV4dDogJ1Byw7N4aW1vJmd0OycsIG5leHRTdGF0dXM6ICdNb3N0cmEgbyBwcsOzeGltbyBtw6pzJywgXG5cdFx0bmV4dEp1bXBUZXh0OiAnJmd0OyZndDsnLCBuZXh0SnVtcFN0YXR1czogJ01vc3RyYSBvIHByw7N4aW1vIGFubycsXG5cdFx0Y3VycmVudFRleHQ6ICdBdHVhbCcsIGN1cnJlbnRTdGF0dXM6ICdNb3N0cmEgbyBtw6pzIGF0dWFsJyxcblx0XHR0b2RheVRleHQ6ICdIb2plJywgdG9kYXlTdGF0dXM6ICdWYWkgcGFyYSBob2plJywgXG5cdFx0Y2xlYXJUZXh0OiAnTGltcGFyJywgY2xlYXJTdGF0dXM6ICdMaW1wYXIgZGF0YScsXG5cdFx0Y2xvc2VUZXh0OiAnRmVjaGFyJywgY2xvc2VTdGF0dXM6ICdGZWNoYXIgbyBjYWxlbmTDoXJpbycsXG5cdFx0eWVhclN0YXR1czogJ1NlbGVjaW9uYXIgYW5vJywgbW9udGhTdGF0dXM6ICdTZWxlY2lvbmFyIG3DqnMnLFxuXHRcdHdlZWtUZXh0OiAncycsIHdlZWtTdGF0dXM6ICdTZW1hbmEgZG8gYW5vJywgXG5cdFx0ZGF5U3RhdHVzOiAnREQsIGQgXFwnZGVcXCcgTSBcXCdkZVxcJyB5eXl5JywgZGVmYXVsdFN0YXR1czogJ1NlbGVjaW9uZSB1bSBkaWEnLFxuXHRcdGlzUlRMOiBmYWxzZVxuXHR9O1xuXHQkLmNhbGVuZGFyc1BpY2tlci5zZXREZWZhdWx0cygkLmNhbGVuZGFyc1BpY2tlci5yZWdpb25hbE9wdGlvbnNbJ3B0LUJSJ10pO1xufSkoalF1ZXJ5KTtcbu+7vy8qIGh0dHA6Ly9rZWl0aC13b29kLm5hbWUvY2FsZW5kYXJzLmh0bWxcbiAgIFJvbWFuc2ggbG9jYWxpc2F0aW9uIGZvciBjYWxlbmRhcnMgZGF0ZXBpY2tlciBmb3IgalF1ZXJ5LlxuICAgWXZvbm5lIEdpZW5hbCAoeXZvbm5lLmdpZW5hbEBlZHVjYS5jaCkuICovXG4oZnVuY3Rpb24oJCkge1xuXHQkLmNhbGVuZGFyc1BpY2tlci5yZWdpb25hbE9wdGlvbnNbJ3JtJ10gPSB7XG5cdFx0cmVuZGVyZXI6ICQuY2FsZW5kYXJzUGlja2VyLmRlZmF1bHRSZW5kZXJlcixcblx0XHRwcmV2VGV4dDogJyYjeDNjO1N1YW5kYW50JywgcHJldlN0YXR1czogJycsXG5cdFx0cHJldkp1bXBUZXh0OiAnJiN4M2M7JiN4M2M7JywgcHJldkp1bXBTdGF0dXM6ICcnLFxuXHRcdG5leHRUZXh0OiAnUHJlY2VkZW50JiN4M2U7JywgbmV4dFN0YXR1czogJycsXG5cdFx0bmV4dEp1bXBUZXh0OiAnJiN4M2U7JiN4M2U7JywgbmV4dEp1bXBTdGF0dXM6ICcnLFxuXHRcdGN1cnJlbnRUZXh0OiAnQWN0dWFsJywgY3VycmVudFN0YXR1czogJycsXG5cdFx0dG9kYXlUZXh0OiAnQWN0dWFsJywgdG9kYXlTdGF0dXM6ICcnLFxuXHRcdGNsZWFyVGV4dDogJ1gnLCBjbGVhclN0YXR1czogJycsXG5cdFx0Y2xvc2VUZXh0OiAnU2VycmFyJywgY2xvc2VTdGF0dXM6ICcnLFxuXHRcdHllYXJTdGF0dXM6ICcnLCBtb250aFN0YXR1czogJycsXG5cdFx0d2Vla1RleHQ6ICdlbW5hJywgd2Vla1N0YXR1czogJycsXG5cdFx0ZGF5U3RhdHVzOiAnREQgZCBNTScsIGRlZmF1bHRTdGF0dXM6ICcnLFxuXHRcdGlzUlRMOiBmYWxzZVxuXHR9O1xuXHQkLmNhbGVuZGFyc1BpY2tlci5zZXREZWZhdWx0cygkLmNhbGVuZGFyc1BpY2tlci5yZWdpb25hbE9wdGlvbnNbJ3JtJ10pO1xufSkoalF1ZXJ5KTtcbu+7vy8qIGh0dHA6Ly9rZWl0aC13b29kLm5hbWUvY2FsZW5kYXJzLmh0bWxcbiAgIFJvbWFuaWFuIGxvY2FsaXNhdGlvbiBmb3IgY2FsZW5kYXJzIGRhdGVwaWNrZXIgZm9yIGpRdWVyeS5cbiAgIFdyaXR0ZW4gYnkgRWRtb25kIEwuIChsbF9lZG1vbmRAd2FsbGEuY29tKSBhbmQgSW9udXQgRy4gU3RhbiAoaW9udXQuZy5zdGFuQGdtYWlsLmNvbSkuICovXG4oZnVuY3Rpb24oJCkge1xuXHQkLmNhbGVuZGFyc1BpY2tlci5yZWdpb25hbE9wdGlvbnNbJ3JvJ10gPSB7XG5cdFx0cmVuZGVyZXI6ICQuY2FsZW5kYXJzUGlja2VyLmRlZmF1bHRSZW5kZXJlcixcblx0XHRwcmV2VGV4dDogJyZsYXF1bztQcmVjZWRlbnRhJywgcHJldlN0YXR1czogJ0FyYXRhIGx1bmEgcHJlY2VkZW50YScsXG5cdFx0cHJldkp1bXBUZXh0OiAnJmxhcXVvOyZsYXF1bzsnLCBwcmV2SnVtcFN0YXR1czogJycsXG5cdFx0bmV4dFRleHQ6ICdVcm1hdG9hcmUmcmFxdW87JywgbmV4dFN0YXR1czogJ0FyYXRhIGx1bmEgdXJtYXRvYXJlJyxcblx0XHRuZXh0SnVtcFRleHQ6ICcmcmFxdW87JnJhcXVvOycsIG5leHRKdW1wU3RhdHVzOiAnJyxcblx0XHRjdXJyZW50VGV4dDogJ0F6aScsIGN1cnJlbnRTdGF0dXM6ICdBcmF0YSBsdW5hIGN1cmVudGEnLFxuXHRcdHRvZGF5VGV4dDogJ0F6aScsIHRvZGF5U3RhdHVzOiAnQXJhdGEgbHVuYSBjdXJlbnRhJyxcblx0XHRjbGVhclRleHQ6ICdDdXJhdCcsIGNsZWFyU3RhdHVzOiAnU3RlcmdlIGRhdGEgY3VyZW50YScsXG5cdFx0Y2xvc2VUZXh0OiAnw45uY2hpZGUnLCBjbG9zZVN0YXR1czogJ8OObmNoaWRlIGZhcmEgc2NoaW1iYXJlJyxcblx0XHR5ZWFyU3RhdHVzOiAnQXJhdCB1biBhbiBkaWZlcml0JywgbW9udGhTdGF0dXM6ICdBcmF0YSBvIGx1bmEgZGlmZXJpdGEnLFxuXHRcdHdlZWtUZXh0OiAnU8SDcHQnLCB3ZWVrU3RhdHVzOiAnU8SDcHRhbWFuYSBhbnVsdWknLFxuXHRcdGRheVN0YXR1czogJ1NlbGVjdGVhemEgREQsIE0gZCcsIGRlZmF1bHRTdGF0dXM6ICdTZWxlY3RlYXphIG8gZGF0YScsXG5cdFx0aXNSVEw6IGZhbHNlXG5cdH07XG5cdCQuY2FsZW5kYXJzUGlja2VyLnNldERlZmF1bHRzKCQuY2FsZW5kYXJzUGlja2VyLnJlZ2lvbmFsT3B0aW9uc1sncm8nXSk7XG59KShqUXVlcnkpO1xu77u/LyogaHR0cDovL2tlaXRoLXdvb2QubmFtZS9jYWxlbmRhcnMuaHRtbFxuICAgUnVzc2lhbiBsb2NhbGlzYXRpb24gZm9yIGNhbGVuZGFycyBkYXRlcGlja2VyIGZvciBqUXVlcnkuXG4gICBXcml0dGVuIGJ5IEFuZHJldyBTdHJvbW5vdiAoc3Ryb21ub3ZAZ21haWwuY29tKS4gKi9cbihmdW5jdGlvbigkKSB7XG5cdCQuY2FsZW5kYXJzUGlja2VyLnJlZ2lvbmFsT3B0aW9uc1sncnUnXSA9IHtcblx0XHRyZW5kZXJlcjogJC5jYWxlbmRhcnNQaWNrZXIuZGVmYXVsdFJlbmRlcmVyLFxuXHRcdHByZXZUZXh0OiAnJiN4M2M70J/RgNC10LQnLCAgcHJldlN0YXR1czogJycsXG5cdFx0cHJldkp1bXBUZXh0OiAnJiN4M2M7JiN4M2M7JywgcHJldkp1bXBTdGF0dXM6ICcnLFxuXHRcdG5leHRUZXh0OiAn0KHQu9C10LQmI3gzZTsnLCBuZXh0U3RhdHVzOiAnJyxcblx0XHRuZXh0SnVtcFRleHQ6ICcmI3gzZTsmI3gzZTsnLCBuZXh0SnVtcFN0YXR1czogJycsXG5cdFx0Y3VycmVudFRleHQ6ICfQodC10LPQvtC00L3RjycsIGN1cnJlbnRTdGF0dXM6ICcnLFxuXHRcdHRvZGF5VGV4dDogJ9Ch0LXQs9C+0LTQvdGPJywgdG9kYXlTdGF0dXM6ICcnLFxuXHRcdGNsZWFyVGV4dDogJ9Ce0YfQuNGB0YLQuNGC0YwnLCBjbGVhclN0YXR1czogJycsXG5cdFx0Y2xvc2VUZXh0OiAn0JfQsNC60YDRi9GC0YwnLCBjbG9zZVN0YXR1czogJycsXG5cdFx0eWVhclN0YXR1czogJycsIG1vbnRoU3RhdHVzOiAnJyxcblx0XHR3ZWVrVGV4dDogJ9Cd0LUnLCB3ZWVrU3RhdHVzOiAnJyxcblx0XHRkYXlTdGF0dXM6ICdERCwgTSBkJywgZGVmYXVsdFN0YXR1czogJycsXG5cdFx0aXNSVEw6IGZhbHNlXG5cdH07XG5cdCQuY2FsZW5kYXJzUGlja2VyLnNldERlZmF1bHRzKCQuY2FsZW5kYXJzUGlja2VyLnJlZ2lvbmFsT3B0aW9uc1sncnUnXSk7XG59KShqUXVlcnkpO1xu77u/LyogaHR0cDovL2tlaXRoLXdvb2QubmFtZS9jYWxlbmRhcnMuaHRtbFxuICAgU2xvdmFrIGxvY2FsaXNhdGlvbiBmb3IgY2FsZW5kYXJzIGRhdGVwaWNrZXIgZm9yIGpRdWVyeS5cbiAgIFdyaXR0ZW4gYnkgVm9qdGVjaCBSaW5payAodm9qdG9AaG1tLnNrKS4gKi9cbihmdW5jdGlvbigkKSB7XG5cdCQuY2FsZW5kYXJzUGlja2VyLnJlZ2lvbmFsT3B0aW9uc1snc2snXSA9IHtcblx0XHRyZW5kZXJlcjogJC5jYWxlbmRhcnNQaWNrZXIuZGVmYXVsdFJlbmRlcmVyLFxuXHRcdHByZXZUZXh0OiAnJiN4M2M7UHJlZGNow6FkemFqw7pjaScsICBwcmV2U3RhdHVzOiAnJyxcblx0XHRwcmV2SnVtcFRleHQ6ICcmI3gzYzsmI3gzYzsnLCBwcmV2SnVtcFN0YXR1czogJycsXG5cdFx0bmV4dFRleHQ6ICdOYXNsZWR1asO6Y2kmI3gzZTsnLCBuZXh0U3RhdHVzOiAnJyxcblx0XHRuZXh0SnVtcFRleHQ6ICcmI3gzZTsmI3gzZTsnLCBuZXh0SnVtcFN0YXR1czogJycsXG5cdFx0Y3VycmVudFRleHQ6ICdEbmVzJywgY3VycmVudFN0YXR1czogJycsXG5cdFx0dG9kYXlUZXh0OiAnRG5lcycsIHRvZGF5U3RhdHVzOiAnJyxcblx0XHRjbGVhclRleHQ6ICdabWF6YcWlJywgY2xlYXJTdGF0dXM6ICcnLFxuXHRcdGNsb3NlVGV4dDogJ1phdnJpZcWlJywgY2xvc2VTdGF0dXM6ICcnLFxuXHRcdHllYXJTdGF0dXM6ICcnLCBtb250aFN0YXR1czogJycsXG5cdFx0d2Vla1RleHQ6ICdUeScsIHdlZWtTdGF0dXM6ICcnLFxuXHRcdGRheVN0YXR1czogJ0RELiBNIGQnLCBkZWZhdWx0U3RhdHVzOiAnJyxcblx0XHRpc1JUTDogZmFsc2Vcblx0fTtcblx0JC5jYWxlbmRhcnNQaWNrZXIuc2V0RGVmYXVsdHMoJC5jYWxlbmRhcnNQaWNrZXIucmVnaW9uYWxPcHRpb25zWydzayddKTtcbn0pKGpRdWVyeSk7XG7vu78vKiBodHRwOi8va2VpdGgtd29vZC5uYW1lL2NhbGVuZGFycy5odG1sXG4gICBTbG92ZW5pYW4gbG9jYWxpc2F0aW9uIGZvciBjYWxlbmRhcnMgZGF0ZXBpY2tlciBmb3IgalF1ZXJ5LlxuICAgV3JpdHRlbiBieSBKYWthIEphbmNhciAoamFrYUBrdWJqZS5vcmcpLiAqL1xuKGZ1bmN0aW9uKCQpIHtcblx0JC5jYWxlbmRhcnNQaWNrZXIucmVnaW9uYWxPcHRpb25zWydzbCddID0ge1xuXHRcdHJlbmRlcmVyOiAkLmNhbGVuZGFyc1BpY2tlci5kZWZhdWx0UmVuZGVyZXIsXG5cdFx0cHJldlRleHQ6ICcmbHQ7UHJlaiYjeDE2MTtuamknLCBwcmV2U3RhdHVzOiAnUHJpa2EmI3gxN0U7aSBwcmVqJiN4MTYxO25qaSBtZXNlYycsXG5cdFx0cHJldkp1bXBUZXh0OiAnJiN4M2M7JiN4M2M7JywgcHJldkp1bXBTdGF0dXM6ICcnLFxuXHRcdG5leHRUZXh0OiAnTmFzbGVkbmppJmd0OycsIG5leHRTdGF0dXM6ICdQcmlrYSYjeDE3RTtpIG5hc2xlZG5qaSBtZXNlYycsXG5cdFx0bmV4dEp1bXBUZXh0OiAnJiN4M2U7JiN4M2U7JywgbmV4dEp1bXBTdGF0dXM6ICcnLFxuXHRcdGN1cnJlbnRUZXh0OiAnVHJlbnV0bmknLCBjdXJyZW50U3RhdHVzOiAnUHJpa2EmI3gxN0U7aSB0cmVudXRuaSBtZXNlYycsXG5cdFx0dG9kYXlUZXh0OiAnVHJlbnV0bmknLCB0b2RheVN0YXR1czogJ1ByaWthJiN4MTdFO2kgdHJlbnV0bmkgbWVzZWMnLFxuXHRcdGNsZWFyVGV4dDogJ0l6YnJpJiN4MTYxO2knLCBjbGVhclN0YXR1czogJ0l6YnJpJiN4MTYxO2kgdHJlbnV0bmkgZGF0dW0nLFxuXHRcdGNsb3NlVGV4dDogJ1phcHJpJywgY2xvc2VTdGF0dXM6ICdaYXByaSBicmV6IHNwcmVtaW5qYW5qYScsXG5cdFx0eWVhclN0YXR1czogJ1ByaWthJiN4MTdFO2kgZHJ1Z28gbGV0bycsIG1vbnRoU3RhdHVzOiAnUHJpa2EmI3gxN0U7aSBkcnVnIG1lc2VjJyxcblx0XHR3ZWVrVGV4dDogJ1RlZGVuJywgd2Vla1N0YXR1czogJ1RlZGVuIHYgbGV0dScsXG5cdFx0ZGF5U3RhdHVzOiAnSXpiZXJpIERELCBkIE1NIHl5JywgZGVmYXVsdFN0YXR1czogJ0l6YmlyYSBkYXR1bWEnLFxuXHRcdGlzUlRMOiBmYWxzZVxuXHR9O1xuXHQkLmNhbGVuZGFyc1BpY2tlci5zZXREZWZhdWx0cygkLmNhbGVuZGFyc1BpY2tlci5yZWdpb25hbE9wdGlvbnNbJ3NsJ10pO1xufSkoalF1ZXJ5KTtcbu+7vy8qIGh0dHA6Ly9rZWl0aC13b29kLm5hbWUvY2FsZW5kYXJzLmh0bWxcbiAgIEFsYmFuaWFuIGxvY2FsaXNhdGlvbiBmb3IgY2FsZW5kYXJzIGRhdGVwaWNrZXIgZm9yIGpRdWVyeS5cbiAgIFdyaXR0ZW4gYnkgRmxha3JvbiBCeXR5cWkgKGZsYWtyb25AZ21haWwuY29tKS4gKi9cbihmdW5jdGlvbigkKSB7XG5cdCQuY2FsZW5kYXJzUGlja2VyLnJlZ2lvbmFsT3B0aW9uc1snc3EnXSA9IHtcblx0XHRyZW5kZXJlcjogJC5jYWxlbmRhcnNQaWNrZXIuZGVmYXVsdFJlbmRlcmVyLFxuXHRcdHByZXZUZXh0OiAnJiN4M2M7bWJyYXBhJywgcHJldlN0YXR1czogJ3RyZWdvIG11YWppbiBlIGZ1bmRpdCcsXG5cdFx0cHJldkp1bXBUZXh0OiAnJiN4M2M7JiN4M2M7JywgcHJldkp1bXBTdGF0dXM6ICcnLFxuXHRcdG5leHRUZXh0OiAnUMOrcnBhcmEmI3gzZTsnLCBuZXh0U3RhdHVzOiAndHJlZ28gbXVhamluIHRqZXTDq3InLFxuXHRcdG5leHRKdW1wVGV4dDogJyYjeDNlOyYjeDNlOycsIG5leHRKdW1wU3RhdHVzOiAnJyxcblx0XHRjdXJyZW50VGV4dDogJ3NvdCcsIGN1cnJlbnRTdGF0dXM6ICcnLFxuXHRcdHRvZGF5VGV4dDogJ3NvdCcsIHRvZGF5U3RhdHVzOiAnJyxcblx0XHRjbGVhclRleHQ6ICdmc2hpamUnLCBjbGVhclN0YXR1czogJ2ZzaGlqZSBkYXTDq24gYWt0dWFsZScsXG5cdFx0Y2xvc2VUZXh0OiAnbWJ5bGxlJywgY2xvc2VTdGF0dXM6ICdtYnlsbGUgcGEgbmRyeXNoaW1lJyxcblx0XHR5ZWFyU3RhdHVzOiAndHJlZ28gdGpldMOrciB2aXQnLCBtb250aFN0YXR1czogJ3RyZWdvIG11YWppbiB0amV0w6tyJyxcblx0XHR3ZWVrVGV4dDogJ0phJywgd2Vla1N0YXR1czogJ0phdmEgZSBtdWFqaXQnLFxuXHRcdGRheVN0YXR1czogJ1xcJ1pnamVkaFxcJyBELCBNIGQnLCBkZWZhdWx0U3RhdHVzOiAnWmdqZWRoZSBuasOrIGRhdMOrJyxcblx0XHRpc1JUTDogZmFsc2Vcblx0fTtcblx0JC5jYWxlbmRhcnNQaWNrZXIuc2V0RGVmYXVsdHMoJC5jYWxlbmRhcnNQaWNrZXIucmVnaW9uYWxPcHRpb25zWydzcSddKTtcbn0pKGpRdWVyeSk7XG7vu78vKiBodHRwOi8va2VpdGgtd29vZC5uYW1lL2NhbGVuZGFycy5odG1sXG4gICBTZXJiaWFuIGxvY2FsaXNhdGlvbiBmb3IgY2FsZW5kYXJzIGRhdGVwaWNrZXIgZm9yIGpRdWVyeS5cbiAgIFdyaXR0ZW4gYnkgRGVqYW4gRGltacSHLiAqL1xuKGZ1bmN0aW9uKCQpIHtcblx0JC5jYWxlbmRhcnNQaWNrZXIucmVnaW9uYWxPcHRpb25zWydzci1TUiddID0ge1xuXHRcdHJlbmRlcmVyOiAkLmNhbGVuZGFyc1BpY2tlci5kZWZhdWx0UmVuZGVyZXIsXG5cdFx0cHJldlRleHQ6ICcmI3gzYzsnLCBwcmV2U3RhdHVzOiAnUHJpa2HFvmkgcHJlZGhvZG5pIG1lc2VjJyxcblx0XHRwcmV2SnVtcFRleHQ6ICcmI3gzYzsmI3gzYzsnLCBwcmV2SnVtcFN0YXR1czogJ1ByaWthxb5pIHByZWRob2RudSBnb2RpbnUnLFxuXHRcdG5leHRUZXh0OiAnJiN4M2U7JywgbmV4dFN0YXR1czogJ1ByaWthxb5pIHNsZWRlxIdpIG1lc2VjJyxcblx0XHRuZXh0SnVtcFRleHQ6ICcmI3gzZTsmI3gzZTsnLCBuZXh0SnVtcFN0YXR1czogJ1ByaWthxb5pIHNsZWRlxId1IGdvZGludScsXG5cdFx0Y3VycmVudFRleHQ6ICdEYW5hcycsIGN1cnJlbnRTdGF0dXM6ICdUZWt1xIdpIG1lc2VjJyxcblx0XHR0b2RheVRleHQ6ICdEYW5hcycsIHRvZGF5U3RhdHVzOiAnVGVrdcSHaSBtZXNlYycsXG5cdFx0Y2xlYXJUZXh0OiAnT2JyacWhaScsIGNsZWFyU3RhdHVzOiAnT2JyacWhaSB0cmVudXRuaSBkYXR1bScsXG5cdFx0Y2xvc2VUZXh0OiAnWmF0dm9yaScsIGNsb3NlU3RhdHVzOiAnWmF0dm9yaSBrYWxlbmRhcicsXG5cdFx0eWVhclN0YXR1czogJ1ByaWthxb5pIGdvZGluZScsIG1vbnRoU3RhdHVzOiAnUHJpa2HFvmkgbWVzZWNlJyxcblx0XHR3ZWVrVGV4dDogJ1NlZCcsIHdlZWtTdGF0dXM6ICdTZWRtaWNhJyxcblx0XHRkYXlTdGF0dXM6ICdcXCdEYXR1bVxcJyBERCwgTSBkJywgZGVmYXVsdFN0YXR1czogJ09kYWJlcmkgZGF0dW0nLFxuXHRcdGlzUlRMOiBmYWxzZVxuXHR9O1xuXHQkLmNhbGVuZGFyc1BpY2tlci5zZXREZWZhdWx0cygkLmNhbGVuZGFyc1BpY2tlci5yZWdpb25hbE9wdGlvbnNbJ3NyLVNSJ10pO1xufSkoalF1ZXJ5KTtcbu+7vy8qIGh0dHA6Ly9rZWl0aC13b29kLm5hbWUvY2FsZW5kYXJzLmh0bWxcbiAgIFNlcmJpYW4gbG9jYWxpc2F0aW9uIGZvciBjYWxlbmRhcnMgZGF0ZXBpY2tlciBmb3IgalF1ZXJ5LlxuICAgV3JpdHRlbiBieSBEZWphbiBEaW1pxIcuICovXG4oZnVuY3Rpb24oJCkge1xuXHQkLmNhbGVuZGFyc1BpY2tlci5yZWdpb25hbE9wdGlvbnNbJ3NyJ10gPSB7XG5cdFx0cmVuZGVyZXI6ICQuY2FsZW5kYXJzUGlja2VyLmRlZmF1bHRSZW5kZXJlcixcblx0XHRwcmV2VGV4dDogJyYjeDNjOycsIHByZXZTdGF0dXM6ICfQn9GA0LjQutCw0LbQuCDQv9GA0LXQtNGF0L7QtNC90Lgg0LzQtdGB0LXRhicsXG5cdFx0cHJldkp1bXBUZXh0OiAnJiN4M2M7JiN4M2M7JywgcHJldkp1bXBTdGF0dXM6ICfQn9GA0LjQutCw0LbQuCDQv9GA0LXQtNGF0L7QtNC90YMg0LPQvtC00LjQvdGDJyxcblx0XHRuZXh0VGV4dDogJyYjeDNlOycsIG5leHRTdGF0dXM6ICfQn9GA0LjQutCw0LbQuCDRgdC70LXRhtC10ZvQuCDQvNC10YHQtdGGJyxcblx0XHRuZXh0SnVtcFRleHQ6ICcmI3gzZTsmI3gzZTsnLCBuZXh0SnVtcFN0YXR1czogJ9Cf0YDQuNC60LDQttC4INGB0LvQtdC00LXRm9GDINCz0L7QtNC40L3RgycsXG5cdFx0Y3VycmVudFRleHQ6ICfQlNCw0L3QsNGBJywgY3VycmVudFN0YXR1czogJ9Ci0LXQutGD0ZvQuCDQvNC10YHQtdGGJyxcblx0XHR0b2RheVRleHQ6ICfQlNCw0L3QsNGBJywgdG9kYXlTdGF0dXM6ICfQotC10LrRg9Gb0Lgg0LzQtdGB0LXRhicsXG5cdFx0Y2xlYXJUZXh0OiAn0J7QsdGA0LjRiNC4JywgY2xlYXJTdGF0dXM6ICfQntCx0YDQuNGI0Lgg0YLRgNC10L3Rg9GC0L3QuCDQtNCw0YLRg9C8Jyxcblx0XHRjbG9zZVRleHQ6ICfQl9Cw0YLQstC+0YDQuCcsIGNsb3NlU3RhdHVzOiAn0JfQsNGC0LLQvtGA0Lgg0LrQsNC70LXQvdC00LDRgCcsXG5cdFx0eWVhclN0YXR1czogJ9Cf0YDQuNC60LDQttC4INCz0L7QtNC40L3QtScsIG1vbnRoU3RhdHVzOiAn0J/RgNC40LrQsNC20Lgg0LzQtdGB0LXRhtC1Jyxcblx0XHR3ZWVrVGV4dDogJ9Ch0LXQtCcsIHdlZWtTdGF0dXM6ICfQodC10LTQvNC40YbQsCcsXG5cdFx0ZGF5U3RhdHVzOiAnXFwn0JTQsNGC0YPQvFxcJyBERCBkIE1NJywgZGVmYXVsdFN0YXR1czogJ9Ce0LTQsNCx0LXRgNC4INC00LDRgtGD0LwnLFxuXHRcdGlzUlRMOiBmYWxzZVxuXHR9O1xuXHQkLmNhbGVuZGFyc1BpY2tlci5zZXREZWZhdWx0cygkLmNhbGVuZGFyc1BpY2tlci5yZWdpb25hbE9wdGlvbnNbJ3NyJ10pO1xufSkoalF1ZXJ5KTtcbu+7vy8qIGh0dHA6Ly9rZWl0aC13b29kLm5hbWUvY2FsZW5kYXJzLmh0bWxcbiAgIFN3ZWRpc2ggbG9jYWxpc2F0aW9uIGZvciBjYWxlbmRhcnMgZGF0ZXBpY2tlciBmb3IgalF1ZXJ5LlxuICAgV3JpdHRlbiBieSBBbmRlcnMgRWtkYWhsICggYW5kZXJzQG5vbWFkaXouc2UpLiAqL1xuKGZ1bmN0aW9uKCQpIHtcblx0JC5jYWxlbmRhcnNQaWNrZXIucmVnaW9uYWxPcHRpb25zWydzdiddID0ge1xuXHRcdHJlbmRlcmVyOiAkLmNhbGVuZGFyc1BpY2tlci5kZWZhdWx0UmVuZGVyZXIsXG4gICAgICAgIHByZXZUZXh0OiAnJmxhcXVvO0bDtnJyYScsICBwcmV2U3RhdHVzOiAnJyxcblx0XHRwcmV2SnVtcFRleHQ6ICcmI3gzYzsmI3gzYzsnLCBwcmV2SnVtcFN0YXR1czogJycsXG5cdFx0bmV4dFRleHQ6ICdOw6RzdGEmcmFxdW87JywgbmV4dFN0YXR1czogJycsXG5cdFx0bmV4dEp1bXBUZXh0OiAnJiN4M2U7JiN4M2U7JywgbmV4dEp1bXBTdGF0dXM6ICcnLFxuXHRcdGN1cnJlbnRUZXh0OiAnSWRhZycsIGN1cnJlbnRTdGF0dXM6ICcnLFxuXHRcdHRvZGF5VGV4dDogJ0lkYWcnLCB0b2RheVN0YXR1czogJycsXG5cdFx0Y2xlYXJUZXh0OiAnUmVuc2EnLCBjbGVhclN0YXR1czogJycsXG5cdFx0Y2xvc2VUZXh0OiAnU3TDpG5nJywgY2xvc2VTdGF0dXM6ICcnLFxuXHRcdHllYXJTdGF0dXM6ICcnLCBtb250aFN0YXR1czogJycsXG5cdFx0d2Vla1RleHQ6ICdWZScsIHdlZWtTdGF0dXM6ICcnLFxuXHRcdGRheVN0YXR1czogJ0RELCBNIGQnLCBkZWZhdWx0U3RhdHVzOiAnJyxcblx0XHRpc1JUTDogZmFsc2Vcblx0fTtcblx0JC5jYWxlbmRhcnNQaWNrZXIuc2V0RGVmYXVsdHMoJC5jYWxlbmRhcnNQaWNrZXIucmVnaW9uYWxPcHRpb25zWydzdiddKTtcbn0pKGpRdWVyeSk7XG7vu78vKiBodHRwOi8va2VpdGgtd29vZC5uYW1lL2NhbGVuZGFycy5odG1sXG4gICBUYW1pbCAoVVRGLTgpIGxvY2FsaXNhdGlvbiBmb3IgY2FsZW5kYXJzIGRhdGVwaWNrZXIgZm9yIGpRdWVyeS5cbiAgIFdyaXR0ZW4gYnkgUyBBIFN1cmVzaGt1bWFyIChzYXNrdW1hckBsaXZlLmNvbSkuICovXG4oZnVuY3Rpb24oJCkge1xuXHQkLmNhbGVuZGFyc1BpY2tlci5yZWdpb25hbE9wdGlvbnNbJ3RhJ10gPSB7XG5cdFx0cmVuZGVyZXI6ICQuY2FsZW5kYXJzUGlja2VyLmRlZmF1bHRSZW5kZXJlcixcblx0XHRwcmV2VGV4dDogJ+CuruCvgeCuqeCvjeCuqeCviOCur+CupOCvgScsICBwcmV2U3RhdHVzOiAnJyxcblx0XHRwcmV2SnVtcFRleHQ6ICcmI3gzYzsmI3gzYzsnLCBwcmV2SnVtcFN0YXR1czogJycsXG5cdFx0bmV4dFRleHQ6ICfgroXgrp/gr4HgrqTgr43grqTgrqTgr4EnLCBuZXh0U3RhdHVzOiAnJyxcblx0XHRuZXh0SnVtcFRleHQ6ICcmI3gzZTsmI3gzZTsnLCBuZXh0SnVtcFN0YXR1czogJycsXG5cdFx0Y3VycmVudFRleHQ6ICfgrofgrqngr43grrHgr4EnLCBjdXJyZW50U3RhdHVzOiAnJyxcblx0XHR0b2RheVRleHQ6ICfgrofgrqngr43grrHgr4EnLCB0b2RheVN0YXR1czogJycsXG5cdFx0Y2xlYXJUZXh0OiAn4K6F4K604K6/JywgY2xlYXJTdGF0dXM6ICcnLFxuXHRcdGNsb3NlVGV4dDogJ+CuruCvguCun+CvgScsIGNsb3NlU3RhdHVzOiAnJyxcblx0XHR5ZWFyU3RhdHVzOiAnJywgbW9udGhTdGF0dXM6ICcnLFxuXHRcdHdlZWtUZXh0OiAnV2snLCB3ZWVrU3RhdHVzOiAnJyxcblx0XHRkYXlTdGF0dXM6ICdELCBNIGQnLCBkZWZhdWx0U3RhdHVzOiAnJyxcblx0XHRpc1JUTDogZmFsc2Vcblx0fTtcblx0JC5jYWxlbmRhcnNQaWNrZXIuc2V0RGVmYXVsdHMoJC5jYWxlbmRhcnNQaWNrZXIucmVnaW9uYWxPcHRpb25zWyd0YSddKTtcbn0pKGpRdWVyeSk7XG7vu78vKiBodHRwOi8va2VpdGgtd29vZC5uYW1lL2NhbGVuZGFycy5odG1sXG4gICBUaGFpIGxvY2FsaXNhdGlvbiBmb3IgY2FsZW5kYXJzIGRhdGVwaWNrZXIgZm9yIGpRdWVyeS5cbiAgIFdyaXR0ZW4gYnkgcGlwbyAocGlwb0BzaXhoZWFkLmNvbSkuICovXG4oZnVuY3Rpb24oJCkge1xuXHQkLmNhbGVuZGFyc1BpY2tlci5yZWdpb25hbE9wdGlvbnNbJ3RoJ10gPSB7XG5cdFx0cmVuZGVyZXI6ICQuY2FsZW5kYXJzUGlja2VyLmRlZmF1bHRSZW5kZXJlcixcblx0XHRwcmV2VGV4dDogJyZsYXF1bzsmbmJzcDvguKLguYnguK3guJknLCBwcmV2U3RhdHVzOiAnJyxcblx0XHRwcmV2SnVtcFRleHQ6ICcmI3gzYzsmI3gzYzsnLCBwcmV2SnVtcFN0YXR1czogJycsXG5cdFx0bmV4dFRleHQ6ICfguJbguLHguJTguYTguJsmbmJzcDsmcmFxdW87JywgbmV4dFN0YXR1czogJycsXG5cdFx0bmV4dEp1bXBUZXh0OiAnJiN4M2U7JiN4M2U7JywgbmV4dEp1bXBTdGF0dXM6ICcnLFxuXHRcdGN1cnJlbnRUZXh0OiAn4Lin4Lix4LiZ4LiZ4Li14LmJJywgY3VycmVudFN0YXR1czogJycsXG5cdFx0dG9kYXlUZXh0OiAn4Lin4Lix4LiZ4LiZ4Li14LmJJywgdG9kYXlTdGF0dXM6ICcnLFxuXHRcdGNsZWFyVGV4dDogJ+C4peC4micsIGNsZWFyU3RhdHVzOiAnJyxcblx0XHRjbG9zZVRleHQ6ICfguJvguLTguJQnLCBjbG9zZVN0YXR1czogJycsXG5cdFx0eWVhclN0YXR1czogJycsIG1vbnRoU3RhdHVzOiAnJyxcblx0XHR3ZWVrVGV4dDogJ1drJywgd2Vla1N0YXR1czogJycsXG5cdFx0ZGF5U3RhdHVzOiAnREQsIE0gZCcsIGRlZmF1bHRTdGF0dXM6ICcnLFxuXHRcdGlzUlRMOiBmYWxzZVxuXHR9O1xuXHQkLmNhbGVuZGFyc1BpY2tlci5zZXREZWZhdWx0cygkLmNhbGVuZGFyc1BpY2tlci5yZWdpb25hbE9wdGlvbnNbJ3RoJ10pO1xufSkoalF1ZXJ5KTtcbu+7vy8qIGh0dHA6Ly9rZWl0aC13b29kLm5hbWUvY2FsZW5kYXJzLmh0bWxcbiAgIFR1cmtpc2ggbG9jYWxpc2F0aW9uIGZvciBjYWxlbmRhcnMgZGF0ZXBpY2tlciBmb3IgalF1ZXJ5LlxuICAgV3JpdHRlbiBieSBJenpldCBFbXJlIEVya2FuIChrYXJhQGthcmFsYW1hbGFyLm5ldCkuICovXG4oZnVuY3Rpb24oJCkge1xuXHQkLmNhbGVuZGFyc1BpY2tlci5yZWdpb25hbE9wdGlvbnNbJ3RyJ10gPSB7XG5cdFx0cmVuZGVyZXI6ICQuY2FsZW5kYXJzUGlja2VyLmRlZmF1bHRSZW5kZXJlcixcblx0XHRwcmV2VGV4dDogJyYjeDNjO2dlcmknLCBwcmV2U3RhdHVzOiAnw7ZuY2VraSBhecSxIGfDtnN0ZXInLFxuXHRcdHByZXZKdW1wVGV4dDogJyYjeDNjOyYjeDNjOycsIHByZXZKdW1wU3RhdHVzOiAnJyxcblx0XHRuZXh0VGV4dDogJ2lsZXJpJiN4M2UnLCBuZXh0U3RhdHVzOiAnc29ucmFraSBhecSxIGfDtnN0ZXInLFxuXHRcdG5leHRKdW1wVGV4dDogJyYjeDNlOyYjeDNlOycsIG5leHRKdW1wU3RhdHVzOiAnJyxcblx0XHRjdXJyZW50VGV4dDogJ2J1Z8O8bicsIGN1cnJlbnRTdGF0dXM6ICcnLFxuXHRcdHRvZGF5VGV4dDogJ2J1Z8O8bicsIHRvZGF5U3RhdHVzOiAnJyxcblx0XHRjbGVhclRleHQ6ICd0ZW1pemxlJywgY2xlYXJTdGF0dXM6ICdnZcOnZXJsaSB0YXJpaGkgdGVtaXpsZXInLFxuXHRcdGNsb3NlVGV4dDogJ2thcGF0JywgY2xvc2VTdGF0dXM6ICdzYWRlY2UgZ8O2c3RlcmdleWkga2FwYXQnLFxuXHRcdHllYXJTdGF0dXM6ICdiYcWfa2EgecSxbCcsIG1vbnRoU3RhdHVzOiAnYmHFn2thIGF5Jyxcblx0XHR3ZWVrVGV4dDogJ0hmJywgd2Vla1N0YXR1czogJ0F5xLFuIGhhZnRhbGFyxLEnLFxuXHRcdGRheVN0YXR1czogJ0QsIE0gZCBzZcOnaW5peicsIGRlZmF1bHRTdGF0dXM6ICdCaXIgdGFyaWggc2XDp2luaXonLFxuXHRcdGlzUlRMOiBmYWxzZVxuXHR9O1xuXHQkLmNhbGVuZGFyc1BpY2tlci5zZXREZWZhdWx0cygkLmNhbGVuZGFyc1BpY2tlci5yZWdpb25hbE9wdGlvbnNbJ3RyJ10pO1xufSkoalF1ZXJ5KTtcbu+7vy8qIGh0dHA6Ly9rZWl0aC13b29kLm5hbWUvY2FsZW5kYXJzLmh0bWxcbiAgIFRhdGFyIGxvY2FsaXNhdGlvbiBmb3IgY2FsZW5kYXJzIGRhdGVwaWNrZXIgZm9yIGpRdWVyeS5cbiAgIFdyaXR0ZW4gYnkgSXJlayBLaGF6aWV2IChraGF6aXJla0BnbWFpbC5jb20pLiAqL1xuKGZ1bmN0aW9uKCQpIHtcblx0JC5jYWxlbmRhcnNQaWNrZXIucmVnaW9uYWxPcHRpb25zWyd0dCddID0ge1xuXHRcdHJlbmRlcmVyOiAkLmNhbGVuZGFyc1BpY2tlci5kZWZhdWx0UmVuZGVyZXIsXG5cdFx0cHJldlRleHQ6ICfQkNC70LTQsNCz0YsnLCAgcHJldlN0YXR1czogJ9CQ0LvQtNCw0LPRiyDQsNC50L3RiyDQutKv0YDRgdOZ0YLSrycsXG5cdFx0cHJldkp1bXBUZXh0OiAnJmx0OyZsdDsnLCBwcmV2SnVtcFN0YXR1czogJ9CQ0LvQtNCw0LPRiyDQtdC70L3RiyDQutKv0YDRgdOZ0YLSrycsXG5cdFx0bmV4dFRleHQ6ICfQmtC40LvTmdGB0LUnLCBuZXh0U3RhdHVzOiAn0JrQuNC705nRgdC1INCw0LnQvdGLINC60q/RgNGB05nRgtKvJyxcblx0XHRuZXh0SnVtcFRleHQ6ICcmZ3Q7Jmd0OycsIG5leHRKdW1wU3RhdHVzOiAn0JrQuNC705nRgdC1INC10LvQvdGLINC60q/RgNGB05nRgtKvJyxcblx0XHRjdXJyZW50VGV4dDogJ9Cl05nQt9C10YAnLCBjdXJyZW50U3RhdHVzOiAn0KXTmdC30LXRgNCz0LUg0LDQudC90Ysg0LrSr9GA0YHTmdGC0q8nLFxuXHRcdHRvZGF5VGV4dDogJ9CR0q/Qs9C10L0nLCB0b2RheVN0YXR1czogJ9CR0q/Qs9C10L3Qs9C1INCw0LnQvdGLINC60q/RgNGB05nRgtKvJyxcblx0XHRjbGVhclRleHQ6ICfQp9C40YHRgtCw0YDRgtGDJywgY2xlYXJTdGF0dXM6ICfQkdCw0YDQu9GL0Log0LrTqdC90L3TmdGA0L3QtSDRh9C40YHRgtCw0YDRgtGDJyxcblx0XHRjbG9zZVRleHQ6ICfQr9Cx0LDRgNCz0LAnLCBjbG9zZVN0YXR1czogJ9Ca06nQvSDRgdCw0LnQu9Cw0YPQvdGLINGP0LHQsNGA0LPQsCcsXG5cdFx0eWVhclN0YXR1czogJ9CV0LvQvdGLINC60LXRgNGC0LXQs9C10LcnLCBtb250aFN0YXR1czogJ9CQ0LnQvdGLINC60LXRgNGC0LXQs9C10LcnLFxuXHRcdHdlZWtUZXh0OiAn0JDRgtC90LAnLCB3ZWVrU3RhdHVzOiAn0JXQu9C00LAg0LDRgtC90LAg0YHQsNC90YsnLFxuXHRcdGRheVN0YXR1czogJ0RELCBNIGQnLCBkZWZhdWx0U3RhdHVzOiAn0JrTqdC90L3QtSDRgdCw0LnQu9Cw0LPRi9C3Jyxcblx0XHRpc1JUTDogZmFsc2Vcblx0fTtcblx0JC5jYWxlbmRhcnNQaWNrZXIuc2V0RGVmYXVsdHMoJC5jYWxlbmRhcnNQaWNrZXIucmVnaW9uYWxPcHRpb25zWyd0dCddKTtcbn0pKGpRdWVyeSk7XG7vu78vKiBodHRwOi8va2VpdGgtd29vZC5uYW1lL2NhbGVuZGFycy5odG1sXG4gICBVa3JhaW5pYW4gbG9jYWxpc2F0aW9uIGZvciBjYWxlbmRhcnMgZGF0ZXBpY2tlciBmb3IgalF1ZXJ5LlxuICAgV3JpdHRlbiBieSBNYXhpbSBEcm9nb2JpdHNraXkgKG1heGRhb0BnbWFpbC5jb20pLiAqL1xuKGZ1bmN0aW9uKCQpIHtcblx0JC5jYWxlbmRhcnNQaWNrZXIucmVnaW9uYWxPcHRpb25zWyd1ayddID0ge1xuXHRcdHJlbmRlcmVyOiAkLmNhbGVuZGFyc1BpY2tlci5kZWZhdWx0UmVuZGVyZXIsXG5cdFx0cHJldlRleHQ6ICcmI3gzYzsnLCAgcHJldlN0YXR1czogJycsXG5cdFx0cHJldkp1bXBUZXh0OiAnJiN4M2M7JiN4M2M7JywgcHJldkp1bXBTdGF0dXM6ICcnLFxuXHRcdG5leHRUZXh0OiAnJiN4M2U7JywgbmV4dFN0YXR1czogJycsXG5cdFx0bmV4dEp1bXBUZXh0OiAnJiN4M2U7JiN4M2U7JywgbmV4dEp1bXBTdGF0dXM6ICcnLFxuXHRcdGN1cnJlbnRUZXh0OiAn0KHRjNC+0LPQvtC00L3RlicsIGN1cnJlbnRTdGF0dXM6ICcnLFxuXHRcdHRvZGF5VGV4dDogJ9Ch0YzQvtCz0L7QtNC90ZYnLCB0b2RheVN0YXR1czogJycsXG5cdFx0Y2xlYXJUZXh0OiAn0J7Rh9C40YHRgtC40YLQuCcsIGNsZWFyU3RhdHVzOiAnJyxcblx0XHRjbG9zZVRleHQ6ICfQl9Cw0LrRgNC40YLQuCcsIGNsb3NlU3RhdHVzOiAnJyxcblx0XHR5ZWFyU3RhdHVzOiAnJywgbW9udGhTdGF0dXM6ICcnLFxuXHRcdHdlZWtUZXh0OiAn0J3QtScsIHdlZWtTdGF0dXM6ICcnLFxuXHRcdGRheVN0YXR1czogJ0RELCBNIGQnLCBkZWZhdWx0U3RhdHVzOiAnJyxcblx0XHRpc1JUTDogZmFsc2Vcblx0fTtcblx0JC5jYWxlbmRhcnNQaWNrZXIuc2V0RGVmYXVsdHMoJC5jYWxlbmRhcnNQaWNrZXIucmVnaW9uYWxPcHRpb25zWyd1ayddKTtcbn0pKGpRdWVyeSk7XG7vu78vKiBodHRwOi8va2VpdGgtd29vZC5uYW1lL2NhbGVuZGFycy5odG1sXG4gICBVcmR1IGxvY2FsaXNhdGlvbiBmb3IgY2FsZW5kYXJzIGRhdGVwaWNrZXIgZm9yIGpRdWVyeS5cbiAgIE1hbnNvb3IgTXVuaWIgLS0gbWFuc29vcm11bmliQGdtYWlsLmNvbSA8aHR0cDovL3d3dy5tYW5zb29yLmNvLm5yL21hbnNvb3IuaHRtbD5cbiAgIFRoYW5rcyB0byBIYWJpYiBBaG1lZCwgT2JhaWRVbGxhaCBBbndhci4gKi9cbihmdW5jdGlvbigkKSB7XG5cdCQuY2FsZW5kYXJzUGlja2VyLnJlZ2lvbmFsT3B0aW9uc1sndXInXSA9IHtcblx0XHRyZW5kZXJlcjogJC5jYWxlbmRhcnNQaWNrZXIuZGVmYXVsdFJlbmRlcmVyLFxuXHRcdHByZXZUZXh0OiAnJiN4M2M72q/YsNi02KrbgScsIHByZXZTdGF0dXM6ICfZhdin2Ycg2q/YsNi02KrbgScsXG5cdFx0cHJldkp1bXBUZXh0OiAnJiN4M2M7JiN4M2M7JywgcHJldkp1bXBTdGF0dXM6ICfYqNix2LMg2q/YsNi02KrbgScsXG5cdFx0bmV4dFRleHQ6ICfYotim2YbYr9uBJiN4M2U7JywgbmV4dFN0YXR1czogJ9mF2KfZhyDYotim2YbYr9uBJyxcblx0XHRuZXh0SnVtcFRleHQ6ICcmI3gzZTsmI3gzZTsnLCBuZXh0SnVtcFN0YXR1czogJ9io2LHYsyDYotim2YbYr9uBJyxcblx0XHRjdXJyZW50VGV4dDogJ9ix2YjYp9q6JywgY3VycmVudFN0YXR1czogJ9mF2KfZhyDYsdmI2KfauicsXG5cdFx0dG9kYXlUZXh0OiAn2KLYrCcsIHRvZGF5U3RhdHVzOiAn2KLYrCcsXG5cdFx0Y2xlYXJUZXh0OiAn2K3YsNmBINiq2KfYsdmK2K4nLCBjbGVhclN0YXR1czogJ9qp2LHbjNq6INit2LDZgSDYqtin2LHbjNiuJyxcblx0XHRjbG9zZVRleHQ6ICfaqdix24zauiDYqNmG2K8nLCBjbG9zZVN0YXR1czogJ9qp24zZhNim25Ig2qnYsdmG25Ig2KjZhtivJyxcblx0XHR5ZWFyU3RhdHVzOiAn2KjYsdizINiq2KjYr9uM2YTbjCcsIG1vbnRoU3RhdHVzOiAn2YXYp9mHINiq2KjYr9uM2YTbjCcsXG5cdFx0d2Vla1RleHQ6ICfbgdmB2KrbgScsIHdlZWtTdGF0dXM6ICfbgdmB2KrbgScsXG5cdFx0ZGF5U3RhdHVzOiAn2KfZhtiq2K7Yp9ioIEQsIE0gZCcsIGRlZmF1bHRTdGF0dXM6ICfaqdix24zauiDZhdmG2KrYrtioINiq2KfYsdmK2K4nLFxuXHRcdGlzUlRMOiB0cnVlXG5cdH07XG5cdCQuY2FsZW5kYXJzUGlja2VyLnNldERlZmF1bHRzKCQuY2FsZW5kYXJzUGlja2VyLnJlZ2lvbmFsT3B0aW9uc1sndXInXSk7XG59KShqUXVlcnkpO1xu77u/LyogaHR0cDovL2tlaXRoLXdvb2QubmFtZS9jYWxlbmRhcnMuaHRtbFxuICAgVmlldG5hbWVzZSBsb2NhbGlzYXRpb24gZm9yIGNhbGVuZGFycyBkYXRlcGlja2VyIGZvciBqUXVlcnkuXG4gICBUcmFuc2xhdGVkIGJ5IExlIFRoYW5oIEh1eSAobHRoYW5oaHV5QGNpdC5jdHUuZWR1LnZuKS4gKi9cbihmdW5jdGlvbigkKSB7XG5cdCQuY2FsZW5kYXJzUGlja2VyLnJlZ2lvbmFsT3B0aW9uc1sndmknXSA9IHtcblx0XHRyZW5kZXJlcjogJC5jYWxlbmRhcnNQaWNrZXIuZGVmYXVsdFJlbmRlcmVyLFxuXHRcdHByZXZUZXh0OiAnJiN4M2M7VHLGsOG7m2MnLCBwcmV2U3RhdHVzOiAnVGjDoW5nIHRyxrDhu5tjJyxcblx0XHRwcmV2SnVtcFRleHQ6ICcmI3gzYzsmI3gzYzsnLCBwcmV2SnVtcFN0YXR1czogJ07Eg20gdHLGsOG7m2MnLFxuXHRcdG5leHRUZXh0OiAnVGnhur9wJiN4M2U7JywgbmV4dFN0YXR1czogJ1Row6FuZyBzYXUnLFxuXHRcdG5leHRKdW1wVGV4dDogJyYjeDNlOyYjeDNlOycsIG5leHRKdW1wU3RhdHVzOiAnTsSDbSBzYXUnLFxuXHRcdGN1cnJlbnRUZXh0OiAnSMO0bSBuYXknLCBjdXJyZW50U3RhdHVzOiAnVGjDoW5nIGhp4buHbiB04bqhaScsXG5cdFx0dG9kYXlUZXh0OiAnSMO0bSBuYXknLCB0b2RheVN0YXR1czogJ1Row6FuZyBoaeG7h24gdOG6oWknLFxuXHRcdGNsZWFyVGV4dDogJ1jDs2EnLCBjbGVhclN0YXR1czogJ1jDs2EgbmfDoHkgaGnhu4duIHThuqFpJyxcblx0XHRjbG9zZVRleHQ6ICfEkMOzbmcnLCBjbG9zZVN0YXR1czogJ8SQw7NuZyB2w6Aga2jDtG5nIGzGsHUgbOG6oWkgdGhheSDEkeG7lWknLFxuXHRcdHllYXJTdGF0dXM6ICdOxINtIGtow6FjJywgbW9udGhTdGF0dXM6ICdUaMOhbmcga2jDoWMnLFxuXHRcdHdlZWtUZXh0OiAnVHUnLCB3ZWVrU3RhdHVzOiAnVHXhuqduIHRyb25nIG7Eg20nLFxuXHRcdGRheVN0YXR1czogJ8SQYW5nIGNo4buNbiBERCwgXFwnbmfDoHlcXCcgZCBNJywgZGVmYXVsdFN0YXR1czogJ0No4buNbiBuZ8OgeScsXG5cdFx0aXNSVEw6IGZhbHNlXG5cdH07XG5cdCQuY2FsZW5kYXJzUGlja2VyLnNldERlZmF1bHRzKCQuY2FsZW5kYXJzUGlja2VyLnJlZ2lvbmFsT3B0aW9uc1sndmknXSk7XG59KShqUXVlcnkpO1xu77u/LyogaHR0cDovL2tlaXRoLXdvb2QubmFtZS9jYWxlbmRhcnMuaHRtbFxuICAgU2ltcGxpZmllZCBDaGluZXNlIGxvY2FsaXNhdGlvbiBmb3IgY2FsZW5kYXJzIGRhdGVwaWNrZXIgZm9yIGpRdWVyeS5cbiAgIFdyaXR0ZW4gYnkgQ2xvdWRyZWFtIChjbG91ZHJlYW1AZ21haWwuY29tKS4gKi9cbihmdW5jdGlvbigkKSB7XG5cdCQuY2FsZW5kYXJzUGlja2VyLnJlZ2lvbmFsT3B0aW9uc1snemgtQ04nXSA9IHtcblx0XHRyZW5kZXJlcjogJC5leHRlbmQoe30sICQuY2FsZW5kYXJzUGlja2VyLmRlZmF1bHRSZW5kZXJlcixcblx0XHRcdHttb250aDogJC5jYWxlbmRhcnNQaWNrZXIuZGVmYXVsdFJlbmRlcmVyLm1vbnRoLlxuXHRcdFx0XHRyZXBsYWNlKC9tb250aEhlYWRlci8sICdtb250aEhlYWRlcjpNTSB5eXl55bm0Jyl9KSxcblx0XHRwcmV2VGV4dDogJyYjeDNjO+S4iuaciCcsIHByZXZTdGF0dXM6ICfmmL7npLrkuIrmnIgnLFxuXHRcdHByZXZKdW1wVGV4dDogJyYjeDNjOyYjeDNjOycsIHByZXZKdW1wU3RhdHVzOiAn5pi+56S65LiK5LiA5bm0Jyxcblx0XHRuZXh0VGV4dDogJ+S4i+aciCYjeDNlOycsIG5leHRTdGF0dXM6ICfmmL7npLrkuIvmnIgnLFxuXHRcdG5leHRKdW1wVGV4dDogJyYjeDNlOyYjeDNlOycsIG5leHRKdW1wU3RhdHVzOiAn5pi+56S65LiL5LiA5bm0Jyxcblx0XHRjdXJyZW50VGV4dDogJ+S7iuWkqScsIGN1cnJlbnRTdGF0dXM6ICfmmL7npLrmnKzmnIgnLFxuXHRcdHRvZGF5VGV4dDogJ+S7iuWkqScsIHRvZGF5U3RhdHVzOiAn5pi+56S65pys5pyIJyxcblx0XHRjbGVhclRleHQ6ICfmuIXpmaQnLCBjbGVhclN0YXR1czogJ+a4hemZpOW3sumAieaXpeacnycsXG5cdFx0Y2xvc2VUZXh0OiAn5YWz6ZetJywgY2xvc2VTdGF0dXM6ICfkuI3mlLnlj5jlvZPliY3pgInmi6knLFxuXHRcdHllYXJTdGF0dXM6ICfpgInmi6nlubTku70nLCBtb250aFN0YXR1czogJ+mAieaLqeaciOS7vScsXG5cdFx0d2Vla1RleHQ6ICflkagnLCB3ZWVrU3RhdHVzOiAn5bm05YaF5ZGo5qyhJyxcblx0XHRkYXlTdGF0dXM6ICfpgInmi6kgbeaciCBk5pelLCBERCcsIGRlZmF1bHRTdGF0dXM6ICfor7fpgInmi6nml6XmnJ8nLFxuXHRcdGlzUlRMOiBmYWxzZVxuXHR9O1xuXHQkLmNhbGVuZGFyc1BpY2tlci5zZXREZWZhdWx0cygkLmNhbGVuZGFyc1BpY2tlci5yZWdpb25hbE9wdGlvbnNbJ3poLUNOJ10pO1xufSkoalF1ZXJ5KTtcbu+7vy8qIGh0dHA6Ly9rZWl0aC13b29kLm5hbWUvY2FsZW5kYXJzLmh0bWxcbiAgIEhvbmcgS29uZyBDaGluZXNlIGxvY2FsaXNhdGlvbiBmb3IgY2FsZW5kYXJzIGRhdGVwaWNrZXIgZm9yIGpRdWVyeS5cbiAgIFdyaXR0ZW4gYnkgU0NDWSAoc2FtdWVsY3ljaGFuQGdtYWlsLmNvbSkuICovXG4oZnVuY3Rpb24oJCkge1xuXHQkLmNhbGVuZGFyc1BpY2tlci5yZWdpb25hbE9wdGlvbnNbJ3poLUhLJ10gPSB7XG5cdFx0cmVuZGVyZXI6ICQuZXh0ZW5kKHt9LCAkLmNhbGVuZGFyc1BpY2tlci5kZWZhdWx0UmVuZGVyZXIsXG5cdFx0XHR7bW9udGg6ICQuY2FsZW5kYXJzUGlja2VyLmRlZmF1bHRSZW5kZXJlci5tb250aC5cblx0XHRcdFx0cmVwbGFjZSgvbW9udGhIZWFkZXIvLCAnbW9udGhIZWFkZXI6eXl5eeW5tCBNTScpfSksXG5cdFx0cHJldlRleHQ6ICcmI3gzYzvkuIrmnIgnLCBwcmV2U3RhdHVzOiAn6aGv56S65LiK5pyIJyxcblx0XHRwcmV2SnVtcFRleHQ6ICcmI3gzYzsmI3gzYzsnLCBwcmV2SnVtcFN0YXR1czogJ+mhr+ekuuS4iuS4gOW5tCcsXG5cdFx0bmV4dFRleHQ6ICfkuIvmnIgmI3gzZTsnLCBuZXh0U3RhdHVzOiAn6aGv56S65LiL5pyIJyxcblx0XHRuZXh0SnVtcFRleHQ6ICcmI3gzZTsmI3gzZTsnLCBuZXh0SnVtcFN0YXR1czogJ+mhr+ekuuS4i+S4gOW5tCcsXG5cdFx0Y3VycmVudFRleHQ6ICfku4rlpKknLCBjdXJyZW50U3RhdHVzOiAn6aGv56S65pys5pyIJyxcblx0XHR0b2RheVRleHQ6ICfku4rlpKknLCB0b2RheVN0YXR1czogJ+mhr+ekuuacrOaciCcsXG5cdFx0Y2xlYXJUZXh0OiAn5riF6ZmkJywgY2xlYXJTdGF0dXM6ICfmuIXpmaTlt7Lpgbjml6XmnJ8nLFxuXHRcdGNsb3NlVGV4dDogJ+mXnOmWiScsIGNsb3NlU3RhdHVzOiAn5LiN5pS56K6K55uu5YmN55qE6YG45pOHJyxcblx0XHR5ZWFyU3RhdHVzOiAn6YG45pOH5bm05Lu9JywgbW9udGhTdGF0dXM6ICfpgbjmk4fmnIjku70nLFxuXHRcdHdlZWtUZXh0OiAn5ZGoJywgd2Vla1N0YXR1czogJ+W5tOWFp+WRqOasoScsXG5cdFx0ZGF5U3RhdHVzOiAn6YG45pOHIG3mnIggZOaXpSwgREQnLCBkZWZhdWx0U3RhdHVzOiAn6KuL6YG45pOH5pel5pyfJyxcblx0XHRpc1JUTDogZmFsc2Vcblx0fTtcblx0JC5jYWxlbmRhcnNQaWNrZXIuc2V0RGVmYXVsdHMoJC5jYWxlbmRhcnNQaWNrZXIucmVnaW9uYWxPcHRpb25zWyd6aC1ISyddKTtcbn0pKGpRdWVyeSk7XG7vu78vKiBodHRwOi8va2VpdGgtd29vZC5uYW1lL2NhbGVuZGFycy5odG1sXG4gICBUcmFkaXRpb25hbCBDaGluZXNlIGxvY2FsaXNhdGlvbiBmb3IgY2FsZW5kYXJzIGRhdGVwaWNrZXIgZm9yIGpRdWVyeS5cbiAgIFdyaXR0ZW4gYnkgUmVzc29sIChyZXNzb2xAZ21haWwuY29tKS4gKi9cbihmdW5jdGlvbigkKSB7XG5cdCQuY2FsZW5kYXJzUGlja2VyLnJlZ2lvbmFsT3B0aW9uc1snemgtVFcnXSA9IHtcblx0XHRyZW5kZXJlcjogJC5leHRlbmQoe30sICQuY2FsZW5kYXJzUGlja2VyLmRlZmF1bHRSZW5kZXJlcixcblx0XHRcdHttb250aDogJC5jYWxlbmRhcnNQaWNrZXIuZGVmYXVsdFJlbmRlcmVyLm1vbnRoLlxuXHRcdFx0XHRyZXBsYWNlKC9tb250aEhlYWRlci8sICdtb250aEhlYWRlcjpNTSB5eXl55bm0Jyl9KSxcblx0XHRwcmV2VGV4dDogJyYjeDNjO+S4iuaciCcsIHByZXZTdGF0dXM6ICfpoa/npLrkuIrmnIgnLFxuXHRcdHByZXZKdW1wVGV4dDogJyYjeDNjOyYjeDNjOycsIHByZXZKdW1wU3RhdHVzOiAn6aGv56S65LiK5LiA5bm0Jyxcblx0XHRuZXh0VGV4dDogJ+S4i+aciCYjeDNlOycsIG5leHRTdGF0dXM6ICfpoa/npLrkuIvmnIgnLFxuXHRcdG5leHRKdW1wVGV4dDogJyYjeDNlOyYjeDNlOycsIG5leHRKdW1wU3RhdHVzOiAn6aGv56S65LiL5LiA5bm0Jyxcblx0XHRjdXJyZW50VGV4dDogJ+S7iuWkqScsIGN1cnJlbnRTdGF0dXM6ICfpoa/npLrmnKzmnIgnLFxuXHRcdHRvZGF5VGV4dDogJ+S7iuWkqScsIHRvZGF5U3RhdHVzOiAn6aGv56S65pys5pyIJyxcblx0XHRjbGVhclRleHQ6ICfmuIXpmaQnLCBjbGVhclN0YXR1czogJ+a4hemZpOW3sumBuOaXpeacnycsXG5cdFx0Y2xvc2VUZXh0OiAn6Zec6ZaJJywgY2xvc2VTdGF0dXM6ICfkuI3mlLnorornm67liY3nmoTpgbjmk4cnLFxuXHRcdHllYXJTdGF0dXM6ICfpgbjmk4flubTku70nLCBtb250aFN0YXR1czogJ+mBuOaTh+aciOS7vScsXG5cdFx0d2Vla1RleHQ6ICflkagnLCB3ZWVrU3RhdHVzOiAn5bm05YWn5ZGo5qyhJyxcblx0XHRkYXlTdGF0dXM6ICfpgbjmk4cgbeaciCBk5pelLCBERCcsIGRlZmF1bHRTdGF0dXM6ICfoq4vpgbjmk4fml6XmnJ8nLFxuXHRcdGlzUlRMOiBmYWxzZVxuXHR9O1xuXHQkLmNhbGVuZGFyc1BpY2tlci5zZXREZWZhdWx0cygkLmNhbGVuZGFyc1BpY2tlci5yZWdpb25hbE9wdGlvbnNbJ3poLVRXJ10pO1xufSkoalF1ZXJ5KTtcbiJdLCJzb3VyY2VSb290IjoiL3NvdXJjZS8ifQ==
diff --git a/src/Orchard.Web/Modules/Orchard.Resources/Scripts/Calendars/jquery.calendars.picker.lang.min.js b/src/Orchard.Web/Modules/Orchard.Resources/Scripts/Calendars/jquery.calendars.picker.lang.min.js
index a635fe202..d3e5a7944 100644
--- a/src/Orchard.Web/Modules/Orchard.Resources/Scripts/Calendars/jquery.calendars.picker.lang.min.js
+++ b/src/Orchard.Web/Modules/Orchard.Resources/Scripts/Calendars/jquery.calendars.picker.lang.min.js
@@ -1,2 +1,2 @@
!function(e){e.calendarsPicker.regionalOptions.af={renderer:e.calendarsPicker.defaultRenderer,prevText:"Vorige",prevStatus:"Vertoon vorige maand",prevJumpText:"<<",prevJumpStatus:"Vertoon vorige jaar",nextText:"Volgende",nextStatus:"Vertoon volgende maand",nextJumpText:">>",nextJumpStatus:"Vertoon volgende jaar",currentText:"Vandag",currentStatus:"Vertoon huidige maand",todayText:"Vandag",todayStatus:"Vertoon huidige maand",clearText:"Vee uit",clearStatus:"Verwyder die huidige datum",closeText:"Klaar",closeStatus:"Sluit sonder verandering",yearStatus:"Vertoon 'n ander jaar",monthStatus:"Vertoon 'n ander maand",weekText:"Wk",weekStatus:"Week van die jaar",dayStatus:"Kies DD, M d",defaultStatus:"Kies 'n datum",isRTL:!1},e.calendarsPicker.setDefaults(e.calendarsPicker.regionalOptions.af)}(jQuery),function(e){e.calendarsPicker.regionalOptions.am={renderer:e.calendarsPicker.defaultRenderer,prevText:"ያለፈ",prevStatus:"ያለፈውን ወር አሳይ",prevJumpText:"<<",prevJumpStatus:"ያለፈውን ዓመት አሳይ",nextText:"ቀጣይ",nextStatus:"ቀጣዩን ወር አሳይ",nextJumpText:">>",nextJumpStatus:"ቀጣዩን ዓመት አሳይ",currentText:"አሁን",currentStatus:"የአሁኑን ወር አሳይ",todayText:"ዛሬ",todayStatus:"የዛሬን ወር አሳይ",clearText:"አጥፋ",clearStatus:"የተመረጠውን ቀን አጥፋ",closeText:"ዝጋ",closeStatus:"የቀን መምረጫውን ዝጋ",yearStatus:"ዓመቱን ቀይር",monthStatus:"ወሩን ቀይር",weekText:"ሳም",weekStatus:"የዓመቱ ሳምንት ",dayStatus:"DD, M d, yyyy ምረጥ",defaultStatus:"ቀን ምረጥ",isRTL:!1},e.calendarsPicker.setDefaults(e.calendarsPicker.regionalOptions.am)}(jQuery),function(e){e.calendarsPicker.regionalOptions["ar-DZ"]={renderer:e.calendarsPicker.defaultRenderer,prevText:"<السابق",prevStatus:"عرض الشهر السابق",prevJumpText:"<<",prevJumpStatus:"",nextText:"التالي>",nextStatus:"عرض الشهر القادم",nextJumpText:">>",nextJumpStatus:"",currentText:"اليوم",currentStatus:"عرض الشهر الحالي",todayText:"اليوم",todayStatus:"عرض الشهر الحالي",clearText:"مسح",clearStatus:"امسح التاريخ الحالي",closeText:"إغلاق",closeStatus:"إغلاق بدون حفظ",yearStatus:"عرض سنة آخرى",monthStatus:"عرض شهر آخر",weekText:"أسبوع",weekStatus:"أسبوع السنة",dayStatus:"اختر D, M d",defaultStatus:"اختر يوم",isRTL:!0},e.calendarsPicker.setDefaults(e.calendarsPicker.regionalOptions["ar-DZ"])}(jQuery),function(e){e.calendarsPicker.regionalOptions["ar-EG"]={renderer:e.calendarsPicker.defaultRenderer,prevText:"<السابق",prevStatus:"عرض الشهر السابق",prevJumpText:"<<",prevJumpStatus:"",nextText:"التالي>",nextStatus:"عرض الشهر القادم",nextJumpText:">>",nextJumpStatus:"",currentText:"اليوم",currentStatus:"عرض الشهر الحالي",todayText:"اليوم",todayStatus:"عرض الشهر الحالي",clearText:"مسح",clearStatus:"امسح التاريخ الحالي",closeText:"إغلاق",closeStatus:"إغلاق بدون حفظ",yearStatus:"عرض سنة آخرى",monthStatus:"عرض شهر آخر",weekText:"أسبوع",weekStatus:"أسبوع السنة",dayStatus:"اختر D, M d",defaultStatus:"اختر يوم",isRTL:!0},e.calendarsPicker.setDefaults(e.calendarsPicker.regionalOptions["ar-EG"])}(jQuery),function(e){e.calendarsPicker.regionalOptions.ar={renderer:e.calendarsPicker.defaultRenderer,prevText:"<السابق",prevStatus:"عرض الشهر السابق",prevJumpText:"<<",prevJumpStatus:"",nextText:"التالي>",nextStatus:"عرض الشهر القادم",nextJumpText:">>",nextJumpStatus:"",currentText:"اليوم",currentStatus:"عرض الشهر الحالي",todayText:"اليوم",todayStatus:"عرض الشهر الحالي",clearText:"مسح",clearStatus:"امسح التاريخ الحالي",closeText:"إغلاق",closeStatus:"إغلاق بدون حفظ",yearStatus:"عرض سنة آخرى",monthStatus:"عرض شهر آخر",weekText:"أسبوع",weekStatus:"أسبوع السنة",dayStatus:"اختر D, M d",defaultStatus:"اختر يوم",isRTL:!0},e.calendarsPicker.setDefaults(e.calendarsPicker.regionalOptions.ar)}(jQuery),function(e){e.calendarsPicker.regionalOptions.az={renderer:e.calendarsPicker.defaultRenderer,prevText:"<Geri",prevStatus:"Əvvəlki ay",prevJumpText:"<<",prevJumpStatus:"Əvvəlki il",nextText:"İrəli>",nextStatus:"Sonrakı ay",nextJumpText:">>",nextJumpStatus:"Sonrakı il",currentText:"Bugün",currentStatus:"İndiki ay",todayText:"Bugün",todayStatus:"İndiki ay",clearText:"Təmizlə",clearStatus:"Tarixi sil",closeText:"Bağla",closeStatus:"Təqvimi bağla",yearStatus:"Başqa il",monthStatus:"Başqa ay",weekText:"Hf",weekStatus:"Həftələr",dayStatus:"D, M d seçin",defaultStatus:"Bir tarix seçin",isRTL:!1},e.calendarsPicker.setDefaults(e.calendarsPicker.regionalOptions.az)}(jQuery),function(e){e.calendarsPicker.regionalOptions.bg={renderer:e.calendarsPicker.defaultRenderer,prevText:"<назад",prevStatus:"покажи последния месец",prevJumpText:"<<",prevJumpStatus:"",nextText:"напред>",nextStatus:"покажи следващия месец",nextJumpText:">>",nextJumpStatus:"",currentText:"днес",currentStatus:"",todayText:"днес",todayStatus:"",clearText:"изчисти",clearStatus:"изчисти актуалната дата",closeText:"затвори",closeStatus:"затвори без промени",yearStatus:"покажи друга година",monthStatus:"покажи друг месец",weekText:"Wk",weekStatus:"седмица от месеца",dayStatus:"Избери D, M d",defaultStatus:"Избери дата",isRTL:!1},e.calendarsPicker.setDefaults(e.calendarsPicker.regionalOptions.bg)}(jQuery),function(e){e.calendarsPicker.regionalOptions.bs={renderer:e.calendarsPicker.defaultRenderer,prevText:"<",prevStatus:"",prevJumpText:"<<",prevJumpStatus:"",nextText:">",nextStatus:"",nextJumpText:">>",nextJumpStatus:"",currentText:"Danas",currentStatus:"",todayText:"Danas",todayStatus:"",clearText:"X",clearStatus:"",closeText:"Zatvori",closeStatus:"",yearStatus:"",monthStatus:"",weekText:"Wk",weekStatus:"",dayStatus:"",defaultStatus:"",isRTL:!1},e.calendarsPicker.setDefaults(e.calendarsPicker.regionalOptions.bs)}(jQuery),function(e){e.calendarsPicker.regionalOptions.ca={renderer:e.calendarsPicker.defaultRenderer,prevText:"<Ant",prevStatus:"",prevJumpText:"<<",prevJumpStatus:"",nextText:"Seg>",nextStatus:"",nextJumpText:">>",nextJumpStatus:"",currentText:"Avui",currentStatus:"",todayText:"Avui",todayStatus:"",clearText:"Netejar",clearStatus:"",closeText:"Tancar",closeStatus:"",yearStatus:"",monthStatus:"",weekText:"Wk",weekStatus:"",dayStatus:"DD, M d",defaultStatus:"",isRTL:!1},e.calendarsPicker.setDefaults(e.calendarsPicker.regionalOptions.ca)}(jQuery),function(e){e.calendarsPicker.regionalOptions.cs={renderer:e.calendarsPicker.defaultRenderer,prevText:"<Dříve",prevStatus:"Přejít na předchozí měsí",prevJumpText:"<<",prevJumpStatus:"",nextText:"Později>",nextStatus:"Přejít na další měsíc",nextJumpText:">>",nextJumpStatus:"",currentText:"Nyní",currentStatus:"Přejde na aktuální měsíc",todayText:"Nyní",todayStatus:"Přejde na aktuální měsíc",clearText:"Vymazat",clearStatus:"Vymaže zadané datum",closeText:"Zavřít",closeStatus:"Zavře kalendář beze změny",yearStatus:"Přejít na jiný rok",monthStatus:"Přejít na jiný měsíc",weekText:"Týd",weekStatus:"Týden v roce",dayStatus:"'Vyber' DD, M d",defaultStatus:"Vyberte datum",isRTL:!1},e.calendarsPicker.setDefaults(e.calendarsPicker.regionalOptions.cs)}(jQuery),function(e){e.calendarsPicker.regionalOptions.da={renderer:e.calendarsPicker.defaultRenderer,prevText:"<Forrige",prevStatus:"Vis forrige måned",prevJumpText:"<<",prevJumpStatus:"",nextText:"Næste>",nextStatus:"Vis næste måned",nextJumpText:">>",nextJumpStatus:"",currentText:"Idag",currentStatus:"Vis aktuel måned",todayText:"Idag",todayStatus:"Vis aktuel måned",clearText:"Nulstil",clearStatus:"Nulstil den aktuelle dato",closeText:"Luk",closeStatus:"Luk uden ændringer",yearStatus:"Vis et andet år",monthStatus:"Vis en anden måned",weekText:"Uge",weekStatus:"Årets uge",dayStatus:"Vælg D, M d",defaultStatus:"Vælg en dato",isRTL:!1},e.calendarsPicker.setDefaults(e.calendarsPicker.regionalOptions.da)}(jQuery),function(e){e.calendarsPicker.regionalOptions["de-CH"]={renderer:e.calendarsPicker.defaultRenderer,prevText:"<zurück",prevStatus:"letzten Monat zeigen",prevJumpText:"<<",prevJumpStatus:"",nextText:"nächster>",nextStatus:"nächsten Monat zeigen",nextJumpText:">>",nextJumpStatus:"",currentText:"heute",currentStatus:"",todayText:"heute",todayStatus:"",clearText:"löschen",clearStatus:"aktuelles Datum löschen",closeText:"schliessen",closeStatus:"ohne Änderungen schliessen",yearStatus:"anderes Jahr anzeigen",monthStatus:"anderen Monat anzeige",weekText:"Wo",weekStatus:"Woche des Monats",dayStatus:"Wähle D, M d",defaultStatus:"Wähle ein Datum",isRTL:!1},e.calendarsPicker.setDefaults(e.calendarsPicker.regionalOptions["de-CH"])}(jQuery),function(e){e.calendarsPicker.regionalOptions.de={renderer:e.calendarsPicker.defaultRenderer,prevText:"<zurück",prevStatus:"letzten Monat zeigen",prevJumpText:"<<",prevJumpStatus:"",nextText:"Vor>",nextStatus:"nächsten Monat zeigen",nextJumpText:">>",nextJumpStatus:"",currentText:"heute",currentStatus:"",todayText:"heute",todayStatus:"",clearText:"löschen",clearStatus:"aktuelles Datum löschen",closeText:"schließen",closeStatus:"ohne Änderungen schließen",yearStatus:"anderes Jahr anzeigen",monthStatus:"anderen Monat anzeige",weekText:"Wo",weekStatus:"Woche des Monats",dayStatus:"Wähle D, M d",defaultStatus:"Wähle ein Datum",isRTL:!1},e.calendarsPicker.setDefaults(e.calendarsPicker.regionalOptions.de)}(jQuery),function(e){e.calendarsPicker.regionalOptions.el={renderer:e.calendarsPicker.defaultRenderer,prevText:"Προηγούμενος",prevStatus:"Επισκόπηση προηγούμενου μήνα",prevJumpText:"<<",prevJumpStatus:"",nextText:"Επόμενος",nextStatus:"Επισκόπηση επόμενου μήνα",nextJumpText:">>",nextJumpStatus:"",currentText:"Τρέχων Μήνας",currentStatus:"Επισκόπηση τρέχοντος μήνα",todayText:"Τρέχων Μήνας",todayStatus:"Επισκόπηση τρέχοντος μήνα",clearText:"Σβήσιμο",clearStatus:"Σβήσιμο της επιλεγμένης ημερομηνίας",closeText:"Κλείσιμο",closeStatus:"Κλείσιμο χωρίς αλλαγή",yearStatus:"Επισκόπηση άλλου έτους",monthStatus:"Επισκόπηση άλλου μήνα",weekText:"Εβδ",weekStatus:"",dayStatus:"Επιλογή DD d MM",defaultStatus:"Επιλέξτε μια ημερομηνία",isRTL:!1},e.calendarsPicker.setDefaults(e.calendarsPicker.regionalOptions.el)}(jQuery),function(e){e.calendarsPicker.regionalOptions["en-AU"]={renderer:e.calendarsPicker.defaultRenderer,prevText:"Prev",prevStatus:"Show the previous month",prevJumpText:"<<",prevJumpStatus:"Show the previous year",nextText:"Next",nextStatus:"Show the next month",nextJumpText:">>",nextJumpStatus:"Show the next year",currentText:"Current",currentStatus:"Show the current month",todayText:"Today",todayStatus:"Show today's month",clearText:"Clear",clearStatus:"Clear all the dates",closeText:"Done",closeStatus:"Close the datepicker",yearStatus:"Change the year",monthStatus:"Change the month",weekText:"Wk",weekStatus:"Week of the year",dayStatus:"Select DD, M d, yyyy",defaultStatus:"Select a date",isRTL:!1},e.calendarsPicker.setDefaults(e.calendarsPicker.regionalOptions["en-AU"])}(jQuery),function(e){e.calendarsPicker.regionalOptions["en-GB"]={renderer:e.calendarsPicker.defaultRenderer,prevText:"Prev",prevStatus:"Show the previous month",prevJumpText:"<<",prevJumpStatus:"Show the previous year",nextText:"Next",nextStatus:"Show the next month",nextJumpText:">>",nextJumpStatus:"Show the next year",currentText:"Current",currentStatus:"Show the current month",todayText:"Today",todayStatus:"Show today's month",clearText:"Clear",clearStatus:"Clear all the dates",closeText:"Done",closeStatus:"Close the datepicker",yearStatus:"Change the year",monthStatus:"Change the month",weekText:"Wk",weekStatus:"Week of the year",dayStatus:"Select DD, M d, yyyy",defaultStatus:"Select a date",isRTL:!1},e.calendarsPicker.setDefaults(e.calendarsPicker.regionalOptions["en-GB"])}(jQuery),function(e){e.calendarsPicker.regionalOptions["en-NZ"]={renderer:e.calendarsPicker.defaultRenderer,prevText:"Prev",prevStatus:"Show the previous month",prevJumpText:"<<",prevJumpStatus:"Show the previous year",nextText:"Next",nextStatus:"Show the next month",nextJumpText:">>",nextJumpStatus:"Show the next year",currentText:"Current",currentStatus:"Show the current month",todayText:"Today",todayStatus:"Show today's month",clearText:"Clear",clearStatus:"Clear all the dates",closeText:"Done",closeStatus:"Close the datepicker",yearStatus:"Change the year",monthStatus:"Change the month",weekText:"Wk",weekStatus:"Week of the year",dayStatus:"Select DD, M d, yyyy",defaultStatus:"Select a date",isRTL:!1},e.calendarsPicker.setDefaults(e.calendarsPicker.regionalOptions["en-NZ"])}(jQuery),function(e){e.calendarsPicker.regionalOptions.eo={renderer:e.calendarsPicker.defaultRenderer,prevText:"<Anta",prevStatus:"Vidi la antaŭan monaton",prevJumpText:"<<",prevJumpStatus:"",nextText:"Sekv>",nextStatus:"Vidi la sekvan monaton",nextJumpText:">>",nextJumpStatus:"",currentText:"Nuna",currentStatus:"Vidi la nunan monaton",todayText:"Nuna",todayStatus:"Vidi la nunan monaton",clearText:"Vakigi",clearStatus:"",closeText:"Fermi",closeStatus:"Fermi sen modifi",yearStatus:"Vidi alian jaron",monthStatus:"Vidi alian monaton",weekText:"Sb",weekStatus:"",dayStatus:"Elekti DD, MM d",defaultStatus:"Elekti la daton",isRTL:!1},e.calendarsPicker.setDefaults(e.calendarsPicker.regionalOptions.eo)}(jQuery),function(e){e.calendarsPicker.regionalOptions["es-AR"]={renderer:e.calendarsPicker.defaultRenderer,prevText:"<Ant",prevStatus:"",prevJumpText:"<<",prevJumpStatus:"",nextText:"Sig>",nextStatus:"",nextJumpText:">>",nextJumpStatus:"",currentText:"Hoy",currentStatus:"",todayText:"Hoy",todayStatus:"",clearText:"Limpiar",clearStatus:"",closeText:"Cerrar",closeStatus:"",yearStatus:"",monthStatus:"",weekText:"Sm",weekStatus:"",dayStatus:"DD, M d",defaultStatus:"",isRTL:!1},e.calendarsPicker.setDefaults(e.calendarsPicker.regionalOptions["es-AR"])}(jQuery),function(e){e.calendarsPicker.regionalOptions["es-PE"]={renderer:e.calendarsPicker.defaultRenderer,prevText:"<Ant",prevStatus:"",prevJumpText:"<<",prevJumpStatus:"",nextText:"Sig>",nextStatus:"",nextJumpText:">>",nextJumpStatus:"",currentText:"Hoy",currentStatus:"",todayText:"Hoy",todayStatus:"",clearText:"Limpiar",clearStatus:"",closeText:"Cerrar",closeStatus:"",yearStatus:"",monthStatus:"",weekText:"Sm",weekStatus:"",dayStatus:"DD d, MM yyyy",defaultStatus:"",isRTL:!1},e.calendarsPicker.setDefaults(e.calendarsPicker.regionalOptions["es-PE"])}(jQuery),function(e){e.calendarsPicker.regionalOptions.es={renderer:e.calendarsPicker.defaultRenderer,prevText:"<Ant",prevStatus:"",prevJumpText:"<<",prevJumpStatus:"",nextText:"Sig>",nextStatus:"",nextJumpText:">>",nextJumpStatus:"",currentText:"Hoy",currentStatus:"",todayText:"Hoy",todayStatus:"",clearText:"Limpiar",clearStatus:"",closeText:"Cerrar",closeStatus:"",yearStatus:"",monthStatus:"",weekText:"Sm",weekStatus:"",dayStatus:"DD, M d",defaultStatus:"",isRTL:!1},e.calendarsPicker.setDefaults(e.calendarsPicker.regionalOptions.es)}(jQuery),function(e){e.calendarsPicker.regionalOptions.et={renderer:e.calendarsPicker.defaultRenderer,prevText:"Eelnev",prevStatus:"",prevJumpText:"<<",prevJumpStatus:"",nextText:"Järgnev",nextStatus:"",nextJumpText:">>",nextJumpStatus:"",currentText:"Täna",currentStatus:"",todayText:"Täna",todayStatus:"",clearText:"X",clearStatus:"",closeText:"Sulge",closeStatus:"",yearStatus:"",monthStatus:"",weekText:"Wk",weekStatus:"",dayStatus:"DD, M d",defaultStatus:"",isRTL:!1},e.calendarsPicker.setDefaults(e.calendarsPicker.regionalOptions.et)}(jQuery),function(e){e.calendarsPicker.regionalOptions.eu={renderer:e.calendarsPicker.defaultRenderer,prevText:"<Aur",prevStatus:"",prevJumpText:"<<",prevJumpStatus:"",nextText:"Hur>",nextStatus:"",nextJumpText:">>",nextJumpStatus:"",currentText:"Gaur",currentStatus:"",todayText:"Gaur",todayStatus:"",clearText:"X",clearStatus:"",closeText:"Egina",closeStatus:"",yearStatus:"",monthStatus:"",weekText:"Wk",weekStatus:"",dayStatus:"DD d MM",defaultStatus:"",isRTL:!1},e.calendarsPicker.setDefaults(e.calendarsPicker.regionalOptions.eu)}(jQuery),function(e){e.calendarsPicker.regionalOptions.fa={renderer:e.calendarsPicker.defaultRenderer,prevText:"<قبلي",prevStatus:"نمايش ماه قبل",prevJumpText:"<<",prevJumpStatus:"",nextText:"بعدي>",nextStatus:"نمايش ماه بعد",nextJumpText:">>",nextJumpStatus:"",currentText:"امروز",currentStatus:"نمايش ماه جاري",todayText:"امروز",todayStatus:"نمايش ماه جاري",clearText:"حذف تاريخ",clearStatus:"پاک کردن تاريخ جاري",closeText:"بستن",closeStatus:"بستن بدون اعمال تغييرات",yearStatus:"نمايش سال متفاوت",monthStatus:"نمايش ماه متفاوت",weekText:"هف",weekStatus:"هفتهِ سال",dayStatus:"انتخاب D, M d",defaultStatus:"انتخاب تاريخ",isRTL:!0},e.calendarsPicker.setDefaults(e.calendarsPicker.regionalOptions.fa)}(jQuery),function(e){e.calendarsPicker.regionalOptions.fi={renderer:e.calendarsPicker.defaultRenderer,prevText:"«Edellinen",prevStatus:"",prevJumpText:"<<",prevJumpStatus:"",nextText:"Seuraava»",nextStatus:"",nextJumpText:">>",nextJumpStatus:"",currentText:"Tänään",currentStatus:"",todayText:"Tänään",todayStatus:"",clearText:"Tyhjennä",clearStatus:"",closeText:"Sulje",closeStatus:"",yearStatus:"",monthStatus:"",weekText:"Vk",weekStatus:"",dayStatus:"DD, M d",defaultStatus:"",isRTL:!1},e.calendarsPicker.setDefaults(e.calendarsPicker.regionalOptions.fi)}(jQuery),function(e){e.calendarsPicker.regionalOptions.fo={renderer:e.calendarsPicker.defaultRenderer,prevText:"<Sísta",prevStatus:"Vís sísta mánaðan",prevJumpText:"<<",prevJumpStatus:"Vís sísta árið",nextText:"Næsta>",nextStatus:"Vís næsta mánaðan",nextJumpText:">>",nextJumpStatus:"Vís næsta árið",currentText:"Hesin",currentStatus:"Vís hendan mánaðan",todayText:"Í dag",todayStatus:"Vís mánaðan fyri í dag",clearText:"Strika",clearStatus:"Strika allir mánaðarnar",closeText:"Goym",closeStatus:"Goym hetta vindeyðga",yearStatus:"Broyt árið",monthStatus:"Broyt mánaðans",weekText:"Vk",weekStatus:"Vika av árinum",dayStatus:"Vel DD, M d, yyyy",defaultStatus:"Vel ein dato",isRTL:!1},e.calendarsPicker.setDefaults(e.calendarsPicker.regionalOptions.fo)}(jQuery),function(e){e.calendarsPicker.regionalOptions["fr-CH"]={renderer:e.calendarsPicker.defaultRenderer,prevText:"<Préc",prevStatus:"Voir le mois précédent",prevJumpText:"<<",prevJumpStatus:"Voir l'année précédent",nextText:"Suiv>",nextStatus:"Voir le mois suivant",nextJumpText:">>",nextJumpStatus:"Voir l'année suivant",currentText:"Courant",currentStatus:"Voir le mois courant",todayText:"Aujourd'hui",todayStatus:"Voir aujourd'hui",clearText:"Effacer",clearStatus:"Effacer la date sélectionnée",closeText:"Fermer",closeStatus:"Fermer sans modifier",yearStatus:"Voir une autre année",monthStatus:"Voir un autre mois",weekText:"Sm",weekStatus:"Semaine de l'année",dayStatus:"'Choisir' le DD d MM",defaultStatus:"Choisir la date",isRTL:!1},e.calendarsPicker.setDefaults(e.calendarsPicker.regionalOptions["fr-CH"])}(jQuery),function(e){e.calendarsPicker.regionalOptions.fr={renderer:e.calendarsPicker.defaultRenderer,prevText:"<Préc",prevStatus:"Voir le mois précédent",prevJumpText:"<<",prevJumpStatus:"Voir l'année précédent",nextText:"Suiv>",nextStatus:"Voir le mois suivant",nextJumpText:">>",nextJumpStatus:"Voir l'année suivant",currentText:"Courant",currentStatus:"Voir le mois courant",todayText:"Aujourd'hui",todayStatus:"Voir aujourd'hui",clearText:"Effacer",clearStatus:"Effacer la date sélectionnée",closeText:"Fermer",closeStatus:"Fermer sans modifier",yearStatus:"Voir une autre année",monthStatus:"Voir un autre mois",weekText:"Sm",weekStatus:"Semaine de l'année",dayStatus:"'Choisir' le DD d MM",defaultStatus:"Choisir la date",isRTL:!1},e.calendarsPicker.setDefaults(e.calendarsPicker.regionalOptions.fr)}(jQuery),function(e){e.calendarsPicker.regionalOptions.gl={renderer:e.calendarsPicker.defaultRenderer,prevText:"<Ant",prevStatus:"Amosar mes anterior",prevJumpText:"<<",prevJumpStatus:"Amosar ano anterior",nextText:"Seg>",nextStatus:"Amosar mes seguinte",nextJumpText:">>",nextJumpStatus:"Amosar ano seguinte",currentText:"Hoxe",currentStatus:"Amosar mes actual",todayText:"Hoxe",todayStatus:"Amosar mes actual",clearText:"Limpar",clearStatus:"Borrar data actual",closeText:"Pechar",closeStatus:"Pechar sen gardar",yearStatus:"Amosar outro ano",monthStatus:"Amosar outro mes",weekText:"Sm",weekStatus:"Semana do ano",dayStatus:"D, M d",defaultStatus:"Selecciona Data",isRTL:!1},e.calendarsPicker.setDefaults(e.calendarsPicker.regionalOptions.gl)}(jQuery),function(e){e.calendarsPicker.regionalOptions.gu={renderer:e.calendarsPicker.defaultRenderer,prevText:"<પાછળ",prevStatus:"પાછલો મહિનો બતાવો",prevJumpText:"<<",prevJumpStatus:"પાછળ",nextText:"આગળ>",nextStatus:"આગલો મહિનો બતાવો",nextJumpText:">>",nextJumpStatus:"આગળ",currentText:"આજે",currentStatus:"આજનો દિવસ બતાવો",todayText:"આજે",todayStatus:"આજનો દિવસ",clearText:"ભૂંસો",clearStatus:"હાલ પસંદ કરેલી તારીખ ભૂંસો",closeText:"બંધ કરો",closeStatus:"તારીખ પસંદ કર્યા વગર બંધ કરો",yearStatus:"જુદુ વર્ષ બતાવો",monthStatus:"જુદો મહિનો બતાવો",weekText:"અઠવાડિયું",weekStatus:"અઠવાડિયું",dayStatus:"અઠવાડિયાનો પહેલો દિવસ પસંદ કરો",defaultStatus:"તારીખ પસંદ કરો",isRTL:!1},e.calendarsPicker.setDefaults(e.calendarsPicker.regionalOptions.gu)}(jQuery),function(e){e.calendarsPicker.regionalOptions.he={renderer:e.calendarsPicker.defaultRenderer,prevText:"<הקודם",prevStatus:"",prevJumpText:"<<",prevJumpStatus:"",nextText:"הבא>",nextStatus:"",nextJumpText:">>",nextJumpStatus:"",currentText:"היום",currentStatus:"",todayText:"היום",todayStatus:"",clearText:"נקה",clearStatus:"",closeText:"סגור",closeStatus:"",yearStatus:"",monthStatus:"",weekText:"Wk",weekStatus:"",dayStatus:"DD, M d",defaultStatus:"",isRTL:!0},e.calendarsPicker.setDefaults(e.calendarsPicker.regionalOptions.he)}(jQuery),function(e){e.calendarsPicker.regionalOptions["hi-IN"]={renderer:e.calendarsPicker.defaultRenderer,prevText:"पिछला",prevStatus:"पिछला महीना देखें",prevJumpText:"<<",prevJumpStatus:"पिछला वर्ष देखें",nextText:"अगला",nextStatus:"अगला महीना देखें",nextJumpText:">>",nextJumpStatus:"अगला वर्ष देखें",currentText:"वर्तमान",currentStatus:"वर्तमान महीना देखें",todayText:"आज",todayStatus:"वर्तमान दिन देखें",clearText:"साफ",clearStatus:"वर्तमान दिनांक मिटाए",closeText:"समाप्त",closeStatus:"बदलाव के बिना बंद",yearStatus:"एक अलग वर्ष का चयन करें",monthStatus:"एक अलग महीने का चयन करें",weekText:"Wk",weekStatus:"वर्ष का सप्ताह",dayStatus:"चुने DD, M d",defaultStatus:"एक तिथि का चयन करें",isRTL:!1},e.calendarsPicker.setDefaults(e.calendarsPicker.regionalOptions["hi-IN"])}(jQuery),function(e){e.calendarsPicker.regionalOptions.hr={renderer:e.calendarsPicker.defaultRenderer,prevText:"<",prevStatus:"Prikaži prethodni mjesec",prevJumpText:"<<",prevJumpStatus:"",nextText:">",nextStatus:"Prikaži slijedeći mjesec",nextJumpText:">>",nextJumpStatus:"",currentText:"Danas",currentStatus:"Današnji datum",todayText:"Danas",todayStatus:"Današnji datum",clearText:"izbriši",clearStatus:"Izbriši trenutni datum",closeText:"Zatvori",closeStatus:"Zatvori kalendar",yearStatus:"Prikaži godine",monthStatus:"Prikaži mjesece",weekText:"Tje",weekStatus:"Tjedanr",dayStatus:"'Datum' DD, M d",defaultStatus:"Odaberi datum",isRTL:!1},e.calendarsPicker.setDefaults(e.calendarsPicker.regionalOptions.hr)}(jQuery),function(e){e.calendarsPicker.regionalOptions.hu={renderer:e.calendarsPicker.defaultRenderer,prevText:"« vissza",prevStatus:"",prevJumpText:"<<",prevJumpStatus:"",nextText:"előre »",nextStatus:"",nextJumpText:">>",nextJumpStatus:"",currentText:"ma",currentStatus:"",todayText:"ma",todayStatus:"",clearText:"törlés",clearStatus:"",closeText:"bezárás",closeStatus:"",yearStatus:"",monthStatus:"",weekText:"Hé",weekStatus:"",dayStatus:"DD, M d",defaultStatus:"",isRTL:!1},e.calendarsPicker.setDefaults(e.calendarsPicker.regionalOptions.hu)}(jQuery),function(e){e.calendarsPicker.regionalOptions.hy={renderer:e.calendarsPicker.defaultRenderer,prevText:"<Նախ.",prevStatus:"",prevJumpText:"<<",prevJumpStatus:"",nextText:"Հաջ.>",nextStatus:"",nextJumpText:">>",nextJumpStatus:"",currentText:"Այսօր",currentStatus:"",todayText:"Այսօր",todayStatus:"",clearText:"Մաքրել",clearStatus:"",closeText:"Փակել",closeStatus:"",yearStatus:"",monthStatus:"",weekText:"ՇԲՏ",weekStatus:"",dayStatus:"DD, M d",defaultStatus:"",isRTL:!1},e.calendarsPicker.setDefaults(e.calendarsPicker.regionalOptions.hy)}(jQuery),function(e){e.calendarsPicker.regionalOptions.id={renderer:e.calendarsPicker.defaultRenderer,prevText:"<mundur",prevStatus:"Tampilkan bulan sebelumnya",prevJumpText:"<<",prevJumpStatus:"",nextText:"maju>",nextStatus:"Tampilkan bulan berikutnya",nextJumpText:">>",nextJumpStatus:"",currentText:"hari ini",currentStatus:"Tampilkan bulan sekarang",todayText:"hari ini",todayStatus:"Tampilkan bulan sekarang",clearText:"kosongkan",clearStatus:"bersihkan tanggal yang sekarang",closeText:"Tutup",closeStatus:"Tutup tanpa mengubah",yearStatus:"Tampilkan tahun yang berbeda",monthStatus:"Tampilkan bulan yang berbeda",weekText:"Mg",weekStatus:"Minggu dalam tahu",dayStatus:"pilih le DD, MM d",defaultStatus:"Pilih Tanggal",isRTL:!1},e.calendarsPicker.setDefaults(e.calendarsPicker.regionalOptions.id)}(jQuery),function(e){e.calendarsPicker.regionalOptions.is={renderer:e.calendarsPicker.defaultRenderer,prevText:"< Fyrri",prevStatus:"",prevJumpText:"<<",prevJumpStatus:"",nextText:"Næsti >",nextStatus:"",nextJumpText:">>",nextJumpStatus:"",currentText:"Í dag",currentStatus:"",todayText:"Í dag",todayStatus:"",clearText:"Hreinsa",clearStatus:"",closeText:"Loka",closeStatus:"",yearStatus:"",monthStatus:"",weekText:"Vika",weekStatus:"",dayStatus:"DD, M d",defaultStatus:"",isRTL:!1},e.calendarsPicker.setDefaults(e.calendarsPicker.regionalOptions.is)}(jQuery),function(e){e.calendarsPicker.regionalOptions.it={renderer:e.calendarsPicker.defaultRenderer,prevText:"<Prec",prevStatus:"Mese precedente",prevJumpText:"<<",prevJumpStatus:"Mostra l'anno precedente",nextText:"Succ>",nextStatus:"Mese successivo",nextJumpText:">>",nextJumpStatus:"Mostra l'anno successivo",currentText:"Oggi",currentStatus:"Mese corrente",todayText:"Oggi",todayStatus:"Mese corrente",clearText:"Svuota",clearStatus:"Annulla",closeText:"Chiudi",closeStatus:"Chiudere senza modificare",yearStatus:"Seleziona un altro anno",monthStatus:"Seleziona un altro mese",weekText:"Sm",weekStatus:"Settimana dell'anno",dayStatus:"'Seleziona' DD, M d",defaultStatus:"Scegliere una data",isRTL:!1},e.calendarsPicker.setDefaults(e.calendarsPicker.regionalOptions.it)}(jQuery),function(e){e.calendarsPicker.regionalOptions.ja={renderer:e.extend({},e.calendarsPicker.defaultRenderer,{month:e.calendarsPicker.defaultRenderer.month.replace(/monthHeader/,"monthHeader:yyyy年 MM")}),prevText:"<前",prevStatus:"前月を表示します",prevJumpText:"<<",prevJumpStatus:"前年を表示します",nextText:"次>",nextStatus:"翌月を表示します",nextJumpText:">>",nextJumpStatus:"翌年を表示します",currentText:"今日",currentStatus:"今月を表示します",todayText:"今日",todayStatus:"今月を表示します",clearText:"クリア",clearStatus:"日付をクリアします",closeText:"閉じる",closeStatus:"変更せずに閉じます",yearStatus:"表示する年を変更します",monthStatus:"表示する月を変更します",weekText:"週",weekStatus:"暦週で第何週目かを表します",dayStatus:"yyyy/mm/dd",defaultStatus:"日付を選択します",isRTL:!1},e.calendarsPicker.setDefaults(e.calendarsPicker.regionalOptions.ja)}(jQuery),function(e){e.calendarsPicker.regionalOptions.ka={renderer:e.calendarsPicker.defaultRenderer,prevText:"<უკან",prevStatus:"წინა თვე",prevJumpText:"<<",prevJumpStatus:"წინა წელი",nextText:"წინ>",nextStatus:"შემდეგი თვე",nextJumpText:">>",nextJumpStatus:"შემდეგი წელი",currentText:"მიმდინარე",currentStatus:"მიმდინარე თვე",todayText:"დღეს",todayStatus:"მიმდინარე დღე",clearText:"გასუფთავება",clearStatus:"მიმდინარე თარიღის წაშლა",closeText:"არის",closeStatus:"დახურვა უცვლილებოდ",yearStatus:"სხვა წელი",monthStatus:"სხვა თვე",weekText:"კვ",weekStatus:"წლის კვირა",dayStatus:"აირჩიეთ DD, M d",defaultStatus:"აიღჩიეთ თარიღი",isRTL:!1},e.calendarsPicker.setDefaults(e.calendarsPicker.regionalOptions.ka)}(jQuery),function(e){e.calendarsPicker.regionalOptions.km={renderer:e.calendarsPicker.defaultRenderer,prevText:"ថយក្រោយ",prevStatus:"",prevJumpText:"<<",prevJumpStatus:"",nextText:"ទៅមុខ",nextStatus:"",nextJumpText:">>",nextJumpStatus:"",currentText:"ថ្ងៃនេះ",currentStatus:"",todayText:"ថ្ងៃនេះ",todayStatus:"",clearText:"X",clearStatus:"",closeText:"រួចរាល់",closeStatus:"",yearStatus:"",monthStatus:"",weekText:"Wk",weekStatus:"",dayStatus:"DD d MM",defaultStatus:"",isRTL:!1},e.calendarsPicker.setDefaults(e.calendarsPicker.regionalOptions.km)}(jQuery),function(e){e.calendarsPicker.regionalOptions.ko={renderer:e.extend({},e.calendarsPicker.defaultRenderer,{month:e.calendarsPicker.defaultRenderer.month.replace(/monthHeader/,"monthHeader:yyyy년 MM")}),prevText:"이전달",prevStatus:"이전달을 표시합니다",prevJumpText:"<<",prevJumpStatus:"이전 연도를 표시합니다",nextText:"다음달",nextStatus:"다음달을 표시합니다",nextJumpText:">>",nextJumpStatus:"다음 연도를 표시합니다",currentText:"현재",currentStatus:"입력한 달을 표시합니다",todayText:"오늘",todayStatus:"이번달을 표시합니다",clearText:"지우기",clearStatus:"입력한 날짜를 지웁니다",closeText:"닫기",closeStatus:"",yearStatus:"표시할 연도를 변경합니다",monthStatus:"표시할 월을 변경합니다",weekText:"Wk",weekStatus:"해당 연도의 주차",dayStatus:"M d일 (D)",defaultStatus:"날짜를 선택하세요",isRTL:!1},e.calendarsPicker.setDefaults(e.calendarsPicker.regionalOptions.ko)}(jQuery),function(e){e.calendarsPicker.regionalOptions.lt={renderer:e.calendarsPicker.defaultRenderer,prevText:"<Atgal",prevStatus:"",prevJumpText:"<<",prevJumpStatus:"",nextText:"Pirmyn>",nextStatus:"",nextJumpText:">>",nextJumpStatus:"",currentText:"Šiandien",currentStatus:"",todayText:"Šiandien",todayStatus:"",clearText:"Išvalyti",clearStatus:"",closeText:"Uždaryti",closeStatus:"",yearStatus:"",monthStatus:"",weekText:"Wk",weekStatus:"",dayStatus:"DD, M d",defaultStatus:"",isRTL:!1},e.calendarsPicker.setDefaults(e.calendarsPicker.regionalOptions.lt)}(jQuery),function(e){e.calendarsPicker.regionalOptions.lv={renderer:e.calendarsPicker.defaultRenderer,prevText:"Iepr",prevStatus:"",prevJumpText:"<<",prevJumpStatus:"",nextText:"Nāka",nextStatus:"",nextJumpText:">>",nextJumpStatus:"",currentText:"Šodien",currentStatus:"",todayText:"Šodien",todayStatus:"",clearText:"Notīrīt",clearStatus:"",closeText:"Aizvērt",closeStatus:"",yearStatus:"",monthStatus:"",weekText:"Nav",weekStatus:"",dayStatus:"DD, M d",defaultStatus:"",isRTL:!1},e.calendarsPicker.setDefaults(e.calendarsPicker.regionalOptions.lv)}(jQuery),function(e){e.calendarsPicker.regionalOptions["me-ME"]={renderer:e.calendarsPicker.defaultRenderer,prevText:"<",prevStatus:"Prikaži prethodni mjesec",prevJumpText:"<<",prevJumpStatus:"Prikaži prethodnu godinu",nextText:">",nextStatus:"Prikaži sljedeći mjesec",nextJumpText:">>",nextJumpStatus:"Prikaži sljedeću godinu",currentText:"Danas",currentStatus:"Tekući mjesec",todayText:"Danas",todayStatus:"Tekući mjesec",clearText:"Obriši",clearStatus:"Obriši trenutni datum",closeText:"Zatvori",closeStatus:"Zatvori kalendar",yearStatus:"Prikaži godine",monthStatus:"Prikaži mjesece",weekText:"Sed",weekStatus:"Sedmica",dayStatus:"'Datum' DD, M d",defaultStatus:"Odaberi datum",isRTL:!1},e.calendarsPicker.setDefaults(e.calendarsPicker.regionalOptions["me-ME"])}(jQuery),function(e){e.calendarsPicker.regionalOptions.me={renderer:e.calendarsPicker.defaultRenderer,prevText:"<",prevStatus:"Прикажи претходни мјесец",prevJumpText:"<<",
-prevJumpStatus:"Прикажи претходну годину",nextText:">",nextStatus:"Прикажи сљедећи мјесец",nextJumpText:">>",nextJumpStatus:"Прикажи сљедећу годину",currentText:"Данас",currentStatus:"Текући мјесец",todayText:"Данас",todayStatus:"Текући мјесец",clearText:"Обриши",clearStatus:"Обриши тренутни датум",closeText:"Затвори",closeStatus:"Затвори календар",yearStatus:"Прикажи године",monthStatus:"Прикажи мјесеце",weekText:"Сед",weekStatus:"Седмица",dayStatus:"'Датум' DD d MM",defaultStatus:"Одабери датум",isRTL:!1},e.calendarsPicker.setDefaults(e.calendarsPicker.regionalOptions.me)}(jQuery),function(e){e.calendarsPicker.regionalOptions.mk={renderer:e.calendarsPicker.defaultRenderer,prevText:"Претх.",prevStatus:"Прикажи го претходниот месец",prevJumpText:"<<",prevJumpStatus:"Прикажи ја претходната година",nextText:"Следен",nextStatus:"Прикажи го следниот месец",nextJumpText:">>",nextJumpStatus:"Прикажи ја следната година",currentText:"Тековен",currentStatus:"Прикажи го тековниот месец",todayText:"Денес",todayStatus:"Прикажи го денешниот месец",clearText:"Бриши",clearStatus:"Избриши го тековниот датум",closeText:"Затвори",closeStatus:"Затвори без промени",yearStatus:"Избери друга година",monthStatus:"Избери друг месец",weekText:"Нед",weekStatus:"Недела во годината",dayStatus:"Избери DD, M d",defaultStatus:"Избери датум",isRTL:!1},e.calendarsPicker.setDefaults(e.calendarsPicker.regionalOptions.mk)}(jQuery),function(e){e.calendarsPicker.regionalOptions.ml={renderer:e.calendarsPicker.defaultRenderer,prevText:"മുന്നത്തെ",prevStatus:"",prevJumpText:"<<",prevJumpStatus:"",nextText:"അടുത്തത് ",nextStatus:"",nextJumpText:">>",nextJumpStatus:"",currentText:"ഇന്ന്",currentStatus:"",todayText:"ഇന്ന്",todayStatus:"",clearText:"X",clearStatus:"",closeText:"ശരി",closeStatus:"",yearStatus:"",monthStatus:"",weekText:"ആ",weekStatus:"",dayStatus:"DD d MM",defaultStatus:"",isRTL:!1},e.calendarsPicker.setDefaults(e.calendarsPicker.regionalOptions.ml)}(jQuery),function(e){e.calendarsPicker.regionalOptions.ms={renderer:e.calendarsPicker.defaultRenderer,prevText:"<Sebelum",prevStatus:"Tunjukkan bulan lepas",prevJumpText:"<<",prevJumpStatus:"Tunjukkan tahun lepas",nextText:"Selepas>",nextStatus:"Tunjukkan bulan depan",nextJumpText:">>",nextJumpStatus:"Tunjukkan tahun depan",currentText:"hari ini",currentStatus:"Tunjukkan bulan terkini",todayText:"hari ini",todayStatus:"Tunjukkan bulan terkini",clearText:"Padam",clearStatus:"Padamkan tarikh terkini",closeText:"Tutup",closeStatus:"Tutup tanpa perubahan",yearStatus:"Tunjukkan tahun yang lain",monthStatus:"Tunjukkan bulan yang lain",weekText:"Mg",weekStatus:"Minggu bagi tahun ini",dayStatus:"DD, d MM",defaultStatus:"Sila pilih tarikh",isRTL:!1},e.calendarsPicker.setDefaults(e.calendarsPicker.regionalOptions.ms)}(jQuery),function(e){e.calendarsPicker.regionalOptions.mt={renderer:e.calendarsPicker.defaultRenderer,prevText:"Ta Qabel",prevStatus:"Ix-xahar ta qabel",prevJumpText:"<<",prevJumpStatus:"Is-sena ta qabel",nextText:"Li Jmiss",nextStatus:"Ix-xahar li jmiss",nextJumpText:">>",nextJumpStatus:"Is-sena li jmiss",currentText:"Illum",currentStatus:"Ix-xahar ta llum",todayText:"Illum",todayStatus:"Uri ix-xahar ta llum",clearText:"Ħassar",clearStatus:"Ħassar id-data",closeText:"Lest",closeStatus:"Għalaq mingħajr tibdiliet",yearStatus:"Uri sena differenti",monthStatus:"Uri xahar differenti",weekText:"Ġm",weekStatus:"Il-Ġimgħa fis-sena",dayStatus:"Għazel DD, M d",defaultStatus:"Għazel data",isRTL:!1},e.calendarsPicker.setDefaults(e.calendarsPicker.regionalOptions.mt)}(jQuery),function(e){e.calendarsPicker.regionalOptions["nl-BE"]={renderer:e.calendarsPicker.defaultRenderer,prevText:"←",prevStatus:"Bekijk de vorige maand",prevJumpText:"«",nextJumpStatus:"Bekijk het vorige jaar",nextText:"→",nextStatus:"Bekijk de volgende maand",nextJumpText:"»",nextJumpStatus:"Bekijk het volgende jaar",currentText:"Vandaag",currentStatus:"Bekijk de huidige maand",todayText:"Vandaag",todayStatus:"Bekijk de huidige maand",clearText:"Wissen",clearStatus:"Wis de huidige datum",closeText:"Sluiten",closeStatus:"Sluit zonder verandering",yearStatus:"Bekijk een ander jaar",monthStatus:"Bekijk een andere maand",weekText:"Wk",weekStatus:"Week van het jaar",dayStatus:"dd/mm/yyyy",defaultStatus:"Kies een datum",isRTL:!1},e.calendarsPicker.setDefaults(e.calendarsPicker.regionalOptions["nl-BE"])}(jQuery),function(e){e.calendarsPicker.regionalOptions.nl={renderer:e.calendarsPicker.defaultRenderer,prevText:"←",prevStatus:"Bekijk de vorige maand",prevJumpText:"«",nextJumpStatus:"Bekijk het vorige jaar",nextText:"→",nextStatus:"Bekijk de volgende maand",nextJumpText:"»",nextJumpStatus:"Bekijk het volgende jaar",currentText:"Vandaag",currentStatus:"Bekijk de huidige maand",todayText:"Vandaag",todayStatus:"Bekijk de huidige maand",clearText:"Wissen",clearStatus:"Wis de huidige datum",closeText:"Sluiten",closeStatus:"Sluit zonder verandering",yearStatus:"Bekijk een ander jaar",monthStatus:"Bekijk een andere maand",weekText:"Wk",weekStatus:"Week van het jaar",dayStatus:"dd-mm-yyyy",defaultStatus:"Kies een datum",isRTL:!1},e.calendarsPicker.setDefaults(e.calendarsPicker.regionalOptions.nl)}(jQuery),function(e){e.calendarsPicker.regionalOptions.no={renderer:e.calendarsPicker.defaultRenderer,prevText:"«Forrige",prevStatus:"",prevJumpText:"<<",prevJumpStatus:"",nextText:"Neste»",nextStatus:"",nextJumpText:">>",nextJumpStatus:"",currentText:"I dag",currentStatus:"",todayText:"I dag",todayStatus:"",clearText:"Tøm",clearStatus:"",closeText:"Lukk",closeStatus:"",yearStatus:"",monthStatus:"",weekText:"Uke",weekStatus:"",dayStatus:"DD, M d",defaultStatus:"",isRTL:!1},e.calendarsPicker.setDefaults(e.calendarsPicker.regionalOptions.no)}(jQuery),function(e){e.calendarsPicker.regionalOptions.pl={renderer:e.calendarsPicker.defaultRenderer,prevText:"<Poprzedni",prevStatus:"Pokaż poprzedni miesiąc",prevJumpText:"<<",prevJumpStatus:"",nextText:"Następny>",nextStatus:"Pokaż następny miesiąc",nextJumpText:">>",nextJumpStatus:"",currentText:"Dziś",currentStatus:"Pokaż aktualny miesiąc",todayText:"Dziś",todayStatus:"Pokaż aktualny miesiąc",clearText:"Wyczyść",clearStatus:"Wyczyść obecną datę",closeText:"Zamknij",closeStatus:"Zamknij bez zapisywania",yearStatus:"Pokaż inny rok",monthStatus:"Pokaż inny miesiąc",weekText:"Tydz",weekStatus:"Tydzień roku",dayStatus:"'Wybierz' DD, M d",defaultStatus:"Wybierz datę",isRTL:!1},e.calendarsPicker.setDefaults(e.calendarsPicker.regionalOptions.pl)}(jQuery),function(e){e.calendarsPicker.regionalOptions["pt-BR"]={renderer:e.calendarsPicker.defaultRenderer,prevText:"<Anterior",prevStatus:"Mostra o mês anterior",prevJumpText:"<<",prevJumpStatus:"Mostra o ano anterior",nextText:"Próximo>",nextStatus:"Mostra o próximo mês",nextJumpText:">>",nextJumpStatus:"Mostra o próximo ano",currentText:"Atual",currentStatus:"Mostra o mês atual",todayText:"Hoje",todayStatus:"Vai para hoje",clearText:"Limpar",clearStatus:"Limpar data",closeText:"Fechar",closeStatus:"Fechar o calendário",yearStatus:"Selecionar ano",monthStatus:"Selecionar mês",weekText:"s",weekStatus:"Semana do ano",dayStatus:"DD, d 'de' M 'de' yyyy",defaultStatus:"Selecione um dia",isRTL:!1},e.calendarsPicker.setDefaults(e.calendarsPicker.regionalOptions["pt-BR"])}(jQuery),function(e){e.calendarsPicker.regionalOptions.rm={renderer:e.calendarsPicker.defaultRenderer,prevText:"<Suandant",prevStatus:"",prevJumpText:"<<",prevJumpStatus:"",nextText:"Precedent>",nextStatus:"",nextJumpText:">>",nextJumpStatus:"",currentText:"Actual",currentStatus:"",todayText:"Actual",todayStatus:"",clearText:"X",clearStatus:"",closeText:"Serrar",closeStatus:"",yearStatus:"",monthStatus:"",weekText:"emna",weekStatus:"",dayStatus:"DD d MM",defaultStatus:"",isRTL:!1},e.calendarsPicker.setDefaults(e.calendarsPicker.regionalOptions.rm)}(jQuery),function(e){e.calendarsPicker.regionalOptions.ro={renderer:e.calendarsPicker.defaultRenderer,prevText:"«Precedenta",prevStatus:"Arata luna precedenta",prevJumpText:"««",prevJumpStatus:"",nextText:"Urmatoare»",nextStatus:"Arata luna urmatoare",nextJumpText:"»»",nextJumpStatus:"",currentText:"Azi",currentStatus:"Arata luna curenta",todayText:"Azi",todayStatus:"Arata luna curenta",clearText:"Curat",clearStatus:"Sterge data curenta",closeText:"Închide",closeStatus:"Închide fara schimbare",yearStatus:"Arat un an diferit",monthStatus:"Arata o luna diferita",weekText:"Săpt",weekStatus:"Săptamana anului",dayStatus:"Selecteaza DD, M d",defaultStatus:"Selecteaza o data",isRTL:!1},e.calendarsPicker.setDefaults(e.calendarsPicker.regionalOptions.ro)}(jQuery),function(e){e.calendarsPicker.regionalOptions.ru={renderer:e.calendarsPicker.defaultRenderer,prevText:"<Пред",prevStatus:"",prevJumpText:"<<",prevJumpStatus:"",nextText:"След>",nextStatus:"",nextJumpText:">>",nextJumpStatus:"",currentText:"Сегодня",currentStatus:"",todayText:"Сегодня",todayStatus:"",clearText:"Очистить",clearStatus:"",closeText:"Закрыть",closeStatus:"",yearStatus:"",monthStatus:"",weekText:"Не",weekStatus:"",dayStatus:"DD, M d",defaultStatus:"",isRTL:!1},e.calendarsPicker.setDefaults(e.calendarsPicker.regionalOptions.ru)}(jQuery),function(e){e.calendarsPicker.regionalOptions.sk={renderer:e.calendarsPicker.defaultRenderer,prevText:"<Predchádzajúci",prevStatus:"",prevJumpText:"<<",prevJumpStatus:"",nextText:"Nasledujúci>",nextStatus:"",nextJumpText:">>",nextJumpStatus:"",currentText:"Dnes",currentStatus:"",todayText:"Dnes",todayStatus:"",clearText:"Zmazať",clearStatus:"",closeText:"Zavrieť",closeStatus:"",yearStatus:"",monthStatus:"",weekText:"Ty",weekStatus:"",dayStatus:"DD. M d",defaultStatus:"",isRTL:!1},e.calendarsPicker.setDefaults(e.calendarsPicker.regionalOptions.sk)}(jQuery),function(e){e.calendarsPicker.regionalOptions.sl={renderer:e.calendarsPicker.defaultRenderer,prevText:"<Prejšnji",prevStatus:"Prikaži prejšnji mesec",prevJumpText:"<<",prevJumpStatus:"",nextText:"Naslednji>",nextStatus:"Prikaži naslednji mesec",nextJumpText:">>",nextJumpStatus:"",currentText:"Trenutni",currentStatus:"Prikaži trenutni mesec",todayText:"Trenutni",todayStatus:"Prikaži trenutni mesec",clearText:"Izbriši",clearStatus:"Izbriši trenutni datum",closeText:"Zapri",closeStatus:"Zapri brez spreminjanja",yearStatus:"Prikaži drugo leto",monthStatus:"Prikaži drug mesec",weekText:"Teden",weekStatus:"Teden v letu",dayStatus:"Izberi DD, d MM yy",defaultStatus:"Izbira datuma",isRTL:!1},e.calendarsPicker.setDefaults(e.calendarsPicker.regionalOptions.sl)}(jQuery),function(e){e.calendarsPicker.regionalOptions.sq={renderer:e.calendarsPicker.defaultRenderer,prevText:"<mbrapa",prevStatus:"trego muajin e fundit",prevJumpText:"<<",prevJumpStatus:"",nextText:"Përpara>",nextStatus:"trego muajin tjetër",nextJumpText:">>",nextJumpStatus:"",currentText:"sot",currentStatus:"",todayText:"sot",todayStatus:"",clearText:"fshije",clearStatus:"fshije datën aktuale",closeText:"mbylle",closeStatus:"mbylle pa ndryshime",yearStatus:"trego tjetër vit",monthStatus:"trego muajin tjetër",weekText:"Ja",weekStatus:"Java e muajit",dayStatus:"'Zgjedh' D, M d",defaultStatus:"Zgjedhe një datë",isRTL:!1},e.calendarsPicker.setDefaults(e.calendarsPicker.regionalOptions.sq)}(jQuery),function(e){e.calendarsPicker.regionalOptions["sr-SR"]={renderer:e.calendarsPicker.defaultRenderer,prevText:"<",prevStatus:"Prikaži predhodni mesec",prevJumpText:"<<",prevJumpStatus:"Prikaži predhodnu godinu",nextText:">",nextStatus:"Prikaži sledeći mesec",nextJumpText:">>",nextJumpStatus:"Prikaži sledeću godinu",currentText:"Danas",currentStatus:"Tekući mesec",todayText:"Danas",todayStatus:"Tekući mesec",clearText:"Obriši",clearStatus:"Obriši trenutni datum",closeText:"Zatvori",closeStatus:"Zatvori kalendar",yearStatus:"Prikaži godine",monthStatus:"Prikaži mesece",weekText:"Sed",weekStatus:"Sedmica",dayStatus:"'Datum' DD, M d",defaultStatus:"Odaberi datum",isRTL:!1},e.calendarsPicker.setDefaults(e.calendarsPicker.regionalOptions["sr-SR"])}(jQuery),function(e){e.calendarsPicker.regionalOptions.sr={renderer:e.calendarsPicker.defaultRenderer,prevText:"<",prevStatus:"Прикажи предходни месец",prevJumpText:"<<",prevJumpStatus:"Прикажи предходну годину",nextText:">",nextStatus:"Прикажи слецећи месец",nextJumpText:">>",nextJumpStatus:"Прикажи следећу годину",currentText:"Данас",currentStatus:"Текући месец",todayText:"Данас",todayStatus:"Текући месец",clearText:"Обриши",clearStatus:"Обриши тренутни датум",closeText:"Затвори",closeStatus:"Затвори календар",yearStatus:"Прикажи године",monthStatus:"Прикажи месеце",weekText:"Сед",weekStatus:"Седмица",dayStatus:"'Датум' DD d MM",defaultStatus:"Одабери датум",isRTL:!1},e.calendarsPicker.setDefaults(e.calendarsPicker.regionalOptions.sr)}(jQuery),function(e){e.calendarsPicker.regionalOptions.sv={renderer:e.calendarsPicker.defaultRenderer,prevText:"«Förra",prevStatus:"",prevJumpText:"<<",prevJumpStatus:"",nextText:"Nästa»",nextStatus:"",nextJumpText:">>",nextJumpStatus:"",currentText:"Idag",currentStatus:"",todayText:"Idag",todayStatus:"",clearText:"Rensa",clearStatus:"",closeText:"Stäng",closeStatus:"",yearStatus:"",monthStatus:"",weekText:"Ve",weekStatus:"",dayStatus:"DD, M d",defaultStatus:"",isRTL:!1},e.calendarsPicker.setDefaults(e.calendarsPicker.regionalOptions.sv)}(jQuery),function(e){e.calendarsPicker.regionalOptions.ta={renderer:e.calendarsPicker.defaultRenderer,prevText:"முன்னையது",prevStatus:"",prevJumpText:"<<",prevJumpStatus:"",nextText:"அடுத்தது",nextStatus:"",nextJumpText:">>",nextJumpStatus:"",currentText:"இன்று",currentStatus:"",todayText:"இன்று",todayStatus:"",clearText:"அழி",clearStatus:"",closeText:"மூடு",closeStatus:"",yearStatus:"",monthStatus:"",weekText:"Wk",weekStatus:"",dayStatus:"D, M d",defaultStatus:"",isRTL:!1},e.calendarsPicker.setDefaults(e.calendarsPicker.regionalOptions.ta)}(jQuery),function(e){e.calendarsPicker.regionalOptions.th={renderer:e.calendarsPicker.defaultRenderer,prevText:"« ย้อน",prevStatus:"",prevJumpText:"<<",prevJumpStatus:"",nextText:"ถัดไป »",nextStatus:"",nextJumpText:">>",nextJumpStatus:"",currentText:"วันนี้",currentStatus:"",todayText:"วันนี้",todayStatus:"",clearText:"ลบ",clearStatus:"",closeText:"ปิด",closeStatus:"",yearStatus:"",monthStatus:"",weekText:"Wk",weekStatus:"",dayStatus:"DD, M d",defaultStatus:"",isRTL:!1},e.calendarsPicker.setDefaults(e.calendarsPicker.regionalOptions.th)}(jQuery),function(e){e.calendarsPicker.regionalOptions.tr={renderer:e.calendarsPicker.defaultRenderer,prevText:"<geri",prevStatus:"önceki ayı göster",prevJumpText:"<<",prevJumpStatus:"",nextText:"ileri>",nextStatus:"sonraki ayı göster",nextJumpText:">>",nextJumpStatus:"",currentText:"bugün",currentStatus:"",todayText:"bugün",todayStatus:"",clearText:"temizle",clearStatus:"geçerli tarihi temizler",closeText:"kapat",closeStatus:"sadece göstergeyi kapat",yearStatus:"başka yıl",monthStatus:"başka ay",weekText:"Hf",weekStatus:"Ayın haftaları",dayStatus:"D, M d seçiniz",defaultStatus:"Bir tarih seçiniz",isRTL:!1},e.calendarsPicker.setDefaults(e.calendarsPicker.regionalOptions.tr)}(jQuery),function(e){e.calendarsPicker.regionalOptions.tt={renderer:e.calendarsPicker.defaultRenderer,prevText:"Алдагы",prevStatus:"Алдагы айны күрсәтү",prevJumpText:"<<",prevJumpStatus:"Алдагы елны күрсәтү",nextText:"Киләсе",nextStatus:"Киләсе айны күрсәтү",nextJumpText:">>",nextJumpStatus:"Киләсе елны күрсәтү",currentText:"Хәзер",currentStatus:"Хәзерге айны күрсәтү",todayText:"Бүген",todayStatus:"Бүгенге айны күрсәтү",clearText:"Чистарту",clearStatus:"Барлык көннәрне чистарту",closeText:"Ябарга",closeStatus:"Көн сайлауны ябарга",yearStatus:"Елны кертегез",monthStatus:"Айны кертегез",weekText:"Атна",weekStatus:"Елда атна саны",dayStatus:"DD, M d",defaultStatus:"Көнне сайлагыз",isRTL:!1},e.calendarsPicker.setDefaults(e.calendarsPicker.regionalOptions.tt)}(jQuery),function(e){e.calendarsPicker.regionalOptions.uk={renderer:e.calendarsPicker.defaultRenderer,prevText:"<",prevStatus:"",prevJumpText:"<<",prevJumpStatus:"",nextText:">",nextStatus:"",nextJumpText:">>",nextJumpStatus:"",currentText:"Сьогодні",currentStatus:"",todayText:"Сьогодні",todayStatus:"",clearText:"Очистити",clearStatus:"",closeText:"Закрити",closeStatus:"",yearStatus:"",monthStatus:"",weekText:"Не",weekStatus:"",dayStatus:"DD, M d",defaultStatus:"",isRTL:!1},e.calendarsPicker.setDefaults(e.calendarsPicker.regionalOptions.uk)}(jQuery),function(e){e.calendarsPicker.regionalOptions.ur={renderer:e.calendarsPicker.defaultRenderer,prevText:"<گذشتہ",prevStatus:"ماه گذشتہ",prevJumpText:"<<",prevJumpStatus:"برس گذشتہ",nextText:"آئندہ>",nextStatus:"ماه آئندہ",nextJumpText:">>",nextJumpStatus:"برس آئندہ",currentText:"رواں",currentStatus:"ماه رواں",todayText:"آج",todayStatus:"آج",clearText:"حذف تاريخ",clearStatus:"کریں حذف تاریخ",closeText:"کریں بند",closeStatus:"کیلئے کرنے بند",yearStatus:"برس تبدیلی",monthStatus:"ماه تبدیلی",weekText:"ہفتہ",weekStatus:"ہفتہ",dayStatus:"انتخاب D, M d",defaultStatus:"کریں منتخب تاريخ",isRTL:!0},e.calendarsPicker.setDefaults(e.calendarsPicker.regionalOptions.ur)}(jQuery),function(e){e.calendarsPicker.regionalOptions.vi={renderer:e.calendarsPicker.defaultRenderer,prevText:"<Trước",prevStatus:"Tháng trước",prevJumpText:"<<",prevJumpStatus:"Năm trước",nextText:"Tiếp>",nextStatus:"Tháng sau",nextJumpText:">>",nextJumpStatus:"Năm sau",currentText:"Hôm nay",currentStatus:"Tháng hiện tại",todayText:"Hôm nay",todayStatus:"Tháng hiện tại",clearText:"Xóa",clearStatus:"Xóa ngày hiện tại",closeText:"Đóng",closeStatus:"Đóng và không lưu lại thay đổi",yearStatus:"Năm khác",monthStatus:"Tháng khác",weekText:"Tu",weekStatus:"Tuần trong năm",dayStatus:"Đang chọn DD, 'ngày' d M",defaultStatus:"Chọn ngày",isRTL:!1},e.calendarsPicker.setDefaults(e.calendarsPicker.regionalOptions.vi)}(jQuery),function(e){e.calendarsPicker.regionalOptions["zh-CN"]={renderer:e.extend({},e.calendarsPicker.defaultRenderer,{month:e.calendarsPicker.defaultRenderer.month.replace(/monthHeader/,"monthHeader:MM yyyy年")}),prevText:"<上月",prevStatus:"显示上月",prevJumpText:"<<",prevJumpStatus:"显示上一年",nextText:"下月>",nextStatus:"显示下月",nextJumpText:">>",nextJumpStatus:"显示下一年",currentText:"今天",currentStatus:"显示本月",todayText:"今天",todayStatus:"显示本月",clearText:"清除",clearStatus:"清除已选日期",closeText:"关闭",closeStatus:"不改变当前选择",yearStatus:"选择年份",monthStatus:"选择月份",weekText:"周",weekStatus:"年内周次",dayStatus:"选择 m月 d日, DD",defaultStatus:"请选择日期",isRTL:!1},e.calendarsPicker.setDefaults(e.calendarsPicker.regionalOptions["zh-CN"])}(jQuery),function(e){e.calendarsPicker.regionalOptions["zh-HK"]={renderer:e.extend({},e.calendarsPicker.defaultRenderer,{month:e.calendarsPicker.defaultRenderer.month.replace(/monthHeader/,"monthHeader:yyyy年 MM")}),prevText:"<上月",prevStatus:"顯示上月",prevJumpText:"<<",prevJumpStatus:"顯示上一年",nextText:"下月>",nextStatus:"顯示下月",nextJumpText:">>",nextJumpStatus:"顯示下一年",currentText:"今天",currentStatus:"顯示本月",todayText:"今天",todayStatus:"顯示本月",clearText:"清除",clearStatus:"清除已選日期",closeText:"關閉",closeStatus:"不改變目前的選擇",yearStatus:"選擇年份",monthStatus:"選擇月份",weekText:"周",weekStatus:"年內周次",dayStatus:"選擇 m月 d日, DD",defaultStatus:"請選擇日期",isRTL:!1},e.calendarsPicker.setDefaults(e.calendarsPicker.regionalOptions["zh-HK"])}(jQuery),function(e){e.calendarsPicker.regionalOptions["zh-TW"]={renderer:e.extend({},e.calendarsPicker.defaultRenderer,{month:e.calendarsPicker.defaultRenderer.month.replace(/monthHeader/,"monthHeader:MM yyyy年")}),prevText:"<上月",prevStatus:"顯示上月",prevJumpText:"<<",prevJumpStatus:"顯示上一年",nextText:"下月>",nextStatus:"顯示下月",nextJumpText:">>",nextJumpStatus:"顯示下一年",currentText:"今天",currentStatus:"顯示本月",todayText:"今天",todayStatus:"顯示本月",clearText:"清除",clearStatus:"清除已選日期",closeText:"關閉",closeStatus:"不改變目前的選擇",yearStatus:"選擇年份",monthStatus:"選擇月份",weekText:"周",weekStatus:"年內周次",dayStatus:"選擇 m月 d日, DD",defaultStatus:"請選擇日期",isRTL:!1},e.calendarsPicker.setDefaults(e.calendarsPicker.regionalOptions["zh-TW"])}(jQuery);
\ No newline at end of file
+prevJumpStatus:"Прикажи претходну годину",nextText:">",nextStatus:"Прикажи сљедећи мјесец",nextJumpText:">>",nextJumpStatus:"Прикажи сљедећу годину",currentText:"Данас",currentStatus:"Текући мјесец",todayText:"Данас",todayStatus:"Текући мјесец",clearText:"Обриши",clearStatus:"Обриши тренутни датум",closeText:"Затвори",closeStatus:"Затвори календар",yearStatus:"Прикажи године",monthStatus:"Прикажи мјесеце",weekText:"Сед",weekStatus:"Седмица",dayStatus:"'Датум' DD d MM",defaultStatus:"Одабери датум",isRTL:!1},e.calendarsPicker.setDefaults(e.calendarsPicker.regionalOptions.me)}(jQuery),function(e){e.calendarsPicker.regionalOptions.mk={renderer:e.calendarsPicker.defaultRenderer,prevText:"Претх.",prevStatus:"Прикажи го претходниот месец",prevJumpText:"<<",prevJumpStatus:"Прикажи ја претходната година",nextText:"Следен",nextStatus:"Прикажи го следниот месец",nextJumpText:">>",nextJumpStatus:"Прикажи ја следната година",currentText:"Тековен",currentStatus:"Прикажи го тековниот месец",todayText:"Денес",todayStatus:"Прикажи го денешниот месец",clearText:"Бриши",clearStatus:"Избриши го тековниот датум",closeText:"Затвори",closeStatus:"Затвори без промени",yearStatus:"Избери друга година",monthStatus:"Избери друг месец",weekText:"Нед",weekStatus:"Недела во годината",dayStatus:"Избери DD, M d",defaultStatus:"Избери датум",isRTL:!1},e.calendarsPicker.setDefaults(e.calendarsPicker.regionalOptions.mk)}(jQuery),function(e){e.calendarsPicker.regionalOptions.ml={renderer:e.calendarsPicker.defaultRenderer,prevText:"മുന്നത്തെ",prevStatus:"",prevJumpText:"<<",prevJumpStatus:"",nextText:"അടുത്തത് ",nextStatus:"",nextJumpText:">>",nextJumpStatus:"",currentText:"ഇന്ന്",currentStatus:"",todayText:"ഇന്ന്",todayStatus:"",clearText:"X",clearStatus:"",closeText:"ശരി",closeStatus:"",yearStatus:"",monthStatus:"",weekText:"ആ",weekStatus:"",dayStatus:"DD d MM",defaultStatus:"",isRTL:!1},e.calendarsPicker.setDefaults(e.calendarsPicker.regionalOptions.ml)}(jQuery),function(e){e.calendarsPicker.regionalOptions.ms={renderer:e.calendarsPicker.defaultRenderer,prevText:"<Sebelum",prevStatus:"Tunjukkan bulan lepas",prevJumpText:"<<",prevJumpStatus:"Tunjukkan tahun lepas",nextText:"Selepas>",nextStatus:"Tunjukkan bulan depan",nextJumpText:">>",nextJumpStatus:"Tunjukkan tahun depan",currentText:"hari ini",currentStatus:"Tunjukkan bulan terkini",todayText:"hari ini",todayStatus:"Tunjukkan bulan terkini",clearText:"Padam",clearStatus:"Padamkan tarikh terkini",closeText:"Tutup",closeStatus:"Tutup tanpa perubahan",yearStatus:"Tunjukkan tahun yang lain",monthStatus:"Tunjukkan bulan yang lain",weekText:"Mg",weekStatus:"Minggu bagi tahun ini",dayStatus:"DD, d MM",defaultStatus:"Sila pilih tarikh",isRTL:!1},e.calendarsPicker.setDefaults(e.calendarsPicker.regionalOptions.ms)}(jQuery),function(e){e.calendarsPicker.regionalOptions.mt={renderer:e.calendarsPicker.defaultRenderer,prevText:"Ta Qabel",prevStatus:"Ix-xahar ta qabel",prevJumpText:"<<",prevJumpStatus:"Is-sena ta qabel",nextText:"Li Jmiss",nextStatus:"Ix-xahar li jmiss",nextJumpText:">>",nextJumpStatus:"Is-sena li jmiss",currentText:"Illum",currentStatus:"Ix-xahar ta llum",todayText:"Illum",todayStatus:"Uri ix-xahar ta llum",clearText:"Ħassar",clearStatus:"Ħassar id-data",closeText:"Lest",closeStatus:"Għalaq mingħajr tibdiliet",yearStatus:"Uri sena differenti",monthStatus:"Uri xahar differenti",weekText:"Ġm",weekStatus:"Il-Ġimgħa fis-sena",dayStatus:"Għazel DD, M d",defaultStatus:"Għazel data",isRTL:!1},e.calendarsPicker.setDefaults(e.calendarsPicker.regionalOptions.mt)}(jQuery),function(e){e.calendarsPicker.regionalOptions["nl-BE"]={renderer:e.calendarsPicker.defaultRenderer,prevText:"←",prevStatus:"Bekijk de vorige maand",prevJumpText:"«",nextJumpStatus:"Bekijk het vorige jaar",nextText:"→",nextStatus:"Bekijk de volgende maand",nextJumpText:"»",nextJumpStatus:"Bekijk het volgende jaar",currentText:"Vandaag",currentStatus:"Bekijk de huidige maand",todayText:"Vandaag",todayStatus:"Bekijk de huidige maand",clearText:"Wissen",clearStatus:"Wis de huidige datum",closeText:"Sluiten",closeStatus:"Sluit zonder verandering",yearStatus:"Bekijk een ander jaar",monthStatus:"Bekijk een andere maand",weekText:"Wk",weekStatus:"Week van het jaar",dayStatus:"dd/mm/yyyy",defaultStatus:"Kies een datum",isRTL:!1},e.calendarsPicker.setDefaults(e.calendarsPicker.regionalOptions["nl-BE"])}(jQuery),function(e){e.calendarsPicker.regionalOptions.nl={renderer:e.calendarsPicker.defaultRenderer,prevText:"←",prevStatus:"Bekijk de vorige maand",prevJumpText:"«",nextJumpStatus:"Bekijk het vorige jaar",nextText:"→",nextStatus:"Bekijk de volgende maand",nextJumpText:"»",nextJumpStatus:"Bekijk het volgende jaar",currentText:"Vandaag",currentStatus:"Bekijk de huidige maand",todayText:"Vandaag",todayStatus:"Bekijk de huidige maand",clearText:"Wissen",clearStatus:"Wis de huidige datum",closeText:"Sluiten",closeStatus:"Sluit zonder verandering",yearStatus:"Bekijk een ander jaar",monthStatus:"Bekijk een andere maand",weekText:"Wk",weekStatus:"Week van het jaar",dayStatus:"dd-mm-yyyy",defaultStatus:"Kies een datum",isRTL:!1},e.calendarsPicker.setDefaults(e.calendarsPicker.regionalOptions.nl)}(jQuery),function(e){e.calendarsPicker.regionalOptions.no={renderer:e.calendarsPicker.defaultRenderer,prevText:"«Forrige",prevStatus:"",prevJumpText:"<<",prevJumpStatus:"",nextText:"Neste»",nextStatus:"",nextJumpText:">>",nextJumpStatus:"",currentText:"I dag",currentStatus:"",todayText:"I dag",todayStatus:"",clearText:"Tøm",clearStatus:"",closeText:"Lukk",closeStatus:"",yearStatus:"",monthStatus:"",weekText:"Uke",weekStatus:"",dayStatus:"DD, M d",defaultStatus:"",isRTL:!1},e.calendarsPicker.setDefaults(e.calendarsPicker.regionalOptions.no)}(jQuery),function(e){e.calendarsPicker.regionalOptions.pl={renderer:e.calendarsPicker.defaultRenderer,prevText:"<Poprzedni",prevStatus:"Pokaż poprzedni miesiąc",prevJumpText:"<<",prevJumpStatus:"",nextText:"Następny>",nextStatus:"Pokaż następny miesiąc",nextJumpText:">>",nextJumpStatus:"",currentText:"Dziś",currentStatus:"Pokaż aktualny miesiąc",todayText:"Dziś",todayStatus:"Pokaż aktualny miesiąc",clearText:"Wyczyść",clearStatus:"Wyczyść obecną datę",closeText:"Zamknij",closeStatus:"Zamknij bez zapisywania",yearStatus:"Pokaż inny rok",monthStatus:"Pokaż inny miesiąc",weekText:"Tydz",weekStatus:"Tydzień roku",dayStatus:"'Wybierz' DD, M d",defaultStatus:"Wybierz datę",isRTL:!1},e.calendarsPicker.setDefaults(e.calendarsPicker.regionalOptions.pl)}(jQuery),function(e){e.calendarsPicker.regionalOptions["pt-BR"]={renderer:e.calendarsPicker.defaultRenderer,prevText:"<Anterior",prevStatus:"Mostra o mês anterior",prevJumpText:"<<",prevJumpStatus:"Mostra o ano anterior",nextText:"Próximo>",nextStatus:"Mostra o próximo mês",nextJumpText:">>",nextJumpStatus:"Mostra o próximo ano",currentText:"Atual",currentStatus:"Mostra o mês atual",todayText:"Hoje",todayStatus:"Vai para hoje",clearText:"Limpar",clearStatus:"Limpar data",closeText:"Fechar",closeStatus:"Fechar o calendário",yearStatus:"Selecionar ano",monthStatus:"Selecionar mês",weekText:"s",weekStatus:"Semana do ano",dayStatus:"DD, d 'de' M 'de' yyyy",defaultStatus:"Selecione um dia",isRTL:!1},e.calendarsPicker.setDefaults(e.calendarsPicker.regionalOptions["pt-BR"])}(jQuery),function(e){e.calendarsPicker.regionalOptions.rm={renderer:e.calendarsPicker.defaultRenderer,prevText:"<Suandant",prevStatus:"",prevJumpText:"<<",prevJumpStatus:"",nextText:"Precedent>",nextStatus:"",nextJumpText:">>",nextJumpStatus:"",currentText:"Actual",currentStatus:"",todayText:"Actual",todayStatus:"",clearText:"X",clearStatus:"",closeText:"Serrar",closeStatus:"",yearStatus:"",monthStatus:"",weekText:"emna",weekStatus:"",dayStatus:"DD d MM",defaultStatus:"",isRTL:!1},e.calendarsPicker.setDefaults(e.calendarsPicker.regionalOptions.rm)}(jQuery),function(e){e.calendarsPicker.regionalOptions.ro={renderer:e.calendarsPicker.defaultRenderer,prevText:"«Precedenta",prevStatus:"Arata luna precedenta",prevJumpText:"««",prevJumpStatus:"",nextText:"Urmatoare»",nextStatus:"Arata luna urmatoare",nextJumpText:"»»",nextJumpStatus:"",currentText:"Azi",currentStatus:"Arata luna curenta",todayText:"Azi",todayStatus:"Arata luna curenta",clearText:"Curat",clearStatus:"Sterge data curenta",closeText:"Închide",closeStatus:"Închide fara schimbare",yearStatus:"Arat un an diferit",monthStatus:"Arata o luna diferita",weekText:"Săpt",weekStatus:"Săptamana anului",dayStatus:"Selecteaza DD, M d",defaultStatus:"Selecteaza o data",isRTL:!1},e.calendarsPicker.setDefaults(e.calendarsPicker.regionalOptions.ro)}(jQuery),function(e){e.calendarsPicker.regionalOptions.ru={renderer:e.calendarsPicker.defaultRenderer,prevText:"<Пред",prevStatus:"",prevJumpText:"<<",prevJumpStatus:"",nextText:"След>",nextStatus:"",nextJumpText:">>",nextJumpStatus:"",currentText:"Сегодня",currentStatus:"",todayText:"Сегодня",todayStatus:"",clearText:"Очистить",clearStatus:"",closeText:"Закрыть",closeStatus:"",yearStatus:"",monthStatus:"",weekText:"Не",weekStatus:"",dayStatus:"DD, M d",defaultStatus:"",isRTL:!1},e.calendarsPicker.setDefaults(e.calendarsPicker.regionalOptions.ru)}(jQuery),function(e){e.calendarsPicker.regionalOptions.sk={renderer:e.calendarsPicker.defaultRenderer,prevText:"<Predchádzajúci",prevStatus:"",prevJumpText:"<<",prevJumpStatus:"",nextText:"Nasledujúci>",nextStatus:"",nextJumpText:">>",nextJumpStatus:"",currentText:"Dnes",currentStatus:"",todayText:"Dnes",todayStatus:"",clearText:"Zmazať",clearStatus:"",closeText:"Zavrieť",closeStatus:"",yearStatus:"",monthStatus:"",weekText:"Ty",weekStatus:"",dayStatus:"DD. M d",defaultStatus:"",isRTL:!1},e.calendarsPicker.setDefaults(e.calendarsPicker.regionalOptions.sk)}(jQuery),function(e){e.calendarsPicker.regionalOptions.sl={renderer:e.calendarsPicker.defaultRenderer,prevText:"<Prejšnji",prevStatus:"Prikaži prejšnji mesec",prevJumpText:"<<",prevJumpStatus:"",nextText:"Naslednji>",nextStatus:"Prikaži naslednji mesec",nextJumpText:">>",nextJumpStatus:"",currentText:"Trenutni",currentStatus:"Prikaži trenutni mesec",todayText:"Trenutni",todayStatus:"Prikaži trenutni mesec",clearText:"Izbriši",clearStatus:"Izbriši trenutni datum",closeText:"Zapri",closeStatus:"Zapri brez spreminjanja",yearStatus:"Prikaži drugo leto",monthStatus:"Prikaži drug mesec",weekText:"Teden",weekStatus:"Teden v letu",dayStatus:"Izberi DD, d MM yy",defaultStatus:"Izbira datuma",isRTL:!1},e.calendarsPicker.setDefaults(e.calendarsPicker.regionalOptions.sl)}(jQuery),function(e){e.calendarsPicker.regionalOptions.sq={renderer:e.calendarsPicker.defaultRenderer,prevText:"<mbrapa",prevStatus:"trego muajin e fundit",prevJumpText:"<<",prevJumpStatus:"",nextText:"Përpara>",nextStatus:"trego muajin tjetër",nextJumpText:">>",nextJumpStatus:"",currentText:"sot",currentStatus:"",todayText:"sot",todayStatus:"",clearText:"fshije",clearStatus:"fshije datën aktuale",closeText:"mbylle",closeStatus:"mbylle pa ndryshime",yearStatus:"trego tjetër vit",monthStatus:"trego muajin tjetër",weekText:"Ja",weekStatus:"Java e muajit",dayStatus:"'Zgjedh' D, M d",defaultStatus:"Zgjedhe një datë",isRTL:!1},e.calendarsPicker.setDefaults(e.calendarsPicker.regionalOptions.sq)}(jQuery),function(e){e.calendarsPicker.regionalOptions["sr-SR"]={renderer:e.calendarsPicker.defaultRenderer,prevText:"<",prevStatus:"Prikaži predhodni mesec",prevJumpText:"<<",prevJumpStatus:"Prikaži predhodnu godinu",nextText:">",nextStatus:"Prikaži sledeći mesec",nextJumpText:">>",nextJumpStatus:"Prikaži sledeću godinu",currentText:"Danas",currentStatus:"Tekući mesec",todayText:"Danas",todayStatus:"Tekući mesec",clearText:"Obriši",clearStatus:"Obriši trenutni datum",closeText:"Zatvori",closeStatus:"Zatvori kalendar",yearStatus:"Prikaži godine",monthStatus:"Prikaži mesece",weekText:"Sed",weekStatus:"Sedmica",dayStatus:"'Datum' DD, M d",defaultStatus:"Odaberi datum",isRTL:!1},e.calendarsPicker.setDefaults(e.calendarsPicker.regionalOptions["sr-SR"])}(jQuery),function(e){e.calendarsPicker.regionalOptions.sr={renderer:e.calendarsPicker.defaultRenderer,prevText:"<",prevStatus:"Прикажи предходни месец",prevJumpText:"<<",prevJumpStatus:"Прикажи предходну годину",nextText:">",nextStatus:"Прикажи слецећи месец",nextJumpText:">>",nextJumpStatus:"Прикажи следећу годину",currentText:"Данас",currentStatus:"Текући месец",todayText:"Данас",todayStatus:"Текући месец",clearText:"Обриши",clearStatus:"Обриши тренутни датум",closeText:"Затвори",closeStatus:"Затвори календар",yearStatus:"Прикажи године",monthStatus:"Прикажи месеце",weekText:"Сед",weekStatus:"Седмица",dayStatus:"'Датум' DD d MM",defaultStatus:"Одабери датум",isRTL:!1},e.calendarsPicker.setDefaults(e.calendarsPicker.regionalOptions.sr)}(jQuery),function(e){e.calendarsPicker.regionalOptions.sv={renderer:e.calendarsPicker.defaultRenderer,prevText:"«Förra",prevStatus:"",prevJumpText:"<<",prevJumpStatus:"",nextText:"Nästa»",nextStatus:"",nextJumpText:">>",nextJumpStatus:"",currentText:"Idag",currentStatus:"",todayText:"Idag",todayStatus:"",clearText:"Rensa",clearStatus:"",closeText:"Stäng",closeStatus:"",yearStatus:"",monthStatus:"",weekText:"Ve",weekStatus:"",dayStatus:"DD, M d",defaultStatus:"",isRTL:!1},e.calendarsPicker.setDefaults(e.calendarsPicker.regionalOptions.sv)}(jQuery),function(e){e.calendarsPicker.regionalOptions.ta={renderer:e.calendarsPicker.defaultRenderer,prevText:"முன்னையது",prevStatus:"",prevJumpText:"<<",prevJumpStatus:"",nextText:"அடுத்தது",nextStatus:"",nextJumpText:">>",nextJumpStatus:"",currentText:"இன்று",currentStatus:"",todayText:"இன்று",todayStatus:"",clearText:"அழி",clearStatus:"",closeText:"மூடு",closeStatus:"",yearStatus:"",monthStatus:"",weekText:"Wk",weekStatus:"",dayStatus:"D, M d",defaultStatus:"",isRTL:!1},e.calendarsPicker.setDefaults(e.calendarsPicker.regionalOptions.ta)}(jQuery),function(e){e.calendarsPicker.regionalOptions.th={renderer:e.calendarsPicker.defaultRenderer,prevText:"« ย้อน",prevStatus:"",prevJumpText:"<<",prevJumpStatus:"",nextText:"ถัดไป »",nextStatus:"",nextJumpText:">>",nextJumpStatus:"",currentText:"วันนี้",currentStatus:"",todayText:"วันนี้",todayStatus:"",clearText:"ลบ",clearStatus:"",closeText:"ปิด",closeStatus:"",yearStatus:"",monthStatus:"",weekText:"Wk",weekStatus:"",dayStatus:"DD, M d",defaultStatus:"",isRTL:!1},e.calendarsPicker.setDefaults(e.calendarsPicker.regionalOptions.th)}(jQuery),function(e){e.calendarsPicker.regionalOptions.tr={renderer:e.calendarsPicker.defaultRenderer,prevText:"<geri",prevStatus:"önceki ayı göster",prevJumpText:"<<",prevJumpStatus:"",nextText:"ileri>",nextStatus:"sonraki ayı göster",nextJumpText:">>",nextJumpStatus:"",currentText:"bugün",currentStatus:"",todayText:"bugün",todayStatus:"",clearText:"temizle",clearStatus:"geçerli tarihi temizler",closeText:"kapat",closeStatus:"sadece göstergeyi kapat",yearStatus:"başka yıl",monthStatus:"başka ay",weekText:"Hf",weekStatus:"Ayın haftaları",dayStatus:"D, M d seçiniz",defaultStatus:"Bir tarih seçiniz",isRTL:!1},e.calendarsPicker.setDefaults(e.calendarsPicker.regionalOptions.tr)}(jQuery),function(e){e.calendarsPicker.regionalOptions.tt={renderer:e.calendarsPicker.defaultRenderer,prevText:"Алдагы",prevStatus:"Алдагы айны күрсәтү",prevJumpText:"<<",prevJumpStatus:"Алдагы елны күрсәтү",nextText:"Киләсе",nextStatus:"Киләсе айны күрсәтү",nextJumpText:">>",nextJumpStatus:"Киләсе елны күрсәтү",currentText:"Хәзер",currentStatus:"Хәзерге айны күрсәтү",todayText:"Бүген",todayStatus:"Бүгенге айны күрсәтү",clearText:"Чистарту",clearStatus:"Барлык көннәрне чистарту",closeText:"Ябарга",closeStatus:"Көн сайлауны ябарга",yearStatus:"Елны кертегез",monthStatus:"Айны кертегез",weekText:"Атна",weekStatus:"Елда атна саны",dayStatus:"DD, M d",defaultStatus:"Көнне сайлагыз",isRTL:!1},e.calendarsPicker.setDefaults(e.calendarsPicker.regionalOptions.tt)}(jQuery),function(e){e.calendarsPicker.regionalOptions.uk={renderer:e.calendarsPicker.defaultRenderer,prevText:"<",prevStatus:"",prevJumpText:"<<",prevJumpStatus:"",nextText:">",nextStatus:"",nextJumpText:">>",nextJumpStatus:"",currentText:"Сьогодні",currentStatus:"",todayText:"Сьогодні",todayStatus:"",clearText:"Очистити",clearStatus:"",closeText:"Закрити",closeStatus:"",yearStatus:"",monthStatus:"",weekText:"Не",weekStatus:"",dayStatus:"DD, M d",defaultStatus:"",isRTL:!1},e.calendarsPicker.setDefaults(e.calendarsPicker.regionalOptions.uk)}(jQuery),function(e){e.calendarsPicker.regionalOptions.ur={renderer:e.calendarsPicker.defaultRenderer,prevText:"<گذشتہ",prevStatus:"ماه گذشتہ",prevJumpText:"<<",prevJumpStatus:"برس گذشتہ",nextText:"آئندہ>",nextStatus:"ماه آئندہ",nextJumpText:">>",nextJumpStatus:"برس آئندہ",currentText:"رواں",currentStatus:"ماه رواں",todayText:"آج",todayStatus:"آج",clearText:"حذف تاريخ",clearStatus:"کریں حذف تاریخ",closeText:"کریں بند",closeStatus:"کیلئے کرنے بند",yearStatus:"برس تبدیلی",monthStatus:"ماه تبدیلی",weekText:"ہفتہ",weekStatus:"ہفتہ",dayStatus:"انتخاب D, M d",defaultStatus:"کریں منتخب تاريخ",isRTL:!0},e.calendarsPicker.setDefaults(e.calendarsPicker.regionalOptions.ur)}(jQuery),function(e){e.calendarsPicker.regionalOptions.vi={renderer:e.calendarsPicker.defaultRenderer,prevText:"<Trước",prevStatus:"Tháng trước",prevJumpText:"<<",prevJumpStatus:"Năm trước",nextText:"Tiếp>",nextStatus:"Tháng sau",nextJumpText:">>",nextJumpStatus:"Năm sau",currentText:"Hôm nay",currentStatus:"Tháng hiện tại",todayText:"Hôm nay",todayStatus:"Tháng hiện tại",clearText:"Xóa",clearStatus:"Xóa ngày hiện tại",closeText:"Đóng",closeStatus:"Đóng và không lưu lại thay đổi",yearStatus:"Năm khác",monthStatus:"Tháng khác",weekText:"Tu",weekStatus:"Tuần trong năm",dayStatus:"Đang chọn DD, 'ngày' d M",defaultStatus:"Chọn ngày",isRTL:!1},e.calendarsPicker.setDefaults(e.calendarsPicker.regionalOptions.vi)}(jQuery),function(e){e.calendarsPicker.regionalOptions["zh-CN"]={renderer:e.extend({},e.calendarsPicker.defaultRenderer,{month:e.calendarsPicker.defaultRenderer.month.replace(/monthHeader/,"monthHeader:MM yyyy年")}),prevText:"<上月",prevStatus:"显示上月",prevJumpText:"<<",prevJumpStatus:"显示上一年",nextText:"下月>",nextStatus:"显示下月",nextJumpText:">>",nextJumpStatus:"显示下一年",currentText:"今天",currentStatus:"显示本月",todayText:"今天",todayStatus:"显示本月",clearText:"清除",clearStatus:"清除已选日期",closeText:"关闭",closeStatus:"不改变当前选择",yearStatus:"选择年份",monthStatus:"选择月份",weekText:"周",weekStatus:"年内周次",dayStatus:"选择 m月 d日, DD",defaultStatus:"请选择日期",isRTL:!1},e.calendarsPicker.setDefaults(e.calendarsPicker.regionalOptions["zh-CN"])}(jQuery),function(e){e.calendarsPicker.regionalOptions["zh-HK"]={renderer:e.extend({},e.calendarsPicker.defaultRenderer,{month:e.calendarsPicker.defaultRenderer.month.replace(/monthHeader/,"monthHeader:yyyy年 MM")}),prevText:"<上月",prevStatus:"顯示上月",prevJumpText:"<<",prevJumpStatus:"顯示上一年",nextText:"下月>",nextStatus:"顯示下月",nextJumpText:">>",nextJumpStatus:"顯示下一年",currentText:"今天",currentStatus:"顯示本月",todayText:"今天",todayStatus:"顯示本月",clearText:"清除",clearStatus:"清除已選日期",closeText:"關閉",closeStatus:"不改變目前的選擇",yearStatus:"選擇年份",monthStatus:"選擇月份",weekText:"周",weekStatus:"年內周次",dayStatus:"選擇 m月 d日, DD",defaultStatus:"請選擇日期",isRTL:!1},e.calendarsPicker.setDefaults(e.calendarsPicker.regionalOptions["zh-HK"])}(jQuery),function(e){e.calendarsPicker.regionalOptions["zh-TW"]={renderer:e.extend({},e.calendarsPicker.defaultRenderer,{month:e.calendarsPicker.defaultRenderer.month.replace(/monthHeader/,"monthHeader:MM yyyy年")}),prevText:"<上月",prevStatus:"顯示上月",prevJumpText:"<<",prevJumpStatus:"顯示上一年",nextText:"下月>",nextStatus:"顯示下月",nextJumpText:">>",nextJumpStatus:"顯示下一年",currentText:"今天",currentStatus:"顯示本月",todayText:"今天",todayStatus:"顯示本月",clearText:"清除",clearStatus:"清除已選日期",closeText:"關閉",closeStatus:"不改變目前的選擇",yearStatus:"選擇年份",monthStatus:"選擇月份",weekText:"周",weekStatus:"年內周次",dayStatus:"選擇 m月 d日, DD",defaultStatus:"請選擇日期",isRTL:!1},e.calendarsPicker.setDefaults(e.calendarsPicker.regionalOptions["zh-TW"])}(jQuery);
diff --git a/src/Orchard.Web/Modules/Orchard.Resources/Scripts/Calendars/jquery.calendars.picker.min.js b/src/Orchard.Web/Modules/Orchard.Resources/Scripts/Calendars/jquery.calendars.picker.min.js
index ccf000801..d703fbcf1 100644
--- a/src/Orchard.Web/Modules/Orchard.Resources/Scripts/Calendars/jquery.calendars.picker.min.js
+++ b/src/Orchard.Web/Modules/Orchard.Resources/Scripts/Calendars/jquery.calendars.picker.min.js
@@ -1 +1 @@
-!function(e){var t="calendarsPicker";e.JQPlugin.createPlugin({name:t,defaultRenderer:{picker:'
{link:prev}{link:today}{link:next}
{months}{popup:start}
{link:clear}{link:close}
{popup:end}
',monthRow:'
{months}
',month:'
{monthHeader}
{weekHeader}{weeks}
',weekHeader:"
{days}
",dayHeader:"
{day}
",week:"
{days}
",day:"
{day}
",monthSelector:".calendars-month",daySelector:"td",rtlClass:"calendars-rtl",multiClass:"calendars-multi",defaultClass:"",selectedClass:"calendars-selected",highlightedClass:"calendars-highlight",todayClass:"calendars-today",otherMonthClass:"calendars-other-month",weekendClass:"calendars-weekend",commandClass:"calendars-cmd",commandButtonClass:"",commandLinkClass:"",disabledClass:"calendars-disabled"},commands:{prev:{text:"prevText",status:"prevStatus",keystroke:{keyCode:33},enabled:function(e){var t=e.curMinDate();return!t||-1!==e.drawDate.newDate().add(1-e.options.monthsToStep-e.options.monthsOffset,"m").day(e.options.calendar.minDay).add(-1,"d").compareTo(t)},date:function(e){return e.drawDate.newDate().add(-e.options.monthsToStep-e.options.monthsOffset,"m").day(e.options.calendar.minDay)},action:function(e){a.changeMonth(this,-e.options.monthsToStep)}},prevJump:{text:"prevJumpText",status:"prevJumpStatus",keystroke:{keyCode:33,ctrlKey:!0},enabled:function(e){var t=e.curMinDate();return!t||-1!==e.drawDate.newDate().add(1-e.options.monthsToJump-e.options.monthsOffset,"m").day(e.options.calendar.minDay).add(-1,"d").compareTo(t)},date:function(e){return e.drawDate.newDate().add(-e.options.monthsToJump-e.options.monthsOffset,"m").day(e.options.calendar.minDay)},action:function(e){a.changeMonth(this,-e.options.monthsToJump)}},next:{text:"nextText",status:"nextStatus",keystroke:{keyCode:34},enabled:function(e){var t=e.get("maxDate");return!t||1!==e.drawDate.newDate().add(e.options.monthsToStep-e.options.monthsOffset,"m").day(e.options.calendar.minDay).compareTo(t)},date:function(e){return e.drawDate.newDate().add(e.options.monthsToStep-e.options.monthsOffset,"m").day(e.options.calendar.minDay)},action:function(e){a.changeMonth(this,e.options.monthsToStep)}},nextJump:{text:"nextJumpText",status:"nextJumpStatus",keystroke:{keyCode:34,ctrlKey:!0},enabled:function(e){var t=e.get("maxDate");return!t||1!==e.drawDate.newDate().add(e.options.monthsToJump-e.options.monthsOffset,"m").day(e.options.calendar.minDay).compareTo(t)},date:function(e){return e.drawDate.newDate().add(e.options.monthsToJump-e.options.monthsOffset,"m").day(e.options.calendar.minDay)},action:function(e){a.changeMonth(this,e.options.monthsToJump)}},current:{text:"currentText",status:"currentStatus",keystroke:{keyCode:36,ctrlKey:!0},enabled:function(e){var t=e.curMinDate(),a=e.get("maxDate"),n=e.selectedDates[0]||e.options.calendar.today();return!(t&&-1===n.compareTo(t)||a&&1===n.compareTo(a))},date:function(e){return e.selectedDates[0]||e.options.calendar.today()},action:function(e){var t=e.selectedDates[0]||e.options.calendar.today();a.showMonth(this,t.year(),t.month())}},today:{text:"todayText",status:"todayStatus",keystroke:{keyCode:36,ctrlKey:!0},enabled:function(e){var t=e.curMinDate(),a=e.get("maxDate");return!(t&&-1===e.options.calendar.today().compareTo(t)||a&&1===e.options.calendar.today().compareTo(a))},date:function(e){return e.options.calendar.today()},action:function(e){a.showMonth(this)}},clear:{text:"clearText",status:"clearStatus",keystroke:{keyCode:35,ctrlKey:!0},enabled:function(e){return!0},date:function(e){return null},action:function(e){a.clear(this)}},close:{text:"closeText",status:"closeStatus",keystroke:{keyCode:27},enabled:function(e){return!0},date:function(e){return null},action:function(e){a.hide(this)}},prevWeek:{text:"prevWeekText",status:"prevWeekStatus",keystroke:{keyCode:38,ctrlKey:!0},enabled:function(e){var t=e.curMinDate();return!t||-1!==e.drawDate.newDate().add(-e.options.calendar.daysInWeek(),"d").compareTo(t)},date:function(e){return e.drawDate.newDate().add(-e.options.calendar.daysInWeek(),"d")},action:function(e){a.changeDay(this,-e.options.calendar.daysInWeek())}},prevDay:{text:"prevDayText",status:"prevDayStatus",keystroke:{keyCode:37,ctrlKey:!0},enabled:function(e){var t=e.curMinDate();return!t||-1!==e.drawDate.newDate().add(-1,"d").compareTo(t)},date:function(e){return e.drawDate.newDate().add(-1,"d")},action:function(e){a.changeDay(this,-1)}},nextDay:{text:"nextDayText",status:"nextDayStatus",keystroke:{keyCode:39,ctrlKey:!0},enabled:function(e){var t=e.get("maxDate");return!t||1!==e.drawDate.newDate().add(1,"d").compareTo(t)},date:function(e){return e.drawDate.newDate().add(1,"d")},action:function(e){a.changeDay(this,1)}},nextWeek:{text:"nextWeekText",status:"nextWeekStatus",keystroke:{keyCode:40,ctrlKey:!0},enabled:function(e){var t=e.get("maxDate");return!t||1!==e.drawDate.newDate().add(e.options.calendar.daysInWeek(),"d").compareTo(t)},date:function(e){return e.drawDate.newDate().add(e.options.calendar.daysInWeek(),"d")},action:function(e){a.changeDay(this,e.options.calendar.daysInWeek())}}},defaultOptions:{calendar:e.calendars.instance(),pickerClass:"",showOnFocus:!0,showTrigger:null,showAnim:"show",showOptions:{},showSpeed:"normal",popupContainer:null,alignment:"bottom",fixedWeeks:!1,firstDay:null,calculateWeek:null,monthsToShow:1,monthsOffset:0,monthsToStep:1,monthsToJump:12,useMouseWheel:!0,changeMonth:!0,yearRange:"c-10:c+10",showOtherMonths:!1,selectOtherMonths:!1,defaultDate:null,selectDefaultDate:!1,minDate:null,maxDate:null,dateFormat:null,autoSize:!1,rangeSelect:!1,rangeSeparator:" - ",multiSelect:0,multiSeparator:",",onDate:null,onShow:null,onChangeMonthYear:null,onSelect:null,onClose:null,altField:null,altFormat:null,constrainInput:!0,commandsAsDateFormat:!1,commands:{}},regionalOptions:{"":{renderer:{},prevText:"<Prev",prevStatus:"Show the previous month",prevJumpText:"<<",prevJumpStatus:"Show the previous year",nextText:"Next>",nextStatus:"Show the next month",nextJumpText:">>",nextJumpStatus:"Show the next year",currentText:"Current",currentStatus:"Show the current month",todayText:"Today",todayStatus:"Show today's month",clearText:"Clear",clearStatus:"Clear all the dates",closeText:"Close",closeStatus:"Close the datepicker",yearStatus:"Change the year",earlierText:" ▲",laterText:" ▼",monthStatus:"Change the month",weekText:"Wk",weekStatus:"Week of the year",dayStatus:"Select DD, M d, yyyy",defaultStatus:"Select a date",isRTL:!1}},_getters:["getDate","isDisabled","isSelectable","retrieveDate"],_disabled:[],_popupClass:"calendars-popup",_triggerClass:"calendars-trigger",_disableClass:"calendars-disable",_monthYearClass:"calendars-month-year",_curMonthClass:"calendars-month-",_anyYearClass:"calendars-any-year",_curDoWClass:"calendars-dow-",_init:function(){this.defaultOptions.commands=this.commands,this.regionalOptions[""].renderer=this.defaultRenderer,this._super()},_instSettings:function(t,a){return{selectedDates:[],drawDate:null,pickingRange:!1,inline:e.inArray(t[0].nodeName.toLowerCase(),["div","span"])>-1,get:function(t){return e.inArray(t,["defaultDate","minDate","maxDate"])>-1?this.options.calendar.determineDate(this.options[t],null,this.selectedDates[0],this.get("dateFormat"),this.getConfig()):"dateFormat"===t?this.options.dateFormat||this.options.calendar.local.dateFormat:this.options[t]},curMinDate:function(){return this.pickingRange?this.selectedDates[0]:this.get("minDate")},getConfig:function(){return{dayNamesShort:this.options.dayNamesShort,dayNames:this.options.dayNames,monthNamesShort:this.options.monthNamesShort,monthNames:this.options.monthNames,calculateWeek:this.options.calculateWeek,shortYearCutoff:this.options.shortYearCutoff}}}},_postAttach:function(t,n){n.inline?(n.drawDate=a._checkMinMax((n.selectedDates[0]||n.get("defaultDate")||n.options.calendar.today()).newDate(),n),n.prevDate=n.drawDate.newDate(),this._update(t[0]),e.fn.mousewheel&&t.mousewheel(this._doMouseWheel)):(this._attachments(t,n),t.on("keydown."+n.name,this._keyDown).on("keypress."+n.name,this._keyPress).on("keyup."+n.name,this._keyUp),t.attr("disabled")&&this.disable(t[0]))},_optionsChanged:function(t,a,n){if(n.calendar&&n.calendar!==a.options.calendar){var s=function(e){return"object"==typeof a.options[e]?null:a.options[e]};n=e.extend({defaultDate:s("defaultDate"),minDate:s("minDate"),maxDate:s("maxDate")},n),a.selectedDates=[],a.drawDate=null}var o=a.selectedDates;e.extend(a.options,n),this.setDate(t[0],o,null,!1,!0),a.pickingRange=!1;var r=a.options.calendar,i=a.get("defaultDate");a.drawDate=this._checkMinMax((i?i:a.drawDate)||i||r.today(),a).newDate(),a.inline||this._attachments(t,a),(a.inline||a.div)&&this._update(t[0])},_attachments:function(t,n){t.off("focus."+n.name),n.options.showOnFocus&&t.on("focus."+n.name,this.show),n.trigger&&n.trigger.remove();var s=n.options.showTrigger;n.trigger=s?e(s).clone().removeAttr("id").addClass(this._triggerClass)[n.options.isRTL?"insertBefore":"insertAfter"](t).click(function(){a.isDisabled(t[0])||a[a.curInst===n?"hide":"show"](t[0])}):e([]),this._autoSize(t,n);var o=this._extractDates(n,t.val());o&&this.setDate(t[0],o,null,!0);var r=n.get("defaultDate");n.options.selectDefaultDate&&r&&0===n.selectedDates.length&&this.setDate(t[0],(r||n.options.calendar.today()).newDate())},_autoSize:function(e,t){if(t.options.autoSize&&!t.inline){var a=t.options.calendar,n=a.newDate(2009,10,20),s=t.get("dateFormat");if(s.match(/[DM]/)){var o=function(e){for(var t=0,a=0,n=0;nt&&(t=e[n].length,a=n);return a};n.month(o(a.local[s.match(/MM/)?"monthNames":"monthNamesShort"])+1),n.day(o(a.local[s.match(/DD/)?"dayNames":"dayNamesShort"])+20-n.dayOfWeek())}t.elem.attr("size",n.formatDate(s).length)}},_preDestroy:function(t,a){a.trigger&&a.trigger.remove(),t.empty().off("."+a.name),a.inline&&e.fn.mousewheel&&t.unmousewheel(),!a.inline&&a.options.autoSize&&t.removeAttr("size")},multipleEvents:function(e){var t=arguments;return function(e){for(var a=0;a').find("button,select").prop("disabled",!0).end().find("a").removeAttr("href")}else t.prop("disabled",!0),a.trigger.filter("button."+this._triggerClass).prop("disabled",!0).end().filter("img."+this._triggerClass).css({opacity:"0.5",cursor:"default"});this._disabled=e.map(this._disabled,function(e){return e===t[0]?null:e}),this._disabled.push(t[0])}},isDisabled:function(t){return t&&e.inArray(t,this._disabled)>-1},show:function(t){t=e(t.target||t);var n=a._getInst(t);if(a.curInst!==n&&(a.curInst&&a.hide(a.curInst,!0),!e.isEmptyObject(n))){n.lastVal=null,n.selectedDates=a._extractDates(n,t.val()),n.pickingRange=!1,n.drawDate=a._checkMinMax((n.selectedDates[0]||n.get("defaultDate")||n.options.calendar.today()).newDate(),n),n.prevDate=n.drawDate.newDate(),a.curInst=n,a._update(t[0],!0);var s=a._checkOffset(n);n.div.css({left:s.left,top:s.top});var o=n.options.showAnim,r=n.options.showSpeed;if(r="normal"===r&&e.ui&&parseInt(e.ui.version.substring(2))>=8?"_default":r,e.effects&&(e.effects[o]||e.effects.effect&&e.effects.effect[o])){var i=n.div.data();for(var l in i)l.match(/^ec\.storage\./)&&(i[l]=n._mainDiv.css(l.replace(/ec\.storage\./,"")));n.div.data(i).show(o,n.options.showOptions,r)}else n.div[o||"show"](o?r:0)}},_extractDates:function(e,t){if(t!==e.lastVal){e.lastVal=t,t=t.split(e.options.multiSelect?e.options.multiSeparator:e.options.rangeSelect?e.options.rangeSeparator:"\x00");for(var a=[],n=0;n").addClass(this._popupClass).css({display:n?"none":"static",position:"absolute",left:t.offset().left,top:t.offset().top+t.outerHeight()}).appendTo(e(s.options.popupContainer||"body")),e.fn.mousewheel&&s.div.mousewheel(this._doMouseWheel)),s.div.html(this._generateContent(t[0],s)),t.focus())},_updateInput:function(t,a){var n=this._getInst(t);if(!e.isEmptyObject(n)){for(var s="",o="",r=n.options.multiSelect?n.options.multiSeparator:n.options.rangeSeparator,i=n.options.calendar,l=n.get("dateFormat"),d=n.options.altFormat||l,c=0;c0?r:"")+i.formatDate(l,n.selectedDates[c]),o+=(c>0?r:"")+i.formatDate(d,n.selectedDates[c]);n.inline||a||e(t).val(s),e(n.options.altField).val(o),!e.isFunction(n.options.onSelect)||a||n.inSelect||(n.inSelect=!0,n.options.onSelect.apply(t,[n.selectedDates]),n.inSelect=!1)}},_getBorders:function(e){var t=function(e){return{thin:1,medium:3,thick:5}[e]||e};return[parseFloat(t(e.css("border-left-width"))),parseFloat(t(e.css("border-top-width")))]},_checkOffset:function(t){var a=t.elem.is(":hidden")&&t.trigger?t.trigger:t.elem,n=a.offset(),s=e(window).width(),o=e(window).height();if(0===s)return n;var r=!1;e(t.elem).parents().each(function(){return r|="fixed"===e(this).css("position"),!r});var i=document.documentElement.scrollLeft||document.body.scrollLeft,l=document.documentElement.scrollTop||document.body.scrollTop,d=n.top-(r?l:0)-t.div.outerHeight(),c=n.top-(r?l:0)+a.outerHeight(),p=n.left-(r?i:0),h=n.left-(r?i:0)+a.outerWidth()-t.div.outerWidth(),u=n.left-i+t.div.outerWidth()>s,m=n.top-l+t.elem.outerHeight()+t.div.outerHeight()>o;t.div.css("position",r?"fixed":"absolute");var f=t.options.alignment;return n="topLeft"===f?{left:p,top:d}:"topRight"===f?{left:h,top:d}:"bottomLeft"===f?{left:p,top:c}:"bottomRight"===f?{left:h,top:c}:"top"===f?{left:t.options.isRTL||u?h:p,top:d}:{left:t.options.isRTL||u?h:p,top:m?d:c},n.left=Math.max(r?0:i,n.left),n.top=Math.max(r?0:l,n.top),n},_checkExternalClick:function(t){if(a.curInst){var n=e(t.target);0!==n.closest("."+a._popupClass+",."+a._triggerClass).length||n.hasClass(a._getMarker())||a.hide(a.curInst)}},hide:function(t,n){if(t){var s=this._getInst(t);if(e.isEmptyObject(s)&&(s=t),s&&s===a.curInst){var o=n?"":s.options.showAnim,r=s.options.showSpeed;r="normal"===r&&e.ui&&parseInt(e.ui.version.substring(2))>=8?"_default":r;var i=function(){s.div&&(s.div.remove(),s.div=null,a.curInst=null,e.isFunction(s.options.onClose)&&s.options.onClose.apply(t,[s.selectedDates]))};if(s.div.stop(),e.effects&&(e.effects[o]||e.effects.effect&&e.effects.effect[o]))s.div.hide(o,s.options.showOptions,r,i);else{var l="slideDown"===o?"slideUp":"fadeIn"===o?"fadeOut":"hide";s.div[l](o?r:"",i)}o||i()}}},_keyDown:function(t){var n=t.data&&t.data.elem||t.target,s=a._getInst(n),o=!1;if(s.inline||s.div)if(9===t.keyCode)a.hide(n);else if(13===t.keyCode)a.selectDate(n,e("a."+s.options.renderer.highlightedClass,s.div)[0]),o=!0;else{var r=s.options.commands;for(var i in r){var l=r[i];if(l.keystroke.keyCode===t.keyCode&&!!l.keystroke.ctrlKey==!(!t.ctrlKey&&!t.metaKey)&&!!l.keystroke.altKey===t.altKey&&!!l.keystroke.shiftKey===t.shiftKey){a.performAction(n,i),o=!0;break}}}else{var l=s.options.commands.current;l.keystroke.keyCode===t.keyCode&&!!l.keystroke.ctrlKey==!(!t.ctrlKey&&!t.metaKey)&&!!l.keystroke.altKey===t.altKey&&!!l.keystroke.shiftKey===t.shiftKey&&(a.show(n),o=!0)}return s.ctrlKey=t.keyCode<48&&32!==t.keyCode||t.ctrlKey||t.metaKey,o&&(t.preventDefault(),t.stopPropagation()),!o},_keyPress:function(t){var n=a._getInst(t.data&&t.data.elem||t.target);if(!e.isEmptyObject(n)&&n.options.constrainInput){var s=String.fromCharCode(t.keyCode||t.charCode),o=a._allowedChars(n);return t.metaKey||n.ctrlKey||" ">s||!o||o.indexOf(s)>-1}return!0},_allowedChars:function(e){for(var t=e.options.multiSelect?e.options.multiSeparator:e.options.rangeSelect?e.options.rangeSeparator:"",a=!1,n=!1,s=e.get("dateFormat"),o=0;o0&&a.setDate(n,o,null,!0)}catch(t){}return!0},_doMouseWheel:function(t,n){var s=a.curInst&&a.curInst.elem[0]||e(t.target).closest("."+a._getMarker())[0];if(!a.isDisabled(s)){var o=a._getInst(s);o.options.useMouseWheel&&(n=0>n?-1:1,a.changeMonth(s,-o.options[t.ctrlKey?"monthsToJump":"monthsToStep"]*n)),t.preventDefault()}},clear:function(t){var a=this._getInst(t);if(!e.isEmptyObject(a)){a.selectedDates=[],this.hide(t);var n=a.get("defaultDate");a.options.selectDefaultDate&&n?this.setDate(t,(n||a.options.calendar.today()).newDate()):this._updateInput(t)}},getDate:function(t){var a=this._getInst(t);return e.isEmptyObject(a)?[]:a.selectedDates},setDate:function(t,a,n,s,o){var r=this._getInst(t);if(!e.isEmptyObject(r)){e.isArray(a)||(a=[a],n&&a.push(n));var i=r.get("minDate"),l=r.get("maxDate"),d=r.selectedDates[0];r.selectedDates=[];for(var c=0;c=s.toJD())&&(!o||a.toJD()<=o.toJD())},performAction:function(t,a){var n=this._getInst(t);if(!e.isEmptyObject(n)&&!this.isDisabled(t)){var s=n.options.commands;s[a]&&s[a].enabled.apply(t,[n])&&s[a].action.apply(t,[n])}},showMonth:function(t,a,n,s){var o=this._getInst(t);if(!e.isEmptyObject(o)&&(null!=s||o.drawDate.year()!==a||o.drawDate.month()!==n)){o.prevDate=o.drawDate.newDate();var r=o.options.calendar,i=this._checkMinMax(null!=a?r.newDate(a,n,1):r.today(),o);o.drawDate.date(i.year(),i.month(),null!=s?s:Math.min(o.drawDate.day(),r.daysInMonth(i.year(),i.month()))),this._update(t)}},changeMonth:function(t,a){var n=this._getInst(t);if(!e.isEmptyObject(n)){var s=n.drawDate.newDate().add(a,"m");this.showMonth(t,s.year(),s.month())}},changeDay:function(t,a){var n=this._getInst(t);if(!e.isEmptyObject(n)){var s=n.drawDate.newDate().add(a,"d");this.showMonth(t,s.year(),s.month(),s.day())}},_checkMinMax:function(e,t){var a=t.get("minDate"),n=t.get("maxDate");return e=a&&-1===e.compareTo(a)?a.newDate():e,e=n&&1===e.compareTo(n)?n.newDate():e},retrieveDate:function(t,a){var n=this._getInst(t);return e.isEmptyObject(n)?null:n.options.calendar.fromJD(parseFloat(a.className.replace(/^.*jd(\d+\.5).*$/,"$1")))},selectDate:function(t,a){var n=this._getInst(t);if(!e.isEmptyObject(n)&&!this.isDisabled(t)){var s=this.retrieveDate(t,a);if(n.options.multiSelect){for(var o=!1,r=0;r'+(l?l.formatDate(n.options[i.text]):n.options[i.text])+""+s+">")}};for(var u in n.options.commands)h("button",'button type="button"',"button",u,n.options.renderer.commandButtonClass),h("link",'a href="javascript:void(0)"',"a",u,n.options.renderer.commandLinkClass);if(p=e(p),o[1]>1){var m=0;e(n.options.renderer.monthSelector,p).each(function(){var t=++m%o[1];e(this).addClass(1===t?"first":0===t?"last":"")})}var f=this;p.find(n.options.renderer.daySelector+" a").hover(function(){s.apply(this),e(this).addClass(n.options.renderer.highlightedClass)},s).click(function(){f.selectDate(t,this)}).end().find("select."+this._monthYearClass+":not(."+this._anyYearClass+")").change(function(){var a=e(this).val().split("/");f.showMonth(t,parseInt(a[1],10),parseInt(a[0],10))}).end().find("select."+this._anyYearClass).click(function(){e(this).css("visibility","hidden").next("input").css({left:this.offsetLeft,top:this.offsetTop,width:this.offsetWidth,height:this.offsetHeight}).show().focus()}).end().find("input."+f._monthYearClass).change(function(){try{var a=parseInt(e(this).val(),10);a=isNaN(a)?n.drawDate.year():a,f.showMonth(t,a,n.drawDate.month(),n.drawDate.day())}catch(s){alert(s)}}).keydown(function(t){13===t.keyCode?e(t.elem).change():27===t.keyCode&&(e(t.elem).hide().prev("select").css("visibility","visible"),n.elem.focus())});var y={elem:n.elem[0]};p.keydown(y,this._keyDown).keypress(y,this._keyPress).keyup(y,this._keyUp),p.find("."+n.options.renderer.commandClass).click(function(){if(!e(this).hasClass(n.options.renderer.disabledClass)){var s=this.className.replace(new RegExp("^.*"+n.options.renderer.commandClass+"-([^ ]+).*$"),"$1");a.performAction(t,s)}}),n.options.isRTL&&p.addClass(n.options.renderer.rtlClass),o[0]*o[1]>1&&p.addClass(n.options.renderer.multiClass),n.options.pickerClass&&p.addClass(n.options.pickerClass),e("body").append(p);var D=0;return p.find(n.options.renderer.monthSelector).each(function(){D+=e(this).outerWidth()}),p.width(D/o[0]),e.isFunction(n.options.onShow)&&n.options.onShow.apply(t,[p,n.options.calendar,n]),p},_generateMonth:function(t,a,n,s,o,r,i){var l=o.daysInMonth(n,s),d=a.options.monthsToShow;d=e.isArray(d)?d:[1,d];var c=a.options.fixedWeeks||d[0]*d[1]>1,p=a.options.firstDay;p=null==p?o.local.firstDay:p;var h=(o.dayOfWeek(n,s,o.minDay)-p+o.daysInWeek())%o.daysInWeek(),u=c?6:Math.ceil((h+l)/o.daysInWeek()),m=a.options.selectOtherMonths&&a.options.showOtherMonths,f=a.pickingRange?a.selectedDates[0]:a.get("minDate"),y=a.get("maxDate"),D=r.week.indexOf("{weekOfYear}")>-1,g=o.today(),v=o.newDate(n,s,o.minDay);v.add(-h-(c&&(v.dayOfWeek()===p||v.daysInMonth()_;_++){for(var C=D?''+(e.isFunction(a.options.calculateWeek)?a.options.calculateWeek(v):v.weekOfYear())+"":"",x="",b=0;b0)S=-1!==v.compareTo(a.selectedDates[0])&&1!==v.compareTo(a.selectedDates[1]);else for(var M=0;M"+(a.options.showOtherMonths||v.month()===s?T.content||v.day():" ")+(I?"":"")),v.add(1,"d"),k++}w+=this._prepare(r.week,a).replace(/\{days\}/g,x).replace(/\{weekOfYear\}/g,C)}var O=this._prepare(r.month,a).match(/\{monthHeader(:[^\}]+)?\}/);O=O[0].length<=13?"MM yyyy":O[0].substring(13,O[0].length-1),O=i?this._generateMonthSelection(a,n,s,f,y,O,o,r):o.formatDate(O,o.newDate(n,s,o.minDay));var W=this._prepare(r.weekHeader,a).replace(/\{days\}/g,this._generateDayHeaders(a,o,r));return this._prepare(r.month,a).replace(/\{monthHeader(:[^\}]+)?\}/g,O).replace(/\{weekHeader\}/g,W).replace(/\{weeks\}/g,w)},_generateDayHeaders:function(e,t,a){var n=e.options.firstDay;n=null==n?t.local.firstDay:n;for(var s="",o=0;o'+t.local.dayNamesMin[r]+"")}return s},_generateMonthSelection:function(e,t,a,n,s,o,r){if(!e.options.changeMonth)return r.formatDate(o,r.newDate(t,a,1));for(var i=r.local["monthNames"+(o.match(/mm/i)?"":"Short")],l=o.replace(/m+/i,"\\x2E").replace(/y+/i,"\\x2F"),d='",l=l.replace(/\\x2E/,d);var h=e.options.yearRange;if("any"===h)d='';else{h=h.split(":");var u=r.today().year(),m=h[0].match("c[+-].*")?t+parseInt(h[0].substring(1),10):(h[0].match("[+-].*")?u:0)+parseInt(h[0],10),f=h[1].match("c[+-].*")?t+parseInt(h[1].substring(1),10):(h[1].match("[+-].*")?u:0)+parseInt(h[1],10);d='