@sunbird-cb/tree-hierarchy 0.0.2-cbrelease-4.8.29 → 0.0.3-cbrelease-4.8.29
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/action-bar/action-bar.component.mjs +3 -2
- package/esm2022/lib/components/approval/approval.component.mjs +3 -2
- package/esm2022/lib/components/approve-view/approve-view.component.mjs +3 -2
- package/esm2022/lib/components/categories-preview/categories-preview.component.mjs +3 -2
- package/esm2022/lib/components/category-edit/category-edit-module/category-edit-module.component.mjs +3 -2
- package/esm2022/lib/components/conforamtion-popup/conforamtion-popup.component.mjs +3 -2
- package/esm2022/lib/components/connector/connector.component.mjs +3 -2
- package/esm2022/lib/components/create-categories/create-categories.component.mjs +3 -2
- package/esm2022/lib/components/create-term/create-term.component.mjs +3 -2
- package/esm2022/lib/components/create-term-from-framework/create-term-from-framework.component.mjs +3 -2
- package/esm2022/lib/components/org-hierarchy-add-modal/org-hierarchy-add-modal.component.mjs +5 -4
- package/esm2022/lib/components/pending-approval/pending-approval.component.mjs +3 -2
- package/esm2022/lib/components/term-card/term-card.component.mjs +3 -2
- package/esm2022/lib/components/tree-column-view/tree-column-view.component.mjs +3 -2
- package/esm2022/lib/components/tree-view/tree-view.component.mjs +3 -2
- package/esm2022/lib/containers/config-framework/config-framework.component.mjs +3 -2
- package/esm2022/lib/containers/dashboard/dashboard.component.mjs +3 -2
- package/esm2022/lib/pipes/order-by.pipe.mjs +3 -2
- package/esm2022/lib/services/approval.service.mjs +3 -2
- package/esm2022/lib/services/connector.service.mjs +3 -2
- package/esm2022/lib/services/framework.service.mjs +3 -2
- package/esm2022/lib/services/local-connection.service.mjs +3 -2
- package/esm2022/lib/services/odcs.service.mjs +3 -2
- package/esm2022/lib/tree-hierarchy-routing.module.mjs +3 -2
- package/esm2022/lib/tree-hierarchy.component.mjs +3 -2
- package/esm2022/lib/tree-hierarchy.module.mjs +3 -2
- package/esm2022/lib/tree-hierarchy.service.mjs +3 -2
- package/esm2022/material.module.mjs +3 -2
- package/fesm2022/sunbird-cb-tree-hierarchy.mjs +2 -2
- package/fesm2022/sunbird-cb-tree-hierarchy.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -12,7 +12,7 @@ import * as i5 from "@angular/common";
|
|
|
12
12
|
import * as i6 from "@angular/material/button";
|
|
13
13
|
import * as i7 from "@angular/material/icon";
|
|
14
14
|
import * as i8 from "@angular/material/menu";
|
|
15
|
-
|
|
15
|
+
class TermCardComponent {
|
|
16
16
|
set data(value) {
|
|
17
17
|
this._data = value;
|
|
18
18
|
this._data.children.highlight = false;
|
|
@@ -320,6 +320,7 @@ export class TermCardComponent {
|
|
|
320
320
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TermCardComponent, deps: [{ token: i1.FrameworkService }, { token: i2.LocalConnectionService }, { token: i3.ApprovalService }, { token: i4.MatLegacyDialog }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
321
321
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TermCardComponent, selector: "lib-term-card", inputs: { enableThreeDots: "enableThreeDots", checkIfChildOrg: "checkIfChildOrg", data: "data" }, outputs: { isSelected: "isSelected", selectedCard: "selectedCard", cardAction: "cardAction" }, viewQueries: [{ propertyName: "dialogTemplate", first: true, predicate: ["dialogTemplate"], descendants: true }], ngImport: i0, template: "<ng-container [ngSwitch]=\"( (data && data?.cardSubType) || 'cardMinimal')\">\n <ng-container *ngSwitchCase=\"'standard'\" [ngTemplateOutlet]=\"cardStandard\"></ng-container>\n <ng-container *ngSwitchCase=\"'space-saving'\" [ngTemplateOutlet]=\"cardSpaceSaving\"></ng-container>\n <ng-container *ngSwitchDefault [ngTemplateOutlet]=\"cardMinimal\"></ng-container>\n</ng-container>\n\n<ng-template #cardMinimal>\n <div #cardRef class=\"term-card clickable {{data.index}}\" (click)=\"cardClicked(data, cardRef)\"\n [ngClass]=\"[data.children.selected?'selected':'', data.children.approvalStatus === 'Draft'? 'inDraft':'',\n data.children.associationProperties?.approvalStatus === 'Draft' && isApprovalRequired && !approvalList.length || data.children.highlight && isApprovalRequired ? 'inAssociationDraft':'']\"\n id=\"{{data.children.name}}\"\n [ngStyle]=\"{'background-color':getColor(data.index,cardRef,'bgColor',data)}\">\n <!-- (click)=\"data.selected=!data.selected\" --> \n <div class=\"term-card-parent\">\n <!-- <Below element is to show id on top left of the card> -->\n <!-- <div class=\"id\" [hidden]=\"true\">{{data.children.code}}</div> -->\n \n <div class=\"term-card-content w-full\">\n <!-- <ng-container *ngIf=\"data?.children?.refId\">\n <div class=\"ribbon\">{{data?.children?.refId}}</div>\n </ng-container> -->\n\n <ng-container *ngIf=\"data?.children?.additionalProperties?.competencyArea?.name\">\n <div class=\"mb-2\">\n <span class=\"comp-area {{data?.children?.additionalProperties?.competencyArea?.name?.toLowerCase()}}\">{{data?.children?.additionalProperties?.competencyArea?.name}}</span>\n </div>\n </ng-container>\n <div class=\"flex flex-between flex-middle\">\n <div class=\"card-title\">{{data.children.name}}\n <ng-container *ngIf=\"data?.children?.refId\">\n <div class=\"refIdCard mt-2\">\n <span>{{data?.children?.refId}} </span>\n </div>\n </ng-container> \n </div>\n <ng-container *ngIf=\"data?.columnInfo?.config?.enableInfoIcon\" >\n <button type=\"button\" mat-icon-button i18n-aria-label aria-label=\"info items\" class=\"action-btn small-btn\" (click)=\"openDialog()\">\n <mat-icon class=\"small-icon\">info</mat-icon>\n </button>\n </ng-container>\n </div>\n <!-- <ng-container *ngIf=\"data?.children?.refId\">\n <div class=\"refIdCard px-4\">\n <span>{{data?.children?.refId}} </span>\n </div>\n </ng-container> -->\n <!-- <span>++{{data.children.selected}}+++</span>\n <span>=={{data.children.status}}==</span> -->\n <div class=\"flex gap-3 flex-middle mt-4\">\n <div class=\"card-description flex flex-middle gap-1\">\n <mat-icon svgIcon=\"frac\"></mat-icon> \n <span>{{(data.children.children) ? data.children.children?.length : 0}} Child Org</span>\n </div>\n <div class=\"card-description flex flex-middle gap-1\">\n <mat-icon svgIcon=\"frac\"></mat-icon> \n <span>{{getuserCount(data)}} Users</span>\n </div>\n <ng-container *ngIf=\"data?.columnInfo?.config?.enableThreeDot && enableThreeDots\" >\n <button type=\"button\" mat-icon-button i18n-aria-label aria-label=\"action items\"\n [matMenuTriggerFor]=\"orgMenu\" [matMenuTriggerData]=\"{'data':data, 'cardRef': cardRef}\" class=\"action-btn small-btn ml-auto\">\n <mat-icon class=\"small-icon\">more_vert</mat-icon>\n </button>\n </ng-container>\n </div>\n </div>\n </div>\n <!-- <p>{{data.children.approvalStatus}}, {{data.children.associationProperties?.approvalStatus}}</p> -->\n <!-- *ngIf=\"!data.isViewOnly && data.children.approvalStatus === 'Draft' && isApprovalRequired\" -->\n <!-- (click)=\"$event.stopPropagation();\" -->\n <!-- <div class=\"term-card-checkbox\">\n <mat-checkbox color=\"primary\" *ngIf=\"data.children.approvalStatus === 'Draft' && isApprovalRequired && !approvalList.length || \n data.children.associationProperties?.approvalStatus === 'Draft' && isApprovalRequired && !approvalList.length ||\n data.children.highlight && isApprovalRequired\" [checked]=\"data.children.highlight\" class=\"termSelection\"\n (change)=\"handleProductClick(data.children, $event)\" (click)=\"$event.stopPropagation()\"></mat-checkbox>\n <mat-icon color=\"primary\" class=\"approve-flag\"\n *ngIf=\"data.children.highlight && isApprovalRequired\">{{app_strings.flag}}</mat-icon>\n </div> -->\n </div>\n</ng-template>\n\n<ng-template #cardStandard>\n <div>\n {{data.children.name}} \n </div>\n <div>\n {{data.children.description}} s\n </div>\n</ng-template>\n\n<ng-template #cardSpaceSaving>\n <div>\n {{data.children.name}}\n </div>\n</ng-template>\n\n<mat-menu #cardMenu=\"matMenu\" class=\"menu-sec\">\n <ng-template matMenuContent let-rowData=\"data\" let-cardRef=\"cardRef\">\n <!-- <div > -->\n <button *ngIf=\"data.columnInfo.config.enableView\" (click)=\"view(data, data.children, data.index)\" mat-menu-item name=\"channel-analytics-button\"\n class=\"ws-mat-primary-text\" i18n-aria-label aria-label=\"Analytics\">\n <mat-icon>visibility</mat-icon> <span>View</span>\n </button>\n <button *ngIf=\"data.columnInfo.config.enabaleEdit\" (click)=\"edit(data, data.children,data.index, cardRef)\"\n mat-menu-item name=\"channel-analytics-button\" class=\"ws-mat-primary-text\" i18n-aria-label\n aria-label=\"Analytics\">\n <mat-icon>edit</mat-icon>\n <span>Edit</span>\n </button>\n <button *ngIf=\"data.columnInfo.config.enableAdd\" (click)=\"create(data)\"\n mat-menu-item name=\"channel-analytics-button\" class=\"ws-mat-primary-text\" i18n-aria-label\n aria-label=\"Analytics\">\n <mat-icon>add</mat-icon>\n <span>Add</span>\n </button>\n <button *ngIf=\"data.columnInfo.config.enableDelete\" (click)=\"delete(data)\"\n mat-menu-item name=\"channel-analytics-button\" class=\"ws-mat-primary-text\" i18n-aria-label\n aria-label=\"Analytics\">\n <mat-icon>delete</mat-icon>\n <span>Delete</span>\n </button>\n </ng-template>\n</mat-menu>\n\n<mat-menu #orgMenu=\"matMenu\" class=\"menu-sec\">\n <ng-template matMenuContent let-rowData=\"data\" let-cardRef=\"cardRef\">\n <button *ngIf=\"data.columnInfo.config.enableUpdateHierarchy && data.index > 1\" (click)=\"menuAction('update-hierarchy', data)\" mat-menu-item name=\"channel-analytics-button\"\n class=\"action-btn\" i18n-aria-label aria-label=\"Analytics\">\n <mat-icon>edit</mat-icon> <span>Update Hierarchy</span>\n </button>\n <button *ngIf=\"data.columnInfo.config.enabaleRemoveConnection && !checkIfChildOrg\" (click)=\"menuAction('remove-term', data)\"\n mat-menu-item name=\"channel-analytics-button\" class=\"action-btn\" i18n-aria-label\n aria-label=\"Analytics\">\n <mat-icon>close</mat-icon>\n <span>Remove Connection</span>\n </button>\n <button *ngIf=\"data.columnInfo.config.enableManageOrganization\" (click)=\"menuAction('manage-org', data)\"\n mat-menu-item name=\"channel-analytics-button\" class=\"action-btn\" i18n-aria-label\n aria-label=\"Analytics\">\n <mat-icon>settings</mat-icon>\n <span>Manage Organisation</span>\n </button>\n </ng-template>\n</mat-menu>\n\n<!-- Add this template to your component -->\n<ng-template #dialogTemplate>\n <div class=\"flex flex-col flex-middle\">\n <mat-icon class=\"large-icon color-secondary\">error_outline</mat-icon>\n <p class=\"color-primary modal-text margin-top-s\">Select a organisation to {{enableThreeDots ? 'add or ' : ''}}see further connections.</p>\n <button mat-button type=\"button\" (click)=\"closeModal()\" class=\"btn-common btn-primary modal-btn\">Close</button>\n </div>\n</ng-template>\n\n", styles: [".term-card{border:1px solid rgba(0,0,0,.08);padding:.9rem;margin:0 5px 1em;background-color:#fff;border-radius:8px;overflow:hidden;position:relative;z-index:45;display:flex;align-items:center;box-shadow:#0000001a 0 1px 3px,#0000000f 0 1px 2px;word-break:break-word}.term-card .termSelection{position:absolute;right:10px;top:10px}.term-card .term-card-parent{display:flex;flex:1 1 0%}.term-card .term-card-parent .term-card-content{white-space:initial}.term-card .term-card-parent .term-card-content .card-title{font-family:Lato;font-size:14px;font-weight:400;line-height:16px}.term-card .term-card-parent .term-card-content .card-description{color:#000;font-size:12px!important;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.term-card .term-card-parent .term-card-content .card-description mat-icon{width:16px;height:16px;color:#1b4ca1}.term-card .term-card-checkbox{width:10%}.term-card.selected{color:#000;border-style:none}.term-card.selected .card-description{color:#000!important}.term-card.selected .card-description mat-icon{color:#000!important}.term-card.clickable{cursor:pointer}.approve-flag{position:absolute;right:5px;top:35px;font-size:24px}::ng-deep .menu-sec{min-height:0px!important;background:#fff!important}::ng-deep .mat-mdc-menu-panel{background-color:#fff!important}::ng-deep .mat-mdc-menu-content,::ng-deep .mat-mdc-menu-item{background-color:#fff!important}.menu-sec{background:#fff!important}.refIdCard{border-radius:12px;width:fit-content;border:1px solid #bbb;padding:0 8px;font-size:8px!important;display:flex;align-items:center}.comp-area{font-family:Inter;font-size:12px;font-weight:600;line-height:16px;text-align:left;padding:8px;border-radius:12px}.comp-area.functional{background:#e24577;color:#fff}.comp-area.domain{background:#7b47a4;color:#fff}.comp-area.behavioural{background:#f9bf71}.ribbon{font-size:8px;font-weight:700;color:#fff}.ribbon{--f: .5em;--r: .8em;position:absolute;top:8px;right:calc(-1 * var(--f));padding-inline:.25em;padding-right:8px;line-height:1.8;background:#fa6900;border-bottom:var(--f) solid rgba(0,0,0,.3333333333);border-left:var(--r) solid rgba(0,0,0,0);clip-path:polygon(var(--r) 0,100% 0,100% calc(100% - var(--f)),calc(100% - var(--f)) 100%,calc(100% - var(--f)) calc(100% - var(--f)),var(--r) calc(100% - var(--f)),0 calc(50% - var(--f) / 2))}.refId-card{font-size:10px}.action-btn{color:#0009}.modal-text{font-size:16px}.large-icon{font-size:46px;width:46px;height:46px}.color-secondary{color:#f3962f}.color-primary{color:#1b4ca1}.modal-btn{width:87px}.small-btn{width:16px!important;height:16px!important;line-height:16px!important;padding:0!important}.small-btn ::ng-deep .mat-mdc-button-touch-target{width:16px!important;height:16px!important}.small-icon{font-size:16px;width:16px;height:16px;line-height:16px}\n"], dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i5.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i5.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i5.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i5.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "component", type: i6.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i6.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i8.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i8.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i8.MatMenuContent, selector: "ng-template[matMenuContent]" }, { kind: "directive", type: i8.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }] }); }
|
|
322
322
|
}
|
|
323
|
+
export { TermCardComponent };
|
|
323
324
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TermCardComponent, decorators: [{
|
|
324
325
|
type: Component,
|
|
325
326
|
args: [{ selector: 'lib-term-card', template: "<ng-container [ngSwitch]=\"( (data && data?.cardSubType) || 'cardMinimal')\">\n <ng-container *ngSwitchCase=\"'standard'\" [ngTemplateOutlet]=\"cardStandard\"></ng-container>\n <ng-container *ngSwitchCase=\"'space-saving'\" [ngTemplateOutlet]=\"cardSpaceSaving\"></ng-container>\n <ng-container *ngSwitchDefault [ngTemplateOutlet]=\"cardMinimal\"></ng-container>\n</ng-container>\n\n<ng-template #cardMinimal>\n <div #cardRef class=\"term-card clickable {{data.index}}\" (click)=\"cardClicked(data, cardRef)\"\n [ngClass]=\"[data.children.selected?'selected':'', data.children.approvalStatus === 'Draft'? 'inDraft':'',\n data.children.associationProperties?.approvalStatus === 'Draft' && isApprovalRequired && !approvalList.length || data.children.highlight && isApprovalRequired ? 'inAssociationDraft':'']\"\n id=\"{{data.children.name}}\"\n [ngStyle]=\"{'background-color':getColor(data.index,cardRef,'bgColor',data)}\">\n <!-- (click)=\"data.selected=!data.selected\" --> \n <div class=\"term-card-parent\">\n <!-- <Below element is to show id on top left of the card> -->\n <!-- <div class=\"id\" [hidden]=\"true\">{{data.children.code}}</div> -->\n \n <div class=\"term-card-content w-full\">\n <!-- <ng-container *ngIf=\"data?.children?.refId\">\n <div class=\"ribbon\">{{data?.children?.refId}}</div>\n </ng-container> -->\n\n <ng-container *ngIf=\"data?.children?.additionalProperties?.competencyArea?.name\">\n <div class=\"mb-2\">\n <span class=\"comp-area {{data?.children?.additionalProperties?.competencyArea?.name?.toLowerCase()}}\">{{data?.children?.additionalProperties?.competencyArea?.name}}</span>\n </div>\n </ng-container>\n <div class=\"flex flex-between flex-middle\">\n <div class=\"card-title\">{{data.children.name}}\n <ng-container *ngIf=\"data?.children?.refId\">\n <div class=\"refIdCard mt-2\">\n <span>{{data?.children?.refId}} </span>\n </div>\n </ng-container> \n </div>\n <ng-container *ngIf=\"data?.columnInfo?.config?.enableInfoIcon\" >\n <button type=\"button\" mat-icon-button i18n-aria-label aria-label=\"info items\" class=\"action-btn small-btn\" (click)=\"openDialog()\">\n <mat-icon class=\"small-icon\">info</mat-icon>\n </button>\n </ng-container>\n </div>\n <!-- <ng-container *ngIf=\"data?.children?.refId\">\n <div class=\"refIdCard px-4\">\n <span>{{data?.children?.refId}} </span>\n </div>\n </ng-container> -->\n <!-- <span>++{{data.children.selected}}+++</span>\n <span>=={{data.children.status}}==</span> -->\n <div class=\"flex gap-3 flex-middle mt-4\">\n <div class=\"card-description flex flex-middle gap-1\">\n <mat-icon svgIcon=\"frac\"></mat-icon> \n <span>{{(data.children.children) ? data.children.children?.length : 0}} Child Org</span>\n </div>\n <div class=\"card-description flex flex-middle gap-1\">\n <mat-icon svgIcon=\"frac\"></mat-icon> \n <span>{{getuserCount(data)}} Users</span>\n </div>\n <ng-container *ngIf=\"data?.columnInfo?.config?.enableThreeDot && enableThreeDots\" >\n <button type=\"button\" mat-icon-button i18n-aria-label aria-label=\"action items\"\n [matMenuTriggerFor]=\"orgMenu\" [matMenuTriggerData]=\"{'data':data, 'cardRef': cardRef}\" class=\"action-btn small-btn ml-auto\">\n <mat-icon class=\"small-icon\">more_vert</mat-icon>\n </button>\n </ng-container>\n </div>\n </div>\n </div>\n <!-- <p>{{data.children.approvalStatus}}, {{data.children.associationProperties?.approvalStatus}}</p> -->\n <!-- *ngIf=\"!data.isViewOnly && data.children.approvalStatus === 'Draft' && isApprovalRequired\" -->\n <!-- (click)=\"$event.stopPropagation();\" -->\n <!-- <div class=\"term-card-checkbox\">\n <mat-checkbox color=\"primary\" *ngIf=\"data.children.approvalStatus === 'Draft' && isApprovalRequired && !approvalList.length || \n data.children.associationProperties?.approvalStatus === 'Draft' && isApprovalRequired && !approvalList.length ||\n data.children.highlight && isApprovalRequired\" [checked]=\"data.children.highlight\" class=\"termSelection\"\n (change)=\"handleProductClick(data.children, $event)\" (click)=\"$event.stopPropagation()\"></mat-checkbox>\n <mat-icon color=\"primary\" class=\"approve-flag\"\n *ngIf=\"data.children.highlight && isApprovalRequired\">{{app_strings.flag}}</mat-icon>\n </div> -->\n </div>\n</ng-template>\n\n<ng-template #cardStandard>\n <div>\n {{data.children.name}} \n </div>\n <div>\n {{data.children.description}} s\n </div>\n</ng-template>\n\n<ng-template #cardSpaceSaving>\n <div>\n {{data.children.name}}\n </div>\n</ng-template>\n\n<mat-menu #cardMenu=\"matMenu\" class=\"menu-sec\">\n <ng-template matMenuContent let-rowData=\"data\" let-cardRef=\"cardRef\">\n <!-- <div > -->\n <button *ngIf=\"data.columnInfo.config.enableView\" (click)=\"view(data, data.children, data.index)\" mat-menu-item name=\"channel-analytics-button\"\n class=\"ws-mat-primary-text\" i18n-aria-label aria-label=\"Analytics\">\n <mat-icon>visibility</mat-icon> <span>View</span>\n </button>\n <button *ngIf=\"data.columnInfo.config.enabaleEdit\" (click)=\"edit(data, data.children,data.index, cardRef)\"\n mat-menu-item name=\"channel-analytics-button\" class=\"ws-mat-primary-text\" i18n-aria-label\n aria-label=\"Analytics\">\n <mat-icon>edit</mat-icon>\n <span>Edit</span>\n </button>\n <button *ngIf=\"data.columnInfo.config.enableAdd\" (click)=\"create(data)\"\n mat-menu-item name=\"channel-analytics-button\" class=\"ws-mat-primary-text\" i18n-aria-label\n aria-label=\"Analytics\">\n <mat-icon>add</mat-icon>\n <span>Add</span>\n </button>\n <button *ngIf=\"data.columnInfo.config.enableDelete\" (click)=\"delete(data)\"\n mat-menu-item name=\"channel-analytics-button\" class=\"ws-mat-primary-text\" i18n-aria-label\n aria-label=\"Analytics\">\n <mat-icon>delete</mat-icon>\n <span>Delete</span>\n </button>\n </ng-template>\n</mat-menu>\n\n<mat-menu #orgMenu=\"matMenu\" class=\"menu-sec\">\n <ng-template matMenuContent let-rowData=\"data\" let-cardRef=\"cardRef\">\n <button *ngIf=\"data.columnInfo.config.enableUpdateHierarchy && data.index > 1\" (click)=\"menuAction('update-hierarchy', data)\" mat-menu-item name=\"channel-analytics-button\"\n class=\"action-btn\" i18n-aria-label aria-label=\"Analytics\">\n <mat-icon>edit</mat-icon> <span>Update Hierarchy</span>\n </button>\n <button *ngIf=\"data.columnInfo.config.enabaleRemoveConnection && !checkIfChildOrg\" (click)=\"menuAction('remove-term', data)\"\n mat-menu-item name=\"channel-analytics-button\" class=\"action-btn\" i18n-aria-label\n aria-label=\"Analytics\">\n <mat-icon>close</mat-icon>\n <span>Remove Connection</span>\n </button>\n <button *ngIf=\"data.columnInfo.config.enableManageOrganization\" (click)=\"menuAction('manage-org', data)\"\n mat-menu-item name=\"channel-analytics-button\" class=\"action-btn\" i18n-aria-label\n aria-label=\"Analytics\">\n <mat-icon>settings</mat-icon>\n <span>Manage Organisation</span>\n </button>\n </ng-template>\n</mat-menu>\n\n<!-- Add this template to your component -->\n<ng-template #dialogTemplate>\n <div class=\"flex flex-col flex-middle\">\n <mat-icon class=\"large-icon color-secondary\">error_outline</mat-icon>\n <p class=\"color-primary modal-text margin-top-s\">Select a organisation to {{enableThreeDots ? 'add or ' : ''}}see further connections.</p>\n <button mat-button type=\"button\" (click)=\"closeModal()\" class=\"btn-common btn-primary modal-btn\">Close</button>\n </div>\n</ng-template>\n\n", styles: [".term-card{border:1px solid rgba(0,0,0,.08);padding:.9rem;margin:0 5px 1em;background-color:#fff;border-radius:8px;overflow:hidden;position:relative;z-index:45;display:flex;align-items:center;box-shadow:#0000001a 0 1px 3px,#0000000f 0 1px 2px;word-break:break-word}.term-card .termSelection{position:absolute;right:10px;top:10px}.term-card .term-card-parent{display:flex;flex:1 1 0%}.term-card .term-card-parent .term-card-content{white-space:initial}.term-card .term-card-parent .term-card-content .card-title{font-family:Lato;font-size:14px;font-weight:400;line-height:16px}.term-card .term-card-parent .term-card-content .card-description{color:#000;font-size:12px!important;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.term-card .term-card-parent .term-card-content .card-description mat-icon{width:16px;height:16px;color:#1b4ca1}.term-card .term-card-checkbox{width:10%}.term-card.selected{color:#000;border-style:none}.term-card.selected .card-description{color:#000!important}.term-card.selected .card-description mat-icon{color:#000!important}.term-card.clickable{cursor:pointer}.approve-flag{position:absolute;right:5px;top:35px;font-size:24px}::ng-deep .menu-sec{min-height:0px!important;background:#fff!important}::ng-deep .mat-mdc-menu-panel{background-color:#fff!important}::ng-deep .mat-mdc-menu-content,::ng-deep .mat-mdc-menu-item{background-color:#fff!important}.menu-sec{background:#fff!important}.refIdCard{border-radius:12px;width:fit-content;border:1px solid #bbb;padding:0 8px;font-size:8px!important;display:flex;align-items:center}.comp-area{font-family:Inter;font-size:12px;font-weight:600;line-height:16px;text-align:left;padding:8px;border-radius:12px}.comp-area.functional{background:#e24577;color:#fff}.comp-area.domain{background:#7b47a4;color:#fff}.comp-area.behavioural{background:#f9bf71}.ribbon{font-size:8px;font-weight:700;color:#fff}.ribbon{--f: .5em;--r: .8em;position:absolute;top:8px;right:calc(-1 * var(--f));padding-inline:.25em;padding-right:8px;line-height:1.8;background:#fa6900;border-bottom:var(--f) solid rgba(0,0,0,.3333333333);border-left:var(--r) solid rgba(0,0,0,0);clip-path:polygon(var(--r) 0,100% 0,100% calc(100% - var(--f)),calc(100% - var(--f)) 100%,calc(100% - var(--f)) calc(100% - var(--f)),var(--r) calc(100% - var(--f)),0 calc(50% - var(--f) / 2))}.refId-card{font-size:10px}.action-btn{color:#0009}.modal-text{font-size:16px}.large-icon{font-size:46px;width:46px;height:46px}.color-secondary{color:#f3962f}.color-primary{color:#1b4ca1}.modal-btn{width:87px}.small-btn{width:16px!important;height:16px!important;line-height:16px!important;padding:0!important}.small-btn ::ng-deep .mat-mdc-button-touch-target{width:16px!important;height:16px!important}.small-icon{font-size:16px;width:16px;height:16px;line-height:16px}\n"] }]
|
|
@@ -339,4 +340,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
339
340
|
}], cardAction: [{
|
|
340
341
|
type: Output
|
|
341
342
|
}] } });
|
|
342
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVybS1jYXJkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnJhcnkvc3VuYmlyZC1jYi90cmVlLWhpZXJhcmNoeS9zcmMvbGliL2NvbXBvbmVudHMvdGVybS1jYXJkL3Rlcm0tY2FyZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJ5L3N1bmJpcmQtY2IvdHJlZS1oaWVyYXJjaHkvc3JjL2xpYi9jb21wb25lbnRzL3Rlcm0tY2FyZC90ZXJtLWNhcmQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQWUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBS2pILE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUc5QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSxzRUFBc0UsQ0FBQztBQUN4SCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQzs7Ozs7Ozs7OztBQU9oRyxNQUFNLE9BQU8saUJBQWlCO0lBYzVCLElBQ0ksSUFBSSxDQUFDLEtBQVU7UUFDakIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFHbkIsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsU0FBUyxHQUFDLEtBQUssQ0FBQTtJQUNyQyxDQUFDO0lBQ0QsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7SUFNRCxZQUNVLGdCQUFrQyxFQUNsQyxzQkFBOEMsRUFDOUMsZUFBZ0MsRUFDakMsTUFBaUI7UUFIaEIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQywyQkFBc0IsR0FBdEIsc0JB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Q3pCLENBQUM7K0dBbllVLGlCQUFpQjttR0FBakIsaUJBQWlCLHdXQ2pCOUIsZ3RSQXlKQTs7NEZEeElhLGlCQUFpQjtrQkFMN0IsU0FBUzsrQkFDRSxlQUFlO3dNQU1JLGNBQWM7c0JBQTFDLFNBQVM7dUJBQUMsZ0JBQWdCO2dCQUNsQixlQUFlO3NCQUF2QixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBV0YsSUFBSTtzQkFEUCxLQUFLO2dCQVdJLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0csWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0LCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IE5TRnJhbWV3b3JrIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2ZyYW1ld29yay5tb2RlbCdcbmltcG9ydCB7IEFwcHJvdmFsU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2FwcHJvdmFsLnNlcnZpY2UnO1xuaW1wb3J0IHsgRnJhbWV3b3JrU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2ZyYW1ld29yay5zZXJ2aWNlJ1xuaW1wb3J0IHsgTG9jYWxDb25uZWN0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2xvY2FsLWNvbm5lY3Rpb24uc2VydmljZSc7XG5pbXBvcnQgeyBsYWJlbHMgfSBmcm9tICcuLi8uLi9sYWJlbHMvc3RyaW5ncyc7XG5pbXBvcnQgeyBDYXJkU2VsZWN0aW9uLCBDYXJkQ2hlY2tlZCwgQ2FyZCB9IGZyb20gJy4uLy4uL21vZGVscy92YXJpYWJsZS10eXBlLm1vZGVsJztcbmltcG9ydCB7IE1hdExlZ2FjeURpYWxvZyBhcyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9sZWdhY3ktZGlhbG9nJztcbmltcG9ydCB7IENyZWF0ZVRlcm1Db21wb25lbnQgfSBmcm9tICcuLi9jcmVhdGUtdGVybS9jcmVhdGUtdGVybS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ3JlYXRlVGVybUZyb21GcmFtZXdvcmtDb21wb25lbnQgfSBmcm9tICcuLy4uL2NyZWF0ZS10ZXJtLWZyb20tZnJhbWV3b3JrL2NyZWF0ZS10ZXJtLWZyb20tZnJhbWV3b3JrLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb25mb3JhbXRpb25Qb3B1cENvbXBvbmVudCB9IGZyb20gJy4uL2NvbmZvcmFtdGlvbi1wb3B1cC9jb25mb3JhbXRpb24tcG9wdXAuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLXRlcm0tY2FyZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi90ZXJtLWNhcmQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90ZXJtLWNhcmQuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBUZXJtQ2FyZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgLy8gQElucHV0KCkgZGF0YSE6IE5TRnJhbWV3b3JrLklUZXJtQ2FyZFxuICBAVmlld0NoaWxkKCdkaWFsb2dUZW1wbGF0ZScpIGRpYWxvZ1RlbXBsYXRlITogVGVtcGxhdGVSZWY8YW55PjtcbiAgQElucHV0KCkgZW5hYmxlVGhyZWVEb3RzID0gdHJ1ZVxuICBASW5wdXQoKSBjaGVja0lmQ2hpbGRPcmc6IGFueTtcbiAgcHJpdmF0ZSBfZGF0YSE6IE5TRnJhbWV3b3JrLklUZXJtQ2FyZDtcbiAgaXNBcHByb3ZhbFJlcXVpcmVkOiBib29sZWFuID0gZmFsc2VcbiAgYXBwcm92YWxMaXN0OiBBcnJheTxDYXJkPiA9IFtdXG4gIGhlaWdodExpZ2h0ZWQgPSBbXVxuICBhcHBfc3RyaW5nczogYW55ID0gbGFiZWxzO1xuICBsb2FkZWQ6IGFueSA9IHt9XG4gIGlzQ29tcGV0ZW5jeUFyZWE6YW55O1xuICBlbnZpcm9ubWVudDogYW55XG4gIHN1YnNjcmlwdGlvbiA6YW55XG4gIEBJbnB1dCgpXG4gIHNldCBkYXRhKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLl9kYXRhID0gdmFsdWU7XG4gICAgLy8gIGlmKHRoaXMuX2RhdGEpXG4gICAgLy8gICAgdGhpcy5jcmVhdGVUaW1lbGluZSh0aGlzLl9kYXRhWzBdLmlkKVxuICAgIHRoaXMuX2RhdGEuY2hpbGRyZW4uaGlnaGxpZ2h0PWZhbHNlXG4gIH1cbiAgZ2V0IGRhdGEoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5fZGF0YTtcbiAgfVxuXG4gIEBPdXRwdXQoKSBpc1NlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxDYXJkU2VsZWN0aW9uPigpXG4gIEBPdXRwdXQoKSBzZWxlY3RlZENhcmQgPSBuZXcgRXZlbnRFbWl0dGVyPENhcmRDaGVja2VkPigpXG4gIEBPdXRwdXQoKSBjYXJkQWN0aW9uID0gbmV3IEV2ZW50RW1pdHRlcjx7IGFjdGlvbjogc3RyaW5nLCBkYXRhOiBhbnkgfT4oKVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZnJhbWV3b3JrU2VydmljZTogRnJhbWV3b3JrU2VydmljZSxcbiAgICBwcml2YXRlIGxvY2FsQ29ubmVjdGlvblNlcnZpY2U6IExvY2FsQ29ubmVjdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhcHByb3ZhbFNlcnZpY2U6IEFwcHJvdmFsU2VydmljZSxcbiAgICBwdWJsaWMgZGlhbG9nOiBNYXREaWFsb2csIFxuICApIHsgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuaXNBcHByb3ZhbFJlcXVpcmVkID0gdGhpcy5sb2NhbENvbm5lY3Rpb25TZXJ2aWNlLmdldENvbmZpZ0luZm8oKS5pc0FwcHJvdmFsUmVxdWlyZWRcbiAgICBcbiAgICB0aGlzLnVwZGF0ZUFwcHJvdmFsU3RhdHVzKClcbiAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IHRoaXMuZnJhbWV3b3JrU2VydmljZS5pbnNlcnRVcGRhdGVEZWxldGVOb3RpZmllci5zdWJzY3JpYmUoKGUpPT57XG4gICAgICBpZihlKXtcbiAgICAgICB0aGlzLmlzQ29tcGV0ZW5jeUFyZWEgPSBlLmFjdGlvblxuICAgICAgfVxuICAgIH0pXG5cblxuICAgIHRoaXMuZW52aXJvbm1lbnQgPSB0aGlzLmZyYW1ld29ya1NlcnZpY2UuZ2V0RW52aXJvbWVudCgpXG4gICAgXG4gIH1cblxuICBjYXJkQ2xpY2tlZChkYXRhOiBhbnksIGNhcmRSZWY6IGFueSkge1xuICAgIGlmKGRhdGEuY2F0ZWdvcnkhPSdzdWJ0aGVtZScpe1xuICAgICAgdGhpcy5mcmFtZXdvcmtTZXJ2aWNlLmNhcmRDbGtEYXRhID0gZGF0YTtcbiAgICAgIHRoaXMuZnJhbWV3b3JrU2VydmljZS5DdXJyZW50Q2FyZENsay5uZXh0KGRhdGEuY2F0ZWdvcnkpXG4gICAgICBcbiAgICB9XG4gICAgLy8gdGhpcy5kYXRhLnNlbGVjdGVkID0gdHJ1ZVxuICAgIGlmKHRoaXMuZnJhbWV3b3JrU2VydmljZS5pc0xhc3RDb2x1bW4odGhpcy5kYXRhLmNhdGVnb3J5KSl7XG4gICAgICByZXR1cm4gXG4gICAgfVxuICAgIHRoaXMuZnJhbWV3b3JrU2VydmljZS5jdXJyZW50U2VsZWN0aW9uLm5leHQoeyB0eXBlOiB0aGlzLmRhdGEuY2F0ZWdvcnksIGRhdGE6IGRhdGEuY2hpbGRyZW4sIGNhcmRSZWYgfSlcbiAgICB0aGlzLmlzU2VsZWN0ZWQuZW1pdCh7IGVsZW1lbnQ6IHRoaXMuZGF0YS5jaGlsZHJlbiwgaXNTZWxlY3RlZDogIWRhdGEuc2VsZWN0ZWQgfSlcbiAgfVxuXG4gIGhhbmRsZVByb2R1Y3RDbGljayh0ZXJtOiBhbnksIGV2ZW50OiBhbnkpe1xuICAgIHRoaXMuc2VsZWN0ZWRDYXJkLmVtaXQoe3Rlcm06dGVybSwgY2hlY2tlZDpldmVudC5jaGVja2VkfSlcbiAgfVxuXG4gIHVwZGF0ZUFwcHJvdmFsU3RhdHVzKCl7XG4gICAgIGNvbnN0IGlkID0gdGhpcy5fZGF0YS5jaGlsZHJlbi5pZGVudGlmaWVyO1xuICAgIHRoaXMuYXBwcm92YWxTZXJ2aWNlLmdldFVwZGF0ZUxpc3QoKS5zdWJzY3JpYmUoKGxpc3Q6YW55KSA9PiB7XG4gICAgICB0aGlzLmFwcHJvdmFsTGlzdCA9IGxpc3QubWFwKChpdGVtOiBhbnkpID0+IGl0ZW0uaWRlbnRpZmllcik7XG4gICAgICBpZih0aGlzLmFwcHJvdmFsTGlzdCl7XG4gICAgICAgICAgIGlmKHRoaXMuYXBwcm92YWxMaXN0LmluY2x1ZGVzKGlkKSl7XG4gICAgICAgICAgICAgIHRoaXMuX2RhdGEuY2hpbGRyZW4uaGlnaGxpZ2h0ID0gdHJ1ZVxuICAgICAgICAgICAgfVxuICAgICAgfSAgICAgXG4gICAgfSlcbiAgfVxuXG4gIGdldENvbG9yKGluZGV4Q2xhc3M6bnVtYmVyLCBjYXJkUmVmOiBhbnkscHJvcGVydHk6IHN0cmluZywgZGF0YTphbnkpIHtcbiAgICBsZXQgY29uZmlnID0gdGhpcy5mcmFtZXdvcmtTZXJ2aWNlLmdldENvbmZpZyhkYXRhLmNhdGVnb3J5KTtcbiAgICBpZihjYXJkUmVmLmNsYXNzTGlzdC5jb250YWlucygnc2VsZWN0ZWQnKSAmJiBwcm9wZXJ0eSA9PT0gJ2JnQ29sb3InKXtcbiAgICAgICByZXR1cm4gY29uZmlnLmNvbG9yO1xuICAgIH1cbiAgICBpZihwcm9wZXJ0eSA9PT0gJ2JvcmRlcicpe1xuICAgICAgbGV0IGJvcmRlckNvbG9yO1xuICAgICAgaWYoY2FyZFJlZi5jbGFzc0xpc3QuY29udGFpbnMoKGluZGV4Q2xhc3MpLnRvU3RyaW5nKCkpKXtcbiAgICAgICAgYm9yZGVyQ29sb3IgPSBcIjhweCBzb2xpZFwiICsgY29uZmlnLmNvbG9yO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGJvcmRlckNvbG9yO1xuICAgIH1cbiAgfVxuXG5cbiAgdmlldyhkYXRhOiBhbnksIGNoaWxkcmVuRGF0YTogYW55LCBpbmRleDogYW55KXtcbiAgICBsZXQgZGlhbG9nOiBhbnlcbiAgICBjb25zdCBzZWxlY3RlZFRlcm1zID0gdGhpcy5mcmFtZXdvcmtTZXJ2aWNlLmdldFByZXZpb3VzU2VsZWN0ZWRUZXJtcyhkYXRhLmNvbHVtbkluZm8uY29kZSlcbiAgICBjb25zdCBuZXhDb2xJbmZvID0gdGhpcy5nZXROZXh0Q2F0KGRhdGEpXG4gICAgY29uc3QgbmV4dENhdCA9IG5leENvbEluZm8gfHwgZGF0YS5jb2x1bW5JbmZvXG4gICAgaWYobmV4dENhdCAmJiB0aGlzLmVudmlyb25tZW50ICYmIHRoaXMuZW52aXJvbm1lbnQuZnJhbWV3b3JrVHlwZSA9PT0gJ01ET19ERVNJR05BVElPTicpIHtcbiAgICAgIGNvbnN0IG5leHROZXh0Q2F0ID0gdGhpcy5mcmFtZXdvcmtTZXJ2aWNlLmdldE5leHRDYXRlZ29yeShuZXh0Q2F0LmNvZGUpXG4gICAgICBjb25zdCBzZWxlY3RlZFRlcm1zID0gdGhpcy5mcmFtZXdvcmtTZXJ2aWNlLmdldFByZXZpb3VzU2VsZWN0ZWRUZXJtcyhuZXh0Q2F0LmNvZGUpXG4gICAgICBjb25zdCBjb2xJbmZvID0gQXJyYXkuZnJvbSh0aGlzLmZyYW1ld29ya1NlcnZpY2UubGlzdC52YWx1ZXMoKSkuZmlsdGVyKGwgPT4gbC5jb2RlID09PSBuZXh0Q2F0LmNvZGUgKVxuICAgICAgbGV0IG5leHRDb2xJbmZvIDogYW55ID0gW11cbiAgICAgIGlmKG5leHROZXh0Q2F0ICYmIG5leHROZXh0Q2F0LmNvZGUpIHtcbiAgICAgICAgbmV4dENvbEluZm8gPSBBcnJheS5mcm9tKHRoaXMuZnJhbWV3b3JrU2VydmljZS5saXN0LnZhbHVlcygpKS5maWx0ZXIobCA9PiBsLmNvZGUgPT09IG5leHROZXh0Q2F0LmNvZGUgKVxuICAgICAgfVxuICAgICAgICBkaWFsb2cgPSB0aGlzLmRpYWxvZy5vcGVuKENyZWF0ZVRlcm1Gcm9tRnJhbWV3b3JrQ29tcG9uZW50LCB7XG4gICAgICAgICAgZGF0YTogeyBcbiAgICAgICAgICAgIG1vZGU6J211bHRpLWNyZWF0ZScsXG4gICAgICAgICAgICBvcGVuTW9kZTogJ3ZpZXcnLFxuICAgICAgICAgICAgY2FyZENvbEluZm86IHRoaXMuZGF0YS5jb2x1bW5JbmZvLFxuICAgICAgICAgICAgY29sdW1uSW5mbzogY29sSW5mbyAmJiBjb2xJbmZvLmxlbmd0aCA/IGNvbEluZm9bMF0gOiBbXSxcbiAgICAgICAgICAgIG5leHRDb2xJbmZvOiBuZXh0Q29sSW5mbyAmJiBuZXh0Q29sSW5mby5sZW5ndGggPyBuZXh0Q29sSW5mb1swXSA6IFtdLFxuICAgICAgICAgICAgZnJhbWV3b3JrSWQ6IHRoaXMuZnJhbWV3b3JrU2VydmljZS5nZXRGcmFtZXdvcmtJZCgpLFxuICAgICAgICAgICAgc2VsZWN0ZWRwYXJlbnRzOiB0aGlzLmhlaWdodExpZ2h0ZWQsXG4gICAgICAgICAgICBjb2xJbmRleDogbmV4dENhdC5pbmRleCxcbiAgICAgICAgICAgIGNoaWxkcmVuRGF0YTogZGF0YS5jaGlsZHJlbixcbiAgICAgICAgICAgIHNlbGVjdGVkUGFyZW50VGVybXM6IHNlbGVjdGVkVGVybXNcbiAgICAgICAgICB9LFxuICAgICAgICAgIHdpZHRoOiAnODAwcHgnLFxuICAgICAgICAgIHBhbmVsQ2xhc3M6ICdjdXN0b20tZGlhbG9nLWNvbnRhaW5lcidcbiAgICAgICAgfSlcbiAgICAgIFxuICAgICBcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBkaWFsb2cgPSB0aGlzLmRpYWxvZy5vcGVuKENyZWF0ZVRlcm1Db21wb25lbnQsIHtcbiAgICAgICAgZGF0YTogeyBcbiAgICAgICAgICBtb2RlOid2aWV3JyxcbiAgICAgICAgICBjb2x1bW5JbmZvOiB0aGlzLmRhdGEuY29sdW1uSW5mbyxcbiAgICAgICAgICBmcmFtZXdvcmtJZDogdGhpcy5mcmFtZXdvcmtTZXJ2aWNlLmdldEZyYW1ld29ya0lkKCksXG4gICAgICAgICAgc2VsZWN0ZWRwYXJlbnRzOiB0aGlzLmhlaWdodExpZ2h0ZWQsXG4gICAgICAgICAgY29sSW5kZXg6IGluZGV4LFxuICAgICAgICAgIGNoaWxkcmVuRGF0YTogY2hpbGRyZW5EYXRhLFxuICAgICAgICAgIHNlbGVjdGVkUGFyZW50VGVybXM6IHNlbGVjdGVkVGVybXNcbiAgICAgICAgfSxcbiAgICAgICAgd2lkdGg6ICc4MDBweCcsXG4gICAgICAgIHBhbmVsQ2xhc3M6ICdjdXN0b20tZGlhbG9nLWNvbnRhaW5lcidcbiAgICAgIH0pXG4gICAgfVxuICAgIGRpYWxvZy5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcbiAgICAgIGlmKCFyZXMpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgLy8gaWYgKHJlcyAmJiByZXMuY3JlYXRlZCkge1xuICAgICAgLy8gICB0aGlzLnNob3dQdWJsaXNoID0gdHJ1ZVxuICAgICAgLy8gfVxuICAgICAgLy8gdGhpcy5sb2FkZWRbcmVzLnRlcm0uY2F0ZWdvcnldID0gZmFsc2VcbiAgICAgIC8vIC8vIHdhaXRcbiAgICAgIC8vIGNvbnN0IHBhcmVudENvbHVtbiA9IHRoaXMuZnJhbWV3b3JrU2VydmljZS5nZXRQcmV2aW91c0NhdGVnb3J5KHJlcy50ZXJtLmNhdGVnb3J5KVxuICAgICAgLy8gcmVzLnBhcmVudCA9IG51bGxcbiAgICAgIC8vIGlmIChwYXJlbnRDb2x1bW4pIHtcbiAgICAgIC8vICAgcmVzLnBhcmVudCA9IHRoaXMuZnJhbWV3b3JrU2VydmljZS5zZWxlY3Rpb25MaXN0LmdldChwYXJlbnRDb2x1bW4uY29kZSlcbiAgICAgIC8vICAgcmVzLnBhcmVudC5jaGlsZHJlbj8gcmVzLnBhcmVudC5jaGlsZHJlbi5wdXNoKHJlcy50ZXJtKSA6cmVzLnBhcmVudFsnY2hpbGRyZW4nXSA9IFtyZXMudGVybV1cbiAgICAgIC8vIH1cbiAgICAgIC8vIHRoaXMudXBkYXRlRmluYWxMaXN0KHsgc2VsZWN0ZWRUZXJtOiByZXMudGVybSwgaXNTZWxlY3RlZDogZmFsc2UsIHBhcmVudERhdGE6IHJlcy5wYXJlbnQsIGNvbEluZGV4OmNvbEluZGV4IH0pXG4gICAgfSlcbiAgfVxuICBlZGl0KGRhdGE6IGFueSwgY2hpbGRyZW5EYXRhOiBhbnksIGluZGV4OiBhbnksIGNhcmRSZWY6IGFueSl7XG4gICAgbGV0IGRpYWxvZzogYW55XG4gICAgY29uc3Qgc2VsZWN0ZWRUZXJtcyA9IHRoaXMuZnJhbWV3b3JrU2VydmljZS5nZXRQcmV2aW91c1NlbGVjdGVkVGVybXMoZGF0YS5jb2x1bW5JbmZvLmNvZGUpXG4gICAgY29uc3QgbmV4Q29sSW5mbyA9IHRoaXMuZ2V0TmV4dENhdChkYXRhKVxuICAgIGNvbnN0IG5leHRDYXQgPSBuZXhDb2xJbmZvIHx8IGRhdGEuY29sdW1uSW5mb1xuICAgXG4gICAgaWYobmV4dENhdCAmJiB0aGlzLmVudmlyb25tZW50ICYmIHRoaXMuZW52aXJvbm1lbnQuZnJhbWV3b3JrVHlwZSA9PT0gJ01ET19ERVNJR05BVElPTicpIHtcbiAgICAgIC8vIGNvbnN0IG5leHROZXh0Q2F0ID0gdGhpcy5mcmFtZXdvcmtTZXJ2aWNlLmdldE5leHRDYXRlZ29yeShuZXh0Q2F0LmNvZGUpXG4gICAgICAvLyBjb25zdCBzZWxlY3RlZFRlcm1zID0gdGhpcy5mcmFtZXdvcmtTZXJ2aWNlLmdldFByZXZpb3VzU2VsZWN0ZWRUZXJtcyhuZXh0Q2F0LmNvZGUpXG4gICAgICAvLyBjb25zdCBjb2xJbmZvID0gQXJyYXkuZnJvbSh0aGlzLmZyYW1ld29ya1NlcnZpY2UubGlzdC52YWx1ZXMoKSkuZmlsdGVyKGwgPT4gbC5jb2RlID09PSBuZXh0Q2F0LmNvZGUgKVxuICAgICAgLy8gbGV0IG5leHRDb2xJbmZvID0gW11cbiAgICAgIC8vIGlmKG5leHROZXh0Q2F0ICYmIG5leHROZXh0Q2F0LmNvZGUpIHtcbiAgICAgIC8vICAgbmV4dENvbEluZm8gPSBBcnJheS5mcm9tKHRoaXMuZnJhbWV3b3JrU2VydmljZS5saXN0LnZhbHVlcygpKS5maWx0ZXIobCA9PiBsLmNvZGUgPT09IG5leHROZXh0Q2F0LmNvZGUgKVxuICAgICAgLy8gfVxuICAgICAgLy8gICBkaWFsb2cgPSB0aGlzLmRpYWxvZy5vcGVuKENyZWF0ZVRlcm1Gcm9tRnJhbWV3b3JrQ29tcG9uZW50LCB7XG4gICAgICAvLyAgICAgZGF0YTogeyBcbiAgICAgIC8vICAgICAgIG1vZGU6J211bHRpLWNyZWF0ZScsXG4gICAgICAvLyAgICAgICBvcGVuTW9kZTogJ2VkaXQnLFxuICAgICAgLy8gICAgICAgY2FyZENvbEluZm86IHRoaXMuZGF0YS5jb2x1bW5JbmZvLFxuICAgICAgLy8gICAgICAgY29sdW1uSW5mbzogY29sSW5mbyAmJiBjb2xJbmZvLmxlbmd0aCA/IGNvbEluZm9bMF0gOiBbXSxcbiAgICAgIC8vICAgICAgIG5leHRDb2xJbmZvOiBuZXh0Q29sSW5mbyAmJiBuZXh0Q29sSW5mby5sZW5ndGggPyBuZXh0Q29sSW5mb1swXSA6IFtdLFxuICAgICAgLy8gICAgICAgZnJhbWV3b3JrSWQ6IHRoaXMuZnJhbWV3b3JrU2VydmljZS5nZXRGcmFtZXdvcmtJZCgpLFxuICAgICAgLy8gICAgICAgc2VsZWN0ZWRwYXJlbnRzOiB0aGlzLmhlaWdodExpZ2h0ZWQsXG4gICAgICAvLyAgICAgICBjb2xJbmRleDogbmV4dENhdC5pbmRleCxcbiAgICAgIC8vICAgICAgIGNoaWxkcmVuRGF0YTogZGF0YS5jaGlsZHJlbixcbiAgICAgIC8vICAgICAgIHNlbGVjdGVkUGFyZW50VGVybXM6IHNlbGVjdGVkVGVybXNcbiAgICAgIC8vICAgICB9LFxuICAgICAgLy8gICAgIHdpZHRoOiAnODAwcHgnLFxuICAgICAgLy8gICAgIHBhbmVsQ2xhc3M6ICdjdXN0b20tZGlhbG9nLWNvbnRhaW5lcidcbiAgICAgIC8vICAgfSlcbiAgICAgIFxuICAgICAgdGhpcy5jcmVhdGUoZGF0YSwgJ2VkaXQnKVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGRpYWxvZyA9IHRoaXMuZGlhbG9nLm9wZW4oQ3JlYXRlVGVybUNvbXBvbmVudCwge1xuICAgICAgICBkYXRhOiB7IFxuICAgICAgICAgIG1vZGU6J2VkaXQnLFxuICAgICAgICAgIGNvbHVtbkluZm86IGRhdGEuY29sdW1uSW5mbyxcbiAgICAgICAgICBmcmFtZXdvcmtJZDogdGhpcy5mcmFtZXdvcmtTZXJ2aWNlLmdldEZyYW1ld29ya0lkKCksXG4gICAgICAgICAgc2VsZWN0ZWRwYXJlbnRzOiB0aGlzLmhlaWdodExpZ2h0ZWQsXG4gICAgICAgICAgY29sSW5kZXg6IGluZGV4LFxuICAgICAgICAgIGNoaWxkcmVuRGF0YTogY2hpbGRyZW5EYXRhLFxuICAgICAgICAgIHNlbGVjdGVkUGFyZW50VGVybXM6IHNlbGVjdGVkVGVybXMsXG4gICAgICAgICAgY2FyZFJlZjogY2FyZFJlZlxuICAgICAgICB9LFxuICAgICAgICB3aWR0aDogJzgwMHB4JyxcbiAgICAgICAgcGFuZWxDbGFzczogJ2N1c3RvbS1kaWFsb2ctY29udGFpbmVyJ1xuICAgICAgfSlcbiAgICB9XG4gICAgZGlhbG9nLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuICAgICAgaWYoIXJlcykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICAvLyBjb25zdCByZXNwb25zZURhdGEgPSB7XG4gICAgICAvLyAgIHJlcyxcbiAgICAgIC8vICAgaW5kZXg6IGluZGV4LmluZGV4LFxuICAgICAgLy8gICBkYXRhLFxuICAgICAgLy8gICB0eXBlOiAndXBkYXRlJyxcbiAgICAgIC8vICAgY2FyZFJlZjogY2FyZFJlZlxuICAgICAgLy8gfVxuICAgICAgLy8gdGhpcy5mcmFtZXdvcmtTZXJ2aWNlLnVwZGF0ZUFmdGVyQWRkT3JFZGl0U3ViamVjdChyZXNwb25zZURhdGEpXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgd2luZG93LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdyZXNpemUnKSlcbiAgICAgIH0sIDEwMClcbiAgICB9KVxuICB9XG4gIGNyZWF0ZShkYXRhOiBhbnksIG1vZGU/OnN0cmluZyl7XG4gICAgY29uc3QgbmV4Q29sSW5mbyA9IHRoaXMuZ2V0TmV4dENhdChkYXRhKVxuICAgIGNvbnN0IG5leHRDYXQgPSBuZXhDb2xJbmZvIHx8IGRhdGEuY29sdW1uSW5mb1xuICAgIGNvbnN0IG5leHROZXh0Q2F0ID0gdGhpcy5mcmFtZXdvcmtTZXJ2aWNlLmdldE5leHRDYXRlZ29yeShuZXh0Q2F0LmNvZGUpXG4gICAgaWYobmV4dENhdCkge1xuICAgICAgY29uc3Qgc2VsZWN0ZWRUZXJtcyA9IHRoaXMuZnJhbWV3b3JrU2VydmljZS5nZXRQcmV2aW91c1NlbGVjdGVkVGVybXMobmV4dENhdC5jb2RlKVxuICAgICAgY29uc3QgY29sSW5mbyA9IEFycmF5LmZyb20odGhpcy5mcmFtZXdvcmtTZXJ2aWNlLmxpc3QudmFsdWVzKCkpLmZpbHRlcihsID0+IGwuY29kZSA9PT0gbmV4dENhdC5jb2RlIClcbiAgICAgIGxldCBuZXh0Q29sSW5mbzogYW55ID0gW11cbiAgICAgIGlmKG5leHROZXh0Q2F0ICYmIG5leHROZXh0Q2F0LmNvZGUpIHtcbiAgICAgICAgbmV4dENvbEluZm8gPSBBcnJheS5mcm9tKHRoaXMuZnJhbWV3b3JrU2VydmljZS5saXN0LnZhbHVlcygpKS5maWx0ZXIobCA9PiBsLmNvZGUgPT09IG5leHROZXh0Q2F0LmNvZGUgKVxuICAgICAgfVxuICAgICAgbGV0IGRpYWxvZzogYW55XG4gICAgICBpZih0aGlzLmVudmlyb25tZW50ICYmIHRoaXMuZW52aXJvbm1lbnQuZnJhbWV3b3JrVHlwZSA9PT0gJ01ET19ERVNJR05BVElPTicpe1xuICAgICAgICBkaWFsb2cgPSB0aGlzLmRpYWxvZy5vcGVuKENyZWF0ZVRlcm1Gcm9tRnJhbWV3b3JrQ29tcG9uZW50LCB7XG4gICAgICAgICAgZGF0YTogeyBcbiAgICAgICAgICAgIG1vZGU6J211bHRpLWNyZWF0ZScsXG4gICAgICAgICAgICBvcGVuTW9kZTogbW9kZSB8fCAnYWRkJyxcbiAgICAgICAgICAgIGNhcmRDb2xJbmZvOiB0aGlzLmRhdGEuY29sdW1uSW5mbyxcbiAgICAgICAgICAgIGNvbHVtbkluZm86IGNvbEluZm8gJiYgY29sSW5mby5sZW5ndGggPyBjb2xJbmZvWzBdIDogW10sXG4gICAgICAgICAgICBuZXh0Q29sSW5mbzogbmV4dENvbEluZm8gJiYgbmV4dENvbEluZm8ubGVuZ3RoID8gbmV4dENvbEluZm9bMF0gOiBbXSxcbiAgICAgICAgICAgIGZyYW1ld29ya0lkOiB0aGlzLmZyYW1ld29ya1NlcnZpY2UuZ2V0RnJhbWV3b3JrSWQoKSxcbiAgICAgICAgICAgIHNlbGVjdGVkcGFyZW50czogdGhpcy5oZWlnaHRMaWdodGVkLFxuICAgICAgICAgICAgY29sSW5kZXg6IG5leHRDYXQuaW5kZXgsXG4gICAgICAgICAgICBjaGlsZHJlbkRhdGE6IGRhdGEuY2hpbGRyZW4sXG4gICAgICAgICAgICBzZWxlY3RlZFBhcmVudFRlcm1zOiBzZWxlY3RlZFRlcm1zXG4gICAgICAgICAgfSxcbiAgICAgICAgICB3aWR0aDogJzgwMHB4JyxcbiAgICAgICAgICBwYW5lbENsYXNzOiAnY3VzdG9tLWRpYWxvZy1jb250YWluZXInXG4gICAgICAgIH0pXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkaWFsb2cgPSB0aGlzLmRpYWxvZy5vcGVuKENyZWF0ZVRlcm1Db21wb25lbnQsIHtcbiAgICAgICAgICBkYXRhOiB7IFxuICAgICAgICAgICAgbW9kZTonbXVsdGktY3JlYXRlJyxcbiAgICAgICAgICAgIGNvbHVtbkluZm86IGNvbEluZm8gJiYgY29sSW5mby5sZW5ndGggPyBjb2xJbmZvWzBdIDogW10sXG4gICAgICAgICAgICBmcmFtZXdvcmtJZDogdGhpcy5mcmFtZXdvcmtTZXJ2aWNlLmdldEZyYW1ld29ya0lkKCksXG4gICAgICAgICAgICBzZWxlY3RlZHBhcmVudHM6IHRoaXMuaGVpZ2h0TGlnaHRlZCxcbiAgICAgICAgICAgIGNvbEluZGV4OiBuZXh0Q2F0LmluZGV4LFxuICAgICAgICAgICAgY2hpbGRyZW5EYXRhOiBkYXRhLmNoaWxkcmVuLFxuICAgICAgICAgICAgc2VsZWN0ZWRQYXJlbnRUZXJtczogc2VsZWN0ZWRUZXJtc1xuICAgICAgICAgIH0sXG4gICAgICAgICAgd2lkdGg6ICc4MDBweCcsXG4gICAgICAgICAgcGFuZWxDbGFzczogJ2N1c3RvbS1kaWFsb2ctY29udGFpbmVyJ1xuICAgICAgICB9KVxuICAgICAgfVxuICAgICAgZGlhbG9nLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuICAgICAgICBpZighcmVzKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICBjb25zdCByZXNwb25zZURhdGEgPSB7XG4gICAgICAgICAgcmVzLFxuICAgICAgICAgIGluZGV4OiBuZXh0Q2F0LmluZGV4LFxuICAgICAgICAgIGRhdGEsXG4gICAgICAgICAgdHlwZTogJ211bHRpLWNyZWF0ZSdcbiAgICAgICAgfVxuICAgICAgICBpZighKHJlcyAmJiByZXMuc3RvcFVwZGF0ZSkpe1xuICAgICAgICAgIHRoaXMuZnJhbWV3b3JrU2VydmljZS51cGRhdGVBZnRlckFkZE9yRWRpdFN1YmplY3QocmVzcG9uc2VEYXRhKVxuICAgICAgICB9XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHdpbmRvdy5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgncmVzaXplJykpXG4gICAgICAgIH0sIDEwMClcbiAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgZ2V0TmV4dENhdE5hbWUoZGF0YTogYW55KSB7XG4gICAgaWYoZGF0YSAmJiBkYXRhLmNvbHVtbkluZm8gJiYgZGF0YS5jb2x1bW5JbmZvLmNvZGUpe1xuICAgICAgY29uc3QgbmV4dENhdCA9IHRoaXMuZnJhbWV3b3JrU2VydmljZS5nZXROZXh0Q2F0ZWdvcnkoZGF0YS5jb2x1bW5JbmZvLmNvZGUpXG4gICAgICBpZihuZXh0Q2F0ICYmIG5leHRDYXQuY29kZSl7XG4gICAgICAgIFxuICAgICAgICByZXR1cm4gbmV4dENhdC5jb2RlXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsXG4gIH1cblxuICBnZXROZXh0Q2F0KGRhdGE6IGFueSkge1xuICAgIGlmKGRhdGEgJiYgZGF0YS5jb2x1bW5JbmZvICYmIGRhdGEuY29sdW1uSW5mby5jb2RlKXtcbiAgICAgIGNvbnN0IG5leHRDYXQgPSB0aGlzLmZyYW1ld29ya1NlcnZpY2UuZ2V0TmV4dENhdGVnb3J5KGRhdGEuY29sdW1uSW5mby5jb2RlKVxuICAgICAgcmV0dXJuIG5leHRDYXRcbiAgICB9XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmKHRoaXMuc3Vic2NyaXB0aW9uKXtcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKClcbiAgICB9XG4gIH1cbiAgZGVsZXRlKGRhdGE6IGFueSkge1xuICAgIGNvbnN0IGRpYWxvZ0RhdGEgPSB7XG4gICAgICBkaWFsb2dUeXBlOiAnd2FybmluZycsXG4gICAgICBkaWFsb2dBY3Rpb246ICdyZXRpcmUnLFxuICAgICAgZGVzY3JpcHRpb25zOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBoZWFkZXI6IGBDb21wZXRlbmN5ICR7ZGF0YS5jYXRlZ29yeSA9PT1cInN1YnRoZW1lXCI/ICdzdWItdGhlbWUnOiAndGhlbWUnfSB3aWxsIGJlIGRlbGV0ZWRgLFxuICAgICAgICAgIGhlYWRlckNsYXNzOiAnZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgdGV4dC1ibHVlIHRleHRCb2xkJyxcbiAgICAgICAgICBtZXNzYWdlczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBtc2dDbGFzczogJ21iLTIgbXQtMicsXG4gICAgICAgICAgICAgIG1zZzogYERvIHlvdSB3YW50IHRvIHByb2NlZWQ/YCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICBmb290ZXJDbGFzczogJ2l0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlcicsXG4gICAgICBidXR0b25zOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBidG5UZXh0OiAnTm8nLFxuICAgICAgICAgIGJ0bkNsYXNzOiAnYnRuLW91dGxpbmUnLFxuICAgICAgICAgIHJlc3BvbnNlOiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGJ0blRleHQ6ICdZZXMnLFxuICAgICAgICAgIGJ0bkNsYXNzOiAnYnRuLWZ1bGwtc3VjY2VzcycsXG4gICAgICAgICAgcmVzcG9uc2U6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgY2FyZEluZm86IGRhdGFcbiAgICB9XG4gICAgbGV0IGRpYWxvZyA9IHRoaXMuZGlhbG9nLm9wZW4oQ29uZm9yYW10aW9uUG9wdXBDb21wb25lbnQsIHtcbiAgICAgICAgZGF0YTogZGlhbG9nRGF0YSxcbiAgICAgICAgYXV0b0ZvY3VzOiBmYWxzZSxcbiAgICAgICAgd2lkdGg6ICc1MDBweCcsXG4gICAgICAgIG1heFdpZHRoOiAnODB2dycsXG4gICAgICAgIG1heEhlaWdodDogJzkwdmgnLFxuICAgICAgICBkaXNhYmxlQ2xvc2U6IHRydWVcbiAgICAgIH0pXG4gICAgICBkaWFsb2cuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoX3JlcyA9PiB7XG4gICAgICAgIFxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHdpbmRvdy5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgncmVzaXplJykpXG4gICAgICB9LCAxMDApXG4gICAgfSlcbiAgICBcbiAgfVxuXG4gIG1lbnVBY3Rpb24odHlwZTpzdHJpbmcsIF9pdGVtOiBhbnkpIHtcbiAgICB0aGlzLmNhcmRBY3Rpb24uZW1pdCh7IGFjdGlvbjogdHlwZSwgZGF0YTogX2l0ZW0gfSk7XG4gIH0gXG5cbiAgZ2V0dXNlckNvdW50KGl0ZW06IGFueSkge1xuICAgIGlmKGl0ZW0uY2hpbGRyZW4uY29kZSkge1xuICAgICAgY29uc3QgdGVtcERhdGEgPSBpdGVtLmNvbHVtbkluZm8uY2hpbGRyZW4uZmluZCgoaTogYW55KSA9PiBpLmNvZGUgPT09IGl0ZW0uY2hpbGRyZW4uY29kZSlcbiAgICAgIHJldHVybiB0ZW1wRGF0YT8udXNlckNvdW50IHx8IDBcbiAgICB9XG4gICAgcmV0dXJuIDBcbiAgfVxuXG4gIG9wZW5EaWFsb2coKSB7XG4gICAgdGhpcy5kaWFsb2cub3Blbih0aGlzLmRpYWxvZ1RlbXBsYXRlLCB7XG4gICAgICB3aWR0aDogJzUwMHB4JyxcbiAgICAgIC8vIE9wdGlvbmFsIGNvbmZpZ3VyYXRpb25cbiAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZSxcbiAgICAgIGRhdGE6IHsgLyogQW55IGRhdGEgeW91IHdhbnQgdG8gcGFzcyB0byB0aGUgZGlhbG9nICovIH1cbiAgICB9KTtcbiAgfVxuICBcbiAgY2xvc2VNb2RhbCgpIHtcbiAgICB0aGlzLmRpYWxvZy5jbG9zZUFsbCgpO1xuICB9XG59XG4gIFxuXG4iLCI8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCIoIChkYXRhICYmIGRhdGE/LmNhcmRTdWJUeXBlKSB8fCAnY2FyZE1pbmltYWwnKVwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidzdGFuZGFyZCdcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJjYXJkU3RhbmRhcmRcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInc3BhY2Utc2F2aW5nJ1wiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNhcmRTcGFjZVNhdmluZ1wiPjwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoRGVmYXVsdCBbbmdUZW1wbGF0ZU91dGxldF09XCJjYXJkTWluaW1hbFwiPjwvbmctY29udGFpbmVyPlxuPC9uZy1jb250YWluZXI+XG5cbjxuZy10ZW1wbGF0ZSAjY2FyZE1pbmltYWw+XG4gICAgPGRpdiAjY2FyZFJlZiBjbGFzcz1cInRlcm0tY2FyZCBjbGlja2FibGUge3tkYXRhLmluZGV4fX1cIiAoY2xpY2spPVwiY2FyZENsaWNrZWQoZGF0YSwgY2FyZFJlZilcIlxuICAgICAgICBbbmdDbGFzc109XCJbZGF0YS5jaGlsZHJlbi5zZWxlY3RlZD8nc2VsZWN0ZWQnOicnLCBkYXRhLmNoaWxkcmVuLmFwcHJvdmFsU3RhdHVzID09PSAnRHJhZnQnPyAnaW5EcmFmdCc6JycsXG4gICAgZGF0YS5jaGlsZHJlbi5hc3NvY2lhdGlvblByb3BlcnRpZXM/LmFwcHJvdmFsU3RhdHVzID09PSAnRHJhZnQnICYmIGlzQXBwcm92YWxSZXF1aXJlZCAmJiAhYXBwcm92YWxMaXN0Lmxlbmd0aCB8fCBkYXRhLmNoaWxkcmVuLmhpZ2hsaWdodCAmJiBpc0FwcHJvdmFsUmVxdWlyZWQgPyAnaW5Bc3NvY2lhdGlvbkRyYWZ0JzonJ11cIlxuICAgICAgICBpZD1cInt7ZGF0YS5jaGlsZHJlbi5uYW1lfX1cIlxuICAgICAgICBbbmdTdHlsZV09XCJ7J2JhY2tncm91bmQtY29sb3InOmdldENvbG9yKGRhdGEuaW5kZXgsY2FyZFJlZiwnYmdDb2xvcicsZGF0YSl9XCI+XG4gICAgICAgIDwhLS0gKGNsaWNrKT1cImRhdGEuc2VsZWN0ZWQ9IWRhdGEuc2VsZWN0ZWRcIiAtLT4gICBcbiAgICAgICAgPGRpdiBjbGFzcz1cInRlcm0tY2FyZC1wYXJlbnRcIj5cbiAgICAgICAgICAgIDwhLS0gPEJlbG93IGVsZW1lbnQgaXMgdG8gc2hvdyBpZCBvbiB0b3AgbGVmdCBvZiB0aGUgY2FyZD4gLS0+XG4gICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJpZFwiIFtoaWRkZW5dPVwidHJ1ZVwiPnt7ZGF0YS5jaGlsZHJlbi5jb2RlfX08L2Rpdj4gLS0+XG4gICAgICAgICAgICAgXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGVybS1jYXJkLWNvbnRlbnQgdy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgPCEtLSA8bmctY29udGFpbmVyICAqbmdJZj1cImRhdGE/LmNoaWxkcmVuPy5yZWZJZFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmliYm9uXCI+e3tkYXRhPy5jaGlsZHJlbj8ucmVmSWR9fTwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPiAtLT5cblxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkYXRhPy5jaGlsZHJlbj8uYWRkaXRpb25hbFByb3BlcnRpZXM/LmNvbXBldGVuY3lBcmVhPy5uYW1lXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgIGNsYXNzPVwibWItMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjb21wLWFyZWEge3tkYXRhPy5jaGlsZHJlbj8uYWRkaXRpb25hbFByb3BlcnRpZXM/LmNvbXBldGVuY3lBcmVhPy5uYW1lPy50b0xvd2VyQ2FzZSgpfX1cIj57e2RhdGE/LmNoaWxkcmVuPy5hZGRpdGlvbmFsUHJvcGVydGllcz8uY29tcGV0ZW5jeUFyZWE/Lm5hbWV9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWJldHdlZW4gZmxleC1taWRkbGVcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdGl0bGVcIj57e2RhdGEuY2hpbGRyZW4ubmFtZX19XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGF0YT8uY2hpbGRyZW4/LnJlZklkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlZklkQ2FyZCBtdC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7ZGF0YT8uY2hpbGRyZW4/LnJlZklkfX0gPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+IFxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRhdGE/LmNvbHVtbkluZm8/LmNvbmZpZz8uZW5hYmxlSW5mb0ljb25cIiA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gaTE4bi1hcmlhLWxhYmVsIGFyaWEtbGFiZWw9XCJpbmZvIGl0ZW1zXCIgY2xhc3M9XCJhY3Rpb24tYnRuIHNtYWxsLWJ0blwiIChjbGljayk9XCJvcGVuRGlhbG9nKClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJzbWFsbC1pY29uXCI+aW5mbzwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPCEtLSA8bmctY29udGFpbmVyICpuZ0lmPVwiZGF0YT8uY2hpbGRyZW4/LnJlZklkXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZWZJZENhcmQgcHgtNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3tkYXRhPy5jaGlsZHJlbj8ucmVmSWR9fSA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPiAtLT5cbiAgICAgICAgICAgICAgICA8IS0tIDxzcGFuPisre3tkYXRhLmNoaWxkcmVuLnNlbGVjdGVkfX0rKys8L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4+PT17e2RhdGEuY2hpbGRyZW4uc3RhdHVzfX09PTwvc3Bhbj4gIC0tPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGdhcC0zIGZsZXgtbWlkZGxlIG10LTRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtZGVzY3JpcHRpb24gZmxleCBmbGV4LW1pZGRsZSBnYXAtMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIHN2Z0ljb249XCJmcmFjXCI+PC9tYXQtaWNvbj4gXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7KGRhdGEuY2hpbGRyZW4uY2hpbGRyZW4pID8gZGF0YS5jaGlsZHJlbi5jaGlsZHJlbj8ubGVuZ3RoIDogMH19IENoaWxkIE9yZzwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWRlc2NyaXB0aW9uIGZsZXggZmxleC1taWRkbGUgZ2FwLTFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBzdmdJY29uPVwiZnJhY1wiPjwvbWF0LWljb24+IFxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3tnZXR1c2VyQ291bnQoZGF0YSl9fSBVc2Vyczwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkYXRhPy5jb2x1bW5JbmZvPy5jb25maWc/LmVuYWJsZVRocmVlRG90ICYmIGVuYWJsZVRocmVlRG90c1wiID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiBpMThuLWFyaWEtbGFiZWwgYXJpYS1sYWJlbD1cImFjdGlvbiBpdGVtc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbWF0TWVudVRyaWdnZXJGb3JdPVwib3JnTWVudVwiIFttYXRNZW51VHJpZ2dlckRhdGFdPVwieydkYXRhJzpkYXRhLCAnY2FyZFJlZic6IGNhcmRSZWZ9XCIgY2xhc3M9XCJhY3Rpb24tYnRuIHNtYWxsLWJ0biBtbC1hdXRvXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJzbWFsbC1pY29uXCI+bW9yZV92ZXJ0PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPCEtLSA8cD57e2RhdGEuY2hpbGRyZW4uYXBwcm92YWxTdGF0dXN9fSwge3tkYXRhLmNoaWxkcmVuLmFzc29jaWF0aW9uUHJvcGVydGllcz8uYXBwcm92YWxTdGF0dXN9fTwvcD4gLS0+XG4gICAgICAgIDwhLS0gKm5nSWY9XCIhZGF0YS5pc1ZpZXdPbmx5ICYmIGRhdGEuY2hpbGRyZW4uYXBwcm92YWxTdGF0dXMgPT09ICdEcmFmdCcgJiYgaXNBcHByb3ZhbFJlcXVpcmVkXCIgLS0+XG4gICAgICAgIDwhLS0gKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcIiAtLT5cbiAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwidGVybS1jYXJkLWNoZWNrYm94XCI+XG4gICAgICAgICAgICA8bWF0LWNoZWNrYm94IGNvbG9yPVwicHJpbWFyeVwiICpuZ0lmPVwiZGF0YS5jaGlsZHJlbi5hcHByb3ZhbFN0YXR1cyA9PT0gJ0RyYWZ0JyAmJiBpc0FwcHJvdmFsUmVxdWlyZWQgJiYgIWFwcHJvdmFsTGlzdC5sZW5ndGggfHwgXG4gICAgICAgICAgICBkYXRhLmNoaWxkcmVuLmFzc29jaWF0aW9uUHJvcGVydGllcz8uYXBwcm92YWxTdGF0dXMgPT09ICdEcmFmdCcgJiYgaXNBcHByb3ZhbFJlcXVpcmVkICYmICFhcHByb3ZhbExpc3QubGVuZ3RoIHx8XG4gICAgICAgICAgICBkYXRhLmNoaWxkcmVuLmhpZ2hsaWdodCAmJiBpc0FwcHJvdmFsUmVxdWlyZWRcIiBbY2hlY2tlZF09XCJkYXRhLmNoaWxkcmVuLmhpZ2hsaWdodFwiIGNsYXNzPVwidGVybVNlbGVjdGlvblwiXG4gICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJoYW5kbGVQcm9kdWN0Q2xpY2soZGF0YS5jaGlsZHJlbiwgJGV2ZW50KVwiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj48L21hdC1jaGVja2JveD5cbiAgICAgICAgICAgIDxtYXQtaWNvbiBjb2xvcj1cInByaW1hcnlcIiBjbGFzcz1cImFwcHJvdmUtZmxhZ1wiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJkYXRhLmNoaWxkcmVuLmhpZ2hsaWdodCAmJiBpc0FwcHJvdmFsUmVxdWlyZWRcIj57e2FwcF9zdHJpbmdzLmZsYWd9fTwvbWF0LWljb24+XG4gICAgICAgIDwvZGl2PiAtLT5cbiAgICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjY2FyZFN0YW5kYXJkPlxuICAgIDxkaXY+XG4gICAgICAgIHt7ZGF0YS5jaGlsZHJlbi5uYW1lfX0gXG4gICAgPC9kaXY+XG4gICAgPGRpdj5cbiAgICAgICAge3tkYXRhLmNoaWxkcmVuLmRlc2NyaXB0aW9ufX0gc1xuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNjYXJkU3BhY2VTYXZpbmc+XG4gICAgPGRpdj5cbiAgICAgICAge3tkYXRhLmNoaWxkcmVuLm5hbWV9fVxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG1hdC1tZW51ICNjYXJkTWVudT1cIm1hdE1lbnVcIiBjbGFzcz1cIm1lbnUtc2VjXCI+XG4gICAgPG5nLXRlbXBsYXRlIG1hdE1lbnVDb250ZW50IGxldC1yb3dEYXRhPVwiZGF0YVwiIGxldC1jYXJkUmVmPVwiY2FyZFJlZlwiPlxuICAgICAgICA8IS0tIDxkaXYgPiAtLT5cbiAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImRhdGEuY29sdW1uSW5mby5jb25maWcuZW5hYmxlVmlld1wiICAoY2xpY2spPVwidmlldyhkYXRhLCBkYXRhLmNoaWxkcmVuLCBkYXRhLmluZGV4KVwiIG1hdC1tZW51LWl0ZW0gbmFtZT1cImNoYW5uZWwtYW5hbHl0aWNzLWJ1dHRvblwiXG4gICAgICAgICAgICBjbGFzcz1cIndzLW1hdC1wcmltYXJ5LXRleHRcIiBpMThuLWFyaWEtbGFiZWwgYXJpYS1sYWJlbD1cIkFuYWx5dGljc1wiPlxuICAgICAgICAgICAgPG1hdC1pY29uPnZpc2liaWxpdHk8L21hdC1pY29uPiA8c3Bhbj5WaWV3PC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImRhdGEuY29sdW1uSW5mby5jb25maWcuZW5hYmFsZUVkaXRcIiAoY2xpY2spPVwiZWRpdChkYXRhLCAgZGF0YS5jaGlsZHJlbixkYXRhLmluZGV4LCBjYXJkUmVmKVwiXG4gICAgICAgICAgICBtYXQtbWVudS1pdGVtIG5hbWU9XCJjaGFubmVsLWFuYWx5dGljcy1idXR0b25cIiBjbGFzcz1cIndzLW1hdC1wcmltYXJ5LXRleHRcIiBpMThuLWFyaWEtbGFiZWxcbiAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJBbmFseXRpY3NcIj5cbiAgICAgICAgICAgIDxtYXQtaWNvbj5lZGl0PC9tYXQtaWNvbj5cbiAgICAgICAgICAgIDxzcGFuPkVkaXQ8L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uICpuZ0lmPVwiZGF0YS5jb2x1bW5JbmZvLmNvbmZpZy5lbmFibGVBZGRcIiAoY2xpY2spPVwiY3JlYXRlKGRhdGEpXCJcbiAgICAgICAgICAgIG1hdC1tZW51LWl0ZW0gbmFtZT1cImNoYW5uZWwtYW5hbHl0aWNzLWJ1dHRvblwiIGNsYXNzPVwid3MtbWF0LXByaW1hcnktdGV4dFwiIGkxOG4tYXJpYS1sYWJlbFxuICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkFuYWx5dGljc1wiPlxuICAgICAgICAgICAgPG1hdC1pY29uPmFkZDwvbWF0LWljb24+XG4gICAgICAgICAgICA8c3Bhbj5BZGQ8L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uICpuZ0lmPVwiZGF0YS5jb2x1bW5JbmZvLmNvbmZpZy5lbmFibGVEZWxldGVcIiAoY2xpY2spPVwiZGVsZXRlKGRhdGEpXCJcbiAgICAgICAgICAgIG1hdC1tZW51LWl0ZW0gbmFtZT1cImNoYW5uZWwtYW5hbHl0aWNzLWJ1dHRvblwiIGNsYXNzPVwid3MtbWF0LXByaW1hcnktdGV4dFwiIGkxOG4tYXJpYS1sYWJlbFxuICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkFuYWx5dGljc1wiPlxuICAgICAgICAgICAgPG1hdC1pY29uPmRlbGV0ZTwvbWF0LWljb24+XG4gICAgICAgICAgICA8c3Bhbj5EZWxldGU8L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgIDwvbmctdGVtcGxhdGU+XG48L21hdC1tZW51PlxuXG48bWF0LW1lbnUgI29yZ01lbnU9XCJtYXRNZW51XCIgY2xhc3M9XCJtZW51LXNlY1wiPlxuICAgIDxuZy10ZW1wbGF0ZSBtYXRNZW51Q29udGVudCBsZXQtcm93RGF0YT1cImRhdGFcIiBsZXQtY2FyZFJlZj1cImNhcmRSZWZcIj5cbiAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImRhdGEuY29sdW1uSW5mby5jb25maWcuZW5hYmxlVXBkYXRlSGllcmFyY2h5ICYmIGRhdGEuaW5kZXggPiAxXCIgIChjbGljayk9XCJtZW51QWN0aW9uKCd1cGRhdGUtaGllcmFyY2h5JywgZGF0YSlcIiBtYXQtbWVudS1pdGVtIG5hbWU9XCJjaGFubmVsLWFuYWx5dGljcy1idXR0b25cIlxuICAgICAgICAgICAgY2xhc3M9XCJhY3Rpb24tYnRuXCIgaTE4bi1hcmlhLWxhYmVsIGFyaWEtbGFiZWw9XCJBbmFseXRpY3NcIj5cbiAgICAgICAgICAgIDxtYXQtaWNvbj5lZGl0PC9tYXQtaWNvbj4gPHNwYW4+VXBkYXRlIEhpZXJhcmNoeTwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxidXR0b24gKm5nSWY9XCJkYXRhLmNvbHVtbkluZm8uY29uZmlnLmVuYWJhbGVSZW1vdmVDb25uZWN0aW9uICYmICFjaGVja0lmQ2hpbGRPcmdcIiAoY2xpY2spPVwibWVudUFjdGlvbigncmVtb3ZlLXRlcm0nLCBkYXRhKVwiXG4gICAgICAgICAgICBtYXQtbWVudS1pdGVtIG5hbWU9XCJjaGFubmVsLWFuYWx5dGljcy1idXR0b25cIiBjbGFzcz1cImFjdGlvbi1idG5cIiBpMThuLWFyaWEtbGFiZWxcbiAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJBbmFseXRpY3NcIj5cbiAgICAgICAgICAgIDxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+XG4gICAgICAgICAgICA8c3Bhbj5SZW1vdmUgQ29ubmVjdGlvbjwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxidXR0b24gKm5nSWY9XCJkYXRhLmNvbHVtbkluZm8uY29uZmlnLmVuYWJsZU1hbmFnZU9yZ2FuaXphdGlvblwiIChjbGljayk9XCJtZW51QWN0aW9uKCdtYW5hZ2Utb3JnJywgZGF0YSlcIlxuICAgICAgICAgICAgbWF0LW1lbnUtaXRlbSBuYW1lPVwiY2hhbm5lbC1hbmFseXRpY3MtYnV0dG9uXCIgY2xhc3M9XCJhY3Rpb24tYnRuXCIgaTE4bi1hcmlhLWxhYmVsXG4gICAgICAgICAgICBhcmlhLWxhYmVsPVwiQW5hbHl0aWNzXCI+XG4gICAgICAgICAgICA8bWF0LWljb24+c2V0dGluZ3M8L21hdC1pY29uPlxuICAgICAgICAgICAgPHNwYW4+TWFuYWdlIE9yZ2FuaXNhdGlvbjwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbjwvbWF0LW1lbnU+XG5cbjwhLS0gQWRkIHRoaXMgdGVtcGxhdGUgdG8geW91ciBjb21wb25lbnQgLS0+XG48bmctdGVtcGxhdGUgI2RpYWxvZ1RlbXBsYXRlPlxuICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBmbGV4LW1pZGRsZVwiPlxuICAgIDxtYXQtaWNvbiBjbGFzcz1cImxhcmdlLWljb24gY29sb3Itc2Vjb25kYXJ5XCI+ZXJyb3Jfb3V0bGluZTwvbWF0LWljb24+XG4gICAgPHAgY2xhc3M9XCJjb2xvci1wcmltYXJ5IG1vZGFsLXRleHQgbWFyZ2luLXRvcC1zXCI+U2VsZWN0IGEgb3JnYW5pc2F0aW9uIHRvIHt7ZW5hYmxlVGhyZWVEb3RzID8gJ2FkZCBvciAnIDogJyd9fXNlZSBmdXJ0aGVyIGNvbm5lY3Rpb25zLjwvcD5cbiAgICA8YnV0dG9uIG1hdC1idXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJjbG9zZU1vZGFsKClcIiBjbGFzcz1cImJ0bi1jb21tb24gYnRuLXByaW1hcnkgbW9kYWwtYnRuXCI+Q2xvc2U8L2J1dHRvbj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG4iXX0=
|
|
343
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVybS1jYXJkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnJhcnkvc3VuYmlyZC1jYi90cmVlLWhpZXJhcmNoeS9zcmMvbGliL2NvbXBvbmVudHMvdGVybS1jYXJkL3Rlcm0tY2FyZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJ5L3N1bmJpcmQtY2IvdHJlZS1oaWVyYXJjaHkvc3JjL2xpYi9jb21wb25lbnRzL3Rlcm0tY2FyZC90ZXJtLWNhcmQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQWUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBS2pILE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUc5QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSxzRUFBc0UsQ0FBQztBQUN4SCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQzs7Ozs7Ozs7OztBQUVoRyxNQUthLGlCQUFpQjtJQWM1QixJQUNJLElBQUksQ0FBQyxLQUFVO1FBQ2pCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBR25CLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFNBQVMsR0FBQyxLQUFLLENBQUE7SUFDckMsQ0FBQztJQUNELElBQUksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNwQixDQUFDO0lBTUQsWUFDVSxnQkFBa0MsRUFDbEMsc0JBQThDLEVBQzlDLGVBQWdDLEVBQ2pDLE1BQWlCO1FBSGhCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsMkJBQXNCLEdBQXRCLHNCQUFzQixD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QUFDOytHQW5ZVSxpQkFBaUI7bUdBQWpCLGlCQUFpQix3V0NqQjlCLGd0UkF5SkE7O1NEeElhLGlCQUFpQjs0RkFBakIsaUJBQWlCO2tCQUw3QixTQUFTOytCQUNFLGVBQWU7d01BTUksY0FBYztzQkFBMUMsU0FBUzt1QkFBQyxnQkFBZ0I7Z0JBQ2xCLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFXRixJQUFJO3NCQURQLEtBQUs7Z0JBV0ksVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgTlNGcmFtZXdvcmsgfSBmcm9tICcuLi8uLi9tb2RlbHMvZnJhbWV3b3JrLm1vZGVsJ1xuaW1wb3J0IHsgQXBwcm92YWxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYXBwcm92YWwuc2VydmljZSc7XG5pbXBvcnQgeyBGcmFtZXdvcmtTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZnJhbWV3b3JrLnNlcnZpY2UnXG5pbXBvcnQgeyBMb2NhbENvbm5lY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbG9jYWwtY29ubmVjdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IGxhYmVscyB9IGZyb20gJy4uLy4uL2xhYmVscy9zdHJpbmdzJztcbmltcG9ydCB7IENhcmRTZWxlY3Rpb24sIENhcmRDaGVja2VkLCBDYXJkIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3ZhcmlhYmxlLXR5cGUubW9kZWwnO1xuaW1wb3J0IHsgTWF0TGVnYWN5RGlhbG9nIGFzIE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2xlZ2FjeS1kaWFsb2cnO1xuaW1wb3J0IHsgQ3JlYXRlVGVybUNvbXBvbmVudCB9IGZyb20gJy4uL2NyZWF0ZS10ZXJtL2NyZWF0ZS10ZXJtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDcmVhdGVUZXJtRnJvbUZyYW1ld29ya0NvbXBvbmVudCB9IGZyb20gJy4vLi4vY3JlYXRlLXRlcm0tZnJvbS1mcmFtZXdvcmsvY3JlYXRlLXRlcm0tZnJvbS1mcmFtZXdvcmsuY29tcG9uZW50JztcbmltcG9ydCB7IENvbmZvcmFtdGlvblBvcHVwQ29tcG9uZW50IH0gZnJvbSAnLi4vY29uZm9yYW10aW9uLXBvcHVwL2NvbmZvcmFtdGlvbi1wb3B1cC5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItdGVybS1jYXJkJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3Rlcm0tY2FyZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3Rlcm0tY2FyZC5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFRlcm1DYXJkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAvLyBASW5wdXQoKSBkYXRhITogTlNGcmFtZXdvcmsuSVRlcm1DYXJkXG4gIEBWaWV3Q2hpbGQoJ2RpYWxvZ1RlbXBsYXRlJykgZGlhbG9nVGVtcGxhdGUhOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBASW5wdXQoKSBlbmFibGVUaHJlZURvdHMgPSB0cnVlXG4gIEBJbnB1dCgpIGNoZWNrSWZDaGlsZE9yZzogYW55O1xuICBwcml2YXRlIF9kYXRhITogTlNGcmFtZXdvcmsuSVRlcm1DYXJkO1xuICBpc0FwcHJvdmFsUmVxdWlyZWQ6IGJvb2xlYW4gPSBmYWxzZVxuICBhcHByb3ZhbExpc3Q6IEFycmF5PENhcmQ+ID0gW11cbiAgaGVpZ2h0TGlnaHRlZCA9IFtdXG4gIGFwcF9zdHJpbmdzOiBhbnkgPSBsYWJlbHM7XG4gIGxvYWRlZDogYW55ID0ge31cbiAgaXNDb21wZXRlbmN5QXJlYTphbnk7XG4gIGVudmlyb25tZW50OiBhbnlcbiAgc3Vic2NyaXB0aW9uIDphbnlcbiAgQElucHV0KClcbiAgc2V0IGRhdGEodmFsdWU6IGFueSkge1xuICAgIHRoaXMuX2RhdGEgPSB2YWx1ZTtcbiAgICAvLyAgaWYodGhpcy5fZGF0YSlcbiAgICAvLyAgICB0aGlzLmNyZWF0ZVRpbWVsaW5lKHRoaXMuX2RhdGFbMF0uaWQpXG4gICAgdGhpcy5fZGF0YS5jaGlsZHJlbi5oaWdobGlnaHQ9ZmFsc2VcbiAgfVxuICBnZXQgZGF0YSgpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLl9kYXRhO1xuICB9XG5cbiAgQE91dHB1dCgpIGlzU2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPENhcmRTZWxlY3Rpb24+KClcbiAgQE91dHB1dCgpIHNlbGVjdGVkQ2FyZCA9IG5ldyBFdmVudEVtaXR0ZXI8Q2FyZENoZWNrZWQ+KClcbiAgQE91dHB1dCgpIGNhcmRBY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPHsgYWN0aW9uOiBzdHJpbmcsIGRhdGE6IGFueSB9PigpXG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBmcmFtZXdvcmtTZXJ2aWNlOiBGcmFtZXdvcmtTZXJ2aWNlLFxuICAgIHByaXZhdGUgbG9jYWxDb25uZWN0aW9uU2VydmljZTogTG9jYWxDb25uZWN0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIGFwcHJvdmFsU2VydmljZTogQXBwcm92YWxTZXJ2aWNlLFxuICAgIHB1YmxpYyBkaWFsb2c6IE1hdERpYWxvZywgXG4gICkgeyB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5pc0FwcHJvdmFsUmVxdWlyZWQgPSB0aGlzLmxvY2FsQ29ubmVjdGlvblNlcnZpY2UuZ2V0Q29uZmlnSW5mbygpLmlzQXBwcm92YWxSZXF1aXJlZFxuICAgIFxuICAgIHRoaXMudXBkYXRlQXBwcm92YWxTdGF0dXMoKVxuICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gdGhpcy5mcmFtZXdvcmtTZXJ2aWNlLmluc2VydFVwZGF0ZURlbGV0ZU5vdGlmaWVyLnN1YnNjcmliZSgoZSk9PntcbiAgICAgIGlmKGUpe1xuICAgICAgIHRoaXMuaXNDb21wZXRlbmN5QXJlYSA9IGUuYWN0aW9uXG4gICAgICB9XG4gICAgfSlcblxuXG4gICAgdGhpcy5lbnZpcm9ubWVudCA9IHRoaXMuZnJhbWV3b3JrU2VydmljZS5nZXRFbnZpcm9tZW50KClcbiAgICBcbiAgfVxuXG4gIGNhcmRDbGlja2VkKGRhdGE6IGFueSwgY2FyZFJlZjogYW55KSB7XG4gICAgaWYoZGF0YS5jYXRlZ29yeSE9J3N1YnRoZW1lJyl7XG4gICAgICB0aGlzLmZyYW1ld29ya1NlcnZpY2UuY2FyZENsa0RhdGEgPSBkYXRhO1xuICAgICAgdGhpcy5mcmFtZXdvcmtTZXJ2aWNlLkN1cnJlbnRDYXJkQ2xrLm5leHQoZGF0YS5jYXRlZ29yeSlcbiAgICAgIFxuICAgIH1cbiAgICAvLyB0aGlzLmRhdGEuc2VsZWN0ZWQgPSB0cnVlXG4gICAgaWYodGhpcy5mcmFtZXdvcmtTZXJ2aWNlLmlzTGFzdENvbHVtbih0aGlzLmRhdGEuY2F0ZWdvcnkpKXtcbiAgICAgIHJldHVybiBcbiAgICB9XG4gICAgdGhpcy5mcmFtZXdvcmtTZXJ2aWNlLmN1cnJlbnRTZWxlY3Rpb24ubmV4dCh7IHR5cGU6IHRoaXMuZGF0YS5jYXRlZ29yeSwgZGF0YTogZGF0YS5jaGlsZHJlbiwgY2FyZFJlZiB9KVxuICAgIHRoaXMuaXNTZWxlY3RlZC5lbWl0KHsgZWxlbWVudDogdGhpcy5kYXRhLmNoaWxkcmVuLCBpc1NlbGVjdGVkOiAhZGF0YS5zZWxlY3RlZCB9KVxuICB9XG5cbiAgaGFuZGxlUHJvZHVjdENsaWNrKHRlcm06IGFueSwgZXZlbnQ6IGFueSl7XG4gICAgdGhpcy5zZWxlY3RlZENhcmQuZW1pdCh7dGVybTp0ZXJtLCBjaGVja2VkOmV2ZW50LmNoZWNrZWR9KVxuICB9XG5cbiAgdXBkYXRlQXBwcm92YWxTdGF0dXMoKXtcbiAgICAgY29uc3QgaWQgPSB0aGlzLl9kYXRhLmNoaWxkcmVuLmlkZW50aWZpZXI7XG4gICAgdGhpcy5hcHByb3ZhbFNlcnZpY2UuZ2V0VXBkYXRlTGlzdCgpLnN1YnNjcmliZSgobGlzdDphbnkpID0+IHtcbiAgICAgIHRoaXMuYXBwcm92YWxMaXN0ID0gbGlzdC5tYXAoKGl0ZW06IGFueSkgPT4gaXRlbS5pZGVudGlmaWVyKTtcbiAgICAgIGlmKHRoaXMuYXBwcm92YWxMaXN0KXtcbiAgICAgICAgICAgaWYodGhpcy5hcHByb3ZhbExpc3QuaW5jbHVkZXMoaWQpKXtcbiAgICAgICAgICAgICAgdGhpcy5fZGF0YS5jaGlsZHJlbi5oaWdobGlnaHQgPSB0cnVlXG4gICAgICAgICAgICB9XG4gICAgICB9ICAgICBcbiAgICB9KVxuICB9XG5cbiAgZ2V0Q29sb3IoaW5kZXhDbGFzczpudW1iZXIsIGNhcmRSZWY6IGFueSxwcm9wZXJ0eTogc3RyaW5nLCBkYXRhOmFueSkge1xuICAgIGxldCBjb25maWcgPSB0aGlzLmZyYW1ld29ya1NlcnZpY2UuZ2V0Q29uZmlnKGRhdGEuY2F0ZWdvcnkpO1xuICAgIGlmKGNhcmRSZWYuY2xhc3NMaXN0LmNvbnRhaW5zKCdzZWxlY3RlZCcpICYmIHByb3BlcnR5ID09PSAnYmdDb2xvcicpe1xuICAgICAgIHJldHVybiBjb25maWcuY29sb3I7XG4gICAgfVxuICAgIGlmKHByb3BlcnR5ID09PSAnYm9yZGVyJyl7XG4gICAgICBsZXQgYm9yZGVyQ29sb3I7XG4gICAgICBpZihjYXJkUmVmLmNsYXNzTGlzdC5jb250YWlucygoaW5kZXhDbGFzcykudG9TdHJpbmcoKSkpe1xuICAgICAgICBib3JkZXJDb2xvciA9IFwiOHB4IHNvbGlkXCIgKyBjb25maWcuY29sb3I7XG4gICAgICB9XG4gICAgICByZXR1cm4gYm9yZGVyQ29sb3I7XG4gICAgfVxuICB9XG5cblxuICB2aWV3KGRhdGE6IGFueSwgY2hpbGRyZW5EYXRhOiBhbnksIGluZGV4OiBhbnkpe1xuICAgIGxldCBkaWFsb2c6IGFueVxuICAgIGNvbnN0IHNlbGVjdGVkVGVybXMgPSB0aGlzLmZyYW1ld29ya1NlcnZpY2UuZ2V0UHJldmlvdXNTZWxlY3RlZFRlcm1zKGRhdGEuY29sdW1uSW5mby5jb2RlKVxuICAgIGNvbnN0IG5leENvbEluZm8gPSB0aGlzLmdldE5leHRDYXQoZGF0YSlcbiAgICBjb25zdCBuZXh0Q2F0ID0gbmV4Q29sSW5mbyB8fCBkYXRhLmNvbHVtbkluZm9cbiAgICBpZihuZXh0Q2F0ICYmIHRoaXMuZW52aXJvbm1lbnQgJiYgdGhpcy5lbnZpcm9ubWVudC5mcmFtZXdvcmtUeXBlID09PSAnTURPX0RFU0lHTkFUSU9OJykge1xuICAgICAgY29uc3QgbmV4dE5leHRDYXQgPSB0aGlzLmZyYW1ld29ya1NlcnZpY2UuZ2V0TmV4dENhdGVnb3J5KG5leHRDYXQuY29kZSlcbiAgICAgIGNvbnN0IHNlbGVjdGVkVGVybXMgPSB0aGlzLmZyYW1ld29ya1NlcnZpY2UuZ2V0UHJldmlvdXNTZWxlY3RlZFRlcm1zKG5leHRDYXQuY29kZSlcbiAgICAgIGNvbnN0IGNvbEluZm8gPSBBcnJheS5mcm9tKHRoaXMuZnJhbWV3b3JrU2VydmljZS5saXN0LnZhbHVlcygpKS5maWx0ZXIobCA9PiBsLmNvZGUgPT09IG5leHRDYXQuY29kZSApXG4gICAgICBsZXQgbmV4dENvbEluZm8gOiBhbnkgPSBbXVxuICAgICAgaWYobmV4dE5leHRDYXQgJiYgbmV4dE5leHRDYXQuY29kZSkge1xuICAgICAgICBuZXh0Q29sSW5mbyA9IEFycmF5LmZyb20odGhpcy5mcmFtZXdvcmtTZXJ2aWNlLmxpc3QudmFsdWVzKCkpLmZpbHRlcihsID0+IGwuY29kZSA9PT0gbmV4dE5leHRDYXQuY29kZSApXG4gICAgICB9XG4gICAgICAgIGRpYWxvZyA9IHRoaXMuZGlhbG9nLm9wZW4oQ3JlYXRlVGVybUZyb21GcmFtZXdvcmtDb21wb25lbnQsIHtcbiAgICAgICAgICBkYXRhOiB7IFxuICAgICAgICAgICAgbW9kZTonbXVsdGktY3JlYXRlJyxcbiAgICAgICAgICAgIG9wZW5Nb2RlOiAndmlldycsXG4gICAgICAgICAgICBjYXJkQ29sSW5mbzogdGhpcy5kYXRhLmNvbHVtbkluZm8sXG4gICAgICAgICAgICBjb2x1bW5JbmZvOiBjb2xJbmZvICYmIGNvbEluZm8ubGVuZ3RoID8gY29sSW5mb1swXSA6IFtdLFxuICAgICAgICAgICAgbmV4dENvbEluZm86IG5leHRDb2xJbmZvICYmIG5leHRDb2xJbmZvLmxlbmd0aCA/IG5leHRDb2xJbmZvWzBdIDogW10sXG4gICAgICAgICAgICBmcmFtZXdvcmtJZDogdGhpcy5mcmFtZXdvcmtTZXJ2aWNlLmdldEZyYW1ld29ya0lkKCksXG4gICAgICAgICAgICBzZWxlY3RlZHBhcmVudHM6IHRoaXMuaGVpZ2h0TGlnaHRlZCxcbiAgICAgICAgICAgIGNvbEluZGV4OiBuZXh0Q2F0LmluZGV4LFxuICAgICAgICAgICAgY2hpbGRyZW5EYXRhOiBkYXRhLmNoaWxkcmVuLFxuICAgICAgICAgICAgc2VsZWN0ZWRQYXJlbnRUZXJtczogc2VsZWN0ZWRUZXJtc1xuICAgICAgICAgIH0sXG4gICAgICAgICAgd2lkdGg6ICc4MDBweCcsXG4gICAgICAgICAgcGFuZWxDbGFzczogJ2N1c3RvbS1kaWFsb2ctY29udGFpbmVyJ1xuICAgICAgICB9KVxuICAgICAgXG4gICAgIFxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGRpYWxvZyA9IHRoaXMuZGlhbG9nLm9wZW4oQ3JlYXRlVGVybUNvbXBvbmVudCwge1xuICAgICAgICBkYXRhOiB7IFxuICAgICAgICAgIG1vZGU6J3ZpZXcnLFxuICAgICAgICAgIGNvbHVtbkluZm86IHRoaXMuZGF0YS5jb2x1bW5JbmZvLFxuICAgICAgICAgIGZyYW1ld29ya0lkOiB0aGlzLmZyYW1ld29ya1NlcnZpY2UuZ2V0RnJhbWV3b3JrSWQoKSxcbiAgICAgICAgICBzZWxlY3RlZHBhcmVudHM6IHRoaXMuaGVpZ2h0TGlnaHRlZCxcbiAgICAgICAgICBjb2xJbmRleDogaW5kZXgsXG4gICAgICAgICAgY2hpbGRyZW5EYXRhOiBjaGlsZHJlbkRhdGEsXG4gICAgICAgICAgc2VsZWN0ZWRQYXJlbnRUZXJtczogc2VsZWN0ZWRUZXJtc1xuICAgICAgICB9LFxuICAgICAgICB3aWR0aDogJzgwMHB4JyxcbiAgICAgICAgcGFuZWxDbGFzczogJ2N1c3RvbS1kaWFsb2ctY29udGFpbmVyJ1xuICAgICAgfSlcbiAgICB9XG4gICAgZGlhbG9nLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuICAgICAgaWYoIXJlcykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICAvLyBpZiAocmVzICYmIHJlcy5jcmVhdGVkKSB7XG4gICAgICAvLyAgIHRoaXMuc2hvd1B1Ymxpc2ggPSB0cnVlXG4gICAgICAvLyB9XG4gICAgICAvLyB0aGlzLmxvYWRlZFtyZXMudGVybS5jYXRlZ29yeV0gPSBmYWxzZVxuICAgICAgLy8gLy8gd2FpdFxuICAgICAgLy8gY29uc3QgcGFyZW50Q29sdW1uID0gdGhpcy5mcmFtZXdvcmtTZXJ2aWNlLmdldFByZXZpb3VzQ2F0ZWdvcnkocmVzLnRlcm0uY2F0ZWdvcnkpXG4gICAgICAvLyByZXMucGFyZW50ID0gbnVsbFxuICAgICAgLy8gaWYgKHBhcmVudENvbHVtbikge1xuICAgICAgLy8gICByZXMucGFyZW50ID0gdGhpcy5mcmFtZXdvcmtTZXJ2aWNlLnNlbGVjdGlvbkxpc3QuZ2V0KHBhcmVudENvbHVtbi5jb2RlKVxuICAgICAgLy8gICByZXMucGFyZW50LmNoaWxkcmVuPyByZXMucGFyZW50LmNoaWxkcmVuLnB1c2gocmVzLnRlcm0pIDpyZXMucGFyZW50WydjaGlsZHJlbiddID0gW3Jlcy50ZXJtXVxuICAgICAgLy8gfVxuICAgICAgLy8gdGhpcy51cGRhdGVGaW5hbExpc3QoeyBzZWxlY3RlZFRlcm06IHJlcy50ZXJtLCBpc1NlbGVjdGVkOiBmYWxzZSwgcGFyZW50RGF0YTogcmVzLnBhcmVudCwgY29sSW5kZXg6Y29sSW5kZXggfSlcbiAgICB9KVxuICB9XG4gIGVkaXQoZGF0YTogYW55LCBjaGlsZHJlbkRhdGE6IGFueSwgaW5kZXg6IGFueSwgY2FyZFJlZjogYW55KXtcbiAgICBsZXQgZGlhbG9nOiBhbnlcbiAgICBjb25zdCBzZWxlY3RlZFRlcm1zID0gdGhpcy5mcmFtZXdvcmtTZXJ2aWNlLmdldFByZXZpb3VzU2VsZWN0ZWRUZXJtcyhkYXRhLmNvbHVtbkluZm8uY29kZSlcbiAgICBjb25zdCBuZXhDb2xJbmZvID0gdGhpcy5nZXROZXh0Q2F0KGRhdGEpXG4gICAgY29uc3QgbmV4dENhdCA9IG5leENvbEluZm8gfHwgZGF0YS5jb2x1bW5JbmZvXG4gICBcbiAgICBpZihuZXh0Q2F0ICYmIHRoaXMuZW52aXJvbm1lbnQgJiYgdGhpcy5lbnZpcm9ubWVudC5mcmFtZXdvcmtUeXBlID09PSAnTURPX0RFU0lHTkFUSU9OJykge1xuICAgICAgLy8gY29uc3QgbmV4dE5leHRDYXQgPSB0aGlzLmZyYW1ld29ya1NlcnZpY2UuZ2V0TmV4dENhdGVnb3J5KG5leHRDYXQuY29kZSlcbiAgICAgIC8vIGNvbnN0IHNlbGVjdGVkVGVybXMgPSB0aGlzLmZyYW1ld29ya1NlcnZpY2UuZ2V0UHJldmlvdXNTZWxlY3RlZFRlcm1zKG5leHRDYXQuY29kZSlcbiAgICAgIC8vIGNvbnN0IGNvbEluZm8gPSBBcnJheS5mcm9tKHRoaXMuZnJhbWV3b3JrU2VydmljZS5saXN0LnZhbHVlcygpKS5maWx0ZXIobCA9PiBsLmNvZGUgPT09IG5leHRDYXQuY29kZSApXG4gICAgICAvLyBsZXQgbmV4dENvbEluZm8gPSBbXVxuICAgICAgLy8gaWYobmV4dE5leHRDYXQgJiYgbmV4dE5leHRDYXQuY29kZSkge1xuICAgICAgLy8gICBuZXh0Q29sSW5mbyA9IEFycmF5LmZyb20odGhpcy5mcmFtZXdvcmtTZXJ2aWNlLmxpc3QudmFsdWVzKCkpLmZpbHRlcihsID0+IGwuY29kZSA9PT0gbmV4dE5leHRDYXQuY29kZSApXG4gICAgICAvLyB9XG4gICAgICAvLyAgIGRpYWxvZyA9IHRoaXMuZGlhbG9nLm9wZW4oQ3JlYXRlVGVybUZyb21GcmFtZXdvcmtDb21wb25lbnQsIHtcbiAgICAgIC8vICAgICBkYXRhOiB7IFxuICAgICAgLy8gICAgICAgbW9kZTonbXVsdGktY3JlYXRlJyxcbiAgICAgIC8vICAgICAgIG9wZW5Nb2RlOiAnZWRpdCcsXG4gICAgICAvLyAgICAgICBjYXJkQ29sSW5mbzogdGhpcy5kYXRhLmNvbHVtbkluZm8sXG4gICAgICAvLyAgICAgICBjb2x1bW5JbmZvOiBjb2xJbmZvICYmIGNvbEluZm8ubGVuZ3RoID8gY29sSW5mb1swXSA6IFtdLFxuICAgICAgLy8gICAgICAgbmV4dENvbEluZm86IG5leHRDb2xJbmZvICYmIG5leHRDb2xJbmZvLmxlbmd0aCA/IG5leHRDb2xJbmZvWzBdIDogW10sXG4gICAgICAvLyAgICAgICBmcmFtZXdvcmtJZDogdGhpcy5mcmFtZXdvcmtTZXJ2aWNlLmdldEZyYW1ld29ya0lkKCksXG4gICAgICAvLyAgICAgICBzZWxlY3RlZHBhcmVudHM6IHRoaXMuaGVpZ2h0TGlnaHRlZCxcbiAgICAgIC8vICAgICAgIGNvbEluZGV4OiBuZXh0Q2F0LmluZGV4LFxuICAgICAgLy8gICAgICAgY2hpbGRyZW5EYXRhOiBkYXRhLmNoaWxkcmVuLFxuICAgICAgLy8gICAgICAgc2VsZWN0ZWRQYXJlbnRUZXJtczogc2VsZWN0ZWRUZXJtc1xuICAgICAgLy8gICAgIH0sXG4gICAgICAvLyAgICAgd2lkdGg6ICc4MDBweCcsXG4gICAgICAvLyAgICAgcGFuZWxDbGFzczogJ2N1c3RvbS1kaWFsb2ctY29udGFpbmVyJ1xuICAgICAgLy8gICB9KVxuICAgICAgXG4gICAgICB0aGlzLmNyZWF0ZShkYXRhLCAnZWRpdCcpXG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgZGlhbG9nID0gdGhpcy5kaWFsb2cub3BlbihDcmVhdGVUZXJtQ29tcG9uZW50LCB7XG4gICAgICAgIGRhdGE6IHsgXG4gICAgICAgICAgbW9kZTonZWRpdCcsXG4gICAgICAgICAgY29sdW1uSW5mbzogZGF0YS5jb2x1bW5JbmZvLFxuICAgICAgICAgIGZyYW1ld29ya0lkOiB0aGlzLmZyYW1ld29ya1NlcnZpY2UuZ2V0RnJhbWV3b3JrSWQoKSxcbiAgICAgICAgICBzZWxlY3RlZHBhcmVudHM6IHRoaXMuaGVpZ2h0TGlnaHRlZCxcbiAgICAgICAgICBjb2xJbmRleDogaW5kZXgsXG4gICAgICAgICAgY2hpbGRyZW5EYXRhOiBjaGlsZHJlbkRhdGEsXG4gICAgICAgICAgc2VsZWN0ZWRQYXJlbnRUZXJtczogc2VsZWN0ZWRUZXJtcyxcbiAgICAgICAgICBjYXJkUmVmOiBjYXJkUmVmXG4gICAgICAgIH0sXG4gICAgICAgIHdpZHRoOiAnODAwcHgnLFxuICAgICAgICBwYW5lbENsYXNzOiAnY3VzdG9tLWRpYWxvZy1jb250YWluZXInXG4gICAgICB9KVxuICAgIH1cbiAgICBkaWFsb2cuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XG4gICAgICBpZighcmVzKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIC8vIGNvbnN0IHJlc3BvbnNlRGF0YSA9IHtcbiAgICAgIC8vICAgcmVzLFxuICAgICAgLy8gICBpbmRleDogaW5kZXguaW5kZXgsXG4gICAgICAvLyAgIGRhdGEsXG4gICAgICAvLyAgIHR5cGU6ICd1cGRhdGUnLFxuICAgICAgLy8gICBjYXJkUmVmOiBjYXJkUmVmXG4gICAgICAvLyB9XG4gICAgICAvLyB0aGlzLmZyYW1ld29ya1NlcnZpY2UudXBkYXRlQWZ0ZXJBZGRPckVkaXRTdWJqZWN0KHJlc3BvbnNlRGF0YSlcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ3Jlc2l6ZScpKVxuICAgICAgfSwgMTAwKVxuICAgIH0pXG4gIH1cbiAgY3JlYXRlKGRhdGE6IGFueSwgbW9kZT86c3RyaW5nKXtcbiAgICBjb25zdCBuZXhDb2xJbmZvID0gdGhpcy5nZXROZXh0Q2F0KGRhdGEpXG4gICAgY29uc3QgbmV4dENhdCA9IG5leENvbEluZm8gfHwgZGF0YS5jb2x1bW5JbmZvXG4gICAgY29uc3QgbmV4dE5leHRDYXQgPSB0aGlzLmZyYW1ld29ya1NlcnZpY2UuZ2V0TmV4dENhdGVnb3J5KG5leHRDYXQuY29kZSlcbiAgICBpZihuZXh0Q2F0KSB7XG4gICAgICBjb25zdCBzZWxlY3RlZFRlcm1zID0gdGhpcy5mcmFtZXdvcmtTZXJ2aWNlLmdldFByZXZpb3VzU2VsZWN0ZWRUZXJtcyhuZXh0Q2F0LmNvZGUpXG4gICAgICBjb25zdCBjb2xJbmZvID0gQXJyYXkuZnJvbSh0aGlzLmZyYW1ld29ya1NlcnZpY2UubGlzdC52YWx1ZXMoKSkuZmlsdGVyKGwgPT4gbC5jb2RlID09PSBuZXh0Q2F0LmNvZGUgKVxuICAgICAgbGV0IG5leHRDb2xJbmZvOiBhbnkgPSBbXVxuICAgICAgaWYobmV4dE5leHRDYXQgJiYgbmV4dE5leHRDYXQuY29kZSkge1xuICAgICAgICBuZXh0Q29sSW5mbyA9IEFycmF5LmZyb20odGhpcy5mcmFtZXdvcmtTZXJ2aWNlLmxpc3QudmFsdWVzKCkpLmZpbHRlcihsID0+IGwuY29kZSA9PT0gbmV4dE5leHRDYXQuY29kZSApXG4gICAgICB9XG4gICAgICBsZXQgZGlhbG9nOiBhbnlcbiAgICAgIGlmKHRoaXMuZW52aXJvbm1lbnQgJiYgdGhpcy5lbnZpcm9ubWVudC5mcmFtZXdvcmtUeXBlID09PSAnTURPX0RFU0lHTkFUSU9OJyl7XG4gICAgICAgIGRpYWxvZyA9IHRoaXMuZGlhbG9nLm9wZW4oQ3JlYXRlVGVybUZyb21GcmFtZXdvcmtDb21wb25lbnQsIHtcbiAgICAgICAgICBkYXRhOiB7IFxuICAgICAgICAgICAgbW9kZTonbXVsdGktY3JlYXRlJyxcbiAgICAgICAgICAgIG9wZW5Nb2RlOiBtb2RlIHx8ICdhZGQnLFxuICAgICAgICAgICAgY2FyZENvbEluZm86IHRoaXMuZGF0YS5jb2x1bW5JbmZvLFxuICAgICAgICAgICAgY29sdW1uSW5mbzogY29sSW5mbyAmJiBjb2xJbmZvLmxlbmd0aCA/IGNvbEluZm9bMF0gOiBbXSxcbiAgICAgICAgICAgIG5leHRDb2xJbmZvOiBuZXh0Q29sSW5mbyAmJiBuZXh0Q29sSW5mby5sZW5ndGggPyBuZXh0Q29sSW5mb1swXSA6IFtdLFxuICAgICAgICAgICAgZnJhbWV3b3JrSWQ6IHRoaXMuZnJhbWV3b3JrU2VydmljZS5nZXRGcmFtZXdvcmtJZCgpLFxuICAgICAgICAgICAgc2VsZWN0ZWRwYXJlbnRzOiB0aGlzLmhlaWdodExpZ2h0ZWQsXG4gICAgICAgICAgICBjb2xJbmRleDogbmV4dENhdC5pbmRleCxcbiAgICAgICAgICAgIGNoaWxkcmVuRGF0YTogZGF0YS5jaGlsZHJlbixcbiAgICAgICAgICAgIHNlbGVjdGVkUGFyZW50VGVybXM6IHNlbGVjdGVkVGVybXNcbiAgICAgICAgICB9LFxuICAgICAgICAgIHdpZHRoOiAnODAwcHgnLFxuICAgICAgICAgIHBhbmVsQ2xhc3M6ICdjdXN0b20tZGlhbG9nLWNvbnRhaW5lcidcbiAgICAgICAgfSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRpYWxvZyA9IHRoaXMuZGlhbG9nLm9wZW4oQ3JlYXRlVGVybUNvbXBvbmVudCwge1xuICAgICAgICAgIGRhdGE6IHsgXG4gICAgICAgICAgICBtb2RlOidtdWx0aS1jcmVhdGUnLFxuICAgICAgICAgICAgY29sdW1uSW5mbzogY29sSW5mbyAmJiBjb2xJbmZvLmxlbmd0aCA/IGNvbEluZm9bMF0gOiBbXSxcbiAgICAgICAgICAgIGZyYW1ld29ya0lkOiB0aGlzLmZyYW1ld29ya1NlcnZpY2UuZ2V0RnJhbWV3b3JrSWQoKSxcbiAgICAgICAgICAgIHNlbGVjdGVkcGFyZW50czogdGhpcy5oZWlnaHRMaWdodGVkLFxuICAgICAgICAgICAgY29sSW5kZXg6IG5leHRDYXQuaW5kZXgsXG4gICAgICAgICAgICBjaGlsZHJlbkRhdGE6IGRhdGEuY2hpbGRyZW4sXG4gICAgICAgICAgICBzZWxlY3RlZFBhcmVudFRlcm1zOiBzZWxlY3RlZFRlcm1zXG4gICAgICAgICAgfSxcbiAgICAgICAgICB3aWR0aDogJzgwMHB4JyxcbiAgICAgICAgICBwYW5lbENsYXNzOiAnY3VzdG9tLWRpYWxvZy1jb250YWluZXInXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgICBkaWFsb2cuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XG4gICAgICAgIGlmKCFyZXMpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIGNvbnN0IHJlc3BvbnNlRGF0YSA9IHtcbiAgICAgICAgICByZXMsXG4gICAgICAgICAgaW5kZXg6IG5leHRDYXQuaW5kZXgsXG4gICAgICAgICAgZGF0YSxcbiAgICAgICAgICB0eXBlOiAnbXVsdGktY3JlYXRlJ1xuICAgICAgICB9XG4gICAgICAgIGlmKCEocmVzICYmIHJlcy5zdG9wVXBkYXRlKSl7XG4gICAgICAgICAgdGhpcy5mcmFtZXdvcmtTZXJ2aWNlLnVwZGF0ZUFmdGVyQWRkT3JFZGl0U3ViamVjdChyZXNwb25zZURhdGEpXG4gICAgICAgIH1cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgd2luZG93LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdyZXNpemUnKSlcbiAgICAgICAgfSwgMTAwKVxuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICBnZXROZXh0Q2F0TmFtZShkYXRhOiBhbnkpIHtcbiAgICBpZihkYXRhICYmIGRhdGEuY29sdW1uSW5mbyAmJiBkYXRhLmNvbHVtbkluZm8uY29kZSl7XG4gICAgICBjb25zdCBuZXh0Q2F0ID0gdGhpcy5mcmFtZXdvcmtTZXJ2aWNlLmdldE5leHRDYXRlZ29yeShkYXRhLmNvbHVtbkluZm8uY29kZSlcbiAgICAgIGlmKG5leHRDYXQgJiYgbmV4dENhdC5jb2RlKXtcbiAgICAgICAgXG4gICAgICAgIHJldHVybiBuZXh0Q2F0LmNvZGVcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIGdldE5leHRDYXQoZGF0YTogYW55KSB7XG4gICAgaWYoZGF0YSAmJiBkYXRhLmNvbHVtbkluZm8gJiYgZGF0YS5jb2x1bW5JbmZvLmNvZGUpe1xuICAgICAgY29uc3QgbmV4dENhdCA9IHRoaXMuZnJhbWV3b3JrU2VydmljZS5nZXROZXh0Q2F0ZWdvcnkoZGF0YS5jb2x1bW5JbmZvLmNvZGUpXG4gICAgICByZXR1cm4gbmV4dENhdFxuICAgIH1cbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYodGhpcy5zdWJzY3JpcHRpb24pe1xuICAgICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKVxuICAgIH1cbiAgfVxuICBkZWxldGUoZGF0YTogYW55KSB7XG4gICAgY29uc3QgZGlhbG9nRGF0YSA9IHtcbiAgICAgIGRpYWxvZ1R5cGU6ICd3YXJuaW5nJyxcbiAgICAgIGRpYWxvZ0FjdGlvbjogJ3JldGlyZScsXG4gICAgICBkZXNjcmlwdGlvbnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGhlYWRlcjogYENvbXBldGVuY3kgJHtkYXRhLmNhdGVnb3J5ID09PVwic3VidGhlbWVcIj8gJ3N1Yi10aGVtZSc6ICd0aGVtZSd9IHdpbGwgYmUgZGVsZXRlZGAsXG4gICAgICAgICAgaGVhZGVyQ2xhc3M6ICdmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciB0ZXh0LWJsdWUgdGV4dEJvbGQnLFxuICAgICAgICAgIG1lc3NhZ2VzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG1zZ0NsYXNzOiAnbWItMiBtdC0yJyxcbiAgICAgICAgICAgICAgbXNnOiBgRG8geW91IHdhbnQgdG8gcHJvY2VlZD9gLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIGZvb3RlckNsYXNzOiAnaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyJyxcbiAgICAgIGJ1dHRvbnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGJ0blRleHQ6ICdObycsXG4gICAgICAgICAgYnRuQ2xhc3M6ICdidG4tb3V0bGluZScsXG4gICAgICAgICAgcmVzcG9uc2U6IGZhbHNlLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgYnRuVGV4dDogJ1llcycsXG4gICAgICAgICAgYnRuQ2xhc3M6ICdidG4tZnVsbC1zdWNjZXNzJyxcbiAgICAgICAgICByZXNwb25zZTogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICBjYXJkSW5mbzogZGF0YVxuICAgIH1cbiAgICBsZXQgZGlhbG9nID0gdGhpcy5kaWFsb2cub3BlbihDb25mb3JhbXRpb25Qb3B1cENvbXBvbmVudCwge1xuICAgICAgICBkYXRhOiBkaWFsb2dEYXRhLFxuICAgICAgICBhdXRvRm9jdXM6IGZhbHNlLFxuICAgICAgICB3aWR0aDogJzUwMHB4JyxcbiAgICAgICAgbWF4V2lkdGg6ICc4MHZ3JyxcbiAgICAgICAgbWF4SGVpZ2h0OiAnOTB2aCcsXG4gICAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZVxuICAgICAgfSlcbiAgICAgIGRpYWxvZy5hZnRlckNsb3NlZCgpLnN1YnNjcmliZShfcmVzID0+IHtcbiAgICAgICAgXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgd2luZG93LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdyZXNpemUnKSlcbiAgICAgIH0sIDEwMClcbiAgICB9KVxuICAgIFxuICB9XG5cbiAgbWVudUFjdGlvbih0eXBlOnN0cmluZywgX2l0ZW06IGFueSkge1xuICAgIHRoaXMuY2FyZEFjdGlvbi5lbWl0KHsgYWN0aW9uOiB0eXBlLCBkYXRhOiBfaXRlbSB9KTtcbiAgfSBcblxuICBnZXR1c2VyQ291bnQoaXRlbTogYW55KSB7XG4gICAgaWYoaXRlbS5jaGlsZHJlbi5jb2RlKSB7XG4gICAgICBjb25zdCB0ZW1wRGF0YSA9IGl0ZW0uY29sdW1uSW5mby5jaGlsZHJlbi5maW5kKChpOiBhbnkpID0+IGkuY29kZSA9PT0gaXRlbS5jaGlsZHJlbi5jb2RlKVxuICAgICAgcmV0dXJuIHRlbXBEYXRhPy51c2VyQ291bnQgfHwgMFxuICAgIH1cbiAgICByZXR1cm4gMFxuICB9XG5cbiAgb3BlbkRpYWxvZygpIHtcbiAgICB0aGlzLmRpYWxvZy5vcGVuKHRoaXMuZGlhbG9nVGVtcGxhdGUsIHtcbiAgICAgIHdpZHRoOiAnNTAwcHgnLFxuICAgICAgLy8gT3B0aW9uYWwgY29uZmlndXJhdGlvblxuICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlLFxuICAgICAgZGF0YTogeyAvKiBBbnkgZGF0YSB5b3Ugd2FudCB0byBwYXNzIHRvIHRoZSBkaWFsb2cgKi8gfVxuICAgIH0pO1xuICB9XG4gIFxuICBjbG9zZU1vZGFsKCkge1xuICAgIHRoaXMuZGlhbG9nLmNsb3NlQWxsKCk7XG4gIH1cbn1cbiAgXG5cbiIsIjxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cIiggKGRhdGEgJiYgZGF0YT8uY2FyZFN1YlR5cGUpIHx8ICdjYXJkTWluaW1hbCcpXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ3N0YW5kYXJkJ1wiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNhcmRTdGFuZGFyZFwiPjwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidzcGFjZS1zYXZpbmcnXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiY2FyZFNwYWNlU2F2aW5nXCI+PC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hEZWZhdWx0IFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNhcmRNaW5pbWFsXCI+PC9uZy1jb250YWluZXI+XG48L25nLWNvbnRhaW5lcj5cblxuPG5nLXRlbXBsYXRlICNjYXJkTWluaW1hbD5cbiAgICA8ZGl2ICNjYXJkUmVmIGNsYXNzPVwidGVybS1jYXJkIGNsaWNrYWJsZSB7e2RhdGEuaW5kZXh9fVwiIChjbGljayk9XCJjYXJkQ2xpY2tlZChkYXRhLCBjYXJkUmVmKVwiXG4gICAgICAgIFtuZ0NsYXNzXT1cIltkYXRhLmNoaWxkcmVuLnNlbGVjdGVkPydzZWxlY3RlZCc6JycsIGRhdGEuY2hpbGRyZW4uYXBwcm92YWxTdGF0dXMgPT09ICdEcmFmdCc/ICdpbkRyYWZ0JzonJyxcbiAgICBkYXRhLmNoaWxkcmVuLmFzc29jaWF0aW9uUHJvcGVydGllcz8uYXBwcm92YWxTdGF0dXMgPT09ICdEcmFmdCcgJiYgaXNBcHByb3ZhbFJlcXVpcmVkICYmICFhcHByb3ZhbExpc3QubGVuZ3RoIHx8IGRhdGEuY2hpbGRyZW4uaGlnaGxpZ2h0ICYmIGlzQXBwcm92YWxSZXF1aXJlZCA/ICdpbkFzc29jaWF0aW9uRHJhZnQnOicnXVwiXG4gICAgICAgIGlkPVwie3tkYXRhLmNoaWxkcmVuLm5hbWV9fVwiXG4gICAgICAgIFtuZ1N0eWxlXT1cInsnYmFja2dyb3VuZC1jb2xvcic6Z2V0Q29sb3IoZGF0YS5pbmRleCxjYXJkUmVmLCdiZ0NvbG9yJyxkYXRhKX1cIj5cbiAgICAgICAgPCEtLSAoY2xpY2spPVwiZGF0YS5zZWxlY3RlZD0hZGF0YS5zZWxlY3RlZFwiIC0tPiAgIFxuICAgICAgICA8ZGl2IGNsYXNzPVwidGVybS1jYXJkLXBhcmVudFwiPlxuICAgICAgICAgICAgPCEtLSA8QmVsb3cgZWxlbWVudCBpcyB0byBzaG93IGlkIG9uIHRvcCBsZWZ0IG9mIHRoZSBjYXJkPiAtLT5cbiAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImlkXCIgW2hpZGRlbl09XCJ0cnVlXCI+e3tkYXRhLmNoaWxkcmVuLmNvZGV9fTwvZGl2PiAtLT5cbiAgICAgICAgICAgICBcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXJtLWNhcmQtY29udGVudCB3LWZ1bGxcIj5cbiAgICAgICAgICAgICAgICA8IS0tIDxuZy1jb250YWluZXIgICpuZ0lmPVwiZGF0YT8uY2hpbGRyZW4/LnJlZklkXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyaWJib25cIj57e2RhdGE/LmNoaWxkcmVuPy5yZWZJZH19PC9kaXY+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+IC0tPlxuXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRhdGE/LmNoaWxkcmVuPy5hZGRpdGlvbmFsUHJvcGVydGllcz8uY29tcGV0ZW5jeUFyZWE/Lm5hbWVcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiAgY2xhc3M9XCJtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNvbXAtYXJlYSB7e2RhdGE/LmNoaWxkcmVuPy5hZGRpdGlvbmFsUHJvcGVydGllcz8uY29tcGV0ZW5jeUFyZWE/Lm5hbWU/LnRvTG93ZXJDYXNlKCl9fVwiPnt7ZGF0YT8uY2hpbGRyZW4/LmFkZGl0aW9uYWxQcm9wZXJ0aWVzPy5jb21wZXRlbmN5QXJlYT8ubmFtZX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtYmV0d2VlbiBmbGV4LW1pZGRsZVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10aXRsZVwiPnt7ZGF0YS5jaGlsZHJlbi5uYW1lfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkYXRhPy5jaGlsZHJlbj8ucmVmSWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVmSWRDYXJkIG10LTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3tkYXRhPy5jaGlsZHJlbj8ucmVmSWR9fSA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj4gXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGF0YT8uY29sdW1uSW5mbz8uY29uZmlnPy5lbmFibGVJbmZvSWNvblwiID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiBpMThuLWFyaWEtbGFiZWwgYXJpYS1sYWJlbD1cImluZm8gaXRlbXNcIiBjbGFzcz1cImFjdGlvbi1idG4gc21hbGwtYnRuXCIgKGNsaWNrKT1cIm9wZW5EaWFsb2coKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cInNtYWxsLWljb25cIj5pbmZvPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8IS0tIDxuZy1jb250YWluZXIgKm5nSWY9XCJkYXRhPy5jaGlsZHJlbj8ucmVmSWRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlZklkQ2FyZCBweC00XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57e2RhdGE/LmNoaWxkcmVuPy5yZWZJZH19IDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+IC0tPlxuICAgICAgICAgICAgICAgIDwhLS0gPHNwYW4+Kyt7e2RhdGEuY2hpbGRyZW4uc2VsZWN0ZWR9fSsrKzwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3Bhbj49PXt7ZGF0YS5jaGlsZHJlbi5zdGF0dXN9fT09PC9zcGFuPiAgLS0+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZ2FwLTMgZmxleC1taWRkbGUgbXQtNFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1kZXNjcmlwdGlvbiBmbGV4IGZsZXgtbWlkZGxlIGdhcC0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gc3ZnSWNvbj1cImZyYWNcIj48L21hdC1pY29uPiBcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3soZGF0YS5jaGlsZHJlbi5jaGlsZHJlbikgPyBkYXRhLmNoaWxkcmVuLmNoaWxkcmVuPy5sZW5ndGggOiAwfX0gQ2hpbGQgT3JnPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtZGVzY3JpcHRpb24gZmxleCBmbGV4LW1pZGRsZSBnYXAtMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIHN2Z0ljb249XCJmcmFjXCI+PC9tYXQtaWNvbj4gXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57e2dldHVzZXJDb3VudChkYXRhKX19IFVzZXJzPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRhdGE/LmNvbHVtbkluZm8/LmNvbmZpZz8uZW5hYmxlVGhyZWVEb3QgJiYgZW5hYmxlVGhyZWVEb3RzXCIgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uIGkxOG4tYXJpYS1sYWJlbCBhcmlhLWxhYmVsPVwiYWN0aW9uIGl0ZW1zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFttYXRNZW51VHJpZ2dlckZvcl09XCJvcmdNZW51XCIgW21hdE1lbnVUcmlnZ2VyRGF0YV09XCJ7J2RhdGEnOmRhdGEsICdjYXJkUmVmJzogY2FyZFJlZn1cIiBjbGFzcz1cImFjdGlvbi1idG4gc21hbGwtYnRuIG1sLWF1dG9cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cInNtYWxsLWljb25cIj5tb3JlX3ZlcnQ8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8IS0tIDxwPnt7ZGF0YS5jaGlsZHJlbi5hcHByb3ZhbFN0YXR1c319LCB7e2RhdGEuY2hpbGRyZW4uYXNzb2NpYXRpb25Qcm9wZXJ0aWVzPy5hcHByb3ZhbFN0YXR1c319PC9wPiAtLT5cbiAgICAgICAgPCEtLSAqbmdJZj1cIiFkYXRhLmlzVmlld09ubHkgJiYgZGF0YS5jaGlsZHJlbi5hcHByb3ZhbFN0YXR1cyA9PT0gJ0RyYWZ0JyAmJiBpc0FwcHJvdmFsUmVxdWlyZWRcIiAtLT5cbiAgICAgICAgPCEtLSAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1wiIC0tPlxuICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJ0ZXJtLWNhcmQtY2hlY2tib3hcIj5cbiAgICAgICAgICAgIDxtYXQtY2hlY2tib3ggY29sb3I9XCJwcmltYXJ5XCIgKm5nSWY9XCJkYXRhLmNoaWxkcmVuLmFwcHJvdmFsU3RhdHVzID09PSAnRHJhZnQnICYmIGlzQXBwcm92YWxSZXF1aXJlZCAmJiAhYXBwcm92YWxMaXN0Lmxlbmd0aCB8fCBcbiAgICAgICAgICAgIGRhdGEuY2hpbGRyZW4uYXNzb2NpYXRpb25Qcm9wZXJ0aWVzPy5hcHByb3ZhbFN0YXR1cyA9PT0gJ0RyYWZ0JyAmJiBpc0FwcHJvdmFsUmVxdWlyZWQgJiYgIWFwcHJvdmFsTGlzdC5sZW5ndGggfHxcbiAgICAgICAgICAgIGRhdGEuY2hpbGRyZW4uaGlnaGxpZ2h0ICYmIGlzQXBwcm92YWxSZXF1aXJlZFwiIFtjaGVja2VkXT1cImRhdGEuY2hpbGRyZW4uaGlnaGxpZ2h0XCIgY2xhc3M9XCJ0ZXJtU2VsZWN0aW9uXCJcbiAgICAgICAgICAgICAgICAoY2hhbmdlKT1cImhhbmRsZVByb2R1Y3RDbGljayhkYXRhLmNoaWxkcmVuLCAkZXZlbnQpXCIgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiPjwvbWF0LWNoZWNrYm94PlxuICAgICAgICAgICAgPG1hdC1pY29uIGNvbG9yPVwicHJpbWFyeVwiIGNsYXNzPVwiYXBwcm92ZS1mbGFnXCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImRhdGEuY2hpbGRyZW4uaGlnaGxpZ2h0ICYmIGlzQXBwcm92YWxSZXF1aXJlZFwiPnt7YXBwX3N0cmluZ3MuZmxhZ319PC9tYXQtaWNvbj5cbiAgICAgICAgPC9kaXY+IC0tPlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNjYXJkU3RhbmRhcmQ+XG4gICAgPGRpdj5cbiAgICAgICAge3tkYXRhLmNoaWxkcmVuLm5hbWV9fSBcbiAgICA8L2Rpdj5cbiAgICA8ZGl2PlxuICAgICAgICB7e2RhdGEuY2hpbGRyZW4uZGVzY3JpcHRpb259fSBzXG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2NhcmRTcGFjZVNhdmluZz5cbiAgICA8ZGl2PlxuICAgICAgICB7e2RhdGEuY2hpbGRyZW4ubmFtZX19XG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bWF0LW1lbnUgI2NhcmRNZW51PVwibWF0TWVudVwiIGNsYXNzPVwibWVudS1zZWNcIj5cbiAgICA8bmctdGVtcGxhdGUgbWF0TWVudUNvbnRlbnQgbGV0LXJvd0RhdGE9XCJkYXRhXCIgbGV0LWNhcmRSZWY9XCJjYXJkUmVmXCI+XG4gICAgICAgIDwhLS0gPGRpdiA+IC0tPlxuICAgICAgICA8YnV0dG9uICpuZ0lmPVwiZGF0YS5jb2x1bW5JbmZvLmNvbmZpZy5lbmFibGVWaWV3XCIgIChjbGljayk9XCJ2aWV3KGRhdGEsIGRhdGEuY2hpbGRyZW4sIGRhdGEuaW5kZXgpXCIgbWF0LW1lbnUtaXRlbSBuYW1lPVwiY2hhbm5lbC1hbmFseXRpY3MtYnV0dG9uXCJcbiAgICAgICAgICAgIGNsYXNzPVwid3MtbWF0LXByaW1hcnktdGV4dFwiIGkxOG4tYXJpYS1sYWJlbCBhcmlhLWxhYmVsPVwiQW5hbHl0aWNzXCI+XG4gICAgICAgICAgICA8bWF0LWljb24+dmlzaWJpbGl0eTwvbWF0LWljb24+IDxzcGFuPlZpZXc8L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uICpuZ0lmPVwiZGF0YS5jb2x1bW5JbmZvLmNvbmZpZy5lbmFiYWxlRWRpdFwiIChjbGljayk9XCJlZGl0KGRhdGEsICBkYXRhLmNoaWxkcmVuLGRhdGEuaW5kZXgsIGNhcmRSZWYpXCJcbiAgICAgICAgICAgIG1hdC1tZW51LWl0ZW0gbmFtZT1cImNoYW5uZWwtYW5hbHl0aWNzLWJ1dHRvblwiIGNsYXNzPVwid3MtbWF0LXByaW1hcnktdGV4dFwiIGkxOG4tYXJpYS1sYWJlbFxuICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkFuYWx5dGljc1wiPlxuICAgICAgICAgICAgPG1hdC1pY29uPmVkaXQ8L21hdC1pY29uPlxuICAgICAgICAgICAgPHNwYW4+RWRpdDwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxidXR0b24gKm5nSWY9XCJkYXRhLmNvbHVtbkluZm8uY29uZmlnLmVuYWJsZUFkZFwiIChjbGljayk9XCJjcmVhdGUoZGF0YSlcIlxuICAgICAgICAgICAgbWF0LW1lbnUtaXRlbSBuYW1lPVwiY2hhbm5lbC1hbmFseXRpY3MtYnV0dG9uXCIgY2xhc3M9XCJ3cy1tYXQtcHJpbWFyeS10ZXh0XCIgaTE4bi1hcmlhLWxhYmVsXG4gICAgICAgICAgICBhcmlhLWxhYmVsPVwiQW5hbHl0aWNzXCI+XG4gICAgICAgICAgICA8bWF0LWljb24+YWRkPC9tYXQtaWNvbj5cbiAgICAgICAgICAgIDxzcGFuPkFkZDwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxidXR0b24gKm5nSWY9XCJkYXRhLmNvbHVtbkluZm8uY29uZmlnLmVuYWJsZURlbGV0ZVwiIChjbGljayk9XCJkZWxldGUoZGF0YSlcIlxuICAgICAgICAgICAgbWF0LW1lbnUtaXRlbSBuYW1lPVwiY2hhbm5lbC1hbmFseXRpY3MtYnV0dG9uXCIgY2xhc3M9XCJ3cy1tYXQtcHJpbWFyeS10ZXh0XCIgaTE4bi1hcmlhLWxhYmVsXG4gICAgICAgICAgICBhcmlhLWxhYmVsPVwiQW5hbHl0aWNzXCI+XG4gICAgICAgICAgICA8bWF0LWljb24+ZGVsZXRlPC9tYXQtaWNvbj5cbiAgICAgICAgICAgIDxzcGFuPkRlbGV0ZTwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbjwvbWF0LW1lbnU+XG5cbjxtYXQtbWVudSAjb3JnTWVudT1cIm1hdE1lbnVcIiBjbGFzcz1cIm1lbnUtc2VjXCI+XG4gICAgPG5nLXRlbXBsYXRlIG1hdE1lbnVDb250ZW50IGxldC1yb3dEYXRhPVwiZGF0YVwiIGxldC1jYXJkUmVmPVwiY2FyZFJlZlwiPlxuICAgICAgICA8YnV0dG9uICpuZ0lmPVwiZGF0YS5jb2x1bW5JbmZvLmNvbmZpZy5lbmFibGVVcGRhdGVIaWVyYXJjaHkgJiYgZGF0YS5pbmRleCA+IDFcIiAgKGNsaWNrKT1cIm1lbnVBY3Rpb24oJ3VwZGF0ZS1oaWVyYXJjaHknLCBkYXRhKVwiIG1hdC1tZW51LWl0ZW0gbmFtZT1cImNoYW5uZWwtYW5hbHl0aWNzLWJ1dHRvblwiXG4gICAgICAgICAgICBjbGFzcz1cImFjdGlvbi1idG5cIiBpMThuLWFyaWEtbGFiZWwgYXJpYS1sYWJlbD1cIkFuYWx5dGljc1wiPlxuICAgICAgICAgICAgPG1hdC1pY29uPmVkaXQ8L21hdC1pY29uPiA8c3Bhbj5VcGRhdGUgSGllcmFyY2h5PC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImRhdGEuY29sdW1uSW5mby5jb25maWcuZW5hYmFsZVJlbW92ZUNvbm5lY3Rpb24gJiYgIWNoZWNrSWZDaGlsZE9yZ1wiIChjbGljayk9XCJtZW51QWN0aW9uKCdyZW1vdmUtdGVybScsIGRhdGEpXCJcbiAgICAgICAgICAgIG1hdC1tZW51LWl0ZW0gbmFtZT1cImNoYW5uZWwtYW5hbHl0aWNzLWJ1dHRvblwiIGNsYXNzPVwiYWN0aW9uLWJ0blwiIGkxOG4tYXJpYS1sYWJlbFxuICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkFuYWx5dGljc1wiPlxuICAgICAgICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cbiAgICAgICAgICAgIDxzcGFuPlJlbW92ZSBDb25uZWN0aW9uPC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImRhdGEuY29sdW1uSW5mby5jb25maWcuZW5hYmxlTWFuYWdlT3JnYW5pemF0aW9uXCIgKGNsaWNrKT1cIm1lbnVBY3Rpb24oJ21hbmFnZS1vcmcnLCBkYXRhKVwiXG4gICAgICAgICAgICBtYXQtbWVudS1pdGVtIG5hbWU9XCJjaGFubmVsLWFuYWx5dGljcy1idXR0b25cIiBjbGFzcz1cImFjdGlvbi1idG5cIiBpMThuLWFyaWEtbGFiZWxcbiAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJBbmFseXRpY3NcIj5cbiAgICAgICAgICAgIDxtYXQtaWNvbj5zZXR0aW5nczwvbWF0LWljb24+XG4gICAgICAgICAgICA8c3Bhbj5NYW5hZ2UgT3JnYW5pc2F0aW9uPC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICA8L25nLXRlbXBsYXRlPlxuPC9tYXQtbWVudT5cblxuPCEtLSBBZGQgdGhpcyB0ZW1wbGF0ZSB0byB5b3VyIGNvbXBvbmVudCAtLT5cbjxuZy10ZW1wbGF0ZSAjZGlhbG9nVGVtcGxhdGU+XG4gIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGZsZXgtbWlkZGxlXCI+XG4gICAgPG1hdC1pY29uIGNsYXNzPVwibGFyZ2UtaWNvbiBjb2xvci1zZWNvbmRhcnlcIj5lcnJvcl9vdXRsaW5lPC9tYXQtaWNvbj5cbiAgICA8cCBjbGFzcz1cImNvbG9yLXByaW1hcnkgbW9kYWwtdGV4dCBtYXJnaW4tdG9wLXNcIj5TZWxlY3QgYSBvcmdhbmlzYXRpb24gdG8ge3tlbmFibGVUaHJlZURvdHMgPyAnYWRkIG9yICcgOiAnJ319c2VlIGZ1cnRoZXIgY29ubmVjdGlvbnMuPC9wPlxuICAgIDxidXR0b24gbWF0LWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImNsb3NlTW9kYWwoKVwiIGNsYXNzPVwiYnRuLWNvbW1vbiBidG4tcHJpbWFyeSBtb2RhbC1idG5cIj5DbG9zZTwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbiJdfQ==
|
|
@@ -10,7 +10,7 @@ import * as i4 from "@angular/common";
|
|
|
10
10
|
import * as i5 from "@angular/material/icon";
|
|
11
11
|
import * as i6 from "@angular/forms";
|
|
12
12
|
import * as i7 from "../term-card/term-card.component";
|
|
13
|
-
|
|
13
|
+
class TreeColumnViewComponent {
|
|
14
14
|
constructor(frameworkService, connectorService, approvalService) {
|
|
15
15
|
this.frameworkService = frameworkService;
|
|
16
16
|
this.connectorService = connectorService;
|
|
@@ -333,6 +333,7 @@ export class TreeColumnViewComponent {
|
|
|
333
333
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TreeColumnViewComponent, deps: [{ token: i1.FrameworkService }, { token: i2.ConnectorService }, { token: i3.ApprovalService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
334
334
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TreeColumnViewComponent, selector: "lib-tree-column-view", inputs: { column: "column", containerId: "containerId", isChildOrg: "isChildOrg", childOrg: "childOrg" }, outputs: { updateTaxonomyTerm: "updateTaxonomyTerm", updateTermList: "updateTermList", cardsCount: "cardsCount", cardAction: "cardAction" }, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"column?.config?.showSearch\">\n <div class=\"w-full sticky\">\n <div class=\"search mb-5\">\n <div class=\"rsearch\">\n <div class=\"sinput mat-field-rounded flex flex-middle\">\n <mat-icon class=\"search-icon\">search</mat-icon>\n <input type=\"search\" [formControl]=\"searchValue\" placeholder=\"Search\" #search>\n <button *ngIf=\"search.value\" class=\"clear-btn flex\" (click)=\"clearSearch()\">\n <mat-icon>clear</mat-icon>\n </button>\n </div>\n </div>\n </div>\n </div>\n</ng-container>\n<ng-container *ngIf=\"columnItems && columnItems.length > 0; else noDataTemplate;\">\n <ng-container *ngFor=\"let child of columnItems; let j = index\">\n <div #cardEle id=\"{{column.code}}Card{{j+1}}\" >\n <lib-term-card\n [data]=\"{'children': child, 'selected' : false, 'category':column.code, cardSubType: 'minimal', isViewOnly:false,'index':column.index, columnInfo: column}\"\n [enableThreeDots]=\"(isChildOrg && childOrg.channel === child.name) ? true : (isChildOrg) ? false : true\"\n [checkIfChildOrg]=\"isChildOrg\"\n (isSelected)=\"updateSelection1($event)\" (selectedCard)=\"selectedCard($event)\" (cardAction)=\"cardActionEmit($event)\">\n </lib-term-card>\n </div>\n </ng-container>\n</ng-container>\n<ng-template #noDataTemplate >\n <ng-container *ngIf=\"searchValue?.value\">\n <div>No Data found</div>\n </ng-container>\n</ng-template>\n\n<div class=\"w-full flex justify-center\" *ngIf=\"!disableLoadButton\">\n <button (click)=\"loadMore()\" class=\"mat-raised-button mat-button-base loadMore\" [ngClass]=\"{'disablBtn': disableLoadButton}\"\n [disabled]=\"disableLoadButton\">Load more...</button>\n</div>\n", styles: [".flex{display:flex}.w-full{width:100%}.mb1{margin-bottom:1em}flex-center{flex-wrap:nowrap;align-items:start;justify-content:center}.flex-1{flex:1}.felx-col{flex-direction:column}.padding-x2{padding:0 2.5em}.heightFix{height:100vh;overflow:hidden}.cat-columns:hover{overflow-y:scroll}.container{overflow-y:scroll;scrollbar-width:none;-ms-overflow-style:none}.container::-webkit-scrollbar{width:0;height:0}#this{display:none}#this:target{display:block}.search{width:100%;box-sizing:border-box}.search .search-icon{font-size:20px;width:20px;height:20px}.search .rsearch{display:flex;position:relative;flex:1 1 auto;border:1px solid #e0e0e0;border-radius:20px}.search .sinput{width:100%;padding:4px 8px;box-sizing:border-box}.search .sinput input{border:0!important;outline:none!important;margin-top:2px}input[type=search]::-webkit-search-decoration:hover,input[type=search]::-webkit-search-cancel-button:hover{cursor:pointer}input[type=search]::-webkit-search-cancel-button{appearance:none}.clear-btn{position:absolute;right:8px;top:50%;transform:translateY(-50%);background:none;border:none;color:#888;font-size:16px;cursor:pointer;display:none}.sinput:valid~.clear-btn{display:block}.clear-btn:hover{color:#333}.sticky{position:sticky;top:0;z-index:46}.loadMore{background:#1b4ca1!important;color:#fff!important;font-family:Lato;font-size:14px;font-weight:700}.disablBtn{opacity:.6;pointer-events:none}.w-full.sticky{position:sticky;top:0;z-index:100;background-color:#fff}.category-heading-sticky{position:sticky;top:0;z-index:10;background-color:#fff}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i6.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i7.TermCardComponent, selector: "lib-term-card", inputs: ["enableThreeDots", "checkIfChildOrg", "data"], outputs: ["isSelected", "selectedCard", "cardAction"] }] }); }
|
|
335
335
|
}
|
|
336
|
+
export { TreeColumnViewComponent };
|
|
336
337
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TreeColumnViewComponent, decorators: [{
|
|
337
338
|
type: Component,
|
|
338
339
|
args: [{ selector: 'lib-tree-column-view', template: "<ng-container *ngIf=\"column?.config?.showSearch\">\n <div class=\"w-full sticky\">\n <div class=\"search mb-5\">\n <div class=\"rsearch\">\n <div class=\"sinput mat-field-rounded flex flex-middle\">\n <mat-icon class=\"search-icon\">search</mat-icon>\n <input type=\"search\" [formControl]=\"searchValue\" placeholder=\"Search\" #search>\n <button *ngIf=\"search.value\" class=\"clear-btn flex\" (click)=\"clearSearch()\">\n <mat-icon>clear</mat-icon>\n </button>\n </div>\n </div>\n </div>\n </div>\n</ng-container>\n<ng-container *ngIf=\"columnItems && columnItems.length > 0; else noDataTemplate;\">\n <ng-container *ngFor=\"let child of columnItems; let j = index\">\n <div #cardEle id=\"{{column.code}}Card{{j+1}}\" >\n <lib-term-card\n [data]=\"{'children': child, 'selected' : false, 'category':column.code, cardSubType: 'minimal', isViewOnly:false,'index':column.index, columnInfo: column}\"\n [enableThreeDots]=\"(isChildOrg && childOrg.channel === child.name) ? true : (isChildOrg) ? false : true\"\n [checkIfChildOrg]=\"isChildOrg\"\n (isSelected)=\"updateSelection1($event)\" (selectedCard)=\"selectedCard($event)\" (cardAction)=\"cardActionEmit($event)\">\n </lib-term-card>\n </div>\n </ng-container>\n</ng-container>\n<ng-template #noDataTemplate >\n <ng-container *ngIf=\"searchValue?.value\">\n <div>No Data found</div>\n </ng-container>\n</ng-template>\n\n<div class=\"w-full flex justify-center\" *ngIf=\"!disableLoadButton\">\n <button (click)=\"loadMore()\" class=\"mat-raised-button mat-button-base loadMore\" [ngClass]=\"{'disablBtn': disableLoadButton}\"\n [disabled]=\"disableLoadButton\">Load more...</button>\n</div>\n", styles: [".flex{display:flex}.w-full{width:100%}.mb1{margin-bottom:1em}flex-center{flex-wrap:nowrap;align-items:start;justify-content:center}.flex-1{flex:1}.felx-col{flex-direction:column}.padding-x2{padding:0 2.5em}.heightFix{height:100vh;overflow:hidden}.cat-columns:hover{overflow-y:scroll}.container{overflow-y:scroll;scrollbar-width:none;-ms-overflow-style:none}.container::-webkit-scrollbar{width:0;height:0}#this{display:none}#this:target{display:block}.search{width:100%;box-sizing:border-box}.search .search-icon{font-size:20px;width:20px;height:20px}.search .rsearch{display:flex;position:relative;flex:1 1 auto;border:1px solid #e0e0e0;border-radius:20px}.search .sinput{width:100%;padding:4px 8px;box-sizing:border-box}.search .sinput input{border:0!important;outline:none!important;margin-top:2px}input[type=search]::-webkit-search-decoration:hover,input[type=search]::-webkit-search-cancel-button:hover{cursor:pointer}input[type=search]::-webkit-search-cancel-button{appearance:none}.clear-btn{position:absolute;right:8px;top:50%;transform:translateY(-50%);background:none;border:none;color:#888;font-size:16px;cursor:pointer;display:none}.sinput:valid~.clear-btn{display:block}.clear-btn:hover{color:#333}.sticky{position:sticky;top:0;z-index:46}.loadMore{background:#1b4ca1!important;color:#fff!important;font-family:Lato;font-size:14px;font-weight:700}.disablBtn{opacity:.6;pointer-events:none}.w-full.sticky{position:sticky;top:0;z-index:100;background-color:#fff}.category-heading-sticky{position:sticky;top:0;z-index:10;background-color:#fff}\n"] }]
|
|
@@ -353,4 +354,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
353
354
|
}], cardAction: [{
|
|
354
355
|
type: Output
|
|
355
356
|
}] } });
|
|
356
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1jb2x1bW4tdmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJ5L3N1bmJpcmQtY2IvdHJlZS1oaWVyYXJjaHkvc3JjL2xpYi9jb21wb25lbnRzL3RyZWUtY29sdW1uLXZpZXcvdHJlZS1jb2x1bW4tdmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJ5L3N1bmJpcmQtY2IvdHJlZS1oaWVyYXJjaHkvc3JjL2xpYi9jb21wb25lbnRzL3RyZWUtY29sdW1uLXZpZXcvdHJlZS1jb2x1bW4tdmlldy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQWdDLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQU1yRyxPQUFPLEtBQUssQ0FBQyxNQUFNLFFBQVEsQ0FBQTtBQUMzQixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7QUFRcEUsTUFBTSxPQUFPLHVCQUF1QjtJQXFCbEMsWUFDVSxnQkFBa0MsRUFDbEMsZ0JBQWtDLEVBQ2xDLGVBQWlDO1FBRmpDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxvQkFBZSxHQUFmLGVBQWUsQ0FBa0I7UUFyQmxDLGVBQVUsR0FBRyxLQUFLLENBQUE7UUFFM0IscUJBQWdCLEdBQVEsRUFBRSxDQUFBO1FBQ2hCLHVCQUFrQixHQUFHLElBQUksWUFBWSxDQUFnQixJQUFJLENBQUMsQ0FBQztRQUMzRCxtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFlLENBQUM7UUFDakQsZUFBVSxHQUFHLElBQUksWUFB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QUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRTtnQkFDcEYsTUFBTSxTQUFTLEdBQUcsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQVEsQ0FBQTtnQkFDckQsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUE7Z0JBRXZELFNBQVMsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFBO2dCQUN6QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxHQUFHLFNBQVMsQ0FBQztnQkFDOUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFBO2dCQUM3RCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLFNBQVMsQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFBO2FBQ3BHO1NBQ0Y7SUFDSCxDQUFDOytHQTdaVSx1QkFBdUI7bUdBQXZCLHVCQUF1Qix3VUNoQnBDLGc1REFxQ0E7OzRGRHJCYSx1QkFBdUI7a0JBTG5DLFNBQVM7K0JBQ0Usc0JBQXNCO29LQUt2QixNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUksa0JBQWtCO3NCQUEzQixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZyYW1ld29ya1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9mcmFtZXdvcmsuc2VydmljZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IENvbm5lY3RvclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jb25uZWN0b3Iuc2VydmljZSc7XG5pbXBvcnQgeyBBcHByb3ZhbFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9hcHByb3ZhbC5zZXJ2aWNlJztcbmltcG9ydCB7IENhcmRDaGVja2VkLCBDYXJkU2VsZWN0aW9uLCBDYXJkc0NvdW50LCBDYXJkIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3ZhcmlhYmxlLXR5cGUubW9kZWwnO1xuaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gnXG5pbXBvcnQgeyBVbnR5cGVkRm9ybUNvbnRyb2wsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5kZWNsYXJlIHZhciBMZWFkZXJMaW5lOiBhbnk7XG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItdHJlZS1jb2x1bW4tdmlldycsXG4gIHRlbXBsYXRlVXJsOiAnLi90cmVlLWNvbHVtbi12aWV3LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdHJlZS1jb2x1bW4tdmlldy5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFRyZWVDb2x1bW5WaWV3Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIGNvbHVtbjogYW55O1xuICBASW5wdXQoKSBjb250YWluZXJJZDogc3RyaW5nIHwgdW5kZWZpbmVkXG4gIEBJbnB1dCgpIGlzQ2hpbGRPcmcgPSBmYWxzZVxuICBASW5wdXQoKSBjaGlsZE9yZzogYW55XG4gIGNvbm5lY3Rvck1hcHBpbmc6IGFueSA9IHt9XG4gIEBPdXRwdXQoKSB1cGRhdGVUYXhvbm9teVRlcm0gPSBuZXcgRXZlbnRFbWl0dGVyPENhcmRTZWxlY3Rpb24+KHRydWUpO1xuICBAT3V0cHV0KCkgdXBkYXRlVGVybUxpc3QgPSBuZXcgRXZlbnRFbWl0dGVyPENhcmRDaGVja2VkPigpO1xuICBAT3V0cHV0KCkgY2FyZHNDb3VudCA9IG5ldyBFdmVudEVtaXR0ZXI8Q2FyZHNDb3VudD4oKTtcbiAgQE91dHB1dCgpIGNhcmRBY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPENhcmRTZWxlY3Rpb24+KCk7XG4gIGNvbHVtbkRhdGE6IEFycmF5PENhcmQ+ID0gW107XG4gIGNoaWxkU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCB1bmRlZmluZWQ7XG4gIG5ld1Rlcm1TdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiB8IHVuZGVmaW5lZDtcbiAgYXBwcm92YWxUZXJtOiBhbnk7XG4gIHRlcm1zaGFmYWxsOiBBcnJheTxDYXJkPiA9IFtdO1xuICBzZWFyY2hWYWx1ZSA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSk7XG4gIHN0YXJ0SW5kZXggPSAwXG4gIGxpbWl0VG9BZGQgPSA1MFxuICBjdXJyZW50TGFzdEluZGV4ID0gNTBcbiAgY29sdW1uSXRlbXM6IGFueSA9IFtdXG4gIGZpbHRlcmVkQ29sdW1uSXRlbXM6IGFueSA9IFtdXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZnJhbWV3b3JrU2VydmljZTogRnJhbWV3b3JrU2VydmljZSxcbiAgICBwcml2YXRlIGNvbm5lY3RvclNlcnZpY2U6IENvbm5lY3RvclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhcHByb3ZhbFNlcnZpY2UgOiBBcHByb3ZhbFNlcnZpY2VcbiAgKSB7XG4gIH1cbiAgbmdPbkNoYW5nZXMoKTogdm9pZCB7fVxuXG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzY3JpYmVFdmVudHMoKVxuICAgIHRoaXMuc2V0Q29sdW1uSXRlbXMoKVxuICAgIHRoaXMuc2VhcmNoVmFsdWUudmFsdWVDaGFuZ2VzLnBpcGUoXG4gICAgICBkZWJvdW5jZVRpbWUoNzAwKSxcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgKS5zdWJzY3JpYmUoKGVsZTogYW55KSA9PiB7XG4gICAgICB0aGlzLnNlYXJjaEZpbHRlckRhdGEoZWxlKVxuICAgIH0pXG4gICAgaWYgKHRoaXMuY29sdW1uLmluZGV4ID09PSAxKSB7XG4gICAgICB0aGlzLmFwcHJvdmFsU2VydmljZS5nZXRVcGRhdGVMaXN0KCkuc3Vic2NyaWJlKChsaXN0OmFueSkgPT4ge1xuICAgICAgICB0aGlzLmFwcHJvdmFsVGVybSA9IGxpc3QuZmlsdGVyKChpdGVtOiBhbnkpID0+IHRoaXMuY29sdW1uLmNvZGUgPT09IGl0ZW0uY2F0ZWdvcnkpXG4gICAgICAgIGlmKHRoaXMuYXBwcm92YWxUZXJtKXtcbiAgICAgICAgICB0aGlzLmFwcHJvdmFsVGVybS5mb3JFYWNoKCh0ZXJtOiBhbnksIF9pOiBudW1iZXIpPT4ge1xuICAgICAgICAgICAgIHRoaXMuY29sdW1uLmNoaWxkcmVuLmZvckVhY2goKGxlbDogYW55LCBfajogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYobGVsLmlkZW50aWZpZXIgPT09IHRlcm0uaWRlbnRpZmllcil7XG4gICAgICAgICAgICAgICAgICBpZighdGhpcy5pc0V4aXN0cyh0ZXJtKSl7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGVybXNoYWZhbGwucHVzaChsZWwpXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgIH0pXG4gICAgICAgICAgfSlcbiAgICAgICAgICAvLyB0aGlzLnRlcm1zaGFmYWxsID0gWy4uLnRoaXMudGVybXNoYWZhbGxdXG4gICAgICAgICAgdGhpcy5jb2x1bW4uY2hpbGRyZW4uZm9yRWFjaCgodHI6IGFueSwgX2k6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgaWYoIXRoaXMuaXNFeGlzdHModHIpKXtcbiAgICAgICAgICAgICAgdGhpcy50ZXJtc2hhZmFsbC5wdXNoKHRyKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgICAgdGhpcy5jb2x1bW5EYXRhID0gdGhpcy50cmFuc2Zvcm0odGhpcy50ZXJtc2hhZmFsbCk7XG4gICAgICAgICAgdGhpcy5zZXRDb2x1bW5JdGVtcygpXG4gICAgICAgICAgaWYodGhpcy5jb2x1bW5EYXRhICYmIHRoaXMuY29sdW1uRGF0YS5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuY2FyZHNDb3VudC5lbWl0KHtjYXRlZ29yeTogdGhpcy5jb2x1bW5EYXRhWzBdLmNhdGVnb3J5IHx8IHRoaXMuY29sdW1uLmNvZGUsY291bnQ6dGhpcy5jb2x1bW5EYXRhLmxlbmd0aH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG4gICAgdGhpcy5jb25uZWN0b3JNYXBwaW5nID0gdGhpcy5jb25uZWN0b3JTZXJ2aWNlLmNvbm5lY3Rvck1hcFxuICAgIC8vIHRoaXMuZnJhbWV3b3JrU2VydmljZS5pc0RhdGFVcGRhdGVkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgLy8gICB0aGlzLm5nT25Jbml0KClcbiAgICAvLyB9KVxuICAgIFxuICB9XG4gXG4gIGlzRXhpc3RzKGU6YW55KXtcbiAgICBsZXQgdGVtcDtcbiAgICBpZih0aGlzLnRlcm1zaGFmYWxsICYmIHRoaXMudGVybXNoYWZhbGwubGVuZ3RoKSB7XG4gICAgICB0ZW1wID0gdGhpcy50ZXJtc2hhZmFsbC5tYXAodCA9PiB0LmlkZW50aWZpZXIpXG4gICAgICByZXR1cm4gdGVtcC5pbmNsdWRlcyhlLmlkZW50aWZpZXIpXG4gICAgfSByZXR1cm4gZmFsc2VcbiAgfVxuICBcbiAgc3Vic2NyaWJlRXZlbnRzKCkge1xuICAgIGlmICh0aGlzLmNoaWxkU3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLmNoaWxkU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKClcbiAgICB9XG4gICAgdGhpcy5jaGlsZFN1YnNjcmlwdGlvbiA9IHRoaXMuZnJhbWV3b3JrU2VydmljZS5jdXJyZW50U2VsZWN0aW9uLnN1YnNjcmliZShlID0+IHtcbiAgICAgIGlmICghZSkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH0gZWxzZSBpZiAoZS50eXBlID09PSB0aGlzLmNvbHVtbi5jb2RlKSB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkVGVybSA9IHsuLi5lLmRhdGEsIGNhcmRSZWY6IGUuY2FyZFJlZiB9XG4gICAgICAgIGlmKGUuaXNVcGRhdGUpe1xuICAgICAgICAgIHRoaXMudXBkYXRlVGF4b25vbXlUZXJtLmVtaXQoeyBpc1NlbGVjdGVkOiB0cnVlLCBzZWxlY3RlZFRlcm0sIGlzVXBkYXRlOiB0cnVlIH0pXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy51cGRhdGVUYXhvbm9teVRlcm0uZW1pdCh7IGlzU2VsZWN0ZWQ6IHRydWUsIHNlbGVjdGVkVGVybSB9KVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuY29sdW1uRGF0YSA9IHRoaXMudHJhbnNmb3JtKCh0aGlzLmNvbHVtbkRhdGEgfHwgW10pLm1hcChpdGVtID0+IHtcbiAgICAgICAgICBpZiAoaXRlbS5jb2RlID09PSBlLmRhdGEuY29kZSkge1xuICAgICAgICAgICAgaXRlbS5zZWxlY3RlZCA9IHRydWVcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaXRlbS5zZWxlY3RlZCA9IGZhbHNlXG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBpdGVtXG4gICAgICAgIH0pKTtcbiAgICAgICAgdGhpcy5zZXRDb2x1bW5JdGVtcygpXG4gICAgICAgIHRoaXMuc2V0Q29ubmVjdG9ycyhlLmNhcmRSZWYsIHRoaXMuY29sdW1uSXRlbXMsICdTSU5HTEUnKVxuICAgICAgICByZXR1cm5cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IG5leHQgPSB0aGlzLmZyYW1ld29ya1NlcnZpY2UuZ2V0TmV4dENhdGVnb3J5KGUudHlwZSk7XG4gICAgICAgIGlmIChuZXh0ICYmIG5leHQuY29kZSA9PT0gdGhpcy5jb2x1bW4uY29kZSkge1xuICAgICAgICAgIFxuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zZXRDb25uZWN0b3JzKGUuY2FyZFJlZiwgbmV4dCAmJiBuZXh0LmluZGV4IDwgdGhpcy5jb2x1bW4uaW5kZXggPyBbXSA6IHRoaXMuY29sdW1uSXRlbXMsICdBTEwnKVxuICAgICAgICAgIH0sIDEwMCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobmV4dCAmJiBuZXh0LmluZGV4IDwgdGhpcy5jb2x1bW4uaW5kZXgpIHtcbiAgICAgICAgICB0aGlzLmNvbHVtbkRhdGEgPSBbXTtcbiAgICAgICAgICB0aGlzLnNldENvbHVtbkl0ZW1zKClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pXG4gICAgaWYgKHRoaXMubmV3VGVybVN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5uZXdUZXJtU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKClcbiAgICB9XG4gICAgdGhpcy5uZXdUZXJtU3Vic2NyaXB0aW9uID0gdGhpcy5mcmFtZXdvcmtTZXJ2aWNlLmluc2VydFVwZGF0ZURlbGV0ZU5vdGlmaWVyLnN1YnNjcmliZShlID0+IHtcbiAgICAgIGlmIChlICYmIGUuYWN0aW9uKSB7XG4gICAgICAgIGNvbnN0IG5leHQgPSB0aGlzLmZyYW1ld29ya1NlcnZpY2UuZ2V0TmV4dENhdGVnb3J5KGUuYWN0aW9uKTtcbiAgICAgICAgaWYobmV4dCkge1xuICAgICAgICAgIGlmICh0aGlzLmNvbHVtbi5jb2RlID09PSBuZXh0LmNvZGUgJiYgZS50eXBlID09PSAnc2VsZWN0Jykge1xuICAgICAgICAgICAgdGhpcy5pbnNlcnRVcGRhdGVIYW5kbGVyKGUsIG5leHQpXG4gICAgICAgICAgfSBcbiAgICAgICAgICBpZihlLnR5cGUgPT09ICd1cGRhdGUnKSB7XG4gICAgICAgICAgICBpZih0aGlzLmNvbHVtbi5jb2RlID09PSBuZXh0LmNvZGUgJiYgZS50eXBlID09PSAndXBkYXRlJykge1xuICAgICAgICAgICAgICAvLyB0aGlzLmNvbHVtbiA9IHRoaXMuZnJhbWV3b3JrU2VydmljZS5saXN0LmdldChlLmFjdGlvbilcbiAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgIFxuICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZFBhcmVudDogYW55ID0gdGhpcy5mcmFtZXdvcmtTZXJ2aWNlLmdldFByZXZpb3VzQ2F0ZWdvcnkoZS5hY3Rpb24pO1xuICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZFBhcmVudERhdGEgPSB0aGlzLmZyYW1ld29ya1NlcnZpY2UubGlzdC5nZXQoc2VsZWN0ZWRQYXJlbnQuY29kZSlcbiAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRQYXJlbnRDYXJkUmVmID0gdGhpcy5mcmFtZXdvcmtTZXJ2aWNlLnNlbGVjdGlvbkxpc3QuZ2V0KHNlbGVjdGVkUGFyZW50LmNvZGUpICYmIFxuICAgICAgICAgICAgICB0aGlzLmZyYW1ld29ya1NlcnZpY2Uuc2VsZWN0aW9uTGlzdC5nZXQoc2VsZWN0ZWRQYXJlbnQuY29kZSkuY2FyZFJlZlxuICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgaWYoc2VsZWN0ZWRQYXJlbnQgJiYgc2VsZWN0ZWRQYXJlbnREYXRhICYmIHNlbGVjdGVkUGFyZW50RGF0YS5jaGlsZHJlbiAmJiBzZWxlY3RlZFBhcmVudERhdGEuY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIC8vIHRoaXMuaW5zZXJ0VXBkYXRlSGFuZGxlcihlLCBuZXh0LCAndXBkYXRlJylcbiAgICAgICAgICAgICAgICAvLyB0aGlzLmNvbHVtbiA9IHRoaXMuZnJhbWV3b3JrU2VydmljZS5saXN0LmdldChlLmFjdGlvbilcbiAgICAgICAgICAgICAgICAvLyB0aGlzLmNvbHVtbiA9IHRoaXMuZnJhbWV3b3JrU2VydmljZS5saXN0LmdldCgpXG4gICAgICAgICAgICAgICAgdGhpcy5mcmFtZXdvcmtTZXJ2aWNlLmN1cnJlbnRTZWxlY3Rpb24ubmV4dCh7IHR5cGU6IHNlbGVjdGVkUGFyZW50LmNvZGUsIGRhdGE6c2VsZWN0ZWRQYXJlbnREYXRhLmNoaWxkcmVuWzBdLCBjYXJkUmVmOnNlbGVjdGVkUGFyZW50Q2FyZFJlZiwgaXNVcGRhdGU6IHRydWV9KVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSlcbiAgfVxuICBpbnNlcnRVcGRhdGVIYW5kbGVyKGU6IGFueSwgX25leHQ6IGFueSwgaXNVcGRhdGU/OiBhbnkpIHtcbiAgICBjb25zdCBiYWNrID0gdGhpcy5mcmFtZXdvcmtTZXJ2aWNlLmdldFByZXZpb3VzQ2F0ZWdvcnkodGhpcy5jb2x1bW4uY29kZSlcbiAgICBcbiAgICBjb25zdCBsb2NhbFRlcm1zOmFueSA9IFtdXG4gICAgdGhpcy5mcmFtZXdvcmtTZXJ2aWNlLmdldExvY2FsVGVybXNCeUNhdGVnb3J5KHRoaXMuY29sdW1uLmNvZGUpLmZvckVhY2goZiA9PiB7XG4gICAgICBjb25zdCBzZWxlY3RlZFBhcmVudCA9IGJhY2sgPyB0aGlzLmZyYW1ld29ya1NlcnZpY2Uuc2VsZWN0aW9uTGlzdC5nZXQoYmFjay5jb2RlKSA6IG51bGw7IC8vY2FuIHVzZSBjdXJyZW50XG4gICAgICBcbiAgICAgIGlmIChzZWxlY3RlZFBhcmVudCAmJiAoKGYucGFyZW50LmNvZGUgPT09IHNlbGVjdGVkUGFyZW50LmNvZGUpIHx8IChmLnBhcmVudC5pZGVudGlmaWVyICYmIChmLnBhcmVudC5pZGVudGlmaWVyID09PSBzZWxlY3RlZFBhcmVudC5pZGVudGlmaWVyKSkpKSB7XG4gICAgICAgIGxvY2FsVGVybXMucHVzaChmLnRlcm0pXG4gICAgICB9XG4gICAgfSlcbiAgICBpZighaXNVcGRhdGUpIHtcbiAgICAvLyBnZXQgbGFzdCBwYXJlbnQgYW5kIGZpbHRlciBBYm92ZVxuICAgIGlmKGUgJiYgZS5kYXRhKSB7XG4gICAgdGhpcy5jb2x1bW5EYXRhID0gdGhpcy50cmFuc2Zvcm0oWy4uLmxvY2FsVGVybXMsIC4uLihlLmRhdGEuY2hpbGRyZW4gfHwgW10pXSlcbiAgICAgIC5maWx0ZXIoKHg6YW55KSA9PiB7XG4gICAgICAgIHJldHVybiB4LmNhdGVnb3J5ID09IHRoaXMuY29sdW1uLmNvZGVcbiAgICAgIH0pLm1hcCgobWVyOmFueSkgPT4ge1xuICAgICAgICAvLyoqcmVhZCBsb2NhbCBjaGlsZHJlbiBmb3IgbmV4dCAqL1xuICAgICAgICAvLyBjb25zdCBuZXh0Q2hpbGRyZW4gPSB0aGlzLmZyYW1ld29ya1NlcnZpY2UuZ2V0TG9jYWxUZXJtc0J5UGFyZW50KHRoaXMuY29sdW1uLmNvZGUpXG4gICAgICAgIFxuICAgICAgICAvKipyZXNldCBOZXh0IGxldmVsIGNoaWxkcmVuICovXG4gICAgICAgIHRoaXMuY29sdW1uLmNoaWxkcmVuID0gdGhpcy5jb2x1bW4uY2hpbGRyZW4ubWFwKChjb2w6YW55KSA9PiB7IGNvbC5zZWxlY3RlZCA9IGZhbHNlOyByZXR1cm4gY29sIH0pXG4gICAgICAgIG1lci5zZWxlY3RlZCA9IGZhbHNlXG4gICAgICAgIG1lci5jaGlsZHJlbiA9IChbLi4udGhpcy5jb2x1bW4uY2hpbGRyZW4uZmlsdGVyKCh4OmFueSkgPT4geyByZXR1cm4geC5jb2RlID09PSBtZXIuY29kZSB9KS5tYXAoKGE6IGFueSkgPT4gYS5jaGlsZHJlbildLnNoaWZ0KCkgfHwgW10pXG4gICAgICAgIHJldHVybiBtZXJcbiAgICAgIH0pO1xuICAgIH1cbiAgICAgIHRoaXMuc2V0Q29sdW1uSXRlbXMoKVxuXG4gICAgaWYodGhpcy5jb2x1bW5EYXRhLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuY2FyZHNDb3VudC5lbWl0KHtjYXRlZ29yeTogdGhpcy5jb2x1bW5EYXRhWzBdLmNhdGVnb3J5IHx8ICcnLGNvdW50OnRoaXMuY29sdW1uRGF0YS5sZW5ndGh9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jYXJkc0NvdW50LmVtaXQoe2NhdGVnb3J5OiB0aGlzLmNvbHVtbi5jb2RlLGNvdW50OiAwfSk7XG4gICAgfVxuICAgIC8vIHRoaXMudXBkYXRlVGVybXMoKVxuXG4gICAgfVxuICB9XG4gIHVwZGF0ZVNlbGVjdGlvbjEoX2RhdGE6IGFueSkgeyBcbiAgfVxuICB1cGRhdGVTZWxlY3Rpb24oX3NlbGVjdGlvbjogYW55KSB7XG4gICAgLy8gaWYodGhpcy5jb2x1bW4uY29kZT09PSdtZWRpdW0nKXtcbiAgICAvLyB9XG4gICAgLy8gaWYgKHNlbGVjdGlvbi5lbGVtZW50LmNhdGVnb3J5ID09PSB0aGlzLmNvbHVtbi5jb2RlKSB7XG4gICAgLy8gICB0aGlzLnVwZGF0ZVRheG9ub215VGVybS5lbWl0KHsgaXNTZWxlY3RlZDogc2VsZWN0aW9uLmlzU2VsZWN0ZWQsIHNlbGVjdGVkVGVybTogc2VsZWN0aW9uLmVsZW1lbnQgfSlcbiAgICAvLyB9XG4gICAgLy8gdGhpcy5jb2x1bW4uY2hpbGRyZW4gPSB0aGlzLmNvbHVtbi5jaGlsZHJlbi5tYXAoY29sID0+IHtcbiAgICAvLyAgIGlmIChjb2wuY29kZSA9PT0gc2VsZWN0aW9uLmVsZW1lbnQuY29kZSkge1xuICAgIC8vICAgICBjb2wuc2VsZWN0ZWQgPSB0cnVlXG4gICAgLy8gICB9IGVsc2Uge1xuICAgIC8vICAgICBjb2wuc2VsZWN0ZWQgPSBmYWxzZVxuICAgIC8vICAgfVxuICAgIC8vICAgcmV0dXJuIGNvbFxuICAgIC8vIH0pXG4gIH1cblxuICBzZXRDb2x1bW5JdGVtcygpIHtcbiAgICAvLyBjb25zdCBzZWxlY3RlZCA9IHRoaXMuY29sdW1uLmNoaWxkcmVuLmZpbHRlcihmID0+IHsgcmV0dXJuIGYuc2VsZWN0ZWQgfSlcbiAgICAvLyBpZiAoc2VsZWN0ZWQubGVuZ3RoID4gMCkge1xuICAgIC8vICAgY29uc3QgZGF0YSA9IHRoaXMuY29sdW1uRGF0YS5tYXAoY2QgPT4ge1xuICAgIC8vICAgICBjZC5zZWxlY3RlZCA9IHRoaXMuY29sdW1uLmNoaWxkcmVuLmZpbHRlcihmID0+IHsgcmV0dXJuIGNkLmlkZW50aWZpZXIgPT09IGYuaWRlbnRpZmllciB9KS5tYXAocyA9PiBzLnNlbGVjdGVkKVswXVxuICAgIC8vICAgICByZXR1cm4gY2RcbiAgICAvLyAgIH0pXG4gICAgLy8gICByZXR1cm4gZGF0YVxuICAgIC8vIH0gZWxzZSB7XG4gICAgbGV0IGxvY2FsU2VhcmNoVmFsdWUgPSB0aGlzLnNlYXJjaFZhbHVlLnZhbHVlICYmIHRoaXMuc2VhcmNoVmFsdWUudmFsdWUudG9Mb3dlckNhc2UoKSB8fCAnJ1xuICAgIGxldCBmaWx0ZXJlZENvbHVtbkRhdGEgPSBbXVxuICAgIHRoaXMuY29sdW1uSXRlbXMgPSBbXVxuICAgIGlmKGxvY2FsU2VhcmNoVmFsdWUpIHtcbiAgICAgIGZpbHRlcmVkQ29sdW1uRGF0YSA9IHRoaXMuY29sdW1uRGF0YS5maWx0ZXIoKGNoaWxkOiBhbnkpID0+IHtcbiAgICAgICAgaWYoY2hpbGQubmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGxvY2FsU2VhcmNoVmFsdWUpIHx8IFxuICAgICAgICAoXy5nZXQoY2hpbGQsICdyZWZJZCcpICYmIF8uZ2V0KGNoaWxkLCAncmVmSWQnKS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGxvY2FsU2VhcmNoVmFsdWUpKSB8fCBcbiAgICAgICAgKF8uZ2V0KGNoaWxkLCAnZGVzY3JpcHRpb24nKSAmJiBfLmdldChjaGlsZCwgJ2Rlc2NyaXB0aW9uJykudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhsb2NhbFNlYXJjaFZhbHVlKSl8fFxuICAgICAgICAoXy5nZXQoY2hpbGQsICdhZGRpdGlvbmFsUHJvcGVydGllcy5kaXNwbGF5TmFtZScpICYmIF8uZ2V0KGNoaWxkLCAnYWRkaXRpb25hbFByb3BlcnRpZXMuZGlzcGxheU5hbWUnKS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGxvY2FsU2VhcmNoVmFsdWUpKSkge1xuICAgICAgICAgIHJldHVybiBjaGlsZFxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH0gZWxzZSB7XG4gICAgICBmaWx0ZXJlZENvbHVtbkRhdGEgPSB0aGlzLmNvbHVtbkRhdGFcbiAgICB9XG4gICAgdGhpcy5maWx0ZXJlZENvbHVtbkl0ZW1zID0gZmlsdGVyZWRDb2x1bW5EYXRhXG4gICAgdGhpcy5jb2x1bW5JdGVtcyA9IGZpbHRlcmVkQ29sdW1uRGF0YSA/IGZpbHRlcmVkQ29sdW1uRGF0YS5zbGljZSh0aGlzLnN0YXJ0SW5kZXgsIHRoaXMuY3VycmVudExhc3RJbmRleCkgOiBbXVxuICAgIC8vIH1cbiAgfVxuXG4gIHRyYW5zZm9ybSh2YWx1ZTogYW55LCBzb3J0QnkgPSAndGltZVN0YW1wJyk6IGFueXtcbiAgICBpZighc29ydEJ5KSB7XG4gICAgICBpZih2YWx1ZSkge1xuICAgICAgICByZXR1cm4gdmFsdWUuc2xpY2UoKS5yZXZlcnNlKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZihBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICAgIHJldHVybiAgdmFsdWUuc29ydCgoYSwgYikgPT4ge1xuICAgICAgICAgICAgY29uc3QgdGltZXN0YW1wQSA9IGEuYWRkaXRpb25hbFByb3BlcnRpZXMgJiYgYS5hZGRpdGlvbmFsUHJvcGVydGllcy50aW1lU3RhbXAgPyBuZXcgRGF0ZShOdW1iZXIoYS5hZGRpdGlvbmFsUHJvcGVydGllcy50aW1lU3RhbXApKS5nZXRUaW1lKCkgOiAwO1xuICAgICAgICAgICAgY29uc3QgdGltZXN0YW1wQiA9IGIuYWRkaXRpb25hbFByb3BlcnRpZXMgJiYgYi5hZGRpdGlvbmFsUHJvcGVydGllcy50aW1lU3RhbXAgPyBuZXcgRGF0ZShOdW1iZXIoYi5hZGRpdGlvbmFsUHJvcGVydGllcy50aW1lU3RhbXApKS5nZXRUaW1lKCkgOiAwO1xuICAgICAgICAgICAgIFxuICAgICAgICAgICAgcmV0dXJuICB0aW1lc3RhbXBCIC0gdGltZXN0YW1wQTtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgfSk7XG4gICAgIFxuICAgICAgfVxuICAgIH1cbiAgICAgXG4gIH1cblxuICBzZWFyY2hGaWx0ZXJEYXRhKF9lbGU6IGFueSl7XG5cbiAgICB0aGlzLnNldENvbHVtbkl0ZW1zKClcbiAgICBjb25zdCBiYWNrID0gdGhpcy5mcmFtZXdvcmtTZXJ2aWNlLmdldFByZXZpb3VzQ2F0ZWdvcnkodGhpcy5jb2x1bW4uY29kZSlcbiAgICBpZihiYWNrICYmIGJhY2suY29kZSkge1xuICAgICAgbGV0IGJhY2tDb2x1bURhdGEgPSB0aGlzLmZyYW1ld29ya1NlcnZpY2Uuc2VsZWN0aW9uTGlzdC5nZXQoYmFjay5jb2RlKVxuICAgICAgaWYoYmFja0NvbHVtRGF0YS5jYXRlZ29yeSkge1xuICAgICAgICB0aGlzLmZyYW1ld29ya1NlcnZpY2UucmVtb3ZlT2xkTGluZSgpXG4gICAgICBcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5mcmFtZXdvcmtTZXJ2aWNlLmN1cnJlbnRTZWxlY3Rpb24ubmV4dCh7IHR5cGU6IGJhY2tDb2x1bURhdGEuY2F0ZWdvcnksIGRhdGE6IGJhY2tDb2x1bURhdGEsIGNhcmRSZWY6IGJhY2tDb2x1bURhdGEuY2FyZFJlZiB9KVxuICAgICAgICB9LCAyMDApXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmKHRoaXMuY29sdW1uSXRlbXM/Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgICB0aGlzLmZyYW1ld29ya1NlcnZpY2UucmVtb3ZlT2xkTGluZSgpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0aGlzLm1ha2VGaXJzdFRlcm1TZWxlY3RlZCgpXG4gICAgICAgIH0sNTAwKVxuICAgICAgfVxuICAgIH1cbiAgIH1cblxuICBjbGVhclNlYXJjaCgpIHtcbiAgICB0aGlzLnNlYXJjaFZhbHVlLnNldFZhbHVlKCcnKVxuICB9XG5cbiAgbG9hZE1vcmUoKSB7XG4gICAgdGhpcy5jdXJyZW50TGFzdEluZGV4ID0gdGhpcy5jdXJyZW50TGFzdEluZGV4ICsgdGhpcy5saW1pdFRvQWRkXG4gICAgdGhpcy5zZWFyY2hGaWx0ZXJEYXRhKHRoaXMuc2VhcmNoVmFsdWUudmFsdWUpXG4gIH1cblxuICBzZXRDb25uZWN0b3JzKGVsZW1lbnRDbGlja2VkOiBhbnksIGNvbHVtbkl0ZW06IGFueSwgbW9kZTogYW55KSB7XG4gICAgdGhpcy5yZW1vdmVDb25uZWN0b3JzKGVsZW1lbnRDbGlja2VkLCAnYm94JyArICh0aGlzLmNvbHVtbi5pbmRleCAtIDEpLCB0aGlzLmNvbHVtbi5pbmRleCAtIDEpXG4gICAgXG4gICAgaWYgKG1vZGUgPT09ICdBTEwnKSB7XG4gICAgICAvLyBsZXQgdGVtcGNvbm5lY3Rvck1hcHBpbmcgPSB7fVxuICAgICAgLy8gdGhpcy5jb25uZWN0b3JTZXJ2aWNlLnVwZGF0ZUNvbm5lY3RvcnNNYXAodGVtcGNvbm5lY3Rvck1hcHBpbmcpXG4gICAgICAvLyB7XG4gICAgICAvLyAgIFsnY29sdW1uJyArICh0aGlzLmNvbHVtbi5pbmRleC0gMSldOiAnJ1xuXG4gICAgICAvLyB9XG4gICAgICBjb25zdCBpZHMgPSBjb2x1bW5JdGVtLm1hcCgoX2M6IGFueSwgaTogYW55KSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbHVtbi5jb2RlICsgJ0NhcmQnICsgKGkgKyAxKVxuICAgICAgfSlcbiAgICAgIHRoaXMuY29ubmVjdG9yTWFwcGluZ1snYm94JyArICh0aGlzLmNvbHVtbi5pbmRleCAtIDEpXSA9IHsgc291cmNlOiBlbGVtZW50Q2xpY2tlZCwgbGluZXM6IChpZHMgfHwgW10pLm1hcCgoaWQ6IGFueSkgPT4geyByZXR1cm4geyB0YXJnZXQ6IGlkLCBsaW5lOiAnJywgdGFyZ2V0VHlwZTogJ2lkJyB9IH0pIH1cbiAgICAgIHRoaXMuY29ubmVjdG9yU2VydmljZS51cGRhdGVDb25uZWN0b3JzTWFwKHRoaXMuY29ubmVjdG9yTWFwcGluZylcbiAgICAgIFxuICAgICAgY29uc3QgY29ubmVjdGlvbkxpbmVzID0gdGhpcy5jb25uZWN0b3JTZXJ2aWNlLl9kcmF3TGluZShcbiAgICAgICAgdGhpcy5jb25uZWN0b3JNYXBwaW5nWydib3gnICsgKHRoaXMuY29sdW1uLmluZGV4IC0gMSldLnNvdXJjZSxcbiAgICAgICAgdGhpcy5jb25uZWN0b3JNYXBwaW5nWydib3gnICsgKHRoaXMuY29sdW1uLmluZGV4IC0gMSldLmxpbmVzLFxuICAgICAgICBudWxsLFxuICAgICAgICAnI2JveCcgKyAodGhpcy5jb2x1bW4uaW5kZXggLSAxKSxcbiAgICAgICAgJyNib3gnICsgdGhpcy5jb2x1bW4uaW5kZXhcbiAgICAgIClcbiAgICAgIHRoaXMuY29ubmVjdG9yTWFwcGluZ1snYm94JyArICh0aGlzLmNvbHVtbi5pbmRleCAtIDEpXS5saW5lcyA9IGNvbm5lY3Rpb25MaW5lc1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5jb2x1bW4uaW5kZXggPiAxICYmIHRoaXMuY29ubmVjdG9yTWFwcGluZ1snYm94JyArICh0aGlzLmNvbHVtbi5pbmRleCAtIDEpXSkge1xuICAgICAgICB0aGlzLmNvbm5lY3Rvck1hcHBpbmdbJ2JveCcgKyAodGhpcy5jb2x1bW4uaW5kZXggLSAxKV0ubGluZXMgPSBbeyB0YXJnZXQ6IGVsZW1lbnRDbGlja2VkLCBsaW5lOiAnJywgdGFyZ2V0VHlwZTogJ2VsZW1lbnQnIH1dXG5cbiAgICAgICAgdGhpcy5jb25uZWN0b3JTZXJ2aWNlLnVwZGF0ZUNvbm5lY3RvcnNNYXAodGhpcy5jb25uZWN0b3JNYXBwaW5nKVxuICAgICAgICBjb25zdCBjb25uZWN0aW9uTGluZXMgPSB0aGlzLmNvbm5lY3RvclNlcnZpY2UuX2RyYXdMaW5lKFxuICAgICAgICAgIHRoaXMuY29ubmVjdG9yTWFwcGluZ1snYm94JyArICh0aGlzLmNvbHVtbi5pbmRleCAtIDEpXS5zb3VyY2UsXG4gICAgICAgICAgdGhpcy5jb25uZWN0b3JNYXBwaW5nWydib3gnICsgKHRoaXMuY29sdW1uLmluZGV4IC0gMSldLmxpbmVzLFxuICAgICAgICAgIG51bGwsXG4gICAgICAgICAgJyNib3gnICsgKHRoaXMuY29sdW1uLmluZGV4IC0gMSksXG4gICAgICAgICAgJyNib3gnICsgdGhpcy5jb2x1bW4uaW5kZXhcbiAgICAgICAgKVxuICAgICAgICB0aGlzLmNvbm5lY3Rvck1hcHBpbmdbJ2JveCcgKyAodGhpcy5jb2x1bW4uaW5kZXggLSAxKV0ubGluZXMgPSBjb25uZWN0aW9uTGluZXNcbiAgICAgIH1cblxuICAgIH1cbiAgICB0aGlzLmNvbm5lY3RvclNlcnZpY2UudXBkYXRlQ29ubmVjdG9yc01hcCh0aGlzLmNvbm5lY3Rvck1hcHBpbmcpXG5cbiAgfVxuICByZW1vdmVDb25uZWN0b3JzKGN1cnJlbnRFbGVtZW50OiBhbnksIHByZXZDb2w6IGFueSwgY3VycmVudEluZGV4OiBhbnkpIHtcbiAgICBpZiAodGhpcy5jb25uZWN0b3JNYXBwaW5nKSB7XG4gICAgICBmb3IgKGNvbnN0IGtleSBpbiB0aGlzLmNvbm5lY3Rvck1hcHBpbmcpIHtcbiAgICAgICAgLy8gUmVtb3ZlIGFsbCBuLTEgbGluZXMgYW5kIGtlZXAgb25seSBjdXJyZW50IHNlbGVjdGlvbiwgYWxzbyBjbGVhciBuKzEgbGluZXNcbiAgICAgICAgaWYgKHRoaXMuY29ubmVjdG9yTWFwcGluZ1trZXldICYmIHRoaXMuY29ubmVjdG9yTWFwcGluZ1trZXldLmxpbmVzICYmIHRoaXMuY29ubmVjdG9yTWFwcGluZ1trZXldLmxpbmVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBjb25zdCBsaW5lcyA9IHRoaXMuY29ubmVjdG9yTWFwcGluZ1trZXldLmxpbmVzXG4gICAgICAgICAgbGluZXMuZm9yRWFjaChhc3luYyAoZWxlbWVudDogYW55LCBpbmRleDogYW55KSA9PiB7XG4gICAgICAgICAgICBpZiAoZWxlbWVudCAhPSBjdXJyZW50RWxlbWVudCAmJiBwcmV2Q29sID09IGtleSkge1xuICAgICAgICAgICAgICBhd2FpdCBlbGVtZW50LmxpbmUgJiYgZWxlbWVudC5saW5lLnJlbW92ZSgpO1xuICAgICAgICAgICAgICBsaW5lcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHRoaXMuY29ubmVjdG9yTWFwcGluZ1trZXldLmxpbmVzID0gbGluZXNcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHJlbW92ZSBhbGwgbisyIGxpbmVzLCBpZiBjbGlja3MgcHJldmlvdXMgY29sdW1ucyBhbmQgdHJlZSB3YXMgYWxyZWFkeSBkcmlsbGVkIGRvd25cbiAgICAgICAgbGV0IGNvdW50ID0gY3VycmVudEluZGV4ICsgMjtcbiAgICAgICAgbGV0IG5leHRDb2wgPSBgYm94JHtjb3VudH1gXG4gICAgICAgIGlmICh0aGlzLmNvbm5lY3Rvck1hcHBpbmdbbmV4dENvbF0gJiYgdGhpcy5jb25uZWN0b3JNYXBwaW5nW25leHRDb2xdLmxpbmVzICYmIHRoaXMuY29ubmVjdG9yTWFwcGluZ1tuZXh0Q29sXS5saW5lcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgY29uc3QgbGluZXMgPSB0aGlzLmNvbm5lY3Rvck1hcHBpbmdbbmV4dENvbF0ubGluZXNcbiAgICAgICAgICBsaW5lcy5mb3JFYWNoKGFzeW5jIChlbGVtZW50OiBhbnksIGluZGV4OiBhbnkpID0+IHtcbiAgICAgICAgICAgIGF3YWl0IGVsZW1lbnQubGluZSAmJiBlbGVtZW50LmxpbmUucmVtb3ZlKCk7XG4gICAgICAgICAgICBsaW5lcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICAgIH0pXG4gICAgICAgICAgdGhpcy5jb25uZWN0b3JNYXBwaW5nW25leHRDb2xdLmxpbmVzID0gbnVsbFxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICB9XG4gIH1cbiAgc2VsZWN0ZWRDYXJkKGV2ZW50OiBhbnkpe1xuICAgIHRoaXMudXBkYXRlVGVybUxpc3QuZW1pdChldmVudCk7XG4gIH1cblxuICBnZXQgc2hvd0xvYWRNb3JlQnRuKCk6IGJvb2xlYW4ge1xuICAgIGlmKHRoaXMuY29sdW1uICYmIHRoaXMuY29sdW1uLmNvbmZpZyAmJiB0aGlzLmNvbHVtbi5jb25maWcuY2F0ZWdvcnlEaXNwbGF5TmFtZSAhPT0gJ09yZ2FuaXNhdGlvbicgXG4gICAgICAmJiB0aGlzLmNvbHVtbi5uYW1lICE9PSAnT3JnYW5pc2F0aW9uJyAmJiB0aGlzLmNvbHVtbkl0ZW1zICYmIHRoaXMuY29sdW1uSXRlbXMubGVuZ3RoID4gMCkge1xuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfVxuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgZ2V0IGRpc2FibGVMb2FkQnV0dG9uKCk6IGJvb2xlYW4ge1xuICAgIGlmKHRoaXMuZmlsdGVyZWRDb2x1bW5JdGVtcyAmJiB0aGlzLmZpbHRlcmVkQ29sdW1uSXRlbXMubGVuZ3RoIDwgdGhpcy5jdXJyZW50TGFzdEluZGV4KSB7XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNoaWxkU3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLmNoaWxkU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKClcbiAgICB9XG4gICAgaWYodGhpcy5uZXdUZXJtU3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLm5ld1Rlcm1TdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKVxuICAgIH1cbiAgfVxuXG4gIGNhcmRBY3Rpb25FbWl0KGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLmNhcmRBY3Rpb24uZW1pdChldmVudCk7XG4gIH1cblxuICBtYWtlRmlyc3RUZXJtU2VsZWN0ZWQoKSB7XG4gICAgY29uc3QgZmlyc3RMaXN0SXRlbSA9IHRoaXMuZnJhbWV3b3JrU2VydmljZS5saXN0LmVudHJpZXMoKS5uZXh0KCkudmFsdWUgYXMgYW55XG4gICAgaWYoZmlyc3RMaXN0SXRlbSAmJiBmaXJzdExpc3RJdGVtLmxlbmd0aCA+PSAyKXtcbiAgICAgIGlmKGZpcnN0TGlzdEl0ZW1bMV0gJiYgZmlyc3RMaXN0SXRlbVsxXS5jaGlsZHJlbiAmJiBmaXJzdExpc3RJdGVtWzFdLmNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgICBjb25zdCBmaXJzdFRlcm0gPSBmaXJzdExpc3RJdGVtWzFdLmNoaWxkcmVuWzBdIGFzIGFueVxuICAgICAgICBjb25zdCBjYXJkUmVmID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZmlyc3RUZXJtLm5hbWUpXG4gICAgICAgIC8vIHRoaXMuY2F0ZWdvcnlMaXN0ID0gW11cbiAgICAgICAgZmlyc3RUZXJtLnNlbGVjdGVkID0gdHJ1ZVxuICAgICAgICB0aGlzLmZyYW1ld29ya1NlcnZpY2UuY2FyZENsa0RhdGEgPSBmaXJzdFRlcm07XG4gICAgICAgIHRoaXMuZnJhbWV3b3JrU2VydmljZS5DdXJyZW50Q2FyZENsay5uZXh0KGZpcnN0VGVybS5jYXRlZ29yeSlcbiAgICAgICAgdGhpcy5mcmFtZXdvcmtTZXJ2aWNlLmN1cnJlbnRTZWxlY3Rpb24ubmV4dCh7IHR5cGU6IGZpcnN0VGVybS5jYXRlZ29yeSwgZGF0YTogZmlyc3RUZXJtLCBjYXJkUmVmIH0pXG4gICAgICB9XG4gICAgfVxuICB9XG4gIFxufSIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4/LmNvbmZpZz8uc2hvd1NlYXJjaFwiPlxuICAgIDxkaXYgY2xhc3M9XCJ3LWZ1bGwgc3RpY2t5XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzZWFyY2ggbWItNVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJzZWFyY2hcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2lucHV0IG1hdC1maWVsZC1yb3VuZGVkIGZsZXggZmxleC1taWRkbGVcIj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwic2VhcmNoLWljb25cIj5zZWFyY2g8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInNlYXJjaFwiIFtmb3JtQ29udHJvbF09XCJzZWFyY2hWYWx1ZVwiIHBsYWNlaG9sZGVyPVwiU2VhcmNoXCIgI3NlYXJjaD5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cInNlYXJjaC52YWx1ZVwiIGNsYXNzPVwiY2xlYXItYnRuIGZsZXhcIiAoY2xpY2spPVwiY2xlYXJTZWFyY2goKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmNsZWFyPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L25nLWNvbnRhaW5lcj5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW5JdGVtcyAmJiBjb2x1bW5JdGVtcy5sZW5ndGggPiAwOyBlbHNlIG5vRGF0YVRlbXBsYXRlO1wiPlxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNoaWxkIG9mIGNvbHVtbkl0ZW1zOyBsZXQgaiA9IGluZGV4XCI+XG4gICAgICAgIDxkaXYgI2NhcmRFbGUgaWQ9XCJ7e2NvbHVtbi5jb2RlfX1DYXJke3tqKzF9fVwiID5cbiAgICAgICAgICAgIDxsaWItdGVybS1jYXJkXG4gICAgICAgICAgICAgICAgW2RhdGFdPVwieydjaGlsZHJlbic6IGNoaWxkLCAnc2VsZWN0ZWQnIDogZmFsc2UsICdjYXRlZ29yeSc6Y29sdW1uLmNvZGUsIGNhcmRTdWJUeXBlOiAnbWluaW1hbCcsIGlzVmlld09ubHk6ZmFsc2UsJ2luZGV4Jzpjb2x1bW4uaW5kZXgsIGNvbHVtbkluZm86IGNvbHVtbn1cIlxuICAgICAgICAgICAgICAgIFtlbmFibGVUaHJlZURvdHNdPVwiKGlzQ2hpbGRPcmcgJiYgY2hpbGRPcmcuY2hhbm5lbCA9PT0gY2hpbGQubmFtZSkgPyB0cnVlIDogKGlzQ2hpbGRPcmcpID8gZmFsc2UgOiB0cnVlXCJcbiAgICAgICAgICAgICAgICBbY2hlY2tJZkNoaWxkT3JnXT1cImlzQ2hpbGRPcmdcIlxuICAgICAgICAgICAgICAgIChpc1NlbGVjdGVkKT1cInVwZGF0ZVNlbGVjdGlvbjEoJGV2ZW50KVwiIChzZWxlY3RlZENhcmQpPVwic2VsZWN0ZWRDYXJkKCRldmVudClcIiAoY2FyZEFjdGlvbik9XCJjYXJkQWN0aW9uRW1pdCgkZXZlbnQpXCI+XG4gICAgICAgICAgICA8L2xpYi10ZXJtLWNhcmQ+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuPC9uZy1jb250YWluZXI+XG48bmctdGVtcGxhdGUgI25vRGF0YVRlbXBsYXRlID5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VhcmNoVmFsdWU/LnZhbHVlXCI+XG4gICAgPGRpdj5ObyBEYXRhIGZvdW5kPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuXG48ZGl2IGNsYXNzPVwidy1mdWxsIGZsZXgganVzdGlmeS1jZW50ZXJcIiAqbmdJZj1cIiFkaXNhYmxlTG9hZEJ1dHRvblwiPlxuICAgIDxidXR0b24gKGNsaWNrKT1cImxvYWRNb3JlKClcIiBjbGFzcz1cIm1hdC1yYWlzZWQtYnV0dG9uIG1hdC1idXR0b24tYmFzZSBsb2FkTW9yZVwiIFtuZ0NsYXNzXT1cInsnZGlzYWJsQnRuJzogZGlzYWJsZUxvYWRCdXR0b259XCJcbiAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZUxvYWRCdXR0b25cIj5Mb2FkIG1vcmUuLi48L2J1dHRvbj5cbjwvZGl2PlxuIl19
|
|
357
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1jb2x1bW4tdmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJ5L3N1bmJpcmQtY2IvdHJlZS1oaWVyYXJjaHkvc3JjL2xpYi9jb21wb25lbnRzL3RyZWUtY29sdW1uLXZpZXcvdHJlZS1jb2x1bW4tdmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJ5L3N1bmJpcmQtY2IvdHJlZS1oaWVyYXJjaHkvc3JjL2xpYi9jb21wb25lbnRzL3RyZWUtY29sdW1uLXZpZXcvdHJlZS1jb2x1bW4tdmlldy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQWdDLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQU1yRyxPQUFPLEtBQUssQ0FBQyxNQUFNLFFBQVEsQ0FBQTtBQUMzQixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7QUFHcEUsTUFLYSx1QkFBdUI7SUFxQmxDLFlBQ1UsZ0JBQWtDLEVBQ2xDLGdCQUFrQyxFQUNsQyxlQUFpQztRQUZqQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsb0JBQWUsR0FBZixlQUFlLENBQWtCO1FBckJsQyxlQUFVLEdBQUcsS0FBSyxDQUFBO1FBRTNCLHFCQUFnQixHQUFRLEVBQUUsQ0FBQTtRQUNoQix1QkFBa0IsR0FBRyxJQUFJLFlBQVksQ0FBZ0IsSUFBSSxDQUFDLENBQUM7UUFDM0QsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBZSxDQUFDO1FBQ2pELGVBQVUsR0FBRyxJQUFJLFlBQVksRUFB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QUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUU7Z0JBQ3BGLE1BQU0sU0FBUyxHQUFHLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFRLENBQUE7Z0JBQ3JELE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFBO2dCQUV2RCxTQUFTLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQTtnQkFDekIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUM7Z0JBQzlDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQTtnQkFDN0QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxTQUFTLENBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQTthQUNwRztTQUNGO0lBQ0gsQ0FBQzsrR0E3WlUsdUJBQXVCO21HQUF2Qix1QkFBdUIsd1VDaEJwQyxnNURBcUNBOztTRHJCYSx1QkFBdUI7NEZBQXZCLHVCQUF1QjtrQkFMbkMsU0FBUzsrQkFDRSxzQkFBc0I7b0tBS3ZCLE1BQU07c0JBQWQsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFFSSxrQkFBa0I7c0JBQTNCLE1BQU07Z0JBQ0csY0FBYztzQkFBdkIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRnJhbWV3b3JrU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2ZyYW1ld29yay5zZXJ2aWNlJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ29ubmVjdG9yU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2Nvbm5lY3Rvci5zZXJ2aWNlJztcbmltcG9ydCB7IEFwcHJvdmFsU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2FwcHJvdmFsLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2FyZENoZWNrZWQsIENhcmRTZWxlY3Rpb24sIENhcmRzQ291bnQsIENhcmQgfSBmcm9tICcuLi8uLi9tb2RlbHMvdmFyaWFibGUtdHlwZS5tb2RlbCc7XG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCdcbmltcG9ydCB7IFVudHlwZWRGb3JtQ29udHJvbCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmRlY2xhcmUgdmFyIExlYWRlckxpbmU6IGFueTtcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi10cmVlLWNvbHVtbi12aWV3JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RyZWUtY29sdW1uLXZpZXcuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90cmVlLWNvbHVtbi12aWV3LmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgVHJlZUNvbHVtblZpZXdDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgT25DaGFuZ2VzIHtcbiAgQElucHV0KCkgY29sdW1uOiBhbnk7XG4gIEBJbnB1dCgpIGNvbnRhaW5lcklkOiBzdHJpbmcgfCB1bmRlZmluZWRcbiAgQElucHV0KCkgaXNDaGlsZE9yZyA9IGZhbHNlXG4gIEBJbnB1dCgpIGNoaWxkT3JnOiBhbnlcbiAgY29ubmVjdG9yTWFwcGluZzogYW55ID0ge31cbiAgQE91dHB1dCgpIHVwZGF0ZVRheG9ub215VGVybSA9IG5ldyBFdmVudEVtaXR0ZXI8Q2FyZFNlbGVjdGlvbj4odHJ1ZSk7XG4gIEBPdXRwdXQoKSB1cGRhdGVUZXJtTGlzdCA9IG5ldyBFdmVudEVtaXR0ZXI8Q2FyZENoZWNrZWQ+KCk7XG4gIEBPdXRwdXQoKSBjYXJkc0NvdW50ID0gbmV3IEV2ZW50RW1pdHRlcjxDYXJkc0NvdW50PigpO1xuICBAT3V0cHV0KCkgY2FyZEFjdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXI8Q2FyZFNlbGVjdGlvbj4oKTtcbiAgY29sdW1uRGF0YTogQXJyYXk8Q2FyZD4gPSBbXTtcbiAgY2hpbGRTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiB8IHVuZGVmaW5lZDtcbiAgbmV3VGVybVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uIHwgdW5kZWZpbmVkO1xuICBhcHByb3ZhbFRlcm06IGFueTtcbiAgdGVybXNoYWZhbGw6IEFycmF5PENhcmQ+ID0gW107XG4gIHNlYXJjaFZhbHVlID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbCgnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKTtcbiAgc3RhcnRJbmRleCA9IDBcbiAgbGltaXRUb0FkZCA9IDUwXG4gIGN1cnJlbnRMYXN0SW5kZXggPSA1MFxuICBjb2x1bW5JdGVtczogYW55ID0gW11cbiAgZmlsdGVyZWRDb2x1bW5JdGVtczogYW55ID0gW11cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBmcmFtZXdvcmtTZXJ2aWNlOiBGcmFtZXdvcmtTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29ubmVjdG9yU2VydmljZTogQ29ubmVjdG9yU2VydmljZSxcbiAgICBwcml2YXRlIGFwcHJvdmFsU2VydmljZSA6IEFwcHJvdmFsU2VydmljZVxuICApIHtcbiAgfVxuICBuZ09uQ2hhbmdlcygpOiB2b2lkIHt9XG5cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmliZUV2ZW50cygpXG4gICAgdGhpcy5zZXRDb2x1bW5JdGVtcygpXG4gICAgdGhpcy5zZWFyY2hWYWx1ZS52YWx1ZUNoYW5nZXMucGlwZShcbiAgICAgIGRlYm91bmNlVGltZSg3MDApLFxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICApLnN1YnNjcmliZSgoZWxlOiBhbnkpID0+IHtcbiAgICAgIHRoaXMuc2VhcmNoRmlsdGVyRGF0YShlbGUpXG4gICAgfSlcbiAgICBpZiAodGhpcy5jb2x1bW4uaW5kZXggPT09IDEpIHtcbiAgICAgIHRoaXMuYXBwcm92YWxTZXJ2aWNlLmdldFVwZGF0ZUxpc3QoKS5zdWJzY3JpYmUoKGxpc3Q6YW55KSA9PiB7XG4gICAgICAgIHRoaXMuYXBwcm92YWxUZXJtID0gbGlzdC5maWx0ZXIoKGl0ZW06IGFueSkgPT4gdGhpcy5jb2x1bW4uY29kZSA9PT0gaXRlbS5jYXRlZ29yeSlcbiAgICAgICAgaWYodGhpcy5hcHByb3ZhbFRlcm0pe1xuICAgICAgICAgIHRoaXMuYXBwcm92YWxUZXJtLmZvckVhY2goKHRlcm06IGFueSwgX2k6IG51bWJlcik9PiB7XG4gICAgICAgICAgICAgdGhpcy5jb2x1bW4uY2hpbGRyZW4uZm9yRWFjaCgobGVsOiBhbnksIF9qOiBudW1iZXIpID0+IHtcbiAgICAgICAgICAgICAgICBpZihsZWwuaWRlbnRpZmllciA9PT0gdGVybS5pZGVudGlmaWVyKXtcbiAgICAgICAgICAgICAgICAgIGlmKCF0aGlzLmlzRXhpc3RzKHRlcm0pKXtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50ZXJtc2hhZmFsbC5wdXNoKGxlbClcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgfSlcbiAgICAgICAgICB9KVxuICAgICAgICAgIC8vIHRoaXMudGVybXNoYWZhbGwgPSBbLi4udGhpcy50ZXJtc2hhZmFsbF1cbiAgICAgICAgICB0aGlzLmNvbHVtbi5jaGlsZHJlbi5mb3JFYWNoKCh0cjogYW55LCBfaTogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgICBpZighdGhpcy5pc0V4aXN0cyh0cikpe1xuICAgICAgICAgICAgICB0aGlzLnRlcm1zaGFmYWxsLnB1c2godHIpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgICAgICB0aGlzLmNvbHVtbkRhdGEgPSB0aGlzLnRyYW5zZm9ybSh0aGlzLnRlcm1zaGFmYWxsKTtcbiAgICAgICAgICB0aGlzLnNldENvbHVtbkl0ZW1zKClcbiAgICAgICAgICBpZih0aGlzLmNvbHVtbkRhdGEgJiYgdGhpcy5jb2x1bW5EYXRhLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5jYXJkc0NvdW50LmVtaXQoe2NhdGVnb3J5OiB0aGlzLmNvbHVtbkRhdGFbMF0uY2F0ZWdvcnkgfHwgdGhpcy5jb2x1bW4uY29kZSxjb3VudDp0aGlzLmNvbHVtbkRhdGEubGVuZ3RofSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cbiAgICB0aGlzLmNvbm5lY3Rvck1hcHBpbmcgPSB0aGlzLmNvbm5lY3RvclNlcnZpY2UuY29ubmVjdG9yTWFwXG4gICAgLy8gdGhpcy5mcmFtZXdvcmtTZXJ2aWNlLmlzRGF0YVVwZGF0ZWQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAvLyAgIHRoaXMubmdPbkluaXQoKVxuICAgIC8vIH0pXG4gICAgXG4gIH1cbiBcbiAgaXNFeGlzdHMoZTphbnkpe1xuICAgIGxldCB0ZW1wO1xuICAgIGlmKHRoaXMudGVybXNoYWZhbGwgJiYgdGhpcy50ZXJtc2hhZmFsbC5sZW5ndGgpIHtcbiAgICAgIHRlbXAgPSB0aGlzLnRlcm1zaGFmYWxsLm1hcCh0ID0+IHQuaWRlbnRpZmllcilcbiAgICAgIHJldHVybiB0ZW1wLmluY2x1ZGVzKGUuaWRlbnRpZmllcilcbiAgICB9IHJldHVybiBmYWxzZVxuICB9XG4gIFxuICBzdWJzY3JpYmVFdmVudHMoKSB7XG4gICAgaWYgKHRoaXMuY2hpbGRTdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMuY2hpbGRTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKVxuICAgIH1cbiAgICB0aGlzLmNoaWxkU3Vic2NyaXB0aW9uID0gdGhpcy5mcmFtZXdvcmtTZXJ2aWNlLmN1cnJlbnRTZWxlY3Rpb24uc3Vic2NyaWJlKGUgPT4ge1xuICAgICAgaWYgKCFlKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfSBlbHNlIGlmIChlLnR5cGUgPT09IHRoaXMuY29sdW1uLmNvZGUpIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRUZXJtID0gey4uLmUuZGF0YSwgY2FyZFJlZjogZS5jYXJkUmVmIH1cbiAgICAgICAgaWYoZS5pc1VwZGF0ZSl7XG4gICAgICAgICAgdGhpcy51cGRhdGVUYXhvbm9teVRlcm0uZW1pdCh7IGlzU2VsZWN0ZWQ6IHRydWUsIHNlbGVjdGVkVGVybSwgaXNVcGRhdGU6IHRydWUgfSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnVwZGF0ZVRheG9ub215VGVybS5lbWl0KHsgaXNTZWxlY3RlZDogdHJ1ZSwgc2VsZWN0ZWRUZXJtIH0pXG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jb2x1bW5EYXRhID0gdGhpcy50cmFuc2Zvcm0oKHRoaXMuY29sdW1uRGF0YSB8fCBbXSkubWFwKGl0ZW0gPT4ge1xuICAgICAgICAgIGlmIChpdGVtLmNvZGUgPT09IGUuZGF0YS5jb2RlKSB7XG4gICAgICAgICAgICBpdGVtLnNlbGVjdGVkID0gdHJ1ZVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpdGVtLnNlbGVjdGVkID0gZmFsc2VcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGl0ZW1cbiAgICAgICAgfSkpO1xuICAgICAgICB0aGlzLnNldENvbHVtbkl0ZW1zKClcbiAgICAgICAgdGhpcy5zZXRDb25uZWN0b3JzKGUuY2FyZFJlZiwgdGhpcy5jb2x1bW5JdGVtcywgJ1NJTkdMRScpXG4gICAgICAgIHJldHVyblxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgbmV4dCA9IHRoaXMuZnJhbWV3b3JrU2VydmljZS5nZXROZXh0Q2F0ZWdvcnkoZS50eXBlKTtcbiAgICAgICAgaWYgKG5leHQgJiYgbmV4dC5jb2RlID09PSB0aGlzLmNvbHVtbi5jb2RlKSB7XG4gICAgICAgICAgXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNldENvbm5lY3RvcnMoZS5jYXJkUmVmLCBuZXh0ICYmIG5leHQuaW5kZXggPCB0aGlzLmNvbHVtbi5pbmRleCA/IFtdIDogdGhpcy5jb2x1bW5JdGVtcywgJ0FMTCcpXG4gICAgICAgICAgfSwgMTAwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChuZXh0ICYmIG5leHQuaW5kZXggPCB0aGlzLmNvbHVtbi5pbmRleCkge1xuICAgICAgICAgIHRoaXMuY29sdW1uRGF0YSA9IFtdO1xuICAgICAgICAgIHRoaXMuc2V0Q29sdW1uSXRlbXMoKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSlcbiAgICBpZiAodGhpcy5uZXdUZXJtU3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLm5ld1Rlcm1TdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKVxuICAgIH1cbiAgICB0aGlzLm5ld1Rlcm1TdWJzY3JpcHRpb24gPSB0aGlzLmZyYW1ld29ya1NlcnZpY2UuaW5zZXJ0VXBkYXRlRGVsZXRlTm90aWZpZXIuc3Vic2NyaWJlKGUgPT4ge1xuICAgICAgaWYgKGUgJiYgZS5hY3Rpb24pIHtcbiAgICAgICAgY29uc3QgbmV4dCA9IHRoaXMuZnJhbWV3b3JrU2VydmljZS5nZXROZXh0Q2F0ZWdvcnkoZS5hY3Rpb24pO1xuICAgICAgICBpZihuZXh0KSB7XG4gICAgICAgICAgaWYgKHRoaXMuY29sdW1uLmNvZGUgPT09IG5leHQuY29kZSAmJiBlLnR5cGUgPT09ICdzZWxlY3QnKSB7XG4gICAgICAgICAgICB0aGlzLmluc2VydFVwZGF0ZUhhbmRsZXIoZSwgbmV4dClcbiAgICAgICAgICB9IFxuICAgICAgICAgIGlmKGUudHlwZSA9PT0gJ3VwZGF0ZScpIHtcbiAgICAgICAgICAgIGlmKHRoaXMuY29sdW1uLmNvZGUgPT09IG5leHQuY29kZSAmJiBlLnR5cGUgPT09ICd1cGRhdGUnKSB7XG4gICAgICAgICAgICAgIC8vIHRoaXMuY29sdW1uID0gdGhpcy5mcmFtZXdvcmtTZXJ2aWNlLmxpc3QuZ2V0KGUuYWN0aW9uKVxuICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkUGFyZW50OiBhbnkgPSB0aGlzLmZyYW1ld29ya1NlcnZpY2UuZ2V0UHJldmlvdXNDYXRlZ29yeShlLmFjdGlvbik7XG4gICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkUGFyZW50RGF0YSA9IHRoaXMuZnJhbWV3b3JrU2VydmljZS5saXN0LmdldChzZWxlY3RlZFBhcmVudC5jb2RlKVxuICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZFBhcmVudENhcmRSZWYgPSB0aGlzLmZyYW1ld29ya1NlcnZpY2Uuc2VsZWN0aW9uTGlzdC5nZXQoc2VsZWN0ZWRQYXJlbnQuY29kZSkgJiYgXG4gICAgICAgICAgICAgIHRoaXMuZnJhbWV3b3JrU2VydmljZS5zZWxlY3Rpb25MaXN0LmdldChzZWxlY3RlZFBhcmVudC5jb2RlKS5jYXJkUmVmXG4gICAgICAgICAgICAgIFxuICAgICAgICAgICAgICBpZihzZWxlY3RlZFBhcmVudCAmJiBzZWxlY3RlZFBhcmVudERhdGEgJiYgc2VsZWN0ZWRQYXJlbnREYXRhLmNoaWxkcmVuICYmIHNlbGVjdGVkUGFyZW50RGF0YS5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgLy8gdGhpcy5pbnNlcnRVcGRhdGVIYW5kbGVyKGUsIG5leHQsICd1cGRhdGUnKVxuICAgICAgICAgICAgICAgIC8vIHRoaXMuY29sdW1uID0gdGhpcy5mcmFtZXdvcmtTZXJ2aWNlLmxpc3QuZ2V0KGUuYWN0aW9uKVxuICAgICAgICAgICAgICAgIC8vIHRoaXMuY29sdW1uID0gdGhpcy5mcmFtZXdvcmtTZXJ2aWNlLmxpc3QuZ2V0KClcbiAgICAgICAgICAgICAgICB0aGlzLmZyYW1ld29ya1NlcnZpY2UuY3VycmVudFNlbGVjdGlvbi5uZXh0KHsgdHlwZTogc2VsZWN0ZWRQYXJlbnQuY29kZSwgZGF0YTpzZWxlY3RlZFBhcmVudERhdGEuY2hpbGRyZW5bMF0sIGNhcmRSZWY6c2VsZWN0ZWRQYXJlbnRDYXJkUmVmLCBpc1VwZGF0ZTogdHJ1ZX0pXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KVxuICB9XG4gIGluc2VydFVwZGF0ZUhhbmRsZXIoZTogYW55LCBfbmV4dDogYW55LCBpc1VwZGF0ZT86IGFueSkge1xuICAgIGNvbnN0IGJhY2sgPSB0aGlzLmZyYW1ld29ya1NlcnZpY2UuZ2V0UHJldmlvdXNDYXRlZ29yeSh0aGlzLmNvbHVtbi5jb2RlKVxuICAgIFxuICAgIGNvbnN0IGxvY2FsVGVybXM6YW55ID0gW11cbiAgICB0aGlzLmZyYW1ld29ya1NlcnZpY2UuZ2V0TG9jYWxUZXJtc0J5Q2F0ZWdvcnkodGhpcy5jb2x1bW4uY29kZSkuZm9yRWFjaChmID0+IHtcbiAgICAgIGNvbnN0IHNlbGVjdGVkUGFyZW50ID0gYmFjayA/IHRoaXMuZnJhbWV3b3JrU2VydmljZS5zZWxlY3Rpb25MaXN0LmdldChiYWNrLmNvZGUpIDogbnVsbDsgLy9jYW4gdXNlIGN1cnJlbnRcbiAgICAgIFxuICAgICAgaWYgKHNlbGVjdGVkUGFyZW50ICYmICgoZi5wYXJlbnQuY29kZSA9PT0gc2VsZWN0ZWRQYXJlbnQuY29kZSkgfHwgKGYucGFyZW50LmlkZW50aWZpZXIgJiYgKGYucGFyZW50LmlkZW50aWZpZXIgPT09IHNlbGVjdGVkUGFyZW50LmlkZW50aWZpZXIpKSkpIHtcbiAgICAgICAgbG9jYWxUZXJtcy5wdXNoKGYudGVybSlcbiAgICAgIH1cbiAgICB9KVxuICAgIGlmKCFpc1VwZGF0ZSkge1xuICAgIC8vIGdldCBsYXN0IHBhcmVudCBhbmQgZmlsdGVyIEFib3ZlXG4gICAgaWYoZSAmJiBlLmRhdGEpIHtcbiAgICB0aGlzLmNvbHVtbkRhdGEgPSB0aGlzLnRyYW5zZm9ybShbLi4ubG9jYWxUZXJtcywgLi4uKGUuZGF0YS5jaGlsZHJlbiB8fCBbXSldKVxuICAgICAgLmZpbHRlcigoeDphbnkpID0+IHtcbiAgICAgICAgcmV0dXJuIHguY2F0ZWdvcnkgPT0gdGhpcy5jb2x1bW4uY29kZVxuICAgICAgfSkubWFwKChtZXI6YW55KSA9PiB7XG4gICAgICAgIC8vKipyZWFkIGxvY2FsIGNoaWxkcmVuIGZvciBuZXh0ICovXG4gICAgICAgIC8vIGNvbnN0IG5leHRDaGlsZHJlbiA9IHRoaXMuZnJhbWV3b3JrU2VydmljZS5nZXRMb2NhbFRlcm1zQnlQYXJlbnQodGhpcy5jb2x1bW4uY29kZSlcbiAgICAgICAgXG4gICAgICAgIC8qKnJlc2V0IE5leHQgbGV2ZWwgY2hpbGRyZW4gKi9cbiAgICAgICAgdGhpcy5jb2x1bW4uY2hpbGRyZW4gPSB0aGlzLmNvbHVtbi5jaGlsZHJlbi5tYXAoKGNvbDphbnkpID0+IHsgY29sLnNlbGVjdGVkID0gZmFsc2U7IHJldHVybiBjb2wgfSlcbiAgICAgICAgbWVyLnNlbGVjdGVkID0gZmFsc2VcbiAgICAgICAgbWVyLmNoaWxkcmVuID0gKFsuLi50aGlzLmNvbHVtbi5jaGlsZHJlbi5maWx0ZXIoKHg6YW55KSA9PiB7IHJldHVybiB4LmNvZGUgPT09IG1lci5jb2RlIH0pLm1hcCgoYTogYW55KSA9PiBhLmNoaWxkcmVuKV0uc2hpZnQoKSB8fCBbXSlcbiAgICAgICAgcmV0dXJuIG1lclxuICAgICAgfSk7XG4gICAgfVxuICAgICAgdGhpcy5zZXRDb2x1bW5JdGVtcygpXG5cbiAgICBpZih0aGlzLmNvbHVtbkRhdGEubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5jYXJkc0NvdW50LmVtaXQoe2NhdGVnb3J5OiB0aGlzLmNvbHVtbkRhdGFbMF0uY2F0ZWdvcnkgfHwgJycsY291bnQ6dGhpcy5jb2x1bW5EYXRhLmxlbmd0aH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNhcmRzQ291bnQuZW1pdCh7Y2F0ZWdvcnk6IHRoaXMuY29sdW1uLmNvZGUsY291bnQ6IDB9KTtcbiAgICB9XG4gICAgLy8gdGhpcy51cGRhdGVUZXJtcygpXG5cbiAgICB9XG4gIH1cbiAgdXBkYXRlU2VsZWN0aW9uMShfZGF0YTogYW55KSB7IFxuICB9XG4gIHVwZGF0ZVNlbGVjdGlvbihfc2VsZWN0aW9uOiBhbnkpIHtcbiAgICAvLyBpZih0aGlzLmNvbHVtbi5jb2RlPT09J21lZGl1bScpe1xuICAgIC8vIH1cbiAgICAvLyBpZiAoc2VsZWN0aW9uLmVsZW1lbnQuY2F0ZWdvcnkgPT09IHRoaXMuY29sdW1uLmNvZGUpIHtcbiAgICAvLyAgIHRoaXMudXBkYXRlVGF4b25vbXlUZXJtLmVtaXQoeyBpc1NlbGVjdGVkOiBzZWxlY3Rpb24uaXNTZWxlY3RlZCwgc2VsZWN0ZWRUZXJtOiBzZWxlY3Rpb24uZWxlbWVudCB9KVxuICAgIC8vIH1cbiAgICAvLyB0aGlzLmNvbHVtbi5jaGlsZHJlbiA9IHRoaXMuY29sdW1uLmNoaWxkcmVuLm1hcChjb2wgPT4ge1xuICAgIC8vICAgaWYgKGNvbC5jb2RlID09PSBzZWxlY3Rpb24uZWxlbWVudC5jb2RlKSB7XG4gICAgLy8gICAgIGNvbC5zZWxlY3RlZCA9IHRydWVcbiAgICAvLyAgIH0gZWxzZSB7XG4gICAgLy8gICAgIGNvbC5zZWxlY3RlZCA9IGZhbHNlXG4gICAgLy8gICB9XG4gICAgLy8gICByZXR1cm4gY29sXG4gICAgLy8gfSlcbiAgfVxuXG4gIHNldENvbHVtbkl0ZW1zKCkge1xuICAgIC8vIGNvbnN0IHNlbGVjdGVkID0gdGhpcy5jb2x1bW4uY2hpbGRyZW4uZmlsdGVyKGYgPT4geyByZXR1cm4gZi5zZWxlY3RlZCB9KVxuICAgIC8vIGlmIChzZWxlY3RlZC5sZW5ndGggPiAwKSB7XG4gICAgLy8gICBjb25zdCBkYXRhID0gdGhpcy5jb2x1bW5EYXRhLm1hcChjZCA9PiB7XG4gICAgLy8gICAgIGNkLnNlbGVjdGVkID0gdGhpcy5jb2x1bW4uY2hpbGRyZW4uZmlsdGVyKGYgPT4geyByZXR1cm4gY2QuaWRlbnRpZmllciA9PT0gZi5pZGVudGlmaWVyIH0pLm1hcChzID0+IHMuc2VsZWN0ZWQpWzBdXG4gICAgLy8gICAgIHJldHVybiBjZFxuICAgIC8vICAgfSlcbiAgICAvLyAgIHJldHVybiBkYXRhXG4gICAgLy8gfSBlbHNlIHtcbiAgICBsZXQgbG9jYWxTZWFyY2hWYWx1ZSA9IHRoaXMuc2VhcmNoVmFsdWUudmFsdWUgJiYgdGhpcy5zZWFyY2hWYWx1ZS52YWx1ZS50b0xvd2VyQ2FzZSgpIHx8ICcnXG4gICAgbGV0IGZpbHRlcmVkQ29sdW1uRGF0YSA9IFtdXG4gICAgdGhpcy5jb2x1bW5JdGVtcyA9IFtdXG4gICAgaWYobG9jYWxTZWFyY2hWYWx1ZSkge1xuICAgICAgZmlsdGVyZWRDb2x1bW5EYXRhID0gdGhpcy5jb2x1bW5EYXRhLmZpbHRlcigoY2hpbGQ6IGFueSkgPT4ge1xuICAgICAgICBpZihjaGlsZC5uYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMobG9jYWxTZWFyY2hWYWx1ZSkgfHwgXG4gICAgICAgIChfLmdldChjaGlsZCwgJ3JlZklkJykgJiYgXy5nZXQoY2hpbGQsICdyZWZJZCcpLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMobG9jYWxTZWFyY2hWYWx1ZSkpIHx8IFxuICAgICAgICAoXy5nZXQoY2hpbGQsICdkZXNjcmlwdGlvbicpICYmIF8uZ2V0KGNoaWxkLCAnZGVzY3JpcHRpb24nKS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGxvY2FsU2VhcmNoVmFsdWUpKXx8XG4gICAgICAgIChfLmdldChjaGlsZCwgJ2FkZGl0aW9uYWxQcm9wZXJ0aWVzLmRpc3BsYXlOYW1lJykgJiYgXy5nZXQoY2hpbGQsICdhZGRpdGlvbmFsUHJvcGVydGllcy5kaXNwbGF5TmFtZScpLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMobG9jYWxTZWFyY2hWYWx1ZSkpKSB7XG4gICAgICAgICAgcmV0dXJuIGNoaWxkXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfSBlbHNlIHtcbiAgICAgIGZpbHRlcmVkQ29sdW1uRGF0YSA9IHRoaXMuY29sdW1uRGF0YVxuICAgIH1cbiAgICB0aGlzLmZpbHRlcmVkQ29sdW1uSXRlbXMgPSBmaWx0ZXJlZENvbHVtbkRhdGFcbiAgICB0aGlzLmNvbHVtbkl0ZW1zID0gZmlsdGVyZWRDb2x1bW5EYXRhID8gZmlsdGVyZWRDb2x1bW5EYXRhLnNsaWNlKHRoaXMuc3RhcnRJbmRleCwgdGhpcy5jdXJyZW50TGFzdEluZGV4KSA6IFtdXG4gICAgLy8gfVxuICB9XG5cbiAgdHJhbnNmb3JtKHZhbHVlOiBhbnksIHNvcnRCeSA9ICd0aW1lU3RhbXAnKTogYW55e1xuICAgIGlmKCFzb3J0QnkpIHtcbiAgICAgIGlmKHZhbHVlKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZS5zbGljZSgpLnJldmVyc2UoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBudWxsXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgICAgcmV0dXJuICB2YWx1ZS5zb3J0KChhLCBiKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB0aW1lc3RhbXBBID0gYS5hZGRpdGlvbmFsUHJvcGVydGllcyAmJiBhLmFkZGl0aW9uYWxQcm9wZXJ0aWVzLnRpbWVTdGFtcCA/IG5ldyBEYXRlKE51bWJlcihhLmFkZGl0aW9uYWxQcm9wZXJ0aWVzLnRpbWVTdGFtcCkpLmdldFRpbWUoKSA6IDA7XG4gICAgICAgICAgICBjb25zdCB0aW1lc3RhbXBCID0gYi5hZGRpdGlvbmFsUHJvcGVydGllcyAmJiBiLmFkZGl0aW9uYWxQcm9wZXJ0aWVzLnRpbWVTdGFtcCA/IG5ldyBEYXRlKE51bWJlcihiLmFkZGl0aW9uYWxQcm9wZXJ0aWVzLnRpbWVTdGFtcCkpLmdldFRpbWUoKSA6IDA7XG4gICAgICAgICAgICAgXG4gICAgICAgICAgICByZXR1cm4gIHRpbWVzdGFtcEIgLSB0aW1lc3RhbXBBO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICB9KTtcbiAgICAgXG4gICAgICB9XG4gICAgfVxuICAgICBcbiAgfVxuXG4gIHNlYXJjaEZpbHRlckRhdGEoX2VsZTogYW55KXtcblxuICAgIHRoaXMuc2V0Q29sdW1uSXRlbXMoKVxuICAgIGNvbnN0IGJhY2sgPSB0aGlzLmZyYW1ld29ya1NlcnZpY2UuZ2V0UHJldmlvdXNDYXRlZ29yeSh0aGlzLmNvbHVtbi5jb2RlKVxuICAgIGlmKGJhY2sgJiYgYmFjay5jb2RlKSB7XG4gICAgICBsZXQgYmFja0NvbHVtRGF0YSA9IHRoaXMuZnJhbWV3b3JrU2VydmljZS5zZWxlY3Rpb25MaXN0LmdldChiYWNrLmNvZGUpXG4gICAgICBpZihiYWNrQ29sdW1EYXRhLmNhdGVnb3J5KSB7XG4gICAgICAgIHRoaXMuZnJhbWV3b3JrU2VydmljZS5yZW1vdmVPbGRMaW5lKClcbiAgICAgIFxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0aGlzLmZyYW1ld29ya1NlcnZpY2UuY3VycmVudFNlbGVjdGlvbi5uZXh0KHsgdHlwZTogYmFja0NvbHVtRGF0YS5jYXRlZ29yeSwgZGF0YTogYmFja0NvbHVtRGF0YSwgY2FyZFJlZjogYmFja0NvbHVtRGF0YS5jYXJkUmVmIH0pXG4gICAgICAgIH0sIDIwMClcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYodGhpcy5jb2x1bW5JdGVtcz8ubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHRoaXMuZnJhbWV3b3JrU2VydmljZS5yZW1vdmVPbGRMaW5lKClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHRoaXMubWFrZUZpcnN0VGVybVNlbGVjdGVkKClcbiAgICAgICAgfSw1MDApXG4gICAgICB9XG4gICAgfVxuICAgfVxuXG4gIGNsZWFyU2VhcmNoKCkge1xuICAgIHRoaXMuc2VhcmNoVmFsdWUuc2V0VmFsdWUoJycpXG4gIH1cblxuICBsb2FkTW9yZSgpIHtcbiAgICB0aGlzLmN1cnJlbnRMYXN0SW5kZXggPSB0aGlzLmN1cnJlbnRMYXN0SW5kZXggKyB0aGlzLmxpbWl0VG9BZGRcbiAgICB0aGlzLnNlYXJjaEZpbHRlckRhdGEodGhpcy5zZWFyY2hWYWx1ZS52YWx1ZSlcbiAgfVxuXG4gIHNldENvbm5lY3RvcnMoZWxlbWVudENsaWNrZWQ6IGFueSwgY29sdW1uSXRlbTogYW55LCBtb2RlOiBhbnkpIHtcbiAgICB0aGlzLnJlbW92ZUNvbm5lY3RvcnMoZWxlbWVudENsaWNrZWQsICdib3gnICsgKHRoaXMuY29sdW1uLmluZGV4IC0gMSksIHRoaXMuY29sdW1uLmluZGV4IC0gMSlcbiAgICBcbiAgICBpZiAobW9kZSA9PT0gJ0FMTCcpIHtcbiAgICAgIC8vIGxldCB0ZW1wY29ubmVjdG9yTWFwcGluZyA9IHt9XG4gICAgICAvLyB0aGlzLmNvbm5lY3RvclNlcnZpY2UudXBkYXRlQ29ubmVjdG9yc01hcCh0ZW1wY29ubmVjdG9yTWFwcGluZylcbiAgICAgIC8vIHtcbiAgICAgIC8vICAgWydjb2x1bW4nICsgKHRoaXMuY29sdW1uLmluZGV4LSAxKV06ICcnXG5cbiAgICAgIC8vIH1cbiAgICAgIGNvbnN0IGlkcyA9IGNvbHVtbkl0ZW0ubWFwKChfYzogYW55LCBpOiBhbnkpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29sdW1uLmNvZGUgKyAnQ2FyZCcgKyAoaSArIDEpXG4gICAgICB9KVxuICAgICAgdGhpcy5jb25uZWN0b3JNYXBwaW5nWydib3gnICsgKHRoaXMuY29sdW1uLmluZGV4IC0gMSldID0geyBzb3VyY2U6IGVsZW1lbnRDbGlja2VkLCBsaW5lczogKGlkcyB8fCBbXSkubWFwKChpZDogYW55KSA9PiB7IHJldHVybiB7IHRhcmdldDogaWQsIGxpbmU6ICcnLCB0YXJnZXRUeXBlOiAnaWQnIH0gfSkgfVxuICAgICAgdGhpcy5jb25uZWN0b3JTZXJ2aWNlLnVwZGF0ZUNvbm5lY3RvcnNNYXAodGhpcy5jb25uZWN0b3JNYXBwaW5nKVxuICAgICAgXG4gICAgICBjb25zdCBjb25uZWN0aW9uTGluZXMgPSB0aGlzLmNvbm5lY3RvclNlcnZpY2UuX2RyYXdMaW5lKFxuICAgICAgICB0aGlzLmNvbm5lY3Rvck1hcHBpbmdbJ2JveCcgKyAodGhpcy5jb2x1bW4uaW5kZXggLSAxKV0uc291cmNlLFxuICAgICAgICB0aGlzLmNvbm5lY3Rvck1hcHBpbmdbJ2JveCcgKyAodGhpcy5jb2x1bW4uaW5kZXggLSAxKV0ubGluZXMsXG4gICAgICAgIG51bGwsXG4gICAgICAgICcjYm94JyArICh0aGlzLmNvbHVtbi5pbmRleCAtIDEpLFxuICAgICAgICAnI2JveCcgKyB0aGlzLmNvbHVtbi5pbmRleFxuICAgICAgKVxuICAgICAgdGhpcy5jb25uZWN0b3JNYXBwaW5nWydib3gnICsgKHRoaXMuY29sdW1uLmluZGV4IC0gMSldLmxpbmVzID0gY29ubmVjdGlvbkxpbmVzXG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0aGlzLmNvbHVtbi5pbmRleCA+IDEgJiYgdGhpcy5jb25uZWN0b3JNYXBwaW5nWydib3gnICsgKHRoaXMuY29sdW1uLmluZGV4IC0gMSldKSB7XG4gICAgICAgIHRoaXMuY29ubmVjdG9yTWFwcGluZ1snYm94JyArICh0aGlzLmNvbHVtbi5pbmRleCAtIDEpXS5saW5lcyA9IFt7IHRhcmdldDogZWxlbWVudENsaWNrZWQsIGxpbmU6ICcnLCB0YXJnZXRUeXBlOiAnZWxlbWVudCcgfV1cblxuICAgICAgICB0aGlzLmNvbm5lY3RvclNlcnZpY2UudXBkYXRlQ29ubmVjdG9yc01hcCh0aGlzLmNvbm5lY3Rvck1hcHBpbmcpXG4gICAgICAgIGNvbnN0IGNvbm5lY3Rpb25MaW5lcyA9IHRoaXMuY29ubmVjdG9yU2VydmljZS5fZHJhd0xpbmUoXG4gICAgICAgICAgdGhpcy5jb25uZWN0b3JNYXBwaW5nWydib3gnICsgKHRoaXMuY29sdW1uLmluZGV4IC0gMSldLnNvdXJjZSxcbiAgICAgICAgICB0aGlzLmNvbm5lY3Rvck1hcHBpbmdbJ2JveCcgKyAodGhpcy5jb2x1bW4uaW5kZXggLSAxKV0ubGluZXMsXG4gICAgICAgICAgbnVsbCxcbiAgICAgICAgICAnI2JveCcgKyAodGhpcy5jb2x1bW4uaW5kZXggLSAxKSxcbiAgICAgICAgICAnI2JveCcgKyB0aGlzLmNvbHVtbi5pbmRleFxuICAgICAgICApXG4gICAgICAgIHRoaXMuY29ubmVjdG9yTWFwcGluZ1snYm94JyArICh0aGlzLmNvbHVtbi5pbmRleCAtIDEpXS5saW5lcyA9IGNvbm5lY3Rpb25MaW5lc1xuICAgICAgfVxuXG4gICAgfVxuICAgIHRoaXMuY29ubmVjdG9yU2VydmljZS51cGRhdGVDb25uZWN0b3JzTWFwKHRoaXMuY29ubmVjdG9yTWFwcGluZylcblxuICB9XG4gIHJlbW92ZUNvbm5lY3RvcnMoY3VycmVudEVsZW1lbnQ6IGFueSwgcHJldkNvbDogYW55LCBjdXJyZW50SW5kZXg6IGFueSkge1xuICAgIGlmICh0aGlzLmNvbm5lY3Rvck1hcHBpbmcpIHtcbiAgICAgIGZvciAoY29uc3Qga2V5IGluIHRoaXMuY29ubmVjdG9yTWFwcGluZykge1xuICAgICAgICAvLyBSZW1vdmUgYWxsIG4tMSBsaW5lcyBhbmQga2VlcCBvbmx5IGN1cnJlbnQgc2VsZWN0aW9uLCBhbHNvIGNsZWFyIG4rMSBsaW5lc1xuICAgICAgICBpZiAodGhpcy5jb25uZWN0b3JNYXBwaW5nW2tleV0gJiYgdGhpcy5jb25uZWN0b3JNYXBwaW5nW2tleV0ubGluZXMgJiYgdGhpcy5jb25uZWN0b3JNYXBwaW5nW2tleV0ubGluZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGNvbnN0IGxpbmVzID0gdGhpcy5jb25uZWN0b3JNYXBwaW5nW2tleV0ubGluZXNcbiAgICAgICAgICBsaW5lcy5mb3JFYWNoKGFzeW5jIChlbGVtZW50OiBhbnksIGluZGV4OiBhbnkpID0+IHtcbiAgICAgICAgICAgIGlmIChlbGVtZW50ICE9IGN1cnJlbnRFbGVtZW50ICYmIHByZXZDb2wgPT0ga2V5KSB7XG4gICAgICAgICAgICAgIGF3YWl0IGVsZW1lbnQubGluZSAmJiBlbGVtZW50LmxpbmUucmVtb3ZlKCk7XG4gICAgICAgICAgICAgIGxpbmVzLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdGhpcy5jb25uZWN0b3JNYXBwaW5nW2tleV0ubGluZXMgPSBsaW5lc1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gcmVtb3ZlIGFsbCBuKzIgbGluZXMsIGlmIGNsaWNrcyBwcmV2aW91cyBjb2x1bW5zIGFuZCB0cmVlIHdhcyBhbHJlYWR5IGRyaWxsZWQgZG93blxuICAgICAgICBsZXQgY291bnQgPSBjdXJyZW50SW5kZXggKyAyO1xuICAgICAgICBsZXQgbmV4dENvbCA9IGBib3gke2NvdW50fWBcbiAgICAgICAgaWYgKHRoaXMuY29ubmVjdG9yTWFwcGluZ1tuZXh0Q29sXSAmJiB0aGlzLmNvbm5lY3Rvck1hcHBpbmdbbmV4dENvbF0ubGluZXMgJiYgdGhpcy5jb25uZWN0b3JNYXBwaW5nW25leHRDb2xdLmxpbmVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBjb25zdCBsaW5lcyA9IHRoaXMuY29ubmVjdG9yTWFwcGluZ1tuZXh0Q29sXS5saW5lc1xuICAgICAgICAgIGxpbmVzLmZvckVhY2goYXN5bmMgKGVsZW1lbnQ6IGFueSwgaW5kZXg6IGFueSkgPT4ge1xuICAgICAgICAgICAgYXdhaXQgZWxlbWVudC5saW5lICYmIGVsZW1lbnQubGluZS5yZW1vdmUoKTtcbiAgICAgICAgICAgIGxpbmVzLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgICAgfSlcbiAgICAgICAgICB0aGlzLmNvbm5lY3Rvck1hcHBpbmdbbmV4dENvbF0ubGluZXMgPSBudWxsXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgIH1cbiAgfVxuICBzZWxlY3RlZENhcmQoZXZlbnQ6IGFueSl7XG4gICAgdGhpcy51cGRhdGVUZXJtTGlzdC5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIGdldCBzaG93TG9hZE1vcmVCdG4oKTogYm9vbGVhbiB7XG4gICAgaWYodGhpcy5jb2x1bW4gJiYgdGhpcy5jb2x1bW4uY29uZmlnICYmIHRoaXMuY29sdW1uLmNvbmZpZy5jYXRlZ29yeURpc3BsYXlOYW1lICE9PSAnT3JnYW5pc2F0aW9uJyBcbiAgICAgICYmIHRoaXMuY29sdW1uLm5hbWUgIT09ICdPcmdhbmlzYXRpb24nICYmIHRoaXMuY29sdW1uSXRlbXMgJiYgdGhpcy5jb2x1bW5JdGVtcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgICB9XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICBnZXQgZGlzYWJsZUxvYWRCdXR0b24oKTogYm9vbGVhbiB7XG4gICAgaWYodGhpcy5maWx0ZXJlZENvbHVtbkl0ZW1zICYmIHRoaXMuZmlsdGVyZWRDb2x1bW5JdGVtcy5sZW5ndGggPCB0aGlzLmN1cnJlbnRMYXN0SW5kZXgpIHtcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY2hpbGRTdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMuY2hpbGRTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKVxuICAgIH1cbiAgICBpZih0aGlzLm5ld1Rlcm1TdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMubmV3VGVybVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpXG4gICAgfVxuICB9XG5cbiAgY2FyZEFjdGlvbkVtaXQoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuY2FyZEFjdGlvbi5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIG1ha2VGaXJzdFRlcm1TZWxlY3RlZCgpIHtcbiAgICBjb25zdCBmaXJzdExpc3RJdGVtID0gdGhpcy5mcmFtZXdvcmtTZXJ2aWNlLmxpc3QuZW50cmllcygpLm5leHQoKS52YWx1ZSBhcyBhbnlcbiAgICBpZihmaXJzdExpc3RJdGVtICYmIGZpcnN0TGlzdEl0ZW0ubGVuZ3RoID49IDIpe1xuICAgICAgaWYoZmlyc3RMaXN0SXRlbVsxXSAmJiBmaXJzdExpc3RJdGVtWzFdLmNoaWxkcmVuICYmIGZpcnN0TGlzdEl0ZW1bMV0uY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IGZpcnN0VGVybSA9IGZpcnN0TGlzdEl0ZW1bMV0uY2hpbGRyZW5bMF0gYXMgYW55XG4gICAgICAgIGNvbnN0IGNhcmRSZWYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChmaXJzdFRlcm0ubmFtZSlcbiAgICAgICAgLy8gdGhpcy5jYXRlZ29yeUxpc3QgPSBbXVxuICAgICAgICBmaXJzdFRlcm0uc2VsZWN0ZWQgPSB0cnVlXG4gICAgICAgIHRoaXMuZnJhbWV3b3JrU2VydmljZS5jYXJkQ2xrRGF0YSA9IGZpcnN0VGVybTtcbiAgICAgICAgdGhpcy5mcmFtZXdvcmtTZXJ2aWNlLkN1cnJlbnRDYXJkQ2xrLm5leHQoZmlyc3RUZXJtLmNhdGVnb3J5KVxuICAgICAgICB0aGlzLmZyYW1ld29ya1NlcnZpY2UuY3VycmVudFNlbGVjdGlvbi5uZXh0KHsgdHlwZTogZmlyc3RUZXJtLmNhdGVnb3J5LCBkYXRhOiBmaXJzdFRlcm0sIGNhcmRSZWYgfSlcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgXG59IiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbj8uY29uZmlnPy5zaG93U2VhcmNoXCI+XG4gICAgPGRpdiBjbGFzcz1cInctZnVsbCBzdGlja3lcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNlYXJjaCBtYi01XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicnNlYXJjaFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaW5wdXQgbWF0LWZpZWxkLXJvdW5kZWQgZmxleCBmbGV4LW1pZGRsZVwiPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJzZWFyY2gtaWNvblwiPnNlYXJjaDwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwic2VhcmNoXCIgW2Zvcm1Db250cm9sXT1cInNlYXJjaFZhbHVlXCIgcGxhY2Vob2xkZXI9XCJTZWFyY2hcIiAjc2VhcmNoPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwic2VhcmNoLnZhbHVlXCIgY2xhc3M9XCJjbGVhci1idG4gZmxleFwiIChjbGljayk9XCJjbGVhclNlYXJjaCgpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+Y2xlYXI8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvbmctY29udGFpbmVyPlxuPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbkl0ZW1zICYmIGNvbHVtbkl0ZW1zLmxlbmd0aCA+IDA7IGVsc2Ugbm9EYXRhVGVtcGxhdGU7XCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY2hpbGQgb2YgY29sdW1uSXRlbXM7IGxldCBqID0gaW5kZXhcIj5cbiAgICAgICAgPGRpdiAjY2FyZEVsZSBpZD1cInt7Y29sdW1uLmNvZGV9fUNhcmR7e2orMX19XCIgPlxuICAgICAgICAgICAgPGxpYi10ZXJtLWNhcmRcbiAgICAgICAgICAgICAgICBbZGF0YV09XCJ7J2NoaWxkcmVuJzogY2hpbGQsICdzZWxlY3RlZCcgOiBmYWxzZSwgJ2NhdGVnb3J5Jzpjb2x1bW4uY29kZSwgY2FyZFN1YlR5cGU6ICdtaW5pbWFsJywgaXNWaWV3T25seTpmYWxzZSwnaW5kZXgnOmNvbHVtbi5pbmRleCwgY29sdW1uSW5mbzogY29sdW1ufVwiXG4gICAgICAgICAgICAgICAgW2VuYWJsZVRocmVlRG90c109XCIoaXNDaGlsZE9yZyAmJiBjaGlsZE9yZy5jaGFubmVsID09PSBjaGlsZC5uYW1lKSA/IHRydWUgOiAoaXNDaGlsZE9yZykgPyBmYWxzZSA6IHRydWVcIlxuICAgICAgICAgICAgICAgIFtjaGVja0lmQ2hpbGRPcmddPVwiaXNDaGlsZE9yZ1wiXG4gICAgICAgICAgICAgICAgKGlzU2VsZWN0ZWQpPVwidXBkYXRlU2VsZWN0aW9uMSgkZXZlbnQpXCIgKHNlbGVjdGVkQ2FyZCk9XCJzZWxlY3RlZENhcmQoJGV2ZW50KVwiIChjYXJkQWN0aW9uKT1cImNhcmRBY3Rpb25FbWl0KCRldmVudClcIj5cbiAgICAgICAgICAgIDwvbGliLXRlcm0tY2FyZD5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG48L25nLWNvbnRhaW5lcj5cbjxuZy10ZW1wbGF0ZSAjbm9EYXRhVGVtcGxhdGUgPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWFyY2hWYWx1ZT8udmFsdWVcIj5cbiAgICA8ZGl2Pk5vIERhdGEgZm91bmQ8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG5cbjxkaXYgY2xhc3M9XCJ3LWZ1bGwgZmxleCBqdXN0aWZ5LWNlbnRlclwiICpuZ0lmPVwiIWRpc2FibGVMb2FkQnV0dG9uXCI+XG4gICAgPGJ1dHRvbiAoY2xpY2spPVwibG9hZE1vcmUoKVwiIGNsYXNzPVwibWF0LXJhaXNlZC1idXR0b24gbWF0LWJ1dHRvbi1iYXNlIGxvYWRNb3JlXCIgW25nQ2xhc3NdPVwieydkaXNhYmxCdG4nOiBkaXNhYmxlTG9hZEJ1dHRvbn1cIlxuICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlTG9hZEJ1dHRvblwiPkxvYWQgbW9yZS4uLjwvYnV0dG9uPlxuPC9kaXY+XG4iXX0=
|