@vendure/admin-ui 2.1.4 → 2.1.6

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 (44) hide show
  1. package/core/common/version.d.ts +1 -1
  2. package/core/components/app-shell/app-shell.component.d.ts +1 -0
  3. package/core/extension/register-route-component.d.ts +1 -1
  4. package/core/shared/components/order-state-label/order-state-label.component.d.ts +1 -1
  5. package/core/shared/dynamic-form-inputs/default-form-inputs.d.ts +1 -1
  6. package/esm2022/catalog/components/collection-detail/collection-detail.component.mjs +2 -2
  7. package/esm2022/catalog/components/product-detail/product-detail.component.mjs +2 -2
  8. package/esm2022/core/common/utilities/configurable-operation-utils.mjs +1 -1
  9. package/esm2022/core/common/version.mjs +2 -2
  10. package/esm2022/core/components/app-shell/app-shell.component.mjs +4 -3
  11. package/esm2022/core/shared/components/asset-preview/asset-preview.component.mjs +3 -3
  12. package/esm2022/core/shared/components/chart/chart.component.mjs +1 -1
  13. package/esm2022/core/shared/components/configurable-input/configurable-input.component.mjs +1 -1
  14. package/esm2022/core/shared/components/datetime-picker/datetime-picker.service.mjs +1 -1
  15. package/esm2022/core/shared/components/page-header-tabs/page-header-tabs.component.mjs +2 -2
  16. package/esm2022/login/components/login/login.component.mjs +4 -5
  17. package/esm2022/marketing/components/promotion-detail/promotion-detail.component.mjs +8 -8
  18. package/esm2022/order/components/order-payment-card/order-payment-card.component.mjs +2 -2
  19. package/esm2022/order/components/refund-order-dialog/refund-order-dialog.component.mjs +2 -2
  20. package/esm2022/react/react-hooks/use-form-control.mjs +1 -1
  21. package/esm2022/settings/components/payment-method-detail/payment-method-detail.component.mjs +8 -8
  22. package/esm2022/settings/settings.routes.mjs +4 -4
  23. package/fesm2022/vendure-admin-ui-catalog.mjs +3 -3
  24. package/fesm2022/vendure-admin-ui-catalog.mjs.map +1 -1
  25. package/fesm2022/vendure-admin-ui-core.mjs +8 -7
  26. package/fesm2022/vendure-admin-ui-core.mjs.map +1 -1
  27. package/fesm2022/vendure-admin-ui-login.mjs +2 -3
  28. package/fesm2022/vendure-admin-ui-login.mjs.map +1 -1
  29. package/fesm2022/vendure-admin-ui-marketing.mjs +7 -7
  30. package/fesm2022/vendure-admin-ui-marketing.mjs.map +1 -1
  31. package/fesm2022/vendure-admin-ui-order.mjs +3 -3
  32. package/fesm2022/vendure-admin-ui-order.mjs.map +1 -1
  33. package/fesm2022/vendure-admin-ui-react.mjs.map +1 -1
  34. package/fesm2022/vendure-admin-ui-settings.mjs +10 -10
  35. package/fesm2022/vendure-admin-ui-settings.mjs.map +1 -1
  36. package/login/components/login/login.component.d.ts +0 -1
  37. package/package.json +8 -8
  38. package/settings/components/stock-location-list/stock-location-list.component.d.ts +1 -1
  39. package/static/i18n-messages/en.json +3 -3
  40. package/static/i18n-messages/pt_BR.json +1 -1
  41. package/static/styles/global/_sass-overrides.scss +5 -0
  42. package/static/styles/theme/dark.scss +5 -4
  43. package/static/styles/theme/default.scss +7 -2
  44. package/static/theme.min.css +1 -1
@@ -12,13 +12,13 @@ import * as i2 from "@angular/forms";
12
12
  import * as i3 from "@clr/angular";
13
13
  import * as i4 from "@angular/common";
14
14
  import * as i5 from "@ngx-translate/core";
15
- export const GET_PAYMENT_METHOD_DETAIL = gql `
16
- query GetPaymentMethodDetail($id: ID!) {
17
- paymentMethod(id: $id) {
18
- ...PaymentMethod
19
- }
20
- }
21
- ${PAYMENT_METHOD_FRAGMENT}
15
+ export const GET_PAYMENT_METHOD_DETAIL = gql `
16
+ query GetPaymentMethodDetail($id: ID!) {
17
+ paymentMethod(id: $id) {
18
+ ...PaymentMethod
19
+ }
20
+ }
21
+ ${PAYMENT_METHOD_FRAGMENT}
22
22
  `;
23
23
  export class PaymentMethodDetailComponent extends TypedBaseDetailComponent {
24
24
  constructor(changeDetector, dataService, formBuilder, notificationService) {
@@ -203,4 +203,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImpor
203
203
  type: Component,
204
204
  args: [{ selector: 'vdr-payment-method-detail', changeDetection: ChangeDetectionStrategy.OnPush, template: "<vdr-page-block\r\n ><vdr-action-bar>\r\n <vdr-ab-left>\r\n <vdr-language-selector\r\n [disabled]=\"isNew$ | async\"\r\n [availableLanguageCodes]=\"availableLanguages$ | async\"\r\n [currentLanguageCode]=\"languageCode$ | async\"\r\n (languageCodeChange)=\"setLanguage($event)\"\r\n ></vdr-language-selector>\r\n </vdr-ab-left>\r\n\r\n <vdr-ab-right>\r\n <vdr-action-bar-items locationId=\"payment-method-detail\"></vdr-action-bar-items>\r\n <button\r\n class=\"btn btn-primary\"\r\n *ngIf=\"isNew$ | async; else updateButton\"\r\n [disabled]=\"detailForm.pristine || detailForm.invalid || !selectedHandler\"\r\n (click)=\"create()\"\r\n >\r\n {{ 'common.create' | translate }}\r\n </button>\r\n <ng-template #updateButton>\r\n <button\r\n *vdrIfPermissions=\"updatePermission\"\r\n class=\"btn btn-primary\"\r\n (click)=\"save()\"\r\n [disabled]=\"detailForm.pristine || detailForm.invalid || !selectedHandler\"\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>\r\n <vdr-form-field [label]=\"'common.enabled' | translate\" for=\"description\">\r\n <clr-toggle-wrapper>\r\n <input\r\n type=\"checkbox\"\r\n clrToggle\r\n id=\"enabled\"\r\n [vdrDisabled]=\"!(updatePermission | hasPermission)\"\r\n formControlName=\"enabled\"\r\n />\r\n </clr-toggle-wrapper>\r\n </vdr-form-field>\r\n </vdr-card>\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 [label]=\"'common.name' | translate\" for=\"name\">\r\n <input\r\n id=\"name\"\r\n type=\"text\"\r\n formControlName=\"name\"\r\n [readonly]=\"!(updatePermission | hasPermission)\"\r\n (input)=\"updateCode(entity?.code, $event.target.value)\"\r\n />\r\n </vdr-form-field>\r\n <vdr-form-field\r\n [label]=\"'common.code' | translate\"\r\n for=\"code\"\r\n [readOnlyToggle]=\"updatePermission | hasPermission\"\r\n >\r\n <input\r\n id=\"code\"\r\n type=\"text\"\r\n formControlName=\"code\"\r\n [readonly]=\"!(updatePermission | hasPermission)\"\r\n />\r\n </vdr-form-field>\r\n <vdr-rich-text-editor\r\n class=\"form-grid-span\"\r\n formControlName=\"description\"\r\n [readonly]=\"!(updatePermission | hasPermission)\"\r\n [label]=\"'common.description' | translate\"\r\n ></vdr-rich-text-editor>\r\n </div>\r\n </vdr-card>\r\n\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=\"PaymentMethod\"\r\n [customFields]=\"customFields\"\r\n [customFieldsFormGroup]=\"detailForm.get('customFields')\"\r\n ></vdr-tabbed-custom-fields>\r\n </vdr-card>\r\n\r\n <vdr-custom-detail-component-host\r\n locationId=\"payment-method-detail\"\r\n [entity$]=\"entity$\"\r\n [detailForm]=\"detailForm\"\r\n ></vdr-custom-detail-component-host>\r\n\r\n <vdr-card [title]=\"'settings.payment-eligibility-checker' | translate\">\r\n <vdr-configurable-input\r\n *ngIf=\"selectedChecker && selectedCheckerDefinition\"\r\n [operation]=\"selectedChecker\"\r\n [operationDefinition]=\"selectedCheckerDefinition\"\r\n [readonly]=\"!(updatePermission | hasPermission)\"\r\n (remove)=\"removeChecker()\"\r\n formControlName=\"checker\"\r\n ></vdr-configurable-input>\r\n <div *ngIf=\"!selectedChecker || !selectedCheckerDefinition\">\r\n <vdr-dropdown>\r\n <button class=\"btn btn-outline\" vdrDropdownTrigger>\r\n <clr-icon shape=\"plus\"></clr-icon>\r\n {{ 'common.select' | translate }}\r\n </button>\r\n <vdr-dropdown-menu vdrPosition=\"bottom-left\">\r\n <button\r\n *ngFor=\"let checker of checkers\"\r\n type=\"button\"\r\n vdrDropdownItem\r\n (click)=\"selectChecker(checker)\"\r\n >\r\n {{ checker.description }}\r\n </button>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n </div>\r\n </vdr-card>\r\n <vdr-card [title]=\"'settings.payment-handler' | translate\">\r\n <vdr-configurable-input\r\n *ngIf=\"selectedHandler && selectedHandlerDefinition\"\r\n [operation]=\"selectedHandler\"\r\n [operationDefinition]=\"selectedHandlerDefinition\"\r\n [readonly]=\"!(updatePermission | hasPermission)\"\r\n (remove)=\"removeHandler()\"\r\n formControlName=\"handler\"\r\n ></vdr-configurable-input>\r\n <div *ngIf=\"!selectedHandler || !selectedHandlerDefinition\">\r\n <vdr-dropdown>\r\n <button class=\"btn btn-outline\" vdrDropdownTrigger>\r\n <clr-icon shape=\"plus\"></clr-icon>\r\n {{ 'common.select' | translate }}\r\n </button>\r\n <vdr-dropdown-menu vdrPosition=\"bottom-left\">\r\n <button\r\n *ngFor=\"let handler of handlers\"\r\n type=\"button\"\r\n vdrDropdownItem\r\n (click)=\"selectHandler(handler)\"\r\n >\r\n {{ handler.description }}\r\n </button>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n </div>\r\n </vdr-card>\r\n </vdr-page-block>\r\n </vdr-page-detail-layout>\r\n</form>\r\n" }]
205
205
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.DataService }, { type: i2.FormBuilder }, { type: i1.NotificationService }]; } });
206
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF5bWVudC1tZXRob2QtZGV0YWlsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc2V0dGluZ3Mvc3JjL2NvbXBvbmVudHMvcGF5bWVudC1tZXRob2QtZGV0YWlsL3BheW1lbnQtbWV0aG9kLWRldGFpbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NldHRpbmdzL3NyYy9jb21wb25lbnRzL3BheW1lbnQtbWV0aG9kLWRldGFpbC9wYXltZW50LW1ldGhvZC1kZXRhaWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFxQixTQUFTLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQ3pHLE9BQU8sRUFBaUMsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0UsT0FBTyxFQUFFLE1BQU0sSUFBSSxDQUFDLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUN0RSxPQUFPLEVBQ0gsZ0NBQWdDLEVBSWhDLHlCQUF5QixFQUV6QixlQUFlLEVBQ2YsaUJBQWlCLEVBQ2pCLHVCQUF1QixFQUt2Qix1QkFBdUIsRUFFdkIsVUFBVSxFQUNWLDRCQUE0QixFQUM1Qix3QkFBd0IsR0FFM0IsTUFBTSx3QkFBd0IsQ0FBQztBQUNoQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDdkUsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDckMsT0FBTyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7OztBQUVoRCxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxHQUFHLENBQUE7Ozs7OztNQU10Qyx1QkFBdUI7Q0FDNUIsQ0FBQztBQVFGLE1BQU0sT0FBTyw0QkFDVCxTQUFRLHdCQUFnRjtJQXFCeEYsWUFDWSxjQUFpQyxFQUMvQixXQUF3QixFQUMxQixXQUF3QixFQUN4QixtQkFBd0M7UUFFaEQsS0FBSyxFQUFFLENBQUM7UUFMQSxtQkFBYyxHQUFkLGNBQWMsQ0FBbUI7UUFDL0IsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDMUIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQXRCcEQsaUJBQVksR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDMUQsZUFBVSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDO1lBQ2hDLElBQUksRUFBRSxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDO1lBQy9CLElBQUksRUFBRSxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDO1lBQy9CLFdBQVcsRUFBRSxFQUFFO1lBQ2YsT0FBTyxFQUFFLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7WUFDcEMsT0FBTyxFQUFFLEVBQTBFO1lBQ25GLE9BQU8sRUFBRSxFQUEwRTtZQUNuRixZQUFZLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1NBQ25GLENBQUMsQ0FBQztRQUNILGFBQVEsR0FBc0MsRUFBRSxDQUFDO1FBQ2pELGFBQVEsR0FBc0MsRUFBRSxDQUFDO1FBS3hDLHFCQUFnQixHQUFHLENBQUMsVUFBVSxDQUFDLGNBQWMsRUFBRSxVQUFVLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQVN4RixDQUFDO0lBRUQsUUFBUTtRQUNKLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNaLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLDBCQUEwQixFQUFFLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUM1RSxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxnQ0FBZ0MsQ0FBQztZQUN0RCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQztZQUMzQyxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ25DLElBQUksQ0FBQyx5QkFBeUIsR0FBRyxJQUFJLENBQUMsZ0NBQWdDLENBQUMsSUFBSSxDQUN2RSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUM3QyxDQUFDO1lBQ0YsSUFBSSxDQUFDLHlCQUF5QixHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQzVELENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQzdDLENBQUM7UUFDTixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxXQUFXO1FBQ1AsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ25CLENBQUM7SUFFRCxVQUFVLENBQUMsV0FBK0IsRUFBRSxTQUFpQjtRQUN6RCxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ2QsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDaEQsSUFBSSxXQUFXLElBQUksV0FBVyxDQUFDLFFBQVEsRUFBRTtnQkFDckMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7YUFDekQ7U0FDSjtJQUNMLENBQUM7SUFFRCxhQUFhLENBQUMsT0FBd0M7UUFDbEQsSUFBSSxDQUFDLHlCQUF5QixHQUFHLE9BQU8sQ0FBQztRQUN6QyxJQUFJLENBQUMsZUFBZSxHQUFHLGdDQUFnQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2pFLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ25ELElBQUksV0FBVyxFQUFFO1lBQ2IsV0FBVyxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQzlCLFdBQVcsQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQ3ZELFdBQVcsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1NBQ2hEO1FBQ0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBRUQsYUFBYSxDQUFDLE9BQXdDO1FBQ2xELElBQUksQ0FBQyx5QkFBeUIsR0FBRyxPQUFPLENBQUM7UUFDekMsSUFBSSxDQUFDLGVBQWUsR0FBRyxnQ0FBZ0MsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNqRSxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNuRCxJQUFJLFdBQVcsRUFBRTtZQUNiLFdBQVcsQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUM5QixXQUFXLENBQUMsc0JBQXNCLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUN2RCxXQUFXLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztTQUNoRDtRQUNELElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUVELGFBQWE7UUFDVCxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztRQUM1QixJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ2xDLENBQUM7SUFFRCxhQUFhO1FBQ1QsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7UUFDNUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBRUQsTUFBTTtRQUNGLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUM7UUFDN0MsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQztRQUM3QyxJQUFJLENBQUMsZUFBZSxFQUFFO1lBQ2xCLE9BQU87U0FDVjtRQUNELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FDdEM7WUFDSSxFQUFFLEVBQUUsRUFBRTtZQUNOLFNBQVMsRUFBRSxFQUFFO1lBQ2IsU0FBUyxFQUFFLEVBQUU7WUFDYixJQUFJLEVBQUUsRUFBRTtZQUNSLElBQUksRUFBRSxFQUFFO1lBQ1IsV0FBVyxFQUFFLEVBQUU7WUFDZixPQUFPLEVBQUUsSUFBSTtZQUNiLE9BQU8sRUFBRSxTQUFnQjtZQUN6QixPQUFPLEVBQUUsU0FBZ0I7WUFDekIsWUFBWSxFQUFFLEVBQUU7U0FDbkIsRUFDRCxJQUFJLENBQUMsVUFBVSxFQUNmLElBQUksQ0FBQyxZQUFZLEVBQ2pCLGVBQWUsRUFDZixlQUFlLENBQ1UsQ0FBQztRQUM5QixJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxTQUFTLENBQzFELElBQUksQ0FBQyxFQUFFO1lBQ0gsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsOEJBQThCLENBQUMsRUFBRTtnQkFDaEUsTUFBTSxFQUFFLGVBQWU7YUFDMUIsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUNqQyxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ25DLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUMzRixDQUFDLEVBQ0QsR0FBRyxDQUFDLEVBQUU7WUFDRixJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyw0QkFBNEIsQ0FBQyxFQUFFO2dCQUM1RCxNQUFNLEVBQUUsZUFBZTthQUMxQixDQUFDLENBQUM7UUFDUCxDQUFDLENBQ0osQ0FBQztJQUNOLENBQUM7SUFFRCxJQUFJO1FBQ0EsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQztRQUM3QyxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDO1FBQzdDLElBQUksQ0FBQyxlQUFlLEVBQUU7WUFDbEIsT0FBTztTQUNWO1FBQ0QsYUFBYSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQzthQUMxQyxJQUFJLENBQ0QsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUNQLFFBQVEsQ0FBQyxDQUFDLENBQUMsYUFBYSxFQUFFLFlBQVksQ0FBQyxFQUFFLEVBQUU7WUFDdkMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUN0QyxhQUFhLEVBQ2IsSUFBSSxDQUFDLFVBQVUsRUFDZixZQUFZLEVBQ1osZUFBZSxFQUNmLGVBQWUsQ0FDVSxDQUFDO1lBQzlCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEUsQ0FBQyxDQUFDLENBQ0w7YUFDQSxTQUFTLENBQ04sSUFBSSxDQUFDLEVBQUU7WUFDSCxJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyw4QkFBOEIsQ0FBQyxFQUFFO2dCQUNoRSxNQUFNLEVBQUUsZUFBZTthQUMxQixDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ2pDLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDdkMsQ0FBQyxFQUNELEdBQUcsQ0FBQyxFQUFFO1lBQ0YsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsNEJBQTRCLENBQUMsRUFBRTtnQkFDNUQsTUFBTSxFQUFFLGVBQWU7YUFDMUIsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUNKLENBQUM7SUFDVixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssdUJBQXVCLENBQzNCLGFBQW9DLEVBQ3BDLFNBQTJCLEVBQzNCLFlBQTBCLEVBQzFCLGVBQXNDLEVBQ3RDLGVBQThDO1FBRTlDLE1BQU0sS0FBSyxHQUFHLHlCQUF5QixDQUFDO1lBQ3BDLFlBQVksRUFBRSxhQUFhO1lBQzNCLGFBQWEsRUFBRSxTQUFTLENBQUMsS0FBSztZQUM5QixpQkFBaUIsRUFBRSxJQUFJLENBQUMsWUFBWTtZQUNwQyxZQUFZO1lBQ1osa0JBQWtCLEVBQUU7Z0JBQ2hCLFlBQVk7Z0JBQ1osSUFBSSxFQUFFLGFBQWEsQ0FBQyxJQUFJLElBQUksRUFBRTtnQkFDOUIsV0FBVyxFQUFFLGFBQWEsQ0FBQyxXQUFXLElBQUksRUFBRTthQUMvQztTQUNKLENBQUMsQ0FBQztRQUNILE9BQU87WUFDSCxHQUFHLEtBQUs7WUFDUixPQUFPLEVBQUUsZUFBZTtnQkFDcEIsQ0FBQyxDQUFDLDRCQUE0QixDQUFDLGVBQWUsRUFBRSxTQUFTLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQztnQkFDeEUsQ0FBQyxDQUFDLElBQUk7WUFDVixPQUFPLEVBQUUsNEJBQTRCLENBQUMsZUFBZSxFQUFFLFNBQVMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDO1NBQ2xGLENBQUM7SUFDTixDQUFDO0lBRVMsYUFBYSxDQUNuQixhQUF3RSxFQUN4RSxZQUEwQjtRQUUxQixNQUFNLGtCQUFrQixHQUFHLGVBQWUsQ0FBQyxhQUFhLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDeEUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUM7WUFDdkIsSUFBSSxFQUFFLGtCQUFrQixFQUFFLElBQUk7WUFDOUIsSUFBSSxFQUFFLGFBQWEsQ0FBQyxJQUFJO1lBQ3hCLFdBQVcsRUFBRSxrQkFBa0IsRUFBRSxXQUFXO1lBQzVDLE9BQU8sRUFBRSxhQUFhLENBQUMsT0FBTztZQUM5QixPQUFPLEVBQUUsYUFBYSxDQUFDLE9BQU8sSUFBSyxFQUFVO1lBQzdDLE9BQU8sRUFBRSxhQUFhLENBQUMsT0FBTyxJQUFLLEVBQVU7U0FDaEQsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUU7WUFDdkIsSUFBSSxDQUFDLGVBQWUsR0FBRyxhQUFhLENBQUMsT0FBTyxJQUFJO2dCQUM1QyxJQUFJLEVBQUUsYUFBYSxDQUFDLE9BQU8sQ0FBQyxJQUFJO2dCQUNoQyxJQUFJLEVBQUUsYUFBYSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEtBQUssRUFBRSxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2FBQzNGLENBQUM7U0FDTDtRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxlQUFlLEdBQUcsYUFBYSxDQUFDLE9BQU8sSUFBSTtnQkFDNUMsSUFBSSxFQUFFLGFBQWEsQ0FBQyxPQUFPLENBQUMsSUFBSTtnQkFDaEMsSUFBSSxFQUFFLGFBQWEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxLQUFLLEVBQUUsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQzthQUMzRixDQUFDO1NBQ0w7UUFDRCxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFO1lBQzFCLElBQUksQ0FBQyx3QkFBd0IsQ0FDekIsSUFBSSxDQUFDLFlBQVksRUFDakIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLEVBQ25DLGFBQWEsRUFDYixrQkFBa0IsQ0FDckIsQ0FBQztTQUNMO0lBQ0wsQ0FBQzs4R0ExT1EsNEJBQTRCO2tHQUE1Qiw0QkFBNEIsd0ZDNUN6QyxpeFBBcUtBOzsyRkR6SGEsNEJBQTRCO2tCQU54QyxTQUFTOytCQUNJLDJCQUEyQixtQkFHcEIsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIFVudHlwZWRGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBtYXJrZXIgYXMgXyB9IGZyb20gJ0BiaWVzYmplcmcvbmd4LXRyYW5zbGF0ZS1leHRyYWN0LW1hcmtlcic7XG5pbXBvcnQge1xuICAgIGNvbmZpZ3VyYWJsZURlZmluaXRpb25Ub0luc3RhbmNlLFxuICAgIENvbmZpZ3VyYWJsZU9wZXJhdGlvbixcbiAgICBDb25maWd1cmFibGVPcGVyYXRpb25EZWZpbml0aW9uLFxuICAgIENyZWF0ZVBheW1lbnRNZXRob2RJbnB1dCxcbiAgICBjcmVhdGVVcGRhdGVkVHJhbnNsYXRhYmxlLFxuICAgIERhdGFTZXJ2aWNlLFxuICAgIGZpbmRUcmFuc2xhdGlvbixcbiAgICBnZXRDb25maWdBcmdWYWx1ZSxcbiAgICBnZXRDdXN0b21GaWVsZHNEZWZhdWx0cyxcbiAgICBHZXRQYXltZW50TWV0aG9kRGV0YWlsRG9jdW1lbnQsXG4gICAgR2V0UGF5bWVudE1ldGhvZERldGFpbFF1ZXJ5LFxuICAgIExhbmd1YWdlQ29kZSxcbiAgICBOb3RpZmljYXRpb25TZXJ2aWNlLFxuICAgIFBBWU1FTlRfTUVUSE9EX0ZSQUdNRU5ULFxuICAgIFBheW1lbnRNZXRob2RGcmFnbWVudCxcbiAgICBQZXJtaXNzaW9uLFxuICAgIHRvQ29uZmlndXJhYmxlT3BlcmF0aW9uSW5wdXQsXG4gICAgVHlwZWRCYXNlRGV0YWlsQ29tcG9uZW50LFxuICAgIFVwZGF0ZVBheW1lbnRNZXRob2RJbnB1dCxcbn0gZnJvbSAnQHZlbmR1cmUvYWRtaW4tdWkvY29yZSc7XG5pbXBvcnQgeyBub3JtYWxpemVTdHJpbmcgfSBmcm9tICdAdmVuZHVyZS9jb21tb24vbGliL25vcm1hbGl6ZS1zdHJpbmcnO1xuaW1wb3J0IHsgZ3FsIH0gZnJvbSAnYXBvbGxvLWFuZ3VsYXInO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWVyZ2VNYXAsIHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmV4cG9ydCBjb25zdCBHRVRfUEFZTUVOVF9NRVRIT0RfREVUQUlMID0gZ3FsYFxuICAgIHF1ZXJ5IEdldFBheW1lbnRNZXRob2REZXRhaWwoJGlkOiBJRCEpIHtcbiAgICAgICAgcGF5bWVudE1ldGhvZChpZDogJGlkKSB7XG4gICAgICAgICAgICAuLi5QYXltZW50TWV0aG9kXG4gICAgICAgIH1cbiAgICB9XG4gICAgJHtQQVlNRU5UX01FVEhPRF9GUkFHTUVOVH1cbmA7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndmRyLXBheW1lbnQtbWV0aG9kLWRldGFpbCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3BheW1lbnQtbWV0aG9kLWRldGFpbC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vcGF5bWVudC1tZXRob2QtZGV0YWlsLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFBheW1lbnRNZXRob2REZXRhaWxDb21wb25lbnRcbiAgICBleHRlbmRzIFR5cGVkQmFzZURldGFpbENvbXBvbmVudDx0eXBlb2YgR2V0UGF5bWVudE1ldGhvZERldGFpbERvY3VtZW50LCAncGF5bWVudE1ldGhvZCc+XG4gICAgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveVxue1xuICAgIGN1c3RvbUZpZWxkcyA9IHRoaXMuZ2V0Q3VzdG9tRmllbGRDb25maWcoJ1BheW1lbnRNZXRob2QnKTtcbiAgICBkZXRhaWxGb3JtID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XG4gICAgICAgIGNvZGU6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgIG5hbWU6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnJyxcbiAgICAgICAgZW5hYmxlZDogW3RydWUsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICBjaGVja2VyOiB7fSBhcyBOb25OdWxsYWJsZTxHZXRQYXltZW50TWV0aG9kRGV0YWlsUXVlcnlbJ3BheW1lbnRNZXRob2QnXT5bJ2NoZWNrZXInXSxcbiAgICAgICAgaGFuZGxlcjoge30gYXMgTm9uTnVsbGFibGU8R2V0UGF5bWVudE1ldGhvZERldGFpbFF1ZXJ5WydwYXltZW50TWV0aG9kJ10+WydoYW5kbGVyJ10sXG4gICAgICAgIGN1c3RvbUZpZWxkczogdGhpcy5mb3JtQnVpbGRlci5ncm91cChnZXRDdXN0b21GaWVsZHNEZWZhdWx0cyh0aGlzLmN1c3RvbUZpZWxkcykpLFxuICAgIH0pO1xuICAgIGNoZWNrZXJzOiBDb25maWd1cmFibGVPcGVyYXRpb25EZWZpbml0aW9uW10gPSBbXTtcbiAgICBoYW5kbGVyczogQ29uZmlndXJhYmxlT3BlcmF0aW9uRGVmaW5pdGlvbltdID0gW107XG4gICAgc2VsZWN0ZWRDaGVja2VyPzogQ29uZmlndXJhYmxlT3BlcmF0aW9uIHwgbnVsbDtcbiAgICBzZWxlY3RlZENoZWNrZXJEZWZpbml0aW9uPzogQ29uZmlndXJhYmxlT3BlcmF0aW9uRGVmaW5pdGlvbjtcbiAgICBzZWxlY3RlZEhhbmRsZXI/OiBDb25maWd1cmFibGVPcGVyYXRpb24gfCBudWxsO1xuICAgIHNlbGVjdGVkSGFuZGxlckRlZmluaXRpb24/OiBDb25maWd1cmFibGVPcGVyYXRpb25EZWZpbml0aW9uO1xuICAgIHJlYWRvbmx5IHVwZGF0ZVBlcm1pc3Npb24gPSBbUGVybWlzc2lvbi5VcGRhdGVTZXR0aW5ncywgUGVybWlzc2lvbi5VcGRhdGVQYXltZW50TWV0aG9kXTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHJvdGVjdGVkIGRhdGFTZXJ2aWNlOiBEYXRhU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIsXG4gICAgICAgIHByaXZhdGUgbm90aWZpY2F0aW9uU2VydmljZTogTm90aWZpY2F0aW9uU2VydmljZSxcbiAgICApIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5pbml0KCk7XG4gICAgICAgIHRoaXMuZGF0YVNlcnZpY2Uuc2V0dGluZ3MuZ2V0UGF5bWVudE1ldGhvZE9wZXJhdGlvbnMoKS5zaW5nbGUkLnN1YnNjcmliZShkYXRhID0+IHtcbiAgICAgICAgICAgIHRoaXMuY2hlY2tlcnMgPSBkYXRhLnBheW1lbnRNZXRob2RFbGlnaWJpbGl0eUNoZWNrZXJzO1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVycyA9IGRhdGEucGF5bWVudE1ldGhvZEhhbmRsZXJzO1xuICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDaGVja2VyRGVmaW5pdGlvbiA9IGRhdGEucGF5bWVudE1ldGhvZEVsaWdpYmlsaXR5Q2hlY2tlcnMuZmluZChcbiAgICAgICAgICAgICAgICBjID0+IGMuY29kZSA9PT0gdGhpcy5lbnRpdHk/LmNoZWNrZXI/LmNvZGUsXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEhhbmRsZXJEZWZpbml0aW9uID0gZGF0YS5wYXltZW50TWV0aG9kSGFuZGxlcnMuZmluZChcbiAgICAgICAgICAgICAgICBjID0+IGMuY29kZSA9PT0gdGhpcy5lbnRpdHk/LmhhbmRsZXI/LmNvZGUsXG4gICAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kZXN0cm95KCk7XG4gICAgfVxuXG4gICAgdXBkYXRlQ29kZShjdXJyZW50Q29kZTogc3RyaW5nIHwgdW5kZWZpbmVkLCBuYW1lVmFsdWU6IHN0cmluZykge1xuICAgICAgICBpZiAoIWN1cnJlbnRDb2RlKSB7XG4gICAgICAgICAgICBjb25zdCBjb2RlQ29udHJvbCA9IHRoaXMuZGV0YWlsRm9ybS5nZXQoJ2NvZGUnKTtcbiAgICAgICAgICAgIGlmIChjb2RlQ29udHJvbCAmJiBjb2RlQ29udHJvbC5wcmlzdGluZSkge1xuICAgICAgICAgICAgICAgIGNvZGVDb250cm9sLnNldFZhbHVlKG5vcm1hbGl6ZVN0cmluZyhuYW1lVmFsdWUsICctJykpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2VsZWN0Q2hlY2tlcihjaGVja2VyOiBDb25maWd1cmFibGVPcGVyYXRpb25EZWZpbml0aW9uKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDaGVja2VyRGVmaW5pdGlvbiA9IGNoZWNrZXI7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDaGVja2VyID0gY29uZmlndXJhYmxlRGVmaW5pdGlvblRvSW5zdGFuY2UoY2hlY2tlcik7XG4gICAgICAgIGNvbnN0IGZvcm1Db250cm9sID0gdGhpcy5kZXRhaWxGb3JtLmdldCgnY2hlY2tlcicpO1xuICAgICAgICBpZiAoZm9ybUNvbnRyb2wpIHtcbiAgICAgICAgICAgIGZvcm1Db250cm9sLmNsZWFyVmFsaWRhdG9ycygpO1xuICAgICAgICAgICAgZm9ybUNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7IG9ubHlTZWxmOiB0cnVlIH0pO1xuICAgICAgICAgICAgZm9ybUNvbnRyb2wucGF0Y2hWYWx1ZSh0aGlzLnNlbGVjdGVkQ2hlY2tlcik7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5kZXRhaWxGb3JtLm1hcmtBc0RpcnR5KCk7XG4gICAgfVxuXG4gICAgc2VsZWN0SGFuZGxlcihoYW5kbGVyOiBDb25maWd1cmFibGVPcGVyYXRpb25EZWZpbml0aW9uKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRIYW5kbGVyRGVmaW5pdGlvbiA9IGhhbmRsZXI7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRIYW5kbGVyID0gY29uZmlndXJhYmxlRGVmaW5pdGlvblRvSW5zdGFuY2UoaGFuZGxlcik7XG4gICAgICAgIGNvbnN0IGZvcm1Db250cm9sID0gdGhpcy5kZXRhaWxGb3JtLmdldCgnaGFuZGxlcicpO1xuICAgICAgICBpZiAoZm9ybUNvbnRyb2wpIHtcbiAgICAgICAgICAgIGZvcm1Db250cm9sLmNsZWFyVmFsaWRhdG9ycygpO1xuICAgICAgICAgICAgZm9ybUNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7IG9ubHlTZWxmOiB0cnVlIH0pO1xuICAgICAgICAgICAgZm9ybUNvbnRyb2wucGF0Y2hWYWx1ZSh0aGlzLnNlbGVjdGVkSGFuZGxlcik7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5kZXRhaWxGb3JtLm1hcmtBc0RpcnR5KCk7XG4gICAgfVxuXG4gICAgcmVtb3ZlQ2hlY2tlcigpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZENoZWNrZXIgPSBudWxsO1xuICAgICAgICB0aGlzLmRldGFpbEZvcm0ubWFya0FzRGlydHkoKTtcbiAgICB9XG5cbiAgICByZW1vdmVIYW5kbGVyKCkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkSGFuZGxlciA9IG51bGw7XG4gICAgICAgIHRoaXMuZGV0YWlsRm9ybS5tYXJrQXNEaXJ0eSgpO1xuICAgIH1cblxuICAgIGNyZWF0ZSgpIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRDaGVja2VyID0gdGhpcy5zZWxlY3RlZENoZWNrZXI7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkSGFuZGxlciA9IHRoaXMuc2VsZWN0ZWRIYW5kbGVyO1xuICAgICAgICBpZiAoIXNlbGVjdGVkSGFuZGxlcikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGlucHV0ID0gdGhpcy5nZXRVcGRhdGVkUGF5bWVudE1ldGhvZChcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBpZDogJycsXG4gICAgICAgICAgICAgICAgY3JlYXRlZEF0OiAnJyxcbiAgICAgICAgICAgICAgICB1cGRhdGVkQXQ6ICcnLFxuICAgICAgICAgICAgICAgIG5hbWU6ICcnLFxuICAgICAgICAgICAgICAgIGNvZGU6ICcnLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnJyxcbiAgICAgICAgICAgICAgICBlbmFibGVkOiB0cnVlLFxuICAgICAgICAgICAgICAgIGNoZWNrZXI6IHVuZGVmaW5lZCBhcyBhbnksXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogdW5kZWZpbmVkIGFzIGFueSxcbiAgICAgICAgICAgICAgICB0cmFuc2xhdGlvbnM6IFtdLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRoaXMuZGV0YWlsRm9ybSxcbiAgICAgICAgICAgIHRoaXMubGFuZ3VhZ2VDb2RlLFxuICAgICAgICAgICAgc2VsZWN0ZWRIYW5kbGVyLFxuICAgICAgICAgICAgc2VsZWN0ZWRDaGVja2VyLFxuICAgICAgICApIGFzIENyZWF0ZVBheW1lbnRNZXRob2RJbnB1dDtcbiAgICAgICAgdGhpcy5kYXRhU2VydmljZS5zZXR0aW5ncy5jcmVhdGVQYXltZW50TWV0aG9kKGlucHV0KS5zdWJzY3JpYmUoXG4gICAgICAgICAgICBkYXRhID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2Uuc3VjY2VzcyhfKCdjb21tb24ubm90aWZ5LWNyZWF0ZS1zdWNjZXNzJyksIHtcbiAgICAgICAgICAgICAgICAgICAgZW50aXR5OiAnUGF5bWVudE1ldGhvZCcsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgdGhpcy5kZXRhaWxGb3JtLm1hcmtBc1ByaXN0aW5lKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy4uLycsIGRhdGEuY3JlYXRlUGF5bWVudE1ldGhvZC5pZF0sIHsgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlcnIgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5lcnJvcihfKCdjb21tb24ubm90aWZ5LWNyZWF0ZS1lcnJvcicpLCB7XG4gICAgICAgICAgICAgICAgICAgIGVudGl0eTogJ1BheW1lbnRNZXRob2QnLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBzYXZlKCkge1xuICAgICAgICBjb25zdCBzZWxlY3RlZENoZWNrZXIgPSB0aGlzLnNlbGVjdGVkQ2hlY2tlcjtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRIYW5kbGVyID0gdGhpcy5zZWxlY3RlZEhhbmRsZXI7XG4gICAgICAgIGlmICghc2VsZWN0ZWRIYW5kbGVyKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29tYmluZUxhdGVzdCh0aGlzLmVudGl0eSQsIHRoaXMubGFuZ3VhZ2VDb2RlJClcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHRha2UoMSksXG4gICAgICAgICAgICAgICAgbWVyZ2VNYXAoKFtwYXltZW50TWV0aG9kLCBsYW5ndWFnZUNvZGVdKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGlucHV0ID0gdGhpcy5nZXRVcGRhdGVkUGF5bWVudE1ldGhvZChcbiAgICAgICAgICAgICAgICAgICAgICAgIHBheW1lbnRNZXRob2QsXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRldGFpbEZvcm0sXG4gICAgICAgICAgICAgICAgICAgICAgICBsYW5ndWFnZUNvZGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZEhhbmRsZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZENoZWNrZXIsXG4gICAgICAgICAgICAgICAgICAgICkgYXMgVXBkYXRlUGF5bWVudE1ldGhvZElucHV0O1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kYXRhU2VydmljZS5zZXR0aW5ncy51cGRhdGVQYXltZW50TWV0aG9kKGlucHV0KTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgICAgICAgICAgZGF0YSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5zdWNjZXNzKF8oJ2NvbW1vbi5ub3RpZnktdXBkYXRlLXN1Y2Nlc3MnKSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgZW50aXR5OiAnUGF5bWVudE1ldGhvZCcsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRldGFpbEZvcm0ubWFya0FzUHJpc3RpbmUoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGVyciA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5lcnJvcihfKCdjb21tb24ubm90aWZ5LXVwZGF0ZS1lcnJvcicpLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbnRpdHk6ICdQYXltZW50TWV0aG9kJyxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2l2ZW4gYSBQYXltZW50TWV0aG9kIGFuZCB0aGUgdmFsdWUgb2YgdGhlIGRldGFpbEZvcm0sIHRoaXMgbWV0aG9kIGNyZWF0ZXMgYW4gdXBkYXRlZCBjb3B5IG9mIGl0IHdoaWNoXG4gICAgICogY2FuIHRoZW4gYmUgcGVyc2lzdGVkIHRvIHRoZSBBUEkuXG4gICAgICovXG4gICAgcHJpdmF0ZSBnZXRVcGRhdGVkUGF5bWVudE1ldGhvZChcbiAgICAgICAgcGF5bWVudE1ldGhvZDogUGF5bWVudE1ldGhvZEZyYWdtZW50LFxuICAgICAgICBmb3JtR3JvdXA6IFVudHlwZWRGb3JtR3JvdXAsXG4gICAgICAgIGxhbmd1YWdlQ29kZTogTGFuZ3VhZ2VDb2RlLFxuICAgICAgICBzZWxlY3RlZEhhbmRsZXI6IENvbmZpZ3VyYWJsZU9wZXJhdGlvbixcbiAgICAgICAgc2VsZWN0ZWRDaGVja2VyPzogQ29uZmlndXJhYmxlT3BlcmF0aW9uIHwgbnVsbCxcbiAgICApOiBVcGRhdGVQYXltZW50TWV0aG9kSW5wdXQgfCBDcmVhdGVQYXltZW50TWV0aG9kSW5wdXQge1xuICAgICAgICBjb25zdCBpbnB1dCA9IGNyZWF0ZVVwZGF0ZWRUcmFuc2xhdGFibGUoe1xuICAgICAgICAgICAgdHJhbnNsYXRhYmxlOiBwYXltZW50TWV0aG9kLFxuICAgICAgICAgICAgdXBkYXRlZEZpZWxkczogZm9ybUdyb3VwLnZhbHVlLFxuICAgICAgICAgICAgY3VzdG9tRmllbGRDb25maWc6IHRoaXMuY3VzdG9tRmllbGRzLFxuICAgICAgICAgICAgbGFuZ3VhZ2VDb2RlLFxuICAgICAgICAgICAgZGVmYXVsdFRyYW5zbGF0aW9uOiB7XG4gICAgICAgICAgICAgICAgbGFuZ3VhZ2VDb2RlLFxuICAgICAgICAgICAgICAgIG5hbWU6IHBheW1lbnRNZXRob2QubmFtZSB8fCAnJyxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogcGF5bWVudE1ldGhvZC5kZXNjcmlwdGlvbiB8fCAnJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4uaW5wdXQsXG4gICAgICAgICAgICBjaGVja2VyOiBzZWxlY3RlZENoZWNrZXJcbiAgICAgICAgICAgICAgICA/IHRvQ29uZmlndXJhYmxlT3BlcmF0aW9uSW5wdXQoc2VsZWN0ZWRDaGVja2VyLCBmb3JtR3JvdXAudmFsdWUuY2hlY2tlcilcbiAgICAgICAgICAgICAgICA6IG51bGwsXG4gICAgICAgICAgICBoYW5kbGVyOiB0b0NvbmZpZ3VyYWJsZU9wZXJhdGlvbklucHV0KHNlbGVjdGVkSGFuZGxlciwgZm9ybUdyb3VwLnZhbHVlLmhhbmRsZXIpLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBzZXRGb3JtVmFsdWVzKFxuICAgICAgICBwYXltZW50TWV0aG9kOiBOb25OdWxsYWJsZTxHZXRQYXltZW50TWV0aG9kRGV0YWlsUXVlcnlbJ3BheW1lbnRNZXRob2QnXT4sXG4gICAgICAgIGxhbmd1YWdlQ29kZTogTGFuZ3VhZ2VDb2RlLFxuICAgICk6IHZvaWQge1xuICAgICAgICBjb25zdCBjdXJyZW50VHJhbnNsYXRpb24gPSBmaW5kVHJhbnNsYXRpb24ocGF5bWVudE1ldGhvZCwgbGFuZ3VhZ2VDb2RlKTtcbiAgICAgICAgdGhpcy5kZXRhaWxGb3JtLnBhdGNoVmFsdWUoe1xuICAgICAgICAgICAgbmFtZTogY3VycmVudFRyYW5zbGF0aW9uPy5uYW1lLFxuICAgICAgICAgICAgY29kZTogcGF5bWVudE1ldGhvZC5jb2RlLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IGN1cnJlbnRUcmFuc2xhdGlvbj8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBlbmFibGVkOiBwYXltZW50TWV0aG9kLmVuYWJsZWQsXG4gICAgICAgICAgICBjaGVja2VyOiBwYXltZW50TWV0aG9kLmNoZWNrZXIgfHwgKHt9IGFzIGFueSksXG4gICAgICAgICAgICBoYW5kbGVyOiBwYXltZW50TWV0aG9kLmhhbmRsZXIgfHwgKHt9IGFzIGFueSksXG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoIXRoaXMuc2VsZWN0ZWRDaGVja2VyKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkQ2hlY2tlciA9IHBheW1lbnRNZXRob2QuY2hlY2tlciAmJiB7XG4gICAgICAgICAgICAgICAgY29kZTogcGF5bWVudE1ldGhvZC5jaGVja2VyLmNvZGUsXG4gICAgICAgICAgICAgICAgYXJnczogcGF5bWVudE1ldGhvZC5jaGVja2VyLmFyZ3MubWFwKGEgPT4gKHsgLi4uYSwgdmFsdWU6IGdldENvbmZpZ0FyZ1ZhbHVlKGEudmFsdWUpIH0pKSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLnNlbGVjdGVkSGFuZGxlcikge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEhhbmRsZXIgPSBwYXltZW50TWV0aG9kLmhhbmRsZXIgJiYge1xuICAgICAgICAgICAgICAgIGNvZGU6IHBheW1lbnRNZXRob2QuaGFuZGxlci5jb2RlLFxuICAgICAgICAgICAgICAgIGFyZ3M6IHBheW1lbnRNZXRob2QuaGFuZGxlci5hcmdzLm1hcChhID0+ICh7IC4uLmEsIHZhbHVlOiBnZXRDb25maWdBcmdWYWx1ZShhLnZhbHVlKSB9KSksXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmN1c3RvbUZpZWxkcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0Q3VzdG9tRmllbGRGb3JtVmFsdWVzKFxuICAgICAgICAgICAgICAgIHRoaXMuY3VzdG9tRmllbGRzLFxuICAgICAgICAgICAgICAgIHRoaXMuZGV0YWlsRm9ybS5nZXQoJ2N1c3RvbUZpZWxkcycpLFxuICAgICAgICAgICAgICAgIHBheW1lbnRNZXRob2QsXG4gICAgICAgICAgICAgICAgY3VycmVudFRyYW5zbGF0aW9uLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjx2ZHItcGFnZS1ibG9ja1xyXG4gICAgPjx2ZHItYWN0aW9uLWJhcj5cclxuICAgICAgICA8dmRyLWFiLWxlZnQ+XHJcbiAgICAgICAgICAgIDx2ZHItbGFuZ3VhZ2Utc2VsZWN0b3JcclxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc05ldyQgfCBhc3luY1wiXHJcbiAgICAgICAgICAgICAgICBbYXZhaWxhYmxlTGFuZ3VhZ2VDb2Rlc109XCJhdmFpbGFibGVMYW5ndWFnZXMkIHwgYXN5bmNcIlxyXG4gICAgICAgICAgICAgICAgW2N1cnJlbnRMYW5ndWFnZUNvZGVdPVwibGFuZ3VhZ2VDb2RlJCB8IGFzeW5jXCJcclxuICAgICAgICAgICAgICAgIChsYW5ndWFnZUNvZGVDaGFuZ2UpPVwic2V0TGFuZ3VhZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgID48L3Zkci1sYW5ndWFnZS1zZWxlY3Rvcj5cclxuICAgICAgICA8L3Zkci1hYi1sZWZ0PlxyXG5cclxuICAgICAgICA8dmRyLWFiLXJpZ2h0PlxyXG4gICAgICAgICAgICA8dmRyLWFjdGlvbi1iYXItaXRlbXMgbG9jYXRpb25JZD1cInBheW1lbnQtbWV0aG9kLWRldGFpbFwiPjwvdmRyLWFjdGlvbi1iYXItaXRlbXM+XHJcbiAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCJcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiaXNOZXckIHwgYXN5bmM7IGVsc2UgdXBkYXRlQnV0dG9uXCJcclxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkZXRhaWxGb3JtLnByaXN0aW5lIHx8IGRldGFpbEZvcm0uaW52YWxpZCB8fCAhc2VsZWN0ZWRIYW5kbGVyXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJjcmVhdGUoKVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIHt7ICdjb21tb24uY3JlYXRlJyB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICN1cGRhdGVCdXR0b24+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgKnZkcklmUGVybWlzc2lvbnM9XCJ1cGRhdGVQZXJtaXNzaW9uXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNhdmUoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRldGFpbEZvcm0ucHJpc3RpbmUgfHwgZGV0YWlsRm9ybS5pbnZhbGlkIHx8ICFzZWxlY3RlZEhhbmRsZXJcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7ICdjb21tb24udXBkYXRlJyB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPC92ZHItYWItcmlnaHQ+XHJcbiAgICA8L3Zkci1hY3Rpb24tYmFyPlxyXG48L3Zkci1wYWdlLWJsb2NrPlxyXG5cclxuPGZvcm0gY2xhc3M9XCJmb3JtXCIgW2Zvcm1Hcm91cF09XCJkZXRhaWxGb3JtXCI+XHJcbiAgICA8dmRyLXBhZ2UtZGV0YWlsLWxheW91dD5cclxuICAgICAgICA8dmRyLXBhZ2UtZGV0YWlsLXNpZGViYXI+XHJcbiAgICAgICAgICAgIDx2ZHItY2FyZD5cclxuICAgICAgICAgICAgICAgIDx2ZHItZm9ybS1maWVsZCBbbGFiZWxdPVwiJ2NvbW1vbi5lbmFibGVkJyB8IHRyYW5zbGF0ZVwiIGZvcj1cImRlc2NyaXB0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGNsci10b2dnbGUtd3JhcHBlcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xyVG9nZ2xlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImVuYWJsZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZkckRpc2FibGVkXT1cIiEodXBkYXRlUGVybWlzc2lvbiB8IGhhc1Blcm1pc3Npb24pXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImVuYWJsZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvY2xyLXRvZ2dsZS13cmFwcGVyPlxyXG4gICAgICAgICAgICAgICAgPC92ZHItZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgPC92ZHItY2FyZD5cclxuICAgICAgICAgICAgPHZkci1jYXJkICpuZ0lmPVwiZW50aXR5JCB8IGFzeW5jIGFzIGVudGl0eVwiPlxyXG4gICAgICAgICAgICAgICAgPHZkci1wYWdlLWVudGl0eS1pbmZvIFtlbnRpdHldPVwiZW50aXR5XCIgLz5cclxuICAgICAgICAgICAgPC92ZHItY2FyZD5cclxuICAgICAgICA8L3Zkci1wYWdlLWRldGFpbC1zaWRlYmFyPlxyXG4gICAgICAgIDx2ZHItcGFnZS1ibG9jaz5cclxuICAgICAgICAgICAgPHZkci1jYXJkPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JpZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx2ZHItZm9ybS1maWVsZCBbbGFiZWxdPVwiJ2NvbW1vbi5uYW1lJyB8IHRyYW5zbGF0ZVwiIGZvcj1cIm5hbWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cIm5hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwiISh1cGRhdGVQZXJtaXNzaW9uIHwgaGFzUGVybWlzc2lvbilcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlucHV0KT1cInVwZGF0ZUNvZGUoZW50aXR5Py5jb2RlLCAkZXZlbnQudGFyZ2V0LnZhbHVlKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC92ZHItZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICA8dmRyLWZvcm0tZmllbGRcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidjb21tb24uY29kZScgfCB0cmFuc2xhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3I9XCJjb2RlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRPbmx5VG9nZ2xlXT1cInVwZGF0ZVBlcm1pc3Npb24gfCBoYXNQZXJtaXNzaW9uXCJcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJjb2RlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImNvZGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cIiEodXBkYXRlUGVybWlzc2lvbiB8IGhhc1Blcm1pc3Npb24pXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICA8L3Zkci1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgIDx2ZHItcmljaC10ZXh0LWVkaXRvclxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tZ3JpZC1zcGFuXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZGVzY3JpcHRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwiISh1cGRhdGVQZXJtaXNzaW9uIHwgaGFzUGVybWlzc2lvbilcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ2NvbW1vbi5kZXNjcmlwdGlvbicgfCB0cmFuc2xhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgID48L3Zkci1yaWNoLXRleHQtZWRpdG9yPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvdmRyLWNhcmQ+XHJcblxyXG4gICAgICAgICAgICA8dmRyLWNhcmRcclxuICAgICAgICAgICAgICAgIGZvcm1Hcm91cE5hbWU9XCJjdXN0b21GaWVsZHNcIlxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJjdXN0b21GaWVsZHMubGVuZ3RoXCJcclxuICAgICAgICAgICAgICAgIFt0aXRsZV09XCInY29tbW9uLmN1c3RvbS1maWVsZHMnIHwgdHJhbnNsYXRlXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPHZkci10YWJiZWQtY3VzdG9tLWZpZWxkc1xyXG4gICAgICAgICAgICAgICAgICAgIGVudGl0eU5hbWU9XCJQYXltZW50TWV0aG9kXCJcclxuICAgICAgICAgICAgICAgICAgICBbY3VzdG9tRmllbGRzXT1cImN1c3RvbUZpZWxkc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW2N1c3RvbUZpZWxkc0Zvcm1Hcm91cF09XCJkZXRhaWxGb3JtLmdldCgnY3VzdG9tRmllbGRzJylcIlxyXG4gICAgICAgICAgICAgICAgPjwvdmRyLXRhYmJlZC1jdXN0b20tZmllbGRzPlxyXG4gICAgICAgICAgICA8L3Zkci1jYXJkPlxyXG5cclxuICAgICAgICAgICAgPHZkci1jdXN0b20tZGV0YWlsLWNvbXBvbmVudC1ob3N0XHJcbiAgICAgICAgICAgICAgICBsb2NhdGlvbklkPVwicGF5bWVudC1tZXRob2QtZGV0YWlsXCJcclxuICAgICAgICAgICAgICAgIFtlbnRpdHkkXT1cImVudGl0eSRcIlxyXG4gICAgICAgICAgICAgICAgW2RldGFpbEZvcm1dPVwiZGV0YWlsRm9ybVwiXHJcbiAgICAgICAgICAgID48L3Zkci1jdXN0b20tZGV0YWlsLWNvbXBvbmVudC1ob3N0PlxyXG5cclxuICAgICAgICAgICAgPHZkci1jYXJkIFt0aXRsZV09XCInc2V0dGluZ3MucGF5bWVudC1lbGlnaWJpbGl0eS1jaGVja2VyJyB8IHRyYW5zbGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgPHZkci1jb25maWd1cmFibGUtaW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInNlbGVjdGVkQ2hlY2tlciAmJiBzZWxlY3RlZENoZWNrZXJEZWZpbml0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICBbb3BlcmF0aW9uXT1cInNlbGVjdGVkQ2hlY2tlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgW29wZXJhdGlvbkRlZmluaXRpb25dPVwic2VsZWN0ZWRDaGVja2VyRGVmaW5pdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cIiEodXBkYXRlUGVybWlzc2lvbiB8IGhhc1Blcm1pc3Npb24pXCJcclxuICAgICAgICAgICAgICAgICAgICAocmVtb3ZlKT1cInJlbW92ZUNoZWNrZXIoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiY2hlY2tlclwiXHJcbiAgICAgICAgICAgICAgICA+PC92ZHItY29uZmlndXJhYmxlLWlucHV0PlxyXG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFzZWxlY3RlZENoZWNrZXIgfHwgIXNlbGVjdGVkQ2hlY2tlckRlZmluaXRpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICA8dmRyLWRyb3Bkb3duPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lXCIgdmRyRHJvcGRvd25UcmlnZ2VyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsci1pY29uIHNoYXBlPVwicGx1c1wiPjwvY2xyLWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAnY29tbW9uLnNlbGVjdCcgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx2ZHItZHJvcGRvd24tbWVudSB2ZHJQb3NpdGlvbj1cImJvdHRvbS1sZWZ0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNoZWNrZXIgb2YgY2hlY2tlcnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZkckRyb3Bkb3duSXRlbVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RDaGVja2VyKGNoZWNrZXIpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBjaGVja2VyLmRlc2NyaXB0aW9uIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC92ZHItZHJvcGRvd24tbWVudT5cclxuICAgICAgICAgICAgICAgICAgICA8L3Zkci1kcm9wZG93bj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L3Zkci1jYXJkPlxyXG4gICAgICAgICAgICA8dmRyLWNhcmQgW3RpdGxlXT1cIidzZXR0aW5ncy5wYXltZW50LWhhbmRsZXInIHwgdHJhbnNsYXRlXCI+XHJcbiAgICAgICAgICAgICAgICA8dmRyLWNvbmZpZ3VyYWJsZS1pbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic2VsZWN0ZWRIYW5kbGVyICYmIHNlbGVjdGVkSGFuZGxlckRlZmluaXRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtvcGVyYXRpb25dPVwic2VsZWN0ZWRIYW5kbGVyXCJcclxuICAgICAgICAgICAgICAgICAgICBbb3BlcmF0aW9uRGVmaW5pdGlvbl09XCJzZWxlY3RlZEhhbmRsZXJEZWZpbml0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwiISh1cGRhdGVQZXJtaXNzaW9uIHwgaGFzUGVybWlzc2lvbilcIlxyXG4gICAgICAgICAgICAgICAgICAgIChyZW1vdmUpPVwicmVtb3ZlSGFuZGxlcigpXCJcclxuICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJoYW5kbGVyXCJcclxuICAgICAgICAgICAgICAgID48L3Zkci1jb25maWd1cmFibGUtaW5wdXQ+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIXNlbGVjdGVkSGFuZGxlciB8fCAhc2VsZWN0ZWRIYW5kbGVyRGVmaW5pdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx2ZHItZHJvcGRvd24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmVcIiB2ZHJEcm9wZG93blRyaWdnZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xyLWljb24gc2hhcGU9XCJwbHVzXCI+PC9jbHItaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdjb21tb24uc2VsZWN0JyB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHZkci1kcm9wZG93bi1tZW51IHZkclBvc2l0aW9uPVwiYm90dG9tLWxlZnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgaGFuZGxlciBvZiBoYW5kbGVyc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmRyRHJvcGRvd25JdGVtXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdEhhbmRsZXIoaGFuZGxlcilcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGhhbmRsZXIuZGVzY3JpcHRpb24gfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3Zkci1kcm9wZG93bi1tZW51PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdmRyLWRyb3Bkb3duPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvdmRyLWNhcmQ+XHJcbiAgICAgICAgPC92ZHItcGFnZS1ibG9jaz5cclxuICAgIDwvdmRyLXBhZ2UtZGV0YWlsLWxheW91dD5cclxuPC9mb3JtPlxyXG4iXX0=
206
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF5bWVudC1tZXRob2QtZGV0YWlsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc2V0dGluZ3Mvc3JjL2NvbXBvbmVudHMvcGF5bWVudC1tZXRob2QtZGV0YWlsL3BheW1lbnQtbWV0aG9kLWRldGFpbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NldHRpbmdzL3NyYy9jb21wb25lbnRzL3BheW1lbnQtbWV0aG9kLWRldGFpbC9wYXltZW50LW1ldGhvZC1kZXRhaWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFxQixTQUFTLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQ3pHLE9BQU8sRUFBaUMsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0UsT0FBTyxFQUFFLE1BQU0sSUFBSSxDQUFDLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUN0RSxPQUFPLEVBQ0gsZ0NBQWdDLEVBSWhDLHlCQUF5QixFQUV6QixlQUFlLEVBQ2YsaUJBQWlCLEVBQ2pCLHVCQUF1QixFQUt2Qix1QkFBdUIsRUFFdkIsVUFBVSxFQUNWLDRCQUE0QixFQUM1Qix3QkFBd0IsR0FFM0IsTUFBTSx3QkFBd0IsQ0FBQztBQUNoQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDdkUsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDckMsT0FBTyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7OztBQUVoRCxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxHQUFHLENBQUE7Ozs7OztNQU10Qyx1QkFBdUI7Q0FDNUIsQ0FBQztBQVFGLE1BQU0sT0FBTyw0QkFDVCxTQUFR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dUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgVW50eXBlZEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgbWFya2VyIGFzIF8gfSBmcm9tICdAYmllc2JqZXJnL25neC10cmFuc2xhdGUtZXh0cmFjdC1tYXJrZXInO1xyXG5pbXBvcnQge1xyXG4gICAgY29uZmlndXJhYmxlRGVmaW5pdGlvblRvSW5zdGFuY2UsXHJcbiAgICBDb25maWd1cmFibGVPcGVyYXRpb24sXHJcbiAgICBDb25maWd1cmFibGVPcGVyYXRpb25EZWZpbml0aW9uLFxyXG4gICAgQ3JlYXRlUGF5bWVudE1ldGhvZElucHV0LFxyXG4gICAgY3JlYXRlVXBkYXRlZFRyYW5zbGF0YWJsZSxcclxuICAgIERhdGFTZXJ2aWNlLFxyXG4gICAgZmluZFRyYW5zbGF0aW9uLFxyXG4gICAgZ2V0Q29uZmlnQXJnVmFsdWUsXHJcbiAgICBnZXRDdXN0b21GaWVsZHNEZWZhdWx0cyxcclxuICAgIEdldFBheW1lbnRNZXRob2REZXRhaWxEb2N1bWVudCxcclxuICAgIEdldFBheW1lbnRNZXRob2REZXRhaWxRdWVyeSxcclxuICAgIExhbmd1YWdlQ29kZSxcclxuICAgIE5vdGlmaWNhdGlvblNlcnZpY2UsXHJcbiAgICBQQVlNRU5UX01FVEhPRF9GUkFHTUVOVCxcclxuICAgIFBheW1lbnRNZXRob2RGcmFnbWVudCxcclxuICAgIFBlcm1pc3Npb24sXHJcbiAgICB0b0NvbmZpZ3VyYWJsZU9wZXJhdGlvbklucHV0LFxyXG4gICAgVHlwZWRCYXNlRGV0YWlsQ29tcG9uZW50LFxyXG4gICAgVXBkYXRlUGF5bWVudE1ldGhvZElucHV0LFxyXG59IGZyb20gJ0B2ZW5kdXJlL2FkbWluLXVpL2NvcmUnO1xyXG5pbXBvcnQgeyBub3JtYWxpemVTdHJpbmcgfSBmcm9tICdAdmVuZHVyZS9jb21tb24vbGliL25vcm1hbGl6ZS1zdHJpbmcnO1xyXG5pbXBvcnQgeyBncWwgfSBmcm9tICdhcG9sbG8tYW5ndWxhcic7XHJcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgbWVyZ2VNYXAsIHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5leHBvcnQgY29uc3QgR0VUX1BBWU1FTlRfTUVUSE9EX0RFVEFJTCA9IGdxbGBcclxuICAgIHF1ZXJ5IEdldFBheW1lbnRNZXRob2REZXRhaWwoJGlkOiBJRCEpIHtcclxuICAgICAgICBwYXltZW50TWV0aG9kKGlkOiAkaWQpIHtcclxuICAgICAgICAgICAgLi4uUGF5bWVudE1ldGhvZFxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgICR7UEFZTUVOVF9NRVRIT0RfRlJBR01FTlR9XHJcbmA7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAndmRyLXBheW1lbnQtbWV0aG9kLWRldGFpbCcsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vcGF5bWVudC1tZXRob2QtZGV0YWlsLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL3BheW1lbnQtbWV0aG9kLWRldGFpbC5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQYXltZW50TWV0aG9kRGV0YWlsQ29tcG9uZW50XHJcbiAgICBleHRlbmRzIFR5cGVkQmFzZURldGFpbENvbXBvbmVudDx0eXBlb2YgR2V0UGF5bWVudE1ldGhvZERldGFpbERvY3VtZW50LCAncGF5bWVudE1ldGhvZCc+XHJcbiAgICBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95XHJcbntcclxuICAgIGN1c3RvbUZpZWxkcyA9IHRoaXMuZ2V0Q3VzdG9tRmllbGRDb25maWcoJ1BheW1lbnRNZXRob2QnKTtcclxuICAgIGRldGFpbEZvcm0gPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcclxuICAgICAgICBjb2RlOiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICAgIG5hbWU6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICAgZGVzY3JpcHRpb246ICcnLFxyXG4gICAgICAgIGVuYWJsZWQ6IFt0cnVlLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgICBjaGVja2VyOiB7fSBhcyBOb25OdWxsYWJsZTxHZXRQYXltZW50TWV0aG9kRGV0YWlsUXVlcnlbJ3BheW1lbnRNZXRob2QnXT5bJ2NoZWNrZXInXSxcclxuICAgICAgICBoYW5kbGVyOiB7fSBhcyBOb25OdWxsYWJsZTxHZXRQYXltZW50TWV0aG9kRGV0YWlsUXVlcnlbJ3BheW1lbnRNZXRob2QnXT5bJ2hhbmRsZXInXSxcclxuICAgICAgICBjdXN0b21GaWVsZHM6IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoZ2V0Q3VzdG9tRmllbGRzRGVmYXVsdHModGhpcy5jdXN0b21GaWVsZHMpKSxcclxuICAgIH0pO1xyXG4gICAgY2hlY2tlcnM6IENvbmZpZ3VyYWJsZU9wZXJhdGlvbkRlZmluaXRpb25bXSA9IFtdO1xyXG4gICAgaGFuZGxlcnM6IENvbmZpZ3VyYWJsZU9wZXJhdGlvbkRlZmluaXRpb25bXSA9IFtdO1xyXG4gICAgc2VsZWN0ZWRDaGVja2VyPzogQ29uZmlndXJhYmxlT3BlcmF0aW9uIHwgbnVsbDtcclxuICAgIHNlbGVjdGVkQ2hlY2tlckRlZmluaXRpb24/OiBDb25maWd1cmFibGVPcGVyYXRpb25EZWZpbml0aW9uO1xyXG4gICAgc2VsZWN0ZWRIYW5kbGVyPzogQ29uZmlndXJhYmxlT3BlcmF0aW9uIHwgbnVsbDtcclxuICAgIHNlbGVjdGVkSGFuZGxlckRlZmluaXRpb24/OiBDb25maWd1cmFibGVPcGVyYXRpb25EZWZpbml0aW9uO1xyXG4gICAgcmVhZG9ubHkgdXBkYXRlUGVybWlzc2lvbiA9IFtQZXJtaXNzaW9uLlVwZGF0ZVNldHRpbmdzLCBQZXJtaXNzaW9uLlVwZGF0ZVBheW1lbnRNZXRob2RdO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgICAgIHByb3RlY3RlZCBkYXRhU2VydmljZTogRGF0YVNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIsXHJcbiAgICAgICAgcHJpdmF0ZSBub3RpZmljYXRpb25TZXJ2aWNlOiBOb3RpZmljYXRpb25TZXJ2aWNlLFxyXG4gICAgKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uSW5pdCgpIHtcclxuICAgICAgICB0aGlzLmluaXQoKTtcclxuICAgICAgICB0aGlzLmRhdGFTZXJ2aWNlLnNldHRpbmdzLmdldFBheW1lbnRNZXRob2RPcGVyYXRpb25zKCkuc2luZ2xlJC5zdWJzY3JpYmUoZGF0YSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuY2hlY2tlcnMgPSBkYXRhLnBheW1lbnRNZXRob2RFbGlnaWJpbGl0eUNoZWNrZXJzO1xyXG4gICAgICAgICAgICB0aGlzLmhhbmRsZXJzID0gZGF0YS5wYXltZW50TWV0aG9kSGFuZGxlcnM7XHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDaGVja2VyRGVmaW5pdGlvbiA9IGRhdGEucGF5bWVudE1ldGhvZEVsaWdpYmlsaXR5Q2hlY2tlcnMuZmluZChcclxuICAgICAgICAgICAgICAgIGMgPT4gYy5jb2RlID09PSB0aGlzLmVudGl0eT8uY2hlY2tlcj8uY29kZSxcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEhhbmRsZXJEZWZpbml0aW9uID0gZGF0YS5wYXltZW50TWV0aG9kSGFuZGxlcnMuZmluZChcclxuICAgICAgICAgICAgICAgIGMgPT4gYy5jb2RlID09PSB0aGlzLmVudGl0eT8uaGFuZGxlcj8uY29kZSxcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmRlc3Ryb3koKTtcclxuICAgIH1cclxuXHJcbiAgICB1cGRhdGVDb2RlKGN1cnJlbnRDb2RlOiBzdHJpbmcgfCB1bmRlZmluZWQsIG5hbWVWYWx1ZTogc3RyaW5nKSB7XHJcbiAgICAgICAgaWYgKCFjdXJyZW50Q29kZSkge1xyXG4gICAgICAgICAgICBjb25zdCBjb2RlQ29udHJvbCA9IHRoaXMuZGV0YWlsRm9ybS5nZXQoJ2NvZGUnKTtcclxuICAgICAgICAgICAgaWYgKGNvZGVDb250cm9sICYmIGNvZGVDb250cm9sLnByaXN0aW5lKSB7XHJcbiAgICAgICAgICAgICAgICBjb2RlQ29udHJvbC5zZXRWYWx1ZShub3JtYWxpemVTdHJpbmcobmFtZVZhbHVlLCAnLScpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBzZWxlY3RDaGVja2VyKGNoZWNrZXI6IENvbmZpZ3VyYWJsZU9wZXJhdGlvbkRlZmluaXRpb24pIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkQ2hlY2tlckRlZmluaXRpb24gPSBjaGVja2VyO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDaGVja2VyID0gY29uZmlndXJhYmxlRGVmaW5pdGlvblRvSW5zdGFuY2UoY2hlY2tlcik7XHJcbiAgICAgICAgY29uc3QgZm9ybUNvbnRyb2wgPSB0aGlzLmRldGFpbEZvcm0uZ2V0KCdjaGVja2VyJyk7XHJcbiAgICAgICAgaWYgKGZvcm1Db250cm9sKSB7XHJcbiAgICAgICAgICAgIGZvcm1Db250cm9sLmNsZWFyVmFsaWRhdG9ycygpO1xyXG4gICAgICAgICAgICBmb3JtQ29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHsgb25seVNlbGY6IHRydWUgfSk7XHJcbiAgICAgICAgICAgIGZvcm1Db250cm9sLnBhdGNoVmFsdWUodGhpcy5zZWxlY3RlZENoZWNrZXIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmRldGFpbEZvcm0ubWFya0FzRGlydHkoKTtcclxuICAgIH1cclxuXHJcbiAgICBzZWxlY3RIYW5kbGVyKGhhbmRsZXI6IENvbmZpZ3VyYWJsZU9wZXJhdGlvbkRlZmluaXRpb24pIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkSGFuZGxlckRlZmluaXRpb24gPSBoYW5kbGVyO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRIYW5kbGVyID0gY29uZmlndXJhYmxlRGVmaW5pdGlvblRvSW5zdGFuY2UoaGFuZGxlcik7XHJcbiAgICAgICAgY29uc3QgZm9ybUNvbnRyb2wgPSB0aGlzLmRldGFpbEZvcm0uZ2V0KCdoYW5kbGVyJyk7XHJcbiAgICAgICAgaWYgKGZvcm1Db250cm9sKSB7XHJcbiAgICAgICAgICAgIGZvcm1Db250cm9sLmNsZWFyVmFsaWRhdG9ycygpO1xyXG4gICAgICAgICAgICBmb3JtQ29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHsgb25seVNlbGY6IHRydWUgfSk7XHJcbiAgICAgICAgICAgIGZvcm1Db250cm9sLnBhdGNoVmFsdWUodGhpcy5zZWxlY3RlZEhhbmRsZXIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmRldGFpbEZvcm0ubWFya0FzRGlydHkoKTtcclxuICAgIH1cclxuXHJcbiAgICByZW1vdmVDaGVja2VyKCkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDaGVja2VyID0gbnVsbDtcclxuICAgICAgICB0aGlzLmRldGFpbEZvcm0ubWFya0FzRGlydHkoKTtcclxuICAgIH1cclxuXHJcbiAgICByZW1vdmVIYW5kbGVyKCkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRIYW5kbGVyID0gbnVsbDtcclxuICAgICAgICB0aGlzLmRldGFpbEZvcm0ubWFya0FzRGlydHkoKTtcclxuICAgIH1cclxuXHJcbiAgICBjcmVhdGUoKSB7XHJcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRDaGVja2VyID0gdGhpcy5zZWxlY3RlZENoZWNrZXI7XHJcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRIYW5kbGVyID0gdGhpcy5zZWxlY3RlZEhhbmRsZXI7XHJcbiAgICAgICAgaWYgKCFzZWxlY3RlZEhhbmRsZXIpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBpbnB1dCA9IHRoaXMuZ2V0VXBkYXRlZFBheW1lbnRNZXRob2QoXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIGlkOiAnJyxcclxuICAgICAgICAgICAgICAgIGNyZWF0ZWRBdDogJycsXHJcbiAgICAgICAgICAgICAgICB1cGRhdGVkQXQ6ICcnLFxyXG4gICAgICAgICAgICAgICAgbmFtZTogJycsXHJcbiAgICAgICAgICAgICAgICBjb2RlOiAnJyxcclxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnJyxcclxuICAgICAgICAgICAgICAgIGVuYWJsZWQ6IHRydWUsXHJcbiAgICAgICAgICAgICAgICBjaGVja2VyOiB1bmRlZmluZWQgYXMgYW55LFxyXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogdW5kZWZpbmVkIGFzIGFueSxcclxuICAgICAgICAgICAgICAgIHRyYW5zbGF0aW9uczogW10sXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHRoaXMuZGV0YWlsRm9ybSxcclxuICAgICAgICAgICAgdGhpcy5sYW5ndWFnZUNvZGUsXHJcbiAgICAgICAgICAgIHNlbGVjdGVkSGFuZGxlcixcclxuICAgICAgICAgICAgc2VsZWN0ZWRDaGVja2VyLFxyXG4gICAgICAgICkgYXMgQ3JlYXRlUGF5bWVudE1ldGhvZElucHV0O1xyXG4gICAgICAgIHRoaXMuZGF0YVNlcnZpY2Uuc2V0dGluZ3MuY3JlYXRlUGF5bWVudE1ldGhvZChpbnB1dCkuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgICBkYXRhID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5zdWNjZXNzKF8oJ2NvbW1vbi5ub3RpZnktY3JlYXRlLXN1Y2Nlc3MnKSwge1xyXG4gICAgICAgICAgICAgICAgICAgIGVudGl0eTogJ1BheW1lbnRNZXRob2QnLFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmRldGFpbEZvcm0ubWFya0FzUHJpc3RpbmUoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy4uLycsIGRhdGEuY3JlYXRlUGF5bWVudE1ldGhvZC5pZF0sIHsgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSB9KTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZXJyID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5lcnJvcihfKCdjb21tb24ubm90aWZ5LWNyZWF0ZS1lcnJvcicpLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgZW50aXR5OiAnUGF5bWVudE1ldGhvZCcsXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHNhdmUoKSB7XHJcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRDaGVja2VyID0gdGhpcy5zZWxlY3RlZENoZWNrZXI7XHJcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRIYW5kbGVyID0gdGhpcy5zZWxlY3RlZEhhbmRsZXI7XHJcbiAgICAgICAgaWYgKCFzZWxlY3RlZEhhbmRsZXIpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb21iaW5lTGF0ZXN0KHRoaXMuZW50aXR5JCwgdGhpcy5sYW5ndWFnZUNvZGUkKVxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgIHRha2UoMSksXHJcbiAgICAgICAgICAgICAgICBtZXJnZU1hcCgoW3BheW1lbnRNZXRob2QsIGxhbmd1YWdlQ29kZV0pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnB1dCA9IHRoaXMuZ2V0VXBkYXRlZFBheW1lbnRNZXRob2QoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBheW1lbnRNZXRob2QsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGV0YWlsRm9ybSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGFuZ3VhZ2VDb2RlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZEhhbmRsZXIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkQ2hlY2tlcixcclxuICAgICAgICAgICAgICAgICAgICApIGFzIFVwZGF0ZVBheW1lbnRNZXRob2RJbnB1dDtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kYXRhU2VydmljZS5zZXR0aW5ncy51cGRhdGVQYXltZW50TWV0aG9kKGlucHV0KTtcclxuICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoXHJcbiAgICAgICAgICAgICAgICBkYXRhID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2Uuc3VjY2VzcyhfKCdjb21tb24ubm90aWZ5LXVwZGF0ZS1zdWNjZXNzJyksIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZW50aXR5OiAnUGF5bWVudE1ldGhvZCcsXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kZXRhaWxGb3JtLm1hcmtBc1ByaXN0aW5lKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBlcnIgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5lcnJvcihfKCdjb21tb24ubm90aWZ5LXVwZGF0ZS1lcnJvcicpLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVudGl0eTogJ1BheW1lbnRNZXRob2QnLFxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdpdmVuIGEgUGF5bWVudE1ldGhvZCBhbmQgdGhlIHZhbHVlIG9mIHRoZSBkZXRhaWxGb3JtLCB0aGlzIG1ldGhvZCBjcmVhdGVzIGFuIHVwZGF0ZWQgY29weSBvZiBpdCB3aGljaFxyXG4gICAgICogY2FuIHRoZW4gYmUgcGVyc2lzdGVkIHRvIHRoZSBBUEkuXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgZ2V0VXBkYXRlZFBheW1lbnRNZXRob2QoXHJcbiAgICAgICAgcGF5bWVudE1ldGhvZDogUGF5bWVudE1ldGhvZEZyYWdtZW50LFxyXG4gICAgICAgIGZvcm1Hcm91cDogVW50eXBlZEZvcm1Hcm91cCxcclxuICAgICAgICBsYW5ndWFnZUNvZGU6IExhbmd1YWdlQ29kZSxcclxuICAgICAgICBzZWxlY3RlZEhhbmRsZXI6IENvbmZpZ3VyYWJsZU9wZXJhdGlvbixcclxuICAgICAgICBzZWxlY3RlZENoZWNrZXI/OiBDb25maWd1cmFibGVPcGVyYXRpb24gfCBudWxsLFxyXG4gICAgKTogVXBkYXRlUGF5bWVudE1ldGhvZElucHV0IHwgQ3JlYXRlUGF5bWVudE1ldGhvZElucHV0IHtcclxuICAgICAgICBjb25zdCBpbnB1dCA9IGNyZWF0ZVVwZGF0ZWRUcmFuc2xhdGFibGUoe1xyXG4gICAgICAgICAgICB0cmFuc2xhdGFibGU6IHBheW1lbnRNZXRob2QsXHJcbiAgICAgICAgICAgIHVwZGF0ZWRGaWVsZHM6IGZvcm1Hcm91cC52YWx1ZSxcclxuICAgICAgICAgICAgY3VzdG9tRmllbGRDb25maWc6IHRoaXMuY3VzdG9tRmllbGRzLFxyXG4gICAgICAgICAgICBsYW5ndWFnZUNvZGUsXHJcbiAgICAgICAgICAgIGRlZmF1bHRUcmFuc2xhdGlvbjoge1xyXG4gICAgICAgICAgICAgICAgbGFuZ3VhZ2VDb2RlLFxyXG4gICAgICAgICAgICAgICAgbmFtZTogcGF5bWVudE1ldGhvZC5uYW1lIHx8ICcnLFxyXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IHBheW1lbnRNZXRob2QuZGVzY3JpcHRpb24gfHwgJycsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgLi4uaW5wdXQsXHJcbiAgICAgICAgICAgIGNoZWNrZXI6IHNlbGVjdGVkQ2hlY2tlclxyXG4gICAgICAgICAgICAgICAgPyB0b0NvbmZpZ3VyYWJsZU9wZXJhdGlvbklucHV0KHNlbGVjdGVkQ2hlY2tlciwgZm9ybUdyb3VwLnZhbHVlLmNoZWNrZXIpXHJcbiAgICAgICAgICAgICAgICA6IG51bGwsXHJcbiAgICAgICAgICAgIGhhbmRsZXI6IHRvQ29uZmlndXJhYmxlT3BlcmF0aW9uSW5wdXQoc2VsZWN0ZWRIYW5kbGVyLCBmb3JtR3JvdXAudmFsdWUuaGFuZGxlciksXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgc2V0Rm9ybVZhbHVlcyhcclxuICAgICAgICBwYXltZW50TWV0aG9kOiBOb25OdWxsYWJsZTxHZXRQYXltZW50TWV0aG9kRGV0YWlsUXVlcnlbJ3BheW1lbnRNZXRob2QnXT4sXHJcbiAgICAgICAgbGFuZ3VhZ2VDb2RlOiBMYW5ndWFnZUNvZGUsXHJcbiAgICApOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBjdXJyZW50VHJhbnNsYXRpb24gPSBmaW5kVHJhbnNsYXRpb24ocGF5bWVudE1ldGhvZCwgbGFuZ3VhZ2VDb2RlKTtcclxuICAgICAgICB0aGlzLmRldGFpbEZvcm0ucGF0Y2hWYWx1ZSh7XHJcbiAgICAgICAgICAgIG5hbWU6IGN1cnJlbnRUcmFuc2xhdGlvbj8ubmFtZSxcclxuICAgICAgICAgICAgY29kZTogcGF5bWVudE1ldGhvZC5jb2RlLFxyXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogY3VycmVudFRyYW5zbGF0aW9uPy5kZXNjcmlwdGlvbixcclxuICAgICAgICAgICAgZW5hYmxlZDogcGF5bWVudE1ldGhvZC5lbmFibGVkLFxyXG4gICAgICAgICAgICBjaGVja2VyOiBwYXltZW50TWV0aG9kLmNoZWNrZXIgfHwgKHt9IGFzIGFueSksXHJcbiAgICAgICAgICAgIGhhbmRsZXI6IHBheW1lbnRNZXRob2QuaGFuZGxlciB8fCAoe30gYXMgYW55KSxcclxuICAgICAgICB9KTtcclxuICAgICAgICBpZiAoIXRoaXMuc2VsZWN0ZWRDaGVja2VyKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDaGVja2VyID0gcGF5bWVudE1ldGhvZC5jaGVja2VyICYmIHtcclxuICAgICAgICAgICAgICAgIGNvZGU6IHBheW1lbnRNZXRob2QuY2hlY2tlci5jb2RlLFxyXG4gICAgICAgICAgICAgICAgYXJnczogcGF5bWVudE1ldGhvZC5jaGVja2VyLmFyZ3MubWFwKGEgPT4gKHsgLi4uYSwgdmFsdWU6IGdldENvbmZpZ0FyZ1ZhbHVlKGEudmFsdWUpIH0pKSxcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCF0aGlzLnNlbGVjdGVkSGFuZGxlcikge1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkSGFuZGxlciA9IHBheW1lbnRNZXRob2QuaGFuZGxlciAmJiB7XHJcbiAgICAgICAgICAgICAgICBjb2RlOiBwYXltZW50TWV0aG9kLmhhbmRsZXIuY29kZSxcclxuICAgICAgICAgICAgICAgIGFyZ3M6IHBheW1lbnRNZXRob2QuaGFuZGxlci5hcmdzLm1hcChhID0+ICh7IC4uLmEsIHZhbHVlOiBnZXRDb25maWdBcmdWYWx1ZShhLnZhbHVlKSB9KSksXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLmN1c3RvbUZpZWxkcy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgdGhpcy5zZXRDdXN0b21GaWVsZEZvcm1WYWx1ZXMoXHJcbiAgICAgICAgICAgICAgICB0aGlzLmN1c3RvbUZpZWxkcyxcclxuICAgICAgICAgICAgICAgIHRoaXMuZGV0YWlsRm9ybS5nZXQoJ2N1c3RvbUZpZWxkcycpLFxyXG4gICAgICAgICAgICAgICAgcGF5bWVudE1ldGhvZCxcclxuICAgICAgICAgICAgICAgIGN1cnJlbnRUcmFuc2xhdGlvbixcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuIiwiPHZkci1wYWdlLWJsb2NrXHJcbiAgICA+PHZkci1hY3Rpb24tYmFyPlxyXG4gICAgICAgIDx2ZHItYWItbGVmdD5cclxuICAgICAgICAgICAgPHZkci1sYW5ndWFnZS1zZWxlY3RvclxyXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzTmV3JCB8IGFzeW5jXCJcclxuICAgICAgICAgICAgICAgIFthdmFpbGFibGVMYW5ndWFnZUNvZGVzXT1cImF2YWlsYWJsZUxhbmd1YWdlcyQgfCBhc3luY1wiXHJcbiAgICAgICAgICAgICAgICBbY3VycmVudExhbmd1YWdlQ29kZV09XCJsYW5ndWFnZUNvZGUkIHwgYXN5bmNcIlxyXG4gICAgICAgICAgICAgICAgKGxhbmd1YWdlQ29kZUNoYW5nZSk9XCJzZXRMYW5ndWFnZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgPjwvdmRyLWxhbmd1YWdlLXNlbGVjdG9yPlxyXG4gICAgICAgIDwvdmRyLWFiLWxlZnQ+XHJcblxyXG4gICAgICAgIDx2ZHItYWItcmlnaHQ+XHJcbiAgICAgICAgICAgIDx2ZHItYWN0aW9uLWJhci1pdGVtcyBsb2NhdGlvbklkPVwicGF5bWVudC1tZXRob2QtZGV0YWlsXCI+PC92ZHItYWN0aW9uLWJhci1pdGVtcz5cclxuICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIlxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJpc05ldyQgfCBhc3luYzsgZWxzZSB1cGRhdGVCdXR0b25cIlxyXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRldGFpbEZvcm0ucHJpc3RpbmUgfHwgZGV0YWlsRm9ybS5pbnZhbGlkIHx8ICFzZWxlY3RlZEhhbmRsZXJcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImNyZWF0ZSgpXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAge3sgJ2NvbW1vbi5jcmVhdGUnIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI3VwZGF0ZUJ1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAqdmRySWZQZXJtaXNzaW9ucz1cInVwZGF0ZVBlcm1pc3Npb25cIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2F2ZSgpXCJcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGV0YWlsRm9ybS5wcmlzdGluZSB8fCBkZXRhaWxGb3JtLmludmFsaWQgfHwgIXNlbGVjdGVkSGFuZGxlclwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgJ2NvbW1vbi51cGRhdGUnIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8L3Zkci1hYi1yaWdodD5cclxuICAgIDwvdmRyLWFjdGlvbi1iYXI+XHJcbjwvdmRyLXBhZ2UtYmxvY2s+XHJcblxyXG48Zm9ybSBjbGFzcz1cImZvcm1cIiBbZm9ybUdyb3VwXT1cImRldGFpbEZvcm1cIj5cclxuICAgIDx2ZHItcGFnZS1kZXRhaWwtbGF5b3V0PlxyXG4gICAgICAgIDx2ZHItcGFnZS1kZXRhaWwtc2lkZWJhcj5cclxuICAgICAgICAgICAgPHZkci1jYXJkPlxyXG4gICAgICAgICAgICAgICAgPHZkci1mb3JtLWZpZWxkIFtsYWJlbF09XCInY29tbW9uLmVuYWJsZWQnIHwgdHJhbnNsYXRlXCIgZm9yPVwiZGVzY3JpcHRpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICA8Y2xyLXRvZ2dsZS13cmFwcGVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbHJUb2dnbGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiZW5hYmxlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmRyRGlzYWJsZWRdPVwiISh1cGRhdGVQZXJtaXNzaW9uIHwgaGFzUGVybWlzc2lvbilcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZW5hYmxlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9jbHItdG9nZ2xlLXdyYXBwZXI+XHJcbiAgICAgICAgICAgICAgICA8L3Zkci1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICA8L3Zkci1jYXJkPlxyXG4gICAgICAgICAgICA8dmRyLWNhcmQgKm5nSWY9XCJlbnRpdHkkIHwgYXN5bmMgYXMgZW50aXR5XCI+XHJcbiAgICAgICAgICAgICAgICA8dmRyLXBhZ2UtZW50aXR5LWluZm8gW2VudGl0eV09XCJlbnRpdHlcIiAvPlxyXG4gICAgICAgICAgICA8L3Zkci1jYXJkPlxyXG4gICAgICAgIDwvdmRyLXBhZ2UtZGV0YWlsLXNpZGViYXI+XHJcbiAgICAgICAgPHZkci1wYWdlLWJsb2NrPlxyXG4gICAgICAgICAgICA8dmRyLWNhcmQ+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncmlkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHZkci1mb3JtLWZpZWxkIFtsYWJlbF09XCInY29tbW9uLm5hbWUnIHwgdHJhbnNsYXRlXCIgZm9yPVwibmFtZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwibmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJuYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCIhKHVwZGF0ZVBlcm1pc3Npb24gfCBoYXNQZXJtaXNzaW9uKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW5wdXQpPVwidXBkYXRlQ29kZShlbnRpdHk/LmNvZGUsICRldmVudC50YXJnZXQudmFsdWUpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICA8L3Zkci1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgIDx2ZHItZm9ybS1maWVsZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ2NvbW1vbi5jb2RlJyB8IHRyYW5zbGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcj1cImNvZGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbcmVhZE9ubHlUb2dnbGVdPVwidXBkYXRlUGVybWlzc2lvbiB8IGhhc1Blcm1pc3Npb25cIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImNvZGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiY29kZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwiISh1cGRhdGVQZXJtaXNzaW9uIHwgaGFzUGVybWlzc2lvbilcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdmRyLWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHZkci1yaWNoLXRleHQtZWRpdG9yXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1ncmlkLXNwYW5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJkZXNjcmlwdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCIhKHVwZGF0ZVBlcm1pc3Npb24gfCBoYXNQZXJtaXNzaW9uKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCInY29tbW9uLmRlc2NyaXB0aW9uJyB8IHRyYW5zbGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgPjwvdmRyLXJpY2gtdGV4dC1lZGl0b3I+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC92ZHItY2FyZD5cclxuXHJcbiAgICAgICAgICAgIDx2ZHItY2FyZFxyXG4gICAgICAgICAgICAgICAgZm9ybUdyb3VwTmFtZT1cImN1c3RvbUZpZWxkc1wiXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImN1c3RvbUZpZWxkcy5sZW5ndGhcIlxyXG4gICAgICAgICAgICAgICAgW3RpdGxlXT1cIidjb21tb24uY3VzdG9tLWZpZWxkcycgfCB0cmFuc2xhdGVcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8dmRyLXRhYmJlZC1jdXN0b20tZmllbGRzXHJcbiAgICAgICAgICAgICAgICAgICAgZW50aXR5TmFtZT1cIlBheW1lbnRNZXRob2RcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjdXN0b21GaWVsZHNdPVwiY3VzdG9tRmllbGRzXCJcclxuICAgICAgICAgICAgICAgICAgICBbY3VzdG9tRmllbGRzRm9ybUdyb3VwXT1cImRldGFpbEZvcm0uZ2V0KCdjdXN0b21GaWVsZHMnKVwiXHJcbiAgICAgICAgICAgICAgICA+PC92ZHItdGFiYmVkLWN1c3RvbS1maWVsZHM+XHJcbiAgICAgICAgICAgIDwvdmRyLWNhcmQ+XHJcblxyXG4gICAgICAgICAgICA8dmRyLWN1c3RvbS1kZXRhaWwtY29tcG9uZW50LWhvc3RcclxuICAgICAgICAgICAgICAgIGxvY2F0aW9uSWQ9XCJwYXltZW50LW1ldGhvZC1kZXRhaWxcIlxyXG4gICAgICAgICAgICAgICAgW2VudGl0eSRdPVwiZW50aXR5JFwiXHJcbiAgICAgICAgICAgICAgICBbZGV0YWlsRm9ybV09XCJkZXRhaWxGb3JtXCJcclxuICAgICAgICAgICAgPjwvdmRyLWN1c3RvbS1kZXRhaWwtY29tcG9uZW50LWhvc3Q+XHJcblxyXG4gICAgICAgICAgICA8dmRyLWNhcmQgW3RpdGxlXT1cIidzZXR0aW5ncy5wYXltZW50LWVsaWdpYmlsaXR5LWNoZWNrZXInIHwgdHJhbnNsYXRlXCI+XHJcbiAgICAgICAgICAgICAgICA8dmRyLWNvbmZpZ3VyYWJsZS1pbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic2VsZWN0ZWRDaGVja2VyICYmIHNlbGVjdGVkQ2hlY2tlckRlZmluaXRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtvcGVyYXRpb25dPVwic2VsZWN0ZWRDaGVja2VyXCJcclxuICAgICAgICAgICAgICAgICAgICBbb3BlcmF0aW9uRGVmaW5pdGlvbl09XCJzZWxlY3RlZENoZWNrZXJEZWZpbml0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwiISh1cGRhdGVQZXJtaXNzaW9uIHwgaGFzUGVybWlzc2lvbilcIlxyXG4gICAgICAgICAgICAgICAgICAgIChyZW1vdmUpPVwicmVtb3ZlQ2hlY2tlcigpXCJcclxuICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJjaGVja2VyXCJcclxuICAgICAgICAgICAgICAgID48L3Zkci1jb25maWd1cmFibGUtaW5wdXQ+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIXNlbGVjdGVkQ2hlY2tlciB8fCAhc2VsZWN0ZWRDaGVja2VyRGVmaW5pdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx2ZHItZHJvcGRvd24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmVcIiB2ZHJEcm9wZG93blRyaWdnZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xyLWljb24gc2hhcGU9XCJwbHVzXCI+PC9jbHItaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdjb21tb24uc2VsZWN0JyB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHZkci1kcm9wZG93bi1tZW51IHZkclBvc2l0aW9uPVwiYm90dG9tLWxlZnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgY2hlY2tlciBvZiBjaGVja2Vyc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmRyRHJvcGRvd25JdGVtXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdENoZWNrZXIoY2hlY2tlcilcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGNoZWNrZXIuZGVzY3JpcHRpb24gfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3Zkci1kcm9wZG93bi1tZW51PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdmRyLWRyb3Bkb3duPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvdmRyLWNhcmQ+XHJcbiAgICAgICAgICAgIDx2ZHItY2FyZCBbdGl0bGVdPVwiJ3NldHRpbmdzLnBheW1lbnQtaGFuZGxlcicgfCB0cmFuc2xhdGVcIj5cclxuICAgICAgICAgICAgICAgIDx2ZHItY29uZmlndXJhYmxlLWlucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzZWxlY3RlZEhhbmRsZXIgJiYgc2VsZWN0ZWRIYW5kbGVyRGVmaW5pdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgW29wZXJhdGlvbl09XCJzZWxlY3RlZEhhbmRsZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtvcGVyYXRpb25EZWZpbml0aW9uXT1cInNlbGVjdGVkSGFuZGxlckRlZmluaXRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCIhKHVwZGF0ZVBlcm1pc3Npb24gfCBoYXNQZXJtaXNzaW9uKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKHJlbW92ZSk9XCJyZW1vdmVIYW5kbGVyKClcIlxyXG4gICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImhhbmRsZXJcIlxyXG4gICAgICAgICAgICAgICAgPjwvdmRyLWNvbmZpZ3VyYWJsZS1pbnB1dD5cclxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhc2VsZWN0ZWRIYW5kbGVyIHx8ICFzZWxlY3RlZEhhbmRsZXJEZWZpbml0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHZkci1kcm9wZG93bj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZVwiIHZkckRyb3Bkb3duVHJpZ2dlcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbHItaWNvbiBzaGFwZT1cInBsdXNcIj48L2Nsci1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ2NvbW1vbi5zZWxlY3QnIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dmRyLWRyb3Bkb3duLW1lbnUgdmRyUG9zaXRpb249XCJib3R0b20tbGVmdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBoYW5kbGVyIG9mIGhhbmRsZXJzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZHJEcm9wZG93bkl0ZW1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0SGFuZGxlcihoYW5kbGVyKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaGFuZGxlci5kZXNjcmlwdGlvbiB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdmRyLWRyb3Bkb3duLW1lbnU+XHJcbiAgICAgICAgICAgICAgICAgICAgPC92ZHItZHJvcGRvd24+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC92ZHItY2FyZD5cclxuICAgICAgICA8L3Zkci1wYWdlLWJsb2NrPlxyXG4gICAgPC92ZHItcGFnZS1kZXRhaWwtbGF5b3V0PlxyXG48L2Zvcm0+XHJcbiJdfQ==
@@ -47,7 +47,7 @@ export const createRoutes = (pageService) => [
47
47
  path: 'channels/:id',
48
48
  component: PageComponent,
49
49
  data: {
50
- locationId: 'channel-list',
50
+ locationId: 'channel-detail',
51
51
  breadcrumb: { label: _('breadcrumb.channels'), link: ['../', 'channels'] },
52
52
  },
53
53
  children: pageService.getPageTabRoutes('channel-detail'),
@@ -65,7 +65,7 @@ export const createRoutes = (pageService) => [
65
65
  path: 'stock-locations/:id',
66
66
  component: PageComponent,
67
67
  data: {
68
- locationId: 'stock-location-list',
68
+ locationId: 'stock-location-detail',
69
69
  breadcrumb: { label: _('breadcrumb.stock-locations'), link: ['../', 'stock-locations'] },
70
70
  },
71
71
  children: pageService.getPageTabRoutes('stock-location-detail'),
@@ -83,7 +83,7 @@ export const createRoutes = (pageService) => [
83
83
  path: 'sellers/:id',
84
84
  component: PageComponent,
85
85
  data: {
86
- locationId: 'seller-list',
86
+ locationId: 'seller-detail',
87
87
  breadcrumb: { label: _('breadcrumb.sellers'), link: ['../', 'sellers'] },
88
88
  },
89
89
  children: pageService.getPageTabRoutes('seller-detail'),
@@ -229,4 +229,4 @@ export const createRoutes = (pageService) => [
229
229
  children: pageService.getPageTabRoutes('global-setting-detail'),
230
230
  },
231
231
  ];
232
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZ3Mucm91dGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9zZXR0aW5ncy9zcmMvc2V0dGluZ3Mucm91dGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdkMsT0FBTyxFQUFFLE1BQU0sSUFBSSxDQUFDLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUN0RSxPQUFPLEVBQ0gsV0FBVyxFQUNYLCtCQUErQixFQUMvQix3QkFBd0IsRUFDeEIsYUFBYSxHQUVoQixNQUFNLHdCQUF3QixDQUFDO0FBQ2hDLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFMUIsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLENBQUMsV0FBd0IsRUFBVyxFQUFFLENBQUM7SUFDL0Q7UUFDSSxJQUFJLEVBQUUsU0FBUztRQUNmLFNBQVMsRUFBRSxhQUFhO1FBQ3hCLElBQUksRUFBRTtZQUNGLFVBQVUsRUFBRSxDQUFDLENBQUMsb0JBQW9CLENBQUM7U0FDdEM7UUFDRCxPQUFPLEVBQUU7WUFDTCxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQ1QsTUFBTSxDQUFDLFdBQVcsQ0FBQztpQkFDZCxLQUFLLENBQUMsd0JBQXdCLENBQUM7aUJBQy9CLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUN6RTtRQUNELFFBQVEsRUFBRSxXQUFXLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDO0tBQ3BEO0lBQ0Q7UUFDSSxJQUFJLEVBQUUsZ0JBQWdCO1FBQ3RCLFNBQVMsRUFBRSxhQUFhO1FBQ3hCLElBQUksRUFBRTtZQUNGLFVBQVUsRUFBRSxvQkFBb0I7WUFDaEMsVUFBVSxFQUFFLENBQUMsQ0FBQywyQkFBMkIsQ0FBQztT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UUFBUSxFQUFFLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyx1QkFBdUIsQ0FBQztLQUNsRTtJQUNEO1FBQ0ksSUFBSSxFQUFFLGlCQUFpQjtRQUN2QixTQUFTLEVBQUUsYUFBYTtRQUN4QixJQUFJLEVBQUU7WUFDRixVQUFVLEVBQUUsQ0FBQyxDQUFDLDRCQUE0QixDQUFDO1lBQzNDLFVBQVUsRUFBRSx1QkFBdUI7U0FDdEM7UUFDRCxPQUFPLEVBQUU7WUFDTCxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQ1QsTUFBTSxDQUFDLFdBQVcsQ0FBQztpQkFDZCxLQUFLLENBQUMsK0JBQStCLENBQUM7aUJBQ3RDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDcEU7UUFDRCxRQUFRLEVBQUUsV0FBVyxDQUFDLGdCQUFnQixDQUFDLHVCQUF1QixDQUFDO0tBQ2xFO0NBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IG1hcmtlciBhcyBfIH0gZnJvbSAnQGJpZXNiamVyZy9uZ3gtdHJhbnNsYXRlLWV4dHJhY3QtbWFya2VyJztcclxuaW1wb3J0IHtcclxuICAgIERhdGFTZXJ2aWNlLFxyXG4gICAgR2V0R2xvYmFsU2V0dGluZ3NEZXRhaWxEb2N1bWVudCxcclxuICAgIEdldFByb2ZpbGVEZXRhaWxEb2N1bWVudCxcclxuICAgIFBhZ2VDb21wb25lbnQsXHJcbiAgICBQYWdlU2VydmljZSxcclxufSBmcm9tICdAdmVuZHVyZS9hZG1pbi11aS9jb3JlJztcclxuaW1wb3J0IHsgb2YgfSBmcm9tICdyeGpzJztcclxuXHJcbmV4cG9ydCBjb25zdCBjcmVhdGVSb3V0ZXMgPSAocGFnZVNlcnZpY2U6IFBhZ2VTZXJ2aWNlKTogUm91dGVbXSA9PiBbXHJcbiAgICB7XHJcbiAgICAgICAgcGF0aDogJ3Byb2ZpbGUnLFxyXG4gICAgICAgIGNvbXBvbmVudDogUGFnZUNvbXBvbmVudCxcclxuICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICAgIGJyZWFkY3J1bWI6IF8oJ2JyZWFkY3J1bWIucHJvZmlsZScpLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgcmVzb2x2ZToge1xyXG4gICAgICAgICAgICBkZXRhaWw6ICgpID0+XHJcbiAgICAgICAgICAgICAgICBpbmplY3QoRGF0YVNlcnZpY2UpXHJcbiAgICAgICAgICAgICAgICAgICAgLnF1ZXJ5KEdldFByb2ZpbGVEZXRhaWxEb2N1bWVudClcclxuICAgICAgICAgICAgICAgICAgICAubWFwU2luZ2xlKGRhdGEgPT4gKHsgZW50aXR5OiBvZihkYXRhLmFjdGl2ZUFkbWluaXN0cmF0b3IpIH0pKSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIGNoaWxkcmVuOiBwYWdlU2VydmljZS5nZXRQYWdlVGFiUm91dGVzKCdwcm9maWxlJyksXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICAgIHBhdGg6ICdhZG1pbmlzdHJhdG9ycycsXHJcbiAgICAgICAgY29tcG9uZW50OiBQYWdlQ29tcG9uZW50LFxyXG4gICAgICAgIGRhdGE6IHtcclxuICAgICAgICAgICAgbG9jYXRpb25JZDogJ2FkbWluaXN0cmF0b3ItbGlzdCcsXHJcbiAgICAgICAgICAgIGJyZWFkY3J1bWI6IF8oJ2JyZWFkY3J1bWIuYWRtaW5pc3RyYXRvcnMnKSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIGNoaWxkcmVuOiBwYWdlU2VydmljZS5nZXRQYWdlVGFiUm91dGVzKCdhZG1pbmlzdHJhdG9yLWxpc3QnKSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgICAgcGF0aDogJ2FkbWluaXN0cmF0b3JzLzppZCcsXHJcbiAgICAgICAgY29tcG9uZW50OiBQYWdlQ29tcG9uZW50LFxyXG4gICAgICAgIGRhdGE6IHtcclxuICAgICAgICAgICAgbG9jYXRpb25JZDogJ2FkbWluaXN0cmF0b3ItZGV0YWlsJyxcclxuICAgICAgICAgICAgYnJlYWRjcnVtYjogeyBsYWJlbDogXygnYnJlYWRjcnVtYi5hZG1pbmlzdHJhdG9ycycpLCBsaW5rOiBbJy4uLycsICdhZG1pbmlzdHJhdG9ycyddIH0sXHJcbiAgICAgICAgfSxcclxuICAgICAgICBjaGlsZHJlbjogcGFnZVNlcnZpY2UuZ2V0UGFnZVRhYlJvdXRlcygnYWRtaW5pc3RyYXRvci1kZXRhaWwnKSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgICAgcGF0aDogJ2NoYW5uZWxzJyxcclxuICAgICAgICBjb21wb25lbnQ6IFBhZ2VDb21wb25lbnQsXHJcbiAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgICBsb2NhdGlvbklkOiAnY2hhbm5lbC1saXN0JyxcclxuICAgICAgICAgICAgYnJlYWRjcnVtYjogXygnYnJlYWRjcnVtYi5jaGFubmVscycpLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY2hpbGRyZW46IHBhZ2VTZXJ2aWNlLmdldFBhZ2VUYWJSb3V0ZXMoJ2NoYW5uZWwtbGlzdCcpLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgICBwYXRoOiAnY2hhbm5lbHMvOmlkJyxcclxuICAgICAgICBjb21wb25lbnQ6IFBhZ2VDb21wb25lbnQsXHJcbiAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgICBsb2NhdGlvbklkOiAnY2hhbm5lbC1saXN0JyxcclxuICAgICAgICAgICAgYnJlYWRjcnVtYjogeyBsYWJlbDogXygnYnJlYWRjcnVtYi5jaGFubmVscycpLCBsaW5rOiBbJy4uLycsICdjaGFubmVscyddIH0sXHJcbiAgICAgICAgfSxcclxuICAgICAgICBjaGlsZHJlbjogcGFnZVNlcnZpY2UuZ2V0UGFnZVRhYlJvdXRlcygnY2hhbm5lbC1kZXRhaWwnKSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgICAgcGF0aDogJ3N0b2NrLWxvY2F0aW9ucycsXHJcbiAgICAgICAgY29tcG9uZW50OiBQYWdlQ29tcG9uZW50LFxyXG4gICAgICAgIGRhdGE6IHtcclxuICAgICAgICAgICAgbG9jYXRpb25JZDogJ3N0b2NrLWxvY2F0aW9uLWxpc3QnLFxyXG4gICAgICAgICAgICBicmVhZGNydW1iOiBfKCdicmVhZGNydW1iLnN0b2NrLWxvY2F0aW9ucycpLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY2hpbGRyZW46IHBhZ2VTZXJ2aWNlLmdldFBhZ2VUYWJSb3V0ZXMoJ3N0b2NrLWxvY2F0aW9uLWxpc3QnKSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgICAgcGF0aDogJ3N0b2NrLWxvY2F0aW9ucy86aWQnLFxyXG4gICAgICAgIGNvbXBvbmVudDogUGFnZUNvbXBvbmVudCxcclxuICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICAgIGxvY2F0aW9uSWQ6ICdzdG9jay1sb2NhdGlvbi1saXN0JyxcclxuICAgICAgICAgICAgYnJlYWRjcnVtYjogeyBsYWJlbDogXygnYnJlYWRjcnVtYi5zdG9jay1sb2NhdGlvbnMnKSwgbGluazogWycuLi8nLCAnc3RvY2stbG9jYXRpb25zJ10gfSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIGNoaWxkcmVuOiBwYWdlU2VydmljZS5nZXRQYWdlVGFiUm91dGVzKCdzdG9jay1sb2NhdGlvbi1kZXRhaWwnKSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgICAgcGF0aDogJ3NlbGxlcnMnLFxyXG4gICAgICAgIGNvbXBvbmVudDogUGFnZUNvbXBvbmVudCxcclxuICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICAgIGxvY2F0aW9uSWQ6ICdzZWxsZXItbGlzdCcsXHJcbiAgICAgICAgICAgIGJyZWFkY3J1bWI6IF8oJ2JyZWFkY3J1bWIuc2VsbGVycycpLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY2hpbGRyZW46IHBhZ2VTZXJ2aWNlLmdldFBhZ2VUYWJSb3V0ZXMoJ3NlbGxlci1saXN0JyksXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICAgIHBhdGg6ICdzZWxsZXJzLzppZCcsXHJcbiAgICAgICAgY29tcG9uZW50OiBQYWdlQ29tcG9uZW50LFxyXG4gICAgICAgIGRhdGE6IHtcclxuICAgICAgICAgICAgbG9jYXRpb25JZDogJ3NlbGxlci1saXN0JyxcclxuICAgICAgICAgICAgYnJlYWRjcnVtYjogeyBsYWJlbDogXygnYnJlYWRjcnVtYi5zZWxsZXJzJyksIGxpbms6IFsnLi4vJywgJ3NlbGxlcnMnXSB9LFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY2hpbGRyZW46IHBhZ2VTZXJ2aWNlLmdldFBhZ2VUYWJSb3V0ZXMoJ3NlbGxlci1kZXRhaWwnKSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgICAgcGF0aDogJ3JvbGVzJyxcclxuICAgICAgICBjb21wb25lbnQ6IFBhZ2VDb21wb25lbnQsXHJcbiAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgICBsb2NhdGlvbklkOiAncm9sZS1saXN0JyxcclxuICAgICAgICAgICAgYnJlYWRjcnVtYjogXygnYnJlYWRjcnVtYi5yb2xlcycpLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY2hpbGRyZW46IHBhZ2VTZXJ2aWNlLmdldFBhZ2VUYWJSb3V0ZXMoJ3JvbGUtbGlzdCcpLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgICBwYXRoOiAncm9sZXMvOmlkJyxcclxuICAgICAgICBjb21wb25lbnQ6IFBhZ2VDb21wb25lbnQsXHJcbiAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgICBsb2NhdGlvbklkOiAncm9sZS1kZXRhaWwnLFxyXG4gICAgICAgICAgICBicmVhZGNydW1iOiB7IGxhYmVsOiBfKCdicmVhZGNydW1iLnJvbGVzJyksIGxpbms6IFsnLi4vJywgJ3JvbGVzJ10gfSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIGNoaWxkcmVuOiBwYWdlU2VydmljZS5nZXRQYWdlVGFiUm91dGVzKCdyb2xlLWRldGFpbCcpLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgICBwYXRoOiAndGF4LWNhdGVnb3JpZXMnLFxyXG4gICAgICAgIGNvbXBvbmVudDogUGFnZUNvbXBvbmVudCxcclxuICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICAgIGxvY2F0aW9uSWQ6ICd0YXgtY2F0ZWdvcnktbGlzdCcsXHJcbiAgICAgICAgICAgIGJyZWFkY3J1bWI6IF8oJ2JyZWFkY3J1bWIudGF4LWNhdGVnb3JpZXMnKSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIGNoaWxkcmVuOiBwYWdlU2VydmljZS5nZXRQYWdlVGFiUm91dGVzKCd0YXgtY2F0ZWdvcnktbGlzdCcpLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgICBwYXRoOiAndGF4LWNhdGVnb3JpZXMvOmlkJyxcclxuICAgICAgICBjb21wb25lbnQ6IFBhZ2VDb21wb25lbnQsXHJcbiAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgICBsb2NhdGlvbklkOiAndGF4LWNhdGVnb3J5LWRldGFpbCcsXHJcbiAgICAgICAgICAgIGJyZWFkY3J1bWI6IHsgbGFiZWw6IF8oJ2JyZWFkY3J1bWIudGF4LWNhdGVnb3JpZXMnKSwgbGluazogWycuLi8nLCAndGF4LWNhdGVnb3JpZXMnXSB9LFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY2hpbGRyZW46IHBhZ2VTZXJ2aWNlLmdldFBhZ2VUYWJSb3V0ZXMoJ3RheC1jYXRlZ29yeS1kZXRhaWwnKSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgICAgcGF0aDogJ3RheC1yYXRlcycsXHJcbiAgICAgICAgY29tcG9uZW50OiBQYWdlQ29tcG9uZW50LFxyXG4gICAgICAgIGRhdGE6IHtcclxuICAgICAgICAgICAgbG9jYXRpb25JZDogJ3RheC1yYXRlLWxpc3QnLFxyXG4gICAgICAgICAgICBicmVhZGNydW1iOiBfKCdicmVhZGNydW1iLnRheC1yYXRlcycpLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY2hpbGRyZW46IHBhZ2VTZXJ2aWNlLmdldFBhZ2VUYWJSb3V0ZXMoJ3RheC1yYXRlLWxpc3QnKSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgICAgcGF0aDogJ3RheC1yYXRlcy86aWQnLFxyXG4gICAgICAgIGNvbXBvbmVudDogUGFnZUNvbXBvbmVudCxcclxuICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICAgIGxvY2F0aW9uSWQ6ICd0YXgtcmF0ZS1kZXRhaWwnLFxyXG4gICAgICAgICAgICBicmVhZGNydW1iOiB7IGxhYmVsOiBfKCdicmVhZGNydW1iLnRheC1yYXRlcycpLCBsaW5rOiBbJy4uLycsICd0YXgtcmF0ZXMnXSB9LFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY2hpbGRyZW46IHBhZ2VTZXJ2aWNlLmdldFBhZ2VUYWJSb3V0ZXMoJ3RheC1yYXRlLWRldGFpbCcpLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgICBwYXRoOiAnY291bnRyaWVzJyxcclxuICAgICAgICBjb21wb25lbnQ6IFBhZ2VDb21wb25lbnQsXHJcbiAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgICBsb2NhdGlvbklkOiAnY291bnRyeS1saXN0JyxcclxuICAgICAgICAgICAgYnJlYWRjcnVtYjogXygnYnJlYWRjcnVtYi5jb3VudHJpZXMnKSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIGNoaWxkcmVuOiBwYWdlU2VydmljZS5nZXRQYWdlVGFiUm91dGVzKCdjb3VudHJ5LWxpc3QnKSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgICAgcGF0aDogJ2NvdW50cmllcy86aWQnLFxyXG4gICAgICAgIGNvbXBvbmVudDogUGFnZUNvbXBvbmVudCxcclxuICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICAgIGxvY2F0aW9uSWQ6ICdjb3VudHJ5LWRldGFpbCcsXHJcbiAgICAgICAgICAgIGJyZWFkY3J1bWI6IHsgbGFiZWw6IF8oJ2JyZWFkY3J1bWIuY291bnRyaWVzJyksIGxpbms6IFsnLi4vJywgJ2NvdW50cmllcyddIH0sXHJcbiAgICAgICAgfSxcclxuICAgICAgICBjaGlsZHJlbjogcGFnZVNlcnZpY2UuZ2V0UGFnZVRhYlJvdXRlcygnY291bnRyeS1kZXRhaWwnKSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgICAgcGF0aDogJ3pvbmVzJyxcclxuICAgICAgICBjb21wb25lbnQ6IFBhZ2VDb21wb25lbnQsXHJcbiAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgICBsb2NhdGlvbklkOiAnem9uZS1saXN0JyxcclxuICAgICAgICAgICAgYnJlYWRjcnVtYjogXygnYnJlYWRjcnVtYi56b25lcycpLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY2hpbGRyZW46IHBhZ2VTZXJ2aWNlLmdldFBhZ2VUYWJSb3V0ZXMoJ3pvbmUtbGlzdCcpLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgICBwYXRoOiAnem9uZXMvOmlkJyxcclxuICAgICAgICBjb21wb25lbnQ6IFBhZ2VDb21wb25lbnQsXHJcbiAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgICBsb2NhdGlvbklkOiAnem9uZS1kZXRhaWwnLFxyXG4gICAgICAgICAgICBicmVhZGNydW1iOiB7IGxhYmVsOiBfKCdicmVhZGNydW1iLnpvbmVzJyksIGxpbms6IFsnLi4vJywgJ3pvbmVzJ10gfSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIGNoaWxkcmVuOiBwYWdlU2VydmljZS5nZXRQYWdlVGFiUm91dGVzKCd6b25lLWRldGFpbCcpLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgICBwYXRoOiAnc2hpcHBpbmctbWV0aG9kcycsXHJcbiAgICAgICAgY29tcG9uZW50OiBQYWdlQ29tcG9uZW50LFxyXG4gICAgICAgIGRhdGE6IHtcclxuICAgICAgICAgICAgbG9jYXRpb25JZDogJ3NoaXBwaW5nLW1ldGhvZC1saXN0JyxcclxuICAgICAgICAgICAgYnJlYWRjcnVtYjogXygnYnJlYWRjcnVtYi5zaGlwcGluZy1tZXRob2RzJyksXHJcbiAgICAgICAgfSxcclxuICAgICAgICBjaGlsZHJlbjogcGFnZVNlcnZpY2UuZ2V0UGFnZVRhYlJvdXRlcygnc2hpcHBpbmctbWV0aG9kLWxpc3QnKSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgICAgcGF0aDogJ3NoaXBwaW5nLW1ldGhvZHMvOmlkJyxcclxuICAgICAgICBjb21wb25lbnQ6IFBhZ2VDb21wb25lbnQsXHJcbiAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgICBsb2NhdGlvbklkOiAnc2hpcHBpbmctbWV0aG9kLWRldGFpbCcsXHJcbiAgICAgICAgICAgIGJyZWFkY3J1bWI6IHsgbGFiZWw6IF8oJ2JyZWFkY3J1bWIuc2hpcHBpbmctbWV0aG9kcycpLCBsaW5rOiBbJy4uLycsICdzaGlwcGluZy1tZXRob2RzJ10gfSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIGNoaWxkcmVuOiBwYWdlU2VydmljZS5nZXRQYWdlVGFiUm91dGVzKCdzaGlwcGluZy1tZXRob2QtZGV0YWlsJyksXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICAgIHBhdGg6ICdwYXltZW50LW1ldGhvZHMnLFxyXG4gICAgICAgIGNvbXBvbmVudDogUGFnZUNvbXBvbmVudCxcclxuICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICAgIGxvY2F0aW9uSWQ6ICdwYXltZW50LW1ldGhvZC1saXN0JyxcclxuICAgICAgICAgICAgYnJlYWRjcnVtYjogXygnYnJlYWRjcnVtYi5wYXltZW50LW1ldGhvZHMnKSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIGNoaWxkcmVuOiBwYWdlU2VydmljZS5nZXRQYWdlVGFiUm91dGVzKCdwYXltZW50LW1ldGhvZC1saXN0JyksXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICAgIHBhdGg6ICdwYXltZW50LW1ldGhvZHMvOmlkJyxcclxuICAgICAgICBjb21wb25lbnQ6IFBhZ2VDb21wb25lbnQsXHJcbiAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgICBsb2NhdGlvbklkOiAncGF5bWVudC1tZXRob2QtZGV0YWlsJyxcclxuICAgICAgICAgICAgYnJlYWRjcnVtYjogeyBsYWJlbDogXygnYnJlYWRjcnVtYi5wYXltZW50LW1ldGhvZHMnKSwgbGluazogWycuLi8nLCAncGF5bWVudC1tZXRob2RzJ10gfSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIGNoaWxkcmVuOiBwYWdlU2VydmljZS5nZXRQYWdlVGFiUm91dGVzKCdwYXltZW50LW1ldGhvZC1kZXRhaWwnKSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgICAgcGF0aDogJ2dsb2JhbC1zZXR0aW5ncycsXHJcbiAgICAgICAgY29tcG9uZW50OiBQYWdlQ29tcG9uZW50LFxyXG4gICAgICAgIGRhdGE6IHtcclxuICAgICAgICAgICAgYnJlYWRjcnVtYjogXygnYnJlYWRjcnVtYi5nbG9iYWwtc2V0dGluZ3MnKSxcclxuICAgICAgICAgICAgbG9jYXRpb25JZDogJ2dsb2JhbC1zZXR0aW5nLWRldGFpbCcsXHJcbiAgICAgICAgfSxcclxuICAgICAgICByZXNvbHZlOiB7XHJcbiAgICAgICAgICAgIGRldGFpbDogKCkgPT5cclxuICAgICAgICAgICAgICAgIGluamVjdChEYXRhU2VydmljZSlcclxuICAgICAgICAgICAgICAgICAgICAucXVlcnkoR2V0R2xvYmFsU2V0dGluZ3NEZXRhaWxEb2N1bWVudClcclxuICAgICAgICAgICAgICAgICAgICAubWFwU2luZ2xlKGRhdGEgPT4gKHsgZW50aXR5OiBvZihkYXRhLmdsb2JhbFNldHRpbmdzKSB9KSksXHJcbiAgICAgICAgfSxcclxuICAgICAgICBjaGlsZHJlbjogcGFnZVNlcnZpY2UuZ2V0UGFnZVRhYlJvdXRlcygnZ2xvYmFsLXNldHRpbmctZGV0YWlsJyksXHJcbiAgICB9LFxyXG5dO1xyXG4iXX0=
232
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZ3Mucm91dGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9zZXR0aW5ncy9zcmMvc2V0dGluZ3Mucm91dGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdkMsT0FBTyxFQUFFLE1BQU0sSUFBSSxDQUFDLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUN0RSxPQUFPLEVBQ0gsV0FBVyxFQUNYLCtCQUErQixFQUMvQix3QkFBd0IsRUFDeEIsYUFBYSxHQUVoQixNQUFNLHdCQUF3QixDQUFDO0FBQ2hDLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFMUIsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLENBQUMsV0FBd0IsRUFBVyxFQUFFLENBQUM7SUFDL0Q7UUFDSSxJQUFJLEVBQUUsU0FBUztRQUNmLFNBQVMsRUFBRSxhQUFhO1FBQ3hCLElBQUksRUFBRTtZQUNGLFVBQVUsRUFBRSxDQUFDLENBQUMsb0JBQW9CLENBQUM7U0FDdEM7UUFDRCxPQUFPLEVBQUU7WUFDTCxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQ1QsTUFBTSxDQUFDLFdBQVcsQ0FBQztpQkFDZCxLQUFLLENBQUMsd0JBQXdCLENBQUM7aUJBQy9CLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUN6RTtRQUNELFFBQVEsRUFBRSxXQUFXLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDO0tBQ3BEO0lBQ0Q7UUFDSSxJQUFJLEVBQUUsZ0JBQWdCO1FBQ3RCLFNBQVMsRUFBRSxhQUFhO1FBQ3hCLElBQUksRUFBRTtZQUNGLFVBQVUsRUFBRSxvQkFBb0I7WUFDaEMsVUFBVSxFQUFFLENBQUMsQ0FBQywyQkFBMkIsQ0FBQztT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RCxRQUFRLEVBQUUsV0FBVyxDQUFDLGdCQUFnQixDQUFDLHVCQUF1QixDQUFDO0tBQ2xFO0lBQ0Q7UUFDSSxJQUFJLEVBQUUsaUJBQWlCO1FBQ3ZCLFNBQVMsRUFBRSxhQUFhO1FBQ3hCLElBQUksRUFBRTtZQUNGLFVBQVUsRUFBRSxDQUFDLENBQUMsNEJBQTRCLENBQUM7WUFDM0MsVUFBVSxFQUFFLHVCQUF1QjtTQUN0QztRQUNELE9BQU8sRUFBRTtZQUNMLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FDVCxNQUFNLENBQUMsV0FBVyxDQUFDO2lCQUNkLEtBQUssQ0FBQywrQkFBK0IsQ0FBQztpQkFDdEMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUNwRTtRQUNELFFBQVEsRUFBRSxXQUFXLENBQUMsZ0JBQWdCLENBQUMsdUJBQXVCLENBQUM7S0FDbEU7Q0FDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgbWFya2VyIGFzIF8gfSBmcm9tICdAYmllc2JqZXJnL25neC10cmFuc2xhdGUtZXh0cmFjdC1tYXJrZXInO1xyXG5pbXBvcnQge1xyXG4gICAgRGF0YVNlcnZpY2UsXHJcbiAgICBHZXRHbG9iYWxTZXR0aW5nc0RldGFpbERvY3VtZW50LFxyXG4gICAgR2V0UHJvZmlsZURldGFpbERvY3VtZW50LFxyXG4gICAgUGFnZUNvbXBvbmVudCxcclxuICAgIFBhZ2VTZXJ2aWNlLFxyXG59IGZyb20gJ0B2ZW5kdXJlL2FkbWluLXVpL2NvcmUnO1xyXG5pbXBvcnQgeyBvZiB9IGZyb20gJ3J4anMnO1xyXG5cclxuZXhwb3J0IGNvbnN0IGNyZWF0ZVJvdXRlcyA9IChwYWdlU2VydmljZTogUGFnZVNlcnZpY2UpOiBSb3V0ZVtdID0+IFtcclxuICAgIHtcclxuICAgICAgICBwYXRoOiAncHJvZmlsZScsXHJcbiAgICAgICAgY29tcG9uZW50OiBQYWdlQ29tcG9uZW50LFxyXG4gICAgICAgIGRhdGE6IHtcclxuICAgICAgICAgICAgYnJlYWRjcnVtYjogXygnYnJlYWRjcnVtYi5wcm9maWxlJyksXHJcbiAgICAgICAgfSxcclxuICAgICAgICByZXNvbHZlOiB7XHJcbiAgICAgICAgICAgIGRldGFpbDogKCkgPT5cclxuICAgICAgICAgICAgICAgIGluamVjdChEYXRhU2VydmljZSlcclxuICAgICAgICAgICAgICAgICAgICAucXVlcnkoR2V0UHJvZmlsZURldGFpbERvY3VtZW50KVxyXG4gICAgICAgICAgICAgICAgICAgIC5tYXBTaW5nbGUoZGF0YSA9PiAoeyBlbnRpdHk6IG9mKGRhdGEuYWN0aXZlQWRtaW5pc3RyYXRvcikgfSkpLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY2hpbGRyZW46IHBhZ2VTZXJ2aWNlLmdldFBhZ2VUYWJSb3V0ZXMoJ3Byb2ZpbGUnKSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgICAgcGF0aDogJ2FkbWluaXN0cmF0b3JzJyxcclxuICAgICAgICBjb21wb25lbnQ6IFBhZ2VDb21wb25lbnQsXHJcbiAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgICBsb2NhdGlvbklkOiAnYWRtaW5pc3RyYXRvci1saXN0JyxcclxuICAgICAgICAgICAgYnJlYWRjcnVtYjogXygnYnJlYWRjcnVtYi5hZG1pbmlzdHJhdG9ycycpLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY2hpbGRyZW46IHBhZ2VTZXJ2aWNlLmdldFBhZ2VUYWJSb3V0ZXMoJ2FkbWluaXN0cmF0b3ItbGlzdCcpLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgICBwYXRoOiAnYWRtaW5pc3RyYXRvcnMvOmlkJyxcclxuICAgICAgICBjb21wb25lbnQ6IFBhZ2VDb21wb25lbnQsXHJcbiAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgICBsb2NhdGlvbklkOiAnYWRtaW5pc3RyYXRvci1kZXRhaWwnLFxyXG4gICAgICAgICAgICBicmVhZGNydW1iOiB7IGxhYmVsOiBfKCdicmVhZGNydW1iLmFkbWluaXN0cmF0b3JzJyksIGxpbms6IFsnLi4vJywgJ2FkbWluaXN0cmF0b3JzJ10gfSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIGNoaWxkcmVuOiBwYWdlU2VydmljZS5nZXRQYWdlVGFiUm91dGVzKCdhZG1pbmlzdHJhdG9yLWRldGFpbCcpLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgICBwYXRoOiAnY2hhbm5lbHMnLFxyXG4gICAgICAgIGNvbXBvbmVudDogUGFnZUNvbXBvbmVudCxcclxuICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICAgIGxvY2F0aW9uSWQ6ICdjaGFubmVsLWxpc3QnLFxyXG4gICAgICAgICAgICBicmVhZGNydW1iOiBfKCdicmVhZGNydW1iLmNoYW5uZWxzJyksXHJcbiAgICAgICAgfSxcclxuICAgICAgICBjaGlsZHJlbjogcGFnZVNlcnZpY2UuZ2V0UGFnZVRhYlJvdXRlcygnY2hhbm5lbC1saXN0JyksXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICAgIHBhdGg6ICdjaGFubmVscy86aWQnLFxyXG4gICAgICAgIGNvbXBvbmVudDogUGFnZUNvbXBvbmVudCxcclxuICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICAgIGxvY2F0aW9uSWQ6ICdjaGFubmVsLWRldGFpbCcsXHJcbiAgICAgICAgICAgIGJyZWFkY3J1bWI6IHsgbGFiZWw6IF8oJ2JyZWFkY3J1bWIuY2hhbm5lbHMnKSwgbGluazogWycuLi8nLCAnY2hhbm5lbHMnXSB9LFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY2hpbGRyZW46IHBhZ2VTZXJ2aWNlLmdldFBhZ2VUYWJSb3V0ZXMoJ2NoYW5uZWwtZGV0YWlsJyksXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICAgIHBhdGg6ICdzdG9jay1sb2NhdGlvbnMnLFxyXG4gICAgICAgIGNvbXBvbmVudDogUGFnZUNvbXBvbmVudCxcclxuICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICAgIGxvY2F0aW9uSWQ6ICdzdG9jay1sb2NhdGlvbi1saXN0JyxcclxuICAgICAgICAgICAgYnJlYWRjcnVtYjogXygnYnJlYWRjcnVtYi5zdG9jay1sb2NhdGlvbnMnKSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIGNoaWxkcmVuOiBwYWdlU2VydmljZS5nZXRQYWdlVGFiUm91dGVzKCdzdG9jay1sb2NhdGlvbi1saXN0JyksXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICAgIHBhdGg6ICdzdG9jay1sb2NhdGlvbnMvOmlkJyxcclxuICAgICAgICBjb21wb25lbnQ6IFBhZ2VDb21wb25lbnQsXHJcbiAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgICBsb2NhdGlvbklkOiAnc3RvY2stbG9jYXRpb24tZGV0YWlsJyxcclxuICAgICAgICAgICAgYnJlYWRjcnVtYjogeyBsYWJlbDogXygnYnJlYWRjcnVtYi5zdG9jay1sb2NhdGlvbnMnKSwgbGluazogWycuLi8nLCAnc3RvY2stbG9jYXRpb25zJ10gfSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIGNoaWxkcmVuOiBwYWdlU2VydmljZS5nZXRQYWdlVGFiUm91dGVzKCdzdG9jay1sb2NhdGlvbi1kZXRhaWwnKSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgICAgcGF0aDogJ3NlbGxlcnMnLFxyXG4gICAgICAgIGNvbXBvbmVudDogUGFnZUNvbXBvbmVudCxcclxuICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICAgIGxvY2F0aW9uSWQ6ICdzZWxsZXItbGlzdCcsXHJcbiAgICAgICAgICAgIGJyZWFkY3J1bWI6IF8oJ2JyZWFkY3J1bWIuc2VsbGVycycpLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY2hpbGRyZW46IHBhZ2VTZXJ2aWNlLmdldFBhZ2VUYWJSb3V0ZXMoJ3NlbGxlci1saXN0JyksXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICAgIHBhdGg6ICdzZWxsZXJzLzppZCcsXHJcbiAgICAgICAgY29tcG9uZW50OiBQYWdlQ29tcG9uZW50LFxyXG4gICAgICAgIGRhdGE6IHtcclxuICAgICAgICAgICAgbG9jYXRpb25JZDogJ3NlbGxlci1kZXRhaWwnLFxyXG4gICAgICAgICAgICBicmVhZGNydW1iOiB7IGxhYmVsOiBfKCdicmVhZGNydW1iLnNlbGxlcnMnKSwgbGluazogWycuLi8nLCAnc2VsbGVycyddIH0sXHJcbiAgICAgICAgfSxcclxuICAgICAgICBjaGlsZHJlbjogcGFnZVNlcnZpY2UuZ2V0UGFnZVRhYlJvdXRlcygnc2VsbGVyLWRldGFpbCcpLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgICBwYXRoOiAncm9sZXMnLFxyXG4gICAgICAgIGNvbXBvbmVudDogUGFnZUNvbXBvbmVudCxcclxuICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICAgIGxvY2F0aW9uSWQ6ICdyb2xlLWxpc3QnLFxyXG4gICAgICAgICAgICBicmVhZGNydW1iOiBfKCdicmVhZGNydW1iLnJvbGVzJyksXHJcbiAgICAgICAgfSxcclxuICAgICAgICBjaGlsZHJlbjogcGFnZVNlcnZpY2UuZ2V0UGFnZVRhYlJvdXRlcygncm9sZS1saXN0JyksXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICAgIHBhdGg6ICdyb2xlcy86aWQnLFxyXG4gICAgICAgIGNvbXBvbmVudDogUGFnZUNvbXBvbmVudCxcclxuICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICAgIGxvY2F0aW9uSWQ6ICdyb2xlLWRldGFpbCcsXHJcbiAgICAgICAgICAgIGJyZWFkY3J1bWI6IHsgbGFiZWw6IF8oJ2JyZWFkY3J1bWIucm9sZXMnKSwgbGluazogWycuLi8nLCAncm9sZXMnXSB9LFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY2hpbGRyZW46IHBhZ2VTZXJ2aWNlLmdldFBhZ2VUYWJSb3V0ZXMoJ3JvbGUtZGV0YWlsJyksXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICAgIHBhdGg6ICd0YXgtY2F0ZWdvcmllcycsXHJcbiAgICAgICAgY29tcG9uZW50OiBQYWdlQ29tcG9uZW50LFxyXG4gICAgICAgIGRhdGE6IHtcclxuICAgICAgICAgICAgbG9jYXRpb25JZDogJ3RheC1jYXRlZ29yeS1saXN0JyxcclxuICAgICAgICAgICAgYnJlYWRjcnVtYjogXygnYnJlYWRjcnVtYi50YXgtY2F0ZWdvcmllcycpLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY2hpbGRyZW46IHBhZ2VTZXJ2aWNlLmdldFBhZ2VUYWJSb3V0ZXMoJ3RheC1jYXRlZ29yeS1saXN0JyksXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICAgIHBhdGg6ICd0YXgtY2F0ZWdvcmllcy86aWQnLFxyXG4gICAgICAgIGNvbXBvbmVudDogUGFnZUNvbXBvbmVudCxcclxuICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICAgIGxvY2F0aW9uSWQ6ICd0YXgtY2F0ZWdvcnktZGV0YWlsJyxcclxuICAgICAgICAgICAgYnJlYWRjcnVtYjogeyBsYWJlbDogXygnYnJlYWRjcnVtYi50YXgtY2F0ZWdvcmllcycpLCBsaW5rOiBbJy4uLycsICd0YXgtY2F0ZWdvcmllcyddIH0sXHJcbiAgICAgICAgfSxcclxuICAgICAgICBjaGlsZHJlbjogcGFnZVNlcnZpY2UuZ2V0UGFnZVRhYlJvdXRlcygndGF4LWNhdGVnb3J5LWRldGFpbCcpLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgICBwYXRoOiAndGF4LXJhdGVzJyxcclxuICAgICAgICBjb21wb25lbnQ6IFBhZ2VDb21wb25lbnQsXHJcbiAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgICBsb2NhdGlvbklkOiAndGF4LXJhdGUtbGlzdCcsXHJcbiAgICAgICAgICAgIGJyZWFkY3J1bWI6IF8oJ2JyZWFkY3J1bWIudGF4LXJhdGVzJyksXHJcbiAgICAgICAgfSxcclxuICAgICAgICBjaGlsZHJlbjogcGFnZVNlcnZpY2UuZ2V0UGFnZVRhYlJvdXRlcygndGF4LXJhdGUtbGlzdCcpLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgICBwYXRoOiAndGF4LXJhdGVzLzppZCcsXHJcbiAgICAgICAgY29tcG9uZW50OiBQYWdlQ29tcG9uZW50LFxyXG4gICAgICAgIGRhdGE6IHtcclxuICAgICAgICAgICAgbG9jYXRpb25JZDogJ3RheC1yYXRlLWRldGFpbCcsXHJcbiAgICAgICAgICAgIGJyZWFkY3J1bWI6IHsgbGFiZWw6IF8oJ2JyZWFkY3J1bWIudGF4LXJhdGVzJyksIGxpbms6IFsnLi4vJywgJ3RheC1yYXRlcyddIH0sXHJcbiAgICAgICAgfSxcclxuICAgICAgICBjaGlsZHJlbjogcGFnZVNlcnZpY2UuZ2V0UGFnZVRhYlJvdXRlcygndGF4LXJhdGUtZGV0YWlsJyksXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICAgIHBhdGg6ICdjb3VudHJpZXMnLFxyXG4gICAgICAgIGNvbXBvbmVudDogUGFnZUNvbXBvbmVudCxcclxuICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICAgIGxvY2F0aW9uSWQ6ICdjb3VudHJ5LWxpc3QnLFxyXG4gICAgICAgICAgICBicmVhZGNydW1iOiBfKCdicmVhZGNydW1iLmNvdW50cmllcycpLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY2hpbGRyZW46IHBhZ2VTZXJ2aWNlLmdldFBhZ2VUYWJSb3V0ZXMoJ2NvdW50cnktbGlzdCcpLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgICBwYXRoOiAnY291bnRyaWVzLzppZCcsXHJcbiAgICAgICAgY29tcG9uZW50OiBQYWdlQ29tcG9uZW50LFxyXG4gICAgICAgIGRhdGE6IHtcclxuICAgICAgICAgICAgbG9jYXRpb25JZDogJ2NvdW50cnktZGV0YWlsJyxcclxuICAgICAgICAgICAgYnJlYWRjcnVtYjogeyBsYWJlbDogXygnYnJlYWRjcnVtYi5jb3VudHJpZXMnKSwgbGluazogWycuLi8nLCAnY291bnRyaWVzJ10gfSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIGNoaWxkcmVuOiBwYWdlU2VydmljZS5nZXRQYWdlVGFiUm91dGVzKCdjb3VudHJ5LWRldGFpbCcpLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgICBwYXRoOiAnem9uZXMnLFxyXG4gICAgICAgIGNvbXBvbmVudDogUGFnZUNvbXBvbmVudCxcclxuICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICAgIGxvY2F0aW9uSWQ6ICd6b25lLWxpc3QnLFxyXG4gICAgICAgICAgICBicmVhZGNydW1iOiBfKCdicmVhZGNydW1iLnpvbmVzJyksXHJcbiAgICAgICAgfSxcclxuICAgICAgICBjaGlsZHJlbjogcGFnZVNlcnZpY2UuZ2V0UGFnZVRhYlJvdXRlcygnem9uZS1saXN0JyksXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICAgIHBhdGg6ICd6b25lcy86aWQnLFxyXG4gICAgICAgIGNvbXBvbmVudDogUGFnZUNvbXBvbmVudCxcclxuICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICAgIGxvY2F0aW9uSWQ6ICd6b25lLWRldGFpbCcsXHJcbiAgICAgICAgICAgIGJyZWFkY3J1bWI6IHsgbGFiZWw6IF8oJ2JyZWFkY3J1bWIuem9uZXMnKSwgbGluazogWycuLi8nLCAnem9uZXMnXSB9LFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY2hpbGRyZW46IHBhZ2VTZXJ2aWNlLmdldFBhZ2VUYWJSb3V0ZXMoJ3pvbmUtZGV0YWlsJyksXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICAgIHBhdGg6ICdzaGlwcGluZy1tZXRob2RzJyxcclxuICAgICAgICBjb21wb25lbnQ6IFBhZ2VDb21wb25lbnQsXHJcbiAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgICBsb2NhdGlvbklkOiAnc2hpcHBpbmctbWV0aG9kLWxpc3QnLFxyXG4gICAgICAgICAgICBicmVhZGNydW1iOiBfKCdicmVhZGNydW1iLnNoaXBwaW5nLW1ldGhvZHMnKSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIGNoaWxkcmVuOiBwYWdlU2VydmljZS5nZXRQYWdlVGFiUm91dGVzKCdzaGlwcGluZy1tZXRob2QtbGlzdCcpLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgICBwYXRoOiAnc2hpcHBpbmctbWV0aG9kcy86aWQnLFxyXG4gICAgICAgIGNvbXBvbmVudDogUGFnZUNvbXBvbmVudCxcclxuICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICAgIGxvY2F0aW9uSWQ6ICdzaGlwcGluZy1tZXRob2QtZGV0YWlsJyxcclxuICAgICAgICAgICAgYnJlYWRjcnVtYjogeyBsYWJlbDogXygnYnJlYWRjcnVtYi5zaGlwcGluZy1tZXRob2RzJyksIGxpbms6IFsnLi4vJywgJ3NoaXBwaW5nLW1ldGhvZHMnXSB9LFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY2hpbGRyZW46IHBhZ2VTZXJ2aWNlLmdldFBhZ2VUYWJSb3V0ZXMoJ3NoaXBwaW5nLW1ldGhvZC1kZXRhaWwnKSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgICAgcGF0aDogJ3BheW1lbnQtbWV0aG9kcycsXHJcbiAgICAgICAgY29tcG9uZW50OiBQYWdlQ29tcG9uZW50LFxyXG4gICAgICAgIGRhdGE6IHtcclxuICAgICAgICAgICAgbG9jYXRpb25JZDogJ3BheW1lbnQtbWV0aG9kLWxpc3QnLFxyXG4gICAgICAgICAgICBicmVhZGNydW1iOiBfKCdicmVhZGNydW1iLnBheW1lbnQtbWV0aG9kcycpLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY2hpbGRyZW46IHBhZ2VTZXJ2aWNlLmdldFBhZ2VUYWJSb3V0ZXMoJ3BheW1lbnQtbWV0aG9kLWxpc3QnKSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgICAgcGF0aDogJ3BheW1lbnQtbWV0aG9kcy86aWQnLFxyXG4gICAgICAgIGNvbXBvbmVudDogUGFnZUNvbXBvbmVudCxcclxuICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICAgIGxvY2F0aW9uSWQ6ICdwYXltZW50LW1ldGhvZC1kZXRhaWwnLFxyXG4gICAgICAgICAgICBicmVhZGNydW1iOiB7IGxhYmVsOiBfKCdicmVhZGNydW1iLnBheW1lbnQtbWV0aG9kcycpLCBsaW5rOiBbJy4uLycsICdwYXltZW50LW1ldGhvZHMnXSB9LFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY2hpbGRyZW46IHBhZ2VTZXJ2aWNlLmdldFBhZ2VUYWJSb3V0ZXMoJ3BheW1lbnQtbWV0aG9kLWRldGFpbCcpLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgICBwYXRoOiAnZ2xvYmFsLXNldHRpbmdzJyxcclxuICAgICAgICBjb21wb25lbnQ6IFBhZ2VDb21wb25lbnQsXHJcbiAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgICBicmVhZGNydW1iOiBfKCdicmVhZGNydW1iLmdsb2JhbC1zZXR0aW5ncycpLFxyXG4gICAgICAgICAgICBsb2NhdGlvbklkOiAnZ2xvYmFsLXNldHRpbmctZGV0YWlsJyxcclxuICAgICAgICB9LFxyXG4gICAgICAgIHJlc29sdmU6IHtcclxuICAgICAgICAgICAgZGV0YWlsOiAoKSA9PlxyXG4gICAgICAgICAgICAgICAgaW5qZWN0KERhdGFTZXJ2aWNlKVxyXG4gICAgICAgICAgICAgICAgICAgIC5xdWVyeShHZXRHbG9iYWxTZXR0aW5nc0RldGFpbERvY3VtZW50KVxyXG4gICAgICAgICAgICAgICAgICAgIC5tYXBTaW5nbGUoZGF0YSA9PiAoeyBlbnRpdHk6IG9mKGRhdGEuZ2xvYmFsU2V0dGluZ3MpIH0pKSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIGNoaWxkcmVuOiBwYWdlU2VydmljZS5nZXRQYWdlVGFiUm91dGVzKCdnbG9iYWwtc2V0dGluZy1kZXRhaWwnKSxcclxuICAgIH0sXHJcbl07XHJcbiJdfQ==
@@ -2090,11 +2090,11 @@ class CollectionDetailComponent extends TypedBaseDetailComponent {
2090
2090
  }));
2091
2091
  }
2092
2092
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: CollectionDetailComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.DataService }, { token: i2.FormBuilder }, { token: i1.NotificationService }, { token: i1.ModalService }, { token: i1.LocalStorageService }], target: i0.ɵɵFactoryTarget.Component }); }
2093
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.2", type: CollectionDetailComponent, selector: "vdr-collection-detail", viewQueries: [{ propertyName: "contentsComponent", first: true, predicate: ["collectionContents"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<vdr-page-block>\r\n <vdr-action-bar>\r\n <vdr-ab-left>\r\n <vdr-language-selector\r\n [disabled]=\"isNew$ | async\"\r\n [availableLanguageCodes]=\"availableLanguages$ | async\"\r\n [currentLanguageCode]=\"languageCode$ | async\"\r\n (languageCodeChange)=\"setLanguage($event)\"\r\n ></vdr-language-selector>\r\n </vdr-ab-left>\r\n <vdr-ab-right>\r\n <vdr-action-bar-items locationId=\"collection-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]=\"detailForm.invalid || detailForm.pristine\"\r\n >\r\n {{ 'common.create' | translate }}\r\n </button>\r\n <ng-template #updateButton>\r\n <button\r\n *vdrIfPermissions=\"updatePermission\"\r\n class=\"btn btn-primary\"\r\n (click)=\"save()\"\r\n [disabled]=\"(detailForm.invalid || detailForm.pristine) && !assetsChanged()\"\r\n >\r\n {{ 'common.update' | translate }}\r\n </button>\r\n </ng-template></vdr-ab-right\r\n >\r\n </vdr-action-bar>\r\n</vdr-page-block>\r\n<form class=\"form\" [formGroup]=\"detailForm\">\r\n <vdr-page-detail-layout>\r\n <vdr-page-detail-sidebar>\r\n <vdr-card>\r\n <vdr-form-field [label]=\"'catalog.visibility' | translate\" for=\"visibility\">\r\n <clr-toggle-wrapper>\r\n <input\r\n type=\"checkbox\"\r\n clrToggle\r\n formControlName=\"visible\"\r\n id=\"visibility\"\r\n [vdrDisabled]=\"!(updatePermission | hasPermission)\"\r\n />\r\n <label class=\"visible-toggle\">\r\n <ng-container *ngIf=\"detailForm.value.visible; else private\">{{\r\n 'catalog.public' | translate\r\n }}</ng-container>\r\n <ng-template #private>{{ 'catalog.private' | translate }}</ng-template>\r\n </label>\r\n </clr-toggle-wrapper>\r\n </vdr-form-field>\r\n </vdr-card>\r\n <vdr-card *ngIf=\"entity$ | async as entity\">\r\n <vdr-page-entity-info [entity]=\"entity\"></vdr-page-entity-info>\r\n </vdr-card>\r\n </vdr-page-detail-sidebar>\r\n\r\n <vdr-page-block *ngIf=\"entity$ | async as entity\"\r\n ><nav role=\"navigation\">\r\n <ul class=\"collection-breadcrumbs\">\r\n <li *ngFor=\"let breadcrumb of entity.breadcrumbs; let isFirst = first; let isLast = last\">\r\n <a [routerLink]=\"['/catalog/collections']\" *ngIf=\"isFirst\">{{\r\n 'catalog.root-collection' | translate\r\n }}</a>\r\n <a\r\n [routerLink]=\"['/catalog/collections', breadcrumb.id]\"\r\n *ngIf=\"!isFirst && !isLast\"\r\n >{{ breadcrumb.name | translate }}</a\r\n >\r\n <ng-container *ngIf=\"isLast\">{{ breadcrumb.name | translate }}</ng-container>\r\n </li>\r\n </ul>\r\n </nav>\r\n </vdr-page-block>\r\n\r\n <vdr-page-block>\r\n <vdr-card>\r\n <div class=\"form-grid\">\r\n <vdr-form-field [label]=\"'common.name' | translate\" for=\"name\">\r\n <input\r\n id=\"name\"\r\n type=\"text\"\r\n formControlName=\"name\"\r\n [readonly]=\"!(updatePermission | hasPermission)\"\r\n (input)=\"updateSlug($event.target.value)\"\r\n />\r\n </vdr-form-field>\r\n <vdr-form-field\r\n [label]=\"'catalog.slug' | translate\"\r\n for=\"slug\"\r\n [errors]=\"{ pattern: ('catalog.slug-pattern-error' | translate) }\"\r\n >\r\n <input\r\n id=\"slug\"\r\n type=\"text\"\r\n formControlName=\"slug\"\r\n [readonly]=\"!(updatePermission | hasPermission)\"\r\n />\r\n </vdr-form-field>\r\n <vdr-form-field\r\n class=\"form-grid-span\"\r\n [label]=\"'common.description' | translate\"\r\n for=\"slug\"\r\n >\r\n <vdr-rich-text-editor\r\n formControlName=\"description\"\r\n [readonly]=\"!(updatePermission | hasPermission)\"\r\n ></vdr-rich-text-editor>\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=\"Collection\"\r\n [customFields]=\"customFields\"\r\n [customFieldsFormGroup]=\"detailForm.get('customFields')\"\r\n [readonly]=\"!(updatePermission | hasPermission)\"\r\n ></vdr-tabbed-custom-fields>\r\n </vdr-card>\r\n <vdr-custom-detail-component-host\r\n locationId=\"collection-detail\"\r\n [entity$]=\"entity$\"\r\n [detailForm]=\"detailForm\"\r\n ></vdr-custom-detail-component-host>\r\n <vdr-card [title]=\"'catalog.assets' | translate\">\r\n <vdr-assets\r\n [assets]=\"entity?.assets\"\r\n [featuredAsset]=\"entity?.featuredAsset\"\r\n [updatePermissions]=\"updatePermission\"\r\n (change)=\"assetChanges = $event\"\r\n ></vdr-assets>\r\n </vdr-card>\r\n <vdr-card [title]=\"'catalog.filters' | translate\">\r\n <vdr-form-field\r\n [label]=\"'catalog.filter-inheritance' | translate\"\r\n for=\"inheritFilters\"\r\n >\r\n <clr-toggle-wrapper>\r\n <input\r\n type=\"checkbox\"\r\n clrToggle\r\n formControlName=\"inheritFilters\"\r\n id=\"inheritFilters\"\r\n [vdrDisabled]=\"!(updatePermission | hasPermission)\"\r\n />\r\n <label class=\"visible-toggle\">\r\n <ng-container *ngIf=\"detailForm.value.inheritFilters; else noInherit\">{{\r\n 'catalog.inherit-filters-from-parent' | translate\r\n }}</ng-container>\r\n <ng-template #noInherit>{{\r\n 'catalog.do-not-inherit-filters' | translate\r\n }}</ng-template>\r\n </label>\r\n </clr-toggle-wrapper>\r\n </vdr-form-field>\r\n <div formArrayName=\"filters\">\r\n <ng-container *ngFor=\"let filter of filters; index as i; trackBy: trackByFn\">\r\n <vdr-configurable-input\r\n (remove)=\"removeFilter(i)\"\r\n [position]=\"i\"\r\n [operation]=\"filter\"\r\n [operationDefinition]=\"getFilterDefinition(filter)\"\r\n [formControlName]=\"i\"\r\n [readonly]=\"!(updatePermission | hasPermission)\"\r\n ></vdr-configurable-input>\r\n </ng-container>\r\n </div>\r\n <div *vdrIfPermissions=\"updatePermission\">\r\n <vdr-dropdown>\r\n <button class=\"btn btn-outline\" vdrDropdownTrigger>\r\n <clr-icon shape=\"plus\"></clr-icon>\r\n <span>{{ 'marketing.add-condition' | translate }}</span>\r\n <clr-icon shape=\"ellipsis-vertical\"></clr-icon>\r\n </button>\r\n <vdr-dropdown-menu vdrPosition=\"bottom-left\">\r\n <button\r\n *ngFor=\"let filter of allFilters\"\r\n type=\"button\"\r\n vdrDropdownItem\r\n (click)=\"addFilter(filter)\"\r\n >\r\n {{ filter.description }}\r\n </button>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n </div>\r\n </vdr-card>\r\n\r\n <vdr-card [title]=\"'common.contents' | translate\" [paddingX]=\"false\">\r\n <vdr-collection-contents\r\n [collectionId]=\"id\"\r\n [parentId]=\"parentId$ | async\"\r\n [updatedFilters]=\"updatedFilters$ | async\"\r\n [inheritFilters]=\"inheritFilters$ | async\"\r\n [previewUpdatedFilters]=\"livePreview\"\r\n #collectionContents\r\n >\r\n <ng-template let-count>\r\n <div class=\"ml-3\">\r\n <div class=\"contents-title\">\r\n {{ 'catalog.collection-contents' | translate }} ({{\r\n 'common.results-count' | translate : { count: count }\r\n }})\r\n </div>\r\n <clr-checkbox-wrapper [class.disabled]=\"detailForm.get('filters')?.pristine\">\r\n <input\r\n type=\"checkbox\"\r\n clrCheckbox\r\n [ngModelOptions]=\"{ standalone: true }\"\r\n [disabled]=\"detailForm.get('filters')?.pristine\"\r\n [ngModel]=\"livePreview\"\r\n (ngModelChange)=\"toggleLivePreview()\"\r\n />\r\n <label>{{ 'catalog.live-preview-contents' | translate }}</label>\r\n </clr-checkbox-wrapper>\r\n </div>\r\n </ng-template>\r\n </vdr-collection-contents>\r\n </vdr-card>\r\n </vdr-page-block>\r\n </vdr-page-detail-layout>\r\n</form>\r\n", styles: ["@charset \"UTF-8\";.visible-toggle{margin-top:-3px!important}clr-checkbox-wrapper{transition:opacity .3s}clr-checkbox-wrapper.disabled{opacity:.5}.collection-breadcrumbs{list-style-type:none;background-color:var(--color-component-bg-200);padding:2px 6px;margin-bottom:6px;border-radius:var(--clr-global-borderradius)}.collection-breadcrumbs li{font-size:.65rem;display:inline-block;margin-inline-end:10px}.collection-breadcrumbs li:not(:last-child):after{content:\"\\203a\";top:0;color:var(--color-grey-400);margin-inline-start:10px}\n"], dependencies: [{ kind: "directive", type: i3.ClrDatagridItemsTrackBy, selector: "[ngForTrackBy]", inputs: ["ngForTrackBy"] }, { kind: "directive", type: i3.ClrIconCustomTag, selector: "clr-icon" }, { kind: "directive", type: i3.ClrLabel, selector: "label", inputs: ["for"] }, { kind: "directive", type: i3.ClrCheckbox, selector: "[clrCheckbox],[clrToggle]" }, { kind: "component", type: i3.ClrCheckboxWrapper, selector: "clr-checkbox-wrapper,clr-toggle-wrapper" }, { kind: "directive", type: i3$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { 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.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { 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: "directive", type: i2.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { kind: "directive", type: i1$1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { 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.ConfigurableInputComponent, selector: "vdr-configurable-input", inputs: ["operation", "operationDefinition", "readonly", "removable", "position"], outputs: ["remove"] }, { 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.LanguageSelectorComponent, selector: "vdr-language-selector", inputs: ["currentLanguageCode", "availableLanguageCodes", "disabled"], outputs: ["languageCodeChange"] }, { kind: "component", type: i1.RichTextEditorComponent, selector: "vdr-rich-text-editor", inputs: ["label", "readonly"] }, { kind: "component", type: i1.DropdownComponent, selector: "vdr-dropdown", inputs: ["manualToggle"] }, { kind: "component", type: i1.DropdownMenuComponent, selector: "vdr-dropdown-menu", inputs: ["vdrPosition", "customClasses"] }, { kind: "directive", type: i1.DropdownTriggerDirective, selector: "[vdrDropdownTrigger]" }, { kind: "directive", type: i1.DropdownItemDirective, selector: "[vdrDropdownItem]" }, { 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: AssetsComponent, selector: "vdr-assets", inputs: ["assets", "featuredAsset", "compact", "updatePermissions"], outputs: ["change"] }, { kind: "component", type: CollectionContentsComponent, selector: "vdr-collection-contents", inputs: ["collectionId", "parentId", "inheritFilters", "updatedFilters", "previewUpdatedFilters"] }, { kind: "pipe", type: i3$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }, { kind: "pipe", type: i1.HasPermissionPipe, name: "hasPermission" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2093
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.2", type: CollectionDetailComponent, selector: "vdr-collection-detail", viewQueries: [{ propertyName: "contentsComponent", first: true, predicate: ["collectionContents"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<vdr-page-block>\r\n <vdr-action-bar>\r\n <vdr-ab-left>\r\n <vdr-language-selector\r\n [disabled]=\"isNew$ | async\"\r\n [availableLanguageCodes]=\"availableLanguages$ | async\"\r\n [currentLanguageCode]=\"languageCode$ | async\"\r\n (languageCodeChange)=\"setLanguage($event)\"\r\n ></vdr-language-selector>\r\n </vdr-ab-left>\r\n <vdr-ab-right>\r\n <vdr-action-bar-items locationId=\"collection-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]=\"detailForm.invalid || detailForm.pristine\"\r\n >\r\n {{ 'common.create' | translate }}\r\n </button>\r\n <ng-template #updateButton>\r\n <button\r\n *vdrIfPermissions=\"updatePermission\"\r\n class=\"btn btn-primary\"\r\n (click)=\"save()\"\r\n [disabled]=\"(detailForm.invalid || detailForm.pristine) && !assetsChanged()\"\r\n >\r\n {{ 'common.update' | translate }}\r\n </button>\r\n </ng-template></vdr-ab-right\r\n >\r\n </vdr-action-bar>\r\n</vdr-page-block>\r\n<form class=\"form\" [formGroup]=\"detailForm\">\r\n <vdr-page-detail-layout>\r\n <vdr-page-detail-sidebar>\r\n <vdr-card>\r\n <vdr-form-field [label]=\"'catalog.visibility' | translate\" for=\"visibility\">\r\n <clr-toggle-wrapper>\r\n <input\r\n type=\"checkbox\"\r\n clrToggle\r\n formControlName=\"visible\"\r\n id=\"visibility\"\r\n [vdrDisabled]=\"!(updatePermission | hasPermission)\"\r\n />\r\n <label class=\"visible-toggle\">\r\n <ng-container *ngIf=\"detailForm.value.visible; else private\">{{\r\n 'catalog.public' | translate\r\n }}</ng-container>\r\n <ng-template #private>{{ 'catalog.private' | translate }}</ng-template>\r\n </label>\r\n </clr-toggle-wrapper>\r\n </vdr-form-field>\r\n </vdr-card>\r\n <vdr-card *ngIf=\"entity$ | async as entity\">\r\n <vdr-page-entity-info [entity]=\"entity\"></vdr-page-entity-info>\r\n </vdr-card>\r\n </vdr-page-detail-sidebar>\r\n\r\n <vdr-page-block *ngIf=\"entity$ | async as entity\"\r\n ><nav role=\"navigation\">\r\n <ul class=\"collection-breadcrumbs\">\r\n <li *ngFor=\"let breadcrumb of entity.breadcrumbs; let isFirst = first; let isLast = last\">\r\n <a [routerLink]=\"['/catalog/collections']\" *ngIf=\"isFirst\">{{\r\n 'catalog.root-collection' | translate\r\n }}</a>\r\n <a\r\n [routerLink]=\"['/catalog/collections', breadcrumb.id]\"\r\n *ngIf=\"!isFirst && !isLast\"\r\n >{{ breadcrumb.name | translate }}</a\r\n >\r\n <ng-container *ngIf=\"isLast\">{{ breadcrumb.name | translate }}</ng-container>\r\n </li>\r\n </ul>\r\n </nav>\r\n </vdr-page-block>\r\n\r\n <vdr-page-block>\r\n <vdr-card>\r\n <div class=\"form-grid\">\r\n <vdr-form-field [label]=\"'common.name' | translate\" for=\"name\">\r\n <input\r\n id=\"name\"\r\n type=\"text\"\r\n formControlName=\"name\"\r\n [readonly]=\"!(updatePermission | hasPermission)\"\r\n (input)=\"updateSlug($event.target.value)\"\r\n />\r\n </vdr-form-field>\r\n <vdr-form-field\r\n [label]=\"'catalog.slug' | translate\"\r\n for=\"slug\"\r\n [errors]=\"{ pattern: ('catalog.slug-pattern-error' | translate) }\"\r\n >\r\n <input\r\n id=\"slug\"\r\n type=\"text\"\r\n formControlName=\"slug\"\r\n [readonly]=\"!(updatePermission | hasPermission)\"\r\n />\r\n </vdr-form-field>\r\n <vdr-form-field\r\n class=\"form-grid-span\"\r\n [label]=\"'common.description' | translate\"\r\n for=\"slug\"\r\n >\r\n <vdr-rich-text-editor\r\n formControlName=\"description\"\r\n [readonly]=\"!(updatePermission | hasPermission)\"\r\n ></vdr-rich-text-editor>\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=\"Collection\"\r\n [customFields]=\"customFields\"\r\n [customFieldsFormGroup]=\"detailForm.get('customFields')\"\r\n [readonly]=\"!(updatePermission | hasPermission)\"\r\n ></vdr-tabbed-custom-fields>\r\n </vdr-card>\r\n <vdr-custom-detail-component-host\r\n locationId=\"collection-detail\"\r\n [entity$]=\"entity$\"\r\n [detailForm]=\"detailForm\"\r\n ></vdr-custom-detail-component-host>\r\n <vdr-card [title]=\"'catalog.assets' | translate\">\r\n <vdr-assets\r\n [assets]=\"entity?.assets\"\r\n [featuredAsset]=\"entity?.featuredAsset\"\r\n [updatePermissions]=\"updatePermission\"\r\n (change)=\"assetChanges = $event\"\r\n ></vdr-assets>\r\n </vdr-card>\r\n <vdr-card [title]=\"'catalog.filters' | translate\">\r\n <vdr-form-field\r\n [label]=\"'catalog.filter-inheritance' | translate\"\r\n for=\"inheritFilters\"\r\n >\r\n <clr-toggle-wrapper>\r\n <input\r\n type=\"checkbox\"\r\n clrToggle\r\n formControlName=\"inheritFilters\"\r\n id=\"inheritFilters\"\r\n [vdrDisabled]=\"!(updatePermission | hasPermission)\"\r\n />\r\n <label class=\"visible-toggle\">\r\n <ng-container *ngIf=\"detailForm.value.inheritFilters; else noInherit\">{{\r\n 'catalog.inherit-filters-from-parent' | translate\r\n }}</ng-container>\r\n <ng-template #noInherit>{{\r\n 'catalog.do-not-inherit-filters' | translate\r\n }}</ng-template>\r\n </label>\r\n </clr-toggle-wrapper>\r\n </vdr-form-field>\r\n <div formArrayName=\"filters\">\r\n <ng-container *ngFor=\"let filter of filters; index as i; trackBy: trackByFn\">\r\n <vdr-configurable-input\r\n (remove)=\"removeFilter(i)\"\r\n [position]=\"i\"\r\n [operation]=\"filter\"\r\n [operationDefinition]=\"getFilterDefinition(filter)\"\r\n [formControlName]=\"i\"\r\n [readonly]=\"!(updatePermission | hasPermission)\"\r\n ></vdr-configurable-input>\r\n </ng-container>\r\n </div>\r\n <div *vdrIfPermissions=\"updatePermission\">\r\n <vdr-dropdown>\r\n <button class=\"btn btn-outline\" vdrDropdownTrigger>\r\n <clr-icon shape=\"plus\"></clr-icon>\r\n <span>{{ 'marketing.add-condition' | translate }}</span>\r\n <clr-icon shape=\"ellipsis-vertical\"></clr-icon>\r\n </button>\r\n <vdr-dropdown-menu vdrPosition=\"bottom-left\">\r\n <button\r\n *ngFor=\"let filter of allFilters\"\r\n type=\"button\"\r\n vdrDropdownItem\r\n (click)=\"addFilter(filter)\"\r\n >\r\n {{ filter.description }}\r\n </button>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n </div>\r\n </vdr-card>\r\n\r\n <vdr-card [title]=\"'common.contents' | translate\" [paddingX]=\"false\">\r\n <vdr-collection-contents\r\n [collectionId]=\"id\"\r\n [parentId]=\"parentId$ | async\"\r\n [updatedFilters]=\"updatedFilters$ | async\"\r\n [inheritFilters]=\"inheritFilters$ | async\"\r\n [previewUpdatedFilters]=\"livePreview\"\r\n #collectionContents\r\n >\r\n <ng-template let-count>\r\n <div class=\"ml-3\">\r\n <div class=\"contents-title\">\r\n {{ 'catalog.collection-contents' | translate }} ({{\r\n 'common.results-count' | translate : { count: count }\r\n }})\r\n </div>\r\n <clr-checkbox-wrapper [class.disabled]=\"detailForm.get('filters')?.pristine\">\r\n <input\r\n type=\"checkbox\"\r\n clrCheckbox\r\n [ngModelOptions]=\"{ standalone: true }\"\r\n [disabled]=\"detailForm.get('filters')?.pristine\"\r\n [ngModel]=\"livePreview\"\r\n (ngModelChange)=\"toggleLivePreview()\"\r\n />\r\n <label>{{ 'catalog.live-preview-contents' | translate }}</label>\r\n </clr-checkbox-wrapper>\r\n </div>\r\n </ng-template>\r\n </vdr-collection-contents>\r\n </vdr-card>\r\n </vdr-page-block>\r\n </vdr-page-detail-layout>\r\n</form>\r\n", styles: ["@charset \"UTF-8\";.visible-toggle{margin-top:-3px!important}clr-checkbox-wrapper{transition:opacity .3s}clr-checkbox-wrapper.disabled{opacity:.5}.collection-breadcrumbs{list-style-type:none;background-color:var(--color-component-bg-200);padding:2px 6px;margin-bottom:6px;border-radius:var(--clr-global-borderradius)}.collection-breadcrumbs li{font-size:.65rem;display:inline-block;margin-inline-end:10px}.collection-breadcrumbs li:last-child{font-weight:600}.collection-breadcrumbs li:not(:last-child):after{content:\"\\203a\";top:0;color:var(--color-grey-400);margin-inline-start:10px}\n"], dependencies: [{ kind: "directive", type: i3.ClrDatagridItemsTrackBy, selector: "[ngForTrackBy]", inputs: ["ngForTrackBy"] }, { kind: "directive", type: i3.ClrIconCustomTag, selector: "clr-icon" }, { kind: "directive", type: i3.ClrLabel, selector: "label", inputs: ["for"] }, { kind: "directive", type: i3.ClrCheckbox, selector: "[clrCheckbox],[clrToggle]" }, { kind: "component", type: i3.ClrCheckboxWrapper, selector: "clr-checkbox-wrapper,clr-toggle-wrapper" }, { kind: "directive", type: i3$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { 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.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { 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: "directive", type: i2.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { kind: "directive", type: i1$1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { 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.ConfigurableInputComponent, selector: "vdr-configurable-input", inputs: ["operation", "operationDefinition", "readonly", "removable", "position"], outputs: ["remove"] }, { 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.LanguageSelectorComponent, selector: "vdr-language-selector", inputs: ["currentLanguageCode", "availableLanguageCodes", "disabled"], outputs: ["languageCodeChange"] }, { kind: "component", type: i1.RichTextEditorComponent, selector: "vdr-rich-text-editor", inputs: ["label", "readonly"] }, { kind: "component", type: i1.DropdownComponent, selector: "vdr-dropdown", inputs: ["manualToggle"] }, { kind: "component", type: i1.DropdownMenuComponent, selector: "vdr-dropdown-menu", inputs: ["vdrPosition", "customClasses"] }, { kind: "directive", type: i1.DropdownTriggerDirective, selector: "[vdrDropdownTrigger]" }, { kind: "directive", type: i1.DropdownItemDirective, selector: "[vdrDropdownItem]" }, { 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: AssetsComponent, selector: "vdr-assets", inputs: ["assets", "featuredAsset", "compact", "updatePermissions"], outputs: ["change"] }, { kind: "component", type: CollectionContentsComponent, selector: "vdr-collection-contents", inputs: ["collectionId", "parentId", "inheritFilters", "updatedFilters", "previewUpdatedFilters"] }, { kind: "pipe", type: i3$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }, { kind: "pipe", type: i1.HasPermissionPipe, name: "hasPermission" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2094
2094
  }
2095
2095
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: CollectionDetailComponent, decorators: [{
2096
2096
  type: Component,
2097
- args: [{ selector: 'vdr-collection-detail', changeDetection: ChangeDetectionStrategy.OnPush, template: "<vdr-page-block>\r\n <vdr-action-bar>\r\n <vdr-ab-left>\r\n <vdr-language-selector\r\n [disabled]=\"isNew$ | async\"\r\n [availableLanguageCodes]=\"availableLanguages$ | async\"\r\n [currentLanguageCode]=\"languageCode$ | async\"\r\n (languageCodeChange)=\"setLanguage($event)\"\r\n ></vdr-language-selector>\r\n </vdr-ab-left>\r\n <vdr-ab-right>\r\n <vdr-action-bar-items locationId=\"collection-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]=\"detailForm.invalid || detailForm.pristine\"\r\n >\r\n {{ 'common.create' | translate }}\r\n </button>\r\n <ng-template #updateButton>\r\n <button\r\n *vdrIfPermissions=\"updatePermission\"\r\n class=\"btn btn-primary\"\r\n (click)=\"save()\"\r\n [disabled]=\"(detailForm.invalid || detailForm.pristine) && !assetsChanged()\"\r\n >\r\n {{ 'common.update' | translate }}\r\n </button>\r\n </ng-template></vdr-ab-right\r\n >\r\n </vdr-action-bar>\r\n</vdr-page-block>\r\n<form class=\"form\" [formGroup]=\"detailForm\">\r\n <vdr-page-detail-layout>\r\n <vdr-page-detail-sidebar>\r\n <vdr-card>\r\n <vdr-form-field [label]=\"'catalog.visibility' | translate\" for=\"visibility\">\r\n <clr-toggle-wrapper>\r\n <input\r\n type=\"checkbox\"\r\n clrToggle\r\n formControlName=\"visible\"\r\n id=\"visibility\"\r\n [vdrDisabled]=\"!(updatePermission | hasPermission)\"\r\n />\r\n <label class=\"visible-toggle\">\r\n <ng-container *ngIf=\"detailForm.value.visible; else private\">{{\r\n 'catalog.public' | translate\r\n }}</ng-container>\r\n <ng-template #private>{{ 'catalog.private' | translate }}</ng-template>\r\n </label>\r\n </clr-toggle-wrapper>\r\n </vdr-form-field>\r\n </vdr-card>\r\n <vdr-card *ngIf=\"entity$ | async as entity\">\r\n <vdr-page-entity-info [entity]=\"entity\"></vdr-page-entity-info>\r\n </vdr-card>\r\n </vdr-page-detail-sidebar>\r\n\r\n <vdr-page-block *ngIf=\"entity$ | async as entity\"\r\n ><nav role=\"navigation\">\r\n <ul class=\"collection-breadcrumbs\">\r\n <li *ngFor=\"let breadcrumb of entity.breadcrumbs; let isFirst = first; let isLast = last\">\r\n <a [routerLink]=\"['/catalog/collections']\" *ngIf=\"isFirst\">{{\r\n 'catalog.root-collection' | translate\r\n }}</a>\r\n <a\r\n [routerLink]=\"['/catalog/collections', breadcrumb.id]\"\r\n *ngIf=\"!isFirst && !isLast\"\r\n >{{ breadcrumb.name | translate }}</a\r\n >\r\n <ng-container *ngIf=\"isLast\">{{ breadcrumb.name | translate }}</ng-container>\r\n </li>\r\n </ul>\r\n </nav>\r\n </vdr-page-block>\r\n\r\n <vdr-page-block>\r\n <vdr-card>\r\n <div class=\"form-grid\">\r\n <vdr-form-field [label]=\"'common.name' | translate\" for=\"name\">\r\n <input\r\n id=\"name\"\r\n type=\"text\"\r\n formControlName=\"name\"\r\n [readonly]=\"!(updatePermission | hasPermission)\"\r\n (input)=\"updateSlug($event.target.value)\"\r\n />\r\n </vdr-form-field>\r\n <vdr-form-field\r\n [label]=\"'catalog.slug' | translate\"\r\n for=\"slug\"\r\n [errors]=\"{ pattern: ('catalog.slug-pattern-error' | translate) }\"\r\n >\r\n <input\r\n id=\"slug\"\r\n type=\"text\"\r\n formControlName=\"slug\"\r\n [readonly]=\"!(updatePermission | hasPermission)\"\r\n />\r\n </vdr-form-field>\r\n <vdr-form-field\r\n class=\"form-grid-span\"\r\n [label]=\"'common.description' | translate\"\r\n for=\"slug\"\r\n >\r\n <vdr-rich-text-editor\r\n formControlName=\"description\"\r\n [readonly]=\"!(updatePermission | hasPermission)\"\r\n ></vdr-rich-text-editor>\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=\"Collection\"\r\n [customFields]=\"customFields\"\r\n [customFieldsFormGroup]=\"detailForm.get('customFields')\"\r\n [readonly]=\"!(updatePermission | hasPermission)\"\r\n ></vdr-tabbed-custom-fields>\r\n </vdr-card>\r\n <vdr-custom-detail-component-host\r\n locationId=\"collection-detail\"\r\n [entity$]=\"entity$\"\r\n [detailForm]=\"detailForm\"\r\n ></vdr-custom-detail-component-host>\r\n <vdr-card [title]=\"'catalog.assets' | translate\">\r\n <vdr-assets\r\n [assets]=\"entity?.assets\"\r\n [featuredAsset]=\"entity?.featuredAsset\"\r\n [updatePermissions]=\"updatePermission\"\r\n (change)=\"assetChanges = $event\"\r\n ></vdr-assets>\r\n </vdr-card>\r\n <vdr-card [title]=\"'catalog.filters' | translate\">\r\n <vdr-form-field\r\n [label]=\"'catalog.filter-inheritance' | translate\"\r\n for=\"inheritFilters\"\r\n >\r\n <clr-toggle-wrapper>\r\n <input\r\n type=\"checkbox\"\r\n clrToggle\r\n formControlName=\"inheritFilters\"\r\n id=\"inheritFilters\"\r\n [vdrDisabled]=\"!(updatePermission | hasPermission)\"\r\n />\r\n <label class=\"visible-toggle\">\r\n <ng-container *ngIf=\"detailForm.value.inheritFilters; else noInherit\">{{\r\n 'catalog.inherit-filters-from-parent' | translate\r\n }}</ng-container>\r\n <ng-template #noInherit>{{\r\n 'catalog.do-not-inherit-filters' | translate\r\n }}</ng-template>\r\n </label>\r\n </clr-toggle-wrapper>\r\n </vdr-form-field>\r\n <div formArrayName=\"filters\">\r\n <ng-container *ngFor=\"let filter of filters; index as i; trackBy: trackByFn\">\r\n <vdr-configurable-input\r\n (remove)=\"removeFilter(i)\"\r\n [position]=\"i\"\r\n [operation]=\"filter\"\r\n [operationDefinition]=\"getFilterDefinition(filter)\"\r\n [formControlName]=\"i\"\r\n [readonly]=\"!(updatePermission | hasPermission)\"\r\n ></vdr-configurable-input>\r\n </ng-container>\r\n </div>\r\n <div *vdrIfPermissions=\"updatePermission\">\r\n <vdr-dropdown>\r\n <button class=\"btn btn-outline\" vdrDropdownTrigger>\r\n <clr-icon shape=\"plus\"></clr-icon>\r\n <span>{{ 'marketing.add-condition' | translate }}</span>\r\n <clr-icon shape=\"ellipsis-vertical\"></clr-icon>\r\n </button>\r\n <vdr-dropdown-menu vdrPosition=\"bottom-left\">\r\n <button\r\n *ngFor=\"let filter of allFilters\"\r\n type=\"button\"\r\n vdrDropdownItem\r\n (click)=\"addFilter(filter)\"\r\n >\r\n {{ filter.description }}\r\n </button>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n </div>\r\n </vdr-card>\r\n\r\n <vdr-card [title]=\"'common.contents' | translate\" [paddingX]=\"false\">\r\n <vdr-collection-contents\r\n [collectionId]=\"id\"\r\n [parentId]=\"parentId$ | async\"\r\n [updatedFilters]=\"updatedFilters$ | async\"\r\n [inheritFilters]=\"inheritFilters$ | async\"\r\n [previewUpdatedFilters]=\"livePreview\"\r\n #collectionContents\r\n >\r\n <ng-template let-count>\r\n <div class=\"ml-3\">\r\n <div class=\"contents-title\">\r\n {{ 'catalog.collection-contents' | translate }} ({{\r\n 'common.results-count' | translate : { count: count }\r\n }})\r\n </div>\r\n <clr-checkbox-wrapper [class.disabled]=\"detailForm.get('filters')?.pristine\">\r\n <input\r\n type=\"checkbox\"\r\n clrCheckbox\r\n [ngModelOptions]=\"{ standalone: true }\"\r\n [disabled]=\"detailForm.get('filters')?.pristine\"\r\n [ngModel]=\"livePreview\"\r\n (ngModelChange)=\"toggleLivePreview()\"\r\n />\r\n <label>{{ 'catalog.live-preview-contents' | translate }}</label>\r\n </clr-checkbox-wrapper>\r\n </div>\r\n </ng-template>\r\n </vdr-collection-contents>\r\n </vdr-card>\r\n </vdr-page-block>\r\n </vdr-page-detail-layout>\r\n</form>\r\n", styles: ["@charset \"UTF-8\";.visible-toggle{margin-top:-3px!important}clr-checkbox-wrapper{transition:opacity .3s}clr-checkbox-wrapper.disabled{opacity:.5}.collection-breadcrumbs{list-style-type:none;background-color:var(--color-component-bg-200);padding:2px 6px;margin-bottom:6px;border-radius:var(--clr-global-borderradius)}.collection-breadcrumbs li{font-size:.65rem;display:inline-block;margin-inline-end:10px}.collection-breadcrumbs li:not(:last-child):after{content:\"\\203a\";top:0;color:var(--color-grey-400);margin-inline-start:10px}\n"] }]
2097
+ args: [{ selector: 'vdr-collection-detail', changeDetection: ChangeDetectionStrategy.OnPush, template: "<vdr-page-block>\r\n <vdr-action-bar>\r\n <vdr-ab-left>\r\n <vdr-language-selector\r\n [disabled]=\"isNew$ | async\"\r\n [availableLanguageCodes]=\"availableLanguages$ | async\"\r\n [currentLanguageCode]=\"languageCode$ | async\"\r\n (languageCodeChange)=\"setLanguage($event)\"\r\n ></vdr-language-selector>\r\n </vdr-ab-left>\r\n <vdr-ab-right>\r\n <vdr-action-bar-items locationId=\"collection-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]=\"detailForm.invalid || detailForm.pristine\"\r\n >\r\n {{ 'common.create' | translate }}\r\n </button>\r\n <ng-template #updateButton>\r\n <button\r\n *vdrIfPermissions=\"updatePermission\"\r\n class=\"btn btn-primary\"\r\n (click)=\"save()\"\r\n [disabled]=\"(detailForm.invalid || detailForm.pristine) && !assetsChanged()\"\r\n >\r\n {{ 'common.update' | translate }}\r\n </button>\r\n </ng-template></vdr-ab-right\r\n >\r\n </vdr-action-bar>\r\n</vdr-page-block>\r\n<form class=\"form\" [formGroup]=\"detailForm\">\r\n <vdr-page-detail-layout>\r\n <vdr-page-detail-sidebar>\r\n <vdr-card>\r\n <vdr-form-field [label]=\"'catalog.visibility' | translate\" for=\"visibility\">\r\n <clr-toggle-wrapper>\r\n <input\r\n type=\"checkbox\"\r\n clrToggle\r\n formControlName=\"visible\"\r\n id=\"visibility\"\r\n [vdrDisabled]=\"!(updatePermission | hasPermission)\"\r\n />\r\n <label class=\"visible-toggle\">\r\n <ng-container *ngIf=\"detailForm.value.visible; else private\">{{\r\n 'catalog.public' | translate\r\n }}</ng-container>\r\n <ng-template #private>{{ 'catalog.private' | translate }}</ng-template>\r\n </label>\r\n </clr-toggle-wrapper>\r\n </vdr-form-field>\r\n </vdr-card>\r\n <vdr-card *ngIf=\"entity$ | async as entity\">\r\n <vdr-page-entity-info [entity]=\"entity\"></vdr-page-entity-info>\r\n </vdr-card>\r\n </vdr-page-detail-sidebar>\r\n\r\n <vdr-page-block *ngIf=\"entity$ | async as entity\"\r\n ><nav role=\"navigation\">\r\n <ul class=\"collection-breadcrumbs\">\r\n <li *ngFor=\"let breadcrumb of entity.breadcrumbs; let isFirst = first; let isLast = last\">\r\n <a [routerLink]=\"['/catalog/collections']\" *ngIf=\"isFirst\">{{\r\n 'catalog.root-collection' | translate\r\n }}</a>\r\n <a\r\n [routerLink]=\"['/catalog/collections', breadcrumb.id]\"\r\n *ngIf=\"!isFirst && !isLast\"\r\n >{{ breadcrumb.name | translate }}</a\r\n >\r\n <ng-container *ngIf=\"isLast\">{{ breadcrumb.name | translate }}</ng-container>\r\n </li>\r\n </ul>\r\n </nav>\r\n </vdr-page-block>\r\n\r\n <vdr-page-block>\r\n <vdr-card>\r\n <div class=\"form-grid\">\r\n <vdr-form-field [label]=\"'common.name' | translate\" for=\"name\">\r\n <input\r\n id=\"name\"\r\n type=\"text\"\r\n formControlName=\"name\"\r\n [readonly]=\"!(updatePermission | hasPermission)\"\r\n (input)=\"updateSlug($event.target.value)\"\r\n />\r\n </vdr-form-field>\r\n <vdr-form-field\r\n [label]=\"'catalog.slug' | translate\"\r\n for=\"slug\"\r\n [errors]=\"{ pattern: ('catalog.slug-pattern-error' | translate) }\"\r\n >\r\n <input\r\n id=\"slug\"\r\n type=\"text\"\r\n formControlName=\"slug\"\r\n [readonly]=\"!(updatePermission | hasPermission)\"\r\n />\r\n </vdr-form-field>\r\n <vdr-form-field\r\n class=\"form-grid-span\"\r\n [label]=\"'common.description' | translate\"\r\n for=\"slug\"\r\n >\r\n <vdr-rich-text-editor\r\n formControlName=\"description\"\r\n [readonly]=\"!(updatePermission | hasPermission)\"\r\n ></vdr-rich-text-editor>\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=\"Collection\"\r\n [customFields]=\"customFields\"\r\n [customFieldsFormGroup]=\"detailForm.get('customFields')\"\r\n [readonly]=\"!(updatePermission | hasPermission)\"\r\n ></vdr-tabbed-custom-fields>\r\n </vdr-card>\r\n <vdr-custom-detail-component-host\r\n locationId=\"collection-detail\"\r\n [entity$]=\"entity$\"\r\n [detailForm]=\"detailForm\"\r\n ></vdr-custom-detail-component-host>\r\n <vdr-card [title]=\"'catalog.assets' | translate\">\r\n <vdr-assets\r\n [assets]=\"entity?.assets\"\r\n [featuredAsset]=\"entity?.featuredAsset\"\r\n [updatePermissions]=\"updatePermission\"\r\n (change)=\"assetChanges = $event\"\r\n ></vdr-assets>\r\n </vdr-card>\r\n <vdr-card [title]=\"'catalog.filters' | translate\">\r\n <vdr-form-field\r\n [label]=\"'catalog.filter-inheritance' | translate\"\r\n for=\"inheritFilters\"\r\n >\r\n <clr-toggle-wrapper>\r\n <input\r\n type=\"checkbox\"\r\n clrToggle\r\n formControlName=\"inheritFilters\"\r\n id=\"inheritFilters\"\r\n [vdrDisabled]=\"!(updatePermission | hasPermission)\"\r\n />\r\n <label class=\"visible-toggle\">\r\n <ng-container *ngIf=\"detailForm.value.inheritFilters; else noInherit\">{{\r\n 'catalog.inherit-filters-from-parent' | translate\r\n }}</ng-container>\r\n <ng-template #noInherit>{{\r\n 'catalog.do-not-inherit-filters' | translate\r\n }}</ng-template>\r\n </label>\r\n </clr-toggle-wrapper>\r\n </vdr-form-field>\r\n <div formArrayName=\"filters\">\r\n <ng-container *ngFor=\"let filter of filters; index as i; trackBy: trackByFn\">\r\n <vdr-configurable-input\r\n (remove)=\"removeFilter(i)\"\r\n [position]=\"i\"\r\n [operation]=\"filter\"\r\n [operationDefinition]=\"getFilterDefinition(filter)\"\r\n [formControlName]=\"i\"\r\n [readonly]=\"!(updatePermission | hasPermission)\"\r\n ></vdr-configurable-input>\r\n </ng-container>\r\n </div>\r\n <div *vdrIfPermissions=\"updatePermission\">\r\n <vdr-dropdown>\r\n <button class=\"btn btn-outline\" vdrDropdownTrigger>\r\n <clr-icon shape=\"plus\"></clr-icon>\r\n <span>{{ 'marketing.add-condition' | translate }}</span>\r\n <clr-icon shape=\"ellipsis-vertical\"></clr-icon>\r\n </button>\r\n <vdr-dropdown-menu vdrPosition=\"bottom-left\">\r\n <button\r\n *ngFor=\"let filter of allFilters\"\r\n type=\"button\"\r\n vdrDropdownItem\r\n (click)=\"addFilter(filter)\"\r\n >\r\n {{ filter.description }}\r\n </button>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n </div>\r\n </vdr-card>\r\n\r\n <vdr-card [title]=\"'common.contents' | translate\" [paddingX]=\"false\">\r\n <vdr-collection-contents\r\n [collectionId]=\"id\"\r\n [parentId]=\"parentId$ | async\"\r\n [updatedFilters]=\"updatedFilters$ | async\"\r\n [inheritFilters]=\"inheritFilters$ | async\"\r\n [previewUpdatedFilters]=\"livePreview\"\r\n #collectionContents\r\n >\r\n <ng-template let-count>\r\n <div class=\"ml-3\">\r\n <div class=\"contents-title\">\r\n {{ 'catalog.collection-contents' | translate }} ({{\r\n 'common.results-count' | translate : { count: count }\r\n }})\r\n </div>\r\n <clr-checkbox-wrapper [class.disabled]=\"detailForm.get('filters')?.pristine\">\r\n <input\r\n type=\"checkbox\"\r\n clrCheckbox\r\n [ngModelOptions]=\"{ standalone: true }\"\r\n [disabled]=\"detailForm.get('filters')?.pristine\"\r\n [ngModel]=\"livePreview\"\r\n (ngModelChange)=\"toggleLivePreview()\"\r\n />\r\n <label>{{ 'catalog.live-preview-contents' | translate }}</label>\r\n </clr-checkbox-wrapper>\r\n </div>\r\n </ng-template>\r\n </vdr-collection-contents>\r\n </vdr-card>\r\n </vdr-page-block>\r\n </vdr-page-detail-layout>\r\n</form>\r\n", styles: ["@charset \"UTF-8\";.visible-toggle{margin-top:-3px!important}clr-checkbox-wrapper{transition:opacity .3s}clr-checkbox-wrapper.disabled{opacity:.5}.collection-breadcrumbs{list-style-type:none;background-color:var(--color-component-bg-200);padding:2px 6px;margin-bottom:6px;border-radius:var(--clr-global-borderradius)}.collection-breadcrumbs li{font-size:.65rem;display:inline-block;margin-inline-end:10px}.collection-breadcrumbs li:last-child{font-weight:600}.collection-breadcrumbs li:not(:last-child):after{content:\"\\203a\";top:0;color:var(--color-grey-400);margin-inline-start:10px}\n"] }]
2098
2098
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.DataService }, { type: i2.FormBuilder }, { type: i1.NotificationService }, { type: i1.ModalService }, { type: i1.LocalStorageService }]; }, propDecorators: { contentsComponent: [{
2099
2099
  type: ViewChild,
2100
2100
  args: ['collectionContents']
@@ -3700,7 +3700,7 @@ class ProductDetailComponent extends TypedBaseDetailComponent {
3700
3700
  return this.productDetailService.updateProduct({
3701
3701
  product,
3702
3702
  languageCode,
3703
- autoUpdate: this.detailForm.get(['product', 'autoUpdateVariantNames'])?.value ?? false,
3703
+ autoUpdate: this.detailForm.get(['autoUpdateVariantNames'])?.value ?? false,
3704
3704
  productInput,
3705
3705
  variantsInput,
3706
3706
  });