ontimize-web-ngx 15.0.3 → 15.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/components/app-sidenav/menu-group/o-app-sidenav-menu-group.component.mjs +3 -3
- package/esm2020/lib/components/app-sidenav/menu-item/o-app-sidenav-menu-item.component.mjs +3 -3
- package/esm2020/lib/components/app-sidenav/o-app-sidenav.component.mjs +15 -13
- package/esm2020/lib/components/bar-menu/menu-nested/o-bar-menu-nested.component.mjs +3 -3
- package/esm2020/lib/components/bar-menu/o-bar-menu.component.mjs +10 -1
- package/esm2020/lib/components/button/o-button.component.mjs +27 -11
- package/esm2020/lib/components/form/index.mjs +2 -1
- package/esm2020/lib/components/form/o-form-tokens.mjs +3 -0
- package/esm2020/lib/components/form/o-form.component.mjs +43 -16
- package/esm2020/lib/components/grid/o-grid.component.mjs +7 -12
- package/esm2020/lib/components/input/combo/combo-search/o-combo-search.component.mjs +4 -1
- package/esm2020/lib/components/input/combo/o-combo.component.mjs +10 -3
- package/esm2020/lib/components/input/date-range/o-daterange-picker.component.mjs +6 -5
- package/esm2020/lib/components/list/o-list.component.mjs +8 -13
- package/esm2020/lib/components/list/renderers/o-list-item-text-renderer.class.mjs +13 -4
- package/esm2020/lib/components/o-service-base-component.class.mjs +12 -6
- package/esm2020/lib/components/o-service-component.class.mjs +64 -1
- package/esm2020/lib/components/table/column/cell-editor/real/o-table-cell-editor-real.component.mjs +2 -2
- package/esm2020/lib/components/table/extensions/dialog/filter-by-column/o-table-filter-by-column-data-dialog.component.mjs +2 -4
- package/esm2020/lib/components/table/extensions/header/table-column-resizer/o-table-column-resizer.component.mjs +18 -10
- package/esm2020/lib/components/table/extensions/skeleton/o-table-skeleton.component.mjs +8 -7
- package/esm2020/lib/components/table/extensions/sort/o-mat-sort.mjs +2 -4
- package/esm2020/lib/components/table/o-table.component.mjs +28 -11
- package/esm2020/lib/components/tree/o-tree.component.mjs +22 -13
- package/esm2020/lib/interfaces/app-menu.interface.mjs +1 -1
- package/esm2020/lib/interfaces/service-data-component.interface.mjs +1 -1
- package/esm2020/lib/layouts/app-layout/o-app-layout.component.mjs +1 -1
- package/esm2020/lib/layouts/card-menu-layout/o-card-menu-layout.component.mjs +32 -16
- package/esm2020/lib/layouts/form-layout/o-form-layout-manager.component.mjs +17 -1
- package/esm2020/lib/services/app-menu.service.mjs +36 -2
- package/esm2020/lib/services/o-auth.service.mjs +7 -1
- package/esm2020/lib/services/ontimize-export-data-base-provider.service.mjs +34 -2
- package/esm2020/lib/services/permissions/permissions.service.mjs +40 -6
- package/esm2020/lib/types/form/index.mjs +2 -0
- package/esm2020/lib/types/form/o-form-global-config.type.mjs +2 -0
- package/esm2020/lib/types/index.mjs +3 -1
- package/esm2020/lib/types/o-component-permissions-by-route.type.mjs +2 -0
- package/esm2020/lib/types/o-form-permissions.type.mjs +1 -1
- package/esm2020/lib/types/o-global-config.type.mjs +3 -0
- package/esm2020/lib/types/o-grid-permissions.type.mjs +2 -0
- package/esm2020/lib/types/o-list-permissions.type.mjs +2 -0
- package/esm2020/lib/types/o-service-base-permissions.type.mjs +2 -0
- package/esm2020/lib/types/o-tree-permissions.type.mjs +2 -0
- package/esm2020/lib/types/table/o-table-global-config.type.mjs +1 -1
- package/esm2020/lib/types/table/o-table-permissions.type.mjs +1 -1
- package/esm2020/lib/util/codes.mjs +9 -1
- package/esm2020/lib/util/util.mjs +16 -1
- package/fesm2015/ontimize-web-ngx.mjs +1835 -1522
- package/fesm2015/ontimize-web-ngx.mjs.map +1 -1
- package/fesm2020/ontimize-web-ngx.mjs +1834 -1522
- package/fesm2020/ontimize-web-ngx.mjs.map +1 -1
- package/lib/components/app-sidenav/o-app-sidenav.component.d.ts +4 -4
- package/lib/components/bar-menu/o-bar-menu.component.d.ts +4 -0
- package/lib/components/button/o-button.component.d.ts +11 -2
- package/lib/components/form/index.d.ts +1 -0
- package/lib/components/form/o-form-tokens.d.ts +3 -0
- package/lib/components/form/o-form.component.d.ts +11 -4
- package/lib/components/grid/o-grid.component.d.ts +5 -4
- package/lib/components/input/combo/combo-search/o-combo-search.component.d.ts +1 -0
- package/lib/components/input/combo/o-combo.component.d.ts +2 -0
- package/lib/components/input/date-range/o-daterange-picker.component.d.ts +1 -0
- package/lib/components/list/o-list.component.d.ts +5 -4
- package/lib/components/list/renderers/o-list-item-text-renderer.class.d.ts +4 -1
- package/lib/components/o-service-base-component.class.d.ts +2 -0
- package/lib/components/o-service-component.class.d.ts +11 -0
- package/lib/components/table/extensions/header/table-column-resizer/o-table-column-resizer.component.d.ts +3 -3
- package/lib/components/table/extensions/skeleton/o-table-skeleton.component.d.ts +1 -1
- package/lib/components/table/o-table.component.d.ts +3 -3
- package/lib/components/tree/o-tree.component.d.ts +6 -0
- package/lib/interfaces/app-menu.interface.d.ts +2 -0
- package/lib/interfaces/service-data-component.interface.d.ts +1 -0
- package/lib/layouts/card-menu-layout/o-card-menu-layout.component.d.ts +10 -2
- package/lib/layouts/form-layout/o-form-layout-manager.component.d.ts +1 -0
- package/lib/services/app-menu.service.d.ts +7 -1
- package/lib/services/o-auth.service.d.ts +1 -0
- package/lib/services/ontimize-export-data-base-provider.service.d.ts +1 -0
- package/lib/services/permissions/permissions.service.d.ts +14 -3
- package/lib/types/form/index.d.ts +1 -0
- package/lib/types/form/o-form-global-config.type.d.ts +3 -0
- package/lib/types/index.d.ts +2 -0
- package/lib/types/o-component-permissions-by-route.type.d.ts +5 -0
- package/lib/types/o-form-permissions.type.d.ts +2 -7
- package/lib/types/o-global-config.type.d.ts +5 -0
- package/lib/types/o-grid-permissions.type.d.ts +2 -0
- package/lib/types/o-list-permissions.type.d.ts +2 -0
- package/lib/types/o-service-base-permissions.type.d.ts +7 -0
- package/lib/types/o-tree-permissions.type.d.ts +2 -0
- package/lib/types/table/o-table-global-config.type.d.ts +5 -0
- package/lib/types/table/o-table-permissions.type.d.ts +2 -4
- package/lib/util/codes.d.ts +8 -1
- package/lib/util/util.d.ts +2 -0
- package/ontimize.scss +35 -34
- package/package.json +1 -1
- package/theme.scss +106 -73
- package/theming/ontimize-style.scss +19 -37
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Injector, ViewEncapsulation
|
|
1
|
+
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Injector, ViewEncapsulation } from '@angular/core';
|
|
2
|
+
import { PermissionsService } from '../../services';
|
|
2
3
|
import { AppMenuService } from '../../services/app-menu.service';
|
|
3
4
|
import { OTranslateService } from '../../services/translate/o-translate.service';
|
|
4
5
|
import * as i0 from "@angular/core";
|
|
@@ -7,7 +8,8 @@ import * as i2 from "../../components/card-menu-item/o-card-menu-item.component"
|
|
|
7
8
|
import * as i3 from "@angular/flex-layout/flex";
|
|
8
9
|
import * as i4 from "@angular/flex-layout/extended";
|
|
9
10
|
export const DEFAULT_INPUTS_O_MENU_LAYOUT = [
|
|
10
|
-
'parentMenuId : parent-menu-id'
|
|
11
|
+
'parentMenuId : parent-menu-id',
|
|
12
|
+
'excludeMenusId : exclude-menus-id'
|
|
11
13
|
];
|
|
12
14
|
export const DEFAULT_OUTPUTS_O_MENU_LAYOUT = [];
|
|
13
15
|
export class OCardMenuLayoutComponent {
|
|
@@ -17,6 +19,7 @@ export class OCardMenuLayoutComponent {
|
|
|
17
19
|
this.translateService = this.injector.get(OTranslateService);
|
|
18
20
|
this.appMenuService = this.injector.get(AppMenuService);
|
|
19
21
|
this.menuRoots = this.appMenuService.getMenuRoots();
|
|
22
|
+
this.permissionsService = this.injector.get(PermissionsService);
|
|
20
23
|
this.translateServiceSubscription = this.translateService.onLanguageChanged.subscribe(() => {
|
|
21
24
|
this.cd.detectChanges();
|
|
22
25
|
});
|
|
@@ -35,7 +38,9 @@ export class OCardMenuLayoutComponent {
|
|
|
35
38
|
cardItemsAux = this.menuRoots.filter(item => !this.appMenuService.isMenuGroup(item));
|
|
36
39
|
}
|
|
37
40
|
else {
|
|
38
|
-
|
|
41
|
+
this.parentMenuIds = (this.parentMenuId || '').split(';').map(id => id.trim());
|
|
42
|
+
this.excludeIds = (this.excludeMenusId || '').split(';').map(id => id.trim());
|
|
43
|
+
cardItemsAux = this.getItemsFilteredByParentId(this.menuRoots, this.parentMenuIds);
|
|
39
44
|
}
|
|
40
45
|
this.cardItems = cardItemsAux;
|
|
41
46
|
}
|
|
@@ -46,28 +51,39 @@ export class OCardMenuLayoutComponent {
|
|
|
46
51
|
this.cardItemsArray = val;
|
|
47
52
|
this.cd.detectChanges();
|
|
48
53
|
}
|
|
49
|
-
getItemsFilteredByParentId(array) {
|
|
50
|
-
let result;
|
|
54
|
+
getItemsFilteredByParentId(array, parentMenuIds) {
|
|
55
|
+
let result = [];
|
|
51
56
|
const groups = array.filter(item => this.appMenuService.isMenuGroup(item));
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
+
parentMenuIds.forEach(parentMenuId => {
|
|
58
|
+
for (let i = 0, len = groups.length; i < len; i++) {
|
|
59
|
+
const menuGroup = groups[i];
|
|
60
|
+
if (menuGroup.id === parentMenuId) {
|
|
61
|
+
let permissions = this.permissionsService.getMenuPermissions(parentMenuId);
|
|
62
|
+
menuGroup.items.forEach(item => {
|
|
63
|
+
let hidden = permissions?.visible === false || this.excludeIds.includes(item.id);
|
|
64
|
+
item['show-in-card-menu'] = !hidden;
|
|
65
|
+
});
|
|
66
|
+
result = result.concat(menuGroup.items);
|
|
67
|
+
break;
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
const childResult = this.getItemsFilteredByParentId(menuGroup.items, [parentMenuId]);
|
|
71
|
+
if (childResult.length) {
|
|
72
|
+
result = result.concat(childResult);
|
|
73
|
+
break;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
57
76
|
}
|
|
58
|
-
|
|
59
|
-
result = this.getItemsFilteredByParentId(menuGroup.items);
|
|
60
|
-
}
|
|
61
|
-
}
|
|
77
|
+
});
|
|
62
78
|
return result;
|
|
63
79
|
}
|
|
64
80
|
}
|
|
65
81
|
OCardMenuLayoutComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OCardMenuLayoutComponent, deps: [{ token: i0.Injector }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
66
|
-
OCardMenuLayoutComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: OCardMenuLayoutComponent, selector: "o-card-menu-layout", inputs: { parentMenuId: ["parent-menu-id", "parentMenuId"] }, host: { properties: { "class.o-menu-layout": "true" } }, ngImport: i0, template: "<div fxLayout=\"row wrap\" class=\"scrolling\" fxLayout.lt-md=\"column\" fxLayoutAlign=\"space-around center\" fxLayoutGap=\"8px\">\n <ng-container *ngFor=\"let item of cardItems\">\n <o-card-menu-item *ngIf=\"item['show-in-card-menu'] !== false\" button-text=\"CARD_MENU_LAYOUT.BUTTON_TEXT\" [route]=\"item.route\" [title]=\"item.name\"\n [tooltip]=\"item.tooltip\" [icon]=\"item.icon\" [image]=\"item.image\" [detail-component]=\"item.component\"\n [detail-component-inputs]=\"item['component-inputs']\" [ngClass]=\"item.class\">\n </o-card-menu-item>\n </ng-container>\n <ng-content select=\"o-card-menu-item\"></ng-content>\n</div>\n", styles: [".o-menu-layout{position:relative;width:100%}.o-menu-layout .scrolling{width:100%;min-width:100%;min-height:100%;overflow-y:auto}.o-menu-layout .o-card-menu-item{height:45%;margin-bottom:12px;max-width:300px;min-width:300px}.o-menu-layout .o-card-menu-item.compact{height:30%;max-height:250px}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.OCardMenuItemComponent, selector: "o-card-menu-item", inputs: ["title", "image", "icon", "tooltip", "button-text", "disabled-button", "main-container-layout", "secondary-container-layout", "route", "detail-component", "detail-component-inputs", "action"] }, { kind: "directive", type: i3.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i3.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { kind: "directive", type: i3.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i4.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
82
|
+
OCardMenuLayoutComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: OCardMenuLayoutComponent, selector: "o-card-menu-layout", inputs: { parentMenuId: ["parent-menu-id", "parentMenuId"], excludeMenusId: ["exclude-menus-id", "excludeMenusId"] }, host: { properties: { "class.o-menu-layout": "true" } }, ngImport: i0, template: "<div fxLayout=\"row wrap\" class=\"scrolling\" fxLayout.lt-md=\"column\" fxLayoutAlign=\"space-around center\" fxLayoutGap=\"8px\">\n <ng-container *ngFor=\"let item of cardItems\">\n <o-card-menu-item *ngIf=\"item['show-in-card-menu'] !== false\" button-text=\"CARD_MENU_LAYOUT.BUTTON_TEXT\" [route]=\"item.route\" [title]=\"item.name\"\n [tooltip]=\"item.tooltip\" [icon]=\"item.icon\" [image]=\"item.image\" [detail-component]=\"item.component\"\n [detail-component-inputs]=\"item['component-inputs']\" [ngClass]=\"item.class\">\n </o-card-menu-item>\n </ng-container>\n <ng-content select=\"o-card-menu-item\"></ng-content>\n</div>\n", styles: [".o-menu-layout{position:relative;width:100%}.o-menu-layout .scrolling{width:100%;min-width:100%;min-height:100%;overflow-y:auto}.o-menu-layout .o-card-menu-item{height:45%;margin-bottom:12px;max-width:300px;min-width:300px}.o-menu-layout .o-card-menu-item.compact{height:30%;max-height:250px}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.OCardMenuItemComponent, selector: "o-card-menu-item", inputs: ["title", "image", "icon", "tooltip", "button-text", "disabled-button", "main-container-layout", "secondary-container-layout", "route", "detail-component", "detail-component-inputs", "action"] }, { kind: "directive", type: i3.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i3.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { kind: "directive", type: i3.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i4.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
67
83
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OCardMenuLayoutComponent, decorators: [{
|
|
68
84
|
type: Component,
|
|
69
85
|
args: [{ selector: 'o-card-menu-layout', inputs: DEFAULT_INPUTS_O_MENU_LAYOUT, outputs: DEFAULT_OUTPUTS_O_MENU_LAYOUT, encapsulation: ViewEncapsulation.None, host: {
|
|
70
86
|
'[class.o-menu-layout]': 'true'
|
|
71
87
|
}, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div fxLayout=\"row wrap\" class=\"scrolling\" fxLayout.lt-md=\"column\" fxLayoutAlign=\"space-around center\" fxLayoutGap=\"8px\">\n <ng-container *ngFor=\"let item of cardItems\">\n <o-card-menu-item *ngIf=\"item['show-in-card-menu'] !== false\" button-text=\"CARD_MENU_LAYOUT.BUTTON_TEXT\" [route]=\"item.route\" [title]=\"item.name\"\n [tooltip]=\"item.tooltip\" [icon]=\"item.icon\" [image]=\"item.image\" [detail-component]=\"item.component\"\n [detail-component-inputs]=\"item['component-inputs']\" [ngClass]=\"item.class\">\n </o-card-menu-item>\n </ng-container>\n <ng-content select=\"o-card-menu-item\"></ng-content>\n</div>\n", styles: [".o-menu-layout{position:relative;width:100%}.o-menu-layout .scrolling{width:100%;min-width:100%;min-height:100%;overflow-y:auto}.o-menu-layout .o-card-menu-item{height:45%;margin-bottom:12px;max-width:300px;min-width:300px}.o-menu-layout .o-card-menu-item.compact{height:30%;max-height:250px}\n"] }]
|
|
72
88
|
}], ctorParameters: function () { return [{ type: i0.Injector }, { type: i0.ChangeDetectorRef }]; } });
|
|
73
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby1jYXJkLW1lbnUtbGF5b3V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9sYXlvdXRzL2NhcmQtbWVudS1sYXlvdXQvby1jYXJkLW1lbnUtbGF5b3V0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9sYXlvdXRzL2NhcmQtbWVudS1sYXlvdXQvby1jYXJkLW1lbnUtbGF5b3V0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxRQUFRLEVBRVIsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBSXZCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNqRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQzs7Ozs7O0FBR2pGLE1BQU0sQ0FBQyxNQUFNLDRCQUE0QixHQUFHO0lBQzFDLCtCQUErQjtDQUNoQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sNkJBQTZCLEdBQUcsRUFDNUMsQ0FBQztBQWNGLE1BQU0sT0FBTyx3QkFBd0I7SUFTbkMsWUFDVSxRQUFrQixFQUNsQixFQUFxQjtRQURyQixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2xCLE9BQUUsR0FBRixFQUFFLENBQW1CO1FBRTdCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQzdELElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDeEQsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBRXBELElBQUksQ0FBQyw0QkFBNEIsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUN6RixJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQzFCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLGVBQWU7UUFDcEIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxJQUFJLENBQUMsNEJBQTRCLEVBQUU7WUFDckMsSUFBSSxDQUFDLDRCQUE0QixDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ2pEO0lBQ0gsQ0FBQztJQUVNLGdCQUFnQjtRQUNyQixJQUFJLFlBQVksR0FBRyxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDdEIsWUFBWSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1NBQ3RGO2FBQU07WUFDTCxZQUFZLEdBQUcsSUFBSSxDQUFDLDBCQUEwQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUNoRTtRQUVELElBQUksQ0FBQyxTQUFTLEdBQUcsWUFBWSxDQUFDO0lBQ2hDLENBQUM7SUFFRCxJQUFJLFNBQVM7UUFDWCxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUM7SUFDN0IsQ0FBQztJQUVELElBQUksU0FBUyxDQUFDLEdBQW1CO1FBQy9CLElBQUksQ0FBQyxjQUFjLEdBQUcsR0FBRyxDQUFDO1FBQzFCLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVTLDBCQUEwQixDQUFDLEtBQXFCO1FBQ3hELElBQUksTUFBc0IsQ0FBQztRQUMzQixNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUUzRSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ2pELE1BQU0sU0FBUyxHQUFJLE1BQU0sQ0FBQyxDQUFDLENBQWUsQ0FBQztZQUMzQyxJQUFJLFNBQVMsQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLFlBQVksRUFBRTtnQkFDdEMsTUFBTSxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUM7Z0JBQ3pCLE1BQU07YUFDUDtpQkFBTTtnQkFDTCxNQUFNLEdBQUcsSUFBSSxDQUFDLDBCQUEwQixDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUMzRDtTQUNGO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQzs7c0hBbEVVLHdCQUF3QjswR0FBeEIsd0JBQXdCLGlMQ25DckMsa3BCQVNBOzRGRDBCYSx3QkFBd0I7a0JBWnBDLFNBQVM7K0JBQ0Usb0JBQW9CLFVBR3RCLDRCQUE0QixXQUMzQiw2QkFBNkIsaUJBQ3ZCLGlCQUFpQixDQUFDLElBQUksUUFDL0I7d0JBQ0osdUJBQXVCLEVBQUUsTUFBTTtxQkFDaEMsbUJBQ2dCLHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgSW5qZWN0b3IsXG4gIE9uRGVzdHJveSxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IE1lbnVHcm91cCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvYXBwLW1lbnUuaW50ZXJmYWNlJztcbmltcG9ydCB7IEFwcE1lbnVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYXBwLW1lbnUuc2VydmljZSc7XG5pbXBvcnQgeyBPVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RyYW5zbGF0ZS9vLXRyYW5zbGF0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IE1lbnVSb290SXRlbSB9IGZyb20gJy4uLy4uL3R5cGVzL21lbnUtcm9vdC1pdGVtLnR5cGUnO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9JTlBVVFNfT19NRU5VX0xBWU9VVCA9IFtcbiAgJ3BhcmVudE1lbnVJZCA6IHBhcmVudC1tZW51LWlkJ1xuXTtcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfT1VUUFVUU19PX01FTlVfTEFZT1VUID0gW1xuXTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnby1jYXJkLW1lbnUtbGF5b3V0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL28tY2FyZC1tZW51LWxheW91dC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL28tY2FyZC1tZW51LWxheW91dC5jb21wb25lbnQuc2NzcyddLFxuICBpbnB1dHM6IERFRkFVTFRfSU5QVVRTX09fTUVOVV9MQVlPVVQsXG4gIG91dHB1dHM6IERFRkFVTFRfT1VUUFVUU19PX01FTlVfTEFZT1VULFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBob3N0OiB7XG4gICAgJ1tjbGFzcy5vLW1lbnUtbGF5b3V0XSc6ICd0cnVlJ1xuICB9LFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBPQ2FyZE1lbnVMYXlvdXRDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuXG4gIHByb3RlY3RlZCB0cmFuc2xhdGVTZXJ2aWNlOiBPVHJhbnNsYXRlU2VydmljZTtcbiAgcHJvdGVjdGVkIHRyYW5zbGF0ZVNlcnZpY2VTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgcHJvdGVjdGVkIGFwcE1lbnVTZXJ2aWNlOiBBcHBNZW51U2VydmljZTtcbiAgcHJvdGVjdGVkIG1lbnVSb290czogTWVudVJvb3RJdGVtW107XG4gIHByb3RlY3RlZCBjYXJkSXRlbXNBcnJheTogTWVudVJvb3RJdGVtW107XG4gIHByb3RlY3RlZCBwYXJlbnRNZW51SWQ6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZlxuICApIHtcbiAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UgPSB0aGlzLmluamVjdG9yLmdldChPVHJhbnNsYXRlU2VydmljZSk7XG4gICAgdGhpcy5hcHBNZW51U2VydmljZSA9IHRoaXMuaW5qZWN0b3IuZ2V0KEFwcE1lbnVTZXJ2aWNlKTtcbiAgICB0aGlzLm1lbnVSb290cyA9IHRoaXMuYXBwTWVudVNlcnZpY2UuZ2V0TWVudVJvb3RzKCk7XG5cbiAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2VTdWJzY3JpcHRpb24gPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2Uub25MYW5ndWFnZUNoYW5nZWQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNldENhcmRNZW51SXRlbXMoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy50cmFuc2xhdGVTZXJ2aWNlU3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2VTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2V0Q2FyZE1lbnVJdGVtcygpOiB2b2lkIHtcbiAgICBsZXQgY2FyZEl0ZW1zQXV4ID0gW107XG4gICAgaWYgKCF0aGlzLnBhcmVudE1lbnVJZCkge1xuICAgICAgY2FyZEl0ZW1zQXV4ID0gdGhpcy5tZW51Um9vdHMuZmlsdGVyKGl0ZW0gPT4gIXRoaXMuYXBwTWVudVNlcnZpY2UuaXNNZW51R3JvdXAoaXRlbSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjYXJkSXRlbXNBdXggPSB0aGlzLmdldEl0ZW1zRmlsdGVyZWRCeVBhcmVudElkKHRoaXMubWVudVJvb3RzKTtcbiAgICB9XG5cbiAgICB0aGlzLmNhcmRJdGVtcyA9IGNhcmRJdGVtc0F1eDtcbiAgfVxuXG4gIGdldCBjYXJkSXRlbXMoKTogTWVudVJvb3RJdGVtW10ge1xuICAgIHJldHVybiB0aGlzLmNhcmRJdGVtc0FycmF5O1xuICB9XG5cbiAgc2V0IGNhcmRJdGVtcyh2YWw6IE1lbnVSb290SXRlbVtdKSB7XG4gICAgdGhpcy5jYXJkSXRlbXNBcnJheSA9IHZhbDtcbiAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRJdGVtc0ZpbHRlcmVkQnlQYXJlbnRJZChhcnJheTogTWVudVJvb3RJdGVtW10pOiBNZW51Um9vdEl0ZW1bXSB7XG4gICAgbGV0IHJlc3VsdDogTWVudVJvb3RJdGVtW107XG4gICAgY29uc3QgZ3JvdXBzID0gYXJyYXkuZmlsdGVyKGl0ZW0gPT4gdGhpcy5hcHBNZW51U2VydmljZS5pc01lbnVHcm91cChpdGVtKSk7XG5cbiAgICBmb3IgKGxldCBpID0gMCwgbGVuID0gZ3JvdXBzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICBjb25zdCBtZW51R3JvdXAgPSAoZ3JvdXBzW2ldIGFzIE1lbnVHcm91cCk7XG4gICAgICBpZiAobWVudUdyb3VwLmlkID09PSB0aGlzLnBhcmVudE1lbnVJZCkge1xuICAgICAgICByZXN1bHQgPSBtZW51R3JvdXAuaXRlbXM7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzdWx0ID0gdGhpcy5nZXRJdGVtc0ZpbHRlcmVkQnlQYXJlbnRJZChtZW51R3JvdXAuaXRlbXMpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbn1cbiIsIjxkaXYgZnhMYXlvdXQ9XCJyb3cgd3JhcFwiIGNsYXNzPVwic2Nyb2xsaW5nXCIgZnhMYXlvdXQubHQtbWQ9XCJjb2x1bW5cIiBmeExheW91dEFsaWduPVwic3BhY2UtYXJvdW5kIGNlbnRlclwiIGZ4TGF5b3V0R2FwPVwiOHB4XCI+XG4gIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgY2FyZEl0ZW1zXCI+XG4gICAgPG8tY2FyZC1tZW51LWl0ZW0gKm5nSWY9XCJpdGVtWydzaG93LWluLWNhcmQtbWVudSddICE9PSBmYWxzZVwiIGJ1dHRvbi10ZXh0PVwiQ0FSRF9NRU5VX0xBWU9VVC5CVVRUT05fVEVYVFwiIFtyb3V0ZV09XCJpdGVtLnJvdXRlXCIgW3RpdGxlXT1cIml0ZW0ubmFtZVwiXG4gICAgICBbdG9vbHRpcF09XCJpdGVtLnRvb2x0aXBcIiBbaWNvbl09XCJpdGVtLmljb25cIiBbaW1hZ2VdPVwiaXRlbS5pbWFnZVwiIFtkZXRhaWwtY29tcG9uZW50XT1cIml0ZW0uY29tcG9uZW50XCJcbiAgICAgIFtkZXRhaWwtY29tcG9uZW50LWlucHV0c109XCJpdGVtWydjb21wb25lbnQtaW5wdXRzJ11cIiBbbmdDbGFzc109XCJpdGVtLmNsYXNzXCI+XG4gICAgPC9vLWNhcmQtbWVudS1pdGVtPlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiby1jYXJkLW1lbnUtaXRlbVwiPjwvbmctY29udGVudD5cbjwvZGl2PlxuIl19
|
|
89
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby1jYXJkLW1lbnUtbGF5b3V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9sYXlvdXRzL2NhcmQtbWVudS1sYXlvdXQvby1jYXJkLW1lbnUtbGF5b3V0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9sYXlvdXRzL2NhcmQtbWVudS1sYXlvdXQvby1jYXJkLW1lbnUtbGF5b3V0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxRQUFRLEVBR1IsaUJBQWlCLEVBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBSXZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNqRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQzs7Ozs7O0FBSWpGLE1BQU0sQ0FBQyxNQUFNLDRCQUE0QixHQUFHO0lBQzFDLCtCQUErQjtJQUMvQixtQ0FBbUM7Q0FDcEMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLDZCQUE2QixHQUFHLEVBQzVDLENBQUM7QUFjRixNQUFNLE9BQU8sd0JBQXdCO0lBZ0JuQyxZQUNVLFFBQWtCLEVBQ2xCLEVBQXFCO1FBRHJCLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDbEIsT0FBRSxHQUFGLEVBQUUsQ0FBbUI7UUFFN0IsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDN0QsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxj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QUFDLEVBQUU7d0JBQzdCLElBQUksTUFBTSxHQUFHLFdBQVcsRUFBRSxPQUFPLEtBQUssS0FBSyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQzt3QkFFakYsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUM7b0JBQ3RDLENBQUMsQ0FBQyxDQUFDO29CQUNILE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDeEMsTUFBTTtpQkFDUDtxQkFBTTtvQkFDTCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsMEJBQTBCLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7b0JBQ3JGLElBQUksV0FBVyxDQUFDLE1BQU0sRUFBRTt3QkFDdEIsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7d0JBQ3BDLE1BQU07cUJBQ1A7aUJBQ0Y7YUFDRjtRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQzs7c0hBM0ZVLHdCQUF3QjswR0FBeEIsd0JBQXdCLHlPQ3ZDckMsa3BCQVNBOzRGRDhCYSx3QkFBd0I7a0JBWnBDLFNBQVM7K0JBQ0Usb0JBQW9CLFVBR3RCLDRCQUE0QixXQUMzQiw2QkFBNkIsaUJBQ3ZCLGlCQUFpQixDQUFDLElBQUksUUFDL0I7d0JBQ0osdUJBQXVCLEVBQUUsTUFBTTtxQkFDaEMsbUJBQ2dCLHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgSW5qZWN0b3IsXG4gIE9uRGVzdHJveSxcbiAgVHlwZSxcbiAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgTWVudUdyb3VwIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9hcHAtbWVudS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUGVybWlzc2lvbnNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHsgQXBwTWVudVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9hcHAtbWVudS5zZXJ2aWNlJztcbmltcG9ydCB7IE9UcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdHJhbnNsYXRlL28tdHJhbnNsYXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgT1Blcm1pc3Npb25zIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgTWVudVJvb3RJdGVtIH0gZnJvbSAnLi4vLi4vdHlwZXMvbWVudS1yb290LWl0ZW0udHlwZSc7XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0lOUFVUU19PX01FTlVfTEFZT1VUID0gW1xuICAncGFyZW50TWVudUlkIDogcGFyZW50LW1lbnUtaWQnLFxuICAnZXhjbHVkZU1lbnVzSWQgOiBleGNsdWRlLW1lbnVzLWlkJ1xuXTtcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfT1VUUFVUU19PX01FTlVfTEFZT1VUID0gW1xuXTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnby1jYXJkLW1lbnUtbGF5b3V0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL28tY2FyZC1tZW51LWxheW91dC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL28tY2FyZC1tZW51LWxheW91dC5jb21wb25lbnQuc2NzcyddLFxuICBpbnB1dHM6IERFRkFVTFRfSU5QVVRTX09fTUVOVV9MQVlPVVQsXG4gIG91dHB1dHM6IERFRkFVTFRfT1VUUFVUU19PX01FTlVfTEFZT1VULFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBob3N0OiB7XG4gICAgJ1tjbGFzcy5vLW1lbnUtbGF5b3V0XSc6ICd0cnVlJ1xuICB9LFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBPQ2FyZE1lbnVMYXlvdXRDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuXG4gIHByb3RlY3RlZCB0cmFuc2xhdGVTZXJ2aWNlOiBPVHJhbnNsYXRlU2VydmljZTtcbiAgcHJvdGVjdGVkIHRyYW5zbGF0ZVNlcnZpY2VTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgcHJvdGVjdGVkIGFwcE1lbnVTZXJ2aWNlOiBBcHBNZW51U2VydmljZTtcbiAgcHJvdGVjdGVkIG1lbnVSb290czogTWVudVJvb3RJdGVtW107XG4gIHByb3RlY3RlZCBjYXJkSXRlbXNBcnJheTogTWVudVJvb3RJdGVtW107XG4gIHByb3RlY3RlZCBwYXJlbnRNZW51SWQ6IHN0cmluZztcbiAgcHJvdGVjdGVkIGV4Y2x1ZGVNZW51c0lkOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBwZXJtaXNzaW9uczogT1Blcm1pc3Npb25zO1xuICBwcm90ZWN0ZWQgcGVybWlzc2lvbnNTZXJ2aWNlOiBQZXJtaXNzaW9uc1NlcnZpY2U7XG4gIHByb3RlY3RlZCBwYXJlbnRNZW51SWRzOiBzdHJpbmdbXTtcbiAgcHJvdGVjdGVkIGV4Y2x1ZGVJZHM6IHN0cmluZ1tdO1xuXG4gIGhpZGRlbjogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZlxuICApIHtcbiAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UgPSB0aGlzLmluamVjdG9yLmdldChPVHJhbnNsYXRlU2VydmljZSk7XG4gICAgdGhpcy5hcHBNZW51U2VydmljZSA9IHRoaXMuaW5qZWN0b3IuZ2V0KEFwcE1lbnVTZXJ2aWNlKTtcbiAgICB0aGlzLm1lbnVSb290cyA9IHRoaXMuYXBwTWVudVNlcnZpY2UuZ2V0TWVudVJvb3RzKCk7XG4gICAgdGhpcy5wZXJtaXNzaW9uc1NlcnZpY2UgPSB0aGlzLmluamVjdG9yLmdldDxQZXJtaXNzaW9uc1NlcnZpY2U+KFBlcm1pc3Npb25zU2VydmljZSBhcyBUeXBlPFBlcm1pc3Npb25zU2VydmljZT4pO1xuXG4gICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlU3Vic2NyaXB0aW9uID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLm9uTGFuZ3VhZ2VDaGFuZ2VkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zZXRDYXJkTWVudUl0ZW1zKCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMudHJhbnNsYXRlU2VydmljZVN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldENhcmRNZW51SXRlbXMoKTogdm9pZCB7XG4gICAgbGV0IGNhcmRJdGVtc0F1eCA9IFtdO1xuICAgIGlmICghdGhpcy5wYXJlbnRNZW51SWQpIHtcbiAgICAgIGNhcmRJdGVtc0F1eCA9IHRoaXMubWVudVJvb3RzLmZpbHRlcihpdGVtID0+ICF0aGlzLmFwcE1lbnVTZXJ2aWNlLmlzTWVudUdyb3VwKGl0ZW0pKTtcbiAgICB9IGVsc2Uge1xuXG4gICAgICB0aGlzLnBhcmVudE1lbnVJZHMgPSAodGhpcy5wYXJlbnRNZW51SWQgfHwgJycpLnNwbGl0KCc7JykubWFwKGlkID0+IGlkLnRyaW0oKSk7XG4gICAgICB0aGlzLmV4Y2x1ZGVJZHMgPSAodGhpcy5leGNsdWRlTWVudXNJZCB8fCAnJykuc3BsaXQoJzsnKS5tYXAoaWQgPT4gaWQudHJpbSgpKTtcblxuICAgICAgY2FyZEl0ZW1zQXV4ID0gdGhpcy5nZXRJdGVtc0ZpbHRlcmVkQnlQYXJlbnRJZCh0aGlzLm1lbnVSb290cywgdGhpcy5wYXJlbnRNZW51SWRzKTtcbiAgICB9XG5cbiAgICB0aGlzLmNhcmRJdGVtcyA9IGNhcmRJdGVtc0F1eDtcbiAgfVxuXG4gIGdldCBjYXJkSXRlbXMoKTogTWVudVJvb3RJdGVtW10ge1xuICAgIHJldHVybiB0aGlzLmNhcmRJdGVtc0FycmF5O1xuICB9XG5cbiAgc2V0IGNhcmRJdGVtcyh2YWw6IE1lbnVSb290SXRlbVtdKSB7XG4gICAgdGhpcy5jYXJkSXRlbXNBcnJheSA9IHZhbDtcbiAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRJdGVtc0ZpbHRlcmVkQnlQYXJlbnRJZChhcnJheTogTWVudVJvb3RJdGVtW10sIHBhcmVudE1lbnVJZHM6IHN0cmluZ1tdKTogTWVudVJvb3RJdGVtW10ge1xuICAgIGxldCByZXN1bHQ6IE1lbnVSb290SXRlbVtdID0gW107XG4gICAgY29uc3QgZ3JvdXBzID0gYXJyYXkuZmlsdGVyKGl0ZW0gPT4gdGhpcy5hcHBNZW51U2VydmljZS5pc01lbnVHcm91cChpdGVtKSk7XG5cbiAgICBwYXJlbnRNZW51SWRzLmZvckVhY2gocGFyZW50TWVudUlkID0+IHtcbiAgICAgIGZvciAobGV0IGkgPSAwLCBsZW4gPSBncm91cHMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgY29uc3QgbWVudUdyb3VwID0gZ3JvdXBzW2ldIGFzIE1lbnVHcm91cDtcbiAgICAgICAgaWYgKG1lbnVHcm91cC5pZCA9PT0gcGFyZW50TWVudUlkKSB7XG4gICAgICAgICAgbGV0IHBlcm1pc3Npb25zID0gdGhpcy5wZXJtaXNzaW9uc1NlcnZpY2UuZ2V0TWVudVBlcm1pc3Npb25zKHBhcmVudE1lbnVJZCk7XG4gICAgICAgICAgbWVudUdyb3VwLml0ZW1zLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICBsZXQgaGlkZGVuID0gcGVybWlzc2lvbnM/LnZpc2libGUgPT09IGZhbHNlIHx8IHRoaXMuZXhjbHVkZUlkcy5pbmNsdWRlcyhpdGVtLmlkKTtcblxuICAgICAgICAgICAgaXRlbVsnc2hvdy1pbi1jYXJkLW1lbnUnXSA9ICFoaWRkZW47XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LmNvbmNhdChtZW51R3JvdXAuaXRlbXMpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IGNoaWxkUmVzdWx0ID0gdGhpcy5nZXRJdGVtc0ZpbHRlcmVkQnlQYXJlbnRJZChtZW51R3JvdXAuaXRlbXMsIFtwYXJlbnRNZW51SWRdKTtcbiAgICAgICAgICBpZiAoY2hpbGRSZXN1bHQubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXN1bHQgPSByZXN1bHQuY29uY2F0KGNoaWxkUmVzdWx0KTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG5cbn1cbiIsIjxkaXYgZnhMYXlvdXQ9XCJyb3cgd3JhcFwiIGNsYXNzPVwic2Nyb2xsaW5nXCIgZnhMYXlvdXQubHQtbWQ9XCJjb2x1bW5cIiBmeExheW91dEFsaWduPVwic3BhY2UtYXJvdW5kIGNlbnRlclwiIGZ4TGF5b3V0R2FwPVwiOHB4XCI+XG4gIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgY2FyZEl0ZW1zXCI+XG4gICAgPG8tY2FyZC1tZW51LWl0ZW0gKm5nSWY9XCJpdGVtWydzaG93LWluLWNhcmQtbWVudSddICE9PSBmYWxzZVwiIGJ1dHRvbi10ZXh0PVwiQ0FSRF9NRU5VX0xBWU9VVC5CVVRUT05fVEVYVFwiIFtyb3V0ZV09XCJpdGVtLnJvdXRlXCIgW3RpdGxlXT1cIml0ZW0ubmFtZVwiXG4gICAgICBbdG9vbHRpcF09XCJpdGVtLnRvb2x0aXBcIiBbaWNvbl09XCJpdGVtLmljb25cIiBbaW1hZ2VdPVwiaXRlbS5pbWFnZVwiIFtkZXRhaWwtY29tcG9uZW50XT1cIml0ZW0uY29tcG9uZW50XCJcbiAgICAgIFtkZXRhaWwtY29tcG9uZW50LWlucHV0c109XCJpdGVtWydjb21wb25lbnQtaW5wdXRzJ11cIiBbbmdDbGFzc109XCJpdGVtLmNsYXNzXCI+XG4gICAgPC9vLWNhcmQtbWVudS1pdGVtPlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiby1jYXJkLW1lbnUtaXRlbVwiPjwvbmctY29udGVudD5cbjwvZGl2PlxuIl19
|
|
@@ -11,6 +11,7 @@ import { OFormLayoutManagerService } from '../../services/o-form-layout-manager.
|
|
|
11
11
|
import { AbstractComponentStateService } from '../../services/state/o-component-state.service';
|
|
12
12
|
import { OFormLayoutManagerComponentStateService } from '../../services/state/o-form-layout-manager-component-state.service';
|
|
13
13
|
import { OTranslateService } from '../../services/translate/o-translate.service';
|
|
14
|
+
import { O_GLOBAL_CONFIG } from '../../types/o-global-config.type';
|
|
14
15
|
import { Codes } from '../../util/codes';
|
|
15
16
|
import { Util } from '../../util/util';
|
|
16
17
|
import { OFormLayoutDialogComponent } from './dialog/o-form-layout-dialog.component';
|
|
@@ -146,6 +147,21 @@ export class OFormLayoutManagerComponent {
|
|
|
146
147
|
this.updateStateStorage();
|
|
147
148
|
}));
|
|
148
149
|
}
|
|
150
|
+
this.getInjectionTokenConfig();
|
|
151
|
+
}
|
|
152
|
+
getInjectionTokenConfig() {
|
|
153
|
+
try {
|
|
154
|
+
const oGlobalConfig = this.injector.get(O_GLOBAL_CONFIG);
|
|
155
|
+
if (Util.isDefined(oGlobalConfig.storeState)) {
|
|
156
|
+
this.storeState = oGlobalConfig.storeState;
|
|
157
|
+
if (!this.storeState) {
|
|
158
|
+
this.subscription.unsubscribe();
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
;
|
|
162
|
+
}
|
|
163
|
+
catch (error) {
|
|
164
|
+
}
|
|
149
165
|
}
|
|
150
166
|
get state() {
|
|
151
167
|
return this.componentStateService.state;
|
|
@@ -523,4 +539,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
523
539
|
type: HostListener,
|
|
524
540
|
args: ['window:beforeunload', []]
|
|
525
541
|
}] } });
|
|
526
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby1mb3JtLWxheW91dC1tYW5hZ2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9sYXlvdXRzL2Zvcm0tbGF5b3V0L28tZm9ybS1sYXlvdXQtbWFuYWdlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvbGF5b3V0cy9mb3JtLWxheW91dC9vLWZvcm0tbGF5b3V0LW1hbmFnZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFFTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixZQUFZLEVBQ1osUUFBUSxFQUdSLFFBQVEsRUFDUixRQUFRLEVBRVIsU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQWlDLE1BQU0sMEJBQTBCLENBQUM7QUFDcEYsT0FBTyxFQUFFLGNBQWMsRUFBaUMsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDeEYsT0FBTyxFQUFjLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVoRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUl6RSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNwRyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN0RSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUN6RixPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUUvRixPQUFPLEVBQUUsdUNBQXVDLEVBQUUsTUFBTSxvRUFBb0UsQ0FBQztB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QUFHLFFBQVEsQ0FBQztBQUN2QixvQ0FBUSxHQUFHLEtBQUssQ0FBQztBQUNqQiwyQ0FBZSxHQUFHLFlBQVksQ0FBQzt5SEFSL0IsMkJBQTJCOzZHQUEzQiwyQkFBMkIsMCtCQVI5QjtRQUNULDZCQUE2QjtRQUM3QixFQUFFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxRQUFRLEVBQUUsdUNBQXVDLEVBQUU7UUFDekYsRUFBRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsV0FBVyxFQUFFLDJCQUEyQixFQUFFO0tBQzlFLDJOQ2hGSCx5aENBdUJjO0FEeUdaO0lBQUMscUJBQXFCLEVBQUU7OytEQUNVOzRGQTdDcEIsMkJBQTJCO2tCQWQxQyxTQUFTOytCQUNFLHVCQUF1QixVQUN6QixvQ0FBb0MsV0FDbkMscUNBQXFDLGFBR25DO3dCQUNULDZCQUE2Qjt3QkFDN0IsRUFBRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsUUFBUSxFQUFFLHVDQUF1QyxFQUFFO3dCQUN6RixFQUFFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxXQUFXLDZCQUE2QixFQUFFO3FCQUM5RSxRQUNLO3dCQUNKLCtCQUErQixFQUFFLE1BQU07cUJBQ3hDOzswQkF3S0UsUUFBUTs7MEJBQUksUUFBUTs0Q0ExSGhCLFVBQVUsTUFvQlYsU0FBUztzQkFEZixTQUFTO3VCQUFDLFVBQVU7Z0JBSWQsVUFBVTtzQkFEaEIsU0FBUzt1QkFBQyxXQUFXO2dCQTJLZixtQkFBbUI7c0JBRHpCLFlBQVk7dUJBQUMscUJBQXFCLEVBQUUsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0TGlzdGVuZXIsXG4gIEluamVjdG9yLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIFNraXBTZWxmLFxuICBUeXBlLFxuICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXREaWFsb2csIE1hdERpYWxvZ0NvbmZpZywgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBCb29sZWFuSW5wdXRDb252ZXJ0ZXIgfSBmcm9tICcuLi8uLi9kZWNvcmF0b3JzL2lucHV0LWNvbnZlcnRlcic7XG5pbXBvcnQgeyBJTGF5b3V0TWFuYWdlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvbGF5b3V0LW1hbmFnZXItY29tcG9uZW50LmludGVyZmFjZSc7XG5pbXBvcnQgeyBJTG9jYWxTdG9yYWdlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9sb2NhbC1zdG9yYWdlLWNvbXBvbmVudC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgT0Zvcm1MYXlvdXRNYW5hZ2VyTW9kZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvby1mb3JtLWxheW91dC1tYW5hZ2VyLW1vZGUuaW50ZXJmYWNlJztcbmltcG9ydCB7IENvbXBvbmVudFN0YXRlU2VydmljZVByb3ZpZGVyLCBPX0NPTVBPTkVOVF9TVEFURV9TRVJWSUNFIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZmFjdG9yaWVzJztcbmltcG9ydCB7IExvY2FsU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9sb2NhbC1zdG9yYWdlLnNlcnZpY2UnO1xuaW1wb3J0IHsgTmF2aWdhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9uYXZpZ2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgT0Zvcm1MYXlvdXRNYW5hZ2VyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL28tZm9ybS1sYXlvdXQtbWFuYWdlci5zZXJ2aWNlJztcbmltcG9ydCB7IEFic3RyYWN0Q29tcG9uZW50U3RhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvc3RhdGUvby1jb21wb25lbnQtc3RhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBPRm9ybUxheW91dE1hbmFnZXJDb21wb25lbnRTdGF0ZUNsYXNzIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvc3RhdGUvby1mb3JtLWxheW91dC1tYW5hZ2VyLWNvbXBvbmVudC1zdGF0ZS5jbGFzcyc7XG5pbXBvcnQgeyBPRm9ybUxheW91dE1hbmFnZXJDb21wb25lbnRTdGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9zdGF0ZS9vLWZvcm0tbGF5b3V0LW1hbmFnZXItY29tcG9uZW50LXN0YXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgT1RyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90cmFuc2xhdGUvby10cmFuc2xhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBGb3JtTGF5b3V0Q2xvc2VEZXRhaWxPcHRpb25zLCBGb3JtTGF5b3V0RGV0YWlsQ29tcG9uZW50RGF0YSB9IGZyb20gJy4uLy4uL3R5cGVzL2Zvcm0tbGF5b3V0LWRldGFpbC1jb21wb25lbnQtZGF0YS50eXBlJztcbmltcG9ydCB7IENvZGVzIH0gZnJvbSAnLi4vLi4vdXRpbC9jb2Rlcyc7XG5pbXBvcnQgeyBVdGlsIH0gZnJvbSAnLi4vLi4vdXRpbC91dGlsJztcbmltcG9ydCB7IE9Gb3JtTGF5b3V0RGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi9kaWFsb2cvby1mb3JtLWxheW91dC1kaWFsb2cuY29tcG9uZW50JztcbmltcG9ydCB7IENhbkFjdGl2YXRlRm9ybUxheW91dENoaWxkR3VhcmQgfSBmcm9tICcuL2d1YXJkcy9vLWZvcm0tbGF5b3V0LWNhbi1hY3RpdmF0ZS1jaGlsZC5ndWFyZCc7XG5pbXBvcnQgeyBPRm9ybUxheW91dE1hbmFnZXJCYXNlIH0gZnJvbSAnLi9vLWZvcm0tbGF5b3V0LW1hbmFnZXItYmFzZS5jbGFzcyc7XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0lOUFVUU19PX0ZPUk1fTEFZT1VUX01BTkFHRVIgPSBbXG4gICdvYXR0cjogYXR0cicsXG4gICdtb2RlJyxcbiAgJ3N0b3JlU3RhdGU6IHN0b3JlLXN0YXRlJyxcblxuICAvLyBDb21tb24gZm9yIGRpYWxvZyBhbmQgdGFiIG1vZGVcbiAgLy8gZGVwcmVjYXRlZCwgb25seSBtYW50YWluZWQgZm9yIGxlZ2FjeSByZWFzb25zXG4gICd0aXRsZScsXG4gICdsYWJlbENvbHVtbnM6IGxhYmVsLWNvbHVtbnMnLFxuICAnc2VwYXJhdG9yJyxcblxuICAvLyBhdHRyIG9mIHRoZSBjaGlsZCBmb3JtIGZyb20gd2hpY2ggdGhlIGRhdGEgZm9yIGJ1aWxkaW5nIHRoZSB0YWIgdGl0bGUgd2lsbCBiZSBvYnRhaW5lZCAob25seSBpbiB0YWIgbW9kZSlcbiAgLy8gZGVwcmVjYXRlZCwgb25seSBtYW50YWluZWQgZm9yIGxlZ2FjeSByZWFzb25zXG4gICd0aXRsZURhdGFPcmlnaW46IHRpdGxlLWRhdGEtb3JpZ2luJyxcblxuICAvLyBPbmx5IGRpYWxvZyBvcHRpb25zIGNvbmZpZ3VyYWJsZSBhcyBhbiBpbnB1dCBvZiB0aGUgby1mb3JtLWxheW91dC1tYW5hZ2VyICh1c2UgdGhlIG8tZm9ybS1sYXlvdXQtZGlhbG9nLW9wdGlvbnMgZGlyZWN0aXZlKVxuICAvLyBkZXByZWNhdGVkLCBvbmx5IG1hbnRhaW5lZCBmb3IgbGVnYWN5IHJlYXNvbnNcbiAgJ2RpYWxvZ1dpZHRoOiBkaWFsb2ctd2lkdGgnLFxuICAnZGlhbG9nTWluV2lkdGg6IGRpYWxvZy1taW4td2lkdGgnLFxuICAnZGlhbG9nTWF4V2lkdGg6IGRpYWxvZy1tYXgtd2lkdGgnLFxuICAnZGlhbG9nSGVpZ2h0OiBkaWFsb2ctaGVpZ2h0JyxcbiAgJ2RpYWxvZ01pbkhlaWdodDogZGlhbG9nLW1pbi1oZWlnaHQnLFxuICAnZGlhbG9nTWF4SGVpZ2h0IGRpYWxvZy1tYXgtaGVpZ2h0JyxcbiAgJ2RpYWxvZ0NsYXNzOiBkaWFsb2ctY2xhc3MnLFxuICAnZGlhbG9nVGl0bGVTZXBhcmF0b3I6IGRpYWxvZy10aXRsZS1zZXBhcmF0b3InXG5dO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9PVVRQVVRTX09fRk9STV9MQVlPVVRfTUFOQUdFUiA9IFtcbiAgJ29uTWFpblRhYlNlbGVjdGVkJyxcbiAgJ29uU2VsZWN0ZWRUYWJDaGFuZ2UnLFxuICAnb25DbG9zZVRhYidcbl07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ28tZm9ybS1sYXlvdXQtbWFuYWdlcicsXG4gIGlucHV0czogREVGQVVMVF9JTlBVVFNfT19GT1JNX0xBWU9VVF9NQU5BR0VSLFxuICBvdXRwdXRzOiBERUZBVUxUX09VVFBVVFNfT19GT1JNX0xBWU9VVF9NQU5BR0VSLFxuICB0ZW1wbGF0ZVVybDogJy4vby1mb3JtLWxheW91dC1tYW5hZ2VyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vby1mb3JtLWxheW91dC1tYW5hZ2VyLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1xuICAgIENvbXBvbmVudFN0YXRlU2VydmljZVByb3ZpZGVyLFxuICAgIHsgcHJvdmlkZTogT19DT01QT05FTlRfU1RBVEVfU0VSVklDRSwgdXNlQ2xhc3M6IE9Gb3JtTGF5b3V0TWFuYWdlckNvbXBvbmVudFN0YXRlU2VydmljZSB9LFxuICAgIHsgcHJvdmlkZTogT0Zvcm1MYXlvdXRNYW5hZ2VyQmFzZSwgdXNlRXhpc3Rpbmc6IE9Gb3JtTGF5b3V0TWFuYWdlckNvbXBvbmVudCB9XG4gIF0sXG4gIGhvc3Q6IHtcbiAgICAnW2NsYXNzLm8tZm9ybS1sYXlvdXQtbWFuYWdlcl0nOiAndHJ1ZSdcbiAgfVxufSkgZXhwb3J0IGNsYXNzIE9Gb3JtTGF5b3V0TWFuYWdlckNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uSW5pdCwgT25EZXN0cm95LCBJTG9jYWxTdG9yYWdlQ29tcG9uZW50IHtcblxuICAvLyBkZWNsYXJpbmcgdGhpcyBwcm9wZXJ0eSB0byBoYXZlIGFjY2VzIHRvIHN0YXRpYyBtZW1iZXJzIGluIHRoZSB0ZW1wbGF0ZVxuICBPRm9ybUxheW91dE1hbmFnZXJDb21wb25lbnQgPSBPRm9ybUxheW91dE1hbmFnZXJDb21wb25lbnQ7XG5cblxuICBwdWJsaWMgc3RhdGljIERJQUxPR19NT0RFID0gJ2RpYWxvZyc7XG4gIHB1YmxpYyBzdGF0aWMgVEFCX01PREUgPSAndGFiJztcbiAgcHVibGljIHN0YXRpYyBTUExJVF9QQU5FX01PREUgPSAnc3BsaXQtcGFuZSc7XG5cbiAgcHVibGljIG9hdHRyOiBzdHJpbmc7XG4gIHB1YmxpYyBfbW9kZTogc3RyaW5nID0gT0Zvcm1MYXlvdXRNYW5hZ2VyQ29tcG9uZW50LkRJQUxPR19NT0RFO1xuICBwdWJsaWMgc3RyZXRjaFRhYnMgPSBmYWxzZTtcblxuICBwdWJsaWMgZ2V0IG1vZGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fbW9kZTtcbiAgfVxuXG4gIHB1YmxpYyBzZXQgbW9kZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgY29uc3QgYXZhaWxhYmxlTW9kZVZhbHVlcyA9IFtPRm9ybUxheW91dE1hbmFnZXJDb21wb25lbnQuRElBTE9HX01PREUsIE9Gb3JtTGF5b3V0TWFuYWdlckNvbXBvbmVudC5UQUJfTU9ERSwgT0Zvcm1MYXlvdXRNYW5hZ2VyQ29tcG9uZW50LlNQTElUX1BBTkVfTU9ERV07XG4gICAgdGhpcy5fbW9kZSA9ICh2YWx1ZSB8fCAnJykudG9Mb3dlckNhc2UoKTtcbiAgICBpZiAoYXZhaWxhYmxlTW9kZVZhbHVlcy5pbmRleE9mKHRoaXMuX21vZGUpID09PSAtMSkge1xuICAgICAgdGhpcy5fbW9kZSA9IE9Gb3JtTGF5b3V0TWFuYWdlckNvbXBvbmVudC5ESUFMT0dfTU9ERTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgX3NlcGFyYXRvcjogc3RyaW5nID0gJyAnO1xuXG4gIC8qKlxuICAqIEBkZXByZWNhdGVkIHVzZXIgc2hvdWxkIHVzZSB0aGUgb3B0aW9ucyBpbnB1dFxuICAqL1xuICBzZXQgc2VwYXJhdG9yKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9zZXBhcmF0b3IgPSB2YWx1ZTtcbiAgfVxuXG4gIGdldCBzZXBhcmF0b3IoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fc2VwYXJhdG9yO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIHVzZXIgc2hvdWxkIHVzZSB0aGUgb3B0aW9ucyBpbnB1dFxuICAgKi9cbiAgcHVibGljIHRpdGxlOiBzdHJpbmc7XG5cbiAgQEJvb2xlYW5JbnB1dENvbnZlcnRlcigpXG4gIHB1YmxpYyBzdG9yZVN0YXRlOiBib29sZWFuID0gdHJ1ZTtcblxuICAvKipcbiAgKiBAZGVwcmVjYXRlZCB1c2VyIHNob3VsZCB1c2UgdGhlIG9wdGlvbnMgaW5wdXRcbiAgKi9cbiAgcHVibGljIHRpdGxlRGF0YU9yaWdpbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBUaGUgbmV4dCBpbnB1dHMgYXJlIGRlcHJlY2F0ZWQgYW5kIHVzZXIgc2hvdWxkIHVzZSB0aGUgT0Zvcm1MYXlvdXREaWFsb2dPcHRpb25zRGlyZWN0aXZlIGlucHV0c1xuICAgKi9cbiAgcHVibGljIGRpYWxvZ1dpZHRoOiBzdHJpbmc7XG4gIHB1YmxpYyBkaWFsb2dNaW5XaWR0aDogc3RyaW5nO1xuICBwdWJsaWMgZGlhbG9nTWF4V2lkdGg6IHN0cmluZztcbiAgcHVibGljIGRpYWxvZ0hlaWdodDogc3RyaW5nO1xuICBwdWJsaWMgZGlhbG9nTWluSGVpZ2h0OiBzdHJpbmc7XG4gIHB1YmxpYyBkaWFsb2dNYXhIZWlnaHQ6IHN0cmluZztcbiAgcHVibGljIGRpYWxvZ0NsYXNzOiBzdHJpbmcgPSAnJztcbiAgcHVibGljIGRpYWxvZ1RpdGxlU2VwYXJhdG9yID0gJzonO1xuXG4gIEBWaWV3Q2hpbGQoJ3RhYkdyb3VwJylcbiAgcHVibGljIG9UYWJHcm91cDogT0Zvcm1MYXlvdXRNYW5hZ2VyTW9kZTtcbiAgcHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPE9Gb3JtTGF5b3V0RGlhbG9nQ29tcG9uZW50PjtcbiAgQFZpZXdDaGlsZCgnc3BsaXRQYW5lJylcbiAgcHVibGljIG9TcGxpdFBhbmU6IE9Gb3JtTGF5b3V0TWFuYWdlck1vZGU7XG5cbiAgcHVibGljIG9uTWFpblRhYlNlbGVjdGVkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBwdWJsaWMgb25TZWxlY3RlZFRhYkNoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgcHVibGljIG9uQ2xvc2VUYWI6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgcHJvdGVjdGVkIF9sYWJlbENvbHVtbnM6IHN0cmluZztcblxuICBnZXQgbGFiZWxDb2x1bW5zKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2xhYmVsQ29sdW1ucztcbiAgfVxuXG4gIC8qKlxuICAqIEBkZXByZWNhdGVkIHVzZXIgc2hvdWxkIHVzZSB0aGUgb3B0aW9ucyBpbnB1dFxuICAqL1xuICBzZXQgbGFiZWxDb2x1bW5zKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9sYWJlbENvbHVtbnMgPSB2YWx1ZTtcbiAgICB0aGlzLl9sYWJlbENvbHNBcnJheSA9IFV0aWwucGFyc2VBcnJheSh2YWx1ZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgX2xhYmVsQ29sc0FycmF5OiBzdHJpbmdbXSA9IFtdO1xuXG4gIGdldCBsYWJlbENvbHNBcnJheSgpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMuX2xhYmVsQ29sc0FycmF5O1xuICB9XG5cbiAgc2V0IGxhYmVsQ29sc0FycmF5KHZhbHVlOiBzdHJpbmdbXSkge1xuICAgIHRoaXMuX2xhYmVsQ29sc0FycmF5ID0gdmFsdWU7XG4gIH1cblxuICBwcm90ZWN0ZWQgdHJhbnNsYXRlU2VydmljZTogT1RyYW5zbGF0ZVNlcnZpY2U7XG4gIHByb3RlY3RlZCBvRm9ybUxheW91dE1hbmFnZXJTZXJ2aWNlOiBPRm9ybUxheW91dE1hbmFnZXJTZXJ2aWNlO1xuICBwcm90ZWN0ZWQgbG9jYWxTdG9yYWdlU2VydmljZTogTG9jYWxTdG9yYWdlU2VydmljZTtcblxuICBwcm90ZWN0ZWQgX3RhYkdyb3VwT3B0aW9uczogYW55ID0ge307XG5cbiAgZ2V0IHRhYkdyb3VwT3B0aW9ucygpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLl90YWJHcm91cE9wdGlvbnM7XG4gIH1cblxuICBhZGRUYWJHcm91cE9wdGlvbnModmFsdWU6IGFueSkge1xuICAgIE9iamVjdC5hc3NpZ24odGhpcy5fdGFiR3JvdXBPcHRpb25zLCB2YWx1ZSk7XG4gICAgaWYgKHZhbHVlLmhhc093blByb3BlcnR5KCdsYWJlbENvbHVtbnMnKSkge1xuICAgICAgdGhpcy5sYWJlbENvbHNBcnJheSA9IFV0aWwucGFyc2VBcnJheSh2YWx1ZVsnbGFiZWxDb2x1bW5zJ10pO1xuICAgIH1cbiAgICBpZiAodmFsdWUuaGFzT3duUHJvcGVydHkoJ3NlcGFyYXRvcicpKSB7XG4gICAgICB0aGlzLnNlcGFyYXRvciA9IHZhbHVlWydzZXBhcmF0b3InXTtcbiAgICB9XG4gICAgaWYgKHZhbHVlLmhhc093blByb3BlcnR5KCdzdHJldGNoVGFicycpKSB7XG4gICAgICB0aGlzLnN0cmV0Y2hUYWJzID0gdmFsdWVbJ3N0cmV0Y2hUYWJzJ107XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIF9kaWFsb2dPcHRpb25zOiBhbnkgPSB7fTtcblxuICBnZXQgZGlhbG9nT3B0aW9ucygpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLl9kaWFsb2dPcHRpb25zO1xuICB9XG5cbiAgYWRkRGlhbG9nT3B0aW9ucyh2YWx1ZTogYW55KSB7XG4gICAgT2JqZWN0LmFzc2lnbih0aGlzLl9kaWFsb2dPcHRpb25zLCB2YWx1ZSk7XG4gICAgaWYgKHZhbHVlLmhhc093blByb3BlcnR5KCdsYWJlbENvbHVtbnMnKSkge1xuICAgICAgdGhpcy5sYWJlbENvbHNBcnJheSA9IFV0aWwucGFyc2VBcnJheSh2YWx1ZVsnbGFiZWxDb2x1bW5zJ10pO1xuICAgIH1cbiAgICBpZiAodmFsdWUuaGFzT3duUHJvcGVydHkoJ3NlcGFyYXRvcicpKSB7XG4gICAgICB0aGlzLnNlcGFyYXRvciA9IHZhbHVlWydzZXBhcmF0b3InXTtcbiAgICB9XG4gICAgaWYgKHZhbHVlLmhhc093blByb3BlcnR5KCdkaWFsb2dUaXRsZVNlcGFyYXRvcicpKSB7XG4gICAgICB0aGlzLmRpYWxvZ1RpdGxlU2VwYXJhdG9yID0gdmFsdWVbJ2RpYWxvZ1RpdGxlU2VwYXJhdG9yJ107XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIF9zcGxpdFBhbmVPcHRpb25zOiBhbnkgPSB7fTtcblxuICBnZXQgc3BsaXRQYW5lT3B0aW9ucygpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLl9zcGxpdFBhbmVPcHRpb25zO1xuICB9XG5cbiAgYWRkU3BsaXRQYW5lT3B0aW9ucyh2YWx1ZTogYW55KSB7XG4gICAgT2JqZWN0LmFzc2lnbih0aGlzLl9zcGxpdFBhbmVPcHRpb25zLCB2YWx1ZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYWRkaW5nR3VhcmQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBwdWJsaWMgbmF2aWdhdGlvblNlcnZpY2U6IE5hdmlnYXRpb25TZXJ2aWNlO1xuXG4gIHB1YmxpYyBfbWFya0ZvclVwZGF0ZTogYm9vbGVhbiA9IGZhbHNlO1xuICBwdWJsaWMgb25UcmlnZ2VyVXBkYXRlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIHByb3RlY3RlZCBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICBwcm90ZWN0ZWQgY29tcG9uZW50U3RhdGVTZXJ2aWNlOiBPRm9ybUxheW91dE1hbmFnZXJDb21wb25lbnRTdGF0ZVNlcnZpY2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBwcm90ZWN0ZWQgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJvdGVjdGVkIGFjdFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcm90ZWN0ZWQgZGlhbG9nOiBNYXREaWFsb2csXG4gICAgcHJvdGVjdGVkIGVsUmVmOiBFbGVtZW50UmVmLFxuICAgIEBTa2lwU2VsZigpIEBPcHRpb25hbCgpXG4gICAgcHVibGljIHBhcmVudEZvcm1MYXlvdXRNYW5hZ2VyOiBPRm9ybUxheW91dE1hbmFnZXJCYXNlXG4gICkge1xuICAgIHRoaXMub0Zvcm1MYXlvdXRNYW5hZ2VyU2VydmljZSA9IHRoaXMuaW5qZWN0b3IuZ2V0KE9Gb3JtTGF5b3V0TWFuYWdlclNlcnZpY2UpO1xuICAgIHRoaXMubG9jYWxTdG9yYWdlU2VydmljZSA9IHRoaXMuaW5qZWN0b3IuZ2V0KExvY2FsU3RvcmFnZVNlcnZpY2UpO1xuICAgIHRoaXMudHJhbnNsYXRlU2VydmljZSA9IHRoaXMuaW5qZWN0b3IuZ2V0KE9UcmFuc2xhdGVTZXJ2aWNlKTtcbiAgICB0aGlzLm5hdmlnYXRpb25TZXJ2aWNlID0gdGhpcy5pbmplY3Rvci5nZXQoTmF2aWdhdGlvblNlcnZpY2UpO1xuICAgIHRoaXMuY29tcG9uZW50U3RhdGVTZXJ2aWNlID0gdGhpcy5pbmplY3Rvci5nZXQ8T0Zvcm1MYXlvdXRNYW5hZ2VyQ29tcG9uZW50U3RhdGVTZXJ2aWNlPihBYnN0cmFjdENvbXBvbmVudFN0YXRlU2VydmljZSBhcyBUeXBlPE9Gb3JtTGF5b3V0TWFuYWdlckNvbXBvbmVudFN0YXRlU2VydmljZT4pO1xuICAgIGlmICh0aGlzLnN0b3JlU3RhdGUpIHtcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9uLmFkZCh0aGlzLmxvY2FsU3RvcmFnZVNlcnZpY2Uub25Sb3V0ZUNoYW5nZS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgdGhpcy51cGRhdGVTdGF0ZVN0b3JhZ2UoKTtcbiAgICAgIH0pKTtcbiAgICB9XG4gIH1cblxuICBnZXQgc3RhdGUoKTogT0Zvcm1MYXlvdXRNYW5hZ2VyQ29tcG9uZW50U3RhdGVDbGFzcyB7XG4gICAgcmV0dXJuIHRoaXMuY29tcG9uZW50U3RhdGVTZXJ2aWNlLnN0YXRlO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuYWRkQWN0aXZhdGVDaGlsZEd1YXJkKCk7XG4gICAgaWYgKCFVdGlsLmlzRGVmaW5lZCh0aGlzLm9hdHRyKSkge1xuICAgICAgdGhpcy5vYXR0ciA9ICh0aGlzLnRpdGxlIHx8ICcnKSArIHRoaXMubW9kZTtcbiAgICAgIGNvbnNvbGUud2Fybignby1mb3JtLWxheW91dC1tYW5hZ2VyIG11c3QgaGF2ZSBhbiB1bmlxdWUgYXR0cicpO1xuICAgIH1cbiAgICB0aGlzLm9Gb3JtTGF5b3V0TWFuYWdlclNlcnZpY2UucmVnaXN0ZXJGb3JtTGF5b3V0TWFuYWdlcih0aGlzKTtcbiAgICBpZiAodGhpcy5zdG9yZVN0YXRlKSB7XG4gICAgICB0aGlzLmNvbXBvbmVudFN0YXRlU2VydmljZS5pbml0aWFsaXplKHRoaXMpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5lbFJlZikge1xuICAgICAgICB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCd0aXRsZScpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gICAgdGhpcy5vRm9ybUxheW91dE1hbmFnZXJTZXJ2aWNlLnJlbW92ZUZvcm1MYXlvdXRNYW5hZ2VyKHRoaXMpO1xuICAgIHRoaXMuZGVzdHJveUFjdGl2YXRlQ2hpbGRHdWFyZCgpO1xuICB9XG5cbiAgcHVibGljIGdldEF0dHJpYnV0ZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLm9hdHRyO1xuICB9XG5cbiAgcHVibGljIGdldENvbXBvbmVudEtleSgpOiBzdHJpbmcge1xuICAgIHJldHVybiAnT0Zvcm1MYXlvdXRNYW5hZ2VyQ29tcG9uZW50XycgKyB0aGlzLm9hdHRyO1xuICB9XG5cbiAgcHVibGljIGdldFJvdXRlS2V5KCk6IHN0cmluZyB7XG4gICAgbGV0IHJvdXRlID0gdGhpcy5yb3V0ZXIudXJsO1xuICAgIHRoaXMuYWN0Um91dGUucGFyYW1zLnN1YnNjcmliZShwYXJhbXMgPT4ge1xuICAgICAgT2JqZWN0LmtleXMocGFyYW1zKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgIHJvdXRlID0gcm91dGUucmVwbGFjZShwYXJhbXNba2V5XSwga2V5KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIHJldHVybiByb3V0ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXREYXRhVG9TdG9yZSgpOiBhbnkge1xuICAgIGNvbnN0IGNvbXBSZWYgPSB0aGlzLmdldExheW91dE1vZGVDb21wb25lbnQoKTtcbiAgICByZXR1cm4gVXRpbC5pc0RlZmluZWQoY29tcFJlZikgPyBjb21wUmVmLmdldERhdGFUb1N0b3JlKCkgOiB7fTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpiZWZvcmV1bmxvYWQnLCBbXSlcbiAgcHVibGljIGJlZm9yZXVubG9hZEhhbmRsZXIoKTogdm9pZCB7XG4gICAgdGhpcy51cGRhdGVTdGF0ZVN0b3JhZ2UoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRMYWJlbEZyb21VcmxQYXJhbXModXJsUGFyYW1zOiBvYmplY3QpOiBzdHJpbmcge1xuICAgIGxldCBsYWJlbCA9ICcnO1xuICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyh1cmxQYXJhbXMpO1xuICAgIGtleXMuZm9yRWFjaCgocGFyYW0sIGkpID0+IHtcbiAgICAgIGxhYmVsICs9IHVybFBhcmFtc1twYXJhbV0gKyAoKGkgPCBrZXlzLmxlbmd0aCAtIDEpID8gdGhpcy5zZXBhcmF0b3IgOiAnJyk7XG4gICAgfSk7XG4gICAgcmV0dXJuIGxhYmVsO1xuICB9XG5cbiAgcHVibGljIGdldEZvcm1EYXRhRnJvbUxhYmVsQ29sdW1ucyhkYXRhOiBhbnkpIHtcbiAgICBjb25zdCBmb3JtRGF0YSA9IHt9O1xuICAgIE9iamVjdC5rZXlzKGRhdGEpLmZvckVhY2goeCA9PiB7XG4gICAgICBpZiAodGhpcy5sYWJlbENvbHNBcnJheS5pbmRleE9mKHgpID4gLTEpIHtcbiAgICAgICAgZm9ybURhdGFbeF0gPSBkYXRhW3hdO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBmb3JtRGF0YTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRBY3RpdmF0ZUNoaWxkR3VhcmQoKTogdm9pZCB7XG4gICAgY29uc3Qgcm91dGVDb25maWcgPSB0aGlzLmdldFBhcmVudEFjdFJvdXRlUm91dGUoKTtcbiAgICBpZiAoVXRpbC5pc0RlZmluZWQocm91dGVDb25maWcpKSB7XG4gICAgICBjb25zdCBjYW5BY3RpdmF0ZUNoaWxkQXJyYXkgPSAocm91dGVDb25maWcuY2FuQWN0aXZhdGVDaGlsZCB8fCBbXSk7XG4gICAgICBsZXQgcHJldmlvdXNseUFkZGVkID0gZmFsc2U7XG4gICAgICBmb3IgKGxldCBpID0gMCwgbGVuID0gY2FuQWN0aXZhdGVDaGlsZEFycmF5Lmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGd1YXJkQ2hpbGQgPSB0aGlzLmluamVjdG9yLmdldChDYW5BY3RpdmF0ZUZvcm1MYXlvdXRDaGlsZEd1YXJkKTtcbiAgICAgICAgcHJldmlvdXNseUFkZGVkID0gKGNhbkFjdGl2YXRlQ2hpbGRBcnJheVtpXSA9PT0gZ3VhcmRDaGlsZC5jb25zdHJ1Y3Rvcik7XG4gICAgICAgIGlmIChwcmV2aW91c2x5QWRkZWQpIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKCFwcmV2aW91c2x5QWRkZWQpIHtcbiAgICAgICAgdGhpcy5hZGRpbmdHdWFyZCA9IHRydWU7XG4gICAgICAgIGNhbkFjdGl2YXRlQ2hpbGRBcnJheS5wdXNoKENhbkFjdGl2YXRlRm9ybUxheW91dENoaWxkR3VhcmQpO1xuICAgICAgICByb3V0ZUNvbmZpZy5jYW5BY3RpdmF0ZUNoaWxkID0gY2FuQWN0aXZhdGVDaGlsZEFycmF5O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBkZXN0cm95QWN0aXZhdGVDaGlsZEd1YXJkKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5hZGRpbmdHdWFyZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLm9Gb3JtTGF5b3V0TWFuYWdlclNlcnZpY2UuYWN0aXZlRm9ybUxheW91dE1hbmFnZXIgPSB1bmRlZmluZWQ7XG4gICAgY29uc3Qgcm91dGVDb25maWcgPSB0aGlzLmdldFBhcmVudEFjdFJvdXRlUm91dGUoKTtcbiAgICBpZiAoVXRpbC5pc0RlZmluZWQocm91dGVDb25maWcpKSB7XG4gICAgICBmb3IgKGxldCBpID0gKHJvdXRlQ29uZmlnLmNhbkFjdGl2YXRlQ2hpbGQgfHwgW10pLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgIGNvbnN0IGd1YXJkQ2hpbGQgPSB0aGlzLmluamVjdG9yLmdldChDYW5BY3RpdmF0ZUZvcm1MYXlvdXRDaGlsZEd1YXJkKTtcbiAgICAgICAgaWYgKHJvdXRlQ29uZmlnLmNhbkFjdGl2YXRlQ2hpbGRbaV0gPT09IGd1YXJkQ2hpbGQuY29uc3RydWN0b3IpIHtcbiAgICAgICAgICByb3V0ZUNvbmZpZy5jYW5BY3RpdmF0ZUNoaWxkLnNwbGljZShpLCAxKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBpc0RpYWxvZ01vZGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubW9kZSA9PT0gT0Zvcm1MYXlvdXRNYW5hZ2VyQ29tcG9uZW50LkRJQUxPR19NT0RFO1xuICB9XG5cbiAgcHVibGljIGlzVGFiTW9kZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5tb2RlID09PSBPRm9ybUxheW91dE1hbmFnZXJDb21wb25lbnQuVEFCX01PREU7XG4gIH1cblxuICBwdWJsaWMgaXNTcGxpdFBhbmVNb2RlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm1vZGUgPT09IE9Gb3JtTGF5b3V0TWFuYWdlckNvbXBvbmVudC5TUExJVF9QQU5FX01PREU7XG4gIH1cblxuICBwdWJsaWMgYWRkRGV0YWlsQ29tcG9uZW50KGNoaWxkUm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIHVybDogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgbmV3RGV0YWlsQ29tcDogRm9ybUxheW91dERldGFpbENvbXBvbmVudERhdGEgPSB7XG4gICAgICBwYXJhbXM6IGNoaWxkUm91dGUucGFyYW1zLFxuICAgICAgcXVlcnlQYXJhbXM6IGNoaWxkUm91dGUucXVlcnlQYXJhbXMsXG4gICAgICB1cmxTZWdtZW50czogY2hpbGRSb3V0ZS51cmwsXG4gICAgICBjb21wb25lbnQ6IGNoaWxkUm91dGUucm91dGVDb25maWcuY29tcG9uZW50LFxuICAgICAgdXJsOiB1cmwsXG4gICAgICBpZDogVXRpbC5yYW5kb21OdW1iZXIoKS50b1N0cmluZygpLFxuICAgICAgbGFiZWw6ICcnLFxuICAgICAgaW5uZXJGb3Jtc0luZm86IHt9LFxuICAgICAgaW5zZXJ0aW9uTW9kZTogY2hpbGRSb3V0ZS5xdWVyeVBhcmFtc1tDb2Rlcy5JTlNFUlRJT05fTU9ERV0gPT09ICd0cnVlJ1xuICAgIH07XG4gICAgaWYgKHRoaXMuaXNEaWFsb2dNb2RlKCkpIHtcbiAgICAgIHRoaXMub3BlbkZvcm1MYXlvdXREaWFsb2cobmV3RGV0YWlsQ29tcCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGNvbXBSZWYgPSB0aGlzLmdldExheW91dE1vZGVDb21wb25lbnQoKTtcbiAgICAgIGlmIChVdGlsLmlzRGVmaW5lZChjb21wUmVmKSkge1xuICAgICAgICBjb21wUmVmLm9wZW5EZXRhaWwobmV3RGV0YWlsQ29tcCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGNsb3NlRGV0YWlsKG9wdGlvbnM/OiBGb3JtTGF5b3V0Q2xvc2VEZXRhaWxPcHRpb25zKTogdm9pZCB7XG4gICAgY29uc3QgY29tcFJlZiA9IHRoaXMuZ2V0TGF5b3V0TW9kZUNvbXBvbmVudCgpO1xuICAgIGlmIChVdGlsLmlzRGVmaW5lZChjb21wUmVmKSkge1xuICAgICAgY29tcFJlZi5jbG9zZURldGFpbChvcHRpb25zKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgY2xvc2VEZXRhaWxzKGRldGFpbHNEYXRhOiBhbnlbXSA9IFtdLCBvcHRpb25zPzogRm9ybUxheW91dENsb3NlRGV0YWlsT3B0aW9ucyk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzVGFiTW9kZSgpICYmIFV0aWwuaXNEZWZpbmVkKHRoaXMub1RhYkdyb3VwKSkge1xuICAgICAgdGhpcy5vVGFiR3JvdXAuY2xvc2VEZXRhaWxzKGRldGFpbHNEYXRhLCBvcHRpb25zKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb3BlbkZvcm1MYXlvdXREaWFsb2coZGV0YWlsQ29tcDogRm9ybUxheW91dERldGFpbENvbXBvbmVudERhdGEpOiB2b2lkIHtcbiAgICBjb25zdCBjc3NjbGFzcyA9IFsnby1mb3JtLWxheW91dC1kaWFsb2ctb3ZlcmxheSddO1xuICAgIGlmICh0aGlzLmRpYWxvZ0NsYXNzKSB7XG4gICAgICBjc3NjbGFzcy5wdXNoKHRoaXMuZGlhbG9nQ2xhc3MpO1xuICAgIH1cblxuICAgIGNvbnN0IGRpYWxvZ09wdGlvbnMgPSAodGhpcy5kaWFsb2dPcHRpb25zIHx8IHt9KTtcblxuICAgIGNvbnN0IGRpYWxvZ0NvbmZpZzogTWF0RGlhbG9nQ29uZmlnID0ge1xuICAgICAgZGF0YToge1xuICAgICAgICBkYXRhOiBkZXRhaWxDb21wLFxuICAgICAgICBsYXlvdXRNYW5hZ2VyQ29tcG9uZW50OiB0aGlzLFxuICAgICAgICB0aXRsZTogKHRoaXMudGl0bGUgfHwgZGlhbG9nT3B0aW9ucy50aXRsZSksXG4gICAgICAgIGRpYWxvZ1RpdGxlU2VwYXJhdG9yOiB0aGlzLmRpYWxvZ1RpdGxlU2VwYXJhdG9yXG4gICAgICB9LFxuICAgICAgd2lkdGg6IGRpYWxvZ09wdGlvbnMud2lkdGggfHwgdGhpcy5kaWFsb2dXaWR0aCxcbiAgICAgIG1pbldpZHRoOiBkaWFsb2dPcHRpb25zLm1pbldpZHRoIHx8IHRoaXMuZGlhbG9nTWluV2lkdGgsXG4gICAgICBtYXhXaWR0aDogZGlhbG9nT3B0aW9ucy5tYXhXaWR0aCB8fCB0aGlzLmRpYWxvZ01heFdpZHRoLFxuICAgICAgaGVpZ2h0OiBkaWFsb2dPcHRpb25zLmhlaWdodCB8fCB0aGlzLmRpYWxvZ0hlaWdodCxcbiAgICAgIG1pbkhlaWdodDogZGlhbG9nT3B0aW9ucy5taW5IZWlnaHQgfHwgdGhpcy5kaWFsb2dNaW5IZWlnaHQsXG4gICAgICBtYXhIZWlnaHQ6IGRpYWxvZ09wdGlvbnMubWF4SGVpZ2h0IHx8IHRoaXMuZGlhbG9nTWF4SGVpZ2h0LFxuICAgICAgZGlzYWJsZUNsb3NlOiBkaWFsb2dPcHRpb25zLmRpc2FibGVDbG9zZSB8fCB0cnVlLFxuICAgICAgcGFuZWxDbGFzczogZGlhbG9nT3B0aW9ucy5jbGFzcyB8fCBjc3NjbGFzc1xuICAgIH07XG5cbiAgICBpZiAodGhpcy5kaWFsb2dPcHRpb25zKSB7XG4gICAgICBkaWFsb2dDb25maWcuY2xvc2VPbk5hdmlnYXRpb24gPSB0aGlzLmRpYWxvZ09wdGlvbnMuY2xvc2VPbk5hdmlnYXRpb247XG4gICAgICBkaWFsb2dDb25maWcuYmFja2Ryb3BDbGFzcyA9IHRoaXMuZGlhbG9nT3B0aW9ucy5iYWNrZHJvcENsYXNzO1xuICAgICAgZGlhbG9nQ29uZmlnLnBvc2l0aW9uID0gdGhpcy5kaWFsb2dPcHRpb25zLnBvc2l0aW9uO1xuICAgICAgZGlhbG9nQ29uZmlnLmRpc2FibGVDbG9zZSA9IHRoaXMuZGlhbG9nT3B0aW9ucy5kaXNhYmxlQ2xvc2U7XG4gICAgfVxuXG4gICAgdGhpcy5kaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKE9Gb3JtTGF5b3V0RGlhbG9nQ29tcG9uZW50LCBkaWFsb2dDb25maWcpO1xuICAgIHRoaXMuZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIGlmICh0aGlzLm1hcmtGb3JVcGRhdGUpIHtcbiAgICAgICAgdGhpcy51cGRhdGVJZk5lZWRlZCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5yZWxvYWRNYWluQ29tcG9uZW50cygpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGdldEZvcm1DYWNoZURhdGEoKTogRm9ybUxheW91dERldGFpbENvbXBvbmVudERhdGEge1xuICAgIGNvbnN0IGNvbXBSZWYgPSB0aGlzLmdldExheW91dE1vZGVDb21wb25lbnQoKTtcbiAgICByZXR1cm4gVXRpbC5pc0RlZmluZWQoY29tcFJlZikgPyBjb21wUmVmLmdldEZvcm1DYWNoZURhdGEoKSA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHB1YmxpYyBzZXRNb2RpZmllZFN0YXRlKGZvcm1BdHRyOiBzdHJpbmcsIG1vZGlmaWVkOiBib29sZWFuLCBjb25maXJtRXhpdDogYm9vbGVhbik6IHZvaWQge1xuICAgIGNvbnN0IGNvbXBSZWYgPSB0aGlzLmdldExheW91dE1vZGVDb21wb25lbnQoKTtcbiAgICBpZiAoVXRpbC5pc0RlZmluZWQoY29tcFJlZikpIHtcbiAgICAgIGNvbXBSZWYuc2V0TW9kaWZpZWRTdGF0ZShmb3JtQXR0ciwgbW9kaWZpZWQsIGNvbmZpcm1FeGl0KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0TGFiZWxGcm9tRGF0YShkYXRhOiBhbnkpOiBzdHJpbmcge1xuICAgIGxldCBsYWJlbCA9ICcnO1xuICAgIGNvbnN0IGlzRGF0YURlZmluZWQgPSBVdGlsLmlzRGVmaW5lZChkYXRhKTtcbiAgICBpZiAoaXNEYXRhRGVmaW5lZCAmJiBkYXRhLmhhc093blByb3BlcnR5KCduZXdfdGFiX3RpdGxlJykpIHtcbiAgICAgIGxhYmVsID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmdldChkYXRhLm5ld190YWJfdGl0bGUpO1xuICAgIH0gZWxzZSBpZiAoaXNEYXRhRGVmaW5lZCAmJiB0aGlzLmxhYmVsQ29sc0FycmF5Lmxlbmd0aCAhPT0gMCkge1xuICAgICAgdGhpcy5sYWJlbENvbHNBcnJheS5mb3JFYWNoKChjb2wsIGlkeCkgPT4ge1xuICAgICAgICBpZiAoZGF0YVtjb2xdICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBsYWJlbCArPSBkYXRhW2NvbF0gKyAoKGlkeCA8IHRoaXMubGFiZWxDb2xzQXJyYXkubGVuZ3RoIC0gMSkgPyB0aGlzLnNlcGFyYXRvciA6ICcnKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBsYWJlbDtcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVOYXZpZ2F0aW9uKGRhdGE6IGFueSwga2V5c1ZhbHVlczogYW55LCBpbnNlcnRpb25Nb2RlOiBib29sZWFuKTogdm9pZCB7XG4gICAgY29uc3QgY29tcFJlZiA9IHRoaXMuZ2V0TGF5b3V0TW9kZUNvbXBvbmVudCgpO1xuICAgIGlmIChVdGlsLmlzRGVmaW5lZChjb21wUmVmKSkge1xuICAgICAgY29tcFJlZi51cGRhdGVOYXZpZ2F0aW9uKGRhdGEsIGtleXNWYWx1ZXMsIGluc2VydGlvbk1vZGUpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVBY3RpdmVEYXRhKGRhdGE6IGFueSkge1xuICAgIGNvbnN0IGNvbXBSZWYgPSB0aGlzLmdldExheW91dE1vZGVDb21wb25lbnQoKTtcbiAgICBpZiAoVXRpbC5pc0RlZmluZWQoY29tcFJlZikpIHtcbiAgICAgIGNvbXBSZWYudXBkYXRlQWN0aXZlRGF0YShkYXRhKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0Um91dGVPZkFjdGl2ZUl0ZW0oKTogYW55W10ge1xuICAgIGNvbnN0IGNvbXBSZWYgPSB0aGlzLmdldExheW91dE1vZGVDb21wb25lbnQoKTtcbiAgICByZXR1cm4gVXRpbC5pc0RlZmluZWQoY29tcFJlZikgPyBjb21wUmVmLmdldFJvdXRlT2ZBY3RpdmVJdGVtKCkgOiBbXTtcbiAgfVxuXG4gIHB1YmxpYyBpc01haW5Db21wb25lbnQoY29tcDogSUxheW91dE1hbmFnZXJDb21wb25lbnQpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5pc0RpYWxvZ01vZGUoKSkge1xuICAgICAgcmV0dXJuICFjb21wLm9Gb3JtTGF5b3V0RGlhbG9nO1xuICAgIH1cbiAgICBjb25zdCBjb21wUmVmID0gdGhpcy5nZXRMYXlvdXRNb2RlQ29tcG9uZW50KCk7XG4gICAgcmV0dXJuIFV0aWwuaXNEZWZpbmVkKGNvbXBSZWYpICYmIGNvbXBSZWYuaXNNYWluQ29tcG9uZW50KGNvbXApO1xuICB9XG5cbiAgcHVibGljIGdldFJvdXRlRm9yQ29tcG9uZW50KGNvbXA6IElMYXlvdXRNYW5hZ2VyQ29tcG9uZW50KTogYW55W10ge1xuICAgIGNvbnN0IHJlc3VsdCA9IFtdO1xuICAgIGlmICh0aGlzLnBhcmVudEZvcm1MYXlvdXRNYW5hZ2VyKSB7XG4gICAgICBjb25zdCBwYXJlbnRSb3V0ZSA9IHRoaXMucGFyZW50Rm9ybUxheW91dE1hbmFnZXIuZ2V0Um91dGVGb3JDb21wb25lbnQoY29tcCk7XG4gICAgICBpZiAocGFyZW50Um91dGUgJiYgcGFyZW50Um91dGUubGVuZ3RoID4gMCkge1xuICAgICAgICByZXN1bHQucHVzaCguLi5wYXJlbnRSb3V0ZSk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmICghdGhpcy5pc01haW5Db21wb25lbnQoY29tcCkpIHtcbiAgICAgIGNvbnN0IGFjdGl2ZVJvdXRlID0gdGhpcy5nZXRSb3V0ZU9mQWN0aXZlSXRlbSgpO1xuICAgICAgaWYgKGFjdGl2ZVJvdXRlICYmIGFjdGl2ZVJvdXRlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgcmVzdWx0LnB1c2goLi4uYWN0aXZlUm91dGUpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgcHVibGljIHNldEFzQWN0aXZlRm9ybUxheW91dE1hbmFnZXIoKTogdm9pZCB7XG4gICAgdGhpcy5vRm9ybUxheW91dE1hbmFnZXJTZXJ2aWNlLmFjdGl2ZUZvcm1MYXlvdXRNYW5hZ2VyID0gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyByZWxvYWRNYWluQ29tcG9uZW50cygpOiB2b2lkIHtcbiAgICB0aGlzLm9uVHJpZ2dlclVwZGF0ZS5lbWl0KCk7XG4gIH1cblxuICBwdWJsaWMgYWxsb3dUb1VwZGF0ZU5hdmlnYXRpb24oZm9ybUF0dHI6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAodGhpcy5pc1RhYk1vZGUoKSAmJiBVdGlsLmlzRGVmaW5lZCh0aGlzLm9UYWJHcm91cCkgJiYgVXRpbC5pc0RlZmluZWQodGhpcy50aXRsZURhdGFPcmlnaW4pKSA/XG4gICAgICB0aGlzLnRpdGxlRGF0YU9yaWdpbiA9PT0gZm9ybUF0dHIgOlxuICAgICAgdHJ1ZTtcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVTdGF0ZVN0b3JhZ2UoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmxvY2FsU3RvcmFnZVNlcnZpY2UgfHwgIXRoaXMuc3RvcmVTdGF0ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBpc1RhYk1vZGUgPSB0aGlzLmlzVGFiTW9kZSgpICYmIFV0aWwuaXNEZWZpbmVkKHRoaXMub1RhYkdyb3VwKTtcbiAgICBjb25zdCBpc1NwbGl0UGFuZU1vZGUgPSB0aGlzLmlzU3BsaXRQYW5lTW9kZSgpICYmIFV0aWwuaXNEZWZpbmVkKHRoaXMub1NwbGl0UGFuZSk7XG4gICAgaWYgKGlzVGFiTW9kZSB8fCBpc1NwbGl0UGFuZU1vZGUpIHtcbiAgICAgIHRoaXMubG9jYWxTdG9yYWdlU2VydmljZS51cGRhdGVDb21wb25lbnRTdG9yYWdlKHRoaXMsIHRoaXMuZ2V0Um91dGVLZXkoKSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRQYXJlbnRBY3RSb3V0ZVJvdXRlKCk6IFJvdXRlIHtcbiAgICBsZXQgYWN0Um91dGUgPSB0aGlzLmFjdFJvdXRlO1xuICAgIHdoaWxlIChhY3RSb3V0ZS5wYXJlbnQgIT09IHVuZGVmaW5lZCAmJiBhY3RSb3V0ZS5wYXJlbnQgIT09IG51bGwpIHtcbiAgICAgIGlmIChhY3RSb3V0ZS5yb3V0ZUNvbmZpZy5jaGlsZHJlbiB8fCBhY3RSb3V0ZS5yb3V0ZUNvbmZpZy5sb2FkQ2hpbGRyZW4pIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBhY3RSb3V0ZSA9IGFjdFJvdXRlLnBhcmVudDtcbiAgICB9XG4gICAgcmV0dXJuIGFjdFJvdXRlLnJvdXRlQ29uZmlnO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZUlmTmVlZGVkKCkge1xuICAgIGlmICh0aGlzLm1hcmtGb3JVcGRhdGUpIHtcbiAgICAgIHRoaXMubWFya0ZvclVwZGF0ZSA9IGZhbHNlO1xuICAgICAgdGhpcy5vblRyaWdnZXJVcGRhdGUuZW1pdCgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXRQYXJhbXMoKTogYW55IHtcbiAgICBjb25zdCBjb21wUmVmID0gdGhpcy5nZXRMYXlvdXRNb2RlQ29tcG9uZW50KCk7XG4gICAgcmV0dXJuIFV0aWwuaXNEZWZpbmVkKGNvbXBSZWYpID8gY29tcFJlZi5nZXRQYXJhbXMoKSA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHNldCBtYXJrRm9yVXBkYXRlKGFyZzogYm9vbGVhbikge1xuICAgIHRoaXMuX21hcmtGb3JVcGRhdGUgPSBhcmc7XG4gICAgaWYgKHRoaXMuaXNTcGxpdFBhbmVNb2RlKCkpIHtcbiAgICAgIHRoaXMudXBkYXRlSWZOZWVkZWQoKTtcbiAgICB9XG4gIH1cblxuICBnZXQgbWFya0ZvclVwZGF0ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fbWFya0ZvclVwZGF0ZTtcbiAgfVxuXG4gIGdldCBpZ25vcmVDYW5EZWFjdGl2YXRlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5pc1NwbGl0UGFuZU1vZGUoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRMYXlvdXRNb2RlQ29tcG9uZW50KCk6IE9Gb3JtTGF5b3V0TWFuYWdlck1vZGUge1xuICAgIGxldCBjb21wUmVmO1xuICAgIGlmICh0aGlzLmlzVGFiTW9kZSgpICYmIFV0aWwuaXNEZWZpbmVkKHRoaXMub1RhYkdyb3VwKSkge1xuICAgICAgY29tcFJlZiA9IHRoaXMub1RhYkdyb3VwO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pc0RpYWxvZ01vZGUoKSAmJiBVdGlsLmlzRGVmaW5lZCh0aGlzLmRpYWxvZ1JlZikpIHtcbiAgICAgIGNvbXBSZWYgPSB0aGlzLmRpYWxvZ1JlZi5jb21wb25lbnRJbnN0YW5jZTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXNTcGxpdFBhbmVNb2RlKCkgJiYgVXRpbC5pc0RlZmluZWQodGhpcy5vU3BsaXRQYW5lKSkge1xuICAgICAgY29tcFJlZiA9IHRoaXMub1NwbGl0UGFuZTtcbiAgICB9XG4gICAgcmV0dXJuIGNvbXBSZWY7XG4gIH1cblxuICBhbGxvd05hdmlnYXRpb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLmlzVGFiTW9kZSgpO1xuICB9XG5cbiAgcHVibGljIGNhbkFkZERldGFpbENvbXBvbmVudCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICBjb25zdCBjb21wUmVmID0gdGhpcy5nZXRMYXlvdXRNb2RlQ29tcG9uZW50KCk7XG4gICAgcmV0dXJuIFV0aWwud3JhcEludG9PYnNlcnZhYmxlKFV0aWwuaXNEZWZpbmVkKGNvbXBSZWYpID8gY29tcFJlZi5jYW5BZGREZXRhaWxDb21wb25lbnQoKSA6IHRydWUpO1xuICB9XG5cbiAgcHVibGljIGhhc1RvQ29uZmlybUV4aXQoZGF0YTogRm9ybUxheW91dERldGFpbENvbXBvbmVudERhdGEsIG9wdGlvbnM/OiBGb3JtTGF5b3V0Q2xvc2VEZXRhaWxPcHRpb25zKTogYm9vbGVhbiB7XG4gICAgaWYgKFV0aWwuaXNEZWZpbmVkKG9wdGlvbnMpICYmIG9wdGlvbnMuZXhpdFdpdGhvdXRDb25maXJtYXRpb24pIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgY29uc3QgZm9ybXNBdHRyID0gT2JqZWN0LmtleXMoZGF0YS5pbm5lckZvcm1zSW5mbyk7XG4gICAgbGV0IHJlc3VsdDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIGlmIChmb3Jtc0F0dHIubGVuZ3RoID4gMCkge1xuICAgICAgZm9ybXNBdHRyLmZvckVhY2goZm9ybUF0dHIgPT4ge1xuICAgICAgICBpZiAoIXJlc3VsdCkge1xuICAgICAgICAgIGNvbnN0IGZvcm1EYXRhID0gZGF0YS5pbm5lckZvcm1zSW5mb1tmb3JtQXR0cl07XG4gICAgICAgICAgcmVzdWx0ID0gZm9ybURhdGEuY29uZmlybU9uRXhpdCAmJiBmb3JtRGF0YS5tb2RpZmllZDtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0SWRPZkFjdGl2ZUl0ZW0oKTogc3RyaW5nIHtcbiAgICBjb25zdCBjb21wUmVmID0gdGhpcy5nZXRMYXlvdXRNb2RlQ29tcG9uZW50KCk7XG4gICAgcmV0dXJuIFV0aWwuaXNEZWZpbmVkKGNvbXBSZWYpID8gYCR7dGhpcy5vYXR0cn0tJHtjb21wUmVmLmdldElkT2ZBY3RpdmVJdGVtKCl9LWAgOiAnJztcbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwibW9kZVwiPlxuICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJPRm9ybUxheW91dE1hbmFnZXJDb21wb25lbnQuVEFCX01PREVcIj5cbiAgICA8by1mb3JtLWxheW91dC10YWJncm91cCAjdGFiR3JvdXAgW3RpdGxlXT1cInRpdGxlXCIgKG9uTWFpblRhYlNlbGVjdGVkKT1cIm9uTWFpblRhYlNlbGVjdGVkLmVtaXQoJGV2ZW50KVwiXG4gICAgICAob25TZWxlY3RlZFRhYkNoYW5nZSk9XCJvblNlbGVjdGVkVGFiQ2hhbmdlLmVtaXQoJGV2ZW50KVwiIChvbkNsb3NlVGFiKT1cIm9uQ2xvc2VUYWIuZW1pdCgkZXZlbnQpXCJcbiAgICAgIFtvcHRpb25zXT1cInRhYkdyb3VwT3B0aW9uc1wiIFtzdHJldGNoLXRhYnNdPVwic3RyZXRjaFRhYnNcIj5cbiAgICAgIDxuZy1jb250ZW50ICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29udGVudEJsb2NrXCI+PC9uZy1jb250ZW50PlxuICAgIDwvby1mb3JtLWxheW91dC10YWJncm91cD5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiT0Zvcm1MYXlvdXRNYW5hZ2VyQ29tcG9uZW50LlNQTElUX1BBTkVfTU9ERVwiPlxuICAgIDxvLWZvcm0tbGF5b3V0LXNwbGl0LXBhbmUgI3NwbGl0UGFuZSBbb3B0aW9uc109XCJzcGxpdFBhbmVPcHRpb25zXCI+XG4gICAgICA8bmctY29udGVudCAqbmdUZW1wbGF0ZU91dGxldD1cImNvbnRlbnRCbG9ja1wiPjwvbmctY29udGVudD5cbiAgICA8L28tZm9ybS1sYXlvdXQtc3BsaXQtcGFuZT5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiT0Zvcm1MYXlvdXRNYW5hZ2VyQ29tcG9uZW50LkRJQUxPR19NT0RFXCI+XG4gICAgPG5nLWNvbnRlbnQgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50QmxvY2tcIj48L25nLWNvbnRlbnQ+XG4gIDwvbmctY29udGFpbmVyPlxuPC9uZy1jb250YWluZXI+XG5cblxuPG5nLXRlbXBsYXRlICNjb250ZW50QmxvY2s+XG4gIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvbmctdGVtcGxhdGU+Il19
|
|
542
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby1mb3JtLWxheW91dC1tYW5hZ2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9sYXlvdXRzL2Zvcm0tbGF5b3V0L28tZm9ybS1sYXlvdXQtbWFuYWdlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvbGF5b3V0cy9mb3JtLWxheW91dC9vLWZvcm0tbGF5b3V0LW1hbmFnZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFFTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixZQUFZLEVBQ1osUUFBUSxFQUdSLFFBQVEsRUFDUixRQUFRLEVBRVIsU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQWlDLE1BQU0sMEJBQTBCLENBQUM7QUFDcEYsT0FBTyxFQUFFLGNBQWMsRUFBaUMsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDeEYsT0FBTyxFQUFjLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVoRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUl6RSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNwRyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN0RSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUN6RixPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUUvRixPQUFPLEVBQUUsdUNBQXVDLEVBQUUsTUFBTSxvRUFBb0UsQ0FBQztB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QixFQUFFLE1BQU07cUJBQ3hDOzswQkF3S0UsUUFBUTs7MEJBQUksUUFBUTs0Q0ExSGhCLFVBQVUsTUFvQlYsU0FBUztzQkFEZixTQUFTO3VCQUFDLFVBQVU7Z0JBSWQsVUFBVTtzQkFEaEIsU0FBUzt1QkFBQyxXQUFXO2dCQTRMZixtQkFBbUI7c0JBRHpCLFlBQVk7dUJBQUMscUJBQXFCLEVBQUUsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0TGlzdGVuZXIsXG4gIEluamVjdG9yLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIFNraXBTZWxmLFxuICBUeXBlLFxuICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXREaWFsb2csIE1hdERpYWxvZ0NvbmZpZywgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBCb29sZWFuSW5wdXRDb252ZXJ0ZXIgfSBmcm9tICcuLi8uLi9kZWNvcmF0b3JzL2lucHV0LWNvbnZlcnRlcic7XG5pbXBvcnQgeyBJTGF5b3V0TWFuYWdlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvbGF5b3V0LW1hbmFnZXItY29tcG9uZW50LmludGVyZmFjZSc7XG5pbXBvcnQgeyBJTG9jYWxTdG9yYWdlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9sb2NhbC1zdG9yYWdlLWNvbXBvbmVudC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgT0Zvcm1MYXlvdXRNYW5hZ2VyTW9kZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvby1mb3JtLWxheW91dC1tYW5hZ2VyLW1vZGUuaW50ZXJmYWNlJztcbmltcG9ydCB7IENvbXBvbmVudFN0YXRlU2VydmljZVByb3ZpZGVyLCBPX0NPTVBPTkVOVF9TVEFURV9TRVJWSUNFIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZmFjdG9yaWVzJztcbmltcG9ydCB7IExvY2FsU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9sb2NhbC1zdG9yYWdlLnNlcnZpY2UnO1xuaW1wb3J0IHsgTmF2aWdhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9uYXZpZ2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgT0Zvcm1MYXlvdXRNYW5hZ2VyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL28tZm9ybS1sYXlvdXQtbWFuYWdlci5zZXJ2aWNlJztcbmltcG9ydCB7IEFic3RyYWN0Q29tcG9uZW50U3RhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvc3RhdGUvby1jb21wb25lbnQtc3RhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBPRm9ybUxheW91dE1hbmFnZXJDb21wb25lbnRTdGF0ZUNsYXNzIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvc3RhdGUvby1mb3JtLWxheW91dC1tYW5hZ2VyLWNvbXBvbmVudC1zdGF0ZS5jbGFzcyc7XG5pbXBvcnQgeyBPRm9ybUxheW91dE1hbmFnZXJDb21wb25lbnRTdGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9zdGF0ZS9vLWZvcm0tbGF5b3V0LW1hbmFnZXItY29tcG9uZW50LXN0YXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgT1RyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90cmFuc2xhdGUvby10cmFuc2xhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBGb3JtTGF5b3V0Q2xvc2VEZXRhaWxPcHRpb25zLCBGb3JtTGF5b3V0RGV0YWlsQ29tcG9uZW50RGF0YSB9IGZyb20gJy4uLy4uL3R5cGVzL2Zvcm0tbGF5b3V0LWRldGFpbC1jb21wb25lbnQtZGF0YS50eXBlJztcbmltcG9ydCB7IE9fR0xPQkFMX0NPTkZJRyB9IGZyb20gJy4uLy4uL3R5cGVzL28tZ2xvYmFsLWNvbmZpZy50eXBlJztcbmltcG9ydCB7IENvZGVzIH0gZnJvbSAnLi4vLi4vdXRpbC9jb2Rlcyc7XG5pbXBvcnQgeyBVdGlsIH0gZnJvbSAnLi4vLi4vdXRpbC91dGlsJztcbmltcG9ydCB7IE9Gb3JtTGF5b3V0RGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi9kaWFsb2cvby1mb3JtLWxheW91dC1kaWFsb2cuY29tcG9uZW50JztcbmltcG9ydCB7IENhbkFjdGl2YXRlRm9ybUxheW91dENoaWxkR3VhcmQgfSBmcm9tICcuL2d1YXJkcy9vLWZvcm0tbGF5b3V0LWNhbi1hY3RpdmF0ZS1jaGlsZC5ndWFyZCc7XG5pbXBvcnQgeyBPRm9ybUxheW91dE1hbmFnZXJCYXNlIH0gZnJvbSAnLi9vLWZvcm0tbGF5b3V0LW1hbmFnZXItYmFzZS5jbGFzcyc7XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0lOUFVUU19PX0ZPUk1fTEFZT1VUX01BTkFHRVIgPSBbXG4gICdvYXR0cjogYXR0cicsXG4gICdtb2RlJyxcbiAgJ3N0b3JlU3RhdGU6IHN0b3JlLXN0YXRlJyxcblxuICAvLyBDb21tb24gZm9yIGRpYWxvZyBhbmQgdGFiIG1vZGVcbiAgLy8gZGVwcmVjYXRlZCwgb25seSBtYW50YWluZWQgZm9yIGxlZ2FjeSByZWFzb25zXG4gICd0aXRsZScsXG4gICdsYWJlbENvbHVtbnM6IGxhYmVsLWNvbHVtbnMnLFxuICAnc2VwYXJhdG9yJyxcblxuICAvLyBhdHRyIG9mIHRoZSBjaGlsZCBmb3JtIGZyb20gd2hpY2ggdGhlIGRhdGEgZm9yIGJ1aWxkaW5nIHRoZSB0YWIgdGl0bGUgd2lsbCBiZSBvYnRhaW5lZCAob25seSBpbiB0YWIgbW9kZSlcbiAgLy8gZGVwcmVjYXRlZCwgb25seSBtYW50YWluZWQgZm9yIGxlZ2FjeSByZWFzb25zXG4gICd0aXRsZURhdGFPcmlnaW46IHRpdGxlLWRhdGEtb3JpZ2luJyxcblxuICAvLyBPbmx5IGRpYWxvZyBvcHRpb25zIGNvbmZpZ3VyYWJsZSBhcyBhbiBpbnB1dCBvZiB0aGUgby1mb3JtLWxheW91dC1tYW5hZ2VyICh1c2UgdGhlIG8tZm9ybS1sYXlvdXQtZGlhbG9nLW9wdGlvbnMgZGlyZWN0aXZlKVxuICAvLyBkZXByZWNhdGVkLCBvbmx5IG1hbnRhaW5lZCBmb3IgbGVnYWN5IHJlYXNvbnNcbiAgJ2RpYWxvZ1dpZHRoOiBkaWFsb2ctd2lkdGgnLFxuICAnZGlhbG9nTWluV2lkdGg6IGRpYWxvZy1taW4td2lkdGgnLFxuICAnZGlhbG9nTWF4V2lkdGg6IGRpYWxvZy1tYXgtd2lkdGgnLFxuICAnZGlhbG9nSGVpZ2h0OiBkaWFsb2ctaGVpZ2h0JyxcbiAgJ2RpYWxvZ01pbkhlaWdodDogZGlhbG9nLW1pbi1oZWlnaHQnLFxuICAnZGlhbG9nTWF4SGVpZ2h0IGRpYWxvZy1tYXgtaGVpZ2h0JyxcbiAgJ2RpYWxvZ0NsYXNzOiBkaWFsb2ctY2xhc3MnLFxuICAnZGlhbG9nVGl0bGVTZXBhcmF0b3I6IGRpYWxvZy10aXRsZS1zZXBhcmF0b3InXG5dO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9PVVRQVVRTX09fRk9STV9MQVlPVVRfTUFOQUdFUiA9IFtcbiAgJ29uTWFpblRhYlNlbGVjdGVkJyxcbiAgJ29uU2VsZWN0ZWRUYWJDaGFuZ2UnLFxuICAnb25DbG9zZVRhYidcbl07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ28tZm9ybS1sYXlvdXQtbWFuYWdlcicsXG4gIGlucHV0czogREVGQVVMVF9JTlBVVFNfT19GT1JNX0xBWU9VVF9NQU5BR0VSLFxuICBvdXRwdXRzOiBERUZBVUxUX09VVFBVVFNfT19GT1JNX0xBWU9VVF9NQU5BR0VSLFxuICB0ZW1wbGF0ZVVybDogJy4vby1mb3JtLWxheW91dC1tYW5hZ2VyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vby1mb3JtLWxheW91dC1tYW5hZ2VyLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1xuICAgIENvbXBvbmVudFN0YXRlU2VydmljZVByb3ZpZGVyLFxuICAgIHsgcHJvdmlkZTogT19DT01QT05FTlRfU1RBVEVfU0VSVklDRSwgdXNlQ2xhc3M6IE9Gb3JtTGF5b3V0TWFuYWdlckNvbXBvbmVudFN0YXRlU2VydmljZSB9LFxuICAgIHsgcHJvdmlkZTogT0Zvcm1MYXlvdXRNYW5hZ2VyQmFzZSwgdXNlRXhpc3Rpbmc6IE9Gb3JtTGF5b3V0TWFuYWdlckNvbXBvbmVudCB9XG4gIF0sXG4gIGhvc3Q6IHtcbiAgICAnW2NsYXNzLm8tZm9ybS1sYXlvdXQtbWFuYWdlcl0nOiAndHJ1ZSdcbiAgfVxufSkgZXhwb3J0IGNsYXNzIE9Gb3JtTGF5b3V0TWFuYWdlckNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uSW5pdCwgT25EZXN0cm95LCBJTG9jYWxTdG9yYWdlQ29tcG9uZW50IHtcblxuICAvLyBkZWNsYXJpbmcgdGhpcyBwcm9wZXJ0eSB0byBoYXZlIGFjY2VzIHRvIHN0YXRpYyBtZW1iZXJzIGluIHRoZSB0ZW1wbGF0ZVxuICBPRm9ybUxheW91dE1hbmFnZXJDb21wb25lbnQgPSBPRm9ybUxheW91dE1hbmFnZXJDb21wb25lbnQ7XG5cblxuICBwdWJsaWMgc3RhdGljIERJQUxPR19NT0RFID0gJ2RpYWxvZyc7XG4gIHB1YmxpYyBzdGF0aWMgVEFCX01PREUgPSAndGFiJztcbiAgcHVibGljIHN0YXRpYyBTUExJVF9QQU5FX01PREUgPSAnc3BsaXQtcGFuZSc7XG5cbiAgcHVibGljIG9hdHRyOiBzdHJpbmc7XG4gIHB1YmxpYyBfbW9kZTogc3RyaW5nID0gT0Zvcm1MYXlvdXRNYW5hZ2VyQ29tcG9uZW50LkRJQUxPR19NT0RFO1xuICBwdWJsaWMgc3RyZXRjaFRhYnMgPSBmYWxzZTtcblxuICBwdWJsaWMgZ2V0IG1vZGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fbW9kZTtcbiAgfVxuXG4gIHB1YmxpYyBzZXQgbW9kZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgY29uc3QgYXZhaWxhYmxlTW9kZVZhbHVlcyA9IFtPRm9ybUxheW91dE1hbmFnZXJDb21wb25lbnQuRElBTE9HX01PREUsIE9Gb3JtTGF5b3V0TWFuYWdlckNvbXBvbmVudC5UQUJfTU9ERSwgT0Zvcm1MYXlvdXRNYW5hZ2VyQ29tcG9uZW50LlNQTElUX1BBTkVfTU9ERV07XG4gICAgdGhpcy5fbW9kZSA9ICh2YWx1ZSB8fCAnJykudG9Mb3dlckNhc2UoKTtcbiAgICBpZiAoYXZhaWxhYmxlTW9kZVZhbHVlcy5pbmRleE9mKHRoaXMuX21vZGUpID09PSAtMSkge1xuICAgICAgdGhpcy5fbW9kZSA9IE9Gb3JtTGF5b3V0TWFuYWdlckNvbXBvbmVudC5ESUFMT0dfTU9ERTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgX3NlcGFyYXRvcjogc3RyaW5nID0gJyAnO1xuXG4gIC8qKlxuICAqIEBkZXByZWNhdGVkIHVzZXIgc2hvdWxkIHVzZSB0aGUgb3B0aW9ucyBpbnB1dFxuICAqL1xuICBzZXQgc2VwYXJhdG9yKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9zZXBhcmF0b3IgPSB2YWx1ZTtcbiAgfVxuXG4gIGdldCBzZXBhcmF0b3IoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fc2VwYXJhdG9yO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIHVzZXIgc2hvdWxkIHVzZSB0aGUgb3B0aW9ucyBpbnB1dFxuICAgKi9cbiAgcHVibGljIHRpdGxlOiBzdHJpbmc7XG5cbiAgQEJvb2xlYW5JbnB1dENvbnZlcnRlcigpXG4gIHB1YmxpYyBzdG9yZVN0YXRlOiBib29sZWFuID0gdHJ1ZTtcblxuICAvKipcbiAgKiBAZGVwcmVjYXRlZCB1c2VyIHNob3VsZCB1c2UgdGhlIG9wdGlvbnMgaW5wdXRcbiAgKi9cbiAgcHVibGljIHRpdGxlRGF0YU9yaWdpbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBUaGUgbmV4dCBpbnB1dHMgYXJlIGRlcHJlY2F0ZWQgYW5kIHVzZXIgc2hvdWxkIHVzZSB0aGUgT0Zvcm1MYXlvdXREaWFsb2dPcHRpb25zRGlyZWN0aXZlIGlucHV0c1xuICAgKi9cbiAgcHVibGljIGRpYWxvZ1dpZHRoOiBzdHJpbmc7XG4gIHB1YmxpYyBkaWFsb2dNaW5XaWR0aDogc3RyaW5nO1xuICBwdWJsaWMgZGlhbG9nTWF4V2lkdGg6IHN0cmluZztcbiAgcHVibGljIGRpYWxvZ0hlaWdodDogc3RyaW5nO1xuICBwdWJsaWMgZGlhbG9nTWluSGVpZ2h0OiBzdHJpbmc7XG4gIHB1YmxpYyBkaWFsb2dNYXhIZWlnaHQ6IHN0cmluZztcbiAgcHVibGljIGRpYWxvZ0NsYXNzOiBzdHJpbmcgPSAnJztcbiAgcHVibGljIGRpYWxvZ1RpdGxlU2VwYXJhdG9yID0gJzonO1xuXG4gIEBWaWV3Q2hpbGQoJ3RhYkdyb3VwJylcbiAgcHVibGljIG9UYWJHcm91cDogT0Zvcm1MYXlvdXRNYW5hZ2VyTW9kZTtcbiAgcHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPE9Gb3JtTGF5b3V0RGlhbG9nQ29tcG9uZW50PjtcbiAgQFZpZXdDaGlsZCgnc3BsaXRQYW5lJylcbiAgcHVibGljIG9TcGxpdFBhbmU6IE9Gb3JtTGF5b3V0TWFuYWdlck1vZGU7XG5cbiAgcHVibGljIG9uTWFpblRhYlNlbGVjdGVkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBwdWJsaWMgb25TZWxlY3RlZFRhYkNoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgcHVibGljIG9uQ2xvc2VUYWI6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgcHJvdGVjdGVkIF9sYWJlbENvbHVtbnM6IHN0cmluZztcblxuICBnZXQgbGFiZWxDb2x1bW5zKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2xhYmVsQ29sdW1ucztcbiAgfVxuXG4gIC8qKlxuICAqIEBkZXByZWNhdGVkIHVzZXIgc2hvdWxkIHVzZSB0aGUgb3B0aW9ucyBpbnB1dFxuICAqL1xuICBzZXQgbGFiZWxDb2x1bW5zKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9sYWJlbENvbHVtbnMgPSB2YWx1ZTtcbiAgICB0aGlzLl9sYWJlbENvbHNBcnJheSA9IFV0aWwucGFyc2VBcnJheSh2YWx1ZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgX2xhYmVsQ29sc0FycmF5OiBzdHJpbmdbXSA9IFtdO1xuXG4gIGdldCBsYWJlbENvbHNBcnJheSgpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMuX2xhYmVsQ29sc0FycmF5O1xuICB9XG5cbiAgc2V0IGxhYmVsQ29sc0FycmF5KHZhbHVlOiBzdHJpbmdbXSkge1xuICAgIHRoaXMuX2xhYmVsQ29sc0FycmF5ID0gdmFsdWU7XG4gIH1cblxuICBwcm90ZWN0ZWQgdHJhbnNsYXRlU2VydmljZTogT1RyYW5zbGF0ZVNlcnZpY2U7XG4gIHByb3RlY3RlZCBvRm9ybUxheW91dE1hbmFnZXJTZXJ2aWNlOiBPRm9ybUxheW91dE1hbmFnZXJTZXJ2aWNlO1xuICBwcm90ZWN0ZWQgbG9jYWxTdG9yYWdlU2VydmljZTogTG9jYWxTdG9yYWdlU2VydmljZTtcblxuICBwcm90ZWN0ZWQgX3RhYkdyb3VwT3B0aW9uczogYW55ID0ge307XG5cbiAgZ2V0IHRhYkdyb3VwT3B0aW9ucygpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLl90YWJHcm91cE9wdGlvbnM7XG4gIH1cblxuICBhZGRUYWJHcm91cE9wdGlvbnModmFsdWU6IGFueSkge1xuICAgIE9iamVjdC5hc3NpZ24odGhpcy5fdGFiR3JvdXBPcHRpb25zLCB2YWx1ZSk7XG4gICAgaWYgKHZhbHVlLmhhc093blByb3BlcnR5KCdsYWJlbENvbHVtbnMnKSkge1xuICAgICAgdGhpcy5sYWJlbENvbHNBcnJheSA9IFV0aWwucGFyc2VBcnJheSh2YWx1ZVsnbGFiZWxDb2x1bW5zJ10pO1xuICAgIH1cbiAgICBpZiAodmFsdWUuaGFzT3duUHJvcGVydHkoJ3NlcGFyYXRvcicpKSB7XG4gICAgICB0aGlzLnNlcGFyYXRvciA9IHZhbHVlWydzZXBhcmF0b3InXTtcbiAgICB9XG4gICAgaWYgKHZhbHVlLmhhc093blByb3BlcnR5KCdzdHJldGNoVGFicycpKSB7XG4gICAgICB0aGlzLnN0cmV0Y2hUYWJzID0gdmFsdWVbJ3N0cmV0Y2hUYWJzJ107XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIF9kaWFsb2dPcHRpb25zOiBhbnkgPSB7fTtcblxuICBnZXQgZGlhbG9nT3B0aW9ucygpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLl9kaWFsb2dPcHRpb25zO1xuICB9XG5cbiAgYWRkRGlhbG9nT3B0aW9ucyh2YWx1ZTogYW55KSB7XG4gICAgT2JqZWN0LmFzc2lnbih0aGlzLl9kaWFsb2dPcHRpb25zLCB2YWx1ZSk7XG4gICAgaWYgKHZhbHVlLmhhc093blByb3BlcnR5KCdsYWJlbENvbHVtbnMnKSkge1xuICAgICAgdGhpcy5sYWJlbENvbHNBcnJheSA9IFV0aWwucGFyc2VBcnJheSh2YWx1ZVsnbGFiZWxDb2x1bW5zJ10pO1xuICAgIH1cbiAgICBpZiAodmFsdWUuaGFzT3duUHJvcGVydHkoJ3NlcGFyYXRvcicpKSB7XG4gICAgICB0aGlzLnNlcGFyYXRvciA9IHZhbHVlWydzZXBhcmF0b3InXTtcbiAgICB9XG4gICAgaWYgKHZhbHVlLmhhc093blByb3BlcnR5KCdkaWFsb2dUaXRsZVNlcGFyYXRvcicpKSB7XG4gICAgICB0aGlzLmRpYWxvZ1RpdGxlU2VwYXJhdG9yID0gdmFsdWVbJ2RpYWxvZ1RpdGxlU2VwYXJhdG9yJ107XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIF9zcGxpdFBhbmVPcHRpb25zOiBhbnkgPSB7fTtcblxuICBnZXQgc3BsaXRQYW5lT3B0aW9ucygpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLl9zcGxpdFBhbmVPcHRpb25zO1xuICB9XG5cbiAgYWRkU3BsaXRQYW5lT3B0aW9ucyh2YWx1ZTogYW55KSB7XG4gICAgT2JqZWN0LmFzc2lnbih0aGlzLl9zcGxpdFBhbmVPcHRpb25zLCB2YWx1ZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYWRkaW5nR3VhcmQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBwdWJsaWMgbmF2aWdhdGlvblNlcnZpY2U6IE5hdmlnYXRpb25TZXJ2aWNlO1xuXG4gIHB1YmxpYyBfbWFya0ZvclVwZGF0ZTogYm9vbGVhbiA9IGZhbHNlO1xuICBwdWJsaWMgb25UcmlnZ2VyVXBkYXRlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIHByb3RlY3RlZCBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICBwcm90ZWN0ZWQgY29tcG9uZW50U3RhdGVTZXJ2aWNlOiBPRm9ybUxheW91dE1hbmFnZXJDb21wb25lbnRTdGF0ZVNlcnZpY2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBwcm90ZWN0ZWQgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJvdGVjdGVkIGFjdFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcm90ZWN0ZWQgZGlhbG9nOiBNYXREaWFsb2csXG4gICAgcHJvdGVjdGVkIGVsUmVmOiBFbGVtZW50UmVmLFxuICAgIEBTa2lwU2VsZigpIEBPcHRpb25hbCgpXG4gICAgcHVibGljIHBhcmVudEZvcm1MYXlvdXRNYW5hZ2VyOiBPRm9ybUxheW91dE1hbmFnZXJCYXNlXG4gICkge1xuICAgIHRoaXMub0Zvcm1MYXlvdXRNYW5hZ2VyU2VydmljZSA9IHRoaXMuaW5qZWN0b3IuZ2V0KE9Gb3JtTGF5b3V0TWFuYWdlclNlcnZpY2UpO1xuICAgIHRoaXMubG9jYWxTdG9yYWdlU2VydmljZSA9IHRoaXMuaW5qZWN0b3IuZ2V0KExvY2FsU3RvcmFnZVNlcnZpY2UpO1xuICAgIHRoaXMudHJhbnNsYXRlU2VydmljZSA9IHRoaXMuaW5qZWN0b3IuZ2V0KE9UcmFuc2xhdGVTZXJ2aWNlKTtcbiAgICB0aGlzLm5hdmlnYXRpb25TZXJ2aWNlID0gdGhpcy5pbmplY3Rvci5nZXQoTmF2aWdhdGlvblNlcnZpY2UpO1xuICAgIHRoaXMuY29tcG9uZW50U3RhdGVTZXJ2aWNlID0gdGhpcy5pbmplY3Rvci5nZXQ8T0Zvcm1MYXlvdXRNYW5hZ2VyQ29tcG9uZW50U3RhdGVTZXJ2aWNlPihBYnN0cmFjdENvbXBvbmVudFN0YXRlU2VydmljZSBhcyBUeXBlPE9Gb3JtTGF5b3V0TWFuYWdlckNvbXBvbmVudFN0YXRlU2VydmljZT4pO1xuICAgIGlmICh0aGlzLnN0b3JlU3RhdGUpIHtcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9uLmFkZCh0aGlzLmxvY2FsU3RvcmFnZVNlcnZpY2Uub25Sb3V0ZUNoYW5nZS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgdGhpcy51cGRhdGVTdGF0ZVN0b3JhZ2UoKTtcbiAgICAgIH0pKTtcbiAgICB9XG4gICAgdGhpcy5nZXRJbmplY3Rpb25Ub2tlbkNvbmZpZygpO1xuXG4gIH1cblxuICBwcml2YXRlIGdldEluamVjdGlvblRva2VuQ29uZmlnKCkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBvR2xvYmFsQ29uZmlnID0gdGhpcy5pbmplY3Rvci5nZXQoT19HTE9CQUxfQ09ORklHKTtcbiAgICAgIGlmIChVdGlsLmlzRGVmaW5lZChvR2xvYmFsQ29uZmlnLnN0b3JlU3RhdGUpKSB7XG4gICAgICAgIHRoaXMuc3RvcmVTdGF0ZSA9IG9HbG9iYWxDb25maWcuc3RvcmVTdGF0ZTtcbiAgICAgICAgaWYgKCF0aGlzLnN0b3JlU3RhdGUpIHtcbiAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIC8vIERvIG5vdGhpbmcgYmVjYXVzZSBpcyBvcHRpb25hbFxuICAgIH1cbiAgfVxuXG4gIGdldCBzdGF0ZSgpOiBPRm9ybUxheW91dE1hbmFnZXJDb21wb25lbnRTdGF0ZUNsYXNzIHtcbiAgICByZXR1cm4gdGhpcy5jb21wb25lbnRTdGF0ZVNlcnZpY2Uuc3RhdGU7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5hZGRBY3RpdmF0ZUNoaWxkR3VhcmQoKTtcbiAgICBpZiAoIVV0aWwuaXNEZWZpbmVkKHRoaXMub2F0dHIpKSB7XG4gICAgICB0aGlzLm9hdHRyID0gKHRoaXMudGl0bGUgfHwgJycpICsgdGhpcy5tb2RlO1xuICAgICAgY29uc29sZS53YXJuKCdvLWZvcm0tbGF5b3V0LW1hbmFnZXIgbXVzdCBoYXZlIGFuIHVuaXF1ZSBhdHRyJyk7XG4gICAgfVxuICAgIHRoaXMub0Zvcm1MYXlvdXRNYW5hZ2VyU2VydmljZS5yZWdpc3RlckZvcm1MYXlvdXRNYW5hZ2VyKHRoaXMpO1xuICAgIGlmICh0aGlzLnN0b3JlU3RhdGUpIHtcbiAgICAgIHRoaXMuY29tcG9uZW50U3RhdGVTZXJ2aWNlLmluaXRpYWxpemUodGhpcyk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICh0aGlzLmVsUmVmKSB7XG4gICAgICAgIHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoJ3RpdGxlJyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgICB0aGlzLm9Gb3JtTGF5b3V0TWFuYWdlclNlcnZpY2UucmVtb3ZlRm9ybUxheW91dE1hbmFnZXIodGhpcyk7XG4gICAgdGhpcy5kZXN0cm95QWN0aXZhdGVDaGlsZEd1YXJkKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0QXR0cmlidXRlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMub2F0dHI7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q29tcG9uZW50S2V5KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICdPRm9ybUxheW91dE1hbmFnZXJDb21wb25lbnRfJyArIHRoaXMub2F0dHI7XG4gIH1cblxuICBwdWJsaWMgZ2V0Um91dGVLZXkoKTogc3RyaW5nIHtcbiAgICBsZXQgcm91dGUgPSB0aGlzLnJvdXRlci51cmw7XG4gICAgdGhpcy5hY3RSb3V0ZS5wYXJhbXMuc3Vic2NyaWJlKHBhcmFtcyA9PiB7XG4gICAgICBPYmplY3Qua2V5cyhwYXJhbXMpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgcm91dGUgPSByb3V0ZS5yZXBsYWNlKHBhcmFtc1trZXldLCBrZXkpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHJvdXRlO1xuICB9XG5cbiAgcHVibGljIGdldERhdGFUb1N0b3JlKCk6IGFueSB7XG4gICAgY29uc3QgY29tcFJlZiA9IHRoaXMuZ2V0TGF5b3V0TW9kZUNvbXBvbmVudCgpO1xuICAgIHJldHVybiBVdGlsLmlzRGVmaW5lZChjb21wUmVmKSA/IGNvbXBSZWYuZ2V0RGF0YVRvU3RvcmUoKSA6IHt9O1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OmJlZm9yZXVubG9hZCcsIFtdKVxuICBwdWJsaWMgYmVmb3JldW5sb2FkSGFuZGxlcigpOiB2b2lkIHtcbiAgICB0aGlzLnVwZGF0ZVN0YXRlU3RvcmFnZSgpO1xuICB9XG5cbiAgcHVibGljIGdldExhYmVsRnJvbVVybFBhcmFtcyh1cmxQYXJhbXM6IG9iamVjdCk6IHN0cmluZyB7XG4gICAgbGV0IGxhYmVsID0gJyc7XG4gICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKHVybFBhcmFtcyk7XG4gICAga2V5cy5mb3JFYWNoKChwYXJhbSwgaSkgPT4ge1xuICAgICAgbGFiZWwgKz0gdXJsUGFyYW1zW3BhcmFtXSArICgoaSA8IGtleXMubGVuZ3RoIC0gMSkgPyB0aGlzLnNlcGFyYXRvciA6ICcnKTtcbiAgICB9KTtcbiAgICByZXR1cm4gbGFiZWw7XG4gIH1cblxuICBwdWJsaWMgZ2V0Rm9ybURhdGFGcm9tTGFiZWxDb2x1bW5zKGRhdGE6IGFueSkge1xuICAgIGNvbnN0IGZvcm1EYXRhID0ge307XG4gICAgT2JqZWN0LmtleXMoZGF0YSkuZm9yRWFjaCh4ID0+IHtcbiAgICAgIGlmICh0aGlzLmxhYmVsQ29sc0FycmF5LmluZGV4T2YoeCkgPiAtMSkge1xuICAgICAgICBmb3JtRGF0YVt4XSA9IGRhdGFbeF07XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGZvcm1EYXRhO1xuICB9XG5cbiAgcHVibGljIGFkZEFjdGl2YXRlQ2hpbGRHdWFyZCgpOiB2b2lkIHtcbiAgICBjb25zdCByb3V0ZUNvbmZpZyA9IHRoaXMuZ2V0UGFyZW50QWN0Um91dGVSb3V0ZSgpO1xuICAgIGlmIChVdGlsLmlzRGVmaW5lZChyb3V0ZUNvbmZpZykpIHtcbiAgICAgIGNvbnN0IGNhbkFjdGl2YXRlQ2hpbGRBcnJheSA9IChyb3V0ZUNvbmZpZy5jYW5BY3RpdmF0ZUNoaWxkIHx8IFtdKTtcbiAgICAgIGxldCBwcmV2aW91c2x5QWRkZWQgPSBmYWxzZTtcbiAgICAgIGZvciAobGV0IGkgPSAwLCBsZW4gPSBjYW5BY3RpdmF0ZUNoaWxkQXJyYXkubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgY29uc3QgZ3VhcmRDaGlsZCA9IHRoaXMuaW5qZWN0b3IuZ2V0KENhbkFjdGl2YXRlRm9ybUxheW91dENoaWxkR3VhcmQpO1xuICAgICAgICBwcmV2aW91c2x5QWRkZWQgPSAoY2FuQWN0aXZhdGVDaGlsZEFycmF5W2ldID09PSBndWFyZENoaWxkLmNvbnN0cnVjdG9yKTtcbiAgICAgICAgaWYgKHByZXZpb3VzbHlBZGRlZCkge1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoIXByZXZpb3VzbHlBZGRlZCkge1xuICAgICAgICB0aGlzLmFkZGluZ0d1YXJkID0gdHJ1ZTtcbiAgICAgICAgY2FuQWN0aXZhdGVDaGlsZEFycmF5LnB1c2goQ2FuQWN0aXZhdGVGb3JtTGF5b3V0Q2hpbGRHdWFyZCk7XG4gICAgICAgIHJvdXRlQ29uZmlnLmNhbkFjdGl2YXRlQ2hpbGQgPSBjYW5BY3RpdmF0ZUNoaWxkQXJyYXk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGRlc3Ryb3lBY3RpdmF0ZUNoaWxkR3VhcmQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmFkZGluZ0d1YXJkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMub0Zvcm1MYXlvdXRNYW5hZ2VyU2VydmljZS5hY3RpdmVGb3JtTGF5b3V0TWFuYWdlciA9IHVuZGVmaW5lZDtcbiAgICBjb25zdCByb3V0ZUNvbmZpZyA9IHRoaXMuZ2V0UGFyZW50QWN0Um91dGVSb3V0ZSgpO1xuICAgIGlmIChVdGlsLmlzRGVmaW5lZChyb3V0ZUNvbmZpZykpIHtcbiAgICAgIGZvciAobGV0IGkgPSAocm91dGVDb25maWcuY2FuQWN0aXZhdGVDaGlsZCB8fCBbXSkubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgY29uc3QgZ3VhcmRDaGlsZCA9IHRoaXMuaW5qZWN0b3IuZ2V0KENhbkFjdGl2YXRlRm9ybUxheW91dENoaWxkR3VhcmQpO1xuICAgICAgICBpZiAocm91dGVDb25maWcuY2FuQWN0aXZhdGVDaGlsZFtpXSA9PT0gZ3VhcmRDaGlsZC5jb25zdHJ1Y3Rvcikge1xuICAgICAgICAgIHJvdXRlQ29uZmlnLmNhbkFjdGl2YXRlQ2hpbGQuc3BsaWNlKGksIDEpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGlzRGlhbG9nTW9kZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5tb2RlID09PSBPRm9ybUxheW91dE1hbmFnZXJDb21wb25lbnQuRElBTE9HX01PREU7XG4gIH1cblxuICBwdWJsaWMgaXNUYWJNb2RlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm1vZGUgPT09IE9Gb3JtTGF5b3V0TWFuYWdlckNvbXBvbmVudC5UQUJfTU9ERTtcbiAgfVxuXG4gIHB1YmxpYyBpc1NwbGl0UGFuZU1vZGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubW9kZSA9PT0gT0Zvcm1MYXlvdXRNYW5hZ2VyQ29tcG9uZW50LlNQTElUX1BBTkVfTU9ERTtcbiAgfVxuXG4gIHB1YmxpYyBhZGREZXRhaWxDb21wb25lbnQoY2hpbGRSb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgdXJsOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBuZXdEZXRhaWxDb21wOiBGb3JtTGF5b3V0RGV0YWlsQ29tcG9uZW50RGF0YSA9IHtcbiAgICAgIHBhcmFtczogY2hpbGRSb3V0ZS5wYXJhbXMsXG4gICAgICBxdWVyeVBhcmFtczogY2hpbGRSb3V0ZS5xdWVyeVBhcmFtcyxcbiAgICAgIHVybFNlZ21lbnRzOiBjaGlsZFJvdXRlLnVybCxcbiAgICAgIGNvbXBvbmVudDogY2hpbGRSb3V0ZS5yb3V0ZUNvbmZpZy5jb21wb25lbnQsXG4gICAgICB1cmw6IHVybCxcbiAgICAgIGlkOiBVdGlsLnJhbmRvbU51bWJlcigpLnRvU3RyaW5nKCksXG4gICAgICBsYWJlbDogJycsXG4gICAgICBpbm5lckZvcm1zSW5mbzoge30sXG4gICAgICBpbnNlcnRpb25Nb2RlOiBjaGlsZFJvdXRlLnF1ZXJ5UGFyYW1zW0NvZGVzLklOU0VSVElPTl9NT0RFXSA9PT0gJ3RydWUnXG4gICAgfTtcbiAgICBpZiAodGhpcy5pc0RpYWxvZ01vZGUoKSkge1xuICAgICAgdGhpcy5vcGVuRm9ybUxheW91dERpYWxvZyhuZXdEZXRhaWxDb21wKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgY29tcFJlZiA9IHRoaXMuZ2V0TGF5b3V0TW9kZUNvbXBvbmVudCgpO1xuICAgICAgaWYgKFV0aWwuaXNEZWZpbmVkKGNvbXBSZWYpKSB7XG4gICAgICAgIGNvbXBSZWYub3BlbkRldGFpbChuZXdEZXRhaWxDb21wKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgY2xvc2VEZXRhaWwob3B0aW9ucz86IEZvcm1MYXlvdXRDbG9zZURldGFpbE9wdGlvbnMpOiB2b2lkIHtcbiAgICBjb25zdCBjb21wUmVmID0gdGhpcy5nZXRMYXlvdXRNb2RlQ29tcG9uZW50KCk7XG4gICAgaWYgKFV0aWwuaXNEZWZpbmVkKGNvbXBSZWYpKSB7XG4gICAgICBjb21wUmVmLmNsb3NlRGV0YWlsKG9wdGlvbnMpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBjbG9zZURldGFpbHMoZGV0YWlsc0RhdGE6IGFueVtdID0gW10sIG9wdGlvbnM/OiBGb3JtTGF5b3V0Q2xvc2VEZXRhaWxPcHRpb25zKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNUYWJNb2RlKCkgJiYgVXRpbC5pc0RlZmluZWQodGhpcy5vVGFiR3JvdXApKSB7XG4gICAgICB0aGlzLm9UYWJHcm91cC5jbG9zZURldGFpbHMoZGV0YWlsc0RhdGEsIG9wdGlvbnMpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvcGVuRm9ybUxheW91dERpYWxvZyhkZXRhaWxDb21wOiBGb3JtTGF5b3V0RGV0YWlsQ29tcG9uZW50RGF0YSk6IHZvaWQge1xuICAgIGNvbnN0IGNzc2NsYXNzID0gWydvLWZvcm0tbGF5b3V0LWRpYWxvZy1vdmVybGF5J107XG4gICAgaWYgKHRoaXMuZGlhbG9nQ2xhc3MpIHtcbiAgICAgIGNzc2NsYXNzLnB1c2godGhpcy5kaWFsb2dDbGFzcyk7XG4gICAgfVxuXG4gICAgY29uc3QgZGlhbG9nT3B0aW9ucyA9ICh0aGlzLmRpYWxvZ09wdGlvbnMgfHwge30pO1xuXG4gICAgY29uc3QgZGlhbG9nQ29uZmlnOiBNYXREaWFsb2dDb25maWcgPSB7XG4gICAgICBkYXRhOiB7XG4gICAgICAgIGRhdGE6IGRldGFpbENvbXAsXG4gICAgICAgIGxheW91dE1hbmFnZXJDb21wb25lbnQ6IHRoaXMsXG4gICAgICAgIHRpdGxlOiAodGhpcy50aXRsZSB8fCBkaWFsb2dPcHRpb25zLnRpdGxlKSxcbiAgICAgICAgZGlhbG9nVGl0bGVTZXBhcmF0b3I6IHRoaXMuZGlhbG9nVGl0bGVTZXBhcmF0b3JcbiAgICAgIH0sXG4gICAgICB3aWR0aDogZGlhbG9nT3B0aW9ucy53aWR0aCB8fCB0aGlzLmRpYWxvZ1dpZHRoLFxuICAgICAgbWluV2lkdGg6IGRpYWxvZ09wdGlvbnMubWluV2lkdGggfHwgdGhpcy5kaWFsb2dNaW5XaWR0aCxcbiAgICAgIG1heFdpZHRoOiBkaWFsb2dPcHRpb25zLm1heFdpZHRoIHx8IHRoaXMuZGlhbG9nTWF4V2lkdGgsXG4gICAgICBoZWlnaHQ6IGRpYWxvZ09wdGlvbnMuaGVpZ2h0IHx8IHRoaXMuZGlhbG9nSGVpZ2h0LFxuICAgICAgbWluSGVpZ2h0OiBkaWFsb2dPcHRpb25zLm1pbkhlaWdodCB8fCB0aGlzLmRpYWxvZ01pbkhlaWdodCxcbiAgICAgIG1heEhlaWdodDogZGlhbG9nT3B0aW9ucy5tYXhIZWlnaHQgfHwgdGhpcy5kaWFsb2dNYXhIZWlnaHQsXG4gICAgICBkaXNhYmxlQ2xvc2U6IGRpYWxvZ09wdGlvbnMuZGlzYWJsZUNsb3NlIHx8IHRydWUsXG4gICAgICBwYW5lbENsYXNzOiBkaWFsb2dPcHRpb25zLmNsYXNzIHx8IGNzc2NsYXNzXG4gICAgfTtcblxuICAgIGlmICh0aGlzLmRpYWxvZ09wdGlvbnMpIHtcbiAgICAgIGRpYWxvZ0NvbmZpZy5jbG9zZU9uTmF2aWdhdGlvbiA9IHRoaXMuZGlhbG9nT3B0aW9ucy5jbG9zZU9uTmF2aWdhdGlvbjtcbiAgICAgIGRpYWxvZ0NvbmZpZy5iYWNrZHJvcENsYXNzID0gdGhpcy5kaWFsb2dPcHRpb25zLmJhY2tkcm9wQ2xhc3M7XG4gICAgICBkaWFsb2dDb25maWcucG9zaXRpb24gPSB0aGlzLmRpYWxvZ09wdGlvbnMucG9zaXRpb247XG4gICAgICBkaWFsb2dDb25maWcuZGlzYWJsZUNsb3NlID0gdGhpcy5kaWFsb2dPcHRpb25zLmRpc2FibGVDbG9zZTtcbiAgICB9XG5cbiAgICB0aGlzLmRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oT0Zvcm1MYXlvdXREaWFsb2dDb21wb25lbnQsIGRpYWxvZ0NvbmZpZyk7XG4gICAgdGhpcy5kaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMubWFya0ZvclVwZGF0ZSkge1xuICAgICAgICB0aGlzLnVwZGF0ZUlmTmVlZGVkKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnJlbG9hZE1haW5Db21wb25lbnRzKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0Rm9ybUNhY2hlRGF0YSgpOiBGb3JtTGF5b3V0RGV0YWlsQ29tcG9uZW50RGF0YSB7XG4gICAgY29uc3QgY29tcFJlZiA9IHRoaXMuZ2V0TGF5b3V0TW9kZUNvbXBvbmVudCgpO1xuICAgIHJldHVybiBVdGlsLmlzRGVmaW5lZChjb21wUmVmKSA/IGNvbXBSZWYuZ2V0Rm9ybUNhY2hlRGF0YSgpIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgcHVibGljIHNldE1vZGlmaWVkU3RhdGUoZm9ybUF0dHI6IHN0cmluZywgbW9kaWZpZWQ6IGJvb2xlYW4sIGNvbmZpcm1FeGl0OiBib29sZWFuKTogdm9pZCB7XG4gICAgY29uc3QgY29tcFJlZiA9IHRoaXMuZ2V0TGF5b3V0TW9kZUNvbXBvbmVudCgpO1xuICAgIGlmIChVdGlsLmlzRGVmaW5lZChjb21wUmVmKSkge1xuICAgICAgY29tcFJlZi5zZXRNb2RpZmllZFN0YXRlKGZvcm1BdHRyLCBtb2RpZmllZCwgY29uZmlybUV4aXQpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXRMYWJlbEZyb21EYXRhKGRhdGE6IGFueSk6IHN0cmluZyB7XG4gICAgbGV0IGxhYmVsID0gJyc7XG4gICAgY29uc3QgaXNEYXRhRGVmaW5lZCA9IFV0aWwuaXNEZWZpbmVkKGRhdGEpO1xuICAgIGlmIChpc0RhdGFEZWZpbmVkICYmIGRhdGEuaGFzT3duUHJvcGVydHkoJ25ld190YWJfdGl0bGUnKSkge1xuICAgICAgbGFiZWwgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuZ2V0KGRhdGEubmV3X3RhYl90aXRsZSk7XG4gICAgfSBlbHNlIGlmIChpc0RhdGFEZWZpbmVkICYmIHRoaXMubGFiZWxDb2xzQXJyYXkubGVuZ3RoICE9PSAwKSB7XG4gICAgICB0aGlzLmxhYmVsQ29sc0FycmF5LmZvckVhY2goKGNvbCwgaWR4KSA9PiB7XG4gICAgICAgIGlmIChkYXRhW2NvbF0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGxhYmVsICs9IGRhdGFbY29sXSArICgoaWR4IDwgdGhpcy5sYWJlbENvbHNBcnJheS5sZW5ndGggLSAxKSA/IHRoaXMuc2VwYXJhdG9yIDogJycpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGxhYmVsO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZU5hdmlnYXRpb24oZGF0YTogYW55LCBrZXlzVmFsdWVzOiBhbnksIGluc2VydGlvbk1vZGU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBjb25zdCBjb21wUmVmID0gdGhpcy5nZXRMYXlvdXRNb2RlQ29tcG9uZW50KCk7XG4gICAgaWYgKFV0aWwuaXNEZWZpbmVkKGNvbXBSZWYpKSB7XG4gICAgICBjb21wUmVmLnVwZGF0ZU5hdmlnYXRpb24oZGF0YSwga2V5c1ZhbHVlcywgaW5zZXJ0aW9uTW9kZSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHVwZGF0ZUFjdGl2ZURhdGEoZGF0YTogYW55KSB7XG4gICAgY29uc3QgY29tcFJlZiA9IHRoaXMuZ2V0TGF5b3V0TW9kZUNvbXBvbmVudCgpO1xuICAgIGlmIChVdGlsLmlzRGVmaW5lZChjb21wUmVmKSkge1xuICAgICAgY29tcFJlZi51cGRhdGVBY3RpdmVEYXRhKGRhdGEpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXRSb3V0ZU9mQWN0aXZlSXRlbSgpOiBhbnlbXSB7XG4gICAgY29uc3QgY29tcFJlZiA9IHRoaXMuZ2V0TGF5b3V0TW9kZUNvbXBvbmVudCgpO1xuICAgIHJldHVybiBVdGlsLmlzRGVmaW5lZChjb21wUmVmKSA/IGNvbXBSZWYuZ2V0Um91dGVPZkFjdGl2ZUl0ZW0oKSA6IFtdO1xuICB9XG5cbiAgcHVibGljIGlzTWFpbkNvbXBvbmVudChjb21wOiBJTGF5b3V0TWFuYWdlckNvbXBvbmVudCk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLmlzRGlhbG9nTW9kZSgpKSB7XG4gICAgICByZXR1cm4gIWNvbXAub0Zvcm1MYXlvdXREaWFsb2c7XG4gICAgfVxuICAgIGNvbnN0IGNvbXBSZWYgPSB0aGlzLmdldExheW91dE1vZGVDb21wb25lbnQoKTtcbiAgICByZXR1cm4gVXRpbC5pc0RlZmluZWQoY29tcFJlZikgJiYgY29tcFJlZi5pc01haW5Db21wb25lbnQoY29tcCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0Um91dGVGb3JDb21wb25lbnQoY29tcDogSUxheW91dE1hbmFnZXJDb21wb25lbnQpOiBhbnlbXSB7XG4gICAgY29uc3QgcmVzdWx0ID0gW107XG4gICAgaWYgKHRoaXMucGFyZW50Rm9ybUxheW91dE1hbmFnZXIpIHtcbiAgICAgIGNvbnN0IHBhcmVudFJvdXRlID0gdGhpcy5wYXJlbnRGb3JtTGF5b3V0TWFuYWdlci5nZXRSb3V0ZUZvckNvbXBvbmVudChjb21wKTtcbiAgICAgIGlmIChwYXJlbnRSb3V0ZSAmJiBwYXJlbnRSb3V0ZS5sZW5ndGggPiAwKSB7XG4gICAgICAgIHJlc3VsdC5wdXNoKC4uLnBhcmVudFJvdXRlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKCF0aGlzLmlzTWFpbkNvbXBvbmVudChjb21wKSkge1xuICAgICAgY29uc3QgYWN0aXZlUm91dGUgPSB0aGlzLmdldFJvdXRlT2ZBY3RpdmVJdGVtKCk7XG4gICAgICBpZiAoYWN0aXZlUm91dGUgJiYgYWN0aXZlUm91dGUubGVuZ3RoID4gMCkge1xuICAgICAgICByZXN1bHQucHVzaCguLi5hY3RpdmVSb3V0ZSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBwdWJsaWMgc2V0QXNBY3RpdmVGb3JtTGF5b3V0TWFuYWdlcigpOiB2b2lkIHtcbiAgICB0aGlzLm9Gb3JtTGF5b3V0TWFuYWdlclNlcnZpY2UuYWN0aXZlRm9ybUxheW91dE1hbmFnZXIgPSB0aGlzO1xuICB9XG5cbiAgcHVibGljIHJlbG9hZE1haW5Db21wb25lbnRzKCk6IHZvaWQge1xuICAgIHRoaXMub25UcmlnZ2VyVXBkYXRlLmVtaXQoKTtcbiAgfVxuXG4gIHB1YmxpYyBhbGxvd1RvVXBkYXRlTmF2aWdhdGlvbihmb3JtQXR0cjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICh0aGlzLmlzVGFiTW9kZSgpICYmIFV0aWwuaXNEZWZpbmVkKHRoaXMub1RhYkdyb3VwKSAmJiBVdGlsLmlzRGVmaW5lZCh0aGlzLnRpdGxlRGF0YU9yaWdpbikpID9cbiAgICAgIHRoaXMudGl0bGVEYXRhT3JpZ2luID09PSBmb3JtQXR0ciA6XG4gICAgICB0cnVlO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZVN0YXRlU3RvcmFnZSgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMubG9jYWxTdG9yYWdlU2VydmljZSB8fCAhdGhpcy5zdG9yZVN0YXRlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGlzVGFiTW9kZSA9IHRoaXMuaXNUYWJNb2RlKCkgJiYgVXRpbC5pc0RlZmluZWQodGhpcy5vVGFiR3JvdXApO1xuICAgIGNvbnN0IGlzU3BsaXRQYW5lTW9kZSA9IHRoaXMuaXNTcGxpdFBhbmVNb2RlKCkgJiYgVXRpbC5pc0RlZmluZWQodGhpcy5vU3BsaXRQYW5lKTtcbiAgICBpZiAoaXNUYWJNb2RlIHx8IGlzU3BsaXRQYW5lTW9kZSkge1xuICAgICAgdGhpcy5sb2NhbFN0b3JhZ2VTZXJ2aWNlLnVwZGF0ZUNvbXBvbmVudFN0b3JhZ2UodGhpcywgdGhpcy5nZXRSb3V0ZUtleSgpKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldFBhcmVudEFjdFJvdXRlUm91dGUoKTogUm91dGUge1xuICAgIGxldCBhY3RSb3V0ZSA9IHRoaXMuYWN0Um91dGU7XG4gICAgd2hpbGUgKGFjdFJvdXRlLnBhcmVudCAhPT0gdW5kZWZpbmVkICYmIGFjdFJvdXRlLnBhcmVudCAhPT0gbnVsbCkge1xuICAgICAgaWYgKGFjdFJvdXRlLnJvdXRlQ29uZmlnLmNoaWxkcmVuIHx8IGFjdFJvdXRlLnJvdXRlQ29uZmlnLmxvYWRDaGlsZHJlbikge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGFjdFJvdXRlID0gYWN0Um91dGUucGFyZW50O1xuICAgIH1cbiAgICByZXR1cm4gYWN0Um91dGUucm91dGVDb25maWc7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlSWZOZWVkZWQoKSB7XG4gICAgaWYgKHRoaXMubWFya0ZvclVwZGF0ZSkge1xuICAgICAgdGhpcy5tYXJrRm9yVXBkYXRlID0gZmFsc2U7XG4gICAgICB0aGlzLm9uVHJpZ2dlclVwZGF0ZS5lbWl0KCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldFBhcmFtcygpOiBhbnkge1xuICAgIGNvbnN0IGNvbXBSZWYgPSB0aGlzLmdldExheW91dE1vZGVDb21wb25lbnQoKTtcbiAgICByZXR1cm4gVXRpbC5pc0RlZmluZWQoY29tcFJlZikgPyBjb21wUmVmLmdldFBhcmFtcygpIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgc2V0IG1hcmtGb3JVcGRhdGUoYXJnOiBib29sZWFuKSB7XG4gICAgdGhpcy5fbWFya0ZvclVwZGF0ZSA9IGFyZztcbiAgICBpZiAodGhpcy5pc1NwbGl0UGFuZU1vZGUoKSkge1xuICAgICAgdGhpcy51cGRhdGVJZk5lZWRlZCgpO1xuICAgIH1cbiAgfVxuXG4gIGdldCBtYXJrRm9yVXBkYXRlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9tYXJrRm9yVXBkYXRlO1xuICB9XG5cbiAgZ2V0IGlnbm9yZUNhbkRlYWN0aXZhdGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLmlzU3BsaXRQYW5lTW9kZSgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldExheW91dE1vZGVDb21wb25lbnQoKTogT0Zvcm1MYXlvdXRNYW5hZ2VyTW9kZSB7XG4gICAgbGV0IGNvbXBSZWY7XG4gICAgaWYgKHRoaXMuaXNUYWJNb2RlKCkgJiYgVXRpbC5pc0RlZmluZWQodGhpcy5vVGFiR3JvdXApKSB7XG4gICAgICBjb21wUmVmID0gdGhpcy5vVGFiR3JvdXA7XG4gICAgfSBlbHNlIGlmICh0aGlzLmlzRGlhbG9nTW9kZSgpICYmIFV0aWwuaXNEZWZpbmVkKHRoaXMuZGlhbG9nUmVmKSkge1xuICAgICAgY29tcFJlZiA9IHRoaXMuZGlhbG9nUmVmLmNvbXBvbmVudEluc3RhbmNlO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pc1NwbGl0UGFuZU1vZGUoKSAmJiBVdGlsLmlzRGVmaW5lZCh0aGlzLm9TcGxpdFBhbmUpKSB7XG4gICAgICBjb21wUmVmID0gdGhpcy5vU3BsaXRQYW5lO1xuICAgIH1cbiAgICByZXR1cm4gY29tcFJlZjtcbiAgfVxuXG4gIGFsbG93TmF2aWdhdGlvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMuaXNUYWJNb2RlKCk7XG4gIH1cblxuICBwdWJsaWMgY2FuQWRkRGV0YWlsQ29tcG9uZW50KCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IGNvbXBSZWYgPSB0aGlzLmdldExheW91dE1vZGVDb21wb25lbnQoKTtcbiAgICByZXR1cm4gVXRpbC53cmFwSW50b09ic2VydmFibGUoVXRpbC5pc0RlZmluZWQoY29tcFJlZikgPyBjb21wUmVmLmNhbkFkZERldGFpbENvbXBvbmVudCgpIDogdHJ1ZSk7XG4gIH1cblxuICBwdWJsaWMgaGFzVG9Db25maXJtRXhpdChkYXRhOiBGb3JtTGF5b3V0RGV0YWlsQ29tcG9uZW50RGF0YSwgb3B0aW9ucz86IEZvcm1MYXlvdXRDbG9zZURldGFpbE9wdGlvbnMpOiBib29sZWFuIHtcbiAgICBpZiAoVXRpbC5pc0RlZmluZWQob3B0aW9ucykgJiYgb3B0aW9ucy5leGl0V2l0aG91dENvbmZpcm1hdGlvbikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBjb25zdCBmb3Jtc0F0dHIgPSBPYmplY3Qua2V5cyhkYXRhLmlubmVyRm9ybXNJbmZvKTtcbiAgICBsZXQgcmVzdWx0OiBib29sZWFuID0gZmFsc2U7XG4gICAgaWYgKGZvcm1zQXR0ci5sZW5ndGggPiAwKSB7XG4gICAgICBmb3Jtc0F0dHIuZm9yRWFjaChmb3JtQXR0ciA9PiB7XG4gICAgICAgIGlmICghcmVzdWx0KSB7XG4gICAgICAgICAgY29uc3QgZm9ybURhdGEgPSBkYXRhLmlubmVyRm9ybXNJbmZvW2Zvcm1BdHRyXTtcbiAgICAgICAgICByZXN1bHQgPSBmb3JtRGF0YS5jb25maXJtT25FeGl0ICYmIGZvcm1EYXRhLm1vZGlmaWVkO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHB1YmxpYyBnZXRJZE9mQWN0aXZlSXRlbSgpOiBzdHJpbmcge1xuICAgIGNvbnN0IGNvbXBSZWYgPSB0aGlzLmdldExheW91dE1vZGVDb21wb25lbnQoKTtcbiAgICByZXR1cm4gVXRpbC5pc0RlZmluZWQoY29tcFJlZikgPyBgJHt0aGlzLm9hdHRyfS0ke2NvbXBSZWYuZ2V0SWRPZkFjdGl2ZUl0ZW0oKX0tYCA6ICcnO1xuICB9XG59XG4iLCI8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJtb2RlXCI+XG4gIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIk9Gb3JtTGF5b3V0TWFuYWdlckNvbXBvbmVudC5UQUJfTU9ERVwiPlxuICAgIDxvLWZvcm0tbGF5b3V0LXRhYmdyb3VwICN0YWJHcm91cCBbdGl0bGVdPVwidGl0bGVcIiAob25NYWluVGFiU2VsZWN0ZWQpPVwib25NYWluVGFiU2VsZWN0ZWQuZW1pdCgkZXZlbnQpXCJcbiAgICAgIChvblNlbGVjdGVkVGFiQ2hhbmdlKT1cIm9uU2VsZWN0ZWRUYWJDaGFuZ2UuZW1pdCgkZXZlbnQpXCIgKG9uQ2xvc2VUYWIpPVwib25DbG9zZVRhYi5lbWl0KCRldmVudClcIlxuICAgICAgW29wdGlvbnNdPVwidGFiR3JvdXBPcHRpb25zXCIgW3N0cmV0Y2gtdGFic109XCJzdHJldGNoVGFic1wiPlxuICAgICAgPG5nLWNvbnRlbnQgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50QmxvY2tcIj48L25nLWNvbnRlbnQ+XG4gICAgPC9vLWZvcm0tbGF5b3V0LXRhYmdyb3VwPlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJPRm9ybUxheW91dE1hbmFnZXJDb21wb25lbnQuU1BMSVRfUEFORV9NT0RFXCI+XG4gICAgPG8tZm9ybS1sYXlvdXQtc3BsaXQtcGFuZSAjc3BsaXRQYW5lIFtvcHRpb25zXT1cInNwbGl0UGFuZU9wdGlvbnNcIj5cbiAgICAgIDxuZy1jb250ZW50ICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29udGVudEJsb2NrXCI+PC9uZy1jb250ZW50PlxuICAgIDwvby1mb3JtLWxheW91dC1zcGxpdC1wYW5lPlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJPRm9ybUxheW91dE1hbmFnZXJDb21wb25lbnQuRElBTE9HX01PREVcIj5cbiAgICA8bmctY29udGVudCAqbmdUZW1wbGF0ZU91dGxldD1cImNvbnRlbnRCbG9ja1wiPjwvbmctY29udGVudD5cbiAgPC9uZy1jb250YWluZXI+XG48L25nLWNvbnRhaW5lcj5cblxuXG48bmctdGVtcGxhdGUgI2NvbnRlbnRCbG9jaz5cbiAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPC9uZy10ZW1wbGF0ZT4iXX0=
|
|
@@ -4,25 +4,56 @@ import { Subject } from 'rxjs';
|
|
|
4
4
|
import { AppConfig } from '../config/app-config';
|
|
5
5
|
import { Codes } from '../util/codes';
|
|
6
6
|
import { Util } from '../util/util';
|
|
7
|
+
import { PermissionsService } from './permissions/permissions.service';
|
|
7
8
|
import * as i0 from "@angular/core";
|
|
8
9
|
export class AppMenuService {
|
|
9
10
|
constructor(injector) {
|
|
10
11
|
this.injector = injector;
|
|
11
12
|
this.onClick = new Subject;
|
|
13
|
+
this.onPermissionMenuChanged = new Subject();
|
|
12
14
|
this._config = this.injector.get(AppConfig);
|
|
13
|
-
this.MENU_ROOTS = this._config.getMenuConfiguration();
|
|
14
15
|
this.router = this.injector.get(Router);
|
|
15
16
|
this.router.events.subscribe((event) => {
|
|
16
17
|
if (event instanceof NavigationEnd) {
|
|
17
18
|
this.setActiveItem();
|
|
18
19
|
}
|
|
19
20
|
});
|
|
21
|
+
this.setMenuItemsByMenuConfiguration();
|
|
22
|
+
this.permissionsService = this.injector.get(PermissionsService);
|
|
23
|
+
this.permissionsService.onChangePermissions.subscribe(x => {
|
|
24
|
+
this.mergeMenuItemsWithPermissions();
|
|
25
|
+
this.onPermissionMenuChanged.next();
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
setMenuItemsByMenuConfiguration() {
|
|
29
|
+
const defaultMenuConfiguration = Util.cloneArray(this._config.getMenuConfiguration());
|
|
30
|
+
this.MENU_ROOTS = defaultMenuConfiguration;
|
|
20
31
|
this.ALL_MENU_ITEMS = [];
|
|
21
32
|
for (let i = 0, len = this.MENU_ROOTS.length; i < len; i++) {
|
|
22
33
|
const item = this.MENU_ROOTS[i];
|
|
23
34
|
this.ALL_MENU_ITEMS = this.ALL_MENU_ITEMS.concat(this.getMenuItems(item));
|
|
24
35
|
}
|
|
25
36
|
}
|
|
37
|
+
mergeMenuItemsWithPermissions() {
|
|
38
|
+
this.setMenuItemsByMenuConfiguration();
|
|
39
|
+
const permissionsMenu = this.permissionsService.getAllMenuPermissions();
|
|
40
|
+
if (Util.isDefined(permissionsMenu)) {
|
|
41
|
+
this.MENU_ROOTS = [...this.MENU_ROOTS.map(menu => {
|
|
42
|
+
const indexPermission = permissionsMenu.findIndex(permission => permission.attr === menu.id);
|
|
43
|
+
if (indexPermission > -1) {
|
|
44
|
+
menu.visible = permissionsMenu[indexPermission].visible;
|
|
45
|
+
}
|
|
46
|
+
return menu;
|
|
47
|
+
})];
|
|
48
|
+
this.ALL_MENU_ITEMS = [...this.ALL_MENU_ITEMS.map(menu => {
|
|
49
|
+
const indexPermission = permissionsMenu.findIndex(permission => permission.attr === menu.id);
|
|
50
|
+
if (indexPermission > -1) {
|
|
51
|
+
menu.visible = permissionsMenu[indexPermission].visible;
|
|
52
|
+
}
|
|
53
|
+
return menu;
|
|
54
|
+
})];
|
|
55
|
+
}
|
|
56
|
+
}
|
|
26
57
|
getMenuRoots() {
|
|
27
58
|
return this.MENU_ROOTS;
|
|
28
59
|
}
|
|
@@ -71,6 +102,9 @@ export class AppMenuService {
|
|
|
71
102
|
isRouteItem(item) {
|
|
72
103
|
return Util.isDefined(item.route);
|
|
73
104
|
}
|
|
105
|
+
isVisible(item) {
|
|
106
|
+
return !Util.isDefined(item.visible) || (Util.isDefined(item.visible) && item.visible);
|
|
107
|
+
}
|
|
74
108
|
getMenuItems(item) {
|
|
75
109
|
const menuGroup = item;
|
|
76
110
|
const items = menuGroup.items;
|
|
@@ -103,4 +137,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
103
137
|
providedIn: 'root'
|
|
104
138
|
}]
|
|
105
139
|
}], ctorParameters: function () { return [{ type: i0.Injector }]; } });
|
|
106
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLW1lbnUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9zZXJ2aWNlcy9hcHAtbWVudS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDeEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUvQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFXakQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0QyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sY0FBYyxDQUFDOztBQUtwQyxNQUFNLE9BQU8sY0FBYztJQVV6QixZQUFzQixRQUFrQjtRQUFsQixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBRmpDLFlBQU8sR0FBa0IsSUFBSSxPQUFhLENBQUM7UUFHaEQsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM1QyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUN0RCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ3JDLElBQUksS0FBSyxZQUFZLGFBQWEsRUFBRTtnQkFDbEMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO2FBQ3RCO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFF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amVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uRW5kLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBBcHBDb25maWcgfSBmcm9tICcuLi9jb25maWcvYXBwLWNvbmZpZyc7XG5pbXBvcnQge1xuICBNZW51R3JvdXAsXG4gIE1lbnVJdGVtLFxuICBNZW51SXRlbUFjdGlvbixcbiAgTWVudUl0ZW1Mb2NhbGUsXG4gIE1lbnVJdGVtTG9nb3V0LFxuICBNZW51SXRlbVJvdXRlLFxuICBNZW51SXRlbVVzZXJJbmZvXG59IGZyb20gJy4uL2ludGVyZmFjZXMvYXBwLW1lbnUuaW50ZXJmYWNlJztcbmltcG9ydCB7IE1lbnVSb290SXRlbSB9IGZyb20gJy4uL3R5cGVzL21lbnUtcm9vdC1pdGVtLnR5cGUnO1xuaW1wb3J0IHsgQ29kZXMgfSBmcm9tICcuLi91dGlsL2NvZGVzJztcbmltcG9ydCB7IFV0aWwgfSBmcm9tICcuLi91dGlsL3V0aWwnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBBcHBNZW51U2VydmljZSB7XG5cbiAgcHJvdGVjdGVkIHJvdXRlcjogUm91dGVyO1xuICBwcm90ZWN0ZWQgX2NvbmZpZzogQXBwQ29uZmlnO1xuICBwcm90ZWN0ZWQgTUVOVV9ST09UUzogTWVudVJvb3RJdGVtW107XG4gIHByb3RlY3RlZCBBTExfTUVOVV9JVEVNUzogTWVudVJvb3RJdGVtW107XG4gIHByb3RlY3RlZCBhY3RpdmVJdGVtOiBNZW51SXRlbVJvdXRlO1xuXG4gIHB1YmxpYyBvbkNsaWNrOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD47XG5cbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIGluamVjdG9yOiBJbmplY3Rvcikge1xuICAgIHRoaXMuX2NvbmZpZyA9IHRoaXMuaW5qZWN0b3IuZ2V0KEFwcENvbmZpZyk7XG4gICAgdGhpcy5NRU5VX1JPT1RTID0gdGhpcy5fY29uZmlnLmdldE1lbnVDb25maWd1cmF0aW9uKCk7XG4gICAgdGhpcy5yb3V0ZXIgPSB0aGlzLmluamVjdG9yLmdldChSb3V0ZXIpO1xuICAgIHRoaXMucm91dGVyLmV2ZW50cy5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICBpZiAoZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSB7XG4gICAgICAgIHRoaXMuc2V0QWN0aXZlSXRlbSgpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5BTExfTUVOVV9JVEVNUyA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwLCBsZW4gPSB0aGlzLk1FTlVfUk9PVFMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIGNvbnN0IGl0ZW06IE1lbnVSb290SXRlbSA9IHRoaXMuTUVOVV9ST09UU1tpXTtcbiAgICAgIHRoaXMuQUxMX01FTlVfSVRFTVMgPSB0aGlzLkFMTF9NRU5VX0lURU1TLmNvbmNhdCh0aGlzLmdldE1lbnVJdGVtcyhpdGVtKSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0TWVudVJvb3RzKCk6IE1lbnVSb290SXRlbVtdIHtcbiAgICByZXR1cm4gdGhpcy5NRU5VX1JPT1RTO1xuICB9XG5cbiAgZ2V0TWVudVJvb3RCeUlkKGlkOiBzdHJpbmcpOiBNZW51Um9vdEl0ZW0ge1xuICAgIHJldHVybiB0aGlzLk1FTlVfUk9PVFMuZmluZChjID0+IGMuaWQgPT09IGlkKTtcbiAgfVxuXG4gIGdldEFsbE1lbnVJdGVtcygpOiBNZW51Um9vdEl0ZW1bXSB7XG4gICAgcmV0dXJuIHRoaXMuQUxMX01FTlVfSVRFTVM7XG4gIH1cblxuICBnZXRNZW51SXRlbUJ5SWQoaWQ6IHN0cmluZyk6IE1lbnVJdGVtIHwgTWVudUdyb3VwIHtcbiAgICByZXR1cm4gdGhpcy5BTExfTUVOVV9JVEVNUy5maW5kKGkgPT4gaS5pZCA9PT0gaWQpO1xuICB9XG5cbiAgZ2V0TWVudUl0ZW1UeXBlKGl0ZW06IE1lbnVSb290SXRlbSk6IHN0cmluZyB7XG4gICAgbGV0IHR5cGU6IHN0cmluZztcbiAgICBzd2l0Y2ggKHRydWUpIHtcbiAgICAgIGNhc2UgKChpdGVtIGFzIE1lbnVJdGVtTG9nb3V0KS5yb3V0ZSA9PT0gQ29kZXMuTE9HSU5fUk9VVEUpOlxuICAgICAgICB0eXBlID0gJ2xvZ291dCc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAoKGl0ZW0gYXMgTWVudUl0ZW1BY3Rpb24pLmFjdGlvbiAhPT0gdW5kZWZpbmVkKTpcbiAgICAgICAgdHlwZSA9ICdhY3Rpb24nO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgKChpdGVtIGFzIE1lbnVJdGVtTG9jYWxlKS5sb2NhbGUgIT09IHVuZGVmaW5lZCk6XG4gICAgICAgIHR5cGUgPSAnbG9jYWxlJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICgoaXRlbSBhcyBNZW51SXRlbVVzZXJJbmZvKS51c2VyICE9PSB1bmRlZmluZWQpOlxuICAgICAgICB0eXBlID0gJ3VzZXItaW5mbyc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAoKGl0ZW0gYXMgTWVudUdyb3VwKS5pdGVtcyAhPT0gdW5kZWZpbmVkKTpcbiAgICAgICAgdHlwZSA9ICdncm91cCc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdHlwZSA9ICdkZWZhdWx0JztcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHJldHVybiB0eXBlO1xuICB9XG5cbiAgaXNNZW51R3JvdXAoaXRlbTogTWVudVJvb3RJdGVtKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0TWVudUl0ZW1UeXBlKGl0ZW0pID09PSAnZ3JvdXAnO1xuICB9XG5cbiAgaXNNZW51R3JvdXBSb3V0ZShpdGVtOiBNZW51Um9vdEl0ZW0pOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5nZXRNZW51SXRlbVR5cGUoaXRlbSkgPT09ICdncm91cCcgJiYgaXRlbS5oYXNPd25Qcm9wZXJ0eSgncm91dGUnKTtcbiAgfVxuXG4gIGlzSXRlbUFjdGl2ZShpdGVtOiBNZW51SXRlbVJvdXRlKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuYWN0aXZlSXRlbSAmJiB0aGlzLmFjdGl2ZUl0ZW0ucm91dGUgPT09IGl0ZW0ucm91dGU7XG4gIH1cblxuICBpc1JvdXRlSXRlbShpdGVtOiBNZW51SXRlbVJvdXRlKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIFV0aWwuaXNEZWZpbmVkKGl0ZW0ucm91dGUpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRNZW51SXRlbXMoaXRlbTogTWVudVJvb3RJdGVtKTogTWVudVJvb3RJdGVtW10ge1xuICAgIGNvbnN0IG1lbnVHcm91cCA9IGl0ZW0gYXMgTWVudUdyb3VwO1xuICAgIGNvbnN0IGl0ZW1zID0gbWVudUdyb3VwLml0ZW1zO1xuICAgIGlmIChpdGVtcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAodGhpcy5pc01lbnVHcm91cFJvdXRlKG1lbnVHcm91cCkpIHtcbiAgICAgICAgcmV0dXJuIFtpdGVtXS5jb25jYXQoaXRlbXMpXG4gICAgICB9XG4gICAgICByZXR1cm4gaXRlbXM7XG4gICAgfVxuICAgIHJldHVybiBbaXRlbV07XG4gIH1cblxuICBwcml2YXRlIHNldEFjdGl2ZUl0ZW0oKTogdm9pZCB7XG4gICAgbGV0IGFjdGl2ZUl0ZW06IE1lbnVJdGVtUm91dGU7XG4gICAgY29uc3Qgcm91dGVJdGVtczogTWVudUl0ZW1Sb3V0ZVtdID0gdGhpcy5BTExfTUVOVV9JVEVNUy5maWx0ZXIoaXRlbSA9PiB0aGlzLmlzUm91dGVJdGVtKGl0ZW0pKSBhcyBNZW51SXRlbVJvdXRlW107XG4gICAgY29uc3QgcGF0aE1hdGNoRnVsbEl0ZW1zID0gcm91dGVJdGVtcy5maWx0ZXIoaXRlbSA9PiBpdGVtLnBhdGhNYXRjaCA9PT0gJ2Z1bGwnKTtcbiAgICBpZiAocGF0aE1hdGNoRnVsbEl0ZW1zLmxlbmd0aCA+IDApIHtcbiAgICAgIGFjdGl2ZUl0ZW0gPSBwYXRoTWF0Y2hGdWxsSXRlbXMuZmluZChpdGVtID0+IGl0ZW0ucm91dGUgPT09IHRoaXMucm91dGVyLnVybCk7XG4gICAgfVxuICAgIGlmICghYWN0aXZlSXRlbSkge1xuICAgICAgYWN0aXZlSXRlbSA9IHJvdXRlSXRlbXMuZmluZChpdGVtID0+IHRoaXMucm91dGVyLnVybC5zdGFydHNXaXRoKGl0ZW0ucm91dGUpKTtcbiAgICB9XG4gICAgdGhpcy5hY3RpdmVJdGVtID0gYWN0aXZlSXRlbTtcbiAgfVxuXG59XG4iXX0=
|
|
140
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLW1lbnUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9zZXJ2aWNlcy9hcHAtbWVudS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDeEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUvQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFZakQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0QyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDOztBQUt2RSxNQUFNLE9BQU8sY0FBYztJQVl6QixZQUFzQixRQUFrQjtRQUFsQixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBSGpDLFlBQU8sR0FBa0IsSUFBSSxPQUFhLENBQUM7UUFDM0MsNEJBQXVCLEdBQWtCLElBQUksT0FBTyxFQUFFLENBQUM7UUFHNUQsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM1QyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ3JDLElBQUksS0FBSyxZQUFZLGFBQWEsRUFBRTtnQkFDbEMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO2FBQ3RCO1FB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QUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsS0FBSyxNQUFNLENBQUMsQ0FBQztRQUNoRixJQUFJLGtCQUFrQixDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDakMsVUFBVSxHQUFHLGtCQUFrQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUM5RTtRQUNELElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDZixVQUFVLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztTQUM5RTtRQUNELElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO0lBQy9CLENBQUM7OzRHQXpKVSxjQUFjO2dIQUFkLGNBQWMsY0FGYixNQUFNOzRGQUVQLGNBQWM7a0JBSDFCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5hdmlnYXRpb25FbmQsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IEFwcENvbmZpZyB9IGZyb20gJy4uL2NvbmZpZy9hcHAtY29uZmlnJztcbmltcG9ydCB7XG4gIE1lbnVDb21tb25JdGVtLFxuICBNZW51R3JvdXAsXG4gIE1lbnVJdGVtLFxuICBNZW51SXRlbUFjdGlvbixcbiAgTWVudUl0ZW1Mb2NhbGUsXG4gIE1lbnVJdGVtTG9nb3V0LFxuICBNZW51SXRlbVJvdXRlLFxuICBNZW51SXRlbVVzZXJJbmZvXG59IGZyb20gJy4uL2ludGVyZmFjZXMvYXBwLW1lbnUuaW50ZXJmYWNlJztcbmltcG9ydCB7IE1lbnVSb290SXRlbSB9IGZyb20gJy4uL3R5cGVzL21lbnUtcm9vdC1pdGVtLnR5cGUnO1xuaW1wb3J0IHsgQ29kZXMgfSBmcm9tICcuLi91dGlsL2NvZGVzJztcbmltcG9ydCB7IFV0aWwgfSBmcm9tICcuLi91dGlsL3V0aWwnO1xuaW1wb3J0IHsgUGVybWlzc2lvbnNTZXJ2aWNlIH0gZnJvbSAnLi9wZXJtaXNzaW9ucy9wZXJtaXNzaW9ucy5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQXBwTWVudVNlcnZpY2Uge1xuXG4gIHByb3RlY3RlZCByb3V0ZXI6IFJvdXRlcjtcbiAgcHJvdGVjdGVkIF9jb25maWc6IEFwcENvbmZpZztcbiAgcHJvdGVjdGVkIE1FTlVfUk9PVFM6IE1lbnVSb290SXRlbVtdO1xuICBwcm90ZWN0ZWQgQUxMX01FTlVfSVRFTVM6IE1lbnVSb290SXRlbVtdO1xuICBwcm90ZWN0ZWQgYWN0aXZlSXRlbTogTWVudUl0ZW1Sb3V0ZTtcbiAgcHJvdGVjdGVkIHBlcm1pc3Npb25zU2VydmljZTogUGVybWlzc2lvbnNTZXJ2aWNlO1xuXG4gIHB1YmxpYyBvbkNsaWNrOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD47XG4gIHB1YmxpYyBvblBlcm1pc3Npb25NZW51Q2hhbmdlZDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIGluamVjdG9yOiBJbmplY3Rvcikge1xuICAgIHRoaXMuX2NvbmZpZyA9IHRoaXMuaW5qZWN0b3IuZ2V0KEFwcENvbmZpZyk7XG4gICAgdGhpcy5yb3V0ZXIgPSB0aGlzLmluamVjdG9yLmdldChSb3V0ZXIpO1xuICAgIHRoaXMucm91dGVyLmV2ZW50cy5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICBpZiAoZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSB7XG4gICAgICAgIHRoaXMuc2V0QWN0aXZlSXRlbSgpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5zZXRNZW51SXRlbXNCeU1lbnVDb25maWd1cmF0aW9uKCk7XG5cbiAgICB0aGlzLnBlcm1pc3Npb25zU2VydmljZSA9IHRoaXMuaW5qZWN0b3IuZ2V0KFBlcm1pc3Npb25zU2VydmljZSk7XG4gICAgdGhpcy5wZXJtaXNzaW9uc1NlcnZpY2Uub25DaGFuZ2VQZXJtaXNzaW9ucy5zdWJzY3JpYmUoeCA9PiB7XG4gICAgICB0aGlzLm1lcmdlTWVudUl0ZW1zV2l0aFBlcm1pc3Npb25zKCk7XG4gICAgICB0aGlzLm9uUGVybWlzc2lvbk1lbnVDaGFuZ2VkLm5leHQoKVxuICAgIH0pO1xuXG4gIH1cblxuICBzZXRNZW51SXRlbXNCeU1lbnVDb25maWd1cmF0aW9uKCkge1xuICAgIC8qXG4gICAgICBzcHJlYWQgb3BlcmF0b3IgKC4uLikgaW4gYXJyYXkgbXVsdGktbGV2ZWwgbm90IHdvcmtzXG4gICAgICBKU09OLnBhcnNlIGFuZCBKU09OLnN0cmluZ2lmeSBhcmUgdGhlIHNwZWNpZmljIG1ldGhvZHMgdXNlZCBmb3IgbXVsdGktbGV2ZWwgZGVlcCBjb3B5aW5nXG4gICAgKi9cbiAgICBjb25zdCBkZWZhdWx0TWVudUNvbmZpZ3VyYXRpb24gPSBVdGlsLmNsb25lQXJyYXkodGhpcy5fY29uZmlnLmdldE1lbnVDb25maWd1cmF0aW9uKCkpO1xuICAgIHRoaXMuTUVOVV9ST09UUyA9IGRlZmF1bHRNZW51Q29uZmlndXJhdGlvbjtcbiAgICB0aGlzLkFMTF9NRU5VX0lURU1TID0gW107XG4gICAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IHRoaXMuTUVOVV9ST09UUy5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgICAgY29uc3QgaXRlbTogTWVudVJvb3RJdGVtID0gdGhpcy5NRU5VX1JPT1RTW2ldO1xuICAgICAgdGhpcy5BTExfTUVOVV9JVEVNUyA9IHRoaXMuQUxMX01FTlVfSVRFTVMuY29uY2F0KHRoaXMuZ2V0TWVudUl0ZW1zKGl0ZW0pKTtcbiAgICB9XG4gIH1cblxuICBtZXJnZU1lbnVJdGVtc1dpdGhQZXJtaXNzaW9ucygpIHtcblxuICAgIHRoaXMuc2V0TWVudUl0ZW1zQnlNZW51Q29uZmlndXJhdGlvbigpO1xuICAgIGNvbnN0IHBlcm1pc3Npb25zTWVudSA9IHRoaXMucGVybWlzc2lvbnNTZXJ2aWNlLmdldEFsbE1lbnVQZXJtaXNzaW9ucygpO1xuXG4gICAgaWYgKFV0aWwuaXNEZWZpbmVkKHBlcm1pc3Npb25zTWVudSkpIHtcbiAgICAgIHRoaXMuTUVOVV9ST09UUyA9IFsuLi50aGlzLk1FTlVfUk9PVFMubWFwKG1lbnUgPT4ge1xuICAgICAgICBjb25zdCBpbmRleFBlcm1pc3Npb24gPSBwZXJtaXNzaW9uc01lbnUuZmluZEluZGV4KHBlcm1pc3Npb24gPT4gcGVybWlzc2lvbi5hdHRyID09PSBtZW51LmlkKTtcbiAgICAgICAgaWYgKGluZGV4UGVybWlzc2lvbiA+IC0xKSB7XG4gICAgICAgICAgbWVudS52aXNpYmxlID0gcGVybWlzc2lvbnNNZW51W2luZGV4UGVybWlzc2lvbl0udmlzaWJsZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbWVudTtcbiAgICAgIH0pXTtcblxuICAgICAgdGhpcy5BTExfTUVOVV9JVEVNUyA9IFsuLi50aGlzLkFMTF9NRU5VX0lURU1TLm1hcChtZW51ID0+IHtcbiAgICAgICAgY29uc3QgaW5kZXhQZXJtaXNzaW9uID0gcGVybWlzc2lvbnNNZW51LmZpbmRJbmRleChwZXJtaXNzaW9uID0+IHBlcm1pc3Npb24uYXR0ciA9PT0gbWVudS5pZCk7XG4gICAgICAgIGlmIChpbmRleFBlcm1pc3Npb24gPiAtMSkge1xuICAgICAgICAgIG1lbnUudmlzaWJsZSA9IHBlcm1pc3Npb25zTWVudVtpbmRleFBlcm1pc3Npb25dLnZpc2libGU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1lbnU7XG4gICAgICB9KV07XG4gICAgfVxuICB9XG5cbiAgZ2V0TWVudVJvb3RzKCk6IE1lbnVSb290SXRlbVtdIHtcbiAgICByZXR1cm4gdGhpcy5NRU5VX1JPT1RTO1xuICB9XG5cbiAgZ2V0TWVudVJvb3RCeUlkKGlkOiBzdHJpbmcpOiBNZW51Um9vdEl0ZW0ge1xuICAgIHJldHVybiB0aGlzLk1FTlVfUk9PVFMuZmluZChjID0+IGMuaWQgPT09IGlkKTtcbiAgfVxuXG4gIGdldEFsbE1lbnVJdGVtcygpOiBNZW51Um9vdEl0ZW1bXSB7XG4gICAgcmV0dXJuIHRoaXMuQUxMX01FTlVfSVRFTVM7XG4gIH1cblxuICBnZXRNZW51SXRlbUJ5SWQoaWQ6IHN0cmluZyk6IE1lbnVJdGVtIHwgTWVudUdyb3VwIHtcbiAgICByZXR1cm4gdGhpcy5BTExfTUVOVV9JVEVNUy5maW5kKGkgPT4gaS5pZCA9PT0gaWQpO1xuICB9XG5cbiAgZ2V0TWVudUl0ZW1UeXBlKGl0ZW06IE1lbnVSb290SXRlbSk6IHN0cmluZyB7XG4gICAgbGV0IHR5cGU6IHN0cmluZztcbiAgICBzd2l0Y2ggKHRydWUpIHtcbiAgICAgIGNhc2UgKChpdGVtIGFzIE1lbnVJdGVtTG9nb3V0KS5yb3V0ZSA9PT0gQ29kZXMuTE9HSU5fUk9VVEUpOlxuICAgICAgICB0eXBlID0gJ2xvZ291dCc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAoKGl0ZW0gYXMgTWVudUl0ZW1BY3Rpb24pLmFjdGlvbiAhPT0gdW5kZWZpbmVkKTpcbiAgICAgICAgdHlwZSA9ICdhY3Rpb24nO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgKChpdGVtIGFzIE1lbnVJdGVtTG9jYWxlKS5sb2NhbGUgIT09IHVuZGVmaW5lZCk6XG4gICAgICAgIHR5cGUgPSAnbG9jYWxlJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICgoaXRlbSBhcyBNZW51SXRlbVVzZXJJbmZvKS51c2VyICE9PSB1bmRlZmluZWQpOlxuICAgICAgICB0eXBlID0gJ3VzZXItaW5mbyc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAoKGl0ZW0gYXMgTWVudUdyb3VwKS5pdGVtcyAhPT0gdW5kZWZpbmVkKTpcbiAgICAgICAgdHlwZSA9ICdncm91cCc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdHlwZSA9ICdkZWZhdWx0JztcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHJldHVybiB0eXBlO1xuICB9XG5cbiAgaXNNZW51R3JvdXAoaXRlbTogTWVudVJvb3RJdGVtKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0TWVudUl0ZW1UeXBlKGl0ZW0pID09PSAnZ3JvdXAnO1xuICB9XG5cbiAgaXNNZW51R3JvdXBSb3V0ZShpdGVtOiBNZW51Um9vdEl0ZW0pOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5nZXRNZW51SXRlbVR5cGUoaXRlbSkgPT09ICdncm91cCcgJiYgaXRlbS5oYXNPd25Qcm9wZXJ0eSgncm91dGUnKTtcbiAgfVxuXG4gIGlzSXRlbUFjdGl2ZShpdGVtOiBNZW51SXRlbVJvdXRlKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuYWN0aXZlSXRlbSAmJiB0aGlzLmFjdGl2ZUl0ZW0ucm91dGUgPT09IGl0ZW0ucm91dGU7XG4gIH1cblxuICBpc1JvdXRlSXRlbShpdGVtOiBNZW51SXRlbVJvdXRlKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIFV0aWwuaXNEZWZpbmVkKGl0ZW0ucm91dGUpO1xuICB9XG5cbiAgaXNWaXNpYmxlKGl0ZW06IE1lbnVDb21tb25JdGVtKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICFVdGlsLmlzRGVmaW5lZChpdGVtLnZpc2libGUpIHx8IChVdGlsLmlzRGVmaW5lZChpdGVtLnZpc2libGUpICYmIGl0ZW0udmlzaWJsZSk7XG4gIH1cblxuICBwcml2YXRlIGdldE1lbnVJdGVtcyhpdGVtOiBNZW51Um9vdEl0ZW0pOiBNZW51Um9vdEl0ZW1bXSB7XG4gICAgY29uc3QgbWVudUdyb3VwID0gaXRlbSBhcyBNZW51R3JvdXA7XG4gICAgY29uc3QgaXRlbXMgPSBtZW51R3JvdXAuaXRlbXM7XG4gICAgaWYgKGl0ZW1zICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmICh0aGlzLmlzTWVudUdyb3VwUm91dGUobWVudUdyb3VwKSkge1xuICAgICAgICByZXR1cm4gW2l0ZW1dLmNvbmNhdChpdGVtcylcbiAgICAgIH1cbiAgICAgIHJldHVybiBpdGVtcztcbiAgICB9XG4gICAgcmV0dXJuIFtpdGVtXTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0QWN0aXZlSXRlbSgpOiB2b2lkIHtcbiAgICBsZXQgYWN0aXZlSXRlbTogTWVudUl0ZW1Sb3V0ZTtcbiAgICBjb25zdCByb3V0ZUl0ZW1zOiBNZW51SXRlbVJvdXRlW10gPSB0aGlzLkFMTF9NRU5VX0lURU1TLmZpbHRlcihpdGVtID0+IHRoaXMuaXNSb3V0ZUl0ZW0oaXRlbSkpIGFzIE1lbnVJdGVtUm91dGVbXTtcbiAgICBjb25zdCBwYXRoTWF0Y2hGdWxsSXRlbXMgPSByb3V0ZUl0ZW1zLmZpbHRlcihpdGVtID0+IGl0ZW0ucGF0aE1hdGNoID09PSAnZnVsbCcpO1xuICAgIGlmIChwYXRoTWF0Y2hGdWxsSXRlbXMubGVuZ3RoID4gMCkge1xuICAgICAgYWN0aXZlSXRlbSA9IHBhdGhNYXRjaEZ1bGxJdGVtcy5maW5kKGl0ZW0gPT4gaXRlbS5yb3V0ZSA9PT0gdGhpcy5yb3V0ZXIudXJsKTtcbiAgICB9XG4gICAgaWYgKCFhY3RpdmVJdGVtKSB7XG4gICAgICBhY3RpdmVJdGVtID0gcm91dGVJdGVtcy5maW5kKGl0ZW0gPT4gdGhpcy5yb3V0ZXIudXJsLnN0YXJ0c1dpdGgoaXRlbS5yb3V0ZSkpO1xuICAgIH1cbiAgICB0aGlzLmFjdGl2ZUl0ZW0gPSBhY3RpdmVJdGVtO1xuICB9XG5cbn1cbiJdfQ==
|