design-angular-kit 1.1.0 → 1.1.2

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 (86) hide show
  1. package/README.md +66 -60
  2. package/esm2022/lib/components/core/dimmer/dimmer.component.mjs +5 -5
  3. package/esm2022/lib/components/form/form.module.mjs +5 -1
  4. package/esm2022/lib/components/form/transfer/store/transfer.reducers.mjs +191 -0
  5. package/esm2022/lib/components/form/transfer/store/transfer.state.mjs +2 -0
  6. package/esm2022/lib/components/form/transfer/store/transfer.store.mjs +70 -0
  7. package/esm2022/lib/components/form/transfer/transfer-list/transfer-list.component.mjs +70 -0
  8. package/esm2022/lib/components/form/transfer/transfer.component.mjs +147 -0
  9. package/esm2022/lib/components/form/transfer/transfer.model.mjs +6 -0
  10. package/esm2022/lib/components/navigation/navscroll/navscroll-list-item.component.mjs +98 -0
  11. package/esm2022/lib/components/navigation/navscroll/navscroll-list-items.component.mjs +44 -0
  12. package/esm2022/lib/components/navigation/navscroll/navscroll.component.mjs +116 -0
  13. package/esm2022/lib/components/navigation/navscroll/navscroll.model.mjs +2 -0
  14. package/esm2022/lib/components/navigation/navscroll/navscroll.store.mjs +65 -0
  15. package/esm2022/lib/components/navigation/navscroll/navscroll.utils.mjs +23 -0
  16. package/esm2022/lib/design-angular-kit.module.mjs +10 -6
  17. package/esm2022/lib/provide-design-angular-kit.mjs +5 -5
  18. package/esm2022/public_api.mjs +25 -21
  19. package/fesm2022/design-angular-kit.mjs +1045 -255
  20. package/fesm2022/design-angular-kit.mjs.map +1 -1
  21. package/lib/components/form/form.module.d.ts +4 -3
  22. package/lib/components/form/transfer/store/transfer.reducers.d.ts +103 -0
  23. package/lib/components/form/transfer/store/transfer.state.d.ts +18 -0
  24. package/lib/components/form/transfer/store/transfer.store.d.ts +23 -0
  25. package/lib/components/form/transfer/transfer-list/transfer-list.component.d.ts +48 -0
  26. package/lib/components/form/transfer/transfer.component.d.ts +75 -0
  27. package/lib/components/form/transfer/transfer.model.d.ts +6 -0
  28. package/lib/components/navigation/navscroll/navscroll-list-item.component.d.ts +16 -0
  29. package/lib/components/navigation/navscroll/navscroll-list-items.component.d.ts +7 -0
  30. package/lib/components/navigation/navscroll/navscroll.component.d.ts +47 -0
  31. package/lib/components/navigation/navscroll/navscroll.model.d.ts +10 -0
  32. package/lib/components/navigation/navscroll/navscroll.store.d.ts +16 -0
  33. package/lib/components/navigation/navscroll/navscroll.utils.d.ts +6 -0
  34. package/lib/design-angular-kit.module.d.ts +8 -7
  35. package/package.json +5 -1
  36. package/public_api.d.ts +24 -20
  37. package/schematics/collection.json +19 -0
  38. package/schematics/ng-add/index.d.ts +3 -0
  39. package/schematics/ng-add/index.js +29 -0
  40. package/schematics/ng-add/index.js.map +1 -0
  41. package/schematics/ng-add/index.spec.d.ts +1 -0
  42. package/schematics/ng-add/index.spec.js +43 -0
  43. package/schematics/ng-add/index.spec.js.map +1 -0
  44. package/schematics/ng-add/rules/setup-project/add-animations.d.ts +2 -0
  45. package/schematics/ng-add/rules/setup-project/add-animations.js +11 -0
  46. package/schematics/ng-add/rules/setup-project/add-animations.js.map +1 -0
  47. package/schematics/ng-add/rules/setup-project/add-assets.d.ts +3 -0
  48. package/schematics/ng-add/rules/setup-project/add-assets.js +50 -0
  49. package/schematics/ng-add/rules/setup-project/add-assets.js.map +1 -0
  50. package/schematics/ng-add/rules/setup-project/add-design-angular-kit.d.ts +3 -0
  51. package/schematics/ng-add/rules/setup-project/add-design-angular-kit.js +43 -0
  52. package/schematics/ng-add/rules/setup-project/add-design-angular-kit.js.map +1 -0
  53. package/schematics/ng-add/rules/setup-project/add-http-client.d.ts +2 -0
  54. package/schematics/ng-add/rules/setup-project/add-http-client.js +11 -0
  55. package/schematics/ng-add/rules/setup-project/add-http-client.js.map +1 -0
  56. package/schematics/ng-add/rules/setup-project/add-import-to-style-file.d.ts +11 -0
  57. package/schematics/ng-add/rules/setup-project/add-import-to-style-file.js +112 -0
  58. package/schematics/ng-add/rules/setup-project/add-import-to-style-file.js.map +1 -0
  59. package/schematics/ng-add/rules/setup-project/add-localisation.d.ts +3 -0
  60. package/schematics/ng-add/rules/setup-project/add-localisation.js +50 -0
  61. package/schematics/ng-add/rules/setup-project/add-localisation.js.map +1 -0
  62. package/schematics/ng-add/rules/setup-project/angular-json-helper.d.ts +2 -0
  63. package/schematics/ng-add/rules/setup-project/angular-json-helper.js +13 -0
  64. package/schematics/ng-add/rules/setup-project/angular-json-helper.js.map +1 -0
  65. package/schematics/ng-add/rules/setup-project/exceptions.d.ts +7 -0
  66. package/schematics/ng-add/rules/setup-project/exceptions.js +17 -0
  67. package/schematics/ng-add/rules/setup-project/exceptions.js.map +1 -0
  68. package/schematics/ng-add/rules/setup-project/index.d.ts +6 -0
  69. package/schematics/ng-add/rules/setup-project/index.js +23 -0
  70. package/schematics/ng-add/rules/setup-project/index.js.map +1 -0
  71. package/schematics/ng-add/schema.d.ts +3 -0
  72. package/schematics/ng-add/schema.js +3 -0
  73. package/schematics/ng-add/schema.js.map +1 -0
  74. package/schematics/ng-add/schema.json +16 -0
  75. package/schematics/ng-add/setup-project.d.ts +3 -0
  76. package/schematics/ng-add/setup-project.js +37 -0
  77. package/schematics/ng-add/setup-project.js.map +1 -0
  78. package/schematics/ng-add/setup-project.spec.d.ts +1 -0
  79. package/schematics/ng-add/setup-project.spec.js +139 -0
  80. package/schematics/ng-add/setup-project.spec.js.map +1 -0
  81. package/schematics/ng-add/utils.d.ts +14 -0
  82. package/schematics/ng-add/utils.js +49 -0
  83. package/schematics/ng-add/utils.js.map +1 -0
  84. package/schematics/ng-add/versions-helper.d.ts +3 -0
  85. package/schematics/ng-add/versions-helper.js +40 -0
  86. package/schematics/ng-add/versions-helper.js.map +1 -0
@@ -0,0 +1,116 @@
1
+ import { AsyncPipe, NgClass, NgTemplateOutlet, ViewportScroller } from '@angular/common';
2
+ import { ChangeDetectionStrategy, Component, DestroyRef, ElementRef, HostListener, inject, Input, ViewChild, } from '@angular/core';
3
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
4
+ import { RouterLink, RouterLinkActive, RouterLinkWithHref } from '@angular/router';
5
+ import { delay, filter, map, tap, withLatestFrom } from 'rxjs';
6
+ import { ItNavscrollListItemsComponent } from './navscroll-list-items.component';
7
+ import { NavscrollStore } from './navscroll.store';
8
+ import * as i0 from "@angular/core";
9
+ /**
10
+ * Navscroll
11
+ * @description Show a list of links to anchor of the document.
12
+ */
13
+ export class ItNavscrollComponent {
14
+ onScroll() {
15
+ const sectionContainer = this.#elementRef.nativeElement.querySelector('.it-page-sections-container');
16
+ this.#store.updateProgressBar(sectionContainer);
17
+ }
18
+ onResize() {
19
+ this.#setMobile();
20
+ }
21
+ #store;
22
+ #scroller;
23
+ #destroyRef;
24
+ #elementRef;
25
+ constructor() {
26
+ /**
27
+ * Header of the Navscroll
28
+ */
29
+ this.header = '';
30
+ /**
31
+ * Border position
32
+ * @default left
33
+ */
34
+ this.borderPosition = 'left';
35
+ /**
36
+ * Alignment
37
+ * @default top
38
+ */
39
+ this.alignment = 'top';
40
+ /**
41
+ * Theme
42
+ * @default light
43
+ */
44
+ this.theme = 'light';
45
+ this.#store = inject(NavscrollStore);
46
+ this.#scroller = inject(ViewportScroller);
47
+ this.#destroyRef = inject(DestroyRef);
48
+ this.#elementRef = inject(ElementRef);
49
+ this.selectedTitle = this.#store.selected.pipe(map(selected => selected?.title ?? ''));
50
+ this.progressBarValue = this.#store.progressBar;
51
+ this.isMobile = this.#store.isMobile;
52
+ this.#store.menuItemSelected
53
+ .pipe(takeUntilDestroyed(), withLatestFrom(this.isMobile), tap(v => {
54
+ const isMobile = v[1];
55
+ if (isMobile) {
56
+ this.toggleButtonRef.nativeElement.click();
57
+ }
58
+ }))
59
+ .subscribe();
60
+ }
61
+ ngOnInit() {
62
+ this.#initViewScrollerSubscription();
63
+ this.#store.init(this.items);
64
+ this.#setMobile();
65
+ }
66
+ #initViewScrollerSubscription() {
67
+ this.#store.selected
68
+ .pipe(takeUntilDestroyed(this.#destroyRef), filter(selected => Boolean(selected)), map(v => v), delay(0), //WA
69
+ tap({
70
+ next: ({ href }) => {
71
+ this.#scroller.scrollToAnchor(href);
72
+ },
73
+ }))
74
+ .subscribe();
75
+ }
76
+ #setMobile() {
77
+ this.#store.setMobile(window);
78
+ }
79
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: ItNavscrollComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
80
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.6", type: ItNavscrollComponent, isStandalone: true, selector: "it-navscroll", inputs: { header: "header", items: "items", borderPosition: "borderPosition", alignment: "alignment", theme: "theme", pageSectionsTemplate: "pageSectionsTemplate" }, host: { listeners: { "window:scroll": "onScroll($event)", "window:resize": "onResize($event)" } }, providers: [NavscrollStore], viewQueries: [{ propertyName: "toggleButtonRef", first: true, predicate: ["toggleButtonRef"], descendants: true }], ngImport: i0, template: "<div class=\"container py-lg-5\">\n <div class=\"row\">\n <div class=\"col-12 col-lg-4\">\n <div class=\"it-navscroll-sticky\" [ngClass]=\"{ 'it-navscroll-sticky-mobile': isMobile | async }\" data-bs-stackable=\"true\">\n <nav\n class=\"navbar it-navscroll-wrapper navbar-expand-lg\"\n [class.it-top-navscroll]=\"alignment === 'top'\"\n [class.it-bottom-navscroll]=\"alignment === 'bottom'\"\n [class.it-left-side]=\"borderPosition === 'left'\"\n [class.it-right-side]=\"borderPosition === 'right'\"\n [class.theme-dark-mobile]=\"theme === 'dark'\"\n [class.theme-dark-desktop]=\"theme === 'dark'\">\n <button\n class=\"custom-navbar-toggler\"\n type=\"button\"\n aria-controls=\"navbarNav\"\n aria-expanded=\"false\"\n aria-label=\"Toggle navigation\"\n data-bs-toggle=\"navbarcollapsible\"\n data-bs-target=\"#navbarNav\"\n #toggleButtonRef>\n <span class=\"it-list\"></span>{{ selectedTitle | async }}\n </button>\n <div class=\"progress custom-navbar-progressbar\">\n <div\n class=\"progress-bar it-navscroll-progressbar\"\n role=\"progressbar\"\n [style.width.%]=\"progressBarValue | async\"\n [attr.aria-valuenow]=\"progressBarValue | async\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"></div>\n </div>\n <div class=\"navbar-collapsable\" id=\"navbarNav\">\n <div class=\"overlay\"></div>\n <div class=\"close-div visually-hidden\">\n <button class=\"btn close-menu\" type=\"button\"><span class=\"it-close\"></span>Chiudi</button>\n </div>\n <button type=\"button\" class=\"it-back-button btn w-100 text-start\">\n <svg class=\"icon icon-sm icon-primary align-top\">\n <use\n href=\"/bootstrap-italia/dist/svg/sprites.svg#it-chevron-left\"\n xlink:href=\"/bootstrap-italia/dist/svg/sprites.svg#it-chevron-left\"></use>\n </svg>\n <span>Indietro</span>\n </button>\n <div class=\"menu-wrapper\">\n <div class=\"link-list-wrapper\">\n <h3>{{ header }}</h3>\n <div class=\"progress\">\n <div\n class=\"progress-bar it-navscroll-progressbar\"\n role=\"progressbar\"\n [style.width.%]=\"progressBarValue | async\"\n [attr.aria-valuenow]=\"progressBarValue | async\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"></div>\n </div>\n <it-navscroll-list-items [items]=\"items\"></it-navscroll-list-items>\n </div>\n </div>\n </div>\n </nav>\n </div>\n </div>\n <div class=\"col-12 col-lg-8 it-page-sections-container\">\n <ng-container\n *ngTemplateOutlet=\"pageSectionsTemplate ? pageSectionsTemplate : defaultPageSectionsTemplate; context: { items: items }\">\n </ng-container>\n </div>\n </div>\n</div>\n\n<ng-template #defaultPageSectionsTemplate let-items=\"items\">\n @for (item of items; track item.href) {\n <ng-container *ngTemplateOutlet=\"paragraphTemplate; context: { item: item, level: 1 }\"></ng-container>\n }\n</ng-template>\n\n<ng-template #paragraphTemplate let-item=\"item\" let-level=\"level\" let-nextLevel=\"level+1\">\n @switch (level) {\n @case (1) {\n <h2 class=\"it-page-section\" id=\"{{ item.href }}\">{{ item.title }}</h2>\n }\n @case (2) {\n <h3 class=\"it-page-section\" id=\"{{ item.href }}\">{{ item.title }}</h3>\n }\n @case (3) {\n <h4 class=\"it-page-section\" id=\"{{ item.href }}\">{{ item.title }}</h4>\n }\n @case (4) {\n <h5 class=\"it-page-section\" id=\"{{ item.href }}\">{{ item.title }}</h5>\n }\n @default {\n <h6 class=\"it-page-section\" id=\"{{ item.href }}\">{{ item.title }}</h6>\n }\n }\n <p>{{ item.text }}</p>\n @for (item of item.childs; track item.href) {\n <ng-container *ngTemplateOutlet=\"paragraphTemplate; context: { item: item, level: nextLevel }\"></ng-container>\n }\n</ng-template>\n", styles: [".it-navscroll-sticky{position:sticky;top:0}.it-navscroll-sticky-mobile{z-index:1020}\n"], dependencies: [{ kind: "component", type: ItNavscrollListItemsComponent, selector: "it-navscroll-list-items", inputs: ["items"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
81
+ }
82
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: ItNavscrollComponent, decorators: [{
83
+ type: Component,
84
+ args: [{ selector: 'it-navscroll', standalone: true, imports: [
85
+ ItNavscrollListItemsComponent,
86
+ AsyncPipe,
87
+ NgTemplateOutlet,
88
+ RouterLink,
89
+ RouterLinkActive,
90
+ RouterLinkWithHref,
91
+ AsyncPipe,
92
+ NgClass,
93
+ ], changeDetection: ChangeDetectionStrategy.OnPush, providers: [NavscrollStore], template: "<div class=\"container py-lg-5\">\n <div class=\"row\">\n <div class=\"col-12 col-lg-4\">\n <div class=\"it-navscroll-sticky\" [ngClass]=\"{ 'it-navscroll-sticky-mobile': isMobile | async }\" data-bs-stackable=\"true\">\n <nav\n class=\"navbar it-navscroll-wrapper navbar-expand-lg\"\n [class.it-top-navscroll]=\"alignment === 'top'\"\n [class.it-bottom-navscroll]=\"alignment === 'bottom'\"\n [class.it-left-side]=\"borderPosition === 'left'\"\n [class.it-right-side]=\"borderPosition === 'right'\"\n [class.theme-dark-mobile]=\"theme === 'dark'\"\n [class.theme-dark-desktop]=\"theme === 'dark'\">\n <button\n class=\"custom-navbar-toggler\"\n type=\"button\"\n aria-controls=\"navbarNav\"\n aria-expanded=\"false\"\n aria-label=\"Toggle navigation\"\n data-bs-toggle=\"navbarcollapsible\"\n data-bs-target=\"#navbarNav\"\n #toggleButtonRef>\n <span class=\"it-list\"></span>{{ selectedTitle | async }}\n </button>\n <div class=\"progress custom-navbar-progressbar\">\n <div\n class=\"progress-bar it-navscroll-progressbar\"\n role=\"progressbar\"\n [style.width.%]=\"progressBarValue | async\"\n [attr.aria-valuenow]=\"progressBarValue | async\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"></div>\n </div>\n <div class=\"navbar-collapsable\" id=\"navbarNav\">\n <div class=\"overlay\"></div>\n <div class=\"close-div visually-hidden\">\n <button class=\"btn close-menu\" type=\"button\"><span class=\"it-close\"></span>Chiudi</button>\n </div>\n <button type=\"button\" class=\"it-back-button btn w-100 text-start\">\n <svg class=\"icon icon-sm icon-primary align-top\">\n <use\n href=\"/bootstrap-italia/dist/svg/sprites.svg#it-chevron-left\"\n xlink:href=\"/bootstrap-italia/dist/svg/sprites.svg#it-chevron-left\"></use>\n </svg>\n <span>Indietro</span>\n </button>\n <div class=\"menu-wrapper\">\n <div class=\"link-list-wrapper\">\n <h3>{{ header }}</h3>\n <div class=\"progress\">\n <div\n class=\"progress-bar it-navscroll-progressbar\"\n role=\"progressbar\"\n [style.width.%]=\"progressBarValue | async\"\n [attr.aria-valuenow]=\"progressBarValue | async\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"></div>\n </div>\n <it-navscroll-list-items [items]=\"items\"></it-navscroll-list-items>\n </div>\n </div>\n </div>\n </nav>\n </div>\n </div>\n <div class=\"col-12 col-lg-8 it-page-sections-container\">\n <ng-container\n *ngTemplateOutlet=\"pageSectionsTemplate ? pageSectionsTemplate : defaultPageSectionsTemplate; context: { items: items }\">\n </ng-container>\n </div>\n </div>\n</div>\n\n<ng-template #defaultPageSectionsTemplate let-items=\"items\">\n @for (item of items; track item.href) {\n <ng-container *ngTemplateOutlet=\"paragraphTemplate; context: { item: item, level: 1 }\"></ng-container>\n }\n</ng-template>\n\n<ng-template #paragraphTemplate let-item=\"item\" let-level=\"level\" let-nextLevel=\"level+1\">\n @switch (level) {\n @case (1) {\n <h2 class=\"it-page-section\" id=\"{{ item.href }}\">{{ item.title }}</h2>\n }\n @case (2) {\n <h3 class=\"it-page-section\" id=\"{{ item.href }}\">{{ item.title }}</h3>\n }\n @case (3) {\n <h4 class=\"it-page-section\" id=\"{{ item.href }}\">{{ item.title }}</h4>\n }\n @case (4) {\n <h5 class=\"it-page-section\" id=\"{{ item.href }}\">{{ item.title }}</h5>\n }\n @default {\n <h6 class=\"it-page-section\" id=\"{{ item.href }}\">{{ item.title }}</h6>\n }\n }\n <p>{{ item.text }}</p>\n @for (item of item.childs; track item.href) {\n <ng-container *ngTemplateOutlet=\"paragraphTemplate; context: { item: item, level: nextLevel }\"></ng-container>\n }\n</ng-template>\n", styles: [".it-navscroll-sticky{position:sticky;top:0}.it-navscroll-sticky-mobile{z-index:1020}\n"] }]
94
+ }], ctorParameters: () => [], propDecorators: { header: [{
95
+ type: Input
96
+ }], items: [{
97
+ type: Input
98
+ }], borderPosition: [{
99
+ type: Input
100
+ }], alignment: [{
101
+ type: Input
102
+ }], theme: [{
103
+ type: Input
104
+ }], pageSectionsTemplate: [{
105
+ type: Input
106
+ }], onScroll: [{
107
+ type: HostListener,
108
+ args: ['window:scroll', ['$event']]
109
+ }], onResize: [{
110
+ type: HostListener,
111
+ args: ['window:resize', ['$event']]
112
+ }], toggleButtonRef: [{
113
+ type: ViewChild,
114
+ args: ['toggleButtonRef']
115
+ }] } });
116
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2c2Nyb2xsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1hbmd1bGFyLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvbmF2aWdhdGlvbi9uYXZzY3JvbGwvbmF2c2Nyb2xsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1hbmd1bGFyLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvbmF2aWdhdGlvbi9uYXZzY3JvbGwvbmF2c2Nyb2xsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekYsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsVUFBVSxFQUNWLFVBQVUsRUFDVixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFHTCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxnQkFBZ0IsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ25GLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsY0FBYyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9ELE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBRWpGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7QUFFbkQ7OztHQUdHO0FBbUJILE1BQU0sT0FBTyxvQkFBb0I7SUFpQy9CLFFBQVE7UUFDTixNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLGFB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S2hCLE9BQU87OzJGQU9FLG9CQUFvQjtrQkFsQmhDLFNBQVM7K0JBQ0UsY0FBYyxjQUNaLElBQUksV0FDUDt3QkFDUCw2QkFBNkI7d0JBQzdCLFNBQVM7d0JBQ1QsZ0JBQWdCO3dCQUNoQixVQUFVO3dCQUNWLGdCQUFnQjt3QkFDaEIsa0JBQWtCO3dCQUNsQixTQUFTO3dCQUNULE9BQU87cUJBQ1IsbUJBR2dCLHVCQUF1QixDQUFDLE1BQU0sYUFDcEMsQ0FBQyxjQUFjLENBQUM7d0RBTWxCLE1BQU07c0JBQWQsS0FBSztnQkFJRyxLQUFLO3NCQUFiLEtBQUs7Z0JBS0csY0FBYztzQkFBdEIsS0FBSztnQkFLRyxTQUFTO3NCQUFqQixLQUFLO2dCQU1HLEtBQUs7c0JBQWIsS0FBSztnQkFNTixvQkFBb0I7c0JBRG5CLEtBQUs7Z0JBSU4sUUFBUTtzQkFEUCxZQUFZO3VCQUFDLGVBQWUsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFPekMsUUFBUTtzQkFEUCxZQUFZO3VCQUFDLGVBQWUsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFNaEMsZUFBZTtzQkFEdkIsU0FBUzt1QkFBQyxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBc3luY1BpcGUsIE5nQ2xhc3MsIE5nVGVtcGxhdGVPdXRsZXQsIFZpZXdwb3J0U2Nyb2xsZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRGVzdHJveVJlZixcbiAgRWxlbWVudFJlZixcbiAgSG9zdExpc3RlbmVyLFxuICBpbmplY3QsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgUm91dGVyTGluaywgUm91dGVyTGlua0FjdGl2ZSwgUm91dGVyTGlua1dpdGhIcmVmIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IGRlbGF5LCBmaWx0ZXIsIG1hcCwgdGFwLCB3aXRoTGF0ZXN0RnJvbSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgSXROYXZzY3JvbGxMaXN0SXRlbXNDb21wb25lbnQgfSBmcm9tICcuL25hdnNjcm9sbC1saXN0LWl0ZW1zLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOYXZzY3JvbGxJdGVtIH0gZnJvbSAnLi9uYXZzY3JvbGwubW9kZWwnO1xuaW1wb3J0IHsgTmF2c2Nyb2xsU3RvcmUgfSBmcm9tICcuL25hdnNjcm9sbC5zdG9yZSc7XG5cbi8qKlxuICogTmF2c2Nyb2xsXG4gKiBAZGVzY3JpcHRpb24gU2hvdyBhIGxpc3Qgb2YgbGlua3MgdG8gYW5jaG9yIG9mIHRoZSBkb2N1bWVudC5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaXQtbmF2c2Nyb2xsJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIEl0TmF2c2Nyb2xsTGlzdEl0ZW1zQ29tcG9uZW50LFxuICAgIEFzeW5jUGlwZSxcbiAgICBOZ1RlbXBsYXRlT3V0bGV0LFxuICAgIFJvdXRlckxpbmssXG4gICAgUm91dGVyTGlua0FjdGl2ZSxcbiAgICBSb3V0ZXJMaW5rV2l0aEhyZWYsXG4gICAgQXN5bmNQaXBlLFxuICAgIE5nQ2xhc3MsXG4gIF0sXG4gIHRlbXBsYXRlVXJsOiAnLi9uYXZzY3JvbGwuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vbmF2c2Nyb2xsLmNvbXBvbmVudC5zY3NzJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHByb3ZpZGVyczogW05hdnNjcm9sbFN0b3JlXSxcbn0pXG5leHBvcnQgY2xhc3MgSXROYXZzY3JvbGxDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAvKipcbiAgICogSGVhZGVyIG9mIHRoZSBOYXZzY3JvbGxcbiAgICovXG4gIEBJbnB1dCgpIGhlYWRlciA9ICcnO1xuICAvKipcbiAgICogQSBsaXN0IG9mIGxpbmtzXG4gICAqL1xuICBASW5wdXQoKSBpdGVtcyE6IEFycmF5PE5hdnNjcm9sbEl0ZW0+O1xuICAvKipcbiAgICogQm9yZGVyIHBvc2l0aW9uXG4gICAqIEBkZWZhdWx0IGxlZnRcbiAgICovXG4gIEBJbnB1dCgpIGJvcmRlclBvc2l0aW9uOiAnbGVmdCcgfCAncmlnaHQnID0gJ2xlZnQnO1xuICAvKipcbiAgICogQWxpZ25tZW50XG4gICAqIEBkZWZhdWx0IHRvcFxuICAgKi9cbiAgQElucHV0KCkgYWxpZ25tZW50OiAndG9wJyB8ICdib3R0b20nID0gJ3RvcCc7XG5cbiAgLyoqXG4gICAqIFRoZW1lXG4gICAqIEBkZWZhdWx0IGxpZ2h0XG4gICAqL1xuICBASW5wdXQoKSB0aGVtZTogJ2xpZ2h0JyB8ICdkYXJrJyA9ICdsaWdodCc7XG5cbiAgLyoqXG4gICAqIEN1c3RvbSB0ZW1wbGF0ZSBmb3IgdGhlIGNvbnRlbnQgc2VjdGlvblxuICAgKi9cbiAgQElucHV0KClcbiAgcGFnZVNlY3Rpb25zVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpzY3JvbGwnLCBbJyRldmVudCddKSAvLyBmb3Igd2luZG93IHNjcm9sbCBldmVudHNcbiAgb25TY3JvbGwoKSB7XG4gICAgY29uc3Qgc2VjdGlvbkNvbnRhaW5lciA9IHRoaXMuI2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuaXQtcGFnZS1zZWN0aW9ucy1jb250YWluZXInKTtcbiAgICB0aGlzLiNzdG9yZS51cGRhdGVQcm9ncmVzc0JhcihzZWN0aW9uQ29udGFpbmVyKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpyZXNpemUnLCBbJyRldmVudCddKVxuICBvblJlc2l6ZSgpIHtcbiAgICB0aGlzLiNzZXRNb2JpbGUoKTtcbiAgfVxuXG4gIEBWaWV3Q2hpbGQoJ3RvZ2dsZUJ1dHRvblJlZicpXG4gIHJlYWRvbmx5IHRvZ2dsZUJ1dHRvblJlZiE6IEVsZW1lbnRSZWY8SFRNTEJ1dHRvbkVsZW1lbnQ+O1xuXG4gIHJlYWRvbmx5ICNzdG9yZSA9IGluamVjdChOYXZzY3JvbGxTdG9yZSk7XG5cbiAgcmVhZG9ubHkgI3Njcm9sbGVyID0gaW5qZWN0KFZpZXdwb3J0U2Nyb2xsZXIpO1xuXG4gIHJlYWRvbmx5ICNkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuXG4gIHJlYWRvbmx5ICNlbGVtZW50UmVmID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuXG4gIHJlYWRvbmx5IHNlbGVjdGVkVGl0bGUgPSB0aGlzLiNzdG9yZS5zZWxlY3RlZC5waXBlKG1hcChzZWxlY3RlZCA9PiBzZWxlY3RlZD8udGl0bGUgPz8gJycpKTtcblxuICByZWFkb25seSBwcm9ncmVzc0JhclZhbHVlID0gdGhpcy4jc3RvcmUucHJvZ3Jlc3NCYXI7XG5cbiAgcmVhZG9ubHkgaXNNb2JpbGUgPSB0aGlzLiNzdG9yZS5pc01vYmlsZTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLiNzdG9yZS5tZW51SXRlbVNlbGVjdGVkXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKCksXG4gICAgICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMuaXNNb2JpbGUpLFxuICAgICAgICB0YXAodiA9PiB7XG4gICAgICAgICAgY29uc3QgaXNNb2JpbGUgPSB2WzFdO1xuICAgICAgICAgIGlmIChpc01vYmlsZSkge1xuICAgICAgICAgICAgdGhpcy50b2dnbGVCdXR0b25SZWYubmF0aXZlRWxlbWVudC5jbGljaygpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuI2luaXRWaWV3U2Nyb2xsZXJTdWJzY3JpcHRpb24oKTtcbiAgICB0aGlzLiNzdG9yZS5pbml0KHRoaXMuaXRlbXMpO1xuICAgIHRoaXMuI3NldE1vYmlsZSgpO1xuICB9XG5cbiAgI2luaXRWaWV3U2Nyb2xsZXJTdWJzY3JpcHRpb24oKSB7XG4gICAgdGhpcy4jc3RvcmUuc2VsZWN0ZWRcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy4jZGVzdHJveVJlZiksXG4gICAgICAgIGZpbHRlcihzZWxlY3RlZCA9PiBCb29sZWFuKHNlbGVjdGVkKSksXG4gICAgICAgIG1hcCh2ID0+IHYgYXMgTmF2c2Nyb2xsSXRlbSksXG4gICAgICAgIGRlbGF5KDApLCAvL1dBXG4gICAgICAgIHRhcCh7XG4gICAgICAgICAgbmV4dDogKHsgaHJlZiB9KSA9PiB7XG4gICAgICAgICAgICB0aGlzLiNzY3JvbGxlci5zY3JvbGxUb0FuY2hvcihocmVmKTtcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgI3NldE1vYmlsZSgpIHtcbiAgICB0aGlzLiNzdG9yZS5zZXRNb2JpbGUod2luZG93KTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImNvbnRhaW5lciBweS1sZy01XCI+XG4gIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGNvbC1sZy00XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiaXQtbmF2c2Nyb2xsLXN0aWNreVwiIFtuZ0NsYXNzXT1cInsgJ2l0LW5hdnNjcm9sbC1zdGlja3ktbW9iaWxlJzogaXNNb2JpbGUgfCBhc3luYyB9XCIgZGF0YS1icy1zdGFja2FibGU9XCJ0cnVlXCI+XG4gICAgICAgIDxuYXZcbiAgICAgICAgICBjbGFzcz1cIm5hdmJhciBpdC1uYXZzY3JvbGwtd3JhcHBlciBuYXZiYXItZXhwYW5kLWxnXCJcbiAgICAgICAgICBbY2xhc3MuaXQtdG9wLW5hdnNjcm9sbF09XCJhbGlnbm1lbnQgPT09ICd0b3AnXCJcbiAgICAgICAgICBbY2xhc3MuaXQtYm90dG9tLW5hdnNjcm9sbF09XCJhbGlnbm1lbnQgPT09ICdib3R0b20nXCJcbiAgICAgICAgICBbY2xhc3MuaXQtbGVmdC1zaWRlXT1cImJvcmRlclBvc2l0aW9uID09PSAnbGVmdCdcIlxuICAgICAgICAgIFtjbGFzcy5pdC1yaWdodC1zaWRlXT1cImJvcmRlclBvc2l0aW9uID09PSAncmlnaHQnXCJcbiAgICAgICAgICBbY2xhc3MudGhlbWUtZGFyay1tb2JpbGVdPVwidGhlbWUgPT09ICdkYXJrJ1wiXG4gICAgICAgICAgW2NsYXNzLnRoZW1lLWRhcmstZGVza3RvcF09XCJ0aGVtZSA9PT0gJ2RhcmsnXCI+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgY2xhc3M9XCJjdXN0b20tbmF2YmFyLXRvZ2dsZXJcIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBhcmlhLWNvbnRyb2xzPVwibmF2YmFyTmF2XCJcbiAgICAgICAgICAgIGFyaWEtZXhwYW5kZWQ9XCJmYWxzZVwiXG4gICAgICAgICAgICBhcmlhLWxhYmVsPVwiVG9nZ2xlIG5hdmlnYXRpb25cIlxuICAgICAgICAgICAgZGF0YS1icy10b2dnbGU9XCJuYXZiYXJjb2xsYXBzaWJsZVwiXG4gICAgICAgICAgICBkYXRhLWJzLXRhcmdldD1cIiNuYXZiYXJOYXZcIlxuICAgICAgICAgICAgI3RvZ2dsZUJ1dHRvblJlZj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaXQtbGlzdFwiPjwvc3Bhbj57eyBzZWxlY3RlZFRpdGxlIHwgYXN5bmMgfX1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZ3Jlc3MgY3VzdG9tLW5hdmJhci1wcm9ncmVzc2JhclwiPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cInByb2dyZXNzLWJhciBpdC1uYXZzY3JvbGwtcHJvZ3Jlc3NiYXJcIlxuICAgICAgICAgICAgICByb2xlPVwicHJvZ3Jlc3NiYXJcIlxuICAgICAgICAgICAgICBbc3R5bGUud2lkdGguJV09XCJwcm9ncmVzc0JhclZhbHVlIHwgYXN5bmNcIlxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLXZhbHVlbm93XT1cInByb2dyZXNzQmFyVmFsdWUgfCBhc3luY1wiXG4gICAgICAgICAgICAgIGFyaWEtdmFsdWVtaW49XCIwXCJcbiAgICAgICAgICAgICAgYXJpYS12YWx1ZW1heD1cIjEwMFwiPjwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJuYXZiYXItY29sbGFwc2FibGVcIiBpZD1cIm5hdmJhck5hdlwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm92ZXJsYXlcIj48L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjbG9zZS1kaXYgdmlzdWFsbHktaGlkZGVuXCI+XG4gICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gY2xvc2UtbWVudVwiIHR5cGU9XCJidXR0b25cIj48c3BhbiBjbGFzcz1cIml0LWNsb3NlXCI+PC9zcGFuPkNoaXVkaTwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cIml0LWJhY2stYnV0dG9uIGJ0biB3LTEwMCB0ZXh0LXN0YXJ0XCI+XG4gICAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJpY29uIGljb24tc20gaWNvbi1wcmltYXJ5IGFsaWduLXRvcFwiPlxuICAgICAgICAgICAgICAgIDx1c2VcbiAgICAgICAgICAgICAgICAgIGhyZWY9XCIvYm9vdHN0cmFwLWl0YWxpYS9kaXN0L3N2Zy9zcHJpdGVzLnN2ZyNpdC1jaGV2cm9uLWxlZnRcIlxuICAgICAgICAgICAgICAgICAgeGxpbms6aHJlZj1cIi9ib290c3RyYXAtaXRhbGlhL2Rpc3Qvc3ZnL3Nwcml0ZXMuc3ZnI2l0LWNoZXZyb24tbGVmdFwiPjwvdXNlPlxuICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgPHNwYW4+SW5kaWV0cm88L3NwYW4+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZW51LXdyYXBwZXJcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxpbmstbGlzdC13cmFwcGVyXCI+XG4gICAgICAgICAgICAgICAgPGgzPnt7IGhlYWRlciB9fTwvaDM+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByb2dyZXNzXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicHJvZ3Jlc3MtYmFyIGl0LW5hdnNjcm9sbC1wcm9ncmVzc2JhclwiXG4gICAgICAgICAgICAgICAgICAgIHJvbGU9XCJwcm9ncmVzc2JhclwiXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZS53aWR0aC4lXT1cInByb2dyZXNzQmFyVmFsdWUgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtdmFsdWVub3ddPVwicHJvZ3Jlc3NCYXJWYWx1ZSB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICAgICAgYXJpYS12YWx1ZW1pbj1cIjBcIlxuICAgICAgICAgICAgICAgICAgICBhcmlhLXZhbHVlbWF4PVwiMTAwXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGl0LW5hdnNjcm9sbC1saXN0LWl0ZW1zIFtpdGVtc109XCJpdGVtc1wiPjwvaXQtbmF2c2Nyb2xsLWxpc3QtaXRlbXM+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmF2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImNvbC0xMiBjb2wtbGctOCBpdC1wYWdlLXNlY3Rpb25zLWNvbnRhaW5lclwiPlxuICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cInBhZ2VTZWN0aW9uc1RlbXBsYXRlID8gcGFnZVNlY3Rpb25zVGVtcGxhdGUgOiBkZWZhdWx0UGFnZVNlY3Rpb25zVGVtcGxhdGU7IGNvbnRleHQ6IHsgaXRlbXM6IGl0ZW1zIH1cIj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI2RlZmF1bHRQYWdlU2VjdGlvbnNUZW1wbGF0ZSBsZXQtaXRlbXM9XCJpdGVtc1wiPlxuICBAZm9yIChpdGVtIG9mIGl0ZW1zOyB0cmFjayBpdGVtLmhyZWYpIHtcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicGFyYWdyYXBoVGVtcGxhdGU7IGNvbnRleHQ6IHsgaXRlbTogaXRlbSwgbGV2ZWw6IDEgfVwiPjwvbmctY29udGFpbmVyPlxuICB9XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3BhcmFncmFwaFRlbXBsYXRlIGxldC1pdGVtPVwiaXRlbVwiIGxldC1sZXZlbD1cImxldmVsXCIgbGV0LW5leHRMZXZlbD1cImxldmVsKzFcIj5cbiAgQHN3aXRjaCAobGV2ZWwpIHtcbiAgICBAY2FzZSAoMSkge1xuICAgICAgPGgyIGNsYXNzPVwiaXQtcGFnZS1zZWN0aW9uXCIgaWQ9XCJ7eyBpdGVtLmhyZWYgfX1cIj57eyBpdGVtLnRpdGxlIH19PC9oMj5cbiAgICB9XG4gICAgQGNhc2UgKDIpIHtcbiAgICAgIDxoMyBjbGFzcz1cIml0LXBhZ2Utc2VjdGlvblwiIGlkPVwie3sgaXRlbS5ocmVmIH19XCI+e3sgaXRlbS50aXRsZSB9fTwvaDM+XG4gICAgfVxuICAgIEBjYXNlICgzKSB7XG4gICAgICA8aDQgY2xhc3M9XCJpdC1wYWdlLXNlY3Rpb25cIiBpZD1cInt7IGl0ZW0uaHJlZiB9fVwiPnt7IGl0ZW0udGl0bGUgfX08L2g0PlxuICAgIH1cbiAgICBAY2FzZSAoNCkge1xuICAgICAgPGg1IGNsYXNzPVwiaXQtcGFnZS1zZWN0aW9uXCIgaWQ9XCJ7eyBpdGVtLmhyZWYgfX1cIj57eyBpdGVtLnRpdGxlIH19PC9oNT5cbiAgICB9XG4gICAgQGRlZmF1bHQge1xuICAgICAgPGg2IGNsYXNzPVwiaXQtcGFnZS1zZWN0aW9uXCIgaWQ9XCJ7eyBpdGVtLmhyZWYgfX1cIj57eyBpdGVtLnRpdGxlIH19PC9oNj5cbiAgICB9XG4gIH1cbiAgPHA+e3sgaXRlbS50ZXh0IH19PC9wPlxuICBAZm9yIChpdGVtIG9mIGl0ZW0uY2hpbGRzOyB0cmFjayBpdGVtLmhyZWYpIHtcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicGFyYWdyYXBoVGVtcGxhdGU7IGNvbnRleHQ6IHsgaXRlbTogaXRlbSwgbGV2ZWw6IG5leHRMZXZlbCB9XCI+PC9uZy1jb250YWluZXI+XG4gIH1cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2c2Nyb2xsLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzaWduLWFuZ3VsYXIta2l0L3NyYy9saWIvY29tcG9uZW50cy9uYXZpZ2F0aW9uL25hdnNjcm9sbC9uYXZzY3JvbGwubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgTmF2c2Nyb2xsSXRlbSB7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIHRleHQ6IHN0cmluZztcbiAgaHJlZjogc3RyaW5nO1xuICBjaGlsZHM6IE5hdnNjcm9sbEl0ZW1zO1xufVxuXG5leHBvcnQgdHlwZSBOYXZzY3JvbGxJdGVtcyA9IEFycmF5PE5hdnNjcm9sbEl0ZW0+O1xuXG5leHBvcnQgaW50ZXJmYWNlIE5hdnNjcm9sbEl0ZW1BY3RpdmUge1xuICBhY3RpdmU6IGJvb2xlYW47XG59XG4iXX0=
@@ -0,0 +1,65 @@
1
+ import { BehaviorSubject, distinctUntilChanged, map, Subject } from 'rxjs';
2
+ import { flattenNavscrollItems, search } from './navscroll.utils';
3
+ export class NavscrollStore {
4
+ constructor() {
5
+ this.#state = new BehaviorSubject({
6
+ items: new Set(),
7
+ active: [],
8
+ selected: undefined,
9
+ progressBar: 0,
10
+ isMobile: false,
11
+ });
12
+ this.#state$ = this.#state.asObservable();
13
+ this.selected = this.#state$.pipe(map(({ selected }) => selected), distinctUntilChanged());
14
+ this.progressBar = this.#state$.pipe(map(({ progressBar }) => progressBar), distinctUntilChanged());
15
+ this.isMobile = this.#state$.pipe(map(({ isMobile }) => isMobile), distinctUntilChanged());
16
+ this.#menuItemSelected = new Subject();
17
+ this.menuItemSelected = this.#menuItemSelected.asObservable();
18
+ }
19
+ #state;
20
+ #state$;
21
+ #menuItemSelected;
22
+ init(navscrollItems) {
23
+ const flattenItems = flattenNavscrollItems(navscrollItems);
24
+ //the first item is selected by default
25
+ const selected = (flattenItems && flattenItems.length && flattenItems[0]) ?? undefined;
26
+ const state = {
27
+ items: new Set(flattenItems),
28
+ active: selected ? [selected] : [],
29
+ selected: selected,
30
+ progressBar: 0,
31
+ isMobile: false,
32
+ };
33
+ this.#state.next(state);
34
+ }
35
+ setActive(item) {
36
+ const { items } = this.#state.value;
37
+ const active = search(items, item);
38
+ const state = this.#state.value;
39
+ this.#state.next({ ...state, items, selected: item, active });
40
+ }
41
+ isActive$(item) {
42
+ return this.#state.asObservable().pipe(map(state => state.active.includes(item)));
43
+ }
44
+ updateProgressBar(container) {
45
+ if (!container) {
46
+ return;
47
+ }
48
+ const offset = Math.abs(container.getBoundingClientRect().top);
49
+ const height = container.getBoundingClientRect().height;
50
+ const scrollAmount = (offset / height) * 100;
51
+ const scrollValue = Math.min(100, Math.max(0, scrollAmount));
52
+ const state = this.#state.value;
53
+ this.#state.next({ ...state, progressBar: scrollValue });
54
+ }
55
+ selectMenuItem() {
56
+ this.#menuItemSelected.next(undefined);
57
+ }
58
+ setMobile({ innerWidth }) {
59
+ const isLessThan992px = innerWidth < 992;
60
+ const isMobile = isLessThan992px;
61
+ const state = this.#state.value;
62
+ this.#state.next({ ...state, isMobile });
63
+ }
64
+ }
65
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2c2Nyb2xsLnN0b3JlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzaWduLWFuZ3VsYXIta2l0L3NyYy9saWIvY29tcG9uZW50cy9uYXZpZ2F0aW9uL25hdnNjcm9sbC9uYXZzY3JvbGwuc3RvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxvQkFBb0IsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTNFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQVVsRSxNQUFNLE9BQU8sY0FBYztJQUEzQjtRQUNXLFdBQU0sR0FBRyxJQUFJLGVBQWUsQ0FBaUI7WUFDcEQsS0FBSyxFQUFFLElBQUksR0FBRyxFQUFpQjtZQUMvQixNQUFNLEVBQUUsRUFBRTtZQUNWLFFBQVEsRUFBRSxTQUFTO1lBQ25CLFdBQVcsRUFBRSxDQUFDO1lBQ2QsUUFBUSxFQUFFLEtBQUs7U0FDaEIsQ0FBQyxDQUFDO1FBRU0sWUFBTyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUM7UUFFckMsYUFBUSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUNuQyxHQUFHLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFDL0Isb0JBQW9CLEVBQUUsQ0FDdkIsQ0FBQztRQUVPLGdCQUFXLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQ3RDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsV0FBVyxFQUFFLEVBQUUsRUFBRSxDQUFDLFdBQVcsQ0FBQyxFQUNyQyxvQkFBb0IsRUFBRSxDQUN2QixDQUFDO1FBRU8sYUFBUSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUNuQyxHQUFHLENBQUMsQ0FBQyxFQUFFLFFBQVEs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QUFHLENBQUM7UUFDekMsTUFBTSxRQUFRLEdBQUcsZUFBZSxDQUFDO1FBQ2pDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxLQUFLLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUMzQyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBtYXAsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE5hdnNjcm9sbEl0ZW0gfSBmcm9tICcuL25hdnNjcm9sbC5tb2RlbCc7XG5pbXBvcnQgeyBmbGF0dGVuTmF2c2Nyb2xsSXRlbXMsIHNlYXJjaCB9IGZyb20gJy4vbmF2c2Nyb2xsLnV0aWxzJztcblxuaW50ZXJmYWNlIE5hdnNjcm9sbFN0YXRlIHtcbiAgaXRlbXM6IFNldDxOYXZzY3JvbGxJdGVtPjtcbiAgYWN0aXZlOiBBcnJheTxOYXZzY3JvbGxJdGVtPjtcbiAgc2VsZWN0ZWQ/OiBOYXZzY3JvbGxJdGVtO1xuICBwcm9ncmVzc0JhcjogbnVtYmVyO1xuICBpc01vYmlsZTogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNsYXNzIE5hdnNjcm9sbFN0b3JlIHtcbiAgcmVhZG9ubHkgI3N0YXRlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxOYXZzY3JvbGxTdGF0ZT4oe1xuICAgIGl0ZW1zOiBuZXcgU2V0PE5hdnNjcm9sbEl0ZW0+KCksXG4gICAgYWN0aXZlOiBbXSxcbiAgICBzZWxlY3RlZDogdW5kZWZpbmVkLFxuICAgIHByb2dyZXNzQmFyOiAwLFxuICAgIGlzTW9iaWxlOiBmYWxzZSxcbiAgfSk7XG5cbiAgcmVhZG9ubHkgI3N0YXRlJCA9IHRoaXMuI3N0YXRlLmFzT2JzZXJ2YWJsZSgpO1xuXG4gIHJlYWRvbmx5IHNlbGVjdGVkID0gdGhpcy4jc3RhdGUkLnBpcGUoXG4gICAgbWFwKCh7IHNlbGVjdGVkIH0pID0+IHNlbGVjdGVkKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpXG4gICk7XG5cbiAgcmVhZG9ubHkgcHJvZ3Jlc3NCYXIgPSB0aGlzLiNzdGF0ZSQucGlwZShcbiAgICBtYXAoKHsgcHJvZ3Jlc3NCYXIgfSkgPT4gcHJvZ3Jlc3NCYXIpLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKClcbiAgKTtcblxuICByZWFkb25seSBpc01vYmlsZSA9IHRoaXMuI3N0YXRlJC5waXBlKFxuICAgIG1hcCgoeyBpc01vYmlsZSB9KSA9PiBpc01vYmlsZSksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKVxuICApO1xuXG4gIHJlYWRvbmx5ICNtZW51SXRlbVNlbGVjdGVkID0gbmV3IFN1YmplY3QoKTtcblxuICByZWFkb25seSBtZW51SXRlbVNlbGVjdGVkID0gdGhpcy4jbWVudUl0ZW1TZWxlY3RlZC5hc09ic2VydmFibGUoKTtcblxuICBpbml0KG5hdnNjcm9sbEl0ZW1zOiBBcnJheTxOYXZzY3JvbGxJdGVtPikge1xuICAgIGNvbnN0IGZsYXR0ZW5JdGVtcyA9IGZsYXR0ZW5OYXZzY3JvbGxJdGVtcyhuYXZzY3JvbGxJdGVtcyk7XG4gICAgLy90aGUgZmlyc3QgaXRlbSBpcyBzZWxlY3RlZCBieSBkZWZhdWx0XG4gICAgY29uc3Qgc2VsZWN0ZWQgPSAoKGZsYXR0ZW5JdGVtcyAmJiBmbGF0dGVuSXRlbXMubGVuZ3RoICYmIGZsYXR0ZW5JdGVtc1swXSkgYXMgTmF2c2Nyb2xsSXRlbSkgPz8gdW5kZWZpbmVkO1xuXG4gICAgY29uc3Qgc3RhdGUgPSB7XG4gICAgICBpdGVtczogbmV3IFNldChmbGF0dGVuSXRlbXMpLFxuICAgICAgYWN0aXZlOiBzZWxlY3RlZCA/IFtzZWxlY3RlZF0gOiBbXSxcbiAgICAgIHNlbGVjdGVkOiBzZWxlY3RlZCxcbiAgICAgIHByb2dyZXNzQmFyOiAwLFxuICAgICAgaXNNb2JpbGU6IGZhbHNlLFxuICAgIH07XG5cbiAgICB0aGlzLiNzdGF0ZS5uZXh0KHN0YXRlKTtcbiAgfVxuXG4gIHNldEFjdGl2ZShpdGVtOiBOYXZzY3JvbGxJdGVtKSB7XG4gICAgY29uc3QgeyBpdGVtcyB9ID0gdGhpcy4jc3RhdGUudmFsdWU7XG5cbiAgICBjb25zdCBhY3RpdmUgPSBzZWFyY2goaXRlbXMsIGl0ZW0pO1xuICAgIGNvbnN0IHN0YXRlID0gdGhpcy4jc3RhdGUudmFsdWU7XG4gICAgdGhpcy4jc3RhdGUubmV4dCh7IC4uLnN0YXRlLCBpdGVtcywgc2VsZWN0ZWQ6IGl0ZW0sIGFjdGl2ZSB9KTtcbiAgfVxuXG4gIGlzQWN0aXZlJChpdGVtOiBOYXZzY3JvbGxJdGVtKSB7XG4gICAgcmV0dXJuIHRoaXMuI3N0YXRlLmFzT2JzZXJ2YWJsZSgpLnBpcGUobWFwKHN0YXRlID0+IHN0YXRlLmFjdGl2ZS5pbmNsdWRlcyhpdGVtKSkpO1xuICB9XG5cbiAgdXBkYXRlUHJvZ3Jlc3NCYXIoY29udGFpbmVyOiBIVE1MRWxlbWVudCkge1xuICAgIGlmICghY29udGFpbmVyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IG9mZnNldCA9IE1hdGguYWJzKGNvbnRhaW5lci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3ApO1xuICAgIGNvbnN0IGhlaWdodCA9IGNvbnRhaW5lci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQ7XG4gICAgY29uc3Qgc2Nyb2xsQW1vdW50ID0gKG9mZnNldCAvIGhlaWdodCkgKiAxMDA7XG4gICAgY29uc3Qgc2Nyb2xsVmFsdWUgPSBNYXRoLm1pbigxMDAsIE1hdGgubWF4KDAsIHNjcm9sbEFtb3VudCkpO1xuICAgIGNvbnN0IHN0YXRlID0gdGhpcy4jc3RhdGUudmFsdWU7XG4gICAgdGhpcy4jc3RhdGUubmV4dCh7IC4uLnN0YXRlLCBwcm9ncmVzc0Jhcjogc2Nyb2xsVmFsdWUgfSk7XG4gIH1cblxuICBzZWxlY3RNZW51SXRlbSgpIHtcbiAgICB0aGlzLiNtZW51SXRlbVNlbGVjdGVkLm5leHQodW5kZWZpbmVkKTtcbiAgfVxuXG4gIHNldE1vYmlsZSh7IGlubmVyV2lkdGggfTogeyBpbm5lcldpZHRoOiBudW1iZXIgfSkge1xuICAgIGNvbnN0IGlzTGVzc1RoYW45OTJweCA9IGlubmVyV2lkdGggPCA5OTI7XG4gICAgY29uc3QgaXNNb2JpbGUgPSBpc0xlc3NUaGFuOTkycHg7XG4gICAgY29uc3Qgc3RhdGUgPSB0aGlzLiNzdGF0ZS52YWx1ZTtcbiAgICB0aGlzLiNzdGF0ZS5uZXh0KHsgLi4uc3RhdGUsIGlzTW9iaWxlIH0pO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,23 @@
1
+ function searchFn(items, item) {
2
+ //ricerca
3
+ const nodes = Array.from(items);
4
+ const parent = nodes.find(i => i.childs.includes(item));
5
+ const ancestors = parent?.childs?.length ? searchFn(items, parent) : [];
6
+ return [item, ...ancestors];
7
+ }
8
+ function flattenNavscrollItemsFn(items) {
9
+ const result = [];
10
+ function flatten(items) {
11
+ for (const item of items) {
12
+ result.push(item);
13
+ if (item.childs && item.childs.length > 0) {
14
+ flatten(item.childs);
15
+ }
16
+ }
17
+ }
18
+ flatten(items);
19
+ return result;
20
+ }
21
+ export const search = searchFn;
22
+ export const flattenNavscrollItems = flattenNavscrollItemsFn;
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2c2Nyb2xsLnV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzaWduLWFuZ3VsYXIta2l0L3NyYy9saWIvY29tcG9uZW50cy9uYXZpZ2F0aW9uL25hdnNjcm9sbC9uYXZzY3JvbGwudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsU0FBUyxRQUFRLENBQUMsS0FBeUIsRUFBRSxJQUFtQjtJQUM5RCxTQUFTO0lBQ1QsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNoQyxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUN4RCxNQUFNLFNBQVMsR0FBRyxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ3hFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsR0FBRyxTQUFTLENBQUMsQ0FBQztBQUM5QixDQUFDO0FBRUQsU0FBUyx1QkFBdUIsQ0FBQyxLQUFxQjtJQUNwRCxNQUFNLE1BQU0sR0FBbUIsRUFBRSxDQUFDO0lBRWxDLFNBQVMsT0FBTyxDQUFDLEtBQXFCO1FBQ3BDLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxFQUFFLENBQUM7WUFDekIsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNsQixJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQzFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDdkIsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2YsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQztBQUVELE1BQU0sQ0FBQyxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUM7QUFDL0IsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsdUJBQXVCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOYXZzY3JvbGxJdGVtLCBOYXZzY3JvbGxJdGVtcyB9IGZyb20gJy4vbmF2c2Nyb2xsLm1vZGVsJztcblxuZnVuY3Rpb24gc2VhcmNoRm4oaXRlbXM6IFNldDxOYXZzY3JvbGxJdGVtPiwgaXRlbTogTmF2c2Nyb2xsSXRlbSk6IEFycmF5PE5hdnNjcm9sbEl0ZW0+IHtcbiAgLy9yaWNlcmNhXG4gIGNvbnN0IG5vZGVzID0gQXJyYXkuZnJvbShpdGVtcyk7XG4gIGNvbnN0IHBhcmVudCA9IG5vZGVzLmZpbmQoaSA9PiBpLmNoaWxkcy5pbmNsdWRlcyhpdGVtKSk7XG4gIGNvbnN0IGFuY2VzdG9ycyA9IHBhcmVudD8uY2hpbGRzPy5sZW5ndGggPyBzZWFyY2hGbihpdGVtcywgcGFyZW50KSA6IFtdO1xuICByZXR1cm4gW2l0ZW0sIC4uLmFuY2VzdG9yc107XG59XG5cbmZ1bmN0aW9uIGZsYXR0ZW5OYXZzY3JvbGxJdGVtc0ZuKGl0ZW1zOiBOYXZzY3JvbGxJdGVtcyk6IE5hdnNjcm9sbEl0ZW1zIHtcbiAgY29uc3QgcmVzdWx0OiBOYXZzY3JvbGxJdGVtcyA9IFtdO1xuXG4gIGZ1bmN0aW9uIGZsYXR0ZW4oaXRlbXM6IE5hdnNjcm9sbEl0ZW1zKTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7XG4gICAgICByZXN1bHQucHVzaChpdGVtKTtcbiAgICAgIGlmIChpdGVtLmNoaWxkcyAmJiBpdGVtLmNoaWxkcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGZsYXR0ZW4oaXRlbS5jaGlsZHMpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZsYXR0ZW4oaXRlbXMpO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5leHBvcnQgY29uc3Qgc2VhcmNoID0gc2VhcmNoRm47XG5leHBvcnQgY29uc3QgZmxhdHRlbk5hdnNjcm9sbEl0ZW1zID0gZmxhdHRlbk5hdnNjcm9sbEl0ZW1zRm47XG4iXX0=
@@ -1,5 +1,4 @@
1
1
  import { NgModule } from '@angular/core';
2
- import { provideDesignAngularKit } from './provide-design-angular-kit';
3
2
  import { ItAccordionComponent } from './components/core/accordion/accordion.component';
4
3
  import { ItAlertComponent } from './components/core/alert/alert.component';
5
4
  import { ItAvatarModule } from './components/core/avatar/avatar.module';
@@ -15,7 +14,6 @@ import { ItDropdownModule } from './components/core/dropdown/dropdown.module';
15
14
  import { ItForwardDirective } from './components/core/forward/forward.directive';
16
15
  import { ItLinkComponent } from './components/core/link/link.component';
17
16
  import { ItListModule } from './components/core/list/list.module';
18
- import { ItMegamenuComponent } from './components/navigation/megamenu/megamenu.component';
19
17
  import { ItModalComponent } from './components/core/modal/modal.component';
20
18
  import { ItNotificationsComponent } from './components/core/notifications/notifications.component';
21
19
  import { ItPaginationComponent } from './components/core/pagination/pagination.component';
@@ -26,13 +24,16 @@ import { ItSpinnerComponent } from './components/core/spinner/spinner.component'
26
24
  import { ItSteppersModule } from './components/core/steppers/steppers.module';
27
25
  import { ItTabModule } from './components/core/tab/tab.module';
28
26
  import { ItTableModule } from './components/core/table/table.module';
27
+ import { ItTimelineModule } from './components/core/timeline/timeline.module';
29
28
  import { ItTooltipDirective } from './components/core/tooltip/tooltip.directive';
30
29
  import { ItFormModule } from './components/form/form.module';
31
30
  import { ItBackButtonComponent } from './components/navigation/back-button/back-button.component';
32
31
  import { ItBackToTopComponent } from './components/navigation/back-to-top/back-to-top.component';
33
32
  import { ItBreadcrumbsModule } from './components/navigation/breadcrumbs/breadcrumbs.module';
34
33
  import { ItHeaderComponent } from './components/navigation/header/header.component';
34
+ import { ItMegamenuComponent } from './components/navigation/megamenu/megamenu.component';
35
35
  import { ItNavBarModule } from './components/navigation/navbar/navbar.module';
36
+ import { ItNavscrollComponent } from './components/navigation/navscroll/navscroll.component';
36
37
  import { ItSidebarComponent } from './components/navigation/sidebar/sidebar.component';
37
38
  import { ItErrorPageComponent } from './components/utils/error-page/error-page.component';
38
39
  import { ItIconComponent } from './components/utils/icon/icon.component';
@@ -40,7 +41,7 @@ import { ItLanguageSwitcherComponent } from './components/utils/language-switche
40
41
  import { ItDateAgoPipe } from './pipes/date-ago.pipe';
41
42
  import { ItDurationPipe } from './pipes/duration.pipe';
42
43
  import { ItMarkMatchingTextPipe } from './pipes/mark-matching-text.pipe';
43
- import { ItTimelineModule } from './components/core/timeline/timeline.module';
44
+ import { provideDesignAngularKit } from './provide-design-angular-kit';
44
45
  import * as i0 from "@angular/core";
45
46
  /**
46
47
  * Core components
@@ -85,6 +86,7 @@ const navigation = [
85
86
  ItNavBarModule,
86
87
  ItSidebarComponent,
87
88
  ItMegamenuComponent,
89
+ ItNavscrollComponent,
88
90
  ];
89
91
  /**
90
92
  * Utils components
@@ -147,7 +149,8 @@ export class DesignAngularKitModule {
147
149
  ItHeaderComponent,
148
150
  ItNavBarModule,
149
151
  ItSidebarComponent,
150
- ItMegamenuComponent, ItErrorPageComponent, ItIconComponent, ItLanguageSwitcherComponent, ItDateAgoPipe, ItDurationPipe, ItMarkMatchingTextPipe], exports: [ItAccordionComponent,
152
+ ItMegamenuComponent,
153
+ ItNavscrollComponent, ItErrorPageComponent, ItIconComponent, ItLanguageSwitcherComponent, ItDateAgoPipe, ItDurationPipe, ItMarkMatchingTextPipe], exports: [ItAccordionComponent,
151
154
  ItAlertComponent,
152
155
  ItAvatarModule,
153
156
  ItBadgeDirective,
@@ -180,7 +183,8 @@ export class DesignAngularKitModule {
180
183
  ItHeaderComponent,
181
184
  ItNavBarModule,
182
185
  ItSidebarComponent,
183
- ItMegamenuComponent, ItErrorPageComponent, ItIconComponent, ItLanguageSwitcherComponent, ItDateAgoPipe, ItDurationPipe, ItMarkMatchingTextPipe] }); }
186
+ ItMegamenuComponent,
187
+ ItNavscrollComponent, ItErrorPageComponent, ItIconComponent, ItLanguageSwitcherComponent, ItDateAgoPipe, ItDurationPipe, ItMarkMatchingTextPipe] }); }
184
188
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: DesignAngularKitModule, imports: [ItAlertComponent,
185
189
  ItAvatarModule,
186
190
  ItCarouselModule,
@@ -220,4 +224,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImpor
220
224
  exports: components,
221
225
  }]
222
226
  }] });
223
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzaWduLWFuZ3VsYXIta2l0Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1hbmd1bGFyLWtpdC9zcmMvbGliL2Rlc2lnbi1hbmd1bGFyLWtpdC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF1QixRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFOUQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDdkUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0saURBQWlELENBQUM7QUFDdkYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDM0UsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN4RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDeEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDcEYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN4RSxPQUFPLEVB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YztZQUtkLGdCQUFnQjtZQUdoQixjQUFjO1lBQ2QsZ0JBQWdCO1lBR2hCLFlBQVk7WUFRWixnQkFBZ0I7WUFDaEIsV0FBVztZQUNYLGFBQWE7WUFFYixnQkFBZ0IsRUEyQlAsa0JBQWtCO1lBQzNCLFlBQVksRUFuQlosbUJBQW1CO1lBRW5CLGNBQWM7OzJGQTJCSCxzQkFBc0I7a0JBSmxDLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLFVBQVU7b0JBQ25CLE9BQU8sRUFBRSxVQUFVO2lCQUNwQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEZXNpZ25Bbmd1bGFyS2l0Q29uZmlnIH0gZnJvbSAnLi9pbnRlcmZhY2VzL2Rlc2lnbi1hbmd1bGFyLWtpdC1jb25maWcnO1xuaW1wb3J0IHsgcHJvdmlkZURlc2lnbkFuZ3VsYXJLaXQgfSBmcm9tICcuL3Byb3ZpZGUtZGVzaWduLWFuZ3VsYXIta2l0JztcbmltcG9ydCB7IEl0QWNjb3JkaW9uQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NvcmUvYWNjb3JkaW9uL2FjY29yZGlvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgSXRBbGVydENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jb3JlL2FsZXJ0L2FsZXJ0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJdEF2YXRhck1vZHVsZSB9IGZyb20gJy4vY29tcG9uZW50cy9jb3JlL2F2YXRhci9hdmF0YXIubW9kdWxlJztcbmltcG9ydCB7IEl0QmFkZ2VEaXJlY3RpdmUgfSBmcm9tICcuL2NvbXBvbmVudHMvY29yZS9iYWRnZS9iYWRnZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgSXRCdXR0b25EaXJlY3RpdmUgfSBmcm9tICcuL2NvbXBvbmVudHMvY29yZS9idXR0b24vYnV0dG9uLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBJdENhbGxvdXRDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY29yZS9jYWxsb3V0L2NhbGxvdXQuY29tcG9uZW50JztcbmltcG9ydCB7IEl0Q2FyZENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jb3JlL2NhcmQvY2FyZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgSXRDYXJvdXNlbE1vZHVsZSB9IGZyb20gJy4vY29tcG9uZW50cy9jb3JlL2Nhcm91c2VsL2Nhcm91c2VsLm1vZHVsZSc7XG5pbXBvcnQgeyBJdENoaXBDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY29yZS9jaGlwL2NoaXAuY29tcG9uZW50JztcbmltcG9ydCB7IEl0Q29sbGFwc2VDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY29yZS9jb2xsYXBzZS9jb2xsYXBzZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgSXREaW1tZXJNb2R1bGUgfSBmcm9tICcuL2NvbXBvbmVudHMvY29yZS9kaW1tZXIvZGltbWVyLm1vZHVsZSc7XG5pbXBvcnQgeyBJdERyb3Bkb3duTW9kdWxlIH0gZnJvbSAnLi9jb21wb25lbnRzL2NvcmUvZHJvcGRvd24vZHJvcGRvd24ubW9kdWxlJztcbmltcG9ydCB7IEl0Rm9yd2FyZERpcmVjdGl2ZSB9IGZyb20gJy4vY29tcG9uZW50cy9jb3JlL2ZvcndhcmQvZm9yd2FyZC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgSXRMaW5rQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NvcmUvbGluay9saW5rLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJdExpc3RNb2R1bGUgfSBmcm9tICcuL2NvbXBvbmVudHMvY29yZS9saXN0L2xpc3QubW9kdWxlJztcbmltcG9ydCB7IEl0TWVnYW1lbnVDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvbmF2aWdhdGlvbi9tZWdhbWVudS9tZWdhbWVudS5jb21wb25lbnQnO1xuaW1wb3J0IHsgSXRNb2RhbENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jb3JlL21vZGFsL21vZGFsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJdE5vdGlmaWNhdGlvbnNDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY29yZS9ub3RpZmljYXRpb25zL25vdGlmaWNhdGlvbnMuY29tcG9uZW50JztcbmltcG9ydCB7IEl0UGFnaW5hdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jb3JlL3BhZ2luYXRpb24vcGFnaW5hdGlvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgSXRQb3BvdmVyRGlyZWN0aXZlIH0gZnJvbSAnLi9jb21wb25lbnRzL2NvcmUvcG9wb3Zlci9wb3BvdmVyLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBJdFByb2dyZXNzQmFyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NvcmUvcHJvZ3Jlc3MtYmFyL3Byb2dyZXNzLWJhci5jb21wb25lbnQnO1xuaW1wb3J0IHsgSXRQcm9ncmVzc0J1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jb3JlL3Byb2dyZXNzLWJ1dHRvbi9wcm9ncmVzcy1idXR0b24uY29tcG9uZW50JztcbmltcG9ydCB7IEl0U3Bpbm5lckNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jb3JlL3NwaW5uZXIvc3Bpbm5lci5jb21wb25lbnQnO1xuaW1wb3J0IHsgSXRTdGVwcGVyc01vZHVsZSB9IGZyb20gJy4vY29tcG9uZW50cy9jb3JlL3N0ZXBwZXJzL3N0ZXBwZXJzLm1vZHVsZSc7XG5pbXBvcnQgeyBJdFRhYk1vZHVsZSB9IGZyb20gJy4vY29tcG9uZW50cy9jb3JlL3RhYi90YWIubW9kdWxlJztcbmltcG9ydCB7IEl0VGFibGVNb2R1bGUgfSBmcm9tICcuL2NvbXBvbmVudHMvY29yZS90YWJsZS90YWJsZS5tb2R1bGUnO1xuaW1wb3J0IHsgSXRUb29sdGlwRGlyZWN0aXZlIH0gZnJvbSAnLi9jb21wb25lbnRzL2NvcmUvdG9vbHRpcC90b29sdGlwLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBJdEZvcm1Nb2R1bGUgfSBmcm9tICcuL2NvbXBvbmVudHMvZm9ybS9mb3JtLm1vZHVsZSc7XG5pbXBvcnQgeyBJdEJhY2tCdXR0b25Db21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvbmF2aWdhdGlvbi9iYWNrLWJ1dHRvbi9iYWNrLWJ1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgSXRCYWNrVG9Ub3BDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvbmF2aWdhdGlvbi9iYWNrLXRvLXRvcC9iYWNrLXRvLXRvcC5jb21wb25lbnQnO1xuaW1wb3J0IHsgSXRCcmVhZGNydW1ic01vZHVsZSB9IGZyb20gJy4vY29tcG9uZW50cy9uYXZpZ2F0aW9uL2JyZWFkY3J1bWJzL2JyZWFkY3J1bWJzLm1vZHVsZSc7XG5pbXBvcnQgeyBJdEhlYWRlckNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9uYXZpZ2F0aW9uL2hlYWRlci9oZWFkZXIuY29tcG9uZW50JztcbmltcG9ydCB7IEl0TmF2QmFyTW9kdWxlIH0gZnJvbSAnLi9jb21wb25lbnRzL25hdmlnYXRpb24vbmF2YmFyL25hdmJhci5tb2R1bGUnO1xuaW1wb3J0IHsgSXRTaWRlYmFyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL25hdmlnYXRpb24vc2lkZWJhci9zaWRlYmFyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJdEVycm9yUGFnZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy91dGlscy9lcnJvci1wYWdlL2Vycm9yLXBhZ2UuY29tcG9uZW50JztcbmltcG9ydCB7IEl0SWNvbkNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy91dGlscy9pY29uL2ljb24uY29tcG9uZW50JztcbmltcG9ydCB7IEl0TGFuZ3VhZ2VTd2l0Y2hlckNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy91dGlscy9sYW5ndWFnZS1zd2l0Y2hlci9sYW5ndWFnZS1zd2l0Y2hlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgSXREYXRlQWdvUGlwZSB9IGZyb20gJy4vcGlwZXMvZGF0ZS1hZ28ucGlwZSc7XG5pbXBvcnQgeyBJdER1cmF0aW9uUGlwZSB9IGZyb20gJy4vcGlwZXMvZHVyYXRpb24ucGlwZSc7XG5pbXBvcnQgeyBJdE1hcmtNYXRjaGluZ1RleHRQaXBlIH0gZnJvbSAnLi9waXBlcy9tYXJrLW1hdGNoaW5nLXRleHQucGlwZSc7XG5pbXBvcnQgeyBJdFRpbWVsaW5lTW9kdWxlIH0gZnJvbSAnLi9jb21wb25lbnRzL2NvcmUvdGltZWxpbmUvdGltZWxpbmUubW9kdWxlJztcblxuLyoqXG4gKiBDb3JlIGNvbXBvbmVudHNcbiAqL1xuY29uc3QgY29yZSA9IFtcbiAgSXRBY2NvcmRpb25Db21wb25lbnQsXG4gIEl0QWxlcnRDb21wb25lbnQsXG4gIEl0QXZhdGFyTW9kdWxlLFxuICBJdEJhZGdlRGlyZWN0aXZlLFxuICBJdEJ1dHRvbkRpcmVjdGl2ZSxcbiAgSXRDYWxsb3V0Q29tcG9uZW50LFxuICBJdENhcmRDb21wb25lbnQsXG4gIEl0Q2Fyb3VzZWxNb2R1bGUsXG4gIEl0Q2hpcENvbXBvbmVudCxcbiAgSXRDb2xsYXBzZUNvbXBvbmVudCxcbiAgSXREaW1tZXJNb2R1bGUsXG4gIEl0RHJvcGRvd25Nb2R1bGUsXG4gIEl0Rm9yd2FyZERpcmVjdGl2ZSxcbiAgSXRMaW5rQ29tcG9uZW50LFxuICBJdExpc3RNb2R1bGUsXG4gIEl0TW9kYWxDb21wb25lbnQsXG4gIEl0Tm90aWZpY2F0aW9uc0NvbXBvbmVudCxcbiAgSXRQYWdpbmF0aW9uQ29tcG9uZW50LFxuICBJdFBvcG92ZXJEaXJlY3RpdmUsXG4gIEl0UHJvZ3Jlc3NCYXJDb21wb25lbnQsXG4gIEl0UHJvZ3Jlc3NCdXR0b25Db21wb25lbnQsXG4gIEl0U3Bpbm5lckNvbXBvbmVudCxcbiAgSXRTdGVwcGVyc01vZHVsZSxcbiAgSXRUYWJNb2R1bGUsXG4gIEl0VGFibGVNb2R1bGUsXG4gIEl0VG9vbHRpcERpcmVjdGl2ZSxcbiAgSXRUaW1lbGluZU1vZHVsZSxcbl07XG5cbi8qKlxuICogTmF2aWdhdGlvbiBDb21wb25lbnRzXG4gKi9cbmNvbnN0IG5hdmlnYXRpb24gPSBbXG4gIEl0QmFja0J1dHRvbkNvbXBvbmVudCxcbiAgSXRCYWNrVG9Ub3BDb21wb25lbnQsXG4gIEl0QnJlYWRjcnVtYnNNb2R1bGUsXG4gIEl0SGVhZGVyQ29tcG9uZW50LFxuICBJdE5hdkJhck1vZHVsZSxcbiAgSXRTaWRlYmFyQ29tcG9uZW50LFxuICBJdE1lZ2FtZW51Q29tcG9uZW50LFxuXTtcblxuLyoqXG4gKiBVdGlscyBjb21wb25lbnRzXG4gKi9cbmNvbnN0IHV0aWxzID0gW0l0RXJyb3JQYWdlQ29tcG9uZW50LCBJdEljb25Db21wb25lbnQsIEl0TGFuZ3VhZ2VTd2l0Y2hlckNvbXBvbmVudF07XG5cbi8qKlxuICogTGlicmFyeSBwaXBlc1xuICovXG5jb25zdCBwaXBlcyA9IFtJdERhdGVBZ29QaXBlLCBJdER1cmF0aW9uUGlwZSwgSXRNYXJrTWF0Y2hpbmdUZXh0UGlwZV07XG5cbmNvbnN0IGNvbXBvbmVudHMgPSBbXG4gIC4uLmNvcmUsIC8vIENvcmUgY29tcG9uZW50c1xuICBJdEZvcm1Nb2R1bGUsIC8vIEZvcm0gY29tcG9uZW50c1xuICAuLi5uYXZpZ2F0aW9uLCAvLyBOYXZpZ2F0aW9uIENvbXBvbmVudHNcbiAgLi4udXRpbHMsIC8vIFV0aWxzIGNvbXBvbmVudHNcbiAgLi4ucGlwZXMsIC8vIExpYnJhcnkgcGlwZXNcbl07XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IGNvbXBvbmVudHMsXG4gIGV4cG9ydHM6IGNvbXBvbmVudHMsXG59KVxuZXhwb3J0IGNsYXNzIERlc2lnbkFuZ3VsYXJLaXRNb2R1bGUge1xuICBwdWJsaWMgc3RhdGljIGZvclJvb3QoY29uZmlnPzogRGVzaWduQW5ndWxhcktpdENvbmZpZyk6IE1vZHVsZVdpdGhQcm92aWRlcnM8RGVzaWduQW5ndWxhcktpdE1vZHVsZT4ge1xuICAgIHJldHVybiB7XG4gICAgICBuZ01vZHVsZTogRGVzaWduQW5ndWxhcktpdE1vZHVsZSxcbiAgICAgIHByb3ZpZGVyczogW3Byb3ZpZGVEZXNpZ25Bbmd1bGFyS2l0KGNvbmZpZyldLFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGZvckNoaWxkKCk6IE1vZHVsZVdpdGhQcm92aWRlcnM8RGVzaWduQW5ndWxhcktpdE1vZHVsZT4ge1xuICAgIHJldHVybiB7XG4gICAgICBuZ01vZHVsZTogRGVzaWduQW5ndWxhcktpdE1vZHVsZSxcbiAgICB9O1xuICB9XG59XG4iXX0=
227
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzaWduLWFuZ3VsYXIta2l0Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1hbmd1bGFyLWtpdC9zcmMvbGliL2Rlc2lnbi1hbmd1bGFyLWtpdC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF1QixRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0saURBQWlELENBQUM7QUFDdkYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDM0UsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN4RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDeEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDcEYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN4RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDbEUsT0FBTyxFQUFF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QXRCWixxQkFBcUI7WUFFckIsbUJBQW1CO1lBQ25CLGlCQUFpQjtZQUNqQixjQUFjLEVBU0Qsb0JBQW9CLEVBQW1CLDJCQUEyQixFQTVDL0UsY0FBYztZQUtkLGdCQUFnQjtZQUdoQixjQUFjO1lBQ2QsZ0JBQWdCO1lBR2hCLFlBQVk7WUFRWixnQkFBZ0I7WUFDaEIsV0FBVztZQUNYLGFBQWE7WUFFYixnQkFBZ0IsRUE0QlAsa0JBQWtCO1lBQzNCLFlBQVksRUFwQlosbUJBQW1CO1lBRW5CLGNBQWM7OzJGQTRCSCxzQkFBc0I7a0JBSmxDLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLFVBQVU7b0JBQ25CLE9BQU8sRUFBRSxVQUFVO2lCQUNwQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJdEFjY29yZGlvbkNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jb3JlL2FjY29yZGlvbi9hY2NvcmRpb24uY29tcG9uZW50JztcbmltcG9ydCB7IEl0QWxlcnRDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY29yZS9hbGVydC9hbGVydC5jb21wb25lbnQnO1xuaW1wb3J0IHsgSXRBdmF0YXJNb2R1bGUgfSBmcm9tICcuL2NvbXBvbmVudHMvY29yZS9hdmF0YXIvYXZhdGFyLm1vZHVsZSc7XG5pbXBvcnQgeyBJdEJhZGdlRGlyZWN0aXZlIH0gZnJvbSAnLi9jb21wb25lbnRzL2NvcmUvYmFkZ2UvYmFkZ2UuZGlyZWN0aXZlJztcbmltcG9ydCB7IEl0QnV0dG9uRGlyZWN0aXZlIH0gZnJvbSAnLi9jb21wb25lbnRzL2NvcmUvYnV0dG9uL2J1dHRvbi5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgSXRDYWxsb3V0Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NvcmUvY2FsbG91dC9jYWxsb3V0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJdENhcmRDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY29yZS9jYXJkL2NhcmQuY29tcG9uZW50JztcbmltcG9ydCB7IEl0Q2Fyb3VzZWxNb2R1bGUgfSBmcm9tICcuL2NvbXBvbmVudHMvY29yZS9jYXJvdXNlbC9jYXJvdXNlbC5tb2R1bGUnO1xuaW1wb3J0IHsgSXRDaGlwQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NvcmUvY2hpcC9jaGlwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJdENvbGxhcHNlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NvcmUvY29sbGFwc2UvY29sbGFwc2UuY29tcG9uZW50JztcbmltcG9ydCB7IEl0RGltbWVyTW9kdWxlIH0gZnJvbSAnLi9jb21wb25lbnRzL2NvcmUvZGltbWVyL2RpbW1lci5tb2R1bGUnO1xuaW1wb3J0IHsgSXREcm9wZG93bk1vZHVsZSB9IGZyb20gJy4vY29tcG9uZW50cy9jb3JlL2Ryb3Bkb3duL2Ryb3Bkb3duLm1vZHVsZSc7XG5pbXBvcnQgeyBJdEZvcndhcmREaXJlY3RpdmUgfSBmcm9tICcuL2NvbXBvbmVudHMvY29yZS9mb3J3YXJkL2ZvcndhcmQuZGlyZWN0aXZlJztcbmltcG9ydCB7IEl0TGlua0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jb3JlL2xpbmsvbGluay5jb21wb25lbnQnO1xuaW1wb3J0IHsgSXRMaXN0TW9kdWxlIH0gZnJvbSAnLi9jb21wb25lbnRzL2NvcmUvbGlzdC9saXN0Lm1vZHVsZSc7XG5pbXBvcnQgeyBJdE1vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NvcmUvbW9kYWwvbW9kYWwuY29tcG9uZW50JztcbmltcG9ydCB7IEl0Tm90aWZpY2F0aW9uc0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jb3JlL25vdGlmaWNhdGlvbnMvbm90aWZpY2F0aW9ucy5jb21wb25lbnQnO1xuaW1wb3J0IHsgSXRQYWdpbmF0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NvcmUvcGFnaW5hdGlvbi9wYWdpbmF0aW9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJdFBvcG92ZXJEaXJlY3RpdmUgfSBmcm9tICcuL2NvbXBvbmVudHMvY29yZS9wb3BvdmVyL3BvcG92ZXIuZGlyZWN0aXZlJztcbmltcG9ydCB7IEl0UHJvZ3Jlc3NCYXJDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY29yZS9wcm9ncmVzcy1iYXIvcHJvZ3Jlc3MtYmFyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJdFByb2dyZXNzQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NvcmUvcHJvZ3Jlc3MtYnV0dG9uL3Byb2dyZXNzLWJ1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgSXRTcGlubmVyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NvcmUvc3Bpbm5lci9zcGlubmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJdFN0ZXBwZXJzTW9kdWxlIH0gZnJvbSAnLi9jb21wb25lbnRzL2NvcmUvc3RlcHBlcnMvc3RlcHBlcnMubW9kdWxlJztcbmltcG9ydCB7IEl0VGFiTW9kdWxlIH0gZnJvbSAnLi9jb21wb25lbnRzL2NvcmUvdGFiL3RhYi5tb2R1bGUnO1xuaW1wb3J0IHsgSXRUYWJsZU1vZHVsZSB9IGZyb20gJy4vY29tcG9uZW50cy9jb3JlL3RhYmxlL3RhYmxlLm1vZHVsZSc7XG5pbXBvcnQgeyBJdFRpbWVsaW5lTW9kdWxlIH0gZnJvbSAnLi9jb21wb25lbnRzL2NvcmUvdGltZWxpbmUvdGltZWxpbmUubW9kdWxlJztcbmltcG9ydCB7IEl0VG9vbHRpcERpcmVjdGl2ZSB9IGZyb20gJy4vY29tcG9uZW50cy9jb3JlL3Rvb2x0aXAvdG9vbHRpcC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgSXRGb3JtTW9kdWxlIH0gZnJvbSAnLi9jb21wb25lbnRzL2Zvcm0vZm9ybS5tb2R1bGUnO1xuaW1wb3J0IHsgSXRCYWNrQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL25hdmlnYXRpb24vYmFjay1idXR0b24vYmFjay1idXR0b24uY29tcG9uZW50JztcbmltcG9ydCB7IEl0QmFja1RvVG9wQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL25hdmlnYXRpb24vYmFjay10by10b3AvYmFjay10by10b3AuY29tcG9uZW50JztcbmltcG9ydCB7IEl0QnJlYWRjcnVtYnNNb2R1bGUgfSBmcm9tICcuL2NvbXBvbmVudHMvbmF2aWdhdGlvbi9icmVhZGNydW1icy9icmVhZGNydW1icy5tb2R1bGUnO1xuaW1wb3J0IHsgSXRIZWFkZXJDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvbmF2aWdhdGlvbi9oZWFkZXIvaGVhZGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJdE1lZ2FtZW51Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL25hdmlnYXRpb24vbWVnYW1lbnUvbWVnYW1lbnUuY29tcG9uZW50JztcbmltcG9ydCB7IEl0TmF2QmFyTW9kdWxlIH0gZnJvbSAnLi9jb21wb25lbnRzL25hdmlnYXRpb24vbmF2YmFyL25hdmJhci5tb2R1bGUnO1xuaW1wb3J0IHsgSXROYXZzY3JvbGxDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvbmF2aWdhdGlvbi9uYXZzY3JvbGwvbmF2c2Nyb2xsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJdFNpZGViYXJDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvbmF2aWdhdGlvbi9zaWRlYmFyL3NpZGViYXIuY29tcG9uZW50JztcbmltcG9ydCB7IEl0RXJyb3JQYWdlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3V0aWxzL2Vycm9yLXBhZ2UvZXJyb3ItcGFnZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgSXRJY29uQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3V0aWxzL2ljb24vaWNvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgSXRMYW5ndWFnZVN3aXRjaGVyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3V0aWxzL2xhbmd1YWdlLXN3aXRjaGVyL2xhbmd1YWdlLXN3aXRjaGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEZXNpZ25Bbmd1bGFyS2l0Q29uZmlnIH0gZnJvbSAnLi9pbnRlcmZhY2VzL2Rlc2lnbi1hbmd1bGFyLWtpdC1jb25maWcnO1xuaW1wb3J0IHsgSXREYXRlQWdvUGlwZSB9IGZyb20gJy4vcGlwZXMvZGF0ZS1hZ28ucGlwZSc7XG5pbXBvcnQgeyBJdER1cmF0aW9uUGlwZSB9IGZyb20gJy4vcGlwZXMvZHVyYXRpb24ucGlwZSc7XG5pbXBvcnQgeyBJdE1hcmtNYXRjaGluZ1RleHRQaXBlIH0gZnJvbSAnLi9waXBlcy9tYXJrLW1hdGNoaW5nLXRleHQucGlwZSc7XG5pbXBvcnQgeyBwcm92aWRlRGVzaWduQW5ndWxhcktpdCB9IGZyb20gJy4vcHJvdmlkZS1kZXNpZ24tYW5ndWxhci1raXQnO1xuXG4vKipcbiAqIENvcmUgY29tcG9uZW50c1xuICovXG5jb25zdCBjb3JlID0gW1xuICBJdEFjY29yZGlvbkNvbXBvbmVudCxcbiAgSXRBbGVydENvbXBvbmVudCxcbiAgSXRBdmF0YXJNb2R1bGUsXG4gIEl0QmFkZ2VEaXJlY3RpdmUsXG4gIEl0QnV0dG9uRGlyZWN0aXZlLFxuICBJdENhbGxvdXRDb21wb25lbnQsXG4gIEl0Q2FyZENvbXBvbmVudCxcbiAgSXRDYXJvdXNlbE1vZHVsZSxcbiAgSXRDaGlwQ29tcG9uZW50LFxuICBJdENvbGxhcHNlQ29tcG9uZW50LFxuICBJdERpbW1lck1vZHVsZSxcbiAgSXREcm9wZG93bk1vZHVsZSxcbiAgSXRGb3J3YXJkRGlyZWN0aXZlLFxuICBJdExpbmtDb21wb25lbnQsXG4gIEl0TGlzdE1vZHVsZSxcbiAgSXRNb2RhbENvbXBvbmVudCxcbiAgSXROb3RpZmljYXRpb25zQ29tcG9uZW50LFxuICBJdFBhZ2luYXRpb25Db21wb25lbnQsXG4gIEl0UG9wb3ZlckRpcmVjdGl2ZSxcbiAgSXRQcm9ncmVzc0JhckNvbXBvbmVudCxcbiAgSXRQcm9ncmVzc0J1dHRvbkNvbXBvbmVudCxcbiAgSXRTcGlubmVyQ29tcG9uZW50LFxuICBJdFN0ZXBwZXJzTW9kdWxlLFxuICBJdFRhYk1vZHVsZSxcbiAgSXRUYWJsZU1vZHVsZSxcbiAgSXRUb29sdGlwRGlyZWN0aXZlLFxuICBJdFRpbWVsaW5lTW9kdWxlLFxuXTtcblxuLyoqXG4gKiBOYXZpZ2F0aW9uIENvbXBvbmVudHNcbiAqL1xuY29uc3QgbmF2aWdhdGlvbiA9IFtcbiAgSXRCYWNrQnV0dG9uQ29tcG9uZW50LFxuICBJdEJhY2tUb1RvcENvbXBvbmVudCxcbiAgSXRCcmVhZGNydW1ic01vZHVsZSxcbiAgSXRIZWFkZXJDb21wb25lbnQsXG4gIEl0TmF2QmFyTW9kdWxlLFxuICBJdFNpZGViYXJDb21wb25lbnQsXG4gIEl0TWVnYW1lbnVDb21wb25lbnQsXG4gIEl0TmF2c2Nyb2xsQ29tcG9uZW50LFxuXTtcblxuLyoqXG4gKiBVdGlscyBjb21wb25lbnRzXG4gKi9cbmNvbnN0IHV0aWxzID0gW0l0RXJyb3JQYWdlQ29tcG9uZW50LCBJdEljb25Db21wb25lbnQsIEl0TGFuZ3VhZ2VTd2l0Y2hlckNvbXBvbmVudF07XG5cbi8qKlxuICogTGlicmFyeSBwaXBlc1xuICovXG5jb25zdCBwaXBlcyA9IFtJdERhdGVBZ29QaXBlLCBJdER1cmF0aW9uUGlwZSwgSXRNYXJrTWF0Y2hpbmdUZXh0UGlwZV07XG5cbmNvbnN0IGNvbXBvbmVudHMgPSBbXG4gIC4uLmNvcmUsIC8vIENvcmUgY29tcG9uZW50c1xuICBJdEZvcm1Nb2R1bGUsIC8vIEZvcm0gY29tcG9uZW50c1xuICAuLi5uYXZpZ2F0aW9uLCAvLyBOYXZpZ2F0aW9uIENvbXBvbmVudHNcbiAgLi4udXRpbHMsIC8vIFV0aWxzIGNvbXBvbmVudHNcbiAgLi4ucGlwZXMsIC8vIExpYnJhcnkgcGlwZXNcbl07XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IGNvbXBvbmVudHMsXG4gIGV4cG9ydHM6IGNvbXBvbmVudHMsXG59KVxuZXhwb3J0IGNsYXNzIERlc2lnbkFuZ3VsYXJLaXRNb2R1bGUge1xuICBwdWJsaWMgc3RhdGljIGZvclJvb3QoY29uZmlnPzogRGVzaWduQW5ndWxhcktpdENvbmZpZyk6IE1vZHVsZVdpdGhQcm92aWRlcnM8RGVzaWduQW5ndWxhcktpdE1vZHVsZT4ge1xuICAgIHJldHVybiB7XG4gICAgICBuZ01vZHVsZTogRGVzaWduQW5ndWxhcktpdE1vZHVsZSxcbiAgICAgIHByb3ZpZGVyczogW3Byb3ZpZGVEZXNpZ25Bbmd1bGFyS2l0KGNvbmZpZyldLFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGZvckNoaWxkKCk6IE1vZHVsZVdpdGhQcm92aWRlcnM8RGVzaWduQW5ndWxhcktpdE1vZHVsZT4ge1xuICAgIHJldHVybiB7XG4gICAgICBuZ01vZHVsZTogRGVzaWduQW5ndWxhcktpdE1vZHVsZSxcbiAgICB9O1xuICB9XG59XG4iXX0=
@@ -1,10 +1,10 @@
1
+ import { HttpClient, provideHttpClient } from '@angular/common/http';
1
2
  import { APP_INITIALIZER, importProvidersFrom, makeEnvironmentProviders } from '@angular/core';
2
- import { IT_ASSET_BASE_PATH } from './interfaces/design-angular-kit-config';
3
- import { loadFonts } from 'bootstrap-italia';
3
+ import { provideAnimationsAsync } from '@angular/platform-browser/animations/async';
4
4
  import { TranslateLoader, TranslateModule, TranslateService } from '@ngx-translate/core';
5
- import { HttpClient, provideHttpClient } from '@angular/common/http';
6
5
  import { TranslateHttpLoader } from '@ngx-translate/http-loader';
7
- import { provideAnimationsAsync } from '@angular/platform-browser/animations/async';
6
+ import { loadFonts } from 'bootstrap-italia';
7
+ import { IT_ASSET_BASE_PATH } from './interfaces/design-angular-kit-config';
8
8
  /**
9
9
  * Configures DesignAngularKit library
10
10
  * @param config the DesignAngularKit config
@@ -61,4 +61,4 @@ export function provideDesignAngularKit(config) {
61
61
  });
62
62
  return makeEnvironmentProviders(providers);
63
63
  }
64
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZS1kZXNpZ24tYW5ndWxhci1raXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ24tYW5ndWxhci1raXQvc3JjL2xpYi9wcm92aWRlLWRlc2lnbi1hbmd1bGFyLWtpdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUF3QixtQkFBbUIsRUFBRSx3QkFBd0IsRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUMvSCxPQUFPLEVBQTBCLGtCQUFrQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDcEcsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDekYsT0FBTyxFQUFFLFVBQVUsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBRXBGOzs7R0FHRztBQUNILE1BQU0sVUFBVSx1QkFBdUIsQ0FBQyxNQUErQjtJQUNyRSxJQUFJLGFBQWEsR0FBRyxvQkFBb0IsQ0FBQztJQUN6QyxJQUFJLE1BQU0sRUFBRSxhQUFhLEVBQUUsQ0FBQztRQUMxQixhQUFhLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDO1lBQ2hELENBQUMsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDMUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUM7SUFDM0IsQ0FBQztJQUVELE1BQU0sU0FBUyxHQUEyQztRQUN4RDtZQUNFLE9BQU8sRUFBRSxrQkFBa0I7WUFDM0IsUUFBUSxFQUFFLGFBQWE7U0FDeEI7UUFDRCxzQkFBc0IsRUFBRTtRQUN4QixpQkFBaUIsRUFBRTtLQUNwQixDQUFDO0lBRUYsSUFBSSxNQUFNLEVBQUUsUUFBUSxLQUFLLEtBQUssRUFBRSxDQUFDO1FBQy9CLHVEQUF1RDtRQUN2RCxTQUFTLENBQUMsSUFBSSxDQUFDO1lBQ2IsT0FBTyxFQUFFLGVBQWU7WUFDeEIsVUFBVSxFQUFFLEdBQUcsRUFBRTtnQkFDZixPQUFPLEdBQUcsRUFBRTtvQkFDVixTQUFTLENBQUMsR0FBRyxhQUFhLGFBQWEsQ0FBQyxDQUFDO2dCQUMzQyxDQUFDLENBQUM7WUFDSixDQUFDO1lBQ0QsS0FBSyxFQUFFLElBQUk7U0FDWixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsaURBQWlEO0lBQ2pELE1BQU0sVUFBVSxHQUFHLEdBQUcsYUFBYSxRQUFRLENBQUM7SUFDNUMsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLENBQUMsb0VBQW9FO0lBQ2hHLFNBQVMsQ0FBQyxJQUFJLENBQ1osbUJBQW1CLENBQ2pCLGVBQWUsQ0FBQyxPQUFPLENBQUM7UUFDdEIsTUFBTSxFQUFFLE1BQU0sRUFBRSxlQUFlLEVBQUUsQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDLElBQUk7WUFDM0QsT0FBTyxFQUFFLGVBQWU7WUFDeEIsVUFBVSxFQUFFLENBQUMsSUFBZ0IsRUFBRSxFQUFFLENBQUMsSUFBSSxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFLFVBQVUsQ0FBQztZQUN2RixJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUM7U0FDbkI7UUFDRCxlQUFlLEVBQUUsSUFBSTtRQUNyQixjQUFjLEVBQUUsSUFBSTtLQUNyQixDQUFDLENBQ0gsQ0FDRixDQUFDO0lBRUYsdURBQXVEO0lBQ3ZELFNBQVMsQ0FBQyxJQUFJLENBQUM7UUFDYixPQUFPLEVBQUUsZUFBZTtRQUN4QixVQUFVLEVBQUUsQ0FBQyxnQkFBa0MsRUFBRSxFQUFFO1lBQ2pELE9BQU8sR0FBRyxFQUFFO2dCQUNWLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsNkNBQTZDO1lBQ3hGLENBQUMsQ0FBQztRQUNKLENBQUM7UUFDRCxLQUFLLEVBQUUsSUFBSTtRQUNYLElBQUksRUFBRSxDQUFDLGdCQUFnQixDQUFDO0tBQ3pCLENBQUMsQ0FBQztJQUVILE9BQU8sd0JBQXdCLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDN0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFQUF9JTklUSUFMSVpFUiwgRW52aXJvbm1lbnRQcm92aWRlcnMsIGltcG9ydFByb3ZpZGVyc0Zyb20sIG1ha2VFbnZpcm9ubWVudFByb3ZpZGVycywgUHJvdmlkZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERlc2lnbkFuZ3VsYXJLaXRDb25maWcsIElUX0FTU0VUX0JBU0VfUEFUSCB9IGZyb20gJy4vaW50ZXJmYWNlcy9kZXNpZ24tYW5ndWxhci1raXQtY29uZmlnJztcbmltcG9ydCB7IGxvYWRGb250cyB9IGZyb20gJ2Jvb3RzdHJhcC1pdGFsaWEnO1xuaW1wb3J0IHsgVHJhbnNsYXRlTG9hZGVyLCBUcmFuc2xhdGVNb2R1bGUsIFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IEh0dHBDbGllbnQsIHByb3ZpZGVIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgVHJhbnNsYXRlSHR0cExvYWRlciB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2h0dHAtbG9hZGVyJztcbmltcG9ydCB7IHByb3ZpZGVBbmltYXRpb25zQXN5bmMgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyL2FuaW1hdGlvbnMvYXN5bmMnO1xuXG4vKipcbiAqIENvbmZpZ3VyZXMgRGVzaWduQW5ndWxhcktpdCBsaWJyYXJ5XG4gKiBAcGFyYW0gY29uZmlnIHRoZSBEZXNpZ25Bbmd1bGFyS2l0IGNvbmZpZ1xuICovXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZURlc2lnbkFuZ3VsYXJLaXQoY29uZmlnPzogRGVzaWduQW5ndWxhcktpdENvbmZpZyk6IEVudmlyb25tZW50UHJvdmlkZXJzIHtcbiAgbGV0IGFzc2V0QmFzZVBhdGggPSAnLi9ib290c3RyYXAtaXRhbGlhJztcbiAgaWYgKGNvbmZpZz8uYXNzZXRCYXNlUGF0aCkge1xuICAgIGFzc2V0QmFzZVBhdGggPSBjb25maWcuYXNzZXRCYXNlUGF0aC5lbmRzV2l0aCgnLycpXG4gICAgICA/IGNvbmZpZy5hc3NldEJhc2VQYXRoLnN1YnN0cmluZygwLCBjb25maWcuYXNzZXRCYXNlUGF0aC5sYXN0SW5kZXhPZignLycpKVxuICAgICAgOiBjb25maWcuYXNzZXRCYXNlUGF0aDtcbiAgfVxuXG4gIGNvbnN0IHByb3ZpZGVyczogQXJyYXk8RW52aXJvbm1lbnRQcm92aWRlcnMgfCBQcm92aWRlcj4gPSBbXG4gICAge1xuICAgICAgcHJvdmlkZTogSVRfQVNTRVRfQkFTRV9QQVRILFxuICAgICAgdXNlVmFsdWU6IGFzc2V0QmFzZVBhdGgsXG4gICAgfSxcbiAgICBwcm92aWRlQW5pbWF0aW9uc0FzeW5jKCksXG4gICAgcHJvdmlkZUh0dHBDbGllbnQoKSxcbiAgXTtcblxuICBpZiAoY29uZmlnPy5sb2FkRm9udCAhPT0gZmFsc2UpIHtcbiAgICAvLyBBZGQgcHJvdmlkZXIgdG8gaW5pdGlhbGl6ZSB0aGUgYm9vdHN0cmFwLWl0YWxpYSBmb250XG4gICAgcHJvdmlkZXJzLnB1c2goe1xuICAgICAgcHJvdmlkZTogQVBQX0lOSVRJQUxJWkVSLFxuICAgICAgdXNlRmFjdG9yeTogKCkgPT4ge1xuICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgIGxvYWRGb250cyhgJHthc3NldEJhc2VQYXRofS9kaXN0L2ZvbnRzYCk7XG4gICAgICAgIH07XG4gICAgICB9LFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSk7XG4gIH1cblxuICAvLyBBZGQgcHJvdmlkZXIgdG8gaW5pdGlhbGl6ZSB0aGUgVHJhbnNsYXRlTW9kdWxlXG4gIGNvbnN0IGxhbmdQcmVmaXggPSBgJHthc3NldEJhc2VQYXRofS9pMThuL2A7XG4gIGNvbnN0IGxhbmdTdWZmaXggPSBgLmpzb25gOyAvLyBUT0RPOiBhZGQgP3Yke3ZlcnNpb259IHRvIHByZXZlbnQgY2FjaGUgbG9hZGluZyBvbiB2ZXJzaW9uIGNoYW5nZVxuICBwcm92aWRlcnMucHVzaChcbiAgICBpbXBvcnRQcm92aWRlcnNGcm9tKFxuICAgICAgVHJhbnNsYXRlTW9kdWxlLmZvclJvb3Qoe1xuICAgICAgICBsb2FkZXI6IGNvbmZpZz8udHJhbnNsYXRlTG9hZGVyPy4obGFuZ1ByZWZpeCwgbGFuZ1N1ZmZpeCkgPz8ge1xuICAgICAgICAgIHByb3ZpZGU6IFRyYW5zbGF0ZUxvYWRlcixcbiAgICAgICAgICB1c2VGYWN0b3J5OiAoaHR0cDogSHR0cENsaWVudCkgPT4gbmV3IFRyYW5zbGF0ZUh0dHBMb2FkZXIoaHR0cCwgbGFuZ1ByZWZpeCwgbGFuZ1N1ZmZpeCksXG4gICAgICAgICAgZGVwczogW0h0dHBDbGllbnRdLFxuICAgICAgICB9LFxuICAgICAgICBkZWZhdWx0TGFuZ3VhZ2U6ICdpdCcsXG4gICAgICAgIHVzZURlZmF1bHRMYW5nOiB0cnVlLFxuICAgICAgfSlcbiAgICApXG4gICk7XG5cbiAgLy8gQWRkIHByb3ZpZGVyIHRvIGluaXRpYWxpemUgbGlicmFyeSBkZWZhdWx0IGxhbmd1YWdlc1xuICBwcm92aWRlcnMucHVzaCh7XG4gICAgcHJvdmlkZTogQVBQX0lOSVRJQUxJWkVSLFxuICAgIHVzZUZhY3Rvcnk6ICh0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlKSA9PiB7XG4gICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICB0cmFuc2xhdGVTZXJ2aWNlLmFkZExhbmdzKFsnaXQnLCAnZW4nXSk7IC8vIEFkZHMgJ2l0JyBhbmQgJ2VuJyBhcyBhdmFpbGFibGUgbGFuZ3VhZ2VzLlxuICAgICAgfTtcbiAgICB9LFxuICAgIG11bHRpOiB0cnVlLFxuICAgIGRlcHM6IFtUcmFuc2xhdGVTZXJ2aWNlXSxcbiAgfSk7XG5cbiAgcmV0dXJuIG1ha2VFbnZpcm9ubWVudFByb3ZpZGVycyhwcm92aWRlcnMpO1xufVxuIl19
64
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZS1kZXNpZ24tYW5ndWxhci1raXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ24tYW5ndWxhci1raXQvc3JjL2xpYi9wcm92aWRlLWRlc2lnbi1hbmd1bGFyLWtpdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDckUsT0FBTyxFQUFFLGVBQWUsRUFBd0IsbUJBQW1CLEVBQUUsd0JBQXdCLEVBQVksTUFBTSxlQUFlLENBQUM7QUFDL0gsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDcEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN6RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDN0MsT0FBTyxFQUEwQixrQkFBa0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRXBHOzs7R0FHRztBQUNILE1BQU0sVUFBVSx1QkFBdUIsQ0FBQyxNQUErQjtJQUNyRSxJQUFJLGFBQWEsR0FBRyxvQkFBb0IsQ0FBQztJQUN6QyxJQUFJLE1BQU0sRUFBRSxhQUFhLEVBQUUsQ0FBQztRQUMxQixhQUFhLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDO1lBQ2hELENBQUMsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDMUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUM7SUFDM0IsQ0FBQztJQUVELE1BQU0sU0FBUyxHQUEyQztRQUN4RDtZQUNFLE9BQU8sRUFBRSxrQkFBa0I7WUFDM0IsUUFBUSxFQUFFLGFBQWE7U0FDeEI7UUFDRCxzQkFBc0IsRUFBRTtRQUN4QixpQkFBaUIsRUFBRTtLQUNwQixDQUFDO0lBRUYsSUFBSSxNQUFNLEVBQUUsUUFBUSxLQUFLLEtBQUssRUFBRSxDQUFDO1FBQy9CLHVEQUF1RDtRQUN2RCxTQUFTLENBQUMsSUFBSSxDQUFDO1lBQ2IsT0FBTyxFQUFFLGVBQWU7WUFDeEIsVUFBVSxFQUFFLEdBQUcsRUFBRTtnQkFDZixPQUFPLEdBQUcsRUFBRTtvQkFDVixTQUFTLENBQUMsR0FBRyxhQUFhLGFBQWEsQ0FBQyxDQUFDO2dCQUMzQyxDQUFDLENBQUM7WUFDSixDQUFDO1lBQ0QsS0FBSyxFQUFFLElBQUk7U0FDWixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsaURBQWlEO0lBQ2pELE1BQU0sVUFBVSxHQUFHLEdBQUcsYUFBYSxRQUFRLENBQUM7SUFDNUMsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLENBQUMsb0VBQW9FO0lBQ2hHLFNBQVMsQ0FBQyxJQUFJLENBQ1osbUJBQW1CLENBQ2pCLGVBQWUsQ0FBQyxPQUFPLENBQUM7UUFDdEIsTUFBTSxFQUFFLE1BQU0sRUFBRSxlQUFlLEVBQUUsQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDLElBQUk7WUFDM0QsT0FBTyxFQUFFLGVBQWU7WUFDeEIsVUFBVSxFQUFFLENBQUMsSUFBZ0IsRUFBRSxFQUFFLENBQUMsSUFBSSxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFLFVBQVUsQ0FBQztZQUN2RixJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUM7U0FDbkI7UUFDRCxlQUFlLEVBQUUsSUFBSTtRQUNyQixjQUFjLEVBQUUsSUFBSTtLQUNyQixDQUFDLENBQ0gsQ0FDRixDQUFDO0lBRUYsdURBQXVEO0lBQ3ZELFNBQVMsQ0FBQyxJQUFJLENBQUM7UUFDYixPQUFPLEVBQUUsZUFBZTtRQUN4QixVQUFVLEVBQUUsQ0FBQyxnQkFBa0MsRUFBRSxFQUFFO1lBQ2pELE9BQU8sR0FBRyxFQUFFO2dCQUNWLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsNkNBQTZDO1lBQ3hGLENBQUMsQ0FBQztRQUNKLENBQUM7UUFDRCxLQUFLLEVBQUUsSUFBSTtRQUNYLElBQUksRUFBRSxDQUFDLGdCQUFnQixDQUFDO0tBQ3pCLENBQUMsQ0FBQztJQUVILE9BQU8sd0JBQXdCLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDN0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQsIHByb3ZpZGVIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgQVBQX0lOSVRJQUxJWkVSLCBFbnZpcm9ubWVudFByb3ZpZGVycywgaW1wb3J0UHJvdmlkZXJzRnJvbSwgbWFrZUVudmlyb25tZW50UHJvdmlkZXJzLCBQcm92aWRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgcHJvdmlkZUFuaW1hdGlvbnNBc3luYyB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXIvYW5pbWF0aW9ucy9hc3luYyc7XG5pbXBvcnQgeyBUcmFuc2xhdGVMb2FkZXIsIFRyYW5zbGF0ZU1vZHVsZSwgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgVHJhbnNsYXRlSHR0cExvYWRlciB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2h0dHAtbG9hZGVyJztcbmltcG9ydCB7IGxvYWRGb250cyB9IGZyb20gJ2Jvb3RzdHJhcC1pdGFsaWEnO1xuaW1wb3J0IHsgRGVzaWduQW5ndWxhcktpdENvbmZpZywgSVRfQVNTRVRfQkFTRV9QQVRIIH0gZnJvbSAnLi9pbnRlcmZhY2VzL2Rlc2lnbi1hbmd1bGFyLWtpdC1jb25maWcnO1xuXG4vKipcbiAqIENvbmZpZ3VyZXMgRGVzaWduQW5ndWxhcktpdCBsaWJyYXJ5XG4gKiBAcGFyYW0gY29uZmlnIHRoZSBEZXNpZ25Bbmd1bGFyS2l0IGNvbmZpZ1xuICovXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZURlc2lnbkFuZ3VsYXJLaXQoY29uZmlnPzogRGVzaWduQW5ndWxhcktpdENvbmZpZyk6IEVudmlyb25tZW50UHJvdmlkZXJzIHtcbiAgbGV0IGFzc2V0QmFzZVBhdGggPSAnLi9ib290c3RyYXAtaXRhbGlhJztcbiAgaWYgKGNvbmZpZz8uYXNzZXRCYXNlUGF0aCkge1xuICAgIGFzc2V0QmFzZVBhdGggPSBjb25maWcuYXNzZXRCYXNlUGF0aC5lbmRzV2l0aCgnLycpXG4gICAgICA/IGNvbmZpZy5hc3NldEJhc2VQYXRoLnN1YnN0cmluZygwLCBjb25maWcuYXNzZXRCYXNlUGF0aC5sYXN0SW5kZXhPZignLycpKVxuICAgICAgOiBjb25maWcuYXNzZXRCYXNlUGF0aDtcbiAgfVxuXG4gIGNvbnN0IHByb3ZpZGVyczogQXJyYXk8RW52aXJvbm1lbnRQcm92aWRlcnMgfCBQcm92aWRlcj4gPSBbXG4gICAge1xuICAgICAgcHJvdmlkZTogSVRfQVNTRVRfQkFTRV9QQVRILFxuICAgICAgdXNlVmFsdWU6IGFzc2V0QmFzZVBhdGgsXG4gICAgfSxcbiAgICBwcm92aWRlQW5pbWF0aW9uc0FzeW5jKCksXG4gICAgcHJvdmlkZUh0dHBDbGllbnQoKSxcbiAgXTtcblxuICBpZiAoY29uZmlnPy5sb2FkRm9udCAhPT0gZmFsc2UpIHtcbiAgICAvLyBBZGQgcHJvdmlkZXIgdG8gaW5pdGlhbGl6ZSB0aGUgYm9vdHN0cmFwLWl0YWxpYSBmb250XG4gICAgcHJvdmlkZXJzLnB1c2goe1xuICAgICAgcHJvdmlkZTogQVBQX0lOSVRJQUxJWkVSLFxuICAgICAgdXNlRmFjdG9yeTogKCkgPT4ge1xuICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgIGxvYWRGb250cyhgJHthc3NldEJhc2VQYXRofS9kaXN0L2ZvbnRzYCk7XG4gICAgICAgIH07XG4gICAgICB9LFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSk7XG4gIH1cblxuICAvLyBBZGQgcHJvdmlkZXIgdG8gaW5pdGlhbGl6ZSB0aGUgVHJhbnNsYXRlTW9kdWxlXG4gIGNvbnN0IGxhbmdQcmVmaXggPSBgJHthc3NldEJhc2VQYXRofS9pMThuL2A7XG4gIGNvbnN0IGxhbmdTdWZmaXggPSBgLmpzb25gOyAvLyBUT0RPOiBhZGQgP3Yke3ZlcnNpb259IHRvIHByZXZlbnQgY2FjaGUgbG9hZGluZyBvbiB2ZXJzaW9uIGNoYW5nZVxuICBwcm92aWRlcnMucHVzaChcbiAgICBpbXBvcnRQcm92aWRlcnNGcm9tKFxuICAgICAgVHJhbnNsYXRlTW9kdWxlLmZvclJvb3Qoe1xuICAgICAgICBsb2FkZXI6IGNvbmZpZz8udHJhbnNsYXRlTG9hZGVyPy4obGFuZ1ByZWZpeCwgbGFuZ1N1ZmZpeCkgPz8ge1xuICAgICAgICAgIHByb3ZpZGU6IFRyYW5zbGF0ZUxvYWRlcixcbiAgICAgICAgICB1c2VGYWN0b3J5OiAoaHR0cDogSHR0cENsaWVudCkgPT4gbmV3IFRyYW5zbGF0ZUh0dHBMb2FkZXIoaHR0cCwgbGFuZ1ByZWZpeCwgbGFuZ1N1ZmZpeCksXG4gICAgICAgICAgZGVwczogW0h0dHBDbGllbnRdLFxuICAgICAgICB9LFxuICAgICAgICBkZWZhdWx0TGFuZ3VhZ2U6ICdpdCcsXG4gICAgICAgIHVzZURlZmF1bHRMYW5nOiB0cnVlLFxuICAgICAgfSlcbiAgICApXG4gICk7XG5cbiAgLy8gQWRkIHByb3ZpZGVyIHRvIGluaXRpYWxpemUgbGlicmFyeSBkZWZhdWx0IGxhbmd1YWdlc1xuICBwcm92aWRlcnMucHVzaCh7XG4gICAgcHJvdmlkZTogQVBQX0lOSVRJQUxJWkVSLFxuICAgIHVzZUZhY3Rvcnk6ICh0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlKSA9PiB7XG4gICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICB0cmFuc2xhdGVTZXJ2aWNlLmFkZExhbmdzKFsnaXQnLCAnZW4nXSk7IC8vIEFkZHMgJ2l0JyBhbmQgJ2VuJyBhcyBhdmFpbGFibGUgbGFuZ3VhZ2VzLlxuICAgICAgfTtcbiAgICB9LFxuICAgIG11bHRpOiB0cnVlLFxuICAgIGRlcHM6IFtUcmFuc2xhdGVTZXJ2aWNlXSxcbiAgfSk7XG5cbiAgcmV0dXJuIG1ha2VFbnZpcm9ubWVudFByb3ZpZGVycyhwcm92aWRlcnMpO1xufVxuIl19