ngx-histaff-alpha 2.7.9 → 2.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -161,7 +161,7 @@ export class ItemComponent {
161
161
  this.subscriptions.map(x => x.unsubscribe());
162
162
  }
163
163
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: ItemComponent, deps: [{ token: i1.Router }, { token: i2.NavigatorService }, { token: i3.MultiLanguageService }, { token: i4.LayoutService }, { token: i5.MenuService }], target: i0.ɵɵFactoryTarget.Component }); }
164
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.3", type: ItemComponent, isStandalone: true, selector: "app-item", inputs: { item: "item", level: "level" }, viewQueries: [{ propertyName: "me", first: true, predicate: ["me"], descendants: true }, { propertyName: "children", first: true, predicate: ["children"], descendants: true }, { propertyName: "link", first: true, predicate: ["link"], descendants: true }, { propertyName: "subArrow", first: true, predicate: ["subArrow"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<li #me [id]=\"'main-menu-' + item.id\" class=\"parent\" [attr.data-level]=\"level\" [class.reduced]=\"leftbarReduced\" \r\n [class.active]=\"!wideMode && active\"\r\n [class.expanded]=\"item.tree$Expanded\" \r\n [class.highlighted]=\"item.tree$Highlighted\" \r\n [class.li-thin-mode]=\"!wideMode\" \r\n [class.menu-item]=\"!wideMode\">\r\n <div class=\"menu-item-wrapper\" [attr.data-level]=\"level\" (click)=\"onClick($event, item)\" [class.module-thin-mode]=\"!wideMode && level===1\" [class.thin-branch]=\"!wideMode && level > 1\">\r\n\r\n @if (wideMode) {\r\n @if (!!!leftbarReduced) {\r\n @if (!!hasChildren) {\r\n @if (!item.tree$Selected) {\r\n <i [attr.data-level]=\"level\" class=\"custom-icon-parent-right\"></i>\r\n } @else {\r\n <i [attr.data-level]=\"level\" class=\"custom-icon-parent-down\"></i>\r\n }\r\n } @else {\r\n @if (item.tree$Selected && item.code !== 'MENU.DASHBOARD' && item.code !== 'MENU.HOME') {\r\n <i [attr.data-level]=\"level\" class=\"custom-icon-child-right\"></i>\r\n }\r\n }\r\n }\r\n }\r\n\r\n <i [attr.data-level]=\"level\" [class]=\"item.iconClass + ' module-icon'\" [appTooltip]=\"wideMode ? caption : undefined\"\r\n (click)=\"onModuleIconClick($event, item);false\" *ngIf=\"!!item.iconClass\" [ngStyle]=\"{\r\n left: wideMode ? '20px' : 'unset'\r\n }\"></i>\r\n\r\n @if (!wideMode || (!leftbarReduced && hasChildren)) {\r\n <a #link [attr.data-level]=\"level\" class=\"has-submenu\" [appTooltip]=\"level > 1 ? caption : undefined\" [class.thin-mode]=\"!wideMode\">\r\n <ng-container (click)=\"subArrowClicked($event, item);false\"> <!--false is important here-->\r\n <span #subArrow *ngIf=\"(!!item.pictureBase64 || !!item.pictureUri)\"\r\n [class]=\"'img-span plus level' + level\">\r\n <img [src]=\"item.pictureBase64 || item.pictureUri\" *ngIf=\"!!item.pictureBase64\">\r\n </span>\r\n <span #subArrow *ngIf=\"!!!item.pictureBase64 && !!!item.pictureUri\"\r\n [class]=\"'plus level' + level\"></span>\r\n </ng-container>\r\n\r\n <img *ngIf=\"(!!item.pictureBase64 || !!item.pictureUri)\" [src]=\"item.pictureBase64 || item.pictureUri\">\r\n\r\n {{ caption }}\r\n\r\n </a>\r\n } @else {\r\n <a [attr.data-level]=\"level\" [routerLink]=\"item.url\" (click)=\"onClick($event, item)\" [class.thin-mode]=\"!wideMode\"\r\n [appTooltip]=\"wideMode && caption\">\r\n {{ caption }}\r\n </a>\r\n }\r\n\r\n </div>\r\n\r\n @if (!!wideMode && !!hasChildren && !!item.tree$Children!.length && !!!leftbarReduced) {\r\n <ul #children [class.expanded]=\"!wideMode || item.tree$Expanded\"\r\n [class.ul-thin-mode]=\"!wideMode\" [ngStyle]=\"{\r\n padding: 0,\r\n width: !!wideMode ? (layoutService.leftBarCurrentWidth$.value - layoutService.basicSpacing - layoutService.scrollBarWidth + 5 + 'px') : ( layoutService.leftBarWideWidth$.value + 'px' ),\r\n }\" [class.submenu]=\"!wideMode\">\r\n <div>\r\n @for (child of item.tree$Children; track $index) {\r\n <app-item [item]=\"child\" [level]=\"level+1\" (clicked)=\"onClick($event, child)\"></app-item>\r\n }\r\n </div>\r\n </ul>\r\n }\r\n\r\n</li>", styles: [".navigator-container{--active-item-border-color: white;--line-height: 16px;--level-gap: 10px;--thin-mode-padding: 8px;--thin-mode-width: 66px;--wide-mode-width: 280px;--left-bar-current-width: 280px}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.navigator-container .d-none{display:none}.navigator-container .module-thin-mode{display:flex!important;align-items:center!important;justify-content:center!important;padding:0!important;margin-bottom:5px!important;height:50px!important}.navigator-container .li-thin-mode[data-level=\"1\"]{height:50px!important;margin:0!important}.navigator-container .li-thin-mode .thin-branch a{padding-left:15px;padding-right:15px;overflow:hidden;max-width:100%;text-overflow:ellipsis}.navigator-container .li-thin-mode .thin-branch:hover{background:#e1e3e5!important;border-radius:5px!important}.navigator-container .li-thin-mode:hover[data-level=\"1\"]>ul.ul-thin-mode{transform:translate(calc(var(--thin-mode-width)))}.navigator-container .li-thin-mode:hover:not([data-level=\"1\"])>ul.ul-thin-mode{transform:translate(calc(var(--wide-mode-width) - var(--size-layout-block-cell-spacing)))}.navigator-container .li-thin-mode.active .module-thin-mode{background:#e1e3e5!important;border-radius:5px!important;width:50px!important;transform:translate(var(--thin-mode-padding))}.navigator-container .li-thin-mode.active>ul.ul-thin-mode{background-color:#fff;opacity:1;height:unset;overflow-y:auto;box-shadow:.4rem 0 2rem #0000002e}.navigator-container .li-thin-mode.active>ul.ul-thin-mode>div>app-item>li>div>a{display:block!important}.navigator-container .li-thin-mode.active[data-level=\"1\"]>ul.ul-thin-mode{display:block;transform:translate(calc(var(--thin-mode-width)))}.navigator-container .li-thin-mode.active:not([data-level=\"1\"])>ul.ul-thin-mode{display:block;transform:translate(calc(var(--wide-mode-width) - var(--size-layout-block-cell-spacing)))}.navigator-container ul.ul-thin-mode{display:none}.navigator-container .parent{--children-height: 0px;box-sizing:border-box;width:100%;transition:width 1s ease-out}.navigator-container .parent ul{animation:fadeIn .25s linear}.navigator-container .parent i[class^=custom-icon-parent-],.navigator-container .parent i[class^=custom-icon-child-]{position:absolute}.navigator-container .parent i[class^=custom-icon-parent-][data-level=\"1\"],.navigator-container .parent i[class^=custom-icon-child-][data-level=\"1\"]{left:var(--size-left-bar-the-first-icon-left)!important}.navigator-container .parent i[class^=custom-icon-parent-][data-level=\"2\"],.navigator-container .parent i[class^=custom-icon-child-][data-level=\"2\"]{left:46px!important}.navigator-container .parent i[class^=custom-icon-child-][data-level=\"3\"]{left:calc(var(--size-header-logo-left) - 2 * var(--level-gap))!important}.navigator-container .parent i.module-icon{position:absolute;display:inline-block;font-size:var(--size-left-bar-icon-font-size)!important;width:var(--size-left-bar-icon-font-size)!important;height:var(--size-left-bar-icon-font-size)!important}.navigator-container .parent .menu-item-wrapper{position:relative!important;margin-left:0!important;padding-left:0;border:none!important;cursor:pointer}.navigator-container .parent .menu-item-wrapper[data-level=\"1\"].module-thin-mode:hover{background-color:#e1e3e5;width:50px;border-radius:5px;transform:translate(8px);color:#000}.navigator-container .parent .menu-item-wrapper:not([data-level=\"1\"]).module-thin-mode:hover{background-color:#e1e3e5;color:#000;padding:var(--size-layout-block-cell-spacing)}.navigator-container .parent a.thin-mode{left:0!important;display:none;padding-left:15px;padding-right:15px;overflow:hidden;text-overflow:ellipsis}.navigator-container .parent a{position:absolute!important;margin-left:0!important;padding-left:0;border:none!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;user-select:none;-webkit-user-select:none}.navigator-container .parent a[data-level=\"1\"]:not(.thin-mode){left:var(--size-header-logo-left);max-width:calc(var(--left-bar-current-width) - var(--size-header-logo-left) - var(--size-scrollbar-width) - var(--size-layout-block-cell-spacing) * 2)}.navigator-container .parent a[data-level=\"2\"]:not(.thin-mode){left:calc(var(--size-header-logo-left) + var(--level-gap));max-width:calc(var(--left-bar-current-width) - var(--size-header-logo-left) - var(--size-scrollbar-width) - var(--size-layout-block-cell-spacing) * 2 - var(--level-gap))}.navigator-container .parent a[data-level=\"3\"]:not(.thin-mode){left:calc(var(--size-header-logo-left) - var(--level-gap) + 3px);max-width:calc(var(--left-bar-current-width) - var(--size-header-logo-left) - var(--size-scrollbar-width) - var(--size-layout-block-cell-spacing) * 2 - var(--level-gap) * 2)}.navigator-container .parent[data-level=\"1\"]{margin:10px 0}.navigator-container .parent[data-level=\"1\"] a{margin-left:0;font-size:13px}.navigator-container .parent[data-level=\"2\"]:not(.ul-thin-mode) a{margin-left:10px;font-size:13px}.navigator-container .parent[data-level=\"3\"]:not(.ul-thin-mode) a{margin-left:20px;font-size:13px}.navigator-container .parent[data-level=\"2\"]>.menu-item-wrapper{margin-left:20px}.navigator-container .parent .menu-item-wrapper{height:35px;padding-left:0!important;display:flex;align-items:center;margin:0}.navigator-container .parent .menu-item-wrapper>i{display:inline-block;font-size:13px;color:#a9a9a9;cursor:pointer}.navigator-container .parent .menu-item-wrapper>i{color:#000}.navigator-container .parent li:not(.li-thin-mode):hover>.menu-item-wrapper:before{content:\"\";display:inline-block;position:absolute;left:0;height:33px;width:calc(var(--size-left-bar-full-width) - 20px);background-color:#eaf1fb;border-top-right-radius:50px;border-bottom-right-radius:50px}.navigator-container .parent>ul:not(.ul-thin-mode){position:relative;overflow:hidden;display:none;opacity:0;transition:opacity .5s ease-out}.navigator-container .parent>ul.ul-thin-mode{overflow-x:hidden;display:none;margin-left:0!important;opacity:1;transition:opacity .5s ease-out}.navigator-container .parent>ul.ul-thin-mode{overflow-y:auto}.navigator-container .parent.active[data-level=\"2\"]>.menu-item-wrapper>a{transition:.5s ease-out}.navigator-container .parent.highlighted>.menu-item-wrapper>a{color:var(--color-core-org-tree-highlighted)!important;font-weight:700!important}.navigator-container .parent.expanded>ul:not(.submenu){display:block;opacity:1;transition:opacity .5s ease-out}.navigator-container .parent.expanded[data-level=\"2\"]>ul{margin-left:25px}.navigator-container .parent:not(.li-thin-mode) a{margin-left:0}.navigator-container .parent.reduced .menu-item-wrapper{padding:0}.navigator-container .expanded[data-level=\"1\"]:not(.li-thin-mode)>.menu-item-wrapper{background-color:#fff;border-top-right-radius:50px;border-bottom-right-radius:50px;margin-right:2px;display:flex;justify-content:flex-start}.navigator-container .expanded[data-level=\"1\"]:not(.li-thin-mode)>.menu-item-wrapper:hover{background-color:#fff}.navigator-container .expanded>ul:not(.submenu){overflow:visible!important}.navigator-container .expanded.reduced>.menu-item-wrapper{justify-content:flex-start!important;border-top-left-radius:50px;border-bottom-left-radius:50px;width:37px}.navigator-container .parent.reduced>.menu-item-wrapper{justify-content:flex-start!important;border-radius:20px;width:37px}.navigator-container .custom-icon-parent-down{background-image:url('data:image/svg+xml,<svg width=\"8\" height=\"4\" viewBox=\"0 0 8 4\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M4 3.88867L0.535899 0.555338L7.4641 0.555339L4 3.88867Z\" fill=\"%23000000\"/></svg>');display:flex;align-items:center;justify-content:center;width:8px;height:5px;background-size:contain;background-repeat:no-repeat}.navigator-container .custom-icon-parent-right{background-image:url('data:image/svg+xml,<svg width=\"5\" height=\"5\" viewBox=\"0 0 4 8\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M4 4L0.666667 7.4641L0.666667 0.535898L4 4Z\" fill=\"%23000000\"/></svg>');display:block;position:absolute;width:8px;height:8px;align-items:center;justify-content:center;background-size:contain;background-repeat:no-repeat;float:left}.navigator-container .custom-icon-child-right{position:absolute;background-image:url('data:image/svg+xml,<svg width=\"9\" height=\"12\" viewBox=\"0 0 9 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M8.08811 5.23421C8.56399 5.63384 8.56399 6.36616 8.08811 6.76579L2.3931 11.5484C1.74247 12.0947 0.75 11.6322 0.75 10.7826L0.750001 1.21742C0.750001 0.367809 1.74247 -0.0947444 2.39309 0.451638L8.08811 5.23421Z\" fill=\"%23F37540\"/></svg>');display:flex;width:8px;height:8px;align-items:center;justify-content:center;background-size:contain;background-repeat:no-repeat}.navigator-container .custom-organization-icon{background-image:url('data:image/svg+xml,<svg width=\"20\" height=\"19\" viewBox=\"0 0 20 19\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M4.98901 9.6555H15.0112V11.5377H15.989V8.67772H10.489V6.72217H9.51123V8.67772H4.01123V11.5377H4.98901V9.6555Z\" fill=\"%23000000\"/><path d=\"M7.5555 12.2222H1.44439C1.12024 12.2222 0.80936 12.3509 0.580149 12.5801C0.350937 12.8094 0.222168 13.1202 0.222168 13.4444V17.1111C0.222168 17.4352 0.350937 17.7461 0.580149 17.9753C0.80936 18.2045 1.12024 18.3333 1.44439 18.3333H7.5555C7.87966 18.3333 8.19053 18.2045 8.41974 17.9753C8.64895 17.7461 8.77772 17.4352 8.77772 17.1111V13.4444C8.77772 13.1202 8.64895 12.8094 8.41974 12.5801C8.19053 12.3509 7.87966 12.2222 7.5555 12.2222ZM1.44439 17.1111V13.4444H7.5555V17.1111H1.44439Z\" fill=\"%23000000\"/><path d=\"M18.5555 12.2222H12.4444C12.1202 12.2222 11.8094 12.3509 11.5801 12.5801C11.3509 12.8094 11.2222 13.1202 11.2222 13.4444V17.1111C11.2222 17.4352 11.3509 17.7461 11.5801 17.9753C11.8094 18.2045 12.1202 18.3333 12.4444 18.3333H18.5555C18.8797 18.3333 19.1905 18.2045 19.4197 17.9753C19.649 17.7461 19.7777 17.4352 19.7777 17.1111V13.4444C19.7777 13.1202 19.649 12.8094 19.4197 12.5801C19.1905 12.3509 18.8797 12.2222 18.5555 12.2222ZM12.4444 17.1111V13.4444H18.5555V17.1111H12.4444Z\" fill=\"%23000000\"/><path d=\"M6.94439 6.11111H13.0555C13.3797 6.11111 13.6905 5.98234 13.9197 5.75313C14.149 5.52392 14.2777 5.21304 14.2777 4.88889V1.22222C14.2777 0.898069 14.149 0.587192 13.9197 0.35798C13.6905 0.128769 13.3797 0 13.0555 0H6.94439C6.62024 0 6.30936 0.128769 6.08015 0.35798C5.85094 0.587192 5.72217 0.898069 5.72217 1.22222V4.88889C5.72217 5.21304 5.85094 5.52392 6.08015 5.75313C6.30936 5.98234 6.62024 6.11111 6.94439 6.11111ZM6.94439 1.22222H13.0555V4.88889H6.94439V1.22222Z\" fill=\"%23000000\"/></svg>');display:flex;align-items:center;justify-content:center;width:15px;height:15px;background-size:contain;background-repeat:no-repeat}.navigator-container .custom-profile-icon{background-image:url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><rect x=\"0.75\" y=\"0.75\" width=\"16.5\" height=\"16.5\" rx=\"4.25\" stroke=\"%23000000\" stroke-width=\"1.5\"/><path d=\"M14.5164 16.5755V15.2137C14.5164 14.4914 14.2258 13.7987 13.7086 13.2879C13.1913 12.7772 12.4898 12.4902 11.7583 12.4902H6.2422C5.51071 12.4902 4.80919 12.7772 4.29195 13.2879C3.77471 13.7987 3.48413 14.4914 3.48413 15.2137V16.5755\" stroke=\"%23000000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M9.00011 9.57227C10.4432 9.57227 11.613 8.39647 11.613 6.94605C11.613 5.49562 10.4432 4.31982 9.00011 4.31982C7.55704 4.31982 6.38721 5.49562 6.38721 6.94605C6.38721 8.39647 7.55704 9.57227 9.00011 9.57227Z\" stroke=\"%23000000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>');display:flex;align-items:center;justify-content:center;width:15px;height:15px;background-size:contain;background-repeat:no-repeat}.navigator-container .custom-insurence-icon{background-image:url('data:image/svg+xml,<svg width=\"20\" height=\"18\" viewBox=\"0 0 20 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M2.8 1H17.2C17.6774 1 18.1352 1.1873 18.4728 1.5207C18.8104 1.8541 19 2.30628 19 2.77778V8.11111C19 10.4686 18.0518 12.7295 16.364 14.3965C14.6761 16.0635 12.3869 17 10 17C8.8181 17 7.64778 16.7701 6.55585 16.3234C5.46392 15.8767 4.47177 15.2219 3.63604 14.3965C1.94821 12.7295 1 10.4686 1 8.11111V2.77778C1 2.30628 1.18964 1.8541 1.52721 1.5207C1.86477 1.1873 2.32261 1 2.8 1V1Z\" stroke=\"%23000000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M7 8.5L9.5 11.5L15 6\" stroke=\"%23000000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>');display:flex;align-items:center;justify-content:center;width:15px;height:15px;background-size:contain;background-repeat:no-repeat}.navigator-container .custom-education-icon{background-image:url('data:image/svg+xml,<svg width=\"21\" height=\"19\" viewBox=\"0 0 21 19\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M1 1H6.66667C7.6686 1 8.62949 1.39801 9.33796 2.10649C10.0464 2.81496 10.4444 3.77585 10.4444 4.77778V18C10.4444 17.2486 10.1459 16.5279 9.61458 15.9965C9.08323 15.4652 8.36256 15.1667 7.61111 15.1667H1V1Z\" stroke=\"%23000000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M19.8889 1H14.2222C13.2203 1 12.2594 1.39801 11.5509 2.10649C10.8425 2.81496 10.4445 3.77585 10.4445 4.77778V18C10.4445 17.2486 10.743 16.5279 11.2743 15.9965C11.8057 15.4652 12.5263 15.1667 13.2778 15.1667H19.8889V1Z\" stroke=\"%23000000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>');display:flex;align-items:center;justify-content:center;width:15px;height:15px;background-size:contain;background-repeat:no-repeat}.navigator-container .parent.expanded.reduced>.menu-item-wrapper{background-color:#fff;left:10px!important}.navigator-container .parent.expanded.reduced>.menu-item-wrapper>i{left:9px!important;top:8px!important}.navigator-container .parent.reduced>.menu-item-wrapper{left:10px!important}.navigator-container .parent.reduced>.menu-item-wrapper>i{left:9px!important}\n"], dependencies: [{ kind: "component", type: ItemComponent, selector: "app-item", inputs: ["item", "level"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: TooltipDirective, selector: "[appTooltip]", inputs: ["appTooltip", "showAnyway", "position"] }], encapsulation: i0.ViewEncapsulation.None }); }
164
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.3", type: ItemComponent, isStandalone: true, selector: "app-item", inputs: { item: "item", level: "level" }, viewQueries: [{ propertyName: "me", first: true, predicate: ["me"], descendants: true }, { propertyName: "children", first: true, predicate: ["children"], descendants: true }, { propertyName: "link", first: true, predicate: ["link"], descendants: true }, { propertyName: "subArrow", first: true, predicate: ["subArrow"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<li #me [id]=\"'main-menu-' + item.id\" class=\"parent\" [attr.data-level]=\"level\" [class.reduced]=\"leftbarReduced\" \r\n [class.active]=\"!wideMode && active\"\r\n [class.expanded]=\"item.tree$Expanded\" \r\n [class.highlighted]=\"item.tree$Highlighted\" \r\n [class.li-thin-mode]=\"!wideMode\" \r\n [class.menu-item]=\"!wideMode\"\r\n [appTooltip]=\"level===1 && !active ? caption : undefined\" [position]=\"'right'\"\r\n >\r\n <div class=\"menu-item-wrapper\" [attr.data-level]=\"level\" (click)=\"onClick($event, item)\" [class.module-thin-mode]=\"!wideMode && level===1\" [class.thin-branch]=\"!wideMode && level > 1\">\r\n\r\n @if (wideMode) {\r\n @if (!!!leftbarReduced) {\r\n @if (!!hasChildren) {\r\n @if (!item.tree$Selected) {\r\n <i [attr.data-level]=\"level\" class=\"custom-icon-parent-right\"></i>\r\n } @else {\r\n <i [attr.data-level]=\"level\" class=\"custom-icon-parent-down\"></i>\r\n }\r\n } @else {\r\n @if (item.tree$Selected && item.code !== 'MENU.DASHBOARD' && item.code !== 'MENU.HOME') {\r\n <i [attr.data-level]=\"level\" class=\"custom-icon-child-right\"></i>\r\n }\r\n }\r\n }\r\n }\r\n\r\n <i [attr.data-level]=\"level\" [class]=\"item.iconClass + ' module-icon'\" [appTooltip]=\"wideMode ? caption : undefined\"\r\n (click)=\"onModuleIconClick($event, item);false\" *ngIf=\"!!item.iconClass\" [ngStyle]=\"{\r\n left: wideMode ? '20px' : 'unset'\r\n }\"></i>\r\n\r\n @if (!wideMode || (!leftbarReduced && hasChildren)) {\r\n <a #link [attr.data-level]=\"level\" class=\"has-submenu\" [appTooltip]=\"level > 1 ? caption : undefined\" [class.thin-mode]=\"!wideMode\">\r\n <ng-container (click)=\"subArrowClicked($event, item);false\"> <!--false is important here-->\r\n <span #subArrow *ngIf=\"(!!item.pictureBase64 || !!item.pictureUri)\"\r\n [class]=\"'img-span plus level' + level\">\r\n <img [src]=\"item.pictureBase64 || item.pictureUri\" *ngIf=\"!!item.pictureBase64\">\r\n </span>\r\n <span #subArrow *ngIf=\"!!!item.pictureBase64 && !!!item.pictureUri\"\r\n [class]=\"'plus level' + level\"></span>\r\n </ng-container>\r\n\r\n <img *ngIf=\"(!!item.pictureBase64 || !!item.pictureUri)\" [src]=\"item.pictureBase64 || item.pictureUri\">\r\n\r\n {{ caption }}\r\n\r\n </a>\r\n } @else {\r\n <a [attr.data-level]=\"level\" [routerLink]=\"item.url\" (click)=\"onClick($event, item)\" [class.thin-mode]=\"!wideMode\"\r\n [appTooltip]=\"wideMode && caption\">\r\n {{ caption }}\r\n </a>\r\n }\r\n\r\n </div>\r\n\r\n @if (!!wideMode && !!hasChildren && !!item.tree$Children!.length && !!!leftbarReduced) {\r\n <ul #children [class.expanded]=\"!wideMode || item.tree$Expanded\"\r\n [class.ul-thin-mode]=\"!wideMode\" [ngStyle]=\"{\r\n padding: 0,\r\n width: !!wideMode ? (layoutService.leftBarCurrentWidth$.value - layoutService.basicSpacing - layoutService.scrollBarWidth + 5 + 'px') : ( layoutService.leftBarWideWidth$.value + 'px' ),\r\n }\" [class.submenu]=\"!wideMode\">\r\n <div>\r\n @for (child of item.tree$Children; track $index) {\r\n <app-item [item]=\"child\" [level]=\"level+1\" (clicked)=\"onClick($event, child)\"></app-item>\r\n }\r\n </div>\r\n </ul>\r\n }\r\n\r\n</li>", styles: [".navigator-container{--active-item-border-color: white;--line-height: 16px;--level-gap: 10px;--thin-mode-padding: 8px;--thin-mode-width: 66px;--wide-mode-width: 280px;--left-bar-current-width: 280px}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.navigator-container .d-none{display:none}.navigator-container .module-thin-mode{display:flex!important;align-items:center!important;justify-content:center!important;padding:0!important;margin-bottom:5px!important;height:50px!important}.navigator-container .li-thin-mode[data-level=\"1\"]{height:50px!important;margin:0!important}.navigator-container .li-thin-mode .thin-branch a{padding-left:15px;padding-right:15px;overflow:hidden;max-width:100%;text-overflow:ellipsis}.navigator-container .li-thin-mode .thin-branch:hover{background:#e1e3e5!important;border-radius:5px!important}.navigator-container .li-thin-mode:hover[data-level=\"1\"]>ul.ul-thin-mode{transform:translate(calc(var(--thin-mode-width)))}.navigator-container .li-thin-mode:hover:not([data-level=\"1\"])>ul.ul-thin-mode{transform:translate(calc(var(--wide-mode-width) - var(--size-layout-block-cell-spacing)))}.navigator-container .li-thin-mode.active .module-thin-mode{background:#e1e3e5!important;border-radius:5px!important;width:50px!important;transform:translate(var(--thin-mode-padding))}.navigator-container .li-thin-mode.active>ul.ul-thin-mode{background-color:#fff;opacity:1;height:unset;overflow-y:auto;box-shadow:.4rem 0 2rem #0000002e}.navigator-container .li-thin-mode.active>ul.ul-thin-mode>div>app-item>li>div>a{display:block!important}.navigator-container .li-thin-mode.active[data-level=\"1\"]>ul.ul-thin-mode{display:block;transform:translate(calc(var(--thin-mode-width)))}.navigator-container .li-thin-mode.active:not([data-level=\"1\"])>ul.ul-thin-mode{display:block;transform:translate(calc(var(--wide-mode-width) - var(--size-layout-block-cell-spacing)))}.navigator-container ul.ul-thin-mode{display:none}.navigator-container .parent{--children-height: 0px;box-sizing:border-box;width:100%;transition:width 1s ease-out}.navigator-container .parent ul{animation:fadeIn .25s linear}.navigator-container .parent i[class^=custom-icon-parent-],.navigator-container .parent i[class^=custom-icon-child-]{position:absolute}.navigator-container .parent i[class^=custom-icon-parent-][data-level=\"1\"],.navigator-container .parent i[class^=custom-icon-child-][data-level=\"1\"]{left:var(--size-left-bar-the-first-icon-left)!important}.navigator-container .parent i[class^=custom-icon-parent-][data-level=\"2\"],.navigator-container .parent i[class^=custom-icon-child-][data-level=\"2\"]{left:46px!important}.navigator-container .parent i[class^=custom-icon-child-][data-level=\"3\"]{left:calc(var(--size-header-logo-left) - 2 * var(--level-gap))!important}.navigator-container .parent i.module-icon{position:absolute;display:inline-block;font-size:var(--size-left-bar-icon-font-size)!important;width:var(--size-left-bar-icon-font-size)!important;height:var(--size-left-bar-icon-font-size)!important}.navigator-container .parent .menu-item-wrapper{position:relative!important;margin-left:0!important;padding-left:0;border:none!important;cursor:pointer}.navigator-container .parent .menu-item-wrapper[data-level=\"1\"].module-thin-mode:hover{background-color:#e1e3e5;width:50px;border-radius:5px;transform:translate(8px);color:#000}.navigator-container .parent .menu-item-wrapper:not([data-level=\"1\"]).module-thin-mode:hover{background-color:#e1e3e5;color:#000;padding:var(--size-layout-block-cell-spacing)}.navigator-container .parent a.thin-mode{left:0!important;display:none;padding-left:15px;padding-right:15px;overflow:hidden;text-overflow:ellipsis}.navigator-container .parent a{position:absolute!important;margin-left:0!important;padding-left:0;border:none!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;user-select:none;-webkit-user-select:none}.navigator-container .parent a[data-level=\"1\"]:not(.thin-mode){left:var(--size-header-logo-left);max-width:calc(var(--left-bar-current-width) - var(--size-header-logo-left) - var(--size-scrollbar-width) - var(--size-layout-block-cell-spacing) * 2)}.navigator-container .parent a[data-level=\"2\"]:not(.thin-mode){left:calc(var(--size-header-logo-left) + var(--level-gap));max-width:calc(var(--left-bar-current-width) - var(--size-header-logo-left) - var(--size-scrollbar-width) - var(--size-layout-block-cell-spacing) * 2 - var(--level-gap))}.navigator-container .parent a[data-level=\"3\"]:not(.thin-mode){left:calc(var(--size-header-logo-left) - var(--level-gap) + 3px);max-width:calc(var(--left-bar-current-width) - var(--size-header-logo-left) - var(--size-scrollbar-width) - var(--size-layout-block-cell-spacing) * 2 - var(--level-gap) * 2)}.navigator-container .parent[data-level=\"1\"]{margin:10px 0}.navigator-container .parent[data-level=\"1\"] a{margin-left:0;font-size:13px}.navigator-container .parent[data-level=\"2\"]:not(.ul-thin-mode) a{margin-left:10px;font-size:13px}.navigator-container .parent[data-level=\"3\"]:not(.ul-thin-mode) a{margin-left:20px;font-size:13px}.navigator-container .parent[data-level=\"2\"]>.menu-item-wrapper{margin-left:20px}.navigator-container .parent .menu-item-wrapper{height:35px;padding-left:0!important;display:flex;align-items:center;margin:0}.navigator-container .parent .menu-item-wrapper>i{display:inline-block;font-size:13px;color:#a9a9a9;cursor:pointer}.navigator-container .parent .menu-item-wrapper>i{color:#000}.navigator-container .parent li:not(.li-thin-mode):hover>.menu-item-wrapper:before{content:\"\";display:inline-block;position:absolute;left:0;height:33px;width:calc(var(--size-left-bar-full-width) - 20px);background-color:#eaf1fb;border-top-right-radius:50px;border-bottom-right-radius:50px}.navigator-container .parent>ul:not(.ul-thin-mode){position:relative;overflow:hidden;display:none;opacity:0;transition:opacity .5s ease-out}.navigator-container .parent>ul.ul-thin-mode{overflow-x:hidden;display:none;margin-left:0!important;opacity:1;transition:opacity .5s ease-out}.navigator-container .parent>ul.ul-thin-mode{overflow-y:auto}.navigator-container .parent.active[data-level=\"2\"]>.menu-item-wrapper>a{transition:.5s ease-out}.navigator-container .parent.highlighted>.menu-item-wrapper>a{color:var(--color-core-org-tree-highlighted)!important;font-weight:700!important}.navigator-container .parent.expanded>ul:not(.submenu){display:block;opacity:1;transition:opacity .5s ease-out}.navigator-container .parent.expanded[data-level=\"2\"]>ul{margin-left:25px}.navigator-container .parent:not(.li-thin-mode) a{margin-left:0}.navigator-container .parent.reduced .menu-item-wrapper{padding:0}.navigator-container .expanded[data-level=\"1\"]:not(.li-thin-mode)>.menu-item-wrapper{background-color:#fff;border-top-right-radius:50px;border-bottom-right-radius:50px;margin-right:2px;display:flex;justify-content:flex-start}.navigator-container .expanded[data-level=\"1\"]:not(.li-thin-mode)>.menu-item-wrapper:hover{background-color:#fff}.navigator-container .expanded>ul:not(.submenu){overflow:visible!important}.navigator-container .expanded.reduced>.menu-item-wrapper{justify-content:flex-start!important;border-top-left-radius:50px;border-bottom-left-radius:50px;width:37px}.navigator-container .parent.reduced>.menu-item-wrapper{justify-content:flex-start!important;border-radius:20px;width:37px}.navigator-container .custom-icon-parent-down{background-image:url('data:image/svg+xml,<svg width=\"8\" height=\"4\" viewBox=\"0 0 8 4\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M4 3.88867L0.535899 0.555338L7.4641 0.555339L4 3.88867Z\" fill=\"%23000000\"/></svg>');display:flex;align-items:center;justify-content:center;width:8px;height:5px;background-size:contain;background-repeat:no-repeat}.navigator-container .custom-icon-parent-right{background-image:url('data:image/svg+xml,<svg width=\"5\" height=\"5\" viewBox=\"0 0 4 8\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M4 4L0.666667 7.4641L0.666667 0.535898L4 4Z\" fill=\"%23000000\"/></svg>');display:block;position:absolute;width:8px;height:8px;align-items:center;justify-content:center;background-size:contain;background-repeat:no-repeat;float:left}.navigator-container .custom-icon-child-right{position:absolute;background-image:url('data:image/svg+xml,<svg width=\"9\" height=\"12\" viewBox=\"0 0 9 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M8.08811 5.23421C8.56399 5.63384 8.56399 6.36616 8.08811 6.76579L2.3931 11.5484C1.74247 12.0947 0.75 11.6322 0.75 10.7826L0.750001 1.21742C0.750001 0.367809 1.74247 -0.0947444 2.39309 0.451638L8.08811 5.23421Z\" fill=\"%23F37540\"/></svg>');display:flex;width:8px;height:8px;align-items:center;justify-content:center;background-size:contain;background-repeat:no-repeat}.navigator-container .custom-organization-icon{background-image:url('data:image/svg+xml,<svg width=\"20\" height=\"19\" viewBox=\"0 0 20 19\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M4.98901 9.6555H15.0112V11.5377H15.989V8.67772H10.489V6.72217H9.51123V8.67772H4.01123V11.5377H4.98901V9.6555Z\" fill=\"%23000000\"/><path d=\"M7.5555 12.2222H1.44439C1.12024 12.2222 0.80936 12.3509 0.580149 12.5801C0.350937 12.8094 0.222168 13.1202 0.222168 13.4444V17.1111C0.222168 17.4352 0.350937 17.7461 0.580149 17.9753C0.80936 18.2045 1.12024 18.3333 1.44439 18.3333H7.5555C7.87966 18.3333 8.19053 18.2045 8.41974 17.9753C8.64895 17.7461 8.77772 17.4352 8.77772 17.1111V13.4444C8.77772 13.1202 8.64895 12.8094 8.41974 12.5801C8.19053 12.3509 7.87966 12.2222 7.5555 12.2222ZM1.44439 17.1111V13.4444H7.5555V17.1111H1.44439Z\" fill=\"%23000000\"/><path d=\"M18.5555 12.2222H12.4444C12.1202 12.2222 11.8094 12.3509 11.5801 12.5801C11.3509 12.8094 11.2222 13.1202 11.2222 13.4444V17.1111C11.2222 17.4352 11.3509 17.7461 11.5801 17.9753C11.8094 18.2045 12.1202 18.3333 12.4444 18.3333H18.5555C18.8797 18.3333 19.1905 18.2045 19.4197 17.9753C19.649 17.7461 19.7777 17.4352 19.7777 17.1111V13.4444C19.7777 13.1202 19.649 12.8094 19.4197 12.5801C19.1905 12.3509 18.8797 12.2222 18.5555 12.2222ZM12.4444 17.1111V13.4444H18.5555V17.1111H12.4444Z\" fill=\"%23000000\"/><path d=\"M6.94439 6.11111H13.0555C13.3797 6.11111 13.6905 5.98234 13.9197 5.75313C14.149 5.52392 14.2777 5.21304 14.2777 4.88889V1.22222C14.2777 0.898069 14.149 0.587192 13.9197 0.35798C13.6905 0.128769 13.3797 0 13.0555 0H6.94439C6.62024 0 6.30936 0.128769 6.08015 0.35798C5.85094 0.587192 5.72217 0.898069 5.72217 1.22222V4.88889C5.72217 5.21304 5.85094 5.52392 6.08015 5.75313C6.30936 5.98234 6.62024 6.11111 6.94439 6.11111ZM6.94439 1.22222H13.0555V4.88889H6.94439V1.22222Z\" fill=\"%23000000\"/></svg>');display:flex;align-items:center;justify-content:center;width:15px;height:15px;background-size:contain;background-repeat:no-repeat}.navigator-container .custom-profile-icon{background-image:url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><rect x=\"0.75\" y=\"0.75\" width=\"16.5\" height=\"16.5\" rx=\"4.25\" stroke=\"%23000000\" stroke-width=\"1.5\"/><path d=\"M14.5164 16.5755V15.2137C14.5164 14.4914 14.2258 13.7987 13.7086 13.2879C13.1913 12.7772 12.4898 12.4902 11.7583 12.4902H6.2422C5.51071 12.4902 4.80919 12.7772 4.29195 13.2879C3.77471 13.7987 3.48413 14.4914 3.48413 15.2137V16.5755\" stroke=\"%23000000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M9.00011 9.57227C10.4432 9.57227 11.613 8.39647 11.613 6.94605C11.613 5.49562 10.4432 4.31982 9.00011 4.31982C7.55704 4.31982 6.38721 5.49562 6.38721 6.94605C6.38721 8.39647 7.55704 9.57227 9.00011 9.57227Z\" stroke=\"%23000000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>');display:flex;align-items:center;justify-content:center;width:15px;height:15px;background-size:contain;background-repeat:no-repeat}.navigator-container .custom-insurence-icon{background-image:url('data:image/svg+xml,<svg width=\"20\" height=\"18\" viewBox=\"0 0 20 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M2.8 1H17.2C17.6774 1 18.1352 1.1873 18.4728 1.5207C18.8104 1.8541 19 2.30628 19 2.77778V8.11111C19 10.4686 18.0518 12.7295 16.364 14.3965C14.6761 16.0635 12.3869 17 10 17C8.8181 17 7.64778 16.7701 6.55585 16.3234C5.46392 15.8767 4.47177 15.2219 3.63604 14.3965C1.94821 12.7295 1 10.4686 1 8.11111V2.77778C1 2.30628 1.18964 1.8541 1.52721 1.5207C1.86477 1.1873 2.32261 1 2.8 1V1Z\" stroke=\"%23000000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M7 8.5L9.5 11.5L15 6\" stroke=\"%23000000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>');display:flex;align-items:center;justify-content:center;width:15px;height:15px;background-size:contain;background-repeat:no-repeat}.navigator-container .custom-education-icon{background-image:url('data:image/svg+xml,<svg width=\"21\" height=\"19\" viewBox=\"0 0 21 19\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M1 1H6.66667C7.6686 1 8.62949 1.39801 9.33796 2.10649C10.0464 2.81496 10.4444 3.77585 10.4444 4.77778V18C10.4444 17.2486 10.1459 16.5279 9.61458 15.9965C9.08323 15.4652 8.36256 15.1667 7.61111 15.1667H1V1Z\" stroke=\"%23000000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M19.8889 1H14.2222C13.2203 1 12.2594 1.39801 11.5509 2.10649C10.8425 2.81496 10.4445 3.77585 10.4445 4.77778V18C10.4445 17.2486 10.743 16.5279 11.2743 15.9965C11.8057 15.4652 12.5263 15.1667 13.2778 15.1667H19.8889V1Z\" stroke=\"%23000000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>');display:flex;align-items:center;justify-content:center;width:15px;height:15px;background-size:contain;background-repeat:no-repeat}.navigator-container .parent.expanded.reduced>.menu-item-wrapper{background-color:#fff;left:10px!important}.navigator-container .parent.expanded.reduced>.menu-item-wrapper>i{left:9px!important;top:8px!important}.navigator-container .parent.reduced>.menu-item-wrapper{left:10px!important}.navigator-container .parent.reduced>.menu-item-wrapper>i{left:9px!important}\n"], dependencies: [{ kind: "component", type: ItemComponent, selector: "app-item", inputs: ["item", "level"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: TooltipDirective, selector: "[appTooltip]", inputs: ["appTooltip", "showAnyway", "position"] }], encapsulation: i0.ViewEncapsulation.None }); }
165
165
  }
166
166
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: ItemComponent, decorators: [{
167
167
  type: Component,
@@ -169,7 +169,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
169
169
  CommonModule,
170
170
  RouterModule,
171
171
  TooltipDirective,
172
- ], encapsulation: ViewEncapsulation.None, template: "<li #me [id]=\"'main-menu-' + item.id\" class=\"parent\" [attr.data-level]=\"level\" [class.reduced]=\"leftbarReduced\" \r\n [class.active]=\"!wideMode && active\"\r\n [class.expanded]=\"item.tree$Expanded\" \r\n [class.highlighted]=\"item.tree$Highlighted\" \r\n [class.li-thin-mode]=\"!wideMode\" \r\n [class.menu-item]=\"!wideMode\">\r\n <div class=\"menu-item-wrapper\" [attr.data-level]=\"level\" (click)=\"onClick($event, item)\" [class.module-thin-mode]=\"!wideMode && level===1\" [class.thin-branch]=\"!wideMode && level > 1\">\r\n\r\n @if (wideMode) {\r\n @if (!!!leftbarReduced) {\r\n @if (!!hasChildren) {\r\n @if (!item.tree$Selected) {\r\n <i [attr.data-level]=\"level\" class=\"custom-icon-parent-right\"></i>\r\n } @else {\r\n <i [attr.data-level]=\"level\" class=\"custom-icon-parent-down\"></i>\r\n }\r\n } @else {\r\n @if (item.tree$Selected && item.code !== 'MENU.DASHBOARD' && item.code !== 'MENU.HOME') {\r\n <i [attr.data-level]=\"level\" class=\"custom-icon-child-right\"></i>\r\n }\r\n }\r\n }\r\n }\r\n\r\n <i [attr.data-level]=\"level\" [class]=\"item.iconClass + ' module-icon'\" [appTooltip]=\"wideMode ? caption : undefined\"\r\n (click)=\"onModuleIconClick($event, item);false\" *ngIf=\"!!item.iconClass\" [ngStyle]=\"{\r\n left: wideMode ? '20px' : 'unset'\r\n }\"></i>\r\n\r\n @if (!wideMode || (!leftbarReduced && hasChildren)) {\r\n <a #link [attr.data-level]=\"level\" class=\"has-submenu\" [appTooltip]=\"level > 1 ? caption : undefined\" [class.thin-mode]=\"!wideMode\">\r\n <ng-container (click)=\"subArrowClicked($event, item);false\"> <!--false is important here-->\r\n <span #subArrow *ngIf=\"(!!item.pictureBase64 || !!item.pictureUri)\"\r\n [class]=\"'img-span plus level' + level\">\r\n <img [src]=\"item.pictureBase64 || item.pictureUri\" *ngIf=\"!!item.pictureBase64\">\r\n </span>\r\n <span #subArrow *ngIf=\"!!!item.pictureBase64 && !!!item.pictureUri\"\r\n [class]=\"'plus level' + level\"></span>\r\n </ng-container>\r\n\r\n <img *ngIf=\"(!!item.pictureBase64 || !!item.pictureUri)\" [src]=\"item.pictureBase64 || item.pictureUri\">\r\n\r\n {{ caption }}\r\n\r\n </a>\r\n } @else {\r\n <a [attr.data-level]=\"level\" [routerLink]=\"item.url\" (click)=\"onClick($event, item)\" [class.thin-mode]=\"!wideMode\"\r\n [appTooltip]=\"wideMode && caption\">\r\n {{ caption }}\r\n </a>\r\n }\r\n\r\n </div>\r\n\r\n @if (!!wideMode && !!hasChildren && !!item.tree$Children!.length && !!!leftbarReduced) {\r\n <ul #children [class.expanded]=\"!wideMode || item.tree$Expanded\"\r\n [class.ul-thin-mode]=\"!wideMode\" [ngStyle]=\"{\r\n padding: 0,\r\n width: !!wideMode ? (layoutService.leftBarCurrentWidth$.value - layoutService.basicSpacing - layoutService.scrollBarWidth + 5 + 'px') : ( layoutService.leftBarWideWidth$.value + 'px' ),\r\n }\" [class.submenu]=\"!wideMode\">\r\n <div>\r\n @for (child of item.tree$Children; track $index) {\r\n <app-item [item]=\"child\" [level]=\"level+1\" (clicked)=\"onClick($event, child)\"></app-item>\r\n }\r\n </div>\r\n </ul>\r\n }\r\n\r\n</li>", styles: [".navigator-container{--active-item-border-color: white;--line-height: 16px;--level-gap: 10px;--thin-mode-padding: 8px;--thin-mode-width: 66px;--wide-mode-width: 280px;--left-bar-current-width: 280px}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.navigator-container .d-none{display:none}.navigator-container .module-thin-mode{display:flex!important;align-items:center!important;justify-content:center!important;padding:0!important;margin-bottom:5px!important;height:50px!important}.navigator-container .li-thin-mode[data-level=\"1\"]{height:50px!important;margin:0!important}.navigator-container .li-thin-mode .thin-branch a{padding-left:15px;padding-right:15px;overflow:hidden;max-width:100%;text-overflow:ellipsis}.navigator-container .li-thin-mode .thin-branch:hover{background:#e1e3e5!important;border-radius:5px!important}.navigator-container .li-thin-mode:hover[data-level=\"1\"]>ul.ul-thin-mode{transform:translate(calc(var(--thin-mode-width)))}.navigator-container .li-thin-mode:hover:not([data-level=\"1\"])>ul.ul-thin-mode{transform:translate(calc(var(--wide-mode-width) - var(--size-layout-block-cell-spacing)))}.navigator-container .li-thin-mode.active .module-thin-mode{background:#e1e3e5!important;border-radius:5px!important;width:50px!important;transform:translate(var(--thin-mode-padding))}.navigator-container .li-thin-mode.active>ul.ul-thin-mode{background-color:#fff;opacity:1;height:unset;overflow-y:auto;box-shadow:.4rem 0 2rem #0000002e}.navigator-container .li-thin-mode.active>ul.ul-thin-mode>div>app-item>li>div>a{display:block!important}.navigator-container .li-thin-mode.active[data-level=\"1\"]>ul.ul-thin-mode{display:block;transform:translate(calc(var(--thin-mode-width)))}.navigator-container .li-thin-mode.active:not([data-level=\"1\"])>ul.ul-thin-mode{display:block;transform:translate(calc(var(--wide-mode-width) - var(--size-layout-block-cell-spacing)))}.navigator-container ul.ul-thin-mode{display:none}.navigator-container .parent{--children-height: 0px;box-sizing:border-box;width:100%;transition:width 1s ease-out}.navigator-container .parent ul{animation:fadeIn .25s linear}.navigator-container .parent i[class^=custom-icon-parent-],.navigator-container .parent i[class^=custom-icon-child-]{position:absolute}.navigator-container .parent i[class^=custom-icon-parent-][data-level=\"1\"],.navigator-container .parent i[class^=custom-icon-child-][data-level=\"1\"]{left:var(--size-left-bar-the-first-icon-left)!important}.navigator-container .parent i[class^=custom-icon-parent-][data-level=\"2\"],.navigator-container .parent i[class^=custom-icon-child-][data-level=\"2\"]{left:46px!important}.navigator-container .parent i[class^=custom-icon-child-][data-level=\"3\"]{left:calc(var(--size-header-logo-left) - 2 * var(--level-gap))!important}.navigator-container .parent i.module-icon{position:absolute;display:inline-block;font-size:var(--size-left-bar-icon-font-size)!important;width:var(--size-left-bar-icon-font-size)!important;height:var(--size-left-bar-icon-font-size)!important}.navigator-container .parent .menu-item-wrapper{position:relative!important;margin-left:0!important;padding-left:0;border:none!important;cursor:pointer}.navigator-container .parent .menu-item-wrapper[data-level=\"1\"].module-thin-mode:hover{background-color:#e1e3e5;width:50px;border-radius:5px;transform:translate(8px);color:#000}.navigator-container .parent .menu-item-wrapper:not([data-level=\"1\"]).module-thin-mode:hover{background-color:#e1e3e5;color:#000;padding:var(--size-layout-block-cell-spacing)}.navigator-container .parent a.thin-mode{left:0!important;display:none;padding-left:15px;padding-right:15px;overflow:hidden;text-overflow:ellipsis}.navigator-container .parent a{position:absolute!important;margin-left:0!important;padding-left:0;border:none!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;user-select:none;-webkit-user-select:none}.navigator-container .parent a[data-level=\"1\"]:not(.thin-mode){left:var(--size-header-logo-left);max-width:calc(var(--left-bar-current-width) - var(--size-header-logo-left) - var(--size-scrollbar-width) - var(--size-layout-block-cell-spacing) * 2)}.navigator-container .parent a[data-level=\"2\"]:not(.thin-mode){left:calc(var(--size-header-logo-left) + var(--level-gap));max-width:calc(var(--left-bar-current-width) - var(--size-header-logo-left) - var(--size-scrollbar-width) - var(--size-layout-block-cell-spacing) * 2 - var(--level-gap))}.navigator-container .parent a[data-level=\"3\"]:not(.thin-mode){left:calc(var(--size-header-logo-left) - var(--level-gap) + 3px);max-width:calc(var(--left-bar-current-width) - var(--size-header-logo-left) - var(--size-scrollbar-width) - var(--size-layout-block-cell-spacing) * 2 - var(--level-gap) * 2)}.navigator-container .parent[data-level=\"1\"]{margin:10px 0}.navigator-container .parent[data-level=\"1\"] a{margin-left:0;font-size:13px}.navigator-container .parent[data-level=\"2\"]:not(.ul-thin-mode) a{margin-left:10px;font-size:13px}.navigator-container .parent[data-level=\"3\"]:not(.ul-thin-mode) a{margin-left:20px;font-size:13px}.navigator-container .parent[data-level=\"2\"]>.menu-item-wrapper{margin-left:20px}.navigator-container .parent .menu-item-wrapper{height:35px;padding-left:0!important;display:flex;align-items:center;margin:0}.navigator-container .parent .menu-item-wrapper>i{display:inline-block;font-size:13px;color:#a9a9a9;cursor:pointer}.navigator-container .parent .menu-item-wrapper>i{color:#000}.navigator-container .parent li:not(.li-thin-mode):hover>.menu-item-wrapper:before{content:\"\";display:inline-block;position:absolute;left:0;height:33px;width:calc(var(--size-left-bar-full-width) - 20px);background-color:#eaf1fb;border-top-right-radius:50px;border-bottom-right-radius:50px}.navigator-container .parent>ul:not(.ul-thin-mode){position:relative;overflow:hidden;display:none;opacity:0;transition:opacity .5s ease-out}.navigator-container .parent>ul.ul-thin-mode{overflow-x:hidden;display:none;margin-left:0!important;opacity:1;transition:opacity .5s ease-out}.navigator-container .parent>ul.ul-thin-mode{overflow-y:auto}.navigator-container .parent.active[data-level=\"2\"]>.menu-item-wrapper>a{transition:.5s ease-out}.navigator-container .parent.highlighted>.menu-item-wrapper>a{color:var(--color-core-org-tree-highlighted)!important;font-weight:700!important}.navigator-container .parent.expanded>ul:not(.submenu){display:block;opacity:1;transition:opacity .5s ease-out}.navigator-container .parent.expanded[data-level=\"2\"]>ul{margin-left:25px}.navigator-container .parent:not(.li-thin-mode) a{margin-left:0}.navigator-container .parent.reduced .menu-item-wrapper{padding:0}.navigator-container .expanded[data-level=\"1\"]:not(.li-thin-mode)>.menu-item-wrapper{background-color:#fff;border-top-right-radius:50px;border-bottom-right-radius:50px;margin-right:2px;display:flex;justify-content:flex-start}.navigator-container .expanded[data-level=\"1\"]:not(.li-thin-mode)>.menu-item-wrapper:hover{background-color:#fff}.navigator-container .expanded>ul:not(.submenu){overflow:visible!important}.navigator-container .expanded.reduced>.menu-item-wrapper{justify-content:flex-start!important;border-top-left-radius:50px;border-bottom-left-radius:50px;width:37px}.navigator-container .parent.reduced>.menu-item-wrapper{justify-content:flex-start!important;border-radius:20px;width:37px}.navigator-container .custom-icon-parent-down{background-image:url('data:image/svg+xml,<svg width=\"8\" height=\"4\" viewBox=\"0 0 8 4\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M4 3.88867L0.535899 0.555338L7.4641 0.555339L4 3.88867Z\" fill=\"%23000000\"/></svg>');display:flex;align-items:center;justify-content:center;width:8px;height:5px;background-size:contain;background-repeat:no-repeat}.navigator-container .custom-icon-parent-right{background-image:url('data:image/svg+xml,<svg width=\"5\" height=\"5\" viewBox=\"0 0 4 8\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M4 4L0.666667 7.4641L0.666667 0.535898L4 4Z\" fill=\"%23000000\"/></svg>');display:block;position:absolute;width:8px;height:8px;align-items:center;justify-content:center;background-size:contain;background-repeat:no-repeat;float:left}.navigator-container .custom-icon-child-right{position:absolute;background-image:url('data:image/svg+xml,<svg width=\"9\" height=\"12\" viewBox=\"0 0 9 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M8.08811 5.23421C8.56399 5.63384 8.56399 6.36616 8.08811 6.76579L2.3931 11.5484C1.74247 12.0947 0.75 11.6322 0.75 10.7826L0.750001 1.21742C0.750001 0.367809 1.74247 -0.0947444 2.39309 0.451638L8.08811 5.23421Z\" fill=\"%23F37540\"/></svg>');display:flex;width:8px;height:8px;align-items:center;justify-content:center;background-size:contain;background-repeat:no-repeat}.navigator-container .custom-organization-icon{background-image:url('data:image/svg+xml,<svg width=\"20\" height=\"19\" viewBox=\"0 0 20 19\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M4.98901 9.6555H15.0112V11.5377H15.989V8.67772H10.489V6.72217H9.51123V8.67772H4.01123V11.5377H4.98901V9.6555Z\" fill=\"%23000000\"/><path d=\"M7.5555 12.2222H1.44439C1.12024 12.2222 0.80936 12.3509 0.580149 12.5801C0.350937 12.8094 0.222168 13.1202 0.222168 13.4444V17.1111C0.222168 17.4352 0.350937 17.7461 0.580149 17.9753C0.80936 18.2045 1.12024 18.3333 1.44439 18.3333H7.5555C7.87966 18.3333 8.19053 18.2045 8.41974 17.9753C8.64895 17.7461 8.77772 17.4352 8.77772 17.1111V13.4444C8.77772 13.1202 8.64895 12.8094 8.41974 12.5801C8.19053 12.3509 7.87966 12.2222 7.5555 12.2222ZM1.44439 17.1111V13.4444H7.5555V17.1111H1.44439Z\" fill=\"%23000000\"/><path d=\"M18.5555 12.2222H12.4444C12.1202 12.2222 11.8094 12.3509 11.5801 12.5801C11.3509 12.8094 11.2222 13.1202 11.2222 13.4444V17.1111C11.2222 17.4352 11.3509 17.7461 11.5801 17.9753C11.8094 18.2045 12.1202 18.3333 12.4444 18.3333H18.5555C18.8797 18.3333 19.1905 18.2045 19.4197 17.9753C19.649 17.7461 19.7777 17.4352 19.7777 17.1111V13.4444C19.7777 13.1202 19.649 12.8094 19.4197 12.5801C19.1905 12.3509 18.8797 12.2222 18.5555 12.2222ZM12.4444 17.1111V13.4444H18.5555V17.1111H12.4444Z\" fill=\"%23000000\"/><path d=\"M6.94439 6.11111H13.0555C13.3797 6.11111 13.6905 5.98234 13.9197 5.75313C14.149 5.52392 14.2777 5.21304 14.2777 4.88889V1.22222C14.2777 0.898069 14.149 0.587192 13.9197 0.35798C13.6905 0.128769 13.3797 0 13.0555 0H6.94439C6.62024 0 6.30936 0.128769 6.08015 0.35798C5.85094 0.587192 5.72217 0.898069 5.72217 1.22222V4.88889C5.72217 5.21304 5.85094 5.52392 6.08015 5.75313C6.30936 5.98234 6.62024 6.11111 6.94439 6.11111ZM6.94439 1.22222H13.0555V4.88889H6.94439V1.22222Z\" fill=\"%23000000\"/></svg>');display:flex;align-items:center;justify-content:center;width:15px;height:15px;background-size:contain;background-repeat:no-repeat}.navigator-container .custom-profile-icon{background-image:url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><rect x=\"0.75\" y=\"0.75\" width=\"16.5\" height=\"16.5\" rx=\"4.25\" stroke=\"%23000000\" stroke-width=\"1.5\"/><path d=\"M14.5164 16.5755V15.2137C14.5164 14.4914 14.2258 13.7987 13.7086 13.2879C13.1913 12.7772 12.4898 12.4902 11.7583 12.4902H6.2422C5.51071 12.4902 4.80919 12.7772 4.29195 13.2879C3.77471 13.7987 3.48413 14.4914 3.48413 15.2137V16.5755\" stroke=\"%23000000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M9.00011 9.57227C10.4432 9.57227 11.613 8.39647 11.613 6.94605C11.613 5.49562 10.4432 4.31982 9.00011 4.31982C7.55704 4.31982 6.38721 5.49562 6.38721 6.94605C6.38721 8.39647 7.55704 9.57227 9.00011 9.57227Z\" stroke=\"%23000000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>');display:flex;align-items:center;justify-content:center;width:15px;height:15px;background-size:contain;background-repeat:no-repeat}.navigator-container .custom-insurence-icon{background-image:url('data:image/svg+xml,<svg width=\"20\" height=\"18\" viewBox=\"0 0 20 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M2.8 1H17.2C17.6774 1 18.1352 1.1873 18.4728 1.5207C18.8104 1.8541 19 2.30628 19 2.77778V8.11111C19 10.4686 18.0518 12.7295 16.364 14.3965C14.6761 16.0635 12.3869 17 10 17C8.8181 17 7.64778 16.7701 6.55585 16.3234C5.46392 15.8767 4.47177 15.2219 3.63604 14.3965C1.94821 12.7295 1 10.4686 1 8.11111V2.77778C1 2.30628 1.18964 1.8541 1.52721 1.5207C1.86477 1.1873 2.32261 1 2.8 1V1Z\" stroke=\"%23000000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M7 8.5L9.5 11.5L15 6\" stroke=\"%23000000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>');display:flex;align-items:center;justify-content:center;width:15px;height:15px;background-size:contain;background-repeat:no-repeat}.navigator-container .custom-education-icon{background-image:url('data:image/svg+xml,<svg width=\"21\" height=\"19\" viewBox=\"0 0 21 19\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M1 1H6.66667C7.6686 1 8.62949 1.39801 9.33796 2.10649C10.0464 2.81496 10.4444 3.77585 10.4444 4.77778V18C10.4444 17.2486 10.1459 16.5279 9.61458 15.9965C9.08323 15.4652 8.36256 15.1667 7.61111 15.1667H1V1Z\" stroke=\"%23000000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M19.8889 1H14.2222C13.2203 1 12.2594 1.39801 11.5509 2.10649C10.8425 2.81496 10.4445 3.77585 10.4445 4.77778V18C10.4445 17.2486 10.743 16.5279 11.2743 15.9965C11.8057 15.4652 12.5263 15.1667 13.2778 15.1667H19.8889V1Z\" stroke=\"%23000000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>');display:flex;align-items:center;justify-content:center;width:15px;height:15px;background-size:contain;background-repeat:no-repeat}.navigator-container .parent.expanded.reduced>.menu-item-wrapper{background-color:#fff;left:10px!important}.navigator-container .parent.expanded.reduced>.menu-item-wrapper>i{left:9px!important;top:8px!important}.navigator-container .parent.reduced>.menu-item-wrapper{left:10px!important}.navigator-container .parent.reduced>.menu-item-wrapper>i{left:9px!important}\n"] }]
172
+ ], encapsulation: ViewEncapsulation.None, template: "<li #me [id]=\"'main-menu-' + item.id\" class=\"parent\" [attr.data-level]=\"level\" [class.reduced]=\"leftbarReduced\" \r\n [class.active]=\"!wideMode && active\"\r\n [class.expanded]=\"item.tree$Expanded\" \r\n [class.highlighted]=\"item.tree$Highlighted\" \r\n [class.li-thin-mode]=\"!wideMode\" \r\n [class.menu-item]=\"!wideMode\"\r\n [appTooltip]=\"level===1 && !active ? caption : undefined\" [position]=\"'right'\"\r\n >\r\n <div class=\"menu-item-wrapper\" [attr.data-level]=\"level\" (click)=\"onClick($event, item)\" [class.module-thin-mode]=\"!wideMode && level===1\" [class.thin-branch]=\"!wideMode && level > 1\">\r\n\r\n @if (wideMode) {\r\n @if (!!!leftbarReduced) {\r\n @if (!!hasChildren) {\r\n @if (!item.tree$Selected) {\r\n <i [attr.data-level]=\"level\" class=\"custom-icon-parent-right\"></i>\r\n } @else {\r\n <i [attr.data-level]=\"level\" class=\"custom-icon-parent-down\"></i>\r\n }\r\n } @else {\r\n @if (item.tree$Selected && item.code !== 'MENU.DASHBOARD' && item.code !== 'MENU.HOME') {\r\n <i [attr.data-level]=\"level\" class=\"custom-icon-child-right\"></i>\r\n }\r\n }\r\n }\r\n }\r\n\r\n <i [attr.data-level]=\"level\" [class]=\"item.iconClass + ' module-icon'\" [appTooltip]=\"wideMode ? caption : undefined\"\r\n (click)=\"onModuleIconClick($event, item);false\" *ngIf=\"!!item.iconClass\" [ngStyle]=\"{\r\n left: wideMode ? '20px' : 'unset'\r\n }\"></i>\r\n\r\n @if (!wideMode || (!leftbarReduced && hasChildren)) {\r\n <a #link [attr.data-level]=\"level\" class=\"has-submenu\" [appTooltip]=\"level > 1 ? caption : undefined\" [class.thin-mode]=\"!wideMode\">\r\n <ng-container (click)=\"subArrowClicked($event, item);false\"> <!--false is important here-->\r\n <span #subArrow *ngIf=\"(!!item.pictureBase64 || !!item.pictureUri)\"\r\n [class]=\"'img-span plus level' + level\">\r\n <img [src]=\"item.pictureBase64 || item.pictureUri\" *ngIf=\"!!item.pictureBase64\">\r\n </span>\r\n <span #subArrow *ngIf=\"!!!item.pictureBase64 && !!!item.pictureUri\"\r\n [class]=\"'plus level' + level\"></span>\r\n </ng-container>\r\n\r\n <img *ngIf=\"(!!item.pictureBase64 || !!item.pictureUri)\" [src]=\"item.pictureBase64 || item.pictureUri\">\r\n\r\n {{ caption }}\r\n\r\n </a>\r\n } @else {\r\n <a [attr.data-level]=\"level\" [routerLink]=\"item.url\" (click)=\"onClick($event, item)\" [class.thin-mode]=\"!wideMode\"\r\n [appTooltip]=\"wideMode && caption\">\r\n {{ caption }}\r\n </a>\r\n }\r\n\r\n </div>\r\n\r\n @if (!!wideMode && !!hasChildren && !!item.tree$Children!.length && !!!leftbarReduced) {\r\n <ul #children [class.expanded]=\"!wideMode || item.tree$Expanded\"\r\n [class.ul-thin-mode]=\"!wideMode\" [ngStyle]=\"{\r\n padding: 0,\r\n width: !!wideMode ? (layoutService.leftBarCurrentWidth$.value - layoutService.basicSpacing - layoutService.scrollBarWidth + 5 + 'px') : ( layoutService.leftBarWideWidth$.value + 'px' ),\r\n }\" [class.submenu]=\"!wideMode\">\r\n <div>\r\n @for (child of item.tree$Children; track $index) {\r\n <app-item [item]=\"child\" [level]=\"level+1\" (clicked)=\"onClick($event, child)\"></app-item>\r\n }\r\n </div>\r\n </ul>\r\n }\r\n\r\n</li>", styles: [".navigator-container{--active-item-border-color: white;--line-height: 16px;--level-gap: 10px;--thin-mode-padding: 8px;--thin-mode-width: 66px;--wide-mode-width: 280px;--left-bar-current-width: 280px}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.navigator-container .d-none{display:none}.navigator-container .module-thin-mode{display:flex!important;align-items:center!important;justify-content:center!important;padding:0!important;margin-bottom:5px!important;height:50px!important}.navigator-container .li-thin-mode[data-level=\"1\"]{height:50px!important;margin:0!important}.navigator-container .li-thin-mode .thin-branch a{padding-left:15px;padding-right:15px;overflow:hidden;max-width:100%;text-overflow:ellipsis}.navigator-container .li-thin-mode .thin-branch:hover{background:#e1e3e5!important;border-radius:5px!important}.navigator-container .li-thin-mode:hover[data-level=\"1\"]>ul.ul-thin-mode{transform:translate(calc(var(--thin-mode-width)))}.navigator-container .li-thin-mode:hover:not([data-level=\"1\"])>ul.ul-thin-mode{transform:translate(calc(var(--wide-mode-width) - var(--size-layout-block-cell-spacing)))}.navigator-container .li-thin-mode.active .module-thin-mode{background:#e1e3e5!important;border-radius:5px!important;width:50px!important;transform:translate(var(--thin-mode-padding))}.navigator-container .li-thin-mode.active>ul.ul-thin-mode{background-color:#fff;opacity:1;height:unset;overflow-y:auto;box-shadow:.4rem 0 2rem #0000002e}.navigator-container .li-thin-mode.active>ul.ul-thin-mode>div>app-item>li>div>a{display:block!important}.navigator-container .li-thin-mode.active[data-level=\"1\"]>ul.ul-thin-mode{display:block;transform:translate(calc(var(--thin-mode-width)))}.navigator-container .li-thin-mode.active:not([data-level=\"1\"])>ul.ul-thin-mode{display:block;transform:translate(calc(var(--wide-mode-width) - var(--size-layout-block-cell-spacing)))}.navigator-container ul.ul-thin-mode{display:none}.navigator-container .parent{--children-height: 0px;box-sizing:border-box;width:100%;transition:width 1s ease-out}.navigator-container .parent ul{animation:fadeIn .25s linear}.navigator-container .parent i[class^=custom-icon-parent-],.navigator-container .parent i[class^=custom-icon-child-]{position:absolute}.navigator-container .parent i[class^=custom-icon-parent-][data-level=\"1\"],.navigator-container .parent i[class^=custom-icon-child-][data-level=\"1\"]{left:var(--size-left-bar-the-first-icon-left)!important}.navigator-container .parent i[class^=custom-icon-parent-][data-level=\"2\"],.navigator-container .parent i[class^=custom-icon-child-][data-level=\"2\"]{left:46px!important}.navigator-container .parent i[class^=custom-icon-child-][data-level=\"3\"]{left:calc(var(--size-header-logo-left) - 2 * var(--level-gap))!important}.navigator-container .parent i.module-icon{position:absolute;display:inline-block;font-size:var(--size-left-bar-icon-font-size)!important;width:var(--size-left-bar-icon-font-size)!important;height:var(--size-left-bar-icon-font-size)!important}.navigator-container .parent .menu-item-wrapper{position:relative!important;margin-left:0!important;padding-left:0;border:none!important;cursor:pointer}.navigator-container .parent .menu-item-wrapper[data-level=\"1\"].module-thin-mode:hover{background-color:#e1e3e5;width:50px;border-radius:5px;transform:translate(8px);color:#000}.navigator-container .parent .menu-item-wrapper:not([data-level=\"1\"]).module-thin-mode:hover{background-color:#e1e3e5;color:#000;padding:var(--size-layout-block-cell-spacing)}.navigator-container .parent a.thin-mode{left:0!important;display:none;padding-left:15px;padding-right:15px;overflow:hidden;text-overflow:ellipsis}.navigator-container .parent a{position:absolute!important;margin-left:0!important;padding-left:0;border:none!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;user-select:none;-webkit-user-select:none}.navigator-container .parent a[data-level=\"1\"]:not(.thin-mode){left:var(--size-header-logo-left);max-width:calc(var(--left-bar-current-width) - var(--size-header-logo-left) - var(--size-scrollbar-width) - var(--size-layout-block-cell-spacing) * 2)}.navigator-container .parent a[data-level=\"2\"]:not(.thin-mode){left:calc(var(--size-header-logo-left) + var(--level-gap));max-width:calc(var(--left-bar-current-width) - var(--size-header-logo-left) - var(--size-scrollbar-width) - var(--size-layout-block-cell-spacing) * 2 - var(--level-gap))}.navigator-container .parent a[data-level=\"3\"]:not(.thin-mode){left:calc(var(--size-header-logo-left) - var(--level-gap) + 3px);max-width:calc(var(--left-bar-current-width) - var(--size-header-logo-left) - var(--size-scrollbar-width) - var(--size-layout-block-cell-spacing) * 2 - var(--level-gap) * 2)}.navigator-container .parent[data-level=\"1\"]{margin:10px 0}.navigator-container .parent[data-level=\"1\"] a{margin-left:0;font-size:13px}.navigator-container .parent[data-level=\"2\"]:not(.ul-thin-mode) a{margin-left:10px;font-size:13px}.navigator-container .parent[data-level=\"3\"]:not(.ul-thin-mode) a{margin-left:20px;font-size:13px}.navigator-container .parent[data-level=\"2\"]>.menu-item-wrapper{margin-left:20px}.navigator-container .parent .menu-item-wrapper{height:35px;padding-left:0!important;display:flex;align-items:center;margin:0}.navigator-container .parent .menu-item-wrapper>i{display:inline-block;font-size:13px;color:#a9a9a9;cursor:pointer}.navigator-container .parent .menu-item-wrapper>i{color:#000}.navigator-container .parent li:not(.li-thin-mode):hover>.menu-item-wrapper:before{content:\"\";display:inline-block;position:absolute;left:0;height:33px;width:calc(var(--size-left-bar-full-width) - 20px);background-color:#eaf1fb;border-top-right-radius:50px;border-bottom-right-radius:50px}.navigator-container .parent>ul:not(.ul-thin-mode){position:relative;overflow:hidden;display:none;opacity:0;transition:opacity .5s ease-out}.navigator-container .parent>ul.ul-thin-mode{overflow-x:hidden;display:none;margin-left:0!important;opacity:1;transition:opacity .5s ease-out}.navigator-container .parent>ul.ul-thin-mode{overflow-y:auto}.navigator-container .parent.active[data-level=\"2\"]>.menu-item-wrapper>a{transition:.5s ease-out}.navigator-container .parent.highlighted>.menu-item-wrapper>a{color:var(--color-core-org-tree-highlighted)!important;font-weight:700!important}.navigator-container .parent.expanded>ul:not(.submenu){display:block;opacity:1;transition:opacity .5s ease-out}.navigator-container .parent.expanded[data-level=\"2\"]>ul{margin-left:25px}.navigator-container .parent:not(.li-thin-mode) a{margin-left:0}.navigator-container .parent.reduced .menu-item-wrapper{padding:0}.navigator-container .expanded[data-level=\"1\"]:not(.li-thin-mode)>.menu-item-wrapper{background-color:#fff;border-top-right-radius:50px;border-bottom-right-radius:50px;margin-right:2px;display:flex;justify-content:flex-start}.navigator-container .expanded[data-level=\"1\"]:not(.li-thin-mode)>.menu-item-wrapper:hover{background-color:#fff}.navigator-container .expanded>ul:not(.submenu){overflow:visible!important}.navigator-container .expanded.reduced>.menu-item-wrapper{justify-content:flex-start!important;border-top-left-radius:50px;border-bottom-left-radius:50px;width:37px}.navigator-container .parent.reduced>.menu-item-wrapper{justify-content:flex-start!important;border-radius:20px;width:37px}.navigator-container .custom-icon-parent-down{background-image:url('data:image/svg+xml,<svg width=\"8\" height=\"4\" viewBox=\"0 0 8 4\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M4 3.88867L0.535899 0.555338L7.4641 0.555339L4 3.88867Z\" fill=\"%23000000\"/></svg>');display:flex;align-items:center;justify-content:center;width:8px;height:5px;background-size:contain;background-repeat:no-repeat}.navigator-container .custom-icon-parent-right{background-image:url('data:image/svg+xml,<svg width=\"5\" height=\"5\" viewBox=\"0 0 4 8\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M4 4L0.666667 7.4641L0.666667 0.535898L4 4Z\" fill=\"%23000000\"/></svg>');display:block;position:absolute;width:8px;height:8px;align-items:center;justify-content:center;background-size:contain;background-repeat:no-repeat;float:left}.navigator-container .custom-icon-child-right{position:absolute;background-image:url('data:image/svg+xml,<svg width=\"9\" height=\"12\" viewBox=\"0 0 9 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M8.08811 5.23421C8.56399 5.63384 8.56399 6.36616 8.08811 6.76579L2.3931 11.5484C1.74247 12.0947 0.75 11.6322 0.75 10.7826L0.750001 1.21742C0.750001 0.367809 1.74247 -0.0947444 2.39309 0.451638L8.08811 5.23421Z\" fill=\"%23F37540\"/></svg>');display:flex;width:8px;height:8px;align-items:center;justify-content:center;background-size:contain;background-repeat:no-repeat}.navigator-container .custom-organization-icon{background-image:url('data:image/svg+xml,<svg width=\"20\" height=\"19\" viewBox=\"0 0 20 19\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M4.98901 9.6555H15.0112V11.5377H15.989V8.67772H10.489V6.72217H9.51123V8.67772H4.01123V11.5377H4.98901V9.6555Z\" fill=\"%23000000\"/><path d=\"M7.5555 12.2222H1.44439C1.12024 12.2222 0.80936 12.3509 0.580149 12.5801C0.350937 12.8094 0.222168 13.1202 0.222168 13.4444V17.1111C0.222168 17.4352 0.350937 17.7461 0.580149 17.9753C0.80936 18.2045 1.12024 18.3333 1.44439 18.3333H7.5555C7.87966 18.3333 8.19053 18.2045 8.41974 17.9753C8.64895 17.7461 8.77772 17.4352 8.77772 17.1111V13.4444C8.77772 13.1202 8.64895 12.8094 8.41974 12.5801C8.19053 12.3509 7.87966 12.2222 7.5555 12.2222ZM1.44439 17.1111V13.4444H7.5555V17.1111H1.44439Z\" fill=\"%23000000\"/><path d=\"M18.5555 12.2222H12.4444C12.1202 12.2222 11.8094 12.3509 11.5801 12.5801C11.3509 12.8094 11.2222 13.1202 11.2222 13.4444V17.1111C11.2222 17.4352 11.3509 17.7461 11.5801 17.9753C11.8094 18.2045 12.1202 18.3333 12.4444 18.3333H18.5555C18.8797 18.3333 19.1905 18.2045 19.4197 17.9753C19.649 17.7461 19.7777 17.4352 19.7777 17.1111V13.4444C19.7777 13.1202 19.649 12.8094 19.4197 12.5801C19.1905 12.3509 18.8797 12.2222 18.5555 12.2222ZM12.4444 17.1111V13.4444H18.5555V17.1111H12.4444Z\" fill=\"%23000000\"/><path d=\"M6.94439 6.11111H13.0555C13.3797 6.11111 13.6905 5.98234 13.9197 5.75313C14.149 5.52392 14.2777 5.21304 14.2777 4.88889V1.22222C14.2777 0.898069 14.149 0.587192 13.9197 0.35798C13.6905 0.128769 13.3797 0 13.0555 0H6.94439C6.62024 0 6.30936 0.128769 6.08015 0.35798C5.85094 0.587192 5.72217 0.898069 5.72217 1.22222V4.88889C5.72217 5.21304 5.85094 5.52392 6.08015 5.75313C6.30936 5.98234 6.62024 6.11111 6.94439 6.11111ZM6.94439 1.22222H13.0555V4.88889H6.94439V1.22222Z\" fill=\"%23000000\"/></svg>');display:flex;align-items:center;justify-content:center;width:15px;height:15px;background-size:contain;background-repeat:no-repeat}.navigator-container .custom-profile-icon{background-image:url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><rect x=\"0.75\" y=\"0.75\" width=\"16.5\" height=\"16.5\" rx=\"4.25\" stroke=\"%23000000\" stroke-width=\"1.5\"/><path d=\"M14.5164 16.5755V15.2137C14.5164 14.4914 14.2258 13.7987 13.7086 13.2879C13.1913 12.7772 12.4898 12.4902 11.7583 12.4902H6.2422C5.51071 12.4902 4.80919 12.7772 4.29195 13.2879C3.77471 13.7987 3.48413 14.4914 3.48413 15.2137V16.5755\" stroke=\"%23000000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M9.00011 9.57227C10.4432 9.57227 11.613 8.39647 11.613 6.94605C11.613 5.49562 10.4432 4.31982 9.00011 4.31982C7.55704 4.31982 6.38721 5.49562 6.38721 6.94605C6.38721 8.39647 7.55704 9.57227 9.00011 9.57227Z\" stroke=\"%23000000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>');display:flex;align-items:center;justify-content:center;width:15px;height:15px;background-size:contain;background-repeat:no-repeat}.navigator-container .custom-insurence-icon{background-image:url('data:image/svg+xml,<svg width=\"20\" height=\"18\" viewBox=\"0 0 20 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M2.8 1H17.2C17.6774 1 18.1352 1.1873 18.4728 1.5207C18.8104 1.8541 19 2.30628 19 2.77778V8.11111C19 10.4686 18.0518 12.7295 16.364 14.3965C14.6761 16.0635 12.3869 17 10 17C8.8181 17 7.64778 16.7701 6.55585 16.3234C5.46392 15.8767 4.47177 15.2219 3.63604 14.3965C1.94821 12.7295 1 10.4686 1 8.11111V2.77778C1 2.30628 1.18964 1.8541 1.52721 1.5207C1.86477 1.1873 2.32261 1 2.8 1V1Z\" stroke=\"%23000000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M7 8.5L9.5 11.5L15 6\" stroke=\"%23000000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>');display:flex;align-items:center;justify-content:center;width:15px;height:15px;background-size:contain;background-repeat:no-repeat}.navigator-container .custom-education-icon{background-image:url('data:image/svg+xml,<svg width=\"21\" height=\"19\" viewBox=\"0 0 21 19\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M1 1H6.66667C7.6686 1 8.62949 1.39801 9.33796 2.10649C10.0464 2.81496 10.4444 3.77585 10.4444 4.77778V18C10.4444 17.2486 10.1459 16.5279 9.61458 15.9965C9.08323 15.4652 8.36256 15.1667 7.61111 15.1667H1V1Z\" stroke=\"%23000000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M19.8889 1H14.2222C13.2203 1 12.2594 1.39801 11.5509 2.10649C10.8425 2.81496 10.4445 3.77585 10.4445 4.77778V18C10.4445 17.2486 10.743 16.5279 11.2743 15.9965C11.8057 15.4652 12.5263 15.1667 13.2778 15.1667H19.8889V1Z\" stroke=\"%23000000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>');display:flex;align-items:center;justify-content:center;width:15px;height:15px;background-size:contain;background-repeat:no-repeat}.navigator-container .parent.expanded.reduced>.menu-item-wrapper{background-color:#fff;left:10px!important}.navigator-container .parent.expanded.reduced>.menu-item-wrapper>i{left:9px!important;top:8px!important}.navigator-container .parent.reduced>.menu-item-wrapper{left:10px!important}.navigator-container .parent.reduced>.menu-item-wrapper>i{left:9px!important}\n"] }]
173
173
  }], ctorParameters: () => [{ type: i1.Router }, { type: i2.NavigatorService }, { type: i3.MultiLanguageService }, { type: i4.LayoutService }, { type: i5.MenuService }], propDecorators: { item: [{
174
174
  type: Input
175
175
  }], level: [{
@@ -187,4 +187,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
187
187
  type: ViewChild,
188
188
  args: ['subArrow']
189
189
  }] } });
190
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtaGlzdGFmZi1hbHBoYS9zcmMvbGliL2FwcC9saWJyYXJpZXMvbmF2aWdhdG9yL25hdmlnYXRvci9pdGVtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1oaXN0YWZmLWFscGhhL3NyYy9saWIvYXBwL2xpYnJhcmllcy9uYXZpZ2F0b3IvbmF2aWdhdG9yL2l0ZW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxLQUFLLEVBQXFCLFNBQVMsRUFBRSxpQkFBaUIsRUFBd0UsTUFBTSxlQUFlLENBQUM7QUFFcEwsT0FBTyxFQUFVLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBTXZELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7Ozs7Ozs7QUFjbkUsTUFBTSxPQUFPLGFBQWE7SUFxQnhCLFlBQ1UsTUFBYyxFQUNmLGdCQUFrQyxFQUNqQyxHQUF5QixFQUMxQixhQUE0QixFQUMzQixXQUF3QjtRQUp4QixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2YscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNqQyxRQUFHLEdBQUgsR0FBRyxDQUFzQjtRQUMxQixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUMzQixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQWZsQyxnQkFBVyxHQUFZLEtBQUssQ0FBQztRQUU3QixhQUFRLEdBQVksS0FBSyxDQUFDO1FBRTFCLGtCQUFhLEdBQW1CLEVBQUUsQ0FBQztRQUduQyxpQkFBWSxHQUFXLEVBQUUsQ0FBQztRQVV4QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFD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QUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQTtJQUM5QyxDQUFDOzhHQTFMVSxhQUFhO2tHQUFiLGFBQWEsMGRDdkIxQixxN0dBb0VLLHE1YkQ3Q1EsYUFBYSwrRUFSdEIsWUFBWSx1TkFDWixZQUFZLGdSQUNaLGdCQUFnQjs7MkZBTVAsYUFBYTtrQkFaekIsU0FBUzsrQkFDRSxVQUFVLGNBQ1IsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osWUFBWTt3QkFDWixnQkFBZ0I7cUJBQ2pCLGlCQUdjLGlCQUFpQixDQUFDLElBQUk7bU1BSTVCLElBQUk7c0JBQVosS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ1csRUFBRTtzQkFBbEIsU0FBUzt1QkFBQyxJQUFJO2dCQUNRLFFBQVE7c0JBQTlCLFNBQVM7dUJBQUMsVUFBVTtnQkFDRixJQUFJO3NCQUF0QixTQUFTO3VCQUFDLE1BQU07Z0JBQ00sUUFBUTtzQkFBOUIsU0FBUzt1QkFBQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbnB1dCwgT25Jbml0LCBPbkRlc3Ryb3ksIFZpZXdDaGlsZCwgVmlld0VuY2Fwc3VsYXRpb24sIENoYW5nZURldGVjdG9yUmVmLCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBSb3V0ZXIsIFJvdXRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IE5hdmlnYXRvclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9uYXZpZ2F0b3Iuc2VydmljZSc7XHJcbmltcG9ydCB7IE11bHRpTGFuZ3VhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbXVsdGktbGFuZ3VhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IExheW91dFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9sYXlvdXQuc2VydmljZSc7XHJcbmltcG9ydCB7IElOYXZpZ2F0b3JJdGVtIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJmYWNlcy9JTmF2aWdhdG9ySXRlbSc7XHJcbmltcG9ydCB7IE1lbnVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbWVudS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgVG9vbHRpcERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL3Rvb2x0aXAvdG9vbHRpcC5kaXJlY3RpdmUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtaXRlbScsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBSb3V0ZXJNb2R1bGUsXHJcbiAgICBUb29sdGlwRGlyZWN0aXZlLFxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2l0ZW0uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2l0ZW0uY29tcG9uZW50LnNjc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJdGVtQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkluaXQsIE9uRGVzdHJveSB7XHJcblxyXG4gIEBJbnB1dCgpIGl0ZW0hOiBJTmF2aWdhdG9ySXRlbTtcclxuICBASW5wdXQoKSBsZXZlbCE6IG51bWJlcjtcclxuICBAVmlld0NoaWxkKCdtZScpIG1lITogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdjaGlsZHJlbicpIGNoaWxkcmVuITogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdsaW5rJykgbGluayE6IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZCgnc3ViQXJyb3cnKSBzdWJBcnJvdyE6IEVsZW1lbnRSZWY7XHJcblxyXG4gIGNhcHRpb24hOiBzdHJpbmc7XHJcblxyXG4gIGhhc0NoaWxkcmVuOiBib29sZWFuID0gZmFsc2U7XHJcbiAgbWFpbldpbmRvd1N0YXRlITogc3RyaW5nO1xyXG4gIGV4cGFuZGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgbGVmdGJhclJlZHVjZWQhOiBib29sZWFuO1xyXG4gIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XHJcblxyXG4gIHdpZGVNb2RlITogYm9vbGVhbjtcclxuICBjdXJyZW50V2lkdGg6IG51bWJlciA9IDY2O1xyXG4gIGFjdGl2ZSE6IGJvb2xlYW47XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcclxuICAgIHB1YmxpYyBuYXZpZ2F0b3JTZXJ2aWNlOiBOYXZpZ2F0b3JTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBtbHM6IE11bHRpTGFuZ3VhZ2VTZXJ2aWNlLFxyXG4gICAgcHVibGljIGxheW91dFNlcnZpY2U6IExheW91dFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG1lbnVTZXJ2aWNlOiBNZW51U2VydmljZSxcclxuICApIHtcclxuICAgIHRoaXMubmF2aWdhdG9yU2VydmljZS53aWRlTW9kZSQuc3Vic2NyaWJlKHggPT4gdGhpcy53aWRlTW9kZSA9IHgpO1xyXG4gICAgdGhpcy5sYXlvdXRTZXJ2aWNlLmxlZnRCYXJDdXJyZW50V2lkdGgkLnN1YnNjcmliZSh4ID0+IHtcclxuICAgICAgdGhpcy5jdXJyZW50V2lkdGggPSB4O1xyXG4gICAgICB0aGlzLm1lPy5uYXRpdmVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLWxlZnQtYmFyLWN1cnJlbnQtd2lkdGgnLCB4ICsgJ3B4JylcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKGNoYW5nZXNbJ2l0ZW0nXSkge1xyXG4gICAgICBjb25zdCBpdCA9IGNoYW5nZXNbJ2l0ZW0nXTtcclxuICAgICAgaWYgKGl0LmN1cnJlbnRWYWx1ZS5pZCA9PT0gMzgyKSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJpdGVtIDM4MiBjaGFuZ2VkLCBhY3RpdmUgPSBcIiwgdGhpcy5hY3RpdmUpXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgaWYgKHRoaXMuaXRlbSkge1xyXG4gICAgICBpZiAodGhpcy5pdGVtLnRyZWUkQ2hpbGRyZW4ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHRoaXMuaGFzQ2hpbGRyZW4gPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5uYXZpZ2F0b3JTZXJ2aWNlLmFjdGl2ZUl0ZW1zJC5zdWJzY3JpYmUoYyA9PiB7XHJcbiAgICAgIGlmICghYykgcmV0dXJuO1xyXG4gICAgICB0aGlzLmFjdGl2ZSA9ICEhYy5maWx0ZXIoeCA9PiB4LmlkID09PSB0aGlzLml0ZW0/LmlkKS5sZW5ndGhcclxuICAgICAgaWYgKCEhdGhpcy5hY3RpdmUpIHtcclxuICAgICAgICB0aGlzLm1lPy5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5hZGQoXCJhY3RpdmVcIilcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLm1lPy5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoXCJhY3RpdmVcIilcclxuICAgICAgfVxyXG4gICAgfSlcclxuXHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgdGhpcy5tbHMubGFuZyQuc3Vic2NyaWJlKF8gPT4ge1xyXG4gICAgICAgIHRoaXMuY2FwdGlvbiA9IHRoaXMubWxzLnRyYW5zKHRoaXMuaXRlbSEuY29kZSlcclxuICAgICAgfSlcclxuICAgIClcclxuXHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgdGhpcy5sYXlvdXRTZXJ2aWNlLmxlZnRiYXJSZWR1Y2VkJC5zdWJzY3JpYmUoeCA9PiB0aGlzLmxlZnRiYXJSZWR1Y2VkID0geClcclxuICAgIClcclxuICB9XHJcblxyXG4gIHN1YkFycm93Q2xpY2tlZChldmVudDogRXZlbnQsIGl0ZW06IElOYXZpZ2F0b3JJdGVtKSB7XHJcblxyXG4gICAgY29uc29sZS5sb2coXCJzdWJBcnJvd0NsaWNrZWQgdHJpZ2dlcmVkXCIpXHJcblxyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcblxyXG4gICAgaWYgKCF0aGlzLndpZGVNb2RlKSB7XHJcbiAgICAgIGxldCBuZXdBY3RpdmVJdGVtcyA9IHRoaXMubmF2aWdhdG9yU2VydmljZS5hY3RpdmVJdGVtcyQudmFsdWU7XHJcbiAgICAgIGNvbnNvbGUubG9nKFwic3ViQXJyb3dDbGlja2VkIG5ld0FjdGl2ZUl0ZW1zIGJlNCBmaWx0ZXJpbmdcIiwgbmV3QWN0aXZlSXRlbXMpXHJcbiAgICAgIG5ld0FjdGl2ZUl0ZW1zID0gbmV3QWN0aXZlSXRlbXMuZmlsdGVyKHggPT4geC50cmVlJFRpZXIhIDwgaXRlbS50cmVlJFRpZXIhKTtcclxuICAgICAgbmV3QWN0aXZlSXRlbXMucHVzaChpdGVtKTtcclxuICAgICAgY29uc29sZS5sb2coXCJzdWJBcnJvd0NsaWNrZWQgbmV3QWN0aXZlSXRlbXNcIiwgbmV3QWN0aXZlSXRlbXMpXHJcbiAgICAgIHRoaXMubmF2aWdhdG9yU2VydmljZS5hY3RpdmVJdGVtcyQubmV4dChuZXdBY3RpdmVJdGVtcyk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIGlmICh0aGlzLmNoaWxkcmVuLm5hdGl2ZUVsZW1lbnQuY2xhc3NOYW1lID09PSAnY2hpbGQgc3ViLW1lbnUnKSB7XHJcbiAgICAgIHRoaXMuY2hpbGRyZW4ubmF0aXZlRWxlbWVudC5jbGFzc05hbWUgPSAnY2hpbGQgc3ViLW1lbnUgZXhwYW5kZWQnO1xyXG4gICAgICB0aGlzLnN1YkFycm93Lm5hdGl2ZUVsZW1lbnQuY2xhc3NOYW1lID0gdGhpcy5zdWJBcnJvdy5uYXRpdmVFbGVtZW50LmNsYXNzTmFtZS5yZXBsYWNlKCcgcGx1cycsICcnKSArICcgbWludXMnO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmNoaWxkcmVuLm5hdGl2ZUVsZW1lbnQuY2xhc3NOYW1lID09PSAnY2hpbGQgc3ViLW1lbnUgZXhwYW5kZWQnKSB7XHJcbiAgICAgIHRoaXMuY2hpbGRyZW4ubmF0aXZlRWxlbWVudC5jbGFzc05hbWUgPSAnY2hpbGQgc3ViLW1lbnUnO1xyXG4gICAgICB0aGlzLnN1YkFycm93Lm5hdGl2ZUVsZW1lbnQuY2xhc3NOYW1lID0gdGhpcy5zdWJBcnJvdy5uYXRpdmVFbGVtZW50LmNsYXNzTmFtZS5yZXBsYWNlKCcgbWludXMnLCAnJykgKyAnIHBsdXMnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25DbGljayhldmVudDogYW55LCBpdGVtOiBJTmF2aWdhdG9ySXRlbSkge1xyXG4gICAgY29uc29sZS5sb2coXCJvbkNsaWNrIHRyaWdnZXJlZFwiKVxyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIC8vIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XHJcblxyXG4gICAgaWYgKCF0aGlzLndpZGVNb2RlKSB7XHJcbiAgICAgIGxldCBuZXdBY3RpdmVJdGVtcyA9IHRoaXMubmF2aWdhdG9yU2VydmljZS5hY3RpdmVJdGVtcyQudmFsdWU7XHJcbiAgICAgIG5ld0FjdGl2ZUl0ZW1zID0gbmV3QWN0aXZlSXRlbXMuZmlsdGVyKHggPT4geC50cmVlJFRpZXIhIDwgaXRlbS50cmVlJFRpZXIhKTtcclxuICAgICAgbmV3QWN0aXZlSXRlbXMucHVzaChpdGVtKTtcclxuICAgICAgdGhpcy5uYXZpZ2F0b3JTZXJ2aWNlLmFjdGl2ZUl0ZW1zJC5uZXh0KG5ld0FjdGl2ZUl0ZW1zKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoISF0aGlzLndpZGVNb2RlICYmIHRoaXMuaXRlbSEudHJlZSRTZWxlY3RlZCA9PSB0cnVlICYmICEhdGhpcy5pdGVtIS50cmVlJFBhcmVudCAmJiAodGhpcy5pdGVtIS50cmVlJFRpZXIgIT0gMiB8fCB0aGlzLml0ZW0hLnRyZWUkVGllciA9PSAyICYmIHRoaXMuaXRlbSEudHJlZSRDaGlsZHJlbi5sZW5ndGggPT0gMCkpIHtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMud2lkZU1vZGUpIHtcclxuICAgICAgaWYgKHRoaXMuY2hpbGRyZW4pIHtcclxuICAgICAgICBjb25zdCBlbCA9IHRoaXMuY2hpbGRyZW4ubmF0aXZlRWxlbWVudDtcclxuICAgICAgICBjb25zdCByZWN0ID0gZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcbiAgICAgICAgY29uc3QgaGVpZ2h0ID0gcmVjdC5oZWlnaHQ7XHJcbiAgICAgICAgaWYgKGhlaWdodCA9PT0gMCkge1xyXG4gICAgICAgICAgaXRlbS50cmVlJFNlbGVjdGVkID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBpZiAoaXRlbS50cmVlJFRpZXIgPT0gMSB8fCBpdGVtLnRyZWUkVGllciA9PSAyKSB7XHJcbiAgICAgICAgICAgIGl0ZW0udHJlZSRTZWxlY3RlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLm1lLm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tY2hpbGRyZW4taGVpZ2h0JywgaGVpZ2h0ICsgJ3B4JylcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpdGVtLnRyZWUkU2VsZWN0ZWQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMubWVudVNlcnZpY2UubmF2aWdhdGlvbiQudmFsdWUubWFwKHggPT4ge1xyXG4gICAgICAgICAgaWYgKHgudHJlZSRDaGlsZHJlbikge1xyXG4gICAgICAgICAgICB4LnRyZWUkQ2hpbGRyZW4ubWFwKCh5OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICBpZiAoeS50cmVlJENoaWxkcmVuKSB7XHJcbiAgICAgICAgICAgICAgICB5LnRyZWUkQ2hpbGRyZW4ubWFwKCh6OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgaWYgKHogIT0gaXRlbSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHoudHJlZSRTZWxlY3RlZCA9IGZhbHNlXHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgfSBlbHNlIGlmICh5ICE9IGl0ZW0pIHtcclxuICAgICAgICAgICAgICAgIHkudHJlZSRTZWxlY3RlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICB9XHJcblxyXG4gICAgfVxyXG4gICAgXHJcbiAgICB0aGlzLm5hdmlnYXRvclNlcnZpY2UuY2xpY2tlZEl0ZW0kLm5leHQoaXRlbSlcclxuXHJcbiAgICBpZiAoISFpdGVtLnRyZWUkUGFyZW50KSB7XHJcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdtZW51Q3VycmVudENsaWNrZWQnLCBKU09OLnN0cmluZ2lmeShpdGVtKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbk1vZHVsZUljb25DbGljayhldmVudDogYW55LCBpdGVtOiBJTmF2aWdhdG9ySXRlbSkge1xyXG4gICAgY29uc29sZS5sb2coXCJvbk1vZHVsZUljb25DbGljayB0cmlnZ2VyZWRcIilcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG5cclxuICAgIGlmICghdGhpcy5uYXZpZ2F0b3JTZXJ2aWNlLmNsaWNrZWRJdGVtJC52YWx1ZSkge1xyXG4gICAgICB0aGlzLm5hdmlnYXRvclNlcnZpY2UuY2xpY2tlZEl0ZW0kLm5leHQoaXRlbSk7XHJcbiAgICAgIHRoaXMubmF2aWdhdG9yU2VydmljZS5hY3RpdmVJdGVtcyQubmV4dChbaXRlbV0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMud2lkZU1vZGUpIHtcclxuICAgICAgICB0aGlzLm5hdmlnYXRvclNlcnZpY2UuY2xpY2tlZEl0ZW0kLm5leHQoaXRlbSk7XHJcbiAgICAgICAgdGhpcy5uYXZpZ2F0b3JTZXJ2aWNlLmFjdGl2ZUl0ZW1zJC5uZXh0KFtpdGVtXSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKHRoaXMubmF2aWdhdG9yU2VydmljZS5jbGlja2VkSXRlbSQudmFsdWUuaWQgIT09IGl0ZW0uaWQpIHtcclxuICAgICAgICAgIHRoaXMubmF2aWdhdG9yU2VydmljZS5jbGlja2VkSXRlbSQubmV4dChpdGVtKTtcclxuICAgICAgICAgIHRoaXMubmF2aWdhdG9yU2VydmljZS5hY3RpdmVJdGVtcyQubmV4dChbaXRlbV0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLm5hdmlnYXRvclNlcnZpY2UuY2xpY2tlZEl0ZW0kLm5leHQobnVsbCk7XHJcbiAgICAgICAgICB0aGlzLm5hdmlnYXRvclNlcnZpY2UuYWN0aXZlSXRlbXMkLm5leHQoW10pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIGNoZWNrQWN0aXZlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuYWN0aXZlO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMubWFwKHggPT4geC51bnN1YnNjcmliZSgpKVxyXG4gIH1cclxuXHJcbn1cclxuIiwiPGxpICNtZSBbaWRdPVwiJ21haW4tbWVudS0nICsgaXRlbS5pZFwiIGNsYXNzPVwicGFyZW50XCIgW2F0dHIuZGF0YS1sZXZlbF09XCJsZXZlbFwiIFtjbGFzcy5yZWR1Y2VkXT1cImxlZnRiYXJSZWR1Y2VkXCIgXHJcbiAgICBbY2xhc3MuYWN0aXZlXT1cIiF3aWRlTW9kZSAmJiBhY3RpdmVcIlxyXG4gICAgW2NsYXNzLmV4cGFuZGVkXT1cIml0ZW0udHJlZSRFeHBhbmRlZFwiIFxyXG4gICAgW2NsYXNzLmhpZ2hsaWdodGVkXT1cIml0ZW0udHJlZSRIaWdobGlnaHRlZFwiIFxyXG4gICAgW2NsYXNzLmxpLXRoaW4tbW9kZV09XCIhd2lkZU1vZGVcIiBcclxuICAgIFtjbGFzcy5tZW51LWl0ZW1dPVwiIXdpZGVNb2RlXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibWVudS1pdGVtLXdyYXBwZXJcIiBbYXR0ci5kYXRhLWxldmVsXT1cImxldmVsXCIgKGNsaWNrKT1cIm9uQ2xpY2soJGV2ZW50LCBpdGVtKVwiIFtjbGFzcy5tb2R1bGUtdGhpbi1tb2RlXT1cIiF3aWRlTW9kZSAmJiBsZXZlbD09PTFcIiBbY2xhc3MudGhpbi1icmFuY2hdPVwiIXdpZGVNb2RlICYmIGxldmVsID4gMVwiPlxyXG5cclxuICAgICAgICBAaWYgKHdpZGVNb2RlKSB7XHJcbiAgICAgICAgQGlmICghISFsZWZ0YmFyUmVkdWNlZCkge1xyXG4gICAgICAgIEBpZiAoISFoYXNDaGlsZHJlbikge1xyXG4gICAgICAgIEBpZiAoIWl0ZW0udHJlZSRTZWxlY3RlZCkge1xyXG4gICAgICAgIDxpIFthdHRyLmRhdGEtbGV2ZWxdPVwibGV2ZWxcIiBjbGFzcz1cImN1c3RvbS1pY29uLXBhcmVudC1yaWdodFwiPjwvaT5cclxuICAgICAgICB9IEBlbHNlIHtcclxuICAgICAgICA8aSBbYXR0ci5kYXRhLWxldmVsXT1cImxldmVsXCIgY2xhc3M9XCJjdXN0b20taWNvbi1wYXJlbnQtZG93blwiPjwvaT5cclxuICAgICAgICB9XHJcbiAgICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgQGlmIChpdGVtLnRyZWUkU2VsZWN0ZWQgJiYgaXRlbS5jb2RlICE9PSAnTUVOVS5EQVNIQk9BUkQnICYmIGl0ZW0uY29kZSAhPT0gJ01FTlUuSE9NRScpIHtcclxuICAgICAgICA8aSBbYXR0ci5kYXRhLWxldmVsXT1cImxldmVsXCIgY2xhc3M9XCJjdXN0b20taWNvbi1jaGlsZC1yaWdodFwiPjwvaT5cclxuICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIDxpIFthdHRyLmRhdGEtbGV2ZWxdPVwibGV2ZWxcIiBbY2xhc3NdPVwiaXRlbS5pY29uQ2xhc3MgKyAnIG1vZHVsZS1pY29uJ1wiIFthcHBUb29sdGlwXT1cIndpZGVNb2RlID8gY2FwdGlvbiA6IHVuZGVmaW5lZFwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJvbk1vZHVsZUljb25DbGljaygkZXZlbnQsIGl0ZW0pO2ZhbHNlXCIgKm5nSWY9XCIhIWl0ZW0uaWNvbkNsYXNzXCIgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgbGVmdDogd2lkZU1vZGUgPyAnMjBweCcgOiAndW5zZXQnXHJcbiAgICAgICAgICAgIH1cIj48L2k+XHJcblxyXG4gICAgICAgIEBpZiAoIXdpZGVNb2RlIHx8ICghbGVmdGJhclJlZHVjZWQgJiYgaGFzQ2hpbGRyZW4pKSB7XHJcbiAgICAgICAgPGEgI2xpbmsgW2F0dHIuZGF0YS1sZXZlbF09XCJsZXZlbFwiIGNsYXNzPVwiaGFzLXN1Ym1lbnVcIiBbYXBwVG9vbHRpcF09XCJsZXZlbCA+IDEgPyBjYXB0aW9uIDogdW5kZWZpbmVkXCIgW2NsYXNzLnRoaW4tbW9kZV09XCIhd2lkZU1vZGVcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAoY2xpY2spPVwic3ViQXJyb3dDbGlja2VkKCRldmVudCwgaXRlbSk7ZmFsc2VcIj4gPCEtLWZhbHNlIGlzIGltcG9ydGFudCBoZXJlLS0+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiAjc3ViQXJyb3cgKm5nSWY9XCIoISFpdGVtLnBpY3R1cmVCYXNlNjQgfHwgISFpdGVtLnBpY3R1cmVVcmkpXCJcclxuICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiJ2ltZy1zcGFuIHBsdXMgbGV2ZWwnICsgbGV2ZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwiaXRlbS5waWN0dXJlQmFzZTY0IHx8IGl0ZW0ucGljdHVyZVVyaVwiICpuZ0lmPVwiISFpdGVtLnBpY3R1cmVCYXNlNjRcIj5cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuICNzdWJBcnJvdyAqbmdJZj1cIiEhIWl0ZW0ucGljdHVyZUJhc2U2NCAmJiAhISFpdGVtLnBpY3R1cmVVcmlcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCIncGx1cyBsZXZlbCcgKyBsZXZlbFwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICA8aW1nICpuZ0lmPVwiKCEhaXRlbS5waWN0dXJlQmFzZTY0IHx8ICEhaXRlbS5waWN0dXJlVXJpKVwiIFtzcmNdPVwiaXRlbS5waWN0dXJlQmFzZTY0IHx8IGl0ZW0ucGljdHVyZVVyaVwiPlxyXG5cclxuICAgICAgICAgICAge3sgY2FwdGlvbiB9fVxyXG5cclxuICAgICAgICA8L2E+XHJcbiAgICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgPGEgW2F0dHIuZGF0YS1sZXZlbF09XCJsZXZlbFwiIFtyb3V0ZXJMaW5rXT1cIml0ZW0udXJsXCIgKGNsaWNrKT1cIm9uQ2xpY2soJGV2ZW50LCBpdGVtKVwiIFtjbGFzcy50aGluLW1vZGVdPVwiIXdpZGVNb2RlXCJcclxuICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwid2lkZU1vZGUgJiYgY2FwdGlvblwiPlxyXG4gICAgICAgICAgICB7eyBjYXB0aW9uIH19XHJcbiAgICAgICAgPC9hPlxyXG4gICAgICAgIH1cclxuXHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICBAaWYgKCEhd2lkZU1vZGUgJiYgISFoYXNDaGlsZHJlbiAmJiAhIWl0ZW0udHJlZSRDaGlsZHJlbiEubGVuZ3RoICYmICEhIWxlZnRiYXJSZWR1Y2VkKSB7XHJcbiAgICA8dWwgI2NoaWxkcmVuIFtjbGFzcy5leHBhbmRlZF09XCIhd2lkZU1vZGUgfHwgaXRlbS50cmVlJEV4cGFuZGVkXCJcclxuICAgICAgICBbY2xhc3MudWwtdGhpbi1tb2RlXT1cIiF3aWRlTW9kZVwiIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgcGFkZGluZzogMCxcclxuICAgICAgICAgICAgd2lkdGg6ICEhd2lkZU1vZGUgPyAobGF5b3V0U2VydmljZS5sZWZ0QmFyQ3VycmVudFdpZHRoJC52YWx1ZSAtIGxheW91dFNlcnZpY2UuYmFzaWNTcGFjaW5nIC0gbGF5b3V0U2VydmljZS5zY3JvbGxCYXJXaWR0aCArIDUgKyAncHgnKSA6ICggbGF5b3V0U2VydmljZS5sZWZ0QmFyV2lkZVdpZHRoJC52YWx1ZSArICdweCcgKSxcclxuICAgICAgICB9XCIgW2NsYXNzLnN1Ym1lbnVdPVwiIXdpZGVNb2RlXCI+XHJcbiAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgQGZvciAoY2hpbGQgb2YgaXRlbS50cmVlJENoaWxkcmVuOyB0cmFjayAkaW5kZXgpIHtcclxuICAgICAgICAgICAgPGFwcC1pdGVtIFtpdGVtXT1cImNoaWxkXCIgW2xldmVsXT1cImxldmVsKzFcIiAoY2xpY2tlZCk9XCJvbkNsaWNrKCRldmVudCwgY2hpbGQpXCI+PC9hcHAtaXRlbT5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC91bD5cclxuICAgIH1cclxuXHJcbjwvbGk+Il19
190
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtaGlzdGFmZi1hbHBoYS9zcmMvbGliL2FwcC9saWJyYXJpZXMvbmF2aWdhdG9yL25hdmlnYXRvci9pdGVtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1oaXN0YWZmLWFscGhhL3NyYy9saWIvYXBwL2xpYnJhcmllcy9uYXZpZ2F0b3IvbmF2aWdhdG9yL2l0ZW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxLQUFLLEVBQXFCLFNBQVMsRUFBRSxpQkFBaUIsRUFBd0UsTUFBTSxlQUFlLENBQUM7QUFFcEwsT0FBTyxFQUFVLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBTXZELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7Ozs7Ozs7QUFjbkUsTUFBTSxPQUFPLGFBQWE7SUFxQnhCLFlBQ1UsTUFBYyxFQUNmLGdCQUFrQyxFQUNqQyxHQUF5QixFQUMxQixhQUE0QixFQUMzQixXQUF3QjtRQUp4QixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2YscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNqQyxRQUFHLEdBQUgsR0FBRyxDQUFzQjtRQUMxQixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUMzQixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQWZsQyxnQkFBVyxHQUFZLEtBQUssQ0FBQztRQUU3QixhQUFRLEdBQVksS0FBSyxDQUFDO1FBRTFCLGtCQUFhLEdBQW1CLEVBQUUsQ0FBQztRQUduQyxpQkFBWSxHQUFXLEVBQUUsQ0FBQztRQVV4QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFD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QUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQTtJQUM5QyxDQUFDOzhHQTFMVSxhQUFhO2tHQUFiLGFBQWEsMGRDdkIxQix1aEhBc0VLLHE1YkQvQ1EsYUFBYSwrRUFSdEIsWUFBWSx1TkFDWixZQUFZLGdSQUNaLGdCQUFnQjs7MkZBTVAsYUFBYTtrQkFaekIsU0FBUzsrQkFDRSxVQUFVLGNBQ1IsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osWUFBWTt3QkFDWixnQkFBZ0I7cUJBQ2pCLGlCQUdjLGlCQUFpQixDQUFDLElBQUk7bU1BSTVCLElBQUk7c0JBQVosS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ1csRUFBRTtzQkFBbEIsU0FBUzt1QkFBQyxJQUFJO2dCQUNRLFFBQVE7c0JBQTlCLFNBQVM7dUJBQUMsVUFBVTtnQkFDRixJQUFJO3NCQUF0QixTQUFTO3VCQUFDLE1BQU07Z0JBQ00sUUFBUTtzQkFBOUIsU0FBUzt1QkFBQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbnB1dCwgT25Jbml0LCBPbkRlc3Ryb3ksIFZpZXdDaGlsZCwgVmlld0VuY2Fwc3VsYXRpb24sIENoYW5nZURldGVjdG9yUmVmLCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBSb3V0ZXIsIFJvdXRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IE5hdmlnYXRvclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9uYXZpZ2F0b3Iuc2VydmljZSc7XHJcbmltcG9ydCB7IE11bHRpTGFuZ3VhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbXVsdGktbGFuZ3VhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IExheW91dFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9sYXlvdXQuc2VydmljZSc7XHJcbmltcG9ydCB7IElOYXZpZ2F0b3JJdGVtIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJmYWNlcy9JTmF2aWdhdG9ySXRlbSc7XHJcbmltcG9ydCB7IE1lbnVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbWVudS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgVG9vbHRpcERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL3Rvb2x0aXAvdG9vbHRpcC5kaXJlY3RpdmUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtaXRlbScsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBSb3V0ZXJNb2R1bGUsXHJcbiAgICBUb29sdGlwRGlyZWN0aXZlLFxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2l0ZW0uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2l0ZW0uY29tcG9uZW50LnNjc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJdGVtQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkluaXQsIE9uRGVzdHJveSB7XHJcblxyXG4gIEBJbnB1dCgpIGl0ZW0hOiBJTmF2aWdhdG9ySXRlbTtcclxuICBASW5wdXQoKSBsZXZlbCE6IG51bWJlcjtcclxuICBAVmlld0NoaWxkKCdtZScpIG1lITogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdjaGlsZHJlbicpIGNoaWxkcmVuITogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdsaW5rJykgbGluayE6IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZCgnc3ViQXJyb3cnKSBzdWJBcnJvdyE6IEVsZW1lbnRSZWY7XHJcblxyXG4gIGNhcHRpb24hOiBzdHJpbmc7XHJcblxyXG4gIGhhc0NoaWxkcmVuOiBib29sZWFuID0gZmFsc2U7XHJcbiAgbWFpbldpbmRvd1N0YXRlITogc3RyaW5nO1xyXG4gIGV4cGFuZGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgbGVmdGJhclJlZHVjZWQhOiBib29sZWFuO1xyXG4gIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XHJcblxyXG4gIHdpZGVNb2RlITogYm9vbGVhbjtcclxuICBjdXJyZW50V2lkdGg6IG51bWJlciA9IDY2O1xyXG4gIGFjdGl2ZSE6IGJvb2xlYW47XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcclxuICAgIHB1YmxpYyBuYXZpZ2F0b3JTZXJ2aWNlOiBOYXZpZ2F0b3JTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBtbHM6IE11bHRpTGFuZ3VhZ2VTZXJ2aWNlLFxyXG4gICAgcHVibGljIGxheW91dFNlcnZpY2U6IExheW91dFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG1lbnVTZXJ2aWNlOiBNZW51U2VydmljZSxcclxuICApIHtcclxuICAgIHRoaXMubmF2aWdhdG9yU2VydmljZS53aWRlTW9kZSQuc3Vic2NyaWJlKHggPT4gdGhpcy53aWRlTW9kZSA9IHgpO1xyXG4gICAgdGhpcy5sYXlvdXRTZXJ2aWNlLmxlZnRCYXJDdXJyZW50V2lkdGgkLnN1YnNjcmliZSh4ID0+IHtcclxuICAgICAgdGhpcy5jdXJyZW50V2lkdGggPSB4O1xyXG4gICAgICB0aGlzLm1lPy5uYXRpdmVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLWxlZnQtYmFyLWN1cnJlbnQtd2lkdGgnLCB4ICsgJ3B4JylcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKGNoYW5nZXNbJ2l0ZW0nXSkge1xyXG4gICAgICBjb25zdCBpdCA9IGNoYW5nZXNbJ2l0ZW0nXTtcclxuICAgICAgaWYgKGl0LmN1cnJlbnRWYWx1ZS5pZCA9PT0gMzgyKSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJpdGVtIDM4MiBjaGFuZ2VkLCBhY3RpdmUgPSBcIiwgdGhpcy5hY3RpdmUpXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgaWYgKHRoaXMuaXRlbSkge1xyXG4gICAgICBpZiAodGhpcy5pdGVtLnRyZWUkQ2hpbGRyZW4ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHRoaXMuaGFzQ2hpbGRyZW4gPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5uYXZpZ2F0b3JTZXJ2aWNlLmFjdGl2ZUl0ZW1zJC5zdWJzY3JpYmUoYyA9PiB7XHJcbiAgICAgIGlmICghYykgcmV0dXJuO1xyXG4gICAgICB0aGlzLmFjdGl2ZSA9ICEhYy5maWx0ZXIoeCA9PiB4LmlkID09PSB0aGlzLml0ZW0/LmlkKS5sZW5ndGhcclxuICAgICAgaWYgKCEhdGhpcy5hY3RpdmUpIHtcclxuICAgICAgICB0aGlzLm1lPy5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5hZGQoXCJhY3RpdmVcIilcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLm1lPy5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoXCJhY3RpdmVcIilcclxuICAgICAgfVxyXG4gICAgfSlcclxuXHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgdGhpcy5tbHMubGFuZyQuc3Vic2NyaWJlKF8gPT4ge1xyXG4gICAgICAgIHRoaXMuY2FwdGlvbiA9IHRoaXMubWxzLnRyYW5zKHRoaXMuaXRlbSEuY29kZSlcclxuICAgICAgfSlcclxuICAgIClcclxuXHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgdGhpcy5sYXlvdXRTZXJ2aWNlLmxlZnRiYXJSZWR1Y2VkJC5zdWJzY3JpYmUoeCA9PiB0aGlzLmxlZnRiYXJSZWR1Y2VkID0geClcclxuICAgIClcclxuICB9XHJcblxyXG4gIHN1YkFycm93Q2xpY2tlZChldmVudDogRXZlbnQsIGl0ZW06IElOYXZpZ2F0b3JJdGVtKSB7XHJcblxyXG4gICAgY29uc29sZS5sb2coXCJzdWJBcnJvd0NsaWNrZWQgdHJpZ2dlcmVkXCIpXHJcblxyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcblxyXG4gICAgaWYgKCF0aGlzLndpZGVNb2RlKSB7XHJcbiAgICAgIGxldCBuZXdBY3RpdmVJdGVtcyA9IHRoaXMubmF2aWdhdG9yU2VydmljZS5hY3RpdmVJdGVtcyQudmFsdWU7XHJcbiAgICAgIGNvbnNvbGUubG9nKFwic3ViQXJyb3dDbGlja2VkIG5ld0FjdGl2ZUl0ZW1zIGJlNCBmaWx0ZXJpbmdcIiwgbmV3QWN0aXZlSXRlbXMpXHJcbiAgICAgIG5ld0FjdGl2ZUl0ZW1zID0gbmV3QWN0aXZlSXRlbXMuZmlsdGVyKHggPT4geC50cmVlJFRpZXIhIDwgaXRlbS50cmVlJFRpZXIhKTtcclxuICAgICAgbmV3QWN0aXZlSXRlbXMucHVzaChpdGVtKTtcclxuICAgICAgY29uc29sZS5sb2coXCJzdWJBcnJvd0NsaWNrZWQgbmV3QWN0aXZlSXRlbXNcIiwgbmV3QWN0aXZlSXRlbXMpXHJcbiAgICAgIHRoaXMubmF2aWdhdG9yU2VydmljZS5hY3RpdmVJdGVtcyQubmV4dChuZXdBY3RpdmVJdGVtcyk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIGlmICh0aGlzLmNoaWxkcmVuLm5hdGl2ZUVsZW1lbnQuY2xhc3NOYW1lID09PSAnY2hpbGQgc3ViLW1lbnUnKSB7XHJcbiAgICAgIHRoaXMuY2hpbGRyZW4ubmF0aXZlRWxlbWVudC5jbGFzc05hbWUgPSAnY2hpbGQgc3ViLW1lbnUgZXhwYW5kZWQnO1xyXG4gICAgICB0aGlzLnN1YkFycm93Lm5hdGl2ZUVsZW1lbnQuY2xhc3NOYW1lID0gdGhpcy5zdWJBcnJvdy5uYXRpdmVFbGVtZW50LmNsYXNzTmFtZS5yZXBsYWNlKCcgcGx1cycsICcnKSArICcgbWludXMnO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmNoaWxkcmVuLm5hdGl2ZUVsZW1lbnQuY2xhc3NOYW1lID09PSAnY2hpbGQgc3ViLW1lbnUgZXhwYW5kZWQnKSB7XHJcbiAgICAgIHRoaXMuY2hpbGRyZW4ubmF0aXZlRWxlbWVudC5jbGFzc05hbWUgPSAnY2hpbGQgc3ViLW1lbnUnO1xyXG4gICAgICB0aGlzLnN1YkFycm93Lm5hdGl2ZUVsZW1lbnQuY2xhc3NOYW1lID0gdGhpcy5zdWJBcnJvdy5uYXRpdmVFbGVtZW50LmNsYXNzTmFtZS5yZXBsYWNlKCcgbWludXMnLCAnJykgKyAnIHBsdXMnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25DbGljayhldmVudDogYW55LCBpdGVtOiBJTmF2aWdhdG9ySXRlbSkge1xyXG4gICAgY29uc29sZS5sb2coXCJvbkNsaWNrIHRyaWdnZXJlZFwiKVxyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIC8vIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XHJcblxyXG4gICAgaWYgKCF0aGlzLndpZGVNb2RlKSB7XHJcbiAgICAgIGxldCBuZXdBY3RpdmVJdGVtcyA9IHRoaXMubmF2aWdhdG9yU2VydmljZS5hY3RpdmVJdGVtcyQudmFsdWU7XHJcbiAgICAgIG5ld0FjdGl2ZUl0ZW1zID0gbmV3QWN0aXZlSXRlbXMuZmlsdGVyKHggPT4geC50cmVlJFRpZXIhIDwgaXRlbS50cmVlJFRpZXIhKTtcclxuICAgICAgbmV3QWN0aXZlSXRlbXMucHVzaChpdGVtKTtcclxuICAgICAgdGhpcy5uYXZpZ2F0b3JTZXJ2aWNlLmFjdGl2ZUl0ZW1zJC5uZXh0KG5ld0FjdGl2ZUl0ZW1zKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoISF0aGlzLndpZGVNb2RlICYmIHRoaXMuaXRlbSEudHJlZSRTZWxlY3RlZCA9PSB0cnVlICYmICEhdGhpcy5pdGVtIS50cmVlJFBhcmVudCAmJiAodGhpcy5pdGVtIS50cmVlJFRpZXIgIT0gMiB8fCB0aGlzLml0ZW0hLnRyZWUkVGllciA9PSAyICYmIHRoaXMuaXRlbSEudHJlZSRDaGlsZHJlbi5sZW5ndGggPT0gMCkpIHtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMud2lkZU1vZGUpIHtcclxuICAgICAgaWYgKHRoaXMuY2hpbGRyZW4pIHtcclxuICAgICAgICBjb25zdCBlbCA9IHRoaXMuY2hpbGRyZW4ubmF0aXZlRWxlbWVudDtcclxuICAgICAgICBjb25zdCByZWN0ID0gZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcbiAgICAgICAgY29uc3QgaGVpZ2h0ID0gcmVjdC5oZWlnaHQ7XHJcbiAgICAgICAgaWYgKGhlaWdodCA9PT0gMCkge1xyXG4gICAgICAgICAgaXRlbS50cmVlJFNlbGVjdGVkID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBpZiAoaXRlbS50cmVlJFRpZXIgPT0gMSB8fCBpdGVtLnRyZWUkVGllciA9PSAyKSB7XHJcbiAgICAgICAgICAgIGl0ZW0udHJlZSRTZWxlY3RlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLm1lLm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tY2hpbGRyZW4taGVpZ2h0JywgaGVpZ2h0ICsgJ3B4JylcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpdGVtLnRyZWUkU2VsZWN0ZWQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMubWVudVNlcnZpY2UubmF2aWdhdGlvbiQudmFsdWUubWFwKHggPT4ge1xyXG4gICAgICAgICAgaWYgKHgudHJlZSRDaGlsZHJlbikge1xyXG4gICAgICAgICAgICB4LnRyZWUkQ2hpbGRyZW4ubWFwKCh5OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICBpZiAoeS50cmVlJENoaWxkcmVuKSB7XHJcbiAgICAgICAgICAgICAgICB5LnRyZWUkQ2hpbGRyZW4ubWFwKCh6OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgaWYgKHogIT0gaXRlbSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHoudHJlZSRTZWxlY3RlZCA9IGZhbHNlXHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgfSBlbHNlIGlmICh5ICE9IGl0ZW0pIHtcclxuICAgICAgICAgICAgICAgIHkudHJlZSRTZWxlY3RlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICB9XHJcblxyXG4gICAgfVxyXG4gICAgXHJcbiAgICB0aGlzLm5hdmlnYXRvclNlcnZpY2UuY2xpY2tlZEl0ZW0kLm5leHQoaXRlbSlcclxuXHJcbiAgICBpZiAoISFpdGVtLnRyZWUkUGFyZW50KSB7XHJcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdtZW51Q3VycmVudENsaWNrZWQnLCBKU09OLnN0cmluZ2lmeShpdGVtKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbk1vZHVsZUljb25DbGljayhldmVudDogYW55LCBpdGVtOiBJTmF2aWdhdG9ySXRlbSkge1xyXG4gICAgY29uc29sZS5sb2coXCJvbk1vZHVsZUljb25DbGljayB0cmlnZ2VyZWRcIilcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG5cclxuICAgIGlmICghdGhpcy5uYXZpZ2F0b3JTZXJ2aWNlLmNsaWNrZWRJdGVtJC52YWx1ZSkge1xyXG4gICAgICB0aGlzLm5hdmlnYXRvclNlcnZpY2UuY2xpY2tlZEl0ZW0kLm5leHQoaXRlbSk7XHJcbiAgICAgIHRoaXMubmF2aWdhdG9yU2VydmljZS5hY3RpdmVJdGVtcyQubmV4dChbaXRlbV0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMud2lkZU1vZGUpIHtcclxuICAgICAgICB0aGlzLm5hdmlnYXRvclNlcnZpY2UuY2xpY2tlZEl0ZW0kLm5leHQoaXRlbSk7XHJcbiAgICAgICAgdGhpcy5uYXZpZ2F0b3JTZXJ2aWNlLmFjdGl2ZUl0ZW1zJC5uZXh0KFtpdGVtXSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKHRoaXMubmF2aWdhdG9yU2VydmljZS5jbGlja2VkSXRlbSQudmFsdWUuaWQgIT09IGl0ZW0uaWQpIHtcclxuICAgICAgICAgIHRoaXMubmF2aWdhdG9yU2VydmljZS5jbGlja2VkSXRlbSQubmV4dChpdGVtKTtcclxuICAgICAgICAgIHRoaXMubmF2aWdhdG9yU2VydmljZS5hY3RpdmVJdGVtcyQubmV4dChbaXRlbV0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLm5hdmlnYXRvclNlcnZpY2UuY2xpY2tlZEl0ZW0kLm5leHQobnVsbCk7XHJcbiAgICAgICAgICB0aGlzLm5hdmlnYXRvclNlcnZpY2UuYWN0aXZlSXRlbXMkLm5leHQoW10pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIGNoZWNrQWN0aXZlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuYWN0aXZlO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMubWFwKHggPT4geC51bnN1YnNjcmliZSgpKVxyXG4gIH1cclxuXHJcbn1cclxuIiwiPGxpICNtZSBbaWRdPVwiJ21haW4tbWVudS0nICsgaXRlbS5pZFwiIGNsYXNzPVwicGFyZW50XCIgW2F0dHIuZGF0YS1sZXZlbF09XCJsZXZlbFwiIFtjbGFzcy5yZWR1Y2VkXT1cImxlZnRiYXJSZWR1Y2VkXCIgXHJcbiAgICBbY2xhc3MuYWN0aXZlXT1cIiF3aWRlTW9kZSAmJiBhY3RpdmVcIlxyXG4gICAgW2NsYXNzLmV4cGFuZGVkXT1cIml0ZW0udHJlZSRFeHBhbmRlZFwiIFxyXG4gICAgW2NsYXNzLmhpZ2hsaWdodGVkXT1cIml0ZW0udHJlZSRIaWdobGlnaHRlZFwiIFxyXG4gICAgW2NsYXNzLmxpLXRoaW4tbW9kZV09XCIhd2lkZU1vZGVcIiBcclxuICAgIFtjbGFzcy5tZW51LWl0ZW1dPVwiIXdpZGVNb2RlXCJcclxuICAgIFthcHBUb29sdGlwXT1cImxldmVsPT09MSAmJiAhYWN0aXZlID8gY2FwdGlvbiA6IHVuZGVmaW5lZFwiIFtwb3NpdGlvbl09XCIncmlnaHQnXCJcclxuICAgID5cclxuICAgIDxkaXYgY2xhc3M9XCJtZW51LWl0ZW0td3JhcHBlclwiIFthdHRyLmRhdGEtbGV2ZWxdPVwibGV2ZWxcIiAoY2xpY2spPVwib25DbGljaygkZXZlbnQsIGl0ZW0pXCIgW2NsYXNzLm1vZHVsZS10aGluLW1vZGVdPVwiIXdpZGVNb2RlICYmIGxldmVsPT09MVwiIFtjbGFzcy50aGluLWJyYW5jaF09XCIhd2lkZU1vZGUgJiYgbGV2ZWwgPiAxXCI+XHJcblxyXG4gICAgICAgIEBpZiAod2lkZU1vZGUpIHtcclxuICAgICAgICBAaWYgKCEhIWxlZnRiYXJSZWR1Y2VkKSB7XHJcbiAgICAgICAgQGlmICghIWhhc0NoaWxkcmVuKSB7XHJcbiAgICAgICAgQGlmICghaXRlbS50cmVlJFNlbGVjdGVkKSB7XHJcbiAgICAgICAgPGkgW2F0dHIuZGF0YS1sZXZlbF09XCJsZXZlbFwiIGNsYXNzPVwiY3VzdG9tLWljb24tcGFyZW50LXJpZ2h0XCI+PC9pPlxyXG4gICAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgIDxpIFthdHRyLmRhdGEtbGV2ZWxdPVwibGV2ZWxcIiBjbGFzcz1cImN1c3RvbS1pY29uLXBhcmVudC1kb3duXCI+PC9pPlxyXG4gICAgICAgIH1cclxuICAgICAgICB9IEBlbHNlIHtcclxuICAgICAgICBAaWYgKGl0ZW0udHJlZSRTZWxlY3RlZCAmJiBpdGVtLmNvZGUgIT09ICdNRU5VLkRBU0hCT0FSRCcgJiYgaXRlbS5jb2RlICE9PSAnTUVOVS5IT01FJykge1xyXG4gICAgICAgIDxpIFthdHRyLmRhdGEtbGV2ZWxdPVwibGV2ZWxcIiBjbGFzcz1cImN1c3RvbS1pY29uLWNoaWxkLXJpZ2h0XCI+PC9pPlxyXG4gICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgPGkgW2F0dHIuZGF0YS1sZXZlbF09XCJsZXZlbFwiIFtjbGFzc109XCJpdGVtLmljb25DbGFzcyArICcgbW9kdWxlLWljb24nXCIgW2FwcFRvb2x0aXBdPVwid2lkZU1vZGUgPyBjYXB0aW9uIDogdW5kZWZpbmVkXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uTW9kdWxlSWNvbkNsaWNrKCRldmVudCwgaXRlbSk7ZmFsc2VcIiAqbmdJZj1cIiEhaXRlbS5pY29uQ2xhc3NcIiBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICBsZWZ0OiB3aWRlTW9kZSA/ICcyMHB4JyA6ICd1bnNldCdcclxuICAgICAgICAgICAgfVwiPjwvaT5cclxuXHJcbiAgICAgICAgQGlmICghd2lkZU1vZGUgfHwgKCFsZWZ0YmFyUmVkdWNlZCAmJiBoYXNDaGlsZHJlbikpIHtcclxuICAgICAgICA8YSAjbGluayBbYXR0ci5kYXRhLWxldmVsXT1cImxldmVsXCIgY2xhc3M9XCJoYXMtc3VibWVudVwiIFthcHBUb29sdGlwXT1cImxldmVsID4gMSA/IGNhcHRpb24gOiB1bmRlZmluZWRcIiBbY2xhc3MudGhpbi1tb2RlXT1cIiF3aWRlTW9kZVwiPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyIChjbGljayk9XCJzdWJBcnJvd0NsaWNrZWQoJGV2ZW50LCBpdGVtKTtmYWxzZVwiPiA8IS0tZmFsc2UgaXMgaW1wb3J0YW50IGhlcmUtLT5cclxuICAgICAgICAgICAgICAgIDxzcGFuICNzdWJBcnJvdyAqbmdJZj1cIighIWl0ZW0ucGljdHVyZUJhc2U2NCB8fCAhIWl0ZW0ucGljdHVyZVVyaSlcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCInaW1nLXNwYW4gcGx1cyBsZXZlbCcgKyBsZXZlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJpdGVtLnBpY3R1cmVCYXNlNjQgfHwgaXRlbS5waWN0dXJlVXJpXCIgKm5nSWY9XCIhIWl0ZW0ucGljdHVyZUJhc2U2NFwiPlxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gI3N1YkFycm93ICpuZ0lmPVwiISEhaXRlbS5waWN0dXJlQmFzZTY0ICYmICEhIWl0ZW0ucGljdHVyZVVyaVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cIidwbHVzIGxldmVsJyArIGxldmVsXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgIDxpbWcgKm5nSWY9XCIoISFpdGVtLnBpY3R1cmVCYXNlNjQgfHwgISFpdGVtLnBpY3R1cmVVcmkpXCIgW3NyY109XCJpdGVtLnBpY3R1cmVCYXNlNjQgfHwgaXRlbS5waWN0dXJlVXJpXCI+XHJcblxyXG4gICAgICAgICAgICB7eyBjYXB0aW9uIH19XHJcblxyXG4gICAgICAgIDwvYT5cclxuICAgICAgICB9IEBlbHNlIHtcclxuICAgICAgICA8YSBbYXR0ci5kYXRhLWxldmVsXT1cImxldmVsXCIgW3JvdXRlckxpbmtdPVwiaXRlbS51cmxcIiAoY2xpY2spPVwib25DbGljaygkZXZlbnQsIGl0ZW0pXCIgW2NsYXNzLnRoaW4tbW9kZV09XCIhd2lkZU1vZGVcIlxyXG4gICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJ3aWRlTW9kZSAmJiBjYXB0aW9uXCI+XHJcbiAgICAgICAgICAgIHt7IGNhcHRpb24gfX1cclxuICAgICAgICA8L2E+XHJcbiAgICAgICAgfVxyXG5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIEBpZiAoISF3aWRlTW9kZSAmJiAhIWhhc0NoaWxkcmVuICYmICEhaXRlbS50cmVlJENoaWxkcmVuIS5sZW5ndGggJiYgISEhbGVmdGJhclJlZHVjZWQpIHtcclxuICAgIDx1bCAjY2hpbGRyZW4gW2NsYXNzLmV4cGFuZGVkXT1cIiF3aWRlTW9kZSB8fCBpdGVtLnRyZWUkRXhwYW5kZWRcIlxyXG4gICAgICAgIFtjbGFzcy51bC10aGluLW1vZGVdPVwiIXdpZGVNb2RlXCIgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICBwYWRkaW5nOiAwLFxyXG4gICAgICAgICAgICB3aWR0aDogISF3aWRlTW9kZSA/IChsYXlvdXRTZXJ2aWNlLmxlZnRCYXJDdXJyZW50V2lkdGgkLnZhbHVlIC0gbGF5b3V0U2VydmljZS5iYXNpY1NwYWNpbmcgLSBsYXlvdXRTZXJ2aWNlLnNjcm9sbEJhcldpZHRoICsgNSArICdweCcpIDogKCBsYXlvdXRTZXJ2aWNlLmxlZnRCYXJXaWRlV2lkdGgkLnZhbHVlICsgJ3B4JyApLFxyXG4gICAgICAgIH1cIiBbY2xhc3Muc3VibWVudV09XCIhd2lkZU1vZGVcIj5cclxuICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICBAZm9yIChjaGlsZCBvZiBpdGVtLnRyZWUkQ2hpbGRyZW47IHRyYWNrICRpbmRleCkge1xyXG4gICAgICAgICAgICA8YXBwLWl0ZW0gW2l0ZW1dPVwiY2hpbGRcIiBbbGV2ZWxdPVwibGV2ZWwrMVwiIChjbGlja2VkKT1cIm9uQ2xpY2soJGV2ZW50LCBjaGlsZClcIj48L2FwcC1pdGVtPlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L3VsPlxyXG4gICAgfVxyXG5cclxuPC9saT4iXX0=
@@ -1,6 +1,6 @@
1
1
  import { Component, ViewChild, Input, ViewEncapsulation } from '@angular/core';
2
2
  import { BehaviorSubject, fromEvent } from 'rxjs';
3
- import { debounceTime, distinctUntilChanged, filter, map, switchMap } from 'rxjs/operators';
3
+ import { debounceTime, distinctUntilChanged, filter, map, switchMap, tap } from 'rxjs/operators';
4
4
  import { CommonModule } from '@angular/common';
5
5
  import { FormsModule } from '@angular/forms';
6
6
  import { ItemComponent } from './item.component';
@@ -251,7 +251,7 @@ export class NavigatorComponent {
251
251
  }));
252
252
  }
253
253
  }));
254
- this.subscriptions.push(this.navigatorService.clickedItem$.pipe(filter(x => !!x)).subscribe(x => {
254
+ this.subscriptions.push(this.navigatorService.clickedItem$.pipe(tap(x => this.secondaryNavParent = x), filter(x => !!x)).subscribe(x => {
255
255
  this.onItemClick(x);
256
256
  if (x?.tree$Children && x?.tree$Children.length > 0) {
257
257
  if (!!this.items) {
@@ -413,4 +413,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
413
413
  }], rightIcon: [{
414
414
  type: Input
415
415
  }] } });
416
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1oaXN0YWZmLWFscGhhL3NyYy9saWIvYXBwL2xpYnJhcmllcy9uYXZpZ2F0b3IvbmF2aWdhdG9yL25hdmlnYXRvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtaGlzdGFmZi1hbHBoYS9zcmMvbGliL2FwcC9saWJyYXJpZXMvbmF2aWdhdG9yL25hdmlnYXRvci9uYXZpZ2F0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxTQUFTLEVBQUUsS0FBSyxFQUF5QyxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsSSxPQUFPLEVBQUUsZUFBZSxFQUFnQixTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFRaEUsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBUzVGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2pELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGdGQUFnRixDQUFDO0FBRTdILE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNsRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7O0FBdUJsRixNQUFNLE9BQU8sa0JBQWtCO0lBdUM3QixVQUFV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LENBQUM7SUFFRCxzQkFBc0IsQ0FBQyxNQUFXO1FBQ2hDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRTtZQUNaLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxNQUFNLENBQUMsQ0FBQztZQUMvRCxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFO2dCQUN0QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTthQUN0RDtTQUNGO0lBQ0gsQ0FBQztJQUVELHFCQUFxQjtRQUNuQixJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDO0lBQ2pDLENBQUM7OEdBN2NVLGtCQUFrQjtrR0FBbEIsa0JBQWtCLHVTQ2hEL0IsNDJLQW9ITSxpbEpEaEZGLFlBQVksa0xBQ1osV0FBVyxrbkJBQ1gsYUFBYSxnRkFDYiwyQkFBMkIsMkZBQzNCLGFBQWEsa0RBQ2IsaUJBQWlCLHNEQUNqQixnQkFBZ0I7OzJGQU1QLGtCQUFrQjtrQkFoQjlCLFNBQVM7K0JBQ0UsbUJBQW1CLGNBQ2pCLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsYUFBYTt3QkFDYiwyQkFBMkI7d0JBQzNCLGFBQWE7d0JBQ2IsaUJBQWlCO3dCQUNqQixnQkFBZ0I7cUJBQ2pCLGlCQUdjLGlCQUFpQixDQUFDLElBQUk7dVhBSWQsUUFBUTtzQkFBOUIsU0FBUzt1QkFBQyxVQUFVO2dCQU1aLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csc0JBQXNCO3NCQUE5QixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIFZpZXdDaGlsZCwgSW5wdXQsIFRlbXBsYXRlUmVmLCBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3Vic2NyaXB0aW9uLCBmcm9tRXZlbnQgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuXHJcbmltcG9ydCB7IE5hdmlnYXRvclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9uYXZpZ2F0b3Iuc2VydmljZSc7XHJcbmltcG9ydCB7IFN5c01lbnVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvc3lzLW1lbnUuc2VydmljZSc7XHJcbmltcG9ydCB7IFJlY3Vyc2l2ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9yZWN1cnNpdmUuc2VydmljZSc7XHJcbmltcG9ydCB7IElSaWdodEljb24gfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzL0lSaWdodEljb24nO1xyXG5pbXBvcnQgeyBJTmF2aWdhdG9ySXRlbSB9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMvSU5hdmlnYXRvckl0ZW0nO1xyXG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIG1hcCwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBNZW51U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL21lbnUuc2VydmljZSc7XHJcbmltcG9ydCB7IElGb3JtYXRlZFJlc3BvbnNlIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJmYWNlcy9JRm9ybWF0ZWRSZXNwb25zZSc7XHJcblxyXG5pbXBvcnQgeyBPcmdhbml6YXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvb3JnYW5pemF0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2F1dGguc2VydmljZSc7XHJcbmltcG9ydCB7IExheW91dFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9sYXlvdXQuc2VydmljZSc7XHJcbmltcG9ydCB7IE11bHRpTGFuZ3VhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbXVsdGktbGFuZ3VhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IEFsZXJ0U2VydmljZSB9IGZyb20gJy4uLy4uL2FsZXJ0L2FsZXJ0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgSXRlbUNvbXBvbmVudCB9IGZyb20gJy4vaXRlbS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb3JlTG9hZGluZ1N1cmZhY2VDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb3JlLWxvYWRpbmctc3VyZmFjZS9jb3JlLWxvYWRpbmctc3VyZmFjZS9jb3JlLWxvYWRpbmctc3VyZmFjZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBBcHBDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYXBwLWNvbmZpZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlUGlwZSB9IGZyb20gJy4uLy4uLy4uL2FwcC1waXBlcy90cmFuc2xhdGUucGlwZSc7XHJcbmltcG9ydCB7IFRvb2x0aXBEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi90b29sdGlwL3Rvb2x0aXAuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgQ29yZUxpbmVDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb3JlLWxpbmUvY29yZS1saW5lL2NvcmUtbGluZS5jb21wb25lbnQnO1xyXG5cclxuaW50ZXJmYWNlIElGbGF0TmF2aWdhdGlvbkNoZWNrIHtcclxuICBpZDogbnVtYmVyO1xyXG4gIGNvdW50OiBudW1iZXI7XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnY29yZWxpYi1uYXZpZ2F0b3InLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBJdGVtQ29tcG9uZW50LFxyXG4gICAgQ29yZUxvYWRpbmdTdXJmYWNlQ29tcG9uZW50LFxyXG4gICAgVHJhbnNsYXRlUGlwZSxcclxuICAgIENvcmVMaW5lQ29tcG9uZW50LFxyXG4gICAgVG9vbHRpcERpcmVjdGl2ZVxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL25hdmlnYXRvci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vbmF2aWdhdG9yLmNvbXBvbmVudC5zY3NzJywgJy4vc2lkZS1iYXIuc2NzcyddLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOYXZpZ2F0b3JDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG5cclxuICBAVmlld0NoaWxkKFwibWFpbk1lbnVcIikgbWFpbk1lbnUhOiBFbGVtZW50UmVmO1xyXG4gIGxpc3RlbmVyRm4hOiAoKSA9PiB2b2lkO1xyXG4gIGxhbmchOiBzdHJpbmc7XHJcblxyXG4gIGl0ZW1zITogSU5hdmlnYXRvckl0ZW1bXTtcclxuXHJcbiAgQElucHV0KCkgbG9nb1RlbXBsYXRlITogVGVtcGxhdGVSZWY8YW55PjtcclxuICBASW5wdXQoKSByaWdodFBhcnRIZWFkZU1lbnVJdGVtITogSU5hdmlnYXRvckl0ZW07XHJcbiAgQElucHV0KCkgcmlnaHRJY29uITogSVJpZ2h0SWNvbjtcclxuXHJcbiAgbGluZXJJdGVtcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PElOYXZpZ2F0b3JJdGVtW10+KFtdKTtcclxuICBsaW5lckl0ZW1zOiBJTmF2aWdhdG9ySXRlbVtdID0gW107XHJcblxyXG4gIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XHJcblxyXG4gIGZsYXROYXZpZ2F0aW9uQ2hlY2s6IElGbGF0TmF2aWdhdGlvbkNoZWNrW10gPSBbXTtcclxuICBpdGVtc0Vycm9yczogc3RyaW5nW10gPSBbXTtcclxuICBsZWZ0YmFyUmVkdWNlZCE6IGJvb2xlYW47XHJcbiAgbGVmdGJhckN1cnJlbnRXaWR0aCE6IG51bWJlcjtcclxuICBzZWNvbmRhcnlOYXZUb3AhOiBudW1iZXI7XHJcbiAgc2Vjb25kYXJ5TmF2SGVpZ2h0ITogbnVtYmVyO1xyXG4gIHNlY29uZGFyeU5hdldpZHRoOiBudW1iZXIgPSAyODA7XHJcbiAgc2Vjb25kYXJ5TmF2UGFyZW50ITogYW55O1xyXG4gIHNlY29uZGFyeU5hdkNoaWxkcmVuOiBhbnlbXSA9IFtdO1xyXG5cclxuICBsb2FkaW5nITogYm9vbGVhbjtcclxuICBwbGFjZWhvbGRlcjogc3RyaW5nID0gJyc7XHJcbiAgc2VhcmNoRm9yOiBzdHJpbmcgPSAnJztcclxuICBzZWFyY2hTdHJlYW0kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCcnKTtcclxuICBtZW51Q2xpY2tlZEl0ZW0hIDogSU5hdmlnYXRvckl0ZW1cclxuICBjaGVja2VkTG9hZGluZ01lbnU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICB3aWRlTW9kZSE6IGJvb2xlYW47XHJcbiAgc2Nyb2xsSGVpZ2h0ITogbnVtYmVyO1xyXG5cclxuICByZXNpemVTdHJlYW0kID0gZnJvbUV2ZW50KHdpbmRvdywgJ3Jlc2l6ZScpO1xyXG4gIGxlZnRCYXJXaWRlV2lkdGghOiBudW1iZXI7XHJcblxyXG4gIGdlb0NvbXB1dGUoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNjcm9sbEhlaWdodCA9IHdpbmRvdy5pbm5lckhlaWdodCAtIHRoaXMubGF5b3V0U2VydmljZS5oZWFkZXJIZWlnaHQkLnZhbHVlIC0gKHRoaXMud2lkZU1vZGUgPyAoKDM1ICsgMTUpIC8qIHNlYXJjaCovICsgKDUwICsgdGhpcy5sYXlvdXRTZXJ2aWNlLm5hdmlndG9yVGhpbk1vZGVTcGFjaW5nICogMykgLyogY29sbGFwc2VyICovKSA6ICg1MCArIHRoaXMubGF5b3V0U2VydmljZS5uYXZpZ3RvclRoaW5Nb2RlU3BhY2luZyAqIDMpIC8qIGNvbGxhcHNlciovIClcclxuICAgIHRoaXMuc2Vjb25kYXJ5TmF2SGVpZ2h0ID0gdGhpcy5zY3JvbGxIZWlnaHQ7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgbmF2aWdhdG9yU2VydmljZTogTmF2aWdhdG9yU2VydmljZSxcclxuICAgIHByaXZhdGUgc3lzTWVudVNlcnZpY2U6IFN5c01lbnVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWN1cnNpdmVTZXJ2aWNlOiBSZWN1cnNpdmVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcclxuICAgIHByaXZhdGUgbWVudVNlcnZpY2U6IE1lbnVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBvcmdhbml6YXRpb25TZXJ2aWNlOiBPcmdhbml6YXRpb25TZXJ2aWNlLFxyXG4gICAgcHVibGljIGxheW91dFNlcnZpY2U6IExheW91dFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG1sczogTXVsdGlMYW5ndWFnZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSxcclxuICAgIHByaXZhdGUgYWxlcnRTZXJ2aWNlOiBBbGVydFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGFwcENvbmZpZ1NlcnZpY2U6IEFwcENvbmZpZ1NlcnZpY2UsXHJcbiAgKSB7XHJcbiAgICB0aGlzLm1scy5sYW5nJC5zdWJzY3JpYmUoeCA9PiB0aGlzLmxhbmcgPSB4KTtcclxuICAgIHRoaXMubGF5b3V0U2VydmljZS5sZWZ0QmFyV2lkZVdpZHRoJC5zdWJzY3JpYmUoeCA9PiB0aGlzLmxlZnRCYXJXaWRlV2lkdGggPSB4KVxyXG4gICAgdGhpcy5sYXlvdXRTZXJ2aWNlLmhlYWRlckhlaWdodCQuc3Vic2NyaWJlKHggPT4gdGhpcy5zZWNvbmRhcnlOYXZUb3AgPSB4KTtcclxuXHJcbiAgICB0aGlzLm5hdmlnYXRvclNlcnZpY2Uud2lkZU1vZGUkLnN1YnNjcmliZSh4ID0+IHtcclxuICAgICAgdGhpcy53aWRlTW9kZSA9IHg7XHJcbiAgICAgIHRoaXMuZ2VvQ29tcHV0ZSgpO1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLmxheW91dFNlcnZpY2UubGVmdEJhckN1cnJlbnRXaWR0aCQubmV4dCghIXggPyB0aGlzLmxlZnRCYXJXaWRlV2lkdGggOiB0aGlzLmxheW91dFNlcnZpY2UubGVmdEJhclRoaW5XaWR0aCk7XHJcbiAgICAgIH0pXHJcbiAgICB9KTtcclxuICAgIHRoaXMucmVzaXplU3RyZWFtJC5waXBlKFxyXG4gICAgICBkZWJvdW5jZVRpbWUoNTAwKVxyXG4gICAgKS5zdWJzY3JpYmUoXyA9PiB7XHJcbiAgICAgIHRoaXMuZ2VvQ29tcHV0ZSgpO1xyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG5cclxuICAgIHRoaXMubWVudUNsaWNrZWRJdGVtID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnbWVudUN1cnJlbnRDbGlja2VkJykhKVxyXG4gICAgaWYoISF0aGlzLm1lbnVDbGlja2VkSXRlbSl7XHJcbiAgICAgIHRoaXMubWVudUNsaWNrZWRJdGVtLnRyZWUkU2VsZWN0ZWQgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICAgIHRoaXMubGluZXJJdGVtcyQuc3Vic2NyaWJlKHggPT4ge1xyXG5cclxuICAgICAgICAgIGlmKCEheCAmJiB4Lmxlbmd0aCA+IDAgJiYgdGhpcy5jaGVja2VkTG9hZGluZ01lbnUgPT0gZmFsc2Upe1xyXG4gICAgICAgICAgICBsZXQgYXJyYXkgOiBJTmF2aWdhdG9ySXRlbVtdID0gW107XHJcbiAgICAgICAgICAgIGxldCBhcnJheVBhcnJlbnQgOiBJTmF2aWdhdG9ySXRlbVtdID0gW107XHJcbiAgICAgICAgICAgIGlmKHRoaXMubWVudUNsaWNrZWRJdGVtPy50cmVlJFRpZXIgPT0gMil7XHJcbiAgICAgICAgICAgICAgYXJyYXkgPSB4LmZpbHRlcih5ID0+IHkuaWQgPT0gdGhpcy5tZW51Q2xpY2tlZEl0ZW0uaWQpXHJcbiAgICAgICAgICAgICAgYXJyYXlQYXJyZW50ID0geC5maWx0ZXIoeSA9PiB5LmlkID09IHRoaXMubWVudUNsaWNrZWRJdGVtLnRyZWUkUGFyZW50KVxyXG4gICAgICAgICAgICAgIGFycmF5WzBdLnRyZWUkU2VsZWN0ZWQgPXRydWVcclxuICAgICAgICAgICAgICBpZih0aGlzLm1lbnVDbGlja2VkSXRlbS50cmVlJENoaWxkcmVuLmxlbmd0aCA+IDApe1xyXG4gICAgICAgICAgICAgICAgYXJyYXlbMF0udHJlZSRFeHBhbmRlZCA9IHRydWVcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgYXJyYXlQYXJyZW50WzBdLnRyZWUkU2VsZWN0ZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIGFycmF5UGFycmVudFswXS50cmVlJEV4cGFuZGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICBsZXQgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtYWluLW1lbnUtJyArIGFycmF5UGFycmVudFswXS5pZClcclxuICAgICAgICAgICAgICBsZXQgZWxlbWVudDIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWFpbi1tZW51LScgKyBhcnJheVswXS5pZClcclxuICAgICAgICAgICAgICBpZiAoYXJyYXlQYXJyZW50WzBdLnRyZWUkRXhwYW5kZWQpIHtcclxuICAgICAgICAgICAgICAgIGVsZW1lbnQ/LmNsYXNzTGlzdC5hZGQoJ2V4cGFuZGVkJylcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgdGhpcy5pdGVtcy5mb3JFYWNoKGVscyA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIGlmKGVscy5pZCA9PSBhcnJheVBhcnJlbnRbMF0uaWQpe1xyXG4gICAgICAgICAgICAgICAgICAgIGVscy50cmVlJFNlbGVjdGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICBlbHMudHJlZSRFeHBhbmRlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYoZWxzLnRyZWUkQ2hpbGRyZW4ubGVuZ3RoID4gMCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICBlbHMudHJlZSRDaGlsZHJlbi5tYXAoeCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKHguaWQgPT0gdGhpcy5tZW51Q2xpY2tlZEl0ZW0uaWQpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHgudHJlZSRTZWxlY3RlZCA9IHRydWU7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGVsZW1lbnQ/LmNsYXNzTGlzdC5yZW1vdmUoJ2V4cGFuZGVkJylcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYgKGFycmF5UGFycmVudFswXS50cmVlJEFjdGl2ZSkge1xyXG4gICAgICAgICAgICAgICAgZWxlbWVudD8uY2xhc3NMaXN0LmFkZCgnYWN0aXZlJylcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgZWxlbWVudD8uY2xhc3NMaXN0LnJlbW92ZSgnYWN0aXZlJylcclxuICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgIGlmKGFycmF5WzBdLnRyZWUkRXhwYW5kZWQpe1xyXG4gICAgICAgICAgICAgICAgZWxlbWVudDI/LmNsYXNzTGlzdC5hZGQoJ2V4cGFuZGVkJylcclxuICAgICAgICAgICAgICAgIHRoaXMuaXRlbXMubWFwKGVscyA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIGVscy50cmVlJENoaWxkcmVuLm1hcChlbCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYoZWwuaWQgPT0gYXJyYXlbMF0uaWQpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgZWwudHJlZSRTZWxlY3RlZCA9IHRydWU7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpZih0aGlzLnJvdXRlci51cmwgPT0gZWwudXJsKXtcclxuICAgICAgICAgICAgICAgICAgICAgIGVsLnRyZWUkU2VsZWN0ZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIH1lbHNlIHtcclxuICAgICAgICAgICAgICAgIGVsZW1lbnQyPy5jbGFzc0xpc3QucmVtb3ZlKCdleHBhbmRlZCcpXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IFxyXG4gICAgICAgICAgICBlbHNlIGlmKHRoaXMubWVudUNsaWNrZWRJdGVtPy50cmVlJFRpZXIgPT0gMyl7IC8vbuG6v3UgbMOgIDMgY+G6pXBcclxuICAgICAgICAgICAgICBhcnJheSA9IHguZmlsdGVyKHkgPT4geS5pZCA9PSB0aGlzLm1lbnVDbGlja2VkSXRlbS5pZClcclxuICAgICAgICAgICAgICBhcnJheVBhcnJlbnQgPSB4LmZpbHRlcih5ID0+IHkuaWQgPT0gdGhpcy5tZW51Q2xpY2tlZEl0ZW0udHJlZSRQYXJlbnQpXHJcbiAgICAgICAgICAgICAgbGV0IGFycmF5R3JhbmRQYXJyZW50ID0geC5maWx0ZXIoeiA9PiB6LmlkID09IGFycmF5UGFycmVudFswXS5wYXJlbnQpXHJcbiAgICAgICAgICAgICAgbGV0IGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWFpbi1tZW51LScgKyBhcnJheVBhcnJlbnRbMF0uaWQpXHJcbiAgICAgICAgICAgICAgbGV0IGVsZW1lbnQyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21haW4tbWVudS0nICsgYXJyYXlHcmFuZFBhcnJlbnRbMF0uaWQpXHJcbiAgICAgICAgICAgICAgYXJyYXlbMF0udHJlZSRTZWxlY3RlZCA9dHJ1ZVxyXG4gICAgICAgICAgICAgIGFycmF5UGFycmVudFswXS50cmVlJFNlbGVjdGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICBhcnJheVBhcnJlbnRbMF0udHJlZSRFeHBhbmRlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgYXJyYXlHcmFuZFBhcnJlbnRbMF0udHJlZSRTZWxlY3RlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgYXJyYXlHcmFuZFBhcnJlbnRbMF0udHJlZSRFeHBhbmRlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgaWYgKGFycmF5R3JhbmRQYXJyZW50WzBdLnRyZWUkRXhwYW5kZWQpIHtcclxuICAgICAgICAgICAgICAgIGVsZW1lbnQyPy5jbGFzc0xpc3QuYWRkKCdleHBhbmRlZCcpXHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIHRoaXMuaXRlbXMuZm9yRWFjaChlbHMgPT4ge1xyXG4gICAgICAgICAgICAgICAgICBpZihlbHMuaWQgPT0gYXJyYXlHcmFuZFBhcnJlbnRbMF0uaWQpe1xyXG4gICAgICAgICAgICAgICAgICAgIGVscy50cmVlJFNlbGVjdGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICBlbHMudHJlZSRFeHBhbmRlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBlbGVtZW50Mj8uY2xhc3NMaXN0LnJlbW92ZSgnZXhwYW5kZWQnKVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBpZiAoYXJyYXlHcmFuZFBhcnJlbnRbMF0udHJlZSRBY3RpdmUpIHtcclxuICAgICAgICAgICAgICAgIGVsZW1lbnQyPy5jbGFzc0xpc3QuYWRkKCdhY3RpdmUnKVxyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBlbGVtZW50Mj8uY2xhc3NMaXN0LnJlbW92ZSgnYWN0aXZlJylcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgaWYgKGFycmF5UGFycmVudFswXS50cmVlJEV4cGFuZGVkKSB7XHJcbiAgICAgICAgICAgICAgICBlbGVtZW50Py5jbGFzc0xpc3QuYWRkKCdleHBhbmRlZCcpXHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIHRoaXMuaXRlbXMuZm9yRWFjaChlbHMgPT4ge1xyXG4gICAgICAgICAgICAgICAgICBpZihlbHMuaWQgPT0gYXJyYXlHcmFuZFBhcnJlbnRbMF0uaWQpe1xyXG4gICAgICAgICAgICAgICAgICAgIGVscy50cmVlJFNlbGVjdGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICBlbHMudHJlZSRFeHBhbmRlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYoZWxzLnRyZWUkQ2hpbGRyZW4ubGVuZ3RoID4gMCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICBlbHMudHJlZSRDaGlsZHJlbi5tYXAoeCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKHguaWQgPT0gYXJyYXlQYXJyZW50WzBdLmlkKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB4LnRyZWUkU2VsZWN0ZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHgudHJlZSRFeHBhbmRlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYoeC50cmVlJENoaWxkcmVuLmxlbmd0aCA+IDApe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHgudHJlZSRDaGlsZHJlbi5tYXAoeSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZih5LmlkID09IGFycmF5WzBdLmlkKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeS50cmVlJFNlbGVjdGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGVsZW1lbnQ/LmNsYXNzTGlzdC5yZW1vdmUoJ2V4cGFuZGVkJylcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYgKGFycmF5UGFycmVudFswXS50cmVlJEFjdGl2ZSkge1xyXG4gICAgICAgICAgICAgICAgZWxlbWVudD8uY2xhc3NMaXN0LmFkZCgnYWN0aXZlJylcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgZWxlbWVudD8uY2xhc3NMaXN0LnJlbW92ZSgnYWN0aXZlJylcclxuICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmNoZWNrZWRMb2FkaW5nTWVudSA9IHRydWVcclxuICAgICAgICB9KVxyXG4gICAgICApXHJcbiAgICB9LDIwMDApXHJcbiAgICBcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuXHJcbiAgICAgIHRoaXMuZ2VvQ29tcHV0ZSgpO1xyXG5cclxuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgICAgdGhpcy5sYXlvdXRTZXJ2aWNlLmxlZnRiYXJSZWR1Y2VkJC5zdWJzY3JpYmUoeCA9PiB0aGlzLmxlZnRiYXJSZWR1Y2VkID0geClcclxuICAgICAgKVxyXG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgICB0aGlzLmxheW91dFNlcnZpY2UubGVmdEJhckN1cnJlbnRXaWR0aCQuc3Vic2NyaWJlKHggPT4gdGhpcy5sZWZ0YmFyQ3VycmVudFdpZHRoID0geClcclxuICAgICAgKVxyXG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgICB0aGlzLm1scy5sYW5nJC5zdWJzY3JpYmUoeCA9PiB0aGlzLnBsYWNlaG9sZGVyID0gdGhpcy5tbHMudHJhbnMoJ1VJX0NPTU1PTl9QTEFDRV9IT0xERVJfU0VBUkNIX0hFUkUnKSlcclxuICAgICAgKVxyXG5cclxuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgICAgdGhpcy5zZWFyY2hTdHJlYW0kXHJcbiAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgZGVib3VuY2VUaW1lKDUwMCksXHJcbiAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXHJcbiAgICAgICAgICAgIHN3aXRjaE1hcCgodGV4dCkgPT4ge1xyXG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdzd2l0Y2hNYXAgd29ya3MgPT09PT09PT09PT09PT09PT09PT09PT09PT0nKTtcclxuICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLm5hdmlnYXRvclNlcnZpY2UuZmluZEl0ZW0odGV4dCwgdGhpcy5pdGVtcyk7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgICAuc3Vic2NyaWJlKCh4KSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgfSlcclxuICAgICAgKTtcclxuXHJcbiAgICAgIHRoaXMuaXRlbXM/Lm1hcCgoaXRlbTogSU5hdmlnYXRvckl0ZW0pID0+IHtcclxuICAgICAgICB0aGlzLnZhbGlkYXRlTmF2aWdhdGlvbkl0ZW0oaXRlbSk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgaWYgKCEhdGhpcy5pdGVtc0Vycm9ycy5sZW5ndGgpIHtcclxuICAgICAgICBjb25zb2xlLmdyb3VwKFwiTmF2aWdhdGlvbiBpdGVtcyBlcnJvclwiKTtcclxuICAgICAgICB0aGlzLml0ZW1zRXJyb3JzPy5tYXAoZXJyb3IgPT4ge1xyXG4gICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XHJcbiAgICAgICAgfSlcclxuICAgICAgICBjb25zb2xlLmdyb3VwRW5kKCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG5cclxuICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLmRhdGEkLnBpcGUoXHJcbiAgICAgICAgICBmaWx0ZXIoeCA9PiAhIXgpLFxyXG4gICAgICAgICAgbWFwKHggPT4geD8uaWQpLFxyXG4gICAgICAgICAgc3dpdGNoTWFwKHggPT4gdGhpcy5zeXNNZW51U2VydmljZS5yZWFkUGVybWl0dGVkTWVudSh4ISwgdGhpcy5hcHBDb25maWdTZXJ2aWNlLkFQUF9UWVBFKSlcclxuICAgICAgICApLnN1YnNjcmliZSh4ID0+IHtcclxuICAgICAgICAgIGlmICh4Lm9rICYmIHguc3RhdHVzID09PSAyMDApIHtcclxuICAgICAgICAgICAgY29uc3QgYm9keTogSUZvcm1hdGVkUmVzcG9uc2UgPSB4LmJvZHk7XHJcbiAgICAgICAgICAgIGJvZHkuaW5uZXJCb2R5LnNvcnQoKGE6IGFueSwgYjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgLy8gaW4gcmVjdXJzaXZlIGNvZGUgd2Ugd2lsbCByZWFkIGZyb20gYm90dG9tIHRvIHRvcFxyXG4gICAgICAgICAgICAgIGlmIChhLm9yZGVyTnVtYmVyID4gYi5vcmRlck51bWJlcikgcmV0dXJuIC0xO1xyXG4gICAgICAgICAgICAgIGlmIChhLm9yZGVyTnVtYmVyID09PSBiLm9yZGVyTnVtYmVyKSByZXR1cm4gMDtcclxuICAgICAgICAgICAgICBpZiAoYS5vcmRlck51bWJlciA8IGIub3JkZXJOdW1iZXIpIHJldHVybiAxO1xyXG4gICAgICAgICAgICAgIHJldHVybiAwO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB0aGlzLmxpbmVySXRlbXMkLm5leHQoSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShib2R5LmlubmVyQm9keSkpKTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG5cclxuICAgICAgICAgICAgICB0aGlzLnJlY3Vyc2l2ZVNlcnZpY2UubGluZXJBcnJheVRvTmVzdGVkQXJyYXkoXHJcbiAgICAgICAgICAgICAgICBib2R5LmlubmVyQm9keSxcclxuICAgICAgICAgICAgICAgIFwiaWRcIixcclxuICAgICAgICAgICAgICAgIFwiY29kZVwiLFxyXG4gICAgICAgICAgICAgICAgXCJwYXJlbnRcIiwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCxcclxuICAgICAgICAgICAgICAgIHRoaXMub3JnYW5pemF0aW9uU2VydmljZS5zdGF0dXMkLnZhbHVlLFxyXG4gICAgICAgICAgICAgICAgXCJvcmRlck51bVwiXHJcbiAgICAgICAgICAgICAgKS5zdWJzY3JpYmUociA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcInJcIiwgcilcclxuICAgICAgICAgICAgICAgIHRoaXMuaXRlbXMgPSByLmxpc3Q7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxpbmVySXRlbXMgPSByLnJhd0xpc3Quc29ydCgoYTogYW55LCBiOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgaWYgKGEub3JkZXJOdW1iZXIgPiBiLm9yZGVyTnVtYmVyKSByZXR1cm4gMTtcclxuICAgICAgICAgICAgICAgICAgaWYgKGEub3JkZXJOdW1iZXIgPT09IGIub3JkZXJOdW1iZXIpIHJldHVybiAwO1xyXG4gICAgICAgICAgICAgICAgICBpZiAoYS5vcmRlck51bWJlciA8IGIub3JkZXJOdW1iZXIpIHJldHVybiAtMTtcclxuICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgdGhpcy5tZW51U2VydmljZS5uYXZpZ2F0aW9uJC5uZXh0KHIubGlzdCk7XHJcbiAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgIClcclxuXHJcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICAgIHRoaXMubmF2aWdhdG9yU2VydmljZS5jbGlja2VkSXRlbSQucGlwZShcclxuICAgICAgICAgIGZpbHRlcih4ID0+ICEheClcclxuICAgICAgICApLnN1YnNjcmliZSh4ID0+IHtcclxuXHJcbiAgICAgICAgICB0aGlzLm9uSXRlbUNsaWNrKHghKTtcclxuICAgICAgICAgIGlmICh4Py50cmVlJENoaWxkcmVuICYmIHg/LnRyZWUkQ2hpbGRyZW4ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgaWYoISF0aGlzLml0ZW1zKVxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgbGV0IGl0ZW1BY3RpdmF0ZWQgPSB0aGlzLml0ZW1zLmZpbHRlcih5ID0+IHkgIT09IHggJiYgeS5pZCAhPT0geC50cmVlJFBhcmVudCAmJiB5LnRyZWUkU2VsZWN0ZWQgPT0gdHJ1ZSlcclxuICAgICAgICAgICAgICBpdGVtQWN0aXZhdGVkPy5tYXAoeiA9PiB6LnRyZWUkU2VsZWN0ZWQgPSBmYWxzZSlcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGlmICghIXggJiYgISF4LnBhcmVudCkge1xyXG4gICAgICAgICAgICAgIHRoaXMuaXRlbXMubWFwKHBhcmVudCA9PiB7XHJcbiAgICAgICAgICAgICAgICBwYXJlbnQudHJlZSRDaGlsZHJlbi5tYXAoY2hpbGQgPT4ge1xyXG4gICAgICAgICAgICAgICAgICBpZiAoY2hpbGQudHJlZSRDaGlsZHJlbi5sZW5ndGggPT0gMCAmJiBjaGlsZCAhPSB4KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2hpbGQudHJlZSRTZWxlY3RlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICB9ZWxzZSBpZihjaGlsZC50cmVlJENoaWxkcmVuLmxlbmd0aCA+IDApe1xyXG4gICAgICAgICAgICAgICAgICAgIGNoaWxkLnRyZWUkQ2hpbGRyZW4ubWFwKGsgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgaWYoY2hpbGQuaWQgIT0gay5wYXJlbnQpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjaGlsZC50cmVlJFNlbGVjdGVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZihjaGlsZCAhPSB4ICYmIHgucGFyZW50ICE9IGNoaWxkLmlkKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZih4LmlkID09IClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZC50cmVlJFNlbGVjdGVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNlIGlmICh4LnBhcmVudCA9PSBjaGlsZC5pZCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGQudHJlZSRTZWxlY3RlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gay50cmVlJFNlbGVjdGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIHRoaXMuc2Vjb25kYXJ5TmF2UGFyZW50ID0geCE7XHJcbiAgICAgICAgICB0aGlzLnNlY29uZGFyeU5hdkNoaWxkcmVuID0gdGhpcy5saW5lckl0ZW1zLmZpbHRlcihhID0+IGEucGFyZW50ID09PSB4Py5pZCk7XHJcblxyXG5cclxuICAgICAgICB9KVxyXG4gICAgICApXHJcblxyXG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgICB0aGlzLmxpbmVySXRlbXMkLnN1YnNjcmliZShpdGVtcyA9PiB7XHJcbiAgICAgICAgICBpdGVtcz8ubWFwKHggPT4ge1xyXG4gICAgICAgICAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtYWluLW1lbnUtJyArIHguaWQpXHJcbiAgICAgICAgICAgIGlmICh4LnRyZWUkRXhwYW5kZWQpIHtcclxuICAgICAgICAgICAgICBlbGVtZW50Py5jbGFzc0xpc3QuYWRkKCdleHBhbmRlZCcpXHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgZWxlbWVudD8uY2xhc3NMaXN0LnJlbW92ZSgnZXhwYW5kZWQnKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICh4LnRyZWUkQWN0aXZlKSB7XHJcbiAgICAgICAgICAgICAgZWxlbWVudD8uY2xhc3NMaXN0LmFkZCgnYWN0aXZlJylcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBlbGVtZW50Py5jbGFzc0xpc3QucmVtb3ZlKCdhY3RpdmUnKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9KVxyXG4gICAgICApXHJcblxyXG4gICAgfSlcclxuXHJcbiAgfVxyXG5cclxuICBvblNlYXJjaENoYW5nZShlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuc2VhcmNoU3RyZWFtJC5uZXh0KGUpXHJcbiAgfVxyXG5cclxuICBjbGVhclNlYXJjaCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc2VhcmNoRm9yID0gXCJcIjtcclxuICAgIHRoaXMuc2VhcmNoU3RyZWFtJC5uZXh0KFwiXCIpO1xyXG4gIH1cclxuXHJcbiAgdmFsaWRhdGVOYXZpZ2F0aW9uSXRlbShpdGVtOiBJTmF2aWdhdG9ySXRlbSkge1xyXG4gICAgaWYgKCEhIWl0ZW0uaWQpIHtcclxuICAgICAgdGhpcy5pdGVtc0Vycm9ycy5wdXNoKGBWYWx1ZSBvZiBwcm9wZXJ0eSBcImlkXCIgb2YgbmF2aWdhdGlvbiBpdGVtIFwiJHtpdGVtLmNvZGV9XCIgaXMgbm90IHNldGApO1xyXG4gICAgfVxyXG4gICAgY29uc3QgZmlsdGVyID0gdGhpcy5mbGF0TmF2aWdhdGlvbkNoZWNrLmZpbHRlcih4ID0+IHguaWQgPT09IGl0ZW0uaWQpO1xyXG4gICAgaWYgKGZpbHRlci5sZW5ndGggPT09IDApIHtcclxuICAgICAgdGhpcy5mbGF0TmF2aWdhdGlvbkNoZWNrLnB1c2goe1xyXG4gICAgICAgIGlkOiBpdGVtLmlkLFxyXG4gICAgICAgIGNvdW50OiAwLFxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuaXRlbXNFcnJvcnMucHVzaChgRHVwbGljYXRlZCBOYXZpZ2F0aW9uIGlkICR7aXRlbS5pZH1gKTtcclxuICAgIH07XHJcblxyXG4gICAgaWYgKHRoaXMuaGFzQ2hpbGRyZW4oaXRlbSkpIHtcclxuICAgICAgaXRlbS50cmVlJENoaWxkcmVuPy5tYXAoY2hpbGQgPT4ge1xyXG4gICAgICAgIHRoaXMudmFsaWRhdGVOYXZpZ2F0aW9uSXRlbShjaGlsZCk7XHJcbiAgICAgIH0pXHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgaGFzQ2hpbGRyZW4oaXRlbTogSU5hdmlnYXRvckl0ZW0pOiBib29sZWFuIHtcclxuICAgIGxldCByZXN1bHQgPSBmYWxzZTtcclxuICAgIE9iamVjdC5rZXlzKGl0ZW0pLmZvckVhY2goa2V5ID0+IHtcclxuICAgICAgaWYgKGtleSA9PT0gXCJ0cmVlJENoaWxkcmVuXCIpIHtcclxuICAgICAgICBpZiAoISFpdGVtWyd0cmVlJENoaWxkcmVuJ10/Lmxlbmd0aCkge1xyXG4gICAgICAgICAgcmVzdWx0ID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG4gIGl0ZW1IYXNDaGlsZHJlbihpdGVtOiBJTmF2aWdhdG9ySXRlbSk6IGJvb2xlYW4ge1xyXG4gICAgbGV0IHJlc3VsdDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgT2JqZWN0LmtleXMoaXRlbSkuZm9yRWFjaChrZXkgPT4ge1xyXG4gICAgICBpZiAoa2V5ID09PSAndHJlZSRDaGlsZHJlbicpIHtcclxuICAgICAgICBpZiAoISFpdGVtWyd0cmVlJENoaWxkcmVuJ10/Lmxlbmd0aCkge1xyXG4gICAgICAgICAgcmVzdWx0ID0gdHJ1ZTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgIH07XHJcbiAgICB9KTtcclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgfVxyXG5cclxuICBvbkl0ZW1DbGljayhpdGVtOiBJTmF2aWdhdG9ySXRlbSkge1xyXG4gICAgY29uc3QgY3VycmVudCA9IHRoaXMubGluZXJJdGVtcyQudmFsdWU7XHJcbiAgICBjb25zdCBpdGVtcyA9IHRoaXMubmF2aWdhdG9yU2VydmljZS5zZWZ0VG9nZ2xlRXhwYW5kU2libGluZ3NDb2xsYXBzZShjdXJyZW50LCBpdGVtLmlkKTtcclxuICAgIHRoaXMubGluZXJJdGVtcyQubmV4dChpdGVtcyk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5tYXAoeCA9PiB7XHJcbiAgICAgIGlmICh4KSB4LnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgdG9nZ2xlQ29sbGFwc2UoKTogdm9pZCB7XHJcbiAgICB0aGlzLm5hdmlnYXRvclNlcnZpY2Uud2lkZU1vZGUkLm5leHQoIXRoaXMubmF2aWdhdG9yU2VydmljZS53aWRlTW9kZSQudmFsdWUpXHJcbiAgfVxyXG5cclxuICBvblNlY29uZGFyeUl0ZW1DbGljayhpdGVtOiBhbnkpIHtcclxuICAgIHRoaXMubmF2aWdhdG9yU2VydmljZS5jbGlja2VkSXRlbSQubmV4dChpdGVtKTtcclxuICB9XHJcblxyXG4gIG9uU2Vjb25kYXJ5SGVhZGVyQ2xpY2socGFyZW50OiBhbnkpIHtcclxuICAgIGlmICghIXBhcmVudCkge1xyXG4gICAgICBjb25zdCB0cnlGaWx0ZXIgPSB0aGlzLmxpbmVySXRlbXMuZmlsdGVyKHggPT4geC5pZCA9PT0gcGFyZW50KTtcclxuICAgICAgaWYgKCEhdHJ5RmlsdGVyLmxlbmd0aCkge1xyXG4gICAgICAgIHRoaXMubmF2aWdhdG9yU2VydmljZS5jbGlja2VkSXRlbSQubmV4dCh0cnlGaWx0ZXJbMF0pXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uQ2FuY2VsU2Vjb25kYXJ5TWVudSgpIHtcclxuICAgIHRoaXMuc2Vjb25kYXJ5TmF2UGFyZW50ID0gbnVsbDtcclxuICB9XHJcblxyXG59IiwiPGRpdiBjbGFzcz1cIm5hdmlnYXRvci1jb250YWluZXJcIiBbbmdTdHlsZV09XCJ7XHJcbiAgICB3aWR0aDogbGVmdGJhckN1cnJlbnRXaWR0aCArICdweCdcclxufVwiPlxyXG4gICAgQGlmICh3aWRlTW9kZSkge1xyXG4gICAgPGRpdiBjbGFzcz1cImlucHV0LXNlYXJjaC1jb250YWluZXJcIiBbY2xhc3Mub3BhY2l0eTBdPVwiISFsZWZ0YmFyUmVkdWNlZFwiIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICB3aWR0aDogbGF5b3V0U2VydmljZS5sZWZ0QmFyQ3VycmVudFdpZHRoJC52YWx1ZSAtIGxheW91dFNlcnZpY2UubGVmdEJhclNlY29uZEljb25MZWZ0IC0gbGF5b3V0U2VydmljZS5zY3JvbGxCYXJXaWR0aCAtIDEgKyAncHgnXHJcbiAgICB9XCI+XHJcbiAgICAgICAgPGlucHV0IGlkPVwibmF2aWdhdG9yLXNlYXJjaFwiIFtwbGFjZWhvbGRlcl09XCInVUlfQ09NTU9OX1BMQUNFX0hPTERFUl9TRUFSQ0hfSEVSRScgfCB0cmFuc2xhdGU6IGxhbmdcIiB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2VhcmNoRm9yXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25TZWFyY2hDaGFuZ2UoJGV2ZW50KVwiPlxyXG4gICAgICAgIEBpZiAoISFzZWFyY2hGb3IubGVuZ3RoKSB7XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInNlYXJjaC1jbGVhci13cmFwcGVyXCIgKGNsaWNrKT1cImNsZWFyU2VhcmNoKClcIj5cclxuICAgICAgICAgICAgPGkgY2xhc3M9XCJmZWF0aGVyLXhcIj48L2k+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgfVxyXG4gICAgPC9kaXY+XHJcbiAgICB9XHJcblxyXG4gICAgPGRpdiBpZD1cIm5hdlwiIFtjbGFzcy5zaWRlYmFyXT1cIiF3aWRlTW9kZVwiPlxyXG4gICAgICAgIEBpZiAoISFsb2FkaW5nKSB7XHJcbiAgICAgICAgPGNvcmUtbG9hZGluZy1zdXJmYWNlPjwvY29yZS1sb2FkaW5nLXN1cmZhY2U+XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICA8dWwgaWQ9XCJtYWluLW1lbnVcIiAjbWFpbk1lbnUgW3N0eWxlXT1cIidoZWlnaHQ6ICcgKyBzY3JvbGxIZWlnaHQgKyAncHg7J1wiIFtjbGFzcy50aGluLW1vZGVdPVwiIXdpZGVNb2RlXCJcclxuICAgICAgICAgICAgW2NsYXNzLm1lbnVdPVwiIXdpZGVNb2RlXCI+XHJcbiAgICAgICAgICAgIEBpZiAoISFpdGVtcz8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIEBmb3IoaXRlbSBvZiBpdGVtczsgdHJhY2sgJGluZGV4KSB7XHJcbiAgICAgICAgICAgIDxhcHAtaXRlbSBbaXRlbV09XCJpdGVtXCIgW2xldmVsXT1cIjFcIj48L2FwcC1pdGVtPlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIEBpZiAoISFyaWdodEljb24pIHtcclxuICAgICAgICAgICAgPGxpIGNsYXNzPVwicGFyZW50IHJpZ2h0LXBhcnQtaXRlbVwiIFtjbGFzcy5tZW51LWl0ZW1dPVwid2lkZU1vZGVcIj5cclxuICAgICAgICAgICAgICAgIDxhIChjbGljayk9XCJyaWdodEljb24uZnVuY3Rpb24oKVwiIGNsYXNzPVwibm8tdmVydGljYWwtcGFkZGluZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyaWdodC1pY29uLXdyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgW2NsYXNzXT1cIidyaWdodC1pY29uICcgKyByaWdodEljb24uZmVhdGhlckNsYXNzXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmlnaHQtaWNvbi1iYWRnZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgcmlnaHRJY29uLmJhZGdlQ291bnQgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgPC91bD5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbGxhcHNlLXRvZ2dsZXJcIiBbY2xhc3MuZC1ub25lXT1cIiFsYXlvdXRTZXJ2aWNlLmxlZnRiYXJPcGVuJC52YWx1ZVwiXHJcbiAgICAgICAgICAgIFthcHBUb29sdGlwXT1cIndpZGVNb2RlID8gKCdVSV9MRUZUQkFSX1RPR0dMRVJfQ09MTEFQU0UnIHwgdHJhbnNsYXRlIDogbGFuZykgOiAoJ1VJX0xFRlRCQVJfVE9HR0xFUl9FWFBBTkQnIHwgdHJhbnNsYXRlOiBsYW5nKVwiXHJcbiAgICAgICAgICAgIFtzaG93QW55d2F5XT1cInRydWVcIiBwb3NpdGlvbj1cImFib3ZlXCIgKGNsaWNrKT1cInRvZ2dsZUNvbGxhcHNlKClcIiBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICB3aWR0aDogbGF5b3V0U2VydmljZS5sZWZ0QmFyQ3VycmVudFdpZHRoJC52YWx1ZSAtIDggKiAyICsgJ3B4J1xyXG4gICAgICAgICAgICB9XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xsYXBzZS10b2dnbGVyLWlubmVyXCIgW2NsYXNzLnRoaW4tbW9kZV09XCIhd2lkZU1vZGVcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb3JlLWxpbmUtd3JhcHBlclwiIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgICAgICB3aWR0aDogbGF5b3V0U2VydmljZS5sZWZ0QmFyQ3VycmVudFdpZHRoJC52YWx1ZSAtIDggKiAyICsgJ3B4J1xyXG4gICAgICAgICAgICAgICAgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxjb3JlLWxpbmU+PC9jb3JlLWxpbmU+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8c3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICBAaWYgKHdpZGVNb2RlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmZWF0aGVyLWNoZXZyb25zLWxlZnRcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmZWF0aGVyLWNoZXZyb25zLXJpZ2h0XCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIEBpZiAod2lkZU1vZGUpIHtcclxuICAgICAgICAgICAgICAgIDxzcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7ICdVSV9MRUZUQkFSX1RPR0dMRVJfQ09MTEFQU0UnIHwgdHJhbnNsYXRlOiBsYW5nIH19XHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICBAaWYgKCF3aWRlTW9kZSAmJiAhIXNlY29uZGFyeU5hdlBhcmVudCAmJiAhIXNlY29uZGFyeU5hdkNoaWxkcmVuLmxlbmd0aCkge1xyXG4gICAgPGRpdiAjc2Vjb25kYXJ5IGlkPVwic2Vjb25kYXJ5LW5hdlwiIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICB3aWR0aDogc2Vjb25kYXJ5TmF2V2lkdGggKyAncHgnLFxyXG4gICAgICAgIHRvcDogc2Vjb25kYXJ5TmF2VG9wICsgMTUgKyAncHgnLFxyXG4gICAgICAgIGxlZnQ6IGxheW91dFNlcnZpY2UubGVmdEJhclRoaW5XaWR0aCArIDE1ICsgJ3B4J1xyXG4gICAgfVwiPlxyXG4gICAgICAgIDxkaXYgaWQ9XCJzZWNvbmRhcnktbmF2LWlubmVyXCI+XHJcbiAgICAgICAgICAgIDxkaXYgaWQ9XCJzZWNvbmRhcnktbmF2LWhlYWRlclwiIFtjbGFzcy5jdXJzb3ItcG9pbnRlcl09XCIhIXNlY29uZGFyeU5hdlBhcmVudC50cmVlJFBhcmVudFwiIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgIHdpZHRoOiBzZWNvbmRhcnlOYXZXaWR0aCArICdweCdcclxuICAgICAgICAgICAgfVwiIChjbGljayk9XCJvblNlY29uZGFyeUhlYWRlckNsaWNrKHNlY29uZGFyeU5hdlBhcmVudC50cmVlJFBhcmVudClcIj5cclxuICAgICAgICAgICAgICAgIEBpZiAoISFzZWNvbmRhcnlOYXZQYXJlbnQudHJlZSRQYXJlbnQpIHtcclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXJyb3ctd3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmVhdGhlci1hcnJvdy1sZWZ0XCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgPHNwYW4gW2FwcFRvb2x0aXBdPVwic2Vjb25kYXJ5TmF2UGFyZW50LmNvZGUgfCB0cmFuc2xhdGU6IGxhbmcgfCB1cHBlcmNhc2VcIj5cclxuICAgICAgICAgICAgICAgICAgICB7eyBzZWNvbmRhcnlOYXZQYXJlbnQuY29kZSB8IHRyYW5zbGF0ZTogbGFuZyB8IHVwcGVyY2FzZSB9fVxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhcnJvdy13cmFwcGVyIGN1cnNvci1wb2ludGVyXCIgc3R5bGU9XCJmbG9hdDogcmlnaHQ7XCIgKGNsaWNrKT1cIm9uQ2FuY2VsU2Vjb25kYXJ5TWVudSgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmZWF0aGVyLXhcIj48L2k+XHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGlkPVwic2Vjb25kYXJ5LW5hdi1saXN0XCI+XHJcbiAgICAgICAgICAgICAgICA8dWwgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgIG1heEhlaWdodDogc2Vjb25kYXJ5TmF2SGVpZ2h0IC0gNTAgKyAncHgnXHJcbiAgICAgICAgICAgICAgICB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgQGZvcihpdCBvZiBzZWNvbmRhcnlOYXZDaGlsZHJlbjsgdHJhY2sgJGluZGV4KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwicGFyZW50XCIgKGNsaWNrKT1cIm9uU2Vjb25kYXJ5SXRlbUNsaWNrKGl0KVwiIFtjbGFzcy5oYXMtY2hpbGRyZW5dPVwiaXQudHJlZSRIYXNDaGlsZHJlblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YSBbYXBwVG9vbHRpcF09XCJzZWNvbmRhcnlOYXZQYXJlbnQuY29kZSB8IHRyYW5zbGF0ZTogbGFuZyB8IHVwcGVyY2FzZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXQudHJlZSRUaXRsZSB8IHRyYW5zbGF0ZTogbGFuZyB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoaXQudHJlZSRIYXNDaGlsZHJlbikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXJyb3ctd3JhcHBlclwiIHN0eWxlPVwiZmxvYXQ6IHJpZ2h0O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmZWF0aGVyLWFycm93LXJpZ2h0XCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIH1cclxuXHJcbjwvZGl2PiJdfQ==
416
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1oaXN0YWZmLWFscGhhL3NyYy9saWIvYXBwL2xpYnJhcmllcy9uYXZpZ2F0b3IvbmF2aWdhdG9yL25hdmlnYXRvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtaGlzdGFmZi1hbHBoYS9zcmMvbGliL2FwcC9saWJyYXJpZXMvbmF2aWdhdG9yL25hdmlnYXRvci9uYXZpZ2F0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxTQUFTLEVBQUUsS0FBSyxFQUF5QyxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsSSxPQUFPLEVBQUUsZUFBZSxFQUFnQixTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFRaEUsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQVNqRyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxnRkFBZ0YsQ0FBQztBQUU3SCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDbEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDbkUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0NBQStDLENBQUM7Ozs7Ozs7Ozs7Ozs7OztBQXVCbEYsTUFBTSxPQUFPLGtCQUFrQjtJ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ZWYsIFZpZXdDaGlsZCwgSW5wdXQsIFRlbXBsYXRlUmVmLCBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3Vic2NyaXB0aW9uLCBmcm9tRXZlbnQgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuXHJcbmltcG9ydCB7IE5hdmlnYXRvclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9uYXZpZ2F0b3Iuc2VydmljZSc7XHJcbmltcG9ydCB7IFN5c01lbnVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvc3lzLW1lbnUuc2VydmljZSc7XHJcbmltcG9ydCB7IFJlY3Vyc2l2ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9yZWN1cnNpdmUuc2VydmljZSc7XHJcbmltcG9ydCB7IElSaWdodEljb24gfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzL0lSaWdodEljb24nO1xyXG5pbXBvcnQgeyBJTmF2aWdhdG9ySXRlbSB9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMvSU5hdmlnYXRvckl0ZW0nO1xyXG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIG1hcCwgc3dpdGNoTWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IE1lbnVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbWVudS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSUZvcm1hdGVkUmVzcG9uc2UgfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzL0lGb3JtYXRlZFJlc3BvbnNlJztcclxuXHJcbmltcG9ydCB7IE9yZ2FuaXphdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9vcmdhbml6YXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYXV0aC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTGF5b3V0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2xheW91dC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTXVsdGlMYW5ndWFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9tdWx0aS1sYW5ndWFnZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQWxlcnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vYWxlcnQvYWxlcnQuc2VydmljZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi9pdGVtLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENvcmVMb2FkaW5nU3VyZmFjZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvcmUtbG9hZGluZy1zdXJmYWNlL2NvcmUtbG9hZGluZy1zdXJmYWNlL2NvcmUtbG9hZGluZy1zdXJmYWNlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEFwcENvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9hcHAtY29uZmlnLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVQaXBlIH0gZnJvbSAnLi4vLi4vLi4vYXBwLXBpcGVzL3RyYW5zbGF0ZS5waXBlJztcclxuaW1wb3J0IHsgVG9vbHRpcERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL3Rvb2x0aXAvdG9vbHRpcC5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBDb3JlTGluZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvcmUtbGluZS9jb3JlLWxpbmUvY29yZS1saW5lLmNvbXBvbmVudCc7XHJcblxyXG5pbnRlcmZhY2UgSUZsYXROYXZpZ2F0aW9uQ2hlY2sge1xyXG4gIGlkOiBudW1iZXI7XHJcbiAgY291bnQ6IG51bWJlcjtcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdjb3JlbGliLW5hdmlnYXRvcicsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuICAgIEl0ZW1Db21wb25lbnQsXHJcbiAgICBDb3JlTG9hZGluZ1N1cmZhY2VDb21wb25lbnQsXHJcbiAgICBUcmFuc2xhdGVQaXBlLFxyXG4gICAgQ29yZUxpbmVDb21wb25lbnQsXHJcbiAgICBUb29sdGlwRGlyZWN0aXZlXHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vbmF2aWdhdG9yLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9uYXZpZ2F0b3IuY29tcG9uZW50LnNjc3MnLCAnLi9zaWRlLWJhci5zY3NzJ10sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxufSlcclxuZXhwb3J0IGNsYXNzIE5hdmlnYXRvckNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XHJcblxyXG4gIEBWaWV3Q2hpbGQoXCJtYWluTWVudVwiKSBtYWluTWVudSE6IEVsZW1lbnRSZWY7XHJcbiAgbGlzdGVuZXJGbiE6ICgpID0+IHZvaWQ7XHJcbiAgbGFuZyE6IHN0cmluZztcclxuXHJcbiAgaXRlbXMhOiBJTmF2aWdhdG9ySXRlbVtdO1xyXG5cclxuICBASW5wdXQoKSBsb2dvVGVtcGxhdGUhOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIEBJbnB1dCgpIHJpZ2h0UGFydEhlYWRlTWVudUl0ZW0hOiBJTmF2aWdhdG9ySXRlbTtcclxuICBASW5wdXQoKSByaWdodEljb24hOiBJUmlnaHRJY29uO1xyXG5cclxuICBsaW5lckl0ZW1zJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SU5hdmlnYXRvckl0ZW1bXT4oW10pO1xyXG4gIGxpbmVySXRlbXM6IElOYXZpZ2F0b3JJdGVtW10gPSBbXTtcclxuXHJcbiAgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcclxuXHJcbiAgZmxhdE5hdmlnYXRpb25DaGVjazogSUZsYXROYXZpZ2F0aW9uQ2hlY2tbXSA9IFtdO1xyXG4gIGl0ZW1zRXJyb3JzOiBzdHJpbmdbXSA9IFtdO1xyXG4gIGxlZnRiYXJSZWR1Y2VkITogYm9vbGVhbjtcclxuICBsZWZ0YmFyQ3VycmVudFdpZHRoITogbnVtYmVyO1xyXG4gIHNlY29uZGFyeU5hdlRvcCE6IG51bWJlcjtcclxuICBzZWNvbmRhcnlOYXZIZWlnaHQhOiBudW1iZXI7XHJcbiAgc2Vjb25kYXJ5TmF2V2lkdGg6IG51bWJlciA9IDI4MDtcclxuICBzZWNvbmRhcnlOYXZQYXJlbnQhOiBhbnk7XHJcbiAgc2Vjb25kYXJ5TmF2Q2hpbGRyZW46IGFueVtdID0gW107XHJcblxyXG4gIGxvYWRpbmchOiBib29sZWFuO1xyXG4gIHBsYWNlaG9sZGVyOiBzdHJpbmcgPSAnJztcclxuICBzZWFyY2hGb3I6IHN0cmluZyA9ICcnO1xyXG4gIHNlYXJjaFN0cmVhbSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oJycpO1xyXG4gIG1lbnVDbGlja2VkSXRlbSEgOiBJTmF2aWdhdG9ySXRlbVxyXG4gIGNoZWNrZWRMb2FkaW5nTWVudTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHdpZGVNb2RlITogYm9vbGVhbjtcclxuICBzY3JvbGxIZWlnaHQhOiBudW1iZXI7XHJcblxyXG4gIHJlc2l6ZVN0cmVhbSQgPSBmcm9tRXZlbnQod2luZG93LCAncmVzaXplJyk7XHJcbiAgbGVmdEJhcldpZGVXaWR0aCE6IG51bWJlcjtcclxuXHJcbiAgZ2VvQ29tcHV0ZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuc2Nyb2xsSGVpZ2h0ID0gd2luZG93LmlubmVySGVpZ2h0IC0gdGhpcy5sYXlvdXRTZXJ2aWNlLmhlYWRlckhlaWdodCQudmFsdWUgLSAodGhpcy53aWRlTW9kZSA/ICgoMzUgKyAxNSkgLyogc2VhcmNoKi8gKyAoNTAgKyB0aGlzLmxheW91dFNlcnZpY2UubmF2aWd0b3JUaGluTW9kZVNwYWNpbmcgKiAzKSAvKiBjb2xsYXBzZXIgKi8pIDogKDUwICsgdGhpcy5sYXlvdXRTZXJ2aWNlLm5hdmlndG9yVGhpbk1vZGVTcGFjaW5nICogMykgLyogY29sbGFwc2VyKi8gKVxyXG4gICAgdGhpcy5zZWNvbmRhcnlOYXZIZWlnaHQgPSB0aGlzLnNjcm9sbEhlaWdodDtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBuYXZpZ2F0b3JTZXJ2aWNlOiBOYXZpZ2F0b3JTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBzeXNNZW51U2VydmljZTogU3lzTWVudVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlY3Vyc2l2ZVNlcnZpY2U6IFJlY3Vyc2l2ZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxyXG4gICAgcHJpdmF0ZSBtZW51U2VydmljZTogTWVudVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG9yZ2FuaXphdGlvblNlcnZpY2U6IE9yZ2FuaXphdGlvblNlcnZpY2UsXHJcbiAgICBwdWJsaWMgbGF5b3V0U2VydmljZTogTGF5b3V0U2VydmljZSxcclxuICAgIHByaXZhdGUgbWxzOiBNdWx0aUxhbmd1YWdlU2VydmljZSxcclxuICAgIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZSxcclxuICAgIHByaXZhdGUgYXBwQ29uZmlnU2VydmljZTogQXBwQ29uZmlnU2VydmljZSxcclxuICApIHtcclxuICAgIHRoaXMubWxzLmxhbmckLnN1YnNjcmliZSh4ID0+IHRoaXMubGFuZyA9IHgpO1xyXG4gICAgdGhpcy5sYXlvdXRTZXJ2aWNlLmxlZnRCYXJXaWRlV2lkdGgkLnN1YnNjcmliZSh4ID0+IHRoaXMubGVmdEJhcldpZGVXaWR0aCA9IHgpXHJcbiAgICB0aGlzLmxheW91dFNlcnZpY2UuaGVhZGVySGVpZ2h0JC5zdWJzY3JpYmUoeCA9PiB0aGlzLnNlY29uZGFyeU5hdlRvcCA9IHgpO1xyXG5cclxuICAgIHRoaXMubmF2aWdhdG9yU2VydmljZS53aWRlTW9kZSQuc3Vic2NyaWJlKHggPT4ge1xyXG4gICAgICB0aGlzLndpZGVNb2RlID0geDtcclxuICAgICAgdGhpcy5nZW9Db21wdXRlKCk7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMubGF5b3V0U2VydmljZS5sZWZ0QmFyQ3VycmVudFdpZHRoJC5uZXh0KCEheCA/IHRoaXMubGVmdEJhcldpZGVXaWR0aCA6IHRoaXMubGF5b3V0U2VydmljZS5sZWZ0QmFyVGhpbldpZHRoKTtcclxuICAgICAgfSlcclxuICAgIH0pO1xyXG4gICAgdGhpcy5yZXNpemVTdHJlYW0kLnBpcGUoXHJcbiAgICAgIGRlYm91bmNlVGltZSg1MDApXHJcbiAgICApLnN1YnNjcmliZShfID0+IHtcclxuICAgICAgdGhpcy5nZW9Db21wdXRlKCk7XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcblxyXG4gICAgdGhpcy5tZW51Q2xpY2tlZEl0ZW0gPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdtZW51Q3VycmVudENsaWNrZWQnKSEpXHJcbiAgICBpZighIXRoaXMubWVudUNsaWNrZWRJdGVtKXtcclxuICAgICAgdGhpcy5tZW51Q2xpY2tlZEl0ZW0udHJlZSRTZWxlY3RlZCA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgICAgdGhpcy5saW5lckl0ZW1zJC5zdWJzY3JpYmUoeCA9PiB7XHJcblxyXG4gICAgICAgICAgaWYoISF4ICYmIHgubGVuZ3RoID4gMCAmJiB0aGlzLmNoZWNrZWRMb2FkaW5nTWVudSA9PSBmYWxzZSl7XHJcbiAgICAgICAgICAgIGxldCBhcnJheSA6IElOYXZpZ2F0b3JJdGVtW10gPSBbXTtcclxuICAgICAgICAgICAgbGV0IGFycmF5UGFycmVudCA6IElOYXZpZ2F0b3JJdGVtW10gPSBbXTtcclxuICAgICAgICAgICAgaWYodGhpcy5tZW51Q2xpY2tlZEl0ZW0/LnRyZWUkVGllciA9PSAyKXtcclxuICAgICAgICAgICAgICBhcnJheSA9IHguZmlsdGVyKHkgPT4geS5pZCA9PSB0aGlzLm1lbnVDbGlja2VkSXRlbS5pZClcclxuICAgICAgICAgICAgICBhcnJheVBhcnJlbnQgPSB4LmZpbHRlcih5ID0+IHkuaWQgPT0gdGhpcy5tZW51Q2xpY2tlZEl0ZW0udHJlZSRQYXJlbnQpXHJcbiAgICAgICAgICAgICAgYXJyYXlbMF0udHJlZSRTZWxlY3RlZCA9dHJ1ZVxyXG4gICAgICAgICAgICAgIGlmKHRoaXMubWVudUNsaWNrZWRJdGVtLnRyZWUkQ2hpbGRyZW4ubGVuZ3RoID4gMCl7XHJcbiAgICAgICAgICAgICAgICBhcnJheVswXS50cmVlJEV4cGFuZGVkID0gdHJ1ZVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBhcnJheVBhcnJlbnRbMF0udHJlZSRTZWxlY3RlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgYXJyYXlQYXJyZW50WzBdLnRyZWUkRXhwYW5kZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIGxldCBlbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21haW4tbWVudS0nICsgYXJyYXlQYXJyZW50WzBdLmlkKVxyXG4gICAgICAgICAgICAgIGxldCBlbGVtZW50MiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtYWluLW1lbnUtJyArIGFycmF5WzBdLmlkKVxyXG4gICAgICAgICAgICAgIGlmIChhcnJheVBhcnJlbnRbMF0udHJlZSRFeHBhbmRlZCkge1xyXG4gICAgICAgICAgICAgICAgZWxlbWVudD8uY2xhc3NMaXN0LmFkZCgnZXhwYW5kZWQnKVxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB0aGlzLml0ZW1zLmZvckVhY2goZWxzID0+IHtcclxuICAgICAgICAgICAgICAgICAgaWYoZWxzLmlkID09IGFycmF5UGFycmVudFswXS5pZCl7XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzLnRyZWUkU2VsZWN0ZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIGVscy50cmVlJEV4cGFuZGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICBpZihlbHMudHJlZSRDaGlsZHJlbi5sZW5ndGggPiAwKXtcclxuICAgICAgICAgICAgICAgICAgICAgIGVscy50cmVlJENoaWxkcmVuLm1hcCh4ID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYoeC5pZCA9PSB0aGlzLm1lbnVDbGlja2VkSXRlbS5pZCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgeC50cmVlJFNlbGVjdGVkID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgZWxlbWVudD8uY2xhc3NMaXN0LnJlbW92ZSgnZXhwYW5kZWQnKVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBpZiAoYXJyYXlQYXJyZW50WzBdLnRyZWUkQWN0aXZlKSB7XHJcbiAgICAgICAgICAgICAgICBlbGVtZW50Py5jbGFzc0xpc3QuYWRkKCdhY3RpdmUnKVxyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBlbGVtZW50Py5jbGFzc0xpc3QucmVtb3ZlKCdhY3RpdmUnKVxyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgaWYoYXJyYXlbMF0udHJlZSRFeHBhbmRlZCl7XHJcbiAgICAgICAgICAgICAgICBlbGVtZW50Mj8uY2xhc3NMaXN0LmFkZCgnZXhwYW5kZWQnKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5pdGVtcy5tYXAoZWxzID0+IHtcclxuICAgICAgICAgICAgICAgICAgZWxzLnRyZWUkQ2hpbGRyZW4ubWFwKGVsID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZihlbC5pZCA9PSBhcnJheVswXS5pZCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICBlbC50cmVlJFNlbGVjdGVkID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmKHRoaXMucm91dGVyLnVybCA9PSBlbC51cmwpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgZWwudHJlZSRTZWxlY3RlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgfWVsc2Uge1xyXG4gICAgICAgICAgICAgICAgZWxlbWVudDI/LmNsYXNzTGlzdC5yZW1vdmUoJ2V4cGFuZGVkJylcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gXHJcbiAgICAgICAgICAgIGVsc2UgaWYodGhpcy5tZW51Q2xpY2tlZEl0ZW0/LnRyZWUkVGllciA9PSAzKXsgLy9u4bq/dSBsw6AgMyBj4bqlcFxyXG4gICAgICAgICAgICAgIGFycmF5ID0geC5maWx0ZXIoeSA9PiB5LmlkID09IHRoaXMubWVudUNsaWNrZWRJdGVtLmlkKVxyXG4gICAgICAgICAgICAgIGFycmF5UGFycmVudCA9IHguZmlsdGVyKHkgPT4geS5pZCA9PSB0aGlzLm1lbnVDbGlja2VkSXRlbS50cmVlJFBhcmVudClcclxuICAgICAgICAgICAgICBsZXQgYXJyYXlHcmFuZFBhcnJlbnQgPSB4LmZpbHRlcih6ID0+IHouaWQgPT0gYXJyYXlQYXJyZW50WzBdLnBhcmVudClcclxuICAgICAgICAgICAgICBsZXQgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtYWluLW1lbnUtJyArIGFycmF5UGFycmVudFswXS5pZClcclxuICAgICAgICAgICAgICBsZXQgZWxlbWVudDIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWFpbi1tZW51LScgKyBhcnJheUdyYW5kUGFycmVudFswXS5pZClcclxuICAgICAgICAgICAgICBhcnJheVswXS50cmVlJFNlbGVjdGVkID10cnVlXHJcbiAgICAgICAgICAgICAgYXJyYXlQYXJyZW50WzBdLnRyZWUkU2VsZWN0ZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIGFycmF5UGFycmVudFswXS50cmVlJEV4cGFuZGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICBhcnJheUdyYW5kUGFycmVudFswXS50cmVlJFNlbGVjdGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICBhcnJheUdyYW5kUGFycmVudFswXS50cmVlJEV4cGFuZGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICBpZiAoYXJyYXlHcmFuZFBhcnJlbnRbMF0udHJlZSRFeHBhbmRlZCkge1xyXG4gICAgICAgICAgICAgICAgZWxlbWVudDI/LmNsYXNzTGlzdC5hZGQoJ2V4cGFuZGVkJylcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgdGhpcy5pdGVtcy5mb3JFYWNoKGVscyA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIGlmKGVscy5pZCA9PSBhcnJheUdyYW5kUGFycmVudFswXS5pZCl7XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzLnRyZWUkU2VsZWN0ZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIGVscy50cmVlJEV4cGFuZGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGVsZW1lbnQyPy5jbGFzc0xpc3QucmVtb3ZlKCdleHBhbmRlZCcpXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmIChhcnJheUdyYW5kUGFycmVudFswXS50cmVlJEFjdGl2ZSkge1xyXG4gICAgICAgICAgICAgICAgZWxlbWVudDI/LmNsYXNzTGlzdC5hZGQoJ2FjdGl2ZScpXHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGVsZW1lbnQyPy5jbGFzc0xpc3QucmVtb3ZlKCdhY3RpdmUnKVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICBpZiAoYXJyYXlQYXJyZW50WzBdLnRyZWUkRXhwYW5kZWQpIHtcclxuICAgICAgICAgICAgICAgIGVsZW1lbnQ/LmNsYXNzTGlzdC5hZGQoJ2V4cGFuZGVkJylcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgdGhpcy5pdGVtcy5mb3JFYWNoKGVscyA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIGlmKGVscy5pZCA9PSBhcnJheUdyYW5kUGFycmVudFswXS5pZCl7XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzLnRyZWUkU2VsZWN0ZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIGVscy50cmVlJEV4cGFuZGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICBpZihlbHMudHJlZSRDaGlsZHJlbi5sZW5ndGggPiAwKXtcclxuICAgICAgICAgICAgICAgICAgICAgIGVscy50cmVlJENoaWxkcmVuLm1hcCh4ID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYoeC5pZCA9PSBhcnJheVBhcnJlbnRbMF0uaWQpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHgudHJlZSRTZWxlY3RlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgeC50cmVlJEV4cGFuZGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZih4LnRyZWUkQ2hpbGRyZW4ubGVuZ3RoID4gMCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgeC50cmVlJENoaWxkcmVuLm1hcCh5ID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHkuaWQgPT0gYXJyYXlbMF0uaWQpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5LnRyZWUkU2VsZWN0ZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgZWxlbWVudD8uY2xhc3NMaXN0LnJlbW92ZSgnZXhwYW5kZWQnKVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBpZiAoYXJyYXlQYXJyZW50WzBdLnRyZWUkQWN0aXZlKSB7XHJcbiAgICAgICAgICAgICAgICBlbGVtZW50Py5jbGFzc0xpc3QuYWRkKCdhY3RpdmUnKVxyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBlbGVtZW50Py5jbGFzc0xpc3QucmVtb3ZlKCdhY3RpdmUnKVxyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuY2hlY2tlZExvYWRpbmdNZW51ID0gdHJ1ZVxyXG4gICAgICAgIH0pXHJcbiAgICAgIClcclxuICAgIH0sMjAwMClcclxuICAgIFxyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG5cclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG5cclxuICAgICAgdGhpcy5nZW9Db21wdXRlKCk7XHJcblxyXG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgICB0aGlzLmxheW91dFNlcnZpY2UubGVmdGJhclJlZHVjZWQkLnN1YnNjcmliZSh4ID0+IHRoaXMubGVmdGJhclJlZHVjZWQgPSB4KVxyXG4gICAgICApXHJcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICAgIHRoaXMubGF5b3V0U2VydmljZS5sZWZ0QmFyQ3VycmVudFdpZHRoJC5zdWJzY3JpYmUoeCA9PiB0aGlzLmxlZnRiYXJDdXJyZW50V2lkdGggPSB4KVxyXG4gICAgICApXHJcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICAgIHRoaXMubWxzLmxhbmckLnN1YnNjcmliZSh4ID0+IHRoaXMucGxhY2Vob2xkZXIgPSB0aGlzLm1scy50cmFucygnVUlfQ09NTU9OX1BMQUNFX0hPTERFUl9TRUFSQ0hfSEVSRScpKVxyXG4gICAgICApXHJcblxyXG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgICB0aGlzLnNlYXJjaFN0cmVhbSRcclxuICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICBkZWJvdW5jZVRpbWUoNTAwKSxcclxuICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcclxuICAgICAgICAgICAgc3dpdGNoTWFwKCh0ZXh0KSA9PiB7XHJcbiAgICAgICAgICAgICAgY29uc29sZS5sb2coJ3N3aXRjaE1hcCB3b3JrcyA9PT09PT09PT09PT09PT09PT09PT09PT09PScpO1xyXG4gICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubmF2aWdhdG9yU2VydmljZS5maW5kSXRlbSh0ZXh0LCB0aGlzLml0ZW1zKTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgIClcclxuICAgICAgICAgIC5zdWJzY3JpYmUoKHgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB9KVxyXG4gICAgICApO1xyXG5cclxuICAgICAgdGhpcy5pdGVtcz8ubWFwKChpdGVtOiBJTmF2aWdhdG9ySXRlbSkgPT4ge1xyXG4gICAgICAgIHRoaXMudmFsaWRhdGVOYXZpZ2F0aW9uSXRlbShpdGVtKTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgICBpZiAoISF0aGlzLml0ZW1zRXJyb3JzLmxlbmd0aCkge1xyXG4gICAgICAgIGNvbnNvbGUuZ3JvdXAoXCJOYXZpZ2F0aW9uIGl0ZW1zIGVycm9yXCIpO1xyXG4gICAgICAgIHRoaXMuaXRlbXNFcnJvcnM/Lm1hcChlcnJvciA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcclxuICAgICAgICB9KVxyXG4gICAgICAgIGNvbnNvbGUuZ3JvdXBFbmQoKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcblxyXG4gICAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZGF0YSQucGlwZShcclxuICAgICAgICAgIGZpbHRlcih4ID0+ICEheCksXHJcbiAgICAgICAgICBtYXAoeCA9PiB4Py5pZCksXHJcbiAgICAgICAgICBzd2l0Y2hNYXAoeCA9PiB0aGlzLnN5c01lbnVTZXJ2aWNlLnJlYWRQZXJtaXR0ZWRNZW51KHghLCB0aGlzLmFwcENvbmZpZ1NlcnZpY2UuQVBQX1RZUEUpKVxyXG4gICAgICAgICkuc3Vic2NyaWJlKHggPT4ge1xyXG4gICAgICAgICAgaWYgKHgub2sgJiYgeC5zdGF0dXMgPT09IDIwMCkge1xyXG4gICAgICAgICAgICBjb25zdCBib2R5OiBJRm9ybWF0ZWRSZXNwb25zZSA9IHguYm9keTtcclxuICAgICAgICAgICAgYm9keS5pbm5lckJvZHkuc29ydCgoYTogYW55LCBiOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAvLyBpbiByZWN1cnNpdmUgY29kZSB3ZSB3aWxsIHJlYWQgZnJvbSBib3R0b20gdG8gdG9wXHJcbiAgICAgICAgICAgICAgaWYgKGEub3JkZXJOdW1iZXIgPiBiLm9yZGVyTnVtYmVyKSByZXR1cm4gLTE7XHJcbiAgICAgICAgICAgICAgaWYgKGEub3JkZXJOdW1iZXIgPT09IGIub3JkZXJOdW1iZXIpIHJldHVybiAwO1xyXG4gICAgICAgICAgICAgIGlmIChhLm9yZGVyTnVtYmVyIDwgYi5vcmRlck51bWJlcikgcmV0dXJuIDE7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIDA7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIHRoaXMubGluZXJJdGVtcyQubmV4dChKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGJvZHkuaW5uZXJCb2R5KSkpO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcblxyXG4gICAgICAgICAgICAgIHRoaXMucmVjdXJzaXZlU2VydmljZS5saW5lckFycmF5VG9OZXN0ZWRBcnJheShcclxuICAgICAgICAgICAgICAgIGJvZHkuaW5uZXJCb2R5LFxyXG4gICAgICAgICAgICAgICAgXCJpZFwiLFxyXG4gICAgICAgICAgICAgICAgXCJjb2RlXCIsXHJcbiAgICAgICAgICAgICAgICBcInBhcmVudFwiLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICAgICAgdGhpcy5vcmdhbml6YXRpb25TZXJ2aWNlLnN0YXR1cyQudmFsdWUsXHJcbiAgICAgICAgICAgICAgICBcIm9yZGVyTnVtXCJcclxuICAgICAgICAgICAgICApLnN1YnNjcmliZShyID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiclwiLCByKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5pdGVtcyA9IHIubGlzdDtcclxuICAgICAgICAgICAgICAgIHRoaXMubGluZXJJdGVtcyA9IHIucmF3TGlzdC5zb3J0KChhOiBhbnksIGI6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICBpZiAoYS5vcmRlck51bWJlciA+IGIub3JkZXJOdW1iZXIpIHJldHVybiAxO1xyXG4gICAgICAgICAgICAgICAgICBpZiAoYS5vcmRlck51bWJlciA9PT0gYi5vcmRlck51bWJlcikgcmV0dXJuIDA7XHJcbiAgICAgICAgICAgICAgICAgIGlmIChhLm9yZGVyTnVtYmVyIDwgYi5vcmRlck51bWJlcikgcmV0dXJuIC0xO1xyXG4gICAgICAgICAgICAgICAgICByZXR1cm4gMDtcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICB0aGlzLm1lbnVTZXJ2aWNlLm5hdmlnYXRpb24kLm5leHQoci5saXN0KTtcclxuICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgKVxyXG5cclxuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgICAgdGhpcy5uYXZpZ2F0b3JTZXJ2aWNlLmNsaWNrZWRJdGVtJC5waXBlKFxyXG4gICAgICAgICAgdGFwKHggPT4gdGhpcy5zZWNvbmRhcnlOYXZQYXJlbnQgPSB4KSxcclxuICAgICAgICAgIGZpbHRlcih4ID0+ICEheClcclxuICAgICAgICApLnN1YnNjcmliZSh4ID0+IHtcclxuXHJcbiAgICAgICAgICB0aGlzLm9uSXRlbUNsaWNrKHghKTtcclxuICAgICAgICAgIGlmICh4Py50cmVlJENoaWxkcmVuICYmIHg/LnRyZWUkQ2hpbGRyZW4ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgaWYoISF0aGlzLml0ZW1zKVxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgbGV0IGl0ZW1BY3RpdmF0ZWQgPSB0aGlzLml0ZW1zLmZpbHRlcih5ID0+IHkgIT09IHggJiYgeS5pZCAhPT0geC50cmVlJFBhcmVudCAmJiB5LnRyZWUkU2VsZWN0ZWQgPT0gdHJ1ZSlcclxuICAgICAgICAgICAgICBpdGVtQWN0aXZhdGVkPy5tYXAoeiA9PiB6LnRyZWUkU2VsZWN0ZWQgPSBmYWxzZSlcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGlmICghIXggJiYgISF4LnBhcmVudCkge1xyXG4gICAgICAgICAgICAgIHRoaXMuaXRlbXMubWFwKHBhcmVudCA9PiB7XHJcbiAgICAgICAgICAgICAgICBwYXJlbnQudHJlZSRDaGlsZHJlbi5tYXAoY2hpbGQgPT4ge1xyXG4gICAgICAgICAgICAgICAgICBpZiAoY2hpbGQudHJlZSRDaGlsZHJlbi5sZW5ndGggPT0gMCAmJiBjaGlsZCAhPSB4KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2hpbGQudHJlZSRTZWxlY3RlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICB9ZWxzZSBpZihjaGlsZC50cmVlJENoaWxkcmVuLmxlbmd0aCA+IDApe1xyXG4gICAgICAgICAgICAgICAgICAgIGNoaWxkLnRyZWUkQ2hpbGRyZW4ubWFwKGsgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgaWYoY2hpbGQuaWQgIT0gay5wYXJlbnQpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjaGlsZC50cmVlJFNlbGVjdGVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZihjaGlsZCAhPSB4ICYmIHgucGFyZW50ICE9IGNoaWxkLmlkKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZih4LmlkID09IClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZC50cmVlJFNlbGVjdGVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNlIGlmICh4LnBhcmVudCA9PSBjaGlsZC5pZCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGQudHJlZSRTZWxlY3RlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gay50cmVlJFNlbGVjdGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIHRoaXMuc2Vjb25kYXJ5TmF2UGFyZW50ID0geCE7XHJcbiAgICAgICAgICB0aGlzLnNlY29uZGFyeU5hdkNoaWxkcmVuID0gdGhpcy5saW5lckl0ZW1zLmZpbHRlcihhID0+IGEucGFyZW50ID09PSB4Py5pZCk7XHJcblxyXG5cclxuICAgICAgICB9KVxyXG4gICAgICApXHJcblxyXG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgICB0aGlzLmxpbmVySXRlbXMkLnN1YnNjcmliZShpdGVtcyA9PiB7XHJcbiAgICAgICAgICBpdGVtcz8ubWFwKHggPT4ge1xyXG4gICAgICAgICAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtYWluLW1lbnUtJyArIHguaWQpXHJcbiAgICAgICAgICAgIGlmICh4LnRyZWUkRXhwYW5kZWQpIHtcclxuICAgICAgICAgICAgICBlbGVtZW50Py5jbGFzc0xpc3QuYWRkKCdleHBhbmRlZCcpXHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgZWxlbWVudD8uY2xhc3NMaXN0LnJlbW92ZSgnZXhwYW5kZWQnKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICh4LnRyZWUkQWN0aXZlKSB7XHJcbiAgICAgICAgICAgICAgZWxlbWVudD8uY2xhc3NMaXN0LmFkZCgnYWN0aXZlJylcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBlbGVtZW50Py5jbGFzc0xpc3QucmVtb3ZlKCdhY3RpdmUnKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9KVxyXG4gICAgICApXHJcblxyXG4gICAgfSlcclxuXHJcbiAgfVxyXG5cclxuICBvblNlYXJjaENoYW5nZShlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuc2VhcmNoU3RyZWFtJC5uZXh0KGUpXHJcbiAgfVxyXG5cclxuICBjbGVhclNlYXJjaCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc2VhcmNoRm9yID0gXCJcIjtcclxuICAgIHRoaXMuc2VhcmNoU3RyZWFtJC5uZXh0KFwiXCIpO1xyXG4gIH1cclxuXHJcbiAgdmFsaWRhdGVOYXZpZ2F0aW9uSXRlbShpdGVtOiBJTmF2aWdhdG9ySXRlbSkge1xyXG4gICAgaWYgKCEhIWl0ZW0uaWQpIHtcclxuICAgICAgdGhpcy5pdGVtc0Vycm9ycy5wdXNoKGBWYWx1ZSBvZiBwcm9wZXJ0eSBcImlkXCIgb2YgbmF2aWdhdGlvbiBpdGVtIFwiJHtpdGVtLmNvZGV9XCIgaXMgbm90IHNldGApO1xyXG4gICAgfVxyXG4gICAgY29uc3QgZmlsdGVyID0gdGhpcy5mbGF0TmF2aWdhdGlvbkNoZWNrLmZpbHRlcih4ID0+IHguaWQgPT09IGl0ZW0uaWQpO1xyXG4gICAgaWYgKGZpbHRlci5sZW5ndGggPT09IDApIHtcclxuICAgICAgdGhpcy5mbGF0TmF2aWdhdGlvbkNoZWNrLnB1c2goe1xyXG4gICAgICAgIGlkOiBpdGVtLmlkLFxyXG4gICAgICAgIGNvdW50OiAwLFxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuaXRlbXNFcnJvcnMucHVzaChgRHVwbGljYXRlZCBOYXZpZ2F0aW9uIGlkICR7aXRlbS5pZH1gKTtcclxuICAgIH07XHJcblxyXG4gICAgaWYgKHRoaXMuaGFzQ2hpbGRyZW4oaXRlbSkpIHtcclxuICAgICAgaXRlbS50cmVlJENoaWxkcmVuPy5tYXAoY2hpbGQgPT4ge1xyXG4gICAgICAgIHRoaXMudmFsaWRhdGVOYXZpZ2F0aW9uSXRlbShjaGlsZCk7XHJcbiAgICAgIH0pXHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgaGFzQ2hpbGRyZW4oaXRlbTogSU5hdmlnYXRvckl0ZW0pOiBib29sZWFuIHtcclxuICAgIGxldCByZXN1bHQgPSBmYWxzZTtcclxuICAgIE9iamVjdC5rZXlzKGl0ZW0pLmZvckVhY2goa2V5ID0+IHtcclxuICAgICAgaWYgKGtleSA9PT0gXCJ0cmVlJENoaWxkcmVuXCIpIHtcclxuICAgICAgICBpZiAoISFpdGVtWyd0cmVlJENoaWxkcmVuJ10/Lmxlbmd0aCkge1xyXG4gICAgICAgICAgcmVzdWx0ID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG4gIGl0ZW1IYXNDaGlsZHJlbihpdGVtOiBJTmF2aWdhdG9ySXRlbSk6IGJvb2xlYW4ge1xyXG4gICAgbGV0IHJlc3VsdDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgT2JqZWN0LmtleXMoaXRlbSkuZm9yRWFjaChrZXkgPT4ge1xyXG4gICAgICBpZiAoa2V5ID09PSAndHJlZSRDaGlsZHJlbicpIHtcclxuICAgICAgICBpZiAoISFpdGVtWyd0cmVlJENoaWxkcmVuJ10/Lmxlbmd0aCkge1xyXG4gICAgICAgICAgcmVzdWx0ID0gdHJ1ZTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgIH07XHJcbiAgICB9KTtcclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgfVxyXG5cclxuICBvbkl0ZW1DbGljayhpdGVtOiBJTmF2aWdhdG9ySXRlbSkge1xyXG4gICAgY29uc3QgY3VycmVudCA9IHRoaXMubGluZXJJdGVtcyQudmFsdWU7XHJcbiAgICBjb25zdCBpdGVtcyA9IHRoaXMubmF2aWdhdG9yU2VydmljZS5zZWZ0VG9nZ2xlRXhwYW5kU2libGluZ3NDb2xsYXBzZShjdXJyZW50LCBpdGVtLmlkKTtcclxuICAgIHRoaXMubGluZXJJdGVtcyQubmV4dChpdGVtcyk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5tYXAoeCA9PiB7XHJcbiAgICAgIGlmICh4KSB4LnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgdG9nZ2xlQ29sbGFwc2UoKTogdm9pZCB7XHJcbiAgICB0aGlzLm5hdmlnYXRvclNlcnZpY2Uud2lkZU1vZGUkLm5leHQoIXRoaXMubmF2aWdhdG9yU2VydmljZS53aWRlTW9kZSQudmFsdWUpXHJcbiAgfVxyXG5cclxuICBvblNlY29uZGFyeUl0ZW1DbGljayhpdGVtOiBhbnkpIHtcclxuICAgIHRoaXMubmF2aWdhdG9yU2VydmljZS5jbGlja2VkSXRlbSQubmV4dChpdGVtKTtcclxuICB9XHJcblxyXG4gIG9uU2Vjb25kYXJ5SGVhZGVyQ2xpY2socGFyZW50OiBhbnkpIHtcclxuICAgIGlmICghIXBhcmVudCkge1xyXG4gICAgICBjb25zdCB0cnlGaWx0ZXIgPSB0aGlzLmxpbmVySXRlbXMuZmlsdGVyKHggPT4geC5pZCA9PT0gcGFyZW50KTtcclxuICAgICAgaWYgKCEhdHJ5RmlsdGVyLmxlbmd0aCkge1xyXG4gICAgICAgIHRoaXMubmF2aWdhdG9yU2VydmljZS5jbGlja2VkSXRlbSQubmV4dCh0cnlGaWx0ZXJbMF0pXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uQ2FuY2VsU2Vjb25kYXJ5TWVudSgpIHtcclxuICAgIHRoaXMuc2Vjb25kYXJ5TmF2UGFyZW50ID0gbnVsbDtcclxuICB9XHJcblxyXG59IiwiPGRpdiBjbGFzcz1cIm5hdmlnYXRvci1jb250YWluZXJcIiBbbmdTdHlsZV09XCJ7XHJcbiAgICB3aWR0aDogbGVmdGJhckN1cnJlbnRXaWR0aCArICdweCdcclxufVwiPlxyXG4gICAgQGlmICh3aWRlTW9kZSkge1xyXG4gICAgPGRpdiBjbGFzcz1cImlucHV0LXNlYXJjaC1jb250YWluZXJcIiBbY2xhc3Mub3BhY2l0eTBdPVwiISFsZWZ0YmFyUmVkdWNlZFwiIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICB3aWR0aDogbGF5b3V0U2VydmljZS5sZWZ0QmFyQ3VycmVudFdpZHRoJC52YWx1ZSAtIGxheW91dFNlcnZpY2UubGVmdEJhclNlY29uZEljb25MZWZ0IC0gbGF5b3V0U2VydmljZS5zY3JvbGxCYXJXaWR0aCAtIDEgKyAncHgnXHJcbiAgICB9XCI+XHJcbiAgICAgICAgPGlucHV0IGlkPVwibmF2aWdhdG9yLXNlYXJjaFwiIFtwbGFjZWhvbGRlcl09XCInVUlfQ09NTU9OX1BMQUNFX0hPTERFUl9TRUFSQ0hfSEVSRScgfCB0cmFuc2xhdGU6IGxhbmdcIiB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2VhcmNoRm9yXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25TZWFyY2hDaGFuZ2UoJGV2ZW50KVwiPlxyXG4gICAgICAgIEBpZiAoISFzZWFyY2hGb3IubGVuZ3RoKSB7XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInNlYXJjaC1jbGVhci13cmFwcGVyXCIgKGNsaWNrKT1cImNsZWFyU2VhcmNoKClcIj5cclxuICAgICAgICAgICAgPGkgY2xhc3M9XCJmZWF0aGVyLXhcIj48L2k+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgfVxyXG4gICAgPC9kaXY+XHJcbiAgICB9XHJcblxyXG4gICAgPGRpdiBpZD1cIm5hdlwiIFtjbGFzcy5zaWRlYmFyXT1cIiF3aWRlTW9kZVwiPlxyXG4gICAgICAgIEBpZiAoISFsb2FkaW5nKSB7XHJcbiAgICAgICAgPGNvcmUtbG9hZGluZy1zdXJmYWNlPjwvY29yZS1sb2FkaW5nLXN1cmZhY2U+XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICA8dWwgaWQ9XCJtYWluLW1lbnVcIiAjbWFpbk1lbnUgW3N0eWxlXT1cIidoZWlnaHQ6ICcgKyBzY3JvbGxIZWlnaHQgKyAncHg7J1wiIFtjbGFzcy50aGluLW1vZGVdPVwiIXdpZGVNb2RlXCJcclxuICAgICAgICAgICAgW2NsYXNzLm1lbnVdPVwiIXdpZGVNb2RlXCI+XHJcbiAgICAgICAgICAgIEBpZiAoISFpdGVtcz8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIEBmb3IoaXRlbSBvZiBpdGVtczsgdHJhY2sgJGluZGV4KSB7XHJcbiAgICAgICAgICAgIDxhcHAtaXRlbSBbaXRlbV09XCJpdGVtXCIgW2xldmVsXT1cIjFcIj48L2FwcC1pdGVtPlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIEBpZiAoISFyaWdodEljb24pIHtcclxuICAgICAgICAgICAgPGxpIGNsYXNzPVwicGFyZW50IHJpZ2h0LXBhcnQtaXRlbVwiIFtjbGFzcy5tZW51LWl0ZW1dPVwid2lkZU1vZGVcIj5cclxuICAgICAgICAgICAgICAgIDxhIChjbGljayk9XCJyaWdodEljb24uZnVuY3Rpb24oKVwiIGNsYXNzPVwibm8tdmVydGljYWwtcGFkZGluZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyaWdodC1pY29uLXdyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgW2NsYXNzXT1cIidyaWdodC1pY29uICcgKyByaWdodEljb24uZmVhdGhlckNsYXNzXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmlnaHQtaWNvbi1iYWRnZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgcmlnaHRJY29uLmJhZGdlQ291bnQgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgPC91bD5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbGxhcHNlLXRvZ2dsZXJcIiBbY2xhc3MuZC1ub25lXT1cIiFsYXlvdXRTZXJ2aWNlLmxlZnRiYXJPcGVuJC52YWx1ZVwiXHJcbiAgICAgICAgICAgIFthcHBUb29sdGlwXT1cIndpZGVNb2RlID8gKCdVSV9MRUZUQkFSX1RPR0dMRVJfQ09MTEFQU0UnIHwgdHJhbnNsYXRlIDogbGFuZykgOiAoJ1VJX0xFRlRCQVJfVE9HR0xFUl9FWFBBTkQnIHwgdHJhbnNsYXRlOiBsYW5nKVwiXHJcbiAgICAgICAgICAgIFtzaG93QW55d2F5XT1cInRydWVcIiBwb3NpdGlvbj1cImFib3ZlXCIgKGNsaWNrKT1cInRvZ2dsZUNvbGxhcHNlKClcIiBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICB3aWR0aDogbGF5b3V0U2VydmljZS5sZWZ0QmFyQ3VycmVudFdpZHRoJC52YWx1ZSAtIDggKiAyICsgJ3B4J1xyXG4gICAgICAgICAgICB9XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xsYXBzZS10b2dnbGVyLWlubmVyXCIgW2NsYXNzLnRoaW4tbW9kZV09XCIhd2lkZU1vZGVcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb3JlLWxpbmUtd3JhcHBlclwiIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgICAgICB3aWR0aDogbGF5b3V0U2VydmljZS5sZWZ0QmFyQ3VycmVudFdpZHRoJC52YWx1ZSAtIDggKiAyICsgJ3B4J1xyXG4gICAgICAgICAgICAgICAgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxjb3JlLWxpbmU+PC9jb3JlLWxpbmU+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8c3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICBAaWYgKHdpZGVNb2RlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmZWF0aGVyLWNoZXZyb25zLWxlZnRcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmZWF0aGVyLWNoZXZyb25zLXJpZ2h0XCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIEBpZiAod2lkZU1vZGUpIHtcclxuICAgICAgICAgICAgICAgIDxzcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7ICdVSV9MRUZUQkFSX1RPR0dMRVJfQ09MTEFQU0UnIHwgdHJhbnNsYXRlOiBsYW5nIH19XHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICBAaWYgKCF3aWRlTW9kZSAmJiAhIXNlY29uZGFyeU5hdlBhcmVudCAmJiAhIXNlY29uZGFyeU5hdkNoaWxkcmVuLmxlbmd0aCkge1xyXG4gICAgPGRpdiAjc2Vjb25kYXJ5IGlkPVwic2Vjb25kYXJ5LW5hdlwiIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICB3aWR0aDogc2Vjb25kYXJ5TmF2V2lkdGggKyAncHgnLFxyXG4gICAgICAgIHRvcDogc2Vjb25kYXJ5TmF2VG9wICsgMTUgKyAncHgnLFxyXG4gICAgICAgIGxlZnQ6IGxheW91dFNlcnZpY2UubGVmdEJhclRoaW5XaWR0aCArIDE1ICsgJ3B4J1xyXG4gICAgfVwiPlxyXG4gICAgICAgIDxkaXYgaWQ9XCJzZWNvbmRhcnktbmF2LWlubmVyXCI+XHJcbiAgICAgICAgICAgIDxkaXYgaWQ9XCJzZWNvbmRhcnktbmF2LWhlYWRlclwiIFtjbGFzcy5jdXJzb3ItcG9pbnRlcl09XCIhIXNlY29uZGFyeU5hdlBhcmVudC50cmVlJFBhcmVudFwiIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgIHdpZHRoOiBzZWNvbmRhcnlOYXZXaWR0aCArICdweCdcclxuICAgICAgICAgICAgfVwiIChjbGljayk9XCJvblNlY29uZGFyeUhlYWRlckNsaWNrKHNlY29uZGFyeU5hdlBhcmVudC50cmVlJFBhcmVudClcIj5cclxuICAgICAgICAgICAgICAgIEBpZiAoISFzZWNvbmRhcnlOYXZQYXJlbnQudHJlZSRQYXJlbnQpIHtcclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXJyb3ctd3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmVhdGhlci1hcnJvdy1sZWZ0XCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgPHNwYW4gW2FwcFRvb2x0aXBdPVwic2Vjb25kYXJ5TmF2UGFyZW50LmNvZGUgfCB0cmFuc2xhdGU6IGxhbmcgfCB1cHBlcmNhc2VcIj5cclxuICAgICAgICAgICAgICAgICAgICB7eyBzZWNvbmRhcnlOYXZQYXJlbnQuY29kZSB8IHRyYW5zbGF0ZTogbGFuZyB8IHVwcGVyY2FzZSB9fVxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhcnJvdy13cmFwcGVyIGN1cnNvci1wb2ludGVyXCIgc3R5bGU9XCJmbG9hdDogcmlnaHQ7XCIgKGNsaWNrKT1cIm9uQ2FuY2VsU2Vjb25kYXJ5TWVudSgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmZWF0aGVyLXhcIj48L2k+XHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGlkPVwic2Vjb25kYXJ5LW5hdi1saXN0XCI+XHJcbiAgICAgICAgICAgICAgICA8dWwgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgIG1heEhlaWdodDogc2Vjb25kYXJ5TmF2SGVpZ2h0IC0gNTAgKyAncHgnXHJcbiAgICAgICAgICAgICAgICB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgQGZvcihpdCBvZiBzZWNvbmRhcnlOYXZDaGlsZHJlbjsgdHJhY2sgJGluZGV4KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwicGFyZW50XCIgKGNsaWNrKT1cIm9uU2Vjb25kYXJ5SXRlbUNsaWNrKGl0KVwiIFtjbGFzcy5oYXMtY2hpbGRyZW5dPVwiaXQudHJlZSRIYXNDaGlsZHJlblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YSBbYXBwVG9vbHRpcF09XCJzZWNvbmRhcnlOYXZQYXJlbnQuY29kZSB8IHRyYW5zbGF0ZTogbGFuZyB8IHVwcGVyY2FzZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXQudHJlZSRUaXRsZSB8IHRyYW5zbGF0ZTogbGFuZyB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoaXQudHJlZSRIYXNDaGlsZHJlbikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXJyb3ctd3JhcHBlclwiIHN0eWxlPVwiZmxvYXQ6IHJpZ2h0O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmZWF0aGVyLWFycm93LXJpZ2h0XCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIH1cclxuXHJcbjwvZGl2PiJdfQ==