@po-ui/ng-components 6.5.0 → 6.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/components/po-calendar/po-calendar-wrapper/po-calendar-wrapper.component.mjs +3 -3
- package/esm2020/lib/components/po-chart/interfaces/po-chart-serie.interface.mjs +1 -1
- package/esm2020/lib/components/po-field/po-combo/po-combo-base.component.mjs +2 -2
- package/esm2020/lib/components/po-field/po-combo/po-combo.component.mjs +3 -3
- package/esm2020/lib/components/po-field/po-lookup/po-lookup-modal/po-lookup-modal-base.component.mjs +2 -1
- package/esm2020/lib/components/po-field/po-radio-group/po-radio-group-base.component.mjs +5 -2
- package/esm2020/lib/components/po-field/po-radio-group/po-radio-group.component.mjs +2 -1
- package/esm2020/lib/components/po-field/po-rich-text/po-rich-text-toolbar/po-rich-text-toolbar.component.mjs +5 -3
- package/esm2020/lib/services/po-color/po-color.service.mjs +3 -2
- package/fesm2015/po-ui-ng-components.mjs +18 -9
- package/fesm2015/po-ui-ng-components.mjs.map +1 -1
- package/fesm2020/po-ui-ng-components.mjs +17 -9
- package/fesm2020/po-ui-ng-components.mjs.map +1 -1
- package/lib/components/po-chart/interfaces/po-chart-serie.interface.d.ts +3 -0
- package/lib/components/po-field/po-radio-group/po-radio-group-base.component.d.ts +1 -0
- package/lib/services/po-color/po-color.service.d.ts +1 -0
- package/package.json +4 -4
- package/po-ui-ng-components-6.7.0.tgz +0 -0
- package/schematics/ng-add/index.js +1 -1
- package/schematics/ng-update/v2/index.js +1 -1
- package/schematics/ng-update/v3/index.js +1 -1
- package/schematics/ng-update/v4/index.js +1 -1
- package/schematics/ng-update/v5/index.js +1 -1
- package/schematics/ng-update/v6/index.js +1 -1
- package/po-ui-ng-components-6.5.0.tgz +0 -0
package/esm2020/lib/components/po-calendar/po-calendar-wrapper/po-calendar-wrapper.component.mjs
CHANGED
|
@@ -385,7 +385,7 @@ export class PoCalendarWrapperComponent {
|
|
|
385
385
|
}
|
|
386
386
|
}
|
|
387
387
|
PoCalendarWrapperComponent.ɵfac = function PoCalendarWrapperComponent_Factory(t) { return new (t || PoCalendarWrapperComponent)(i0.ɵɵdirectiveInject(i1.PoCalendarService), i0.ɵɵdirectiveInject(i2.PoCalendarLangService), i0.ɵɵdirectiveInject(i3.PoDateService)); };
|
|
388
|
-
PoCalendarWrapperComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PoCalendarWrapperComponent, selectors: [["po-calendar-wrapper"]], inputs: { value: ["p-value", "value"], mode: ["p-mode", "mode"], responsive: ["p-responsive", "responsive"], partType: ["p-part-type", "partType"], range: ["p-range", "range"], activateDate: ["p-activate-date", "activateDate"], selectedValue: ["p-selected-value", "selectedValue"], minDate: ["p-min-date", "minDate"], maxDate: ["p-max-date", "maxDate"], hoverValue: ["p-hover-value", "hoverValue"], locale: ["p-locale", "locale"] }, outputs: { headerChange: "p-header-change", selectDate: "p-select-date", hoverDate: "p-hover-date" }, features: [i0.ɵɵProvidersFeature([PoCalendarService]), i0.ɵɵNgOnChangesFeature], decls: 5, vars: 4, consts: [[1, "po-calendar-wrapper"], [4, "ngIf"], [3, "p-hide-previous", "p-hide-next", "p-previous", "p-next"], [1, "po-clickable", "po-mr-1", 3, "click"], [1, "po-clickable", 3, "click"], [1, "po-calendar-content"], [1, "po-calendar-labels"], ["class", "po-calendar-label", 4, "ngFor", "ngForOf"], [1, "po-calendar-content-list-day"], ["class", "po-calendar-day", "attr-calendar", "", 3, "ngClass", "click", "mouseenter", "mouseleave", 4, "ngFor", "ngForOf"], [1, "po-calendar-label"], ["attr-calendar", "", 1, "po-calendar-day", 3, "ngClass", "click", "mouseenter", "mouseleave"], [3, "ngClass", 4, "ngIf"], [3, "ngClass"], [3, "p-previous", "p-next"], [1, "po-calendar-content-list-month"], ["class", "po-calendar-month", "attr-calendar", "", 3, "ngClass", "click", 4, "ngFor", "ngForOf"], ["attr-calendar", "", 1, "po-calendar-month", 3, "ngClass", "click"], [1, "po-calendar-content-list-year"], ["class", "po-calendar-year", "attr-calendar", "", 3, "ngClass", "click", 4, "ngFor", "ngForOf"], ["attr-calendar", "", 1, "po-calendar-year", 3, "ngClass", "click"], [1, "po-calendar-footer"], [1, "po-calendar-footer-today"], [1, "po-calendar-footer-today-button", 3, "disabled", "click"]], template: function PoCalendarWrapperComponent_Template(rf, ctx) { if (rf & 1) {
|
|
388
|
+
PoCalendarWrapperComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PoCalendarWrapperComponent, selectors: [["po-calendar-wrapper"]], inputs: { value: ["p-value", "value"], mode: ["p-mode", "mode"], responsive: ["p-responsive", "responsive"], partType: ["p-part-type", "partType"], range: ["p-range", "range"], activateDate: ["p-activate-date", "activateDate"], selectedValue: ["p-selected-value", "selectedValue"], minDate: ["p-min-date", "minDate"], maxDate: ["p-max-date", "maxDate"], hoverValue: ["p-hover-value", "hoverValue"], locale: ["p-locale", "locale"] }, outputs: { headerChange: "p-header-change", selectDate: "p-select-date", hoverDate: "p-hover-date" }, features: [i0.ɵɵProvidersFeature([PoCalendarService]), i0.ɵɵNgOnChangesFeature], decls: 5, vars: 4, consts: [[1, "po-calendar-wrapper"], [4, "ngIf"], [3, "p-hide-previous", "p-hide-next", "p-previous", "p-next"], [1, "po-clickable", "po-mr-1", 3, "click"], [1, "po-clickable", 3, "click"], [1, "po-calendar-content"], [1, "po-calendar-labels"], ["class", "po-calendar-label", 4, "ngFor", "ngForOf"], [1, "po-calendar-content-list-day"], ["class", "po-calendar-day", "attr-calendar", "", 3, "ngClass", "click", "mouseenter", "mouseleave", 4, "ngFor", "ngForOf"], [1, "po-calendar-label"], ["attr-calendar", "", 1, "po-calendar-day", 3, "ngClass", "click", "mouseenter", "mouseleave"], [3, "ngClass", 4, "ngIf"], [3, "ngClass"], [3, "p-previous", "p-next"], [1, "po-calendar-content-list-month"], ["class", "po-calendar-month", "attr-calendar", "", 3, "ngClass", "click", 4, "ngFor", "ngForOf"], ["attr-calendar", "", 1, "po-calendar-month", 3, "ngClass", "click"], [1, "po-calendar-content-list-year"], ["class", "po-calendar-year", "attr-calendar", "", 3, "ngClass", "click", 4, "ngFor", "ngForOf"], ["attr-calendar", "", 1, "po-calendar-year", 3, "ngClass", "click"], [1, "po-calendar-footer"], [1, "po-calendar-footer-today"], ["type", "button", 1, "po-calendar-footer-today-button", 3, "disabled", "click"]], template: function PoCalendarWrapperComponent_Template(rf, ctx) { if (rf & 1) {
|
|
389
389
|
i0.ɵɵelementStart(0, "div", 0);
|
|
390
390
|
i0.ɵɵtemplate(1, PoCalendarWrapperComponent_ng_container_1_Template, 11, 6, "ng-container", 1);
|
|
391
391
|
i0.ɵɵtemplate(2, PoCalendarWrapperComponent_ng_container_2_Template, 10, 3, "ng-container", 1);
|
|
@@ -404,7 +404,7 @@ PoCalendarWrapperComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type:
|
|
|
404
404
|
} }, directives: [i4.NgIf, i5.PoCalendarHeaderComponent, i4.NgForOf, i4.NgClass], encapsulation: 2, changeDetection: 0 });
|
|
405
405
|
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PoCalendarWrapperComponent, [{
|
|
406
406
|
type: Component,
|
|
407
|
-
args: [{ selector: 'po-calendar-wrapper', providers: [PoCalendarService], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"po-calendar-wrapper\">\n <ng-container *ngIf=\"isDayVisible\">\n <po-calendar-header\n [p-hide-previous]=\"isEndPart\"\n [p-hide-next]=\"isStartPart && !responsive\"\n (p-previous)=\"onPreviousMonth()\"\n (p-next)=\"onNextMonth()\"\n >\n <span class=\"po-clickable po-mr-1\" (click)=\"selectDisplayMode('month')\">{{ displayMonth }}</span>\n <span class=\"po-clickable\" (click)=\"selectDisplayMode('year')\">{{ displayYear }}</span>\n </po-calendar-header>\n\n <div class=\"po-calendar-content\">\n <div class=\"po-calendar-labels\">\n <div class=\"po-calendar-label\" *ngFor=\"let weekDay of displayWeekDays\">\n {{ weekDay }}\n </div>\n </div>\n\n <div class=\"po-calendar-content-list-day\">\n <div\n *ngFor=\"let day of displayDays\"\n class=\"po-calendar-day\"\n [ngClass]=\"getDayBackgroundColor(day)\"\n (click)=\"onSelectDate(day)\"\n (mouseenter)=\"onMouseEnter(day)\"\n (mouseleave)=\"onMouseLeave()\"\n attr-calendar\n >\n <span *ngIf=\"day !== 0\" [ngClass]=\"getDayForegroundColor(day)\">\n {{ day.getDate() }}\n </span>\n </div>\n </div>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"isMonthVisible\">\n <po-calendar-header (p-previous)=\"updateYear(-1)\" (p-next)=\"updateYear(1)\">\n <span class=\"po-clickable\" (click)=\"selectDisplayMode('year')\">\n {{ displayYear }}\n </span>\n </po-calendar-header>\n\n <div class=\"po-calendar-content\">\n <div class=\"po-calendar-labels\">\n <div class=\"po-calendar-label\">\n {{ monthLabel }}\n </div>\n </div>\n <div class=\"po-calendar-content-list-month\">\n <div\n *ngFor=\"let month of displayMonths; let i = index\"\n class=\"po-calendar-month\"\n [ngClass]=\"getBackgroundColor(i, displayMonthNumber)\"\n (click)=\"onSelectMonth(displayYear, i)\"\n attr-calendar\n >\n <span [ngClass]=\"getForegroundColor(i, displayMonthNumber)\">\n {{ month }}\n </span>\n </div>\n </div>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"isYearVisible\">\n <po-calendar-header (p-previous)=\"updateYear(-10)\" (p-next)=\"updateYear(10)\">\n {{ displayStartDecade }} - {{ displayFinalDecade }}\n </po-calendar-header>\n\n <div class=\"po-calendar-content\">\n <div class=\"po-calendar-labels\">\n <div class=\"po-calendar-label\">\n {{ yearLabel }}\n </div>\n </div>\n\n <div class=\"po-calendar-content-list-year\">\n <div\n *ngFor=\"let year of displayDecade; let i = index\"\n class=\"po-calendar-year\"\n [ngClass]=\"getBackgroundColor(year, currentYear)\"\n (click)=\"onSelectYear(year, displayMonthNumber)\"\n attr-calendar\n >\n <span [ngClass]=\"getForegroundColor(year, currentYear)\">\n {{ year }}\n </span>\n </div>\n </div>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"!range\">\n <div class=\"po-calendar-footer\">\n <div class=\"po-calendar-footer-today\">\n <button
|
|
407
|
+
args: [{ selector: 'po-calendar-wrapper', providers: [PoCalendarService], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"po-calendar-wrapper\">\n <ng-container *ngIf=\"isDayVisible\">\n <po-calendar-header\n [p-hide-previous]=\"isEndPart\"\n [p-hide-next]=\"isStartPart && !responsive\"\n (p-previous)=\"onPreviousMonth()\"\n (p-next)=\"onNextMonth()\"\n >\n <span class=\"po-clickable po-mr-1\" (click)=\"selectDisplayMode('month')\">{{ displayMonth }}</span>\n <span class=\"po-clickable\" (click)=\"selectDisplayMode('year')\">{{ displayYear }}</span>\n </po-calendar-header>\n\n <div class=\"po-calendar-content\">\n <div class=\"po-calendar-labels\">\n <div class=\"po-calendar-label\" *ngFor=\"let weekDay of displayWeekDays\">\n {{ weekDay }}\n </div>\n </div>\n\n <div class=\"po-calendar-content-list-day\">\n <div\n *ngFor=\"let day of displayDays\"\n class=\"po-calendar-day\"\n [ngClass]=\"getDayBackgroundColor(day)\"\n (click)=\"onSelectDate(day)\"\n (mouseenter)=\"onMouseEnter(day)\"\n (mouseleave)=\"onMouseLeave()\"\n attr-calendar\n >\n <span *ngIf=\"day !== 0\" [ngClass]=\"getDayForegroundColor(day)\">\n {{ day.getDate() }}\n </span>\n </div>\n </div>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"isMonthVisible\">\n <po-calendar-header (p-previous)=\"updateYear(-1)\" (p-next)=\"updateYear(1)\">\n <span class=\"po-clickable\" (click)=\"selectDisplayMode('year')\">\n {{ displayYear }}\n </span>\n </po-calendar-header>\n\n <div class=\"po-calendar-content\">\n <div class=\"po-calendar-labels\">\n <div class=\"po-calendar-label\">\n {{ monthLabel }}\n </div>\n </div>\n <div class=\"po-calendar-content-list-month\">\n <div\n *ngFor=\"let month of displayMonths; let i = index\"\n class=\"po-calendar-month\"\n [ngClass]=\"getBackgroundColor(i, displayMonthNumber)\"\n (click)=\"onSelectMonth(displayYear, i)\"\n attr-calendar\n >\n <span [ngClass]=\"getForegroundColor(i, displayMonthNumber)\">\n {{ month }}\n </span>\n </div>\n </div>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"isYearVisible\">\n <po-calendar-header (p-previous)=\"updateYear(-10)\" (p-next)=\"updateYear(10)\">\n {{ displayStartDecade }} - {{ displayFinalDecade }}\n </po-calendar-header>\n\n <div class=\"po-calendar-content\">\n <div class=\"po-calendar-labels\">\n <div class=\"po-calendar-label\">\n {{ yearLabel }}\n </div>\n </div>\n\n <div class=\"po-calendar-content-list-year\">\n <div\n *ngFor=\"let year of displayDecade; let i = index\"\n class=\"po-calendar-year\"\n [ngClass]=\"getBackgroundColor(year, currentYear)\"\n (click)=\"onSelectYear(year, displayMonthNumber)\"\n attr-calendar\n >\n <span [ngClass]=\"getForegroundColor(year, currentYear)\">\n {{ year }}\n </span>\n </div>\n </div>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"!range\">\n <div class=\"po-calendar-footer\">\n <div class=\"po-calendar-footer-today\">\n <button\n type=\"button\"\n class=\"po-calendar-footer-today-button\"\n (click)=\"onSelectDate(today)\"\n [disabled]=\"isTodayUnavailable()\"\n >\n {{ displayToday }}\n </button>\n </div>\n </div>\n </ng-container>\n</div>\n" }]
|
|
408
408
|
}], function () { return [{ type: i1.PoCalendarService }, { type: i2.PoCalendarLangService }, { type: i3.PoDateService }]; }, { value: [{
|
|
409
409
|
type: Input,
|
|
410
410
|
args: ['p-value']
|
|
@@ -448,4 +448,4 @@ PoCalendarWrapperComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type:
|
|
|
448
448
|
type: Input,
|
|
449
449
|
args: ['p-locale']
|
|
450
450
|
}] }); })();
|
|
451
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tY2FsZW5kYXItd3JhcHBlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2NvbXBvbmVudHMvcG8tY2FsZW5kYXIvcG8tY2FsZW5kYXItd3JhcHBlci9wby1jYWxlbmRhci13cmFwcGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby1jYWxlbmRhci9wby1jYWxlbmRhci13cmFwcGVyL3BvLWNhbGVuZGFyLXdyYXBwZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkgsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHOUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUNBQWlDLENBQUM7Ozs7Ozs7O0lDUTVELCtCQUF1RTtJQUNyRSxZQUNGO0lBQUEsaUJBQU07OztJQURKLGVBQ0Y7SUFERSwyQ0FDRjs7O0lBYUUsZ0NBQStEO0lBQzdELFlBQ0Y7SUFBQSxpQkFBTzs7OztJQUZpQiw4REFBc0M7SUFDNUQsZUFDRjtJQURFLGlEQUNGOzs7O0lBWEYsK0JBUUM7SUFKQyxpUEFBUyw0QkFBaUIsSUFBQyw4T0FDYiw0QkFBaUIsSUFESixvTEFFYixzQkFBYyxJQUZEO0lBSzNCLG9HQUVPO0lBQ1QsaUJBQU07Ozs7SUFUSiw4REFBc0M7SUFNL0IsZUFBZTtJQUFmLG1DQUFlOzs7O0lBNUI5Qiw2QkFBbUM7SUFDakMsNkNBS0M7SUFGQyx3TUFBYyx5QkFBaUIsSUFBQyxtTEFDdEIscUJBQWEsSUFEUztJQUdoQywrQkFBd0U7SUFBckMsZ0xBQVMsMEJBQWtCLE9BQU8sQ0FBQyxJQUFDO0lBQUMsWUFBa0I7SUFBQSxpQkFBTztJQUNqRywrQkFBK0Q7SUFBcEMsZ0xBQVMsMEJBQWtCLE1BQU0sQ0FBQyxJQUFDO0lBQUMsWUFBaUI7SUFBQSxpQkFBTyxFQUFBO0lBR3pGLDhCQUFpQyxhQUFBO0lBRTdCLDBGQUVNO0lBQ1IsaUJBQU07SUFFTiw4QkFBMEM7SUFDeEMsNEZBWU07SUFDUixpQkFBTSxFQUFBO0lBRVYsMEJBQWU7OztJQWhDWCxlQUE2QjtJQUE3QixrREFBNkIseURBQUE7SUFLMkMsZUFBa0I7SUFBbEIseUNBQWtCO0lBQzNCLGVBQWlCO0lBQWpCLHdDQUFpQjtJQUszQixlQUFrQjtJQUFsQixnREFBa0I7SUFPbkQsZUFBYztJQUFkLDRDQUFjOzs7O0lBOEJoQywrQkFNQztJQUZDLDJPQUFTLGlEQUE2QixJQUFDO0lBR3ZDLGdDQUE0RDtJQUMxRCxZQUNGO0lBQUEsaUJBQU8sRUFBQTs7Ozs7SUFOUCx1RkFBcUQ7SUFJL0MsZUFBcUQ7SUFBckQsdUZBQXFEO0lBQ3pELGVBQ0Y7SUFERSwwQ0FDRjs7OztJQXZCUiw2QkFBcUM7SUFDbkMsOENBQTJFO0lBQXZELHdNQUFjLG9CQUFZLENBQUMsQ0FBQyxJQUFDLG1MQUFXLG1CQUFXLENBQUMsQ0FBQyxJQUF4QjtJQUMvQywrQkFBK0Q7SUFBcEMsZ0xBQVMsMEJBQWtCLE1BQU0sQ0FBQyxJQUFDO0lBQzVELFlBQ0Y7SUFBQSxpQkFBTyxFQUFBO0lBR1QsOEJBQWlDLGFBQUEsY0FBQTtJQUczQixZQUNGO0lBQUEsaUJBQU0sRUFBQTtJQUVSLCtCQUE0QztJQUMxQywyRkFVTTtJQUNSLGlCQUFNLEVBQUE7SUFFViwwQkFBZTs7O0lBeEJULGVBQ0Y7SUFERSxtREFDRjtJQU1JLGVBQ0Y7SUFERSxrREFDRjtJQUlvQixlQUFrQjtJQUFsQiw4Q0FBa0I7Ozs7SUEyQnRDLCtCQU1DO0lBRkMsa1BBQVMsMERBQXNDLElBQUM7SUFHaEQsZ0NBQXdEO0lBQ3RELFlBQ0Y7SUFBQSxpQkFBTyxFQUFBOzs7O0lBTlAsbUZBQWlEO0lBSTNDLGVBQWlEO0lBQWpELG1GQUFpRDtJQUNyRCxlQUNGO0lBREUseUNBQ0Y7Ozs7SUF0QlIsNkJBQW9DO0lBQ2xDLDhDQUE2RTtJQUF6RCx3TUFBYyxvQkFBWSxFQUFFLENBQUMsSUFBQyxtTEFBVyxtQkFBVyxFQUFFLENBQUMsSUFBekI7SUFDaEQsWUFDRjtJQUFBLGlCQUFxQjtJQUVyQiw4QkFBaUMsYUFBQSxjQUFBO0lBRzNCLFlBQ0Y7SUFBQSxpQkFBTSxFQUFBO0lBR1IsK0JBQTJDO0lBQ3pDLDJGQVVNO0lBQ1IsaUJBQU0sRUFBQTtJQUVWLDBCQUFlOzs7SUF4QlgsZUFDRjtJQURFLDRGQUNGO0lBS00sZUFDRjtJQURFLGlEQUNGO0lBS21CLGVBQWtCO0lBQWxCLDhDQUFrQjs7OztJQWMzQyw2QkFBNkI7SUFDM0IsK0JBQWdDLGNBQUEsaUJBQUE7SUFFb0Isa0xBQVMsbUNBQW1CLElBQUM7SUFDM0UsWUFDRjtJQUFBLGlCQUFTLEVBQUEsRUFBQTtJQUdmLDBCQUFlOzs7SUFMcUUsZUFBaUM7SUFBakMsc0RBQWlDO0lBQzdHLGVBQ0Y7SUFERSxvREFDRjs7QURwRlIsTUFBTSxPQUFPLDBCQUEwQjtJQW1GckMsWUFDVSxpQkFBb0MsRUFDcEMscUJBQTRDLEVBQzVDLE1BQXFCO1FBRnJCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF1QjtRQUM1QyxXQUFNLEdBQU4sTUFBTSxDQUFlO1FBbkZkLFNBQUksR0FBNkIsS0FBSyxDQUFDO1FBRWpDLGVBQVUsR0FBWSxLQUFLLENBQUM7UUFJakMsVUFBSyxHQUFZLEtBQUssQ0FBQztRQUVmLGlCQUFZLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQVV6QixpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFFekMsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFFdEMsY0FBUyxHQUFHLElBQUksT0FBTyxFQUFRLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBUWhGLGtCQUFhLEdBQWUsS0FBSyxFQUFFLENBQUM7UUFFcEMsb0JBQWUsR0FBZSxLQUFLLEVBQUUsQ0FBQztRQUd0QyxVQUFLLEdBQVMsSUFBSSxJQUFJLEVBQUUsQ0FBQztJQWlEdEIsQ0FBQztJQXpDSixJQUF1QixNQUFNLENBQUMsS0FBYTtRQUN6QyxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUNyQixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFBSSxNQUFNO1FBQ1IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7SUFFRCxJQUFJLFVBQVU7UUFDWixPQUFPLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUNwRCxDQUFDO0lBRUQsSUFBSSxTQUFTO1FBQ1gsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDbkQsQ0FBQztJQUVELElBQUksWUFBWTtRQUNkLE9BQU8sSUFBSSxDQUFDLElBQUksS0FBSyxLQUFLLENBQUM7SUFDN0IsQ0FBQztJQUVELElBQUksY0FBYztRQUNoQixPQUFPLElBQUksQ0FBQyxJQUFJLEtBQUssT0FBTyxDQUFDO0lBQy9CLENBQUM7SUFFRCxJQUFJLGFBQWE7UUFDZixPQUFPLElBQUksQ0FBQyxJQUFJLEtBQUssTUFBTSxDQUFDO0lBQzlCLENBQUM7SUFFRCxJQUFJLFdBQVc7UUFDYixPQUFPLElBQUksQ0FBQyxRQUFRLEtBQUssT0FBTyxDQUFDO0lBQ25DLENBQUM7SUFFRCxJQUFJLFNBQVM7UUFDWCxPQUFPLElBQUksQ0FBQyxRQUFRLEtBQUssS0FBSyxDQUFDO0lBQ2pDLENBQUM7SUFRRCxRQUFRO1FBQ04sSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2QsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFPO1FBQ2pCLE1BQU0sRUFBRSxZQUFZLEVBQUUsR0FBRyxPQUFPLENBQUM7UUFFakMsSUFBSSxZQUFZLEVBQUU7WUFDaEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDNUM7SUFDSCxDQUFDO0lBRUQsa0JBQWtCLENBQUMsWUFBb0IsRUFBRSxhQUFxQjtRQUM1RCxPQUFPLFlBQVksS0FBSyxhQUFhLENBQUMsQ0FBQyxDQUFDLHFDQUFxQyxDQUFDLENBQUMsQ0FBQyw0QkFBNEIsQ0FBQztJQUMvRyxDQUFDO0lBRUQscUJBQXFCLENBQUMsSUFBVTtRQUM5QixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxxQkFBcUIsQ0FBQyxJQUFVO1FBQzlCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELGtCQUFrQixDQUFDLFlBQW9CLEVBQUUsYUFBcUI7UUFDNUQsT0FBTyxZQUFZLEtBQUssYUFBYSxDQUFDLENBQUMsQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDLENBQUMsNEJBQTRCLENBQUM7SUFDL0csQ0FBQztJQUVELGtCQUFrQjtRQUNoQixPQUFPLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDaEUsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsRUFBRTtZQUMxQixDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxDQUFDLENBQUM7WUFDbkUsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFaEQsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUNyRixDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksSUFBSSxDQUFDLGtCQUFrQixHQUFHLENBQUMsRUFBRTtZQUMvQixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixHQUFHLENBQUMsQ0FBQyxDQUFDO1NBQ25FO2FBQU07WUFDTCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1NBQzlDO1FBRUQsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUNyRixDQUFDO0lBRUQsWUFBWSxDQUFDLEdBQUc7UUFDRSxJQUFJLENBQUMsU0FBVSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsWUFBWTtRQUNNLElBQUksQ0FBQyxTQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCx5QkFBeUI7SUFDekIsWUFBWSxDQUFDLElBQVU7UUFDckIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVELHVCQUF1QjtJQUN2QixhQUFhLENBQUMsSUFBWSxFQUFFLEtBQWE7UUFDdkMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzlCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRWhDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVELHVCQUF1QjtJQUN2QixZQUFZLENBQUMsSUFBWSxFQUFFLEtBQWE7UUFDdEMsb0NBQW9DO1FBQ3BDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsV0FBVyxLQUFLLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUV2RSxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztRQUN4QixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztRQUVoQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxJQUE4QjtRQUM5QyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDN0IsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7SUFDbkIsQ0FBQztJQUVELFVBQVUsQ0FBQyxLQUFhO1FBQ3RCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUVPLG1CQUFtQixDQUFDLElBQVk7UUFDdEMsSUFBSSxDQUFDLENBQUM7UUFDTixLQUFLLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxHQUFHLElBQUksR0FBRyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDakMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDNUI7SUFDSCxDQUFDO0lBRU8sVUFBVSxDQUFDLEtBQVcsRUFBRSxLQUFXO1FBQ3pDLElBQUk7WUFDRixPQUFPLENBQ0wsS0FBSyxDQUFDLFdBQVcsRUFBRSxLQUFLLEtBQUssQ0FBQyxXQUFXLEVBQUU7Z0JBQzNDLEtBQUssQ0FBQyxRQUFRLEVBQUUsS0FBSyxLQUFLLENBQUMsUUFBUSxFQUFFO2dCQUNyQyxLQUFLLENBQUMsT0FBTyxFQUFFLEtBQUssS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUNwQyxDQUFDO1NBQ0g7UUFBQyxPQUFPLEtBQUssRUFBRTtZQUNkLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7SUFDSCxDQUFDO0lBRUQsK0NBQStDO0lBQ3ZDLGNBQWMsQ0FBQyxJQUFJO1FBQ3pCLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxFQUFFLENBQUM7UUFFN0IsSUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRTtZQUNuQixPQUFPLElBQUksR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFO2dCQUN0QixJQUFJLEVBQUUsQ0FBQzthQUNSO1NBQ0Y7UUFDRCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFTyxlQUFlLENBQUMsSUFBVSxFQUFFLEtBQWE7UUFDL0MsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUM7WUFDcEUsQ0FBQyxDQUFDLG1CQUFtQixLQUFLLFdBQVc7WUFDckMsQ0FBQyxDQUFDLG1CQUFtQixLQUFLLG9CQUFvQixDQUFDO0lBQ25ELENBQUM7SUFFTyxzQkFBc0IsQ0FBQyxJQUFVLEVBQUUsS0FBYTtRQUN0RCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQztZQUNwRSxDQUFDLENBQUMsbUJBQW1CLEtBQUssRUFBRTtZQUM1QixDQUFDLENBQUMsbUJBQW1CLEtBQUssV0FBVyxDQUFDO0lBQzFDLENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxJQUFVLEVBQUUsS0FBYTtRQUNoRCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQztZQUNwRSxDQUFDLENBQUMsbUJBQW1CLEtBQUssUUFBUTtZQUNsQyxDQUFDLENBQUMsbUJBQW1CLEtBQUssaUJBQWlCLENBQUM7SUFDaEQsQ0FBQztJQUVPLG9CQUFvQixDQUFDLElBQVUsRUFBRSxLQUFhO1FBQ3BELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDO1lBQ3BFLENBQUMsQ0FBQyxtQkFBbUIsS0FBSyxXQUFXO1lBQ3JDLENBQUMsQ0FBQyxtQkFBbUIsS0FBSyxvQkFBb0IsQ0FBQztJQUNuRCxDQUFDO0lBRU8sV0FBVyxDQUFDLElBQVUsRUFBRSxLQUFhO1FBQzNDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsS0FBSyxDQUFDO1FBQ3hDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsR0FBRyxDQUFDO1FBRXBDLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUU7WUFDOUUsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztTQUMxQzthQUFNLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxLQUFLLElBQUksR0FBRyxJQUFJLElBQUksR0FBRyxLQUFLLElBQUksSUFBSSxHQUFHLEdBQUcsRUFBRTtZQUNuRSxPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDL0M7YUFBTSxJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksS0FBSyxJQUFJLENBQUMsR0FBRyxJQUFJLElBQUksR0FBRyxLQUFLLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDaEYsT0FBTyxtQkFBbUIsS0FBSyxRQUFRLENBQUM7U0FDekM7YUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDM0QsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztTQUMxQzthQUFNLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQzVDLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztTQUMzQzthQUFNO1lBQ0wsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1NBQ2pEO0lBQ0gsQ0FBQztJQUVPLElBQUk7UUFDVixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNuQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVPLGtCQUFrQjtRQUN4QixJQUFJLENBQUMscUJBQXFCLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNwRCxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3JFLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ2pFLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUNoRSxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUNqRSxDQUFDO0lBRU8sVUFBVSxDQUFDLFFBQWMsSUFBSSxJQUFJLEVBQUU7UUFDekMsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFN0IsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUMxQyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUN0QyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVPLFlBQVksQ0FBQyxJQUFZO1FBQy9CLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMvQixJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDO1FBQy9CLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFTyxhQUFhLENBQUMsSUFBWSxFQUFFLEtBQWE7UUFDL0MsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDcEUsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFDdEQsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEtBQUssQ0FBQztRQUNoQyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDOUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7UUFDeEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM1QixDQUFDOztvR0FqU1UsMEJBQTBCOzZFQUExQiwwQkFBMEIsZ21CQUgxQixDQUFDLGlCQUFpQixDQUFDO1FDWmhDLDhCQUFpQztRQUMvQiw4RkFrQ2U7UUFFZiw4RkEyQmU7UUFFZiw2RkEwQmU7UUFFZiw2RkFRZTtRQUNqQixpQkFBTTs7UUF0R1csZUFBa0I7UUFBbEIsdUNBQWtCO1FBb0NsQixlQUFvQjtRQUFwQix5Q0FBb0I7UUE2QnBCLGVBQW1CO1FBQW5CLHdDQUFtQjtRQTRCbkIsZUFBWTtRQUFaLGlDQUFZOzt1RkQvRWhCLDBCQUEwQjtjQU50QyxTQUFTOzJCQUNFLHFCQUFxQixhQUVwQixDQUFDLGlCQUFpQixDQUFDLG1CQUNiLHVCQUF1QixDQUFDLE1BQU07b0lBRzdCLEtBQUs7a0JBQXRCLEtBQUs7bUJBQUMsU0FBUztZQUVDLElBQUk7a0JBQXBCLEtBQUs7bUJBQUMsUUFBUTtZQUVRLFVBQVU7a0JBQWhDLEtBQUs7bUJBQUMsY0FBYztZQUVDLFFBQVE7a0JBQTdCLEtBQUs7bUJBQUMsYUFBYTtZQUVGLEtBQUs7a0JBQXRCLEtBQUs7bUJBQUMsU0FBUztZQUVVLFlBQVk7a0JBQXJDLEtBQUs7bUJBQUMsaUJBQWlCO1lBRUcsYUFBYTtrQkFBdkMsS0FBSzttQkFBQyxrQkFBa0I7WUFFSixPQUFPO2tCQUEzQixLQUFLO21CQUFDLFlBQVk7WUFFRSxPQUFPO2tCQUEzQixLQUFLO21CQUFDLFlBQVk7WUFFSyxVQUFVO2tCQUFqQyxLQUFLO21CQUFDLGVBQWU7WUFFSyxZQUFZO2tCQUF0QyxNQUFNO21CQUFDLGlCQUFpQjtZQUVBLFVBQVU7a0JBQWxDLE1BQU07bUJBQUMsZUFBZTtZQUVDLFNBQVM7a0JBQWhDLE1BQU07bUJBQUMsY0FBYztZQXFCQyxNQUFNO2tCQUE1QixLQUFLO21CQUFDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgUG9DYWxlbmRhckxhbmdTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvcG8tY2FsZW5kYXIubGFuZy5zZXJ2aWNlJztcbmltcG9ydCB7IFBvQ2FsZW5kYXJTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvcG8tY2FsZW5kYXIuc2VydmljZSc7XG5pbXBvcnQgeyBQb0RhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvcG8tZGF0ZS9wby1kYXRlLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwby1jYWxlbmRhci13cmFwcGVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3BvLWNhbGVuZGFyLXdyYXBwZXIuY29tcG9uZW50Lmh0bWwnLFxuICBwcm92aWRlcnM6IFtQb0NhbGVuZGFyU2VydmljZV0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFBvQ2FsZW5kYXJXcmFwcGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICBASW5wdXQoJ3AtdmFsdWUnKSB2YWx1ZTtcblxuICBASW5wdXQoJ3AtbW9kZScpIG1vZGU6ICdkYXknIHwgJ21vbnRoJyB8ICd5ZWFyJyA9ICdkYXknO1xuXG4gIEBJbnB1dCgncC1yZXNwb25zaXZlJykgcmVzcG9uc2l2ZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgncC1wYXJ0LXR5cGUnKSBwYXJ0VHlwZTogJ3N0YXJ0JyB8ICdlbmQnO1xuXG4gIEBJbnB1dCgncC1yYW5nZScpIHJhbmdlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQElucHV0KCdwLWFjdGl2YXRlLWRhdGUnKSBhY3RpdmF0ZURhdGUgPSBuZXcgRGF0ZSgpO1xuXG4gIEBJbnB1dCgncC1zZWxlY3RlZC12YWx1ZScpIHNlbGVjdGVkVmFsdWU7XG5cbiAgQElucHV0KCdwLW1pbi1kYXRlJykgbWluRGF0ZTtcblxuICBASW5wdXQoJ3AtbWF4LWRhdGUnKSBtYXhEYXRlO1xuXG4gIEBJbnB1dCgncC1ob3Zlci12YWx1ZScpIGhvdmVyVmFsdWU6IERhdGU7XG5cbiAgQE91dHB1dCgncC1oZWFkZXItY2hhbmdlJykgaGVhZGVyQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgQE91dHB1dCgncC1zZWxlY3QtZGF0ZScpIHNlbGVjdERhdGUgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBAT3V0cHV0KCdwLWhvdmVyLWRhdGUnKSBob3ZlckRhdGUgPSBuZXcgU3ViamVjdDxEYXRlPigpLnBpcGUoZGVib3VuY2VUaW1lKDEwMCkpO1xuXG4gIGN1cnJlbnRZZWFyOiBudW1iZXI7XG4gIGRpc3BsYXlEYXlzOiBBcnJheTxudW1iZXI+O1xuICBkaXNwbGF5RGVjYWRlOiBBcnJheTxudW1iZXI+O1xuICBkaXNwbGF5RmluYWxEZWNhZGU6IG51bWJlcjtcbiAgZGlzcGxheU1vbnRoOiBhbnk7XG4gIGRpc3BsYXlNb250aE51bWJlcjogbnVtYmVyO1xuICBkaXNwbGF5TW9udGhzOiBBcnJheTxhbnk+ID0gQXJyYXkoKTtcbiAgZGlzcGxheVN0YXJ0RGVjYWRlOiBudW1iZXI7XG4gIGRpc3BsYXlXZWVrRGF5czogQXJyYXk8YW55PiA9IEFycmF5KCk7XG4gIGRpc3BsYXlZZWFyOiBudW1iZXI7XG4gIGRpc3BsYXlUb2RheTogc3RyaW5nO1xuICB0b2RheTogRGF0ZSA9IG5ldyBEYXRlKCk7XG5cbiAgcHJvdGVjdGVkIGN1cnJlbnRNb250aE51bWJlcjogbnVtYmVyO1xuICBwcm90ZWN0ZWQgZGF0ZTogRGF0ZTtcbiAgcHJvdGVjdGVkIGxhc3REaXNwbGF5OiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBfbG9jYWxlOiBzdHJpbmc7XG5cbiAgQElucHV0KCdwLWxvY2FsZScpIHNldCBsb2NhbGUodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX2xvY2FsZSA9IHZhbHVlO1xuICAgIHRoaXMuaW5pdGlhbGl6ZUxhbmd1YWdlKCk7XG4gIH1cblxuICBnZXQgbG9jYWxlKCkge1xuICAgIHJldHVybiB0aGlzLl9sb2NhbGU7XG4gIH1cblxuICBnZXQgbW9udGhMYWJlbCgpIHtcbiAgICByZXR1cm4gdGhpcy5wb0NhbGVuZGFyTGFuZ1NlcnZpY2UuZ2V0TW9udGhMYWJlbCgpO1xuICB9XG5cbiAgZ2V0IHllYXJMYWJlbCgpIHtcbiAgICByZXR1cm4gdGhpcy5wb0NhbGVuZGFyTGFuZ1NlcnZpY2UuZ2V0WWVhckxhYmVsKCk7XG4gIH1cblxuICBnZXQgaXNEYXlWaXNpYmxlKCkge1xuICAgIHJldHVybiB0aGlzLm1vZGUgPT09ICdkYXknO1xuICB9XG5cbiAgZ2V0IGlzTW9udGhWaXNpYmxlKCkge1xuICAgIHJldHVybiB0aGlzLm1vZGUgPT09ICdtb250aCc7XG4gIH1cblxuICBnZXQgaXNZZWFyVmlzaWJsZSgpIHtcbiAgICByZXR1cm4gdGhpcy5tb2RlID09PSAneWVhcic7XG4gIH1cblxuICBnZXQgaXNTdGFydFBhcnQoKSB7XG4gICAgcmV0dXJuIHRoaXMucGFydFR5cGUgPT09ICdzdGFydCc7XG4gIH1cblxuICBnZXQgaXNFbmRQYXJ0KCkge1xuICAgIHJldHVybiB0aGlzLnBhcnRUeXBlID09PSAnZW5kJztcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcG9DYWxlbmRhclNlcnZpY2U6IFBvQ2FsZW5kYXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcG9DYWxlbmRhckxhbmdTZXJ2aWNlOiBQb0NhbGVuZGFyTGFuZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBwb0RhdGU6IFBvRGF0ZVNlcnZpY2VcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuaW5pdCgpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlcykge1xuICAgIGNvbnN0IHsgYWN0aXZhdGVEYXRlIH0gPSBjaGFuZ2VzO1xuXG4gICAgaWYgKGFjdGl2YXRlRGF0ZSkge1xuICAgICAgdGhpcy51cGRhdGVEYXRlKGFjdGl2YXRlRGF0ZS5jdXJyZW50VmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIGdldEJhY2tncm91bmRDb2xvcihkaXNwbGF5VmFsdWU6IG51bWJlciwgcHJvcGVydHlWYWx1ZTogbnVtYmVyKSB7XG4gICAgcmV0dXJuIGRpc3BsYXlWYWx1ZSA9PT0gcHJvcGVydHlWYWx1ZSA/ICdwby1jYWxlbmRhci1ib3gtYmFja2dyb3VuZC1zZWxlY3RlZCcgOiAncG8tY2FsZW5kYXItYm94LWJhY2tncm91bmQnO1xuICB9XG5cbiAgZ2V0RGF5QmFja2dyb3VuZENvbG9yKGRhdGU6IERhdGUpIHtcbiAgICByZXR1cm4gdGhpcy5nZXREYXlDb2xvcihkYXRlLCAnYmFja2dyb3VuZCcpO1xuICB9XG5cbiAgZ2V0RGF5Rm9yZWdyb3VuZENvbG9yKGRhdGU6IERhdGUpIHtcbiAgICByZXR1cm4gdGhpcy5nZXREYXlDb2xvcihkYXRlLCAnZm9yZWdyb3VuZCcpO1xuICB9XG5cbiAgZ2V0Rm9yZWdyb3VuZENvbG9yKGRpc3BsYXlWYWx1ZTogbnVtYmVyLCBwcm9wZXJ0eVZhbHVlOiBudW1iZXIpIHtcbiAgICByZXR1cm4gZGlzcGxheVZhbHVlID09PSBwcm9wZXJ0eVZhbHVlID8gJ3BvLWNhbGVuZGFyLWJveC1mb3JlZ3JvdW5kLXNlbGVjdGVkJyA6ICdwby1jYWxlbmRhci1ib3gtZm9yZWdyb3VuZCc7XG4gIH1cblxuICBpc1RvZGF5VW5hdmFpbGFibGUoKSB7XG4gICAgcmV0dXJuIHRoaXMubWluRGF0ZSA+IHRoaXMudG9kYXkgfHwgdGhpcy5tYXhEYXRlIDwgdGhpcy50b2RheTtcbiAgfVxuXG4gIG9uTmV4dE1vbnRoKCkge1xuICAgIHRoaXMuZGlzcGxheU1vbnRoTnVtYmVyIDwgMTFcbiAgICAgID8gdGhpcy51cGRhdGVEaXNwbGF5KHRoaXMuZGlzcGxheVllYXIsIHRoaXMuZGlzcGxheU1vbnRoTnVtYmVyICsgMSlcbiAgICAgIDogdGhpcy51cGRhdGVEaXNwbGF5KHRoaXMuZGlzcGxheVllYXIgKyAxLCAwKTtcblxuICAgIHRoaXMuaGVhZGVyQ2hhbmdlLmVtaXQoeyBtb250aDogdGhpcy5kaXNwbGF5TW9udGhOdW1iZXIsIHllYXI6IHRoaXMuZGlzcGxheVllYXIgfSk7XG4gIH1cblxuICBvblByZXZpb3VzTW9udGgoKSB7XG4gICAgaWYgKHRoaXMuZGlzcGxheU1vbnRoTnVtYmVyID4gMCkge1xuICAgICAgdGhpcy51cGRhdGVEaXNwbGF5KHRoaXMuZGlzcGxheVllYXIsIHRoaXMuZGlzcGxheU1vbnRoTnVtYmVyIC0gMSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudXBkYXRlRGlzcGxheSh0aGlzLmRpc3BsYXlZZWFyIC0gMSwgMTEpO1xuICAgIH1cblxuICAgIHRoaXMuaGVhZGVyQ2hhbmdlLmVtaXQoeyBtb250aDogdGhpcy5kaXNwbGF5TW9udGhOdW1iZXIsIHllYXI6IHRoaXMuZGlzcGxheVllYXIgfSk7XG4gIH1cblxuICBvbk1vdXNlRW50ZXIoZGF5KSB7XG4gICAgKDxTdWJqZWN0PERhdGU+PnRoaXMuaG92ZXJEYXRlKS5uZXh0KGRheSk7XG4gIH1cblxuICBvbk1vdXNlTGVhdmUoKSB7XG4gICAgKDxTdWJqZWN0PERhdGU+PnRoaXMuaG92ZXJEYXRlKS5uZXh0KG51bGwpO1xuICB9XG5cbiAgLy8gQW8gc2VsZWNpb25hciB1bWEgZGF0YVxuICBvblNlbGVjdERhdGUoZGF0ZTogRGF0ZSkge1xuICAgIHRoaXMuc2VsZWN0RGF0ZS5lbWl0KGRhdGUpO1xuICB9XG5cbiAgLy8gQW8gc2VsZWNpb25hciB1bSBtw6pzXG4gIG9uU2VsZWN0TW9udGgoeWVhcjogbnVtYmVyLCBtb250aDogbnVtYmVyKSB7XG4gICAgdGhpcy5zZWxlY3REaXNwbGF5TW9kZSgnZGF5Jyk7XG4gICAgdGhpcy51cGRhdGVEaXNwbGF5KHllYXIsIG1vbnRoKTtcblxuICAgIHRoaXMuaGVhZGVyQ2hhbmdlLmVtaXQoeyBtb250aCwgeWVhciB9KTtcbiAgfVxuXG4gIC8vIEFvIHNlbGVjaW9uYXIgdW0gYW5vXG4gIG9uU2VsZWN0WWVhcih5ZWFyOiBudW1iZXIsIG1vbnRoOiBudW1iZXIpIHtcbiAgICAvLyBTZSB2ZWlvIGRhIHRlbGEgZGUgc2VsZcOnw6NvIGRlIG3DqnNcbiAgICB0aGlzLnNlbGVjdERpc3BsYXlNb2RlKHRoaXMubGFzdERpc3BsYXkgPT09ICdtb250aCcgPyAnbW9udGgnIDogJ2RheScpO1xuXG4gICAgdGhpcy5jdXJyZW50WWVhciA9IHllYXI7XG4gICAgdGhpcy51cGRhdGVEaXNwbGF5KHllYXIsIG1vbnRoKTtcblxuICAgIHRoaXMuaGVhZGVyQ2hhbmdlLmVtaXQoeyBtb250aCwgeWVhciB9KTtcbiAgfVxuXG4gIHNlbGVjdERpc3BsYXlNb2RlKG1vZGU6ICdtb250aCcgfCAnZGF5JyB8ICd5ZWFyJykge1xuICAgIHRoaXMubGFzdERpc3BsYXkgPSB0aGlzLm1vZGU7XG4gICAgdGhpcy5tb2RlID0gbW9kZTtcbiAgfVxuXG4gIHVwZGF0ZVllYXIodmFsdWU6IG51bWJlcikge1xuICAgIHRoaXMudXBkYXRlRGlzcGxheSh0aGlzLmRpc3BsYXlZZWFyICsgdmFsdWUsIHRoaXMuZGlzcGxheU1vbnRoTnVtYmVyKTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkQWxsWWVhcnNJbkRlY2FkZSh5ZWFyOiBudW1iZXIpIHtcbiAgICBsZXQgaTtcbiAgICBmb3IgKGkgPSB5ZWFyOyBpIDwgeWVhciArIDEwOyBpKyspIHtcbiAgICAgIHRoaXMuZGlzcGxheURlY2FkZS5wdXNoKGkpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZXF1YWxzRGF0ZShkYXRlMTogRGF0ZSwgZGF0ZTI6IERhdGUpOiBib29sZWFuIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgZGF0ZTEuZ2V0RnVsbFllYXIoKSA9PT0gZGF0ZTIuZ2V0RnVsbFllYXIoKSAmJlxuICAgICAgICBkYXRlMS5nZXRNb250aCgpID09PSBkYXRlMi5nZXRNb250aCgpICYmXG4gICAgICAgIGRhdGUxLmdldERhdGUoKSA9PT0gZGF0ZTIuZ2V0RGF0ZSgpXG4gICAgICApO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgLy8gT2J0w6ltIHVtIGFycmF5IGRlIHRvZG9zIG9zIGFub3MgZGVzdGEgZMOpY2FkYVxuICBwcml2YXRlIGdldERlY2FkZUFycmF5KHllYXIpIHtcbiAgICB0aGlzLmRpc3BsYXlEZWNhZGUgPSBBcnJheSgpO1xuXG4gICAgaWYgKHllYXIgJSAxMCAhPT0gMCkge1xuICAgICAgd2hpbGUgKHllYXIgJSAxMCAhPT0gMCkge1xuICAgICAgICB5ZWFyLS07XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMudXBkYXRlRGVjYWRlKHllYXIpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDb2xvckZvckRhdGUoZGF0ZTogRGF0ZSwgbG9jYWw6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLnBvRGF0ZS52YWxpZGF0ZURhdGVSYW5nZShkYXRlLCB0aGlzLm1pbkRhdGUsIHRoaXMubWF4RGF0ZSlcbiAgICAgID8gYHBvLWNhbGVuZGFyLWJveC0ke2xvY2FsfS1zZWxlY3RlZGBcbiAgICAgIDogYHBvLWNhbGVuZGFyLWJveC0ke2xvY2FsfS1zZWxlY3RlZC1kaXNhYmxlZGA7XG4gIH1cblxuICBwcml2YXRlIGdldENvbG9yRm9yRGVmYXVsdERhdGUoZGF0ZTogRGF0ZSwgbG9jYWw6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLnBvRGF0ZS52YWxpZGF0ZURhdGVSYW5nZShkYXRlLCB0aGlzLm1pbkRhdGUsIHRoaXMubWF4RGF0ZSlcbiAgICAgID8gYHBvLWNhbGVuZGFyLWJveC0ke2xvY2FsfWBcbiAgICAgIDogYHBvLWNhbGVuZGFyLWJveC0ke2xvY2FsfS1kaXNhYmxlZGA7XG4gIH1cblxuICBwcml2YXRlIGdldENvbG9yRm9yVG9kYXkoZGF0ZTogRGF0ZSwgbG9jYWw6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLnBvRGF0ZS52YWxpZGF0ZURhdGVSYW5nZShkYXRlLCB0aGlzLm1pbkRhdGUsIHRoaXMubWF4RGF0ZSlcbiAgICAgID8gYHBvLWNhbGVuZGFyLWJveC0ke2xvY2FsfS10b2RheWBcbiAgICAgIDogYHBvLWNhbGVuZGFyLWJveC0ke2xvY2FsfS10b2RheS1kaXNhYmxlZGA7XG4gIH1cblxuICBwcml2YXRlIGdldENvbG9yRm9yRGF0ZVJhbmdlKGRhdGU6IERhdGUsIGxvY2FsOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5wb0RhdGUudmFsaWRhdGVEYXRlUmFuZ2UoZGF0ZSwgdGhpcy5taW5EYXRlLCB0aGlzLm1heERhdGUpXG4gICAgICA/IGBwby1jYWxlbmRhci1ib3gtJHtsb2NhbH0taW4tcmFuZ2VgXG4gICAgICA6IGBwby1jYWxlbmRhci1ib3gtJHtsb2NhbH0taW4tcmFuZ2UtZGlzYWJsZWRgO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXREYXlDb2xvcihkYXRlOiBEYXRlLCBsb2NhbDogc3RyaW5nKSB7XG4gICAgY29uc3Qgc3RhcnQgPSB0aGlzLnNlbGVjdGVkVmFsdWU/LnN0YXJ0O1xuICAgIGNvbnN0IGVuZCA9IHRoaXMuc2VsZWN0ZWRWYWx1ZT8uZW5kO1xuXG4gICAgaWYgKHRoaXMucmFuZ2UgJiYgKHRoaXMuZXF1YWxzRGF0ZShkYXRlLCBzdGFydCkgfHwgdGhpcy5lcXVhbHNEYXRlKGRhdGUsIGVuZCkpKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRDb2xvckZvckRhdGUoZGF0ZSwgbG9jYWwpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5yYW5nZSAmJiBzdGFydCAmJiBlbmQgJiYgZGF0ZSA+IHN0YXJ0ICYmIGRhdGUgPCBlbmQpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldENvbG9yRm9yRGF0ZVJhbmdlKGRhdGUsIGxvY2FsKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMucmFuZ2UgJiYgc3RhcnQgJiYgIWVuZCAmJiBkYXRlID4gc3RhcnQgJiYgZGF0ZSA8IHRoaXMuaG92ZXJWYWx1ZSkge1xuICAgICAgcmV0dXJuIGBwby1jYWxlbmRhci1ib3gtJHtsb2NhbH0taG92ZXJgO1xuICAgIH0gZWxzZSBpZiAoIXRoaXMucmFuZ2UgJiYgdGhpcy5lcXVhbHNEYXRlKGRhdGUsIHRoaXMudmFsdWUpKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRDb2xvckZvckRhdGUoZGF0ZSwgbG9jYWwpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5lcXVhbHNEYXRlKGRhdGUsIHRoaXMudG9kYXkpKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRDb2xvckZvclRvZGF5KGRhdGUsIGxvY2FsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0Q29sb3JGb3JEZWZhdWx0RGF0ZShkYXRlLCBsb2NhbCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpbml0KCkge1xuICAgIHRoaXMudXBkYXRlRGF0ZSh0aGlzLmFjdGl2YXRlRGF0ZSk7XG4gICAgdGhpcy5pbml0aWFsaXplTGFuZ3VhZ2UoKTtcbiAgICB0aGlzLnNlbGVjdERpc3BsYXlNb2RlKCdkYXknKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZUxhbmd1YWdlKCkge1xuICAgIHRoaXMucG9DYWxlbmRhckxhbmdTZXJ2aWNlLnNldExhbmd1YWdlKHRoaXMubG9jYWxlKTtcbiAgICB0aGlzLmRpc3BsYXlXZWVrRGF5cyA9IHRoaXMucG9DYWxlbmRhckxhbmdTZXJ2aWNlLmdldFdlZWtEYXlzQXJyYXkoKTtcbiAgICB0aGlzLmRpc3BsYXlNb250aHMgPSB0aGlzLnBvQ2FsZW5kYXJMYW5nU2VydmljZS5nZXRNb250aHNBcnJheSgpO1xuICAgIHRoaXMuZGlzcGxheU1vbnRoID0gdGhpcy5kaXNwbGF5TW9udGhzW3RoaXMuZGlzcGxheU1vbnRoTnVtYmVyXTtcbiAgICB0aGlzLmRpc3BsYXlUb2RheSA9IHRoaXMucG9DYWxlbmRhckxhbmdTZXJ2aWNlLmdldFRvZGF5TGFiZWwoKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlRGF0ZSh2YWx1ZTogRGF0ZSA9IG5ldyBEYXRlKCkpIHtcbiAgICBjb25zdCBkYXRlID0gbmV3IERhdGUodmFsdWUpO1xuXG4gICAgdGhpcy5jdXJyZW50TW9udGhOdW1iZXIgPSBkYXRlLmdldE1vbnRoKCk7XG4gICAgdGhpcy5jdXJyZW50WWVhciA9IGRhdGUuZ2V0RnVsbFllYXIoKTtcbiAgICB0aGlzLnVwZGF0ZURpc3BsYXkodGhpcy5jdXJyZW50WWVhciwgdGhpcy5jdXJyZW50TW9udGhOdW1iZXIpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVEZWNhZGUoeWVhcjogbnVtYmVyKSB7XG4gICAgdGhpcy5hZGRBbGxZZWFyc0luRGVjYWRlKHllYXIpO1xuICAgIHRoaXMuZGlzcGxheVN0YXJ0RGVjYWRlID0geWVhcjtcbiAgICB0aGlzLmRpc3BsYXlGaW5hbERlY2FkZSA9IHllYXIgKyA5O1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVEaXNwbGF5KHllYXI6IG51bWJlciwgbW9udGg6IG51bWJlcikge1xuICAgIGNvbnN0IGNhbGVuZGFyQXJyYXkgPSB0aGlzLnBvQ2FsZW5kYXJTZXJ2aWNlLm1vbnRoRGF5cyh5ZWFyLCBtb250aCk7XG4gICAgdGhpcy5kaXNwbGF5RGF5cyA9IFtdLmNvbmNhdC5hcHBseShbXSwgY2FsZW5kYXJBcnJheSk7XG4gICAgdGhpcy5kaXNwbGF5TW9udGhOdW1iZXIgPSBtb250aDtcbiAgICB0aGlzLmRpc3BsYXlNb250aCA9IHRoaXMuZGlzcGxheU1vbnRoc1ttb250aF07XG4gICAgdGhpcy5kaXNwbGF5WWVhciA9IHllYXI7XG4gICAgdGhpcy5nZXREZWNhZGVBcnJheSh5ZWFyKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInBvLWNhbGVuZGFyLXdyYXBwZXJcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzRGF5VmlzaWJsZVwiPlxuICAgIDxwby1jYWxlbmRhci1oZWFkZXJcbiAgICAgIFtwLWhpZGUtcHJldmlvdXNdPVwiaXNFbmRQYXJ0XCJcbiAgICAgIFtwLWhpZGUtbmV4dF09XCJpc1N0YXJ0UGFydCAmJiAhcmVzcG9uc2l2ZVwiXG4gICAgICAocC1wcmV2aW91cyk9XCJvblByZXZpb3VzTW9udGgoKVwiXG4gICAgICAocC1uZXh0KT1cIm9uTmV4dE1vbnRoKClcIlxuICAgID5cbiAgICAgIDxzcGFuIGNsYXNzPVwicG8tY2xpY2thYmxlIHBvLW1yLTFcIiAoY2xpY2spPVwic2VsZWN0RGlzcGxheU1vZGUoJ21vbnRoJylcIj57eyBkaXNwbGF5TW9udGggfX08L3NwYW4+XG4gICAgICA8c3BhbiBjbGFzcz1cInBvLWNsaWNrYWJsZVwiIChjbGljayk9XCJzZWxlY3REaXNwbGF5TW9kZSgneWVhcicpXCI+e3sgZGlzcGxheVllYXIgfX08L3NwYW4+XG4gICAgPC9wby1jYWxlbmRhci1oZWFkZXI+XG5cbiAgICA8ZGl2IGNsYXNzPVwicG8tY2FsZW5kYXItY29udGVudFwiPlxuICAgICAgPGRpdiBjbGFzcz1cInBvLWNhbGVuZGFyLWxhYmVsc1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicG8tY2FsZW5kYXItbGFiZWxcIiAqbmdGb3I9XCJsZXQgd2Vla0RheSBvZiBkaXNwbGF5V2Vla0RheXNcIj5cbiAgICAgICAgICB7eyB3ZWVrRGF5IH19XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJwby1jYWxlbmRhci1jb250ZW50LWxpc3QtZGF5XCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAqbmdGb3I9XCJsZXQgZGF5IG9mIGRpc3BsYXlEYXlzXCJcbiAgICAgICAgICBjbGFzcz1cInBvLWNhbGVuZGFyLWRheVwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwiZ2V0RGF5QmFja2dyb3VuZENvbG9yKGRheSlcIlxuICAgICAgICAgIChjbGljayk9XCJvblNlbGVjdERhdGUoZGF5KVwiXG4gICAgICAgICAgKG1vdXNlZW50ZXIpPVwib25Nb3VzZUVudGVyKGRheSlcIlxuICAgICAgICAgIChtb3VzZWxlYXZlKT1cIm9uTW91c2VMZWF2ZSgpXCJcbiAgICAgICAgICBhdHRyLWNhbGVuZGFyXG4gICAgICAgID5cbiAgICAgICAgICA8c3BhbiAqbmdJZj1cImRheSAhPT0gMFwiIFtuZ0NsYXNzXT1cImdldERheUZvcmVncm91bmRDb2xvcihkYXkpXCI+XG4gICAgICAgICAgICB7eyBkYXkuZ2V0RGF0ZSgpIH19XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNNb250aFZpc2libGVcIj5cbiAgICA8cG8tY2FsZW5kYXItaGVhZGVyIChwLXByZXZpb3VzKT1cInVwZGF0ZVllYXIoLTEpXCIgKHAtbmV4dCk9XCJ1cGRhdGVZZWFyKDEpXCI+XG4gICAgICA8c3BhbiBjbGFzcz1cInBvLWNsaWNrYWJsZVwiIChjbGljayk9XCJzZWxlY3REaXNwbGF5TW9kZSgneWVhcicpXCI+XG4gICAgICAgIHt7IGRpc3BsYXlZZWFyIH19XG4gICAgICA8L3NwYW4+XG4gICAgPC9wby1jYWxlbmRhci1oZWFkZXI+XG5cbiAgICA8ZGl2IGNsYXNzPVwicG8tY2FsZW5kYXItY29udGVudFwiPlxuICAgICAgPGRpdiBjbGFzcz1cInBvLWNhbGVuZGFyLWxhYmVsc1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicG8tY2FsZW5kYXItbGFiZWxcIj5cbiAgICAgICAgICB7eyBtb250aExhYmVsIH19XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwicG8tY2FsZW5kYXItY29udGVudC1saXN0LW1vbnRoXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAqbmdGb3I9XCJsZXQgbW9udGggb2YgZGlzcGxheU1vbnRoczsgbGV0IGkgPSBpbmRleFwiXG4gICAgICAgICAgY2xhc3M9XCJwby1jYWxlbmRhci1tb250aFwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwiZ2V0QmFja2dyb3VuZENvbG9yKGksIGRpc3BsYXlNb250aE51bWJlcilcIlxuICAgICAgICAgIChjbGljayk9XCJvblNlbGVjdE1vbnRoKGRpc3BsYXlZZWFyLCBpKVwiXG4gICAgICAgICAgYXR0ci1jYWxlbmRhclxuICAgICAgICA+XG4gICAgICAgICAgPHNwYW4gW25nQ2xhc3NdPVwiZ2V0Rm9yZWdyb3VuZENvbG9yKGksIGRpc3BsYXlNb250aE51bWJlcilcIj5cbiAgICAgICAgICAgIHt7IG1vbnRoIH19XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNZZWFyVmlzaWJsZVwiPlxuICAgIDxwby1jYWxlbmRhci1oZWFkZXIgKHAtcHJldmlvdXMpPVwidXBkYXRlWWVhcigtMTApXCIgKHAtbmV4dCk9XCJ1cGRhdGVZZWFyKDEwKVwiPlxuICAgICAge3sgZGlzcGxheVN0YXJ0RGVjYWRlIH19IC0ge3sgZGlzcGxheUZpbmFsRGVjYWRlIH19XG4gICAgPC9wby1jYWxlbmRhci1oZWFkZXI+XG5cbiAgICA8ZGl2IGNsYXNzPVwicG8tY2FsZW5kYXItY29udGVudFwiPlxuICAgICAgPGRpdiBjbGFzcz1cInBvLWNhbGVuZGFyLWxhYmVsc1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicG8tY2FsZW5kYXItbGFiZWxcIj5cbiAgICAgICAgICB7eyB5ZWFyTGFiZWwgfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cInBvLWNhbGVuZGFyLWNvbnRlbnQtbGlzdC15ZWFyXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAqbmdGb3I9XCJsZXQgeWVhciBvZiBkaXNwbGF5RGVjYWRlOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgICBjbGFzcz1cInBvLWNhbGVuZGFyLXllYXJcIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cImdldEJhY2tncm91bmRDb2xvcih5ZWFyLCBjdXJyZW50WWVhcilcIlxuICAgICAgICAgIChjbGljayk9XCJvblNlbGVjdFllYXIoeWVhciwgZGlzcGxheU1vbnRoTnVtYmVyKVwiXG4gICAgICAgICAgYXR0ci1jYWxlbmRhclxuICAgICAgICA+XG4gICAgICAgICAgPHNwYW4gW25nQ2xhc3NdPVwiZ2V0Rm9yZWdyb3VuZENvbG9yKHllYXIsIGN1cnJlbnRZZWFyKVwiPlxuICAgICAgICAgICAge3sgeWVhciB9fVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFyYW5nZVwiPlxuICAgIDxkaXYgY2xhc3M9XCJwby1jYWxlbmRhci1mb290ZXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJwby1jYWxlbmRhci1mb290ZXItdG9kYXlcIj5cbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInBvLWNhbGVuZGFyLWZvb3Rlci10b2RheS1idXR0b25cIiAoY2xpY2spPVwib25TZWxlY3REYXRlKHRvZGF5KVwiIFtkaXNhYmxlZF09XCJpc1RvZGF5VW5hdmFpbGFibGUoKVwiPlxuICAgICAgICAgIHt7IGRpc3BsYXlUb2RheSB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuIl19
|
|
451
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tY2FsZW5kYXItd3JhcHBlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2NvbXBvbmVudHMvcG8tY2FsZW5kYXIvcG8tY2FsZW5kYXItd3JhcHBlci9wby1jYWxlbmRhci13cmFwcGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby1jYWxlbmRhci9wby1jYWxlbmRhci13cmFwcGVyL3BvLWNhbGVuZGFyLXdyYXBwZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkgsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHOUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUNBQWlDLENBQUM7Ozs7Ozs7O0lDUTVELCtCQUF1RTtJQUNyRSxZQUNGO0lBQUEsaUJBQU07OztJQURKLGVBQ0Y7SUFERSwyQ0FDRjs7O0lBYUUsZ0NBQStEO0lBQzdELFlBQ0Y7SUFBQSxpQkFBTzs7OztJQUZpQiw4REFBc0M7SUFDNUQsZUFDRjtJQURFLGlEQUNGOzs7O0lBWEYsK0JBUUM7SUFKQyxpUEFBUyw0QkFBaUIsSUFBQyw4T0FDYiw0QkFBaUIsSUFESixvTEFFYixzQkFBYyxJQUZEO0lBSzNCLG9HQUVPO0lBQ1QsaUJBQU07Ozs7SUFUSiw4REFBc0M7SUFNL0IsZUFBZTtJQUFmLG1DQUFlOzs7O0lBNUI5Qiw2QkFBbUM7SUFDakMsNkNBS0M7SUFGQyx3TUFBYyx5QkFBaUIsSUFBQyxtTEFDdEIscUJBQWEsSUFEUztJ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a0I7UUFvQ2xCLGVBQW9CO1FBQXBCLHlDQUFvQjtRQTZCcEIsZUFBbUI7UUFBbkIsd0NBQW1CO1FBNEJuQixlQUFZO1FBQVosaUNBQVk7O3VGRC9FaEIsMEJBQTBCO2NBTnRDLFNBQVM7MkJBQ0UscUJBQXFCLGFBRXBCLENBQUMsaUJBQWlCLENBQUMsbUJBQ2IsdUJBQXVCLENBQUMsTUFBTTtvSUFHN0IsS0FBSztrQkFBdEIsS0FBSzttQkFBQyxTQUFTO1lBRUMsSUFBSTtrQkFBcEIsS0FBSzttQkFBQyxRQUFRO1lBRVEsVUFBVTtrQkFBaEMsS0FBSzttQkFBQyxjQUFjO1lBRUMsUUFBUTtrQkFBN0IsS0FBSzttQkFBQyxhQUFhO1lBRUYsS0FBSztrQkFBdEIsS0FBSzttQkFBQyxTQUFTO1lBRVUsWUFBWTtrQkFBckMsS0FBSzttQkFBQyxpQkFBaUI7WUFFRyxhQUFhO2tCQUF2QyxLQUFLO21CQUFDLGtCQUFrQjtZQUVKLE9BQU87a0JBQTNCLEtBQUs7bUJBQUMsWUFBWTtZQUVFLE9BQU87a0JBQTNCLEtBQUs7bUJBQUMsWUFBWTtZQUVLLFVBQVU7a0JBQWpDLEtBQUs7bUJBQUMsZUFBZTtZQUVLLFlBQVk7a0JBQXRDLE1BQU07bUJBQUMsaUJBQWlCO1lBRUEsVUFBVTtrQkFBbEMsTUFBTTttQkFBQyxlQUFlO1lBRUMsU0FBUztrQkFBaEMsTUFBTTttQkFBQyxjQUFjO1lBcUJDLE1BQU07a0JBQTVCLEtBQUs7bUJBQUMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBQb0NhbGVuZGFyTGFuZ1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9wby1jYWxlbmRhci5sYW5nLnNlcnZpY2UnO1xuaW1wb3J0IHsgUG9DYWxlbmRhclNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9wby1jYWxlbmRhci5zZXJ2aWNlJztcbmltcG9ydCB7IFBvRGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9wby1kYXRlL3BvLWRhdGUuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3BvLWNhbGVuZGFyLXdyYXBwZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vcG8tY2FsZW5kYXItd3JhcHBlci5jb21wb25lbnQuaHRtbCcsXG4gIHByb3ZpZGVyczogW1BvQ2FsZW5kYXJTZXJ2aWNlXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgUG9DYWxlbmRhcldyYXBwZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgncC12YWx1ZScpIHZhbHVlO1xuXG4gIEBJbnB1dCgncC1tb2RlJykgbW9kZTogJ2RheScgfCAnbW9udGgnIHwgJ3llYXInID0gJ2RheSc7XG5cbiAgQElucHV0KCdwLXJlc3BvbnNpdmUnKSByZXNwb25zaXZlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQElucHV0KCdwLXBhcnQtdHlwZScpIHBhcnRUeXBlOiAnc3RhcnQnIHwgJ2VuZCc7XG5cbiAgQElucHV0KCdwLXJhbmdlJykgcmFuZ2U6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBASW5wdXQoJ3AtYWN0aXZhdGUtZGF0ZScpIGFjdGl2YXRlRGF0ZSA9IG5ldyBEYXRlKCk7XG5cbiAgQElucHV0KCdwLXNlbGVjdGVkLXZhbHVlJykgc2VsZWN0ZWRWYWx1ZTtcblxuICBASW5wdXQoJ3AtbWluLWRhdGUnKSBtaW5EYXRlO1xuXG4gIEBJbnB1dCgncC1tYXgtZGF0ZScpIG1heERhdGU7XG5cbiAgQElucHV0KCdwLWhvdmVyLXZhbHVlJykgaG92ZXJWYWx1ZTogRGF0ZTtcblxuICBAT3V0cHV0KCdwLWhlYWRlci1jaGFuZ2UnKSBoZWFkZXJDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBAT3V0cHV0KCdwLXNlbGVjdC1kYXRlJykgc2VsZWN0RGF0ZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIEBPdXRwdXQoJ3AtaG92ZXItZGF0ZScpIGhvdmVyRGF0ZSA9IG5ldyBTdWJqZWN0PERhdGU+KCkucGlwZShkZWJvdW5jZVRpbWUoMTAwKSk7XG5cbiAgY3VycmVudFllYXI6IG51bWJlcjtcbiAgZGlzcGxheURheXM6IEFycmF5PG51bWJlcj47XG4gIGRpc3BsYXlEZWNhZGU6IEFycmF5PG51bWJlcj47XG4gIGRpc3BsYXlGaW5hbERlY2FkZTogbnVtYmVyO1xuICBkaXNwbGF5TW9udGg6IGFueTtcbiAgZGlzcGxheU1vbnRoTnVtYmVyOiBudW1iZXI7XG4gIGRpc3BsYXlNb250aHM6IEFycmF5PGFueT4gPSBBcnJheSgpO1xuICBkaXNwbGF5U3RhcnREZWNhZGU6IG51bWJlcjtcbiAgZGlzcGxheVdlZWtEYXlzOiBBcnJheTxhbnk+ID0gQXJyYXkoKTtcbiAgZGlzcGxheVllYXI6IG51bWJlcjtcbiAgZGlzcGxheVRvZGF5OiBzdHJpbmc7XG4gIHRvZGF5OiBEYXRlID0gbmV3IERhdGUoKTtcblxuICBwcm90ZWN0ZWQgY3VycmVudE1vbnRoTnVtYmVyOiBudW1iZXI7XG4gIHByb3RlY3RlZCBkYXRlOiBEYXRlO1xuICBwcm90ZWN0ZWQgbGFzdERpc3BsYXk6IHN0cmluZztcblxuICBwcml2YXRlIF9sb2NhbGU6IHN0cmluZztcblxuICBASW5wdXQoJ3AtbG9jYWxlJykgc2V0IGxvY2FsZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fbG9jYWxlID0gdmFsdWU7XG4gICAgdGhpcy5pbml0aWFsaXplTGFuZ3VhZ2UoKTtcbiAgfVxuXG4gIGdldCBsb2NhbGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2xvY2FsZTtcbiAgfVxuXG4gIGdldCBtb250aExhYmVsKCkge1xuICAgIHJldHVybiB0aGlzLnBvQ2FsZW5kYXJMYW5nU2VydmljZS5nZXRNb250aExhYmVsKCk7XG4gIH1cblxuICBnZXQgeWVhckxhYmVsKCkge1xuICAgIHJldHVybiB0aGlzLnBvQ2FsZW5kYXJMYW5nU2VydmljZS5nZXRZZWFyTGFiZWwoKTtcbiAgfVxuXG4gIGdldCBpc0RheVZpc2libGUoKSB7XG4gICAgcmV0dXJuIHRoaXMubW9kZSA9PT0gJ2RheSc7XG4gIH1cblxuICBnZXQgaXNNb250aFZpc2libGUoKSB7XG4gICAgcmV0dXJuIHRoaXMubW9kZSA9PT0gJ21vbnRoJztcbiAgfVxuXG4gIGdldCBpc1llYXJWaXNpYmxlKCkge1xuICAgIHJldHVybiB0aGlzLm1vZGUgPT09ICd5ZWFyJztcbiAgfVxuXG4gIGdldCBpc1N0YXJ0UGFydCgpIHtcbiAgICByZXR1cm4gdGhpcy5wYXJ0VHlwZSA9PT0gJ3N0YXJ0JztcbiAgfVxuXG4gIGdldCBpc0VuZFBhcnQoKSB7XG4gICAgcmV0dXJuIHRoaXMucGFydFR5cGUgPT09ICdlbmQnO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBwb0NhbGVuZGFyU2VydmljZTogUG9DYWxlbmRhclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwb0NhbGVuZGFyTGFuZ1NlcnZpY2U6IFBvQ2FsZW5kYXJMYW5nU2VydmljZSxcbiAgICBwcml2YXRlIHBvRGF0ZTogUG9EYXRlU2VydmljZVxuICApIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5pbml0KCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzKSB7XG4gICAgY29uc3QgeyBhY3RpdmF0ZURhdGUgfSA9IGNoYW5nZXM7XG5cbiAgICBpZiAoYWN0aXZhdGVEYXRlKSB7XG4gICAgICB0aGlzLnVwZGF0ZURhdGUoYWN0aXZhdGVEYXRlLmN1cnJlbnRWYWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0QmFja2dyb3VuZENvbG9yKGRpc3BsYXlWYWx1ZTogbnVtYmVyLCBwcm9wZXJ0eVZhbHVlOiBudW1iZXIpIHtcbiAgICByZXR1cm4gZGlzcGxheVZhbHVlID09PSBwcm9wZXJ0eVZhbHVlID8gJ3BvLWNhbGVuZGFyLWJveC1iYWNrZ3JvdW5kLXNlbGVjdGVkJyA6ICdwby1jYWxlbmRhci1ib3gtYmFja2dyb3VuZCc7XG4gIH1cblxuICBnZXREYXlCYWNrZ3JvdW5kQ29sb3IoZGF0ZTogRGF0ZSkge1xuICAgIHJldHVybiB0aGlzLmdldERheUNvbG9yKGRhdGUsICdiYWNrZ3JvdW5kJyk7XG4gIH1cblxuICBnZXREYXlGb3JlZ3JvdW5kQ29sb3IoZGF0ZTogRGF0ZSkge1xuICAgIHJldHVybiB0aGlzLmdldERheUNvbG9yKGRhdGUsICdmb3JlZ3JvdW5kJyk7XG4gIH1cblxuICBnZXRGb3JlZ3JvdW5kQ29sb3IoZGlzcGxheVZhbHVlOiBudW1iZXIsIHByb3BlcnR5VmFsdWU6IG51bWJlcikge1xuICAgIHJldHVybiBkaXNwbGF5VmFsdWUgPT09IHByb3BlcnR5VmFsdWUgPyAncG8tY2FsZW5kYXItYm94LWZvcmVncm91bmQtc2VsZWN0ZWQnIDogJ3BvLWNhbGVuZGFyLWJveC1mb3JlZ3JvdW5kJztcbiAgfVxuXG4gIGlzVG9kYXlVbmF2YWlsYWJsZSgpIHtcbiAgICByZXR1cm4gdGhpcy5taW5EYXRlID4gdGhpcy50b2RheSB8fCB0aGlzLm1heERhdGUgPCB0aGlzLnRvZGF5O1xuICB9XG5cbiAgb25OZXh0TW9udGgoKSB7XG4gICAgdGhpcy5kaXNwbGF5TW9udGhOdW1iZXIgPCAxMVxuICAgICAgPyB0aGlzLnVwZGF0ZURpc3BsYXkodGhpcy5kaXNwbGF5WWVhciwgdGhpcy5kaXNwbGF5TW9udGhOdW1iZXIgKyAxKVxuICAgICAgOiB0aGlzLnVwZGF0ZURpc3BsYXkodGhpcy5kaXNwbGF5WWVhciArIDEsIDApO1xuXG4gICAgdGhpcy5oZWFkZXJDaGFuZ2UuZW1pdCh7IG1vbnRoOiB0aGlzLmRpc3BsYXlNb250aE51bWJlciwgeWVhcjogdGhpcy5kaXNwbGF5WWVhciB9KTtcbiAgfVxuXG4gIG9uUHJldmlvdXNNb250aCgpIHtcbiAgICBpZiAodGhpcy5kaXNwbGF5TW9udGhOdW1iZXIgPiAwKSB7XG4gICAgICB0aGlzLnVwZGF0ZURpc3BsYXkodGhpcy5kaXNwbGF5WWVhciwgdGhpcy5kaXNwbGF5TW9udGhOdW1iZXIgLSAxKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy51cGRhdGVEaXNwbGF5KHRoaXMuZGlzcGxheVllYXIgLSAxLCAxMSk7XG4gICAgfVxuXG4gICAgdGhpcy5oZWFkZXJDaGFuZ2UuZW1pdCh7IG1vbnRoOiB0aGlzLmRpc3BsYXlNb250aE51bWJlciwgeWVhcjogdGhpcy5kaXNwbGF5WWVhciB9KTtcbiAgfVxuXG4gIG9uTW91c2VFbnRlcihkYXkpIHtcbiAgICAoPFN1YmplY3Q8RGF0ZT4+dGhpcy5ob3ZlckRhdGUpLm5leHQoZGF5KTtcbiAgfVxuXG4gIG9uTW91c2VMZWF2ZSgpIHtcbiAgICAoPFN1YmplY3Q8RGF0ZT4+dGhpcy5ob3ZlckRhdGUpLm5leHQobnVsbCk7XG4gIH1cblxuICAvLyBBbyBzZWxlY2lvbmFyIHVtYSBkYXRhXG4gIG9uU2VsZWN0RGF0ZShkYXRlOiBEYXRlKSB7XG4gICAgdGhpcy5zZWxlY3REYXRlLmVtaXQoZGF0ZSk7XG4gIH1cblxuICAvLyBBbyBzZWxlY2lvbmFyIHVtIG3DqnNcbiAgb25TZWxlY3RNb250aCh5ZWFyOiBudW1iZXIsIG1vbnRoOiBudW1iZXIpIHtcbiAgICB0aGlzLnNlbGVjdERpc3BsYXlNb2RlKCdkYXknKTtcbiAgICB0aGlzLnVwZGF0ZURpc3BsYXkoeWVhciwgbW9udGgpO1xuXG4gICAgdGhpcy5oZWFkZXJDaGFuZ2UuZW1pdCh7IG1vbnRoLCB5ZWFyIH0pO1xuICB9XG5cbiAgLy8gQW8gc2VsZWNpb25hciB1bSBhbm9cbiAgb25TZWxlY3RZZWFyKHllYXI6IG51bWJlciwgbW9udGg6IG51bWJlcikge1xuICAgIC8vIFNlIHZlaW8gZGEgdGVsYSBkZSBzZWxlw6fDo28gZGUgbcOqc1xuICAgIHRoaXMuc2VsZWN0RGlzcGxheU1vZGUodGhpcy5sYXN0RGlzcGxheSA9PT0gJ21vbnRoJyA/ICdtb250aCcgOiAnZGF5Jyk7XG5cbiAgICB0aGlzLmN1cnJlbnRZZWFyID0geWVhcjtcbiAgICB0aGlzLnVwZGF0ZURpc3BsYXkoeWVhciwgbW9udGgpO1xuXG4gICAgdGhpcy5oZWFkZXJDaGFuZ2UuZW1pdCh7IG1vbnRoLCB5ZWFyIH0pO1xuICB9XG5cbiAgc2VsZWN0RGlzcGxheU1vZGUobW9kZTogJ21vbnRoJyB8ICdkYXknIHwgJ3llYXInKSB7XG4gICAgdGhpcy5sYXN0RGlzcGxheSA9IHRoaXMubW9kZTtcbiAgICB0aGlzLm1vZGUgPSBtb2RlO1xuICB9XG5cbiAgdXBkYXRlWWVhcih2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy51cGRhdGVEaXNwbGF5KHRoaXMuZGlzcGxheVllYXIgKyB2YWx1ZSwgdGhpcy5kaXNwbGF5TW9udGhOdW1iZXIpO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRBbGxZZWFyc0luRGVjYWRlKHllYXI6IG51bWJlcikge1xuICAgIGxldCBpO1xuICAgIGZvciAoaSA9IHllYXI7IGkgPCB5ZWFyICsgMTA7IGkrKykge1xuICAgICAgdGhpcy5kaXNwbGF5RGVjYWRlLnB1c2goaSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBlcXVhbHNEYXRlKGRhdGUxOiBEYXRlLCBkYXRlMjogRGF0ZSk6IGJvb2xlYW4ge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICBkYXRlMS5nZXRGdWxsWWVhcigpID09PSBkYXRlMi5nZXRGdWxsWWVhcigpICYmXG4gICAgICAgIGRhdGUxLmdldE1vbnRoKCkgPT09IGRhdGUyLmdldE1vbnRoKCkgJiZcbiAgICAgICAgZGF0ZTEuZ2V0RGF0ZSgpID09PSBkYXRlMi5nZXREYXRlKClcbiAgICAgICk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICAvLyBPYnTDqW0gdW0gYXJyYXkgZGUgdG9kb3Mgb3MgYW5vcyBkZXN0YSBkw6ljYWRhXG4gIHByaXZhdGUgZ2V0RGVjYWRlQXJyYXkoeWVhcikge1xuICAgIHRoaXMuZGlzcGxheURlY2FkZSA9IEFycmF5KCk7XG5cbiAgICBpZiAoeWVhciAlIDEwICE9PSAwKSB7XG4gICAgICB3aGlsZSAoeWVhciAlIDEwICE9PSAwKSB7XG4gICAgICAgIHllYXItLTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy51cGRhdGVEZWNhZGUoeWVhcik7XG4gIH1cblxuICBwcml2YXRlIGdldENvbG9yRm9yRGF0ZShkYXRlOiBEYXRlLCBsb2NhbDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMucG9EYXRlLnZhbGlkYXRlRGF0ZVJhbmdlKGRhdGUsIHRoaXMubWluRGF0ZSwgdGhpcy5tYXhEYXRlKVxuICAgICAgPyBgcG8tY2FsZW5kYXItYm94LSR7bG9jYWx9LXNlbGVjdGVkYFxuICAgICAgOiBgcG8tY2FsZW5kYXItYm94LSR7bG9jYWx9LXNlbGVjdGVkLWRpc2FibGVkYDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q29sb3JGb3JEZWZhdWx0RGF0ZShkYXRlOiBEYXRlLCBsb2NhbDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMucG9EYXRlLnZhbGlkYXRlRGF0ZVJhbmdlKGRhdGUsIHRoaXMubWluRGF0ZSwgdGhpcy5tYXhEYXRlKVxuICAgICAgPyBgcG8tY2FsZW5kYXItYm94LSR7bG9jYWx9YFxuICAgICAgOiBgcG8tY2FsZW5kYXItYm94LSR7bG9jYWx9LWRpc2FibGVkYDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q29sb3JGb3JUb2RheShkYXRlOiBEYXRlLCBsb2NhbDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMucG9EYXRlLnZhbGlkYXRlRGF0ZVJhbmdlKGRhdGUsIHRoaXMubWluRGF0ZSwgdGhpcy5tYXhEYXRlKVxuICAgICAgPyBgcG8tY2FsZW5kYXItYm94LSR7bG9jYWx9LXRvZGF5YFxuICAgICAgOiBgcG8tY2FsZW5kYXItYm94LSR7bG9jYWx9LXRvZGF5LWRpc2FibGVkYDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q29sb3JGb3JEYXRlUmFuZ2UoZGF0ZTogRGF0ZSwgbG9jYWw6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLnBvRGF0ZS52YWxpZGF0ZURhdGVSYW5nZShkYXRlLCB0aGlzLm1pbkRhdGUsIHRoaXMubWF4RGF0ZSlcbiAgICAgID8gYHBvLWNhbGVuZGFyLWJveC0ke2xvY2FsfS1pbi1yYW5nZWBcbiAgICAgIDogYHBvLWNhbGVuZGFyLWJveC0ke2xvY2FsfS1pbi1yYW5nZS1kaXNhYmxlZGA7XG4gIH1cblxuICBwcml2YXRlIGdldERheUNvbG9yKGRhdGU6IERhdGUsIGxvY2FsOiBzdHJpbmcpIHtcbiAgICBjb25zdCBzdGFydCA9IHRoaXMuc2VsZWN0ZWRWYWx1ZT8uc3RhcnQ7XG4gICAgY29uc3QgZW5kID0gdGhpcy5zZWxlY3RlZFZhbHVlPy5lbmQ7XG5cbiAgICBpZiAodGhpcy5yYW5nZSAmJiAodGhpcy5lcXVhbHNEYXRlKGRhdGUsIHN0YXJ0KSB8fCB0aGlzLmVxdWFsc0RhdGUoZGF0ZSwgZW5kKSkpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldENvbG9yRm9yRGF0ZShkYXRlLCBsb2NhbCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLnJhbmdlICYmIHN0YXJ0ICYmIGVuZCAmJiBkYXRlID4gc3RhcnQgJiYgZGF0ZSA8IGVuZCkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0Q29sb3JGb3JEYXRlUmFuZ2UoZGF0ZSwgbG9jYWwpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5yYW5nZSAmJiBzdGFydCAmJiAhZW5kICYmIGRhdGUgPiBzdGFydCAmJiBkYXRlIDwgdGhpcy5ob3ZlclZhbHVlKSB7XG4gICAgICByZXR1cm4gYHBvLWNhbGVuZGFyLWJveC0ke2xvY2FsfS1ob3ZlcmA7XG4gICAgfSBlbHNlIGlmICghdGhpcy5yYW5nZSAmJiB0aGlzLmVxdWFsc0RhdGUoZGF0ZSwgdGhpcy52YWx1ZSkpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldENvbG9yRm9yRGF0ZShkYXRlLCBsb2NhbCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmVxdWFsc0RhdGUoZGF0ZSwgdGhpcy50b2RheSkpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldENvbG9yRm9yVG9kYXkoZGF0ZSwgbG9jYWwpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRDb2xvckZvckRlZmF1bHREYXRlKGRhdGUsIGxvY2FsKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGluaXQoKSB7XG4gICAgdGhpcy51cGRhdGVEYXRlKHRoaXMuYWN0aXZhdGVEYXRlKTtcbiAgICB0aGlzLmluaXRpYWxpemVMYW5ndWFnZSgpO1xuICAgIHRoaXMuc2VsZWN0RGlzcGxheU1vZGUoJ2RheScpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplTGFuZ3VhZ2UoKSB7XG4gICAgdGhpcy5wb0NhbGVuZGFyTGFuZ1NlcnZpY2Uuc2V0TGFuZ3VhZ2UodGhpcy5sb2NhbGUpO1xuICAgIHRoaXMuZGlzcGxheVdlZWtEYXlzID0gdGhpcy5wb0NhbGVuZGFyTGFuZ1NlcnZpY2UuZ2V0V2Vla0RheXNBcnJheSgpO1xuICAgIHRoaXMuZGlzcGxheU1vbnRocyA9IHRoaXMucG9DYWxlbmRhckxhbmdTZXJ2aWNlLmdldE1vbnRoc0FycmF5KCk7XG4gICAgdGhpcy5kaXNwbGF5TW9udGggPSB0aGlzLmRpc3BsYXlNb250aHNbdGhpcy5kaXNwbGF5TW9udGhOdW1iZXJdO1xuICAgIHRoaXMuZGlzcGxheVRvZGF5ID0gdGhpcy5wb0NhbGVuZGFyTGFuZ1NlcnZpY2UuZ2V0VG9kYXlMYWJlbCgpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVEYXRlKHZhbHVlOiBEYXRlID0gbmV3IERhdGUoKSkge1xuICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSh2YWx1ZSk7XG5cbiAgICB0aGlzLmN1cnJlbnRNb250aE51bWJlciA9IGRhdGUuZ2V0TW9udGgoKTtcbiAgICB0aGlzLmN1cnJlbnRZZWFyID0gZGF0ZS5nZXRGdWxsWWVhcigpO1xuICAgIHRoaXMudXBkYXRlRGlzcGxheSh0aGlzLmN1cnJlbnRZZWFyLCB0aGlzLmN1cnJlbnRNb250aE51bWJlcik7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZURlY2FkZSh5ZWFyOiBudW1iZXIpIHtcbiAgICB0aGlzLmFkZEFsbFllYXJzSW5EZWNhZGUoeWVhcik7XG4gICAgdGhpcy5kaXNwbGF5U3RhcnREZWNhZGUgPSB5ZWFyO1xuICAgIHRoaXMuZGlzcGxheUZpbmFsRGVjYWRlID0geWVhciArIDk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZURpc3BsYXkoeWVhcjogbnVtYmVyLCBtb250aDogbnVtYmVyKSB7XG4gICAgY29uc3QgY2FsZW5kYXJBcnJheSA9IHRoaXMucG9DYWxlbmRhclNlcnZpY2UubW9udGhEYXlzKHllYXIsIG1vbnRoKTtcbiAgICB0aGlzLmRpc3BsYXlEYXlzID0gW10uY29uY2F0LmFwcGx5KFtdLCBjYWxlbmRhckFycmF5KTtcbiAgICB0aGlzLmRpc3BsYXlNb250aE51bWJlciA9IG1vbnRoO1xuICAgIHRoaXMuZGlzcGxheU1vbnRoID0gdGhpcy5kaXNwbGF5TW9udGhzW21vbnRoXTtcbiAgICB0aGlzLmRpc3BsYXlZZWFyID0geWVhcjtcbiAgICB0aGlzLmdldERlY2FkZUFycmF5KHllYXIpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwicG8tY2FsZW5kYXItd3JhcHBlclwiPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNEYXlWaXNpYmxlXCI+XG4gICAgPHBvLWNhbGVuZGFyLWhlYWRlclxuICAgICAgW3AtaGlkZS1wcmV2aW91c109XCJpc0VuZFBhcnRcIlxuICAgICAgW3AtaGlkZS1uZXh0XT1cImlzU3RhcnRQYXJ0ICYmICFyZXNwb25zaXZlXCJcbiAgICAgIChwLXByZXZpb3VzKT1cIm9uUHJldmlvdXNNb250aCgpXCJcbiAgICAgIChwLW5leHQpPVwib25OZXh0TW9udGgoKVwiXG4gICAgPlxuICAgICAgPHNwYW4gY2xhc3M9XCJwby1jbGlja2FibGUgcG8tbXItMVwiIChjbGljayk9XCJzZWxlY3REaXNwbGF5TW9kZSgnbW9udGgnKVwiPnt7IGRpc3BsYXlNb250aCB9fTwvc3Bhbj5cbiAgICAgIDxzcGFuIGNsYXNzPVwicG8tY2xpY2thYmxlXCIgKGNsaWNrKT1cInNlbGVjdERpc3BsYXlNb2RlKCd5ZWFyJylcIj57eyBkaXNwbGF5WWVhciB9fTwvc3Bhbj5cbiAgICA8L3BvLWNhbGVuZGFyLWhlYWRlcj5cblxuICAgIDxkaXYgY2xhc3M9XCJwby1jYWxlbmRhci1jb250ZW50XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicG8tY2FsZW5kYXItbGFiZWxzXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwby1jYWxlbmRhci1sYWJlbFwiICpuZ0Zvcj1cImxldCB3ZWVrRGF5IG9mIGRpc3BsYXlXZWVrRGF5c1wiPlxuICAgICAgICAgIHt7IHdlZWtEYXkgfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cInBvLWNhbGVuZGFyLWNvbnRlbnQtbGlzdC1kYXlcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICpuZ0Zvcj1cImxldCBkYXkgb2YgZGlzcGxheURheXNcIlxuICAgICAgICAgIGNsYXNzPVwicG8tY2FsZW5kYXItZGF5XCJcbiAgICAgICAgICBbbmdDbGFzc109XCJnZXREYXlCYWNrZ3JvdW5kQ29sb3IoZGF5KVwiXG4gICAgICAgICAgKGNsaWNrKT1cIm9uU2VsZWN0RGF0ZShkYXkpXCJcbiAgICAgICAgICAobW91c2VlbnRlcik9XCJvbk1vdXNlRW50ZXIoZGF5KVwiXG4gICAgICAgICAgKG1vdXNlbGVhdmUpPVwib25Nb3VzZUxlYXZlKClcIlxuICAgICAgICAgIGF0dHItY2FsZW5kYXJcbiAgICAgICAgPlxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZGF5ICE9PSAwXCIgW25nQ2xhc3NdPVwiZ2V0RGF5Rm9yZWdyb3VuZENvbG9yKGRheSlcIj5cbiAgICAgICAgICAgIHt7IGRheS5nZXREYXRlKCkgfX1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc01vbnRoVmlzaWJsZVwiPlxuICAgIDxwby1jYWxlbmRhci1oZWFkZXIgKHAtcHJldmlvdXMpPVwidXBkYXRlWWVhcigtMSlcIiAocC1uZXh0KT1cInVwZGF0ZVllYXIoMSlcIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwicG8tY2xpY2thYmxlXCIgKGNsaWNrKT1cInNlbGVjdERpc3BsYXlNb2RlKCd5ZWFyJylcIj5cbiAgICAgICAge3sgZGlzcGxheVllYXIgfX1cbiAgICAgIDwvc3Bhbj5cbiAgICA8L3BvLWNhbGVuZGFyLWhlYWRlcj5cblxuICAgIDxkaXYgY2xhc3M9XCJwby1jYWxlbmRhci1jb250ZW50XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicG8tY2FsZW5kYXItbGFiZWxzXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwby1jYWxlbmRhci1sYWJlbFwiPlxuICAgICAgICAgIHt7IG1vbnRoTGFiZWwgfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJwby1jYWxlbmRhci1jb250ZW50LWxpc3QtbW9udGhcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICpuZ0Zvcj1cImxldCBtb250aCBvZiBkaXNwbGF5TW9udGhzOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgICBjbGFzcz1cInBvLWNhbGVuZGFyLW1vbnRoXCJcbiAgICAgICAgICBbbmdDbGFzc109XCJnZXRCYWNrZ3JvdW5kQ29sb3IoaSwgZGlzcGxheU1vbnRoTnVtYmVyKVwiXG4gICAgICAgICAgKGNsaWNrKT1cIm9uU2VsZWN0TW9udGgoZGlzcGxheVllYXIsIGkpXCJcbiAgICAgICAgICBhdHRyLWNhbGVuZGFyXG4gICAgICAgID5cbiAgICAgICAgICA8c3BhbiBbbmdDbGFzc109XCJnZXRGb3JlZ3JvdW5kQ29sb3IoaSwgZGlzcGxheU1vbnRoTnVtYmVyKVwiPlxuICAgICAgICAgICAge3sgbW9udGggfX1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc1llYXJWaXNpYmxlXCI+XG4gICAgPHBvLWNhbGVuZGFyLWhlYWRlciAocC1wcmV2aW91cyk9XCJ1cGRhdGVZZWFyKC0xMClcIiAocC1uZXh0KT1cInVwZGF0ZVllYXIoMTApXCI+XG4gICAgICB7eyBkaXNwbGF5U3RhcnREZWNhZGUgfX0gLSB7eyBkaXNwbGF5RmluYWxEZWNhZGUgfX1cbiAgICA8L3BvLWNhbGVuZGFyLWhlYWRlcj5cblxuICAgIDxkaXYgY2xhc3M9XCJwby1jYWxlbmRhci1jb250ZW50XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicG8tY2FsZW5kYXItbGFiZWxzXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwby1jYWxlbmRhci1sYWJlbFwiPlxuICAgICAgICAgIHt7IHllYXJMYWJlbCB9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzPVwicG8tY2FsZW5kYXItY29udGVudC1saXN0LXllYXJcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICpuZ0Zvcj1cImxldCB5ZWFyIG9mIGRpc3BsYXlEZWNhZGU7IGxldCBpID0gaW5kZXhcIlxuICAgICAgICAgIGNsYXNzPVwicG8tY2FsZW5kYXIteWVhclwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwiZ2V0QmFja2dyb3VuZENvbG9yKHllYXIsIGN1cnJlbnRZZWFyKVwiXG4gICAgICAgICAgKGNsaWNrKT1cIm9uU2VsZWN0WWVhcih5ZWFyLCBkaXNwbGF5TW9udGhOdW1iZXIpXCJcbiAgICAgICAgICBhdHRyLWNhbGVuZGFyXG4gICAgICAgID5cbiAgICAgICAgICA8c3BhbiBbbmdDbGFzc109XCJnZXRGb3JlZ3JvdW5kQ29sb3IoeWVhciwgY3VycmVudFllYXIpXCI+XG4gICAgICAgICAgICB7eyB5ZWFyIH19XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXJhbmdlXCI+XG4gICAgPGRpdiBjbGFzcz1cInBvLWNhbGVuZGFyLWZvb3RlclwiPlxuICAgICAgPGRpdiBjbGFzcz1cInBvLWNhbGVuZGFyLWZvb3Rlci10b2RheVwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3M9XCJwby1jYWxlbmRhci1mb290ZXItdG9kYXktYnV0dG9uXCJcbiAgICAgICAgICAoY2xpY2spPVwib25TZWxlY3REYXRlKHRvZGF5KVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImlzVG9kYXlVbmF2YWlsYWJsZSgpXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGRpc3BsYXlUb2RheSB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuIl19
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tY2hhcnQtc2VyaWUuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9jb21wb25lbnRzL3BvLWNoYXJ0L2ludGVyZmFjZXMvcG8tY2hhcnQtc2VyaWUuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQb0NoYXJ0VHlwZSB9IGZyb20gJy4uL2VudW1zL3BvLWNoYXJ0LXR5cGUuZW51bSc7XG5cbi8qKlxuICogQHVzZWRCeSBQb0NoYXJ0Q29tcG9uZW50XG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKlxuICogSW50ZXJmYWNlIGRhcyBzZXJpZXMgZGluw6JtaWNhcyBkbyBgcG8tY2hhcnRgIHF1ZSBwb3NzaWJpbGl0YSBkZXNlbmhhciBncsOhZmljb3MgZG9zIHRpcG9zIGBhcmVhYCwgYGJhcmAsIGBjb2x1bW5gLCBgbGluZWAsIGBkb251dGAgZSBgcGllYFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBvQ2hhcnRTZXJpZSB7XG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRGV0ZXJtaW5hIGEgY29yIGRhIHPDqXJpZS4gQXMgbWFuZWlyYXMgZGUgY3VzdG9taXphciBvICpwcmVzZXQqIHBhZHLDo28gZGUgY29yZXMgc8OjbzpcbiAgICogLSBIZXhhZGV4aW1hbCwgcG9yIGV4ZW1wbG8gYCNjNjQ4NDBgO1xuICAgKiAtIFJHQiwgY29tbyBgcmdiKDAsIDAsIDE2NSlgXG4gICAqIC0gTyBub21lIGRhIGNvciwgcG9yIGV4ZW1wbG8gYGJsdWVgO1xuICAgKiAtIFVzYW5kbyB1bWEgZGFzIGNvcmVzIGRvIHRlbWEgZG8gUE86XG4gICAqICAgIFZhbG9yZXMgdsOhbGlkb3M6XG4gICAqICAgIC0gPHNwYW4gY2xhc3M9XCJkb3QgcG8tY29sb3ItMDFcIj48L3NwYW4+IGBjb2xvci0wMWBcbiAgICogICAgLSA8c3BhbiBjbGFzcz1cImRvdCBwby1jb2xvci0wMlwiPjwvc3Bhbj4gYGNvbG9yLTAyYFxuICAgKiAgICAtIDxzcGFuIGNsYXNzPVwiZG90IHBvLWNvbG9yLTAzXCI+PC9zcGFuPiBgY29sb3ItMDNgXG4gICAqICAgIC0gPHNwYW4gY2xhc3M9XCJkb3QgcG8tY29sb3ItMDRcIj48L3NwYW4+IGBjb2xvci0wNGBcbiAgICogICAgLSA8c3BhbiBjbGFzcz1cImRvdCBwby1jb2xvci0wNVwiPjwvc3Bhbj4gYGNvbG9yLTA1YFxuICAgKiAgICAtIDxzcGFuIGNsYXNzPVwiZG90IHBvLWNvbG9yLTA2XCI+PC9zcGFuPiBgY29sb3ItMDZgXG4gICAqICAgIC0gPHNwYW4gY2xhc3M9XCJkb3QgcG8tY29sb3ItMDdcIj48L3NwYW4+IGBjb2xvci0wN2BcbiAgICogICAgLSA8c3BhbiBjbGFzcz1cImRvdCBwby1jb2xvci0wOFwiPjwvc3Bhbj4gYGNvbG9yLTA4YFxuICAgKiAgICAtIDxzcGFuIGNsYXNzPVwiZG90IHBvLWNvbG9yLTA5XCI+PC9zcGFuPiBgY29sb3ItMDlgXG4gICAqICAgIC0gPHNwYW4gY2xhc3M9XCJkb3QgcG8tY29sb3ItMTBcIj48L3NwYW4+IGBjb2xvci0xMGBcbiAgICogICAgLSA8c3BhbiBjbGFzcz1cImRvdCBwby1jb2xvci0xMVwiPjwvc3Bhbj4gYGNvbG9yLTExYFxuICAgKiAgICAtIDxzcGFuIGNsYXNzPVwiZG90IHBvLWNvbG9yLTEyXCI+
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tY2hhcnQtc2VyaWUuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9jb21wb25lbnRzL3BvLWNoYXJ0L2ludGVyZmFjZXMvcG8tY2hhcnQtc2VyaWUuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQb0NoYXJ0VHlwZSB9IGZyb20gJy4uL2VudW1zL3BvLWNoYXJ0LXR5cGUuZW51bSc7XG5cbi8qKlxuICogQHVzZWRCeSBQb0NoYXJ0Q29tcG9uZW50XG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKlxuICogSW50ZXJmYWNlIGRhcyBzZXJpZXMgZGluw6JtaWNhcyBkbyBgcG8tY2hhcnRgIHF1ZSBwb3NzaWJpbGl0YSBkZXNlbmhhciBncsOhZmljb3MgZG9zIHRpcG9zIGBhcmVhYCwgYGJhcmAsIGBjb2x1bW5gLCBgbGluZWAsIGBkb251dGAgZSBgcGllYFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBvQ2hhcnRTZXJpZSB7XG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRGV0ZXJtaW5hIGEgY29yIGRhIHPDqXJpZS4gQXMgbWFuZWlyYXMgZGUgY3VzdG9taXphciBvICpwcmVzZXQqIHBhZHLDo28gZGUgY29yZXMgc8OjbzpcbiAgICogLSBIZXhhZGV4aW1hbCwgcG9yIGV4ZW1wbG8gYCNjNjQ4NDBgO1xuICAgKiAtIFJHQiwgY29tbyBgcmdiKDAsIDAsIDE2NSlgXG4gICAqIC0gTyBub21lIGRhIGNvciwgcG9yIGV4ZW1wbG8gYGJsdWVgO1xuICAgKiAtIFVzYW5kbyB1bWEgZGFzIGNvcmVzIGRvIHRlbWEgZG8gUE86XG4gICAqICAgIFZhbG9yZXMgdsOhbGlkb3M6XG4gICAqICAgIC0gPHNwYW4gY2xhc3M9XCJkb3QgcG8tY29sb3ItMDFcIj48L3NwYW4+IGBjb2xvci0wMWBcbiAgICogICAgLSA8c3BhbiBjbGFzcz1cImRvdCBwby1jb2xvci0wMlwiPjwvc3Bhbj4gYGNvbG9yLTAyYFxuICAgKiAgICAtIDxzcGFuIGNsYXNzPVwiZG90IHBvLWNvbG9yLTAzXCI+PC9zcGFuPiBgY29sb3ItMDNgXG4gICAqICAgIC0gPHNwYW4gY2xhc3M9XCJkb3QgcG8tY29sb3ItMDRcIj48L3NwYW4+IGBjb2xvci0wNGBcbiAgICogICAgLSA8c3BhbiBjbGFzcz1cImRvdCBwby1jb2xvci0wNVwiPjwvc3Bhbj4gYGNvbG9yLTA1YFxuICAgKiAgICAtIDxzcGFuIGNsYXNzPVwiZG90IHBvLWNvbG9yLTA2XCI+PC9zcGFuPiBgY29sb3ItMDZgXG4gICAqICAgIC0gPHNwYW4gY2xhc3M9XCJkb3QgcG8tY29sb3ItMDdcIj48L3NwYW4+IGBjb2xvci0wN2BcbiAgICogICAgLSA8c3BhbiBjbGFzcz1cImRvdCBwby1jb2xvci0wOFwiPjwvc3Bhbj4gYGNvbG9yLTA4YFxuICAgKiAgICAtIDxzcGFuIGNsYXNzPVwiZG90IHBvLWNvbG9yLTA5XCI+PC9zcGFuPiBgY29sb3ItMDlgXG4gICAqICAgIC0gPHNwYW4gY2xhc3M9XCJkb3QgcG8tY29sb3ItMTBcIj48L3NwYW4+IGBjb2xvci0xMGBcbiAgICogICAgLSA8c3BhbiBjbGFzcz1cImRvdCBwby1jb2xvci0xMVwiPjwvc3Bhbj4gYGNvbG9yLTExYFxuICAgKiAgICAtIDxzcGFuIGNsYXNzPVwiZG90IHBvLWNvbG9yLTEyXCI+PC9zcGFuPiBgY29sb3ItMTJgXG4gICAqXG4gICAqXG4gICAqIC0gQSBwYXJ0aXIgZGEgMTPCsCBzw6lyaWUgbyB2YWxvciBkYSBjb3Igc2Vyw6EgcHJldGEgY2FzbyBuw6NvIHNlamEgZW52aWFkYSB1bWEgY29yIGN1c3RvbWl6YWRhLlxuICAgKi9cbiAgY29sb3I/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRGVmaW5lIGEgbGlzdGEgZGUgdmFsb3JlcyBwYXJhIGEgc8OpcmllLiBPcyB0aXBvcyBlc3BlcmFkb3Mgc8OjbyBkZSBhY29yZG8gY29tIG8gdGlwbyBkZSBncsOhZmljbzpcbiAgICogLSBQYXJhIGdyw6FmaWNvcyBkb3MgdGlwb3MgYGRvbnV0YCBlIGBwaWVgLCBlc3BlcmEtc2UgKm51bWJlcio7XG4gICAqIC0gUGFyYSBncsOhZmljb3MgZG9zIHRpcG9zIGBhcmVhYCwgYGJhcmAsIGBjb2x1bW5gIGUgYGxpbmVgLCBlc3BlcmEtc2UgdW0gKmFycmF5KiBkZSBgZGF0YWAuXG4gICAqXG4gICAqID4gU2UgcGFzc2FkbyB2YWxvciBgbnVsbGAgZW0gZGV0ZXJtaW5hZG8gaXRlbSBkYSBsaXN0YSwgYSBpdGVyYcOnw6NvIGlyw6EgaWdub3LDoS1sby5cbiAgICovXG4gIGRhdGE/OiBudW1iZXIgfCBBcnJheTxudW1iZXI+O1xuXG4gIC8qKiBSw7N0dWxvIHJlZmVyw6puY2lhIGRhIHPDqXJpZTsuICovXG4gIGxhYmVsPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIERlZmluZSBvIHRleHRvIHF1ZSBzZXLDoSBleGliaWRvIGFvIHBhc3NhciBvIG1vdXNlIHBvciBjaW1hIGRhcyBzw6lyaWVzIGRvICpjaGFydCouXG4gICAqXG4gICAqID4gQ2FzbyBuw6NvIHNlamEgaW5mb3JtYWRvIHVtIHZhbG9yIHBhcmEgbyAqdG9vbHRpcCosIHNlcsOhIGV4aWJpZG8gZGEgc2VndWludGUgZm9ybWE6XG4gICAqIC0gYGRvbnV0YDogYGxhYmVsYDogdmFsb3IgcHJvcG9yY2lvbmFsIGFvIHRvdGFsIGVtIHBvcmNlbnRhZ2VtLlxuICAgKiAtIGBhcmVhYCwgYGJhcmAsIGBjb2x1bW5gLCBgbGluZWAgZSBgcGllYDogYGxhYmVsYDogYGRhdGFgLlxuICAgKi9cbiAgdG9vbHRpcD86IHN0cmluZztcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBEZWZpbmUgZW0gcXVhbCB0aXBvIGRlIGdyw6FmaWNvIHF1ZSBzZXLDoSBleGliaWRhIGEgc8OpcmllLiDDiSBwb3Nzw612ZWwgY29tYmluYXIgc8OpcmllcyBkb3MgdGlwb3MgYGNvbHVtbmAgZSBgbGluZWAgbm8gbWVzbW8gZ3LDoWZpY28uIFBhcmEgaXNzbywgYmFzdGEgY3JpYXIgYXMgc8OpcmllcyBjb20gYXMgY29uZmlndXJhw6fDtWVzOlxuICAgKiAtIFNlcmllIEE6IGB7IHR5cGU6IENoYXJ0VHlwZS5Db2x1bW4sIGRhdGE6IC4uLiB9YDtcbiAgICogLSBTw6lyaWUgQjogYHsgdHlwZTogQ2hhcnRUeXBlLkxpbmUsIGRhdGE6IC4uLiB9YC5cbiAgICpcbiAgICogU2UgdGFudG8gYHAtdHlwZWAgcXVhbnRvIGB7IHR5cGUgfWAgZm9yZW0gaWdub3JhZG9zLCBvIHBhZHLDo28gZ2VyYWRvIHBlbG8gY29tcG9uZW50ZSBzZXLDoTpcbiAgICogLSBgY29sdW1uYDogc2UgYGRhdGFgIHJlY2ViZXIgYEFycmF5PG51bWJlcj5gO1xuICAgKiAtIGBwaWVgOiBzZSBgZGF0YWAgZm9yICpudW1iZXIqLlxuICAgKlxuICAgKiA+IFNlIHV0aWxpemFkYSBhIHByb3ByaWVkYWRlIGBwLXR5cGVgLCBkaXNwZW5zYS1zZSBhIGRlZmluacOnw6NvIGRlc3RhIHByb3ByaWVkYWRlLiBQb3LDqW0sIHNlIGhvdXZlciBkZWNsYXJhw6fDo28gcGFyYSBhbWJhcywgbyB2YWxvciBge3R5cGV9YCBkYSBwcmltZWlyYSBzw6lyaWUgc29icmVzY3JldmVyw6EgbyB2YWxvciBkZWZpbmlkbyBlbSBgcC10eXBlYC5cbiAgICpcbiAgICogPiBPIGNvbXBvbmVudGUgc8OzIGV4aWJpcsOhIGFzIHPDqXJpZXMgcXVlIHRpdmVyZW0gbyBtZXNtbyBgdHlwZWAgZGVmaW5pZG8sIGV4Y2V0byBwYXJhIG1lc2NsYWdlbSBwYXJhIHRpcG9zIGBjb2x1bW5gIGUgYGxpbmVgLlxuICAgKi9cbiAgdHlwZT86IFBvQ2hhcnRUeXBlO1xufVxuIl19
|
|
@@ -441,7 +441,7 @@ export class PoComboBaseComponent {
|
|
|
441
441
|
this.setInputValue(optionLabel);
|
|
442
442
|
}
|
|
443
443
|
if (isUpdateModel) {
|
|
444
|
-
const optionValue =
|
|
444
|
+
const optionValue = option?.value !== undefined ? option.value : undefined;
|
|
445
445
|
this.updateModel(optionValue);
|
|
446
446
|
}
|
|
447
447
|
}
|
|
@@ -800,4 +800,4 @@ __decorate([
|
|
|
800
800
|
type: Input,
|
|
801
801
|
args: ['p-literals']
|
|
802
802
|
}] }); })();
|
|
803
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tY29tYm8tYmFzZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2NvbXBvbmVudHMvcG8tZmllbGQvcG8tY29tYm8vcG8tY29tYm8tYmFzZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUNBLE9BQU8sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQWUsTUFBTSxlQUFlLENBQUM7QUFFNUYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUU3RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDckYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHL0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7OztBQU9oRSxNQUFNLDhCQUE4QixHQUFHLEdBQUcsQ0FBQztBQUMzQyxNQUFNLDRCQUE0QixHQUFHLE9BQU8sQ0FBQztBQUM3QyxNQUFNLDRCQUE0QixHQUFHLE9BQU8sQ0FBQztBQUU3QyxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRztJQUNwQyxFQUFFLEVBQW1CO1FBQ25CLE1BQU0sRUFBRSxlQUFlO0tBQ3hCO0lBQ0QsRUFBRSxFQUFtQjtRQUNuQixNQUFNLEVBQUUsc0JBQXNCO0tBQy9CO0lBQ0QsRUFBRSxFQUFtQjtRQUNuQixNQUFNLEVBQUUsd0JBQXdCO0tBQ2pDO0lBQ0QsRUFBRSxFQUFtQjtRQUNuQixNQUFNLEVBQUUsbUJBQW1CO0tBQzVCO0NBQ0YsQ0FBQztBQUVGOzs7Ozs7Ozs7Ozs7Ozs7O0dBZ0JHO0FBRUgsTUFBTSxPQUFnQixvQkFBb0I7SUFtZHhDLFlBQVksZUFBa0M7UUFs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QUF6QyxLQUFLO21CQUFDLGlCQUFpQjtZQWtDQyxRQUFRO2tCQUFoQyxLQUFLO21CQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBWYWxpZGF0b3IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgRGlyZWN0aXZlLCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBjb252ZXJ0VG9Cb29sZWFuLCBpc1R5cGVvZiwgdmFsaWRWYWx1ZSB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL3V0aWwnO1xuaW1wb3J0IHsgUG9MYW5ndWFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9wby1sYW5ndWFnZS9wby1sYW5ndWFnZS5zZXJ2aWNlJztcbmltcG9ydCB7IHBvTG9jYWxlRGVmYXVsdCB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3BvLWxhbmd1YWdlL3BvLWxhbmd1YWdlLmNvbnN0YW50JztcbmltcG9ydCB7IElucHV0Qm9vbGVhbiB9IGZyb20gJy4uLy4uLy4uL2RlY29yYXRvcnMnO1xuaW1wb3J0IHsgcmVxdWlyZWRGYWlsZWQgfSBmcm9tICcuLi92YWxpZGF0b3JzJztcblxuaW1wb3J0IHsgUG9Db21ib0ZpbHRlciB9IGZyb20gJy4vaW50ZXJmYWNlcy9wby1jb21iby1maWx0ZXIuaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvQ29tYm9GaWx0ZXJNb2RlIH0gZnJvbSAnLi9wby1jb21iby1maWx0ZXItbW9kZS5lbnVtJztcbmltcG9ydCB7IFBvQ29tYm9GaWx0ZXJTZXJ2aWNlIH0gZnJvbSAnLi9wby1jb21iby1maWx0ZXIuc2VydmljZSc7XG5pbXBvcnQgeyBQb0NvbWJvR3JvdXAgfSBmcm9tICcuL2ludGVyZmFjZXMvcG8tY29tYm8tZ3JvdXAuaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvQ29tYm9MaXRlcmFscyB9IGZyb20gJy4vaW50ZXJmYWNlcy9wby1jb21iby1saXRlcmFscy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUG9Db21ib09wdGlvbiB9IGZyb20gJy4vaW50ZXJmYWNlcy9wby1jb21iby1vcHRpb24uaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvQ29tYm9PcHRpb25Hcm91cCB9IGZyb20gJy4vaW50ZXJmYWNlcy9wby1jb21iby1vcHRpb24tZ3JvdXAuaW50ZXJmYWNlJztcblxuY29uc3QgUE9fQ09NQk9fREVCT1VOQ0VfVElNRV9ERUZBVUxUID0gNDAwO1xuY29uc3QgUE9fQ09NQk9fRklFTERfTEFCRUxfREVGQVVMVCA9ICdsYWJlbCc7XG5jb25zdCBQT19DT01CT19GSUVMRF9WQUxVRV9ERUZBVUxUID0gJ3ZhbHVlJztcblxuZXhwb3J0IGNvbnN0IHBvQ29tYm9MaXRlcmFsc0RlZmF1bHQgPSB7XG4gIGVuOiA8UG9Db21ib0xpdGVyYWxzPntcbiAgICBub0RhdGE6ICdObyBkYXRhIGZvdW5kJ1xuICB9LFxuICBlczogPFBvQ29tYm9MaXRlcmFscz57XG4gICAgbm9EYXRhOiAnRGF0b3Mgbm8gZW5jb250cmFkb3MnXG4gIH0sXG4gIHB0OiA8UG9Db21ib0xpdGVyYWxzPntcbiAgICBub0RhdGE6ICdOZW5odW0gZGFkbyBlbmNvbnRyYWRvJ1xuICB9LFxuICBydTogPFBvQ29tYm9MaXRlcmFscz57XG4gICAgbm9EYXRhOiAn0JTQsNC90L3Ri9C1INC90LUg0L3QsNC50LTQtdC90YsnXG4gIH1cbn07XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uXG4gKlxuICogTyBgcG8tY29tYm9gIGV4aWJlIHVtYSBsaXN0YSBkZSBvcMOnw7VlcyBjb20gZsOhY2lsIHNlbGXDp8OjbyBlIGZpbHRyYWdlbS5cbiAqXG4gKiBBbMOpbSBkYSBleGliacOnw6NvIHBhZHLDo28sIG5lbGUgw6kgcG9zc8OtdmVsIGxpc3RhciBhcyBvcMO1ZXMgZW0gYWdydXBhbWVudG9zLlxuICpcbiAqIMOJIHBvc3PDrXZlbCBzZWxlY2lvbmFyIGUgbmF2ZWdhciBlbnRyZSBhcyBvcMOnw7VlcyBkYSBsaXN0YSB0YW50byBhdHJhdsOpcyBkbyAqbW91c2UqIHF1YW50byBkbyB0ZWNsYWRvLiBObyB0ZWNsYWRvIG5hdmVndWUgY29tXG4gKiBhcyBzZXRhcyBlIHByZXNzaW9uZSAqRW50ZXIqIG5hIG9ww6fDo28gcXVlIGRlc2VqYXIuXG4gKlxuICogQ29tIGVsZSB0YW1iw6ltIMOpIHBvc3PDrXZlbCBkZWZpbmlyIHVtYSBsaXN0YSDDoCBwYXJ0aXIgZGEgcmVxdWlzacOnw6NvIGRlIHVtIHNlcnZpw6dvIGRlZmluaWRvIGVtIGBwLWZpbHRlci1zZXJ2aWNlYC5cbiAqXG4gKiBFbSBgcC1maWx0ZXItbW9kZWAsIG8gZmlsdHJvIHBvZGVyw6Egc2VyIGNvbmZpZ3VyYWRvIHBhcmEgYnVzY2FyIG9ww7VlcyBxdWUgY29ycmVzcG9uZGFtIGFvIGluw61jaW8sIGZpbSBvdSBxdWUgY29udGVuaGEgbyB2YWxvciBkaWdpdGFkby5cbiAqXG4gKiBPIGBwby1jb21ib2AgZ3VhcmRhIG8gw7psdGltbyB2YWxvciBjYXNvIG8gdXN1w6FyaW8gZGVzaXN0YSBkZSB1bWEgYnVzY2EsIGRlaXhhbmRvIG8gY2FtcG8gb3UgcHJlc3Npb25hbmRvICpFc2MqLiBDYXNvIHNlamEgZGlnaXRhZG8gbm9cbiAqIGNhbXBvIGRlIGJ1c2NhIGEgZGVzY3Jpw6fDo28gY29tcGxldGEgZGUgdW0gaXRlbSwgZW50w6NvIGEgc2VsZcOnw6NvIHNlcsOhIGF1dG9tYXRpY2FtZW50ZSBlZmV0dWFkYSBhbyBkZWl4YXIgbyBjYW1wbyBvdSBwcmVzc2lvbmFuZG8gKkVudGVyKi5cbiAqL1xuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgUG9Db21ib0Jhc2VDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25Jbml0LCBWYWxpZGF0b3Ige1xuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBBcGxpY2EgZm9jbyBubyBlbGVtZW50byBhbyBzZXIgaW5pY2lhZG8uXG4gICAqXG4gICAqID4gQ2FzbyBtYWlzIGRlIHVtIGVsZW1lbnRvIHNlamEgY29uZmlndXJhZG8gY29tIGVzc2EgcHJvcHJpZWRhZGUsIGFwZW5hcyBvIMO6bHRpbW8gZWxlbWVudG8gZGVjbGFyYWRvIGNvbSBlbGEgdGVyw6EgbyBmb2NvLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICBASW5wdXQoJ3AtYXV0by1mb2N1cycpIEBJbnB1dEJvb2xlYW4oKSBhdXRvRm9jdXM6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKiogTGFiZWwgbm8gY29tcG9uZW50ZS4gKi9cbiAgQElucHV0KCdwLWxhYmVsJykgbGFiZWw/OiBzdHJpbmc7XG5cbiAgLyoqIFRleHRvIGRlIGFwb2lvIHBhcmEgbyBjYW1wby4gKi9cbiAgQElucHV0KCdwLWhlbHAnKSBoZWxwPzogc3RyaW5nO1xuXG4gIC8qKiBOb21lIGRvIGNvbXBvbmVudGUuICovXG4gIEBJbnB1dCgnbmFtZScpIG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBOZXN0YSBwcm9wcmllZGFkZSBkZXZlIHNlciBpbmZvcm1hZGEgYSBVUkwgZG8gc2VydmnDp28gZW0gcXVlIHNlcsOhIHJlYWxpemFkbyBvIGZpbHRybyBwYXJhIGNhcnJlZ2FtZW50byBkYSBsaXN0YSBkZVxuICAgKiBpdGVucyBubyBjb21wb25lbnRlLlxuICAgKiBDYXNvIGhhamEgYSBuZWNlc3NpZGFkZSBkZSBjdXN0b21pemHDp8OjbywgZW50w6NvIHBvZGUgc2VyIGluZm9ybWFkbyB1bSBzZXJ2acOnbyBpbXBsZW1lbnRhbmRvIGEgaW50ZXJmYWNlIFBvQ29tYm9GaWx0ZXIuXG4gICAqXG4gICAqIENhc28gdXRpbGl6YWRvIHVtYSBVUkwsIG8gc2VydmnDp28gZGV2ZSBzZXIgcmV0b3JuYWRvIG5vIHBhZHLDo28gQVBJIFRPVFZTIGUgdXRpbGl6YSBhcyBwcm9wcmllZGFkZXNcbiAgICogYHAtZmllbGQtbGFiZWxgIGUgYHAtZmllbGQtdmFsdWVgIHBhcmEgYSBjb25zdHJ1w6fDo28gZGEgbGlzdGEgZGUgaXRlbnMuXG4gICAqXG4gICAqIFF1YW5kbyB1dGlsaXphZGEgdW1hIFVSTCBkZSBzZXJ2acOnbywgZW50w6NvIHNlcsOhIGNvbmNhdGVuYWRhIG5lc3RhIFVSTCBvIHZhbG9yIHF1ZSBkZXNlamEtc2UgZmlsdHJhciBkYSBzZWd1aW50ZSBmb3JtYTpcbiAgICogYGBgXG4gICAqIHVybCArID9maWx0ZXI9UGV0ZXJcbiAgICogYGBgXG4gICAqXG4gICAqIFNlIGZvciBkZWZpbmlkYSBhIHByb3ByaWVkYWRlIGBwLWZpbHRlci1wYXJhbXNgLCBhIG1lc21hIHRhbWLDqW0gc2Vyw6EgY29uY2F0ZW5hZGEuIFBvciBleGVtcGxvLCBwYXJhIG9cbiAgICogcGFyw6JtZXRybyBgeyBhZ2U6IDIzIH1gIGEgVVJMIGZpY2FyaWE6XG4gICAqXG4gICAqIGBgYFxuICAgKiB1cmwgKyA/cGFnZT0xJnBhZ2VTaXplPTIwJmFnZT0yMyZmaWx0ZXI9UGV0ZXJcbiAgICogYGBgXG4gICAqL1xuICBASW5wdXQoJ3AtZmlsdGVyLXNlcnZpY2UnKSBmaWx0ZXJTZXJ2aWNlOiBQb0NvbWJvRmlsdGVyIHwgc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIERlZmluZSBvIMOtY29uZSBxdWUgc2Vyw6EgZXhpYmlkbyBubyBpbsOtY2lvIGRvIGNhbXBvLlxuICAgKlxuICAgKiDDiSBwb3Nzw612ZWwgdXNhciBxdWFscXVlciB1bSBkb3Mgw61jb25lcyBkYSBbQmlibGlvdGVjYSBkZSDDrWNvbmVzXSgvZ3VpZGVzL2ljb25zKS4gY29uZm9ybWUgZXhlbXBsbyBhYmFpeG86XG4gICAqIGBgYFxuICAgKiA8cG8tY29tYm8gcC1pY29uPVwicG8taWNvbi11c2VyXCIgcC1sYWJlbD1cIlBPIGNvbWJvXCI+PC9wby1jb21ibz5cbiAgICogYGBgXG4gICAqIFRhbWLDqW0gw6kgcG9zc8OtdmVsIHV0aWxpemFyIG91dHJhcyBmb250ZXMgZGUgw61jb25lcywgcG9yIGV4ZW1wbG8gYSBiaWJsaW90ZWNhICpGb250IEF3ZXNvbWUqLCBkYSBzZWd1aW50ZSBmb3JtYTpcbiAgICogYGBgXG4gICAqIDxwby1jb21ibyBwLWljb249XCJmYSBmYS1wb2RjYXN0XCIgcC1sYWJlbD1cIlBPIGNvbWJvXCI+PC9wby1jb21ibz5cbiAgICogYGBgXG4gICAqIE91dHJhIG9ww6fDo28gc2VyaWEgYSBjdXN0b21pemHDp8OjbyBkbyDDrWNvbmUgYXRyYXbDqXMgZG8gYFRlbXBsYXRlUmVmYCwgY29uZm9ybWUgZXhlbXBsbyBhYmFpeG86XG4gICAqIGBgYFxuICAgKiA8cG8tY29tYm8gW3AtaWNvbl09XCJ0ZW1wbGF0ZVwiIHAtbGFiZWw9XCJjb21ibyB0ZW1wbGF0ZSBpb25pY1wiPjwvcG8tY29tYm8+XG4gICAqXG4gICAqIDxuZy10ZW1wbGF0ZSAjdGVtcGxhdGU+XG4gICAqICA8aW9uLWljb24gc3R5bGU9XCJmb250LXNpemU6IGluaGVyaXRcIiBuYW1lPVwiaGVhcnRcIj48L2lvbi1pY29uPlxuICAgKiA8L25nLXRlbXBsYXRlPlxuICAgKiBgYGBcbiAgICogPiBQYXJhIG8gw61jb25lIGVucXVhZHJhciBjb3JyZXRhbWVudGUsIGRldmUtc2UgdXRpbGl6YXIgYGZvbnQtc2l6ZTogaW5oZXJpdGAgY2FzbyBvIMOtY29uZSB1dGlsaXphZG8gbsOjbyBhcGxpcXVlLW8uXG4gICAqL1xuICBASW5wdXQoJ3AtaWNvbicpIGljb24/OiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjx2b2lkPjtcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBEZWZpbmUgc2UgYSBpbmRpY2HDp8OjbyBkZSBjYW1wbyBvcGNpb25hbCBzZXLDoSBleGliaWRhLlxuICAgKlxuICAgKiA+IE7Do28gc2Vyw6EgZXhpYmlkYSBhIGluZGljYcOnw6NvIHNlOlxuICAgKiAtIE8gY2FtcG8gY29udGVyIGBwLXJlcXVpcmVkYDtcbiAgICogLSBOw6NvIHBvc3N1aXIgYHAtaGVscGAgZS9vdSBgcC1sYWJlbGAuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCgncC1vcHRpb25hbCcpIG9wdGlvbmFsOiBib29sZWFuO1xuXG4gIC8qKiBTZSB2ZXJkYWRlaXJvLCBvIGNhbXBvIHJlY2ViZXLDoSB1bSBib3TDo28gcGFyYSBzZXIgbGltcG8uICovXG4gIEBJbnB1dCgncC1jbGVhbicpIEBJbnB1dEJvb2xlYW4oKSBjbGVhbj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogU2UgdmVyZGFkZWlybywgbyBldmVudG8gYHAtY2hhbmdlYCByZWNlYmVyw6EgY29tbyBhcmd1bWVudG8gbyBgUG9Db21ib09wdGlvbmAgcmVmZXJlbnRlIMOgIG9ww6fDo28gc2VsZWNpb25hZGEuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCgncC1lbWl0LW9iamVjdC12YWx1ZScpIEBJbnB1dEJvb2xlYW4oKSBlbWl0T2JqZWN0VmFsdWU/OiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogU2UgdmVyZGFkZWlybywgZGVzYWJpbGl0YXLDoSBhIGJ1c2NhIGRlIHVtIGl0ZW0gdmlhIFRBQi5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KCdwLWRpc2FibGVkLXRhYi1maWx0ZXInKSBASW5wdXRCb29sZWFuKCkgZGlzYWJsZWRUYWJGaWx0ZXI/OiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRGV2ZSBzZXIgaW5mb3JtYWRhIHVtYSBmdW7Dp8OjbyBxdWUgc2Vyw6EgZGlzcGFyYWRhIHF1YW5kbyBob3V2ZXIgYWx0ZXJhw6fDtWVzIG5vIG5nTW9kZWwuIEEgZnVuw6fDo28gcmVjZWJlcsOhIGNvbW8gYXJndW1lbnRvIG8gbW9kZWwgbW9kaWZpY2Fkby5cbiAgICpcbiAgICogPiBQb2RlLXNlIG9wdGFyIHBlbG8gcmVjZWJpbWVudG8gZG8gb2JqZXRvIHNlbGVjaW9uYWRvIGFvIGludsOpcyBkbyBtb2RlbCBhdHJhdsOpcyBkYSBwcm9wcmllZGFkZSBgcC1lbWl0LW9iamVjdC12YWx1ZWAuXG4gICAqL1xuICBAT3V0cHV0KCdwLWNoYW5nZScpIGNoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBGdW7Dp8OjbyBwYXJhIGF0dWFsaXphciBvIG5nTW9kZWwgZG8gY29tcG9uZW50ZSwgbmVjZXNzw6FyaW8gcXVhbmRvIG7Do28gZm9yIHV0aWxpemFkbyBkZW50cm8gZGEgdGFnIGZvcm0uXG4gICAqXG4gICAqIE5hIHZlcnPDo28gMTIuMi4wIGRvIEFuZ3VsYXIgYSB2ZXJpZmljYcOnw6NvIGBzdHJpY3RUZW1wbGF0ZXNgIHZlbSB0cnVlIGNvbW8gZGVmYXVsdC4gUG9ydGFudG8sIHBhcmEgdXRpbGl6YXJcbiAgICogdHdvLXdheSBiaW5kaW5nIG5vIGNvbXBvbmVudGUgZGV2ZSBzZSB1dGlsaXphciBkYSBzZWd1aW50ZSBmb3JtYTpcbiAgICpcbiAgICogYGBgXG4gICAqIDxwby1jb21ibyAuLi4gW25nTW9kZWxdPVwiY29tYm9Nb2RlbFwiIChuZ01vZGVsQ2hhbmdlKT1cImNvbWJvTW9kZWwgPSAkZXZlbnRcIj4gPC9wby1jb21ibz5cbiAgICogYGBgXG4gICAqXG4gICAqL1xuICBAT3V0cHV0KCduZ01vZGVsQ2hhbmdlJykgbmdNb2RlbENoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBjYWNoZU9wdGlvbnM6IEFycmF5PFBvQ29tYm9PcHRpb24gfCBQb0NvbWJvR3JvdXA+ID0gW107XG4gIGRlZmF1bHRTZXJ2aWNlOiBQb0NvbWJvRmlsdGVyU2VydmljZTtcbiAgZmlyc3RJbldyaXRlVmFsdWU6IGJvb2xlYW4gPSB0cnVlO1xuICBpc0ZpcnN0RmlsdGVyOiBib29sZWFuID0gdHJ1ZTtcbiAgaXNGaWx0ZXJpbmc6IGJvb2xlYW4gPSBmYWxzZTtcbiAga2V5dXBTdWJzY3JpYmU6IGFueTtcbiAgb25Nb2RlbENoYW5nZTogYW55O1xuICBwcmV2aW91c1NlYXJjaFZhbHVlOiBzdHJpbmcgPSAnJztcbiAgc2VsZWN0ZWRPcHRpb246IFBvQ29tYm9PcHRpb24gfCBQb0NvbWJvR3JvdXA7XG4gIHNlbGVjdGVkVmFsdWU6IGFueTtcbiAgc2VsZWN0ZWRWaWV3OiBhbnk7XG4gIHNlcnZpY2U6IFBvQ29tYm9GaWx0ZXJTZXJ2aWNlO1xuICB2aXNpYmxlT3B0aW9uczogQXJyYXk8UG9Db21ib09wdGlvbiB8IFBvQ29tYm9Hcm91cD4gPSBbXTtcblxuICBwcm90ZWN0ZWQgY2FjaGVTdGF0aWNPcHRpb25zOiBBcnJheTxQb0NvbWJvT3B0aW9uIHwgUG9Db21ib0dyb3VwPiA9IFtdO1xuICBwcm90ZWN0ZWQgY29tYm9PcHRpb25zTGlzdDogQXJyYXk8UG9Db21ib09wdGlvbiB8IFBvQ29tYm9Hcm91cD4gPSBbXTtcbiAgcHJvdGVjdGVkIG9uTW9kZWxUb3VjaGVkOiBhbnkgPSBudWxsO1xuXG4gIHByaXZhdGUgX2NoYW5nZU9uRW50ZXI/OiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX2RlYm91bmNlVGltZT86IG51bWJlciA9IDQwMDtcbiAgcHJpdmF0ZSBfZGlzYWJsZWQ/OiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX2Rpc2FibGVkSW5pdEZpbHRlcj86IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBfZmllbGRMYWJlbD86IHN0cmluZyA9ICdsYWJlbCc7XG4gIHByaXZhdGUgX2ZpZWxkVmFsdWU/OiBzdHJpbmcgPSAndmFsdWUnO1xuICBwcml2YXRlIF9maWx0ZXJNaW5sZW5ndGg/OiBudW1iZXIgPSAwO1xuICBwcml2YXRlIF9maWx0ZXJNb2RlPzogUG9Db21ib0ZpbHRlck1vZGUgPSBQb0NvbWJvRmlsdGVyTW9kZS5zdGFydHNXaXRoO1xuICBwcml2YXRlIF9maWx0ZXJQYXJhbXM/OiBhbnk7XG4gIHByaXZhdGUgX2xpdGVyYWxzPzogUG9Db21ib0xpdGVyYWxzO1xuICBwcml2YXRlIF9vcHRpb25zOiBBcnJheTxQb0NvbWJvT3B0aW9uIHwgUG9Db21ib09wdGlvbkdyb3VwPiA9IFtdO1xuICBwcml2YXRlIF9wbGFjZWhvbGRlcjogc3RyaW5nID0gJyc7XG4gIHByaXZhdGUgX3JlcXVpcmVkPzogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIF9zb3J0PzogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIGxhbmd1YWdlOiBzdHJpbmc7XG5cbiAgLy8gdXRpbGl6YWRvIHBhcmEgZmF6ZXIgbyBjb250cm9sZSBkZSBhdHVhbGl6YXIgbyBtb2RlbC5cbiAgLy8gbsOjbyBkZXZlIGZvcsOnYXIgYSBhdHVhbGl6YcOnw6NvIHNlIG8gZ2F0aWxobyBmb3IgbyB3cml0ZVZhbHVlIHBhcmEgbsOjbyBkZWl4YXIgbyBjYW1wbyBkaXJ0eS5cbiAgcHJpdmF0ZSBmcm9tV3JpdGVWYWx1ZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHByaXZhdGUgdmFsaWRhdG9yQ2hhbmdlOiBhbnk7XG5cbiAgLyoqIE1lbnNhZ2VtIGFwcmVzZW50YWRhIGVucXVhbnRvIG8gY2FtcG8gZXN0aXZlciB2YXppby4gKi9cbiAgQElucHV0KCdwLXBsYWNlaG9sZGVyJykgc2V0IHBsYWNlaG9sZGVyKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9wbGFjZWhvbGRlciA9IHZhbHVlIHx8ICcnO1xuICB9XG5cbiAgZ2V0IHBsYWNlaG9sZGVyKCkge1xuICAgIHJldHVybiB0aGlzLl9wbGFjZWhvbGRlcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEVzdGEgcHJvcHJpZWRhZGUgZGVmaW5lIGVtIHF1YW50byB0ZW1wbyAoZW0gbWlsaXNzZWd1bmRvcyksIGFndWFyZGEgcGFyYSBhY2lvbmFyIG8gZXZlbnRvIGRlIGZpbHRybyBhcMOzcyBjYWRhIHByZXNzaW9uYW1lbnRvIGRlIHRlY2xhLlxuICAgKiBTZXLDoSB1dGlsaXphZGEgYXBlbmFzIHF1YW5kbyBob3V2ZXIgc2VydmnDp28gKGBwLWZpbHRlci1zZXJ2aWNlYCkuXG4gICAqXG4gICAqIEBkZWZhdWx0IGA0MDBgXG4gICAqL1xuICBASW5wdXQoJ3AtZGVib3VuY2UtdGltZScpIHNldCBkZWJvdW5jZVRpbWUodmFsdWU6IG51bWJlcikge1xuICAgIGNvbnN0IHBhcnNlZFZhbHVlID0gcGFyc2VJbnQoPGFueT52YWx1ZSwgMTApO1xuXG4gICAgdGhpcy5fZGVib3VuY2VUaW1lID0gIWlzTmFOKHBhcnNlZFZhbHVlKSAmJiBwYXJzZWRWYWx1ZSA+IDAgPyBwYXJzZWRWYWx1ZSA6IFBPX0NPTUJPX0RFQk9VTkNFX1RJTUVfREVGQVVMVDtcbiAgfVxuXG4gIGdldCBkZWJvdW5jZVRpbWUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fZGVib3VuY2VUaW1lO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogRGVzYWJpbGl0YSBvIGZpbHRybyBpbmljaWFsIG5vIHNlcnZpw6dvLCBxdWUgw6kgZXhlY3V0YWRvIG5vIHByaW1laXJvIGNsaXF1ZSBubyBjYW1wby5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKlxuICAgKi9cbiAgQElucHV0KCdwLWRpc2FibGVkLWluaXQtZmlsdGVyJykgc2V0IGRpc2FibGVkSW5pdEZpbHRlcih2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2Rpc2FibGVkSW5pdEZpbHRlciA9IGNvbnZlcnRUb0Jvb2xlYW4odmFsdWUpO1xuICB9XG5cbiAgZ2V0IGRpc2FibGVkSW5pdEZpbHRlcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWRJbml0RmlsdGVyO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogRGV2ZSBzZXIgaW5mb3JtYWRvIG8gbm9tZSBkYSBwcm9wcmllZGFkZSBkbyBvYmpldG8gcXVlIHNlcsOhIHV0aWxpemFkbyBwYXJhIGEgY29udmVyc8OjbyBkb3MgaXRlbnMgYXByZXNlbnRhZG9zIG5hIGxpc3RhIGRvIGNvbXBvbmVudGVcbiAgICogKGBwLW9wdGlvbnNgKSwgZXN0YSBwcm9wcmllZGFkZSBzZXLDoSByZXNwb25zw6F2ZWwgcGVsbyB2YWxvciBkZSBjYWRhIGl0ZW0gZGEgbGlzdGEuXG4gICAqXG4gICAqIE5lY2Vzc8OhcmlvIHF1YW5kbyBpbmZvcm1hciBvIHNlcnZpw6dvIGNvbW8gVVJMIGUgbyBtZXNtbyBuw6NvIGVzdGl2ZXIgcmV0b3JuYW5kbyB1bWEgbGlzdGEgZGUgb2JqZXRvcyBubyBwYWRyw6NvIGRhIGludGVyZmFjZVxuICAgKiBQb0NvbWJvT3B0aW9uLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgdmFsdWVgXG4gICAqL1xuICBASW5wdXQoJ3AtZmllbGQtdmFsdWUnKSBzZXQgZmllbGRWYWx1ZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fZmllbGRWYWx1ZSA9IHZhbHVlIHx8IFBPX0NPTUJPX0ZJRUxEX1ZBTFVFX0RFRkFVTFQ7XG5cbiAgICBpZiAoaXNUeXBlb2YodGhpcy5maWx0ZXJTZXJ2aWNlLCAnc3RyaW5nJykgJiYgdGhpcy5zZXJ2aWNlKSB7XG4gICAgICB0aGlzLnNlcnZpY2UuZmllbGRWYWx1ZSA9IHRoaXMuX2ZpZWxkVmFsdWU7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGZpZWxkVmFsdWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpZWxkVmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBEZXZlIHNlciBpbmZvcm1hZG8gbyBub21lIGRhIHByb3ByaWVkYWRlIGRvIG9iamV0byBxdWUgc2Vyw6EgdXRpbGl6YWRvIHBhcmEgYSBjb252ZXJzw6NvIGRvcyBpdGVucyBhcHJlc2VudGFkb3MgbmEgbGlzdGEgZG8gY29tcG9uZW50ZVxuICAgKiAoYHAtb3B0aW9uc2ApLCBlc3RhIHByb3ByaWVkYWRlIHNlcsOhIHJlc3BvbnPDoXZlbCBwZWxvIHRleHRvIGRlIGFwcmVzZW50YcOnw6NvIGRlIGNhZGEgaXRlbSBkYSBsaXN0YS5cbiAgICpcbiAgICogTmVjZXNzw6FyaW8gcXVhbmRvIGluZm9ybWFyIG8gc2VydmnDp28gY29tbyBVUkwgZSBvIG1lc21vIG7Do28gZXN0aXZlciByZXRvcm5hbmRvIHVtYSBsaXN0YSBkZSBvYmpldG9zIG5vIHBhZHLDo28gZGEgaW50ZXJmYWNlXG4gICAqIFBvQ29tYm9PcHRpb24uXG4gICAqXG4gICAqIEBkZWZhdWx0IGBsYWJlbGBcbiAgICovXG4gIEBJbnB1dCgncC1maWVsZC1sYWJlbCcpIHNldCBmaWVsZExhYmVsKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9maWVsZExhYmVsID0gdmFsdWUgfHwgUE9fQ09NQk9fRklFTERfTEFCRUxfREVGQVVMVDtcblxuICAgIGlmIChpc1R5cGVvZih0aGlzLmZpbHRlclNlcnZpY2UsICdzdHJpbmcnKSAmJiB0aGlzLnNlcnZpY2UpIHtcbiAgICAgIHRoaXMuc2VydmljZS5maWVsZExhYmVsID0gdGhpcy5fZmllbGRMYWJlbDtcbiAgICB9XG4gIH1cblxuICBnZXQgZmllbGRMYWJlbCgpIHtcbiAgICByZXR1cm4gdGhpcy5fZmllbGRMYWJlbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFZhbG9yIG3DrW5pbW8gZGUgY2FyYWN0ZXJlcyBwYXJhIHJlYWxpemFyIG8gZmlsdHJvIG5vIHNlcnZpw6dvLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgMGBcbiAgICovXG4gIEBJbnB1dCgncC1maWx0ZXItbWlubGVuZ3RoJykgc2V0IGZpbHRlck1pbmxlbmd0aCh2YWx1ZTogbnVtYmVyKSB7XG4gICAgY29uc3QgcGFyc2VWYWx1ZSA9IHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgPyBwYXJzZUludCh2YWx1ZSwgMTApIDogdmFsdWU7XG5cbiAgICB0aGlzLl9maWx0ZXJNaW5sZW5ndGggPSBOdW1iZXIuaXNJbnRlZ2VyKHBhcnNlVmFsdWUpID8gcGFyc2VWYWx1ZSA6IDA7XG4gIH1cblxuICBnZXQgZmlsdGVyTWlubGVuZ3RoKCkge1xuICAgIHJldHVybiB0aGlzLl9maWx0ZXJNaW5sZW5ndGg7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBJbmRpY2EgcXVlIG8gY2FtcG8gc2Vyw6Egb2JyaWdhdMOzcmlvLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICBASW5wdXQoJ3AtcmVxdWlyZWQnKSBzZXQgcmVxdWlyZWQocmVxdWlyZWQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9yZXF1aXJlZCA9IGNvbnZlcnRUb0Jvb2xlYW4ocmVxdWlyZWQpO1xuXG4gICAgdGhpcy52YWxpZGF0ZU1vZGVsKHRoaXMuc2VsZWN0ZWRWYWx1ZSk7XG4gIH1cblxuICBnZXQgcmVxdWlyZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3JlcXVpcmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogSW5kaWNhIHF1ZSBvIGV2ZW50byBgcC1jaGFuZ2VgIHPDsyBzZXLDoSBkaXNwYXJhZG8gYW8gY2xpY2FyIG91IHByZXNzaW9uYXIgYSB0ZWNsYSBcIkVudGVyXCIgc29icmUgdW1hIG9ww6fDo28gc2VsZWNpb25hZGEuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCgncC1jaGFuZ2Utb24tZW50ZXInKSBzZXQgY2hhbmdlT25FbnRlcihjaGFuZ2VPbkVudGVyOiBib29sZWFuKSB7XG4gICAgdGhpcy5fY2hhbmdlT25FbnRlciA9IGNvbnZlcnRUb0Jvb2xlYW4oY2hhbmdlT25FbnRlcik7XG4gIH1cblxuICBnZXQgY2hhbmdlT25FbnRlcigpIHtcbiAgICByZXR1cm4gdGhpcy5fY2hhbmdlT25FbnRlcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEluZGljYSBxdWUgbyBjYW1wbyBzZXLDoSBkZXNhYmlsaXRhZG8uXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCgncC1kaXNhYmxlZCcpIHNldCBkaXNhYmxlZChkaXNhYmxlZDogYm9vbGVhbikge1xuICAgIHRoaXMuX2Rpc2FibGVkID0gY29udmVydFRvQm9vbGVhbihkaXNhYmxlZCk7XG5cbiAgICB0aGlzLnZhbGlkYXRlTW9kZWwodGhpcy5zZWxlY3RlZFZhbHVlKTtcbiAgfVxuXG4gIGdldCBkaXNhYmxlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7XG4gIH1cblxuICAvKiogSW5kaWNhIHF1ZSBhIGxpc3RhIGRlZmluaWRhIG5hIHByb3ByaWVkYWRlIHAtb3B0aW9ucyBzZXLDoSBvcmRlbmFkYSBwZWxhIGRlc2NyacOnw6NvLiAqL1xuICBASW5wdXQoJ3Atc29ydCcpIHNldCBzb3J0KHNvcnQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9zb3J0ID0gY29udmVydFRvQm9vbGVhbihzb3J0KTtcbiAgICB0aGlzLmNvbWJvTGlzdERlZmluaXRpb25zKCk7XG4gIH1cblxuICBnZXQgc29ydCgpIHtcbiAgICByZXR1cm4gdGhpcy5fc29ydDtcbiAgfVxuXG4gIC8qKlxuICAgKiBOZXN0YSBwcm9wcmllZGFkZSBkZWZpbmUgYSBsaXN0YSBkZSBvcMOnw7VlcyBkbyBgcG8tY29tYm9gLlxuICAgKlxuICAgKiA+IEEgbGlzdGEgcG9kZSBzZXIgZGVmaW5pZGEgZW0gZG9pcyBmb3JtYXRvcywgc2ltcGxlcyBvdSBjb20gYWdydXBhbWVudG9zLlxuICAgKiAtIFV0aWxpemUgYFBvQ29tYm9PcHRpb25gIHBhcmEgbGlzdGEgZGUgb3DDp8O1ZXMgc2ltcGxlcy5cbiAgICogLSBVdGlsaXplIGBQb0NvbWJvT3B0aW9uR3JvdXBgIHBhcmEgbGlzdGEgZGUgb3DDp8O1ZXMgY29tIGFncnVwYW1lbnRvLlxuICAgKlxuICAgKiAqKkltcG9ydGFudGU6KipcbiAgICogLSBBIGxpc3RhIGRldmUgc2VndWlyIGFzIGRlZmluacOnw7VlcyBkZXNjcml0YXMgbmFzIHJlc3BlY3RpdmFzIGludGVyZmFjZXMsIGNhc28gY29udHLDoXJpbyBuw6NvIGV4aWJpcsOhIGEoYXMpIG9ww6fDo28ow7VlcykgZm9yYSBkb3MgcGFkcsO1ZXMuXG4gICAqIC0gTyBjb21wb25lbnRlIGludGVycHJldGFyw6EgbyBmb3JtYXRvIGRhIGxpc3RhIGRlIGFjb3JkbyBjb20gYSBpbnRlcmZhY2UgdXRpbGl6YWRhIGUgc8OzIGV4aWJpcsOhIGFzIG9ww6fDtWVzIGNvcnJlc3BvbmRlbnRlcyDDoCBlbGEuXG4gICAqIC0gVW0gYWdydXBhbWVudG8gc8OzIHNlcsOhIGV4aWJpZG8gc2UgaG91dmVyIHBlbG8gbWVub3MgdW1hIG9ww6fDo28gdsOhbGlkYS5cbiAgICovXG4gIEBJbnB1dCgncC1vcHRpb25zJykgc2V0IG9wdGlvbnMob3B0aW9uczogQXJyYXk8UG9Db21ib09wdGlvbiB8IFBvQ29tYm9PcHRpb25Hcm91cD4pIHtcbiAgICB0aGlzLl9vcHRpb25zID0gQXJyYXkuaXNBcnJheShvcHRpb25zKSA/IG9wdGlvbnMgOiBbXTtcblxuICAgIHRoaXMuY29tYm9MaXN0RGVmaW5pdGlvbnMoKTtcbiAgfVxuXG4gIGdldCBvcHRpb25zKCkge1xuICAgIHJldHVybiB0aGlzLl9vcHRpb25zO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRGVmaW5lIG8gbW9kbyBkZSBwZXNxdWlzYSB1dGlsaXphZG8gbm8gZmlsdHJvIGRhIGxpc3RhIGRlIHNlbGXDp8OjbzogYHN0YXJ0c1dpdGhgLCBgY29udGFpbnNgIG91IGBlbmRzV2l0aGAuXG4gICAqXG4gICAqID4gUXVhbmRvIHV0aWxpemFyIGEgcHJvcHJpZWRhZGUgYHAtZmlsdGVyLXNlcnZpY2VgIGVzdGEgcHJvcHJpZWRhZGUgc2Vyw6EgaWdub3JhZGEuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBzdGFydHNXaXRoYFxuICAgKi9cbiAgQElucHV0KCdwLWZpbHRlci1tb2RlJykgc2V0IGZpbHRlck1vZGUoZmlsdGVyTW9kZTogUG9Db21ib0ZpbHRlck1vZGUpIHtcbiAgICB0aGlzLl9maWx0ZXJNb2RlID0gZmlsdGVyTW9kZSBpbiBQb0NvbWJvRmlsdGVyTW9kZSA/IGZpbHRlck1vZGUgOiBQb0NvbWJvRmlsdGVyTW9kZS5zdGFydHNXaXRoO1xuICAgIHN3aXRjaCAodGhpcy5fZmlsdGVyTW9kZS50b1N0cmluZygpKSB7XG4gICAgICBjYXNlICdzdGFydHNXaXRoJzpcbiAgICAgICAgdGhpcy5fZmlsdGVyTW9kZSA9IFBvQ29tYm9GaWx0ZXJNb2RlLnN0YXJ0c1dpdGg7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnY29udGFpbnMnOlxuICAgICAgICB0aGlzLl9maWx0ZXJNb2RlID0gUG9Db21ib0ZpbHRlck1vZGUuY29udGFpbnM7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZW5kc1dpdGgnOlxuICAgICAgICB0aGlzLl9maWx0ZXJNb2RlID0gUG9Db21ib0ZpbHRlck1vZGUuZW5kc1dpdGg7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIGdldCBmaWx0ZXJNb2RlKCk6IFBvQ29tYm9GaWx0ZXJNb2RlIHtcbiAgICByZXR1cm4gdGhpcy5fZmlsdGVyTW9kZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIFZhbG9yIHF1ZSBzZXLDoSByZXBhc3NhZG8gY29tbyBwYXLDom1ldHJvIHBhcmEgYSBVUkwgb3UgYW9zIG3DqXRvZG9zIGRvIHNlcnZpw6dvIHF1ZSBpbXBsZW1lbnRhbSBhIGludGVyZmFjZSAqUG9Db21ib0ZpbHRlciouXG4gICAqXG4gICAqID4gQ2FzbyBhIGxpc3RhIGNvbnRlbmhhIGFncnVwYW1lbnRvcywgb3MgbWVzbW9zIHPDsyBzZXLDo28gZXhpYmlkb3Mgc2UgaG91dmVyIG5vIG3DrW5pbW8gdW1hIG9ww6fDo28gcXVlIGNvcnJlc3BvbmRhIMOgIHBlc3F1aXNhLlxuICAgKi9cbiAgQElucHV0KCdwLWZpbHRlci1wYXJhbXMnKSBzZXQgZmlsdGVyUGFyYW1zKGZpbHRlclBhcmFtczogYW55KSB7XG4gICAgdGhpcy5fZmlsdGVyUGFyYW1zID0gZmlsdGVyUGFyYW1zIHx8IGZpbHRlclBhcmFtcyA9PT0gMCB8fCBmaWx0ZXJQYXJhbXMgPT09IGZhbHNlID8gZmlsdGVyUGFyYW1zIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgZ2V0IGZpbHRlclBhcmFtcygpIHtcbiAgICByZXR1cm4gdGhpcy5fZmlsdGVyUGFyYW1zO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogT2JqZXRvIGNvbSBhcyBsaXRlcmFpcyB1c2FkYXMgbm8gYHBvLWNvbWJvYC5cbiAgICpcbiAgICogUGFyYSB1dGlsaXphciBiYXN0YSBwYXNzYXIgYSBsaXRlcmFsIHF1ZSBkZXNlamEgY3VzdG9taXphcjpcbiAgICpcbiAgICogYGBgXG4gICAqICBjb25zdCBjdXN0b21MaXRlcmFsczogUG9Db21ib0xpdGVyYWxzID0ge1xuICAgKiAgICBub0RhdGE6ICdOZW5odW0gdmFsb3InXG4gICAqICB9O1xuICAgKiBgYGBcbiAgICpcbiAgICogRSBwYXJhIGNhcnJlZ2FyIGEgbGl0ZXJhbCBjdXN0b21pemFkYSwgYmFzdGEgYXBlbmFzIHBhc3NhciBvIG9iamV0byBwYXJhIG8gY29tcG9uZW50ZS5cbiAgICpcbiAgICogYGBgXG4gICAqIDxwby1jb21ib1xuICAgKiAgIFtwLWxpdGVyYWxzXT1cImN1c3RvbUxpdGVyYWxzXCI+XG4gICAqIDwvcG8tY29tYm8+XG4gICAqIGBgYFxuICAgKlxuICAgKiA+IE8gb2JqZXRvIHBhZHLDo28gZGUgbGl0ZXJhaXMgc2Vyw6EgdHJhZHV6aWRvIGRlIGFjb3JkbyBjb20gbyBpZGlvbWEgZG9cbiAgICogW2BQb0kxOG5TZXJ2aWNlYF0oL2RvY3VtZW50YXRpb24vcG8taTE4bikgb3UgZG8gYnJvd3Nlci5cbiAgICovXG4gIEBJbnB1dCgncC1saXRlcmFscycpIHNldCBsaXRlcmFscyh2YWx1ZTogUG9Db21ib0xpdGVyYWxzKSB7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0ICYmICEodmFsdWUgaW5zdGFuY2VvZiBBcnJheSkpIHtcbiAgICAgIHRoaXMuX2xpdGVyYWxzID0ge1xuICAgICAgICAuLi5wb0NvbWJvTGl0ZXJhbHNEZWZhdWx0W3BvTG9jYWxlRGVmYXVsdF0sXG4gICAgICAgIC4uLnBvQ29tYm9MaXRlcmFsc0RlZmF1bHRbdGhpcy5sYW5ndWFnZV0sXG4gICAgICAgIC4uLnZhbHVlXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9saXRlcmFscyA9IHBvQ29tYm9MaXRlcmFsc0RlZmF1bHRbdGhpcy5sYW5ndWFnZV07XG4gICAgfVxuICB9XG5cbiAgZ2V0IGxpdGVyYWxzKCkge1xuICAgIHJldHVybiB0aGlzLl9saXRlcmFscyB8fCBwb0NvbWJvTGl0ZXJhbHNEZWZhdWx0W3RoaXMubGFuZ3VhZ2VdO1xuICB9XG5cbiAgY29uc3RydWN0b3IobGFuZ3VhZ2VTZXJ2aWNlOiBQb0xhbmd1YWdlU2VydmljZSkge1xuICAgIHRoaXMubGFuZ3VhZ2UgPSBsYW5ndWFnZVNlcnZpY2UuZ2V0U2hvcnRMYW5ndWFnZSgpO1xuICB9XG5cbiAgZ2V0IGlzT3B0aW9uR3JvdXBMaXN0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9vcHRpb25zLmxlbmd0aCAmJiB0aGlzLl9vcHRpb25zWzBdLmhhc093blByb3BlcnR5KCdvcHRpb25zJyk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnVwZGF0ZUNvbWJvTGlzdCgpO1xuICB9XG5cbiAgb25Jbml0U2VydmljZSgpIHtcbiAgICBpZiAodGhpcy5maWx0ZXJTZXJ2aWNlKSB7XG4gICAgICB0aGlzLnNldFNlcnZpY2UodGhpcy5maWx0ZXJTZXJ2aWNlKTtcbiAgICAgIHRoaXMuaW5pdElucHV0T2JzZXJ2YWJsZSgpO1xuICAgIH1cbiAgfVxuXG4gIHNldFNlcnZpY2Uoc2VydmljZTogUG9Db21ib0ZpbHRlciB8IHN0cmluZykge1xuICAgIGlmIChzZXJ2aWNlKSB7XG4gICAgICBpZiAoaXNUeXBlb2Yoc2VydmljZSwgJ29iamVjdCcpKSB7XG4gICAgICAgIHRoaXMuc2VydmljZSA9IDxQb0NvbWJvRmlsdGVyU2VydmljZT5zZXJ2aWNlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zZXJ2aWNlID0gdGhpcy5kZWZhdWx0U2VydmljZTtcbiAgICAgICAgdGhpcy5zZXJ2aWNlLmNvbmZpZ1Byb3BlcnRpZXMoPHN0cmluZz5zZXJ2aWNlLCB0aGlzLmZpZWxkTGFiZWwsIHRoaXMuZmllbGRWYWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29tcGFyZU1ldGhvZChzZWFyY2g6IHN0cmluZywgb3B0aW9uOiBQb0NvbWJvT3B0aW9uIHwgUG9Db21ib0dyb3VwLCBmaWx0ZXJNb2RlOiBQb0NvbWJvRmlsdGVyTW9kZSkge1xuICAgIHN3aXRjaCAoZmlsdGVyTW9kZSkge1xuICAgICAgY2FzZSBQb0NvbWJvRmlsdGVyTW9kZS5zdGFydHNXaXRoOlxuICAgICAgICByZXR1cm4gdGhpcy5zdGFydHNXaXRoKHNlYXJjaCwgb3B0aW9uKTtcbiAgICAgIGNhc2UgUG9Db21ib0ZpbHRlck1vZGUuY29udGFpbnM6XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnRhaW5zKHNlYXJjaCwgb3B0aW9uKTtcbiAgICAgIGNhc2UgUG9Db21ib0ZpbHRlck1vZGUuZW5kc1dpdGg6XG4gICAgICAgIHJldHVybiB0aGlzLmVuZHNXaXRoKHNlYXJjaCwgb3B0aW9uKTtcbiAgICB9XG4gIH1cblxuICBzdGFydHNXaXRoKHNlYXJjaDogc3RyaW5nLCBvcHRpb246IFBvQ29tYm9PcHRpb24gfCBQb0NvbWJvR3JvdXApIHtcbiAgICByZXR1cm4gb3B0aW9uLmxhYmVsLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChzZWFyY2gudG9Mb3dlckNhc2UoKSk7XG4gIH1cblxuICBjb250YWlucyhzZWFyY2g6IHN0cmluZywgb3B0aW9uOiBQb0NvbWJvT3B0aW9uIHwgUG9Db21ib0dyb3VwKSB7XG4gICAgcmV0dXJuIG9wdGlvbi5sYWJlbC50b0xvd2VyQ2FzZSgpLmluZGV4T2Yoc2VhcmNoLnRvTG93ZXJDYXNlKCkpID4gLTE7XG4gIH1cblxuICBlbmRzV2l0aChzZWFyY2g6IHN0cmluZywgb3B0aW9uOiBQb0NvbWJvT3B0aW9uIHwgUG9Db21ib0dyb3VwKSB7XG4gICAgcmV0dXJuIG9wdGlvbi5sYWJlbC50b0xvd2VyQ2FzZSgpLmVuZHNXaXRoKHNlYXJjaC50b0xvd2VyQ2FzZSgpKTtcbiAgfVxuXG4gIGdldE9wdGlvbkZyb21WYWx1ZSh2YWx1ZTogYW55LCBvcHRpb25zOiBhbnkpIHtcbiAgICByZXR1cm4gb3B0aW9ucyA/IG9wdGlvbnMuZmluZCgob3B0aW9uOiBhbnkpID0+IHRoaXMuaXNFcXVhbChvcHRpb24udmFsdWUsIHZhbHVlKSkgOiBudWxsO1xuICB9XG5cbiAgZ2V0T3B0aW9uRnJvbUxhYmVsKGxhYmVsOiBhbnksIG9wdGlvbnM6IGFueSkge1xuICAgIGlmIChvcHRpb25zKSB7XG4gICAgICByZXR1cm4gb3B0aW9ucy5maW5kKChvcHRpb246IGFueSkgPT4gb3B0aW9uLmxhYmVsLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA9PT0gbGFiZWwudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlU2VsZWN0ZWRWYWx1ZShvcHRpb246IFBvQ29tYm9PcHRpb24gfCBQb0NvbWJvR3JvdXAsIGlzVXBkYXRlTW9kZWw6IGJvb2xlYW4gPSB0cnVlKSB7XG4gICAgY29uc3Qgb3B0aW9uTGFiZWwgPSAob3B0aW9uICYmIG9wdGlvbi5sYWJlbCkgfHwgJyc7XG5cbiAgICB0aGlzLnVwZGF0ZUludGVybmFsVmFyaWFibGVzKG9wdGlvbik7XG5cbiAgICAvLyBhdHVhbGl6YSBvIHZhbG9yIGRvIGlucHV0IHF1YW5kbyBmb3IgY2hhbmdlT25FbnRlciBhcGVuYXMgc2UgZm9yIHBhcmEgYXR1YWxpemFyIG8gbW9kZWwuXG4gICAgaWYgKHRoaXMuY2hhbmdlT25FbnRlciAmJiBpc1VwZGF0ZU1vZGVsKSB7XG4gICAgICB0aGlzLnNldElucHV0VmFsdWUob3B0aW9uTGFiZWwpO1xuICAgIH0gZWxzZSBpZiAoIXRoaXMuY2hhbmdlT25FbnRlcikge1xuICAgICAgdGhpcy5zZXRJbnB1dFZhbHVlKG9wdGlvbkxhYmVsKTtcbiAgICB9XG5cbiAgICBpZiAoaXNVcGRhdGVNb2RlbCkge1xuICAgICAgY29uc3Qgb3B0aW9uVmFsdWUgPSAob3B0aW9uICYmIG9wdGlvbi52YWx1ZSkgfHwgdW5kZWZpbmVkO1xuXG4gICAgICB0aGlzLnVwZGF0ZU1vZGVsKG9wdGlvblZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBjYWxsTW9kZWxDaGFuZ2UodmFsdWU6IGFueSkge1xuICAgIC8vIENhc28gbyBjb21wb25lbnRlIGVzdGl2ZXIgZGVudHJvIGRlIHVtIGZvcm0sIHRlcsOhIGFjZXNzbyBhbyBtw6l0b2RvIG9uTW9kZWxDaGFuZ2UuXG4gICAgcmV0dXJuIHRoaXMub25Nb2RlbENoYW5nZSA/IHRoaXMub25Nb2RlbENoYW5nZSh2YWx1ZSkgOiB0aGlzLm5nTW9kZWxDaGFuZ2UuZW1pdCh2YWx1ZSk7XG4gIH1cblxuICBpc0VxdWFsKHZhbHVlOiBhbnksIGlucHV0VmFsdWU6IGFueSk6IGJvb2xlYW4ge1xuICAgIGlmICgodmFsdWUgfHwgdmFsdWUgPT09IDApICYmIGlucHV0VmFsdWUpIHtcbiAgICAgIHJldHVybiB2YWx1ZS50b1N0cmluZygpID09PSBpbnB1dFZhbHVlLnRvU3RyaW5nKCk7XG4gICAgfVxuXG4gICAgaWYgKCh2YWx1ZSA9PT0gbnVsbCAmJiBpbnB1dFZhbHVlICE9PSBudWxsKSB8fCAodmFsdWUgPT09IHVuZGVmaW5lZCAmJiBpbnB1dFZhbHVlICE9PSB1bmRlZmluZWQpKSB7XG4gICAgICB2YWx1ZSA9IGAke3ZhbHVlfWA7IC8vIFRyYW5zZm9ybWFuZG8gZW0gc3RyaW5nXG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlID09PSBpbnB1dFZhbHVlO1xuICB9XG5cbiAgc2VhcmNoRm9yTGFiZWwoc2VhcmNoOiBzdHJpbmcsIG9wdGlvbnM6IEFycmF5PFBvQ29tYm9PcHRpb24gfCBQb0NvbWJvR3JvdXA+LCBmaWx0ZXJNb2RlOiBQb0NvbWJvRmlsdGVyTW9kZSkge1xuICAgIGlmIChzZWFyY2ggJiYgb3B0aW9ucyAmJiBvcHRpb25zLmxlbmd0aCkge1xuICAgICAgY29uc3QgbmV3T3B0aW9uczogQXJyYXk8UG9Db21ib09wdGlvbiB8IFBvQ29tYm9Hcm91cD4gPSBbXTtcbiAgICAgIGxldCBhZGRlZE9wdGlvbnNHcm91cFRpdGxlOiBib29sZWFuID0gZmFsc2U7XG4gICAgICBsZXQgb3B0aW9uc0dyb3VwVGl0bGU6IFBvQ29tYm9Hcm91cDtcblxuICAgICAgb3B0aW9ucy5mb3JFYWNoKG9wdGlvbiA9PiB7XG4gICAgICAgIGlmICgnb3B0aW9ucycgaW4gb3B0aW9uKSB7XG4gICAgICAgICAgYWRkZWRPcHRpb25zR3JvdXBUaXRsZSA9IGZhbHNlO1xuICAgICAgICAgIHJldHVybiAob3B0aW9uc0dyb3VwVGl0bGUgPSBvcHRpb24pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9wdGlvbi5sYWJlbCAmJiAodGhpcy5jb21wYXJlTWV0aG9kKHNlYXJjaCwgb3B0aW9uLCBmaWx0ZXJNb2RlKSB8fCB0aGlzLnNlcnZpY2UpKSB7XG4gICAgICAgICAgaWYgKHRoaXMuaXNPcHRpb25Hcm91cExpc3QgJiYgIWFkZGVkT3B0aW9uc0dyb3VwVGl0bGUpIHtcbiAgICAgICAgICAgIG5ld09wdGlvbnMucHVzaChvcHRpb25zR3JvdXBUaXRsZSk7XG4gICAgICAgICAgICBhZGRlZE9wdGlvbnNHcm91cFRpdGxlID0gdHJ1ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBuZXdPcHRpb25zLnB1c2gob3B0aW9uKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuc2VsZWN0ZWRWaWV3ID0gbmV3T3B0aW9uc1t0aGlzLmlzT3B0aW9uR3JvdXBMaXN0ID8gMSA6IDBdO1xuICAgICAgdGhpcy51cGRhdGVDb21ib0xpc3QobmV3T3B0aW9ucyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudXBkYXRlQ29tYm9MaXN0KCk7XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlQ29tYm9MaXN0KG9wdGlvbnM/OiBBcnJheTxQb0NvbWJvT3B0aW9uIHwgUG9Db21ib0dyb3VwPikge1xuICAgIGNvbnN0IGNvcHlPcHRpb25zID0gb3B0aW9ucyB8fCBbLi4udGhpcy5jb21ib09wdGlvbnNMaXN0XTtcblxuICAgIGNvbnN0IG5ld09wdGlvbnMgPSAhb3B0aW9ucyAmJiB0aGlzLnNlbGVjdGVkVmFsdWUgPyBbeyAuLi50aGlzLnNlbGVjdGVkT3B0aW9uIH1dIDogY29weU9wdGlvbnM7XG5cbiAgICB0aGlzLnZpc2libGVPcHRpb25zID0gbmV3T3B0aW9ucztcblxuICAgIGlmICghdGhpcy5zZWxlY3RlZFZpZXcgJiYgdGhpcy52aXNpYmxlT3B0aW9ucy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRWaWV3ID0gY29weU9wdGlvbnMuZmluZChvcHRpb24gPT4gb3B0aW9uLnZhbHVlICE9PSB1bmRlZmluZWQpO1xuICAgIH1cbiAgfVxuXG4gIGdldE5leHRPcHRpb24odmFsdWU6IGFueSwgb3B0aW9uczogQXJyYXk8UG9Db21ib09wdGlvbiB8IFBvQ29tYm9Hcm91cD4sIHJldmVyc2U6IGJvb2xlYW4gPSBmYWxzZSkge1xuICAgIGNvbnN0IG9wdGlvbnNMaXN0ID0gcmV2ZXJzZSA/IG9wdGlvbnMuc2xpY2UoMCkucmV2ZXJzZSgpIDogb3B0aW9ucy5zbGljZSgwKTtcbiAgICBsZXQgb3B0aW9uRm91bmQgPSBudWxsO1xuICAgIGxldCBmb3VuZCA9IGZhbHNlO1xuXG4gICAgZm9yIChjb25zdCBvcHRpb24gb2Ygb3B0aW9uc0xpc3QpIHtcbiAgICAgIGlmIChvcHRpb24udmFsdWUgJiYgIW9wdGlvbkZvdW5kKSB7XG4gICAgICAgIG9wdGlvbkZvdW5kID0gb3B0aW9uO1xuICAgICAgfVxuICAgICAgaWYgKG9wdGlvbi52YWx1ZSAmJiBmb3VuZCkge1xuICAgICAgICByZXR1cm4gb3B0aW9uO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuaXNFcXVhbChvcHRpb24udmFsdWUsIHZhbHVlKSkge1xuICAgICAgICBmb3VuZCA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG9wdGlvbkZvdW5kO1xuICB9XG5cbiAgZ2V0SW5kZXhTZWxlY3RlZFZpZXcoKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnZpc2libGVPcHRpb25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAodGhpcy5jb21wYXJlT2JqZWN0cyh0aGlzLnZpc2libGVPcHRpb25zW2ldLCB0aGlzLnNlbGVjdGVkVmlldykpIHtcbiAgICAgICAgcmV0dXJuIGk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29tcGFyZU9iamVjdHMob2JqMTogYW55LCBvYmoyOiBhbnkpIHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkob2JqMSkgPT09IEpTT04uc3RyaW5naWZ5KG9iajIpO1xuICB9XG5cbiAgdmVyaWZ5VmFsaWRPcHRpb24oKSB7XG4gICAgY29uc3QgaW5wdXRWYWx1ZSA9IHRoaXMuZ2V0SW5wdXRWYWx1ZSgpO1xuXG4gICAgY29uc3Qgb3B0aW9uRm91bmQgPSB0aGlzLmdldE9wdGlvbkZyb21MYWJlbChpbnB1dFZhbHVlLCB0aGlzLmNvbWJvT3B0aW9uc0xpc3QpO1xuXG4gICAgaWYgKCF0aGlzLnNlcnZpY2UpIHtcbiAgICAgIHRoaXMudXBkYXRlQ29tYm9MaXN0KFsuLi50aGlzLmNhY2hlU3RhdGljT3B0aW9uc10pO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25Gb3VuZCAmJiBvcHRpb25Gb3VuZC52YWx1ZSAhPT0gdGhpcy5zZWxlY3RlZFZhbHVlKSB7XG4gICAgICB0aGlzLnVwZGF0ZVNlbGVjdGVkVmFsdWUob3B0aW9uRm91bmQpO1xuXG4gICAgICB0aGlzLnByZXZpb3VzU2VhcmNoVmFsdWUgPSBvcHRpb25Gb3VuZC5sYWJlbDtcbiAgICB9IGVsc2UgaWYgKHRoaXMuc2VsZWN0ZWRWYWx1ZSAmJiB0aGlzLnNlbGVjdGVkT3B0aW9uICYmIHRoaXMuc2VsZWN0ZWRPcHRpb24ubGFiZWwgIT09IGlucHV0VmFsdWUpIHtcbiAgICAgIHRoaXMudXBkYXRlU2VsZWN0ZWRWYWx1ZVdpdGhPbGRPcHRpb24oKTtcblxuICAgICAgdGhpcy5wcmV2aW91c1NlYXJjaFZhbHVlID0gdGhpcy5zZWxlY3RlZE9wdGlvbi5sYWJlbDtcbiAgICAgIHJldHVybjtcbiAgICB9IGVsc2UgaWYgKGlucHV0VmFsdWUgJiYgIW9wdGlvbkZvdW5kKSB7XG4gICAgICBjb25zdCBpc0lucHV0VmFsdWVEaWZmU2VsZWN0ZWRMYWJlbCA9ICEhKHRoaXMuc2VsZWN0ZWRPcHRpb24gJiYgdGhpcy5zZWxlY3RlZE9wdGlvbi5sYWJlbCAhPT0gaW5wdXRWYWx1ZSk7XG5cbiAgICAgIHRoaXMudXBkYXRlU2VsZWN0ZWRWYWx1ZShudWxsLCBpc0lucHV0VmFsdWVEaWZmU2VsZWN0ZWRMYWJlbCB8fCB0aGlzLmNoYW5nZU9uRW50ZXIpO1xuXG4gICAgICB0aGlzLnByZXZpb3VzU2VhcmNoVmFsdWUgPSAnJztcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cblxuICAvLyBSZWNlYmUgYXMgYWx0ZXJhw6fDtWVzIGRvIG1vZGVsXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSkge1xuICAgIHRoaXMuZnJvbVdyaXRlVmFsdWUgPSB0cnVlO1xuXG4gICAgaWYgKHZhbGlkVmFsdWUodmFsdWUpICYmICF0aGlzLnNlcnZpY2UgJiYgdGhpcy5jb21ib09wdGlvbnNMaXN0ICYmIHRoaXMuY29tYm9PcHRpb25zTGlzdC5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IG9wdGlvbiA9IHRoaXMuZ2V0T3B0aW9uRnJvbVZhbHVlKHZhbHVlLCB0aGlzLmNvbWJvT3B0aW9uc0xpc3QpO1xuICAgICAgdGhpcy51cGRhdGVTZWxlY3RlZFZhbHVlKG9wdGlvbik7XG4gICAgICB0aGlzLnVwZGF0ZUNvbWJvTGlzdCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFNlIGhvdXZlciBzZXJ2acOnbyBidXNjYSBwZWxvIG1vZGVsLlxuICAgIGlmICh2YWx1ZSAmJiB0aGlzLnNlcnZpY2UpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldE9iamVjdEJ5VmFsdWUodmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnVwZGF0ZVNlbGVjdGVkVmFsdWUobnVsbCk7XG4gICAgICB0aGlzLnVwZGF0ZUNvbWJvTGlzdCgpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEZ1bsOnw6NvIGltcGxlbWVudGFkYSBkbyBDb250cm9sVmFsdWVBY2Nlc3NvclxuICAvLyBVc2FkYSBwYXJhIGludGVyY2VwdGFyIG9zIGVzdGFkb3MgZGUgaGFiaWxpdGFkbyB2aWEgZm9ybXMgYXBpXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbikge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vbk1vZGVsQ2hhbmdlID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vbk1vZGVsVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblZhbGlkYXRvckNoYW5nZShmbjogKCkgPT4gdm9pZCkge1xuICAgIHRoaXMudmFsaWRhdG9yQ2hhbmdlID0gZm47XG4gIH1cblxuICB2YWxpZGF0ZShhYnN0cmFjdENvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IHsgW2tleTogc3RyaW5nXTogYW55IH0ge1xuICAgIGlmIChyZXF1aXJlZEZhaWxlZCh0aGlzLnJlcXVpcmVkLCB0aGlzLmRpc2FibGVkLCBhYnN0cmFjdENvbnRyb2wudmFsdWUpKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICByZXF1aXJlZDoge1xuICAgICAgICAgIHZhbGlkOiBmYWxzZVxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIGNsZWFyKHZhbHVlKSB7XG4gICAgdGhpcy5jYWxsTW9kZWxDaGFuZ2UodmFsdWUpO1xuICAgIHRoaXMudXBkYXRlU2VsZWN0ZWRWYWx1ZShudWxsKTtcbiAgICB0aGlzLnVwZGF0ZUNvbWJvTGlzdCgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNvbmZpZ0FmdGVyU2V0RmlsdGVyU2VydmljZShzZXJ2aWNlOiBQb0NvbWJvRmlsdGVyIHwgc3RyaW5nKSB7XG4gICAgaWYgKHNlcnZpY2UpIHtcbiAgICAgIHRoaXMuY29tYm9PcHRpb25zTGlzdCA9IFtdO1xuICAgICAgdGhpcy51bnN1YnNjcmliZUtleXVwT2JzZXJ2YWJsZSgpO1xuICAgICAgdGhpcy5vbkluaXRTZXJ2aWNlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VydmljZSA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuY29tYm9PcHRpb25zTGlzdCA9IHRoaXMuY2FjaGVTdGF0aWNPcHRpb25zO1xuICAgIH1cblxuICAgIHRoaXMudmlzaWJsZU9wdGlvbnMgPSBbXTtcbiAgICB0aGlzLmlzRmlyc3RGaWx0ZXIgPSB0cnVlO1xuICB9XG5cbiAgcHJvdGVjdGVkIHVuc3Vic2NyaWJlS2V5dXBPYnNlcnZhYmxlKCkge1xuICAgIGlmICh0aGlzLmtleXVwU3Vic2NyaWJlKSB7XG4gICAgICB0aGlzLmtleXVwU3Vic2NyaWJlLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIHZhbGlkYXRlTW9kZWwobW9kZWw6IGFueSkge1xuICAgIGlmICh0aGlzLnZhbGlkYXRvckNoYW5nZSkge1xuICAgICAgdGhpcy52YWxpZGF0b3JDaGFuZ2UobW9kZWwpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY29tYm9MaXN0RGVmaW5pdGlvbnMoKSB7XG4gICAgdGhpcy5jb21ib09wdGlvbnNMaXN0ID0gdGhpcy5vcHRpb25zLmxlbmd0aCA+IDAgPyB0aGlzLmxpc3RpbmdDb21ib09wdGlvbnModGhpcy5vcHRpb25zKSA6IHRoaXMub3B0aW9ucztcbiAgICB0aGlzLmNhY2hlU3RhdGljT3B0aW9ucyA9IHRoaXMuY29tYm9PcHRpb25zTGlzdDtcblxuICAgIHRoaXMudXBkYXRlQ29tYm9MaXN0KCk7XG4gIH1cblxuICBwcml2YXRlIGNvbXBhcmVPcHRpb25zKG9wdGlvbkE6IGFueSwgb3B0aW9uQjogYW55KSB7XG4gICAgY29uc3QgbGFiZWxBID0gb3B0aW9uQS5sYWJlbC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCk7XG4gICAgY29uc3QgbGFiZWxCID0gb3B0aW9uQi5sYWJlbC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCk7XG5cbiAgICByZXR1cm4gbGFiZWxBIDwgbGFiZWxCID8gLTEgOiBsYWJlbEEgPiBsYWJlbEIgPyAxIDogMDtcbiAgfVxuXG4gIHByaXZhdGUgaGFzRHVwbGljYXRlZE9wdGlvbihcbiAgICBvcHRpb25zOiBBcnJheTxQb0NvbWJvT3B0aW9uIHwgUG9Db21ib0dyb3VwPixcbiAgICBjdXJyZW50T3B0aW9uOiBzdHJpbmcsXG4gICAgYWNjdW11bGF0ZWRHcm91cE9wdGlvbnM/OiBBcnJheTxQb0NvbWJvR3JvdXA+XG4gICkge1xuICAgIHJldHVybiAoXG4gICAgICBvcHRpb25zLnNvbWUob3B0aW9uID0+IG9wdGlvbi5sYWJlbCA9PT0gY3VycmVudE9wdGlvbikgfHxcbiAgICAgIChhY2N1bXVsYXRlZEdyb3VwT3B0aW9ucyAmJiBhY2N1bXVsYXRlZEdyb3VwT3B0aW9ucy5zb21lKG9wdGlvbiA9PiBvcHRpb24ubGFiZWwgPT09IGN1cnJlbnRPcHRpb24pKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGxpc3RpbmdDb21ib09wdGlvbnMoY29tYm9PcHRpb25zOiBBcnJheTxQb0NvbWJvT3B0aW9uIHwgUG9Db21ib09wdGlvbkdyb3VwPikge1xuICAgIGNvbnN0IGNvbWJvT3B0aW9uc0xpc3QgPSBjb21ib09wdGlvbnMuY29uY2F0KCk7XG4gICAgY29uc3QgdmVyaWZpZWRDb21ib09wdGlvbnNMaXN0ID0gdGhpcy52ZXJpZnlDb21ib09wdGlvbnMoY29tYm9PcHRpb25zTGlzdCk7XG5cbiAgICB0aGlzLnNvcnRPcHRpb25zKHZlcmlmaWVkQ29tYm9PcHRpb25zTGlzdCk7XG5cbiAgICBpZiAodGhpcy5pc09wdGlvbkdyb3VwTGlzdCAmJiB2ZXJpZmllZENvbWJvT3B0aW9uc0xpc3QubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIHRoaXMudmVyaWZ5Q29tYm9PcHRpb25zR3JvdXAodmVyaWZpZWRDb21ib09wdGlvbnNMaXN0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmVyaWZpZWRDb21ib09wdGlvbnNMaXN0O1xuICB9XG5cbiAgcHJpdmF0ZSBzb3J0T3B0aW9ucyhjb21ib09wdGlvbnNMaXN0OiBBcnJheTxQb0NvbWJvR3JvdXA+KSB7XG4gICAgaWYgKGNvbWJvT3B0aW9uc0xpc3QubGVuZ3RoID4gMCAmJiB0aGlzLnNvcnQpIHtcbiAgICAgIHJldHVybiBjb21ib09wdGlvbnNMaXN0LnNvcnQodGhpcy5jb21wYXJlT3B0aW9ucyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZVZhbHVlKGN1cnJlbnRPcHRpb246IFBvQ29tYm9Hcm91cCwgdmVyaWZ5aW5nT3B0aW9uc0dyb3VwOiBib29sZWFuID0gZmFsc2UpIHtcbiAgICBjb25zdCB7IGxhYmVsLCBvcHRpb25zLCB2YWx1ZSB9ID0gY3VycmVudE9wdGlvbjtcblxuICAgIGlmICh0aGlzLmlzT3B0aW9uR3JvdXBMaXN0KSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICAodmFsaWRWYWx1ZShsYWJlbCkgJiYgb3B0aW9ucyAmJiBvcHRpb25zLmxlbmd0aCA+IDApIHx8ICh2ZXJpZnlpbmdPcHRpb25zR3JvdXAgPT09IHRydWUgJiYgdmFsaWRWYWx1ZSh2YWx1ZSkpXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiB2YWxpZFZhbHVlKHZhbHVlKSAmJiAhb3B0aW9ucztcbiAgfVxuXG4gIHByaXZhdGUgdmVyaWZ5Q29tYm9PcHRpb25zKFxuICAgIGNvbWJvT3B0aW9uczogQXJyYXk8UG9Db21ib09wdGlvbiB8IFBvQ29tYm9PcHRpb25Hcm91cD4sXG4gICAgdmVyaWZ5aW5nT3B0aW9uc0dyb3VwOiBib29sZWFuID0gZmFsc2UsXG4gICAgYWNjdW11bGF0ZWRHcm91cE9wdGlvbnM/OiBBcnJheTxQb0NvbWJvR3JvdXA+XG4gICkge1xuICAgIHJldHVybiBjb21ib09wdGlvbnMucmVkdWNlKChhY2N1bXVsYXRlZE9wdGlvbnMsIGN1cnJlbnRPcHRpb24pID0+IHtcbiAgICAgIGlmIChcbiAgICAgICAgIXRoaXMudmVyaWZ5SWZIYXNMYWJlbChjdXJyZW50T3B0aW9uKSB8fFxuICAgICAgICB0aGlzLmhhc0R1cGxpY2F0ZWRPcHRpb24oYWNjdW11bGF0ZWRPcHRpb25zLCBjdXJyZW50T3B0aW9uLmxhYmVsLCBhY2N1bXVsYXRlZEdyb3VwT3B0aW9ucykgfHxcbiAgICAgICAgIXRoaXMudmFsaWRhdGVWYWx1ZShjdXJyZW50T3B0aW9uLCB2ZXJpZnlpbmdPcHRpb25zR3JvdXApXG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuIGFjY3VtdWxhdGVkT3B0aW9ucztcbiAgICAgIH1cblxuICAgICAgYWNjdW11bGF0ZWRPcHRpb25zLnB1c2goY3VycmVudE9wdGlvbik7XG4gICAgICByZXR1cm4gYWNjdW11bGF0ZWRPcHRpb25zO1xuICAgIH0sIFtdKTtcbiAgfVxuXG4gIHByaXZhdGUgdmVyaWZ5Q29tYm9PcHRpb25zR3JvdXAoY29tYm9PcHRpb25zTGlzdDogQXJyYXk8UG9Db21ib09wdGlvbkdyb3VwPikge1xuICAgIHJldHVybiBjb21ib09wdGlvbnNMaXN0LnJlZHVjZSgoYWNjdW11bGF0ZWRHcm91cE9wdGlvbnMsIGN1cnJlbnRPcHRpb24pID0+IHtcbiAgICAgIGNvbnN0IHsgb3B0aW9ucywgbGFiZWwgfSA9IGN1cnJlbnRPcHRpb247XG4gICAgICBjb25zdCB2ZXJpZmllZENvbWJvT3B0aW9uc0dyb3VwTGlzdCA9IHRoaXMudmVyaWZ5Q29tYm9PcHRpb25zKG9wdGlvbnMsIHRydWUsIGFjY3VtdWxhdGVkR3JvdXBPcHRpb25zKTtcblxuICAgICAgaWYgKHZlcmlmaWVkQ29tYm9PcHRpb25zR3JvdXBMaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgdGhpcy5zb3J0T3B0aW9ucyh2ZXJpZmllZENvbWJvT3B0aW9uc0dyb3VwTGlzdCk7XG5cbiAgICAgICAgYWNjdW11bGF0ZWRHcm91cE9wdGlvbnMucHVzaCh7IGxhYmVsOiBsYWJlbCwgb3B0aW9uczogdHJ1ZSB9LCAuLi52ZXJpZmllZENvbWJvT3B0aW9uc0dyb3VwTGlzdCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBhY2N1bXVsYXRlZEdyb3VwT3B0aW9ucztcbiAgICB9LCBbXSk7XG4gIH1cblxuICBwcml2YXRlIHZlcmlmeUlmSGFzTGFiZWwoY3VycmVudE9wdGlvbjogUG9Db21ib0dyb3VwID0ge30pIHtcbiAgICBjb25zdCB7IGxhYmVsLCBvcHRpb25zLCB2YWx1ZSB9ID0gY3VycmVudE9wdGlvbjtcblxuICAgIGlmICgodGhpcy5pc09wdGlvbkdyb3VwTGlzdCAmJiBvcHRpb25zICYmICFsYWJlbCkgfHwgKCFsYWJlbCAmJiAhdmFsdWUpIHx8ICghdGhpcy5pc09wdGlvbkdyb3VwTGlzdCAmJiBvcHRpb25zKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmICghY3VycmVudE9wdGlvbi5sYWJlbCkge1xuICAgICAgY3VycmVudE9wdGlvbi5sYWJlbCA9IGN1cnJlbnRPcHRpb24udmFsdWUudG9TdHJpbmcoKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVJbnRlcm5hbFZhcmlhYmxlcyhvcHRpb246IFBvQ29tYm9PcHRpb24gfCBQb0NvbWJvR3JvdXApIHtcbiAgICBpZiAob3B0aW9uKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkVmlldyA9IG9wdGlvbjtcbiAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb24gPSBvcHRpb247XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRWaWV3ID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbiA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZU1vZGVsKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAodmFsdWUgIT09IHRoaXMuc2VsZWN0ZWRWYWx1ZSkge1xuICAgICAgaWYgKCF0aGlzLmZyb21Xcml0ZVZhbHVlKSB7XG4gICAgICAgIHRoaXMuY2FsbE1vZGVsQ2hhbmdlKHZhbHVlKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5jaGFuZ2UuZW1pdCh0aGlzLmVtaXRPYmplY3RWYWx1ZSA/IHRoaXMuc2VsZWN0ZWRPcHRpb24gOiB2YWx1ZSk7XG4gICAgfVxuXG4gICAgdGhpcy5zZWxlY3RlZFZhbHVlID0gdmFsdWU7XG4gICAgdGhpcy5mcm9tV3JpdGVWYWx1ZSA9IGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVTZWxlY3RlZFZhbHVlV2l0aE9sZE9wdGlvbigpIHtcbiAgICBjb25zdCBvbGRPcHRpb24gPSB0aGlzLmdldE9wdGlvbkZyb21WYWx1ZSh0aGlzLnNlbGVjdGVkVmFsdWUsIHRoaXMuY29tYm9PcHRpb25zTGlzdCk7XG5cbiAgICBpZiAob2xkT3B0aW9uICYmIG9sZE9wdGlvbi5sYWJlbCkge1xuICAgICAgcmV0dXJuIHRoaXMudXBkYXRlU2VsZWN0ZWRWYWx1ZShvbGRPcHRpb24pO1xuICAgIH1cbiAgfVxuXG4gIGFic3RyYWN0IHNldElucHV0VmFsdWUodmFsdWU6IGFueSk6IHZvaWQ7XG5cbiAgYWJzdHJhY3QgYXBwbHlGaWx0ZXIodmFsdWU6IHN0cmluZyk6IHZvaWQ7XG5cbiAgYWJzdHJhY3QgZ2V0T2JqZWN0QnlWYWx1ZSh2YWx1ZTogc3RyaW5nKTogdm9pZDtcblxuICBhYnN0cmFjdCBnZXRJbnB1dFZhbHVlKCk6IHN0cmluZztcblxuICBhYnN0cmFjdCBpbml0SW5wdXRPYnNlcnZhYmxlKCk6IHZvaWQ7XG59XG4iXX0=
|
|
803
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tY29tYm8tYmFzZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2NvbXBvbmVudHMvcG8tZmllbGQvcG8tY29tYm8vcG8tY29tYm8tYmFzZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUNBLE9BQU8sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQWUsTUFBTSxlQUFlLENBQUM7QUFFNUYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUU3RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDckYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHL0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7OztBQU9oRSxNQUFNLDhCQUE4QixHQUFHLEdBQUcsQ0FBQztBQUMzQyxNQUFNLDRCQUE0QixHQUFHLE9BQU8sQ0FBQztBQUM3QyxNQUFNLDRCQUE0QixHQUFHLE9BQU8sQ0FBQztBQUU3QyxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRztJQUNwQyxFQUFFLEVBQW1CO1FBQ25CLE1BQU0sRUFBRSxlQUFlO0tBQ3hCO0lBQ0QsRUFBRSxFQUFtQjtRQUNuQixNQUFNLEVBQUUsc0JBQXNCO0tBQy9CO0lBQ0QsRUFBRSxFQUFtQjtRQUNuQixNQUFNLEVBQUUsd0JBQXdCO0tBQ2pDO0lBQ0QsRUFBRSxFQUFtQjtRQUNuQixNQUFNLEVBQUUsbUJBQW1CO0tBQzVCO0NBQ0YsQ0FBQztBQUVGOzs7Ozs7Ozs7Ozs7Ozs7O0dBZ0JHO0FBRUgsTUFBTSxPQUFnQixvQkFBb0I7SUFtZHhDLFlBQVksZUFBa0M7UUFs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LEtBQUs7bUJBQUMsZUFBZTtZQTRCUSxZQUFZO2tCQUF6QyxLQUFLO21CQUFDLGlCQUFpQjtZQWtDQyxRQUFRO2tCQUFoQyxLQUFLO21CQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBWYWxpZGF0b3IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgRGlyZWN0aXZlLCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBjb252ZXJ0VG9Cb29sZWFuLCBpc1R5cGVvZiwgdmFsaWRWYWx1ZSB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL3V0aWwnO1xuaW1wb3J0IHsgUG9MYW5ndWFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9wby1sYW5ndWFnZS9wby1sYW5ndWFnZS5zZXJ2aWNlJztcbmltcG9ydCB7IHBvTG9jYWxlRGVmYXVsdCB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3BvLWxhbmd1YWdlL3BvLWxhbmd1YWdlLmNvbnN0YW50JztcbmltcG9ydCB7IElucHV0Qm9vbGVhbiB9IGZyb20gJy4uLy4uLy4uL2RlY29yYXRvcnMnO1xuaW1wb3J0IHsgcmVxdWlyZWRGYWlsZWQgfSBmcm9tICcuLi92YWxpZGF0b3JzJztcblxuaW1wb3J0IHsgUG9Db21ib0ZpbHRlciB9IGZyb20gJy4vaW50ZXJmYWNlcy9wby1jb21iby1maWx0ZXIuaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvQ29tYm9GaWx0ZXJNb2RlIH0gZnJvbSAnLi9wby1jb21iby1maWx0ZXItbW9kZS5lbnVtJztcbmltcG9ydCB7IFBvQ29tYm9GaWx0ZXJTZXJ2aWNlIH0gZnJvbSAnLi9wby1jb21iby1maWx0ZXIuc2VydmljZSc7XG5pbXBvcnQgeyBQb0NvbWJvR3JvdXAgfSBmcm9tICcuL2ludGVyZmFjZXMvcG8tY29tYm8tZ3JvdXAuaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvQ29tYm9MaXRlcmFscyB9IGZyb20gJy4vaW50ZXJmYWNlcy9wby1jb21iby1saXRlcmFscy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUG9Db21ib09wdGlvbiB9IGZyb20gJy4vaW50ZXJmYWNlcy9wby1jb21iby1vcHRpb24uaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvQ29tYm9PcHRpb25Hcm91cCB9IGZyb20gJy4vaW50ZXJmYWNlcy9wby1jb21iby1vcHRpb24tZ3JvdXAuaW50ZXJmYWNlJztcblxuY29uc3QgUE9fQ09NQk9fREVCT1VOQ0VfVElNRV9ERUZBVUxUID0gNDAwO1xuY29uc3QgUE9fQ09NQk9fRklFTERfTEFCRUxfREVGQVVMVCA9ICdsYWJlbCc7XG5jb25zdCBQT19DT01CT19GSUVMRF9WQUxVRV9ERUZBVUxUID0gJ3ZhbHVlJztcblxuZXhwb3J0IGNvbnN0IHBvQ29tYm9MaXRlcmFsc0RlZmF1bHQgPSB7XG4gIGVuOiA8UG9Db21ib0xpdGVyYWxzPntcbiAgICBub0RhdGE6ICdObyBkYXRhIGZvdW5kJ1xuICB9LFxuICBlczogPFBvQ29tYm9MaXRlcmFscz57XG4gICAgbm9EYXRhOiAnRGF0b3Mgbm8gZW5jb250cmFkb3MnXG4gIH0sXG4gIHB0OiA8UG9Db21ib0xpdGVyYWxzPntcbiAgICBub0RhdGE6ICdOZW5odW0gZGFkbyBlbmNvbnRyYWRvJ1xuICB9LFxuICBydTogPFBvQ29tYm9MaXRlcmFscz57XG4gICAgbm9EYXRhOiAn0JTQsNC90L3Ri9C1INC90LUg0L3QsNC50LTQtdC90YsnXG4gIH1cbn07XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uXG4gKlxuICogTyBgcG8tY29tYm9gIGV4aWJlIHVtYSBsaXN0YSBkZSBvcMOnw7VlcyBjb20gZsOhY2lsIHNlbGXDp8OjbyBlIGZpbHRyYWdlbS5cbiAqXG4gKiBBbMOpbSBkYSBleGliacOnw6NvIHBhZHLDo28sIG5lbGUgw6kgcG9zc8OtdmVsIGxpc3RhciBhcyBvcMO1ZXMgZW0gYWdydXBhbWVudG9zLlxuICpcbiAqIMOJIHBvc3PDrXZlbCBzZWxlY2lvbmFyIGUgbmF2ZWdhciBlbnRyZSBhcyBvcMOnw7VlcyBkYSBsaXN0YSB0YW50byBhdHJhdsOpcyBkbyAqbW91c2UqIHF1YW50byBkbyB0ZWNsYWRvLiBObyB0ZWNsYWRvIG5hdmVndWUgY29tXG4gKiBhcyBzZXRhcyBlIHByZXNzaW9uZSAqRW50ZXIqIG5hIG9ww6fDo28gcXVlIGRlc2VqYXIuXG4gKlxuICogQ29tIGVsZSB0YW1iw6ltIMOpIHBvc3PDrXZlbCBkZWZpbmlyIHVtYSBsaXN0YSDDoCBwYXJ0aXIgZGEgcmVxdWlzacOnw6NvIGRlIHVtIHNlcnZpw6dvIGRlZmluaWRvIGVtIGBwLWZpbHRlci1zZXJ2aWNlYC5cbiAqXG4gKiBFbSBgcC1maWx0ZXItbW9kZWAsIG8gZmlsdHJvIHBvZGVyw6Egc2VyIGNvbmZpZ3VyYWRvIHBhcmEgYnVzY2FyIG9ww7VlcyBxdWUgY29ycmVzcG9uZGFtIGFvIGluw61jaW8sIGZpbSBvdSBxdWUgY29udGVuaGEgbyB2YWxvciBkaWdpdGFkby5cbiAqXG4gKiBPIGBwby1jb21ib2AgZ3VhcmRhIG8gw7psdGltbyB2YWxvciBjYXNvIG8gdXN1w6FyaW8gZGVzaXN0YSBkZSB1bWEgYnVzY2EsIGRlaXhhbmRvIG8gY2FtcG8gb3UgcHJlc3Npb25hbmRvICpFc2MqLiBDYXNvIHNlamEgZGlnaXRhZG8gbm9cbiAqIGNhbXBvIGRlIGJ1c2NhIGEgZGVzY3Jpw6fDo28gY29tcGxldGEgZGUgdW0gaXRlbSwgZW50w6NvIGEgc2VsZcOnw6NvIHNlcsOhIGF1dG9tYXRpY2FtZW50ZSBlZmV0dWFkYSBhbyBkZWl4YXIgbyBjYW1wbyBvdSBwcmVzc2lvbmFuZG8gKkVudGVyKi5cbiAqL1xuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgUG9Db21ib0Jhc2VDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25Jbml0LCBWYWxpZGF0b3Ige1xuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBBcGxpY2EgZm9jbyBubyBlbGVtZW50byBhbyBzZXIgaW5pY2lhZG8uXG4gICAqXG4gICAqID4gQ2FzbyBtYWlzIGRlIHVtIGVsZW1lbnRvIHNlamEgY29uZmlndXJhZG8gY29tIGVzc2EgcHJvcHJpZWRhZGUsIGFwZW5hcyBvIMO6bHRpbW8gZWxlbWVudG8gZGVjbGFyYWRvIGNvbSBlbGEgdGVyw6EgbyBmb2NvLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICBASW5wdXQoJ3AtYXV0by1mb2N1cycpIEBJbnB1dEJvb2xlYW4oKSBhdXRvRm9jdXM6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKiogTGFiZWwgbm8gY29tcG9uZW50ZS4gKi9cbiAgQElucHV0KCdwLWxhYmVsJykgbGFiZWw/OiBzdHJpbmc7XG5cbiAgLyoqIFRleHRvIGRlIGFwb2lvIHBhcmEgbyBjYW1wby4gKi9cbiAgQElucHV0KCdwLWhlbHAnKSBoZWxwPzogc3RyaW5nO1xuXG4gIC8qKiBOb21lIGRvIGNvbXBvbmVudGUuICovXG4gIEBJbnB1dCgnbmFtZScpIG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBOZXN0YSBwcm9wcmllZGFkZSBkZXZlIHNlciBpbmZvcm1hZGEgYSBVUkwgZG8gc2VydmnDp28gZW0gcXVlIHNlcsOhIHJlYWxpemFkbyBvIGZpbHRybyBwYXJhIGNhcnJlZ2FtZW50byBkYSBsaXN0YSBkZVxuICAgKiBpdGVucyBubyBjb21wb25lbnRlLlxuICAgKiBDYXNvIGhhamEgYSBuZWNlc3NpZGFkZSBkZSBjdXN0b21pemHDp8OjbywgZW50w6NvIHBvZGUgc2VyIGluZm9ybWFkbyB1bSBzZXJ2acOnbyBpbXBsZW1lbnRhbmRvIGEgaW50ZXJmYWNlIFBvQ29tYm9GaWx0ZXIuXG4gICAqXG4gICAqIENhc28gdXRpbGl6YWRvIHVtYSBVUkwsIG8gc2VydmnDp28gZGV2ZSBzZXIgcmV0b3JuYWRvIG5vIHBhZHLDo28gQVBJIFRPVFZTIGUgdXRpbGl6YSBhcyBwcm9wcmllZGFkZXNcbiAgICogYHAtZmllbGQtbGFiZWxgIGUgYHAtZmllbGQtdmFsdWVgIHBhcmEgYSBjb25zdHJ1w6fDo28gZGEgbGlzdGEgZGUgaXRlbnMuXG4gICAqXG4gICAqIFF1YW5kbyB1dGlsaXphZGEgdW1hIFVSTCBkZSBzZXJ2acOnbywgZW50w6NvIHNlcsOhIGNvbmNhdGVuYWRhIG5lc3RhIFVSTCBvIHZhbG9yIHF1ZSBkZXNlamEtc2UgZmlsdHJhciBkYSBzZWd1aW50ZSBmb3JtYTpcbiAgICogYGBgXG4gICAqIHVybCArID9maWx0ZXI9UGV0ZXJcbiAgICogYGBgXG4gICAqXG4gICAqIFNlIGZvciBkZWZpbmlkYSBhIHByb3ByaWVkYWRlIGBwLWZpbHRlci1wYXJhbXNgLCBhIG1lc21hIHRhbWLDqW0gc2Vyw6EgY29uY2F0ZW5hZGEuIFBvciBleGVtcGxvLCBwYXJhIG9cbiAgICogcGFyw6JtZXRybyBgeyBhZ2U6IDIzIH1gIGEgVVJMIGZpY2FyaWE6XG4gICAqXG4gICAqIGBgYFxuICAgKiB1cmwgKyA/cGFnZT0xJnBhZ2VTaXplPTIwJmFnZT0yMyZmaWx0ZXI9UGV0ZXJcbiAgICogYGBgXG4gICAqL1xuICBASW5wdXQoJ3AtZmlsdGVyLXNlcnZpY2UnKSBmaWx0ZXJTZXJ2aWNlOiBQb0NvbWJvRmlsdGVyIHwgc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIERlZmluZSBvIMOtY29uZSBxdWUgc2Vyw6EgZXhpYmlkbyBubyBpbsOtY2lvIGRvIGNhbXBvLlxuICAgKlxuICAgKiDDiSBwb3Nzw612ZWwgdXNhciBxdWFscXVlciB1bSBkb3Mgw61jb25lcyBkYSBbQmlibGlvdGVjYSBkZSDDrWNvbmVzXSgvZ3VpZGVzL2ljb25zKS4gY29uZm9ybWUgZXhlbXBsbyBhYmFpeG86XG4gICAqIGBgYFxuICAgKiA8cG8tY29tYm8gcC1pY29uPVwicG8taWNvbi11c2VyXCIgcC1sYWJlbD1cIlBPIGNvbWJvXCI+PC9wby1jb21ibz5cbiAgICogYGBgXG4gICAqIFRhbWLDqW0gw6kgcG9zc8OtdmVsIHV0aWxpemFyIG91dHJhcyBmb250ZXMgZGUgw61jb25lcywgcG9yIGV4ZW1wbG8gYSBiaWJsaW90ZWNhICpGb250IEF3ZXNvbWUqLCBkYSBzZWd1aW50ZSBmb3JtYTpcbiAgICogYGBgXG4gICAqIDxwby1jb21ibyBwLWljb249XCJmYSBmYS1wb2RjYXN0XCIgcC1sYWJlbD1cIlBPIGNvbWJvXCI+PC9wby1jb21ibz5cbiAgICogYGBgXG4gICAqIE91dHJhIG9ww6fDo28gc2VyaWEgYSBjdXN0b21pemHDp8OjbyBkbyDDrWNvbmUgYXRyYXbDqXMgZG8gYFRlbXBsYXRlUmVmYCwgY29uZm9ybWUgZXhlbXBsbyBhYmFpeG86XG4gICAqIGBgYFxuICAgKiA8cG8tY29tYm8gW3AtaWNvbl09XCJ0ZW1wbGF0ZVwiIHAtbGFiZWw9XCJjb21ibyB0ZW1wbGF0ZSBpb25pY1wiPjwvcG8tY29tYm8+XG4gICAqXG4gICAqIDxuZy10ZW1wbGF0ZSAjdGVtcGxhdGU+XG4gICAqICA8aW9uLWljb24gc3R5bGU9XCJmb250LXNpemU6IGluaGVyaXRcIiBuYW1lPVwiaGVhcnRcIj48L2lvbi1pY29uPlxuICAgKiA8L25nLXRlbXBsYXRlPlxuICAgKiBgYGBcbiAgICogPiBQYXJhIG8gw61jb25lIGVucXVhZHJhciBjb3JyZXRhbWVudGUsIGRldmUtc2UgdXRpbGl6YXIgYGZvbnQtc2l6ZTogaW5oZXJpdGAgY2FzbyBvIMOtY29uZSB1dGlsaXphZG8gbsOjbyBhcGxpcXVlLW8uXG4gICAqL1xuICBASW5wdXQoJ3AtaWNvbicpIGljb24/OiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjx2b2lkPjtcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBEZWZpbmUgc2UgYSBpbmRpY2HDp8OjbyBkZSBjYW1wbyBvcGNpb25hbCBzZXLDoSBleGliaWRhLlxuICAgKlxuICAgKiA+IE7Do28gc2Vyw6EgZXhpYmlkYSBhIGluZGljYcOnw6NvIHNlOlxuICAgKiAtIE8gY2FtcG8gY29udGVyIGBwLXJlcXVpcmVkYDtcbiAgICogLSBOw6NvIHBvc3N1aXIgYHAtaGVscGAgZS9vdSBgcC1sYWJlbGAuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCgncC1vcHRpb25hbCcpIG9wdGlvbmFsOiBib29sZWFuO1xuXG4gIC8qKiBTZSB2ZXJkYWRlaXJvLCBvIGNhbXBvIHJlY2ViZXLDoSB1bSBib3TDo28gcGFyYSBzZXIgbGltcG8uICovXG4gIEBJbnB1dCgncC1jbGVhbicpIEBJbnB1dEJvb2xlYW4oKSBjbGVhbj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogU2UgdmVyZGFkZWlybywgbyBldmVudG8gYHAtY2hhbmdlYCByZWNlYmVyw6EgY29tbyBhcmd1bWVudG8gbyBgUG9Db21ib09wdGlvbmAgcmVmZXJlbnRlIMOgIG9ww6fDo28gc2VsZWNpb25hZGEuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCgncC1lbWl0LW9iamVjdC12YWx1ZScpIEBJbnB1dEJvb2xlYW4oKSBlbWl0T2JqZWN0VmFsdWU/OiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogU2UgdmVyZGFkZWlybywgZGVzYWJpbGl0YXLDoSBhIGJ1c2NhIGRlIHVtIGl0ZW0gdmlhIFRBQi5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KCdwLWRpc2FibGVkLXRhYi1maWx0ZXInKSBASW5wdXRCb29sZWFuKCkgZGlzYWJsZWRUYWJGaWx0ZXI/OiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRGV2ZSBzZXIgaW5mb3JtYWRhIHVtYSBmdW7Dp8OjbyBxdWUgc2Vyw6EgZGlzcGFyYWRhIHF1YW5kbyBob3V2ZXIgYWx0ZXJhw6fDtWVzIG5vIG5nTW9kZWwuIEEgZnVuw6fDo28gcmVjZWJlcsOhIGNvbW8gYXJndW1lbnRvIG8gbW9kZWwgbW9kaWZpY2Fkby5cbiAgICpcbiAgICogPiBQb2RlLXNlIG9wdGFyIHBlbG8gcmVjZWJpbWVudG8gZG8gb2JqZXRvIHNlbGVjaW9uYWRvIGFvIGludsOpcyBkbyBtb2RlbCBhdHJhdsOpcyBkYSBwcm9wcmllZGFkZSBgcC1lbWl0LW9iamVjdC12YWx1ZWAuXG4gICAqL1xuICBAT3V0cHV0KCdwLWNoYW5nZScpIGNoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBGdW7Dp8OjbyBwYXJhIGF0dWFsaXphciBvIG5nTW9kZWwgZG8gY29tcG9uZW50ZSwgbmVjZXNzw6FyaW8gcXVhbmRvIG7Do28gZm9yIHV0aWxpemFkbyBkZW50cm8gZGEgdGFnIGZvcm0uXG4gICAqXG4gICAqIE5hIHZlcnPDo28gMTIuMi4wIGRvIEFuZ3VsYXIgYSB2ZXJpZmljYcOnw6NvIGBzdHJpY3RUZW1wbGF0ZXNgIHZlbSB0cnVlIGNvbW8gZGVmYXVsdC4gUG9ydGFudG8sIHBhcmEgdXRpbGl6YXJcbiAgICogdHdvLXdheSBiaW5kaW5nIG5vIGNvbXBvbmVudGUgZGV2ZSBzZSB1dGlsaXphciBkYSBzZWd1aW50ZSBmb3JtYTpcbiAgICpcbiAgICogYGBgXG4gICAqIDxwby1jb21ibyAuLi4gW25nTW9kZWxdPVwiY29tYm9Nb2RlbFwiIChuZ01vZGVsQ2hhbmdlKT1cImNvbWJvTW9kZWwgPSAkZXZlbnRcIj4gPC9wby1jb21ibz5cbiAgICogYGBgXG4gICAqXG4gICAqL1xuICBAT3V0cHV0KCduZ01vZGVsQ2hhbmdlJykgbmdNb2RlbENoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBjYWNoZU9wdGlvbnM6IEFycmF5PFBvQ29tYm9PcHRpb24gfCBQb0NvbWJvR3JvdXA+ID0gW107XG4gIGRlZmF1bHRTZXJ2aWNlOiBQb0NvbWJvRmlsdGVyU2VydmljZTtcbiAgZmlyc3RJbldyaXRlVmFsdWU6IGJvb2xlYW4gPSB0cnVlO1xuICBpc0ZpcnN0RmlsdGVyOiBib29sZWFuID0gdHJ1ZTtcbiAgaXNGaWx0ZXJpbmc6IGJvb2xlYW4gPSBmYWxzZTtcbiAga2V5dXBTdWJzY3JpYmU6IGFueTtcbiAgb25Nb2RlbENoYW5nZTogYW55O1xuICBwcmV2aW91c1NlYXJjaFZhbHVlOiBzdHJpbmcgPSAnJztcbiAgc2VsZWN0ZWRPcHRpb246IFBvQ29tYm9PcHRpb24gfCBQb0NvbWJvR3JvdXA7XG4gIHNlbGVjdGVkVmFsdWU6IGFueTtcbiAgc2VsZWN0ZWRWaWV3OiBhbnk7XG4gIHNlcnZpY2U6IFBvQ29tYm9GaWx0ZXJTZXJ2aWNlO1xuICB2aXNpYmxlT3B0aW9uczogQXJyYXk8UG9Db21ib09wdGlvbiB8IFBvQ29tYm9Hcm91cD4gPSBbXTtcblxuICBwcm90ZWN0ZWQgY2FjaGVTdGF0aWNPcHRpb25zOiBBcnJheTxQb0NvbWJvT3B0aW9uIHwgUG9Db21ib0dyb3VwPiA9IFtdO1xuICBwcm90ZWN0ZWQgY29tYm9PcHRpb25zTGlzdDogQXJyYXk8UG9Db21ib09wdGlvbiB8IFBvQ29tYm9Hcm91cD4gPSBbXTtcbiAgcHJvdGVjdGVkIG9uTW9kZWxUb3VjaGVkOiBhbnkgPSBudWxsO1xuXG4gIHByaXZhdGUgX2NoYW5nZU9uRW50ZXI/OiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX2RlYm91bmNlVGltZT86IG51bWJlciA9IDQwMDtcbiAgcHJpdmF0ZSBfZGlzYWJsZWQ/OiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX2Rpc2FibGVkSW5pdEZpbHRlcj86IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBfZmllbGRMYWJlbD86IHN0cmluZyA9ICdsYWJlbCc7XG4gIHByaXZhdGUgX2ZpZWxkVmFsdWU/OiBzdHJpbmcgPSAndmFsdWUnO1xuICBwcml2YXRlIF9maWx0ZXJNaW5sZW5ndGg/OiBudW1iZXIgPSAwO1xuICBwcml2YXRlIF9maWx0ZXJNb2RlPzogUG9Db21ib0ZpbHRlck1vZGUgPSBQb0NvbWJvRmlsdGVyTW9kZS5zdGFydHNXaXRoO1xuICBwcml2YXRlIF9maWx0ZXJQYXJhbXM/OiBhbnk7XG4gIHByaXZhdGUgX2xpdGVyYWxzPzogUG9Db21ib0xpdGVyYWxzO1xuICBwcml2YXRlIF9vcHRpb25zOiBBcnJheTxQb0NvbWJvT3B0aW9uIHwgUG9Db21ib09wdGlvbkdyb3VwPiA9IFtdO1xuICBwcml2YXRlIF9wbGFjZWhvbGRlcjogc3RyaW5nID0gJyc7XG4gIHByaXZhdGUgX3JlcXVpcmVkPzogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIF9zb3J0PzogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIGxhbmd1YWdlOiBzdHJpbmc7XG5cbiAgLy8gdXRpbGl6YWRvIHBhcmEgZmF6ZXIgbyBjb250cm9sZSBkZSBhdHVhbGl6YXIgbyBtb2RlbC5cbiAgLy8gbsOjbyBkZXZlIGZvcsOnYXIgYSBhdHVhbGl6YcOnw6NvIHNlIG8gZ2F0aWxobyBmb3IgbyB3cml0ZVZhbHVlIHBhcmEgbsOjbyBkZWl4YXIgbyBjYW1wbyBkaXJ0eS5cbiAgcHJpdmF0ZSBmcm9tV3JpdGVWYWx1ZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHByaXZhdGUgdmFsaWRhdG9yQ2hhbmdlOiBhbnk7XG5cbiAgLyoqIE1lbnNhZ2VtIGFwcmVzZW50YWRhIGVucXVhbnRvIG8gY2FtcG8gZXN0aXZlciB2YXppby4gKi9cbiAgQElucHV0KCdwLXBsYWNlaG9sZGVyJykgc2V0IHBsYWNlaG9sZGVyKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9wbGFjZWhvbGRlciA9IHZhbHVlIHx8ICcnO1xuICB9XG5cbiAgZ2V0IHBsYWNlaG9sZGVyKCkge1xuICAgIHJldHVybiB0aGlzLl9wbGFjZWhvbGRlcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEVzdGEgcHJvcHJpZWRhZGUgZGVmaW5lIGVtIHF1YW50byB0ZW1wbyAoZW0gbWlsaXNzZWd1bmRvcyksIGFndWFyZGEgcGFyYSBhY2lvbmFyIG8gZXZlbnRvIGRlIGZpbHRybyBhcMOzcyBjYWRhIHByZXNzaW9uYW1lbnRvIGRlIHRlY2xhLlxuICAgKiBTZXLDoSB1dGlsaXphZGEgYXBlbmFzIHF1YW5kbyBob3V2ZXIgc2VydmnDp28gKGBwLWZpbHRlci1zZXJ2aWNlYCkuXG4gICAqXG4gICAqIEBkZWZhdWx0IGA0MDBgXG4gICAqL1xuICBASW5wdXQoJ3AtZGVib3VuY2UtdGltZScpIHNldCBkZWJvdW5jZVRpbWUodmFsdWU6IG51bWJlcikge1xuICAgIGNvbnN0IHBhcnNlZFZhbHVlID0gcGFyc2VJbnQoPGFueT52YWx1ZSwgMTApO1xuXG4gICAgdGhpcy5fZGVib3VuY2VUaW1lID0gIWlzTmFOKHBhcnNlZFZhbHVlKSAmJiBwYXJzZWRWYWx1ZSA+IDAgPyBwYXJzZWRWYWx1ZSA6IFBPX0NPTUJPX0RFQk9VTkNFX1RJTUVfREVGQVVMVDtcbiAgfVxuXG4gIGdldCBkZWJvdW5jZVRpbWUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fZGVib3VuY2VUaW1lO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogRGVzYWJpbGl0YSBvIGZpbHRybyBpbmljaWFsIG5vIHNlcnZpw6dvLCBxdWUgw6kgZXhlY3V0YWRvIG5vIHByaW1laXJvIGNsaXF1ZSBubyBjYW1wby5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKlxuICAgKi9cbiAgQElucHV0KCdwLWRpc2FibGVkLWluaXQtZmlsdGVyJykgc2V0IGRpc2FibGVkSW5pdEZpbHRlcih2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2Rpc2FibGVkSW5pdEZpbHRlciA9IGNvbnZlcnRUb0Jvb2xlYW4odmFsdWUpO1xuICB9XG5cbiAgZ2V0IGRpc2FibGVkSW5pdEZpbHRlcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWRJbml0RmlsdGVyO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogRGV2ZSBzZXIgaW5mb3JtYWRvIG8gbm9tZSBkYSBwcm9wcmllZGFkZSBkbyBvYmpldG8gcXVlIHNlcsOhIHV0aWxpemFkbyBwYXJhIGEgY29udmVyc8OjbyBkb3MgaXRlbnMgYXByZXNlbnRhZG9zIG5hIGxpc3RhIGRvIGNvbXBvbmVudGVcbiAgICogKGBwLW9wdGlvbnNgKSwgZXN0YSBwcm9wcmllZGFkZSBzZXLDoSByZXNwb25zw6F2ZWwgcGVsbyB2YWxvciBkZSBjYWRhIGl0ZW0gZGEgbGlzdGEuXG4gICAqXG4gICAqIE5lY2Vzc8OhcmlvIHF1YW5kbyBpbmZvcm1hciBvIHNlcnZpw6dvIGNvbW8gVVJMIGUgbyBtZXNtbyBuw6NvIGVzdGl2ZXIgcmV0b3JuYW5kbyB1bWEgbGlzdGEgZGUgb2JqZXRvcyBubyBwYWRyw6NvIGRhIGludGVyZmFjZVxuICAgKiBQb0NvbWJvT3B0aW9uLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgdmFsdWVgXG4gICAqL1xuICBASW5wdXQoJ3AtZmllbGQtdmFsdWUnKSBzZXQgZmllbGRWYWx1ZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fZmllbGRWYWx1ZSA9IHZhbHVlIHx8IFBPX0NPTUJPX0ZJRUxEX1ZBTFVFX0RFRkFVTFQ7XG5cbiAgICBpZiAoaXNUeXBlb2YodGhpcy5maWx0ZXJTZXJ2aWNlLCAnc3RyaW5nJykgJiYgdGhpcy5zZXJ2aWNlKSB7XG4gICAgICB0aGlzLnNlcnZpY2UuZmllbGRWYWx1ZSA9IHRoaXMuX2ZpZWxkVmFsdWU7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGZpZWxkVmFsdWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpZWxkVmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBEZXZlIHNlciBpbmZvcm1hZG8gbyBub21lIGRhIHByb3ByaWVkYWRlIGRvIG9iamV0byBxdWUgc2Vyw6EgdXRpbGl6YWRvIHBhcmEgYSBjb252ZXJzw6NvIGRvcyBpdGVucyBhcHJlc2VudGFkb3MgbmEgbGlzdGEgZG8gY29tcG9uZW50ZVxuICAgKiAoYHAtb3B0aW9uc2ApLCBlc3RhIHByb3ByaWVkYWRlIHNlcsOhIHJlc3BvbnPDoXZlbCBwZWxvIHRleHRvIGRlIGFwcmVzZW50YcOnw6NvIGRlIGNhZGEgaXRlbSBkYSBsaXN0YS5cbiAgICpcbiAgICogTmVjZXNzw6FyaW8gcXVhbmRvIGluZm9ybWFyIG8gc2VydmnDp28gY29tbyBVUkwgZSBvIG1lc21vIG7Do28gZXN0aXZlciByZXRvcm5hbmRvIHVtYSBsaXN0YSBkZSBvYmpldG9zIG5vIHBhZHLDo28gZGEgaW50ZXJmYWNlXG4gICAqIFBvQ29tYm9PcHRpb24uXG4gICAqXG4gICAqIEBkZWZhdWx0IGBsYWJlbGBcbiAgICovXG4gIEBJbnB1dCgncC1maWVsZC1sYWJlbCcpIHNldCBmaWVsZExhYmVsKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9maWVsZExhYmVsID0gdmFsdWUgfHwgUE9fQ09NQk9fRklFTERfTEFCRUxfREVGQVVMVDtcblxuICAgIGlmIChpc1R5cGVvZih0aGlzLmZpbHRlclNlcnZpY2UsICdzdHJpbmcnKSAmJiB0aGlzLnNlcnZpY2UpIHtcbiAgICAgIHRoaXMuc2VydmljZS5maWVsZExhYmVsID0gdGhpcy5fZmllbGRMYWJlbDtcbiAgICB9XG4gIH1cblxuICBnZXQgZmllbGRMYWJlbCgpIHtcbiAgICByZXR1cm4gdGhpcy5fZmllbGRMYWJlbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFZhbG9yIG3DrW5pbW8gZGUgY2FyYWN0ZXJlcyBwYXJhIHJlYWxpemFyIG8gZmlsdHJvIG5vIHNlcnZpw6dvLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgMGBcbiAgICovXG4gIEBJbnB1dCgncC1maWx0ZXItbWlubGVuZ3RoJykgc2V0IGZpbHRlck1pbmxlbmd0aCh2YWx1ZTogbnVtYmVyKSB7XG4gICAgY29uc3QgcGFyc2VWYWx1ZSA9IHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgPyBwYXJzZUludCh2YWx1ZSwgMTApIDogdmFsdWU7XG5cbiAgICB0aGlzLl9maWx0ZXJNaW5sZW5ndGggPSBOdW1iZXIuaXNJbnRlZ2VyKHBhcnNlVmFsdWUpID8gcGFyc2VWYWx1ZSA6IDA7XG4gIH1cblxuICBnZXQgZmlsdGVyTWlubGVuZ3RoKCkge1xuICAgIHJldHVybiB0aGlzLl9maWx0ZXJNaW5sZW5ndGg7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBJbmRpY2EgcXVlIG8gY2FtcG8gc2Vyw6Egb2JyaWdhdMOzcmlvLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICBASW5wdXQoJ3AtcmVxdWlyZWQnKSBzZXQgcmVxdWlyZWQocmVxdWlyZWQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9yZXF1aXJlZCA9IGNvbnZlcnRUb0Jvb2xlYW4ocmVxdWlyZWQpO1xuXG4gICAgdGhpcy52YWxpZGF0ZU1vZGVsKHRoaXMuc2VsZWN0ZWRWYWx1ZSk7XG4gIH1cblxuICBnZXQgcmVxdWlyZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3JlcXVpcmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogSW5kaWNhIHF1ZSBvIGV2ZW50byBgcC1jaGFuZ2VgIHPDsyBzZXLDoSBkaXNwYXJhZG8gYW8gY2xpY2FyIG91IHByZXNzaW9uYXIgYSB0ZWNsYSBcIkVudGVyXCIgc29icmUgdW1hIG9ww6fDo28gc2VsZWNpb25hZGEuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCgncC1jaGFuZ2Utb24tZW50ZXInKSBzZXQgY2hhbmdlT25FbnRlcihjaGFuZ2VPbkVudGVyOiBib29sZWFuKSB7XG4gICAgdGhpcy5fY2hhbmdlT25FbnRlciA9IGNvbnZlcnRUb0Jvb2xlYW4oY2hhbmdlT25FbnRlcik7XG4gIH1cblxuICBnZXQgY2hhbmdlT25FbnRlcigpIHtcbiAgICByZXR1cm4gdGhpcy5fY2hhbmdlT25FbnRlcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEluZGljYSBxdWUgbyBjYW1wbyBzZXLDoSBkZXNhYmlsaXRhZG8uXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCgncC1kaXNhYmxlZCcpIHNldCBkaXNhYmxlZChkaXNhYmxlZDogYm9vbGVhbikge1xuICAgIHRoaXMuX2Rpc2FibGVkID0gY29udmVydFRvQm9vbGVhbihkaXNhYmxlZCk7XG5cbiAgICB0aGlzLnZhbGlkYXRlTW9kZWwodGhpcy5zZWxlY3RlZFZhbHVlKTtcbiAgfVxuXG4gIGdldCBkaXNhYmxlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7XG4gIH1cblxuICAvKiogSW5kaWNhIHF1ZSBhIGxpc3RhIGRlZmluaWRhIG5hIHByb3ByaWVkYWRlIHAtb3B0aW9ucyBzZXLDoSBvcmRlbmFkYSBwZWxhIGRlc2NyacOnw6NvLiAqL1xuICBASW5wdXQoJ3Atc29ydCcpIHNldCBzb3J0KHNvcnQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9zb3J0ID0gY29udmVydFRvQm9vbGVhbihzb3J0KTtcbiAgICB0aGlzLmNvbWJvTGlzdERlZmluaXRpb25zKCk7XG4gIH1cblxuICBnZXQgc29ydCgpIHtcbiAgICByZXR1cm4gdGhpcy5fc29ydDtcbiAgfVxuXG4gIC8qKlxuICAgKiBOZXN0YSBwcm9wcmllZGFkZSBkZWZpbmUgYSBsaXN0YSBkZSBvcMOnw7VlcyBkbyBgcG8tY29tYm9gLlxuICAgKlxuICAgKiA+IEEgbGlzdGEgcG9kZSBzZXIgZGVmaW5pZGEgZW0gZG9pcyBmb3JtYXRvcywgc2ltcGxlcyBvdSBjb20gYWdydXBhbWVudG9zLlxuICAgKiAtIFV0aWxpemUgYFBvQ29tYm9PcHRpb25gIHBhcmEgbGlzdGEgZGUgb3DDp8O1ZXMgc2ltcGxlcy5cbiAgICogLSBVdGlsaXplIGBQb0NvbWJvT3B0aW9uR3JvdXBgIHBhcmEgbGlzdGEgZGUgb3DDp8O1ZXMgY29tIGFncnVwYW1lbnRvLlxuICAgKlxuICAgKiAqKkltcG9ydGFudGU6KipcbiAgICogLSBBIGxpc3RhIGRldmUgc2VndWlyIGFzIGRlZmluacOnw7VlcyBkZXNjcml0YXMgbmFzIHJlc3BlY3RpdmFzIGludGVyZmFjZXMsIGNhc28gY29udHLDoXJpbyBuw6NvIGV4aWJpcsOhIGEoYXMpIG9ww6fDo28ow7VlcykgZm9yYSBkb3MgcGFkcsO1ZXMuXG4gICAqIC0gTyBjb21wb25lbnRlIGludGVycHJldGFyw6EgbyBmb3JtYXRvIGRhIGxpc3RhIGRlIGFjb3JkbyBjb20gYSBpbnRlcmZhY2UgdXRpbGl6YWRhIGUgc8OzIGV4aWJpcsOhIGFzIG9ww6fDtWVzIGNvcnJlc3BvbmRlbnRlcyDDoCBlbGEuXG4gICAqIC0gVW0gYWdydXBhbWVudG8gc8OzIHNlcsOhIGV4aWJpZG8gc2UgaG91dmVyIHBlbG8gbWVub3MgdW1hIG9ww6fDo28gdsOhbGlkYS5cbiAgICovXG4gIEBJbnB1dCgncC1vcHRpb25zJykgc2V0IG9wdGlvbnMob3B0aW9uczogQXJyYXk8UG9Db21ib09wdGlvbiB8IFBvQ29tYm9PcHRpb25Hcm91cD4pIHtcbiAgICB0aGlzLl9vcHRpb25zID0gQXJyYXkuaXNBcnJheShvcHRpb25zKSA/IG9wdGlvbnMgOiBbXTtcblxuICAgIHRoaXMuY29tYm9MaXN0RGVmaW5pdGlvbnMoKTtcbiAgfVxuXG4gIGdldCBvcHRpb25zKCkge1xuICAgIHJldHVybiB0aGlzLl9vcHRpb25zO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRGVmaW5lIG8gbW9kbyBkZSBwZXNxdWlzYSB1dGlsaXphZG8gbm8gZmlsdHJvIGRhIGxpc3RhIGRlIHNlbGXDp8OjbzogYHN0YXJ0c1dpdGhgLCBgY29udGFpbnNgIG91IGBlbmRzV2l0aGAuXG4gICAqXG4gICAqID4gUXVhbmRvIHV0aWxpemFyIGEgcHJvcHJpZWRhZGUgYHAtZmlsdGVyLXNlcnZpY2VgIGVzdGEgcHJvcHJpZWRhZGUgc2Vyw6EgaWdub3JhZGEuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBzdGFydHNXaXRoYFxuICAgKi9cbiAgQElucHV0KCdwLWZpbHRlci1tb2RlJykgc2V0IGZpbHRlck1vZGUoZmlsdGVyTW9kZTogUG9Db21ib0ZpbHRlck1vZGUpIHtcbiAgICB0aGlzLl9maWx0ZXJNb2RlID0gZmlsdGVyTW9kZSBpbiBQb0NvbWJvRmlsdGVyTW9kZSA/IGZpbHRlck1vZGUgOiBQb0NvbWJvRmlsdGVyTW9kZS5zdGFydHNXaXRoO1xuICAgIHN3aXRjaCAodGhpcy5fZmlsdGVyTW9kZS50b1N0cmluZygpKSB7XG4gICAgICBjYXNlICdzdGFydHNXaXRoJzpcbiAgICAgICAgdGhpcy5fZmlsdGVyTW9kZSA9IFBvQ29tYm9GaWx0ZXJNb2RlLnN0YXJ0c1dpdGg7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnY29udGFpbnMnOlxuICAgICAgICB0aGlzLl9maWx0ZXJNb2RlID0gUG9Db21ib0ZpbHRlck1vZGUuY29udGFpbnM7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZW5kc1dpdGgnOlxuICAgICAgICB0aGlzLl9maWx0ZXJNb2RlID0gUG9Db21ib0ZpbHRlck1vZGUuZW5kc1dpdGg7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIGdldCBmaWx0ZXJNb2RlKCk6IFBvQ29tYm9GaWx0ZXJNb2RlIHtcbiAgICByZXR1cm4gdGhpcy5fZmlsdGVyTW9kZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIFZhbG9yIHF1ZSBzZXLDoSByZXBhc3NhZG8gY29tbyBwYXLDom1ldHJvIHBhcmEgYSBVUkwgb3UgYW9zIG3DqXRvZG9zIGRvIHNlcnZpw6dvIHF1ZSBpbXBsZW1lbnRhbSBhIGludGVyZmFjZSAqUG9Db21ib0ZpbHRlciouXG4gICAqXG4gICAqID4gQ2FzbyBhIGxpc3RhIGNvbnRlbmhhIGFncnVwYW1lbnRvcywgb3MgbWVzbW9zIHPDsyBzZXLDo28gZXhpYmlkb3Mgc2UgaG91dmVyIG5vIG3DrW5pbW8gdW1hIG9ww6fDo28gcXVlIGNvcnJlc3BvbmRhIMOgIHBlc3F1aXNhLlxuICAgKi9cbiAgQElucHV0KCdwLWZpbHRlci1wYXJhbXMnKSBzZXQgZmlsdGVyUGFyYW1zKGZpbHRlclBhcmFtczogYW55KSB7XG4gICAgdGhpcy5fZmlsdGVyUGFyYW1zID0gZmlsdGVyUGFyYW1zIHx8IGZpbHRlclBhcmFtcyA9PT0gMCB8fCBmaWx0ZXJQYXJhbXMgPT09IGZhbHNlID8gZmlsdGVyUGFyYW1zIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgZ2V0IGZpbHRlclBhcmFtcygpIHtcbiAgICByZXR1cm4gdGhpcy5fZmlsdGVyUGFyYW1zO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogT2JqZXRvIGNvbSBhcyBsaXRlcmFpcyB1c2FkYXMgbm8gYHBvLWNvbWJvYC5cbiAgICpcbiAgICogUGFyYSB1dGlsaXphciBiYXN0YSBwYXNzYXIgYSBsaXRlcmFsIHF1ZSBkZXNlamEgY3VzdG9taXphcjpcbiAgICpcbiAgICogYGBgXG4gICAqICBjb25zdCBjdXN0b21MaXRlcmFsczogUG9Db21ib0xpdGVyYWxzID0ge1xuICAgKiAgICBub0RhdGE6ICdOZW5odW0gdmFsb3InXG4gICAqICB9O1xuICAgKiBgYGBcbiAgICpcbiAgICogRSBwYXJhIGNhcnJlZ2FyIGEgbGl0ZXJhbCBjdXN0b21pemFkYSwgYmFzdGEgYXBlbmFzIHBhc3NhciBvIG9iamV0byBwYXJhIG8gY29tcG9uZW50ZS5cbiAgICpcbiAgICogYGBgXG4gICAqIDxwby1jb21ib1xuICAgKiAgIFtwLWxpdGVyYWxzXT1cImN1c3RvbUxpdGVyYWxzXCI+XG4gICAqIDwvcG8tY29tYm8+XG4gICAqIGBgYFxuICAgKlxuICAgKiA+IE8gb2JqZXRvIHBhZHLDo28gZGUgbGl0ZXJhaXMgc2Vyw6EgdHJhZHV6aWRvIGRlIGFjb3JkbyBjb20gbyBpZGlvbWEgZG9cbiAgICogW2BQb0kxOG5TZXJ2aWNlYF0oL2RvY3VtZW50YXRpb24vcG8taTE4bikgb3UgZG8gYnJvd3Nlci5cbiAgICovXG4gIEBJbnB1dCgncC1saXRlcmFscycpIHNldCBsaXRlcmFscyh2YWx1ZTogUG9Db21ib0xpdGVyYWxzKSB7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0ICYmICEodmFsdWUgaW5zdGFuY2VvZiBBcnJheSkpIHtcbiAgICAgIHRoaXMuX2xpdGVyYWxzID0ge1xuICAgICAgICAuLi5wb0NvbWJvTGl0ZXJhbHNEZWZhdWx0W3BvTG9jYWxlRGVmYXVsdF0sXG4gICAgICAgIC4uLnBvQ29tYm9MaXRlcmFsc0RlZmF1bHRbdGhpcy5sYW5ndWFnZV0sXG4gICAgICAgIC4uLnZhbHVlXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9saXRlcmFscyA9IHBvQ29tYm9MaXRlcmFsc0RlZmF1bHRbdGhpcy5sYW5ndWFnZV07XG4gICAgfVxuICB9XG5cbiAgZ2V0IGxpdGVyYWxzKCkge1xuICAgIHJldHVybiB0aGlzLl9saXRlcmFscyB8fCBwb0NvbWJvTGl0ZXJhbHNEZWZhdWx0W3RoaXMubGFuZ3VhZ2VdO1xuICB9XG5cbiAgY29uc3RydWN0b3IobGFuZ3VhZ2VTZXJ2aWNlOiBQb0xhbmd1YWdlU2VydmljZSkge1xuICAgIHRoaXMubGFuZ3VhZ2UgPSBsYW5ndWFnZVNlcnZpY2UuZ2V0U2hvcnRMYW5ndWFnZSgpO1xuICB9XG5cbiAgZ2V0IGlzT3B0aW9uR3JvdXBMaXN0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9vcHRpb25zLmxlbmd0aCAmJiB0aGlzLl9vcHRpb25zWzBdLmhhc093blByb3BlcnR5KCdvcHRpb25zJyk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnVwZGF0ZUNvbWJvTGlzdCgpO1xuICB9XG5cbiAgb25Jbml0U2VydmljZSgpIHtcbiAgICBpZiAodGhpcy5maWx0ZXJTZXJ2aWNlKSB7XG4gICAgICB0aGlzLnNldFNlcnZpY2UodGhpcy5maWx0ZXJTZXJ2aWNlKTtcbiAgICAgIHRoaXMuaW5pdElucHV0T2JzZXJ2YWJsZSgpO1xuICAgIH1cbiAgfVxuXG4gIHNldFNlcnZpY2Uoc2VydmljZTogUG9Db21ib0ZpbHRlciB8IHN0cmluZykge1xuICAgIGlmIChzZXJ2aWNlKSB7XG4gICAgICBpZiAoaXNUeXBlb2Yoc2VydmljZSwgJ29iamVjdCcpKSB7XG4gICAgICAgIHRoaXMuc2VydmljZSA9IDxQb0NvbWJvRmlsdGVyU2VydmljZT5zZXJ2aWNlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zZXJ2aWNlID0gdGhpcy5kZWZhdWx0U2VydmljZTtcbiAgICAgICAgdGhpcy5zZXJ2aWNlLmNvbmZpZ1Byb3BlcnRpZXMoPHN0cmluZz5zZXJ2aWNlLCB0aGlzLmZpZWxkTGFiZWwsIHRoaXMuZmllbGRWYWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29tcGFyZU1ldGhvZChzZWFyY2g6IHN0cmluZywgb3B0aW9uOiBQb0NvbWJvT3B0aW9uIHwgUG9Db21ib0dyb3VwLCBmaWx0ZXJNb2RlOiBQb0NvbWJvRmlsdGVyTW9kZSkge1xuICAgIHN3aXRjaCAoZmlsdGVyTW9kZSkge1xuICAgICAgY2FzZSBQb0NvbWJvRmlsdGVyTW9kZS5zdGFydHNXaXRoOlxuICAgICAgICByZXR1cm4gdGhpcy5zdGFydHNXaXRoKHNlYXJjaCwgb3B0aW9uKTtcbiAgICAgIGNhc2UgUG9Db21ib0ZpbHRlck1vZGUuY29udGFpbnM6XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnRhaW5zKHNlYXJjaCwgb3B0aW9uKTtcbiAgICAgIGNhc2UgUG9Db21ib0ZpbHRlck1vZGUuZW5kc1dpdGg6XG4gICAgICAgIHJldHVybiB0aGlzLmVuZHNXaXRoKHNlYXJjaCwgb3B0aW9uKTtcbiAgICB9XG4gIH1cblxuICBzdGFydHNXaXRoKHNlYXJjaDogc3RyaW5nLCBvcHRpb246IFBvQ29tYm9PcHRpb24gfCBQb0NvbWJvR3JvdXApIHtcbiAgICByZXR1cm4gb3B0aW9uLmxhYmVsLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChzZWFyY2gudG9Mb3dlckNhc2UoKSk7XG4gIH1cblxuICBjb250YWlucyhzZWFyY2g6IHN0cmluZywgb3B0aW9uOiBQb0NvbWJvT3B0aW9uIHwgUG9Db21ib0dyb3VwKSB7XG4gICAgcmV0dXJuIG9wdGlvbi5sYWJlbC50b0xvd2VyQ2FzZSgpLmluZGV4T2Yoc2VhcmNoLnRvTG93ZXJDYXNlKCkpID4gLTE7XG4gIH1cblxuICBlbmRzV2l0aChzZWFyY2g6IHN0cmluZywgb3B0aW9uOiBQb0NvbWJvT3B0aW9uIHwgUG9Db21ib0dyb3VwKSB7XG4gICAgcmV0dXJuIG9wdGlvbi5sYWJlbC50b0xvd2VyQ2FzZSgpLmVuZHNXaXRoKHNlYXJjaC50b0xvd2VyQ2FzZSgpKTtcbiAgfVxuXG4gIGdldE9wdGlvbkZyb21WYWx1ZSh2YWx1ZTogYW55LCBvcHRpb25zOiBhbnkpIHtcbiAgICByZXR1cm4gb3B0aW9ucyA/IG9wdGlvbnMuZmluZCgob3B0aW9uOiBhbnkpID0+IHRoaXMuaXNFcXVhbChvcHRpb24udmFsdWUsIHZhbHVlKSkgOiBudWxsO1xuICB9XG5cbiAgZ2V0T3B0aW9uRnJvbUxhYmVsKGxhYmVsOiBhbnksIG9wdGlvbnM6IGFueSkge1xuICAgIGlmIChvcHRpb25zKSB7XG4gICAgICByZXR1cm4gb3B0aW9ucy5maW5kKChvcHRpb246IGFueSkgPT4gb3B0aW9uLmxhYmVsLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA9PT0gbGFiZWwudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlU2VsZWN0ZWRWYWx1ZShvcHRpb246IFBvQ29tYm9PcHRpb24gfCBQb0NvbWJvR3JvdXAsIGlzVXBkYXRlTW9kZWw6IGJvb2xlYW4gPSB0cnVlKSB7XG4gICAgY29uc3Qgb3B0aW9uTGFiZWwgPSAob3B0aW9uICYmIG9wdGlvbi5sYWJlbCkgfHwgJyc7XG5cbiAgICB0aGlzLnVwZGF0ZUludGVybmFsVmFyaWFibGVzKG9wdGlvbik7XG5cbiAgICAvLyBhdHVhbGl6YSBvIHZhbG9yIGRvIGlucHV0IHF1YW5kbyBmb3IgY2hhbmdlT25FbnRlciBhcGVuYXMgc2UgZm9yIHBhcmEgYXR1YWxpemFyIG8gbW9kZWwuXG4gICAgaWYgKHRoaXMuY2hhbmdlT25FbnRlciAmJiBpc1VwZGF0ZU1vZGVsKSB7XG4gICAgICB0aGlzLnNldElucHV0VmFsdWUob3B0aW9uTGFiZWwpO1xuICAgIH0gZWxzZSBpZiAoIXRoaXMuY2hhbmdlT25FbnRlcikge1xuICAgICAgdGhpcy5zZXRJbnB1dFZhbHVlKG9wdGlvbkxhYmVsKTtcbiAgICB9XG5cbiAgICBpZiAoaXNVcGRhdGVNb2RlbCkge1xuICAgICAgY29uc3Qgb3B0aW9uVmFsdWUgPSBvcHRpb24/LnZhbHVlICE9PSB1bmRlZmluZWQgPyBvcHRpb24udmFsdWUgOiB1bmRlZmluZWQ7XG5cbiAgICAgIHRoaXMudXBkYXRlTW9kZWwob3B0aW9uVmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIGNhbGxNb2RlbENoYW5nZSh2YWx1ZTogYW55KSB7XG4gICAgLy8gQ2FzbyBvIGNvbXBvbmVudGUgZXN0aXZlciBkZW50cm8gZGUgdW0gZm9ybSwgdGVyw6EgYWNlc3NvIGFvIG3DqXRvZG8gb25Nb2RlbENoYW5nZS5cbiAgICByZXR1cm4gdGhpcy5vbk1vZGVsQ2hhbmdlID8gdGhpcy5vbk1vZGVsQ2hhbmdlKHZhbHVlKSA6IHRoaXMubmdNb2RlbENoYW5nZS5lbWl0KHZhbHVlKTtcbiAgfVxuXG4gIGlzRXF1YWwodmFsdWU6IGFueSwgaW5wdXRWYWx1ZTogYW55KTogYm9vbGVhbiB7XG4gICAgaWYgKCh2YWx1ZSB8fCB2YWx1ZSA9PT0gMCkgJiYgaW5wdXRWYWx1ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKCkgPT09IGlucHV0VmFsdWUudG9TdHJpbmcoKTtcbiAgICB9XG5cbiAgICBpZiAoKHZhbHVlID09PSBudWxsICYmIGlucHV0VmFsdWUgIT09IG51bGwpIHx8ICh2YWx1ZSA9PT0gdW5kZWZpbmVkICYmIGlucHV0VmFsdWUgIT09IHVuZGVmaW5lZCkpIHtcbiAgICAgIHZhbHVlID0gYCR7dmFsdWV9YDsgLy8gVHJhbnNmb3JtYW5kbyBlbSBzdHJpbmdcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsdWUgPT09IGlucHV0VmFsdWU7XG4gIH1cblxuICBzZWFyY2hGb3JMYWJlbChzZWFyY2g6IHN0cmluZywgb3B0aW9uczogQXJyYXk8UG9Db21ib09wdGlvbiB8IFBvQ29tYm9Hcm91cD4sIGZpbHRlck1vZGU6IFBvQ29tYm9GaWx0ZXJNb2RlKSB7XG4gICAgaWYgKHNlYXJjaCAmJiBvcHRpb25zICYmIG9wdGlvbnMubGVuZ3RoKSB7XG4gICAgICBjb25zdCBuZXdPcHRpb25zOiBBcnJheTxQb0NvbWJvT3B0aW9uIHwgUG9Db21ib0dyb3VwPiA9IFtdO1xuICAgICAgbGV0IGFkZGVkT3B0aW9uc0dyb3VwVGl0bGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICAgIGxldCBvcHRpb25zR3JvdXBUaXRsZTogUG9Db21ib0dyb3VwO1xuXG4gICAgICBvcHRpb25zLmZvckVhY2gob3B0aW9uID0+IHtcbiAgICAgICAgaWYgKCdvcHRpb25zJyBpbiBvcHRpb24pIHtcbiAgICAgICAgICBhZGRlZE9wdGlvbnNHcm91cFRpdGxlID0gZmFsc2U7XG4gICAgICAgICAgcmV0dXJuIChvcHRpb25zR3JvdXBUaXRsZSA9IG9wdGlvbik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAob3B0aW9uLmxhYmVsICYmICh0aGlzLmNvbXBhcmVNZXRob2Qoc2VhcmNoLCBvcHRpb24sIGZpbHRlck1vZGUpIHx8IHRoaXMuc2VydmljZSkpIHtcbiAgICAgICAgICBpZiAodGhpcy5pc09wdGlvbkdyb3VwTGlzdCAmJiAhYWRkZWRPcHRpb25zR3JvdXBUaXRsZSkge1xuICAgICAgICAgICAgbmV3T3B0aW9ucy5wdXNoKG9wdGlvbnNHcm91cFRpdGxlKTtcbiAgICAgICAgICAgIGFkZGVkT3B0aW9uc0dyb3VwVGl0bGUgPSB0cnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIG5ld09wdGlvbnMucHVzaChvcHRpb24pO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5zZWxlY3RlZFZpZXcgPSBuZXdPcHRpb25zW3RoaXMuaXNPcHRpb25Hcm91cExpc3QgPyAxIDogMF07XG4gICAgICB0aGlzLnVwZGF0ZUNvbWJvTGlzdChuZXdPcHRpb25zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy51cGRhdGVDb21ib0xpc3QoKTtcbiAgICB9XG4gIH1cblxuICB1cGRhdGVDb21ib0xpc3Qob3B0aW9ucz86IEFycmF5PFBvQ29tYm9PcHRpb24gfCBQb0NvbWJvR3JvdXA+KSB7XG4gICAgY29uc3QgY29weU9wdGlvbnMgPSBvcHRpb25zIHx8IFsuLi50aGlzLmNvbWJvT3B0aW9uc0xpc3RdO1xuXG4gICAgY29uc3QgbmV3T3B0aW9ucyA9ICFvcHRpb25zICYmIHRoaXMuc2VsZWN0ZWRWYWx1ZSA/IFt7IC4uLnRoaXMuc2VsZWN0ZWRPcHRpb24gfV0gOiBjb3B5T3B0aW9ucztcblxuICAgIHRoaXMudmlzaWJsZU9wdGlvbnMgPSBuZXdPcHRpb25zO1xuXG4gICAgaWYgKCF0aGlzLnNlbGVjdGVkVmlldyAmJiB0aGlzLnZpc2libGVPcHRpb25zLmxlbmd0aCkge1xuICAgICAgdGhpcy5zZWxlY3RlZFZpZXcgPSBjb3B5T3B0aW9ucy5maW5kKG9wdGlvbiA9PiBvcHRpb24udmFsdWUgIT09IHVuZGVmaW5lZCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0TmV4dE9wdGlvbih2YWx1ZTogYW55LCBvcHRpb25zOiBBcnJheTxQb0NvbWJvT3B0aW9uIHwgUG9Db21ib0dyb3VwPiwgcmV2ZXJzZTogYm9vbGVhbiA9IGZhbHNlKSB7XG4gICAgY29uc3Qgb3B0aW9uc0xpc3QgPSByZXZlcnNlID8gb3B0aW9ucy5zbGljZSgwKS5yZXZlcnNlKCkgOiBvcHRpb25zLnNsaWNlKDApO1xuICAgIGxldCBvcHRpb25Gb3VuZCA9IG51bGw7XG4gICAgbGV0IGZvdW5kID0gZmFsc2U7XG5cbiAgICBmb3IgKGNvbnN0IG9wdGlvbiBvZiBvcHRpb25zTGlzdCkge1xuICAgICAgaWYgKG9wdGlvbi52YWx1ZSAmJiAhb3B0aW9uRm91bmQpIHtcbiAgICAgICAgb3B0aW9uRm91bmQgPSBvcHRpb247XG4gICAgICB9XG4gICAgICBpZiAob3B0aW9uLnZhbHVlICYmIGZvdW5kKSB7XG4gICAgICAgIHJldHVybiBvcHRpb247XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5pc0VxdWFsKG9wdGlvbi52YWx1ZSwgdmFsdWUpKSB7XG4gICAgICAgIGZvdW5kID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gb3B0aW9uRm91bmQ7XG4gIH1cblxuICBnZXRJbmRleFNlbGVjdGVkVmlldygpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMudmlzaWJsZU9wdGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmICh0aGlzLmNvbXBhcmVPYmplY3RzKHRoaXMudmlzaWJsZU9wdGlvbnNbaV0sIHRoaXMuc2VsZWN0ZWRWaWV3KSkge1xuICAgICAgICByZXR1cm4gaTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb21wYXJlT2JqZWN0cyhvYmoxOiBhbnksIG9iajI6IGFueSkge1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShvYmoxKSA9PT0gSlNPTi5zdHJpbmdpZnkob2JqMik7XG4gIH1cblxuICB2ZXJpZnlWYWxpZE9wdGlvbigpIHtcbiAgICBjb25zdCBpbnB1dFZhbHVlID0gdGhpcy5nZXRJbnB1dFZhbHVlKCk7XG5cbiAgICBjb25zdCBvcHRpb25Gb3VuZCA9IHRoaXMuZ2V0T3B0aW9uRnJvbUxhYmVsKGlucHV0VmFsdWUsIHRoaXMuY29tYm9PcHRpb25zTGlzdCk7XG5cbiAgICBpZiAoIXRoaXMuc2VydmljZSkge1xuICAgICAgdGhpcy51cGRhdGVDb21ib0xpc3QoWy4uLnRoaXMuY2FjaGVTdGF0aWNPcHRpb25zXSk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbkZvdW5kICYmIG9wdGlvbkZvdW5kLnZhbHVlICE9PSB0aGlzLnNlbGVjdGVkVmFsdWUpIHtcbiAgICAgIHRoaXMudXBkYXRlU2VsZWN0ZWRWYWx1ZShvcHRpb25Gb3VuZCk7XG5cbiAgICAgIHRoaXMucHJldmlvdXNTZWFyY2hWYWx1ZSA9IG9wdGlvbkZvdW5kLmxhYmVsO1xuICAgIH0gZWxzZSBpZiAodGhpcy5zZWxlY3RlZFZhbHVlICYmIHRoaXMuc2VsZWN0ZWRPcHRpb24gJiYgdGhpcy5zZWxlY3RlZE9wdGlvbi5sYWJlbCAhPT0gaW5wdXRWYWx1ZSkge1xuICAgICAgdGhpcy51cGRhdGVTZWxlY3RlZFZhbHVlV2l0aE9sZE9wdGlvbigpO1xuXG4gICAgICB0aGlzLnByZXZpb3VzU2VhcmNoVmFsdWUgPSB0aGlzLnNlbGVjdGVkT3B0aW9uLmxhYmVsO1xuICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSBpZiAoaW5wdXRWYWx1ZSAmJiAhb3B0aW9uRm91bmQpIHtcbiAgICAgIGNvbnN0IGlzSW5wdXRWYWx1ZURpZmZTZWxlY3RlZExhYmVsID0gISEodGhpcy5zZWxlY3RlZE9wdGlvbiAmJiB0aGlzLnNlbGVjdGVkT3B0aW9uLmxhYmVsICE9PSBpbnB1dFZhbHVlKTtcblxuICAgICAgdGhpcy51cGRhdGVTZWxlY3RlZFZhbHVlKG51bGwsIGlzSW5wdXRWYWx1ZURpZmZTZWxlY3RlZExhYmVsIHx8IHRoaXMuY2hhbmdlT25FbnRlcik7XG5cbiAgICAgIHRoaXMucHJldmlvdXNTZWFyY2hWYWx1ZSA9ICcnO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuXG4gIC8vIFJlY2ViZSBhcyBhbHRlcmHDp8O1ZXMgZG8gbW9kZWxcbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KSB7XG4gICAgdGhpcy5mcm9tV3JpdGVWYWx1ZSA9IHRydWU7XG5cbiAgICBpZiAodmFsaWRWYWx1ZSh2YWx1ZSkgJiYgIXRoaXMuc2VydmljZSAmJiB0aGlzLmNvbWJvT3B0aW9uc0xpc3QgJiYgdGhpcy5jb21ib09wdGlvbnNMaXN0Lmxlbmd0aCkge1xuICAgICAgY29uc3Qgb3B0aW9uID0gdGhpcy5nZXRPcHRpb25Gcm9tVmFsdWUodmFsdWUsIHRoaXMuY29tYm9PcHRpb25zTGlzdCk7XG4gICAgICB0aGlzLnVwZGF0ZVNlbGVjdGVkVmFsdWUob3B0aW9uKTtcbiAgICAgIHRoaXMudXBkYXRlQ29tYm9MaXN0KCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gU2UgaG91dmVyIHNlcnZpw6dvIGJ1c2NhIHBlbG8gbW9kZWwuXG4gICAgaWYgKHZhbHVlICYmIHRoaXMuc2VydmljZSkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0T2JqZWN0QnlWYWx1ZSh2YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudXBkYXRlU2VsZWN0ZWRWYWx1ZShudWxsKTtcbiAgICAgIHRoaXMudXBkYXRlQ29tYm9MaXN0KCk7XG4gICAgfVxuICB9XG5cbiAgLy8gRnVuw6fDo28gaW1wbGVtZW50YWRhIGRvIENvbnRyb2xWYWx1ZUFjY2Vzc29yXG4gIC8vIFVzYWRhIHBhcmEgaW50ZXJjZXB0YXIgb3MgZXN0YWRvcyBkZSBoYWJpbGl0YWRvIHZpYSBmb3JtcyBhcGlcbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKSB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uTW9kZWxDaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uTW9kZWxUb3VjaGVkID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVmFsaWRhdG9yQ2hhbmdlKGZuOiAoKSA9PiB2b2lkKSB7XG4gICAgdGhpcy52YWxpZGF0b3JDaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHZhbGlkYXRlKGFic3RyYWN0Q29udHJvbDogQWJzdHJhY3RDb250cm9sKTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB7XG4gICAgaWYgKHJlcXVpcmVkRmFpbGVkKHRoaXMucmVxdWlyZWQsIHRoaXMuZGlzYWJsZWQsIGFic3RyYWN0Q29udHJvbC52YWx1ZSkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHJlcXVpcmVkOiB7XG4gICAgICAgICAgdmFsaWQ6IGZhbHNlXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgY2xlYXIodmFsdWUpIHtcbiAgICB0aGlzLmNhbGxNb2RlbENoYW5nZSh2YWx1ZSk7XG4gICAgdGhpcy51cGRhdGVTZWxlY3RlZFZhbHVlKG51bGwpO1xuICAgIHRoaXMudXBkYXRlQ29tYm9MaXN0KCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgY29uZmlnQWZ0ZXJTZXRGaWx0ZXJTZXJ2aWNlKHNlcnZpY2U6IFBvQ29tYm9GaWx0ZXIgfCBzdHJpbmcpIHtcbiAgICBpZiAoc2VydmljZSkge1xuICAgICAgdGhpcy5jb21ib09wdGlvbnNMaXN0ID0gW107XG4gICAgICB0aGlzLnVuc3Vic2NyaWJlS2V5dXBPYnNlcnZhYmxlKCk7XG4gICAgICB0aGlzLm9uSW5pdFNlcnZpY2UoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZXJ2aWNlID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy5jb21ib09wdGlvbnNMaXN0ID0gdGhpcy5jYWNoZVN0YXRpY09wdGlvbnM7XG4gICAgfVxuXG4gICAgdGhpcy52aXNpYmxlT3B0aW9ucyA9IFtdO1xuICAgIHRoaXMuaXNGaXJzdEZpbHRlciA9IHRydWU7XG4gIH1cblxuICBwcm90ZWN0ZWQgdW5zdWJzY3JpYmVLZXl1cE9ic2VydmFibGUoKSB7XG4gICAgaWYgKHRoaXMua2V5dXBTdWJzY3JpYmUpIHtcbiAgICAgIHRoaXMua2V5dXBTdWJzY3JpYmUudW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgdmFsaWRhdGVNb2RlbChtb2RlbDogYW55KSB7XG4gICAgaWYgKHRoaXMudmFsaWRhdG9yQ2hhbmdlKSB7XG4gICAgICB0aGlzLnZhbGlkYXRvckNoYW5nZShtb2RlbCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjb21ib0xpc3REZWZpbml0aW9ucygpIHtcbiAgICB0aGlzLmNvbWJvT3B0aW9uc0xpc3QgPSB0aGlzLm9wdGlvbnMubGVuZ3RoID4gMCA/IHRoaXMubGlzdGluZ0NvbWJvT3B0aW9ucyh0aGlzLm9wdGlvbnMpIDogdGhpcy5vcHRpb25zO1xuICAgIHRoaXMuY2FjaGVTdGF0aWNPcHRpb25zID0gdGhpcy5jb21ib09wdGlvbnNMaXN0O1xuXG4gICAgdGhpcy51cGRhdGVDb21ib0xpc3QoKTtcbiAgfVxuXG4gIHByaXZhdGUgY29tcGFyZU9wdGlvbnMob3B0aW9uQTogYW55LCBvcHRpb25COiBhbnkpIHtcbiAgICBjb25zdCBsYWJlbEEgPSBvcHRpb25BLmxhYmVsLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKTtcbiAgICBjb25zdCBsYWJlbEIgPSBvcHRpb25CLmxhYmVsLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKTtcblxuICAgIHJldHVybiBsYWJlbEEgPCBsYWJlbEIgPyAtMSA6IGxhYmVsQSA+IGxhYmVsQiA/IDEgOiAwO1xuICB9XG5cbiAgcHJpdmF0ZSBoYXNEdXBsaWNhdGVkT3B0aW9uKFxuICAgIG9wdGlvbnM6IEFycmF5PFBvQ29tYm9PcHRpb24gfCBQb0NvbWJvR3JvdXA+LFxuICAgIGN1cnJlbnRPcHRpb246IHN0cmluZyxcbiAgICBhY2N1bXVsYXRlZEdyb3VwT3B0aW9ucz86IEFycmF5PFBvQ29tYm9Hcm91cD5cbiAgKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIG9wdGlvbnMuc29tZShvcHRpb24gPT4gb3B0aW9uLmxhYmVsID09PSBjdXJyZW50T3B0aW9uKSB8fFxuICAgICAgKGFjY3VtdWxhdGVkR3JvdXBPcHRpb25zICYmIGFjY3VtdWxhdGVkR3JvdXBPcHRpb25zLnNvbWUob3B0aW9uID0+IG9wdGlvbi5sYWJlbCA9PT0gY3VycmVudE9wdGlvbikpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgbGlzdGluZ0NvbWJvT3B0aW9ucyhjb21ib09wdGlvbnM6IEFycmF5PFBvQ29tYm9PcHRpb24gfCBQb0NvbWJvT3B0aW9uR3JvdXA+KSB7XG4gICAgY29uc3QgY29tYm9PcHRpb25zTGlzdCA9IGNvbWJvT3B0aW9ucy5jb25jYXQoKTtcbiAgICBjb25zdCB2ZXJpZmllZENvbWJvT3B0aW9uc0xpc3QgPSB0aGlzLnZlcmlmeUNvbWJvT3B0aW9ucyhjb21ib09wdGlvbnNMaXN0KTtcblxuICAgIHRoaXMuc29ydE9wdGlvbnModmVyaWZpZWRDb21ib09wdGlvbnNMaXN0KTtcblxuICAgIGlmICh0aGlzLmlzT3B0aW9uR3JvdXBMaXN0ICYmIHZlcmlmaWVkQ29tYm9PcHRpb25zTGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gdGhpcy52ZXJpZnlDb21ib09wdGlvbnNHcm91cCh2ZXJpZmllZENvbWJvT3B0aW9uc0xpc3QpO1xuICAgIH1cblxuICAgIHJldHVybiB2ZXJpZmllZENvbWJvT3B0aW9uc0xpc3Q7XG4gIH1cblxuICBwcml2YXRlIHNvcnRPcHRpb25zKGNvbWJvT3B0aW9uc0xpc3Q6IEFycmF5PFBvQ29tYm9Hcm91cD4pIHtcbiAgICBpZiAoY29tYm9PcHRpb25zTGlzdC5sZW5ndGggPiAwICYmIHRoaXMuc29ydCkge1xuICAgICAgcmV0dXJuIGNvbWJvT3B0aW9uc0xpc3Quc29ydCh0aGlzLmNvbXBhcmVPcHRpb25zKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHZhbGlkYXRlVmFsdWUoY3VycmVudE9wdGlvbjogUG9Db21ib0dyb3VwLCB2ZXJpZnlpbmdPcHRpb25zR3JvdXA6IGJvb2xlYW4gPSBmYWxzZSkge1xuICAgIGNvbnN0IHsgbGFiZWwsIG9wdGlvbnMsIHZhbHVlIH0gPSBjdXJyZW50T3B0aW9uO1xuXG4gICAgaWYgKHRoaXMuaXNPcHRpb25Hcm91cExpc3QpIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgICh2YWxpZFZhbHVlKGxhYmVsKSAmJiBvcHRpb25zICYmIG9wdGlvbnMubGVuZ3RoID4gMCkgfHwgKHZlcmlmeWluZ09wdGlvbnNHcm91cCA9PT0gdHJ1ZSAmJiB2YWxpZFZhbHVlKHZhbHVlKSlcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbGlkVmFsdWUodmFsdWUpICYmICFvcHRpb25zO1xuICB9XG5cbiAgcHJpdmF0ZSB2ZXJpZnlDb21ib09wdGlvbnMoXG4gICAgY29tYm9PcHRpb25zOiBBcnJheTxQb0NvbWJvT3B0aW9uIHwgUG9Db21ib09wdGlvbkdyb3VwPixcbiAgICB2ZXJpZnlpbmdPcHRpb25zR3JvdXA6IGJvb2xlYW4gPSBmYWxzZSxcbiAgICBhY2N1bXVsYXRlZEdyb3VwT3B0aW9ucz86IEFycmF5PFBvQ29tYm9Hcm91cD5cbiAgKSB7XG4gICAgcmV0dXJuIGNvbWJvT3B0aW9ucy5yZWR1Y2UoKGFjY3VtdWxhdGVkT3B0aW9ucywgY3VycmVudE9wdGlvbikgPT4ge1xuICAgICAgaWYgKFxuICAgICAgICAhdGhpcy52ZXJpZnlJZkhhc0xhYmVsKGN1cnJlbnRPcHRpb24pIHx8XG4gICAgICAgIHRoaXMuaGFzRHVwbGljYXRlZE9wdGlvbihhY2N1bXVsYXRlZE9wdGlvbnMsIGN1cnJlbnRPcHRpb24ubGFiZWwsIGFjY3VtdWxhdGVkR3JvdXBPcHRpb25zKSB8fFxuICAgICAgICAhdGhpcy52YWxpZGF0ZVZhbHVlKGN1cnJlbnRPcHRpb24sIHZlcmlmeWluZ09wdGlvbnNHcm91cClcbiAgICAgICkge1xuICAgICAgICByZXR1cm4gYWNjdW11bGF0ZWRPcHRpb25zO1xuICAgICAgfVxuXG4gICAgICBhY2N1bXVsYXRlZE9wdGlvbnMucHVzaChjdXJyZW50T3B0aW9uKTtcbiAgICAgIHJldHVybiBhY2N1bXVsYXRlZE9wdGlvbnM7XG4gICAgfSwgW10pO1xuICB9XG5cbiAgcHJpdmF0ZSB2ZXJpZnlDb21ib09wdGlvbnNHcm91cChjb21ib09wdGlvbnNMaXN0OiBBcnJheTxQb0NvbWJvT3B0aW9uR3JvdXA+KSB7XG4gICAgcmV0dXJuIGNvbWJvT3B0aW9uc0xpc3QucmVkdWNlKChhY2N1bXVsYXRlZEdyb3VwT3B0aW9ucywgY3VycmVudE9wdGlvbikgPT4ge1xuICAgICAgY29uc3QgeyBvcHRpb25zLCBsYWJlbCB9ID0gY3VycmVudE9wdGlvbjtcbiAgICAgIGNvbnN0IHZlcmlmaWVkQ29tYm9PcHRpb25zR3JvdXBMaXN0ID0gdGhpcy52ZXJpZnlDb21ib09wdGlvbnMob3B0aW9ucywgdHJ1ZSwgYWNjdW11bGF0ZWRHcm91cE9wdGlvbnMpO1xuXG4gICAgICBpZiAodmVyaWZpZWRDb21ib09wdGlvbnNHcm91cExpc3QubGVuZ3RoID4gMCkge1xuICAgICAgICB0aGlzLnNvcnRPcHRpb25zKHZlcmlmaWVkQ29tYm9PcHRpb25zR3JvdXBMaXN0KTtcblxuICAgICAgICBhY2N1bXVsYXRlZEdyb3VwT3B0aW9ucy5wdXNoKHsgbGFiZWw6IGxhYmVsLCBvcHRpb25zOiB0cnVlIH0sIC4uLnZlcmlmaWVkQ29tYm9PcHRpb25zR3JvdXBMaXN0KTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGFjY3VtdWxhdGVkR3JvdXBPcHRpb25zO1xuICAgIH0sIFtdKTtcbiAgfVxuXG4gIHByaXZhdGUgdmVyaWZ5SWZIYXNMYWJlbChjdXJyZW50T3B0aW9uOiBQb0NvbWJvR3JvdXAgPSB7fSkge1xuICAgIGNvbnN0IHsgbGFiZWwsIG9wdGlvbnMsIHZhbHVlIH0gPSBjdXJyZW50T3B0aW9uO1xuXG4gICAgaWYgKCh0aGlzLmlzT3B0aW9uR3JvdXBMaXN0ICYmIG9wdGlvbnMgJiYgIWxhYmVsKSB8fCAoIWxhYmVsICYmICF2YWx1ZSkgfHwgKCF0aGlzLmlzT3B0aW9uR3JvdXBMaXN0ICYmIG9wdGlvbnMpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKCFjdXJyZW50T3B0aW9uLmxhYmVsKSB7XG4gICAgICBjdXJyZW50T3B0aW9uLmxhYmVsID0gY3VycmVudE9wdGlvbi52YWx1ZS50b1N0cmluZygpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUludGVybmFsVmFyaWFibGVzKG9wdGlvbjogUG9Db21ib09wdGlvbiB8IFBvQ29tYm9Hcm91cCkge1xuICAgIGlmIChvcHRpb24pIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRWaWV3ID0gb3B0aW9uO1xuICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbiA9IG9wdGlvbjtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWxlY3RlZFZpZXcgPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLnNlbGVjdGVkT3B0aW9uID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlTW9kZWwodmFsdWU6IGFueSk6IHZvaWQge1xuICAgIGlmICh2YWx1ZSAhPT0gdGhpcy5zZWxlY3RlZFZhbHVlKSB7XG4gICAgICBpZiAoIXRoaXMuZnJvbVdyaXRlVmFsdWUpIHtcbiAgICAgICAgdGhpcy5jYWxsTW9kZWxDaGFuZ2UodmFsdWUpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmNoYW5nZS5lbWl0KHRoaXMuZW1pdE9iamVjdFZhbHVlID8gdGhpcy5zZWxlY3RlZE9wdGlvbiA6IHZhbHVlKTtcbiAgICB9XG5cbiAgICB0aGlzLnNlbGVjdGVkVmFsdWUgPSB2YWx1ZTtcbiAgICB0aGlzLmZyb21Xcml0ZVZhbHVlID0gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVNlbGVjdGVkVmFsdWVXaXRoT2xkT3B0aW9uKCkge1xuICAgIGNvbnN0IG9sZE9wdGlvbiA9IHRoaXMuZ2V0T3B0aW9uRnJvbVZhbHVlKHRoaXMuc2VsZWN0ZWRWYWx1ZSwgdGhpcy5jb21ib09wdGlvbnNMaXN0KTtcblxuICAgIGlmIChvbGRPcHRpb24gJiYgb2xkT3B0aW9uLmxhYmVsKSB7XG4gICAgICByZXR1cm4gdGhpcy51cGRhdGVTZWxlY3RlZFZhbHVlKG9sZE9wdGlvbik7XG4gICAgfVxuICB9XG5cbiAgYWJzdHJhY3Qgc2V0SW5wdXRWYWx1ZSh2YWx1ZTogYW55KTogdm9pZDtcblxuICBhYnN0cmFjdCBhcHBseUZpbHRlcih2YWx1ZTogc3RyaW5nKTogdm9pZDtcblxuICBhYnN0cmFjdCBnZXRPYmplY3RCeVZhbHVlKHZhbHVlOiBzdHJpbmcpOiB2b2lkO1xuXG4gIGFic3RyYWN0IGdldElucHV0VmFsdWUoKTogc3RyaW5nO1xuXG4gIGFic3RyYWN0IGluaXRJbnB1dE9ic2VydmFibGUoKTogdm9pZDtcbn1cbiJdfQ==
|