@snabcentr/client-ui 4.16.6 → 4.16.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.
Files changed (29) hide show
  1. package/contragents/sc-contragents.module.d.ts +1 -1
  2. package/delivery-address/add-delivery-address-dialog/sc-add-delivery-address-dialog.component.d.ts +5 -0
  3. package/delivery-address/sc-delivery-address.module.d.ts +1 -1
  4. package/directives/address-quality/sc-address-quality.directive.d.ts +5 -0
  5. package/directives/address-quality/sc-address-quality.service.d.ts +9 -1
  6. package/esm2022/auth/sc-simple-sign-up-form/sc-simple-sign-up-form.component.mjs +1 -1
  7. package/esm2022/auth/sign-up-form/sc-sign-up-form.component.mjs +1 -1
  8. package/esm2022/catalog/notify-when-in-stock-dialog/sc-notify-when-in-stock-dialog.component.mjs +2 -2
  9. package/esm2022/contacts/new-contact-form/sc-new-contact-form.component.mjs +1 -1
  10. package/esm2022/contragents/new-contragent-bank-account-form/sc-new-contragent-bank-account-form.component.mjs +1 -1
  11. package/esm2022/contragents/new-contragent-form/sc-new-contragent-form.component.mjs +3 -3
  12. package/esm2022/contragents/sc-contragents.module.mjs +5 -2
  13. package/esm2022/delivery-address/add-delivery-address-dialog/sc-add-delivery-address-dialog.component.mjs +10 -3
  14. package/esm2022/delivery-address/sc-delivery-address.module.mjs +5 -2
  15. package/esm2022/directives/address-quality/sc-address-quality.directive.mjs +8 -1
  16. package/esm2022/directives/address-quality/sc-address-quality.service.mjs +14 -6
  17. package/esm2022/feedback/feedback-form/sc-feedback-form.component.mjs +2 -2
  18. package/esm2022/form-fields/suggestion-field/sc-suggestion-field.component.mjs +6 -31
  19. package/esm2022/order/order-items-list/sc-order-items-list.component.mjs +36 -5
  20. package/esm2022/providers/sc-block-incomplete-address.mjs +3 -3
  21. package/esm2022/user/update-user-info-dialog/sc-update-user-info-dialog.component.mjs +3 -3
  22. package/fesm2022/snabcentr-client-ui.mjs +85 -51
  23. package/fesm2022/snabcentr-client-ui.mjs.map +1 -1
  24. package/form-fields/suggestion-field/sc-suggestion-field.component.d.ts +3 -14
  25. package/order/order-items-list/sc-order-items-list.component.d.ts +10 -0
  26. package/package.json +1 -1
  27. package/providers/sc-block-incomplete-address.d.ts +1 -1
  28. package/release_notes.tmp +1 -1
  29. package/styles/taiga/variables.less +16 -1
@@ -196,6 +196,13 @@ export class ScAddDeliveryAddressDialogComponent {
196
196
  getAddressQualityWarning() {
197
197
  return this.isAddressWithoutCoordinates() ? null : this.addressQualityService.getWarningMessage(this.addressControl);
198
198
  }
199
+ /**
200
+ * Возвращает appearance поля адреса доставки: appearance предупреждения, пока показано предупреждение о полноте адреса,
201
+ * иначе пустую строку (appearance поля по умолчанию).
202
+ */
203
+ getAddressAppearance() {
204
+ return this.getAddressQualityWarning() ? this.addressQualityService.warningAppearance : '';
205
+ }
199
206
  /**
200
207
  * Устанавливает {@link addressPlacemark} точку на определённые координаты.
201
208
  *
@@ -249,13 +256,13 @@ export class ScAddDeliveryAddressDialogComponent {
249
256
  return placemark;
250
257
  }
251
258
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScAddDeliveryAddressDialogComponent, deps: [{ token: i1.ScDeliveryAddressService }, { token: i1.ScUserMetrikaService }, { token: POLYMORPHEUS_CONTEXT }, { token: i1.ScConvertersService }], target: i0.ɵɵFactoryTarget.Component }); }
252
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ScAddDeliveryAddressDialogComponent, selector: "sc-add-delivery-address-dialog", ngImport: i0, template: "@let isEnabledAddDeliveryAddress = isDefaultCountry | async;\n\n@if (isEnabledAddDeliveryAddress) {\n <div class=\"relative flex flex-col gap-3 md:flex-row\">\n <form\n [formGroup]=\"form\"\n (ngSubmit)=\"onSubmit$.next()\"\n class=\"flex w-full flex-col gap-3\"\n >\n <label tuiLabel>\n \u0410\u0434\u0440\u0435\u0441 \u0434\u043E\u0441\u0442\u0430\u0432\u043A\u0438\n <tui-input\n [pseudoInvalid]=\"isAddressWithoutCoordinates() || null\"\n formControlName=\"address\"\n >\n \u0410\u0434\u0440\u0435\u0441 \u0434\u043E\u0441\u0442\u0430\u0432\u043A\u0438\n <sc-suggestion-field\n *tuiDataList\n [type]=\"suggestionType.address\"\n (selectedClick)=\"onSelectedAddress($event)\"\n />\n <input\n tuiTextfieldLegacy\n autocomplete=\"new-password\"\n />\n </tui-input>\n <tui-error\n formControlName=\"address\"\n [error]=\"[] | tuiFieldError | async\"\n />\n <tui-error\n *ngIf=\"isAddressWithoutCoordinates()\"\n error=\"\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u0432\u0430\u0440\u0438\u0430\u043D\u0442 \u0438\u0437 \u0441\u043F\u0438\u0441\u043A\u0430\"\n />\n @if (getAddressQualityWarning(); as addressQualityWarning) {\n <p class=\"text-xs text-tui-status-warning\">{{ addressQualityWarning }}</p>\n }\n </label>\n <div\n formGroupName=\"contact\"\n class=\"flex grow flex-col gap-2\"\n >\n <p class=\"w-full font-bold\">\u041A\u043E\u043D\u0442\u0430\u043A\u0442\u043D\u043E\u0435 \u043B\u0438\u0446\u043E:</p>\n <label tuiLabel>\n \u0424.\u0418.\u041E.\n <tui-input formControlName=\"name\">\n \u0424.\u0418.\u041E.\n <sc-suggestion-field\n *tuiDataList\n [type]=\"suggestionType.fio\"\n />\n </tui-input>\n <tui-error\n formControlName=\"name\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n <label tuiLabel>\n \u0422\u0435\u043B\u0435\u0444\u043E\u043D\n <tui-textfield>\n <input\n formControlName=\"phone\"\n tuiInputPhoneInternational\n [countrySearch]=\"true\"\n [countries]=\"(countries | tuiSortCountries | async) || []\"\n autocomplete=\"phone\"\n />\n </tui-textfield>\n <tui-error\n formControlName=\"phone\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n <label tuiLabel>\n \u0410\u0434\u0440\u0435\u0441 \u044D\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u043D\u043E\u0439 \u043F\u043E\u0447\u0442\u044B\n <tui-input formControlName=\"email\">\n <input\n tuiTextfieldLegacy\n type=\"email\"\n />\n \u0410\u0434\u0440\u0435\u0441 \u044D\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u043D\u043E\u0439 \u043F\u043E\u0447\u0442\u044B\n <sc-suggestion-field\n *tuiDataList\n [type]=\"suggestionType.email\"\n />\n </tui-input>\n <tui-error\n formControlName=\"email\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n <label tuiLabel>\n \u0414\u043E\u043B\u0436\u043D\u043E\u0441\u0442\u044C\n <tui-input formControlName=\"position\"> \u0414\u043E\u043B\u0436\u043D\u043E\u0441\u0442\u044C </tui-input>\n <tui-error\n formControlName=\"position\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n </div>\n <div class=\"flex justify-center gap-8\">\n <button\n tuiButton\n (click)=\"context.$implicit.complete()\"\n type=\"button\"\n [iconStart]=\"isMobile ? '@tui.x' : '@tui.x'\"\n appearance=\"secondary\"\n >\n \u041E\u0442\u043C\u0435\u043D\u0430\n </button>\n <button\n tuiButton\n [iconStart]=\"isMobile ? '@tui.save' : '@tui.save'\"\n [disabled]=\"form.invalid\"\n [loading]=\"!!(loading$ | async)\"\n type=\"submit\"\n >\n \u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C\n </button>\n </div>\n </form>\n\n <div\n class=\"absolute -z-10 flex size-full md:w-1/2\"\n [ngClass]=\"{ 'z-0 relative': addressPlacemark }\"\n >\n <div\n class=\"flex-auto\"\n [ngClass]=\"{ 'pointer-events-none opacity-50': form.controls.coordinates.invalid }\"\n >\n <ya-map\n [zoom]=\"11\"\n [state]=\"{ controls: [] }\"\n (ready)=\"onMapReadyHandle($event)\"\n [options]=\"options\"\n />\n </div>\n </div>\n </div>\n} @else {\n @let helpContacts = userHelpContacts$ | async;\n\n @if (helpContacts && helpContacts.length) {\n <tui-push\n type=\"\u0427\u0442\u043E\u0431\u044B \u0434\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0430\u0434\u0440\u0435\u0441 \u0434\u043E\u0441\u0442\u0430\u0432\u043A\u0438, \u0441\u0432\u044F\u0436\u0438\u0442\u0435\u0441\u044C \u0441 \u043D\u0430\u043C\u0438\"\n class=\"!w-auto\"\n >\n <tui-icon icon=\"@tui.message-square\" />\n <sc-manager-card [manager]=\"helpContacts[0]\" />\n </tui-push>\n }\n}\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.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: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i4.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "directive", type: i5.TuiLabel, selector: "label[tuiLabel]" }, { kind: "component", type: i3.TuiError, selector: "tui-error", inputs: ["error"] }, { kind: "component", type: i6.TuiInputComponent, selector: "tui-input" }, { kind: "directive", type: i6.TuiInputDirective, selector: "tui-input" }, { kind: "component", type: i7.TuiTextfieldComponent, selector: "input[tuiTextfieldLegacy], textarea[tuiTextfieldLegacy]" }, { kind: "component", type: i8.ScSuggestionFieldComponent, selector: "sc-suggestion-field", inputs: ["type", "showAddressQuality"], outputs: ["selectedClick"] }, { kind: "directive", type: i3.TuiDataListDirective, selector: "ng-template[tuiDataList]" }, { kind: "component", type: i9.YaMapComponent, selector: "ya-map", inputs: ["center", "zoom", "state", "options"], outputs: ["ready", "actionbegin", "actionbreak", "actionend", "actiontick", "actiontickcomplete", "balloonclose", "balloonopen", "boundschange", "yaclick", "yacontextmenu", "yadblclick", "destroy", "hintclose", "hintopen", "marginchange", "yamousedown", "yamouseenter", "yamouseleave", "yamousemove", "yamouseup", "multitouchend", "multitouchmove", "multitouchstart", "optionschange", "sizechange", "typechange", "yawheel"] }, { kind: "component", type: i10.TuiButtonLoading, selector: "[tuiButton][loading],[tuiIconButton][loading]", inputs: ["size", "loading"] }, { kind: "component", type: i10.TuiPushComponent, selector: "tui-push", inputs: ["heading", "type", "lines", "timestamp"], outputs: ["close"] }, { kind: "component", type: i3.TuiIcon, selector: "tui-icon", inputs: ["icon", "background"] }, { kind: "component", type: i11.ScManagerCardComponent, selector: "sc-manager-card", inputs: ["manager"] }, { kind: "component", type: i12.TuiInputPhoneInternational, selector: "input[tuiInputPhoneInternational]", inputs: ["countrySearch", "countries", "countryIsoCode"], outputs: ["countryIsoCodeChange"] }, { kind: "component", type: i3.TuiTextfieldComponent, selector: "tui-textfield:not([multi])" }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i10.TuiFieldErrorPipe, name: "tuiFieldError" }, { kind: "pipe", type: i10.TuiSortCountriesPipe, name: "tuiSortCountries" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
259
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ScAddDeliveryAddressDialogComponent, selector: "sc-add-delivery-address-dialog", ngImport: i0, template: "@let isEnabledAddDeliveryAddress = isDefaultCountry | async;\n\n@if (isEnabledAddDeliveryAddress) {\n <div class=\"relative flex flex-col gap-3 md:flex-row\">\n <form\n [formGroup]=\"form\"\n (ngSubmit)=\"onSubmit$.next()\"\n class=\"flex w-full flex-col gap-3\"\n >\n <label tuiLabel>\n \u0410\u0434\u0440\u0435\u0441 \u0434\u043E\u0441\u0442\u0430\u0432\u043A\u0438\n <tui-input\n [pseudoInvalid]=\"isAddressWithoutCoordinates() || null\"\n [tuiTextfieldAppearance]=\"getAddressAppearance()\"\n formControlName=\"address\"\n >\n \u0410\u0434\u0440\u0435\u0441 \u0434\u043E\u0441\u0442\u0430\u0432\u043A\u0438\n <sc-suggestion-field\n *tuiDataList\n [type]=\"suggestionType.address\"\n (selectedClick)=\"onSelectedAddress($event)\"\n />\n <input\n tuiTextfieldLegacy\n autocomplete=\"new-password\"\n />\n </tui-input>\n <tui-error\n formControlName=\"address\"\n [error]=\"[] | tuiFieldError | async\"\n />\n <tui-error\n *ngIf=\"isAddressWithoutCoordinates()\"\n error=\"\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u0432\u0430\u0440\u0438\u0430\u043D\u0442 \u0438\u0437 \u0441\u043F\u0438\u0441\u043A\u0430\"\n />\n @if (getAddressQualityWarning(); as addressQualityWarning) {\n <p class=\"text-xs text-tui-status-warning\">{{ addressQualityWarning }}</p>\n }\n </label>\n <div\n formGroupName=\"contact\"\n class=\"flex grow flex-col gap-2\"\n >\n <p class=\"w-full font-bold\">\u041A\u043E\u043D\u0442\u0430\u043A\u0442\u043D\u043E\u0435 \u043B\u0438\u0446\u043E:</p>\n <label tuiLabel>\n \u0424.\u0418.\u041E.\n <tui-input formControlName=\"name\">\n \u0424.\u0418.\u041E.\n <sc-suggestion-field\n *tuiDataList\n [type]=\"suggestionType.fio\"\n />\n </tui-input>\n <tui-error\n formControlName=\"name\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n <label tuiLabel>\n \u0422\u0435\u043B\u0435\u0444\u043E\u043D\n <tui-textfield>\n <input\n formControlName=\"phone\"\n tuiInputPhoneInternational\n [countrySearch]=\"true\"\n [countries]=\"(countries | tuiSortCountries | async) || []\"\n autocomplete=\"phone\"\n />\n </tui-textfield>\n <tui-error\n formControlName=\"phone\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n <label tuiLabel>\n \u0410\u0434\u0440\u0435\u0441 \u044D\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u043D\u043E\u0439 \u043F\u043E\u0447\u0442\u044B\n <tui-input formControlName=\"email\">\n <input\n tuiTextfieldLegacy\n type=\"email\"\n />\n \u0410\u0434\u0440\u0435\u0441 \u044D\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u043D\u043E\u0439 \u043F\u043E\u0447\u0442\u044B\n <sc-suggestion-field\n *tuiDataList\n [type]=\"suggestionType.email\"\n />\n </tui-input>\n <tui-error\n formControlName=\"email\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n <label tuiLabel>\n \u0414\u043E\u043B\u0436\u043D\u043E\u0441\u0442\u044C\n <tui-input formControlName=\"position\"> \u0414\u043E\u043B\u0436\u043D\u043E\u0441\u0442\u044C </tui-input>\n <tui-error\n formControlName=\"position\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n </div>\n <div class=\"flex justify-center gap-8\">\n <button\n tuiButton\n (click)=\"context.$implicit.complete()\"\n type=\"button\"\n [iconStart]=\"isMobile ? '@tui.x' : '@tui.x'\"\n appearance=\"secondary\"\n >\n \u041E\u0442\u043C\u0435\u043D\u0430\n </button>\n <button\n tuiButton\n [iconStart]=\"isMobile ? '@tui.save' : '@tui.save'\"\n [disabled]=\"form.invalid\"\n [loading]=\"!!(loading$ | async)\"\n type=\"submit\"\n >\n \u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C\n </button>\n </div>\n </form>\n\n <div\n class=\"absolute -z-10 flex size-full md:w-1/2\"\n [ngClass]=\"{ 'z-0 relative': addressPlacemark }\"\n >\n <div\n class=\"flex-auto\"\n [ngClass]=\"{ 'pointer-events-none opacity-50': form.controls.coordinates.invalid }\"\n >\n <ya-map\n [zoom]=\"11\"\n [state]=\"{ controls: [] }\"\n (ready)=\"onMapReadyHandle($event)\"\n [options]=\"options\"\n />\n </div>\n </div>\n </div>\n} @else {\n @let helpContacts = userHelpContacts$ | async;\n\n @if (helpContacts && helpContacts.length) {\n <tui-push\n type=\"\u0427\u0442\u043E\u0431\u044B \u0434\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0430\u0434\u0440\u0435\u0441 \u0434\u043E\u0441\u0442\u0430\u0432\u043A\u0438, \u0441\u0432\u044F\u0436\u0438\u0442\u0435\u0441\u044C \u0441 \u043D\u0430\u043C\u0438\"\n class=\"!w-auto\"\n >\n <tui-icon icon=\"@tui.message-square\" />\n <sc-manager-card [manager]=\"helpContacts[0]\" />\n </tui-push>\n }\n}\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.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: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i4.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "directive", type: i5.TuiLabel, selector: "label[tuiLabel]" }, { kind: "component", type: i3.TuiError, selector: "tui-error", inputs: ["error"] }, { kind: "component", type: i6.TuiInputComponent, selector: "tui-input" }, { kind: "directive", type: i6.TuiInputDirective, selector: "tui-input" }, { kind: "component", type: i7.TuiTextfieldComponent, selector: "input[tuiTextfieldLegacy], textarea[tuiTextfieldLegacy]" }, { kind: "directive", type: i6.TuiTextfieldAppearanceDirective, selector: "[tuiTextfieldAppearance]", inputs: ["tuiTextfieldAppearance"] }, { kind: "component", type: i8.ScSuggestionFieldComponent, selector: "sc-suggestion-field", inputs: ["type"], outputs: ["selectedClick"] }, { kind: "directive", type: i3.TuiDataListDirective, selector: "ng-template[tuiDataList]" }, { kind: "component", type: i9.YaMapComponent, selector: "ya-map", inputs: ["center", "zoom", "state", "options"], outputs: ["ready", "actionbegin", "actionbreak", "actionend", "actiontick", "actiontickcomplete", "balloonclose", "balloonopen", "boundschange", "yaclick", "yacontextmenu", "yadblclick", "destroy", "hintclose", "hintopen", "marginchange", "yamousedown", "yamouseenter", "yamouseleave", "yamousemove", "yamouseup", "multitouchend", "multitouchmove", "multitouchstart", "optionschange", "sizechange", "typechange", "yawheel"] }, { kind: "component", type: i10.TuiButtonLoading, selector: "[tuiButton][loading],[tuiIconButton][loading]", inputs: ["size", "loading"] }, { kind: "component", type: i10.TuiPushComponent, selector: "tui-push", inputs: ["heading", "type", "lines", "timestamp"], outputs: ["close"] }, { kind: "component", type: i3.TuiIcon, selector: "tui-icon", inputs: ["icon", "background"] }, { kind: "component", type: i11.ScManagerCardComponent, selector: "sc-manager-card", inputs: ["manager"] }, { kind: "component", type: i12.TuiInputPhoneInternational, selector: "input[tuiInputPhoneInternational]", inputs: ["countrySearch", "countries", "countryIsoCode"], outputs: ["countryIsoCodeChange"] }, { kind: "component", type: i3.TuiTextfieldComponent, selector: "tui-textfield:not([multi])" }, { kind: "directive", type: i3.TuiTextfieldOptionsDirective, selector: "[tuiTextfieldAppearance],[tuiTextfieldSize],[tuiTextfieldCleaner]", inputs: ["tuiTextfieldAppearance", "tuiTextfieldSize", "tuiTextfieldCleaner"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i10.TuiFieldErrorPipe, name: "tuiFieldError" }, { kind: "pipe", type: i10.TuiSortCountriesPipe, name: "tuiSortCountries" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
253
260
  }
254
261
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScAddDeliveryAddressDialogComponent, decorators: [{
255
262
  type: Component,
256
- args: [{ selector: 'sc-add-delivery-address-dialog', changeDetection: ChangeDetectionStrategy.OnPush, template: "@let isEnabledAddDeliveryAddress = isDefaultCountry | async;\n\n@if (isEnabledAddDeliveryAddress) {\n <div class=\"relative flex flex-col gap-3 md:flex-row\">\n <form\n [formGroup]=\"form\"\n (ngSubmit)=\"onSubmit$.next()\"\n class=\"flex w-full flex-col gap-3\"\n >\n <label tuiLabel>\n \u0410\u0434\u0440\u0435\u0441 \u0434\u043E\u0441\u0442\u0430\u0432\u043A\u0438\n <tui-input\n [pseudoInvalid]=\"isAddressWithoutCoordinates() || null\"\n formControlName=\"address\"\n >\n \u0410\u0434\u0440\u0435\u0441 \u0434\u043E\u0441\u0442\u0430\u0432\u043A\u0438\n <sc-suggestion-field\n *tuiDataList\n [type]=\"suggestionType.address\"\n (selectedClick)=\"onSelectedAddress($event)\"\n />\n <input\n tuiTextfieldLegacy\n autocomplete=\"new-password\"\n />\n </tui-input>\n <tui-error\n formControlName=\"address\"\n [error]=\"[] | tuiFieldError | async\"\n />\n <tui-error\n *ngIf=\"isAddressWithoutCoordinates()\"\n error=\"\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u0432\u0430\u0440\u0438\u0430\u043D\u0442 \u0438\u0437 \u0441\u043F\u0438\u0441\u043A\u0430\"\n />\n @if (getAddressQualityWarning(); as addressQualityWarning) {\n <p class=\"text-xs text-tui-status-warning\">{{ addressQualityWarning }}</p>\n }\n </label>\n <div\n formGroupName=\"contact\"\n class=\"flex grow flex-col gap-2\"\n >\n <p class=\"w-full font-bold\">\u041A\u043E\u043D\u0442\u0430\u043A\u0442\u043D\u043E\u0435 \u043B\u0438\u0446\u043E:</p>\n <label tuiLabel>\n \u0424.\u0418.\u041E.\n <tui-input formControlName=\"name\">\n \u0424.\u0418.\u041E.\n <sc-suggestion-field\n *tuiDataList\n [type]=\"suggestionType.fio\"\n />\n </tui-input>\n <tui-error\n formControlName=\"name\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n <label tuiLabel>\n \u0422\u0435\u043B\u0435\u0444\u043E\u043D\n <tui-textfield>\n <input\n formControlName=\"phone\"\n tuiInputPhoneInternational\n [countrySearch]=\"true\"\n [countries]=\"(countries | tuiSortCountries | async) || []\"\n autocomplete=\"phone\"\n />\n </tui-textfield>\n <tui-error\n formControlName=\"phone\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n <label tuiLabel>\n \u0410\u0434\u0440\u0435\u0441 \u044D\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u043D\u043E\u0439 \u043F\u043E\u0447\u0442\u044B\n <tui-input formControlName=\"email\">\n <input\n tuiTextfieldLegacy\n type=\"email\"\n />\n \u0410\u0434\u0440\u0435\u0441 \u044D\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u043D\u043E\u0439 \u043F\u043E\u0447\u0442\u044B\n <sc-suggestion-field\n *tuiDataList\n [type]=\"suggestionType.email\"\n />\n </tui-input>\n <tui-error\n formControlName=\"email\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n <label tuiLabel>\n \u0414\u043E\u043B\u0436\u043D\u043E\u0441\u0442\u044C\n <tui-input formControlName=\"position\"> \u0414\u043E\u043B\u0436\u043D\u043E\u0441\u0442\u044C </tui-input>\n <tui-error\n formControlName=\"position\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n </div>\n <div class=\"flex justify-center gap-8\">\n <button\n tuiButton\n (click)=\"context.$implicit.complete()\"\n type=\"button\"\n [iconStart]=\"isMobile ? '@tui.x' : '@tui.x'\"\n appearance=\"secondary\"\n >\n \u041E\u0442\u043C\u0435\u043D\u0430\n </button>\n <button\n tuiButton\n [iconStart]=\"isMobile ? '@tui.save' : '@tui.save'\"\n [disabled]=\"form.invalid\"\n [loading]=\"!!(loading$ | async)\"\n type=\"submit\"\n >\n \u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C\n </button>\n </div>\n </form>\n\n <div\n class=\"absolute -z-10 flex size-full md:w-1/2\"\n [ngClass]=\"{ 'z-0 relative': addressPlacemark }\"\n >\n <div\n class=\"flex-auto\"\n [ngClass]=\"{ 'pointer-events-none opacity-50': form.controls.coordinates.invalid }\"\n >\n <ya-map\n [zoom]=\"11\"\n [state]=\"{ controls: [] }\"\n (ready)=\"onMapReadyHandle($event)\"\n [options]=\"options\"\n />\n </div>\n </div>\n </div>\n} @else {\n @let helpContacts = userHelpContacts$ | async;\n\n @if (helpContacts && helpContacts.length) {\n <tui-push\n type=\"\u0427\u0442\u043E\u0431\u044B \u0434\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0430\u0434\u0440\u0435\u0441 \u0434\u043E\u0441\u0442\u0430\u0432\u043A\u0438, \u0441\u0432\u044F\u0436\u0438\u0442\u0435\u0441\u044C \u0441 \u043D\u0430\u043C\u0438\"\n class=\"!w-auto\"\n >\n <tui-icon icon=\"@tui.message-square\" />\n <sc-manager-card [manager]=\"helpContacts[0]\" />\n </tui-push>\n }\n}\n" }]
263
+ args: [{ selector: 'sc-add-delivery-address-dialog', changeDetection: ChangeDetectionStrategy.OnPush, template: "@let isEnabledAddDeliveryAddress = isDefaultCountry | async;\n\n@if (isEnabledAddDeliveryAddress) {\n <div class=\"relative flex flex-col gap-3 md:flex-row\">\n <form\n [formGroup]=\"form\"\n (ngSubmit)=\"onSubmit$.next()\"\n class=\"flex w-full flex-col gap-3\"\n >\n <label tuiLabel>\n \u0410\u0434\u0440\u0435\u0441 \u0434\u043E\u0441\u0442\u0430\u0432\u043A\u0438\n <tui-input\n [pseudoInvalid]=\"isAddressWithoutCoordinates() || null\"\n [tuiTextfieldAppearance]=\"getAddressAppearance()\"\n formControlName=\"address\"\n >\n \u0410\u0434\u0440\u0435\u0441 \u0434\u043E\u0441\u0442\u0430\u0432\u043A\u0438\n <sc-suggestion-field\n *tuiDataList\n [type]=\"suggestionType.address\"\n (selectedClick)=\"onSelectedAddress($event)\"\n />\n <input\n tuiTextfieldLegacy\n autocomplete=\"new-password\"\n />\n </tui-input>\n <tui-error\n formControlName=\"address\"\n [error]=\"[] | tuiFieldError | async\"\n />\n <tui-error\n *ngIf=\"isAddressWithoutCoordinates()\"\n error=\"\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u0432\u0430\u0440\u0438\u0430\u043D\u0442 \u0438\u0437 \u0441\u043F\u0438\u0441\u043A\u0430\"\n />\n @if (getAddressQualityWarning(); as addressQualityWarning) {\n <p class=\"text-xs text-tui-status-warning\">{{ addressQualityWarning }}</p>\n }\n </label>\n <div\n formGroupName=\"contact\"\n class=\"flex grow flex-col gap-2\"\n >\n <p class=\"w-full font-bold\">\u041A\u043E\u043D\u0442\u0430\u043A\u0442\u043D\u043E\u0435 \u043B\u0438\u0446\u043E:</p>\n <label tuiLabel>\n \u0424.\u0418.\u041E.\n <tui-input formControlName=\"name\">\n \u0424.\u0418.\u041E.\n <sc-suggestion-field\n *tuiDataList\n [type]=\"suggestionType.fio\"\n />\n </tui-input>\n <tui-error\n formControlName=\"name\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n <label tuiLabel>\n \u0422\u0435\u043B\u0435\u0444\u043E\u043D\n <tui-textfield>\n <input\n formControlName=\"phone\"\n tuiInputPhoneInternational\n [countrySearch]=\"true\"\n [countries]=\"(countries | tuiSortCountries | async) || []\"\n autocomplete=\"phone\"\n />\n </tui-textfield>\n <tui-error\n formControlName=\"phone\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n <label tuiLabel>\n \u0410\u0434\u0440\u0435\u0441 \u044D\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u043D\u043E\u0439 \u043F\u043E\u0447\u0442\u044B\n <tui-input formControlName=\"email\">\n <input\n tuiTextfieldLegacy\n type=\"email\"\n />\n \u0410\u0434\u0440\u0435\u0441 \u044D\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u043D\u043E\u0439 \u043F\u043E\u0447\u0442\u044B\n <sc-suggestion-field\n *tuiDataList\n [type]=\"suggestionType.email\"\n />\n </tui-input>\n <tui-error\n formControlName=\"email\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n <label tuiLabel>\n \u0414\u043E\u043B\u0436\u043D\u043E\u0441\u0442\u044C\n <tui-input formControlName=\"position\"> \u0414\u043E\u043B\u0436\u043D\u043E\u0441\u0442\u044C </tui-input>\n <tui-error\n formControlName=\"position\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n </div>\n <div class=\"flex justify-center gap-8\">\n <button\n tuiButton\n (click)=\"context.$implicit.complete()\"\n type=\"button\"\n [iconStart]=\"isMobile ? '@tui.x' : '@tui.x'\"\n appearance=\"secondary\"\n >\n \u041E\u0442\u043C\u0435\u043D\u0430\n </button>\n <button\n tuiButton\n [iconStart]=\"isMobile ? '@tui.save' : '@tui.save'\"\n [disabled]=\"form.invalid\"\n [loading]=\"!!(loading$ | async)\"\n type=\"submit\"\n >\n \u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C\n </button>\n </div>\n </form>\n\n <div\n class=\"absolute -z-10 flex size-full md:w-1/2\"\n [ngClass]=\"{ 'z-0 relative': addressPlacemark }\"\n >\n <div\n class=\"flex-auto\"\n [ngClass]=\"{ 'pointer-events-none opacity-50': form.controls.coordinates.invalid }\"\n >\n <ya-map\n [zoom]=\"11\"\n [state]=\"{ controls: [] }\"\n (ready)=\"onMapReadyHandle($event)\"\n [options]=\"options\"\n />\n </div>\n </div>\n </div>\n} @else {\n @let helpContacts = userHelpContacts$ | async;\n\n @if (helpContacts && helpContacts.length) {\n <tui-push\n type=\"\u0427\u0442\u043E\u0431\u044B \u0434\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0430\u0434\u0440\u0435\u0441 \u0434\u043E\u0441\u0442\u0430\u0432\u043A\u0438, \u0441\u0432\u044F\u0436\u0438\u0442\u0435\u0441\u044C \u0441 \u043D\u0430\u043C\u0438\"\n class=\"!w-auto\"\n >\n <tui-icon icon=\"@tui.message-square\" />\n <sc-manager-card [manager]=\"helpContacts[0]\" />\n </tui-push>\n }\n}\n" }]
257
264
  }], ctorParameters: () => [{ type: i1.ScDeliveryAddressService }, { type: i1.ScUserMetrikaService }, { type: undefined, decorators: [{
258
265
  type: Inject,
259
266
  args: [POLYMORPHEUS_CONTEXT]
260
267
  }] }, { type: i1.ScConvertersService }] });
261
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtYWRkLWRlbGl2ZXJ5LWFkZHJlc3MtZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9kZWxpdmVyeS1hZGRyZXNzL2FkZC1kZWxpdmVyeS1hZGRyZXNzLWRpYWxvZy9zYy1hZGQtZGVsaXZlcnktYWRkcmVzcy1kaWFsb2cuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL2RlbGl2ZXJ5LWFkZHJlc3MvYWRkLWRlbGl2ZXJ5LWFkZHJlc3MtZGlhbG9nL3NjLWFkZC1kZWxpdmVyeS1hZGRyZXNzLWRpYWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxrRkFBa0Y7QUFFbEYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxFQUFpQix1QkFBdUIsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUcsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEUsT0FBTyxFQVFILGlCQUFpQixFQUNqQixjQUFjLEVBRWQsc0JBQXNCLEdBRXpCLE1BQU0sd0JBQXdCLENBQUM7QUFDaEMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUc5QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUU5RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDakQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFjLEVBQUUsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFB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QVcsRUFBRSxFQUFFO1NBQ2xCLEVBQ0Q7WUFDSSxNQUFNLEVBQUUsU0FBUztZQUNqQixTQUFTLEVBQUUsSUFBSTtTQUNsQixDQUNKLENBQUM7UUFFRixTQUFTLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsR0FBRyxFQUFFO1lBQ2pDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFFLENBQUM7WUFFaEUsSUFBSSxLQUFLLEVBQUUsQ0FBQztnQkFDUixJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsY0FBYyxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDeEYsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxTQUFTLENBQUM7SUFDckIsQ0FBQzsrR0EzUlEsbUNBQW1DLDhGQWdKaEMsb0JBQW9CO21HQWhKdkIsbUNBQW1DLHNFQ3pDaEQscXNOQXdKQTs7NEZEL0dhLG1DQUFtQztrQkFML0MsU0FBUzsrQkFDSSxnQ0FBZ0MsbUJBRXpCLHVCQUF1QixDQUFDLE1BQU07OzBCQWtKMUMsTUFBTTsyQkFBQyxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvdW5ib3VuZC1tZXRob2QsbG9kYXNoL3ByZWZlci1sb2Rhc2gtbWV0aG9kICovXG5cbmltcG9ydCB7IEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRGVzdHJveVJlZiwgSW5qZWN0LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge1xuICAgIFNjQ29udmVydGVyc1NlcnZpY2UsXG4gICAgU2NEZWxpdmVyeUFkZHJlc3NTZXJ2aWNlLFxuICAgIFNjSUFwaUVycm9yUmVzcG9uc2UsXG4gICAgU2NJRGVsaXZlcnlBZGRyZXNzLFxuICAgIFNjSURlbGl2ZXJ5QWRkcmVzc09uRGF0YUNyZWF0ZSxcbiAgICBTY0lPcmdDb250YWN0LFxuICAgIFNjSVN1Z2dlc3Rpb25BZGRyZXNzLFxuICAgIFNjSVN1Z2dlc3Rpb25UeXBlLFxuICAgIFNjTnVtYmVySGVscGVyLFxuICAgIFNjU3VnZ2VzdGlvbixcbiAgICBTY1VzZXJNZXRyaWthR29hbHNFbnVtLFxuICAgIFNjVXNlck1ldHJpa2FTZXJ2aWNlLFxufSBmcm9tICdAc25hYmNlbnRyL2NsaWVudC1jb3JlJztcbmltcG9ydCB7IFRVSV9JU19NT0JJTEUgfSBmcm9tICdAdGFpZ2EtdWkvY2RrJztcbmltcG9ydCB7IFR1aURpYWxvZ0NvbnRleHQgfSBmcm9tICdAdGFpZ2EtdWkvY29yZSc7XG5pbXBvcnQgeyBUdWlDb3VudHJ5SXNvQ29kZSB9IGZyb20gJ0B0YWlnYS11aS9pMThuJztcbmltcG9ydCB7IFBPTFlNT1JQSEVVU19DT05URVhUIH0gZnJvbSAnQHRhaWdhLXVpL3BvbHltb3JwaGV1cyc7XG5pbXBvcnQgeyBZYVJlYWR5RXZlbnQgfSBmcm9tICdhbmd1bGFyOC15YW5kZXgtbWFwcyc7XG5pbXBvcnQgeyBnZXRDb3VudHJpZXMgfSBmcm9tICdsaWJwaG9uZW51bWJlci1qcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBmaWx0ZXIsIG1hcCwgT2JzZXJ2YWJsZSwgb2YsIHNoYXJlLCBzdGFydFdpdGgsIFN1YmplY3QsIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFNjQWRkcmVzc1F1YWxpdHlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9hZGRyZXNzLXF1YWxpdHkvc2MtYWRkcmVzcy1xdWFsaXR5LnNlcnZpY2UnO1xuaW1wb3J0IHsgSVNfREVGQVVMVF9DT1VOVFJZIH0gZnJvbSAnLi4vLi4vcHJvdmlkZXJzJztcbmltcG9ydCB7IFNjSGVscE5vdGlmaWNhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcyc7XG5pbXBvcnQgeyBwaG9uZVZhbGlkYXRvciB9IGZyb20gJy4uLy4uL3ZhbGlkYXRvcnMvc2MtcGhvbmUtdmFsaWRhdG9yJztcblxuLyoqXG4gKiDQmtC+0LzQv9C+0L3QtdC90YIg0LTQvtCx0LDQstC70LXQvdC40Y8g0LDQtNGA0LXRgdCwINC00L7RgdGC0LDQstC60LguXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnc2MtYWRkLWRlbGl2ZXJ5LWFkZHJlc3MtZGlhbG9nJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc2MtYWRkLWRlbGl2ZXJ5LWFkZHJlc3MtZGlhbG9nLmNvbXBvbmVudC5odG1sJyxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgU2NBZGREZWxpdmVyeUFkZHJlc3NEaWFsb2dDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgICAvKipcbiAgICAgKiDQodGB0YvQu9C60LAg0LTQu9GPINCw0LLRgtC+0LzQsNGC0LjRh9C10YHQutC+0LPQviDRg9C/0YDQsNCy0LvQtdC90LjRjyDRg9C90LjRh9GC0L7QttC10L3QuNC10Lwg0LfQsNCy0LjRgdC40LzQvtGB0YLQtdC5LlxuICAgICAqL1xuICAgIHByaXZhdGUgZGVzdHJveVJlZjogRGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcblxuICAgIC8qKlxuICAgICAqINCf0YDQuNC30L3QsNC6INGC0L7Qs9C+LCDQvtGC0L7QsdGA0LDQttCw0LXRgtGB0Y8g0Y3RgtC+0YIg0LrQvtC80L/QvtC90LXQvdGCINC90LAg0LzQvtCx0LjQu9GM0L3QvtC8INGD0YHRgtGA0L7QudGB0YLQstC1INC40LvQuCDQvdC10YIuXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IGlzTW9iaWxlOiBib29sZWFuID0gaW5qZWN0KFRVSV9JU19NT0JJTEUpO1xuXG4gICAgLyoqXG4gICAgICog0J/QtdGA0LXRh9C40YHQu9C10L3QuNC1INGC0LjQv9C+0LIg0L/QvtC00YHQutCw0LfQvtC6LlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBzdWdnZXN0aW9uVHlwZTogdHlwZW9mIFNjSVN1Z2dlc3Rpb25UeXBlID0gU2NJU3VnZ2VzdGlvblR5cGU7XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgU3ViamVjdH0g0YHQvtCx0YvRgtC40Y8g0L7RgtC/0YDQsNCy0LrQuCDRhNC+0YDQvNGLLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBvblN1Ym1pdCQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgLyoqXG4gICAgICog0JrQvtC+0YDQtNC40L3QsNGC0Ysg0YbQtdC90YLRgNCwINC60LDRgNGC0Ysg0L/QviDRg9C80L7Qu9GH0LDQvdC40Y4uXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IGRlZmF1bHRDZW50ZXJNYXA6IG51bWJlcltdID0gWzU3LjAwMDM1MywgNDAuOTczOTNdO1xuXG4gICAgLyoqXG4gICAgICog0JzQsNGB0YjRgtCw0LEg0LrQsNGA0YLRiyDQv9C+INGD0LzQvtC70YfQsNC90LjRji5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgZGVmYXVsdFpvb21NYXA6IG51bWJlciA9IDExO1xuXG4gICAgLyoqXG4gICAgICoge0BsaW5rIE9ic2VydmFibGV9INC00LDQvdC90YvRhSDQutC+0L3RgtCw0LrRgtC+0LIg0LTQuyDQv9C+0LzQvtGJ0LguXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHVzZXJIZWxwQ29udGFjdHMkOiBPYnNlcnZhYmxlPFNjSU9yZ0NvbnRhY3RbXT4gPSBpbmplY3QoU2NIZWxwTm90aWZpY2F0aW9uU2VydmljZSkudXNlckhlbHBDb250YWN0cztcblxuICAgIC8qKlxuICAgICAqINCf0YDQuNC30L3QsNC6INGC0L7Qs9C+LCDRh9GC0L4g0YLQtdC60YPRidCw0Y8g0YHRgtGA0LDQvdCwINGP0LLQu9GP0LXRgtGB0Y8g0LLQtdGA0L3QvtC5LlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBpc0RlZmF1bHRDb3VudHJ5OiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gaW5qZWN0KElTX0RFRkFVTFRfQ09VTlRSWSk7XG5cbiAgICAvKipcbiAgICAgKiDQodC/0LjRgdC+0Log0YHRgtGA0LDQvS5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgY291bnRyaWVzOiByZWFkb25seSBUdWlDb3VudHJ5SXNvQ29kZVtdID0gZ2V0Q291bnRyaWVzKCk7XG5cbiAgICAvKipcbiAgICAgKiDQodC10YDQstC40YEt0YDQtdC10YHRgtGAINC60LDRh9C10YHRgtCy0LAg0LDQtNGA0LXRgdC+0LIsINCy0YvQsdGA0LDQvdC90YvRhSDQuNC3INC/0L7QtNGB0LrQsNC30L7Qui5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IGFkZHJlc3NRdWFsaXR5U2VydmljZSA9IGluamVjdChTY0FkZHJlc3NRdWFsaXR5U2VydmljZSk7XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgT2JzZXJ2YWJsZX0g0LfQsNC/0YDQvtGB0LAg0LTQsNC90L3Ri9GFINC00L7QsdCw0LLQu9C10L3QuNGPINCw0LTRgNC10YEg0LTQvtGB0YLQsNCy0LrQuC5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IHJlcXVlc3QkOiBPYnNlcnZhYmxlPFNjSURlbGl2ZXJ5QWRkcmVzcyB8IG51bGw+ID0gdGhpcy5vblN1Ym1pdCQucGlwZShcbiAgICAgICAgZmlsdGVyKCgpID0+IHRoaXMuZm9ybS52YWxpZCksXG4gICAgICAgIG1hcCgoKSA9PiB0aGlzLmZvcm0udmFsdWUgYXMgU2NJRGVsaXZlcnlBZGRyZXNzT25EYXRhQ3JlYXRlKSxcbiAgICAgICAgc3dpdGNoTWFwKCh2YWx1ZSkgPT5cbiAgICAgICAgICAgIHRoaXMuZGVsaXZlcnlBZGRyZXNzU2VydmljZS5jcmVhdGVEZWxpdmVyeUFkZHJlc3MkKHRoaXMuY29udmVydGVyc1NlcnZpY2UucmVtb3ZlTnVsbFJlY3Vyc2l2ZTxTY0lEZWxpdmVyeUFkZHJlc3NPbkRhdGFDcmVhdGU+KHZhbHVlKSkucGlwZShcbiAgICAgICAgICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuY29tcGxldGVXaXRoKCk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IHVua25vd24pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgSHR0cEVycm9yUmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgZXJyb3JzLCBtZXNzYWdlIH0gPSBlcnJvci5lcnJvciBhcyBTY0lBcGlFcnJvclJlc3BvbnNlO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3JzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmtleXMoZXJyb3JzKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHNlY3VyaXR5L2RldGVjdC1vYmplY3QtaW5qZWN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5nZXQoa2V5KT8uc2V0RXJyb3JzKHsgc2VydmVyUmVzcG9uc2U6IGVycm9yc1trZXldIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChtZXNzYWdlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLnNldEVycm9ycyh7IHNlcnZlclJlc3BvbnNlOiBbbWVzc2FnZV0gfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2Yoe30gYXMgU2NJRGVsaXZlcnlBZGRyZXNzKTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBzdGFydFdpdGgobnVsbClcbiAgICAgICAgICAgIClcbiAgICAgICAgKSxcbiAgICAgICAgc2hhcmUoKVxuICAgICk7XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgT2JzZXJ2YWJsZX0g0LjQt9C80LXQvdC10L3QuNGPINGB0L7RgdGC0L7Rj9C90LjRjyDQt9Cw0LPRgNGD0LfQutC4INC00LDQvdC90YvRhS5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgbG9hZGluZyQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLnJlcXVlc3QkLnBpcGUobWFwKChkYXRhKSA9PiBkYXRhID09PSBudWxsKSk7XG5cbiAgICAvKipcbiAgICAgKiDQk9GA0YPQv9C/0LAg0YEg0L/QvtC70Y/QvNC4INCw0LTRgNC10YHQvtCyLlxuICAgICAqL1xuICAgIHB1YmxpYyBhZGRyZXNzQ29udHJvbDogRm9ybUNvbnRyb2w8U2NJU3VnZ2VzdGlvbkFkZHJlc3MgfCBzdHJpbmcgfCBudWxsPiA9IG5ldyBGb3JtQ29udHJvbDxTY0lTdWdnZXN0aW9uQWRkcmVzcyB8IHN0cmluZyB8IG51bGw+KG51bGwsIFtcbiAgICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZCxcbiAgICAgICAgdGhpcy5hZGRyZXNzUXVhbGl0eVNlcnZpY2UudmFsaWRhdG9yLFxuICAgIF0pO1xuXG4gICAgLyoqXG4gICAgICog0J3QsNGB0YLRgNC+0LnQutC4INC60LDRgNGC0YsuXG4gICAgICovXG4gICAgcHVibGljIG9wdGlvbnM6IHltYXBzLklNYXBPcHRpb25zID0ge1xuICAgICAgICBhdXRvRml0VG9WaWV3cG9ydDogJ2Fsd2F5cycsXG4gICAgICAgIHlhbmRleE1hcERpc2FibGVQb2lJbnRlcmFjdGl2aXR5OiBmYWxzZSxcbiAgICAgICAgbWF4Wm9vbTogMTksXG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqINCk0L7RgNC80LAg0LTQu9GPINGB0L7Qt9C00LDQvdC40Y8g0LDQtNGA0LXRgdCwINC00L7RgdGC0LDQstC60LguXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IGZvcm0gPSBuZXcgRm9ybUdyb3VwKHtcbiAgICAgICAgYWRkcmVzczogdGhpcy5hZGRyZXNzQ29udHJvbCxcbiAgICAgICAgY29vcmRpbmF0ZXM6IG5ldyBGb3JtR3JvdXAoe1xuICAgICAgICAgICAgbGF0OiBuZXcgRm9ybUNvbnRyb2w8bnVtYmVyIHwgbnVsbD4obnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZCksXG4gICAgICAgICAgICBsb25nOiBuZXcgRm9ybUNvbnRyb2w8bnVtYmVyIHwgbnVsbD4obnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZCksXG4gICAgICAgIH0pLFxuICAgICAgICBjb250YWN0OiBuZXcgRm9ybUdyb3VwKHtcbiAgICAgICAgICAgIG5hbWU6IG5ldyBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPihudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcbiAgICAgICAgICAgIHBob25lOiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD4obnVsbCwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIHBob25lVmFsaWRhdG9yKCldKSxcbiAgICAgICAgICAgIGVtYWlsOiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD4obnVsbCwgVmFsaWRhdG9ycy5lbWFpbCksXG4gICAgICAgICAgICBwb3NpdGlvbjogbmV3IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+KG51bGwsIFZhbGlkYXRvcnMucmVxdWlyZWQpLFxuICAgICAgICB9KSxcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqINCi0L7Rh9C60LAg0LDQtNGA0LXRgdCwINC90LAg0LrQsNGA0YLQtS5cbiAgICAgKi9cbiAgICBwdWJsaWMgYWRkcmVzc1BsYWNlbWFyaz86IHltYXBzLlBsYWNlbWFyaztcblxuICAgIC8qKlxuICAgICAqINCv0L3QtNC10LrRgSDQutCw0YDRgtCwLlxuICAgICAqL1xuICAgIHB1YmxpYyB5YU1hcD86IHltYXBzLk1hcDtcblxuICAgIC8qKlxuICAgICAqINCY0L3QuNGG0LjQsNC70LjQt9C40YDRg9C10YIg0Y3QutC30LXQvNC/0LvRj9GAINC60LvQsNGB0YHQsCB7QGxpbmsgU2NBZGREZWxpdmVyeUFkZHJlc3NEaWFsb2dDb21wb25lbnR9LlxuICAgICAqXG4gICAgICogQHBhcmFtIGRlbGl2ZXJ5QWRkcmVzc1NlcnZpY2Ug0KHQtdGA0LLQuNGBINGA0LDQsdC+0YLRiyDRgSDQsNC00YDQtdGB0LDQvNC4INC00L7RgdGC0LDQstC60LguXG4gICAgICogQHBhcmFtIHVzZXJNZXRyaWthU2VydmljZSDQodC10YDQstC40YEg0LTQu9GPINGB0LHQvtGA0LAg0LzQtdGC0YDQuNC6INC+INC00LXQudGB0YLQstC40Y/RhSDQv9C+0LvRjNC30L7QstCw0YLQtdC70LXQuS5cbiAgICAgKiBAcGFyYW0gY29udGV4dCDQmtC+0L3RgtC10LrRgdGCINC00LjQsNC70L7Qs9C+0LLQvtCz0L4g0L7QutC90LAsINCyINC60L7RgtC+0YDQvtC8INC+0YLQutGA0YvRgiDQutC+0LzQv9C+0L3QtdC90YIuXG4gICAgICogQHBhcmFtIGNvbnZlcnRlcnNTZXJ2aWNlINCh0LXRgNCy0LjRgSDQutC+0L3QstC10YDRgtCw0YbQuNC4INC00LDQvdC90YvRhS5cbiAgICAgKi9cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgZGVsaXZlcnlBZGRyZXNzU2VydmljZTogU2NEZWxpdmVyeUFkZHJlc3NTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHVzZXJNZXRyaWthU2VydmljZTogU2NVc2VyTWV0cmlrYVNlcnZpY2UsXG4gICAgICAgIEBJbmplY3QoUE9MWU1PUlBIRVVTX0NPTlRFWFQpIHB1YmxpYyByZWFkb25seSBjb250ZXh0OiBUdWlEaWFsb2dDb250ZXh0PHZvaWQsIHZvaWQ+LFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGNvbnZlcnRlcnNTZXJ2aWNlOiBTY0NvbnZlcnRlcnNTZXJ2aWNlXG4gICAgKSB7fVxuXG4gICAgLyoqIEBpbmhlcml0ZG9jICovXG4gICAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy51c2VyTWV0cmlrYVNlcnZpY2UuZW1pdFVzZXJNZXRyaWthRXZlbnQoe1xuICAgICAgICAgICAgdGFyZ2V0OiBTY1VzZXJNZXRyaWthR29hbHNFbnVtLnVzZXJQcm9maWxlRGVsaXZlcnlBZGRyZXNzQWRkU2hvdyxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5hZGRyZXNzQ29udHJvbC52YWx1ZUNoYW5nZXMucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlR2VvQ29vcmRpbmF0ZXMoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0J7QsdGA0LDQsdC+0YLRh9C40Log0LfQsNCz0YDRg9C30LrQuCDQutCw0YDRgtGLINC90LAg0YHRgtGA0LDQvdC40YbQtS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB0YXJnZXQg0K3QutC30LXQvNC/0LvRj9GAINGG0LXQu9C10LLQvtCz0L4g0L7QsdGK0LXQutGC0LAuXG4gICAgICogQHBhcmFtIHRhcmdldC50YXJnZXQg0K3QutC30LXQvNC/0LvRj9GAINGG0LXQu9C10LLQvtCz0L4g0L7QsdGK0LXQutGC0LAuXG4gICAgICovXG4gICAgcHVibGljIG9uTWFwUmVhZHlIYW5kbGUoeyB0YXJnZXQgfTogWWFSZWFkeUV2ZW50PHltYXBzLk1hcD4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy55YU1hcCA9IHRhcmdldDtcblxuICAgICAgICBpZiAodGhpcy5hZGRyZXNzUGxhY2VtYXJrKSB7XG4gICAgICAgICAgICB0YXJnZXQuZ2VvT2JqZWN0cy5hZGQodGhpcy5hZGRyZXNzUGxhY2VtYXJrKTtcblxuICAgICAgICAgICAgY29uc3QgYm91bmRzID0gdGhpcy5hZGRyZXNzUGxhY2VtYXJrLmdlb21ldHJ5Py5nZXRCb3VuZHMoKTtcblxuICAgICAgICAgICAgaWYgKGJvdW5kcykge1xuICAgICAgICAgICAgICAgIHRhcmdldC5zZXRCb3VuZHMoYm91bmRzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCe0LHRgNCw0LHQvtGC0YfQuNC6INCy0YvQsdC+0YDQsCDQsNC00YDQtdGB0LAg0LTQvtGB0YLQsNCy0LrQuC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBzdWdnZXN0aW9uINCe0LHRitC10LrRgiDQv9C+0LTRgdC60LDQt9C60Lgg0LDRgNC10YHQsC5cbiAgICAgKi9cbiAgICBwdWJsaWMgb25TZWxlY3RlZEFkZHJlc3Moc3VnZ2VzdGlvbjogU2NTdWdnZXN0aW9uKTogdm9pZCB7XG4gICAgICAgIGlmICgnYWRkcmVzc1N0cmluZycgaW4gc3VnZ2VzdGlvbiAmJiBzdWdnZXN0aW9uLmdlb0Nvb3JkaW5hdGVzKSB7XG4gICAgICAgICAgICBjb25zdCBjb29yZHMgPSBbc3VnZ2VzdGlvbi5nZW9Db29yZGluYXRlcy5sYXQsIHN1Z2dlc3Rpb24uZ2VvQ29vcmRpbmF0ZXMubG9uZ10ubWFwKChjb29yZCkgPT4gU2NOdW1iZXJIZWxwZXIucm91bmRDb29yZGluYXRlKGNvb3JkKSk7XG5cbiAgICAgICAgICAgIHRoaXMuYWRkcmVzc1BsYWNlbWFyayA/Pz0gdGhpcy5jcmVhdGVQbGFjZW1hcmsoY29vcmRzKTtcblxuICAgICAgICAgICAgdGhpcy5zZXRHZW9Db29yZGluYXRlcyhjb29yZHMpO1xuXG4gICAgICAgICAgICBpZiAoIXRoaXMueWFNYXA/Lmdlb09iamVjdHMuZ2V0TGVuZ3RoKCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnlhTWFwPy5nZW9PYmplY3RzLmFkZCh0aGlzLmFkZHJlc3NQbGFjZW1hcmspO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBib3VuZHMgPSB0aGlzLmFkZHJlc3NQbGFjZW1hcmsuZ2VvbWV0cnk/LmdldEJvdW5kcygpO1xuXG4gICAgICAgICAgICBpZiAoYm91bmRzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy55YU1hcD8uc2V0Qm91bmRzKGJvdW5kcyk7XG4gICAgICAgICAgICAgICAgdGhpcy55YU1hcD8uc2V0Wm9vbSgxNyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQktC+0LfQstGA0LDRidCw0LXRgiDQv9GA0LjQt9C90LDQuiwg0YfRgtC+INCw0LTRgNC10YEg0LLQstC10LTRkdC9LCDQvdC+INCy0LDRgNC40LDQvdGCINGBINC60L7QvtGA0LTQuNC90LDRgtCw0LzQuCDQvdC1INCy0YvQsdGA0LDQvTog0L/QvtC0INC/0L7Qu9C10Lwg0L/QvtC60LDQt9GL0LLQsNC10YLRgdGPINC+0YjQuNCx0LrQsCDCq9CS0YvQsdC10YDQuNGC0LUg0LLQsNGA0LjQsNC90YIg0LjQtyDRgdC/0LjRgdC60LDCuy5cbiAgICAgKi9cbiAgICBwdWJsaWMgaXNBZGRyZXNzV2l0aG91dENvb3JkaW5hdGVzKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5hZGRyZXNzQ29udHJvbC52YWxpZCAmJiB0aGlzLmZvcm0uY29udHJvbHMuY29vcmRpbmF0ZXMuaW52YWxpZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQktC+0LfQstGA0LDRidCw0LXRgiDRgtC10LrRgdGCINC/0YDQtdC00YPQv9GA0LXQttC00LXQvdC40Y8g0L4g0L/QvtC70L3QvtGC0LUg0LLRi9Cx0YDQsNC90L3QvtCz0L4g0LDQtNGA0LXRgdCwINC00L7RgdGC0LDQstC60Lgg0LvQuNCx0L4gbnVsbCwg0LrQvtCz0LTQsCDQv9GA0LXQtNGD0L/RgNC10LbQtNC10L3QuNC1INC90LUg0YLRgNC10LHRg9C10YLRgdGPXG4gICAgICog0LjQu9C4INCy0LzQtdGB0YLQviDQvdC10LPQviDQv9C+0LrQsNC30LDQvdCwINC+0YjQuNCx0LrQsCDCq9CS0YvQsdC10YDQuNGC0LUg0LLQsNGA0LjQsNC90YIg0LjQtyDRgdC/0LjRgdC60LDCuy5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0QWRkcmVzc1F1YWxpdHlXYXJuaW5nKCk6IHN0cmluZyB8IG51bGwge1xuICAgICAgICByZXR1cm4gdGhpcy5pc0FkZHJlc3NXaXRob3V0Q29vcmRpbmF0ZXMoKSA/IG51bGwgOiB0aGlzLmFkZHJlc3NRdWFsaXR5U2VydmljZS5nZXRXYXJuaW5nTWVzc2FnZSh0aGlzLmFkZHJlc3NDb250cm9sKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQo9GB0YLQsNC90LDQstC70LjQstCw0LXRgiB7QGxpbmsgYWRkcmVzc1BsYWNlbWFya30g0YLQvtGH0LrRgyDQvdCwINC+0L/RgNC10LTQtdC70ZHQvdC90YvQtSDQutC+0L7RgNC00LjQvdCw0YLRiy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBjb29yZHMg0JrQvtC+0YDQtNC40L3QsNGC0Ysg0YLQvtGH0LrQuC5cbiAgICAgKi9cbiAgICBwcml2YXRlIHNldEdlb0Nvb3JkaW5hdGVzKGNvb3JkczogbnVtYmVyW10pOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuYWRkcmVzc1BsYWNlbWFyaykge1xuICAgICAgICAgICAgdGhpcy5hZGRyZXNzUGxhY2VtYXJrLmdlb21ldHJ5Py5zZXRDb29yZGluYXRlcyhjb29yZHMpO1xuXG4gICAgICAgICAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZSh7XG4gICAgICAgICAgICAgICAgY29vcmRpbmF0ZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgbGF0OiBjb29yZHNbMF0sXG4gICAgICAgICAgICAgICAgICAgIGxvbmc6IGNvb3Jkc1sxXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQo9GB0YLQsNC90LDQstC70LjQstCw0LXRgiB7QGxpbmsgYWRkcmVzc1BsYWNlbWFya30g0YLQvtGH0LrRgyDQvdCwINC+0L/RgNC10LTQtdC70ZHQvdC90YvQtSDQutC+0L7RgNC00LjQvdCw0YLRiy5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlbW92ZUdlb0Nvb3JkaW5hdGVzKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5hZGRyZXNzUGxhY2VtYXJrKSB7XG4gICAgICAgICAgICB0aGlzLnlhTWFwPy5nZW9PYmplY3RzLnJlbW92ZSh0aGlzLmFkZHJlc3NQbGFjZW1hcmspO1xuXG4gICAgICAgICAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZSh7XG4gICAgICAgICAgICAgICAgY29vcmRpbmF0ZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgbGF0OiBudWxsLFxuICAgICAgICAgICAgICAgICAgICBsb25nOiBudWxsLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgdGhpcy55YU1hcD8uc2V0Q2VudGVyKHRoaXMuZGVmYXVsdENlbnRlck1hcCk7XG4gICAgICAgICAgICB0aGlzLnlhTWFwPy5zZXRab29tKHRoaXMuZGVmYXVsdFpvb21NYXApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0KHQvtC30LTQsNGR0YIg0L7QsdGK0LXQutGCINGC0L7Rh9C60Lgg0Lgg0YPRgdGC0LDQvdCw0LLQu9C40LLQsNC10YIg0YHQvtCx0YvRgtC40Y8g0LTQu9GPINC90LXQs9C+LlxuICAgICAqXG4gICAgICogQHBhcmFtIGNvb3JkcyDQmtC+0L7RgNC00LjQvdCw0YLRiyDRgtC+0YfQutC4LlxuICAgICAqL1xuICAgIHByaXZhdGUgY3JlYXRlUGxhY2VtYXJrKGNvb3JkczogbnVtYmVyW10pOiB5bWFwcy5QbGFjZW1hcmsge1xuICAgICAgICBjb25zdCBwbGFjZW1hcmsgPSBuZXcgeW1hcHMuUGxhY2VtYXJrKFxuICAgICAgICAgICAgY29vcmRzLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGljb25DYXB0aW9uOiAnJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcHJlc2V0OiAnaXNsYW5kcycsXG4gICAgICAgICAgICAgICAgZHJhZ2dhYmxlOiB0cnVlLFxuICAgICAgICAgICAgfVxuICAgICAgICApO1xuXG4gICAgICAgIHBsYWNlbWFyay5ldmVudHMuYWRkKCdkcmFnZW5kJywgKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY29vcmQgPSB0aGlzLmFkZHJlc3NQbGFjZW1hcms/Lmdlb21ldHJ5Py5nZXRDb29yZGluYXRlcygpO1xuXG4gICAgICAgICAgICBpZiAoY29vcmQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldEdlb0Nvb3JkaW5hdGVzKGNvb3JkLm1hcCgodmFsdWUpID0+IFNjTnVtYmVySGVscGVyLnJvdW5kQ29vcmRpbmF0ZSh2YWx1ZSkpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHBsYWNlbWFyaztcbiAgICB9XG59XG4iLCJAbGV0IGlzRW5hYmxlZEFkZERlbGl2ZXJ5QWRkcmVzcyA9IGlzRGVmYXVsdENvdW50cnkgfCBhc3luYztcblxuQGlmIChpc0VuYWJsZWRBZGREZWxpdmVyeUFkZHJlc3MpIHtcbiAgICA8ZGl2IGNsYXNzPVwicmVsYXRpdmUgZmxleCBmbGV4LWNvbCBnYXAtMyBtZDpmbGV4LXJvd1wiPlxuICAgICAgICA8Zm9ybVxuICAgICAgICAgICAgW2Zvcm1Hcm91cF09XCJmb3JtXCJcbiAgICAgICAgICAgIChuZ1N1Ym1pdCk9XCJvblN1Ym1pdCQubmV4dCgpXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZmxleCB3LWZ1bGwgZmxleC1jb2wgZ2FwLTNcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8bGFiZWwgdHVpTGFiZWw+XG4gICAgICAgICAgICAgICAg0JDQtNGA0LXRgSDQtNC+0YHRgtCw0LLQutC4XG4gICAgICAgICAgICAgICAgPHR1aS1pbnB1dFxuICAgICAgICAgICAgICAgICAgICBbcHNldWRvSW52YWxpZF09XCJpc0FkZHJlc3NXaXRob3V0Q29vcmRpbmF0ZXMoKSB8fCBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiYWRkcmVzc1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICDQkNC00YDQtdGBINC00L7RgdGC0LDQstC60LhcbiAgICAgICAgICAgICAgICAgICAgPHNjLXN1Z2dlc3Rpb24tZmllbGRcbiAgICAgICAgICAgICAgICAgICAgICAgICp0dWlEYXRhTGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgW3R5cGVdPVwic3VnZ2VzdGlvblR5cGUuYWRkcmVzc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAoc2VsZWN0ZWRDbGljayk9XCJvblNlbGVjdGVkQWRkcmVzcygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICB0dWlUZXh0ZmllbGRMZWdhY3lcbiAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm5ldy1wYXNzd29yZFwiXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC90dWktaW5wdXQ+XG4gICAgICAgICAgICAgICAgPHR1aS1lcnJvclxuICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJhZGRyZXNzXCJcbiAgICAgICAgICAgICAgICAgICAgW2Vycm9yXT1cIltdIHwgdHVpRmllbGRFcnJvciB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDx0dWktZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpc0FkZHJlc3NXaXRob3V0Q29vcmRpbmF0ZXMoKVwiXG4gICAgICAgICAgICAgICAgICAgIGVycm9yPVwi0JLRi9Cx0LXRgNC40YLQtSDQstCw0YDQuNCw0L3RgiDQuNC3INGB0L/QuNGB0LrQsFwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICBAaWYgKGdldEFkZHJlc3NRdWFsaXR5V2FybmluZygpOyBhcyBhZGRyZXNzUXVhbGl0eVdhcm5pbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ0ZXh0LXhzIHRleHQtdHVpLXN0YXR1cy13YXJuaW5nXCI+e3sgYWRkcmVzc1F1YWxpdHlXYXJuaW5nIH19PC9wPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwTmFtZT1cImNvbnRhY3RcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZmxleCBncm93IGZsZXgtY29sIGdhcC0yXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInctZnVsbCBmb250LWJvbGRcIj7QmtC+0L3RgtCw0LrRgtC90L7QtSDQu9C40YbQvjo8L3A+XG4gICAgICAgICAgICAgICAgPGxhYmVsIHR1aUxhYmVsPlxuICAgICAgICAgICAgICAgICAgICDQpC7QmC7Qni5cbiAgICAgICAgICAgICAgICAgICAgPHR1aS1pbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJuYW1lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICDQpC7QmC7Qni5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzYy1zdWdnZXN0aW9uLWZpZWxkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKnR1aURhdGFMaXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3R5cGVdPVwic3VnZ2VzdGlvblR5cGUuZmlvXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvdHVpLWlucHV0PlxuICAgICAgICAgICAgICAgICAgICA8dHVpLWVycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJuYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtlcnJvcl09XCJbXSB8IHR1aUZpZWxkRXJyb3IgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICA8bGFiZWwgdHVpTGFiZWw+XG4gICAgICAgICAgICAgICAgICAgINCi0LXQu9C10YTQvtC9XG4gICAgICAgICAgICAgICAgICAgIDx0dWktdGV4dGZpZWxkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicGhvbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR1aUlucHV0UGhvbmVJbnRlcm5hdGlvbmFsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvdW50cnlTZWFyY2hdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvdW50cmllc109XCIoY291bnRyaWVzIHwgdHVpU29ydENvdW50cmllcyB8IGFzeW5jKSB8fCBbXVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwicGhvbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPC90dWktdGV4dGZpZWxkPlxuICAgICAgICAgICAgICAgICAgICA8dHVpLWVycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJwaG9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZXJyb3JdPVwiW10gfCB0dWlGaWVsZEVycm9yIHwgYXN5bmNcIlxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPGxhYmVsIHR1aUxhYmVsPlxuICAgICAgICAgICAgICAgICAgICDQkNC00YDQtdGBINGN0LvQtdC60YLRgNC+0L3QvdC+0Lkg0L/QvtGH0YLRi1xuICAgICAgICAgICAgICAgICAgICA8dHVpLWlucHV0IGZvcm1Db250cm9sTmFtZT1cImVtYWlsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0dWlUZXh0ZmllbGRMZWdhY3lcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiZW1haWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgINCQ0LTRgNC10YEg0Y3Qu9C10LrRgtGA0L7QvdC90L7QuSDQv9C+0YfRgtGLXG4gICAgICAgICAgICAgICAgICAgICAgICA8c2Mtc3VnZ2VzdGlvbi1maWVsZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICp0dWlEYXRhTGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0eXBlXT1cInN1Z2dlc3Rpb25UeXBlLmVtYWlsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvdHVpLWlucHV0PlxuICAgICAgICAgICAgICAgICAgICA8dHVpLWVycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJlbWFpbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZXJyb3JdPVwiW10gfCB0dWlGaWVsZEVycm9yIHwgYXN5bmNcIlxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPGxhYmVsIHR1aUxhYmVsPlxuICAgICAgICAgICAgICAgICAgICDQlNC+0LvQttC90L7RgdGC0YxcbiAgICAgICAgICAgICAgICAgICAgPHR1aS1pbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJwb3NpdGlvblwiPiDQlNC+0LvQttC90L7RgdGC0YwgPC90dWktaW5wdXQ+XG4gICAgICAgICAgICAgICAgICAgIDx0dWktZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInBvc2l0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtlcnJvcl09XCJbXSB8IHR1aUZpZWxkRXJyb3IgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1jZW50ZXIgZ2FwLThcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIHR1aUJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY29udGV4dC4kaW1wbGljaXQuY29tcGxldGUoKVwiXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICBbaWNvblN0YXJ0XT1cImlzTW9iaWxlID8gJ0B0dWkueCcgOiAnQHR1aS54J1wiXG4gICAgICAgICAgICAgICAgICAgIGFwcGVhcmFuY2U9XCJzZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAg0J7RgtC80LXQvdCwXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICB0dWlCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgW2ljb25TdGFydF09XCJpc01vYmlsZSA/ICdAdHVpLnNhdmUnIDogJ0B0dWkuc2F2ZSdcIlxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZm9ybS5pbnZhbGlkXCJcbiAgICAgICAgICAgICAgICAgICAgW2xvYWRpbmddPVwiISEobG9hZGluZyQgfCBhc3luYylcIlxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgINCU0L7QsdCw0LLQuNGC0YxcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Zvcm0+XG5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJhYnNvbHV0ZSAtei0xMCBmbGV4IHNpemUtZnVsbCBtZDp3LTEvMlwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7ICd6LTAgcmVsYXRpdmUnOiBhZGRyZXNzUGxhY2VtYXJrIH1cIlxuICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmbGV4LWF1dG9cIlxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ3BvaW50ZXItZXZlbnRzLW5vbmUgb3BhY2l0eS01MCc6IGZvcm0uY29udHJvbHMuY29vcmRpbmF0ZXMuaW52YWxpZCB9XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8eWEtbWFwXG4gICAgICAgICAgICAgICAgICAgIFt6b29tXT1cIjExXCJcbiAgICAgICAgICAgICAgICAgICAgW3N0YXRlXT1cInsgY29udHJvbHM6IFtdIH1cIlxuICAgICAgICAgICAgICAgICAgICAocmVhZHkpPVwib25NYXBSZWFkeUhhbmRsZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwib3B0aW9uc1wiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbn0gQGVsc2Uge1xuICAgIEBsZXQgaGVscENvbnRhY3RzID0gdXNlckhlbHBDb250YWN0cyQgfCBhc3luYztcblxuICAgIEBpZiAoaGVscENvbnRhY3RzICYmIGhlbHBDb250YWN0cy5sZW5ndGgpIHtcbiAgICAgICAgPHR1aS1wdXNoXG4gICAgICAgICAgICB0eXBlPVwi0KfRgtC+0LHRiyDQtNC+0LHQsNCy0LjRgtGMINCw0LTRgNC10YEg0LTQvtGB0YLQsNCy0LrQuCwg0YHQstGP0LbQuNGC0LXRgdGMINGBINC90LDQvNC4XCJcbiAgICAgICAgICAgIGNsYXNzPVwiIXctYXV0b1wiXG4gICAgICAgID5cbiAgICAgICAgICAgIDx0dWktaWNvbiBpY29uPVwiQHR1aS5tZXNzYWdlLXNxdWFyZVwiIC8+XG4gICAgICAgICAgICA8c2MtbWFuYWdlci1jYXJkIFttYW5hZ2VyXT1cImhlbHBDb250YWN0c1swXVwiIC8+XG4gICAgICAgIDwvdHVpLXB1c2g+XG4gICAgfVxufVxuIl19
268
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtYWRkLWRlbGl2ZXJ5LWFkZHJlc3MtZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9kZWxpdmVyeS1hZGRyZXNzL2FkZC1kZWxpdmVyeS1hZGRyZXNzLWRpYWxvZy9zYy1hZGQtZGVsaXZlcnktYWRkcmVzcy1kaWFsb2cuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL2RlbGl2ZXJ5LWFkZHJlc3MvYWRkLWRlbGl2ZXJ5LWFkZHJlc3MtZGlhbG9nL3NjLWFkZC1kZWxpdmVyeS1hZGRyZXNzLWRpYWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxrRkFBa0Y7QUFFbEYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxFQUFpQix1QkFBdUIsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUcsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEUsT0FBTyxFQVFILGlCQUFpQixFQUNqQixjQUFjLEVBRWQsc0JBQXNCLEdBRXpCLE1BQU0sd0JBQXdCLENBQUM7QUFDaEMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUc5QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUU5RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDakQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFjLEVBQUUsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFB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QUMsY0FBYyxDQUFDLENBQUM7UUFDN0MsQ0FBQztJQUNMLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ssZUFBZSxDQUFDLE1BQWdCO1FBQ3BDLE1BQU0sU0FBUyxHQUFHLElBQUksS0FBSyxDQUFDLFNBQVMsQ0FDakMsTUFBTSxFQUNOO1lBQ0ksV0FBVyxFQUFFLEVBQUU7U0FDbEIsRUFDRDtZQUNJLE1BQU0sRUFBRSxTQUFTO1lBQ2pCLFNBQVMsRUFBRSxJQUFJO1NBQ2xCLENBQ0osQ0FBQztRQUVGLFNBQVMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxHQUFHLEVBQUU7WUFDakMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLFFBQVEsRUFBRSxjQUFjLEVBQUUsQ0FBQztZQUVoRSxJQUFJLEtBQUssRUFBRSxDQUFDO2dCQUNSLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN4RixDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLFNBQVMsQ0FBQztJQUNyQixDQUFDOytHQW5TUSxtQ0FBbUMsOEZBZ0poQyxvQkFBb0I7bUdBaEp2QixtQ0FBbUMsc0VDekNoRCw4d05BeUpBOzs0RkRoSGEsbUNBQW1DO2tCQUwvQyxTQUFTOytCQUNJLGdDQUFnQyxtQkFFekIsdUJBQXVCLENBQUMsTUFBTTs7MEJBa0oxQyxNQUFNOzJCQUFDLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC91bmJvdW5kLW1ldGhvZCxsb2Rhc2gvcHJlZmVyLWxvZGFzaC1tZXRob2QgKi9cblxuaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBEZXN0cm95UmVmLCBJbmplY3QsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gICAgU2NDb252ZXJ0ZXJzU2VydmljZSxcbiAgICBTY0RlbGl2ZXJ5QWRkcmVzc1NlcnZpY2UsXG4gICAgU2NJQXBpRXJyb3JSZXNwb25zZSxcbiAgICBTY0lEZWxpdmVyeUFkZHJlc3MsXG4gICAgU2NJRGVsaXZlcnlBZGRyZXNzT25EYXRhQ3JlYXRlLFxuICAgIFNjSU9yZ0NvbnRhY3QsXG4gICAgU2NJU3VnZ2VzdGlvbkFkZHJlc3MsXG4gICAgU2NJU3VnZ2VzdGlvblR5cGUsXG4gICAgU2NOdW1iZXJIZWxwZXIsXG4gICAgU2NTdWdnZXN0aW9uLFxuICAgIFNjVXNlck1ldHJpa2FHb2Fsc0VudW0sXG4gICAgU2NVc2VyTWV0cmlrYVNlcnZpY2UsXG59IGZyb20gJ0BzbmFiY2VudHIvY2xpZW50LWNvcmUnO1xuaW1wb3J0IHsgVFVJX0lTX01PQklMRSB9IGZyb20gJ0B0YWlnYS11aS9jZGsnO1xuaW1wb3J0IHsgVHVpRGlhbG9nQ29udGV4dCB9IGZyb20gJ0B0YWlnYS11aS9jb3JlJztcbmltcG9ydCB7IFR1aUNvdW50cnlJc29Db2RlIH0gZnJvbSAnQHRhaWdhLXVpL2kxOG4nO1xuaW1wb3J0IHsgUE9MWU1PUlBIRVVTX0NPTlRFWFQgfSBmcm9tICdAdGFpZ2EtdWkvcG9seW1vcnBoZXVzJztcbmltcG9ydCB7IFlhUmVhZHlFdmVudCB9IGZyb20gJ2FuZ3VsYXI4LXlhbmRleC1tYXBzJztcbmltcG9ydCB7IGdldENvdW50cmllcyB9IGZyb20gJ2xpYnBob25lbnVtYmVyLWpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGZpbHRlciwgbWFwLCBPYnNlcnZhYmxlLCBvZiwgc2hhcmUsIHN0YXJ0V2l0aCwgU3ViamVjdCwgc3dpdGNoTWFwLCB0YXAgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgU2NBZGRyZXNzUXVhbGl0eVNlcnZpY2UgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL2FkZHJlc3MtcXVhbGl0eS9zYy1hZGRyZXNzLXF1YWxpdHkuc2VydmljZSc7XG5pbXBvcnQgeyBJU19ERUZBVUxUX0NPVU5UUlkgfSBmcm9tICcuLi8uLi9wcm92aWRlcnMnO1xuaW1wb3J0IHsgU2NIZWxwTm90aWZpY2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzJztcbmltcG9ydCB7IHBob25lVmFsaWRhdG9yIH0gZnJvbSAnLi4vLi4vdmFsaWRhdG9ycy9zYy1waG9uZS12YWxpZGF0b3InO1xuXG4vKipcbiAqINCa0L7QvNC/0L7QvdC10L3RgiDQtNC+0LHQsNCy0LvQtdC90LjRjyDQsNC00YDQtdGB0LAg0LTQvtGB0YLQsNCy0LrQuC5cbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdzYy1hZGQtZGVsaXZlcnktYWRkcmVzcy1kaWFsb2cnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9zYy1hZGQtZGVsaXZlcnktYWRkcmVzcy1kaWFsb2cuY29tcG9uZW50Lmh0bWwnLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBTY0FkZERlbGl2ZXJ5QWRkcmVzc0RpYWxvZ0NvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuICAgIC8qKlxuICAgICAqINCh0YHRi9C70LrQsCDQtNC70Y8g0LDQstGC0L7QvNCw0YLQuNGH0LXRgdC60L7Qs9C+INGD0L/RgNCw0LLQu9C10L3QuNGPINGD0L3QuNGH0YLQvtC20LXQvdC40LXQvCDQt9Cw0LLQuNGB0LjQvNC+0YHRgtC10LkuXG4gICAgICovXG4gICAgcHJpdmF0ZSBkZXN0cm95UmVmOiBEZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuXG4gICAgLyoqXG4gICAgICog0J/RgNC40LfQvdCw0Log0YLQvtCz0L4sINC+0YLQvtCx0YDQsNC20LDQtdGC0YHRjyDRjdGC0L7RgiDQutC+0LzQv9C+0L3QtdC90YIg0L3QsCDQvNC+0LHQuNC70YzQvdC+0Lwg0YPRgdGC0YDQvtC50YHRgtCy0LUg0LjQu9C4INC90LXRgi5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgaXNNb2JpbGU6IGJvb2xlYW4gPSBpbmplY3QoVFVJX0lTX01PQklMRSk7XG5cbiAgICAvKipcbiAgICAgKiDQn9C10YDQtdGH0LjRgdC70LXQvdC40LUg0YLQuNC/0L7QsiDQv9C+0LTRgdC60LDQt9C+0LouXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IHN1Z2dlc3Rpb25UeXBlOiB0eXBlb2YgU2NJU3VnZ2VzdGlvblR5cGUgPSBTY0lTdWdnZXN0aW9uVHlwZTtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBTdWJqZWN0fSDRgdC+0LHRi9GC0LjRjyDQvtGC0L/RgNCw0LLQutC4INGE0L7RgNC80YsuXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IG9uU3VibWl0JDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICAvKipcbiAgICAgKiDQmtC+0L7RgNC00LjQvdCw0YLRiyDRhtC10L3RgtGA0LAg0LrQsNGA0YLRiyDQv9C+INGD0LzQvtC70YfQsNC90LjRji5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgZGVmYXVsdENlbnRlck1hcDogbnVtYmVyW10gPSBbNTcuMDAwMzUzLCA0MC45NzM5M107XG5cbiAgICAvKipcbiAgICAgKiDQnNCw0YHRiNGC0LDQsSDQutCw0YDRgtGLINC/0L4g0YPQvNC+0LvRh9Cw0L3QuNGOLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBkZWZhdWx0Wm9vbU1hcDogbnVtYmVyID0gMTE7XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgT2JzZXJ2YWJsZX0g0LTQsNC90L3Ri9GFINC60L7QvdGC0LDQutGC0L7QsiDQtNC7INC/0L7QvNC+0YnQuC5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgdXNlckhlbHBDb250YWN0cyQ6IE9ic2VydmFibGU8U2NJT3JnQ29udGFjdFtdPiA9IGluamVjdChTY0hlbHBOb3RpZmljYXRpb25TZXJ2aWNlKS51c2VySGVscENvbnRhY3RzO1xuXG4gICAgLyoqXG4gICAgICog0J/RgNC40LfQvdCw0Log0YLQvtCz0L4sINGH0YLQviDRgtC10LrRg9GJ0LDRjyDRgdGC0YDQsNC90LAg0Y/QstC70Y/QtdGC0YHRjyDQstC10YDQvdC+0LkuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGlzRGVmYXVsdENvdW50cnk6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSBpbmplY3QoSVNfREVGQVVMVF9DT1VOVFJZKTtcblxuICAgIC8qKlxuICAgICAqINCh0L/QuNGB0L7QuiDRgdGC0YDQsNC9LlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBjb3VudHJpZXM6IHJlYWRvbmx5IFR1aUNvdW50cnlJc29Db2RlW10gPSBnZXRDb3VudHJpZXMoKTtcblxuICAgIC8qKlxuICAgICAqINCh0LXRgNCy0LjRgS3RgNC10LXRgdGC0YAg0LrQsNGH0LXRgdGC0LLQsCDQsNC00YDQtdGB0L7Qsiwg0LLRi9Cx0YDQsNC90L3Ri9GFINC40Lcg0L/QvtC00YHQutCw0LfQvtC6LlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgYWRkcmVzc1F1YWxpdHlTZXJ2aWNlID0gaW5qZWN0KFNjQWRkcmVzc1F1YWxpdHlTZXJ2aWNlKTtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBPYnNlcnZhYmxlfSDQt9Cw0L/RgNC+0YHQsCDQtNCw0L3QvdGL0YUg0LTQvtCx0LDQstC70LXQvdC40Y8g0LDQtNGA0LXRgSDQtNC+0YHRgtCw0LLQutC4LlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcmVxdWVzdCQ6IE9ic2VydmFibGU8U2NJRGVsaXZlcnlBZGRyZXNzIHwgbnVsbD4gPSB0aGlzLm9uU3VibWl0JC5waXBlKFxuICAgICAgICBmaWx0ZXIoKCkgPT4gdGhpcy5mb3JtLnZhbGlkKSxcbiAgICAgICAgbWFwKCgpID0+IHRoaXMuZm9ybS52YWx1ZSBhcyBTY0lEZWxpdmVyeUFkZHJlc3NPbkRhdGFDcmVhdGUpLFxuICAgICAgICBzd2l0Y2hNYXAoKHZhbHVlKSA9PlxuICAgICAgICAgICAgdGhpcy5kZWxpdmVyeUFkZHJlc3NTZXJ2aWNlLmNyZWF0ZURlbGl2ZXJ5QWRkcmVzcyQodGhpcy5jb252ZXJ0ZXJzU2VydmljZS5yZW1vdmVOdWxsUmVjdXJzaXZlPFNjSURlbGl2ZXJ5QWRkcmVzc09uRGF0YUNyZWF0ZT4odmFsdWUpKS5waXBlKFxuICAgICAgICAgICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5jb21wbGV0ZVdpdGgoKTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogdW5rbm93bikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBIdHRwRXJyb3JSZXNwb25zZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBlcnJvcnMsIG1lc3NhZ2UgfSA9IGVycm9yLmVycm9yIGFzIFNjSUFwaUVycm9yUmVzcG9uc2U7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlcnJvcnMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhlcnJvcnMpLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc2VjdXJpdHkvZGV0ZWN0LW9iamVjdC1pbmplY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLmdldChrZXkpPy5zZXRFcnJvcnMoeyBzZXJ2ZXJSZXNwb25zZTogZXJyb3JzW2tleV0gfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG1lc3NhZ2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0uc2V0RXJyb3JzKHsgc2VydmVyUmVzcG9uc2U6IFttZXNzYWdlXSB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBvZih7fSBhcyBTY0lEZWxpdmVyeUFkZHJlc3MpO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIHN0YXJ0V2l0aChudWxsKVxuICAgICAgICAgICAgKVxuICAgICAgICApLFxuICAgICAgICBzaGFyZSgpXG4gICAgKTtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBPYnNlcnZhYmxlfSDQuNC30LzQtdC90LXQvdC40Y8g0YHQvtGB0YLQvtGP0L3QuNGPINC30LDQs9GA0YPQt9C60Lgg0LTQsNC90L3Ri9GFLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBsb2FkaW5nJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMucmVxdWVzdCQucGlwZShtYXAoKGRhdGEpID0+IGRhdGEgPT09IG51bGwpKTtcblxuICAgIC8qKlxuICAgICAqINCT0YDRg9C/0L/QsCDRgSDQv9C+0LvRj9C80Lgg0LDQtNGA0LXRgdC+0LIuXG4gICAgICovXG4gICAgcHVibGljIGFkZHJlc3NDb250cm9sOiBGb3JtQ29udHJvbDxTY0lTdWdnZXN0aW9uQWRkcmVzcyB8IHN0cmluZyB8IG51bGw+ID0gbmV3IEZvcm1Db250cm9sPFNjSVN1Z2dlc3Rpb25BZGRyZXNzIHwgc3RyaW5nIHwgbnVsbD4obnVsbCwgW1xuICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxuICAgICAgICB0aGlzLmFkZHJlc3NRdWFsaXR5U2VydmljZS52YWxpZGF0b3IsXG4gICAgXSk7XG5cbiAgICAvKipcbiAgICAgKiDQndCw0YHRgtGA0L7QudC60Lgg0LrQsNGA0YLRiy5cbiAgICAgKi9cbiAgICBwdWJsaWMgb3B0aW9uczogeW1hcHMuSU1hcE9wdGlvbnMgPSB7XG4gICAgICAgIGF1dG9GaXRUb1ZpZXdwb3J0OiAnYWx3YXlzJyxcbiAgICAgICAgeWFuZGV4TWFwRGlzYWJsZVBvaUludGVyYWN0aXZpdHk6IGZhbHNlLFxuICAgICAgICBtYXhab29tOiAxOSxcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICog0KTQvtGA0LzQsCDQtNC70Y8g0YHQvtC30LTQsNC90LjRjyDQsNC00YDQtdGB0LAg0LTQvtGB0YLQsNCy0LrQuC5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgZm9ybSA9IG5ldyBGb3JtR3JvdXAoe1xuICAgICAgICBhZGRyZXNzOiB0aGlzLmFkZHJlc3NDb250cm9sLFxuICAgICAgICBjb29yZGluYXRlczogbmV3IEZvcm1Hcm91cCh7XG4gICAgICAgICAgICBsYXQ6IG5ldyBGb3JtQ29udHJvbDxudW1iZXIgfCBudWxsPihudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcbiAgICAgICAgICAgIGxvbmc6IG5ldyBGb3JtQ29udHJvbDxudW1iZXIgfCBudWxsPihudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcbiAgICAgICAgfSksXG4gICAgICAgIGNvbnRhY3Q6IG5ldyBGb3JtR3JvdXAoe1xuICAgICAgICAgICAgbmFtZTogbmV3IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+KG51bGwsIFZhbGlkYXRvcnMucmVxdWlyZWQpLFxuICAgICAgICAgICAgcGhvbmU6IG5ldyBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPihudWxsLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgcGhvbmVWYWxpZGF0b3IoKV0pLFxuICAgICAgICAgICAgZW1haWw6IG5ldyBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPihudWxsLCBWYWxpZGF0b3JzLmVtYWlsKSxcbiAgICAgICAgICAgIHBvc2l0aW9uOiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD4obnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZCksXG4gICAgICAgIH0pLFxuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICog0KLQvtGH0LrQsCDQsNC00YDQtdGB0LAg0L3QsCDQutCw0YDRgtC1LlxuICAgICAqL1xuICAgIHB1YmxpYyBhZGRyZXNzUGxhY2VtYXJrPzogeW1hcHMuUGxhY2VtYXJrO1xuXG4gICAgLyoqXG4gICAgICog0K/QvdC00LXQutGBINC60LDRgNGC0LAuXG4gICAgICovXG4gICAgcHVibGljIHlhTWFwPzogeW1hcHMuTWFwO1xuXG4gICAgLyoqXG4gICAgICog0JjQvdC40YbQuNCw0LvQuNC30LjRgNGD0LXRgiDRjdC60LfQtdC80L/Qu9GP0YAg0LrQu9Cw0YHRgdCwIHtAbGluayBTY0FkZERlbGl2ZXJ5QWRkcmVzc0RpYWxvZ0NvbXBvbmVudH0uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZGVsaXZlcnlBZGRyZXNzU2VydmljZSDQodC10YDQstC40YEg0YDQsNCx0L7RgtGLINGBINCw0LTRgNC10YHQsNC80Lgg0LTQvtGB0YLQsNCy0LrQuC5cbiAgICAgKiBAcGFyYW0gdXNlck1ldHJpa2FTZXJ2aWNlINCh0LXRgNCy0LjRgSDQtNC70Y8g0YHQsdC+0YDQsCDQvNC10YLRgNC40Log0L4g0LTQtdC50YHRgtCy0LjRj9GFINC/0L7Qu9GM0LfQvtCy0LDRgtC10LvQtdC5LlxuICAgICAqIEBwYXJhbSBjb250ZXh0INCa0L7QvdGC0LXQutGB0YIg0LTQuNCw0LvQvtCz0L7QstC+0LPQviDQvtC60L3QsCwg0LIg0LrQvtGC0L7RgNC+0Lwg0L7RgtC60YDRi9GCINC60L7QvNC/0L7QvdC10L3Rgi5cbiAgICAgKiBAcGFyYW0gY29udmVydGVyc1NlcnZpY2Ug0KHQtdGA0LLQuNGBINC60L7QvdCy0LXRgNGC0LDRhtC40Lgg0LTQsNC90L3Ri9GFLlxuICAgICAqL1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBkZWxpdmVyeUFkZHJlc3NTZXJ2aWNlOiBTY0RlbGl2ZXJ5QWRkcmVzc1NlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgdXNlck1ldHJpa2FTZXJ2aWNlOiBTY1VzZXJNZXRyaWthU2VydmljZSxcbiAgICAgICAgQEluamVjdChQT0xZTU9SUEhFVVNfQ09OVEVYVCkgcHVibGljIHJlYWRvbmx5IGNvbnRleHQ6IFR1aURpYWxvZ0NvbnRleHQ8dm9pZCwgdm9pZD4sXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgY29udmVydGVyc1NlcnZpY2U6IFNjQ29udmVydGVyc1NlcnZpY2VcbiAgICApIHt9XG5cbiAgICAvKiogQGluaGVyaXRkb2MgKi9cbiAgICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnVzZXJNZXRyaWthU2VydmljZS5lbWl0VXNlck1ldHJpa2FFdmVudCh7XG4gICAgICAgICAgICB0YXJnZXQ6IFNjVXNlck1ldHJpa2FHb2Fsc0VudW0udXNlclByb2ZpbGVEZWxpdmVyeUFkZHJlc3NBZGRTaG93LFxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmFkZHJlc3NDb250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5yZW1vdmVHZW9Db29yZGluYXRlcygpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQntCx0YDQsNCx0L7RgtGH0LjQuiDQt9Cw0LPRgNGD0LfQutC4INC60LDRgNGC0Ysg0L3QsCDRgdGC0YDQsNC90LjRhtC1LlxuICAgICAqXG4gICAgICogQHBhcmFtIHRhcmdldCDQrdC60LfQtdC80L/Qu9GP0YAg0YbQtdC70LXQstC+0LPQviDQvtCx0YrQtdC60YLQsC5cbiAgICAgKiBAcGFyYW0gdGFyZ2V0LnRhcmdldCDQrdC60LfQtdC80L/Qu9GP0YAg0YbQtdC70LXQstC+0LPQviDQvtCx0YrQtdC60YLQsC5cbiAgICAgKi9cbiAgICBwdWJsaWMgb25NYXBSZWFkeUhhbmRsZSh7IHRhcmdldCB9OiBZYVJlYWR5RXZlbnQ8eW1hcHMuTWFwPik6IHZvaWQge1xuICAgICAgICB0aGlzLnlhTWFwID0gdGFyZ2V0O1xuXG4gICAgICAgIGlmICh0aGlzLmFkZHJlc3NQbGFjZW1hcmspIHtcbiAgICAgICAgICAgIHRhcmdldC5nZW9PYmplY3RzLmFkZCh0aGlzLmFkZHJlc3NQbGFjZW1hcmspO1xuXG4gICAgICAgICAgICBjb25zdCBib3VuZHMgPSB0aGlzLmFkZHJlc3NQbGFjZW1hcmsuZ2VvbWV0cnk/LmdldEJvdW5kcygpO1xuXG4gICAgICAgICAgICBpZiAoYm91bmRzKSB7XG4gICAgICAgICAgICAgICAgdGFyZ2V0LnNldEJvdW5kcyhib3VuZHMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0J7QsdGA0LDQsdC+0YLRh9C40Log0LLRi9Cx0L7RgNCwINCw0LTRgNC10YHQsCDQtNC+0YHRgtCw0LLQutC4LlxuICAgICAqXG4gICAgICogQHBhcmFtIHN1Z2dlc3Rpb24g0J7QsdGK0LXQutGCINC/0L7QtNGB0LrQsNC30LrQuCDQsNGA0LXRgdCwLlxuICAgICAqL1xuICAgIHB1YmxpYyBvblNlbGVjdGVkQWRkcmVzcyhzdWdnZXN0aW9uOiBTY1N1Z2dlc3Rpb24pOiB2b2lkIHtcbiAgICAgICAgaWYgKCdhZGRyZXNzU3RyaW5nJyBpbiBzdWdnZXN0aW9uICYmIHN1Z2dlc3Rpb24uZ2VvQ29vcmRpbmF0ZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IGNvb3JkcyA9IFtzdWdnZXN0aW9uLmdlb0Nvb3JkaW5hdGVzLmxhdCwgc3VnZ2VzdGlvbi5nZW9Db29yZGluYXRlcy5sb25nXS5tYXAoKGNvb3JkKSA9PiBTY051bWJlckhlbHBlci5yb3VuZENvb3JkaW5hdGUoY29vcmQpKTtcblxuICAgICAgICAgICAgdGhpcy5hZGRyZXNzUGxhY2VtYXJrID8/PSB0aGlzLmNyZWF0ZVBsYWNlbWFyayhjb29yZHMpO1xuXG4gICAgICAgICAgICB0aGlzLnNldEdlb0Nvb3JkaW5hdGVzKGNvb3Jkcyk7XG5cbiAgICAgICAgICAgIGlmICghdGhpcy55YU1hcD8uZ2VvT2JqZWN0cy5nZXRMZW5ndGgoKSkge1xuICAgICAgICAgICAgICAgIHRoaXMueWFNYXA/Lmdlb09iamVjdHMuYWRkKHRoaXMuYWRkcmVzc1BsYWNlbWFyayk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGJvdW5kcyA9IHRoaXMuYWRkcmVzc1BsYWNlbWFyay5nZW9tZXRyeT8uZ2V0Qm91bmRzKCk7XG5cbiAgICAgICAgICAgIGlmIChib3VuZHMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnlhTWFwPy5zZXRCb3VuZHMoYm91bmRzKTtcbiAgICAgICAgICAgICAgICB0aGlzLnlhTWFwPy5zZXRab29tKDE3KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCINC/0YDQuNC30L3QsNC6LCDRh9GC0L4g0LDQtNGA0LXRgSDQstCy0LXQtNGR0L0sINC90L4g0LLQsNGA0LjQsNC90YIg0YEg0LrQvtC+0YDQtNC40L3QsNGC0LDQvNC4INC90LUg0LLRi9Cx0YDQsNC9OiDQv9C+0LQg0L/QvtC70LXQvCDQv9C+0LrQsNC30YvQstCw0LXRgtGB0Y8g0L7RiNC40LHQutCwIMKr0JLRi9Cx0LXRgNC40YLQtSDQstCw0YDQuNCw0L3RgiDQuNC3INGB0L/QuNGB0LrQsMK7LlxuICAgICAqL1xuICAgIHB1YmxpYyBpc0FkZHJlc3NXaXRob3V0Q29vcmRpbmF0ZXMoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmFkZHJlc3NDb250cm9sLnZhbGlkICYmIHRoaXMuZm9ybS5jb250cm9scy5jb29yZGluYXRlcy5pbnZhbGlkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCINGC0LXQutGB0YIg0L/RgNC10LTRg9C/0YDQtdC20LTQtdC90LjRjyDQviDQv9C+0LvQvdC+0YLQtSDQstGL0LHRgNCw0L3QvdC+0LPQviDQsNC00YDQtdGB0LAg0LTQvtGB0YLQsNCy0LrQuCDQu9C40LHQviBudWxsLCDQutC+0LPQtNCwINC/0YDQtdC00YPQv9GA0LXQttC00LXQvdC40LUg0L3QtSDRgtGA0LXQsdGD0LXRgtGB0Y9cbiAgICAgKiDQuNC70Lgg0LLQvNC10YHRgtC+INC90LXQs9C+INC/0L7QutCw0LfQsNC90LAg0L7RiNC40LHQutCwIMKr0JLRi9Cx0LXRgNC40YLQtSDQstCw0YDQuNCw0L3RgiDQuNC3INGB0L/QuNGB0LrQsMK7LlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRBZGRyZXNzUXVhbGl0eVdhcm5pbmcoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzQWRkcmVzc1dpdGhvdXRDb29yZGluYXRlcygpID8gbnVsbCA6IHRoaXMuYWRkcmVzc1F1YWxpdHlTZXJ2aWNlLmdldFdhcm5pbmdNZXNzYWdlKHRoaXMuYWRkcmVzc0NvbnRyb2wpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCIGFwcGVhcmFuY2Ug0L/QvtC70Y8g0LDQtNGA0LXRgdCwINC00L7RgdGC0LDQstC60Lg6IGFwcGVhcmFuY2Ug0L/RgNC10LTRg9C/0YDQtdC20LTQtdC90LjRjywg0L/QvtC60LAg0L/QvtC60LDQt9Cw0L3QviDQv9GA0LXQtNGD0L/RgNC10LbQtNC10L3QuNC1INC+INC/0L7Qu9C90L7RgtC1INCw0LTRgNC10YHQsCxcbiAgICAgKiDQuNC90LDRh9C1INC/0YPRgdGC0YPRjiDRgdGC0YDQvtC60YMgKGFwcGVhcmFuY2Ug0L/QvtC70Y8g0L/QviDRg9C80L7Qu9GH0LDQvdC40Y4pLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRBZGRyZXNzQXBwZWFyYW5jZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRBZGRyZXNzUXVhbGl0eVdhcm5pbmcoKSA/IHRoaXMuYWRkcmVzc1F1YWxpdHlTZXJ2aWNlLndhcm5pbmdBcHBlYXJhbmNlIDogJyc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0KPRgdGC0LDQvdCw0LLQu9C40LLQsNC10YIge0BsaW5rIGFkZHJlc3NQbGFjZW1hcmt9INGC0L7Rh9C60YMg0L3QsCDQvtC/0YDQtdC00LXQu9GR0L3QvdGL0LUg0LrQvtC+0YDQtNC40L3QsNGC0YsuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY29vcmRzINCa0L7QvtGA0LTQuNC90LDRgtGLINGC0L7Rh9C60LguXG4gICAgICovXG4gICAgcHJpdmF0ZSBzZXRHZW9Db29yZGluYXRlcyhjb29yZHM6IG51bWJlcltdKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmFkZHJlc3NQbGFjZW1hcmspIHtcbiAgICAgICAgICAgIHRoaXMuYWRkcmVzc1BsYWNlbWFyay5nZW9tZXRyeT8uc2V0Q29vcmRpbmF0ZXMoY29vcmRzKTtcblxuICAgICAgICAgICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUoe1xuICAgICAgICAgICAgICAgIGNvb3JkaW5hdGVzOiB7XG4gICAgICAgICAgICAgICAgICAgIGxhdDogY29vcmRzWzBdLFxuICAgICAgICAgICAgICAgICAgICBsb25nOiBjb29yZHNbMV0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0KPRgdGC0LDQvdCw0LLQu9C40LLQsNC10YIge0BsaW5rIGFkZHJlc3NQbGFjZW1hcmt9INGC0L7Rh9C60YMg0L3QsCDQvtC/0YDQtdC00LXQu9GR0L3QvdGL0LUg0LrQvtC+0YDQtNC40L3QsNGC0YsuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZW1vdmVHZW9Db29yZGluYXRlcygpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuYWRkcmVzc1BsYWNlbWFyaykge1xuICAgICAgICAgICAgdGhpcy55YU1hcD8uZ2VvT2JqZWN0cy5yZW1vdmUodGhpcy5hZGRyZXNzUGxhY2VtYXJrKTtcblxuICAgICAgICAgICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUoe1xuICAgICAgICAgICAgICAgIGNvb3JkaW5hdGVzOiB7XG4gICAgICAgICAgICAgICAgICAgIGxhdDogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgbG9uZzogbnVsbCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHRoaXMueWFNYXA/LnNldENlbnRlcih0aGlzLmRlZmF1bHRDZW50ZXJNYXApO1xuICAgICAgICAgICAgdGhpcy55YU1hcD8uc2V0Wm9vbSh0aGlzLmRlZmF1bHRab29tTWFwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCh0L7Qt9C00LDRkdGCINC+0LHRitC10LrRgiDRgtC+0YfQutC4INC4INGD0YHRgtCw0L3QsNCy0LvQuNCy0LDQtdGCINGB0L7QsdGL0YLQuNGPINC00LvRjyDQvdC10LPQvi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBjb29yZHMg0JrQvtC+0YDQtNC40L3QsNGC0Ysg0YLQvtGH0LrQuC5cbiAgICAgKi9cbiAgICBwcml2YXRlIGNyZWF0ZVBsYWNlbWFyayhjb29yZHM6IG51bWJlcltdKTogeW1hcHMuUGxhY2VtYXJrIHtcbiAgICAgICAgY29uc3QgcGxhY2VtYXJrID0gbmV3IHltYXBzLlBsYWNlbWFyayhcbiAgICAgICAgICAgIGNvb3JkcyxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBpY29uQ2FwdGlvbjogJycsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHByZXNldDogJ2lzbGFuZHMnLFxuICAgICAgICAgICAgICAgIGRyYWdnYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcblxuICAgICAgICBwbGFjZW1hcmsuZXZlbnRzLmFkZCgnZHJhZ2VuZCcsICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNvb3JkID0gdGhpcy5hZGRyZXNzUGxhY2VtYXJrPy5nZW9tZXRyeT8uZ2V0Q29vcmRpbmF0ZXMoKTtcblxuICAgICAgICAgICAgaWYgKGNvb3JkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRHZW9Db29yZGluYXRlcyhjb29yZC5tYXAoKHZhbHVlKSA9PiBTY051bWJlckhlbHBlci5yb3VuZENvb3JkaW5hdGUodmFsdWUpKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBwbGFjZW1hcms7XG4gICAgfVxufVxuIiwiQGxldCBpc0VuYWJsZWRBZGREZWxpdmVyeUFkZHJlc3MgPSBpc0RlZmF1bHRDb3VudHJ5IHwgYXN5bmM7XG5cbkBpZiAoaXNFbmFibGVkQWRkRGVsaXZlcnlBZGRyZXNzKSB7XG4gICAgPGRpdiBjbGFzcz1cInJlbGF0aXZlIGZsZXggZmxleC1jb2wgZ2FwLTMgbWQ6ZmxleC1yb3dcIj5cbiAgICAgICAgPGZvcm1cbiAgICAgICAgICAgIFtmb3JtR3JvdXBdPVwiZm9ybVwiXG4gICAgICAgICAgICAobmdTdWJtaXQpPVwib25TdWJtaXQkLm5leHQoKVwiXG4gICAgICAgICAgICBjbGFzcz1cImZsZXggdy1mdWxsIGZsZXgtY29sIGdhcC0zXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPGxhYmVsIHR1aUxhYmVsPlxuICAgICAgICAgICAgICAgINCQ0LTRgNC10YEg0LTQvtGB0YLQsNCy0LrQuFxuICAgICAgICAgICAgICAgIDx0dWktaW5wdXRcbiAgICAgICAgICAgICAgICAgICAgW3BzZXVkb0ludmFsaWRdPVwiaXNBZGRyZXNzV2l0aG91dENvb3JkaW5hdGVzKCkgfHwgbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgIFt0dWlUZXh0ZmllbGRBcHBlYXJhbmNlXT1cImdldEFkZHJlc3NBcHBlYXJhbmNlKClcIlxuICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJhZGRyZXNzXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgINCQ0LTRgNC10YEg0LTQvtGB0YLQsNCy0LrQuFxuICAgICAgICAgICAgICAgICAgICA8c2Mtc3VnZ2VzdGlvbi1maWVsZFxuICAgICAgICAgICAgICAgICAgICAgICAgKnR1aURhdGFMaXN0XG4gICAgICAgICAgICAgICAgICAgICAgICBbdHlwZV09XCJzdWdnZXN0aW9uVHlwZS5hZGRyZXNzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChzZWxlY3RlZENsaWNrKT1cIm9uU2VsZWN0ZWRBZGRyZXNzKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgIHR1aVRleHRmaWVsZExlZ2FjeVxuICAgICAgICAgICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwibmV3LXBhc3N3b3JkXCJcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L3R1aS1pbnB1dD5cbiAgICAgICAgICAgICAgICA8dHVpLWVycm9yXG4gICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImFkZHJlc3NcIlxuICAgICAgICAgICAgICAgICAgICBbZXJyb3JdPVwiW10gfCB0dWlGaWVsZEVycm9yIHwgYXN5bmNcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPHR1aS1lcnJvclxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImlzQWRkcmVzc1dpdGhvdXRDb29yZGluYXRlcygpXCJcbiAgICAgICAgICAgICAgICAgICAgZXJyb3I9XCLQktGL0LHQtdGA0LjRgtC1INCy0LDRgNC40LDQvdGCINC40Lcg0YHQv9C40YHQutCwXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIEBpZiAoZ2V0QWRkcmVzc1F1YWxpdHlXYXJuaW5nKCk7IGFzIGFkZHJlc3NRdWFsaXR5V2FybmluZykge1xuICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInRleHQteHMgdGV4dC10dWktc3RhdHVzLXdhcm5pbmdcIj57eyBhZGRyZXNzUXVhbGl0eVdhcm5pbmcgfX08L3A+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXBOYW1lPVwiY29udGFjdFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmbGV4IGdyb3cgZmxleC1jb2wgZ2FwLTJcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwidy1mdWxsIGZvbnQtYm9sZFwiPtCa0L7QvdGC0LDQutGC0L3QvtC1INC70LjRhtC+OjwvcD5cbiAgICAgICAgICAgICAgICA8bGFiZWwgdHVpTGFiZWw+XG4gICAgICAgICAgICAgICAgICAgINCkLtCYLtCeLlxuICAgICAgICAgICAgICAgICAgICA8dHVpLWlucHV0IGZvcm1Db250cm9sTmFtZT1cIm5hbWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgINCkLtCYLtCeLlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNjLXN1Z2dlc3Rpb24tZmllbGRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqdHVpRGF0YUxpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdHlwZV09XCJzdWdnZXN0aW9uVHlwZS5maW9cIlxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPC90dWktaW5wdXQ+XG4gICAgICAgICAgICAgICAgICAgIDx0dWktZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cIm5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2Vycm9yXT1cIltdIHwgdHVpRmllbGRFcnJvciB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgIDxsYWJlbCB0dWlMYWJlbD5cbiAgICAgICAgICAgICAgICAgICAg0KLQtdC70LXRhNC+0L1cbiAgICAgICAgICAgICAgICAgICAgPHR1aS10ZXh0ZmllbGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJwaG9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHVpSW5wdXRQaG9uZUludGVybmF0aW9uYWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY291bnRyeVNlYXJjaF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY291bnRyaWVzXT1cIihjb3VudHJpZXMgfCB0dWlTb3J0Q291bnRyaWVzIHwgYXN5bmMpIHx8IFtdXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJwaG9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICA8L3R1aS10ZXh0ZmllbGQ+XG4gICAgICAgICAgICAgICAgICAgIDx0dWktZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInBob25lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtlcnJvcl09XCJbXSB8IHR1aUZpZWxkRXJyb3IgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICA8bGFiZWwgdHVpTGFiZWw+XG4gICAgICAgICAgICAgICAgICAgINCQ0LTRgNC10YEg0Y3Qu9C10LrRgtGA0L7QvdC90L7QuSDQv9C+0YfRgtGLXG4gICAgICAgICAgICAgICAgICAgIDx0dWktaW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiZW1haWxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR1aVRleHRmaWVsZExlZ2FjeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJlbWFpbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAg0JDQtNGA0LXRgSDRjdC70LXQutGC0YDQvtC90L3QvtC5INC/0L7Rh9GC0YtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzYy1zdWdnZXN0aW9uLWZpZWxkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKnR1aURhdGFMaXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3R5cGVdPVwic3VnZ2VzdGlvblR5cGUuZW1haWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPC90dWktaW5wdXQ+XG4gICAgICAgICAgICAgICAgICAgIDx0dWktZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImVtYWlsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtlcnJvcl09XCJbXSB8IHR1aUZpZWxkRXJyb3IgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICA8bGFiZWwgdHVpTGFiZWw+XG4gICAgICAgICAgICAgICAgICAgINCU0L7Qu9C20L3QvtGB0YLRjFxuICAgICAgICAgICAgICAgICAgICA8dHVpLWlucHV0IGZvcm1Db250cm9sTmFtZT1cInBvc2l0aW9uXCI+INCU0L7Qu9C20L3QvtGB0YLRjCA8L3R1aS1pbnB1dD5cbiAgICAgICAgICAgICAgICAgICAgPHR1aS1lcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicG9zaXRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2Vycm9yXT1cIltdIHwgdHVpRmllbGRFcnJvciB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWNlbnRlciBnYXAtOFwiPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgdHVpQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjb250ZXh0LiRpbXBsaWNpdC5jb21wbGV0ZSgpXCJcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIFtpY29uU3RhcnRdPVwiaXNNb2JpbGUgPyAnQHR1aS54JyA6ICdAdHVpLngnXCJcbiAgICAgICAgICAgICAgICAgICAgYXBwZWFyYW5jZT1cInNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICDQntGC0LzQtdC90LBcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIHR1aUJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBbaWNvblN0YXJ0XT1cImlzTW9iaWxlID8gJ0B0dWkuc2F2ZScgOiAnQHR1aS5zYXZlJ1wiXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJmb3JtLmludmFsaWRcIlxuICAgICAgICAgICAgICAgICAgICBbbG9hZGluZ109XCIhIShsb2FkaW5nJCB8IGFzeW5jKVwiXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAg0JTQvtCx0LDQstC40YLRjFxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZm9ybT5cblxuICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImFic29sdXRlIC16LTEwIGZsZXggc2l6ZS1mdWxsIG1kOnctMS8yXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ3otMCByZWxhdGl2ZSc6IGFkZHJlc3NQbGFjZW1hcmsgfVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZsZXgtYXV0b1wiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAncG9pbnRlci1ldmVudHMtbm9uZSBvcGFjaXR5LTUwJzogZm9ybS5jb250cm9scy5jb29yZGluYXRlcy5pbnZhbGlkIH1cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDx5YS1tYXBcbiAgICAgICAgICAgICAgICAgICAgW3pvb21dPVwiMTFcIlxuICAgICAgICAgICAgICAgICAgICBbc3RhdGVdPVwieyBjb250cm9sczogW10gfVwiXG4gICAgICAgICAgICAgICAgICAgIChyZWFkeSk9XCJvbk1hcFJlYWR5SGFuZGxlKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJvcHRpb25zXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxufSBAZWxzZSB7XG4gICAgQGxldCBoZWxwQ29udGFjdHMgPSB1c2VySGVscENvbnRhY3RzJCB8IGFzeW5jO1xuXG4gICAgQGlmIChoZWxwQ29udGFjdHMgJiYgaGVscENvbnRhY3RzLmxlbmd0aCkge1xuICAgICAgICA8dHVpLXB1c2hcbiAgICAgICAgICAgIHR5cGU9XCLQp9GC0L7QsdGLINC00L7QsdCw0LLQuNGC0Ywg0LDQtNGA0LXRgSDQtNC+0YHRgtCw0LLQutC4LCDRgdCy0Y/QttC40YLQtdGB0Ywg0YEg0L3QsNC80LhcIlxuICAgICAgICAgICAgY2xhc3M9XCIhdy1hdXRvXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPHR1aS1pY29uIGljb249XCJAdHVpLm1lc3NhZ2Utc3F1YXJlXCIgLz5cbiAgICAgICAgICAgIDxzYy1tYW5hZ2VyLWNhcmQgW21hbmFnZXJdPVwiaGVscENvbnRhY3RzWzBdXCIgLz5cbiAgICAgICAgPC90dWktcHVzaD5cbiAgICB9XG59XG4iXX0=
@@ -4,7 +4,7 @@ import { FormsModule, ReactiveFormsModule } from '@angular/forms';
4
4
  import { TuiButton, TuiDataList, TuiError, TuiIcon, TuiLabel, TuiLoader, TuiNotification, TuiTextfield } from '@taiga-ui/core';
5
5
  import { TuiInputPhoneInternational } from '@taiga-ui/experimental';
6
6
  import { TuiButtonLoading, TuiElasticContainer, TuiFieldErrorPipe, TuiPush, TuiSortCountriesPipe } from '@taiga-ui/kit';
7
- import { TuiInputModule, TuiInputPhoneModule } from '@taiga-ui/legacy';
7
+ import { TuiInputModule, TuiInputPhoneModule, TuiTextfieldControllerModule } from '@taiga-ui/legacy';
8
8
  import { AngularYandexMapsModule } from 'angular8-yandex-maps';
9
9
  import { ScAccordionModule } from '../accordion';
10
10
  import { ScManagerCardComponent } from '../contacts/manager-card/sc-manager-card.component';
@@ -36,6 +36,7 @@ export class ScDeliveryAddressModule {
36
36
  TuiFieldErrorPipe,
37
37
  TuiError,
38
38
  TuiInputModule,
39
+ TuiTextfieldControllerModule,
39
40
  TuiInputPhoneModule,
40
41
  ScFormFieldsModule, i1.TuiDataListComponent, i1.TuiDataListDirective, i1.TuiOption, i1.TuiOptionNew, i1.TuiOptionWithValue, i1.TuiOptGroup, i2.AngularYandexMapsModule, TuiElasticContainer,
41
42
  TuiButtonLoading, i3.TuiPushComponent, i3.TuiPushAlert, i3.TuiPushDirective, TuiIcon,
@@ -49,6 +50,7 @@ export class ScDeliveryAddressModule {
49
50
  ReactiveFormsModule,
50
51
  TuiError,
51
52
  TuiInputModule,
53
+ TuiTextfieldControllerModule,
52
54
  TuiInputPhoneModule,
53
55
  ScFormFieldsModule, i1.TuiDataListComponent, i1.TuiOption, AngularYandexMapsModule.forRoot({
54
56
  lang: 'ru_RU',
@@ -75,6 +77,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
75
77
  TuiFieldErrorPipe,
76
78
  TuiError,
77
79
  TuiInputModule,
80
+ TuiTextfieldControllerModule,
78
81
  TuiInputPhoneModule,
79
82
  ScFormFieldsModule,
80
83
  ...TuiDataList,
@@ -93,4 +96,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
93
96
  exports: [ScDeliveryAddressAccordionComponent, ScAddDeliveryAddressDialogComponent],
94
97
  }]
95
98
  }] });
96
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtZGVsaXZlcnktYWRkcmVzcy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvZGVsaXZlcnktYWRkcmVzcy9zYy1kZWxpdmVyeS1hZGRyZXNzLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvSCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNwRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsbUJBQW1CLEVBQUUsaUJBQWlCLEVBQUUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hILE9BQU8sRUFBRSxjQUFjLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN2RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUUvRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDakQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDNUYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDdkUsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLE1BQU0sd0VBQXdFLENBQUM7QUFDN0gsT0FBTyxFQUFFLHVDQUF1QyxFQUFFLE1BQU0sMkdBQTJHLENBQUM7QUFDcEssT0FBTyxFQUFFLG1DQUFtQyxFQUFFLE1BQU0sc0VBQXNFLENBQUM7Ozs7Ozs7QUFDM0g7O0dBRUc7QUFpQ0gsTUFBTSxPQUFPLHVCQUF1QjsrR0FBdkIsdUJBQXVCO2dIQUF2Qix1QkFBdUIsaUJBL0JqQixtQ0FBbUMsRUFBRSx1Q0FBdUMsRUFBRSxtQ0FBbUMsYUFFNUgsWUFBWTtZQUNaLGlCQUFpQjtZQUNqQixTQUFTO1lBQ1QsU0FBUztZQUNULGVBQWU7WUFDZixnQkFBZ0I7WUFDaEIsV0FBVztZQUNYLG1CQUFtQjtZQUNuQixRQUFRO1lBQ1IsaUJBQWlCO1lBQ2pCLFFBQVE7WUFDUixjQUFjO1lBQ2QsbUJBQW1CO1lBQ25CLGtCQUFrQixzSkFLbEIsbUJBQW1CO1lBQ25CLGdCQUFnQiw2REFFaEIsT0FBTztZQUNQLHNCQUFzQjtZQUN0QiwwQkFBMEIsK0xBRTFCLG9CQUFvQixhQUVkLG1DQUFtQyxFQUFFLG1DQUFtQztnSEFFekUsdUJBQXVCLFlBN0I1QixZQUFZO1lBQ1osaUJBQWlCO1lBRWpCLFNBQVM7WUFFVCxnQkFBZ0I7WUFDaEIsV0FBVztZQUNYLG1CQUFtQjtZQUduQixRQUFRO1lBQ1IsY0FBYztZQUNkLG1CQUFtQjtZQUNuQixrQkFBa0IseUNBRWxCLHVCQUF1QixDQUFDLE9BQU8sQ0FBQztnQkFDNUIsSUFBSSxFQUFFLE9BQU87YUFDaEIsQ0FBQztZQUNGLG1CQUFtQjtZQUNuQixnQkFBZ0Isd0NBRWhCLE9BQU87WUFDUCxzQkFBc0I7WUFDdEIsMEJBQTBCOzs0RkFNckIsdUJBQXVCO2tCQWhDbkMsUUFBUTttQkFBQztvQkFDTixZQUFZLEVBQUUsQ0FBQyxtQ0FBbUMsRUFBRSx1Q0FBdUMsRUFBRSxtQ0FBbUMsQ0FBQztvQkFDakksT0FBTyxFQUFFO3dCQUNMLFlBQVk7d0JBQ1osaUJBQWlCO3dCQUNqQixTQUFTO3dCQUNULFNBQVM7d0JBQ1QsZUFBZTt3QkFDZixnQkFBZ0I7d0JBQ2hCLFdBQVc7d0JBQ1gsbUJBQW1CO3dCQUNuQixRQUFRO3dCQUNSLGlCQUFpQjt3QkFDakIsUUFBUTt3QkFDUixjQUFjO3dCQUNkLG1CQUFtQjt3QkFDbkIsa0JBQWtCO3dCQUNsQixHQUFHLFdBQVc7d0JBQ2QsdUJBQXVCLENBQUMsT0FBTyxDQUFDOzRCQUM1QixJQUFJLEVBQUUsT0FBTzt5QkFDaEIsQ0FBQzt3QkFDRixtQkFBbUI7d0JBQ25CLGdCQUFnQjt3QkFDaEIsR0FBRyxPQUFPO3dCQUNWLE9BQU87d0JBQ1Asc0JBQXNCO3dCQUN0QiwwQkFBMEI7d0JBQzFCLEdBQUcsWUFBWTt3QkFDZixvQkFBb0I7cUJBQ3ZCO29CQUNELE9BQU8sRUFBRSxDQUFDLG1DQUFtQyxFQUFFLG1DQUFtQyxDQUFDO2lCQUN0RiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBUdWlCdXR0b24sIFR1aURhdGFMaXN0LCBUdWlFcnJvciwgVHVpSWNvbiwgVHVpTGFiZWwsIFR1aUxvYWRlciwgVHVpTm90aWZpY2F0aW9uLCBUdWlUZXh0ZmllbGQgfSBmcm9tICdAdGFpZ2EtdWkvY29yZSc7XG5pbXBvcnQgeyBUdWlJbnB1dFBob25lSW50ZXJuYXRpb25hbCB9IGZyb20gJ0B0YWlnYS11aS9leHBlcmltZW50YWwnO1xuaW1wb3J0IHsgVHVpQnV0dG9uTG9hZGluZywgVHVpRWxhc3RpY0NvbnRhaW5lciwgVHVpRmllbGRFcnJvclBpcGUsIFR1aVB1c2gsIFR1aVNvcnRDb3VudHJpZXNQaXBlIH0gZnJvbSAnQHRhaWdhLXVpL2tpdCc7XG5pbXBvcnQgeyBUdWlJbnB1dE1vZHVsZSwgVHVpSW5wdXRQaG9uZU1vZHVsZSB9IGZyb20gJ0B0YWlnYS11aS9sZWdhY3knO1xuaW1wb3J0IHsgQW5ndWxhcllhbmRleE1hcHNNb2R1bGUgfSBmcm9tICdhbmd1bGFyOC15YW5kZXgtbWFwcyc7XG5cbmltcG9ydCB7IFNjQWNjb3JkaW9uTW9kdWxlIH0gZnJvbSAnLi4vYWNjb3JkaW9uJztcbmltcG9ydCB7IFNjTWFuYWdlckNhcmRDb21wb25lbnQgfSBmcm9tICcuLi9jb250YWN0cy9tYW5hZ2VyLWNhcmQvc2MtbWFuYWdlci1jYXJkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTY0NvbnRhY3RzTW9kdWxlIH0gZnJvbSAnLi4vY29udGFjdHMvc2MtY29udGFjdHMubW9kdWxlJztcbmltcG9ydCB7IFNjRm9ybUZpZWxkc01vZHVsZSB9IGZyb20gJy4uL2Zvcm0tZmllbGRzL2Zvcm0tZmllbGRzLm1vZHVsZSc7XG5pbXBvcnQgeyBTY0FkZERlbGl2ZXJ5QWRkcmVzc0RpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4vYWRkLWRlbGl2ZXJ5LWFkZHJlc3MtZGlhbG9nL3NjLWFkZC1kZWxpdmVyeS1hZGRyZXNzLWRpYWxvZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2NEZWxpdmVyeUFkZHJlc3NBY2NvcmRpb25JdGVtQ29tcG9uZW50IH0gZnJvbSAnLi9kZWxpdmVyeS1hZGRyZXNzLWFjY29yZGlvbi9kZWxpdmVyeS1hZGRyZXNzLWFjY29yZGlvbi1pdGVtL3NjLWRlbGl2ZXJ5LWFkZHJlc3MtYWNjb3JkaW9uLWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IFNjRGVsaXZlcnlBZGRyZXNzQWNjb3JkaW9uQ29tcG9uZW50IH0gZnJvbSAnLi9kZWxpdmVyeS1hZGRyZXNzLWFjY29yZGlvbi9zYy1kZWxpdmVyeS1hZGRyZXNzLWFjY29yZGlvbi5jb21wb25lbnQnO1xuLyoqXG4gKiDQnNC+0LTRg9C70Ywg0LTQu9GPINC+0YLQvtCx0YDQsNC20LXQvdC40LUg0LDQtNGA0LXRgdC+0LIg0LTQvtGB0YLQsNCy0LrQuCDRgNCw0LfQtNC10LvQsNC80LgsINGBINCy0L7Qt9C80L7QttC90L7RgdGC0YzRjiDRgdC60YDRi9Cy0LDRgtGMINC4INC+0YLQvtCx0YDQsNC20LDRgtGMINGB0L7QtNC10YDQttC40LzQvtC1LlxuICovXG5ATmdNb2R1bGUoe1xuICAgIGRlY2xhcmF0aW9uczogW1NjRGVsaXZlcnlBZGRyZXNzQWNjb3JkaW9uQ29tcG9uZW50LCBTY0RlbGl2ZXJ5QWRkcmVzc0FjY29yZGlvbkl0ZW1Db21wb25lbnQsIFNjQWRkRGVsaXZlcnlBZGRyZXNzRGlhbG9nQ29tcG9uZW50XSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIENvbW1vbk1vZHVsZSxcbiAgICAgICAgU2NBY2NvcmRpb25Nb2R1bGUsXG4gICAgICAgIFR1aUJ1dHRvbixcbiAgICAgICAgVHVpTG9hZGVyLFxuICAgICAgICBUdWlOb3RpZmljYXRpb24sXG4gICAgICAgIFNjQ29udGFjdHNNb2R1bGUsXG4gICAgICAgIEZvcm1zTW9kdWxlLFxuICAgICAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgICAgICBUdWlMYWJlbCxcbiAgICAgICAgVHVpRmllbGRFcnJvclBpcGUsXG4gICAgICAgIFR1aUVycm9yLFxuICAgICAgICBUdWlJbnB1dE1vZHVsZSxcbiAgICAgICAgVHVpSW5wdXRQaG9uZU1vZHVsZSxcbiAgICAgICAgU2NGb3JtRmllbGRzTW9kdWxlLFxuICAgICAgICAuLi5UdWlEYXRhTGlzdCxcbiAgICAgICAgQW5ndWxhcllhbmRleE1hcHNNb2R1bGUuZm9yUm9vdCh7XG4gICAgICAgICAgICBsYW5nOiAncnVfUlUnLFxuICAgICAgICB9KSxcbiAgICAgICAgVHVpRWxhc3RpY0NvbnRhaW5lcixcbiAgICAgICAgVHVpQnV0dG9uTG9hZGluZyxcbiAgICAgICAgLi4uVHVpUHVzaCxcbiAgICAgICAgVHVpSWNvbixcbiAgICAgICAgU2NNYW5hZ2VyQ2FyZENvbXBvbmVudCxcbiAgICAgICAgVHVpSW5wdXRQaG9uZUludGVybmF0aW9uYWwsXG4gICAgICAgIC4uLlR1aVRleHRmaWVsZCxcbiAgICAgICAgVHVpU29ydENvdW50cmllc1BpcGUsXG4gICAgXSxcbiAgICBleHBvcnRzOiBbU2NEZWxpdmVyeUFkZHJlc3NBY2NvcmRpb25Db21wb25lbnQsIFNjQWRkRGVsaXZlcnlBZGRyZXNzRGlhbG9nQ29tcG9uZW50XSxcbn0pXG5leHBvcnQgY2xhc3MgU2NEZWxpdmVyeUFkZHJlc3NNb2R1bGUge31cbiJdfQ==
99
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtZGVsaXZlcnktYWRkcmVzcy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvZGVsaXZlcnktYWRkcmVzcy9zYy1kZWxpdmVyeS1hZGRyZXNzLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvSCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNwRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsbUJBQW1CLEVBQUUsaUJBQWlCLEVBQUUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hILE9BQU8sRUFBRSxjQUFjLEVBQUUsbUJBQW1CLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNyRyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUUvRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDakQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDNUYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDdkUsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLE1BQU0sd0VBQXdFLENBQUM7QUFDN0gsT0FBTyxFQUFFLHVDQUF1QyxFQUFFLE1BQU0sMkdBQTJHLENBQUM7QUFDcEssT0FBTyxFQUFFLG1DQUFtQyxFQUFFLE1BQU0sc0VBQXNFLENBQUM7Ozs7Ozs7QUFDM0g7O0dBRUc7QUFrQ0gsTUFBTSxPQUFPLHVCQUF1QjsrR0FBdkIsdUJBQXVCO2dIQUF2Qix1QkFBdUIsaUJBaENqQixtQ0FBbUMsRUFBRSx1Q0FBdUMsRUFBRSxtQ0FBbUMsYUFFNUgsWUFBWTtZQUNaLGlCQUFpQjtZQUNqQixTQUFTO1lBQ1QsU0FBUztZQUNULGVBQWU7WUFDZixnQkFBZ0I7WUFDaEIsV0FBVztZQUNYLG1CQUFtQjtZQUNuQixRQUFRO1lBQ1IsaUJBQWlCO1lBQ2pCLFFBQVE7WUFDUixjQUFjO1lBQ2QsNEJBQTRCO1lBQzVCLG1CQUFtQjtZQUNuQixrQkFBa0Isc0pBS2xCLG1CQUFtQjtZQUNuQixnQkFBZ0IsNkRBRWhCLE9BQU87WUFDUCxzQkFBc0I7WUFDdEIsMEJBQTBCLCtMQUUxQixvQkFBb0IsYUFFZCxtQ0FBbUMsRUFBRSxtQ0FBbUM7Z0hBRXpFLHVCQUF1QixZQTlCNUIsWUFBWTtZQUNaLGlCQUFpQjtZQUVqQixTQUFTO1lBRVQsZ0JBQWdCO1lBQ2hCLFdBQVc7WUFDWCxtQkFBbUI7WUFHbkIsUUFBUTtZQUNSLGNBQWM7WUFDZCw0QkFBNEI7WUFDNUIsbUJBQW1CO1lBQ25CLGtCQUFrQix5Q0FFbEIsdUJBQXVCLENBQUMsT0FBTyxDQUFDO2dCQUM1QixJQUFJLEVBQUUsT0FBTzthQUNoQixDQUFDO1lBQ0YsbUJBQW1CO1lBQ25CLGdCQUFnQix3Q0FFaEIsT0FBTztZQUNQLHNCQUFzQjtZQUN0QiwwQkFBMEI7OzRGQU1yQix1QkFBdUI7a0JBakNuQyxRQUFRO21CQUFDO29CQUNOLFlBQVksRUFBRSxDQUFDLG1DQUFtQyxFQUFFLHVDQUF1QyxFQUFFLG1DQUFtQyxDQUFDO29CQUNqSSxPQUFPLEVBQUU7d0JBQ0wsWUFBWTt3QkFDWixpQkFBaUI7d0JBQ2pCLFNBQVM7d0JBQ1QsU0FBUzt3QkFDVCxlQUFlO3dCQUNmLGdCQUFnQjt3QkFDaEIsV0FBVzt3QkFDWCxtQkFBbUI7d0JBQ25CLFFBQVE7d0JBQ1IsaUJBQWlCO3dCQUNqQixRQUFRO3dCQUNSLGNBQWM7d0JBQ2QsNEJBQTRCO3dCQUM1QixtQkFBbUI7d0JBQ25CLGtCQUFrQjt3QkFDbEIsR0FBRyxXQUFXO3dCQUNkLHVCQUF1QixDQUFDLE9BQU8sQ0FBQzs0QkFDNUIsSUFBSSxFQUFFLE9BQU87eUJBQ2hCLENBQUM7d0JBQ0YsbUJBQW1CO3dCQUNuQixnQkFBZ0I7d0JBQ2hCLEdBQUcsT0FBTzt3QkFDVixPQUFPO3dCQUNQLHNCQUFzQjt3QkFDdEIsMEJBQTBCO3dCQUMxQixHQUFHLFlBQVk7d0JBQ2Ysb0JBQW9CO3FCQUN2QjtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxtQ0FBbUMsRUFBRSxtQ0FBbUMsQ0FBQztpQkFDdEYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgVHVpQnV0dG9uLCBUdWlEYXRhTGlzdCwgVHVpRXJyb3IsIFR1aUljb24sIFR1aUxhYmVsLCBUdWlMb2FkZXIsIFR1aU5vdGlmaWNhdGlvbiwgVHVpVGV4dGZpZWxkIH0gZnJvbSAnQHRhaWdhLXVpL2NvcmUnO1xuaW1wb3J0IHsgVHVpSW5wdXRQaG9uZUludGVybmF0aW9uYWwgfSBmcm9tICdAdGFpZ2EtdWkvZXhwZXJpbWVudGFsJztcbmltcG9ydCB7IFR1aUJ1dHRvbkxvYWRpbmcsIFR1aUVsYXN0aWNDb250YWluZXIsIFR1aUZpZWxkRXJyb3JQaXBlLCBUdWlQdXNoLCBUdWlTb3J0Q291bnRyaWVzUGlwZSB9IGZyb20gJ0B0YWlnYS11aS9raXQnO1xuaW1wb3J0IHsgVHVpSW5wdXRNb2R1bGUsIFR1aUlucHV0UGhvbmVNb2R1bGUsIFR1aVRleHRmaWVsZENvbnRyb2xsZXJNb2R1bGUgfSBmcm9tICdAdGFpZ2EtdWkvbGVnYWN5JztcbmltcG9ydCB7IEFuZ3VsYXJZYW5kZXhNYXBzTW9kdWxlIH0gZnJvbSAnYW5ndWxhcjgteWFuZGV4LW1hcHMnO1xuXG5pbXBvcnQgeyBTY0FjY29yZGlvbk1vZHVsZSB9IGZyb20gJy4uL2FjY29yZGlvbic7XG5pbXBvcnQgeyBTY01hbmFnZXJDYXJkQ29tcG9uZW50IH0gZnJvbSAnLi4vY29udGFjdHMvbWFuYWdlci1jYXJkL3NjLW1hbmFnZXItY2FyZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2NDb250YWN0c01vZHVsZSB9IGZyb20gJy4uL2NvbnRhY3RzL3NjLWNvbnRhY3RzLm1vZHVsZSc7XG5pbXBvcnQgeyBTY0Zvcm1GaWVsZHNNb2R1bGUgfSBmcm9tICcuLi9mb3JtLWZpZWxkcy9mb3JtLWZpZWxkcy5tb2R1bGUnO1xuaW1wb3J0IHsgU2NBZGREZWxpdmVyeUFkZHJlc3NEaWFsb2dDb21wb25lbnQgfSBmcm9tICcuL2FkZC1kZWxpdmVyeS1hZGRyZXNzLWRpYWxvZy9zYy1hZGQtZGVsaXZlcnktYWRkcmVzcy1kaWFsb2cuY29tcG9uZW50JztcbmltcG9ydCB7IFNjRGVsaXZlcnlBZGRyZXNzQWNjb3JkaW9uSXRlbUNvbXBvbmVudCB9IGZyb20gJy4vZGVsaXZlcnktYWRkcmVzcy1hY2NvcmRpb24vZGVsaXZlcnktYWRkcmVzcy1hY2NvcmRpb24taXRlbS9zYy1kZWxpdmVyeS1hZGRyZXNzLWFjY29yZGlvbi1pdGVtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTY0RlbGl2ZXJ5QWRkcmVzc0FjY29yZGlvbkNvbXBvbmVudCB9IGZyb20gJy4vZGVsaXZlcnktYWRkcmVzcy1hY2NvcmRpb24vc2MtZGVsaXZlcnktYWRkcmVzcy1hY2NvcmRpb24uY29tcG9uZW50Jztcbi8qKlxuICog0JzQvtC00YPQu9GMINC00LvRjyDQvtGC0L7QsdGA0LDQttC10L3QuNC1INCw0LTRgNC10YHQvtCyINC00L7RgdGC0LDQstC60Lgg0YDQsNC30LTQtdC70LDQvNC4LCDRgSDQstC+0LfQvNC+0LbQvdC+0YHRgtGM0Y4g0YHQutGA0YvQstCw0YLRjCDQuCDQvtGC0L7QsdGA0LDQttCw0YLRjCDRgdC+0LTQtdGA0LbQuNC80L7QtS5cbiAqL1xuQE5nTW9kdWxlKHtcbiAgICBkZWNsYXJhdGlvbnM6IFtTY0RlbGl2ZXJ5QWRkcmVzc0FjY29yZGlvbkNvbXBvbmVudCwgU2NEZWxpdmVyeUFkZHJlc3NBY2NvcmRpb25JdGVtQ29tcG9uZW50LCBTY0FkZERlbGl2ZXJ5QWRkcmVzc0RpYWxvZ0NvbXBvbmVudF0sXG4gICAgaW1wb3J0czogW1xuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgICAgIFNjQWNjb3JkaW9uTW9kdWxlLFxuICAgICAgICBUdWlCdXR0b24sXG4gICAgICAgIFR1aUxvYWRlcixcbiAgICAgICAgVHVpTm90aWZpY2F0aW9uLFxuICAgICAgICBTY0NvbnRhY3RzTW9kdWxlLFxuICAgICAgICBGb3Jtc01vZHVsZSxcbiAgICAgICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICAgICAgVHVpTGFiZWwsXG4gICAgICAgIFR1aUZpZWxkRXJyb3JQaXBlLFxuICAgICAgICBUdWlFcnJvcixcbiAgICAgICAgVHVpSW5wdXRNb2R1bGUsXG4gICAgICAgIFR1aVRleHRmaWVsZENvbnRyb2xsZXJNb2R1bGUsXG4gICAgICAgIFR1aUlucHV0UGhvbmVNb2R1bGUsXG4gICAgICAgIFNjRm9ybUZpZWxkc01vZHVsZSxcbiAgICAgICAgLi4uVHVpRGF0YUxpc3QsXG4gICAgICAgIEFuZ3VsYXJZYW5kZXhNYXBzTW9kdWxlLmZvclJvb3Qoe1xuICAgICAgICAgICAgbGFuZzogJ3J1X1JVJyxcbiAgICAgICAgfSksXG4gICAgICAgIFR1aUVsYXN0aWNDb250YWluZXIsXG4gICAgICAgIFR1aUJ1dHRvbkxvYWRpbmcsXG4gICAgICAgIC4uLlR1aVB1c2gsXG4gICAgICAgIFR1aUljb24sXG4gICAgICAgIFNjTWFuYWdlckNhcmRDb21wb25lbnQsXG4gICAgICAgIFR1aUlucHV0UGhvbmVJbnRlcm5hdGlvbmFsLFxuICAgICAgICAuLi5UdWlUZXh0ZmllbGQsXG4gICAgICAgIFR1aVNvcnRDb3VudHJpZXNQaXBlLFxuICAgIF0sXG4gICAgZXhwb3J0czogW1NjRGVsaXZlcnlBZGRyZXNzQWNjb3JkaW9uQ29tcG9uZW50LCBTY0FkZERlbGl2ZXJ5QWRkcmVzc0RpYWxvZ0NvbXBvbmVudF0sXG59KVxuZXhwb3J0IGNsYXNzIFNjRGVsaXZlcnlBZGRyZXNzTW9kdWxlIHt9XG4iXX0=
@@ -4,6 +4,7 @@ import { ScAddressQualityService } from './sc-address-quality.service';
4
4
  import * as i0 from "@angular/core";
5
5
  /**
6
6
  * Директива предупреждения о качестве (полноте) адреса, выбранного из подсказок, для поля с контролом формы.
7
+ * Пока предупреждение показывается, {@link getAppearance} задаёт полю appearance предупреждения (жёлтая рамка) для `tuiTextfieldAppearance`.
7
8
  *
8
9
  * Блокировку отправки формы с неполным адресом обеспечивает валидатор {@link ScAddressQualityService.validator},
9
10
  * подключённый к контролу адреса при его создании.
@@ -26,6 +27,12 @@ export class ScAddressQualityDirective {
26
27
  const { control } = this.ngControl;
27
28
  return control ? this.addressQualityService.getWarningMessage(control) : null;
28
29
  }
30
+ /**
31
+ * Возвращает appearance поля адреса: appearance предупреждения, пока оно показывается, иначе пустую строку (appearance поля по умолчанию).
32
+ */
33
+ getAppearance() {
34
+ return this.getWarningMessage() ? this.addressQualityService.warningAppearance : '';
35
+ }
29
36
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScAddressQualityDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
30
37
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: ScAddressQualityDirective, isStandalone: true, selector: "[scAddressQuality]", exportAs: ["scAddressQuality"], ngImport: i0 }); }
31
38
  }
@@ -37,4 +44,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
37
44
  exportAs: 'scAddressQuality',
38
45
  }]
39
46
  }] });
40
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtYWRkcmVzcy1xdWFsaXR5LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9kaXJlY3RpdmVzL2FkZHJlc3MtcXVhbGl0eS9zYy1hZGRyZXNzLXF1YWxpdHkuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7QUFFdkU7Ozs7O0dBS0c7QUFNSCxNQUFNLE9BQU8seUJBQXlCO0lBTHRDO1FBTUk7O1dBRUc7UUFDYyxjQUFTLEdBQUcsTUFBTSxDQUFDLFNBQVMsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBRS9EOztXQUVHO1FBQ2MsMEJBQXFCLEdBQUcsTUFBTSxDQUFDLHVCQUF1QixDQUFDLENBQUM7S0FVNUU7SUFSRzs7T0FFRztJQUNJLGlCQUFpQjtRQUNwQixNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUVuQyxPQUFPLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDbEYsQ0FBQzsrR0FsQlEseUJBQXlCO21HQUF6Qix5QkFBeUI7OzRGQUF6Qix5QkFBeUI7a0JBTHJDLFNBQVM7bUJBQUM7b0JBQ1AsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRSxvQkFBb0I7b0JBQzlCLFFBQVEsRUFBRSxrQkFBa0I7aUJBQy9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5nQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgU2NBZGRyZXNzUXVhbGl0eVNlcnZpY2UgfSBmcm9tICcuL3NjLWFkZHJlc3MtcXVhbGl0eS5zZXJ2aWNlJztcblxuLyoqXG4gKiDQlNC40YDQtdC60YLQuNCy0LAg0L/RgNC10LTRg9C/0YDQtdC20LTQtdC90LjRjyDQviDQutCw0YfQtdGB0YLQstC1ICjQv9C+0LvQvdC+0YLQtSkg0LDQtNGA0LXRgdCwLCDQstGL0LHRgNCw0L3QvdC+0LPQviDQuNC3INC/0L7QtNGB0LrQsNC30L7Quiwg0LTQu9GPINC/0L7Qu9GPINGBINC60L7QvdGC0YDQvtC70L7QvCDRhNC+0YDQvNGLLlxuICpcbiAqINCR0LvQvtC60LjRgNC+0LLQutGDINC+0YLQv9GA0LDQstC60Lgg0YTQvtGA0LzRiyDRgSDQvdC10L/QvtC70L3Ri9C8INCw0LTRgNC10YHQvtC8INC+0LHQtdGB0L/QtdGH0LjQstCw0LXRgiDQstCw0LvQuNC00LDRgtC+0YAge0BsaW5rIFNjQWRkcmVzc1F1YWxpdHlTZXJ2aWNlLnZhbGlkYXRvcn0sXG4gKiDQv9C+0LTQutC70Y7Rh9GR0L3QvdGL0Lkg0Log0LrQvtC90YLRgNC+0LvRgyDQsNC00YDQtdGB0LAg0L/RgNC4INC10LPQviDRgdC+0LfQtNCw0L3QuNC4LlxuICovXG5ARGlyZWN0aXZlKHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnW3NjQWRkcmVzc1F1YWxpdHldJyxcbiAgICBleHBvcnRBczogJ3NjQWRkcmVzc1F1YWxpdHknLFxufSlcbmV4cG9ydCBjbGFzcyBTY0FkZHJlc3NRdWFsaXR5RGlyZWN0aXZlIHtcbiAgICAvKipcbiAgICAgKiDQmtC+0L3RgtGA0L7QuyDQv9C+0LvRjyDQsNC00YDQtdGB0LAuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBuZ0NvbnRyb2wgPSBpbmplY3QoTmdDb250cm9sLCB7IHNlbGY6IHRydWUgfSk7XG5cbiAgICAvKipcbiAgICAgKiDQodC10YDQstC40YEt0YDQtdC10YHRgtGAINC60LDRh9C10YHRgtCy0LAg0LDQtNGA0LXRgdC+0LIsINCy0YvQsdGA0LDQvdC90YvRhSDQuNC3INC/0L7QtNGB0LrQsNC30L7Qui5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IGFkZHJlc3NRdWFsaXR5U2VydmljZSA9IGluamVjdChTY0FkZHJlc3NRdWFsaXR5U2VydmljZSk7XG5cbiAgICAvKipcbiAgICAgKiDQktC+0LfQstGA0LDRidCw0LXRgiDRgtC10LrRgdGCINC/0YDQtdC00YPQv9GA0LXQttC00LXQvdC40Y8g0L4g0L3QtdC+0LHRhdC+0LTQuNC80L7RgdGC0Lgg0L/RgNC+0LLQtdGA0LjRgtGMINCy0YvQsdGA0LDQvdC90YvQuSDQsNC00YDQtdGBINC70LjQsdC+IG51bGwsINC60L7Qs9C00LAg0L/RgNC10LTRg9C/0YDQtdC20LTQtdC90LjQtSDQvdC1INGC0YDQtdCx0YPQtdGC0YHRjy5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0V2FybmluZ01lc3NhZ2UoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgICAgIGNvbnN0IHsgY29udHJvbCB9ID0gdGhpcy5uZ0NvbnRyb2w7XG5cbiAgICAgICAgcmV0dXJuIGNvbnRyb2wgPyB0aGlzLmFkZHJlc3NRdWFsaXR5U2VydmljZS5nZXRXYXJuaW5nTWVzc2FnZShjb250cm9sKSA6IG51bGw7XG4gICAgfVxufVxuIl19
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtYWRkcmVzcy1xdWFsaXR5LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9kaXJlY3RpdmVzL2FkZHJlc3MtcXVhbGl0eS9zYy1hZGRyZXNzLXF1YWxpdHkuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7QUFFdkU7Ozs7OztHQU1HO0FBTUgsTUFBTSxPQUFPLHlCQUF5QjtJQUx0QztRQU1JOztXQUVHO1FBQ2MsY0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUUvRDs7V0FFRztRQUNjLDBCQUFxQixHQUFHLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0tBaUI1RTtJQWZHOztPQUVHO0lBQ0ksaUJBQWlCO1FBQ3BCLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBRW5DLE9BQU8sT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNsRixDQUFDO0lBRUQ7O09BRUc7SUFDSSxhQUFhO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ3hGLENBQUM7K0dBekJRLHlCQUF5QjttR0FBekIseUJBQXlCOzs0RkFBekIseUJBQXlCO2tCQUxyQyxTQUFTO21CQUFDO29CQUNQLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUUsb0JBQW9CO29CQUM5QixRQUFRLEVBQUUsa0JBQWtCO2lCQUMvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ0NvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IFNjQWRkcmVzc1F1YWxpdHlTZXJ2aWNlIH0gZnJvbSAnLi9zYy1hZGRyZXNzLXF1YWxpdHkuc2VydmljZSc7XG5cbi8qKlxuICog0JTQuNGA0LXQutGC0LjQstCwINC/0YDQtdC00YPQv9GA0LXQttC00LXQvdC40Y8g0L4g0LrQsNGH0LXRgdGC0LLQtSAo0L/QvtC70L3QvtGC0LUpINCw0LTRgNC10YHQsCwg0LLRi9Cx0YDQsNC90L3QvtCz0L4g0LjQtyDQv9C+0LTRgdC60LDQt9C+0LosINC00LvRjyDQv9C+0LvRjyDRgSDQutC+0L3RgtGA0L7Qu9C+0Lwg0YTQvtGA0LzRiy5cbiAqINCf0L7QutCwINC/0YDQtdC00YPQv9GA0LXQttC00LXQvdC40LUg0L/QvtC60LDQt9GL0LLQsNC10YLRgdGPLCB7QGxpbmsgZ2V0QXBwZWFyYW5jZX0g0LfQsNC00LDRkdGCINC/0L7Qu9GOIGFwcGVhcmFuY2Ug0L/RgNC10LTRg9C/0YDQtdC20LTQtdC90LjRjyAo0LbRkdC70YLQsNGPINGA0LDQvNC60LApINC00LvRjyBgdHVpVGV4dGZpZWxkQXBwZWFyYW5jZWAuXG4gKlxuICog0JHQu9C+0LrQuNGA0L7QstC60YMg0L7RgtC/0YDQsNCy0LrQuCDRhNC+0YDQvNGLINGBINC90LXQv9C+0LvQvdGL0Lwg0LDQtNGA0LXRgdC+0Lwg0L7QsdC10YHQv9C10YfQuNCy0LDQtdGCINCy0LDQu9C40LTQsNGC0L7RgCB7QGxpbmsgU2NBZGRyZXNzUXVhbGl0eVNlcnZpY2UudmFsaWRhdG9yfSxcbiAqINC/0L7QtNC60LvRjtGH0ZHQvdC90YvQuSDQuiDQutC+0L3RgtGA0L7Qu9GDINCw0LTRgNC10YHQsCDQv9GA0Lgg0LXQs9C+INGB0L7Qt9C00LDQvdC40LguXG4gKi9cbkBEaXJlY3RpdmUoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6ICdbc2NBZGRyZXNzUXVhbGl0eV0nLFxuICAgIGV4cG9ydEFzOiAnc2NBZGRyZXNzUXVhbGl0eScsXG59KVxuZXhwb3J0IGNsYXNzIFNjQWRkcmVzc1F1YWxpdHlEaXJlY3RpdmUge1xuICAgIC8qKlxuICAgICAqINCa0L7QvdGC0YDQvtC7INC/0L7Qu9GPINCw0LTRgNC10YHQsC5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IG5nQ29udHJvbCA9IGluamVjdChOZ0NvbnRyb2wsIHsgc2VsZjogdHJ1ZSB9KTtcblxuICAgIC8qKlxuICAgICAqINCh0LXRgNCy0LjRgS3RgNC10LXRgdGC0YAg0LrQsNGH0LXRgdGC0LLQsCDQsNC00YDQtdGB0L7Qsiwg0LLRi9Cx0YDQsNC90L3Ri9GFINC40Lcg0L/QvtC00YHQutCw0LfQvtC6LlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgYWRkcmVzc1F1YWxpdHlTZXJ2aWNlID0gaW5qZWN0KFNjQWRkcmVzc1F1YWxpdHlTZXJ2aWNlKTtcblxuICAgIC8qKlxuICAgICAqINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCINGC0LXQutGB0YIg0L/RgNC10LTRg9C/0YDQtdC20LTQtdC90LjRjyDQviDQvdC10L7QsdGF0L7QtNC40LzQvtGB0YLQuCDQv9GA0L7QstC10YDQuNGC0Ywg0LLRi9Cx0YDQsNC90L3Ri9C5INCw0LTRgNC10YEg0LvQuNCx0L4gbnVsbCwg0LrQvtCz0LTQsCDQv9GA0LXQtNGD0L/RgNC10LbQtNC10L3QuNC1INC90LUg0YLRgNC10LHRg9C10YLRgdGPLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRXYXJuaW5nTWVzc2FnZSgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICAgICAgY29uc3QgeyBjb250cm9sIH0gPSB0aGlzLm5nQ29udHJvbDtcblxuICAgICAgICByZXR1cm4gY29udHJvbCA/IHRoaXMuYWRkcmVzc1F1YWxpdHlTZXJ2aWNlLmdldFdhcm5pbmdNZXNzYWdlKGNvbnRyb2wpIDogbnVsbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQktC+0LfQstGA0LDRidCw0LXRgiBhcHBlYXJhbmNlINC/0L7Qu9GPINCw0LTRgNC10YHQsDogYXBwZWFyYW5jZSDQv9GA0LXQtNGD0L/RgNC10LbQtNC10L3QuNGPLCDQv9C+0LrQsCDQvtC90L4g0L/QvtC60LDQt9GL0LLQsNC10YLRgdGPLCDQuNC90LDRh9C1INC/0YPRgdGC0YPRjiDRgdGC0YDQvtC60YMgKGFwcGVhcmFuY2Ug0L/QvtC70Y8g0L/QviDRg9C80L7Qu9GH0LDQvdC40Y4pLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRBcHBlYXJhbmNlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFdhcm5pbmdNZXNzYWdlKCkgPyB0aGlzLmFkZHJlc3NRdWFsaXR5U2VydmljZS53YXJuaW5nQXBwZWFyYW5jZSA6ICcnO1xuICAgIH1cbn1cbiJdfQ==
@@ -29,7 +29,15 @@ export class ScAddressQualityService {
29
29
  /**
30
30
  * Ошибка валидации неполного адреса.
31
31
  */
32
- this.incompleteAddressError = new TuiValidationError('Адрес неполный, выберите более точный вариант из подсказок');
32
+ this.incompleteAddressError = new TuiValidationError('Проверьте адрес и выберите более точный вариант из подсказок');
33
+ /**
34
+ * Текст предупреждения о необходимости проверить адрес, общий для неполного адреса и адреса с неопределённой полнотой.
35
+ */
36
+ this.warningMessage = 'Проверьте правильность адреса';
37
+ /**
38
+ * Appearance поля адреса с предупреждением о необходимости проверить адрес (жёлтая рамка), задаётся через `tuiTextfieldAppearance`.
39
+ */
40
+ this.warningAppearance = 'sc-textfield-warning';
33
41
  /**
34
42
  * Реестр состояний качества по контролам адресов.
35
43
  */
@@ -144,20 +152,20 @@ export class ScAddressQualityService {
144
152
  }
145
153
  /**
146
154
  * Возвращает текст предупреждения о необходимости проверить выбранный адрес либо null, когда предупреждение не требуется,
147
- * в том числе для пустого поля. Для неполного адреса при включённой блокировке отправки вместо предупреждения
155
+ * в том числе для пустого и отключённого поля. Для неполного адреса при включённой блокировке отправки вместо предупреждения
148
156
  * показывается ошибка валидатора {@link validator}, если он подключён к контролу.
149
157
  *
150
158
  * @param control Контрол адреса.
151
159
  */
152
160
  getWarningMessage(control) {
153
- if (!this.isQualityCheckEnabled(control)) {
161
+ if (control.disabled || !this.isQualityCheckEnabled(control)) {
154
162
  return null;
155
163
  }
156
164
  switch (this.getQuality(control)) {
157
165
  case ScSuggestionAddressQuality.undetermined:
158
- return 'Не удалось определить полноту адреса, проверьте его';
166
+ return this.warningMessage;
159
167
  case ScSuggestionAddressQuality.incomplete:
160
- return this.blockIncompleteAddress && control.hasValidator(this.validator) ? null : 'Адрес неполный, проверьте его';
168
+ return this.blockIncompleteAddress && control.hasValidator(this.validator) ? null : this.warningMessage;
161
169
  default:
162
170
  return null;
163
171
  }
@@ -211,4 +219,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
211
219
  providedIn: 'root',
212
220
  }]
213
221
  }] });
214
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtYWRkcmVzcy1xdWFsaXR5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvZGlyZWN0aXZlcy9hZGRyZXNzLXF1YWxpdHkvc2MtYWRkcmVzcy1xdWFsaXR5LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBa0IsTUFBTSxlQUFlLENBQUM7QUFFdEYsT0FBTyxFQUE2QiwwQkFBMEIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQy9GLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRWxDLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDOztBQUcxRjs7Ozs7Ozs7R0FRRztBQUlILE1BQU0sT0FBTyx1QkFBdUI7SUFIcEM7UUFhSTs7Ozs7V0FLRztRQUNhLGNBQVMsR0FBZ0IsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFN0U7O1dBRUc7UUFDYywyQkFBc0IsR0FBWSxNQUFNLENBQUMsMkJBQTJCLENBQUMsQ0FBQztRQUV2Rjs7V0FFRztRQUNjLDJCQUFzQixHQUFHLElBQUksa0JBQWtCLENBQUMsNERBQTRELENBQUMsQ0FBQztRQUUvSDs7V0FFRztRQUNjLFdBQU0sR0FBRyxJQUFJLE9BQU8sRUFBa0UsQ0FBQztRQUV4Rzs7V0FFRztRQUNjLHVCQUFrQixHQUFHLElBQUksT0FBTyxFQUE0QyxDQUFDO0tBc0xqRztJQXpORzs7OztPQUlHO0lBQ0ssTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFjO1FBQ3hDLE9BQU8sS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQThCRDs7Ozs7OztPQU9HO0lBQ0ksVUFBVSxDQUFDLE9BQXdCLEVBQUUsT0FBMEM7UUFDbEYsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7UUFFdkYsSUFBSSxPQUFPLEtBQUssMEJBQTBCLENBQUMsVUFBVSxJQUFJLE9BQU8sS0FBSywwQkFBMEIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUMzRyxPQUFPLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDNUIsQ0FBQztRQUVELE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0ksVUFBVSxDQUFDLE9BQXdCO1FBQ3RDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUV0QyxJQUFJLENBQUMsS0FBSyxJQUFJLHVCQUF1QixDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNsRSxPQUFPLElBQUksQ0FBQztRQUNoQixDQUFDO1FBRUQsSUFBSSxLQUFLLENBQUMsT0FBTyxLQUFLLDBCQUEwQixDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3hELE9BQU8sS0FBSyxDQUFDLEtBQUssS0FBSyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQywwQkFBMEIsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUN0RixDQUFDO1FBRUQsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDO0lBQ3pCLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0ksK0JBQStCLENBQUMsS0FBc0IsRUFBRSxVQUFxQztRQUNoRyxNQUFNLFNBQVMsR0FBd0Y7WUFDbkcsQ0FBQyxjQUFjLEVBQUUsVUFBVSxDQUFDLFlBQVksRUFBRSxVQUFVLENBQUMsbUJBQW1CLENBQUM7WUFDekUsQ0FBQyxlQUFlLEVBQUUsVUFBVSxDQUFDLGFBQWEsRUFBRSxVQUFVLENBQUMsb0JBQW9CLENBQUM7WUFDNUUsQ0FBQyxlQUFlLEVBQUUsVUFBVSxDQUFDLGFBQWEsRUFBRSxVQUFVLENBQUMsb0JBQW9CLENBQUM7U0FDL0UsQ0FBQztRQUVGLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLEVBQUUsRUFBRTtZQUNsRCxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBRXZDLElBQUksT0FBTyxFQUFFLENBQUM7Z0JBQ1YsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDakUsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0ksc0JBQXNCLENBQUMsT0FBd0IsRUFBRSxPQUFnQjtRQUNwRSxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRWxELElBQUksU0FBUyxDQUFDLFlBQVksQ0FBQyxLQUFLLE9BQU8sRUFBRSxDQUFDO1lBQ3RDLE9BQU87UUFDWCxDQUFDO1FBRUQseUdBQXlHO1FBQ3pHLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDWCxZQUFZLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzlCLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxDQUFDLHNCQUFzQixDQUFDLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxxQkFBcUIsQ0FBQyxPQUF3QjtRQUNqRCxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztJQUMxQyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksUUFBUSxDQUFDLE9BQXdCO1FBQ3BDLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUV6QyxPQUFPLElBQUksQ0FBQyxzQkFBc0IsSUFBSSxJQUFJLENBQUMscUJBQXFCLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsS0FBSywwQkFBMEIsQ0FBQyxVQUFVO1lBQzNJLENBQUMsQ0FBQyxFQUFFLGlCQUFpQixFQUFFLElBQUksQ0FBQyxzQkFBc0IsRUFBRTtZQUNwRCxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ2YsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLGlCQUFpQixDQUFDLE9BQXdCO1FBQzdDLElBQUksQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUN2QyxPQUFPLElBQUksQ0FBQztRQUNoQixDQUFDO1FBRUQsUUFBUSxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDL0IsS0FBSywwQkFBMEIsQ0FBQyxZQUFZO2dCQUN4QyxPQUFPLHFEQUFxRCxDQUFDO1lBQ2pFLEtBQUssMEJBQTBCLENBQUMsVUFBVTtnQkFDdEMsT0FBTyxJQUFJLENBQUMsc0JBQXNCLElBQUksT0FBTyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsK0JBQStCLENBQUM7WUFDeEg7Z0JBQ0ksT0FBTyxJQUFJLENBQUM7UUFDcEIsQ0FBQztJQUNMLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ssT0FBTyxDQUFDLE9BQXdCO1FBQ3BDLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRXJDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNULEtBQUssR0FBRyxNQUFNLENBQWdDLElBQUksQ0FBQyxDQUFDO1lBQ3BELElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNwQyxDQUFDO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSyxjQUFjLENBQUMsT0FBd0I7UUFDM0MsSUFBSSxZQUFZLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUV4RCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDaEIsWUFBWSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM1QixJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxZQUFZLENBQUMsQ0FBQztRQUN2RCxDQUFDO1FBRUQsT0FBTyxZQUFZLENBQUM7SUFDeEIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSywwQkFBMEIsQ0FBQyxPQUF3QjtRQUN2RCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUV2QyxJQUFJLEtBQUssSUFBSSxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksdUJBQXVCLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3JGLCtFQUErRTtZQUMvRSxTQUFTLENBQUMsR0FBRyxFQUFFO2dCQUNYLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDcEIsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDO0lBQ0wsQ0FBQzsrR0F6TlEsdUJBQXVCO21IQUF2Qix1QkFBdUIsY0FGcEIsTUFBTTs7NEZBRVQsdUJBQXVCO2tCQUhuQyxVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSwgc2lnbmFsLCB1bnRyYWNrZWQsIFdyaXRhYmxlU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIFZhbGlkYXRpb25FcnJvcnMsIFZhbGlkYXRvckZuIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU2NJU3VnZ2VzdGlvbk9yZ2FuaXphdGlvbiwgU2NTdWdnZXN0aW9uQWRkcmVzc1F1YWxpdHkgfSBmcm9tICdAc25hYmNlbnRyL2NsaWVudC1jb3JlJztcbmltcG9ydCB7IFR1aVZhbGlkYXRpb25FcnJvciB9IGZyb20gJ0B0YWlnYS11aS9jZGsnO1xuaW1wb3J0IHsgaXNOaWwgfSBmcm9tICdsb2Rhc2gtZXMnO1xuXG5pbXBvcnQgeyBTQ19CTE9DS19JTkNPTVBMRVRFX0FERFJFU1MgfSBmcm9tICcuLi8uLi9wcm92aWRlcnMvc2MtYmxvY2staW5jb21wbGV0ZS1hZGRyZXNzJztcbmltcG9ydCB7IFNjSUFkZHJlc3NRdWFsaXR5U3RhdGUgfSBmcm9tICcuL3NjLWktYWRkcmVzcy1xdWFsaXR5LXN0YXRlJztcblxuLyoqXG4gKiDQodC10YDQstC40YEt0YDQtdC10YHRgtGAINC60LDRh9C10YHRgtCy0LAg0LDQtNGA0LXRgdC+0LIsINCy0YvQsdGA0LDQvdC90YvRhSDQuNC3INC/0L7QtNGB0LrQsNC30L7Qui5cbiAqXG4gKiDQpdGA0LDQvdC40YIg0LrQsNGH0LXRgdGC0LLQviDQv9C+0YHQu9C10LTQvdC10LPQviDQstGL0LHRgNCw0L3QvdC+0LPQviDQsNC00YDQtdGB0LAg0LTQu9GPINC60LDQttC00L7Qs9C+INC60L7QvdGC0YDQvtC70LAuINCa0LDRh9C10YHRgtCy0L4g0L/QvtC70L3QvtCz0L4g0LDQtNGA0LXRgdCwXG4gKiDQtNC10LnRgdGC0LLRg9C10YIsINC/0L7QutCwINC30L3QsNGH0LXQvdC40LUg0LrQvtC90YLRgNC+0LvQsCDQvdC1INC40LfQvNC10L3QuNC70L7RgdGMINC/0L7RgdC70LUg0LLRi9Cx0L7RgNCwOiDRgNGD0YfQvdCw0Y8g0L/RgNCw0LLQutCwINCy0L7Qt9Cy0YDQsNGJ0LDQtdGCINCw0LTRgNC10YFcbiAqINCyINGA0LDQt9GA0Y/QtCDQvdC10L/RgNC+0LLQtdGA0Y/QtdC80YvRhS4g0JrQsNGH0LXRgdGC0LLQviDQvdC10L/QvtC70L3QvtCz0L4g0LDQtNGA0LXRgdCwINC4INCw0LTRgNC10YHQsCDRgSDQvdC10L7Qv9GA0LXQtNC10LvRkdC90L3QvtC5INC/0L7Qu9C90L7RgtC+0Lkg0YHQvtGF0YDQsNC90Y/QtdGC0YHRj1xuICog0Lgg0L/RgNC4INGA0YPRh9C90L7QuSDQv9GA0LDQstC60LUg0YLQtdC60YHRgtCwOiDQtdCz0L4g0LfQsNC80LXQvdGP0LXRgiDRgtC+0LvRjNC60L4g0LLRi9Cx0L7RgCDQtNGA0YPQs9C+0Lkg0L/QvtC00YHQutCw0LfQutC4INC/0L4g0Y3RgtC+0LzRgyDQv9C+0LvRji5cbiAqINCf0L7Qu9C90LDRjyDQvtGH0LjRgdGC0LrQsCDQv9C+0LvRjyDRgdCx0YDQsNGB0YvQstCw0LXRgiDQutCw0YfQtdGB0YLQstC+OiDQsNC00YDQtdGBLCDQstCy0LXQtNGR0L3QvdGL0Lkg0L/QvtGB0LvQtSDQvdC10ZEsINGB0YfQuNGC0LDQtdGC0YHRjyDRgNGD0YfQvdGL0LwuXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFNjQWRkcmVzc1F1YWxpdHlTZXJ2aWNlIHtcbiAgICAvKipcbiAgICAgKiDQktC+0LfQstGA0LDRidCw0LXRgiDQv9GA0LjQt9C90LDQuiwg0YfRgtC+INC30L3QsNGH0LXQvdC40LUg0L/QvtC70Y8g0LDQtNGA0LXRgdCwINC/0YPRgdGC0L7QtSDQsdC10Lcg0YPRh9GR0YLQsCDQv9GA0L7QsdC10LvQvtCyLlxuICAgICAqXG4gICAgICogQHBhcmFtIHZhbHVlINCX0L3QsNGH0LXQvdC40LUg0L/QvtC70Y8g0LDQtNGA0LXRgdCwLlxuICAgICAqL1xuICAgIHByaXZhdGUgc3RhdGljIGlzRW1wdHlBZGRyZXNzKHZhbHVlOiB1bmtub3duKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBpc05pbCh2YWx1ZSkgfHwgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgIXZhbHVlLnRyaW0oKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JLQsNC70LjQtNCw0YLQvtGALCDQt9Cw0L/RgNC10YnQsNGO0YnQuNC5INC+0YLQv9GA0LDQstC60YMg0YTQvtGA0LzRiyDRgSDQvdC10L/QvtC70L3Ri9C8INCw0LTRgNC10YHQvtC8LCDQv9C+0LrQsCDQsdC70L7QutC40YDQvtCy0LrQsCDQstC60LvRjtGH0LXQvdCwINGC0L7QutC10L3QvtC8IHtAbGluayBTQ19CTE9DS19JTkNPTVBMRVRFX0FERFJFU1N9LlxuICAgICAqINCf0L7QtNC60LvRjtGH0LDQtdGC0YHRjyDQuiDQutC+0L3RgtGA0L7Qu9GDINCw0LTRgNC10YHQsCDQv9GA0Lgg0LXQs9C+INGB0L7Qt9C00LDQvdC40Lg7INC00LjRgNC10LrRgtC40LLQsCDQutCw0YfQtdGB0YLQstCwINCw0LTRgNC10YHQsCDRgtC+0LvRjNC60L4g0L/QvtC60LDQt9GL0LLQsNC10YIg0L/RgNC10LTRg9C/0YDQtdC20LTQtdC90LjQtS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBjb250cm9sINCa0L7QvdGC0YDQvtC7INCw0LTRgNC10YHQsC5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgdmFsaWRhdG9yOiBWYWxpZGF0b3JGbiA9IChjb250cm9sKSA9PiB0aGlzLnZhbGlkYXRlKGNvbnRyb2wpO1xuXG4gICAgLyoqXG4gICAgICog0J/RgNC40LfQvdCw0LosINGH0YLQviDQvtGC0L/RgNCw0LLQutCwINGE0L7RgNC8INGBINC90LXQv9C+0LvQvdGL0Lwg0LDQtNGA0LXRgdC+0Lwg0LfQsNCx0LvQvtC60LjRgNC+0LLQsNC90LAuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBibG9ja0luY29tcGxldGVBZGRyZXNzOiBib29sZWFuID0gaW5qZWN0KFNDX0JMT0NLX0lOQ09NUExFVEVfQUREUkVTUyk7XG5cbiAgICAvKipcbiAgICAgKiDQntGI0LjQsdC60LAg0LLQsNC70LjQtNCw0YbQuNC4INC90LXQv9C+0LvQvdC+0LPQviDQsNC00YDQtdGB0LAuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBpbmNvbXBsZXRlQWRkcmVzc0Vycm9yID0gbmV3IFR1aVZhbGlkYXRpb25FcnJvcign0JDQtNGA0LXRgSDQvdC10L/QvtC70L3Ri9C5LCDQstGL0LHQtdGA0LjRgtC1INCx0L7Qu9C10LUg0YLQvtGH0L3Ri9C5INCy0LDRgNC40LDQvdGCINC40Lcg0L/QvtC00YHQutCw0LfQvtC6Jyk7XG5cbiAgICAvKipcbiAgICAgKiDQoNC10LXRgdGC0YAg0YHQvtGB0YLQvtGP0L3QuNC5INC60LDRh9C10YHRgtCy0LAg0L/QviDQutC+0L3RgtGA0L7Qu9Cw0Lwg0LDQtNGA0LXRgdC+0LIuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBzdGF0ZXMgPSBuZXcgV2Vha01hcDxBYnN0cmFjdENvbnRyb2wsIFdyaXRhYmxlU2lnbmFsPFNjSUFkZHJlc3NRdWFsaXR5U3RhdGUgfCBudWxsPj4oKTtcblxuICAgIC8qKlxuICAgICAqINCg0LXQtdGB0YLRgCDQv9GA0LjQt9C90LDQutC+0LIg0LLQutC70Y7Rh9GR0L3QvdC+0LPQviDQutC+0L3RgtGA0L7Qu9GPINC60LDRh9C10YHRgtCy0LAg0L/QviDQutC+0L3RgtGA0L7Qu9Cw0Lwg0LDQtNGA0LXRgdC+0LIuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBjaGVja0VuYWJsZWRTdGF0ZXMgPSBuZXcgV2Vha01hcDxBYnN0cmFjdENvbnRyb2wsIFdyaXRhYmxlU2lnbmFsPGJvb2xlYW4+PigpO1xuXG4gICAgLyoqXG4gICAgICog0JfQsNC00LDRkdGCINC60LDRh9C10YHRgtCy0L4g0LDQtNGA0LXRgdCwLCDQstGL0LHRgNCw0L3QvdC+0LPQviDQsiDQutC+0L3RgtGA0L7Qu9C1LCDQuCDQv9C10YDQtdGB0YfQuNGC0YvQstCw0LXRgiDQstCw0LvQuNC00L3QvtGB0YLRjCDQutC+0L3RgtGA0L7Qu9CwXG4gICAgICog0LHQtdC3INGA0LDRgdGB0YvQu9C60Lgg0YHQvtCx0YvRgtC40LksINGH0YLQvtCx0Ysg0L3QtSDQvdCw0YDRg9GI0LDRgtGMINC/0L7QtNCw0LLQu9C10L3QuNC1IHZhbHVlQ2hhbmdlcyDQv9GA0Lgg0LLRi9Cx0L7RgNC1INC/0L7QtNGB0LrQsNC30LrQuC5cbiAgICAgKiDQmtC+0L3RgtGA0L7QuyDQsNC00YDQtdGB0LAsINGC0YDQtdCx0YPRjtGJ0LXQs9C+INCy0L3QuNC80LDQvdC40Y8g0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GPLCDQv9C+0LzQtdGH0LDQtdGC0YHRjyDQt9Cw0YLRgNC+0L3Rg9GC0YvQvCwg0YfRgtC+0LHRiyDRgdC+0L7QsdGJ0LXQvdC40Y8g0L/QvtC60LDQt9Cw0LvQuNGB0Ywg0YHRgNCw0LfRgy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBjb250cm9sINCa0L7QvdGC0YDQvtC7INCw0LTRgNC10YHQsC5cbiAgICAgKiBAcGFyYW0gcXVhbGl0eSDQmtCw0YfQtdGB0YLQstC+ICjQv9C+0LvQvdC+0YLQsCkg0LDQtNGA0LXRgdCwINC40LvQuCBudWxsLCDQtdGB0LvQuCDQutCw0YfQtdGB0YLQstC+INC90LXQuNC30LLQtdGB0YLQvdC+LlxuICAgICAqL1xuICAgIHB1YmxpYyBzZXRRdWFsaXR5KGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCwgcXVhbGl0eTogU2NTdWdnZXN0aW9uQWRkcmVzc1F1YWxpdHkgfCBudWxsKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3RhdGVPZihjb250cm9sKS5zZXQocXVhbGl0eSA9PT0gbnVsbCA/IG51bGwgOiB7IHF1YWxpdHksIHZhbHVlOiBjb250cm9sLnZhbHVlIH0pO1xuXG4gICAgICAgIGlmIChxdWFsaXR5ID09PSBTY1N1Z2dlc3Rpb25BZGRyZXNzUXVhbGl0eS5pbmNvbXBsZXRlIHx8IHF1YWxpdHkgPT09IFNjU3VnZ2VzdGlvbkFkZHJlc3NRdWFsaXR5LnVuZGV0ZXJtaW5lZCkge1xuICAgICAgICAgICAgY29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCINC60LDRh9C10YHRgtCy0L4g0LDQtNGA0LXRgdCwLCDQstGL0LHRgNCw0L3QvdC+0LPQviDQsiDQutC+0L3RgtGA0L7Qu9C1LCDQu9C40LHQviBudWxsLCDQtdGB0LvQuCDQsNC00YDQtdGBINC40Lcg0L/QvtC00YHQutCw0LfQvtC6XG4gICAgICog0L3QtSDQstGL0LHQuNGA0LDQu9GB0Y8g0LjQu9C4INC/0L7Qu9C1INC/0YPRgdGC0L7QtS4g0JrQsNGH0LXRgdGC0LLQviDQv9C+0LvQvdC+0LPQviDQsNC00YDQtdGB0LAg0LTQtdC50YHRgtCy0YPQtdGCLCDRgtC+0LvRjNC60L4g0L/QvtC60LAg0LfQvdCw0YfQtdC90LjQtSDQutC+0L3RgtGA0L7Qu9CwINC90LUg0LjQt9C80LXQvdC40LvQvtGB0YxcbiAgICAgKiDQv9C+0YHQu9C1INCy0YvQsdC+0YDQsDsg0LrQsNGH0LXRgdGC0LLQviDQvdC10L/QvtC70L3QvtCz0L4g0LDQtNGA0LXRgdCwINC4INCw0LTRgNC10YHQsCDRgSDQvdC10L7Qv9GA0LXQtNC10LvRkdC90L3QvtC5INC/0L7Qu9C90L7RgtC+0Lkg0LTQtdC50YHRgtCy0YPQtdGCXG4gICAgICog0LTQviDQstGL0LHQvtGA0LAg0LTRgNGD0LPQvtC5INC/0L7QtNGB0LrQsNC30LrQuCDQuNC70Lgg0L/QvtC70L3QvtC5INC+0YfQuNGB0YLQutC4INC/0L7Qu9GPLCDQsiDRgtC+0Lwg0YfQuNGB0LvQtSDQv9C+0YHQu9C1INGA0YPRh9C90L7QuSDQv9GA0LDQstC60Lgg0YLQtdC60YHRgtCwLlxuICAgICAqXG4gICAgICogQHBhcmFtIGNvbnRyb2wg0JrQvtC90YLRgNC+0Lsg0LDQtNGA0LXRgdCwLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRRdWFsaXR5KGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFNjU3VnZ2VzdGlvbkFkZHJlc3NRdWFsaXR5IHwgbnVsbCB7XG4gICAgICAgIGNvbnN0IHN0YXRlID0gdGhpcy5zdGF0ZU9mKGNvbnRyb2wpKCk7XG5cbiAgICAgICAgaWYgKCFzdGF0ZSB8fCBTY0FkZHJlc3NRdWFsaXR5U2VydmljZS5pc0VtcHR5QWRkcmVzcyhjb250cm9sLnZhbHVlKSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc3RhdGUucXVhbGl0eSA9PT0gU2NTdWdnZXN0aW9uQWRkcmVzc1F1YWxpdHkuY29tcGxldGUpIHtcbiAgICAgICAgICAgIHJldHVybiBzdGF0ZS52YWx1ZSA9PT0gY29udHJvbC52YWx1ZSA/IFNjU3VnZ2VzdGlvbkFkZHJlc3NRdWFsaXR5LmNvbXBsZXRlIDogbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzdGF0ZS5xdWFsaXR5O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCX0LDQtNCw0ZHRgiDQutCw0YfQtdGB0YLQstC+INCw0LTRgNC10YHQvtCyINC+0YDQs9Cw0L3QuNC30LDRhtC40Lgg0LrQvtC90YLRgNC+0LvQsNC8INCz0YDRg9C/0L/RiyDQvdCwINC+0YHQvdC+0LLQtSDQstGL0LHRgNCw0L3QvdC+0Lkg0L/QvtC00YHQutCw0LfQutC4LlxuICAgICAqINCa0LDRh9C10YHRgtCy0L4g0L/RgNC40LzQtdC90Y/QtdGC0YHRjyDRgtC+0LvRjNC60L4g0Log0LfQsNC/0L7Qu9C90LXQvdC90YvQvCDQsNC00YDQtdGB0LDQvCDQv9C+0LTRgdC60LDQt9C60Lg6INC00LvRjyDQv9GD0YHRgtC+0LPQviDQsNC00YDQtdGB0LBcbiAgICAgKiDQvtC90L4g0YHQsdGA0LDRgdGL0LLQsNC10YLRgdGPLCDQtNCw0LbQtSDQtdGB0LvQuCDRgdC10YDQstC40YEg0L/QvtC00YHQutCw0LfQvtC6INC/0YDQuNGB0LvQsNC7INC00LvRjyDQvdC10LPQviDQt9C90LDRh9C10L3QuNC1LlxuICAgICAqXG4gICAgICogQHBhcmFtIGdyb3VwINCT0YDRg9C/0L/QsCDRgSDQutC+0L3RgtGA0L7Qu9Cw0LzQuCDQsNC00YDQtdGB0L7QsiDQvtGA0LPQsNC90LjQt9Cw0YbQuNC4LlxuICAgICAqIEBwYXJhbSBzdWdnZXN0aW9uINCe0LHRitC10LrRgiDQv9C+0LTRgdC60LDQt9C60Lgg0L/QviDQvtGA0LPQsNC90LjQt9Cw0YbQuNC4LlxuICAgICAqL1xuICAgIHB1YmxpYyBzZXRPcmdhbml6YXRpb25BZGRyZXNzUXVhbGl0aWVzKGdyb3VwOiBBYnN0cmFjdENvbnRyb2wsIHN1Z2dlc3Rpb246IFNjSVN1Z2dlc3Rpb25Pcmdhbml6YXRpb24pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcXVhbGl0aWVzOiBSZWFkb25seUFycmF5PFtzdHJpbmcsIHN0cmluZyB8IHVuZGVmaW5lZCwgU2NTdWdnZXN0aW9uQWRkcmVzc1F1YWxpdHkgfCB1bmRlZmluZWRdPiA9IFtcbiAgICAgICAgICAgIFsnbGVnYWxBZGRyZXNzJywgc3VnZ2VzdGlvbi5sZWdhbEFkZHJlc3MsIHN1Z2dlc3Rpb24ubGVnYWxBZGRyZXNzUXVhbGl0eV0sXG4gICAgICAgICAgICBbJ3Bvc3RhbEFkZHJlc3MnLCBzdWdnZXN0aW9uLnBvc3RhbEFkZHJlc3MsIHN1Z2dlc3Rpb24ucG9zdGFsQWRkcmVzc1F1YWxpdHldLFxuICAgICAgICAgICAgWydhY3R1YWxBZGRyZXNzJywgc3VnZ2VzdGlvbi5hY3R1YWxBZGRyZXNzLCBzdWdnZXN0aW9uLmFjdHVhbEFkZHJlc3NRdWFsaXR5XSxcbiAgICAgICAgXTtcblxuICAgICAgICBxdWFsaXRpZXMuZm9yRWFjaCgoW2NvbnRyb2xOYW1lLCBhZGRyZXNzLCBxdWFsaXR5XSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY29udHJvbCA9IGdyb3VwLmdldChjb250cm9sTmFtZSk7XG5cbiAgICAgICAgICAgIGlmIChjb250cm9sKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRRdWFsaXR5KGNvbnRyb2wsIGFkZHJlc3MgPyAocXVhbGl0eSA/PyBudWxsKSA6IG51bGwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQktC60LvRjtGH0LDQtdGCINC40LvQuCDQvtGC0LrQu9GO0YfQsNC10YIg0LrQvtC90YLRgNC+0LvRjCDQutCw0YfQtdGB0YLQstCwINCw0LTRgNC10YHQsCDQtNC70Y8g0LrQvtC90YLRgNC+0LvQsCDQuCDQv9C10YDQtdGB0YfQuNGC0YvQstCw0LXRgiDQtdCz0L4g0LLQsNC70LjQtNC90L7RgdGC0Ywg0LHQtdC3INGA0LDRgdGB0YvQu9C60Lgg0YHQvtCx0YvRgtC40LkuXG4gICAgICog0KHQvtGF0YDQsNC90ZHQvdC90L7QtSDQutCw0YfQtdGB0YLQstC+INC/0YDQuCDQvtGC0LrQu9GO0YfQtdC90LjQuCDQvdC1INGC0LXRgNGP0LXRgtGB0Y8g0Lgg0YHQvdC+0LLQsCDRg9GH0LjRgtGL0LLQsNC10YLRgdGPINC/0L7RgdC70LUg0LLQutC70Y7Rh9C10L3QuNGPLlxuICAgICAqINCS0YvQt9GL0LLQsNGC0Ywg0L/RgNC4INGB0LzQtdC90LUg0LfQvdCw0YfQtdC90LjRjyDRhNC+0YDQvNGLLCDQsCDQvdC1INC40Lcg0YXRg9C60L7QsiDQv9GA0L7QstC10YDQutC4INC40LfQvNC10L3QtdC90LjQuSAobmdPbkNoYW5nZXMg0Lgg0YIu0L8uKSxcbiAgICAgKiDRh9GC0L7QsdGLINGA0L7QtNC40YLQtdC70YzRgdC60LjQtSDRiNCw0LHQu9C+0L3RiyDRgdGA0LDQt9GDINCy0LjQtNC10LvQuCDQsNC60YLRg9Cw0LvRjNC90YPRjiDQstCw0LvQuNC00L3QvtGB0YLRjC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBjb250cm9sINCa0L7QvdGC0YDQvtC7INCw0LTRgNC10YHQsC5cbiAgICAgKiBAcGFyYW0gZW5hYmxlZCDQn9GA0LjQt9C90LDQuiwg0YfRgtC+INC60L7QvdGC0YDQvtC70Ywg0LrQsNGH0LXRgdGC0LLQsCDQsNC00YDQtdGB0LAg0LLQutC70Y7Rh9GR0L0uXG4gICAgICovXG4gICAgcHVibGljIHNldFF1YWxpdHlDaGVja0VuYWJsZWQoY29udHJvbDogQWJzdHJhY3RDb250cm9sLCBlbmFibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGNoZWNrRW5hYmxlZCA9IHRoaXMuY2hlY2tFbmFibGVkT2YoY29udHJvbCk7XG5cbiAgICAgICAgaWYgKHVudHJhY2tlZChjaGVja0VuYWJsZWQpID09PSBlbmFibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyDQktGL0LfQvtCyINCy0L7Qt9C80L7QttC10L0g0LLQviDQstGA0LXQvNGPINC+0YLRgNC40YHQvtCy0LrQuCDRiNCw0LHQu9C+0L3QsCAo0L/QtdGA0LLQsNGPINC/0L7QtNC/0LjRgdC60LAgYXN5bmMgcGlwZSksINCz0LTQtSDQt9Cw0L/QuNGB0Ywg0YHQuNCz0L3QsNC70L7QsiDQt9Cw0L/RgNC10YnQtdC90LAuXG4gICAgICAgIHVudHJhY2tlZCgoKSA9PiB7XG4gICAgICAgICAgICBjaGVja0VuYWJsZWQuc2V0KGVuYWJsZWQpO1xuICAgICAgICB9KTtcbiAgICAgICAgY29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQktC+0LfQstGA0LDRidCw0LXRgiDQv9GA0LjQt9C90LDQuiwg0YfRgtC+INC60L7QvdGC0YDQvtC70Ywg0LrQsNGH0LXRgdGC0LLQsCDQsNC00YDQtdGB0LAg0LTQu9GPINC60L7QvdGC0YDQvtC70LAg0LLQutC70Y7Rh9GR0L0uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY29udHJvbCDQmtC+0L3RgtGA0L7QuyDQsNC00YDQtdGB0LAuXG4gICAgICovXG4gICAgcHVibGljIGlzUXVhbGl0eUNoZWNrRW5hYmxlZChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hlY2tFbmFibGVkT2YoY29udHJvbCkoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQktC+0LfQstGA0LDRidCw0LXRgiDQvtGI0LjQsdC60YMg0L3QtdC/0L7Qu9C90L7Qs9C+INCw0LTRgNC10YHQsCDQu9C40LHQviBudWxsLCDQtdGB0LvQuCDQutC+0L3RgtGA0L7QuyDQvNC+0LbQvdC+INC+0YLQv9GA0LDQstC70Y/RgtGMOiDQutC+0L3RgtGA0L7Qu9GMINC60LDRh9C10YHRgtCy0LAg0L7RgtC60LvRjtGH0ZHQvSxcbiAgICAgKiDQsdC70L7QutC40YDQvtCy0LrQsCDQstGL0LrQu9GO0YfQtdC90LAg0YLQvtC60LXQvdC+0Lwge0BsaW5rIFNDX0JMT0NLX0lOQ09NUExFVEVfQUREUkVTU30g0LjQu9C4INCw0LTRgNC10YEg0L3QtSDQvdC10L/QvtC70L3Ri9C5LlxuICAgICAqINCU0LvRjyDQvtGH0LjRidC10L3QvdC+0LPQviDQv9C+0LvRjyDRgdCx0YDQsNGB0YvQstCw0LXRgiDRgdC+0YXRgNCw0L3RkdC90L3QvtC1INC60LDRh9C10YHRgtCy0L4g0LDQtNGA0LXRgdCwLlxuICAgICAqXG4gICAgICogQHBhcmFtIGNvbnRyb2wg0JrQvtC90YLRgNC+0Lsg0LDQtNGA0LXRgdCwLlxuICAgICAqL1xuICAgIHB1YmxpYyB2YWxpZGF0ZShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgICAgIHRoaXMucmVzZXRRdWFsaXR5T2ZFbXB0eUFkZHJlc3MoY29udHJvbCk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuYmxvY2tJbmNvbXBsZXRlQWRkcmVzcyAmJiB0aGlzLmlzUXVhbGl0eUNoZWNrRW5hYmxlZChjb250cm9sKSAmJiB0aGlzLmdldFF1YWxpdHkoY29udHJvbCkgPT09IFNjU3VnZ2VzdGlvbkFkZHJlc3NRdWFsaXR5LmluY29tcGxldGVcbiAgICAgICAgICAgID8geyBpbmNvbXBsZXRlQWRkcmVzczogdGhpcy5pbmNvbXBsZXRlQWRkcmVzc0Vycm9yIH1cbiAgICAgICAgICAgIDogbnVsbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQktC+0LfQstGA0LDRidCw0LXRgiDRgtC10LrRgdGCINC/0YDQtdC00YPQv9GA0LXQttC00LXQvdC40Y8g0L4g0L3QtdC+0LHRhdC+0LTQuNC80L7RgdGC0Lgg0L/RgNC+0LLQtdGA0LjRgtGMINCy0YvQsdGA0LDQvdC90YvQuSDQsNC00YDQtdGBINC70LjQsdC+IG51bGwsINC60L7Qs9C00LAg0L/RgNC10LTRg9C/0YDQtdC20LTQtdC90LjQtSDQvdC1INGC0YDQtdCx0YPQtdGC0YHRjyxcbiAgICAgKiDQsiDRgtC+0Lwg0YfQuNGB0LvQtSDQtNC70Y8g0L/Rg9GB0YLQvtCz0L4g0L/QvtC70Y8uINCU0LvRjyDQvdC10L/QvtC70L3QvtCz0L4g0LDQtNGA0LXRgdCwINC/0YDQuCDQstC60LvRjtGH0ZHQvdC90L7QuSDQsdC70L7QutC40YDQvtCy0LrQtSDQvtGC0L/RgNCw0LLQutC4INCy0LzQtdGB0YLQviDQv9GA0LXQtNGD0L/RgNC10LbQtNC10L3QuNGPXG4gICAgICog0L/QvtC60LDQt9GL0LLQsNC10YLRgdGPINC+0YjQuNCx0LrQsCDQstCw0LvQuNC00LDRgtC+0YDQsCB7QGxpbmsgdmFsaWRhdG9yfSwg0LXRgdC70Lgg0L7QvSDQv9C+0LTQutC70Y7Rh9GR0L0g0Log0LrQvtC90YLRgNC+0LvRgy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBjb250cm9sINCa0L7QvdGC0YDQvtC7INCw0LTRgNC10YHQsC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0V2FybmluZ01lc3NhZ2UoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgICAgIGlmICghdGhpcy5pc1F1YWxpdHlDaGVja0VuYWJsZWQoY29udHJvbCkpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgc3dpdGNoICh0aGlzLmdldFF1YWxpdHkoY29udHJvbCkpIHtcbiAgICAgICAgICAgIGNhc2UgU2NTdWdnZXN0aW9uQWRkcmVzc1F1YWxpdHkudW5kZXRlcm1pbmVkOlxuICAgICAgICAgICAgICAgIHJldHVybiAn0J3QtSDRg9C00LDQu9C+0YHRjCDQvtC/0YDQtdC00LXQu9C40YLRjCDQv9C+0LvQvdC+0YLRgyDQsNC00YDQtdGB0LAsINC/0YDQvtCy0LXRgNGM0YLQtSDQtdCz0L4nO1xuICAgICAgICAgICAgY2FzZSBTY1N1Z2dlc3Rpb25BZGRyZXNzUXVhbGl0eS5pbmNvbXBsZXRlOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmJsb2NrSW5jb21wbGV0ZUFkZHJlc3MgJiYgY29udHJvbC5oYXNWYWxpZGF0b3IodGhpcy52YWxpZGF0b3IpID8gbnVsbCA6ICfQkNC00YDQtdGBINC90LXQv9C+0LvQvdGL0LksINC/0YDQvtCy0LXRgNGM0YLQtSDQtdCz0L4nO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCINGB0LjQs9C90LDQuyDRgdC+0YHRgtC+0Y/QvdC40Y8g0LrQsNGH0LXRgdGC0LLQsCDQtNC70Y8g0LrQvtC90YLRgNC+0LvQsCwg0YHQvtC30LTQsNCy0LDRjyDQtdCz0L4g0L/RgNC4INC/0LXRgNCy0L7QvCDQvtCx0YDQsNGJ0LXQvdC40LguXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY29udHJvbCDQmtC+0L3RgtGA0L7QuyDQsNC00YDQtdGB0LAuXG4gICAgICovXG4gICAgcHJpdmF0ZSBzdGF0ZU9mKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFdyaXRhYmxlU2lnbmFsPFNjSUFkZHJlc3NRdWFsaXR5U3RhdGUgfCBudWxsPiB7XG4gICAgICAgIGxldCBzdGF0ZSA9IHRoaXMuc3RhdGVzLmdldChjb250cm9sKTtcblxuICAgICAgICBpZiAoIXN0YXRlKSB7XG4gICAgICAgICAgICBzdGF0ZSA9IHNpZ25hbDxTY0lBZGRyZXNzUXVhbGl0eVN0YXRlIHwgbnVsbD4obnVsbCk7XG4gICAgICAgICAgICB0aGlzLnN0YXRlcy5zZXQoY29udHJvbCwgc3RhdGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHN0YXRlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCINGB0LjQs9C90LDQuyDQv9GA0LjQt9C90LDQutCwINCy0LrQu9GO0YfRkdC90L3QvtCz0L4g0LrQvtC90YLRgNC+0LvRjyDQutCw0YfQtdGB0YLQstCwINC00LvRjyDQutC+0L3RgtGA0L7Qu9CwLCDRgdC+0LfQtNCw0LLQsNGPINC10LPQviDQv9GA0Lgg0L/QtdGA0LLQvtC8INC+0LHRgNCw0YnQtdC90LjQuC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBjb250cm9sINCa0L7QvdGC0YDQvtC7INCw0LTRgNC10YHQsC5cbiAgICAgKi9cbiAgICBwcml2YXRlIGNoZWNrRW5hYmxlZE9mKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFdyaXRhYmxlU2lnbmFsPGJvb2xlYW4+IHtcbiAgICAgICAgbGV0IGNoZWNrRW5hYmxlZCA9IHRoaXMuY2hlY2tFbmFibGVkU3RhdGVzLmdldChjb250cm9sKTtcblxuICAgICAgICBpZiAoIWNoZWNrRW5hYmxlZCkge1xuICAgICAgICAgICAgY2hlY2tFbmFibGVkID0gc2lnbmFsKHRydWUpO1xuICAgICAgICAgICAgdGhpcy5jaGVja0VuYWJsZWRTdGF0ZXMuc2V0KGNvbnRyb2wsIGNoZWNrRW5hYmxlZCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY2hlY2tFbmFibGVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCh0LHRgNCw0YHRi9Cy0LDQtdGCINGB0L7RhdGA0LDQvdGR0L3QvdC+0LUg0LrQsNGH0LXRgdGC0LLQviDQsNC00YDQtdGB0LAsINC10YHQu9C4INC/0L7Qu9C1INC+0YfQuNGJ0LXQvdC+LlxuICAgICAqXG4gICAgICogQHBhcmFtIGNvbnRyb2wg0JrQvtC90YLRgNC+0Lsg0LDQtNGA0LXRgdCwLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVzZXRRdWFsaXR5T2ZFbXB0eUFkZHJlc3MoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHN0YXRlID0gdGhpcy5zdGF0ZXMuZ2V0KGNvbnRyb2wpO1xuXG4gICAgICAgIGlmIChzdGF0ZSAmJiB1bnRyYWNrZWQoc3RhdGUpICYmIFNjQWRkcmVzc1F1YWxpdHlTZXJ2aWNlLmlzRW1wdHlBZGRyZXNzKGNvbnRyb2wudmFsdWUpKSB7XG4gICAgICAgICAgICAvLyDQn9GA0L7QstC10YDQutCwINCy0L7Qt9C80L7QttC90LAg0LLQviDQstGA0LXQvNGPINC+0YLRgNC40YHQvtCy0LrQuCDRiNCw0LHQu9C+0L3QsCwg0LPQtNC1INC30LDQv9C40YHRjCDRgdC40LPQvdCw0LvQvtCyINC30LDQv9GA0LXRidC10L3QsC5cbiAgICAgICAgICAgIHVudHJhY2tlZCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgc3RhdGUuc2V0KG51bGwpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
222
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtYWRkcmVzcy1xdWFsaXR5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvZGlyZWN0aXZlcy9hZGRyZXNzLXF1YWxpdHkvc2MtYWRkcmVzcy1xdWFsaXR5LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBa0IsTUFBTSxlQUFlLENBQUM7QUFFdEYsT0FBTyxFQUE2QiwwQkFBMEIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQy9GLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRWxDLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDOztBQUcxRjs7Ozs7Ozs7R0FRRztBQUlILE1BQU0sT0FBTyx1QkFBdUI7SUFIcEM7UUFhSTs7Ozs7V0FLRztRQUNhLGNBQVMsR0FBZ0IsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFN0U7O1dBRUc7UUFDYywyQkFBc0IsR0FBWSxNQUFNLENBQUMsMkJBQTJCLENBQUMsQ0FBQztRQUV2Rjs7V0FFRztRQUNjLDJCQUFzQixHQUFHLElBQUksa0JBQWtCLENBQUMsOERBQThELENBQUMsQ0FBQztRQUVqSTs7V0FFRztRQUNjLG1CQUFjLEdBQUcsK0JBQStCLENBQUM7UUFFbEU7O1dBRUc7UUFDYSxzQkFBaUIsR0FBRyxzQkFBc0IsQ0FBQztRQUUzRDs7V0FFRztRQUNjLFdBQU0sR0FBRyxJQUFJLE9BQU8sRUFBa0UsQ0FBQztRQUV4Rzs7V0FFRztRQUNjLHVCQUFrQixHQUFHLElBQUksT0FBTyxFQUE0QyxDQUFDO0tBc0xqRztJQW5PRzs7OztPQUlHO0lB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UUFDUCxDQUFDO0lBQ0wsQ0FBQzsrR0FuT1EsdUJBQXVCO21IQUF2Qix1QkFBdUIsY0FGcEIsTUFBTTs7NEZBRVQsdUJBQXVCO2tCQUhuQyxVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSwgc2lnbmFsLCB1bnRyYWNrZWQsIFdyaXRhYmxlU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIFZhbGlkYXRpb25FcnJvcnMsIFZhbGlkYXRvckZuIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU2NJU3VnZ2VzdGlvbk9yZ2FuaXphdGlvbiwgU2NTdWdnZXN0aW9uQWRkcmVzc1F1YWxpdHkgfSBmcm9tICdAc25hYmNlbnRyL2NsaWVudC1jb3JlJztcbmltcG9ydCB7IFR1aVZhbGlkYXRpb25FcnJvciB9IGZyb20gJ0B0YWlnYS11aS9jZGsnO1xuaW1wb3J0IHsgaXNOaWwgfSBmcm9tICdsb2Rhc2gtZXMnO1xuXG5pbXBvcnQgeyBTQ19CTE9DS19JTkNPTVBMRVRFX0FERFJFU1MgfSBmcm9tICcuLi8uLi9wcm92aWRlcnMvc2MtYmxvY2staW5jb21wbGV0ZS1hZGRyZXNzJztcbmltcG9ydCB7IFNjSUFkZHJlc3NRdWFsaXR5U3RhdGUgfSBmcm9tICcuL3NjLWktYWRkcmVzcy1xdWFsaXR5LXN0YXRlJztcblxuLyoqXG4gKiDQodC10YDQstC40YEt0YDQtdC10YHRgtGAINC60LDRh9C10YHRgtCy0LAg0LDQtNGA0LXRgdC+0LIsINCy0YvQsdGA0LDQvdC90YvRhSDQuNC3INC/0L7QtNGB0LrQsNC30L7Qui5cbiAqXG4gKiDQpdGA0LDQvdC40YIg0LrQsNGH0LXRgdGC0LLQviDQv9C+0YHQu9C10LTQvdC10LPQviDQstGL0LHRgNCw0L3QvdC+0LPQviDQsNC00YDQtdGB0LAg0LTQu9GPINC60LDQttC00L7Qs9C+INC60L7QvdGC0YDQvtC70LAuINCa0LDRh9C10YHRgtCy0L4g0L/QvtC70L3QvtCz0L4g0LDQtNGA0LXRgdCwXG4gKiDQtNC10LnRgdGC0LLRg9C10YIsINC/0L7QutCwINC30L3QsNGH0LXQvdC40LUg0LrQvtC90YLRgNC+0LvQsCDQvdC1INC40LfQvNC10L3QuNC70L7RgdGMINC/0L7RgdC70LUg0LLRi9Cx0L7RgNCwOiDRgNGD0YfQvdCw0Y8g0L/RgNCw0LLQutCwINCy0L7Qt9Cy0YDQsNGJ0LDQtdGCINCw0LTRgNC10YFcbiAqINCyINGA0LDQt9GA0Y/QtCDQvdC10L/RgNC+0LLQtdGA0Y/QtdC80YvRhS4g0JrQsNGH0LXRgdGC0LLQviDQvdC10L/QvtC70L3QvtCz0L4g0LDQtNGA0LXRgdCwINC4INCw0LTRgNC10YHQsCDRgSDQvdC10L7Qv9GA0LXQtNC10LvRkdC90L3QvtC5INC/0L7Qu9C90L7RgtC+0Lkg0YHQvtGF0YDQsNC90Y/QtdGC0YHRj1xuICog0Lgg0L/RgNC4INGA0YPRh9C90L7QuSDQv9GA0LDQstC60LUg0YLQtdC60YHRgtCwOiDQtdCz0L4g0LfQsNC80LXQvdGP0LXRgiDRgtC+0LvRjNC60L4g0LLRi9Cx0L7RgCDQtNGA0YPQs9C+0Lkg0L/QvtC00YHQutCw0LfQutC4INC/0L4g0Y3RgtC+0LzRgyDQv9C+0LvRji5cbiAqINCf0L7Qu9C90LDRjyDQvtGH0LjRgdGC0LrQsCDQv9C+0LvRjyDRgdCx0YDQsNGB0YvQstCw0LXRgiDQutCw0YfQtdGB0YLQstC+OiDQsNC00YDQtdGBLCDQstCy0LXQtNGR0L3QvdGL0Lkg0L/QvtGB0LvQtSDQvdC10ZEsINGB0YfQuNGC0LDQtdGC0YHRjyDRgNGD0YfQvdGL0LwuXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFNjQWRkcmVzc1F1YWxpdHlTZXJ2aWNlIHtcbiAgICAvKipcbiAgICAgKiDQktC+0LfQstGA0LDRidCw0LXRgiDQv9GA0LjQt9C90LDQuiwg0YfRgtC+INC30L3QsNGH0LXQvdC40LUg0L/QvtC70Y8g0LDQtNGA0LXRgdCwINC/0YPRgdGC0L7QtSDQsdC10Lcg0YPRh9GR0YLQsCDQv9GA0L7QsdC10LvQvtCyLlxuICAgICAqXG4gICAgICogQHBhcmFtIHZhbHVlINCX0L3QsNGH0LXQvdC40LUg0L/QvtC70Y8g0LDQtNGA0LXRgdCwLlxuICAgICAqL1xuICAgIHByaXZhdGUgc3RhdGljIGlzRW1wdHlBZGRyZXNzKHZhbHVlOiB1bmtub3duKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBpc05pbCh2YWx1ZSkgfHwgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgIXZhbHVlLnRyaW0oKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JLQsNC70LjQtNCw0YLQvtGALCDQt9Cw0L/RgNC10YnQsNGO0YnQuNC5INC+0YLQv9GA0LDQstC60YMg0YTQvtGA0LzRiyDRgSDQvdC10L/QvtC70L3Ri9C8INCw0LTRgNC10YHQvtC8LCDQv9C+0LrQsCDQsdC70L7QutC40YDQvtCy0LrQsCDQstC60LvRjtGH0LXQvdCwINGC0L7QutC10L3QvtC8IHtAbGluayBTQ19CTE9DS19JTkNPTVBMRVRFX0FERFJFU1N9LlxuICAgICAqINCf0L7QtNC60LvRjtGH0LDQtdGC0YHRjyDQuiDQutC+0L3RgtGA0L7Qu9GDINCw0LTRgNC10YHQsCDQv9GA0Lgg0LXQs9C+INGB0L7Qt9C00LDQvdC40Lg7INC00LjRgNC10LrRgtC40LLQsCDQutCw0YfQtdGB0YLQstCwINCw0LTRgNC10YHQsCDRgtC+0LvRjNC60L4g0L/QvtC60LDQt9GL0LLQsNC10YIg0L/RgNC10LTRg9C/0YDQtdC20LTQtdC90LjQtS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBjb250cm9sINCa0L7QvdGC0YDQvtC7INCw0LTRgNC10YHQsC5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgdmFsaWRhdG9yOiBWYWxpZGF0b3JGbiA9IChjb250cm9sKSA9PiB0aGlzLnZhbGlkYXRlKGNvbnRyb2wpO1xuXG4gICAgLyoqXG4gICAgICog0J/RgNC40LfQvdCw0LosINGH0YLQviDQvtGC0L/RgNCw0LLQutCwINGE0L7RgNC8INGBINC90LXQv9C+0LvQvdGL0Lwg0LDQtNGA0LXRgdC+0Lwg0LfQsNCx0LvQvtC60LjRgNC+0LLQsNC90LAuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBibG9ja0luY29tcGxldGVBZGRyZXNzOiBib29sZWFuID0gaW5qZWN0KFNDX0JMT0NLX0lOQ09NUExFVEVfQUREUkVTUyk7XG5cbiAgICAvKipcbiAgICAgKiDQntGI0LjQsdC60LAg0LLQsNC70LjQtNCw0YbQuNC4INC90LXQv9C+0LvQvdC+0LPQviDQsNC00YDQtdGB0LAuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBpbmNvbXBsZXRlQWRkcmVzc0Vycm9yID0gbmV3IFR1aVZhbGlkYXRpb25FcnJvcign0J/RgNC+0LLQtdGA0YzRgtC1INCw0LTRgNC10YEg0Lgg0LLRi9Cx0LXRgNC40YLQtSDQsdC+0LvQtdC1INGC0L7Rh9C90YvQuSDQstCw0YDQuNCw0L3RgiDQuNC3INC/0L7QtNGB0LrQsNC30L7QuicpO1xuXG4gICAgLyoqXG4gICAgICog0KLQtdC60YHRgiDQv9GA0LXQtNGD0L/RgNC10LbQtNC10L3QuNGPINC+INC90LXQvtCx0YXQvtC00LjQvNC+0YHRgtC4INC/0YDQvtCy0LXRgNC40YLRjCDQsNC00YDQtdGBLCDQvtCx0YnQuNC5INC00LvRjyDQvdC10L/QvtC70L3QvtCz0L4g0LDQtNGA0LXRgdCwINC4INCw0LTRgNC10YHQsCDRgSDQvdC10L7Qv9GA0LXQtNC10LvRkdC90L3QvtC5INC/0L7Qu9C90L7RgtC+0LkuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSB3YXJuaW5nTWVzc2FnZSA9ICfQn9GA0L7QstC10YDRjNGC0LUg0L/RgNCw0LLQuNC70YzQvdC+0YHRgtGMINCw0LTRgNC10YHQsCc7XG5cbiAgICAvKipcbiAgICAgKiBBcHBlYXJhbmNlINC/0L7Qu9GPINCw0LTRgNC10YHQsCDRgSDQv9GA0LXQtNGD0L/RgNC10LbQtNC10L3QuNC10Lwg0L4g0L3QtdC+0LHRhdC+0LTQuNC80L7RgdGC0Lgg0L/RgNC+0LLQtdGA0LjRgtGMINCw0LTRgNC10YEgKNC20ZHQu9GC0LDRjyDRgNCw0LzQutCwKSwg0LfQsNC00LDRkdGC0YHRjyDRh9C10YDQtdC3IGB0dWlUZXh0ZmllbGRBcHBlYXJhbmNlYC5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgd2FybmluZ0FwcGVhcmFuY2UgPSAnc2MtdGV4dGZpZWxkLXdhcm5pbmcnO1xuXG4gICAgLyoqXG4gICAgICog0KDQtdC10YHRgtGAINGB0L7RgdGC0L7Rj9C90LjQuSDQutCw0YfQtdGB0YLQstCwINC/0L4g0LrQvtC90YLRgNC+0LvQsNC8INCw0LTRgNC10YHQvtCyLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgc3RhdGVzID0gbmV3IFdlYWtNYXA8QWJzdHJhY3RDb250cm9sLCBXcml0YWJsZVNpZ25hbDxTY0lBZGRyZXNzUXVhbGl0eVN0YXRlIHwgbnVsbD4+KCk7XG5cbiAgICAvKipcbiAgICAgKiDQoNC10LXRgdGC0YAg0L/RgNC40LfQvdCw0LrQvtCyINCy0LrQu9GO0YfRkdC90L3QvtCz0L4g0LrQvtC90YLRgNC+0LvRjyDQutCw0YfQtdGB0YLQstCwINC/0L4g0LrQvtC90YLRgNC+0LvQsNC8INCw0LTRgNC10YHQvtCyLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY2hlY2tFbmFibGVkU3RhdGVzID0gbmV3IFdlYWtNYXA8QWJzdHJhY3RDb250cm9sLCBXcml0YWJsZVNpZ25hbDxib29sZWFuPj4oKTtcblxuICAgIC8qKlxuICAgICAqINCX0LDQtNCw0ZHRgiDQutCw0YfQtdGB0YLQstC+INCw0LTRgNC10YHQsCwg0LLRi9Cx0YDQsNC90L3QvtCz0L4g0LIg0LrQvtC90YLRgNC+0LvQtSwg0Lgg0L/QtdGA0LXRgdGH0LjRgtGL0LLQsNC10YIg0LLQsNC70LjQtNC90L7RgdGC0Ywg0LrQvtC90YLRgNC+0LvQsFxuICAgICAqINCx0LXQtyDRgNCw0YHRgdGL0LvQutC4INGB0L7QsdGL0YLQuNC5LCDRh9GC0L7QsdGLINC90LUg0L3QsNGA0YPRiNCw0YLRjCDQv9C+0LTQsNCy0LvQtdC90LjQtSB2YWx1ZUNoYW5nZXMg0L/RgNC4INCy0YvQsdC+0YDQtSDQv9C+0LTRgdC60LDQt9C60LguXG4gICAgICog0JrQvtC90YLRgNC+0Lsg0LDQtNGA0LXRgdCwLCDRgtGA0LXQsdGD0Y7RidC10LPQviDQstC90LjQvNCw0L3QuNGPINC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjywg0L/QvtC80LXRh9Cw0LXRgtGB0Y8g0LfQsNGC0YDQvtC90YPRgtGL0LwsINGH0YLQvtCx0Ysg0YHQvtC+0LHRidC10L3QuNGPINC/0L7QutCw0LfQsNC70LjRgdGMINGB0YDQsNC30YMuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY29udHJvbCDQmtC+0L3RgtGA0L7QuyDQsNC00YDQtdGB0LAuXG4gICAgICogQHBhcmFtIHF1YWxpdHkg0JrQsNGH0LXRgdGC0LLQviAo0L/QvtC70L3QvtGC0LApINCw0LTRgNC10YHQsCDQuNC70LggbnVsbCwg0LXRgdC70Lgg0LrQsNGH0LXRgdGC0LLQviDQvdC10LjQt9Cy0LXRgdGC0L3Qvi5cbiAgICAgKi9cbiAgICBwdWJsaWMgc2V0UXVhbGl0eShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wsIHF1YWxpdHk6IFNjU3VnZ2VzdGlvbkFkZHJlc3NRdWFsaXR5IHwgbnVsbCk6IHZvaWQge1xuICAgICAgICB0aGlzLnN0YXRlT2YoY29udHJvbCkuc2V0KHF1YWxpdHkgPT09IG51bGwgPyBudWxsIDogeyBxdWFsaXR5LCB2YWx1ZTogY29udHJvbC52YWx1ZSB9KTtcblxuICAgICAgICBpZiAocXVhbGl0eSA9PT0gU2NTdWdnZXN0aW9uQWRkcmVzc1F1YWxpdHkuaW5jb21wbGV0ZSB8fCBxdWFsaXR5ID09PSBTY1N1Z2dlc3Rpb25BZGRyZXNzUXVhbGl0eS51bmRldGVybWluZWQpIHtcbiAgICAgICAgICAgIGNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQktC+0LfQstGA0LDRidCw0LXRgiDQutCw0YfQtdGB0YLQstC+INCw0LTRgNC10YHQsCwg0LLRi9Cx0YDQsNC90L3QvtCz0L4g0LIg0LrQvtC90YLRgNC+0LvQtSwg0LvQuNCx0L4gbnVsbCwg0LXRgdC70Lgg0LDQtNGA0LXRgSDQuNC3INC/0L7QtNGB0LrQsNC30L7QulxuICAgICAqINC90LUg0LLRi9Cx0LjRgNCw0LvRgdGPINC40LvQuCDQv9C+0LvQtSDQv9GD0YHRgtC+0LUuINCa0LDRh9C10YHRgtCy0L4g0L/QvtC70L3QvtCz0L4g0LDQtNGA0LXRgdCwINC00LXQudGB0YLQstGD0LXRgiwg0YLQvtC70YzQutC+INC/0L7QutCwINC30L3QsNGH0LXQvdC40LUg0LrQvtC90YLRgNC+0LvQsCDQvdC1INC40LfQvNC10L3QuNC70L7RgdGMXG4gICAgICog0L/QvtGB0LvQtSDQstGL0LHQvtGA0LA7INC60LDRh9C10YHRgtCy0L4g0L3QtdC/0L7Qu9C90L7Qs9C+INCw0LTRgNC10YHQsCDQuCDQsNC00YDQtdGB0LAg0YEg0L3QtdC+0L/RgNC10LTQtdC70ZHQvdC90L7QuSDQv9C+0LvQvdC+0YLQvtC5INC00LXQudGB0YLQstGD0LXRglxuICAgICAqINC00L4g0LLRi9Cx0L7RgNCwINC00YDRg9Cz0L7QuSDQv9C+0LTRgdC60LDQt9C60Lgg0LjQu9C4INC/0L7Qu9C90L7QuSDQvtGH0LjRgdGC0LrQuCDQv9C+0LvRjywg0LIg0YLQvtC8INGH0LjRgdC70LUg0L/QvtGB0LvQtSDRgNGD0YfQvdC+0Lkg0L/RgNCw0LLQutC4INGC0LXQutGB0YLQsC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBjb250cm9sINCa0L7QvdGC0YDQvtC7INCw0LTRgNC10YHQsC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0UXVhbGl0eShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBTY1N1Z2dlc3Rpb25BZGRyZXNzUXVhbGl0eSB8IG51bGwge1xuICAgICAgICBjb25zdCBzdGF0ZSA9IHRoaXMuc3RhdGVPZihjb250cm9sKSgpO1xuXG4gICAgICAgIGlmICghc3RhdGUgfHwgU2NBZGRyZXNzUXVhbGl0eVNlcnZpY2UuaXNFbXB0eUFkZHJlc3MoY29udHJvbC52YWx1ZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHN0YXRlLnF1YWxpdHkgPT09IFNjU3VnZ2VzdGlvbkFkZHJlc3NRdWFsaXR5LmNvbXBsZXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RhdGUudmFsdWUgPT09IGNvbnRyb2wudmFsdWUgPyBTY1N1Z2dlc3Rpb25BZGRyZXNzUXVhbGl0eS5jb21wbGV0ZSA6IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gc3RhdGUucXVhbGl0eTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQl9Cw0LTQsNGR0YIg0LrQsNGH0LXRgdGC0LLQviDQsNC00YDQtdGB0L7QsiDQvtGA0LPQsNC90LjQt9Cw0YbQuNC4INC60L7QvdGC0YDQvtC70LDQvCDQs9GA0YPQv9C/0Ysg0L3QsCDQvtGB0L3QvtCy0LUg0LLRi9Cx0YDQsNC90L3QvtC5INC/0L7QtNGB0LrQsNC30LrQuC5cbiAgICAgKiDQmtCw0YfQtdGB0YLQstC+INC/0YDQuNC80LXQvdGP0LXRgtGB0Y8g0YLQvtC70YzQutC+INC6INC30LDQv9C+0LvQvdC10L3QvdGL0Lwg0LDQtNGA0LXRgdCw0Lwg0L/QvtC00YHQutCw0LfQutC4OiDQtNC70Y8g0L/Rg9GB0YLQvtCz0L4g0LDQtNGA0LXRgdCwXG4gICAgICog0L7QvdC+INGB0LHRgNCw0YHRi9Cy0LDQtdGC0YHRjywg0LTQsNC20LUg0LXRgdC70Lgg0YHQtdGA0LLQuNGBINC/0L7QtNGB0LrQsNC30L7QuiDQv9GA0LjRgdC70LDQuyDQtNC70Y8g0L3QtdCz0L4g0LfQvdCw0YfQtdC90LjQtS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBncm91cCDQk9GA0YPQv9C/0LAg0YEg0LrQvtC90YLRgNC+0LvQsNC80Lgg0LDQtNGA0LXRgdC+0LIg0L7RgNCz0LDQvdC40LfQsNGG0LjQuC5cbiAgICAgKiBAcGFyYW0gc3VnZ2VzdGlvbiDQntCx0YrQtdC60YIg0L/QvtC00YHQutCw0LfQutC4INC/0L4g0L7RgNCz0LDQvdC40LfQsNGG0LjQuC5cbiAgICAgKi9cbiAgICBwdWJsaWMgc2V0T3JnYW5pemF0aW9uQWRkcmVzc1F1YWxpdGllcyhncm91cDogQWJzdHJhY3RDb250cm9sLCBzdWdnZXN0aW9uOiBTY0lTdWdnZXN0aW9uT3JnYW5pemF0aW9uKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHF1YWxpdGllczogUmVhZG9ubHlBcnJheTxbc3RyaW5nLCBzdHJpbmcgfCB1bmRlZmluZWQsIFNjU3VnZ2VzdGlvbkFkZHJlc3NRdWFsaXR5IHwgdW5kZWZpbmVkXT4gPSBbXG4gICAgICAgICAgICBbJ2xlZ2FsQWRkcmVzcycsIHN1Z2dlc3Rpb24ubGVnYWxBZGRyZXNzLCBzdWdnZXN0aW9uLmxlZ2FsQWRkcmVzc1F1YWxpdHldLFxuICAgICAgICAgICAgWydwb3N0YWxBZGRyZXNzJywgc3VnZ2VzdGlvbi5wb3N0YWxBZGRyZXNzLCBzdWdnZXN0aW9uLnBvc3RhbEFkZHJlc3NRdWFsaXR5XSxcbiAgICAgICAgICAgIFsnYWN0dWFsQWRkcmVzcycsIHN1Z2dlc3Rpb24uYWN0dWFsQWRkcmVzcywgc3VnZ2VzdGlvbi5hY3R1YWxBZGRyZXNzUXVhbGl0eV0sXG4gICAgICAgIF07XG5cbiAgICAgICAgcXVhbGl0aWVzLmZvckVhY2goKFtjb250cm9sTmFtZSwgYWRkcmVzcywgcXVhbGl0eV0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRyb2wgPSBncm91cC5nZXQoY29udHJvbE5hbWUpO1xuXG4gICAgICAgICAgICBpZiAoY29udHJvbCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0UXVhbGl0eShjb250cm9sLCBhZGRyZXNzID8gKHF1YWxpdHkgPz8gbnVsbCkgOiBudWxsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JLQutC70Y7Rh9Cw0LXRgiDQuNC70Lgg0L7RgtC60LvRjtGH0LDQtdGCINC60L7QvdGC0YDQvtC70Ywg0LrQsNGH0LXRgdGC0LLQsCDQsNC00YDQtdGB0LAg0LTQu9GPINC60L7QvdGC0YDQvtC70LAg0Lgg0L/QtdGA0LXRgdGH0LjRgtGL0LLQsNC10YIg0LXQs9C+INCy0LDQu9C40LTQvdC+0YHRgtGMINCx0LXQtyDRgNCw0YHRgdGL0LvQutC4INGB0L7QsdGL0YLQuNC5LlxuICAgICAqINCh0L7RhdGA0LDQvdGR0L3QvdC+0LUg0LrQsNGH0LXRgdGC0LLQviDQv9GA0Lgg0L7RgtC60LvRjtGH0LXQvdC40Lgg0L3QtSDRgtC10YDRj9C10YLRgdGPINC4INGB0L3QvtCy0LAg0YPRh9C40YLRi9Cy0LDQtdGC0YHRjyDQv9C+0YHQu9C1INCy0LrQu9GO0YfQtdC90LjRjy5cbiAgICAgKiDQktGL0LfRi9Cy0LDRgtGMINC/0YDQuCDRgdC80LXQvdC1INC30L3QsNGH0LXQvdC40Y8g0YTQvtGA0LzRiywg0LAg0L3QtSDQuNC3INGF0YPQutC+0LIg0L/RgNC+0LLQtdGA0LrQuCDQuNC30LzQtdC90LXQvdC40LkgKG5nT25DaGFuZ2VzINC4INGCLtC/LiksXG4gICAgICog0YfRgtC+0LHRiyDRgNC+0LTQuNGC0LXQu9GM0YHQutC40LUg0YjQsNCx0LvQvtC90Ysg0YHRgNCw0LfRgyDQstC40LTQtdC70Lgg0LDQutGC0YPQsNC70YzQvdGD0Y4g0LLQsNC70LjQtNC90L7RgdGC0YwuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY29udHJvbCDQmtC+0L3RgtGA0L7QuyDQsNC00YDQtdGB0LAuXG4gICAgICogQHBhcmFtIGVuYWJsZWQg0J/RgNC40LfQvdCw0LosINGH0YLQviDQutC+0L3RgtGA0L7Qu9GMINC60LDRh9C10YHRgtCy0LAg0LDQtNGA0LXRgdCwINCy0LrQu9GO0YfRkdC9LlxuICAgICAqL1xuICAgIHB1YmxpYyBzZXRRdWFsaXR5Q2hlY2tFbmFibGVkKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCwgZW5hYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBjb25zdCBjaGVja0VuYWJsZWQgPSB0aGlzLmNoZWNrRW5hYmxlZE9mKGNvbnRyb2wpO1xuXG4gICAgICAgIGlmICh1bnRyYWNrZWQoY2hlY2tFbmFibGVkKSA9PT0gZW5hYmxlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8g0JLRi9C30L7QsiDQstC+0LfQvNC+0LbQtdC9INCy0L4g0LLRgNC10LzRjyDQvtGC0YDQuNGB0L7QstC60Lgg0YjQsNCx0LvQvtC90LAgKNC/0LXRgNCy0LDRjyDQv9C+0LTQv9C40YHQutCwIGFzeW5jIHBpcGUpLCDQs9C00LUg0LfQsNC/0LjRgdGMINGB0LjQs9C90LDQu9C+0LIg0LfQsNC/0YDQtdGJ0LXQvdCwLlxuICAgICAgICB1bnRyYWNrZWQoKCkgPT4ge1xuICAgICAgICAgICAgY2hlY2tFbmFibGVkLnNldChlbmFibGVkKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JLQvtC30LLRgNCw0YnQsNC10YIg0L/RgNC40LfQvdCw0LosINGH0YLQviDQutC+0L3RgtGA0L7Qu9GMINC60LDRh9C10YHRgtCy0LAg0LDQtNGA0LXRgdCwINC00LvRjyDQutC+0L3RgtGA0L7Qu9CwINCy0LrQu9GO0YfRkdC9LlxuICAgICAqXG4gICAgICogQHBhcmFtIGNvbnRyb2wg0JrQvtC90YLRgNC+0Lsg0LDQtNGA0LXRgdCwLlxuICAgICAqL1xuICAgIHB1YmxpYyBpc1F1YWxpdHlDaGVja0VuYWJsZWQoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNoZWNrRW5hYmxlZE9mKGNvbnRyb2wpKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JLQvtC30LLRgNCw0YnQsNC10YIg0L7RiNC40LHQutGDINC90LXQv9C+0LvQvdC+0LPQviDQsNC00YDQtdGB0LAg0LvQuNCx0L4gbnVsbCwg0LXRgdC70Lgg0LrQvtC90YLRgNC+0Lsg0LzQvtC20L3QviDQvtGC0L/RgNCw0LLQu9GP0YLRjDog0LrQvtC90YLRgNC+0LvRjCDQutCw0YfQtdGB0YLQstCwINC+0YLQutC70Y7Rh9GR0L0sXG4gICAgICog0LHQu9C+0LrQuNGA0L7QstC60LAg0LLRi9C60LvRjtGH0LXQvdCwINGC0L7QutC10L3QvtC8IHtAbGluayBTQ19CTE9DS19JTkNPTVBMRVRFX0FERFJFU1N9INC40LvQuCDQsNC00YDQtdGBINC90LUg0L3QtdC/0L7Qu9C90YvQuS5cbiAgICAgKiDQlNC70Y8g0L7Rh9C40YnQtdC90L3QvtCz0L4g0L/QvtC70Y8g0YHQsdGA0LDRgdGL0LLQsNC10YIg0YHQvtGF0YDQsNC90ZHQvdC90L7QtSDQutCw0YfQtdGB0YLQstC+INCw0LTRgNC10YHQsC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBjb250cm9sINCa0L7QvdGC0YDQvtC7INCw0LTRgNC10YHQsC5cbiAgICAgKi9cbiAgICBwdWJsaWMgdmFsaWRhdGUoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgICAgICB0aGlzLnJlc2V0UXVhbGl0eU9mRW1wdHlBZGRyZXNzKGNvbnRyb2wpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmJsb2NrSW5jb21wbGV0ZUFkZHJlc3MgJiYgdGhpcy5pc1F1YWxpdHlDaGVja0VuYWJsZWQoY29udHJvbCkgJiYgdGhpcy5nZXRRdWFsaXR5KGNvbnRyb2wpID09PSBTY1N1Z2dlc3Rpb25BZGRyZXNzUXVhbGl0eS5pbmNvbXBsZXRlXG4gICAgICAgICAgICA/IHsgaW5jb21wbGV0ZUFkZHJlc3M6IHRoaXMuaW5jb21wbGV0ZUFkZHJlc3NFcnJvciB9XG4gICAgICAgICAgICA6IG51bGw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JLQvtC30LLRgNCw0YnQsNC10YIg0YLQtdC60YHRgiDQv9GA0LXQtNGD0L/RgNC10LbQtNC10L3QuNGPINC+INC90LXQvtCx0YXQvtC00LjQvNC+0YHRgtC4INC/0YDQvtCy0LXRgNC40YLRjCDQstGL0LHRgNCw0L3QvdGL0Lkg0LDQtNGA0LXRgSDQu9C40LHQviBudWxsLCDQutC+0LPQtNCwINC/0YDQtdC00YPQv9GA0LXQttC00LXQvdC40LUg0L3QtSDRgtGA0LXQsdGD0LXRgtGB0Y8sXG4gICAgICog0LIg0YLQvtC8INGH0LjRgdC70LUg0LTQu9GPINC/0YPRgdGC0L7Qs9C+INC4INC+0YLQutC70Y7Rh9GR0L3QvdC+0LPQviDQv9C+0LvRjy4g0JTQu9GPINC90LXQv9C+0LvQvdC+0LPQviDQsNC00YDQtdGB0LAg0L/RgNC4INCy0LrQu9GO0YfRkdC90L3QvtC5INCx0LvQvtC60LjRgNC+0LLQutC1INC+0YLQv9GA0LDQstC60Lgg0LLQvNC10YHRgtC+INC/0YDQtdC00YPQv9GA0LXQttC00LXQvdC40Y9cbiAgICAgKiDQv9C+0LrQsNC30YvQstCw0LXRgtGB0Y8g0L7RiNC40LHQutCwINCy0LDQu9C40LTQsNGC0L7RgNCwIHtAbGluayB2YWxpZGF0b3J9LCDQtdGB0LvQuCDQvtC9INC/0L7QtNC60LvRjtGH0ZHQvSDQuiDQutC+0L3RgtGA0L7Qu9GDLlxuICAgICAqXG4gICAgICogQHBhcmFtIGNvbnRyb2wg0JrQvtC90YLRgNC+0Lsg0LDQtNGA0LXRgdCwLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRXYXJuaW5nTWVzc2FnZShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBzdHJpbmcgfCBudWxsIHtcbiAgICAgICAgaWYgKGNvbnRyb2wuZGlzYWJsZWQgfHwgIXRoaXMuaXNRdWFsaXR5Q2hlY2tFbmFibGVkKGNvbnRyb2wpKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIHN3aXRjaCAodGhpcy5nZXRRdWFsaXR5KGNvbnRyb2wpKSB7XG4gICAgICAgICAgICBjYXNlIFNjU3VnZ2VzdGlvbkFkZHJlc3NRdWFsaXR5LnVuZGV0ZXJtaW5lZDpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy53YXJuaW5nTWVzc2FnZTtcbiAgICAgICAgICAgIGNhc2UgU2NTdWdnZXN0aW9uQWRkcmVzc1F1YWxpdHkuaW5jb21wbGV0ZTpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5ibG9ja0luY29tcGxldGVBZGRyZXNzICYmIGNvbnRyb2wuaGFzVmFsaWRhdG9yKHRoaXMudmFsaWRhdG9yKSA/IG51bGwgOiB0aGlzLndhcm5pbmdNZXNzYWdlO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCINGB0LjQs9C90LDQuyDRgdC+0YHRgtC+0Y/QvdC40Y8g0LrQsNGH0LXRgdGC0LLQsCDQtNC70Y8g0LrQvtC90YLRgNC+0LvQsCwg0YHQvtC30LTQsNCy0LDRjyDQtdCz0L4g0L/RgNC4INC/0LXRgNCy0L7QvCDQvtCx0YDQsNGJ0LXQvdC40LguXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY29udHJvbCDQmtC+0L3RgtGA0L7QuyDQsNC00YDQtdGB0LAuXG4gICAgICovXG4gICAgcHJpdmF0ZSBzdGF0ZU9mKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFdyaXRhYmxlU2lnbmFsPFNjSUFkZHJlc3NRdWFsaXR5U3RhdGUgfCBudWxsPiB7XG4gICAgICAgIGxldCBzdGF0ZSA9IHRoaXMuc3RhdGVzLmdldChjb250cm9sKTtcblxuICAgICAgICBpZiAoIXN0YXRlKSB7XG4gICAgICAgICAgICBzdGF0ZSA9IHNpZ25hbDxTY0lBZGRyZXNzUXVhbGl0eVN0YXRlIHwgbnVsbD4obnVsbCk7XG4gICAgICAgICAgICB0aGlzLnN0YXRlcy5zZXQoY29udHJvbCwgc3RhdGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHN0YXRlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCINGB0LjQs9C90LDQuyDQv9GA0LjQt9C90LDQutCwINCy0LrQu9GO0YfRkdC90L3QvtCz0L4g0LrQvtC90YLRgNC+0LvRjyDQutCw0YfQtdGB0YLQstCwINC00LvRjyDQutC+0L3RgtGA0L7Qu9CwLCDRgdC+0LfQtNCw0LLQsNGPINC10LPQviDQv9GA0Lgg0L/QtdGA0LLQvtC8INC+0LHRgNCw0YnQtdC90LjQuC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBjb250cm9sINCa0L7QvdGC0YDQvtC7INCw0LTRgNC10YHQsC5cbiAgICAgKi9cbiAgICBwcml2YXRlIGNoZWNrRW5hYmxlZE9mKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFdyaXRhYmxlU2lnbmFsPGJvb2xlYW4+IHtcbiAgICAgICAgbGV0IGNoZWNrRW5hYmxlZCA9IHRoaXMuY2hlY2tFbmFibGVkU3RhdGVzLmdldChjb250cm9sKTtcblxuICAgICAgICBpZiAoIWNoZWNrRW5hYmxlZCkge1xuICAgICAgICAgICAgY2hlY2tFbmFibGVkID0gc2lnbmFsKHRydWUpO1xuICAgICAgICAgICAgdGhpcy5jaGVja0VuYWJsZWRTdGF0ZXMuc2V0KGNvbnRyb2wsIGNoZWNrRW5hYmxlZCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY2hlY2tFbmFibGVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCh0LHRgNCw0YHRi9Cy0LDQtdGCINGB0L7RhdGA0LDQvdGR0L3QvdC+0LUg0LrQsNGH0LXRgdGC0LLQviDQsNC00YDQtdGB0LAsINC10YHQu9C4INC/0L7Qu9C1INC+0YfQuNGJ0LXQvdC+LlxuICAgICAqXG4gICAgICogQHBhcmFtIGNvbnRyb2wg0JrQvtC90YLRgNC+0Lsg0LDQtNGA0LXRgdCwLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVzZXRRdWFsaXR5T2ZFbXB0eUFkZHJlc3MoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHN0YXRlID0gdGhpcy5zdGF0ZXMuZ2V0KGNvbnRyb2wpO1xuXG4gICAgICAgIGlmIChzdGF0ZSAmJiB1bnRyYWNrZWQoc3RhdGUpICYmIFNjQWRkcmVzc1F1YWxpdHlTZXJ2aWNlLmlzRW1wdHlBZGRyZXNzKGNvbnRyb2wudmFsdWUpKSB7XG4gICAgICAgICAgICAvLyDQn9GA0L7QstC10YDQutCwINCy0L7Qt9C80L7QttC90LAg0LLQviDQstGA0LXQvNGPINC+0YLRgNC40YHQvtCy0LrQuCDRiNCw0LHQu9C+0L3QsCwg0LPQtNC1INC30LDQv9C40YHRjCDRgdC40LPQvdCw0LvQvtCyINC30LDQv9GA0LXRidC10L3QsC5cbiAgICAgICAgICAgIHVudHJhY2tlZCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgc3RhdGUuc2V0KG51bGwpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=