gamma-app-controller 2.0.4 → 2.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -107,7 +107,7 @@ export class CreateKpiTreeComponent {
107
107
  }
108
108
  getEditableKpi(kpi) {
109
109
  const data = this.kpiConfigDataSource.find((item) => item.kpiId === kpi.id);
110
- const tidKey = data.tagType === 'child' && data.childTid.length > 3 ? 'childTid' : 'parentTid';
110
+ const tidKey = data.tagType === 'child' && data.childTid && data.childTid.length > 3 ? 'childTid' : 'parentTid';
111
111
  const parentName = this.keiParentDataSource.find((item) => item[tidKey] == data["parentTid"]);
112
112
  this.parante_kpi_name = parentName ? parentName['kpiId'] : null;
113
113
  this.selected_id = data["kpiId"];
@@ -249,7 +249,7 @@ export class CreateKpiTreeComponent {
249
249
  icon: menu.icon,
250
250
  type: menu.kpiType,
251
251
  tagType: menu.tagType,
252
- visibility: menu.visibility,
252
+ visibility: true,
253
253
  ...(menu.link && { link: menu.link.replace(/^\/+/, '') }),
254
254
  children: []
255
255
  });
@@ -274,4 +274,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
274
274
  type: Component,
275
275
  args: [{ selector: 'app-create-kpi', template: "<app-loading *ngIf=\"loadingModal\"></app-loading>\n<div class=\"p-4 flex flex-row w-full\" *ngIf=\"!loadingModal\">\n <div class=\"mx-2 bg-white dark:bg-transparent border-r\">\n <!-- <ng-container *ngIf=\"isKpiTreePrepared\"> -->\n <treeview class=\"dark bg-gray-900 dark:bg-transparent\" [name]=\"'mainNavigation'\" [routeKey]=\"'raKpi'\"\n [navigation]=\"kpiData\" [isSearchBox]=\"false\" [isEditIcon]=\"true\"\n (editableKpiData)=\"getEditableKpi($event)\">\n </treeview>\n <!-- </ng-container> -->\n\n </div>\n <div class=\"mx-2 w-full\">\n <!-- <div class=\"flex flex-row item-center justify-center my-8\">\n <button class=\"{{commonService.btn_warning_md}}\" (click)=\"addNewKpi()\">Add New KPI</button>\n <button class=\"{{commonService.btn_primary_md}}\" (click)=\"routeToKpiConfig()\"\n routerLinkActive=\"router-link-active\">Configure KPI</button>\n </div> -->\n <!-- <ng-container *ngIf=\"isNewKpiAdded\"> -->\n <!-- <div class=\"px-2 w-full\"> -->\n <div class=\"m-1\">\n <div class=\"px-2 pt-1 w-full\">\n <p class=\"text-lg mt-2\">Name</p>\n <dx-text-box [(ngModel)]=\"select_kpi_name\"></dx-text-box>\n </div>\n </div>\n <div class=\"flex flex-row w-full\">\n <div class=\"m-1 w-1/3\">\n <div class=\"px-2 pt-1 w-full\">\n <p class=\"text-lg mt-2\"> Tag Type</p>\n <dx-select-box [dataSource]=\"tagType\" [(ngModel)]=\"select_tag_type\"\n (onValueChanged)=\"addTagtypeValue($event)\"></dx-select-box>\n </div>\n </div>\n <!-- (onCustomItemCreating)=\"onCustomDimentionCreating($event)\" -->\n <div class=\"m-1 w-full\">\n <div class=\"px-2 pt-1 w-full\">\n <p class=\"text-lg mt-2\">Aliases</p>\n <dx-tag-box [acceptCustomValue]=\"true\" [(ngModel)]=\"selected_aliases\"></dx-tag-box>\n </div>\n </div>\n </div>\n <div class=\"m-1\">\n <div class=\"px-2 pt-1 w-full\">\n <p class=\"text-lg mt-2\">Page ID</p>\n <!-- <dx-text-box [(ngModel)]=\"selected_page_id\"></dx-text-box> -->\n <dx-select-box [items]=\"templateDataSource\" valueExpr=\"pageId\" displayExpr=\"pageName\"\n [searchEnabled]=\"true\" [(ngModel)]=\"selected_page_id\"></dx-select-box>\n </div>\n </div>\n <div class=\"m-1\">\n <div class=\"px-2 pt-1 w-full\">\n <p class=\"text-lg mt-2\">Description</p>\n <dx-html-editor height=\"'auto'\" [(ngModel)]=\"selected_desc\">\n <dxo-toolbar [multiline]=\"false\">\n\n <dxi-item name=\"size\" [acceptedValues]=\"['8pt', '10pt', '12pt', '14pt', '18pt', '24pt', '36pt']\"\n [options]=\"{ inputAttr: { 'aria-label': 'Font size' } }\"></dxi-item>\n <dxi-item name=\"font\" [acceptedValues]=\"[\n 'Arial',\n 'Courier New',\n 'Georgia',\n 'Impact',\n 'Lucida Console',\n 'Tahoma',\n 'Times New Roman',\n 'Verdana'\n ]\" [options]=\"{ inputAttr: { 'aria-label': 'Font family' } }\"></dxi-item>\n <dxi-item name=\"separator\"></dxi-item>\n <dxi-item name=\"bold\"></dxi-item>\n <dxi-item name=\"italic\"></dxi-item>\n <dxi-item name=\"underline\"></dxi-item>\n <dxi-item name=\"separator\"></dxi-item>\n <dxi-item name=\"alignLeft\"></dxi-item>\n <dxi-item name=\"alignCenter\"></dxi-item>\n <dxi-item name=\"alignRight\"></dxi-item>\n <dxi-item name=\"alignJustify\"></dxi-item>\n <dxi-item name=\"separator\"></dxi-item>\n <dxi-item name=\"orderedList\"></dxi-item>\n <dxi-item name=\"bulletList\"></dxi-item>\n <dxi-item name=\"separator\"></dxi-item>\n <dxi-item name=\"header\" [acceptedValues]=\"[false, 1, 2, 3, 4, 5]\"\n [options]=\"{ inputAttr: { 'aria-label': 'Header' } }\"></dxi-item>\n <dxi-item name=\"separator\"></dxi-item>\n <dxi-item name=\"color\"></dxi-item>\n <dxi-item name=\"background\"></dxi-item>\n <dxi-item name=\"separator\"></dxi-item>\n <dxi-item name=\"link\"></dxi-item>\n <dxi-item name=\"image\"></dxi-item>\n <dxi-item name=\"separator\"></dxi-item>\n <dxi-item name=\"clear\"></dxi-item>\n <dxi-item name=\"codeBlock\"></dxi-item>\n </dxo-toolbar>\n <dxo-media-resizing [enabled]=\"true\"> </dxo-media-resizing>\n <dxo-image-upload [tabs]=\"['file', 'url']\" fileUploadMode=\"base64\">\n </dxo-image-upload>\n </dx-html-editor>\n </div>\n </div>\n\n\n <div class=\"flex flex-row w-full\">\n <div class=\"m-1 w-full\">\n <div class=\"px-2 pt-1 w-full\">\n <p class=\"text-lg mt-2\"> Parent Component </p>\n <dx-select-box [items]=\"keiParentDataSource\" displayExpr=\"kpiName\" valueExpr=\"kpiId\"\n (onValueChanged)=\"getKpiItemValue($event)\" [(ngModel)]=\"parante_kpi_name\"></dx-select-box>\n </div>\n </div>\n <div class=\"m-1 w-full\">\n <div class=\"px-2 pt-1 w-full\">\n <p class=\"text-lg mt-2\">Parent TID</p>\n <dx-text-box [(ngModel)]=\"selected_kpi_tid\" [readOnly]=\"false\"></dx-text-box>\n </div>\n </div>\n <div class=\"m-1 w-full\">\n <div class=\"px-2 pt-1 w-full\">\n <p class=\"text-lg mt-2\">Child TID</p>\n <dx-text-box [(ngModel)]=\"selected_kpi_child_tid\" [readOnly]=\"false\"></dx-text-box>\n </div>\n </div>\n </div>\n\n <div class=\"flex flex-row justify-between mt-3\">\n <div class=\"px-2 pt-1 w-full\">\n <dx-check-box [(ngModel)]=\"kpi_visibility\" text=\"Visibility\"></dx-check-box>\n </div>\n <div class=\"px-2 pt-1 w-full\">\n <dx-check-box [(ngModel)]=\"kpi_external\" text=\"External KPI\"></dx-check-box>\n </div>\n </div>\n <!-- <div class=\"m-1\">\n <div class=\"px-2 pt-1 w-full\">\n <p class=\"text-lg mt-2\">KPI Info</p>\n <dx-html-editor height=\"'auto'\" [(ngModel)]=\"selected_info\">\n <dxo-toolbar [multiline]=\"false\">\n\n <dxi-item name=\"size\"\n [acceptedValues]=\"['8pt', '10pt', '12pt', '14pt', '18pt', '24pt', '36pt']\"\n [options]=\"{ inputAttr: { 'aria-label': 'Font size' } }\"></dxi-item>\n <dxi-item name=\"font\" [acceptedValues]=\"[\n 'Arial',\n 'Courier New',\n 'Georgia',\n 'Impact',\n 'Lucida Console',\n 'Tahoma',\n 'Times New Roman',\n 'Verdana'\n ]\"\n [options]=\"{ inputAttr: { 'aria-label': 'Font family' } }\"></dxi-item>\n <dxi-item name=\"separator\"></dxi-item>\n <dxi-item name=\"bold\"></dxi-item>\n <dxi-item name=\"italic\"></dxi-item>\n <dxi-item name=\"underline\"></dxi-item>\n <dxi-item name=\"separator\"></dxi-item>\n <dxi-item name=\"alignLeft\"></dxi-item>\n <dxi-item name=\"alignCenter\"></dxi-item>\n <dxi-item name=\"alignRight\"></dxi-item>\n <dxi-item name=\"alignJustify\"></dxi-item>\n <dxi-item name=\"separator\"></dxi-item>\n <dxi-item name=\"orderedList\"></dxi-item>\n <dxi-item name=\"bulletList\"></dxi-item>\n <dxi-item name=\"separator\"></dxi-item>\n <dxi-item name=\"header\" [acceptedValues]=\"[false, 1, 2, 3, 4, 5]\"\n [options]=\"{ inputAttr: { 'aria-label': 'Header' } }\"></dxi-item>\n <dxi-item name=\"separator\"></dxi-item>\n <dxi-item name=\"color\"></dxi-item>\n <dxi-item name=\"background\"></dxi-item>\n <dxi-item name=\"separator\"></dxi-item>\n <dxi-item name=\"link\"></dxi-item>\n <dxi-item name=\"image\"></dxi-item>\n <dxi-item name=\"separator\"></dxi-item>\n <dxi-item name=\"clear\"></dxi-item>\n <dxi-item name=\"codeBlock\"></dxi-item>\n </dxo-toolbar>\n <dxo-media-resizing [enabled]=\"true\"> </dxo-media-resizing>\n <dxo-image-upload [tabs]=\"['file', 'url']\" fileUploadMode=\"base64\">\n </dxo-image-upload>\n </dx-html-editor>\n </div>\n </div> -->\n\n <app-user-access [(userOptionContainer)]=\"userOptionContainer\">\n </app-user-access>\n\n <div class=\"flex flex-auto mt-5 justify-end\">\n <button class=\"{{commonService.btn_success_md}}\" (click)=\"getUpdateKpi()\" *ngIf=\"isEditKpiAdded\">Update KPI\n </button>\n <button class=\"{{commonService.btn_danger_md}}\" (click)=\"getDeletKpi()\" *ngIf=\"isEditKpiAdded\">Delete KPI\n </button>\n <button class=\"{{commonService.btn_success_md}}\" (click)=\"makeNewKpiWithUserEntity()\" *ngIf=\"!isEditKpiAdded\">Create KPI\n </button>\n <button class=\"{{commonService.btn_warning_md}}\" (click)=\"getReseteKpi()\">Reset</button>\n\n </div>\n <!-- </div> -->\n <!-- </ng-container> -->\n </div>\n\n\n\n\n</div>", styles: [":host ::ng-deep treeview .treeview-wrapper{width:100%!important}\n"] }]
276
276
  }], ctorParameters: function () { return [{ type: i1.CommonService }, { type: i2.FormBuilder }, { type: i3.CreateKpIService }, { type: i4.ToastrService }, { type: i5.Router }]; } });
277
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWtwaS10cmVlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dhbW1hLWFwcC1jb250cm9sbGVyL3NyYy9saWIvdGVtcGxhdGUtbW9kdWxlL0twaUNyZWF0aW9uTW9kdWxlL2NyZWF0ZS1rcGktdHJlZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9nYW1tYS1hcHAtY29udHJvbGxlci9zcmMvbGliL3RlbXBsYXRlLW1vZHVsZS9LcGlDcmVhdGlvbk1vZHVsZS9jcmVhdGUta3BpLXRyZWUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFhbEQsTUFBTSxPQUFPLHNCQUFzQjtJQTZDakMsWUFDUyxhQUE0QixFQUFVLFdBQXdCLEVBQzdELE9BQXlCLEVBQVUsTUFBcUIsRUFDeEQsTUFBYztRQUZmLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQVUsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDN0QsWUFBTyxHQUFQLE9BQU8sQ0FBa0I7UUFBVSxXQUFNLEdBQU4sTUFBTSxDQUFlO1FBQ3hELFdBQU0sR0FBTixNQUFNLENBQVE7UUEvQ3hCLGlCQUFZLEdBQVksSUFBSSxDQUFDO1FBQzdCLHdCQUFtQixHQUFRLEVBQUUsQ0FBQztRQUU5QixZQUFPLEdBQUcsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDOUIsb0JBQWUsR0FBRyxFQUFFLENBQUM7UUFDckIsbUJBQWMsR0FBUSxFQUFFLENBQUM7UUFXekIsV0FBTSxHQUFHLEVBQUUsQ0FBQztRQUNaLFlBQU8sR0FBUSxFQUFFLENBQUM7UUFFbEIsbUJBQWMsR0FBWSxLQUFLLENBQUM7UUFDaEMsa0JBQWEsR0FBWSxLQUFLLENBQUM7UUFDL0IsbUJBQWMsR0FBWSxLQUFLLENBQUM7UUFFaEMsa0JBQWEsR0FBRyxFQUFFLENBQUM7UUFDbkIsa0JBQWEsR0FBRyxFQUFFLENBQUM7UUFPbkIsbUJBQWMsR0FBWSxLQUFLLENBQUM7UUFDaEMsaUJBQVksR0FBWSxLQUFLLENBQUM7UUFFOUIsc0JBQWlCLEdBQVksS0FBSyxDQUFDO1FBR25DLHdCQUFtQixHQUFRLEVBQUUsQ0FBQztRQUU5QixxQkFBZ0IsR0FBUSxFQUFFLENBQUM7UUFDM0Isc0JBQWlCLEdBQVksS0FBSyxDQUFDO1FBRW5DLHdCQUFtQixHQUFRLEVBQUUsQ0FBQztJQU85QixDQUFDO0lBRUQsUUFBUTtRQUVOLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsSUFBSSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLFNBQVMsQ0FBQztZQUN6QyxJQUFJLEVBQUUsQ0FBQyxJQUFTLEVBQUUsRUFBRTtnQkFDbEIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQztZQUNqQyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsR0FBUSxFQUFFLEVBQUU7Z0JBQ3JCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLDJEQUEyRCxFQUFFLFNBQVMsQ0FBQyxDQUFBO1lBRTNGLENBQUM7U0FDRixDQUFDLENBQUE7SUFDSixDQUFDO0lBRUQsYUFBYTtRQUVYLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxFQUFFLENBQUM7UUFDOUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFO1lBQ3pELE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQztZQUN6QixJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDO1lBQ2hDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDbEQsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7WUFFMUIsSUFBSSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxDQUFBO1FBRXBDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRTtZQUNQLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1lBQzFCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLDJEQUEyRCxFQUFFLFlBQVksQ0FBQyxDQUFBO1FBQzlGLENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVELHVCQUF1QixDQUFDLElBQUk7UUFDMUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQVcsRUFBRSxFQUFFO1lBQzNCLElBQUksTUFBTSxDQUFDLE9BQU8sSUFBSSxRQUFRLEVBQUU7Z0JBTzlCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7YUFDdkM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFHRCx3QkFBd0I7UUFDdEIsTUFBTSxRQUFRLEdBQUcsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBRXJJLElBQUksTUFBTSxHQUFHO1lBQ1gsT0FBTyxFQUFFLElBQUksQ0FBQyxXQUFXO1lBQ3pCLFNBQVMsRUFBRSxJQUFJLENBQUMsZUFBZTtZQUMvQixTQUFTLEVBQUUsSUFBSSxDQUFDLGdCQUFnQjtZQUNoQyxRQUFRLEVBQUUsSUFBSSxDQUFDLGdCQUFnQjtZQUMvQixhQUFhLEVBQUUsSUFBSSxDQUFDLGFBQWE7WUFDakMsU0FBUyxFQUFFLEVBQUU7WUFDYixTQUFTLEVBQUUsSUFBSSxDQUFDLGVBQWU7WUFDL0IsUUFBUSxFQUFFLElBQUk7WUFDZCxZQUFZLEVBQUUsSUFBSSxDQUFDLGNBQWM7WUFDakMsYUFBYSxFQUFFLElBQUksQ0FBQyxZQUFZO1lBQ2hDLFFBQVEsRUFBRSxFQUFFO1lBQ1osTUFBTSxFQUFFLEVBQUU7WUFDVixLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ3ZDLFNBQVMsRUFBRSxJQUFJLENBQUMsZUFBZSxJQUFJLFFBQVEsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxPQUFPO1lBQ3JFLFdBQVcsRUFBRSxJQUFJLENBQUMsZ0JBQWdCO1lBQ2xDLFVBQVUsRUFBRSxJQUFJLENBQUMsc0JBQXNCO1lBQ3ZDLGFBQWEsRUFBRSxJQUFJLENBQUMsbUJBQW1CO1NBQ3hDLENBQUE7UUFFRCxJQUFJLENBQUMsT0FBTyxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUN6RCxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQywwQkFBMEIsQ0FBQyxDQUFBO1lBQy9DLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDdEIsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFO1lBQ1AsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsMkRBQTJELEVBQUUsWUFBWSxDQUFDLENBQUE7UUFDOUYsQ0FBQyxDQUFDLENBQUE7UUFFRixPQUFPLENBQUMsR0FBRyxDQUFDLDJCQUEyQixFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFRCxjQUFjLENBQUMsR0FBUTtRQUVyQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxLQUFLLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUtqRixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxLQUFLLE9BQU8sSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDO1FBQy9GLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQzlDLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUNqRCxDQUFDO1FBQ0YsSUFBSSxDQUFDLGdCQUFnQixHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFHaEUsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDakMsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDdkMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN4QyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDMUMsSUFBSSxDQUFDLHNCQUFzQixHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUMvQyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDOUcsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7SUFFN0IsQ0FBQztJQUVELFlBQVk7UUFDVixNQUFNLFFBQVEsR0FBRyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFFckksSUFBSSxNQUFNLEdBQUc7WUFDWCxPQUFPLEVBQUUsSUFBSSxDQUFDLFdBQVc7WUFDekIsU0FBUyxFQUFFLElBQUksQ0FBQyxlQUFlO1lBQy9CLFNBQVMsRUFBRSxJQUFJLENBQUMsZ0JBQWdCO1lBQ2hDLFFBQVEsRUFBRSxJQUFJLENBQUMsZ0JBQWdCO1lBQy9CLGFBQWEsRUFBRSxJQUFJLENBQUMsYUFBYTtZQUNqQyxTQUFTLEVBQUUsRUFBRTtZQUNiLFNBQVMsRUFBRSxJQUFJLENBQUMsZUFBZTtZQUMvQixRQUFRLEVBQUUsSUFBSTtZQUNkLFlBQVksRUFBRSxJQUFJLENBQUMsY0FBYztZQUNqQyxhQUFhLEVBQUUsSUFBSSxDQUFDLFlBQVk7WUFDaEMsUUFBUSxFQUFFLEVBQUU7WUFDWixNQUFNLEVBQUUsRUFBRTtZQUNWLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDdkMsU0FBUyxFQUFFLElBQUksQ0FBQyxlQUFlLElBQUksUUFBUSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLE9BQU87WUFDckUsV0FBVyxFQUFFLElBQUksQ0FBQyxnQkFBZ0I7WUFDbEMsVUFBVSxFQUFFLElBQUksQ0FBQyxzQkFBc0I7WUFDdkMsYUFBYSxFQUFFLElBQUksQ0FBQyxtQkFBbUI7U0FDeEMsQ0FBQTtRQUVELElBQUksQ0FBQyxPQUFPLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ3pELElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLDBCQUEwQixDQUFDLENBQUE7WUFDL0MsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztRQUU5QixDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUU7WUFDUCxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQywyREFBMkQsRUFBRSxZQUFZLENBQUMsQ0FBQTtRQUM5RixDQUFDLENBQUMsQ0FBQTtRQUVGLE9BQU8sQ0FBQyxHQUFHLENBQUMsMkJBQTJCLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVELHlCQUF5QixDQUFDLElBQUk7UUFDNUIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUMzQixJQUFJLENBQUMsVUFBVSxHQUFHLFFBQVEsQ0FBQztRQUMzQixNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksS0FBSyxRQUFRLENBQUMsQ0FBQztRQUNuRixJQUFJLENBQUMsa0JBQWtCLEVBQUU7WUFDdkIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUN6QztJQUNILENBQUM7SUFJRCxZQUFZO1FBQ1YsSUFBSSxDQUFDLGVBQWUsR0FBRyxFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLGVBQWUsR0FBRyxFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxFQUFFLENBQUM7UUFDM0IsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEVBQUUsQ0FBQztRQUM1QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsRUFBRSxDQUFDO1FBQzVCLElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxFQUFFLENBQUM7UUFDM0IsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxFQUFFLENBQUM7UUFDakMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztRQUMxQixJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztRQUM1QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO1FBQy9CLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO0lBQzlCLENBQUM7SUFHRCxlQUFlLENBQUMsQ0FBQztRQUNmLElBQUksQ0FBQyxlQUFlLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUNqQyxDQUFDO0lBRUQsZUFBZSxDQUFDLENBQUM7UUFDZixJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUU7WUFDWCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN0RixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsZUFBZSxLQUFLLE9BQU8sSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQztZQUNsRyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQzFDO0lBRUgsQ0FBQztJQUdELFNBQVM7UUFDUCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztRQUMxQixJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztJQUM5QixDQUFDO0lBQ0QsWUFBWTtRQUNWLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO0lBQzlCLENBQUM7SUFJRCxpQkFBaUIsQ0FBQyxLQUFLO1FBQ3JCLE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDekMsSUFBSSxTQUFTLEtBQUssQ0FBQyxDQUFDLEVBQUU7WUFDcEIsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUNELE9BQU8sS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUdELFdBQVc7UUFDVCxJQUFJLENBQUMsT0FBTyxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDbkUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsMEJBQTBCLENBQUMsQ0FBQTtZQUMvQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3RCLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRTtZQUNQLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLDJEQUEyRCxFQUFFLFlBQVksQ0FBQyxDQUFBO1FBQzlGLENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUdELG1CQUFtQjtRQUNqQixJQUFJLENBQUMsYUFBYSxHQUFHLFNBQVMsQ0FBQztRQUMvQixJQUFJLENBQUMsYUFBYSxHQUFHLFNBQVMsQ0FBQztRQUMvQixJQUFJLENBQUMsaUJBQWlCLEdBQUcsU0FBUyxDQUFDO1FBQ25DLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxTQUFTLENBQUM7UUFDbkMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLFNBQVMsQ0FBQztRQUNsQyxJQUFJLENBQUMsV0FBVyxHQUFHLFNBQVMsQ0FBQztRQUM3QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsU0FBUyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxZQUFZO1FBQ1YsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7UUFDekIsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7UUFDNUIsSUFBSSxHQUFHLEdBQUcsRUFBRSxhQUFhLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFBO1FBQ3pDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDakIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQztRQUMvQixJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDOUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN0QixDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFHRCxhQUFhLENBQUMsUUFBZ0IsRUFBRSxPQUFjO1FBSzVDLElBQUksYUFBYSxHQUFHLE9BQU8sQ0FBQztRQUU1QixNQUFNLE9BQU8sR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQzFCLE1BQU0sUUFBUSxHQUFVLEVBQUUsQ0FBQztRQUUzQixhQUFhLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQzNCLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO2dCQUMzQyxFQUFFLEVBQUUsSUFBSSxDQUFDLEtBQUs7Z0JBQ2QsS0FBSyxFQUFFLElBQUksQ0FBQyxPQUFPO2dCQUNuQixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7Z0JBQ2YsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPO2dCQUNsQixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87Z0JBQ3JCLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVTtnQkFDM0IsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUM7Z0JBQ3pELFFBQVEsRUFBRSxFQUFFO2FBQ2IsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFFSCxhQUFhLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQzFCLElBQUksR0FBRyxDQUFDLFNBQVMsSUFBSSxHQUFHLENBQUMsUUFBUSxFQUFFO2dCQUNqQyxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDMUMsSUFBSSxNQUFNLEVBQUU7b0JBQ1YsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztpQkFDakQ7YUFDRjtpQkFBTTtnQkFDTCxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7YUFDM0M7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7O21IQWxWVSxzQkFBc0I7dUdBQXRCLHNCQUFzQixzRENibkMsdTBXQTBNTTsyRkQ3TE8sc0JBQXNCO2tCQUxsQyxTQUFTOytCQUNFLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBGb3JtQXJyYXksIEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgVG9hc3RyU2VydmljZSB9IGZyb20gJ25neC10b2FzdHInO1xuaW1wb3J0IHsgUm91dGVyLCBSb3V0ZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQ3JlYXRlS3BJU2VydmljZSB9IGZyb20gJy4vY3JlYXRlS3BpLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29tbW9uU2VydmljZSB9IGZyb20gJy4uLy4uL2FwcGxpY2F0aW9uLWNvbnRyb2xsZXIvY29tbW9uJztcblxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtY3JlYXRlLWtwaScsXG4gIHRlbXBsYXRlVXJsOiAnLi9jcmVhdGUta3BpLXRyZWUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jcmVhdGUta3BpLXRyZWUuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBDcmVhdGVLcGlUcmVlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgbG9hZGluZ01vZGFsOiBib29sZWFuID0gdHJ1ZTtcbiAga2VpUGFyZW50RGF0YVNvdXJjZTogYW55ID0gW107XG4gIG15Rm9ybTogRm9ybUdyb3VwO1xuICB0YWdUeXBlID0gW1wicGFyZW50XCIsIFwiY2hpbGRcIl07XG4gIGtwaV9jb25zdHJ1Y3RvciA9IFtdO1xuICBzZWxlY3RlZF9wX2twaTogYW55ID0ge307XG5cbiAgc2VsZWN0X2twaV9uYW1lOiBhbnk7XG4gIHNlbGVjdF90YWdfdHlwZTogYW55O1xuICBzZWxlY3RlZF9pZDogYW55O1xuICBzZWxlY3RlZF9wYWdlX2lkOiBhbnk7XG4gIHNlbGVjdGVkX25lc3RlZF9uYW1lOiBhbnk7XG4gIHNlbGVjdGVkX2twaV90aWQ6IGFueTtcbiAgc2VsZWN0ZWRfZGVzYzogYW55O1xuICBzZWxlY3RlZF9pbmZvOiBhbnk7XG5cbiAgaGVpZ2h0ID0gOTA7XG4gIGtwaURhdGE6IGFueSA9IFtdO1xuICBoZWlzdFZhbHVlOiBhbnk7XG4gIGlzRnJvbUVkaXRhYmxlOiBib29sZWFuID0gZmFsc2U7XG4gIGlzTmV3S3BpQWRkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaXNFZGl0S3BpQWRkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBlZGl0YWJsZV9kZXNjID0gXCJcIjtcbiAgZWRpdGFibGVfaW5mbyA9IFwiXCI7XG4gIGVkaXRhYmxlX2lkO1xuICBlZGl0YWJsZV9wYWdlX2lkO1xuICBlZGl0YWJsZV90YWdfdHlwZTtcbiAgZWRpdGFibGVfa3BpX25hbWU7XG4gIGVkaXRhYmxlX2twaV90aWQ7XG4gIHNlbGVjdGVkX2twaV9jaGlsZF90aWQ7XG4gIGtwaV92aXNpYmlsaXR5OiBib29sZWFuID0gZmFsc2U7XG4gIGtwaV9leHRlcm5hbDogYm9vbGVhbiA9IGZhbHNlO1xuICBwYXJhbnRlX2twaV9uYW1lOiBhbnk7XG4gIGlzQ29tcG9uZW50VXBkYXRhOiBib29sZWFuID0gZmFsc2U7XG4gIHRlbXBsYXRlRGF0YVNvdXJjZTogYW55O1xuICAvLyBrcGlEYXRhSnNvbjphbnk7XG4gIHVzZXJPcHRpb25Db250YWluZXI6IGFueSA9IFtdO1xuXG4gIHNlbGVjdGVkX2FsaWFzZXM6IGFueSA9IFtdO1xuICBpc0twaVRyZWVQcmVwYXJlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGtwaUNvbmZpZ0RhdGFTb3VyY2U6IGFueSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBjb21tb25TZXJ2aWNlOiBDb21tb25TZXJ2aWNlLCBwcml2YXRlIGZvcm1CdWlsZGVyOiBGb3JtQnVpbGRlcixcbiAgICBwcml2YXRlIHNlcnZpY2U6IENyZWF0ZUtwSVNlcnZpY2UsIHByaXZhdGUgdG9hc3RyOiBUb2FzdHJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIpIHtcblxuICB9XG5cbiAgbmdPbkluaXQoKSB7XG5cbiAgICB0aGlzLmdldEFsbEtwaURhdGEoKTtcbiAgICB0aGlzLmdldEFwcFBhZ2VDb25maWdzKCk7XG4gIH1cblxuICBnZXRBcHBQYWdlQ29uZmlncygpIHtcbiAgICB0aGlzLnNlcnZpY2UuZ2V0QXBwUGFnZUNvbmZpZ3MoKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKGRhdGE6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLnRlbXBsYXRlRGF0YVNvdXJjZSA9IGRhdGE7XG4gICAgICB9LCBlcnJvcjogKGVycjogYW55KSA9PiB7XG4gICAgICAgIHRoaXMudG9hc3RyLmVycm9yKCdVbmV4cGVjdGVkIFNlcnZlciBFeGNlcHRpb24uIFBsZWFzZSBjb250YWN0IFN5c3RlbSBBZG1pbi4nLCAnUGFnZSBJRCcpXG5cbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgZ2V0QWxsS3BpRGF0YSgpIHtcblxuICAgIHRoaXMua2VpUGFyZW50RGF0YVNvdXJjZSA9IFtdO1xuICAgIHRoaXMuc2VydmljZS5saXN0S3BpRW50cnlDb25maWdzKCkuc3Vic2NyaWJlKChkYXRhOiBhbnkpID0+IHtcbiAgICAgIGNvbnN0IHVzZXJOYW1lID0gXCJhZG1pblwiO1xuICAgICAgdGhpcy5rcGlDb25maWdEYXRhU291cmNlID0gZGF0YTtcbiAgICAgIHRoaXMua3BpRGF0YSA9IHRoaXMuYnVpbGRNZW51VHJlZSh1c2VyTmFtZSwgZGF0YSk7XG4gICAgICB0aGlzLmxvYWRpbmdNb2RhbCA9IGZhbHNlO1xuICAgICAgLy8gIHRoaXMua2VpUGFyZW50RGF0YVNvdXJjZSA9IGRhdGE7XG4gICAgICB0aGlzLnByZXBhcmVQYXJlbnREYXRhU291cmNlKGRhdGEpXG5cbiAgICB9LCBlcnIgPT4ge1xuICAgICAgdGhpcy5sb2FkaW5nTW9kYWwgPSBmYWxzZTtcbiAgICAgIHRoaXMudG9hc3RyLmVycm9yKCdVbmV4cGVjdGVkIFNlcnZlciBFeGNlcHRpb24uIFBsZWFzZSBjb250YWN0IFN5c3RlbSBBZG1pbi4nLCAnS1BJIENvbmZpZycpXG4gICAgfSlcbiAgfVxuXG4gIHByZXBhcmVQYXJlbnREYXRhU291cmNlKGRhdGEpIHtcbiAgICBkYXRhLmZvckVhY2goKHJlc3VsdDogYW55KSA9PiB7XG4gICAgICBpZiAocmVzdWx0LnRhZ1R5cGUgPT0gJ3BhcmVudCcpIHtcbiAgICAgICAgLy8gY29uc3QgdGlkS2V5ID0gZGF0YS50YWdUeXBlID09PSAnY2hpbGQnID8gJ2NoaWxkVGlkJyA6ICdwYXJlbnRUaWQnO1xuICAgICAgICAvLyAgbGV0IG5vZGUgPSB7XG4gICAgICAgIC8vICAgXCJrcGlOYW1lXCI6IHJlc3VsdC5rcGlOYW1lLFxuICAgICAgICAvLyAgIFwidGlkXCI6IHJlc3VsdFt0aWRLZXldLFxuICAgICAgICAvLyAgIFwia3BpSWRcIjogcmVzdWx0LmtwaUlkXG4gICAgICAgIC8vIH1cbiAgICAgICAgdGhpcy5rZWlQYXJlbnREYXRhU291cmNlLnB1c2gocmVzdWx0KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG5cbiAgbWFrZU5ld0twaVdpdGhVc2VyRW50aXR5KCkge1xuICAgIGNvbnN0IHBhZ2VEYXRhID0gKHRoaXMuc2VsZWN0ZWRfcGFnZV9pZCkgPyB0aGlzLnRlbXBsYXRlRGF0YVNvdXJjZS5maW5kKChpdGVtOiBhbnkpID0+IGl0ZW0ucGFnZUlkID09PSB0aGlzLnNlbGVjdGVkX3BhZ2VfaWQpIDogbnVsbDtcblxuICAgIGxldCBrcGlPYmogPSB7XG4gICAgICBcImtwaUlkXCI6IHRoaXMuc2VsZWN0ZWRfaWQsXG4gICAgICBcImtwaU5hbWVcIjogdGhpcy5zZWxlY3Rfa3BpX25hbWUsXG4gICAgICBcImFsaWFzZXNcIjogdGhpcy5zZWxlY3RlZF9hbGlhc2VzLFxuICAgICAgXCJwYWdlSWRcIjogdGhpcy5zZWxlY3RlZF9wYWdlX2lkLFxuICAgICAgXCJkZXNjcmlwdGlvblwiOiB0aGlzLnNlbGVjdGVkX2Rlc2MsXG4gICAgICBcImtwaUluZm9cIjogXCJcIixcbiAgICAgIFwidGFnVHlwZVwiOiB0aGlzLnNlbGVjdF90YWdfdHlwZSxcbiAgICAgIFwiYWN0aXZlXCI6IHRydWUsXG4gICAgICBcInZpc2liaWxpdHlcIjogdGhpcy5rcGlfdmlzaWJpbGl0eSxcbiAgICAgIFwiZXh0ZXJuYWxLcGlcIjogdGhpcy5rcGlfZXh0ZXJuYWwsXG4gICAgICBcInRhcmdldFwiOiBcIlwiLFxuICAgICAgXCJpY29uXCI6IFwiXCIsXG4gICAgICBcInVybFwiOiBwYWdlRGF0YSA/IHBhZ2VEYXRhLnBhZ2VVcmwgOiBcIlwiLFxuICAgICAgXCJrcGlUeXBlXCI6IHRoaXMuc2VsZWN0X3RhZ190eXBlID09IFwicGFyZW50XCIgPyBcImNvbGxhcHNhYmxlXCIgOiBcImJhc2ljXCIsXG4gICAgICBcInBhcmVudFRpZFwiOiB0aGlzLnNlbGVjdGVkX2twaV90aWQsXG4gICAgICBcImNoaWxkVGlkXCI6IHRoaXMuc2VsZWN0ZWRfa3BpX2NoaWxkX3RpZCxcbiAgICAgIFwicGVybWlzc2lvbnNcIjogdGhpcy51c2VyT3B0aW9uQ29udGFpbmVyLFxuICAgIH1cblxuICAgIHRoaXMuc2VydmljZS5jcmVhdGVLcGlFbnRyeUNvbmZpZyhrcGlPYmopLnN1YnNjcmliZShkYXRhID0+IHtcbiAgICAgIHRoaXMudG9hc3RyLnN1Y2Nlc3MoJ0tQSSBDcmVhdGVkIFN1Y2Nlc3NmdWxseScpXG4gICAgICB0aGlzLmdldEFsbEtwaURhdGEoKTtcbiAgICAgIHRoaXMuZ2V0UmVzZXRlS3BpKCk7XG4gICAgfSwgZXJyID0+IHtcbiAgICAgIHRoaXMudG9hc3RyLmVycm9yKCdVbmV4cGVjdGVkIFNlcnZlciBFeGNlcHRpb24uIFBsZWFzZSBjb250YWN0IFN5c3RlbSBBZG1pbi4nLCAnS1BJIENvbmZpZycpXG4gICAgfSlcblxuICAgIGNvbnNvbGUubG9nKFwiS1BJIHdpdGggVXNlciBFbnRpdHkgT2JqOlwiLCBrcGlPYmopO1xuICB9XG5cbiAgZ2V0RWRpdGFibGVLcGkoa3BpOiBhbnkpIHtcblxuICAgIGNvbnN0IGRhdGEgPSB0aGlzLmtwaUNvbmZpZ0RhdGFTb3VyY2UuZmluZCgoaXRlbTogYW55KSA9PiBpdGVtLmtwaUlkID09PSBrcGkuaWQpO1xuXG4gICAgLy8gY29uc3QgcGFyZW50TmFtZSA9IHRoaXMua2VpUGFyZW50RGF0YVNvdXJjZS5maW5kKChpdGVtOiBhbnkpID0+IGl0ZW0ucGFyZW50VGlkID09IGRhdGFbXCJwYXJlbnRUaWRcIl0pO1xuXG5cbiAgICBjb25zdCB0aWRLZXkgPSBkYXRhLnRhZ1R5cGUgPT09ICdjaGlsZCcgJiYgZGF0YS5jaGlsZFRpZC5sZW5ndGggPiAzID8gJ2NoaWxkVGlkJyA6ICdwYXJlbnRUaWQnO1xuICAgIGNvbnN0IHBhcmVudE5hbWUgPSB0aGlzLmtlaVBhcmVudERhdGFTb3VyY2UuZmluZChcbiAgICAgIChpdGVtOiBhbnkpID0+IGl0ZW1bdGlkS2V5XSA9PSBkYXRhW1wicGFyZW50VGlkXCJdXG4gICAgKTtcbiAgICB0aGlzLnBhcmFudGVfa3BpX25hbWUgPSBwYXJlbnROYW1lID8gcGFyZW50TmFtZVsna3BpSWQnXSA6IG51bGw7XG5cblxuICAgIHRoaXMuc2VsZWN0ZWRfaWQgPSBkYXRhW1wia3BpSWRcIl07XG4gICAgdGhpcy5zZWxlY3Rfa3BpX25hbWUgPSBkYXRhW1wia3BpTmFtZVwiXTtcbiAgICB0aGlzLnNlbGVjdGVkX2FsaWFzZXMgPSBkYXRhW1wiYWxpYXNlc1wiXTtcbiAgICB0aGlzLnNlbGVjdGVkX3BhZ2VfaWQgPSBkYXRhW1wicGFnZUlkXCJdO1xuICAgIHRoaXMuc2VsZWN0ZWRfZGVzYyA9IGRhdGFbXCJkZXNjcmlwdGlvblwiXTtcbiAgICB0aGlzLnNlbGVjdF90YWdfdHlwZSA9IGRhdGFbXCJ0YWdUeXBlXCJdO1xuICAgIHRoaXMua3BpX3Zpc2liaWxpdHkgPSBkYXRhW1widmlzaWJpbGl0eVwiXTtcbiAgICB0aGlzLmtwaV9leHRlcm5hbCA9IGRhdGFbXCJleHRlcm5hbEtwaVwiXTtcbiAgICB0aGlzLnNlbGVjdGVkX2twaV90aWQgPSBkYXRhW1wicGFyZW50VGlkXCJdO1xuICAgIHRoaXMuc2VsZWN0ZWRfa3BpX2NoaWxkX3RpZCA9IGRhdGFbXCJjaGlsZFRpZFwiXTtcbiAgICB0aGlzLnVzZXJPcHRpb25Db250YWluZXIgPSAoZGF0YVtcInBlcm1pc3Npb25zXCJdICYmIGRhdGFbXCJwZXJtaXNzaW9uc1wiXS5sZW5ndGggPiAwKSA/IGRhdGFbXCJwZXJtaXNzaW9uc1wiXSA6IFtdO1xuICAgIHRoaXMuaXNFZGl0S3BpQWRkZWQgPSB0cnVlO1xuXG4gIH1cblxuICBnZXRVcGRhdGVLcGkoKSB7XG4gICAgY29uc3QgcGFnZURhdGEgPSAodGhpcy5zZWxlY3RlZF9wYWdlX2lkKSA/IHRoaXMudGVtcGxhdGVEYXRhU291cmNlLmZpbmQoKGl0ZW06IGFueSkgPT4gaXRlbS5wYWdlSWQgPT09IHRoaXMuc2VsZWN0ZWRfcGFnZV9pZCkgOiBudWxsO1xuXG4gICAgbGV0IGtwaU9iaiA9IHtcbiAgICAgIFwia3BpSWRcIjogdGhpcy5zZWxlY3RlZF9pZCxcbiAgICAgIFwia3BpTmFtZVwiOiB0aGlzLnNlbGVjdF9rcGlfbmFtZSxcbiAgICAgIFwiYWxpYXNlc1wiOiB0aGlzLnNlbGVjdGVkX2FsaWFzZXMsXG4gICAgICBcInBhZ2VJZFwiOiB0aGlzLnNlbGVjdGVkX3BhZ2VfaWQsXG4gICAgICBcImRlc2NyaXB0aW9uXCI6IHRoaXMuc2VsZWN0ZWRfZGVzYyxcbiAgICAgIFwia3BpSW5mb1wiOiBcIlwiLFxuICAgICAgXCJ0YWdUeXBlXCI6IHRoaXMuc2VsZWN0X3RhZ190eXBlLFxuICAgICAgXCJhY3RpdmVcIjogdHJ1ZSxcbiAgICAgIFwidmlzaWJpbGl0eVwiOiB0aGlzLmtwaV92aXNpYmlsaXR5LFxuICAgICAgXCJleHRlcm5hbEtwaVwiOiB0aGlzLmtwaV9leHRlcm5hbCxcbiAgICAgIFwidGFyZ2V0XCI6IFwiXCIsXG4gICAgICBcImljb25cIjogXCJcIixcbiAgICAgIFwidXJsXCI6IHBhZ2VEYXRhID8gcGFnZURhdGEucGFnZVVybCA6IFwiXCIsXG4gICAgICBcImtwaVR5cGVcIjogdGhpcy5zZWxlY3RfdGFnX3R5cGUgPT0gXCJwYXJlbnRcIiA/IFwiY29sbGFwc2FibGVcIiA6IFwiYmFzaWNcIixcbiAgICAgIFwicGFyZW50VGlkXCI6IHRoaXMuc2VsZWN0ZWRfa3BpX3RpZCxcbiAgICAgIFwiY2hpbGRUaWRcIjogdGhpcy5zZWxlY3RlZF9rcGlfY2hpbGRfdGlkLFxuICAgICAgXCJwZXJtaXNzaW9uc1wiOiB0aGlzLnVzZXJPcHRpb25Db250YWluZXIsXG4gICAgfVxuXG4gICAgdGhpcy5zZXJ2aWNlLnVwZGF0ZUtwaUVudHJ5Q29uZmlnKGtwaU9iaikuc3Vic2NyaWJlKGRhdGEgPT4ge1xuICAgICAgdGhpcy50b2FzdHIuc3VjY2VzcygnS1BJIFVwZGF0ZWQgU3VjY2Vzc2Z1bGx5JylcbiAgICAgIHRoaXMuZ2V0QWxsS3BpRGF0YSgpO1xuICAgICAgdGhpcy5nZXRSZXNldGVLcGkoKTtcbiAgICAgIHRoaXMuaXNFZGl0S3BpQWRkZWQgPSBmYWxzZTtcblxuICAgIH0sIGVyciA9PiB7XG4gICAgICB0aGlzLnRvYXN0ci5lcnJvcignVW5leHBlY3RlZCBTZXJ2ZXIgRXhjZXB0aW9uLiBQbGVhc2UgY29udGFjdCBTeXN0ZW0gQWRtaW4uJywgJ0tQSSBDb25maWcnKVxuICAgIH0pXG5cbiAgICBjb25zb2xlLmxvZyhcIktQSSB3aXRoIFVzZXIgRW50aXR5IE9iajpcIiwga3BpT2JqKTtcbiAgfVxuXG4gIG9uQ3VzdG9tRGltZW50aW9uQ3JlYXRpbmcoYXJncykge1xuICAgIGNvbnN0IG5ld1ZhbHVlID0gYXJncy50ZXh0O1xuICAgIGFyZ3MuY3VzdG9tSXRlbSA9IG5ld1ZhbHVlO1xuICAgIGNvbnN0IGlzSXRlbUluRGF0YVNvdXJjZSA9IHRoaXMuc2VsZWN0ZWRfYWxpYXNlcy5zb21lKChpdGVtKSA9PiBpdGVtID09PSBuZXdWYWx1ZSk7XG4gICAgaWYgKCFpc0l0ZW1JbkRhdGFTb3VyY2UpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRfYWxpYXNlcy51bnNoaWZ0KG5ld1ZhbHVlKTtcbiAgICB9XG4gIH1cblxuXG5cbiAgZ2V0UmVzZXRlS3BpKCkge1xuICAgIHRoaXMuc2VsZWN0X2twaV9uYW1lID0gJyc7XG4gICAgdGhpcy5zZWxlY3RfdGFnX3R5cGUgPSAnJztcbiAgICB0aGlzLnNlbGVjdGVkX2lkID0gJyc7XG4gICAgdGhpcy5zZWxlY3RlZF9wYWdlX2lkID0gJyc7XG4gICAgdGhpcy5zZWxlY3RlZF9rcGlfdGlkID0gJyc7XG4gICAgdGhpcy5zZWxlY3RlZF9kZXNjID0gJyc7XG4gICAgdGhpcy5wYXJhbnRlX2twaV9uYW1lID0gJyc7XG4gICAgdGhpcy5lZGl0YWJsZV9rcGlfbmFtZSA9ICcnO1xuICAgIHRoaXMuZWRpdGFibGVfdGFnX3R5cGUgPSAnJztcbiAgICB0aGlzLmVkaXRhYmxlX2lkID0gJyc7XG4gICAgdGhpcy5lZGl0YWJsZV9wYWdlX2lkID0gJyc7XG4gICAgdGhpcy5lZGl0YWJsZV9rcGlfdGlkID0gJyc7XG4gICAgdGhpcy5lZGl0YWJsZV9kZXNjID0gJyc7XG4gICAgdGhpcy5lZGl0YWJsZV9pbmZvID0gJyc7XG4gICAgdGhpcy5wYXJhbnRlX2twaV9uYW1lID0gJyc7XG4gICAgdGhpcy5zZWxlY3RlZF9rcGlfY2hpbGRfdGlkID0gJyc7XG4gICAgdGhpcy5zZWxlY3RlZF9hbGlhc2VzID0gW107XG4gICAgdGhpcy5rcGlfZXh0ZXJuYWwgPSBmYWxzZTtcbiAgICB0aGlzLmtwaV92aXNpYmlsaXR5ID0gZmFsc2U7XG4gICAgdGhpcy5pc0NvbXBvbmVudFVwZGF0YSA9IGZhbHNlO1xuICAgIHRoaXMuaXNFZGl0S3BpQWRkZWQgPSBmYWxzZTtcbiAgfVxuXG5cbiAgYWRkVGFndHlwZVZhbHVlKGUpIHtcbiAgICB0aGlzLnNlbGVjdF90YWdfdHlwZSA9IGUudmFsdWU7XG4gIH1cblxuICBnZXRLcGlJdGVtVmFsdWUoZSkge1xuICAgIGlmIChlLmV2ZW50KSB7XG4gICAgICBjb25zdCBrcGlfZGF0YSA9IHRoaXMua2VpUGFyZW50RGF0YVNvdXJjZS5maW5kKChpdGVtOiBhbnkpID0+IGl0ZW0ua3BpSWQgPT09IGUudmFsdWUpO1xuICAgICAgY29uc3QgdGlkS2V5ID0gdGhpcy5zZWxlY3RfdGFnX3R5cGUgPT09ICdjaGlsZCcgJiYgdGhpcy5pc0VkaXRLcGlBZGRlZCA/ICdjaGlsZFRpZCcgOiAncGFyZW50VGlkJztcbiAgICAgIHRoaXMuc2VsZWN0ZWRfa3BpX3RpZCA9IGtwaV9kYXRhW3RpZEtleV07XG4gICAgfVxuXG4gIH1cblxuXG4gIGFkZE5ld0twaSgpIHtcbiAgICB0aGlzLmlzTmV3S3BpQWRkZWQgPSB0cnVlO1xuICAgIHRoaXMuaXNFZGl0S3BpQWRkZWQgPSBmYWxzZTtcbiAgfVxuICBjYW5jZWxVcGRhdGUoKSB7XG4gICAgdGhpcy5pc0VkaXRLcGlBZGRlZCA9IGZhbHNlO1xuICB9XG5cblxuXG4gIGdldEtwaVBhcnJlbnROYW1lKGlucHV0KSB7XG4gICAgY29uc3QgbGFzdEluZGV4ID0gaW5wdXQubGFzdEluZGV4T2YoJy4nKTtcbiAgICBpZiAobGFzdEluZGV4ID09PSAtMSkge1xuICAgICAgcmV0dXJuIGlucHV0O1xuICAgIH1cbiAgICByZXR1cm4gaW5wdXQuc3Vic3RyaW5nKDAsIGxhc3RJbmRleCk7XG4gIH1cblxuXG4gIGdldERlbGV0S3BpKCkge1xuICAgIHRoaXMuc2VydmljZS5kZWxldGVLcGlFbnRyeUNvbmZpZyh0aGlzLnNlbGVjdGVkX2lkKS5zdWJzY3JpYmUoZGF0YSA9PiB7XG4gICAgICB0aGlzLnRvYXN0ci5zdWNjZXNzKCdLUEkgRGVsZXRlZCBTdWNjZXNzZnVsbHknKVxuICAgICAgdGhpcy5nZXRBbGxLcGlEYXRhKCk7XG4gICAgICB0aGlzLmdldFJlc2V0ZUtwaSgpO1xuICAgIH0sIGVyciA9PiB7XG4gICAgICB0aGlzLnRvYXN0ci5lcnJvcignVW5leHBlY3RlZCBTZXJ2ZXIgRXhjZXB0aW9uLiBQbGVhc2UgY29udGFjdCBTeXN0ZW0gQWRtaW4uJywgJ0tQSSBDb25maWcnKVxuICAgIH0pXG4gIH1cblxuXG4gIHJlc2V0ZVVwZGF0ZUtwaUZvcm0oKSB7XG4gICAgdGhpcy5lZGl0YWJsZV9kZXNjID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuZWRpdGFibGVfaW5mbyA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmVkaXRhYmxlX2twaV9uYW1lID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuZWRpdGFibGVfdGFnX3R5cGUgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5lZGl0YWJsZV9rcGlfdGlkID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuZWRpdGFibGVfaWQgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5lZGl0YWJsZV9wYWdlX2lkID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgc3VibWl0TmV3S3BpKCkge1xuICAgIHRoaXMubG9hZGluZ01vZGFsID0gdHJ1ZTtcbiAgICB0aGlzLmlzRWRpdEtwaUFkZGVkID0gZmFsc2U7XG4gICAgbGV0IG9iaiA9IHsga3BpQ29uZmlnRGF0YTogdGhpcy5rcGlEYXRhIH1cbiAgICBjb25zb2xlLmxvZyhvYmopO1xuICAgIHRoaXMuaXNDb21wb25lbnRVcGRhdGEgPSBmYWxzZTtcbiAgICB0aGlzLnNlcnZpY2UuZ2V0Q3JlYXRlS3BpKG9iaikuc3Vic2NyaWJlKGRhdGEgPT4ge1xuICAgICAgdGhpcy5nZXRBbGxLcGlEYXRhKCk7XG4gICAgICB0aGlzLmdldFJlc2V0ZUtwaSgpO1xuICAgIH0pXG4gIH1cblxuXG4gIGJ1aWxkTWVudVRyZWUodXNlck5hbWU6IHN0cmluZywga3BpRGF0YTogYW55W10pOiBhbnlbXSB7XG4gICAgLy8gbGV0IGZpbHRlcmVkTWVudXMgPSBtZW51RGF0YS5maWx0ZXIobWVudSA9PlxuICAgIC8vICAgIXVzZXJOYW1lIHx8IChtZW51LnBlcm1pc3Npb25zICYmIG1lbnUucGVybWlzc2lvbnMuc29tZShwZXJtID0+IHBlcm0uZW50aXR5VmFsdWVzLmluY2x1ZGVzKHVzZXJOYW1lKSkpXG4gICAgLy8gKTtcblxuICAgIGxldCBmaWx0ZXJlZE1lbnVzID0ga3BpRGF0YTtcblxuICAgIGNvbnN0IG1lbnVNYXAgPSBuZXcgTWFwKCk7XG4gICAgY29uc3QgbWVudVRyZWU6IGFueVtdID0gW107XG5cbiAgICBmaWx0ZXJlZE1lbnVzLmZvckVhY2gobWVudSA9PiB7XG4gICAgICBtZW51TWFwLnNldChtZW51LmNoaWxkVGlkIHx8IG1lbnUucGFyZW50VGlkLCB7XG4gICAgICAgIGlkOiBtZW51LmtwaUlkLFxuICAgICAgICB0aXRsZTogbWVudS5rcGlOYW1lLFxuICAgICAgICBpY29uOiBtZW51Lmljb24sXG4gICAgICAgIHR5cGU6IG1lbnUua3BpVHlwZSxcbiAgICAgICAgdGFnVHlwZTogbWVudS50YWdUeXBlLFxuICAgICAgICB2aXNpYmlsaXR5OiBtZW51LnZpc2liaWxpdHksXG4gICAgICAgIC4uLihtZW51LmxpbmsgJiYgeyBsaW5rOiBtZW51LmxpbmsucmVwbGFjZSgvXlxcLysvLCAnJykgfSksXG4gICAgICAgIGNoaWxkcmVuOiBbXVxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBmaWx0ZXJlZE1lbnVzLmZvckVhY2goa3BpID0+IHtcbiAgICAgIGlmIChrcGkucGFyZW50VGlkICYmIGtwaS5jaGlsZFRpZCkge1xuICAgICAgICBjb25zdCBwYXJlbnQgPSBtZW51TWFwLmdldChrcGkucGFyZW50VGlkKTtcbiAgICAgICAgaWYgKHBhcmVudCkge1xuICAgICAgICAgIHBhcmVudC5jaGlsZHJlbi5wdXNoKG1lbnVNYXAuZ2V0KGtwaS5jaGlsZFRpZCkpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBtZW51VHJlZS5wdXNoKG1lbnVNYXAuZ2V0KGtwaS5wYXJlbnRUaWQpKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBtZW51VHJlZTtcbiAgfVxuXG59XG4iLCI8YXBwLWxvYWRpbmcgKm5nSWY9XCJsb2FkaW5nTW9kYWxcIj48L2FwcC1sb2FkaW5nPlxuPGRpdiBjbGFzcz1cInAtNCBmbGV4IGZsZXgtcm93IHctZnVsbFwiICpuZ0lmPVwiIWxvYWRpbmdNb2RhbFwiPlxuICAgIDxkaXYgY2xhc3M9XCJteC0yIGJnLXdoaXRlIGRhcms6YmctdHJhbnNwYXJlbnQgYm9yZGVyLXJcIj5cbiAgICAgICAgPCEtLSA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNLcGlUcmVlUHJlcGFyZWRcIj4gLS0+XG4gICAgICAgICAgICA8dHJlZXZpZXcgY2xhc3M9XCJkYXJrIGJnLWdyYXktOTAwIGRhcms6YmctdHJhbnNwYXJlbnRcIiBbbmFtZV09XCInbWFpbk5hdmlnYXRpb24nXCIgW3JvdXRlS2V5XT1cIidyYUtwaSdcIlxuICAgICAgICAgICAgICAgIFtuYXZpZ2F0aW9uXT1cImtwaURhdGFcIiBbaXNTZWFyY2hCb3hdPVwiZmFsc2VcIiBbaXNFZGl0SWNvbl09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAoZWRpdGFibGVLcGlEYXRhKT1cImdldEVkaXRhYmxlS3BpKCRldmVudClcIj5cbiAgICAgICAgICAgIDwvdHJlZXZpZXc+XG4gICAgICAgIDwhLS0gPC9uZy1jb250YWluZXI+IC0tPlxuXG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cIm14LTIgdy1mdWxsXCI+XG4gICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cgaXRlbS1jZW50ZXIganVzdGlmeS1jZW50ZXIgbXktOFwiPlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInt7Y29tbW9uU2VydmljZS5idG5fd2FybmluZ19tZH19XCIgKGNsaWNrKT1cImFkZE5ld0twaSgpXCI+QWRkIE5ldyBLUEk8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ7e2NvbW1vblNlcnZpY2UuYnRuX3ByaW1hcnlfbWR9fVwiIChjbGljayk9XCJyb3V0ZVRvS3BpQ29uZmlnKClcIlxuICAgICAgICAgICAgICAgIHJvdXRlckxpbmtBY3RpdmU9XCJyb3V0ZXItbGluay1hY3RpdmVcIj5Db25maWd1cmUgS1BJPC9idXR0b24+XG4gICAgICAgIDwvZGl2PiAtLT5cbiAgICAgICAgPCEtLSA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNOZXdLcGlBZGRlZFwiPiAtLT5cbiAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwicHgtMiB3LWZ1bGxcIj4gLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtLTFcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0yIHB0LTEgdy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ0ZXh0LWxnIG10LTJcIj5OYW1lPC9wPlxuICAgICAgICAgICAgICAgIDxkeC10ZXh0LWJveCBbKG5nTW9kZWwpXT1cInNlbGVjdF9rcGlfbmFtZVwiPjwvZHgtdGV4dC1ib3g+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IHctZnVsbFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm0tMSB3LTEvM1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0yIHB0LTEgIHctZnVsbFwiPlxuICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInRleHQtbGcgbXQtMlwiPiBUYWcgVHlwZTwvcD5cbiAgICAgICAgICAgICAgICAgICAgPGR4LXNlbGVjdC1ib3ggW2RhdGFTb3VyY2VdPVwidGFnVHlwZVwiIFsobmdNb2RlbCldPVwic2VsZWN0X3RhZ190eXBlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChvblZhbHVlQ2hhbmdlZCk9XCJhZGRUYWd0eXBlVmFsdWUoJGV2ZW50KVwiPjwvZHgtc2VsZWN0LWJveD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPCEtLSAob25DdXN0b21JdGVtQ3JlYXRpbmcpPVwib25DdXN0b21EaW1lbnRpb25DcmVhdGluZygkZXZlbnQpXCIgLS0+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS0xIHctZnVsbFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0yIHB0LTEgIHctZnVsbFwiPlxuICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInRleHQtbGcgbXQtMlwiPkFsaWFzZXM8L3A+XG4gICAgICAgICAgICAgICAgICAgIDxkeC10YWctYm94IFthY2NlcHRDdXN0b21WYWx1ZV09XCJ0cnVlXCIgWyhuZ01vZGVsKV09XCJzZWxlY3RlZF9hbGlhc2VzXCI+PC9keC10YWctYm94PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwibS0xXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMiBwdC0xICB3LWZ1bGxcIj5cbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInRleHQtbGcgbXQtMlwiPlBhZ2UgSUQ8L3A+XG4gICAgICAgICAgICAgICAgPCEtLSA8ZHgtdGV4dC1ib3ggWyhuZ01vZGVsKV09XCJzZWxlY3RlZF9wYWdlX2lkXCI+PC9keC10ZXh0LWJveD4gLS0+XG4gICAgICAgICAgICAgICAgPGR4LXNlbGVjdC1ib3ggW2l0ZW1zXT1cInRlbXBsYXRlRGF0YVNvdXJjZVwiIHZhbHVlRXhwcj1cInBhZ2VJZFwiIGRpc3BsYXlFeHByPVwicGFnZU5hbWVcIlxuICAgICAgICAgICAgICAgICAgICBbc2VhcmNoRW5hYmxlZF09XCJ0cnVlXCIgWyhuZ01vZGVsKV09XCJzZWxlY3RlZF9wYWdlX2lkXCI+PC9keC1zZWxlY3QtYm94PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwibS0xXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMiBwdC0xICB3LWZ1bGxcIj5cbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInRleHQtbGcgbXQtMlwiPkRlc2NyaXB0aW9uPC9wPlxuICAgICAgICAgICAgICAgIDxkeC1odG1sLWVkaXRvciBoZWlnaHQ9XCInYXV0bydcIiBbKG5nTW9kZWwpXT1cInNlbGVjdGVkX2Rlc2NcIj5cbiAgICAgICAgICAgICAgICAgICAgPGR4by10b29sYmFyIFttdWx0aWxpbmVdPVwiZmFsc2VcIj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPGR4aS1pdGVtIG5hbWU9XCJzaXplXCIgW2FjY2VwdGVkVmFsdWVzXT1cIlsnOHB0JywgJzEwcHQnLCAnMTJwdCcsICcxNHB0JywgJzE4cHQnLCAnMjRwdCcsICczNnB0J11cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cInsgaW5wdXRBdHRyOiB7ICdhcmlhLWxhYmVsJzogJ0ZvbnQgc2l6ZScgfSB9XCI+PC9keGktaXRlbT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkeGktaXRlbSBuYW1lPVwiZm9udFwiIFthY2NlcHRlZFZhbHVlc109XCJbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQXJpYWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0NvdXJpZXIgTmV3JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHZW9yZ2lhJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdJbXBhY3QnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0x1Y2lkYSBDb25zb2xlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdUYWhvbWEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1RpbWVzIE5ldyBSb21hbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnVmVyZGFuYSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdXCIgW29wdGlvbnNdPVwieyBpbnB1dEF0dHI6IHsgJ2FyaWEtbGFiZWwnOiAnRm9udCBmYW1pbHknIH0gfVwiPjwvZHhpLWl0ZW0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZHhpLWl0ZW0gbmFtZT1cInNlcGFyYXRvclwiPjwvZHhpLWl0ZW0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZHhpLWl0ZW0gbmFtZT1cImJvbGRcIj48L2R4aS1pdGVtPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGR4aS1pdGVtIG5hbWU9XCJpdGFsaWNcIj48L2R4aS1pdGVtPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGR4aS1pdGVtIG5hbWU9XCJ1bmRlcmxpbmVcIj48L2R4aS1pdGVtPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGR4aS1pdGVtIG5hbWU9XCJzZXBhcmF0b3JcIj48L2R4aS1pdGVtPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGR4aS1pdGVtIG5hbWU9XCJhbGlnbkxlZnRcIj48L2R4aS1pdGVtPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGR4aS1pdGVtIG5hbWU9XCJhbGlnbkNlbnRlclwiPjwvZHhpLWl0ZW0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZHhpLWl0ZW0gbmFtZT1cImFsaWduUmlnaHRcIj48L2R4aS1pdGVtPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGR4aS1pdGVtIG5hbWU9XCJhbGlnbkp1c3RpZnlcIj48L2R4aS1pdGVtPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGR4aS1pdGVtIG5hbWU9XCJzZXBhcmF0b3JcIj48L2R4aS1pdGVtPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGR4aS1pdGVtIG5hbWU9XCJvcmRlcmVkTGlzdFwiPjwvZHhpLWl0ZW0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZHhpLWl0ZW0gbmFtZT1cImJ1bGxldExpc3RcIj48L2R4aS1pdGVtPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGR4aS1pdGVtIG5hbWU9XCJzZXBhcmF0b3JcIj48L2R4aS1pdGVtPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGR4aS1pdGVtIG5hbWU9XCJoZWFkZXJcIiBbYWNjZXB0ZWRWYWx1ZXNdPVwiW2ZhbHNlLCAxLCAyLCAzLCA0LCA1XVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwieyBpbnB1dEF0dHI6IHsgJ2FyaWEtbGFiZWwnOiAnSGVhZGVyJyB9IH1cIj48L2R4aS1pdGVtPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGR4aS1pdGVtIG5hbWU9XCJzZXBhcmF0b3JcIj48L2R4aS1pdGVtPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGR4aS1pdGVtIG5hbWU9XCJjb2xvclwiPjwvZHhpLWl0ZW0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZHhpLWl0ZW0gbmFtZT1cImJhY2tncm91bmRcIj48L2R4aS1pdGVtPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGR4aS1pdGVtIG5hbWU9XCJzZXBhcmF0b3JcIj48L2R4aS1pdGVtPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGR4aS1pdGVtIG5hbWU9XCJsaW5rXCI+PC9keGktaXRlbT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkeGktaXRlbSBuYW1lPVwiaW1hZ2VcIj48L2R4aS1pdGVtPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGR4aS1pdGVtIG5hbWU9XCJzZXBhcmF0b3JcIj48L2R4aS1pdGVtPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGR4aS1pdGVtIG5hbWU9XCJjbGVhclwiPjwvZHhpLWl0ZW0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZHhpLWl0ZW0gbmFtZT1cImNvZGVCbG9ja1wiPjwvZHhpLWl0ZW0+XG4gICAgICAgICAgICAgICAgICAgIDwvZHhvLXRvb2xiYXI+XG4gICAgICAgICAgICAgICAgICAgIDxkeG8tbWVkaWEtcmVzaXppbmcgW2VuYWJsZWRdPVwidHJ1ZVwiPiA8L2R4by1tZWRpYS1yZXNpemluZz5cbiAgICAgICAgICAgICAgICAgICAgPGR4by1pbWFnZS11cGxvYWQgW3RhYnNdPVwiWydmaWxlJywgJ3VybCddXCIgZmlsZVVwbG9hZE1vZGU9XCJiYXNlNjRcIj5cbiAgICAgICAgICAgICAgICAgICAgPC9keG8taW1hZ2UtdXBsb2FkPlxuICAgICAgICAgICAgICAgIDwvZHgtaHRtbC1lZGl0b3I+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyB3LWZ1bGxcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLTEgdy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTIgcHQtMSB3LWZ1bGxcIj5cbiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ0ZXh0LWxnIG10LTJcIj4gUGFyZW50IENvbXBvbmVudCA8L3A+XG4gICAgICAgICAgICAgICAgICAgIDxkeC1zZWxlY3QtYm94IFtpdGVtc109XCJrZWlQYXJlbnREYXRhU291cmNlXCIgZGlzcGxheUV4cHI9XCJrcGlOYW1lXCIgdmFsdWVFeHByPVwia3BpSWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKG9uVmFsdWVDaGFuZ2VkKT1cImdldEtwaUl0ZW1WYWx1ZSgkZXZlbnQpXCIgWyhuZ01vZGVsKV09XCJwYXJhbnRlX2twaV9uYW1lXCI+PC9keC1zZWxlY3QtYm94PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS0xIHctZnVsbFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0yIHB0LTEgIHctZnVsbFwiPlxuICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInRleHQtbGcgbXQtMlwiPlBhcmVudCBUSUQ8L3A+XG4gICAgICAgICAgICAgICAgICAgIDxkeC10ZXh0LWJveCBbKG5nTW9kZWwpXT1cInNlbGVjdGVkX2twaV90aWRcIiBbcmVhZE9ubHldPVwiZmFsc2VcIj48L2R4LXRleHQtYm94PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS0xIHctZnVsbFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0yIHB0LTEgIHctZnVsbFwiPlxuICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInRleHQtbGcgbXQtMlwiPkNoaWxkIFRJRDwvcD5cbiAgICAgICAgICAgICAgICAgICAgPGR4LXRleHQtYm94IFsobmdNb2RlbCldPVwic2VsZWN0ZWRfa3BpX2NoaWxkX3RpZFwiIFtyZWFkT25seV09XCJmYWxzZVwiPjwvZHgtdGV4dC1ib3g+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cganVzdGlmeS1iZXR3ZWVuIG10LTNcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0yIHB0LTEgIHctZnVsbFwiPlxuICAgICAgICAgICAgICAgIDxkeC1jaGVjay1ib3ggWyhuZ01vZGVsKV09XCJrcGlfdmlzaWJpbGl0eVwiIHRleHQ9XCJWaXNpYmlsaXR5XCI+PC9keC1jaGVjay1ib3g+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0yIHB0LTEgIHctZnVsbFwiPlxuICAgICAgICAgICAgICAgIDxkeC1jaGVjay1ib3ggWyhuZ01vZGVsKV09XCJrcGlfZXh0ZXJuYWxcIiB0ZXh0PVwiRXh0ZXJuYWwgS1BJXCI+PC9keC1jaGVjay1ib3g+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cIm0tMVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMiBwdC0xICB3LWZ1bGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwidGV4dC1sZyBtdC0yXCI+S1BJIEluZm88L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZHgtaHRtbC1lZGl0b3IgaGVpZ2h0PVwiJ2F1dG8nXCIgWyhuZ01vZGVsKV09XCJzZWxlY3RlZF9pbmZvXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR4by10b29sYmFyIFttdWx0aWxpbmVdPVwiZmFsc2VcIj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHhpLWl0ZW0gbmFtZT1cInNpemVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FjY2VwdGVkVmFsdWVzXT1cIlsnOHB0JywgJzEwcHQnLCAnMTJwdCcsICcxNHB0JywgJzE4cHQnLCAnMjRwdCcsICczNnB0J11cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwieyBpbnB1dEF0dHI6IHsgJ2FyaWEtbGFiZWwnOiAnRm9udCBzaXplJyB9IH1cIj48L2R4aS1pdGVtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHhpLWl0ZW0gbmFtZT1cImZvbnRcIiBbYWNjZXB0ZWRWYWx1ZXNdPVwiW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdBcmlhbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0NvdXJpZXIgTmV3JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR2VvcmdpYScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0ltcGFjdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0x1Y2lkYSBDb25zb2xlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnVGFob21hJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnVGltZXMgTmV3IFJvbWFuJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnVmVyZGFuYSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJ7IGlucHV0QXR0cjogeyAnYXJpYS1sYWJlbCc6ICdGb250IGZhbWlseScgfSB9XCI+PC9keGktaXRlbT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR4aS1pdGVtIG5hbWU9XCJzZXBhcmF0b3JcIj48L2R4aS1pdGVtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHhpLWl0ZW0gbmFtZT1cImJvbGRcIj48L2R4aS1pdGVtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHhpLWl0ZW0gbmFtZT1cIml0YWxpY1wiPjwvZHhpLWl0ZW0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeGktaXRlbSBuYW1lPVwidW5kZXJsaW5lXCI+PC9keGktaXRlbT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR4aS1pdGVtIG5hbWU9XCJzZXBhcmF0b3JcIj48L2R4aS1pdGVtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHhpLWl0ZW0gbmFtZT1cImFsaWduTGVmdFwiPjwvZHhpLWl0ZW0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeGktaXRlbSBuYW1lPVwiYWxpZ25DZW50ZXJcIj48L2R4aS1pdGVtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHhpLWl0ZW0gbmFtZT1cImFsaWduUmlnaHRcIj48L2R4aS1pdGVtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHhpLWl0ZW0gbmFtZT1cImFsaWduSnVzdGlmeVwiPjwvZHhpLWl0ZW0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeGktaXRlbSBuYW1lPVwic2VwYXJhdG9yXCI+PC9keGktaXRlbT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR4aS1pdGVtIG5hbWU9XCJvcmRlcmVkTGlzdFwiPjwvZHhpLWl0ZW0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeGktaXRlbSBuYW1lPVwiYnVsbGV0TGlzdFwiPjwvZHhpLWl0ZW0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeGktaXRlbSBuYW1lPVwic2VwYXJhdG9yXCI+PC9keGktaXRlbT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR4aS1pdGVtIG5hbWU9XCJoZWFkZXJcIiBbYWNjZXB0ZWRWYWx1ZXNdPVwiW2ZhbHNlLCAxLCAyLCAzLCA0LCA1XVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJ7IGlucHV0QXR0cjogeyAnYXJpYS1sYWJlbCc6ICdIZWFkZXInIH0gfVwiPjwvZHhpLWl0ZW0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeGktaXRlbSBuYW1lPVwic2VwYXJhdG9yXCI+PC9keGktaXRlbT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR4aS1pdGVtIG5hbWU9XCJjb2xvclwiPjwvZHhpLWl0ZW0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeGktaXRlbSBuYW1lPVwiYmFja2dyb3VuZFwiPjwvZHhpLWl0ZW0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeGktaXRlbSBuYW1lPVwic2VwYXJhdG9yXCI+PC9keGktaXRlbT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR4aS1pdGVtIG5hbWU9XCJsaW5rXCI+PC9keGktaXRlbT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR4aS1pdGVtIG5hbWU9XCJpbWFnZVwiPjwvZHhpLWl0ZW0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeGktaXRlbSBuYW1lPVwic2VwYXJhdG9yXCI+PC9keGktaXRlbT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR4aS1pdGVtIG5hbWU9XCJjbGVhclwiPjwvZHhpLWl0ZW0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeGktaXRlbSBuYW1lPVwiY29kZUJsb2NrXCI+PC9keGktaXRlbT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2R4by10b29sYmFyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeG8tbWVkaWEtcmVzaXppbmcgW2VuYWJsZWRdPVwidHJ1ZVwiPiA8L2R4by1tZWRpYS1yZXNpemluZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHhvLWltYWdlLXVwbG9hZCBbdGFic109XCJbJ2ZpbGUnLCAndXJsJ11cIiBmaWxlVXBsb2FkTW9kZT1cImJhc2U2NFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZHhvLWltYWdlLXVwbG9hZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZHgtaHRtbC1lZGl0b3I+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cblxuICAgICAgICA8YXBwLXVzZXItYWNjZXNzIFsodXNlck9wdGlvbkNvbnRhaW5lcildPVwidXNlck9wdGlvbkNvbnRhaW5lclwiPlxuICAgICAgICA8L2FwcC11c2VyLWFjY2Vzcz5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWF1dG8gbXQtNSBqdXN0aWZ5LWVuZFwiPlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInt7Y29tbW9uU2VydmljZS5idG5fc3VjY2Vzc19tZH19XCIgKGNsaWNrKT1cImdldFVwZGF0ZUtwaSgpXCIgKm5nSWY9XCJpc0VkaXRLcGlBZGRlZFwiPlVwZGF0ZSBLUElcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwie3tjb21tb25TZXJ2aWNlLmJ0bl9kYW5nZXJfbWR9fVwiIChjbGljayk9XCJnZXREZWxldEtwaSgpXCIgKm5nSWY9XCJpc0VkaXRLcGlBZGRlZFwiPkRlbGV0ZSBLUElcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwie3tjb21tb25TZXJ2aWNlLmJ0bl9zdWNjZXNzX21kfX1cIiAoY2xpY2spPVwibWFrZU5ld0twaVdpdGhVc2VyRW50aXR5KClcIiAqbmdJZj1cIiFpc0VkaXRLcGlBZGRlZFwiPkNyZWF0ZSBLUElcbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInt7Y29tbW9uU2VydmljZS5idG5fd2FybmluZ19tZH19XCIgKGNsaWNrKT1cImdldFJlc2V0ZUtwaSgpXCI+UmVzZXQ8L2J1dHRvbj5cblxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPCEtLSA8L2Rpdj4gLS0+XG4gICAgICAgIDwhLS0gPC9uZy1jb250YWluZXI+IC0tPlxuICAgIDwvZGl2PlxuXG5cblxuXG48L2Rpdj4iXX0=
277
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWtwaS10cmVlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dhbW1hLWFwcC1jb250cm9sbGVyL3NyYy9saWIvdGVtcGxhdGUtbW9kdWxlL0twaUNyZWF0aW9uTW9kdWxlL2NyZWF0ZS1rcGktdHJlZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9nYW1tYS1hcHAtY29udHJvbGxlci9zcmMvbGliL3RlbXBsYXRlLW1vZHVsZS9LcGlDcmVhdGlvbk1vZHVsZS9jcmVhdGUta3BpLXRyZWUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFhbEQsTUFBTSxPQUFPLHNCQUFzQjtJQTZDakMsWUFDUyxhQUE0QixFQUFVLFdBQXdCLEVBQzdELE9BQXlCLEVBQVUsTUFBcUIsRUFDeEQsTUFBYztRQUZmLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQVUsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDN0QsWUFBTyxHQUFQLE9BQU8sQ0FBa0I7UUFBVSxXQUFNLEdBQU4sTUFBTSxDQUFlO1FBQ3hELFdBQU0sR0FBTixNQUFNLENBQVE7UUEvQ3hCLGlCQUFZLEdBQVksSUFBSSxDQUFDO1FBQzdCLHdCQUFtQixHQUFRLEVBQUUsQ0FBQztRQUU5QixZQUFPLEdBQUcsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDOUIsb0JBQWUsR0FBRyxFQUFFLENBQUM7UUFDckIsbUJBQWMsR0FBUSxFQUFFLENBQUM7UUFXekIsV0FBTSxHQUFHLEVBQUUsQ0FBQztRQUNaLFlBQU8sR0FBUSxFQUFFLENBQUM7UUFFbEIsbUJBQWMsR0FBWSxLQUFLLENBQUM7UUFDaEMsa0JBQWEsR0FBWSxLQUFLLENBQUM7UUFDL0IsbUJBQWMsR0FBWSxLQUFL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SW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgRm9ybUFycmF5LCBGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFRvYXN0clNlcnZpY2UgfSBmcm9tICduZ3gtdG9hc3RyJztcbmltcG9ydCB7IFJvdXRlciwgUm91dGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IENyZWF0ZUtwSVNlcnZpY2UgfSBmcm9tICcuL2NyZWF0ZUtwaS5zZXJ2aWNlJztcbmltcG9ydCB7IENvbW1vblNlcnZpY2UgfSBmcm9tICcuLi8uLi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL2NvbW1vbic7XG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWNyZWF0ZS1rcGknLFxuICB0ZW1wbGF0ZVVybDogJy4vY3JlYXRlLWtwaS10cmVlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY3JlYXRlLWtwaS10cmVlLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgQ3JlYXRlS3BpVHJlZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIGxvYWRpbmdNb2RhbDogYm9vbGVhbiA9IHRydWU7XG4gIGtlaVBhcmVudERhdGFTb3VyY2U6IGFueSA9IFtdO1xuICBteUZvcm06IEZvcm1Hcm91cDtcbiAgdGFnVHlwZSA9IFtcInBhcmVudFwiLCBcImNoaWxkXCJdO1xuICBrcGlfY29uc3RydWN0b3IgPSBbXTtcbiAgc2VsZWN0ZWRfcF9rcGk6IGFueSA9IHt9O1xuXG4gIHNlbGVjdF9rcGlfbmFtZTogYW55O1xuICBzZWxlY3RfdGFnX3R5cGU6IGFueTtcbiAgc2VsZWN0ZWRfaWQ6IGFueTtcbiAgc2VsZWN0ZWRfcGFnZV9pZDogYW55O1xuICBzZWxlY3RlZF9uZXN0ZWRfbmFtZTogYW55O1xuICBzZWxlY3RlZF9rcGlfdGlkOiBhbnk7XG4gIHNlbGVjdGVkX2Rlc2M6IGFueTtcbiAgc2VsZWN0ZWRfaW5mbzogYW55O1xuXG4gIGhlaWdodCA9IDkwO1xuICBrcGlEYXRhOiBhbnkgPSBbXTtcbiAgaGVpc3RWYWx1ZTogYW55O1xuICBpc0Zyb21FZGl0YWJsZTogYm9vbGVhbiA9IGZhbHNlO1xuICBpc05ld0twaUFkZGVkOiBib29sZWFuID0gZmFsc2U7XG4gIGlzRWRpdEtwaUFkZGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgZWRpdGFibGVfZGVzYyA9IFwiXCI7XG4gIGVkaXRhYmxlX2luZm8gPSBcIlwiO1xuICBlZGl0YWJsZV9pZDtcbiAgZWRpdGFibGVfcGFnZV9pZDtcbiAgZWRpdGFibGVfdGFnX3R5cGU7XG4gIGVkaXRhYmxlX2twaV9uYW1lO1xuICBlZGl0YWJsZV9rcGlfdGlkO1xuICBzZWxlY3RlZF9rcGlfY2hpbGRfdGlkO1xuICBrcGlfdmlzaWJpbGl0eTogYm9vbGVhbiA9IGZhbHNlO1xuICBrcGlfZXh0ZXJuYWw6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcGFyYW50ZV9rcGlfbmFtZTogYW55O1xuICBpc0NvbXBvbmVudFVwZGF0YTogYm9vbGVhbiA9IGZhbHNlO1xuICB0ZW1wbGF0ZURhdGFTb3VyY2U6IGFueTtcbiAgLy8ga3BpRGF0YUpzb246YW55O1xuICB1c2VyT3B0aW9uQ29udGFpbmVyOiBhbnkgPSBbXTtcblxuICBzZWxlY3RlZF9hbGlhc2VzOiBhbnkgPSBbXTtcbiAgaXNLcGlUcmVlUHJlcGFyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBrcGlDb25maWdEYXRhU291cmNlOiBhbnkgPSBbXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgY29tbW9uU2VydmljZTogQ29tbW9uU2VydmljZSwgcHJpdmF0ZSBmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIsXG4gICAgcHJpdmF0ZSBzZXJ2aWNlOiBDcmVhdGVLcElTZXJ2aWNlLCBwcml2YXRlIHRvYXN0cjogVG9hc3RyU2VydmljZSxcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyKSB7XG5cbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuXG4gICAgdGhpcy5nZXRBbGxLcGlEYXRhKCk7XG4gICAgdGhpcy5nZXRBcHBQYWdlQ29uZmlncygpO1xuICB9XG5cbiAgZ2V0QXBwUGFnZUNvbmZpZ3MoKSB7XG4gICAgdGhpcy5zZXJ2aWNlLmdldEFwcFBhZ2VDb25maWdzKCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChkYXRhOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy50ZW1wbGF0ZURhdGFTb3VyY2UgPSBkYXRhO1xuICAgICAgfSwgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcignVW5leHBlY3RlZCBTZXJ2ZXIgRXhjZXB0aW9uLiBQbGVhc2UgY29udGFjdCBTeXN0ZW0gQWRtaW4uJywgJ1BhZ2UgSUQnKVxuXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIGdldEFsbEtwaURhdGEoKSB7XG5cbiAgICB0aGlzLmtlaVBhcmVudERhdGFTb3VyY2UgPSBbXTtcbiAgICB0aGlzLnNlcnZpY2UubGlzdEtwaUVudHJ5Q29uZmlncygpLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XG4gICAgICBjb25zdCB1c2VyTmFtZSA9IFwiYWRtaW5cIjtcbiAgICAgIHRoaXMua3BpQ29uZmlnRGF0YVNvdXJjZSA9IGRhdGE7XG4gICAgICB0aGlzLmtwaURhdGEgPSB0aGlzLmJ1aWxkTWVudVRyZWUodXNlck5hbWUsIGRhdGEpO1xuICAgICAgdGhpcy5sb2FkaW5nTW9kYWwgPSBmYWxzZTtcbiAgICAgIC8vICB0aGlzLmtlaVBhcmVudERhdGFTb3VyY2UgPSBkYXRhO1xuICAgICAgdGhpcy5wcmVwYXJlUGFyZW50RGF0YVNvdXJjZShkYXRhKVxuXG4gICAgfSwgZXJyID0+IHtcbiAgICAgIHRoaXMubG9hZGluZ01vZGFsID0gZmFsc2U7XG4gICAgICB0aGlzLnRvYXN0ci5lcnJvcignVW5leHBlY3RlZCBTZXJ2ZXIgRXhjZXB0aW9uLiBQbGVhc2UgY29udGFjdCBTeXN0ZW0gQWRtaW4uJywgJ0tQSSBDb25maWcnKVxuICAgIH0pXG4gIH1cblxuICBwcmVwYXJlUGFyZW50RGF0YVNvdXJjZShkYXRhKSB7XG4gICAgZGF0YS5mb3JFYWNoKChyZXN1bHQ6IGFueSkgPT4ge1xuICAgICAgaWYgKHJlc3VsdC50YWdUeXBlID09ICdwYXJlbnQnKSB7XG4gICAgICAgIC8vIGNvbnN0IHRpZEtleSA9IGRhdGEudGFnVHlwZSA9PT0gJ2NoaWxkJyA/ICdjaGlsZFRpZCcgOiAncGFyZW50VGlkJztcbiAgICAgICAgLy8gIGxldCBub2RlID0ge1xuICAgICAgICAvLyAgIFwia3BpTmFtZVwiOiByZXN1bHQua3BpTmFtZSxcbiAgICAgICAgLy8gICBcInRpZFwiOiByZXN1bHRbdGlkS2V5XSxcbiAgICAgICAgLy8gICBcImtwaUlkXCI6IHJlc3VsdC5rcGlJZFxuICAgICAgICAvLyB9XG4gICAgICAgIHRoaXMua2VpUGFyZW50RGF0YVNvdXJjZS5wdXNoKHJlc3VsdCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuXG4gIG1ha2VOZXdLcGlXaXRoVXNlckVudGl0eSgpIHtcbiAgICBjb25zdCBwYWdlRGF0YSA9ICh0aGlzLnNlbGVjdGVkX3BhZ2VfaWQpID8gdGhpcy50ZW1wbGF0ZURhdGFTb3VyY2UuZmluZCgoaXRlbTogYW55KSA9PiBpdGVtLnBhZ2VJZCA9PT0gdGhpcy5zZWxlY3RlZF9wYWdlX2lkKSA6IG51bGw7XG5cbiAgICBsZXQga3BpT2JqID0ge1xuICAgICAgXCJrcGlJZFwiOiB0aGlzLnNlbGVjdGVkX2lkLFxuICAgICAgXCJrcGlOYW1lXCI6IHRoaXMuc2VsZWN0X2twaV9uYW1lLFxuICAgICAgXCJhbGlhc2VzXCI6IHRoaXMuc2VsZWN0ZWRfYWxpYXNlcyxcbiAgICAgIFwicGFnZUlkXCI6IHRoaXMuc2VsZWN0ZWRfcGFnZV9pZCxcbiAgICAgIFwiZGVzY3JpcHRpb25cIjogdGhpcy5zZWxlY3RlZF9kZXNjLFxuICAgICAgXCJrcGlJbmZvXCI6IFwiXCIsXG4gICAgICBcInRhZ1R5cGVcIjogdGhpcy5zZWxlY3RfdGFnX3R5cGUsXG4gICAgICBcImFjdGl2ZVwiOiB0cnVlLFxuICAgICAgXCJ2aXNpYmlsaXR5XCI6IHRoaXMua3BpX3Zpc2liaWxpdHksXG4gICAgICBcImV4dGVybmFsS3BpXCI6IHRoaXMua3BpX2V4dGVybmFsLFxuICAgICAgXCJ0YXJnZXRcIjogXCJcIixcbiAgICAgIFwiaWNvblwiOiBcIlwiLFxuICAgICAgXCJ1cmxcIjogcGFnZURhdGEgPyBwYWdlRGF0YS5wYWdlVXJsIDogXCJcIixcbiAgICAgIFwia3BpVHlwZVwiOiB0aGlzLnNlbGVjdF90YWdfdHlwZSA9PSBcInBhcmVudFwiID8gXCJjb2xsYXBzYWJsZVwiIDogXCJiYXNpY1wiLFxuICAgICAgXCJwYXJlbnRUaWRcIjogdGhpcy5zZWxlY3RlZF9rcGlfdGlkLFxuICAgICAgXCJjaGlsZFRpZFwiOiB0aGlzLnNlbGVjdGVkX2twaV9jaGlsZF90aWQsXG4gICAgICBcInBlcm1pc3Npb25zXCI6IHRoaXMudXNlck9wdGlvbkNvbnRhaW5lcixcbiAgICB9XG5cbiAgICB0aGlzLnNlcnZpY2UuY3JlYXRlS3BpRW50cnlDb25maWcoa3BpT2JqKS5zdWJzY3JpYmUoZGF0YSA9PiB7XG4gICAgICB0aGlzLnRvYXN0ci5zdWNjZXNzKCdLUEkgQ3JlYXRlZCBTdWNjZXNzZnVsbHknKVxuICAgICAgdGhpcy5nZXRBbGxLcGlEYXRhKCk7XG4gICAgICB0aGlzLmdldFJlc2V0ZUtwaSgpO1xuICAgIH0sIGVyciA9PiB7XG4gICAgICB0aGlzLnRvYXN0ci5lcnJvcignVW5leHBlY3RlZCBTZXJ2ZXIgRXhjZXB0aW9uLiBQbGVhc2UgY29udGFjdCBTeXN0ZW0gQWRtaW4uJywgJ0tQSSBDb25maWcnKVxuICAgIH0pXG5cbiAgICBjb25zb2xlLmxvZyhcIktQSSB3aXRoIFVzZXIgRW50aXR5IE9iajpcIiwga3BpT2JqKTtcbiAgfVxuXG4gIGdldEVkaXRhYmxlS3BpKGtwaTogYW55KSB7XG5cbiAgICBjb25zdCBkYXRhID0gdGhpcy5rcGlDb25maWdEYXRhU291cmNlLmZpbmQoKGl0ZW06IGFueSkgPT4gaXRlbS5rcGlJZCA9PT0ga3BpLmlkKTtcblxuICAgIC8vIGNvbnN0IHBhcmVudE5hbWUgPSB0aGlzLmtlaVBhcmVudERhdGFTb3VyY2UuZmluZCgoaXRlbTogYW55KSA9PiBpdGVtLnBhcmVudFRpZCA9PSBkYXRhW1wicGFyZW50VGlkXCJdKTtcblxuXG4gICAgY29uc3QgdGlkS2V5ID0gZGF0YS50YWdUeXBlID09PSAnY2hpbGQnICYmIGRhdGEuY2hpbGRUaWQgJiYgZGF0YS5jaGlsZFRpZC5sZW5ndGggPiAzID8gJ2NoaWxkVGlkJyA6ICdwYXJlbnRUaWQnO1xuICAgIGNvbnN0IHBhcmVudE5hbWUgPSB0aGlzLmtlaVBhcmVudERhdGFTb3VyY2UuZmluZChcbiAgICAgIChpdGVtOiBhbnkpID0+IGl0ZW1bdGlkS2V5XSA9PSBkYXRhW1wicGFyZW50VGlkXCJdXG4gICAgKTtcbiAgICB0aGlzLnBhcmFudGVfa3BpX25hbWUgPSBwYXJlbnROYW1lID8gcGFyZW50TmFtZVsna3BpSWQnXSA6IG51bGw7XG5cblxuICAgIHRoaXMuc2VsZWN0ZWRfaWQgPSBkYXRhW1wia3BpSWRcIl07XG4gICAgdGhpcy5zZWxlY3Rfa3BpX25hbWUgPSBkYXRhW1wia3BpTmFtZVwiXTtcbiAgICB0aGlzLnNlbGVjdGVkX2FsaWFzZXMgPSBkYXRhW1wiYWxpYXNlc1wiXTtcbiAgICB0aGlzLnNlbGVjdGVkX3BhZ2VfaWQgPSBkYXRhW1wicGFnZUlkXCJdO1xuICAgIHRoaXMuc2VsZWN0ZWRfZGVzYyA9IGRhdGFbXCJkZXNjcmlwdGlvblwiXTtcbiAgICB0aGlzLnNlbGVjdF90YWdfdHlwZSA9IGRhdGFbXCJ0YWdUeXBlXCJdO1xuICAgIHRoaXMua3BpX3Zpc2liaWxpdHkgPSBkYXRhW1widmlzaWJpbGl0eVwiXTtcbiAgICB0aGlzLmtwaV9leHRlcm5hbCA9IGRhdGFbXCJleHRlcm5hbEtwaVwiXTtcbiAgICB0aGlzLnNlbGVjdGVkX2twaV90aWQgPSBkYXRhW1wicGFyZW50VGlkXCJdO1xuICAgIHRoaXMuc2VsZWN0ZWRfa3BpX2NoaWxkX3RpZCA9IGRhdGFbXCJjaGlsZFRpZFwiXTtcbiAgICB0aGlzLnVzZXJPcHRpb25Db250YWluZXIgPSAoZGF0YVtcInBlcm1pc3Npb25zXCJdICYmIGRhdGFbXCJwZXJtaXNzaW9uc1wiXS5sZW5ndGggPiAwKSA/IGRhdGFbXCJwZXJtaXNzaW9uc1wiXSA6IFtdO1xuICAgIHRoaXMuaXNFZGl0S3BpQWRkZWQgPSB0cnVlO1xuXG4gIH1cblxuICBnZXRVcGRhdGVLcGkoKSB7XG4gICAgY29uc3QgcGFnZURhdGEgPSAodGhpcy5zZWxlY3RlZF9wYWdlX2lkKSA/IHRoaXMudGVtcGxhdGVEYXRhU291cmNlLmZpbmQoKGl0ZW06IGFueSkgPT4gaXRlbS5wYWdlSWQgPT09IHRoaXMuc2VsZWN0ZWRfcGFnZV9pZCkgOiBudWxsO1xuXG4gICAgbGV0IGtwaU9iaiA9IHtcbiAgICAgIFwia3BpSWRcIjogdGhpcy5zZWxlY3RlZF9pZCxcbiAgICAgIFwia3BpTmFtZVwiOiB0aGlzLnNlbGVjdF9rcGlfbmFtZSxcbiAgICAgIFwiYWxpYXNlc1wiOiB0aGlzLnNlbGVjdGVkX2FsaWFzZXMsXG4gICAgICBcInBhZ2VJZFwiOiB0aGlzLnNlbGVjdGVkX3BhZ2VfaWQsXG4gICAgICBcImRlc2NyaXB0aW9uXCI6IHRoaXMuc2VsZWN0ZWRfZGVzYyxcbiAgICAgIFwia3BpSW5mb1wiOiBcIlwiLFxuICAgICAgXCJ0YWdUeXBlXCI6IHRoaXMuc2VsZWN0X3RhZ190eXBlLFxuICAgICAgXCJhY3RpdmVcIjogdHJ1ZSxcbiAgICAgIFwidmlzaWJpbGl0eVwiOiB0aGlzLmtwaV92aXNpYmlsaXR5LFxuICAgICAgXCJleHRlcm5hbEtwaVwiOiB0aGlzLmtwaV9leHRlcm5hbCxcbiAgICAgIFwidGFyZ2V0XCI6IFwiXCIsXG4gICAgICBcImljb25cIjogXCJcIixcbiAgICAgIFwidXJsXCI6IHBhZ2VEYXRhID8gcGFnZURhdGEucGFnZVVybCA6IFwiXCIsXG4gICAgICBcImtwaVR5cGVcIjogdGhpcy5zZWxlY3RfdGFnX3R5cGUgPT0gXCJwYXJlbnRcIiA/IFwiY29sbGFwc2FibGVcIiA6IFwiYmFzaWNcIixcbiAgICAgIFwicGFyZW50VGlkXCI6IHRoaXMuc2VsZWN0ZWRfa3BpX3RpZCxcbiAgICAgIFwiY2hpbGRUaWRcIjogdGhpcy5zZWxlY3RlZF9rcGlfY2hpbGRfdGlkLFxuICAgICAgXCJwZXJtaXNzaW9uc1wiOiB0aGlzLnVzZXJPcHRpb25Db250YWluZXIsXG4gICAgfVxuXG4gICAgdGhpcy5zZXJ2aWNlLnVwZGF0ZUtwaUVudHJ5Q29uZmlnKGtwaU9iaikuc3Vic2NyaWJlKGRhdGEgPT4ge1xuICAgICAgdGhpcy50b2FzdHIuc3VjY2VzcygnS1BJIFVwZGF0ZWQgU3VjY2Vzc2Z1bGx5JylcbiAgICAgIHRoaXMuZ2V0QWxsS3BpRGF0YSgpO1xuICAgICAgdGhpcy5nZXRSZXNldGVLcGkoKTtcbiAgICAgIHRoaXMuaXNFZGl0S3BpQWRkZWQgPSBmYWxzZTtcblxuICAgIH0sIGVyciA9PiB7XG4gICAgICB0aGlzLnRvYXN0ci5lcnJvcignVW5leHBlY3RlZCBTZXJ2ZXIgRXhjZXB0aW9uLiBQbGVhc2UgY29udGFjdCBTeXN0ZW0gQWRtaW4uJywgJ0tQSSBDb25maWcnKVxuICAgIH0pXG5cbiAgICBjb25zb2xlLmxvZyhcIktQSSB3aXRoIFVzZXIgRW50aXR5IE9iajpcIiwga3BpT2JqKTtcbiAgfVxuXG4gIG9uQ3VzdG9tRGltZW50aW9uQ3JlYXRpbmcoYXJncykge1xuICAgIGNvbnN0IG5ld1ZhbHVlID0gYXJncy50ZXh0O1xuICAgIGFyZ3MuY3VzdG9tSXRlbSA9IG5ld1ZhbHVlO1xuICAgIGNvbnN0IGlzSXRlbUluRGF0YVNvdXJjZSA9IHRoaXMuc2VsZWN0ZWRfYWxpYXNlcy5zb21lKChpdGVtKSA9PiBpdGVtID09PSBuZXdWYWx1ZSk7XG4gICAgaWYgKCFpc0l0ZW1JbkRhdGFTb3VyY2UpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRfYWxpYXNlcy51bnNoaWZ0KG5ld1ZhbHVlKTtcbiAgICB9XG4gIH1cblxuXG5cbiAgZ2V0UmVzZXRlS3BpKCkge1xuICAgIHRoaXMuc2VsZWN0X2twaV9uYW1lID0gJyc7XG4gICAgdGhpcy5zZWxlY3RfdGFnX3R5cGUgPSAnJztcbiAgICB0aGlzLnNlbGVjdGVkX2lkID0gJyc7XG4gICAgdGhpcy5zZWxlY3RlZF9wYWdlX2lkID0gJyc7XG4gICAgdGhpcy5zZWxlY3RlZF9rcGlfdGlkID0gJyc7XG4gICAgdGhpcy5zZWxlY3RlZF9kZXNjID0gJyc7XG4gICAgdGhpcy5wYXJhbnRlX2twaV9uYW1lID0gJyc7XG4gICAgdGhpcy5lZGl0YWJsZV9rcGlfbmFtZSA9ICcnO1xuICAgIHRoaXMuZWRpdGFibGVfdGFnX3R5cGUgPSAnJztcbiAgICB0aGlzLmVkaXRhYmxlX2lkID0gJyc7XG4gICAgdGhpcy5lZGl0YWJsZV9wYWdlX2lkID0gJyc7XG4gICAgdGhpcy5lZGl0YWJsZV9rcGlfdGlkID0gJyc7XG4gICAgdGhpcy5lZGl0YWJsZV9kZXNjID0gJyc7XG4gICAgdGhpcy5lZGl0YWJsZV9pbmZvID0gJyc7XG4gICAgdGhpcy5wYXJhbnRlX2twaV9uYW1lID0gJyc7XG4gICAgdGhpcy5zZWxlY3RlZF9rcGlfY2hpbGRfdGlkID0gJyc7XG4gICAgdGhpcy5zZWxlY3RlZF9hbGlhc2VzID0gW107XG4gICAgdGhpcy5rcGlfZXh0ZXJuYWwgPSBmYWxzZTtcbiAgICB0aGlzLmtwaV92aXNpYmlsaXR5ID0gZmFsc2U7XG4gICAgdGhpcy5pc0NvbXBvbmVudFVwZGF0YSA9IGZhbHNlO1xuICAgIHRoaXMuaXNFZGl0S3BpQWRkZWQgPSBmYWxzZTtcbiAgfVxuXG5cbiAgYWRkVGFndHlwZVZhbHVlKGUpIHtcbiAgICB0aGlzLnNlbGVjdF90YWdfdHlwZSA9IGUudmFsdWU7XG4gIH1cblxuICBnZXRLcGlJdGVtVmFsdWUoZSkge1xuICAgIGlmIChlLmV2ZW50KSB7XG4gICAgICBjb25zdCBrcGlfZGF0YSA9IHRoaXMua2VpUGFyZW50RGF0YVNvdXJjZS5maW5kKChpdGVtOiBhbnkpID0+IGl0ZW0ua3BpSWQgPT09IGUudmFsdWUpO1xuICAgICAgY29uc3QgdGlkS2V5ID0gdGhpcy5zZWxlY3RfdGFnX3R5cGUgPT09ICdjaGlsZCcgJiYgdGhpcy5pc0VkaXRLcGlBZGRlZCA/ICdjaGlsZFRpZCcgOiAncGFyZW50VGlkJztcbiAgICAgIHRoaXMuc2VsZWN0ZWRfa3BpX3RpZCA9IGtwaV9kYXRhW3RpZEtleV07XG4gICAgfVxuXG4gIH1cblxuXG4gIGFkZE5ld0twaSgpIHtcbiAgICB0aGlzLmlzTmV3S3BpQWRkZWQgPSB0cnVlO1xuICAgIHRoaXMuaXNFZGl0S3BpQWRkZWQgPSBmYWxzZTtcbiAgfVxuICBjYW5jZWxVcGRhdGUoKSB7XG4gICAgdGhpcy5pc0VkaXRLcGlBZGRlZCA9IGZhbHNlO1xuICB9XG5cblxuXG4gIGdldEtwaVBhcnJlbnROYW1lKGlucHV0KSB7XG4gICAgY29uc3QgbGFzdEluZGV4ID0gaW5wdXQubGFzdEluZGV4T2YoJy4nKTtcbiAgICBpZiAobGFzdEluZGV4ID09PSAtMSkge1xuICAgICAgcmV0dXJuIGlucHV0O1xuICAgIH1cbiAgICByZXR1cm4gaW5wdXQuc3Vic3RyaW5nKDAsIGxhc3RJbmRleCk7XG4gIH1cblxuXG4gIGdldERlbGV0S3BpKCkge1xuICAgIHRoaXMuc2VydmljZS5kZWxldGVLcGlFbnRyeUNvbmZpZyh0aGlzLnNlbGVjdGVkX2lkKS5zdWJzY3JpYmUoZGF0YSA9PiB7XG4gICAgICB0aGlzLnRvYXN0ci5zdWNjZXNzKCdLUEkgRGVsZXRlZCBTdWNjZXNzZnVsbHknKVxuICAgICAgdGhpcy5nZXRBbGxLcGlEYXRhKCk7XG4gICAgICB0aGlzLmdldFJlc2V0ZUtwaSgpO1xuICAgIH0sIGVyciA9PiB7XG4gICAgICB0aGlzLnRvYXN0ci5lcnJvcignVW5leHBlY3RlZCBTZXJ2ZXIgRXhjZXB0aW9uLiBQbGVhc2UgY29udGFjdCBTeXN0ZW0gQWRtaW4uJywgJ0tQSSBDb25maWcnKVxuICAgIH0pXG4gIH1cblxuXG4gIHJlc2V0ZVVwZGF0ZUtwaUZvcm0oKSB7XG4gICAgdGhpcy5lZGl0YWJsZV9kZXNjID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuZWRpdGFibGVfaW5mbyA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmVkaXRhYmxlX2twaV9uYW1lID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuZWRpdGFibGVfdGFnX3R5cGUgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5lZGl0YWJsZV9rcGlfdGlkID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuZWRpdGFibGVfaWQgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5lZGl0YWJsZV9wYWdlX2lkID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgc3VibWl0TmV3S3BpKCkge1xuICAgIHRoaXMubG9hZGluZ01vZGFsID0gdHJ1ZTtcbiAgICB0aGlzLmlzRWRpdEtwaUFkZGVkID0gZmFsc2U7XG4gICAgbGV0IG9iaiA9IHsga3BpQ29uZmlnRGF0YTogdGhpcy5rcGlEYXRhIH1cbiAgICBjb25zb2xlLmxvZyhvYmopO1xuICAgIHRoaXMuaXNDb21wb25lbnRVcGRhdGEgPSBmYWxzZTtcbiAgICB0aGlzLnNlcnZpY2UuZ2V0Q3JlYXRlS3BpKG9iaikuc3Vic2NyaWJlKGRhdGEgPT4ge1xuICAgICAgdGhpcy5nZXRBbGxLcGlEYXRhKCk7XG4gICAgICB0aGlzLmdldFJlc2V0ZUtwaSgpO1xuICAgIH0pXG4gIH1cblxuXG4gIGJ1aWxkTWVudVRyZWUodXNlck5hbWU6IHN0cmluZywga3BpRGF0YTogYW55W10pOiBhbnlbXSB7XG4gICAgLy8gbGV0IGZpbHRlcmVkTWVudXMgPSBtZW51RGF0YS5maWx0ZXIobWVudSA9PlxuICAgIC8vICAgIXVzZXJOYW1lIHx8IChtZW51LnBlcm1pc3Npb25zICYmIG1lbnUucGVybWlzc2lvbnMuc29tZShwZXJtID0+IHBlcm0uZW50aXR5VmFsdWVzLmluY2x1ZGVzKHVzZXJOYW1lKSkpXG4gICAgLy8gKTtcblxuICAgIGxldCBmaWx0ZXJlZE1lbnVzID0ga3BpRGF0YTtcblxuICAgIGNvbnN0IG1lbnVNYXAgPSBuZXcgTWFwKCk7XG4gICAgY29uc3QgbWVudVRyZWU6IGFueVtdID0gW107XG5cbiAgICBmaWx0ZXJlZE1lbnVzLmZvckVhY2gobWVudSA9PiB7XG4gICAgICBtZW51TWFwLnNldChtZW51LmNoaWxkVGlkIHx8IG1lbnUucGFyZW50VGlkLCB7XG4gICAgICAgIGlkOiBtZW51LmtwaUlkLFxuICAgICAgICB0aXRsZTogbWVudS5rcGlOYW1lLFxuICAgICAgICBpY29uOiBtZW51Lmljb24sXG4gICAgICAgIHR5cGU6IG1lbnUua3BpVHlwZSxcbiAgICAgICAgdGFnVHlwZTogbWVudS50YWdUeXBlLFxuICAgICAgICB2aXNpYmlsaXR5OiB0cnVlLFxuICAgICAgICAuLi4obWVudS5saW5rICYmIHsgbGluazogbWVudS5saW5rLnJlcGxhY2UoL15cXC8rLywgJycpIH0pLFxuICAgICAgICBjaGlsZHJlbjogW11cbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgZmlsdGVyZWRNZW51cy5mb3JFYWNoKGtwaSA9PiB7XG4gICAgICBpZiAoa3BpLnBhcmVudFRpZCAmJiBrcGkuY2hpbGRUaWQpIHtcbiAgICAgICAgY29uc3QgcGFyZW50ID0gbWVudU1hcC5nZXQoa3BpLnBhcmVudFRpZCk7XG4gICAgICAgIGlmIChwYXJlbnQpIHtcbiAgICAgICAgICBwYXJlbnQuY2hpbGRyZW4ucHVzaChtZW51TWFwLmdldChrcGkuY2hpbGRUaWQpKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbWVudVRyZWUucHVzaChtZW51TWFwLmdldChrcGkucGFyZW50VGlkKSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gbWVudVRyZWU7XG4gIH1cblxufVxuIiwiPGFwcC1sb2FkaW5nICpuZ0lmPVwibG9hZGluZ01vZGFsXCI+PC9hcHAtbG9hZGluZz5cbjxkaXYgY2xhc3M9XCJwLTQgZmxleCBmbGV4LXJvdyB3LWZ1bGxcIiAqbmdJZj1cIiFsb2FkaW5nTW9kYWxcIj5cbiAgICA8ZGl2IGNsYXNzPVwibXgtMiBiZy13aGl0ZSBkYXJrOmJnLXRyYW5zcGFyZW50IGJvcmRlci1yXCI+XG4gICAgICAgIDwhLS0gPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzS3BpVHJlZVByZXBhcmVkXCI+IC0tPlxuICAgICAgICAgICAgPHRyZWV2aWV3IGNsYXNzPVwiZGFyayBiZy1ncmF5LTkwMCBkYXJrOmJnLXRyYW5zcGFyZW50XCIgW25hbWVdPVwiJ21haW5OYXZpZ2F0aW9uJ1wiIFtyb3V0ZUtleV09XCIncmFLcGknXCJcbiAgICAgICAgICAgICAgICBbbmF2aWdhdGlvbl09XCJrcGlEYXRhXCIgW2lzU2VhcmNoQm94XT1cImZhbHNlXCIgW2lzRWRpdEljb25dPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgKGVkaXRhYmxlS3BpRGF0YSk9XCJnZXRFZGl0YWJsZUtwaSgkZXZlbnQpXCI+XG4gICAgICAgICAgICA8L3RyZWV2aWV3PlxuICAgICAgICA8IS0tIDwvbmctY29udGFpbmVyPiAtLT5cblxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJteC0yIHctZnVsbFwiPlxuICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGl0ZW0tY2VudGVyIGp1c3RpZnktY2VudGVyIG15LThcIj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ7e2NvbW1vblNlcnZpY2UuYnRuX3dhcm5pbmdfbWR9fVwiIChjbGljayk9XCJhZGROZXdLcGkoKVwiPkFkZCBOZXcgS1BJPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwie3tjb21tb25TZXJ2aWNlLmJ0bl9wcmltYXJ5X21kfX1cIiAoY2xpY2spPVwicm91dGVUb0twaUNvbmZpZygpXCJcbiAgICAgICAgICAgICAgICByb3V0ZXJMaW5rQWN0aXZlPVwicm91dGVyLWxpbmstYWN0aXZlXCI+Q29uZmlndXJlIEtQSTwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj4gLS0+XG4gICAgICAgIDwhLS0gPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzTmV3S3BpQWRkZWRcIj4gLS0+XG4gICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cInB4LTIgdy1mdWxsXCI+IC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibS0xXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMiBwdC0xIHctZnVsbFwiPlxuICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwidGV4dC1sZyBtdC0yXCI+TmFtZTwvcD5cbiAgICAgICAgICAgICAgICA8ZHgtdGV4dC1ib3ggWyhuZ01vZGVsKV09XCJzZWxlY3Rfa3BpX25hbWVcIj48L2R4LXRleHQtYm94PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyB3LWZ1bGxcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLTEgdy0xLzNcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMiBwdC0xICB3LWZ1bGxcIj5cbiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ0ZXh0LWxnIG10LTJcIj4gVGFnIFR5cGU8L3A+XG4gICAgICAgICAgICAgICAgICAgIDxkeC1zZWxlY3QtYm94IFtkYXRhU291cmNlXT1cInRhZ1R5cGVcIiBbKG5nTW9kZWwpXT1cInNlbGVjdF90YWdfdHlwZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAob25WYWx1ZUNoYW5nZWQpPVwiYWRkVGFndHlwZVZhbHVlKCRldmVudClcIj48L2R4LXNlbGVjdC1ib3g+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwhLS0gKG9uQ3VzdG9tSXRlbUNyZWF0aW5nKT1cIm9uQ3VzdG9tRGltZW50aW9uQ3JlYXRpbmcoJGV2ZW50KVwiIC0tPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm0tMSB3LWZ1bGxcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMiBwdC0xICB3LWZ1bGxcIj5cbiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ0ZXh0LWxnIG10LTJcIj5BbGlhc2VzPC9wPlxuICAgICAgICAgICAgICAgICAgICA8ZHgtdGFnLWJveCBbYWNjZXB0Q3VzdG9tVmFsdWVdPVwidHJ1ZVwiIFsobmdNb2RlbCldPVwic2VsZWN0ZWRfYWxpYXNlc1wiPjwvZHgtdGFnLWJveD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm0tMVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTIgcHQtMSAgdy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ0ZXh0LWxnIG10LTJcIj5QYWdlIElEPC9wPlxuICAgICAgICAgICAgICAgIDwhLS0gPGR4LXRleHQtYm94IFsobmdNb2RlbCldPVwic2VsZWN0ZWRfcGFnZV9pZFwiPjwvZHgtdGV4dC1ib3g+IC0tPlxuICAgICAgICAgICAgICAgIDxkeC1zZWxlY3QtYm94IFtpdGVtc109XCJ0ZW1wbGF0ZURhdGFTb3VyY2VcIiB2YWx1ZUV4cHI9XCJwYWdlSWRcIiBkaXNwbGF5RXhwcj1cInBhZ2VOYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgW3NlYXJjaEVuYWJsZWRdPVwidHJ1ZVwiIFsobmdNb2RlbCldPVwic2VsZWN0ZWRfcGFnZV9pZFwiPjwvZHgtc2VsZWN0LWJveD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm0tMVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTIgcHQtMSAgdy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ0ZXh0LWxnIG10LTJcIj5EZXNjcmlwdGlvbjwvcD5cbiAgICAgICAgICAgICAgICA8ZHgtaHRtbC1lZGl0b3IgaGVpZ2h0PVwiJ2F1dG8nXCIgWyhuZ01vZGVsKV09XCJzZWxlY3RlZF9kZXNjXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkeG8tdG9vbGJhciBbbXVsdGlsaW5lXT1cImZhbHNlXCI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkeGktaXRlbSBuYW1lPVwic2l6ZVwiIFthY2NlcHRlZFZhbHVlc109XCJbJzhwdCcsICcxMHB0JywgJzEycHQnLCAnMTRwdCcsICcxOHB0JywgJzI0cHQnLCAnMzZwdCddXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJ7IGlucHV0QXR0cjogeyAnYXJpYS1sYWJlbCc6ICdGb250IHNpemUnIH0gfVwiPjwvZHhpLWl0ZW0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZHhpLWl0ZW0gbmFtZT1cImZvbnRcIiBbYWNjZXB0ZWRWYWx1ZXNdPVwiW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0FyaWFsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDb3VyaWVyIE5ldycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnR2VvcmdpYScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnSW1wYWN0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdMdWNpZGEgQ29uc29sZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnVGFob21hJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdUaW1lcyBOZXcgUm9tYW4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1ZlcmRhbmEnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVwiIFtvcHRpb25zXT1cInsgaW5wdXRBdHRyOiB7ICdhcmlhLWxhYmVsJzogJ0ZvbnQgZmFtaWx5JyB9IH1cIj48L2R4aS1pdGVtPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGR4aS1pdGVtIG5hbWU9XCJzZXBhcmF0b3JcIj48L2R4aS1pdGVtPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGR4aS1pdGVtIG5hbWU9XCJib2xkXCI+PC9keGktaXRlbT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkeGktaXRlbSBuYW1lPVwiaXRhbGljXCI+PC9keGktaXRlbT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkeGktaXRlbSBuYW1lPVwidW5kZXJsaW5lXCI+PC9keGktaXRlbT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkeGktaXRlbSBuYW1lPVwic2VwYXJhdG9yXCI+PC9keGktaXRlbT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkeGktaXRlbSBuYW1lPVwiYWxpZ25MZWZ0XCI+PC9keGktaXRlbT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkeGktaXRlbSBuYW1lPVwiYWxpZ25DZW50ZXJcIj48L2R4aS1pdGVtPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGR4aS1pdGVtIG5hbWU9XCJhbGlnblJpZ2h0XCI+PC9keGktaXRlbT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkeGktaXRlbSBuYW1lPVwiYWxpZ25KdXN0aWZ5XCI+PC9keGktaXRlbT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkeGktaXRlbSBuYW1lPVwic2VwYXJhdG9yXCI+PC9keGktaXRlbT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkeGktaXRlbSBuYW1lPVwib3JkZXJlZExpc3RcIj48L2R4aS1pdGVtPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGR4aS1pdGVtIG5hbWU9XCJidWxsZXRMaXN0XCI+PC9keGktaXRlbT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkeGktaXRlbSBuYW1lPVwic2VwYXJhdG9yXCI+PC9keGktaXRlbT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkeGktaXRlbSBuYW1lPVwiaGVhZGVyXCIgW2FjY2VwdGVkVmFsdWVzXT1cIltmYWxzZSwgMSwgMiwgMywgNCwgNV1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cInsgaW5wdXRBdHRyOiB7ICdhcmlhLWxhYmVsJzogJ0hlYWRlcicgfSB9XCI+PC9keGktaXRlbT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkeGktaXRlbSBuYW1lPVwic2VwYXJhdG9yXCI+PC9keGktaXRlbT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkeGktaXRlbSBuYW1lPVwiY29sb3JcIj48L2R4aS1pdGVtPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGR4aS1pdGVtIG5hbWU9XCJiYWNrZ3JvdW5kXCI+PC9keGktaXRlbT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkeGktaXRlbSBuYW1lPVwic2VwYXJhdG9yXCI+PC9keGktaXRlbT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkeGktaXRlbSBuYW1lPVwibGlua1wiPjwvZHhpLWl0ZW0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZHhpLWl0ZW0gbmFtZT1cImltYWdlXCI+PC9keGktaXRlbT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkeGktaXRlbSBuYW1lPVwic2VwYXJhdG9yXCI+PC9keGktaXRlbT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkeGktaXRlbSBuYW1lPVwiY2xlYXJcIj48L2R4aS1pdGVtPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGR4aS1pdGVtIG5hbWU9XCJjb2RlQmxvY2tcIj48L2R4aS1pdGVtPlxuICAgICAgICAgICAgICAgICAgICA8L2R4by10b29sYmFyPlxuICAgICAgICAgICAgICAgICAgICA8ZHhvLW1lZGlhLXJlc2l6aW5nIFtlbmFibGVkXT1cInRydWVcIj4gPC9keG8tbWVkaWEtcmVzaXppbmc+XG4gICAgICAgICAgICAgICAgICAgIDxkeG8taW1hZ2UtdXBsb2FkIFt0YWJzXT1cIlsnZmlsZScsICd1cmwnXVwiIGZpbGVVcGxvYWRNb2RlPVwiYmFzZTY0XCI+XG4gICAgICAgICAgICAgICAgICAgIDwvZHhvLWltYWdlLXVwbG9hZD5cbiAgICAgICAgICAgICAgICA8L2R4LWh0bWwtZWRpdG9yPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cgdy1mdWxsXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS0xIHctZnVsbFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0yIHB0LTEgdy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwidGV4dC1sZyBtdC0yXCI+IFBhcmVudCBDb21wb25lbnQgPC9wPlxuICAgICAgICAgICAgICAgICAgICA8ZHgtc2VsZWN0LWJveCBbaXRlbXNdPVwia2VpUGFyZW50RGF0YVNvdXJjZVwiIGRpc3BsYXlFeHByPVwia3BpTmFtZVwiIHZhbHVlRXhwcj1cImtwaUlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChvblZhbHVlQ2hhbmdlZCk9XCJnZXRLcGlJdGVtVmFsdWUoJGV2ZW50KVwiIFsobmdNb2RlbCldPVwicGFyYW50ZV9rcGlfbmFtZVwiPjwvZHgtc2VsZWN0LWJveD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm0tMSB3LWZ1bGxcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMiBwdC0xICB3LWZ1bGxcIj5cbiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ0ZXh0LWxnIG10LTJcIj5QYXJlbnQgVElEPC9wPlxuICAgICAgICAgICAgICAgICAgICA8ZHgtdGV4dC1ib3ggWyhuZ01vZGVsKV09XCJzZWxlY3RlZF9rcGlfdGlkXCIgW3JlYWRPbmx5XT1cImZhbHNlXCI+PC9keC10ZXh0LWJveD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm0tMSB3LWZ1bGxcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMiBwdC0xICB3LWZ1bGxcIj5cbiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ0ZXh0LWxnIG10LTJcIj5DaGlsZCBUSUQ8L3A+XG4gICAgICAgICAgICAgICAgICAgIDxkeC10ZXh0LWJveCBbKG5nTW9kZWwpXT1cInNlbGVjdGVkX2twaV9jaGlsZF90aWRcIiBbcmVhZE9ubHldPVwiZmFsc2VcIj48L2R4LXRleHQtYm94PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGp1c3RpZnktYmV0d2VlbiBtdC0zXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMiBwdC0xICB3LWZ1bGxcIj5cbiAgICAgICAgICAgICAgICA8ZHgtY2hlY2stYm94IFsobmdNb2RlbCldPVwia3BpX3Zpc2liaWxpdHlcIiB0ZXh0PVwiVmlzaWJpbGl0eVwiPjwvZHgtY2hlY2stYm94PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMiBwdC0xICB3LWZ1bGxcIj5cbiAgICAgICAgICAgICAgICA8ZHgtY2hlY2stYm94IFsobmdNb2RlbCldPVwia3BpX2V4dGVybmFsXCIgdGV4dD1cIkV4dGVybmFsIEtQSVwiPjwvZHgtY2hlY2stYm94PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJtLTFcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTIgcHQtMSAgdy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInRleHQtbGcgbXQtMlwiPktQSSBJbmZvPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGR4LWh0bWwtZWRpdG9yIGhlaWdodD1cIidhdXRvJ1wiIFsobmdNb2RlbCldPVwic2VsZWN0ZWRfaW5mb1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeG8tdG9vbGJhciBbbXVsdGlsaW5lXT1cImZhbHNlXCI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR4aS1pdGVtIG5hbWU9XCJzaXplXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthY2NlcHRlZFZhbHVlc109XCJbJzhwdCcsICcxMHB0JywgJzEycHQnLCAnMTRwdCcsICcxOHB0JywgJzI0cHQnLCAnMzZwdCddXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cInsgaW5wdXRBdHRyOiB7ICdhcmlhLWxhYmVsJzogJ0ZvbnQgc2l6ZScgfSB9XCI+PC9keGktaXRlbT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR4aS1pdGVtIG5hbWU9XCJmb250XCIgW2FjY2VwdGVkVmFsdWVzXT1cIltcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQXJpYWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDb3VyaWVyIE5ldycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0dlb3JnaWEnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdJbXBhY3QnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdMdWNpZGEgQ29uc29sZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1RhaG9tYScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1RpbWVzIE5ldyBSb21hbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1ZlcmRhbmEnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwieyBpbnB1dEF0dHI6IHsgJ2FyaWEtbGFiZWwnOiAnRm9udCBmYW1pbHknIH0gfVwiPjwvZHhpLWl0ZW0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeGktaXRlbSBuYW1lPVwic2VwYXJhdG9yXCI+PC9keGktaXRlbT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR4aS1pdGVtIG5hbWU9XCJib2xkXCI+PC9keGktaXRlbT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR4aS1pdGVtIG5hbWU9XCJpdGFsaWNcIj48L2R4aS1pdGVtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHhpLWl0ZW0gbmFtZT1cInVuZGVybGluZVwiPjwvZHhpLWl0ZW0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeGktaXRlbSBuYW1lPVwic2VwYXJhdG9yXCI+PC9keGktaXRlbT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR4aS1pdGVtIG5hbWU9XCJhbGlnbkxlZnRcIj48L2R4aS1pdGVtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHhpLWl0ZW0gbmFtZT1cImFsaWduQ2VudGVyXCI+PC9keGktaXRlbT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR4aS1pdGVtIG5hbWU9XCJhbGlnblJpZ2h0XCI+PC9keGktaXRlbT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR4aS1pdGVtIG5hbWU9XCJhbGlnbkp1c3RpZnlcIj48L2R4aS1pdGVtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHhpLWl0ZW0gbmFtZT1cInNlcGFyYXRvclwiPjwvZHhpLWl0ZW0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeGktaXRlbSBuYW1lPVwib3JkZXJlZExpc3RcIj48L2R4aS1pdGVtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHhpLWl0ZW0gbmFtZT1cImJ1bGxldExpc3RcIj48L2R4aS1pdGVtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHhpLWl0ZW0gbmFtZT1cInNlcGFyYXRvclwiPjwvZHhpLWl0ZW0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeGktaXRlbSBuYW1lPVwiaGVhZGVyXCIgW2FjY2VwdGVkVmFsdWVzXT1cIltmYWxzZSwgMSwgMiwgMywgNCwgNV1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwieyBpbnB1dEF0dHI6IHsgJ2FyaWEtbGFiZWwnOiAnSGVhZGVyJyB9IH1cIj48L2R4aS1pdGVtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHhpLWl0ZW0gbmFtZT1cInNlcGFyYXRvclwiPjwvZHhpLWl0ZW0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeGktaXRlbSBuYW1lPVwiY29sb3JcIj48L2R4aS1pdGVtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHhpLWl0ZW0gbmFtZT1cImJhY2tncm91bmRcIj48L2R4aS1pdGVtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHhpLWl0ZW0gbmFtZT1cInNlcGFyYXRvclwiPjwvZHhpLWl0ZW0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeGktaXRlbSBuYW1lPVwibGlua1wiPjwvZHhpLWl0ZW0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeGktaXRlbSBuYW1lPVwiaW1hZ2VcIj48L2R4aS1pdGVtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHhpLWl0ZW0gbmFtZT1cInNlcGFyYXRvclwiPjwvZHhpLWl0ZW0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeGktaXRlbSBuYW1lPVwiY2xlYXJcIj48L2R4aS1pdGVtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHhpLWl0ZW0gbmFtZT1cImNvZGVCbG9ja1wiPjwvZHhpLWl0ZW0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9keG8tdG9vbGJhcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHhvLW1lZGlhLXJlc2l6aW5nIFtlbmFibGVkXT1cInRydWVcIj4gPC9keG8tbWVkaWEtcmVzaXppbmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR4by1pbWFnZS11cGxvYWQgW3RhYnNdPVwiWydmaWxlJywgJ3VybCddXCIgZmlsZVVwbG9hZE1vZGU9XCJiYXNlNjRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2R4by1pbWFnZS11cGxvYWQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2R4LWh0bWwtZWRpdG9yPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XG5cbiAgICAgICAgPGFwcC11c2VyLWFjY2VzcyBbKHVzZXJPcHRpb25Db250YWluZXIpXT1cInVzZXJPcHRpb25Db250YWluZXJcIj5cbiAgICAgICAgPC9hcHAtdXNlci1hY2Nlc3M+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1hdXRvIG10LTUganVzdGlmeS1lbmRcIj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ7e2NvbW1vblNlcnZpY2UuYnRuX3N1Y2Nlc3NfbWR9fVwiIChjbGljayk9XCJnZXRVcGRhdGVLcGkoKVwiICpuZ0lmPVwiaXNFZGl0S3BpQWRkZWRcIj5VcGRhdGUgS1BJXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInt7Y29tbW9uU2VydmljZS5idG5fZGFuZ2VyX21kfX1cIiAoY2xpY2spPVwiZ2V0RGVsZXRLcGkoKVwiICpuZ0lmPVwiaXNFZGl0S3BpQWRkZWRcIj5EZWxldGUgS1BJXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInt7Y29tbW9uU2VydmljZS5idG5fc3VjY2Vzc19tZH19XCIgKGNsaWNrKT1cIm1ha2VOZXdLcGlXaXRoVXNlckVudGl0eSgpXCIgKm5nSWY9XCIhaXNFZGl0S3BpQWRkZWRcIj5DcmVhdGUgS1BJXG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ7e2NvbW1vblNlcnZpY2UuYnRuX3dhcm5pbmdfbWR9fVwiIChjbGljayk9XCJnZXRSZXNldGVLcGkoKVwiPlJlc2V0PC9idXR0b24+XG5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDwhLS0gPC9kaXY+IC0tPlxuICAgICAgICA8IS0tIDwvbmctY29udGFpbmVyPiAtLT5cbiAgICA8L2Rpdj5cblxuXG5cblxuPC9kaXY+Il19
@@ -17639,7 +17639,7 @@ class CreateKpiTreeComponent {
17639
17639
  }
17640
17640
  getEditableKpi(kpi) {
17641
17641
  const data = this.kpiConfigDataSource.find((item) => item.kpiId === kpi.id);
17642
- const tidKey = data.tagType === 'child' && data.childTid.length > 3 ? 'childTid' : 'parentTid';
17642
+ const tidKey = data.tagType === 'child' && data.childTid && data.childTid.length > 3 ? 'childTid' : 'parentTid';
17643
17643
  const parentName = this.keiParentDataSource.find((item) => item[tidKey] == data["parentTid"]);
17644
17644
  this.parante_kpi_name = parentName ? parentName['kpiId'] : null;
17645
17645
  this.selected_id = data["kpiId"];
@@ -17775,7 +17775,7 @@ class CreateKpiTreeComponent {
17775
17775
  const menuMap = new Map();
17776
17776
  const menuTree = [];
17777
17777
  filteredMenus.forEach(menu => {
17778
- menuMap.set(menu.childTid || menu.parentTid, Object.assign(Object.assign({ id: menu.kpiId, title: menu.kpiName, icon: menu.icon, type: menu.kpiType, tagType: menu.tagType, visibility: menu.visibility }, (menu.link && { link: menu.link.replace(/^\/+/, '') })), { children: [] }));
17778
+ menuMap.set(menu.childTid || menu.parentTid, Object.assign(Object.assign({ id: menu.kpiId, title: menu.kpiName, icon: menu.icon, type: menu.kpiType, tagType: menu.tagType, visibility: true }, (menu.link && { link: menu.link.replace(/^\/+/, '') })), { children: [] }));
17779
17779
  });
17780
17780
  filteredMenus.forEach(kpi => {
17781
17781
  if (kpi.parentTid && kpi.childTid) {