ontimize-web-ngx 18.0.0-next.4 → 18.0.0-next.5
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/components/app-sidenav/o-app-sidenav.component.mjs +3 -3
- package/esm2022/lib/components/image/o-image.component.mjs +3 -3
- package/esm2022/lib/components/input/file-input/o-file-input.component.mjs +13 -3
- package/esm2022/lib/components/input/o-form-service-component.class.mjs +10 -2
- package/esm2022/lib/components/o-data-toolbar/o-data-toolbar.component.mjs +3 -3
- package/esm2022/lib/components/o-form-data-component.class.mjs +3 -2
- package/esm2022/lib/components/tree/o-tree.component.mjs +3 -3
- package/fesm2022/ontimize-web-ngx.mjs +31 -12
- package/fesm2022/ontimize-web-ngx.mjs.map +1 -1
- package/lib/components/input/file-input/o-file-input.component.d.ts +2 -0
- package/lib/components/input/o-form-service-component.class.d.ts +6 -2
- package/package.json +1 -1
- package/src/lib/components/app-sidenav/o-app-sidenav-theme.scss +2 -2
- package/src/lib/components/app-sidenav/o-app-sidenav.component.scss +1 -0
- package/src/lib/components/image/o-image.component.scss +0 -6
- package/src/lib/components/o-data-toolbar/o-data-toolbar.component.scss +1 -0
- package/src/lib/components/tree/o-tree.component.scss +5 -2
- package/src/lib/shared/material/o-material.theme.scss +20 -0
- package/src/lib/theming/ontimize-base-style.scss +110 -76
- package/src/lib/theming/ontimize-style.scss +31 -16
- package/src/lib/theming/ontimize-tokens.scss +9 -0
- package/src/lib/theming/themes/oxygen.scss +35 -38
- package/theme.scss +22 -2
- package/theming/ontimize-base-style.scss +110 -76
- package/theming/ontimize-style.scss +31 -16
- package/theming/ontimize-tokens.scss +9 -0
- package/theming/themes/oxygen.scss +35 -38
|
@@ -243,7 +243,7 @@ export class OAppSidenavComponent extends OAppSidenavComponentStateService {
|
|
|
243
243
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: OAppSidenavComponent, deps: [{ token: i0.Injector }, { token: i1.Router }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i2.BreakpointObserver }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
244
244
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: OAppSidenavComponent, isStandalone: true, selector: "o-app-sidenav", inputs: { opened: "opened", showUserInfo: ["show-user-info", "showUserInfo"], showToggleButton: ["show-toggle-button", "showToggleButton"], openedSidenavImg: ["opened-sidenav-image", "openedSidenavImg"], closedSidenavImg: ["closed-sidenav-image", "closedSidenavImg"], layoutMode: ["layout-mode", "layoutMode"], sidenavMode: ["sidenav-mode", "sidenavMode"], storeState: ["store-state", "storeState"], showEllipsisMenu: ["show-ellipsis-menu", "showEllipsisMenu"] }, outputs: { onSidenavOpenedChange: "onSidenavOpenedChange", onSidenavOpenedStart: "onSidenavOpenedStart", onSidenavClosedStart: "onSidenavClosedStart", onSidenavToggle: "onSidenavToggle", afterSidenavToggle: "afterSidenavToggle" }, host: { listeners: { "window:beforeunload": "beforeunloadHandler()", "window:resize": "onResize()" }, properties: { "class.o-app-sidenav": "true" } }, providers: [
|
|
245
245
|
{ provide: OAppSidenavBase, useExisting: forwardRef(() => OAppSidenavComponent) }
|
|
246
|
-
], viewQueries: [{ propertyName: "sidenav", first: true, predicate: MatSidenav, descendants: true }], usesInheritance: true, ngImport: i0, template: "<mat-sidenav-container class=\"o-app-sidenav-container\" [class.opened]=\"sidenav.opened\"\n [class.o-app-sidenav-mode-desktop]=\"(layoutMode || 'desktop') === 'desktop'\"\n [class.o-app-sidenav-mode-mobile]=\"(layoutMode || 'desktop') !== 'desktop'\">\n\n <mat-sidenav #sidenav class=\"o-app-sidenav-sidenav o-scroll\" [opened]=\"isSidenavOpened()\"\n [mode]=\"(sidenavMode || ((layoutMode || 'desktop') === 'desktop' ? 'side' : 'over'))\" [class.mat-drawer-opened]=\"sidenav.opened\"\n [class.mat-drawer-closed]=\"!sidenav.opened\" [class.ellipsis-menu-items]=\"showEllipsisMenu\" (openedChange)=\"sidenavOpenedChange()\"\n (closedStart)=\"sidenavClosedStart()\" (openedStart)=\"sidenavOpenedStart()\">\n <div class=\"sidenav-wrapper o-flex-column\">\n @if (isDesktopMode()) {\n <div class=\"sidenav-toggle-container o-flex-row o-layout-align-end-center\">\n <mat-icon id=\"sidenav-menu\" class=\"sidenav-toggle\" (click)=\"toggleSidenav()\">menu</mat-icon>\n </div>\n }\n\n <o-app-sidenav-image [opened-src]=\"openedSidenavImg\" [closed-src]=\"closedSidenavImg\"> </o-app-sidenav-image>\n <ng-content select=\"o-app-layout-sidenav-projection-start\"></ng-content>\n <div class=\"navMenu\">\n @for (menuRootItem of menuRootArray; track menuRootItem) {\n <nav>\n @if (appMenuService.getMenuItemType(menuRootItem) !== 'group' && appMenuService.isVisible(menuRootItem)) {\n <ul>\n <o-app-sidenav-menu-item [menu-item]=\"menuRootItem\" [menu-item-type]=\"appMenuService.getMenuItemType(menuRootItem)\"\n [sidenav-opened]=\"sidenav.opened\" (onClick)=\"onMenuItemClick()\">\n </o-app-sidenav-menu-item>\n </ul>\n }\n @if (appMenuService.getMenuItemType(menuRootItem) === 'group' && appMenuService.isVisible(menuRootItem)) {\n <o-app-sidenav-menu-group [menu-group]=\"menuRootItem\" [sidenav-opened]=\"sidenav.opened\" level=\"1\"\n (onItemClick)=\"onMenuItemClick()\">\n </o-app-sidenav-menu-group>\n }\n </nav>\n }\n </div>\n <div class=\"layout-sidenav-projection-end\">\n <ng-content select=\"o-app-layout-sidenav-projection-end\"></ng-content>\n </div>\n </div>\n </mat-sidenav>\n\n <mat-sidenav-content class=\"o-app-sidenav-content\">\n <ng-content></ng-content>\n </mat-sidenav-content>\n</mat-sidenav-container>\n", styles: [".o-app-sidenav{font-weight:400}.o-app-sidenav .navMenu{flex:1;display:flex;flex-direction:column;overflow-y:auto;overflow-x:hidden}@-moz-document url-prefix(){.o-app-sidenav .navMenu{height:100%}}.o-app-sidenav .o-app-sidenav-menu-group a,.o-app-sidenav .o-app-sidenav-menu-item a{margin-left:8px}.o-app-sidenav .o-app-sidenav-menu-group a .mat-icon svg,.o-app-sidenav .o-app-sidenav-menu-item a .mat-icon svg{display:flex}.o-app-sidenav .o-app-sidenav-menu-group[disabled=true] .mat-button-focus-overlay,.o-app-sidenav .o-app-sidenav-menu-group[disabled=true] .mat-mdc-button-persistent-ripple,.o-app-sidenav .o-app-sidenav-menu-item[disabled=true] .mat-button-focus-overlay,.o-app-sidenav .o-app-sidenav-menu-item[disabled=true] .mat-mdc-button-persistent-ripple{display:none}.o-app-sidenav .o-app-sidenav-menu-group[disabled=true] .o-app-sidenav-item,.o-app-sidenav .o-app-sidenav-menu-item[disabled=true] .o-app-sidenav-item{opacity:.5}.o-app-sidenav .o-app-sidenav-menu-group[disabled=true] a,.o-app-sidenav .o-app-sidenav-menu-item[disabled=true] a{cursor:initial}.o-app-sidenav .o-app-sidenav-menugroup{transition:background-color .5s}.o-app-sidenav .o-app-sidenav-menugroup-items-container{overflow:hidden}.o-app-sidenav .o-app-sidenav-container{width:100%;height:100%}.o-app-sidenav .o-app-sidenav-container.o-app-sidenav-mode-desktop:not(.opened) .o-app-sidenav-sidenav.mat-drawer-closed{visibility:visible!important;transform:translate3d(-183px,0,0)}.o-app-sidenav .o-app-sidenav-container.o-app-sidenav-mode-desktop:not(.opened) .o-app-sidenav-content.mat-drawer-content{margin-right:56px!important;transform:translate3d(56px,0,0)!important}.o-app-sidenav .o-app-sidenav-container .o-app-sidenav-content{position:absolute;right:0;left:0;min-height:100%;display:flex;flex-direction:column}.o-app-sidenav .o-app-sidenav-container .o-app-sidenav-content router-outlet+*{flex-grow:1}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav{width:240px;bottom:0;overflow:hidden;height:100%;display:flex}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .mat-drawer-inner-container{display:flex;margin:0 8px;width:calc(100% - 16px)}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .mat-drawer-inner-container .sidenav-wrapper{flex:1}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.ellipsis-menu-items,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.ellipsis-menu-items .mat-drawer-inner-container{display:block}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.ellipsis-menu-items .sidenav-wrapper{height:100%;width:100%}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .o-app-sidenav-content-container{padding-bottom:16px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .sidenav-toggle-container{height:48px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .sidenav-toggle{padding:4px 12px 8px;cursor:pointer}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav ul{list-style-type:none;margin:0;padding:0}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav ul li{margin:0;padding:0}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav nav{width:100%}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav nav a{border-radius:8px;box-sizing:border-box;display:block;line-height:40px;height:40px;font-size:14px;max-width:100%;margin-bottom:2px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav nav a>.mat-icon{vertical-align:middle;height:24px;width:24px;font-size:24px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menugroup{transition:padding .5s 0s}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menugroup .o-app-sidenav-menugroup-arrow{transition:.5s transform cubic-bezier(.25,.8,.25,1)}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menugroup .o-app-sidenav-menugroup-arrow.opened{transform:rotate(90deg)}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menugroup mat-icon:not(.o-app-sidenav-menugroup-arrow),.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menuitem mat-icon:not(.o-app-sidenav-menugroup-arrow){margin-right:16px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) o-app-sidenav-menu-group a,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) o-app-sidenav-menu-item a{padding:0 16px;margin:0;display:flex;width:100%}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) o-app-sidenav-menu-group a .mdc-button__label,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) o-app-sidenav-menu-item a .mdc-button__label{display:flex;min-width:0;flex:1;overflow:hidden}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) o-app-sidenav-menu-group a .mdc-button__label>div,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) o-app-sidenav-menu-item a .mdc-button__label>div{display:flex;align-items:center;min-width:0;width:100%;overflow:hidden}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) o-app-sidenav-menu-group a .mdc-button__label>div .o-app-sidenav-menuitem-title,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) o-app-sidenav-menu-group a .mdc-button__label>div .o-app-sidenav-menugroup-title,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) o-app-sidenav-menu-item a .mdc-button__label>div .o-app-sidenav-menuitem-title,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) o-app-sidenav-menu-item a .mdc-button__label>div .o-app-sidenav-menugroup-title{min-width:0;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-1 a{font-size:14px;line-height:40px;height:40px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-1>.o-app-sidenav-menugroup.opened+.o-app-sidenav-menugroup-items-container{padding-left:16px;box-sizing:border-box;width:100%;overflow:hidden}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-1>.o-app-sidenav-menugroup.opened+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-group a,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-1>.o-app-sidenav-menugroup.opened+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-item a{font-size:12px;line-height:36px;height:36px;max-width:100%;overflow:hidden}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-1>.o-app-sidenav-menugroup.opened+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-group a .mat-mdc-button-touch-target,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-1>.o-app-sidenav-menugroup.opened+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-item a .mat-mdc-button-touch-target{height:36px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-1>.o-app-sidenav-menugroup.opened+.o-app-sidenav-menugroup-items-container a .mdc-button__label{padding-left:6px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-2 a{font-size:12px;line-height:36px;height:36px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-2 a .mat-mdc-button-touch-target{height:36px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-2>.o-app-sidenav-menugroup.opened+.o-app-sidenav-menugroup-items-container{padding-left:32px;box-sizing:border-box;width:100%;overflow:hidden}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-2>.o-app-sidenav-menugroup.opened+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-group a,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-2>.o-app-sidenav-menugroup.opened+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-item a{font-size:11px;line-height:32px;height:32px;max-width:100%;overflow:hidden}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-2>.o-app-sidenav-menugroup.opened+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-group a .mat-mdc-button-touch-target,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-2>.o-app-sidenav-menugroup.opened+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-item a .mat-mdc-button-touch-target{height:32px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-2>.o-app-sidenav-menugroup.opened+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-group a .mat-icon,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-2>.o-app-sidenav-menugroup.opened+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-item a .mat-icon{font-size:20px;height:20px;width:20px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed{text-align:center}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed .mat-drawer-inner-container{margin:0;width:100%}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed .mat-drawer-inner-container .sidenav-toggle{padding:8px 16px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed .o-app-sidenav-item:not(.o-user-info){cursor:pointer}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed .o-app-sidenav-item.o-user-info:focus,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed .o-app-sidenav-item.o-user-info:hover{color:inherit}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed .o-app-sidenav-menugroup,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed .o-app-sidenav-menuitem{display:inline-block;text-align:center}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed nav{width:56px;min-width:56px;margin-left:auto}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed nav a{line-height:40px;height:40px;width:40px;min-width:40px;padding:0;margin:0}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed nav a .mat-icon{margin:auto}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed nav a .mdc-button__label{width:100%;display:flex;align-items:center;justify-content:center;height:100%}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed nav a .o-layout-align-start-center{justify-content:center}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed .o-app-sidenav-image .o-app-sidenav-image-container{padding:0;text-align:end;max-height:36px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed .o-app-sidenav-image .o-app-sidenav-image-container .o-app-sidenav-image{max-height:36px;margin-right:8px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closing{transform:translate3d(-183px,0,0)}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .o-app-sidenav-menugroup-arrow{display:flex}\n"], dependencies: [{ kind: "ngmodule", type: MatSidenavModule }, { kind: "component", type: i3.MatSidenav, selector: "mat-sidenav", inputs: ["fixedInViewport", "fixedTopGap", "fixedBottomGap"], exportAs: ["matSidenav"] }, { kind: "component", type: i3.MatSidenavContainer, selector: "mat-sidenav-container", exportAs: ["matSidenavContainer"] }, { kind: "component", type: i3.MatSidenavContent, selector: "mat-sidenav-content" }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: OAppSidenavImageComponent, selector: "o-app-sidenav-image", inputs: ["opened-src", "closed-src"] }, { kind: "component", type: OAppSidenavMenuItemComponent, selector: "o-app-sidenav-menu-item", inputs: ["menu-item", "menu-item-type", "sidenav-opened", "disabled"], outputs: ["onClick"] }, { kind: "component", type: OAppSidenavMenuGroupComponent, selector: "o-app-sidenav-menu-group", inputs: ["menu-group", "sidenav-opened", "level"], outputs: ["onItemClick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
246
|
+
], viewQueries: [{ propertyName: "sidenav", first: true, predicate: MatSidenav, descendants: true }], usesInheritance: true, ngImport: i0, template: "<mat-sidenav-container class=\"o-app-sidenav-container\" [class.opened]=\"sidenav.opened\"\n [class.o-app-sidenav-mode-desktop]=\"(layoutMode || 'desktop') === 'desktop'\"\n [class.o-app-sidenav-mode-mobile]=\"(layoutMode || 'desktop') !== 'desktop'\">\n\n <mat-sidenav #sidenav class=\"o-app-sidenav-sidenav o-scroll\" [opened]=\"isSidenavOpened()\"\n [mode]=\"(sidenavMode || ((layoutMode || 'desktop') === 'desktop' ? 'side' : 'over'))\" [class.mat-drawer-opened]=\"sidenav.opened\"\n [class.mat-drawer-closed]=\"!sidenav.opened\" [class.ellipsis-menu-items]=\"showEllipsisMenu\" (openedChange)=\"sidenavOpenedChange()\"\n (closedStart)=\"sidenavClosedStart()\" (openedStart)=\"sidenavOpenedStart()\">\n <div class=\"sidenav-wrapper o-flex-column\">\n @if (isDesktopMode()) {\n <div class=\"sidenav-toggle-container o-flex-row o-layout-align-end-center\">\n <mat-icon id=\"sidenav-menu\" class=\"sidenav-toggle\" (click)=\"toggleSidenav()\">menu</mat-icon>\n </div>\n }\n\n <o-app-sidenav-image [opened-src]=\"openedSidenavImg\" [closed-src]=\"closedSidenavImg\"> </o-app-sidenav-image>\n <ng-content select=\"o-app-layout-sidenav-projection-start\"></ng-content>\n <div class=\"navMenu\">\n @for (menuRootItem of menuRootArray; track menuRootItem) {\n <nav>\n @if (appMenuService.getMenuItemType(menuRootItem) !== 'group' && appMenuService.isVisible(menuRootItem)) {\n <ul>\n <o-app-sidenav-menu-item [menu-item]=\"menuRootItem\" [menu-item-type]=\"appMenuService.getMenuItemType(menuRootItem)\"\n [sidenav-opened]=\"sidenav.opened\" (onClick)=\"onMenuItemClick()\">\n </o-app-sidenav-menu-item>\n </ul>\n }\n @if (appMenuService.getMenuItemType(menuRootItem) === 'group' && appMenuService.isVisible(menuRootItem)) {\n <o-app-sidenav-menu-group [menu-group]=\"menuRootItem\" [sidenav-opened]=\"sidenav.opened\" level=\"1\"\n (onItemClick)=\"onMenuItemClick()\">\n </o-app-sidenav-menu-group>\n }\n </nav>\n }\n </div>\n <div class=\"layout-sidenav-projection-end\">\n <ng-content select=\"o-app-layout-sidenav-projection-end\"></ng-content>\n </div>\n </div>\n </mat-sidenav>\n\n <mat-sidenav-content class=\"o-app-sidenav-content\">\n <ng-content></ng-content>\n </mat-sidenav-content>\n</mat-sidenav-container>\n", styles: [".o-app-sidenav{font-weight:400}.o-app-sidenav .navMenu{flex:1;display:flex;flex-direction:column;overflow-y:auto;overflow-x:hidden}@-moz-document url-prefix(){.o-app-sidenav .navMenu{height:100%}}.o-app-sidenav .o-app-sidenav-menu-group a,.o-app-sidenav .o-app-sidenav-menu-item a{margin-left:8px}.o-app-sidenav .o-app-sidenav-menu-group a .mat-icon svg,.o-app-sidenav .o-app-sidenav-menu-item a .mat-icon svg{display:flex}.o-app-sidenav .o-app-sidenav-menu-group[disabled=true] .mat-button-focus-overlay,.o-app-sidenav .o-app-sidenav-menu-group[disabled=true] .mat-mdc-button-persistent-ripple,.o-app-sidenav .o-app-sidenav-menu-item[disabled=true] .mat-button-focus-overlay,.o-app-sidenav .o-app-sidenav-menu-item[disabled=true] .mat-mdc-button-persistent-ripple{display:none}.o-app-sidenav .o-app-sidenav-menu-group[disabled=true] .o-app-sidenav-item,.o-app-sidenav .o-app-sidenav-menu-item[disabled=true] .o-app-sidenav-item{opacity:.5}.o-app-sidenav .o-app-sidenav-menu-group[disabled=true] a,.o-app-sidenav .o-app-sidenav-menu-item[disabled=true] a{cursor:initial}.o-app-sidenav .o-app-sidenav-menugroup{transition:background-color .5s}.o-app-sidenav .o-app-sidenav-menugroup-items-container{overflow:hidden}.o-app-sidenav .o-app-sidenav-container{width:100%;height:100%}.o-app-sidenav .o-app-sidenav-container.o-app-sidenav-mode-desktop:not(.opened) .o-app-sidenav-sidenav.mat-drawer-closed{visibility:visible!important;transform:translate3d(-183px,0,0)}.o-app-sidenav .o-app-sidenav-container.o-app-sidenav-mode-desktop:not(.opened) .o-app-sidenav-content.mat-drawer-content{margin-right:56px!important;transform:translate3d(56px,0,0)!important}.o-app-sidenav .o-app-sidenav-container .o-app-sidenav-content{position:absolute;right:0;left:0;min-height:100%;display:flex;flex-direction:column}.o-app-sidenav .o-app-sidenav-container .o-app-sidenav-content router-outlet+*{flex-grow:1}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav{width:240px;bottom:0;overflow:hidden;height:100%;display:flex}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .mat-drawer-inner-container{display:flex;margin:0 8px;width:calc(100% - 16px)}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .mat-drawer-inner-container .sidenav-wrapper{flex:1}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.ellipsis-menu-items,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.ellipsis-menu-items .mat-drawer-inner-container{display:block}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.ellipsis-menu-items .sidenav-wrapper{height:100%;width:100%}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .o-app-sidenav-content-container{padding-bottom:16px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .sidenav-toggle-container{height:48px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .sidenav-toggle{padding:4px 12px 8px;cursor:pointer}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav ul{list-style-type:none;margin:0;padding:0}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav ul li{margin:0;padding:0}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav nav{width:100%}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav nav a{border-radius:8px;box-sizing:border-box;display:block;line-height:40px;height:40px;font-size:14px;max-width:100%;margin-bottom:2px;font-weight:400}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav nav a>.mat-icon{vertical-align:middle;height:24px;width:24px;font-size:24px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menugroup{transition:padding .5s 0s}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menugroup .o-app-sidenav-menugroup-arrow{transition:.5s transform cubic-bezier(.25,.8,.25,1)}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menugroup .o-app-sidenav-menugroup-arrow.opened{transform:rotate(90deg)}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menugroup mat-icon:not(.o-app-sidenav-menugroup-arrow),.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menuitem mat-icon:not(.o-app-sidenav-menugroup-arrow){margin-right:16px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) o-app-sidenav-menu-group a,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) o-app-sidenav-menu-item a{padding:0 16px;margin:0;display:flex;width:100%}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) o-app-sidenav-menu-group a .mdc-button__label,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) o-app-sidenav-menu-item a .mdc-button__label{display:flex;min-width:0;flex:1;overflow:hidden}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) o-app-sidenav-menu-group a .mdc-button__label>div,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) o-app-sidenav-menu-item a .mdc-button__label>div{display:flex;align-items:center;min-width:0;width:100%;overflow:hidden}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) o-app-sidenav-menu-group a .mdc-button__label>div .o-app-sidenav-menuitem-title,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) o-app-sidenav-menu-group a .mdc-button__label>div .o-app-sidenav-menugroup-title,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) o-app-sidenav-menu-item a .mdc-button__label>div .o-app-sidenav-menuitem-title,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) o-app-sidenav-menu-item a .mdc-button__label>div .o-app-sidenav-menugroup-title{min-width:0;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-1 a{font-size:14px;line-height:40px;height:40px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-1>.o-app-sidenav-menugroup.opened+.o-app-sidenav-menugroup-items-container{padding-left:16px;box-sizing:border-box;width:100%;overflow:hidden}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-1>.o-app-sidenav-menugroup.opened+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-group a,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-1>.o-app-sidenav-menugroup.opened+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-item a{font-size:12px;line-height:36px;height:36px;max-width:100%;overflow:hidden}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-1>.o-app-sidenav-menugroup.opened+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-group a .mat-mdc-button-touch-target,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-1>.o-app-sidenav-menugroup.opened+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-item a .mat-mdc-button-touch-target{height:36px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-1>.o-app-sidenav-menugroup.opened+.o-app-sidenav-menugroup-items-container a .mdc-button__label{padding-left:6px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-2 a{font-size:12px;line-height:36px;height:36px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-2 a .mat-mdc-button-touch-target{height:36px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-2>.o-app-sidenav-menugroup.opened+.o-app-sidenav-menugroup-items-container{padding-left:32px;box-sizing:border-box;width:100%;overflow:hidden}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-2>.o-app-sidenav-menugroup.opened+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-group a,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-2>.o-app-sidenav-menugroup.opened+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-item a{font-size:11px;line-height:32px;height:32px;max-width:100%;overflow:hidden}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-2>.o-app-sidenav-menugroup.opened+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-group a .mat-mdc-button-touch-target,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-2>.o-app-sidenav-menugroup.opened+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-item a .mat-mdc-button-touch-target{height:32px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-2>.o-app-sidenav-menugroup.opened+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-group a .mat-icon,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-2>.o-app-sidenav-menugroup.opened+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-item a .mat-icon{font-size:20px;height:20px;width:20px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed{text-align:center}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed .mat-drawer-inner-container{margin:0;width:100%}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed .mat-drawer-inner-container .sidenav-toggle{padding:8px 16px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed .o-app-sidenav-item:not(.o-user-info){cursor:pointer}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed .o-app-sidenav-item.o-user-info:focus,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed .o-app-sidenav-item.o-user-info:hover{color:inherit}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed .o-app-sidenav-menugroup,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed .o-app-sidenav-menuitem{display:inline-block;text-align:center}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed nav{width:56px;min-width:56px;margin-left:auto}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed nav a{line-height:40px;height:40px;width:40px;min-width:40px;padding:0;margin:0}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed nav a .mat-icon{margin:auto}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed nav a .mdc-button__label{width:100%;display:flex;align-items:center;justify-content:center;height:100%}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed nav a .o-layout-align-start-center{justify-content:center}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed .o-app-sidenav-image .o-app-sidenav-image-container{padding:0;text-align:end;max-height:36px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed .o-app-sidenav-image .o-app-sidenav-image-container .o-app-sidenav-image{max-height:36px;margin-right:8px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closing{transform:translate3d(-183px,0,0)}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .o-app-sidenav-menugroup-arrow{display:flex}\n"], dependencies: [{ kind: "ngmodule", type: MatSidenavModule }, { kind: "component", type: i3.MatSidenav, selector: "mat-sidenav", inputs: ["fixedInViewport", "fixedTopGap", "fixedBottomGap"], exportAs: ["matSidenav"] }, { kind: "component", type: i3.MatSidenavContainer, selector: "mat-sidenav-container", exportAs: ["matSidenavContainer"] }, { kind: "component", type: i3.MatSidenavContent, selector: "mat-sidenav-content" }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: OAppSidenavImageComponent, selector: "o-app-sidenav-image", inputs: ["opened-src", "closed-src"] }, { kind: "component", type: OAppSidenavMenuItemComponent, selector: "o-app-sidenav-menu-item", inputs: ["menu-item", "menu-item-type", "sidenav-opened", "disabled"], outputs: ["onClick"] }, { kind: "component", type: OAppSidenavMenuGroupComponent, selector: "o-app-sidenav-menu-group", inputs: ["menu-group", "sidenav-opened", "level"], outputs: ["onItemClick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
247
247
|
}
|
|
248
248
|
__decorate([
|
|
249
249
|
BooleanInputConverter(),
|
|
@@ -255,7 +255,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
255
255
|
'[class.o-app-sidenav]': 'true'
|
|
256
256
|
}, providers: [
|
|
257
257
|
{ provide: OAppSidenavBase, useExisting: forwardRef(() => OAppSidenavComponent) }
|
|
258
|
-
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-sidenav-container class=\"o-app-sidenav-container\" [class.opened]=\"sidenav.opened\"\n [class.o-app-sidenav-mode-desktop]=\"(layoutMode || 'desktop') === 'desktop'\"\n [class.o-app-sidenav-mode-mobile]=\"(layoutMode || 'desktop') !== 'desktop'\">\n\n <mat-sidenav #sidenav class=\"o-app-sidenav-sidenav o-scroll\" [opened]=\"isSidenavOpened()\"\n [mode]=\"(sidenavMode || ((layoutMode || 'desktop') === 'desktop' ? 'side' : 'over'))\" [class.mat-drawer-opened]=\"sidenav.opened\"\n [class.mat-drawer-closed]=\"!sidenav.opened\" [class.ellipsis-menu-items]=\"showEllipsisMenu\" (openedChange)=\"sidenavOpenedChange()\"\n (closedStart)=\"sidenavClosedStart()\" (openedStart)=\"sidenavOpenedStart()\">\n <div class=\"sidenav-wrapper o-flex-column\">\n @if (isDesktopMode()) {\n <div class=\"sidenav-toggle-container o-flex-row o-layout-align-end-center\">\n <mat-icon id=\"sidenav-menu\" class=\"sidenav-toggle\" (click)=\"toggleSidenav()\">menu</mat-icon>\n </div>\n }\n\n <o-app-sidenav-image [opened-src]=\"openedSidenavImg\" [closed-src]=\"closedSidenavImg\"> </o-app-sidenav-image>\n <ng-content select=\"o-app-layout-sidenav-projection-start\"></ng-content>\n <div class=\"navMenu\">\n @for (menuRootItem of menuRootArray; track menuRootItem) {\n <nav>\n @if (appMenuService.getMenuItemType(menuRootItem) !== 'group' && appMenuService.isVisible(menuRootItem)) {\n <ul>\n <o-app-sidenav-menu-item [menu-item]=\"menuRootItem\" [menu-item-type]=\"appMenuService.getMenuItemType(menuRootItem)\"\n [sidenav-opened]=\"sidenav.opened\" (onClick)=\"onMenuItemClick()\">\n </o-app-sidenav-menu-item>\n </ul>\n }\n @if (appMenuService.getMenuItemType(menuRootItem) === 'group' && appMenuService.isVisible(menuRootItem)) {\n <o-app-sidenav-menu-group [menu-group]=\"menuRootItem\" [sidenav-opened]=\"sidenav.opened\" level=\"1\"\n (onItemClick)=\"onMenuItemClick()\">\n </o-app-sidenav-menu-group>\n }\n </nav>\n }\n </div>\n <div class=\"layout-sidenav-projection-end\">\n <ng-content select=\"o-app-layout-sidenav-projection-end\"></ng-content>\n </div>\n </div>\n </mat-sidenav>\n\n <mat-sidenav-content class=\"o-app-sidenav-content\">\n <ng-content></ng-content>\n </mat-sidenav-content>\n</mat-sidenav-container>\n", styles: [".o-app-sidenav{font-weight:400}.o-app-sidenav .navMenu{flex:1;display:flex;flex-direction:column;overflow-y:auto;overflow-x:hidden}@-moz-document url-prefix(){.o-app-sidenav .navMenu{height:100%}}.o-app-sidenav .o-app-sidenav-menu-group a,.o-app-sidenav .o-app-sidenav-menu-item a{margin-left:8px}.o-app-sidenav .o-app-sidenav-menu-group a .mat-icon svg,.o-app-sidenav .o-app-sidenav-menu-item a .mat-icon svg{display:flex}.o-app-sidenav .o-app-sidenav-menu-group[disabled=true] .mat-button-focus-overlay,.o-app-sidenav .o-app-sidenav-menu-group[disabled=true] .mat-mdc-button-persistent-ripple,.o-app-sidenav .o-app-sidenav-menu-item[disabled=true] .mat-button-focus-overlay,.o-app-sidenav .o-app-sidenav-menu-item[disabled=true] .mat-mdc-button-persistent-ripple{display:none}.o-app-sidenav .o-app-sidenav-menu-group[disabled=true] .o-app-sidenav-item,.o-app-sidenav .o-app-sidenav-menu-item[disabled=true] .o-app-sidenav-item{opacity:.5}.o-app-sidenav .o-app-sidenav-menu-group[disabled=true] a,.o-app-sidenav .o-app-sidenav-menu-item[disabled=true] a{cursor:initial}.o-app-sidenav .o-app-sidenav-menugroup{transition:background-color .5s}.o-app-sidenav .o-app-sidenav-menugroup-items-container{overflow:hidden}.o-app-sidenav .o-app-sidenav-container{width:100%;height:100%}.o-app-sidenav .o-app-sidenav-container.o-app-sidenav-mode-desktop:not(.opened) .o-app-sidenav-sidenav.mat-drawer-closed{visibility:visible!important;transform:translate3d(-183px,0,0)}.o-app-sidenav .o-app-sidenav-container.o-app-sidenav-mode-desktop:not(.opened) .o-app-sidenav-content.mat-drawer-content{margin-right:56px!important;transform:translate3d(56px,0,0)!important}.o-app-sidenav .o-app-sidenav-container .o-app-sidenav-content{position:absolute;right:0;left:0;min-height:100%;display:flex;flex-direction:column}.o-app-sidenav .o-app-sidenav-container .o-app-sidenav-content router-outlet+*{flex-grow:1}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav{width:240px;bottom:0;overflow:hidden;height:100%;display:flex}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .mat-drawer-inner-container{display:flex;margin:0 8px;width:calc(100% - 16px)}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .mat-drawer-inner-container .sidenav-wrapper{flex:1}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.ellipsis-menu-items,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.ellipsis-menu-items .mat-drawer-inner-container{display:block}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.ellipsis-menu-items .sidenav-wrapper{height:100%;width:100%}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .o-app-sidenav-content-container{padding-bottom:16px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .sidenav-toggle-container{height:48px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .sidenav-toggle{padding:4px 12px 8px;cursor:pointer}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav ul{list-style-type:none;margin:0;padding:0}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav ul li{margin:0;padding:0}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav nav{width:100%}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav nav a{border-radius:8px;box-sizing:border-box;display:block;line-height:40px;height:40px;font-size:14px;max-width:100%;margin-bottom:2px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav nav a>.mat-icon{vertical-align:middle;height:24px;width:24px;font-size:24px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menugroup{transition:padding .5s 0s}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menugroup .o-app-sidenav-menugroup-arrow{transition:.5s transform cubic-bezier(.25,.8,.25,1)}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menugroup .o-app-sidenav-menugroup-arrow.opened{transform:rotate(90deg)}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menugroup mat-icon:not(.o-app-sidenav-menugroup-arrow),.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menuitem mat-icon:not(.o-app-sidenav-menugroup-arrow){margin-right:16px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) o-app-sidenav-menu-group a,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) o-app-sidenav-menu-item a{padding:0 16px;margin:0;display:flex;width:100%}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) o-app-sidenav-menu-group a .mdc-button__label,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) o-app-sidenav-menu-item a .mdc-button__label{display:flex;min-width:0;flex:1;overflow:hidden}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) o-app-sidenav-menu-group a .mdc-button__label>div,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) o-app-sidenav-menu-item a .mdc-button__label>div{display:flex;align-items:center;min-width:0;width:100%;overflow:hidden}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) o-app-sidenav-menu-group a .mdc-button__label>div .o-app-sidenav-menuitem-title,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) o-app-sidenav-menu-group a .mdc-button__label>div .o-app-sidenav-menugroup-title,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) o-app-sidenav-menu-item a .mdc-button__label>div .o-app-sidenav-menuitem-title,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) o-app-sidenav-menu-item a .mdc-button__label>div .o-app-sidenav-menugroup-title{min-width:0;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-1 a{font-size:14px;line-height:40px;height:40px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-1>.o-app-sidenav-menugroup.opened+.o-app-sidenav-menugroup-items-container{padding-left:16px;box-sizing:border-box;width:100%;overflow:hidden}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-1>.o-app-sidenav-menugroup.opened+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-group a,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-1>.o-app-sidenav-menugroup.opened+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-item a{font-size:12px;line-height:36px;height:36px;max-width:100%;overflow:hidden}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-1>.o-app-sidenav-menugroup.opened+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-group a .mat-mdc-button-touch-target,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-1>.o-app-sidenav-menugroup.opened+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-item a .mat-mdc-button-touch-target{height:36px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-1>.o-app-sidenav-menugroup.opened+.o-app-sidenav-menugroup-items-container a .mdc-button__label{padding-left:6px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-2 a{font-size:12px;line-height:36px;height:36px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-2 a .mat-mdc-button-touch-target{height:36px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-2>.o-app-sidenav-menugroup.opened+.o-app-sidenav-menugroup-items-container{padding-left:32px;box-sizing:border-box;width:100%;overflow:hidden}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-2>.o-app-sidenav-menugroup.opened+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-group a,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-2>.o-app-sidenav-menugroup.opened+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-item a{font-size:11px;line-height:32px;height:32px;max-width:100%;overflow:hidden}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-2>.o-app-sidenav-menugroup.opened+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-group a .mat-mdc-button-touch-target,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-2>.o-app-sidenav-menugroup.opened+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-item a .mat-mdc-button-touch-target{height:32px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-2>.o-app-sidenav-menugroup.opened+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-group a .mat-icon,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-2>.o-app-sidenav-menugroup.opened+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-item a .mat-icon{font-size:20px;height:20px;width:20px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed{text-align:center}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed .mat-drawer-inner-container{margin:0;width:100%}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed .mat-drawer-inner-container .sidenav-toggle{padding:8px 16px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed .o-app-sidenav-item:not(.o-user-info){cursor:pointer}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed .o-app-sidenav-item.o-user-info:focus,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed .o-app-sidenav-item.o-user-info:hover{color:inherit}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed .o-app-sidenav-menugroup,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed .o-app-sidenav-menuitem{display:inline-block;text-align:center}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed nav{width:56px;min-width:56px;margin-left:auto}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed nav a{line-height:40px;height:40px;width:40px;min-width:40px;padding:0;margin:0}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed nav a .mat-icon{margin:auto}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed nav a .mdc-button__label{width:100%;display:flex;align-items:center;justify-content:center;height:100%}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed nav a .o-layout-align-start-center{justify-content:center}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed .o-app-sidenav-image .o-app-sidenav-image-container{padding:0;text-align:end;max-height:36px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed .o-app-sidenav-image .o-app-sidenav-image-container .o-app-sidenav-image{max-height:36px;margin-right:8px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closing{transform:translate3d(-183px,0,0)}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .o-app-sidenav-menugroup-arrow{display:flex}\n"] }]
|
|
258
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-sidenav-container class=\"o-app-sidenav-container\" [class.opened]=\"sidenav.opened\"\n [class.o-app-sidenav-mode-desktop]=\"(layoutMode || 'desktop') === 'desktop'\"\n [class.o-app-sidenav-mode-mobile]=\"(layoutMode || 'desktop') !== 'desktop'\">\n\n <mat-sidenav #sidenav class=\"o-app-sidenav-sidenav o-scroll\" [opened]=\"isSidenavOpened()\"\n [mode]=\"(sidenavMode || ((layoutMode || 'desktop') === 'desktop' ? 'side' : 'over'))\" [class.mat-drawer-opened]=\"sidenav.opened\"\n [class.mat-drawer-closed]=\"!sidenav.opened\" [class.ellipsis-menu-items]=\"showEllipsisMenu\" (openedChange)=\"sidenavOpenedChange()\"\n (closedStart)=\"sidenavClosedStart()\" (openedStart)=\"sidenavOpenedStart()\">\n <div class=\"sidenav-wrapper o-flex-column\">\n @if (isDesktopMode()) {\n <div class=\"sidenav-toggle-container o-flex-row o-layout-align-end-center\">\n <mat-icon id=\"sidenav-menu\" class=\"sidenav-toggle\" (click)=\"toggleSidenav()\">menu</mat-icon>\n </div>\n }\n\n <o-app-sidenav-image [opened-src]=\"openedSidenavImg\" [closed-src]=\"closedSidenavImg\"> </o-app-sidenav-image>\n <ng-content select=\"o-app-layout-sidenav-projection-start\"></ng-content>\n <div class=\"navMenu\">\n @for (menuRootItem of menuRootArray; track menuRootItem) {\n <nav>\n @if (appMenuService.getMenuItemType(menuRootItem) !== 'group' && appMenuService.isVisible(menuRootItem)) {\n <ul>\n <o-app-sidenav-menu-item [menu-item]=\"menuRootItem\" [menu-item-type]=\"appMenuService.getMenuItemType(menuRootItem)\"\n [sidenav-opened]=\"sidenav.opened\" (onClick)=\"onMenuItemClick()\">\n </o-app-sidenav-menu-item>\n </ul>\n }\n @if (appMenuService.getMenuItemType(menuRootItem) === 'group' && appMenuService.isVisible(menuRootItem)) {\n <o-app-sidenav-menu-group [menu-group]=\"menuRootItem\" [sidenav-opened]=\"sidenav.opened\" level=\"1\"\n (onItemClick)=\"onMenuItemClick()\">\n </o-app-sidenav-menu-group>\n }\n </nav>\n }\n </div>\n <div class=\"layout-sidenav-projection-end\">\n <ng-content select=\"o-app-layout-sidenav-projection-end\"></ng-content>\n </div>\n </div>\n </mat-sidenav>\n\n <mat-sidenav-content class=\"o-app-sidenav-content\">\n <ng-content></ng-content>\n </mat-sidenav-content>\n</mat-sidenav-container>\n", styles: [".o-app-sidenav{font-weight:400}.o-app-sidenav .navMenu{flex:1;display:flex;flex-direction:column;overflow-y:auto;overflow-x:hidden}@-moz-document url-prefix(){.o-app-sidenav .navMenu{height:100%}}.o-app-sidenav .o-app-sidenav-menu-group a,.o-app-sidenav .o-app-sidenav-menu-item a{margin-left:8px}.o-app-sidenav .o-app-sidenav-menu-group a .mat-icon svg,.o-app-sidenav .o-app-sidenav-menu-item a .mat-icon svg{display:flex}.o-app-sidenav .o-app-sidenav-menu-group[disabled=true] .mat-button-focus-overlay,.o-app-sidenav .o-app-sidenav-menu-group[disabled=true] .mat-mdc-button-persistent-ripple,.o-app-sidenav .o-app-sidenav-menu-item[disabled=true] .mat-button-focus-overlay,.o-app-sidenav .o-app-sidenav-menu-item[disabled=true] .mat-mdc-button-persistent-ripple{display:none}.o-app-sidenav .o-app-sidenav-menu-group[disabled=true] .o-app-sidenav-item,.o-app-sidenav .o-app-sidenav-menu-item[disabled=true] .o-app-sidenav-item{opacity:.5}.o-app-sidenav .o-app-sidenav-menu-group[disabled=true] a,.o-app-sidenav .o-app-sidenav-menu-item[disabled=true] a{cursor:initial}.o-app-sidenav .o-app-sidenav-menugroup{transition:background-color .5s}.o-app-sidenav .o-app-sidenav-menugroup-items-container{overflow:hidden}.o-app-sidenav .o-app-sidenav-container{width:100%;height:100%}.o-app-sidenav .o-app-sidenav-container.o-app-sidenav-mode-desktop:not(.opened) .o-app-sidenav-sidenav.mat-drawer-closed{visibility:visible!important;transform:translate3d(-183px,0,0)}.o-app-sidenav .o-app-sidenav-container.o-app-sidenav-mode-desktop:not(.opened) .o-app-sidenav-content.mat-drawer-content{margin-right:56px!important;transform:translate3d(56px,0,0)!important}.o-app-sidenav .o-app-sidenav-container .o-app-sidenav-content{position:absolute;right:0;left:0;min-height:100%;display:flex;flex-direction:column}.o-app-sidenav .o-app-sidenav-container .o-app-sidenav-content router-outlet+*{flex-grow:1}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav{width:240px;bottom:0;overflow:hidden;height:100%;display:flex}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .mat-drawer-inner-container{display:flex;margin:0 8px;width:calc(100% - 16px)}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .mat-drawer-inner-container .sidenav-wrapper{flex:1}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.ellipsis-menu-items,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.ellipsis-menu-items .mat-drawer-inner-container{display:block}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.ellipsis-menu-items .sidenav-wrapper{height:100%;width:100%}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .o-app-sidenav-content-container{padding-bottom:16px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .sidenav-toggle-container{height:48px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .sidenav-toggle{padding:4px 12px 8px;cursor:pointer}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav ul{list-style-type:none;margin:0;padding:0}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav ul li{margin:0;padding:0}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav nav{width:100%}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav nav a{border-radius:8px;box-sizing:border-box;display:block;line-height:40px;height:40px;font-size:14px;max-width:100%;margin-bottom:2px;font-weight:400}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav nav a>.mat-icon{vertical-align:middle;height:24px;width:24px;font-size:24px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menugroup{transition:padding .5s 0s}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menugroup .o-app-sidenav-menugroup-arrow{transition:.5s transform cubic-bezier(.25,.8,.25,1)}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menugroup .o-app-sidenav-menugroup-arrow.opened{transform:rotate(90deg)}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menugroup mat-icon:not(.o-app-sidenav-menugroup-arrow),.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menuitem mat-icon:not(.o-app-sidenav-menugroup-arrow){margin-right:16px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) o-app-sidenav-menu-group a,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) o-app-sidenav-menu-item a{padding:0 16px;margin:0;display:flex;width:100%}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) o-app-sidenav-menu-group a .mdc-button__label,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) o-app-sidenav-menu-item a .mdc-button__label{display:flex;min-width:0;flex:1;overflow:hidden}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) o-app-sidenav-menu-group a .mdc-button__label>div,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) o-app-sidenav-menu-item a .mdc-button__label>div{display:flex;align-items:center;min-width:0;width:100%;overflow:hidden}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) o-app-sidenav-menu-group a .mdc-button__label>div .o-app-sidenav-menuitem-title,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) o-app-sidenav-menu-group a .mdc-button__label>div .o-app-sidenav-menugroup-title,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) o-app-sidenav-menu-item a .mdc-button__label>div .o-app-sidenav-menuitem-title,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) o-app-sidenav-menu-item a .mdc-button__label>div .o-app-sidenav-menugroup-title{min-width:0;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-1 a{font-size:14px;line-height:40px;height:40px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-1>.o-app-sidenav-menugroup.opened+.o-app-sidenav-menugroup-items-container{padding-left:16px;box-sizing:border-box;width:100%;overflow:hidden}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-1>.o-app-sidenav-menugroup.opened+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-group a,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-1>.o-app-sidenav-menugroup.opened+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-item a{font-size:12px;line-height:36px;height:36px;max-width:100%;overflow:hidden}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-1>.o-app-sidenav-menugroup.opened+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-group a .mat-mdc-button-touch-target,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-1>.o-app-sidenav-menugroup.opened+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-item a .mat-mdc-button-touch-target{height:36px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-1>.o-app-sidenav-menugroup.opened+.o-app-sidenav-menugroup-items-container a .mdc-button__label{padding-left:6px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-2 a{font-size:12px;line-height:36px;height:36px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-2 a .mat-mdc-button-touch-target{height:36px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-2>.o-app-sidenav-menugroup.opened+.o-app-sidenav-menugroup-items-container{padding-left:32px;box-sizing:border-box;width:100%;overflow:hidden}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-2>.o-app-sidenav-menugroup.opened+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-group a,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-2>.o-app-sidenav-menugroup.opened+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-item a{font-size:11px;line-height:32px;height:32px;max-width:100%;overflow:hidden}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-2>.o-app-sidenav-menugroup.opened+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-group a .mat-mdc-button-touch-target,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-2>.o-app-sidenav-menugroup.opened+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-item a .mat-mdc-button-touch-target{height:32px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-2>.o-app-sidenav-menugroup.opened+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-group a .mat-icon,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-2>.o-app-sidenav-menugroup.opened+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-item a .mat-icon{font-size:20px;height:20px;width:20px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed{text-align:center}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed .mat-drawer-inner-container{margin:0;width:100%}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed .mat-drawer-inner-container .sidenav-toggle{padding:8px 16px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed .o-app-sidenav-item:not(.o-user-info){cursor:pointer}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed .o-app-sidenav-item.o-user-info:focus,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed .o-app-sidenav-item.o-user-info:hover{color:inherit}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed .o-app-sidenav-menugroup,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed .o-app-sidenav-menuitem{display:inline-block;text-align:center}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed nav{width:56px;min-width:56px;margin-left:auto}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed nav a{line-height:40px;height:40px;width:40px;min-width:40px;padding:0;margin:0}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed nav a .mat-icon{margin:auto}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed nav a .mdc-button__label{width:100%;display:flex;align-items:center;justify-content:center;height:100%}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed nav a .o-layout-align-start-center{justify-content:center}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed .o-app-sidenav-image .o-app-sidenav-image-container{padding:0;text-align:end;max-height:36px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed .o-app-sidenav-image .o-app-sidenav-image-container .o-app-sidenav-image{max-height:36px;margin-right:8px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closing{transform:translate3d(-183px,0,0)}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .o-app-sidenav-menugroup-arrow{display:flex}\n"] }]
|
|
259
259
|
}], ctorParameters: () => [{ type: i0.Injector }, { type: i1.Router }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i2.BreakpointObserver }], propDecorators: { sidenav: [{
|
|
260
260
|
type: ViewChild,
|
|
261
261
|
args: [MatSidenav]
|
|
@@ -266,4 +266,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
266
266
|
type: HostListener,
|
|
267
267
|
args: ['window:resize', []]
|
|
268
268
|
}] } });
|
|
269
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby1hcHAtc2lkZW5hdi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvY29tcG9uZW50cy9hcHAtc2lkZW5hdi9vLWFwcC1zaWRlbmF2LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9jb21wb25lbnRzL2FwcC1zaWRlbmF2L28tYXBwLXNpZGVuYXYuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFVBQVUsRUFDVixZQUFZLEVBQ1osUUFBUSxFQUdSLFNBQVMsRUFDVCxpQkFBaUIsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsV0FBVyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFdEUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDbEYsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0saURBQWlELENBQUM7QUFDaEcsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDN0YsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBR3pDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBRXpFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNqRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQVksTUFBTSxvQ0FB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LG1FQUtVLFVBQVUsdUVDMUV2Qix3OEVBNkNBLGdvWkRZWSxnQkFBZ0IsMFlBQUUsYUFBYSxvTEFBRSx5QkFBeUIsc0dBQUUsNEJBQTRCLGlLQUFFLDZCQUE2Qjs7QUEwQnZIO0lBRFQscUJBQXFCLEVBQUU7O29EQUNTOzRGQVh0QixvQkFBb0I7a0JBakJoQyxTQUFTO2lDQUNJLElBQUksV0FDUCxDQUFDLGdCQUFnQixFQUFFLGFBQWEsRUFBRSx5QkFBeUIsRUFBRSw0QkFBNEIsRUFBRSw2QkFBNkIsQ0FBQyxZQUN4SCxlQUFlLFVBQ2pCLDRCQUE0QixXQUMzQiw2QkFBNkIsaUJBR3ZCLGlCQUFpQixDQUFDLElBQUksUUFDL0I7d0JBQ0osdUJBQXVCLEVBQUUsTUFBTTtxQkFDaEMsYUFDVTt3QkFDVCxFQUFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUscUJBQXFCLENBQUMsRUFBRTtxQkFDbEYsbUJBQ2dCLHVCQUF1QixDQUFDLE1BQU07NExBSy9DLE9BQU87c0JBRE4sU0FBUzt1QkFBQyxVQUFVO2dCQVNYLE1BQU0sTUE0RmhCLG1CQUFtQjtzQkFEbEIsWUFBWTt1QkFBQyxxQkFBcUIsRUFBRSxFQUFFO2dCQThCdkMsUUFBUTtzQkFEUCxZQUFZO3VCQUFDLGVBQWUsRUFBRSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgZm9yd2FyZFJlZixcbiAgSG9zdExpc3RlbmVyLFxuICBJbmplY3RvcixcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBNYXRTaWRlbmF2TW9kdWxlLCBNYXRTaWRlbmF2IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2lkZW5hdic7XG5pbXBvcnQgeyBCcmVha3BvaW50T2JzZXJ2ZXIsIEJyZWFrcG9pbnRzIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2xheW91dCc7XG5cbmltcG9ydCB7IE9BcHBTaWRlbmF2SW1hZ2VDb21wb25lbnQgfSBmcm9tICcuL2ltYWdlL28tYXBwLXNpZGVuYXYtaW1hZ2UuY29tcG9uZW50JztcbmltcG9ydCB7IE9BcHBTaWRlbmF2TWVudUdyb3VwQ29tcG9uZW50IH0gZnJvbSAnLi9tZW51LWdyb3VwL28tYXBwLXNpZGVuYXYtbWVudS1ncm91cC5jb21wb25lbnQnO1xuaW1wb3J0IHsgT0FwcFNpZGVuYXZNZW51SXRlbUNvbXBvbmVudCB9IGZyb20gJy4vbWVudS1pdGVtL28tYXBwLXNpZGVuYXYtbWVudS1pdGVtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IEJvb2xlYW5JbnB1dENvbnZlcnRlciB9IGZyb20gJy4uLy4uL2RlY29yYXRvcnMvaW5wdXQtY29udmVydGVyJztcbmltcG9ydCB7IE1lbnVHcm91cCwgTWVudUl0ZW1Vc2VySW5mbyB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvYXBwLW1lbnUuaW50ZXJmYWNlJztcbmltcG9ydCB7IEFwcE1lbnVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYXBwLW1lbnUuc2VydmljZSc7XG5pbXBvcnQgeyBPVXNlckluZm9TZXJ2aWNlLCBVc2VySW5mbyB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL28tdXNlci1pbmZvLnNlcnZpY2UnO1xuaW1wb3J0IHsgT0FwcFNpZGVuYXZDb21wb25lbnRTdGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9zdGF0ZS9vLWFwcC1tZW51LWNvbXBvbmVudC1zdGF0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IE1lbnVSb290SXRlbSB9IGZyb20gJy4uLy4uL3R5cGVzL21lbnUtcm9vdC1pdGVtLnR5cGUnO1xuaW1wb3J0IHsgQ29kZXMsIE9BcHBMYXlvdXRNb2RlLCBPU2lkZW5hdk1vZGUgfSBmcm9tICcuLi8uLi91dGlsL2NvZGVzJztcbmltcG9ydCB7IFV0aWwgfSBmcm9tICcuLi8uLi91dGlsL3V0aWwnO1xuaW1wb3J0IHsgT0FwcFNpZGVuYXZCYXNlIH0gZnJvbSAnLi9vLWFwcC1zaWRlbmF2LWJhc2UuY2xhc3MnO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9JTlBVVFNfT19BUFBfU0lERU5BViA9IFtcbiAgJ29wZW5lZCcsXG4gICdzaG93VXNlckluZm86IHNob3ctdXNlci1pbmZvJyxcbiAgJ3Nob3dUb2dnbGVCdXR0b246IHNob3ctdG9nZ2xlLWJ1dHRvbicsXG4gICdvcGVuZWRTaWRlbmF2SW1nOiBvcGVuZWQtc2lkZW5hdi1pbWFnZScsXG4gICdjbG9zZWRTaWRlbmF2SW1nOiBjbG9zZWQtc2lkZW5hdi1pbWFnZScsXG4gICdsYXlvdXRNb2RlOiBsYXlvdXQtbW9kZScsXG4gICdzaWRlbmF2TW9kZTogc2lkZW5hdi1tb2RlJyxcbiAgJ3N0b3JlU3RhdGU6IHN0b3JlLXN0YXRlJyxcbiAgJ3Nob3dFbGxpcHNpc01lbnU6IHNob3ctZWxsaXBzaXMtbWVudSdcbl07XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX09VVFBVVFNfT19BUFBfU0lERU5BViA9IFtcbiAgJ29uU2lkZW5hdk9wZW5lZENoYW5nZScsXG4gICdvblNpZGVuYXZPcGVuZWRTdGFydCcsXG4gICdvblNpZGVuYXZDbG9zZWRTdGFydCcsXG4gICdvblNpZGVuYXZUb2dnbGUnLFxuICAnYWZ0ZXJTaWRlbmF2VG9nZ2xlJ1xuXTtcblxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtNYXRTaWRlbmF2TW9kdWxlLCBNYXRJY29uTW9kdWxlLCBPQXBwU2lkZW5hdkltYWdlQ29tcG9uZW50LCBPQXBwU2lkZW5hdk1lbnVJdGVtQ29tcG9uZW50LCBPQXBwU2lkZW5hdk1lbnVHcm91cENvbXBvbmVudF0sXG4gIHNlbGVjdG9yOiAnby1hcHAtc2lkZW5hdicsXG4gIGlucHV0czogREVGQVVMVF9JTlBVVFNfT19BUFBfU0lERU5BVixcbiAgb3V0cHV0czogREVGQVVMVF9PVVRQVVRTX09fQVBQX1NJREVOQVYsXG4gIHRlbXBsYXRlVXJsOiAnLi9vLWFwcC1zaWRlbmF2LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vby1hcHAtc2lkZW5hdi5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBob3N0OiB7XG4gICAgJ1tjbGFzcy5vLWFwcC1zaWRlbmF2XSc6ICd0cnVlJ1xuICB9LFxuICBwcm92aWRlcnM6IFtcbiAgICB7IHByb3ZpZGU6IE9BcHBTaWRlbmF2QmFzZSwgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gT0FwcFNpZGVuYXZDb21wb25lbnQpIH1cbiAgXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgT0FwcFNpZGVuYXZDb21wb25lbnQgZXh0ZW5kcyBPQXBwU2lkZW5hdkNvbXBvbmVudFN0YXRlU2VydmljZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlclZpZXdJbml0IHtcblxuICBAVmlld0NoaWxkKE1hdFNpZGVuYXYpXG4gIHNpZGVuYXY6IE1hdFNpZGVuYXY7XG5cbiAgcHJvdGVjdGVkIHJvdXRlclN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBhcHBNZW51U2VydmljZTogQXBwTWVudVNlcnZpY2U7XG4gIG1lbnVSb290QXJyYXk6IE1lbnVSb290SXRlbVtdID0gW107XG4gIHByb3RlY3RlZCBfbGF5b3V0TW9kZTogT0FwcExheW91dE1vZGUgPSBDb2Rlcy5BUFBfTEFZT1VUX01PREVfREVTS1RPUDtcbiAgcHJvdGVjdGVkIF9zaWRlbmF2TW9kZTogT1NpZGVuYXZNb2RlO1xuICBAQm9vbGVhbklucHV0Q29udmVydGVyKClcbiAgcHJvdGVjdGVkIG9wZW5lZDogYm9vbGVhbiA9IHRydWU7XG5cbiAgc2hvd0VsbGlwc2lzTWVudTogYm9vbGVhbiA9IGZhbHNlO1xuICBfc2hvd1VzZXJJbmZvOiBib29sZWFuID0gdHJ1ZTtcbiAgX3Nob3dUb2dnbGVCdXR0b246IGJvb2xlYW4gPSB0cnVlO1xuICBvcGVuZWRTaWRlbmF2SW1nOiBzdHJpbmc7XG4gIGNsb3NlZFNpZGVuYXZJbWc6IHN0cmluZztcblxuICBvblNpZGVuYXZPcGVuZWRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgb25TaWRlbmF2T3BlbmVkU3RhcnQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgb25TaWRlbmF2Q2xvc2VkU3RhcnQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgb25TaWRlbmF2VG9nZ2xlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIGFmdGVyU2lkZW5hdlRvZ2dsZTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICBwcm90ZWN0ZWQgb1VzZXJJbmZvU2VydmljZTogT1VzZXJJbmZvU2VydmljZTtcbiAgcHJvdGVjdGVkIHVzZXJJbmZvU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHByb3RlY3RlZCBwZXJtaXNzaW9uU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHByb3RlY3RlZCB1c2VySW5mbzogVXNlckluZm87XG5cbiAgcHJvdGVjdGVkIG1lZGlhV2F0Y2g6IFN1YnNjcmlwdGlvbjtcbiAgcHJvdGVjdGVkIG1hbnVhbGx5Q2xvc2VkOiBib29sZWFuID0gZmFsc2U7XG4gIG9uUm91dGVDaGFuZ2VTdG9yYWdlU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHN0b3JlU3RhdGU6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJvdGVjdGVkIHJvdXRlcjogUm91dGVyLFxuICAgIHByb3RlY3RlZCBlbFJlZjogRWxlbWVudFJlZixcbiAgICBwcm90ZWN0ZWQgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByb3RlY3RlZCBtZWRpYTogQnJlYWtwb2ludE9ic2VydmVyXG4gICkge1xuICAgIHN1cGVyKGluamVjdG9yKTtcbiAgICB0aGlzLmFwcE1lbnVTZXJ2aWNlID0gdGhpcy5pbmplY3Rvci5nZXQoQXBwTWVudVNlcnZpY2UpO1xuICAgIHRoaXMubWVudVJvb3RBcnJheSA9IHRoaXMuYXBwTWVudVNlcnZpY2UuZ2V0TWVudVJvb3RzKCk7XG4gICAgdGhpcy5wZXJtaXNzaW9uU3Vic2NyaXB0aW9uID0gdGhpcy5hcHBNZW51U2VydmljZS5vblBlcm1pc3Npb25NZW51Q2hhbmdlZC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5yZWZyZXNoTWVudVJvb3RzKCkpO1xuICAgIHRoaXMub1VzZXJJbmZvU2VydmljZSA9IHRoaXMuaW5qZWN0b3IuZ2V0KE9Vc2VySW5mb1NlcnZpY2UpO1xuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgIHRoaXMubWVkaWFXYXRjaCA9IHRoaXMubWVkaWEub2JzZXJ2ZShbQnJlYWtwb2ludHMuWFNtYWxsXSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIGlmIChzZWxmLmlzU2NyZWVuU21hbGwoKSAmJiBzZWxmLnNpZGVuYXYpIHtcbiAgICAgICAgc2VsZi5zaWRlbmF2LmNsb3NlKCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5yZWdpc3RlckxvY2FsU3RvcmFnZVNlcnZpY2VSb3V0ZUNoYW5nZSgpO1xuICB9XG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMucm91dGVyU3Vic2NyaXB0aW9uID0gdGhpcy5yb3V0ZXIuZXZlbnRzLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5pc1NjcmVlblNtYWxsKCkpIHtcbiAgICAgICAgdGhpcy5zaWRlbmF2LmNsb3NlKCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLmluaXRpYWxpemUodGhpcyk7XG4gICAgdGhpcy5yZXN0b3JlTWVudUdyb3VwU3RhdGUoKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBpZiAodGhpcy5zaG93VXNlckluZm8gJiYgdGhpcy5zaG93VG9nZ2xlQnV0dG9uKSB7XG4gICAgICB0aGlzLnVzZXJJbmZvID0gdGhpcy5vVXNlckluZm9TZXJ2aWNlLmdldFVzZXJJbmZvKCk7XG4gICAgICB0aGlzLnVzZXJJbmZvU3Vic2NyaXB0aW9uID0gdGhpcy5vVXNlckluZm9TZXJ2aWNlLmdldFVzZXJJbmZvT2JzZXJ2YWJsZSgpLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICB0aGlzLnVzZXJJbmZvID0gcmVzO1xuICAgICAgICB0aGlzLnJlZnJlc2hNZW51SXRlbVVzZXJJbmZvKCk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgdGhpcy5yZWZyZXNoTWVudUl0ZW1Vc2VySW5mbygpO1xuICB9XG5cbiAgZ2V0RGF0YVRvU3RvcmUoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZTtcblxuICB9XG5cbiAgcmVzdG9yZU1lbnVHcm91cFN0YXRlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmxvY2FsU3RvcmFnZVNlcnZpY2UgJiYgdGhpcy5zdG9yZVN0YXRlKSB7XG4gICAgICBsZXQgbWVudVN0YXRlOiB7IGlkOiBzdHJpbmcsIG9wZW5lZDogYm9vbGVhbiB9W10gPSB0aGlzLnN0YXRlLm1lbnUgPz8gW107XG5cbiAgICAgIHRoaXMubWVudVJvb3RBcnJheS5mb3JFYWNoKChncm91cDogTWVudUdyb3VwKSA9PiB7XG4gICAgICAgIGNvbnN0IHNhdmVkU3RhdGUgPSBtZW51U3RhdGUuZmluZChtZW51T3B0aW9uID0+IG1lbnVPcHRpb24uaWQgPT09IGdyb3VwLmlkKTtcbiAgICAgICAgaWYgKHNhdmVkU3RhdGUpIHtcbiAgICAgICAgICBncm91cC5vcGVuZWQgPSBzYXZlZFN0YXRlLm9wZW5lZDtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0Q29tcG9uZW50S2V5KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICdPQXBwU2lkZW5hdkNvbXBvbmVudCc7XG4gIH1cblxuICBnZXRSb3V0ZUtleSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6YmVmb3JldW5sb2FkJywgW10pXG4gIGJlZm9yZXVubG9hZEhhbmRsZXIoKSB7XG4gICAgdGhpcy51cGRhdGVTdGF0ZVN0b3JhZ2UoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCByZWdpc3RlckxvY2FsU3RvcmFnZVNlcnZpY2VSb3V0ZUNoYW5nZSgpIHtcbiAgICBpZiAodGhpcy5zdG9yZVN0YXRlKSB7XG4gICAgICB0aGlzLm9uUm91dGVDaGFuZ2VTdG9yYWdlU3Vic2NyaXB0aW9uID0gdGhpcy5sb2NhbFN0b3JhZ2VTZXJ2aWNlLm9uUm91dGVDaGFuZ2Uuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgIHRoaXMudXBkYXRlU3RhdGVTdG9yYWdlKCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUGVyc2lzdHMgdGhlIGN1cnJlbnQgY29tcG9uZW50IHN0YXRlIGluIGxvY2FsIHN0b3JhZ2Ugd2hlbiBlbmFibGVkLlxuICAgKlxuICAgKiBTdG9yZXMgbWVudS1yZWxhdGVkIHN0YXRlIG9ubHkgaWYgdGhlIHN0YXRlIHBlcnNpc3RlbmNlIGlzIGVuYWJsZWQuXG4gICAqL1xuICBwdWJsaWMgdXBkYXRlU3RhdGVTdG9yYWdlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmxvY2FsU3RvcmFnZVNlcnZpY2UgJiYgdGhpcy5zdG9yZVN0YXRlKSB7XG4gICAgICB0aGlzLnN0b3JlTWVudSgpO1xuICAgIH1cbiAgfVxuXG4gIHJlZnJlc2hNZW51Um9vdHMoKTogdm9pZCB7XG4gICAgdGhpcy5tZW51Um9vdEFycmF5ID0gWy4uLnRoaXMuYXBwTWVudVNlcnZpY2UuZ2V0TWVudVJvb3RzKCldO1xuICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScsIFtdKVxuICBvblJlc2l6ZSgpIHtcbiAgICBpZiAoIXRoaXMubWFudWFsbHlDbG9zZWQgJiYgIXRoaXMuaXNTY3JlZW5TbWFsbCgpICYmICF0aGlzLmlzTW9iaWxlTW9kZSgpKSB7XG4gICAgICB0aGlzLnNpZGVuYXYub3BlbigpO1xuICAgIH1cbiAgfVxuXG5cbiAgZ2V0IGxheW91dE1vZGUoKTogT0FwcExheW91dE1vZGUge1xuICAgIHJldHVybiB0aGlzLl9sYXlvdXRNb2RlO1xuICB9XG5cbiAgc2V0IGxheW91dE1vZGUodmFsOiBPQXBwTGF5b3V0TW9kZSkge1xuICAgIGNvbnN0IG0gPSBDb2Rlcy5PQXBwTGF5b3V0TW9kZXMuZmluZChlID0+IGUgPT09IHZhbCk7XG4gICAgaWYgKFV0aWwuaXNEZWZpbmVkKG0pKSB7XG4gICAgICB0aGlzLl9sYXlvdXRNb2RlID0gbTtcbiAgICB9XG4gIH1cblxuICBnZXQgc2lkZW5hdk1vZGUoKTogT1NpZGVuYXZNb2RlIHtcbiAgICByZXR1cm4gdGhpcy5fc2lkZW5hdk1vZGU7XG4gIH1cblxuICBzZXQgc2lkZW5hdk1vZGUodmFsOiBPU2lkZW5hdk1vZGUpIHtcbiAgICBjb25zdCBtID0gQ29kZXMuT1NpZGVuYXZNb2Rlcy5maW5kKGUgPT4gZSA9PT0gdmFsKTtcbiAgICBpZiAoVXRpbC5pc0RlZmluZWQobSkpIHtcbiAgICAgIHRoaXMuX3NpZGVuYXZNb2RlID0gbTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVmcmVzaE1lbnVJdGVtVXNlckluZm8oKSB7XG4gICAgaWYgKHRoaXMuc2hvd1VzZXJJbmZvICYmIHRoaXMudXNlckluZm8gJiYgdGhpcy5fc2hvd1RvZ2dsZUJ1dHRvbikge1xuICAgICAgY29uc3QgZmlyc3RSb290ID0gdGhpcy5tZW51Um9vdEFycmF5WzBdO1xuICAgICAgY29uc3QgYWxyZWFkeUV4aXN0c1VzZXJJbmZvID0gZmlyc3RSb290ID8gZmlyc3RSb290LmlkID09PSAndXNlci1pbmZvJyA6IGZhbHNlO1xuICAgICAgaWYgKGFscmVhZHlFeGlzdHNVc2VySW5mbykge1xuICAgICAgICBjb25zdCB1c2VySW5mb0l0ZW06IE1lbnVJdGVtVXNlckluZm8gPSAodGhpcy5tZW51Um9vdEFycmF5WzBdIGFzIE1lbnVHcm91cCkuaXRlbXNbMF0gYXMgTWVudUl0ZW1Vc2VySW5mbztcbiAgICAgICAgdXNlckluZm9JdGVtLmlkID0gdGhpcy51c2VySW5mby51c2VybmFtZTtcbiAgICAgICAgdXNlckluZm9JdGVtLm5hbWUgPSB0aGlzLnVzZXJJbmZvLnVzZXJuYW1lO1xuICAgICAgICB1c2VySW5mb0l0ZW0udXNlciA9IHRoaXMudXNlckluZm8udXNlcm5hbWU7XG4gICAgICAgIHVzZXJJbmZvSXRlbS5hdmF0YXIgPSB0aGlzLnVzZXJJbmZvLmF2YXRhcjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHVzZXJJbmZvSXRlbTogTWVudUl0ZW1Vc2VySW5mbyA9IHtcbiAgICAgICAgICBpZDogdGhpcy51c2VySW5mby51c2VybmFtZSxcbiAgICAgICAgICBuYW1lOiB0aGlzLnVzZXJJbmZvLnVzZXJuYW1lLFxuICAgICAgICAgIHVzZXI6IHRoaXMudXNlckluZm8udXNlcm5hbWUsXG4gICAgICAgICAgYXZhdGFyOiB0aGlzLnVzZXJJbmZvLmF2YXRhclxuICAgICAgICB9O1xuICAgICAgICBjb25zdCBtZW51R3JvdXBVc2VySW5mbzogTWVudUdyb3VwID0ge1xuICAgICAgICAgIGlkOiAndXNlci1pbmZvJyxcbiAgICAgICAgICBuYW1lOiAnQVBQX0xBWU9VVC5VU0VSX1BST0ZJTEUnLFxuICAgICAgICAgIGl0ZW1zOiBbdXNlckluZm9JdGVtXSxcbiAgICAgICAgICBvcGVuZWQ6IHRydWUsXG4gICAgICAgICAgaWNvbjogJ3BlcnNvbl9waW4nXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMubWVudVJvb3RBcnJheS51bnNoaWZ0KG1lbnVHcm91cFVzZXJJbmZvKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy5yb3V0ZXJTdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMucm91dGVyU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudXNlckluZm9TdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMudXNlckluZm9TdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5wZXJtaXNzaW9uU3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLnBlcm1pc3Npb25TdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBpc1NjcmVlblNtYWxsKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5tYW51YWxseUNsb3NlZCAmJiB0aGlzLm1lZGlhLmlzTWF0Y2hlZChCcmVha3BvaW50cy5YU21hbGwpO1xuICB9XG5cbiAgaXNNb2JpbGVNb2RlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9sYXlvdXRNb2RlID09PSBDb2Rlcy5BUFBfTEFZT1VUX01PREVfTU9CSUxFO1xuICB9XG5cbiAgaXNEZXNrdG9wTW9kZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fbGF5b3V0TW9kZSA9PT0gQ29kZXMuQVBQX0xBWU9VVF9NT0RFX0RFU0tUT1A7XG4gIH1cblxuICBpc1NpZGVuYXZPcGVuZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMub3BlbmVkICYmICF0aGlzLmlzTW9iaWxlTW9kZSgpICYmICF0aGlzLmlzU2NyZWVuU21hbGwoKTtcbiAgfVxuXG4gIHRvZ2dsZVNpZGVuYXYoKSB7XG4gICAgY29uc3QgcHJvbWlzZSA9IHRoaXMuc2lkZW5hdi5vcGVuZWQgPyB0aGlzLnNpZGVuYXYuY2xvc2UoKSA6IHRoaXMuc2lkZW5hdi5vcGVuKCk7XG4gICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgcHJvbWlzZS50aGVuKCgpID0+IHtcbiAgICAgIHNlbGYuYWZ0ZXJTaWRlbmF2VG9nZ2xlLmVtaXQoc2VsZi5zaWRlbmF2Lm9wZW5lZCk7XG4gICAgfSk7XG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgdGhpcy5vcGVuZWQgPSB0aGlzLnNpZGVuYXYub3BlbmVkO1xuICAgIHRoaXMubWFudWFsbHlDbG9zZWQgPSAhdGhpcy5vcGVuZWQ7XG4gICAgdGhpcy5vblNpZGVuYXZUb2dnbGUuZW1pdCh0aGlzLnNpZGVuYXYub3BlbmVkKTtcbiAgfVxuXG4gIGdldCBzaG93VXNlckluZm8oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3Nob3dVc2VySW5mbztcbiAgfVxuXG4gIHNldCBzaG93VXNlckluZm8oYXJnOiBib29sZWFuKSB7XG4gICAgdGhpcy5fc2hvd1VzZXJJbmZvID0gYXJnO1xuICB9XG5cbiAgZ2V0IHNob3dUb2dnbGVCdXR0b24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3Nob3dUb2dnbGVCdXR0b247XG4gIH1cblxuICBzZXQgc2hvd1RvZ2dsZUJ1dHRvbihhcmc6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9zaG93VG9nZ2xlQnV0dG9uID0gYXJnO1xuICB9XG5cbiAgb25NZW51SXRlbUNsaWNrKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzTW9iaWxlTW9kZSgpKSB7XG4gICAgICB0aGlzLnNpZGVuYXYuY2xvc2UoKTtcbiAgICB9XG4gIH1cblxuICBzaWRlbmF2Q2xvc2VkU3RhcnQoKSB7XG4gICAgdGhpcy5vblNpZGVuYXZDbG9zZWRTdGFydC5lbWl0KCk7XG4gIH1cblxuICBzaWRlbmF2T3BlbmVkU3RhcnQoKSB7XG4gICAgdGhpcy5vblNpZGVuYXZPcGVuZWRTdGFydC5lbWl0KCk7XG4gIH1cblxuICBzaWRlbmF2T3BlbmVkQ2hhbmdlKCkge1xuICAgIHRoaXMub25TaWRlbmF2T3BlbmVkQ2hhbmdlLmVtaXQoKTtcbiAgfVxufVxuXG4iLCI8bWF0LXNpZGVuYXYtY29udGFpbmVyIGNsYXNzPVwiby1hcHAtc2lkZW5hdi1jb250YWluZXJcIiBbY2xhc3Mub3BlbmVkXT1cInNpZGVuYXYub3BlbmVkXCJcbiAgW2NsYXNzLm8tYXBwLXNpZGVuYXYtbW9kZS1kZXNrdG9wXT1cIihsYXlvdXRNb2RlIHx8ICdkZXNrdG9wJykgPT09ICdkZXNrdG9wJ1wiXG4gIFtjbGFzcy5vLWFwcC1zaWRlbmF2LW1vZGUtbW9iaWxlXT1cIihsYXlvdXRNb2RlIHx8ICdkZXNrdG9wJykgIT09ICdkZXNrdG9wJ1wiPlxuXG4gIDxtYXQtc2lkZW5hdiAjc2lkZW5hdiBjbGFzcz1cIm8tYXBwLXNpZGVuYXYtc2lkZW5hdiBvLXNjcm9sbFwiIFtvcGVuZWRdPVwiaXNTaWRlbmF2T3BlbmVkKClcIlxuICAgIFttb2RlXT1cIihzaWRlbmF2TW9kZSB8fCAoKGxheW91dE1vZGUgfHwgJ2Rlc2t0b3AnKSA9PT0gJ2Rlc2t0b3AnID8gJ3NpZGUnIDogJ292ZXInKSlcIiBbY2xhc3MubWF0LWRyYXdlci1vcGVuZWRdPVwic2lkZW5hdi5vcGVuZWRcIlxuICAgIFtjbGFzcy5tYXQtZHJhd2VyLWNsb3NlZF09XCIhc2lkZW5hdi5vcGVuZWRcIiBbY2xhc3MuZWxsaXBzaXMtbWVudS1pdGVtc109XCJzaG93RWxsaXBzaXNNZW51XCIgKG9wZW5lZENoYW5nZSk9XCJzaWRlbmF2T3BlbmVkQ2hhbmdlKClcIlxuICAgIChjbG9zZWRTdGFydCk9XCJzaWRlbmF2Q2xvc2VkU3RhcnQoKVwiIChvcGVuZWRTdGFydCk9XCJzaWRlbmF2T3BlbmVkU3RhcnQoKVwiPlxuICAgIDxkaXYgY2xhc3M9XCJzaWRlbmF2LXdyYXBwZXIgby1mbGV4LWNvbHVtblwiPlxuICAgICAgQGlmIChpc0Rlc2t0b3BNb2RlKCkpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cInNpZGVuYXYtdG9nZ2xlLWNvbnRhaW5lciBvLWZsZXgtcm93IG8tbGF5b3V0LWFsaWduLWVuZC1jZW50ZXJcIj5cbiAgICAgICAgICA8bWF0LWljb24gaWQ9XCJzaWRlbmF2LW1lbnVcIiBjbGFzcz1cInNpZGVuYXYtdG9nZ2xlXCIgKGNsaWNrKT1cInRvZ2dsZVNpZGVuYXYoKVwiPm1lbnU8L21hdC1pY29uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cblxuICAgICAgPG8tYXBwLXNpZGVuYXYtaW1hZ2UgW29wZW5lZC1zcmNdPVwib3BlbmVkU2lkZW5hdkltZ1wiIFtjbG9zZWQtc3JjXT1cImNsb3NlZFNpZGVuYXZJbWdcIj4gPC9vLWFwcC1zaWRlbmF2LWltYWdlPlxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiby1hcHAtbGF5b3V0LXNpZGVuYXYtcHJvamVjdGlvbi1zdGFydFwiPjwvbmctY29udGVudD5cbiAgICAgIDxkaXYgY2xhc3M9XCJuYXZNZW51XCI+XG4gICAgICAgIEBmb3IgKG1lbnVSb290SXRlbSBvZiBtZW51Um9vdEFycmF5OyB0cmFjayBtZW51Um9vdEl0ZW0pIHtcbiAgICAgICAgICA8bmF2PlxuICAgICAgICAgICAgQGlmIChhcHBNZW51U2VydmljZS5nZXRNZW51SXRlbVR5cGUobWVudVJvb3RJdGVtKSAhPT0gJ2dyb3VwJyAmJiBhcHBNZW51U2VydmljZS5pc1Zpc2libGUobWVudVJvb3RJdGVtKSkge1xuICAgICAgICAgICAgICA8dWw+XG4gICAgICAgICAgICAgICAgPG8tYXBwLXNpZGVuYXYtbWVudS1pdGVtIFttZW51LWl0ZW1dPVwibWVudVJvb3RJdGVtXCIgW21lbnUtaXRlbS10eXBlXT1cImFwcE1lbnVTZXJ2aWNlLmdldE1lbnVJdGVtVHlwZShtZW51Um9vdEl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgIFtzaWRlbmF2LW9wZW5lZF09XCJzaWRlbmF2Lm9wZW5lZFwiIChvbkNsaWNrKT1cIm9uTWVudUl0ZW1DbGljaygpXCI+XG4gICAgICAgICAgICAgICAgPC9vLWFwcC1zaWRlbmF2LW1lbnUtaXRlbT5cbiAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAoYXBwTWVudVNlcnZpY2UuZ2V0TWVudUl0ZW1UeXBlKG1lbnVSb290SXRlbSkgPT09ICdncm91cCcgJiYgYXBwTWVudVNlcnZpY2UuaXNWaXNpYmxlKG1lbnVSb290SXRlbSkpIHtcbiAgICAgICAgICAgICAgPG8tYXBwLXNpZGVuYXYtbWVudS1ncm91cCBbbWVudS1ncm91cF09XCJtZW51Um9vdEl0ZW1cIiBbc2lkZW5hdi1vcGVuZWRdPVwic2lkZW5hdi5vcGVuZWRcIiBsZXZlbD1cIjFcIlxuICAgICAgICAgICAgICAgIChvbkl0ZW1DbGljayk9XCJvbk1lbnVJdGVtQ2xpY2soKVwiPlxuICAgICAgICAgICAgICA8L28tYXBwLXNpZGVuYXYtbWVudS1ncm91cD5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L25hdj5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0LXNpZGVuYXYtcHJvamVjdGlvbi1lbmRcIj5cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiby1hcHAtbGF5b3V0LXNpZGVuYXYtcHJvamVjdGlvbi1lbmRcIj48L25nLWNvbnRlbnQ+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9tYXQtc2lkZW5hdj5cblxuICA8bWF0LXNpZGVuYXYtY29udGVudCBjbGFzcz1cIm8tYXBwLXNpZGVuYXYtY29udGVudFwiPlxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgPC9tYXQtc2lkZW5hdi1jb250ZW50PlxuPC9tYXQtc2lkZW5hdi1jb250YWluZXI+XG4iXX0=
|
|
269
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby1hcHAtc2lkZW5hdi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvY29tcG9uZW50cy9hcHAtc2lkZW5hdi9vLWFwcC1zaWRlbmF2LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9jb21wb25lbnRzL2FwcC1zaWRlbmF2L28tYXBwLXNpZGVuYXYuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFVBQVUsRUFDVixZQUFZLEVBQ1osUUFBUSxFQUdSLFNBQVMsRUFDVCxpQkFBaUIsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsV0FBVyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFdEUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDbEYsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0saURBQWlELENBQUM7QUFDaEcsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDN0YsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBR3pDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBRXpFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNqRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQVksTUFBTSxvQ0FB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LG1FQUtVLFVBQVUsdUVDMUV2Qix3OEVBNkNBLGdwWkRZWSxnQkFBZ0IsMFlBQUUsYUFBYSxvTEFBRSx5QkFBeUIsc0dBQUUsNEJBQTRCLGlLQUFFLDZCQUE2Qjs7QUEwQnZIO0lBRFQscUJBQXFCLEVBQUU7O29EQUNTOzRGQVh0QixvQkFBb0I7a0JBakJoQyxTQUFTO2lDQUNJLElBQUksV0FDUCxDQUFDLGdCQUFnQixFQUFFLGFBQWEsRUFBRSx5QkFBeUIsRUFBRSw0QkFBNEIsRUFBRSw2QkFBNkIsQ0FBQyxZQUN4SCxlQUFlLFVBQ2pCLDRCQUE0QixXQUMzQiw2QkFBNkIsaUJBR3ZCLGlCQUFpQixDQUFDLElBQUksUUFDL0I7d0JBQ0osdUJBQXVCLEVBQUUsTUFBTTtxQkFDaEMsYUFDVTt3QkFDVCxFQUFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUscUJBQXFCLENBQUMsRUFBRTtxQkFDbEYsbUJBQ2dCLHVCQUF1QixDQUFDLE1BQU07NExBSy9DLE9BQU87c0JBRE4sU0FBUzt1QkFBQyxVQUFVO2dCQVNYLE1BQU0sTUE0RmhCLG1CQUFtQjtzQkFEbEIsWUFBWTt1QkFBQyxxQkFBcUIsRUFBRSxFQUFFO2dCQThCdkMsUUFBUTtzQkFEUCxZQUFZO3VCQUFDLGVBQWUsRUFBRSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgZm9yd2FyZFJlZixcbiAgSG9zdExpc3RlbmVyLFxuICBJbmplY3RvcixcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBNYXRTaWRlbmF2TW9kdWxlLCBNYXRTaWRlbmF2IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2lkZW5hdic7XG5pbXBvcnQgeyBCcmVha3BvaW50T2JzZXJ2ZXIsIEJyZWFrcG9pbnRzIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2xheW91dCc7XG5cbmltcG9ydCB7IE9BcHBTaWRlbmF2SW1hZ2VDb21wb25lbnQgfSBmcm9tICcuL2ltYWdlL28tYXBwLXNpZGVuYXYtaW1hZ2UuY29tcG9uZW50JztcbmltcG9ydCB7IE9BcHBTaWRlbmF2TWVudUdyb3VwQ29tcG9uZW50IH0gZnJvbSAnLi9tZW51LWdyb3VwL28tYXBwLXNpZGVuYXYtbWVudS1ncm91cC5jb21wb25lbnQnO1xuaW1wb3J0IHsgT0FwcFNpZGVuYXZNZW51SXRlbUNvbXBvbmVudCB9IGZyb20gJy4vbWVudS1pdGVtL28tYXBwLXNpZGVuYXYtbWVudS1pdGVtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IEJvb2xlYW5JbnB1dENvbnZlcnRlciB9IGZyb20gJy4uLy4uL2RlY29yYXRvcnMvaW5wdXQtY29udmVydGVyJztcbmltcG9ydCB7IE1lbnVHcm91cCwgTWVudUl0ZW1Vc2VySW5mbyB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvYXBwLW1lbnUuaW50ZXJmYWNlJztcbmltcG9ydCB7IEFwcE1lbnVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYXBwLW1lbnUuc2VydmljZSc7XG5pbXBvcnQgeyBPVXNlckluZm9TZXJ2aWNlLCBVc2VySW5mbyB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL28tdXNlci1pbmZvLnNlcnZpY2UnO1xuaW1wb3J0IHsgT0FwcFNpZGVuYXZDb21wb25lbnRTdGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9zdGF0ZS9vLWFwcC1tZW51LWNvbXBvbmVudC1zdGF0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IE1lbnVSb290SXRlbSB9IGZyb20gJy4uLy4uL3R5cGVzL21lbnUtcm9vdC1pdGVtLnR5cGUnO1xuaW1wb3J0IHsgQ29kZXMsIE9BcHBMYXlvdXRNb2RlLCBPU2lkZW5hdk1vZGUgfSBmcm9tICcuLi8uLi91dGlsL2NvZGVzJztcbmltcG9ydCB7IFV0aWwgfSBmcm9tICcuLi8uLi91dGlsL3V0aWwnO1xuaW1wb3J0IHsgT0FwcFNpZGVuYXZCYXNlIH0gZnJvbSAnLi9vLWFwcC1zaWRlbmF2LWJhc2UuY2xhc3MnO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9JTlBVVFNfT19BUFBfU0lERU5BViA9IFtcbiAgJ29wZW5lZCcsXG4gICdzaG93VXNlckluZm86IHNob3ctdXNlci1pbmZvJyxcbiAgJ3Nob3dUb2dnbGVCdXR0b246IHNob3ctdG9nZ2xlLWJ1dHRvbicsXG4gICdvcGVuZWRTaWRlbmF2SW1nOiBvcGVuZWQtc2lkZW5hdi1pbWFnZScsXG4gICdjbG9zZWRTaWRlbmF2SW1nOiBjbG9zZWQtc2lkZW5hdi1pbWFnZScsXG4gICdsYXlvdXRNb2RlOiBsYXlvdXQtbW9kZScsXG4gICdzaWRlbmF2TW9kZTogc2lkZW5hdi1tb2RlJyxcbiAgJ3N0b3JlU3RhdGU6IHN0b3JlLXN0YXRlJyxcbiAgJ3Nob3dFbGxpcHNpc01lbnU6IHNob3ctZWxsaXBzaXMtbWVudSdcbl07XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX09VVFBVVFNfT19BUFBfU0lERU5BViA9IFtcbiAgJ29uU2lkZW5hdk9wZW5lZENoYW5nZScsXG4gICdvblNpZGVuYXZPcGVuZWRTdGFydCcsXG4gICdvblNpZGVuYXZDbG9zZWRTdGFydCcsXG4gICdvblNpZGVuYXZUb2dnbGUnLFxuICAnYWZ0ZXJTaWRlbmF2VG9nZ2xlJ1xuXTtcblxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtNYXRTaWRlbmF2TW9kdWxlLCBNYXRJY29uTW9kdWxlLCBPQXBwU2lkZW5hdkltYWdlQ29tcG9uZW50LCBPQXBwU2lkZW5hdk1lbnVJdGVtQ29tcG9uZW50LCBPQXBwU2lkZW5hdk1lbnVHcm91cENvbXBvbmVudF0sXG4gIHNlbGVjdG9yOiAnby1hcHAtc2lkZW5hdicsXG4gIGlucHV0czogREVGQVVMVF9JTlBVVFNfT19BUFBfU0lERU5BVixcbiAgb3V0cHV0czogREVGQVVMVF9PVVRQVVRTX09fQVBQX1NJREVOQVYsXG4gIHRlbXBsYXRlVXJsOiAnLi9vLWFwcC1zaWRlbmF2LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vby1hcHAtc2lkZW5hdi5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBob3N0OiB7XG4gICAgJ1tjbGFzcy5vLWFwcC1zaWRlbmF2XSc6ICd0cnVlJ1xuICB9LFxuICBwcm92aWRlcnM6IFtcbiAgICB7IHByb3ZpZGU6IE9BcHBTaWRlbmF2QmFzZSwgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gT0FwcFNpZGVuYXZDb21wb25lbnQpIH1cbiAgXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgT0FwcFNpZGVuYXZDb21wb25lbnQgZXh0ZW5kcyBPQXBwU2lkZW5hdkNvbXBvbmVudFN0YXRlU2VydmljZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlclZpZXdJbml0IHtcblxuICBAVmlld0NoaWxkKE1hdFNpZGVuYXYpXG4gIHNpZGVuYXY6IE1hdFNpZGVuYXY7XG5cbiAgcHJvdGVjdGVkIHJvdXRlclN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBhcHBNZW51U2VydmljZTogQXBwTWVudVNlcnZpY2U7XG4gIG1lbnVSb290QXJyYXk6IE1lbnVSb290SXRlbVtdID0gW107XG4gIHByb3RlY3RlZCBfbGF5b3V0TW9kZTogT0FwcExheW91dE1vZGUgPSBDb2Rlcy5BUFBfTEFZT1VUX01PREVfREVTS1RPUDtcbiAgcHJvdGVjdGVkIF9zaWRlbmF2TW9kZTogT1NpZGVuYXZNb2RlO1xuICBAQm9vbGVhbklucHV0Q29udmVydGVyKClcbiAgcHJvdGVjdGVkIG9wZW5lZDogYm9vbGVhbiA9IHRydWU7XG5cbiAgc2hvd0VsbGlwc2lzTWVudTogYm9vbGVhbiA9IGZhbHNlO1xuICBfc2hvd1VzZXJJbmZvOiBib29sZWFuID0gdHJ1ZTtcbiAgX3Nob3dUb2dnbGVCdXR0b246IGJvb2xlYW4gPSB0cnVlO1xuICBvcGVuZWRTaWRlbmF2SW1nOiBzdHJpbmc7XG4gIGNsb3NlZFNpZGVuYXZJbWc6IHN0cmluZztcblxuICBvblNpZGVuYXZPcGVuZWRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgb25TaWRlbmF2T3BlbmVkU3RhcnQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgb25TaWRlbmF2Q2xvc2VkU3RhcnQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgb25TaWRlbmF2VG9nZ2xlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIGFmdGVyU2lkZW5hdlRvZ2dsZTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICBwcm90ZWN0ZWQgb1VzZXJJbmZvU2VydmljZTogT1VzZXJJbmZvU2VydmljZTtcbiAgcHJvdGVjdGVkIHVzZXJJbmZvU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHByb3RlY3RlZCBwZXJtaXNzaW9uU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHByb3RlY3RlZCB1c2VySW5mbzogVXNlckluZm87XG5cbiAgcHJvdGVjdGVkIG1lZGlhV2F0Y2g6IFN1YnNjcmlwdGlvbjtcbiAgcHJvdGVjdGVkIG1hbnVhbGx5Q2xvc2VkOiBib29sZWFuID0gZmFsc2U7XG4gIG9uUm91dGVDaGFuZ2VTdG9yYWdlU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHN0b3JlU3RhdGU6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJvdGVjdGVkIHJvdXRlcjogUm91dGVyLFxuICAgIHByb3RlY3RlZCBlbFJlZjogRWxlbWVudFJlZixcbiAgICBwcm90ZWN0ZWQgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByb3RlY3RlZCBtZWRpYTogQnJlYWtwb2ludE9ic2VydmVyXG4gICkge1xuICAgIHN1cGVyKGluamVjdG9yKTtcbiAgICB0aGlzLmFwcE1lbnVTZXJ2aWNlID0gdGhpcy5pbmplY3Rvci5nZXQoQXBwTWVudVNlcnZpY2UpO1xuICAgIHRoaXMubWVudVJvb3RBcnJheSA9IHRoaXMuYXBwTWVudVNlcnZpY2UuZ2V0TWVudVJvb3RzKCk7XG4gICAgdGhpcy5wZXJtaXNzaW9uU3Vic2NyaXB0aW9uID0gdGhpcy5hcHBNZW51U2VydmljZS5vblBlcm1pc3Npb25NZW51Q2hhbmdlZC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5yZWZyZXNoTWVudVJvb3RzKCkpO1xuICAgIHRoaXMub1VzZXJJbmZvU2VydmljZSA9IHRoaXMuaW5qZWN0b3IuZ2V0KE9Vc2VySW5mb1NlcnZpY2UpO1xuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgIHRoaXMubWVkaWFXYXRjaCA9IHRoaXMubWVkaWEub2JzZXJ2ZShbQnJlYWtwb2ludHMuWFNtYWxsXSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIGlmIChzZWxmLmlzU2NyZWVuU21hbGwoKSAmJiBzZWxmLnNpZGVuYXYpIHtcbiAgICAgICAgc2VsZi5zaWRlbmF2LmNsb3NlKCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5yZWdpc3RlckxvY2FsU3RvcmFnZVNlcnZpY2VSb3V0ZUNoYW5nZSgpO1xuICB9XG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMucm91dGVyU3Vic2NyaXB0aW9uID0gdGhpcy5yb3V0ZXIuZXZlbnRzLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5pc1NjcmVlblNtYWxsKCkpIHtcbiAgICAgICAgdGhpcy5zaWRlbmF2LmNsb3NlKCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLmluaXRpYWxpemUodGhpcyk7XG4gICAgdGhpcy5yZXN0b3JlTWVudUdyb3VwU3RhdGUoKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBpZiAodGhpcy5zaG93VXNlckluZm8gJiYgdGhpcy5zaG93VG9nZ2xlQnV0dG9uKSB7XG4gICAgICB0aGlzLnVzZXJJbmZvID0gdGhpcy5vVXNlckluZm9TZXJ2aWNlLmdldFVzZXJJbmZvKCk7XG4gICAgICB0aGlzLnVzZXJJbmZvU3Vic2NyaXB0aW9uID0gdGhpcy5vVXNlckluZm9TZXJ2aWNlLmdldFVzZXJJbmZvT2JzZXJ2YWJsZSgpLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICB0aGlzLnVzZXJJbmZvID0gcmVzO1xuICAgICAgICB0aGlzLnJlZnJlc2hNZW51SXRlbVVzZXJJbmZvKCk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgdGhpcy5yZWZyZXNoTWVudUl0ZW1Vc2VySW5mbygpO1xuICB9XG5cbiAgZ2V0RGF0YVRvU3RvcmUoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZTtcblxuICB9XG5cbiAgcmVzdG9yZU1lbnVHcm91cFN0YXRlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmxvY2FsU3RvcmFnZVNlcnZpY2UgJiYgdGhpcy5zdG9yZVN0YXRlKSB7XG4gICAgICBsZXQgbWVudVN0YXRlOiB7IGlkOiBzdHJpbmcsIG9wZW5lZDogYm9vbGVhbiB9W10gPSB0aGlzLnN0YXRlLm1lbnUgPz8gW107XG5cbiAgICAgIHRoaXMubWVudVJvb3RBcnJheS5mb3JFYWNoKChncm91cDogTWVudUdyb3VwKSA9PiB7XG4gICAgICAgIGNvbnN0IHNhdmVkU3RhdGUgPSBtZW51U3RhdGUuZmluZChtZW51T3B0aW9uID0+IG1lbnVPcHRpb24uaWQgPT09IGdyb3VwLmlkKTtcbiAgICAgICAgaWYgKHNhdmVkU3RhdGUpIHtcbiAgICAgICAgICBncm91cC5vcGVuZWQgPSBzYXZlZFN0YXRlLm9wZW5lZDtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0Q29tcG9uZW50S2V5KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICdPQXBwU2lkZW5hdkNvbXBvbmVudCc7XG4gIH1cblxuICBnZXRSb3V0ZUtleSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6YmVmb3JldW5sb2FkJywgW10pXG4gIGJlZm9yZXVubG9hZEhhbmRsZXIoKSB7XG4gICAgdGhpcy51cGRhdGVTdGF0ZVN0b3JhZ2UoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCByZWdpc3RlckxvY2FsU3RvcmFnZVNlcnZpY2VSb3V0ZUNoYW5nZSgpIHtcbiAgICBpZiAodGhpcy5zdG9yZVN0YXRlKSB7XG4gICAgICB0aGlzLm9uUm91dGVDaGFuZ2VTdG9yYWdlU3Vic2NyaXB0aW9uID0gdGhpcy5sb2NhbFN0b3JhZ2VTZXJ2aWNlLm9uUm91dGVDaGFuZ2Uuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgIHRoaXMudXBkYXRlU3RhdGVTdG9yYWdlKCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUGVyc2lzdHMgdGhlIGN1cnJlbnQgY29tcG9uZW50IHN0YXRlIGluIGxvY2FsIHN0b3JhZ2Ugd2hlbiBlbmFibGVkLlxuICAgKlxuICAgKiBTdG9yZXMgbWVudS1yZWxhdGVkIHN0YXRlIG9ubHkgaWYgdGhlIHN0YXRlIHBlcnNpc3RlbmNlIGlzIGVuYWJsZWQuXG4gICAqL1xuICBwdWJsaWMgdXBkYXRlU3RhdGVTdG9yYWdlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmxvY2FsU3RvcmFnZVNlcnZpY2UgJiYgdGhpcy5zdG9yZVN0YXRlKSB7XG4gICAgICB0aGlzLnN0b3JlTWVudSgpO1xuICAgIH1cbiAgfVxuXG4gIHJlZnJlc2hNZW51Um9vdHMoKTogdm9pZCB7XG4gICAgdGhpcy5tZW51Um9vdEFycmF5ID0gWy4uLnRoaXMuYXBwTWVudVNlcnZpY2UuZ2V0TWVudVJvb3RzKCldO1xuICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScsIFtdKVxuICBvblJlc2l6ZSgpIHtcbiAgICBpZiAoIXRoaXMubWFudWFsbHlDbG9zZWQgJiYgIXRoaXMuaXNTY3JlZW5TbWFsbCgpICYmICF0aGlzLmlzTW9iaWxlTW9kZSgpKSB7XG4gICAgICB0aGlzLnNpZGVuYXYub3BlbigpO1xuICAgIH1cbiAgfVxuXG5cbiAgZ2V0IGxheW91dE1vZGUoKTogT0FwcExheW91dE1vZGUge1xuICAgIHJldHVybiB0aGlzLl9sYXlvdXRNb2RlO1xuICB9XG5cbiAgc2V0IGxheW91dE1vZGUodmFsOiBPQXBwTGF5b3V0TW9kZSkge1xuICAgIGNvbnN0IG0gPSBDb2Rlcy5PQXBwTGF5b3V0TW9kZXMuZmluZChlID0+IGUgPT09IHZhbCk7XG4gICAgaWYgKFV0aWwuaXNEZWZpbmVkKG0pKSB7XG4gICAgICB0aGlzLl9sYXlvdXRNb2RlID0gbTtcbiAgICB9XG4gIH1cblxuICBnZXQgc2lkZW5hdk1vZGUoKTogT1NpZGVuYXZNb2RlIHtcbiAgICByZXR1cm4gdGhpcy5fc2lkZW5hdk1vZGU7XG4gIH1cblxuICBzZXQgc2lkZW5hdk1vZGUodmFsOiBPU2lkZW5hdk1vZGUpIHtcbiAgICBjb25zdCBtID0gQ29kZXMuT1NpZGVuYXZNb2Rlcy5maW5kKGUgPT4gZSA9PT0gdmFsKTtcbiAgICBpZiAoVXRpbC5pc0RlZmluZWQobSkpIHtcbiAgICAgIHRoaXMuX3NpZGVuYXZNb2RlID0gbTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVmcmVzaE1lbnVJdGVtVXNlckluZm8oKSB7XG4gICAgaWYgKHRoaXMuc2hvd1VzZXJJbmZvICYmIHRoaXMudXNlckluZm8gJiYgdGhpcy5fc2hvd1RvZ2dsZUJ1dHRvbikge1xuICAgICAgY29uc3QgZmlyc3RSb290ID0gdGhpcy5tZW51Um9vdEFycmF5WzBdO1xuICAgICAgY29uc3QgYWxyZWFkeUV4aXN0c1VzZXJJbmZvID0gZmlyc3RSb290ID8gZmlyc3RSb290LmlkID09PSAndXNlci1pbmZvJyA6IGZhbHNlO1xuICAgICAgaWYgKGFscmVhZHlFeGlzdHNVc2VySW5mbykge1xuICAgICAgICBjb25zdCB1c2VySW5mb0l0ZW06IE1lbnVJdGVtVXNlckluZm8gPSAodGhpcy5tZW51Um9vdEFycmF5WzBdIGFzIE1lbnVHcm91cCkuaXRlbXNbMF0gYXMgTWVudUl0ZW1Vc2VySW5mbztcbiAgICAgICAgdXNlckluZm9JdGVtLmlkID0gdGhpcy51c2VySW5mby51c2VybmFtZTtcbiAgICAgICAgdXNlckluZm9JdGVtLm5hbWUgPSB0aGlzLnVzZXJJbmZvLnVzZXJuYW1lO1xuICAgICAgICB1c2VySW5mb0l0ZW0udXNlciA9IHRoaXMudXNlckluZm8udXNlcm5hbWU7XG4gICAgICAgIHVzZXJJbmZvSXRlbS5hdmF0YXIgPSB0aGlzLnVzZXJJbmZvLmF2YXRhcjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHVzZXJJbmZvSXRlbTogTWVudUl0ZW1Vc2VySW5mbyA9IHtcbiAgICAgICAgICBpZDogdGhpcy51c2VySW5mby51c2VybmFtZSxcbiAgICAgICAgICBuYW1lOiB0aGlzLnVzZXJJbmZvLnVzZXJuYW1lLFxuICAgICAgICAgIHVzZXI6IHRoaXMudXNlckluZm8udXNlcm5hbWUsXG4gICAgICAgICAgYXZhdGFyOiB0aGlzLnVzZXJJbmZvLmF2YXRhclxuICAgICAgICB9O1xuICAgICAgICBjb25zdCBtZW51R3JvdXBVc2VySW5mbzogTWVudUdyb3VwID0ge1xuICAgICAgICAgIGlkOiAndXNlci1pbmZvJyxcbiAgICAgICAgICBuYW1lOiAnQVBQX0xBWU9VVC5VU0VSX1BST0ZJTEUnLFxuICAgICAgICAgIGl0ZW1zOiBbdXNlckluZm9JdGVtXSxcbiAgICAgICAgICBvcGVuZWQ6IHRydWUsXG4gICAgICAgICAgaWNvbjogJ3BlcnNvbl9waW4nXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMubWVudVJvb3RBcnJheS51bnNoaWZ0KG1lbnVHcm91cFVzZXJJbmZvKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy5yb3V0ZXJTdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMucm91dGVyU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudXNlckluZm9TdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMudXNlckluZm9TdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5wZXJtaXNzaW9uU3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLnBlcm1pc3Npb25TdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBpc1NjcmVlblNtYWxsKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5tYW51YWxseUNsb3NlZCAmJiB0aGlzLm1lZGlhLmlzTWF0Y2hlZChCcmVha3BvaW50cy5YU21hbGwpO1xuICB9XG5cbiAgaXNNb2JpbGVNb2RlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9sYXlvdXRNb2RlID09PSBDb2Rlcy5BUFBfTEFZT1VUX01PREVfTU9CSUxFO1xuICB9XG5cbiAgaXNEZXNrdG9wTW9kZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fbGF5b3V0TW9kZSA9PT0gQ29kZXMuQVBQX0xBWU9VVF9NT0RFX0RFU0tUT1A7XG4gIH1cblxuICBpc1NpZGVuYXZPcGVuZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMub3BlbmVkICYmICF0aGlzLmlzTW9iaWxlTW9kZSgpICYmICF0aGlzLmlzU2NyZWVuU21hbGwoKTtcbiAgfVxuXG4gIHRvZ2dsZVNpZGVuYXYoKSB7XG4gICAgY29uc3QgcHJvbWlzZSA9IHRoaXMuc2lkZW5hdi5vcGVuZWQgPyB0aGlzLnNpZGVuYXYuY2xvc2UoKSA6IHRoaXMuc2lkZW5hdi5vcGVuKCk7XG4gICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgcHJvbWlzZS50aGVuKCgpID0+IHtcbiAgICAgIHNlbGYuYWZ0ZXJTaWRlbmF2VG9nZ2xlLmVtaXQoc2VsZi5zaWRlbmF2Lm9wZW5lZCk7XG4gICAgfSk7XG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgdGhpcy5vcGVuZWQgPSB0aGlzLnNpZGVuYXYub3BlbmVkO1xuICAgIHRoaXMubWFudWFsbHlDbG9zZWQgPSAhdGhpcy5vcGVuZWQ7XG4gICAgdGhpcy5vblNpZGVuYXZUb2dnbGUuZW1pdCh0aGlzLnNpZGVuYXYub3BlbmVkKTtcbiAgfVxuXG4gIGdldCBzaG93VXNlckluZm8oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3Nob3dVc2VySW5mbztcbiAgfVxuXG4gIHNldCBzaG93VXNlckluZm8oYXJnOiBib29sZWFuKSB7XG4gICAgdGhpcy5fc2hvd1VzZXJJbmZvID0gYXJnO1xuICB9XG5cbiAgZ2V0IHNob3dUb2dnbGVCdXR0b24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3Nob3dUb2dnbGVCdXR0b247XG4gIH1cblxuICBzZXQgc2hvd1RvZ2dsZUJ1dHRvbihhcmc6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9zaG93VG9nZ2xlQnV0dG9uID0gYXJnO1xuICB9XG5cbiAgb25NZW51SXRlbUNsaWNrKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzTW9iaWxlTW9kZSgpKSB7XG4gICAgICB0aGlzLnNpZGVuYXYuY2xvc2UoKTtcbiAgICB9XG4gIH1cblxuICBzaWRlbmF2Q2xvc2VkU3RhcnQoKSB7XG4gICAgdGhpcy5vblNpZGVuYXZDbG9zZWRTdGFydC5lbWl0KCk7XG4gIH1cblxuICBzaWRlbmF2T3BlbmVkU3RhcnQoKSB7XG4gICAgdGhpcy5vblNpZGVuYXZPcGVuZWRTdGFydC5lbWl0KCk7XG4gIH1cblxuICBzaWRlbmF2T3BlbmVkQ2hhbmdlKCkge1xuICAgIHRoaXMub25TaWRlbmF2T3BlbmVkQ2hhbmdlLmVtaXQoKTtcbiAgfVxufVxuXG4iLCI8bWF0LXNpZGVuYXYtY29udGFpbmVyIGNsYXNzPVwiby1hcHAtc2lkZW5hdi1jb250YWluZXJcIiBbY2xhc3Mub3BlbmVkXT1cInNpZGVuYXYub3BlbmVkXCJcbiAgW2NsYXNzLm8tYXBwLXNpZGVuYXYtbW9kZS1kZXNrdG9wXT1cIihsYXlvdXRNb2RlIHx8ICdkZXNrdG9wJykgPT09ICdkZXNrdG9wJ1wiXG4gIFtjbGFzcy5vLWFwcC1zaWRlbmF2LW1vZGUtbW9iaWxlXT1cIihsYXlvdXRNb2RlIHx8ICdkZXNrdG9wJykgIT09ICdkZXNrdG9wJ1wiPlxuXG4gIDxtYXQtc2lkZW5hdiAjc2lkZW5hdiBjbGFzcz1cIm8tYXBwLXNpZGVuYXYtc2lkZW5hdiBvLXNjcm9sbFwiIFtvcGVuZWRdPVwiaXNTaWRlbmF2T3BlbmVkKClcIlxuICAgIFttb2RlXT1cIihzaWRlbmF2TW9kZSB8fCAoKGxheW91dE1vZGUgfHwgJ2Rlc2t0b3AnKSA9PT0gJ2Rlc2t0b3AnID8gJ3NpZGUnIDogJ292ZXInKSlcIiBbY2xhc3MubWF0LWRyYXdlci1vcGVuZWRdPVwic2lkZW5hdi5vcGVuZWRcIlxuICAgIFtjbGFzcy5tYXQtZHJhd2VyLWNsb3NlZF09XCIhc2lkZW5hdi5vcGVuZWRcIiBbY2xhc3MuZWxsaXBzaXMtbWVudS1pdGVtc109XCJzaG93RWxsaXBzaXNNZW51XCIgKG9wZW5lZENoYW5nZSk9XCJzaWRlbmF2T3BlbmVkQ2hhbmdlKClcIlxuICAgIChjbG9zZWRTdGFydCk9XCJzaWRlbmF2Q2xvc2VkU3RhcnQoKVwiIChvcGVuZWRTdGFydCk9XCJzaWRlbmF2T3BlbmVkU3RhcnQoKVwiPlxuICAgIDxkaXYgY2xhc3M9XCJzaWRlbmF2LXdyYXBwZXIgby1mbGV4LWNvbHVtblwiPlxuICAgICAgQGlmIChpc0Rlc2t0b3BNb2RlKCkpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cInNpZGVuYXYtdG9nZ2xlLWNvbnRhaW5lciBvLWZsZXgtcm93IG8tbGF5b3V0LWFsaWduLWVuZC1jZW50ZXJcIj5cbiAgICAgICAgICA8bWF0LWljb24gaWQ9XCJzaWRlbmF2LW1lbnVcIiBjbGFzcz1cInNpZGVuYXYtdG9nZ2xlXCIgKGNsaWNrKT1cInRvZ2dsZVNpZGVuYXYoKVwiPm1lbnU8L21hdC1pY29uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cblxuICAgICAgPG8tYXBwLXNpZGVuYXYtaW1hZ2UgW29wZW5lZC1zcmNdPVwib3BlbmVkU2lkZW5hdkltZ1wiIFtjbG9zZWQtc3JjXT1cImNsb3NlZFNpZGVuYXZJbWdcIj4gPC9vLWFwcC1zaWRlbmF2LWltYWdlPlxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiby1hcHAtbGF5b3V0LXNpZGVuYXYtcHJvamVjdGlvbi1zdGFydFwiPjwvbmctY29udGVudD5cbiAgICAgIDxkaXYgY2xhc3M9XCJuYXZNZW51XCI+XG4gICAgICAgIEBmb3IgKG1lbnVSb290SXRlbSBvZiBtZW51Um9vdEFycmF5OyB0cmFjayBtZW51Um9vdEl0ZW0pIHtcbiAgICAgICAgICA8bmF2PlxuICAgICAgICAgICAgQGlmIChhcHBNZW51U2VydmljZS5nZXRNZW51SXRlbVR5cGUobWVudVJvb3RJdGVtKSAhPT0gJ2dyb3VwJyAmJiBhcHBNZW51U2VydmljZS5pc1Zpc2libGUobWVudVJvb3RJdGVtKSkge1xuICAgICAgICAgICAgICA8dWw+XG4gICAgICAgICAgICAgICAgPG8tYXBwLXNpZGVuYXYtbWVudS1pdGVtIFttZW51LWl0ZW1dPVwibWVudVJvb3RJdGVtXCIgW21lbnUtaXRlbS10eXBlXT1cImFwcE1lbnVTZXJ2aWNlLmdldE1lbnVJdGVtVHlwZShtZW51Um9vdEl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgIFtzaWRlbmF2LW9wZW5lZF09XCJzaWRlbmF2Lm9wZW5lZFwiIChvbkNsaWNrKT1cIm9uTWVudUl0ZW1DbGljaygpXCI+XG4gICAgICAgICAgICAgICAgPC9vLWFwcC1zaWRlbmF2LW1lbnUtaXRlbT5cbiAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAoYXBwTWVudVNlcnZpY2UuZ2V0TWVudUl0ZW1UeXBlKG1lbnVSb290SXRlbSkgPT09ICdncm91cCcgJiYgYXBwTWVudVNlcnZpY2UuaXNWaXNpYmxlKG1lbnVSb290SXRlbSkpIHtcbiAgICAgICAgICAgICAgPG8tYXBwLXNpZGVuYXYtbWVudS1ncm91cCBbbWVudS1ncm91cF09XCJtZW51Um9vdEl0ZW1cIiBbc2lkZW5hdi1vcGVuZWRdPVwic2lkZW5hdi5vcGVuZWRcIiBsZXZlbD1cIjFcIlxuICAgICAgICAgICAgICAgIChvbkl0ZW1DbGljayk9XCJvbk1lbnVJdGVtQ2xpY2soKVwiPlxuICAgICAgICAgICAgICA8L28tYXBwLXNpZGVuYXYtbWVudS1ncm91cD5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L25hdj5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0LXNpZGVuYXYtcHJvamVjdGlvbi1lbmRcIj5cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiby1hcHAtbGF5b3V0LXNpZGVuYXYtcHJvamVjdGlvbi1lbmRcIj48L25nLWNvbnRlbnQ+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9tYXQtc2lkZW5hdj5cblxuICA8bWF0LXNpZGVuYXYtY29udGVudCBjbGFzcz1cIm8tYXBwLXNpZGVuYXYtY29udGVudFwiPlxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgPC9tYXQtc2lkZW5hdi1jb250ZW50PlxuPC9tYXQtc2lkZW5hdi1jb250YWluZXI+XG4iXX0=
|
|
@@ -271,7 +271,7 @@ export class OImageComponent extends OFormDataComponent {
|
|
|
271
271
|
return this.getFormControl() && this.getFormControl().touched && this.getFormControl().invalid && !this.hasControls() && this.enabled && !this.isReadOnly;
|
|
272
272
|
}
|
|
273
273
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: OImageComponent, deps: [{ token: i0.ElementRef }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
274
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: OImageComponent, isStandalone: true, selector: "o-image", inputs: { emptyimage: ["empty-image", "emptyimage"], notfoundimage: ["not-found-image", "notfoundimage"], emptyicon: ["empty-icon", "emptyicon"], showControls: ["show-controls", "showControls"], height: "height", autoFit: ["auto-fit", "autoFit"], fullScreenButton: ["full-screen-button", "fullScreenButton"], acceptFileType: ["accept-file-type", "acceptFileType"], maxFileSize: ["max-file-size", "maxFileSize"] }, host: { properties: { "class.o-image": "true", "style.height": "this.hostHeight" } }, providers: [OSafePipe, { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => OImageComponent), multi: true }], viewQueries: [{ propertyName: "fileInput", first: true, predicate: ["input"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div [formGroup]=\"getFormGroup()\" [class.o-image-auto-fit]=\"autoFit\" class=\"o-image-content o-flex-column o-flex-fill\">\n\n <input #input type=\"file\" [disabled]=\"!enabled\" [accept]=\"acceptFileType ? acceptFileType.replace(';',',') : 'image/*'\" readonly\n (change)=\"fileChange(input)\" class=\"o-image-form-field-hidden\" />\n\n @if (hasControls()) {\n <mat-form-field class=\"o-image-form-field\" [matTooltip]=\"tooltip\" [matTooltipClass]=\"tooltipClass\"\n [matTooltipPosition]=\"tooltipPosition\" [matTooltipShowDelay]=\"tooltipShowDelay\" [matTooltipHideDelay]=\"tooltipHideDelay\"\n [subscriptSizing]=\"subscriptSizing\">\n <input type=\"text\" [id]=\"getAttribute()\" [formControlName]=\"getAttribute()\" [placeholder]=\"olabel | oTranslate\" [required]=\"isRequired\" readonly\n (click)=\"input.click()\" (change)=\"onChangeEvent($event)\" class=\"o-image-form-field-input\">\n <input matInput readonly (click)=\"input.click()\" [placeholder]=\"olabel | oTranslate\" [required]=\"isRequired\" [formControl]=\"stateCtrl\" />\n @if (fullScreenButton) {\n <button type=\"button\" [disabled]=\"!enabled\" matSuffix mat-icon-button (click)=\"openFullScreen($event)\">\n <mat-icon>fullscreen</mat-icon>\n </button>\n }\n <button type=\"button\" [disabled]=\"!enabled\" matSuffix mat-icon-button (click)=\"input.click()\">\n <mat-icon>folder</mat-icon>\n </button>\n <button type=\"button\" [disabled]=\"!enabled\" matSuffix mat-icon-button (click)=\"onClickClearValue($event)\">\n <mat-icon>close</mat-icon>\n </button>\n <ng-container *ngTemplateOutlet=\"errorsTemplate\"></ng-container>\n </mat-form-field>\n }\n\n <div class=\"o-image-display-container o-flex-column o-layout-align-center-center o-gap-15\"\n [ngClass]=\"{'o-image-drag-and-drop': this.getValue()?.length === 0 , 'o-image-drag-and-drop-required': hasErrorInDragAndDrop() }\" oFileDragAndDrop\n (onFileDropped)=\"onFileDropped($event)\" [matTooltip]=\"tooltip\" [matTooltipClass]=\"tooltipClass\" [matTooltipPosition]=\"tooltipPosition\"\n [matTooltipShowDelay]=\"tooltipShowDelay\" [matTooltipHideDelay]=\"tooltipHideDelay\" [matTooltipDisabled]=\"hasControls()\">\n\n @if (this.getValue()?.length !== 0 && !hasControls() && enabled && !isReadOnly) {\n <button mat-icon-button (click)=\"onClickClearValue($event)\"\n class=\"o-image-button-remove\">\n <mat-icon>close</mat-icon>\n </button>\n }\n\n @if (this.getValue()?.length !== 0) {\n <img [src]=\"src\" alt=\"\" (click)=\"openFileSelector()\" (error)=\"notFoundImageUrl($event)\"\n [ngClass]=\"{'o-image-cursor': !isReadOnly}\" (keyDown)=\"openFileSelector()\"/>\n }\n\n @if (useEmptyIcon()) {\n <mat-icon class=\"empty-icon\" [class.mat-disabled]=\"!enabled\" aria-label=\"empty image\">\n {{ emptyicon }}\n </mat-icon>\n }\n\n @if (useEmptyImage()) {\n <img [src]=\"src\" alt=\"empty image\" />\n }\n\n @if (this.getValue()?.length === 0) {\n <span class=\"mat-subtitle-2\">{{ 'OIMAGE.TEXT.DROP&DRAG' | oTranslate }}</span>\n }\n\n @if (!hasControls() && this.getValue()?.length === 0) {\n <button mat-button color=\"primary\" (click)=\"openFileSelector()\" ()>\n {{ 'OIMAGE.BUTTON.BROWSEFILE' | oTranslate }}\n </button>\n }\n\n @if (!hasControls() && enabled && !isReadOnly) {\n <ng-container *ngTemplateOutlet=\"errorsTemplate\"> </ng-container>\n }\n </div>\n @if (isReadOnly) {\n <div class=\"read-only-blocker o-flex-fill\" (click)=\"onClickBlocker($event)\"></div>\n }\n </div>\n\n <ng-template #errorsTemplate>\n <mat-error *oMatError=\"hasError('required')\">\n {{ 'FORM_VALIDATION.REQUIRED' | oTranslate }}\n </mat-error>\n <mat-error *oMatError=\"hasError('fileSize')\">\n {{ 'FORM_VALIDATION.FILE_MAXSIZE' | oTranslate }}: {{ getErrorValue('fileSize', 'maxFileSize') }} bytes\n </mat-error>\n </ng-template>\n", styles: [".o-image{display:flex;height:inherit}.o-image .o-image-content{position:relative;width:100%}.o-image .o-image-content .o-image-form-field-hidden{display:none}.o-image .o-image-content .o-image-form-field{width:100%}.o-image .o-image-content .o-image-form-field .o-image-form-field-input{display:none;height:0;opacity:0;outline:none;width:0}.o-image .o-image-content .o-image-display-container{margin:16px;text-align:center;padding:1px;border-color:transparent;height:calc(100% - 32px)}.o-image .o-image-content .o-image-display-container.o-image-drag-and-drop-required:not(.o-file-dragging){border-style:solid;border-width:1px}.o-image .o-image-content .o-image-display-container.o-image-drag-and-drop{padding:40px}.o-image .o-image-content .o-image-display-container .o-image-button-remove{position:absolute;right:24px;top:24px;border-radius:50%;width:16px;height:16px;line-height:16px}.o-image .o-image-content .o-image-display-container .o-image-button-remove .mat-icon{width:14px;height:14px;line-height:14px;font-size:14px}.o-image .o-image-content .o-image-display-container .empty-icon.mat-icon{width:42px;height:42px;font-size:42px;display:flex;align-items:center;place-content:center}.o-image .o-image-content .o-image-display-container>img{height:100%;width:100%}.o-image .o-image-content .o-image-display-container>img.o-image-cursor{cursor:pointer}.o-image .o-image-content.o-image-auto-fit .o-image-display-container>img{height:auto;max-height:100%;max-width:100%;object-fit:contain;width:auto}.o-image .o-image-content .read-only-blocker{left:0;right:0;position:absolute;top:0;z-index:2}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i6.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "pipe", type: OTranslatePipe, name: "oTranslate" }, { kind: "directive", type: OMatErrorDirective, selector: "[oMatError]", inputs: ["oMatError"] }, { kind: "directive", type: OFileDragAndDropDirective, selector: "[oFileDragAndDrop]", outputs: ["onFileDropped"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
274
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: OImageComponent, isStandalone: true, selector: "o-image", inputs: { emptyimage: ["empty-image", "emptyimage"], notfoundimage: ["not-found-image", "notfoundimage"], emptyicon: ["empty-icon", "emptyicon"], showControls: ["show-controls", "showControls"], height: "height", autoFit: ["auto-fit", "autoFit"], fullScreenButton: ["full-screen-button", "fullScreenButton"], acceptFileType: ["accept-file-type", "acceptFileType"], maxFileSize: ["max-file-size", "maxFileSize"] }, host: { properties: { "class.o-image": "true", "style.height": "this.hostHeight" } }, providers: [OSafePipe, { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => OImageComponent), multi: true }], viewQueries: [{ propertyName: "fileInput", first: true, predicate: ["input"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div [formGroup]=\"getFormGroup()\" [class.o-image-auto-fit]=\"autoFit\" class=\"o-image-content o-flex-column o-flex-fill\">\n\n <input #input type=\"file\" [disabled]=\"!enabled\" [accept]=\"acceptFileType ? acceptFileType.replace(';',',') : 'image/*'\" readonly\n (change)=\"fileChange(input)\" class=\"o-image-form-field-hidden\" />\n\n @if (hasControls()) {\n <mat-form-field class=\"o-image-form-field\" [matTooltip]=\"tooltip\" [matTooltipClass]=\"tooltipClass\"\n [matTooltipPosition]=\"tooltipPosition\" [matTooltipShowDelay]=\"tooltipShowDelay\" [matTooltipHideDelay]=\"tooltipHideDelay\"\n [subscriptSizing]=\"subscriptSizing\">\n <input type=\"text\" [id]=\"getAttribute()\" [formControlName]=\"getAttribute()\" [placeholder]=\"olabel | oTranslate\" [required]=\"isRequired\" readonly\n (click)=\"input.click()\" (change)=\"onChangeEvent($event)\" class=\"o-image-form-field-input\">\n <input matInput readonly (click)=\"input.click()\" [placeholder]=\"olabel | oTranslate\" [required]=\"isRequired\" [formControl]=\"stateCtrl\" />\n @if (fullScreenButton) {\n <button type=\"button\" [disabled]=\"!enabled\" matSuffix mat-icon-button (click)=\"openFullScreen($event)\">\n <mat-icon>fullscreen</mat-icon>\n </button>\n }\n <button type=\"button\" [disabled]=\"!enabled\" matSuffix mat-icon-button (click)=\"input.click()\">\n <mat-icon>folder</mat-icon>\n </button>\n <button type=\"button\" [disabled]=\"!enabled\" matSuffix mat-icon-button (click)=\"onClickClearValue($event)\">\n <mat-icon>close</mat-icon>\n </button>\n <ng-container *ngTemplateOutlet=\"errorsTemplate\"></ng-container>\n </mat-form-field>\n }\n\n <div class=\"o-image-display-container o-flex-column o-layout-align-center-center o-gap-15\"\n [ngClass]=\"{'o-image-drag-and-drop': this.getValue()?.length === 0 , 'o-image-drag-and-drop-required': hasErrorInDragAndDrop() }\" oFileDragAndDrop\n (onFileDropped)=\"onFileDropped($event)\" [matTooltip]=\"tooltip\" [matTooltipClass]=\"tooltipClass\" [matTooltipPosition]=\"tooltipPosition\"\n [matTooltipShowDelay]=\"tooltipShowDelay\" [matTooltipHideDelay]=\"tooltipHideDelay\" [matTooltipDisabled]=\"hasControls()\">\n\n @if (this.getValue()?.length !== 0 && !hasControls() && enabled && !isReadOnly) {\n <button mat-icon-button (click)=\"onClickClearValue($event)\"\n class=\"o-image-button-remove\">\n <mat-icon>close</mat-icon>\n </button>\n }\n\n @if (this.getValue()?.length !== 0) {\n <img [src]=\"src\" alt=\"\" (click)=\"openFileSelector()\" (error)=\"notFoundImageUrl($event)\"\n [ngClass]=\"{'o-image-cursor': !isReadOnly}\" (keyDown)=\"openFileSelector()\"/>\n }\n\n @if (useEmptyIcon()) {\n <mat-icon class=\"empty-icon\" [class.mat-disabled]=\"!enabled\" aria-label=\"empty image\">\n {{ emptyicon }}\n </mat-icon>\n }\n\n @if (useEmptyImage()) {\n <img [src]=\"src\" alt=\"empty image\" />\n }\n\n @if (this.getValue()?.length === 0) {\n <span class=\"mat-subtitle-2\">{{ 'OIMAGE.TEXT.DROP&DRAG' | oTranslate }}</span>\n }\n\n @if (!hasControls() && this.getValue()?.length === 0) {\n <button mat-button color=\"primary\" (click)=\"openFileSelector()\" ()>\n {{ 'OIMAGE.BUTTON.BROWSEFILE' | oTranslate }}\n </button>\n }\n\n @if (!hasControls() && enabled && !isReadOnly) {\n <ng-container *ngTemplateOutlet=\"errorsTemplate\"> </ng-container>\n }\n </div>\n @if (isReadOnly) {\n <div class=\"read-only-blocker o-flex-fill\" (click)=\"onClickBlocker($event)\"></div>\n }\n </div>\n\n <ng-template #errorsTemplate>\n <mat-error *oMatError=\"hasError('required')\">\n {{ 'FORM_VALIDATION.REQUIRED' | oTranslate }}\n </mat-error>\n <mat-error *oMatError=\"hasError('fileSize')\">\n {{ 'FORM_VALIDATION.FILE_MAXSIZE' | oTranslate }}: {{ getErrorValue('fileSize', 'maxFileSize') }} bytes\n </mat-error>\n </ng-template>\n", styles: [".o-image{display:flex;height:inherit}.o-image .o-image-content{position:relative;width:100%}.o-image .o-image-content .o-image-form-field-hidden{display:none}.o-image .o-image-content .o-image-form-field{width:100%}.o-image .o-image-content .o-image-form-field .o-image-form-field-input{display:none;height:0;opacity:0;outline:none;width:0}.o-image .o-image-content .o-image-display-container{margin:16px;text-align:center;padding:1px;border-color:transparent;height:calc(100% - 32px)}.o-image .o-image-content .o-image-display-container.o-image-drag-and-drop-required:not(.o-file-dragging){border-style:solid;border-width:1px}.o-image .o-image-content .o-image-display-container.o-image-drag-and-drop{padding:40px}.o-image .o-image-content .o-image-display-container .o-image-button-remove{position:absolute;right:24px;top:24px;border-radius:50%;width:16px;height:16px;line-height:16px}.o-image .o-image-content .o-image-display-container .empty-icon.mat-icon{width:42px;height:42px;font-size:42px;display:flex;align-items:center;place-content:center}.o-image .o-image-content .o-image-display-container>img{height:100%;width:100%}.o-image .o-image-content .o-image-display-container>img.o-image-cursor{cursor:pointer}.o-image .o-image-content.o-image-auto-fit .o-image-display-container>img{height:auto;max-height:100%;max-width:100%;object-fit:contain;width:auto}.o-image .o-image-content .read-only-blocker{left:0;right:0;position:absolute;top:0;z-index:2}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i6.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "pipe", type: OTranslatePipe, name: "oTranslate" }, { kind: "directive", type: OMatErrorDirective, selector: "[oMatError]", inputs: ["oMatError"] }, { kind: "directive", type: OFileDragAndDropDirective, selector: "[oFileDragAndDrop]", outputs: ["onFileDropped"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
275
275
|
}
|
|
276
276
|
__decorate([
|
|
277
277
|
NumberInputConverter(),
|
|
@@ -289,7 +289,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
289
289
|
type: Component,
|
|
290
290
|
args: [{ standalone: true, imports: [NgClass, NgTemplateOutlet, ReactiveFormsModule, MatFormFieldModule, MatInputModule, MatButtonModule, MatIconModule, MatTooltipModule, OTranslatePipe, OMatErrorDirective, OFileDragAndDropDirective], selector: 'o-image', inputs: DEFAULT_INPUTS_O_IMAGE, encapsulation: ViewEncapsulation.None, host: {
|
|
291
291
|
'[class.o-image]': 'true'
|
|
292
|
-
}, providers: [OSafePipe, { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => OImageComponent), multi: true }], template: "<div [formGroup]=\"getFormGroup()\" [class.o-image-auto-fit]=\"autoFit\" class=\"o-image-content o-flex-column o-flex-fill\">\n\n <input #input type=\"file\" [disabled]=\"!enabled\" [accept]=\"acceptFileType ? acceptFileType.replace(';',',') : 'image/*'\" readonly\n (change)=\"fileChange(input)\" class=\"o-image-form-field-hidden\" />\n\n @if (hasControls()) {\n <mat-form-field class=\"o-image-form-field\" [matTooltip]=\"tooltip\" [matTooltipClass]=\"tooltipClass\"\n [matTooltipPosition]=\"tooltipPosition\" [matTooltipShowDelay]=\"tooltipShowDelay\" [matTooltipHideDelay]=\"tooltipHideDelay\"\n [subscriptSizing]=\"subscriptSizing\">\n <input type=\"text\" [id]=\"getAttribute()\" [formControlName]=\"getAttribute()\" [placeholder]=\"olabel | oTranslate\" [required]=\"isRequired\" readonly\n (click)=\"input.click()\" (change)=\"onChangeEvent($event)\" class=\"o-image-form-field-input\">\n <input matInput readonly (click)=\"input.click()\" [placeholder]=\"olabel | oTranslate\" [required]=\"isRequired\" [formControl]=\"stateCtrl\" />\n @if (fullScreenButton) {\n <button type=\"button\" [disabled]=\"!enabled\" matSuffix mat-icon-button (click)=\"openFullScreen($event)\">\n <mat-icon>fullscreen</mat-icon>\n </button>\n }\n <button type=\"button\" [disabled]=\"!enabled\" matSuffix mat-icon-button (click)=\"input.click()\">\n <mat-icon>folder</mat-icon>\n </button>\n <button type=\"button\" [disabled]=\"!enabled\" matSuffix mat-icon-button (click)=\"onClickClearValue($event)\">\n <mat-icon>close</mat-icon>\n </button>\n <ng-container *ngTemplateOutlet=\"errorsTemplate\"></ng-container>\n </mat-form-field>\n }\n\n <div class=\"o-image-display-container o-flex-column o-layout-align-center-center o-gap-15\"\n [ngClass]=\"{'o-image-drag-and-drop': this.getValue()?.length === 0 , 'o-image-drag-and-drop-required': hasErrorInDragAndDrop() }\" oFileDragAndDrop\n (onFileDropped)=\"onFileDropped($event)\" [matTooltip]=\"tooltip\" [matTooltipClass]=\"tooltipClass\" [matTooltipPosition]=\"tooltipPosition\"\n [matTooltipShowDelay]=\"tooltipShowDelay\" [matTooltipHideDelay]=\"tooltipHideDelay\" [matTooltipDisabled]=\"hasControls()\">\n\n @if (this.getValue()?.length !== 0 && !hasControls() && enabled && !isReadOnly) {\n <button mat-icon-button (click)=\"onClickClearValue($event)\"\n class=\"o-image-button-remove\">\n <mat-icon>close</mat-icon>\n </button>\n }\n\n @if (this.getValue()?.length !== 0) {\n <img [src]=\"src\" alt=\"\" (click)=\"openFileSelector()\" (error)=\"notFoundImageUrl($event)\"\n [ngClass]=\"{'o-image-cursor': !isReadOnly}\" (keyDown)=\"openFileSelector()\"/>\n }\n\n @if (useEmptyIcon()) {\n <mat-icon class=\"empty-icon\" [class.mat-disabled]=\"!enabled\" aria-label=\"empty image\">\n {{ emptyicon }}\n </mat-icon>\n }\n\n @if (useEmptyImage()) {\n <img [src]=\"src\" alt=\"empty image\" />\n }\n\n @if (this.getValue()?.length === 0) {\n <span class=\"mat-subtitle-2\">{{ 'OIMAGE.TEXT.DROP&DRAG' | oTranslate }}</span>\n }\n\n @if (!hasControls() && this.getValue()?.length === 0) {\n <button mat-button color=\"primary\" (click)=\"openFileSelector()\" ()>\n {{ 'OIMAGE.BUTTON.BROWSEFILE' | oTranslate }}\n </button>\n }\n\n @if (!hasControls() && enabled && !isReadOnly) {\n <ng-container *ngTemplateOutlet=\"errorsTemplate\"> </ng-container>\n }\n </div>\n @if (isReadOnly) {\n <div class=\"read-only-blocker o-flex-fill\" (click)=\"onClickBlocker($event)\"></div>\n }\n </div>\n\n <ng-template #errorsTemplate>\n <mat-error *oMatError=\"hasError('required')\">\n {{ 'FORM_VALIDATION.REQUIRED' | oTranslate }}\n </mat-error>\n <mat-error *oMatError=\"hasError('fileSize')\">\n {{ 'FORM_VALIDATION.FILE_MAXSIZE' | oTranslate }}: {{ getErrorValue('fileSize', 'maxFileSize') }} bytes\n </mat-error>\n </ng-template>\n", styles: [".o-image{display:flex;height:inherit}.o-image .o-image-content{position:relative;width:100%}.o-image .o-image-content .o-image-form-field-hidden{display:none}.o-image .o-image-content .o-image-form-field{width:100%}.o-image .o-image-content .o-image-form-field .o-image-form-field-input{display:none;height:0;opacity:0;outline:none;width:0}.o-image .o-image-content .o-image-display-container{margin:16px;text-align:center;padding:1px;border-color:transparent;height:calc(100% - 32px)}.o-image .o-image-content .o-image-display-container.o-image-drag-and-drop-required:not(.o-file-dragging){border-style:solid;border-width:1px}.o-image .o-image-content .o-image-display-container.o-image-drag-and-drop{padding:40px}.o-image .o-image-content .o-image-display-container .o-image-button-remove{position:absolute;right:24px;top:24px;border-radius:50%;width:16px;height:16px;line-height:16px}.o-image .o-image-content .o-image-display-container .
|
|
292
|
+
}, providers: [OSafePipe, { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => OImageComponent), multi: true }], template: "<div [formGroup]=\"getFormGroup()\" [class.o-image-auto-fit]=\"autoFit\" class=\"o-image-content o-flex-column o-flex-fill\">\n\n <input #input type=\"file\" [disabled]=\"!enabled\" [accept]=\"acceptFileType ? acceptFileType.replace(';',',') : 'image/*'\" readonly\n (change)=\"fileChange(input)\" class=\"o-image-form-field-hidden\" />\n\n @if (hasControls()) {\n <mat-form-field class=\"o-image-form-field\" [matTooltip]=\"tooltip\" [matTooltipClass]=\"tooltipClass\"\n [matTooltipPosition]=\"tooltipPosition\" [matTooltipShowDelay]=\"tooltipShowDelay\" [matTooltipHideDelay]=\"tooltipHideDelay\"\n [subscriptSizing]=\"subscriptSizing\">\n <input type=\"text\" [id]=\"getAttribute()\" [formControlName]=\"getAttribute()\" [placeholder]=\"olabel | oTranslate\" [required]=\"isRequired\" readonly\n (click)=\"input.click()\" (change)=\"onChangeEvent($event)\" class=\"o-image-form-field-input\">\n <input matInput readonly (click)=\"input.click()\" [placeholder]=\"olabel | oTranslate\" [required]=\"isRequired\" [formControl]=\"stateCtrl\" />\n @if (fullScreenButton) {\n <button type=\"button\" [disabled]=\"!enabled\" matSuffix mat-icon-button (click)=\"openFullScreen($event)\">\n <mat-icon>fullscreen</mat-icon>\n </button>\n }\n <button type=\"button\" [disabled]=\"!enabled\" matSuffix mat-icon-button (click)=\"input.click()\">\n <mat-icon>folder</mat-icon>\n </button>\n <button type=\"button\" [disabled]=\"!enabled\" matSuffix mat-icon-button (click)=\"onClickClearValue($event)\">\n <mat-icon>close</mat-icon>\n </button>\n <ng-container *ngTemplateOutlet=\"errorsTemplate\"></ng-container>\n </mat-form-field>\n }\n\n <div class=\"o-image-display-container o-flex-column o-layout-align-center-center o-gap-15\"\n [ngClass]=\"{'o-image-drag-and-drop': this.getValue()?.length === 0 , 'o-image-drag-and-drop-required': hasErrorInDragAndDrop() }\" oFileDragAndDrop\n (onFileDropped)=\"onFileDropped($event)\" [matTooltip]=\"tooltip\" [matTooltipClass]=\"tooltipClass\" [matTooltipPosition]=\"tooltipPosition\"\n [matTooltipShowDelay]=\"tooltipShowDelay\" [matTooltipHideDelay]=\"tooltipHideDelay\" [matTooltipDisabled]=\"hasControls()\">\n\n @if (this.getValue()?.length !== 0 && !hasControls() && enabled && !isReadOnly) {\n <button mat-icon-button (click)=\"onClickClearValue($event)\"\n class=\"o-image-button-remove\">\n <mat-icon>close</mat-icon>\n </button>\n }\n\n @if (this.getValue()?.length !== 0) {\n <img [src]=\"src\" alt=\"\" (click)=\"openFileSelector()\" (error)=\"notFoundImageUrl($event)\"\n [ngClass]=\"{'o-image-cursor': !isReadOnly}\" (keyDown)=\"openFileSelector()\"/>\n }\n\n @if (useEmptyIcon()) {\n <mat-icon class=\"empty-icon\" [class.mat-disabled]=\"!enabled\" aria-label=\"empty image\">\n {{ emptyicon }}\n </mat-icon>\n }\n\n @if (useEmptyImage()) {\n <img [src]=\"src\" alt=\"empty image\" />\n }\n\n @if (this.getValue()?.length === 0) {\n <span class=\"mat-subtitle-2\">{{ 'OIMAGE.TEXT.DROP&DRAG' | oTranslate }}</span>\n }\n\n @if (!hasControls() && this.getValue()?.length === 0) {\n <button mat-button color=\"primary\" (click)=\"openFileSelector()\" ()>\n {{ 'OIMAGE.BUTTON.BROWSEFILE' | oTranslate }}\n </button>\n }\n\n @if (!hasControls() && enabled && !isReadOnly) {\n <ng-container *ngTemplateOutlet=\"errorsTemplate\"> </ng-container>\n }\n </div>\n @if (isReadOnly) {\n <div class=\"read-only-blocker o-flex-fill\" (click)=\"onClickBlocker($event)\"></div>\n }\n </div>\n\n <ng-template #errorsTemplate>\n <mat-error *oMatError=\"hasError('required')\">\n {{ 'FORM_VALIDATION.REQUIRED' | oTranslate }}\n </mat-error>\n <mat-error *oMatError=\"hasError('fileSize')\">\n {{ 'FORM_VALIDATION.FILE_MAXSIZE' | oTranslate }}: {{ getErrorValue('fileSize', 'maxFileSize') }} bytes\n </mat-error>\n </ng-template>\n", styles: [".o-image{display:flex;height:inherit}.o-image .o-image-content{position:relative;width:100%}.o-image .o-image-content .o-image-form-field-hidden{display:none}.o-image .o-image-content .o-image-form-field{width:100%}.o-image .o-image-content .o-image-form-field .o-image-form-field-input{display:none;height:0;opacity:0;outline:none;width:0}.o-image .o-image-content .o-image-display-container{margin:16px;text-align:center;padding:1px;border-color:transparent;height:calc(100% - 32px)}.o-image .o-image-content .o-image-display-container.o-image-drag-and-drop-required:not(.o-file-dragging){border-style:solid;border-width:1px}.o-image .o-image-content .o-image-display-container.o-image-drag-and-drop{padding:40px}.o-image .o-image-content .o-image-display-container .o-image-button-remove{position:absolute;right:24px;top:24px;border-radius:50%;width:16px;height:16px;line-height:16px}.o-image .o-image-content .o-image-display-container .empty-icon.mat-icon{width:42px;height:42px;font-size:42px;display:flex;align-items:center;place-content:center}.o-image .o-image-content .o-image-display-container>img{height:100%;width:100%}.o-image .o-image-content .o-image-display-container>img.o-image-cursor{cursor:pointer}.o-image .o-image-content.o-image-auto-fit .o-image-display-container>img{height:auto;max-height:100%;max-width:100%;object-fit:contain;width:auto}.o-image .o-image-content .read-only-blocker{left:0;right:0;position:absolute;top:0;z-index:2}\n"] }]
|
|
293
293
|
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Injector }], propDecorators: { maxFileSize: [], autoFit: [], showControls: [], fileInput: [{
|
|
294
294
|
type: ViewChild,
|
|
295
295
|
args: ['input']
|
|
@@ -297,4 +297,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
297
297
|
type: HostBinding,
|
|
298
298
|
args: ['style.height']
|
|
299
299
|
}] } });
|
|
300
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby1pbWFnZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvY29tcG9uZW50cy9pbWFnZS9vLWltYWdlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9jb21wb25lbnRzL2ltYWdlL28taW1hZ2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQXFCLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsSixPQUFPLEVBQW1CLFdBQVcsRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsbUJBQW1CLEVBQWlDLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEosT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRzdELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM5RCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUM1RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUs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QUFnQixDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDO3NHQU01RyxXQUFXLE1BTVgsT0FBTyxNQUdKLFlBQVksTUFXWixTQUFTO3NCQURsQixTQUFTO3VCQUFDLE9BQU87Z0JBc0tkLFVBQVU7c0JBRGIsV0FBVzt1QkFBQyxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdDbGFzcywgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIGZvcndhcmRSZWYsIEhvc3RCaW5kaW5nLCBpbmplY3QsIEluamVjdG9yLCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmlld0NoaWxkLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBOR19WQUxVRV9BQ0NFU1NPUiwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgVmFsaWRhdGlvbkVycm9ycywgVmFsaWRhdG9yRm4gfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XG5pbXBvcnQgeyBNYXRUb29sdGlwTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XG5cblxuaW1wb3J0IHsgT1RyYW5zbGF0ZVBpcGUgfSBmcm9tICcuLi8uLi9waXBlcy9vLXRyYW5zbGF0ZS5waXBlJztcbmltcG9ydCB7IE9GaWxlRHJhZ0FuZERyb3BEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL28tZmlsZS1kcmFnLWFuZC1kcm9wLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBPTWF0RXJyb3JEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL28tbWF0LWVycm9yLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBPRnVsbFNjcmVlbkRpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4vZnVsbHNjcmVlbi9mdWxsc2NyZWVuLWRpYWxvZy5jb21wb25lbnQnO1xuXG5pbXBvcnQgeyBCb29sZWFuSW5wdXRDb252ZXJ0ZXIsIE51bWJlcklucHV0Q29udmVydGVyIH0gZnJvbSAnLi4vLi4vZGVjb3JhdG9ycy9pbnB1dC1jb252ZXJ0ZXInO1xuaW1wb3J0IHsgT1NhZmVQaXBlIH0gZnJvbSAnLi4vLi4vcGlwZXMvby1zYWZlLnBpcGUnO1xuaW1wb3J0IHsgRm9ybVZhbHVlT3B0aW9ucyB9IGZyb20gJy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IFV0aWwgfSBmcm9tICcuLi8uLi91dGlsL3V0aWwnO1xuaW1wb3J0IHsgT0Zvcm1WYWx1ZSB9IGZyb20gJy4uL2Zvcm0vby1mb3JtLXZhbHVlJztcbmltcG9ydCB7IE9Gb3JtQ29udHJvbCB9IGZyb20gJy4uL2lucHV0L28tZm9ybS1jb250cm9sLmNsYXNzJztcbmltcG9ydCB7IE9Gb3JtRGF0YUNvbXBvbmVudCB9IGZyb20gJy4uL28tZm9ybS1kYXRhLWNvbXBvbmVudC5jbGFzcyc7XG5cblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfSU5QVVRTX09fSU1BR0UgPSBbXG4gICdlbXB0eWltYWdlOiBlbXB0eS1pbWFnZScsXG4gIC8vIG5vdC1mb3VuZC1pbWFnZSBbc3RyaW5nXTogRGVmYXVsdCBpbWFnZSBmb3IgNDA0IGVycm9yLlxuICAnbm90Zm91bmRpbWFnZTogbm90LWZvdW5kLWltYWdlJyxcbiAgLy8gZW1wdHktaWNvbiBbc3RyaW5nXTogbWF0ZXJpYWwgaWNvbi4gRGVmYXVsdDogcGhvdG8uXG4gICdlbXB0eWljb246IGVtcHR5LWljb24nLFxuICAvLyBzaG93LWNvbnRyb2xzIFt5ZXN8bm8gdHJ1ZXxmYWxzZV06IFNob3dzIG9yIGhpZGVzIHNlbGVjdGlvbiBjb250cm9scy4gRGVmYXVsdDogdHJ1ZS5cbiAgJ3Nob3dDb250cm9sczogc2hvdy1jb250cm9scycsXG4gIC8vIGhlaWdodCBbJSB8IHB4XTogU2V0IHRoZSBoZWlnaHQgb2YgdGhlIGltYWdlLlxuICAnaGVpZ2h0JyxcbiAgLy8gYXV0by1maXQgW3llc3xubyB0cnVlfGZhbHNlXTogQWRqdXN0cyB0aGUgaW1hZ2UgdG8gdGhlIGNvbnRlbnQgb3Igbm90LiBEZWZhdWx0OiB0cnVlLlxuICAnYXV0b0ZpdDogYXV0by1maXQnLFxuICAnZnVsbFNjcmVlbkJ1dHRvbjogZnVsbC1zY3JlZW4tYnV0dG9uJyxcbiAgLy8gYWNjZXB0LWZpbGUtdHlwZSBbc3RyaW5nXTogZmlsZSB0eXBlcyBhbGxvd2VkIG9uIHRoZSBmaWxlIGlucHV0LCBzZXBhcmF0ZWQgYnkgJzsnLiBEZWZhdWx0OiBpbWFnZS8qLlxuICAvLyBmaWxlX2V4dGVuc2lvbiwgaW1hZ2UvKiwgbWVkaWFfdHlwZS4gU2VlIGh0dHBzOi8vd3d3Lnczc2Nob29scy5jb20vdGFncy9hdHRfaW5wdXRfYWNjZXB0LmFzcFxuICAnYWNjZXB0RmlsZVR5cGU6IGFjY2VwdC1maWxlLXR5cGUnLFxuICAvLyBtYXgtZmlsZS1zaXplIFtudW1iZXJdOiBtYXhpbXVtIGZpbGUgc2l6ZSBhbGxvd2VkLCBpbiBieXRlcy4gRGVmYXVsdDogbm8gdmFsdWUuXG4gICdtYXhGaWxlU2l6ZTogbWF4LWZpbGUtc2l6ZSdcbl07XG5cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbTmdDbGFzcywgTmdUZW1wbGF0ZU91dGxldCwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgTWF0Rm9ybUZpZWxkTW9kdWxlLCBNYXRJbnB1dE1vZHVsZSwgTWF0QnV0dG9uTW9kdWxlLCBNYXRJY29uTW9kdWxlLCBNYXRUb29sdGlwTW9kdWxlLCBPVHJhbnNsYXRlUGlwZSwgT01hdEVycm9yRGlyZWN0aXZlLCBPRmlsZURyYWdBbmREcm9wRGlyZWN0aXZlXSxcbiAgc2VsZWN0b3I6ICdvLWltYWdlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL28taW1hZ2UuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9vLWltYWdlLmNvbXBvbmVudC5zY3NzJ10sXG4gIGlucHV0czogREVGQVVMVF9JTlBVVFNfT19JTUFHRSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgaG9zdDoge1xuICAgICdbY2xhc3Muby1pbWFnZV0nOiAndHJ1ZSdcbiAgfSxcbiAgcHJvdmlkZXJzOiBbT1NhZmVQaXBlLCB7IHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLCB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBPSW1hZ2VDb21wb25lbnQpLCBtdWx0aTogdHJ1ZSB9XVxufSlcbmV4cG9ydCBjbGFzcyBPSW1hZ2VDb21wb25lbnQgZXh0ZW5kcyBPRm9ybURhdGFDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgcHVibGljIGFjY2VwdEZpbGVUeXBlOiBzdHJpbmcgPSAnaW1hZ2UvKic7XG4gIEBOdW1iZXJJbnB1dENvbnZlcnRlcigpXG4gIHB1YmxpYyBtYXhGaWxlU2l6ZTogbnVtYmVyO1xuICBwdWJsaWMgZW1wdHlpbWFnZTogc3RyaW5nO1xuICBwdWJsaWMgbm90Zm91bmRpbWFnZTogc3RyaW5nO1xuICBwdWJsaWMgZW1wdHlpY29uOiBzdHJpbmc7XG4gIHB1YmxpYyBoZWlnaHQ6IHN0cmluZztcbiAgQEJvb2xlYW5JbnB1dENvbnZlcnRlcigpXG4gIHB1YmxpYyBhdXRvRml0OiBib29sZWFuID0gdHJ1ZTtcbiAgcHVibGljIGN1cnJlbnRGaWxlTmFtZTogc3RyaW5nID0gJyc7XG4gIEBCb29sZWFuSW5wdXRDb252ZXJ0ZXIoKVxuICBwcm90ZWN0ZWQgc2hvd0NvbnRyb2xzOiBib29sZWFuID0gdHJ1ZTtcbiAgc2V0IGZ1bGxTY3JlZW5CdXR0b24odmFsOiBib29sZWFuKSB7XG4gICAgdmFsID0gVXRpbC5wYXJzZUJvb2xlYW4oU3RyaW5nKHZhbCkpO1xuICAgIHRoaXMuX2Z1bGxTY3JlZW5CdXR0b24gPSB2YWw7XG4gIH1cbiAgZ2V0IGZ1bGxTY3JlZW5CdXR0b24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2Z1bGxTY3JlZW5CdXR0b247XG4gIH1cbiAgcHJvdGVjdGVkIF9mdWxsU2NyZWVuQnV0dG9uID0gZmFsc2U7XG5cbiAgQFZpZXdDaGlsZCgnaW5wdXQnKVxuICBwcm90ZWN0ZWQgZmlsZUlucHV0OiBFbGVtZW50UmVmO1xuICBwcm90ZWN0ZWQgX3VzZUVtcHR5SWNvbjogYm9vbGVhbiA9IHRydWU7XG4gIHByb3RlY3RlZCBfdXNlRW1wdHlJbWFnZTogYm9vbGVhbiA9IGZhbHNlO1xuICBwcm90ZWN0ZWQgb1NhZmUgPSBpbmplY3QoT1NhZmVQaXBlKTtcbiAgcHJvdGVjdGVkIGRpYWxvZzogTWF0RGlhbG9nO1xuICBwdWJsaWMgc3RhdGVDdHJsOiBGb3JtQ29udHJvbDtcbiAgcHVibGljIHNyYyA9ICcnO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGVsUmVmOiBFbGVtZW50UmVmLFxuICAgIGluamVjdG9yOiBJbmplY3RvclxuICApIHtcbiAgICBzdXBlcihlbFJlZiwgaW5qZWN0b3IpO1xuICAgIHRoaXMuX2RlZmF1bHRTUUxUeXBlS2V5ID0gJ0JBU0U2NCc7XG4gICAgdGhpcy5kaWFsb2cgPSB0aGlzLmluamVjdG9yLmdldChNYXREaWFsb2cpO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHN1cGVyLm5nT25Jbml0KCk7XG5cbiAgICBpZiAodGhpcy5lbXB0eWltYWdlICYmIHRoaXMuZW1wdHlpbWFnZS5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLl91c2VFbXB0eUljb24gPSBmYWxzZTtcbiAgICAgIHRoaXMuX3VzZUVtcHR5SW1hZ2UgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmVtcHR5aWNvbiA9PT0gdW5kZWZpbmVkICYmICF0aGlzLl91c2VFbXB0eUltYWdlKSB7XG4gICAgICB0aGlzLmVtcHR5aWNvbiA9ICdwaG90byc7XG4gICAgICB0aGlzLl91c2VFbXB0eUljb24gPSB0cnVlO1xuICAgICAgdGhpcy5fdXNlRW1wdHlJbWFnZSA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICB9XG5cbiAgcHVibGljIGVuc3VyZU9Gb3JtVmFsdWUodmFsOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAodmFsIGluc3RhbmNlb2YgT0Zvcm1WYWx1ZSkge1xuICAgICAgaWYgKHZhbC52YWx1ZSAmJiB2YWwudmFsdWUuYnl0ZXMpIHtcbiAgICAgICAgdmFsID0gdmFsLnZhbHVlLmJ5dGVzO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFsID0gdmFsLnZhbHVlO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodmFsKSB7XG4gICAgICBpZiAodmFsLmJ5dGVzKSB7XG4gICAgICAgIHZhbCA9IHZhbC5ieXRlcztcbiAgICAgIH0gZWxzZSBpZiAoVXRpbC5pc0Jhc2U2NCh2YWwpICYmIHZhbC5zdWJzdHJpbmcoMCwgNCkgPT09ICdkYXRhJykge1xuICAgICAgICAvLyBSZW1vdmluZyBcImRhdGE6aW1hZ2UvKjtiYXNlNjQsXCJcbiAgICAgICAgdmFsID0gdmFsLnN1YnN0cmluZyh2YWwuaW5kZXhPZignYmFzZTY0JykgKyA3KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdmFsID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgICB0aGlzLnZhbHVlID0gbmV3IE9Gb3JtVmFsdWUodmFsKTtcblxuICAgIHRoaXMuc3JjID0gdGhpcy5nZXRTcmNWYWx1ZSgpO1xuICB9XG5cbiAgcHVibGljIGlzRW1wdHkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0VmFsdWUoKT8ubGVuZ3RoID09PSAwO1xuICB9XG5cbiAgcHVibGljIGNyZWF0ZUZvcm1Db250cm9sKGNmZz86IHsgdmFsdWU6IGFueSwgZGlzYWJsZWQ6IGJvb2xlYW4gfSwgdmFsaWRhdG9ycz86IFZhbGlkYXRvckZuW10pOiBPRm9ybUNvbnRyb2wge1xuICAgIHRoaXMuX2ZDb250cm9sID0gc3VwZXIuY3JlYXRlRm9ybUNvbnRyb2woY2ZnLCB2YWxpZGF0b3JzKTtcbiAgICB0aGlzLnN0YXRlQ3RybCA9IG5ldyBGb3JtQ29udHJvbCh2b2lkIDAsIHRoaXMucmVzb2x2ZVZhbGlkYXRvcnMoKSk7XG4gICAgdGhpcy5fZkNvbnRyb2wuZkNvbnRyb2xDaGlsZHJlbiA9IFt0aGlzLnN0YXRlQ3RybF07XG4gICAgcmV0dXJuIHRoaXMuX2ZDb250cm9sO1xuICB9XG5cbiAgcHVibGljIGZpbGVDaGFuZ2UoaW5wdXQpOiB2b2lkIHtcbiAgICBpZiAoaW5wdXQuZmlsZXNbMF0pIHtcbiAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgICByZWFkZXIuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGV2ZW50ID0+IHtcbiAgICAgICAgbGV0IHJlc3VsdCA9IGV2ZW50LnRhcmdldFsncmVzdWx0J107XG4gICAgICAgIGlmIChyZXN1bHQgJiYgdHlwZW9mIChyZXN1bHQpID09PSAnc3RyaW5nJyAmJiBVdGlsLmlzQmFzZTY0KHJlc3VsdCkpIHtcbiAgICAgICAgICAvLyBSZW1vdmluZyBcImRhdGE6aW1hZ2UvKjtiYXNlNjQsXCJcbiAgICAgICAgICByZXN1bHQgPSByZXN1bHQuc3Vic3RyaW5nKHJlc3VsdC5pbmRleE9mKCdiYXNlNjQnKSArIDcpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2V0VmFsdWUocmVzdWx0KTtcbiAgICAgICAgaWYgKHRoaXMuX2ZDb250cm9sKSB7XG4gICAgICAgICAgdGhpcy5fZkNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xuICAgICAgICB9XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgfSwgZmFsc2UpO1xuICAgICAgaWYgKGlucHV0LmZpbGVzWzBdKSB7XG4gICAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGlucHV0LmZpbGVzWzBdKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5jdXJyZW50RmlsZU5hbWUgPSBpbnB1dC5maWxlc1swXS5uYW1lO1xuICAgICAgdGhpcy5zdGF0ZUN0cmwuc2V0VmFsdWUodGhpcy5jdXJyZW50RmlsZU5hbWUpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBub3RGb3VuZEltYWdlVXJsKGV2ZW50KTogYW55IHtcbiAgICBldmVudC50YXJnZXQuc3JjID0gVXRpbC5pc0RlZmluZWQodGhpcy5ub3Rmb3VuZGltYWdlKSA/IHRoaXMubm90Zm91bmRpbWFnZSA6ICcnO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRTcmNWYWx1ZSgpOiBhbnkge1xuXG4gICAgaWYgKHRoaXMudmFsdWUgJiYgdGhpcy52YWx1ZS52YWx1ZSkge1xuICAgICAgaWYgKHRoaXMudmFsdWUudmFsdWUgaW5zdGFuY2VvZiBPYmplY3QgJiYgdGhpcy52YWx1ZS52YWx1ZS5ieXRlcykge1xuICAgICAgICBsZXQgc3JjOiBzdHJpbmcgPSAnJztcbiAgICAgICAgaWYgKHRoaXMudmFsdWUudmFsdWUuYnl0ZXMuc3Vic3RyaW5nKDAsIDQpID09PSAnZGF0YScpIHtcbiAgICAgICAgICBzcmMgPSAnZGF0YTppbWFnZS8qO2Jhc2U2NCwnICsgdGhpcy52YWx1ZS52YWx1ZS5ieXRlcy5zdWJzdHJpbmcodGhpcy52YWx1ZS52YWx1ZS5ieXRlcy5pbmRleE9mKCdiYXNlNjQnKSArIDcpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNyYyA9ICdkYXRhOmltYWdlLyo7YmFzZTY0LCcgKyB0aGlzLnZhbHVlLnZhbHVlLmJ5dGVzO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLm9TYWZlLnRyYW5zZm9ybShzcmMsICd1cmwnKTtcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHRoaXMudmFsdWUudmFsdWUgPT09ICdzdHJpbmcnICYmIFV0aWwuaXNCYXNlNjQodGhpcy52YWx1ZS52YWx1ZSkpIHtcbiAgICAgICAgbGV0IHNyYzogc3RyaW5nID0gJyc7XG4gICAgICAgIGlmICh0aGlzLnZhbHVlLnZhbHVlLnN1YnN0cmluZygwLCA0KSA9PT0gJ2RhdGEnKSB7XG4gICAgICAgICAgc3JjID0gJ2RhdGE6aW1hZ2UvKjtiYXNlNjQsJyArIHRoaXMudmFsdWUudmFsdWUuc3Vic3RyaW5nKHRoaXMudmFsdWUudmFsdWUuaW5kZXhPZignYmFzZTY0JykgKyA3KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzcmMgPSAnZGF0YTppbWFnZS8qO2Jhc2U2NCwnICsgdGhpcy52YWx1ZS52YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5vU2FmZS50cmFuc2Zvcm0oc3JjLCAndXJsJyk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy52YWx1ZS52YWx1ZSkge1xuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZS52YWx1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLmVtcHR5aW1hZ2U7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0aGlzLmVtcHR5aW1hZ2UpIHtcbiAgICAgIHJldHVybiB0aGlzLmVtcHR5aW1hZ2U7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uQ2xpY2tCbG9ja2VyKGV2dDogRXZlbnQpOiB2b2lkIHtcbiAgICBldnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gIH1cblxuICBwdWJsaWMgb25DbGlja0NsZWFyVmFsdWUoZTogRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaXNSZWFkT25seSAmJiB0aGlzLmVuYWJsZWQpIHtcbiAgICAgIHN1cGVyLm9uQ2xpY2tDbGVhclZhbHVlKGUpO1xuICAgICAgdGhpcy5maWxlSW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xuICAgICAgdGhpcy5zdGF0ZUN0cmwucmVzZXQoKTtcbiAgICAgIHRoaXMuY3VycmVudEZpbGVOYW1lID0gJyc7XG4gICAgfVxuICAgIGlmICh0aGlzLl9mQ29udHJvbCkge1xuICAgICAgdGhpcy5fZkNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBoYXNDb250cm9scygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zaG93Q29udHJvbHM7XG4gIH1cblxuICBwdWJsaWMgdXNlRW1wdHlJY29uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl91c2VFbXB0eUljb24gJiYgdGhpcy5pc0VtcHR5KCk7XG4gIH1cblxuICBwdWJsaWMgdXNlRW1wdHlJbWFnZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fdXNlRW1wdHlJbWFnZSAmJiB0aGlzLmlzRW1wdHkoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRGb3JtR3JvdXAoKTogRm9ybUdyb3VwIHtcbiAgICBsZXQgZm9ybUdyb3VwOiBGb3JtR3JvdXAgPSBzdXBlci5nZXRGb3JtR3JvdXAoKTtcbiAgICBpZiAoIWZvcm1Hcm91cCkge1xuICAgICAgZm9ybUdyb3VwID0gbmV3IEZvcm1Hcm91cCh7fSk7XG4gICAgICBmb3JtR3JvdXAuYWRkQ29udHJvbCh0aGlzLmdldEF0dHJpYnV0ZSgpLCB0aGlzLmdldENvbnRyb2woKSk7XG4gICAgfVxuICAgIHJldHVybiBmb3JtR3JvdXA7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ3N0eWxlLmhlaWdodCcpXG4gIGdldCBob3N0SGVpZ2h0KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuaGVpZ2h0O1xuICB9XG5cbiAgcHVibGljIG9wZW5GdWxsU2NyZWVuKGU/OiBFdmVudCk6IHZvaWQge1xuICAgIHRoaXMuZGlhbG9nLm9wZW4oT0Z1bGxTY3JlZW5EaWFsb2dDb21wb25lbnQsIHtcbiAgICAgIHdpZHRoOiAnOTAlJyxcbiAgICAgIGhlaWdodDogJzkwJScsXG4gICAgICByb2xlOiAnZGlhbG9nJyxcbiAgICAgIGRpc2FibGVDbG9zZTogZmFsc2UsXG4gICAgICBwYW5lbENsYXNzOiAnby1pbWFnZS1mdWxsc2NyZWVuLWRpYWxvZy1jZGstb3ZlcmxheScsXG4gICAgICBkYXRhOiB0aGlzLmdldFNyY1ZhbHVlKClcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBvcGVuRmlsZVNlbGVjdG9yKGU/OiBFdmVudCk6IHZvaWQge1xuICAgIGlmIChVdGlsLmlzRGVmaW5lZCh0aGlzLmZpbGVJbnB1dCkpIHtcbiAgICAgIHRoaXMuZmlsZUlucHV0Lm5hdGl2ZUVsZW1lbnQuY2xpY2soKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaW50ZXJuYWxGb3JtQ29udHJvbCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmdldEF0dHJpYnV0ZSgpICsgJ192YWx1ZSc7XG4gIH1cblxuICBwdWJsaWMgcmVzb2x2ZVZhbGlkYXRvcnMoKTogVmFsaWRhdG9yRm5bXSB7XG4gICAgY29uc3QgdmFsaWRhdG9yczogVmFsaWRhdG9yRm5bXSA9IHN1cGVyLnJlc29sdmVWYWxpZGF0b3JzKCk7XG4gICAgaWYgKFV0aWwuaXNEZWZpbmVkKHRoaXMubWF4RmlsZVNpemUpKSB7XG4gICAgICB2YWxpZGF0b3JzLnB1c2godGhpcy5tYXhGaWxlU2l6ZVZhbGlkYXRvci5iaW5kKHRoaXMpKTtcbiAgICB9XG4gICAgcmV0dXJuIHZhbGlkYXRvcnM7XG4gIH1cblxuICBwdWJsaWMgc2V0VmFsdWUodmFsOiBhbnksIG9wdGlvbnM6IEZvcm1WYWx1ZU9wdGlvbnMgPSB7fSwgc2V0RGlydHk6IGJvb2xlYW4gPSBmYWxzZSk6IHZvaWQge1xuICAgIHN1cGVyLnNldFZhbHVlKHZhbCwgb3B0aW9ucywgc2V0RGlydHkpO1xuICAgIGlmICghVXRpbC5pc0RlZmluZWQodGhpcy5nZXRWYWx1ZSgpKSB8fCAhdGhpcy5jdXJyZW50RmlsZU5hbWUpIHtcbiAgICAgIHRoaXMuc3RhdGVDdHJsLnJlc2V0KCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG1heEZpbGVTaXplVmFsaWRhdG9yKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMge1xuICAgIGlmIChjb250cm9sLnZhbHVlICYmIGNvbnRyb2wudmFsdWUubGVuZ3RoID4gMCAmJiBVdGlsLmlzRGVmaW5lZCh0aGlzLm1heEZpbGVTaXplKSkge1xuICAgICAgaWYgKCFVdGlsLmlzRGVmaW5lZCh0aGlzLmZpbGVJbnB1dC5uYXRpdmVFbGVtZW50LmZpbGVzKSkge1xuICAgICAgICByZXR1cm4ge307XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5maWxlSW5wdXQubmF0aXZlRWxlbWVudC5maWxlcyAmJiAhQXJyYXkuZnJvbTxGaWxlPih0aGlzLmZpbGVJbnB1dC5uYXRpdmVFbGVtZW50LmZpbGVzKS5ldmVyeShmaWxlID0+IGZpbGUuc2l6ZSA8IHRoaXMubWF4RmlsZVNpemUpKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZmlsZVNpemU6IHtcbiAgICAgICAgICAgIG1heEZpbGVTaXplOiB0aGlzLm1heEZpbGVTaXplXG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4ge307XG4gIH1cblxuICAvKiBUaGlzIG1ldGhvZCBiZSB0cmlnZ2VyZWQgd2hlbiBhIGltYWdlIGlzIGRyb3BwZWQgb24gb3VyIGhvc3QgRE9NIGVsZW1lbnQgLiovXG4gIG9uRmlsZURyb3BwZWQocEZpbGVMaXN0OiBGaWxlW10pIHtcbiAgICBjb25zdCBmaWxlcyA9IE9iamVjdC5rZXlzKHBGaWxlTGlzdCkubWFwKGtleSA9PiBwRmlsZUxpc3Rba2V5XSk7XG4gICAgY29uc3QgZmlsZUxpc3QgPSB0aGlzLmNyZWF0ZUZpbGVMaXN0SXRlbXMoZmlsZXMpO1xuXG5cbiAgICBjb25zdCB2YWxpZCA9IHRoaXMuYWNjZXB0RmlsZVR5cGUucmVwbGFjZSgvXFxzL2csICcnKS5zcGxpdCgnLCcpLmZpbHRlcihhY2NlcHQgPT4gbmV3IFJlZ0V4cChhY2NlcHQucmVwbGFjZSgvXFwqL2csICcuXFwqJykucmVwbGFjZSgvXFwsL2csICd8JykpLnRlc3QoZmlsZUxpc3RbMF0udHlwZSkpLmxlbmd0aCA+IDBcblxuICAgIGlmICh2YWxpZCkge1xuICAgICAgdGhpcy5maWxlSW5wdXQubmF0aXZlRWxlbWVudC5maWxlcyA9IGZpbGVMaXN0O1xuICAgICAgdGhpcy5maWxlQ2hhbmdlKHRoaXMuZmlsZUlucHV0Lm5hdGl2ZUVsZW1lbnQpO1xuICAgIH1cbiAgfVxuXG4gIGNyZWF0ZUZpbGVMaXN0SXRlbXMoZmlsZXMpIHtcbiAgICBjb25zdCBiID0gbmV3IENsaXBib2FyZEV2ZW50KFwiXCIpLmNsaXBib2FyZERhdGEgfHwgbmV3IERhdGFUcmFuc2ZlcigpXG4gICAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IGZpbGVzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSBiLml0ZW1zLmFkZChmaWxlc1tpXSlcbiAgICByZXR1cm4gYi5maWxlc1xuICB9XG5cbiAgZ2V0RmlsZU5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5jdXJyZW50RmlsZU5hbWU7XG4gIH1cblxuICBnZXRJbWFnZUZpbGUoKTogRmlsZSB7XG4gICAgaWYgKHRoaXMuZmlsZUlucHV0ICYmIHRoaXMuZmlsZUlucHV0Lm5hdGl2ZUVsZW1lbnQuZmlsZXMubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIHRoaXMuZmlsZUlucHV0Lm5hdGl2ZUVsZW1lbnQuZmlsZXNbMF07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB2b2lkICgwKTtcbiAgICB9XG4gIH1cblxuICBoYXNFcnJvckluRHJhZ0FuZERyb3AoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0Rm9ybUNvbnRyb2woKSAmJiB0aGlzLmdldEZvcm1Db250cm9sKCkudG91Y2hlZCAmJiB0aGlzLmdldEZvcm1Db250cm9sKCkuaW52YWxpZCAmJiAhdGhpcy5oYXNDb250cm9scygpICYmIHRoaXMuZW5hYmxlZCAmJiAhdGhpcy5pc1JlYWRPbmx5O1xuXG4gIH1cblxufVxuIiwiPGRpdiBbZm9ybUdyb3VwXT1cImdldEZvcm1Hcm91cCgpXCIgW2NsYXNzLm8taW1hZ2UtYXV0by1maXRdPVwiYXV0b0ZpdFwiIGNsYXNzPVwiby1pbWFnZS1jb250ZW50IG8tZmxleC1jb2x1bW4gby1mbGV4LWZpbGxcIj5cblxuICA8aW5wdXQgI2lucHV0IHR5cGU9XCJmaWxlXCIgW2Rpc2FibGVkXT1cIiFlbmFibGVkXCIgW2FjY2VwdF09XCJhY2NlcHRGaWxlVHlwZSA/IGFjY2VwdEZpbGVUeXBlLnJlcGxhY2UoJzsnLCcsJykgOiAnaW1hZ2UvKidcIiByZWFkb25seVxuICAgIChjaGFuZ2UpPVwiZmlsZUNoYW5nZShpbnB1dClcIiBjbGFzcz1cIm8taW1hZ2UtZm9ybS1maWVsZC1oaWRkZW5cIiAvPlxuXG4gICAgQGlmIChoYXNDb250cm9scygpKSB7XG4gICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJvLWltYWdlLWZvcm0tZmllbGRcIiBbbWF0VG9vbHRpcF09XCJ0b29sdGlwXCIgW21hdFRvb2x0aXBDbGFzc109XCJ0b29sdGlwQ2xhc3NcIlxuICAgICAgICBbbWF0VG9vbHRpcFBvc2l0aW9uXT1cInRvb2x0aXBQb3NpdGlvblwiIFttYXRUb29sdGlwU2hvd0RlbGF5XT1cInRvb2x0aXBTaG93RGVsYXlcIiBbbWF0VG9vbHRpcEhpZGVEZWxheV09XCJ0b29sdGlwSGlkZURlbGF5XCJcbiAgICAgICAgW3N1YnNjcmlwdFNpemluZ109XCJzdWJzY3JpcHRTaXppbmdcIj5cbiAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgW2lkXT1cImdldEF0dHJpYnV0ZSgpXCIgW2Zvcm1Db250cm9sTmFtZV09XCJnZXRBdHRyaWJ1dGUoKVwiIFtwbGFjZWhvbGRlcl09XCJvbGFiZWwgfCBvVHJhbnNsYXRlXCIgW3JlcXVpcmVkXT1cImlzUmVxdWlyZWRcIiByZWFkb25seVxuICAgICAgICAgIChjbGljayk9XCJpbnB1dC5jbGljaygpXCIgKGNoYW5nZSk9XCJvbkNoYW5nZUV2ZW50KCRldmVudClcIiBjbGFzcz1cIm8taW1hZ2UtZm9ybS1maWVsZC1pbnB1dFwiPlxuICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCByZWFkb25seSAoY2xpY2spPVwiaW5wdXQuY2xpY2soKVwiIFtwbGFjZWhvbGRlcl09XCJvbGFiZWwgfCBvVHJhbnNsYXRlXCIgW3JlcXVpcmVkXT1cImlzUmVxdWlyZWRcIiBbZm9ybUNvbnRyb2xdPVwic3RhdGVDdHJsXCIgLz5cbiAgICAgICAgICBAaWYgKGZ1bGxTY3JlZW5CdXR0b24pIHtcbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIFtkaXNhYmxlZF09XCIhZW5hYmxlZFwiIG1hdFN1ZmZpeCBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cIm9wZW5GdWxsU2NyZWVuKCRldmVudClcIj5cbiAgICAgICAgICAgICAgPG1hdC1pY29uPmZ1bGxzY3JlZW48L21hdC1pY29uPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgfVxuICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIFtkaXNhYmxlZF09XCIhZW5hYmxlZFwiIG1hdFN1ZmZpeCBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cImlucHV0LmNsaWNrKClcIj5cbiAgICAgICAgICAgIDxtYXQtaWNvbj5mb2xkZXI8L21hdC1pY29uPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIFtkaXNhYmxlZF09XCIhZW5hYmxlZFwiIG1hdFN1ZmZpeCBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cIm9uQ2xpY2tDbGVhclZhbHVlKCRldmVudClcIj5cbiAgICAgICAgICAgIDxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImVycm9yc1RlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICB9XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJvLWltYWdlLWRpc3BsYXktY29udGFpbmVyIG8tZmxleC1jb2x1bW4gby1sYXlvdXQtYWxpZ24tY2VudGVyLWNlbnRlciBvLWdhcC0xNVwiXG4gICAgICAgIFtuZ0NsYXNzXT1cInsnby1pbWFnZS1kcmFnLWFuZC1kcm9wJzogdGhpcy5nZXRWYWx1ZSgpPy5sZW5ndGggPT09IDAgLCAnby1pbWFnZS1kcmFnLWFuZC1kcm9wLXJlcXVpcmVkJzogaGFzRXJyb3JJbkRyYWdBbmREcm9wKCkgfVwiIG9GaWxlRHJhZ0FuZERyb3BcbiAgICAgICAgKG9uRmlsZURyb3BwZWQpPVwib25GaWxlRHJvcHBlZCgkZXZlbnQpXCIgW21hdFRvb2x0aXBdPVwidG9vbHRpcFwiIFttYXRUb29sdGlwQ2xhc3NdPVwidG9vbHRpcENsYXNzXCIgW21hdFRvb2x0aXBQb3NpdGlvbl09XCJ0b29sdGlwUG9zaXRpb25cIlxuICAgICAgICBbbWF0VG9vbHRpcFNob3dEZWxheV09XCJ0b29sdGlwU2hvd0RlbGF5XCIgW21hdFRvb2x0aXBIaWRlRGVsYXldPVwidG9vbHRpcEhpZGVEZWxheVwiIFttYXRUb29sdGlwRGlzYWJsZWRdPVwiaGFzQ29udHJvbHMoKVwiPlxuXG4gICAgICAgIEBpZiAodGhpcy5nZXRWYWx1ZSgpPy5sZW5ndGggIT09IDAgJiYgIWhhc0NvbnRyb2xzKCkgJiYgZW5hYmxlZCAmJiAhaXNSZWFkT25seSkge1xuICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJvbkNsaWNrQ2xlYXJWYWx1ZSgkZXZlbnQpXCJcbiAgICAgICAgICAgIGNsYXNzPVwiby1pbWFnZS1idXR0b24tcmVtb3ZlXCI+XG4gICAgICAgICAgICA8bWF0LWljb24+Y2xvc2U8L21hdC1pY29uPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICB9XG5cbiAgICAgICAgQGlmICh0aGlzLmdldFZhbHVlKCk/Lmxlbmd0aCAhPT0gMCkge1xuICAgICAgICAgIDxpbWcgW3NyY109XCJzcmNcIiBhbHQ9XCJcIiAoY2xpY2spPVwib3BlbkZpbGVTZWxlY3RvcigpXCIgKGVycm9yKT1cIm5vdEZvdW5kSW1hZ2VVcmwoJGV2ZW50KVwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7J28taW1hZ2UtY3Vyc29yJzogIWlzUmVhZE9ubHl9XCIgIChrZXlEb3duKT1cIm9wZW5GaWxlU2VsZWN0b3IoKVwiLz5cbiAgICAgICAgfVxuXG4gICAgICAgIEBpZiAodXNlRW1wdHlJY29uKCkpIHtcbiAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJlbXB0eS1pY29uXCIgW2NsYXNzLm1hdC1kaXNhYmxlZF09XCIhZW5hYmxlZFwiIGFyaWEtbGFiZWw9XCJlbXB0eSBpbWFnZVwiPlxuICAgICAgICAgICAge3sgZW1wdHlpY29uIH19XG4gICAgICAgICAgPC9tYXQtaWNvbj5cbiAgICAgICAgfVxuXG4gICAgICAgIEBpZiAodXNlRW1wdHlJbWFnZSgpKSB7XG4gICAgICAgICAgPGltZyBbc3JjXT1cInNyY1wiIGFsdD1cImVtcHR5IGltYWdlXCIgLz5cbiAgICAgICAgfVxuXG4gICAgICAgIEBpZiAodGhpcy5nZXRWYWx1ZSgpPy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdC1zdWJ0aXRsZS0yXCI+e3sgJ09JTUFHRS5URVhULkRST1AmRFJBRycgfCBvVHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICB9XG5cbiAgICAgICAgQGlmICghaGFzQ29udHJvbHMoKSAmJiB0aGlzLmdldFZhbHVlKCk/Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwib3BlbkZpbGVTZWxlY3RvcigpXCIgKCk+XG4gICAgICAgICAgICB7eyAnT0lNQUdFLkJVVFRPTi5CUk9XU0VGSUxFJyB8IG9UcmFuc2xhdGUgfX1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgfVxuXG4gICAgICAgIEBpZiAoIWhhc0NvbnRyb2xzKCkgJiYgZW5hYmxlZCAmJiAhaXNSZWFkT25seSkge1xuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJlcnJvcnNUZW1wbGF0ZVwiPiA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgICBAaWYgKGlzUmVhZE9ubHkpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cInJlYWQtb25seS1ibG9ja2VyIG8tZmxleC1maWxsXCIgKGNsaWNrKT1cIm9uQ2xpY2tCbG9ja2VyKCRldmVudClcIj48L2Rpdj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cblxuICAgIDxuZy10ZW1wbGF0ZSAjZXJyb3JzVGVtcGxhdGU+XG4gICAgICA8bWF0LWVycm9yICpvTWF0RXJyb3I9XCJoYXNFcnJvcigncmVxdWlyZWQnKVwiPlxuICAgICAgICB7eyAnRk9STV9WQUxJREFUSU9OLlJFUVVJUkVEJyB8IG9UcmFuc2xhdGUgfX1cbiAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgPG1hdC1lcnJvciAqb01hdEVycm9yPVwiaGFzRXJyb3IoJ2ZpbGVTaXplJylcIj5cbiAgICAgICAge3sgJ0ZPUk1fVkFMSURBVElPTi5GSUxFX01BWFNJWkUnIHwgb1RyYW5zbGF0ZSB9fToge3sgZ2V0RXJyb3JWYWx1ZSgnZmlsZVNpemUnLCAnbWF4RmlsZVNpemUnKSB9fSBieXRlc1xuICAgICAgPC9tYXQtZXJyb3I+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
300
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby1pbWFnZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvY29tcG9uZW50cy9pbWFnZS9vLWltYWdlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9jb21wb25lbnRzL2ltYWdlL28taW1hZ2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQXFCLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsSixPQUFPLEVBQW1CLFdBQVcsRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsbUJBQW1CLEVBQWlDLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEosT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRzdELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM5RCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUM1RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUs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QUFnQixDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDO3NHQU01RyxXQUFXLE1BTVgsT0FBTyxNQUdKLFlBQVksTUFXWixTQUFTO3NCQURsQixTQUFTO3VCQUFDLE9BQU87Z0JBc0tkLFVBQVU7c0JBRGIsV0FBVzt1QkFBQyxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdDbGFzcywgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIGZvcndhcmRSZWYsIEhvc3RCaW5kaW5nLCBpbmplY3QsIEluamVjdG9yLCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmlld0NoaWxkLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBOR19WQUxVRV9BQ0NFU1NPUiwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgVmFsaWRhdGlvbkVycm9ycywgVmFsaWRhdG9yRm4gfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XG5pbXBvcnQgeyBNYXRUb29sdGlwTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XG5cblxuaW1wb3J0IHsgT1RyYW5zbGF0ZVBpcGUgfSBmcm9tICcuLi8uLi9waXBlcy9vLXRyYW5zbGF0ZS5waXBlJztcbmltcG9ydCB7IE9GaWxlRHJhZ0FuZERyb3BEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL28tZmlsZS1kcmFnLWFuZC1kcm9wLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBPTWF0RXJyb3JEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL28tbWF0LWVycm9yLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBPRnVsbFNjcmVlbkRpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4vZnVsbHNjcmVlbi9mdWxsc2NyZWVuLWRpYWxvZy5jb21wb25lbnQnO1xuXG5pbXBvcnQgeyBCb29sZWFuSW5wdXRDb252ZXJ0ZXIsIE51bWJlcklucHV0Q29udmVydGVyIH0gZnJvbSAnLi4vLi4vZGVjb3JhdG9ycy9pbnB1dC1jb252ZXJ0ZXInO1xuaW1wb3J0IHsgT1NhZmVQaXBlIH0gZnJvbSAnLi4vLi4vcGlwZXMvby1zYWZlLnBpcGUnO1xuaW1wb3J0IHsgRm9ybVZhbHVlT3B0aW9ucyB9IGZyb20gJy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IFV0aWwgfSBmcm9tICcuLi8uLi91dGlsL3V0aWwnO1xuaW1wb3J0IHsgT0Zvcm1WYWx1ZSB9IGZyb20gJy4uL2Zvcm0vby1mb3JtLXZhbHVlJztcbmltcG9ydCB7IE9Gb3JtQ29udHJvbCB9IGZyb20gJy4uL2lucHV0L28tZm9ybS1jb250cm9sLmNsYXNzJztcbmltcG9ydCB7IE9Gb3JtRGF0YUNvbXBvbmVudCB9IGZyb20gJy4uL28tZm9ybS1kYXRhLWNvbXBvbmVudC5jbGFzcyc7XG5cblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfSU5QVVRTX09fSU1BR0UgPSBbXG4gICdlbXB0eWltYWdlOiBlbXB0eS1pbWFnZScsXG4gIC8vIG5vdC1mb3VuZC1pbWFnZSBbc3RyaW5nXTogRGVmYXVsdCBpbWFnZSBmb3IgNDA0IGVycm9yLlxuICAnbm90Zm91bmRpbWFnZTogbm90LWZvdW5kLWltYWdlJyxcbiAgLy8gZW1wdHktaWNvbiBbc3RyaW5nXTogbWF0ZXJpYWwgaWNvbi4gRGVmYXVsdDogcGhvdG8uXG4gICdlbXB0eWljb246IGVtcHR5LWljb24nLFxuICAvLyBzaG93LWNvbnRyb2xzIFt5ZXN8bm8gdHJ1ZXxmYWxzZV06IFNob3dzIG9yIGhpZGVzIHNlbGVjdGlvbiBjb250cm9scy4gRGVmYXVsdDogdHJ1ZS5cbiAgJ3Nob3dDb250cm9sczogc2hvdy1jb250cm9scycsXG4gIC8vIGhlaWdodCBbJSB8IHB4XTogU2V0IHRoZSBoZWlnaHQgb2YgdGhlIGltYWdlLlxuICAnaGVpZ2h0JyxcbiAgLy8gYXV0by1maXQgW3llc3xubyB0cnVlfGZhbHNlXTogQWRqdXN0cyB0aGUgaW1hZ2UgdG8gdGhlIGNvbnRlbnQgb3Igbm90LiBEZWZhdWx0OiB0cnVlLlxuICAnYXV0b0ZpdDogYXV0by1maXQnLFxuICAnZnVsbFNjcmVlbkJ1dHRvbjogZnVsbC1zY3JlZW4tYnV0dG9uJyxcbiAgLy8gYWNjZXB0LWZpbGUtdHlwZSBbc3RyaW5nXTogZmlsZSB0eXBlcyBhbGxvd2VkIG9uIHRoZSBmaWxlIGlucHV0LCBzZXBhcmF0ZWQgYnkgJzsnLiBEZWZhdWx0OiBpbWFnZS8qLlxuICAvLyBmaWxlX2V4dGVuc2lvbiwgaW1hZ2UvKiwgbWVkaWFfdHlwZS4gU2VlIGh0dHBzOi8vd3d3Lnczc2Nob29scy5jb20vdGFncy9hdHRfaW5wdXRfYWNjZXB0LmFzcFxuICAnYWNjZXB0RmlsZVR5cGU6IGFjY2VwdC1maWxlLXR5cGUnLFxuICAvLyBtYXgtZmlsZS1zaXplIFtudW1iZXJdOiBtYXhpbXVtIGZpbGUgc2l6ZSBhbGxvd2VkLCBpbiBieXRlcy4gRGVmYXVsdDogbm8gdmFsdWUuXG4gICdtYXhGaWxlU2l6ZTogbWF4LWZpbGUtc2l6ZSdcbl07XG5cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbTmdDbGFzcywgTmdUZW1wbGF0ZU91dGxldCwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgTWF0Rm9ybUZpZWxkTW9kdWxlLCBNYXRJbnB1dE1vZHVsZSwgTWF0QnV0dG9uTW9kdWxlLCBNYXRJY29uTW9kdWxlLCBNYXRUb29sdGlwTW9kdWxlLCBPVHJhbnNsYXRlUGlwZSwgT01hdEVycm9yRGlyZWN0aXZlLCBPRmlsZURyYWdBbmREcm9wRGlyZWN0aXZlXSxcbiAgc2VsZWN0b3I6ICdvLWltYWdlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL28taW1hZ2UuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9vLWltYWdlLmNvbXBvbmVudC5zY3NzJ10sXG4gIGlucHV0czogREVGQVVMVF9JTlBVVFNfT19JTUFHRSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgaG9zdDoge1xuICAgICdbY2xhc3Muby1pbWFnZV0nOiAndHJ1ZSdcbiAgfSxcbiAgcHJvdmlkZXJzOiBbT1NhZmVQaXBlLCB7IHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLCB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBPSW1hZ2VDb21wb25lbnQpLCBtdWx0aTogdHJ1ZSB9XVxufSlcbmV4cG9ydCBjbGFzcyBPSW1hZ2VDb21wb25lbnQgZXh0ZW5kcyBPRm9ybURhdGFDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgcHVibGljIGFjY2VwdEZpbGVUeXBlOiBzdHJpbmcgPSAnaW1hZ2UvKic7XG4gIEBOdW1iZXJJbnB1dENvbnZlcnRlcigpXG4gIHB1YmxpYyBtYXhGaWxlU2l6ZTogbnVtYmVyO1xuICBwdWJsaWMgZW1wdHlpbWFnZTogc3RyaW5nO1xuICBwdWJsaWMgbm90Zm91bmRpbWFnZTogc3RyaW5nO1xuICBwdWJsaWMgZW1wdHlpY29uOiBzdHJpbmc7XG4gIHB1YmxpYyBoZWlnaHQ6IHN0cmluZztcbiAgQEJvb2xlYW5JbnB1dENvbnZlcnRlcigpXG4gIHB1YmxpYyBhdXRvRml0OiBib29sZWFuID0gdHJ1ZTtcbiAgcHVibGljIGN1cnJlbnRGaWxlTmFtZTogc3RyaW5nID0gJyc7XG4gIEBCb29sZWFuSW5wdXRDb252ZXJ0ZXIoKVxuICBwcm90ZWN0ZWQgc2hvd0NvbnRyb2xzOiBib29sZWFuID0gdHJ1ZTtcbiAgc2V0IGZ1bGxTY3JlZW5CdXR0b24odmFsOiBib29sZWFuKSB7XG4gICAgdmFsID0gVXRpbC5wYXJzZUJvb2xlYW4oU3RyaW5nKHZhbCkpO1xuICAgIHRoaXMuX2Z1bGxTY3JlZW5CdXR0b24gPSB2YWw7XG4gIH1cbiAgZ2V0IGZ1bGxTY3JlZW5CdXR0b24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2Z1bGxTY3JlZW5CdXR0b247XG4gIH1cbiAgcHJvdGVjdGVkIF9mdWxsU2NyZWVuQnV0dG9uID0gZmFsc2U7XG5cbiAgQFZpZXdDaGlsZCgnaW5wdXQnKVxuICBwcm90ZWN0ZWQgZmlsZUlucHV0OiBFbGVtZW50UmVmO1xuICBwcm90ZWN0ZWQgX3VzZUVtcHR5SWNvbjogYm9vbGVhbiA9IHRydWU7XG4gIHByb3RlY3RlZCBfdXNlRW1wdHlJbWFnZTogYm9vbGVhbiA9IGZhbHNlO1xuICBwcm90ZWN0ZWQgb1NhZmUgPSBpbmplY3QoT1NhZmVQaXBlKTtcbiAgcHJvdGVjdGVkIGRpYWxvZzogTWF0RGlhbG9nO1xuICBwdWJsaWMgc3RhdGVDdHJsOiBGb3JtQ29udHJvbDtcbiAgcHVibGljIHNyYyA9ICcnO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGVsUmVmOiBFbGVtZW50UmVmLFxuICAgIGluamVjdG9yOiBJbmplY3RvclxuICApIHtcbiAgICBzdXBlcihlbFJlZiwgaW5qZWN0b3IpO1xuICAgIHRoaXMuX2RlZmF1bHRTUUxUeXBlS2V5ID0gJ0JBU0U2NCc7XG4gICAgdGhpcy5kaWFsb2cgPSB0aGlzLmluamVjdG9yLmdldChNYXREaWFsb2cpO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHN1cGVyLm5nT25Jbml0KCk7XG5cbiAgICBpZiAodGhpcy5lbXB0eWltYWdlICYmIHRoaXMuZW1wdHlpbWFnZS5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLl91c2VFbXB0eUljb24gPSBmYWxzZTtcbiAgICAgIHRoaXMuX3VzZUVtcHR5SW1hZ2UgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmVtcHR5aWNvbiA9PT0gdW5kZWZpbmVkICYmICF0aGlzLl91c2VFbXB0eUltYWdlKSB7XG4gICAgICB0aGlzLmVtcHR5aWNvbiA9ICdwaG90byc7XG4gICAgICB0aGlzLl91c2VFbXB0eUljb24gPSB0cnVlO1xuICAgICAgdGhpcy5fdXNlRW1wdHlJbWFnZSA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICB9XG5cbiAgcHVibGljIGVuc3VyZU9Gb3JtVmFsdWUodmFsOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAodmFsIGluc3RhbmNlb2YgT0Zvcm1WYWx1ZSkge1xuICAgICAgaWYgKHZhbC52YWx1ZSAmJiB2YWwudmFsdWUuYnl0ZXMpIHtcbiAgICAgICAgdmFsID0gdmFsLnZhbHVlLmJ5dGVzO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFsID0gdmFsLnZhbHVlO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodmFsKSB7XG4gICAgICBpZiAodmFsLmJ5dGVzKSB7XG4gICAgICAgIHZhbCA9IHZhbC5ieXRlcztcbiAgICAgIH0gZWxzZSBpZiAoVXRpbC5pc0Jhc2U2NCh2YWwpICYmIHZhbC5zdWJzdHJpbmcoMCwgNCkgPT09ICdkYXRhJykge1xuICAgICAgICAvLyBSZW1vdmluZyBcImRhdGE6aW1hZ2UvKjtiYXNlNjQsXCJcbiAgICAgICAgdmFsID0gdmFsLnN1YnN0cmluZyh2YWwuaW5kZXhPZignYmFzZTY0JykgKyA3KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdmFsID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgICB0aGlzLnZhbHVlID0gbmV3IE9Gb3JtVmFsdWUodmFsKTtcblxuICAgIHRoaXMuc3JjID0gdGhpcy5nZXRTcmNWYWx1ZSgpO1xuICB9XG5cbiAgcHVibGljIGlzRW1wdHkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0VmFsdWUoKT8ubGVuZ3RoID09PSAwO1xuICB9XG5cbiAgcHVibGljIGNyZWF0ZUZvcm1Db250cm9sKGNmZz86IHsgdmFsdWU6IGFueSwgZGlzYWJsZWQ6IGJvb2xlYW4gfSwgdmFsaWRhdG9ycz86IFZhbGlkYXRvckZuW10pOiBPRm9ybUNvbnRyb2wge1xuICAgIHRoaXMuX2ZDb250cm9sID0gc3VwZXIuY3JlYXRlRm9ybUNvbnRyb2woY2ZnLCB2YWxpZGF0b3JzKTtcbiAgICB0aGlzLnN0YXRlQ3RybCA9IG5ldyBGb3JtQ29udHJvbCh2b2lkIDAsIHRoaXMucmVzb2x2ZVZhbGlkYXRvcnMoKSk7XG4gICAgdGhpcy5fZkNvbnRyb2wuZkNvbnRyb2xDaGlsZHJlbiA9IFt0aGlzLnN0YXRlQ3RybF07XG4gICAgcmV0dXJuIHRoaXMuX2ZDb250cm9sO1xuICB9XG5cbiAgcHVibGljIGZpbGVDaGFuZ2UoaW5wdXQpOiB2b2lkIHtcbiAgICBpZiAoaW5wdXQuZmlsZXNbMF0pIHtcbiAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgICByZWFkZXIuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGV2ZW50ID0+IHtcbiAgICAgICAgbGV0IHJlc3VsdCA9IGV2ZW50LnRhcmdldFsncmVzdWx0J107XG4gICAgICAgIGlmIChyZXN1bHQgJiYgdHlwZW9mIChyZXN1bHQpID09PSAnc3RyaW5nJyAmJiBVdGlsLmlzQmFzZTY0KHJlc3VsdCkpIHtcbiAgICAgICAgICAvLyBSZW1vdmluZyBcImRhdGE6aW1hZ2UvKjtiYXNlNjQsXCJcbiAgICAgICAgICByZXN1bHQgPSByZXN1bHQuc3Vic3RyaW5nKHJlc3VsdC5pbmRleE9mKCdiYXNlNjQnKSArIDcpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2V0VmFsdWUocmVzdWx0KTtcbiAgICAgICAgaWYgKHRoaXMuX2ZDb250cm9sKSB7XG4gICAgICAgICAgdGhpcy5fZkNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xuICAgICAgICB9XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgfSwgZmFsc2UpO1xuICAgICAgaWYgKGlucHV0LmZpbGVzWzBdKSB7XG4gICAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGlucHV0LmZpbGVzWzBdKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5jdXJyZW50RmlsZU5hbWUgPSBpbnB1dC5maWxlc1swXS5uYW1lO1xuICAgICAgdGhpcy5zdGF0ZUN0cmwuc2V0VmFsdWUodGhpcy5jdXJyZW50RmlsZU5hbWUpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBub3RGb3VuZEltYWdlVXJsKGV2ZW50KTogYW55IHtcbiAgICBldmVudC50YXJnZXQuc3JjID0gVXRpbC5pc0RlZmluZWQodGhpcy5ub3Rmb3VuZGltYWdlKSA/IHRoaXMubm90Zm91bmRpbWFnZSA6ICcnO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRTcmNWYWx1ZSgpOiBhbnkge1xuXG4gICAgaWYgKHRoaXMudmFsdWUgJiYgdGhpcy52YWx1ZS52YWx1ZSkge1xuICAgICAgaWYgKHRoaXMudmFsdWUudmFsdWUgaW5zdGFuY2VvZiBPYmplY3QgJiYgdGhpcy52YWx1ZS52YWx1ZS5ieXRlcykge1xuICAgICAgICBsZXQgc3JjOiBzdHJpbmcgPSAnJztcbiAgICAgICAgaWYgKHRoaXMudmFsdWUudmFsdWUuYnl0ZXMuc3Vic3RyaW5nKDAsIDQpID09PSAnZGF0YScpIHtcbiAgICAgICAgICBzcmMgPSAnZGF0YTppbWFnZS8qO2Jhc2U2NCwnICsgdGhpcy52YWx1ZS52YWx1ZS5ieXRlcy5zdWJzdHJpbmcodGhpcy52YWx1ZS52YWx1ZS5ieXRlcy5pbmRleE9mKCdiYXNlNjQnKSArIDcpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNyYyA9ICdkYXRhOmltYWdlLyo7YmFzZTY0LCcgKyB0aGlzLnZhbHVlLnZhbHVlLmJ5dGVzO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLm9TYWZlLnRyYW5zZm9ybShzcmMsICd1cmwnKTtcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHRoaXMudmFsdWUudmFsdWUgPT09ICdzdHJpbmcnICYmIFV0aWwuaXNCYXNlNjQodGhpcy52YWx1ZS52YWx1ZSkpIHtcbiAgICAgICAgbGV0IHNyYzogc3RyaW5nID0gJyc7XG4gICAgICAgIGlmICh0aGlzLnZhbHVlLnZhbHVlLnN1YnN0cmluZygwLCA0KSA9PT0gJ2RhdGEnKSB7XG4gICAgICAgICAgc3JjID0gJ2RhdGE6aW1hZ2UvKjtiYXNlNjQsJyArIHRoaXMudmFsdWUudmFsdWUuc3Vic3RyaW5nKHRoaXMudmFsdWUudmFsdWUuaW5kZXhPZignYmFzZTY0JykgKyA3KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzcmMgPSAnZGF0YTppbWFnZS8qO2Jhc2U2NCwnICsgdGhpcy52YWx1ZS52YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5vU2FmZS50cmFuc2Zvcm0oc3JjLCAndXJsJyk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy52YWx1ZS52YWx1ZSkge1xuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZS52YWx1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLmVtcHR5aW1hZ2U7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0aGlzLmVtcHR5aW1hZ2UpIHtcbiAgICAgIHJldHVybiB0aGlzLmVtcHR5aW1hZ2U7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uQ2xpY2tCbG9ja2VyKGV2dDogRXZlbnQpOiB2b2lkIHtcbiAgICBldnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gIH1cblxuICBwdWJsaWMgb25DbGlja0NsZWFyVmFsdWUoZTogRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaXNSZWFkT25seSAmJiB0aGlzLmVuYWJsZWQpIHtcbiAgICAgIHN1cGVyLm9uQ2xpY2tDbGVhclZhbHVlKGUpO1xuICAgICAgdGhpcy5maWxlSW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xuICAgICAgdGhpcy5zdGF0ZUN0cmwucmVzZXQoKTtcbiAgICAgIHRoaXMuY3VycmVudEZpbGVOYW1lID0gJyc7XG4gICAgfVxuICAgIGlmICh0aGlzLl9mQ29udHJvbCkge1xuICAgICAgdGhpcy5fZkNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBoYXNDb250cm9scygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zaG93Q29udHJvbHM7XG4gIH1cblxuICBwdWJsaWMgdXNlRW1wdHlJY29uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl91c2VFbXB0eUljb24gJiYgdGhpcy5pc0VtcHR5KCk7XG4gIH1cblxuICBwdWJsaWMgdXNlRW1wdHlJbWFnZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fdXNlRW1wdHlJbWFnZSAmJiB0aGlzLmlzRW1wdHkoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRGb3JtR3JvdXAoKTogRm9ybUdyb3VwIHtcbiAgICBsZXQgZm9ybUdyb3VwOiBGb3JtR3JvdXAgPSBzdXBlci5nZXRGb3JtR3JvdXAoKTtcbiAgICBpZiAoIWZvcm1Hcm91cCkge1xuICAgICAgZm9ybUdyb3VwID0gbmV3IEZvcm1Hcm91cCh7fSk7XG4gICAgICBmb3JtR3JvdXAuYWRkQ29udHJvbCh0aGlzLmdldEF0dHJpYnV0ZSgpLCB0aGlzLmdldENvbnRyb2woKSk7XG4gICAgfVxuICAgIHJldHVybiBmb3JtR3JvdXA7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ3N0eWxlLmhlaWdodCcpXG4gIGdldCBob3N0SGVpZ2h0KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuaGVpZ2h0O1xuICB9XG5cbiAgcHVibGljIG9wZW5GdWxsU2NyZWVuKGU/OiBFdmVudCk6IHZvaWQge1xuICAgIHRoaXMuZGlhbG9nLm9wZW4oT0Z1bGxTY3JlZW5EaWFsb2dDb21wb25lbnQsIHtcbiAgICAgIHdpZHRoOiAnOTAlJyxcbiAgICAgIGhlaWdodDogJzkwJScsXG4gICAgICByb2xlOiAnZGlhbG9nJyxcbiAgICAgIGRpc2FibGVDbG9zZTogZmFsc2UsXG4gICAgICBwYW5lbENsYXNzOiAnby1pbWFnZS1mdWxsc2NyZWVuLWRpYWxvZy1jZGstb3ZlcmxheScsXG4gICAgICBkYXRhOiB0aGlzLmdldFNyY1ZhbHVlKClcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBvcGVuRmlsZVNlbGVjdG9yKGU/OiBFdmVudCk6IHZvaWQge1xuICAgIGlmIChVdGlsLmlzRGVmaW5lZCh0aGlzLmZpbGVJbnB1dCkpIHtcbiAgICAgIHRoaXMuZmlsZUlucHV0Lm5hdGl2ZUVsZW1lbnQuY2xpY2soKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaW50ZXJuYWxGb3JtQ29udHJvbCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmdldEF0dHJpYnV0ZSgpICsgJ192YWx1ZSc7XG4gIH1cblxuICBwdWJsaWMgcmVzb2x2ZVZhbGlkYXRvcnMoKTogVmFsaWRhdG9yRm5bXSB7XG4gICAgY29uc3QgdmFsaWRhdG9yczogVmFsaWRhdG9yRm5bXSA9IHN1cGVyLnJlc29sdmVWYWxpZGF0b3JzKCk7XG4gICAgaWYgKFV0aWwuaXNEZWZpbmVkKHRoaXMubWF4RmlsZVNpemUpKSB7XG4gICAgICB2YWxpZGF0b3JzLnB1c2godGhpcy5tYXhGaWxlU2l6ZVZhbGlkYXRvci5iaW5kKHRoaXMpKTtcbiAgICB9XG4gICAgcmV0dXJuIHZhbGlkYXRvcnM7XG4gIH1cblxuICBwdWJsaWMgc2V0VmFsdWUodmFsOiBhbnksIG9wdGlvbnM6IEZvcm1WYWx1ZU9wdGlvbnMgPSB7fSwgc2V0RGlydHk6IGJvb2xlYW4gPSBmYWxzZSk6IHZvaWQge1xuICAgIHN1cGVyLnNldFZhbHVlKHZhbCwgb3B0aW9ucywgc2V0RGlydHkpO1xuICAgIGlmICghVXRpbC5pc0RlZmluZWQodGhpcy5nZXRWYWx1ZSgpKSB8fCAhdGhpcy5jdXJyZW50RmlsZU5hbWUpIHtcbiAgICAgIHRoaXMuc3RhdGVDdHJsLnJlc2V0KCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG1heEZpbGVTaXplVmFsaWRhdG9yKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMge1xuICAgIGlmIChjb250cm9sLnZhbHVlICYmIGNvbnRyb2wudmFsdWUubGVuZ3RoID4gMCAmJiBVdGlsLmlzRGVmaW5lZCh0aGlzLm1heEZpbGVTaXplKSkge1xuICAgICAgaWYgKCFVdGlsLmlzRGVmaW5lZCh0aGlzLmZpbGVJbnB1dC5uYXRpdmVFbGVtZW50LmZpbGVzKSkge1xuICAgICAgICByZXR1cm4ge307XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5maWxlSW5wdXQubmF0aXZlRWxlbWVudC5maWxlcyAmJiAhQXJyYXkuZnJvbTxGaWxlPih0aGlzLmZpbGVJbnB1dC5uYXRpdmVFbGVtZW50LmZpbGVzKS5ldmVyeShmaWxlID0+IGZpbGUuc2l6ZSA8IHRoaXMubWF4RmlsZVNpemUpKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZmlsZVNpemU6IHtcbiAgICAgICAgICAgIG1heEZpbGVTaXplOiB0aGlzLm1heEZpbGVTaXplXG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4ge307XG4gIH1cblxuICAvKiBUaGlzIG1ldGhvZCBiZSB0cmlnZ2VyZWQgd2hlbiBhIGltYWdlIGlzIGRyb3BwZWQgb24gb3VyIGhvc3QgRE9NIGVsZW1lbnQgLiovXG4gIG9uRmlsZURyb3BwZWQocEZpbGVMaXN0OiBGaWxlW10pIHtcbiAgICBjb25zdCBmaWxlcyA9IE9iamVjdC5rZXlzKHBGaWxlTGlzdCkubWFwKGtleSA9PiBwRmlsZUxpc3Rba2V5XSk7XG4gICAgY29uc3QgZmlsZUxpc3QgPSB0aGlzLmNyZWF0ZUZpbGVMaXN0SXRlbXMoZmlsZXMpO1xuXG5cbiAgICBjb25zdCB2YWxpZCA9IHRoaXMuYWNjZXB0RmlsZVR5cGUucmVwbGFjZSgvXFxzL2csICcnKS5zcGxpdCgnLCcpLmZpbHRlcihhY2NlcHQgPT4gbmV3IFJlZ0V4cChhY2NlcHQucmVwbGFjZSgvXFwqL2csICcuXFwqJykucmVwbGFjZSgvXFwsL2csICd8JykpLnRlc3QoZmlsZUxpc3RbMF0udHlwZSkpLmxlbmd0aCA+IDBcblxuICAgIGlmICh2YWxpZCkge1xuICAgICAgdGhpcy5maWxlSW5wdXQubmF0aXZlRWxlbWVudC5maWxlcyA9IGZpbGVMaXN0O1xuICAgICAgdGhpcy5maWxlQ2hhbmdlKHRoaXMuZmlsZUlucHV0Lm5hdGl2ZUVsZW1lbnQpO1xuICAgIH1cbiAgfVxuXG4gIGNyZWF0ZUZpbGVMaXN0SXRlbXMoZmlsZXMpIHtcbiAgICBjb25zdCBiID0gbmV3IENsaXBib2FyZEV2ZW50KFwiXCIpLmNsaXBib2FyZERhdGEgfHwgbmV3IERhdGFUcmFuc2ZlcigpXG4gICAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IGZpbGVzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSBiLml0ZW1zLmFkZChmaWxlc1tpXSlcbiAgICByZXR1cm4gYi5maWxlc1xuICB9XG5cbiAgZ2V0RmlsZU5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5jdXJyZW50RmlsZU5hbWU7XG4gIH1cblxuICBnZXRJbWFnZUZpbGUoKTogRmlsZSB7XG4gICAgaWYgKHRoaXMuZmlsZUlucHV0ICYmIHRoaXMuZmlsZUlucHV0Lm5hdGl2ZUVsZW1lbnQuZmlsZXMubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIHRoaXMuZmlsZUlucHV0Lm5hdGl2ZUVsZW1lbnQuZmlsZXNbMF07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB2b2lkICgwKTtcbiAgICB9XG4gIH1cblxuICBoYXNFcnJvckluRHJhZ0FuZERyb3AoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0Rm9ybUNvbnRyb2woKSAmJiB0aGlzLmdldEZvcm1Db250cm9sKCkudG91Y2hlZCAmJiB0aGlzLmdldEZvcm1Db250cm9sKCkuaW52YWxpZCAmJiAhdGhpcy5oYXNDb250cm9scygpICYmIHRoaXMuZW5hYmxlZCAmJiAhdGhpcy5pc1JlYWRPbmx5O1xuXG4gIH1cblxufVxuIiwiPGRpdiBbZm9ybUdyb3VwXT1cImdldEZvcm1Hcm91cCgpXCIgW2NsYXNzLm8taW1hZ2UtYXV0by1maXRdPVwiYXV0b0ZpdFwiIGNsYXNzPVwiby1pbWFnZS1jb250ZW50IG8tZmxleC1jb2x1bW4gby1mbGV4LWZpbGxcIj5cblxuICA8aW5wdXQgI2lucHV0IHR5cGU9XCJmaWxlXCIgW2Rpc2FibGVkXT1cIiFlbmFibGVkXCIgW2FjY2VwdF09XCJhY2NlcHRGaWxlVHlwZSA/IGFjY2VwdEZpbGVUeXBlLnJlcGxhY2UoJzsnLCcsJykgOiAnaW1hZ2UvKidcIiByZWFkb25seVxuICAgIChjaGFuZ2UpPVwiZmlsZUNoYW5nZShpbnB1dClcIiBjbGFzcz1cIm8taW1hZ2UtZm9ybS1maWVsZC1oaWRkZW5cIiAvPlxuXG4gICAgQGlmIChoYXNDb250cm9scygpKSB7XG4gICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJvLWltYWdlLWZvcm0tZmllbGRcIiBbbWF0VG9vbHRpcF09XCJ0b29sdGlwXCIgW21hdFRvb2x0aXBDbGFzc109XCJ0b29sdGlwQ2xhc3NcIlxuICAgICAgICBbbWF0VG9vbHRpcFBvc2l0aW9uXT1cInRvb2x0aXBQb3NpdGlvblwiIFttYXRUb29sdGlwU2hvd0RlbGF5XT1cInRvb2x0aXBTaG93RGVsYXlcIiBbbWF0VG9vbHRpcEhpZGVEZWxheV09XCJ0b29sdGlwSGlkZURlbGF5XCJcbiAgICAgICAgW3N1YnNjcmlwdFNpemluZ109XCJzdWJzY3JpcHRTaXppbmdcIj5cbiAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgW2lkXT1cImdldEF0dHJpYnV0ZSgpXCIgW2Zvcm1Db250cm9sTmFtZV09XCJnZXRBdHRyaWJ1dGUoKVwiIFtwbGFjZWhvbGRlcl09XCJvbGFiZWwgfCBvVHJhbnNsYXRlXCIgW3JlcXVpcmVkXT1cImlzUmVxdWlyZWRcIiByZWFkb25seVxuICAgICAgICAgIChjbGljayk9XCJpbnB1dC5jbGljaygpXCIgKGNoYW5nZSk9XCJvbkNoYW5nZUV2ZW50KCRldmVudClcIiBjbGFzcz1cIm8taW1hZ2UtZm9ybS1maWVsZC1pbnB1dFwiPlxuICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCByZWFkb25seSAoY2xpY2spPVwiaW5wdXQuY2xpY2soKVwiIFtwbGFjZWhvbGRlcl09XCJvbGFiZWwgfCBvVHJhbnNsYXRlXCIgW3JlcXVpcmVkXT1cImlzUmVxdWlyZWRcIiBbZm9ybUNvbnRyb2xdPVwic3RhdGVDdHJsXCIgLz5cbiAgICAgICAgICBAaWYgKGZ1bGxTY3JlZW5CdXR0b24pIHtcbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIFtkaXNhYmxlZF09XCIhZW5hYmxlZFwiIG1hdFN1ZmZpeCBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cIm9wZW5GdWxsU2NyZWVuKCRldmVudClcIj5cbiAgICAgICAgICAgICAgPG1hdC1pY29uPmZ1bGxzY3JlZW48L21hdC1pY29uPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgfVxuICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIFtkaXNhYmxlZF09XCIhZW5hYmxlZFwiIG1hdFN1ZmZpeCBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cImlucHV0LmNsaWNrKClcIj5cbiAgICAgICAgICAgIDxtYXQtaWNvbj5mb2xkZXI8L21hdC1pY29uPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIFtkaXNhYmxlZF09XCIhZW5hYmxlZFwiIG1hdFN1ZmZpeCBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cIm9uQ2xpY2tDbGVhclZhbHVlKCRldmVudClcIj5cbiAgICAgICAgICAgIDxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImVycm9yc1RlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICB9XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJvLWltYWdlLWRpc3BsYXktY29udGFpbmVyIG8tZmxleC1jb2x1bW4gby1sYXlvdXQtYWxpZ24tY2VudGVyLWNlbnRlciBvLWdhcC0xNVwiXG4gICAgICAgIFtuZ0NsYXNzXT1cInsnby1pbWFnZS1kcmFnLWFuZC1kcm9wJzogdGhpcy5nZXRWYWx1ZSgpPy5sZW5ndGggPT09IDAgLCAnby1pbWFnZS1kcmFnLWFuZC1kcm9wLXJlcXVpcmVkJzogaGFzRXJyb3JJbkRyYWdBbmREcm9wKCkgfVwiIG9GaWxlRHJhZ0FuZERyb3BcbiAgICAgICAgKG9uRmlsZURyb3BwZWQpPVwib25GaWxlRHJvcHBlZCgkZXZlbnQpXCIgW21hdFRvb2x0aXBdPVwidG9vbHRpcFwiIFttYXRUb29sdGlwQ2xhc3NdPVwidG9vbHRpcENsYXNzXCIgW21hdFRvb2x0aXBQb3NpdGlvbl09XCJ0b29sdGlwUG9zaXRpb25cIlxuICAgICAgICBbbWF0VG9vbHRpcFNob3dEZWxheV09XCJ0b29sdGlwU2hvd0RlbGF5XCIgW21hdFRvb2x0aXBIaWRlRGVsYXldPVwidG9vbHRpcEhpZGVEZWxheVwiIFttYXRUb29sdGlwRGlzYWJsZWRdPVwiaGFzQ29udHJvbHMoKVwiPlxuXG4gICAgICAgIEBpZiAodGhpcy5nZXRWYWx1ZSgpPy5sZW5ndGggIT09IDAgJiYgIWhhc0NvbnRyb2xzKCkgJiYgZW5hYmxlZCAmJiAhaXNSZWFkT25seSkge1xuICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJvbkNsaWNrQ2xlYXJWYWx1ZSgkZXZlbnQpXCJcbiAgICAgICAgICAgIGNsYXNzPVwiby1pbWFnZS1idXR0b24tcmVtb3ZlXCI+XG4gICAgICAgICAgICA8bWF0LWljb24+Y2xvc2U8L21hdC1pY29uPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICB9XG5cbiAgICAgICAgQGlmICh0aGlzLmdldFZhbHVlKCk/Lmxlbmd0aCAhPT0gMCkge1xuICAgICAgICAgIDxpbWcgW3NyY109XCJzcmNcIiBhbHQ9XCJcIiAoY2xpY2spPVwib3BlbkZpbGVTZWxlY3RvcigpXCIgKGVycm9yKT1cIm5vdEZvdW5kSW1hZ2VVcmwoJGV2ZW50KVwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7J28taW1hZ2UtY3Vyc29yJzogIWlzUmVhZE9ubHl9XCIgIChrZXlEb3duKT1cIm9wZW5GaWxlU2VsZWN0b3IoKVwiLz5cbiAgICAgICAgfVxuXG4gICAgICAgIEBpZiAodXNlRW1wdHlJY29uKCkpIHtcbiAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJlbXB0eS1pY29uXCIgW2NsYXNzLm1hdC1kaXNhYmxlZF09XCIhZW5hYmxlZFwiIGFyaWEtbGFiZWw9XCJlbXB0eSBpbWFnZVwiPlxuICAgICAgICAgICAge3sgZW1wdHlpY29uIH19XG4gICAgICAgICAgPC9tYXQtaWNvbj5cbiAgICAgICAgfVxuXG4gICAgICAgIEBpZiAodXNlRW1wdHlJbWFnZSgpKSB7XG4gICAgICAgICAgPGltZyBbc3JjXT1cInNyY1wiIGFsdD1cImVtcHR5IGltYWdlXCIgLz5cbiAgICAgICAgfVxuXG4gICAgICAgIEBpZiAodGhpcy5nZXRWYWx1ZSgpPy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdC1zdWJ0aXRsZS0yXCI+e3sgJ09JTUFHRS5URVhULkRST1AmRFJBRycgfCBvVHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICB9XG5cbiAgICAgICAgQGlmICghaGFzQ29udHJvbHMoKSAmJiB0aGlzLmdldFZhbHVlKCk/Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwib3BlbkZpbGVTZWxlY3RvcigpXCIgKCk+XG4gICAgICAgICAgICB7eyAnT0lNQUdFLkJVVFRPTi5CUk9XU0VGSUxFJyB8IG9UcmFuc2xhdGUgfX1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgfVxuXG4gICAgICAgIEBpZiAoIWhhc0NvbnRyb2xzKCkgJiYgZW5hYmxlZCAmJiAhaXNSZWFkT25seSkge1xuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJlcnJvcnNUZW1wbGF0ZVwiPiA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgICBAaWYgKGlzUmVhZE9ubHkpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cInJlYWQtb25seS1ibG9ja2VyIG8tZmxleC1maWxsXCIgKGNsaWNrKT1cIm9uQ2xpY2tCbG9ja2VyKCRldmVudClcIj48L2Rpdj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cblxuICAgIDxuZy10ZW1wbGF0ZSAjZXJyb3JzVGVtcGxhdGU+XG4gICAgICA8bWF0LWVycm9yICpvTWF0RXJyb3I9XCJoYXNFcnJvcigncmVxdWlyZWQnKVwiPlxuICAgICAgICB7eyAnRk9STV9WQUxJREFUSU9OLlJFUVVJUkVEJyB8IG9UcmFuc2xhdGUgfX1cbiAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgPG1hdC1lcnJvciAqb01hdEVycm9yPVwiaGFzRXJyb3IoJ2ZpbGVTaXplJylcIj5cbiAgICAgICAge3sgJ0ZPUk1fVkFMSURBVElPTi5GSUxFX01BWFNJWkUnIHwgb1RyYW5zbGF0ZSB9fToge3sgZ2V0RXJyb3JWYWx1ZSgnZmlsZVNpemUnLCAnbWF4RmlsZVNpemUnKSB9fSBieXRlc1xuICAgICAgPC9tYXQtZXJyb3I+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|