ngx-histaff-alpha 3.7.6 → 3.7.7
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/esm2022/lib/app/interfaces/INavigatorItem.mjs +1 -1
- package/esm2022/lib/app/libraries/navigator/navigator/item.component.mjs +35 -27
- package/esm2022/lib/app/libraries/navigator/navigator/navigator.component.mjs +3 -3
- package/esm2022/lib/app/libraries/services/recursive.service.mjs +22 -1
- package/esm2022/lib/app/services/navigator.service.mjs +31 -3
- package/fesm2022/ngx-histaff-alpha.mjs +87 -30
- package/fesm2022/ngx-histaff-alpha.mjs.map +1 -1
- package/lib/app/interfaces/INavigatorItem.d.ts +3 -3
- package/lib/app/libraries/navigator/navigator/item.component.d.ts +0 -1
- package/lib/app/libraries/services/recursive.service.d.ts +1 -0
- package/lib/app/services/navigator.service.d.ts +1 -1
- package/package.json +1 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSU5hdmlnYXRvckl0ZW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtaGlzdGFmZi1hbHBoYS9zcmMvbGliL2FwcC9pbnRlcmZhY2VzL0lOYXZpZ2F0b3JJdGVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIElOYXZpZ2F0b3JJdGVtIHtcclxuICAgIGlkOiBudW1iZXI7XHJcbiAgICBjb2RlOiBzdHJpbmc7XHJcbiAgICBzeXNGdW5jdGlvbj86IG51bWJlcjtcclxuICAgIHBhcmVudD86IG51bWJlcjtcclxuICAgIG9yZGVyTnVtYmVyPzogbnVtYmVyO1xyXG4gICAgdXJsPzogc3RyaW5nO1xyXG4gICAgaWNvbkZvbnRGYW1pbHk/OiBzdHJpbmc7XHJcbiAgICBpY29uQ2xhc3M/OiBzdHJpbmc7XHJcbiAgICBpY29uU3ZnPzogc3RyaW5nO1xyXG4gICAgc3lzTWVudVNlcnZpY2VNZXRob2Q/OiBzdHJpbmc7XHJcbiAgICBwaWN0dXJlQmFzZTY0Pzogc3RyaW5nO1xyXG4gICAgcGljdHVyZVVyaT86IHN0cmluZztcclxuICAgIHRyZWUkQ2hpbGRyZW46IElOYXZpZ2F0b3JJdGVtW107XHJcbiAgICB0cmVlJEFjdGl2ZT86IGJvb2xlYW47XHJcbiAgICB0cmVlJEV4cGFuZGVkPzogYm9vbGVhbjtcclxuICAgIHRyZWUkSGlnaGxpZ2h0ZWQ/
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSU5hdmlnYXRvckl0ZW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtaGlzdGFmZi1hbHBoYS9zcmMvbGliL2FwcC9pbnRlcmZhY2VzL0lOYXZpZ2F0b3JJdGVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIElOYXZpZ2F0b3JJdGVtIHtcclxuICAgIGlkOiBudW1iZXI7XHJcbiAgICBjb2RlOiBzdHJpbmc7XHJcbiAgICBzeXNGdW5jdGlvbj86IG51bWJlcjtcclxuICAgIHBhcmVudD86IG51bWJlcjtcclxuICAgIG9yZGVyTnVtYmVyPzogbnVtYmVyO1xyXG4gICAgdXJsPzogc3RyaW5nO1xyXG4gICAgaWNvbkZvbnRGYW1pbHk/OiBzdHJpbmc7XHJcbiAgICBpY29uQ2xhc3M/OiBzdHJpbmc7XHJcbiAgICBpY29uU3ZnPzogc3RyaW5nO1xyXG4gICAgc3lzTWVudVNlcnZpY2VNZXRob2Q/OiBzdHJpbmc7XHJcbiAgICBwaWN0dXJlQmFzZTY0Pzogc3RyaW5nO1xyXG4gICAgcGljdHVyZVVyaT86IHN0cmluZztcclxuICAgIHRyZWUkQ2hpbGRyZW46IElOYXZpZ2F0b3JJdGVtW107XHJcbiAgICB0cmVlJEFjdGl2ZT86IGJvb2xlYW47XHJcbiAgICB0cmVlJEV4cGFuZGVkPzogYm9vbGVhbjtcclxuICAgIHRyZWUkSGlnaGxpZ2h0ZWQ/OiBib29sZWFuO1xyXG4gICAgdHJlZSRUaWVyPzogbnVtYmVyO1xyXG4gICAgdHJlZSRQYXRoPzogc3RyaW5nO1xyXG4gICAgcGF0aD86IHN0cmluZztcclxuICAgIGxldmVsPzogbnVtYmVyO1xyXG4gICAgdHJlZSRTZWxlY3RlZD8gOiBib29sZWFuO1xyXG4gICAgdHJlZSRQYXJlbnQ/IDogbnVtYmVyO1xyXG4gICAgcHJvdGVjdGVkPzogYm9vbGVhbjtcclxufSJdfQ==
|
|
@@ -85,16 +85,20 @@ export class ItemComponent {
|
|
|
85
85
|
console.log("onClick triggered", item);
|
|
86
86
|
event.preventDefault();
|
|
87
87
|
event.stopImmediatePropagation();
|
|
88
|
+
this.iconClickStream$.next(crypto.randomUUID());
|
|
88
89
|
if (!!item.tree$Path && !!item.tree$Path.length) {
|
|
89
|
-
this.navigatorService.
|
|
90
|
+
this.navigatorService.updateTreeState(item.tree$Path);
|
|
91
|
+
this.navigatorService.activeItems$.next([item]);
|
|
90
92
|
}
|
|
91
93
|
if (!!item.tree$Children && !!item.tree$Children.length) {
|
|
92
94
|
item.tree$Expanded = !item.tree$Expanded;
|
|
93
95
|
}
|
|
96
|
+
/*
|
|
94
97
|
if (!this.wideMode) {
|
|
95
|
-
|
|
96
|
-
|
|
98
|
+
this.onModuleIconClick(event, item);
|
|
99
|
+
return;
|
|
97
100
|
}
|
|
101
|
+
*/
|
|
98
102
|
if (!!this.wideMode && this.item.tree$Selected == true && !!this.item.tree$Parent && (this.item.tree$Tier != 2 || this.item.tree$Tier == 2 && this.item.tree$Children.length == 0)) {
|
|
99
103
|
return;
|
|
100
104
|
}
|
|
@@ -138,31 +142,35 @@ export class ItemComponent {
|
|
|
138
142
|
localStorage.setItem('menuCurrentClicked', JSON.stringify(item));
|
|
139
143
|
}
|
|
140
144
|
}
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
145
|
+
/*
|
|
146
|
+
onModuleIconClick(event: any, item: INavigatorItem) {
|
|
147
|
+
event.stopPropagation();
|
|
148
|
+
|
|
149
|
+
this.navigatorService.clickedModuleItem$.next(item);
|
|
150
|
+
this.iconClickStream$.next(crypto.randomUUID());
|
|
151
|
+
this.navigatorService.clickedItem$.next(item);
|
|
152
|
+
this.navigatorService.activeItems$.next([item]);
|
|
153
|
+
|
|
154
|
+
if (!this.navigatorService.clickedItem$.value) {
|
|
155
|
+
this.navigatorService.clickedItem$.next(item);
|
|
156
|
+
this.navigatorService.activeItems$.next([item]);
|
|
157
|
+
} else {
|
|
158
|
+
if (this.wideMode) {
|
|
159
|
+
this.navigatorService.clickedItem$.next(item);
|
|
160
|
+
this.navigatorService.activeItems$.next([item]);
|
|
161
|
+
} else {
|
|
162
|
+
if (this.navigatorService.clickedItem$.value.id !== item.id) {
|
|
146
163
|
this.navigatorService.clickedItem$.next(item);
|
|
147
164
|
this.navigatorService.activeItems$.next([item]);
|
|
165
|
+
} else {
|
|
166
|
+
this.navigatorService.clickedItem$.next(null);
|
|
167
|
+
this.navigatorService.activeItems$.next([]);
|
|
168
|
+
}
|
|
148
169
|
}
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
this.navigatorService.clickedItem$.next(item);
|
|
152
|
-
this.navigatorService.activeItems$.next([item]);
|
|
153
|
-
}
|
|
154
|
-
else {
|
|
155
|
-
if (this.navigatorService.clickedItem$.value.id !== item.id) {
|
|
156
|
-
this.navigatorService.clickedItem$.next(item);
|
|
157
|
-
this.navigatorService.activeItems$.next([item]);
|
|
158
|
-
}
|
|
159
|
-
else {
|
|
160
|
-
this.navigatorService.clickedItem$.next(null);
|
|
161
|
-
this.navigatorService.activeItems$.next([]);
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
}
|
|
170
|
+
}
|
|
171
|
+
|
|
165
172
|
}
|
|
173
|
+
*/
|
|
166
174
|
checkActive() {
|
|
167
175
|
return this.active;
|
|
168
176
|
}
|
|
@@ -189,7 +197,7 @@ export class ItemComponent {
|
|
|
189
197
|
this.subscriptions.map(x => x.unsubscribe());
|
|
190
198
|
}
|
|
191
199
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: ItemComponent, deps: [{ token: i1.Router }, { token: i2.NavigatorService }, { token: i3.MultiLanguageService }, { token: i4.LayoutService }, { token: i5.MenuService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
192
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.3", type: ItemComponent, isStandalone: true, selector: "app-item", inputs: { item: "item", level: "level" }, viewQueries: [{ propertyName: "me", first: true, predicate: ["me"], descendants: true }, { propertyName: "children", first: true, predicate: ["children"], descendants: true }, { propertyName: "link", first: true, predicate: ["link"], descendants: true }, { propertyName: "subArrow", first: true, predicate: ["subArrow"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<li #me [id]=\"'main-menu-' + item.id\" class=\"parent\" [attr.data-level]=\"level\" [class.reduced]=\"leftbarReduced\"\r\n [class.active]=\"!wideMode && active\" [class.expanded]=\"item.tree$Expanded\"\r\n [class.highlighted]=\"item.tree$Highlighted\" [class.li-thin-mode]=\"!wideMode\" [class.menu-item]=\"!wideMode\"\r\n [appTooltip]=\"level===1 && !active ? caption : undefined\" [position]=\"'right'\" [ngStyle]=\"{\r\n marginTop: (level===1 && !wideMode) ? navigatorService.iconGutterY + 'px' : '',\r\n marginBottom: (level===1 && !wideMode) ? navigatorService.iconGutterY + 'px' : ''\r\n }\">\r\n <div class=\"menu-item-wrapper\" [attr.data-level]=\"level\" (click)=\"onClick($event, item)\"\r\n [class.active]=\"active\" [class.module-thin-mode]=\"!wideMode && level===1\" [class.thin-branch]=\"!wideMode && level > 1\">\r\n\r\n @if (wideMode) {\r\n @if (!!!leftbarReduced) {\r\n @if (!!hasChildren) {\r\n <span [innerHtml]=\"subMenuSvgIconRight | stringHtml\" class=\"sub-icon-right\" [class.rotate90]=\"!!item.tree$Selected\"></span>\r\n }\r\n <!-- @else {\r\n @if (item.tree$Selected && item.code !== 'MENU.DASHBOARD' && item.code !== 'MENU.HOME') {\r\n <i [attr.data-level]=\"level\" class=\"custom-icon-child-right\"></i>\r\n }\r\n } -->\r\n }\r\n }\r\n\r\n @if (!!item.iconSvg) {\r\n <i [attr.data-level]=\"level\" class=\"'module-icon'\" [appTooltip]=\"wideMode ? caption : undefined\"\r\n (click)=\"onModuleIconClick($event, item);false\" [ngStyle]=\"{\r\n position: 'absolute',\r\n left: wideMode ? '20px' : 'unset'\r\n }\"><span [innerHtml]=\"item.iconSvg | stringHtml\"></span></i>\r\n\r\n <!-- <span [innerHtml]=\"item.iconSvg | stringHtml\"></span> -->\r\n } @else if (!!item.iconClass) {\r\n <i [attr.data-level]=\"level\" [class]=\"item.iconClass + ' module-icon'\"\r\n [appTooltip]=\"wideMode ? caption : undefined\" (click)=\"onModuleIconClick($event, item);false\" [ngStyle]=\"{\r\n left: wideMode ? '20px' : 'unset'\r\n }\"></i>\r\n } @else if (!item.parent) {\r\n <i [attr.data-level]=\"level\" class=\"'module-icon'\" [appTooltip]=\"wideMode ? caption : undefined\"\r\n (click)=\"onModuleIconClick($event, item);false\" [ngStyle]=\"{\r\n position: 'absolute',\r\n left: wideMode ? '20px' : 'unset'\r\n }\"><span [innerHtml]=\"defaultSvg | stringHtml\"></span></i>\r\n }\r\n\r\n @if (!wideMode || (!leftbarReduced && hasChildren)) {\r\n <a #link [attr.data-level]=\"level\" class=\"has-submenu\" [appTooltip]=\"level > 1 ? caption : undefined\"\r\n [class.thin-mode]=\"!wideMode\">\r\n <ng-container (click)=\"subArrowClicked($event, item);false\"> <!--false is important here-->\r\n <span #subArrow *ngIf=\"(!!item.pictureBase64 || !!item.pictureUri)\"\r\n [class]=\"'img-span plus level' + level\">\r\n <img [src]=\"item.pictureBase64 || item.pictureUri\" *ngIf=\"!!item.pictureBase64\">\r\n </span>\r\n <span #subArrow *ngIf=\"!!!item.pictureBase64 && !!!item.pictureUri\"\r\n [class]=\"'plus level' + level\"></span>\r\n </ng-container>\r\n\r\n <img *ngIf=\"(!!item.pictureBase64 || !!item.pictureUri)\" [src]=\"item.pictureBase64 || item.pictureUri\">\r\n\r\n {{ caption }}\r\n\r\n </a>\r\n } @else {\r\n <a [attr.data-level]=\"level\" [routerLink]=\"item.url\" (click)=\"onClick($event, item)\"\r\n [class.thin-mode]=\"!wideMode\" [appTooltip]=\"wideMode ? caption : undefined\">\r\n {{ caption }}\r\n </a>\r\n }\r\n\r\n </div>\r\n\r\n @if (!!wideMode && !!hasChildren && !!item.tree$Expanded && !!item.tree$Children!.length && !!!leftbarReduced) {\r\n <!-- width: !!wideMode ? (layoutService.leftBarCurrentWidth$.value - layoutService.basicSpacing - layoutService.scrollBarWidth + 5 + 'px') : ( layoutService.leftBarWideWidth$.value + 'px' ), -->\r\n <ul #children [class.expanded]=\"!wideMode || item.tree$Expanded\" [class.ul-thin-mode]=\"!wideMode\" [ngStyle]=\"{\r\n padding: 0,\r\n }\" [class.submenu]=\"!wideMode\">\r\n <div>\r\n @for (child of item.tree$Children; track $index) {\r\n <app-item [item]=\"child\" [level]=\"level+1\" (clicked)=\"onClick($event, child)\"></app-item>\r\n }\r\n </div>\r\n </ul>\r\n }\r\n\r\n</li>", styles: [".navigator-container{--active-item-color: #DD5F2A;--active-item-background-color: white;--active-item-border-color: white;--line-height: 16px;--level-gap: 10px;--thin-mode-padding: 8px;--thin-mode-width: 66px;--wide-mode-width: 280px;--left-bar-current-width: 280px;--bg-color: #F1F1F1;--color: black;--hover-bg-color: #E1E3E5;--hover-color: black;--icon-border-radius: 0px;--icon-gutter-y: 8px;font-size:13px}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.navigator-container .d-none{display:none}.navigator-container svg{width:24px;height:24px}.navigator-container .module-thin-mode{display:flex!important;align-items:center!important;justify-content:center!important;padding:0!important;margin-bottom:5px!important;height:50px!important}.navigator-container .module-thin-mode svg{color:var(--color)}.navigator-container .module-thin-mode i{color:var(--color)!important}.navigator-container .li-thin-mode[data-level=\"1\"]{height:50px!important;margin-left:0!important;margin-right:0!important}.navigator-container .li-thin-mode .thin-branch{overflow:hidden}.navigator-container .li-thin-mode .thin-branch a{padding-left:15px;padding-right:15px;overflow:hidden;max-width:calc(100% - var(--size-layout-block-cell-spacing) * 2);text-overflow:ellipsis}.navigator-container .li-thin-mode .thin-branch:hover{background:#e1e3e5!important}.navigator-container .li-thin-mode:hover[data-level=\"1\"]>ul.ul-thin-mode{transform:translate(calc(var(--thin-mode-width)))}.navigator-container .li-thin-mode:hover:not([data-level=\"1\"])>ul.ul-thin-mode{transform:translate(calc(var(--wide-mode-width) - var(--size-layout-block-cell-spacing)))}.navigator-container .li-thin-mode.active .module-thin-mode{width:50px!important;transform:translate(var(--thin-mode-padding))}.navigator-container .li-thin-mode.active .module-thin-mode i{color:var(--active-item-color)!important}.navigator-container .li-thin-mode.active .module-thin-mode svg{color:var(--active-item-color)!important}.navigator-container .li-thin-mode.active>ul.ul-thin-mode{background-color:#fff;opacity:1;height:unset;overflow-y:auto;box-shadow:.4rem 0 2rem #0000002e}.navigator-container .li-thin-mode.active>ul.ul-thin-mode>div>app-item>li>div>a{display:block!important}.navigator-container .li-thin-mode.active[data-level=\"1\"]>ul.ul-thin-mode{display:block;transform:translate(calc(var(--thin-mode-width)))}.navigator-container .li-thin-mode.active:not([data-level=\"1\"])>ul.ul-thin-mode{display:block;transform:translate(calc(var(--wide-mode-width) - var(--size-layout-block-cell-spacing)))}.navigator-container ul.ul-thin-mode{display:none}.navigator-container .parent{color:var(--color);background-color:var(--bg-color);--children-height: 0px;box-sizing:border-box;width:100%;transition:width 1s ease-out}.navigator-container .parent ul{animation:fadeIn .25s linear}.navigator-container .parent i.module-icon{position:absolute;display:inline-block;font-size:var(--size-left-bar-icon-font-size)!important;width:var(--size-left-bar-icon-font-size)!important;height:var(--size-left-bar-icon-font-size)!important}.navigator-container .parent .menu-item-wrapper{position:relative!important;margin-left:0!important;padding-left:0;border:none!important;cursor:pointer}.navigator-container .parent .menu-item-wrapper .sub-icon-right{display:block;position:absolute;right:0;top:5px;transform:rotate(0);transition:transform .5s ease-out}.navigator-container .parent .menu-item-wrapper .rotate90{transform:rotate(90deg)}.navigator-container .parent .menu-item-wrapper[data-level=\"1\"].module-thin-mode:hover{background-color:var(--hover-bg-color);width:50px;transform:translate(8px);color:var(--hover-color)!important}.navigator-container .parent a.thin-mode{left:0!important;display:none;padding-left:15px;padding-right:15px;overflow:hidden;text-overflow:ellipsis}.navigator-container .parent a{color:inherit;position:absolute!important;margin-left:0!important;padding-left:0;border:none!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;user-select:none;-webkit-user-select:none}.navigator-container .parent a:hover{color:var(--color)!important}.navigator-container .parent a[data-level=\"1\"]:not(.thin-mode){left:var(--size-header-logo-left);max-width:calc(var(--left-bar-current-width) - var(--size-header-logo-left) - var(--size-scrollbar-width) - var(--size-layout-block-cell-spacing) * 2)}.navigator-container .parent a[data-level=\"2\"]:not(.thin-mode){left:calc(var(--size-header-logo-left) + var(--level-gap));max-width:calc(var(--left-bar-current-width) - var(--size-header-logo-left) - var(--size-scrollbar-width) - var(--size-layout-block-cell-spacing) * 2 - var(--level-gap))}.navigator-container .parent a[data-level=\"3\"]:not(.thin-mode){left:calc(var(--size-header-logo-left) + var(--level-gap) * 2);max-width:calc(var(--left-bar-current-width) - var(--size-header-logo-left) - var(--size-scrollbar-width) - var(--size-layout-block-cell-spacing) * 2 - var(--level-gap) * 2)}.navigator-container .parent a[data-level=\"4\"]:not(.thin-mode){left:calc(var(--size-header-logo-left) + var(--level-gap) * 3);max-width:calc(var(--left-bar-current-width) - var(--size-header-logo-left) - var(--size-scrollbar-width) - var(--size-layout-block-cell-spacing) * 2 - var(--level-gap) * 3)}.navigator-container .parent a[data-level=\"5\"]:not(.thin-mode){left:calc(var(--size-header-logo-left) + var(--level-gap) * 4);max-width:calc(var(--left-bar-current-width) - var(--size-header-logo-left) - var(--size-scrollbar-width) - var(--size-layout-block-cell-spacing) * 2 - var(--level-gap) * 4)}.navigator-container .parent a[data-level=\"6\"]:not(.thin-mode){left:calc(var(--size-header-logo-left) + var(--level-gap) * 5);max-width:calc(var(--left-bar-current-width) - var(--size-header-logo-left) - var(--size-scrollbar-width) - var(--size-layout-block-cell-spacing) * 2 - var(--level-gap) * 5)}.navigator-container .parent[data-level=\"1\"]{margin:10px 0}.navigator-container .parent[data-level=\"1\"] a{margin-left:0}.navigator-container .parent[data-level=\"2\"]:not(.ul-thin-mode) a{margin-left:10px}.navigator-container .parent[data-level=\"3\"]:not(.ul-thin-mode) a{margin-left:20px}.navigator-container .parent[data-level=\"4\"]:not(.ul-thin-mode) a{margin-left:30px}.navigator-container .parent[data-level=\"5\"]:not(.ul-thin-mode) a{margin-left:40px}.navigator-container .parent[data-level=\"6\"]:not(.ul-thin-mode) a{margin-left:50px}.navigator-container .parent .menu-item-wrapper{height:35px;display:flex;align-items:center;margin:0}.navigator-container .parent .menu-item-wrapper>i{display:inline-block;cursor:pointer}.navigator-container .parent .menu-item-wrapper:not(.module-thin-mode){margin-left:var(--thin-mode-padding)!important;margin-right:var(--thin-mode-padding)!important}.navigator-container .parent>ul:not(.ul-thin-mode){position:relative;overflow:hidden;transition:opacity .5s ease-out}.navigator-container .parent>ul.ul-thin-mode{overflow-x:hidden;display:none;margin-left:0!important;opacity:1;transition:opacity .5s ease-out}.navigator-container .parent>ul.ul-thin-mode{overflow-y:auto}.navigator-container .parent.active[data-level=\"2\"]>.menu-item-wrapper>a{transition:.5s ease-out}.navigator-container .parent.highlighted>.menu-item-wrapper>a{color:var(--color-core-org-tree-highlighted)!important;font-weight:700!important}.navigator-container .parent.expanded>ul:not(.submenu){display:block;opacity:1;transition:opacity .5s ease-out}.navigator-container .parent:not(.li-thin-mode) a{margin-left:0}.navigator-container .parent.reduced .menu-item-wrapper{padding:0}.navigator-container .expanded:not(.li-thin-mode)>.menu-item-wrapper{background-color:var(--active-item-background-color);display:flex;justify-content:flex-start}.navigator-container .expanded>ul:not(.submenu){overflow:visible!important}.navigator-container .expanded.reduced>.menu-item-wrapper{justify-content:flex-start!important;border-top-left-radius:50px;border-bottom-left-radius:50px;width:37px}.navigator-container .parent.reduced>.menu-item-wrapper{justify-content:flex-start!important;width:37px}.navigator-container .parent.expanded.reduced>.menu-item-wrapper{background-color:#fff;left:10px!important}.navigator-container .parent.expanded.reduced>.menu-item-wrapper>i{left:9px!important;top:8px!important}.navigator-container .parent.reduced>.menu-item-wrapper{left:10px!important}.navigator-container .parent.reduced>.menu-item-wrapper>i{left:9px!important}.navigator-container li.parent:not(.li-thin-mode) .menu-item-wrapper:hover{background-color:var(--hover-bg-color);box-shadow:inset 10px 0 var(--hover-bg-color),inset -10px 0 var(--hover-bg-color)}\n"], dependencies: [{ kind: "component", type: ItemComponent, selector: "app-item", inputs: ["item", "level"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: TooltipDirective, selector: "[appTooltip]", inputs: ["color", "backgroundColor", "appTooltip", "showAnyway", "position"] }, { kind: "pipe", type: StringHtmlPipe, name: "stringHtml" }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
200
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.3", type: ItemComponent, isStandalone: true, selector: "app-item", inputs: { item: "item", level: "level" }, viewQueries: [{ propertyName: "me", first: true, predicate: ["me"], descendants: true }, { propertyName: "children", first: true, predicate: ["children"], descendants: true }, { propertyName: "link", first: true, predicate: ["link"], descendants: true }, { propertyName: "subArrow", first: true, predicate: ["subArrow"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<li #me [id]=\"'main-menu-' + item.id\" class=\"parent\" [attr.data-level]=\"level\" [class.reduced]=\"leftbarReduced\"\r\n [class.active]=\"!wideMode && active\" [class.expanded]=\"item.tree$Expanded\"\r\n [class.highlighted]=\"item.tree$Highlighted\" [class.li-thin-mode]=\"!wideMode\" [class.menu-item]=\"!wideMode\"\r\n [appTooltip]=\"level===1 && !active ? caption : undefined\" [position]=\"'right'\" [ngStyle]=\"{\r\n marginTop: (level===1 && !wideMode) ? navigatorService.iconGutterY + 'px' : '',\r\n marginBottom: (level===1 && !wideMode) ? navigatorService.iconGutterY + 'px' : ''\r\n }\">\r\n <div class=\"menu-item-wrapper\" [attr.data-level]=\"level\" (click)=\"onClick($event, item)\" [class.active]=\"active\"\r\n [class.module-thin-mode]=\"!wideMode && level===1\" [class.thin-branch]=\"!wideMode && level > 1\">\r\n\r\n @if (wideMode) {\r\n @if (!!!leftbarReduced) {\r\n @if (!!hasChildren) {\r\n <span [innerHtml]=\"subMenuSvgIconRight | stringHtml\" class=\"sub-icon-right\"></span>\r\n }\r\n }\r\n }\r\n\r\n @if (!!item.iconSvg) {\r\n <!-- <i [attr.data-level]=\"level\" class=\"'module-icon'\" [appTooltip]=\"wideMode ? caption : undefined\"\r\n (click)=\"onModuleIconClick($event, item);false\" [ngStyle]=\"{\r\n position: 'absolute',\r\n left: wideMode ? '13px' : 'unset'\r\n }\"><span [innerHtml]=\"item.iconSvg | stringHtml\"></span></i> -->\r\n <i [attr.data-level]=\"level\" class=\"'module-icon'\" [appTooltip]=\"wideMode ? caption : undefined\"\r\n [ngStyle]=\"{\r\n position: 'absolute',\r\n left: wideMode ? '13px' : 'unset'\r\n }\"><span [innerHtml]=\"item.iconSvg | stringHtml\"></span></i>\r\n } @else if (!!item.iconClass) {\r\n <!-- <i [attr.data-level]=\"level\" [class]=\"item.iconClass + ' module-icon'\"\r\n [appTooltip]=\"wideMode ? caption : undefined\" (click)=\"onModuleIconClick($event, item);false\" [ngStyle]=\"{\r\n left: wideMode ? '13px' : 'unset'\r\n }\"></i> -->\r\n <i [attr.data-level]=\"level\" [class]=\"item.iconClass + ' module-icon'\"\r\n [appTooltip]=\"wideMode ? caption : undefined\" [ngStyle]=\"{\r\n left: wideMode ? '13px' : 'unset'\r\n }\"></i>\r\n } @else if (!item.parent) {\r\n <!-- <i [attr.data-level]=\"level\" class=\"'module-icon'\" [appTooltip]=\"wideMode ? caption : undefined\"\r\n (click)=\"onModuleIconClick($event, item);false\" [ngStyle]=\"{\r\n position: 'absolute',\r\n left: wideMode ? '13px' : 'unset'\r\n }\"><span [innerHtml]=\"defaultSvg | stringHtml\"></span></i> -->\r\n <i [attr.data-level]=\"level\" class=\"'module-icon'\" [appTooltip]=\"wideMode ? caption : undefined\"\r\n [ngStyle]=\"{\r\n position: 'absolute',\r\n left: wideMode ? '13px' : 'unset'\r\n }\"><span [innerHtml]=\"defaultSvg | stringHtml\"></span></i>\r\n }\r\n\r\n @if (!wideMode || (!leftbarReduced && hasChildren)) {\r\n <a #link [attr.data-level]=\"level\" class=\"has-submenu\" [appTooltip]=\"level > 1 ? caption : undefined\"\r\n [class.thin-mode]=\"!wideMode\">\r\n\r\n \r\n <!-- <ng-container (click)=\"subArrowClicked($event, item);false\">\r\n <span #subArrow *ngIf=\"(!!item.pictureBase64 || !!item.pictureUri)\"\r\n [class]=\"'img-span plus level' + level\">\r\n <img [src]=\"item.pictureBase64 || item.pictureUri\" *ngIf=\"!!item.pictureBase64\">\r\n </span>\r\n <span #subArrow *ngIf=\"!!!item.pictureBase64 && !!!item.pictureUri\"\r\n [class]=\"'plus level' + level\"></span>\r\n </ng-container> -->\r\n\r\n <img *ngIf=\"(!!item.pictureBase64 || !!item.pictureUri)\" [src]=\"item.pictureBase64 || item.pictureUri\">\r\n\r\n {{ caption }}\r\n\r\n </a>\r\n } @else {\r\n <!-- <a [attr.data-level]=\"level\" [routerLink]=\"item.url\" (click)=\"onClick($event, item)\"\r\n [class.thin-mode]=\"!wideMode\" [appTooltip]=\"wideMode ? caption : undefined\">\r\n {{ caption }}\r\n </a> -->\r\n <a [attr.data-level]=\"level\" [routerLink]=\"item.url\"\r\n [class.thin-mode]=\"!wideMode\" [appTooltip]=\"wideMode ? caption : undefined\">\r\n {{ caption }}\r\n </a>\r\n }\r\n\r\n </div>\r\n\r\n @if (!!wideMode && !!hasChildren && !!item.tree$Children!.length && !!!leftbarReduced) {\r\n <ul #children class=\"d-none\" [class.ul-thin-mode]=\"!wideMode\" [ngStyle]=\"{\r\n padding: 0,\r\n }\" [class.submenu]=\"!wideMode\">\r\n <div>\r\n @for (child of item.tree$Children; track $index) {\r\n <app-item [item]=\"child\" [level]=\"level+1\" (clicked)=\"onClick($event, child)\"></app-item>\r\n }\r\n </div>\r\n </ul>\r\n }\r\n\r\n</li>", styles: [".navigator-container{--active-item-color: #DD5F2A;--active-item-background-color: white;--active-item-border-color: white;--line-height: 16px;--level-gap: 10px;--thin-mode-padding: 8px;--thin-mode-width: 66px;--wide-mode-width: 280px;--left-bar-current-width: 280px;--bg-color: #F1F1F1;--color: black;--hover-bg-color: #E1E3E5;--hover-color: black;--icon-border-radius: 0px;--icon-gutter-y: 8px;font-size:13px}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.navigator-container .d-none{display:none}.navigator-container svg{width:24px;height:24px}.navigator-container .module-thin-mode{display:flex!important;align-items:center!important;justify-content:center!important;padding:0!important;margin-bottom:5px!important;height:50px!important}.navigator-container .module-thin-mode svg{color:var(--color)}.navigator-container .module-thin-mode i{color:var(--color)!important}.navigator-container .li-thin-mode[data-level=\"1\"]{height:50px!important;margin-left:0!important;margin-right:0!important}.navigator-container .li-thin-mode .thin-branch{overflow:hidden}.navigator-container .li-thin-mode .thin-branch a{padding-left:15px;padding-right:15px;overflow:hidden;max-width:calc(100% - var(--size-layout-block-cell-spacing) * 2);text-overflow:ellipsis}.navigator-container .li-thin-mode .thin-branch:hover{background:#e1e3e5!important}.navigator-container .li-thin-mode:hover[data-level=\"1\"]>ul.ul-thin-mode{transform:translate(calc(var(--thin-mode-width)))}.navigator-container .li-thin-mode:hover:not([data-level=\"1\"])>ul.ul-thin-mode{transform:translate(calc(var(--wide-mode-width) - var(--size-layout-block-cell-spacing)))}.navigator-container .li-thin-mode.active .module-thin-mode{width:50px!important;transform:translate(var(--thin-mode-padding))}.navigator-container .li-thin-mode.active .module-thin-mode i{color:var(--active-item-color)!important}.navigator-container .li-thin-mode.active .module-thin-mode svg{color:var(--active-item-color)!important}.navigator-container .li-thin-mode.active>ul.ul-thin-mode{background-color:#fff;opacity:1;height:unset;overflow-y:auto;box-shadow:.4rem 0 2rem #0000002e}.navigator-container .li-thin-mode.active>ul.ul-thin-mode>div>app-item>li>div>a{display:block!important}.navigator-container .li-thin-mode.active[data-level=\"1\"]>ul.ul-thin-mode{display:block;transform:translate(calc(var(--thin-mode-width)))}.navigator-container .li-thin-mode.active:not([data-level=\"1\"])>ul.ul-thin-mode{display:block;transform:translate(calc(var(--wide-mode-width) - var(--size-layout-block-cell-spacing)))}.navigator-container ul.ul-thin-mode{display:none}.navigator-container .parent{color:var(--color);background-color:var(--bg-color);--children-height: 0px;box-sizing:border-box;width:100%;transition:width 1s ease-out}.navigator-container .parent ul{animation:fadeIn .25s linear}.navigator-container .parent i.module-icon{position:absolute;display:inline-block;font-size:var(--size-left-bar-icon-font-size)!important;width:var(--size-left-bar-icon-font-size)!important;height:var(--size-left-bar-icon-font-size)!important}.navigator-container .parent .menu-item-wrapper{position:relative!important;margin-left:0!important;padding-left:0;border:none!important;cursor:pointer}.navigator-container .parent .menu-item-wrapper .sub-icon-right{display:block;position:absolute;right:0;top:5px;transform:rotate(0);transition:transform .5s ease-out}.navigator-container .parent .menu-item-wrapper .rotate90{transform:rotate(90deg)}.navigator-container .parent .menu-item-wrapper[data-level=\"1\"].module-thin-mode:hover{background-color:var(--hover-bg-color);width:50px;transform:translate(8px);color:var(--hover-color)!important}.navigator-container .parent a.thin-mode{left:0!important;display:none;padding-left:15px;padding-right:15px;overflow:hidden;text-overflow:ellipsis}.navigator-container .parent a{color:inherit;position:absolute!important;margin-left:0!important;padding-left:0;border:none!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;user-select:none;-webkit-user-select:none}.navigator-container .parent a:hover{color:var(--color)!important}.navigator-container .parent a[data-level=\"1\"]:not(.thin-mode){left:var(--size-header-logo-left);max-width:calc(var(--left-bar-current-width) - var(--size-header-logo-left) - var(--size-scrollbar-width) - var(--size-layout-block-cell-spacing) * 2)}.navigator-container .parent a[data-level=\"2\"]:not(.thin-mode){left:calc(var(--size-header-logo-left));max-width:calc(var(--left-bar-current-width) - var(--size-header-logo-left) - var(--size-scrollbar-width) - var(--size-layout-block-cell-spacing) * 2)}.navigator-container .parent a[data-level=\"3\"]:not(.thin-mode){left:calc(var(--size-header-logo-left) + var(--level-gap) * 1);max-width:calc(var(--left-bar-current-width) - var(--size-header-logo-left) - var(--size-scrollbar-width) - var(--size-layout-block-cell-spacing) * 2 - var(--level-gap) * 1)}.navigator-container .parent a[data-level=\"4\"]:not(.thin-mode){left:calc(var(--size-header-logo-left) + var(--level-gap) * 2);max-width:calc(var(--left-bar-current-width) - var(--size-header-logo-left) - var(--size-scrollbar-width) - var(--size-layout-block-cell-spacing) * 2 - var(--level-gap) * 2)}.navigator-container .parent a[data-level=\"5\"]:not(.thin-mode){left:calc(var(--size-header-logo-left) + var(--level-gap) * 3);max-width:calc(var(--left-bar-current-width) - var(--size-header-logo-left) - var(--size-scrollbar-width) - var(--size-layout-block-cell-spacing) * 2 - var(--level-gap) * 3)}.navigator-container .parent a[data-level=\"6\"]:not(.thin-mode){left:calc(var(--size-header-logo-left) + var(--level-gap) * 4);max-width:calc(var(--left-bar-current-width) - var(--size-header-logo-left) - var(--size-scrollbar-width) - var(--size-layout-block-cell-spacing) * 2 - var(--level-gap) * 4)}.navigator-container .parent[data-level=\"1\"]{margin:10px 0}.navigator-container .parent[data-level=\"1\"] a{margin-left:0}.navigator-container .parent[data-level=\"2\"]:not(.ul-thin-mode) a{margin-left:10px}.navigator-container .parent[data-level=\"3\"]:not(.ul-thin-mode) a{margin-left:20px}.navigator-container .parent[data-level=\"4\"]:not(.ul-thin-mode) a{margin-left:30px}.navigator-container .parent[data-level=\"5\"]:not(.ul-thin-mode) a{margin-left:40px}.navigator-container .parent[data-level=\"6\"]:not(.ul-thin-mode) a{margin-left:50px}.navigator-container .parent .menu-item-wrapper{height:35px;display:flex;align-items:center;margin:0}.navigator-container .parent .menu-item-wrapper>i{display:inline-block;cursor:pointer}.navigator-container .parent .menu-item-wrapper:not(.module-thin-mode){margin-left:var(--thin-mode-padding)!important;margin-right:var(--thin-mode-padding)!important}.navigator-container .parent>ul:not(.ul-thin-mode){position:relative;overflow:hidden;transition:opacity .5s ease-out}.navigator-container .parent>ul.ul-thin-mode{overflow-x:hidden;display:none;margin-left:0!important;opacity:1;transition:opacity .5s ease-out}.navigator-container .parent>ul.ul-thin-mode{overflow-y:auto}.navigator-container .parent.active[data-level=\"2\"]>.menu-item-wrapper>a{transition:.5s ease-out}.navigator-container .parent.highlighted>.menu-item-wrapper>a{color:var(--color-core-org-tree-highlighted)!important;font-weight:700!important}.navigator-container .parent.expanded>ul:not(.submenu){display:block;opacity:1;transition:opacity .5s ease-out}.navigator-container .parent:not(.li-thin-mode) a{margin-left:0}.navigator-container .parent.reduced .menu-item-wrapper{padding:0}.navigator-container .expanded:not(.li-thin-mode)>.menu-item-wrapper{background-color:var(--active-item-background-color);display:flex;justify-content:flex-start}.navigator-container .expanded>ul:not(.submenu){overflow:visible!important}.navigator-container .expanded.reduced>.menu-item-wrapper{justify-content:flex-start!important;border-top-left-radius:50px;border-bottom-left-radius:50px;width:37px}.navigator-container .parent.reduced>.menu-item-wrapper{justify-content:flex-start!important;width:37px}.navigator-container .parent.expanded.reduced>.menu-item-wrapper{background-color:#fff;left:10px!important}.navigator-container .parent.expanded.reduced>.menu-item-wrapper>i{left:9px!important;top:8px!important}.navigator-container .parent.reduced>.menu-item-wrapper{left:10px!important}.navigator-container .parent.reduced>.menu-item-wrapper>i{left:9px!important}.navigator-container li.parent:not(.li-thin-mode) .menu-item-wrapper:hover{background-color:var(--hover-bg-color);box-shadow:inset 10px 0 var(--hover-bg-color),inset -10px 0 var(--hover-bg-color)}\n"], dependencies: [{ kind: "component", type: ItemComponent, selector: "app-item", inputs: ["item", "level"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: TooltipDirective, selector: "[appTooltip]", inputs: ["color", "backgroundColor", "appTooltip", "showAnyway", "position"] }, { kind: "pipe", type: StringHtmlPipe, name: "stringHtml" }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
193
201
|
}
|
|
194
202
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: ItemComponent, decorators: [{
|
|
195
203
|
type: Component,
|
|
@@ -198,7 +206,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
|
|
|
198
206
|
RouterModule,
|
|
199
207
|
TooltipDirective,
|
|
200
208
|
StringHtmlPipe,
|
|
201
|
-
], encapsulation: ViewEncapsulation.None, template: "<li #me [id]=\"'main-menu-' + item.id\" class=\"parent\" [attr.data-level]=\"level\" [class.reduced]=\"leftbarReduced\"\r\n [class.active]=\"!wideMode && active\" [class.expanded]=\"item.tree$Expanded\"\r\n [class.highlighted]=\"item.tree$Highlighted\" [class.li-thin-mode]=\"!wideMode\" [class.menu-item]=\"!wideMode\"\r\n [appTooltip]=\"level===1 && !active ? caption : undefined\" [position]=\"'right'\" [ngStyle]=\"{\r\n marginTop: (level===1 && !wideMode) ? navigatorService.iconGutterY + 'px' : '',\r\n marginBottom: (level===1 && !wideMode) ? navigatorService.iconGutterY + 'px' : ''\r\n }\">\r\n <div class=\"menu-item-wrapper\" [attr.data-level]=\"level\" (click)=\"onClick($event, item)\"\r\n [class.active]=\"active\" [class.module-thin-mode]=\"!wideMode && level===1\" [class.thin-branch]=\"!wideMode && level > 1\">\r\n\r\n @if (wideMode) {\r\n @if (!!!leftbarReduced) {\r\n @if (!!hasChildren) {\r\n <span [innerHtml]=\"subMenuSvgIconRight | stringHtml\" class=\"sub-icon-right\" [class.rotate90]=\"!!item.tree$Selected\"></span>\r\n }\r\n <!-- @else {\r\n @if (item.tree$Selected && item.code !== 'MENU.DASHBOARD' && item.code !== 'MENU.HOME') {\r\n <i [attr.data-level]=\"level\" class=\"custom-icon-child-right\"></i>\r\n }\r\n } -->\r\n }\r\n }\r\n\r\n @if (!!item.iconSvg) {\r\n <i [attr.data-level]=\"level\" class=\"'module-icon'\" [appTooltip]=\"wideMode ? caption : undefined\"\r\n (click)=\"onModuleIconClick($event, item);false\" [ngStyle]=\"{\r\n position: 'absolute',\r\n left: wideMode ? '20px' : 'unset'\r\n }\"><span [innerHtml]=\"item.iconSvg | stringHtml\"></span></i>\r\n\r\n <!-- <span [innerHtml]=\"item.iconSvg | stringHtml\"></span> -->\r\n } @else if (!!item.iconClass) {\r\n <i [attr.data-level]=\"level\" [class]=\"item.iconClass + ' module-icon'\"\r\n [appTooltip]=\"wideMode ? caption : undefined\" (click)=\"onModuleIconClick($event, item);false\" [ngStyle]=\"{\r\n left: wideMode ? '20px' : 'unset'\r\n }\"></i>\r\n } @else if (!item.parent) {\r\n <i [attr.data-level]=\"level\" class=\"'module-icon'\" [appTooltip]=\"wideMode ? caption : undefined\"\r\n (click)=\"onModuleIconClick($event, item);false\" [ngStyle]=\"{\r\n position: 'absolute',\r\n left: wideMode ? '20px' : 'unset'\r\n }\"><span [innerHtml]=\"defaultSvg | stringHtml\"></span></i>\r\n }\r\n\r\n @if (!wideMode || (!leftbarReduced && hasChildren)) {\r\n <a #link [attr.data-level]=\"level\" class=\"has-submenu\" [appTooltip]=\"level > 1 ? caption : undefined\"\r\n [class.thin-mode]=\"!wideMode\">\r\n <ng-container (click)=\"subArrowClicked($event, item);false\"> <!--false is important here-->\r\n <span #subArrow *ngIf=\"(!!item.pictureBase64 || !!item.pictureUri)\"\r\n [class]=\"'img-span plus level' + level\">\r\n <img [src]=\"item.pictureBase64 || item.pictureUri\" *ngIf=\"!!item.pictureBase64\">\r\n </span>\r\n <span #subArrow *ngIf=\"!!!item.pictureBase64 && !!!item.pictureUri\"\r\n [class]=\"'plus level' + level\"></span>\r\n </ng-container>\r\n\r\n <img *ngIf=\"(!!item.pictureBase64 || !!item.pictureUri)\" [src]=\"item.pictureBase64 || item.pictureUri\">\r\n\r\n {{ caption }}\r\n\r\n </a>\r\n } @else {\r\n <a [attr.data-level]=\"level\" [routerLink]=\"item.url\" (click)=\"onClick($event, item)\"\r\n [class.thin-mode]=\"!wideMode\" [appTooltip]=\"wideMode ? caption : undefined\">\r\n {{ caption }}\r\n </a>\r\n }\r\n\r\n </div>\r\n\r\n @if (!!wideMode && !!hasChildren && !!item.tree$Expanded && !!item.tree$Children!.length && !!!leftbarReduced) {\r\n <!-- width: !!wideMode ? (layoutService.leftBarCurrentWidth$.value - layoutService.basicSpacing - layoutService.scrollBarWidth + 5 + 'px') : ( layoutService.leftBarWideWidth$.value + 'px' ), -->\r\n <ul #children [class.expanded]=\"!wideMode || item.tree$Expanded\" [class.ul-thin-mode]=\"!wideMode\" [ngStyle]=\"{\r\n padding: 0,\r\n }\" [class.submenu]=\"!wideMode\">\r\n <div>\r\n @for (child of item.tree$Children; track $index) {\r\n <app-item [item]=\"child\" [level]=\"level+1\" (clicked)=\"onClick($event, child)\"></app-item>\r\n }\r\n </div>\r\n </ul>\r\n }\r\n\r\n</li>", styles: [".navigator-container{--active-item-color: #DD5F2A;--active-item-background-color: white;--active-item-border-color: white;--line-height: 16px;--level-gap: 10px;--thin-mode-padding: 8px;--thin-mode-width: 66px;--wide-mode-width: 280px;--left-bar-current-width: 280px;--bg-color: #F1F1F1;--color: black;--hover-bg-color: #E1E3E5;--hover-color: black;--icon-border-radius: 0px;--icon-gutter-y: 8px;font-size:13px}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.navigator-container .d-none{display:none}.navigator-container svg{width:24px;height:24px}.navigator-container .module-thin-mode{display:flex!important;align-items:center!important;justify-content:center!important;padding:0!important;margin-bottom:5px!important;height:50px!important}.navigator-container .module-thin-mode svg{color:var(--color)}.navigator-container .module-thin-mode i{color:var(--color)!important}.navigator-container .li-thin-mode[data-level=\"1\"]{height:50px!important;margin-left:0!important;margin-right:0!important}.navigator-container .li-thin-mode .thin-branch{overflow:hidden}.navigator-container .li-thin-mode .thin-branch a{padding-left:15px;padding-right:15px;overflow:hidden;max-width:calc(100% - var(--size-layout-block-cell-spacing) * 2);text-overflow:ellipsis}.navigator-container .li-thin-mode .thin-branch:hover{background:#e1e3e5!important}.navigator-container .li-thin-mode:hover[data-level=\"1\"]>ul.ul-thin-mode{transform:translate(calc(var(--thin-mode-width)))}.navigator-container .li-thin-mode:hover:not([data-level=\"1\"])>ul.ul-thin-mode{transform:translate(calc(var(--wide-mode-width) - var(--size-layout-block-cell-spacing)))}.navigator-container .li-thin-mode.active .module-thin-mode{width:50px!important;transform:translate(var(--thin-mode-padding))}.navigator-container .li-thin-mode.active .module-thin-mode i{color:var(--active-item-color)!important}.navigator-container .li-thin-mode.active .module-thin-mode svg{color:var(--active-item-color)!important}.navigator-container .li-thin-mode.active>ul.ul-thin-mode{background-color:#fff;opacity:1;height:unset;overflow-y:auto;box-shadow:.4rem 0 2rem #0000002e}.navigator-container .li-thin-mode.active>ul.ul-thin-mode>div>app-item>li>div>a{display:block!important}.navigator-container .li-thin-mode.active[data-level=\"1\"]>ul.ul-thin-mode{display:block;transform:translate(calc(var(--thin-mode-width)))}.navigator-container .li-thin-mode.active:not([data-level=\"1\"])>ul.ul-thin-mode{display:block;transform:translate(calc(var(--wide-mode-width) - var(--size-layout-block-cell-spacing)))}.navigator-container ul.ul-thin-mode{display:none}.navigator-container .parent{color:var(--color);background-color:var(--bg-color);--children-height: 0px;box-sizing:border-box;width:100%;transition:width 1s ease-out}.navigator-container .parent ul{animation:fadeIn .25s linear}.navigator-container .parent i.module-icon{position:absolute;display:inline-block;font-size:var(--size-left-bar-icon-font-size)!important;width:var(--size-left-bar-icon-font-size)!important;height:var(--size-left-bar-icon-font-size)!important}.navigator-container .parent .menu-item-wrapper{position:relative!important;margin-left:0!important;padding-left:0;border:none!important;cursor:pointer}.navigator-container .parent .menu-item-wrapper .sub-icon-right{display:block;position:absolute;right:0;top:5px;transform:rotate(0);transition:transform .5s ease-out}.navigator-container .parent .menu-item-wrapper .rotate90{transform:rotate(90deg)}.navigator-container .parent .menu-item-wrapper[data-level=\"1\"].module-thin-mode:hover{background-color:var(--hover-bg-color);width:50px;transform:translate(8px);color:var(--hover-color)!important}.navigator-container .parent a.thin-mode{left:0!important;display:none;padding-left:15px;padding-right:15px;overflow:hidden;text-overflow:ellipsis}.navigator-container .parent a{color:inherit;position:absolute!important;margin-left:0!important;padding-left:0;border:none!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;user-select:none;-webkit-user-select:none}.navigator-container .parent a:hover{color:var(--color)!important}.navigator-container .parent a[data-level=\"1\"]:not(.thin-mode){left:var(--size-header-logo-left);max-width:calc(var(--left-bar-current-width) - var(--size-header-logo-left) - var(--size-scrollbar-width) - var(--size-layout-block-cell-spacing) * 2)}.navigator-container .parent a[data-level=\"2\"]:not(.thin-mode){left:calc(var(--size-header-logo-left) + var(--level-gap));max-width:calc(var(--left-bar-current-width) - var(--size-header-logo-left) - var(--size-scrollbar-width) - var(--size-layout-block-cell-spacing) * 2 - var(--level-gap))}.navigator-container .parent a[data-level=\"3\"]:not(.thin-mode){left:calc(var(--size-header-logo-left) + var(--level-gap) * 2);max-width:calc(var(--left-bar-current-width) - var(--size-header-logo-left) - var(--size-scrollbar-width) - var(--size-layout-block-cell-spacing) * 2 - var(--level-gap) * 2)}.navigator-container .parent a[data-level=\"4\"]:not(.thin-mode){left:calc(var(--size-header-logo-left) + var(--level-gap) * 3);max-width:calc(var(--left-bar-current-width) - var(--size-header-logo-left) - var(--size-scrollbar-width) - var(--size-layout-block-cell-spacing) * 2 - var(--level-gap) * 3)}.navigator-container .parent a[data-level=\"5\"]:not(.thin-mode){left:calc(var(--size-header-logo-left) + var(--level-gap) * 4);max-width:calc(var(--left-bar-current-width) - var(--size-header-logo-left) - var(--size-scrollbar-width) - var(--size-layout-block-cell-spacing) * 2 - var(--level-gap) * 4)}.navigator-container .parent a[data-level=\"6\"]:not(.thin-mode){left:calc(var(--size-header-logo-left) + var(--level-gap) * 5);max-width:calc(var(--left-bar-current-width) - var(--size-header-logo-left) - var(--size-scrollbar-width) - var(--size-layout-block-cell-spacing) * 2 - var(--level-gap) * 5)}.navigator-container .parent[data-level=\"1\"]{margin:10px 0}.navigator-container .parent[data-level=\"1\"] a{margin-left:0}.navigator-container .parent[data-level=\"2\"]:not(.ul-thin-mode) a{margin-left:10px}.navigator-container .parent[data-level=\"3\"]:not(.ul-thin-mode) a{margin-left:20px}.navigator-container .parent[data-level=\"4\"]:not(.ul-thin-mode) a{margin-left:30px}.navigator-container .parent[data-level=\"5\"]:not(.ul-thin-mode) a{margin-left:40px}.navigator-container .parent[data-level=\"6\"]:not(.ul-thin-mode) a{margin-left:50px}.navigator-container .parent .menu-item-wrapper{height:35px;display:flex;align-items:center;margin:0}.navigator-container .parent .menu-item-wrapper>i{display:inline-block;cursor:pointer}.navigator-container .parent .menu-item-wrapper:not(.module-thin-mode){margin-left:var(--thin-mode-padding)!important;margin-right:var(--thin-mode-padding)!important}.navigator-container .parent>ul:not(.ul-thin-mode){position:relative;overflow:hidden;transition:opacity .5s ease-out}.navigator-container .parent>ul.ul-thin-mode{overflow-x:hidden;display:none;margin-left:0!important;opacity:1;transition:opacity .5s ease-out}.navigator-container .parent>ul.ul-thin-mode{overflow-y:auto}.navigator-container .parent.active[data-level=\"2\"]>.menu-item-wrapper>a{transition:.5s ease-out}.navigator-container .parent.highlighted>.menu-item-wrapper>a{color:var(--color-core-org-tree-highlighted)!important;font-weight:700!important}.navigator-container .parent.expanded>ul:not(.submenu){display:block;opacity:1;transition:opacity .5s ease-out}.navigator-container .parent:not(.li-thin-mode) a{margin-left:0}.navigator-container .parent.reduced .menu-item-wrapper{padding:0}.navigator-container .expanded:not(.li-thin-mode)>.menu-item-wrapper{background-color:var(--active-item-background-color);display:flex;justify-content:flex-start}.navigator-container .expanded>ul:not(.submenu){overflow:visible!important}.navigator-container .expanded.reduced>.menu-item-wrapper{justify-content:flex-start!important;border-top-left-radius:50px;border-bottom-left-radius:50px;width:37px}.navigator-container .parent.reduced>.menu-item-wrapper{justify-content:flex-start!important;width:37px}.navigator-container .parent.expanded.reduced>.menu-item-wrapper{background-color:#fff;left:10px!important}.navigator-container .parent.expanded.reduced>.menu-item-wrapper>i{left:9px!important;top:8px!important}.navigator-container .parent.reduced>.menu-item-wrapper{left:10px!important}.navigator-container .parent.reduced>.menu-item-wrapper>i{left:9px!important}.navigator-container li.parent:not(.li-thin-mode) .menu-item-wrapper:hover{background-color:var(--hover-bg-color);box-shadow:inset 10px 0 var(--hover-bg-color),inset -10px 0 var(--hover-bg-color)}\n"] }]
|
|
209
|
+
], encapsulation: ViewEncapsulation.None, template: "<li #me [id]=\"'main-menu-' + item.id\" class=\"parent\" [attr.data-level]=\"level\" [class.reduced]=\"leftbarReduced\"\r\n [class.active]=\"!wideMode && active\" [class.expanded]=\"item.tree$Expanded\"\r\n [class.highlighted]=\"item.tree$Highlighted\" [class.li-thin-mode]=\"!wideMode\" [class.menu-item]=\"!wideMode\"\r\n [appTooltip]=\"level===1 && !active ? caption : undefined\" [position]=\"'right'\" [ngStyle]=\"{\r\n marginTop: (level===1 && !wideMode) ? navigatorService.iconGutterY + 'px' : '',\r\n marginBottom: (level===1 && !wideMode) ? navigatorService.iconGutterY + 'px' : ''\r\n }\">\r\n <div class=\"menu-item-wrapper\" [attr.data-level]=\"level\" (click)=\"onClick($event, item)\" [class.active]=\"active\"\r\n [class.module-thin-mode]=\"!wideMode && level===1\" [class.thin-branch]=\"!wideMode && level > 1\">\r\n\r\n @if (wideMode) {\r\n @if (!!!leftbarReduced) {\r\n @if (!!hasChildren) {\r\n <span [innerHtml]=\"subMenuSvgIconRight | stringHtml\" class=\"sub-icon-right\"></span>\r\n }\r\n }\r\n }\r\n\r\n @if (!!item.iconSvg) {\r\n <!-- <i [attr.data-level]=\"level\" class=\"'module-icon'\" [appTooltip]=\"wideMode ? caption : undefined\"\r\n (click)=\"onModuleIconClick($event, item);false\" [ngStyle]=\"{\r\n position: 'absolute',\r\n left: wideMode ? '13px' : 'unset'\r\n }\"><span [innerHtml]=\"item.iconSvg | stringHtml\"></span></i> -->\r\n <i [attr.data-level]=\"level\" class=\"'module-icon'\" [appTooltip]=\"wideMode ? caption : undefined\"\r\n [ngStyle]=\"{\r\n position: 'absolute',\r\n left: wideMode ? '13px' : 'unset'\r\n }\"><span [innerHtml]=\"item.iconSvg | stringHtml\"></span></i>\r\n } @else if (!!item.iconClass) {\r\n <!-- <i [attr.data-level]=\"level\" [class]=\"item.iconClass + ' module-icon'\"\r\n [appTooltip]=\"wideMode ? caption : undefined\" (click)=\"onModuleIconClick($event, item);false\" [ngStyle]=\"{\r\n left: wideMode ? '13px' : 'unset'\r\n }\"></i> -->\r\n <i [attr.data-level]=\"level\" [class]=\"item.iconClass + ' module-icon'\"\r\n [appTooltip]=\"wideMode ? caption : undefined\" [ngStyle]=\"{\r\n left: wideMode ? '13px' : 'unset'\r\n }\"></i>\r\n } @else if (!item.parent) {\r\n <!-- <i [attr.data-level]=\"level\" class=\"'module-icon'\" [appTooltip]=\"wideMode ? caption : undefined\"\r\n (click)=\"onModuleIconClick($event, item);false\" [ngStyle]=\"{\r\n position: 'absolute',\r\n left: wideMode ? '13px' : 'unset'\r\n }\"><span [innerHtml]=\"defaultSvg | stringHtml\"></span></i> -->\r\n <i [attr.data-level]=\"level\" class=\"'module-icon'\" [appTooltip]=\"wideMode ? caption : undefined\"\r\n [ngStyle]=\"{\r\n position: 'absolute',\r\n left: wideMode ? '13px' : 'unset'\r\n }\"><span [innerHtml]=\"defaultSvg | stringHtml\"></span></i>\r\n }\r\n\r\n @if (!wideMode || (!leftbarReduced && hasChildren)) {\r\n <a #link [attr.data-level]=\"level\" class=\"has-submenu\" [appTooltip]=\"level > 1 ? caption : undefined\"\r\n [class.thin-mode]=\"!wideMode\">\r\n\r\n \r\n <!-- <ng-container (click)=\"subArrowClicked($event, item);false\">\r\n <span #subArrow *ngIf=\"(!!item.pictureBase64 || !!item.pictureUri)\"\r\n [class]=\"'img-span plus level' + level\">\r\n <img [src]=\"item.pictureBase64 || item.pictureUri\" *ngIf=\"!!item.pictureBase64\">\r\n </span>\r\n <span #subArrow *ngIf=\"!!!item.pictureBase64 && !!!item.pictureUri\"\r\n [class]=\"'plus level' + level\"></span>\r\n </ng-container> -->\r\n\r\n <img *ngIf=\"(!!item.pictureBase64 || !!item.pictureUri)\" [src]=\"item.pictureBase64 || item.pictureUri\">\r\n\r\n {{ caption }}\r\n\r\n </a>\r\n } @else {\r\n <!-- <a [attr.data-level]=\"level\" [routerLink]=\"item.url\" (click)=\"onClick($event, item)\"\r\n [class.thin-mode]=\"!wideMode\" [appTooltip]=\"wideMode ? caption : undefined\">\r\n {{ caption }}\r\n </a> -->\r\n <a [attr.data-level]=\"level\" [routerLink]=\"item.url\"\r\n [class.thin-mode]=\"!wideMode\" [appTooltip]=\"wideMode ? caption : undefined\">\r\n {{ caption }}\r\n </a>\r\n }\r\n\r\n </div>\r\n\r\n @if (!!wideMode && !!hasChildren && !!item.tree$Children!.length && !!!leftbarReduced) {\r\n <ul #children class=\"d-none\" [class.ul-thin-mode]=\"!wideMode\" [ngStyle]=\"{\r\n padding: 0,\r\n }\" [class.submenu]=\"!wideMode\">\r\n <div>\r\n @for (child of item.tree$Children; track $index) {\r\n <app-item [item]=\"child\" [level]=\"level+1\" (clicked)=\"onClick($event, child)\"></app-item>\r\n }\r\n </div>\r\n </ul>\r\n }\r\n\r\n</li>", styles: [".navigator-container{--active-item-color: #DD5F2A;--active-item-background-color: white;--active-item-border-color: white;--line-height: 16px;--level-gap: 10px;--thin-mode-padding: 8px;--thin-mode-width: 66px;--wide-mode-width: 280px;--left-bar-current-width: 280px;--bg-color: #F1F1F1;--color: black;--hover-bg-color: #E1E3E5;--hover-color: black;--icon-border-radius: 0px;--icon-gutter-y: 8px;font-size:13px}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.navigator-container .d-none{display:none}.navigator-container svg{width:24px;height:24px}.navigator-container .module-thin-mode{display:flex!important;align-items:center!important;justify-content:center!important;padding:0!important;margin-bottom:5px!important;height:50px!important}.navigator-container .module-thin-mode svg{color:var(--color)}.navigator-container .module-thin-mode i{color:var(--color)!important}.navigator-container .li-thin-mode[data-level=\"1\"]{height:50px!important;margin-left:0!important;margin-right:0!important}.navigator-container .li-thin-mode .thin-branch{overflow:hidden}.navigator-container .li-thin-mode .thin-branch a{padding-left:15px;padding-right:15px;overflow:hidden;max-width:calc(100% - var(--size-layout-block-cell-spacing) * 2);text-overflow:ellipsis}.navigator-container .li-thin-mode .thin-branch:hover{background:#e1e3e5!important}.navigator-container .li-thin-mode:hover[data-level=\"1\"]>ul.ul-thin-mode{transform:translate(calc(var(--thin-mode-width)))}.navigator-container .li-thin-mode:hover:not([data-level=\"1\"])>ul.ul-thin-mode{transform:translate(calc(var(--wide-mode-width) - var(--size-layout-block-cell-spacing)))}.navigator-container .li-thin-mode.active .module-thin-mode{width:50px!important;transform:translate(var(--thin-mode-padding))}.navigator-container .li-thin-mode.active .module-thin-mode i{color:var(--active-item-color)!important}.navigator-container .li-thin-mode.active .module-thin-mode svg{color:var(--active-item-color)!important}.navigator-container .li-thin-mode.active>ul.ul-thin-mode{background-color:#fff;opacity:1;height:unset;overflow-y:auto;box-shadow:.4rem 0 2rem #0000002e}.navigator-container .li-thin-mode.active>ul.ul-thin-mode>div>app-item>li>div>a{display:block!important}.navigator-container .li-thin-mode.active[data-level=\"1\"]>ul.ul-thin-mode{display:block;transform:translate(calc(var(--thin-mode-width)))}.navigator-container .li-thin-mode.active:not([data-level=\"1\"])>ul.ul-thin-mode{display:block;transform:translate(calc(var(--wide-mode-width) - var(--size-layout-block-cell-spacing)))}.navigator-container ul.ul-thin-mode{display:none}.navigator-container .parent{color:var(--color);background-color:var(--bg-color);--children-height: 0px;box-sizing:border-box;width:100%;transition:width 1s ease-out}.navigator-container .parent ul{animation:fadeIn .25s linear}.navigator-container .parent i.module-icon{position:absolute;display:inline-block;font-size:var(--size-left-bar-icon-font-size)!important;width:var(--size-left-bar-icon-font-size)!important;height:var(--size-left-bar-icon-font-size)!important}.navigator-container .parent .menu-item-wrapper{position:relative!important;margin-left:0!important;padding-left:0;border:none!important;cursor:pointer}.navigator-container .parent .menu-item-wrapper .sub-icon-right{display:block;position:absolute;right:0;top:5px;transform:rotate(0);transition:transform .5s ease-out}.navigator-container .parent .menu-item-wrapper .rotate90{transform:rotate(90deg)}.navigator-container .parent .menu-item-wrapper[data-level=\"1\"].module-thin-mode:hover{background-color:var(--hover-bg-color);width:50px;transform:translate(8px);color:var(--hover-color)!important}.navigator-container .parent a.thin-mode{left:0!important;display:none;padding-left:15px;padding-right:15px;overflow:hidden;text-overflow:ellipsis}.navigator-container .parent a{color:inherit;position:absolute!important;margin-left:0!important;padding-left:0;border:none!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;user-select:none;-webkit-user-select:none}.navigator-container .parent a:hover{color:var(--color)!important}.navigator-container .parent a[data-level=\"1\"]:not(.thin-mode){left:var(--size-header-logo-left);max-width:calc(var(--left-bar-current-width) - var(--size-header-logo-left) - var(--size-scrollbar-width) - var(--size-layout-block-cell-spacing) * 2)}.navigator-container .parent a[data-level=\"2\"]:not(.thin-mode){left:calc(var(--size-header-logo-left));max-width:calc(var(--left-bar-current-width) - var(--size-header-logo-left) - var(--size-scrollbar-width) - var(--size-layout-block-cell-spacing) * 2)}.navigator-container .parent a[data-level=\"3\"]:not(.thin-mode){left:calc(var(--size-header-logo-left) + var(--level-gap) * 1);max-width:calc(var(--left-bar-current-width) - var(--size-header-logo-left) - var(--size-scrollbar-width) - var(--size-layout-block-cell-spacing) * 2 - var(--level-gap) * 1)}.navigator-container .parent a[data-level=\"4\"]:not(.thin-mode){left:calc(var(--size-header-logo-left) + var(--level-gap) * 2);max-width:calc(var(--left-bar-current-width) - var(--size-header-logo-left) - var(--size-scrollbar-width) - var(--size-layout-block-cell-spacing) * 2 - var(--level-gap) * 2)}.navigator-container .parent a[data-level=\"5\"]:not(.thin-mode){left:calc(var(--size-header-logo-left) + var(--level-gap) * 3);max-width:calc(var(--left-bar-current-width) - var(--size-header-logo-left) - var(--size-scrollbar-width) - var(--size-layout-block-cell-spacing) * 2 - var(--level-gap) * 3)}.navigator-container .parent a[data-level=\"6\"]:not(.thin-mode){left:calc(var(--size-header-logo-left) + var(--level-gap) * 4);max-width:calc(var(--left-bar-current-width) - var(--size-header-logo-left) - var(--size-scrollbar-width) - var(--size-layout-block-cell-spacing) * 2 - var(--level-gap) * 4)}.navigator-container .parent[data-level=\"1\"]{margin:10px 0}.navigator-container .parent[data-level=\"1\"] a{margin-left:0}.navigator-container .parent[data-level=\"2\"]:not(.ul-thin-mode) a{margin-left:10px}.navigator-container .parent[data-level=\"3\"]:not(.ul-thin-mode) a{margin-left:20px}.navigator-container .parent[data-level=\"4\"]:not(.ul-thin-mode) a{margin-left:30px}.navigator-container .parent[data-level=\"5\"]:not(.ul-thin-mode) a{margin-left:40px}.navigator-container .parent[data-level=\"6\"]:not(.ul-thin-mode) a{margin-left:50px}.navigator-container .parent .menu-item-wrapper{height:35px;display:flex;align-items:center;margin:0}.navigator-container .parent .menu-item-wrapper>i{display:inline-block;cursor:pointer}.navigator-container .parent .menu-item-wrapper:not(.module-thin-mode){margin-left:var(--thin-mode-padding)!important;margin-right:var(--thin-mode-padding)!important}.navigator-container .parent>ul:not(.ul-thin-mode){position:relative;overflow:hidden;transition:opacity .5s ease-out}.navigator-container .parent>ul.ul-thin-mode{overflow-x:hidden;display:none;margin-left:0!important;opacity:1;transition:opacity .5s ease-out}.navigator-container .parent>ul.ul-thin-mode{overflow-y:auto}.navigator-container .parent.active[data-level=\"2\"]>.menu-item-wrapper>a{transition:.5s ease-out}.navigator-container .parent.highlighted>.menu-item-wrapper>a{color:var(--color-core-org-tree-highlighted)!important;font-weight:700!important}.navigator-container .parent.expanded>ul:not(.submenu){display:block;opacity:1;transition:opacity .5s ease-out}.navigator-container .parent:not(.li-thin-mode) a{margin-left:0}.navigator-container .parent.reduced .menu-item-wrapper{padding:0}.navigator-container .expanded:not(.li-thin-mode)>.menu-item-wrapper{background-color:var(--active-item-background-color);display:flex;justify-content:flex-start}.navigator-container .expanded>ul:not(.submenu){overflow:visible!important}.navigator-container .expanded.reduced>.menu-item-wrapper{justify-content:flex-start!important;border-top-left-radius:50px;border-bottom-left-radius:50px;width:37px}.navigator-container .parent.reduced>.menu-item-wrapper{justify-content:flex-start!important;width:37px}.navigator-container .parent.expanded.reduced>.menu-item-wrapper{background-color:#fff;left:10px!important}.navigator-container .parent.expanded.reduced>.menu-item-wrapper>i{left:9px!important;top:8px!important}.navigator-container .parent.reduced>.menu-item-wrapper{left:10px!important}.navigator-container .parent.reduced>.menu-item-wrapper>i{left:9px!important}.navigator-container li.parent:not(.li-thin-mode) .menu-item-wrapper:hover{background-color:var(--hover-bg-color);box-shadow:inset 10px 0 var(--hover-bg-color),inset -10px 0 var(--hover-bg-color)}\n"] }]
|
|
202
210
|
}], ctorParameters: () => [{ type: i1.Router }, { type: i2.NavigatorService }, { type: i3.MultiLanguageService }, { type: i4.LayoutService }, { type: i5.MenuService }], propDecorators: { item: [{
|
|
203
211
|
type: Input
|
|
204
212
|
}], level: [{
|
|
@@ -216,4 +224,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
|
|
|
216
224
|
type: ViewChild,
|
|
217
225
|
args: ['subArrow']
|
|
218
226
|
}] } });
|
|
219
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtaGlzdGFmZi1hbHBoYS9zcmMvbGliL2FwcC9saWJyYXJpZXMvbmF2aWdhdG9yL25hdmlnYXRvci9pdGVtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1oaXN0YWZmLWFscGhhL3NyYy9saWIvYXBwL2xpYnJhcmllcy9uYXZpZ2F0b3IvbmF2aWdhdG9yL2l0ZW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxLQUFLLEVBQXFCLFNBQVMsRUFBRSxpQkFBaUIsRUFBdUYsTUFBTSxlQUFlLENBQUM7QUFDbk0sT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQ3hGLE9BQU8sRUFBVSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQU12RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDbkUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFDQUFxQyxDQUFDOzs7Ozs7OztBQUVyRSxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsK1dBQStXLENBQUE7QUFnQjFZLE1BQU0sT0FBTyxhQUFhO0lBeUJ4QixZQUNVLE1BQWMsRUFDZixnQkFBa0MsRUFDakMsR0FBeUIsRUFDMUIsYUFBNEIsRUFDM0IsV0FBd0I7UUFKeEIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNmLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDakMsUUFBRyxHQUFILEdBQUcsQ0FBc0I7UUFDMUIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFD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IENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5wdXQsIE9uSW5pdCwgT25EZXN0cm95LCBWaWV3Q2hpbGQsIFZpZXdFbmNhcHN1bGF0aW9uLCBDaGFuZ2VEZXRlY3RvclJlZiwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGJ1ZmZlciwgZGVib3VuY2VUaW1lLCBmaWx0ZXIsIG1hcCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFJvdXRlciwgUm91dGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgTmF2aWdhdG9yU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL25hdmlnYXRvci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTXVsdGlMYW5ndWFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9tdWx0aS1sYW5ndWFnZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTGF5b3V0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2xheW91dC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSU5hdmlnYXRvckl0ZW0gfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzL0lOYXZpZ2F0b3JJdGVtJztcclxuaW1wb3J0IHsgTWVudVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9tZW51LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBUb29sdGlwRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vdG9vbHRpcC90b29sdGlwLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFN0cmluZ0h0bWxQaXBlIH0gZnJvbSAnLi4vLi4vLi4vYXBwLXBpcGVzL3N0cmluZy1odG1sLnBpcGUnO1xyXG5cclxuZXhwb3J0IGNvbnN0IERFRkFVTFRfU1ZHID0gJzxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiBjbGFzcz1cImZlYXRoZXIgZmVhdGhlci1oZWxwLWNpcmNsZVwiPjxjaXJjbGUgY3g9XCIxMlwiIGN5PVwiMTJcIiByPVwiMTBcIj48L2NpcmNsZT48cGF0aCBkPVwiTTkuMDkgOWEzIDMgMCAwIDEgNS44MyAxYzAgMi0zIDMtMyAzXCI+PC9wYXRoPjxsaW5lIHgxPVwiMTJcIiB5MT1cIjE3XCIgeDI9XCIxMi4wMVwiIHkyPVwiMTdcIj48L2xpbmU+PC9zdmc+J1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtaXRlbScsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBSb3V0ZXJNb2R1bGUsXHJcbiAgICBUb29sdGlwRGlyZWN0aXZlLFxyXG4gICAgU3RyaW5nSHRtbFBpcGUsXHJcblxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2l0ZW0uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2l0ZW0uY29tcG9uZW50LnNjc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJdGVtQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XHJcblxyXG4gIEBJbnB1dCgpIGl0ZW0hOiBJTmF2aWdhdG9ySXRlbTtcclxuICBASW5wdXQoKSBsZXZlbCE6IG51bWJlcjtcclxuICBAVmlld0NoaWxkKCdtZScpIG1lITogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdjaGlsZHJlbicpIGNoaWxkcmVuITogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdsaW5rJykgbGluayE6IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZCgnc3ViQXJyb3cnKSBzdWJBcnJvdyE6IEVsZW1lbnRSZWY7XHJcblxyXG4gIGNhcHRpb24hOiBzdHJpbmc7XHJcbiAgZGVmYXVsdFN2ZyA9IERFRkFVTFRfU1ZHXHJcbiAgc3ViTWVudVN2Z0ljb25SaWdodDogc3RyaW5nID0gJzxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiBjbGFzcz1cImZlYXRoZXIgZmVhdGhlci1jaGV2cm9uLXJpZ2h0XCI+PHBvbHlsaW5lIHBvaW50cz1cIjkgMTggMTUgMTIgOSA2XCI+PC9wb2x5bGluZT48L3N2Zz4nO1xyXG5cclxuICBoYXNDaGlsZHJlbjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIG1haW5XaW5kb3dTdGF0ZSE6IHN0cmluZztcclxuICBleHBhbmRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGxlZnRiYXJSZWR1Y2VkITogYm9vbGVhbjtcclxuICBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG5cclxuICB3aWRlTW9kZSE6IGJvb2xlYW47XHJcbiAgY3VycmVudFdpZHRoOiBudW1iZXIgPSA2NjtcclxuICBhY3RpdmUhOiBib29sZWFuO1xyXG5cclxuICBpY29uQ2xpY2tTdHJlYW0kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCcnKTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxyXG4gICAgcHVibGljIG5hdmlnYXRvclNlcnZpY2U6IE5hdmlnYXRvclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG1sczogTXVsdGlMYW5ndWFnZVNlcnZpY2UsXHJcbiAgICBwdWJsaWMgbGF5b3V0U2VydmljZTogTGF5b3V0U2VydmljZSxcclxuICAgIHByaXZhdGUgbWVudVNlcnZpY2U6IE1lbnVTZXJ2aWNlLFxyXG4gICkge1xyXG4gICAgdGhpcy5uYXZpZ2F0b3JTZXJ2aWNlLndpZGVNb2RlJC5zdWJzY3JpYmUoeCA9PiB0aGlzLndpZGVNb2RlID0geCk7XHJcbiAgICB0aGlzLmxheW91dFNlcnZpY2UubGVmdEJhckN1cnJlbnRXaWR0aCQuc3Vic2NyaWJlKHggPT4ge1xyXG4gICAgICB0aGlzLmN1cnJlbnRXaWR0aCA9IHg7XHJcbiAgICAgIHRoaXMubWU/Lm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tbGVmdC1iYXItY3VycmVudC13aWR0aCcsIHggKyAncHgnKVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZiAoY2hhbmdlc1snaXRlbSddKSB7XHJcbiAgICAgIGNvbnN0IGl0OiBJTmF2aWdhdG9ySXRlbSA9IGNoYW5nZXNbJ2l0ZW0nXS5jdXJyZW50VmFsdWU7XHJcbiAgICAgIHRoaXMuaGFzQ2hpbGRyZW4gPSBpdD8udHJlZSRDaGlsZHJlbj8ubGVuZ3RoID4gMDtcclxuICAgICAgdGhpcy5jYXB0aW9uID0gdGhpcy5jYXB0aW9uID0gdGhpcy5tbHMudHJhbnModGhpcy5pdGVtIS5jb2RlKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBpZiAodGhpcy5pdGVtKSB7XHJcbiAgICAgIGlmICh0aGlzLml0ZW0udHJlZSRDaGlsZHJlbi5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgdGhpcy5oYXNDaGlsZHJlbiA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLm5hdmlnYXRvclNlcnZpY2UuYWN0aXZlSXRlbXMkLnN1YnNjcmliZShjID0+IHtcclxuICAgICAgaWYgKCFjKSByZXR1cm47XHJcbiAgICAgIHRoaXMuYWN0aXZlID0gISFjLmZpbHRlcih4ID0+IHguaWQgPT09IHRoaXMuaXRlbT8uaWQpLmxlbmd0aFxyXG4gICAgICBpZiAoISF0aGlzLmFjdGl2ZSkge1xyXG4gICAgICAgIHRoaXMubWU/Lm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LmFkZChcImFjdGl2ZVwiKVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMubWU/Lm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShcImFjdGl2ZVwiKVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG5cclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICB0aGlzLm1scy5sYW5nJC5zdWJzY3JpYmUoXyA9PiB7XHJcbiAgICAgICAgdGhpcy5jYXB0aW9uID0gdGhpcy5tbHMudHJhbnModGhpcy5pdGVtIS5jb2RlKVxyXG4gICAgICB9KVxyXG4gICAgKVxyXG5cclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICB0aGlzLmxheW91dFNlcnZpY2UubGVmdGJhclJlZHVjZWQkLnN1YnNjcmliZSh4ID0+IHRoaXMubGVmdGJhclJlZHVjZWQgPSB4KVxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgc3ViQXJyb3dDbGlja2VkKGV2ZW50OiBFdmVudCwgaXRlbTogSU5hdmlnYXRvckl0ZW0pIHtcclxuXHJcbiAgICBjb25zb2xlLmxvZyhcInN1YkFycm93Q2xpY2tlZCB0cmlnZ2VyZWRcIilcclxuXHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuXHJcbiAgICBpZiAoIXRoaXMud2lkZU1vZGUpIHtcclxuICAgICAgbGV0IG5ld0FjdGl2ZUl0ZW1zID0gdGhpcy5uYXZpZ2F0b3JTZXJ2aWNlLmFjdGl2ZUl0ZW1zJC52YWx1ZTtcclxuICAgICAgY29uc29sZS5sb2coXCJzdWJBcnJvd0NsaWNrZWQgbmV3QWN0aXZlSXRlbXMgYmU0IGZpbHRlcmluZ1wiLCBuZXdBY3RpdmVJdGVtcylcclxuICAgICAgbmV3QWN0aXZlSXRlbXMgPSBuZXdBY3RpdmVJdGVtcy5maWx0ZXIoeCA9PiB4LnRyZWUkVGllciEgPCBpdGVtLnRyZWUkVGllciEpO1xyXG4gICAgICBuZXdBY3RpdmVJdGVtcy5wdXNoKGl0ZW0pO1xyXG4gICAgICBjb25zb2xlLmxvZyhcInN1YkFycm93Q2xpY2tlZCBuZXdBY3RpdmVJdGVtc1wiLCBuZXdBY3RpdmVJdGVtcylcclxuICAgICAgdGhpcy5uYXZpZ2F0b3JTZXJ2aWNlLmFjdGl2ZUl0ZW1zJC5uZXh0KG5ld0FjdGl2ZUl0ZW1zKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgaWYgKHRoaXMuY2hpbGRyZW4ubmF0aXZlRWxlbWVudC5jbGFzc05hbWUgPT09ICdjaGlsZCBzdWItbWVudScpIHtcclxuICAgICAgdGhpcy5jaGlsZHJlbi5uYXRpdmVFbGVtZW50LmNsYXNzTmFtZSA9ICdjaGlsZCBzdWItbWVudSBleHBhbmRlZCc7XHJcbiAgICAgIHRoaXMuc3ViQXJyb3cubmF0aXZlRWxlbWVudC5jbGFzc05hbWUgPSB0aGlzLnN1YkFycm93Lm5hdGl2ZUVsZW1lbnQuY2xhc3NOYW1lLnJlcGxhY2UoJyBwbHVzJywgJycpICsgJyBtaW51cyc7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuY2hpbGRyZW4ubmF0aXZlRWxlbWVudC5jbGFzc05hbWUgPT09ICdjaGlsZCBzdWItbWVudSBleHBhbmRlZCcpIHtcclxuICAgICAgdGhpcy5jaGlsZHJlbi5uYXRpdmVFbGVtZW50LmNsYXNzTmFtZSA9ICdjaGlsZCBzdWItbWVudSc7XHJcbiAgICAgIHRoaXMuc3ViQXJyb3cubmF0aXZlRWxlbWVudC5jbGFzc05hbWUgPSB0aGlzLnN1YkFycm93Lm5hdGl2ZUVsZW1lbnQuY2xhc3NOYW1lLnJlcGxhY2UoJyBtaW51cycsICcnKSArICcgcGx1cyc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkNsaWNrKGV2ZW50OiBhbnksIGl0ZW06IElOYXZpZ2F0b3JJdGVtKSB7XHJcblxyXG4gICAgY29uc29sZS5sb2coXCJvbkNsaWNrIHRyaWdnZXJlZFwiLCBpdGVtKVxyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xyXG5cclxuICAgIGlmICghIWl0ZW0udHJlZSRQYXRoICYmICEhaXRlbS50cmVlJFBhdGgubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMubmF2aWdhdG9yU2VydmljZS51cGRhdGVUcmVlQ29sb3JzKGl0ZW0udHJlZSRQYXRoKVxyXG4gICAgfVxyXG5cclxuICAgIGlmICghIWl0ZW0udHJlZSRDaGlsZHJlbiAmJiAhIWl0ZW0udHJlZSRDaGlsZHJlbi5sZW5ndGgpIHtcclxuICAgICAgaXRlbS50cmVlJEV4cGFuZGVkID0gIWl0ZW0udHJlZSRFeHBhbmRlZFxyXG4gICAgfVxyXG5cclxuICAgIGlmICghdGhpcy53aWRlTW9kZSkge1xyXG4gICAgICB0aGlzLm9uTW9kdWxlSWNvbkNsaWNrKGV2ZW50LCBpdGVtKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghIXRoaXMud2lkZU1vZGUgJiYgdGhpcy5pdGVtIS50cmVlJFNlbGVjdGVkID09IHRydWUgJiYgISF0aGlzLml0ZW0hLnRyZWUkUGFyZW50ICYmICh0aGlzLml0ZW0hLnRyZWUkVGllciAhPSAyIHx8IHRoaXMuaXRlbSEudHJlZSRUaWVyID09IDIgJiYgdGhpcy5pdGVtIS50cmVlJENoaWxkcmVuLmxlbmd0aCA9PSAwKSkge1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy53aWRlTW9kZSkge1xyXG4gICAgICBpZiAodGhpcy5jaGlsZHJlbikge1xyXG4gICAgICAgIGNvbnN0IGVsID0gdGhpcy5jaGlsZHJlbi5uYXRpdmVFbGVtZW50O1xyXG4gICAgICAgIGNvbnN0IHJlY3QgPSBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgICAgICBjb25zdCBoZWlnaHQgPSByZWN0LmhlaWdodDtcclxuICAgICAgICBpZiAoaGVpZ2h0ID09PSAwKSB7XHJcbiAgICAgICAgICBpdGVtLnRyZWUkU2VsZWN0ZWQgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIGlmIChpdGVtLnRyZWUkVGllciA9PSAxIHx8IGl0ZW0udHJlZSRUaWVyID09IDIpIHtcclxuICAgICAgICAgICAgaXRlbS50cmVlJFNlbGVjdGVkID0gZmFsc2U7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMubWUubmF0aXZlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1jaGlsZHJlbi1oZWlnaHQnLCBoZWlnaHQgKyAncHgnKVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGl0ZW0udHJlZSRTZWxlY3RlZCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5tZW51U2VydmljZS5uYXZpZ2F0aW9uJC52YWx1ZS5tYXAoeCA9PiB7XHJcbiAgICAgICAgICBpZiAoeC50cmVlJENoaWxkcmVuKSB7XHJcbiAgICAgICAgICAgIHgudHJlZSRDaGlsZHJlbi5tYXAoKHk6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgIGlmICh5LnRyZWUkQ2hpbGRyZW4pIHtcclxuICAgICAgICAgICAgICAgIHkudHJlZSRDaGlsZHJlbi5tYXAoKHo6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICBpZiAoeiAhPSBpdGVtKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgei50cmVlJFNlbGVjdGVkID0gZmFsc2VcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICB9IGVsc2UgaWYgKHkgIT0gaXRlbSkge1xyXG4gICAgICAgICAgICAgICAgeS50cmVlJFNlbGVjdGVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgIH1cclxuXHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5uYXZpZ2F0b3JTZXJ2aWNlLmNsaWNrZWRJdGVtJC5uZXh0KGl0ZW0pXHJcblxyXG4gICAgaWYgKCEhaXRlbS50cmVlJFBhcmVudCkge1xyXG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnbWVudUN1cnJlbnRDbGlja2VkJywgSlNPTi5zdHJpbmdpZnkoaXRlbSkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25Nb2R1bGVJY29uQ2xpY2soZXZlbnQ6IGFueSwgaXRlbTogSU5hdmlnYXRvckl0ZW0pIHtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgdGhpcy5uYXZpZ2F0b3JTZXJ2aWNlLmNsaWNrZWRNb2R1bGVJdGVtJC5uZXh0KGl0ZW0pO1xyXG4gICAgdGhpcy5pY29uQ2xpY2tTdHJlYW0kLm5leHQoY3J5cHRvLnJhbmRvbVVVSUQoKSk7XHJcblxyXG4gICAgaWYgKCF0aGlzLm5hdmlnYXRvclNlcnZpY2UuY2xpY2tlZEl0ZW0kLnZhbHVlKSB7XHJcbiAgICAgIHRoaXMubmF2aWdhdG9yU2VydmljZS5jbGlja2VkSXRlbSQubmV4dChpdGVtKTtcclxuICAgICAgdGhpcy5uYXZpZ2F0b3JTZXJ2aWNlLmFjdGl2ZUl0ZW1zJC5uZXh0KFtpdGVtXSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy53aWRlTW9kZSkge1xyXG4gICAgICAgIHRoaXMubmF2aWdhdG9yU2VydmljZS5jbGlja2VkSXRlbSQubmV4dChpdGVtKTtcclxuICAgICAgICB0aGlzLm5hdmlnYXRvclNlcnZpY2UuYWN0aXZlSXRlbXMkLm5leHQoW2l0ZW1dKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAodGhpcy5uYXZpZ2F0b3JTZXJ2aWNlLmNsaWNrZWRJdGVtJC52YWx1ZS5pZCAhPT0gaXRlbS5pZCkge1xyXG4gICAgICAgICAgdGhpcy5uYXZpZ2F0b3JTZXJ2aWNlLmNsaWNrZWRJdGVtJC5uZXh0KGl0ZW0pO1xyXG4gICAgICAgICAgdGhpcy5uYXZpZ2F0b3JTZXJ2aWNlLmFjdGl2ZUl0ZW1zJC5uZXh0KFtpdGVtXSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMubmF2aWdhdG9yU2VydmljZS5jbGlja2VkSXRlbSQubmV4dChudWxsKTtcclxuICAgICAgICAgIHRoaXMubmF2aWdhdG9yU2VydmljZS5hY3RpdmVJdGVtcyQubmV4dChbXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgY2hlY2tBY3RpdmUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5hY3RpdmU7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuXHJcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICAgIHRoaXMuaWNvbkNsaWNrU3RyZWFtJC5waXBlKFxyXG4gICAgICAgICAgYnVmZmVyKHRoaXMuaWNvbkNsaWNrU3RyZWFtJC5waXBlKGRlYm91bmNlVGltZSgyNTApKSksXHJcbiAgICAgICAgICBtYXAoY2xpY2tzID0+IGNsaWNrcy5sZW5ndGgpLFxyXG4gICAgICAgICAgZmlsdGVyKGNsaWNrc0xlbmd0aCA9PiBjbGlja3NMZW5ndGggPj0gNSkpXHJcbiAgICAgICAgICAuc3Vic2NyaWJlKF8gPT4ge1xyXG4gICAgICAgICAgICB0aGlzLm5hdmlnYXRvclNlcnZpY2Uuc2hvd0VkaXRTdmckLm5leHQodHJ1ZSk7XHJcbiAgICAgICAgICB9KVxyXG4gICAgICApXHJcblxyXG4gICAgdGhpcy5tZS5uYXRpdmVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLWNvbG9yJywgdGhpcy5uYXZpZ2F0b3JTZXJ2aWNlLmNvbG9yKTtcclxuICAgIHRoaXMubWUubmF0aXZlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1iZy1jb2xvcicsIHRoaXMubmF2aWdhdG9yU2VydmljZS5iYWNrZ3JvdW5kQ29sb3IpO1xyXG4gICAgdGhpcy5tZS5uYXRpdmVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLWFjdGl2ZS1pdGVtLWNvbG9yJywgdGhpcy5uYXZpZ2F0b3JTZXJ2aWNlLmFjdGl2ZUl0ZW1Db2xvcik7XHJcbiAgICB0aGlzLm1lLm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tYWN0aXZlLWl0ZW0tYmFja2dyb3VuZC1jb2xvcicsIHRoaXMubmF2aWdhdG9yU2VydmljZS5hY3RpdmVJdGVtQmFja2dyb3VuZENvbG9yKTtcclxuICAgIHRoaXMubWUubmF0aXZlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1ob3Zlci1iZy1jb2xvcicsIHRoaXMubmF2aWdhdG9yU2VydmljZS5ob3ZlckJhY2tncm91bmRDb2xvcik7XHJcblxyXG4gICAgdGhpcy5tZS5uYXRpdmVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLWJnLWNvbG9yJywgdGhpcy5uYXZpZ2F0b3JTZXJ2aWNlLmJhY2tncm91bmRDb2xvcik7XHJcbiAgICB0aGlzLm1lLm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tY29sb3InLCB0aGlzLm5hdmlnYXRvclNlcnZpY2UuY29sb3IpO1xyXG4gICAgdGhpcy5tZS5uYXRpdmVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLWhvdmVyLWJnLWNvbG9yJywgdGhpcy5uYXZpZ2F0b3JTZXJ2aWNlLmhvdmVyQmFja2dyb3VuZENvbG9yKTtcclxuICAgIHRoaXMubWUubmF0aXZlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1ob3Zlci1jb2xvcicsIHRoaXMubmF2aWdhdG9yU2VydmljZS5ob3ZlckNvbG9yKTtcclxuICAgIHRoaXMubWUubmF0aXZlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1pY29uLWJvcmRlci1yYWRpdXMnLCB0aGlzLm5hdmlnYXRvclNlcnZpY2UuaWNvbkJvcmRlclJhZGl1cyArICdweCcpO1xyXG4gICAgdGhpcy5tZS5uYXRpdmVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLWljb24tZ3V0dGVyLXknLCB0aGlzLm5hdmlnYXRvclNlcnZpY2UuaWNvbkd1dHRlclkgKyAncHgnKTtcclxuICB9KVxyXG59XHJcblxyXG5uZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICB0aGlzLnN1YnNjcmlwdGlvbnMubWFwKHggPT4geC51bnN1YnNjcmliZSgpKVxyXG59XHJcblxyXG59XHJcbiIsIjxsaSAjbWUgW2lkXT1cIidtYWluLW1lbnUtJyArIGl0ZW0uaWRcIiBjbGFzcz1cInBhcmVudFwiIFthdHRyLmRhdGEtbGV2ZWxdPVwibGV2ZWxcIiBbY2xhc3MucmVkdWNlZF09XCJsZWZ0YmFyUmVkdWNlZFwiXHJcbiAgICBbY2xhc3MuYWN0aXZlXT1cIiF3aWRlTW9kZSAmJiBhY3RpdmVcIiBbY2xhc3MuZXhwYW5kZWRdPVwiaXRlbS50cmVlJEV4cGFuZGVkXCJcclxuICAgIFtjbGFzcy5oaWdobGlnaHRlZF09XCJpdGVtLnRyZWUkSGlnaGxpZ2h0ZWRcIiBbY2xhc3MubGktdGhpbi1tb2RlXT1cIiF3aWRlTW9kZVwiIFtjbGFzcy5tZW51LWl0ZW1dPVwiIXdpZGVNb2RlXCJcclxuICAgIFthcHBUb29sdGlwXT1cImxldmVsPT09MSAmJiAhYWN0aXZlID8gY2FwdGlvbiA6IHVuZGVmaW5lZFwiIFtwb3NpdGlvbl09XCIncmlnaHQnXCIgW25nU3R5bGVdPVwie1xyXG4gICAgICAgIG1hcmdpblRvcDogKGxldmVsPT09MSAmJiAhd2lkZU1vZGUpID8gbmF2aWdhdG9yU2VydmljZS5pY29uR3V0dGVyWSArICdweCcgOiAnJyxcclxuICAgICAgICBtYXJnaW5Cb3R0b206IChsZXZlbD09PTEgJiYgIXdpZGVNb2RlKSA/IG5hdmlnYXRvclNlcnZpY2UuaWNvbkd1dHRlclkgKyAncHgnIDogJydcclxuICAgIH1cIj5cclxuICAgIDxkaXYgY2xhc3M9XCJtZW51LWl0ZW0td3JhcHBlclwiIFthdHRyLmRhdGEtbGV2ZWxdPVwibGV2ZWxcIiAoY2xpY2spPVwib25DbGljaygkZXZlbnQsIGl0ZW0pXCJcclxuICAgICAgICBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZVwiIFtjbGFzcy5tb2R1bGUtdGhpbi1tb2RlXT1cIiF3aWRlTW9kZSAmJiBsZXZlbD09PTFcIiBbY2xhc3MudGhpbi1icmFuY2hdPVwiIXdpZGVNb2RlICYmIGxldmVsID4gMVwiPlxyXG5cclxuICAgICAgICBAaWYgKHdpZGVNb2RlKSB7XHJcbiAgICAgICAgICAgIEBpZiAoISEhbGVmdGJhclJlZHVjZWQpIHtcclxuICAgICAgICAgICAgICAgIEBpZiAoISFoYXNDaGlsZHJlbikge1xyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIFtpbm5lckh0bWxdPVwic3ViTWVudVN2Z0ljb25SaWdodCB8IHN0cmluZ0h0bWxcIiBjbGFzcz1cInN1Yi1pY29uLXJpZ2h0XCIgW2NsYXNzLnJvdGF0ZTkwXT1cIiEhaXRlbS50cmVlJFNlbGVjdGVkXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgPCEtLSBAZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgQGlmIChpdGVtLnRyZWUkU2VsZWN0ZWQgJiYgaXRlbS5jb2RlICE9PSAnTUVOVS5EQVNIQk9BUkQnICYmIGl0ZW0uY29kZSAhPT0gJ01FTlUuSE9NRScpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgW2F0dHIuZGF0YS1sZXZlbF09XCJsZXZlbFwiIGNsYXNzPVwiY3VzdG9tLWljb24tY2hpbGQtcmlnaHRcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSAtLT5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgQGlmICghIWl0ZW0uaWNvblN2Zykge1xyXG4gICAgICAgIDxpIFthdHRyLmRhdGEtbGV2ZWxdPVwibGV2ZWxcIiBjbGFzcz1cIidtb2R1bGUtaWNvbidcIiBbYXBwVG9vbHRpcF09XCJ3aWRlTW9kZSA/IGNhcHRpb24gOiB1bmRlZmluZWRcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwib25Nb2R1bGVJY29uQ2xpY2soJGV2ZW50LCBpdGVtKTtmYWxzZVwiIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxyXG4gICAgICAgICAgICAgICAgbGVmdDogd2lkZU1vZGUgPyAnMjBweCcgOiAndW5zZXQnXHJcbiAgICAgICAgICAgIH1cIj48c3BhbiBbaW5uZXJIdG1sXT1cIml0ZW0uaWNvblN2ZyB8IHN0cmluZ0h0bWxcIj48L3NwYW4+PC9pPlxyXG5cclxuICAgICAgICA8IS0tIDxzcGFuIFtpbm5lckh0bWxdPVwiaXRlbS5pY29uU3ZnIHwgc3RyaW5nSHRtbFwiPjwvc3Bhbj4gLS0+XHJcbiAgICAgICAgfSBAZWxzZSBpZiAoISFpdGVtLmljb25DbGFzcykge1xyXG4gICAgICAgIDxpIFthdHRyLmRhdGEtbGV2ZWxdPVwibGV2ZWxcIiBbY2xhc3NdPVwiaXRlbS5pY29uQ2xhc3MgKyAnIG1vZHVsZS1pY29uJ1wiXHJcbiAgICAgICAgICAgIFthcHBUb29sdGlwXT1cIndpZGVNb2RlID8gY2FwdGlvbiA6IHVuZGVmaW5lZFwiIChjbGljayk9XCJvbk1vZHVsZUljb25DbGljaygkZXZlbnQsIGl0ZW0pO2ZhbHNlXCIgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgbGVmdDogd2lkZU1vZGUgPyAnMjBweCcgOiAndW5zZXQnXHJcbiAgICAgICAgICAgIH1cIj48L2k+XHJcbiAgICAgICAgfSBAZWxzZSBpZiAoIWl0ZW0ucGFyZW50KSB7XHJcbiAgICAgICAgPGkgW2F0dHIuZGF0YS1sZXZlbF09XCJsZXZlbFwiIGNsYXNzPVwiJ21vZHVsZS1pY29uJ1wiIFthcHBUb29sdGlwXT1cIndpZGVNb2RlID8gY2FwdGlvbiA6IHVuZGVmaW5lZFwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJvbk1vZHVsZUljb25DbGljaygkZXZlbnQsIGl0ZW0pO2ZhbHNlXCIgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXHJcbiAgICAgICAgICAgICAgICBsZWZ0OiB3aWRlTW9kZSA/ICcyMHB4JyA6ICd1bnNldCdcclxuICAgICAgICAgICAgfVwiPjxzcGFuIFtpbm5lckh0bWxdPVwiZGVmYXVsdFN2ZyB8IHN0cmluZ0h0bWxcIj48L3NwYW4+PC9pPlxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgQGlmICghd2lkZU1vZGUgfHwgKCFsZWZ0YmFyUmVkdWNlZCAmJiBoYXNDaGlsZHJlbikpIHtcclxuICAgICAgICA8YSAjbGluayBbYXR0ci5kYXRhLWxldmVsXT1cImxldmVsXCIgY2xhc3M9XCJoYXMtc3VibWVudVwiIFthcHBUb29sdGlwXT1cImxldmVsID4gMSA/IGNhcHRpb24gOiB1bmRlZmluZWRcIlxyXG4gICAgICAgICAgICBbY2xhc3MudGhpbi1tb2RlXT1cIiF3aWRlTW9kZVwiPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyIChjbGljayk9XCJzdWJBcnJvd0NsaWNrZWQoJGV2ZW50LCBpdGVtKTtmYWxzZVwiPiA8IS0tZmFsc2UgaXMgaW1wb3J0YW50IGhlcmUtLT5cclxuICAgICAgICAgICAgICAgIDxzcGFuICNzdWJBcnJvdyAqbmdJZj1cIighIWl0ZW0ucGljdHVyZUJhc2U2NCB8fCAhIWl0ZW0ucGljdHVyZVVyaSlcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCInaW1nLXNwYW4gcGx1cyBsZXZlbCcgKyBsZXZlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJpdGVtLnBpY3R1cmVCYXNlNjQgfHwgaXRlbS5waWN0dXJlVXJpXCIgKm5nSWY9XCIhIWl0ZW0ucGljdHVyZUJhc2U2NFwiPlxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gI3N1YkFycm93ICpuZ0lmPVwiISEhaXRlbS5waWN0dXJlQmFzZTY0ICYmICEhIWl0ZW0ucGljdHVyZVVyaVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cIidwbHVzIGxldmVsJyArIGxldmVsXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgIDxpbWcgKm5nSWY9XCIoISFpdGVtLnBpY3R1cmVCYXNlNjQgfHwgISFpdGVtLnBpY3R1cmVVcmkpXCIgW3NyY109XCJpdGVtLnBpY3R1cmVCYXNlNjQgfHwgaXRlbS5waWN0dXJlVXJpXCI+XHJcblxyXG4gICAgICAgICAgICB7eyBjYXB0aW9uIH19XHJcblxyXG4gICAgICAgIDwvYT5cclxuICAgICAgICB9IEBlbHNlIHtcclxuICAgICAgICA8YSBbYXR0ci5kYXRhLWxldmVsXT1cImxldmVsXCIgW3JvdXRlckxpbmtdPVwiaXRlbS51cmxcIiAoY2xpY2spPVwib25DbGljaygkZXZlbnQsIGl0ZW0pXCJcclxuICAgICAgICAgICAgW2NsYXNzLnRoaW4tbW9kZV09XCIhd2lkZU1vZGVcIiBbYXBwVG9vbHRpcF09XCJ3aWRlTW9kZSA/IGNhcHRpb24gOiB1bmRlZmluZWRcIj5cclxuICAgICAgICAgICAge3sgY2FwdGlvbiB9fVxyXG4gICAgICAgIDwvYT5cclxuICAgICAgICB9XHJcblxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgQGlmICghIXdpZGVNb2RlICYmICEhaGFzQ2hpbGRyZW4gJiYgISFpdGVtLnRyZWUkRXhwYW5kZWQgJiYgISFpdGVtLnRyZWUkQ2hpbGRyZW4hLmxlbmd0aCAmJiAhISFsZWZ0YmFyUmVkdWNlZCkge1xyXG4gICAgPCEtLSB3aWR0aDogISF3aWRlTW9kZSA/IChsYXlvdXRTZXJ2aWNlLmxlZnRCYXJDdXJyZW50V2lkdGgkLnZhbHVlIC0gbGF5b3V0U2VydmljZS5iYXNpY1NwYWNpbmcgLSBsYXlvdXRTZXJ2aWNlLnNjcm9sbEJhcldpZHRoICsgNSArICdweCcpIDogKCBsYXlvdXRTZXJ2aWNlLmxlZnRCYXJXaWRlV2lkdGgkLnZhbHVlICsgJ3B4JyApLCAtLT5cclxuICAgIDx1bCAjY2hpbGRyZW4gW2NsYXNzLmV4cGFuZGVkXT1cIiF3aWRlTW9kZSB8fCBpdGVtLnRyZWUkRXhwYW5kZWRcIiBbY2xhc3MudWwtdGhpbi1tb2RlXT1cIiF3aWRlTW9kZVwiIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgcGFkZGluZzogMCxcclxuICAgICAgICB9XCIgW2NsYXNzLnN1Ym1lbnVdPVwiIXdpZGVNb2RlXCI+XHJcbiAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgQGZvciAoY2hpbGQgb2YgaXRlbS50cmVlJENoaWxkcmVuOyB0cmFjayAkaW5kZXgpIHtcclxuICAgICAgICAgICAgPGFwcC1pdGVtIFtpdGVtXT1cImNoaWxkXCIgW2xldmVsXT1cImxldmVsKzFcIiAoY2xpY2tlZCk9XCJvbkNsaWNrKCRldmVudCwgY2hpbGQpXCI+PC9hcHAtaXRlbT5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC91bD5cclxuICAgIH1cclxuXHJcbjwvbGk+Il19
|
|
227
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtaGlzdGFmZi1hbHBoYS9zcmMvbGliL2FwcC9saWJyYXJpZXMvbmF2aWdhdG9yL25hdmlnYXRvci9pdGVtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1oaXN0YWZmLWFscGhhL3NyYy9saWIvYXBwL2xpYnJhcmllcy9uYXZpZ2F0b3IvbmF2aWdhdG9yL2l0ZW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxLQUFLLEVBQXFCLFNBQVMsRUFBRSxpQkFBaUIsRUFBdUYsTUFBTSxlQUFlLENBQUM7QUFDbk0sT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQ3hGLE9BQU8sRUFBVSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQU12RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDbkUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFDQUFxQyxDQUFDOzs7Ozs7OztBQUVyRSxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsK1dBQStXLENBQUE7QUFnQjFZLE1BQU0sT0FBTyxhQUFhO0lBeUJ4QixZQUNVLE1BQWMsRUFDZixnQkFBa0MsRUFDakMsR0FBeUIsRUFDMUIsYUFBNEIsRUFDM0IsV0FBd0I7UUFKeEIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNmLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDakMsUUFBRyxHQUFILEdBQUcsQ0FBc0I7UUFDMUIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFD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bnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbnB1dCwgT25Jbml0LCBPbkRlc3Ryb3ksIFZpZXdDaGlsZCwgVmlld0VuY2Fwc3VsYXRpb24sIENoYW5nZURldGVjdG9yUmVmLCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzLCBBZnRlclZpZXdJbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgYnVmZmVyLCBkZWJvdW5jZVRpbWUsIGZpbHRlciwgbWFwLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgUm91dGVyLCBSb3V0ZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBOYXZpZ2F0b3JTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbmF2aWdhdG9yLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNdWx0aUxhbmd1YWdlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL211bHRpLWxhbmd1YWdlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBMYXlvdXRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbGF5b3V0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBJTmF2aWdhdG9ySXRlbSB9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMvSU5hdmlnYXRvckl0ZW0nO1xyXG5pbXBvcnQgeyBNZW51U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL21lbnUuc2VydmljZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IFRvb2x0aXBEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi90b29sdGlwL3Rvb2x0aXAuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgU3RyaW5nSHRtbFBpcGUgfSBmcm9tICcuLi8uLi8uLi9hcHAtcGlwZXMvc3RyaW5nLWh0bWwucGlwZSc7XHJcblxyXG5leHBvcnQgY29uc3QgREVGQVVMVF9TVkcgPSAnPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIGNsYXNzPVwiZmVhdGhlciBmZWF0aGVyLWhlbHAtY2lyY2xlXCI+PGNpcmNsZSBjeD1cIjEyXCIgY3k9XCIxMlwiIHI9XCIxMFwiPjwvY2lyY2xlPjxwYXRoIGQ9XCJNOS4wOSA5YTMgMyAwIDAgMSA1LjgzIDFjMCAyLTMgMy0zIDNcIj48L3BhdGg+PGxpbmUgeDE9XCIxMlwiIHkxPVwiMTdcIiB4Mj1cIjEyLjAxXCIgeTI9XCIxN1wiPjwvbGluZT48L3N2Zz4nXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1pdGVtJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIFJvdXRlck1vZHVsZSxcclxuICAgIFRvb2x0aXBEaXJlY3RpdmUsXHJcbiAgICBTdHJpbmdIdG1sUGlwZSxcclxuXHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vaXRlbS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vaXRlbS5jb21wb25lbnQuc2NzcyddLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcclxufSlcclxuZXhwb3J0IGNsYXNzIEl0ZW1Db21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcclxuXHJcbiAgQElucHV0KCkgaXRlbSE6IElOYXZpZ2F0b3JJdGVtO1xyXG4gIEBJbnB1dCgpIGxldmVsITogbnVtYmVyO1xyXG4gIEBWaWV3Q2hpbGQoJ21lJykgbWUhOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ2NoaWxkcmVuJykgY2hpbGRyZW4hOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ2xpbmsnKSBsaW5rITogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdzdWJBcnJvdycpIHN1YkFycm93ITogRWxlbWVudFJlZjtcclxuXHJcbiAgY2FwdGlvbiE6IHN0cmluZztcclxuICBkZWZhdWx0U3ZnID0gREVGQVVMVF9TVkdcclxuICBzdWJNZW51U3ZnSWNvblJpZ2h0OiBzdHJpbmcgPSAnPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIGNsYXNzPVwiZmVhdGhlciBmZWF0aGVyLWNoZXZyb24tcmlnaHRcIj48cG9seWxpbmUgcG9pbnRzPVwiOSAxOCAxNSAxMiA5IDZcIj48L3BvbHlsaW5lPjwvc3ZnPic7XHJcblxyXG4gIGhhc0NoaWxkcmVuOiBib29sZWFuID0gZmFsc2U7XHJcbiAgbWFpbldpbmRvd1N0YXRlITogc3RyaW5nO1xyXG4gIGV4cGFuZGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgbGVmdGJhclJlZHVjZWQhOiBib29sZWFuO1xyXG4gIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XHJcblxyXG4gIHdpZGVNb2RlITogYm9vbGVhbjtcclxuICBjdXJyZW50V2lkdGg6IG51bWJlciA9IDY2O1xyXG4gIGFjdGl2ZSE6IGJvb2xlYW47XHJcblxyXG4gIGljb25DbGlja1N0cmVhbSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oJycpO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwdWJsaWMgbmF2aWdhdG9yU2VydmljZTogTmF2aWdhdG9yU2VydmljZSxcclxuICAgIHByaXZhdGUgbWxzOiBNdWx0aUxhbmd1YWdlU2VydmljZSxcclxuICAgIHB1YmxpYyBsYXlvdXRTZXJ2aWNlOiBMYXlvdXRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBtZW51U2VydmljZTogTWVudVNlcnZpY2UsXHJcbiAgKSB7XHJcbiAgICB0aGlzLm5hdmlnYXRvclNlcnZpY2Uud2lkZU1vZGUkLnN1YnNjcmliZSh4ID0+IHRoaXMud2lkZU1vZGUgPSB4KTtcclxuICAgIHRoaXMubGF5b3V0U2VydmljZS5sZWZ0QmFyQ3VycmVudFdpZHRoJC5zdWJzY3JpYmUoeCA9PiB7XHJcbiAgICAgIHRoaXMuY3VycmVudFdpZHRoID0geDtcclxuICAgICAgdGhpcy5tZT8ubmF0aXZlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1sZWZ0LWJhci1jdXJyZW50LXdpZHRoJywgeCArICdweCcpXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGlmIChjaGFuZ2VzWydpdGVtJ10pIHtcclxuICAgICAgY29uc3QgaXQ6IElOYXZpZ2F0b3JJdGVtID0gY2hhbmdlc1snaXRlbSddLmN1cnJlbnRWYWx1ZTtcclxuICAgICAgdGhpcy5oYXNDaGlsZHJlbiA9IGl0Py50cmVlJENoaWxkcmVuPy5sZW5ndGggPiAwO1xyXG4gICAgICB0aGlzLmNhcHRpb24gPSB0aGlzLmNhcHRpb24gPSB0aGlzLm1scy50cmFucyh0aGlzLml0ZW0hLmNvZGUpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIGlmICh0aGlzLml0ZW0pIHtcclxuICAgICAgaWYgKHRoaXMuaXRlbS50cmVlJENoaWxkcmVuLmxlbmd0aCA+IDApIHtcclxuICAgICAgICB0aGlzLmhhc0NoaWxkcmVuID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMubmF2aWdhdG9yU2VydmljZS5hY3RpdmVJdGVtcyQuc3Vic2NyaWJlKGMgPT4ge1xyXG4gICAgICBpZiAoIWMpIHJldHVybjtcclxuICAgICAgdGhpcy5hY3RpdmUgPSAhIWMuZmlsdGVyKHggPT4geC5pZCA9PT0gdGhpcy5pdGVtPy5pZCkubGVuZ3RoXHJcbiAgICAgIGlmICghIXRoaXMuYWN0aXZlKSB7XHJcbiAgICAgICAgdGhpcy5tZT8ubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuYWRkKFwiYWN0aXZlXCIpXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5tZT8ubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKFwiYWN0aXZlXCIpXHJcbiAgICAgIH1cclxuICAgIH0pXHJcblxyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgIHRoaXMubWxzLmxhbmckLnN1YnNjcmliZShfID0+IHtcclxuICAgICAgICB0aGlzLmNhcHRpb24gPSB0aGlzLm1scy50cmFucyh0aGlzLml0ZW0hLmNvZGUpXHJcbiAgICAgIH0pXHJcbiAgICApXHJcblxyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgIHRoaXMubGF5b3V0U2VydmljZS5sZWZ0YmFyUmVkdWNlZCQuc3Vic2NyaWJlKHggPT4gdGhpcy5sZWZ0YmFyUmVkdWNlZCA9IHgpXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICBzdWJBcnJvd0NsaWNrZWQoZXZlbnQ6IEV2ZW50LCBpdGVtOiBJTmF2aWdhdG9ySXRlbSkge1xyXG5cclxuICAgIGNvbnNvbGUubG9nKFwic3ViQXJyb3dDbGlja2VkIHRyaWdnZXJlZFwiKVxyXG5cclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG5cclxuICAgIGlmICghdGhpcy53aWRlTW9kZSkge1xyXG4gICAgICBsZXQgbmV3QWN0aXZlSXRlbXMgPSB0aGlzLm5hdmlnYXRvclNlcnZpY2UuYWN0aXZlSXRlbXMkLnZhbHVlO1xyXG4gICAgICBjb25zb2xlLmxvZyhcInN1YkFycm93Q2xpY2tlZCBuZXdBY3RpdmVJdGVtcyBiZTQgZmlsdGVyaW5nXCIsIG5ld0FjdGl2ZUl0ZW1zKVxyXG4gICAgICBuZXdBY3RpdmVJdGVtcyA9IG5ld0FjdGl2ZUl0ZW1zLmZpbHRlcih4ID0+IHgudHJlZSRUaWVyISA8IGl0ZW0udHJlZSRUaWVyISk7XHJcbiAgICAgIG5ld0FjdGl2ZUl0ZW1zLnB1c2goaXRlbSk7XHJcbiAgICAgIGNvbnNvbGUubG9nKFwic3ViQXJyb3dDbGlja2VkIG5ld0FjdGl2ZUl0ZW1zXCIsIG5ld0FjdGl2ZUl0ZW1zKVxyXG4gICAgICB0aGlzLm5hdmlnYXRvclNlcnZpY2UuYWN0aXZlSXRlbXMkLm5leHQobmV3QWN0aXZlSXRlbXMpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBpZiAodGhpcy5jaGlsZHJlbi5uYXRpdmVFbGVtZW50LmNsYXNzTmFtZSA9PT0gJ2NoaWxkIHN1Yi1tZW51Jykge1xyXG4gICAgICB0aGlzLmNoaWxkcmVuLm5hdGl2ZUVsZW1lbnQuY2xhc3NOYW1lID0gJ2NoaWxkIHN1Yi1tZW51IGV4cGFuZGVkJztcclxuICAgICAgdGhpcy5zdWJBcnJvdy5uYXRpdmVFbGVtZW50LmNsYXNzTmFtZSA9IHRoaXMuc3ViQXJyb3cubmF0aXZlRWxlbWVudC5jbGFzc05hbWUucmVwbGFjZSgnIHBsdXMnLCAnJykgKyAnIG1pbnVzJztcclxuICAgIH0gZWxzZSBpZiAodGhpcy5jaGlsZHJlbi5uYXRpdmVFbGVtZW50LmNsYXNzTmFtZSA9PT0gJ2NoaWxkIHN1Yi1tZW51IGV4cGFuZGVkJykge1xyXG4gICAgICB0aGlzLmNoaWxkcmVuLm5hdGl2ZUVsZW1lbnQuY2xhc3NOYW1lID0gJ2NoaWxkIHN1Yi1tZW51JztcclxuICAgICAgdGhpcy5zdWJBcnJvdy5uYXRpdmVFbGVtZW50LmNsYXNzTmFtZSA9IHRoaXMuc3ViQXJyb3cubmF0aXZlRWxlbWVudC5jbGFzc05hbWUucmVwbGFjZSgnIG1pbnVzJywgJycpICsgJyBwbHVzJztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uQ2xpY2soZXZlbnQ6IGFueSwgaXRlbTogSU5hdmlnYXRvckl0ZW0pIHtcclxuXHJcbiAgICBjb25zb2xlLmxvZyhcIm9uQ2xpY2sgdHJpZ2dlcmVkXCIsIGl0ZW0pXHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XHJcblxyXG4gICAgdGhpcy5pY29uQ2xpY2tTdHJlYW0kLm5leHQoY3J5cHRvLnJhbmRvbVVVSUQoKSk7XHJcblxyXG4gICAgaWYgKCEhaXRlbS50cmVlJFBhdGggJiYgISFpdGVtLnRyZWUkUGF0aC5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5uYXZpZ2F0b3JTZXJ2aWNlLnVwZGF0ZVRyZWVTdGF0ZShpdGVtLnRyZWUkUGF0aClcclxuICAgICAgdGhpcy5uYXZpZ2F0b3JTZXJ2aWNlLmFjdGl2ZUl0ZW1zJC5uZXh0KFtpdGVtXSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCEhaXRlbS50cmVlJENoaWxkcmVuICYmICEhaXRlbS50cmVlJENoaWxkcmVuLmxlbmd0aCkge1xyXG4gICAgICBpdGVtLnRyZWUkRXhwYW5kZWQgPSAhaXRlbS50cmVlJEV4cGFuZGVkXHJcbiAgICB9XHJcblxyXG4gICAgLypcclxuICAgIGlmICghdGhpcy53aWRlTW9kZSkge1xyXG4gICAgICB0aGlzLm9uTW9kdWxlSWNvbkNsaWNrKGV2ZW50LCBpdGVtKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgKi9cclxuXHJcbiAgICBpZiAoISF0aGlzLndpZGVNb2RlICYmIHRoaXMuaXRlbSEudHJlZSRTZWxlY3RlZCA9PSB0cnVlICYmICEhdGhpcy5pdGVtIS50cmVlJFBhcmVudCAmJiAodGhpcy5pdGVtIS50cmVlJFRpZXIgIT0gMiB8fCB0aGlzLml0ZW0hLnRyZWUkVGllciA9PSAyICYmIHRoaXMuaXRlbSEudHJlZSRDaGlsZHJlbi5sZW5ndGggPT0gMCkpIHtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMud2lkZU1vZGUpIHtcclxuICAgICAgaWYgKHRoaXMuY2hpbGRyZW4pIHtcclxuICAgICAgICBjb25zdCBlbCA9IHRoaXMuY2hpbGRyZW4ubmF0aXZlRWxlbWVudDtcclxuICAgICAgICBjb25zdCByZWN0ID0gZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcbiAgICAgICAgY29uc3QgaGVpZ2h0ID0gcmVjdC5oZWlnaHQ7XHJcbiAgICAgICAgaWYgKGhlaWdodCA9PT0gMCkge1xyXG4gICAgICAgICAgaXRlbS50cmVlJFNlbGVjdGVkID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBpZiAoaXRlbS50cmVlJFRpZXIgPT0gMSB8fCBpdGVtLnRyZWUkVGllciA9PSAyKSB7XHJcbiAgICAgICAgICAgIGl0ZW0udHJlZSRTZWxlY3RlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLm1lLm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tY2hpbGRyZW4taGVpZ2h0JywgaGVpZ2h0ICsgJ3B4JylcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpdGVtLnRyZWUkU2VsZWN0ZWQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMubWVudVNlcnZpY2UubmF2aWdhdGlvbiQudmFsdWUubWFwKHggPT4ge1xyXG4gICAgICAgICAgaWYgKHgudHJlZSRDaGlsZHJlbikge1xyXG4gICAgICAgICAgICB4LnRyZWUkQ2hpbGRyZW4ubWFwKCh5OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICBpZiAoeS50cmVlJENoaWxkcmVuKSB7XHJcbiAgICAgICAgICAgICAgICB5LnRyZWUkQ2hpbGRyZW4ubWFwKCh6OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgaWYgKHogIT0gaXRlbSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHoudHJlZSRTZWxlY3RlZCA9IGZhbHNlXHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgfSBlbHNlIGlmICh5ICE9IGl0ZW0pIHtcclxuICAgICAgICAgICAgICAgIHkudHJlZSRTZWxlY3RlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICB9XHJcblxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMubmF2aWdhdG9yU2VydmljZS5jbGlja2VkSXRlbSQubmV4dChpdGVtKVxyXG5cclxuICAgIGlmICghIWl0ZW0udHJlZSRQYXJlbnQpIHtcclxuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ21lbnVDdXJyZW50Q2xpY2tlZCcsIEpTT04uc3RyaW5naWZ5KGl0ZW0pKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qXHJcbiAgb25Nb2R1bGVJY29uQ2xpY2soZXZlbnQ6IGFueSwgaXRlbTogSU5hdmlnYXRvckl0ZW0pIHtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgXHJcbiAgICB0aGlzLm5hdmlnYXRvclNlcnZpY2UuY2xpY2tlZE1vZHVsZUl0ZW0kLm5leHQoaXRlbSk7XHJcbiAgICB0aGlzLmljb25DbGlja1N0cmVhbSQubmV4dChjcnlwdG8ucmFuZG9tVVVJRCgpKTtcclxuICAgIHRoaXMubmF2aWdhdG9yU2VydmljZS5jbGlja2VkSXRlbSQubmV4dChpdGVtKTtcclxuICAgIHRoaXMubmF2aWdhdG9yU2VydmljZS5hY3RpdmVJdGVtcyQubmV4dChbaXRlbV0pO1xyXG5cclxuICAgIGlmICghdGhpcy5uYXZpZ2F0b3JTZXJ2aWNlLmNsaWNrZWRJdGVtJC52YWx1ZSkge1xyXG4gICAgICB0aGlzLm5hdmlnYXRvclNlcnZpY2UuY2xpY2tlZEl0ZW0kLm5leHQoaXRlbSk7XHJcbiAgICAgIHRoaXMubmF2aWdhdG9yU2VydmljZS5hY3RpdmVJdGVtcyQubmV4dChbaXRlbV0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMud2lkZU1vZGUpIHtcclxuICAgICAgICB0aGlzLm5hdmlnYXRvclNlcnZpY2UuY2xpY2tlZEl0ZW0kLm5leHQoaXRlbSk7XHJcbiAgICAgICAgdGhpcy5uYXZpZ2F0b3JTZXJ2aWNlLmFjdGl2ZUl0ZW1zJC5uZXh0KFtpdGVtXSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKHRoaXMubmF2aWdhdG9yU2VydmljZS5jbGlja2VkSXRlbSQudmFsdWUuaWQgIT09IGl0ZW0uaWQpIHtcclxuICAgICAgICAgIHRoaXMubmF2aWdhdG9yU2VydmljZS5jbGlja2VkSXRlbSQubmV4dChpdGVtKTtcclxuICAgICAgICAgIHRoaXMubmF2aWdhdG9yU2VydmljZS5hY3RpdmVJdGVtcyQubmV4dChbaXRlbV0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLm5hdmlnYXRvclNlcnZpY2UuY2xpY2tlZEl0ZW0kLm5leHQobnVsbCk7XHJcbiAgICAgICAgICB0aGlzLm5hdmlnYXRvclNlcnZpY2UuYWN0aXZlSXRlbXMkLm5leHQoW10pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICB9XHJcbiAgKi9cclxuXHJcbiAgY2hlY2tBY3RpdmUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5hY3RpdmU7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuXHJcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICAgIHRoaXMuaWNvbkNsaWNrU3RyZWFtJC5waXBlKFxyXG4gICAgICAgICAgYnVmZmVyKHRoaXMuaWNvbkNsaWNrU3RyZWFtJC5waXBlKGRlYm91bmNlVGltZSgyNTApKSksXHJcbiAgICAgICAgICBtYXAoY2xpY2tzID0+IGNsaWNrcy5sZW5ndGgpLFxyXG4gICAgICAgICAgZmlsdGVyKGNsaWNrc0xlbmd0aCA9PiBjbGlja3NMZW5ndGggPj0gNSkpXHJcbiAgICAgICAgICAuc3Vic2NyaWJlKF8gPT4ge1xyXG4gICAgICAgICAgICB0aGlzLm5hdmlnYXRvclNlcnZpY2Uuc2hvd0VkaXRTdmckLm5leHQodHJ1ZSk7XHJcbiAgICAgICAgICB9KVxyXG4gICAgICApXHJcblxyXG4gICAgdGhpcy5tZS5uYXRpdmVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLWNvbG9yJywgdGhpcy5uYXZpZ2F0b3JTZXJ2aWNlLmNvbG9yKTtcclxuICAgIHRoaXMubWUubmF0aXZlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1iZy1jb2xvcicsIHRoaXMubmF2aWdhdG9yU2VydmljZS5iYWNrZ3JvdW5kQ29sb3IpO1xyXG4gICAgdGhpcy5tZS5uYXRpdmVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLWFjdGl2ZS1pdGVtLWNvbG9yJywgdGhpcy5uYXZpZ2F0b3JTZXJ2aWNlLmFjdGl2ZUl0ZW1Db2xvcik7XHJcbiAgICB0aGlzLm1lLm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tYWN0aXZlLWl0ZW0tYmFja2dyb3VuZC1jb2xvcicsIHRoaXMubmF2aWdhdG9yU2VydmljZS5hY3RpdmVJdGVtQmFja2dyb3VuZENvbG9yKTtcclxuICAgIHRoaXMubWUubmF0aXZlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1ob3Zlci1iZy1jb2xvcicsIHRoaXMubmF2aWdhdG9yU2VydmljZS5ob3ZlckJhY2tncm91bmRDb2xvcik7XHJcblxyXG4gICAgdGhpcy5tZS5uYXRpdmVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLWJnLWNvbG9yJywgdGhpcy5uYXZpZ2F0b3JTZXJ2aWNlLmJhY2tncm91bmRDb2xvcik7XHJcbiAgICB0aGlzLm1lLm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tY29sb3InLCB0aGlzLm5hdmlnYXRvclNlcnZpY2UuY29sb3IpO1xyXG4gICAgdGhpcy5tZS5uYXRpdmVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLWhvdmVyLWJnLWNvbG9yJywgdGhpcy5uYXZpZ2F0b3JTZXJ2aWNlLmhvdmVyQmFja2dyb3VuZENvbG9yKTtcclxuICAgIHRoaXMubWUubmF0aXZlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1ob3Zlci1jb2xvcicsIHRoaXMubmF2aWdhdG9yU2VydmljZS5ob3ZlckNvbG9yKTtcclxuICAgIHRoaXMubWUubmF0aXZlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1pY29uLWJvcmRlci1yYWRpdXMnLCB0aGlzLm5hdmlnYXRvclNlcnZpY2UuaWNvbkJvcmRlclJhZGl1cyArICdweCcpO1xyXG4gICAgdGhpcy5tZS5uYXRpdmVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLWljb24tZ3V0dGVyLXknLCB0aGlzLm5hdmlnYXRvclNlcnZpY2UuaWNvbkd1dHRlclkgKyAncHgnKTtcclxuICB9KVxyXG59XHJcblxyXG5uZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICB0aGlzLnN1YnNjcmlwdGlvbnMubWFwKHggPT4geC51bnN1YnNjcmliZSgpKVxyXG59XHJcblxyXG59XHJcbiIsIjxsaSAjbWUgW2lkXT1cIidtYWluLW1lbnUtJyArIGl0ZW0uaWRcIiBjbGFzcz1cInBhcmVudFwiIFthdHRyLmRhdGEtbGV2ZWxdPVwibGV2ZWxcIiBbY2xhc3MucmVkdWNlZF09XCJsZWZ0YmFyUmVkdWNlZFwiXHJcbiAgICBbY2xhc3MuYWN0aXZlXT1cIiF3aWRlTW9kZSAmJiBhY3RpdmVcIiBbY2xhc3MuZXhwYW5kZWRdPVwiaXRlbS50cmVlJEV4cGFuZGVkXCJcclxuICAgIFtjbGFzcy5oaWdobGlnaHRlZF09XCJpdGVtLnRyZWUkSGlnaGxpZ2h0ZWRcIiBbY2xhc3MubGktdGhpbi1tb2RlXT1cIiF3aWRlTW9kZVwiIFtjbGFzcy5tZW51LWl0ZW1dPVwiIXdpZGVNb2RlXCJcclxuICAgIFthcHBUb29sdGlwXT1cImxldmVsPT09MSAmJiAhYWN0aXZlID8gY2FwdGlvbiA6IHVuZGVmaW5lZFwiIFtwb3NpdGlvbl09XCIncmlnaHQnXCIgW25nU3R5bGVdPVwie1xyXG4gICAgICAgIG1hcmdpblRvcDogKGxldmVsPT09MSAmJiAhd2lkZU1vZGUpID8gbmF2aWdhdG9yU2VydmljZS5pY29uR3V0dGVyWSArICdweCcgOiAnJyxcclxuICAgICAgICBtYXJnaW5Cb3R0b206IChsZXZlbD09PTEgJiYgIXdpZGVNb2RlKSA/IG5hdmlnYXRvclNlcnZpY2UuaWNvbkd1dHRlclkgKyAncHgnIDogJydcclxuICAgIH1cIj5cclxuICAgIDxkaXYgY2xhc3M9XCJtZW51LWl0ZW0td3JhcHBlclwiIFthdHRyLmRhdGEtbGV2ZWxdPVwibGV2ZWxcIiAoY2xpY2spPVwib25DbGljaygkZXZlbnQsIGl0ZW0pXCIgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVcIlxyXG4gICAgICAgIFtjbGFzcy5tb2R1bGUtdGhpbi1tb2RlXT1cIiF3aWRlTW9kZSAmJiBsZXZlbD09PTFcIiBbY2xhc3MudGhpbi1icmFuY2hdPVwiIXdpZGVNb2RlICYmIGxldmVsID4gMVwiPlxyXG5cclxuICAgICAgICBAaWYgKHdpZGVNb2RlKSB7XHJcbiAgICAgICAgQGlmICghISFsZWZ0YmFyUmVkdWNlZCkge1xyXG4gICAgICAgIEBpZiAoISFoYXNDaGlsZHJlbikge1xyXG4gICAgICAgIDxzcGFuIFtpbm5lckh0bWxdPVwic3ViTWVudVN2Z0ljb25SaWdodCB8IHN0cmluZ0h0bWxcIiBjbGFzcz1cInN1Yi1pY29uLXJpZ2h0XCI+PC9zcGFuPlxyXG4gICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBAaWYgKCEhaXRlbS5pY29uU3ZnKSB7XHJcbiAgICAgICAgPCEtLSA8aSBbYXR0ci5kYXRhLWxldmVsXT1cImxldmVsXCIgY2xhc3M9XCInbW9kdWxlLWljb24nXCIgW2FwcFRvb2x0aXBdPVwid2lkZU1vZGUgPyBjYXB0aW9uIDogdW5kZWZpbmVkXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uTW9kdWxlSWNvbkNsaWNrKCRldmVudCwgaXRlbSk7ZmFsc2VcIiBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcclxuICAgICAgICAgICAgICAgIGxlZnQ6IHdpZGVNb2RlID8gJzEzcHgnIDogJ3Vuc2V0J1xyXG4gICAgICAgICAgICB9XCI+PHNwYW4gW2lubmVySHRtbF09XCJpdGVtLmljb25TdmcgfCBzdHJpbmdIdG1sXCI+PC9zcGFuPjwvaT4gLS0+XHJcbiAgICAgICAgPGkgW2F0dHIuZGF0YS1sZXZlbF09XCJsZXZlbFwiIGNsYXNzPVwiJ21vZHVsZS1pY29uJ1wiIFthcHBUb29sdGlwXT1cIndpZGVNb2RlID8gY2FwdGlvbiA6IHVuZGVmaW5lZFwiXHJcbiAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXHJcbiAgICAgICAgICAgICAgICAgICAgbGVmdDogd2lkZU1vZGUgPyAnMTNweCcgOiAndW5zZXQnXHJcbiAgICAgICAgICAgICAgICB9XCI+PHNwYW4gW2lubmVySHRtbF09XCJpdGVtLmljb25TdmcgfCBzdHJpbmdIdG1sXCI+PC9zcGFuPjwvaT5cclxuICAgICAgICB9IEBlbHNlIGlmICghIWl0ZW0uaWNvbkNsYXNzKSB7XHJcbiAgICAgICAgPCEtLSA8aSBbYXR0ci5kYXRhLWxldmVsXT1cImxldmVsXCIgW2NsYXNzXT1cIml0ZW0uaWNvbkNsYXNzICsgJyBtb2R1bGUtaWNvbidcIlxyXG4gICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJ3aWRlTW9kZSA/IGNhcHRpb24gOiB1bmRlZmluZWRcIiAoY2xpY2spPVwib25Nb2R1bGVJY29uQ2xpY2soJGV2ZW50LCBpdGVtKTtmYWxzZVwiIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgIGxlZnQ6IHdpZGVNb2RlID8gJzEzcHgnIDogJ3Vuc2V0J1xyXG4gICAgICAgICAgICB9XCI+PC9pPiAtLT5cclxuICAgICAgICA8aSBbYXR0ci5kYXRhLWxldmVsXT1cImxldmVsXCIgW2NsYXNzXT1cIml0ZW0uaWNvbkNsYXNzICsgJyBtb2R1bGUtaWNvbidcIlxyXG4gICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwid2lkZU1vZGUgPyBjYXB0aW9uIDogdW5kZWZpbmVkXCIgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgIGxlZnQ6IHdpZGVNb2RlID8gJzEzcHgnIDogJ3Vuc2V0J1xyXG4gICAgICAgICAgICAgICAgfVwiPjwvaT5cclxuICAgICAgICB9IEBlbHNlIGlmICghaXRlbS5wYXJlbnQpIHtcclxuICAgICAgICA8IS0tIDxpIFthdHRyLmRhdGEtbGV2ZWxdPVwibGV2ZWxcIiBjbGFzcz1cIidtb2R1bGUtaWNvbidcIiBbYXBwVG9vbHRpcF09XCJ3aWRlTW9kZSA/IGNhcHRpb24gOiB1bmRlZmluZWRcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwib25Nb2R1bGVJY29uQ2xpY2soJGV2ZW50LCBpdGVtKTtmYWxzZVwiIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxyXG4gICAgICAgICAgICAgICAgbGVmdDogd2lkZU1vZGUgPyAnMTNweCcgOiAndW5zZXQnXHJcbiAgICAgICAgICAgIH1cIj48c3BhbiBbaW5uZXJIdG1sXT1cImRlZmF1bHRTdmcgfCBzdHJpbmdIdG1sXCI+PC9zcGFuPjwvaT4gLS0+XHJcbiAgICAgICAgPGkgW2F0dHIuZGF0YS1sZXZlbF09XCJsZXZlbFwiIGNsYXNzPVwiJ21vZHVsZS1pY29uJ1wiIFthcHBUb29sdGlwXT1cIndpZGVNb2RlID8gY2FwdGlvbiA6IHVuZGVmaW5lZFwiXHJcbiAgICAgICAgICAgIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxyXG4gICAgICAgICAgICAgICAgbGVmdDogd2lkZU1vZGUgPyAnMTNweCcgOiAndW5zZXQnXHJcbiAgICAgICAgICAgIH1cIj48c3BhbiBbaW5uZXJIdG1sXT1cImRlZmF1bHRTdmcgfCBzdHJpbmdIdG1sXCI+PC9zcGFuPjwvaT5cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIEBpZiAoIXdpZGVNb2RlIHx8ICghbGVmdGJhclJlZHVjZWQgJiYgaGFzQ2hpbGRyZW4pKSB7XHJcbiAgICAgICAgPGEgI2xpbmsgW2F0dHIuZGF0YS1sZXZlbF09XCJsZXZlbFwiIGNsYXNzPVwiaGFzLXN1Ym1lbnVcIiBbYXBwVG9vbHRpcF09XCJsZXZlbCA+IDEgPyBjYXB0aW9uIDogdW5kZWZpbmVkXCJcclxuICAgICAgICAgICAgW2NsYXNzLnRoaW4tbW9kZV09XCIhd2lkZU1vZGVcIj5cclxuXHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICA8IS0tIDxuZy1jb250YWluZXIgKGNsaWNrKT1cInN1YkFycm93Q2xpY2tlZCgkZXZlbnQsIGl0ZW0pO2ZhbHNlXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiAjc3ViQXJyb3cgKm5nSWY9XCIoISFpdGVtLnBpY3R1cmVCYXNlNjQgfHwgISFpdGVtLnBpY3R1cmVVcmkpXCJcclxuICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiJ2ltZy1zcGFuIHBsdXMgbGV2ZWwnICsgbGV2ZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwiaXRlbS5waWN0dXJlQmFzZTY0IHx8IGl0ZW0ucGljdHVyZVVyaVwiICpuZ0lmPVwiISFpdGVtLnBpY3R1cmVCYXNlNjRcIj5cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuICNzdWJBcnJvdyAqbmdJZj1cIiEhIWl0ZW0ucGljdHVyZUJhc2U2NCAmJiAhISFpdGVtLnBpY3R1cmVVcmlcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCIncGx1cyBsZXZlbCcgKyBsZXZlbFwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+IC0tPlxyXG5cclxuICAgICAgICAgICAgPGltZyAqbmdJZj1cIighIWl0ZW0ucGljdHVyZUJhc2U2NCB8fCAhIWl0ZW0ucGljdHVyZVVyaSlcIiBbc3JjXT1cIml0ZW0ucGljdHVyZUJhc2U2NCB8fCBpdGVtLnBpY3R1cmVVcmlcIj5cclxuXHJcbiAgICAgICAgICAgIHt7IGNhcHRpb24gfX1cclxuXHJcbiAgICAgICAgPC9hPlxyXG4gICAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgIDwhLS0gPGEgW2F0dHIuZGF0YS1sZXZlbF09XCJsZXZlbFwiIFtyb3V0ZXJMaW5rXT1cIml0ZW0udXJsXCIgKGNsaWNrKT1cIm9uQ2xpY2soJGV2ZW50LCBpdGVtKVwiXHJcbiAgICAgICAgICAgIFtjbGFzcy50aGluLW1vZGVdPVwiIXdpZGVNb2RlXCIgW2FwcFRvb2x0aXBdPVwid2lkZU1vZGUgPyBjYXB0aW9uIDogdW5kZWZpbmVkXCI+XHJcbiAgICAgICAgICAgIHt7IGNhcHRpb24gfX1cclxuICAgICAgICA8L2E+IC0tPlxyXG4gICAgICAgIDxhIFthdHRyLmRhdGEtbGV2ZWxdPVwibGV2ZWxcIiBbcm91dGVyTGlua109XCJpdGVtLnVybFwiXHJcbiAgICAgICAgICAgIFtjbGFzcy50aGluLW1vZGVdPVwiIXdpZGVNb2RlXCIgW2FwcFRvb2x0aXBdPVwid2lkZU1vZGUgPyBjYXB0aW9uIDogdW5kZWZpbmVkXCI+XHJcbiAgICAgICAgICAgIHt7IGNhcHRpb24gfX1cclxuICAgICAgICA8L2E+XHJcbiAgICAgICAgfVxyXG5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIEBpZiAoISF3aWRlTW9kZSAmJiAhIWhhc0NoaWxkcmVuICYmICEhaXRlbS50cmVlJENoaWxkcmVuIS5sZW5ndGggJiYgISEhbGVmdGJhclJlZHVjZWQpIHtcclxuICAgIDx1bCAjY2hpbGRyZW4gY2xhc3M9XCJkLW5vbmVcIiBbY2xhc3MudWwtdGhpbi1tb2RlXT1cIiF3aWRlTW9kZVwiIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgcGFkZGluZzogMCxcclxuICAgICAgICB9XCIgW2NsYXNzLnN1Ym1lbnVdPVwiIXdpZGVNb2RlXCI+XHJcbiAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgQGZvciAoY2hpbGQgb2YgaXRlbS50cmVlJENoaWxkcmVuOyB0cmFjayAkaW5kZXgpIHtcclxuICAgICAgICAgICAgPGFwcC1pdGVtIFtpdGVtXT1cImNoaWxkXCIgW2xldmVsXT1cImxldmVsKzFcIiAoY2xpY2tlZCk9XCJvbkNsaWNrKCRldmVudCwgY2hpbGQpXCI+PC9hcHAtaXRlbT5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC91bD5cclxuICAgIH1cclxuXHJcbjwvbGk+Il19
|