@provoly/dashboard 1.4.8 → 1.4.10

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 (74) hide show
  1. package/components/paginator/paginator.component.d.ts +3 -1
  2. package/dataset/components/dataset-detail/dataset-detail.component.d.ts +4 -3
  3. package/esm2022/components/paginator/paginator.component.mjs +8 -4
  4. package/esm2022/dataset/components/dataset-detail/dataset-detail.component.mjs +9 -11
  5. package/esm2022/filters/autocomplete/autocomplete.component.mjs +2 -1
  6. package/esm2022/filters/date/date-filter.component.mjs +2 -1
  7. package/esm2022/filters/list/list-filter.component.mjs +7 -3
  8. package/esm2022/filters/number/number-filter.component.mjs +7 -3
  9. package/esm2022/filters/text/text-filter.component.mjs +7 -3
  10. package/esm2022/import/components/list/import-list.component.mjs +1 -1
  11. package/esm2022/lib/core/components/select/select.component.mjs +3 -3
  12. package/esm2022/lib/core/model/manifest.interface.mjs +1 -1
  13. package/esm2022/lib/core/model/result-set.interface.mjs +1 -1
  14. package/esm2022/lib/core/model/widget-map-manifest.interface.mjs +1 -1
  15. package/esm2022/lib/core/store/search/search.actions.mjs +1 -1
  16. package/esm2022/lib/core/store/search/search.effects.mjs +33 -8
  17. package/esm2022/lib/core/store/search/search.service.mjs +24 -6
  18. package/esm2022/lib/dashboard/components/widgets/widget-instanciator/widget-factory.service.mjs +20 -2
  19. package/esm2022/lib/dashboard/filter/base-filter.component.mjs +5 -2
  20. package/esm2022/lib/dashboard/filter/components/filter-group/filter-group.component.mjs +16 -3
  21. package/esm2022/lib/dashboard/filter/components/filter-instanciator/filter-instanciator.component.mjs +6 -2
  22. package/esm2022/lib/dashboard/store/dashboard.actions.mjs +3 -5
  23. package/esm2022/lib/dashboard/store/dashboard.reducers.mjs +16 -49
  24. package/esm2022/lib/dashboard/store/dashboard.selectors.mjs +2 -4
  25. package/esm2022/widgets/widget-aggregated-chart/component/widget-aggregated-chart.component.mjs +34 -15
  26. package/esm2022/widgets/widget-map/component/widget-map.component.mjs +60 -55
  27. package/esm2022/widgets/widget-map/interaction/tooltip-manager.class.mjs +41 -48
  28. package/esm2022/widgets/widget-map/utils/cql-utils.class.mjs +2 -2
  29. package/esm2022/widgets/widget-table/component/widget-table.component.mjs +32 -17
  30. package/fesm2022/provoly-dashboard-components-paginator.mjs +7 -3
  31. package/fesm2022/provoly-dashboard-components-paginator.mjs.map +1 -1
  32. package/fesm2022/provoly-dashboard-dataset.mjs +9 -11
  33. package/fesm2022/provoly-dashboard-dataset.mjs.map +1 -1
  34. package/fesm2022/provoly-dashboard-filters-autocomplete.mjs +1 -0
  35. package/fesm2022/provoly-dashboard-filters-autocomplete.mjs.map +1 -1
  36. package/fesm2022/provoly-dashboard-filters-date.mjs +1 -0
  37. package/fesm2022/provoly-dashboard-filters-date.mjs.map +1 -1
  38. package/fesm2022/provoly-dashboard-filters-list.mjs +6 -2
  39. package/fesm2022/provoly-dashboard-filters-list.mjs.map +1 -1
  40. package/fesm2022/provoly-dashboard-filters-number.mjs +6 -2
  41. package/fesm2022/provoly-dashboard-filters-number.mjs.map +1 -1
  42. package/fesm2022/provoly-dashboard-filters-text.mjs +6 -2
  43. package/fesm2022/provoly-dashboard-filters-text.mjs.map +1 -1
  44. package/fesm2022/provoly-dashboard-import.mjs +1 -1
  45. package/fesm2022/provoly-dashboard-import.mjs.map +1 -1
  46. package/fesm2022/provoly-dashboard-widgets-widget-aggregated-chart.mjs +32 -13
  47. package/fesm2022/provoly-dashboard-widgets-widget-aggregated-chart.mjs.map +1 -1
  48. package/fesm2022/provoly-dashboard-widgets-widget-map.mjs +100 -102
  49. package/fesm2022/provoly-dashboard-widgets-widget-map.mjs.map +1 -1
  50. package/fesm2022/provoly-dashboard-widgets-widget-table.mjs +32 -17
  51. package/fesm2022/provoly-dashboard-widgets-widget-table.mjs.map +1 -1
  52. package/fesm2022/provoly-dashboard.mjs +323 -284
  53. package/fesm2022/provoly-dashboard.mjs.map +1 -1
  54. package/filters/list/list-filter.component.d.ts +1 -0
  55. package/filters/number/number-filter.component.d.ts +1 -0
  56. package/filters/text/text-filter.component.d.ts +1 -0
  57. package/lib/core/model/manifest.interface.d.ts +2 -10
  58. package/lib/core/model/result-set.interface.d.ts +1 -0
  59. package/lib/core/model/widget-map-manifest.interface.d.ts +1 -0
  60. package/lib/core/store/search/search.actions.d.ts +4 -0
  61. package/lib/core/store/search/search.effects.d.ts +12 -1
  62. package/lib/core/store/search/search.service.d.ts +3 -1
  63. package/lib/dashboard/components/widgets/widget-instanciator/widget-factory.service.d.ts +1 -0
  64. package/lib/dashboard/components/widgets/widget-placement/widget-placement.utils.d.ts +1 -0
  65. package/lib/dashboard/filter/base-filter.component.d.ts +2 -1
  66. package/lib/dashboard/filter/components/filter-group/filter-group.component.d.ts +4 -1
  67. package/lib/dashboard/filter/components/filter-instanciator/filter-instanciator.component.d.ts +2 -1
  68. package/lib/dashboard/store/dashboard.actions.d.ts +9 -18
  69. package/lib/dashboard/store/dashboard.effects.d.ts +3 -1
  70. package/lib/dashboard/store/dashboard.selectors.d.ts +0 -9
  71. package/package.json +37 -37
  72. package/widgets/widget-aggregated-chart/component/widget-aggregated-chart.component.d.ts +2 -1
  73. package/widgets/widget-map/component/widget-map.component.d.ts +1 -2
  74. package/widgets/widget-map/interaction/tooltip-manager.class.d.ts +0 -2
@@ -8,13 +8,15 @@ export declare class PryPaginatorComponent {
8
8
  totalItemNb: import("@angular/core").InputSignal<number>;
9
9
  mode: import("@angular/core").InputSignal<"long" | "short">;
10
10
  goBackToFirstPage: import("@angular/core").InputSignal<any>;
11
+ loaded: import("@angular/core").InputSignal<number>;
11
12
  nbOfPages: import("@angular/core").Signal<number>;
12
13
  pages: import("@angular/core").Signal<number[]>;
13
14
  currentPage: import("@angular/core").WritableSignal<number>;
15
+ maxLoadedPage: import("@angular/core").Signal<number>;
14
16
  pageChange: EventEmitter<number>;
15
17
  constructor();
16
18
  dispatchPageChangeAction(): void;
17
19
  changePage(page: number): void;
18
20
  static ɵfac: i0.ɵɵFactoryDeclaration<PryPaginatorComponent, never>;
19
- static ɵcmp: i0.ɵɵComponentDeclaration<PryPaginatorComponent, "pry-paginator", never, { "action": { "alias": "action"; "required": false; "isSignal": true; }; "nbPerPage": { "alias": "nbPerPage"; "required": false; "isSignal": true; }; "totalItemNb": { "alias": "totalItemNb"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "goBackToFirstPage": { "alias": "goBackToFirstPage"; "required": false; "isSignal": true; }; }, { "pageChange": "pageChange"; }, never, never, false, never>;
21
+ static ɵcmp: i0.ɵɵComponentDeclaration<PryPaginatorComponent, "pry-paginator", never, { "action": { "alias": "action"; "required": false; "isSignal": true; }; "nbPerPage": { "alias": "nbPerPage"; "required": false; "isSignal": true; }; "totalItemNb": { "alias": "totalItemNb"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "goBackToFirstPage": { "alias": "goBackToFirstPage"; "required": false; "isSignal": true; }; "loaded": { "alias": "loaded"; "required": false; "isSignal": true; }; }, { "pageChange": "pageChange"; }, never, never, false, never>;
20
22
  }
@@ -1,6 +1,6 @@
1
1
  import { EventEmitter, OnInit } from '@angular/core';
2
2
  import { Store } from '@ngrx/store';
3
- import { Dataset, DatasetVersion, PryBaseAccess, PryDialogService, PryI18nService, PryTitleService, ResultSets, SubscriptionnerDirective, ViewMode, WidgetManifest } from '@provoly/dashboard';
3
+ import { Dataset, DatasetVersion, PryBaseAccess, PryDialogService, PryI18nService, PryTitleService, ResultSets, SubscriptionnerDirective, ViewMode, WidgetFactoryService, WidgetManifest } from '@provoly/dashboard';
4
4
  import { Observable } from 'rxjs';
5
5
  import * as i0 from "@angular/core";
6
6
  export declare class PryDatasetDetailComponent extends SubscriptionnerDirective implements OnInit {
@@ -9,6 +9,7 @@ export declare class PryDatasetDetailComponent extends SubscriptionnerDirective
9
9
  private dialog;
10
10
  private titleService;
11
11
  private i18nService;
12
+ private widgetFactoryService;
12
13
  dataset: Dataset;
13
14
  goToCatalog: EventEmitter<any>;
14
15
  widgetManifest: {
@@ -26,7 +27,7 @@ export declare class PryDatasetDetailComponent extends SubscriptionnerDirective
26
27
  currentDataset$: Observable<Dataset | undefined>;
27
28
  isPanelOpen: boolean;
28
29
  selectedVersion?: DatasetVersion;
29
- constructor(store: Store, access: PryBaseAccess, dialog: PryDialogService, titleService: PryTitleService, i18nService: PryI18nService);
30
+ constructor(store: Store, access: PryBaseAccess, dialog: PryDialogService, titleService: PryTitleService, i18nService: PryI18nService, widgetFactoryService: WidgetFactoryService);
30
31
  ngOnInit(): void;
31
32
  goBack(): void;
32
33
  refresh(): void;
@@ -41,6 +42,6 @@ export declare class PryDatasetDetailComponent extends SubscriptionnerDirective
41
42
  editVersion(): void;
42
43
  formValidated($event: Partial<DatasetVersion>): void;
43
44
  askDelete(version: DatasetVersion, $event?: Event): void;
44
- static ɵfac: i0.ɵɵFactoryDeclaration<PryDatasetDetailComponent, [null, { optional: true; }, null, null, null]>;
45
+ static ɵfac: i0.ɵɵFactoryDeclaration<PryDatasetDetailComponent, [null, { optional: true; }, null, null, null, null]>;
45
46
  static ɵcmp: i0.ɵɵComponentDeclaration<PryDatasetDetailComponent, "pry-dataset-detail", never, { "dataset": { "alias": "dataset"; "required": false; }; }, { "goToCatalog": "goToCatalog"; }, never, never, false, never>;
46
47
  }
@@ -12,13 +12,17 @@ export class PryPaginatorComponent {
12
12
  this.totalItemNb = input(100);
13
13
  this.mode = input('long');
14
14
  this.goBackToFirstPage = input();
15
+ this.loaded = input(0);
15
16
  this.nbOfPages = computed(() => {
16
- return Math.floor(this.totalItemNb() / this.nbPerPage());
17
+ return Math.ceil(this.totalItemNb() / this.nbPerPage());
17
18
  });
18
19
  this.pages = computed(() => {
19
20
  return Array.from({ length: this.nbOfPages() }, (_, i) => i + 1);
20
21
  });
21
22
  this.currentPage = signal(1);
23
+ this.maxLoadedPage = computed(() => {
24
+ return Math.ceil((this.loaded() ?? 0) / this.nbPerPage());
25
+ });
22
26
  this.pageChange = new EventEmitter();
23
27
  effect(() => {
24
28
  // if current page changes, dispatch action to load data
@@ -47,12 +51,12 @@ export class PryPaginatorComponent {
47
51
  this.pageChange.emit(page);
48
52
  }
49
53
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: PryPaginatorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
50
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: PryPaginatorComponent, selector: "pry-paginator", inputs: { action: { classPropertyName: "action", publicName: "action", isSignal: true, isRequired: false, transformFunction: null }, nbPerPage: { classPropertyName: "nbPerPage", publicName: "nbPerPage", isSignal: true, isRequired: false, transformFunction: null }, totalItemNb: { classPropertyName: "totalItemNb", publicName: "totalItemNb", isSignal: true, isRequired: false, transformFunction: null }, mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: false, transformFunction: null }, goBackToFirstPage: { classPropertyName: "goBackToFirstPage", publicName: "goBackToFirstPage", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { pageChange: "pageChange" }, ngImport: i0, template: "<pry-paginator-css></pry-paginator-css>\n<div\n class=\"o-paginator u-display-flex -align-center\"\n [class.o-paginator--long]=\"mode() === 'long'\"\n [class.o-paginator--short]=\"mode() === 'short'\"\n>\n @if (mode() === 'long') {\n <ng-container *ngTemplateOutlet=\"longPaginator\"></ng-container>\n } @else {\n <ng-container *ngTemplateOutlet=\"shortPaginator\"></ng-container>\n }\n</div>\n\n<ng-template #shortPaginator>\n <button (click)=\"changePage(1)\" [disabled]=\"currentPage() === 1\">\n <pry-icon iconSvg=\"skip-left-fill\"></pry-icon>\n </button>\n <button (click)=\"changePage(currentPage() - 1)\" [disabled]=\"currentPage() === 1\">\n <pry-icon iconSvg=\"arrow-left-s-fill\"></pry-icon>\n </button>\n <span class=\"o-paginator__page-counter\">{{ currentPage() }} / {{ nbOfPages() }}</span>\n <button (click)=\"changePage(currentPage() + 1)\" [disabled]=\"currentPage() === nbOfPages()\">\n <pry-icon iconSvg=\"arrow-right-s-fill\"></pry-icon>\n </button>\n <button (click)=\"changePage(nbOfPages())\" [disabled]=\"currentPage() === nbOfPages()\">\n <pry-icon iconSvg=\"skip-right-fill\"></pry-icon>\n </button>\n</ng-template>\n\n<ng-template #longPaginator>\n @if (currentPage() > 1) {\n <button (click)=\"changePage(currentPage() - 1)\">\n <pry-icon iconSvg=\"chevron_left\"></pry-icon>\n </button>\n }\n @if (nbOfPages() > 8) {\n @if (currentPage() < 3) {\n @for (page of pages().slice(0, 3); track page) {\n <button\n class=\"a-btn -small-circle -no-padding\"\n [class.a-btn--primary]=\"page === currentPage()\"\n [class.a-btn--ghost]=\"page !== currentPage()\"\n (click)=\"changePage(page)\"\n >\n {{ page }}\n </button>\n }\n <span class=\"u-self-end\">...</span>\n <button class=\"a-btn -small-circle -no-padding\" (click)=\"changePage(pages().length)\">\n {{ pages().length }}\n </button>\n } @else if (currentPage() > pages().length - 2) {\n <button\n class=\"a-btn -small-circle -no-padding\"\n (click)=\"changePage(1)\"\n [class.a-btn--primary]=\"currentPage() === 1\"\n [class.a-btn--ghost]=\"currentPage() !== 1\"\n >\n 1\n </button>\n <span class=\"u-self-end\">...</span>\n @for (page of pages().slice(-3); track page) {\n <button\n class=\"a-btn -small-circle -no-padding\"\n [class.a-btn--primary]=\"page === currentPage()\"\n [class.a-btn--ghost]=\"page !== currentPage()\"\n (click)=\"changePage(page)\"\n >\n {{ page }}\n </button>\n }\n } @else {\n <button class=\"a-btn -small-circle -no-padding\" (click)=\"changePage(1)\">1</button>\n <span>...</span>\n @for (page of pages().slice(currentPage() - 2, currentPage() + 1); track page) {\n <button\n class=\"a-btn -small-circle -no-padding\"\n [class.a-btn--primary]=\"page === currentPage()\"\n [class.a-btn--ghost]=\"page !== currentPage()\"\n (click)=\"changePage(page)\"\n >\n {{ page }}\n </button>\n }\n <span>...</span>\n <button\n class=\"a-btn -small-circle -no-padding\"\n [class.a-btn--primary]=\"currentPage() === pages().length\"\n [class.a-btn--ghost]=\"currentPage() !== pages().length\"\n (click)=\"changePage(pages().length)\"\n >\n {{ pages().length }}\n </button>\n }\n } @else {\n @for (page of pages(); track page) {\n <button\n class=\"a-btn -small-circle -no-padding\"\n [class.a-btn--primary]=\"page === currentPage()\"\n [class.a-btn--ghost]=\"page !== currentPage()\"\n (click)=\"changePage(page)\"\n >\n {{ page }}\n </button>\n }\n }\n @if (currentPage() < pages().length) {\n <button (click)=\"changePage(currentPage() + 1)\">\n <pry-icon iconSvg=\"chevron_right\"></pry-icon>\n </button>\n }\n</ng-template>\n", dependencies: [{ kind: "component", type: i1.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3.PryPaginatorCssComponent, selector: "pry-paginator-css" }] }); }
54
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: PryPaginatorComponent, selector: "pry-paginator", inputs: { action: { classPropertyName: "action", publicName: "action", isSignal: true, isRequired: false, transformFunction: null }, nbPerPage: { classPropertyName: "nbPerPage", publicName: "nbPerPage", isSignal: true, isRequired: false, transformFunction: null }, totalItemNb: { classPropertyName: "totalItemNb", publicName: "totalItemNb", isSignal: true, isRequired: false, transformFunction: null }, mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: false, transformFunction: null }, goBackToFirstPage: { classPropertyName: "goBackToFirstPage", publicName: "goBackToFirstPage", isSignal: true, isRequired: false, transformFunction: null }, loaded: { classPropertyName: "loaded", publicName: "loaded", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { pageChange: "pageChange" }, ngImport: i0, template: "<pry-paginator-css></pry-paginator-css>\n<div\n class=\"o-paginator u-display-flex -align-center\"\n [class.o-paginator--long]=\"mode() === 'long'\"\n [class.o-paginator--short]=\"mode() === 'short'\"\n>\n @if (mode() === 'long') {\n <ng-container *ngTemplateOutlet=\"longPaginator\"></ng-container>\n } @else {\n <ng-container *ngTemplateOutlet=\"shortPaginator\"></ng-container>\n }\n</div>\n\n<ng-template #shortPaginator>\n <button (click)=\"changePage(1)\" [disabled]=\"currentPage() === 1\">\n <pry-icon iconSvg=\"skip-left-fill\"></pry-icon>\n </button>\n <button (click)=\"changePage(currentPage() - 1)\" [disabled]=\"currentPage() === 1\">\n <pry-icon iconSvg=\"arrow-left-s-fill\"></pry-icon>\n </button>\n <span class=\"o-paginator__page-counter\">{{ currentPage() }} / {{ nbOfPages() }}</span>\n <button (click)=\"changePage(currentPage() + 1)\" [disabled]=\"currentPage() === maxLoadedPage()\">\n <pry-icon iconSvg=\"arrow-right-s-fill\"></pry-icon>\n </button>\n <button (click)=\"changePage(maxLoadedPage())\" [disabled]=\"currentPage() === maxLoadedPage()\">\n <pry-icon iconSvg=\"skip-right-fill\"></pry-icon>\n </button>\n</ng-template>\n\n<ng-template #longPaginator>\n @if (currentPage() > 1) {\n <button (click)=\"changePage(currentPage() - 1)\">\n <pry-icon iconSvg=\"chevron_left\"></pry-icon>\n </button>\n }\n @if (nbOfPages() > 8) {\n @if (currentPage() < 3) {\n @for (page of pages().slice(0, 3); track page) {\n <button\n class=\"a-btn -small-circle -no-padding\"\n [class.a-btn--primary]=\"page === currentPage()\"\n [class.a-btn--ghost]=\"page !== currentPage()\"\n (click)=\"changePage(page)\"\n >\n {{ page }}\n </button>\n }\n <span class=\"u-self-end\">...</span>\n <button class=\"a-btn -small-circle -no-padding\" (click)=\"changePage(pages().length)\">\n {{ pages().length }}\n </button>\n } @else if (currentPage() > pages().length - 2) {\n <button\n class=\"a-btn -small-circle -no-padding\"\n (click)=\"changePage(1)\"\n [class.a-btn--primary]=\"currentPage() === 1\"\n [class.a-btn--ghost]=\"currentPage() !== 1\"\n >\n 1\n </button>\n <span class=\"u-self-end\">...</span>\n @for (page of pages().slice(-3); track page) {\n <button\n class=\"a-btn -small-circle -no-padding\"\n [class.a-btn--primary]=\"page === currentPage()\"\n [class.a-btn--ghost]=\"page !== currentPage()\"\n (click)=\"changePage(page)\"\n >\n {{ page }}\n </button>\n }\n } @else {\n <button class=\"a-btn -small-circle -no-padding\" (click)=\"changePage(1)\">1</button>\n <span>...</span>\n @for (page of pages().slice(currentPage() - 2, currentPage() + 1); track page) {\n <button\n class=\"a-btn -small-circle -no-padding\"\n [class.a-btn--primary]=\"page === currentPage()\"\n [class.a-btn--ghost]=\"page !== currentPage()\"\n (click)=\"changePage(page)\"\n >\n {{ page }}\n </button>\n }\n <span>...</span>\n <button\n class=\"a-btn -small-circle -no-padding\"\n [class.a-btn--primary]=\"currentPage() === pages().length\"\n [class.a-btn--ghost]=\"currentPage() !== pages().length\"\n (click)=\"changePage(pages().length)\"\n >\n {{ pages().length }}\n </button>\n }\n } @else {\n @for (page of pages(); track page) {\n <button\n class=\"a-btn -small-circle -no-padding\"\n [class.a-btn--primary]=\"page === currentPage()\"\n [class.a-btn--ghost]=\"page !== currentPage()\"\n (click)=\"changePage(page)\"\n >\n {{ page }}\n </button>\n }\n }\n @if (currentPage() < pages().length) {\n <button (click)=\"changePage(currentPage() + 1)\">\n <pry-icon iconSvg=\"chevron_right\"></pry-icon>\n </button>\n }\n</ng-template>\n", dependencies: [{ kind: "component", type: i1.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3.PryPaginatorCssComponent, selector: "pry-paginator-css" }] }); }
51
55
  }
52
56
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: PryPaginatorComponent, decorators: [{
53
57
  type: Component,
54
- args: [{ selector: 'pry-paginator', template: "<pry-paginator-css></pry-paginator-css>\n<div\n class=\"o-paginator u-display-flex -align-center\"\n [class.o-paginator--long]=\"mode() === 'long'\"\n [class.o-paginator--short]=\"mode() === 'short'\"\n>\n @if (mode() === 'long') {\n <ng-container *ngTemplateOutlet=\"longPaginator\"></ng-container>\n } @else {\n <ng-container *ngTemplateOutlet=\"shortPaginator\"></ng-container>\n }\n</div>\n\n<ng-template #shortPaginator>\n <button (click)=\"changePage(1)\" [disabled]=\"currentPage() === 1\">\n <pry-icon iconSvg=\"skip-left-fill\"></pry-icon>\n </button>\n <button (click)=\"changePage(currentPage() - 1)\" [disabled]=\"currentPage() === 1\">\n <pry-icon iconSvg=\"arrow-left-s-fill\"></pry-icon>\n </button>\n <span class=\"o-paginator__page-counter\">{{ currentPage() }} / {{ nbOfPages() }}</span>\n <button (click)=\"changePage(currentPage() + 1)\" [disabled]=\"currentPage() === nbOfPages()\">\n <pry-icon iconSvg=\"arrow-right-s-fill\"></pry-icon>\n </button>\n <button (click)=\"changePage(nbOfPages())\" [disabled]=\"currentPage() === nbOfPages()\">\n <pry-icon iconSvg=\"skip-right-fill\"></pry-icon>\n </button>\n</ng-template>\n\n<ng-template #longPaginator>\n @if (currentPage() > 1) {\n <button (click)=\"changePage(currentPage() - 1)\">\n <pry-icon iconSvg=\"chevron_left\"></pry-icon>\n </button>\n }\n @if (nbOfPages() > 8) {\n @if (currentPage() < 3) {\n @for (page of pages().slice(0, 3); track page) {\n <button\n class=\"a-btn -small-circle -no-padding\"\n [class.a-btn--primary]=\"page === currentPage()\"\n [class.a-btn--ghost]=\"page !== currentPage()\"\n (click)=\"changePage(page)\"\n >\n {{ page }}\n </button>\n }\n <span class=\"u-self-end\">...</span>\n <button class=\"a-btn -small-circle -no-padding\" (click)=\"changePage(pages().length)\">\n {{ pages().length }}\n </button>\n } @else if (currentPage() > pages().length - 2) {\n <button\n class=\"a-btn -small-circle -no-padding\"\n (click)=\"changePage(1)\"\n [class.a-btn--primary]=\"currentPage() === 1\"\n [class.a-btn--ghost]=\"currentPage() !== 1\"\n >\n 1\n </button>\n <span class=\"u-self-end\">...</span>\n @for (page of pages().slice(-3); track page) {\n <button\n class=\"a-btn -small-circle -no-padding\"\n [class.a-btn--primary]=\"page === currentPage()\"\n [class.a-btn--ghost]=\"page !== currentPage()\"\n (click)=\"changePage(page)\"\n >\n {{ page }}\n </button>\n }\n } @else {\n <button class=\"a-btn -small-circle -no-padding\" (click)=\"changePage(1)\">1</button>\n <span>...</span>\n @for (page of pages().slice(currentPage() - 2, currentPage() + 1); track page) {\n <button\n class=\"a-btn -small-circle -no-padding\"\n [class.a-btn--primary]=\"page === currentPage()\"\n [class.a-btn--ghost]=\"page !== currentPage()\"\n (click)=\"changePage(page)\"\n >\n {{ page }}\n </button>\n }\n <span>...</span>\n <button\n class=\"a-btn -small-circle -no-padding\"\n [class.a-btn--primary]=\"currentPage() === pages().length\"\n [class.a-btn--ghost]=\"currentPage() !== pages().length\"\n (click)=\"changePage(pages().length)\"\n >\n {{ pages().length }}\n </button>\n }\n } @else {\n @for (page of pages(); track page) {\n <button\n class=\"a-btn -small-circle -no-padding\"\n [class.a-btn--primary]=\"page === currentPage()\"\n [class.a-btn--ghost]=\"page !== currentPage()\"\n (click)=\"changePage(page)\"\n >\n {{ page }}\n </button>\n }\n }\n @if (currentPage() < pages().length) {\n <button (click)=\"changePage(currentPage() + 1)\">\n <pry-icon iconSvg=\"chevron_right\"></pry-icon>\n </button>\n }\n</ng-template>\n" }]
58
+ args: [{ selector: 'pry-paginator', template: "<pry-paginator-css></pry-paginator-css>\n<div\n class=\"o-paginator u-display-flex -align-center\"\n [class.o-paginator--long]=\"mode() === 'long'\"\n [class.o-paginator--short]=\"mode() === 'short'\"\n>\n @if (mode() === 'long') {\n <ng-container *ngTemplateOutlet=\"longPaginator\"></ng-container>\n } @else {\n <ng-container *ngTemplateOutlet=\"shortPaginator\"></ng-container>\n }\n</div>\n\n<ng-template #shortPaginator>\n <button (click)=\"changePage(1)\" [disabled]=\"currentPage() === 1\">\n <pry-icon iconSvg=\"skip-left-fill\"></pry-icon>\n </button>\n <button (click)=\"changePage(currentPage() - 1)\" [disabled]=\"currentPage() === 1\">\n <pry-icon iconSvg=\"arrow-left-s-fill\"></pry-icon>\n </button>\n <span class=\"o-paginator__page-counter\">{{ currentPage() }} / {{ nbOfPages() }}</span>\n <button (click)=\"changePage(currentPage() + 1)\" [disabled]=\"currentPage() === maxLoadedPage()\">\n <pry-icon iconSvg=\"arrow-right-s-fill\"></pry-icon>\n </button>\n <button (click)=\"changePage(maxLoadedPage())\" [disabled]=\"currentPage() === maxLoadedPage()\">\n <pry-icon iconSvg=\"skip-right-fill\"></pry-icon>\n </button>\n</ng-template>\n\n<ng-template #longPaginator>\n @if (currentPage() > 1) {\n <button (click)=\"changePage(currentPage() - 1)\">\n <pry-icon iconSvg=\"chevron_left\"></pry-icon>\n </button>\n }\n @if (nbOfPages() > 8) {\n @if (currentPage() < 3) {\n @for (page of pages().slice(0, 3); track page) {\n <button\n class=\"a-btn -small-circle -no-padding\"\n [class.a-btn--primary]=\"page === currentPage()\"\n [class.a-btn--ghost]=\"page !== currentPage()\"\n (click)=\"changePage(page)\"\n >\n {{ page }}\n </button>\n }\n <span class=\"u-self-end\">...</span>\n <button class=\"a-btn -small-circle -no-padding\" (click)=\"changePage(pages().length)\">\n {{ pages().length }}\n </button>\n } @else if (currentPage() > pages().length - 2) {\n <button\n class=\"a-btn -small-circle -no-padding\"\n (click)=\"changePage(1)\"\n [class.a-btn--primary]=\"currentPage() === 1\"\n [class.a-btn--ghost]=\"currentPage() !== 1\"\n >\n 1\n </button>\n <span class=\"u-self-end\">...</span>\n @for (page of pages().slice(-3); track page) {\n <button\n class=\"a-btn -small-circle -no-padding\"\n [class.a-btn--primary]=\"page === currentPage()\"\n [class.a-btn--ghost]=\"page !== currentPage()\"\n (click)=\"changePage(page)\"\n >\n {{ page }}\n </button>\n }\n } @else {\n <button class=\"a-btn -small-circle -no-padding\" (click)=\"changePage(1)\">1</button>\n <span>...</span>\n @for (page of pages().slice(currentPage() - 2, currentPage() + 1); track page) {\n <button\n class=\"a-btn -small-circle -no-padding\"\n [class.a-btn--primary]=\"page === currentPage()\"\n [class.a-btn--ghost]=\"page !== currentPage()\"\n (click)=\"changePage(page)\"\n >\n {{ page }}\n </button>\n }\n <span>...</span>\n <button\n class=\"a-btn -small-circle -no-padding\"\n [class.a-btn--primary]=\"currentPage() === pages().length\"\n [class.a-btn--ghost]=\"currentPage() !== pages().length\"\n (click)=\"changePage(pages().length)\"\n >\n {{ pages().length }}\n </button>\n }\n } @else {\n @for (page of pages(); track page) {\n <button\n class=\"a-btn -small-circle -no-padding\"\n [class.a-btn--primary]=\"page === currentPage()\"\n [class.a-btn--ghost]=\"page !== currentPage()\"\n (click)=\"changePage(page)\"\n >\n {{ page }}\n </button>\n }\n }\n @if (currentPage() < pages().length) {\n <button (click)=\"changePage(currentPage() + 1)\">\n <pry-icon iconSvg=\"chevron_right\"></pry-icon>\n </button>\n }\n</ng-template>\n" }]
55
59
  }], ctorParameters: () => [], propDecorators: { pageChange: [{
56
60
  type: Output
57
61
  }] } });
58
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL2NvbXBvbmVudHMvcGFnaW5hdG9yL3BhZ2luYXRvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC9jb21wb25lbnRzL3BhZ2luYXRvci9wYWdpbmF0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BILE9BQU8sRUFBVSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7Ozs7O0FBTTVDLE1BQU0sT0FBTyxxQkFBcUI7SUFtQmhDO1FBbEJBLFVBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFdEIsV0FBTSxHQUFHLEtBQUssRUFBVSxDQUFDO1FBQ3pCLGNBQVMsR0FBRyxLQUFLLENBQVMsRUFBRSxDQUFDLENBQUM7UUFDOUIsZ0JBQVcsR0FBRyxLQUFLLENBQVMsR0FBRyxDQUFDLENBQUM7UUFDakMsU0FBSSxHQUFHLEtBQUssQ0FBbUIsTUFBTSxDQUFDLENBQUM7UUFDdkMsc0JBQWlCLEdBQUcsS0FBSyxFQUFPLENBQUM7UUFFakMsY0FBUyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDeEIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQztRQUMzRCxDQUFDLENBQUMsQ0FBQztRQUNILFVBQUssR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ3BCLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNuRSxDQUFDLENBQUMsQ0FBQztRQUNILGdCQUFXLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRWQsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFHaEQsTUFBTSxDQUNKLEdBQUcsRUFBRTtZQUNILHdEQUF3RDtZQUN4RCxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDO2dCQUN2QixJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztZQUNsQyxDQUFDO1FBQ0gsQ0FBQyxFQUNELEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxFQUFFLENBQzVCLENBQUM7UUFDRixNQUFNLENBQ0osR0FBRyxFQUFFO1lBQ0gsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsRUFBRSxDQUFDO2dCQUM3QixJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3JCLENBQUM7UUFDSCxDQUFDLEVBQ0QsRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsQ0FDNUIsQ0FBQztJQUNKLENBQUM7SUFFRCx3QkFBd0I7UUFDdEIsSUFBSSxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUM7Z0JBQ2xCLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7Z0JBQ3pCLGFBQWE7Z0JBQ2IsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUU7Z0JBQ25ELEtBQUssRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFO2FBQ3hCLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDO0lBRUQsVUFBVSxDQUFDLElBQVk7UUFDckIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0IsQ0FBQzs4R0FyRFUscUJBQXFCO2tHQUFyQixxQkFBcUIsa3dCQ1BsQyw0N0hBZ0hBOzsyRkR6R2EscUJBQXFCO2tCQUpqQyxTQUFTOytCQUNFLGVBQWU7d0RBb0JmLFVBQVU7c0JBQW5CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGNvbXB1dGVkLCBlZmZlY3QsIEV2ZW50RW1pdHRlciwgaW5qZWN0LCBpbnB1dCwgT3V0cHV0LCBzaWduYWwsIHVudHJhY2tlZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aW9uLCBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncHJ5LXBhZ2luYXRvcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9wYWdpbmF0b3IuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFByeVBhZ2luYXRvckNvbXBvbmVudCB7XG4gIHN0b3JlID0gaW5qZWN0KFN0b3JlKTtcblxuICBhY3Rpb24gPSBpbnB1dDxBY3Rpb24+KCk7XG4gIG5iUGVyUGFnZSA9IGlucHV0PG51bWJlcj4oMTApO1xuICB0b3RhbEl0ZW1OYiA9IGlucHV0PG51bWJlcj4oMTAwKTtcbiAgbW9kZSA9IGlucHV0PCdsb25nJyB8ICdzaG9ydCc+KCdsb25nJyk7XG4gIGdvQmFja1RvRmlyc3RQYWdlID0gaW5wdXQ8YW55PigpO1xuXG4gIG5iT2ZQYWdlcyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gTWF0aC5mbG9vcih0aGlzLnRvdGFsSXRlbU5iKCkgLyB0aGlzLm5iUGVyUGFnZSgpKTtcbiAgfSk7XG4gIHBhZ2VzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHsgbGVuZ3RoOiB0aGlzLm5iT2ZQYWdlcygpIH0sIChfLCBpKSA9PiBpICsgMSk7XG4gIH0pO1xuICBjdXJyZW50UGFnZSA9IHNpZ25hbCgxKTtcblxuICBAT3V0cHV0KCkgcGFnZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGVmZmVjdChcbiAgICAgICgpID0+IHtcbiAgICAgICAgLy8gaWYgY3VycmVudCBwYWdlIGNoYW5nZXMsIGRpc3BhdGNoIGFjdGlvbiB0byBsb2FkIGRhdGFcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudFBhZ2UoKSkge1xuICAgICAgICAgIHRoaXMuZGlzcGF0Y2hQYWdlQ2hhbmdlQWN0aW9uKCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH1cbiAgICApO1xuICAgIGVmZmVjdChcbiAgICAgICgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuZ29CYWNrVG9GaXJzdFBhZ2UoKSkge1xuICAgICAgICAgIHRoaXMuY2hhbmdlUGFnZSgxKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfVxuICAgICk7XG4gIH1cblxuICBkaXNwYXRjaFBhZ2VDaGFuZ2VBY3Rpb24oKSB7XG4gICAgaWYgKHVudHJhY2tlZCh0aGlzLmFjdGlvbikpIHtcbiAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goe1xuICAgICAgICAuLi51bnRyYWNrZWQodGhpcy5hY3Rpb24pLFxuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIG9mZnNldDogKHRoaXMuY3VycmVudFBhZ2UoKSAtIDEpICogdGhpcy5uYlBlclBhZ2UoKSxcbiAgICAgICAgbGltaXQ6IHRoaXMubmJQZXJQYWdlKClcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGNoYW5nZVBhZ2UocGFnZTogbnVtYmVyKSB7XG4gICAgdGhpcy5jdXJyZW50UGFnZS5zZXQocGFnZSk7XG4gICAgdGhpcy5wYWdlQ2hhbmdlLmVtaXQocGFnZSk7XG4gIH1cbn1cbiIsIjxwcnktcGFnaW5hdG9yLWNzcz48L3ByeS1wYWdpbmF0b3ItY3NzPlxuPGRpdlxuICBjbGFzcz1cIm8tcGFnaW5hdG9yIHUtZGlzcGxheS1mbGV4IC1hbGlnbi1jZW50ZXJcIlxuICBbY2xhc3Muby1wYWdpbmF0b3ItLWxvbmddPVwibW9kZSgpID09PSAnbG9uZydcIlxuICBbY2xhc3Muby1wYWdpbmF0b3ItLXNob3J0XT1cIm1vZGUoKSA9PT0gJ3Nob3J0J1wiXG4+XG4gIEBpZiAobW9kZSgpID09PSAnbG9uZycpIHtcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibG9uZ1BhZ2luYXRvclwiPjwvbmctY29udGFpbmVyPlxuICB9IEBlbHNlIHtcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic2hvcnRQYWdpbmF0b3JcIj48L25nLWNvbnRhaW5lcj5cbiAgfVxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjc2hvcnRQYWdpbmF0b3I+XG4gIDxidXR0b24gKGNsaWNrKT1cImNoYW5nZVBhZ2UoMSlcIiBbZGlzYWJsZWRdPVwiY3VycmVudFBhZ2UoKSA9PT0gMVwiPlxuICAgIDxwcnktaWNvbiBpY29uU3ZnPVwic2tpcC1sZWZ0LWZpbGxcIj48L3ByeS1pY29uPlxuICA8L2J1dHRvbj5cbiAgPGJ1dHRvbiAoY2xpY2spPVwiY2hhbmdlUGFnZShjdXJyZW50UGFnZSgpIC0gMSlcIiBbZGlzYWJsZWRdPVwiY3VycmVudFBhZ2UoKSA9PT0gMVwiPlxuICAgIDxwcnktaWNvbiBpY29uU3ZnPVwiYXJyb3ctbGVmdC1zLWZpbGxcIj48L3ByeS1pY29uPlxuICA8L2J1dHRvbj5cbiAgPHNwYW4gY2xhc3M9XCJvLXBhZ2luYXRvcl9fcGFnZS1jb3VudGVyXCI+e3sgY3VycmVudFBhZ2UoKSB9fSAvIHt7IG5iT2ZQYWdlcygpIH19PC9zcGFuPlxuICA8YnV0dG9uIChjbGljayk9XCJjaGFuZ2VQYWdlKGN1cnJlbnRQYWdlKCkgKyAxKVwiIFtkaXNhYmxlZF09XCJjdXJyZW50UGFnZSgpID09PSBuYk9mUGFnZXMoKVwiPlxuICAgIDxwcnktaWNvbiBpY29uU3ZnPVwiYXJyb3ctcmlnaHQtcy1maWxsXCI+PC9wcnktaWNvbj5cbiAgPC9idXR0b24+XG4gIDxidXR0b24gKGNsaWNrKT1cImNoYW5nZVBhZ2UobmJPZlBhZ2VzKCkpXCIgW2Rpc2FibGVkXT1cImN1cnJlbnRQYWdlKCkgPT09IG5iT2ZQYWdlcygpXCI+XG4gICAgPHByeS1pY29uIGljb25Tdmc9XCJza2lwLXJpZ2h0LWZpbGxcIj48L3ByeS1pY29uPlxuICA8L2J1dHRvbj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjbG9uZ1BhZ2luYXRvcj5cbiAgQGlmIChjdXJyZW50UGFnZSgpID4gMSkge1xuICAgIDxidXR0b24gKGNsaWNrKT1cImNoYW5nZVBhZ2UoY3VycmVudFBhZ2UoKSAtIDEpXCI+XG4gICAgICA8cHJ5LWljb24gaWNvblN2Zz1cImNoZXZyb25fbGVmdFwiPjwvcHJ5LWljb24+XG4gICAgPC9idXR0b24+XG4gIH1cbiAgQGlmIChuYk9mUGFnZXMoKSA+IDgpIHtcbiAgICBAaWYgKGN1cnJlbnRQYWdlKCkgPCAzKSB7XG4gICAgICBAZm9yIChwYWdlIG9mIHBhZ2VzKCkuc2xpY2UoMCwgMyk7IHRyYWNrIHBhZ2UpIHtcbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGNsYXNzPVwiYS1idG4gLXNtYWxsLWNpcmNsZSAtbm8tcGFkZGluZ1wiXG4gICAgICAgICAgW2NsYXNzLmEtYnRuLS1wcmltYXJ5XT1cInBhZ2UgPT09IGN1cnJlbnRQYWdlKClcIlxuICAgICAgICAgIFtjbGFzcy5hLWJ0bi0tZ2hvc3RdPVwicGFnZSAhPT0gY3VycmVudFBhZ2UoKVwiXG4gICAgICAgICAgKGNsaWNrKT1cImNoYW5nZVBhZ2UocGFnZSlcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgcGFnZSB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIH1cbiAgICAgIDxzcGFuIGNsYXNzPVwidS1zZWxmLWVuZFwiPi4uLjwvc3Bhbj5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJhLWJ0biAtc21hbGwtY2lyY2xlIC1uby1wYWRkaW5nXCIgKGNsaWNrKT1cImNoYW5nZVBhZ2UocGFnZXMoKS5sZW5ndGgpXCI+XG4gICAgICAgIHt7IHBhZ2VzKCkubGVuZ3RoIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICB9IEBlbHNlIGlmIChjdXJyZW50UGFnZSgpID4gcGFnZXMoKS5sZW5ndGggLSAyKSB7XG4gICAgICA8YnV0dG9uXG4gICAgICAgIGNsYXNzPVwiYS1idG4gLXNtYWxsLWNpcmNsZSAtbm8tcGFkZGluZ1wiXG4gICAgICAgIChjbGljayk9XCJjaGFuZ2VQYWdlKDEpXCJcbiAgICAgICAgW2NsYXNzLmEtYnRuLS1wcmltYXJ5XT1cImN1cnJlbnRQYWdlKCkgPT09IDFcIlxuICAgICAgICBbY2xhc3MuYS1idG4tLWdob3N0XT1cImN1cnJlbnRQYWdlKCkgIT09IDFcIlxuICAgICAgPlxuICAgICAgICAxXG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxzcGFuIGNsYXNzPVwidS1zZWxmLWVuZFwiPi4uLjwvc3Bhbj5cbiAgICAgIEBmb3IgKHBhZ2Ugb2YgcGFnZXMoKS5zbGljZSgtMyk7IHRyYWNrIHBhZ2UpIHtcbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGNsYXNzPVwiYS1idG4gLXNtYWxsLWNpcmNsZSAtbm8tcGFkZGluZ1wiXG4gICAgICAgICAgW2NsYXNzLmEtYnRuLS1wcmltYXJ5XT1cInBhZ2UgPT09IGN1cnJlbnRQYWdlKClcIlxuICAgICAgICAgIFtjbGFzcy5hLWJ0bi0tZ2hvc3RdPVwicGFnZSAhPT0gY3VycmVudFBhZ2UoKVwiXG4gICAgICAgICAgKGNsaWNrKT1cImNoYW5nZVBhZ2UocGFnZSlcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgcGFnZSB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIH1cbiAgICB9IEBlbHNlIHtcbiAgICAgIDxidXR0b24gY2xhc3M9XCJhLWJ0biAtc21hbGwtY2lyY2xlIC1uby1wYWRkaW5nXCIgKGNsaWNrKT1cImNoYW5nZVBhZ2UoMSlcIj4xPC9idXR0b24+XG4gICAgICA8c3Bhbj4uLi48L3NwYW4+XG4gICAgICBAZm9yIChwYWdlIG9mIHBhZ2VzKCkuc2xpY2UoY3VycmVudFBhZ2UoKSAtIDIsIGN1cnJlbnRQYWdlKCkgKyAxKTsgdHJhY2sgcGFnZSkge1xuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgY2xhc3M9XCJhLWJ0biAtc21hbGwtY2lyY2xlIC1uby1wYWRkaW5nXCJcbiAgICAgICAgICBbY2xhc3MuYS1idG4tLXByaW1hcnldPVwicGFnZSA9PT0gY3VycmVudFBhZ2UoKVwiXG4gICAgICAgICAgW2NsYXNzLmEtYnRuLS1naG9zdF09XCJwYWdlICE9PSBjdXJyZW50UGFnZSgpXCJcbiAgICAgICAgICAoY2xpY2spPVwiY2hhbmdlUGFnZShwYWdlKVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBwYWdlIH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgfVxuICAgICAgPHNwYW4+Li4uPC9zcGFuPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBjbGFzcz1cImEtYnRuIC1zbWFsbC1jaXJjbGUgLW5vLXBhZGRpbmdcIlxuICAgICAgICBbY2xhc3MuYS1idG4tLXByaW1hcnldPVwiY3VycmVudFBhZ2UoKSA9PT0gcGFnZXMoKS5sZW5ndGhcIlxuICAgICAgICBbY2xhc3MuYS1idG4tLWdob3N0XT1cImN1cnJlbnRQYWdlKCkgIT09IHBhZ2VzKCkubGVuZ3RoXCJcbiAgICAgICAgKGNsaWNrKT1cImNoYW5nZVBhZ2UocGFnZXMoKS5sZW5ndGgpXCJcbiAgICAgID5cbiAgICAgICAge3sgcGFnZXMoKS5sZW5ndGggfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgQGZvciAocGFnZSBvZiBwYWdlcygpOyB0cmFjayBwYWdlKSB7XG4gICAgICA8YnV0dG9uXG4gICAgICAgIGNsYXNzPVwiYS1idG4gLXNtYWxsLWNpcmNsZSAtbm8tcGFkZGluZ1wiXG4gICAgICAgIFtjbGFzcy5hLWJ0bi0tcHJpbWFyeV09XCJwYWdlID09PSBjdXJyZW50UGFnZSgpXCJcbiAgICAgICAgW2NsYXNzLmEtYnRuLS1naG9zdF09XCJwYWdlICE9PSBjdXJyZW50UGFnZSgpXCJcbiAgICAgICAgKGNsaWNrKT1cImNoYW5nZVBhZ2UocGFnZSlcIlxuICAgICAgPlxuICAgICAgICB7eyBwYWdlIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICB9XG4gIH1cbiAgQGlmIChjdXJyZW50UGFnZSgpIDwgcGFnZXMoKS5sZW5ndGgpIHtcbiAgICA8YnV0dG9uIChjbGljayk9XCJjaGFuZ2VQYWdlKGN1cnJlbnRQYWdlKCkgKyAxKVwiPlxuICAgICAgPHByeS1pY29uIGljb25Tdmc9XCJjaGV2cm9uX3JpZ2h0XCI+PC9wcnktaWNvbj5cbiAgICA8L2J1dHRvbj5cbiAgfVxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
62
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL2NvbXBvbmVudHMvcGFnaW5hdG9yL3BhZ2luYXRvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC9jb21wb25lbnRzL3BhZ2luYXRvci9wYWdpbmF0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BILE9BQU8sRUFBVSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7Ozs7O0FBTTVDLE1BQU0sT0FBTyxxQkFBcUI7SUF1QmhDO1FBdEJBLFVBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFdEIsV0FBTSxHQUFHLEtBQUssRUFBVSxDQUFDO1FBQ3pCLGNBQVMsR0FBRyxLQUFLLENBQVMsRUFBRSxDQUFDLENBQUM7UUFDOUIsZ0JBQVcsR0FBRyxLQUFLLENBQVMsR0FBRyxDQUFDLENBQUM7UUFDakMsU0FBSSxHQUFHLEtBQUssQ0FBbUIsTUFBTSxDQUFDLENBQUM7UUFDdkMsc0JBQWlCLEdBQUcsS0FBSyxFQUFPLENBQUM7UUFDakMsV0FBTSxHQUFHLEtBQUssQ0FBUyxDQUFDLENBQUMsQ0FBQztRQUUxQixjQUFTLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUN4QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQzFELENBQUMsQ0FBQyxDQUFDO1FBQ0gsVUFBSyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDcEIsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ25FLENBQUMsQ0FBQyxDQUFDO1FBQ0gsZ0JBQVcsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDeEIsa0JBQWEsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQzVCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQztRQUM1RCxDQUFDLENBQUMsQ0FBQztRQUVPLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBR2hELE1BQU0sQ0FDSixHQUFHLEVBQUU7WUFDSCx3REFBd0Q7WUFDeEQsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQztnQkFDdkIsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7WUFDbEMsQ0FBQztRQUNILENBQUMsRUFDRCxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBRSxDQUM1QixDQUFDO1FBQ0YsTUFBTSxDQUNKLEdBQUcsRUFBRTtZQUNILElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFLEVBQUUsQ0FBQztnQkFDN0IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNyQixDQUFDO1FBQ0gsQ0FBQyxFQUNELEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxFQUFFLENBQzVCLENBQUM7SUFDSixDQUFDO0lBRUQsd0JBQXdCO1FBQ3RCLElBQUksU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDO2dCQUNsQixHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO2dCQUN6QixhQUFhO2dCQUNiLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFO2dCQUNuRCxLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRTthQUN4QixDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQztJQUVELFVBQVUsQ0FBQyxJQUFZO1FBQ3JCLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdCLENBQUM7OEdBekRVLHFCQUFxQjtrR0FBckIscUJBQXFCLDYzQkNQbEMsdzhIQWdIQTs7MkZEekdhLHFCQUFxQjtrQkFKakMsU0FBUzsrQkFDRSxlQUFlO3dEQXdCZixVQUFVO3NCQUFuQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBjb21wdXRlZCwgZWZmZWN0LCBFdmVudEVtaXR0ZXIsIGluamVjdCwgaW5wdXQsIE91dHB1dCwgc2lnbmFsLCB1bnRyYWNrZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGlvbiwgU3RvcmUgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ByeS1wYWdpbmF0b3InLFxuICB0ZW1wbGF0ZVVybDogJy4vcGFnaW5hdG9yLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBQcnlQYWdpbmF0b3JDb21wb25lbnQge1xuICBzdG9yZSA9IGluamVjdChTdG9yZSk7XG5cbiAgYWN0aW9uID0gaW5wdXQ8QWN0aW9uPigpO1xuICBuYlBlclBhZ2UgPSBpbnB1dDxudW1iZXI+KDEwKTtcbiAgdG90YWxJdGVtTmIgPSBpbnB1dDxudW1iZXI+KDEwMCk7XG4gIG1vZGUgPSBpbnB1dDwnbG9uZycgfCAnc2hvcnQnPignbG9uZycpO1xuICBnb0JhY2tUb0ZpcnN0UGFnZSA9IGlucHV0PGFueT4oKTtcbiAgbG9hZGVkID0gaW5wdXQ8bnVtYmVyPigwKTtcblxuICBuYk9mUGFnZXMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIE1hdGguY2VpbCh0aGlzLnRvdGFsSXRlbU5iKCkgLyB0aGlzLm5iUGVyUGFnZSgpKTtcbiAgfSk7XG4gIHBhZ2VzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHsgbGVuZ3RoOiB0aGlzLm5iT2ZQYWdlcygpIH0sIChfLCBpKSA9PiBpICsgMSk7XG4gIH0pO1xuICBjdXJyZW50UGFnZSA9IHNpZ25hbCgxKTtcbiAgbWF4TG9hZGVkUGFnZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gTWF0aC5jZWlsKCh0aGlzLmxvYWRlZCgpID8/IDApIC8gdGhpcy5uYlBlclBhZ2UoKSk7XG4gIH0pO1xuXG4gIEBPdXRwdXQoKSBwYWdlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgZWZmZWN0KFxuICAgICAgKCkgPT4ge1xuICAgICAgICAvLyBpZiBjdXJyZW50IHBhZ2UgY2hhbmdlcywgZGlzcGF0Y2ggYWN0aW9uIHRvIGxvYWQgZGF0YVxuICAgICAgICBpZiAodGhpcy5jdXJyZW50UGFnZSgpKSB7XG4gICAgICAgICAgdGhpcy5kaXNwYXRjaFBhZ2VDaGFuZ2VBY3Rpb24oKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfVxuICAgICk7XG4gICAgZWZmZWN0KFxuICAgICAgKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5nb0JhY2tUb0ZpcnN0UGFnZSgpKSB7XG4gICAgICAgICAgdGhpcy5jaGFuZ2VQYWdlKDEpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9XG4gICAgKTtcbiAgfVxuXG4gIGRpc3BhdGNoUGFnZUNoYW5nZUFjdGlvbigpIHtcbiAgICBpZiAodW50cmFja2VkKHRoaXMuYWN0aW9uKSkge1xuICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaCh7XG4gICAgICAgIC4uLnVudHJhY2tlZCh0aGlzLmFjdGlvbiksXG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgb2Zmc2V0OiAodGhpcy5jdXJyZW50UGFnZSgpIC0gMSkgKiB0aGlzLm5iUGVyUGFnZSgpLFxuICAgICAgICBsaW1pdDogdGhpcy5uYlBlclBhZ2UoKVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgY2hhbmdlUGFnZShwYWdlOiBudW1iZXIpIHtcbiAgICB0aGlzLmN1cnJlbnRQYWdlLnNldChwYWdlKTtcbiAgICB0aGlzLnBhZ2VDaGFuZ2UuZW1pdChwYWdlKTtcbiAgfVxufVxuIiwiPHByeS1wYWdpbmF0b3ItY3NzPjwvcHJ5LXBhZ2luYXRvci1jc3M+XG48ZGl2XG4gIGNsYXNzPVwiby1wYWdpbmF0b3IgdS1kaXNwbGF5LWZsZXggLWFsaWduLWNlbnRlclwiXG4gIFtjbGFzcy5vLXBhZ2luYXRvci0tbG9uZ109XCJtb2RlKCkgPT09ICdsb25nJ1wiXG4gIFtjbGFzcy5vLXBhZ2luYXRvci0tc2hvcnRdPVwibW9kZSgpID09PSAnc2hvcnQnXCJcbj5cbiAgQGlmIChtb2RlKCkgPT09ICdsb25nJykge1xuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJsb25nUGFnaW5hdG9yXCI+PC9uZy1jb250YWluZXI+XG4gIH0gQGVsc2Uge1xuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzaG9ydFBhZ2luYXRvclwiPjwvbmctY29udGFpbmVyPlxuICB9XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNzaG9ydFBhZ2luYXRvcj5cbiAgPGJ1dHRvbiAoY2xpY2spPVwiY2hhbmdlUGFnZSgxKVwiIFtkaXNhYmxlZF09XCJjdXJyZW50UGFnZSgpID09PSAxXCI+XG4gICAgPHByeS1pY29uIGljb25Tdmc9XCJza2lwLWxlZnQtZmlsbFwiPjwvcHJ5LWljb24+XG4gIDwvYnV0dG9uPlxuICA8YnV0dG9uIChjbGljayk9XCJjaGFuZ2VQYWdlKGN1cnJlbnRQYWdlKCkgLSAxKVwiIFtkaXNhYmxlZF09XCJjdXJyZW50UGFnZSgpID09PSAxXCI+XG4gICAgPHByeS1pY29uIGljb25Tdmc9XCJhcnJvdy1sZWZ0LXMtZmlsbFwiPjwvcHJ5LWljb24+XG4gIDwvYnV0dG9uPlxuICA8c3BhbiBjbGFzcz1cIm8tcGFnaW5hdG9yX19wYWdlLWNvdW50ZXJcIj57eyBjdXJyZW50UGFnZSgpIH19IC8ge3sgbmJPZlBhZ2VzKCkgfX08L3NwYW4+XG4gIDxidXR0b24gKGNsaWNrKT1cImNoYW5nZVBhZ2UoY3VycmVudFBhZ2UoKSArIDEpXCIgW2Rpc2FibGVkXT1cImN1cnJlbnRQYWdlKCkgPT09IG1heExvYWRlZFBhZ2UoKVwiPlxuICAgIDxwcnktaWNvbiBpY29uU3ZnPVwiYXJyb3ctcmlnaHQtcy1maWxsXCI+PC9wcnktaWNvbj5cbiAgPC9idXR0b24+XG4gIDxidXR0b24gKGNsaWNrKT1cImNoYW5nZVBhZ2UobWF4TG9hZGVkUGFnZSgpKVwiIFtkaXNhYmxlZF09XCJjdXJyZW50UGFnZSgpID09PSBtYXhMb2FkZWRQYWdlKClcIj5cbiAgICA8cHJ5LWljb24gaWNvblN2Zz1cInNraXAtcmlnaHQtZmlsbFwiPjwvcHJ5LWljb24+XG4gIDwvYnV0dG9uPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNsb25nUGFnaW5hdG9yPlxuICBAaWYgKGN1cnJlbnRQYWdlKCkgPiAxKSB7XG4gICAgPGJ1dHRvbiAoY2xpY2spPVwiY2hhbmdlUGFnZShjdXJyZW50UGFnZSgpIC0gMSlcIj5cbiAgICAgIDxwcnktaWNvbiBpY29uU3ZnPVwiY2hldnJvbl9sZWZ0XCI+PC9wcnktaWNvbj5cbiAgICA8L2J1dHRvbj5cbiAgfVxuICBAaWYgKG5iT2ZQYWdlcygpID4gOCkge1xuICAgIEBpZiAoY3VycmVudFBhZ2UoKSA8IDMpIHtcbiAgICAgIEBmb3IgKHBhZ2Ugb2YgcGFnZXMoKS5zbGljZSgwLCAzKTsgdHJhY2sgcGFnZSkge1xuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgY2xhc3M9XCJhLWJ0biAtc21hbGwtY2lyY2xlIC1uby1wYWRkaW5nXCJcbiAgICAgICAgICBbY2xhc3MuYS1idG4tLXByaW1hcnldPVwicGFnZSA9PT0gY3VycmVudFBhZ2UoKVwiXG4gICAgICAgICAgW2NsYXNzLmEtYnRuLS1naG9zdF09XCJwYWdlICE9PSBjdXJyZW50UGFnZSgpXCJcbiAgICAgICAgICAoY2xpY2spPVwiY2hhbmdlUGFnZShwYWdlKVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBwYWdlIH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgfVxuICAgICAgPHNwYW4gY2xhc3M9XCJ1LXNlbGYtZW5kXCI+Li4uPC9zcGFuPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImEtYnRuIC1zbWFsbC1jaXJjbGUgLW5vLXBhZGRpbmdcIiAoY2xpY2spPVwiY2hhbmdlUGFnZShwYWdlcygpLmxlbmd0aClcIj5cbiAgICAgICAge3sgcGFnZXMoKS5sZW5ndGggfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgIH0gQGVsc2UgaWYgKGN1cnJlbnRQYWdlKCkgPiBwYWdlcygpLmxlbmd0aCAtIDIpIHtcbiAgICAgIDxidXR0b25cbiAgICAgICAgY2xhc3M9XCJhLWJ0biAtc21hbGwtY2lyY2xlIC1uby1wYWRkaW5nXCJcbiAgICAgICAgKGNsaWNrKT1cImNoYW5nZVBhZ2UoMSlcIlxuICAgICAgICBbY2xhc3MuYS1idG4tLXByaW1hcnldPVwiY3VycmVudFBhZ2UoKSA9PT0gMVwiXG4gICAgICAgIFtjbGFzcy5hLWJ0bi0tZ2hvc3RdPVwiY3VycmVudFBhZ2UoKSAhPT0gMVwiXG4gICAgICA+XG4gICAgICAgIDFcbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPHNwYW4gY2xhc3M9XCJ1LXNlbGYtZW5kXCI+Li4uPC9zcGFuPlxuICAgICAgQGZvciAocGFnZSBvZiBwYWdlcygpLnNsaWNlKC0zKTsgdHJhY2sgcGFnZSkge1xuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgY2xhc3M9XCJhLWJ0biAtc21hbGwtY2lyY2xlIC1uby1wYWRkaW5nXCJcbiAgICAgICAgICBbY2xhc3MuYS1idG4tLXByaW1hcnldPVwicGFnZSA9PT0gY3VycmVudFBhZ2UoKVwiXG4gICAgICAgICAgW2NsYXNzLmEtYnRuLS1naG9zdF09XCJwYWdlICE9PSBjdXJyZW50UGFnZSgpXCJcbiAgICAgICAgICAoY2xpY2spPVwiY2hhbmdlUGFnZShwYWdlKVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBwYWdlIH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgfVxuICAgIH0gQGVsc2Uge1xuICAgICAgPGJ1dHRvbiBjbGFzcz1cImEtYnRuIC1zbWFsbC1jaXJjbGUgLW5vLXBhZGRpbmdcIiAoY2xpY2spPVwiY2hhbmdlUGFnZSgxKVwiPjE8L2J1dHRvbj5cbiAgICAgIDxzcGFuPi4uLjwvc3Bhbj5cbiAgICAgIEBmb3IgKHBhZ2Ugb2YgcGFnZXMoKS5zbGljZShjdXJyZW50UGFnZSgpIC0gMiwgY3VycmVudFBhZ2UoKSArIDEpOyB0cmFjayBwYWdlKSB7XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBjbGFzcz1cImEtYnRuIC1zbWFsbC1jaXJjbGUgLW5vLXBhZGRpbmdcIlxuICAgICAgICAgIFtjbGFzcy5hLWJ0bi0tcHJpbWFyeV09XCJwYWdlID09PSBjdXJyZW50UGFnZSgpXCJcbiAgICAgICAgICBbY2xhc3MuYS1idG4tLWdob3N0XT1cInBhZ2UgIT09IGN1cnJlbnRQYWdlKClcIlxuICAgICAgICAgIChjbGljayk9XCJjaGFuZ2VQYWdlKHBhZ2UpXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IHBhZ2UgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICB9XG4gICAgICA8c3Bhbj4uLi48L3NwYW4+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIGNsYXNzPVwiYS1idG4gLXNtYWxsLWNpcmNsZSAtbm8tcGFkZGluZ1wiXG4gICAgICAgIFtjbGFzcy5hLWJ0bi0tcHJpbWFyeV09XCJjdXJyZW50UGFnZSgpID09PSBwYWdlcygpLmxlbmd0aFwiXG4gICAgICAgIFtjbGFzcy5hLWJ0bi0tZ2hvc3RdPVwiY3VycmVudFBhZ2UoKSAhPT0gcGFnZXMoKS5sZW5ndGhcIlxuICAgICAgICAoY2xpY2spPVwiY2hhbmdlUGFnZShwYWdlcygpLmxlbmd0aClcIlxuICAgICAgPlxuICAgICAgICB7eyBwYWdlcygpLmxlbmd0aCB9fVxuICAgICAgPC9idXR0b24+XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICBAZm9yIChwYWdlIG9mIHBhZ2VzKCk7IHRyYWNrIHBhZ2UpIHtcbiAgICAgIDxidXR0b25cbiAgICAgICAgY2xhc3M9XCJhLWJ0biAtc21hbGwtY2lyY2xlIC1uby1wYWRkaW5nXCJcbiAgICAgICAgW2NsYXNzLmEtYnRuLS1wcmltYXJ5XT1cInBhZ2UgPT09IGN1cnJlbnRQYWdlKClcIlxuICAgICAgICBbY2xhc3MuYS1idG4tLWdob3N0XT1cInBhZ2UgIT09IGN1cnJlbnRQYWdlKClcIlxuICAgICAgICAoY2xpY2spPVwiY2hhbmdlUGFnZShwYWdlKVwiXG4gICAgICA+XG4gICAgICAgIHt7IHBhZ2UgfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgIH1cbiAgfVxuICBAaWYgKGN1cnJlbnRQYWdlKCkgPCBwYWdlcygpLmxlbmd0aCkge1xuICAgIDxidXR0b24gKGNsaWNrKT1cImNoYW5nZVBhZ2UoY3VycmVudFBhZ2UoKSArIDEpXCI+XG4gICAgICA8cHJ5LWljb24gaWNvblN2Zz1cImNoZXZyb25fcmlnaHRcIj48L3ByeS1pY29uPlxuICAgIDwvYnV0dG9uPlxuICB9XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -10,13 +10,14 @@ import * as i4 from "../dataset-version-form/dataset-version-form.component";
10
10
  import * as i5 from "@provoly/dashboard/components/text-editor";
11
11
  let nextCompId = 0;
12
12
  export class PryDatasetDetailComponent extends SubscriptionnerDirective {
13
- constructor(store, access, dialog, titleService, i18nService) {
13
+ constructor(store, access, dialog, titleService, i18nService, widgetFactoryService) {
14
14
  super();
15
15
  this.store = store;
16
16
  this.access = access;
17
17
  this.dialog = dialog;
18
18
  this.titleService = titleService;
19
19
  this.i18nService = i18nService;
20
+ this.widgetFactoryService = widgetFactoryService;
20
21
  this.goToCatalog = new EventEmitter();
21
22
  this.widgetManifest = {
22
23
  table: {
@@ -24,7 +25,8 @@ export class PryDatasetDetailComponent extends SubscriptionnerDirective {
24
25
  type: 'table',
25
26
  layout: { x: 1, y: 1, height: 12, width: 12 },
26
27
  options: {},
27
- datasource: ['']
28
+ datasource: [''],
29
+ excludeGeo: 'exclude-geo'
28
30
  },
29
31
  map: {
30
32
  header: false,
@@ -35,7 +37,8 @@ export class PryDatasetDetailComponent extends SubscriptionnerDirective {
35
37
  fit: true,
36
38
  automaticLayers: true
37
39
  },
38
- datasource: ['']
40
+ datasource: [''],
41
+ excludeGeo: 'exclude-geo'
39
42
  }
40
43
  };
41
44
  this.ViewMode = ViewMode;
@@ -55,11 +58,6 @@ export class PryDatasetDetailComponent extends SubscriptionnerDirective {
55
58
  this.canModify$ = this.access?.canModifyDataset(this.dataset) ?? of(false);
56
59
  this.store.dispatch(DataSourceActions.dataset.listVersionsByDatasetId({ id: this.dataset.id }));
57
60
  this.store.dispatch(DashboardActions.removeFilters());
58
- this.store.dispatch(SearchActions.getDatasourceItems({
59
- id: this.dataset.id,
60
- excludeGeo: false,
61
- from: 'PryDatasetDetailComponent.ngOnInit()'
62
- }));
63
61
  this.currentDataset$ = this.store.select(DataSourceSelectors.datasets).pipe(map((datasets) => datasets.find((currentDataset) => currentDataset.id === this.dataset.id)), tap((dataset) => {
64
62
  if (dataset) {
65
63
  this.titleService.changeTitle(this.i18nService.instant('title.list-dataset-d', { name: dataset.name }, false));
@@ -167,7 +165,7 @@ export class PryDatasetDetailComponent extends SubscriptionnerDirective {
167
165
  this.store.dispatch(DataSourceActions.dataset.confirmDeleteVersion({ version }));
168
166
  $event?.stopPropagation();
169
167
  }
170
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: PryDatasetDetailComponent, deps: [{ token: i1.Store }, { token: PRY_ACCESS_TOKEN, optional: true }, { token: i2.PryDialogService }, { token: i2.PryTitleService }, { token: i2.PryI18nService }], target: i0.ɵɵFactoryTarget.Component }); }
168
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: PryDatasetDetailComponent, deps: [{ token: i1.Store }, { token: PRY_ACCESS_TOKEN, optional: true }, { token: i2.PryDialogService }, { token: i2.PryTitleService }, { token: i2.PryI18nService }, { token: i2.WidgetFactoryService }], target: i0.ɵɵFactoryTarget.Component }); }
171
169
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: PryDatasetDetailComponent, selector: "pry-dataset-detail", inputs: { dataset: "dataset" }, outputs: { goToCatalog: "goToCatalog" }, usesInheritance: true, ngImport: i0, template: "<div class=\"o-manifest-layout__toolbox\">\n <button class=\"a-btn a-btn--primary\" (click)=\"goBack()\">{{ '@pry.dataset.returnToList' | i18n }}</button>\n <button class=\"a-btn a-btn--secondary\" (click)=\"refresh()\">\n {{ '@pry.dataset.refresh' | i18n }}\n <pry-icon iconSvg=\"synchro\"></pry-icon>\n </button>\n</div>\n\n<div class=\"o-dataset-layout\">\n <div class=\"o-dataset-layout__content\">\n <div class=\"a-p\">\n <h1 class=\"a-h1\">{{ (currentDataset$ | async)?.name }}</h1>\n </div>\n\n <div class=\"o-dataset-detail\">\n <div class=\"o-dataset-detail__content\">\n <pry-tab-group translationStringBase=\"@pry.dataset.\" (clickedTabIdx)=\"onTabSwitch($event)\">\n <pry-tab [templateRef]=\"information\" name=\"information\"></pry-tab>\n <pry-tab [templateRef]=\"table\" name=\"data\"></pry-tab>\n <pry-tab [templateRef]=\"map\" name=\"map\"></pry-tab>\n <pry-tab [templateRef]=\"datasetVersions\" name=\"versionHistory\"></pry-tab>\n </pry-tab-group>\n </div>\n </div>\n </div>\n @if (isPanelOpen) {\n <div class=\"o-dataset-layout__panel\">\n <div class=\"panel__header u-display-flex -justify-space-between\">\n <h3>{{ '@pry.dataset.information' | i18n }}</h3>\n <button role=\"button\" (click)=\"togglePanel()\">\n <pry-icon iconSvg=\"close\"></pry-icon>\n </button>\n </div>\n <div class=\"panel__content u-display-flex -column\">\n @if (!isEditingVersion) {\n <div>\n <span class=\"a-label\">{{ '@pry.dataset.version.productionDate' | i18n }}</span>\n <span>{{\n (selectedVersion?.productionDate | date: 'dd-MM-yyyy, HH:mm') ??\n ('@pry.dataset.version.notProvided' | i18n)\n }}</span>\n </div>\n <div>\n <span class=\"a-label\">{{ '@pry.dataset.version.producer' | i18n }}</span>\n <span>{{ selectedVersion?.producer ?? ('@pry.dataset.version.notProvided' | i18n) }}</span>\n </div>\n <div>\n <span class=\"a-label\">{{ '@pry.dataset.version.additionalInformation' | i18n }}</span>\n <div\n class=\"version-information\"\n [innerHTML]=\"\n selectedVersion?.additionalInformation ?? ('@pry.dataset.version.notProvided' | i18n) | mdToHtml\n \"\n ></div>\n </div>\n <button\n *pryAccess=\"{ module: 'admin', page: 'list-dataset', action: 'edit_version' }\"\n role=\"button\"\n class=\"a-btn a-btn--primary u-self-end\"\n (click)=\"editVersion()\"\n >\n {{ '@pry.action.edit' | i18n }}\n </button>\n } @else {\n <pry-dataset-version-form\n [version]=\"selectedVersion\"\n (formValidated)=\"formValidated($event)\"\n ></pry-dataset-version-form>\n }\n </div>\n </div>\n }\n</div>\n\n<ng-template #information>\n <div class=\"u-display-flex -column o-dataset-detail__information\">\n <div>\n <span class=\"a-label\">{{ '@pry.dataset.description' | i18n }}</span>\n <span>{{ dataset.description ?? ('@pry.dataset.version.notProvided' | i18n) }}</span>\n </div>\n @if (dataset.activeVersion) {\n <div>\n <span class=\"a-label\">{{ '@pry.dataset.version.productionDate' | i18n }}</span>\n <span>{{\n (dataset.activeVersion.productionDate | date: 'dd-MM-yyyy, HH:mm') ??\n ('@pry.dataset.version.notProvided' | i18n)\n }}</span>\n </div>\n <div>\n <span class=\"a-label\">{{ '@pry.dataset.version.producer' | i18n }}</span>\n <span>{{ dataset.activeVersion.producer ?? ('@pry.dataset.version.notProvided' | i18n) }}</span>\n </div>\n <div>\n <span class=\"a-label\">{{ '@pry.dataset.version.additionalInformation' | i18n }}</span>\n <div\n class=\"version-information\"\n [innerHTML]=\"\n dataset.activeVersion.additionalInformation ?? ('@pry.dataset.version.notProvided' | i18n) | mdToHtml\n \"\n ></div>\n </div>\n } @else {\n <div class=\"a-p\">\n <p>{{ '@pry.dataset.noActiveVersion' | i18n }}</p>\n </div>\n }\n <div>\n <span class=\"a-label\">{{ '@pry.dataset.tags' | i18n }}</span>\n <div class=\"u-display-flex -wrap\">\n @for (category of dataset.categories; track category.id) {\n <span class=\"a-chip -md\"> {{ category.name }}</span>\n }\n </div>\n </div>\n </div>\n</ng-template>\n\n<ng-template #table>\n <div class=\"dashboard-container\">\n <pry-dashboard [staticDashboard]=\"{ widgets: [widgetManifest['table']] }\"></pry-dashboard>\n </div>\n</ng-template>\n<ng-template #map>\n <div class=\"dashboard-container\">\n <pry-dashboard [staticDashboard]=\"{ widgets: [widgetManifest['map']] }\"></pry-dashboard>\n </div>\n</ng-template>\n<ng-template #datasetVersions>\n <div class=\"dataset-detail__table table-container\">\n <table class=\"a-table\">\n <caption>\n {{\n '@pry.admin.dataset.title' | i18n\n }},\n {{\n '@pry.action.sortableColumnHeader' | i18n\n }}\n </caption>\n <thead>\n <tr>\n <th>{{ '@pry.dataset.version.title' | i18n }}</th>\n <th>{{ '@pry.dataset.date' | i18n }}</th>\n <th>{{ '@pry.dataset.status' | i18n }}</th>\n <th></th>\n <th></th>\n <th></th>\n </tr>\n </thead>\n <tbody>\n <tr\n *ngFor=\"let version of datasetVersions$ | async\"\n (click)=\"togglePanel(version)\"\n [class.-selected]=\"version.id === selectedVersion?.id\"\n >\n <td>\n {{ version.version }}\n <pry-icon\n *ngIf=\"(currentDataset$ | async)?.activeVersion?.id === version.id\"\n iconSvg=\"check\"\n class=\"check\"\n ></pry-icon>\n </td>\n <td>\n <div\n class=\"a-tooltip\"\n [attr.data-tooltip]=\"version.lastModified | sinceDate: { onlyLocale: true }\"\n data-tooltip-position=\"right\"\n >\n {{ version.lastModified | sinceDate: { onlyLocale: true } }}\n </div>\n </td>\n <td>\n {{\n (version.id === (currentDataset$ | async)?.activeVersion?.id\n ? '@pry.dataset.version.state.currentlyActive'\n : '@pry.dataset.version.state.' + version.state\n ) | i18n\n }}\n <div\n *ngIf=\"version.state !== 'DELETING'\"\n class=\"m-info-icon a-tooltip -tooltip-width-md\"\n [attr.data-tooltip]=\"\n '@pry.dataset.tooltip.' +\n getVersionTooltipContent(version, (currentDataset$ | async)?.activeVersion?.id) | i18n\n \"\n data-tooltip-position=\"right\"\n >\n <span>i</span>\n </div>\n </td>\n <td>\n <ng-container\n *ngIf=\"\n version.state !== 'LOADING' &&\n version.state !== 'INDEXING' &&\n version.state !== 'ERROR' &&\n version.state !== 'DELETING'\n \"\n >\n <ng-container\n *ngIf=\"(canModify$ | async) && (version.state === 'ACTIVE' || version.state === 'INACTIVE')\"\n >\n <ng-container *pryAccess=\"{ module: 'dashboard', page: 'list-dataset', action: 'activate' }\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--primary a-btn--icon-text ng-star-inserted\"\n (click)=\"handleButtonAction($event, version)\"\n >\n {{ '@pry.dataset.buttonAction.' + version.state | i18n }}\n </button>\n <ng-container *ngIf=\"version.state === 'ACTIVE' || version.state === 'INACTIVE'\">\n <div\n class=\"m-info-icon a-tooltip -tooltip-width-lg\"\n [attr.data-tooltip]=\"\n (version.state === 'ACTIVE'\n ? '@pry.dataset.tooltip.invalidateButton'\n : '@pry.dataset.tooltip.validateButton'\n ) | i18n\n \"\n data-tooltip-position=\"right\"\n >\n <span>i</span>\n </div>\n </ng-container>\n </ng-container>\n </ng-container>\n </ng-container>\n </td>\n <td>\n <ng-container *ngIf=\"version.hasWarnings || version.state === 'ERROR'\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--secondary a-btn--icon-text ng-star-inserted\"\n (click)=\"consultErrors($event, version)\"\n >\n {{\n (version.state === 'ERROR' ? '@pry.dataset.buttonAction.ERROR' : '@pry.dataset.buttonAction.WARNING')\n | i18n\n }}\n </button>\n </ng-container>\n </td>\n <td>\n <ng-container\n *ngIf=\"\n (canModify$ | async) &&\n (version.state === 'ACTIVE' || version.state === 'ERROR' || version.state === 'INACTIVE')\n \"\n >\n <button\n type=\"button\"\n class=\"a-btn a-btn--secondary a-btn--icon-text ng-star-inserted\"\n (click)=\"askDelete(version, $event)\"\n >\n {{ '@pry.dataset.buttonAction.delete' | i18n }}\n </button>\n </ng-container>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "directive", type: i2.PryAccessDirective, selector: "[pryAccess]", inputs: ["pryAccess"] }, { kind: "component", type: i2.TabGroupComponent, selector: "pry-tab-group", inputs: ["translationStringBase"], outputs: ["clickedTabIdx"] }, { kind: "component", type: i2.TabComponent, selector: "pry-tab", inputs: ["name", "templateRef", "index"] }, { kind: "component", type: i2.DashboardComponent, selector: "pry-dashboard", inputs: ["staticDashboard", "forceModeEdition", "CloseOnDragOut", "displayOptions", "noBackground", "breakpoint"], outputs: ["rowHeight", "rows"] }, { kind: "component", type: i4.PryDatasetVersionFormComponent, selector: "pry-dataset-version-form", inputs: ["version"], outputs: ["formValidated"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.DatePipe, name: "date" }, { kind: "pipe", type: i2.I18nPipe, name: "i18n" }, { kind: "pipe", type: i5.MdToHtmlPipe, name: "mdToHtml" }, { kind: "pipe", type: i2.SinceDatePipe, name: "sinceDate" }] }); }
172
170
  }
173
171
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: PryDatasetDetailComponent, decorators: [{
@@ -178,9 +176,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
178
176
  }, {
179
177
  type: Inject,
180
178
  args: [PRY_ACCESS_TOKEN]
181
- }] }, { type: i2.PryDialogService }, { type: i2.PryTitleService }, { type: i2.PryI18nService }], propDecorators: { dataset: [{
179
+ }] }, { type: i2.PryDialogService }, { type: i2.PryTitleService }, { type: i2.PryI18nService }, { type: i2.WidgetFactoryService }], propDecorators: { dataset: [{
182
180
  type: Input
183
181
  }], goToCatalog: [{
184
182
  type: Output
185
183
  }] } });
186
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXNldC1kZXRhaWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9kYXNoYm9hcmQvZGF0YXNldC9jb21wb25lbnRzL2RhdGFzZXQtZGV0YWlsL2RhdGFzZXQtZGV0YWlsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL2RhdGFzZXQvY29tcG9uZW50cy9kYXRhc2V0LWRldGFpbC9kYXRhc2V0LWRldGFpbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFVLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFakcsT0FBTyxFQUNMLGdCQUFnQixFQUNoQixrQkFBa0IsRUFHbEIsaUJBQWlCLEVBQ2pCLG1CQUFtQixFQUNuQixnQkFBZ0IsRUFJaEIsdUJBQXVCLEVBR3ZCLGFBQWEsRUFDYix3QkFBd0IsRUFDeEIsUUFBUSxFQUVULE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFFLEdBQUcsRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7O0FBRXJDLElBQUksVUFBVSxHQUFHLENBQUMsQ0FBQztBQU1uQixNQUFNLE9BQU8seUJBQTBCLFNBQVEsd0JBQXdCO0lBcUNyRSxZQUNVLEtBQVksRUFDNEIsTUFBcUIsRUFDN0QsTUFBd0IsRUFDeEIsWUFBNkIsRUFDN0IsV0FBMkI7UUFFbkMsS0FBSyxFQUFFLENBQUM7UUFOQSxVQUFLLEdBQUwsS0FBSyxDQUFPO1FBQzRCLFdBQU0sR0FBTixNQUFNLENBQWU7UUFDN0QsV0FBTSxHQUFOLE1BQU0sQ0FBa0I7UUFDeEIsaUJB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QUFPLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDakYsTUFBTSxFQUFFLGVBQWUsRUFBRSxDQUFDO0lBQzVCLENBQUM7OEdBdk1VLHlCQUF5Qix1Q0F1Q2QsZ0JBQWdCO2tHQXZDM0IseUJBQXlCLDBKQzlCdEMsMDRUQXVRQTs7MkZEek9hLHlCQUF5QjtrQkFKckMsU0FBUzsrQkFDRSxvQkFBb0I7OzBCQTBDM0IsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxnQkFBZ0I7bUlBdEM3QixPQUFPO3NCQUFmLEtBQUs7Z0JBQ0ksV0FBVztzQkFBcEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbmplY3QsIElucHV0LCBPbkluaXQsIE9wdGlvbmFsLCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHtcbiAgRGFzaGJvYXJkQWN0aW9ucyxcbiAgRGFzaGJvYXJkU2VsZWN0b3JzLFxuICBEYXRhc2V0LFxuICBEYXRhc2V0VmVyc2lvbixcbiAgRGF0YVNvdXJjZUFjdGlvbnMsXG4gIERhdGFTb3VyY2VTZWxlY3RvcnMsXG4gIFBSWV9BQ0NFU1NfVE9LRU4sXG4gIFByeUJhc2VBY2Nlc3MsXG4gIFByeURpYWxvZ1NlcnZpY2UsXG4gIFByeUkxOG5TZXJ2aWNlLFxuICBQcnlTdGF0dXNNb2RhbENvbXBvbmVudCxcbiAgUHJ5VGl0bGVTZXJ2aWNlLFxuICBSZXN1bHRTZXRzLFxuICBTZWFyY2hBY3Rpb25zLFxuICBTdWJzY3JpcHRpb25uZXJEaXJlY3RpdmUsXG4gIFZpZXdNb2RlLFxuICBXaWRnZXRNYW5pZmVzdFxufSBmcm9tICdAcHJvdm9seS9kYXNoYm9hcmQnO1xuaW1wb3J0IHsgbWFwLCBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5sZXQgbmV4dENvbXBJZCA9IDA7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ByeS1kYXRhc2V0LWRldGFpbCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRhc2V0LWRldGFpbC5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgUHJ5RGF0YXNldERldGFpbENvbXBvbmVudCBleHRlbmRzIFN1YnNjcmlwdGlvbm5lckRpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIGRhdGFzZXQhOiBEYXRhc2V0O1xuICBAT3V0cHV0KCkgZ29Ub0NhdGFsb2cgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIHdpZGdldE1hbmlmZXN0ID0ge1xuICAgIHRhYmxlOiB7XG4gICAgICBoZWFkZXI6IHRydWUsXG4gICAgICB0eXBlOiAndGFibGUnLFxuICAgICAgbGF5b3V0OiB7IHg6IDEsIHk6IDEsIGhlaWdodDogMTIsIHdpZHRoOiAxMiB9LFxuICAgICAgb3B0aW9uczoge30sXG4gICAgICBkYXRhc291cmNlOiBbJyddXG4gICAgfSxcbiAgICBtYXA6IHtcbiAgICAgIGhlYWRlcjogZmFsc2UsXG4gICAgICB0eXBlOiAnbWFwJyxcbiAgICAgIGxheW91dDogeyB4OiAxLCB5OiAxLCBoZWlnaHQ6IDEyLCB3aWR0aDogMTIgfSxcbiAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgbGF5ZXJzOiBbXSxcbiAgICAgICAgZml0OiB0cnVlLFxuICAgICAgICBhdXRvbWF0aWNMYXllcnM6IHRydWVcbiAgICAgIH0sXG4gICAgICBkYXRhc291cmNlOiBbJyddXG4gICAgfVxuICB9IGFzIHsgW2tleTogc3RyaW5nXTogV2lkZ2V0TWFuaWZlc3QgfTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IFZpZXdNb2RlID0gVmlld01vZGU7XG4gIGNvbXBJZDogbnVtYmVyID0gMDtcbiAgdGFiOiBudW1iZXIgPSAwO1xuICBkYXRhc2V0SXRlbXMkOiBPYnNlcnZhYmxlPFJlc3VsdFNldHMgfCBudWxsPjtcbiAgcHVibGljIGRhdGFzZXRWZXJzaW9ucyQhOiBPYnNlcnZhYmxlPERhdGFzZXRWZXJzaW9uW10+O1xuICBzZWxlY3RlZERhdGFzZXRWZXJzaW9uPzogRGF0YXNldFZlcnNpb247XG4gIHNlbGVjdGVkTW9kZTogVmlld01vZGUgPSBWaWV3TW9kZS5DT05TVUxUO1xuICBpc0VkaXRpbmdWZXJzaW9uID0gZmFsc2U7XG4gIGNhbk1vZGlmeSQhOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBjdXJyZW50RGF0YXNldCQhOiBPYnNlcnZhYmxlPERhdGFzZXQgfCB1bmRlZmluZWQ+O1xuXG4gIGlzUGFuZWxPcGVuOiBib29sZWFuID0gZmFsc2U7XG4gIHNlbGVjdGVkVmVyc2lvbj86IERhdGFzZXRWZXJzaW9uO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgc3RvcmU6IFN0b3JlLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoUFJZX0FDQ0VTU19UT0tFTikgcHJvdGVjdGVkIGFjY2VzczogUHJ5QmFzZUFjY2VzcyxcbiAgICBwcml2YXRlIGRpYWxvZzogUHJ5RGlhbG9nU2VydmljZSxcbiAgICBwcml2YXRlIHRpdGxlU2VydmljZTogUHJ5VGl0bGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgaTE4blNlcnZpY2U6IFByeUkxOG5TZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5kYXRhc2V0SXRlbXMkID0gdGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLnJlc3VsdFNldHMpO1xuICAgIHRoaXMuY29tcElkID0gbmV4dENvbXBJZCsrO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMuZGFzaGJvYXJkRWRpdGlvbk1vZGUpLnN1YnNjcmliZSgoZWRpdGlvbk1vZGUpID0+IHtcbiAgICAgICAgaWYgKGVkaXRpb25Nb2RlKSB0aGlzLnN0b3JlLmRpc3BhdGNoKERhc2hib2FyZEFjdGlvbnMudG9nZ2xlRWRpdGlvbk1vZGUoe30pKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuY2FuTW9kaWZ5JCA9IHRoaXMuYWNjZXNzPy5jYW5Nb2RpZnlEYXRhc2V0KHRoaXMuZGF0YXNldCkgPz8gb2YoZmFsc2UpO1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goRGF0YVNvdXJjZUFjdGlvbnMuZGF0YXNldC5saXN0VmVyc2lvbnNCeURhdGFzZXRJZCh7IGlkOiB0aGlzLmRhdGFzZXQuaWQgfSkpO1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goRGFzaGJvYXJkQWN0aW9ucy5yZW1vdmVGaWx0ZXJzKCkpO1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goXG4gICAgICBTZWFyY2hBY3Rpb25zLmdldERhdGFzb3VyY2VJdGVtcyh7XG4gICAgICAgIGlkOiB0aGlzLmRhdGFzZXQuaWQsXG4gICAgICAgIGV4Y2x1ZGVHZW86IGZhbHNlLFxuICAgICAgICBmcm9tOiAnUHJ5RGF0YXNldERldGFpbENvbXBvbmVudC5uZ09uSW5pdCgpJ1xuICAgICAgfSlcbiAgICApO1xuXG4gICAgdGhpcy5jdXJyZW50RGF0YXNldCQgPSB0aGlzLnN0b3JlLnNlbGVjdChEYXRhU291cmNlU2VsZWN0b3JzLmRhdGFzZXRzKS5waXBlKFxuICAgICAgbWFwKChkYXRhc2V0cykgPT4gZGF0YXNldHMuZmluZCgoY3VycmVudERhdGFzZXQpID0+IGN1cnJlbnREYXRhc2V0LmlkID09PSB0aGlzLmRhdGFzZXQuaWQpKSxcbiAgICAgIHRhcCgoZGF0YXNldCkgPT4ge1xuICAgICAgICBpZiAoZGF0YXNldCkge1xuICAgICAgICAgIHRoaXMudGl0bGVTZXJ2aWNlLmNoYW5nZVRpdGxlKFxuICAgICAgICAgICAgdGhpcy5pMThuU2VydmljZS5pbnN0YW50KCd0aXRsZS5saXN0LWRhdGFzZXQtZCcsIHsgbmFtZTogZGF0YXNldC5uYW1lIH0sIGZhbHNlKVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHRoaXMuZGF0YXNldFZlcnNpb25zJCA9IHRoaXMuc3RvcmUuc2VsZWN0KERhdGFTb3VyY2VTZWxlY3RvcnMuZGF0YXNldFZlcnNpb25zKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgdGhpcy5kYXRhc2V0VmVyc2lvbnMkLnN1YnNjcmliZSgodmVyc2lvbnMpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRWZXJzaW9uKSB7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFZlcnNpb24gPSB7XG4gICAgICAgICAgICAuLi50aGlzLnNlbGVjdGVkVmVyc2lvbixcbiAgICAgICAgICAgIC4uLnZlcnNpb25zLmZpbmQoKHZlcnNpb24pID0+IHZlcnNpb24uaWQgPT09IHRoaXMuc2VsZWN0ZWRWZXJzaW9uPy5pZClcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLndpZGdldE1hbmlmZXN0Wyd0YWJsZSddLmRhdGFzb3VyY2UgPSBbdGhpcy5kYXRhc2V0LmlkXTtcbiAgICB0aGlzLndpZGdldE1hbmlmZXN0WydtYXAnXS5kYXRhc291cmNlID0gW3RoaXMuZGF0YXNldC5pZF07XG4gIH1cblxuICBnb0JhY2soKSB7XG4gICAgdGhpcy5nb1RvQ2F0YWxvZy5lbWl0KCk7XG4gICAgdGhpcy50aXRsZVNlcnZpY2UuY2hhbmdlVGl0bGUodGhpcy5pMThuU2VydmljZS5pbnN0YW50KCd0aXRsZS5saXN0LWRhdGFzZXQnLCB7fSwgZmFsc2UpKTtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKERhdGFTb3VyY2VBY3Rpb25zLmRhdGFzZXQubGlzdFZlcnNpb25zKHt9KSk7XG4gIH1cblxuICByZWZyZXNoKCkge1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goXG4gICAgICBTZWFyY2hBY3Rpb25zLmdldERhdGFzb3VyY2VJdGVtcyh7XG4gICAgICAgIGlkOiB0aGlzLmRhdGFzZXQuaWQsXG4gICAgICAgIGV4Y2x1ZGVHZW86IGZhbHNlLFxuICAgICAgICBmcm9tOiAnUHJ5RGF0YXNldERldGFpbENvbXBvbmVudC5yZWZyZXNoKCknXG4gICAgICB9KVxuICAgICk7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChEYXRhU291cmNlQWN0aW9ucy5kYXRhc2V0LmxvYWREYXRhc2V0KCkpO1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goRGF0YVNvdXJjZUFjdGlvbnMuZGF0YXNldC5saXN0VmVyc2lvbnNCeURhdGFzZXRJZCh7IGlkOiB0aGlzLmRhdGFzZXQuaWQgfSkpO1xuICB9XG5cbiAgc3dpdGNoKG51bWJlcjogbnVtYmVyKSB7XG4gICAgdGhpcy50YWIgPSBudW1iZXI7XG4gIH1cblxuICBoYW5kbGVCdXR0b25BY3Rpb24oJGV2ZW50OiBFdmVudCwgdmVyc2lvbjogRGF0YXNldFZlcnNpb24pIHtcbiAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5zZWxlY3RlZERhdGFzZXRWZXJzaW9uID0gdmVyc2lvbjtcbiAgICBzd2l0Y2ggKHZlcnNpb24uc3RhdGUpIHtcbiAgICAgIGNhc2UgJ0FDVElWRSc6XG4gICAgICAgIHRoaXMuZGVhY3RpdmF0ZVZlcnNpb24odmVyc2lvbik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnSU5BQ1RJVkUnOlxuICAgICAgICB0aGlzLmFjdGl2YXRlVmVyc2lvbih2ZXJzaW9uKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBjb25zdWx0RXJyb3JzKCRldmVudDogRXZlbnQsIHZlcnNpb246IERhdGFzZXRWZXJzaW9uKSB7XG4gICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMuZGlhbG9nLm9wZW4oUHJ5U3RhdHVzTW9kYWxDb21wb25lbnQsIHsgZGF0YTogeyB2ZXJzaW9uOiB2ZXJzaW9uIH0gfSk7XG4gIH1cblxuICBnZXRWZXJzaW9uVG9vbHRpcENvbnRlbnQodmVyc2lvbjogRGF0YXNldFZlcnNpb24sIGFjdGl2ZVZlcnNpb25JZD86IHN0cmluZykge1xuICAgIHN3aXRjaCAodmVyc2lvbi5zdGF0ZSkge1xuICAgICAgY2FzZSAnRVJST1InOlxuICAgICAgICByZXR1cm4gJ2Vycm9yJztcbiAgICAgIGNhc2UgJ0FDVElWRSc6XG4gICAgICAgIHJldHVybiB2ZXJzaW9uLmlkID09PSBhY3RpdmVWZXJzaW9uSWQgPyAnYWN0aXZlJyA6ICdpbmFjdGl2ZSc7XG4gICAgICBjYXNlICdMT0FESU5HJzpcbiAgICAgIGNhc2UgJ0lOREVYSU5HJzpcbiAgICAgICAgcmV0dXJuICdsb2FkaW5nJztcbiAgICAgIGNhc2UgJ0lOQUNUSVZFJzpcbiAgICAgICAgcmV0dXJuICdpbnZhbGlkJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAndW5rbm93bic7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBkZWFjdGl2YXRlVmVyc2lvbih2ZXJzaW9uOiBEYXRhc2V0VmVyc2lvbikge1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goXG4gICAgICBEYXRhU291cmNlQWN0aW9ucy5kYXRhc2V0LmRlYWN0aXZhdGVEYXRhc2V0VmVyc2lvbih7XG4gICAgICAgIGRhdGFzZXRJZDogdGhpcy5kYXRhc2V0LmlkLFxuICAgICAgICB2ZXJzaW9uSWQ6IHZlcnNpb24uaWRcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgYWN0aXZhdGVWZXJzaW9uKHZlcnNpb246IERhdGFzZXRWZXJzaW9uKSB7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChcbiAgICAgIERhdGFTb3VyY2VBY3Rpb25zLmRhdGFzZXQuYWN0aXZhdGVEYXRhc2V0VmVyc2lvbih7XG4gICAgICAgIGRhdGFzZXRJZDogdGhpcy5kYXRhc2V0LmlkLFxuICAgICAgICB2ZXJzaW9uSWQ6IHZlcnNpb24uaWRcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIG9uVGFiU3dpdGNoKCRldmVudDogbnVtYmVyKSB7XG4gICAgaWYgKFswLCAxLCAyXS5pbmNsdWRlcygkZXZlbnQpKSB7XG4gICAgICB0aGlzLmlzUGFuZWxPcGVuID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgdG9nZ2xlUGFuZWwoc2VsZWN0ZWRWZXJzaW9uPzogRGF0YXNldFZlcnNpb24pIHtcbiAgICBpZiAoc2VsZWN0ZWRWZXJzaW9uKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkVmVyc2lvbiA9IHNlbGVjdGVkVmVyc2lvbjtcbiAgICAgIHRoaXMuaXNQYW5lbE9wZW4gPSB0cnVlO1xuICAgICAgdGhpcy5pc0VkaXRpbmdWZXJzaW9uID0gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaXNQYW5lbE9wZW4gPSAhdGhpcy5pc1BhbmVsT3BlbjtcbiAgICAgIHRoaXMuc2VsZWN0ZWRWZXJzaW9uID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIGVkaXRWZXJzaW9uKCkge1xuICAgIHRoaXMuaXNFZGl0aW5nVmVyc2lvbiA9IHRydWU7XG4gIH1cblxuICBmb3JtVmFsaWRhdGVkKCRldmVudDogUGFydGlhbDxEYXRhc2V0VmVyc2lvbj4pIHtcbiAgICB0aGlzLmlzRWRpdGluZ1ZlcnNpb24gPSBmYWxzZTtcbiAgfVxuXG4gIGFza0RlbGV0ZSh2ZXJzaW9uOiBEYXRhc2V0VmVyc2lvbiwgJGV2ZW50PzogRXZlbnQpIHtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKERhdGFTb3VyY2VBY3Rpb25zLmRhdGFzZXQuY29uZmlybURlbGV0ZVZlcnNpb24oeyB2ZXJzaW9uIH0pKTtcbiAgICAkZXZlbnQ/LnN0b3BQcm9wYWdhdGlvbigpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiby1tYW5pZmVzdC1sYXlvdXRfX3Rvb2xib3hcIj5cbiAgPGJ1dHRvbiBjbGFzcz1cImEtYnRuIGEtYnRuLS1wcmltYXJ5XCIgKGNsaWNrKT1cImdvQmFjaygpXCI+e3sgJ0BwcnkuZGF0YXNldC5yZXR1cm5Ub0xpc3QnIHwgaTE4biB9fTwvYnV0dG9uPlxuICA8YnV0dG9uIGNsYXNzPVwiYS1idG4gYS1idG4tLXNlY29uZGFyeVwiIChjbGljayk9XCJyZWZyZXNoKClcIj5cbiAgICB7eyAnQHByeS5kYXRhc2V0LnJlZnJlc2gnIHwgaTE4biB9fVxuICAgIDxwcnktaWNvbiBpY29uU3ZnPVwic3luY2hyb1wiPjwvcHJ5LWljb24+XG4gIDwvYnV0dG9uPlxuPC9kaXY+XG5cbjxkaXYgY2xhc3M9XCJvLWRhdGFzZXQtbGF5b3V0XCI+XG4gIDxkaXYgY2xhc3M9XCJvLWRhdGFzZXQtbGF5b3V0X19jb250ZW50XCI+XG4gICAgPGRpdiBjbGFzcz1cImEtcFwiPlxuICAgICAgPGgxIGNsYXNzPVwiYS1oMVwiPnt7IChjdXJyZW50RGF0YXNldCQgfCBhc3luYyk/Lm5hbWUgfX08L2gxPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cIm8tZGF0YXNldC1kZXRhaWxcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJvLWRhdGFzZXQtZGV0YWlsX19jb250ZW50XCI+XG4gICAgICAgIDxwcnktdGFiLWdyb3VwIHRyYW5zbGF0aW9uU3RyaW5nQmFzZT1cIkBwcnkuZGF0YXNldC5cIiAoY2xpY2tlZFRhYklkeCk9XCJvblRhYlN3aXRjaCgkZXZlbnQpXCI+XG4gICAgICAgICAgPHByeS10YWIgW3RlbXBsYXRlUmVmXT1cImluZm9ybWF0aW9uXCIgbmFtZT1cImluZm9ybWF0aW9uXCI+PC9wcnktdGFiPlxuICAgICAgICAgIDxwcnktdGFiIFt0ZW1wbGF0ZVJlZl09XCJ0YWJsZVwiIG5hbWU9XCJkYXRhXCI+PC9wcnktdGFiPlxuICAgICAgICAgIDxwcnktdGFiIFt0ZW1wbGF0ZVJlZl09XCJtYXBcIiBuYW1lPVwibWFwXCI+PC9wcnktdGFiPlxuICAgICAgICAgIDxwcnktdGFiIFt0ZW1wbGF0ZVJlZl09XCJkYXRhc2V0VmVyc2lvbnNcIiBuYW1lPVwidmVyc2lvbkhpc3RvcnlcIj48L3ByeS10YWI+XG4gICAgICAgIDwvcHJ5LXRhYi1ncm91cD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgQGlmIChpc1BhbmVsT3Blbikge1xuICAgIDxkaXYgY2xhc3M9XCJvLWRhdGFzZXQtbGF5b3V0X19wYW5lbFwiPlxuICAgICAgPGRpdiBjbGFzcz1cInBhbmVsX19oZWFkZXIgdS1kaXNwbGF5LWZsZXggLWp1c3RpZnktc3BhY2UtYmV0d2VlblwiPlxuICAgICAgICA8aDM+e3sgJ0BwcnkuZGF0YXNldC5pbmZvcm1hdGlvbicgfCBpMThuIH19PC9oMz5cbiAgICAgICAgPGJ1dHRvbiByb2xlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInRvZ2dsZVBhbmVsKClcIj5cbiAgICAgICAgICA8cHJ5LWljb24gaWNvblN2Zz1cImNsb3NlXCI+PC9wcnktaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJwYW5lbF9fY29udGVudCB1LWRpc3BsYXktZmxleCAtY29sdW1uXCI+XG4gICAgICAgIEBpZiAoIWlzRWRpdGluZ1ZlcnNpb24pIHtcbiAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhLWxhYmVsXCI+e3sgJ0BwcnkuZGF0YXNldC52ZXJzaW9uLnByb2R1Y3Rpb25EYXRlJyB8IGkxOG4gfX08L3NwYW4+XG4gICAgICAgICAgICA8c3Bhbj57e1xuICAgICAgICAgICAgICAoc2VsZWN0ZWRWZXJzaW9uPy5wcm9kdWN0aW9uRGF0ZSB8IGRhdGU6ICdkZC1NTS15eXl5LCBISDptbScpID8/XG4gICAgICAgICAgICAgICAgKCdAcHJ5LmRhdGFzZXQudmVyc2lvbi5ub3RQcm92aWRlZCcgfCBpMThuKVxuICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYS1sYWJlbFwiPnt7ICdAcHJ5LmRhdGFzZXQudmVyc2lvbi5wcm9kdWNlcicgfCBpMThuIH19PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4+e3sgc2VsZWN0ZWRWZXJzaW9uPy5wcm9kdWNlciA/PyAoJ0BwcnkuZGF0YXNldC52ZXJzaW9uLm5vdFByb3ZpZGVkJyB8IGkxOG4pIH19PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImEtbGFiZWxcIj57eyAnQHByeS5kYXRhc2V0LnZlcnNpb24uYWRkaXRpb25hbEluZm9ybWF0aW9uJyB8IGkxOG4gfX08L3NwYW4+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwidmVyc2lvbi1pbmZvcm1hdGlvblwiXG4gICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwiXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRWZXJzaW9uPy5hZGRpdGlvbmFsSW5mb3JtYXRpb24gPz8gKCdAcHJ5LmRhdGFzZXQudmVyc2lvbi5ub3RQcm92aWRlZCcgfCBpMThuKSB8IG1kVG9IdG1sXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgKnByeUFjY2Vzcz1cInsgbW9kdWxlOiAnYWRtaW4nLCBwYWdlOiAnbGlzdC1kYXRhc2V0JywgYWN0aW9uOiAnZWRpdF92ZXJzaW9uJyB9XCJcbiAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgY2xhc3M9XCJhLWJ0biBhLWJ0bi0tcHJpbWFyeSB1LXNlbGYtZW5kXCJcbiAgICAgICAgICAgIChjbGljayk9XCJlZGl0VmVyc2lvbigpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyAnQHByeS5hY3Rpb24uZWRpdCcgfCBpMThuIH19XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgIDxwcnktZGF0YXNldC12ZXJzaW9uLWZvcm1cbiAgICAgICAgICAgIFt2ZXJzaW9uXT1cInNlbGVjdGVkVmVyc2lvblwiXG4gICAgICAgICAgICAoZm9ybVZhbGlkYXRlZCk9XCJmb3JtVmFsaWRhdGVkKCRldmVudClcIlxuICAgICAgICAgID48L3ByeS1kYXRhc2V0LXZlcnNpb24tZm9ybT5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIH1cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI2luZm9ybWF0aW9uPlxuICA8ZGl2IGNsYXNzPVwidS1kaXNwbGF5LWZsZXggLWNvbHVtbiBvLWRhdGFzZXQtZGV0YWlsX19pbmZvcm1hdGlvblwiPlxuICAgIDxkaXY+XG4gICAgICA8c3BhbiBjbGFzcz1cImEtbGFiZWxcIj57eyAnQHByeS5kYXRhc2V0LmRlc2NyaXB0aW9uJyB8IGkxOG4gfX08L3NwYW4+XG4gICAgICA8c3Bhbj57eyBkYXRhc2V0LmRlc2NyaXB0aW9uID8/ICgnQHByeS5kYXRhc2V0LnZlcnNpb24ubm90UHJvdmlkZWQnIHwgaTE4bikgfX08L3NwYW4+XG4gICAgPC9kaXY+XG4gICAgQGlmIChkYXRhc2V0LmFjdGl2ZVZlcnNpb24pIHtcbiAgICAgIDxkaXY+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiYS1sYWJlbFwiPnt7ICdAcHJ5LmRhdGFzZXQudmVyc2lvbi5wcm9kdWN0aW9uRGF0ZScgfCBpMThuIH19PC9zcGFuPlxuICAgICAgICA8c3Bhbj57e1xuICAgICAgICAgIChkYXRhc2V0LmFjdGl2ZVZlcnNpb24ucHJvZHVjdGlvbkRhdGUgfCBkYXRlOiAnZGQtTU0teXl5eSwgSEg6bW0nKSA/P1xuICAgICAgICAgICAgKCdAcHJ5LmRhdGFzZXQudmVyc2lvbi5ub3RQcm92aWRlZCcgfCBpMThuKVxuICAgICAgICB9fTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJhLWxhYmVsXCI+e3sgJ0BwcnkuZGF0YXNldC52ZXJzaW9uLnByb2R1Y2VyJyB8IGkxOG4gfX08L3NwYW4+XG4gICAgICAgIDxzcGFuPnt7IGRhdGFzZXQuYWN0aXZlVmVyc2lvbi5wcm9kdWNlciA/PyAoJ0BwcnkuZGF0YXNldC52ZXJzaW9uLm5vdFByb3ZpZGVkJyB8IGkxOG4pIH19PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2PlxuICAgICAgICA8c3BhbiBjbGFzcz1cImEtbGFiZWxcIj57eyAnQHByeS5kYXRhc2V0LnZlcnNpb24uYWRkaXRpb25hbEluZm9ybWF0aW9uJyB8IGkxOG4gfX08L3NwYW4+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cInZlcnNpb24taW5mb3JtYXRpb25cIlxuICAgICAgICAgIFtpbm5lckhUTUxdPVwiXG4gICAgICAgICAgICBkYXRhc2V0LmFjdGl2ZVZlcnNpb24uYWRkaXRpb25hbEluZm9ybWF0aW9uID8/ICgnQHByeS5kYXRhc2V0LnZlcnNpb24ubm90UHJvdmlkZWQnIHwgaTE4bikgfCBtZFRvSHRtbFxuICAgICAgICAgIFwiXG4gICAgICAgID48L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIH0gQGVsc2Uge1xuICAgICAgPGRpdiBjbGFzcz1cImEtcFwiPlxuICAgICAgICA8cD57eyAnQHByeS5kYXRhc2V0Lm5vQWN0aXZlVmVyc2lvbicgfCBpMThuIH19PC9wPlxuICAgICAgPC9kaXY+XG4gICAgfVxuICAgIDxkaXY+XG4gICAgICA8c3BhbiBjbGFzcz1cImEtbGFiZWxcIj57eyAnQHByeS5kYXRhc2V0LnRhZ3MnIHwgaTE4biB9fTwvc3Bhbj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ1LWRpc3BsYXktZmxleCAtd3JhcFwiPlxuICAgICAgICBAZm9yIChjYXRlZ29yeSBvZiBkYXRhc2V0LmNhdGVnb3JpZXM7IHRyYWNrIGNhdGVnb3J5LmlkKSB7XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJhLWNoaXAgLW1kXCI+IHt7IGNhdGVnb3J5Lm5hbWUgfX08L3NwYW4+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjdGFibGU+XG4gIDxkaXYgY2xhc3M9XCJkYXNoYm9hcmQtY29udGFpbmVyXCI+XG4gICAgPHByeS1kYXNoYm9hcmQgW3N0YXRpY0Rhc2hib2FyZF09XCJ7IHdpZGdldHM6IFt3aWRnZXRNYW5pZmVzdFsndGFibGUnXV0gfVwiPjwvcHJ5LWRhc2hib2FyZD5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICNtYXA+XG4gIDxkaXYgY2xhc3M9XCJkYXNoYm9hcmQtY29udGFpbmVyXCI+XG4gICAgPHByeS1kYXNoYm9hcmQgW3N0YXRpY0Rhc2hib2FyZF09XCJ7IHdpZGdldHM6IFt3aWRnZXRNYW5pZmVzdFsnbWFwJ11dIH1cIj48L3ByeS1kYXNoYm9hcmQ+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjZGF0YXNldFZlcnNpb25zPlxuICA8ZGl2IGNsYXNzPVwiZGF0YXNldC1kZXRhaWxfX3RhYmxlIHRhYmxlLWNvbnRhaW5lclwiPlxuICAgIDx0YWJsZSBjbGFzcz1cImEtdGFibGVcIj5cbiAgICAgIDxjYXB0aW9uPlxuICAgICAgICB7e1xuICAgICAgICAgICdAcHJ5LmFkbWluLmRhdGFzZXQudGl0bGUnIHwgaTE4blxuICAgICAgICB9fSxcbiAgICAgICAge3tcbiAgICAgICAgICAnQHByeS5hY3Rpb24uc29ydGFibGVDb2x1bW5IZWFkZXInIHwgaTE4blxuICAgICAgICB9fVxuICAgICAgPC9jYXB0aW9uPlxuICAgICAgPHRoZWFkPlxuICAgICAgICA8dHI+XG4gICAgICAgICAgPHRoPnt7ICdAcHJ5LmRhdGFzZXQudmVyc2lvbi50aXRsZScgfCBpMThuIH19PC90aD5cbiAgICAgICAgICA8dGg+e3sgJ0BwcnkuZGF0YXNldC5kYXRlJyB8IGkxOG4gfX08L3RoPlxuICAgICAgICAgIDx0aD57eyAnQHByeS5kYXRhc2V0LnN0YXR1cycgfCBpMThuIH19PC90aD5cbiAgICAgICAgICA8dGg+PC90aD5cbiAgICAgICAgICA8dGg+PC90aD5cbiAgICAgICAgICA8dGg+PC90aD5cbiAgICAgICAgPC90cj5cbiAgICAgIDwvdGhlYWQ+XG4gICAgICA8dGJvZHk+XG4gICAgICAgIDx0clxuICAgICAgICAgICpuZ0Zvcj1cImxldCB2ZXJzaW9uIG9mIGRhdGFzZXRWZXJzaW9ucyQgfCBhc3luY1wiXG4gICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVBhbmVsKHZlcnNpb24pXCJcbiAgICAgICAgICBbY2xhc3MuLXNlbGVjdGVkXT1cInZlcnNpb24uaWQgPT09IHNlbGVjdGVkVmVyc2lvbj8uaWRcIlxuICAgICAgICA+XG4gICAgICAgICAgPHRkPlxuICAgICAgICAgICAge3sgdmVyc2lvbi52ZXJzaW9uIH19XG4gICAgICAgICAgICA8cHJ5LWljb25cbiAgICAgICAgICAgICAgKm5nSWY9XCIoY3VycmVudERhdGFzZXQkIHwgYXN5bmMpPy5hY3RpdmVWZXJzaW9uPy5pZCA9PT0gdmVyc2lvbi5pZFwiXG4gICAgICAgICAgICAgIGljb25Tdmc9XCJjaGVja1wiXG4gICAgICAgICAgICAgIGNsYXNzPVwiY2hlY2tcIlxuICAgICAgICAgICAgPjwvcHJ5LWljb24+XG4gICAgICAgICAgPC90ZD5cbiAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwiYS10b29sdGlwXCJcbiAgICAgICAgICAgICAgW2F0dHIuZGF0YS10b29sdGlwXT1cInZlcnNpb24ubGFzdE1vZGlmaWVkIHwgc2luY2VEYXRlOiB7IG9ubHlMb2NhbGU6IHRydWUgfVwiXG4gICAgICAgICAgICAgIGRhdGEtdG9vbHRpcC1wb3NpdGlvbj1cInJpZ2h0XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgdmVyc2lvbi5sYXN0TW9kaWZpZWQgfCBzaW5jZURhdGU6IHsgb25seUxvY2FsZTogdHJ1ZSB9IH19XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L3RkPlxuICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICh2ZXJzaW9uLmlkID09PSAoY3VycmVudERhdGFzZXQkIHwgYXN5bmMpPy5hY3RpdmVWZXJzaW9uPy5pZFxuICAgICAgICAgICAgICAgID8gJ0BwcnkuZGF0YXNldC52ZXJzaW9uLnN0YXRlLmN1cnJlbnRseUFjdGl2ZSdcbiAgICAgICAgICAgICAgICA6ICdAcHJ5LmRhdGFzZXQudmVyc2lvbi5zdGF0ZS4nICsgdmVyc2lvbi5zdGF0ZVxuICAgICAgICAgICAgICApIHwgaTE4blxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgKm5nSWY9XCJ2ZXJzaW9uLnN0YXRlICE9PSAnREVMRVRJTkcnXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJtLWluZm8taWNvbiBhLXRvb2x0aXAgLXRvb2x0aXAtd2lkdGgtbWRcIlxuICAgICAgICAgICAgICBbYXR0ci5kYXRhLXRvb2x0aXBdPVwiXG4gICAgICAgICAgICAgICAgJ0BwcnkuZGF0YXNldC50b29sdGlwLicgK1xuICAgICAgICAgICAgICAgICAgZ2V0VmVyc2lvblRvb2x0aXBDb250ZW50KHZlcnNpb24sIChjdXJyZW50RGF0YXNldCQgfCBhc3luYyk/LmFjdGl2ZVZlcnNpb24/LmlkKSB8IGkxOG5cbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgZGF0YS10b29sdGlwLXBvc2l0aW9uPVwicmlnaHRcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3Bhbj5pPC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC90ZD5cbiAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgdmVyc2lvbi5zdGF0ZSAhPT0gJ0xPQURJTkcnICYmXG4gICAgICAgICAgICAgICAgdmVyc2lvbi5zdGF0ZSAhPT0gJ0lOREVYSU5HJyAmJlxuICAgICAgICAgICAgICAgIHZlcnNpb24uc3RhdGUgIT09ICdFUlJPUicgJiZcbiAgICAgICAgICAgICAgICB2ZXJzaW9uLnN0YXRlICE9PSAnREVMRVRJTkcnXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAqbmdJZj1cIihjYW5Nb2RpZnkkIHwgYXN5bmMpICYmICh2ZXJzaW9uLnN0YXRlID09PSAnQUNUSVZFJyB8fCB2ZXJzaW9uLnN0YXRlID09PSAnSU5BQ1RJVkUnKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpwcnlBY2Nlc3M9XCJ7IG1vZHVsZTogJ2Rhc2hib2FyZCcsIHBhZ2U6ICdsaXN0LWRhdGFzZXQnLCBhY3Rpb246ICdhY3RpdmF0ZScgfVwiPlxuICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhLWJ0biBhLWJ0bi0tcHJpbWFyeSBhLWJ0bi0taWNvbi10ZXh0IG5nLXN0YXItaW5zZXJ0ZWRcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiaGFuZGxlQnV0dG9uQWN0aW9uKCRldmVudCwgdmVyc2lvbilcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7eyAnQHByeS5kYXRhc2V0LmJ1dHRvbkFjdGlvbi4nICsgdmVyc2lvbi5zdGF0ZSB8IGkxOG4gfX1cbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInZlcnNpb24uc3RhdGUgPT09ICdBQ1RJVkUnIHx8IHZlcnNpb24uc3RhdGUgPT09ICdJTkFDVElWRSdcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibS1pbmZvLWljb24gYS10b29sdGlwIC10b29sdGlwLXdpZHRoLWxnXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLXRvb2x0aXBdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAodmVyc2lvbi5zdGF0ZSA9PT0gJ0FDVElWRSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPyAnQHByeS5kYXRhc2V0LnRvb2x0aXAuaW52YWxpZGF0ZUJ1dHRvbidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnQHByeS5kYXRhc2V0LnRvb2x0aXAudmFsaWRhdGVCdXR0b24nXG4gICAgICAgICAgICAgICAgICAgICAgICApIHwgaTE4blxuICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgZGF0YS10b29sdGlwLXBvc2l0aW9uPVwicmlnaHRcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4+aTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L3RkPlxuICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ2ZXJzaW9uLmhhc1dhcm5pbmdzIHx8IHZlcnNpb24uc3RhdGUgPT09ICdFUlJPUidcIj5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYS1idG4gYS1idG4tLXNlY29uZGFyeSBhLWJ0bi0taWNvbi10ZXh0IG5nLXN0YXItaW5zZXJ0ZWRcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJjb25zdWx0RXJyb3JzKCRldmVudCwgdmVyc2lvbilcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgICh2ZXJzaW9uLnN0YXRlID09PSAnRVJST1InID8gJ0BwcnkuZGF0YXNldC5idXR0b25BY3Rpb24uRVJST1InIDogJ0BwcnkuZGF0YXNldC5idXR0b25BY3Rpb24uV0FSTklORycpXG4gICAgICAgICAgICAgICAgICAgIHwgaTE4blxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC90ZD5cbiAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgKGNhbk1vZGlmeSQgfCBhc3luYykgJiZcbiAgICAgICAgICAgICAgICAodmVyc2lvbi5zdGF0ZSA9PT0gJ0FDVElWRScgfHwgdmVyc2lvbi5zdGF0ZSA9PT0gJ0VSUk9SJyB8fCB2ZXJzaW9uLnN0YXRlID09PSAnSU5BQ1RJVkUnKVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJhLWJ0biBhLWJ0bi0tc2Vjb25kYXJ5IGEtYnRuLS1pY29uLXRleHQgbmctc3Rhci1pbnNlcnRlZFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImFza0RlbGV0ZSh2ZXJzaW9uLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7ICdAcHJ5LmRhdGFzZXQuYnV0dG9uQWN0aW9uLmRlbGV0ZScgfCBpMThuIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgIDwvdGJvZHk+XG4gICAgPC90YWJsZT5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
184
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXNldC1kZXRhaWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9kYXNoYm9hcmQvZGF0YXNldC9jb21wb25lbnRzL2RhdGFzZXQtZGV0YWlsL2RhdGFzZXQtZGV0YWlsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL2RhdGFzZXQvY29tcG9uZW50cy9kYXRhc2V0LWRldGFpbC9kYXRhc2V0LWRldGFpbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFVLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFakcsT0FBTyxFQUNMLGdCQUFnQixFQUNoQixrQkFBa0IsRUFHbEIsaUJBQWlCLEVBQ2pCLG1CQUFtQixFQUNuQixnQkFBZ0IsRUFJaEIsdUJBQXVCLEVBR3ZCLGFBQWEsRUFDYix3QkFBd0IsRUFDeEIsUUFBUSxFQUdULE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFFLEdBQUcsRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7O0FBRXJDLElBQUksVUFBVSxHQUFHLENBQUMsQ0FBQztBQU1uQixNQUFNLE9BQU8seUJBQTBCLFNBQVEsd0JBQXdCO0lBdUNyRSxZQUNVLEtBQVksRUFDNEIsTUFBcUIsRUFDN0QsTUFBd0IsRUFDeEIsWUFBNkIsRUFDN0IsV0FBMkIsRUFDM0Isb0JBQTBDO1FBRWxELEtBQUssRUFBRSxDQUFDO1FBUEEsVUFBSyxHQUFMLEtBQUssQ0FBTztRQUM0QixXQUFNLEdBQU4sTUFBTSxDQUFlO1FBQzdELFdBQU0sR0FBTixNQUFNLENB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QUF5Qix1Q0F5Q2QsZ0JBQWdCO2tHQXpDM0IseUJBQXlCLDBKQy9CdEMsMDRUQXVRQTs7MkZEeE9hLHlCQUF5QjtrQkFKckMsU0FBUzsrQkFDRSxvQkFBb0I7OzBCQTRDM0IsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxnQkFBZ0I7c0tBeEM3QixPQUFPO3NCQUFmLEtBQUs7Z0JBQ0ksV0FBVztzQkFBcEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbmplY3QsIElucHV0LCBPbkluaXQsIE9wdGlvbmFsLCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHtcbiAgRGFzaGJvYXJkQWN0aW9ucyxcbiAgRGFzaGJvYXJkU2VsZWN0b3JzLFxuICBEYXRhc2V0LFxuICBEYXRhc2V0VmVyc2lvbixcbiAgRGF0YVNvdXJjZUFjdGlvbnMsXG4gIERhdGFTb3VyY2VTZWxlY3RvcnMsXG4gIFBSWV9BQ0NFU1NfVE9LRU4sXG4gIFByeUJhc2VBY2Nlc3MsXG4gIFByeURpYWxvZ1NlcnZpY2UsXG4gIFByeUkxOG5TZXJ2aWNlLFxuICBQcnlTdGF0dXNNb2RhbENvbXBvbmVudCxcbiAgUHJ5VGl0bGVTZXJ2aWNlLFxuICBSZXN1bHRTZXRzLFxuICBTZWFyY2hBY3Rpb25zLFxuICBTdWJzY3JpcHRpb25uZXJEaXJlY3RpdmUsXG4gIFZpZXdNb2RlLFxuICBXaWRnZXRGYWN0b3J5U2VydmljZSxcbiAgV2lkZ2V0TWFuaWZlc3Rcbn0gZnJvbSAnQHByb3ZvbHkvZGFzaGJvYXJkJztcbmltcG9ydCB7IG1hcCwgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxubGV0IG5leHRDb21wSWQgPSAwO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwcnktZGF0YXNldC1kZXRhaWwnLFxuICB0ZW1wbGF0ZVVybDogJy4vZGF0YXNldC1kZXRhaWwuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFByeURhdGFzZXREZXRhaWxDb21wb25lbnQgZXh0ZW5kcyBTdWJzY3JpcHRpb25uZXJEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBkYXRhc2V0ITogRGF0YXNldDtcbiAgQE91dHB1dCgpIGdvVG9DYXRhbG9nID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICB3aWRnZXRNYW5pZmVzdCA9IHtcbiAgICB0YWJsZToge1xuICAgICAgaGVhZGVyOiB0cnVlLFxuICAgICAgdHlwZTogJ3RhYmxlJyxcbiAgICAgIGxheW91dDogeyB4OiAxLCB5OiAxLCBoZWlnaHQ6IDEyLCB3aWR0aDogMTIgfSxcbiAgICAgIG9wdGlvbnM6IHt9LFxuICAgICAgZGF0YXNvdXJjZTogWycnXSxcbiAgICAgIGV4Y2x1ZGVHZW86ICdleGNsdWRlLWdlbydcbiAgICB9LFxuICAgIG1hcDoge1xuICAgICAgaGVhZGVyOiBmYWxzZSxcbiAgICAgIHR5cGU6ICdtYXAnLFxuICAgICAgbGF5b3V0OiB7IHg6IDEsIHk6IDEsIGhlaWdodDogMTIsIHdpZHRoOiAxMiB9LFxuICAgICAgb3B0aW9uczoge1xuICAgICAgICBsYXllcnM6IFtdLFxuICAgICAgICBmaXQ6IHRydWUsXG4gICAgICAgIGF1dG9tYXRpY0xheWVyczogdHJ1ZVxuICAgICAgfSxcbiAgICAgIGRhdGFzb3VyY2U6IFsnJ10sXG4gICAgICBleGNsdWRlR2VvOiAnZXhjbHVkZS1nZW8nXG4gICAgfVxuICB9IGFzIHsgW2tleTogc3RyaW5nXTogV2lkZ2V0TWFuaWZlc3QgfTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IFZpZXdNb2RlID0gVmlld01vZGU7XG4gIGNvbXBJZDogbnVtYmVyID0gMDtcbiAgdGFiOiBudW1iZXIgPSAwO1xuICBkYXRhc2V0SXRlbXMkOiBPYnNlcnZhYmxlPFJlc3VsdFNldHMgfCBudWxsPjtcbiAgcHVibGljIGRhdGFzZXRWZXJzaW9ucyQhOiBPYnNlcnZhYmxlPERhdGFzZXRWZXJzaW9uW10+O1xuICBzZWxlY3RlZERhdGFzZXRWZXJzaW9uPzogRGF0YXNldFZlcnNpb247XG4gIHNlbGVjdGVkTW9kZTogVmlld01vZGUgPSBWaWV3TW9kZS5DT05TVUxUO1xuICBpc0VkaXRpbmdWZXJzaW9uID0gZmFsc2U7XG4gIGNhbk1vZGlmeSQhOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBjdXJyZW50RGF0YXNldCQhOiBPYnNlcnZhYmxlPERhdGFzZXQgfCB1bmRlZmluZWQ+O1xuXG4gIGlzUGFuZWxPcGVuOiBib29sZWFuID0gZmFsc2U7XG4gIHNlbGVjdGVkVmVyc2lvbj86IERhdGFzZXRWZXJzaW9uO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgc3RvcmU6IFN0b3JlLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoUFJZX0FDQ0VTU19UT0tFTikgcHJvdGVjdGVkIGFjY2VzczogUHJ5QmFzZUFjY2VzcyxcbiAgICBwcml2YXRlIGRpYWxvZzogUHJ5RGlhbG9nU2VydmljZSxcbiAgICBwcml2YXRlIHRpdGxlU2VydmljZTogUHJ5VGl0bGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgaTE4blNlcnZpY2U6IFByeUkxOG5TZXJ2aWNlLFxuICAgIHByaXZhdGUgd2lkZ2V0RmFjdG9yeVNlcnZpY2U6IFdpZGdldEZhY3RvcnlTZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5kYXRhc2V0SXRlbXMkID0gdGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLnJlc3VsdFNldHMpO1xuICAgIHRoaXMuY29tcElkID0gbmV4dENvbXBJZCsrO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMuZGFzaGJvYXJkRWRpdGlvbk1vZGUpLnN1YnNjcmliZSgoZWRpdGlvbk1vZGUpID0+IHtcbiAgICAgICAgaWYgKGVkaXRpb25Nb2RlKSB0aGlzLnN0b3JlLmRpc3BhdGNoKERhc2hib2FyZEFjdGlvbnMudG9nZ2xlRWRpdGlvbk1vZGUoe30pKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuY2FuTW9kaWZ5JCA9IHRoaXMuYWNjZXNzPy5jYW5Nb2RpZnlEYXRhc2V0KHRoaXMuZGF0YXNldCkgPz8gb2YoZmFsc2UpO1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goRGF0YVNvdXJjZUFjdGlvbnMuZGF0YXNldC5saXN0VmVyc2lvbnNCeURhdGFzZXRJZCh7IGlkOiB0aGlzLmRhdGFzZXQuaWQgfSkpO1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goRGFzaGJvYXJkQWN0aW9ucy5yZW1vdmVGaWx0ZXJzKCkpO1xuXG4gICAgdGhpcy5jdXJyZW50RGF0YXNldCQgPSB0aGlzLnN0b3JlLnNlbGVjdChEYXRhU291cmNlU2VsZWN0b3JzLmRhdGFzZXRzKS5waXBlKFxuICAgICAgbWFwKChkYXRhc2V0cykgPT4gZGF0YXNldHMuZmluZCgoY3VycmVudERhdGFzZXQpID0+IGN1cnJlbnREYXRhc2V0LmlkID09PSB0aGlzLmRhdGFzZXQuaWQpKSxcbiAgICAgIHRhcCgoZGF0YXNldCkgPT4ge1xuICAgICAgICBpZiAoZGF0YXNldCkge1xuICAgICAgICAgIHRoaXMudGl0bGVTZXJ2aWNlLmNoYW5nZVRpdGxlKFxuICAgICAgICAgICAgdGhpcy5pMThuU2VydmljZS5pbnN0YW50KCd0aXRsZS5saXN0LWRhdGFzZXQtZCcsIHsgbmFtZTogZGF0YXNldC5uYW1lIH0sIGZhbHNlKVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHRoaXMuZGF0YXNldFZlcnNpb25zJCA9IHRoaXMuc3RvcmUuc2VsZWN0KERhdGFTb3VyY2VTZWxlY3RvcnMuZGF0YXNldFZlcnNpb25zKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgdGhpcy5kYXRhc2V0VmVyc2lvbnMkLnN1YnNjcmliZSgodmVyc2lvbnMpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRWZXJzaW9uKSB7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFZlcnNpb24gPSB7XG4gICAgICAgICAgICAuLi50aGlzLnNlbGVjdGVkVmVyc2lvbixcbiAgICAgICAgICAgIC4uLnZlcnNpb25zLmZpbmQoKHZlcnNpb24pID0+IHZlcnNpb24uaWQgPT09IHRoaXMuc2VsZWN0ZWRWZXJzaW9uPy5pZClcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLndpZGdldE1hbmlmZXN0Wyd0YWJsZSddLmRhdGFzb3VyY2UgPSBbdGhpcy5kYXRhc2V0LmlkXTtcbiAgICB0aGlzLndpZGdldE1hbmlmZXN0WydtYXAnXS5kYXRhc291cmNlID0gW3RoaXMuZGF0YXNldC5pZF07XG4gIH1cblxuICBnb0JhY2soKSB7XG4gICAgdGhpcy5nb1RvQ2F0YWxvZy5lbWl0KCk7XG4gICAgdGhpcy50aXRsZVNlcnZpY2UuY2hhbmdlVGl0bGUodGhpcy5pMThuU2VydmljZS5pbnN0YW50KCd0aXRsZS5saXN0LWRhdGFzZXQnLCB7fSwgZmFsc2UpKTtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKERhdGFTb3VyY2VBY3Rpb25zLmRhdGFzZXQubGlzdFZlcnNpb25zKHt9KSk7XG4gIH1cblxuICByZWZyZXNoKCkge1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goXG4gICAgICBTZWFyY2hBY3Rpb25zLmdldERhdGFzb3VyY2VJdGVtcyh7XG4gICAgICAgIGlkOiB0aGlzLmRhdGFzZXQuaWQsXG4gICAgICAgIGV4Y2x1ZGVHZW86IGZhbHNlLFxuICAgICAgICBmcm9tOiAnUHJ5RGF0YXNldERldGFpbENvbXBvbmVudC5yZWZyZXNoKCknXG4gICAgICB9KVxuICAgICk7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChEYXRhU291cmNlQWN0aW9ucy5kYXRhc2V0LmxvYWREYXRhc2V0KCkpO1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goRGF0YVNvdXJjZUFjdGlvbnMuZGF0YXNldC5saXN0VmVyc2lvbnNCeURhdGFzZXRJZCh7IGlkOiB0aGlzLmRhdGFzZXQuaWQgfSkpO1xuICB9XG5cbiAgc3dpdGNoKG51bWJlcjogbnVtYmVyKSB7XG4gICAgdGhpcy50YWIgPSBudW1iZXI7XG4gIH1cblxuICBoYW5kbGVCdXR0b25BY3Rpb24oJGV2ZW50OiBFdmVudCwgdmVyc2lvbjogRGF0YXNldFZlcnNpb24pIHtcbiAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5zZWxlY3RlZERhdGFzZXRWZXJzaW9uID0gdmVyc2lvbjtcbiAgICBzd2l0Y2ggKHZlcnNpb24uc3RhdGUpIHtcbiAgICAgIGNhc2UgJ0FDVElWRSc6XG4gICAgICAgIHRoaXMuZGVhY3RpdmF0ZVZlcnNpb24odmVyc2lvbik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnSU5BQ1RJVkUnOlxuICAgICAgICB0aGlzLmFjdGl2YXRlVmVyc2lvbih2ZXJzaW9uKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBjb25zdWx0RXJyb3JzKCRldmVudDogRXZlbnQsIHZlcnNpb246IERhdGFzZXRWZXJzaW9uKSB7XG4gICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMuZGlhbG9nLm9wZW4oUHJ5U3RhdHVzTW9kYWxDb21wb25lbnQsIHsgZGF0YTogeyB2ZXJzaW9uOiB2ZXJzaW9uIH0gfSk7XG4gIH1cblxuICBnZXRWZXJzaW9uVG9vbHRpcENvbnRlbnQodmVyc2lvbjogRGF0YXNldFZlcnNpb24sIGFjdGl2ZVZlcnNpb25JZD86IHN0cmluZykge1xuICAgIHN3aXRjaCAodmVyc2lvbi5zdGF0ZSkge1xuICAgICAgY2FzZSAnRVJST1InOlxuICAgICAgICByZXR1cm4gJ2Vycm9yJztcbiAgICAgIGNhc2UgJ0FDVElWRSc6XG4gICAgICAgIHJldHVybiB2ZXJzaW9uLmlkID09PSBhY3RpdmVWZXJzaW9uSWQgPyAnYWN0aXZlJyA6ICdpbmFjdGl2ZSc7XG4gICAgICBjYXNlICdMT0FESU5HJzpcbiAgICAgIGNhc2UgJ0lOREVYSU5HJzpcbiAgICAgICAgcmV0dXJuICdsb2FkaW5nJztcbiAgICAgIGNhc2UgJ0lOQUNUSVZFJzpcbiAgICAgICAgcmV0dXJuICdpbnZhbGlkJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAndW5rbm93bic7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBkZWFjdGl2YXRlVmVyc2lvbih2ZXJzaW9uOiBEYXRhc2V0VmVyc2lvbikge1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goXG4gICAgICBEYXRhU291cmNlQWN0aW9ucy5kYXRhc2V0LmRlYWN0aXZhdGVEYXRhc2V0VmVyc2lvbih7XG4gICAgICAgIGRhdGFzZXRJZDogdGhpcy5kYXRhc2V0LmlkLFxuICAgICAgICB2ZXJzaW9uSWQ6IHZlcnNpb24uaWRcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgYWN0aXZhdGVWZXJzaW9uKHZlcnNpb246IERhdGFzZXRWZXJzaW9uKSB7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChcbiAgICAgIERhdGFTb3VyY2VBY3Rpb25zLmRhdGFzZXQuYWN0aXZhdGVEYXRhc2V0VmVyc2lvbih7XG4gICAgICAgIGRhdGFzZXRJZDogdGhpcy5kYXRhc2V0LmlkLFxuICAgICAgICB2ZXJzaW9uSWQ6IHZlcnNpb24uaWRcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIG9uVGFiU3dpdGNoKCRldmVudDogbnVtYmVyKSB7XG4gICAgaWYgKFswLCAxLCAyXS5pbmNsdWRlcygkZXZlbnQpKSB7XG4gICAgICB0aGlzLmlzUGFuZWxPcGVuID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgdG9nZ2xlUGFuZWwoc2VsZWN0ZWRWZXJzaW9uPzogRGF0YXNldFZlcnNpb24pIHtcbiAgICBpZiAoc2VsZWN0ZWRWZXJzaW9uKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkVmVyc2lvbiA9IHNlbGVjdGVkVmVyc2lvbjtcbiAgICAgIHRoaXMuaXNQYW5lbE9wZW4gPSB0cnVlO1xuICAgICAgdGhpcy5pc0VkaXRpbmdWZXJzaW9uID0gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaXNQYW5lbE9wZW4gPSAhdGhpcy5pc1BhbmVsT3BlbjtcbiAgICAgIHRoaXMuc2VsZWN0ZWRWZXJzaW9uID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIGVkaXRWZXJzaW9uKCkge1xuICAgIHRoaXMuaXNFZGl0aW5nVmVyc2lvbiA9IHRydWU7XG4gIH1cblxuICBmb3JtVmFsaWRhdGVkKCRldmVudDogUGFydGlhbDxEYXRhc2V0VmVyc2lvbj4pIHtcbiAgICB0aGlzLmlzRWRpdGluZ1ZlcnNpb24gPSBmYWxzZTtcbiAgfVxuXG4gIGFza0RlbGV0ZSh2ZXJzaW9uOiBEYXRhc2V0VmVyc2lvbiwgJGV2ZW50PzogRXZlbnQpIHtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKERhdGFTb3VyY2VBY3Rpb25zLmRhdGFzZXQuY29uZmlybURlbGV0ZVZlcnNpb24oeyB2ZXJzaW9uIH0pKTtcbiAgICAkZXZlbnQ/LnN0b3BQcm9wYWdhdGlvbigpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiby1tYW5pZmVzdC1sYXlvdXRfX3Rvb2xib3hcIj5cbiAgPGJ1dHRvbiBjbGFzcz1cImEtYnRuIGEtYnRuLS1wcmltYXJ5XCIgKGNsaWNrKT1cImdvQmFjaygpXCI+e3sgJ0BwcnkuZGF0YXNldC5yZXR1cm5Ub0xpc3QnIHwgaTE4biB9fTwvYnV0dG9uPlxuICA8YnV0dG9uIGNsYXNzPVwiYS1idG4gYS1idG4tLXNlY29uZGFyeVwiIChjbGljayk9XCJyZWZyZXNoKClcIj5cbiAgICB7eyAnQHByeS5kYXRhc2V0LnJlZnJlc2gnIHwgaTE4biB9fVxuICAgIDxwcnktaWNvbiBpY29uU3ZnPVwic3luY2hyb1wiPjwvcHJ5LWljb24+XG4gIDwvYnV0dG9uPlxuPC9kaXY+XG5cbjxkaXYgY2xhc3M9XCJvLWRhdGFzZXQtbGF5b3V0XCI+XG4gIDxkaXYgY2xhc3M9XCJvLWRhdGFzZXQtbGF5b3V0X19jb250ZW50XCI+XG4gICAgPGRpdiBjbGFzcz1cImEtcFwiPlxuICAgICAgPGgxIGNsYXNzPVwiYS1oMVwiPnt7IChjdXJyZW50RGF0YXNldCQgfCBhc3luYyk/Lm5hbWUgfX08L2gxPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cIm8tZGF0YXNldC1kZXRhaWxcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJvLWRhdGFzZXQtZGV0YWlsX19jb250ZW50XCI+XG4gICAgICAgIDxwcnktdGFiLWdyb3VwIHRyYW5zbGF0aW9uU3RyaW5nQmFzZT1cIkBwcnkuZGF0YXNldC5cIiAoY2xpY2tlZFRhYklkeCk9XCJvblRhYlN3aXRjaCgkZXZlbnQpXCI+XG4gICAgICAgICAgPHByeS10YWIgW3RlbXBsYXRlUmVmXT1cImluZm9ybWF0aW9uXCIgbmFtZT1cImluZm9ybWF0aW9uXCI+PC9wcnktdGFiPlxuICAgICAgICAgIDxwcnktdGFiIFt0ZW1wbGF0ZVJlZl09XCJ0YWJsZVwiIG5hbWU9XCJkYXRhXCI+PC9wcnktdGFiPlxuICAgICAgICAgIDxwcnktdGFiIFt0ZW1wbGF0ZVJlZl09XCJtYXBcIiBuYW1lPVwibWFwXCI+PC9wcnktdGFiPlxuICAgICAgICAgIDxwcnktdGFiIFt0ZW1wbGF0ZVJlZl09XCJkYXRhc2V0VmVyc2lvbnNcIiBuYW1lPVwidmVyc2lvbkhpc3RvcnlcIj48L3ByeS10YWI+XG4gICAgICAgIDwvcHJ5LXRhYi1ncm91cD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgQGlmIChpc1BhbmVsT3Blbikge1xuICAgIDxkaXYgY2xhc3M9XCJvLWRhdGFzZXQtbGF5b3V0X19wYW5lbFwiPlxuICAgICAgPGRpdiBjbGFzcz1cInBhbmVsX19oZWFkZXIgdS1kaXNwbGF5LWZsZXggLWp1c3RpZnktc3BhY2UtYmV0d2VlblwiPlxuICAgICAgICA8aDM+e3sgJ0BwcnkuZGF0YXNldC5pbmZvcm1hdGlvbicgfCBpMThuIH19PC9oMz5cbiAgICAgICAgPGJ1dHRvbiByb2xlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInRvZ2dsZVBhbmVsKClcIj5cbiAgICAgICAgICA8cHJ5LWljb24gaWNvblN2Zz1cImNsb3NlXCI+PC9wcnktaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJwYW5lbF9fY29udGVudCB1LWRpc3BsYXktZmxleCAtY29sdW1uXCI+XG4gICAgICAgIEBpZiAoIWlzRWRpdGluZ1ZlcnNpb24pIHtcbiAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhLWxhYmVsXCI+e3sgJ0BwcnkuZGF0YXNldC52ZXJzaW9uLnByb2R1Y3Rpb25EYXRlJyB8IGkxOG4gfX08L3NwYW4+XG4gICAgICAgICAgICA8c3Bhbj57e1xuICAgICAgICAgICAgICAoc2VsZWN0ZWRWZXJzaW9uPy5wcm9kdWN0aW9uRGF0ZSB8IGRhdGU6ICdkZC1NTS15eXl5LCBISDptbScpID8/XG4gICAgICAgICAgICAgICAgKCdAcHJ5LmRhdGFzZXQudmVyc2lvbi5ub3RQcm92aWRlZCcgfCBpMThuKVxuICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYS1sYWJlbFwiPnt7ICdAcHJ5LmRhdGFzZXQudmVyc2lvbi5wcm9kdWNlcicgfCBpMThuIH19PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4+e3sgc2VsZWN0ZWRWZXJzaW9uPy5wcm9kdWNlciA/PyAoJ0BwcnkuZGF0YXNldC52ZXJzaW9uLm5vdFByb3ZpZGVkJyB8IGkxOG4pIH19PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImEtbGFiZWxcIj57eyAnQHByeS5kYXRhc2V0LnZlcnNpb24uYWRkaXRpb25hbEluZm9ybWF0aW9uJyB8IGkxOG4gfX08L3NwYW4+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwidmVyc2lvbi1pbmZvcm1hdGlvblwiXG4gICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwiXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRWZXJzaW9uPy5hZGRpdGlvbmFsSW5mb3JtYXRpb24gPz8gKCdAcHJ5LmRhdGFzZXQudmVyc2lvbi5ub3RQcm92aWRlZCcgfCBpMThuKSB8IG1kVG9IdG1sXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgKnByeUFjY2Vzcz1cInsgbW9kdWxlOiAnYWRtaW4nLCBwYWdlOiAnbGlzdC1kYXRhc2V0JywgYWN0aW9uOiAnZWRpdF92ZXJzaW9uJyB9XCJcbiAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgY2xhc3M9XCJhLWJ0biBhLWJ0bi0tcHJpbWFyeSB1LXNlbGYtZW5kXCJcbiAgICAgICAgICAgIChjbGljayk9XCJlZGl0VmVyc2lvbigpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyAnQHByeS5hY3Rpb24uZWRpdCcgfCBpMThuIH19XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgIDxwcnktZGF0YXNldC12ZXJzaW9uLWZvcm1cbiAgICAgICAgICAgIFt2ZXJzaW9uXT1cInNlbGVjdGVkVmVyc2lvblwiXG4gICAgICAgICAgICAoZm9ybVZhbGlkYXRlZCk9XCJmb3JtVmFsaWRhdGVkKCRldmVudClcIlxuICAgICAgICAgID48L3ByeS1kYXRhc2V0LXZlcnNpb24tZm9ybT5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIH1cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI2luZm9ybWF0aW9uPlxuICA8ZGl2IGNsYXNzPVwidS1kaXNwbGF5LWZsZXggLWNvbHVtbiBvLWRhdGFzZXQtZGV0YWlsX19pbmZvcm1hdGlvblwiPlxuICAgIDxkaXY+XG4gICAgICA8c3BhbiBjbGFzcz1cImEtbGFiZWxcIj57eyAnQHByeS5kYXRhc2V0LmRlc2NyaXB0aW9uJyB8IGkxOG4gfX08L3NwYW4+XG4gICAgICA8c3Bhbj57eyBkYXRhc2V0LmRlc2NyaXB0aW9uID8/ICgnQHByeS5kYXRhc2V0LnZlcnNpb24ubm90UHJvdmlkZWQnIHwgaTE4bikgfX08L3NwYW4+XG4gICAgPC9kaXY+XG4gICAgQGlmIChkYXRhc2V0LmFjdGl2ZVZlcnNpb24pIHtcbiAgICAgIDxkaXY+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiYS1sYWJlbFwiPnt7ICdAcHJ5LmRhdGFzZXQudmVyc2lvbi5wcm9kdWN0aW9uRGF0ZScgfCBpMThuIH19PC9zcGFuPlxuICAgICAgICA8c3Bhbj57e1xuICAgICAgICAgIChkYXRhc2V0LmFjdGl2ZVZlcnNpb24ucHJvZHVjdGlvbkRhdGUgfCBkYXRlOiAnZGQtTU0teXl5eSwgSEg6bW0nKSA/P1xuICAgICAgICAgICAgKCdAcHJ5LmRhdGFzZXQudmVyc2lvbi5ub3RQcm92aWRlZCcgfCBpMThuKVxuICAgICAgICB9fTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJhLWxhYmVsXCI+e3sgJ0BwcnkuZGF0YXNldC52ZXJzaW9uLnByb2R1Y2VyJyB8IGkxOG4gfX08L3NwYW4+XG4gICAgICAgIDxzcGFuPnt7IGRhdGFzZXQuYWN0aXZlVmVyc2lvbi5wcm9kdWNlciA/PyAoJ0BwcnkuZGF0YXNldC52ZXJzaW9uLm5vdFByb3ZpZGVkJyB8IGkxOG4pIH19PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2PlxuICAgICAgICA8c3BhbiBjbGFzcz1cImEtbGFiZWxcIj57eyAnQHByeS5kYXRhc2V0LnZlcnNpb24uYWRkaXRpb25hbEluZm9ybWF0aW9uJyB8IGkxOG4gfX08L3NwYW4+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cInZlcnNpb24taW5mb3JtYXRpb25cIlxuICAgICAgICAgIFtpbm5lckhUTUxdPVwiXG4gICAgICAgICAgICBkYXRhc2V0LmFjdGl2ZVZlcnNpb24uYWRkaXRpb25hbEluZm9ybWF0aW9uID8/ICgnQHByeS5kYXRhc2V0LnZlcnNpb24ubm90UHJvdmlkZWQnIHwgaTE4bikgfCBtZFRvSHRtbFxuICAgICAgICAgIFwiXG4gICAgICAgID48L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIH0gQGVsc2Uge1xuICAgICAgPGRpdiBjbGFzcz1cImEtcFwiPlxuICAgICAgICA8cD57eyAnQHByeS5kYXRhc2V0Lm5vQWN0aXZlVmVyc2lvbicgfCBpMThuIH19PC9wPlxuICAgICAgPC9kaXY+XG4gICAgfVxuICAgIDxkaXY+XG4gICAgICA8c3BhbiBjbGFzcz1cImEtbGFiZWxcIj57eyAnQHByeS5kYXRhc2V0LnRhZ3MnIHwgaTE4biB9fTwvc3Bhbj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ1LWRpc3BsYXktZmxleCAtd3JhcFwiPlxuICAgICAgICBAZm9yIChjYXRlZ29yeSBvZiBkYXRhc2V0LmNhdGVnb3JpZXM7IHRyYWNrIGNhdGVnb3J5LmlkKSB7XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJhLWNoaXAgLW1kXCI+IHt7IGNhdGVnb3J5Lm5hbWUgfX08L3NwYW4+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjdGFibGU+XG4gIDxkaXYgY2xhc3M9XCJkYXNoYm9hcmQtY29udGFpbmVyXCI+XG4gICAgPHByeS1kYXNoYm9hcmQgW3N0YXRpY0Rhc2hib2FyZF09XCJ7IHdpZGdldHM6IFt3aWRnZXRNYW5pZmVzdFsndGFibGUnXV0gfVwiPjwvcHJ5LWRhc2hib2FyZD5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICNtYXA+XG4gIDxkaXYgY2xhc3M9XCJkYXNoYm9hcmQtY29udGFpbmVyXCI+XG4gICAgPHByeS1kYXNoYm9hcmQgW3N0YXRpY0Rhc2hib2FyZF09XCJ7IHdpZGdldHM6IFt3aWRnZXRNYW5pZmVzdFsnbWFwJ11dIH1cIj48L3ByeS1kYXNoYm9hcmQ+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjZGF0YXNldFZlcnNpb25zPlxuICA8ZGl2IGNsYXNzPVwiZGF0YXNldC1kZXRhaWxfX3RhYmxlIHRhYmxlLWNvbnRhaW5lclwiPlxuICAgIDx0YWJsZSBjbGFzcz1cImEtdGFibGVcIj5cbiAgICAgIDxjYXB0aW9uPlxuICAgICAgICB7e1xuICAgICAgICAgICdAcHJ5LmFkbWluLmRhdGFzZXQudGl0bGUnIHwgaTE4blxuICAgICAgICB9fSxcbiAgICAgICAge3tcbiAgICAgICAgICAnQHByeS5hY3Rpb24uc29ydGFibGVDb2x1bW5IZWFkZXInIHwgaTE4blxuICAgICAgICB9fVxuICAgICAgPC9jYXB0aW9uPlxuICAgICAgPHRoZWFkPlxuICAgICAgICA8dHI+XG4gICAgICAgICAgPHRoPnt7ICdAcHJ5LmRhdGFzZXQudmVyc2lvbi50aXRsZScgfCBpMThuIH19PC90aD5cbiAgICAgICAgICA8dGg+e3sgJ0BwcnkuZGF0YXNldC5kYXRlJyB8IGkxOG4gfX08L3RoPlxuICAgICAgICAgIDx0aD57eyAnQHByeS5kYXRhc2V0LnN0YXR1cycgfCBpMThuIH19PC90aD5cbiAgICAgICAgICA8dGg+PC90aD5cbiAgICAgICAgICA8dGg+PC90aD5cbiAgICAgICAgICA8dGg+PC90aD5cbiAgICAgICAgPC90cj5cbiAgICAgIDwvdGhlYWQ+XG4gICAgICA8dGJvZHk+XG4gICAgICAgIDx0clxuICAgICAgICAgICpuZ0Zvcj1cImxldCB2ZXJzaW9uIG9mIGRhdGFzZXRWZXJzaW9ucyQgfCBhc3luY1wiXG4gICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVBhbmVsKHZlcnNpb24pXCJcbiAgICAgICAgICBbY2xhc3MuLXNlbGVjdGVkXT1cInZlcnNpb24uaWQgPT09IHNlbGVjdGVkVmVyc2lvbj8uaWRcIlxuICAgICAgICA+XG4gICAgICAgICAgPHRkPlxuICAgICAgICAgICAge3sgdmVyc2lvbi52ZXJzaW9uIH19XG4gICAgICAgICAgICA8cHJ5LWljb25cbiAgICAgICAgICAgICAgKm5nSWY9XCIoY3VycmVudERhdGFzZXQkIHwgYXN5bmMpPy5hY3RpdmVWZXJzaW9uPy5pZCA9PT0gdmVyc2lvbi5pZFwiXG4gICAgICAgICAgICAgIGljb25Tdmc9XCJjaGVja1wiXG4gICAgICAgICAgICAgIGNsYXNzPVwiY2hlY2tcIlxuICAgICAgICAgICAgPjwvcHJ5LWljb24+XG4gICAgICAgICAgPC90ZD5cbiAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwiYS10b29sdGlwXCJcbiAgICAgICAgICAgICAgW2F0dHIuZGF0YS10b29sdGlwXT1cInZlcnNpb24ubGFzdE1vZGlmaWVkIHwgc2luY2VEYXRlOiB7IG9ubHlMb2NhbGU6IHRydWUgfVwiXG4gICAgICAgICAgICAgIGRhdGEtdG9vbHRpcC1wb3NpdGlvbj1cInJpZ2h0XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgdmVyc2lvbi5sYXN0TW9kaWZpZWQgfCBzaW5jZURhdGU6IHsgb25seUxvY2FsZTogdHJ1ZSB9IH19XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L3RkPlxuICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICh2ZXJzaW9uLmlkID09PSAoY3VycmVudERhdGFzZXQkIHwgYXN5bmMpPy5hY3RpdmVWZXJzaW9uPy5pZFxuICAgICAgICAgICAgICAgID8gJ0BwcnkuZGF0YXNldC52ZXJzaW9uLnN0YXRlLmN1cnJlbnRseUFjdGl2ZSdcbiAgICAgICAgICAgICAgICA6ICdAcHJ5LmRhdGFzZXQudmVyc2lvbi5zdGF0ZS4nICsgdmVyc2lvbi5zdGF0ZVxuICAgICAgICAgICAgICApIHwgaTE4blxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgKm5nSWY9XCJ2ZXJzaW9uLnN0YXRlICE9PSAnREVMRVRJTkcnXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJtLWluZm8taWNvbiBhLXRvb2x0aXAgLXRvb2x0aXAtd2lkdGgtbWRcIlxuICAgICAgICAgICAgICBbYXR0ci5kYXRhLXRvb2x0aXBdPVwiXG4gICAgICAgICAgICAgICAgJ0BwcnkuZGF0YXNldC50b29sdGlwLicgK1xuICAgICAgICAgICAgICAgICAgZ2V0VmVyc2lvblRvb2x0aXBDb250ZW50KHZlcnNpb24sIChjdXJyZW50RGF0YXNldCQgfCBhc3luYyk/LmFjdGl2ZVZlcnNpb24/LmlkKSB8IGkxOG5cbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgZGF0YS10b29sdGlwLXBvc2l0aW9uPVwicmlnaHRcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3Bhbj5pPC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC90ZD5cbiAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgdmVyc2lvbi5zdGF0ZSAhPT0gJ0xPQURJTkcnICYmXG4gICAgICAgICAgICAgICAgdmVyc2lvbi5zdGF0ZSAhPT0gJ0lOREVYSU5HJyAmJlxuICAgICAgICAgICAgICAgIHZlcnNpb24uc3RhdGUgIT09ICdFUlJPUicgJiZcbiAgICAgICAgICAgICAgICB2ZXJzaW9uLnN0YXRlICE9PSAnREVMRVRJTkcnXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAqbmdJZj1cIihjYW5Nb2RpZnkkIHwgYXN5bmMpICYmICh2ZXJzaW9uLnN0YXRlID09PSAnQUNUSVZFJyB8fCB2ZXJzaW9uLnN0YXRlID09PSAnSU5BQ1RJVkUnKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpwcnlBY2Nlc3M9XCJ7IG1vZHVsZTogJ2Rhc2hib2FyZCcsIHBhZ2U6ICdsaXN0LWRhdGFzZXQnLCBhY3Rpb246ICdhY3RpdmF0ZScgfVwiPlxuICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhLWJ0biBhLWJ0bi0tcHJpbWFyeSBhLWJ0bi0taWNvbi10ZXh0IG5nLXN0YXItaW5zZXJ0ZWRcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiaGFuZGxlQnV0dG9uQWN0aW9uKCRldmVudCwgdmVyc2lvbilcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7eyAnQHByeS5kYXRhc2V0LmJ1dHRvbkFjdGlvbi4nICsgdmVyc2lvbi5zdGF0ZSB8IGkxOG4gfX1cbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInZlcnNpb24uc3RhdGUgPT09ICdBQ1RJVkUnIHx8IHZlcnNpb24uc3RhdGUgPT09ICdJTkFDVElWRSdcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibS1pbmZvLWljb24gYS10b29sdGlwIC10b29sdGlwLXdpZHRoLWxnXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLXRvb2x0aXBdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAodmVyc2lvbi5zdGF0ZSA9PT0gJ0FDVElWRSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPyAnQHByeS5kYXRhc2V0LnRvb2x0aXAuaW52YWxpZGF0ZUJ1dHRvbidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnQHByeS5kYXRhc2V0LnRvb2x0aXAudmFsaWRhdGVCdXR0b24nXG4gICAgICAgICAgICAgICAgICAgICAgICApIHwgaTE4blxuICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgZGF0YS10b29sdGlwLXBvc2l0aW9uPVwicmlnaHRcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4+aTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L3RkPlxuICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ2ZXJzaW9uLmhhc1dhcm5pbmdzIHx8IHZlcnNpb24uc3RhdGUgPT09ICdFUlJPUidcIj5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYS1idG4gYS1idG4tLXNlY29uZGFyeSBhLWJ0bi0taWNvbi10ZXh0IG5nLXN0YXItaW5zZXJ0ZWRcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJjb25zdWx0RXJyb3JzKCRldmVudCwgdmVyc2lvbilcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgICh2ZXJzaW9uLnN0YXRlID09PSAnRVJST1InID8gJ0BwcnkuZGF0YXNldC5idXR0b25BY3Rpb24uRVJST1InIDogJ0BwcnkuZGF0YXNldC5idXR0b25BY3Rpb24uV0FSTklORycpXG4gICAgICAgICAgICAgICAgICAgIHwgaTE4blxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC90ZD5cbiAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgKGNhbk1vZGlmeSQgfCBhc3luYykgJiZcbiAgICAgICAgICAgICAgICAodmVyc2lvbi5zdGF0ZSA9PT0gJ0FDVElWRScgfHwgdmVyc2lvbi5zdGF0ZSA9PT0gJ0VSUk9SJyB8fCB2ZXJzaW9uLnN0YXRlID09PSAnSU5BQ1RJVkUnKVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJhLWJ0biBhLWJ0bi0tc2Vjb25kYXJ5IGEtYnRuLS1pY29uLXRleHQgbmctc3Rhci1pbnNlcnRlZFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImFza0RlbGV0ZSh2ZXJzaW9uLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7ICdAcHJ5LmRhdGFzZXQuYnV0dG9uQWN0aW9uLmRlbGV0ZScgfCBpMThuIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgIDwvdGJvZHk+XG4gICAgPC90YWJsZT5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -66,6 +66,7 @@ export class AutocompleteComponent extends BaseFilterComponent {
66
66
  }
67
67
  clear() {
68
68
  this.search$.next('');
69
+ this.cleared.next();
69
70
  }
70
71
  enterPressed($event) {
71
72
  this.pressedEnter.next();
@@ -80,4 +81,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
80
81
  type: ViewChild,
81
82
  args: ['select']
82
83
  }] } });
83
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL2ZpbHRlcnMvYXV0b2NvbXBsZXRlL2F1dG9jb21wbGV0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC9maWx0ZXJzL2F1dG9jb21wbGV0ZS9hdXRvY29tcGxldGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBcUIsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXhFLE9BQU8sRUFDTCxtQkFBbUIsRUFFbkIsYUFBYSxFQUNiLGVBQWUsRUFFaEIsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQ0wsZUFBZSxFQUNmLFVBQVUsRUFDVixhQUFhLEVBQ2IsWUFBWSxFQUNaLG9CQUFvQixFQUNwQixHQUFHLEVBRUgsRUFBRSxFQUNGLFNBQVMsRUFDVCxTQUFTLEVBQ1QsT0FBTyxFQUNQLFNBQVMsRUFDVixNQUFNLE1BQU0sQ0FBQztBQUNkLE9BQU8sS0FBSyxNQUFNLHFCQUFxQixDQUFDO0FBQ3hDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7OztBQU9yQyxNQUFNLE9BQU8scUJBQXNCLFNBQVEsbUJBQW1CO0lBVTVELFlBQ0UsS0FBWSxFQUNKLGFBQTRCO1FBRXBDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUZMLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBWHRDLFlBQU8sR0FBRyxJQUFJLGVBQWUsQ0FBUyxFQUFFLENBQUMsQ0FBQztRQUUxQyxXQUFNLEdBQVksS0FBSyxDQUFDO1FBQ3hCLHFCQUFnQixHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFFdkMseUJBQW9CLEdBQWEsRUFBRSxDQUFDO1FBQ3BDLFdBQU0s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QUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxZQUFZLENBQUMsTUFBWTtRQUN2QixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzNCLENBQUM7OEdBekZVLHFCQUFxQjtrR0FBckIscUJBQXFCLGlMQy9CbEMsczhCQTBCQTs7MkZES2EscUJBQXFCO2tCQUpqQyxTQUFTOytCQUNFLGtCQUFrQjtzR0FXUCxNQUFNO3NCQUExQixTQUFTO3VCQUFDLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHtcbiAgQmFzZUZpbHRlckNvbXBvbmVudCxcbiAgUHJ5U2VsZWN0Q29tcG9uZW50LFxuICBTZWFyY2hBY3Rpb25zLFxuICBTZWFyY2hTZWxlY3RvcnMsXG4gIFNlYXJjaFNlcnZpY2Vcbn0gZnJvbSAnQHByb3ZvbHkvZGFzaGJvYXJkJztcbmltcG9ydCB7XG4gIEJlaGF2aW9yU3ViamVjdCxcbiAgY2F0Y2hFcnJvcixcbiAgY29tYmluZUxhdGVzdCxcbiAgZGVib3VuY2VUaW1lLFxuICBkaXN0aW5jdFVudGlsQ2hhbmdlZCxcbiAgbWFwLFxuICBPYnNlcnZhYmxlLFxuICBvZixcbiAgc2tpcFVudGlsLFxuICBzdGFydFdpdGgsXG4gIFN1YmplY3QsXG4gIHN3aXRjaE1hcFxufSBmcm9tICdyeGpzJztcbmltcG9ydCBlcXVhbCBmcm9tICdmYXN0LWRlZXAtZXF1YWwvZXM2JztcbmltcG9ydCB7IHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEF0dHJpYnV0ZSB9IGZyb20gJ0Bwcm92b2x5L2Rhc2hib2FyZC90b29sYm94JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncHJ5LWF1dG9jb21wbGV0ZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9hdXRvY29tcGxldGUuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIEF1dG9jb21wbGV0ZUNvbXBvbmVudCBleHRlbmRzIEJhc2VGaWx0ZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHNlYXJjaCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oJycpO1xuICBhdXRvY29tcGxldGUkPzogT2JzZXJ2YWJsZTxzdHJpbmdbXT47XG4gIGxvYWRlcjogYm9vbGVhbiA9IGZhbHNlO1xuICBwcmV2ZW50SW5pdENhbGwkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcG9zc2libGVGaWx0ZXJWYWx1ZXMkITogT2JzZXJ2YWJsZTxzdHJpbmdbXT47XG4gIHBvc3NpYmxlRmlsdGVyVmFsdWVzOiBzdHJpbmdbXSA9IFtdO1xuICBpdGVtcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZ1tdPihbXSk7XG4gIEBWaWV3Q2hpbGQoJ3NlbGVjdCcpIHNlbGVjdCE6IFByeVNlbGVjdENvbXBvbmVudDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBzdG9yZTogU3RvcmUsXG4gICAgcHJpdmF0ZSBzZWFyY2hTZXJ2aWNlOiBTZWFyY2hTZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKHN0b3JlKTtcbiAgICB0aGlzLnR5cGUgPSAnYXV0b2NvbXBsZXRlJztcbiAgfVxuXG4gIG92ZXJyaWRlIG5nT25Jbml0KCkge1xuICAgIHRoaXMucG9zc2libGVGaWx0ZXJWYWx1ZXMkID0gdGhpcy5zdG9yZS5zZWxlY3QoU2VhcmNoU2VsZWN0b3JzLnBvc3NpYmxlRmlsdGVyVmFsdWVzKHRoaXMuZmlsdGVyPy5pZCkpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQodGhpcy5wb3NzaWJsZUZpbHRlclZhbHVlcyQuc3Vic2NyaWJlKCh2YWx1ZXMpID0+ICh0aGlzLnBvc3NpYmxlRmlsdGVyVmFsdWVzID0gdmFsdWVzKSkpO1xuXG4gICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICBpZiAodGhpcy5maWx0ZXI/LmF0dHJpYnV0ZXMpIHtcbiAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goXG4gICAgICAgIFNlYXJjaEFjdGlvbnMuZ2V0UG9zc2libGVGaWx0ZXJWYWx1ZXMoe1xuICAgICAgICAgIGZpbHRlcklkOiB0aGlzLmZpbHRlcj8uaWQgPz8gJycsXG4gICAgICAgICAgYXR0cmlidXRlczogKHRoaXMuZmlsdGVyPy5hdHRyaWJ1dGVzIGFzIE9taXQ8QXR0cmlidXRlLCAnY3VzdG9tSWQnPltdKS5maWx0ZXIoXG4gICAgICAgICAgICAoYSkgPT4gISFhLmRhdGFzb3VyY2UgJiYgISFhLmlkXG4gICAgICAgICAgKSxcbiAgICAgICAgICBsaW1pdDogdGhpcy5maWx0ZXI/LmxpbWl0ID8/IDEwXG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH1cblxuICAgIHRoaXMuc2VhcmNoJC5uZXh0KGAke3RoaXMuX3ZhbHVlfWApO1xuICAgIHRoaXMuYXV0b2NvbXBsZXRlJCA9IHRoaXMuc2VhcmNoJC5waXBlKFxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKHAsIHYpID0+IGVxdWFsKHAsIHYpKSxcbiAgICAgIHNraXBVbnRpbCh0aGlzLnByZXZlbnRJbml0Q2FsbCQpLFxuICAgICAgZGVib3VuY2VUaW1lKDUwMCksXG4gICAgICBzd2l0Y2hNYXAoKHNlYXJjaCkgPT4ge1xuICAgICAgICBpZiAoISFzZWFyY2ggJiYgc2VhcmNoLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICB0aGlzLmxvYWRlciA9IHRydWU7XG4gICAgICAgICAgdGhpcy5pdGVtcyQubmV4dChbXSk7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuc2VhcmNoU2VydmljZS5hdXRvY29tcGxldGUodGhpcy5maWx0ZXI/LmF0dHJpYnV0ZXMsIHNlYXJjaCwgdGhpcy5maWx0ZXI/LmxpbWl0KS5waXBlKFxuICAgICAgICAgICAgdGFwKCgpID0+ICh0aGlzLmxvYWRlciA9IGZhbHNlKSksXG4gICAgICAgICAgICBjYXRjaEVycm9yKChlcnIpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcbiAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignQXV0b2NvbXBsZXRlIGZhaWxlZCcsIGVycik7XG4gICAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb2YoW10gYXMgc3RyaW5nW10pO1xuICAgICAgfSlcbiAgICApO1xuICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5wcmV2ZW50SW5pdENhbGwkLm5leHQoKSwgMjAwKTtcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICBjb21iaW5lTGF0ZXN0KFt0aGlzLnBvc3NpYmxlRmlsdGVyVmFsdWVzJCwgdGhpcy5hdXRvY29tcGxldGUkLnBpcGUoc3RhcnRXaXRoKG51bGwpKV0pXG4gICAgICAgIC5waXBlKG1hcCgoW3Bvc3NpYmxlVmFsdWVzLCBhdXRvY29tcGxldGVdKSA9PiAoISFhdXRvY29tcGxldGUgPyBhdXRvY29tcGxldGUgOiBwb3NzaWJsZVZhbHVlcykpKVxuICAgICAgICAuc3Vic2NyaWJlKCh2YWx1ZXMpID0+IHRoaXMuaXRlbXMkLm5leHQodmFsdWVzKSlcbiAgICApO1xuICB9XG5cbiAgcmVzZXRBdXRvY29tcGxldGVWYWx1ZXMoKSB7XG4gICAgaWYgKHRoaXMuaXRlbXMkLmdldFZhbHVlKCk/Lmxlbmd0aCAhPT0gdGhpcy5wb3NzaWJsZUZpbHRlclZhbHVlcz8ubGVuZ3RoKSB7XG4gICAgICB0aGlzLml0ZW1zJC5uZXh0KHRoaXMucG9zc2libGVGaWx0ZXJWYWx1ZXMpO1xuICAgIH1cbiAgfVxuXG4gIHNldEZpbHRlcih2YWx1ZTogc3RyaW5nKSB7XG4gICAgaWYgKHZhbHVlICE9PSB0aGlzLmZpbHRlcj8udmFsdWUpIHtcbiAgICAgIHN1cGVyLnVwZGF0ZUZpbHRlcih2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlU2VhcmNoKCRldmVudD86IEV2ZW50KSB7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IHZhbHVlID0gJGV2ZW50ID8gJGV2ZW50LnRhcmdldCEudmFsdWUgOiAnJztcbiAgICB0aGlzLnNlYXJjaCQubmV4dCh2YWx1ZSk7XG4gIH1cblxuICBjbGVhcigpIHtcbiAgICB0aGlzLnNlYXJjaCQubmV4dCgnJyk7XG4gIH1cblxuICBlbnRlclByZXNzZWQoJGV2ZW50OiB2b2lkKSB7XG4gICAgdGhpcy5wcmVzc2VkRW50ZXIubmV4dCgpO1xuICB9XG59XG4iLCI8cHJ5LWF1dG9jb21wbGV0ZS1jc3M+PC9wcnktYXV0b2NvbXBsZXRlLWNzcz5cbkBpZiAoZmlsdGVyKSB7XG4gIDxkaXYgY2xhc3M9XCJtLWZpbHRlcl9faW5wdXQtd3JhcHBlciBtLWZpbHRlcl9faW5wdXQtd3JhcHBlci0tZHJvcGRvd25cIiAoa2V5dXApPVwidXBkYXRlU2VhcmNoKCRldmVudClcIiAjcmVmPlxuICAgIEBpZiAoZmlsdGVyLm5hbWUpIHtcbiAgICAgIDxsYWJlbCBjbGFzcz1cImEtbGFiZWwgbS1maWx0ZXJfX2xhYmVsXCIgZm9yPVwie3sgZmlsdGVyLm5hbWUgfX1cIj57eyBmaWx0ZXIubmFtZSB9fSZuYnNwOzombmJzcDs8L2xhYmVsPlxuICAgIH1cbiAgICA8cHJ5LXNlbGVjdFxuICAgICAgW2lkXT1cImZpbHRlci5uYW1lXCJcbiAgICAgIFtpdGVtc109XCJpdGVtcyQgfCBhc3luY1wiXG4gICAgICBbbmdNb2RlbF09XCJmaWx0ZXIudmFsdWVcIlxuICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwic2V0RmlsdGVyKCRldmVudClcIlxuICAgICAgW2NsZWFyYWJsZV09XCJ0cnVlXCJcbiAgICAgIFthdXRvY29tcGxldGVdPVwidHJ1ZVwiXG4gICAgICBbZXh0ZXJuYWxBdXRvY29tcGxldGVTZXJ2aWNlXT1cInRydWVcIlxuICAgICAgYXJpYS1sYWJlbGxlZGJ5PVwiaXRlbS1sYWJlbFwiXG4gICAgICAoYmx1cik9XCJ1cGRhdGVTZWFyY2goJGV2ZW50KVwiXG4gICAgICBbZWxlbWVudFJlZl09XCJyZWZcIlxuICAgICAgKGNsZWFyZWQpPVwiY2xlYXIoKVwiXG4gICAgICBbbG9hZGluZ109XCJsb2FkZXJcIlxuICAgICAgKGNsaWNrZWQpPVwicmVzZXRBdXRvY29tcGxldGVWYWx1ZXMoKVwiXG4gICAgICBbcGxhY2Vob2xkZXJdPVwiZmlsdGVyLnBsYWNlaG9sZGVyID8/ICcnIHwgaTE4bjogeyB3YXJuOiBmYWxzZSB9XCJcbiAgICAgIChwcmVzc2VkRW50ZXIpPVwiZW50ZXJQcmVzc2VkKCRldmVudClcIlxuICAgICAgI3NlbGVjdFxuICAgID48L3ByeS1zZWxlY3Q+XG4gIDwvZGl2PlxufVxuIl19
84
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL2ZpbHRlcnMvYXV0b2NvbXBsZXRlL2F1dG9jb21wbGV0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC9maWx0ZXJzL2F1dG9jb21wbGV0ZS9hdXRvY29tcGxldGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBcUIsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXhFLE9BQU8sRUFDTCxtQkFBbUIsRUFFbkIsYUFBYSxFQUNiLGVBQWUsRUFFaEIsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQ0wsZUFBZSxFQUNmLFVBQVUsRUFDVixhQUFhLEVBQ2IsWUFBWSxFQUNaLG9CQUFvQixFQUNwQixHQUFHLEVBRUgsRUFBRSxFQUNGLFNBQVMsRUFDVCxTQUFTLEVBQ1QsT0FBTyxFQUNQLFNBQVMsRUFDVixNQUFNLE1BQU0sQ0FBQztBQUNkLE9BQU8sS0FBSyxNQUFNLHFCQUFxQixDQUFDO0FBQ3hDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7OztBQU9yQyxNQUFNLE9BQU8scUJBQXNCLFNBQVEsbUJBQW1CO0lBVTVELFlBQ0UsS0FBWSxFQUNKLGFBQTRCO1FBRXBDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUZMLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBWHRDLFlBQU8sR0FBRyxJQUFJLGVBQWUsQ0FBUyxFQUFFLENBQUMsQ0FBQztRQUUxQyxXQUFNLEdBQVksS0FBSyxDQUFDO1FBQ3hCLHFCQUFnQixHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFFdkMseUJBQW9CLEdBQWEsRUFBRSxDQUFDO1FBQ3BDLFdBQU0s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QUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVELFlBQVksQ0FBQyxNQUFZO1FBQ3ZCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDM0IsQ0FBQzs4R0ExRlUscUJBQXFCO2tHQUFyQixxQkFBcUIsaUxDL0JsQyxzOEJBMEJBOzsyRkRLYSxxQkFBcUI7a0JBSmpDLFNBQVM7K0JBQ0Usa0JBQWtCO3NHQVdQLE1BQU07c0JBQTFCLFNBQVM7dUJBQUMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQge1xuICBCYXNlRmlsdGVyQ29tcG9uZW50LFxuICBQcnlTZWxlY3RDb21wb25lbnQsXG4gIFNlYXJjaEFjdGlvbnMsXG4gIFNlYXJjaFNlbGVjdG9ycyxcbiAgU2VhcmNoU2VydmljZVxufSBmcm9tICdAcHJvdm9seS9kYXNoYm9hcmQnO1xuaW1wb3J0IHtcbiAgQmVoYXZpb3JTdWJqZWN0LFxuICBjYXRjaEVycm9yLFxuICBjb21iaW5lTGF0ZXN0LFxuICBkZWJvdW5jZVRpbWUsXG4gIGRpc3RpbmN0VW50aWxDaGFuZ2VkLFxuICBtYXAsXG4gIE9ic2VydmFibGUsXG4gIG9mLFxuICBza2lwVW50aWwsXG4gIHN0YXJ0V2l0aCxcbiAgU3ViamVjdCxcbiAgc3dpdGNoTWFwXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IGVxdWFsIGZyb20gJ2Zhc3QtZGVlcC1lcXVhbC9lczYnO1xuaW1wb3J0IHsgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQXR0cmlidXRlIH0gZnJvbSAnQHByb3ZvbHkvZGFzaGJvYXJkL3Rvb2xib3gnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwcnktYXV0b2NvbXBsZXRlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2F1dG9jb21wbGV0ZS5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgQXV0b2NvbXBsZXRlQ29tcG9uZW50IGV4dGVuZHMgQmFzZUZpbHRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgc2VhcmNoJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPignJyk7XG4gIGF1dG9jb21wbGV0ZSQ/OiBPYnNlcnZhYmxlPHN0cmluZ1tdPjtcbiAgbG9hZGVyOiBib29sZWFuID0gZmFsc2U7XG4gIHByZXZlbnRJbml0Q2FsbCQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBwb3NzaWJsZUZpbHRlclZhbHVlcyQhOiBPYnNlcnZhYmxlPHN0cmluZ1tdPjtcbiAgcG9zc2libGVGaWx0ZXJWYWx1ZXM6IHN0cmluZ1tdID0gW107XG4gIGl0ZW1zJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nW10+KFtdKTtcbiAgQFZpZXdDaGlsZCgnc2VsZWN0Jykgc2VsZWN0ITogUHJ5U2VsZWN0Q29tcG9uZW50O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHN0b3JlOiBTdG9yZSxcbiAgICBwcml2YXRlIHNlYXJjaFNlcnZpY2U6IFNlYXJjaFNlcnZpY2VcbiAgKSB7XG4gICAgc3VwZXIoc3RvcmUpO1xuICAgIHRoaXMudHlwZSA9ICdhdXRvY29tcGxldGUnO1xuICB9XG5cbiAgb3ZlcnJpZGUgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5wb3NzaWJsZUZpbHRlclZhbHVlcyQgPSB0aGlzLnN0b3JlLnNlbGVjdChTZWFyY2hTZWxlY3RvcnMucG9zc2libGVGaWx0ZXJWYWx1ZXModGhpcy5maWx0ZXI/LmlkKSk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZCh0aGlzLnBvc3NpYmxlRmlsdGVyVmFsdWVzJC5zdWJzY3JpYmUoKHZhbHVlcykgPT4gKHRoaXMucG9zc2libGVGaWx0ZXJWYWx1ZXMgPSB2YWx1ZXMpKSk7XG5cbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgIGlmICh0aGlzLmZpbHRlcj8uYXR0cmlidXRlcykge1xuICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChcbiAgICAgICAgU2VhcmNoQWN0aW9ucy5nZXRQb3NzaWJsZUZpbHRlclZhbHVlcyh7XG4gICAgICAgICAgZmlsdGVySWQ6IHRoaXMuZmlsdGVyPy5pZCA/PyAnJyxcbiAgICAgICAgICBhdHRyaWJ1dGVzOiAodGhpcy5maWx0ZXI/LmF0dHJpYnV0ZXMgYXMgT21pdDxBdHRyaWJ1dGUsICdjdXN0b21JZCc+W10pLmZpbHRlcihcbiAgICAgICAgICAgIChhKSA9PiAhIWEuZGF0YXNvdXJjZSAmJiAhIWEuaWRcbiAgICAgICAgICApLFxuICAgICAgICAgIGxpbWl0OiB0aGlzLmZpbHRlcj8ubGltaXQgPz8gMTBcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhpcy5zZWFyY2gkLm5leHQoYCR7dGhpcy5fdmFsdWV9YCk7XG4gICAgdGhpcy5hdXRvY29tcGxldGUkID0gdGhpcy5zZWFyY2gkLnBpcGUoXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgocCwgdikgPT4gZXF1YWwocCwgdikpLFxuICAgICAgc2tpcFVudGlsKHRoaXMucHJldmVudEluaXRDYWxsJCksXG4gICAgICBkZWJvdW5jZVRpbWUoNTAwKSxcbiAgICAgIHN3aXRjaE1hcCgoc2VhcmNoKSA9PiB7XG4gICAgICAgIGlmICghIXNlYXJjaCAmJiBzZWFyY2gubGVuZ3RoID4gMSkge1xuICAgICAgICAgIHRoaXMubG9hZGVyID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLml0ZW1zJC5uZXh0KFtdKTtcbiAgICAgICAgICByZXR1cm4gdGhpcy5zZWFyY2hTZXJ2aWNlLmF1dG9jb21wbGV0ZSh0aGlzLmZpbHRlcj8uYXR0cmlidXRlcywgc2VhcmNoLCB0aGlzLmZpbHRlcj8ubGltaXQpLnBpcGUoXG4gICAgICAgICAgICB0YXAoKCkgPT4gKHRoaXMubG9hZGVyID0gZmFsc2UpKSxcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycikgPT4ge1xuICAgICAgICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdBdXRvY29tcGxldGUgZmFpbGVkJywgZXJyKTtcbiAgICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvZihbXSBhcyBzdHJpbmdbXSk7XG4gICAgICB9KVxuICAgICk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnByZXZlbnRJbml0Q2FsbCQubmV4dCgpLCAyMDApO1xuXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMucG9zc2libGVGaWx0ZXJWYWx1ZXMkLCB0aGlzLmF1dG9jb21wbGV0ZSQucGlwZShzdGFydFdpdGgobnVsbCkpXSlcbiAgICAgICAgLnBpcGUobWFwKChbcG9zc2libGVWYWx1ZXMsIGF1dG9jb21wbGV0ZV0pID0+ICghIWF1dG9jb21wbGV0ZSA/IGF1dG9jb21wbGV0ZSA6IHBvc3NpYmxlVmFsdWVzKSkpXG4gICAgICAgIC5zdWJzY3JpYmUoKHZhbHVlcykgPT4gdGhpcy5pdGVtcyQubmV4dCh2YWx1ZXMpKVxuICAgICk7XG4gIH1cblxuICByZXNldEF1dG9jb21wbGV0ZVZhbHVlcygpIHtcbiAgICBpZiAodGhpcy5pdGVtcyQuZ2V0VmFsdWUoKT8ubGVuZ3RoICE9PSB0aGlzLnBvc3NpYmxlRmlsdGVyVmFsdWVzPy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuaXRlbXMkLm5leHQodGhpcy5wb3NzaWJsZUZpbHRlclZhbHVlcyk7XG4gICAgfVxuICB9XG5cbiAgc2V0RmlsdGVyKHZhbHVlOiBzdHJpbmcpIHtcbiAgICBpZiAodmFsdWUgIT09IHRoaXMuZmlsdGVyPy52YWx1ZSkge1xuICAgICAgc3VwZXIudXBkYXRlRmlsdGVyKHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICB1cGRhdGVTZWFyY2goJGV2ZW50PzogRXZlbnQpIHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3QgdmFsdWUgPSAkZXZlbnQgPyAkZXZlbnQudGFyZ2V0IS52YWx1ZSA6ICcnO1xuICAgIHRoaXMuc2VhcmNoJC5uZXh0KHZhbHVlKTtcbiAgfVxuXG4gIGNsZWFyKCkge1xuICAgIHRoaXMuc2VhcmNoJC5uZXh0KCcnKTtcbiAgICB0aGlzLmNsZWFyZWQubmV4dCgpO1xuICB9XG5cbiAgZW50ZXJQcmVzc2VkKCRldmVudDogdm9pZCkge1xuICAgIHRoaXMucHJlc3NlZEVudGVyLm5leHQoKTtcbiAgfVxufVxuIiwiPHByeS1hdXRvY29tcGxldGUtY3NzPjwvcHJ5LWF1dG9jb21wbGV0ZS1jc3M+XG5AaWYgKGZpbHRlcikge1xuICA8ZGl2IGNsYXNzPVwibS1maWx0ZXJfX2lucHV0LXdyYXBwZXIgbS1maWx0ZXJfX2lucHV0LXdyYXBwZXItLWRyb3Bkb3duXCIgKGtleXVwKT1cInVwZGF0ZVNlYXJjaCgkZXZlbnQpXCIgI3JlZj5cbiAgICBAaWYgKGZpbHRlci5uYW1lKSB7XG4gICAgICA8bGFiZWwgY2xhc3M9XCJhLWxhYmVsIG0tZmlsdGVyX19sYWJlbFwiIGZvcj1cInt7IGZpbHRlci5uYW1lIH19XCI+e3sgZmlsdGVyLm5hbWUgfX0mbmJzcDs6Jm5ic3A7PC9sYWJlbD5cbiAgICB9XG4gICAgPHByeS1zZWxlY3RcbiAgICAgIFtpZF09XCJmaWx0ZXIubmFtZVwiXG4gICAgICBbaXRlbXNdPVwiaXRlbXMkIHwgYXN5bmNcIlxuICAgICAgW25nTW9kZWxdPVwiZmlsdGVyLnZhbHVlXCJcbiAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInNldEZpbHRlcigkZXZlbnQpXCJcbiAgICAgIFtjbGVhcmFibGVdPVwidHJ1ZVwiXG4gICAgICBbYXV0b2NvbXBsZXRlXT1cInRydWVcIlxuICAgICAgW2V4dGVybmFsQXV0b2NvbXBsZXRlU2VydmljZV09XCJ0cnVlXCJcbiAgICAgIGFyaWEtbGFiZWxsZWRieT1cIml0ZW0tbGFiZWxcIlxuICAgICAgKGJsdXIpPVwidXBkYXRlU2VhcmNoKCRldmVudClcIlxuICAgICAgW2VsZW1lbnRSZWZdPVwicmVmXCJcbiAgICAgIChjbGVhcmVkKT1cImNsZWFyKClcIlxuICAgICAgW2xvYWRpbmddPVwibG9hZGVyXCJcbiAgICAgIChjbGlja2VkKT1cInJlc2V0QXV0b2NvbXBsZXRlVmFsdWVzKClcIlxuICAgICAgW3BsYWNlaG9sZGVyXT1cImZpbHRlci5wbGFjZWhvbGRlciA/PyAnJyB8IGkxOG46IHsgd2FybjogZmFsc2UgfVwiXG4gICAgICAocHJlc3NlZEVudGVyKT1cImVudGVyUHJlc3NlZCgkZXZlbnQpXCJcbiAgICAgICNzZWxlY3RcbiAgICA+PC9wcnktc2VsZWN0PlxuICA8L2Rpdj5cbn1cbiJdfQ==
@@ -38,6 +38,7 @@ export class DateFilterComponent extends BaseFilterComponent {
38
38
  }
39
39
  clearDate(index) {
40
40
  this.onDateChange(index, '');
41
+ this.cleared.next();
41
42
  }
42
43
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: DateFilterComponent, deps: [{ token: i1.Store }], target: i0.ɵɵFactoryTarget.Component }); }
43
44
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.7", type: DateFilterComponent, selector: "pry-date-filter", usesInheritance: true, ngImport: i0, template: "<div *ngIf=\"filter\" class=\"m-filter\">\n <div *ngIf=\"!filter?.hasDateRange; else dateRange\">\n <div class=\"m-filter__wrapper\">\n <div class=\"m-filter__input-wrapper\">\n <label class=\"a-label m-filter__label\" for=\"{{ filter.name }}\">{{ filter.name }}&nbsp;:&nbsp;</label>\n <input\n class=\"m-filter__input m-filter__input__date\"\n [ngModel]=\"dates[0]\"\n (ngModelChange)=\"onDateChange(0, $event)\"\n type=\"date\"\n [id]=\"filter.name\"\n [placeholder]=\"filter.placeholder ?? '' | i18n: { warn: false }\"\n />\n <span\n *ngIf=\"!!dates[0]\"\n class=\"m-filter__clear-wrapper m-filter__clear-wrapper--date\"\n (click)=\"clearDate(0)\"\n [title]=\"'@pry.filters.clear' | i18n\"\n >\n <span class=\"m-filter__clear\">\u00D7</span>\n <span class=\"u-visually-hidden\">{{ '@pry.toolbox.close' | i18n }}</span>\n </span>\n </div>\n </div>\n </div>\n <ng-template #dateRange>\n <div class=\"m-filter__wrapper\">\n <div class=\"m-filter__input-wrapper\">\n <label class=\"a-label m-filter__label\" for=\"{{ filter.name }}\">{{ filter.name }}&nbsp;:&nbsp;</label>\n <div class=\"m-filter__wrapper\">\n <input\n class=\"m-filter__input m-filter__input__date\"\n [ngModel]=\"dates[0]\"\n (ngModelChange)=\"onDateChange(0, $event)\"\n type=\"date\"\n [id]=\"filter.name + '1'\"\n [placeholder]=\"filter.placeholder ?? '' | i18n: { warn: false }\"\n />\n <span\n *ngIf=\"!!dates[0]\"\n class=\"m-filter__clear-wrapper m-filter__clear-wrapper--two-dates\"\n (click)=\"clearDate(0)\"\n [title]=\"'@pry.filters.clear' | i18n\"\n >\n <span class=\"m-filter__clear\">\u00D7</span>\n <span class=\"u-visually-hidden\">{{ '@pry.toolbox.close' | i18n }}</span>\n </span>\n </div>\n <span class=\"m-filter__date-input-separator\">&nbsp;-&nbsp;</span>\n <div class=\"m-filter__wrapper\">\n <input\n class=\"m-filter__input m-filter__input__date\"\n [ngModel]=\"dates[1]\"\n (ngModelChange)=\"onDateChange(1, $event)\"\n type=\"date\"\n [id]=\"filter.name + '2'\"\n [placeholder]=\"filter.placeholder ?? '' | i18n: { warn: false }\"\n />\n <span\n *ngIf=\"!!dates[1]\"\n class=\"m-filter__clear-wrapper m-filter__clear-wrapper--two-dates\"\n (click)=\"clearDate(1)\"\n [title]=\"'@pry.filters.clear' | i18n\"\n >\n <span class=\"m-filter__clear\">\u00D7</span>\n <span class=\"u-visually-hidden\">{{ '@pry.toolbox.close' | i18n }}</span>\n </span>\n </div>\n </div>\n </div>\n </ng-template>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: i4.I18nPipe, name: "i18n" }] }); }
@@ -46,4 +47,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
46
47
  type: Component,
47
48
  args: [{ selector: 'pry-date-filter', template: "<div *ngIf=\"filter\" class=\"m-filter\">\n <div *ngIf=\"!filter?.hasDateRange; else dateRange\">\n <div class=\"m-filter__wrapper\">\n <div class=\"m-filter__input-wrapper\">\n <label class=\"a-label m-filter__label\" for=\"{{ filter.name }}\">{{ filter.name }}&nbsp;:&nbsp;</label>\n <input\n class=\"m-filter__input m-filter__input__date\"\n [ngModel]=\"dates[0]\"\n (ngModelChange)=\"onDateChange(0, $event)\"\n type=\"date\"\n [id]=\"filter.name\"\n [placeholder]=\"filter.placeholder ?? '' | i18n: { warn: false }\"\n />\n <span\n *ngIf=\"!!dates[0]\"\n class=\"m-filter__clear-wrapper m-filter__clear-wrapper--date\"\n (click)=\"clearDate(0)\"\n [title]=\"'@pry.filters.clear' | i18n\"\n >\n <span class=\"m-filter__clear\">\u00D7</span>\n <span class=\"u-visually-hidden\">{{ '@pry.toolbox.close' | i18n }}</span>\n </span>\n </div>\n </div>\n </div>\n <ng-template #dateRange>\n <div class=\"m-filter__wrapper\">\n <div class=\"m-filter__input-wrapper\">\n <label class=\"a-label m-filter__label\" for=\"{{ filter.name }}\">{{ filter.name }}&nbsp;:&nbsp;</label>\n <div class=\"m-filter__wrapper\">\n <input\n class=\"m-filter__input m-filter__input__date\"\n [ngModel]=\"dates[0]\"\n (ngModelChange)=\"onDateChange(0, $event)\"\n type=\"date\"\n [id]=\"filter.name + '1'\"\n [placeholder]=\"filter.placeholder ?? '' | i18n: { warn: false }\"\n />\n <span\n *ngIf=\"!!dates[0]\"\n class=\"m-filter__clear-wrapper m-filter__clear-wrapper--two-dates\"\n (click)=\"clearDate(0)\"\n [title]=\"'@pry.filters.clear' | i18n\"\n >\n <span class=\"m-filter__clear\">\u00D7</span>\n <span class=\"u-visually-hidden\">{{ '@pry.toolbox.close' | i18n }}</span>\n </span>\n </div>\n <span class=\"m-filter__date-input-separator\">&nbsp;-&nbsp;</span>\n <div class=\"m-filter__wrapper\">\n <input\n class=\"m-filter__input m-filter__input__date\"\n [ngModel]=\"dates[1]\"\n (ngModelChange)=\"onDateChange(1, $event)\"\n type=\"date\"\n [id]=\"filter.name + '2'\"\n [placeholder]=\"filter.placeholder ?? '' | i18n: { warn: false }\"\n />\n <span\n *ngIf=\"!!dates[1]\"\n class=\"m-filter__clear-wrapper m-filter__clear-wrapper--two-dates\"\n (click)=\"clearDate(1)\"\n [title]=\"'@pry.filters.clear' | i18n\"\n >\n <span class=\"m-filter__clear\">\u00D7</span>\n <span class=\"u-visually-hidden\">{{ '@pry.toolbox.close' | i18n }}</span>\n </span>\n </div>\n </div>\n </div>\n </ng-template>\n</div>\n" }]
48
49
  }], ctorParameters: () => [{ type: i1.Store }] });
49
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1maWx0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9kYXNoYm9hcmQvZmlsdGVycy9kYXRlL2RhdGUtZmlsdGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL2ZpbHRlcnMvZGF0ZS9kYXRlLWZpbHRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRWxELE9BQU8sRUFBRSxtQkFBbUIsRUFBdUMsTUFBTSxvQkFBb0IsQ0FBQzs7Ozs7O0FBTTlGLE1BQU0sT0FBTyxtQkFBb0IsU0FBUSxtQkFBbUI7SUFHMUQsWUFBWSxLQUFZO1FBQ3RCLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUhmLFVBQUssR0FBYSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUl6QixJQUFJLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQztJQUNyQixDQUFDO0lBRVEsUUFBUTtRQUNmLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNqQixJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsWUFBWSxFQUFFLENBQUM7WUFDOUIsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDO2dCQUN2QixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN4RCxDQUFDO1FBQ0gsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxLQUFLLElBQUksRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDeEQsQ0FBQztJQUNILENBQUM7SUFFRCxZQUFZLENBQUMsS0FBYSxFQUFFLEtBQWE7UUFDdkMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxLQUFLLENBQUM7UUFDMUIsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLFlBQVksRUFBRSxDQUFDO1lBQzlCLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDckUsS0FBSyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQzNDLENBQUM7aUJBQU0sSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDNUQsS0FBSyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUN6QixDQUFDO1FBQ0gsQ0FBQzthQUFNLENBQUM7WUFDTixLQUFLLENBQUMsWUFBWSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNsQyxDQUFDO0lBQ0gsQ0FBQztJQUVELFNBQVMsQ0FBQyxLQUFhO1FBQ3JCLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQy9CLENBQUM7OEdBbENVLG1CQUFtQjtrR0FBbkIsbUJBQW1CLDhFQ1JoQyxrNkZBd0VBOzsyRkRoRWEsbUJBQW1CO2tCQUovQixTQUFTOytCQUNFLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7IEJhc2VGaWx0ZXJDb21wb25lbnQsIERhdGVVdGlscywgU3Vic2NyaXB0aW9ubmVyRGlyZWN0aXZlIH0gZnJvbSAnQHByb3ZvbHkvZGFzaGJvYXJkJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncHJ5LWRhdGUtZmlsdGVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGUtZmlsdGVyLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBEYXRlRmlsdGVyQ29tcG9uZW50IGV4dGVuZHMgQmFzZUZpbHRlckNvbXBvbmVudCBpbXBsZW1lbnRzIFN1YnNjcmlwdGlvbm5lckRpcmVjdGl2ZSwgT25Jbml0IHtcbiAgZGF0ZXM6IHN0cmluZ1tdID0gWycnLCAnJ107XG5cbiAgY29uc3RydWN0b3Ioc3RvcmU6IFN0b3JlKSB7XG4gICAgc3VwZXIoc3RvcmUpO1xuICAgIHRoaXMudHlwZSA9ICdkYXRlJztcbiAgfVxuXG4gIG92ZXJyaWRlIG5nT25Jbml0KCkge1xuICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgaWYgKHRoaXMuZmlsdGVyPy5oYXNEYXRlUmFuZ2UpIHtcbiAgICAgIGlmICh0aGlzLmZpbHRlcj8udmFsdWUpIHtcbiAgICAgICAgdGhpcy5kYXRlcyA9IHRoaXMuZmlsdGVyPy52YWx1ZS50b1N0cmluZygpLnNwbGl0KCcsJyk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZGF0ZXNbMF0gPSAodGhpcy5maWx0ZXI/LnZhbHVlID8/ICcnKS50b1N0cmluZygpO1xuICAgIH1cbiAgfVxuXG4gIG9uRGF0ZUNoYW5nZShpbmRleDogbnVtYmVyLCB2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5kYXRlc1tpbmRleF0gPSB2YWx1ZTtcbiAgICBpZiAodGhpcy5maWx0ZXI/Lmhhc0RhdGVSYW5nZSkge1xuICAgICAgaWYgKHRoaXMuZGF0ZXMuZmlsdGVyKChkYXRlKSA9PiAhIWRhdGUpLmxlbmd0aCA9PT0gdGhpcy5kYXRlcy5sZW5ndGgpIHtcbiAgICAgICAgc3VwZXIudXBkYXRlRmlsdGVyKHRoaXMuZGF0ZXMuam9pbignLCcpKTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5kYXRlcy5maWx0ZXIoKGRhdGUpID0+ICEhZGF0ZSkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHN1cGVyLnVwZGF0ZUZpbHRlcignJyk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHN1cGVyLnVwZGF0ZUZpbHRlcih2YWx1ZSA/PyAnJyk7XG4gICAgfVxuICB9XG5cbiAgY2xlYXJEYXRlKGluZGV4OiBudW1iZXIpIHtcbiAgICB0aGlzLm9uRGF0ZUNoYW5nZShpbmRleCwgJycpO1xuICB9XG59XG4iLCI8ZGl2ICpuZ0lmPVwiZmlsdGVyXCIgY2xhc3M9XCJtLWZpbHRlclwiPlxuICA8ZGl2ICpuZ0lmPVwiIWZpbHRlcj8uaGFzRGF0ZVJhbmdlOyBlbHNlIGRhdGVSYW5nZVwiPlxuICAgIDxkaXYgY2xhc3M9XCJtLWZpbHRlcl9fd3JhcHBlclwiPlxuICAgICAgPGRpdiBjbGFzcz1cIm0tZmlsdGVyX19pbnB1dC13cmFwcGVyXCI+XG4gICAgICAgIDxsYWJlbCBjbGFzcz1cImEtbGFiZWwgbS1maWx0ZXJfX2xhYmVsXCIgZm9yPVwie3sgZmlsdGVyLm5hbWUgfX1cIj57eyBmaWx0ZXIubmFtZSB9fSZuYnNwOzombmJzcDs8L2xhYmVsPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICBjbGFzcz1cIm0tZmlsdGVyX19pbnB1dCBtLWZpbHRlcl9faW5wdXRfX2RhdGVcIlxuICAgICAgICAgIFtuZ01vZGVsXT1cImRhdGVzWzBdXCJcbiAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvbkRhdGVDaGFuZ2UoMCwgJGV2ZW50KVwiXG4gICAgICAgICAgdHlwZT1cImRhdGVcIlxuICAgICAgICAgIFtpZF09XCJmaWx0ZXIubmFtZVwiXG4gICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImZpbHRlci5wbGFjZWhvbGRlciA/PyAnJyB8IGkxOG46IHsgd2FybjogZmFsc2UgfVwiXG4gICAgICAgIC8+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgKm5nSWY9XCIhIWRhdGVzWzBdXCJcbiAgICAgICAgICBjbGFzcz1cIm0tZmlsdGVyX19jbGVhci13cmFwcGVyIG0tZmlsdGVyX19jbGVhci13cmFwcGVyLS1kYXRlXCJcbiAgICAgICAgICAoY2xpY2spPVwiY2xlYXJEYXRlKDApXCJcbiAgICAgICAgICBbdGl0bGVdPVwiJ0BwcnkuZmlsdGVycy5jbGVhcicgfCBpMThuXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibS1maWx0ZXJfX2NsZWFyXCI+w5c8L3NwYW4+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1LXZpc3VhbGx5LWhpZGRlblwiPnt7ICdAcHJ5LnRvb2xib3guY2xvc2UnIHwgaTE4biB9fTwvc3Bhbj5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8bmctdGVtcGxhdGUgI2RhdGVSYW5nZT5cbiAgICA8ZGl2IGNsYXNzPVwibS1maWx0ZXJfX3dyYXBwZXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJtLWZpbHRlcl9faW5wdXQtd3JhcHBlclwiPlxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJhLWxhYmVsIG0tZmlsdGVyX19sYWJlbFwiIGZvcj1cInt7IGZpbHRlci5uYW1lIH19XCI+e3sgZmlsdGVyLm5hbWUgfX0mbmJzcDs6Jm5ic3A7PC9sYWJlbD5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm0tZmlsdGVyX193cmFwcGVyXCI+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICBjbGFzcz1cIm0tZmlsdGVyX19pbnB1dCBtLWZpbHRlcl9faW5wdXRfX2RhdGVcIlxuICAgICAgICAgICAgW25nTW9kZWxdPVwiZGF0ZXNbMF1cIlxuICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25EYXRlQ2hhbmdlKDAsICRldmVudClcIlxuICAgICAgICAgICAgdHlwZT1cImRhdGVcIlxuICAgICAgICAgICAgW2lkXT1cImZpbHRlci5uYW1lICsgJzEnXCJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJmaWx0ZXIucGxhY2Vob2xkZXIgPz8gJycgfCBpMThuOiB7IHdhcm46IGZhbHNlIH1cIlxuICAgICAgICAgIC8+XG4gICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICpuZ0lmPVwiISFkYXRlc1swXVwiXG4gICAgICAgICAgICBjbGFzcz1cIm0tZmlsdGVyX19jbGVhci13cmFwcGVyIG0tZmlsdGVyX19jbGVhci13cmFwcGVyLS10d28tZGF0ZXNcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImNsZWFyRGF0ZSgwKVwiXG4gICAgICAgICAgICBbdGl0bGVdPVwiJ0BwcnkuZmlsdGVycy5jbGVhcicgfCBpMThuXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm0tZmlsdGVyX19jbGVhclwiPsOXPC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1LXZpc3VhbGx5LWhpZGRlblwiPnt7ICdAcHJ5LnRvb2xib3guY2xvc2UnIHwgaTE4biB9fTwvc3Bhbj5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8c3BhbiBjbGFzcz1cIm0tZmlsdGVyX19kYXRlLWlucHV0LXNlcGFyYXRvclwiPiZuYnNwOy0mbmJzcDs8L3NwYW4+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtLWZpbHRlcl9fd3JhcHBlclwiPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgY2xhc3M9XCJtLWZpbHRlcl9faW5wdXQgbS1maWx0ZXJfX2lucHV0X19kYXRlXCJcbiAgICAgICAgICAgIFtuZ01vZGVsXT1cImRhdGVzWzFdXCJcbiAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uRGF0ZUNoYW5nZSgxLCAkZXZlbnQpXCJcbiAgICAgICAgICAgIHR5cGU9XCJkYXRlXCJcbiAgICAgICAgICAgIFtpZF09XCJmaWx0ZXIubmFtZSArICcyJ1wiXG4gICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZmlsdGVyLnBsYWNlaG9sZGVyID8/ICcnIHwgaTE4bjogeyB3YXJuOiBmYWxzZSB9XCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAqbmdJZj1cIiEhZGF0ZXNbMV1cIlxuICAgICAgICAgICAgY2xhc3M9XCJtLWZpbHRlcl9fY2xlYXItd3JhcHBlciBtLWZpbHRlcl9fY2xlYXItd3JhcHBlci0tdHdvLWRhdGVzXCJcbiAgICAgICAgICAgIChjbGljayk9XCJjbGVhckRhdGUoMSlcIlxuICAgICAgICAgICAgW3RpdGxlXT1cIidAcHJ5LmZpbHRlcnMuY2xlYXInIHwgaTE4blwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtLWZpbHRlcl9fY2xlYXJcIj7Dlzwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidS12aXN1YWxseS1oaWRkZW5cIj57eyAnQHByeS50b29sYm94LmNsb3NlJyB8IGkxOG4gfX08L3NwYW4+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L25nLXRlbXBsYXRlPlxuPC9kaXY+XG4iXX0=
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1maWx0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9kYXNoYm9hcmQvZmlsdGVycy9kYXRlL2RhdGUtZmlsdGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL2ZpbHRlcnMvZGF0ZS9kYXRlLWZpbHRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRWxELE9BQU8sRUFBRSxtQkFBbUIsRUFBNEIsTUFBTSxvQkFBb0IsQ0FBQzs7Ozs7O0FBTW5GLE1BQU0sT0FBTyxtQkFBb0IsU0FBUSxtQkFBbUI7SUFHMUQsWUFBWSxLQUFZO1FBQ3RCLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUhmLFVBQUssR0FBYSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUl6QixJQUFJLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQztJQUNyQixDQUFDO0lBRVEsUUFBUTtRQUNmLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNqQixJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsWUFBWSxFQUFFLENBQUM7WUFDOUIsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDO2dCQUN2QixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN4RCxDQUFDO1FBQ0gsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxLQUFLLElBQUksRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDeEQsQ0FBQztJQUNILENBQUM7SUFFRCxZQUFZLENBQUMsS0FBYSxFQUFFLEtBQWE7UUFDdkMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxLQUFLLENBQUM7UUFDMUIsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLFlBQVksRUFBRSxDQUFDO1lBQzlCLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDckUsS0FBSyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQzNDLENBQUM7aUJBQU0sSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDNUQsS0FBSyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUN6QixDQUFDO1FBQ0gsQ0FBQzthQUFNLENBQUM7WUFDTixLQUFLLENBQUMsWUFBWSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNsQyxDQUFDO0lBQ0gsQ0FBQztJQUVELFNBQVMsQ0FBQyxLQUFhO1FBQ3JCLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzdCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDdEIsQ0FBQzs4R0FuQ1UsbUJBQW1CO2tHQUFuQixtQkFBbUIsOEVDUmhDLGs2RkF3RUE7OzJGRGhFYSxtQkFBbUI7a0JBSi9CLFNBQVM7K0JBQ0UsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHsgQmFzZUZpbHRlckNvbXBvbmVudCwgU3Vic2NyaXB0aW9ubmVyRGlyZWN0aXZlIH0gZnJvbSAnQHByb3ZvbHkvZGFzaGJvYXJkJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncHJ5LWRhdGUtZmlsdGVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGUtZmlsdGVyLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBEYXRlRmlsdGVyQ29tcG9uZW50IGV4dGVuZHMgQmFzZUZpbHRlckNvbXBvbmVudCBpbXBsZW1lbnRzIFN1YnNjcmlwdGlvbm5lckRpcmVjdGl2ZSwgT25Jbml0IHtcbiAgZGF0ZXM6IHN0cmluZ1tdID0gWycnLCAnJ107XG5cbiAgY29uc3RydWN0b3Ioc3RvcmU6IFN0b3JlKSB7XG4gICAgc3VwZXIoc3RvcmUpO1xuICAgIHRoaXMudHlwZSA9ICdkYXRlJztcbiAgfVxuXG4gIG92ZXJyaWRlIG5nT25Jbml0KCkge1xuICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgaWYgKHRoaXMuZmlsdGVyPy5oYXNEYXRlUmFuZ2UpIHtcbiAgICAgIGlmICh0aGlzLmZpbHRlcj8udmFsdWUpIHtcbiAgICAgICAgdGhpcy5kYXRlcyA9IHRoaXMuZmlsdGVyPy52YWx1ZS50b1N0cmluZygpLnNwbGl0KCcsJyk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZGF0ZXNbMF0gPSAodGhpcy5maWx0ZXI/LnZhbHVlID8/ICcnKS50b1N0cmluZygpO1xuICAgIH1cbiAgfVxuXG4gIG9uRGF0ZUNoYW5nZShpbmRleDogbnVtYmVyLCB2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5kYXRlc1tpbmRleF0gPSB2YWx1ZTtcbiAgICBpZiAodGhpcy5maWx0ZXI/Lmhhc0RhdGVSYW5nZSkge1xuICAgICAgaWYgKHRoaXMuZGF0ZXMuZmlsdGVyKChkYXRlKSA9PiAhIWRhdGUpLmxlbmd0aCA9PT0gdGhpcy5kYXRlcy5sZW5ndGgpIHtcbiAgICAgICAgc3VwZXIudXBkYXRlRmlsdGVyKHRoaXMuZGF0ZXMuam9pbignLCcpKTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5kYXRlcy5maWx0ZXIoKGRhdGUpID0+ICEhZGF0ZSkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHN1cGVyLnVwZGF0ZUZpbHRlcignJyk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHN1cGVyLnVwZGF0ZUZpbHRlcih2YWx1ZSA/PyAnJyk7XG4gICAgfVxuICB9XG5cbiAgY2xlYXJEYXRlKGluZGV4OiBudW1iZXIpIHtcbiAgICB0aGlzLm9uRGF0ZUNoYW5nZShpbmRleCwgJycpO1xuICAgIHRoaXMuY2xlYXJlZC5uZXh0KCk7XG4gIH1cbn1cbiIsIjxkaXYgKm5nSWY9XCJmaWx0ZXJcIiBjbGFzcz1cIm0tZmlsdGVyXCI+XG4gIDxkaXYgKm5nSWY9XCIhZmlsdGVyPy5oYXNEYXRlUmFuZ2U7IGVsc2UgZGF0ZVJhbmdlXCI+XG4gICAgPGRpdiBjbGFzcz1cIm0tZmlsdGVyX193cmFwcGVyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwibS1maWx0ZXJfX2lucHV0LXdyYXBwZXJcIj5cbiAgICAgICAgPGxhYmVsIGNsYXNzPVwiYS1sYWJlbCBtLWZpbHRlcl9fbGFiZWxcIiBmb3I9XCJ7eyBmaWx0ZXIubmFtZSB9fVwiPnt7IGZpbHRlci5uYW1lIH19Jm5ic3A7OiZuYnNwOzwvbGFiZWw+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIGNsYXNzPVwibS1maWx0ZXJfX2lucHV0IG0tZmlsdGVyX19pbnB1dF9fZGF0ZVwiXG4gICAgICAgICAgW25nTW9kZWxdPVwiZGF0ZXNbMF1cIlxuICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uRGF0ZUNoYW5nZSgwLCAkZXZlbnQpXCJcbiAgICAgICAgICB0eXBlPVwiZGF0ZVwiXG4gICAgICAgICAgW2lkXT1cImZpbHRlci5uYW1lXCJcbiAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZmlsdGVyLnBsYWNlaG9sZGVyID8/ICcnIHwgaTE4bjogeyB3YXJuOiBmYWxzZSB9XCJcbiAgICAgICAgLz5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICAqbmdJZj1cIiEhZGF0ZXNbMF1cIlxuICAgICAgICAgIGNsYXNzPVwibS1maWx0ZXJfX2NsZWFyLXdyYXBwZXIgbS1maWx0ZXJfX2NsZWFyLXdyYXBwZXItLWRhdGVcIlxuICAgICAgICAgIChjbGljayk9XCJjbGVhckRhdGUoMClcIlxuICAgICAgICAgIFt0aXRsZV09XCInQHByeS5maWx0ZXJzLmNsZWFyJyB8IGkxOG5cIlxuICAgICAgICA+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJtLWZpbHRlcl9fY2xlYXJcIj7Dlzwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInUtdmlzdWFsbHktaGlkZGVuXCI+e3sgJ0BwcnkudG9vbGJveC5jbG9zZScgfCBpMThuIH19PC9zcGFuPlxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxuZy10ZW1wbGF0ZSAjZGF0ZVJhbmdlPlxuICAgIDxkaXYgY2xhc3M9XCJtLWZpbHRlcl9fd3JhcHBlclwiPlxuICAgICAgPGRpdiBjbGFzcz1cIm0tZmlsdGVyX19pbnB1dC13cmFwcGVyXCI+XG4gICAgICAgIDxsYWJlbCBjbGFzcz1cImEtbGFiZWwgbS1maWx0ZXJfX2xhYmVsXCIgZm9yPVwie3sgZmlsdGVyLm5hbWUgfX1cIj57eyBmaWx0ZXIubmFtZSB9fSZuYnNwOzombmJzcDs8L2xhYmVsPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibS1maWx0ZXJfX3dyYXBwZXJcIj5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIGNsYXNzPVwibS1maWx0ZXJfX2lucHV0IG0tZmlsdGVyX19pbnB1dF9fZGF0ZVwiXG4gICAgICAgICAgICBbbmdNb2RlbF09XCJkYXRlc1swXVwiXG4gICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvbkRhdGVDaGFuZ2UoMCwgJGV2ZW50KVwiXG4gICAgICAgICAgICB0eXBlPVwiZGF0ZVwiXG4gICAgICAgICAgICBbaWRdPVwiZmlsdGVyLm5hbWUgKyAnMSdcIlxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImZpbHRlci5wbGFjZWhvbGRlciA/PyAnJyB8IGkxOG46IHsgd2FybjogZmFsc2UgfVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgKm5nSWY9XCIhIWRhdGVzWzBdXCJcbiAgICAgICAgICAgIGNsYXNzPVwibS1maWx0ZXJfX2NsZWFyLXdyYXBwZXIgbS1maWx0ZXJfX2NsZWFyLXdyYXBwZXItLXR3by1kYXRlc1wiXG4gICAgICAgICAgICAoY2xpY2spPVwiY2xlYXJEYXRlKDApXCJcbiAgICAgICAgICAgIFt0aXRsZV09XCInQHByeS5maWx0ZXJzLmNsZWFyJyB8IGkxOG5cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibS1maWx0ZXJfX2NsZWFyXCI+w5c8L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInUtdmlzdWFsbHktaGlkZGVuXCI+e3sgJ0BwcnkudG9vbGJveC5jbG9zZScgfCBpMThuIH19PC9zcGFuPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwibS1maWx0ZXJfX2RhdGUtaW5wdXQtc2VwYXJhdG9yXCI+Jm5ic3A7LSZuYnNwOzwvc3Bhbj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm0tZmlsdGVyX193cmFwcGVyXCI+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICBjbGFzcz1cIm0tZmlsdGVyX19pbnB1dCBtLWZpbHRlcl9faW5wdXRfX2RhdGVcIlxuICAgICAgICAgICAgW25nTW9kZWxdPVwiZGF0ZXNbMV1cIlxuICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25EYXRlQ2hhbmdlKDEsICRldmVudClcIlxuICAgICAgICAgICAgdHlwZT1cImRhdGVcIlxuICAgICAgICAgICAgW2lkXT1cImZpbHRlci5uYW1lICsgJzInXCJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJmaWx0ZXIucGxhY2Vob2xkZXIgPz8gJycgfCBpMThuOiB7IHdhcm46IGZhbHNlIH1cIlxuICAgICAgICAgIC8+XG4gICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICpuZ0lmPVwiISFkYXRlc1sxXVwiXG4gICAgICAgICAgICBjbGFzcz1cIm0tZmlsdGVyX19jbGVhci13cmFwcGVyIG0tZmlsdGVyX19jbGVhci13cmFwcGVyLS10d28tZGF0ZXNcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImNsZWFyRGF0ZSgxKVwiXG4gICAgICAgICAgICBbdGl0bGVdPVwiJ0BwcnkuZmlsdGVycy5jbGVhcicgfCBpMThuXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm0tZmlsdGVyX19jbGVhclwiPsOXPC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1LXZpc3VhbGx5LWhpZGRlblwiPnt7ICdAcHJ5LnRvb2xib3guY2xvc2UnIHwgaTE4biB9fTwvc3Bhbj5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvbmctdGVtcGxhdGU+XG48L2Rpdj5cbiJdfQ==