@vendure/admin-ui 2.1.7 → 2.1.9

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 (57) hide show
  1. package/catalog/catalog.module.d.ts +3 -3
  2. package/catalog/components/variant-price-strategy-detail/variant-price-strategy-detail.component.d.ts +10 -0
  3. package/catalog/public_api.d.ts +1 -1
  4. package/core/common/generated-types.d.ts +20 -0
  5. package/core/common/version.d.ts +1 -1
  6. package/core/data/utils/is-entity-create-or-update-mutation.d.ts +6 -0
  7. package/core/data/utils/remove-readonly-custom-fields.d.ts +5 -11
  8. package/core/public_api.d.ts +2 -0
  9. package/{catalog → core/shared}/components/assets/assets.component.d.ts +2 -1
  10. package/core/shared/shared.module.d.ts +157 -156
  11. package/esm2022/catalog/catalog.module.mjs +5 -5
  12. package/esm2022/catalog/components/collection-detail/collection-detail.component.mjs +4 -5
  13. package/esm2022/catalog/components/create-product-variant-dialog/create-product-variant-dialog.component.mjs +2 -2
  14. package/esm2022/catalog/components/product-detail/product-detail.component.mjs +4 -5
  15. package/esm2022/catalog/components/product-options-editor/product-options-editor.component.mjs +1 -1
  16. package/esm2022/catalog/components/product-variant-detail/product-variant-detail.component.mjs +5 -5
  17. package/esm2022/catalog/components/variant-price-strategy-detail/variant-price-strategy-detail.component.mjs +33 -0
  18. package/esm2022/catalog/public_api.mjs +2 -2
  19. package/esm2022/core/common/generated-types.mjs +1 -1
  20. package/esm2022/core/common/version.mjs +2 -2
  21. package/esm2022/core/components/breadcrumb/breadcrumb.component.mjs +3 -3
  22. package/esm2022/core/data/providers/base-data.service.mjs +3 -2
  23. package/esm2022/core/data/utils/is-entity-create-or-update-mutation.mjs +45 -0
  24. package/esm2022/core/data/utils/remove-readonly-custom-fields.mjs +15 -80
  25. package/esm2022/core/public_api.mjs +3 -1
  26. package/esm2022/{catalog → core/shared}/components/assets/assets.component.mjs +13 -5
  27. package/esm2022/core/shared/components/assign-to-channel-dialog/assign-to-channel-dialog.component.mjs +1 -1
  28. package/esm2022/core/shared/components/data-table/data-table.component.mjs +1 -1
  29. package/esm2022/core/shared/shared.module.mjs +5 -1
  30. package/esm2022/settings/components/channel-detail/channel-detail.component.mjs +5 -5
  31. package/fesm2022/vendure-admin-ui-catalog.mjs +40 -103
  32. package/fesm2022/vendure-admin-ui-catalog.mjs.map +1 -1
  33. package/fesm2022/vendure-admin-ui-core.mjs +157 -82
  34. package/fesm2022/vendure-admin-ui-core.mjs.map +1 -1
  35. package/fesm2022/vendure-admin-ui-settings.mjs +4 -4
  36. package/fesm2022/vendure-admin-ui-settings.mjs.map +1 -1
  37. package/package.json +13 -13
  38. package/static/i18n-messages/ar.json +2 -0
  39. package/static/i18n-messages/cs.json +2 -0
  40. package/static/i18n-messages/de.json +2 -0
  41. package/static/i18n-messages/en.json +2 -0
  42. package/static/i18n-messages/es.json +2 -0
  43. package/static/i18n-messages/fa.json +3 -1
  44. package/static/i18n-messages/fr.json +2 -0
  45. package/static/i18n-messages/he.json +2 -0
  46. package/static/i18n-messages/hr.json +2 -0
  47. package/static/i18n-messages/it.json +3 -1
  48. package/static/i18n-messages/ne.json +3 -1
  49. package/static/i18n-messages/pl.json +2 -0
  50. package/static/i18n-messages/pt_BR.json +3 -1
  51. package/static/i18n-messages/pt_PT.json +2 -0
  52. package/static/i18n-messages/ru.json +2 -0
  53. package/static/i18n-messages/sv.json +797 -0
  54. package/static/i18n-messages/uk.json +3 -1
  55. package/static/i18n-messages/zh_Hans.json +2 -0
  56. package/static/i18n-messages/zh_Hant.json +2 -0
  57. package/static/vendure-ui-config.json +2 -1
@@ -35,9 +35,9 @@ export class ChannelDetailComponent extends TypedBaseDetailComponent {
35
35
  pricesIncludeTax: [false],
36
36
  availableLanguageCodes: [[]],
37
37
  availableCurrencyCodes: [[]],
38
- defaultCurrencyCode: [''],
38
+ defaultCurrencyCode: ['', Validators.required],
39
39
  defaultShippingZoneId: ['', Validators.required],
40
- defaultLanguageCode: [undefined],
40
+ defaultLanguageCode: [undefined, Validators.required],
41
41
  defaultTaxZoneId: ['', Validators.required],
42
42
  sellerId: ['', Validators.required],
43
43
  customFields: this.formBuilder.group(getCustomFieldsDefaults(this.customFields)),
@@ -174,10 +174,10 @@ export class ChannelDetailComponent extends TypedBaseDetailComponent {
174
174
  .join('');
175
175
  }
176
176
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: ChannelDetailComponent, deps: [{ token: i1.ServerConfigService }, { token: i0.ChangeDetectorRef }, { token: i1.DataService }, { token: i2.FormBuilder }, { token: i1.NotificationService }], target: i0.ɵɵFactoryTarget.Component }); }
177
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.2", type: ChannelDetailComponent, selector: "vdr-channel-detail", usesInheritance: true, ngImport: i0, template: "<vdr-page-block>\r\n <vdr-action-bar>\r\n <vdr-ab-left></vdr-ab-left>\r\n\r\n <vdr-ab-right>\r\n <vdr-action-bar-items locationId=\"channel-detail\"></vdr-action-bar-items>\r\n <button\r\n class=\"btn btn-primary\"\r\n *ngIf=\"isNew$ | async; else updateButton\"\r\n (click)=\"create()\"\r\n [disabled]=\"!saveButtonEnabled()\"\r\n >\r\n {{ 'common.create' | translate }}\r\n </button>\r\n <ng-template #updateButton>\r\n <button\r\n class=\"btn btn-primary\"\r\n (click)=\"save()\"\r\n *vdrIfPermissions=\"['SuperAdmin', 'UpdateChannel']\"\r\n [disabled]=\"!saveButtonEnabled()\"\r\n >\r\n {{ 'common.update' | translate }}\r\n </button>\r\n </ng-template>\r\n </vdr-ab-right>\r\n </vdr-action-bar>\r\n</vdr-page-block>\r\n\r\n<form class=\"form\" [formGroup]=\"detailForm\">\r\n <vdr-page-detail-layout>\r\n <vdr-page-detail-sidebar>\r\n <vdr-card *ngIf=\"entity$ | async as entity\">\r\n <vdr-page-entity-info [entity]=\"entity\" />\r\n </vdr-card>\r\n </vdr-page-detail-sidebar>\r\n <vdr-page-block>\r\n <vdr-card>\r\n <div class=\"form-grid\">\r\n <vdr-form-field\r\n class=\"form-grid-span\"\r\n *ngIf=\"entity?.code !== DEFAULT_CHANNEL_CODE\"\r\n [label]=\"'common.code' | translate\"\r\n for=\"code\"\r\n >\r\n <input\r\n id=\"code\"\r\n type=\"text\"\r\n [readonly]=\"!(updatePermission | hasPermission)\"\r\n formControlName=\"code\"\r\n />\r\n </vdr-form-field>\r\n <vdr-form-item\r\n class=\"form-grid-span\"\r\n *ngIf=\"entity?.code === DEFAULT_CHANNEL_CODE\"\r\n [label]=\"'common.code' | translate\"\r\n >\r\n {{ entity?.code | channelCodeToLabel | translate }}\r\n </vdr-form-item>\r\n <vdr-form-field [label]=\"'settings.channel-token' | translate\" for=\"token\">\r\n <input\r\n id=\"token\"\r\n type=\"text\"\r\n [readonly]=\"!(updatePermission | hasPermission)\"\r\n formControlName=\"token\"\r\n />\r\n </vdr-form-field>\r\n\r\n <vdr-form-field [label]=\"'common.seller' | translate\" for=\"sellerId\">\r\n <select\r\n name=\"sellerId\"\r\n formControlName=\"sellerId\"\r\n [vdrDisabled]=\"!(updatePermission | hasPermission)\"\r\n >\r\n <option selected value style=\"display: none\"></option>\r\n <option *ngFor=\"let seller of sellers$ | async\" [value]=\"seller.id\">\r\n {{ seller.name }}\r\n </option>\r\n </select>\r\n </vdr-form-field>\r\n <vdr-form-field\r\n [label]=\"'common.available-languages' | translate\"\r\n for=\"availableLanguageCodes\"\r\n >\r\n <vdr-language-code-selector\r\n formControlName=\"availableLanguageCodes\"\r\n [languageCodes]=\"availableLanguageCodes$ | async\"\r\n ></vdr-language-code-selector>\r\n </vdr-form-field>\r\n <vdr-form-field\r\n [label]=\"'common.available-currencies' | translate\"\r\n for=\"availableCurrencyCodes\"\r\n >\r\n <vdr-currency-code-selector\r\n formControlName=\"availableCurrencyCodes\"\r\n ></vdr-currency-code-selector>\r\n </vdr-form-field>\r\n </div>\r\n </vdr-card>\r\n <vdr-card [title]=\"'settings.defaults' | translate\">\r\n <div class=\"form-grid\">\r\n <vdr-form-field [label]=\"'settings.default-currency' | translate\" for=\"defaultTaxZoneId\">\r\n <select\r\n name=\"defaultCurrencyCode\"\r\n formControlName=\"defaultCurrencyCode\"\r\n [vdrDisabled]=\"!(updatePermission | hasPermission)\"\r\n >\r\n <option\r\n *ngFor=\"let code of detailForm.value.availableCurrencyCodes\"\r\n [value]=\"code\"\r\n >\r\n {{ code | localeCurrencyName }}\r\n </option>\r\n </select>\r\n </vdr-form-field>\r\n <vdr-form-field [label]=\"'common.default-language' | translate\" for=\"defaultLanguage\">\r\n <select\r\n name=\"defaultLanguageCode\"\r\n formControlName=\"defaultLanguageCode\"\r\n [vdrDisabled]=\"!(updatePermission | hasPermission)\"\r\n >\r\n <option\r\n *ngFor=\"let languageCode of detailForm.value.availableLanguageCodes\"\r\n [value]=\"languageCode\"\r\n >\r\n {{ languageCode | localeLanguageName }} ({{ languageCode | uppercase }})\r\n </option>\r\n </select>\r\n </vdr-form-field>\r\n <div>\r\n <vdr-form-field\r\n [label]=\"'settings.default-tax-zone' | translate\"\r\n for=\"defaultTaxZoneId\"\r\n >\r\n <vdr-zone-selector\r\n formControlName=\"defaultTaxZoneId\"\r\n [vdrDisabled]=\"!(updatePermission | hasPermission)\"\r\n ></vdr-zone-selector>\r\n </vdr-form-field>\r\n <clr-alert\r\n *ngIf=\"detailForm.value.code && !detailForm.value.defaultTaxZoneId\"\r\n clrAlertType=\"danger\"\r\n [clrAlertClosable]=\"false\"\r\n >\r\n <clr-alert-item>\r\n <span class=\"alert-text\">\r\n {{ 'error.no-default-tax-zone-set' | translate }}\r\n </span>\r\n </clr-alert-item>\r\n </clr-alert>\r\n </div>\r\n\r\n <div>\r\n <vdr-form-field\r\n [label]=\"'settings.default-shipping-zone' | translate\"\r\n for=\"defaultShippingZoneId\"\r\n >\r\n <vdr-zone-selector\r\n name=\"defaultShippingZoneId\"\r\n formControlName=\"defaultShippingZoneId\"\r\n [vdrDisabled]=\"!(updatePermission | hasPermission)\"\r\n ></vdr-zone-selector>\r\n </vdr-form-field>\r\n <clr-alert\r\n *ngIf=\"detailForm.value.code && !detailForm.value.defaultShippingZoneId\"\r\n clrAlertType=\"warning\"\r\n [clrAlertClosable]=\"false\"\r\n >\r\n <clr-alert-item>\r\n <span class=\"alert-text\">\r\n {{ 'error.no-default-shipping-zone-set' | translate }}\r\n </span>\r\n </clr-alert-item>\r\n </clr-alert>\r\n </div>\r\n <vdr-form-field\r\n [label]=\"'settings.prices-include-tax' | translate\"\r\n for=\"pricesIncludeTax\"\r\n >\r\n <clr-toggle-wrapper>\r\n <input\r\n type=\"checkbox\"\r\n clrToggle\r\n id=\"pricesIncludeTax\"\r\n formControlName=\"pricesIncludeTax\"\r\n [vdrDisabled]=\"!(updatePermission | hasPermission)\"\r\n />\r\n </clr-toggle-wrapper>\r\n </vdr-form-field>\r\n </div>\r\n </vdr-card>\r\n <vdr-card\r\n formGroupName=\"customFields\"\r\n *ngIf=\"customFields.length\"\r\n [title]=\"'common.custom-fields' | translate\"\r\n >\r\n <vdr-tabbed-custom-fields\r\n entityName=\"Channel\"\r\n [customFields]=\"customFields\"\r\n [customFieldsFormGroup]=\"detailForm.get('customFields')\"\r\n ></vdr-tabbed-custom-fields>\r\n </vdr-card>\r\n <vdr-custom-detail-component-host\r\n locationId=\"channel-detail\"\r\n [entity$]=\"entity$\"\r\n [detailForm]=\"detailForm\"\r\n ></vdr-custom-detail-component-host>\r\n </vdr-page-block>\r\n </vdr-page-detail-layout>\r\n</form>\r\n", styles: ["clr-alert{max-width:30rem;margin-bottom:12px}\n"], dependencies: [{ kind: "component", type: i3.ClrAlert, selector: "clr-alert", inputs: ["clrAlertSizeSmall", "clrAlertClosable", "clrAlertAppLevel", "clrCloseButtonAriaLabel", "clrAlertType", "clrAlertIcon", "clrAlertClosed"], outputs: ["clrAlertClosedChange"] }, { kind: "component", type: i3.ClrAlertItem, selector: "clr-alert-item" }, { kind: "directive", type: i3.ClrAlertText, selector: ".alert-text" }, { kind: "directive", type: i3.ClrCheckbox, selector: "[clrCheckbox],[clrToggle]" }, { kind: "component", type: i3.ClrCheckboxWrapper, selector: "clr-checkbox-wrapper,clr-toggle-wrapper" }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.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: i2.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i2.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "component", type: i1.ActionBarComponent, selector: "vdr-action-bar" }, { kind: "component", type: i1.ActionBarLeftComponent, selector: "vdr-ab-left", inputs: ["grow"] }, { kind: "component", type: i1.ActionBarRightComponent, selector: "vdr-ab-right", inputs: ["grow"] }, { kind: "component", type: i1.FormFieldComponent, selector: "vdr-form-field", inputs: ["label", "for", "tooltip", "errors", "readOnlyToggle"] }, { kind: "directive", type: i1.FormFieldControlDirective, selector: "input, textarea, select" }, { kind: "component", type: i1.FormItemComponent, selector: "vdr-form-item", inputs: ["label", "tooltip"] }, { kind: "directive", type: i1.IfPermissionsDirective, selector: "[vdrIfPermissions]", inputs: ["vdrIfPermissions", "vdrIfPermissionsElse"] }, { kind: "component", type: i1.ActionBarItemsComponent, selector: "vdr-action-bar-items", inputs: ["locationId"] }, { kind: "directive", type: i1.DisabledDirective, selector: "[vdrDisabled]", inputs: ["vdrDisabled"] }, { kind: "component", type: i1.TabbedCustomFieldsComponent, selector: "vdr-tabbed-custom-fields", inputs: ["entityName", "customFields", "customFieldsFormGroup", "readonly", "compact", "showLabel"] }, { kind: "component", type: i1.CustomDetailComponentHostComponent, selector: "vdr-custom-detail-component-host", inputs: ["locationId", "entity$", "detailForm"] }, { kind: "component", type: i1.PageBlockComponent, selector: "vdr-page-block" }, { kind: "component", type: i1.PageEntityInfoComponent, selector: "vdr-page-entity-info", inputs: ["entity"] }, { kind: "component", type: i1.PageDetailLayoutComponent, selector: "vdr-page-detail-layout" }, { kind: "component", type: i1.PageDetailSidebarComponent, selector: "vdr-page-detail-sidebar" }, { kind: "component", type: i1.CardComponent, selector: "vdr-card", inputs: ["title", "paddingX"] }, { kind: "component", type: i1.ZoneSelectorComponent, selector: "vdr-zone-selector", inputs: ["readonly", "transformControlValueAccessorValue"], outputs: ["selectedValuesChange"] }, { kind: "component", type: i1.CurrencyCodeSelectorComponent, selector: "vdr-currency-code-selector" }, { kind: "component", type: i1.LanguageCodeSelectorComponent, selector: "vdr-language-code-selector", inputs: ["languageCodes"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.UpperCasePipe, name: "uppercase" }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }, { kind: "pipe", type: i1.LocaleCurrencyNamePipe, name: "localeCurrencyName" }, { kind: "pipe", type: i1.HasPermissionPipe, name: "hasPermission" }, { kind: "pipe", type: i1.ChannelLabelPipe, name: "channelCodeToLabel" }, { kind: "pipe", type: i1.LocaleLanguageNamePipe, name: "localeLanguageName" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
177
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.2", type: ChannelDetailComponent, selector: "vdr-channel-detail", usesInheritance: true, ngImport: i0, template: "<vdr-page-block>\r\n <vdr-action-bar>\r\n <vdr-ab-left></vdr-ab-left>\r\n\r\n <vdr-ab-right>\r\n <vdr-action-bar-items locationId=\"channel-detail\"></vdr-action-bar-items>\r\n <button\r\n class=\"btn btn-primary\"\r\n *ngIf=\"isNew$ | async; else updateButton\"\r\n (click)=\"create()\"\r\n [disabled]=\"!saveButtonEnabled()\"\r\n >\r\n {{ 'common.create' | translate }}\r\n </button>\r\n <ng-template #updateButton>\r\n <button\r\n class=\"btn btn-primary\"\r\n (click)=\"save()\"\r\n *vdrIfPermissions=\"['SuperAdmin', 'UpdateChannel']\"\r\n [disabled]=\"!saveButtonEnabled()\"\r\n >\r\n {{ 'common.update' | translate }}\r\n </button>\r\n </ng-template>\r\n </vdr-ab-right>\r\n </vdr-action-bar>\r\n</vdr-page-block>\r\n\r\n<form class=\"form\" [formGroup]=\"detailForm\">\r\n <vdr-page-detail-layout>\r\n <vdr-page-detail-sidebar>\r\n <vdr-card *ngIf=\"entity$ | async as entity\">\r\n <vdr-page-entity-info [entity]=\"entity\" />\r\n </vdr-card>\r\n </vdr-page-detail-sidebar>\r\n <vdr-page-block>\r\n <vdr-card>\r\n <div class=\"form-grid\">\r\n <vdr-form-field\r\n class=\"form-grid-span\"\r\n *ngIf=\"entity?.code !== DEFAULT_CHANNEL_CODE\"\r\n [label]=\"'common.code' | translate\"\r\n for=\"code\"\r\n >\r\n <input\r\n id=\"code\"\r\n type=\"text\"\r\n [readonly]=\"!(updatePermission | hasPermission)\"\r\n formControlName=\"code\"\r\n />\r\n </vdr-form-field>\r\n <vdr-form-item\r\n class=\"form-grid-span\"\r\n *ngIf=\"entity?.code === DEFAULT_CHANNEL_CODE\"\r\n [label]=\"'common.code' | translate\"\r\n >\r\n {{ entity?.code | channelCodeToLabel | translate }}\r\n </vdr-form-item>\r\n <vdr-form-field [label]=\"'settings.channel-token' | translate\" for=\"token\">\r\n <input\r\n id=\"token\"\r\n type=\"text\"\r\n [readonly]=\"!(updatePermission | hasPermission)\"\r\n formControlName=\"token\"\r\n />\r\n </vdr-form-field>\r\n\r\n <vdr-form-field [label]=\"'common.seller' | translate\" for=\"sellerId\">\r\n <select\r\n name=\"sellerId\"\r\n formControlName=\"sellerId\"\r\n [vdrDisabled]=\"!(updatePermission | hasPermission)\"\r\n >\r\n <option selected value style=\"display: none\"></option>\r\n <option *ngFor=\"let seller of sellers$ | async\" [value]=\"seller.id\">\r\n {{ seller.name }}\r\n </option>\r\n </select>\r\n </vdr-form-field>\r\n <vdr-form-field\r\n [label]=\"'common.available-languages' | translate\"\r\n for=\"availableLanguageCodes\"\r\n >\r\n <vdr-language-code-selector\r\n formControlName=\"availableLanguageCodes\"\r\n [languageCodes]=\"availableLanguageCodes$ | async\"\r\n ></vdr-language-code-selector>\r\n </vdr-form-field>\r\n <vdr-form-field\r\n [label]=\"'common.available-currencies' | translate\"\r\n for=\"availableCurrencyCodes\"\r\n >\r\n <vdr-currency-code-selector\r\n formControlName=\"availableCurrencyCodes\"\r\n ></vdr-currency-code-selector>\r\n </vdr-form-field>\r\n </div>\r\n </vdr-card>\r\n <vdr-card [title]=\"'settings.defaults' | translate\">\r\n <div class=\"form-grid\">\r\n <vdr-form-field [label]=\"'common.default-language' | translate\" for=\"defaultLanguage\">\r\n <select\r\n name=\"defaultLanguageCode\"\r\n formControlName=\"defaultLanguageCode\"\r\n [vdrDisabled]=\"!(updatePermission | hasPermission)\"\r\n >\r\n <option\r\n *ngFor=\"let languageCode of detailForm.value.availableLanguageCodes\"\r\n [value]=\"languageCode\"\r\n >\r\n {{ languageCode | localeLanguageName }} ({{ languageCode | uppercase }})\r\n </option>\r\n </select>\r\n </vdr-form-field>\r\n <vdr-form-field [label]=\"'settings.default-currency' | translate\" for=\"defaultCurrency\">\r\n <select\r\n name=\"defaultCurrencyCode\"\r\n formControlName=\"defaultCurrencyCode\"\r\n [vdrDisabled]=\"!(updatePermission | hasPermission)\"\r\n >\r\n <option\r\n *ngFor=\"let code of detailForm.value.availableCurrencyCodes\"\r\n [value]=\"code\"\r\n >\r\n {{ code | localeCurrencyName }}\r\n </option>\r\n </select>\r\n </vdr-form-field>\r\n <div>\r\n <vdr-form-field\r\n [label]=\"'settings.default-tax-zone' | translate\"\r\n for=\"defaultTaxZoneId\"\r\n >\r\n <vdr-zone-selector\r\n formControlName=\"defaultTaxZoneId\"\r\n [vdrDisabled]=\"!(updatePermission | hasPermission)\"\r\n ></vdr-zone-selector>\r\n </vdr-form-field>\r\n <clr-alert\r\n *ngIf=\"detailForm.value.code && !detailForm.value.defaultTaxZoneId\"\r\n clrAlertType=\"danger\"\r\n [clrAlertClosable]=\"false\"\r\n >\r\n <clr-alert-item>\r\n <span class=\"alert-text\">\r\n {{ 'error.no-default-tax-zone-set' | translate }}\r\n </span>\r\n </clr-alert-item>\r\n </clr-alert>\r\n </div>\r\n\r\n <div>\r\n <vdr-form-field\r\n [label]=\"'settings.default-shipping-zone' | translate\"\r\n for=\"defaultShippingZoneId\"\r\n >\r\n <vdr-zone-selector\r\n name=\"defaultShippingZoneId\"\r\n formControlName=\"defaultShippingZoneId\"\r\n [vdrDisabled]=\"!(updatePermission | hasPermission)\"\r\n ></vdr-zone-selector>\r\n </vdr-form-field>\r\n <clr-alert\r\n *ngIf=\"detailForm.value.code && !detailForm.value.defaultShippingZoneId\"\r\n clrAlertType=\"danger\"\r\n [clrAlertClosable]=\"false\"\r\n >\r\n <clr-alert-item>\r\n <span class=\"alert-text\">\r\n {{ 'error.no-default-shipping-zone-set' | translate }}\r\n </span>\r\n </clr-alert-item>\r\n </clr-alert>\r\n </div>\r\n <vdr-form-field\r\n [label]=\"'settings.prices-include-tax' | translate\"\r\n for=\"pricesIncludeTax\"\r\n >\r\n <clr-toggle-wrapper>\r\n <input\r\n type=\"checkbox\"\r\n clrToggle\r\n id=\"pricesIncludeTax\"\r\n formControlName=\"pricesIncludeTax\"\r\n [vdrDisabled]=\"!(updatePermission | hasPermission)\"\r\n />\r\n </clr-toggle-wrapper>\r\n </vdr-form-field>\r\n </div>\r\n </vdr-card>\r\n <vdr-card\r\n formGroupName=\"customFields\"\r\n *ngIf=\"customFields.length\"\r\n [title]=\"'common.custom-fields' | translate\"\r\n >\r\n <vdr-tabbed-custom-fields\r\n entityName=\"Channel\"\r\n [customFields]=\"customFields\"\r\n [customFieldsFormGroup]=\"detailForm.get('customFields')\"\r\n ></vdr-tabbed-custom-fields>\r\n </vdr-card>\r\n <vdr-custom-detail-component-host\r\n locationId=\"channel-detail\"\r\n [entity$]=\"entity$\"\r\n [detailForm]=\"detailForm\"\r\n ></vdr-custom-detail-component-host>\r\n </vdr-page-block>\r\n </vdr-page-detail-layout>\r\n</form>\r\n", styles: ["clr-alert{max-width:30rem;margin-bottom:12px}\n"], dependencies: [{ kind: "component", type: i3.ClrAlert, selector: "clr-alert", inputs: ["clrAlertSizeSmall", "clrAlertClosable", "clrAlertAppLevel", "clrCloseButtonAriaLabel", "clrAlertType", "clrAlertIcon", "clrAlertClosed"], outputs: ["clrAlertClosedChange"] }, { kind: "component", type: i3.ClrAlertItem, selector: "clr-alert-item" }, { kind: "directive", type: i3.ClrAlertText, selector: ".alert-text" }, { kind: "directive", type: i3.ClrCheckbox, selector: "[clrCheckbox],[clrToggle]" }, { kind: "component", type: i3.ClrCheckboxWrapper, selector: "clr-checkbox-wrapper,clr-toggle-wrapper" }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.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: i2.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i2.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "component", type: i1.ActionBarComponent, selector: "vdr-action-bar" }, { kind: "component", type: i1.ActionBarLeftComponent, selector: "vdr-ab-left", inputs: ["grow"] }, { kind: "component", type: i1.ActionBarRightComponent, selector: "vdr-ab-right", inputs: ["grow"] }, { kind: "component", type: i1.FormFieldComponent, selector: "vdr-form-field", inputs: ["label", "for", "tooltip", "errors", "readOnlyToggle"] }, { kind: "directive", type: i1.FormFieldControlDirective, selector: "input, textarea, select" }, { kind: "component", type: i1.FormItemComponent, selector: "vdr-form-item", inputs: ["label", "tooltip"] }, { kind: "directive", type: i1.IfPermissionsDirective, selector: "[vdrIfPermissions]", inputs: ["vdrIfPermissions", "vdrIfPermissionsElse"] }, { kind: "component", type: i1.ActionBarItemsComponent, selector: "vdr-action-bar-items", inputs: ["locationId"] }, { kind: "directive", type: i1.DisabledDirective, selector: "[vdrDisabled]", inputs: ["vdrDisabled"] }, { kind: "component", type: i1.TabbedCustomFieldsComponent, selector: "vdr-tabbed-custom-fields", inputs: ["entityName", "customFields", "customFieldsFormGroup", "readonly", "compact", "showLabel"] }, { kind: "component", type: i1.CustomDetailComponentHostComponent, selector: "vdr-custom-detail-component-host", inputs: ["locationId", "entity$", "detailForm"] }, { kind: "component", type: i1.PageBlockComponent, selector: "vdr-page-block" }, { kind: "component", type: i1.PageEntityInfoComponent, selector: "vdr-page-entity-info", inputs: ["entity"] }, { kind: "component", type: i1.PageDetailLayoutComponent, selector: "vdr-page-detail-layout" }, { kind: "component", type: i1.PageDetailSidebarComponent, selector: "vdr-page-detail-sidebar" }, { kind: "component", type: i1.CardComponent, selector: "vdr-card", inputs: ["title", "paddingX"] }, { kind: "component", type: i1.ZoneSelectorComponent, selector: "vdr-zone-selector", inputs: ["readonly", "transformControlValueAccessorValue"], outputs: ["selectedValuesChange"] }, { kind: "component", type: i1.CurrencyCodeSelectorComponent, selector: "vdr-currency-code-selector" }, { kind: "component", type: i1.LanguageCodeSelectorComponent, selector: "vdr-language-code-selector", inputs: ["languageCodes"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.UpperCasePipe, name: "uppercase" }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }, { kind: "pipe", type: i1.LocaleCurrencyNamePipe, name: "localeCurrencyName" }, { kind: "pipe", type: i1.HasPermissionPipe, name: "hasPermission" }, { kind: "pipe", type: i1.ChannelLabelPipe, name: "channelCodeToLabel" }, { kind: "pipe", type: i1.LocaleLanguageNamePipe, name: "localeLanguageName" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
178
178
  }
179
179
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: ChannelDetailComponent, decorators: [{
180
180
  type: Component,
181
- args: [{ selector: 'vdr-channel-detail', changeDetection: ChangeDetectionStrategy.OnPush, template: "<vdr-page-block>\r\n <vdr-action-bar>\r\n <vdr-ab-left></vdr-ab-left>\r\n\r\n <vdr-ab-right>\r\n <vdr-action-bar-items locationId=\"channel-detail\"></vdr-action-bar-items>\r\n <button\r\n class=\"btn btn-primary\"\r\n *ngIf=\"isNew$ | async; else updateButton\"\r\n (click)=\"create()\"\r\n [disabled]=\"!saveButtonEnabled()\"\r\n >\r\n {{ 'common.create' | translate }}\r\n </button>\r\n <ng-template #updateButton>\r\n <button\r\n class=\"btn btn-primary\"\r\n (click)=\"save()\"\r\n *vdrIfPermissions=\"['SuperAdmin', 'UpdateChannel']\"\r\n [disabled]=\"!saveButtonEnabled()\"\r\n >\r\n {{ 'common.update' | translate }}\r\n </button>\r\n </ng-template>\r\n </vdr-ab-right>\r\n </vdr-action-bar>\r\n</vdr-page-block>\r\n\r\n<form class=\"form\" [formGroup]=\"detailForm\">\r\n <vdr-page-detail-layout>\r\n <vdr-page-detail-sidebar>\r\n <vdr-card *ngIf=\"entity$ | async as entity\">\r\n <vdr-page-entity-info [entity]=\"entity\" />\r\n </vdr-card>\r\n </vdr-page-detail-sidebar>\r\n <vdr-page-block>\r\n <vdr-card>\r\n <div class=\"form-grid\">\r\n <vdr-form-field\r\n class=\"form-grid-span\"\r\n *ngIf=\"entity?.code !== DEFAULT_CHANNEL_CODE\"\r\n [label]=\"'common.code' | translate\"\r\n for=\"code\"\r\n >\r\n <input\r\n id=\"code\"\r\n type=\"text\"\r\n [readonly]=\"!(updatePermission | hasPermission)\"\r\n formControlName=\"code\"\r\n />\r\n </vdr-form-field>\r\n <vdr-form-item\r\n class=\"form-grid-span\"\r\n *ngIf=\"entity?.code === DEFAULT_CHANNEL_CODE\"\r\n [label]=\"'common.code' | translate\"\r\n >\r\n {{ entity?.code | channelCodeToLabel | translate }}\r\n </vdr-form-item>\r\n <vdr-form-field [label]=\"'settings.channel-token' | translate\" for=\"token\">\r\n <input\r\n id=\"token\"\r\n type=\"text\"\r\n [readonly]=\"!(updatePermission | hasPermission)\"\r\n formControlName=\"token\"\r\n />\r\n </vdr-form-field>\r\n\r\n <vdr-form-field [label]=\"'common.seller' | translate\" for=\"sellerId\">\r\n <select\r\n name=\"sellerId\"\r\n formControlName=\"sellerId\"\r\n [vdrDisabled]=\"!(updatePermission | hasPermission)\"\r\n >\r\n <option selected value style=\"display: none\"></option>\r\n <option *ngFor=\"let seller of sellers$ | async\" [value]=\"seller.id\">\r\n {{ seller.name }}\r\n </option>\r\n </select>\r\n </vdr-form-field>\r\n <vdr-form-field\r\n [label]=\"'common.available-languages' | translate\"\r\n for=\"availableLanguageCodes\"\r\n >\r\n <vdr-language-code-selector\r\n formControlName=\"availableLanguageCodes\"\r\n [languageCodes]=\"availableLanguageCodes$ | async\"\r\n ></vdr-language-code-selector>\r\n </vdr-form-field>\r\n <vdr-form-field\r\n [label]=\"'common.available-currencies' | translate\"\r\n for=\"availableCurrencyCodes\"\r\n >\r\n <vdr-currency-code-selector\r\n formControlName=\"availableCurrencyCodes\"\r\n ></vdr-currency-code-selector>\r\n </vdr-form-field>\r\n </div>\r\n </vdr-card>\r\n <vdr-card [title]=\"'settings.defaults' | translate\">\r\n <div class=\"form-grid\">\r\n <vdr-form-field [label]=\"'settings.default-currency' | translate\" for=\"defaultTaxZoneId\">\r\n <select\r\n name=\"defaultCurrencyCode\"\r\n formControlName=\"defaultCurrencyCode\"\r\n [vdrDisabled]=\"!(updatePermission | hasPermission)\"\r\n >\r\n <option\r\n *ngFor=\"let code of detailForm.value.availableCurrencyCodes\"\r\n [value]=\"code\"\r\n >\r\n {{ code | localeCurrencyName }}\r\n </option>\r\n </select>\r\n </vdr-form-field>\r\n <vdr-form-field [label]=\"'common.default-language' | translate\" for=\"defaultLanguage\">\r\n <select\r\n name=\"defaultLanguageCode\"\r\n formControlName=\"defaultLanguageCode\"\r\n [vdrDisabled]=\"!(updatePermission | hasPermission)\"\r\n >\r\n <option\r\n *ngFor=\"let languageCode of detailForm.value.availableLanguageCodes\"\r\n [value]=\"languageCode\"\r\n >\r\n {{ languageCode | localeLanguageName }} ({{ languageCode | uppercase }})\r\n </option>\r\n </select>\r\n </vdr-form-field>\r\n <div>\r\n <vdr-form-field\r\n [label]=\"'settings.default-tax-zone' | translate\"\r\n for=\"defaultTaxZoneId\"\r\n >\r\n <vdr-zone-selector\r\n formControlName=\"defaultTaxZoneId\"\r\n [vdrDisabled]=\"!(updatePermission | hasPermission)\"\r\n ></vdr-zone-selector>\r\n </vdr-form-field>\r\n <clr-alert\r\n *ngIf=\"detailForm.value.code && !detailForm.value.defaultTaxZoneId\"\r\n clrAlertType=\"danger\"\r\n [clrAlertClosable]=\"false\"\r\n >\r\n <clr-alert-item>\r\n <span class=\"alert-text\">\r\n {{ 'error.no-default-tax-zone-set' | translate }}\r\n </span>\r\n </clr-alert-item>\r\n </clr-alert>\r\n </div>\r\n\r\n <div>\r\n <vdr-form-field\r\n [label]=\"'settings.default-shipping-zone' | translate\"\r\n for=\"defaultShippingZoneId\"\r\n >\r\n <vdr-zone-selector\r\n name=\"defaultShippingZoneId\"\r\n formControlName=\"defaultShippingZoneId\"\r\n [vdrDisabled]=\"!(updatePermission | hasPermission)\"\r\n ></vdr-zone-selector>\r\n </vdr-form-field>\r\n <clr-alert\r\n *ngIf=\"detailForm.value.code && !detailForm.value.defaultShippingZoneId\"\r\n clrAlertType=\"warning\"\r\n [clrAlertClosable]=\"false\"\r\n >\r\n <clr-alert-item>\r\n <span class=\"alert-text\">\r\n {{ 'error.no-default-shipping-zone-set' | translate }}\r\n </span>\r\n </clr-alert-item>\r\n </clr-alert>\r\n </div>\r\n <vdr-form-field\r\n [label]=\"'settings.prices-include-tax' | translate\"\r\n for=\"pricesIncludeTax\"\r\n >\r\n <clr-toggle-wrapper>\r\n <input\r\n type=\"checkbox\"\r\n clrToggle\r\n id=\"pricesIncludeTax\"\r\n formControlName=\"pricesIncludeTax\"\r\n [vdrDisabled]=\"!(updatePermission | hasPermission)\"\r\n />\r\n </clr-toggle-wrapper>\r\n </vdr-form-field>\r\n </div>\r\n </vdr-card>\r\n <vdr-card\r\n formGroupName=\"customFields\"\r\n *ngIf=\"customFields.length\"\r\n [title]=\"'common.custom-fields' | translate\"\r\n >\r\n <vdr-tabbed-custom-fields\r\n entityName=\"Channel\"\r\n [customFields]=\"customFields\"\r\n [customFieldsFormGroup]=\"detailForm.get('customFields')\"\r\n ></vdr-tabbed-custom-fields>\r\n </vdr-card>\r\n <vdr-custom-detail-component-host\r\n locationId=\"channel-detail\"\r\n [entity$]=\"entity$\"\r\n [detailForm]=\"detailForm\"\r\n ></vdr-custom-detail-component-host>\r\n </vdr-page-block>\r\n </vdr-page-detail-layout>\r\n</form>\r\n", styles: ["clr-alert{max-width:30rem;margin-bottom:12px}\n"] }]
181
+ args: [{ selector: 'vdr-channel-detail', changeDetection: ChangeDetectionStrategy.OnPush, template: "<vdr-page-block>\r\n <vdr-action-bar>\r\n <vdr-ab-left></vdr-ab-left>\r\n\r\n <vdr-ab-right>\r\n <vdr-action-bar-items locationId=\"channel-detail\"></vdr-action-bar-items>\r\n <button\r\n class=\"btn btn-primary\"\r\n *ngIf=\"isNew$ | async; else updateButton\"\r\n (click)=\"create()\"\r\n [disabled]=\"!saveButtonEnabled()\"\r\n >\r\n {{ 'common.create' | translate }}\r\n </button>\r\n <ng-template #updateButton>\r\n <button\r\n class=\"btn btn-primary\"\r\n (click)=\"save()\"\r\n *vdrIfPermissions=\"['SuperAdmin', 'UpdateChannel']\"\r\n [disabled]=\"!saveButtonEnabled()\"\r\n >\r\n {{ 'common.update' | translate }}\r\n </button>\r\n </ng-template>\r\n </vdr-ab-right>\r\n </vdr-action-bar>\r\n</vdr-page-block>\r\n\r\n<form class=\"form\" [formGroup]=\"detailForm\">\r\n <vdr-page-detail-layout>\r\n <vdr-page-detail-sidebar>\r\n <vdr-card *ngIf=\"entity$ | async as entity\">\r\n <vdr-page-entity-info [entity]=\"entity\" />\r\n </vdr-card>\r\n </vdr-page-detail-sidebar>\r\n <vdr-page-block>\r\n <vdr-card>\r\n <div class=\"form-grid\">\r\n <vdr-form-field\r\n class=\"form-grid-span\"\r\n *ngIf=\"entity?.code !== DEFAULT_CHANNEL_CODE\"\r\n [label]=\"'common.code' | translate\"\r\n for=\"code\"\r\n >\r\n <input\r\n id=\"code\"\r\n type=\"text\"\r\n [readonly]=\"!(updatePermission | hasPermission)\"\r\n formControlName=\"code\"\r\n />\r\n </vdr-form-field>\r\n <vdr-form-item\r\n class=\"form-grid-span\"\r\n *ngIf=\"entity?.code === DEFAULT_CHANNEL_CODE\"\r\n [label]=\"'common.code' | translate\"\r\n >\r\n {{ entity?.code | channelCodeToLabel | translate }}\r\n </vdr-form-item>\r\n <vdr-form-field [label]=\"'settings.channel-token' | translate\" for=\"token\">\r\n <input\r\n id=\"token\"\r\n type=\"text\"\r\n [readonly]=\"!(updatePermission | hasPermission)\"\r\n formControlName=\"token\"\r\n />\r\n </vdr-form-field>\r\n\r\n <vdr-form-field [label]=\"'common.seller' | translate\" for=\"sellerId\">\r\n <select\r\n name=\"sellerId\"\r\n formControlName=\"sellerId\"\r\n [vdrDisabled]=\"!(updatePermission | hasPermission)\"\r\n >\r\n <option selected value style=\"display: none\"></option>\r\n <option *ngFor=\"let seller of sellers$ | async\" [value]=\"seller.id\">\r\n {{ seller.name }}\r\n </option>\r\n </select>\r\n </vdr-form-field>\r\n <vdr-form-field\r\n [label]=\"'common.available-languages' | translate\"\r\n for=\"availableLanguageCodes\"\r\n >\r\n <vdr-language-code-selector\r\n formControlName=\"availableLanguageCodes\"\r\n [languageCodes]=\"availableLanguageCodes$ | async\"\r\n ></vdr-language-code-selector>\r\n </vdr-form-field>\r\n <vdr-form-field\r\n [label]=\"'common.available-currencies' | translate\"\r\n for=\"availableCurrencyCodes\"\r\n >\r\n <vdr-currency-code-selector\r\n formControlName=\"availableCurrencyCodes\"\r\n ></vdr-currency-code-selector>\r\n </vdr-form-field>\r\n </div>\r\n </vdr-card>\r\n <vdr-card [title]=\"'settings.defaults' | translate\">\r\n <div class=\"form-grid\">\r\n <vdr-form-field [label]=\"'common.default-language' | translate\" for=\"defaultLanguage\">\r\n <select\r\n name=\"defaultLanguageCode\"\r\n formControlName=\"defaultLanguageCode\"\r\n [vdrDisabled]=\"!(updatePermission | hasPermission)\"\r\n >\r\n <option\r\n *ngFor=\"let languageCode of detailForm.value.availableLanguageCodes\"\r\n [value]=\"languageCode\"\r\n >\r\n {{ languageCode | localeLanguageName }} ({{ languageCode | uppercase }})\r\n </option>\r\n </select>\r\n </vdr-form-field>\r\n <vdr-form-field [label]=\"'settings.default-currency' | translate\" for=\"defaultCurrency\">\r\n <select\r\n name=\"defaultCurrencyCode\"\r\n formControlName=\"defaultCurrencyCode\"\r\n [vdrDisabled]=\"!(updatePermission | hasPermission)\"\r\n >\r\n <option\r\n *ngFor=\"let code of detailForm.value.availableCurrencyCodes\"\r\n [value]=\"code\"\r\n >\r\n {{ code | localeCurrencyName }}\r\n </option>\r\n </select>\r\n </vdr-form-field>\r\n <div>\r\n <vdr-form-field\r\n [label]=\"'settings.default-tax-zone' | translate\"\r\n for=\"defaultTaxZoneId\"\r\n >\r\n <vdr-zone-selector\r\n formControlName=\"defaultTaxZoneId\"\r\n [vdrDisabled]=\"!(updatePermission | hasPermission)\"\r\n ></vdr-zone-selector>\r\n </vdr-form-field>\r\n <clr-alert\r\n *ngIf=\"detailForm.value.code && !detailForm.value.defaultTaxZoneId\"\r\n clrAlertType=\"danger\"\r\n [clrAlertClosable]=\"false\"\r\n >\r\n <clr-alert-item>\r\n <span class=\"alert-text\">\r\n {{ 'error.no-default-tax-zone-set' | translate }}\r\n </span>\r\n </clr-alert-item>\r\n </clr-alert>\r\n </div>\r\n\r\n <div>\r\n <vdr-form-field\r\n [label]=\"'settings.default-shipping-zone' | translate\"\r\n for=\"defaultShippingZoneId\"\r\n >\r\n <vdr-zone-selector\r\n name=\"defaultShippingZoneId\"\r\n formControlName=\"defaultShippingZoneId\"\r\n [vdrDisabled]=\"!(updatePermission | hasPermission)\"\r\n ></vdr-zone-selector>\r\n </vdr-form-field>\r\n <clr-alert\r\n *ngIf=\"detailForm.value.code && !detailForm.value.defaultShippingZoneId\"\r\n clrAlertType=\"danger\"\r\n [clrAlertClosable]=\"false\"\r\n >\r\n <clr-alert-item>\r\n <span class=\"alert-text\">\r\n {{ 'error.no-default-shipping-zone-set' | translate }}\r\n </span>\r\n </clr-alert-item>\r\n </clr-alert>\r\n </div>\r\n <vdr-form-field\r\n [label]=\"'settings.prices-include-tax' | translate\"\r\n for=\"pricesIncludeTax\"\r\n >\r\n <clr-toggle-wrapper>\r\n <input\r\n type=\"checkbox\"\r\n clrToggle\r\n id=\"pricesIncludeTax\"\r\n formControlName=\"pricesIncludeTax\"\r\n [vdrDisabled]=\"!(updatePermission | hasPermission)\"\r\n />\r\n </clr-toggle-wrapper>\r\n </vdr-form-field>\r\n </div>\r\n </vdr-card>\r\n <vdr-card\r\n formGroupName=\"customFields\"\r\n *ngIf=\"customFields.length\"\r\n [title]=\"'common.custom-fields' | translate\"\r\n >\r\n <vdr-tabbed-custom-fields\r\n entityName=\"Channel\"\r\n [customFields]=\"customFields\"\r\n [customFieldsFormGroup]=\"detailForm.get('customFields')\"\r\n ></vdr-tabbed-custom-fields>\r\n </vdr-card>\r\n <vdr-custom-detail-component-host\r\n locationId=\"channel-detail\"\r\n [entity$]=\"entity$\"\r\n [detailForm]=\"detailForm\"\r\n ></vdr-custom-detail-component-host>\r\n </vdr-page-block>\r\n </vdr-page-detail-layout>\r\n</form>\r\n", styles: ["clr-alert{max-width:30rem;margin-bottom:12px}\n"] }]
182
182
  }], ctorParameters: function () { return [{ type: i1.ServerConfigService }, { type: i0.ChangeDetectorRef }, { type: i1.DataService }, { type: i2.FormBuilder }, { type: i1.NotificationService }]; } });
183
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbm5lbC1kZXRhaWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXR0aW5ncy9zcmMvY29tcG9uZW50cy9jaGFubmVsLWRldGFpbC9jaGFubmVsLWRldGFpbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NldHRpbmdzL3NyYy9jb21wb25lbnRzL2NoYW5uZWwtZGV0YWlsL2NoYW5uZWwtZGV0YWlsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBcUIsU0FBUyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUN6RyxPQUFPLEVBQWUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekQsT0FBTyxFQUFFLE1BQU0sSUFBSSxDQUFDLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUN0RSxPQUFPLEVBQ0gsZ0JBQWdCLEVBTWhCLHVCQUF1QixFQUl2QixVQUFVLEVBRVYsd0JBQXdCLEdBRTNCLE1BQU0sd0JBQXdCLENBQUM7QUFDaEMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDNUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXJDLE9BQU8sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7O0FBRXJELE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLEdBQUcsQ0FBQTs7Ozs7O01BTS9CLGdCQUFnQjtDQUNyQixDQUFDO0FBUUYsTUFBTSxPQUFPLHNCQUNULFNBQVEsd0JBQW9FO0lBd0I1RSxZQUNjLG1CQUF3QyxFQUMxQyxjQUFpQyxFQUMvQixXQUF3QixFQUMxQixXQUF3QixFQUN4QixtQkFBd0M7UUFFaEQsS0FBSyxFQUFFLENBQUM7UUFORSx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFC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QUFDLE1BQU0sRUFBRTtZQUMxQixJQUFJLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7U0FDbkc7UUFDRCxJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssb0JBQW9CLEVBQUU7WUFDdEMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDaEQsSUFBSSxXQUFXLEVBQUU7Z0JBQ2IsV0FBVyxDQUFDLE9BQU8sRUFBRSxDQUFDO2FBQ3pCO1NBQ0o7SUFDTCxDQUFDO0lBRU8sYUFBYTtRQUNqQixPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2FBQ3hELEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQzthQUN6QyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbEIsQ0FBQzs4R0FoTVEsc0JBQXNCO2tHQUF0QixzQkFBc0IsaUZDdkNuQyxvdVVBaU5BOzsyRkQxS2Esc0JBQXNCO2tCQU5sQyxTQUFTOytCQUNJLG9CQUFvQixtQkFHYix1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBtYXJrZXIgYXMgXyB9IGZyb20gJ0BiaWVzYmplcmcvbmd4LXRyYW5zbGF0ZS1leHRyYWN0LW1hcmtlcic7XHJcbmltcG9ydCB7XHJcbiAgICBDSEFOTkVMX0ZSQUdNRU5ULFxyXG4gICAgQ2hhbm5lbEZyYWdtZW50LFxyXG4gICAgQ3JlYXRlQ2hhbm5lbElucHV0LFxyXG4gICAgQ3VycmVuY3lDb2RlLFxyXG4gICAgRGF0YVNlcnZpY2UsXHJcbiAgICBHZXRDaGFubmVsRGV0YWlsRG9jdW1lbnQsXHJcbiAgICBnZXRDdXN0b21GaWVsZHNEZWZhdWx0cyxcclxuICAgIEdldFNlbGxlcnNRdWVyeSxcclxuICAgIExhbmd1YWdlQ29kZSxcclxuICAgIE5vdGlmaWNhdGlvblNlcnZpY2UsXHJcbiAgICBQZXJtaXNzaW9uLFxyXG4gICAgU2VydmVyQ29uZmlnU2VydmljZSxcclxuICAgIFR5cGVkQmFzZURldGFpbENvbXBvbmVudCxcclxuICAgIFVwZGF0ZUNoYW5uZWxJbnB1dCxcclxufSBmcm9tICdAdmVuZHVyZS9hZG1pbi11aS9jb3JlJztcclxuaW1wb3J0IHsgREVGQVVMVF9DSEFOTkVMX0NPREUgfSBmcm9tICdAdmVuZHVyZS9jb21tb24vbGliL3NoYXJlZC1jb25zdGFudHMnO1xyXG5pbXBvcnQgeyBncWwgfSBmcm9tICdhcG9sbG8tYW5ndWxhcic7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgbWFwLCBtZXJnZU1hcCwgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbmV4cG9ydCBjb25zdCBHRVRfQ0hBTk5FTF9ERVRBSUwgPSBncWxgXHJcbiAgICBxdWVyeSBHZXRDaGFubmVsRGV0YWlsKCRpZDogSUQhKSB7XHJcbiAgICAgICAgY2hhbm5lbChpZDogJGlkKSB7XHJcbiAgICAgICAgICAgIC4uLkNoYW5uZWxcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAke0NIQU5ORUxfRlJBR01FTlR9XHJcbmA7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAndmRyLWNoYW5uZWwtZGV0YWlsJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9jaGFubmVsLWRldGFpbC5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9jaGFubmVsLWRldGFpbC5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDaGFubmVsRGV0YWlsQ29tcG9uZW50XHJcbiAgICBleHRlbmRzIFR5cGVkQmFzZURldGFpbENvbXBvbmVudDx0eXBlb2YgR2V0Q2hhbm5lbERldGFpbERvY3VtZW50LCAnY2hhbm5lbCc+XHJcbiAgICBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95XHJcbntcclxuICAgIERFRkFVTFRfQ0hBTk5FTF9DT0RFID0gREVGQVVMVF9DSEFOTkVMX0NPREU7XHJcbiAgICBjdXN0b21GaWVsZHMgPSB0aGlzLmdldEN1c3RvbUZpZWxkQ29uZmlnKCdDaGFubmVsJyk7XHJcbiAgICAvLyB6b25lcyQ6IE9ic2VydmFibGU8QXJyYXk8SXRlbU9mPEdldFpvbmVMaXN0UXVlcnksICd6b25lcyc+Pj47XHJcbiAgICBzZWxsZXJzJDogT2JzZXJ2YWJsZTxHZXRTZWxsZXJzUXVlcnlbJ3NlbGxlcnMnXVsnaXRlbXMnXT47XHJcbiAgICBkZXRhaWxGb3JtID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XHJcbiAgICAgICAgY29kZTogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgICB0b2tlbjogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgICBwcmljZXNJbmNsdWRlVGF4OiBbZmFsc2VdLFxyXG4gICAgICAgIGF2YWlsYWJsZUxhbmd1YWdlQ29kZXM6IFtbXSBhcyBzdHJpbmdbXV0sXHJcbiAgICAgICAgYXZhaWxhYmxlQ3VycmVuY3lDb2RlczogW1tdIGFzIHN0cmluZ1tdXSxcclxuICAgICAgICBkZWZhdWx0Q3VycmVuY3lDb2RlOiBbJycgYXMgQ3VycmVuY3lDb2RlXSxcclxuICAgICAgICBkZWZhdWx0U2hpcHBpbmdab25lSWQ6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICAgZGVmYXVsdExhbmd1YWdlQ29kZTogW3VuZGVmaW5lZCBhcyBMYW5ndWFnZUNvZGUgfCB1bmRlZmluZWRdLFxyXG4gICAgICAgIGRlZmF1bHRUYXhab25lSWQ6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICAgc2VsbGVySWQ6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICAgY3VzdG9tRmllbGRzOiB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKGdldEN1c3RvbUZpZWxkc0RlZmF1bHRzKHRoaXMuY3VzdG9tRmllbGRzKSksXHJcbiAgICB9KTtcclxuXHJcbiAgICBhdmFpbGFibGVMYW5ndWFnZUNvZGVzJDogT2JzZXJ2YWJsZTxMYW5ndWFnZUNvZGVbXT47XHJcbiAgICByZWFkb25seSB1cGRhdGVQZXJtaXNzaW9uID0gW1Blcm1pc3Npb24uU3VwZXJBZG1pbiwgUGVybWlzc2lvbi5VcGRhdGVDaGFubmVsLCBQZXJtaXNzaW9uLkNyZWF0ZUNoYW5uZWxdO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByb3RlY3RlZCBzZXJ2ZXJDb25maWdTZXJ2aWNlOiBTZXJ2ZXJDb25maWdTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgICAgIHByb3RlY3RlZCBkYXRhU2VydmljZTogRGF0YVNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIsXHJcbiAgICAgICAgcHJpdmF0ZSBub3RpZmljYXRpb25TZXJ2aWNlOiBOb3RpZmljYXRpb25TZXJ2aWNlLFxyXG4gICAgKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uSW5pdCgpIHtcclxuICAgICAgICB0aGlzLmluaXQoKTtcclxuICAgICAgICAvLyB0aGlzLnpvbmVzJCA9IHRoaXMuZGF0YVNlcnZpY2Uuc2V0dGluZ3MuZ2V0Wm9uZXMoeyB0YWtlOiAxMDAgfSkubWFwU2luZ2xlKGRhdGEgPT4gZGF0YS56b25lcy5pdGVtcyk7XHJcbiAgICAgICAgLy8gVE9ETzogbWFrZSB0aGlzIGxhenktbG9hZGVkIGF1dG9jb21wbGV0ZVxyXG4gICAgICAgIHRoaXMuc2VsbGVycyQgPSB0aGlzLmRhdGFTZXJ2aWNlLnNldHRpbmdzLmdldFNlbGxlckxpc3QoKS5tYXBTaW5nbGUoZGF0YSA9PiBkYXRhLnNlbGxlcnMuaXRlbXMpO1xyXG4gICAgICAgIHRoaXMuYXZhaWxhYmxlTGFuZ3VhZ2VDb2RlcyQgPSB0aGlzLnNlcnZlckNvbmZpZ1NlcnZpY2UuZ2V0QXZhaWxhYmxlTGFuZ3VhZ2VzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICAgICAgdGhpcy5kZXN0cm95KCk7XHJcbiAgICB9XHJcblxyXG4gICAgc2F2ZUJ1dHRvbkVuYWJsZWQoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZGV0YWlsRm9ybS5kaXJ0eSAmJiB0aGlzLmRldGFpbEZvcm0udmFsaWQ7XHJcbiAgICB9XHJcblxyXG4gICAgY3JlYXRlKCkge1xyXG4gICAgICAgIGlmICghdGhpcy5kZXRhaWxGb3JtLmRpcnR5KSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3Qge1xyXG4gICAgICAgICAgICBjb2RlLFxyXG4gICAgICAgICAgICB0b2tlbixcclxuICAgICAgICAgICAgZGVmYXVsdExhbmd1YWdlQ29kZSxcclxuICAgICAgICAgICAgcHJpY2VzSW5jbHVkZVRheCxcclxuICAgICAgICAgICAgZGVmYXVsdEN1cnJlbmN5Q29kZSxcclxuICAgICAgICAgICAgZGVmYXVsdFNoaXBwaW5nWm9uZUlkLFxyXG4gICAgICAgICAgICBkZWZhdWx0VGF4Wm9uZUlkLFxyXG4gICAgICAgICAgICBjdXN0b21GaWVsZHMsXHJcbiAgICAgICAgICAgIHNlbGxlcklkLFxyXG4gICAgICAgIH0gPSB0aGlzLmRldGFpbEZvcm0udmFsdWU7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAhY29kZSB8fFxyXG4gICAgICAgICAgICAhdG9rZW4gfHxcclxuICAgICAgICAgICAgIWRlZmF1bHRMYW5ndWFnZUNvZGUgfHxcclxuICAgICAgICAgICAgIWRlZmF1bHRDdXJyZW5jeUNvZGUgfHxcclxuICAgICAgICAgICAgIWRlZmF1bHRTaGlwcGluZ1pvbmVJZCB8fFxyXG4gICAgICAgICAgICAhZGVmYXVsdFRheFpvbmVJZFxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGlucHV0OiBDcmVhdGVDaGFubmVsSW5wdXQgPSB7XHJcbiAgICAgICAgICAgIGNvZGUsXHJcbiAgICAgICAgICAgIHRva2VuLFxyXG4gICAgICAgICAgICBkZWZhdWx0TGFuZ3VhZ2VDb2RlLFxyXG4gICAgICAgICAgICBwcmljZXNJbmNsdWRlVGF4OiAhIXByaWNlc0luY2x1ZGVUYXgsXHJcbiAgICAgICAgICAgIGRlZmF1bHRDdXJyZW5jeUNvZGUsXHJcbiAgICAgICAgICAgIGRlZmF1bHRTaGlwcGluZ1pvbmVJZCxcclxuICAgICAgICAgICAgZGVmYXVsdFRheFpvbmVJZCxcclxuICAgICAgICAgICAgY3VzdG9tRmllbGRzLFxyXG4gICAgICAgICAgICBzZWxsZXJJZCxcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMuZGF0YVNlcnZpY2Uuc2V0dGluZ3NcclxuICAgICAgICAgICAgLmNyZWF0ZUNoYW5uZWwoaW5wdXQpXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgbWVyZ2VNYXAoKHsgY3JlYXRlQ2hhbm5lbCB9KSA9PlxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0YVNlcnZpY2UuYXV0aC5jdXJyZW50VXNlcigpLnNpbmdsZSQucGlwZShcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWFwKCh7IG1lIH0pID0+ICh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZUNoYW5uZWwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pKSxcclxuICAgICAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgICAgIG1lcmdlTWFwKCh7IG1lLCBjcmVhdGVDaGFubmVsIH0pID0+XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1ub24tbnVsbC1hc3NlcnRpb25cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGFTZXJ2aWNlLmNsaWVudC51cGRhdGVVc2VyQ2hhbm5lbHMobWUhLmNoYW5uZWxzKS5waXBlKG1hcCgoKSA9PiBjcmVhdGVDaGFubmVsKSksXHJcbiAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoZGF0YSA9PiB7XHJcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKGRhdGEuX190eXBlbmFtZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ0NoYW5uZWwnOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2Uuc3VjY2VzcyhfKCdjb21tb24ubm90aWZ5LWNyZWF0ZS1zdWNjZXNzJyksIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudGl0eTogJ0NoYW5uZWwnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kZXRhaWxGb3JtLm1hcmtBc1ByaXN0aW5lKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnLi4vJywgZGF0YS5pZF0sIHsgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnTGFuZ3VhZ2VOb3RBdmFpbGFibGVFcnJvcic6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5lcnJvcihkYXRhLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgc2F2ZSgpIHtcclxuICAgICAgICBpZiAoIXRoaXMuZGV0YWlsRm9ybS5kaXJ0eSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGZvcm1WYWx1ZSA9IHRoaXMuZGV0YWlsRm9ybS52YWx1ZTtcclxuICAgICAgICB0aGlzLmVudGl0eSRcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICB0YWtlKDEpLFxyXG4gICAgICAgICAgICAgICAgbWVyZ2VNYXAoY2hhbm5lbCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaW5wdXQgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBjaGFubmVsLmlkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiBmb3JtVmFsdWUuY29kZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW46IGZvcm1WYWx1ZS50b2tlbixcclxuICAgICAgICAgICAgICAgICAgICAgICAgcHJpY2VzSW5jbHVkZVRheDogZm9ybVZhbHVlLnByaWNlc0luY2x1ZGVUYXgsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGF2YWlsYWJsZUxhbmd1YWdlQ29kZXM6IGZvcm1WYWx1ZS5hdmFpbGFibGVMYW5ndWFnZUNvZGVzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBhdmFpbGFibGVDdXJyZW5jeUNvZGVzOiBmb3JtVmFsdWUuYXZhaWxhYmxlQ3VycmVuY3lDb2RlcyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdEN1cnJlbmN5Q29kZTogZm9ybVZhbHVlLmRlZmF1bHRDdXJyZW5jeUNvZGUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRTaGlwcGluZ1pvbmVJZDogZm9ybVZhbHVlLmRlZmF1bHRTaGlwcGluZ1pvbmVJZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdExhbmd1YWdlQ29kZTogZm9ybVZhbHVlLmRlZmF1bHRMYW5ndWFnZUNvZGUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRUYXhab25lSWQ6IGZvcm1WYWx1ZS5kZWZhdWx0VGF4Wm9uZUlkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21GaWVsZHM6IGZvcm1WYWx1ZS5jdXN0b21GaWVsZHMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGxlcklkOiBmb3JtVmFsdWUuc2VsbGVySWQsXHJcbiAgICAgICAgICAgICAgICAgICAgfSBhcyBVcGRhdGVDaGFubmVsSW5wdXQ7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGF0YVNlcnZpY2Uuc2V0dGluZ3MudXBkYXRlQ2hhbm5lbChpbnB1dCk7XHJcbiAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCh7IHVwZGF0ZUNoYW5uZWwgfSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgc3dpdGNoICh1cGRhdGVDaGFubmVsLl9fdHlwZW5hbWUpIHtcclxuICAgICAgICAgICAgICAgICAgICBjYXNlICdDaGFubmVsJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLnN1Y2Nlc3MoXygnY29tbW9uLm5vdGlmeS11cGRhdGUtc3VjY2VzcycpLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRpdHk6ICdDaGFubmVsJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGV0YWlsRm9ybS5tYXJrQXNQcmlzdGluZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICBjYXNlICdMYW5ndWFnZU5vdEF2YWlsYWJsZUVycm9yJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLmVycm9yKHVwZGF0ZUNoYW5uZWwubWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVXBkYXRlIHRoZSBmb3JtIHZhbHVlcyB3aGVuIHRoZSBlbnRpdHkgY2hhbmdlcy5cclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIHNldEZvcm1WYWx1ZXMoZW50aXR5OiBDaGFubmVsRnJhZ21lbnQsIGxhbmd1YWdlQ29kZTogTGFuZ3VhZ2VDb2RlKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5kZXRhaWxGb3JtLnBhdGNoVmFsdWUoe1xyXG4gICAgICAgICAgICBjb2RlOiBlbnRpdHkuY29kZSxcclxuICAgICAgICAgICAgdG9rZW46IGVudGl0eS50b2tlbiB8fCB0aGlzLmdlbmVyYXRlVG9rZW4oKSxcclxuICAgICAgICAgICAgcHJpY2VzSW5jbHVkZVRheDogZW50aXR5LnByaWNlc0luY2x1ZGVUYXgsXHJcbiAgICAgICAgICAgIGF2YWlsYWJsZUxhbmd1YWdlQ29kZXM6IGVudGl0eS5hdmFpbGFibGVMYW5ndWFnZUNvZGVzLFxyXG4gICAgICAgICAgICBhdmFpbGFibGVDdXJyZW5jeUNvZGVzOiBlbnRpdHkuYXZhaWxhYmxlQ3VycmVuY3lDb2RlcyxcclxuICAgICAgICAgICAgZGVmYXVsdEN1cnJlbmN5Q29kZTogZW50aXR5LmRlZmF1bHRDdXJyZW5jeUNvZGUsXHJcbiAgICAgICAgICAgIGRlZmF1bHRTaGlwcGluZ1pvbmVJZDogZW50aXR5LmRlZmF1bHRTaGlwcGluZ1pvbmU/LmlkID8/ICcnLFxyXG4gICAgICAgICAgICBkZWZhdWx0TGFuZ3VhZ2VDb2RlOiBlbnRpdHkuZGVmYXVsdExhbmd1YWdlQ29kZSxcclxuICAgICAgICAgICAgZGVmYXVsdFRheFpvbmVJZDogZW50aXR5LmRlZmF1bHRUYXhab25lPy5pZCA/PyAnJyxcclxuICAgICAgICAgICAgc2VsbGVySWQ6IGVudGl0eS5zZWxsZXI/LmlkID8/ICcnLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGlmICh0aGlzLmN1c3RvbUZpZWxkcy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgdGhpcy5zZXRDdXN0b21GaWVsZEZvcm1WYWx1ZXModGhpcy5jdXN0b21GaWVsZHMsIHRoaXMuZGV0YWlsRm9ybS5nZXQoWydjdXN0b21GaWVsZHMnXSksIGVudGl0eSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChlbnRpdHkuY29kZSA9PT0gREVGQVVMVF9DSEFOTkVMX0NPREUpIHtcclxuICAgICAgICAgICAgY29uc3QgY29kZUNvbnRyb2wgPSB0aGlzLmRldGFpbEZvcm0uZ2V0KCdjb2RlJyk7XHJcbiAgICAgICAgICAgIGlmIChjb2RlQ29udHJvbCkge1xyXG4gICAgICAgICAgICAgICAgY29kZUNvbnRyb2wuZGlzYWJsZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZ2VuZXJhdGVUb2tlbigpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiBBcnJheS5mcm9tKGNyeXB0by5nZXRSYW5kb21WYWx1ZXMobmV3IFVpbnQ4QXJyYXkoMTApKSlcclxuICAgICAgICAgICAgLm1hcChiID0+IGIudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDIsICcwJykpXHJcbiAgICAgICAgICAgIC5qb2luKCcnKTtcclxuICAgIH1cclxufVxyXG4iLCI8dmRyLXBhZ2UtYmxvY2s+XHJcbiAgICA8dmRyLWFjdGlvbi1iYXI+XHJcbiAgICAgICAgPHZkci1hYi1sZWZ0PjwvdmRyLWFiLWxlZnQ+XHJcblxyXG4gICAgICAgIDx2ZHItYWItcmlnaHQ+XHJcbiAgICAgICAgICAgIDx2ZHItYWN0aW9uLWJhci1pdGVtcyBsb2NhdGlvbklkPVwiY2hhbm5lbC1kZXRhaWxcIj48L3Zkci1hY3Rpb24tYmFyLWl0ZW1zPlxyXG4gICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImlzTmV3JCB8IGFzeW5jOyBlbHNlIHVwZGF0ZUJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiY3JlYXRlKClcIlxyXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFzYXZlQnV0dG9uRW5hYmxlZCgpXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAge3sgJ2NvbW1vbi5jcmVhdGUnIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI3VwZGF0ZUJ1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNhdmUoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKnZkcklmUGVybWlzc2lvbnM9XCJbJ1N1cGVyQWRtaW4nLCAnVXBkYXRlQ2hhbm5lbCddXCJcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIXNhdmVCdXR0b25FbmFibGVkKClcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7ICdjb21tb24udXBkYXRlJyB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPC92ZHItYWItcmlnaHQ+XHJcbiAgICA8L3Zkci1hY3Rpb24tYmFyPlxyXG48L3Zkci1wYWdlLWJsb2NrPlxyXG5cclxuPGZvcm0gY2xhc3M9XCJmb3JtXCIgW2Zvcm1Hcm91cF09XCJkZXRhaWxGb3JtXCI+XHJcbiAgICA8dmRyLXBhZ2UtZGV0YWlsLWxheW91dD5cclxuICAgICAgICA8dmRyLXBhZ2UtZGV0YWlsLXNpZGViYXI+XHJcbiAgICAgICAgICAgIDx2ZHItY2FyZCAqbmdJZj1cImVudGl0eSQgfCBhc3luYyBhcyBlbnRpdHlcIj5cclxuICAgICAgICAgICAgICAgIDx2ZHItcGFnZS1lbnRpdHktaW5mbyBbZW50aXR5XT1cImVudGl0eVwiIC8+XHJcbiAgICAgICAgICAgIDwvdmRyLWNhcmQ+XHJcbiAgICAgICAgPC92ZHItcGFnZS1kZXRhaWwtc2lkZWJhcj5cclxuICAgICAgICA8dmRyLXBhZ2UtYmxvY2s+XHJcbiAgICAgICAgICAgIDx2ZHItY2FyZD5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyaWRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dmRyLWZvcm0tZmllbGRcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWdyaWQtc3BhblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZW50aXR5Py5jb2RlICE9PSBERUZBVUxUX0NIQU5ORUxfQ09ERVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCInY29tbW9uLmNvZGUnIHwgdHJhbnNsYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yPVwiY29kZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiY29kZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwiISh1cGRhdGVQZXJtaXNzaW9uIHwgaGFzUGVybWlzc2lvbilcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiY29kZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC92ZHItZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICA8dmRyLWZvcm0taXRlbVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tZ3JpZC1zcGFuXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJlbnRpdHk/LmNvZGUgPT09IERFRkFVTFRfQ0hBTk5FTF9DT0RFXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidjb21tb24uY29kZScgfCB0cmFuc2xhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgZW50aXR5Py5jb2RlIHwgY2hhbm5lbENvZGVUb0xhYmVsIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC92ZHItZm9ybS1pdGVtPlxyXG4gICAgICAgICAgICAgICAgICAgIDx2ZHItZm9ybS1maWVsZCBbbGFiZWxdPVwiJ3NldHRpbmdzLmNoYW5uZWwtdG9rZW4nIHwgdHJhbnNsYXRlXCIgZm9yPVwidG9rZW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cInRva2VuXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCIhKHVwZGF0ZVBlcm1pc3Npb24gfCBoYXNQZXJtaXNzaW9uKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ0b2tlblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC92ZHItZm9ybS1maWVsZD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPHZkci1mb3JtLWZpZWxkIFtsYWJlbF09XCInY29tbW9uLnNlbGxlcicgfCB0cmFuc2xhdGVcIiBmb3I9XCJzZWxsZXJJZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwic2VsbGVySWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwic2VsbGVySWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZkckRpc2FibGVkXT1cIiEodXBkYXRlUGVybWlzc2lvbiB8IGhhc1Blcm1pc3Npb24pXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBzZWxlY3RlZCB2YWx1ZSBzdHlsZT1cImRpc3BsYXk6IG5vbmVcIj48L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IHNlbGxlciBvZiBzZWxsZXJzJCB8IGFzeW5jXCIgW3ZhbHVlXT1cInNlbGxlci5pZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHNlbGxlci5uYW1lIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgPC92ZHItZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICA8dmRyLWZvcm0tZmllbGRcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidjb21tb24uYXZhaWxhYmxlLWxhbmd1YWdlcycgfCB0cmFuc2xhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3I9XCJhdmFpbGFibGVMYW5ndWFnZUNvZGVzXCJcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx2ZHItbGFuZ3VhZ2UtY29kZS1zZWxlY3RvclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiYXZhaWxhYmxlTGFuZ3VhZ2VDb2Rlc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFuZ3VhZ2VDb2Rlc109XCJhdmFpbGFibGVMYW5ndWFnZUNvZGVzJCB8IGFzeW5jXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvdmRyLWxhbmd1YWdlLWNvZGUtc2VsZWN0b3I+XHJcbiAgICAgICAgICAgICAgICAgICAgPC92ZHItZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICA8dmRyLWZvcm0tZmllbGRcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidjb21tb24uYXZhaWxhYmxlLWN1cnJlbmNpZXMnIHwgdHJhbnNsYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yPVwiYXZhaWxhYmxlQ3VycmVuY3lDb2Rlc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dmRyLWN1cnJlbmN5LWNvZGUtc2VsZWN0b3JcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImF2YWlsYWJsZUN1cnJlbmN5Q29kZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC92ZHItY3VycmVuY3ktY29kZS1zZWxlY3Rvcj5cclxuICAgICAgICAgICAgICAgICAgICA8L3Zkci1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvdmRyLWNhcmQ+XHJcbiAgICAgICAgICAgIDx2ZHItY2FyZCBbdGl0bGVdPVwiJ3NldHRpbmdzLmRlZmF1bHRzJyB8IHRyYW5zbGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JpZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx2ZHItZm9ybS1maWVsZCBbbGFiZWxdPVwiJ3NldHRpbmdzLmRlZmF1bHQtY3VycmVuY3knIHwgdHJhbnNsYXRlXCIgZm9yPVwiZGVmYXVsdFRheFpvbmVJZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiZGVmYXVsdEN1cnJlbmN5Q29kZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJkZWZhdWx0Q3VycmVuY3lDb2RlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2ZHJEaXNhYmxlZF09XCIhKHVwZGF0ZVBlcm1pc3Npb24gfCBoYXNQZXJtaXNzaW9uKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgY29kZSBvZiBkZXRhaWxGb3JtLnZhbHVlLmF2YWlsYWJsZUN1cnJlbmN5Q29kZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJjb2RlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBjb2RlIHwgbG9jYWxlQ3VycmVuY3lOYW1lIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgPC92ZHItZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICA8dmRyLWZvcm0tZmllbGQgW2xhYmVsXT1cIidjb21tb24uZGVmYXVsdC1sYW5ndWFnZScgfCB0cmFuc2xhdGVcIiBmb3I9XCJkZWZhdWx0TGFuZ3VhZ2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cImRlZmF1bHRMYW5ndWFnZUNvZGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZGVmYXVsdExhbmd1YWdlQ29kZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmRyRGlzYWJsZWRdPVwiISh1cGRhdGVQZXJtaXNzaW9uIHwgaGFzUGVybWlzc2lvbilcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGxhbmd1YWdlQ29kZSBvZiBkZXRhaWxGb3JtLnZhbHVlLmF2YWlsYWJsZUxhbmd1YWdlQ29kZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJsYW5ndWFnZUNvZGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGxhbmd1YWdlQ29kZSB8IGxvY2FsZUxhbmd1YWdlTmFtZSB9fSAoe3sgbGFuZ3VhZ2VDb2RlIHwgdXBwZXJjYXNlIH19KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdmRyLWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHZkci1mb3JtLWZpZWxkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ3NldHRpbmdzLmRlZmF1bHQtdGF4LXpvbmUnIHwgdHJhbnNsYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcj1cImRlZmF1bHRUYXhab25lSWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmRyLXpvbmUtc2VsZWN0b3JcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJkZWZhdWx0VGF4Wm9uZUlkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmRyRGlzYWJsZWRdPVwiISh1cGRhdGVQZXJtaXNzaW9uIHwgaGFzUGVybWlzc2lvbilcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvdmRyLXpvbmUtc2VsZWN0b3I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdmRyLWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxjbHItYWxlcnRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZGV0YWlsRm9ybS52YWx1ZS5jb2RlICYmICFkZXRhaWxGb3JtLnZhbHVlLmRlZmF1bHRUYXhab25lSWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xyQWxlcnRUeXBlPVwiZGFuZ2VyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbHJBbGVydENsb3NhYmxlXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsci1hbGVydC1pdGVtPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYWxlcnQtdGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAnZXJyb3Iubm8tZGVmYXVsdC10YXgtem9uZS1zZXQnIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbHItYWxlcnQtaXRlbT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9jbHItYWxlcnQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx2ZHItZm9ybS1maWVsZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidzZXR0aW5ncy5kZWZhdWx0LXNoaXBwaW5nLXpvbmUnIHwgdHJhbnNsYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcj1cImRlZmF1bHRTaGlwcGluZ1pvbmVJZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2ZHItem9uZS1zZWxlY3RvclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJkZWZhdWx0U2hpcHBpbmdab25lSWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImRlZmF1bHRTaGlwcGluZ1pvbmVJZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZkckRpc2FibGVkXT1cIiEodXBkYXRlUGVybWlzc2lvbiB8IGhhc1Blcm1pc3Npb24pXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L3Zkci16b25lLXNlbGVjdG9yPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3Zkci1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8Y2xyLWFsZXJ0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImRldGFpbEZvcm0udmFsdWUuY29kZSAmJiAhZGV0YWlsRm9ybS52YWx1ZS5kZWZhdWx0U2hpcHBpbmdab25lSWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xyQWxlcnRUeXBlPVwid2FybmluZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xyQWxlcnRDbG9zYWJsZV09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbHItYWxlcnQtaXRlbT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFsZXJ0LXRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ2Vycm9yLm5vLWRlZmF1bHQtc2hpcHBpbmctem9uZS1zZXQnIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbHItYWxlcnQtaXRlbT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9jbHItYWxlcnQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPHZkci1mb3JtLWZpZWxkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCInc2V0dGluZ3MucHJpY2VzLWluY2x1ZGUtdGF4JyB8IHRyYW5zbGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcj1cInByaWNlc0luY2x1ZGVUYXhcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGNsci10b2dnbGUtd3JhcHBlcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xyVG9nZ2xlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJwcmljZXNJbmNsdWRlVGF4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJwcmljZXNJbmNsdWRlVGF4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmRyRGlzYWJsZWRdPVwiISh1cGRhdGVQZXJtaXNzaW9uIHwgaGFzUGVybWlzc2lvbilcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9jbHItdG9nZ2xlLXdyYXBwZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC92ZHItZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L3Zkci1jYXJkPlxyXG4gICAgICAgICAgICA8dmRyLWNhcmRcclxuICAgICAgICAgICAgICAgIGZvcm1Hcm91cE5hbWU9XCJjdXN0b21GaWVsZHNcIlxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJjdXN0b21GaWVsZHMubGVuZ3RoXCJcclxuICAgICAgICAgICAgICAgIFt0aXRsZV09XCInY29tbW9uLmN1c3RvbS1maWVsZHMnIHwgdHJhbnNsYXRlXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPHZkci10YWJiZWQtY3VzdG9tLWZpZWxkc1xyXG4gICAgICAgICAgICAgICAgICAgIGVudGl0eU5hbWU9XCJDaGFubmVsXCJcclxuICAgICAgICAgICAgICAgICAgICBbY3VzdG9tRmllbGRzXT1cImN1c3RvbUZpZWxkc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW2N1c3RvbUZpZWxkc0Zvcm1Hcm91cF09XCJkZXRhaWxGb3JtLmdldCgnY3VzdG9tRmllbGRzJylcIlxyXG4gICAgICAgICAgICAgICAgPjwvdmRyLXRhYmJlZC1jdXN0b20tZmllbGRzPlxyXG4gICAgICAgICAgICA8L3Zkci1jYXJkPlxyXG4gICAgICAgICAgICA8dmRyLWN1c3RvbS1kZXRhaWwtY29tcG9uZW50LWhvc3RcclxuICAgICAgICAgICAgICAgIGxvY2F0aW9uSWQ9XCJjaGFubmVsLWRldGFpbFwiXHJcbiAgICAgICAgICAgICAgICBbZW50aXR5JF09XCJlbnRpdHkkXCJcclxuICAgICAgICAgICAgICAgIFtkZXRhaWxGb3JtXT1cImRldGFpbEZvcm1cIlxyXG4gICAgICAgICAgICA+PC92ZHItY3VzdG9tLWRldGFpbC1jb21wb25lbnQtaG9zdD5cclxuICAgICAgICA8L3Zkci1wYWdlLWJsb2NrPlxyXG4gICAgPC92ZHItcGFnZS1kZXRhaWwtbGF5b3V0PlxyXG48L2Zvcm0+XHJcbiJdfQ==
183
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbm5lbC1kZXRhaWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXR0aW5ncy9zcmMvY29tcG9uZW50cy9jaGFubmVsLWRldGFpbC9jaGFubmVsLWRldGFpbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NldHRpbmdzL3NyYy9jb21wb25lbnRzL2NoYW5uZWwtZGV0YWlsL2NoYW5uZWwtZGV0YWlsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBcUIsU0FBUyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUN6RyxPQUFPLEVBQWUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekQsT0FBTyxFQUFFLE1BQU0sSUFBSSxDQUFDLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUN0RSxPQUFPLEVBQ0gsZ0JBQWdCLEVBTWhCLHVCQUF1QixFQUl2QixVQUFVLEVBRVYsd0JBQXdCLEdBRTNCLE1BQU0sd0JBQXdCLENBQUM7QUFDaEMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDNUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXJDLE9BQU8sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7O0FBRXJELE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLEdBQUcsQ0FBQTs7Ozs7O01BTS9CLGdCQUFnQjtDQUNyQixDQUFDO0FBUUYsTUFBTSxPQUFPLHNCQUNULFNBQVEsd0JBQW9FO0lBd0I1RSxZQUNjLG1CQUF3QyxFQUMxQyxjQUFpQyxFQUMvQixXQUF3QixFQUMxQixXQUF3QixFQUN4QixtQkFBd0M7UUFFaEQsS0FBSyxFQUFFLENBQUM7UUFORSx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBQzFDLG1CQUFjLEdBQWQsY0FBYyxDQUFtQjtRQUMvQixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUMxQixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4Qix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBMUJwRCx5QkFBb0IsR0FBRyxvQkFBb0IsQ0FBQztRQUM1QyxpQkFBWSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUdwRCxlQUFVLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUM7WUFDaEMsSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7WUFDL0IsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7WUFDaEMsZ0JBQWdCLEVBQUUsQ0FBQyxLQUFLLENBQUM7WUFDekIsc0JBQXNCLEVBQUUsQ0FBQyxFQUFjLENBQUM7WUFDeEMsc0JBQXNCLEVBQUUsQ0FBQyxFQUFjLENBQUM7WUFDeEMsbUJBQW1CLEVBQUUsQ0FBQyxFQUFrQixFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7WUFDOUQscUJBQXFCLEVBQUUsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQztZQUNoRCxtQkFBbUIsRUFBRSxDQUFDLFNBQXFDLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQztZQUNqRixnQkFBZ0IsRUFBRSxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDO1lBQzNDLFFBQVEsRUFBRSxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDO1lBQ25DLFlBQVksRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDbkYsQ0FBQyxDQUFDO1FBR00scUJBQWdCLEdBQUcsQ0FBQyxVQUFVLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQyxhQUFhLEVBQUUsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBVXhHLENBQUM7SUFFRCxRQUFRO1FBQ0osSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ1osdUdBQXVHO1FBQ3ZHLDJDQUEyQztRQUMzQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLGFBQWEsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEcsSUFBSSxDQUFDLHVCQUF1QixHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO0lBQ3BGLENBQUM7SUFFRCxXQUFXO1FBQ1AsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ25CLENBQUM7SUFFRCxpQkFBaUI7UUFDYixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDO0lBQzFELENBQUM7SUFFRCxNQUFNO1FBQ0YsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFO1lBQ3hCLE9BQU87U0FDVjtRQUNELE1BQU0sRUFDRixJQUFJLEVBQ0osS0FBSyxFQUNMLG1CQUFtQixFQUNuQixnQkFBZ0IsRUFDaEIsbUJBQW1CLEVBQ25CLHFCQUFxQixFQUNyQixnQkFBZ0IsRUFDaEIsWUFBWSxFQUNaLFFBQVEsR0FDWCxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDO1FBQzFCLElBQ0ksQ0FBQyxJQUFJO1lBQ0wsQ0FBQyxLQUFLO1lBQ04sQ0FBQyxtQkFBbUI7WUFDcEIsQ0FBQyxtQkFBbUI7WUFDcEIsQ0FBQyxxQkFBcUI7WUFDdEIsQ0FBQyxnQkFBZ0IsRUFDbkI7WUFDRSxPQUFPO1NBQ1Y7UUFDRCxNQUFNLEtBQUssR0FBdUI7WUFDOUIsSUFBSTtZQUNKLEtBQUs7WUFDTCxtQkFBbUI7WUFDbkIsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDLGdCQUFnQjtZQUNwQyxtQkFBbUI7WUFDbkIscUJBQXFCO1lBQ3JCLGdCQUFnQjtZQUNoQixZQUFZO1lBQ1osUUFBUTtTQUNYLENBQUM7UUFDRixJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVE7YUFDcEIsYUFBYSxDQUFDLEtBQUssQ0FBQzthQUNwQixJQUFJLENBQ0QsUUFBUSxDQUFDLENBQUMsRUFBRSxhQUFhLEVBQUUsRUFBRSxFQUFFLENBQzNCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQzVDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDYixFQUFFO1lBQ0YsYUFBYTtTQUNoQixDQUFDLENBQUMsQ0FDTixDQUNKLEVBQ0QsUUFBUSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsYUFBYSxFQUFFLEVBQUUsRUFBRTtRQUMvQixvRUFBb0U7UUFDcEUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsRUFBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FDMUYsQ0FDSjthQUNBLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNkLFFBQVEsSUFBSSxDQUFDLFVBQVUsRUFBRTtnQkFDckIsS0FBSyxTQUFTO29CQUNWLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLDhCQUE4QixDQUFDLEVBQUU7d0JBQ2hFLE1BQU0sRUFBRSxTQUFTO3FCQUNwQixDQUFDLENBQUM7b0JBQ0gsSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLEVBQUUsQ0FBQztvQkFDakMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztvQkFDbkMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO29CQUNuRSxNQUFNO2dCQUNWLEtBQUssMkJBQTJCO29CQUM1QixJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztvQkFDN0MsTUFBTTthQUNiO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDWCxDQUFDO0lBRUQsSUFBSTtRQUNBLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRTtZQUN4QixPQUFPO1NBQ1Y7UUFDRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQztRQUN4QyxJQUFJLENBQUMsT0FBTzthQUNQLElBQUksQ0FDRCxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQ1AsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ2YsTUFBTSxLQUFLLEdBQUc7Z0JBQ1YsRUFBRSxFQUFFLE9BQU8sQ0FBQyxFQUFFO2dCQUNkLElBQUksRUFBRSxTQUFTLENBQUMsSUFBSTtnQkFDcEIsS0FBSyxFQUFFLFNBQVMsQ0FBQyxLQUFLO2dCQUN0QixnQkFBZ0IsRUFBRSxTQUFTLENBQUMsZ0JBQWdCO2dCQUM1QyxzQkFBc0IsRUFBRSxTQUFTLENBQUMsc0JBQXNCO2dCQUN4RCxzQkFBc0IsRUFBRSxTQUFTLENBQUMsc0JBQXNCO2dCQUN4RCxtQkFBbUIsRUFBRSxTQUFTLENBQUMsbUJBQW1CO2dCQUNsRCxxQkFBcUIsRUFBRSxTQUFTLENBQUMscUJBQXFCO2dCQUN0RCxtQkFBbUIsRUFBRSxTQUFTLENBQUMsbUJBQW1CO2dCQUNsRCxnQkFBZ0IsRUFBRSxTQUFTLENBQUMsZ0JBQWdCO2dCQUM1QyxZQUFZLEVBQUUsU0FBUyxDQUFDLFlBQVk7Z0JBQ3BDLFFBQVEsRUFBRSxTQUFTLENBQUMsUUFBUTthQUNULENBQUM7WUFDeEIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUQsQ0FBQyxDQUFDLENBQ0w7YUFDQSxTQUFTLENBQUMsQ0FBQyxFQUFFLGFBQWEsRUFBRSxFQUFFLEVBQUU7WUFDN0IsUUFBUSxhQUFhLENBQUMsVUFBVSxFQUFFO2dCQUM5QixLQUFLLFNBQVM7b0JBQ1YsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsOEJBQThCLENBQUMsRUFBRTt3QkFDaEUsTUFBTSxFQUFFLFNBQVM7cUJBQ3BCLENBQUMsQ0FBQztvQkFDSCxJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsRUFBRSxDQUFDO29CQUNqQyxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxDQUFDO29CQUNuQyxNQUFNO2dCQUNWLEtBQUssMkJBQTJCO29CQUM1QixJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUM3RDtRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUVEOztPQUVHO0lBQ08sYUFBYSxDQUFDLE1BQXVCLEVBQUUsWUFBMEI7UUFDdkUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUM7WUFDdkIsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJO1lBQ2pCLEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDM0MsZ0JBQWdCLEVBQUUsTUFBTSxDQUFDLGdCQUFnQjtZQUN6QyxzQkFBc0IsRUFBRSxNQUFNLENBQUMsc0JBQXNCO1lBQ3JELHNCQUFzQixFQUFFLE1BQU0sQ0FBQyxzQkFBc0I7WUFDckQsbUJBQW1CLEVBQUUsTUFBTSxDQUFDLG1CQUFtQjtZQUMvQyxxQkFBcUIsRUFBRSxNQUFNLENBQUMsbUJBQW1CLEVBQUUsRUFBRSxJQUFJLEVBQUU7WUFDM0QsbUJBQW1CLEVBQUUsTUFBTSxDQUFDLG1CQUFtQjtZQUMvQyxnQkFBZ0IsRUFBRSxNQUFNLENBQUMsY0FBYyxFQUFFLEVBQUUsSUFBSSxFQUFFO1lBQ2pELFFBQVEsRUFBRSxNQUFNLENBQUMsTUFBTSxFQUFFLEVBQUUsSUFBSSxFQUFFO1NBQ3BDLENBQUMsQ0FBQztRQUNILElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUU7WUFDMUIsSUFBSSxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1NBQ25HO1FBQ0QsSUFBSSxNQUFNLENBQUMsSUFBSSxLQUFLLG9CQUFvQixFQUFFO1lBQ3RDLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ2hELElBQUksV0FBVyxFQUFFO2dCQUNiLFdBQVcsQ0FBQyxPQUFPLEVBQUUsQ0FBQzthQUN6QjtTQUNKO0lBQ0wsQ0FBQztJQUVPLGFBQWE7UUFDakIsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsSUFBSSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQzthQUN4RCxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7YUFDekMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2xCLENBQUM7OEdBaE1RLHNCQUFzQjtrR0FBdEIsc0JBQXNCLGlGQ3ZDbkMsa3VVQWlOQTs7MkZEMUthLHNCQUFzQjtrQkFObEMsU0FBUzsrQkFDSSxvQkFBb0IsbUJBR2IsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgbWFya2VyIGFzIF8gfSBmcm9tICdAYmllc2JqZXJnL25neC10cmFuc2xhdGUtZXh0cmFjdC1tYXJrZXInO1xyXG5pbXBvcnQge1xyXG4gICAgQ0hBTk5FTF9GUkFHTUVOVCxcclxuICAgIENoYW5uZWxGcmFnbWVudCxcclxuICAgIENyZWF0ZUNoYW5uZWxJbnB1dCxcclxuICAgIEN1cnJlbmN5Q29kZSxcclxuICAgIERhdGFTZXJ2aWNlLFxyXG4gICAgR2V0Q2hhbm5lbERldGFpbERvY3VtZW50LFxyXG4gICAgZ2V0Q3VzdG9tRmllbGRzRGVmYXVsdHMsXHJcbiAgICBHZXRTZWxsZXJzUXVlcnksXHJcbiAgICBMYW5ndWFnZUNvZGUsXHJcbiAgICBOb3RpZmljYXRpb25TZXJ2aWNlLFxyXG4gICAgUGVybWlzc2lvbixcclxuICAgIFNlcnZlckNvbmZpZ1NlcnZpY2UsXHJcbiAgICBUeXBlZEJhc2VEZXRhaWxDb21wb25lbnQsXHJcbiAgICBVcGRhdGVDaGFubmVsSW5wdXQsXHJcbn0gZnJvbSAnQHZlbmR1cmUvYWRtaW4tdWkvY29yZSc7XHJcbmltcG9ydCB7IERFRkFVTFRfQ0hBTk5FTF9DT0RFIH0gZnJvbSAnQHZlbmR1cmUvY29tbW9uL2xpYi9zaGFyZWQtY29uc3RhbnRzJztcclxuaW1wb3J0IHsgZ3FsIH0gZnJvbSAnYXBvbGxvLWFuZ3VsYXInO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IG1hcCwgbWVyZ2VNYXAsIHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5leHBvcnQgY29uc3QgR0VUX0NIQU5ORUxfREVUQUlMID0gZ3FsYFxyXG4gICAgcXVlcnkgR2V0Q2hhbm5lbERldGFpbCgkaWQ6IElEISkge1xyXG4gICAgICAgIGNoYW5uZWwoaWQ6ICRpZCkge1xyXG4gICAgICAgICAgICAuLi5DaGFubmVsXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgJHtDSEFOTkVMX0ZSQUdNRU5UfVxyXG5gO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ3Zkci1jaGFubmVsLWRldGFpbCcsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vY2hhbm5lbC1kZXRhaWwuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vY2hhbm5lbC1kZXRhaWwuY29tcG9uZW50LnNjc3MnXSxcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ2hhbm5lbERldGFpbENvbXBvbmVudFxyXG4gICAgZXh0ZW5kcyBUeXBlZEJhc2VEZXRhaWxDb21wb25lbnQ8dHlwZW9mIEdldENoYW5uZWxEZXRhaWxEb2N1bWVudCwgJ2NoYW5uZWwnPlxyXG4gICAgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveVxyXG57XHJcbiAgICBERUZBVUxUX0NIQU5ORUxfQ09ERSA9IERFRkFVTFRfQ0hBTk5FTF9DT0RFO1xyXG4gICAgY3VzdG9tRmllbGRzID0gdGhpcy5nZXRDdXN0b21GaWVsZENvbmZpZygnQ2hhbm5lbCcpO1xyXG4gICAgLy8gem9uZXMkOiBPYnNlcnZhYmxlPEFycmF5PEl0ZW1PZjxHZXRab25lTGlzdFF1ZXJ5LCAnem9uZXMnPj4+O1xyXG4gICAgc2VsbGVycyQ6IE9ic2VydmFibGU8R2V0U2VsbGVyc1F1ZXJ5WydzZWxsZXJzJ11bJ2l0ZW1zJ10+O1xyXG4gICAgZGV0YWlsRm9ybSA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xyXG4gICAgICAgIGNvZGU6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICAgdG9rZW46IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICAgcHJpY2VzSW5jbHVkZVRheDogW2ZhbHNlXSxcclxuICAgICAgICBhdmFpbGFibGVMYW5ndWFnZUNvZGVzOiBbW10gYXMgc3RyaW5nW11dLFxyXG4gICAgICAgIGF2YWlsYWJsZUN1cnJlbmN5Q29kZXM6IFtbXSBhcyBzdHJpbmdbXV0sXHJcbiAgICAgICAgZGVmYXVsdEN1cnJlbmN5Q29kZTogWycnIGFzIEN1cnJlbmN5Q29kZSwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICAgZGVmYXVsdFNoaXBwaW5nWm9uZUlkOiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICAgIGRlZmF1bHRMYW5ndWFnZUNvZGU6IFt1bmRlZmluZWQgYXMgTGFuZ3VhZ2VDb2RlIHwgdW5kZWZpbmVkLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgICBkZWZhdWx0VGF4Wm9uZUlkOiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICAgIHNlbGxlcklkOiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICAgIGN1c3RvbUZpZWxkczogdGhpcy5mb3JtQnVpbGRlci5ncm91cChnZXRDdXN0b21GaWVsZHNEZWZhdWx0cyh0aGlzLmN1c3RvbUZpZWxkcykpLFxyXG4gICAgfSk7XHJcblxyXG4gICAgYXZhaWxhYmxlTGFuZ3VhZ2VDb2RlcyQ6IE9ic2VydmFibGU8TGFuZ3VhZ2VDb2RlW10+O1xyXG4gICAgcmVhZG9ubHkgdXBkYXRlUGVybWlzc2lvbiA9IFtQZXJtaXNzaW9uLlN1cGVyQWRtaW4sIFBlcm1pc3Npb24uVXBkYXRlQ2hhbm5lbCwgUGVybWlzc2lvbi5DcmVhdGVDaGFubmVsXTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcm90ZWN0ZWQgc2VydmVyQ29uZmlnU2VydmljZTogU2VydmVyQ29uZmlnU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgICAgICBwcm90ZWN0ZWQgZGF0YVNlcnZpY2U6IERhdGFTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLFxyXG4gICAgICAgIHByaXZhdGUgbm90aWZpY2F0aW9uU2VydmljZTogTm90aWZpY2F0aW9uU2VydmljZSxcclxuICAgICkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgdGhpcy5pbml0KCk7XHJcbiAgICAgICAgLy8gdGhpcy56b25lcyQgPSB0aGlzLmRhdGFTZXJ2aWNlLnNldHRpbmdzLmdldFpvbmVzKHsgdGFrZTogMTAwIH0pLm1hcFNpbmdsZShkYXRhID0+IGRhdGEuem9uZXMuaXRlbXMpO1xyXG4gICAgICAgIC8vIFRPRE86IG1ha2UgdGhpcyBsYXp5LWxvYWRlZCBhdXRvY29tcGxldGVcclxuICAgICAgICB0aGlzLnNlbGxlcnMkID0gdGhpcy5kYXRhU2VydmljZS5zZXR0aW5ncy5nZXRTZWxsZXJMaXN0KCkubWFwU2luZ2xlKGRhdGEgPT4gZGF0YS5zZWxsZXJzLml0ZW1zKTtcclxuICAgICAgICB0aGlzLmF2YWlsYWJsZUxhbmd1YWdlQ29kZXMkID0gdGhpcy5zZXJ2ZXJDb25maWdTZXJ2aWNlLmdldEF2YWlsYWJsZUxhbmd1YWdlcygpO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25EZXN0cm95KCkge1xyXG4gICAgICAgIHRoaXMuZGVzdHJveSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHNhdmVCdXR0b25FbmFibGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmRldGFpbEZvcm0uZGlydHkgJiYgdGhpcy5kZXRhaWxGb3JtLnZhbGlkO1xyXG4gICAgfVxyXG5cclxuICAgIGNyZWF0ZSgpIHtcclxuICAgICAgICBpZiAoIXRoaXMuZGV0YWlsRm9ybS5kaXJ0eSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHtcclxuICAgICAgICAgICAgY29kZSxcclxuICAgICAgICAgICAgdG9rZW4sXHJcbiAgICAgICAgICAgIGRlZmF1bHRMYW5ndWFnZUNvZGUsXHJcbiAgICAgICAgICAgIHByaWNlc0luY2x1ZGVUYXgsXHJcbiAgICAgICAgICAgIGRlZmF1bHRDdXJyZW5jeUNvZGUsXHJcbiAgICAgICAgICAgIGRlZmF1bHRTaGlwcGluZ1pvbmVJZCxcclxuICAgICAgICAgICAgZGVmYXVsdFRheFpvbmVJZCxcclxuICAgICAgICAgICAgY3VzdG9tRmllbGRzLFxyXG4gICAgICAgICAgICBzZWxsZXJJZCxcclxuICAgICAgICB9ID0gdGhpcy5kZXRhaWxGb3JtLnZhbHVlO1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgICAgIWNvZGUgfHxcclxuICAgICAgICAgICAgIXRva2VuIHx8XHJcbiAgICAgICAgICAgICFkZWZhdWx0TGFuZ3VhZ2VDb2RlIHx8XHJcbiAgICAgICAgICAgICFkZWZhdWx0Q3VycmVuY3lDb2RlIHx8XHJcbiAgICAgICAgICAgICFkZWZhdWx0U2hpcHBpbmdab25lSWQgfHxcclxuICAgICAgICAgICAgIWRlZmF1bHRUYXhab25lSWRcclxuICAgICAgICApIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBpbnB1dDogQ3JlYXRlQ2hhbm5lbElucHV0ID0ge1xyXG4gICAgICAgICAgICBjb2RlLFxyXG4gICAgICAgICAgICB0b2tlbixcclxuICAgICAgICAgICAgZGVmYXVsdExhbmd1YWdlQ29kZSxcclxuICAgICAgICAgICAgcHJpY2VzSW5jbHVkZVRheDogISFwcmljZXNJbmNsdWRlVGF4LFxyXG4gICAgICAgICAgICBkZWZhdWx0Q3VycmVuY3lDb2RlLFxyXG4gICAgICAgICAgICBkZWZhdWx0U2hpcHBpbmdab25lSWQsXHJcbiAgICAgICAgICAgIGRlZmF1bHRUYXhab25lSWQsXHJcbiAgICAgICAgICAgIGN1c3RvbUZpZWxkcyxcclxuICAgICAgICAgICAgc2VsbGVySWQsXHJcbiAgICAgICAgfTtcclxuICAgICAgICB0aGlzLmRhdGFTZXJ2aWNlLnNldHRpbmdzXHJcbiAgICAgICAgICAgIC5jcmVhdGVDaGFubmVsKGlucHV0KVxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgIG1lcmdlTWFwKCh7IGNyZWF0ZUNoYW5uZWwgfSkgPT5cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGFTZXJ2aWNlLmF1dGguY3VycmVudFVzZXIoKS5zaW5nbGUkLnBpcGUoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcCgoeyBtZSB9KSA9PiAoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVDaGFubmVsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSksXHJcbiAgICAgICAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgICAgICBtZXJnZU1hcCgoeyBtZSwgY3JlYXRlQ2hhbm5lbCB9KSA9PlxyXG4gICAgICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tbm9uLW51bGwtYXNzZXJ0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRhU2VydmljZS5jbGllbnQudXBkYXRlVXNlckNoYW5uZWxzKG1lIS5jaGFubmVscykucGlwZShtYXAoKCkgPT4gY3JlYXRlQ2hhbm5lbCkpLFxyXG4gICAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKGRhdGEgPT4ge1xyXG4gICAgICAgICAgICAgICAgc3dpdGNoIChkYXRhLl9fdHlwZW5hbWUpIHtcclxuICAgICAgICAgICAgICAgICAgICBjYXNlICdDaGFubmVsJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLnN1Y2Nlc3MoXygnY29tbW9uLm5vdGlmeS1jcmVhdGUtc3VjY2VzcycpLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRpdHk6ICdDaGFubmVsJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGV0YWlsRm9ybS5tYXJrQXNQcmlzdGluZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy4uLycsIGRhdGEuaWRdLCB7IHJlbGF0aXZlVG86IHRoaXMucm91dGUgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ0xhbmd1YWdlTm90QXZhaWxhYmxlRXJyb3InOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UuZXJyb3IoZGF0YS5tZXNzYWdlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHNhdmUoKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmRldGFpbEZvcm0uZGlydHkpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBmb3JtVmFsdWUgPSB0aGlzLmRldGFpbEZvcm0udmFsdWU7XHJcbiAgICAgICAgdGhpcy5lbnRpdHkkXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgdGFrZSgxKSxcclxuICAgICAgICAgICAgICAgIG1lcmdlTWFwKGNoYW5uZWwgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGlucHV0ID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogY2hhbm5lbC5pZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogZm9ybVZhbHVlLmNvZGUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuOiBmb3JtVmFsdWUudG9rZW4sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHByaWNlc0luY2x1ZGVUYXg6IGZvcm1WYWx1ZS5wcmljZXNJbmNsdWRlVGF4LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBhdmFpbGFibGVMYW5ndWFnZUNvZGVzOiBmb3JtVmFsdWUuYXZhaWxhYmxlTGFuZ3VhZ2VDb2RlcyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgYXZhaWxhYmxlQ3VycmVuY3lDb2RlczogZm9ybVZhbHVlLmF2YWlsYWJsZUN1cnJlbmN5Q29kZXMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRDdXJyZW5jeUNvZGU6IGZvcm1WYWx1ZS5kZWZhdWx0Q3VycmVuY3lDb2RlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0U2hpcHBpbmdab25lSWQ6IGZvcm1WYWx1ZS5kZWZhdWx0U2hpcHBpbmdab25lSWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRMYW5ndWFnZUNvZGU6IGZvcm1WYWx1ZS5kZWZhdWx0TGFuZ3VhZ2VDb2RlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0VGF4Wm9uZUlkOiBmb3JtVmFsdWUuZGVmYXVsdFRheFpvbmVJZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tRmllbGRzOiBmb3JtVmFsdWUuY3VzdG9tRmllbGRzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxsZXJJZDogZm9ybVZhbHVlLnNlbGxlcklkLFxyXG4gICAgICAgICAgICAgICAgICAgIH0gYXMgVXBkYXRlQ2hhbm5lbElucHV0O1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRhdGFTZXJ2aWNlLnNldHRpbmdzLnVwZGF0ZUNoYW5uZWwoaW5wdXQpO1xyXG4gICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLnN1YnNjcmliZSgoeyB1cGRhdGVDaGFubmVsIH0pID0+IHtcclxuICAgICAgICAgICAgICAgIHN3aXRjaCAodXBkYXRlQ2hhbm5lbC5fX3R5cGVuYW1lKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnQ2hhbm5lbCc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5zdWNjZXNzKF8oJ2NvbW1vbi5ub3RpZnktdXBkYXRlLXN1Y2Nlc3MnKSwge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50aXR5OiAnQ2hhbm5lbCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRldGFpbEZvcm0ubWFya0FzUHJpc3RpbmUoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnTGFuZ3VhZ2VOb3RBdmFpbGFibGVFcnJvcic6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5lcnJvcih1cGRhdGVDaGFubmVsLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFVwZGF0ZSB0aGUgZm9ybSB2YWx1ZXMgd2hlbiB0aGUgZW50aXR5IGNoYW5nZXMuXHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCBzZXRGb3JtVmFsdWVzKGVudGl0eTogQ2hhbm5lbEZyYWdtZW50LCBsYW5ndWFnZUNvZGU6IExhbmd1YWdlQ29kZSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuZGV0YWlsRm9ybS5wYXRjaFZhbHVlKHtcclxuICAgICAgICAgICAgY29kZTogZW50aXR5LmNvZGUsXHJcbiAgICAgICAgICAgIHRva2VuOiBlbnRpdHkudG9rZW4gfHwgdGhpcy5nZW5lcmF0ZVRva2VuKCksXHJcbiAgICAgICAgICAgIHByaWNlc0luY2x1ZGVUYXg6IGVudGl0eS5wcmljZXNJbmNsdWRlVGF4LFxyXG4gICAgICAgICAgICBhdmFpbGFibGVMYW5ndWFnZUNvZGVzOiBlbnRpdHkuYXZhaWxhYmxlTGFuZ3VhZ2VDb2RlcyxcclxuICAgICAgICAgICAgYXZhaWxhYmxlQ3VycmVuY3lDb2RlczogZW50aXR5LmF2YWlsYWJsZUN1cnJlbmN5Q29kZXMsXHJcbiAgICAgICAgICAgIGRlZmF1bHRDdXJyZW5jeUNvZGU6IGVudGl0eS5kZWZhdWx0Q3VycmVuY3lDb2RlLFxyXG4gICAgICAgICAgICBkZWZhdWx0U2hpcHBpbmdab25lSWQ6IGVudGl0eS5kZWZhdWx0U2hpcHBpbmdab25lPy5pZCA/PyAnJyxcclxuICAgICAgICAgICAgZGVmYXVsdExhbmd1YWdlQ29kZTogZW50aXR5LmRlZmF1bHRMYW5ndWFnZUNvZGUsXHJcbiAgICAgICAgICAgIGRlZmF1bHRUYXhab25lSWQ6IGVudGl0eS5kZWZhdWx0VGF4Wm9uZT8uaWQgPz8gJycsXHJcbiAgICAgICAgICAgIHNlbGxlcklkOiBlbnRpdHkuc2VsbGVyPy5pZCA/PyAnJyxcclxuICAgICAgICB9KTtcclxuICAgICAgICBpZiAodGhpcy5jdXN0b21GaWVsZHMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0Q3VzdG9tRmllbGRGb3JtVmFsdWVzKHRoaXMuY3VzdG9tRmllbGRzLCB0aGlzLmRldGFpbEZvcm0uZ2V0KFsnY3VzdG9tRmllbGRzJ10pLCBlbnRpdHkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZW50aXR5LmNvZGUgPT09IERFRkFVTFRfQ0hBTk5FTF9DT0RFKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNvZGVDb250cm9sID0gdGhpcy5kZXRhaWxGb3JtLmdldCgnY29kZScpO1xyXG4gICAgICAgICAgICBpZiAoY29kZUNvbnRyb2wpIHtcclxuICAgICAgICAgICAgICAgIGNvZGVDb250cm9sLmRpc2FibGUoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGdlbmVyYXRlVG9rZW4oKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gQXJyYXkuZnJvbShjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKG5ldyBVaW50OEFycmF5KDEwKSkpXHJcbiAgICAgICAgICAgIC5tYXAoYiA9PiBiLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgyLCAnMCcpKVxyXG4gICAgICAgICAgICAuam9pbignJyk7XHJcbiAgICB9XHJcbn1cclxuIiwiPHZkci1wYWdlLWJsb2NrPlxyXG4gICAgPHZkci1hY3Rpb24tYmFyPlxyXG4gICAgICAgIDx2ZHItYWItbGVmdD48L3Zkci1hYi1sZWZ0PlxyXG5cclxuICAgICAgICA8dmRyLWFiLXJpZ2h0PlxyXG4gICAgICAgICAgICA8dmRyLWFjdGlvbi1iYXItaXRlbXMgbG9jYXRpb25JZD1cImNoYW5uZWwtZGV0YWlsXCI+PC92ZHItYWN0aW9uLWJhci1pdGVtcz5cclxuICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIlxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJpc05ldyQgfCBhc3luYzsgZWxzZSB1cGRhdGVCdXR0b25cIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImNyZWF0ZSgpXCJcclxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhc2F2ZUJ1dHRvbkVuYWJsZWQoKVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIHt7ICdjb21tb24uY3JlYXRlJyB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICN1cGRhdGVCdXR0b24+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzYXZlKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICp2ZHJJZlBlcm1pc3Npb25zPVwiWydTdXBlckFkbWluJywgJ1VwZGF0ZUNoYW5uZWwnXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFzYXZlQnV0dG9uRW5hYmxlZCgpXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICB7eyAnY29tbW9uLnVwZGF0ZScgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDwvdmRyLWFiLXJpZ2h0PlxyXG4gICAgPC92ZHItYWN0aW9uLWJhcj5cclxuPC92ZHItcGFnZS1ibG9jaz5cclxuXHJcbjxmb3JtIGNsYXNzPVwiZm9ybVwiIFtmb3JtR3JvdXBdPVwiZGV0YWlsRm9ybVwiPlxyXG4gICAgPHZkci1wYWdlLWRldGFpbC1sYXlvdXQ+XHJcbiAgICAgICAgPHZkci1wYWdlLWRldGFpbC1zaWRlYmFyPlxyXG4gICAgICAgICAgICA8dmRyLWNhcmQgKm5nSWY9XCJlbnRpdHkkIHwgYXN5bmMgYXMgZW50aXR5XCI+XHJcbiAgICAgICAgICAgICAgICA8dmRyLXBhZ2UtZW50aXR5LWluZm8gW2VudGl0eV09XCJlbnRpdHlcIiAvPlxyXG4gICAgICAgICAgICA8L3Zkci1jYXJkPlxyXG4gICAgICAgIDwvdmRyLXBhZ2UtZGV0YWlsLXNpZGViYXI+XHJcbiAgICAgICAgPHZkci1wYWdlLWJsb2NrPlxyXG4gICAgICAgICAgICA8dmRyLWNhcmQ+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncmlkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHZkci1mb3JtLWZpZWxkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1ncmlkLXNwYW5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImVudGl0eT8uY29kZSAhPT0gREVGQVVMVF9DSEFOTkVMX0NPREVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ2NvbW1vbi5jb2RlJyB8IHRyYW5zbGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcj1cImNvZGVcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImNvZGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cIiEodXBkYXRlUGVybWlzc2lvbiB8IGhhc1Blcm1pc3Npb24pXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImNvZGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdmRyLWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHZkci1mb3JtLWl0ZW1cclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWdyaWQtc3BhblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZW50aXR5Py5jb2RlID09PSBERUZBVUxUX0NIQU5ORUxfQ09ERVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCInY29tbW9uLmNvZGUnIHwgdHJhbnNsYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGVudGl0eT8uY29kZSB8IGNoYW5uZWxDb2RlVG9MYWJlbCB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvdmRyLWZvcm0taXRlbT5cclxuICAgICAgICAgICAgICAgICAgICA8dmRyLWZvcm0tZmllbGQgW2xhYmVsXT1cIidzZXR0aW5ncy5jaGFubmVsLXRva2VuJyB8IHRyYW5zbGF0ZVwiIGZvcj1cInRva2VuXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJ0b2tlblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwiISh1cGRhdGVQZXJtaXNzaW9uIHwgaGFzUGVybWlzc2lvbilcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwidG9rZW5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdmRyLWZvcm0tZmllbGQ+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDx2ZHItZm9ybS1maWVsZCBbbGFiZWxdPVwiJ2NvbW1vbi5zZWxsZXInIHwgdHJhbnNsYXRlXCIgZm9yPVwic2VsbGVySWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cInNlbGxlcklkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInNlbGxlcklkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2ZHJEaXNhYmxlZF09XCIhKHVwZGF0ZVBlcm1pc3Npb24gfCBoYXNQZXJtaXNzaW9uKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gc2VsZWN0ZWQgdmFsdWUgc3R5bGU9XCJkaXNwbGF5OiBub25lXCI+PC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBzZWxsZXIgb2Ygc2VsbGVycyQgfCBhc3luY1wiIFt2YWx1ZV09XCJzZWxsZXIuaWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBzZWxsZXIubmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdmRyLWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHZkci1mb3JtLWZpZWxkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCInY29tbW9uLmF2YWlsYWJsZS1sYW5ndWFnZXMnIHwgdHJhbnNsYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yPVwiYXZhaWxhYmxlTGFuZ3VhZ2VDb2Rlc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dmRyLWxhbmd1YWdlLWNvZGUtc2VsZWN0b3JcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImF2YWlsYWJsZUxhbmd1YWdlQ29kZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhbmd1YWdlQ29kZXNdPVwiYXZhaWxhYmxlTGFuZ3VhZ2VDb2RlcyQgfCBhc3luY1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L3Zkci1sYW5ndWFnZS1jb2RlLXNlbGVjdG9yPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdmRyLWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHZkci1mb3JtLWZpZWxkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCInY29tbW9uLmF2YWlsYWJsZS1jdXJyZW5jaWVzJyB8IHRyYW5zbGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcj1cImF2YWlsYWJsZUN1cnJlbmN5Q29kZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHZkci1jdXJyZW5jeS1jb2RlLXNlbGVjdG9yXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJhdmFpbGFibGVDdXJyZW5jeUNvZGVzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvdmRyLWN1cnJlbmN5LWNvZGUtc2VsZWN0b3I+XHJcbiAgICAgICAgICAgICAgICAgICAgPC92ZHItZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L3Zkci1jYXJkPlxyXG4gICAgICAgICAgICA8dmRyLWNhcmQgW3RpdGxlXT1cIidzZXR0aW5ncy5kZWZhdWx0cycgfCB0cmFuc2xhdGVcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyaWRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dmRyLWZvcm0tZmllbGQgW2xhYmVsXT1cIidjb21tb24uZGVmYXVsdC1sYW5ndWFnZScgfCB0cmFuc2xhdGVcIiBmb3I9XCJkZWZhdWx0TGFuZ3VhZ2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cImRlZmF1bHRMYW5ndWFnZUNvZGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZGVmYXVsdExhbmd1YWdlQ29kZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmRyRGlzYWJsZWRdPVwiISh1cGRhdGVQZXJtaXNzaW9uIHwgaGFzUGVybWlzc2lvbilcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGxhbmd1YWdlQ29kZSBvZiBkZXRhaWxGb3JtLnZhbHVlLmF2YWlsYWJsZUxhbmd1YWdlQ29kZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJsYW5ndWFnZUNvZGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGxhbmd1YWdlQ29kZSB8IGxvY2FsZUxhbmd1YWdlTmFtZSB9fSAoe3sgbGFuZ3VhZ2VDb2RlIHwgdXBwZXJjYXNlIH19KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdmRyLWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHZkci1mb3JtLWZpZWxkIFtsYWJlbF09XCInc2V0dGluZ3MuZGVmYXVsdC1jdXJyZW5jeScgfCB0cmFuc2xhdGVcIiBmb3I9XCJkZWZhdWx0Q3VycmVuY3lcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cImRlZmF1bHRDdXJyZW5jeUNvZGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZGVmYXVsdEN1cnJlbmN5Q29kZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmRyRGlzYWJsZWRdPVwiISh1cGRhdGVQZXJtaXNzaW9uIHwgaGFzUGVybWlzc2lvbilcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNvZGUgb2YgZGV0YWlsRm9ybS52YWx1ZS5hdmFpbGFibGVDdXJyZW5jeUNvZGVzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiY29kZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgY29kZSB8IGxvY2FsZUN1cnJlbmN5TmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdmRyLWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHZkci1mb3JtLWZpZWxkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ3NldHRpbmdzLmRlZmF1bHQtdGF4LXpvbmUnIHwgdHJhbnNsYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcj1cImRlZmF1bHRUYXhab25lSWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmRyLXpvbmUtc2VsZWN0b3JcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJkZWZhdWx0VGF4Wm9uZUlkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmRyRGlzYWJsZWRdPVwiISh1cGRhdGVQZXJtaXNzaW9uIHwgaGFzUGVybWlzc2lvbilcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvdmRyLXpvbmUtc2VsZWN0b3I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdmRyLWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxjbHItYWxlcnRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZGV0YWlsRm9ybS52YWx1ZS5jb2RlICYmICFkZXRhaWxGb3JtLnZhbHVlLmRlZmF1bHRUYXhab25lSWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xyQWxlcnRUeXBlPVwiZGFuZ2VyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbHJBbGVydENsb3NhYmxlXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsci1hbGVydC1pdGVtPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYWxlcnQtdGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAnZXJyb3Iubm8tZGVmYXVsdC10YXgtem9uZS1zZXQnIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbHItYWxlcnQtaXRlbT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9jbHItYWxlcnQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx2ZHItZm9ybS1maWVsZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidzZXR0aW5ncy5kZWZhdWx0LXNoaXBwaW5nLXpvbmUnIHwgdHJhbnNsYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcj1cImRlZmF1bHRTaGlwcGluZ1pvbmVJZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2ZHItem9uZS1zZWxlY3RvclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJkZWZhdWx0U2hpcHBpbmdab25lSWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImRlZmF1bHRTaGlwcGluZ1pvbmVJZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZkckRpc2FibGVkXT1cIiEodXBkYXRlUGVybWlzc2lvbiB8IGhhc1Blcm1pc3Npb24pXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L3Zkci16b25lLXNlbGVjdG9yPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3Zkci1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8Y2xyLWFsZXJ0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImRldGFpbEZvcm0udmFsdWUuY29kZSAmJiAhZGV0YWlsRm9ybS52YWx1ZS5kZWZhdWx0U2hpcHBpbmdab25lSWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xyQWxlcnRUeXBlPVwiZGFuZ2VyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbHJBbGVydENsb3NhYmxlXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsci1hbGVydC1pdGVtPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYWxlcnQtdGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAnZXJyb3Iubm8tZGVmYXVsdC1zaGlwcGluZy16b25lLXNldCcgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Nsci1hbGVydC1pdGVtPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Nsci1hbGVydD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8dmRyLWZvcm0tZmllbGRcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidzZXR0aW5ncy5wcmljZXMtaW5jbHVkZS10YXgnIHwgdHJhbnNsYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yPVwicHJpY2VzSW5jbHVkZVRheFwiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8Y2xyLXRvZ2dsZS13cmFwcGVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbHJUb2dnbGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cInByaWNlc0luY2x1ZGVUYXhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInByaWNlc0luY2x1ZGVUYXhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2ZHJEaXNhYmxlZF09XCIhKHVwZGF0ZVBlcm1pc3Npb24gfCBoYXNQZXJtaXNzaW9uKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Nsci10b2dnbGUtd3JhcHBlcj5cclxuICAgICAgICAgICAgICAgICAgICA8L3Zkci1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvdmRyLWNhcmQ+XHJcbiAgICAgICAgICAgIDx2ZHItY2FyZFxyXG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwTmFtZT1cImN1c3RvbUZpZWxkc1wiXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImN1c3RvbUZpZWxkcy5sZW5ndGhcIlxyXG4gICAgICAgICAgICAgICAgW3RpdGxlXT1cIidjb21tb24uY3VzdG9tLWZpZWxkcycgfCB0cmFuc2xhdGVcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8dmRyLXRhYmJlZC1jdXN0b20tZmllbGRzXHJcbiAgICAgICAgICAgICAgICAgICAgZW50aXR5TmFtZT1cIkNoYW5uZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjdXN0b21GaWVsZHNdPVwiY3VzdG9tRmllbGRzXCJcclxuICAgICAgICAgICAgICAgICAgICBbY3VzdG9tRmllbGRzRm9ybUdyb3VwXT1cImRldGFpbEZvcm0uZ2V0KCdjdXN0b21GaWVsZHMnKVwiXHJcbiAgICAgICAgICAgICAgICA+PC92ZHItdGFiYmVkLWN1c3RvbS1maWVsZHM+XHJcbiAgICAgICAgICAgIDwvdmRyLWNhcmQ+XHJcbiAgICAgICAgICAgIDx2ZHItY3VzdG9tLWRldGFpbC1jb21wb25lbnQtaG9zdFxyXG4gICAgICAgICAgICAgICAgbG9jYXRpb25JZD1cImNoYW5uZWwtZGV0YWlsXCJcclxuICAgICAgICAgICAgICAgIFtlbnRpdHkkXT1cImVudGl0eSRcIlxyXG4gICAgICAgICAgICAgICAgW2RldGFpbEZvcm1dPVwiZGV0YWlsRm9ybVwiXHJcbiAgICAgICAgICAgID48L3Zkci1jdXN0b20tZGV0YWlsLWNvbXBvbmVudC1ob3N0PlxyXG4gICAgICAgIDwvdmRyLXBhZ2UtYmxvY2s+XHJcbiAgICA8L3Zkci1wYWdlLWRldGFpbC1sYXlvdXQ+XHJcbjwvZm9ybT5cclxuIl19