ngx-histaff-alpha 2.3.3 → 2.3.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/app/libraries/core-form/core-form/enum-interfaces.mjs +1 -1
- package/esm2022/lib/app/libraries/core-form-control-seeker/core-form-control-seeker/core-form-control-seeker.component.mjs +17 -9
- package/esm2022/lib/app/libraries/core-grid-buffer/core-grid-buffer/core-grid-buffer.component.mjs +1 -1
- package/esm2022/lib/app/libraries/core-page-list/core-page-list.component.mjs +2 -2
- package/esm2022/lib/app/libraries/core-page-list-content/core-page-list-content/core-page-list-content.component.mjs +2 -2
- package/esm2022/lib/app/libraries/core-table/core-table.component.mjs +5 -3
- package/esm2022/lib/app/root/in-memory/in-memory/in-memory.component.mjs +1 -1
- package/fesm2022/ngx-histaff-alpha.mjs +24 -14
- package/fesm2022/ngx-histaff-alpha.mjs.map +1 -1
- package/lib/app/libraries/core-form/core-form/enum-interfaces.d.ts +0 -1
- package/lib/app/libraries/core-table/core-table.component.d.ts +2 -1
- package/package.json +1 -1
|
@@ -275,7 +275,7 @@ export class CorePageListContentComponent extends CoreFormControlBaseComponent {
|
|
|
275
275
|
useExisting: CorePageListContentComponent
|
|
276
276
|
},
|
|
277
277
|
CorePageListState
|
|
278
|
-
], viewQueries: [{ propertyName: "corePageListContentContainer", first: true, predicate: ["corePageListContentContainer"], descendants: true }, { propertyName: "paginationContainer", first: true, predicate: ["paginationContainer"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"core-page-list-content-container\" #corePageListContentContainer>\r\n <core-table width=\"100%\" [height]=\"tableHeight\" headerHeight=\"42px\" [rowHeight]=\"rowHeight\" [wrap]=\"true\"\r\n [columns]=\"columns\" [data]=\"list\" [showCheckbox]=\"!!!hideCheck\" [wrap]=\"true\" headerHeight=\"60px\"\r\n [tools]=\"inlineTools\" (onRowClick)=\"onRowClick($event)\" (onSelectedIdsChange)=\"onSelectedIdsChange($event)\"\r\n [frozen]=\"frozen || 1\" (onSearching)=\"onSearching($event)\" (onColumnCaptionClick)=\"onColumnCaptionClick($event)\"\r\n [corePageListInstanceNumber]=\"corePageListInstanceNumber\"\r\n [disableHighlightOnClick]=\"disableHighlightOnClick\" [loading]=\"loading\" [columnSearchDefaultOpen]=\"columnSearchDefaultOpen\"\r\n [wrap]=\"wrap\"\r\n [headerWrap]=\"headerWrap\"\r\n [headerFirstRowHeight]=\"headerFirstRowHeight\"\r\n [lazyLoading]=\"true\"\r\n ></core-table>\r\n <div class=\"d-flex-end pagination-wrapper\" #paginationContainer>\r\n <core-pagination-full [height]=\"layoutService.corePaginationHeight\" [currentPage$]=\"currentPage$\" [pageSize$]=\"pageSize$\"\r\n [pageCount]=\"pageCount\"\r\n [innerBodyCount$]=\"innerBodyCount$\" [pagination$]=\"pagination$\" [loading]=\"loading\"\r\n [background]=\"'#848484'\"></core-pagination-full>\r\n\r\n </div>\r\n</div>", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: CoreTableComponent, selector: "core-table", inputs: ["id", "width", "height", "showCheckbox", "checkboxSize", "outerButtons", "showTools", "tools", "checkingResetFlag", "headerWrap", "headerFirstRowHeight", "headerSecondRowHeight", "wrap", "allowCellScrollY", "loading", "rowHeight", "frozen", "footer", "columns", "data", "selectedIds", "corePageListInstanceNumber", "disableHighlightOnClick", "freeMode", "searchSwitchDisabled", "inlineToolItems", "columnSearchDefaultOpen", "lazyLoading", "noPaddingCell"], outputs: ["onSearching", "onToolClick", "onRowClick", "onRowDoubleClick", "onSelectedIdsChange", "onSelectedDataChange", "onColumnCaptionClick"] }, { kind: "component", type: CorePaginationFullComponent, selector: "core-pagination-full", inputs: ["currentPage$", "height", "pageCount", "loading", "showAdd", "background", "pageSize$", "innerBodyCount$", "pagination$", "fixedPageSize"], outputs: ["onClickAdd", "onCurrentPageChange"] }] }); }
|
|
278
|
+
], viewQueries: [{ propertyName: "corePageListContentContainer", first: true, predicate: ["corePageListContentContainer"], descendants: true }, { propertyName: "paginationContainer", first: true, predicate: ["paginationContainer"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"core-page-list-content-container\" #corePageListContentContainer>\r\n <core-table width=\"100%\" [height]=\"tableHeight\" headerHeight=\"42px\" [rowHeight]=\"rowHeight\" [wrap]=\"true\"\r\n [columns]=\"columns\" [data]=\"list\" [showCheckbox]=\"!!!hideCheck\" [wrap]=\"true\" headerHeight=\"60px\"\r\n [tools]=\"inlineTools\" (onRowClick)=\"onRowClick($event)\" (onSelectedIdsChange)=\"onSelectedIdsChange($event)\"\r\n [frozen]=\"frozen || 1\" (onSearching)=\"onSearching($event)\" (onColumnCaptionClick)=\"onColumnCaptionClick($event)\"\r\n [corePageListInstanceNumber]=\"corePageListInstanceNumber\"\r\n [disableHighlightOnClick]=\"disableHighlightOnClick\" [loading]=\"loading\" [columnSearchDefaultOpen]=\"columnSearchDefaultOpen\"\r\n [wrap]=\"wrap\"\r\n [headerWrap]=\"headerWrap\"\r\n [headerFirstRowHeight]=\"headerFirstRowHeight\"\r\n [lazyLoading]=\"true\"\r\n ></core-table>\r\n <div class=\"d-flex-end pagination-wrapper\" #paginationContainer>\r\n <core-pagination-full [height]=\"layoutService.corePaginationHeight\" [currentPage$]=\"currentPage$\" [pageSize$]=\"pageSize$\"\r\n [pageCount]=\"pageCount\"\r\n [innerBodyCount$]=\"innerBodyCount$\" [pagination$]=\"pagination$\" [loading]=\"loading\"\r\n [background]=\"'#848484'\"></core-pagination-full>\r\n\r\n </div>\r\n</div>", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: CoreTableComponent, selector: "core-table", inputs: ["id", "width", "height", "showCheckbox", "checkboxSize", "outerButtons", "showTools", "tools", "checkingResetFlag", "headerWrap", "headerFirstRowHeight", "headerSecondRowHeight", "wrap", "allowCellScrollY", "loading", "rowHeight", "frozen", "footer", "columns", "data", "selectedIds", "corePageListInstanceNumber", "disableHighlightOnClick", "freeMode", "searchSwitchDisabled", "disableSorting", "inlineToolItems", "columnSearchDefaultOpen", "lazyLoading", "noPaddingCell"], outputs: ["onSearching", "onToolClick", "onRowClick", "onRowDoubleClick", "onSelectedIdsChange", "onSelectedDataChange", "onColumnCaptionClick"] }, { kind: "component", type: CorePaginationFullComponent, selector: "core-pagination-full", inputs: ["currentPage$", "height", "pageCount", "loading", "showAdd", "background", "pageSize$", "innerBodyCount$", "pagination$", "fixedPageSize"], outputs: ["onClickAdd", "onCurrentPageChange"] }] }); }
|
|
279
279
|
}
|
|
280
280
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: CorePageListContentComponent, decorators: [{
|
|
281
281
|
type: Component,
|
|
@@ -338,4 +338,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
|
|
|
338
338
|
type: ViewChild,
|
|
339
339
|
args: ['paginationContainer']
|
|
340
340
|
}] } });
|
|
341
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS1wYWdlLWxpc3QtY29udGVudC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtaGlzdGFmZi1hbHBoYS9zcmMvbGliL2FwcC9saWJyYXJpZXMvY29yZS1wYWdlLWxpc3QtY29udGVudC9jb3JlLXBhZ2UtbGlzdC1jb250ZW50L2NvcmUtcGFnZS1saXN0LWNvbnRlbnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWhpc3RhZmYtYWxwaGEvc3JjL2xpYi9hcHAvbGlicmFyaWVzL2NvcmUtcGFnZS1saXN0LWNvbnRlbnQvY29yZS1wYWdlLWxpc3QtY29udGVudC9jb3JlLXBhZ2UtbGlzdC1jb250ZW50LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsS0FBSyxFQUFvQyxTQUFTLEVBQTRCLE1BQU0sZUFBZSxDQUFDO0FBTXBJLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQVNqRSxPQUFPLEVBQUUsZUFBZSxFQUFnQixZQUFZLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkgsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFNOUUsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sK0RBQStELENBQUM7QUFDN0csT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzNFLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGdGQUFnRixDQUFDO0FBRTdILE9B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aUJBQWlCOzRCQUMxQixLQUFLLEVBQUUsSUFBSTs0QkFDWCxXQUFXLDhCQUE4Qjt5QkFDMUM7d0JBQ0QsaUJBQWlCO3FCQUNsQjsyVUFLUSxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUlLLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csb0JBQW9CO3NCQUE1QixLQUFLO2dCQUdDLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csdUJBQXVCO3NCQUEvQixLQUFLO2dCQUNHLHVCQUF1QjtzQkFBL0IsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFFcUMsNEJBQTRCO3NCQUF0RSxTQUFTO3VCQUFDLDhCQUE4QjtnQkFDUCxtQkFBbUI7c0JBQXBELFNBQVM7dUJBQUMscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIEFmdGVyVmlld0luaXQsIFZpZXdDaGlsZCwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFJvdXRlciwgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5cclxuaW1wb3J0IHsgSUNvcmVUYWJsZVRvb2xJdGVtIH0gZnJvbSAnLi4vLi4vY29yZS10YWJsZS9jb3JlLXRhYmxlLmNvbXBvbmVudCc7XHJcblxyXG5pbXBvcnQgeyBJRmlsdGVyT3BlcmF0b3IsIElQYWdpbmF0aW9uLCBJUXVlcnlMaXN0UmVxdWVzdCwgSVNlYXJjaEl0ZW0sIElTb3J0SXRlbSB9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMvSVF1ZXJ5TGlzdFJlcXVlc3QnO1xyXG5pbXBvcnQgeyBkZWZhdWx0UGFnaW5nIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL2RlZmF1bHRQYWdpbmcnO1xyXG5cclxuaW1wb3J0IHsgQ29yZVBhZ2VMaXN0U2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUtcGFnZS1saXN0L2NvcmUtcGFnZS1saXN0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb3JlUGFnZUVkaXRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS1wYWdlLWVkaXQvY29yZS1wYWdlLWVkaXQuc2VydmljZSc7XHJcbmltcG9ydCB7IE11bHRpTGFuZ3VhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbXVsdGktbGFuZ3VhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IEFsZXJ0U2VydmljZSB9IGZyb20gJy4uLy4uL2FsZXJ0L2FsZXJ0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBMYXlvdXRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbGF5b3V0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb3JlQnV0dG9uR3JvdXBTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS1idXR0b24tZ3JvdXAtdm5zL2NvcmUtYnV0dG9uLWdyb3VwLXNlcnZpY2UnO1xyXG5cclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBTdWJzY3JpcHRpb24sIGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZpbHRlciwgZnJvbUV2ZW50LCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQ29yZVBhZ2VMaXN0U3RhdGUgfSBmcm9tICcuLi8uLi9jb3JlLXBhZ2UtbGlzdC9jb3JlLXBhZ2UtbGlzdC5zdGF0ZSc7XHJcbmltcG9ydCB7IElGb3JtYXRlZFJlc3BvbnNlIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJmYWNlcy9JRm9ybWF0ZWRSZXNwb25zZSc7XHJcbmltcG9ydCB7IElRdWVyeUxpc3RSZXNwb25zZSB9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMvSVF1ZXJ5TGlzdFJlc3BvbnNlJztcclxuaW1wb3J0IHsgRW51bVRyYW5zbGF0ZUtleSB9IGZyb20gXCJhbHBoYS1nbG9iYWwtY29uc3RhbnRzXCI7XHJcblxyXG5pbXBvcnQgeyBJQ29yZVBhZ2VMaXN0QXBpRGVmaW5pdGlvbiwgSUNvcmVQYWdlTGlzdFNlYXJjaE9iamVjdCB9IGZyb20gJy4uLy4uL2NvcmUtcGFnZS1saXN0L2NvcmUtcGFnZS1saXN0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENvcmVGb3JtQ29udHJvbEJhc2VDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb3JlLWZvcm0tY29udHJvbC1iYXNlL2NvcmUtZm9ybS1jb250cm9sLWJhc2UuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENvcmVUYWJsZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvcmUtdGFibGUvY29yZS10YWJsZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb3JlUGFnaW5hdGlvbkZ1bGxDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb3JlLXBhZ2luYXRpb24tZnVsbC9jb3JlLXBhZ2luYXRpb24tZnVsbC9jb3JlLXBhZ2luYXRpb24tZnVsbC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBJQ29yZVRhYmxlQ29sdW1uSXRlbSB9IGZyb20gJy4uLy4uL2NvcmUtdGFibGUvSUNvcmVUYWJsZUNvbHVtbkl0ZW0nO1xyXG5pbXBvcnQgeyBFbnVtU29ydERpcmVjdGlvbiB9IGZyb20gJy4uLy4uLy4uL2VudW0vRW51bVNvcnREaXJlY3Rpb24nO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdjb3JlLXBhZ2UtbGlzdC1jb250ZW50JyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIENvcmVUYWJsZUNvbXBvbmVudCxcclxuICAgIENvcmVQYWdpbmF0aW9uRnVsbENvbXBvbmVudCxcclxuICBdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jb3JlLXBhZ2UtbGlzdC1jb250ZW50LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9jb3JlLXBhZ2UtbGlzdC1jb250ZW50LmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICBtdWx0aTogdHJ1ZSxcclxuICAgICAgdXNlRXhpc3Rpbmc6IENvcmVQYWdlTGlzdENvbnRlbnRDb21wb25lbnRcclxuICAgIH0sXHJcbiAgICBDb3JlUGFnZUxpc3RTdGF0ZVxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIENvcmVQYWdlTGlzdENvbnRlbnRDb21wb25lbnQgZXh0ZW5kcyBDb3JlRm9ybUNvbnRyb2xCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XHJcblxyXG4gIC8qIFNUQVJUOiBTb21lIHJvdXRlZCBjb21wb25lbnRzLCBzdWNoIGFzIFN0YWZmUHJvZmlsZSwgbWF5IGJlIHJldXNlZCBhcyByZWFkb25seSBmb3Igc2Vla2luZyAqL1xyXG4gIEBJbnB1dCgpIGhlaWdodCE6IG51bWJlcjtcclxuICBASW5wdXQoKSBpc0hlaWdodEZvclRhYmxlITogYm9vbGVhbjtcclxuICAvKiBFTkQ6IFNvbWUgcm91dGVkIGNvbXBvbmVudHMsIHN1Y2ggYXMgU3RhZmZQcm9maWxlLCBtYXkgYmUgcmV1c2VkIGFzIHJlYWRvbmx5IGZvciBzZWVraW5nICovXHJcblxyXG4gICAgLyogY2hhbmdlIHRoZXNlIDIgcHJvcHMgdG8gd3JhcCBoZWFkZXIgdGV4dHMgKi9cclxuICAgIEBJbnB1dCgpIGhlYWRlcldyYXAhOiBib29sZWFuO1xyXG4gICAgQElucHV0KCkgaGVhZGVyRmlyc3RSb3dIZWlnaHQhOiBudW1iZXI7XHJcbiAgICAvKiogKi9cclxuXHJcbiAgQElucHV0KCkgcm93SGVpZ2h0ITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHdyYXAhOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIHRpdGxlITogRW51bVRyYW5zbGF0ZUtleTtcclxuICBASW5wdXQoKSBoYXNJZE9mU3RyaW5nVHlwZSE6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgaGlkZUNoZWNrITogYm9vbGVhbjtcclxuICBASW5wdXQoKSBhcGlEZWZpbml0aW9uITogSUNvcmVQYWdlTGlzdEFwaURlZmluaXRpb247XHJcbiAgQElucHV0KCkgY29sdW1ucyE6IElDb3JlVGFibGVDb2x1bW5JdGVtW107XHJcbiAgQElucHV0KCkgaW5saW5lVG9vbHMhOiBJQ29yZVRhYmxlVG9vbEl0ZW1bXTtcclxuICBASW5wdXQoKSBhdXRvUmVzaXplV2l0aFdpbmRvdyE6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgZXh0cmFNYW51YWxPZmZzZXQhOiBudW1iZXI7XHJcbiAgQElucHV0KCkgZGlzYWJsZUhpZ2hsaWdodE9uQ2xpY2shOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGNvbHVtblNlYXJjaERlZmF1bHRPcGVuITogYm9vbGVhbjtcclxuICBASW5wdXQoKSBvdXRlclBhcmFtJCE6IEJlaGF2aW9yU3ViamVjdDxhbnk+O1xyXG4gIEBJbnB1dCgpIGxvYWRpbmchOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGZyb3plbiE6IG51bWJlcjtcclxuICBASW5wdXQoKSBmaXhlZFBhZ2VTaXplITogbnVtYmVyO1xyXG5cclxuICBAVmlld0NoaWxkKCdjb3JlUGFnZUxpc3RDb250ZW50Q29udGFpbmVyJykgY29yZVBhZ2VMaXN0Q29udGVudENvbnRhaW5lciE6IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZCgncGFnaW5hdGlvbkNvbnRhaW5lcicpIHBhZ2luYXRpb25Db250YWluZXIhOiBFbGVtZW50UmVmO1xyXG5cclxuICBpbm5lckJvZHlDb3VudCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oMSk7XHJcblxyXG4gIHRhYmxlSGVpZ2h0ITogbnVtYmVyO1xyXG5cclxuICBwYWdpbmF0aW9uSGVpZ2h0ITogbnVtYmVyO1xyXG4gIGNvcmVQYWdlTGlzdEluc3RhbmNlTnVtYmVyITogbnVtYmVyO1xyXG5cclxuICByZXNpemVTdHJlYW0kID0gZnJvbUV2ZW50KHdpbmRvdywgJ3Jlc2l6ZScpO1xyXG5cclxuICBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG5cclxuICBzZWxlY3RlZElkczogc3RyaW5nW10gfCBudW1iZXJbXSA9IFtdO1xyXG5cclxuICBpc0FkbWluOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8qIHN0YXJ0OiBwYXNzaW5nIHRoaXMgdmFyIHRvIFBhZ2luYXRpb24gKi9cclxuXHJcbiAgcGFnZUNvdW50ITogbnVtYmVyO1xyXG5cclxuICAvLyBQYXNzaW5nIEJlaGF2aW9yU3ViamVjdCB0byBvdGhlciBjb21wb25lbnQgaXMgbGlrZSB1c2luZyBhIHNlcnZpY2UgKHRoYXQgaG9sZHMgdGhpcyBCZWhhdmlvclN1YmplY3QpIGluamVjdGVkIHRvIGJvdGggY29tcG9uZW50c1xyXG4gIGN1cnJlbnRQYWdlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPigxKTtcclxuXHJcbiAgLy8gU29tZXRpbWUgd2UgbmVlZCB0byBjb3JyZWN0IHRoZSBwYWdlIG51bWJlciBvZiBQYWdpbmF0aW9uIGNvbXBvbmVudCB3aXRob3V0IHJlZnJlc2hpbmcgZ3JpZCBsaXN0IGJ5IEFQSSBjYWxsXHJcbiAgc3VzcGVuZEN1cnJlbnRQYWdlU3Vic2NyaXB0aW9uJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cclxuICAvKiBlbmQ6IHBhc3NpbmcgdGhpcyB2YXIgdG8gUGFnaW5hdGlvbiAqL1xyXG5cclxuICBwYWdlU2l6ZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oZGVmYXVsdFBhZ2luZy50YWtlKTtcclxuXHJcbiAgZmlsdGVyJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55PihudWxsKTtcclxuICBmaWx0ZXJPcGVyYXRvcnMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxJRmlsdGVyT3BlcmF0b3JbXT4oW10pO1xyXG4gIHNlYXJjaCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PElDb3JlUGFnZUxpc3RTZWFyY2hPYmplY3QgfCBudWxsPihudWxsKTtcclxuICBzb3J0JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SVNvcnRJdGVtW10+KFtdKTtcclxuICBwYWdpbmF0aW9uJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SVBhZ2luYXRpb24+KHsgc2tpcDogMCwgdGFrZTogZGVmYXVsdFBhZ2luZy50YWtlIH0pXHJcbiAgZm9yY2VSZWxvYWRpbmdGbGFnJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gIHF1ZXJ5TGlzdFJlcXVlc3QkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxJUXVlcnlMaXN0UmVxdWVzdD4oeyBsYW5nOiAndmknIH0pO1xyXG4gIHF1ZXJ5TGlzdFN1YnNjcmlwdGlvbiE6IFN1YnNjcmlwdGlvbjtcclxuXHJcbiAgcGF1c2VTdWJzY3RpcHRpb246IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgbGlzdCE6IGFueVtdO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgY29yZVBhZ2VMaXN0U2VydmljZTogQ29yZVBhZ2VMaXN0U2VydmljZSxcclxuICAgIHByaXZhdGUgY29yZVBhZ2VMaXN0U3RhdGU6IENvcmVQYWdlTGlzdFN0YXRlLFxyXG4gICAgcHJpdmF0ZSBjb3JlUGFnZUVkaXRTZXJ2aWNlOiBDb3JlUGFnZUVkaXRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcclxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgcHJpdmF0ZSBtbHM6IE11bHRpTGFuZ3VhZ2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZSxcclxuICAgIHB1YmxpYyBsYXlvdXRTZXJ2aWNlOiBMYXlvdXRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjb3JlQnV0dG9uR3JvdXBTZXJ2aWNlOiBDb3JlQnV0dG9uR3JvdXBTZXJ2aWNlXHJcbiAgKSB7XHJcblxyXG4gICAgc3VwZXIoKTtcclxuXHJcbiAgICAvL2lmICghISF0aGlzLmNvbXBvc2l0aW9uKSB0aGlzLmNvbXBvc2l0aW9uID0gRW51bUNvbXBvc2l0aW9uLk5PTkVcclxuICAgIHRoaXMuY29yZVBhZ2VMaXN0SW5zdGFuY2VOdW1iZXIgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcclxuICAgIHRoaXMuY29yZVBhZ2VMaXN0U2VydmljZS5pbnN0YW5jZXMucHVzaCh7XHJcbiAgICAgIGluc3RhbmNlTnVtYmVyOiB0aGlzLmNvcmVQYWdlTGlzdEluc3RhbmNlTnVtYmVyLFxyXG4gICAgICByZWxvYWRGbGFnJDogbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSksXHJcbiAgICAgIGlkJDogbmV3IEJlaGF2aW9yU3ViamVjdDxhbnk+KG51bGwpLFxyXG4gICAgICB0Ym9keUhlaWdodCQ6IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55PihudWxsKSxcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZiAoISFjaGFuZ2VzWydoZWlnaHQnXSkge1xyXG4gICAgICB0aGlzLnRhYmxlSGVpZ2h0ID0gY2hhbmdlc1snaGVpZ2h0J10uY3VycmVudFZhbHVlIC0gdGhpcy5sYXlvdXRTZXJ2aWNlLmNvcmVQYWdpbmF0aW9uSGVpZ2h0XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuXHJcbiAgICBpZiAoISF0aGlzLmZpeGVkUGFnZVNpemUpIHtcclxuICAgICAgdGhpcy5wYWdlU2l6ZSQubmV4dCh0aGlzLmZpeGVkUGFnZVNpemUpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIHNldCBkZWZhdWx0IHNvcnQgZGlyZWN0aW9uXHJcbiAgICBjb25zdCBuZXdTb3J0OiBJU29ydEl0ZW1bXSA9IFtdO1xyXG4gICAgdGhpcy5jb2x1bW5zLm1hcChjID0+IHtcclxuICAgICAgbmV3U29ydC5wdXNoKHtcclxuICAgICAgICBmaWVsZDogYy5maWVsZCxcclxuICAgICAgICBzb3J0RGlyZWN0aW9uOiBFbnVtU29ydERpcmVjdGlvbi5OT05FXHJcbiAgICAgIH0pXHJcbiAgICB9KVxyXG4gICAgdGhpcy5zb3J0JC5uZXh0KG5ld1NvcnQpO1xyXG5cclxuICAgIC8qIFNUQVJUOiBTdWJzY3JpcHRpb25zIGZvciBxdWVyeUxpc3RSZXF1ZXN0JCAqL1xyXG5cclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICB0aGlzLm1scy5sYW5nJC5zdWJzY3JpYmUoeCA9PiB7XHJcbiAgICAgICAgdGhpcy5xdWVyeUxpc3RSZXF1ZXN0JC5uZXh0KHtcclxuICAgICAgICAgIC4uLnRoaXMucXVlcnlMaXN0UmVxdWVzdCQudmFsdWUsXHJcbiAgICAgICAgICBsYW5nOiB4XHJcbiAgICAgICAgfSlcclxuICAgICAgfSlcclxuICAgIClcclxuXHJcbiAgICBpZiAoISF0aGlzLm91dGVyUGFyYW0kKSB7XHJcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICAgIHRoaXMub3V0ZXJQYXJhbSQuc3Vic2NyaWJlKCh4KSA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZygndGhpcy5vdXRlclBhcmFtJCBjaGFuZ2VzJywgeCk7XHJcblxyXG4gICAgICAgICAgLy8gbWVyZ2Ugb3Igb3ZlcndyaXJlIGN1cnJlbnQgZmlsdGVyXHJcbiAgICAgICAgICBjb25zdCBjdXJyZW50RmlsdGVyID0gdGhpcy5maWx0ZXIkLnZhbHVlO1xyXG4gICAgICAgICAgaWYgKCEhY3VycmVudEZpbHRlcikge1xyXG4gICAgICAgICAgICBjb25zdCBuZXdGaWx0ZXIgPSB7XHJcbiAgICAgICAgICAgICAgLi4uY3VycmVudEZpbHRlcixcclxuICAgICAgICAgICAgICAuLi54LFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB0aGlzLmZpbHRlciQubmV4dChuZXdGaWx0ZXIpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5maWx0ZXIkLm5leHQoeCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgdGhpcy5maWx0ZXIkLnN1YnNjcmliZSh4ID0+IHtcclxuICAgICAgICB0aGlzLnF1ZXJ5TGlzdFJlcXVlc3QkLm5leHQoe1xyXG4gICAgICAgICAgLi4udGhpcy5xdWVyeUxpc3RSZXF1ZXN0JC52YWx1ZSxcclxuICAgICAgICAgIGZpbHRlcjogeFxyXG4gICAgICAgIH0pXHJcbiAgICAgIH0pXHJcbiAgICApXHJcblxyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgIHRoaXMuZmlsdGVyT3BlcmF0b3JzJC5zdWJzY3JpYmUoeCA9PiB7XHJcbiAgICAgICAgdGhpcy5xdWVyeUxpc3RSZXF1ZXN0JC5uZXh0KHtcclxuICAgICAgICAgIC4uLnRoaXMucXVlcnlMaXN0UmVxdWVzdCQudmFsdWUsXHJcbiAgICAgICAgICBmaWx0ZXJPcGVyYXRvcnM6IHhcclxuICAgICAgICB9KVxyXG4gICAgICB9KVxyXG4gICAgKVxyXG5cclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICB0aGlzLnNlYXJjaCQucGlwZShcclxuICAgICAgICBkZWJvdW5jZVRpbWUoNTAwKSxcclxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgocHJldiwgY3VycikgPT4ge1xyXG4gICAgICAgICAgbGV0IGNvbmRpdGlvbiA9IGZhbHNlO1xyXG4gICAgICAgICAgaWYgKCEhcHJldiB8fCAhIWN1cnIpIHtcclxuICAgICAgICAgICAgY29uZGl0aW9uID0gSlNPTi5zdHJpbmdpZnkocHJldikgPT09IEpTT04uc3RyaW5naWZ5KGN1cnIpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICByZXR1cm4gY29uZGl0aW9uO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICkuc3Vic2NyaWJlKHggPT4ge1xyXG4gICAgICAgIHRoaXMucXVlcnlMaXN0UmVxdWVzdCQubmV4dCh7XHJcbiAgICAgICAgICAuLi50aGlzLnF1ZXJ5TGlzdFJlcXVlc3QkLnZhbHVlLFxyXG4gICAgICAgICAgc2VhcmNoOiAhIXg/LmN1cnJlbnQgPyBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHg/LmN1cnJlbnQpKSA6IG51bGxcclxuICAgICAgICB9KVxyXG4gICAgICB9KVxyXG4gICAgKVxyXG5cclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICB0aGlzLnNvcnQkLnN1YnNjcmliZSh4ID0+IHtcclxuICAgICAgICB0aGlzLnF1ZXJ5TGlzdFJlcXVlc3QkLm5leHQoe1xyXG4gICAgICAgICAgLi4uSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLnF1ZXJ5TGlzdFJlcXVlc3QkLnZhbHVlKSksXHJcbiAgICAgICAgICBzb3J0OiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHgpKVxyXG4gICAgICAgIH0pXHJcbiAgICAgIH0pXHJcbiAgICApXHJcblxyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgIHRoaXMuY29yZVBhZ2VMaXN0U3RhdGUuaWQkLnN1YnNjcmliZSgoeDogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJjb3JlUGFnZUxpc3RTdGF0ZS5pZCQgaGFzIGNoYW5nZWRcIilcclxuICAgICAgICB0aGlzLnF1ZXJ5TGlzdFJlcXVlc3QkLm5leHQoe1xyXG4gICAgICAgICAgLi4udGhpcy5xdWVyeUxpc3RSZXF1ZXN0JC52YWx1ZSxcclxuICAgICAgICAgIGlkOiB4XHJcbiAgICAgICAgfSlcclxuICAgICAgfSlcclxuICAgIClcclxuXHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgdGhpcy5wYWdlU2l6ZSQuc3Vic2NyaWJlKHggPT4ge1xyXG4gICAgICAgIHRoaXMucGFnaW5hdGlvbiQubmV4dCh7XHJcbiAgICAgICAgICAuLi50aGlzLnBhZ2luYXRpb24kLnZhbHVlLFxyXG4gICAgICAgICAgc2tpcDogMCxcclxuICAgICAgICAgIHRha2U6IHhcclxuICAgICAgICB9KVxyXG4gICAgICB9KVxyXG4gICAgKVxyXG5cclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICB0aGlzLnBhZ2luYXRpb24kLnN1YnNjcmliZSh4ID0+IHtcclxuICAgICAgICB0aGlzLnF1ZXJ5TGlzdFJlcXVlc3QkLm5leHQoe1xyXG4gICAgICAgICAgLi4udGhpcy5xdWVyeUxpc3RSZXF1ZXN0JC52YWx1ZSxcclxuICAgICAgICAgIHBhZ2luYXRpb246IHhcclxuICAgICAgICB9KVxyXG4gICAgICB9KVxyXG4gICAgKVxyXG5cclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICB0aGlzLmNvcmVQYWdlTGlzdFNlcnZpY2UuaW5zdGFuY2VzLmZpbHRlcih4ID0+IHguaW5zdGFuY2VOdW1iZXIgPT09IHRoaXMuY29yZVBhZ2VMaXN0SW5zdGFuY2VOdW1iZXIpWzBdLnJlbG9hZEZsYWckIS5zdWJzY3JpYmUoeCA9PiB7XHJcbiAgICAgICAgdGhpcy5mb3JjZVJlbG9hZGluZ0ZsYWckLm5leHQoeCk7XHJcbiAgICAgIH0pXHJcbiAgICApXHJcblxyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgIHRoaXMuZm9yY2VSZWxvYWRpbmdGbGFnJC5zdWJzY3JpYmUoeCA9PiB7XHJcbiAgICAgICAgdGhpcy5xdWVyeUxpc3RSZXF1ZXN0JC5uZXh0KHtcclxuICAgICAgICAgIC4uLnRoaXMucXVlcnlMaXN0UmVxdWVzdCQudmFsdWUsXHJcbiAgICAgICAgICBmb3JjZVJlbG9hZGluZ0ZsYWc6IHhcclxuICAgICAgICB9KVxyXG4gICAgICB9KVxyXG4gICAgKVxyXG5cclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICB0aGlzLmN1cnJlbnRQYWdlJC5waXBlKFxyXG4gICAgICAgIGZpbHRlcihfID0+ICEhIXRoaXMuc3VzcGVuZEN1cnJlbnRQYWdlU3Vic2NyaXB0aW9uJC52YWx1ZSksXHJcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSAvLyBJTVBPUlRBTlQhXHJcbiAgICAgIClcclxuICAgICAgICAuc3Vic2NyaWJlKHggPT4gdGhpcy5xdWVyeUxpc3RSZXF1ZXN0JC5uZXh0KHtcclxuICAgICAgICAgIC4uLnRoaXMucXVlcnlMaXN0UmVxdWVzdCQudmFsdWUsXHJcbiAgICAgICAgICBwYWdpbmF0aW9uOiB7XHJcbiAgICAgICAgICAgIC4uLnRoaXMucXVlcnlMaXN0UmVxdWVzdCQudmFsdWU/LnBhZ2luYXRpb24hLFxyXG4gICAgICAgICAgICBza2lwOiAoeCAtIDEpICogdGhpcy5xdWVyeUxpc3RSZXF1ZXN0JC52YWx1ZT8ucGFnaW5hdGlvbj8udGFrZSFcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KSlcclxuICAgIClcclxuXHJcbiAgICAvKiBFTkQ6IFN1YnNjcmlwdGlvbnMgZm9yIHF1ZXJ5TGlzdFJlcXVlc3QkICovXHJcblxyXG4gICAgLyogU1RBUlQ6IFN1YnNjcmlwdGlvbiBmb3IgbGlzdCAqL1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcblxyXG4gICAgICB0aGlzLnF1ZXJ5TGlzdFJlcXVlc3QkLnBpcGUoXHJcbiAgICAgICAgZmlsdGVyKCh4OiBhbnkpID0+ICEheCAmJiAhIXguc29ydCAmJiAhIXgucGFnaW5hdGlvbiksXHJcbiAgICAgICAgZmlsdGVyKF8gPT4gIXRoaXMucGF1c2VTdWJzY3RpcHRpb24pLFxyXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKChwcmV2LCBjdXJyKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBjb25kaXRpb24gPSAoSlNPTi5zdHJpbmdpZnkocHJldikgPT09IEpTT04uc3RyaW5naWZ5KGN1cnIpKVxyXG4gICAgICAgICAgcmV0dXJuIGNvbmRpdGlvbjtcclxuICAgICAgICB9KSxcclxuICAgICAgICAvKlxyXG4gICAgICAgIC8qIFNUQVJUOiB1c2Ugc3dpdGNoTWFwIGZvciBjYW5jZWxsYXRpb25cclxuICAgICAgICAqL1xyXG4gICAgICAgIHN3aXRjaE1hcCh4ID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKFwic3dpdGNoTWFwIHhcIiwgeClcclxuICAgICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICAgICAgICBjb25zdCB1cmwgPSB0aGlzLmFwaURlZmluaXRpb24ucXVlcnlMaXN0UmVsYXRpdmVQYXRoO1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuY29yZVBhZ2VMaXN0U2VydmljZS5xdWVyeUxpc3QoeCwgdXJsKVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLypcclxuICAgICAgICAvKiBFTkQ6IHVzZSBzd2l0Y2hNYXAgZm9yIGNhbmNlbGxhdGlvblxyXG4gICAgICAgICovXHJcblxyXG4gICAgICApLnN1YnNjcmliZSgoeDogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHgub2sgJiYgeC5zdGF0dXMgPT09IDIwMCkge1xyXG4gICAgICAgICAgY29uc3QgYm9keTogSUZvcm1hdGVkUmVzcG9uc2UgPSB4LmJvZHlcclxuICAgICAgICAgIC8vdGhpcy5yZXNwb25zZVNlcnZpY2UucmVzb2x2ZShib2R5KTtcclxuXHJcbiAgICAgICAgICBpZiAoYm9keS5zdGF0dXNDb2RlID09PSAyMDApIHtcclxuICAgICAgICAgICAgY29uc3QgaW5uZXJCb2R5OiBJUXVlcnlMaXN0UmVzcG9uc2UgPSBib2R5LmlubmVyQm9keTtcclxuICAgICAgICAgICAgaWYgKCEhaW5uZXJCb2R5KSB7XHJcblxyXG4gICAgICAgICAgICAgIHRoaXMubGlzdCA9IGlubmVyQm9keS5saXN0ITtcclxuICAgICAgICAgICAgICB0aGlzLmlubmVyQm9keUNvdW50JC5uZXh0KGlubmVyQm9keS5jb3VudCEpO1xyXG4gICAgICAgICAgICAgIHRoaXMucGFnZUNvdW50ID0gTWF0aC5jZWlsKGlubmVyQm9keS5jb3VudCEgLyB0aGlzLnBhZ2VTaXplJC52YWx1ZSk7XHJcblxyXG4gICAgICAgICAgICAgIC8qIFRyaWNraWx5IHJlc2V0IGlkJCAqL1xyXG4gICAgICAgICAgICAgIHRoaXMucGF1c2VTdWJzY3RpcHRpb24gPSB0cnVlO1xyXG4gICAgICAgICAgICAgIGlmICghIXRoaXMuY29yZVBhZ2VMaXN0U3RhdGUuaWQkLnZhbHVlKSB0aGlzLmNvcmVQYWdlTGlzdFN0YXRlLmlkJC5uZXh0KG51bGwpO1xyXG4gICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5wYXVzZVN1YnNjdGlwdGlvbiA9IGZhbHNlKTtcclxuXHJcbiAgICAgICAgICAgICAgaWYgKGlubmVyQm9keS5wYWdlICE9PSB0aGlzLmN1cnJlbnRQYWdlJC52YWx1ZSkge1xyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMuc3VzcGVuZEN1cnJlbnRQYWdlU3Vic2NyaXB0aW9uJC5uZXh0KHRydWUpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50UGFnZSQubmV4dChpbm5lckJvZHkucGFnZSEpXHJcblxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLmxpc3QgPSBbXTtcclxuICAgICAgICAgICAgICB0aGlzLnBhZ2VDb3VudCA9IDA7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmxpc3QgPSBbXTtcclxuICAgICAgICAgICAgdGhpcy5wYWdlQ291bnQgPSAwO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAvL3RoaXMuYWxlcnRTZXJ2aWNlLmVycm9yKEpTT04uc3RyaW5naWZ5KEpTT04uc3RyaW5naWZ5KHgsIG51bGwsIDIpKSwgYWxlcnRPcHRpb25zKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG5cclxuICAgICAgfSlcclxuICAgIClcclxuICAgIC8qIEVORDogU3Vic2NyaXB0aW9ucyBmb3IgbGlzdCAqL1xyXG5cclxuICB9XHJcblxyXG4gIG9uU2VhcmNoaW5nKGU6IElTZWFyY2hJdGVtW10pOiB2b2lkIHtcclxuICAgIGNvbnN0IHByZXYgPSAhIXRoaXMuc2VhcmNoJC52YWx1ZT8uY3VycmVudCA/IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5zZWFyY2gkLnZhbHVlPy5jdXJyZW50KSkgOiBudWxsO1xyXG4gICAgdGhpcy5zZWFyY2gkLm5leHQoe1xyXG4gICAgICBwcmV2aW91czogcHJldiEsXHJcbiAgICAgIGN1cnJlbnQ6IGUsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICB9XHJcblxyXG4gIG9uUm93Q2xpY2soZTogYW55KSB7XHJcbiAgICBpZiAoISFlLmlkKSB0aGlzLm9uQ2hhbmdlKGUuaWQpXHJcbiAgfVxyXG5cclxuICBvblNlbGVjdGVkSWRzQ2hhbmdlKGU6IHN0cmluZ1tdIHwgbnVtYmVyW10pIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRJZHMgPSBlO1xyXG4gIH1cclxuXHJcbiAgb25Db2x1bW5DYXB0aW9uQ2xpY2soZTogSUNvcmVUYWJsZUNvbHVtbkl0ZW0pIHtcclxuICAgIGNvbnN0IG5ld1NvcnQ6IElTb3J0SXRlbVtdID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLnNvcnQkLnZhbHVlKSk7XHJcbiAgICBuZXdTb3J0Lm1hcChjID0+IHtcclxuICAgICAgaWYgKGMuZmllbGQgPT09IGUuZmllbGQpIHtcclxuICAgICAgICBpZiAoYy5zb3J0RGlyZWN0aW9uID09PSBFbnVtU29ydERpcmVjdGlvbi5OT05FKSB7XHJcbiAgICAgICAgICBjLnNvcnREaXJlY3Rpb24gPSBFbnVtU29ydERpcmVjdGlvbi5BU0M7XHJcbiAgICAgICAgfSBlbHNlIGlmIChjLnNvcnREaXJlY3Rpb24gPT09IEVudW1Tb3J0RGlyZWN0aW9uLkFTQykge1xyXG4gICAgICAgICAgYy5zb3J0RGlyZWN0aW9uID0gRW51bVNvcnREaXJlY3Rpb24uREVTQztcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgYy5zb3J0RGlyZWN0aW9uID0gRW51bVNvcnREaXJlY3Rpb24uTk9ORTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgYy5zb3J0RGlyZWN0aW9uID0gRW51bVNvcnREaXJlY3Rpb24uTk9ORVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gICAgdGhpcy5zb3J0JC5uZXh0KG5ld1NvcnQpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMubWFwKHggPT4geD8udW5zdWJzY3JpYmUoKSk7XHJcblxyXG4gICAgLyogUmVtb3ZlIGN1cnJlbnQgY29yZVBhZ2VMaXN0SW5zdGFuY2UgKi9cclxuICAgIGNvbnN0IHRyeUZpbmQgPSB0aGlzLmNvcmVQYWdlTGlzdFNlcnZpY2UuaW5zdGFuY2VzLmZpbHRlcih4ID0+IHguaW5zdGFuY2VOdW1iZXIgPT09IHRoaXMuY29yZVBhZ2VMaXN0SW5zdGFuY2VOdW1iZXIpO1xyXG4gICAgaWYgKCEhdHJ5RmluZC5sZW5ndGgpIHtcclxuICAgICAgY29uc3QgZXhjbHVkZWQgPSB0aGlzLmNvcmVQYWdlTGlzdFNlcnZpY2UuaW5zdGFuY2VzLmZpbHRlcih4ID0+IHguaW5zdGFuY2VOdW1iZXIgIT09IHRoaXMuY29yZVBhZ2VMaXN0SW5zdGFuY2VOdW1iZXIpO1xyXG4gICAgICB0aGlzLmNvcmVQYWdlTGlzdFNlcnZpY2UuaW5zdGFuY2VzID0gZXhjbHVkZWQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiY29yZS1wYWdlLWxpc3QtY29udGVudC1jb250YWluZXJcIiAjY29yZVBhZ2VMaXN0Q29udGVudENvbnRhaW5lcj5cclxuICAgIDxjb3JlLXRhYmxlIHdpZHRoPVwiMTAwJVwiIFtoZWlnaHRdPVwidGFibGVIZWlnaHRcIiBoZWFkZXJIZWlnaHQ9XCI0MnB4XCIgW3Jvd0hlaWdodF09XCJyb3dIZWlnaHRcIiBbd3JhcF09XCJ0cnVlXCJcclxuICAgICAgICBbY29sdW1uc109XCJjb2x1bW5zXCIgW2RhdGFdPVwibGlzdFwiIFtzaG93Q2hlY2tib3hdPVwiISEhaGlkZUNoZWNrXCIgW3dyYXBdPVwidHJ1ZVwiIGhlYWRlckhlaWdodD1cIjYwcHhcIlxyXG4gICAgICAgIFt0b29sc109XCJpbmxpbmVUb29sc1wiIChvblJvd0NsaWNrKT1cIm9uUm93Q2xpY2soJGV2ZW50KVwiIChvblNlbGVjdGVkSWRzQ2hhbmdlKT1cIm9uU2VsZWN0ZWRJZHNDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgW2Zyb3plbl09XCJmcm96ZW4gfHwgMVwiIChvblNlYXJjaGluZyk9XCJvblNlYXJjaGluZygkZXZlbnQpXCIgKG9uQ29sdW1uQ2FwdGlvbkNsaWNrKT1cIm9uQ29sdW1uQ2FwdGlvbkNsaWNrKCRldmVudClcIlxyXG4gICAgICAgIFtjb3JlUGFnZUxpc3RJbnN0YW5jZU51bWJlcl09XCJjb3JlUGFnZUxpc3RJbnN0YW5jZU51bWJlclwiXHJcbiAgICAgICAgW2Rpc2FibGVIaWdobGlnaHRPbkNsaWNrXT1cImRpc2FibGVIaWdobGlnaHRPbkNsaWNrXCIgW2xvYWRpbmddPVwibG9hZGluZ1wiIFtjb2x1bW5TZWFyY2hEZWZhdWx0T3Blbl09XCJjb2x1bW5TZWFyY2hEZWZhdWx0T3BlblwiXHJcbiAgICAgICAgW3dyYXBdPVwid3JhcFwiXHJcbiAgICAgICAgW2hlYWRlcldyYXBdPVwiaGVhZGVyV3JhcFwiXHJcbiAgICAgICAgW2hlYWRlckZpcnN0Um93SGVpZ2h0XT1cImhlYWRlckZpcnN0Um93SGVpZ2h0XCJcclxuICAgICAgICBbbGF6eUxvYWRpbmddPVwidHJ1ZVwiXHJcbiAgICAgICAgPjwvY29yZS10YWJsZT5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgtZW5kIHBhZ2luYXRpb24td3JhcHBlclwiICNwYWdpbmF0aW9uQ29udGFpbmVyPlxyXG4gICAgICAgIDxjb3JlLXBhZ2luYXRpb24tZnVsbCBbaGVpZ2h0XT1cImxheW91dFNlcnZpY2UuY29yZVBhZ2luYXRpb25IZWlnaHRcIiBbY3VycmVudFBhZ2UkXT1cImN1cnJlbnRQYWdlJFwiIFtwYWdlU2l6ZSRdPVwicGFnZVNpemUkXCJcclxuICAgICAgICAgICAgW3BhZ2VDb3VudF09XCJwYWdlQ291bnRcIlxyXG4gICAgICAgICAgICBbaW5uZXJCb2R5Q291bnQkXT1cImlubmVyQm9keUNvdW50JFwiIFtwYWdpbmF0aW9uJF09XCJwYWdpbmF0aW9uJFwiIFtsb2FkaW5nXT1cImxvYWRpbmdcIlxyXG4gICAgICAgICAgICBbYmFja2dyb3VuZF09XCInIzg0ODQ4NCdcIj48L2NvcmUtcGFnaW5hdGlvbi1mdWxsPlxyXG5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj4iXX0=
|
|
341
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS1wYWdlLWxpc3QtY29udGVudC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtaGlzdGFmZi1hbHBoYS9zcmMvbGliL2FwcC9saWJyYXJpZXMvY29yZS1wYWdlLWxpc3QtY29udGVudC9jb3JlLXBhZ2UtbGlzdC1jb250ZW50L2NvcmUtcGFnZS1saXN0LWNvbnRlbnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWhpc3RhZmYtYWxwaGEvc3JjL2xpYi9hcHAvbGlicmFyaWVzL2NvcmUtcGFnZS1saXN0LWNvbnRlbnQvY29yZS1wYWdlLWxpc3QtY29udGVudC9jb3JlLXBhZ2UtbGlzdC1jb250ZW50LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsS0FBSyxFQUFvQyxTQUFTLEVBQTRCLE1BQU0sZUFBZSxDQUFDO0FBTXBJLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQVNqRSxPQUFPLEVBQUUsZUFBZSxFQUFnQixZQUFZLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkgsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFNOUUsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sK0RBQStELENBQUM7QUFDN0csT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzNFLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGdGQUFnRixDQUFDO0FBRTdILE9B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aUJBQWlCOzRCQUMxQixLQUFLLEVBQUUsSUFBSTs0QkFDWCxXQUFXLDhCQUE4Qjt5QkFDMUM7d0JBQ0QsaUJBQWlCO3FCQUNsQjsyVUFLUSxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUlLLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csb0JBQW9CO3NCQUE1QixLQUFLO2dCQUdDLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csdUJBQXVCO3NCQUEvQixLQUFLO2dCQUNHLHVCQUF1QjtzQkFBL0IsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFFcUMsNEJBQTRCO3NCQUF0RSxTQUFTO3VCQUFDLDhCQUE4QjtnQkFDUCxtQkFBbUI7c0JBQXBELFNBQVM7dUJBQUMscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIEFmdGVyVmlld0luaXQsIFZpZXdDaGlsZCwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFJvdXRlciwgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5cclxuaW1wb3J0IHsgSUNvcmVUYWJsZVRvb2xJdGVtIH0gZnJvbSAnLi4vLi4vY29yZS10YWJsZS9jb3JlLXRhYmxlLmNvbXBvbmVudCc7XHJcblxyXG5pbXBvcnQgeyBJRmlsdGVyT3BlcmF0b3IsIElQYWdpbmF0aW9uLCBJUXVlcnlMaXN0UmVxdWVzdCwgSVNlYXJjaEl0ZW0sIElTb3J0SXRlbSB9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMvSVF1ZXJ5TGlzdFJlcXVlc3QnO1xyXG5pbXBvcnQgeyBkZWZhdWx0UGFnaW5nIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL2RlZmF1bHRQYWdpbmcnO1xyXG5cclxuaW1wb3J0IHsgQ29yZVBhZ2VMaXN0U2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUtcGFnZS1saXN0L2NvcmUtcGFnZS1saXN0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb3JlUGFnZUVkaXRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS1wYWdlLWVkaXQvY29yZS1wYWdlLWVkaXQuc2VydmljZSc7XHJcbmltcG9ydCB7IE11bHRpTGFuZ3VhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbXVsdGktbGFuZ3VhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IEFsZXJ0U2VydmljZSB9IGZyb20gJy4uLy4uL2FsZXJ0L2FsZXJ0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBMYXlvdXRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbGF5b3V0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb3JlQnV0dG9uR3JvdXBTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS1idXR0b24tZ3JvdXAtdm5zL2NvcmUtYnV0dG9uLWdyb3VwLXNlcnZpY2UnO1xyXG5cclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBTdWJzY3JpcHRpb24sIGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZpbHRlciwgZnJvbUV2ZW50LCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQ29yZVBhZ2VMaXN0U3RhdGUgfSBmcm9tICcuLi8uLi9jb3JlLXBhZ2UtbGlzdC9jb3JlLXBhZ2UtbGlzdC5zdGF0ZSc7XHJcbmltcG9ydCB7IElGb3JtYXRlZFJlc3BvbnNlIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJmYWNlcy9JRm9ybWF0ZWRSZXNwb25zZSc7XHJcbmltcG9ydCB7IElRdWVyeUxpc3RSZXNwb25zZSB9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMvSVF1ZXJ5TGlzdFJlc3BvbnNlJztcclxuaW1wb3J0IHsgRW51bVRyYW5zbGF0ZUtleSB9IGZyb20gXCJhbHBoYS1nbG9iYWwtY29uc3RhbnRzXCI7XHJcblxyXG5pbXBvcnQgeyBJQ29yZVBhZ2VMaXN0QXBpRGVmaW5pdGlvbiwgSUNvcmVQYWdlTGlzdFNlYXJjaE9iamVjdCB9IGZyb20gJy4uLy4uL2NvcmUtcGFnZS1saXN0L2NvcmUtcGFnZS1saXN0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENvcmVGb3JtQ29udHJvbEJhc2VDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb3JlLWZvcm0tY29udHJvbC1iYXNlL2NvcmUtZm9ybS1jb250cm9sLWJhc2UuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENvcmVUYWJsZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvcmUtdGFibGUvY29yZS10YWJsZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb3JlUGFnaW5hdGlvbkZ1bGxDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb3JlLXBhZ2luYXRpb24tZnVsbC9jb3JlLXBhZ2luYXRpb24tZnVsbC9jb3JlLXBhZ2luYXRpb24tZnVsbC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBJQ29yZVRhYmxlQ29sdW1uSXRlbSB9IGZyb20gJy4uLy4uL2NvcmUtdGFibGUvSUNvcmVUYWJsZUNvbHVtbkl0ZW0nO1xyXG5pbXBvcnQgeyBFbnVtU29ydERpcmVjdGlvbiB9IGZyb20gJy4uLy4uLy4uL2VudW0vRW51bVNvcnREaXJlY3Rpb24nO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdjb3JlLXBhZ2UtbGlzdC1jb250ZW50JyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIENvcmVUYWJsZUNvbXBvbmVudCxcclxuICAgIENvcmVQYWdpbmF0aW9uRnVsbENvbXBvbmVudCxcclxuICBdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jb3JlLXBhZ2UtbGlzdC1jb250ZW50LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9jb3JlLXBhZ2UtbGlzdC1jb250ZW50LmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICBtdWx0aTogdHJ1ZSxcclxuICAgICAgdXNlRXhpc3Rpbmc6IENvcmVQYWdlTGlzdENvbnRlbnRDb21wb25lbnRcclxuICAgIH0sXHJcbiAgICBDb3JlUGFnZUxpc3RTdGF0ZVxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIENvcmVQYWdlTGlzdENvbnRlbnRDb21wb25lbnQgZXh0ZW5kcyBDb3JlRm9ybUNvbnRyb2xCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XHJcblxyXG4gIC8qIFNUQVJUOiBTb21lIHJvdXRlZCBjb21wb25lbnRzLCBzdWNoIGFzIFN0YWZmUHJvZmlsZSwgbWF5IGJlIHJldXNlZCBhcyByZWFkb25seSBmb3Igc2Vla2luZyAqL1xyXG4gIEBJbnB1dCgpIGhlaWdodCE6IG51bWJlcjtcclxuICBASW5wdXQoKSBpc0hlaWdodEZvclRhYmxlITogYm9vbGVhbjtcclxuICAvKiBFTkQ6IFNvbWUgcm91dGVkIGNvbXBvbmVudHMsIHN1Y2ggYXMgU3RhZmZQcm9maWxlLCBtYXkgYmUgcmV1c2VkIGFzIHJlYWRvbmx5IGZvciBzZWVraW5nICovXHJcblxyXG4gICAgLyogY2hhbmdlIHRoZXNlIDIgcHJvcHMgdG8gd3JhcCBoZWFkZXIgdGV4dHMgKi9cclxuICAgIEBJbnB1dCgpIGhlYWRlcldyYXAhOiBib29sZWFuO1xyXG4gICAgQElucHV0KCkgaGVhZGVyRmlyc3RSb3dIZWlnaHQhOiBudW1iZXI7XHJcbiAgICAvKiogKi9cclxuXHJcbiAgQElucHV0KCkgcm93SGVpZ2h0ITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHdyYXAhOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIHRpdGxlITogRW51bVRyYW5zbGF0ZUtleTtcclxuICBASW5wdXQoKSBoYXNJZE9mU3RyaW5nVHlwZSE6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgaGlkZUNoZWNrITogYm9vbGVhbjtcclxuICBASW5wdXQoKSBhcGlEZWZpbml0aW9uITogSUNvcmVQYWdlTGlzdEFwaURlZmluaXRpb247XHJcbiAgQElucHV0KCkgY29sdW1ucyE6IElDb3JlVGFibGVDb2x1bW5JdGVtW107XHJcbiAgQElucHV0KCkgaW5saW5lVG9vbHMhOiBJQ29yZVRhYmxlVG9vbEl0ZW1bXTtcclxuICBASW5wdXQoKSBhdXRvUmVzaXplV2l0aFdpbmRvdyE6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgZXh0cmFNYW51YWxPZmZzZXQhOiBudW1iZXI7XHJcbiAgQElucHV0KCkgZGlzYWJsZUhpZ2hsaWdodE9uQ2xpY2shOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGNvbHVtblNlYXJjaERlZmF1bHRPcGVuITogYm9vbGVhbjtcclxuICBASW5wdXQoKSBvdXRlclBhcmFtJCE6IEJlaGF2aW9yU3ViamVjdDxhbnk+O1xyXG4gIEBJbnB1dCgpIGxvYWRpbmchOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGZyb3plbiE6IG51bWJlcjtcclxuICBASW5wdXQoKSBmaXhlZFBhZ2VTaXplITogbnVtYmVyO1xyXG5cclxuICBAVmlld0NoaWxkKCdjb3JlUGFnZUxpc3RDb250ZW50Q29udGFpbmVyJykgY29yZVBhZ2VMaXN0Q29udGVudENvbnRhaW5lciE6IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZCgncGFnaW5hdGlvbkNvbnRhaW5lcicpIHBhZ2luYXRpb25Db250YWluZXIhOiBFbGVtZW50UmVmO1xyXG5cclxuICBpbm5lckJvZHlDb3VudCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oMSk7XHJcblxyXG4gIHRhYmxlSGVpZ2h0ITogbnVtYmVyO1xyXG5cclxuICBwYWdpbmF0aW9uSGVpZ2h0ITogbnVtYmVyO1xyXG4gIGNvcmVQYWdlTGlzdEluc3RhbmNlTnVtYmVyITogbnVtYmVyO1xyXG5cclxuICByZXNpemVTdHJlYW0kID0gZnJvbUV2ZW50KHdpbmRvdywgJ3Jlc2l6ZScpO1xyXG5cclxuICBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG5cclxuICBzZWxlY3RlZElkczogc3RyaW5nW10gfCBudW1iZXJbXSA9IFtdO1xyXG5cclxuICBpc0FkbWluOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8qIHN0YXJ0OiBwYXNzaW5nIHRoaXMgdmFyIHRvIFBhZ2luYXRpb24gKi9cclxuXHJcbiAgcGFnZUNvdW50ITogbnVtYmVyO1xyXG5cclxuICAvLyBQYXNzaW5nIEJlaGF2aW9yU3ViamVjdCB0byBvdGhlciBjb21wb25lbnQgaXMgbGlrZSB1c2luZyBhIHNlcnZpY2UgKHRoYXQgaG9sZHMgdGhpcyBCZWhhdmlvclN1YmplY3QpIGluamVjdGVkIHRvIGJvdGggY29tcG9uZW50c1xyXG4gIGN1cnJlbnRQYWdlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPigxKTtcclxuXHJcbiAgLy8gU29tZXRpbWUgd2UgbmVlZCB0byBjb3JyZWN0IHRoZSBwYWdlIG51bWJlciBvZiBQYWdpbmF0aW9uIGNvbXBvbmVudCB3aXRob3V0IHJlZnJlc2hpbmcgZ3JpZCBsaXN0IGJ5IEFQSSBjYWxsXHJcbiAgc3VzcGVuZEN1cnJlbnRQYWdlU3Vic2NyaXB0aW9uJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cclxuICAvKiBlbmQ6IHBhc3NpbmcgdGhpcyB2YXIgdG8gUGFnaW5hdGlvbiAqL1xyXG5cclxuICBwYWdlU2l6ZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oZGVmYXVsdFBhZ2luZy50YWtlKTtcclxuXHJcbiAgZmlsdGVyJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55PihudWxsKTtcclxuICBmaWx0ZXJPcGVyYXRvcnMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxJRmlsdGVyT3BlcmF0b3JbXT4oW10pO1xyXG4gIHNlYXJjaCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PElDb3JlUGFnZUxpc3RTZWFyY2hPYmplY3QgfCBudWxsPihudWxsKTtcclxuICBzb3J0JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SVNvcnRJdGVtW10+KFtdKTtcclxuICBwYWdpbmF0aW9uJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SVBhZ2luYXRpb24+KHsgc2tpcDogMCwgdGFrZTogZGVmYXVsdFBhZ2luZy50YWtlIH0pXHJcbiAgZm9yY2VSZWxvYWRpbmdGbGFnJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gIHF1ZXJ5TGlzdFJlcXVlc3QkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxJUXVlcnlMaXN0UmVxdWVzdD4oeyBsYW5nOiAndmknIH0pO1xyXG4gIHF1ZXJ5TGlzdFN1YnNjcmlwdGlvbiE6IFN1YnNjcmlwdGlvbjtcclxuXHJcbiAgcGF1c2VTdWJzY3RpcHRpb246IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgbGlzdCE6IGFueVtdO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgY29yZVBhZ2VMaXN0U2VydmljZTogQ29yZVBhZ2VMaXN0U2VydmljZSxcclxuICAgIHByaXZhdGUgY29yZVBhZ2VMaXN0U3RhdGU6IENvcmVQYWdlTGlzdFN0YXRlLFxyXG4gICAgcHJpdmF0ZSBjb3JlUGFnZUVkaXRTZXJ2aWNlOiBDb3JlUGFnZUVkaXRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcclxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgcHJpdmF0ZSBtbHM6IE11bHRpTGFuZ3VhZ2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZSxcclxuICAgIHB1YmxpYyBsYXlvdXRTZXJ2aWNlOiBMYXlvdXRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjb3JlQnV0dG9uR3JvdXBTZXJ2aWNlOiBDb3JlQnV0dG9uR3JvdXBTZXJ2aWNlXHJcbiAgKSB7XHJcblxyXG4gICAgc3VwZXIoKTtcclxuXHJcbiAgICAvL2lmICghISF0aGlzLmNvbXBvc2l0aW9uKSB0aGlzLmNvbXBvc2l0aW9uID0gRW51bUNvbXBvc2l0aW9uLk5PTkVcclxuICAgIHRoaXMuY29yZVBhZ2VMaXN0SW5zdGFuY2VOdW1iZXIgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcclxuICAgIHRoaXMuY29yZVBhZ2VMaXN0U2VydmljZS5pbnN0YW5jZXMucHVzaCh7XHJcbiAgICAgIGluc3RhbmNlTnVtYmVyOiB0aGlzLmNvcmVQYWdlTGlzdEluc3RhbmNlTnVtYmVyLFxyXG4gICAgICByZWxvYWRGbGFnJDogbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSksXHJcbiAgICAgIGlkJDogbmV3IEJlaGF2aW9yU3ViamVjdDxhbnk+KG51bGwpLFxyXG4gICAgICB0Ym9keUhlaWdodCQ6IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55PihudWxsKSxcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZiAoISFjaGFuZ2VzWydoZWlnaHQnXSkge1xyXG4gICAgICB0aGlzLnRhYmxlSGVpZ2h0ID0gY2hhbmdlc1snaGVpZ2h0J10uY3VycmVudFZhbHVlIC0gdGhpcy5sYXlvdXRTZXJ2aWNlLmNvcmVQYWdpbmF0aW9uSGVpZ2h0XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuXHJcbiAgICBpZiAoISF0aGlzLmZpeGVkUGFnZVNpemUpIHtcclxuICAgICAgdGhpcy5wYWdlU2l6ZSQubmV4dCh0aGlzLmZpeGVkUGFnZVNpemUpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIHNldCBkZWZhdWx0IHNvcnQgZGlyZWN0aW9uXHJcbiAgICBjb25zdCBuZXdTb3J0OiBJU29ydEl0ZW1bXSA9IFtdO1xyXG4gICAgdGhpcy5jb2x1bW5zLm1hcChjID0+IHtcclxuICAgICAgbmV3U29ydC5wdXNoKHtcclxuICAgICAgICBmaWVsZDogYy5maWVsZCxcclxuICAgICAgICBzb3J0RGlyZWN0aW9uOiBFbnVtU29ydERpcmVjdGlvbi5OT05FXHJcbiAgICAgIH0pXHJcbiAgICB9KVxyXG4gICAgdGhpcy5zb3J0JC5uZXh0KG5ld1NvcnQpO1xyXG5cclxuICAgIC8qIFNUQVJUOiBTdWJzY3JpcHRpb25zIGZvciBxdWVyeUxpc3RSZXF1ZXN0JCAqL1xyXG5cclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICB0aGlzLm1scy5sYW5nJC5zdWJzY3JpYmUoeCA9PiB7XHJcbiAgICAgICAgdGhpcy5xdWVyeUxpc3RSZXF1ZXN0JC5uZXh0KHtcclxuICAgICAgICAgIC4uLnRoaXMucXVlcnlMaXN0UmVxdWVzdCQudmFsdWUsXHJcbiAgICAgICAgICBsYW5nOiB4XHJcbiAgICAgICAgfSlcclxuICAgICAgfSlcclxuICAgIClcclxuXHJcbiAgICBpZiAoISF0aGlzLm91dGVyUGFyYW0kKSB7XHJcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICAgIHRoaXMub3V0ZXJQYXJhbSQuc3Vic2NyaWJlKCh4KSA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZygndGhpcy5vdXRlclBhcmFtJCBjaGFuZ2VzJywgeCk7XHJcblxyXG4gICAgICAgICAgLy8gbWVyZ2Ugb3Igb3ZlcndyaXJlIGN1cnJlbnQgZmlsdGVyXHJcbiAgICAgICAgICBjb25zdCBjdXJyZW50RmlsdGVyID0gdGhpcy5maWx0ZXIkLnZhbHVlO1xyXG4gICAgICAgICAgaWYgKCEhY3VycmVudEZpbHRlcikge1xyXG4gICAgICAgICAgICBjb25zdCBuZXdGaWx0ZXIgPSB7XHJcbiAgICAgICAgICAgICAgLi4uY3VycmVudEZpbHRlcixcclxuICAgICAgICAgICAgICAuLi54LFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB0aGlzLmZpbHRlciQubmV4dChuZXdGaWx0ZXIpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5maWx0ZXIkLm5leHQoeCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgdGhpcy5maWx0ZXIkLnN1YnNjcmliZSh4ID0+IHtcclxuICAgICAgICB0aGlzLnF1ZXJ5TGlzdFJlcXVlc3QkLm5leHQoe1xyXG4gICAgICAgICAgLi4udGhpcy5xdWVyeUxpc3RSZXF1ZXN0JC52YWx1ZSxcclxuICAgICAgICAgIGZpbHRlcjogeFxyXG4gICAgICAgIH0pXHJcbiAgICAgIH0pXHJcbiAgICApXHJcblxyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgIHRoaXMuZmlsdGVyT3BlcmF0b3JzJC5zdWJzY3JpYmUoeCA9PiB7XHJcbiAgICAgICAgdGhpcy5xdWVyeUxpc3RSZXF1ZXN0JC5uZXh0KHtcclxuICAgICAgICAgIC4uLnRoaXMucXVlcnlMaXN0UmVxdWVzdCQudmFsdWUsXHJcbiAgICAgICAgICBmaWx0ZXJPcGVyYXRvcnM6IHhcclxuICAgICAgICB9KVxyXG4gICAgICB9KVxyXG4gICAgKVxyXG5cclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICB0aGlzLnNlYXJjaCQucGlwZShcclxuICAgICAgICBkZWJvdW5jZVRpbWUoNTAwKSxcclxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgocHJldiwgY3VycikgPT4ge1xyXG4gICAgICAgICAgbGV0IGNvbmRpdGlvbiA9IGZhbHNlO1xyXG4gICAgICAgICAgaWYgKCEhcHJldiB8fCAhIWN1cnIpIHtcclxuICAgICAgICAgICAgY29uZGl0aW9uID0gSlNPTi5zdHJpbmdpZnkocHJldikgPT09IEpTT04uc3RyaW5naWZ5KGN1cnIpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICByZXR1cm4gY29uZGl0aW9uO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICkuc3Vic2NyaWJlKHggPT4ge1xyXG4gICAgICAgIHRoaXMucXVlcnlMaXN0UmVxdWVzdCQubmV4dCh7XHJcbiAgICAgICAgICAuLi50aGlzLnF1ZXJ5TGlzdFJlcXVlc3QkLnZhbHVlLFxyXG4gICAgICAgICAgc2VhcmNoOiAhIXg/LmN1cnJlbnQgPyBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHg/LmN1cnJlbnQpKSA6IG51bGxcclxuICAgICAgICB9KVxyXG4gICAgICB9KVxyXG4gICAgKVxyXG5cclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICB0aGlzLnNvcnQkLnN1YnNjcmliZSh4ID0+IHtcclxuICAgICAgICB0aGlzLnF1ZXJ5TGlzdFJlcXVlc3QkLm5leHQoe1xyXG4gICAgICAgICAgLi4uSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLnF1ZXJ5TGlzdFJlcXVlc3QkLnZhbHVlKSksXHJcbiAgICAgICAgICBzb3J0OiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHgpKVxyXG4gICAgICAgIH0pXHJcbiAgICAgIH0pXHJcbiAgICApXHJcblxyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgIHRoaXMuY29yZVBhZ2VMaXN0U3RhdGUuaWQkLnN1YnNjcmliZSgoeDogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJjb3JlUGFnZUxpc3RTdGF0ZS5pZCQgaGFzIGNoYW5nZWRcIilcclxuICAgICAgICB0aGlzLnF1ZXJ5TGlzdFJlcXVlc3QkLm5leHQoe1xyXG4gICAgICAgICAgLi4udGhpcy5xdWVyeUxpc3RSZXF1ZXN0JC52YWx1ZSxcclxuICAgICAgICAgIGlkOiB4XHJcbiAgICAgICAgfSlcclxuICAgICAgfSlcclxuICAgIClcclxuXHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgdGhpcy5wYWdlU2l6ZSQuc3Vic2NyaWJlKHggPT4ge1xyXG4gICAgICAgIHRoaXMucGFnaW5hdGlvbiQubmV4dCh7XHJcbiAgICAgICAgICAuLi50aGlzLnBhZ2luYXRpb24kLnZhbHVlLFxyXG4gICAgICAgICAgc2tpcDogMCxcclxuICAgICAgICAgIHRha2U6IHhcclxuICAgICAgICB9KVxyXG4gICAgICB9KVxyXG4gICAgKVxyXG5cclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICB0aGlzLnBhZ2luYXRpb24kLnN1YnNjcmliZSh4ID0+IHtcclxuICAgICAgICB0aGlzLnF1ZXJ5TGlzdFJlcXVlc3QkLm5leHQoe1xyXG4gICAgICAgICAgLi4udGhpcy5xdWVyeUxpc3RSZXF1ZXN0JC52YWx1ZSxcclxuICAgICAgICAgIHBhZ2luYXRpb246IHhcclxuICAgICAgICB9KVxyXG4gICAgICB9KVxyXG4gICAgKVxyXG5cclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICB0aGlzLmNvcmVQYWdlTGlzdFNlcnZpY2UuaW5zdGFuY2VzLmZpbHRlcih4ID0+IHguaW5zdGFuY2VOdW1iZXIgPT09IHRoaXMuY29yZVBhZ2VMaXN0SW5zdGFuY2VOdW1iZXIpWzBdLnJlbG9hZEZsYWckIS5zdWJzY3JpYmUoeCA9PiB7XHJcbiAgICAgICAgdGhpcy5mb3JjZVJlbG9hZGluZ0ZsYWckLm5leHQoeCk7XHJcbiAgICAgIH0pXHJcbiAgICApXHJcblxyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgIHRoaXMuZm9yY2VSZWxvYWRpbmdGbGFnJC5zdWJzY3JpYmUoeCA9PiB7XHJcbiAgICAgICAgdGhpcy5xdWVyeUxpc3RSZXF1ZXN0JC5uZXh0KHtcclxuICAgICAgICAgIC4uLnRoaXMucXVlcnlMaXN0UmVxdWVzdCQudmFsdWUsXHJcbiAgICAgICAgICBmb3JjZVJlbG9hZGluZ0ZsYWc6IHhcclxuICAgICAgICB9KVxyXG4gICAgICB9KVxyXG4gICAgKVxyXG5cclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICB0aGlzLmN1cnJlbnRQYWdlJC5waXBlKFxyXG4gICAgICAgIGZpbHRlcihfID0+ICEhIXRoaXMuc3VzcGVuZEN1cnJlbnRQYWdlU3Vic2NyaXB0aW9uJC52YWx1ZSksXHJcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSAvLyBJTVBPUlRBTlQhXHJcbiAgICAgIClcclxuICAgICAgICAuc3Vic2NyaWJlKHggPT4gdGhpcy5xdWVyeUxpc3RSZXF1ZXN0JC5uZXh0KHtcclxuICAgICAgICAgIC4uLnRoaXMucXVlcnlMaXN0UmVxdWVzdCQudmFsdWUsXHJcbiAgICAgICAgICBwYWdpbmF0aW9uOiB7XHJcbiAgICAgICAgICAgIC4uLnRoaXMucXVlcnlMaXN0UmVxdWVzdCQudmFsdWU/LnBhZ2luYXRpb24hLFxyXG4gICAgICAgICAgICBza2lwOiAoeCAtIDEpICogdGhpcy5xdWVyeUxpc3RSZXF1ZXN0JC52YWx1ZT8ucGFnaW5hdGlvbj8udGFrZSFcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KSlcclxuICAgIClcclxuXHJcbiAgICAvKiBFTkQ6IFN1YnNjcmlwdGlvbnMgZm9yIHF1ZXJ5TGlzdFJlcXVlc3QkICovXHJcblxyXG4gICAgLyogU1RBUlQ6IFN1YnNjcmlwdGlvbiBmb3IgbGlzdCAqL1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcblxyXG4gICAgICB0aGlzLnF1ZXJ5TGlzdFJlcXVlc3QkLnBpcGUoXHJcbiAgICAgICAgZmlsdGVyKCh4OiBhbnkpID0+ICEheCAmJiAhIXguc29ydCAmJiAhIXgucGFnaW5hdGlvbiksXHJcbiAgICAgICAgZmlsdGVyKF8gPT4gIXRoaXMucGF1c2VTdWJzY3RpcHRpb24pLFxyXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKChwcmV2LCBjdXJyKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBjb25kaXRpb24gPSAoSlNPTi5zdHJpbmdpZnkocHJldikgPT09IEpTT04uc3RyaW5naWZ5KGN1cnIpKVxyXG4gICAgICAgICAgcmV0dXJuIGNvbmRpdGlvbjtcclxuICAgICAgICB9KSxcclxuICAgICAgICAvKlxyXG4gICAgICAgIC8qIFNUQVJUOiB1c2Ugc3dpdGNoTWFwIGZvciBjYW5jZWxsYXRpb25cclxuICAgICAgICAqL1xyXG4gICAgICAgIHN3aXRjaE1hcCh4ID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKFwic3dpdGNoTWFwIHhcIiwgeClcclxuICAgICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICAgICAgICBjb25zdCB1cmwgPSB0aGlzLmFwaURlZmluaXRpb24ucXVlcnlMaXN0UmVsYXRpdmVQYXRoO1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuY29yZVBhZ2VMaXN0U2VydmljZS5xdWVyeUxpc3QoeCwgdXJsKVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLypcclxuICAgICAgICAvKiBFTkQ6IHVzZSBzd2l0Y2hNYXAgZm9yIGNhbmNlbGxhdGlvblxyXG4gICAgICAgICovXHJcblxyXG4gICAgICApLnN1YnNjcmliZSgoeDogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHgub2sgJiYgeC5zdGF0dXMgPT09IDIwMCkge1xyXG4gICAgICAgICAgY29uc3QgYm9keTogSUZvcm1hdGVkUmVzcG9uc2UgPSB4LmJvZHlcclxuICAgICAgICAgIC8vdGhpcy5yZXNwb25zZVNlcnZpY2UucmVzb2x2ZShib2R5KTtcclxuXHJcbiAgICAgICAgICBpZiAoYm9keS5zdGF0dXNDb2RlID09PSAyMDApIHtcclxuICAgICAgICAgICAgY29uc3QgaW5uZXJCb2R5OiBJUXVlcnlMaXN0UmVzcG9uc2UgPSBib2R5LmlubmVyQm9keTtcclxuICAgICAgICAgICAgaWYgKCEhaW5uZXJCb2R5KSB7XHJcblxyXG4gICAgICAgICAgICAgIHRoaXMubGlzdCA9IGlubmVyQm9keS5saXN0ITtcclxuICAgICAgICAgICAgICB0aGlzLmlubmVyQm9keUNvdW50JC5uZXh0KGlubmVyQm9keS5jb3VudCEpO1xyXG4gICAgICAgICAgICAgIHRoaXMucGFnZUNvdW50ID0gTWF0aC5jZWlsKGlubmVyQm9keS5jb3VudCEgLyB0aGlzLnBhZ2VTaXplJC52YWx1ZSk7XHJcblxyXG4gICAgICAgICAgICAgIC8qIFRyaWNraWx5IHJlc2V0IGlkJCAqL1xyXG4gICAgICAgICAgICAgIHRoaXMucGF1c2VTdWJzY3RpcHRpb24gPSB0cnVlO1xyXG4gICAgICAgICAgICAgIGlmICghIXRoaXMuY29yZVBhZ2VMaXN0U3RhdGUuaWQkLnZhbHVlKSB0aGlzLmNvcmVQYWdlTGlzdFN0YXRlLmlkJC5uZXh0KG51bGwpO1xyXG4gICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5wYXVzZVN1YnNjdGlwdGlvbiA9IGZhbHNlKTtcclxuXHJcbiAgICAgICAgICAgICAgaWYgKGlubmVyQm9keS5wYWdlICE9PSB0aGlzLmN1cnJlbnRQYWdlJC52YWx1ZSkge1xyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMuc3VzcGVuZEN1cnJlbnRQYWdlU3Vic2NyaXB0aW9uJC5uZXh0KHRydWUpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50UGFnZSQubmV4dChpbm5lckJvZHkucGFnZSEpXHJcblxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLmxpc3QgPSBbXTtcclxuICAgICAgICAgICAgICB0aGlzLnBhZ2VDb3VudCA9IDA7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmxpc3QgPSBbXTtcclxuICAgICAgICAgICAgdGhpcy5wYWdlQ291bnQgPSAwO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAvL3RoaXMuYWxlcnRTZXJ2aWNlLmVycm9yKEpTT04uc3RyaW5naWZ5KEpTT04uc3RyaW5naWZ5KHgsIG51bGwsIDIpKSwgYWxlcnRPcHRpb25zKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG5cclxuICAgICAgfSlcclxuICAgIClcclxuICAgIC8qIEVORDogU3Vic2NyaXB0aW9ucyBmb3IgbGlzdCAqL1xyXG5cclxuICB9XHJcblxyXG4gIG9uU2VhcmNoaW5nKGU6IElTZWFyY2hJdGVtW10pOiB2b2lkIHtcclxuICAgIGNvbnN0IHByZXYgPSAhIXRoaXMuc2VhcmNoJC52YWx1ZT8uY3VycmVudCA/IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5zZWFyY2gkLnZhbHVlPy5jdXJyZW50KSkgOiBudWxsO1xyXG4gICAgdGhpcy5zZWFyY2gkLm5leHQoe1xyXG4gICAgICBwcmV2aW91czogcHJldiEsXHJcbiAgICAgIGN1cnJlbnQ6IGUsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICB9XHJcblxyXG4gIG9uUm93Q2xpY2soZTogYW55KSB7XHJcbiAgICBpZiAoISFlLmlkKSB0aGlzLm9uQ2hhbmdlKGUuaWQpXHJcbiAgfVxyXG5cclxuICBvblNlbGVjdGVkSWRzQ2hhbmdlKGU6IHN0cmluZ1tdIHwgbnVtYmVyW10pIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRJZHMgPSBlO1xyXG4gIH1cclxuXHJcbiAgb25Db2x1bW5DYXB0aW9uQ2xpY2soZTogSUNvcmVUYWJsZUNvbHVtbkl0ZW0pIHtcclxuICAgIGNvbnN0IG5ld1NvcnQ6IElTb3J0SXRlbVtdID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLnNvcnQkLnZhbHVlKSk7XHJcbiAgICBuZXdTb3J0Lm1hcChjID0+IHtcclxuICAgICAgaWYgKGMuZmllbGQgPT09IGUuZmllbGQpIHtcclxuICAgICAgICBpZiAoYy5zb3J0RGlyZWN0aW9uID09PSBFbnVtU29ydERpcmVjdGlvbi5OT05FKSB7XHJcbiAgICAgICAgICBjLnNvcnREaXJlY3Rpb24gPSBFbnVtU29ydERpcmVjdGlvbi5BU0M7XHJcbiAgICAgICAgfSBlbHNlIGlmIChjLnNvcnREaXJlY3Rpb24gPT09IEVudW1Tb3J0RGlyZWN0aW9uLkFTQykge1xyXG4gICAgICAgICAgYy5zb3J0RGlyZWN0aW9uID0gRW51bVNvcnREaXJlY3Rpb24uREVTQztcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgYy5zb3J0RGlyZWN0aW9uID0gRW51bVNvcnREaXJlY3Rpb24uTk9ORTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgYy5zb3J0RGlyZWN0aW9uID0gRW51bVNvcnREaXJlY3Rpb24uTk9ORVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gICAgdGhpcy5zb3J0JC5uZXh0KG5ld1NvcnQpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMubWFwKHggPT4geD8udW5zdWJzY3JpYmUoKSk7XHJcblxyXG4gICAgLyogUmVtb3ZlIGN1cnJlbnQgY29yZVBhZ2VMaXN0SW5zdGFuY2UgKi9cclxuICAgIGNvbnN0IHRyeUZpbmQgPSB0aGlzLmNvcmVQYWdlTGlzdFNlcnZpY2UuaW5zdGFuY2VzLmZpbHRlcih4ID0+IHguaW5zdGFuY2VOdW1iZXIgPT09IHRoaXMuY29yZVBhZ2VMaXN0SW5zdGFuY2VOdW1iZXIpO1xyXG4gICAgaWYgKCEhdHJ5RmluZC5sZW5ndGgpIHtcclxuICAgICAgY29uc3QgZXhjbHVkZWQgPSB0aGlzLmNvcmVQYWdlTGlzdFNlcnZpY2UuaW5zdGFuY2VzLmZpbHRlcih4ID0+IHguaW5zdGFuY2VOdW1iZXIgIT09IHRoaXMuY29yZVBhZ2VMaXN0SW5zdGFuY2VOdW1iZXIpO1xyXG4gICAgICB0aGlzLmNvcmVQYWdlTGlzdFNlcnZpY2UuaW5zdGFuY2VzID0gZXhjbHVkZWQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiY29yZS1wYWdlLWxpc3QtY29udGVudC1jb250YWluZXJcIiAjY29yZVBhZ2VMaXN0Q29udGVudENvbnRhaW5lcj5cclxuICAgIDxjb3JlLXRhYmxlIHdpZHRoPVwiMTAwJVwiIFtoZWlnaHRdPVwidGFibGVIZWlnaHRcIiBoZWFkZXJIZWlnaHQ9XCI0MnB4XCIgW3Jvd0hlaWdodF09XCJyb3dIZWlnaHRcIiBbd3JhcF09XCJ0cnVlXCJcclxuICAgICAgICBbY29sdW1uc109XCJjb2x1bW5zXCIgW2RhdGFdPVwibGlzdFwiIFtzaG93Q2hlY2tib3hdPVwiISEhaGlkZUNoZWNrXCIgW3dyYXBdPVwidHJ1ZVwiIGhlYWRlckhlaWdodD1cIjYwcHhcIlxyXG4gICAgICAgIFt0b29sc109XCJpbmxpbmVUb29sc1wiIChvblJvd0NsaWNrKT1cIm9uUm93Q2xpY2soJGV2ZW50KVwiIChvblNlbGVjdGVkSWRzQ2hhbmdlKT1cIm9uU2VsZWN0ZWRJZHNDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgW2Zyb3plbl09XCJmcm96ZW4gfHwgMVwiIChvblNlYXJjaGluZyk9XCJvblNlYXJjaGluZygkZXZlbnQpXCIgKG9uQ29sdW1uQ2FwdGlvbkNsaWNrKT1cIm9uQ29sdW1uQ2FwdGlvbkNsaWNrKCRldmVudClcIlxyXG4gICAgICAgIFtjb3JlUGFnZUxpc3RJbnN0YW5jZU51bWJlcl09XCJjb3JlUGFnZUxpc3RJbnN0YW5jZU51bWJlclwiXHJcbiAgICAgICAgW2Rpc2FibGVIaWdobGlnaHRPbkNsaWNrXT1cImRpc2FibGVIaWdobGlnaHRPbkNsaWNrXCIgW2xvYWRpbmddPVwibG9hZGluZ1wiIFtjb2x1bW5TZWFyY2hEZWZhdWx0T3Blbl09XCJjb2x1bW5TZWFyY2hEZWZhdWx0T3BlblwiXHJcbiAgICAgICAgW3dyYXBdPVwid3JhcFwiXHJcbiAgICAgICAgW2hlYWRlcldyYXBdPVwiaGVhZGVyV3JhcFwiXHJcbiAgICAgICAgW2hlYWRlckZpcnN0Um93SGVpZ2h0XT1cImhlYWRlckZpcnN0Um93SGVpZ2h0XCJcclxuICAgICAgICBbbGF6eUxvYWRpbmddPVwidHJ1ZVwiXHJcbiAgICAgICAgPjwvY29yZS10YWJsZT5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgtZW5kIHBhZ2luYXRpb24td3JhcHBlclwiICNwYWdpbmF0aW9uQ29udGFpbmVyPlxyXG4gICAgICAgIDxjb3JlLXBhZ2luYXRpb24tZnVsbCBbaGVpZ2h0XT1cImxheW91dFNlcnZpY2UuY29yZVBhZ2luYXRpb25IZWlnaHRcIiBbY3VycmVudFBhZ2UkXT1cImN1cnJlbnRQYWdlJFwiIFtwYWdlU2l6ZSRdPVwicGFnZVNpemUkXCJcclxuICAgICAgICAgICAgW3BhZ2VDb3VudF09XCJwYWdlQ291bnRcIlxyXG4gICAgICAgICAgICBbaW5uZXJCb2R5Q291bnQkXT1cImlubmVyQm9keUNvdW50JFwiIFtwYWdpbmF0aW9uJF09XCJwYWdpbmF0aW9uJFwiIFtsb2FkaW5nXT1cImxvYWRpbmdcIlxyXG4gICAgICAgICAgICBbYmFja2dyb3VuZF09XCInIzg0ODQ4NCdcIj48L2NvcmUtcGFnaW5hdGlvbi1mdWxsPlxyXG5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj4iXX0=
|
|
@@ -356,7 +356,7 @@ export class CoreTableComponent extends CoreFormControlBaseComponent {
|
|
|
356
356
|
this.onSearching.emit(this.searchObject);
|
|
357
357
|
}
|
|
358
358
|
onColumnCaptionClickLocal(column) {
|
|
359
|
-
if (!!column.templateRef)
|
|
359
|
+
if (!!this.disableSorting || !!column.templateRef)
|
|
360
360
|
return; // no action for templateRef type
|
|
361
361
|
this.onColumnCaptionClick.emit(column);
|
|
362
362
|
// update sort dicrection property of this column
|
|
@@ -380,7 +380,7 @@ export class CoreTableComponent extends CoreFormControlBaseComponent {
|
|
|
380
380
|
this.subscriptions.map(x => x?.unsubscribe());
|
|
381
381
|
}
|
|
382
382
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: CoreTableComponent, deps: [{ token: i1.LayoutService }, { token: i2.CorePageListService }, { token: i3.MultiLanguageService }, { token: i4.AlertService }, { token: i5.AuthService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
383
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.3", type: CoreTableComponent, isStandalone: true, selector: "core-table", inputs: { id: "id", width: "width", height: "height", showCheckbox: "showCheckbox", checkboxSize: "checkboxSize", outerButtons: "outerButtons", showTools: "showTools", tools: "tools", checkingResetFlag: "checkingResetFlag", headerWrap: "headerWrap", headerFirstRowHeight: "headerFirstRowHeight", headerSecondRowHeight: "headerSecondRowHeight", wrap: "wrap", allowCellScrollY: "allowCellScrollY", loading: "loading", rowHeight: "rowHeight", frozen: "frozen", footer: "footer", columns: "columns", data: "data", selectedIds: "selectedIds", corePageListInstanceNumber: "corePageListInstanceNumber", disableHighlightOnClick: "disableHighlightOnClick", freeMode: "freeMode", searchSwitchDisabled: "searchSwitchDisabled", inlineToolItems: "inlineToolItems", columnSearchDefaultOpen: "columnSearchDefaultOpen", lazyLoading: "lazyLoading", noPaddingCell: "noPaddingCell" }, outputs: { onSearching: "onSearching", onToolClick: "onToolClick", onRowClick: "onRowClick", onRowDoubleClick: "onRowDoubleClick", onSelectedIdsChange: "onSelectedIdsChange", onSelectedDataChange: "onSelectedDataChange", onColumnCaptionClick: "onColumnCaptionClick" }, providers: [
|
|
383
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.3", type: CoreTableComponent, isStandalone: true, selector: "core-table", inputs: { id: "id", width: "width", height: "height", showCheckbox: "showCheckbox", checkboxSize: "checkboxSize", outerButtons: "outerButtons", showTools: "showTools", tools: "tools", checkingResetFlag: "checkingResetFlag", headerWrap: "headerWrap", headerFirstRowHeight: "headerFirstRowHeight", headerSecondRowHeight: "headerSecondRowHeight", wrap: "wrap", allowCellScrollY: "allowCellScrollY", loading: "loading", rowHeight: "rowHeight", frozen: "frozen", footer: "footer", columns: "columns", data: "data", selectedIds: "selectedIds", corePageListInstanceNumber: "corePageListInstanceNumber", disableHighlightOnClick: "disableHighlightOnClick", freeMode: "freeMode", searchSwitchDisabled: "searchSwitchDisabled", disableSorting: "disableSorting", inlineToolItems: "inlineToolItems", columnSearchDefaultOpen: "columnSearchDefaultOpen", lazyLoading: "lazyLoading", noPaddingCell: "noPaddingCell" }, outputs: { onSearching: "onSearching", onToolClick: "onToolClick", onRowClick: "onRowClick", onRowDoubleClick: "onRowDoubleClick", onSelectedIdsChange: "onSelectedIdsChange", onSelectedDataChange: "onSelectedDataChange", onColumnCaptionClick: "onColumnCaptionClick" }, providers: [
|
|
384
384
|
{
|
|
385
385
|
provide: NG_VALUE_ACCESSOR,
|
|
386
386
|
multi: true,
|
|
@@ -459,6 +459,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
|
|
|
459
459
|
type: Input
|
|
460
460
|
}], searchSwitchDisabled: [{
|
|
461
461
|
type: Input
|
|
462
|
+
}], disableSorting: [{
|
|
463
|
+
type: Input
|
|
462
464
|
}], inlineToolItems: [{
|
|
463
465
|
type: Input
|
|
464
466
|
}], columnSearchDefaultOpen: [{
|
|
@@ -491,4 +493,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
|
|
|
491
493
|
type: ViewChild,
|
|
492
494
|
args: ['firstHeaderRow']
|
|
493
495
|
}] } });
|
|
494
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtaGlzdGFmZi1hbHBoYS9zcmMvbGliL2FwcC9saWJyYXJpZXMvY29yZS10YWJsZS9jb3JlLXRhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1oaXN0YWZmLWFscGhhL3NyYy9saWIvYXBwL2xpYnJhcmllcy9jb3JlLXRhYmxlL2NvcmUtdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxLQUFLLEVBQStDLFNBQVMsRUFBaUIsTUFBTSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckssT0FBTyxFQUFFLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBMENoRSxPQUFPLEVBQWdCLGVBQWUsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFjLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVsRyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSw0REFBNEQsQ0FBQztBQVMxRyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUUxRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sb0VBQW9FLENBQUM7QUFDOUcsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sNkVBQTZFLENBQUM7QUFDMUgsT0FB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QUNHLHVCQUF1QjtzQkFBL0IsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLHVCQUF1QjtzQkFBL0IsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUVHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBRUksV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0csZ0JBQWdCO3NCQUF6QixNQUFNO2dCQUNHLG1CQUFtQjtzQkFBNUIsTUFBTTtnQkFDRyxvQkFBb0I7c0JBQTdCLE1BQU07Z0JBQ0csb0JBQW9CO3NCQUE3QixNQUFNO2dCQXNDaUIsU0FBUztzQkFBaEMsU0FBUzt1QkFBQyxXQUFXO2dCQUNGLEtBQUs7c0JBQXhCLFNBQVM7dUJBQUMsT0FBTztnQkFDVyxjQUFjO3NCQUExQyxTQUFTO3VCQUFDLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5wdXQsIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlclZpZXdJbml0LCBPbkNoYW5nZXMsIFZpZXdDaGlsZCwgU2ltcGxlQ2hhbmdlcywgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIGlzRGV2TW9kZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG5leHBvcnQgZW51bSBFQ29yZVRhYmxlVG9vbENvZGUge1xyXG4gIGVkaXQgPSAnZWRpdCcsXHJcbiAgZGVsZXRlID0gJ2RlbGV0ZScsXHJcbiAgY29tcGxldGUgPSAnY29tcGxldGUnLFxyXG4gIG5hdmlnYXRlID0gJ25hdmlnYXRlJyxcclxufVxyXG5cclxuZXhwb3J0IGVudW0gRUNvcmVUYWJsZVRvb2xDbGFzcyB7XHJcbiAgZWRpdCA9ICdlZGl0LWljb24nLFxyXG4gIGRlbGV0ZSA9ICdkZWxldGUtaWNvbicsXHJcbiAgcmVwZWF0ID0gJ3JlcGVhdC1pY29uJyxcclxuICBuYXZpZ2F0ZSA9ICduYXZpZ2F0ZS1pY29uJ1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElDb3JlVGFibGVUb29sSXRlbSB7XHJcbiAgY29kZTogRUNvcmVUYWJsZVRvb2xDb2RlO1xyXG4gIGNsYXNzOiBFQ29yZVRhYmxlVG9vbENsYXNzO1xyXG4gIGNhcHRpb24/OiBFbnVtVHJhbnNsYXRlS2V5IHwgc3RyaW5nOyAvLyBMYXRlciB3ZSB3aWxsIHJlbW92ZSBcInwgc3RyaW5nXCJcclxuXHJcbiAgLyogY2FsbGJhY2tzIHRvIGNhbGN1bGF0ZSBkaXNhYmxlZCBhbmQgaGlkZW4gYmFzZWQgb24gcm93Ki9cclxuICBkaXNhYmxlZEZuPzogKHJvdzogYW55KSA9PiBib29sZWFuO1xyXG4gIGhpZGRlbkZuPzogKHJvdzogYW55KSA9PiBib29sZWFuO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElDb3JlVGFibGVUb29sQ2xpY2tFdmVudEVtaXR0ZXJEYXRhIHtcclxuICBjb2RlOiBFQ29yZVRhYmxlVG9vbENvZGU7XHJcbiAgaWQ6IHN0cmluZyB8IG51bWJlcjtcclxufVxyXG5cclxuLypcclxuZXhwb3J0IGludGVyZmFjZSBJQ29yZVRhYmxlUm93RG91YmxlQ2xpY2tFdmVudEVtaXR0ZXJEYXRhIHtcclxuICBpZDogc3RyaW5nIHwgbnVtYmVyO1xyXG59XHJcbiovXHJcblxyXG5pbnRlcmZhY2UgSURvdWJsZVRvdWNoZW5kRGF0YSB7XHJcbiAgcHJldmlvdXM6IG51bWJlcjtcclxuICBjdXJyZW50OiBudW1iZXI7XHJcbn1cclxuXHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiwgQmVoYXZpb3JTdWJqZWN0LCBmaWx0ZXIsIGRlYm91bmNlVGltZSwgT2JzZXJ2YWJsZSwgZnJvbUV2ZW50IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IENvcmVQYWdlTGlzdFNlcnZpY2UgfSBmcm9tICcuLi9jb3JlLXBhZ2UtbGlzdC9jb3JlLXBhZ2UtbGlzdC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29yZUZvcm1Db250cm9sQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uL2NvcmUtZm9ybS1jb250cm9sLWJhc2UvY29yZS1mb3JtLWNvbnRyb2wtYmFzZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBJQ29yZUJ1dHRvblZOUyB9IGZyb20gJy4uL2NvcmUtYnV0dG9uLWdyb3VwLXZucy9jb3JlLWJ1dHRvbi1ncm91cC12bnMvSUNvcmVCdXR0b25WTlMnO1xyXG5pbXBvcnQgeyBFbnVtQ29yZUJ1dHRvblZOU0NvZGUgfSBmcm9tICcuLi9jb3JlLWJ1dHRvbi1ncm91cC12bnMvY29yZS1idXR0b24tZ3JvdXAtdm5zL0VudW1Db3JlQnV0dG9uVk5TQ29kZSc7XHJcbmltcG9ydCB7IEVudW1UcmFuc2xhdGVLZXkgfSBmcm9tIFwiYWxwaGEtZ2xvYmFsLWNvbnN0YW50c1wiO1xyXG5pbXBvcnQgeyBJU2VhcmNoSXRlbSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvSVF1ZXJ5TGlzdFJlcXVlc3QnO1xyXG5pbXBvcnQgeyBMYXlvdXRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbGF5b3V0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNdWx0aUxhbmd1YWdlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL211bHRpLWxhbmd1YWdlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBbGVydFNlcnZpY2UgfSBmcm9tICcuLi9hbGVydC9hbGVydC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9hdXRoLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBub25lQXV0b0Nsb3NlZEFsZXJ0T3B0aW9ucyB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9hbGVydE9wdGlvbnMnO1xyXG5pbXBvcnQgeyBJQ29yZVRhYmxlQ29sdW1uSXRlbSB9IGZyb20gJy4vSUNvcmVUYWJsZUNvbHVtbkl0ZW0nO1xyXG5pbXBvcnQgeyBFbnVtU29ydERpcmVjdGlvbiB9IGZyb20gJy4uLy4uL2VudW0vRW51bVNvcnREaXJlY3Rpb24nO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBDb3JlQnV0dG9uR3JvdXBDb21wb25lbnQgfSBmcm9tICcuLi9jb3JlLWJ1dHRvbi1ncm91cC9jb3JlLWJ1dHRvbi1ncm91cC9jb3JlLWJ1dHRvbi1ncm91cC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUaHJlZWRvdHNDb21wb25lbnQgfSBmcm9tICcuLi90aHJlZWRvdHMvdGhyZWVkb3RzLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRvb2x0aXBEaXJlY3RpdmUgfSBmcm9tICcuLi90b29sdGlwL3Rvb2x0aXAuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgQ29yZUxvYWRpbmdTdXJmYWNlQ29tcG9uZW50IH0gZnJvbSAnLi4vY29yZS1sb2FkaW5nLXN1cmZhY2UvY29yZS1sb2FkaW5nLXN1cmZhY2UvY29yZS1sb2FkaW5nLXN1cmZhY2UuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ29yZUJ1dHRvbkdyb3VwVm5zQ29tcG9uZW50IH0gZnJvbSAnLi4vY29yZS1idXR0b24tZ3JvdXAtdm5zL2NvcmUtYnV0dG9uLWdyb3VwLXZucy9jb3JlLWJ1dHRvbi1ncm91cC12bnMuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVGFibGVDZWxsUGlwZSB9IGZyb20gJy4uL3BpcGVzL3RhYmxlLWNlbGwucGlwZSc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVBpcGUgfSBmcm9tICcuLi8uLi9hcHAtcGlwZXMvdHJhbnNsYXRlLnBpcGUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdjb3JlLXRhYmxlJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgQ29yZUJ1dHRvbkdyb3VwQ29tcG9uZW50LFxyXG4gICAgVGhyZWVkb3RzQ29tcG9uZW50LFxyXG4gICAgVG9vbHRpcERpcmVjdGl2ZSxcclxuICAgIFRhYmxlQ2VsbFBpcGUsXHJcbiAgICBUcmFuc2xhdGVQaXBlLFxyXG4gICAgQ29yZUxvYWRpbmdTdXJmYWNlQ29tcG9uZW50LFxyXG4gICAgQ29yZUJ1dHRvbkdyb3VwVm5zQ29tcG9uZW50LFxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NvcmUtdGFibGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2NvcmUtdGFibGUuY29tcG9uZW50LnNjc3MnXSxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgIG11bHRpOiB0cnVlLFxyXG4gICAgICB1c2VFeGlzdGluZzogQ29yZVRhYmxlQ29tcG9uZW50XHJcbiAgICB9XHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29yZVRhYmxlQ29tcG9uZW50IGV4dGVuZHMgQ29yZUZvcm1Db250cm9sQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xyXG5cclxuICAvKlxyXG4gIFRoaXMgY29tcG9uZW50IGRpc3BsYXlzIGlucHV0IGRhdGEgd2l0aG91dCBwYWdpbmF0aW9uLlxyXG4gIEZvciBwYWdpbmF0aW5nIHBsZWFzZSBvcmdhbml6ZSBmcm9tIHBhcmVudHNcclxuICAqL1xyXG5cclxuICBASW5wdXQoKSBpZCE6IHN0cmluZzsgLy8gZm9yIGh0bWwgaWQgaWRlbnRpZnlpbmdcclxuICBASW5wdXQoKSB3aWR0aCE6IHN0cmluZztcclxuICBASW5wdXQoKSBoZWlnaHQhOiBudW1iZXI7XHJcbiAgQElucHV0KCkgc2hvd0NoZWNrYm94ITogYm9vbGVhbjtcclxuICBASW5wdXQoKSBjaGVja2JveFNpemUhOiBudW1iZXI7XHJcbiAgQElucHV0KCkgb3V0ZXJCdXR0b25zITogSUNvcmVCdXR0b25WTlNbXTtcclxuICBASW5wdXQoKSBzaG93VG9vbHMhOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIHRvb2xzITogSUNvcmVUYWJsZVRvb2xJdGVtW107XHJcbiAgQElucHV0KCkgY2hlY2tpbmdSZXNldEZsYWchOiBib29sZWFuO1xyXG5cclxuICAvKiBjaGFuZ2UgdGhlc2UgMiBwcm9wcyB0byB3cmFwIGhlYWRlciB0ZXh0cyAqL1xyXG4gIEBJbnB1dCgpIGhlYWRlcldyYXAhOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGhlYWRlckZpcnN0Um93SGVpZ2h0ITogbnVtYmVyO1xyXG4gIC8qKiAqL1xyXG4gIFxyXG4gIEBJbnB1dCgpIGhlYWRlclNlY29uZFJvd0hlaWdodCE6IG51bWJlcjtcclxuICBASW5wdXQoKSB3cmFwITogYm9vbGVhbjtcclxuICBASW5wdXQoKSBhbGxvd0NlbGxTY3JvbGxZITogYm9vbGVhbjtcclxuICBASW5wdXQoKSBsb2FkaW5nITogYm9vbGVhbjtcclxuICBASW5wdXQoKSByb3dIZWlnaHQhOiBzdHJpbmc7IC8vIFZFUlkgSU1QT1JUQU5UIFBST1BFUlRZXHJcbiAgQElucHV0KCkgZnJvemVuITogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIGZvb3RlciE6IGFueTtcclxuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KSBjb2x1bW5zITogSUNvcmVUYWJsZUNvbHVtbkl0ZW1bXTsgLy8gcmVxdWlyZWRcclxuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KSBkYXRhITogYW55W107IC8vIHJlcXVpcmVkXHJcbiAgQElucHV0KCkgc2VsZWN0ZWRJZHMhOiBzdHJpbmdbXSB8IG51bWJlcltdO1xyXG4gIEBJbnB1dCgpIGNvcmVQYWdlTGlzdEluc3RhbmNlTnVtYmVyITogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIGRpc2FibGVIaWdobGlnaHRPbkNsaWNrITogYm9vbGVhbjtcclxuICBASW5wdXQoKSBmcmVlTW9kZSE6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgc2VhcmNoU3dpdGNoRGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTsgLy8gPz8/XHJcbiAgQElucHV0KCkgaW5saW5lVG9vbEl0ZW1zITogRW51bUNvcmVCdXR0b25WTlNDb2RlW107XHJcbiAgQElucHV0KCkgY29sdW1uU2VhcmNoRGVmYXVsdE9wZW4hOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGxhenlMb2FkaW5nITogYm9vbGVhbjtcclxuXHJcbiAgQElucHV0KCkgbm9QYWRkaW5nQ2VsbCE6IGJvb2xlYW47XHJcblxyXG4gIEBPdXRwdXQoKSBvblNlYXJjaGluZyA9IG5ldyBFdmVudEVtaXR0ZXI8SVNlYXJjaEl0ZW1bXT4oKTtcclxuICBAT3V0cHV0KCkgb25Ub29sQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPElDb3JlVGFibGVUb29sQ2xpY2tFdmVudEVtaXR0ZXJEYXRhPigpO1xyXG4gIEBPdXRwdXQoKSBvblJvd0NsaWNrID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBvblJvd0RvdWJsZUNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBvblNlbGVjdGVkSWRzQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmdbXSB8IG51bWJlcltdPigpO1xyXG4gIEBPdXRwdXQoKSBvblNlbGVjdGVkRGF0YUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55W10+KCk7XHJcbiAgQE91dHB1dCgpIG9uQ29sdW1uQ2FwdGlvbkNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxJQ29yZVRhYmxlQ29sdW1uSXRlbT4oKTtcclxuXHJcbiAgY2hlY2tib3hDb2x1bW5XaWR0aDogbnVtYmVyID0gMzA7IC8vICgtLWNoZWNrYm94LXNpemUpKiAyIFBsZWFzZSBkbyBub3QgY2hhbmdlIHRoaXNcclxuXHJcbiAgc2VhcmNoQWN0aXZlITogYm9vbGVhbjtcclxuICB2aXNpYmxlQ29sdW1ucyE6IElDb3JlVGFibGVDb2x1bW5JdGVtW107XHJcbiAgZnJvemVuTGVmdHM6IG51bWJlcltdID0gW107XHJcbiAgY2hlY2tpbmdNb2RlbDogYm9vbGVhbltdID0gW107XHJcbiAgaGVhZGVyQ2hlY2tib3hTdGF0ZSE6IGJvb2xlYW47XHJcbiAgY2hlY2tpbmdTdGF0ZSE6IG51bWJlcjsgLy8gMD1ub25lOyAxPWFsbDsgMj1taXhlZFxyXG4gIHRib2R5aGVpZ2h0ITogbnVtYmVyO1xyXG4gIHZpc2libGVSb3dDb3VudCE6IG51bWJlcjtcclxuXHJcbiAgcm93VG91Y2hlbmRTdHJlYW0kOiBCZWhhdmlvclN1YmplY3Q8SURvdWJsZVRvdWNoZW5kRGF0YT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PElEb3VibGVUb3VjaGVuZERhdGE+KHsgcHJldmlvdXM6IC0yLCBjdXJyZW50OiAtMSB9KTtcclxuICBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG5cclxuICBzZWFyY2hPYmplY3QhOiBJU2VhcmNoSXRlbVtdO1xyXG5cclxuICBsYW5nITogc3RyaW5nO1xyXG5cclxuICBhY3RpdmVSb3chOiBhbnk7IC8vIG51bWJlciB8IHN0cmluZ1xyXG5cclxuICBtb3VzZURvd24gPSBmYWxzZTtcclxuICBzdGFydFg6IGFueTtcclxuICBlbmRYOiBhbnk7XHJcblxyXG4gIHNjcm9sbFN0cmVhbSQhOiBPYnNlcnZhYmxlPGFueT47XHJcblxyXG4gIC8qIEZPUiBMQVpZIFVJIExPQURJTkcgKi9cclxuICByZW5kZXJBaHJlYWQ6IG51bWJlciA9IDA7XHJcbiAgaGlkZGVuVG9wSGVpZ2h0OiBudW1iZXIgPSAwO1xyXG4gIGhpZGRlbkJvdHRvbUhlaWdodDogbnVtYmVyID0gMDtcclxuICBzY3JvbGxUb3A6IG51bWJlciA9IDA7XHJcbiAgb2Zmc2V0WTogbnVtYmVyID0gMDtcclxuICB2aXNpYmxlRGF0YSE6IGFueVtdO1xyXG4gIHN0YXJ0Tm9kZTogbnVtYmVyID0gMDtcclxuICAvKioqKioqKioqKioqKioqKioqKioqKiovXHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2NvcmVUYWJsZScpIGNvcmVUYWJsZSE6IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZCgndGFibGUnKSB0YWJsZSE6IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZCgnZmlyc3RIZWFkZXJSb3cnKSBmaXJzdEhlYWRlclJvdyE6IEVsZW1lbnRSZWY7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBsYXlvdXRTZXJ2aWNlOiBMYXlvdXRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjb3JlUGFnZUxpc3RTZXJ2aWNlOiBDb3JlUGFnZUxpc3RTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBtbHM6IE11bHRpTGFuZ3VhZ2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZSxcclxuICAgIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gIH1cclxuXHJcbiAgY2FsY3VsYXRlU2Nyb2xsKCk6IHZvaWQge1xyXG5cclxuICAgIHRyeSB7XHJcblxyXG4gICAgICBpZiAoISEhdGhpcy5jb3JlVGFibGUpIHJldHVybjtcclxuICAgICAgaWYgKCEhIXRoaXMubGF6eUxvYWRpbmcpIHJldHVybjtcclxuXHJcbiAgICAgIGNvbnN0IGhlaWdodCA9IE51bWJlcihnZXRDb21wdXRlZFN0eWxlKHRoaXMuY29yZVRhYmxlLm5hdGl2ZUVsZW1lbnQpLmdldFByb3BlcnR5VmFsdWUoJy0taGVpZ2h0JykucmVwbGFjZSgncHgnLCAnJykpO1xyXG4gICAgICBjb25zdCByb3dIZWlnaHQgPSBOdW1iZXIoZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLmNvcmVUYWJsZS5uYXRpdmVFbGVtZW50KS5nZXRQcm9wZXJ0eVZhbHVlKCctLXJvdy1oZWlnaHQnKS5zcGxpdCgncHgnKVswXSk7XHJcblxyXG4gICAgICBpZiAoISEhcm93SGVpZ2h0KSB0aHJvdyBuZXcgRXJyb3IoXCJDb3VsZCBub3QgZ2V0IC0tcm93LWhlaWdodCBwcm9wZXJ0eVwiKTtcclxuXHJcbiAgICAgIGxldCBzdGFydE5vZGUgPSBNYXRoLmZsb29yKHRoaXMuc2Nyb2xsVG9wIC8gcm93SGVpZ2h0KSAtIHRoaXMucmVuZGVyQWhyZWFkO1xyXG4gICAgICBzdGFydE5vZGUgPSBNYXRoLm1heCgwLCBzdGFydE5vZGUpO1xyXG4gICAgICB0aGlzLnN0YXJ0Tm9kZSA9IHN0YXJ0Tm9kZSB8fCAwO1xyXG4gICAgICBsZXQgdmlzaWJsZU5vZGVDb3VudCA9IE1hdGguY2VpbChoZWlnaHQgLyByb3dIZWlnaHQpICsgMiAqIHRoaXMucmVuZGVyQWhyZWFkO1xyXG4gICAgICB2aXNpYmxlTm9kZUNvdW50ID0gTWF0aC5taW4odGhpcy5kYXRhLmxlbmd0aCAtIHN0YXJ0Tm9kZSwgdmlzaWJsZU5vZGVDb3VudCk7XHJcbiAgICAgIHRoaXMub2Zmc2V0WSA9IHN0YXJ0Tm9kZSAqIHJvd0hlaWdodDtcclxuICAgICAgY29uc3QgbmV3VmlzaWJsZURhdGE6IGFueVtdID0gW107XHJcblxyXG4gICAgICB0aGlzLmhpZGRlblRvcEhlaWdodCA9IHN0YXJ0Tm9kZSAqIHJvd0hlaWdodDtcclxuICAgICAgdGhpcy5oaWRkZW5Cb3R0b21IZWlnaHQgPSAodGhpcy5kYXRhLmxlbmd0aCAtIHN0YXJ0Tm9kZSAtIHZpc2libGVOb2RlQ291bnQpICogcm93SGVpZ2h0O1xyXG4gICAgICBmb3IgKGxldCBpID0gc3RhcnROb2RlOyBpIDwgc3RhcnROb2RlICsgdmlzaWJsZU5vZGVDb3VudDsgaSsrKSB7XHJcbiAgICAgICAgbmV3VmlzaWJsZURhdGEucHVzaCh0aGlzLmRhdGFbaV0pXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMudmlzaWJsZURhdGEgPSBuZXdWaXNpYmxlRGF0YTtcclxuXHJcbiAgICAgIC8qIE9QRU4gQ09NTUVOVFMgVE8gU0VFIENPTlRST0wgVkFMVUVTICovXHJcbiAgICAgIGNvbnNvbGUubG9nKFwic3RhcnROb2RlXCIsIHN0YXJ0Tm9kZSlcclxuICAgICAgLypcclxuICAgICAgY29uc29sZS5sb2coXCJ0aGlzLm9mZnNldFlcIiwgdGhpcy5vZmZzZXRZKVxyXG4gICAgICBjb25zb2xlLmxvZyhcInRoaXMuaGlkZGVuVG9wSGVpZ2h0XCIsIHRoaXMuaGlkZGVuVG9wSGVpZ2h0KVxyXG4gICAgICBjb25zb2xlLmxvZyhcInRoaXMuaGlkZGVuQm90dG9tSGVpZ2h0XCIsIHRoaXMuaGlkZGVuQm90dG9tSGVpZ2h0KVxyXG4gICAgICBjb25zb2xlLmxvZyhcInRoaXMudmlzaWJsZURhdGEubGVuZ3RoXCIsIHRoaXMudmlzaWJsZURhdGEubGVuZ3RoKVxyXG4gICAgICBjb25zdCBjb250cm9sVmFsdWUgPSAodGhpcy5oaWRkZW5Ub3BIZWlnaHQgKyB0aGlzLmhpZGRlbkJvdHRvbUhlaWdodCArIHRoaXMudmlzaWJsZURhdGEubGVuZ3RoICogcm93SGVpZ2h0KSAvIHJvd0hlaWdodFxyXG4gICAgICBjb25zb2xlLmxvZyhcImNvbnRyb2xWYWx1ZVwiLCBjb250cm9sVmFsdWUpIC8vIE11c3QgZXF1ZWFsIHBhZ2VTaXplXHJcbiAgICAgICovXHJcbiAgICB9IGNhdGNoIChlcnJvcjogYW55KSB7XHJcbiAgICAgIGlmIChpc0Rldk1vZGUoKSAmJiB0aGlzLmF1dGhTZXJ2aWNlLmRhdGEkLnZhbHVlPy5pZCA9PT0gJzhjMjQ2ODNkLTdkNTItNGY1YS04MDkwLTMxYzc3N2U4ODY5ZCcpIHtcclxuICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5lcnJvcihlcnJvci5tZXNzYWdlLCBub25lQXV0b0Nsb3NlZEFsZXJ0T3B0aW9ucyk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMudmlzaWJsZURhdGEgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuZGF0YSkpO1xyXG5cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHN0YXJ0RHJhZ2dpbmcoZTogYW55LCBjb2w6IElDb3JlVGFibGVDb2x1bW5JdGVtLCBmbGFnOiBhbnkpIHtcclxuICAgIGlmIChlLmJ1dHRvbnMgPT09IDEpIHtcclxuICAgICAgdGhpcy5zdGFydFggPSBlLnBhZ2VYO1xyXG4gICAgICBpZiAoISEhdGhpcy5tb3VzZURvd24pIHtcclxuXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5tb3VzZURvd24gPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3RvcERyYWdnaW5nKGU6IGFueSwgY29sOiBJQ29yZVRhYmxlQ29sdW1uSXRlbSwgZmxhZzogYW55KSB7XHJcbiAgICBpZiAoISF0aGlzLm1vdXNlRG93bikge1xyXG4gICAgICB0aGlzLmVuZFggPSBlLnBhZ2VYO1xyXG4gICAgICBsZXQgb2Zmc2V0ID0gdGhpcy5lbmRYIC0gdGhpcy5zdGFydFg7XHJcbiAgICAgIGNvbC53aWR0aCEgKz0gb2Zmc2V0O1xyXG4gICAgICB0aGlzLm1vdXNlRG93biA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmVuZFggPSAwO1xyXG4gICAgICB0aGlzLnN0YXJ0WCA9IDA7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBtb3ZlRXZlbnQoZTogYW55LCBjb2w6IElDb3JlVGFibGVDb2x1bW5JdGVtKSB7XHJcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICBpZiAoIXRoaXMubW91c2VEb3duKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IHggPSBlLnBhZ2VYO1xyXG4gICAgY29uc29sZS5sb2coXCJtb3ZlRXZlbnRcIiwgZS5wYWdlWClcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG5cclxuICAgIGlmICh0aGlzLnNob3dDaGVja2JveCkge1xyXG4gICAgICBpZiAoIXRoaXMuY2hlY2tib3hTaXplKSB7XHJcbiAgICAgICAgdGhpcy5jaGVja2JveFNpemUgPSAxNTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmhlYWRlckZpcnN0Um93SGVpZ2h0ID09PSB1bmRlZmluZWQpIHRoaXMuaGVhZGVyRmlyc3RSb3dIZWlnaHQgPSA0MDtcclxuICAgIGlmICh0aGlzLmhlYWRlclNlY29uZFJvd0hlaWdodCA9PT0gdW5kZWZpbmVkKSB0aGlzLmhlYWRlclNlY29uZFJvd0hlaWdodCA9IDQwO1xyXG5cclxuXHJcbiAgICAvKiBWYWxpZGF0ZSBjb2x1bW5zIGlucHV0IHRvIG1ha2Ugc3VyZSBvbmUgb2YgZmllbGRzIGlzICdpZCcgKi9cclxuICAgIGlmICghISF0aGlzLmNvbHVtbnMpIHtcclxuICAgICAgdGhpcy5hbGVydFNlcnZpY2UuZXJyb3IodGhpcy5pZCArIFwiOiBDb2x1bW5zIGFyZSBub3QgZGVmaW5lZC5cIiwgbm9uZUF1dG9DbG9zZWRBbGVydE9wdGlvbnMpXHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuY29sdW1ucz8uZmlsdGVyKChjOiBJQ29yZVRhYmxlQ29sdW1uSXRlbSkgPT4gYy5maWVsZCA9PT0gJ2lkJykubGVuZ3RoID09PSAwICYmIGlzRGV2TW9kZSgpICYmIHRoaXMuY29sdW1ucy5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5hbGVydFNlcnZpY2UuZXJyb3IodGhpcy5pZCArIFwiOiBUaGUgY29sdW1ucyBtdXN0IGhhdmUgb25lIHdpdGggJ2ZpZWxkJyBwcm9wZXJ0eSA9PT0gJ2lkJ1wiLCBub25lQXV0b0Nsb3NlZEFsZXJ0T3B0aW9ucylcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnZpc2libGVDb2x1bW5zID0gdGhpcy5jb2x1bW5zPy5maWx0ZXIoKGM6IElDb3JlVGFibGVDb2x1bW5JdGVtKSA9PiAhISFjLmhpZGRlbilcclxuICAgIGlmICghISF0aGlzLnZpc2libGVDb2x1bW5zPy5sZW5ndGggJiYgaXNEZXZNb2RlKCkgJiYgdGhpcy5jb2x1bW5zPy5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5hbGVydFNlcnZpY2UuZXJyb3IodGhpcy5pZCArIFwiOiBObyB2aXNpYmxlIGNvbHVtbiBkZWZpbmVkLlwiLCBub25lQXV0b0Nsb3NlZEFsZXJ0T3B0aW9ucylcclxuICAgIH1cclxuXHJcbiAgICAvLyBhZGQgZGVmYXVsdCBzb3J0IGRpcmVjdGlvbiB0byB2aXNpYmxlQ29sdW1uc1xyXG4gICAgdGhpcy52aXNpYmxlQ29sdW1ucz8ubWFwKGMgPT4gYy5zb3J0RGlyZWN0aW9uID0gRW51bVNvcnREaXJlY3Rpb24uTk9ORSlcclxuXHJcbiAgICAvKiBTVEFSVDogSW5pdGlhbGl6aW5nIHNlYXJjaE9iamVjdCAqL1xyXG4gICAgY29uc3QgbmV3U2VhcmNoT2JqZWN0OiBJU2VhcmNoSXRlbVtdID0gW107XHJcbiAgICB0aGlzLnZpc2libGVDb2x1bW5zPy5tYXAoYyA9PiB7XHJcbiAgICAgIG5ld1NlYXJjaE9iamVjdC5wdXNoKHtcclxuICAgICAgICBmaWVsZDogYy5maWVsZCxcclxuICAgICAgICBzZWFyY2hGb3I6ICcnXHJcbiAgICAgIH0pXHJcbiAgICB9KVxyXG4gICAgdGhpcy5zZWFyY2hPYmplY3QgPSBuZXdTZWFyY2hPYmplY3Q7XHJcbiAgICAvKiBFTkQ6IEluaXRpYWxpemluZyBzZWFyY2hPYmplY3QgKi9cclxuXHJcbiAgICBjb25zdCBmcm96ZW5Db2x1bW5zID0gdGhpcy52aXNpYmxlQ29sdW1ucz8uZmlsdGVyKChfLCBpbmRleCkgPT4gaW5kZXggPCB0aGlzLmZyb3plbik7XHJcblxyXG4gICAgbGV0IGxlZnQgPSB0aGlzLmNoZWNrYm94U2l6ZSEgKiAyIHx8IDA7IC8vIHRoZSBmaXJzdCBzaXplIGlzIGZvciBjaGVja2JveFxyXG4gICAgZnJvemVuQ29sdW1ucz8ubWFwKGMgPT4ge1xyXG4gICAgICBpZiAoISEhYy53aWR0aCkgY29uc29sZS5lcnJvcih0aGlzLmlkICsgXCI6IEVhY2ggZnJvemVuIGNvbHVtbiBtdXN0IGhhdmUgaXRzIG51bWJlciBwcm9wZXJ0eSAnd2lkdGgnLlwiKTtcclxuICAgICAgdGhpcy5mcm96ZW5MZWZ0cy5wdXNoKGxlZnQpO1xyXG4gICAgICBsZWZ0ID0gbGVmdCArIGMud2lkdGghXHJcbiAgICB9KVxyXG5cclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICB0aGlzLnJvd1RvdWNoZW5kU3RyZWFtJC5waXBlKFxyXG4gICAgICAgIGZpbHRlcigoeDogYW55KSA9PiB4LmN1cnJlbnQgPT09IHgucHJldmlvdXMpLFxyXG4gICAgICAgIGRlYm91bmNlVGltZSgyMDApLFxyXG4gICAgICApLnN1YnNjcmliZSgoeTogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5vblJvd0RvdWJsZUNsaWNrLmVtaXQoe1xyXG4gICAgICAgICAgaWQ6IHRoaXMuZGF0YVt5LmN1cnJlbnRdLmlkXHJcbiAgICAgICAgfSlcclxuICAgICAgfSlcclxuICAgIClcclxuXHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgdGhpcy5tbHMubGFuZyQuc3Vic2NyaWJlKHggPT4gdGhpcy5sYW5nID0geClcclxuICAgIClcclxuXHJcbiAgICAvKiBDaGVjayBpZiBhbnkgb2YgY29sdW1ucyBpcyB0ZW1wbGF0ZVJlZiAqL1xyXG4gICAgY29uc3QgdGVtcGxhdGVSZWZGaWx0ZXIgPSB0aGlzLmNvbHVtbnM/LmZpbHRlcih4ID0+ICEheC50ZW1wbGF0ZVJlZilcclxuICAgIGlmICghIXRlbXBsYXRlUmVmRmlsdGVyPy5sZW5ndGgpIHtcclxuICAgICAgdGVtcGxhdGVSZWZGaWx0ZXIubWFwKHggPT4ge1xyXG4gICAgICAgIGlmICh4LnRlbXBsYXRlUmVmPy5lbGVtZW50UmVmPy5uYXRpdmVFbGVtZW50Py5oZWlnaHQgPiBOdW1iZXIodGhpcy5yb3dIZWlnaHQucmVwbGFjZSgncHgnLCAnJykpKSB7XHJcbiAgICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5lcnJvcihgQ2hp4buBdSBjYW8gY+G7p2EgJHt0aGlzLm1scy50cmFucyh4LmNhcHRpb24pfSB0ZW1wbGF0ZVJlZiBsw6AgJHt4LnRlbXBsYXRlUmVmPy5lbGVtZW50UmVmPy5uYXRpdmVFbGVtZW50Py5oZWlnaHR9LCBs4bubbiBoxqFuIGNoaeG7gXUgY2FvIGPhu6dhIGTDsm5nIGzGsOG7m2kgJHt0aGlzLnJvd0hlaWdodH1gLCBub25lQXV0b0Nsb3NlZEFsZXJ0T3B0aW9ucylcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG5cclxuICAgIGlmIChjaGFuZ2VzWydjaGVja2luZ1Jlc2V0RmxhZyddKSB7XHJcbiAgICAgIGlmICghIXRoaXMuZGF0YSkge1xyXG4gICAgICAgIHRoaXMudG9nZ2xlQ2hlY2tBbGwoZmFsc2UpXHJcbiAgICAgICAgdGhpcy5oZWFkZXJDaGVja2JveFN0YXRlID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAoY2hhbmdlc1snZGF0YSddKSB7XHJcblxyXG4gICAgICAvLyBDaGVjayB1bmlxdWUgb2YgXCJpZFwiXHJcbiAgICAgIGlmIChpc0Rldk1vZGUoKSkge1xyXG4gICAgICAgIGlmIChjaGFuZ2VzWydkYXRhJ10uY3VycmVudFZhbHVlPy5sZW5ndGgpIHtcclxuICAgICAgICAgIGNvbnN0IGFyciA9IGNoYW5nZXNbJ2RhdGEnXS5jdXJyZW50VmFsdWVcclxuICAgICAgICAgIGxldCBmaW5kRHVwbGljYXRlcyA9IGFyciA9PiBhcnIuZmlsdGVyKGl0ZW0gPT4gYXJyLmZpbHRlcih4ID0+IHguaWQgPT09IGl0ZW0uaWQpLmxlbmd0aCA+IDEpXHJcbiAgICAgICAgICBpZiAoISFmaW5kRHVwbGljYXRlcyhhcnIpLmxlbmd0aCkge1xyXG4gICAgICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5lcnJvcihcIkNvcmVUYWJsZSByZXF1aXJlcyB1bmlxdWUgaWQgdmFsdWVzIVwiLCBub25lQXV0b0Nsb3NlZEFsZXJ0T3B0aW9ucylcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IG5ld0NoZWNraW5nTW9kZWw6IGJvb2xlYW5bXSA9IFtdO1xyXG4gICAgICBjaGFuZ2VzWydkYXRhJ10uY3VycmVudFZhbHVlPy5tYXAoKF86IGFueSkgPT4ge1xyXG4gICAgICAgIG5ld0NoZWNraW5nTW9kZWwucHVzaChmYWxzZSlcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMuY2hlY2tpbmdNb2RlbCA9IG5ld0NoZWNraW5nTW9kZWw7XHJcblxyXG4gICAgICBpZiAoISF0aGlzLmxhenlMb2FkaW5nKSB7XHJcbiAgICAgICAgaWYgKCEhdGhpcy5jb3JlVGFibGUpIHtcclxuICAgICAgICAgIHRoaXMuY2FsY3VsYXRlU2Nyb2xsKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMudmlzaWJsZURhdGEgPSBjaGFuZ2VzWydkYXRhJ10uY3VycmVudFZhbHVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGNoYW5nZXNbJ2NoZWNrZWRJZHMnXSkge1xyXG4gICAgICBjb25zdCBuZXdDaGVja2luZ01vZGVsOiBib29sZWFuW10gPSBbXTtcclxuICAgICAgY2hhbmdlc1snY2hlY2tlZElkcyddLmN1cnJlbnRWYWx1ZT8ubWFwKChjaGVja2VkSWQ6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuZGF0YS5tYXAoKGl0ZW0pID0+IHtcclxuICAgICAgICAgIGlmIChpdGVtWydpZCddID09PSBjaGVja2VkSWQpIHtcclxuICAgICAgICAgICAgbmV3Q2hlY2tpbmdNb2RlbC5wdXNoKHRydWUpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgbmV3Q2hlY2tpbmdNb2RlbC5wdXNoKGZhbHNlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICB9KVxyXG4gICAgICB0aGlzLmNoZWNraW5nTW9kZWwgPSBuZXdDaGVja2luZ01vZGVsO1xyXG4gICAgfVxyXG4gICAgLy8gaWYgKGNoYW5nZXNbJ2xvYWRpbmcnXSkge1xyXG4gICAgLy8gICB0aGlzLmxvYWRpbmcgPSBjaGFuZ2VzWydsb2FkaW5nJ10uY3VycmVudFZhbHVlO1xyXG4gICAgLy8gfVxyXG4gICAgaWYgKGNoYW5nZXNbJ2NvbHVtbnMnXSkge1xyXG4gICAgICB0aGlzLnZpc2libGVDb2x1bW5zID0gdGhpcy5jb2x1bW5zPy5maWx0ZXIoKGM6IElDb3JlVGFibGVDb2x1bW5JdGVtKSA9PiAhISFjLmhpZGRlbikgfHwgW11cclxuICAgIH1cclxuICAgIGlmIChjaGFuZ2VzWydjb2x1bW5TZWFyY2hEZWZhdWx0T3BlbiddKSB7XHJcbiAgICAgIHRoaXMuc2VhcmNoQWN0aXZlID0gISFjaGFuZ2VzWydjb2x1bW5TZWFyY2hEZWZhdWx0T3BlbiddLmN1cnJlbnRWYWx1ZVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZXNldEhlYWRlckZpcnN0Um93SGVpZ2h0KCk6IHZvaWQge1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGNvbnN0IGZpcnN0SGVhZGVyUm93SGVpZ2h0ID0gdGhpcy5maXJzdEhlYWRlclJvdy5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodDtcclxuICAgICAgdGhpcy5jb3JlVGFibGUubmF0aXZlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1oZWFkZXItMXN0LXJvdy1oZWlnaHQnLFxyXG4gICAgICBmaXJzdEhlYWRlclJvd0hlaWdodCArICdweCdcclxuICAgICAgKTtcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcblxyXG4gICAgaWYgKHRoaXMuY29yZVBhZ2VMaXN0SW5zdGFuY2VOdW1iZXIpIHtcclxuICAgICAgY29uc3QgY2FsbGVyRmlsdGVyID0gdGhpcy5jb3JlUGFnZUxpc3RTZXJ2aWNlLmluc3RhbmNlcy5maWx0ZXIoeCA9PiB4Lmluc3RhbmNlTnVtYmVyID09PSB0aGlzLmNvcmVQYWdlTGlzdEluc3RhbmNlTnVtYmVyKTtcclxuICAgICAgaWYgKCEhY2FsbGVyRmlsdGVyLmxlbmd0aCkge1xyXG4gICAgICAgIGNvbnN0IGNhbGxlciA9IGNhbGxlckZpbHRlclswXTtcclxuICAgICAgICBjYWxsZXIuY29yZVRhYmxlUmVmID0gdGhpcy5jb3JlVGFibGU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICghISF0aGlzLmZyZWVNb2RlKSB7XHJcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgICAgICB0aGlzLmNvcmVQYWdlTGlzdFNlcnZpY2UuaW5zdGFuY2VzLmZpbHRlcih4ID0+IHguaW5zdGFuY2VOdW1iZXIgPT09IHRoaXMuY29yZVBhZ2VMaXN0SW5zdGFuY2VOdW1iZXIpWzBdLmlkJC5zdWJzY3JpYmUoeCA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlUm93ID0geDtcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgKVxyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgICB0aGlzLmNvcmVQYWdlTGlzdFNlcnZpY2UuaW5zdGFuY2VzLmZpbHRlcih4ID0+IHguaW5zdGFuY2VOdW1iZXIgPT09IHRoaXMuY29yZVBhZ2VMaXN0SW5zdGFuY2VOdW1iZXIpWzBdLnRib2R5SGVpZ2h0JC5zdWJzY3JpYmUoeCA9PiB7XHJcbiAgICAgICAgICBpZiAoISF4KSB7XHJcbiAgICAgICAgICAgIHRoaXMudGJvZHloZWlnaHQgPSB4O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgIClcclxuXHJcbiAgICAgIGNvbnN0IHJlY3QgPSB0aGlzLmNvcmVUYWJsZS5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gICAgICB0aGlzLmNvcmVUYWJsZS5uYXRpdmVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLXRhYmxlLXdpZHRoJywgcmVjdC53aWR0aCArICdweCcpXHJcblxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc2Nyb2xsU3RyZWFtJCA9IGZyb21FdmVudCh0aGlzLnRhYmxlLm5hdGl2ZUVsZW1lbnQsICdzY3JvbGwnKTtcclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuXHJcbiAgICAgIGlmICghIXRoaXMud2lkdGgpIHRoaXMuY29yZVRhYmxlLm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0td2lkdGgnLCB0aGlzLndpZHRoICsgJ3B4Jyk7XHJcbiAgICAgIGlmICghIXRoaXMucm93SGVpZ2h0KSB0aGlzLmNvcmVUYWJsZS5uYXRpdmVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLXJvdy1oZWlnaHQnLCB0aGlzLnJvd0hlaWdodCArICdweCcpO1xyXG4gICAgICBpZiAoISF0aGlzLmhlaWdodCkgdGhpcy5jb3JlVGFibGUubmF0aXZlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1oZWlnaHQnLCB0aGlzLmhlaWdodCArICdweCcpO1xyXG5cclxuICAgICAgLy8gQ2jhu4kgc3Vic2NyaWRlIHNhdSBraGkgY8OhYyBs4buHbmggdHLDqm4gxJHDoyDEkcaw4bujYyB0aOG7sWMgaGnhu4duXHJcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICAgIHRoaXMuc2Nyb2xsU3RyZWFtJFxyXG4gICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgIGRlYm91bmNlVGltZSg1MClcclxuICAgICAgICAgIClcclxuICAgICAgICAgIC5zdWJzY3JpYmUoZXZlbnQgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnNjcm9sbFRvcCA9IGV2ZW50LnNyY0VsZW1lbnQuc2Nyb2xsVG9wO1xyXG4gICAgICAgICAgICB0aGlzLmNhbGN1bGF0ZVNjcm9sbCgpO1xyXG4gICAgICAgICAgfSlcclxuICAgICAgKVxyXG5cclxuICAgIH0sIDApXHJcblxyXG4gICAgdGhpcy5yZXNldEhlYWRlckZpcnN0Um93SGVpZ2h0KCk7XHJcblxyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgIHRoaXMubWxzLmxhbmckLnN1YnNjcmliZShfID0+IHtcclxuICAgICAgICB0aGlzLnJlc2V0SGVhZGVyRmlyc3RSb3dIZWlnaHQoKTtcclxuICAgICAgfSlcclxuICAgIClcclxuXHJcbiAgfVxyXG5cclxuICBvblRvb2xDbGlja0xvY2FsKHJvdzogYW55LCB0b29sSW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgdGhpcy5vblRvb2xDbGljay5lbWl0KHtcclxuICAgICAgY29kZTogdGhpcy50b29sc1t0b29sSW5kZXhdLmNvZGUsXHJcbiAgICAgIGlkOiByb3dbJ2lkJ11cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICB0b2dnbGVDaGVja0FsbChhcmdzOiBib29sZWFuKSB7XHJcbiAgICBjb25zdCBuZXdDaGVja2luZ01vZGVsOiBib29sZWFuW10gPSBbXTtcclxuICAgIGNvbnN0IG5ld1NlbGVjdGVkSWRzOiBhbnlbXSA9IFtdO1xyXG4gICAgY29uc3QgbmV3U2VsZWN0ZWREYXRhOiBhbnlbXSA9IFtdO1xyXG5cclxuICAgIHRoaXMuZGF0YS5tYXAoaXRlbSA9PiB7XHJcbiAgICAgIG5ld0NoZWNraW5nTW9kZWwucHVzaChhcmdzKTtcclxuICAgICAgaWYgKGFyZ3MpIHtcclxuICAgICAgICBuZXdTZWxlY3RlZElkcy5wdXNoKGl0ZW0uaWQpO1xyXG4gICAgICAgIG5ld1NlbGVjdGVkRGF0YS5wdXNoKGl0ZW0pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmNoZWNraW5nTW9kZWwgPSBuZXdDaGVja2luZ01vZGVsO1xyXG4gICAgdGhpcy5jaGVja2luZ1N0YXRlID0gYXJncyA/IDEgOiAwO1xyXG4gICAgdGhpcy5vblNlbGVjdGVkSWRzQ2hhbmdlLmVtaXQobmV3U2VsZWN0ZWRJZHMpO1xyXG4gICAgdGhpcy5vblNlbGVjdGVkRGF0YUNoYW5nZS5lbWl0KG5ld1NlbGVjdGVkRGF0YSk7XHJcbiAgfVxyXG5cclxuICBvbkNoZWNraW5nTmdNb2RlbENoYW5nZSgpIHtcclxuICAgIGNvbnN0IG5ld1NlbGVjdGVkSWRzOiBudW1iZXJbXSA9IFtdO1xyXG4gICAgY29uc3QgbmV3U2VsZWN0ZWREYXRhOiBhbnlbXSA9IFtdO1xyXG4gICAgdGhpcy5kYXRhLmZpbHRlcigoXzogYW55LCBpbmRleDogbnVtYmVyKSA9PiAhIXRoaXMuY2hlY2tpbmdNb2RlbFtpbmRleF0pLm1hcChpdGVtID0+IHtcclxuICAgICAgbmV3U2VsZWN0ZWRJZHMucHVzaChpdGVtLmlkKVxyXG4gICAgICBuZXdTZWxlY3RlZERhdGEucHVzaChpdGVtKVxyXG4gICAgfSlcclxuICAgIHRoaXMub25TZWxlY3RlZElkc0NoYW5nZS5lbWl0KG5ld1NlbGVjdGVkSWRzKTtcclxuICAgIHRoaXMub25TZWxlY3RlZERhdGFDaGFuZ2UuZW1pdChuZXdTZWxlY3RlZERhdGEpO1xyXG5cclxuICAgIGlmIChuZXdTZWxlY3RlZElkcy5sZW5ndGggPT09IDApIHtcclxuICAgICAgdGhpcy5jaGVja2luZ1N0YXRlID0gMDsgLy8gbm9uZVxyXG4gICAgfSBlbHNlIGlmIChuZXdTZWxlY3RlZElkcy5sZW5ndGggPT09IHRoaXMuY2hlY2tpbmdNb2RlbC5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5jaGVja2luZ1N0YXRlID0gMTsgLy8gYWxsXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmNoZWNraW5nU3RhdGUgPSAyOyAvLyBtaXhlZFxyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIG9uRG91YmxlQ2xpY2tMb2NhbChyb3dJbmRleDogbnVtYmVyKSB7XHJcbiAgICB0aGlzLm9uUm93RG91YmxlQ2xpY2suZW1pdCh0aGlzLmRhdGFbcm93SW5kZXhdKVxyXG4gIH1cclxuXHJcbiAgb25DbGlja0xvY2FsKHJvdzogYW55LCBldmVudDogYW55KSB7XHJcblxyXG4gICAgY29uc29sZS5sb2coXCJvbkNsaWNrTG9jYWwgcm93XCIsIHJvdywgXCJldmVudFwiLCBldmVudClcclxuXHJcbiAgICBpZiAoZXZlbnQuZGV0YWlsID09PSAxKSB7XHJcbiAgICAgIHRoaXMuYWN0aXZlUm93ID0gcm93LmlkO1xyXG4gICAgICB0aGlzLm9uUm93Q2xpY2suZW1pdChyb3cpO1xyXG4gICAgfSBlbHNlIGlmIChldmVudC5kZXRhaWwgPT09IDIpIHtcclxuICAgICAgdGhpcy5vblJvd0RvdWJsZUNsaWNrLmVtaXQocm93KVxyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIG9uUm93VG91Y2hlbmQocm93SW5kZXg6IG51bWJlcikge1xyXG4gICAgdGhpcy5yb3dUb3VjaGVuZFN0cmVhbSQubmV4dCh7XHJcbiAgICAgIHByZXZpb3VzOiB0aGlzLnJvd1RvdWNoZW5kU3RyZWFtJC52YWx1ZS5jdXJyZW50LFxyXG4gICAgICBjdXJyZW50OiByb3dJbmRleFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvblNlYXJjaChlOiBzdHJpbmcsIHNlYXJjaENvbHVtbkluZGV4OiBudW1iZXIpOiB2b2lkIHtcclxuICAgIHRoaXMuc2VhcmNoT2JqZWN0LmZpbHRlcigoXywgaSkgPT4gaSA9PT0gc2VhcmNoQ29sdW1uSW5kZXgpWzBdLnNlYXJjaEZvciA9IGU7XHJcbiAgICB0aGlzLm9uU2VhcmNoaW5nLmVtaXQodGhpcy5zZWFyY2hPYmplY3QpO1xyXG4gIH1cclxuXHJcbiAgb25Db2x1bW5DYXB0aW9uQ2xpY2tMb2NhbChjb2x1bW46IElDb3JlVGFibGVDb2x1bW5JdGVtKSB7XHJcblxyXG4gICAgaWYgKCEhY29sdW1uLnRlbXBsYXRlUmVmKSByZXR1cm47IC8vIG5vIGFjdGlvbiBmb3IgdGVtcGxhdGVSZWYgdHlwZVxyXG5cclxuICAgIHRoaXMub25Db2x1bW5DYXB0aW9uQ2xpY2suZW1pdChjb2x1bW4pO1xyXG5cclxuICAgIC8vIHVwZGF0ZSBzb3J0IGRpY3JlY3Rpb24gcHJvcGVydHkgb2YgdGhpcyBjb2x1bW5cclxuICAgIC8vIGFuZCBjbGVhciB1cCB0aGUgcHJvcGVydHkgZm9yIHRoZSBvdGhlciB2aXNpYmxlQ29sdW1uc1xyXG4gICAgdGhpcy52aXNpYmxlQ29sdW1ucy5tYXAodmMgPT4ge1xyXG4gICAgICBpZiAodmMuZmllbGQgPT09IGNvbHVtbi5maWVsZCkge1xyXG4gICAgICAgIHZjLnNvcnREaXJlY3Rpb24gPSB2Yy5zb3J0RGlyZWN0aW9uID09PSBFbnVtU29ydERpcmVjdGlvbi5OT05FID8gRW51bVNvcnREaXJlY3Rpb24uQVNDIDogdmMuc29ydERpcmVjdGlvbiA9PT0gRW51bVNvcnREaXJlY3Rpb24uQVNDID8gRW51bVNvcnREaXJlY3Rpb24uREVTQyA6IEVudW1Tb3J0RGlyZWN0aW9uLk5PTkU7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdmMuc29ydERpcmVjdGlvbiA9IEVudW1Tb3J0RGlyZWN0aW9uLk5PTkVcclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIHRvZ2dsZUFsbG93U2VhcmNoKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zZWFyY2hBY3RpdmUgPSAhISF0aGlzLnNlYXJjaEFjdGl2ZVxyXG4gIH1cclxuXHJcbiAgb25JbmxpbmVUb29sQ2xpY2soZTogSUNvcmVCdXR0b25WTlMsIHJvdzogYW55KTogdm9pZCB7XHJcbiAgICBjb25zb2xlLmxvZyhcIm9uSW5saW5lVG9vbENsaWNrXCIsIGUsIHJvdylcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLm1hcCh4ID0+IHg/LnVuc3Vic2NyaWJlKCkpO1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPGRpdiAjY29yZVRhYmxlIGNsYXNzPVwiY29yZS10YWJsZS1jb250YWluZXJcIiBbY2xhc3MuaGlkZS1zZWFyY2hdPVwiISEhc2VhcmNoQWN0aXZlXCI+XHJcblxyXG4gICAgQGlmICghc2VhcmNoU3dpdGNoRGlzYWJsZWQpIHtcclxuICAgIDxkaXYgY2xhc3M9XCJzZWFyY2gtdG9nZ2xlciBkLWZsZXgtY2VudGVyIHBvaW50ZXJcIiAoY2xpY2spPVwidG9nZ2xlQWxsb3dTZWFyY2goKVwiPlxyXG4gICAgICAgIDxpIGNsYXNzPVwiZmVhdGhlci1zZWFyY2hcIj48L2k+XHJcbiAgICA8L2Rpdj5cclxuICAgIH1cclxuXHJcbiAgICA8IS0tIFxyXG4gICAgICAgIEPhuqduIHRydXnhu4FuIGNow61uaCB4w6FjIGhlaWdodCBj4bunYSBDb3JlVGFibGVcclxuICAgICAgICBUdXkgbmhpw6puIGNoaeG7gXUgY2FvIGPhu6dhIENvcmVUYWJsZSBj4bqnbiDEkcaw4bujYyB0w61uaCBk4buxYSB2w6BvIGNoaeG7gXUgY2FvIGPhu6dhIGPDoWMgcGjhuqduIHThu60gRE9NIGzhuqduIGzGsOG7o3QgdOG7qyBs4bubcCBuZ2/DoGkgdsOgbyBs4bubcCB0cm9uZ1xyXG4gICAgICAgIEFuaCBlbSBjaMawYSB0w61uaCBraGkgdHJp4buDbiBraGFpIGNvZGUsIG7Dqm4gxJFhbmcgY+G6p24gY8OzIGNvbiBz4buRIGRlZmF1bHQgbMOgIDQwMHB4XHJcbiAgICAtLT5cclxuICAgIDx0YWJsZSBbY2xhc3Mud3JhcF09XCIhIXdyYXBcIiAjdGFibGUgW25nU3R5bGVdPVwieyBoZWlnaHQ6IChoZWlnaHQgfHwgNDAwKSArICdweCcgfVwiPlxyXG4gICAgICAgIDxjb2xncm91cD5cclxuICAgICAgICAgICAgQGlmIChzaG93Q2hlY2tib3gpIHtcclxuICAgICAgICAgICAgPGNvbD4gfVxyXG4gICAgICAgICAgICBAZm9yIChjb2wgb2YgdmlzaWJsZUNvbHVtbnM7IHRyYWNrIGNvbCkge1xyXG4gICAgICAgICAgICA8Y29sPiB9XHJcbiAgICAgICAgICAgIEBpZiAoc2hvd1Rvb2xzKSB7XHJcbiAgICAgICAgICAgIDxjb2w+IH1cclxuICAgICAgICA8L2NvbGdyb3VwPlxyXG4gICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgPHRyICNmaXJzdEhlYWRlclJvdyBkYXRhLXJvdz1cIjFcIiBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IGhlYWRlckZpcnN0Um93SGVpZ2h0ICsgJ3B4J1xyXG4gICAgICAgICAgICB9XCI+XHJcbiAgICAgICAgICAgICAgICBAaWYgKHNob3dDaGVja2JveCkge1xyXG4gICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiY2hlY2stY29sLWhlYWRlciBjaGVjay1jZWxsIGZyb3plbi1jb2xcIiBzdHlsZT1cImxlZnQ6IDBweFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIucm93c3Bhbl09XCJzZWFyY2hBY3RpdmUgPyAyIDogMVwiIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAnIzY2NjY2NicsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiAnd2hpdGUnXHJcbiAgICAgICAgICAgICAgICAgICAgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gcGxlYXNlIGRvIG5vdCBjaGFuZ2UgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogY2hlY2tib3hTaXplICogMiArICdweCdcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjaGVja3dyYXBcIiBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBzZWFyY2hBY3RpdmUgPyBoZWFkZXJGaXJzdFJvd0hlaWdodCArIGhlYWRlclNlY29uZFJvd0hlaWdodCArICdweCcgOiBoZWFkZXJGaXJzdFJvd0hlaWdodCArICdweCdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBbaWRdPVwiJ2NoZWNrLWNvbC1oZWFkZXInICsgaWRcIiBbKG5nTW9kZWwpXT1cImhlYWRlckNoZWNrYm94U3RhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInRvZ2dsZUNoZWNrQWxsKCRldmVudClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlY2ttYXJrXCIgW2NsYXNzLm1peGVkXT1cImNoZWNraW5nU3RhdGU9PT0yXCIgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3A6ICgoaGVhZGVyRmlyc3RSb3dIZWlnaHQgKyBoZWFkZXJTZWNvbmRSb3dIZWlnaHQgKiAoc2VhcmNoQWN0aXZlID8gMSA6IDApKSAvMiAtIGNoZWNrYm94U2l6ZS8yKSArICdweCdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIEBmb3IgKGNvbCBvZiB2aXNpYmxlQ29sdW1uczsgdHJhY2sgY29sKSB7XHJcbiAgICAgICAgICAgICAgICA8dGggW2NsYXNzLmZyb3plbi1jb2xdPVwiJGluZGV4IDwgZnJvemVuXCJcclxuICAgICAgICAgICAgICAgICAgICBbc3R5bGVdPVwiJGluZGV4IDwgZnJvemVuID8gJ2xlZnQ6ICcgKyBmcm96ZW5MZWZ0c1skaW5kZXhdICsgJ3B4JyA6ICcnXCIgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAnIzY2NjY2NicsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogJ3doaXRlJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6ICEhbm9QYWRkaW5nQ2VsbCA/ICcwcHggMHB4JyA6ICcwcHggMTJweCdcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gLTFweCBmb3IgYm9yZGVyQm90dG9tIG9mIGhlYWRlciBmaXJzdCByb3cgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbHVtbi1jYXB0aW9uXCIgW2NsYXNzLmFzY2VuZGluZ109XCJjb2wuc29ydERpcmVjdGlvbj09PS0xXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmRlc2NlbmRpbmddPVwiY29sLnNvcnREaXJlY3Rpb249PT0xXCIgKGNsaWNrKT1cIm9uQ29sdW1uQ2FwdGlvbkNsaWNrTG9jYWwoY29sKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cImNvbC5jYXB0aW9uIHwgdHJhbnNsYXRlIDogbGFuZ1wiIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogY29sLndpZHRoICsgJ3B4JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IChoZWFkZXJGaXJzdFJvd0hlaWdodCAtIDEpICsgJ3B4JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiAnZmxleCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpdGVTcGFjZTogISFoZWFkZXJXcmFwID8gJ2luaXRpYWwnIDogJ2luaGVyaXQnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRBbGlnbjogJ2NlbnRlcidcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIj57eyBjb2wuY2FwdGlvbiB8IHRyYW5zbGF0ZSA6IGxhbmcgfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVzaXplclwiIChtb3VzZWRvd24pPVwic3RhcnREcmFnZ2luZygkZXZlbnQsIGNvbCwgZmFsc2UpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKG1vdXNldXApPVwic3RvcERyYWdnaW5nKCRldmVudCwgY29sLCBmYWxzZSlcIiAobW91c2Vtb3ZlKT1cIm1vdmVFdmVudCgkZXZlbnQsIGNvbClcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBAaWYgKHNob3dUb29scyAmJiB2aXNpYmxlQ29sdW1ucz8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJjaGVjay1jb2wtaGVhZGVyIGNoZWNrLWNlbGxcIiBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogJyM2NjY2NjYnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogJ3doaXRlJ1xyXG4gICAgICAgICAgICAgICAgICAgIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPVwid2lkdGg6IDEwMHB4O1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgQGlmIChzZWFyY2hBY3RpdmUpIHtcclxuICAgICAgICAgICAgPHRyIGRhdGEtcm93PVwiMlwiIFtjbGFzcy5oaWRlbl09XCIhISFzZWFyY2hBY3RpdmVcIj5cclxuICAgICAgICAgICAgICAgIEBmb3IgKGNvbCBvZiB2aXNpYmxlQ29sdW1uczsgdHJhY2sgY29sKSB7XHJcbiAgICAgICAgICAgICAgICA8dGggW2NsYXNzLmZyb3plbi1jb2xdPVwiJGluZGV4IDwgZnJvemVuXCJcclxuICAgICAgICAgICAgICAgICAgICBbc3R5bGVdPVwiJGluZGV4IDwgZnJvemVuID8gJ2xlZnQ6ICcgKyBmcm96ZW5MZWZ0c1skaW5kZXhdICsgJ3B4JyA6ICcnXCIgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogJyM2NjY2NjYnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiAnd2hpdGUnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgQGlmICghY29sLmhpZGVTZWFyY2hCb3gpIHtcclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IFtzdHlsZV09XCInd2lkdGg6ICcgKyBjb2wud2lkdGggKyAncHg7J1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbCBzZWFyY2hcIiBbKG5nTW9kZWwpXT1cInNlYXJjaE9iamVjdFskaW5kZXhdLnNlYXJjaEZvclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvblNlYXJjaCgkZXZlbnQsICRpbmRleClcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgPHRoIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAnIzY2NjY2NicsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiAnd2hpdGUnXHJcbiAgICAgICAgICAgICAgICAgICAgfVwiPjwvdGg+XHJcbiAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICA8L3RoZWFkPlxyXG5cclxuICAgICAgICA8dGJvZHkgW2NsYXNzLmxvYWRpbmddPVwibG9hZGluZ1wiPlxyXG4gICAgICAgICAgICA8Y29yZS1sb2FkaW5nLXN1cmZhY2UgW2xvYWRpbmddPVwibG9hZGluZ1wiIFtoZWlnaHRdPVwidGJvZHloZWlnaHQgfHwgNTAwXCI+PC9jb3JlLWxvYWRpbmctc3VyZmFjZT5cclxuXHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICBAaWYgKCEhbGF6eUxvYWRpbmcpIHtcclxuICAgICAgICAgICAgICAgIDx0ciBbbmdTdHlsZV09XCJ7IGhlaWdodDogaGlkZGVuVG9wSGVpZ2h0ICsgJ3B4JyB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtuZ1N0eWxlXT1cInsgaGVpZ2h0OiBoaWRkZW5Ub3BIZWlnaHQgKyAncHgnIH1cIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBAZm9yIChyb3cgb2YgdmlzaWJsZURhdGE7IHRyYWNrIHJvdykge1xyXG4gICAgICAgICAgICAgICAgPHRyIChjbGljayk9XCJvbkNsaWNrTG9jYWwocm93LCAkZXZlbnQpXCIgKHRvdWNoZW5kKT1cIm9uUm93VG91Y2hlbmQoJGluZGV4K3N0YXJ0Tm9kZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwicm93LmlkID09PSBhY3RpdmVSb3cgJiYgISEhZGlzYWJsZUhpZ2hsaWdodE9uQ2xpY2tcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwicm93LWl0ZW0tdG9vbHNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdy1pdGVtLXRvb2xcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctaXRlbS10b29sLXdyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y29yZS1idXR0b24tZ3JvdXAtdm5zIFtzaG93bkl0ZW1zXT1cImlubGluZVRvb2xJdGVtc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChidXR0b25DbGljayk9XCJvbklubGluZVRvb2xDbGljaygkZXZlbnQsIHJvdylcIj48L2NvcmUtYnV0dG9uLWdyb3VwLXZucz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIEBpZiAoc2hvd0NoZWNrYm94KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiY2hlY2stY2VsbCBmcm96ZW4tY29sXCIgc3R5bGU9XCJsZWZ0OiAwcHg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNoZWNrd3JhcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIGNsYXNzPVwiY2hlY2stcm93XCIgW2lkXT1cIidjaGVjay1yb3cnICsgKCRpbmRleCArIHN0YXJ0Tm9kZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY2hlY2tpbmdNb2RlbFskaW5kZXgrc3RhcnROb2RlXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25DaGVja2luZ05nTW9kZWxDaGFuZ2UoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGVja21hcmtcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIEBmb3IgKGNvbCBvZiB2aXNpYmxlQ29sdW1uczsgdHJhY2sgY29sKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkIFtjbGFzcy5mcm96ZW4tY29sXT1cIiRpbmRleCA8IGZyb3plblwiIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVmdDogJGluZGV4IDwgZnJvemVuID8gZnJvemVuTGVmdHNbJGluZGV4XSArICdweCcgOiAnMHB4JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogISFub1BhZGRpbmdDZWxsID8gJzBweCAwcHgnIDogJzJweCAwcHgnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmICghY29sPy50ZW1wbGF0ZVJlZikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIElOIE1PU1QgQ0FTRVMgV0UgTkVFRCBUTyBSRU5ERVIgVEhFIENFTEwgV0lUSCBQUklNSVRJVkUgVFlQRSAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbY2xhc3Muc2Nyb2xsLXldPVwiYWxsb3dDZWxsU2Nyb2xsWVwiIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAhIWNvbC53aWR0aCA/IGNvbC53aWR0aCArICdweCcgOiAndW5zZXQnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dEFsaWduOiAhIWNvbC5hbGlnbiA/IGNvbC5hbGlnbi50b0xvd2VyQ2FzZSgpIDogJ3Vuc2V0JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVIZWlnaHQ6IHJvd0hlaWdodCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6ICEhbm9QYWRkaW5nQ2VsbCA/ICcwcHggMHB4JyA6ICcwcHggMTJweCdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiIFthcHBUb29sdGlwXT1cInJvd1tjb2wuZmllbGRdIHwgdGFibGVDZWxsOiBjb2wucGlwZSA6IGxhbmdcIj57e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93W2NvbC5maWVsZF0gfCB0YWJsZUNlbGw6IGNvbC5waXBlIDogbGFuZyB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gQlVUIFNPTUUgVElNRSBXRSBORUVEIFRPIFJFTkRFUiBUSEUgQ0VMTCBXSVRIIFRFTVBMQVRFIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAhIWNvbC53aWR0aCA/IGNvbC53aWR0aCArICdweCcgOiAndW5zZXQnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dEFsaWduOiAhIWNvbC5hbGlnbiA/IGNvbC5hbGlnbi50b0xvd2VyQ2FzZSgpIDogJ3Vuc2V0JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6ICEhbm9QYWRkaW5nQ2VsbCA/ICcwcHggMHB4JyA6ICcwcHggMTJweCdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmICghY29sPy50ZW1wbGF0ZVJlZkFsbG93RWRpdE9uUm93QWN0aXZlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29sPy50ZW1wbGF0ZVJlZiE7IGNvbnRleHQ6IHsgY29udGV4dDogcm93IH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29sPy50ZW1wbGF0ZVJlZiE7IGNvbnRleHQ6IHsgY29udGV4dDogcm93LCBhbGxvd0VkaXQ6IHJvdy5pZCA9PT0gYWN0aXZlUm93IH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICBAaWYgKHNob3dUb29scykge1xyXG4gICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRvb2xzLWdyb3VwIGQtZmxleC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKHRvb2wgb2YgdG9vbHM7IHRyYWNrIHRvb2wpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW2NsYXNzXT1cIid0b29scy1pY29uICcgKyB0b29sLmNsYXNzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwidG9vbC5kaXNhYmxlZEZuID8gdG9vbC5kaXNhYmxlZEZuIShyb3cpIDogZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5oaWRkZW5dPVwidG9vbC5oaWRkZW5GbiA/IHRvb2wuaGlkZGVuRm4hKHJvdykgOiBmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uVG9vbENsaWNrTG9jYWwocm93LCAkaW5kZXgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIEBpZiAoISFsYXp5TG9hZGluZykge1xyXG4gICAgICAgICAgICAgICAgPHRyIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IGhpZGRlbkJvdHRvbUhlaWdodCArICdweCdcclxuICAgICAgICAgICAgICAgIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogaGlkZGVuQm90dG9tSGVpZ2h0ICsgJ3B4J1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgIEBpZiAoISFmb290ZXIpIHtcclxuICAgICAgICA8dGZvb3Q+XHJcbiAgICAgICAgICAgIEZvb3RlclxyXG4gICAgICAgIDwvdGZvb3Q+XHJcbiAgICAgICAgfVxyXG4gICAgPC90YWJsZT5cclxuPC9kaXY+Il19
|
|
496
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtaGlzdGFmZi1hbHBoYS9zcmMvbGliL2FwcC9saWJyYXJpZXMvY29yZS10YWJsZS9jb3JlLXRhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1oaXN0YWZmLWFscGhhL3NyYy9saWIvYXBwL2xpYnJhcmllcy9jb3JlLXRhYmxlL2NvcmUtdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxLQUFLLEVBQStDLFNBQVMsRUFBaUIsTUFBTSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckssT0FBTyxFQUFFLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBMENoRSxPQUFPLEVBQWdCLGVBQWUsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFjLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVsRyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSw0REFBNEQsQ0FBQztBQVMxRyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUUxRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sb0VBQW9FLENBQUM7QUFDOUcsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sNkVBQTZFLENBQUM7QUFDMUgsT0FB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QUs7Z0JBQ0csMEJBQTBCO3NCQUFsQyxLQUFLO2dCQUNHLHVCQUF1QjtzQkFBL0IsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csdUJBQXVCO3NCQUEvQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBRUcsYUFBYTtzQkFBckIsS0FBSztnQkFFSSxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxnQkFBZ0I7c0JBQXpCLE1BQU07Z0JBQ0csbUJBQW1CO3NCQUE1QixNQUFNO2dCQUNHLG9CQUFvQjtzQkFBN0IsTUFBTTtnQkFDRyxvQkFBb0I7c0JBQTdCLE1BQU07Z0JBc0NpQixTQUFTO3NCQUFoQyxTQUFTO3VCQUFDLFdBQVc7Z0JBQ0YsS0FBSztzQkFBeEIsU0FBUzt1QkFBQyxPQUFPO2dCQUNXLGNBQWM7c0JBQTFDLFNBQVM7dUJBQUMsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbnB1dCwgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcywgVmlld0NoaWxkLCBTaW1wbGVDaGFuZ2VzLCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgaXNEZXZNb2RlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbmV4cG9ydCBlbnVtIEVDb3JlVGFibGVUb29sQ29kZSB7XHJcbiAgZWRpdCA9ICdlZGl0JyxcclxuICBkZWxldGUgPSAnZGVsZXRlJyxcclxuICBjb21wbGV0ZSA9ICdjb21wbGV0ZScsXHJcbiAgbmF2aWdhdGUgPSAnbmF2aWdhdGUnLFxyXG59XHJcblxyXG5leHBvcnQgZW51bSBFQ29yZVRhYmxlVG9vbENsYXNzIHtcclxuICBlZGl0ID0gJ2VkaXQtaWNvbicsXHJcbiAgZGVsZXRlID0gJ2RlbGV0ZS1pY29uJyxcclxuICByZXBlYXQgPSAncmVwZWF0LWljb24nLFxyXG4gIG5hdmlnYXRlID0gJ25hdmlnYXRlLWljb24nXHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUNvcmVUYWJsZVRvb2xJdGVtIHtcclxuICBjb2RlOiBFQ29yZVRhYmxlVG9vbENvZGU7XHJcbiAgY2xhc3M6IEVDb3JlVGFibGVUb29sQ2xhc3M7XHJcbiAgY2FwdGlvbj86IEVudW1UcmFuc2xhdGVLZXkgfCBzdHJpbmc7IC8vIExhdGVyIHdlIHdpbGwgcmVtb3ZlIFwifCBzdHJpbmdcIlxyXG5cclxuICAvKiBjYWxsYmFja3MgdG8gY2FsY3VsYXRlIGRpc2FibGVkIGFuZCBoaWRlbiBiYXNlZCBvbiByb3cqL1xyXG4gIGRpc2FibGVkRm4/OiAocm93OiBhbnkpID0+IGJvb2xlYW47XHJcbiAgaGlkZGVuRm4/OiAocm93OiBhbnkpID0+IGJvb2xlYW47XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUNvcmVUYWJsZVRvb2xDbGlja0V2ZW50RW1pdHRlckRhdGEge1xyXG4gIGNvZGU6IEVDb3JlVGFibGVUb29sQ29kZTtcclxuICBpZDogc3RyaW5nIHwgbnVtYmVyO1xyXG59XHJcblxyXG4vKlxyXG5leHBvcnQgaW50ZXJmYWNlIElDb3JlVGFibGVSb3dEb3VibGVDbGlja0V2ZW50RW1pdHRlckRhdGEge1xyXG4gIGlkOiBzdHJpbmcgfCBudW1iZXI7XHJcbn1cclxuKi9cclxuXHJcbmludGVyZmFjZSBJRG91YmxlVG91Y2hlbmREYXRhIHtcclxuICBwcmV2aW91czogbnVtYmVyO1xyXG4gIGN1cnJlbnQ6IG51bWJlcjtcclxufVxyXG5cclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uLCBCZWhhdmlvclN1YmplY3QsIGZpbHRlciwgZGVib3VuY2VUaW1lLCBPYnNlcnZhYmxlLCBmcm9tRXZlbnQgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQ29yZVBhZ2VMaXN0U2VydmljZSB9IGZyb20gJy4uL2NvcmUtcGFnZS1saXN0L2NvcmUtcGFnZS1saXN0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb3JlRm9ybUNvbnRyb2xCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vY29yZS1mb3JtLWNvbnRyb2wtYmFzZS9jb3JlLWZvcm0tY29udHJvbC1iYXNlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IElDb3JlQnV0dG9uVk5TIH0gZnJvbSAnLi4vY29yZS1idXR0b24tZ3JvdXAtdm5zL2NvcmUtYnV0dG9uLWdyb3VwLXZucy9JQ29yZUJ1dHRvblZOUyc7XHJcbmltcG9ydCB7IEVudW1Db3JlQnV0dG9uVk5TQ29kZSB9IGZyb20gJy4uL2NvcmUtYnV0dG9uLWdyb3VwLXZucy9jb3JlLWJ1dHRvbi1ncm91cC12bnMvRW51bUNvcmVCdXR0b25WTlNDb2RlJztcclxuaW1wb3J0IHsgRW51bVRyYW5zbGF0ZUtleSB9IGZyb20gXCJhbHBoYS1nbG9iYWwtY29uc3RhbnRzXCI7XHJcbmltcG9ydCB7IElTZWFyY2hJdGVtIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9JUXVlcnlMaXN0UmVxdWVzdCc7XHJcbmltcG9ydCB7IExheW91dFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9sYXlvdXQuc2VydmljZSc7XHJcbmltcG9ydCB7IE11bHRpTGFuZ3VhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbXVsdGktbGFuZ3VhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IEFsZXJ0U2VydmljZSB9IGZyb20gJy4uL2FsZXJ0L2FsZXJ0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2F1dGguc2VydmljZSc7XHJcbmltcG9ydCB7IG5vbmVBdXRvQ2xvc2VkQWxlcnRPcHRpb25zIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL2FsZXJ0T3B0aW9ucyc7XHJcbmltcG9ydCB7IElDb3JlVGFibGVDb2x1bW5JdGVtIH0gZnJvbSAnLi9JQ29yZVRhYmxlQ29sdW1uSXRlbSc7XHJcbmltcG9ydCB7IEVudW1Tb3J0RGlyZWN0aW9uIH0gZnJvbSAnLi4vLi4vZW51bS9FbnVtU29ydERpcmVjdGlvbic7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENvcmVCdXR0b25Hcm91cENvbXBvbmVudCB9IGZyb20gJy4uL2NvcmUtYnV0dG9uLWdyb3VwL2NvcmUtYnV0dG9uLWdyb3VwL2NvcmUtYnV0dG9uLWdyb3VwLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRocmVlZG90c0NvbXBvbmVudCB9IGZyb20gJy4uL3RocmVlZG90cy90aHJlZWRvdHMuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVG9vbHRpcERpcmVjdGl2ZSB9IGZyb20gJy4uL3Rvb2x0aXAvdG9vbHRpcC5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBDb3JlTG9hZGluZ1N1cmZhY2VDb21wb25lbnQgfSBmcm9tICcuLi9jb3JlLWxvYWRpbmctc3VyZmFjZS9jb3JlLWxvYWRpbmctc3VyZmFjZS9jb3JlLWxvYWRpbmctc3VyZmFjZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb3JlQnV0dG9uR3JvdXBWbnNDb21wb25lbnQgfSBmcm9tICcuLi9jb3JlLWJ1dHRvbi1ncm91cC12bnMvY29yZS1idXR0b24tZ3JvdXAtdm5zL2NvcmUtYnV0dG9uLWdyb3VwLXZucy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUYWJsZUNlbGxQaXBlIH0gZnJvbSAnLi4vcGlwZXMvdGFibGUtY2VsbC5waXBlJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlUGlwZSB9IGZyb20gJy4uLy4uL2FwcC1waXBlcy90cmFuc2xhdGUucGlwZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2NvcmUtdGFibGUnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBDb3JlQnV0dG9uR3JvdXBDb21wb25lbnQsXHJcbiAgICBUaHJlZWRvdHNDb21wb25lbnQsXHJcbiAgICBUb29sdGlwRGlyZWN0aXZlLFxyXG4gICAgVGFibGVDZWxsUGlwZSxcclxuICAgIFRyYW5zbGF0ZVBpcGUsXHJcbiAgICBDb3JlTG9hZGluZ1N1cmZhY2VDb21wb25lbnQsXHJcbiAgICBDb3JlQnV0dG9uR3JvdXBWbnNDb21wb25lbnQsXHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vY29yZS10YWJsZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vY29yZS10YWJsZS5jb21wb25lbnQuc2NzcyddLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgbXVsdGk6IHRydWUsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBDb3JlVGFibGVDb21wb25lbnRcclxuICAgIH1cclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb3JlVGFibGVDb21wb25lbnQgZXh0ZW5kcyBDb3JlRm9ybUNvbnRyb2xCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XHJcblxyXG4gIC8qXHJcbiAgVGhpcyBjb21wb25lbnQgZGlzcGxheXMgaW5wdXQgZGF0YSB3aXRob3V0IHBhZ2luYXRpb24uXHJcbiAgRm9yIHBhZ2luYXRpbmcgcGxlYXNlIG9yZ2FuaXplIGZyb20gcGFyZW50c1xyXG4gICovXHJcblxyXG4gIEBJbnB1dCgpIGlkITogc3RyaW5nOyAvLyBmb3IgaHRtbCBpZCBpZGVudGlmeWluZ1xyXG4gIEBJbnB1dCgpIHdpZHRoITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGhlaWdodCE6IG51bWJlcjtcclxuICBASW5wdXQoKSBzaG93Q2hlY2tib3ghOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGNoZWNrYm94U2l6ZSE6IG51bWJlcjtcclxuICBASW5wdXQoKSBvdXRlckJ1dHRvbnMhOiBJQ29yZUJ1dHRvblZOU1tdO1xyXG4gIEBJbnB1dCgpIHNob3dUb29scyE6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgdG9vbHMhOiBJQ29yZVRhYmxlVG9vbEl0ZW1bXTtcclxuICBASW5wdXQoKSBjaGVja2luZ1Jlc2V0RmxhZyE6IGJvb2xlYW47XHJcblxyXG4gIC8qIGNoYW5nZSB0aGVzZSAyIHByb3BzIHRvIHdyYXAgaGVhZGVyIHRleHRzICovXHJcbiAgQElucHV0KCkgaGVhZGVyV3JhcCE6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgaGVhZGVyRmlyc3RSb3dIZWlnaHQhOiBudW1iZXI7XHJcbiAgLyoqICovXHJcbiAgXHJcbiAgQElucHV0KCkgaGVhZGVyU2Vjb25kUm93SGVpZ2h0ITogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIHdyYXAhOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGFsbG93Q2VsbFNjcm9sbFkhOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGxvYWRpbmchOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIHJvd0hlaWdodCE6IHN0cmluZzsgLy8gVkVSWSBJTVBPUlRBTlQgUFJPUEVSVFlcclxuICBASW5wdXQoKSBmcm96ZW4hOiBudW1iZXI7XHJcbiAgQElucHV0KCkgZm9vdGVyITogYW55O1xyXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pIGNvbHVtbnMhOiBJQ29yZVRhYmxlQ29sdW1uSXRlbVtdOyAvLyByZXF1aXJlZFxyXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pIGRhdGEhOiBhbnlbXTsgLy8gcmVxdWlyZWRcclxuICBASW5wdXQoKSBzZWxlY3RlZElkcyE6IHN0cmluZ1tdIHwgbnVtYmVyW107XHJcbiAgQElucHV0KCkgY29yZVBhZ2VMaXN0SW5zdGFuY2VOdW1iZXIhOiBudW1iZXI7XHJcbiAgQElucHV0KCkgZGlzYWJsZUhpZ2hsaWdodE9uQ2xpY2shOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGZyZWVNb2RlITogYm9vbGVhbjtcclxuICBASW5wdXQoKSBzZWFyY2hTd2l0Y2hEaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlOyAvLyA/Pz9cclxuICBASW5wdXQoKSBkaXNhYmxlU29ydGluZyE6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgaW5saW5lVG9vbEl0ZW1zITogRW51bUNvcmVCdXR0b25WTlNDb2RlW107XHJcbiAgQElucHV0KCkgY29sdW1uU2VhcmNoRGVmYXVsdE9wZW4hOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGxhenlMb2FkaW5nITogYm9vbGVhbjtcclxuXHJcbiAgQElucHV0KCkgbm9QYWRkaW5nQ2VsbCE6IGJvb2xlYW47XHJcblxyXG4gIEBPdXRwdXQoKSBvblNlYXJjaGluZyA9IG5ldyBFdmVudEVtaXR0ZXI8SVNlYXJjaEl0ZW1bXT4oKTtcclxuICBAT3V0cHV0KCkgb25Ub29sQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPElDb3JlVGFibGVUb29sQ2xpY2tFdmVudEVtaXR0ZXJEYXRhPigpO1xyXG4gIEBPdXRwdXQoKSBvblJvd0NsaWNrID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBvblJvd0RvdWJsZUNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBvblNlbGVjdGVkSWRzQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmdbXSB8IG51bWJlcltdPigpO1xyXG4gIEBPdXRwdXQoKSBvblNlbGVjdGVkRGF0YUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55W10+KCk7XHJcbiAgQE91dHB1dCgpIG9uQ29sdW1uQ2FwdGlvbkNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxJQ29yZVRhYmxlQ29sdW1uSXRlbT4oKTtcclxuXHJcbiAgY2hlY2tib3hDb2x1bW5XaWR0aDogbnVtYmVyID0gMzA7IC8vICgtLWNoZWNrYm94LXNpemUpKiAyIFBsZWFzZSBkbyBub3QgY2hhbmdlIHRoaXNcclxuXHJcbiAgc2VhcmNoQWN0aXZlITogYm9vbGVhbjtcclxuICB2aXNpYmxlQ29sdW1ucyE6IElDb3JlVGFibGVDb2x1bW5JdGVtW107XHJcbiAgZnJvemVuTGVmdHM6IG51bWJlcltdID0gW107XHJcbiAgY2hlY2tpbmdNb2RlbDogYm9vbGVhbltdID0gW107XHJcbiAgaGVhZGVyQ2hlY2tib3hTdGF0ZSE6IGJvb2xlYW47XHJcbiAgY2hlY2tpbmdTdGF0ZSE6IG51bWJlcjsgLy8gMD1ub25lOyAxPWFsbDsgMj1taXhlZFxyXG4gIHRib2R5aGVpZ2h0ITogbnVtYmVyO1xyXG4gIHZpc2libGVSb3dDb3VudCE6IG51bWJlcjtcclxuXHJcbiAgcm93VG91Y2hlbmRTdHJlYW0kOiBCZWhhdmlvclN1YmplY3Q8SURvdWJsZVRvdWNoZW5kRGF0YT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PElEb3VibGVUb3VjaGVuZERhdGE+KHsgcHJldmlvdXM6IC0yLCBjdXJyZW50OiAtMSB9KTtcclxuICBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG5cclxuICBzZWFyY2hPYmplY3QhOiBJU2VhcmNoSXRlbVtdO1xyXG5cclxuICBsYW5nITogc3RyaW5nO1xyXG5cclxuICBhY3RpdmVSb3chOiBhbnk7IC8vIG51bWJlciB8IHN0cmluZ1xyXG5cclxuICBtb3VzZURvd24gPSBmYWxzZTtcclxuICBzdGFydFg6IGFueTtcclxuICBlbmRYOiBhbnk7XHJcblxyXG4gIHNjcm9sbFN0cmVhbSQhOiBPYnNlcnZhYmxlPGFueT47XHJcblxyXG4gIC8qIEZPUiBMQVpZIFVJIExPQURJTkcgKi9cclxuICByZW5kZXJBaHJlYWQ6IG51bWJlciA9IDA7XHJcbiAgaGlkZGVuVG9wSGVpZ2h0OiBudW1iZXIgPSAwO1xyXG4gIGhpZGRlbkJvdHRvbUhlaWdodDogbnVtYmVyID0gMDtcclxuICBzY3JvbGxUb3A6IG51bWJlciA9IDA7XHJcbiAgb2Zmc2V0WTogbnVtYmVyID0gMDtcclxuICB2aXNpYmxlRGF0YSE6IGFueVtdO1xyXG4gIHN0YXJ0Tm9kZTogbnVtYmVyID0gMDtcclxuICAvKioqKioqKioqKioqKioqKioqKioqKiovXHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2NvcmVUYWJsZScpIGNvcmVUYWJsZSE6IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZCgndGFibGUnKSB0YWJsZSE6IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZCgnZmlyc3RIZWFkZXJSb3cnKSBmaXJzdEhlYWRlclJvdyE6IEVsZW1lbnRSZWY7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBsYXlvdXRTZXJ2aWNlOiBMYXlvdXRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjb3JlUGFnZUxpc3RTZXJ2aWNlOiBDb3JlUGFnZUxpc3RTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBtbHM6IE11bHRpTGFuZ3VhZ2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZSxcclxuICAgIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gIH1cclxuXHJcbiAgY2FsY3VsYXRlU2Nyb2xsKCk6IHZvaWQge1xyXG5cclxuICAgIHRyeSB7XHJcblxyXG4gICAgICBpZiAoISEhdGhpcy5jb3JlVGFibGUpIHJldHVybjtcclxuICAgICAgaWYgKCEhIXRoaXMubGF6eUxvYWRpbmcpIHJldHVybjtcclxuXHJcbiAgICAgIGNvbnN0IGhlaWdodCA9IE51bWJlcihnZXRDb21wdXRlZFN0eWxlKHRoaXMuY29yZVRhYmxlLm5hdGl2ZUVsZW1lbnQpLmdldFByb3BlcnR5VmFsdWUoJy0taGVpZ2h0JykucmVwbGFjZSgncHgnLCAnJykpO1xyXG4gICAgICBjb25zdCByb3dIZWlnaHQgPSBOdW1iZXIoZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLmNvcmVUYWJsZS5uYXRpdmVFbGVtZW50KS5nZXRQcm9wZXJ0eVZhbHVlKCctLXJvdy1oZWlnaHQnKS5zcGxpdCgncHgnKVswXSk7XHJcblxyXG4gICAgICBpZiAoISEhcm93SGVpZ2h0KSB0aHJvdyBuZXcgRXJyb3IoXCJDb3VsZCBub3QgZ2V0IC0tcm93LWhlaWdodCBwcm9wZXJ0eVwiKTtcclxuXHJcbiAgICAgIGxldCBzdGFydE5vZGUgPSBNYXRoLmZsb29yKHRoaXMuc2Nyb2xsVG9wIC8gcm93SGVpZ2h0KSAtIHRoaXMucmVuZGVyQWhyZWFkO1xyXG4gICAgICBzdGFydE5vZGUgPSBNYXRoLm1heCgwLCBzdGFydE5vZGUpO1xyXG4gICAgICB0aGlzLnN0YXJ0Tm9kZSA9IHN0YXJ0Tm9kZSB8fCAwO1xyXG4gICAgICBsZXQgdmlzaWJsZU5vZGVDb3VudCA9IE1hdGguY2VpbChoZWlnaHQgLyByb3dIZWlnaHQpICsgMiAqIHRoaXMucmVuZGVyQWhyZWFkO1xyXG4gICAgICB2aXNpYmxlTm9kZUNvdW50ID0gTWF0aC5taW4odGhpcy5kYXRhLmxlbmd0aCAtIHN0YXJ0Tm9kZSwgdmlzaWJsZU5vZGVDb3VudCk7XHJcbiAgICAgIHRoaXMub2Zmc2V0WSA9IHN0YXJ0Tm9kZSAqIHJvd0hlaWdodDtcclxuICAgICAgY29uc3QgbmV3VmlzaWJsZURhdGE6IGFueVtdID0gW107XHJcblxyXG4gICAgICB0aGlzLmhpZGRlblRvcEhlaWdodCA9IHN0YXJ0Tm9kZSAqIHJvd0hlaWdodDtcclxuICAgICAgdGhpcy5oaWRkZW5Cb3R0b21IZWlnaHQgPSAodGhpcy5kYXRhLmxlbmd0aCAtIHN0YXJ0Tm9kZSAtIHZpc2libGVOb2RlQ291bnQpICogcm93SGVpZ2h0O1xyXG4gICAgICBmb3IgKGxldCBpID0gc3RhcnROb2RlOyBpIDwgc3RhcnROb2RlICsgdmlzaWJsZU5vZGVDb3VudDsgaSsrKSB7XHJcbiAgICAgICAgbmV3VmlzaWJsZURhdGEucHVzaCh0aGlzLmRhdGFbaV0pXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMudmlzaWJsZURhdGEgPSBuZXdWaXNpYmxlRGF0YTtcclxuXHJcbiAgICAgIC8qIE9QRU4gQ09NTUVOVFMgVE8gU0VFIENPTlRST0wgVkFMVUVTICovXHJcbiAgICAgIGNvbnNvbGUubG9nKFwic3RhcnROb2RlXCIsIHN0YXJ0Tm9kZSlcclxuICAgICAgLypcclxuICAgICAgY29uc29sZS5sb2coXCJ0aGlzLm9mZnNldFlcIiwgdGhpcy5vZmZzZXRZKVxyXG4gICAgICBjb25zb2xlLmxvZyhcInRoaXMuaGlkZGVuVG9wSGVpZ2h0XCIsIHRoaXMuaGlkZGVuVG9wSGVpZ2h0KVxyXG4gICAgICBjb25zb2xlLmxvZyhcInRoaXMuaGlkZGVuQm90dG9tSGVpZ2h0XCIsIHRoaXMuaGlkZGVuQm90dG9tSGVpZ2h0KVxyXG4gICAgICBjb25zb2xlLmxvZyhcInRoaXMudmlzaWJsZURhdGEubGVuZ3RoXCIsIHRoaXMudmlzaWJsZURhdGEubGVuZ3RoKVxyXG4gICAgICBjb25zdCBjb250cm9sVmFsdWUgPSAodGhpcy5oaWRkZW5Ub3BIZWlnaHQgKyB0aGlzLmhpZGRlbkJvdHRvbUhlaWdodCArIHRoaXMudmlzaWJsZURhdGEubGVuZ3RoICogcm93SGVpZ2h0KSAvIHJvd0hlaWdodFxyXG4gICAgICBjb25zb2xlLmxvZyhcImNvbnRyb2xWYWx1ZVwiLCBjb250cm9sVmFsdWUpIC8vIE11c3QgZXF1ZWFsIHBhZ2VTaXplXHJcbiAgICAgICovXHJcbiAgICB9IGNhdGNoIChlcnJvcjogYW55KSB7XHJcbiAgICAgIGlmIChpc0Rldk1vZGUoKSAmJiB0aGlzLmF1dGhTZXJ2aWNlLmRhdGEkLnZhbHVlPy5pZCA9PT0gJzhjMjQ2ODNkLTdkNTItNGY1YS04MDkwLTMxYzc3N2U4ODY5ZCcpIHtcclxuICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5lcnJvcihlcnJvci5tZXNzYWdlLCBub25lQXV0b0Nsb3NlZEFsZXJ0T3B0aW9ucyk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMudmlzaWJsZURhdGEgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuZGF0YSkpO1xyXG5cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHN0YXJ0RHJhZ2dpbmcoZTogYW55LCBjb2w6IElDb3JlVGFibGVDb2x1bW5JdGVtLCBmbGFnOiBhbnkpIHtcclxuICAgIGlmIChlLmJ1dHRvbnMgPT09IDEpIHtcclxuICAgICAgdGhpcy5zdGFydFggPSBlLnBhZ2VYO1xyXG4gICAgICBpZiAoISEhdGhpcy5tb3VzZURvd24pIHtcclxuXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5tb3VzZURvd24gPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3RvcERyYWdnaW5nKGU6IGFueSwgY29sOiBJQ29yZVRhYmxlQ29sdW1uSXRlbSwgZmxhZzogYW55KSB7XHJcbiAgICBpZiAoISF0aGlzLm1vdXNlRG93bikge1xyXG4gICAgICB0aGlzLmVuZFggPSBlLnBhZ2VYO1xyXG4gICAgICBsZXQgb2Zmc2V0ID0gdGhpcy5lbmRYIC0gdGhpcy5zdGFydFg7XHJcbiAgICAgIGNvbC53aWR0aCEgKz0gb2Zmc2V0O1xyXG4gICAgICB0aGlzLm1vdXNlRG93biA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmVuZFggPSAwO1xyXG4gICAgICB0aGlzLnN0YXJ0WCA9IDA7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBtb3ZlRXZlbnQoZTogYW55LCBjb2w6IElDb3JlVGFibGVDb2x1bW5JdGVtKSB7XHJcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICBpZiAoIXRoaXMubW91c2VEb3duKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IHggPSBlLnBhZ2VYO1xyXG4gICAgY29uc29sZS5sb2coXCJtb3ZlRXZlbnRcIiwgZS5wYWdlWClcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG5cclxuICAgIGlmICh0aGlzLnNob3dDaGVja2JveCkge1xyXG4gICAgICBpZiAoIXRoaXMuY2hlY2tib3hTaXplKSB7XHJcbiAgICAgICAgdGhpcy5jaGVja2JveFNpemUgPSAxNTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmhlYWRlckZpcnN0Um93SGVpZ2h0ID09PSB1bmRlZmluZWQpIHRoaXMuaGVhZGVyRmlyc3RSb3dIZWlnaHQgPSA0MDtcclxuICAgIGlmICh0aGlzLmhlYWRlclNlY29uZFJvd0hlaWdodCA9PT0gdW5kZWZpbmVkKSB0aGlzLmhlYWRlclNlY29uZFJvd0hlaWdodCA9IDQwO1xyXG5cclxuXHJcbiAgICAvKiBWYWxpZGF0ZSBjb2x1bW5zIGlucHV0IHRvIG1ha2Ugc3VyZSBvbmUgb2YgZmllbGRzIGlzICdpZCcgKi9cclxuICAgIGlmICghISF0aGlzLmNvbHVtbnMpIHtcclxuICAgICAgdGhpcy5hbGVydFNlcnZpY2UuZXJyb3IodGhpcy5pZCArIFwiOiBDb2x1bW5zIGFyZSBub3QgZGVmaW5lZC5cIiwgbm9uZUF1dG9DbG9zZWRBbGVydE9wdGlvbnMpXHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuY29sdW1ucz8uZmlsdGVyKChjOiBJQ29yZVRhYmxlQ29sdW1uSXRlbSkgPT4gYy5maWVsZCA9PT0gJ2lkJykubGVuZ3RoID09PSAwICYmIGlzRGV2TW9kZSgpICYmIHRoaXMuY29sdW1ucy5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5hbGVydFNlcnZpY2UuZXJyb3IodGhpcy5pZCArIFwiOiBUaGUgY29sdW1ucyBtdXN0IGhhdmUgb25lIHdpdGggJ2ZpZWxkJyBwcm9wZXJ0eSA9PT0gJ2lkJ1wiLCBub25lQXV0b0Nsb3NlZEFsZXJ0T3B0aW9ucylcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnZpc2libGVDb2x1bW5zID0gdGhpcy5jb2x1bW5zPy5maWx0ZXIoKGM6IElDb3JlVGFibGVDb2x1bW5JdGVtKSA9PiAhISFjLmhpZGRlbilcclxuICAgIGlmICghISF0aGlzLnZpc2libGVDb2x1bW5zPy5sZW5ndGggJiYgaXNEZXZNb2RlKCkgJiYgdGhpcy5jb2x1bW5zPy5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5hbGVydFNlcnZpY2UuZXJyb3IodGhpcy5pZCArIFwiOiBObyB2aXNpYmxlIGNvbHVtbiBkZWZpbmVkLlwiLCBub25lQXV0b0Nsb3NlZEFsZXJ0T3B0aW9ucylcclxuICAgIH1cclxuXHJcbiAgICAvLyBhZGQgZGVmYXVsdCBzb3J0IGRpcmVjdGlvbiB0byB2aXNpYmxlQ29sdW1uc1xyXG4gICAgdGhpcy52aXNpYmxlQ29sdW1ucz8ubWFwKGMgPT4gYy5zb3J0RGlyZWN0aW9uID0gRW51bVNvcnREaXJlY3Rpb24uTk9ORSlcclxuXHJcbiAgICAvKiBTVEFSVDogSW5pdGlhbGl6aW5nIHNlYXJjaE9iamVjdCAqL1xyXG4gICAgY29uc3QgbmV3U2VhcmNoT2JqZWN0OiBJU2VhcmNoSXRlbVtdID0gW107XHJcbiAgICB0aGlzLnZpc2libGVDb2x1bW5zPy5tYXAoYyA9PiB7XHJcbiAgICAgIG5ld1NlYXJjaE9iamVjdC5wdXNoKHtcclxuICAgICAgICBmaWVsZDogYy5maWVsZCxcclxuICAgICAgICBzZWFyY2hGb3I6ICcnXHJcbiAgICAgIH0pXHJcbiAgICB9KVxyXG4gICAgdGhpcy5zZWFyY2hPYmplY3QgPSBuZXdTZWFyY2hPYmplY3Q7XHJcbiAgICAvKiBFTkQ6IEluaXRpYWxpemluZyBzZWFyY2hPYmplY3QgKi9cclxuXHJcbiAgICBjb25zdCBmcm96ZW5Db2x1bW5zID0gdGhpcy52aXNpYmxlQ29sdW1ucz8uZmlsdGVyKChfLCBpbmRleCkgPT4gaW5kZXggPCB0aGlzLmZyb3plbik7XHJcblxyXG4gICAgbGV0IGxlZnQgPSB0aGlzLmNoZWNrYm94U2l6ZSEgKiAyIHx8IDA7IC8vIHRoZSBmaXJzdCBzaXplIGlzIGZvciBjaGVja2JveFxyXG4gICAgZnJvemVuQ29sdW1ucz8ubWFwKGMgPT4ge1xyXG4gICAgICBpZiAoISEhYy53aWR0aCkgY29uc29sZS5lcnJvcih0aGlzLmlkICsgXCI6IEVhY2ggZnJvemVuIGNvbHVtbiBtdXN0IGhhdmUgaXRzIG51bWJlciBwcm9wZXJ0eSAnd2lkdGgnLlwiKTtcclxuICAgICAgdGhpcy5mcm96ZW5MZWZ0cy5wdXNoKGxlZnQpO1xyXG4gICAgICBsZWZ0ID0gbGVmdCArIGMud2lkdGghXHJcbiAgICB9KVxyXG5cclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICB0aGlzLnJvd1RvdWNoZW5kU3RyZWFtJC5waXBlKFxyXG4gICAgICAgIGZpbHRlcigoeDogYW55KSA9PiB4LmN1cnJlbnQgPT09IHgucHJldmlvdXMpLFxyXG4gICAgICAgIGRlYm91bmNlVGltZSgyMDApLFxyXG4gICAgICApLnN1YnNjcmliZSgoeTogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5vblJvd0RvdWJsZUNsaWNrLmVtaXQoe1xyXG4gICAgICAgICAgaWQ6IHRoaXMuZGF0YVt5LmN1cnJlbnRdLmlkXHJcbiAgICAgICAgfSlcclxuICAgICAgfSlcclxuICAgIClcclxuXHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgdGhpcy5tbHMubGFuZyQuc3Vic2NyaWJlKHggPT4gdGhpcy5sYW5nID0geClcclxuICAgIClcclxuXHJcbiAgICAvKiBDaGVjayBpZiBhbnkgb2YgY29sdW1ucyBpcyB0ZW1wbGF0ZVJlZiAqL1xyXG4gICAgY29uc3QgdGVtcGxhdGVSZWZGaWx0ZXIgPSB0aGlzLmNvbHVtbnM/LmZpbHRlcih4ID0+ICEheC50ZW1wbGF0ZVJlZilcclxuICAgIGlmICghIXRlbXBsYXRlUmVmRmlsdGVyPy5sZW5ndGgpIHtcclxuICAgICAgdGVtcGxhdGVSZWZGaWx0ZXIubWFwKHggPT4ge1xyXG4gICAgICAgIGlmICh4LnRlbXBsYXRlUmVmPy5lbGVtZW50UmVmPy5uYXRpdmVFbGVtZW50Py5oZWlnaHQgPiBOdW1iZXIodGhpcy5yb3dIZWlnaHQucmVwbGFjZSgncHgnLCAnJykpKSB7XHJcbiAgICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5lcnJvcihgQ2hp4buBdSBjYW8gY+G7p2EgJHt0aGlzLm1scy50cmFucyh4LmNhcHRpb24pfSB0ZW1wbGF0ZVJlZiBsw6AgJHt4LnRlbXBsYXRlUmVmPy5lbGVtZW50UmVmPy5uYXRpdmVFbGVtZW50Py5oZWlnaHR9LCBs4bubbiBoxqFuIGNoaeG7gXUgY2FvIGPhu6dhIGTDsm5nIGzGsOG7m2kgJHt0aGlzLnJvd0hlaWdodH1gLCBub25lQXV0b0Nsb3NlZEFsZXJ0T3B0aW9ucylcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG5cclxuICAgIGlmIChjaGFuZ2VzWydjaGVja2luZ1Jlc2V0RmxhZyddKSB7XHJcbiAgICAgIGlmICghIXRoaXMuZGF0YSkge1xyXG4gICAgICAgIHRoaXMudG9nZ2xlQ2hlY2tBbGwoZmFsc2UpXHJcbiAgICAgICAgdGhpcy5oZWFkZXJDaGVja2JveFN0YXRlID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAoY2hhbmdlc1snZGF0YSddKSB7XHJcblxyXG4gICAgICAvLyBDaGVjayB1bmlxdWUgb2YgXCJpZFwiXHJcbiAgICAgIGlmIChpc0Rldk1vZGUoKSkge1xyXG4gICAgICAgIGlmIChjaGFuZ2VzWydkYXRhJ10uY3VycmVudFZhbHVlPy5sZW5ndGgpIHtcclxuICAgICAgICAgIGNvbnN0IGFyciA9IGNoYW5nZXNbJ2RhdGEnXS5jdXJyZW50VmFsdWVcclxuICAgICAgICAgIGxldCBmaW5kRHVwbGljYXRlcyA9IGFyciA9PiBhcnIuZmlsdGVyKGl0ZW0gPT4gYXJyLmZpbHRlcih4ID0+IHguaWQgPT09IGl0ZW0uaWQpLmxlbmd0aCA+IDEpXHJcbiAgICAgICAgICBpZiAoISFmaW5kRHVwbGljYXRlcyhhcnIpLmxlbmd0aCkge1xyXG4gICAgICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5lcnJvcihcIkNvcmVUYWJsZSByZXF1aXJlcyB1bmlxdWUgaWQgdmFsdWVzIVwiLCBub25lQXV0b0Nsb3NlZEFsZXJ0T3B0aW9ucylcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IG5ld0NoZWNraW5nTW9kZWw6IGJvb2xlYW5bXSA9IFtdO1xyXG4gICAgICBjaGFuZ2VzWydkYXRhJ10uY3VycmVudFZhbHVlPy5tYXAoKF86IGFueSkgPT4ge1xyXG4gICAgICAgIG5ld0NoZWNraW5nTW9kZWwucHVzaChmYWxzZSlcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMuY2hlY2tpbmdNb2RlbCA9IG5ld0NoZWNraW5nTW9kZWw7XHJcblxyXG4gICAgICBpZiAoISF0aGlzLmxhenlMb2FkaW5nKSB7XHJcbiAgICAgICAgaWYgKCEhdGhpcy5jb3JlVGFibGUpIHtcclxuICAgICAgICAgIHRoaXMuY2FsY3VsYXRlU2Nyb2xsKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMudmlzaWJsZURhdGEgPSBjaGFuZ2VzWydkYXRhJ10uY3VycmVudFZhbHVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGNoYW5nZXNbJ2NoZWNrZWRJZHMnXSkge1xyXG4gICAgICBjb25zdCBuZXdDaGVja2luZ01vZGVsOiBib29sZWFuW10gPSBbXTtcclxuICAgICAgY2hhbmdlc1snY2hlY2tlZElkcyddLmN1cnJlbnRWYWx1ZT8ubWFwKChjaGVja2VkSWQ6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuZGF0YS5tYXAoKGl0ZW0pID0+IHtcclxuICAgICAgICAgIGlmIChpdGVtWydpZCddID09PSBjaGVja2VkSWQpIHtcclxuICAgICAgICAgICAgbmV3Q2hlY2tpbmdNb2RlbC5wdXNoKHRydWUpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgbmV3Q2hlY2tpbmdNb2RlbC5wdXNoKGZhbHNlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICB9KVxyXG4gICAgICB0aGlzLmNoZWNraW5nTW9kZWwgPSBuZXdDaGVja2luZ01vZGVsO1xyXG4gICAgfVxyXG4gICAgLy8gaWYgKGNoYW5nZXNbJ2xvYWRpbmcnXSkge1xyXG4gICAgLy8gICB0aGlzLmxvYWRpbmcgPSBjaGFuZ2VzWydsb2FkaW5nJ10uY3VycmVudFZhbHVlO1xyXG4gICAgLy8gfVxyXG4gICAgaWYgKGNoYW5nZXNbJ2NvbHVtbnMnXSkge1xyXG4gICAgICB0aGlzLnZpc2libGVDb2x1bW5zID0gdGhpcy5jb2x1bW5zPy5maWx0ZXIoKGM6IElDb3JlVGFibGVDb2x1bW5JdGVtKSA9PiAhISFjLmhpZGRlbikgfHwgW11cclxuICAgIH1cclxuICAgIGlmIChjaGFuZ2VzWydjb2x1bW5TZWFyY2hEZWZhdWx0T3BlbiddKSB7XHJcbiAgICAgIHRoaXMuc2VhcmNoQWN0aXZlID0gISFjaGFuZ2VzWydjb2x1bW5TZWFyY2hEZWZhdWx0T3BlbiddLmN1cnJlbnRWYWx1ZVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZXNldEhlYWRlckZpcnN0Um93SGVpZ2h0KCk6IHZvaWQge1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGNvbnN0IGZpcnN0SGVhZGVyUm93SGVpZ2h0ID0gdGhpcy5maXJzdEhlYWRlclJvdy5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodDtcclxuICAgICAgdGhpcy5jb3JlVGFibGUubmF0aXZlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1oZWFkZXItMXN0LXJvdy1oZWlnaHQnLFxyXG4gICAgICBmaXJzdEhlYWRlclJvd0hlaWdodCArICdweCdcclxuICAgICAgKTtcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcblxyXG4gICAgaWYgKHRoaXMuY29yZVBhZ2VMaXN0SW5zdGFuY2VOdW1iZXIpIHtcclxuICAgICAgY29uc3QgY2FsbGVyRmlsdGVyID0gdGhpcy5jb3JlUGFnZUxpc3RTZXJ2aWNlLmluc3RhbmNlcy5maWx0ZXIoeCA9PiB4Lmluc3RhbmNlTnVtYmVyID09PSB0aGlzLmNvcmVQYWdlTGlzdEluc3RhbmNlTnVtYmVyKTtcclxuICAgICAgaWYgKCEhY2FsbGVyRmlsdGVyLmxlbmd0aCkge1xyXG4gICAgICAgIGNvbnN0IGNhbGxlciA9IGNhbGxlckZpbHRlclswXTtcclxuICAgICAgICBjYWxsZXIuY29yZVRhYmxlUmVmID0gdGhpcy5jb3JlVGFibGU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICghISF0aGlzLmZyZWVNb2RlKSB7XHJcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgICAgICB0aGlzLmNvcmVQYWdlTGlzdFNlcnZpY2UuaW5zdGFuY2VzLmZpbHRlcih4ID0+IHguaW5zdGFuY2VOdW1iZXIgPT09IHRoaXMuY29yZVBhZ2VMaXN0SW5zdGFuY2VOdW1iZXIpWzBdLmlkJC5zdWJzY3JpYmUoeCA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlUm93ID0geDtcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgKVxyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgICB0aGlzLmNvcmVQYWdlTGlzdFNlcnZpY2UuaW5zdGFuY2VzLmZpbHRlcih4ID0+IHguaW5zdGFuY2VOdW1iZXIgPT09IHRoaXMuY29yZVBhZ2VMaXN0SW5zdGFuY2VOdW1iZXIpWzBdLnRib2R5SGVpZ2h0JC5zdWJzY3JpYmUoeCA9PiB7XHJcbiAgICAgICAgICBpZiAoISF4KSB7XHJcbiAgICAgICAgICAgIHRoaXMudGJvZHloZWlnaHQgPSB4O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgIClcclxuXHJcbiAgICAgIGNvbnN0IHJlY3QgPSB0aGlzLmNvcmVUYWJsZS5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gICAgICB0aGlzLmNvcmVUYWJsZS5uYXRpdmVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLXRhYmxlLXdpZHRoJywgcmVjdC53aWR0aCArICdweCcpXHJcblxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc2Nyb2xsU3RyZWFtJCA9IGZyb21FdmVudCh0aGlzLnRhYmxlLm5hdGl2ZUVsZW1lbnQsICdzY3JvbGwnKTtcclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuXHJcbiAgICAgIGlmICghIXRoaXMud2lkdGgpIHRoaXMuY29yZVRhYmxlLm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0td2lkdGgnLCB0aGlzLndpZHRoICsgJ3B4Jyk7XHJcbiAgICAgIGlmICghIXRoaXMucm93SGVpZ2h0KSB0aGlzLmNvcmVUYWJsZS5uYXRpdmVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLXJvdy1oZWlnaHQnLCB0aGlzLnJvd0hlaWdodCArICdweCcpO1xyXG4gICAgICBpZiAoISF0aGlzLmhlaWdodCkgdGhpcy5jb3JlVGFibGUubmF0aXZlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1oZWlnaHQnLCB0aGlzLmhlaWdodCArICdweCcpO1xyXG5cclxuICAgICAgLy8gQ2jhu4kgc3Vic2NyaWRlIHNhdSBraGkgY8OhYyBs4buHbmggdHLDqm4gxJHDoyDEkcaw4bujYyB0aOG7sWMgaGnhu4duXHJcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICAgIHRoaXMuc2Nyb2xsU3RyZWFtJFxyXG4gICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgIGRlYm91bmNlVGltZSg1MClcclxuICAgICAgICAgIClcclxuICAgICAgICAgIC5zdWJzY3JpYmUoZXZlbnQgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnNjcm9sbFRvcCA9IGV2ZW50LnNyY0VsZW1lbnQuc2Nyb2xsVG9wO1xyXG4gICAgICAgICAgICB0aGlzLmNhbGN1bGF0ZVNjcm9sbCgpO1xyXG4gICAgICAgICAgfSlcclxuICAgICAgKVxyXG5cclxuICAgIH0sIDApXHJcblxyXG4gICAgdGhpcy5yZXNldEhlYWRlckZpcnN0Um93SGVpZ2h0KCk7XHJcblxyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgIHRoaXMubWxzLmxhbmckLnN1YnNjcmliZShfID0+IHtcclxuICAgICAgICB0aGlzLnJlc2V0SGVhZGVyRmlyc3RSb3dIZWlnaHQoKTtcclxuICAgICAgfSlcclxuICAgIClcclxuXHJcbiAgfVxyXG5cclxuICBvblRvb2xDbGlja0xvY2FsKHJvdzogYW55LCB0b29sSW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgdGhpcy5vblRvb2xDbGljay5lbWl0KHtcclxuICAgICAgY29kZTogdGhpcy50b29sc1t0b29sSW5kZXhdLmNvZGUsXHJcbiAgICAgIGlkOiByb3dbJ2lkJ11cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICB0b2dnbGVDaGVja0FsbChhcmdzOiBib29sZWFuKSB7XHJcbiAgICBjb25zdCBuZXdDaGVja2luZ01vZGVsOiBib29sZWFuW10gPSBbXTtcclxuICAgIGNvbnN0IG5ld1NlbGVjdGVkSWRzOiBhbnlbXSA9IFtdO1xyXG4gICAgY29uc3QgbmV3U2VsZWN0ZWREYXRhOiBhbnlbXSA9IFtdO1xyXG5cclxuICAgIHRoaXMuZGF0YS5tYXAoaXRlbSA9PiB7XHJcbiAgICAgIG5ld0NoZWNraW5nTW9kZWwucHVzaChhcmdzKTtcclxuICAgICAgaWYgKGFyZ3MpIHtcclxuICAgICAgICBuZXdTZWxlY3RlZElkcy5wdXNoKGl0ZW0uaWQpO1xyXG4gICAgICAgIG5ld1NlbGVjdGVkRGF0YS5wdXNoKGl0ZW0pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmNoZWNraW5nTW9kZWwgPSBuZXdDaGVja2luZ01vZGVsO1xyXG4gICAgdGhpcy5jaGVja2luZ1N0YXRlID0gYXJncyA/IDEgOiAwO1xyXG4gICAgdGhpcy5vblNlbGVjdGVkSWRzQ2hhbmdlLmVtaXQobmV3U2VsZWN0ZWRJZHMpO1xyXG4gICAgdGhpcy5vblNlbGVjdGVkRGF0YUNoYW5nZS5lbWl0KG5ld1NlbGVjdGVkRGF0YSk7XHJcbiAgfVxyXG5cclxuICBvbkNoZWNraW5nTmdNb2RlbENoYW5nZSgpIHtcclxuICAgIGNvbnN0IG5ld1NlbGVjdGVkSWRzOiBudW1iZXJbXSA9IFtdO1xyXG4gICAgY29uc3QgbmV3U2VsZWN0ZWREYXRhOiBhbnlbXSA9IFtdO1xyXG4gICAgdGhpcy5kYXRhLmZpbHRlcigoXzogYW55LCBpbmRleDogbnVtYmVyKSA9PiAhIXRoaXMuY2hlY2tpbmdNb2RlbFtpbmRleF0pLm1hcChpdGVtID0+IHtcclxuICAgICAgbmV3U2VsZWN0ZWRJZHMucHVzaChpdGVtLmlkKVxyXG4gICAgICBuZXdTZWxlY3RlZERhdGEucHVzaChpdGVtKVxyXG4gICAgfSlcclxuICAgIHRoaXMub25TZWxlY3RlZElkc0NoYW5nZS5lbWl0KG5ld1NlbGVjdGVkSWRzKTtcclxuICAgIHRoaXMub25TZWxlY3RlZERhdGFDaGFuZ2UuZW1pdChuZXdTZWxlY3RlZERhdGEpO1xyXG5cclxuICAgIGlmIChuZXdTZWxlY3RlZElkcy5sZW5ndGggPT09IDApIHtcclxuICAgICAgdGhpcy5jaGVja2luZ1N0YXRlID0gMDsgLy8gbm9uZVxyXG4gICAgfSBlbHNlIGlmIChuZXdTZWxlY3RlZElkcy5sZW5ndGggPT09IHRoaXMuY2hlY2tpbmdNb2RlbC5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5jaGVja2luZ1N0YXRlID0gMTsgLy8gYWxsXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmNoZWNraW5nU3RhdGUgPSAyOyAvLyBtaXhlZFxyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIG9uRG91YmxlQ2xpY2tMb2NhbChyb3dJbmRleDogbnVtYmVyKSB7XHJcbiAgICB0aGlzLm9uUm93RG91YmxlQ2xpY2suZW1pdCh0aGlzLmRhdGFbcm93SW5kZXhdKVxyXG4gIH1cclxuXHJcbiAgb25DbGlja0xvY2FsKHJvdzogYW55LCBldmVudDogYW55KSB7XHJcblxyXG4gICAgY29uc29sZS5sb2coXCJvbkNsaWNrTG9jYWwgcm93XCIsIHJvdywgXCJldmVudFwiLCBldmVudClcclxuXHJcbiAgICBpZiAoZXZlbnQuZGV0YWlsID09PSAxKSB7XHJcbiAgICAgIHRoaXMuYWN0aXZlUm93ID0gcm93LmlkO1xyXG4gICAgICB0aGlzLm9uUm93Q2xpY2suZW1pdChyb3cpO1xyXG4gICAgfSBlbHNlIGlmIChldmVudC5kZXRhaWwgPT09IDIpIHtcclxuICAgICAgdGhpcy5vblJvd0RvdWJsZUNsaWNrLmVtaXQocm93KVxyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIG9uUm93VG91Y2hlbmQocm93SW5kZXg6IG51bWJlcikge1xyXG4gICAgdGhpcy5yb3dUb3VjaGVuZFN0cmVhbSQubmV4dCh7XHJcbiAgICAgIHByZXZpb3VzOiB0aGlzLnJvd1RvdWNoZW5kU3RyZWFtJC52YWx1ZS5jdXJyZW50LFxyXG4gICAgICBjdXJyZW50OiByb3dJbmRleFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvblNlYXJjaChlOiBzdHJpbmcsIHNlYXJjaENvbHVtbkluZGV4OiBudW1iZXIpOiB2b2lkIHtcclxuICAgIHRoaXMuc2VhcmNoT2JqZWN0LmZpbHRlcigoXywgaSkgPT4gaSA9PT0gc2VhcmNoQ29sdW1uSW5kZXgpWzBdLnNlYXJjaEZvciA9IGU7XHJcbiAgICB0aGlzLm9uU2VhcmNoaW5nLmVtaXQodGhpcy5zZWFyY2hPYmplY3QpO1xyXG4gIH1cclxuXHJcbiAgb25Db2x1bW5DYXB0aW9uQ2xpY2tMb2NhbChjb2x1bW46IElDb3JlVGFibGVDb2x1bW5JdGVtKSB7XHJcblxyXG4gICAgaWYgKCEhdGhpcy5kaXNhYmxlU29ydGluZyB8fCAhIWNvbHVtbi50ZW1wbGF0ZVJlZikgcmV0dXJuOyAvLyBubyBhY3Rpb24gZm9yIHRlbXBsYXRlUmVmIHR5cGVcclxuXHJcbiAgICB0aGlzLm9uQ29sdW1uQ2FwdGlvbkNsaWNrLmVtaXQoY29sdW1uKTtcclxuXHJcbiAgICAvLyB1cGRhdGUgc29ydCBkaWNyZWN0aW9uIHByb3BlcnR5IG9mIHRoaXMgY29sdW1uXHJcbiAgICAvLyBhbmQgY2xlYXIgdXAgdGhlIHByb3BlcnR5IGZvciB0aGUgb3RoZXIgdmlzaWJsZUNvbHVtbnNcclxuICAgIHRoaXMudmlzaWJsZUNvbHVtbnMubWFwKHZjID0+IHtcclxuICAgICAgaWYgKHZjLmZpZWxkID09PSBjb2x1bW4uZmllbGQpIHtcclxuICAgICAgICB2Yy5zb3J0RGlyZWN0aW9uID0gdmMuc29ydERpcmVjdGlvbiA9PT0gRW51bVNvcnREaXJlY3Rpb24uTk9ORSA/IEVudW1Tb3J0RGlyZWN0aW9uLkFTQyA6IHZjLnNvcnREaXJlY3Rpb24gPT09IEVudW1Tb3J0RGlyZWN0aW9uLkFTQyA/IEVudW1Tb3J0RGlyZWN0aW9uLkRFU0MgOiBFbnVtU29ydERpcmVjdGlvbi5OT05FO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHZjLnNvcnREaXJlY3Rpb24gPSBFbnVtU29ydERpcmVjdGlvbi5OT05FXHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICB0b2dnbGVBbGxvd1NlYXJjaCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc2VhcmNoQWN0aXZlID0gISEhdGhpcy5zZWFyY2hBY3RpdmVcclxuICB9XHJcblxyXG4gIG9uSW5saW5lVG9vbENsaWNrKGU6IElDb3JlQnV0dG9uVk5TLCByb3c6IGFueSk6IHZvaWQge1xyXG4gICAgY29uc29sZS5sb2coXCJvbklubGluZVRvb2xDbGlja1wiLCBlLCByb3cpXHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5tYXAoeCA9PiB4Py51bnN1YnNjcmliZSgpKTtcclxuICB9XHJcblxyXG59XHJcbiIsIjxkaXYgI2NvcmVUYWJsZSBjbGFzcz1cImNvcmUtdGFibGUtY29udGFpbmVyXCIgW2NsYXNzLmhpZGUtc2VhcmNoXT1cIiEhIXNlYXJjaEFjdGl2ZVwiPlxyXG5cclxuICAgIEBpZiAoIXNlYXJjaFN3aXRjaERpc2FibGVkKSB7XHJcbiAgICA8ZGl2IGNsYXNzPVwic2VhcmNoLXRvZ2dsZXIgZC1mbGV4LWNlbnRlciBwb2ludGVyXCIgKGNsaWNrKT1cInRvZ2dsZUFsbG93U2VhcmNoKClcIj5cclxuICAgICAgICA8aSBjbGFzcz1cImZlYXRoZXItc2VhcmNoXCI+PC9pPlxyXG4gICAgPC9kaXY+XHJcbiAgICB9XHJcblxyXG4gICAgPCEtLSBcclxuICAgICAgICBD4bqnbiB0cnV54buBbiBjaMOtbmggeMOhYyBoZWlnaHQgY+G7p2EgQ29yZVRhYmxlXHJcbiAgICAgICAgVHV5IG5oacOqbiBjaGnhu4F1IGNhbyBj4bunYSBDb3JlVGFibGUgY+G6p24gxJHGsOG7o2MgdMOtbmggZOG7sWEgdsOgbyBjaGnhu4F1IGNhbyBj4bunYSBjw6FjIHBo4bqnbiB04butIERPTSBs4bqnbiBsxrDhu6N0IHThu6sgbOG7m3Agbmdvw6BpIHbDoG8gbOG7m3AgdHJvbmdcclxuICAgICAgICBBbmggZW0gY2jGsGEgdMOtbmgga2hpIHRyaeG7g24ga2hhaSBjb2RlLCBuw6puIMSRYW5nIGPhuqduIGPDsyBjb24gc+G7kSBkZWZhdWx0IGzDoCA0MDBweFxyXG4gICAgLS0+XHJcbiAgICA8dGFibGUgW2NsYXNzLndyYXBdPVwiISF3cmFwXCIgI3RhYmxlIFtuZ1N0eWxlXT1cInsgaGVpZ2h0OiAoaGVpZ2h0IHx8IDQwMCkgKyAncHgnIH1cIj5cclxuICAgICAgICA8Y29sZ3JvdXA+XHJcbiAgICAgICAgICAgIEBpZiAoc2hvd0NoZWNrYm94KSB7XHJcbiAgICAgICAgICAgIDxjb2w+IH1cclxuICAgICAgICAgICAgQGZvciAoY29sIG9mIHZpc2libGVDb2x1bW5zOyB0cmFjayBjb2wpIHtcclxuICAgICAgICAgICAgPGNvbD4gfVxyXG4gICAgICAgICAgICBAaWYgKHNob3dUb29scykge1xyXG4gICAgICAgICAgICA8Y29sPiB9XHJcbiAgICAgICAgPC9jb2xncm91cD5cclxuICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgIDx0ciAjZmlyc3RIZWFkZXJSb3cgZGF0YS1yb3c9XCIxXCIgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiBoZWFkZXJGaXJzdFJvd0hlaWdodCArICdweCdcclxuICAgICAgICAgICAgfVwiPlxyXG4gICAgICAgICAgICAgICAgQGlmIChzaG93Q2hlY2tib3gpIHtcclxuICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cImNoZWNrLWNvbC1oZWFkZXIgY2hlY2stY2VsbCBmcm96ZW4tY29sXCIgc3R5bGU9XCJsZWZ0OiAwcHhcIlxyXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLnJvd3NwYW5dPVwic2VhcmNoQWN0aXZlID8gMiA6IDFcIiBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogJyM2NjY2NjYnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogJ3doaXRlJ1xyXG4gICAgICAgICAgICAgICAgICAgIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIHBsZWFzZSBkbyBub3QgY2hhbmdlIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGNoZWNrYm94U2l6ZSAqIDIgKyAncHgnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY2hlY2t3cmFwXCIgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogc2VhcmNoQWN0aXZlID8gaGVhZGVyRmlyc3RSb3dIZWlnaHQgKyBoZWFkZXJTZWNvbmRSb3dIZWlnaHQgKyAncHgnIDogaGVhZGVyRmlyc3RSb3dIZWlnaHQgKyAncHgnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgW2lkXT1cIidjaGVjay1jb2wtaGVhZGVyJyArIGlkXCIgWyhuZ01vZGVsKV09XCJoZWFkZXJDaGVja2JveFN0YXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJ0b2dnbGVDaGVja0FsbCgkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZWNrbWFya1wiIFtjbGFzcy5taXhlZF09XCJjaGVja2luZ1N0YXRlPT09MlwiIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wOiAoKGhlYWRlckZpcnN0Um93SGVpZ2h0ICsgaGVhZGVyU2Vjb25kUm93SGVpZ2h0ICogKHNlYXJjaEFjdGl2ZSA/IDEgOiAwKSkgLzIgLSBjaGVja2JveFNpemUvMikgKyAncHgnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBAZm9yIChjb2wgb2YgdmlzaWJsZUNvbHVtbnM7IHRyYWNrIGNvbCkge1xyXG4gICAgICAgICAgICAgICAgPHRoIFtjbGFzcy5mcm96ZW4tY29sXT1cIiRpbmRleCA8IGZyb3plblwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlXT1cIiRpbmRleCA8IGZyb3plbiA/ICdsZWZ0OiAnICsgZnJvemVuTGVmdHNbJGluZGV4XSArICdweCcgOiAnJ1wiIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogJyM2NjY2NjYnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6ICd3aGl0ZScsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAhIW5vUGFkZGluZ0NlbGwgPyAnMHB4IDBweCcgOiAnMHB4IDEycHgnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIC0xcHggZm9yIGJvcmRlckJvdHRvbSBvZiBoZWFkZXIgZmlyc3Qgcm93IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2x1bW4tY2FwdGlvblwiIFtjbGFzcy5hc2NlbmRpbmddPVwiY29sLnNvcnREaXJlY3Rpb249PT0tMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5kZXNjZW5kaW5nXT1cImNvbC5zb3J0RGlyZWN0aW9uPT09MVwiIChjbGljayk9XCJvbkNvbHVtbkNhcHRpb25DbGlja0xvY2FsKGNvbClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJjb2wuY2FwdGlvbiB8IHRyYW5zbGF0ZSA6IGxhbmdcIiBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGNvbC53aWR0aCArICdweCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAoaGVhZGVyRmlyc3RSb3dIZWlnaHQgLSAxKSArICdweCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaXRlU3BhY2U6ICEhaGVhZGVyV3JhcCA/ICdpbml0aWFsJyA6ICdpbmhlcml0JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0QWxpZ246ICdjZW50ZXInXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCI+e3sgY29sLmNhcHRpb24gfCB0cmFuc2xhdGUgOiBsYW5nIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlc2l6ZXJcIiAobW91c2Vkb3duKT1cInN0YXJ0RHJhZ2dpbmcoJGV2ZW50LCBjb2wsIGZhbHNlKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChtb3VzZXVwKT1cInN0b3BEcmFnZ2luZygkZXZlbnQsIGNvbCwgZmFsc2UpXCIgKG1vdXNlbW92ZSk9XCJtb3ZlRXZlbnQoJGV2ZW50LCBjb2wpXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgQGlmIChzaG93VG9vbHMgJiYgdmlzaWJsZUNvbHVtbnM/Lmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiY2hlY2stY29sLWhlYWRlciBjaGVjay1jZWxsXCIgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICcjNjY2NjY2JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6ICd3aGl0ZSdcclxuICAgICAgICAgICAgICAgICAgICB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT1cIndpZHRoOiAxMDBweDtcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgIEBpZiAoc2VhcmNoQWN0aXZlKSB7XHJcbiAgICAgICAgICAgIDx0ciBkYXRhLXJvdz1cIjJcIiBbY2xhc3MuaGlkZW5dPVwiISEhc2VhcmNoQWN0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICBAZm9yIChjb2wgb2YgdmlzaWJsZUNvbHVtbnM7IHRyYWNrIGNvbCkge1xyXG4gICAgICAgICAgICAgICAgPHRoIFtjbGFzcy5mcm96ZW4tY29sXT1cIiRpbmRleCA8IGZyb3plblwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlXT1cIiRpbmRleCA8IGZyb3plbiA/ICdsZWZ0OiAnICsgZnJvemVuTGVmdHNbJGluZGV4XSArICdweCcgOiAnJ1wiIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICcjNjY2NjY2JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogJ3doaXRlJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIEBpZiAoIWNvbC5oaWRlU2VhcmNoQm94KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBbc3R5bGVdPVwiJ3dpZHRoOiAnICsgY29sLndpZHRoICsgJ3B4OydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgc2VhcmNoXCIgWyhuZ01vZGVsKV09XCJzZWFyY2hPYmplY3RbJGluZGV4XS5zZWFyY2hGb3JcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25TZWFyY2goJGV2ZW50LCAkaW5kZXgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIDx0aCBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogJyM2NjY2NjYnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogJ3doaXRlJ1xyXG4gICAgICAgICAgICAgICAgICAgIH1cIj48L3RoPlxyXG4gICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgPC90aGVhZD5cclxuXHJcbiAgICAgICAgPHRib2R5IFtjbGFzcy5sb2FkaW5nXT1cImxvYWRpbmdcIj5cclxuICAgICAgICAgICAgPGNvcmUtbG9hZGluZy1zdXJmYWNlIFtsb2FkaW5nXT1cImxvYWRpbmdcIiBbaGVpZ2h0XT1cInRib2R5aGVpZ2h0IHx8IDUwMFwiPjwvY29yZS1sb2FkaW5nLXN1cmZhY2U+XHJcblxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgQGlmICghIWxhenlMb2FkaW5nKSB7XHJcbiAgICAgICAgICAgICAgICA8dHIgW25nU3R5bGVdPVwieyBoZWlnaHQ6IGhpZGRlblRvcEhlaWdodCArICdweCcgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbbmdTdHlsZV09XCJ7IGhlaWdodDogaGlkZGVuVG9wSGVpZ2h0ICsgJ3B4JyB9XCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgQGZvciAocm93IG9mIHZpc2libGVEYXRhOyB0cmFjayByb3cpIHtcclxuICAgICAgICAgICAgICAgIDx0ciAoY2xpY2spPVwib25DbGlja0xvY2FsKHJvdywgJGV2ZW50KVwiICh0b3VjaGVuZCk9XCJvblJvd1RvdWNoZW5kKCRpbmRleCtzdGFydE5vZGUpXCJcclxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cInJvdy5pZCA9PT0gYWN0aXZlUm93ICYmICEhIWRpc2FibGVIaWdobGlnaHRPbkNsaWNrXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cInJvdy1pdGVtLXRvb2xzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctaXRlbS10b29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93LWl0ZW0tdG9vbC13cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNvcmUtYnV0dG9uLWdyb3VwLXZucyBbc2hvd25JdGVtc109XCJpbmxpbmVUb29sSXRlbXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYnV0dG9uQ2xpY2spPVwib25JbmxpbmVUb29sQ2xpY2soJGV2ZW50LCByb3cpXCI+PC9jb3JlLWJ1dHRvbi1ncm91cC12bnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICBAaWYgKHNob3dDaGVja2JveCkge1xyXG4gICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImNoZWNrLWNlbGwgZnJvemVuLWNvbFwiIHN0eWxlPVwibGVmdDogMHB4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjaGVja3dyYXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBjbGFzcz1cImNoZWNrLXJvd1wiIFtpZF09XCInY2hlY2stcm93JyArICgkaW5kZXggKyBzdGFydE5vZGUpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNoZWNraW5nTW9kZWxbJGluZGV4K3N0YXJ0Tm9kZV1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uQ2hlY2tpbmdOZ01vZGVsQ2hhbmdlKClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlY2ttYXJrXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICBAZm9yIChjb2wgb2YgdmlzaWJsZUNvbHVtbnM7IHRyYWNrIGNvbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIDx0ZCBbY2xhc3MuZnJvemVuLWNvbF09XCIkaW5kZXggPCBmcm96ZW5cIiBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQ6ICRpbmRleCA8IGZyb3plbiA/IGZyb3plbkxlZnRzWyRpbmRleF0gKyAncHgnIDogJzBweCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6ICEhbm9QYWRkaW5nQ2VsbCA/ICcwcHggMHB4JyA6ICcycHggMHB4J1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoIWNvbD8udGVtcGxhdGVSZWYpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBJTiBNT1NUIENBU0VTIFdFIE5FRUQgVE8gUkVOREVSIFRIRSBDRUxMIFdJVEggUFJJTUlUSVZFIFRZUEUgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW2NsYXNzLnNjcm9sbC15XT1cImFsbG93Q2VsbFNjcm9sbFlcIiBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogISFjb2wud2lkdGggPyBjb2wud2lkdGggKyAncHgnIDogJ3Vuc2V0JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRBbGlnbjogISFjb2wuYWxpZ24gPyBjb2wuYWxpZ24udG9Mb3dlckNhc2UoKSA6ICd1bnNldCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lSGVpZ2h0OiByb3dIZWlnaHQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAhIW5vUGFkZGluZ0NlbGwgPyAnMHB4IDBweCcgOiAnMHB4IDEycHgnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIiBbYXBwVG9vbHRpcF09XCJyb3dbY29sLmZpZWxkXSB8IHRhYmxlQ2VsbDogY29sLnBpcGUgOiBsYW5nXCI+e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd1tjb2wuZmllbGRdIHwgdGFibGVDZWxsOiBjb2wucGlwZSA6IGxhbmcgfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIEJVVCBTT01FIFRJTUUgV0UgTkVFRCBUTyBSRU5ERVIgVEhFIENFTEwgV0lUSCBURU1QTEFURSAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogISFjb2wud2lkdGggPyBjb2wud2lkdGggKyAncHgnIDogJ3Vuc2V0JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRBbGlnbjogISFjb2wuYWxpZ24gPyBjb2wuYWxpZ24udG9Mb3dlckNhc2UoKSA6ICd1bnNldCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAhIW5vUGFkZGluZ0NlbGwgPyAnMHB4IDBweCcgOiAnMHB4IDEycHgnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoIWNvbD8udGVtcGxhdGVSZWZBbGxvd0VkaXRPblJvd0FjdGl2ZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImNvbD8udGVtcGxhdGVSZWYhOyBjb250ZXh0OiB7IGNvbnRleHQ6IHJvdyB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImNvbD8udGVtcGxhdGVSZWYhOyBjb250ZXh0OiB7IGNvbnRleHQ6IHJvdywgYWxsb3dFZGl0OiByb3cuaWQgPT09IGFjdGl2ZVJvdyB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgQGlmIChzaG93VG9vbHMpIHtcclxuICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0b29scy1ncm91cCBkLWZsZXgtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZm9yICh0b29sIG9mIHRvb2xzOyB0cmFjayB0b29sKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtjbGFzc109XCIndG9vbHMtaWNvbiAnICsgdG9vbC5jbGFzc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cInRvb2wuZGlzYWJsZWRGbiA/IHRvb2wuZGlzYWJsZWRGbiEocm93KSA6IGZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaGlkZGVuXT1cInRvb2wuaGlkZGVuRm4gPyB0b29sLmhpZGRlbkZuIShyb3cpIDogZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvblRvb2xDbGlja0xvY2FsKHJvdywgJGluZGV4KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBAaWYgKCEhbGF6eUxvYWRpbmcpIHtcclxuICAgICAgICAgICAgICAgIDx0ciBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBoaWRkZW5Cb3R0b21IZWlnaHQgKyAncHgnXHJcbiAgICAgICAgICAgICAgICB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IGhpZGRlbkJvdHRvbUhlaWdodCArICdweCdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPC90Ym9keT5cclxuICAgICAgICBAaWYgKCEhZm9vdGVyKSB7XHJcbiAgICAgICAgPHRmb290PlxyXG4gICAgICAgICAgICBGb290ZXJcclxuICAgICAgICA8L3Rmb290PlxyXG4gICAgICAgIH1cclxuICAgIDwvdGFibGU+XHJcbjwvZGl2PiJdfQ==
|
|
@@ -81,7 +81,7 @@ export class InMemoryComponent extends BaseComponent {
|
|
|
81
81
|
onTab1ColumnCaptionClick(e) {
|
|
82
82
|
}
|
|
83
83
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: InMemoryComponent, deps: [{ token: i1.LayoutService }, { token: i2.MultiLanguageService }, { token: i3.RoutingService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
84
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.3", type: InMemoryComponent, isStandalone: true, selector: "app-in-memory", usesInheritance: true, ngImport: i0, template: "<core-page-header [title]=\"title\"></core-page-header>\r\n<core-tabs [headers]=\"tabHeaders\" [contents]=\"[tab1, tab2]\" [height]=\"tabsHeight\"></core-tabs>\r\n\r\n<ng-template #tab1>\r\n <div [ngStyle]=\"{ paddingTop: layoutService.basicSpacing + 'px' }\">\r\n <core-table width=\"100%\" [height]=\"tableHeight\" [rowHeight]=\"'46px'\" [wrap]=\"false\" [columns]=\"tab1Columns\"\r\n [data]=\"tab1FilteredData\" headerHeight=\"60px\" [frozen]=\"0\" (onSearching)=\"onTab1Searching($event)\"\r\n (onColumnCaptionClick)=\"onTab1ColumnCaptionClick($event)\" [columnSearchDefaultOpen]=\"true\"\r\n [lazyLoading]=\"true\"></core-table>\r\n </div>\r\n</ng-template>\r\n\r\n\r\n<ng-template #tab2>\r\n <h2>OK2</h2>\r\n</ng-template>", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: CorePageHeaderComponent, selector: "core-page-header", inputs: ["instanceNumber", "shownItems", "title", "hideButtonGroup"], outputs: ["buttonClick"] }, { kind: "component", type: CoreTabsComponent, selector: "core-tabs", inputs: ["headers", "contents", "headerTools", "height", "headerLineHeight"], outputs: ["onHeaderClick", "onToolItemClick"] }, { kind: "component", type: CoreTableComponent, selector: "core-table", inputs: ["id", "width", "height", "showCheckbox", "checkboxSize", "outerButtons", "showTools", "tools", "checkingResetFlag", "headerWrap", "headerFirstRowHeight", "headerSecondRowHeight", "wrap", "allowCellScrollY", "loading", "rowHeight", "frozen", "footer", "columns", "data", "selectedIds", "corePageListInstanceNumber", "disableHighlightOnClick", "freeMode", "searchSwitchDisabled", "inlineToolItems", "columnSearchDefaultOpen", "lazyLoading", "noPaddingCell"], outputs: ["onSearching", "onToolClick", "onRowClick", "onRowDoubleClick", "onSelectedIdsChange", "onSelectedDataChange", "onColumnCaptionClick"] }] }); }
|
|
84
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.3", type: InMemoryComponent, isStandalone: true, selector: "app-in-memory", usesInheritance: true, ngImport: i0, template: "<core-page-header [title]=\"title\"></core-page-header>\r\n<core-tabs [headers]=\"tabHeaders\" [contents]=\"[tab1, tab2]\" [height]=\"tabsHeight\"></core-tabs>\r\n\r\n<ng-template #tab1>\r\n <div [ngStyle]=\"{ paddingTop: layoutService.basicSpacing + 'px' }\">\r\n <core-table width=\"100%\" [height]=\"tableHeight\" [rowHeight]=\"'46px'\" [wrap]=\"false\" [columns]=\"tab1Columns\"\r\n [data]=\"tab1FilteredData\" headerHeight=\"60px\" [frozen]=\"0\" (onSearching)=\"onTab1Searching($event)\"\r\n (onColumnCaptionClick)=\"onTab1ColumnCaptionClick($event)\" [columnSearchDefaultOpen]=\"true\"\r\n [lazyLoading]=\"true\"></core-table>\r\n </div>\r\n</ng-template>\r\n\r\n\r\n<ng-template #tab2>\r\n <h2>OK2</h2>\r\n</ng-template>", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: CorePageHeaderComponent, selector: "core-page-header", inputs: ["instanceNumber", "shownItems", "title", "hideButtonGroup"], outputs: ["buttonClick"] }, { kind: "component", type: CoreTabsComponent, selector: "core-tabs", inputs: ["headers", "contents", "headerTools", "height", "headerLineHeight"], outputs: ["onHeaderClick", "onToolItemClick"] }, { kind: "component", type: CoreTableComponent, selector: "core-table", inputs: ["id", "width", "height", "showCheckbox", "checkboxSize", "outerButtons", "showTools", "tools", "checkingResetFlag", "headerWrap", "headerFirstRowHeight", "headerSecondRowHeight", "wrap", "allowCellScrollY", "loading", "rowHeight", "frozen", "footer", "columns", "data", "selectedIds", "corePageListInstanceNumber", "disableHighlightOnClick", "freeMode", "searchSwitchDisabled", "disableSorting", "inlineToolItems", "columnSearchDefaultOpen", "lazyLoading", "noPaddingCell"], outputs: ["onSearching", "onToolClick", "onRowClick", "onRowDoubleClick", "onSelectedIdsChange", "onSelectedDataChange", "onColumnCaptionClick"] }] }); }
|
|
85
85
|
}
|
|
86
86
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: InMemoryComponent, decorators: [{
|
|
87
87
|
type: Component,
|