cps-ui-kit 0.136.0 → 0.137.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -86,6 +86,7 @@ export class CpsTableComponent {
86
86
  this.dataReloadBtnDisabled = false;
87
87
  this.showColumnsToggleBtn = false; // if external body template is provided, use columnsSelected event emitter
88
88
  this.columnsToggleBtnDisabled = false;
89
+ this.initialColumns = []; // if not provided, all columns are initially visible
89
90
  this.selectionChanged = new EventEmitter();
90
91
  this.actionBtnClicked = new EventEmitter();
91
92
  this.editRowBtnClicked = new EventEmitter();
@@ -158,7 +159,8 @@ export class CpsTableComponent {
158
159
  this.data?.length > 0) {
159
160
  this.globalFilterFields = Object.keys(this.data[0]);
160
161
  }
161
- this.selectedColumns = this.columns;
162
+ this.selectedColumns =
163
+ this.initialColumns.length > 0 ? this.initialColumns : this.columns;
162
164
  }
163
165
  get styleClass() {
164
166
  const classesList = [];
@@ -374,7 +376,7 @@ export class CpsTableComponent {
374
376
  }
375
377
  }
376
378
  CpsTableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: CpsTableComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
377
- CpsTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: CpsTableComponent, isStandalone: true, selector: "cps-table", inputs: { data: "data", columns: "columns", colHeaderName: "colHeaderName", colFieldName: "colFieldName", striped: "striped", bordered: "bordered", size: "size", selectable: "selectable", rowHover: "rowHover", dataKey: "dataKey", showRowMenu: "showRowMenu", reorderableRows: "reorderableRows", loading: "loading", tableStyle: "tableStyle", tableStyleClass: "tableStyleClass", sortable: "sortable", sortMode: "sortMode", customSort: "customSort", hasToolbar: "hasToolbar", toolbarSize: "toolbarSize", toolbarTitle: "toolbarTitle", toolbarIcon: "toolbarIcon", toolbarIconColor: "toolbarIconColor", scrollable: "scrollable", scrollHeight: "scrollHeight", virtualScroll: "virtualScroll", numToleratedItems: "numToleratedItems", paginator: "paginator", alwaysShowPaginator: "alwaysShowPaginator", rowsPerPageOptions: "rowsPerPageOptions", first: "first", rows: "rows", resetPageOnRowsChange: "resetPageOnRowsChange", resetPageOnSort: "resetPageOnSort", totalRecords: "totalRecords", emptyMessage: "emptyMessage", emptyBodyHeight: "emptyBodyHeight", lazy: "lazy", lazyLoadOnInit: "lazyLoadOnInit", showGlobalFilter: "showGlobalFilter", globalFilterPlaceholder: "globalFilterPlaceholder", globalFilterFields: "globalFilterFields", clearGlobalFilterOnLoading: "clearGlobalFilterOnLoading", showRemoveBtnOnSelect: "showRemoveBtnOnSelect", removeBtnOnSelectDisabled: "removeBtnOnSelectDisabled", showAdditionalBtnOnSelect: "showAdditionalBtnOnSelect", additionalBtnOnSelectTitle: "additionalBtnOnSelectTitle", additionalBtnOnSelectDisabled: "additionalBtnOnSelectDisabled", showActionBtn: "showActionBtn", actionBtnTitle: "actionBtnTitle", actionBtnDisabled: "actionBtnDisabled", showExportBtn: "showExportBtn", exportBtnDisabled: "exportBtnDisabled", exportFilename: "exportFilename", csvSeparator: "csvSeparator", showDataReloadBtn: "showDataReloadBtn", dataReloadBtnDisabled: "dataReloadBtnDisabled", showColumnsToggleBtn: "showColumnsToggleBtn", columnsToggleBtnDisabled: "columnsToggleBtnDisabled" }, outputs: { selectionChanged: "selectionChanged", actionBtnClicked: "actionBtnClicked", editRowBtnClicked: "editRowBtnClicked", rowsRemoved: "rowsRemoved", pageChanged: "pageChanged", sorted: "sorted", filtered: "filtered", rowsReordered: "rowsReordered", columnsSelected: "columnsSelected", lazyLoaded: "lazyLoaded", dataReloadBtnClicked: "dataReloadBtnClicked", additionalBtnOnSelectClicked: "additionalBtnOnSelectClicked", customSortFunction: "customSortFunction" }, providers: [
379
+ CpsTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: CpsTableComponent, isStandalone: true, selector: "cps-table", inputs: { data: "data", columns: "columns", colHeaderName: "colHeaderName", colFieldName: "colFieldName", striped: "striped", bordered: "bordered", size: "size", selectable: "selectable", rowHover: "rowHover", dataKey: "dataKey", showRowMenu: "showRowMenu", reorderableRows: "reorderableRows", loading: "loading", tableStyle: "tableStyle", tableStyleClass: "tableStyleClass", sortable: "sortable", sortMode: "sortMode", customSort: "customSort", hasToolbar: "hasToolbar", toolbarSize: "toolbarSize", toolbarTitle: "toolbarTitle", toolbarIcon: "toolbarIcon", toolbarIconColor: "toolbarIconColor", scrollable: "scrollable", scrollHeight: "scrollHeight", virtualScroll: "virtualScroll", numToleratedItems: "numToleratedItems", paginator: "paginator", alwaysShowPaginator: "alwaysShowPaginator", rowsPerPageOptions: "rowsPerPageOptions", first: "first", rows: "rows", resetPageOnRowsChange: "resetPageOnRowsChange", resetPageOnSort: "resetPageOnSort", totalRecords: "totalRecords", emptyMessage: "emptyMessage", emptyBodyHeight: "emptyBodyHeight", lazy: "lazy", lazyLoadOnInit: "lazyLoadOnInit", showGlobalFilter: "showGlobalFilter", globalFilterPlaceholder: "globalFilterPlaceholder", globalFilterFields: "globalFilterFields", clearGlobalFilterOnLoading: "clearGlobalFilterOnLoading", showRemoveBtnOnSelect: "showRemoveBtnOnSelect", removeBtnOnSelectDisabled: "removeBtnOnSelectDisabled", showAdditionalBtnOnSelect: "showAdditionalBtnOnSelect", additionalBtnOnSelectTitle: "additionalBtnOnSelectTitle", additionalBtnOnSelectDisabled: "additionalBtnOnSelectDisabled", showActionBtn: "showActionBtn", actionBtnTitle: "actionBtnTitle", actionBtnDisabled: "actionBtnDisabled", showExportBtn: "showExportBtn", exportBtnDisabled: "exportBtnDisabled", exportFilename: "exportFilename", csvSeparator: "csvSeparator", showDataReloadBtn: "showDataReloadBtn", dataReloadBtnDisabled: "dataReloadBtnDisabled", showColumnsToggleBtn: "showColumnsToggleBtn", columnsToggleBtnDisabled: "columnsToggleBtnDisabled", initialColumns: "initialColumns" }, outputs: { selectionChanged: "selectionChanged", actionBtnClicked: "actionBtnClicked", editRowBtnClicked: "editRowBtnClicked", rowsRemoved: "rowsRemoved", pageChanged: "pageChanged", sorted: "sorted", filtered: "filtered", rowsReordered: "rowsReordered", columnsSelected: "columnsSelected", lazyLoaded: "lazyLoaded", dataReloadBtnClicked: "dataReloadBtnClicked", additionalBtnOnSelectClicked: "additionalBtnOnSelectClicked", customSortFunction: "customSortFunction" }, providers: [
378
380
  TableService,
379
381
  {
380
382
  provide: Table,
@@ -525,6 +527,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
525
527
  type: Input
526
528
  }], columnsToggleBtnDisabled: [{
527
529
  type: Input
530
+ }], initialColumns: [{
531
+ type: Input
528
532
  }], selectionChanged: [{
529
533
  type: Output
530
534
  }], actionBtnClicked: [{
@@ -579,4 +583,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
579
583
  type: ViewChild,
580
584
  args: ['colToggleMenu']
581
585
  }] } });
582
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3BzLXRhYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nwcy11aS1raXQvc3JjL2xpYi9jb21wb25lbnRzL2Nwcy10YWJsZS9jcHMtdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY3BzLXVpLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvY3BzLXRhYmxlL2Nwcy10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBR04sU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWpFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBZSxNQUFNLGdDQUFnQyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQ25HLE9B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WTt1QkFBQyxRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUlsQyxvQkFBb0I7c0JBRDFCLFlBQVk7dUJBQUMsY0FBYyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFJeEMsWUFBWTtzQkFEbEIsWUFBWTt1QkFBQyxNQUFNLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUloQyxvQkFBb0I7c0JBRDFCLFlBQVk7dUJBQUMsY0FBYyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFJL0MsWUFBWTtzQkFEWCxTQUFTO3VCQUFDLGNBQWMsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBSTNDLGdCQUFnQjtzQkFEZixTQUFTO3VCQUFDLGtCQUFrQjtnQkFJN0IsVUFBVTtzQkFEVCxTQUFTO3VCQUFDLFlBQVk7Z0JBSXZCLGFBQWE7c0JBRFosU0FBUzt1QkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3Q2hlY2tlZCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFRhYmxlLCBUYWJsZVNlcnZpY2UsIFRhYmxlTW9kdWxlIH0gZnJvbSAncHJpbWVuZy90YWJsZSc7XG5pbXBvcnQgeyBTb3J0RXZlbnQgfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQgeyBDcHNJbnB1dENvbXBvbmVudCB9IGZyb20gJy4uL2Nwcy1pbnB1dC9jcHMtaW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7IENwc0J1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4uL2Nwcy1idXR0b24vY3BzLWJ1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ3BzU2VsZWN0Q29tcG9uZW50IH0gZnJvbSAnLi4vY3BzLXNlbGVjdC9jcHMtc2VsZWN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDcHNJY29uQ29tcG9uZW50IH0gZnJvbSAnLi4vY3BzLWljb24vY3BzLWljb24uY29tcG9uZW50JztcbmltcG9ydCB7IENwc01lbnVDb21wb25lbnQsIENwc01lbnVJdGVtIH0gZnJvbSAnLi4vY3BzLW1lbnUvY3BzLW1lbnUuY29tcG9uZW50JztcbmltcG9ydCB7IENwc0xvYWRlckNvbXBvbmVudCB9IGZyb20gJy4uL2Nwcy1sb2FkZXIvY3BzLWxvYWRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGFibGVSb3dNZW51Q29tcG9uZW50IH0gZnJvbSAnLi90YWJsZS1yb3ctbWVudS90YWJsZS1yb3ctbWVudS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ3BzVGFibGVDb2x1bW5Tb3J0YWJsZURpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9jcHMtdGFibGUtY29sdW1uLXNvcnRhYmxlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBUYWJsZVVuc29ydERpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9pbnRlcm5hbC90YWJsZS11bnNvcnQuZGlyZWN0aXZlJztcbmltcG9ydCB7IGNvbnZlcnRTaXplIH0gZnJvbSAnLi4vLi4vdXRpbHMvaW50ZXJuYWwvc2l6ZS11dGlscyc7XG5pbXBvcnQgeyBmaW5kLCBpc0VxdWFsIH0gZnJvbSAnbG9kYXNoLWVzJztcblxuLy8gaW1wb3J0IGpzUERGIGZyb20gJ2pzcGRmJztcbi8vIGltcG9ydCAnanNwZGYtYXV0b3RhYmxlJztcblxuZXhwb3J0IGZ1bmN0aW9uIHRhYmxlRmFjdG9yeSh0YWJsZUNvbXBvbmVudDogQ3BzVGFibGVDb21wb25lbnQpIHtcbiAgcmV0dXJuIHRhYmxlQ29tcG9uZW50LnByaW1lbmdUYWJsZTtcbn1cblxuZXhwb3J0IHR5cGUgQ3BzVGFibGVFeHBvcnRGb3JtYXQgPSAnY3N2JyB8ICd4bHN4JzsgLy8gfCAncGRmJztcbmV4cG9ydCB0eXBlIENwc1RhYmxlU2l6ZSA9ICdzbWFsbCcgfCAnbm9ybWFsJyB8ICdsYXJnZSc7XG5leHBvcnQgdHlwZSBDcHNUYWJsZVRvb2xiYXJTaXplID0gJ3NtYWxsJyB8ICdub3JtYWwnO1xuZXhwb3J0IHR5cGUgQ3BzVGFibGVTb3J0TW9kZSA9ICdzaW5nbGUnIHwgJ211bHRpcGxlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY3BzLXRhYmxlJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGltcG9ydHM6IFtcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgVGFibGVNb2R1bGUsXG4gICAgVGFibGVVbnNvcnREaXJlY3RpdmUsXG4gICAgQ3BzSW5wdXRDb21wb25lbnQsXG4gICAgQ3BzQnV0dG9uQ29tcG9uZW50LFxuICAgIENwc1NlbGVjdENvbXBvbmVudCxcbiAgICBDcHNJY29uQ29tcG9uZW50LFxuICAgIENwc01lbnVDb21wb25lbnQsXG4gICAgQ3BzTG9hZGVyQ29tcG9uZW50LFxuICAgIFRhYmxlUm93TWVudUNvbXBvbmVudCxcbiAgICBDcHNUYWJsZUNvbHVtblNvcnRhYmxlRGlyZWN0aXZlXG4gIF0sXG4gIHRlbXBsYXRlVXJsOiAnLi9jcHMtdGFibGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jcHMtdGFibGUuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgVGFibGVTZXJ2aWNlLFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IFRhYmxlLFxuICAgICAgdXNlRmFjdG9yeTogdGFibGVGYWN0b3J5LFxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVzZS1iZWZvcmUtZGVmaW5lXG4gICAgICBkZXBzOiBbQ3BzVGFibGVDb21wb25lbnRdXG4gICAgfVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIENwc1RhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdDaGVja2VkLCBPbkNoYW5nZXMge1xuICBASW5wdXQoKSBkYXRhOiBhbnlbXSA9IFtdO1xuICBASW5wdXQoKSBjb2x1bW5zOiB7IFtrZXk6IHN0cmluZ106IGFueSB9W10gPSBbXTtcbiAgQElucHV0KCkgY29sSGVhZGVyTmFtZSA9ICdoZWFkZXInO1xuICBASW5wdXQoKSBjb2xGaWVsZE5hbWUgPSAnZmllbGQnO1xuXG4gIEBJbnB1dCgpIHN0cmlwZWQgPSB0cnVlO1xuICBASW5wdXQoKSBib3JkZXJlZCA9IHRydWU7XG4gIEBJbnB1dCgpIHNpemU6IENwc1RhYmxlU2l6ZSA9ICdub3JtYWwnO1xuICBASW5wdXQoKSBzZWxlY3RhYmxlID0gZmFsc2U7XG4gIEBJbnB1dCgpIHJvd0hvdmVyID0gdHJ1ZTtcbiAgQElucHV0KCkgZGF0YUtleSA9ICcnOyAvLyBmaWVsZCwgdGhhdCB1bmlxdWVseSBpZGVudGlmaWVzIGEgcmVjb3JkIGluIGRhdGEgKG5lZWRlZCBmb3IgZXhwYW5kYWJsZSByb3dzKVxuICBASW5wdXQoKSBzaG93Um93TWVudSA9IGZhbHNlO1xuICBASW5wdXQoKSByZW9yZGVyYWJsZVJvd3MgPSBmYWxzZTtcbiAgQElucHV0KCkgbG9hZGluZyA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIHRhYmxlU3R5bGUgPSB1bmRlZmluZWQ7XG4gIEBJbnB1dCgpIHRhYmxlU3R5bGVDbGFzcyA9ICcnO1xuXG4gIEBJbnB1dCgpIHNvcnRhYmxlID0gZmFsc2U7IC8vIG1ha2VzIGFsbCBzb3J0YWJsZSBpZiBjb2x1bW5zIGFyZSBwcm92aWRlZFxuICBASW5wdXQoKSBzb3J0TW9kZTogQ3BzVGFibGVTb3J0TW9kZSA9ICdzaW5nbGUnO1xuICBASW5wdXQoKSBjdXN0b21Tb3J0ID0gZmFsc2U7XG5cbiAgQElucHV0KCkgaGFzVG9vbGJhciA9IHRydWU7XG4gIEBJbnB1dCgpIHRvb2xiYXJTaXplOiBDcHNUYWJsZVRvb2xiYXJTaXplID0gJ25vcm1hbCc7XG4gIEBJbnB1dCgpIHRvb2xiYXJUaXRsZSA9ICcnO1xuICBASW5wdXQoKSB0b29sYmFySWNvbiA9ICcnO1xuICBASW5wdXQoKSB0b29sYmFySWNvbkNvbG9yID0gJyc7XG5cbiAgQElucHV0KCkgc2Nyb2xsYWJsZSA9IHRydWU7XG4gIEBJbnB1dCgpIHNjcm9sbEhlaWdodCA9ICcnOyAvLyAnZmxleCcgb3IgdmFsdWUrJ3B4J1xuICBASW5wdXQoKSB2aXJ0dWFsU2Nyb2xsID0gZmFsc2U7IC8vIHdvcmtzIG9ubHkgaWYgc2Nyb2xsYWJsZSBpcyB0cnVlXG4gIEBJbnB1dCgpIG51bVRvbGVyYXRlZEl0ZW1zID0gMTA7XG5cbiAgQElucHV0KCkgcGFnaW5hdG9yID0gZmFsc2U7XG4gIEBJbnB1dCgpIGFsd2F5c1Nob3dQYWdpbmF0b3IgPSB0cnVlO1xuICBASW5wdXQoKSByb3dzUGVyUGFnZU9wdGlvbnM6IG51bWJlcltdID0gW107XG4gIEBJbnB1dCgpIGZpcnN0ID0gMDtcbiAgQElucHV0KCkgcm93cyA9IDA7XG4gIEBJbnB1dCgpIHJlc2V0UGFnZU9uUm93c0NoYW5nZSA9IGZhbHNlO1xuICBASW5wdXQoKSByZXNldFBhZ2VPblNvcnQgPSB0cnVlO1xuICBASW5wdXQoKSB0b3RhbFJlY29yZHMgPSAwO1xuXG4gIEBJbnB1dCgpIGVtcHR5TWVzc2FnZSA9ICdObyBkYXRhJztcbiAgQElucHV0KCkgZW1wdHlCb2R5SGVpZ2h0OiBudW1iZXIgfCBzdHJpbmcgPSAnJztcblxuICBASW5wdXQoKSBsYXp5ID0gZmFsc2U7XG4gIEBJbnB1dCgpIGxhenlMb2FkT25Jbml0ID0gdHJ1ZTtcblxuICBASW5wdXQoKSBzaG93R2xvYmFsRmlsdGVyID0gZmFsc2U7XG4gIEBJbnB1dCgpIGdsb2JhbEZpbHRlclBsYWNlaG9sZGVyID0gJ1NlYXJjaCc7XG4gIEBJbnB1dCgpIGdsb2JhbEZpbHRlckZpZWxkczogc3RyaW5nW10gPSBbXTtcbiAgQElucHV0KCkgY2xlYXJHbG9iYWxGaWx0ZXJPbkxvYWRpbmcgPSBmYWxzZTtcblxuICBASW5wdXQoKSBzaG93UmVtb3ZlQnRuT25TZWxlY3QgPSB0cnVlO1xuICBASW5wdXQoKSByZW1vdmVCdG5PblNlbGVjdERpc2FibGVkID0gZmFsc2U7XG5cbiAgQElucHV0KCkgc2hvd0FkZGl0aW9uYWxCdG5PblNlbGVjdCA9IGZhbHNlO1xuICBASW5wdXQoKSBhZGRpdGlvbmFsQnRuT25TZWxlY3RUaXRsZSA9ICdTZWxlY3QgYWN0aW9uJztcbiAgQElucHV0KCkgYWRkaXRpb25hbEJ0bk9uU2VsZWN0RGlzYWJsZWQgPSBmYWxzZTtcblxuICBASW5wdXQoKSBzaG93QWN0aW9uQnRuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGFjdGlvbkJ0blRpdGxlID0gJ0FjdGlvbic7XG4gIEBJbnB1dCgpIGFjdGlvbkJ0bkRpc2FibGVkID0gZmFsc2U7XG5cbiAgQElucHV0KCkgc2hvd0V4cG9ydEJ0biA9IGZhbHNlO1xuICBASW5wdXQoKSBleHBvcnRCdG5EaXNhYmxlZCA9IGZhbHNlO1xuICBASW5wdXQoKSBleHBvcnRGaWxlbmFtZSA9ICdkb3dubG9hZCc7XG4gIEBJbnB1dCgpIGNzdlNlcGFyYXRvciA9ICcsJztcblxuICBASW5wdXQoKSBzaG93RGF0YVJlbG9hZEJ0biA9IGZhbHNlO1xuICBASW5wdXQoKSBkYXRhUmVsb2FkQnRuRGlzYWJsZWQgPSBmYWxzZTtcblxuICBASW5wdXQoKSBzaG93Q29sdW1uc1RvZ2dsZUJ0biA9IGZhbHNlOyAvLyBpZiBleHRlcm5hbCBib2R5IHRlbXBsYXRlIGlzIHByb3ZpZGVkLCB1c2UgY29sdW1uc1NlbGVjdGVkIGV2ZW50IGVtaXR0ZXJcbiAgQElucHV0KCkgY29sdW1uc1RvZ2dsZUJ0bkRpc2FibGVkID0gZmFsc2U7XG5cbiAgQE91dHB1dCgpIHNlbGVjdGlvbkNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueVtdPigpO1xuICBAT3V0cHV0KCkgYWN0aW9uQnRuQ2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIGVkaXRSb3dCdG5DbGlja2VkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSByb3dzUmVtb3ZlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55W10+KCk7XG4gIEBPdXRwdXQoKSBwYWdlQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgc29ydGVkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBmaWx0ZXJlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgcm93c1Jlb3JkZXJlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgY29sdW1uc1NlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcjx7IFtrZXk6IHN0cmluZ106IGFueSB9W10+KCk7XG4gIEBPdXRwdXQoKSBsYXp5TG9hZGVkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBkYXRhUmVsb2FkQnRuQ2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgYWRkaXRpb25hbEJ0bk9uU2VsZWN0Q2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55W10+KCk7XG4gIC8qKlxuICAgKiBBIGZ1bmN0aW9uIHRvIGltcGxlbWVudCBjdXN0b20gc29ydGluZy4gY3VzdG9tU29ydCBtdXN0IGJlIHRydWUuXG4gICAqIEBwYXJhbSB7YW55fSBhbnkgLSBzb3J0IG1ldGEuXG4gICAqIEBncm91cCBFbWl0c1xuICAgKi9cbiAgQE91dHB1dCgpIGN1c3RvbVNvcnRGdW5jdGlvbjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBAQ29udGVudENoaWxkKCd0b29sYmFyJywgeyBzdGF0aWM6IGZhbHNlIH0pXG4gIHB1YmxpYyB0b29sYmFyVGVtcGxhdGUhOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIEBDb250ZW50Q2hpbGQoJ2hlYWRlcicsIHsgc3RhdGljOiBmYWxzZSB9KVxuICBwdWJsaWMgaGVhZGVyVGVtcGxhdGUhOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIEBDb250ZW50Q2hpbGQoJ25lc3RlZEhlYWRlcicsIHsgc3RhdGljOiBmYWxzZSB9KVxuICBwdWJsaWMgbmVzdGVkSGVhZGVyVGVtcGxhdGUhOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIEBDb250ZW50Q2hpbGQoJ2JvZHknLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgcHVibGljIGJvZHlUZW1wbGF0ZSE6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgQENvbnRlbnRDaGlsZCgncm93ZXhwYW5zaW9uJywgeyBzdGF0aWM6IGZhbHNlIH0pXG4gIHB1YmxpYyByb3dFeHBhbnNpb25UZW1wbGF0ZSE6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgQFZpZXdDaGlsZCgncHJpbWVuZ1RhYmxlJywgeyBzdGF0aWM6IHRydWUgfSlcbiAgcHJpbWVuZ1RhYmxlITogVGFibGU7XG5cbiAgQFZpZXdDaGlsZCgnZ2xvYmFsRmlsdGVyQ29tcCcpXG4gIGdsb2JhbEZpbHRlckNvbXAhOiBDcHNJbnB1dENvbXBvbmVudDtcblxuICBAVmlld0NoaWxkKCdleHBvcnRNZW51JylcbiAgZXhwb3J0TWVudSE6IENwc01lbnVDb21wb25lbnQ7XG5cbiAgQFZpZXdDaGlsZCgnY29sVG9nZ2xlTWVudScpXG4gIGNvbFRvZ2dsZU1lbnUhOiBDcHNNZW51Q29tcG9uZW50O1xuXG4gIHNlbGVjdGVkUm93czogYW55W10gPSBbXTtcblxuICB2aXJ0dWFsU2Nyb2xsSXRlbVNpemUgPSAwO1xuXG4gIHJvd09wdGlvbnM6IHsgbGFiZWw6IHN0cmluZzsgdmFsdWU6IG51bWJlciB9W10gPSBbXTtcblxuICBzZWxlY3RlZENvbHVtbnM6IHsgW2tleTogc3RyaW5nXTogYW55IH1bXSA9IFtdO1xuXG4gIGV4cG9ydE1lbnVJdGVtcyA9IFtcbiAgICB7XG4gICAgICB0aXRsZTogJ0NTVicsXG4gICAgICBpY29uOiAnY3N2JyxcbiAgICAgIGFjdGlvbjogKCkgPT4ge1xuICAgICAgICB0aGlzLmV4cG9ydFRhYmxlKCdjc3YnKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIHRpdGxlOiAnWExTWCcsXG4gICAgICBpY29uOiAneGxzJyxcbiAgICAgIGFjdGlvbjogKCkgPT4ge1xuICAgICAgICB0aGlzLmV4cG9ydFRhYmxlKCd4bHN4Jyk7XG4gICAgICB9XG4gICAgfVxuICAgIC8vIHtcbiAgICAvLyAgIHRpdGxlOiAnUERGJyxcbiAgICAvLyAgIGljb246ICdwZGYnLFxuICAgIC8vICAgYWN0aW9uOiAoKSA9PiB7XG4gICAgLy8gICAgIHRoaXMuZXhwb3J0VGFibGUoJ3BkZicpO1xuICAgIC8vICAgfVxuICAgIC8vIH1cbiAgXSBhcyBDcHNNZW51SXRlbVtdO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11c2VsZXNzLWNvbnN0cnVjdG9yXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZW1wdHlCb2R5SGVpZ2h0ID0gY29udmVydFNpemUodGhpcy5lbXB0eUJvZHlIZWlnaHQpO1xuICAgIGlmICghdGhpcy5zY3JvbGxhYmxlKSB0aGlzLnZpcnR1YWxTY3JvbGwgPSBmYWxzZTtcblxuICAgIGlmICh0aGlzLnNob3dBZGRpdGlvbmFsQnRuT25TZWxlY3QpIHRoaXMuc2hvd1JlbW92ZUJ0bk9uU2VsZWN0ID0gZmFsc2U7XG5cbiAgICBpZiAodGhpcy5wYWdpbmF0b3IpIHtcbiAgICAgIGlmICh0aGlzLnJvd3NQZXJQYWdlT3B0aW9ucy5sZW5ndGggPCAxKVxuICAgICAgICB0aGlzLnJvd3NQZXJQYWdlT3B0aW9ucyA9IFs1LCAxMCwgMjUsIDUwXTtcblxuICAgICAgaWYgKCF0aGlzLnJvd3MpIHRoaXMucm93cyA9IHRoaXMucm93c1BlclBhZ2VPcHRpb25zWzBdO1xuICAgICAgZWxzZSB7XG4gICAgICAgIGlmICghdGhpcy5yb3dzUGVyUGFnZU9wdGlvbnMuaW5jbHVkZXModGhpcy5yb3dzKSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcigncm93c1BlclBhZ2VPcHRpb25zIG11c3QgaW5jbHVkZSByb3dzJyk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdGhpcy5yb3dPcHRpb25zID0gdGhpcy5yb3dzUGVyUGFnZU9wdGlvbnMubWFwKCh2KSA9PiAoe1xuICAgICAgICBsYWJlbDogJycgKyB2LFxuICAgICAgICB2YWx1ZTogdlxuICAgICAgfSkpO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgIHRoaXMuc2hvd0dsb2JhbEZpbHRlciAmJlxuICAgICAgdGhpcy5nbG9iYWxGaWx0ZXJGaWVsZHM/Lmxlbmd0aCA8IDEgJiZcbiAgICAgIHRoaXMuZGF0YT8ubGVuZ3RoID4gMFxuICAgICkge1xuICAgICAgdGhpcy5nbG9iYWxGaWx0ZXJGaWVsZHMgPSBPYmplY3Qua2V5cyh0aGlzLmRhdGFbMF0pO1xuICAgIH1cblxuICAgIHRoaXMuc2VsZWN0ZWRDb2x1bW5zID0gdGhpcy5jb2x1bW5zO1xuICB9XG5cbiAgZ2V0IHN0eWxlQ2xhc3MoKSB7XG4gICAgY29uc3QgY2xhc3Nlc0xpc3QgPSBbXTtcbiAgICBzd2l0Y2ggKHRoaXMuc2l6ZSkge1xuICAgICAgY2FzZSAnc21hbGwnOlxuICAgICAgICBjbGFzc2VzTGlzdC5wdXNoKCdwLWRhdGF0YWJsZS1zbScpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2xhcmdlJzpcbiAgICAgICAgY2xhc3Nlc0xpc3QucHVzaCgncC1kYXRhdGFibGUtbGcnKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGlmICh0aGlzLmhhc1Rvb2xiYXIpIHtcbiAgICAgIHN3aXRjaCAodGhpcy50b29sYmFyU2l6ZSkge1xuICAgICAgICBjYXNlICdzbWFsbCc6XG4gICAgICAgICAgY2xhc3Nlc0xpc3QucHVzaCgnY3BzLXRiYXItc21hbGwnKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnbm9ybWFsJzpcbiAgICAgICAgICBjbGFzc2VzTGlzdC5wdXNoKCdjcHMtdGJhci1ub3JtYWwnKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy5zdHJpcGVkKSB7XG4gICAgICBjbGFzc2VzTGlzdC5wdXNoKCdwLWRhdGF0YWJsZS1zdHJpcGVkJyk7XG4gICAgfVxuICAgIGlmICh0aGlzLmJvcmRlcmVkKSB7XG4gICAgICBjbGFzc2VzTGlzdC5wdXNoKCdwLWRhdGF0YWJsZS1ncmlkbGluZXMnKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5zY3JvbGxIZWlnaHQgJiYgIXRoaXMubG9hZGluZyAmJiB0aGlzLmRhdGEubGVuZ3RoID4gMCkge1xuICAgICAgY2xhc3Nlc0xpc3QucHVzaCgnY3BzLXRhYmxlLWJvdHRvbS1ib3JkZXJlZCcpO1xuICAgIH1cblxuICAgIHJldHVybiBjbGFzc2VzTGlzdC5qb2luKCcgJyk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0NoZWNrZWQoKSB7XG4gICAgaWYgKCF0aGlzLnZpcnR1YWxTY3JvbGwgfHwgdGhpcy52aXJ0dWFsU2Nyb2xsSXRlbVNpemUpIHJldHVybjtcbiAgICB0aGlzLnZpcnR1YWxTY3JvbGxJdGVtU2l6ZSA9XG4gICAgICB0aGlzLnByaW1lbmdUYWJsZT8uZWw/Lm5hdGl2ZUVsZW1lbnRcbiAgICAgICAgPy5xdWVyeVNlbGVjdG9yKCcucC1kYXRhdGFibGUtdGJvZHknKVxuICAgICAgICA/LnF1ZXJ5U2VsZWN0b3IoJ3RyJyk/LmNsaWVudEhlaWdodCB8fCAwO1xuICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmICh0aGlzLmxvYWRpbmcpIHtcbiAgICAgIHRoaXMuY2xlYXJTZWxlY3Rpb24oKTtcbiAgICAgIGlmICh0aGlzLmNsZWFyR2xvYmFsRmlsdGVyT25Mb2FkaW5nKSB0aGlzLmNsZWFyR2xvYmFsRmlsdGVyKCk7XG4gICAgfVxuXG4gICAgY29uc3QgZGF0YUNoYW5nZXMgPSBjaGFuZ2VzPy5kYXRhO1xuICAgIGlmIChcbiAgICAgIGRhdGFDaGFuZ2VzPy5wcmV2aW91c1ZhbHVlPy5sZW5ndGggIT09IGRhdGFDaGFuZ2VzPy5jdXJyZW50VmFsdWU/Lmxlbmd0aFxuICAgICkge1xuICAgICAgdGhpcy5zZWxlY3RlZFJvd3MgPSB0aGlzLnNlbGVjdGVkUm93cy5maWx0ZXIoKHNyKSA9PlxuICAgICAgICB0aGlzLmRhdGEuaW5jbHVkZXMoc3IpXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIGNsZWFyU2VsZWN0aW9uKCkge1xuICAgIHRoaXMuc2VsZWN0ZWRSb3dzID0gW107XG4gIH1cblxuICBjbGVhckdsb2JhbEZpbHRlcigpIHtcbiAgICB0aGlzLmdsb2JhbEZpbHRlckNvbXA/LmNsZWFyKCk7XG4gIH1cblxuICBvblNlbGVjdGlvbkNoYW5nZWQoc2VsZWN0aW9uOiBhbnlbXSkge1xuICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlZC5lbWl0KHNlbGVjdGlvbik7XG4gIH1cblxuICBvblNvcnRGdW5jdGlvbihldmVudDogU29ydEV2ZW50KSB7XG4gICAgdGhpcy5jdXN0b21Tb3J0RnVuY3Rpb24uZW1pdChldmVudCk7XG4gIH1cblxuICBvbkZpbHRlckdsb2JhbCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5wcmltZW5nVGFibGUuZmlsdGVyR2xvYmFsKHZhbHVlLCAnY29udGFpbnMnKTtcbiAgfVxuXG4gIHJlbW92ZVNlbGVjdGVkKCkge1xuICAgIGNvbnN0IGluZGV4ZXM6IG51bWJlcltdID0gdGhpcy5wcmltZW5nVGFibGUuc2VsZWN0aW9uLm1hcChcbiAgICAgIChzOiBhbnkpID0+IHMuX2RlZmF1bHRTb3J0T3JkZXJcbiAgICApO1xuICAgIGluZGV4ZXMuc29ydCgoYSwgYikgPT4gYiAtIGEpO1xuXG4gICAgdGhpcy5kYXRhID0gdGhpcy5kYXRhLmZpbHRlcihcbiAgICAgICh2OiBhbnkpID0+ICFpbmRleGVzLmluY2x1ZGVzKHYuX2RlZmF1bHRTb3J0T3JkZXIpXG4gICAgKTtcblxuICAgIHRoaXMucm93c1JlbW92ZWQuZW1pdCh0aGlzLnNlbGVjdGVkUm93cyk7XG5cbiAgICB0aGlzLmNsZWFyU2VsZWN0aW9uKCk7XG4gIH1cblxuICBvbkNsaWNrQWRkaXRpb25hbEJ0bk9uU2VsZWN0KCkge1xuICAgIHRoaXMuYWRkaXRpb25hbEJ0bk9uU2VsZWN0Q2xpY2tlZC5lbWl0KHRoaXMuc2VsZWN0ZWRSb3dzKTtcbiAgfVxuXG4gIG9uQ2xpY2tBY3Rpb25CdG4oKSB7XG4gICAgdGhpcy5hY3Rpb25CdG5DbGlja2VkLmVtaXQoKTtcbiAgfVxuXG4gIG9uUm93c1BlclBhZ2VDaGFuZ2VkKCkge1xuICAgIGlmICh0aGlzLnJlc2V0UGFnZU9uUm93c0NoYW5nZSkge1xuICAgICAgdGhpcy5wcmltZW5nVGFibGUuZmlyc3QgPSAwO1xuICAgIH1cbiAgICB0aGlzLmNoYW5nZVBhZ2UodGhpcy5nZXRQYWdlKCkpO1xuICB9XG5cbiAgZ2V0UGFnZUNvdW50KCkge1xuICAgIHJldHVybiBNYXRoLmNlaWwodGhpcy5wcmltZW5nVGFibGUudG90YWxSZWNvcmRzIC8gdGhpcy5yb3dzKTtcbiAgfVxuXG4gIGdldFBhZ2UoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gTWF0aC5mbG9vcih0aGlzLnByaW1lbmdUYWJsZS5maXJzdCAvIHRoaXMucm93cyk7XG4gIH1cblxuICBjaGFuZ2VQYWdlKHA6IG51bWJlcikge1xuICAgIGNvbnN0IHBjID0gTWF0aC5jZWlsKHRoaXMuZ2V0UGFnZUNvdW50KCkpO1xuXG4gICAgaWYgKHAgPj0gMCAmJiBwIDwgcGMpIHtcbiAgICAgIHRoaXMuZmlyc3QgPSB0aGlzLnJvd3MgKiBwO1xuICAgICAgdGhpcy5wcmltZW5nVGFibGUub25QYWdlQ2hhbmdlKHsgZmlyc3Q6IHRoaXMuZmlyc3QsIHJvd3M6IHRoaXMucm93cyB9KTtcbiAgICB9XG4gIH1cblxuICBvblBhZ2VDaGFuZ2UoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuZmlyc3QgPSBldmVudC5maXJzdDtcbiAgICB0aGlzLnJvd3MgPSBldmVudC5yb3dzO1xuXG4gICAgY29uc3Qgc3RhdGUgPSB7XG4gICAgICBwYWdlOiB0aGlzLmdldFBhZ2UoKSxcbiAgICAgIGZpcnN0OiB0aGlzLmZpcnN0LFxuICAgICAgcm93czogdGhpcy5yb3dzLFxuICAgICAgcGFnZUNvdW50OiBNYXRoLmNlaWwodGhpcy5nZXRQYWdlQ291bnQoKSlcbiAgICB9O1xuXG4gICAgdGhpcy5wYWdlQ2hhbmdlZC5lbWl0KHN0YXRlKTtcbiAgfVxuXG4gIHRvZ2dsZUFsbENvbHVtbnMoKSB7XG4gICAgdGhpcy5zZWxlY3RlZENvbHVtbnMgPVxuICAgICAgdGhpcy5zZWxlY3RlZENvbHVtbnMubGVuZ3RoIDwgdGhpcy5jb2x1bW5zLmxlbmd0aCA/IHRoaXMuY29sdW1ucyA6IFtdO1xuICAgIHRoaXMuY29sdW1uc1NlbGVjdGVkLmVtaXQodGhpcy5zZWxlY3RlZENvbHVtbnMpO1xuICB9XG5cbiAgaXNDb2x1bW5TZWxlY3RlZChjb2w6IGFueSkge1xuICAgIHJldHVybiAhIWZpbmQodGhpcy5zZWxlY3RlZENvbHVtbnMsIChpdGVtKSA9PiBpc0VxdWFsKGl0ZW0sIGNvbCkpO1xuICB9XG5cbiAgb25TZWxlY3RDb2x1bW4oY29sOiBhbnkpIHtcbiAgICBsZXQgcmVzID0gW10gYXMgYW55O1xuICAgIGlmICh0aGlzLmlzQ29sdW1uU2VsZWN0ZWQoY29sKSkge1xuICAgICAgcmVzID0gdGhpcy5zZWxlY3RlZENvbHVtbnMuZmlsdGVyKCh2OiBhbnkpID0+ICFpc0VxdWFsKHYsIGNvbCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNvbHVtbnMuZm9yRWFjaCgobykgPT4ge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZENvbHVtbnMuc29tZSgodjogYW55KSA9PiBpc0VxdWFsKHYsIG8pKSB8fFxuICAgICAgICAgIGlzRXF1YWwoY29sLCBvKVxuICAgICAgICApIHtcbiAgICAgICAgICByZXMucHVzaChvKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIHRoaXMuc2VsZWN0ZWRDb2x1bW5zID0gcmVzO1xuICAgIHRoaXMuY29sdW1uc1NlbGVjdGVkLmVtaXQodGhpcy5zZWxlY3RlZENvbHVtbnMpO1xuICB9XG5cbiAgb25FZGl0Um93Q2xpY2tlZChpdGVtOiBhbnkpIHtcbiAgICB0aGlzLmVkaXRSb3dCdG5DbGlja2VkLmVtaXQoaXRlbSk7XG4gIH1cblxuICBvblJlbW92ZVJvd0NsaWNrZWQoaXRlbTogYW55KSB7XG4gICAgdGhpcy5zZWxlY3RlZFJvd3MgPSB0aGlzLnNlbGVjdGVkUm93cy5maWx0ZXIoKHY6IGFueSkgPT4gdiAhPT0gaXRlbSk7XG4gICAgdGhpcy5kYXRhID0gdGhpcy5kYXRhLmZpbHRlcigodjogYW55KSA9PiB2ICE9PSBpdGVtKTtcbiAgICB0aGlzLnJvd3NSZW1vdmVkLmVtaXQoW2l0ZW1dKTtcbiAgfVxuXG4gIG9uU29ydChldmVudDogYW55KSB7XG4gICAgdGhpcy5zb3J0ZWQuZW1pdChldmVudCk7XG4gIH1cblxuICBvbkZpbHRlcihldmVudDogYW55KSB7XG4gICAgdGhpcy5maWx0ZXJlZC5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIG9uUm93UmVvcmRlcihldmVudDogYW55KSB7XG4gICAgdGhpcy5yb3dzUmVvcmRlcmVkLmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgb25MYXp5TG9hZGVkKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLmxhenlMb2FkZWQuZW1pdChldmVudCk7XG4gIH1cblxuICBvblJlbG9hZERhdGEoKSB7XG4gICAgaWYgKHRoaXMuZGF0YVJlbG9hZEJ0bkRpc2FibGVkKSByZXR1cm47XG4gICAgdGhpcy5kYXRhUmVsb2FkQnRuQ2xpY2tlZC5lbWl0KCk7XG4gIH1cblxuICBvbkV4cG9ydERhdGEoZXZlbnQ6IGFueSkge1xuICAgIGlmICh0aGlzLmV4cG9ydEJ0bkRpc2FibGVkKSByZXR1cm47XG4gICAgdGhpcy5leHBvcnRNZW51Py50b2dnbGUoZXZlbnQpO1xuICB9XG5cbiAgb25Db2x1bW5zVG9nZ2xlKGV2ZW50OiBhbnkpIHtcbiAgICBpZiAodGhpcy5jb2x1bW5zVG9nZ2xlQnRuRGlzYWJsZWQpIHJldHVybjtcbiAgICB0aGlzLmNvbFRvZ2dsZU1lbnU/LnRvZ2dsZShldmVudCk7XG4gIH1cblxuICBleHBvcnRUYWJsZShmb3JtYXQ6IENwc1RhYmxlRXhwb3J0Rm9ybWF0KSB7XG4gICAgaWYgKHRoaXMuY29sdW1ucy5sZW5ndGggPCAxKSB0aHJvdyBuZXcgRXJyb3IoJ0NvbHVtbnMgbXVzdCBiZSBkZWZpbmVkIScpO1xuICAgIGlmICh0aGlzLnNlbGVjdGVkQ29sdW1ucy5sZW5ndGggPCAxKSB0aHJvdyBuZXcgRXJyb3IoJ05vdGhpbmcgdG8gZXhwb3J0IScpO1xuXG4gICAgc3dpdGNoIChmb3JtYXQpIHtcbiAgICAgIGNhc2UgJ2Nzdic6XG4gICAgICAgIHRoaXMucHJpbWVuZ1RhYmxlLmV4cG9ydENTVigpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAneGxzeCc6XG4gICAgICAgIHRoaXMuZXhwb3J0WExTWCgpO1xuICAgICAgICBicmVhaztcblxuICAgICAgLy8gY2FzZSAncGRmJzpcbiAgICAgIC8vICAgdGhpcy5leHBvcnRQREYoKTtcbiAgICAgIC8vICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgZXhwb3J0WExTWCgpIHtcbiAgICBpbXBvcnQoJ3hsc3gnKS50aGVuKCh4bHN4KSA9PiB7XG4gICAgICBjb25zdCBzaGVldERhdGEgPSBbXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDb2x1bW5zLm1hcChcbiAgICAgICAgICAoYzogeyBba2V5OiBzdHJpbmddOiBhbnkgfSkgPT4gY1t0aGlzLmNvbEhlYWRlck5hbWVdXG4gICAgICAgICksXG4gICAgICAgIC4uLnRoaXMuZGF0YS5tYXAoKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICB0aGlzLnNlbGVjdGVkQ29sdW1ucy5tYXAoXG4gICAgICAgICAgICAoYzogeyBba2V5OiBzdHJpbmddOiBhbnkgfSkgPT4gaXRlbVtjW3RoaXMuY29sRmllbGROYW1lXV1cbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgIF07XG5cbiAgICAgIGNvbnN0IHdvcmtzaGVldCA9IHhsc3gudXRpbHMuanNvbl90b19zaGVldChzaGVldERhdGEsIHtcbiAgICAgICAgc2tpcEhlYWRlcjogdHJ1ZVxuICAgICAgfSk7XG4gICAgICBjb25zdCB3b3JrYm9vayA9IHtcbiAgICAgICAgU2hlZXRzOiB7IFt0aGlzLmV4cG9ydEZpbGVuYW1lXTogd29ya3NoZWV0IH0sXG4gICAgICAgIFNoZWV0TmFtZXM6IFt0aGlzLmV4cG9ydEZpbGVuYW1lXVxuICAgICAgfTtcbiAgICAgIGNvbnN0IHhsc3hCdWZmZXI6IGFueSA9IHhsc3gud3JpdGUod29ya2Jvb2ssIHtcbiAgICAgICAgYm9va1R5cGU6ICd4bHN4JyxcbiAgICAgICAgdHlwZTogJ2FycmF5J1xuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IEVYQ0VMX1RZUEUgPVxuICAgICAgICAnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hlZXQ7Y2hhcnNldD1VVEYtOCc7XG4gICAgICBjb25zdCBibG9iOiBCbG9iID0gbmV3IEJsb2IoW3hsc3hCdWZmZXJdLCB7XG4gICAgICAgIHR5cGU6IEVYQ0VMX1RZUEVcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBkb3dubG9hZExpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgICBkb3dubG9hZExpbmsuaHJlZiA9IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XG4gICAgICBkb3dubG9hZExpbmsuZG93bmxvYWQgPSBgJHt0aGlzLmV4cG9ydEZpbGVuYW1lfS54bHN4YDtcbiAgICAgIGRvd25sb2FkTGluay5jbGljaygpO1xuICAgIH0pO1xuICB9XG5cbiAgLy8gZXhwb3J0UERGKCkge1xuICAvLyAgIGNvbnN0IGV4cG9ydENvbHVtbnMgPSB0aGlzLnNlbGVjdGVkQ29sdW1ucy5tYXAoKGNvbCkgPT4gKHtcbiAgLy8gICAgIHRpdGxlOiBjb2xbdGhpcy5jb2xIZWFkZXJOYW1lXSxcbiAgLy8gICAgIGRhdGFLZXk6IGNvbFt0aGlzLmNvbEZpZWxkTmFtZV1cbiAgLy8gICB9KSk7XG4gIC8vICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5ldy1jYXBcbiAgLy8gICBjb25zdCBkb2MgPSBuZXcganNQREYoe1xuICAvLyAgICAgb3JpZW50YXRpb246IHRoaXMuc2VsZWN0ZWRDb2x1bW5zLmxlbmd0aCA+IDMgPyAnbCcgOiAncCcsXG4gIC8vICAgICB1bml0OiAncHgnLFxuICAvLyAgICAgZm9ybWF0OiAnYTQnXG4gIC8vICAgfSk7XG4gIC8vICAgKGRvYyBhcyBhbnkpLmF1dG9UYWJsZSh7XG4gIC8vICAgICBoZWFkU3R5bGVzOiB7IGZpbGxDb2xvcjogJyM4NzBhM2MnIH0sXG4gIC8vICAgICBjb2x1bW5zOiBleHBvcnRDb2x1bW5zLFxuICAvLyAgICAgYm9keTogdGhpcy5kYXRhXG4gIC8vICAgfSk7XG4gIC8vICAgZG9jLnNhdmUoYCR7dGhpcy5leHBvcnRGaWxlbmFtZX0ucGRmYCk7XG4gIC8vIH1cbn1cbiIsIjxwLXRhYmxlXG4gICNwcmltZW5nVGFibGVcbiAgdFdpdGhVbnNvcnRcbiAgW25nQ2xhc3NdPVwieyAnY3BzLXRhYmxlLWxvYWRpbmcnOiBsb2FkaW5nIH1cIlxuICBbc3R5bGVDbGFzc109XCJzdHlsZUNsYXNzXCJcbiAgW3RhYmxlU3R5bGVdPVwidGFibGVTdHlsZVwiXG4gIFt0YWJsZVN0eWxlQ2xhc3NdPVwidGFibGVTdHlsZUNsYXNzXCJcbiAgW3ZhbHVlXT1cImRhdGFcIlxuICBbZGF0YUtleV09XCJkYXRhS2V5XCJcbiAgW2NvbHVtbnNdPVwic2VsZWN0ZWRDb2x1bW5zXCJcbiAgKHNlbGVjdGlvbkNoYW5nZSk9XCJvblNlbGVjdGlvbkNoYW5nZWQoJGV2ZW50KVwiXG4gIFtnbG9iYWxGaWx0ZXJGaWVsZHNdPVwiZ2xvYmFsRmlsdGVyRmllbGRzXCJcbiAgW3Nob3dJbml0aWFsU29ydEJhZGdlXT1cImZhbHNlXCJcbiAgW2xvYWRpbmddPVwibG9hZGluZ1wiXG4gIFtzY3JvbGxhYmxlXT1cInNjcm9sbGFibGVcIlxuICBbc2Nyb2xsSGVpZ2h0XT1cInNjcm9sbEhlaWdodFwiXG4gIFtsYXp5XT1cImxhenlcIlxuICBbbGF6eUxvYWRPbkluaXRdPVwibGF6eUxvYWRPbkluaXRcIlxuICBbdmlydHVhbFNjcm9sbF09XCJ2aXJ0dWFsU2Nyb2xsXCJcbiAgW3ZpcnR1YWxTY3JvbGxJdGVtU2l6ZV09XCJ2aXJ0dWFsU2Nyb2xsSXRlbVNpemVcIlxuICBbdmlydHVhbFNjcm9sbE9wdGlvbnNdPVwieyBudW1Ub2xlcmF0ZWRJdGVtczogbnVtVG9sZXJhdGVkSXRlbXMgfVwiXG4gIFtwYWdpbmF0b3JdPVwicGFnaW5hdG9yXCJcbiAgW3Nob3dDdXJyZW50UGFnZVJlcG9ydF09XCJ0cnVlXCJcbiAgW2Fsd2F5c1Nob3dQYWdpbmF0b3JdPVwiYWx3YXlzU2hvd1BhZ2luYXRvclwiXG4gIFtyb3dzXT1cInJvd3NcIlxuICBbZmlyc3RdPVwiZmlyc3RcIlxuICBbdG90YWxSZWNvcmRzXT1cInRvdGFsUmVjb3Jkc1wiXG4gIFtyZXNldFBhZ2VPblNvcnRdPVwicmVzZXRQYWdlT25Tb3J0XCJcbiAgY3VycmVudFBhZ2VSZXBvcnRUZW1wbGF0ZT1cIntmaXJzdH0gLSB7bGFzdH0gb2Yge3RvdGFsUmVjb3Jkc31cIlxuICBbKHNlbGVjdGlvbildPVwic2VsZWN0ZWRSb3dzXCJcbiAgW21ldGFLZXlTZWxlY3Rpb25dPVwiZmFsc2VcIlxuICBbcm93SG92ZXJdPVwicm93SG92ZXJcIlxuICBbY3VzdG9tU29ydF09XCJjdXN0b21Tb3J0XCJcbiAgW3NvcnRNb2RlXT1cInNvcnRNb2RlXCJcbiAgW2V4cG9ydEZpbGVuYW1lXT1cImV4cG9ydEZpbGVuYW1lXCJcbiAgW2NzdlNlcGFyYXRvcl09XCJjc3ZTZXBhcmF0b3JcIlxuICAob25QYWdlKT1cIm9uUGFnZUNoYW5nZSgkZXZlbnQpXCJcbiAgKG9uTGF6eUxvYWQpPVwib25MYXp5TG9hZGVkKCRldmVudClcIlxuICAoc29ydEZ1bmN0aW9uKT1cIm9uU29ydEZ1bmN0aW9uKCRldmVudClcIlxuICAob25Tb3J0KT1cIm9uU29ydCgkZXZlbnQpXCJcbiAgKG9uRmlsdGVyKT1cIm9uRmlsdGVyKCRldmVudClcIlxuICAob25Sb3dSZW9yZGVyKT1cIm9uUm93UmVvcmRlcigkZXZlbnQpXCI+XG4gIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJjYXB0aW9uXCIgKm5nSWY9XCJoYXNUb29sYmFyXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRvb2xiYXJUZW1wbGF0ZVwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRvb2xiYXJUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhdG9vbGJhclRlbXBsYXRlXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY3BzLXRhYmxlLXRiYXItbGVmdFwiPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwidG9vbGJhckljb25cIiBjbGFzcz1cImNwcy10YWJsZS10YmFyLWljb25cIj5cbiAgICAgICAgICA8Y3BzLWljb24gW2ljb25dPVwidG9vbGJhckljb25cIiBbY29sb3JdPVwidG9vbGJhckljb25Db2xvclwiPjwvY3BzLWljb24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY3BzLXRhYmxlLXRiYXItdGl0bGVcIj57eyB0b29sYmFyVGl0bGUgfX08L2Rpdj5cbiAgICAgICAgPGRpdiAqbmdJZj1cInNob3dHbG9iYWxGaWx0ZXJcIiBjbGFzcz1cImNwcy10YWJsZS10YmFyLWdsb2JhbC1maWx0ZXJcIj5cbiAgICAgICAgICA8Y3BzLWlucHV0XG4gICAgICAgICAgICAjZ2xvYmFsRmlsdGVyQ29tcFxuICAgICAgICAgICAgcHJlZml4SWNvbj1cInNlYXJjaFwiXG4gICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZ2xvYmFsRmlsdGVyUGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgKHZhbHVlQ2hhbmdlZCk9XCJvbkZpbHRlckdsb2JhbCgkZXZlbnQpXCJcbiAgICAgICAgICAgIFtjbGVhcmFibGVdPVwidHJ1ZVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwibG9hZGluZ1wiXG4gICAgICAgICAgICBbYXBwZWFyYW5jZV09XCJ0b29sYmFyU2l6ZSA9PT0gJ3NtYWxsJyA/ICd1bmRlcmxpbmVkJyA6ICdvdXRsaW5lZCdcIlxuICAgICAgICAgICAgW2hpZGVEZXRhaWxzXT1cInRydWVcIj5cbiAgICAgICAgICA8L2Nwcy1pbnB1dD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjcHMtdGFibGUtdGJhci1yaWdodFwiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgKm5nSWY9XCJzaG93UmVtb3ZlQnRuT25TZWxlY3QgJiYgc2VsZWN0ZWRSb3dzLmxlbmd0aCA+IDBcIlxuICAgICAgICAgIGNsYXNzPVwiY3BzLXRhYmxlLXRiYXItYnRuLW9uLXNlbGVjdFwiPlxuICAgICAgICAgIDxjcHMtYnV0dG9uXG4gICAgICAgICAgICBsYWJlbD1cIlJlbW92ZVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwicmVtb3ZlQnRuT25TZWxlY3REaXNhYmxlZFwiXG4gICAgICAgICAgICBjb2xvcj1cInByZXBhcmVkXCJcbiAgICAgICAgICAgIHR5cGU9XCJib3JkZXJsZXNzXCJcbiAgICAgICAgICAgIGljb249XCJyZW1vdmVcIlxuICAgICAgICAgICAgW3NpemVdPVwidG9vbGJhclNpemVcIlxuICAgICAgICAgICAgKGNsaWNrZWQpPVwicmVtb3ZlU2VsZWN0ZWQoKVwiPlxuICAgICAgICAgIDwvY3BzLWJ1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAqbmdJZj1cInNob3dBZGRpdGlvbmFsQnRuT25TZWxlY3QgJiYgc2VsZWN0ZWRSb3dzLmxlbmd0aCA+IDBcIlxuICAgICAgICAgIGNsYXNzPVwiY3BzLXRhYmxlLXRiYXItYnRuLW9uLXNlbGVjdFwiPlxuICAgICAgICAgIDxjcHMtYnV0dG9uXG4gICAgICAgICAgICBbbGFiZWxdPVwiYWRkaXRpb25hbEJ0bk9uU2VsZWN0VGl0bGVcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImFkZGl0aW9uYWxCdG5PblNlbGVjdERpc2FibGVkXCJcbiAgICAgICAgICAgIGNvbG9yPVwicHJlcGFyZWRcIlxuICAgICAgICAgICAgdHlwZT1cImJvcmRlcmxlc3NcIlxuICAgICAgICAgICAgW3NpemVdPVwidG9vbGJhclNpemVcIlxuICAgICAgICAgICAgKGNsaWNrZWQpPVwib25DbGlja0FkZGl0aW9uYWxCdG5PblNlbGVjdCgpXCI+XG4gICAgICAgICAgPC9jcHMtYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiAqbmdJZj1cInNob3dBY3Rpb25CdG5cIiBjbGFzcz1cImNwcy10YWJsZS10YmFyLWFjdGlvbi1idG5cIj5cbiAgICAgICAgICA8Y3BzLWJ1dHRvblxuICAgICAgICAgICAgW2xhYmVsXT1cImFjdGlvbkJ0blRpdGxlXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJhY3Rpb25CdG5EaXNhYmxlZFwiXG4gICAgICAgICAgICBjb2xvcj1cInByZXBhcmVkXCJcbiAgICAgICAgICAgIHR5cGU9XCJvdXRsaW5lZFwiXG4gICAgICAgICAgICBbc2l6ZV09XCJ0b29sYmFyU2l6ZVwiXG4gICAgICAgICAgICAoY2xpY2tlZCk9XCJvbkNsaWNrQWN0aW9uQnRuKClcIj5cbiAgICAgICAgICA8L2Nwcy1idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgKm5nSWY9XCJzaG93Q29sdW1uc1RvZ2dsZUJ0biAmJiBjb2x1bW5zLmxlbmd0aCA+IDBcIlxuICAgICAgICAgIGNsYXNzPVwiY3BzLXRhYmxlLXRiYXItY29sdG9nZ2xlLWJ0blwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwieyAnYnRuLWRpc2FibGVkJzogY29sdW1uc1RvZ2dsZUJ0bkRpc2FibGVkIH1cIj5cbiAgICAgICAgICA8Y3BzLWljb25cbiAgICAgICAgICAgIGljb249XCJjb2x1bW5zXCJcbiAgICAgICAgICAgIHNpemU9XCJub3JtYWxcIlxuICAgICAgICAgICAgW2NvbG9yXT1cIlxuICAgICAgICAgICAgICBjb2x1bW5zVG9nZ2xlQnRuRGlzYWJsZWQgPyAndGV4dC1saWdodGVzdCcgOiAncHJlcGFyZWQtbGlnaHRlbjEnXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uQ29sdW1uc1RvZ2dsZSgkZXZlbnQpXCI+PC9jcHMtaWNvbj5cbiAgICAgICAgICA8Y3BzLW1lbnUgI2NvbFRvZ2dsZU1lbnUgW3dpdGhBcnJvd109XCJmYWxzZVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNwcy10YWJsZS1jb2x0b2dnbGUtbWVudVwiPlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjcHMtdGFibGUtY29sdG9nZ2xlLW1lbnUtaXRlbSBzZWxlY3QtYWxsLW9wdGlvblwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmFsbHNlbGVjdGVkXT1cInNlbGVjdGVkQ29sdW1ucy5sZW5ndGggPT09IGNvbHVtbnMubGVuZ3RoXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlQWxsQ29sdW1ucygpXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcHMtdGFibGUtY29sdG9nZ2xlLW1lbnUtaXRlbS1sZWZ0XCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNwcy10YWJsZS1jb2x0b2dnbGUtbWVudS1pdGVtLWNoZWNrXCI+IDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3BzLXRhYmxlLWNvbHRvZ2dsZS1tZW51LWl0ZW0tbGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICA+U2hvdyBhbGwgY29sdW1uczwvc3BhblxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgY29sIG9mIGNvbHVtbnNcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY3BzLXRhYmxlLWNvbHRvZ2dsZS1tZW51LWl0ZW1cIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvblNlbGVjdENvbHVtbihjb2wpXCJcbiAgICAgICAgICAgICAgICBbY2xhc3Muc2VsZWN0ZWRdPVwiaXNDb2x1bW5TZWxlY3RlZChjb2wpXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcHMtdGFibGUtY29sdG9nZ2xlLW1lbnUtaXRlbS1sZWZ0XCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNwcy10YWJsZS1jb2x0b2dnbGUtbWVudS1pdGVtLWNoZWNrXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcHMtdGFibGUtY29sdG9nZ2xlLW1lbnUtaXRlbS1sYWJlbFwiPnt7XG4gICAgICAgICAgICAgICAgICAgIGNvbFtjb2xIZWFkZXJOYW1lXVxuICAgICAgICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvY3BzLW1lbnU+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgKm5nSWY9XCJzaG93RXhwb3J0QnRuXCJcbiAgICAgICAgICBjbGFzcz1cImNwcy10YWJsZS10YmFyLWV4cG9ydC1idG5cIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2J0bi1kaXNhYmxlZCc6IGV4cG9ydEJ0bkRpc2FibGVkIH1cIj5cbiAgICAgICAgICA8Y3BzLWljb25cbiAgICAgICAgICAgIGljb249XCJleHBvcnRcIlxuICAgICAgICAgICAgc2l6ZT1cIjIwXCJcbiAgICAgICAgICAgIFtjb2xvcl09XCJleHBvcnRCdG5EaXNhYmxlZCA/ICd0ZXh0LWxpZ2h0JyA6ICdwcmVwYXJlZC1saWdodGVuMSdcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uRXhwb3J0RGF0YSgkZXZlbnQpXCI+PC9jcHMtaWNvbj5cbiAgICAgICAgICA8Y3BzLW1lbnVcbiAgICAgICAgICAgICNleHBvcnRNZW51XG4gICAgICAgICAgICBbaXRlbXNdPVwiZXhwb3J0TWVudUl0ZW1zXCJcbiAgICAgICAgICAgIFtjb21wcmVzc2VkXT1cInRydWVcIlxuICAgICAgICAgICAgW3dpdGhBcnJvd109XCJmYWxzZVwiPlxuICAgICAgICAgIDwvY3BzLW1lbnU+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgKm5nSWY9XCJzaG93RGF0YVJlbG9hZEJ0blwiXG4gICAgICAgICAgY2xhc3M9XCJjcHMtdGFibGUtdGJhci1yZWxvYWQtYnRuXCJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7ICdidG4tZGlzYWJsZWQnOiBkYXRhUmVsb2FkQnRuRGlzYWJsZWQgfVwiPlxuICAgICAgICAgIDxjcHMtaWNvblxuICAgICAgICAgICAgaWNvbj1cInJlZnJlc2hcIlxuICAgICAgICAgICAgc2l6ZT1cIjE4XCJcbiAgICAgICAgICAgIFtjb2xvcl09XCJkYXRhUmVsb2FkQnRuRGlzYWJsZWQgPyAndGV4dC1saWdodCcgOiAncHJlcGFyZWQtbGlnaHRlbjEnXCJcbiAgICAgICAgICAgIChjbGljayk9XCJvblJlbG9hZERhdGEoKVwiPlxuICAgICAgICAgIDwvY3BzLWljb24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvbmctdGVtcGxhdGU+XG5cbiAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImhlYWRlclwiICpuZ0lmPVwibmVzdGVkSGVhZGVyVGVtcGxhdGVcIiBsZXQtY29sdW1ucz5cbiAgICA8bmctY29udGFpbmVyXG4gICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgbmVzdGVkSGVhZGVyVGVtcGxhdGU7XG4gICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAkaW1wbGljaXQ6IGNvbHVtbnMsXG4gICAgICAgIH1cbiAgICAgIFwiPjwvbmctY29udGFpbmVyPlxuICA8L25nLXRlbXBsYXRlPlxuXG4gIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJoZWFkZXJcIiAqbmdJZj1cIiFuZXN0ZWRIZWFkZXJUZW1wbGF0ZVwiIGxldC1jb2x1bW5zPlxuICAgIDx0cj5cbiAgICAgIDx0aCBzdHlsZT1cIndpZHRoOiAzcmVtXCIgKm5nSWY9XCJyb3dFeHBhbnNpb25UZW1wbGF0ZVwiPjwvdGg+XG4gICAgICA8dGggc3R5bGU9XCJ3aWR0aDogM3JlbVwiICpuZ0lmPVwicmVvcmRlcmFibGVSb3dzXCI+PC90aD5cbiAgICAgIDx0aCBzdHlsZT1cIndpZHRoOiA0cmVtXCIgKm5nSWY9XCJzZWxlY3RhYmxlXCI+XG4gICAgICAgIDxwLXRhYmxlSGVhZGVyQ2hlY2tib3g+PC9wLXRhYmxlSGVhZGVyQ2hlY2tib3g+XG4gICAgICA8L3RoPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhlYWRlclRlbXBsYXRlXCI+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgaGVhZGVyVGVtcGxhdGU7XG4gICAgICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICAgICRpbXBsaWNpdDogY29sdW1ucyxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFoZWFkZXJUZW1wbGF0ZSAmJiBjb2x1bW5zLmxlbmd0aCA+IDBcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNvcnRhYmxlXCI+XG4gICAgICAgICAgPHRoICpuZ0Zvcj1cImxldCBjb2wgb2YgY29sdW1uc1wiIFtjcHNUQ29sU29ydGFibGVdPVwiY29sW2NvbEZpZWxkTmFtZV1cIj5cbiAgICAgICAgICAgIHt7IGNvbFtjb2xIZWFkZXJOYW1lXSB9fVxuICAgICAgICAgIDwvdGg+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXNvcnRhYmxlXCI+XG4gICAgICAgICAgPHRoICpuZ0Zvcj1cImxldCBjb2wgb2YgY29sdW1uc1wiPlxuICAgICAgICAgICAge3sgY29sW2NvbEhlYWRlck5hbWVdIH19XG4gICAgICAgICAgPC90aD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDx0aFxuICAgICAgICBzdHlsZT1cIndpZHRoOiAycmVtXCJcbiAgICAgICAgY2xhc3M9XCJjcHMtdGFibGUtcm93LW1lbnUtY2VsbFwiXG4gICAgICAgICpuZ0lmPVwic2hvd1Jvd01lbnVcIj48L3RoPlxuICAgIDwvdHI+XG4gIDwvbmctdGVtcGxhdGU+XG5cbiAgPG5nLXRlbXBsYXRlXG4gICAgcFRlbXBsYXRlPVwiYm9keVwiXG4gICAgbGV0LXJvd0RhdGFcbiAgICBsZXQtY29sdW1ucz1cImNvbHVtbnNcIlxuICAgIGxldC1pdGVtXG4gICAgbGV0LXJvd0luZGV4PVwicm93SW5kZXhcIlxuICAgIGxldC1leHBhbmRlZD1cImV4cGFuZGVkXCI+XG4gICAgPHRyXG4gICAgICBbcFJlb3JkZXJhYmxlUm93XT1cInJvd0luZGV4XCJcbiAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgJ2Nwcy10YWJsZS1yb3ctc2VsZWN0ZWQnOiBzZWxlY3RhYmxlICYmIHByaW1lbmdUYWJsZS5pc1NlbGVjdGVkKGl0ZW0pXG4gICAgICB9XCI+XG4gICAgICA8dGQgKm5nSWY9XCJyb3dFeHBhbnNpb25UZW1wbGF0ZVwiIGNsYXNzPVwiY3BzLXRhYmxlLXJvdy1jaGV2cm9uLWNlbGxcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiY3BzLXRhYmxlLXJvdy1jaGV2cm9uXCJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7ICdjcHMtdGFibGUtcm93LWNoZXZyb24tZXhwYW5kZWQnOiBleHBhbmRlZCB9XCI+XG4gICAgICAgICAgPGNwcy1pY29uXG4gICAgICAgICAgICBpY29uPVwiY2hldnJvbi1kb3duXCJcbiAgICAgICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgICBjb2xvcj1cInRleHQtZGFya1wiXG4gICAgICAgICAgICBbcFJvd1RvZ2dsZXJdPVwiaXRlbVwiPlxuICAgICAgICAgIDwvY3BzLWljb24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC90ZD5cbiAgICAgIDx0ZCAqbmdJZj1cInJlb3JkZXJhYmxlUm93c1wiIGNsYXNzPVwiY3BzLXRhYmxlLXJvdy1kcmFnLWhhbmRsZS1jZWxsXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiY3BzLXRhYmxlLXJvdy1kcmFnLWhhbmRsZVwiIHBSZW9yZGVyYWJsZVJvd0hhbmRsZT7imLA8L3NwYW4+XG4gICAgICA8L3RkPlxuICAgICAgPHRkICpuZ0lmPVwic2VsZWN0YWJsZVwiPlxuICAgICAgICA8cC10YWJsZUNoZWNrYm94IFt2YWx1ZV09XCJpdGVtXCI+PC9wLXRhYmxlQ2hlY2tib3g+XG4gICAgICA8L3RkPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImJvZHlUZW1wbGF0ZVwiPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgIGJvZHlUZW1wbGF0ZTtcbiAgICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgICAgJGltcGxpY2l0OiBpdGVtLFxuICAgICAgICAgICAgICByb3dJbmRleDogcm93SW5kZXgsXG4gICAgICAgICAgICAgIGNvbHVtbnM6IGNvbHVtbnMsXG4gICAgICAgICAgICAgIHJvd0RhdGE6IHJvd0RhdGFcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBcIj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhYm9keVRlbXBsYXRlXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW5zLmxlbmd0aCA+IDBcIj5cbiAgICAgICAgICA8dGQgKm5nRm9yPVwibGV0IGNvbCBvZiBjb2x1bW5zXCI+XG4gICAgICAgICAgICB7eyByb3dEYXRhW2NvbFtjb2xGaWVsZE5hbWVdXSB9fVxuICAgICAgICAgIDwvdGQ+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8dGQgKm5nSWY9XCJzaG93Um93TWVudVwiIGNsYXNzPVwiY3BzLXRhYmxlLXJvdy1tZW51LWNlbGxcIj5cbiAgICAgICAgPHRhYmxlLXJvdy1tZW51XG4gICAgICAgICAgKGVkaXRSb3dCdG5DbGlja2VkKT1cIm9uRWRpdFJvd0NsaWNrZWQoaXRlbSlcIlxuICAgICAgICAgIChyZW1vdmVSb3dCdG5DbGlja2VkKT1cIm9uUmVtb3ZlUm93Q2xpY2tlZChpdGVtKVwiPjwvdGFibGUtcm93LW1lbnU+XG4gICAgICA8L3RkPlxuICAgIDwvdHI+XG4gIDwvbmctdGVtcGxhdGU+XG4gIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJyb3dleHBhbnNpb25cIiAqbmdJZj1cInJvd0V4cGFuc2lvblRlbXBsYXRlXCIgbGV0LWl0ZW0+XG4gICAgPHRyIGNsYXNzPVwiY3BzLXRhYmxlLXJvdy1leHBhbmRlZC1jb250ZW50XCI+XG4gICAgICA8dGQgY29sc3Bhbj1cIjEwMFwiPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgIHJvd0V4cGFuc2lvblRlbXBsYXRlO1xuICAgICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgICAkaW1wbGljaXQ6IGl0ZW1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICBcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvdGQ+XG4gICAgPC90cj5cbiAgPC9uZy10ZW1wbGF0ZT5cbiAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImVtcHR5bWVzc2FnZVwiPlxuICAgIDx0cj5cbiAgICAgIDx0ZFxuICAgICAgICBjb2xzcGFuPVwiMTAwXCJcbiAgICAgICAgY2xhc3M9XCJjcHMtdGFibGUtZW1wdHktbWVzc2FnZS10ZFwiXG4gICAgICAgIFtuZ1N0eWxlXT1cInsgaGVpZ2h0OiBlbXB0eUJvZHlIZWlnaHQgfVwiPlxuICAgICAgICB7eyBlbXB0eU1lc3NhZ2UgfX1cbiAgICAgIDwvdGQ+XG4gICAgPC90cj5cbiAgPC9uZy10ZW1wbGF0ZT5cbiAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImxvYWRpbmdpY29uXCI+XG4gICAgPGNwcy1sb2FkZXIgW2Z1bGxTY3JlZW5dPVwiZmFsc2VcIiBvcGFjaXR5PVwiMFwiPjwvY3BzLWxvYWRlcj5cbiAgPC9uZy10ZW1wbGF0ZT5cbiAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cInBhZ2luYXRvcmxlZnRcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY3BzLXRhYmxlLXBhZ2luYXRvci1pdG1zLXBlci1wYWdlXCI+XG4gICAgICA8c3BhbiBjbGFzcz1cImNwcy10YWJsZS1wYWdpbmF0b3ItaXRlbXMtcGVyLXBhZ2UtdGl0bGVcIlxuICAgICAgICA+Um93cyBwZXIgcGFnZTpcbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxjcHMtc2VsZWN0XG4gICAgICAgIFtvcHRpb25zXT1cInJvd09wdGlvbnNcIlxuICAgICAgICBbaGlkZURldGFpbHNdPVwidHJ1ZVwiXG4gICAgICAgIFsobmdNb2RlbCldPVwicm93c1wiXG4gICAgICAgICh2YWx1ZUNoYW5nZWQpPVwib25Sb3dzUGVyUGFnZUNoYW5nZWQoKVwiXG4gICAgICAgIFtyZXR1cm5PYmplY3RdPVwiZmFsc2VcIlxuICAgICAgICBvcHRpb25zQ2xhc3M9XCJjcHMtcGFnaW5hdG9yLXBhZ2Utb3B0aW9uc1wiPlxuICAgICAgPC9jcHMtc2VsZWN0PlxuICAgIDwvZGl2PlxuICA8L25nLXRlbXBsYXRlPlxuPC9wLXRhYmxlPlxuIl19
586
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3BzLXRhYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nwcy11aS1raXQvc3JjL2xpYi9jb21wb25lbnRzL2Nwcy10YWJsZS9jcHMtdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY3BzLXVpLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvY3BzLXRhYmxlL2Nwcy10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBR04sU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWpFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBZSxNQUFNLGdDQUFnQyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQ25HLE9B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N0IsTUFBTTtnQkFDRyw0QkFBNEI7c0JBQXJDLE1BQU07Z0JBTUcsa0JBQWtCO3NCQUEzQixNQUFNO2dCQUdBLGVBQWU7c0JBRHJCLFlBQVk7dUJBQUMsU0FBUyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFJbkMsY0FBYztzQkFEcEIsWUFBWTt1QkFBQyxRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUlsQyxvQkFBb0I7c0JBRDFCLFlBQVk7dUJBQUMsY0FBYyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFJeEMsWUFBWTtzQkFEbEIsWUFBWTt1QkFBQyxNQUFNLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUloQyxvQkFBb0I7c0JBRDFCLFlBQVk7dUJBQUMsY0FBYyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFJL0MsWUFBWTtzQkFEWCxTQUFTO3VCQUFDLGNBQWMsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBSTNDLGdCQUFnQjtzQkFEZixTQUFTO3VCQUFDLGtCQUFrQjtnQkFJN0IsVUFBVTtzQkFEVCxTQUFTO3VCQUFDLFlBQVk7Z0JBSXZCLGFBQWE7c0JBRFosU0FBUzt1QkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3Q2hlY2tlZCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFRhYmxlLCBUYWJsZVNlcnZpY2UsIFRhYmxlTW9kdWxlIH0gZnJvbSAncHJpbWVuZy90YWJsZSc7XG5pbXBvcnQgeyBTb3J0RXZlbnQgfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQgeyBDcHNJbnB1dENvbXBvbmVudCB9IGZyb20gJy4uL2Nwcy1pbnB1dC9jcHMtaW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7IENwc0J1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4uL2Nwcy1idXR0b24vY3BzLWJ1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ3BzU2VsZWN0Q29tcG9uZW50IH0gZnJvbSAnLi4vY3BzLXNlbGVjdC9jcHMtc2VsZWN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDcHNJY29uQ29tcG9uZW50IH0gZnJvbSAnLi4vY3BzLWljb24vY3BzLWljb24uY29tcG9uZW50JztcbmltcG9ydCB7IENwc01lbnVDb21wb25lbnQsIENwc01lbnVJdGVtIH0gZnJvbSAnLi4vY3BzLW1lbnUvY3BzLW1lbnUuY29tcG9uZW50JztcbmltcG9ydCB7IENwc0xvYWRlckNvbXBvbmVudCB9IGZyb20gJy4uL2Nwcy1sb2FkZXIvY3BzLWxvYWRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGFibGVSb3dNZW51Q29tcG9uZW50IH0gZnJvbSAnLi90YWJsZS1yb3ctbWVudS90YWJsZS1yb3ctbWVudS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ3BzVGFibGVDb2x1bW5Tb3J0YWJsZURpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9jcHMtdGFibGUtY29sdW1uLXNvcnRhYmxlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBUYWJsZVVuc29ydERpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9pbnRlcm5hbC90YWJsZS11bnNvcnQuZGlyZWN0aXZlJztcbmltcG9ydCB7IGNvbnZlcnRTaXplIH0gZnJvbSAnLi4vLi4vdXRpbHMvaW50ZXJuYWwvc2l6ZS11dGlscyc7XG5pbXBvcnQgeyBmaW5kLCBpc0VxdWFsIH0gZnJvbSAnbG9kYXNoLWVzJztcblxuLy8gaW1wb3J0IGpzUERGIGZyb20gJ2pzcGRmJztcbi8vIGltcG9ydCAnanNwZGYtYXV0b3RhYmxlJztcblxuZXhwb3J0IGZ1bmN0aW9uIHRhYmxlRmFjdG9yeSh0YWJsZUNvbXBvbmVudDogQ3BzVGFibGVDb21wb25lbnQpIHtcbiAgcmV0dXJuIHRhYmxlQ29tcG9uZW50LnByaW1lbmdUYWJsZTtcbn1cblxuZXhwb3J0IHR5cGUgQ3BzVGFibGVFeHBvcnRGb3JtYXQgPSAnY3N2JyB8ICd4bHN4JzsgLy8gfCAncGRmJztcbmV4cG9ydCB0eXBlIENwc1RhYmxlU2l6ZSA9ICdzbWFsbCcgfCAnbm9ybWFsJyB8ICdsYXJnZSc7XG5leHBvcnQgdHlwZSBDcHNUYWJsZVRvb2xiYXJTaXplID0gJ3NtYWxsJyB8ICdub3JtYWwnO1xuZXhwb3J0IHR5cGUgQ3BzVGFibGVTb3J0TW9kZSA9ICdzaW5nbGUnIHwgJ211bHRpcGxlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY3BzLXRhYmxlJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGltcG9ydHM6IFtcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgVGFibGVNb2R1bGUsXG4gICAgVGFibGVVbnNvcnREaXJlY3RpdmUsXG4gICAgQ3BzSW5wdXRDb21wb25lbnQsXG4gICAgQ3BzQnV0dG9uQ29tcG9uZW50LFxuICAgIENwc1NlbGVjdENvbXBvbmVudCxcbiAgICBDcHNJY29uQ29tcG9uZW50LFxuICAgIENwc01lbnVDb21wb25lbnQsXG4gICAgQ3BzTG9hZGVyQ29tcG9uZW50LFxuICAgIFRhYmxlUm93TWVudUNvbXBvbmVudCxcbiAgICBDcHNUYWJsZUNvbHVtblNvcnRhYmxlRGlyZWN0aXZlXG4gIF0sXG4gIHRlbXBsYXRlVXJsOiAnLi9jcHMtdGFibGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jcHMtdGFibGUuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgVGFibGVTZXJ2aWNlLFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IFRhYmxlLFxuICAgICAgdXNlRmFjdG9yeTogdGFibGVGYWN0b3J5LFxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVzZS1iZWZvcmUtZGVmaW5lXG4gICAgICBkZXBzOiBbQ3BzVGFibGVDb21wb25lbnRdXG4gICAgfVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIENwc1RhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdDaGVja2VkLCBPbkNoYW5nZXMge1xuICBASW5wdXQoKSBkYXRhOiBhbnlbXSA9IFtdO1xuICBASW5wdXQoKSBjb2x1bW5zOiB7IFtrZXk6IHN0cmluZ106IGFueSB9W10gPSBbXTtcbiAgQElucHV0KCkgY29sSGVhZGVyTmFtZSA9ICdoZWFkZXInO1xuICBASW5wdXQoKSBjb2xGaWVsZE5hbWUgPSAnZmllbGQnO1xuXG4gIEBJbnB1dCgpIHN0cmlwZWQgPSB0cnVlO1xuICBASW5wdXQoKSBib3JkZXJlZCA9IHRydWU7XG4gIEBJbnB1dCgpIHNpemU6IENwc1RhYmxlU2l6ZSA9ICdub3JtYWwnO1xuICBASW5wdXQoKSBzZWxlY3RhYmxlID0gZmFsc2U7XG4gIEBJbnB1dCgpIHJvd0hvdmVyID0gdHJ1ZTtcbiAgQElucHV0KCkgZGF0YUtleSA9ICcnOyAvLyBmaWVsZCwgdGhhdCB1bmlxdWVseSBpZGVudGlmaWVzIGEgcmVjb3JkIGluIGRhdGEgKG5lZWRlZCBmb3IgZXhwYW5kYWJsZSByb3dzKVxuICBASW5wdXQoKSBzaG93Um93TWVudSA9IGZhbHNlO1xuICBASW5wdXQoKSByZW9yZGVyYWJsZVJvd3MgPSBmYWxzZTtcbiAgQElucHV0KCkgbG9hZGluZyA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIHRhYmxlU3R5bGUgPSB1bmRlZmluZWQ7XG4gIEBJbnB1dCgpIHRhYmxlU3R5bGVDbGFzcyA9ICcnO1xuXG4gIEBJbnB1dCgpIHNvcnRhYmxlID0gZmFsc2U7IC8vIG1ha2VzIGFsbCBzb3J0YWJsZSBpZiBjb2x1bW5zIGFyZSBwcm92aWRlZFxuICBASW5wdXQoKSBzb3J0TW9kZTogQ3BzVGFibGVTb3J0TW9kZSA9ICdzaW5nbGUnO1xuICBASW5wdXQoKSBjdXN0b21Tb3J0ID0gZmFsc2U7XG5cbiAgQElucHV0KCkgaGFzVG9vbGJhciA9IHRydWU7XG4gIEBJbnB1dCgpIHRvb2xiYXJTaXplOiBDcHNUYWJsZVRvb2xiYXJTaXplID0gJ25vcm1hbCc7XG4gIEBJbnB1dCgpIHRvb2xiYXJUaXRsZSA9ICcnO1xuICBASW5wdXQoKSB0b29sYmFySWNvbiA9ICcnO1xuICBASW5wdXQoKSB0b29sYmFySWNvbkNvbG9yID0gJyc7XG5cbiAgQElucHV0KCkgc2Nyb2xsYWJsZSA9IHRydWU7XG4gIEBJbnB1dCgpIHNjcm9sbEhlaWdodCA9ICcnOyAvLyAnZmxleCcgb3IgdmFsdWUrJ3B4J1xuICBASW5wdXQoKSB2aXJ0dWFsU2Nyb2xsID0gZmFsc2U7IC8vIHdvcmtzIG9ubHkgaWYgc2Nyb2xsYWJsZSBpcyB0cnVlXG4gIEBJbnB1dCgpIG51bVRvbGVyYXRlZEl0ZW1zID0gMTA7XG5cbiAgQElucHV0KCkgcGFnaW5hdG9yID0gZmFsc2U7XG4gIEBJbnB1dCgpIGFsd2F5c1Nob3dQYWdpbmF0b3IgPSB0cnVlO1xuICBASW5wdXQoKSByb3dzUGVyUGFnZU9wdGlvbnM6IG51bWJlcltdID0gW107XG4gIEBJbnB1dCgpIGZpcnN0ID0gMDtcbiAgQElucHV0KCkgcm93cyA9IDA7XG4gIEBJbnB1dCgpIHJlc2V0UGFnZU9uUm93c0NoYW5nZSA9IGZhbHNlO1xuICBASW5wdXQoKSByZXNldFBhZ2VPblNvcnQgPSB0cnVlO1xuICBASW5wdXQoKSB0b3RhbFJlY29yZHMgPSAwO1xuXG4gIEBJbnB1dCgpIGVtcHR5TWVzc2FnZSA9ICdObyBkYXRhJztcbiAgQElucHV0KCkgZW1wdHlCb2R5SGVpZ2h0OiBudW1iZXIgfCBzdHJpbmcgPSAnJztcblxuICBASW5wdXQoKSBsYXp5ID0gZmFsc2U7XG4gIEBJbnB1dCgpIGxhenlMb2FkT25Jbml0ID0gdHJ1ZTtcblxuICBASW5wdXQoKSBzaG93R2xvYmFsRmlsdGVyID0gZmFsc2U7XG4gIEBJbnB1dCgpIGdsb2JhbEZpbHRlclBsYWNlaG9sZGVyID0gJ1NlYXJjaCc7XG4gIEBJbnB1dCgpIGdsb2JhbEZpbHRlckZpZWxkczogc3RyaW5nW10gPSBbXTtcbiAgQElucHV0KCkgY2xlYXJHbG9iYWxGaWx0ZXJPbkxvYWRpbmcgPSBmYWxzZTtcblxuICBASW5wdXQoKSBzaG93UmVtb3ZlQnRuT25TZWxlY3QgPSB0cnVlO1xuICBASW5wdXQoKSByZW1vdmVCdG5PblNlbGVjdERpc2FibGVkID0gZmFsc2U7XG5cbiAgQElucHV0KCkgc2hvd0FkZGl0aW9uYWxCdG5PblNlbGVjdCA9IGZhbHNlO1xuICBASW5wdXQoKSBhZGRpdGlvbmFsQnRuT25TZWxlY3RUaXRsZSA9ICdTZWxlY3QgYWN0aW9uJztcbiAgQElucHV0KCkgYWRkaXRpb25hbEJ0bk9uU2VsZWN0RGlzYWJsZWQgPSBmYWxzZTtcblxuICBASW5wdXQoKSBzaG93QWN0aW9uQnRuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGFjdGlvbkJ0blRpdGxlID0gJ0FjdGlvbic7XG4gIEBJbnB1dCgpIGFjdGlvbkJ0bkRpc2FibGVkID0gZmFsc2U7XG5cbiAgQElucHV0KCkgc2hvd0V4cG9ydEJ0biA9IGZhbHNlO1xuICBASW5wdXQoKSBleHBvcnRCdG5EaXNhYmxlZCA9IGZhbHNlO1xuICBASW5wdXQoKSBleHBvcnRGaWxlbmFtZSA9ICdkb3dubG9hZCc7XG4gIEBJbnB1dCgpIGNzdlNlcGFyYXRvciA9ICcsJztcblxuICBASW5wdXQoKSBzaG93RGF0YVJlbG9hZEJ0biA9IGZhbHNlO1xuICBASW5wdXQoKSBkYXRhUmVsb2FkQnRuRGlzYWJsZWQgPSBmYWxzZTtcblxuICBASW5wdXQoKSBzaG93Q29sdW1uc1RvZ2dsZUJ0biA9IGZhbHNlOyAvLyBpZiBleHRlcm5hbCBib2R5IHRlbXBsYXRlIGlzIHByb3ZpZGVkLCB1c2UgY29sdW1uc1NlbGVjdGVkIGV2ZW50IGVtaXR0ZXJcbiAgQElucHV0KCkgY29sdW1uc1RvZ2dsZUJ0bkRpc2FibGVkID0gZmFsc2U7XG4gIEBJbnB1dCgpIGluaXRpYWxDb2x1bW5zOiB7IFtrZXk6IHN0cmluZ106IGFueSB9W10gPSBbXTsgLy8gaWYgbm90IHByb3ZpZGVkLCBhbGwgY29sdW1ucyBhcmUgaW5pdGlhbGx5IHZpc2libGVcblxuICBAT3V0cHV0KCkgc2VsZWN0aW9uQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55W10+KCk7XG4gIEBPdXRwdXQoKSBhY3Rpb25CdG5DbGlja2VkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgZWRpdFJvd0J0bkNsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIHJvd3NSZW1vdmVkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnlbXT4oKTtcbiAgQE91dHB1dCgpIHBhZ2VDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBzb3J0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIGZpbHRlcmVkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSByb3dzUmVvcmRlcmVkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBjb2x1bW5zU2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHsgW2tleTogc3RyaW5nXTogYW55IH1bXT4oKTtcbiAgQE91dHB1dCgpIGxhenlMb2FkZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIGRhdGFSZWxvYWRCdG5DbGlja2VkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBhZGRpdGlvbmFsQnRuT25TZWxlY3RDbGlja2VkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnlbXT4oKTtcbiAgLyoqXG4gICAqIEEgZnVuY3Rpb24gdG8gaW1wbGVtZW50IGN1c3RvbSBzb3J0aW5nLiBjdXN0b21Tb3J0IG11c3QgYmUgdHJ1ZS5cbiAgICogQHBhcmFtIHthbnl9IGFueSAtIHNvcnQgbWV0YS5cbiAgICogQGdyb3VwIEVtaXRzXG4gICAqL1xuICBAT3V0cHV0KCkgY3VzdG9tU29ydEZ1bmN0aW9uOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIEBDb250ZW50Q2hpbGQoJ3Rvb2xiYXInLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgcHVibGljIHRvb2xiYXJUZW1wbGF0ZSE6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgQENvbnRlbnRDaGlsZCgnaGVhZGVyJywgeyBzdGF0aWM6IGZhbHNlIH0pXG4gIHB1YmxpYyBoZWFkZXJUZW1wbGF0ZSE6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgQENvbnRlbnRDaGlsZCgnbmVzdGVkSGVhZGVyJywgeyBzdGF0aWM6IGZhbHNlIH0pXG4gIHB1YmxpYyBuZXN0ZWRIZWFkZXJUZW1wbGF0ZSE6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgQENvbnRlbnRDaGlsZCgnYm9keScsIHsgc3RhdGljOiBmYWxzZSB9KVxuICBwdWJsaWMgYm9keVRlbXBsYXRlITogVGVtcGxhdGVSZWY8YW55PjtcblxuICBAQ29udGVudENoaWxkKCdyb3dleHBhbnNpb24nLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgcHVibGljIHJvd0V4cGFuc2lvblRlbXBsYXRlITogVGVtcGxhdGVSZWY8YW55PjtcblxuICBAVmlld0NoaWxkKCdwcmltZW5nVGFibGUnLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICBwcmltZW5nVGFibGUhOiBUYWJsZTtcblxuICBAVmlld0NoaWxkKCdnbG9iYWxGaWx0ZXJDb21wJylcbiAgZ2xvYmFsRmlsdGVyQ29tcCE6IENwc0lucHV0Q29tcG9uZW50O1xuXG4gIEBWaWV3Q2hpbGQoJ2V4cG9ydE1lbnUnKVxuICBleHBvcnRNZW51ITogQ3BzTWVudUNvbXBvbmVudDtcblxuICBAVmlld0NoaWxkKCdjb2xUb2dnbGVNZW51JylcbiAgY29sVG9nZ2xlTWVudSE6IENwc01lbnVDb21wb25lbnQ7XG5cbiAgc2VsZWN0ZWRSb3dzOiBhbnlbXSA9IFtdO1xuXG4gIHZpcnR1YWxTY3JvbGxJdGVtU2l6ZSA9IDA7XG5cbiAgcm93T3B0aW9uczogeyBsYWJlbDogc3RyaW5nOyB2YWx1ZTogbnVtYmVyIH1bXSA9IFtdO1xuXG4gIHNlbGVjdGVkQ29sdW1uczogeyBba2V5OiBzdHJpbmddOiBhbnkgfVtdID0gW107XG5cbiAgZXhwb3J0TWVudUl0ZW1zID0gW1xuICAgIHtcbiAgICAgIHRpdGxlOiAnQ1NWJyxcbiAgICAgIGljb246ICdjc3YnLFxuICAgICAgYWN0aW9uOiAoKSA9PiB7XG4gICAgICAgIHRoaXMuZXhwb3J0VGFibGUoJ2NzdicpO1xuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgdGl0bGU6ICdYTFNYJyxcbiAgICAgIGljb246ICd4bHMnLFxuICAgICAgYWN0aW9uOiAoKSA9PiB7XG4gICAgICAgIHRoaXMuZXhwb3J0VGFibGUoJ3hsc3gnKTtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8ge1xuICAgIC8vICAgdGl0bGU6ICdQREYnLFxuICAgIC8vICAgaWNvbjogJ3BkZicsXG4gICAgLy8gICBhY3Rpb246ICgpID0+IHtcbiAgICAvLyAgICAgdGhpcy5leHBvcnRUYWJsZSgncGRmJyk7XG4gICAgLy8gICB9XG4gICAgLy8gfVxuICBdIGFzIENwc01lbnVJdGVtW107XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVzZWxlc3MtY29uc3RydWN0b3JcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5lbXB0eUJvZHlIZWlnaHQgPSBjb252ZXJ0U2l6ZSh0aGlzLmVtcHR5Qm9keUhlaWdodCk7XG4gICAgaWYgKCF0aGlzLnNjcm9sbGFibGUpIHRoaXMudmlydHVhbFNjcm9sbCA9IGZhbHNlO1xuXG4gICAgaWYgKHRoaXMuc2hvd0FkZGl0aW9uYWxCdG5PblNlbGVjdCkgdGhpcy5zaG93UmVtb3ZlQnRuT25TZWxlY3QgPSBmYWxzZTtcblxuICAgIGlmICh0aGlzLnBhZ2luYXRvcikge1xuICAgICAgaWYgKHRoaXMucm93c1BlclBhZ2VPcHRpb25zLmxlbmd0aCA8IDEpXG4gICAgICAgIHRoaXMucm93c1BlclBhZ2VPcHRpb25zID0gWzUsIDEwLCAyNSwgNTBdO1xuXG4gICAgICBpZiAoIXRoaXMucm93cykgdGhpcy5yb3dzID0gdGhpcy5yb3dzUGVyUGFnZU9wdGlvbnNbMF07XG4gICAgICBlbHNlIHtcbiAgICAgICAgaWYgKCF0aGlzLnJvd3NQZXJQYWdlT3B0aW9ucy5pbmNsdWRlcyh0aGlzLnJvd3MpKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdyb3dzUGVyUGFnZU9wdGlvbnMgbXVzdCBpbmNsdWRlIHJvd3MnKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB0aGlzLnJvd09wdGlvbnMgPSB0aGlzLnJvd3NQZXJQYWdlT3B0aW9ucy5tYXAoKHYpID0+ICh7XG4gICAgICAgIGxhYmVsOiAnJyArIHYsXG4gICAgICAgIHZhbHVlOiB2XG4gICAgICB9KSk7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgdGhpcy5zaG93R2xvYmFsRmlsdGVyICYmXG4gICAgICB0aGlzLmdsb2JhbEZpbHRlckZpZWxkcz8ubGVuZ3RoIDwgMSAmJlxuICAgICAgdGhpcy5kYXRhPy5sZW5ndGggPiAwXG4gICAgKSB7XG4gICAgICB0aGlzLmdsb2JhbEZpbHRlckZpZWxkcyA9IE9iamVjdC5rZXlzKHRoaXMuZGF0YVswXSk7XG4gICAgfVxuXG4gICAgdGhpcy5zZWxlY3RlZENvbHVtbnMgPVxuICAgICAgdGhpcy5pbml0aWFsQ29sdW1ucy5sZW5ndGggPiAwID8gdGhpcy5pbml0aWFsQ29sdW1ucyA6IHRoaXMuY29sdW1ucztcbiAgfVxuXG4gIGdldCBzdHlsZUNsYXNzKCkge1xuICAgIGNvbnN0IGNsYXNzZXNMaXN0ID0gW107XG4gICAgc3dpdGNoICh0aGlzLnNpemUpIHtcbiAgICAgIGNhc2UgJ3NtYWxsJzpcbiAgICAgICAgY2xhc3Nlc0xpc3QucHVzaCgncC1kYXRhdGFibGUtc20nKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdsYXJnZSc6XG4gICAgICAgIGNsYXNzZXNMaXN0LnB1c2goJ3AtZGF0YXRhYmxlLWxnJyk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBpZiAodGhpcy5oYXNUb29sYmFyKSB7XG4gICAgICBzd2l0Y2ggKHRoaXMudG9vbGJhclNpemUpIHtcbiAgICAgICAgY2FzZSAnc21hbGwnOlxuICAgICAgICAgIGNsYXNzZXNMaXN0LnB1c2goJ2Nwcy10YmFyLXNtYWxsJyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ25vcm1hbCc6XG4gICAgICAgICAgY2xhc3Nlc0xpc3QucHVzaCgnY3BzLXRiYXItbm9ybWFsJyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc3RyaXBlZCkge1xuICAgICAgY2xhc3Nlc0xpc3QucHVzaCgncC1kYXRhdGFibGUtc3RyaXBlZCcpO1xuICAgIH1cbiAgICBpZiAodGhpcy5ib3JkZXJlZCkge1xuICAgICAgY2xhc3Nlc0xpc3QucHVzaCgncC1kYXRhdGFibGUtZ3JpZGxpbmVzJyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc2Nyb2xsSGVpZ2h0ICYmICF0aGlzLmxvYWRpbmcgJiYgdGhpcy5kYXRhLmxlbmd0aCA+IDApIHtcbiAgICAgIGNsYXNzZXNMaXN0LnB1c2goJ2Nwcy10YWJsZS1ib3R0b20tYm9yZGVyZWQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gY2xhc3Nlc0xpc3Quam9pbignICcpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdDaGVja2VkKCkge1xuICAgIGlmICghdGhpcy52aXJ0dWFsU2Nyb2xsIHx8IHRoaXMudmlydHVhbFNjcm9sbEl0ZW1TaXplKSByZXR1cm47XG4gICAgdGhpcy52aXJ0dWFsU2Nyb2xsSXRlbVNpemUgPVxuICAgICAgdGhpcy5wcmltZW5nVGFibGU/LmVsPy5uYXRpdmVFbGVtZW50XG4gICAgICAgID8ucXVlcnlTZWxlY3RvcignLnAtZGF0YXRhYmxlLXRib2R5JylcbiAgICAgICAgPy5xdWVyeVNlbGVjdG9yKCd0cicpPy5jbGllbnRIZWlnaHQgfHwgMDtcbiAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5sb2FkaW5nKSB7XG4gICAgICB0aGlzLmNsZWFyU2VsZWN0aW9uKCk7XG4gICAgICBpZiAodGhpcy5jbGVhckdsb2JhbEZpbHRlck9uTG9hZGluZykgdGhpcy5jbGVhckdsb2JhbEZpbHRlcigpO1xuICAgIH1cblxuICAgIGNvbnN0IGRhdGFDaGFuZ2VzID0gY2hhbmdlcz8uZGF0YTtcbiAgICBpZiAoXG4gICAgICBkYXRhQ2hhbmdlcz8ucHJldmlvdXNWYWx1ZT8ubGVuZ3RoICE9PSBkYXRhQ2hhbmdlcz8uY3VycmVudFZhbHVlPy5sZW5ndGhcbiAgICApIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzID0gdGhpcy5zZWxlY3RlZFJvd3MuZmlsdGVyKChzcikgPT5cbiAgICAgICAgdGhpcy5kYXRhLmluY2x1ZGVzKHNyKVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBjbGVhclNlbGVjdGlvbigpIHtcbiAgICB0aGlzLnNlbGVjdGVkUm93cyA9IFtdO1xuICB9XG5cbiAgY2xlYXJHbG9iYWxGaWx0ZXIoKSB7XG4gICAgdGhpcy5nbG9iYWxGaWx0ZXJDb21wPy5jbGVhcigpO1xuICB9XG5cbiAgb25TZWxlY3Rpb25DaGFuZ2VkKHNlbGVjdGlvbjogYW55W10pIHtcbiAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZWQuZW1pdChzZWxlY3Rpb24pO1xuICB9XG5cbiAgb25Tb3J0RnVuY3Rpb24oZXZlbnQ6IFNvcnRFdmVudCkge1xuICAgIHRoaXMuY3VzdG9tU29ydEZ1bmN0aW9uLmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgb25GaWx0ZXJHbG9iYWwodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMucHJpbWVuZ1RhYmxlLmZpbHRlckdsb2JhbCh2YWx1ZSwgJ2NvbnRhaW5zJyk7XG4gIH1cblxuICByZW1vdmVTZWxlY3RlZCgpIHtcbiAgICBjb25zdCBpbmRleGVzOiBudW1iZXJbXSA9IHRoaXMucHJpbWVuZ1RhYmxlLnNlbGVjdGlvbi5tYXAoXG4gICAgICAoczogYW55KSA9PiBzLl9kZWZhdWx0U29ydE9yZGVyXG4gICAgKTtcbiAgICBpbmRleGVzLnNvcnQoKGEsIGIpID0+IGIgLSBhKTtcblxuICAgIHRoaXMuZGF0YSA9IHRoaXMuZGF0YS5maWx0ZXIoXG4gICAgICAodjogYW55KSA9PiAhaW5kZXhlcy5pbmNsdWRlcyh2Ll9kZWZhdWx0U29ydE9yZGVyKVxuICAgICk7XG5cbiAgICB0aGlzLnJvd3NSZW1vdmVkLmVtaXQodGhpcy5zZWxlY3RlZFJvd3MpO1xuXG4gICAgdGhpcy5jbGVhclNlbGVjdGlvbigpO1xuICB9XG5cbiAgb25DbGlja0FkZGl0aW9uYWxCdG5PblNlbGVjdCgpIHtcbiAgICB0aGlzLmFkZGl0aW9uYWxCdG5PblNlbGVjdENsaWNrZWQuZW1pdCh0aGlzLnNlbGVjdGVkUm93cyk7XG4gIH1cblxuICBvbkNsaWNrQWN0aW9uQnRuKCkge1xuICAgIHRoaXMuYWN0aW9uQnRuQ2xpY2tlZC5lbWl0KCk7XG4gIH1cblxuICBvblJvd3NQZXJQYWdlQ2hhbmdlZCgpIHtcbiAgICBpZiAodGhpcy5yZXNldFBhZ2VPblJvd3NDaGFuZ2UpIHtcbiAgICAgIHRoaXMucHJpbWVuZ1RhYmxlLmZpcnN0ID0gMDtcbiAgICB9XG4gICAgdGhpcy5jaGFuZ2VQYWdlKHRoaXMuZ2V0UGFnZSgpKTtcbiAgfVxuXG4gIGdldFBhZ2VDb3VudCgpIHtcbiAgICByZXR1cm4gTWF0aC5jZWlsKHRoaXMucHJpbWVuZ1RhYmxlLnRvdGFsUmVjb3JkcyAvIHRoaXMucm93cyk7XG4gIH1cblxuICBnZXRQYWdlKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIE1hdGguZmxvb3IodGhpcy5wcmltZW5nVGFibGUuZmlyc3QgLyB0aGlzLnJvd3MpO1xuICB9XG5cbiAgY2hhbmdlUGFnZShwOiBudW1iZXIpIHtcbiAgICBjb25zdCBwYyA9IE1hdGguY2VpbCh0aGlzLmdldFBhZ2VDb3VudCgpKTtcblxuICAgIGlmIChwID49IDAgJiYgcCA8IHBjKSB7XG4gICAgICB0aGlzLmZpcnN0ID0gdGhpcy5yb3dzICogcDtcbiAgICAgIHRoaXMucHJpbWVuZ1RhYmxlLm9uUGFnZUNoYW5nZSh7IGZpcnN0OiB0aGlzLmZpcnN0LCByb3dzOiB0aGlzLnJvd3MgfSk7XG4gICAgfVxuICB9XG5cbiAgb25QYWdlQ2hhbmdlKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLmZpcnN0ID0gZXZlbnQuZmlyc3Q7XG4gICAgdGhpcy5yb3dzID0gZXZlbnQucm93cztcblxuICAgIGNvbnN0IHN0YXRlID0ge1xuICAgICAgcGFnZTogdGhpcy5nZXRQYWdlKCksXG4gICAgICBmaXJzdDogdGhpcy5maXJzdCxcbiAgICAgIHJvd3M6IHRoaXMucm93cyxcbiAgICAgIHBhZ2VDb3VudDogTWF0aC5jZWlsKHRoaXMuZ2V0UGFnZUNvdW50KCkpXG4gICAgfTtcblxuICAgIHRoaXMucGFnZUNoYW5nZWQuZW1pdChzdGF0ZSk7XG4gIH1cblxuICB0b2dnbGVBbGxDb2x1bW5zKCkge1xuICAgIHRoaXMuc2VsZWN0ZWRDb2x1bW5zID1cbiAgICAgIHRoaXMuc2VsZWN0ZWRDb2x1bW5zLmxlbmd0aCA8IHRoaXMuY29sdW1ucy5sZW5ndGggPyB0aGlzLmNvbHVtbnMgOiBbXTtcbiAgICB0aGlzLmNvbHVtbnNTZWxlY3RlZC5lbWl0KHRoaXMuc2VsZWN0ZWRDb2x1bW5zKTtcbiAgfVxuXG4gIGlzQ29sdW1uU2VsZWN0ZWQoY29sOiBhbnkpIHtcbiAgICByZXR1cm4gISFmaW5kKHRoaXMuc2VsZWN0ZWRDb2x1bW5zLCAoaXRlbSkgPT4gaXNFcXVhbChpdGVtLCBjb2wpKTtcbiAgfVxuXG4gIG9uU2VsZWN0Q29sdW1uKGNvbDogYW55KSB7XG4gICAgbGV0IHJlcyA9IFtdIGFzIGFueTtcbiAgICBpZiAodGhpcy5pc0NvbHVtblNlbGVjdGVkKGNvbCkpIHtcbiAgICAgIHJlcyA9IHRoaXMuc2VsZWN0ZWRDb2x1bW5zLmZpbHRlcigodjogYW55KSA9PiAhaXNFcXVhbCh2LCBjb2wpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jb2x1bW5zLmZvckVhY2goKG8pID0+IHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDb2x1bW5zLnNvbWUoKHY6IGFueSkgPT4gaXNFcXVhbCh2LCBvKSkgfHxcbiAgICAgICAgICBpc0VxdWFsKGNvbCwgbylcbiAgICAgICAgKSB7XG4gICAgICAgICAgcmVzLnB1c2gobyk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICB0aGlzLnNlbGVjdGVkQ29sdW1ucyA9IHJlcztcbiAgICB0aGlzLmNvbHVtbnNTZWxlY3RlZC5lbWl0KHRoaXMuc2VsZWN0ZWRDb2x1bW5zKTtcbiAgfVxuXG4gIG9uRWRpdFJvd0NsaWNrZWQoaXRlbTogYW55KSB7XG4gICAgdGhpcy5lZGl0Um93QnRuQ2xpY2tlZC5lbWl0KGl0ZW0pO1xuICB9XG5cbiAgb25SZW1vdmVSb3dDbGlja2VkKGl0ZW06IGFueSkge1xuICAgIHRoaXMuc2VsZWN0ZWRSb3dzID0gdGhpcy5zZWxlY3RlZFJvd3MuZmlsdGVyKCh2OiBhbnkpID0+IHYgIT09IGl0ZW0pO1xuICAgIHRoaXMuZGF0YSA9IHRoaXMuZGF0YS5maWx0ZXIoKHY6IGFueSkgPT4gdiAhPT0gaXRlbSk7XG4gICAgdGhpcy5yb3dzUmVtb3ZlZC5lbWl0KFtpdGVtXSk7XG4gIH1cblxuICBvblNvcnQoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuc29ydGVkLmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgb25GaWx0ZXIoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuZmlsdGVyZWQuZW1pdChldmVudCk7XG4gIH1cblxuICBvblJvd1Jlb3JkZXIoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMucm93c1Jlb3JkZXJlZC5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIG9uTGF6eUxvYWRlZChldmVudDogYW55KSB7XG4gICAgdGhpcy5sYXp5TG9hZGVkLmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgb25SZWxvYWREYXRhKCkge1xuICAgIGlmICh0aGlzLmRhdGFSZWxvYWRCdG5EaXNhYmxlZCkgcmV0dXJuO1xuICAgIHRoaXMuZGF0YVJlbG9hZEJ0bkNsaWNrZWQuZW1pdCgpO1xuICB9XG5cbiAgb25FeHBvcnREYXRhKGV2ZW50OiBhbnkpIHtcbiAgICBpZiAodGhpcy5leHBvcnRCdG5EaXNhYmxlZCkgcmV0dXJuO1xuICAgIHRoaXMuZXhwb3J0TWVudT8udG9nZ2xlKGV2ZW50KTtcbiAgfVxuXG4gIG9uQ29sdW1uc1RvZ2dsZShldmVudDogYW55KSB7XG4gICAgaWYgKHRoaXMuY29sdW1uc1RvZ2dsZUJ0bkRpc2FibGVkKSByZXR1cm47XG4gICAgdGhpcy5jb2xUb2dnbGVNZW51Py50b2dnbGUoZXZlbnQpO1xuICB9XG5cbiAgZXhwb3J0VGFibGUoZm9ybWF0OiBDcHNUYWJsZUV4cG9ydEZvcm1hdCkge1xuICAgIGlmICh0aGlzLmNvbHVtbnMubGVuZ3RoIDwgMSkgdGhyb3cgbmV3IEVycm9yKCdDb2x1bW5zIG11c3QgYmUgZGVmaW5lZCEnKTtcbiAgICBpZiAodGhpcy5zZWxlY3RlZENvbHVtbnMubGVuZ3RoIDwgMSkgdGhyb3cgbmV3IEVycm9yKCdOb3RoaW5nIHRvIGV4cG9ydCEnKTtcblxuICAgIHN3aXRjaCAoZm9ybWF0KSB7XG4gICAgICBjYXNlICdjc3YnOlxuICAgICAgICB0aGlzLnByaW1lbmdUYWJsZS5leHBvcnRDU1YoKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ3hsc3gnOlxuICAgICAgICB0aGlzLmV4cG9ydFhMU1goKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIC8vIGNhc2UgJ3BkZic6XG4gICAgICAvLyAgIHRoaXMuZXhwb3J0UERGKCk7XG4gICAgICAvLyAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIGV4cG9ydFhMU1goKSB7XG4gICAgaW1wb3J0KCd4bHN4JykudGhlbigoeGxzeCkgPT4ge1xuICAgICAgY29uc3Qgc2hlZXREYXRhID0gW1xuICAgICAgICB0aGlzLnNlbGVjdGVkQ29sdW1ucy5tYXAoXG4gICAgICAgICAgKGM6IHsgW2tleTogc3RyaW5nXTogYW55IH0pID0+IGNbdGhpcy5jb2xIZWFkZXJOYW1lXVxuICAgICAgICApLFxuICAgICAgICAuLi50aGlzLmRhdGEubWFwKChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZENvbHVtbnMubWFwKFxuICAgICAgICAgICAgKGM6IHsgW2tleTogc3RyaW5nXTogYW55IH0pID0+IGl0ZW1bY1t0aGlzLmNvbEZpZWxkTmFtZV1dXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICBdO1xuXG4gICAgICBjb25zdCB3b3Jrc2hlZXQgPSB4bHN4LnV0aWxzLmpzb25fdG9fc2hlZXQoc2hlZXREYXRhLCB7XG4gICAgICAgIHNraXBIZWFkZXI6IHRydWVcbiAgICAgIH0pO1xuICAgICAgY29uc3Qgd29ya2Jvb2sgPSB7XG4gICAgICAgIFNoZWV0czogeyBbdGhpcy5leHBvcnRGaWxlbmFtZV06IHdvcmtzaGVldCB9LFxuICAgICAgICBTaGVldE5hbWVzOiBbdGhpcy5leHBvcnRGaWxlbmFtZV1cbiAgICAgIH07XG4gICAgICBjb25zdCB4bHN4QnVmZmVyOiBhbnkgPSB4bHN4LndyaXRlKHdvcmtib29rLCB7XG4gICAgICAgIGJvb2tUeXBlOiAneGxzeCcsXG4gICAgICAgIHR5cGU6ICdhcnJheSdcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBFWENFTF9UWVBFID1cbiAgICAgICAgJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0O2NoYXJzZXQ9VVRGLTgnO1xuICAgICAgY29uc3QgYmxvYjogQmxvYiA9IG5ldyBCbG9iKFt4bHN4QnVmZmVyXSwge1xuICAgICAgICB0eXBlOiBFWENFTF9UWVBFXG4gICAgICB9KTtcblxuICAgICAgY29uc3QgZG93bmxvYWRMaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgICAgZG93bmxvYWRMaW5rLmhyZWYgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xuICAgICAgZG93bmxvYWRMaW5rLmRvd25sb2FkID0gYCR7dGhpcy5leHBvcnRGaWxlbmFtZX0ueGxzeGA7XG4gICAgICBkb3dubG9hZExpbmsuY2xpY2soKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vIGV4cG9ydFBERigpIHtcbiAgLy8gICBjb25zdCBleHBvcnRDb2x1bW5zID0gdGhpcy5zZWxlY3RlZENvbHVtbnMubWFwKChjb2wpID0+ICh7XG4gIC8vICAgICB0aXRsZTogY29sW3RoaXMuY29sSGVhZGVyTmFtZV0sXG4gIC8vICAgICBkYXRhS2V5OiBjb2xbdGhpcy5jb2xGaWVsZE5hbWVdXG4gIC8vICAgfSkpO1xuICAvLyAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuZXctY2FwXG4gIC8vICAgY29uc3QgZG9jID0gbmV3IGpzUERGKHtcbiAgLy8gICAgIG9yaWVudGF0aW9uOiB0aGlzLnNlbGVjdGVkQ29sdW1ucy5sZW5ndGggPiAzID8gJ2wnIDogJ3AnLFxuICAvLyAgICAgdW5pdDogJ3B4JyxcbiAgLy8gICAgIGZvcm1hdDogJ2E0J1xuICAvLyAgIH0pO1xuICAvLyAgIChkb2MgYXMgYW55KS5hdXRvVGFibGUoe1xuICAvLyAgICAgaGVhZFN0eWxlczogeyBmaWxsQ29sb3I6ICcjODcwYTNjJyB9LFxuICAvLyAgICAgY29sdW1uczogZXhwb3J0Q29sdW1ucyxcbiAgLy8gICAgIGJvZHk6IHRoaXMuZGF0YVxuICAvLyAgIH0pO1xuICAvLyAgIGRvYy5zYXZlKGAke3RoaXMuZXhwb3J0RmlsZW5hbWV9LnBkZmApO1xuICAvLyB9XG59XG4iLCI8cC10YWJsZVxuICAjcHJpbWVuZ1RhYmxlXG4gIHRXaXRoVW5zb3J0XG4gIFtuZ0NsYXNzXT1cInsgJ2Nwcy10YWJsZS1sb2FkaW5nJzogbG9hZGluZyB9XCJcbiAgW3N0eWxlQ2xhc3NdPVwic3R5bGVDbGFzc1wiXG4gIFt0YWJsZVN0eWxlXT1cInRhYmxlU3R5bGVcIlxuICBbdGFibGVTdHlsZUNsYXNzXT1cInRhYmxlU3R5bGVDbGFzc1wiXG4gIFt2YWx1ZV09XCJkYXRhXCJcbiAgW2RhdGFLZXldPVwiZGF0YUtleVwiXG4gIFtjb2x1bW5zXT1cInNlbGVjdGVkQ29sdW1uc1wiXG4gIChzZWxlY3Rpb25DaGFuZ2UpPVwib25TZWxlY3Rpb25DaGFuZ2VkKCRldmVudClcIlxuICBbZ2xvYmFsRmlsdGVyRmllbGRzXT1cImdsb2JhbEZpbHRlckZpZWxkc1wiXG4gIFtzaG93SW5pdGlhbFNvcnRCYWRnZV09XCJmYWxzZVwiXG4gIFtsb2FkaW5nXT1cImxvYWRpbmdcIlxuICBbc2Nyb2xsYWJsZV09XCJzY3JvbGxhYmxlXCJcbiAgW3Njcm9sbEhlaWdodF09XCJzY3JvbGxIZWlnaHRcIlxuICBbbGF6eV09XCJsYXp5XCJcbiAgW2xhenlMb2FkT25Jbml0XT1cImxhenlMb2FkT25Jbml0XCJcbiAgW3ZpcnR1YWxTY3JvbGxdPVwidmlydHVhbFNjcm9sbFwiXG4gIFt2aXJ0dWFsU2Nyb2xsSXRlbVNpemVdPVwidmlydHVhbFNjcm9sbEl0ZW1TaXplXCJcbiAgW3ZpcnR1YWxTY3JvbGxPcHRpb25zXT1cInsgbnVtVG9sZXJhdGVkSXRlbXM6IG51bVRvbGVyYXRlZEl0ZW1zIH1cIlxuICBbcGFnaW5hdG9yXT1cInBhZ2luYXRvclwiXG4gIFtzaG93Q3VycmVudFBhZ2VSZXBvcnRdPVwidHJ1ZVwiXG4gIFthbHdheXNTaG93UGFnaW5hdG9yXT1cImFsd2F5c1Nob3dQYWdpbmF0b3JcIlxuICBbcm93c109XCJyb3dzXCJcbiAgW2ZpcnN0XT1cImZpcnN0XCJcbiAgW3RvdGFsUmVjb3Jkc109XCJ0b3RhbFJlY29yZHNcIlxuICBbcmVzZXRQYWdlT25Tb3J0XT1cInJlc2V0UGFnZU9uU29ydFwiXG4gIGN1cnJlbnRQYWdlUmVwb3J0VGVtcGxhdGU9XCJ7Zmlyc3R9IC0ge2xhc3R9IG9mIHt0b3RhbFJlY29yZHN9XCJcbiAgWyhzZWxlY3Rpb24pXT1cInNlbGVjdGVkUm93c1wiXG4gIFttZXRhS2V5U2VsZWN0aW9uXT1cImZhbHNlXCJcbiAgW3Jvd0hvdmVyXT1cInJvd0hvdmVyXCJcbiAgW2N1c3RvbVNvcnRdPVwiY3VzdG9tU29ydFwiXG4gIFtzb3J0TW9kZV09XCJzb3J0TW9kZVwiXG4gIFtleHBvcnRGaWxlbmFtZV09XCJleHBvcnRGaWxlbmFtZVwiXG4gIFtjc3ZTZXBhcmF0b3JdPVwiY3N2U2VwYXJhdG9yXCJcbiAgKG9uUGFnZSk9XCJvblBhZ2VDaGFuZ2UoJGV2ZW50KVwiXG4gIChvbkxhenlMb2FkKT1cIm9uTGF6eUxvYWRlZCgkZXZlbnQpXCJcbiAgKHNvcnRGdW5jdGlvbik9XCJvblNvcnRGdW5jdGlvbigkZXZlbnQpXCJcbiAgKG9uU29ydCk9XCJvblNvcnQoJGV2ZW50KVwiXG4gIChvbkZpbHRlcik9XCJvbkZpbHRlcigkZXZlbnQpXCJcbiAgKG9uUm93UmVvcmRlcik9XCJvblJvd1Jlb3JkZXIoJGV2ZW50KVwiPlxuICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiY2FwdGlvblwiICpuZ0lmPVwiaGFzVG9vbGJhclwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0b29sYmFyVGVtcGxhdGVcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0b29sYmFyVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXRvb2xiYXJUZW1wbGF0ZVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNwcy10YWJsZS10YmFyLWxlZnRcIj5cbiAgICAgICAgPGRpdiAqbmdJZj1cInRvb2xiYXJJY29uXCIgY2xhc3M9XCJjcHMtdGFibGUtdGJhci1pY29uXCI+XG4gICAgICAgICAgPGNwcy1pY29uIFtpY29uXT1cInRvb2xiYXJJY29uXCIgW2NvbG9yXT1cInRvb2xiYXJJY29uQ29sb3JcIj48L2Nwcy1pY29uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNwcy10YWJsZS10YmFyLXRpdGxlXCI+e3sgdG9vbGJhclRpdGxlIH19PC9kaXY+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJzaG93R2xvYmFsRmlsdGVyXCIgY2xhc3M9XCJjcHMtdGFibGUtdGJhci1nbG9iYWwtZmlsdGVyXCI+XG4gICAgICAgICAgPGNwcy1pbnB1dFxuICAgICAgICAgICAgI2dsb2JhbEZpbHRlckNvbXBcbiAgICAgICAgICAgIHByZWZpeEljb249XCJzZWFyY2hcIlxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImdsb2JhbEZpbHRlclBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICh2YWx1ZUNoYW5nZWQpPVwib25GaWx0ZXJHbG9iYWwoJGV2ZW50KVwiXG4gICAgICAgICAgICBbY2xlYXJhYmxlXT1cInRydWVcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImxvYWRpbmdcIlxuICAgICAgICAgICAgW2FwcGVhcmFuY2VdPVwidG9vbGJhclNpemUgPT09ICdzbWFsbCcgPyAndW5kZXJsaW5lZCcgOiAnb3V0bGluZWQnXCJcbiAgICAgICAgICAgIFtoaWRlRGV0YWlsc109XCJ0cnVlXCI+XG4gICAgICAgICAgPC9jcHMtaW5wdXQ+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiY3BzLXRhYmxlLXRiYXItcmlnaHRcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICpuZ0lmPVwic2hvd1JlbW92ZUJ0bk9uU2VsZWN0ICYmIHNlbGVjdGVkUm93cy5sZW5ndGggPiAwXCJcbiAgICAgICAgICBjbGFzcz1cImNwcy10YWJsZS10YmFyLWJ0bi1vbi1zZWxlY3RcIj5cbiAgICAgICAgICA8Y3BzLWJ1dHRvblxuICAgICAgICAgICAgbGFiZWw9XCJSZW1vdmVcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cInJlbW92ZUJ0bk9uU2VsZWN0RGlzYWJsZWRcIlxuICAgICAgICAgICAgY29sb3I9XCJwcmVwYXJlZFwiXG4gICAgICAgICAgICB0eXBlPVwiYm9yZGVybGVzc1wiXG4gICAgICAgICAgICBpY29uPVwicmVtb3ZlXCJcbiAgICAgICAgICAgIFtzaXplXT1cInRvb2xiYXJTaXplXCJcbiAgICAgICAgICAgIChjbGlja2VkKT1cInJlbW92ZVNlbGVjdGVkKClcIj5cbiAgICAgICAgICA8L2Nwcy1idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgKm5nSWY9XCJzaG93QWRkaXRpb25hbEJ0bk9uU2VsZWN0ICYmIHNlbGVjdGVkUm93cy5sZW5ndGggPiAwXCJcbiAgICAgICAgICBjbGFzcz1cImNwcy10YWJsZS10YmFyLWJ0bi1vbi1zZWxlY3RcIj5cbiAgICAgICAgICA8Y3BzLWJ1dHRvblxuICAgICAgICAgICAgW2xhYmVsXT1cImFkZGl0aW9uYWxCdG5PblNlbGVjdFRpdGxlXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJhZGRpdGlvbmFsQnRuT25TZWxlY3REaXNhYmxlZFwiXG4gICAgICAgICAgICBjb2xvcj1cInByZXBhcmVkXCJcbiAgICAgICAgICAgIHR5cGU9XCJib3JkZXJsZXNzXCJcbiAgICAgICAgICAgIFtzaXplXT1cInRvb2xiYXJTaXplXCJcbiAgICAgICAgICAgIChjbGlja2VkKT1cIm9uQ2xpY2tBZGRpdGlvbmFsQnRuT25TZWxlY3QoKVwiPlxuICAgICAgICAgIDwvY3BzLWJ1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJzaG93QWN0aW9uQnRuXCIgY2xhc3M9XCJjcHMtdGFibGUtdGJhci1hY3Rpb24tYnRuXCI+XG4gICAgICAgICAgPGNwcy1idXR0b25cbiAgICAgICAgICAgIFtsYWJlbF09XCJhY3Rpb25CdG5UaXRsZVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiYWN0aW9uQnRuRGlzYWJsZWRcIlxuICAgICAgICAgICAgY29sb3I9XCJwcmVwYXJlZFwiXG4gICAgICAgICAgICB0eXBlPVwib3V0bGluZWRcIlxuICAgICAgICAgICAgW3NpemVdPVwidG9vbGJhclNpemVcIlxuICAgICAgICAgICAgKGNsaWNrZWQpPVwib25DbGlja0FjdGlvbkJ0bigpXCI+XG4gICAgICAgICAgPC9jcHMtYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICpuZ0lmPVwic2hvd0NvbHVtbnNUb2dnbGVCdG4gJiYgY29sdW1ucy5sZW5ndGggPiAwXCJcbiAgICAgICAgICBjbGFzcz1cImNwcy10YWJsZS10YmFyLWNvbHRvZ2dsZS1idG5cIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2J0bi1kaXNhYmxlZCc6IGNvbHVtbnNUb2dnbGVCdG5EaXNhYmxlZCB9XCI+XG4gICAgICAgICAgPGNwcy1pY29uXG4gICAgICAgICAgICBpY29uPVwiY29sdW1uc1wiXG4gICAgICAgICAgICBzaXplPVwibm9ybWFsXCJcbiAgICAgICAgICAgIFtjb2xvcl09XCJcbiAgICAgICAgICAgICAgY29sdW1uc1RvZ2dsZUJ0bkRpc2FibGVkID8gJ3RleHQtbGlnaHRlc3QnIDogJ3ByZXBhcmVkLWxpZ2h0ZW4xJ1xuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIChjbGljayk9XCJvbkNvbHVtbnNUb2dnbGUoJGV2ZW50KVwiPjwvY3BzLWljb24+XG4gICAgICAgICAgPGNwcy1tZW51ICNjb2xUb2dnbGVNZW51IFt3aXRoQXJyb3ddPVwiZmFsc2VcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcHMtdGFibGUtY29sdG9nZ2xlLW1lbnVcIj5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY3BzLXRhYmxlLWNvbHRvZ2dsZS1tZW51LWl0ZW0gc2VsZWN0LWFsbC1vcHRpb25cIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5hbGxzZWxlY3RlZF09XCJzZWxlY3RlZENvbHVtbnMubGVuZ3RoID09PSBjb2x1bW5zLmxlbmd0aFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUFsbENvbHVtbnMoKVwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3BzLXRhYmxlLWNvbHRvZ2dsZS1tZW51LWl0ZW0tbGVmdFwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcHMtdGFibGUtY29sdG9nZ2xlLW1lbnUtaXRlbS1jaGVja1wiPiA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNwcy10YWJsZS1jb2x0b2dnbGUtbWVudS1pdGVtLWxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgPlNob3cgYWxsIGNvbHVtbnM8L3NwYW5cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNvbCBvZiBjb2x1bW5zXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNwcy10YWJsZS1jb2x0b2dnbGUtbWVudS1pdGVtXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib25TZWxlY3RDb2x1bW4oY29sKVwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLnNlbGVjdGVkXT1cImlzQ29sdW1uU2VsZWN0ZWQoY29sKVwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3BzLXRhYmxlLWNvbHRvZ2dsZS1tZW51LWl0ZW0tbGVmdFwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcHMtdGFibGUtY29sdG9nZ2xlLW1lbnUtaXRlbS1jaGVja1wiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3BzLXRhYmxlLWNvbHRvZ2dsZS1tZW51LWl0ZW0tbGFiZWxcIj57e1xuICAgICAgICAgICAgICAgICAgICBjb2xbY29sSGVhZGVyTmFtZV1cbiAgICAgICAgICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Nwcy1tZW51PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICpuZ0lmPVwic2hvd0V4cG9ydEJ0blwiXG4gICAgICAgICAgY2xhc3M9XCJjcHMtdGFibGUtdGJhci1leHBvcnQtYnRuXCJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7ICdidG4tZGlzYWJsZWQnOiBleHBvcnRCdG5EaXNhYmxlZCB9XCI+XG4gICAgICAgICAgPGNwcy1pY29uXG4gICAgICAgICAgICBpY29uPVwiZXhwb3J0XCJcbiAgICAgICAgICAgIHNpemU9XCIyMFwiXG4gICAgICAgICAgICBbY29sb3JdPVwiZXhwb3J0QnRuRGlzYWJsZWQgPyAndGV4dC1saWdodCcgOiAncHJlcGFyZWQtbGlnaHRlbjEnXCJcbiAgICAgICAgICAgIChjbGljayk9XCJvbkV4cG9ydERhdGEoJGV2ZW50KVwiPjwvY3BzLWljb24+XG4gICAgICAgICAgPGNwcy1tZW51XG4gICAgICAgICAgICAjZXhwb3J0TWVudVxuICAgICAgICAgICAgW2l0ZW1zXT1cImV4cG9ydE1lbnVJdGVtc1wiXG4gICAgICAgICAgICBbY29tcHJlc3NlZF09XCJ0cnVlXCJcbiAgICAgICAgICAgIFt3aXRoQXJyb3ddPVwiZmFsc2VcIj5cbiAgICAgICAgICA8L2Nwcy1tZW51PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICpuZ0lmPVwic2hvd0RhdGFSZWxvYWRCdG5cIlxuICAgICAgICAgIGNsYXNzPVwiY3BzLXRhYmxlLXRiYXItcmVsb2FkLWJ0blwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwieyAnYnRuLWRpc2FibGVkJzogZGF0YVJlbG9hZEJ0bkRpc2FibGVkIH1cIj5cbiAgICAgICAgICA8Y3BzLWljb25cbiAgICAgICAgICAgIGljb249XCJyZWZyZXNoXCJcbiAgICAgICAgICAgIHNpemU9XCIxOFwiXG4gICAgICAgICAgICBbY29sb3JdPVwiZGF0YVJlbG9hZEJ0bkRpc2FibGVkID8gJ3RleHQtbGlnaHQnIDogJ3ByZXBhcmVkLWxpZ2h0ZW4xJ1wiXG4gICAgICAgICAgICAoY2xpY2spPVwib25SZWxvYWREYXRhKClcIj5cbiAgICAgICAgICA8L2Nwcy1pY29uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L25nLXRlbXBsYXRlPlxuXG4gIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJoZWFkZXJcIiAqbmdJZj1cIm5lc3RlZEhlYWRlclRlbXBsYXRlXCIgbGV0LWNvbHVtbnM+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgIG5lc3RlZEhlYWRlclRlbXBsYXRlO1xuICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgJGltcGxpY2l0OiBjb2x1bW5zLFxuICAgICAgICB9XG4gICAgICBcIj48L25nLWNvbnRhaW5lcj5cbiAgPC9uZy10ZW1wbGF0ZT5cblxuICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaGVhZGVyXCIgKm5nSWY9XCIhbmVzdGVkSGVhZGVyVGVtcGxhdGVcIiBsZXQtY29sdW1ucz5cbiAgICA8dHI+XG4gICAgICA8dGggc3R5bGU9XCJ3aWR0aDogM3JlbVwiICpuZ0lmPVwicm93RXhwYW5zaW9uVGVtcGxhdGVcIj48L3RoPlxuICAgICAgPHRoIHN0eWxlPVwid2lkdGg6IDNyZW1cIiAqbmdJZj1cInJlb3JkZXJhYmxlUm93c1wiPjwvdGg+XG4gICAgICA8dGggc3R5bGU9XCJ3aWR0aDogNHJlbVwiICpuZ0lmPVwic2VsZWN0YWJsZVwiPlxuICAgICAgICA8cC10YWJsZUhlYWRlckNoZWNrYm94PjwvcC10YWJsZUhlYWRlckNoZWNrYm94PlxuICAgICAgPC90aD5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJoZWFkZXJUZW1wbGF0ZVwiPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgIGhlYWRlclRlbXBsYXRlO1xuICAgICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgICAkaW1wbGljaXQ6IGNvbHVtbnMsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgXCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaGVhZGVyVGVtcGxhdGUgJiYgY29sdW1ucy5sZW5ndGggPiAwXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzb3J0YWJsZVwiPlxuICAgICAgICAgIDx0aCAqbmdGb3I9XCJsZXQgY29sIG9mIGNvbHVtbnNcIiBbY3BzVENvbFNvcnRhYmxlXT1cImNvbFtjb2xGaWVsZE5hbWVdXCI+XG4gICAgICAgICAgICB7eyBjb2xbY29sSGVhZGVyTmFtZV0gfX1cbiAgICAgICAgICA8L3RoPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFzb3J0YWJsZVwiPlxuICAgICAgICAgIDx0aCAqbmdGb3I9XCJsZXQgY29sIG9mIGNvbHVtbnNcIj5cbiAgICAgICAgICAgIHt7IGNvbFtjb2xIZWFkZXJOYW1lXSB9fVxuICAgICAgICAgIDwvdGg+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8dGhcbiAgICAgICAgc3R5bGU9XCJ3aWR0aDogMnJlbVwiXG4gICAgICAgIGNsYXNzPVwiY3BzLXRhYmxlLXJvdy1tZW51LWNlbGxcIlxuICAgICAgICAqbmdJZj1cInNob3dSb3dNZW51XCI+PC90aD5cbiAgICA8L3RyPlxuICA8L25nLXRlbXBsYXRlPlxuXG4gIDxuZy10ZW1wbGF0ZVxuICAgIHBUZW1wbGF0ZT1cImJvZHlcIlxuICAgIGxldC1yb3dEYXRhXG4gICAgbGV0LWNvbHVtbnM9XCJjb2x1bW5zXCJcbiAgICBsZXQtaXRlbVxuICAgIGxldC1yb3dJbmRleD1cInJvd0luZGV4XCJcbiAgICBsZXQtZXhwYW5kZWQ9XCJleHBhbmRlZFwiPlxuICAgIDx0clxuICAgICAgW3BSZW9yZGVyYWJsZVJvd109XCJyb3dJbmRleFwiXG4gICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICdjcHMtdGFibGUtcm93LXNlbGVjdGVkJzogc2VsZWN0YWJsZSAmJiBwcmltZW5nVGFibGUuaXNTZWxlY3RlZChpdGVtKVxuICAgICAgfVwiPlxuICAgICAgPHRkICpuZ0lmPVwicm93RXhwYW5zaW9uVGVtcGxhdGVcIiBjbGFzcz1cImNwcy10YWJsZS1yb3ctY2hldnJvbi1jZWxsXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImNwcy10YWJsZS1yb3ctY2hldnJvblwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwieyAnY3BzLXRhYmxlLXJvdy1jaGV2cm9uLWV4cGFuZGVkJzogZXhwYW5kZWQgfVwiPlxuICAgICAgICAgIDxjcHMtaWNvblxuICAgICAgICAgICAgaWNvbj1cImNoZXZyb24tZG93blwiXG4gICAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgICAgY29sb3I9XCJ0ZXh0LWRhcmtcIlxuICAgICAgICAgICAgW3BSb3dUb2dnbGVyXT1cIml0ZW1cIj5cbiAgICAgICAgICA8L2Nwcy1pY29uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvdGQ+XG4gICAgICA8dGQgKm5nSWY9XCJyZW9yZGVyYWJsZVJvd3NcIiBjbGFzcz1cImNwcy10YWJsZS1yb3ctZHJhZy1oYW5kbGUtY2VsbFwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImNwcy10YWJsZS1yb3ctZHJhZy1oYW5kbGVcIiBwUmVvcmRlcmFibGVSb3dIYW5kbGU+4piwPC9zcGFuPlxuICAgICAgPC90ZD5cbiAgICAgIDx0ZCAqbmdJZj1cInNlbGVjdGFibGVcIj5cbiAgICAgICAgPHAtdGFibGVDaGVja2JveCBbdmFsdWVdPVwiaXRlbVwiPjwvcC10YWJsZUNoZWNrYm94PlxuICAgICAgPC90ZD5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJib2R5VGVtcGxhdGVcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICBib2R5VGVtcGxhdGU7XG4gICAgICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICAgICRpbXBsaWNpdDogaXRlbSxcbiAgICAgICAgICAgICAgcm93SW5kZXg6IHJvd0luZGV4LFxuICAgICAgICAgICAgICBjb2x1bW5zOiBjb2x1bW5zLFxuICAgICAgICAgICAgICByb3dEYXRhOiByb3dEYXRhXG4gICAgICAgICAgICB9XG4gICAgICAgICAgXCI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWJvZHlUZW1wbGF0ZVwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1ucy5sZW5ndGggPiAwXCI+XG4gICAgICAgICAgPHRkICpuZ0Zvcj1cImxldCBjb2wgb2YgY29sdW1uc1wiPlxuICAgICAgICAgICAge3sgcm93RGF0YVtjb2xbY29sRmllbGROYW1lXV0gfX1cbiAgICAgICAgICA8L3RkPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPHRkICpuZ0lmPVwic2hvd1Jvd01lbnVcIiBjbGFzcz1cImNwcy10YWJsZS1yb3ctbWVudS1jZWxsXCI+XG4gICAgICAgIDx0YWJsZS1yb3ctbWVudVxuICAgICAgICAgIChlZGl0Um93QnRuQ2xpY2tlZCk9XCJvbkVkaXRSb3dDbGlja2VkKGl0ZW0pXCJcbiAgICAgICAgICAocmVtb3ZlUm93QnRuQ2xpY2tlZCk9XCJvblJlbW92ZVJvd0NsaWNrZWQoaXRlbSlcIj48L3RhYmxlLXJvdy1tZW51PlxuICAgICAgPC90ZD5cbiAgICA8L3RyPlxuICA8L25nLXRlbXBsYXRlPlxuICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwicm93ZXhwYW5zaW9uXCIgKm5nSWY9XCJyb3dFeHBhbnNpb25UZW1wbGF0ZVwiIGxldC1pdGVtPlxuICAgIDx0ciBjbGFzcz1cImNwcy10YWJsZS1yb3ctZXhwYW5kZWQtY29udGVudFwiPlxuICAgICAgPHRkIGNvbHNwYW49XCIxMDBcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICByb3dFeHBhbnNpb25UZW1wbGF0ZTtcbiAgICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgICAgJGltcGxpY2l0OiBpdGVtXG4gICAgICAgICAgICB9XG4gICAgICAgICAgXCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8L3RkPlxuICAgIDwvdHI+XG4gIDwvbmctdGVtcGxhdGU+XG4gIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJlbXB0eW1lc3NhZ2VcIj5cbiAgICA8dHI+XG4gICAgICA8dGRcbiAgICAgICAgY29sc3Bhbj1cIjEwMFwiXG4gICAgICAgIGNsYXNzPVwiY3BzLXRhYmxlLWVtcHR5LW1lc3NhZ2UtdGRcIlxuICAgICAgICBbbmdTdHlsZV09XCJ7IGhlaWdodDogZW1wdHlCb2R5SGVpZ2h0IH1cIj5cbiAgICAgICAge3sgZW1wdHlNZXNzYWdlIH19XG4gICAgICA8L3RkPlxuICAgIDwvdHI+XG4gIDwvbmctdGVtcGxhdGU+XG4gIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJsb2FkaW5naWNvblwiPlxuICAgIDxjcHMtbG9hZGVyIFtmdWxsU2NyZWVuXT1cImZhbHNlXCIgb3BhY2l0eT1cIjBcIj48L2Nwcy1sb2FkZXI+XG4gIDwvbmctdGVtcGxhdGU+XG4gIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJwYWdpbmF0b3JsZWZ0XCI+XG4gICAgPGRpdiBjbGFzcz1cImNwcy10YWJsZS1wYWdpbmF0b3ItaXRtcy1wZXItcGFnZVwiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJjcHMtdGFibGUtcGFnaW5hdG9yLWl0ZW1zLXBlci1wYWdlLXRpdGxlXCJcbiAgICAgICAgPlJvd3MgcGVyIHBhZ2U6XG4gICAgICA8L3NwYW4+XG4gICAgICA8Y3BzLXNlbGVjdFxuICAgICAgICBbb3B0aW9uc109XCJyb3dPcHRpb25zXCJcbiAgICAgICAgW2hpZGVEZXRhaWxzXT1cInRydWVcIlxuICAgICAgICBbKG5nTW9kZWwpXT1cInJvd3NcIlxuICAgICAgICAodmFsdWVDaGFuZ2VkKT1cIm9uUm93c1BlclBhZ2VDaGFuZ2VkKClcIlxuICAgICAgICBbcmV0dXJuT2JqZWN0XT1cImZhbHNlXCJcbiAgICAgICAgb3B0aW9uc0NsYXNzPVwiY3BzLXBhZ2luYXRvci1wYWdlLW9wdGlvbnNcIj5cbiAgICAgIDwvY3BzLXNlbGVjdD5cbiAgICA8L2Rpdj5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvcC10YWJsZT5cbiJdfQ==