ctt-puro 0.46.7 → 0.46.8

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.
@@ -221,7 +221,7 @@ export class PuroEngineComponent {
221
221
  }
222
222
  }
223
223
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PuroEngineComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
224
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: PuroEngineComponent, isStandalone: true, selector: "lib-puro-engine", inputs: { datepickerIn: "datepickerIn", datepickerOut: "datepickerOut", guestsInput: "guestsInput", promoInput: "promoInput", adultsDropdown: "adultsDropdown", kidsDropdown: "kidsDropdown", btnApply: "btnApply", button: "button", lang: "lang", codigo: "codigo", glValue: "glValue" }, ngImport: i0, template: "@if (form) {\n <form\n [formGroup]=\"form\"\n scriptLoader\n [dataLoaded]=\"true\"\n (submit)=\"onSubmit($event)\"\n >\n <div class=\"banner__filter\">\n <!-- \uD83D\uDD39 FECHA DE ENTRADA -->\n @if (datepickerIn) {\n <div class=\"banner__fieldGroup\">\n <div class=\"banner__fieldInner\">\n @if (datepickerIn.title) {\n <label class=\"banner__fieldLabel\" for=\"In-date1\">\n {{ datepickerIn.title }}\n </label>\n }\n <input\n type=\"text\"\n class=\"banner__fieldControl\"\n name=\"In-date1\"\n data-toggle=\"datepicker\"\n id=\"In-date1\"\n [attr.placeholder]=\"datepickerIn.placeholder ?? 'dd/mm/yyyy'\"\n formControlName=\"datepickerIn\"\n autocomplete=\"off\"\n />\n <div class=\"banner__fieldIcon\"><i class=\"icon-89\"></i></div>\n </div>\n </div>\n }\n\n <!-- \uD83D\uDD39 FECHA DE SALIDA -->\n @if (datepickerOut) {\n <div class=\"banner__fieldGroup\">\n <div class=\"banner__fieldInner\">\n @if (datepickerOut.title) {\n <label class=\"banner__fieldLabel\" for=\"Out-date1\">\n {{ datepickerOut.title }}\n </label>\n }\n <input\n type=\"text\"\n class=\"banner__fieldControl\"\n name=\"Out-date1\"\n data-toggle=\"datepicker\"\n id=\"Out-date1\"\n [attr.placeholder]=\"datepickerOut.placeholder ?? 'dd/mm/yyyy'\"\n formControlName=\"datepickerOut\"\n autocomplete=\"off\"\n />\n <div class=\"banner__fieldIcon\"><i class=\"icon-89\"></i></div>\n </div>\n </div>\n }\n\n <!-- \uD83D\uDD39 HU\u00C9SPEDES -->\n @if (guestsInput) {\n <div class=\"banner__fieldGroup\">\n <div\n class=\"banner__fieldInner js-personas-subfields\"\n role=\"button\"\n [attr.aria-label]=\"guestsInput.title ?? 'Guests'\"\n >\n @if (guestsInput.title) {\n <label class=\"banner__fieldLabel\">{{ guestsInput.title }}</label>\n }\n <div class=\"banner__fieldControl\"></div>\n <div class=\"banner__fieldIcon\">\n <svg aria-hidden=\"true\" focusable=\"false\" width=\"15\" height=\"8\">\n <use href=\"#select-arrow\"></use>\n </svg>\n </div>\n </div>\n <div class=\"banner__fieldSub js-fieldSub\">\n @if (adultsDropdown) {\n <div class=\"banner__fieldInner\">\n <label class=\"banner__fieldLabel\" for=\"adult\">\n {{ adultsDropdown.title }}\n </label>\n <select\n class=\"banner__fieldControl\"\n name=\"adult\"\n id=\"adult\"\n (change)=\"applyGuests()\"\n >\n @for (option of adultsDropdown.options; track $index) {\n <option [value]=\"option.code\">{{ option.name }}</option>\n }\n </select>\n <div class=\"banner__fieldIcon\"><i class=\"icon-92\"></i></div>\n </div>\n }\n\n @if (kidsDropdown) {\n <div class=\"banner__fieldInner\">\n <label class=\"banner__fieldLabel\" for=\"child\">\n {{ kidsDropdown.title }}\n </label>\n <select\n class=\"banner__fieldControl\"\n name=\"child\"\n id=\"child\"\n (change)=\"applyGuests()\"\n >\n @for (option of kidsDropdown.options; track $index) {\n <option [value]=\"option.code\">{{ option.name }}</option>\n }\n </select>\n <div class=\"banner__fieldIcon\"><i class=\"icon-93\"></i></div>\n </div>\n }\n\n @if (btnApply) {\n <div class=\"btn__group\">\n <button\n type=\"button\"\n class=\"btn btn__primary js-apply-guests\"\n [attr.aria-label]=\"btnApply.label\"\n (click)=\"applyGuests()\"\n >\n <span>{{ btnApply.label }}</span>\n </button>\n </div>\n }\n </div>\n </div>\n }\n\n <!-- \uD83D\uDD39 PROMO CODE -->\n @if (promoInput) {\n <div class=\"banner__fieldGroup\">\n <div class=\"banner__fieldInner\">\n <label class=\"banner__fieldLabel\">{{ promoInput.title }}</label>\n <input\n type=\"text\"\n placeholder=\"xxxx\"\n class=\"banner__fieldControl\"\n formControlName=\"promoInput\"\n autocomplete=\"off\"\n />\n <div class=\"banner__fieldIcon\"><i class=\"icon-90\"></i></div>\n </div>\n </div>\n }\n\n <!-- \uD83D\uDD39 BOT\u00D3N -->\n @if (button) {\n <div class=\"banner__fieldBtn\">\n <button\n type=\"submit\"\n class=\"btn btn__primary\"\n [attr.aria-label]=\"button.label\"\n >\n <span>{{ button.label }}</span>\n </button>\n </div>\n }\n </div>\n </form>\n}\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: PuroScriptDirective, selector: "[scriptLoader]", inputs: ["dataLoaded"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
224
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: PuroEngineComponent, isStandalone: true, selector: "lib-puro-engine", inputs: { datepickerIn: "datepickerIn", datepickerOut: "datepickerOut", guestsInput: "guestsInput", promoInput: "promoInput", adultsDropdown: "adultsDropdown", kidsDropdown: "kidsDropdown", btnApply: "btnApply", button: "button", lang: "lang", codigo: "codigo", glValue: "glValue" }, ngImport: i0, template: "@if (form) {\n <form\n [formGroup]=\"form\"\n scriptLoader\n [dataLoaded]=\"true\"\n (submit)=\"onSubmit($event)\"\n >\n <div class=\"banner__filter\">\n <!-- \uD83D\uDD39 FECHA DE ENTRADA -->\n @if (datepickerIn) {\n <div class=\"banner__fieldGroup\">\n <div class=\"banner__fieldInner\">\n @if (datepickerIn.title) {\n <label class=\"banner__fieldLabel\" for=\"In-date1\">\n {{ datepickerIn.title }}\n </label>\n }\n <input\n type=\"text\"\n class=\"banner__fieldControl\"\n name=\"In-date1\"\n data-toggle=\"datepicker\"\n id=\"In-date1\"\n [attr.placeholder]=\"datepickerIn.placeholder ?? 'dd/mm/yyyy'\"\n formControlName=\"datepickerIn\"\n autocomplete=\"off\"\n />\n <div class=\"banner__fieldIcon\"><i class=\"icon-89\"></i></div>\n </div>\n </div>\n }\n\n <!-- \uD83D\uDD39 FECHA DE SALIDA -->\n @if (datepickerOut) {\n <div class=\"banner__fieldGroup\">\n <div class=\"banner__fieldInner\">\n @if (datepickerOut.title) {\n <label class=\"banner__fieldLabel\" for=\"Out-date1\">\n {{ datepickerOut.title }}\n </label>\n }\n <input\n type=\"text\"\n class=\"banner__fieldControl\"\n name=\"Out-date1\"\n data-toggle=\"datepicker\"\n id=\"Out-date1\"\n [attr.placeholder]=\"datepickerOut.placeholder ?? 'dd/mm/yyyy'\"\n formControlName=\"datepickerOut\"\n autocomplete=\"off\"\n />\n <div class=\"banner__fieldIcon\"><i class=\"icon-89\"></i></div>\n </div>\n </div>\n }\n\n <!-- \uD83D\uDD39 HU\u00C9SPEDES -->\n @if (guestsInput) {\n <div class=\"banner__fieldGroup\">\n <div\n class=\"banner__fieldInner js-personas-subfields\"\n role=\"button\"\n [attr.aria-label]=\"guestsInput.title ?? 'Guests'\"\n >\n @if (guestsInput.title) {\n <label class=\"banner__fieldLabel\">{{ guestsInput.title }}</label>\n }\n <div class=\"banner__fieldControl\"></div>\n <div class=\"banner__fieldIcon\">\n <svg aria-hidden=\"true\" focusable=\"false\" width=\"15\" height=\"8\">\n <use href=\"#select-arrow\"></use>\n </svg>\n </div>\n </div>\n <div class=\"banner__fieldSub js-fieldSub\">\n @if (adultsDropdown) {\n <div class=\"banner__fieldInner\">\n <label class=\"banner__fieldLabel\" for=\"adult\">\n {{ adultsDropdown.title }}\n </label>\n <select\n class=\"banner__fieldControl\"\n name=\"adult\"\n id=\"adult\"\n (change)=\"applyGuests()\"\n >\n @for (option of adultsDropdown.options; track $index) {\n <option [value]=\"option.code\">{{ option.name }}</option>\n }\n </select>\n <div class=\"banner__fieldIcon\"><i class=\"icon-92\"></i></div>\n </div>\n }\n\n @if (kidsDropdown) {\n <div class=\"banner__fieldInner\">\n <label class=\"banner__fieldLabel\" for=\"child\">\n {{ kidsDropdown.title }}\n </label>\n <select\n class=\"banner__fieldControl\"\n name=\"child\"\n id=\"child\"\n (change)=\"applyGuests()\"\n >\n @for (option of kidsDropdown.options; track $index) {\n <option [value]=\"option.code\">{{ option.name }}</option>\n }\n </select>\n <div class=\"banner__fieldIcon\">\n <svg width=\"22\" height=\"22\"><use href=\"#little-girl\"></use></svg>\n </div>\n </div>\n }\n\n @if (btnApply) {\n <div class=\"btn__group\">\n <button\n type=\"button\"\n class=\"btn btn__primary js-apply-guests\"\n [attr.aria-label]=\"btnApply.label\"\n (click)=\"applyGuests()\"\n >\n <span>{{ btnApply.label }}</span>\n </button>\n </div>\n }\n </div>\n </div>\n }\n\n <!-- \uD83D\uDD39 PROMO CODE -->\n @if (promoInput) {\n <div class=\"banner__fieldGroup\">\n <div class=\"banner__fieldInner\">\n <label class=\"banner__fieldLabel\">{{ promoInput.title }}</label>\n <input\n type=\"text\"\n placeholder=\"xxxx\"\n class=\"banner__fieldControl\"\n formControlName=\"promoInput\"\n autocomplete=\"off\"\n />\n <div class=\"banner__fieldIcon\"><i class=\"icon-90\"></i></div>\n </div>\n </div>\n }\n\n <!-- \uD83D\uDD39 BOT\u00D3N -->\n @if (button) {\n <div class=\"banner__fieldBtn\">\n <button\n type=\"submit\"\n class=\"btn btn__primary\"\n [attr.aria-label]=\"button.label\"\n >\n <span>{{ button.label }}</span>\n </button>\n </div>\n }\n </div>\n </form>\n}\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: PuroScriptDirective, selector: "[scriptLoader]", inputs: ["dataLoaded"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
225
225
  }
226
226
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PuroEngineComponent, decorators: [{
227
227
  type: Component,
@@ -230,7 +230,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
230
230
  ReactiveFormsModule,
231
231
  FormsModule,
232
232
  PuroScriptDirective,
233
- ], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (form) {\n <form\n [formGroup]=\"form\"\n scriptLoader\n [dataLoaded]=\"true\"\n (submit)=\"onSubmit($event)\"\n >\n <div class=\"banner__filter\">\n <!-- \uD83D\uDD39 FECHA DE ENTRADA -->\n @if (datepickerIn) {\n <div class=\"banner__fieldGroup\">\n <div class=\"banner__fieldInner\">\n @if (datepickerIn.title) {\n <label class=\"banner__fieldLabel\" for=\"In-date1\">\n {{ datepickerIn.title }}\n </label>\n }\n <input\n type=\"text\"\n class=\"banner__fieldControl\"\n name=\"In-date1\"\n data-toggle=\"datepicker\"\n id=\"In-date1\"\n [attr.placeholder]=\"datepickerIn.placeholder ?? 'dd/mm/yyyy'\"\n formControlName=\"datepickerIn\"\n autocomplete=\"off\"\n />\n <div class=\"banner__fieldIcon\"><i class=\"icon-89\"></i></div>\n </div>\n </div>\n }\n\n <!-- \uD83D\uDD39 FECHA DE SALIDA -->\n @if (datepickerOut) {\n <div class=\"banner__fieldGroup\">\n <div class=\"banner__fieldInner\">\n @if (datepickerOut.title) {\n <label class=\"banner__fieldLabel\" for=\"Out-date1\">\n {{ datepickerOut.title }}\n </label>\n }\n <input\n type=\"text\"\n class=\"banner__fieldControl\"\n name=\"Out-date1\"\n data-toggle=\"datepicker\"\n id=\"Out-date1\"\n [attr.placeholder]=\"datepickerOut.placeholder ?? 'dd/mm/yyyy'\"\n formControlName=\"datepickerOut\"\n autocomplete=\"off\"\n />\n <div class=\"banner__fieldIcon\"><i class=\"icon-89\"></i></div>\n </div>\n </div>\n }\n\n <!-- \uD83D\uDD39 HU\u00C9SPEDES -->\n @if (guestsInput) {\n <div class=\"banner__fieldGroup\">\n <div\n class=\"banner__fieldInner js-personas-subfields\"\n role=\"button\"\n [attr.aria-label]=\"guestsInput.title ?? 'Guests'\"\n >\n @if (guestsInput.title) {\n <label class=\"banner__fieldLabel\">{{ guestsInput.title }}</label>\n }\n <div class=\"banner__fieldControl\"></div>\n <div class=\"banner__fieldIcon\">\n <svg aria-hidden=\"true\" focusable=\"false\" width=\"15\" height=\"8\">\n <use href=\"#select-arrow\"></use>\n </svg>\n </div>\n </div>\n <div class=\"banner__fieldSub js-fieldSub\">\n @if (adultsDropdown) {\n <div class=\"banner__fieldInner\">\n <label class=\"banner__fieldLabel\" for=\"adult\">\n {{ adultsDropdown.title }}\n </label>\n <select\n class=\"banner__fieldControl\"\n name=\"adult\"\n id=\"adult\"\n (change)=\"applyGuests()\"\n >\n @for (option of adultsDropdown.options; track $index) {\n <option [value]=\"option.code\">{{ option.name }}</option>\n }\n </select>\n <div class=\"banner__fieldIcon\"><i class=\"icon-92\"></i></div>\n </div>\n }\n\n @if (kidsDropdown) {\n <div class=\"banner__fieldInner\">\n <label class=\"banner__fieldLabel\" for=\"child\">\n {{ kidsDropdown.title }}\n </label>\n <select\n class=\"banner__fieldControl\"\n name=\"child\"\n id=\"child\"\n (change)=\"applyGuests()\"\n >\n @for (option of kidsDropdown.options; track $index) {\n <option [value]=\"option.code\">{{ option.name }}</option>\n }\n </select>\n <div class=\"banner__fieldIcon\"><i class=\"icon-93\"></i></div>\n </div>\n }\n\n @if (btnApply) {\n <div class=\"btn__group\">\n <button\n type=\"button\"\n class=\"btn btn__primary js-apply-guests\"\n [attr.aria-label]=\"btnApply.label\"\n (click)=\"applyGuests()\"\n >\n <span>{{ btnApply.label }}</span>\n </button>\n </div>\n }\n </div>\n </div>\n }\n\n <!-- \uD83D\uDD39 PROMO CODE -->\n @if (promoInput) {\n <div class=\"banner__fieldGroup\">\n <div class=\"banner__fieldInner\">\n <label class=\"banner__fieldLabel\">{{ promoInput.title }}</label>\n <input\n type=\"text\"\n placeholder=\"xxxx\"\n class=\"banner__fieldControl\"\n formControlName=\"promoInput\"\n autocomplete=\"off\"\n />\n <div class=\"banner__fieldIcon\"><i class=\"icon-90\"></i></div>\n </div>\n </div>\n }\n\n <!-- \uD83D\uDD39 BOT\u00D3N -->\n @if (button) {\n <div class=\"banner__fieldBtn\">\n <button\n type=\"submit\"\n class=\"btn btn__primary\"\n [attr.aria-label]=\"button.label\"\n >\n <span>{{ button.label }}</span>\n </button>\n </div>\n }\n </div>\n </form>\n}\n" }]
233
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (form) {\n <form\n [formGroup]=\"form\"\n scriptLoader\n [dataLoaded]=\"true\"\n (submit)=\"onSubmit($event)\"\n >\n <div class=\"banner__filter\">\n <!-- \uD83D\uDD39 FECHA DE ENTRADA -->\n @if (datepickerIn) {\n <div class=\"banner__fieldGroup\">\n <div class=\"banner__fieldInner\">\n @if (datepickerIn.title) {\n <label class=\"banner__fieldLabel\" for=\"In-date1\">\n {{ datepickerIn.title }}\n </label>\n }\n <input\n type=\"text\"\n class=\"banner__fieldControl\"\n name=\"In-date1\"\n data-toggle=\"datepicker\"\n id=\"In-date1\"\n [attr.placeholder]=\"datepickerIn.placeholder ?? 'dd/mm/yyyy'\"\n formControlName=\"datepickerIn\"\n autocomplete=\"off\"\n />\n <div class=\"banner__fieldIcon\"><i class=\"icon-89\"></i></div>\n </div>\n </div>\n }\n\n <!-- \uD83D\uDD39 FECHA DE SALIDA -->\n @if (datepickerOut) {\n <div class=\"banner__fieldGroup\">\n <div class=\"banner__fieldInner\">\n @if (datepickerOut.title) {\n <label class=\"banner__fieldLabel\" for=\"Out-date1\">\n {{ datepickerOut.title }}\n </label>\n }\n <input\n type=\"text\"\n class=\"banner__fieldControl\"\n name=\"Out-date1\"\n data-toggle=\"datepicker\"\n id=\"Out-date1\"\n [attr.placeholder]=\"datepickerOut.placeholder ?? 'dd/mm/yyyy'\"\n formControlName=\"datepickerOut\"\n autocomplete=\"off\"\n />\n <div class=\"banner__fieldIcon\"><i class=\"icon-89\"></i></div>\n </div>\n </div>\n }\n\n <!-- \uD83D\uDD39 HU\u00C9SPEDES -->\n @if (guestsInput) {\n <div class=\"banner__fieldGroup\">\n <div\n class=\"banner__fieldInner js-personas-subfields\"\n role=\"button\"\n [attr.aria-label]=\"guestsInput.title ?? 'Guests'\"\n >\n @if (guestsInput.title) {\n <label class=\"banner__fieldLabel\">{{ guestsInput.title }}</label>\n }\n <div class=\"banner__fieldControl\"></div>\n <div class=\"banner__fieldIcon\">\n <svg aria-hidden=\"true\" focusable=\"false\" width=\"15\" height=\"8\">\n <use href=\"#select-arrow\"></use>\n </svg>\n </div>\n </div>\n <div class=\"banner__fieldSub js-fieldSub\">\n @if (adultsDropdown) {\n <div class=\"banner__fieldInner\">\n <label class=\"banner__fieldLabel\" for=\"adult\">\n {{ adultsDropdown.title }}\n </label>\n <select\n class=\"banner__fieldControl\"\n name=\"adult\"\n id=\"adult\"\n (change)=\"applyGuests()\"\n >\n @for (option of adultsDropdown.options; track $index) {\n <option [value]=\"option.code\">{{ option.name }}</option>\n }\n </select>\n <div class=\"banner__fieldIcon\"><i class=\"icon-92\"></i></div>\n </div>\n }\n\n @if (kidsDropdown) {\n <div class=\"banner__fieldInner\">\n <label class=\"banner__fieldLabel\" for=\"child\">\n {{ kidsDropdown.title }}\n </label>\n <select\n class=\"banner__fieldControl\"\n name=\"child\"\n id=\"child\"\n (change)=\"applyGuests()\"\n >\n @for (option of kidsDropdown.options; track $index) {\n <option [value]=\"option.code\">{{ option.name }}</option>\n }\n </select>\n <div class=\"banner__fieldIcon\">\n <svg width=\"22\" height=\"22\"><use href=\"#little-girl\"></use></svg>\n </div>\n </div>\n }\n\n @if (btnApply) {\n <div class=\"btn__group\">\n <button\n type=\"button\"\n class=\"btn btn__primary js-apply-guests\"\n [attr.aria-label]=\"btnApply.label\"\n (click)=\"applyGuests()\"\n >\n <span>{{ btnApply.label }}</span>\n </button>\n </div>\n }\n </div>\n </div>\n }\n\n <!-- \uD83D\uDD39 PROMO CODE -->\n @if (promoInput) {\n <div class=\"banner__fieldGroup\">\n <div class=\"banner__fieldInner\">\n <label class=\"banner__fieldLabel\">{{ promoInput.title }}</label>\n <input\n type=\"text\"\n placeholder=\"xxxx\"\n class=\"banner__fieldControl\"\n formControlName=\"promoInput\"\n autocomplete=\"off\"\n />\n <div class=\"banner__fieldIcon\"><i class=\"icon-90\"></i></div>\n </div>\n </div>\n }\n\n <!-- \uD83D\uDD39 BOT\u00D3N -->\n @if (button) {\n <div class=\"banner__fieldBtn\">\n <button\n type=\"submit\"\n class=\"btn btn__primary\"\n [attr.aria-label]=\"button.label\"\n >\n <span>{{ button.label }}</span>\n </button>\n </div>\n }\n </div>\n </form>\n}\n" }]
234
234
  }], propDecorators: { datepickerIn: [{
235
235
  type: Input
236
236
  }], datepickerOut: [{
@@ -254,4 +254,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
254
254
  }], glValue: [{
255
255
  type: Input
256
256
  }] } });
257
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVyby1lbmdpbmUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHVyby9zcmMvbGliL2NvbXBvbmVudHMvcHVyby1lbmdpbmUvcHVyby1lbmdpbmUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHVyby9zcmMvbGliL2NvbXBvbmVudHMvcHVyby1lbmdpbmUvcHVyby1lbmdpbmUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2xFLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxLQUFLLEVBRUwsV0FBVyxFQUNYLE1BQU0sRUFDTixNQUFNLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNILFdBQVcsRUFFWCxXQUFXLEVBQ1gsbUJBQW1CLEVBQ25CLFVBQVUsR0FDYixNQUFNLGdCQUFnQixDQUFDO0FBR3hCLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFldEQsTUFBTSxPQUFPLG1CQUFtQjtJQWJoQztRQWNxQixPQUFFLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3pCLGVBQVUsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDakMsUUFBRyxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ2hDLFdBQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFlekMsaUJBQVksR0FBRyxFQUFFLENBQUM7UUFDbEIsV0FBTSxHQUFHLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFD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bmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBJbnB1dCxcbiAgICBPbkluaXQsXG4gICAgUExBVEZPUk1fSUQsXG4gICAgaW5qZWN0LFxuICAgIE5nWm9uZSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIEZvcm1CdWlsZGVyLFxuICAgIEZvcm1Hcm91cCxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIFZhbGlkYXRvcnMsXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFB1cm9CdXR0b25JLCBQdXJvSW5wdXRJIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBQdXJvRHJvcGRvd25JIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9wdXJvLWRyb3Bkb3duLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQdXJvU2NyaXB0RGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcyc7XG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdsaWItcHVyby1lbmdpbmUnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgICAgIEZvcm1zTW9kdWxlLFxuICAgICAgICBQdXJvU2NyaXB0RGlyZWN0aXZlLFxuICAgIF0sXG4gICAgdGVtcGxhdGVVcmw6ICcuL3B1cm8tZW5naW5lLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybDogJy4vcHVyby1lbmdpbmUuY29tcG9uZW50LnNjc3MnLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBQdXJvRW5naW5lQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZiID0gaW5qZWN0KEZvcm1CdWlsZGVyKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHBsYXRmb3JtSWQgPSBpbmplY3QoUExBVEZPUk1fSUQpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY2RyID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IG5nWm9uZSA9IGluamVjdChOZ1pvbmUpO1xuXG4gICAgQElucHV0KCkgZGF0ZXBpY2tlckluPzogUHVyb0lucHV0STtcbiAgICBASW5wdXQoKSBkYXRlcGlja2VyT3V0PzogUHVyb0lucHV0STtcbiAgICBASW5wdXQoKSBndWVzdHNJbnB1dD86IFB1cm9JbnB1dEk7XG4gICAgQElucHV0KCkgcHJvbW9JbnB1dD86IFB1cm9JbnB1dEk7XG4gICAgQElucHV0KCkgYWR1bHRzRHJvcGRvd24/OiBQdXJvRHJvcGRvd25JO1xuICAgIEBJbnB1dCgpIGtpZHNEcm9wZG93bj86IFB1cm9Ecm9wZG93bkk7XG4gICAgQElucHV0KCkgYnRuQXBwbHk/OiBQdXJvQnV0dG9uSTtcbiAgICBASW5wdXQoKSBidXR0b24/OiBQdXJvQnV0dG9uSTtcbiAgICBASW5wdXQoKSBsYW5nPzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGNvZGlnbz86IHN0cmluZztcbiAgICBASW5wdXQoKSBnbFZhbHVlPzogc3RyaW5nO1xuXG4gICAgZm9ybSE6IEZvcm1Hcm91cDtcbiAgICBnZW5lcmF0ZWRVcmwgPSAnJztcbiAgICBndWVzdHMgPSB7IGFkdWx0czogMiwga2lkczogMCB9O1xuICAgIHByaXZhdGUgaXNTeW5jaW5nID0gZmFsc2U7XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdG9kYXkgPSBuZXcgRGF0ZSgpO1xuICAgICAgICBjb25zdCB0b21vcnJvdyA9IG5ldyBEYXRlKHRvZGF5KTtcbiAgICAgICAgdG9tb3Jyb3cuc2V0RGF0ZSh0b2RheS5nZXREYXRlKCkgKyAxKTtcblxuICAgICAgICBjb25zdCBmb3JtYXR0ZWRUb2RheSA9IHRoaXMuZm9ybWF0RGF0ZSh0b2RheSk7XG4gICAgICAgIGNvbnN0IGZvcm1hdHRlZFRvbW9ycm93ID0gdGhpcy5mb3JtYXREYXRlKHRvbW9ycm93KTtcblxuICAgICAgICB0aGlzLmZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcbiAgICAgICAgICAgIGRhdGVwaWNrZXJJbjogW1xuICAgICAgICAgICAgICAgIHRoaXMuZGF0ZXBpY2tlckluPy52YWx1ZSB8fCBmb3JtYXR0ZWRUb2RheSxcbiAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGRhdGVwaWNrZXJPdXQ6IFtcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGVwaWNrZXJPdXQ/LnZhbHVlIHx8IGZvcm1hdHRlZFRvbW9ycm93LFxuICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWQsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgcHJvbW9JbnB1dDogW3RoaXMucHJvbW9JbnB1dD8udmFsdWUgfHwgJyddLFxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmZvcm0udmFsdWVDaGFuZ2VzXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZChcbiAgICAgICAgICAgICAgICAgICAgKGEsIGIpID0+IEpTT04uc3RyaW5naWZ5KGEpID09PSBKU09OLnN0cmluZ2lmeShiKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHZhbCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlR2VuZXJhdGVkVXJsKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5zYXZlRW5naW5lRGF0YSgpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5iaW5kRGF0ZXBpY2tlckV2ZW50cygpLCA0MDApO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy51cGRhdGVHZW5lcmF0ZWRVcmwoKTtcbiAgICB9XG5cbiAgICAvKiogVmluY3VsYSBsb3MgaW5wdXRzIGRlbCBwbHVnaW4gZGF0ZXBpY2tlciBjb24gZWwgZm9ybXVsYXJpbyBBbmd1bGFyICovXG4gICAgcHJpdmF0ZSBiaW5kRGF0ZXBpY2tlckV2ZW50cygpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaW5JbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFxuICAgICAgICAgICAgJ0luLWRhdGUxJ1xuICAgICAgICApIGFzIEhUTUxJbnB1dEVsZW1lbnQgfCBudWxsO1xuICAgICAgICBjb25zdCBvdXRJbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFxuICAgICAgICAgICAgJ091dC1kYXRlMSdcbiAgICAgICAgKSBhcyBIVE1MSW5wdXRFbGVtZW50IHwgbnVsbDtcbiAgICAgICAgaWYgKCFpbklucHV0IHx8ICFvdXRJbnB1dCkgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IGZpcmVOYXRpdmUgPSAoZWw6IEhUTUxJbnB1dEVsZW1lbnQpID0+IHtcbiAgICAgICAgICAgIGVsLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdpbnB1dCcsIHsgYnViYmxlczogdHJ1ZSB9KSk7XG4gICAgICAgICAgICBlbC5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnY2hhbmdlJywgeyBidWJibGVzOiB0cnVlIH0pKTtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgZWwuZGlzcGF0Y2hFdmVudChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEN1c3RvbUV2ZW50KCdjaGFuZ2VEYXRlJywgeyBidWJibGVzOiB0cnVlIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gY2F0Y2gge31cbiAgICAgICAgfTtcblxuICAgICAgICAvKiogU2luY3Jvbml6YSB2YWxvcmVzIGRlc2RlIGVsIHBsdWdpbiBoYWNpYSBlbCBmb3JtIEFuZ3VsYXIgKi9cbiAgICAgICAgY29uc3Qgc3luY0Zyb21QbHVnaW4gPSAoc291cmNlOiAnaW4nIHwgJ291dCcpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzU3luY2luZykgcmV0dXJuO1xuICAgICAgICAgICAgdGhpcy5pc1N5bmNpbmcgPSB0cnVlO1xuXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByYXdJbiA9IChpbklucHV0LnZhbHVlIHx8ICcnKS50cmltKCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJhd091dCA9IChvdXRJbnB1dC52YWx1ZSB8fCAnJykudHJpbSgpO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIExsZWdhZGFcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJhd0luICYmIHJhd0luICE9PSB0aGlzLmZvcm0udmFsdWUuZGF0ZXBpY2tlckluKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGRhdGVwaWNrZXJJbjogcmF3SW4gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGVtaXRFdmVudDogdHJ1ZSB9XG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbkRhdGUgPSB0aGlzLnBhcnNlRGF0ZShyYXdJbik7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvdXREYXRlID0gcmF3T3V0ID8gdGhpcy5wYXJzZURhdGUocmF3T3V0KSA6IG51bGw7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNpIGxhIHNhbGlkYSA8PSBsbGVnYWRhIOKGkiBmb3J6YXIgKzEgZMOtYVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFvdXREYXRlIHx8IG91dERhdGUgPD0gaW5EYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGx1czEgPSBuZXcgRGF0ZShpbkRhdGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsdXMxLnNldERhdGUoaW5EYXRlLmdldERhdGUoKSArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZvcm1hdHRlZE91dCA9IHRoaXMuZm9ybWF0RGF0ZShwbHVzMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0SW5wdXQudmFsdWUgPSBmb3JtYXR0ZWRPdXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlyZU5hdGl2ZShvdXRJbnB1dCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgZGF0ZXBpY2tlck91dDogZm9ybWF0dGVkT3V0IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgZW1pdEV2ZW50OiB0cnVlIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gU2FsaWRhXG4gICAgICAgICAgICAgICAgICAgIGlmIChyYXdPdXQgJiYgcmF3T3V0ICE9PSB0aGlzLmZvcm0udmFsdWUuZGF0ZXBpY2tlck91dCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBkYXRlcGlja2VyT3V0OiByYXdPdXQgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGVtaXRFdmVudDogdHJ1ZSB9XG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gbGltcGlhciBwbGFjZWhvbGRlcnMgdmlzdWFsbWVudGVcbiAgICAgICAgICAgICAgICAgICAgaWYgKGluSW5wdXQudmFsdWUpIGluSW5wdXQucGxhY2Vob2xkZXIgPSAnJztcbiAgICAgICAgICAgICAgICAgICAgaWYgKG91dElucHV0LnZhbHVlKSBvdXRJbnB1dC5wbGFjZWhvbGRlciA9ICcnO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNTeW5jaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSwgMCk7XG4gICAgICAgIH07XG5cbiAgICAgICAgLy8g8J+UuSBFc2N1Y2hhciBldmVudG9zIGRlbCBwbHVnaW4geSBkZSBpbnB1dCBuYXRpdm9cbiAgICAgICAgY29uc3QgZXZlbnRzID0gW1xuICAgICAgICAgICAgJ2NoYW5nZScsXG4gICAgICAgICAgICAnaW5wdXQnLFxuICAgICAgICAgICAgJ2JsdXInLFxuICAgICAgICAgICAgJ2NsaWNrJyxcbiAgICAgICAgICAgICdjaGFuZ2VEYXRlJyxcbiAgICAgICAgICAgICdkYXRlQ2hhbmdlJyxcbiAgICAgICAgICAgICdhcHBseS5kYXRlcmFuZ2VwaWNrZXInLFxuICAgICAgICBdO1xuICAgICAgICBldmVudHMuZm9yRWFjaCgoZXZ0KSA9PlxuICAgICAgICAgICAgaW5JbnB1dC5hZGRFdmVudExpc3RlbmVyKGV2dCwgKCkgPT4gc3luY0Zyb21QbHVnaW4oJ2luJykpXG4gICAgICAgICk7XG4gICAgICAgIGV2ZW50cy5mb3JFYWNoKChldnQpID0+XG4gICAgICAgICAgICBvdXRJbnB1dC5hZGRFdmVudExpc3RlbmVyKGV2dCwgKCkgPT4gc3luY0Zyb21QbHVnaW4oJ291dCcpKVxuICAgICAgICApO1xuXG4gICAgICAgIC8vIPCflLkgU2luY3Jvbml6YWNpw7NuIHByb2FjdGl2YSAoY2FkYSA1MDBtcylcbiAgICAgICAgc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNTeW5jaW5nKSByZXR1cm47XG4gICAgICAgICAgICBjb25zdCByYXdJbiA9IChpbklucHV0LnZhbHVlIHx8ICcnKS50cmltKCk7XG4gICAgICAgICAgICBjb25zdCByYXdPdXQgPSAob3V0SW5wdXQudmFsdWUgfHwgJycpLnRyaW0oKTtcbiAgICAgICAgICAgIGlmIChyYXdJbiAmJiByYXdJbiAhPT0gdGhpcy5mb3JtLnZhbHVlLmRhdGVwaWNrZXJJbikge1xuICAgICAgICAgICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5wYXRjaFZhbHVlKFxuICAgICAgICAgICAgICAgICAgICAgICAgeyBkYXRlcGlja2VySW46IHJhd0luIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7IGVtaXRFdmVudDogdHJ1ZSB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHJhd091dCAmJiByYXdPdXQgIT09IHRoaXMuZm9ybS52YWx1ZS5kYXRlcGlja2VyT3V0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUoXG4gICAgICAgICAgICAgICAgICAgICAgICB7IGRhdGVwaWNrZXJPdXQ6IHJhd091dCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgeyBlbWl0RXZlbnQ6IHRydWUgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgNTAwKTtcblxuICAgICAgICAvLyDwn5S5IFJlZnJlc2NhciBwbGFjZWhvbGRlcnMgaW5pY2lhbGVzXG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICAvKiogR3VhcmRhIGVuIHNlc3Npb25TdG9yYWdlICovXG4gICAgcHJpdmF0ZSBzYXZlRW5naW5lRGF0YSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSByZXR1cm47XG4gICAgICAgIGNvbnN0IHsgZGF0ZXBpY2tlckluLCBkYXRlcGlja2VyT3V0LCBwcm9tb0lucHV0IH0gPSB0aGlzLmZvcm0udmFsdWU7XG4gICAgICAgIGNvbnN0IHBheWxvYWQgPSB7XG4gICAgICAgICAgICBkYXRlaW46IGRhdGVwaWNrZXJJbixcbiAgICAgICAgICAgIGRhdGVvdXQ6IGRhdGVwaWNrZXJPdXQsXG4gICAgICAgICAgICBhZHVsdHM6IHRoaXMuZ3Vlc3RzLmFkdWx0cyxcbiAgICAgICAgICAgIGtpZHM6IHRoaXMuZ3Vlc3RzLmtpZHMsXG4gICAgICAgICAgICBwcm9tbzogcHJvbW9JbnB1dCB8fCAnJyxcbiAgICAgICAgfTtcbiAgICAgICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSgncHVyb0VuZ2luZURhdGEnLCBKU09OLnN0cmluZ2lmeShwYXlsb2FkKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmb3JtYXREYXRlKGRhdGU6IERhdGUpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBkZCA9IFN0cmluZyhkYXRlLmdldERhdGUoKSkucGFkU3RhcnQoMiwgJzAnKTtcbiAgICAgICAgY29uc3QgbW0gPSBTdHJpbmcoZGF0ZS5nZXRNb250aCgpICsgMSkucGFkU3RhcnQoMiwgJzAnKTtcbiAgICAgICAgY29uc3QgeXl5eSA9IGRhdGUuZ2V0RnVsbFllYXIoKTtcbiAgICAgICAgcmV0dXJuIGAke2RkfS8ke21tfS8ke3l5eXl9YDtcbiAgICB9XG5cbiAgICBwcml2YXRlIHBhcnNlRGF0ZSh2YWx1ZTogc3RyaW5nKTogRGF0ZSB7XG4gICAgICAgIGNvbnN0IGNsZWFuID0gdmFsdWUudHJpbSgpLnJlcGxhY2VBbGwoJy0nLCAnLycpLnJlcGxhY2VBbGwoJy4nLCAnLycpO1xuICAgICAgICBjb25zdCBbZCwgbSwgeV0gPSBjbGVhbi5zcGxpdCgnLycpLm1hcChOdW1iZXIpO1xuICAgICAgICByZXR1cm4gbmV3IERhdGUoeSwgbSAtIDEsIGQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZm9ybWF0RGF0ZUZvclVybChkYXRlU3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBbZCwgbSwgeV0gPSBkYXRlU3RyLnJlcGxhY2VBbGwoJy0nLCAnLycpLnNwbGl0KCcvJykubWFwKE51bWJlcik7XG4gICAgICAgIHJldHVybiBgJHtTdHJpbmcoZCkucGFkU3RhcnQoMiwgJzAnKX0tJHtTdHJpbmcobSkucGFkU3RhcnQoMiwgJzAnKX0tJHt5fWA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVHZW5lcmF0ZWRVcmwoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5idXR0b24/LnVybCkgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IHsgZGF0ZXBpY2tlckluLCBkYXRlcGlja2VyT3V0LCBwcm9tb0lucHV0IH0gPSB0aGlzLmZvcm0udmFsdWU7XG4gICAgICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoKTtcblxuICAgICAgICBpZiAodGhpcy5jb2RpZ28gJiYgdGhpcy5sYW5nKSB7XG4gICAgICAgICAgICBjb25zdCBpc01vYmlsZSA9XG4gICAgICAgICAgICAgICAgL01vYml8QW5kcm9pZHxpUGhvbmV8aVBhZHxpUG9kfFdpbmRvd3MgUGhvbmUvaS50ZXN0KFxuICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0b3IudXNlckFnZW50XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNvbnN0IGFmZmlsaWF0ZSA9IGAke3RoaXMuY29kaWdvfV8ke3RoaXMubGFuZ31fJHtcbiAgICAgICAgICAgICAgICBpc01vYmlsZSA/ICdtb2JpbGUnIDogJ1BDJ1xuICAgICAgICAgICAgfWA7XG4gICAgICAgICAgICBwYXJhbXMuYXBwZW5kKCdhZmZpbGlhdGUnLCBhZmZpbGlhdGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGRhdGVwaWNrZXJJbiAmJiBkYXRlcGlja2VyT3V0KSB7XG4gICAgICAgICAgICBwYXJhbXMuYXBwZW5kKCdkYXRlaW4nLCB0aGlzLmZvcm1hdERhdGVGb3JVcmwoZGF0ZXBpY2tlckluKSk7XG4gICAgICAgICAgICBwYXJhbXMuYXBwZW5kKCdkYXRlb3V0JywgdGhpcy5mb3JtYXREYXRlRm9yVXJsKGRhdGVwaWNrZXJPdXQpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmd1ZXN0cy5hZHVsdHMpXG4gICAgICAgICAgICBwYXJhbXMuYXBwZW5kKCdhZHVsdG9zJywgU3RyaW5nKHRoaXMuZ3Vlc3RzLmFkdWx0cykpO1xuICAgICAgICBpZiAodGhpcy5ndWVzdHMua2lkcylcbiAgICAgICAgICAgIHBhcmFtcy5hcHBlbmQoJ2NoaWxkcmVuJywgU3RyaW5nKHRoaXMuZ3Vlc3RzLmtpZHMpKTtcblxuICAgICAgICBpZiAocHJvbW9JbnB1dCkge1xuICAgICAgICAgICAgcGFyYW1zLmFwcGVuZCgncHJvbScsIHByb21vSW5wdXQpO1xuICAgICAgICAgICAgcGFyYW1zLmFwcGVuZCgncHJvbV9jbGVhbicsICcwJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwYXJhbXMuYXBwZW5kKCdwcm9tX2NsZWFuJywgJzEnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmdsVmFsdWUpIHBhcmFtcy5hcHBlbmQoJ19nbCcsIHRoaXMuZ2xWYWx1ZSk7XG5cbiAgICAgICAgY29uc3Qgc2VwID0gdGhpcy5idXR0b24udXJsLmluY2x1ZGVzKCc/JykgPyAnJicgOiAnPyc7XG4gICAgICAgIGNvbnN0IHNhZmVQYXJhbXMgPVxuICAgICAgICAgICAgcGFyYW1zICYmIHR5cGVvZiBwYXJhbXMudG9TdHJpbmcgPT09ICdmdW5jdGlvbidcbiAgICAgICAgICAgICAgICA/IHBhcmFtcy50b1N0cmluZygpXG4gICAgICAgICAgICAgICAgOiAnJztcbiAgICAgICAgdGhpcy5nZW5lcmF0ZWRVcmwgPSBgJHt0aGlzLmJ1dHRvbi51cmx9JHtzZXB9JHtzYWZlUGFyYW1zfWA7XG4gICAgfVxuXG4gICAgYXBwbHlHdWVzdHMoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGFkdWx0c1NlbGVjdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFxuICAgICAgICAgICAgJ2FkdWx0J1xuICAgICAgICApIGFzIEhUTUxTZWxlY3RFbGVtZW50IHwgbnVsbDtcbiAgICAgICAgY29uc3Qga2lkc1NlbGVjdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFxuICAgICAgICAgICAgJ2NoaWxkJ1xuICAgICAgICApIGFzIEhUTUxTZWxlY3RFbGVtZW50IHwgbnVsbDtcblxuICAgICAgICBpZiAoYWR1bHRzU2VsZWN0KSB0aGlzLmd1ZXN0cy5hZHVsdHMgPSBOdW1iZXIoYWR1bHRzU2VsZWN0LnZhbHVlKSB8fCAyO1xuICAgICAgICBpZiAoa2lkc1NlbGVjdCkgdGhpcy5ndWVzdHMua2lkcyA9IE51bWJlcihraWRzU2VsZWN0LnZhbHVlKSB8fCAwO1xuXG4gICAgICAgIC8vIPCflLkgR3VhcmRhIGVuIHNlc3Npb25TdG9yYWdlXG4gICAgICAgIHRoaXMuc2F2ZUVuZ2luZURhdGEoKTtcblxuICAgICAgICAvLyDwn5S5IEFjdHVhbGl6YSBsYSBVUkwgY29uIGxvcyBudWV2b3MgdmFsb3Jlc1xuICAgICAgICB0aGlzLnVwZGF0ZUdlbmVyYXRlZFVybCgpO1xuXG4gICAgICAgIC8vIPCflLkgUmVmcmVzY2EgbGEgVUkgZGVsIGNvbnRhZG9yIChjYW1wbyBwcmluY2lwYWwg4oCcZ3Vlc3Rz4oCdKVxuICAgICAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgICAgICAgY29uc3QgZ3Vlc3RzTGFiZWwgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxuICAgICAgICAgICAgICAgICcuanMtcGVyc29uYXMtc3ViZmllbGRzIC5iYW5uZXJfX2ZpZWxkQ29udHJvbCdcbiAgICAgICAgICAgICkgYXMgSFRNTEVsZW1lbnQgfCBudWxsO1xuICAgICAgICAgICAgaWYgKGd1ZXN0c0xhYmVsKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdG90YWwgPSB0aGlzLmd1ZXN0cy5hZHVsdHMgKyB0aGlzLmd1ZXN0cy5raWRzO1xuICAgICAgICAgICAgICAgIGd1ZXN0c0xhYmVsLnRleHRDb250ZW50ID1cbiAgICAgICAgICAgICAgICAgICAgdG90YWwgPD0gOSA/ICcwJyArIHRvdGFsIDogU3RyaW5nKHRvdGFsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIG9uU3VibWl0KGU6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy51cGRhdGVHZW5lcmF0ZWRVcmwoKTtcbiAgICAgICAgaWYgKHRoaXMuZ2VuZXJhdGVkVXJsKSB7XG4gICAgICAgICAgICB3aW5kb3cub3Blbih0aGlzLmdlbmVyYXRlZFVybCwgJ19ibGFuaycpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFB1cm9Ib3RlbCB7XG4gICAgaWQ/OiBzdHJpbmc7XG4gICAgbmFtZT86IHN0cmluZztcbiAgICB0aWNrZXQ/OiBzdHJpbmc7XG59XG5leHBvcnQgaW50ZXJmYWNlIFB1cm9HdWVzdFZhbHVlIHtcbiAgICBhZHVsdHM6IG51bWJlcjtcbiAgICBraWRzOiB7IGNvZGU/OiBudW1iZXI7IGNvZGVBZ2VzPzogbnVtYmVyW10gfTtcbiAgICBpbmZhbnRzOiBudW1iZXI7XG59XG4iLCJAaWYgKGZvcm0pIHtcbiAgICA8Zm9ybVxuICAgICAgICBbZm9ybUdyb3VwXT1cImZvcm1cIlxuICAgICAgICBzY3JpcHRMb2FkZXJcbiAgICAgICAgW2RhdGFMb2FkZWRdPVwidHJ1ZVwiXG4gICAgICAgIChzdWJtaXQpPVwib25TdWJtaXQoJGV2ZW50KVwiXG4gICAgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYmFubmVyX19maWx0ZXJcIj5cbiAgICAgICAgICAgIDwhLS0g8J+UuSBGRUNIQSBERSBFTlRSQURBIC0tPlxuICAgICAgICAgICAgQGlmIChkYXRlcGlja2VySW4pIHtcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmFubmVyX19maWVsZEdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYW5uZXJfX2ZpZWxkSW5uZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoZGF0ZXBpY2tlckluLnRpdGxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiYmFubmVyX19maWVsZExhYmVsXCIgZm9yPVwiSW4tZGF0ZTFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZGF0ZXBpY2tlckluLnRpdGxlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJhbm5lcl9fZmllbGRDb250cm9sXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiSW4tZGF0ZTFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtdG9nZ2xlPVwiZGF0ZXBpY2tlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJJbi1kYXRlMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIucGxhY2Vob2xkZXJdPVwiZGF0ZXBpY2tlckluLnBsYWNlaG9sZGVyID8/ICdkZC9tbS95eXl5J1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZGF0ZXBpY2tlckluXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYW5uZXJfX2ZpZWxkSWNvblwiPjxpIGNsYXNzPVwiaWNvbi04OVwiPjwvaT48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIDwhLS0g8J+UuSBGRUNIQSBERSBTQUxJREEgLS0+XG4gICAgICAgICAgICBAaWYgKGRhdGVwaWNrZXJPdXQpIHtcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmFubmVyX19maWVsZEdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYW5uZXJfX2ZpZWxkSW5uZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoZGF0ZXBpY2tlck91dC50aXRsZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImJhbm5lcl9fZmllbGRMYWJlbFwiIGZvcj1cIk91dC1kYXRlMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBkYXRlcGlja2VyT3V0LnRpdGxlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJhbm5lcl9fZmllbGRDb250cm9sXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiT3V0LWRhdGUxXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLXRvZ2dsZT1cImRhdGVwaWNrZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiT3V0LWRhdGUxXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5wbGFjZWhvbGRlcl09XCJkYXRlcGlja2VyT3V0LnBsYWNlaG9sZGVyID8/ICdkZC9tbS95eXl5J1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZGF0ZXBpY2tlck91dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmFubmVyX19maWVsZEljb25cIj48aSBjbGFzcz1cImljb24tODlcIj48L2k+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICA8IS0tIPCflLkgSFXDiVNQRURFUyAtLT5cbiAgICAgICAgICAgIEBpZiAoZ3Vlc3RzSW5wdXQpIHtcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmFubmVyX19maWVsZEdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYmFubmVyX19maWVsZElubmVyIGpzLXBlcnNvbmFzLXN1YmZpZWxkc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiZ3Vlc3RzSW5wdXQudGl0bGUgPz8gJ0d1ZXN0cydcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGd1ZXN0c0lucHV0LnRpdGxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiYmFubmVyX19maWVsZExhYmVsXCI+e3sgZ3Vlc3RzSW5wdXQudGl0bGUgfX08L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJhbm5lcl9fZmllbGRDb250cm9sXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmFubmVyX19maWVsZEljb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIGZvY3VzYWJsZT1cImZhbHNlXCIgd2lkdGg9XCIxNVwiIGhlaWdodD1cIjhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVzZSBocmVmPVwiI3NlbGVjdC1hcnJvd1wiPjwvdXNlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmFubmVyX19maWVsZFN1YiBqcy1maWVsZFN1YlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChhZHVsdHNEcm9wZG93bikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYW5uZXJfX2ZpZWxkSW5uZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiYmFubmVyX19maWVsZExhYmVsXCIgZm9yPVwiYWR1bHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGFkdWx0c0Ryb3Bkb3duLnRpdGxlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYmFubmVyX19maWVsZENvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cImFkdWx0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiYWR1bHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJhcHBseUd1ZXN0cygpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAob3B0aW9uIG9mIGFkdWx0c0Ryb3Bkb3duLm9wdGlvbnM7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gW3ZhbHVlXT1cIm9wdGlvbi5jb2RlXCI+e3sgb3B0aW9uLm5hbWUgfX08L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYW5uZXJfX2ZpZWxkSWNvblwiPjxpIGNsYXNzPVwiaWNvbi05MlwiPjwvaT48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChraWRzRHJvcGRvd24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmFubmVyX19maWVsZElubmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImJhbm5lcl9fZmllbGRMYWJlbFwiIGZvcj1cImNoaWxkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBraWRzRHJvcGRvd24udGl0bGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJiYW5uZXJfX2ZpZWxkQ29udHJvbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiY2hpbGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJjaGlsZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cImFwcGx5R3Vlc3RzKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChvcHRpb24gb2Yga2lkc0Ryb3Bkb3duLm9wdGlvbnM7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gW3ZhbHVlXT1cIm9wdGlvbi5jb2RlXCI+e3sgb3B0aW9uLm5hbWUgfX08L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYW5uZXJfX2ZpZWxkSWNvblwiPjxpIGNsYXNzPVwiaWNvbi05M1wiPjwvaT48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChidG5BcHBseSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidG5fX2dyb3VwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuX19wcmltYXJ5IGpzLWFwcGx5LWd1ZXN0c1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImJ0bkFwcGx5LmxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhcHBseUd1ZXN0cygpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgYnRuQXBwbHkubGFiZWwgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgPCEtLSDwn5S5IFBST01PIENPREUgLS0+XG4gICAgICAgICAgICBAaWYgKHByb21vSW5wdXQpIHtcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmFubmVyX19maWVsZEdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYW5uZXJfX2ZpZWxkSW5uZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImJhbm5lcl9fZmllbGRMYWJlbFwiPnt7IHByb21vSW5wdXQudGl0bGUgfX08L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwieHh4eFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJiYW5uZXJfX2ZpZWxkQ29udHJvbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicHJvbW9JbnB1dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmFubmVyX19maWVsZEljb25cIj48aSBjbGFzcz1cImljb24tOTBcIj48L2k+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICA8IS0tIPCflLkgQk9Uw5NOIC0tPlxuICAgICAgICAgICAgQGlmIChidXR0b24pIHtcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmFubmVyX19maWVsZEJ0blwiPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bl9fcHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImJ1dHRvbi5sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGJ1dHRvbi5sYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZm9ybT5cbn1cbiJdfQ==
257
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVyby1lbmdpbmUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHVyby9zcmMvbGliL2NvbXBvbmVudHMvcHVyby1lbmdpbmUvcHVyby1lbmdpbmUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHVyby9zcmMvbGliL2NvbXBvbmVudHMvcHVyby1lbmdpbmUvcHVyby1lbmdpbmUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2xFLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxLQUFLLEVBRUwsV0FBVyxFQUNYLE1BQU0sRUFDTixNQUFNLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNILFdBQVcsRUFFWCxXQUFXLEVBQ1gsbUJBQW1CLEVBQ25CLFVBQVUsR0FDYixNQUFNLGdCQUFnQixDQUFDO0FBR3hCLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFldEQsTUFBTSxPQUFPLG1CQUFtQjtJQWJoQztRQWNxQixPQUFFLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3pCLGVBQVUsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDakMsUUFBRyxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ2hDLFdBQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFlekMsaUJBQVksR0FBRyxFQUFFLENBQUM7UUFDbEIsV0FBTSxHQUFHLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFD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bmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBJbnB1dCxcbiAgICBPbkluaXQsXG4gICAgUExBVEZPUk1fSUQsXG4gICAgaW5qZWN0LFxuICAgIE5nWm9uZSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIEZvcm1CdWlsZGVyLFxuICAgIEZvcm1Hcm91cCxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIFZhbGlkYXRvcnMsXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFB1cm9CdXR0b25JLCBQdXJvSW5wdXRJIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBQdXJvRHJvcGRvd25JIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9wdXJvLWRyb3Bkb3duLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQdXJvU2NyaXB0RGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcyc7XG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdsaWItcHVyby1lbmdpbmUnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgICAgIEZvcm1zTW9kdWxlLFxuICAgICAgICBQdXJvU2NyaXB0RGlyZWN0aXZlLFxuICAgIF0sXG4gICAgdGVtcGxhdGVVcmw6ICcuL3B1cm8tZW5naW5lLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybDogJy4vcHVyby1lbmdpbmUuY29tcG9uZW50LnNjc3MnLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBQdXJvRW5naW5lQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZiID0gaW5qZWN0KEZvcm1CdWlsZGVyKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHBsYXRmb3JtSWQgPSBpbmplY3QoUExBVEZPUk1fSUQpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY2RyID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IG5nWm9uZSA9IGluamVjdChOZ1pvbmUpO1xuXG4gICAgQElucHV0KCkgZGF0ZXBpY2tlckluPzogUHVyb0lucHV0STtcbiAgICBASW5wdXQoKSBkYXRlcGlja2VyT3V0PzogUHVyb0lucHV0STtcbiAgICBASW5wdXQoKSBndWVzdHNJbnB1dD86IFB1cm9JbnB1dEk7XG4gICAgQElucHV0KCkgcHJvbW9JbnB1dD86IFB1cm9JbnB1dEk7XG4gICAgQElucHV0KCkgYWR1bHRzRHJvcGRvd24/OiBQdXJvRHJvcGRvd25JO1xuICAgIEBJbnB1dCgpIGtpZHNEcm9wZG93bj86IFB1cm9Ecm9wZG93bkk7XG4gICAgQElucHV0KCkgYnRuQXBwbHk/OiBQdXJvQnV0dG9uSTtcbiAgICBASW5wdXQoKSBidXR0b24/OiBQdXJvQnV0dG9uSTtcbiAgICBASW5wdXQoKSBsYW5nPzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGNvZGlnbz86IHN0cmluZztcbiAgICBASW5wdXQoKSBnbFZhbHVlPzogc3RyaW5nO1xuXG4gICAgZm9ybSE6IEZvcm1Hcm91cDtcbiAgICBnZW5lcmF0ZWRVcmwgPSAnJztcbiAgICBndWVzdHMgPSB7IGFkdWx0czogMiwga2lkczogMCB9O1xuICAgIHByaXZhdGUgaXNTeW5jaW5nID0gZmFsc2U7XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdG9kYXkgPSBuZXcgRGF0ZSgpO1xuICAgICAgICBjb25zdCB0b21vcnJvdyA9IG5ldyBEYXRlKHRvZGF5KTtcbiAgICAgICAgdG9tb3Jyb3cuc2V0RGF0ZSh0b2RheS5nZXREYXRlKCkgKyAxKTtcblxuICAgICAgICBjb25zdCBmb3JtYXR0ZWRUb2RheSA9IHRoaXMuZm9ybWF0RGF0ZSh0b2RheSk7XG4gICAgICAgIGNvbnN0IGZvcm1hdHRlZFRvbW9ycm93ID0gdGhpcy5mb3JtYXREYXRlKHRvbW9ycm93KTtcblxuICAgICAgICB0aGlzLmZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcbiAgICAgICAgICAgIGRhdGVwaWNrZXJJbjogW1xuICAgICAgICAgICAgICAgIHRoaXMuZGF0ZXBpY2tlckluPy52YWx1ZSB8fCBmb3JtYXR0ZWRUb2RheSxcbiAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGRhdGVwaWNrZXJPdXQ6IFtcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGVwaWNrZXJPdXQ/LnZhbHVlIHx8IGZvcm1hdHRlZFRvbW9ycm93LFxuICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWQsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgcHJvbW9JbnB1dDogW3RoaXMucHJvbW9JbnB1dD8udmFsdWUgfHwgJyddLFxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmZvcm0udmFsdWVDaGFuZ2VzXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZChcbiAgICAgICAgICAgICAgICAgICAgKGEsIGIpID0+IEpTT04uc3RyaW5naWZ5KGEpID09PSBKU09OLnN0cmluZ2lmeShiKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHZhbCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlR2VuZXJhdGVkVXJsKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5zYXZlRW5naW5lRGF0YSgpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5iaW5kRGF0ZXBpY2tlckV2ZW50cygpLCA0MDApO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy51cGRhdGVHZW5lcmF0ZWRVcmwoKTtcbiAgICB9XG5cbiAgICAvKiogVmluY3VsYSBsb3MgaW5wdXRzIGRlbCBwbHVnaW4gZGF0ZXBpY2tlciBjb24gZWwgZm9ybXVsYXJpbyBBbmd1bGFyICovXG4gICAgcHJpdmF0ZSBiaW5kRGF0ZXBpY2tlckV2ZW50cygpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaW5JbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFxuICAgICAgICAgICAgJ0luLWRhdGUxJ1xuICAgICAgICApIGFzIEhUTUxJbnB1dEVsZW1lbnQgfCBudWxsO1xuICAgICAgICBjb25zdCBvdXRJbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFxuICAgICAgICAgICAgJ091dC1kYXRlMSdcbiAgICAgICAgKSBhcyBIVE1MSW5wdXRFbGVtZW50IHwgbnVsbDtcbiAgICAgICAgaWYgKCFpbklucHV0IHx8ICFvdXRJbnB1dCkgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IGZpcmVOYXRpdmUgPSAoZWw6IEhUTUxJbnB1dEVsZW1lbnQpID0+IHtcbiAgICAgICAgICAgIGVsLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdpbnB1dCcsIHsgYnViYmxlczogdHJ1ZSB9KSk7XG4gICAgICAgICAgICBlbC5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnY2hhbmdlJywgeyBidWJibGVzOiB0cnVlIH0pKTtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgZWwuZGlzcGF0Y2hFdmVudChcbiAgICAgICAgICAgICAgICAgICAgbmV3IEN1c3RvbUV2ZW50KCdjaGFuZ2VEYXRlJywgeyBidWJibGVzOiB0cnVlIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gY2F0Y2gge31cbiAgICAgICAgfTtcblxuICAgICAgICAvKiogU2luY3Jvbml6YSB2YWxvcmVzIGRlc2RlIGVsIHBsdWdpbiBoYWNpYSBlbCBmb3JtIEFuZ3VsYXIgKi9cbiAgICAgICAgY29uc3Qgc3luY0Zyb21QbHVnaW4gPSAoc291cmNlOiAnaW4nIHwgJ291dCcpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzU3luY2luZykgcmV0dXJuO1xuICAgICAgICAgICAgdGhpcy5pc1N5bmNpbmcgPSB0cnVlO1xuXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByYXdJbiA9IChpbklucHV0LnZhbHVlIHx8ICcnKS50cmltKCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJhd091dCA9IChvdXRJbnB1dC52YWx1ZSB8fCAnJykudHJpbSgpO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIExsZWdhZGFcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJhd0luICYmIHJhd0luICE9PSB0aGlzLmZvcm0udmFsdWUuZGF0ZXBpY2tlckluKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGRhdGVwaWNrZXJJbjogcmF3SW4gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGVtaXRFdmVudDogdHJ1ZSB9XG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbkRhdGUgPSB0aGlzLnBhcnNlRGF0ZShyYXdJbik7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvdXREYXRlID0gcmF3T3V0ID8gdGhpcy5wYXJzZURhdGUocmF3T3V0KSA6IG51bGw7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNpIGxhIHNhbGlkYSA8PSBsbGVnYWRhIOKGkiBmb3J6YXIgKzEgZMOtYVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFvdXREYXRlIHx8IG91dERhdGUgPD0gaW5EYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGx1czEgPSBuZXcgRGF0ZShpbkRhdGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsdXMxLnNldERhdGUoaW5EYXRlLmdldERhdGUoKSArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZvcm1hdHRlZE91dCA9IHRoaXMuZm9ybWF0RGF0ZShwbHVzMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0SW5wdXQudmFsdWUgPSBmb3JtYXR0ZWRPdXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlyZU5hdGl2ZShvdXRJbnB1dCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgZGF0ZXBpY2tlck91dDogZm9ybWF0dGVkT3V0IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgZW1pdEV2ZW50OiB0cnVlIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gU2FsaWRhXG4gICAgICAgICAgICAgICAgICAgIGlmIChyYXdPdXQgJiYgcmF3T3V0ICE9PSB0aGlzLmZvcm0udmFsdWUuZGF0ZXBpY2tlck91dCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBkYXRlcGlja2VyT3V0OiByYXdPdXQgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGVtaXRFdmVudDogdHJ1ZSB9XG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gbGltcGlhciBwbGFjZWhvbGRlcnMgdmlzdWFsbWVudGVcbiAgICAgICAgICAgICAgICAgICAgaWYgKGluSW5wdXQudmFsdWUpIGluSW5wdXQucGxhY2Vob2xkZXIgPSAnJztcbiAgICAgICAgICAgICAgICAgICAgaWYgKG91dElucHV0LnZhbHVlKSBvdXRJbnB1dC5wbGFjZWhvbGRlciA9ICcnO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNTeW5jaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSwgMCk7XG4gICAgICAgIH07XG5cbiAgICAgICAgLy8g8J+UuSBFc2N1Y2hhciBldmVudG9zIGRlbCBwbHVnaW4geSBkZSBpbnB1dCBuYXRpdm9cbiAgICAgICAgY29uc3QgZXZlbnRzID0gW1xuICAgICAgICAgICAgJ2NoYW5nZScsXG4gICAgICAgICAgICAnaW5wdXQnLFxuICAgICAgICAgICAgJ2JsdXInLFxuICAgICAgICAgICAgJ2NsaWNrJyxcbiAgICAgICAgICAgICdjaGFuZ2VEYXRlJyxcbiAgICAgICAgICAgICdkYXRlQ2hhbmdlJyxcbiAgICAgICAgICAgICdhcHBseS5kYXRlcmFuZ2VwaWNrZXInLFxuICAgICAgICBdO1xuICAgICAgICBldmVudHMuZm9yRWFjaCgoZXZ0KSA9PlxuICAgICAgICAgICAgaW5JbnB1dC5hZGRFdmVudExpc3RlbmVyKGV2dCwgKCkgPT4gc3luY0Zyb21QbHVnaW4oJ2luJykpXG4gICAgICAgICk7XG4gICAgICAgIGV2ZW50cy5mb3JFYWNoKChldnQpID0+XG4gICAgICAgICAgICBvdXRJbnB1dC5hZGRFdmVudExpc3RlbmVyKGV2dCwgKCkgPT4gc3luY0Zyb21QbHVnaW4oJ291dCcpKVxuICAgICAgICApO1xuXG4gICAgICAgIC8vIPCflLkgU2luY3Jvbml6YWNpw7NuIHByb2FjdGl2YSAoY2FkYSA1MDBtcylcbiAgICAgICAgc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNTeW5jaW5nKSByZXR1cm47XG4gICAgICAgICAgICBjb25zdCByYXdJbiA9IChpbklucHV0LnZhbHVlIHx8ICcnKS50cmltKCk7XG4gICAgICAgICAgICBjb25zdCByYXdPdXQgPSAob3V0SW5wdXQudmFsdWUgfHwgJycpLnRyaW0oKTtcbiAgICAgICAgICAgIGlmIChyYXdJbiAmJiByYXdJbiAhPT0gdGhpcy5mb3JtLnZhbHVlLmRhdGVwaWNrZXJJbikge1xuICAgICAgICAgICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5wYXRjaFZhbHVlKFxuICAgICAgICAgICAgICAgICAgICAgICAgeyBkYXRlcGlja2VySW46IHJhd0luIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7IGVtaXRFdmVudDogdHJ1ZSB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHJhd091dCAmJiByYXdPdXQgIT09IHRoaXMuZm9ybS52YWx1ZS5kYXRlcGlja2VyT3V0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUoXG4gICAgICAgICAgICAgICAgICAgICAgICB7IGRhdGVwaWNrZXJPdXQ6IHJhd091dCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgeyBlbWl0RXZlbnQ6IHRydWUgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgNTAwKTtcblxuICAgICAgICAvLyDwn5S5IFJlZnJlc2NhciBwbGFjZWhvbGRlcnMgaW5pY2lhbGVzXG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICAvKiogR3VhcmRhIGVuIHNlc3Npb25TdG9yYWdlICovXG4gICAgcHJpdmF0ZSBzYXZlRW5naW5lRGF0YSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSByZXR1cm47XG4gICAgICAgIGNvbnN0IHsgZGF0ZXBpY2tlckluLCBkYXRlcGlja2VyT3V0LCBwcm9tb0lucHV0IH0gPSB0aGlzLmZvcm0udmFsdWU7XG4gICAgICAgIGNvbnN0IHBheWxvYWQgPSB7XG4gICAgICAgICAgICBkYXRlaW46IGRhdGVwaWNrZXJJbixcbiAgICAgICAgICAgIGRhdGVvdXQ6IGRhdGVwaWNrZXJPdXQsXG4gICAgICAgICAgICBhZHVsdHM6IHRoaXMuZ3Vlc3RzLmFkdWx0cyxcbiAgICAgICAgICAgIGtpZHM6IHRoaXMuZ3Vlc3RzLmtpZHMsXG4gICAgICAgICAgICBwcm9tbzogcHJvbW9JbnB1dCB8fCAnJyxcbiAgICAgICAgfTtcbiAgICAgICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSgncHVyb0VuZ2luZURhdGEnLCBKU09OLnN0cmluZ2lmeShwYXlsb2FkKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmb3JtYXREYXRlKGRhdGU6IERhdGUpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBkZCA9IFN0cmluZyhkYXRlLmdldERhdGUoKSkucGFkU3RhcnQoMiwgJzAnKTtcbiAgICAgICAgY29uc3QgbW0gPSBTdHJpbmcoZGF0ZS5nZXRNb250aCgpICsgMSkucGFkU3RhcnQoMiwgJzAnKTtcbiAgICAgICAgY29uc3QgeXl5eSA9IGRhdGUuZ2V0RnVsbFllYXIoKTtcbiAgICAgICAgcmV0dXJuIGAke2RkfS8ke21tfS8ke3l5eXl9YDtcbiAgICB9XG5cbiAgICBwcml2YXRlIHBhcnNlRGF0ZSh2YWx1ZTogc3RyaW5nKTogRGF0ZSB7XG4gICAgICAgIGNvbnN0IGNsZWFuID0gdmFsdWUudHJpbSgpLnJlcGxhY2VBbGwoJy0nLCAnLycpLnJlcGxhY2VBbGwoJy4nLCAnLycpO1xuICAgICAgICBjb25zdCBbZCwgbSwgeV0gPSBjbGVhbi5zcGxpdCgnLycpLm1hcChOdW1iZXIpO1xuICAgICAgICByZXR1cm4gbmV3IERhdGUoeSwgbSAtIDEsIGQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZm9ybWF0RGF0ZUZvclVybChkYXRlU3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBbZCwgbSwgeV0gPSBkYXRlU3RyLnJlcGxhY2VBbGwoJy0nLCAnLycpLnNwbGl0KCcvJykubWFwKE51bWJlcik7XG4gICAgICAgIHJldHVybiBgJHtTdHJpbmcoZCkucGFkU3RhcnQoMiwgJzAnKX0tJHtTdHJpbmcobSkucGFkU3RhcnQoMiwgJzAnKX0tJHt5fWA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVHZW5lcmF0ZWRVcmwoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5idXR0b24/LnVybCkgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IHsgZGF0ZXBpY2tlckluLCBkYXRlcGlja2VyT3V0LCBwcm9tb0lucHV0IH0gPSB0aGlzLmZvcm0udmFsdWU7XG4gICAgICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoKTtcblxuICAgICAgICBpZiAodGhpcy5jb2RpZ28gJiYgdGhpcy5sYW5nKSB7XG4gICAgICAgICAgICBjb25zdCBpc01vYmlsZSA9XG4gICAgICAgICAgICAgICAgL01vYml8QW5kcm9pZHxpUGhvbmV8aVBhZHxpUG9kfFdpbmRvd3MgUGhvbmUvaS50ZXN0KFxuICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0b3IudXNlckFnZW50XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNvbnN0IGFmZmlsaWF0ZSA9IGAke3RoaXMuY29kaWdvfV8ke3RoaXMubGFuZ31fJHtcbiAgICAgICAgICAgICAgICBpc01vYmlsZSA/ICdtb2JpbGUnIDogJ1BDJ1xuICAgICAgICAgICAgfWA7XG4gICAgICAgICAgICBwYXJhbXMuYXBwZW5kKCdhZmZpbGlhdGUnLCBhZmZpbGlhdGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGRhdGVwaWNrZXJJbiAmJiBkYXRlcGlja2VyT3V0KSB7XG4gICAgICAgICAgICBwYXJhbXMuYXBwZW5kKCdkYXRlaW4nLCB0aGlzLmZvcm1hdERhdGVGb3JVcmwoZGF0ZXBpY2tlckluKSk7XG4gICAgICAgICAgICBwYXJhbXMuYXBwZW5kKCdkYXRlb3V0JywgdGhpcy5mb3JtYXREYXRlRm9yVXJsKGRhdGVwaWNrZXJPdXQpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmd1ZXN0cy5hZHVsdHMpXG4gICAgICAgICAgICBwYXJhbXMuYXBwZW5kKCdhZHVsdG9zJywgU3RyaW5nKHRoaXMuZ3Vlc3RzLmFkdWx0cykpO1xuICAgICAgICBpZiAodGhpcy5ndWVzdHMua2lkcylcbiAgICAgICAgICAgIHBhcmFtcy5hcHBlbmQoJ2NoaWxkcmVuJywgU3RyaW5nKHRoaXMuZ3Vlc3RzLmtpZHMpKTtcblxuICAgICAgICBpZiAocHJvbW9JbnB1dCkge1xuICAgICAgICAgICAgcGFyYW1zLmFwcGVuZCgncHJvbScsIHByb21vSW5wdXQpO1xuICAgICAgICAgICAgcGFyYW1zLmFwcGVuZCgncHJvbV9jbGVhbicsICcwJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwYXJhbXMuYXBwZW5kKCdwcm9tX2NsZWFuJywgJzEnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmdsVmFsdWUpIHBhcmFtcy5hcHBlbmQoJ19nbCcsIHRoaXMuZ2xWYWx1ZSk7XG5cbiAgICAgICAgY29uc3Qgc2VwID0gdGhpcy5idXR0b24udXJsLmluY2x1ZGVzKCc/JykgPyAnJicgOiAnPyc7XG4gICAgICAgIGNvbnN0IHNhZmVQYXJhbXMgPVxuICAgICAgICAgICAgcGFyYW1zICYmIHR5cGVvZiBwYXJhbXMudG9TdHJpbmcgPT09ICdmdW5jdGlvbidcbiAgICAgICAgICAgICAgICA/IHBhcmFtcy50b1N0cmluZygpXG4gICAgICAgICAgICAgICAgOiAnJztcbiAgICAgICAgdGhpcy5nZW5lcmF0ZWRVcmwgPSBgJHt0aGlzLmJ1dHRvbi51cmx9JHtzZXB9JHtzYWZlUGFyYW1zfWA7XG4gICAgfVxuXG4gICAgYXBwbHlHdWVzdHMoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGFkdWx0c1NlbGVjdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFxuICAgICAgICAgICAgJ2FkdWx0J1xuICAgICAgICApIGFzIEhUTUxTZWxlY3RFbGVtZW50IHwgbnVsbDtcbiAgICAgICAgY29uc3Qga2lkc1NlbGVjdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFxuICAgICAgICAgICAgJ2NoaWxkJ1xuICAgICAgICApIGFzIEhUTUxTZWxlY3RFbGVtZW50IHwgbnVsbDtcblxuICAgICAgICBpZiAoYWR1bHRzU2VsZWN0KSB0aGlzLmd1ZXN0cy5hZHVsdHMgPSBOdW1iZXIoYWR1bHRzU2VsZWN0LnZhbHVlKSB8fCAyO1xuICAgICAgICBpZiAoa2lkc1NlbGVjdCkgdGhpcy5ndWVzdHMua2lkcyA9IE51bWJlcihraWRzU2VsZWN0LnZhbHVlKSB8fCAwO1xuXG4gICAgICAgIC8vIPCflLkgR3VhcmRhIGVuIHNlc3Npb25TdG9yYWdlXG4gICAgICAgIHRoaXMuc2F2ZUVuZ2luZURhdGEoKTtcblxuICAgICAgICAvLyDwn5S5IEFjdHVhbGl6YSBsYSBVUkwgY29uIGxvcyBudWV2b3MgdmFsb3Jlc1xuICAgICAgICB0aGlzLnVwZGF0ZUdlbmVyYXRlZFVybCgpO1xuXG4gICAgICAgIC8vIPCflLkgUmVmcmVzY2EgbGEgVUkgZGVsIGNvbnRhZG9yIChjYW1wbyBwcmluY2lwYWwg4oCcZ3Vlc3Rz4oCdKVxuICAgICAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgICAgICAgY29uc3QgZ3Vlc3RzTGFiZWwgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxuICAgICAgICAgICAgICAgICcuanMtcGVyc29uYXMtc3ViZmllbGRzIC5iYW5uZXJfX2ZpZWxkQ29udHJvbCdcbiAgICAgICAgICAgICkgYXMgSFRNTEVsZW1lbnQgfCBudWxsO1xuICAgICAgICAgICAgaWYgKGd1ZXN0c0xhYmVsKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdG90YWwgPSB0aGlzLmd1ZXN0cy5hZHVsdHMgKyB0aGlzLmd1ZXN0cy5raWRzO1xuICAgICAgICAgICAgICAgIGd1ZXN0c0xhYmVsLnRleHRDb250ZW50ID1cbiAgICAgICAgICAgICAgICAgICAgdG90YWwgPD0gOSA/ICcwJyArIHRvdGFsIDogU3RyaW5nKHRvdGFsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIG9uU3VibWl0KGU6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy51cGRhdGVHZW5lcmF0ZWRVcmwoKTtcbiAgICAgICAgaWYgKHRoaXMuZ2VuZXJhdGVkVXJsKSB7XG4gICAgICAgICAgICB3aW5kb3cub3Blbih0aGlzLmdlbmVyYXRlZFVybCwgJ19ibGFuaycpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFB1cm9Ib3RlbCB7XG4gICAgaWQ/OiBzdHJpbmc7XG4gICAgbmFtZT86IHN0cmluZztcbiAgICB0aWNrZXQ/OiBzdHJpbmc7XG59XG5leHBvcnQgaW50ZXJmYWNlIFB1cm9HdWVzdFZhbHVlIHtcbiAgICBhZHVsdHM6IG51bWJlcjtcbiAgICBraWRzOiB7IGNvZGU/OiBudW1iZXI7IGNvZGVBZ2VzPzogbnVtYmVyW10gfTtcbiAgICBpbmZhbnRzOiBudW1iZXI7XG59XG4iLCJAaWYgKGZvcm0pIHtcbiAgICA8Zm9ybVxuICAgICAgICBbZm9ybUdyb3VwXT1cImZvcm1cIlxuICAgICAgICBzY3JpcHRMb2FkZXJcbiAgICAgICAgW2RhdGFMb2FkZWRdPVwidHJ1ZVwiXG4gICAgICAgIChzdWJtaXQpPVwib25TdWJtaXQoJGV2ZW50KVwiXG4gICAgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYmFubmVyX19maWx0ZXJcIj5cbiAgICAgICAgICAgIDwhLS0g8J+UuSBGRUNIQSBERSBFTlRSQURBIC0tPlxuICAgICAgICAgICAgQGlmIChkYXRlcGlja2VySW4pIHtcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmFubmVyX19maWVsZEdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYW5uZXJfX2ZpZWxkSW5uZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoZGF0ZXBpY2tlckluLnRpdGxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiYmFubmVyX19maWVsZExhYmVsXCIgZm9yPVwiSW4tZGF0ZTFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZGF0ZXBpY2tlckluLnRpdGxlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJhbm5lcl9fZmllbGRDb250cm9sXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiSW4tZGF0ZTFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtdG9nZ2xlPVwiZGF0ZXBpY2tlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJJbi1kYXRlMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIucGxhY2Vob2xkZXJdPVwiZGF0ZXBpY2tlckluLnBsYWNlaG9sZGVyID8/ICdkZC9tbS95eXl5J1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZGF0ZXBpY2tlckluXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYW5uZXJfX2ZpZWxkSWNvblwiPjxpIGNsYXNzPVwiaWNvbi04OVwiPjwvaT48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIDwhLS0g8J+UuSBGRUNIQSBERSBTQUxJREEgLS0+XG4gICAgICAgICAgICBAaWYgKGRhdGVwaWNrZXJPdXQpIHtcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmFubmVyX19maWVsZEdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYW5uZXJfX2ZpZWxkSW5uZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoZGF0ZXBpY2tlck91dC50aXRsZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImJhbm5lcl9fZmllbGRMYWJlbFwiIGZvcj1cIk91dC1kYXRlMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBkYXRlcGlja2VyT3V0LnRpdGxlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJhbm5lcl9fZmllbGRDb250cm9sXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiT3V0LWRhdGUxXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLXRvZ2dsZT1cImRhdGVwaWNrZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiT3V0LWRhdGUxXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5wbGFjZWhvbGRlcl09XCJkYXRlcGlja2VyT3V0LnBsYWNlaG9sZGVyID8/ICdkZC9tbS95eXl5J1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZGF0ZXBpY2tlck91dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmFubmVyX19maWVsZEljb25cIj48aSBjbGFzcz1cImljb24tODlcIj48L2k+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICA8IS0tIPCflLkgSFXDiVNQRURFUyAtLT5cbiAgICAgICAgICAgIEBpZiAoZ3Vlc3RzSW5wdXQpIHtcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmFubmVyX19maWVsZEdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYmFubmVyX19maWVsZElubmVyIGpzLXBlcnNvbmFzLXN1YmZpZWxkc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiZ3Vlc3RzSW5wdXQudGl0bGUgPz8gJ0d1ZXN0cydcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGd1ZXN0c0lucHV0LnRpdGxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiYmFubmVyX19maWVsZExhYmVsXCI+e3sgZ3Vlc3RzSW5wdXQudGl0bGUgfX08L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJhbm5lcl9fZmllbGRDb250cm9sXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmFubmVyX19maWVsZEljb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIGZvY3VzYWJsZT1cImZhbHNlXCIgd2lkdGg9XCIxNVwiIGhlaWdodD1cIjhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVzZSBocmVmPVwiI3NlbGVjdC1hcnJvd1wiPjwvdXNlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmFubmVyX19maWVsZFN1YiBqcy1maWVsZFN1YlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChhZHVsdHNEcm9wZG93bikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYW5uZXJfX2ZpZWxkSW5uZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiYmFubmVyX19maWVsZExhYmVsXCIgZm9yPVwiYWR1bHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGFkdWx0c0Ryb3Bkb3duLnRpdGxlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYmFubmVyX19maWVsZENvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cImFkdWx0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiYWR1bHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJhcHBseUd1ZXN0cygpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAob3B0aW9uIG9mIGFkdWx0c0Ryb3Bkb3duLm9wdGlvbnM7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gW3ZhbHVlXT1cIm9wdGlvbi5jb2RlXCI+e3sgb3B0aW9uLm5hbWUgfX08L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYW5uZXJfX2ZpZWxkSWNvblwiPjxpIGNsYXNzPVwiaWNvbi05MlwiPjwvaT48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChraWRzRHJvcGRvd24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmFubmVyX19maWVsZElubmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImJhbm5lcl9fZmllbGRMYWJlbFwiIGZvcj1cImNoaWxkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBraWRzRHJvcGRvd24udGl0bGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJiYW5uZXJfX2ZpZWxkQ29udHJvbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiY2hpbGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJjaGlsZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cImFwcGx5R3Vlc3RzKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChvcHRpb24gb2Yga2lkc0Ryb3Bkb3duLm9wdGlvbnM7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gW3ZhbHVlXT1cIm9wdGlvbi5jb2RlXCI+e3sgb3B0aW9uLm5hbWUgfX08L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYW5uZXJfX2ZpZWxkSWNvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjIyXCIgaGVpZ2h0PVwiMjJcIj48dXNlIGhyZWY9XCIjbGl0dGxlLWdpcmxcIj48L3VzZT48L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoYnRuQXBwbHkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnRuX19ncm91cFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bl9fcHJpbWFyeSBqcy1hcHBseS1ndWVzdHNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJidG5BcHBseS5sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYXBwbHlHdWVzdHMoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGJ0bkFwcGx5LmxhYmVsIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIDwhLS0g8J+UuSBQUk9NTyBDT0RFIC0tPlxuICAgICAgICAgICAgQGlmIChwcm9tb0lucHV0KSB7XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJhbm5lcl9fZmllbGRHcm91cFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmFubmVyX19maWVsZElubmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJiYW5uZXJfX2ZpZWxkTGFiZWxcIj57eyBwcm9tb0lucHV0LnRpdGxlIH19PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInh4eHhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYmFubmVyX19maWVsZENvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInByb21vSW5wdXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJhbm5lcl9fZmllbGRJY29uXCI+PGkgY2xhc3M9XCJpY29uLTkwXCI+PC9pPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgPCEtLSDwn5S5IEJPVMOTTiAtLT5cbiAgICAgICAgICAgIEBpZiAoYnV0dG9uKSB7XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJhbm5lcl9fZmllbGRCdG5cIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG5fX3ByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJidXR0b24ubGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyBidXR0b24ubGFiZWwgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Zvcm0+XG59XG4iXX0=