@vendure/admin-ui 2.1.4 → 2.2.0-next.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/catalog/components/product-list/product-list.component.d.ts +1 -1
  2. package/catalog/components/product-variant-list/product-variant-list.component.d.ts +1 -1
  3. package/core/common/utilities/custom-field-default-value.d.ts +1 -1
  4. package/core/common/version.d.ts +1 -1
  5. package/core/components/app-shell/app-shell.component.d.ts +1 -0
  6. package/core/components/ui-language-switcher-dialog/ui-language-switcher-dialog.component.d.ts +9 -3
  7. package/core/core.module.d.ts +1 -1
  8. package/core/providers/i18n/i18n.service.d.ts +6 -0
  9. package/core/shared/components/order-state-label/order-state-label.component.d.ts +1 -1
  10. package/core/shared/dynamic-form-inputs/default-form-inputs.d.ts +1 -1
  11. package/esm2022/core/common/utilities/configurable-operation-utils.mjs +1 -1
  12. package/esm2022/core/common/version.mjs +2 -2
  13. package/esm2022/core/components/app-shell/app-shell.component.mjs +15 -10
  14. package/esm2022/core/components/ui-language-switcher-dialog/ui-language-switcher-dialog.component.mjs +42 -273
  15. package/esm2022/core/core.module.mjs +13 -5
  16. package/esm2022/core/providers/i18n/i18n.service.mjs +11 -1
  17. package/esm2022/core/providers/localization/localization.service.mjs +4 -4
  18. package/esm2022/core/shared/components/asset-preview/asset-preview.component.mjs +3 -3
  19. package/esm2022/core/shared/components/configurable-input/configurable-input.component.mjs +1 -1
  20. package/esm2022/core/shared/components/datetime-picker/datetime-picker.service.mjs +1 -1
  21. package/esm2022/marketing/components/promotion-detail/promotion-detail.component.mjs +8 -8
  22. package/esm2022/react/react-hooks/use-query.mjs +61 -1
  23. package/esm2022/settings/components/payment-method-detail/payment-method-detail.component.mjs +8 -8
  24. package/fesm2022/vendure-admin-ui-core.mjs +66 -276
  25. package/fesm2022/vendure-admin-ui-core.mjs.map +1 -1
  26. package/fesm2022/vendure-admin-ui-marketing.mjs +7 -7
  27. package/fesm2022/vendure-admin-ui-marketing.mjs.map +1 -1
  28. package/fesm2022/vendure-admin-ui-react.mjs +61 -1
  29. package/fesm2022/vendure-admin-ui-react.mjs.map +1 -1
  30. package/fesm2022/vendure-admin-ui-settings.mjs +7 -7
  31. package/fesm2022/vendure-admin-ui-settings.mjs.map +1 -1
  32. package/package.json +14 -14
  33. package/react/react-hooks/use-query.d.ts +59 -0
  34. package/settings/components/stock-location-list/stock-location-list.component.d.ts +1 -1
  35. package/static/i18n-messages/fa.json +1 -1
  36. package/static/vendure-ui-config.json +260 -5
@@ -9,7 +9,7 @@ export declare class ProductListComponent extends TypedBaseListComponent<typeof
9
9
  pendingSearchIndexUpdates: number;
10
10
  readonly customFields: import("@vendure/admin-ui/core").CustomFieldConfig[];
11
11
  readonly filters: import("@vendure/admin-ui/core").DataTableFilterCollection<import("@vendure/admin-ui/core").ProductFilterParameter>;
12
- readonly sorts: import("@vendure/admin-ui/core").DataTableSortCollection<import("@vendure/admin-ui/core").ProductSortParameter, ["name" | "id" | "createdAt" | "updatedAt" | "slug"]>;
12
+ readonly sorts: import("@vendure/admin-ui/core").DataTableSortCollection<import("@vendure/admin-ui/core").ProductSortParameter, ["name" | "slug" | "id" | "createdAt" | "updatedAt"]>;
13
13
  constructor(dataService: DataService, modalService: ModalService, notificationService: NotificationService, jobQueueService: JobQueueService);
14
14
  rebuildSearchIndex(): void;
15
15
  deleteProduct(productId: string): void;
@@ -7,7 +7,7 @@ export declare class ProductVariantListComponent extends TypedBaseListComponent<
7
7
  dataTableId: DataTableLocationId | undefined;
8
8
  readonly customFields: import("@vendure/admin-ui/core").CustomFieldConfig[];
9
9
  readonly filters: import("@vendure/admin-ui/core").DataTableFilterCollection<import("@vendure/admin-ui/core").ProductVariantFilterParameter>;
10
- readonly sorts: import("@vendure/admin-ui/core").DataTableSortCollection<import("@vendure/admin-ui/core").ProductVariantSortParameter, ["name" | "price" | "sku" | "id" | "createdAt" | "updatedAt" | "priceWithTax"]>;
10
+ readonly sorts: import("@vendure/admin-ui/core").DataTableSortCollection<import("@vendure/admin-ui/core").ProductVariantSortParameter, ["name" | "id" | "createdAt" | "updatedAt" | "price" | "sku" | "priceWithTax"]>;
11
11
  constructor();
12
12
  static ɵfac: i0.ɵɵFactoryDeclaration<ProductVariantListComponent, never>;
13
13
  static ɵcmp: i0.ɵɵComponentDeclaration<ProductVariantListComponent, "vdr-product-variant-list", never, { "productId": { "alias": "productId"; "required": false; }; "hideLanguageSelect": { "alias": "hideLanguageSelect"; "required": false; }; "dataTableId": { "alias": "dataTableId"; "required": false; }; }, {}, never, never, false, never>;
@@ -3,4 +3,4 @@ import { CustomFieldConfig } from '../generated-types';
3
3
  export declare function getCustomFieldsDefaults(customFieldConfig: CustomFieldConfig[]): {
4
4
  [key: string]: ReturnType<typeof getDefaultValue>;
5
5
  };
6
- export declare function getDefaultValue(type: CustomFieldType, isNullable?: boolean): false | 0 | "" | Date | null;
6
+ export declare function getDefaultValue(type: CustomFieldType, isNullable?: boolean): false | "" | 0 | Date | null;
@@ -1 +1 @@
1
- export declare const ADMIN_UI_VERSION = "2.1.4";
1
+ export declare const ADMIN_UI_VERSION = "2.2.0-next.0";
@@ -24,6 +24,7 @@ export declare class AppShellComponent implements OnInit {
24
24
  uiLanguageAndLocale$: LocalizationLanguageCodeType;
25
25
  direction$: LocalizationDirectionType;
26
26
  availableLanguages: LanguageCode[];
27
+ availableLocales: string[];
27
28
  hideVendureBranding: boolean | undefined;
28
29
  pageTitle$: Observable<string>;
29
30
  mainNavExpanded$: Observable<boolean>;
@@ -1,8 +1,13 @@
1
- import { OnInit } from '@angular/core';
1
+ import { ChangeDetectorRef, OnDestroy, OnInit } from '@angular/core';
2
2
  import { CurrencyCode, LanguageCode } from '../../common/generated-types';
3
3
  import { Dialog } from '../../providers/modal/modal.types';
4
+ import { DataService } from '../../data/providers/data.service';
4
5
  import * as i0 from "@angular/core";
5
- export declare class UiLanguageSwitcherDialogComponent implements Dialog<[LanguageCode, string | undefined]>, OnInit {
6
+ export declare class UiLanguageSwitcherDialogComponent implements Dialog<[LanguageCode, string | undefined]>, OnInit, OnDestroy {
7
+ private dataService;
8
+ private changeDetector;
9
+ isLoading: boolean;
10
+ private destroy$;
6
11
  resolveWith: (result?: [LanguageCode, string | undefined]) => void;
7
12
  currentLanguage: LanguageCode;
8
13
  availableLanguages: LanguageCode[];
@@ -13,8 +18,9 @@ export declare class UiLanguageSwitcherDialogComponent implements Dialog<[Langua
13
18
  previewLocale: string;
14
19
  readonly browserDefaultLocale: string | undefined;
15
20
  readonly now: string;
16
- constructor();
21
+ constructor(dataService: DataService, changeDetector: ChangeDetectorRef);
17
22
  ngOnInit(): void;
23
+ ngOnDestroy(): void;
18
24
  updatePreviewLocale(): void;
19
25
  setLanguage(): void;
20
26
  cancel(): void;
@@ -33,7 +33,7 @@ export declare class CoreModule {
33
33
  private dataService;
34
34
  private notificationService;
35
35
  constructor(i18nService: I18nService, localStorageService: LocalStorageService, titleService: Title, alertsService: AlertsService, dataService: DataService, notificationService: NotificationService);
36
- private initUiLanguages;
36
+ private initUiLanguagesAndLocales;
37
37
  private initUiTitle;
38
38
  private initAlerts;
39
39
  static ɵfac: i0.ɵɵFactoryDeclaration<CoreModule, never>;
@@ -5,8 +5,10 @@ import * as i0 from "@angular/core";
5
5
  export declare class I18nService {
6
6
  private ngxTranslate;
7
7
  private document;
8
+ _availableLocales: string[];
8
9
  _availableLanguages: LanguageCode[];
9
10
  get availableLanguages(): LanguageCode[];
11
+ get availableLocales(): string[];
10
12
  constructor(ngxTranslate: TranslateService, document: Document);
11
13
  /**
12
14
  * Set the default language
@@ -20,6 +22,10 @@ export declare class I18nService {
20
22
  * Set the available UI languages
21
23
  */
22
24
  setAvailableLanguages(languages: LanguageCode[]): void;
25
+ /**
26
+ * Set the available UI locales
27
+ */
28
+ setAvailableLocales(locales: string[]): void;
23
29
  /**
24
30
  * Translate the given key.
25
31
  */
@@ -11,7 +11,7 @@ import * as i0 from "@angular/core";
11
11
  */
12
12
  export declare class OrderStateLabelComponent {
13
13
  state: string;
14
- get chipColorType(): "success" | "warning" | "error" | "";
14
+ get chipColorType(): "" | "success" | "error" | "warning";
15
15
  static ɵfac: i0.ɵɵFactoryDeclaration<OrderStateLabelComponent, never>;
16
16
  static ɵcmp: i0.ɵɵComponentDeclaration<OrderStateLabelComponent, "vdr-order-state-label", never, { "state": { "alias": "state"; "required": false; }; }, {}, never, ["*"], false, never>;
17
17
  }
@@ -8,7 +8,7 @@ import { PasswordFormInputComponent } from './password-form-input/password-form-
8
8
  import { ProductMultiSelectorFormInputComponent } from './product-multi-selector-form-input/product-multi-selector-form-input.component';
9
9
  import { ProductSelectorFormInputComponent } from './product-selector-form-input/product-selector-form-input.component';
10
10
  import { SelectFormInputComponent } from './select-form-input/select-form-input.component';
11
- export declare const defaultFormInputs: (typeof ProductSelectorFormInputComponent | typeof CustomerGroupFormInputComponent | typeof PasswordFormInputComponent | typeof CurrencyFormInputComponent | typeof SelectFormInputComponent | typeof JsonEditorFormInputComponent | typeof HtmlEditorFormInputComponent | typeof ProductMultiSelectorFormInputComponent | typeof CombinationModeFormInputComponent)[];
11
+ export declare const defaultFormInputs: (typeof SelectFormInputComponent | typeof ProductSelectorFormInputComponent | typeof ProductMultiSelectorFormInputComponent | typeof PasswordFormInputComponent | typeof CustomerGroupFormInputComponent | typeof CurrencyFormInputComponent | typeof CombinationModeFormInputComponent | typeof JsonEditorFormInputComponent | typeof HtmlEditorFormInputComponent)[];
12
12
  /**
13
13
  * Registers the default form input components.
14
14
  */
@@ -113,4 +113,4 @@ export function getDefaultConfigArgValue(arg) {
113
113
  assertNever(type);
114
114
  }
115
115
  }
116
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhYmxlLW9wZXJhdGlvbi11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29yZS9zcmMvY29tbW9uL3V0aWxpdGllcy9jb25maWd1cmFibGUtb3BlcmF0aW9uLXV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQVMvRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLGlCQUFpQixDQUFDLEtBQVU7SUFDeEMsSUFBSTtRQUNBLE1BQU0sTUFBTSxHQUFHLEtBQUssSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUM3RCxJQUFJLE1BQU0sSUFBSSxPQUFPLE1BQU0sS0FBSyxRQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ2hFLDJFQUEyRTtZQUMzRSx3RUFBd0U7WUFDeEUsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ2pDO2FBQU07WUFDSCxPQUFPLE1BQU0sQ0FBQztTQUNqQjtLQUNKO0lBQUMsT0FBTyxDQUFNLEVBQUU7UUFDYixPQUFPLEtBQUssQ0FBQztLQUNoQjtBQUNMLENBQUM7QUFFRCxNQUFNLFVBQVUsb0JBQW9CLENBQUMsS0FBVTtJQUMzQyxPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO0FBQ25GLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxnQ0FBZ0MsQ0FDNUMsR0FBb0M7SUFFcEMsT0FBTztRQUNILEdB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O1FBQ2hCLEtBQUssT0FBTyxDQUFDO1FBQ2IsS0FBSyxJQUFJLENBQUM7UUFDVixLQUFLLEtBQUs7WUFDTixPQUFPLElBQUksQ0FBQztRQUNoQixLQUFLLFNBQVM7WUFDVixPQUFPLEtBQUssQ0FBQztRQUNqQjtZQUNJLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUN6QjtBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25maWdBcmdUeXBlIH0gZnJvbSAnQHZlbmR1cmUvY29tbW9uL2xpYi9zaGFyZWQtdHlwZXMnO1xuaW1wb3J0IHsgYXNzZXJ0TmV2ZXIgfSBmcm9tICdAdmVuZHVyZS9jb21tb24vbGliL3NoYXJlZC11dGlscyc7XG5cbmltcG9ydCB7XG4gICAgQ29uZmlnQXJnRGVmaW5pdGlvbixcbiAgICBDb25maWd1cmFibGVPcGVyYXRpb24sXG4gICAgQ29uZmlndXJhYmxlT3BlcmF0aW9uRGVmaW5pdGlvbixcbiAgICBDb25maWd1cmFibGVPcGVyYXRpb25JbnB1dCxcbn0gZnJvbSAnLi4vZ2VuZXJhdGVkLXR5cGVzJztcblxuLyoqXG4gKiBDb25maWdBcmcgdmFsdWVzIGFyZSBhbHdheXMgc3RvcmVkIGFzIHN0cmluZ3MuIElmIHRoZXkgYXJlIG5vdCBwcmltaXRpdmVzLCB0aGVuXG4gKiB0aGV5IGFyZSBKU09OLWVuY29kZWQuIFRoaXMgZnVuY3Rpb24gdW53cmFwcyB0aGVtIGJhY2sgaW50byB0aGVpciBvcmlnaW5hbFxuICogZGF0YSB0eXBlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q29uZmlnQXJnVmFsdWUodmFsdWU6IGFueSkge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHZhbHVlICE9IG51bGwgPyBKU09OLnBhcnNlKHZhbHVlKSA6IHVuZGVmaW5lZDtcbiAgICAgICAgaWYgKHJlc3VsdCAmJiB0eXBlb2YgcmVzdWx0ID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheShyZXN1bHQpKSB7XG4gICAgICAgICAgICAvLyBUaGVyZSBpcyBhbiBlZGdlLWNhc2Ugd2hlcmUgdGhlIHZhbHVlIGlzIGEgdmFsaWQgSlNPTi1lbmNvZGVkIHN0cmluZyBhbmRcbiAgICAgICAgICAgIC8vIHdpbGwgZ2V0IHBhcnNlZCBhcyBhbiBvYmplY3QsIGJ1dCB3ZSBhY3R1YWxseSB3YW50IGl0IHRvIGJlIGEgc3RyaW5nLlxuICAgICAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHJlc3VsdCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9XG4gICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlbmNvZGVDb25maWdBcmdWYWx1ZSh2YWx1ZTogYW55KTogc3RyaW5nIHtcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyBKU09OLnN0cmluZ2lmeSh2YWx1ZSkgOiAodmFsdWUgPz8gJycpLnRvU3RyaW5nKCk7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBlbXB0eSBDb25maWd1cmFibGVPcGVyYXRpb24gb2JqZWN0IGJhc2VkIG9uIHRoZSBkZWZpbml0aW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY29uZmlndXJhYmxlRGVmaW5pdGlvblRvSW5zdGFuY2UoXG4gICAgZGVmOiBDb25maWd1cmFibGVPcGVyYXRpb25EZWZpbml0aW9uLFxuKTogQ29uZmlndXJhYmxlT3BlcmF0aW9uIHtcbiAgICByZXR1cm4ge1xuICAgICAgICAuLi5kZWYsXG4gICAgICAgIGFyZ3M6IGRlZi5hcmdzLm1hcChhcmcgPT4gKHtcbiAgICAgICAgICAgIC4uLmFyZyxcbiAgICAgICAgICAgIHZhbHVlOiBnZXREZWZhdWx0Q29uZmlnQXJnVmFsdWUoYXJnKSxcbiAgICAgICAgfSkpLFxuICAgIH0gYXMgQ29uZmlndXJhYmxlT3BlcmF0aW9uO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0aGUgdHlwZTpcbiAqIGBgYFxuICoge1xuICogICAgIGNvZGU6ICdteS1vcGVyYXRpb24nLFxuICogICAgIGFyZ3M6IHtcbiAqICAgICAgICAgc29tZVByb3BlcnR5OiAnZm9vJ1xuICogICAgIH1cbiAqIH1cbiAqIGBgYFxuICogdG8gdGhlIGZvcm1hdCBkZWZpbmVkIGJ5IHRoZSBDb25maWd1cmFibGVPcGVyYXRpb25JbnB1dCBHcmFwaFFMIGlucHV0IHR5cGU6XG4gKiBgYGBcbiAqIHtcbiAqICAgICBjb2RlOiAnbXktb3BlcmF0aW9uJyxcbiAqICAgICBhcmd1bWVudHM6IFtcbiAqICAgICAgICAgeyBuYW1lOiAnc29tZVByb3BlcnR5JywgdmFsdWU6ICdmb28nIH1cbiAqICAgICBdXG4gKiB9XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvQ29uZmlndXJhYmxlT3BlcmF0aW9uSW5wdXQoXG4gICAgb3BlcmF0aW9uOiBDb25maWd1cmFibGVPcGVyYXRpb24sXG4gICAgZm9ybVZhbHVlT3BlcmF0aW9uczogeyBhcmdzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHwgQXJyYXk8eyBuYW1lOiBzdHJpbmc7IHZhbHVlOiBzdHJpbmcgfT4gfSxcbik6IENvbmZpZ3VyYWJsZU9wZXJhdGlvbklucHV0IHtcbiAgICBjb25zdCBhcmdzQXJyYXkgPSBBcnJheS5pc0FycmF5KGZvcm1WYWx1ZU9wZXJhdGlvbnMuYXJncykgPyBmb3JtVmFsdWVPcGVyYXRpb25zLmFyZ3MgOiB1bmRlZmluZWQ7XG4gICAgY29uc3QgYXJnc01hcCA9ICFBcnJheS5pc0FycmF5KGZvcm1WYWx1ZU9wZXJhdGlvbnMuYXJncykgPyBmb3JtVmFsdWVPcGVyYXRpb25zLmFyZ3MgOiB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgY29kZTogb3BlcmF0aW9uLmNvZGUsXG4gICAgICAgIGFyZ3VtZW50czogb3BlcmF0aW9uLmFyZ3MubWFwKCh7IG5hbWUsIHZhbHVlIH0sIGopID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGZvcm1WYWx1ZSA9IGFyZ3NBcnJheT8uZmluZChhcmcgPT4gYXJnLm5hbWUgPT09IG5hbWUpPy52YWx1ZSA/PyBhcmdzTWFwPy5bbmFtZV07XG4gICAgICAgICAgICBpZiAoZm9ybVZhbHVlID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBmaW5kIGFuIGFyZ3VtZW50IHZhbHVlIGZvciB0aGUga2V5IFwiJHtuYW1lfVwiYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICAgICAgdmFsdWU6IGZvcm1WYWx1ZT8uaGFzT3duUHJvcGVydHkoJ3ZhbHVlJylcbiAgICAgICAgICAgICAgICAgICAgPyBlbmNvZGVDb25maWdBcmdWYWx1ZSgoZm9ybVZhbHVlIGFzIGFueSkudmFsdWUpXG4gICAgICAgICAgICAgICAgICAgIDogZW5jb2RlQ29uZmlnQXJnVmFsdWUoZm9ybVZhbHVlKSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0pLFxuICAgIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb25maWd1cmFibGVPcGVyYXRpb25WYWx1ZUlzVmFsaWQoXG4gICAgZGVmPzogQ29uZmlndXJhYmxlT3BlcmF0aW9uRGVmaW5pdGlvbixcbiAgICB2YWx1ZT86IHsgY29kZTogc3RyaW5nOyBhcmdzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9IH0sXG4pIHtcbiAgICBpZiAoIWRlZiB8fCAhdmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAoZGVmLmNvZGUgIT09IHZhbHVlLmNvZGUpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IGFyZ0RlZiBvZiBkZWYuYXJncykge1xuICAgICAgICBjb25zdCBhcmdWYWwgPSB2YWx1ZS5hcmdzW2FyZ0RlZi5uYW1lXTtcbiAgICAgICAgaWYgKGFyZ0RlZi5yZXF1aXJlZCAmJiAoYXJnVmFsID09IG51bGwgfHwgYXJnVmFsID09PSAnJyB8fCBhcmdWYWwgPT09ICcwJykpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGEgZGVmYXVsdCB2YWx1ZSBiYXNlZCBvbiB0aGUgdHlwZSBvZiB0aGUgY29uZmlnIGFyZy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldERlZmF1bHRDb25maWdBcmdWYWx1ZShhcmc6IENvbmZpZ0FyZ0RlZmluaXRpb24pOiBhbnkge1xuICAgIGlmIChhcmcubGlzdCkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgfVxuICAgIGlmIChhcmcuZGVmYXVsdFZhbHVlICE9IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIGFyZy5kZWZhdWx0VmFsdWU7XG4gICAgfVxuICAgIGNvbnN0IHR5cGUgPSBhcmcudHlwZSBhcyBDb25maWdBcmdUeXBlO1xuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICBjYXNlICdkYXRldGltZSc6XG4gICAgICAgIGNhc2UgJ2Zsb2F0JzpcbiAgICAgICAgY2FzZSAnSUQnOlxuICAgICAgICBjYXNlICdpbnQnOlxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgYXNzZXJ0TmV2ZXIodHlwZSk7XG4gICAgfVxufVxuIl19
116
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhYmxlLW9wZXJhdGlvbi11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29yZS9zcmMvY29tbW9uL3V0aWxpdGllcy9jb25maWd1cmFibGUtb3BlcmF0aW9uLXV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQVMvRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLGlCQUFpQixDQUFDLEtBQVU7SUFDeEMsSUFBSTtRQUNBLE1BQU0sTUFBTSxHQUFHLEtBQUssSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUM3RCxJQUFJLE1BQU0sSUFBSSxPQUFPLE1BQU0sS0FBSyxRQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ2hFLDJFQUEyRTtZQUMzRSx3RUFBd0U7WUFDeEUsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ2pDO2FBQU07WUFDSCxPQUFPLE1BQU0sQ0FBQztTQUNqQjtLQUNKO0lBQUMsT0FBTyxDQUFNLEVBQUU7UUFDYixPQUFPLEtBQUssQ0FBQztLQUNoQjtBQUNMLENBQUM7QUFFRCxNQUFNLFVBQVUsb0JBQW9CLENBQUMsS0FBVTtJQUMzQyxPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO0FBQ25GLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxnQ0FBZ0MsQ0FDNUMsR0FBb0M7SUFFcEMsT0FBTztRQUNILEdB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O1FBQ2hCLEtBQUssT0FBTyxDQUFDO1FBQ2IsS0FBSyxJQUFJLENBQUM7UUFDVixLQUFLLEtBQUs7WUFDTixPQUFPLElBQUksQ0FBQztRQUNoQixLQUFLLFNBQVM7WUFDVixPQUFPLEtBQUssQ0FBQztRQUNqQjtZQUNJLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUN6QjtBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25maWdBcmdUeXBlIH0gZnJvbSAnQHZlbmR1cmUvY29tbW9uL2xpYi9zaGFyZWQtdHlwZXMnO1xyXG5pbXBvcnQgeyBhc3NlcnROZXZlciB9IGZyb20gJ0B2ZW5kdXJlL2NvbW1vbi9saWIvc2hhcmVkLXV0aWxzJztcclxuXHJcbmltcG9ydCB7XHJcbiAgICBDb25maWdBcmdEZWZpbml0aW9uLFxyXG4gICAgQ29uZmlndXJhYmxlT3BlcmF0aW9uLFxyXG4gICAgQ29uZmlndXJhYmxlT3BlcmF0aW9uRGVmaW5pdGlvbixcclxuICAgIENvbmZpZ3VyYWJsZU9wZXJhdGlvbklucHV0LFxyXG59IGZyb20gJy4uL2dlbmVyYXRlZC10eXBlcyc7XHJcblxyXG4vKipcclxuICogQ29uZmlnQXJnIHZhbHVlcyBhcmUgYWx3YXlzIHN0b3JlZCBhcyBzdHJpbmdzLiBJZiB0aGV5IGFyZSBub3QgcHJpbWl0aXZlcywgdGhlblxyXG4gKiB0aGV5IGFyZSBKU09OLWVuY29kZWQuIFRoaXMgZnVuY3Rpb24gdW53cmFwcyB0aGVtIGJhY2sgaW50byB0aGVpciBvcmlnaW5hbFxyXG4gKiBkYXRhIHR5cGUuXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q29uZmlnQXJnVmFsdWUodmFsdWU6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgICBjb25zdCByZXN1bHQgPSB2YWx1ZSAhPSBudWxsID8gSlNPTi5wYXJzZSh2YWx1ZSkgOiB1bmRlZmluZWQ7XHJcbiAgICAgICAgaWYgKHJlc3VsdCAmJiB0eXBlb2YgcmVzdWx0ID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheShyZXN1bHQpKSB7XHJcbiAgICAgICAgICAgIC8vIFRoZXJlIGlzIGFuIGVkZ2UtY2FzZSB3aGVyZSB0aGUgdmFsdWUgaXMgYSB2YWxpZCBKU09OLWVuY29kZWQgc3RyaW5nIGFuZFxyXG4gICAgICAgICAgICAvLyB3aWxsIGdldCBwYXJzZWQgYXMgYW4gb2JqZWN0LCBidXQgd2UgYWN0dWFsbHkgd2FudCBpdCB0byBiZSBhIHN0cmluZy5cclxuICAgICAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHJlc3VsdCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgICAgICB9XHJcbiAgICB9IGNhdGNoIChlOiBhbnkpIHtcclxuICAgICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBlbmNvZGVDb25maWdBcmdWYWx1ZSh2YWx1ZTogYW55KTogc3RyaW5nIHtcclxuICAgIHJldHVybiBBcnJheS5pc0FycmF5KHZhbHVlKSA/IEpTT04uc3RyaW5naWZ5KHZhbHVlKSA6ICh2YWx1ZSA/PyAnJykudG9TdHJpbmcoKTtcclxufVxyXG5cclxuLyoqXHJcbiAqIENyZWF0ZXMgYW4gZW1wdHkgQ29uZmlndXJhYmxlT3BlcmF0aW9uIG9iamVjdCBiYXNlZCBvbiB0aGUgZGVmaW5pdGlvbi5cclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBjb25maWd1cmFibGVEZWZpbml0aW9uVG9JbnN0YW5jZShcclxuICAgIGRlZjogQ29uZmlndXJhYmxlT3BlcmF0aW9uRGVmaW5pdGlvbixcclxuKTogQ29uZmlndXJhYmxlT3BlcmF0aW9uIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgLi4uZGVmLFxyXG4gICAgICAgIGFyZ3M6IGRlZi5hcmdzLm1hcChhcmcgPT4gKHtcclxuICAgICAgICAgICAgLi4uYXJnLFxyXG4gICAgICAgICAgICB2YWx1ZTogZ2V0RGVmYXVsdENvbmZpZ0FyZ1ZhbHVlKGFyZyksXHJcbiAgICAgICAgfSkpLFxyXG4gICAgfSBhcyBDb25maWd1cmFibGVPcGVyYXRpb247XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdGhlIHR5cGU6XHJcbiAqIGBgYFxyXG4gKiB7XHJcbiAqICAgICBjb2RlOiAnbXktb3BlcmF0aW9uJyxcclxuICogICAgIGFyZ3M6IHtcclxuICogICAgICAgICBzb21lUHJvcGVydHk6ICdmb28nXHJcbiAqICAgICB9XHJcbiAqIH1cclxuICogYGBgXHJcbiAqIHRvIHRoZSBmb3JtYXQgZGVmaW5lZCBieSB0aGUgQ29uZmlndXJhYmxlT3BlcmF0aW9uSW5wdXQgR3JhcGhRTCBpbnB1dCB0eXBlOlxyXG4gKiBgYGBcclxuICoge1xyXG4gKiAgICAgY29kZTogJ215LW9wZXJhdGlvbicsXHJcbiAqICAgICBhcmd1bWVudHM6IFtcclxuICogICAgICAgICB7IG5hbWU6ICdzb21lUHJvcGVydHknLCB2YWx1ZTogJ2ZvbycgfVxyXG4gKiAgICAgXVxyXG4gKiB9XHJcbiAqIGBgYFxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIHRvQ29uZmlndXJhYmxlT3BlcmF0aW9uSW5wdXQoXHJcbiAgICBvcGVyYXRpb246IENvbmZpZ3VyYWJsZU9wZXJhdGlvbixcclxuICAgIGZvcm1WYWx1ZU9wZXJhdGlvbnM6IHsgYXJnczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB8IEFycmF5PHsgbmFtZTogc3RyaW5nOyB2YWx1ZTogc3RyaW5nIH0+IH0sXHJcbik6IENvbmZpZ3VyYWJsZU9wZXJhdGlvbklucHV0IHtcclxuICAgIGNvbnN0IGFyZ3NBcnJheSA9IEFycmF5LmlzQXJyYXkoZm9ybVZhbHVlT3BlcmF0aW9ucy5hcmdzKSA/IGZvcm1WYWx1ZU9wZXJhdGlvbnMuYXJncyA6IHVuZGVmaW5lZDtcclxuICAgIGNvbnN0IGFyZ3NNYXAgPSAhQXJyYXkuaXNBcnJheShmb3JtVmFsdWVPcGVyYXRpb25zLmFyZ3MpID8gZm9ybVZhbHVlT3BlcmF0aW9ucy5hcmdzIDogdW5kZWZpbmVkO1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICBjb2RlOiBvcGVyYXRpb24uY29kZSxcclxuICAgICAgICBhcmd1bWVudHM6IG9wZXJhdGlvbi5hcmdzLm1hcCgoeyBuYW1lLCB2YWx1ZSB9LCBqKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGZvcm1WYWx1ZSA9IGFyZ3NBcnJheT8uZmluZChhcmcgPT4gYXJnLm5hbWUgPT09IG5hbWUpPy52YWx1ZSA/PyBhcmdzTWFwPy5bbmFtZV07XHJcbiAgICAgICAgICAgIGlmIChmb3JtVmFsdWUgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgZmluZCBhbiBhcmd1bWVudCB2YWx1ZSBmb3IgdGhlIGtleSBcIiR7bmFtZX1cImApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICBuYW1lLFxyXG4gICAgICAgICAgICAgICAgdmFsdWU6IGZvcm1WYWx1ZT8uaGFzT3duUHJvcGVydHkoJ3ZhbHVlJylcclxuICAgICAgICAgICAgICAgICAgICA/IGVuY29kZUNvbmZpZ0FyZ1ZhbHVlKChmb3JtVmFsdWUgYXMgYW55KS52YWx1ZSlcclxuICAgICAgICAgICAgICAgICAgICA6IGVuY29kZUNvbmZpZ0FyZ1ZhbHVlKGZvcm1WYWx1ZSksXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfSksXHJcbiAgICB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY29uZmlndXJhYmxlT3BlcmF0aW9uVmFsdWVJc1ZhbGlkKFxyXG4gICAgZGVmPzogQ29uZmlndXJhYmxlT3BlcmF0aW9uRGVmaW5pdGlvbixcclxuICAgIHZhbHVlPzogeyBjb2RlOiBzdHJpbmc7IGFyZ3M6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gfSxcclxuKSB7XHJcbiAgICBpZiAoIWRlZiB8fCAhdmFsdWUpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBpZiAoZGVmLmNvZGUgIT09IHZhbHVlLmNvZGUpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBmb3IgKGNvbnN0IGFyZ0RlZiBvZiBkZWYuYXJncykge1xyXG4gICAgICAgIGNvbnN0IGFyZ1ZhbCA9IHZhbHVlLmFyZ3NbYXJnRGVmLm5hbWVdO1xyXG4gICAgICAgIGlmIChhcmdEZWYucmVxdWlyZWQgJiYgKGFyZ1ZhbCA9PSBudWxsIHx8IGFyZ1ZhbCA9PT0gJycgfHwgYXJnVmFsID09PSAnMCcpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxufVxyXG5cclxuLyoqXHJcbiAqIFJldHVybnMgYSBkZWZhdWx0IHZhbHVlIGJhc2VkIG9uIHRoZSB0eXBlIG9mIHRoZSBjb25maWcgYXJnLlxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGdldERlZmF1bHRDb25maWdBcmdWYWx1ZShhcmc6IENvbmZpZ0FyZ0RlZmluaXRpb24pOiBhbnkge1xyXG4gICAgaWYgKGFyZy5saXN0KSB7XHJcbiAgICAgICAgcmV0dXJuIFtdO1xyXG4gICAgfVxyXG4gICAgaWYgKGFyZy5kZWZhdWx0VmFsdWUgIT0gbnVsbCkge1xyXG4gICAgICAgIHJldHVybiBhcmcuZGVmYXVsdFZhbHVlO1xyXG4gICAgfVxyXG4gICAgY29uc3QgdHlwZSA9IGFyZy50eXBlIGFzIENvbmZpZ0FyZ1R5cGU7XHJcbiAgICBzd2l0Y2ggKHR5cGUpIHtcclxuICAgICAgICBjYXNlICdzdHJpbmcnOlxyXG4gICAgICAgIGNhc2UgJ2RhdGV0aW1lJzpcclxuICAgICAgICBjYXNlICdmbG9hdCc6XHJcbiAgICAgICAgY2FzZSAnSUQnOlxyXG4gICAgICAgIGNhc2UgJ2ludCc6XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgYXNzZXJ0TmV2ZXIodHlwZSk7XHJcbiAgICB9XHJcbn1cclxuIl19
@@ -1,3 +1,3 @@
1
1
  // Auto-generated by the set-version.js script.
2
- export const ADMIN_UI_VERSION = '2.1.4';
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvY29yZS9zcmMvY29tbW9uL3ZlcnNpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLE9BQU8sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEF1dG8tZ2VuZXJhdGVkIGJ5IHRoZSBzZXQtdmVyc2lvbi5qcyBzY3JpcHQuXG5leHBvcnQgY29uc3QgQURNSU5fVUlfVkVSU0lPTiA9ICcyLjEuNCc7XG4iXX0=
2
+ export const ADMIN_UI_VERSION = '2.2.0-next.0';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvY29yZS9zcmMvY29tbW9uL3ZlcnNpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEF1dG8tZ2VuZXJhdGVkIGJ5IHRoZSBzZXQtdmVyc2lvbi5qcyBzY3JpcHQuXG5leHBvcnQgY29uc3QgQURNSU5fVUlfVkVSU0lPTiA9ICcyLjIuMC1uZXh0LjAnO1xuIl19
@@ -37,6 +37,7 @@ export class AppShellComponent {
37
37
  this.localizationService = localizationService;
38
38
  this.version = ADMIN_UI_VERSION;
39
39
  this.availableLanguages = [];
40
+ this.availableLocales = [];
40
41
  this.hideVendureBranding = getAppConfig().hideVendureBranding;
41
42
  this.devMode = isDevMode();
42
43
  }
@@ -47,6 +48,7 @@ export class AppShellComponent {
47
48
  .userStatus()
48
49
  .single$.pipe(map(data => data.userStatus.username));
49
50
  this.availableLanguages = this.i18nService.availableLanguages;
51
+ this.availableLocales = this.i18nService.availableLocales;
50
52
  this.pageTitle$ = this.breadcrumbService.breadcrumbs$.pipe(map(breadcrumbs => breadcrumbs[breadcrumbs.length - 1].label));
51
53
  this.mainNavExpanded$ = this.dataService.client
52
54
  .uiState()
@@ -54,15 +56,18 @@ export class AppShellComponent {
54
56
  }
55
57
  selectUiLanguage() {
56
58
  this.uiLanguageAndLocale$
57
- .pipe(take(1), switchMap(([currentLanguage, currentLocale]) => this.modalService.fromComponent(UiLanguageSwitcherDialogComponent, {
58
- closable: true,
59
- size: 'lg',
60
- locals: {
61
- availableLanguages: this.availableLanguages,
62
- currentLanguage,
63
- currentLocale,
64
- },
65
- })), switchMap(result => result ? this.dataService.client.setUiLanguage(result[0], result[1]) : EMPTY))
59
+ .pipe(take(1), switchMap(([currentLanguage, currentLocale]) => {
60
+ return this.modalService.fromComponent(UiLanguageSwitcherDialogComponent, {
61
+ closable: true,
62
+ size: 'lg',
63
+ locals: {
64
+ availableLocales: this.availableLocales,
65
+ availableLanguages: this.availableLanguages,
66
+ currentLanguage: currentLanguage,
67
+ currentLocale: currentLocale,
68
+ },
69
+ });
70
+ }), switchMap(result => result ? this.dataService.client.setUiLanguage(result[0], result[1]) : EMPTY))
66
71
  .subscribe(result => {
67
72
  if (result.setUiLanguage) {
68
73
  this.i18nService.setLanguage(result.setUiLanguage);
@@ -95,4 +100,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImpor
95
100
  type: Component,
96
101
  args: [{ selector: 'vdr-app-shell', template: "<div class=\"app-container\" [dir]=\"direction$ | async\">\r\n <div class=\"left-nav\" [class.expanded]=\"mainNavExpanded$ | async\">\r\n <div class=\"branding\">\r\n <a [routerLink]=\"['/']\" *ngIf=\"!hideVendureBranding\"\r\n ><img src=\"assets/logo-top.webp\" class=\"logo\" style=\"max-width: 100px\"\r\n /></a>\r\n <div class=\"collapse-menu\">\r\n <button class=\"\" (click)=\"collapseNav()\">\r\n <clr-icon shape=\"window-close\" size=\"24\"></clr-icon>\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"mx-4\">\r\n <vdr-channel-switcher *vdrIfMultichannel></vdr-channel-switcher>\r\n </div>\r\n <div class=\"main-nav-container\">\r\n <vdr-main-nav (itemClick)=\"collapseNav()\"></vdr-main-nav>\r\n </div>\r\n <div class=\"settings-nav-container\">\r\n <hr />\r\n <vdr-main-nav displayMode=\"settings\" (itemClick)=\"collapseNav()\"></vdr-main-nav>\r\n </div>\r\n <div class=\"mx-2\">\r\n <div *ngIf=\"devMode\" class=\"flex center mb-2\">\r\n <vdr-dropdown>\r\n <button class=\"icon-button dev-mode-button\" vdrDropdownTrigger title=\"DEV MODE\">\r\n <clr-icon shape=\"code\" size=\"24\"></clr-icon> DEV MODE\r\n </button>\r\n <vdr-dropdown-menu>\r\n <div class=\"px-2 py-1\">\r\n <div>Version: {{ version }}</div>\r\n <div>View UI extension points: <kbd>CTRL + U</kbd></div>\r\n </div>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"surface\">\r\n <div class=\"content-container\">\r\n <div class=\"top-bar\">\r\n <div class=\"expand-menu mr-1\">\r\n <button class=\"\" (click)=\"expandNav()\">\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n fill=\"none\"\r\n viewBox=\"0 0 24 24\"\r\n stroke-width=\"1.5\"\r\n stroke=\"currentColor\"\r\n class=\"bars\"\r\n >\r\n <path\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n d=\"M3.75 6.75h16.5M3.75 12h16.5m-16.5 5.25h16.5\"\r\n />\r\n </svg>\r\n </button>\r\n </div>\r\n <div>\r\n <vdr-breadcrumb></vdr-breadcrumb>\r\n </div>\r\n <div class=\"universal-search flex-spacer\"></div>\r\n <div class=\"mx-1\">\r\n <vdr-alerts></vdr-alerts>\r\n </div>\r\n <div>\r\n <vdr-user-menu\r\n [userName]=\"userName$ | async\"\r\n [uiLanguageAndLocale]=\"uiLanguageAndLocale$ | async\"\r\n [availableLanguages]=\"availableLanguages\"\r\n (selectUiLanguage)=\"selectUiLanguage()\"\r\n (logOut)=\"logOut()\"\r\n ></vdr-user-menu>\r\n </div>\r\n </div>\r\n <div class=\"content-area\"><router-outlet></router-outlet></div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".app-container{display:flex;height:100vh;overflow:hidden}.left-nav{background-color:var(--color-left-nav-bg);color:var(--color-left-nav-text);display:flex;flex-direction:column;overflow:hidden;height:100%;border-inline-end:1px solid var(--color-weight-150);z-index:2;width:var(--left-nav-width);max-width:var(--left-nav-width)}@media screen and (max-width: 992px){.left-nav.expanded{position:fixed;inset:0;width:100%;max-width:100%;animation:fade-in .2s ease-in-out forwards}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@media screen and (min-width: 992px){.expand-menu,.collapse-menu{display:none}}.expand-menu button,.collapse-menu button{border:none;padding:calc(var(--space-unit) * 1) calc(var(--space-unit) * 2);background-color:var(--color-page-header-item-bg);border-radius:var(--border-radius-lg);color:var(--color-text-100);display:flex;align-items:center;justify-content:center}.expand-menu .bars,.collapse-menu .bars{width:24px;height:24px}.collapse-menu button{height:40px;background-color:var(--color-weight-200)}.main-nav-container{overflow:auto;flex:1}.settings-nav-container{margin:calc(var(--space-unit) * 3) 0}.settings-nav-container hr{margin:0 calc(var(--space-unit) * 4);margin-bottom:calc(var(--space-unit) * 4);border:1px solid var(--color-weight-150);box-shadow:0 1px 0 var(--color-weight-100)}.logo{max-width:100%}.wordmark{font-weight:700;margin-inline-start:12px;font-size:24px;color:var(--color-primary-500)}@media screen and (max-width: 992px){.wordmark{display:none}}.surface{display:flex;flex-direction:column;flex:1;background-color:var(--color-surface-bg)}.content-container{overflow:auto;min-height:100vh;display:flex;flex-direction:column}.branding{display:flex;align-items:center;justify-content:space-between;min-width:0;padding:calc(var(--space-unit) * 2) calc(var(--space-unit) * 4);padding-inline-end:calc(var(--space-unit) * 1.5)}@media screen and (min-width: 992px){.branding{padding:calc(var(--space-unit) * 4)}}.top-bar{width:100%;display:flex;align-items:center;justify-content:space-between;padding:calc(var(--space-unit) * 2) calc(var(--space-unit) * 1);background-color:var(--color-page-header)}@media screen and (min-width: 992px){.top-bar{padding:calc(var(--space-unit) * 4);padding-inline-start:var(--surface-margin-left)}}.header-actions{align-items:center}.content-area{position:relative;margin-inline-end:auto;flex:1;display:block;width:100%}.dev-mode-button{opacity:.7;font-size:12px}\n"] }]
97
102
  }], ctorParameters: function () { return [{ type: i1.AuthService }, { type: i2.DataService }, { type: i3.Router }, { type: i4.I18nService }, { type: i5.ModalService }, { type: i6.LocalStorageService }, { type: i7.BreadcrumbService }, { type: i8.LocalizationService }]; } });
98
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLXNoZWxsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29yZS9zcmMvY29tcG9uZW50cy9hcHAtc2hlbGwvYXBwLXNoZWxsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29yZS9zcmMvY29tcG9uZW50cy9hcHAtc2hlbGwvYXBwLXNoZWxsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRTdELE9BQU8sRUFBRSxLQUFLLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDekMsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRWhELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBT3hELE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLHNFQUFzRSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBWXpILE1BQU0sT0FBTyxpQkFBaUI7SUFXMUIsWUFDWSxXQUF3QixFQUN4QixXQUF3QixFQUN4QixNQUFjLEVBQ2QsV0FBd0IsRUFDeEIsWUFBMEIsRUFDMUIsbUJBQXdDLEVBQ3hDLGlCQUFvQyxFQUNwQyxtQkFBd0M7UUFQeEMsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFDeEMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQyx3QkFBbUIsR0FB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QyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNsRSxDQUFDO0lBRUQsTUFBTTtRQUNGLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNyQyxNQUFNLEVBQUUsUUFBUSxFQUFFLEdBQUcsWUFBWSxFQUFFLENBQUM7WUFDcEMsSUFBSSxRQUFRLEVBQUU7Z0JBQ1YsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDO2FBQ25DO2lCQUFNO2dCQUNILElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQzthQUNwQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs4R0F2RlEsaUJBQWlCO2tHQUFqQixpQkFBaUIscURDMUI5QixvcUhBaUZBOzsyRkR2RGEsaUJBQWlCO2tCQUw3QixTQUFTOytCQUNJLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGlzRGV2TW9kZSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IEVNUFRZLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IG1hcCwgc3dpdGNoTWFwLCB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuaW1wb3J0IHsgZ2V0QXBwQ29uZmlnIH0gZnJvbSAnLi4vLi4vYXBwLmNvbmZpZyc7XHJcbmltcG9ydCB7IExhbmd1YWdlQ29kZSB9IGZyb20gJy4uLy4uL2NvbW1vbi9nZW5lcmF0ZWQtdHlwZXMnO1xyXG5pbXBvcnQgeyBBRE1JTl9VSV9WRVJTSU9OIH0gZnJvbSAnLi4vLi4vY29tbW9uL3ZlcnNpb24nO1xyXG5pbXBvcnQgeyBEYXRhU2VydmljZSB9IGZyb20gJy4uLy4uL2RhdGEvcHJvdmlkZXJzL2RhdGEuc2VydmljZSc7XHJcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vcHJvdmlkZXJzL2F1dGgvYXV0aC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQnJlYWRjcnVtYlNlcnZpY2UgfSBmcm9tICcuLi8uLi9wcm92aWRlcnMvYnJlYWRjcnVtYi9icmVhZGNydW1iLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBJMThuU2VydmljZSB9IGZyb20gJy4uLy4uL3Byb3ZpZGVycy9pMThuL2kxOG4uc2VydmljZSc7XHJcbmltcG9ydCB7IExvY2FsU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9wcm92aWRlcnMvbG9jYWwtc3RvcmFnZS9sb2NhbC1zdG9yYWdlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNb2RhbFNlcnZpY2UgfSBmcm9tICcuLi8uLi9wcm92aWRlcnMvbW9kYWwvbW9kYWwuc2VydmljZSc7XHJcbmltcG9ydCB7IFVpTGFuZ3VhZ2VTd2l0Y2hlckRpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uL3VpLWxhbmd1YWdlLXN3aXRjaGVyLWRpYWxvZy91aS1sYW5ndWFnZS1zd2l0Y2hlci1kaWFsb2cuY29tcG9uZW50JztcclxuaW1wb3J0IHtcclxuICAgIExvY2FsaXphdGlvbkRpcmVjdGlvblR5cGUsXHJcbiAgICBMb2NhbGl6YXRpb25MYW5ndWFnZUNvZGVUeXBlLFxyXG4gICAgTG9jYWxpemF0aW9uU2VydmljZSxcclxufSBmcm9tICcuLi8uLi9wcm92aWRlcnMvbG9jYWxpemF0aW9uL2xvY2FsaXphdGlvbi5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICd2ZHItYXBwLXNoZWxsJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9hcHAtc2hlbGwuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vYXBwLXNoZWxsLmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBcHBTaGVsbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgICB2ZXJzaW9uID0gQURNSU5fVUlfVkVSU0lPTjtcclxuICAgIHVzZXJOYW1lJDogT2JzZXJ2YWJsZTxzdHJpbmc+O1xyXG4gICAgdWlMYW5ndWFnZUFuZExvY2FsZSQ6IExvY2FsaXphdGlvbkxhbmd1YWdlQ29kZVR5cGU7XHJcbiAgICBkaXJlY3Rpb24kOiBMb2NhbGl6YXRpb25EaXJlY3Rpb25UeXBlO1xyXG4gICAgYXZhaWxhYmxlTGFuZ3VhZ2VzOiBMYW5ndWFnZUNvZGVbXSA9IFtdO1xyXG4gICAgaGlkZVZlbmR1cmVCcmFuZGluZyA9IGdldEFwcENvbmZpZygpLmhpZGVWZW5kdXJlQnJhbmRpbmc7XHJcbiAgICBwYWdlVGl0bGUkOiBPYnNlcnZhYmxlPHN0cmluZz47XHJcbiAgICBtYWluTmF2RXhwYW5kZWQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xyXG4gICAgZGV2TW9kZSA9IGlzRGV2TW9kZSgpO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgZGF0YVNlcnZpY2U6IERhdGFTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICAgICAgcHJpdmF0ZSBpMThuU2VydmljZTogSTE4blNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBtb2RhbFNlcnZpY2U6IE1vZGFsU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIGxvY2FsU3RvcmFnZVNlcnZpY2U6IExvY2FsU3RvcmFnZVNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBicmVhZGNydW1iU2VydmljZTogQnJlYWRjcnVtYlNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBsb2NhbGl6YXRpb25TZXJ2aWNlOiBMb2NhbGl6YXRpb25TZXJ2aWNlLFxyXG4gICAgKSB7fVxyXG5cclxuICAgIG5nT25Jbml0KCkge1xyXG4gICAgICAgIHRoaXMuZGlyZWN0aW9uJCA9IHRoaXMubG9jYWxpemF0aW9uU2VydmljZS5kaXJlY3Rpb24kO1xyXG5cclxuICAgICAgICB0aGlzLnVpTGFuZ3VhZ2VBbmRMb2NhbGUkID0gdGhpcy5sb2NhbGl6YXRpb25TZXJ2aWNlLnVpTGFuZ3VhZ2VBbmRMb2NhbGUkO1xyXG5cclxuICAgICAgICB0aGlzLnVzZXJOYW1lJCA9IHRoaXMuZGF0YVNlcnZpY2UuY2xpZW50XHJcbiAgICAgICAgICAgIC51c2VyU3RhdHVzKClcclxuICAgICAgICAgICAgLnNpbmdsZSQucGlwZShtYXAoZGF0YSA9PiBkYXRhLnVzZXJTdGF0dXMudXNlcm5hbWUpKTtcclxuXHJcbiAgICAgICAgdGhpcy5hdmFpbGFibGVMYW5ndWFnZXMgPSB0aGlzLmkxOG5TZXJ2aWNlLmF2YWlsYWJsZUxhbmd1YWdlcztcclxuXHJcbiAgICAgICAgdGhpcy5wYWdlVGl0bGUkID0gdGhpcy5icmVhZGNydW1iU2VydmljZS5icmVhZGNydW1icyQucGlwZShcclxuICAgICAgICAgICAgbWFwKGJyZWFkY3J1bWJzID0+IGJyZWFkY3J1bWJzW2JyZWFkY3J1bWJzLmxlbmd0aCAtIDFdLmxhYmVsKSxcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICB0aGlzLm1haW5OYXZFeHBhbmRlZCQgPSB0aGlzLmRhdGFTZXJ2aWNlLmNsaWVudFxyXG4gICAgICAgICAgICAudWlTdGF0ZSgpXHJcbiAgICAgICAgICAgIC5zdHJlYW0kLnBpcGUobWFwKCh7IHVpU3RhdGUgfSkgPT4gdWlTdGF0ZS5tYWluTmF2RXhwYW5kZWQpKTtcclxuICAgIH1cclxuXHJcbiAgICBzZWxlY3RVaUxhbmd1YWdlKCkge1xyXG4gICAgICAgIHRoaXMudWlMYW5ndWFnZUFuZExvY2FsZSRcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICB0YWtlKDEpLFxyXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKChbY3VycmVudExhbmd1YWdlLCBjdXJyZW50TG9jYWxlXSkgPT5cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1vZGFsU2VydmljZS5mcm9tQ29tcG9uZW50KFVpTGFuZ3VhZ2VTd2l0Y2hlckRpYWxvZ0NvbXBvbmVudCwge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbG9zYWJsZTogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogJ2xnJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdmFpbGFibGVMYW5ndWFnZXM6IHRoaXMuYXZhaWxhYmxlTGFuZ3VhZ2VzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudExhbmd1YWdlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudExvY2FsZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAocmVzdWx0ID0+XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID8gdGhpcy5kYXRhU2VydmljZS5jbGllbnQuc2V0VWlMYW5ndWFnZShyZXN1bHRbMF0sIHJlc3VsdFsxXSkgOiBFTVBUWSxcclxuICAgICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLnN1YnNjcmliZShyZXN1bHQgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5zZXRVaUxhbmd1YWdlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pMThuU2VydmljZS5zZXRMYW5ndWFnZShyZXN1bHQuc2V0VWlMYW5ndWFnZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2NhbFN0b3JhZ2VTZXJ2aWNlLnNldCgndWlMYW5ndWFnZUNvZGUnLCByZXN1bHQuc2V0VWlMYW5ndWFnZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2NhbFN0b3JhZ2VTZXJ2aWNlLnNldCgndWlMb2NhbGUnLCByZXN1bHQuc2V0VWlMb2NhbGUgPz8gdW5kZWZpbmVkKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZXhwYW5kTmF2KCkge1xyXG4gICAgICAgIHRoaXMuZGF0YVNlcnZpY2UuY2xpZW50LnNldE1haW5OYXZFeHBhbmRlZCh0cnVlKS5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuXHJcbiAgICBjb2xsYXBzZU5hdigpIHtcclxuICAgICAgICB0aGlzLmRhdGFTZXJ2aWNlLmNsaWVudC5zZXRNYWluTmF2RXhwYW5kZWQoZmFsc2UpLnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGxvZ091dCgpIHtcclxuICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLmxvZ091dCgpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHsgbG9naW5VcmwgfSA9IGdldEFwcENvbmZpZygpO1xyXG4gICAgICAgICAgICBpZiAobG9naW5VcmwpIHtcclxuICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gbG9naW5Vcmw7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9sb2dpbiddKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJhcHAtY29udGFpbmVyXCIgW2Rpcl09XCJkaXJlY3Rpb24kIHwgYXN5bmNcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJsZWZ0LW5hdlwiIFtjbGFzcy5leHBhbmRlZF09XCJtYWluTmF2RXhwYW5kZWQkIHwgYXN5bmNcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYnJhbmRpbmdcIj5cclxuICAgICAgICAgICAgPGEgW3JvdXRlckxpbmtdPVwiWycvJ11cIiAqbmdJZj1cIiFoaWRlVmVuZHVyZUJyYW5kaW5nXCJcclxuICAgICAgICAgICAgICAgID48aW1nIHNyYz1cImFzc2V0cy9sb2dvLXRvcC53ZWJwXCIgY2xhc3M9XCJsb2dvXCIgc3R5bGU9XCJtYXgtd2lkdGg6IDEwMHB4XCJcclxuICAgICAgICAgICAgLz48L2E+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xsYXBzZS1tZW51XCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiXCIgKGNsaWNrKT1cImNvbGxhcHNlTmF2KClcIj5cclxuICAgICAgICAgICAgICAgICAgICA8Y2xyLWljb24gc2hhcGU9XCJ3aW5kb3ctY2xvc2VcIiBzaXplPVwiMjRcIj48L2Nsci1pY29uPlxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJteC00XCI+XHJcbiAgICAgICAgICAgIDx2ZHItY2hhbm5lbC1zd2l0Y2hlciAqdmRySWZNdWx0aWNoYW5uZWw+PC92ZHItY2hhbm5lbC1zd2l0Y2hlcj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibWFpbi1uYXYtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgIDx2ZHItbWFpbi1uYXYgKGl0ZW1DbGljayk9XCJjb2xsYXBzZU5hdigpXCI+PC92ZHItbWFpbi1uYXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInNldHRpbmdzLW5hdi1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgPGhyIC8+XHJcbiAgICAgICAgICAgIDx2ZHItbWFpbi1uYXYgZGlzcGxheU1vZGU9XCJzZXR0aW5nc1wiIChpdGVtQ2xpY2spPVwiY29sbGFwc2VOYXYoKVwiPjwvdmRyLW1haW4tbmF2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJteC0yXCI+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJkZXZNb2RlXCIgY2xhc3M9XCJmbGV4IGNlbnRlciBtYi0yXCI+XHJcbiAgICAgICAgICAgICAgICA8dmRyLWRyb3Bkb3duPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJpY29uLWJ1dHRvbiBkZXYtbW9kZS1idXR0b25cIiB2ZHJEcm9wZG93blRyaWdnZXIgdGl0bGU9XCJERVYgTU9ERVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8Y2xyLWljb24gc2hhcGU9XCJjb2RlXCIgc2l6ZT1cIjI0XCI+PC9jbHItaWNvbj4gREVWIE1PREVcclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8dmRyLWRyb3Bkb3duLW1lbnU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0yIHB5LTFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+VmVyc2lvbjoge3sgdmVyc2lvbiB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5WaWV3IFVJIGV4dGVuc2lvbiBwb2ludHM6IDxrYmQ+Q1RSTCArIFU8L2tiZD48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC92ZHItZHJvcGRvd24tbWVudT5cclxuICAgICAgICAgICAgICAgIDwvdmRyLWRyb3Bkb3duPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJzdXJmYWNlXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbnQtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0b3AtYmFyXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXhwYW5kLW1lbnUgbXItMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJcIiAoY2xpY2spPVwiZXhwYW5kTmF2KClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHN2Z1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuNVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJiYXJzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0zLjc1IDYuNzVoMTYuNU0zLjc1IDEyaDE2LjVtLTE2LjUgNS4yNWgxNi41XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDx2ZHItYnJlYWRjcnVtYj48L3Zkci1icmVhZGNydW1iPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidW5pdmVyc2FsLXNlYXJjaCBmbGV4LXNwYWNlclwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm14LTFcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dmRyLWFsZXJ0cz48L3Zkci1hbGVydHM+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPHZkci11c2VyLW1lbnVcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3VzZXJOYW1lXT1cInVzZXJOYW1lJCB8IGFzeW5jXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3VpTGFuZ3VhZ2VBbmRMb2NhbGVdPVwidWlMYW5ndWFnZUFuZExvY2FsZSQgfCBhc3luY1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdmFpbGFibGVMYW5ndWFnZXNdPVwiYXZhaWxhYmxlTGFuZ3VhZ2VzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGVjdFVpTGFuZ3VhZ2UpPVwic2VsZWN0VWlMYW5ndWFnZSgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGxvZ091dCk9XCJsb2dPdXQoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgPjwvdmRyLXVzZXItbWVudT5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbnQtYXJlYVwiPjxyb3V0ZXItb3V0bGV0Pjwvcm91dGVyLW91dGxldD48L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
103
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLXNoZWxsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29yZS9zcmMvY29tcG9uZW50cy9hcHAtc2hlbGwvYXBwLXNoZWxsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29yZS9zcmMvY29tcG9uZW50cy9hcHAtc2hlbGwvYXBwLXNoZWxsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRTdELE9BQU8sRUFBRSxLQUFLLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDekMsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRWhELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBT3hELE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLHNFQUFzRSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBWXpILE1BQU0sT0FBTyxpQkFBaUI7SUFZMUIsWUFDWSxXQUF3QixFQUN4QixXQUF3QixFQUN4QixNQUFjLEVBQ2QsV0FBd0IsRUFDeEIsWUFBMEIsRUFDMUIsbUJBQXdDLEVBQ3hDLGlCQUFvQyxFQUNwQyxtQkFBd0M7UUFQeEMsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFDeEMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQyx3QkFBbUIsR0FB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Q0wsQ0FBQyxDQUFDLENBQUM7SUFDWCxDQUFDO0lBRUQsU0FBUztRQUNMLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ2pFLENBQUM7SUFFRCxXQUFXO1FBQ1AsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDbEUsQ0FBQztJQUVELE1BQU07UUFDRixJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDckMsTUFBTSxFQUFFLFFBQVEsRUFBRSxHQUFHLFlBQVksRUFBRSxDQUFDO1lBQ3BDLElBQUksUUFBUSxFQUFFO2dCQUNWLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQzthQUNuQztpQkFBTTtnQkFDSCxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7YUFDcEM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7OEdBM0ZRLGlCQUFpQjtrR0FBakIsaUJBQWlCLHFEQzFCOUIsb3FIQWlGQTs7MkZEdkRhLGlCQUFpQjtrQkFMN0IsU0FBUzsrQkFDSSxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBpc0Rldk1vZGUsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBFTVBUWSwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBtYXAsIHN3aXRjaE1hcCwgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbmltcG9ydCB7IGdldEFwcENvbmZpZyB9IGZyb20gJy4uLy4uL2FwcC5jb25maWcnO1xyXG5pbXBvcnQgeyBMYW5ndWFnZUNvZGUgfSBmcm9tICcuLi8uLi9jb21tb24vZ2VuZXJhdGVkLXR5cGVzJztcclxuaW1wb3J0IHsgQURNSU5fVUlfVkVSU0lPTiB9IGZyb20gJy4uLy4uL2NvbW1vbi92ZXJzaW9uJztcclxuaW1wb3J0IHsgRGF0YVNlcnZpY2UgfSBmcm9tICcuLi8uLi9kYXRhL3Byb3ZpZGVycy9kYXRhLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uLy4uL3Byb3ZpZGVycy9hdXRoL2F1dGguc2VydmljZSc7XHJcbmltcG9ydCB7IEJyZWFkY3J1bWJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vcHJvdmlkZXJzL2JyZWFkY3J1bWIvYnJlYWRjcnVtYi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSTE4blNlcnZpY2UgfSBmcm9tICcuLi8uLi9wcm92aWRlcnMvaTE4bi9pMThuLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBMb2NhbFN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vcHJvdmlkZXJzL2xvY2FsLXN0b3JhZ2UvbG9jYWwtc3RvcmFnZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTW9kYWxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vcHJvdmlkZXJzL21vZGFsL21vZGFsLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBVaUxhbmd1YWdlU3dpdGNoZXJEaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi91aS1sYW5ndWFnZS1zd2l0Y2hlci1kaWFsb2cvdWktbGFuZ3VhZ2Utc3dpdGNoZXItZGlhbG9nLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7XHJcbiAgICBMb2NhbGl6YXRpb25EaXJlY3Rpb25UeXBlLFxyXG4gICAgTG9jYWxpemF0aW9uTGFuZ3VhZ2VDb2RlVHlwZSxcclxuICAgIExvY2FsaXphdGlvblNlcnZpY2UsXHJcbn0gZnJvbSAnLi4vLi4vcHJvdmlkZXJzL2xvY2FsaXphdGlvbi9sb2NhbGl6YXRpb24uc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAndmRyLWFwcC1zaGVsbCcsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vYXBwLXNoZWxsLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL2FwcC1zaGVsbC5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQXBwU2hlbGxDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gICAgdmVyc2lvbiA9IEFETUlOX1VJX1ZFUlNJT047XHJcbiAgICB1c2VyTmFtZSQ6IE9ic2VydmFibGU8c3RyaW5nPjtcclxuICAgIHVpTGFuZ3VhZ2VBbmRMb2NhbGUkOiBMb2NhbGl6YXRpb25MYW5ndWFnZUNvZGVUeXBlO1xyXG4gICAgZGlyZWN0aW9uJDogTG9jYWxpemF0aW9uRGlyZWN0aW9uVHlwZTtcclxuICAgIGF2YWlsYWJsZUxhbmd1YWdlczogTGFuZ3VhZ2VDb2RlW10gPSBbXTtcclxuICAgIGF2YWlsYWJsZUxvY2FsZXM6IHN0cmluZ1tdID0gW107XHJcbiAgICBoaWRlVmVuZHVyZUJyYW5kaW5nID0gZ2V0QXBwQ29uZmlnKCkuaGlkZVZlbmR1cmVCcmFuZGluZztcclxuICAgIHBhZ2VUaXRsZSQ6IE9ic2VydmFibGU8c3RyaW5nPjtcclxuICAgIG1haW5OYXZFeHBhbmRlZCQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XHJcbiAgICBkZXZNb2RlID0gaXNEZXZNb2RlKCk7XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBkYXRhU2VydmljZTogRGF0YVNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcclxuICAgICAgICBwcml2YXRlIGkxOG5TZXJ2aWNlOiBJMThuU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIG1vZGFsU2VydmljZTogTW9kYWxTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgbG9jYWxTdG9yYWdlU2VydmljZTogTG9jYWxTdG9yYWdlU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIGJyZWFkY3J1bWJTZXJ2aWNlOiBCcmVhZGNydW1iU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIGxvY2FsaXphdGlvblNlcnZpY2U6IExvY2FsaXphdGlvblNlcnZpY2UsXHJcbiAgICApIHt9XHJcblxyXG4gICAgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgdGhpcy5kaXJlY3Rpb24kID0gdGhpcy5sb2NhbGl6YXRpb25TZXJ2aWNlLmRpcmVjdGlvbiQ7XHJcblxyXG4gICAgICAgIHRoaXMudWlMYW5ndWFnZUFuZExvY2FsZSQgPSB0aGlzLmxvY2FsaXphdGlvblNlcnZpY2UudWlMYW5ndWFnZUFuZExvY2FsZSQ7XHJcblxyXG4gICAgICAgIHRoaXMudXNlck5hbWUkID0gdGhpcy5kYXRhU2VydmljZS5jbGllbnRcclxuICAgICAgICAgICAgLnVzZXJTdGF0dXMoKVxyXG4gICAgICAgICAgICAuc2luZ2xlJC5waXBlKG1hcChkYXRhID0+IGRhdGEudXNlclN0YXR1cy51c2VybmFtZSkpO1xyXG5cclxuICAgICAgICB0aGlzLmF2YWlsYWJsZUxhbmd1YWdlcyA9IHRoaXMuaTE4blNlcnZpY2UuYXZhaWxhYmxlTGFuZ3VhZ2VzO1xyXG5cclxuICAgICAgICB0aGlzLmF2YWlsYWJsZUxvY2FsZXMgPSB0aGlzLmkxOG5TZXJ2aWNlLmF2YWlsYWJsZUxvY2FsZXM7XHJcblxyXG4gICAgICAgIHRoaXMucGFnZVRpdGxlJCA9IHRoaXMuYnJlYWRjcnVtYlNlcnZpY2UuYnJlYWRjcnVtYnMkLnBpcGUoXHJcbiAgICAgICAgICAgIG1hcChicmVhZGNydW1icyA9PiBicmVhZGNydW1ic1ticmVhZGNydW1icy5sZW5ndGggLSAxXS5sYWJlbCksXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgdGhpcy5tYWluTmF2RXhwYW5kZWQkID0gdGhpcy5kYXRhU2VydmljZS5jbGllbnRcclxuICAgICAgICAgICAgLnVpU3RhdGUoKVxyXG4gICAgICAgICAgICAuc3RyZWFtJC5waXBlKG1hcCgoeyB1aVN0YXRlIH0pID0+IHVpU3RhdGUubWFpbk5hdkV4cGFuZGVkKSk7XHJcbiAgICB9XHJcblxyXG4gICAgc2VsZWN0VWlMYW5ndWFnZSgpIHtcclxuICAgICAgICB0aGlzLnVpTGFuZ3VhZ2VBbmRMb2NhbGUkXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgdGFrZSgxKSxcclxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgoW2N1cnJlbnRMYW5ndWFnZSwgY3VycmVudExvY2FsZV0pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5tb2RhbFNlcnZpY2UuZnJvbUNvbXBvbmVudChVaUxhbmd1YWdlU3dpdGNoZXJEaWFsb2dDb21wb25lbnQsIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2FibGU6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6ICdsZycsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvY2Fsczoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZhaWxhYmxlTG9jYWxlczogdGhpcy5hdmFpbGFibGVMb2NhbGVzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZhaWxhYmxlTGFuZ3VhZ2VzOiB0aGlzLmF2YWlsYWJsZUxhbmd1YWdlcyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRMYW5ndWFnZTogY3VycmVudExhbmd1YWdlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudExvY2FsZTogY3VycmVudExvY2FsZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKHJlc3VsdCA9PlxyXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA/IHRoaXMuZGF0YVNlcnZpY2UuY2xpZW50LnNldFVpTGFuZ3VhZ2UocmVzdWx0WzBdLCByZXN1bHRbMV0pIDogRU1QVFksXHJcbiAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUocmVzdWx0ID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChyZXN1bHQuc2V0VWlMYW5ndWFnZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaTE4blNlcnZpY2Uuc2V0TGFuZ3VhZ2UocmVzdWx0LnNldFVpTGFuZ3VhZ2UpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubG9jYWxTdG9yYWdlU2VydmljZS5zZXQoJ3VpTGFuZ3VhZ2VDb2RlJywgcmVzdWx0LnNldFVpTGFuZ3VhZ2UpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubG9jYWxTdG9yYWdlU2VydmljZS5zZXQoJ3VpTG9jYWxlJywgcmVzdWx0LnNldFVpTG9jYWxlID8/IHVuZGVmaW5lZCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGV4cGFuZE5hdigpIHtcclxuICAgICAgICB0aGlzLmRhdGFTZXJ2aWNlLmNsaWVudC5zZXRNYWluTmF2RXhwYW5kZWQodHJ1ZSkuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgY29sbGFwc2VOYXYoKSB7XHJcbiAgICAgICAgdGhpcy5kYXRhU2VydmljZS5jbGllbnQuc2V0TWFpbk5hdkV4cGFuZGVkKGZhbHNlKS5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuXHJcbiAgICBsb2dPdXQoKSB7XHJcbiAgICAgICAgdGhpcy5hdXRoU2VydmljZS5sb2dPdXQoKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCB7IGxvZ2luVXJsIH0gPSBnZXRBcHBDb25maWcoKTtcclxuICAgICAgICAgICAgaWYgKGxvZ2luVXJsKSB7XHJcbiAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IGxvZ2luVXJsO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvbG9naW4nXSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiYXBwLWNvbnRhaW5lclwiIFtkaXJdPVwiZGlyZWN0aW9uJCB8IGFzeW5jXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibGVmdC1uYXZcIiBbY2xhc3MuZXhwYW5kZWRdPVwibWFpbk5hdkV4cGFuZGVkJCB8IGFzeW5jXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImJyYW5kaW5nXCI+XHJcbiAgICAgICAgICAgIDxhIFtyb3V0ZXJMaW5rXT1cIlsnLyddXCIgKm5nSWY9XCIhaGlkZVZlbmR1cmVCcmFuZGluZ1wiXHJcbiAgICAgICAgICAgICAgICA+PGltZyBzcmM9XCJhc3NldHMvbG9nby10b3Aud2VicFwiIGNsYXNzPVwibG9nb1wiIHN0eWxlPVwibWF4LXdpZHRoOiAxMDBweFwiXHJcbiAgICAgICAgICAgIC8+PC9hPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sbGFwc2UtbWVudVwiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIlwiIChjbGljayk9XCJjb2xsYXBzZU5hdigpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGNsci1pY29uIHNoYXBlPVwid2luZG93LWNsb3NlXCIgc2l6ZT1cIjI0XCI+PC9jbHItaWNvbj5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibXgtNFwiPlxyXG4gICAgICAgICAgICA8dmRyLWNoYW5uZWwtc3dpdGNoZXIgKnZkcklmTXVsdGljaGFubmVsPjwvdmRyLWNoYW5uZWwtc3dpdGNoZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1haW4tbmF2LWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICA8dmRyLW1haW4tbmF2IChpdGVtQ2xpY2spPVwiY29sbGFwc2VOYXYoKVwiPjwvdmRyLW1haW4tbmF2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzZXR0aW5ncy1uYXYtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgIDxociAvPlxyXG4gICAgICAgICAgICA8dmRyLW1haW4tbmF2IGRpc3BsYXlNb2RlPVwic2V0dGluZ3NcIiAoaXRlbUNsaWNrKT1cImNvbGxhcHNlTmF2KClcIj48L3Zkci1tYWluLW5hdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibXgtMlwiPlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZGV2TW9kZVwiIGNsYXNzPVwiZmxleCBjZW50ZXIgbWItMlwiPlxyXG4gICAgICAgICAgICAgICAgPHZkci1kcm9wZG93bj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiaWNvbi1idXR0b24gZGV2LW1vZGUtYnV0dG9uXCIgdmRyRHJvcGRvd25UcmlnZ2VyIHRpdGxlPVwiREVWIE1PREVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGNsci1pY29uIHNoYXBlPVwiY29kZVwiIHNpemU9XCIyNFwiPjwvY2xyLWljb24+IERFViBNT0RFXHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPHZkci1kcm9wZG93bi1tZW51PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMiBweS0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlZlcnNpb246IHt7IHZlcnNpb24gfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+VmlldyBVSSBleHRlbnNpb24gcG9pbnRzOiA8a2JkPkNUUkwgKyBVPC9rYmQ+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdmRyLWRyb3Bkb3duLW1lbnU+XHJcbiAgICAgICAgICAgICAgICA8L3Zkci1kcm9wZG93bj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwic3VyZmFjZVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50LWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidG9wLWJhclwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImV4cGFuZC1tZW51IG1yLTFcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiXCIgKGNsaWNrKT1cImV4cGFuZE5hdigpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYmFyc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMy43NSA2Ljc1aDE2LjVNMy43NSAxMmgxNi41bS0xNi41IDUuMjVoMTYuNVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICA8dmRyLWJyZWFkY3J1bWI+PC92ZHItYnJlYWRjcnVtYj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInVuaXZlcnNhbC1zZWFyY2ggZmxleC1zcGFjZXJcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteC0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHZkci1hbGVydHM+PC92ZHItYWxlcnRzPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDx2ZHItdXNlci1tZW51XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt1c2VyTmFtZV09XCJ1c2VyTmFtZSQgfCBhc3luY1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt1aUxhbmd1YWdlQW5kTG9jYWxlXT1cInVpTGFuZ3VhZ2VBbmRMb2NhbGUkIHwgYXN5bmNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXZhaWxhYmxlTGFuZ3VhZ2VzXT1cImF2YWlsYWJsZUxhbmd1YWdlc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChzZWxlY3RVaUxhbmd1YWdlKT1cInNlbGVjdFVpTGFuZ3VhZ2UoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChsb2dPdXQpPVwibG9nT3V0KClcIlxyXG4gICAgICAgICAgICAgICAgICAgID48L3Zkci11c2VyLW1lbnU+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50LWFyZWFcIj48cm91dGVyLW91dGxldD48L3JvdXRlci1vdXRsZXQ+PC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==