barsa-tiles 2.2.63 → 2.2.64
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-finder/app-finder.component.mjs +2 -2
- package/esm2022/lib/app-finder-app-list/app-finder-app-list.component.mjs +6 -7
- package/esm2022/lib/app-finder-group/app-finder-group.component.mjs +2 -2
- package/esm2022/lib/shellbar/shellbar.component.mjs +2 -2
- package/fesm2022/barsa-tiles.mjs +14 -15
- package/fesm2022/barsa-tiles.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -21,11 +21,11 @@ export class AppFinderComponent extends BaseComponent {
|
|
|
21
21
|
this.searchTerm = this.searchTerm2;
|
|
22
22
|
}
|
|
23
23
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AppFinderComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
24
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: AppFinderComponent, selector: "bt-app-finder", inputs: { appGroups: "appGroups", deviceSize: "deviceSize", sideContentSize: "sideContentSize", selectedAppGroup: "selectedAppGroup", selectedAppGroupId: "selectedAppGroupId", mobile: "mobile", contentDensity: "contentDensity", contentHeight: "contentHeight", pinnedAppInAppTileGroups: "pinnedAppInAppTileGroups" }, outputs: { pinClick: "pinClick", selectedAppGroupIdChange: "selectedAppGroupIdChange" }, usesInheritance: true, ngImport: i0, template: "<div class=\"wrapper\">\r\n @if (appGroups) {\r\n <fd-toolbar [fdType]=\"'solid'\">\r\n @if (deviceSize === 's') {\r\n <button\r\n fd-toolbar-item\r\n fd-button\r\n [fdMenu]=\"true\"\r\n [glyph]=\"'menu2'\"\r\n [fdType]=\"'transparent'\"\r\n [fdMenuTrigger]=\"menu\"\r\n [label]=\"selectedAppGroup?.Title\"\r\n ></button>\r\n }\r\n <fd-toolbar-spacer></fd-toolbar-spacer>\r\n <fd-input-group\r\n fd-toolbar-item\r\n type=\"search\"\r\n glyph=\"search\"\r\n [glyphAriaLabel]=\"'Search' | bbbTranslate\"\r\n [placeholder]=\"'Search' | bbbTranslate\"\r\n [button]=\"true\"\r\n [disabled]=\"false\"\r\n [(ngModel)]=\"searchTerm2\"\r\n (addOnButtonClicked)=\"onSearchSubmit()\"\r\n (keydown.enter)=\"onSearchSubmit()\"\r\n >\r\n </fd-input-group>\r\n </fd-toolbar>\r\n <div style=\"display: flex; overflow-y: auto\" [style.height]=\"contentHeight\">\r\n <div class=\"app-groups\">\r\n @if (deviceSize !== 's') {\r\n <bt-app-finder-group\r\n [appGroups]=\"appGroups\"\r\n [listMode]=\"true\"\r\n [selectedId]=\"selectedAppGroupId\"\r\n (selectedIdChange)=\"selectedAppGroupIdChange.emit($event)\"\r\n >\r\n </bt-app-finder-group>\r\n }\r\n </div>\r\n <bt-app-finder-app-list\r\n [appGroup]=\"selectedAppGroup\"\r\n [mobile]=\"mobile\"\r\n [searchTerm]=\"searchTerm\"\r\n [pinnedAppInAppTileGroups]=\"pinnedAppInAppTileGroups\"\r\n (pinClick)=\"pinClick.emit($event)\"\r\n ></bt-app-finder-app-list>\r\n </div>\r\n <fd-menu\r\n #menu\r\n [mobile]=\"deviceSize === 's'\"\r\n [mobileConfig]=\"{ title: 'Groups' | bbbTranslate, hasCloseButton: true }\"\r\n >\r\n @if (deviceSize === 's') {\r\n <bt-app-finder-group\r\n [appGroups]=\"appGroups\"\r\n [selectedId]=\"selectedAppGroupId\"\r\n (selectedIdChange)=\"menu.close(); selectedAppGroupIdChange.emit($event)\"\r\n >\r\n </bt-app-finder-group>\r\n }\r\n </fd-menu>\r\n } @else {\r\n <bsu-mask></bsu-mask>\r\n }\r\n</div>\r\n", styles: [":host{display:block;background-color:var(--sapBackgroundColor, #f7f7f7);color:var(--sapTextColor, #32363a)}:host ::ng-deep .fd-list__title{line-height:1.5rem}.wrapper{display:flex;flex-direction:column}fd-toolbar{width:100%}::ng-deep span.fd-toolbar__spacer{display:none}\n"], dependencies: [{ kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i2.ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i3.InputGroupComponent, selector: "fd-input-group", inputs: ["placement", "required", "inline", "addOnText", "buttonFocusable", "type", "glyph", "glyphFont", "button", "isControl", "showFocus", "isExpanded", "glyphAriaLabel", "addonButtonAriaHidden", "iconTitle", "ariaLabelledBy", "ariaLabel"], outputs: ["addOnButtonClicked", "search"] }, { kind: "component", type: i4.MenuComponent, selector: "fd-menu", inputs: ["mobile", "disabled", "focusTrapped", "focusAutoCapture", "openOnHoverTime", "mobileConfig", "ariaLabel", "ariaLabelledby", "id"], outputs: ["activePath"] }, { kind: "directive", type: i4.MenuTriggerDirective, selector: "[fdMenuTrigger]", inputs: ["fdMenuTrigger"] }, { kind: "component", type: i5.ToolbarComponent, selector: "fd-toolbar", inputs: ["titleId", "class", "shouldOverflow", "fdType", "title", "active", "clearBorder", "forceOverflow", "tabindex", "headingLevel", "ariaLabel", "ariaLabelledBy"] }, { kind: "directive", type: i5.ToolbarItemDirective, selector: "[fd-toolbar-item], [fdOverflowGroup], [fdOverflowPriority]", inputs: ["fdOverflowPriority", "fdOverflowGroup"] }, { kind: "directive", type: i5.ToolbarSpacerDirective, selector: "fd-toolbar-spacer", inputs: ["width", "class", "fixed"] }, { kind: "directive", type: i6.MobileDirective, selector: "[mobile]" }, { kind: "component", type: i7.MaskComponent, selector: "bsu-mask", inputs: ["size", "top"] }, { kind: "component", type: i8.AppFinderGroupComponent, selector: "bt-app-finder-group", inputs: ["appGroups", "selectedId", "listMode"], outputs: ["selectedIdChange"] }, { kind: "component", type: i9.AppFinderAppListComponent, selector: "bt-app-finder-app-list", inputs: ["appGroup", "mobile", "searchTerm", "pinnedAppInAppTileGroups"], outputs: ["pinClick", "appTileGroupsPinChange"] }, { kind: "pipe", type: i6.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: AppFinderComponent, selector: "bt-app-finder", inputs: { appGroups: "appGroups", deviceSize: "deviceSize", sideContentSize: "sideContentSize", selectedAppGroup: "selectedAppGroup", selectedAppGroupId: "selectedAppGroupId", mobile: "mobile", contentDensity: "contentDensity", contentHeight: "contentHeight", pinnedAppInAppTileGroups: "pinnedAppInAppTileGroups" }, outputs: { pinClick: "pinClick", selectedAppGroupIdChange: "selectedAppGroupIdChange" }, usesInheritance: true, ngImport: i0, template: "<div class=\"wrapper\">\r\n @if (appGroups) {\r\n <fd-toolbar [fdType]=\"'solid'\">\r\n @if (deviceSize === 's') {\r\n <button\r\n fd-toolbar-item\r\n fd-button\r\n [fdMenu]=\"true\"\r\n [glyph]=\"'menu2'\"\r\n [fdType]=\"'transparent'\"\r\n [fdMenuTrigger]=\"menu\"\r\n [label]=\"selectedAppGroup?.Title\"\r\n ></button>\r\n }\r\n <fd-toolbar-spacer></fd-toolbar-spacer>\r\n <fd-input-group\r\n fd-toolbar-item\r\n type=\"search\"\r\n glyph=\"search\"\r\n [glyphAriaLabel]=\"'Search' | bbbTranslate\"\r\n [placeholder]=\"'Search' | bbbTranslate\"\r\n [button]=\"true\"\r\n [disabled]=\"false\"\r\n [(ngModel)]=\"searchTerm2\"\r\n (addOnButtonClicked)=\"onSearchSubmit()\"\r\n (keydown.enter)=\"onSearchSubmit()\"\r\n >\r\n </fd-input-group>\r\n </fd-toolbar>\r\n <div style=\"display: flex; overflow-y: auto\" [style.height]=\"contentHeight\">\r\n <div class=\"app-groups\">\r\n @if (deviceSize !== 's') {\r\n <bt-app-finder-group\r\n [appGroups]=\"appGroups\"\r\n [listMode]=\"true\"\r\n [selectedId]=\"selectedAppGroupId\"\r\n (selectedIdChange)=\"selectedAppGroupIdChange.emit($event)\"\r\n >\r\n </bt-app-finder-group>\r\n }\r\n </div>\r\n <bt-app-finder-app-list\r\n [appGroup]=\"selectedAppGroup\"\r\n [mobile]=\"mobile\"\r\n [searchTerm]=\"searchTerm\"\r\n [pinnedAppInAppTileGroups]=\"pinnedAppInAppTileGroups\"\r\n (pinClick)=\"pinClick.emit($event)\"\r\n ></bt-app-finder-app-list>\r\n </div>\r\n <fd-menu\r\n #menu\r\n [mobile]=\"deviceSize === 's'\"\r\n [mobileConfig]=\"{ title: 'Groups' | bbbTranslate, hasCloseButton: true }\"\r\n >\r\n @if (deviceSize === 's') {\r\n <bt-app-finder-group\r\n [appGroups]=\"appGroups\"\r\n [selectedId]=\"selectedAppGroupId\"\r\n (selectedIdChange)=\"menu.close(); selectedAppGroupIdChange.emit($event)\"\r\n >\r\n </bt-app-finder-group>\r\n }\r\n </fd-menu>\r\n } @else {\r\n <bsu-mask></bsu-mask>\r\n }\r\n</div>\r\n", styles: [":host{display:block;background-color:var(--sapBackgroundColor, #f7f7f7);color:var(--sapTextColor, #32363a)}:host ::ng-deep .fd-list__title{line-height:1.5rem}.wrapper{display:flex;flex-direction:column}fd-toolbar{width:100%}::ng-deep span.fd-toolbar__spacer{display:none}.app-groups{background-color:var(--sapBaseColor);height:100%}\n"], dependencies: [{ kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i2.ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i3.InputGroupComponent, selector: "fd-input-group", inputs: ["placement", "required", "inline", "addOnText", "buttonFocusable", "type", "glyph", "glyphFont", "button", "isControl", "showFocus", "isExpanded", "glyphAriaLabel", "addonButtonAriaHidden", "iconTitle", "ariaLabelledBy", "ariaLabel"], outputs: ["addOnButtonClicked", "search"] }, { kind: "component", type: i4.MenuComponent, selector: "fd-menu", inputs: ["mobile", "disabled", "focusTrapped", "focusAutoCapture", "openOnHoverTime", "mobileConfig", "ariaLabel", "ariaLabelledby", "id"], outputs: ["activePath"] }, { kind: "directive", type: i4.MenuTriggerDirective, selector: "[fdMenuTrigger]", inputs: ["fdMenuTrigger"] }, { kind: "component", type: i5.ToolbarComponent, selector: "fd-toolbar", inputs: ["titleId", "class", "shouldOverflow", "fdType", "title", "active", "clearBorder", "forceOverflow", "tabindex", "headingLevel", "ariaLabel", "ariaLabelledBy"] }, { kind: "directive", type: i5.ToolbarItemDirective, selector: "[fd-toolbar-item], [fdOverflowGroup], [fdOverflowPriority]", inputs: ["fdOverflowPriority", "fdOverflowGroup"] }, { kind: "directive", type: i5.ToolbarSpacerDirective, selector: "fd-toolbar-spacer", inputs: ["width", "class", "fixed"] }, { kind: "directive", type: i6.MobileDirective, selector: "[mobile]" }, { kind: "component", type: i7.MaskComponent, selector: "bsu-mask", inputs: ["size", "top"] }, { kind: "component", type: i8.AppFinderGroupComponent, selector: "bt-app-finder-group", inputs: ["appGroups", "selectedId", "listMode"], outputs: ["selectedIdChange"] }, { kind: "component", type: i9.AppFinderAppListComponent, selector: "bt-app-finder-app-list", inputs: ["appGroup", "mobile", "searchTerm", "pinnedAppInAppTileGroups"], outputs: ["pinClick", "appTileGroupsPinChange"] }, { kind: "pipe", type: i6.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
25
25
|
}
|
|
26
26
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AppFinderComponent, decorators: [{
|
|
27
27
|
type: Component,
|
|
28
|
-
args: [{ selector: 'bt-app-finder', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<div class=\"wrapper\">\r\n @if (appGroups) {\r\n <fd-toolbar [fdType]=\"'solid'\">\r\n @if (deviceSize === 's') {\r\n <button\r\n fd-toolbar-item\r\n fd-button\r\n [fdMenu]=\"true\"\r\n [glyph]=\"'menu2'\"\r\n [fdType]=\"'transparent'\"\r\n [fdMenuTrigger]=\"menu\"\r\n [label]=\"selectedAppGroup?.Title\"\r\n ></button>\r\n }\r\n <fd-toolbar-spacer></fd-toolbar-spacer>\r\n <fd-input-group\r\n fd-toolbar-item\r\n type=\"search\"\r\n glyph=\"search\"\r\n [glyphAriaLabel]=\"'Search' | bbbTranslate\"\r\n [placeholder]=\"'Search' | bbbTranslate\"\r\n [button]=\"true\"\r\n [disabled]=\"false\"\r\n [(ngModel)]=\"searchTerm2\"\r\n (addOnButtonClicked)=\"onSearchSubmit()\"\r\n (keydown.enter)=\"onSearchSubmit()\"\r\n >\r\n </fd-input-group>\r\n </fd-toolbar>\r\n <div style=\"display: flex; overflow-y: auto\" [style.height]=\"contentHeight\">\r\n <div class=\"app-groups\">\r\n @if (deviceSize !== 's') {\r\n <bt-app-finder-group\r\n [appGroups]=\"appGroups\"\r\n [listMode]=\"true\"\r\n [selectedId]=\"selectedAppGroupId\"\r\n (selectedIdChange)=\"selectedAppGroupIdChange.emit($event)\"\r\n >\r\n </bt-app-finder-group>\r\n }\r\n </div>\r\n <bt-app-finder-app-list\r\n [appGroup]=\"selectedAppGroup\"\r\n [mobile]=\"mobile\"\r\n [searchTerm]=\"searchTerm\"\r\n [pinnedAppInAppTileGroups]=\"pinnedAppInAppTileGroups\"\r\n (pinClick)=\"pinClick.emit($event)\"\r\n ></bt-app-finder-app-list>\r\n </div>\r\n <fd-menu\r\n #menu\r\n [mobile]=\"deviceSize === 's'\"\r\n [mobileConfig]=\"{ title: 'Groups' | bbbTranslate, hasCloseButton: true }\"\r\n >\r\n @if (deviceSize === 's') {\r\n <bt-app-finder-group\r\n [appGroups]=\"appGroups\"\r\n [selectedId]=\"selectedAppGroupId\"\r\n (selectedIdChange)=\"menu.close(); selectedAppGroupIdChange.emit($event)\"\r\n >\r\n </bt-app-finder-group>\r\n }\r\n </fd-menu>\r\n } @else {\r\n <bsu-mask></bsu-mask>\r\n }\r\n</div>\r\n", styles: [":host{display:block;background-color:var(--sapBackgroundColor, #f7f7f7);color:var(--sapTextColor, #32363a)}:host ::ng-deep .fd-list__title{line-height:1.5rem}.wrapper{display:flex;flex-direction:column}fd-toolbar{width:100%}::ng-deep span.fd-toolbar__spacer{display:none}\n"] }]
|
|
28
|
+
args: [{ selector: 'bt-app-finder', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<div class=\"wrapper\">\r\n @if (appGroups) {\r\n <fd-toolbar [fdType]=\"'solid'\">\r\n @if (deviceSize === 's') {\r\n <button\r\n fd-toolbar-item\r\n fd-button\r\n [fdMenu]=\"true\"\r\n [glyph]=\"'menu2'\"\r\n [fdType]=\"'transparent'\"\r\n [fdMenuTrigger]=\"menu\"\r\n [label]=\"selectedAppGroup?.Title\"\r\n ></button>\r\n }\r\n <fd-toolbar-spacer></fd-toolbar-spacer>\r\n <fd-input-group\r\n fd-toolbar-item\r\n type=\"search\"\r\n glyph=\"search\"\r\n [glyphAriaLabel]=\"'Search' | bbbTranslate\"\r\n [placeholder]=\"'Search' | bbbTranslate\"\r\n [button]=\"true\"\r\n [disabled]=\"false\"\r\n [(ngModel)]=\"searchTerm2\"\r\n (addOnButtonClicked)=\"onSearchSubmit()\"\r\n (keydown.enter)=\"onSearchSubmit()\"\r\n >\r\n </fd-input-group>\r\n </fd-toolbar>\r\n <div style=\"display: flex; overflow-y: auto\" [style.height]=\"contentHeight\">\r\n <div class=\"app-groups\">\r\n @if (deviceSize !== 's') {\r\n <bt-app-finder-group\r\n [appGroups]=\"appGroups\"\r\n [listMode]=\"true\"\r\n [selectedId]=\"selectedAppGroupId\"\r\n (selectedIdChange)=\"selectedAppGroupIdChange.emit($event)\"\r\n >\r\n </bt-app-finder-group>\r\n }\r\n </div>\r\n <bt-app-finder-app-list\r\n [appGroup]=\"selectedAppGroup\"\r\n [mobile]=\"mobile\"\r\n [searchTerm]=\"searchTerm\"\r\n [pinnedAppInAppTileGroups]=\"pinnedAppInAppTileGroups\"\r\n (pinClick)=\"pinClick.emit($event)\"\r\n ></bt-app-finder-app-list>\r\n </div>\r\n <fd-menu\r\n #menu\r\n [mobile]=\"deviceSize === 's'\"\r\n [mobileConfig]=\"{ title: 'Groups' | bbbTranslate, hasCloseButton: true }\"\r\n >\r\n @if (deviceSize === 's') {\r\n <bt-app-finder-group\r\n [appGroups]=\"appGroups\"\r\n [selectedId]=\"selectedAppGroupId\"\r\n (selectedIdChange)=\"menu.close(); selectedAppGroupIdChange.emit($event)\"\r\n >\r\n </bt-app-finder-group>\r\n }\r\n </fd-menu>\r\n } @else {\r\n <bsu-mask></bsu-mask>\r\n }\r\n</div>\r\n", styles: [":host{display:block;background-color:var(--sapBackgroundColor, #f7f7f7);color:var(--sapTextColor, #32363a)}:host ::ng-deep .fd-list__title{line-height:1.5rem}.wrapper{display:flex;flex-direction:column}fd-toolbar{width:100%}::ng-deep span.fd-toolbar__spacer{display:none}.app-groups{background-color:var(--sapBaseColor);height:100%}\n"] }]
|
|
29
29
|
}], propDecorators: { appGroups: [{
|
|
30
30
|
type: Input
|
|
31
31
|
}], deviceSize: [{
|
|
@@ -4,10 +4,9 @@ import * as i0 from "@angular/core";
|
|
|
4
4
|
import * as i1 from "@fundamental-ngx/core/avatar";
|
|
5
5
|
import * as i2 from "@fundamental-ngx/core/button";
|
|
6
6
|
import * as i3 from "@fundamental-ngx/core/card";
|
|
7
|
-
import * as i4 from "@fundamental-ngx/core/
|
|
8
|
-
import * as i5 from "
|
|
9
|
-
import * as i6 from "
|
|
10
|
-
import * as i7 from "../directives/emptylist.directive";
|
|
7
|
+
import * as i4 from "@fundamental-ngx/core/title";
|
|
8
|
+
import * as i5 from "barsa-novin-ray-core";
|
|
9
|
+
import * as i6 from "../directives/emptylist.directive";
|
|
11
10
|
export class AppFinderAppListComponent extends BaseComponent {
|
|
12
11
|
constructor() {
|
|
13
12
|
super(...arguments);
|
|
@@ -18,11 +17,11 @@ export class AppFinderAppListComponent extends BaseComponent {
|
|
|
18
17
|
this.pinClick.emit(app);
|
|
19
18
|
}
|
|
20
19
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AppFinderAppListComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
21
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: AppFinderAppListComponent, selector: "bt-app-finder-app-list", inputs: { appGroup: "appGroup", mobile: "mobile", searchTerm: "searchTerm", pinnedAppInAppTileGroups: "pinnedAppInAppTileGroups" }, outputs: { pinClick: "pinClick", appTileGroupsPinChange: "appTileGroupsPinChange" }, usesInheritance: true, ngImport: i0, template: "@if (appGroup) {\r\n<h5 fd-title *emptyList=\"appGroup.Apps\"></h5>\r\n@if ((appGroup.Apps | filterStr: { Title: searchTerm, mode: 'contains' }).length > 0) {\r\n<
|
|
20
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: AppFinderAppListComponent, selector: "bt-app-finder-app-list", inputs: { appGroup: "appGroup", mobile: "mobile", searchTerm: "searchTerm", pinnedAppInAppTileGroups: "pinnedAppInAppTileGroups" }, outputs: { pinClick: "pinClick", appTileGroupsPinChange: "appTileGroupsPinChange" }, usesInheritance: true, ngImport: i0, template: "@if (appGroup) {\r\n<h5 fd-title *emptyList=\"appGroup.Apps\"></h5>\r\n@if ((appGroup.Apps | filterStr: { Title: searchTerm, mode: 'contains' }).length > 0) {\r\n<div class=\"tw-flex tw-gap-3 tw-flex-wrap tw-grid tw-grid-cols-1 md:tw-grid-cols-2 lg:tw-grid-cols-3 xl:tw-grid-cols-4 2xl:tw-grid-cols-5\">\r\n @for (app of appGroup.Apps | filterStr: { Title: searchTerm, mode: 'contains' }; track app; let i = $index) {\r\n <fd-card >\r\n <fd-card-header [dynCommand]=\"app.DynamicCommand\" [mo]=\"app\">\r\n <fd-card-main-header>\r\n @if (app.Icon) {\r\n <fd-avatar [glyph]=\"app.Icon\" size=\"s\" [title]=\"app.Title\"></fd-avatar>\r\n }\r\n <h2 fd-card-title class=\"header-title ellapsis\" [attr.title]=\"app.Title\">\r\n {{ app.Title }}\r\n </h2>\r\n <h3 fd-card-subtitle></h3>\r\n </fd-card-main-header>\r\n </fd-card-header>\r\n <fd-card-content>\r\n <button\r\n fd-button\r\n [glyph]=\"'pushpin-off'\"\r\n [fdType]=\"\r\n pinnedAppInAppTileGroups[app.Id]\r\n ? pinnedAppInAppTileGroups[app.Id].length\r\n ? 'emphasized'\r\n : 'standard'\r\n : app.$HasPinned\r\n ? 'emphasized'\r\n : 'standard'\r\n \"\r\n (click)=\"onPinTap(app)\"\r\n ></button>\r\n </fd-card-content>\r\n </fd-card>\r\n }\r\n</div>\r\n} }\r\n", styles: [":host{display:block;flex-grow:1;padding:1rem}button{cursor:pointer}h3{padding-bottom:.5rem}fd-fixed-card-layout,h5{padding-bottom:2rem;display:block}.header-title{padding-bottom:30px}fd-card-content{padding:10px;cursor:default}@media (max-width: 767px){:host{padding:0 1rem}}\n"], dependencies: [{ kind: "component", type: i1.AvatarComponent, selector: "fd-avatar", inputs: ["class", "id", "ariaLabel", "ariaLabelledby", "label", "size", "font", "glyph", "zoomGlyph", "circle", "transparent", "contain", "placeholder", "tile", "border", "colorAccent", "colorIndication", "random", "clickable", "valueState", "image", "alterIcon", "backupImage"], outputs: ["avatarClicked", "zoomGlyphClicked"] }, { kind: "component", type: i2.ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i3.CardComponent, selector: "fd-card", inputs: ["badge", "badgeIcon", "badgeColor", "badgeColorSecondary", "badgeStatus", "badgeAriaLabel", "secondBadge", "secondBadgeIcon", "secondBadgeColor", "secondBadgeColorSecondary", "secondBadgeStatus", "secondBadgeAriaLabel", "isLoading", "cardType", "id", "ariaRoledescription", "ariaDescription", "ariaLabel", "role", "interactive", "selected", "ariaPosinset", "ariaSetsize"], outputs: ["ariaPosinsetChange", "ariaSetsizeChange"] }, { kind: "component", type: i3.CardHeaderComponent, selector: "fd-card-header", inputs: ["ariaRoleDescription"] }, { kind: "component", type: i3.CardMainHeaderComponent, selector: "fd-card-main-header", inputs: ["interactive", "title"] }, { kind: "component", type: i3.CardContentComponent, selector: "fd-card-content" }, { kind: "directive", type: i3.CardTitleDirective, selector: "[fd-card-title]", inputs: ["id"] }, { kind: "directive", type: i3.CardSubtitleDirective, selector: "[fd-card-subtitle]" }, { kind: "component", type: i4.TitleComponent, selector: "[fd-title], [fdTitle]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "directive", type: i5.DynamicCommandDirective, selector: "[dynCommand]", inputs: ["dynCommand", "mo", "enableCommand"], outputs: ["commandClick"] }, { kind: "directive", type: i6.EmptyListDirective, selector: "[emptyList]", inputs: ["emptyList"] }, { kind: "pipe", type: i5.FilterStringPipe, name: "filterStr" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
22
21
|
}
|
|
23
22
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AppFinderAppListComponent, decorators: [{
|
|
24
23
|
type: Component,
|
|
25
|
-
args: [{ selector: 'bt-app-finder-app-list', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "@if (appGroup) {\r\n<h5 fd-title *emptyList=\"appGroup.Apps\"></h5>\r\n@if ((appGroup.Apps | filterStr: { Title: searchTerm, mode: 'contains' }).length > 0) {\r\n<
|
|
24
|
+
args: [{ selector: 'bt-app-finder-app-list', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "@if (appGroup) {\r\n<h5 fd-title *emptyList=\"appGroup.Apps\"></h5>\r\n@if ((appGroup.Apps | filterStr: { Title: searchTerm, mode: 'contains' }).length > 0) {\r\n<div class=\"tw-flex tw-gap-3 tw-flex-wrap tw-grid tw-grid-cols-1 md:tw-grid-cols-2 lg:tw-grid-cols-3 xl:tw-grid-cols-4 2xl:tw-grid-cols-5\">\r\n @for (app of appGroup.Apps | filterStr: { Title: searchTerm, mode: 'contains' }; track app; let i = $index) {\r\n <fd-card >\r\n <fd-card-header [dynCommand]=\"app.DynamicCommand\" [mo]=\"app\">\r\n <fd-card-main-header>\r\n @if (app.Icon) {\r\n <fd-avatar [glyph]=\"app.Icon\" size=\"s\" [title]=\"app.Title\"></fd-avatar>\r\n }\r\n <h2 fd-card-title class=\"header-title ellapsis\" [attr.title]=\"app.Title\">\r\n {{ app.Title }}\r\n </h2>\r\n <h3 fd-card-subtitle></h3>\r\n </fd-card-main-header>\r\n </fd-card-header>\r\n <fd-card-content>\r\n <button\r\n fd-button\r\n [glyph]=\"'pushpin-off'\"\r\n [fdType]=\"\r\n pinnedAppInAppTileGroups[app.Id]\r\n ? pinnedAppInAppTileGroups[app.Id].length\r\n ? 'emphasized'\r\n : 'standard'\r\n : app.$HasPinned\r\n ? 'emphasized'\r\n : 'standard'\r\n \"\r\n (click)=\"onPinTap(app)\"\r\n ></button>\r\n </fd-card-content>\r\n </fd-card>\r\n }\r\n</div>\r\n} }\r\n", styles: [":host{display:block;flex-grow:1;padding:1rem}button{cursor:pointer}h3{padding-bottom:.5rem}fd-fixed-card-layout,h5{padding-bottom:2rem;display:block}.header-title{padding-bottom:30px}fd-card-content{padding:10px;cursor:default}@media (max-width: 767px){:host{padding:0 1rem}}\n"] }]
|
|
26
25
|
}], propDecorators: { appGroup: [{
|
|
27
26
|
type: Input
|
|
28
27
|
}], mobile: [{
|
|
@@ -36,4 +35,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
36
35
|
}], appTileGroupsPinChange: [{
|
|
37
36
|
type: Output
|
|
38
37
|
}] } });
|
|
39
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLWZpbmRlci1hcHAtbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS10aWxlcy9zcmMvbGliL2FwcC1maW5kZXItYXBwLWxpc3QvYXBwLWZpbmRlci1hcHAtbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS10aWxlcy9zcmMvbGliL2FwcC1maW5kZXItYXBwLWxpc3QvYXBwLWZpbmRlci1hcHAtbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hHLE9BQU8sRUFBRSxhQUFhLEVBQXVCLE1BQU0sc0JBQXNCLENBQUM7Ozs7Ozs7O0FBUzFFLE1BQU0sT0FBTyx5QkFBMEIsU0FBUSxhQUFhO0lBUDVEOztRQWFjLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBdUIsQ0FBQztRQUNuRCwyQkFBc0IsR0FBRyxJQUFJLFlBQVksRUFHL0MsQ0FBQztLQUlSO0lBSEcsUUFBUSxDQUFDLEdBQXdCO1FBQzdCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzVCLENBQUM7K0dBYlEseUJBQXlCO21HQUF6Qix5QkFBeUIsOFNDVnRDLG1uREFxQ0E7OzRGRDNCYSx5QkFBeUI7a0JBUHJDLFNBQVM7K0JBQ0ksd0JBQXdCLG1CQUdqQix1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLEtBQUs7OEJBR1IsUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyx3QkFBd0I7c0JBQWhDLEtBQUs7Z0JBRUksUUFBUTtzQkFBakIsTUFBTTtnQkFDRyxzQkFBc0I7c0JBQS9CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQmFzZUNvbXBvbmVudCwgTWV0YW9iamVjdERhdGFNb2RlbCB9IGZyb20gJ2JhcnNhLW5vdmluLXJheS1jb3JlJztcclxuaW1wb3J0IHsgQXBwVGlsZUdyb3VwUGluIH0gZnJvbSAnLi4vbW9kZWxzJztcclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2J0LWFwcC1maW5kZXItYXBwLWxpc3QnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2FwcC1maW5kZXItYXBwLWxpc3QuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vYXBwLWZpbmRlci1hcHAtbGlzdC5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgICBzdGFuZGFsb25lOiBmYWxzZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQXBwRmluZGVyQXBwTGlzdENvbXBvbmVudCBleHRlbmRzIEJhc2VDb21wb25lbnQge1xyXG4gICAgQElucHV0KCkgYXBwR3JvdXA6IE1ldGFvYmplY3REYXRhTW9kZWw7XHJcbiAgICBASW5wdXQoKSBtb2JpbGU6IGJvb2xlYW47XHJcbiAgICBASW5wdXQoKSBzZWFyY2hUZXJtOiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKSBwaW5uZWRBcHBJbkFwcFRpbGVHcm91cHM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nW10gfTtcclxuXHJcbiAgICBAT3V0cHV0KCkgcGluQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPE1ldGFvYmplY3REYXRhTW9kZWw+KCk7XHJcbiAgICBAT3V0cHV0KCkgYXBwVGlsZUdyb3Vwc1BpbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8e1xyXG4gICAgICAgIGFwcFRpbGVHcm91cHNQaW46IEFwcFRpbGVHcm91cFBpbltdO1xyXG4gICAgICAgIGFwcDogTWV0YW9iamVjdERhdGFNb2RlbDtcclxuICAgIH0+KCk7XHJcbiAgICBvblBpblRhcChhcHA6IE1ldGFvYmplY3REYXRhTW9kZWwpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnBpbkNsaWNrLmVtaXQoYXBwKTtcclxuICAgIH1cclxufVxyXG4iLCJAaWYgKGFwcEdyb3VwKSB7XHJcbjxoNSBmZC10aXRsZSAqZW1wdHlMaXN0PVwiYXBwR3JvdXAuQXBwc1wiPjwvaDU+XHJcbkBpZiAoKGFwcEdyb3VwLkFwcHMgfCBmaWx0ZXJTdHI6IHsgVGl0bGU6IHNlYXJjaFRlcm0sIG1vZGU6ICdjb250YWlucycgfSkubGVuZ3RoID4gMCkge1xyXG48ZGl2IGNsYXNzPVwidHctZmxleCB0dy1nYXAtMyB0dy1mbGV4LXdyYXAgdHctZ3JpZCB0dy1ncmlkLWNvbHMtMSBtZDp0dy1ncmlkLWNvbHMtMiBsZzp0dy1ncmlkLWNvbHMtMyB4bDp0dy1ncmlkLWNvbHMtNCAyeGw6dHctZ3JpZC1jb2xzLTVcIj5cclxuICAgIEBmb3IgKGFwcCBvZiBhcHBHcm91cC5BcHBzIHwgZmlsdGVyU3RyOiB7IFRpdGxlOiBzZWFyY2hUZXJtLCBtb2RlOiAnY29udGFpbnMnIH07IHRyYWNrIGFwcDsgbGV0IGkgPSAkaW5kZXgpIHtcclxuICAgIDxmZC1jYXJkID5cclxuICAgICAgICA8ZmQtY2FyZC1oZWFkZXIgW2R5bkNvbW1hbmRdPVwiYXBwLkR5bmFtaWNDb21tYW5kXCIgW21vXT1cImFwcFwiPlxyXG4gICAgICAgICAgICA8ZmQtY2FyZC1tYWluLWhlYWRlcj5cclxuICAgICAgICAgICAgICAgIEBpZiAoYXBwLkljb24pIHtcclxuICAgICAgICAgICAgICAgIDxmZC1hdmF0YXIgW2dseXBoXT1cImFwcC5JY29uXCIgc2l6ZT1cInNcIiBbdGl0bGVdPVwiYXBwLlRpdGxlXCI+PC9mZC1hdmF0YXI+XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICA8aDIgZmQtY2FyZC10aXRsZSBjbGFzcz1cImhlYWRlci10aXRsZSBlbGxhcHNpc1wiIFthdHRyLnRpdGxlXT1cImFwcC5UaXRsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IGFwcC5UaXRsZSB9fVxyXG4gICAgICAgICAgICAgICAgPC9oMj5cclxuICAgICAgICAgICAgICAgIDxoMyBmZC1jYXJkLXN1YnRpdGxlPjwvaDM+XHJcbiAgICAgICAgICAgIDwvZmQtY2FyZC1tYWluLWhlYWRlcj5cclxuICAgICAgICA8L2ZkLWNhcmQtaGVhZGVyPlxyXG4gICAgICAgIDxmZC1jYXJkLWNvbnRlbnQ+XHJcbiAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgIGZkLWJ1dHRvblxyXG4gICAgICAgICAgICAgICAgW2dseXBoXT1cIidwdXNocGluLW9mZidcIlxyXG4gICAgICAgICAgICAgICAgW2ZkVHlwZV09XCJcclxuICAgICAgICAgICAgICAgICAgICBwaW5uZWRBcHBJbkFwcFRpbGVHcm91cHNbYXBwLklkXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHBpbm5lZEFwcEluQXBwVGlsZUdyb3Vwc1thcHAuSWRdLmxlbmd0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAnZW1waGFzaXplZCdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJ3N0YW5kYXJkJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGFwcC4kSGFzUGlubmVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID8gJ2VtcGhhc2l6ZWQnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDogJ3N0YW5kYXJkJ1xyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvblBpblRhcChhcHApXCJcclxuICAgICAgICAgICAgPjwvYnV0dG9uPlxyXG4gICAgICAgIDwvZmQtY2FyZC1jb250ZW50PlxyXG4gICAgPC9mZC1jYXJkPlxyXG4gICAgfVxyXG48L2Rpdj5cclxufSB9XHJcbiJdfQ==
|
|
@@ -24,11 +24,11 @@ export class AppFinderGroupComponent extends BaseComponent {
|
|
|
24
24
|
this.selectedIdChange.emit(group.Id);
|
|
25
25
|
}
|
|
26
26
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AppFinderGroupComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
27
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: AppFinderGroupComponent, selector: "bt-app-finder-group", inputs: { appGroups: "appGroups", selectedId: "selectedId", listMode: "listMode" }, outputs: { selectedIdChange: "selectedIdChange" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "@if (listMode) {\r\n<div class=\"app-groups\">\r\n <ul fd-list [selection]=\"true\">\r\n @for (group of appGroups; track group; let i = $index) {\r\n <li fd-list-item [selected]=\"group.Id === selectedId\" (click)=\"OnGroupClick(group)\">\r\n <span fd-list-title>\r\n {{ group.Title }}\r\n </span>\r\n </li>\r\n }\r\n </ul>\r\n</div>\r\n} @else { @for (group of appGroups; track group; let i = $index) {\r\n<li fd-menu-item [selected]=\"group.Id === selectedId\">\r\n <a fd-menu-interactive (click)=\"OnMenuGroupClick(group)\">\r\n <span fd-menu-title>\r\n {{ group.Title }}\r\n </span>\r\n </a>\r\n</li>\r\n} }\r\n", styles: [".app-groups{width:25vw;border-left:.0625rem solid var(--sapGroup_TitleBorderColor, #d9d9d9)}\n"], dependencies: [{ kind: "component", type: i1.ListComponent, selector: "[fd-list], [fdList]", inputs: ["dropdownMode", "multiInputMode", "mobileMode", "hasMessage", "noBorder", "navigationIndicator", "selection", "keyboardSupport", "byline", "unreadIndicator", "role"], outputs: ["focusEscapeList"] }, { kind: "component", type: i1.ListItemComponent, selector: "[fdListItem] ,[fd-list-item]", inputs: ["selected", "noData", "action", "interactive", "growing", "counter", "unread", "byline", "ariaRole", "id", "preventClick"], outputs: ["keyDown"] }, { kind: "directive", type: i1.ListTitleDirective, selector: "[fd-list-title], [fdListTitle]", inputs: ["wrap"] }, { kind: "component", type: i2.MenuItemComponent, selector: "li[fd-menu-item]", inputs: ["disabled", "itemId", "submenu", "parentSubmenu", "hasSeparator"], outputs: ["onSelect"], exportAs: ["fd-menu-item"] }, { kind: "component", type: i2.MenuInteractiveComponent, selector: "[fd-menu-interactive]" }, { kind: "directive", type: i2.MenuTitleDirective, selector: "[fd-menu-title]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
27
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: AppFinderGroupComponent, selector: "bt-app-finder-group", inputs: { appGroups: "appGroups", selectedId: "selectedId", listMode: "listMode" }, outputs: { selectedIdChange: "selectedIdChange" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "@if (listMode) {\r\n<div class=\"app-groups\">\r\n <ul fd-list [selection]=\"true\">\r\n @for (group of appGroups; track group; let i = $index) {\r\n <li fd-list-item [selected]=\"group.Id === selectedId\" (click)=\"OnGroupClick(group)\">\r\n <span fd-list-title>\r\n {{ group.Title }}\r\n </span>\r\n </li>\r\n }\r\n </ul>\r\n</div>\r\n} @else { @for (group of appGroups; track group; let i = $index) {\r\n<li fd-menu-item [selected]=\"group.Id === selectedId\">\r\n <a fd-menu-interactive (click)=\"OnMenuGroupClick(group)\">\r\n <span fd-menu-title>\r\n {{ group.Title }}\r\n </span>\r\n </a>\r\n</li>\r\n} }\r\n", styles: [".app-groups{width:25vw;border-left:.0625rem solid var(--sapGroup_TitleBorderColor, #d9d9d9);height:100%}\n"], dependencies: [{ kind: "component", type: i1.ListComponent, selector: "[fd-list], [fdList]", inputs: ["dropdownMode", "multiInputMode", "mobileMode", "hasMessage", "noBorder", "navigationIndicator", "selection", "keyboardSupport", "byline", "unreadIndicator", "role"], outputs: ["focusEscapeList"] }, { kind: "component", type: i1.ListItemComponent, selector: "[fdListItem] ,[fd-list-item]", inputs: ["selected", "noData", "action", "interactive", "growing", "counter", "unread", "byline", "ariaRole", "id", "preventClick"], outputs: ["keyDown"] }, { kind: "directive", type: i1.ListTitleDirective, selector: "[fd-list-title], [fdListTitle]", inputs: ["wrap"] }, { kind: "component", type: i2.MenuItemComponent, selector: "li[fd-menu-item]", inputs: ["disabled", "itemId", "submenu", "parentSubmenu", "hasSeparator"], outputs: ["onSelect"], exportAs: ["fd-menu-item"] }, { kind: "component", type: i2.MenuInteractiveComponent, selector: "[fd-menu-interactive]" }, { kind: "directive", type: i2.MenuTitleDirective, selector: "[fd-menu-title]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
28
28
|
}
|
|
29
29
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AppFinderGroupComponent, decorators: [{
|
|
30
30
|
type: Component,
|
|
31
|
-
args: [{ selector: 'bt-app-finder-group', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "@if (listMode) {\r\n<div class=\"app-groups\">\r\n <ul fd-list [selection]=\"true\">\r\n @for (group of appGroups; track group; let i = $index) {\r\n <li fd-list-item [selected]=\"group.Id === selectedId\" (click)=\"OnGroupClick(group)\">\r\n <span fd-list-title>\r\n {{ group.Title }}\r\n </span>\r\n </li>\r\n }\r\n </ul>\r\n</div>\r\n} @else { @for (group of appGroups; track group; let i = $index) {\r\n<li fd-menu-item [selected]=\"group.Id === selectedId\">\r\n <a fd-menu-interactive (click)=\"OnMenuGroupClick(group)\">\r\n <span fd-menu-title>\r\n {{ group.Title }}\r\n </span>\r\n </a>\r\n</li>\r\n} }\r\n", styles: [".app-groups{width:25vw;border-left:.0625rem solid var(--sapGroup_TitleBorderColor, #d9d9d9)}\n"] }]
|
|
31
|
+
args: [{ selector: 'bt-app-finder-group', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "@if (listMode) {\r\n<div class=\"app-groups\">\r\n <ul fd-list [selection]=\"true\">\r\n @for (group of appGroups; track group; let i = $index) {\r\n <li fd-list-item [selected]=\"group.Id === selectedId\" (click)=\"OnGroupClick(group)\">\r\n <span fd-list-title>\r\n {{ group.Title }}\r\n </span>\r\n </li>\r\n }\r\n </ul>\r\n</div>\r\n} @else { @for (group of appGroups; track group; let i = $index) {\r\n<li fd-menu-item [selected]=\"group.Id === selectedId\">\r\n <a fd-menu-interactive (click)=\"OnMenuGroupClick(group)\">\r\n <span fd-menu-title>\r\n {{ group.Title }}\r\n </span>\r\n </a>\r\n</li>\r\n} }\r\n", styles: [".app-groups{width:25vw;border-left:.0625rem solid var(--sapGroup_TitleBorderColor, #d9d9d9);height:100%}\n"] }]
|
|
32
32
|
}], propDecorators: { appGroups: [{
|
|
33
33
|
type: Input
|
|
34
34
|
}], selectedId: [{
|
|
@@ -168,7 +168,7 @@ export class ShellbarComponent extends BaseComponent {
|
|
|
168
168
|
if ((event instanceof NavigationEnd && event instanceof RouterEvent) ||
|
|
169
169
|
event.routerEvent instanceof RouterEvent) {
|
|
170
170
|
const x = event.url || event.routerEvent?.url;
|
|
171
|
-
x
|
|
171
|
+
x.split('/').length > 2 ? this._addClass('no-home-page') : this._removeClass('no-home-page');
|
|
172
172
|
}
|
|
173
173
|
});
|
|
174
174
|
}
|
|
@@ -231,4 +231,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
231
231
|
type: ViewChild,
|
|
232
232
|
args: ['notificationsDialog', { static: true, read: TemplateRef }]
|
|
233
233
|
}] } });
|
|
234
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hlbGxiYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2EtdGlsZXMvc3JjL2xpYi9zaGVsbGJhci9zaGVsbGJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS10aWxlcy9zcmMvbGliL3NoZWxsYmFyL3NoZWxsYmFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULE1BQU0sRUFDTixNQUFNLEVBRU4sU0FBUyxFQUNULFdBQVcsRUFDWCxTQUFTLEVBQ1QsVUFBVSxFQUNiLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxRQUFRLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2hELE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEQsT0FBTyxFQUNILGlCQUFpQixFQUtwQixNQUFNLHVCQUF1QixDQUFDO0FBRy9CLE9BQU8sRUFDSCxhQUFhLEVBQ2IsUUFBUSxFQU1SLFdBQVcsRUFNWCxpQkFBaUIsRUFDakIsa0JBQWtCLEVBQ2xCLGlCQUFpQixFQUNwQixNQUFNLHNCQUFzQixDQUFDO0FBRzlCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7Ozs7OztBQXNCckUsTUFBTSxPQUFPLGlCQUFrQixTQUFRLGFBQWE7SUFrQ2hELElBQUksaUJBQWlCO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFlBQVksRUFBRSxrQkFBa0IsRUFBRSxFQUFFLENBQUM7SUFDckQsQ0FBQztJQUNELElBQUksa0JBQWtCO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLFlBQVksRUFBRSxrQkFBa0IsQ0FBQztJQUNqRCxDQUFDO0lBQ0QsSUFBSSxRQUFRO1FBQ1IsSUFBSSxD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QUFPLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDeEMsR0FBRyxZQUFZO1lBQ2YsZUFBZSxFQUFFLFlBQVksQ0FBQyxPQUFPO2dCQUNqQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyx1QkFBdUIsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDO2dCQUNsRSxDQUFDLENBQUMsRUFBRTtTQUNYLENBQUMsQ0FBQyxDQUFDO0lBQ1IsQ0FBQztJQUNPLGNBQWMsQ0FBQyxPQUFlLENBQUMsNkJBQTZCO1FBQ2hFLFFBQVEsQ0FBQyxFQUFFLENBQUMsdUJBQXVCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDN0MsUUFBUSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDaEMsQ0FBQzsrR0FoUFEsaUJBQWlCLDRPQXFIZCxXQUFXO21HQXJIZCxpQkFBaUIsc0dBQ2YsaUJBQWlCLGdQQUU0QixXQUFXLGtFQ3BFdkUsazNHQXFGQTs7NEZEcEJhLGlCQUFpQjtrQkFQN0IsU0FBUzsrQkFDSSxhQUFhLG1CQUdOLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsS0FBSzs7MEJBdUhaLE1BQU07MkJBQUMsV0FBVzt5Q0FwSE8saUJBQWlCO3NCQUE5QyxTQUFTO3VCQUFDLGlCQUFpQjtnQkFDc0IsZ0JBQWdCO3NCQUFqRSxTQUFTO3VCQUFDLGtCQUFrQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFDdUIsb0JBQW9CO3NCQUExRixTQUFTO3VCQUFDLHFCQUFxQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBDb21wb25lbnQsXHJcbiAgICBpbmplY3QsXHJcbiAgICBJbmplY3QsXHJcbiAgICBPbkluaXQsXHJcbiAgICBSZW5kZXJlcjIsXHJcbiAgICBUZW1wbGF0ZVJlZixcclxuICAgIFZpZXdDaGlsZCxcclxuICAgIEVsZW1lbnRSZWZcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgZm9ya0pvaW4sIE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IG1hcCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQge1xyXG4gICAgQ29tYm9ib3hDb21wb25lbnQsXHJcbiAgICBQb3BvdmVyQ29tcG9uZW50LFxyXG4gICAgUHJvZHVjdFN3aXRjaEl0ZW0sXHJcbiAgICBTaGVsbGJhck1lbnVJdGVtLFxyXG4gICAgU2hlbGxiYXJVc2VyXHJcbn0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlJztcclxuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlUmVzb3VyY2VVcmwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuXHJcbmltcG9ydCB7XHJcbiAgICBCYXNlQ29tcG9uZW50LFxyXG4gICAgQmFyc2FBcGksXHJcbiAgICBNZXRhb2JqZWN0RGF0YU1vZGVsLFxyXG4gICAgRmlsZVBpY3R1cmVJbmZvTW9kZWwsXHJcbiAgICBNb0ZvclJlcG9ydE1vZGVsLFxyXG4gICAgUG9ydGFsU2VydmljZSxcclxuICAgIEJyZWFkY3J1bWJTZXJ2aWNlLFxyXG4gICAgQVBQX1ZFUlNJT04sXHJcbiAgICBOb3RpZmljYXRpb25TZXJ2aWNlLFxyXG4gICAgTm90aWZpY2F0aW9uSXRlbSxcclxuICAgIE5vdGlmaWNhdGlvbkFjdGlvbixcclxuICAgIEJiYlRyYW5zbGF0ZVBpcGUsXHJcbiAgICBBYmJyZXZhdGlvbkRldmljZVNpemUsXHJcbiAgICBnZXREZXZpY2VJc01vYmlsZSxcclxuICAgIGdldERldmljZUlzRGVza3RvcCxcclxuICAgIGdldERldmljZUlzVGFibGV0XHJcbn0gZnJvbSAnYmFyc2Etbm92aW4tcmF5LWNvcmUnO1xyXG5cclxuaW1wb3J0IHsgVGlsZXNTZXJ2aWNlIH0gZnJvbSAnLi4vdGlsZXMuc2VydmljZSc7XHJcbmltcG9ydCB7IE5hdmlnYXRpb25FbmQsIFJvdXRlciwgUm91dGVyRXZlbnQgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5cclxuaW50ZXJmYWNlIFNoZWxsYmFyU2V0dGluZyBleHRlbmRzIE1ldGFvYmplY3REYXRhTW9kZWwge1xyXG4gICAgQ3NzU3R5bGVzOiBzdHJpbmc7XHJcbiAgICBzdWJ0aXRsZTogc3RyaW5nO1xyXG4gICAgY2FsY1N1YnRpdGxlOiBzdHJpbmc7XHJcbiAgICBsb2dvOiBGaWxlUGljdHVyZUluZm9Nb2RlbDtcclxuICAgIFByb2R1Y3RTd2l0Y2hJdGVtczogTW9Gb3JSZXBvcnRNb2RlbDtcclxuICAgIFByb2R1Y3RNZW51SXRlbXM6IE1vRm9yUmVwb3J0TW9kZWw7XHJcbiAgICBVc2VyTWVudUl0ZW1zOiBNb0ZvclJlcG9ydE1vZGVsO1xyXG4gICAgQWN0aW9uSXRlbXM6IE1vRm9yUmVwb3J0TW9kZWw7XHJcbiAgICBTaWRlYmFyUmVwb3J0OiBNZXRhb2JqZWN0RGF0YU1vZGVsO1xyXG4gICAgUHJvZmlsZUltYWdlUmVwb3J0OiBNZXRhb2JqZWN0RGF0YU1vZGVsO1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnYnQtc2hlbGxiYXInLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NoZWxsYmFyLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL3NoZWxsYmFyLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICAgIHN0YW5kYWxvbmU6IGZhbHNlXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTaGVsbGJhckNvbXBvbmVudCBleHRlbmRzIEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gICAgQFZpZXdDaGlsZChDb21ib2JveENvbXBvbmVudCkgY29tYm9ib3hDb21wb25lbnQ6IENvbWJvYm94Q29tcG9uZW50O1xyXG4gICAgQFZpZXdDaGlsZCgncG9wb3ZlckNvbXBvbmVudCcsIHsgc3RhdGljOiBmYWxzZSB9KSBwb3BvdmVyQ29tcG9uZW50OiBQb3BvdmVyQ29tcG9uZW50O1xyXG4gICAgQFZpZXdDaGlsZCgnbm90aWZpY2F0aW9uc0RpYWxvZycsIHsgc3RhdGljOiB0cnVlLCByZWFkOiBUZW1wbGF0ZVJlZiB9KSBfbm90aWZpY2F0aW9uc0RpYWxvZzogVGVtcGxhdGVSZWY8YW55PjtcclxuICAgIHNoZWxsYmFyRGF0YTogU2hlbGxiYXJTZXR0aW5nO1xyXG4gICAgc2V0dGluZ3M6IE1ldGFvYmplY3REYXRhTW9kZWw7XHJcbiAgICBpc09wZW5Ob3RpZmljYXRvaW4gPSBmYWxzZTtcclxuICAgIGRldmljZVNpemUkOiBPYnNlcnZhYmxlPEFiYnJldmF0aW9uRGV2aWNlU2l6ZT47XHJcbiAgICBwcm9kdWN0TWVudUNvbnRyb2w6IHN0cmluZztcclxuICAgIHVzZXI6IFNoZWxsYmFyVXNlciA9IHtcclxuICAgICAgICBpbml0aWFsczogJ1dXJyxcclxuICAgICAgICBjb2xvckFjY2VudDogMVxyXG4gICAgfTtcclxuXHJcbiAgICBwcm9kdWN0TWVudUl0ZW1zMTogU2hlbGxiYXJNZW51SXRlbVtdO1xyXG4gICAgdXNlckxvZ2dlZEluJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcclxuICAgIGNzc1VybCQ6IE9ic2VydmFibGU8U2FmZVJlc291cmNlVXJsIHwgbnVsbD47XHJcbiAgICBjc3NWYXJpYWJsZVVybCQ6IE9ic2VydmFibGU8U2FmZVJlc291cmNlVXJsIHwgbnVsbD47XHJcbiAgICBjc3NDdXN0b21VcmwkOiBPYnNlcnZhYmxlPFNhZmVSZXNvdXJjZVVybCB8IG51bGw+O1xyXG4gICAgY3VsdHVyZXM6IFJlY29yZDxzdHJpbmcsIGFueT47XHJcbiAgICBub3RpZmljYXRpb25zVW5yZWFkQ291bnQkOiBPYnNlcnZhYmxlPG51bWJlcj47XHJcbiAgICBub3RpZmNhdGlvbkxvYWRlZCA9IGZhbHNlO1xyXG4gICAgbm90aWZpYXRpb25Db3VudExvYWRlZCQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XHJcbiAgICBib2R5Q2xpY2sgPSAnOyQoXCJib2R5XCIpLmNsaWNrKCknO1xyXG4gICAgaXNNb2JpbGUgPSBnZXREZXZpY2VJc01vYmlsZSgpO1xyXG4gICAgaXNEZXNrdG9wID0gZ2V0RGV2aWNlSXNEZXNrdG9wKCk7XHJcbiAgICBpc1RhYmxldCA9IGdldERldmljZUlzVGFibGV0KCk7XHJcbiAgICBsb2dpblJvdXRlckxpbmskOiBPYnNlcnZhYmxlPHN0cmluZz47XHJcbiAgICBpc1NlcnZpY2VEZXNrID0gZmFsc2U7XHJcbiAgICBpc09wZW5RdWlja0FjY2VzcyA9IGZhbHNlO1xyXG4gICAgdXNlclByb2ZpbGVJbWFnZVVybCQ6IE9ic2VydmFibGU8c3RyaW5nIHwgbnVsbD47XHJcbiAgICBwcml2YXRlIF9yb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcclxuICAgIHByaXZhdGUgX3JlbmRlcmVyMiA9IGluamVjdChSZW5kZXJlcjIpO1xyXG4gICAgcHJpdmF0ZSBfZWwgPSBpbmplY3QoRWxlbWVudFJlZik7XHJcbiAgICBnZXQgcmVwSWRQcm9maWxlSW1hZ2UoKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zaGVsbGJhckRhdGE/LlByb2ZpbGVJbWFnZVJlcG9ydD8uSWQ7XHJcbiAgICB9XHJcbiAgICBnZXQgbm90aWZpY2F0aW9uUmVwb3J0KCk6IE1ldGFvYmplY3REYXRhTW9kZWwge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNoZWxsYmFyRGF0YT8uTm90aWZpY2F0aW9uUmVwb3J0O1xyXG4gICAgfVxyXG4gICAgZ2V0IHN1YnRpdGxlKCk6IHN0cmluZyB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnNoZWxsYmFyRGF0YSkge1xyXG4gICAgICAgICAgICByZXR1cm4gJyc7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLl9wb3J0YWxTZXJ2aWNlLmRldmljZVNpemUgPT09ICdzJyAmJiB0aGlzLnNoZWxsYmFyRGF0YS5Nb2JpbGVTdWJ0aXRsZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zaGVsbGJhckRhdGEuTW9iaWxlU3VidGl0bGVcclxuICAgICAgICAgICAgICAgID8gYCR7dGhpcy5zaGVsbGJhckRhdGEuTW9iaWxlU3VidGl0bGV9ICR7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlb2YgdGhpcy5zaGVsbGJhckRhdGE/LmNhbGNTdWJ0aXRsZSA9PT0gJ3N0cmluZycgPyB0aGlzLnNoZWxsYmFyRGF0YS5jYWxjU3VidGl0bGUgOiAnJ1xyXG4gICAgICAgICAgICAgICAgICB9YFxyXG4gICAgICAgICAgICAgICAgOiAnJztcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2hlbGxiYXJEYXRhLlN1YnRpdGxlXHJcbiAgICAgICAgICAgID8gYCR7dGhpcy5zaGVsbGJhckRhdGE/LlN1YnRpdGxlfSAke1xyXG4gICAgICAgICAgICAgICAgICB0eXBlb2YgdGhpcy5zaGVsbGJhckRhdGE/LmNhbGNTdWJ0aXRsZSA9PT0gJ3N0cmluZycgPyB0aGlzLnNoZWxsYmFyRGF0YS5jYWxjU3VidGl0bGUgOiAnJ1xyXG4gICAgICAgICAgICAgIH1gXHJcbiAgICAgICAgICAgIDogJyc7XHJcbiAgICB9XHJcbiAgICBnZXQgbG9nbygpOiB7IEZpbGVJZDogc3RyaW5nIH0ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNoZWxsYmFyRGF0YT8uTG9nbztcclxuICAgIH1cclxuICAgIGdldCBjc3NTdHlsZXMoKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zaGVsbGJhckRhdGE/LkNzc1N0eWxlcztcclxuICAgIH1cclxuICAgIGdldCBhY3Rpb25zKCk6IEFycmF5PE1ldGFvYmplY3REYXRhTW9kZWw+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXR0aW5ncz8uSGlkZVVzZXJNZW51ID8gW10gOiB0aGlzLnNoZWxsYmFyRGF0YT8uQWN0aW9uSXRlbXM/Lk1vRGF0YUxpc3QgPz8gW107XHJcbiAgICB9XHJcbiAgICBnZXQgc2lkZWJhclNldHRpbmdzKCk6IG51bGwgfCBhbnkge1xyXG4gICAgICAgIGlmICghdGhpcy5zaGVsbGJhckRhdGE/LlNpZGViYXJSZXBvcnQ/LklkKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBSZWxhdGVkUmVwb3J0OiB7IElkOiB0aGlzLnNoZWxsYmFyRGF0YT8uU2lkZWJhclJlcG9ydD8uSWQsICRDYXB0aW9uOiAnJyB9LFxyXG4gICAgICAgICAgICBSb3dDbGljazogJycsXHJcbiAgICAgICAgICAgIERhdGFPbmx5OiBmYWxzZVxyXG4gICAgICAgIH07XHJcbiAgICB9XHJcbiAgICBnZXQgdXNlck1lbnUoKTogeyB0ZXh0OiBzdHJpbmc7IGNhbGxiYWNrOiAoKSA9PiB2b2lkIH1bXSB7XHJcbiAgICAgICAgY29uc3QgbW9EYXRhTGlzdCA9IEJhcnNhQXBpLkNvbW1vbi5VdGlsLlRyeUdldFZhbHVlKHRoaXMuc2hlbGxiYXJEYXRhLCAnVXNlck1lbnVJdGVtcy5Nb0RhdGFMaXN0Jyk7XHJcbiAgICAgICAgY29uc3QgaXRlbXMgPSBtb0RhdGFMaXN0ID8gWy4uLm1vRGF0YUxpc3RdIDogW107XHJcbiAgICAgICAgaWYgKCFpdGVtcy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgcmV0dXJuIFtdO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpdGVtcy5mb3JFYWNoKChjKSA9PiB7XHJcbiAgICAgICAgICAgIGMudGV4dCA9IHRoaXMuX2JiYlRyYW5zbGF0ZVBpcGUudHJhbnNmb3JtKGMudGV4dCk7XHJcbiAgICAgICAgICAgIGMuY2FsbGJhY2sgPSBuZXcgRnVuY3Rpb24oYy5Db2RlICsgdGhpcy5ib2R5Q2xpY2spO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGlmICghdGhpcy5Jc1VzZXJBbm9ueW1vdXMgJiYgdGhpcy5Jc1VzZXJMb2dnZWRJbikge1xyXG4gICAgICAgICAgICBpdGVtcy5zcGxpY2UoMCwgMCwgeyBJZDogJy0xJywgJENhcHRpb246ICcnLCB0ZXh0OiBCYXJzYUFwaS5Mb2dpbkZvcm1EYXRhLlVzZXJEaXNwbGF5TmFtZSB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2V0dGluZ3M/LkhpZGVVc2VyTWVudSA/IFtdIDogKGl0ZW1zIGFzIGFueSk7XHJcbiAgICB9XHJcbiAgICBnZXQgcHJvZHVjdFN3aXRjaGVyKCk6IFByb2R1Y3RTd2l0Y2hJdGVtW10ge1xyXG4gICAgICAgIHJldHVybiAodGhpcy5zaGVsbGJhckRhdGE/LlByb2R1Y3RTd2l0Y2hJdGVtcz8uTW9EYXRhTGlzdCA/PyBbXSkgYXMgdW5rbm93biBhcyBQcm9kdWN0U3dpdGNoSXRlbVtdO1xyXG4gICAgfVxyXG4gICAgZ2V0IG11bHRpTGFuZ3VhZ2VzKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNoZWxsYmFyRGF0YT8uTXVsdGlMYW5ndWFnZXM7XHJcbiAgICB9XHJcbiAgICBnZXQgcHJvZHVjdE1lbnVJdGVtcygpOiBTaGVsbGJhck1lbnVJdGVtW10ge1xyXG4gICAgICAgIGNvbnN0IGl0ZW1zID0gdGhpcy5zaGVsbGJhckRhdGE/LlByb2R1Y3RNZW51SXRlbXM/Lk1vRGF0YUxpc3QgPz8gW107XHJcbiAgICAgICAgaXRlbXMuZm9yRWFjaCgoYykgPT4gKGMuY2FsbGJhY2sgPSBuZXcgRnVuY3Rpb24oYy5Db2RlICsgdGhpcy5ib2R5Q2xpY2spKSk7XHJcbiAgICAgICAgcmV0dXJuIGl0ZW1zIGFzIHVua25vd24gYXMgU2hlbGxiYXJNZW51SXRlbVtdO1xyXG4gICAgfVxyXG4gICAgZ2V0IElzVXNlckxvZ2dlZEluKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiBCYXJzYUFwaS5Mb2dpbkZvcm1EYXRhLklzVXNlckxvZ2dlZEluO1xyXG4gICAgfVxyXG4gICAgZ2V0IElzVXNlckFub255bW91cygpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gQmFyc2FBcGkuTG9naW5Gb3JtRGF0YS5Jc0Fub255bW91cztcclxuICAgIH1cclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcml2YXRlIF9iYmJUcmFuc2xhdGVQaXBlOiBCYmJUcmFuc2xhdGVQaXBlLFxyXG4gICAgICAgIHByaXZhdGUgX3BvcnRhbFNlcnZpY2U6IFBvcnRhbFNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBfYnJlYWRDcnVtYlNlcnZpY2U6IEJyZWFkY3J1bWJTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgX3RpbGVzU2VydmljZTogVGlsZXNTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgX2NkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICAgICAgcHJpdmF0ZSBfZG9tU2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXHJcbiAgICAgICAgcHJpdmF0ZSBfbm90aWZpY2F0aW9uU2VydmljZTogTm90aWZpY2F0aW9uU2VydmljZSxcclxuICAgICAgICBASW5qZWN0KEFQUF9WRVJTSU9OKSBwdWJsaWMgYXBwVmVyc2lvbjogc3RyaW5nXHJcbiAgICApIHtcclxuICAgICAgICBzdXBlcigpO1xyXG5cclxuICAgICAgICB0aGlzLnVzZXJMb2dnZWRJbiQgPSB0aGlzLl9wb3J0YWxTZXJ2aWNlLnVzZXJMb2dnZWRJbiQ7XHJcbiAgICAgICAgdGhpcy5ub3RpZmlhdGlvbkNvdW50TG9hZGVkJCA9IHRoaXMuX25vdGlmaWNhdGlvblNlcnZpY2Uubm90aWZpY2F0aW9uQ291bnRMb2FkZWQkO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XHJcblxyXG4gICAgICAgIHRoaXMuaXNTZXJ2aWNlRGVzayA9IEJhcnNhQXBpLkxvZ2luRm9ybURhdGEuSXNTZXJ2aWNlRGVzaztcclxuXHJcbiAgICAgICAgdGhpcy5jdWx0dXJlcyA9IEJhcnNhQXBpLkxvZ2luRm9ybURhdGEuQ3VsdHVyZXM7XHJcbiAgICAgICAgdGhpcy5jc3NVcmwkID0gdGhpcy5fcG9ydGFsU2VydmljZS5jc3NVcmwkO1xyXG4gICAgICAgIHRoaXMuY3NzVmFyaWFibGVVcmwkID0gdGhpcy5fcG9ydGFsU2VydmljZS5jc3NWYXJpYWJsZVVybCQ7XHJcbiAgICAgICAgdGhpcy5jc3NDdXN0b21VcmwkID0gdGhpcy5fcG9ydGFsU2VydmljZS5jc3NDdXN0b21VcmwkO1xyXG4gICAgICAgIHRoaXMubG9naW5Sb3V0ZXJMaW5rJCA9IHRoaXMuX3BvcnRhbFNlcnZpY2UubG9naW5Sb3V0ZSQ7XHJcbiAgICAgICAgdGhpcy5ub3RpZmljYXRpb25zVW5yZWFkQ291bnQkID0gdGhpcy5fbm90aWZpY2F0aW9uU2VydmljZS5ub3RpZmljYXRpb25VbnJlYWRDb3VudCQ7XHJcblxyXG4gICAgICAgIEJhcnNhQXBpLkJ3LlNldFVzZXJQb3J0YWxTZXR0aW5ncyA9ICh1c2VyUG9ydGFsU2V0dGluZ3M6IE1ldGFvYmplY3REYXRhTW9kZWwpOiB2b2lkID0+IHtcclxuICAgICAgICAgICAgdGhpcy5fcG9ydGFsU2VydmljZS5zZXRVc2VyUG9ydGFsU2V0dGluZ3ModXNlclBvcnRhbFNldHRpbmdzKTtcclxuICAgICAgICB9O1xyXG4gICAgICAgIEJhcnNhQXBpLkJ3LlNldFNoZWxsYmFyU3VidGl0bGUgPSAoY2FsY1N1YnRpdGxlOiBzdHJpbmcpOiB2b2lkID0+IHtcclxuICAgICAgICAgICAgdGhpcy5zaGVsbGJhckRhdGEuY2FsY1N1YnRpdGxlID0gY2FsY1N1YnRpdGxlO1xyXG4gICAgICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgdGhpcy5kZXZpY2VTaXplJCA9IHRoaXMuX3BvcnRhbFNlcnZpY2UuZGV2aWNlU2l6ZSQucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpO1xyXG5cclxuICAgICAgICB0aGlzLl9icmVhZENydW1iU2VydmljZS5icmVhZGNydW1icyQucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpLnN1YnNjcmliZSgoYnJlYWRDcnVtYnMpID0+IHtcclxuICAgICAgICAgICAgaWYgKGJyZWFkQ3J1bWJzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgIHRoaXMucHJvZHVjdE1lbnVDb250cm9sID0gYnJlYWRDcnVtYnNbYnJlYWRDcnVtYnMubGVuZ3RoIC0gMV0ubGFiZWw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLnVzZXJQcm9maWxlSW1hZ2VVcmwkID0gdGhpcy5fdGlsZXNTZXJ2aWNlLnVzZXJQcm9maWxlSW1hZ2VVcmwkO1xyXG4gICAgICAgIHRoaXMuX3RpbGVzU2VydmljZS5zaGVsbGJhciQucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpLnN1YnNjcmliZSgobW8pID0+IHtcclxuICAgICAgICAgICAgdGhpcy5zaGVsbGJhckRhdGEgPSBtbyBhcyBTaGVsbGJhclNldHRpbmc7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLklzVXNlckxvZ2dlZEluKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl90aWxlc1NlcnZpY2UubG9hZFVzZXJQcm9maWxlSW1hZ2UodGhpcy5yZXBJZFByb2ZpbGVJbWFnZSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8vIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIGZvcmtKb2luKFtvZih0aGlzLnByb2R1Y3RNZW51SXRlbXMpLCBvZihbXSldKSAvLyB0byBhcHBlbmQgdXNlciBkZWZpbmVkXHJcbiAgICAgICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCksXHJcbiAgICAgICAgICAgICAgICAgICAgbWFwKChbczEsIHMyXSkgPT4gWy4uLnMxLCAuLi5zMl0pXHJcbiAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChjKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9kdWN0TWVudUl0ZW1zMSA9IGM7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGlmICh0aGlzLnNldHRpbmdzPy5BbGxvd0Fub255bW91cykge1xyXG4gICAgICAgICAgICB0aGlzLl90aWxlc1NlcnZpY2UubG9hZFNoZWxsYmFyKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuX3BvcnRhbFNlcnZpY2UudXNlckxvZ2dlZEluJC5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSkuc3Vic2NyaWJlKChsb2dnZWRJbikgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIWxvZ2dlZEluKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5fdGlsZXNTZXJ2aWNlLmxvYWRTaGVsbGJhcigpO1xyXG4gICAgICAgICAgICB0aGlzLl9ub3RpZmljYXRpb25TZXJ2aWNlLkxvYWRVbnJlYWROb3RpZmljYXRpb25Db3VudCgpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuX3JvdXRlci5ldmVudHMuc3Vic2NyaWJlKChldmVudCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICAoZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kICYmIGV2ZW50IGluc3RhbmNlb2YgUm91dGVyRXZlbnQpIHx8XHJcbiAgICAgICAgICAgICAgICAoZXZlbnQgYXMgYW55KS5yb3V0ZXJFdmVudCBpbnN0YW5jZW9mIFJvdXRlckV2ZW50XHJcbiAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgeDogc3RyaW5nID0gKGV2ZW50IGFzIGFueSkudXJsIHx8IChldmVudCBhcyBhbnkpLnJvdXRlckV2ZW50Py51cmw7XHJcbiAgICAgICAgICAgICAgICB4ICE9PSAnLycgJiYgIXguZW5kc1dpdGgoJy9ob21lJykgPyB0aGlzLl9hZGRDbGFzcygnbm8taG9tZS1wYWdlJykgOiB0aGlzLl9yZW1vdmVDbGFzcygnbm8taG9tZS1wYWdlJyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBvbkN1bHR1cmVDaGFuZ2UoY3VsdHVyZSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX2NoYW5nZUN1bHR1cmUoY3VsdHVyZSk7XHJcbiAgICB9XHJcbiAgICBvblNob3dOb3RpZmljYXRpb24oZTogeyB0YWc6IHN0cmluZzsgbW86IE1ldGFvYmplY3REYXRhTW9kZWw7IG5hbWE6IHN0cmluZyB9KTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5pc09wZW5Ob3RpZmljYXRvaW4gPSBmYWxzZTtcclxuICAgICAgICB0aGlzLl9ub3RpZmljYXRpb25TZXJ2aWNlLlNob3dOb3RpZmljYXRpb25SZWxhdGVkTW8oZSk7XHJcbiAgICB9XHJcbiAgICBvbk5vdGlmaWNhdGlvbkFjdGlvbihlOiB7IGl0ZW06IE5vdGlmaWNhdGlvbkl0ZW07IGJ0bjogTm90aWZpY2F0aW9uQWN0aW9uIH0pOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9wb3J0YWxTZXJ2aWNlLkV4ZWN1dGVOb3RpZmljYXRpb25BY3Rpb24oZS5pdGVtLlRhZywgZS5idG4uVGl0bGUpO1xyXG4gICAgfVxyXG5cclxuICAgIG9uT3Blbk5vdGlmaWNhdGlvbiA9ICgpOiB2b2lkID0+IHtcclxuICAgICAgICB0aGlzLmlzT3Blbk5vdGlmaWNhdG9pbiA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5faGFuZGxlT3Blbk5vdGlmaWNhdGlvblBhbmVsKCk7XHJcbiAgICB9O1xyXG5cclxuICAgIG9uQ3VsdHVyZUNoYW5nZWQgPSAoY3VsdHVyZTogc3RyaW5nKTogdm9pZCA9PiB7XHJcbiAgICAgICAgdGhpcy5fY2hhbmdlQ3VsdHVyZShjdWx0dXJlKTtcclxuICAgIH07XHJcbiAgICBvbk5vdGlmaWNhdGlvbldvcmtmbG93Q2hvaWNlU3VjY2VzcyhyZXN1bHQpOiB2b2lkIHt9XHJcbiAgICBvbk5vdGlmaWNhdGlvbldvcmtmbG93Q2hvaWNlRmFpbGVkKGVycik6IHZvaWQge31cclxuXHJcbiAgICBvbkhhbmRsZU9wZW5Ob3RpZmljYXRpb25QYW5lbCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9oYW5kbGVPcGVuTm90aWZpY2F0aW9uUGFuZWwoKTtcclxuICAgIH1cclxuICAgIHByaXZhdGUgX2FkZENsYXNzKGNsYXNzTmFtZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fcmVuZGVyZXIyLmFkZENsYXNzKHRoaXMuX2VsLm5hdGl2ZUVsZW1lbnQsIGNsYXNzTmFtZSk7XHJcbiAgICB9XHJcbiAgICBwcml2YXRlIF9yZW1vdmVDbGFzcyhjbGFzc05hbWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX3JlbmRlcmVyMi5yZW1vdmVDbGFzcyh0aGlzLl9lbC5uYXRpdmVFbGVtZW50LCBjbGFzc05hbWUpO1xyXG4gICAgfVxyXG4gICAgcHJpdmF0ZSBfaGFuZGxlT3Blbk5vdGlmaWNhdGlvblBhbmVsKCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLm5vdGlmY2F0aW9uTG9hZGVkKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5ub3RpZmNhdGlvbkxvYWRlZCA9IHRydWU7XHJcbiAgICAgICAgLy8gdGhpcy5fbm90aWZpY2F0aW9uU2VydmljZS5sb2FkTm90aWZpY2F0aW9ucygpO1xyXG4gICAgfVxyXG4gICAgcHJpdmF0ZSBfbWFwTm90aWZpY2F0aW9ucyhub3RpZmljYXRpb25zKTogTm90aWZpY2F0aW9uSXRlbVtdIHtcclxuICAgICAgICByZXR1cm4gbm90aWZpY2F0aW9ucy5tYXAoKG5vdGlmaWNhdGlvbikgPT4gKHtcclxuICAgICAgICAgICAgLi4ubm90aWZpY2F0aW9uLFxyXG4gICAgICAgICAgICBjb250ZW50U2FmZUh0bWw6IG5vdGlmaWNhdGlvbi5Db250ZW50XHJcbiAgICAgICAgICAgICAgICA/IHRoaXMuX2RvbVNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChub3RpZmljYXRpb24uQ29udGVudClcclxuICAgICAgICAgICAgICAgIDogJydcclxuICAgICAgICB9KSk7XHJcbiAgICB9XHJcbiAgICBwcml2YXRlIF9jaGFuZ2VDdWx0dXJlKGN1bHR1cmU6IHN0cmluZyAvKiBjdWx0dXJlIHNhbXBsZSA6RW5nbGlzaCAqLyk6IHZvaWQge1xyXG4gICAgICAgIEJhcnNhQXBpLkJ3LlNldEN1bHR1cmVCeURpc3BsYXlOYW1lKGN1bHR1cmUpO1xyXG4gICAgICAgIEJhcnNhQXBpLkJ3Lk5hdmlnYXRlVG8oJy8nKTtcclxuICAgIH1cclxufVxyXG4iLCJAaWYgKHVzZXJMb2dnZWRJbiQgfCBhc3luYzsgYXMgdXNlcmxvZ2dlbmQpIHsgQGlmIChub3RpZmljYXRpb25zVW5yZWFkQ291bnQkIHwgYXN5bmM7IGFzIG5vdGlmaWNhdGlvbnNVbnJlYWRDb3VudCkgeyBAaWZcclxuKGRldmljZVNpemUkIHwgYXN5bmM7IGFzIGRldmljZVNpemUpIHsgQGlmIChzaGVsbGJhckRhdGEpIHtcclxuPGJ0LWJhcnNhLXNoZWxsYmFyXHJcbiAgICBbY2xhc3Muc2VydmljZS1kZXNrXT1cImlzU2VydmljZURlc2tcIlxyXG4gICAgW25vdGlmaWNhdGlvblJlcG9ydF09XCJub3RpZmljYXRpb25SZXBvcnRcIlxyXG4gICAgW2Nzc1VybF09XCJjc3NVcmwkIHwgYXN5bmNcIlxyXG4gICAgW2Nzc1ZhcmlhYmxlVXJsXT1cImNzc1ZhcmlhYmxlVXJsJCB8IGFzeW5jXCJcclxuICAgIFt1c2VyUHJvZmlsZUltYWdlVXJsXT1cInVzZXJQcm9maWxlSW1hZ2VVcmwkIHwgYXN5bmNcIlxyXG4gICAgW2Nzc0N1c3RvbVVybF09XCJjc3NDdXN0b21VcmwkIHwgYXN5bmNcIlxyXG4gICAgW3VzZXJMb2dnZWRJbl09XCJ0cnVlXCJcclxuICAgIFtkZXZpY2VTaXplXT1cImRldmljZVNpemVcIlxyXG4gICAgW3NoZWxsYmFyRGF0YV09XCJzaGVsbGJhckRhdGFcIlxyXG4gICAgW2Nzc1N0eWxlXT1cImNzc1N0eWxlc1wiXHJcbiAgICBbcHJvZHVjdE1lbnVDb250cm9sXT1cInByb2R1Y3RNZW51Q29udHJvbFwiXHJcbiAgICBbc2V0dGluZ3NdPVwic2V0dGluZ3NcIlxyXG4gICAgW2lzTW9iaWxlXT1cImlzTW9iaWxlXCJcclxuICAgIFtpc1RhYmxldF09XCJpc1RhYmxldFwiXHJcbiAgICBbaXNEZXNrdG9wXT1cImlzRGVza3RvcFwiXHJcbiAgICBbbXVsdGlMYW5ndWFnZXNdPVwibXVsdGlMYW5ndWFnZXNcIlxyXG4gICAgW25vdGlmaWNhdGlvbnNVbnJlYWRDb3VudF09XCJub3RpZmljYXRpb25zVW5yZWFkQ291bnQgPiAwID8gbm90aWZpY2F0aW9uc1VucmVhZENvdW50IDogdW5kZWZpbmVkXCJcclxuICAgIFtjdWx0dXJlc109XCJjdWx0dXJlc1wiXHJcbiAgICBbbG9nb109XCJsb2dvXCJcclxuICAgIFthY3Rpb25zXT1cImFjdGlvbnNcIlxyXG4gICAgW3VzZXJNZW51XT1cInVzZXJNZW51XCJcclxuICAgIFtwcm9kdWN0U3dpdGNoZXJdPVwicHJvZHVjdFN3aXRjaGVyXCJcclxuICAgIFtzdWJ0aXRsZV09XCJzdWJ0aXRsZVwiXHJcbiAgICBbaXNTZXJ2aWNlRGVza109XCJpc1NlcnZpY2VEZXNrXCJcclxuICAgIFtzaWRlTWVudVRlbXBsYXRlXT1cInNpZGViYXJTZXR0aW5ncyA/IFF1aWNrQWNjZXNzVGVtcGxhdGUgOiBudWxsXCJcclxuICAgIFtwcm9kdWN0TWVudUl0ZW1zMV09XCJwcm9kdWN0TWVudUl0ZW1zMVwiXHJcbiAgICBbaXNPcGVuUXVpY2tBY2Nlc3NdPVwiaXNPcGVuUXVpY2tBY2Nlc3NcIlxyXG4gICAgKGlzT3BlblF1aWNrQWNjZXNzQ2hhbmdlZCk9XCJpc09wZW5RdWlja0FjY2VzcyA9ICRldmVudFwiXHJcbiAgICAoY3VsdHVyZUNoYW5nZWQpPVwib25DdWx0dXJlQ2hhbmdlZCgkZXZlbnQpXCJcclxuICAgIChub3RpZmlhdGlvbkFjdGlvbkNsaWNrKT1cIm9uTm90aWZpY2F0aW9uQWN0aW9uKCRldmVudClcIlxyXG4gICAgKG9wZW5Ob3RpZmljYXRpb25QYW5lbCk9XCJvbkhhbmRsZU9wZW5Ob3RpZmljYXRpb25QYW5lbCgpXCJcclxuPlxyXG48L2J0LWJhcnNhLXNoZWxsYmFyPlxyXG59IH0gfSB9IEBlbHNleyBAaWYgKGlzU2VydmljZURlc2spIHtcclxuPGJ0LWJhcnNhLXNoZWxsYmFyXHJcbiAgICBbY2xhc3Muc2VydmljZS1kZXNrXT1cImlzU2VydmljZURlc2tcIlxyXG4gICAgW25vdGlmaWNhdGlvblJlcG9ydF09XCJub3RpZmljYXRpb25SZXBvcnRcIlxyXG4gICAgW2Nzc1VybF09XCInJ1wiXHJcbiAgICBbY3NzU3R5bGVdPVwiY3NzU3R5bGVzXCJcclxuICAgIFtjc3NWYXJpYWJsZVVybF09XCInJ1wiXHJcbiAgICBbY3NzQ3VzdG9tVXJdPVwiJydcIlxyXG4gICAgW3VzZXJMb2dnZWRJbl09XCJmYWxzZVwiXHJcbiAgICBbbXVsdGlMYW5ndWFnZXNdPVwibXVsdGlMYW5ndWFnZXNcIlxyXG4gICAgW3VzZXJNZW51XT1cInVzZXJNZW51XCJcclxuICAgIFtsb2dvXT1cImxvZ29cIlxyXG4gICAgW3Byb2R1Y3RNZW51SXRlbXMxXT1cInByb2R1Y3RNZW51SXRlbXMxXCJcclxuICAgIFtkZXZpY2VTaXplXT1cIihkZXZpY2VTaXplJCB8IGFzeW5jKSEhXCJcclxuICAgIFtzaGVsbGJhckRhdGFdPVwic2hlbGxiYXJEYXRhXCJcclxuICAgIFtjdWx0dXJlc109XCJjdWx0dXJlc1wiXHJcbiAgICBbbG9nb109XCJsb2dvXCJcclxuICAgIFtpc01vYmlsZV09XCJpc01vYmlsZVwiXHJcbiAgICBbaXNUYWJsZXRdPVwiaXNUYWJsZXRcIlxyXG4gICAgW2lzRGVza3RvcF09XCJpc0Rlc2t0b3BcIlxyXG4gICAgW2lzU2VydmljZURlc2tdPVwiaXNTZXJ2aWNlRGVza1wiXHJcbiAgICBbYWN0aW9uc109XCJhY3Rpb25zXCJcclxuICAgIFt1c2VyTWVudV09XCJ1c2VyTWVudVwiXHJcbiAgICBbcHJvZHVjdE1lbnVDb250cm9sXT1cInByb2R1Y3RNZW51Q29udHJvbFwiXHJcbiAgICBbcHJvZHVjdFN3aXRjaGVyXT1cInByb2R1Y3RTd2l0Y2hlclwiXHJcbiAgICBbc3VidGl0bGVdPVwic3VidGl0bGVcIlxyXG4gICAgW3NldHRpbmdzXT1cInNldHRpbmdzXCJcclxuICAgIFtoaWRlU2hlbGxiYXJBY3Rpb25zXT1cInRydWVcIlxyXG4gICAgW3Nob3dFeHRyYUJ1dHRvbl09XCJ0cnVlXCJcclxuICAgIFtjdWx0dXJlc109XCJjdWx0dXJlc1wiXHJcbiAgICBbcHJvZHVjdE1lbnVJdGVtczFdPVwicHJvZHVjdE1lbnVJdGVtczFcIlxyXG4gICAgKGN1bHR1cmVDaGFuZ2VkKT1cIm9uQ3VsdHVyZUNoYW5nZWQoJGV2ZW50KVwiXHJcbj5cclxuICAgIEBmb3IoYnRuIG9mIHVzZXJNZW51O3RyYWNrIGJ0bil7XHJcbiAgICA8YnV0dG9uXHJcbiAgICAgICAgY2xhc3M9XCJleHRyYV9idG5cIlxyXG4gICAgICAgIGZkLWJ1dHRvblxyXG4gICAgICAgIFtsYWJlbF09XCJidG4udGV4dFwiXHJcbiAgICAgICAgW2dseXBoXT1cImJ0bi50ZXh0ID09PSAoJ0xvZ2luJyB8IGJiYlRyYW5zbGF0ZSkgPyAncGVyc29uLXBsYWNlaG9sZGVyJyA6IG51bGxcIlxyXG4gICAgICAgIGZkVHlwZT1cImVtcGhhc2l6ZWRcIlxyXG4gICAgICAgIChjbGljayk9XCJidG4uY2FsbGJhY2soKVwiXHJcbiAgICA+PC9idXR0b24+XHJcbiAgICB9XHJcbjwvYnQtYmFyc2Etc2hlbGxiYXI+XHJcbn0gfVxyXG48bmctdGVtcGxhdGUgI1F1aWNrQWNjZXNzVGVtcGxhdGU+XHJcbiAgICA8Ym5yYy1yZXBvcnQtY29udGFpbmVyICpuZ0lmPVwic2lkZWJhclNldHRpbmdzXCIgW3NldHRpbmdzXT1cInNpZGViYXJTZXR0aW5nc1wiPiA8L2JucmMtcmVwb3J0LWNvbnRhaW5lcj5cclxuICAgIDwhLS0gPGJ0LXBvcG92ZXItYXBwLWZpbmRlciAoY2xvc2VNZW51KT1cImlzT3BlblF1aWNrQWNjZXNzID0gZmFsc2VcIj48L2J0LXBvcG92ZXItYXBwLWZpbmRlcj4gLS0+XHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==
|
|
234
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hlbGxiYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2EtdGlsZXMvc3JjL2xpYi9zaGVsbGJhci9zaGVsbGJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS10aWxlcy9zcmMvbGliL3NoZWxsYmFyL3NoZWxsYmFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULE1BQU0sRUFDTixNQUFNLEVBRU4sU0FBUyxFQUNULFdBQVcsRUFDWCxTQUFTLEVBQ1QsVUFBVSxFQUNiLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxRQUFRLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2hELE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEQsT0FBTyxFQUNILGlCQUFpQixFQUtwQixNQUFNLHVCQUF1QixDQUFDO0FBRy9CLE9BQU8sRUFDSCxhQUFhLEVBQ2IsUUFBUSxFQU1SLFdBQVcsRUFNWCxpQkFBaUIsRUFDakIsa0JBQWtCLEVBQ2xCLGlCQUFpQixFQUNwQixNQUFNLHNCQUFzQixDQUFDO0FBRzlCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7Ozs7OztBQXNCckUsTUFBTSxPQUFPLGlCQUFrQixTQUFRLGFBQWE7SUFrQ2hELElBQUksaUJBQWlCO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFlBQVksRUFBRSxrQkFBa0IsRUFBRSxFQUFFLENBQUM7SUFDckQsQ0FBQztJQUNELElBQUksa0JBQWtCO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLFlBQVksRUFBRSxrQkFBa0IsQ0FBQztJQUNqRCxDQUFDO0lBQ0QsSUFBSSxRQUFRO1FBQ1IsSUFBSSxD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QUFhLENBQUMsR0FBRyxDQUFDLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3hDLEdBQUcsWUFBWTtZQUNmLGVBQWUsRUFBRSxZQUFZLENBQUMsT0FBTztnQkFDakMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsdUJBQXVCLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQztnQkFDbEUsQ0FBQyxDQUFDLEVBQUU7U0FDWCxDQUFDLENBQUMsQ0FBQztJQUNSLENBQUM7SUFDTyxjQUFjLENBQUMsT0FBZSxDQUFDLDZCQUE2QjtRQUNoRSxRQUFRLENBQUMsRUFBRSxDQUFDLHVCQUF1QixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzdDLFFBQVEsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7K0dBaFBRLGlCQUFpQiw0T0FxSGQsV0FBVzttR0FySGQsaUJBQWlCLHNHQUNmLGlCQUFpQixnUEFFNEIsV0FBVyxrRUNwRXZFLGszR0FxRkE7OzRGRHBCYSxpQkFBaUI7a0JBUDdCLFNBQVM7K0JBQ0ksYUFBYSxtQkFHTix1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLEtBQUs7OzBCQXVIWixNQUFNOzJCQUFDLFdBQVc7eUNBcEhPLGlCQUFpQjtzQkFBOUMsU0FBUzt1QkFBQyxpQkFBaUI7Z0JBQ3NCLGdCQUFnQjtzQkFBakUsU0FBUzt1QkFBQyxrQkFBa0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBQ3VCLG9CQUFvQjtzQkFBMUYsU0FBUzt1QkFBQyxxQkFBcUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICAgIENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgQ29tcG9uZW50LFxyXG4gICAgaW5qZWN0LFxyXG4gICAgSW5qZWN0LFxyXG4gICAgT25Jbml0LFxyXG4gICAgUmVuZGVyZXIyLFxyXG4gICAgVGVtcGxhdGVSZWYsXHJcbiAgICBWaWV3Q2hpbGQsXHJcbiAgICBFbGVtZW50UmVmXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGZvcmtKb2luLCBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBtYXAsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHtcclxuICAgIENvbWJvYm94Q29tcG9uZW50LFxyXG4gICAgUG9wb3ZlckNvbXBvbmVudCxcclxuICAgIFByb2R1Y3RTd2l0Y2hJdGVtLFxyXG4gICAgU2hlbGxiYXJNZW51SXRlbSxcclxuICAgIFNoZWxsYmFyVXNlclxyXG59IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZSc7XHJcbmltcG9ydCB7IERvbVNhbml0aXplciwgU2FmZVJlc291cmNlVXJsIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XHJcblxyXG5pbXBvcnQge1xyXG4gICAgQmFzZUNvbXBvbmVudCxcclxuICAgIEJhcnNhQXBpLFxyXG4gICAgTWV0YW9iamVjdERhdGFNb2RlbCxcclxuICAgIEZpbGVQaWN0dXJlSW5mb01vZGVsLFxyXG4gICAgTW9Gb3JSZXBvcnRNb2RlbCxcclxuICAgIFBvcnRhbFNlcnZpY2UsXHJcbiAgICBCcmVhZGNydW1iU2VydmljZSxcclxuICAgIEFQUF9WRVJTSU9OLFxyXG4gICAgTm90aWZpY2F0aW9uU2VydmljZSxcclxuICAgIE5vdGlmaWNhdGlvbkl0ZW0sXHJcbiAgICBOb3RpZmljYXRpb25BY3Rpb24sXHJcbiAgICBCYmJUcmFuc2xhdGVQaXBlLFxyXG4gICAgQWJicmV2YXRpb25EZXZpY2VTaXplLFxyXG4gICAgZ2V0RGV2aWNlSXNNb2JpbGUsXHJcbiAgICBnZXREZXZpY2VJc0Rlc2t0b3AsXHJcbiAgICBnZXREZXZpY2VJc1RhYmxldFxyXG59IGZyb20gJ2JhcnNhLW5vdmluLXJheS1jb3JlJztcclxuXHJcbmltcG9ydCB7IFRpbGVzU2VydmljZSB9IGZyb20gJy4uL3RpbGVzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBOYXZpZ2F0aW9uRW5kLCBSb3V0ZXIsIFJvdXRlckV2ZW50IH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuXHJcbmludGVyZmFjZSBTaGVsbGJhclNldHRpbmcgZXh0ZW5kcyBNZXRhb2JqZWN0RGF0YU1vZGVsIHtcclxuICAgIENzc1N0eWxlczogc3RyaW5nO1xyXG4gICAgc3VidGl0bGU6IHN0cmluZztcclxuICAgIGNhbGNTdWJ0aXRsZTogc3RyaW5nO1xyXG4gICAgbG9nbzogRmlsZVBpY3R1cmVJbmZvTW9kZWw7XHJcbiAgICBQcm9kdWN0U3dpdGNoSXRlbXM6IE1vRm9yUmVwb3J0TW9kZWw7XHJcbiAgICBQcm9kdWN0TWVudUl0ZW1zOiBNb0ZvclJlcG9ydE1vZGVsO1xyXG4gICAgVXNlck1lbnVJdGVtczogTW9Gb3JSZXBvcnRNb2RlbDtcclxuICAgIEFjdGlvbkl0ZW1zOiBNb0ZvclJlcG9ydE1vZGVsO1xyXG4gICAgU2lkZWJhclJlcG9ydDogTWV0YW9iamVjdERhdGFNb2RlbDtcclxuICAgIFByb2ZpbGVJbWFnZVJlcG9ydDogTWV0YW9iamVjdERhdGFNb2RlbDtcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2J0LXNoZWxsYmFyJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9zaGVsbGJhci5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9zaGVsbGJhci5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgICBzdGFuZGFsb25lOiBmYWxzZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2hlbGxiYXJDb21wb25lbnQgZXh0ZW5kcyBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICAgIEBWaWV3Q2hpbGQoQ29tYm9ib3hDb21wb25lbnQpIGNvbWJvYm94Q29tcG9uZW50OiBDb21ib2JveENvbXBvbmVudDtcclxuICAgIEBWaWV3Q2hpbGQoJ3BvcG92ZXJDb21wb25lbnQnLCB7IHN0YXRpYzogZmFsc2UgfSkgcG9wb3ZlckNvbXBvbmVudDogUG9wb3ZlckNvbXBvbmVudDtcclxuICAgIEBWaWV3Q2hpbGQoJ25vdGlmaWNhdGlvbnNEaWFsb2cnLCB7IHN0YXRpYzogdHJ1ZSwgcmVhZDogVGVtcGxhdGVSZWYgfSkgX25vdGlmaWNhdGlvbnNEaWFsb2c6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgICBzaGVsbGJhckRhdGE6IFNoZWxsYmFyU2V0dGluZztcclxuICAgIHNldHRpbmdzOiBNZXRhb2JqZWN0RGF0YU1vZGVsO1xyXG4gICAgaXNPcGVuTm90aWZpY2F0b2luID0gZmFsc2U7XHJcbiAgICBkZXZpY2VTaXplJDogT2JzZXJ2YWJsZTxBYmJyZXZhdGlvbkRldmljZVNpemU+O1xyXG4gICAgcHJvZHVjdE1lbnVDb250cm9sOiBzdHJpbmc7XHJcbiAgICB1c2VyOiBTaGVsbGJhclVzZXIgPSB7XHJcbiAgICAgICAgaW5pdGlhbHM6ICdXVycsXHJcbiAgICAgICAgY29sb3JBY2NlbnQ6IDFcclxuICAgIH07XHJcblxyXG4gICAgcHJvZHVjdE1lbnVJdGVtczE6IFNoZWxsYmFyTWVudUl0ZW1bXTtcclxuICAgIHVzZXJMb2dnZWRJbiQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XHJcbiAgICBjc3NVcmwkOiBPYnNlcnZhYmxlPFNhZmVSZXNvdXJjZVVybCB8IG51bGw+O1xyXG4gICAgY3NzVmFyaWFibGVVcmwkOiBPYnNlcnZhYmxlPFNhZmVSZXNvdXJjZVVybCB8IG51bGw+O1xyXG4gICAgY3NzQ3VzdG9tVXJsJDogT2JzZXJ2YWJsZTxTYWZlUmVzb3VyY2VVcmwgfCBudWxsPjtcclxuICAgIGN1bHR1cmVzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xyXG4gICAgbm90aWZpY2F0aW9uc1VucmVhZENvdW50JDogT2JzZXJ2YWJsZTxudW1iZXI+O1xyXG4gICAgbm90aWZjYXRpb25Mb2FkZWQgPSBmYWxzZTtcclxuICAgIG5vdGlmaWF0aW9uQ291bnRMb2FkZWQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xyXG4gICAgYm9keUNsaWNrID0gJzskKFwiYm9keVwiKS5jbGljaygpJztcclxuICAgIGlzTW9iaWxlID0gZ2V0RGV2aWNlSXNNb2JpbGUoKTtcclxuICAgIGlzRGVza3RvcCA9IGdldERldmljZUlzRGVza3RvcCgpO1xyXG4gICAgaXNUYWJsZXQgPSBnZXREZXZpY2VJc1RhYmxldCgpO1xyXG4gICAgbG9naW5Sb3V0ZXJMaW5rJDogT2JzZXJ2YWJsZTxzdHJpbmc+O1xyXG4gICAgaXNTZXJ2aWNlRGVzayA9IGZhbHNlO1xyXG4gICAgaXNPcGVuUXVpY2tBY2Nlc3MgPSBmYWxzZTtcclxuICAgIHVzZXJQcm9maWxlSW1hZ2VVcmwkOiBPYnNlcnZhYmxlPHN0cmluZyB8IG51bGw+O1xyXG4gICAgcHJpdmF0ZSBfcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XHJcbiAgICBwcml2YXRlIF9yZW5kZXJlcjIgPSBpbmplY3QoUmVuZGVyZXIyKTtcclxuICAgIHByaXZhdGUgX2VsID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xyXG4gICAgZ2V0IHJlcElkUHJvZmlsZUltYWdlKCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2hlbGxiYXJEYXRhPy5Qcm9maWxlSW1hZ2VSZXBvcnQ/LklkO1xyXG4gICAgfVxyXG4gICAgZ2V0IG5vdGlmaWNhdGlvblJlcG9ydCgpOiBNZXRhb2JqZWN0RGF0YU1vZGVsIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zaGVsbGJhckRhdGE/Lk5vdGlmaWNhdGlvblJlcG9ydDtcclxuICAgIH1cclxuICAgIGdldCBzdWJ0aXRsZSgpOiBzdHJpbmcge1xyXG4gICAgICAgIGlmICghdGhpcy5zaGVsbGJhckRhdGEpIHtcclxuICAgICAgICAgICAgcmV0dXJuICcnO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5fcG9ydGFsU2VydmljZS5kZXZpY2VTaXplID09PSAncycgJiYgdGhpcy5zaGVsbGJhckRhdGEuTW9iaWxlU3VidGl0bGUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2hlbGxiYXJEYXRhLk1vYmlsZVN1YnRpdGxlXHJcbiAgICAgICAgICAgICAgICA/IGAke3RoaXMuc2hlbGxiYXJEYXRhLk1vYmlsZVN1YnRpdGxlfSAke1xyXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZW9mIHRoaXMuc2hlbGxiYXJEYXRhPy5jYWxjU3VidGl0bGUgPT09ICdzdHJpbmcnID8gdGhpcy5zaGVsbGJhckRhdGEuY2FsY1N1YnRpdGxlIDogJydcclxuICAgICAgICAgICAgICAgICAgfWBcclxuICAgICAgICAgICAgICAgIDogJyc7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzLnNoZWxsYmFyRGF0YS5TdWJ0aXRsZVxyXG4gICAgICAgICAgICA/IGAke3RoaXMuc2hlbGxiYXJEYXRhPy5TdWJ0aXRsZX0gJHtcclxuICAgICAgICAgICAgICAgICAgdHlwZW9mIHRoaXMuc2hlbGxiYXJEYXRhPy5jYWxjU3VidGl0bGUgPT09ICdzdHJpbmcnID8gdGhpcy5zaGVsbGJhckRhdGEuY2FsY1N1YnRpdGxlIDogJydcclxuICAgICAgICAgICAgICB9YFxyXG4gICAgICAgICAgICA6ICcnO1xyXG4gICAgfVxyXG4gICAgZ2V0IGxvZ28oKTogeyBGaWxlSWQ6IHN0cmluZyB9IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zaGVsbGJhckRhdGE/LkxvZ287XHJcbiAgICB9XHJcbiAgICBnZXQgY3NzU3R5bGVzKCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2hlbGxiYXJEYXRhPy5Dc3NTdHlsZXM7XHJcbiAgICB9XHJcbiAgICBnZXQgYWN0aW9ucygpOiBBcnJheTxNZXRhb2JqZWN0RGF0YU1vZGVsPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2V0dGluZ3M/LkhpZGVVc2VyTWVudSA/IFtdIDogdGhpcy5zaGVsbGJhckRhdGE/LkFjdGlvbkl0ZW1zPy5Nb0RhdGFMaXN0ID8/IFtdO1xyXG4gICAgfVxyXG4gICAgZ2V0IHNpZGViYXJTZXR0aW5ncygpOiBudWxsIHwgYW55IHtcclxuICAgICAgICBpZiAoIXRoaXMuc2hlbGxiYXJEYXRhPy5TaWRlYmFyUmVwb3J0Py5JZCkge1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgUmVsYXRlZFJlcG9ydDogeyBJZDogdGhpcy5zaGVsbGJhckRhdGE/LlNpZGViYXJSZXBvcnQ/LklkLCAkQ2FwdGlvbjogJycgfSxcclxuICAgICAgICAgICAgUm93Q2xpY2s6ICcnLFxyXG4gICAgICAgICAgICBEYXRhT25seTogZmFsc2VcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG4gICAgZ2V0IHVzZXJNZW51KCk6IHsgdGV4dDogc3RyaW5nOyBjYWxsYmFjazogKCkgPT4gdm9pZCB9W10ge1xyXG4gICAgICAgIGNvbnN0IG1vRGF0YUxpc3QgPSBCYXJzYUFwaS5Db21tb24uVXRpbC5UcnlHZXRWYWx1ZSh0aGlzLnNoZWxsYmFyRGF0YSwgJ1VzZXJNZW51SXRlbXMuTW9EYXRhTGlzdCcpO1xyXG4gICAgICAgIGNvbnN0IGl0ZW1zID0gbW9EYXRhTGlzdCA/IFsuLi5tb0RhdGFMaXN0XSA6IFtdO1xyXG4gICAgICAgIGlmICghaXRlbXMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBbXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaXRlbXMuZm9yRWFjaCgoYykgPT4ge1xyXG4gICAgICAgICAgICBjLnRleHQgPSB0aGlzLl9iYmJUcmFuc2xhdGVQaXBlLnRyYW5zZm9ybShjLnRleHQpO1xyXG4gICAgICAgICAgICBjLmNhbGxiYWNrID0gbmV3IEZ1bmN0aW9uKGMuQ29kZSArIHRoaXMuYm9keUNsaWNrKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBpZiAoIXRoaXMuSXNVc2VyQW5vbnltb3VzICYmIHRoaXMuSXNVc2VyTG9nZ2VkSW4pIHtcclxuICAgICAgICAgICAgaXRlbXMuc3BsaWNlKDAsIDAsIHsgSWQ6ICctMScsICRDYXB0aW9uOiAnJywgdGV4dDogQmFyc2FBcGkuTG9naW5Gb3JtRGF0YS5Vc2VyRGlzcGxheU5hbWUgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzLnNldHRpbmdzPy5IaWRlVXNlck1lbnUgPyBbXSA6IChpdGVtcyBhcyBhbnkpO1xyXG4gICAgfVxyXG4gICAgZ2V0IHByb2R1Y3RTd2l0Y2hlcigpOiBQcm9kdWN0U3dpdGNoSXRlbVtdIHtcclxuICAgICAgICByZXR1cm4gKHRoaXMuc2hlbGxiYXJEYXRhPy5Qcm9kdWN0U3dpdGNoSXRlbXM/Lk1vRGF0YUxpc3QgPz8gW10pIGFzIHVua25vd24gYXMgUHJvZHVjdFN3aXRjaEl0ZW1bXTtcclxuICAgIH1cclxuICAgIGdldCBtdWx0aUxhbmd1YWdlcygpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zaGVsbGJhckRhdGE/Lk11bHRpTGFuZ3VhZ2VzO1xyXG4gICAgfVxyXG4gICAgZ2V0IHByb2R1Y3RNZW51SXRlbXMoKTogU2hlbGxiYXJNZW51SXRlbVtdIHtcclxuICAgICAgICBjb25zdCBpdGVtcyA9IHRoaXMuc2hlbGxiYXJEYXRhPy5Qcm9kdWN0TWVudUl0ZW1zPy5Nb0RhdGFMaXN0ID8/IFtdO1xyXG4gICAgICAgIGl0ZW1zLmZvckVhY2goKGMpID0+IChjLmNhbGxiYWNrID0gbmV3IEZ1bmN0aW9uKGMuQ29kZSArIHRoaXMuYm9keUNsaWNrKSkpO1xyXG4gICAgICAgIHJldHVybiBpdGVtcyBhcyB1bmtub3duIGFzIFNoZWxsYmFyTWVudUl0ZW1bXTtcclxuICAgIH1cclxuICAgIGdldCBJc1VzZXJMb2dnZWRJbigpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gQmFyc2FBcGkuTG9naW5Gb3JtRGF0YS5Jc1VzZXJMb2dnZWRJbjtcclxuICAgIH1cclxuICAgIGdldCBJc1VzZXJBbm9ueW1vdXMoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIEJhcnNhQXBpLkxvZ2luRm9ybURhdGEuSXNBbm9ueW1vdXM7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJpdmF0ZSBfYmJiVHJhbnNsYXRlUGlwZTogQmJiVHJhbnNsYXRlUGlwZSxcclxuICAgICAgICBwcml2YXRlIF9wb3J0YWxTZXJ2aWNlOiBQb3J0YWxTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgX2JyZWFkQ3J1bWJTZXJ2aWNlOiBCcmVhZGNydW1iU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIF90aWxlc1NlcnZpY2U6IFRpbGVzU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIF9jZHI6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgICAgIHByaXZhdGUgX2RvbVNhbml0aXplcjogRG9tU2FuaXRpemVyLFxyXG4gICAgICAgIHByaXZhdGUgX25vdGlmaWNhdGlvblNlcnZpY2U6IE5vdGlmaWNhdGlvblNlcnZpY2UsXHJcbiAgICAgICAgQEluamVjdChBUFBfVkVSU0lPTikgcHVibGljIGFwcFZlcnNpb246IHN0cmluZ1xyXG4gICAgKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuXHJcbiAgICAgICAgdGhpcy51c2VyTG9nZ2VkSW4kID0gdGhpcy5fcG9ydGFsU2VydmljZS51c2VyTG9nZ2VkSW4kO1xyXG4gICAgICAgIHRoaXMubm90aWZpYXRpb25Db3VudExvYWRlZCQgPSB0aGlzLl9ub3RpZmljYXRpb25TZXJ2aWNlLm5vdGlmaWNhdGlvbkNvdW50TG9hZGVkJDtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xyXG5cclxuICAgICAgICB0aGlzLmlzU2VydmljZURlc2sgPSBCYXJzYUFwaS5Mb2dpbkZvcm1EYXRhLklzU2VydmljZURlc2s7XHJcblxyXG4gICAgICAgIHRoaXMuY3VsdHVyZXMgPSBCYXJzYUFwaS5Mb2dpbkZvcm1EYXRhLkN1bHR1cmVzO1xyXG4gICAgICAgIHRoaXMuY3NzVXJsJCA9IHRoaXMuX3BvcnRhbFNlcnZpY2UuY3NzVXJsJDtcclxuICAgICAgICB0aGlzLmNzc1ZhcmlhYmxlVXJsJCA9IHRoaXMuX3BvcnRhbFNlcnZpY2UuY3NzVmFyaWFibGVVcmwkO1xyXG4gICAgICAgIHRoaXMuY3NzQ3VzdG9tVXJsJCA9IHRoaXMuX3BvcnRhbFNlcnZpY2UuY3NzQ3VzdG9tVXJsJDtcclxuICAgICAgICB0aGlzLmxvZ2luUm91dGVyTGluayQgPSB0aGlzLl9wb3J0YWxTZXJ2aWNlLmxvZ2luUm91dGUkO1xyXG4gICAgICAgIHRoaXMubm90aWZpY2F0aW9uc1VucmVhZENvdW50JCA9IHRoaXMuX25vdGlmaWNhdGlvblNlcnZpY2Uubm90aWZpY2F0aW9uVW5yZWFkQ291bnQkO1xyXG5cclxuICAgICAgICBCYXJzYUFwaS5Cdy5TZXRVc2VyUG9ydGFsU2V0dGluZ3MgPSAodXNlclBvcnRhbFNldHRpbmdzOiBNZXRhb2JqZWN0RGF0YU1vZGVsKTogdm9pZCA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuX3BvcnRhbFNlcnZpY2Uuc2V0VXNlclBvcnRhbFNldHRpbmdzKHVzZXJQb3J0YWxTZXR0aW5ncyk7XHJcbiAgICAgICAgfTtcclxuICAgICAgICBCYXJzYUFwaS5Cdy5TZXRTaGVsbGJhclN1YnRpdGxlID0gKGNhbGNTdWJ0aXRsZTogc3RyaW5nKTogdm9pZCA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuc2hlbGxiYXJEYXRhLmNhbGNTdWJ0aXRsZSA9IGNhbGNTdWJ0aXRsZTtcclxuICAgICAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMuZGV2aWNlU2l6ZSQgPSB0aGlzLl9wb3J0YWxTZXJ2aWNlLmRldmljZVNpemUkLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKTtcclxuXHJcbiAgICAgICAgdGhpcy5fYnJlYWRDcnVtYlNlcnZpY2UuYnJlYWRjcnVtYnMkLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKS5zdWJzY3JpYmUoKGJyZWFkQ3J1bWJzKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChicmVhZENydW1icy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnByb2R1Y3RNZW51Q29udHJvbCA9IGJyZWFkQ3J1bWJzW2JyZWFkQ3J1bWJzLmxlbmd0aCAtIDFdLmxhYmVsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy51c2VyUHJvZmlsZUltYWdlVXJsJCA9IHRoaXMuX3RpbGVzU2VydmljZS51c2VyUHJvZmlsZUltYWdlVXJsJDtcclxuICAgICAgICB0aGlzLl90aWxlc1NlcnZpY2Uuc2hlbGxiYXIkLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKS5zdWJzY3JpYmUoKG1vKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuc2hlbGxiYXJEYXRhID0gbW8gYXMgU2hlbGxiYXJTZXR0aW5nO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5Jc1VzZXJMb2dnZWRJbikge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fdGlsZXNTZXJ2aWNlLmxvYWRVc2VyUHJvZmlsZUltYWdlKHRoaXMucmVwSWRQcm9maWxlSW1hZ2UpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvLyB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICBmb3JrSm9pbihbb2YodGhpcy5wcm9kdWN0TWVudUl0ZW1zKSwgb2YoW10pXSkgLy8gdG8gYXBwZW5kIHVzZXIgZGVmaW5lZFxyXG4gICAgICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpLFxyXG4gICAgICAgICAgICAgICAgICAgIG1hcCgoW3MxLCBzMl0pID0+IFsuLi5zMSwgLi4uczJdKVxyXG4gICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoYykgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJvZHVjdE1lbnVJdGVtczEgPSBjO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBpZiAodGhpcy5zZXR0aW5ncz8uQWxsb3dBbm9ueW1vdXMpIHtcclxuICAgICAgICAgICAgdGhpcy5fdGlsZXNTZXJ2aWNlLmxvYWRTaGVsbGJhcigpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9wb3J0YWxTZXJ2aWNlLnVzZXJMb2dnZWRJbiQucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpLnN1YnNjcmliZSgobG9nZ2VkSW4pID0+IHtcclxuICAgICAgICAgICAgaWYgKCFsb2dnZWRJbikge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuX3RpbGVzU2VydmljZS5sb2FkU2hlbGxiYXIoKTtcclxuICAgICAgICAgICAgdGhpcy5fbm90aWZpY2F0aW9uU2VydmljZS5Mb2FkVW5yZWFkTm90aWZpY2F0aW9uQ291bnQoKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLl9yb3V0ZXIuZXZlbnRzLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcclxuICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICAgKGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCAmJiBldmVudCBpbnN0YW5jZW9mIFJvdXRlckV2ZW50KSB8fFxyXG4gICAgICAgICAgICAgICAgKGV2ZW50IGFzIGFueSkucm91dGVyRXZlbnQgaW5zdGFuY2VvZiBSb3V0ZXJFdmVudFxyXG4gICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHg6IHN0cmluZyA9IChldmVudCBhcyBhbnkpLnVybCB8fCAoZXZlbnQgYXMgYW55KS5yb3V0ZXJFdmVudD8udXJsO1xyXG4gICAgICAgICAgICAgICAgeC5zcGxpdCgnLycpLmxlbmd0aCA+IDIgPyB0aGlzLl9hZGRDbGFzcygnbm8taG9tZS1wYWdlJykgOiB0aGlzLl9yZW1vdmVDbGFzcygnbm8taG9tZS1wYWdlJyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBvbkN1bHR1cmVDaGFuZ2UoY3VsdHVyZSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX2NoYW5nZUN1bHR1cmUoY3VsdHVyZSk7XHJcbiAgICB9XHJcbiAgICBvblNob3dOb3RpZmljYXRpb24oZTogeyB0YWc6IHN0cmluZzsgbW86IE1ldGFvYmplY3REYXRhTW9kZWw7IG5hbWE6IHN0cmluZyB9KTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5pc09wZW5Ob3RpZmljYXRvaW4gPSBmYWxzZTtcclxuICAgICAgICB0aGlzLl9ub3RpZmljYXRpb25TZXJ2aWNlLlNob3dOb3RpZmljYXRpb25SZWxhdGVkTW8oZSk7XHJcbiAgICB9XHJcbiAgICBvbk5vdGlmaWNhdGlvbkFjdGlvbihlOiB7IGl0ZW06IE5vdGlmaWNhdGlvbkl0ZW07IGJ0bjogTm90aWZpY2F0aW9uQWN0aW9uIH0pOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9wb3J0YWxTZXJ2aWNlLkV4ZWN1dGVOb3RpZmljYXRpb25BY3Rpb24oZS5pdGVtLlRhZywgZS5idG4uVGl0bGUpO1xyXG4gICAgfVxyXG5cclxuICAgIG9uT3Blbk5vdGlmaWNhdGlvbiA9ICgpOiB2b2lkID0+IHtcclxuICAgICAgICB0aGlzLmlzT3Blbk5vdGlmaWNhdG9pbiA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5faGFuZGxlT3Blbk5vdGlmaWNhdGlvblBhbmVsKCk7XHJcbiAgICB9O1xyXG5cclxuICAgIG9uQ3VsdHVyZUNoYW5nZWQgPSAoY3VsdHVyZTogc3RyaW5nKTogdm9pZCA9PiB7XHJcbiAgICAgICAgdGhpcy5fY2hhbmdlQ3VsdHVyZShjdWx0dXJlKTtcclxuICAgIH07XHJcbiAgICBvbk5vdGlmaWNhdGlvbldvcmtmbG93Q2hvaWNlU3VjY2VzcyhyZXN1bHQpOiB2b2lkIHt9XHJcbiAgICBvbk5vdGlmaWNhdGlvbldvcmtmbG93Q2hvaWNlRmFpbGVkKGVycik6IHZvaWQge31cclxuXHJcbiAgICBvbkhhbmRsZU9wZW5Ob3RpZmljYXRpb25QYW5lbCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9oYW5kbGVPcGVuTm90aWZpY2F0aW9uUGFuZWwoKTtcclxuICAgIH1cclxuICAgIHByaXZhdGUgX2FkZENsYXNzKGNsYXNzTmFtZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fcmVuZGVyZXIyLmFkZENsYXNzKHRoaXMuX2VsLm5hdGl2ZUVsZW1lbnQsIGNsYXNzTmFtZSk7XHJcbiAgICB9XHJcbiAgICBwcml2YXRlIF9yZW1vdmVDbGFzcyhjbGFzc05hbWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX3JlbmRlcmVyMi5yZW1vdmVDbGFzcyh0aGlzLl9lbC5uYXRpdmVFbGVtZW50LCBjbGFzc05hbWUpO1xyXG4gICAgfVxyXG4gICAgcHJpdmF0ZSBfaGFuZGxlT3Blbk5vdGlmaWNhdGlvblBhbmVsKCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLm5vdGlmY2F0aW9uTG9hZGVkKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5ub3RpZmNhdGlvbkxvYWRlZCA9IHRydWU7XHJcbiAgICAgICAgLy8gdGhpcy5fbm90aWZpY2F0aW9uU2VydmljZS5sb2FkTm90aWZpY2F0aW9ucygpO1xyXG4gICAgfVxyXG4gICAgcHJpdmF0ZSBfbWFwTm90aWZpY2F0aW9ucyhub3RpZmljYXRpb25zKTogTm90aWZpY2F0aW9uSXRlbVtdIHtcclxuICAgICAgICByZXR1cm4gbm90aWZpY2F0aW9ucy5tYXAoKG5vdGlmaWNhdGlvbikgPT4gKHtcclxuICAgICAgICAgICAgLi4ubm90aWZpY2F0aW9uLFxyXG4gICAgICAgICAgICBjb250ZW50U2FmZUh0bWw6IG5vdGlmaWNhdGlvbi5Db250ZW50XHJcbiAgICAgICAgICAgICAgICA/IHRoaXMuX2RvbVNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChub3RpZmljYXRpb24uQ29udGVudClcclxuICAgICAgICAgICAgICAgIDogJydcclxuICAgICAgICB9KSk7XHJcbiAgICB9XHJcbiAgICBwcml2YXRlIF9jaGFuZ2VDdWx0dXJlKGN1bHR1cmU6IHN0cmluZyAvKiBjdWx0dXJlIHNhbXBsZSA6RW5nbGlzaCAqLyk6IHZvaWQge1xyXG4gICAgICAgIEJhcnNhQXBpLkJ3LlNldEN1bHR1cmVCeURpc3BsYXlOYW1lKGN1bHR1cmUpO1xyXG4gICAgICAgIEJhcnNhQXBpLkJ3Lk5hdmlnYXRlVG8oJy8nKTtcclxuICAgIH1cclxufVxyXG4iLCJAaWYgKHVzZXJMb2dnZWRJbiQgfCBhc3luYzsgYXMgdXNlcmxvZ2dlbmQpIHsgQGlmIChub3RpZmljYXRpb25zVW5yZWFkQ291bnQkIHwgYXN5bmM7IGFzIG5vdGlmaWNhdGlvbnNVbnJlYWRDb3VudCkgeyBAaWZcclxuKGRldmljZVNpemUkIHwgYXN5bmM7IGFzIGRldmljZVNpemUpIHsgQGlmIChzaGVsbGJhckRhdGEpIHtcclxuPGJ0LWJhcnNhLXNoZWxsYmFyXHJcbiAgICBbY2xhc3Muc2VydmljZS1kZXNrXT1cImlzU2VydmljZURlc2tcIlxyXG4gICAgW25vdGlmaWNhdGlvblJlcG9ydF09XCJub3RpZmljYXRpb25SZXBvcnRcIlxyXG4gICAgW2Nzc1VybF09XCJjc3NVcmwkIHwgYXN5bmNcIlxyXG4gICAgW2Nzc1ZhcmlhYmxlVXJsXT1cImNzc1ZhcmlhYmxlVXJsJCB8IGFzeW5jXCJcclxuICAgIFt1c2VyUHJvZmlsZUltYWdlVXJsXT1cInVzZXJQcm9maWxlSW1hZ2VVcmwkIHwgYXN5bmNcIlxyXG4gICAgW2Nzc0N1c3RvbVVybF09XCJjc3NDdXN0b21VcmwkIHwgYXN5bmNcIlxyXG4gICAgW3VzZXJMb2dnZWRJbl09XCJ0cnVlXCJcclxuICAgIFtkZXZpY2VTaXplXT1cImRldmljZVNpemVcIlxyXG4gICAgW3NoZWxsYmFyRGF0YV09XCJzaGVsbGJhckRhdGFcIlxyXG4gICAgW2Nzc1N0eWxlXT1cImNzc1N0eWxlc1wiXHJcbiAgICBbcHJvZHVjdE1lbnVDb250cm9sXT1cInByb2R1Y3RNZW51Q29udHJvbFwiXHJcbiAgICBbc2V0dGluZ3NdPVwic2V0dGluZ3NcIlxyXG4gICAgW2lzTW9iaWxlXT1cImlzTW9iaWxlXCJcclxuICAgIFtpc1RhYmxldF09XCJpc1RhYmxldFwiXHJcbiAgICBbaXNEZXNrdG9wXT1cImlzRGVza3RvcFwiXHJcbiAgICBbbXVsdGlMYW5ndWFnZXNdPVwibXVsdGlMYW5ndWFnZXNcIlxyXG4gICAgW25vdGlmaWNhdGlvbnNVbnJlYWRDb3VudF09XCJub3RpZmljYXRpb25zVW5yZWFkQ291bnQgPiAwID8gbm90aWZpY2F0aW9uc1VucmVhZENvdW50IDogdW5kZWZpbmVkXCJcclxuICAgIFtjdWx0dXJlc109XCJjdWx0dXJlc1wiXHJcbiAgICBbbG9nb109XCJsb2dvXCJcclxuICAgIFthY3Rpb25zXT1cImFjdGlvbnNcIlxyXG4gICAgW3VzZXJNZW51XT1cInVzZXJNZW51XCJcclxuICAgIFtwcm9kdWN0U3dpdGNoZXJdPVwicHJvZHVjdFN3aXRjaGVyXCJcclxuICAgIFtzdWJ0aXRsZV09XCJzdWJ0aXRsZVwiXHJcbiAgICBbaXNTZXJ2aWNlRGVza109XCJpc1NlcnZpY2VEZXNrXCJcclxuICAgIFtzaWRlTWVudVRlbXBsYXRlXT1cInNpZGViYXJTZXR0aW5ncyA/IFF1aWNrQWNjZXNzVGVtcGxhdGUgOiBudWxsXCJcclxuICAgIFtwcm9kdWN0TWVudUl0ZW1zMV09XCJwcm9kdWN0TWVudUl0ZW1zMVwiXHJcbiAgICBbaXNPcGVuUXVpY2tBY2Nlc3NdPVwiaXNPcGVuUXVpY2tBY2Nlc3NcIlxyXG4gICAgKGlzT3BlblF1aWNrQWNjZXNzQ2hhbmdlZCk9XCJpc09wZW5RdWlja0FjY2VzcyA9ICRldmVudFwiXHJcbiAgICAoY3VsdHVyZUNoYW5nZWQpPVwib25DdWx0dXJlQ2hhbmdlZCgkZXZlbnQpXCJcclxuICAgIChub3RpZmlhdGlvbkFjdGlvbkNsaWNrKT1cIm9uTm90aWZpY2F0aW9uQWN0aW9uKCRldmVudClcIlxyXG4gICAgKG9wZW5Ob3RpZmljYXRpb25QYW5lbCk9XCJvbkhhbmRsZU9wZW5Ob3RpZmljYXRpb25QYW5lbCgpXCJcclxuPlxyXG48L2J0LWJhcnNhLXNoZWxsYmFyPlxyXG59IH0gfSB9IEBlbHNleyBAaWYgKGlzU2VydmljZURlc2spIHtcclxuPGJ0LWJhcnNhLXNoZWxsYmFyXHJcbiAgICBbY2xhc3Muc2VydmljZS1kZXNrXT1cImlzU2VydmljZURlc2tcIlxyXG4gICAgW25vdGlmaWNhdGlvblJlcG9ydF09XCJub3RpZmljYXRpb25SZXBvcnRcIlxyXG4gICAgW2Nzc1VybF09XCInJ1wiXHJcbiAgICBbY3NzU3R5bGVdPVwiY3NzU3R5bGVzXCJcclxuICAgIFtjc3NWYXJpYWJsZVVybF09XCInJ1wiXHJcbiAgICBbY3NzQ3VzdG9tVXJdPVwiJydcIlxyXG4gICAgW3VzZXJMb2dnZWRJbl09XCJmYWxzZVwiXHJcbiAgICBbbXVsdGlMYW5ndWFnZXNdPVwibXVsdGlMYW5ndWFnZXNcIlxyXG4gICAgW3VzZXJNZW51XT1cInVzZXJNZW51XCJcclxuICAgIFtsb2dvXT1cImxvZ29cIlxyXG4gICAgW3Byb2R1Y3RNZW51SXRlbXMxXT1cInByb2R1Y3RNZW51SXRlbXMxXCJcclxuICAgIFtkZXZpY2VTaXplXT1cIihkZXZpY2VTaXplJCB8IGFzeW5jKSEhXCJcclxuICAgIFtzaGVsbGJhckRhdGFdPVwic2hlbGxiYXJEYXRhXCJcclxuICAgIFtjdWx0dXJlc109XCJjdWx0dXJlc1wiXHJcbiAgICBbbG9nb109XCJsb2dvXCJcclxuICAgIFtpc01vYmlsZV09XCJpc01vYmlsZVwiXHJcbiAgICBbaXNUYWJsZXRdPVwiaXNUYWJsZXRcIlxyXG4gICAgW2lzRGVza3RvcF09XCJpc0Rlc2t0b3BcIlxyXG4gICAgW2lzU2VydmljZURlc2tdPVwiaXNTZXJ2aWNlRGVza1wiXHJcbiAgICBbYWN0aW9uc109XCJhY3Rpb25zXCJcclxuICAgIFt1c2VyTWVudV09XCJ1c2VyTWVudVwiXHJcbiAgICBbcHJvZHVjdE1lbnVDb250cm9sXT1cInByb2R1Y3RNZW51Q29udHJvbFwiXHJcbiAgICBbcHJvZHVjdFN3aXRjaGVyXT1cInByb2R1Y3RTd2l0Y2hlclwiXHJcbiAgICBbc3VidGl0bGVdPVwic3VidGl0bGVcIlxyXG4gICAgW3NldHRpbmdzXT1cInNldHRpbmdzXCJcclxuICAgIFtoaWRlU2hlbGxiYXJBY3Rpb25zXT1cInRydWVcIlxyXG4gICAgW3Nob3dFeHRyYUJ1dHRvbl09XCJ0cnVlXCJcclxuICAgIFtjdWx0dXJlc109XCJjdWx0dXJlc1wiXHJcbiAgICBbcHJvZHVjdE1lbnVJdGVtczFdPVwicHJvZHVjdE1lbnVJdGVtczFcIlxyXG4gICAgKGN1bHR1cmVDaGFuZ2VkKT1cIm9uQ3VsdHVyZUNoYW5nZWQoJGV2ZW50KVwiXHJcbj5cclxuICAgIEBmb3IoYnRuIG9mIHVzZXJNZW51O3RyYWNrIGJ0bil7XHJcbiAgICA8YnV0dG9uXHJcbiAgICAgICAgY2xhc3M9XCJleHRyYV9idG5cIlxyXG4gICAgICAgIGZkLWJ1dHRvblxyXG4gICAgICAgIFtsYWJlbF09XCJidG4udGV4dFwiXHJcbiAgICAgICAgW2dseXBoXT1cImJ0bi50ZXh0ID09PSAoJ0xvZ2luJyB8IGJiYlRyYW5zbGF0ZSkgPyAncGVyc29uLXBsYWNlaG9sZGVyJyA6IG51bGxcIlxyXG4gICAgICAgIGZkVHlwZT1cImVtcGhhc2l6ZWRcIlxyXG4gICAgICAgIChjbGljayk9XCJidG4uY2FsbGJhY2soKVwiXHJcbiAgICA+PC9idXR0b24+XHJcbiAgICB9XHJcbjwvYnQtYmFyc2Etc2hlbGxiYXI+XHJcbn0gfVxyXG48bmctdGVtcGxhdGUgI1F1aWNrQWNjZXNzVGVtcGxhdGU+XHJcbiAgICA8Ym5yYy1yZXBvcnQtY29udGFpbmVyICpuZ0lmPVwic2lkZWJhclNldHRpbmdzXCIgW3NldHRpbmdzXT1cInNpZGViYXJTZXR0aW5nc1wiPiA8L2JucmMtcmVwb3J0LWNvbnRhaW5lcj5cclxuICAgIDwhLS0gPGJ0LXBvcG92ZXItYXBwLWZpbmRlciAoY2xvc2VNZW51KT1cImlzT3BlblF1aWNrQWNjZXNzID0gZmFsc2VcIj48L2J0LXBvcG92ZXItYXBwLWZpbmRlcj4gLS0+XHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==
|