@onecx/angular-accelerator 5.7.0 → 5.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/data-list-grid/data-list-grid.component.mjs +1 -1
- package/esm2022/lib/components/data-table/data-table.component.mjs +180 -39
- package/esm2022/lib/components/data-view/data-view.component.mjs +80 -3
- package/esm2022/lib/components/interactive-data-view/interactive-data-view.component.mjs +66 -3
- package/fesm2022/onecx-angular-accelerator.mjs +324 -43
- package/fesm2022/onecx-angular-accelerator.mjs.map +1 -1
- package/lib/components/data-list-grid/data-list-grid.component.d.ts +8 -8
- package/lib/components/data-table/data-table.component.d.ts +53 -2
- package/lib/components/data-view/data-view.component.d.ts +32 -1
- package/lib/components/interactive-data-view/interactive-data-view.component.d.ts +20 -1
- package/package.json +2 -1
|
@@ -134,6 +134,27 @@ export class InteractiveDataViewComponent {
|
|
|
134
134
|
get _dateListValue() {
|
|
135
135
|
return this.dateListValue;
|
|
136
136
|
}
|
|
137
|
+
get _tableFilterCell() {
|
|
138
|
+
return this.tableFilterCell;
|
|
139
|
+
}
|
|
140
|
+
get _dateTableFilterCell() {
|
|
141
|
+
return this.dateTableFilterCell;
|
|
142
|
+
}
|
|
143
|
+
get _relativeDateTableFilterCell() {
|
|
144
|
+
return this.relativeDateTableFilterCell;
|
|
145
|
+
}
|
|
146
|
+
get _translationKeyTableFilterCell() {
|
|
147
|
+
return this.translationKeyTableFilterCell;
|
|
148
|
+
}
|
|
149
|
+
get _stringTableFilterCell() {
|
|
150
|
+
return this.stringTableFilterCell;
|
|
151
|
+
}
|
|
152
|
+
get _numberTableFilterCell() {
|
|
153
|
+
return this.numberTableFilterCell;
|
|
154
|
+
}
|
|
155
|
+
get _customTableFilterCell() {
|
|
156
|
+
return this.customTableFilterCell;
|
|
157
|
+
}
|
|
137
158
|
get data() {
|
|
138
159
|
return this._data;
|
|
139
160
|
}
|
|
@@ -221,6 +242,27 @@ export class InteractiveDataViewComponent {
|
|
|
221
242
|
case 'dateListValue':
|
|
222
243
|
this.dateListValue = item.template;
|
|
223
244
|
break;
|
|
245
|
+
case 'tableFilterCell':
|
|
246
|
+
this.tableFilterCell = item.template;
|
|
247
|
+
break;
|
|
248
|
+
case 'dateTableFilterCell':
|
|
249
|
+
this.dateTableFilterCell = item.template;
|
|
250
|
+
break;
|
|
251
|
+
case 'relativeDateTableFilterCell':
|
|
252
|
+
this.relativeDateTableFilterCell = item.template;
|
|
253
|
+
break;
|
|
254
|
+
case 'translationKeyTableFilterCell':
|
|
255
|
+
this.translationKeyTableFilterCell = item.template;
|
|
256
|
+
break;
|
|
257
|
+
case 'stringTableFilterCell':
|
|
258
|
+
this.stringTableFilterCell = item.template;
|
|
259
|
+
break;
|
|
260
|
+
case 'numberTableFilterCell':
|
|
261
|
+
this.numberTableFilterCell = item.template;
|
|
262
|
+
break;
|
|
263
|
+
case 'customTableFilterCell':
|
|
264
|
+
this.customTableFilterCell = item.template;
|
|
265
|
+
break;
|
|
224
266
|
}
|
|
225
267
|
});
|
|
226
268
|
}
|
|
@@ -317,11 +359,11 @@ export class InteractiveDataViewComponent {
|
|
|
317
359
|
this.pageChanged.emit(event);
|
|
318
360
|
}
|
|
319
361
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: InteractiveDataViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
320
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.0", type: InteractiveDataViewComponent, selector: "ocx-interactive-data-view", inputs: { deletePermission: "deletePermission", editPermission: "editPermission", viewPermission: "viewPermission", deleteActionVisibleField: "deleteActionVisibleField", deleteActionEnabledField: "deleteActionEnabledField", viewActionVisibleField: "viewActionVisibleField", viewActionEnabledField: "viewActionEnabledField", editActionVisibleField: "editActionVisibleField", editActionEnabledField: "editActionEnabledField", name: "name", titleLineId: "titleLineId", subtitleLineIds: "subtitleLineIds", supportedViewLayouts: "supportedViewLayouts", columns: "columns", emptyResultsMessage: "emptyResultsMessage", clientSideSorting: "clientSideSorting", clientSideFiltering: "clientSideFiltering", fallbackImage: "fallbackImage", filters: "filters", sortDirection: "sortDirection", sortField: "sortField", sortStates: "sortStates", pageSizes: "pageSizes", pageSize: "pageSize", totalRecordsOnServer: "totalRecordsOnServer", layout: "layout", defaultGroupKey: "defaultGroupKey", customGroupKey: "customGroupKey", groupSelectionNoGroupSelectedKey: "groupSelectionNoGroupSelectedKey", currentPageShowingKey: "currentPageShowingKey", currentPageShowingWithTotalOnServerKey: "currentPageShowingWithTotalOnServerKey", additionalActions: "additionalActions", listGridPaginator: "listGridPaginator", tablePaginator: "tablePaginator", page: "page", selectedRows: "selectedRows", displayedColumns: "displayedColumns", frozenActionColumn: "frozenActionColumn", actionColumnPosition: "actionColumnPosition", paginator: "paginator", data: "data" }, outputs: { filtered: "filtered", sorted: "sorted", deleteItem: "deleteItem", viewItem: "viewItem", editItem: "editItem", dataViewLayoutChange: "dataViewLayoutChange", displayedColumnsChange: "displayedColumnsChange", selectionChanged: "selectionChanged", pageChanged: "pageChanged" }, providers: [{ provide: 'InteractiveDataViewComponent', useExisting: InteractiveDataViewComponent }], queries: [{ propertyName: "tableCell", first: true, predicate: ["tableCell"], descendants: true }, { propertyName: "tableDateCell", first: true, predicate: ["tableDateCell"], descendants: true }, { propertyName: "dateTableCell", first: true, predicate: ["dateTableCell"], descendants: true }, { propertyName: "tableRelativeDateCell", first: true, predicate: ["tableRelativeDateCell"], descendants: true }, { propertyName: "relativeDateTableCell", first: true, predicate: ["relativeDateTableCell"], descendants: true }, { propertyName: "tableTranslationKeyCell", first: true, predicate: ["tableTranslationKeyCell"], descendants: true }, { propertyName: "translationKeyTableCell", first: true, predicate: ["translationKeyTableCell"], descendants: true }, { propertyName: "gridItemSubtitleLines", first: true, predicate: ["gridItemSubtitleLines"], descendants: true }, { propertyName: "listItemSubtitleLines", first: true, predicate: ["listItemSubtitleLines"], descendants: true }, { propertyName: "stringTableCell", first: true, predicate: ["stringTableCell"], descendants: true }, { propertyName: "numberTableCell", first: true, predicate: ["numberTableCell"], descendants: true }, { propertyName: "customTableCell", first: true, predicate: ["customTableCell"], descendants: true }, { propertyName: "gridItem", first: true, predicate: ["gridItem"], descendants: true }, { propertyName: "listItem", first: true, predicate: ["listItem"], descendants: true }, { propertyName: "topCenter", first: true, predicate: ["topCenter"], descendants: true }, { propertyName: "listValue", first: true, predicate: ["listValue"], descendants: true }, { propertyName: "translationKeyListValue", first: true, predicate: ["translationKeyListValue"], descendants: true }, { propertyName: "numberListValue", first: true, predicate: ["numberListValue"], descendants: true }, { propertyName: "relativeDateListValue", first: true, predicate: ["relativeDateListValue"], descendants: true }, { propertyName: "customListValue", first: true, predicate: ["customListValue"], descendants: true }, { propertyName: "stringListValue", first: true, predicate: ["stringListValue"], descendants: true }, { propertyName: "dateListValue", first: true, predicate: ["dateListValue"], descendants: true }, { propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "dataView", first: true, predicate: DataViewComponent, descendants: true }], ngImport: i0, template: "<div class=\"p-3 border-bottom-1 surface-border\">\n <div class=\"flex flex-wrap justify-content-between align-items-center py-1 gap-2\">\n <ocx-data-layout-selection\n [supportedViewLayouts]=\"supportedViewLayouts\"\n [layout]=\"layout\"\n (dataViewLayoutChange)=\"onDataViewLayoutChange($event)\"\n ></ocx-data-layout-selection>\n\n <div *ngIf=\"topCenter\">\n <ng-container [ngTemplateOutlet]=\"topCenter\"> </ng-container>\n </div>\n\n <div *ngIf=\"layout !== 'table'\" class=\"flex align-items-center gap-2\">\n <ocx-data-list-grid-sorting\n [sortDirection]=\"sortDirection\"\n [sortField]=\"sortField\"\n [columns]=\"columns\"\n [sortStates]=\"sortStates\"\n (sortChange)=\"onSortChange($event)\"\n (sortDirectionChange)=\"onSortDirectionChange($event)\"\n ></ocx-data-list-grid-sorting>\n </div>\n\n <div *ngIf=\"layout === 'table'\" class=\"flex flex-wrap justify-content-between align-items-center gap-2\">\n <ocx-column-group-selection\n [selectedGroupKey]=\"selectedGroupKey\"\n [columns]=\"columns\"\n [defaultGroupKey]=\"defaultGroupKey\"\n [customGroupKey]=\"customGroupKey\"\n [placeholderKey]=\"groupSelectionNoGroupSelectedKey\"\n (groupSelectionChanged)=\"onColumnGroupSelectionChange($event)\"\n ></ocx-column-group-selection>\n\n <ocx-custom-group-column-selector\n [columns]=\"columns\"\n [displayedColumns]=\"displayedColumns\"\n (columnSelectionChanged)=\"onColumnSelectionChange($event)\"\n [frozenActionColumn]=\"frozenActionColumn\"\n [actionColumnPosition]=\"actionColumnPosition\"\n (actionColumnConfigChanged)=\"onActionColumnConfigChange($event)\"\n ></ocx-custom-group-column-selector>\n </div>\n </div>\n</div>\n<div class=\"p-3\">\n <ocx-data-view\n [columns]=\"displayedColumns\"\n [sortStates]=\"sortStates\"\n [sortField]=\"sortField\"\n [filters]=\"filters\"\n [data]=\"data\"\n [sortDirection]=\"sortDirection\"\n [titleLineId]=\"titleLineId\"\n [subtitleLineIds]=\"subtitleLineIds\"\n [clientSideSorting]=\"clientSideSorting\"\n [clientSideFiltering]=\"clientSideFiltering\"\n [pageSizes]=\"pageSizes\"\n [pageSize]=\"pageSize\"\n [emptyResultsMessage]=\"emptyResultsMessage\"\n [layout]=\"layout\"\n [name]=\"name\"\n [deletePermission]=\"deletePermission\"\n [editPermission]=\"editPermission\"\n [viewPermission]=\"viewPermission\"\n [deleteActionEnabledField]=\"deleteActionEnabledField\"\n [deleteActionVisibleField]=\"deleteActionVisibleField\"\n [editActionEnabledField]=\"editActionEnabledField\"\n [editActionVisibleField]=\"editActionVisibleField\"\n [viewActionEnabledField]=\"viewActionEnabledField\"\n [viewActionVisibleField]=\"viewActionVisibleField\"\n [additionalActions]=\"additionalActions\"\n [listGridPaginator]=\"listGridPaginator\"\n [tablePaginator]=\"tablePaginator\"\n [page]=\"page\"\n (pageChanged)=\"onPageChange($event)\"\n [selectedRows]=\"selectedRows\"\n [frozenActionColumn]=\"frozenActionColumn\"\n [actionColumnPosition]=\"actionColumnPosition\"\n [stringTableCellTemplate]=\"_stringTableCell ? stringTableCell : undefined\"\n [numberTableCellTemplate]=\"_numberTableCell ? numberTableCell : undefined\"\n [customTableCellTemplate]=\"_customTableCell ? customTableCell : undefined\"\n [dateTableCellTemplate]=\"_dateTableCell ? dateTableCell : _tableDateCell ? tableDateCell : undefined\"\n [relativeDateTableCellTemplate]=\"_relativeDateTableCell ? relativeDateTableCell : _tableRelativeDateCell ? tableRelativeDateCell : undefined\"\n [tableCellTemplate]=\"_tableCell ? tableCell : undefined\"\n [translationKeyTableCellTemplate]=\"_translationKeyTableCell ? translationKeyTableCell : _tableTranslationKeyCell ? tableTranslationKeyCell : undefined\"\n [gridItemSubtitleLinesTemplate]=\"_gridItemSubtitleLines ? gridItemSubtitleLines : undefined\"\n [listItemSubtitleLinesTemplate]=\"_listItemSubtitleLines ? listItemSubtitleLines : undefined\"\n [listItemTemplate]=\"_listItem ? listItem : undefined\"\n [listValueTemplate]=\"_listValue ? listValue : undefined\"\n [translationKeyListValueTemplate]=\"_translationKeyListValue ? translationKeyListValue : undefined\"\n [numberListValueTemplate]=\"_numberListValue ? numberListValue : undefined\"\n [relativeDateListValueTemplate]=\"_relativeDateListValue ? relativeDateListValue : undefined\"\n [customListValueTemplate]=\"_customListValue ? customListValue : undefined\"\n [stringListValueTemplate]=\"_stringListValue ? stringListValue : undefined\"\n [dateListValueTemplate]=\"_dateListValue ? dateListValue : undefined\"\n [gridItemTemplate]=\"_gridItem ? gridItem : undefined\"\n (sorted)=\"sorting($event)\"\n (filtered)=\"filtering($event)\"\n [totalRecordsOnServer]=\"totalRecordsOnServer\"\n [currentPageShowingKey]=\"currentPageShowingKey\"\n [currentPageShowingWithTotalOnServerKey]=\"currentPageShowingWithTotalOnServerKey\"\n [parentTemplates]=\"templates$ | async\"\n >\n </ocx-data-view>\n</div>\n<ng-template #stringTableCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_stringTableCell\"\n [ngTemplateOutlet]=\"_stringTableCell\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n></ng-template>\n<ng-template #tableDateCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_tableDateCell\"\n [ngTemplateOutlet]=\"_tableDateCell\"\n [ngTemplateOutletContext]=\"{rowObject:rowObject, column:column}\"\n >\n </ng-container\n></ng-template>\n<ng-template #dateTableCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_dateTableCell\"\n [ngTemplateOutlet]=\"_dateTableCell\"\n [ngTemplateOutletContext]=\"{rowObject:rowObject, column:column}\"\n >\n </ng-container\n></ng-template>\n<ng-template #tableRelativeDateCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_tableRelativeDateCell\"\n [ngTemplateOutlet]=\"_tableRelativeDateCell\"\n [ngTemplateOutletContext]=\"{rowObject:rowObject, column:column}\"\n >\n </ng-container\n></ng-template>\n<ng-template #relativeDateTableCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_relativeDateTableCell\"\n [ngTemplateOutlet]=\"_relativeDateTableCell\"\n [ngTemplateOutletContext]=\"{rowObject:rowObject, column:column}\"\n >\n </ng-container\n></ng-template>\n<ng-template #tableCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_tableCell\"\n [ngTemplateOutlet]=\"_tableCell\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n></ng-template>\n<ng-template #tableTranslationKeyCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_tableTranslationKeyCell\"\n [ngTemplateOutlet]=\"_tableTranslationKeyCell\"\n [ngTemplateOutletContext]=\"{rowObject:rowObject, column:column}\"\n >\n </ng-container\n></ng-template>\n<ng-template #translationKeyTableCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_translationKeyTableCell\"\n [ngTemplateOutlet]=\"_translationKeyTableCell\"\n [ngTemplateOutletContext]=\"{rowObject:rowObject, column:column}\"\n >\n </ng-container\n></ng-template>\n<ng-template #gridItemSubtitleLines let-item>\n <ng-container\n *ngIf=\"_gridItemSubtitleLines\"\n [ngTemplateOutlet]=\"_gridItemSubtitleLines\"\n [ngTemplateOutletContext]=\"{$implicit:item}\"\n >\n </ng-container>\n</ng-template>\n<ng-template #listItemSubtitleLines let-item>\n <ng-container\n *ngIf=\"_listItemSubtitleLines\"\n [ngTemplateOutlet]=\"_listItemSubtitleLines\"\n [ngTemplateOutletContext]=\"{$implicit:item}\"\n >\n </ng-container\n></ng-template>\n<ng-template #gridItem let-item>\n <ng-container *ngIf=\"_gridItem\" [ngTemplateOutlet]=\"_gridItem\" [ngTemplateOutletContext]=\"{$implicit:item}\">\n </ng-container\n></ng-template>\n<ng-template #listItem let-item>\n <ng-container *ngIf=\"_listItem\" [ngTemplateOutlet]=\"_listItem\" [ngTemplateOutletContext]=\"{$implicit:item}\">\n </ng-container\n></ng-template>\n<ng-template #listValue let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_listValue\"\n [ngTemplateOutlet]=\"_listValue\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n></ng-template>\n<ng-template #translationKeyListValue let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_translationKeyListValue\"\n [ngTemplateOutlet]=\"_translationKeyListValue\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n></ng-template>\n<ng-template #numberListValue let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_numberListValue\"\n [ngTemplateOutlet]=\"_numberListValue\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n></ng-template>\n<ng-template #relativeDateListValue let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_relativeDateListValue\"\n [ngTemplateOutlet]=\"_relativeDateListValue\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n></ng-template>\n<ng-template #customListValue let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_customListValue\"\n [ngTemplateOutlet]=\"_customListValue\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n></ng-template>\n<ng-template #stringListValue let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_stringListValue\"\n [ngTemplateOutlet]=\"_stringListValue\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n></ng-template>\n<ng-template #dateListValue let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_dateListValue\"\n [ngTemplateOutlet]=\"_dateListValue\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n></ng-template>", styles: [""], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.ColumnGroupSelectionComponent, selector: "ocx-column-group-selection", inputs: ["selectedGroupKey", "columns", "placeholderKey", "defaultGroupKey", "customGroupKey"], outputs: ["groupSelectionChanged"] }, { kind: "component", type: i3.CustomGroupColumnSelectorComponent, selector: "ocx-custom-group-column-selector", inputs: ["columns", "displayedColumns", "dialogTitle", "openButtonTitle", "saveButtonLabel", "cancelButtonLabel", "activeColumnsLabel", "inactiveColumnsLabel", "frozenActionColumn", "actionColumnPosition"], outputs: ["columnSelectionChanged", "actionColumnConfigChanged"] }, { kind: "component", type: i4.DataLayoutSelectionComponent, selector: "ocx-data-layout-selection", inputs: ["supportedViewLayouts", "layout"], outputs: ["dataViewLayoutChange"] }, { kind: "component", type: i5.DataListGridSortingComponent, selector: "ocx-data-list-grid-sorting", inputs: ["columns", "sortStates", "sortDirection", "sortField"], outputs: ["sortChange", "sortDirectionChange", "columnsChange"] }, { kind: "component", type: i6.DataViewComponent, selector: "ocx-data-view", inputs: ["deletePermission", "editPermission", "viewPermission", "deleteActionVisibleField", "deleteActionEnabledField", "viewActionVisibleField", "viewActionEnabledField", "editActionVisibleField", "editActionEnabledField", "data", "name", "titleLineId", "subtitleLineIds", "layout", "columns", "emptyResultsMessage", "clientSideSorting", "clientSideFiltering", "fallbackImage", "filters", "sortField", "sortDirection", "listGridPaginator", "tablePaginator", "page", "totalRecordsOnServer", "currentPageShowingKey", "currentPageShowingWithTotalOnServerKey", "selectedRows", "frozenActionColumn", "actionColumnPosition", "paginator", "sortStates", "pageSizes", "pageSize", "stringTableCellTemplate", "numberTableCellTemplate", "customTableCellTemplate", "dateTableCellTemplate", "tableDateCellTemplate", "tableCellTemplate", "translationKeyTableCellTemplate", "tableTranslationKeyCellTemplate", "gridItemSubtitleLinesTemplate", "listItemSubtitleLinesTemplate", "gridItemTemplate", "listItemTemplate", "relativeDateTableCellTemplate", "tableRelativeDateCellTemplate", "listValueTemplate", "translationKeyListValueTemplate", "numberListValueTemplate", "relativeDateListValueTemplate", "customListValueTemplate", "stringListValueTemplate", "dateListValueTemplate", "additionalActions", "parentTemplates"], outputs: ["filtered", "sorted", "deleteItem", "viewItem", "editItem", "selectionChanged", "pageChanged"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }] }); }
|
|
362
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.0", type: InteractiveDataViewComponent, selector: "ocx-interactive-data-view", inputs: { deletePermission: "deletePermission", editPermission: "editPermission", viewPermission: "viewPermission", deleteActionVisibleField: "deleteActionVisibleField", deleteActionEnabledField: "deleteActionEnabledField", viewActionVisibleField: "viewActionVisibleField", viewActionEnabledField: "viewActionEnabledField", editActionVisibleField: "editActionVisibleField", editActionEnabledField: "editActionEnabledField", name: "name", titleLineId: "titleLineId", subtitleLineIds: "subtitleLineIds", supportedViewLayouts: "supportedViewLayouts", columns: "columns", emptyResultsMessage: "emptyResultsMessage", clientSideSorting: "clientSideSorting", clientSideFiltering: "clientSideFiltering", fallbackImage: "fallbackImage", filters: "filters", sortDirection: "sortDirection", sortField: "sortField", sortStates: "sortStates", pageSizes: "pageSizes", pageSize: "pageSize", totalRecordsOnServer: "totalRecordsOnServer", layout: "layout", defaultGroupKey: "defaultGroupKey", customGroupKey: "customGroupKey", groupSelectionNoGroupSelectedKey: "groupSelectionNoGroupSelectedKey", currentPageShowingKey: "currentPageShowingKey", currentPageShowingWithTotalOnServerKey: "currentPageShowingWithTotalOnServerKey", additionalActions: "additionalActions", listGridPaginator: "listGridPaginator", tablePaginator: "tablePaginator", page: "page", selectedRows: "selectedRows", displayedColumns: "displayedColumns", frozenActionColumn: "frozenActionColumn", actionColumnPosition: "actionColumnPosition", paginator: "paginator", data: "data" }, outputs: { filtered: "filtered", sorted: "sorted", deleteItem: "deleteItem", viewItem: "viewItem", editItem: "editItem", dataViewLayoutChange: "dataViewLayoutChange", displayedColumnsChange: "displayedColumnsChange", selectionChanged: "selectionChanged", pageChanged: "pageChanged" }, providers: [{ provide: 'InteractiveDataViewComponent', useExisting: InteractiveDataViewComponent }], queries: [{ propertyName: "tableCell", first: true, predicate: ["tableCell"], descendants: true }, { propertyName: "tableDateCell", first: true, predicate: ["tableDateCell"], descendants: true }, { propertyName: "dateTableCell", first: true, predicate: ["dateTableCell"], descendants: true }, { propertyName: "tableRelativeDateCell", first: true, predicate: ["tableRelativeDateCell"], descendants: true }, { propertyName: "relativeDateTableCell", first: true, predicate: ["relativeDateTableCell"], descendants: true }, { propertyName: "tableTranslationKeyCell", first: true, predicate: ["tableTranslationKeyCell"], descendants: true }, { propertyName: "translationKeyTableCell", first: true, predicate: ["translationKeyTableCell"], descendants: true }, { propertyName: "gridItemSubtitleLines", first: true, predicate: ["gridItemSubtitleLines"], descendants: true }, { propertyName: "listItemSubtitleLines", first: true, predicate: ["listItemSubtitleLines"], descendants: true }, { propertyName: "stringTableCell", first: true, predicate: ["stringTableCell"], descendants: true }, { propertyName: "numberTableCell", first: true, predicate: ["numberTableCell"], descendants: true }, { propertyName: "customTableCell", first: true, predicate: ["customTableCell"], descendants: true }, { propertyName: "gridItem", first: true, predicate: ["gridItem"], descendants: true }, { propertyName: "listItem", first: true, predicate: ["listItem"], descendants: true }, { propertyName: "topCenter", first: true, predicate: ["topCenter"], descendants: true }, { propertyName: "listValue", first: true, predicate: ["listValue"], descendants: true }, { propertyName: "translationKeyListValue", first: true, predicate: ["translationKeyListValue"], descendants: true }, { propertyName: "numberListValue", first: true, predicate: ["numberListValue"], descendants: true }, { propertyName: "relativeDateListValue", first: true, predicate: ["relativeDateListValue"], descendants: true }, { propertyName: "customListValue", first: true, predicate: ["customListValue"], descendants: true }, { propertyName: "stringListValue", first: true, predicate: ["stringListValue"], descendants: true }, { propertyName: "dateListValue", first: true, predicate: ["dateListValue"], descendants: true }, { propertyName: "tableFilterCell", first: true, predicate: ["tableFilterCell"], descendants: true }, { propertyName: "dateTableFilterCell", first: true, predicate: ["dateTableFilterCell"], descendants: true }, { propertyName: "relativeDateTableFilterCell", first: true, predicate: ["relativeDateTableFilterCell"], descendants: true }, { propertyName: "translationKeyTableFilterCell", first: true, predicate: ["translationKeyTableFilterCell"], descendants: true }, { propertyName: "stringTableFilterCell", first: true, predicate: ["stringTableFilterCell"], descendants: true }, { propertyName: "numberTableFilterCell", first: true, predicate: ["numberTableFilterCell"], descendants: true }, { propertyName: "customTableFilterCell", first: true, predicate: ["customTableFilterCell"], descendants: true }, { propertyName: "templates", predicate: PrimeTemplate }], viewQueries: [{ propertyName: "dataView", first: true, predicate: DataViewComponent, descendants: true }], ngImport: i0, template: "<div class=\"p-3 border-bottom-1 surface-border\">\n <div class=\"flex flex-wrap justify-content-between align-items-center py-1 gap-2\">\n <ocx-data-layout-selection\n [supportedViewLayouts]=\"supportedViewLayouts\"\n [layout]=\"layout\"\n (dataViewLayoutChange)=\"onDataViewLayoutChange($event)\"\n ></ocx-data-layout-selection>\n\n <div *ngIf=\"topCenter\">\n <ng-container [ngTemplateOutlet]=\"topCenter\"> </ng-container>\n </div>\n\n <div *ngIf=\"layout !== 'table'\" class=\"flex align-items-center gap-2\">\n <ocx-data-list-grid-sorting\n [sortDirection]=\"sortDirection\"\n [sortField]=\"sortField\"\n [columns]=\"columns\"\n [sortStates]=\"sortStates\"\n (sortChange)=\"onSortChange($event)\"\n (sortDirectionChange)=\"onSortDirectionChange($event)\"\n ></ocx-data-list-grid-sorting>\n </div>\n\n <div *ngIf=\"layout === 'table'\" class=\"flex flex-wrap justify-content-between align-items-center gap-2\">\n <ocx-column-group-selection\n [selectedGroupKey]=\"selectedGroupKey\"\n [columns]=\"columns\"\n [defaultGroupKey]=\"defaultGroupKey\"\n [customGroupKey]=\"customGroupKey\"\n [placeholderKey]=\"groupSelectionNoGroupSelectedKey\"\n (groupSelectionChanged)=\"onColumnGroupSelectionChange($event)\"\n ></ocx-column-group-selection>\n\n <ocx-custom-group-column-selector\n [columns]=\"columns\"\n [displayedColumns]=\"displayedColumns\"\n (columnSelectionChanged)=\"onColumnSelectionChange($event)\"\n [frozenActionColumn]=\"frozenActionColumn\"\n [actionColumnPosition]=\"actionColumnPosition\"\n (actionColumnConfigChanged)=\"onActionColumnConfigChange($event)\"\n ></ocx-custom-group-column-selector>\n </div>\n </div>\n</div>\n<div class=\"p-3\">\n <ocx-data-view\n [columns]=\"displayedColumns\"\n [sortStates]=\"sortStates\"\n [sortField]=\"sortField\"\n [filters]=\"filters\"\n [data]=\"data\"\n [sortDirection]=\"sortDirection\"\n [titleLineId]=\"titleLineId\"\n [subtitleLineIds]=\"subtitleLineIds\"\n [clientSideSorting]=\"clientSideSorting\"\n [clientSideFiltering]=\"clientSideFiltering\"\n [pageSizes]=\"pageSizes\"\n [pageSize]=\"pageSize\"\n [emptyResultsMessage]=\"emptyResultsMessage\"\n [layout]=\"layout\"\n [name]=\"name\"\n [deletePermission]=\"deletePermission\"\n [editPermission]=\"editPermission\"\n [viewPermission]=\"viewPermission\"\n [deleteActionEnabledField]=\"deleteActionEnabledField\"\n [deleteActionVisibleField]=\"deleteActionVisibleField\"\n [editActionEnabledField]=\"editActionEnabledField\"\n [editActionVisibleField]=\"editActionVisibleField\"\n [viewActionEnabledField]=\"viewActionEnabledField\"\n [viewActionVisibleField]=\"viewActionVisibleField\"\n [additionalActions]=\"additionalActions\"\n [listGridPaginator]=\"listGridPaginator\"\n [tablePaginator]=\"tablePaginator\"\n [page]=\"page\"\n (pageChanged)=\"onPageChange($event)\"\n [selectedRows]=\"selectedRows\"\n [frozenActionColumn]=\"frozenActionColumn\"\n [actionColumnPosition]=\"actionColumnPosition\"\n [stringTableCellTemplate]=\"_stringTableCell ? stringTableCell : undefined\"\n [numberTableCellTemplate]=\"_numberTableCell ? numberTableCell : undefined\"\n [customTableCellTemplate]=\"_customTableCell ? customTableCell : undefined\"\n [dateTableCellTemplate]=\"_dateTableCell ? dateTableCell : _tableDateCell ? tableDateCell : undefined\"\n [relativeDateTableCellTemplate]=\"_relativeDateTableCell ? relativeDateTableCell : _tableRelativeDateCell ? tableRelativeDateCell : undefined\"\n [tableCellTemplate]=\"_tableCell ? tableCell : undefined\"\n [translationKeyTableCellTemplate]=\"_translationKeyTableCell ? translationKeyTableCell : _tableTranslationKeyCell ? tableTranslationKeyCell : undefined\"\n [gridItemSubtitleLinesTemplate]=\"_gridItemSubtitleLines ? gridItemSubtitleLines : undefined\"\n [listItemSubtitleLinesTemplate]=\"_listItemSubtitleLines ? listItemSubtitleLines : undefined\"\n [listItemTemplate]=\"_listItem ? listItem : undefined\"\n [listValueTemplate]=\"_listValue ? listValue : undefined\"\n [translationKeyListValueTemplate]=\"_translationKeyListValue ? translationKeyListValue : undefined\"\n [numberListValueTemplate]=\"_numberListValue ? numberListValue : undefined\"\n [relativeDateListValueTemplate]=\"_relativeDateListValue ? relativeDateListValue : undefined\"\n [customListValueTemplate]=\"_customListValue ? customListValue : undefined\"\n [stringListValueTemplate]=\"_stringListValue ? stringListValue : undefined\"\n [dateListValueTemplate]=\"_dateListValue ? dateListValue : undefined\"\n [gridItemTemplate]=\"_gridItem ? gridItem : undefined\"\n [tableFilterCellTemplate]=\"_tableFilterCell ? tableFilterCell : undefined\"\n [dateTableFilterCellTemplate]=\"_dateTableFilterCell ? dateTableFilterCell : undefined\"\n [customTableFilterCellTemplate]=\"_customTableFilterCell ? customTableFilterCell : undefined\"\n [numberTableFilterCellTemplate]=\"_numberTableFilterCell ? numberTableFilterCell : undefined\"\n [stringTableFilterCellTemplate]=\"_stringTableFilterCell ? stringTableFilterCell : undefined\"\n [relativeDateTableFilterCellTemplate]=\"_relativeDateTableFilterCell ? relativeDateTableFilterCell : undefined\"\n [translationKeyTableFilterCellTemplate]=\"_translationKeyTableFilterCell ? translationKeyTableFilterCell : undefined\"\n (sorted)=\"sorting($event)\"\n (filtered)=\"filtering($event)\"\n [totalRecordsOnServer]=\"totalRecordsOnServer\"\n [currentPageShowingKey]=\"currentPageShowingKey\"\n [currentPageShowingWithTotalOnServerKey]=\"currentPageShowingWithTotalOnServerKey\"\n [parentTemplates]=\"templates$ | async\"\n >\n </ocx-data-view>\n</div>\n<ng-template #stringTableCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_stringTableCell\"\n [ngTemplateOutlet]=\"_stringTableCell\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n></ng-template>\n<ng-template #tableDateCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_tableDateCell\"\n [ngTemplateOutlet]=\"_tableDateCell\"\n [ngTemplateOutletContext]=\"{rowObject:rowObject, column:column}\"\n >\n </ng-container\n></ng-template>\n<ng-template #dateTableCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_dateTableCell\"\n [ngTemplateOutlet]=\"_dateTableCell\"\n [ngTemplateOutletContext]=\"{rowObject:rowObject, column:column}\"\n >\n </ng-container\n></ng-template>\n<ng-template #tableRelativeDateCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_tableRelativeDateCell\"\n [ngTemplateOutlet]=\"_tableRelativeDateCell\"\n [ngTemplateOutletContext]=\"{rowObject:rowObject, column:column}\"\n >\n </ng-container\n></ng-template>\n<ng-template #relativeDateTableCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_relativeDateTableCell\"\n [ngTemplateOutlet]=\"_relativeDateTableCell\"\n [ngTemplateOutletContext]=\"{rowObject:rowObject, column:column}\"\n >\n </ng-container\n></ng-template>\n<ng-template #tableCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_tableCell\"\n [ngTemplateOutlet]=\"_tableCell\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n></ng-template>\n<ng-template #tableTranslationKeyCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_tableTranslationKeyCell\"\n [ngTemplateOutlet]=\"_tableTranslationKeyCell\"\n [ngTemplateOutletContext]=\"{rowObject:rowObject, column:column}\"\n >\n </ng-container\n></ng-template>\n<ng-template #translationKeyTableCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_translationKeyTableCell\"\n [ngTemplateOutlet]=\"_translationKeyTableCell\"\n [ngTemplateOutletContext]=\"{rowObject:rowObject, column:column}\"\n >\n </ng-container\n></ng-template>\n<ng-template #gridItemSubtitleLines let-item>\n <ng-container\n *ngIf=\"_gridItemSubtitleLines\"\n [ngTemplateOutlet]=\"_gridItemSubtitleLines\"\n [ngTemplateOutletContext]=\"{$implicit:item}\"\n >\n </ng-container>\n</ng-template>\n<ng-template #listItemSubtitleLines let-item>\n <ng-container\n *ngIf=\"_listItemSubtitleLines\"\n [ngTemplateOutlet]=\"_listItemSubtitleLines\"\n [ngTemplateOutletContext]=\"{$implicit:item}\"\n >\n </ng-container\n></ng-template>\n<ng-template #gridItem let-item>\n <ng-container *ngIf=\"_gridItem\" [ngTemplateOutlet]=\"_gridItem\" [ngTemplateOutletContext]=\"{$implicit:item}\">\n </ng-container\n></ng-template>\n<ng-template #listItem let-item>\n <ng-container *ngIf=\"_listItem\" [ngTemplateOutlet]=\"_listItem\" [ngTemplateOutletContext]=\"{$implicit:item}\">\n </ng-container\n></ng-template>\n<ng-template #listValue let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_listValue\"\n [ngTemplateOutlet]=\"_listValue\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n></ng-template>\n<ng-template #translationKeyListValue let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_translationKeyListValue\"\n [ngTemplateOutlet]=\"_translationKeyListValue\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n></ng-template>\n<ng-template #numberListValue let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_numberListValue\"\n [ngTemplateOutlet]=\"_numberListValue\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n></ng-template>\n<ng-template #relativeDateListValue let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_relativeDateListValue\"\n [ngTemplateOutlet]=\"_relativeDateListValue\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n></ng-template>\n<ng-template #customListValue let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_customListValue\"\n [ngTemplateOutlet]=\"_customListValue\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n></ng-template>\n<ng-template #stringListValue let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_stringListValue\"\n [ngTemplateOutlet]=\"_stringListValue\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n></ng-template>\n<ng-template #dateListValue let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_dateListValue\"\n [ngTemplateOutlet]=\"_dateListValue\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n></ng-template>\n\n<ng-template #stringTableFilterCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_stringTableFilterCell\"\n [ngTemplateOutlet]=\"_stringTableFilterCell\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n></ng-template>\n<ng-template #numberTableFilterCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_numberTableFilterCell\"\n [ngTemplateOutlet]=\"_numberTableFilterCell\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n></ng-template>\n<ng-template #customTableFilterCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_customTableFilterCell\"\n [ngTemplateOutlet]=\"_customTableFilterCell\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n></ng-template>\n<ng-template #dateTableFilterCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_dateTableFilterCell\"\n [ngTemplateOutlet]=\"_dateTableFilterCell\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n></ng-template>\n<ng-template #relativeDateTableFilterCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_relativeDateTableFilterCell\"\n [ngTemplateOutlet]=\"_relativeDateTableFilterCell\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n></ng-template>\n<ng-template #translationKeyTableFilterCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_translationKeyTableFilterCell\"\n [ngTemplateOutlet]=\"_translationKeyTableFilterCell\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n></ng-template>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.ColumnGroupSelectionComponent, selector: "ocx-column-group-selection", inputs: ["selectedGroupKey", "columns", "placeholderKey", "defaultGroupKey", "customGroupKey"], outputs: ["groupSelectionChanged"] }, { kind: "component", type: i3.CustomGroupColumnSelectorComponent, selector: "ocx-custom-group-column-selector", inputs: ["columns", "displayedColumns", "dialogTitle", "openButtonTitle", "saveButtonLabel", "cancelButtonLabel", "activeColumnsLabel", "inactiveColumnsLabel", "frozenActionColumn", "actionColumnPosition"], outputs: ["columnSelectionChanged", "actionColumnConfigChanged"] }, { kind: "component", type: i4.DataLayoutSelectionComponent, selector: "ocx-data-layout-selection", inputs: ["supportedViewLayouts", "layout"], outputs: ["dataViewLayoutChange"] }, { kind: "component", type: i5.DataListGridSortingComponent, selector: "ocx-data-list-grid-sorting", inputs: ["columns", "sortStates", "sortDirection", "sortField"], outputs: ["sortChange", "sortDirectionChange", "columnsChange"] }, { kind: "component", type: i6.DataViewComponent, selector: "ocx-data-view", inputs: ["deletePermission", "editPermission", "viewPermission", "deleteActionVisibleField", "deleteActionEnabledField", "viewActionVisibleField", "viewActionEnabledField", "editActionVisibleField", "editActionEnabledField", "data", "name", "titleLineId", "subtitleLineIds", "layout", "columns", "emptyResultsMessage", "clientSideSorting", "clientSideFiltering", "fallbackImage", "filters", "sortField", "sortDirection", "listGridPaginator", "tablePaginator", "page", "totalRecordsOnServer", "currentPageShowingKey", "currentPageShowingWithTotalOnServerKey", "selectedRows", "frozenActionColumn", "actionColumnPosition", "paginator", "sortStates", "pageSizes", "pageSize", "stringTableCellTemplate", "numberTableCellTemplate", "customTableCellTemplate", "dateTableCellTemplate", "tableDateCellTemplate", "tableCellTemplate", "translationKeyTableCellTemplate", "tableTranslationKeyCellTemplate", "gridItemSubtitleLinesTemplate", "listItemSubtitleLinesTemplate", "gridItemTemplate", "listItemTemplate", "relativeDateTableCellTemplate", "tableRelativeDateCellTemplate", "listValueTemplate", "translationKeyListValueTemplate", "numberListValueTemplate", "relativeDateListValueTemplate", "customListValueTemplate", "stringListValueTemplate", "dateListValueTemplate", "tableFilterCellTemplate", "dateTableFilterCellTemplate", "relativeDateTableFilterCellTemplate", "translationKeyTableFilterCellTemplate", "stringTableFilterCellTemplate", "numberTableFilterCellTemplate", "customTableFilterCellTemplate", "additionalActions", "parentTemplates"], outputs: ["filtered", "sorted", "deleteItem", "viewItem", "editItem", "selectionChanged", "pageChanged"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }] }); }
|
|
321
363
|
}
|
|
322
364
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: InteractiveDataViewComponent, decorators: [{
|
|
323
365
|
type: Component,
|
|
324
|
-
args: [{ selector: 'ocx-interactive-data-view', providers: [{ provide: 'InteractiveDataViewComponent', useExisting: InteractiveDataViewComponent }], template: "<div class=\"p-3 border-bottom-1 surface-border\">\n <div class=\"flex flex-wrap justify-content-between align-items-center py-1 gap-2\">\n <ocx-data-layout-selection\n [supportedViewLayouts]=\"supportedViewLayouts\"\n [layout]=\"layout\"\n (dataViewLayoutChange)=\"onDataViewLayoutChange($event)\"\n ></ocx-data-layout-selection>\n\n <div *ngIf=\"topCenter\">\n <ng-container [ngTemplateOutlet]=\"topCenter\"> </ng-container>\n </div>\n\n <div *ngIf=\"layout !== 'table'\" class=\"flex align-items-center gap-2\">\n <ocx-data-list-grid-sorting\n [sortDirection]=\"sortDirection\"\n [sortField]=\"sortField\"\n [columns]=\"columns\"\n [sortStates]=\"sortStates\"\n (sortChange)=\"onSortChange($event)\"\n (sortDirectionChange)=\"onSortDirectionChange($event)\"\n ></ocx-data-list-grid-sorting>\n </div>\n\n <div *ngIf=\"layout === 'table'\" class=\"flex flex-wrap justify-content-between align-items-center gap-2\">\n <ocx-column-group-selection\n [selectedGroupKey]=\"selectedGroupKey\"\n [columns]=\"columns\"\n [defaultGroupKey]=\"defaultGroupKey\"\n [customGroupKey]=\"customGroupKey\"\n [placeholderKey]=\"groupSelectionNoGroupSelectedKey\"\n (groupSelectionChanged)=\"onColumnGroupSelectionChange($event)\"\n ></ocx-column-group-selection>\n\n <ocx-custom-group-column-selector\n [columns]=\"columns\"\n [displayedColumns]=\"displayedColumns\"\n (columnSelectionChanged)=\"onColumnSelectionChange($event)\"\n [frozenActionColumn]=\"frozenActionColumn\"\n [actionColumnPosition]=\"actionColumnPosition\"\n (actionColumnConfigChanged)=\"onActionColumnConfigChange($event)\"\n ></ocx-custom-group-column-selector>\n </div>\n </div>\n</div>\n<div class=\"p-3\">\n <ocx-data-view\n [columns]=\"displayedColumns\"\n [sortStates]=\"sortStates\"\n [sortField]=\"sortField\"\n [filters]=\"filters\"\n [data]=\"data\"\n [sortDirection]=\"sortDirection\"\n [titleLineId]=\"titleLineId\"\n [subtitleLineIds]=\"subtitleLineIds\"\n [clientSideSorting]=\"clientSideSorting\"\n [clientSideFiltering]=\"clientSideFiltering\"\n [pageSizes]=\"pageSizes\"\n [pageSize]=\"pageSize\"\n [emptyResultsMessage]=\"emptyResultsMessage\"\n [layout]=\"layout\"\n [name]=\"name\"\n [deletePermission]=\"deletePermission\"\n [editPermission]=\"editPermission\"\n [viewPermission]=\"viewPermission\"\n [deleteActionEnabledField]=\"deleteActionEnabledField\"\n [deleteActionVisibleField]=\"deleteActionVisibleField\"\n [editActionEnabledField]=\"editActionEnabledField\"\n [editActionVisibleField]=\"editActionVisibleField\"\n [viewActionEnabledField]=\"viewActionEnabledField\"\n [viewActionVisibleField]=\"viewActionVisibleField\"\n [additionalActions]=\"additionalActions\"\n [listGridPaginator]=\"listGridPaginator\"\n [tablePaginator]=\"tablePaginator\"\n [page]=\"page\"\n (pageChanged)=\"onPageChange($event)\"\n [selectedRows]=\"selectedRows\"\n [frozenActionColumn]=\"frozenActionColumn\"\n [actionColumnPosition]=\"actionColumnPosition\"\n [stringTableCellTemplate]=\"_stringTableCell ? stringTableCell : undefined\"\n [numberTableCellTemplate]=\"_numberTableCell ? numberTableCell : undefined\"\n [customTableCellTemplate]=\"_customTableCell ? customTableCell : undefined\"\n [dateTableCellTemplate]=\"_dateTableCell ? dateTableCell : _tableDateCell ? tableDateCell : undefined\"\n [relativeDateTableCellTemplate]=\"_relativeDateTableCell ? relativeDateTableCell : _tableRelativeDateCell ? tableRelativeDateCell : undefined\"\n [tableCellTemplate]=\"_tableCell ? tableCell : undefined\"\n [translationKeyTableCellTemplate]=\"_translationKeyTableCell ? translationKeyTableCell : _tableTranslationKeyCell ? tableTranslationKeyCell : undefined\"\n [gridItemSubtitleLinesTemplate]=\"_gridItemSubtitleLines ? gridItemSubtitleLines : undefined\"\n [listItemSubtitleLinesTemplate]=\"_listItemSubtitleLines ? listItemSubtitleLines : undefined\"\n [listItemTemplate]=\"_listItem ? listItem : undefined\"\n [listValueTemplate]=\"_listValue ? listValue : undefined\"\n [translationKeyListValueTemplate]=\"_translationKeyListValue ? translationKeyListValue : undefined\"\n [numberListValueTemplate]=\"_numberListValue ? numberListValue : undefined\"\n [relativeDateListValueTemplate]=\"_relativeDateListValue ? relativeDateListValue : undefined\"\n [customListValueTemplate]=\"_customListValue ? customListValue : undefined\"\n [stringListValueTemplate]=\"_stringListValue ? stringListValue : undefined\"\n [dateListValueTemplate]=\"_dateListValue ? dateListValue : undefined\"\n [gridItemTemplate]=\"_gridItem ? gridItem : undefined\"\n (sorted)=\"sorting($event)\"\n (filtered)=\"filtering($event)\"\n [totalRecordsOnServer]=\"totalRecordsOnServer\"\n [currentPageShowingKey]=\"currentPageShowingKey\"\n [currentPageShowingWithTotalOnServerKey]=\"currentPageShowingWithTotalOnServerKey\"\n [parentTemplates]=\"templates$ | async\"\n >\n </ocx-data-view>\n</div>\n<ng-template #stringTableCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_stringTableCell\"\n [ngTemplateOutlet]=\"_stringTableCell\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n></ng-template>\n<ng-template #tableDateCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_tableDateCell\"\n [ngTemplateOutlet]=\"_tableDateCell\"\n [ngTemplateOutletContext]=\"{rowObject:rowObject, column:column}\"\n >\n </ng-container\n></ng-template>\n<ng-template #dateTableCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_dateTableCell\"\n [ngTemplateOutlet]=\"_dateTableCell\"\n [ngTemplateOutletContext]=\"{rowObject:rowObject, column:column}\"\n >\n </ng-container\n></ng-template>\n<ng-template #tableRelativeDateCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_tableRelativeDateCell\"\n [ngTemplateOutlet]=\"_tableRelativeDateCell\"\n [ngTemplateOutletContext]=\"{rowObject:rowObject, column:column}\"\n >\n </ng-container\n></ng-template>\n<ng-template #relativeDateTableCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_relativeDateTableCell\"\n [ngTemplateOutlet]=\"_relativeDateTableCell\"\n [ngTemplateOutletContext]=\"{rowObject:rowObject, column:column}\"\n >\n </ng-container\n></ng-template>\n<ng-template #tableCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_tableCell\"\n [ngTemplateOutlet]=\"_tableCell\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n></ng-template>\n<ng-template #tableTranslationKeyCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_tableTranslationKeyCell\"\n [ngTemplateOutlet]=\"_tableTranslationKeyCell\"\n [ngTemplateOutletContext]=\"{rowObject:rowObject, column:column}\"\n >\n </ng-container\n></ng-template>\n<ng-template #translationKeyTableCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_translationKeyTableCell\"\n [ngTemplateOutlet]=\"_translationKeyTableCell\"\n [ngTemplateOutletContext]=\"{rowObject:rowObject, column:column}\"\n >\n </ng-container\n></ng-template>\n<ng-template #gridItemSubtitleLines let-item>\n <ng-container\n *ngIf=\"_gridItemSubtitleLines\"\n [ngTemplateOutlet]=\"_gridItemSubtitleLines\"\n [ngTemplateOutletContext]=\"{$implicit:item}\"\n >\n </ng-container>\n</ng-template>\n<ng-template #listItemSubtitleLines let-item>\n <ng-container\n *ngIf=\"_listItemSubtitleLines\"\n [ngTemplateOutlet]=\"_listItemSubtitleLines\"\n [ngTemplateOutletContext]=\"{$implicit:item}\"\n >\n </ng-container\n></ng-template>\n<ng-template #gridItem let-item>\n <ng-container *ngIf=\"_gridItem\" [ngTemplateOutlet]=\"_gridItem\" [ngTemplateOutletContext]=\"{$implicit:item}\">\n </ng-container\n></ng-template>\n<ng-template #listItem let-item>\n <ng-container *ngIf=\"_listItem\" [ngTemplateOutlet]=\"_listItem\" [ngTemplateOutletContext]=\"{$implicit:item}\">\n </ng-container\n></ng-template>\n<ng-template #listValue let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_listValue\"\n [ngTemplateOutlet]=\"_listValue\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n></ng-template>\n<ng-template #translationKeyListValue let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_translationKeyListValue\"\n [ngTemplateOutlet]=\"_translationKeyListValue\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n></ng-template>\n<ng-template #numberListValue let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_numberListValue\"\n [ngTemplateOutlet]=\"_numberListValue\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n></ng-template>\n<ng-template #relativeDateListValue let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_relativeDateListValue\"\n [ngTemplateOutlet]=\"_relativeDateListValue\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n></ng-template>\n<ng-template #customListValue let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_customListValue\"\n [ngTemplateOutlet]=\"_customListValue\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n></ng-template>\n<ng-template #stringListValue let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_stringListValue\"\n [ngTemplateOutlet]=\"_stringListValue\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n></ng-template>\n<ng-template #dateListValue let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_dateListValue\"\n [ngTemplateOutlet]=\"_dateListValue\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n></ng-template>" }]
|
|
366
|
+
args: [{ selector: 'ocx-interactive-data-view', providers: [{ provide: 'InteractiveDataViewComponent', useExisting: InteractiveDataViewComponent }], template: "<div class=\"p-3 border-bottom-1 surface-border\">\n <div class=\"flex flex-wrap justify-content-between align-items-center py-1 gap-2\">\n <ocx-data-layout-selection\n [supportedViewLayouts]=\"supportedViewLayouts\"\n [layout]=\"layout\"\n (dataViewLayoutChange)=\"onDataViewLayoutChange($event)\"\n ></ocx-data-layout-selection>\n\n <div *ngIf=\"topCenter\">\n <ng-container [ngTemplateOutlet]=\"topCenter\"> </ng-container>\n </div>\n\n <div *ngIf=\"layout !== 'table'\" class=\"flex align-items-center gap-2\">\n <ocx-data-list-grid-sorting\n [sortDirection]=\"sortDirection\"\n [sortField]=\"sortField\"\n [columns]=\"columns\"\n [sortStates]=\"sortStates\"\n (sortChange)=\"onSortChange($event)\"\n (sortDirectionChange)=\"onSortDirectionChange($event)\"\n ></ocx-data-list-grid-sorting>\n </div>\n\n <div *ngIf=\"layout === 'table'\" class=\"flex flex-wrap justify-content-between align-items-center gap-2\">\n <ocx-column-group-selection\n [selectedGroupKey]=\"selectedGroupKey\"\n [columns]=\"columns\"\n [defaultGroupKey]=\"defaultGroupKey\"\n [customGroupKey]=\"customGroupKey\"\n [placeholderKey]=\"groupSelectionNoGroupSelectedKey\"\n (groupSelectionChanged)=\"onColumnGroupSelectionChange($event)\"\n ></ocx-column-group-selection>\n\n <ocx-custom-group-column-selector\n [columns]=\"columns\"\n [displayedColumns]=\"displayedColumns\"\n (columnSelectionChanged)=\"onColumnSelectionChange($event)\"\n [frozenActionColumn]=\"frozenActionColumn\"\n [actionColumnPosition]=\"actionColumnPosition\"\n (actionColumnConfigChanged)=\"onActionColumnConfigChange($event)\"\n ></ocx-custom-group-column-selector>\n </div>\n </div>\n</div>\n<div class=\"p-3\">\n <ocx-data-view\n [columns]=\"displayedColumns\"\n [sortStates]=\"sortStates\"\n [sortField]=\"sortField\"\n [filters]=\"filters\"\n [data]=\"data\"\n [sortDirection]=\"sortDirection\"\n [titleLineId]=\"titleLineId\"\n [subtitleLineIds]=\"subtitleLineIds\"\n [clientSideSorting]=\"clientSideSorting\"\n [clientSideFiltering]=\"clientSideFiltering\"\n [pageSizes]=\"pageSizes\"\n [pageSize]=\"pageSize\"\n [emptyResultsMessage]=\"emptyResultsMessage\"\n [layout]=\"layout\"\n [name]=\"name\"\n [deletePermission]=\"deletePermission\"\n [editPermission]=\"editPermission\"\n [viewPermission]=\"viewPermission\"\n [deleteActionEnabledField]=\"deleteActionEnabledField\"\n [deleteActionVisibleField]=\"deleteActionVisibleField\"\n [editActionEnabledField]=\"editActionEnabledField\"\n [editActionVisibleField]=\"editActionVisibleField\"\n [viewActionEnabledField]=\"viewActionEnabledField\"\n [viewActionVisibleField]=\"viewActionVisibleField\"\n [additionalActions]=\"additionalActions\"\n [listGridPaginator]=\"listGridPaginator\"\n [tablePaginator]=\"tablePaginator\"\n [page]=\"page\"\n (pageChanged)=\"onPageChange($event)\"\n [selectedRows]=\"selectedRows\"\n [frozenActionColumn]=\"frozenActionColumn\"\n [actionColumnPosition]=\"actionColumnPosition\"\n [stringTableCellTemplate]=\"_stringTableCell ? stringTableCell : undefined\"\n [numberTableCellTemplate]=\"_numberTableCell ? numberTableCell : undefined\"\n [customTableCellTemplate]=\"_customTableCell ? customTableCell : undefined\"\n [dateTableCellTemplate]=\"_dateTableCell ? dateTableCell : _tableDateCell ? tableDateCell : undefined\"\n [relativeDateTableCellTemplate]=\"_relativeDateTableCell ? relativeDateTableCell : _tableRelativeDateCell ? tableRelativeDateCell : undefined\"\n [tableCellTemplate]=\"_tableCell ? tableCell : undefined\"\n [translationKeyTableCellTemplate]=\"_translationKeyTableCell ? translationKeyTableCell : _tableTranslationKeyCell ? tableTranslationKeyCell : undefined\"\n [gridItemSubtitleLinesTemplate]=\"_gridItemSubtitleLines ? gridItemSubtitleLines : undefined\"\n [listItemSubtitleLinesTemplate]=\"_listItemSubtitleLines ? listItemSubtitleLines : undefined\"\n [listItemTemplate]=\"_listItem ? listItem : undefined\"\n [listValueTemplate]=\"_listValue ? listValue : undefined\"\n [translationKeyListValueTemplate]=\"_translationKeyListValue ? translationKeyListValue : undefined\"\n [numberListValueTemplate]=\"_numberListValue ? numberListValue : undefined\"\n [relativeDateListValueTemplate]=\"_relativeDateListValue ? relativeDateListValue : undefined\"\n [customListValueTemplate]=\"_customListValue ? customListValue : undefined\"\n [stringListValueTemplate]=\"_stringListValue ? stringListValue : undefined\"\n [dateListValueTemplate]=\"_dateListValue ? dateListValue : undefined\"\n [gridItemTemplate]=\"_gridItem ? gridItem : undefined\"\n [tableFilterCellTemplate]=\"_tableFilterCell ? tableFilterCell : undefined\"\n [dateTableFilterCellTemplate]=\"_dateTableFilterCell ? dateTableFilterCell : undefined\"\n [customTableFilterCellTemplate]=\"_customTableFilterCell ? customTableFilterCell : undefined\"\n [numberTableFilterCellTemplate]=\"_numberTableFilterCell ? numberTableFilterCell : undefined\"\n [stringTableFilterCellTemplate]=\"_stringTableFilterCell ? stringTableFilterCell : undefined\"\n [relativeDateTableFilterCellTemplate]=\"_relativeDateTableFilterCell ? relativeDateTableFilterCell : undefined\"\n [translationKeyTableFilterCellTemplate]=\"_translationKeyTableFilterCell ? translationKeyTableFilterCell : undefined\"\n (sorted)=\"sorting($event)\"\n (filtered)=\"filtering($event)\"\n [totalRecordsOnServer]=\"totalRecordsOnServer\"\n [currentPageShowingKey]=\"currentPageShowingKey\"\n [currentPageShowingWithTotalOnServerKey]=\"currentPageShowingWithTotalOnServerKey\"\n [parentTemplates]=\"templates$ | async\"\n >\n </ocx-data-view>\n</div>\n<ng-template #stringTableCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_stringTableCell\"\n [ngTemplateOutlet]=\"_stringTableCell\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n></ng-template>\n<ng-template #tableDateCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_tableDateCell\"\n [ngTemplateOutlet]=\"_tableDateCell\"\n [ngTemplateOutletContext]=\"{rowObject:rowObject, column:column}\"\n >\n </ng-container\n></ng-template>\n<ng-template #dateTableCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_dateTableCell\"\n [ngTemplateOutlet]=\"_dateTableCell\"\n [ngTemplateOutletContext]=\"{rowObject:rowObject, column:column}\"\n >\n </ng-container\n></ng-template>\n<ng-template #tableRelativeDateCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_tableRelativeDateCell\"\n [ngTemplateOutlet]=\"_tableRelativeDateCell\"\n [ngTemplateOutletContext]=\"{rowObject:rowObject, column:column}\"\n >\n </ng-container\n></ng-template>\n<ng-template #relativeDateTableCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_relativeDateTableCell\"\n [ngTemplateOutlet]=\"_relativeDateTableCell\"\n [ngTemplateOutletContext]=\"{rowObject:rowObject, column:column}\"\n >\n </ng-container\n></ng-template>\n<ng-template #tableCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_tableCell\"\n [ngTemplateOutlet]=\"_tableCell\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n></ng-template>\n<ng-template #tableTranslationKeyCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_tableTranslationKeyCell\"\n [ngTemplateOutlet]=\"_tableTranslationKeyCell\"\n [ngTemplateOutletContext]=\"{rowObject:rowObject, column:column}\"\n >\n </ng-container\n></ng-template>\n<ng-template #translationKeyTableCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_translationKeyTableCell\"\n [ngTemplateOutlet]=\"_translationKeyTableCell\"\n [ngTemplateOutletContext]=\"{rowObject:rowObject, column:column}\"\n >\n </ng-container\n></ng-template>\n<ng-template #gridItemSubtitleLines let-item>\n <ng-container\n *ngIf=\"_gridItemSubtitleLines\"\n [ngTemplateOutlet]=\"_gridItemSubtitleLines\"\n [ngTemplateOutletContext]=\"{$implicit:item}\"\n >\n </ng-container>\n</ng-template>\n<ng-template #listItemSubtitleLines let-item>\n <ng-container\n *ngIf=\"_listItemSubtitleLines\"\n [ngTemplateOutlet]=\"_listItemSubtitleLines\"\n [ngTemplateOutletContext]=\"{$implicit:item}\"\n >\n </ng-container\n></ng-template>\n<ng-template #gridItem let-item>\n <ng-container *ngIf=\"_gridItem\" [ngTemplateOutlet]=\"_gridItem\" [ngTemplateOutletContext]=\"{$implicit:item}\">\n </ng-container\n></ng-template>\n<ng-template #listItem let-item>\n <ng-container *ngIf=\"_listItem\" [ngTemplateOutlet]=\"_listItem\" [ngTemplateOutletContext]=\"{$implicit:item}\">\n </ng-container\n></ng-template>\n<ng-template #listValue let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_listValue\"\n [ngTemplateOutlet]=\"_listValue\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n></ng-template>\n<ng-template #translationKeyListValue let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_translationKeyListValue\"\n [ngTemplateOutlet]=\"_translationKeyListValue\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n></ng-template>\n<ng-template #numberListValue let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_numberListValue\"\n [ngTemplateOutlet]=\"_numberListValue\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n></ng-template>\n<ng-template #relativeDateListValue let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_relativeDateListValue\"\n [ngTemplateOutlet]=\"_relativeDateListValue\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n></ng-template>\n<ng-template #customListValue let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_customListValue\"\n [ngTemplateOutlet]=\"_customListValue\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n></ng-template>\n<ng-template #stringListValue let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_stringListValue\"\n [ngTemplateOutlet]=\"_stringListValue\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n></ng-template>\n<ng-template #dateListValue let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_dateListValue\"\n [ngTemplateOutlet]=\"_dateListValue\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n></ng-template>\n\n<ng-template #stringTableFilterCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_stringTableFilterCell\"\n [ngTemplateOutlet]=\"_stringTableFilterCell\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n></ng-template>\n<ng-template #numberTableFilterCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_numberTableFilterCell\"\n [ngTemplateOutlet]=\"_numberTableFilterCell\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n></ng-template>\n<ng-template #customTableFilterCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_customTableFilterCell\"\n [ngTemplateOutlet]=\"_customTableFilterCell\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n></ng-template>\n<ng-template #dateTableFilterCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_dateTableFilterCell\"\n [ngTemplateOutlet]=\"_dateTableFilterCell\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n></ng-template>\n<ng-template #relativeDateTableFilterCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_relativeDateTableFilterCell\"\n [ngTemplateOutlet]=\"_relativeDateTableFilterCell\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n></ng-template>\n<ng-template #translationKeyTableFilterCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_translationKeyTableFilterCell\"\n [ngTemplateOutlet]=\"_translationKeyTableFilterCell\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n></ng-template>\n" }]
|
|
325
367
|
}], propDecorators: { dataView: [{
|
|
326
368
|
type: ViewChild,
|
|
327
369
|
args: [DataViewComponent]
|
|
@@ -469,6 +511,27 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
|
|
|
469
511
|
}], dateListValue: [{
|
|
470
512
|
type: ContentChild,
|
|
471
513
|
args: ['dateListValue']
|
|
514
|
+
}], tableFilterCell: [{
|
|
515
|
+
type: ContentChild,
|
|
516
|
+
args: ['tableFilterCell']
|
|
517
|
+
}], dateTableFilterCell: [{
|
|
518
|
+
type: ContentChild,
|
|
519
|
+
args: ['dateTableFilterCell']
|
|
520
|
+
}], relativeDateTableFilterCell: [{
|
|
521
|
+
type: ContentChild,
|
|
522
|
+
args: ['relativeDateTableFilterCell']
|
|
523
|
+
}], translationKeyTableFilterCell: [{
|
|
524
|
+
type: ContentChild,
|
|
525
|
+
args: ['translationKeyTableFilterCell']
|
|
526
|
+
}], stringTableFilterCell: [{
|
|
527
|
+
type: ContentChild,
|
|
528
|
+
args: ['stringTableFilterCell']
|
|
529
|
+
}], numberTableFilterCell: [{
|
|
530
|
+
type: ContentChild,
|
|
531
|
+
args: ['numberTableFilterCell']
|
|
532
|
+
}], customTableFilterCell: [{
|
|
533
|
+
type: ContentChild,
|
|
534
|
+
args: ['customTableFilterCell']
|
|
472
535
|
}], templates: [{
|
|
473
536
|
type: ContentChildren,
|
|
474
537
|
args: [PrimeTemplate]
|
|
@@ -495,4 +558,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
|
|
|
495
558
|
}], data: [{
|
|
496
559
|
type: Input
|
|
497
560
|
}] } });
|
|
498
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJhY3RpdmUtZGF0YS12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1hY2NlbGVyYXRvci9zcmMvbGliL2NvbXBvbmVudHMvaW50ZXJhY3RpdmUtZGF0YS12aWV3L2ludGVyYWN0aXZlLWRhdGEtdmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItYWNjZWxlcmF0b3Ivc3JjL2xpYi9jb21wb25lbnRzL2ludGVyYWN0aXZlLWRhdGEtdmlldy9pbnRlcmFjdGl2ZS1kYXRhLXZpZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFDVCxZQUFZLEVBQ1osZUFBZSxFQUNmLFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUdOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQTtBQUN0QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBVTNDLE9BQU8sRUFBRSxpQkFBaUIsRUFBbUIsTUFBTSxrQ0FBa0MsQ0FBQTtBQUNyRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFBOzs7Ozs7OztBQVF0QyxNQUFNLE9BQU8sNEJBQTRCO0lBTnpDO1FBeUJXLFNBQUksR0FBRyxNQUFNLENBQUE7UUFFYixvQkFBZSxHQUFhLEVBQUUsQ0FBQTtRQUM5Qix5QkFBb0IsR0FBa0MsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFBO1FBQy9FLFlBQU8sR0FBc0IsRUFBRSxDQUFBO1FBRS9CLHNCQUFpQixHQUFHLElBQUksQ0FBQTtRQUN4Qix3QkFBbUIsR0FBRyxJQUFJLENBQUE7UUFDMUIsa0JBQWEsR0FBRyxpQkFBaUIsQ0FBQTtRQUNqQyxZQUFPLEdBQWEsRUFBRSxDQUFBO1FBQ3RCLGtCQUFhLHVDQUE0QztRQUN6RCxjQUFT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QVk7dUJBQUMsaUJBQWlCO2dCQUNFLGVBQWU7c0JBQS9DLFlBQVk7dUJBQUMsaUJBQWlCO2dCQU1FLGVBQWU7c0JBQS9DLFlBQVk7dUJBQUMsaUJBQWlCO2dCQUNMLFFBQVE7c0JBQWpDLFlBQVk7dUJBQUMsVUFBVTtnQkFDRSxRQUFRO3NCQUFqQyxZQUFZO3VCQUFDLFVBQVU7Z0JBQ0csU0FBUztzQkFBbkMsWUFBWTt1QkFBQyxXQUFXO2dCQUNFLFNBQVM7c0JBQW5DLFlBQVk7dUJBQUMsV0FBVztnQkFDZ0IsdUJBQXVCO3NCQUEvRCxZQUFZO3VCQUFDLHlCQUF5QjtnQkFDTixlQUFlO3NCQUEvQyxZQUFZO3VCQUFDLGlCQUFpQjtnQkFDUSxxQkFBcUI7c0JBQTNELFlBQVk7dUJBQUMsdUJBQXVCO2dCQU1KLGVBQWU7c0JBQS9DLFlBQVk7dUJBQUMsaUJBQWlCO2dCQUNFLGVBQWU7c0JBQS9DLFlBQVk7dUJBQUMsaUJBQWlCO2dCQUNBLGFBQWE7c0JBQTNDLFlBQVk7dUJBQUMsZUFBZTtnQkFNekIsU0FBUztzQkFEWixlQUFlO3VCQUFDLGFBQWE7Z0JBS3BCLFFBQVE7c0JBQWpCLE1BQU07Z0JBQ0csTUFBTTtzQkFBZixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0csUUFBUTtzQkFBakIsTUFBTTtnQkFDRyxRQUFRO3NCQUFqQixNQUFNO2dCQUNHLG9CQUFvQjtzQkFBN0IsTUFBTTtnQkFDRyxzQkFBc0I7c0JBQS9CLE1BQU07Z0JBQ0csZ0JBQWdCO3NCQUF6QixNQUFNO2dCQUVHLFdBQVc7c0JBQXBCLE1BQU07Z0JBUUgsU0FBUztzQkFEWixLQUFLO2dCQTJFRixJQUFJO3NCQURQLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlckNvbnRlbnRJbml0LFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgUXVlcnlMaXN0LFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgUHJpbWVUZW1wbGF0ZSB9IGZyb20gJ3ByaW1lbmcvYXBpJ1xuaW1wb3J0IHsgRGF0YUFjdGlvbiB9IGZyb20gJy4uLy4uL21vZGVsL2RhdGEtYWN0aW9uJ1xuaW1wb3J0IHsgRGF0YVNvcnREaXJlY3Rpb24gfSBmcm9tICcuLi8uLi9tb2RlbC9kYXRhLXNvcnQtZGlyZWN0aW9uJ1xuaW1wb3J0IHsgRGF0YVRhYmxlQ29sdW1uIH0gZnJvbSAnLi4vLi4vbW9kZWwvZGF0YS10YWJsZS1jb2x1bW4ubW9kZWwnXG5pbXBvcnQgeyBHcm91cFNlbGVjdGlvbkNoYW5nZWRFdmVudCB9IGZyb20gJy4uL2NvbHVtbi1ncm91cC1zZWxlY3Rpb24vY29sdW1uLWdyb3VwLXNlbGVjdGlvbi5jb21wb25lbnQnXG5pbXBvcnQge1xuICBBY3Rpb25Db2x1bW5DaGFuZ2VkRXZlbnQsXG4gIENvbHVtblNlbGVjdGlvbkNoYW5nZWRFdmVudCxcbn0gZnJvbSAnLi4vY3VzdG9tLWdyb3VwLWNvbHVtbi1zZWxlY3Rvci9jdXN0b20tZ3JvdXAtY29sdW1uLXNlbGVjdG9yLmNvbXBvbmVudCdcbmltcG9ydCB7IEZpbHRlciwgUm93LCBTb3J0IH0gZnJvbSAnLi4vZGF0YS10YWJsZS9kYXRhLXRhYmxlLmNvbXBvbmVudCdcbmltcG9ydCB7IERhdGFWaWV3Q29tcG9uZW50LCBSb3dMaXN0R3JpZERhdGEgfSBmcm9tICcuLi9kYXRhLXZpZXcvZGF0YS12aWV3LmNvbXBvbmVudCdcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ29jeC1pbnRlcmFjdGl2ZS1kYXRhLXZpZXcnLFxuICB0ZW1wbGF0ZVVybDogJy4vaW50ZXJhY3RpdmUtZGF0YS12aWV3LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vaW50ZXJhY3RpdmUtZGF0YS12aWV3LmNvbXBvbmVudC5jc3MnXSxcbiAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiAnSW50ZXJhY3RpdmVEYXRhVmlld0NvbXBvbmVudCcsIHVzZUV4aXN0aW5nOiBJbnRlcmFjdGl2ZURhdGFWaWV3Q29tcG9uZW50IH1dLFxufSlcbmV4cG9ydCBjbGFzcyBJbnRlcmFjdGl2ZURhdGFWaWV3Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlckNvbnRlbnRJbml0IHtcbiAgX2RhdGFWaWV3Q29tcG9uZW50OiBEYXRhVmlld0NvbXBvbmVudCB8IHVuZGVmaW5lZFxuICBAVmlld0NoaWxkKERhdGFWaWV3Q29tcG9uZW50KSBzZXQgZGF0YVZpZXcocmVmOiBEYXRhVmlld0NvbXBvbmVudCB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuX2RhdGFWaWV3Q29tcG9uZW50ID0gcmVmXG4gICAgdGhpcy5yZWdpc3RlckV2ZW50TGlzdGVuZXJGb3JEYXRhVmlldygpXG4gIH1cbiAgZ2V0IGRhdGFWaWV3KCk6IERhdGFWaWV3Q29tcG9uZW50IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fZGF0YVZpZXdDb21wb25lbnRcbiAgfVxuXG4gIEBJbnB1dCgpIGRlbGV0ZVBlcm1pc3Npb246IHN0cmluZyB8IHVuZGVmaW5lZFxuICBASW5wdXQoKSBlZGl0UGVybWlzc2lvbjogc3RyaW5nIHwgdW5kZWZpbmVkXG4gIEBJbnB1dCgpIHZpZXdQZXJtaXNzaW9uOiBzdHJpbmcgfCB1bmRlZmluZWRcbiAgQElucHV0KCkgZGVsZXRlQWN0aW9uVmlzaWJsZUZpZWxkOiBzdHJpbmcgfCB1bmRlZmluZWRcbiAgQElucHV0KCkgZGVsZXRlQWN0aW9uRW5hYmxlZEZpZWxkOiBzdHJpbmcgfCB1bmRlZmluZWRcbiAgQElucHV0KCkgdmlld0FjdGlvblZpc2libGVGaWVsZDogc3RyaW5nIHwgdW5kZWZpbmVkXG4gIEBJbnB1dCgpIHZpZXdBY3Rpb25FbmFibGVkRmllbGQ6IHN0cmluZyB8IHVuZGVmaW5lZFxuICBASW5wdXQoKSBlZGl0QWN0aW9uVmlzaWJsZUZpZWxkOiBzdHJpbmcgfCB1bmRlZmluZWRcbiAgQElucHV0KCkgZWRpdEFjdGlvbkVuYWJsZWRGaWVsZDogc3RyaW5nIHwgdW5kZWZpbmVkXG4gIEBJbnB1dCgpIG5hbWUgPSAnRGF0YSdcbiAgQElucHV0KCkgdGl0bGVMaW5lSWQ6IHN0cmluZyB8IHVuZGVmaW5lZFxuICBASW5wdXQoKSBzdWJ0aXRsZUxpbmVJZHM6IHN0cmluZ1tdID0gW11cbiAgQElucHV0KCkgc3VwcG9ydGVkVmlld0xheW91dHM6ICgnZ3JpZCcgfCAnbGlzdCcgfCAndGFibGUnKVtdID0gWydncmlkJywgJ2xpc3QnLCAndGFibGUnXVxuICBASW5wdXQoKSBjb2x1bW5zOiBEYXRhVGFibGVDb2x1bW5bXSA9IFtdXG4gIEBJbnB1dCgpIGVtcHR5UmVzdWx0c01lc3NhZ2U6IHN0cmluZyB8IHVuZGVmaW5lZFxuICBASW5wdXQoKSBjbGllbnRTaWRlU29ydGluZyA9IHRydWVcbiAgQElucHV0KCkgY2xpZW50U2lkZUZpbHRlcmluZyA9IHRydWVcbiAgQElucHV0KCkgZmFsbGJhY2tJbWFnZSA9ICdwbGFjZWhvbGRlci5wbmcnXG4gIEBJbnB1dCgpIGZpbHRlcnM6IEZpbHRlcltdID0gW11cbiAgQElucHV0KCkgc29ydERpcmVjdGlvbjogRGF0YVNvcnREaXJlY3Rpb24gPSBEYXRhU29ydERpcmVjdGlvbi5OT05FXG4gIEBJbnB1dCgpIHNvcnRGaWVsZDogYW55ID0gJydcbiAgQElucHV0KCkgc29ydFN0YXRlczogRGF0YVNvcnREaXJlY3Rpb25bXSA9IFtcbiAgICBEYXRhU29ydERpcmVjdGlvbi5BU0NFTkRJTkcsXG4gICAgRGF0YVNvcnREaXJlY3Rpb24uREVTQ0VORElORyxcbiAgICBEYXRhU29ydERpcmVjdGlvbi5OT05FLFxuICBdXG4gIEBJbnB1dCgpIHBhZ2VTaXplczogbnVtYmVyW10gPSBbMTAsIDI1LCA1MF1cbiAgQElucHV0KCkgcGFnZVNpemU6IG51bWJlciB8IHVuZGVmaW5lZFxuICBASW5wdXQoKSB0b3RhbFJlY29yZHNPblNlcnZlcjogbnVtYmVyIHwgdW5kZWZpbmVkXG4gIEBJbnB1dCgpIGxheW91dDogJ2dyaWQnIHwgJ2xpc3QnIHwgJ3RhYmxlJyA9ICd0YWJsZSdcbiAgQElucHV0KCkgZGVmYXVsdEdyb3VwS2V5ID0gJydcbiAgQElucHV0KCkgY3VzdG9tR3JvdXBLZXkgPSAnT0NYX0lOVEVSQUNUSVZFX0RBVEFfVklFVy5DVVNUT01fR1JPVVAnXG4gIEBJbnB1dCgpIGdyb3VwU2VsZWN0aW9uTm9Hcm91cFNlbGVjdGVkS2V5ID0gJ09DWF9JTlRFUkFDVElWRV9EQVRBX1ZJRVcuTk9fR1JPVVBfU0VMRUNURUQnXG4gIEBJbnB1dCgpIGN1cnJlbnRQYWdlU2hvd2luZ0tleSA9ICdPQ1hfREFUQV9UQUJMRS5TSE9XSU5HJ1xuICBASW5wdXQoKSBjdXJyZW50UGFnZVNob3dpbmdXaXRoVG90YWxPblNlcnZlcktleSA9ICdPQ1hfREFUQV9UQUJMRS5TSE9XSU5HX1dJVEhfVE9UQUxfT05fU0VSVkVSJ1xuICBASW5wdXQoKSBhZGRpdGlvbmFsQWN0aW9uczogRGF0YUFjdGlvbltdID0gW11cbiAgQElucHV0KCkgbGlzdEdyaWRQYWdpbmF0b3IgPSB0cnVlXG4gIEBJbnB1dCgpIHRhYmxlUGFnaW5hdG9yID0gdHJ1ZVxuICBASW5wdXQoKSBwYWdlID0gMFxuICBASW5wdXQoKSBzZWxlY3RlZFJvd3M6IFJvd1tdID0gW11cbiAgQElucHV0KCkgZGlzcGxheWVkQ29sdW1uczogRGF0YVRhYmxlQ29sdW1uW10gPSBbXVxuICBASW5wdXQoKSBmcm96ZW5BY3Rpb25Db2x1bW4gPSBmYWxzZVxuICBASW5wdXQoKSBhY3Rpb25Db2x1bW5Qb3NpdGlvbjogJ2xlZnQnIHwgJ3JpZ2h0JyA9ICdyaWdodCdcbiAgQENvbnRlbnRDaGlsZCgndGFibGVDZWxsJykgdGFibGVDZWxsOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBXaWxsIGJlIHJlcGxhY2VkIGJ5IGRhdGVUYWJsZUNlbGxcbiAgICovXG4gIEBDb250ZW50Q2hpbGQoJ3RhYmxlRGF0ZUNlbGwnKSB0YWJsZURhdGVDZWxsOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkXG4gIEBDb250ZW50Q2hpbGQoJ2RhdGVUYWJsZUNlbGwnKSBkYXRlVGFibGVDZWxsOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkXG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFdpbGwgYmUgcmVwbGFjZWQgYnkgcmVsYXRpdmVEYXRlVGFibGVDZWxsXG4gICAqL1xuICBAQ29udGVudENoaWxkKCd0YWJsZVJlbGF0aXZlRGF0ZUNlbGwnKSB0YWJsZVJlbGF0aXZlRGF0ZUNlbGw6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWRcbiAgQENvbnRlbnRDaGlsZCgncmVsYXRpdmVEYXRlVGFibGVDZWxsJykgcmVsYXRpdmVEYXRlVGFibGVDZWxsOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkXG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFdpbGwgYmUgcmVwbGFjZWQgYnkgdHJhbnNsYXRpb25LZXlUYWJsZUNlbGxcbiAgICovXG4gIEBDb250ZW50Q2hpbGQoJ3RhYmxlVHJhbnNsYXRpb25LZXlDZWxsJykgdGFibGVUcmFuc2xhdGlvbktleUNlbGw6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWRcbiAgQENvbnRlbnRDaGlsZCgndHJhbnNsYXRpb25LZXlUYWJsZUNlbGwnKSB0cmFuc2xhdGlvbktleVRhYmxlQ2VsbDogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuXG4gIEBDb250ZW50Q2hpbGQoJ2dyaWRJdGVtU3VidGl0bGVMaW5lcycpIGdyaWRJdGVtU3VidGl0bGVMaW5lczogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuICBAQ29udGVudENoaWxkKCdsaXN0SXRlbVN1YnRpdGxlTGluZXMnKSBsaXN0SXRlbVN1YnRpdGxlTGluZXM6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWRcbiAgQENvbnRlbnRDaGlsZCgnc3RyaW5nVGFibGVDZWxsJykgc3RyaW5nVGFibGVDZWxsOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkXG4gIEBDb250ZW50Q2hpbGQoJ251bWJlclRhYmxlQ2VsbCcpIG51bWJlclRhYmxlQ2VsbDogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgV2lsbCBiZSByZW1vdmVkIGFuZCBpbnN0ZWFkIHRvIGNoYW5nZSB0aGUgdGVtcGxhdGUgb2YgYSBzcGVjaWZpYyBjb2x1bW5cbiAgICogdXNlIHRoZSBuZXcgYXBwcm9hY2ggaW5zdGVhZCBieSBmb2xsb3dpbmcgdGhlIG5hbWluZyBjb252ZW50aW9uIGNvbHVtbiBpZCArIElkVGFibGVDZWxsXG4gICAqIGUuZy4gZm9yIGEgY29sdW1uIHdpdGggdGhlIGlkICdzdGF0dXMnIGluIERhdGFUYWJsZSB1c2UgcFRlbXBsYXRlPVwic3RhdHVzSWRUYWJsZUNlbGxcIlxuICAgKi9cbiAgQENvbnRlbnRDaGlsZCgnY3VzdG9tVGFibGVDZWxsJykgY3VzdG9tVGFibGVDZWxsOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkXG4gIEBDb250ZW50Q2hpbGQoJ2dyaWRJdGVtJykgZ3JpZEl0ZW06IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWRcbiAgQENvbnRlbnRDaGlsZCgnbGlzdEl0ZW0nKSBsaXN0SXRlbTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuICBAQ29udGVudENoaWxkKCd0b3BDZW50ZXInKSB0b3BDZW50ZXI6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWRcbiAgQENvbnRlbnRDaGlsZCgnbGlzdFZhbHVlJykgbGlzdFZhbHVlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkXG4gIEBDb250ZW50Q2hpbGQoJ3RyYW5zbGF0aW9uS2V5TGlzdFZhbHVlJykgdHJhbnNsYXRpb25LZXlMaXN0VmFsdWU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWRcbiAgQENvbnRlbnRDaGlsZCgnbnVtYmVyTGlzdFZhbHVlJykgbnVtYmVyTGlzdFZhbHVlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkXG4gIEBDb250ZW50Q2hpbGQoJ3JlbGF0aXZlRGF0ZUxpc3RWYWx1ZScpIHJlbGF0aXZlRGF0ZUxpc3RWYWx1ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgV2lsbCBiZSByZW1vdmVkIGFuZCBpbnN0ZWFkIHRvIGNoYW5nZSB0aGUgdGVtcGxhdGUgb2YgYSBzcGVjaWZpYyBjb2x1bW5cbiAgICogdXNlIHRoZSBuZXcgYXBwcm9hY2ggaW5zdGVhZCBieSBmb2xsb3dpbmcgdGhlIG5hbWluZyBjb252ZW50aW9uIGNvbHVtbiBpZCArIElkTGlzdFZhbHVlXG4gICAqIGUuZy4gZm9yIGEgY29sdW1uIHdpdGggdGhlIGlkICdzdGF0dXMnIERhdGFMaXN0R3JpZCB1c2UgcFRlbXBsYXRlPVwic3RhdHVzSWRMaXN0VmFsdWVcIlxuICAgKi9cbiAgQENvbnRlbnRDaGlsZCgnY3VzdG9tTGlzdFZhbHVlJykgY3VzdG9tTGlzdFZhbHVlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkXG4gIEBDb250ZW50Q2hpbGQoJ3N0cmluZ0xpc3RWYWx1ZScpIHN0cmluZ0xpc3RWYWx1ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuICBAQ29udGVudENoaWxkKCdkYXRlTGlzdFZhbHVlJykgZGF0ZUxpc3RWYWx1ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuXG4gIHRlbXBsYXRlcyQ6IEJlaGF2aW9yU3ViamVjdDxRdWVyeUxpc3Q8UHJpbWVUZW1wbGF0ZT4gfCB1bmRlZmluZWQ+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxcbiAgICBRdWVyeUxpc3Q8UHJpbWVUZW1wbGF0ZT4gfCB1bmRlZmluZWRcbiAgPih1bmRlZmluZWQpXG4gIEBDb250ZW50Q2hpbGRyZW4oUHJpbWVUZW1wbGF0ZSlcbiAgc2V0IHRlbXBsYXRlcyh2YWx1ZTogUXVlcnlMaXN0PFByaW1lVGVtcGxhdGU+IHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy50ZW1wbGF0ZXMkLm5leHQodmFsdWUpXG4gIH1cblxuICBAT3V0cHV0KCkgZmlsdGVyZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEZpbHRlcltdPigpXG4gIEBPdXRwdXQoKSBzb3J0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFNvcnQ+KClcbiAgQE91dHB1dCgpIGRlbGV0ZUl0ZW0gPSBuZXcgRXZlbnRFbWl0dGVyPFJvd0xpc3RHcmlkRGF0YT4oKVxuICBAT3V0cHV0KCkgdmlld0l0ZW0gPSBuZXcgRXZlbnRFbWl0dGVyPFJvd0xpc3RHcmlkRGF0YT4oKVxuICBAT3V0cHV0KCkgZWRpdEl0ZW0gPSBuZXcgRXZlbnRFbWl0dGVyPFJvd0xpc3RHcmlkRGF0YT4oKVxuICBAT3V0cHV0KCkgZGF0YVZpZXdMYXlvdXRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPCdncmlkJyB8ICdsaXN0JyB8ICd0YWJsZSc+KClcbiAgQE91dHB1dCgpIGRpc3BsYXllZENvbHVtbnNDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPERhdGFUYWJsZUNvbHVtbltdPigpXG4gIEBPdXRwdXQoKSBzZWxlY3Rpb25DaGFuZ2VkOiBFdmVudEVtaXR0ZXI8Um93W10+ID0gbmV3IEV2ZW50RW1pdHRlcigpXG5cbiAgQE91dHB1dCgpIHBhZ2VDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8bnVtYmVyPiA9IG5ldyBFdmVudEVtaXR0ZXIoKVxuICBzZWxlY3RlZEdyb3VwS2V5ID0gJydcbiAgaXNEZWxldGVJdGVtT2JzZXJ2ZWQ6IGJvb2xlYW4gfCB1bmRlZmluZWRcbiAgaXNWaWV3SXRlbU9ic2VydmVkOiBib29sZWFuIHwgdW5kZWZpbmVkXG4gIGlzRWRpdEl0ZW1PYnNlcnZlZDogYm9vbGVhbiB8IHVuZGVmaW5lZFxuICBmaXJzdENvbHVtbklkOiBzdHJpbmcgfCB1bmRlZmluZWRcblxuICBASW5wdXQoKVxuICBnZXQgcGFnaW5hdG9yKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmxpc3RHcmlkUGFnaW5hdG9yICYmIHRoaXMudGFibGVQYWdpbmF0b3JcbiAgfVxuICBzZXQgcGFnaW5hdG9yKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5saXN0R3JpZFBhZ2luYXRvciA9IHZhbHVlXG4gICAgdGhpcy50YWJsZVBhZ2luYXRvciA9IHZhbHVlXG4gIH1cblxuICBnZXQgX2dyaWRJdGVtU3VidGl0bGVMaW5lcygpOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5ncmlkSXRlbVN1YnRpdGxlTGluZXNcbiAgfVxuICBnZXQgX2xpc3RJdGVtU3VidGl0bGVMaW5lcygpOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5saXN0SXRlbVN1YnRpdGxlTGluZXNcbiAgfVxuICBnZXQgX3RhYmxlQ2VsbCgpOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy50YWJsZUNlbGxcbiAgfVxuICBnZXQgX3N0cmluZ1RhYmxlQ2VsbCgpOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5zdHJpbmdUYWJsZUNlbGxcbiAgfVxuICBnZXQgX251bWJlclRhYmxlQ2VsbCgpOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5udW1iZXJUYWJsZUNlbGxcbiAgfVxuICBnZXQgX2N1c3RvbVRhYmxlQ2VsbCgpOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5jdXN0b21UYWJsZUNlbGxcbiAgfVxuICBnZXQgX3RhYmxlRGF0ZUNlbGwoKTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuZGF0ZVRhYmxlQ2VsbCA/PyB0aGlzLnRhYmxlRGF0ZUNlbGxcbiAgfVxuICBnZXQgX2RhdGVUYWJsZUNlbGwoKTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuZGF0ZVRhYmxlQ2VsbFxuICB9XG4gIGdldCBfdGFibGVSZWxhdGl2ZURhdGVDZWxsKCk6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLnJlbGF0aXZlRGF0ZVRhYmxlQ2VsbCA/PyB0aGlzLnRhYmxlUmVsYXRpdmVEYXRlQ2VsbFxuICB9XG4gIGdldCBfcmVsYXRpdmVEYXRlVGFibGVDZWxsKCk6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLnJlbGF0aXZlRGF0ZVRhYmxlQ2VsbFxuICB9XG4gIGdldCBfdGFibGVUcmFuc2xhdGlvbktleUNlbGwoKTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMudHJhbnNsYXRpb25LZXlUYWJsZUNlbGwgPz8gdGhpcy50YWJsZVRyYW5zbGF0aW9uS2V5Q2VsbFxuICB9XG4gIGdldCBfdHJhbnNsYXRpb25LZXlUYWJsZUNlbGwoKTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMudHJhbnNsYXRpb25LZXlUYWJsZUNlbGxcbiAgfVxuICBnZXQgX2dyaWRJdGVtKCk6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmdyaWRJdGVtXG4gIH1cbiAgZ2V0IF9saXN0SXRlbSgpOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5saXN0SXRlbVxuICB9XG4gIGdldCBfbGlzdFZhbHVlKCk6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmxpc3RWYWx1ZVxuICB9XG4gIGdldCBfdHJhbnNsYXRpb25LZXlMaXN0VmFsdWUoKTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMudHJhbnNsYXRpb25LZXlMaXN0VmFsdWVcbiAgfVxuICBnZXQgX251bWJlckxpc3RWYWx1ZSgpOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5udW1iZXJMaXN0VmFsdWVcbiAgfVxuICBnZXQgX3JlbGF0aXZlRGF0ZUxpc3RWYWx1ZSgpOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5yZWxhdGl2ZURhdGVMaXN0VmFsdWVcbiAgfVxuICBnZXQgX2N1c3RvbUxpc3RWYWx1ZSgpOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5jdXN0b21MaXN0VmFsdWVcbiAgfVxuICBnZXQgX3N0cmluZ0xpc3RWYWx1ZSgpOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5zdHJpbmdMaXN0VmFsdWVcbiAgfVxuICBnZXQgX2RhdGVMaXN0VmFsdWUoKTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuZGF0ZUxpc3RWYWx1ZVxuICB9XG5cbiAgX2RhdGE6IFJvd0xpc3RHcmlkRGF0YVtdID0gW11cbiAgQElucHV0KClcbiAgZ2V0IGRhdGEoKTogUm93TGlzdEdyaWREYXRhW10ge1xuICAgIHJldHVybiB0aGlzLl9kYXRhXG4gIH1cbiAgc2V0IGRhdGEodmFsdWU6IFJvd0xpc3RHcmlkRGF0YVtdKSB7XG4gICAgdGhpcy5fZGF0YSA9IHZhbHVlXG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkR3JvdXBLZXkgPSB0aGlzLmRlZmF1bHRHcm91cEtleVxuICAgIHRoaXMuZGlzcGxheWVkQ29sdW1ucyA9IHRoaXMuY29sdW1uc1xuICAgIGlmICh0aGlzLmRlZmF1bHRHcm91cEtleSkge1xuICAgICAgdGhpcy5kaXNwbGF5ZWRDb2x1bW5zID0gdGhpcy5jb2x1bW5zLmZpbHRlcigoY29sdW1uKSA9PlxuICAgICAgICBjb2x1bW4ucHJlZGVmaW5lZEdyb3VwS2V5cz8uaW5jbHVkZXModGhpcy5kZWZhdWx0R3JvdXBLZXkpXG4gICAgICApXG4gICAgfVxuICAgIHRoaXMuZGlzcGxheWVkQ29sdW1uc0NoYW5nZS5lbWl0KHRoaXMuZGlzcGxheWVkQ29sdW1ucylcbiAgICBpZiAoIXRoaXMuZ3JvdXBTZWxlY3Rpb25Ob0dyb3VwU2VsZWN0ZWRLZXkpIHtcbiAgICAgIHRoaXMuZ3JvdXBTZWxlY3Rpb25Ob0dyb3VwU2VsZWN0ZWRLZXkgPSAnT0NYX0lOVEVSQUNUSVZFX0RBVEFfVklFVy5OT19HUk9VUF9TRUxFQ1RFRCdcbiAgICB9XG4gICAgdGhpcy5maXJzdENvbHVtbklkID0gdGhpcy5jb2x1bW5zWzBdPy5pZFxuICB9XG5cbiAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgIHRoaXMudGVtcGxhdGVzPy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICBzd2l0Y2ggKGl0ZW0uZ2V0VHlwZSgpKSB7XG4gICAgICAgIGNhc2UgJ3RhYmxlQ2VsbCc6XG4gICAgICAgICAgdGhpcy50YWJsZUNlbGwgPSBpdGVtLnRlbXBsYXRlXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAndGFibGVEYXRlQ2VsbCc6XG4gICAgICAgICAgdGhpcy50YWJsZURhdGVDZWxsID0gaXRlbS50ZW1wbGF0ZVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgJ2RhdGVUYWJsZUNlbGwnOlxuICAgICAgICAgIHRoaXMuZGF0ZVRhYmxlQ2VsbCA9IGl0ZW0udGVtcGxhdGVcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlICd0YWJsZVJlbGF0aXZlRGF0ZUNlbGwnOlxuICAgICAgICAgIHRoaXMudGFibGVSZWxhdGl2ZURhdGVDZWxsID0gaXRlbS50ZW1wbGF0ZVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgJ3JlbGF0aXZlRGF0ZVRhYmxlQ2VsbCc6XG4gICAgICAgICAgdGhpcy5yZWxhdGl2ZURhdGVUYWJsZUNlbGwgPSBpdGVtLnRlbXBsYXRlXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAndGFibGVUcmFuc2xhdGlvbktleUNlbGwnOlxuICAgICAgICAgIHRoaXMudGFibGVUcmFuc2xhdGlvbktleUNlbGwgPSBpdGVtLnRlbXBsYXRlXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAndHJhbnNsYXRpb25LZXlUYWJsZUNlbGwnOlxuICAgICAgICAgIHRoaXMudHJhbnNsYXRpb25LZXlUYWJsZUNlbGwgPSBpdGVtLnRlbXBsYXRlXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAnZ3JpZEl0ZW1TdWJ0aXRsZUxpbmVzJzpcbiAgICAgICAgICB0aGlzLmdyaWRJdGVtU3VidGl0bGVMaW5lcyA9IGl0ZW0udGVtcGxhdGVcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlICdsaXN0SXRlbVN1YnRpdGxlTGluZXMnOlxuICAgICAgICAgIHRoaXMubGlzdEl0ZW1TdWJ0aXRsZUxpbmVzID0gaXRlbS50ZW1wbGF0ZVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgJ3N0cmluZ1RhYmxlQ2VsbCc6XG4gICAgICAgICAgdGhpcy5zdHJpbmdUYWJsZUNlbGwgPSBpdGVtLnRlbXBsYXRlXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAnbnVtYmVyVGFibGVDZWxsJzpcbiAgICAgICAgICB0aGlzLm51bWJlclRhYmxlQ2VsbCA9IGl0ZW0udGVtcGxhdGVcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlICdjdXN0b21UYWJsZUNlbGwnOlxuICAgICAgICAgIHRoaXMuY3VzdG9tVGFibGVDZWxsID0gaXRlbS50ZW1wbGF0ZVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgJ2dyaWRJdGVtJzpcbiAgICAgICAgICB0aGlzLmdyaWRJdGVtID0gaXRlbS50ZW1wbGF0ZVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgJ2xpc3RJdGVtJzpcbiAgICAgICAgICB0aGlzLmxpc3RJdGVtID0gaXRlbS50ZW1wbGF0ZVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgJ3RvcENlbnRlcic6XG4gICAgICAgICAgdGhpcy50b3BDZW50ZXIgPSBpdGVtLnRlbXBsYXRlXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAnbGlzdFZhbHVlJzpcbiAgICAgICAgICB0aGlzLmxpc3RWYWx1ZSA9IGl0ZW0udGVtcGxhdGVcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlICd0cmFuc2xhdGlvbktleUxpc3RWYWx1ZSc6XG4gICAgICAgICAgdGhpcy50cmFuc2xhdGlvbktleUxpc3RWYWx1ZSA9IGl0ZW0udGVtcGxhdGVcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlICdudW1iZXJMaXN0VmFsdWUnOlxuICAgICAgICAgIHRoaXMubnVtYmVyTGlzdFZhbHVlID0gaXRlbS50ZW1wbGF0ZVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgJ3JlbGF0aXZlRGF0ZUxpc3RWYWx1ZSc6XG4gICAgICAgICAgdGhpcy5yZWxhdGl2ZURhdGVMaXN0VmFsdWUgPSBpdGVtLnRlbXBsYXRlXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAnY3VzdG9tTGlzdFZhbHVlJzpcbiAgICAgICAgICB0aGlzLmN1c3RvbUxpc3RWYWx1ZSA9IGl0ZW0udGVtcGxhdGVcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlICdzdHJpbmdMaXN0VmFsdWUnOlxuICAgICAgICAgIHRoaXMuc3RyaW5nTGlzdFZhbHVlID0gaXRlbS50ZW1wbGF0ZVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgJ2RhdGVMaXN0VmFsdWUnOlxuICAgICAgICAgIHRoaXMuZGF0ZUxpc3RWYWx1ZSA9IGl0ZW0udGVtcGxhdGVcbiAgICAgICAgICBicmVha1xuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICBmaWx0ZXJpbmcoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuZmlsdGVycyA9IGV2ZW50XG4gICAgdGhpcy5maWx0ZXJlZC5lbWl0KGV2ZW50KVxuICB9XG5cbiAgc29ydGluZyhldmVudDogYW55KSB7XG4gICAgdGhpcy5zb3J0RGlyZWN0aW9uID0gZXZlbnQuc29ydERpcmVjdGlvblxuICAgIHRoaXMuc29ydEZpZWxkID0gZXZlbnQuc29ydENvbHVtblxuICAgIHRoaXMuc29ydGVkLmVtaXQoZXZlbnQpXG4gIH1cblxuICBvbkRlbGV0ZUVsZW1lbnQoZWxlbWVudDogUm93TGlzdEdyaWREYXRhKSB7XG4gICAgaWYgKHRoaXMuaXNEZWxldGVJdGVtT2JzZXJ2ZWQpIHtcbiAgICAgIHRoaXMuZGVsZXRlSXRlbS5lbWl0KGVsZW1lbnQpXG4gICAgfVxuICB9XG5cbiAgb25WaWV3RWxlbWVudChlbGVtZW50OiBSb3dMaXN0R3JpZERhdGEpIHtcbiAgICBpZiAodGhpcy5pc1ZpZXdJdGVtT2JzZXJ2ZWQpIHtcbiAgICAgIHRoaXMudmlld0l0ZW0uZW1pdChlbGVtZW50KVxuICAgIH1cbiAgfVxuXG4gIG9uRWRpdEVsZW1lbnQoZWxlbWVudDogUm93TGlzdEdyaWREYXRhKSB7XG4gICAgaWYgKHRoaXMuaXNFZGl0SXRlbU9ic2VydmVkKSB7XG4gICAgICB0aGlzLmVkaXRJdGVtLmVtaXQoZWxlbWVudClcbiAgICB9XG4gIH1cblxuICBvbkRhdGFWaWV3TGF5b3V0Q2hhbmdlKGxheW91dDogJ2dyaWQnIHwgJ2xpc3QnIHwgJ3RhYmxlJykge1xuICAgIHRoaXMubGF5b3V0ID0gbGF5b3V0XG4gICAgdGhpcy5kYXRhVmlld0xheW91dENoYW5nZS5lbWl0KGxheW91dClcbiAgfVxuXG4gIG9uU29ydENoYW5nZSgkZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuc29ydEZpZWxkID0gJGV2ZW50XG4gICAgdGhpcy5zb3J0ZWQuZW1pdCh7IHNvcnRDb2x1bW46IHRoaXMuc29ydEZpZWxkLCBzb3J0RGlyZWN0aW9uOiB0aGlzLnNvcnREaXJlY3Rpb24gfSlcbiAgfVxuXG4gIG9uU29ydERpcmVjdGlvbkNoYW5nZSgkZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuc29ydERpcmVjdGlvbiA9ICRldmVudFxuICAgIHRoaXMuc29ydGVkLmVtaXQoeyBzb3J0Q29sdW1uOiB0aGlzLnNvcnRGaWVsZCwgc29ydERpcmVjdGlvbjogdGhpcy5zb3J0RGlyZWN0aW9uIH0pXG4gIH1cblxuICBvbkNvbHVtbkdyb3VwU2VsZWN0aW9uQ2hhbmdlKGV2ZW50OiBHcm91cFNlbGVjdGlvbkNoYW5nZWRFdmVudCkge1xuICAgIHRoaXMuZGlzcGxheWVkQ29sdW1ucyA9IGV2ZW50LmFjdGl2ZUNvbHVtbnNcbiAgICB0aGlzLnNlbGVjdGVkR3JvdXBLZXkgPSBldmVudC5ncm91cEtleVxuICAgIHRoaXMuZGlzcGxheWVkQ29sdW1uc0NoYW5nZS5lbWl0KHRoaXMuZGlzcGxheWVkQ29sdW1ucylcbiAgfVxuXG4gIHJlZ2lzdGVyRXZlbnRMaXN0ZW5lckZvckRhdGFWaWV3KCkge1xuICAgIGlmICh0aGlzLmRlbGV0ZUl0ZW0ub2JzZXJ2ZWQpIHtcbiAgICAgIHRoaXMuaXNEZWxldGVJdGVtT2JzZXJ2ZWQgPSB0cnVlXG4gICAgICBpZiAoIXRoaXMuX2RhdGFWaWV3Q29tcG9uZW50Py5kZWxldGVJdGVtLm9ic2VydmVkKSB7XG4gICAgICAgIHRoaXMuX2RhdGFWaWV3Q29tcG9uZW50Py5kZWxldGVJdGVtLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgICB0aGlzLm9uRGVsZXRlRWxlbWVudChldmVudClcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHRoaXMudmlld0l0ZW0ub2JzZXJ2ZWQpIHtcbiAgICAgIHRoaXMuaXNWaWV3SXRlbU9ic2VydmVkID0gdHJ1ZVxuICAgICAgaWYgKCF0aGlzLl9kYXRhVmlld0NvbXBvbmVudD8udmlld0l0ZW0ub2JzZXJ2ZWQpIHtcbiAgICAgICAgdGhpcy5fZGF0YVZpZXdDb21wb25lbnQ/LnZpZXdJdGVtLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgICB0aGlzLm9uVmlld0VsZW1lbnQoZXZlbnQpXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfVxuICAgIGlmICh0aGlzLmVkaXRJdGVtLm9ic2VydmVkKSB7XG4gICAgICB0aGlzLmlzRWRpdEl0ZW1PYnNlcnZlZCA9IHRydWVcbiAgICAgIGlmICghdGhpcy5fZGF0YVZpZXdDb21wb25lbnQ/LmVkaXRJdGVtLm9ic2VydmVkKSB7XG4gICAgICAgIHRoaXMuX2RhdGFWaWV3Q29tcG9uZW50Py5lZGl0SXRlbS5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICAgICAgdGhpcy5vbkVkaXRFbGVtZW50KGV2ZW50KVxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAodGhpcy5zZWxlY3Rpb25DaGFuZ2VkLm9ic2VydmVkKSB7XG4gICAgICBpZiAoIXRoaXMuX2RhdGFWaWV3Q29tcG9uZW50Py5zZWxlY3Rpb25DaGFuZ2VkLm9ic2VydmVkKSB7XG4gICAgICAgIHRoaXMuX2RhdGFWaWV3Q29tcG9uZW50Py5zZWxlY3Rpb25DaGFuZ2VkLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgICB0aGlzLm9uUm93U2VsZWN0aW9uQ2hhbmdlKGV2ZW50KVxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG9uQ29sdW1uU2VsZWN0aW9uQ2hhbmdlKGV2ZW50OiBDb2x1bW5TZWxlY3Rpb25DaGFuZ2VkRXZlbnQpIHtcbiAgICB0aGlzLmRpc3BsYXllZENvbHVtbnMgPSBldmVudC5hY3RpdmVDb2x1bW5zXG4gICAgdGhpcy5zZWxlY3RlZEdyb3VwS2V5ID0gdGhpcy5jdXN0b21Hcm91cEtleVxuICAgIHRoaXMuZGlzcGxheWVkQ29sdW1uc0NoYW5nZS5lbWl0KHRoaXMuZGlzcGxheWVkQ29sdW1ucylcbiAgfVxuXG4gIG9uQWN0aW9uQ29sdW1uQ29uZmlnQ2hhbmdlKGV2ZW50OiBBY3Rpb25Db2x1bW5DaGFuZ2VkRXZlbnQpIHtcbiAgICB0aGlzLmZyb3plbkFjdGlvbkNvbHVtbiA9IGV2ZW50LmZyb3plbkFjdGlvbkNvbHVtblxuICAgIHRoaXMuYWN0aW9uQ29sdW1uUG9zaXRpb24gPSBldmVudC5hY3Rpb25Db2x1bW5Qb3NpdGlvblxuICB9XG5cbiAgb25Sb3dTZWxlY3Rpb25DaGFuZ2UoZXZlbnQ6IFJvd1tdKSB7XG4gICAgaWYgKHRoaXMuc2VsZWN0aW9uQ2hhbmdlZC5vYnNlcnZlZCkge1xuICAgICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2VkLmVtaXQoZXZlbnQpXG4gICAgfVxuICB9XG5cbiAgb25QYWdlQ2hhbmdlKGV2ZW50OiBudW1iZXIpIHtcbiAgICB0aGlzLnBhZ2UgPSBldmVudFxuICAgIHRoaXMucGFnZUNoYW5nZWQuZW1pdChldmVudClcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInAtMyBib3JkZXItYm90dG9tLTEgc3VyZmFjZS1ib3JkZXJcIj5cbiAgPGRpdiBjbGFzcz1cImZsZXggZmxleC13cmFwIGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBweS0xIGdhcC0yXCI+XG4gICAgPG9jeC1kYXRhLWxheW91dC1zZWxlY3Rpb25cbiAgICAgIFtzdXBwb3J0ZWRWaWV3TGF5b3V0c109XCJzdXBwb3J0ZWRWaWV3TGF5b3V0c1wiXG4gICAgICBbbGF5b3V0XT1cImxheW91dFwiXG4gICAgICAoZGF0YVZpZXdMYXlvdXRDaGFuZ2UpPVwib25EYXRhVmlld0xheW91dENoYW5nZSgkZXZlbnQpXCJcbiAgICA+PC9vY3gtZGF0YS1sYXlvdXQtc2VsZWN0aW9uPlxuXG4gICAgPGRpdiAqbmdJZj1cInRvcENlbnRlclwiPlxuICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJ0b3BDZW50ZXJcIj4gPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2ICpuZ0lmPVwibGF5b3V0ICE9PSAndGFibGUnXCIgY2xhc3M9XCJmbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMlwiPlxuICAgICAgPG9jeC1kYXRhLWxpc3QtZ3JpZC1zb3J0aW5nXG4gICAgICAgIFtzb3J0RGlyZWN0aW9uXT1cInNvcnREaXJlY3Rpb25cIlxuICAgICAgICBbc29ydEZpZWxkXT1cInNvcnRGaWVsZFwiXG4gICAgICAgIFtjb2x1bW5zXT1cImNvbHVtbnNcIlxuICAgICAgICBbc29ydFN0YXRlc109XCJzb3J0U3RhdGVzXCJcbiAgICAgICAgKHNvcnRDaGFuZ2UpPVwib25Tb3J0Q2hhbmdlKCRldmVudClcIlxuICAgICAgICAoc29ydERpcmVjdGlvbkNoYW5nZSk9XCJvblNvcnREaXJlY3Rpb25DaGFuZ2UoJGV2ZW50KVwiXG4gICAgICA+PC9vY3gtZGF0YS1saXN0LWdyaWQtc29ydGluZz5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgKm5nSWY9XCJsYXlvdXQgPT09ICd0YWJsZSdcIiBjbGFzcz1cImZsZXggZmxleC13cmFwIGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMlwiPlxuICAgICAgPG9jeC1jb2x1bW4tZ3JvdXAtc2VsZWN0aW9uXG4gICAgICAgIFtzZWxlY3RlZEdyb3VwS2V5XT1cInNlbGVjdGVkR3JvdXBLZXlcIlxuICAgICAgICBbY29sdW1uc109XCJjb2x1bW5zXCJcbiAgICAgICAgW2RlZmF1bHRHcm91cEtleV09XCJkZWZhdWx0R3JvdXBLZXlcIlxuICAgICAgICBbY3VzdG9tR3JvdXBLZXldPVwiY3VzdG9tR3JvdXBLZXlcIlxuICAgICAgICBbcGxhY2Vob2xkZXJLZXldPVwiZ3JvdXBTZWxlY3Rpb25Ob0dyb3VwU2VsZWN0ZWRLZXlcIlxuICAgICAgICAoZ3JvdXBTZWxlY3Rpb25DaGFuZ2VkKT1cIm9uQ29sdW1uR3JvdXBTZWxlY3Rpb25DaGFuZ2UoJGV2ZW50KVwiXG4gICAgICA+PC9vY3gtY29sdW1uLWdyb3VwLXNlbGVjdGlvbj5cblxuICAgICAgPG9jeC1jdXN0b20tZ3JvdXAtY29sdW1uLXNlbGVjdG9yXG4gICAgICAgIFtjb2x1bW5zXT1cImNvbHVtbnNcIlxuICAgICAgICBbZGlzcGxheWVkQ29sdW1uc109XCJkaXNwbGF5ZWRDb2x1bW5zXCJcbiAgICAgICAgKGNvbHVtblNlbGVjdGlvbkNoYW5nZWQpPVwib25Db2x1bW5TZWxlY3Rpb25DaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgIFtmcm96ZW5BY3Rpb25Db2x1bW5dPVwiZnJvemVuQWN0aW9uQ29sdW1uXCJcbiAgICAgICAgW2FjdGlvbkNvbHVtblBvc2l0aW9uXT1cImFjdGlvbkNvbHVtblBvc2l0aW9uXCJcbiAgICAgICAgKGFjdGlvbkNvbHVtbkNvbmZpZ0NoYW5nZWQpPVwib25BY3Rpb25Db2x1bW5Db25maWdDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICA+PC9vY3gtY3VzdG9tLWdyb3VwLWNvbHVtbi1zZWxlY3Rvcj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJwLTNcIj5cbiAgPG9jeC1kYXRhLXZpZXdcbiAgICBbY29sdW1uc109XCJkaXNwbGF5ZWRDb2x1bW5zXCJcbiAgICBbc29ydFN0YXRlc109XCJzb3J0U3RhdGVzXCJcbiAgICBbc29ydEZpZWxkXT1cInNvcnRGaWVsZFwiXG4gICAgW2ZpbHRlcnNdPVwiZmlsdGVyc1wiXG4gICAgW2RhdGFdPVwiZGF0YVwiXG4gICAgW3NvcnREaXJlY3Rpb25dPVwic29ydERpcmVjdGlvblwiXG4gICAgW3RpdGxlTGluZUlkXT1cInRpdGxlTGluZUlkXCJcbiAgICBbc3VidGl0bGVMaW5lSWRzXT1cInN1YnRpdGxlTGluZUlkc1wiXG4gICAgW2NsaWVudFNpZGVTb3J0aW5nXT1cImNsaWVudFNpZGVTb3J0aW5nXCJcbiAgICBbY2xpZW50U2lkZUZpbHRlcmluZ109XCJjbGllbnRTaWRlRmlsdGVyaW5nXCJcbiAgICBbcGFnZVNpemVzXT1cInBhZ2VTaXplc1wiXG4gICAgW3BhZ2VTaXplXT1cInBhZ2VTaXplXCJcbiAgICBbZW1wdHlSZXN1bHRzTWVzc2FnZV09XCJlbXB0eVJlc3VsdHNNZXNzYWdlXCJcbiAgICBbbGF5b3V0XT1cImxheW91dFwiXG4gICAgW25hbWVdPVwibmFtZVwiXG4gICAgW2RlbGV0ZVBlcm1pc3Npb25dPVwiZGVsZXRlUGVybWlzc2lvblwiXG4gICAgW2VkaXRQZXJtaXNzaW9uXT1cImVkaXRQZXJtaXNzaW9uXCJcbiAgICBbdmlld1Blcm1pc3Npb25dPVwidmlld1Blcm1pc3Npb25cIlxuICAgIFtkZWxldGVBY3Rpb25FbmFibGVkRmllbGRdPVwiZGVsZXRlQWN0aW9uRW5hYmxlZEZpZWxkXCJcbiAgICBbZGVsZXRlQWN0aW9uVmlzaWJsZUZpZWxkXT1cImRlbGV0ZUFjdGlvblZpc2libGVGaWVsZFwiXG4gICAgW2VkaXRBY3Rpb25FbmFibGVkRmllbGRdPVwiZWRpdEFjdGlvbkVuYWJsZWRGaWVsZFwiXG4gICAgW2VkaXRBY3Rpb25WaXNpYmxlRmllbGRdPVwiZWRpdEFjdGlvblZpc2libGVGaWVsZFwiXG4gICAgW3ZpZXdBY3Rpb25FbmFibGVkRmllbGRdPVwidmlld0FjdGlvbkVuYWJsZWRGaWVsZFwiXG4gICAgW3ZpZXdBY3Rpb25WaXNpYmxlRmllbGRdPVwidmlld0FjdGlvblZpc2libGVGaWVsZFwiXG4gICAgW2FkZGl0aW9uYWxBY3Rpb25zXT1cImFkZGl0aW9uYWxBY3Rpb25zXCJcbiAgICBbbGlzdEdyaWRQYWdpbmF0b3JdPVwibGlzdEdyaWRQYWdpbmF0b3JcIlxuICAgIFt0YWJsZVBhZ2luYXRvcl09XCJ0YWJsZVBhZ2luYXRvclwiXG4gICAgW3BhZ2VdPVwicGFnZVwiXG4gICAgKHBhZ2VDaGFuZ2VkKT1cIm9uUGFnZUNoYW5nZSgkZXZlbnQpXCJcbiAgICBbc2VsZWN0ZWRSb3dzXT1cInNlbGVjdGVkUm93c1wiXG4gICAgW2Zyb3plbkFjdGlvbkNvbHVtbl09XCJmcm96ZW5BY3Rpb25Db2x1bW5cIlxuICAgIFthY3Rpb25Db2x1bW5Qb3NpdGlvbl09XCJhY3Rpb25Db2x1bW5Qb3NpdGlvblwiXG4gICAgW3N0cmluZ1RhYmxlQ2VsbFRlbXBsYXRlXT1cIl9zdHJpbmdUYWJsZUNlbGwgPyBzdHJpbmdUYWJsZUNlbGwgOiB1bmRlZmluZWRcIlxuICAgIFtudW1iZXJUYWJsZUNlbGxUZW1wbGF0ZV09XCJfbnVtYmVyVGFibGVDZWxsID8gbnVtYmVyVGFibGVDZWxsIDogdW5kZWZpbmVkXCJcbiAgICBbY3VzdG9tVGFibGVDZWxsVGVtcGxhdGVdPVwiX2N1c3RvbVRhYmxlQ2VsbCA/IGN1c3RvbVRhYmxlQ2VsbCA6IHVuZGVmaW5lZFwiXG4gICAgW2RhdGVUYWJsZUNlbGxUZW1wbGF0ZV09XCJfZGF0ZVRhYmxlQ2VsbCA/IGRhdGVUYWJsZUNlbGwgOiBfdGFibGVEYXRlQ2VsbCA/IHRhYmxlRGF0ZUNlbGwgOiB1bmRlZmluZWRcIlxuICAgIFtyZWxhdGl2ZURhdGVUYWJsZUNlbGxUZW1wbGF0ZV09XCJfcmVsYXRpdmVEYXRlVGFibGVDZWxsID8gcmVsYXRpdmVEYXRlVGFibGVDZWxsIDogX3RhYmxlUmVsYXRpdmVEYXRlQ2VsbCA/IHRhYmxlUmVsYXRpdmVEYXRlQ2VsbCA6IHVuZGVmaW5lZFwiXG4gICAgW3RhYmxlQ2VsbFRlbXBsYXRlXT1cIl90YWJsZUNlbGwgPyB0YWJsZUNlbGwgOiB1bmRlZmluZWRcIlxuICAgIFt0cmFuc2xhdGlvbktleVRhYmxlQ2VsbFRlbXBsYXRlXT1cIl90cmFuc2xhdGlvbktleVRhYmxlQ2VsbCA/IHRyYW5zbGF0aW9uS2V5VGFibGVDZWxsIDogX3RhYmxlVHJhbnNsYXRpb25LZXlDZWxsID8gdGFibGVUcmFuc2xhdGlvbktleUNlbGwgOiB1bmRlZmluZWRcIlxuICAgIFtncmlkSXRlbVN1YnRpdGxlTGluZXNUZW1wbGF0ZV09XCJfZ3JpZEl0ZW1TdWJ0aXRsZUxpbmVzID8gZ3JpZEl0ZW1TdWJ0aXRsZUxpbmVzIDogdW5kZWZpbmVkXCJcbiAgICBbbGlzdEl0ZW1TdWJ0aXRsZUxpbmVzVGVtcGxhdGVdPVwiX2xpc3RJdGVtU3VidGl0bGVMaW5lcyA/IGxpc3RJdGVtU3VidGl0bGVMaW5lcyA6IHVuZGVmaW5lZFwiXG4gICAgW2xpc3RJdGVtVGVtcGxhdGVdPVwiX2xpc3RJdGVtID8gbGlzdEl0ZW0gOiB1bmRlZmluZWRcIlxuICAgIFtsaXN0VmFsdWVUZW1wbGF0ZV09XCJfbGlzdFZhbHVlID8gbGlzdFZhbHVlIDogdW5kZWZpbmVkXCJcbiAgICBbdHJhbnNsYXRpb25LZXlMaXN0VmFsdWVUZW1wbGF0ZV09XCJfdHJhbnNsYXRpb25LZXlMaXN0VmFsdWUgPyB0cmFuc2xhdGlvbktleUxpc3RWYWx1ZSA6IHVuZGVmaW5lZFwiXG4gICAgW251bWJlckxpc3RWYWx1ZVRlbXBsYXRlXT1cIl9udW1iZXJMaXN0VmFsdWUgPyBudW1iZXJMaXN0VmFsdWUgOiB1bmRlZmluZWRcIlxuICAgIFtyZWxhdGl2ZURhdGVMaXN0VmFsdWVUZW1wbGF0ZV09XCJfcmVsYXRpdmVEYXRlTGlzdFZhbHVlID8gcmVsYXRpdmVEYXRlTGlzdFZhbHVlIDogdW5kZWZpbmVkXCJcbiAgICBbY3VzdG9tTGlzdFZhbHVlVGVtcGxhdGVdPVwiX2N1c3RvbUxpc3RWYWx1ZSA/IGN1c3RvbUxpc3RWYWx1ZSA6IHVuZGVmaW5lZFwiXG4gICAgW3N0cmluZ0xpc3RWYWx1ZVRlbXBsYXRlXT1cIl9zdHJpbmdMaXN0VmFsdWUgPyBzdHJpbmdMaXN0VmFsdWUgOiB1bmRlZmluZWRcIlxuICAgIFtkYXRlTGlzdFZhbHVlVGVtcGxhdGVdPVwiX2RhdGVMaXN0VmFsdWUgPyBkYXRlTGlzdFZhbHVlIDogdW5kZWZpbmVkXCJcbiAgICBbZ3JpZEl0ZW1UZW1wbGF0ZV09XCJfZ3JpZEl0ZW0gPyBncmlkSXRlbSAgOiB1bmRlZmluZWRcIlxuICAgIChzb3J0ZWQpPVwic29ydGluZygkZXZlbnQpXCJcbiAgICAoZmlsdGVyZWQpPVwiZmlsdGVyaW5nKCRldmVudClcIlxuICAgIFt0b3RhbFJlY29yZHNPblNlcnZlcl09XCJ0b3RhbFJlY29yZHNPblNlcnZlclwiXG4gICAgW2N1cnJlbnRQYWdlU2hvd2luZ0tleV09XCJjdXJyZW50UGFnZVNob3dpbmdLZXlcIlxuICAgIFtjdXJyZW50UGFnZVNob3dpbmdXaXRoVG90YWxPblNlcnZlcktleV09XCJjdXJyZW50UGFnZVNob3dpbmdXaXRoVG90YWxPblNlcnZlcktleVwiXG4gICAgW3BhcmVudFRlbXBsYXRlc109XCJ0ZW1wbGF0ZXMkIHwgYXN5bmNcIlxuICA+XG4gIDwvb2N4LWRhdGEtdmlldz5cbjwvZGl2PlxuPG5nLXRlbXBsYXRlICNzdHJpbmdUYWJsZUNlbGwgbGV0LXJvd09iamVjdD1cInJvd09iamVjdFwiIGxldC1jb2x1bW49XCJjb2x1bW5cIj5cbiAgPG5nLWNvbnRhaW5lclxuICAgICpuZ0lmPVwiX3N0cmluZ1RhYmxlQ2VsbFwiXG4gICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiX3N0cmluZ1RhYmxlQ2VsbFwiXG4gICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntyb3dPYmplY3Q6IHJvd09iamVjdCwgY29sdW1uOmNvbHVtbn1cIlxuICA+XG4gIDwvbmctY29udGFpbmVyXG4+PC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjdGFibGVEYXRlQ2VsbCBsZXQtcm93T2JqZWN0PVwicm93T2JqZWN0XCIgbGV0LWNvbHVtbj1cImNvbHVtblwiPlxuICA8bmctY29udGFpbmVyXG4gICAgKm5nSWY9XCJfdGFibGVEYXRlQ2VsbFwiXG4gICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiX3RhYmxlRGF0ZUNlbGxcIlxuICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7cm93T2JqZWN0OnJvd09iamVjdCwgY29sdW1uOmNvbHVtbn1cIlxuICA+XG4gIDwvbmctY29udGFpbmVyXG4+PC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjZGF0ZVRhYmxlQ2VsbCBsZXQtcm93T2JqZWN0PVwicm93T2JqZWN0XCIgbGV0LWNvbHVtbj1cImNvbHVtblwiPlxuICA8bmctY29udGFpbmVyXG4gICAgKm5nSWY9XCJfZGF0ZVRhYmxlQ2VsbFwiXG4gICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiX2RhdGVUYWJsZUNlbGxcIlxuICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7cm93T2JqZWN0OnJvd09iamVjdCwgY29sdW1uOmNvbHVtbn1cIlxuICA+XG4gIDwvbmctY29udGFpbmVyXG4+PC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjdGFibGVSZWxhdGl2ZURhdGVDZWxsIGxldC1yb3dPYmplY3Q9XCJyb3dPYmplY3RcIiBsZXQtY29sdW1uPVwiY29sdW1uXCI+XG4gIDxuZy1jb250YWluZXJcbiAgICAqbmdJZj1cIl90YWJsZVJlbGF0aXZlRGF0ZUNlbGxcIlxuICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIl90YWJsZVJlbGF0aXZlRGF0ZUNlbGxcIlxuICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7cm93T2JqZWN0OnJvd09iamVjdCwgY29sdW1uOmNvbHVtbn1cIlxuICA+XG4gIDwvbmctY29udGFpbmVyXG4+PC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjcmVsYXRpdmVEYXRlVGFibGVDZWxsIGxldC1yb3dPYmplY3Q9XCJyb3dPYmplY3RcIiBsZXQtY29sdW1uPVwiY29sdW1uXCI+XG4gIDxuZy1jb250YWluZXJcbiAgICAqbmdJZj1cIl9yZWxhdGl2ZURhdGVUYWJsZUNlbGxcIlxuICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIl9yZWxhdGl2ZURhdGVUYWJsZUNlbGxcIlxuICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7cm93T2JqZWN0OnJvd09iamVjdCwgY29sdW1uOmNvbHVtbn1cIlxuICA+XG4gIDwvbmctY29udGFpbmVyXG4+PC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjdGFibGVDZWxsIGxldC1yb3dPYmplY3Q9XCJyb3dPYmplY3RcIiBsZXQtY29sdW1uPVwiY29sdW1uXCI+XG4gIDxuZy1jb250YWluZXJcbiAgICAqbmdJZj1cIl90YWJsZUNlbGxcIlxuICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIl90YWJsZUNlbGxcIlxuICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7cm93T2JqZWN0OiByb3dPYmplY3QsIGNvbHVtbjpjb2x1bW59XCJcbiAgPlxuICA8L25nLWNvbnRhaW5lclxuPjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI3RhYmxlVHJhbnNsYXRpb25LZXlDZWxsIGxldC1yb3dPYmplY3Q9XCJyb3dPYmplY3RcIiBsZXQtY29sdW1uPVwiY29sdW1uXCI+XG4gIDxuZy1jb250YWluZXJcbiAgICAqbmdJZj1cIl90YWJsZVRyYW5zbGF0aW9uS2V5Q2VsbFwiXG4gICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiX3RhYmxlVHJhbnNsYXRpb25LZXlDZWxsXCJcbiAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie3Jvd09iamVjdDpyb3dPYmplY3QsIGNvbHVtbjpjb2x1bW59XCJcbiAgPlxuICA8L25nLWNvbnRhaW5lclxuPjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI3RyYW5zbGF0aW9uS2V5VGFibGVDZWxsIGxldC1yb3dPYmplY3Q9XCJyb3dPYmplY3RcIiBsZXQtY29sdW1uPVwiY29sdW1uXCI+XG4gIDxuZy1jb250YWluZXJcbiAgICAqbmdJZj1cIl90cmFuc2xhdGlvbktleVRhYmxlQ2VsbFwiXG4gICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiX3RyYW5zbGF0aW9uS2V5VGFibGVDZWxsXCJcbiAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie3Jvd09iamVjdDpyb3dPYmplY3QsIGNvbHVtbjpjb2x1bW59XCJcbiAgPlxuICA8L25nLWNvbnRhaW5lclxuPjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI2dyaWRJdGVtU3VidGl0bGVMaW5lcyBsZXQtaXRlbT5cbiAgPG5nLWNvbnRhaW5lclxuICAgICpuZ0lmPVwiX2dyaWRJdGVtU3VidGl0bGVMaW5lc1wiXG4gICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiX2dyaWRJdGVtU3VidGl0bGVMaW5lc1wiXG4gICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInskaW1wbGljaXQ6aXRlbX1cIlxuICA+XG4gIDwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjbGlzdEl0ZW1TdWJ0aXRsZUxpbmVzIGxldC1pdGVtPlxuICA8bmctY29udGFpbmVyXG4gICAgKm5nSWY9XCJfbGlzdEl0ZW1TdWJ0aXRsZUxpbmVzXCJcbiAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJfbGlzdEl0ZW1TdWJ0aXRsZUxpbmVzXCJcbiAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyRpbXBsaWNpdDppdGVtfVwiXG4gID5cbiAgPC9uZy1jb250YWluZXJcbj48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICNncmlkSXRlbSBsZXQtaXRlbT5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIl9ncmlkSXRlbVwiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIl9ncmlkSXRlbVwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7JGltcGxpY2l0Oml0ZW19XCI+XG4gIDwvbmctY29udGFpbmVyXG4+PC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjbGlzdEl0ZW0gbGV0LWl0ZW0+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJfbGlzdEl0ZW1cIiBbbmdUZW1wbGF0ZU91dGxldF09XCJfbGlzdEl0ZW1cIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyRpbXBsaWNpdDppdGVtfVwiPlxuICA8L25nLWNvbnRhaW5lclxuPjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI2xpc3RWYWx1ZSBsZXQtcm93T2JqZWN0PVwicm93T2JqZWN0XCIgbGV0LWNvbHVtbj1cImNvbHVtblwiPlxuICA8bmctY29udGFpbmVyXG4gICAgKm5nSWY9XCJfbGlzdFZhbHVlXCJcbiAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJfbGlzdFZhbHVlXCJcbiAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie3Jvd09iamVjdDogcm93T2JqZWN0LCBjb2x1bW46Y29sdW1ufVwiXG4gID5cbiAgPC9uZy1jb250YWluZXJcbj48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICN0cmFuc2xhdGlvbktleUxpc3RWYWx1ZSBsZXQtcm93T2JqZWN0PVwicm93T2JqZWN0XCIgbGV0LWNvbHVtbj1cImNvbHVtblwiPlxuICA8bmctY29udGFpbmVyXG4gICAgKm5nSWY9XCJfdHJhbnNsYXRpb25LZXlMaXN0VmFsdWVcIlxuICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIl90cmFuc2xhdGlvbktleUxpc3RWYWx1ZVwiXG4gICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntyb3dPYmplY3Q6IHJvd09iamVjdCwgY29sdW1uOmNvbHVtbn1cIlxuICA+XG4gIDwvbmctY29udGFpbmVyXG4+PC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjbnVtYmVyTGlzdFZhbHVlIGxldC1yb3dPYmplY3Q9XCJyb3dPYmplY3RcIiBsZXQtY29sdW1uPVwiY29sdW1uXCI+XG4gIDxuZy1jb250YWluZXJcbiAgICAqbmdJZj1cIl9udW1iZXJMaXN0VmFsdWVcIlxuICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIl9udW1iZXJMaXN0VmFsdWVcIlxuICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7cm93T2JqZWN0OiByb3dPYmplY3QsIGNvbHVtbjpjb2x1bW59XCJcbiAgPlxuICA8L25nLWNvbnRhaW5lclxuPjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI3JlbGF0aXZlRGF0ZUxpc3RWYWx1ZSBsZXQtcm93T2JqZWN0PVwicm93T2JqZWN0XCIgbGV0LWNvbHVtbj1cImNvbHVtblwiPlxuICA8bmctY29udGFpbmVyXG4gICAgKm5nSWY9XCJfcmVsYXRpdmVEYXRlTGlzdFZhbHVlXCJcbiAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJfcmVsYXRpdmVEYXRlTGlzdFZhbHVlXCJcbiAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie3Jvd09iamVjdDogcm93T2JqZWN0LCBjb2x1bW46Y29sdW1ufVwiXG4gID5cbiAgPC9uZy1jb250YWluZXJcbj48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICNjdXN0b21MaXN0VmFsdWUgbGV0LXJvd09iamVjdD1cInJvd09iamVjdFwiIGxldC1jb2x1bW49XCJjb2x1bW5cIj5cbiAgPG5nLWNvbnRhaW5lclxuICAgICpuZ0lmPVwiX2N1c3RvbUxpc3RWYWx1ZVwiXG4gICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiX2N1c3RvbUxpc3RWYWx1ZVwiXG4gICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntyb3dPYmplY3Q6IHJvd09iamVjdCwgY29sdW1uOmNvbHVtbn1cIlxuICA+XG4gIDwvbmctY29udGFpbmVyXG4+PC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjc3RyaW5nTGlzdFZhbHVlIGxldC1yb3dPYmplY3Q9XCJyb3dPYmplY3RcIiBsZXQtY29sdW1uPVwiY29sdW1uXCI+XG4gIDxuZy1jb250YWluZXJcbiAgICAqbmdJZj1cIl9zdHJpbmdMaXN0VmFsdWVcIlxuICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIl9zdHJpbmdMaXN0VmFsdWVcIlxuICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7cm93T2JqZWN0OiByb3dPYmplY3QsIGNvbHVtbjpjb2x1bW59XCJcbiAgPlxuICA8L25nLWNvbnRhaW5lclxuPjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI2RhdGVMaXN0VmFsdWUgbGV0LXJvd09iamVjdD1cInJvd09iamVjdFwiIGxldC1jb2x1bW49XCJjb2x1bW5cIj5cbiAgPG5nLWNvbnRhaW5lclxuICAgICpuZ0lmPVwiX2RhdGVMaXN0VmFsdWVcIlxuICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIl9kYXRlTGlzdFZhbHVlXCJcbiAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie3Jvd09iamVjdDogcm93T2JqZWN0LCBjb2x1bW46Y29sdW1ufVwiXG4gID5cbiAgPC9uZy1jb250YWluZXJcbj48L25nLXRlbXBsYXRlPiJdfQ==
|
|
561
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJhY3RpdmUtZGF0YS12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1hY2NlbGVyYXRvci9zcmMvbGliL2NvbXBvbmVudHMvaW50ZXJhY3RpdmUtZGF0YS12aWV3L2ludGVyYWN0aXZlLWRhdGEtdmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItYWNjZWxlcmF0b3Ivc3JjL2xpYi9jb21wb25lbnRzL2ludGVyYWN0aXZlLWRhdGEtdmlldy9pbnRlcmFjdGl2ZS1kYXRhLXZpZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFDVCxZQUFZLEVBQ1osZUFBZSxFQUNmLFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUdOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQTtBQUN0QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBVTNDLE9BQU8sRUFBRSxpQkFBaUIsRUFBbUIsTUFBTSxrQ0FBa0MsQ0FBQTtBQUNyRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFBOzs7Ozs7OztBQVF0QyxNQUFNLE9BQU8sNEJBQTRCO0lBTnpDO1FBeUJXLFNBQUksR0FBRyxNQUFNLENBQUE7UUFFYixvQkFBZSxHQUFhLEVBQUUsQ0FBQTtRQUM5Qix5QkFBb0IsR0FBa0MsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFBO1FBQy9FLFlBQU8sR0FBc0IsRUFBRSxDQUFBO1FBRS9CLHNCQUFpQixHQUFHLElBQUksQ0FBQTtRQUN4Qix3QkFBbUIsR0FBRyxJQUFJLENBQUE7UUFDMUIsa0JBQWEsR0FBRyxpQkFBaUIsQ0FBQTtRQUNqQyxZQUFPLEdBQWEsRUFBRSxDQUFBO1FBQ3RCLGtCQUFhLHVDQUE0QztRQUN6RCxjQUFT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QWpCLE1BQU07Z0JBQ0csUUFBUTtzQkFBakIsTUFBTTtnQkFDRyxvQkFBb0I7c0JBQTdCLE1BQU07Z0JBQ0csc0JBQXNCO3NCQUEvQixNQUFNO2dCQUNHLGdCQUFnQjtzQkFBekIsTUFBTTtnQkFFRyxXQUFXO3NCQUFwQixNQUFNO2dCQVFILFNBQVM7c0JBRFosS0FBSztnQkFnR0YsSUFBSTtzQkFEUCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IFByaW1lVGVtcGxhdGUgfSBmcm9tICdwcmltZW5nL2FwaSdcbmltcG9ydCB7IERhdGFBY3Rpb24gfSBmcm9tICcuLi8uLi9tb2RlbC9kYXRhLWFjdGlvbidcbmltcG9ydCB7IERhdGFTb3J0RGlyZWN0aW9uIH0gZnJvbSAnLi4vLi4vbW9kZWwvZGF0YS1zb3J0LWRpcmVjdGlvbidcbmltcG9ydCB7IERhdGFUYWJsZUNvbHVtbiB9IGZyb20gJy4uLy4uL21vZGVsL2RhdGEtdGFibGUtY29sdW1uLm1vZGVsJ1xuaW1wb3J0IHsgR3JvdXBTZWxlY3Rpb25DaGFuZ2VkRXZlbnQgfSBmcm9tICcuLi9jb2x1bW4tZ3JvdXAtc2VsZWN0aW9uL2NvbHVtbi1ncm91cC1zZWxlY3Rpb24uY29tcG9uZW50J1xuaW1wb3J0IHtcbiAgQWN0aW9uQ29sdW1uQ2hhbmdlZEV2ZW50LFxuICBDb2x1bW5TZWxlY3Rpb25DaGFuZ2VkRXZlbnQsXG59IGZyb20gJy4uL2N1c3RvbS1ncm91cC1jb2x1bW4tc2VsZWN0b3IvY3VzdG9tLWdyb3VwLWNvbHVtbi1zZWxlY3Rvci5jb21wb25lbnQnXG5pbXBvcnQgeyBGaWx0ZXIsIFJvdywgU29ydCB9IGZyb20gJy4uL2RhdGEtdGFibGUvZGF0YS10YWJsZS5jb21wb25lbnQnXG5pbXBvcnQgeyBEYXRhVmlld0NvbXBvbmVudCwgUm93TGlzdEdyaWREYXRhIH0gZnJvbSAnLi4vZGF0YS12aWV3L2RhdGEtdmlldy5jb21wb25lbnQnXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJ1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdvY3gtaW50ZXJhY3RpdmUtZGF0YS12aWV3JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ludGVyYWN0aXZlLWRhdGEtdmlldy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2ludGVyYWN0aXZlLWRhdGEtdmlldy5jb21wb25lbnQuY3NzJ10sXG4gIHByb3ZpZGVyczogW3sgcHJvdmlkZTogJ0ludGVyYWN0aXZlRGF0YVZpZXdDb21wb25lbnQnLCB1c2VFeGlzdGluZzogSW50ZXJhY3RpdmVEYXRhVmlld0NvbXBvbmVudCB9XSxcbn0pXG5leHBvcnQgY2xhc3MgSW50ZXJhY3RpdmVEYXRhVmlld0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJDb250ZW50SW5pdCB7XG4gIF9kYXRhVmlld0NvbXBvbmVudDogRGF0YVZpZXdDb21wb25lbnQgfCB1bmRlZmluZWRcbiAgQFZpZXdDaGlsZChEYXRhVmlld0NvbXBvbmVudCkgc2V0IGRhdGFWaWV3KHJlZjogRGF0YVZpZXdDb21wb25lbnQgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLl9kYXRhVmlld0NvbXBvbmVudCA9IHJlZlxuICAgIHRoaXMucmVnaXN0ZXJFdmVudExpc3RlbmVyRm9yRGF0YVZpZXcoKVxuICB9XG4gIGdldCBkYXRhVmlldygpOiBEYXRhVmlld0NvbXBvbmVudCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX2RhdGFWaWV3Q29tcG9uZW50XG4gIH1cblxuICBASW5wdXQoKSBkZWxldGVQZXJtaXNzaW9uOiBzdHJpbmcgfCB1bmRlZmluZWRcbiAgQElucHV0KCkgZWRpdFBlcm1pc3Npb246IHN0cmluZyB8IHVuZGVmaW5lZFxuICBASW5wdXQoKSB2aWV3UGVybWlzc2lvbjogc3RyaW5nIHwgdW5kZWZpbmVkXG4gIEBJbnB1dCgpIGRlbGV0ZUFjdGlvblZpc2libGVGaWVsZDogc3RyaW5nIHwgdW5kZWZpbmVkXG4gIEBJbnB1dCgpIGRlbGV0ZUFjdGlvbkVuYWJsZWRGaWVsZDogc3RyaW5nIHwgdW5kZWZpbmVkXG4gIEBJbnB1dCgpIHZpZXdBY3Rpb25WaXNpYmxlRmllbGQ6IHN0cmluZyB8IHVuZGVmaW5lZFxuICBASW5wdXQoKSB2aWV3QWN0aW9uRW5hYmxlZEZpZWxkOiBzdHJpbmcgfCB1bmRlZmluZWRcbiAgQElucHV0KCkgZWRpdEFjdGlvblZpc2libGVGaWVsZDogc3RyaW5nIHwgdW5kZWZpbmVkXG4gIEBJbnB1dCgpIGVkaXRBY3Rpb25FbmFibGVkRmllbGQ6IHN0cmluZyB8IHVuZGVmaW5lZFxuICBASW5wdXQoKSBuYW1lID0gJ0RhdGEnXG4gIEBJbnB1dCgpIHRpdGxlTGluZUlkOiBzdHJpbmcgfCB1bmRlZmluZWRcbiAgQElucHV0KCkgc3VidGl0bGVMaW5lSWRzOiBzdHJpbmdbXSA9IFtdXG4gIEBJbnB1dCgpIHN1cHBvcnRlZFZpZXdMYXlvdXRzOiAoJ2dyaWQnIHwgJ2xpc3QnIHwgJ3RhYmxlJylbXSA9IFsnZ3JpZCcsICdsaXN0JywgJ3RhYmxlJ11cbiAgQElucHV0KCkgY29sdW1uczogRGF0YVRhYmxlQ29sdW1uW10gPSBbXVxuICBASW5wdXQoKSBlbXB0eVJlc3VsdHNNZXNzYWdlOiBzdHJpbmcgfCB1bmRlZmluZWRcbiAgQElucHV0KCkgY2xpZW50U2lkZVNvcnRpbmcgPSB0cnVlXG4gIEBJbnB1dCgpIGNsaWVudFNpZGVGaWx0ZXJpbmcgPSB0cnVlXG4gIEBJbnB1dCgpIGZhbGxiYWNrSW1hZ2UgPSAncGxhY2Vob2xkZXIucG5nJ1xuICBASW5wdXQoKSBmaWx0ZXJzOiBGaWx0ZXJbXSA9IFtdXG4gIEBJbnB1dCgpIHNvcnREaXJlY3Rpb246IERhdGFTb3J0RGlyZWN0aW9uID0gRGF0YVNvcnREaXJlY3Rpb24uTk9ORVxuICBASW5wdXQoKSBzb3J0RmllbGQ6IGFueSA9ICcnXG4gIEBJbnB1dCgpIHNvcnRTdGF0ZXM6IERhdGFTb3J0RGlyZWN0aW9uW10gPSBbXG4gICAgRGF0YVNvcnREaXJlY3Rpb24uQVNDRU5ESU5HLFxuICAgIERhdGFTb3J0RGlyZWN0aW9uLkRFU0NFTkRJTkcsXG4gICAgRGF0YVNvcnREaXJlY3Rpb24uTk9ORSxcbiAgXVxuICBASW5wdXQoKSBwYWdlU2l6ZXM6IG51bWJlcltdID0gWzEwLCAyNSwgNTBdXG4gIEBJbnB1dCgpIHBhZ2VTaXplOiBudW1iZXIgfCB1bmRlZmluZWRcbiAgQElucHV0KCkgdG90YWxSZWNvcmRzT25TZXJ2ZXI6IG51bWJlciB8IHVuZGVmaW5lZFxuICBASW5wdXQoKSBsYXlvdXQ6ICdncmlkJyB8ICdsaXN0JyB8ICd0YWJsZScgPSAndGFibGUnXG4gIEBJbnB1dCgpIGRlZmF1bHRHcm91cEtleSA9ICcnXG4gIEBJbnB1dCgpIGN1c3RvbUdyb3VwS2V5ID0gJ09DWF9JTlRFUkFDVElWRV9EQVRBX1ZJRVcuQ1VTVE9NX0dST1VQJ1xuICBASW5wdXQoKSBncm91cFNlbGVjdGlvbk5vR3JvdXBTZWxlY3RlZEtleSA9ICdPQ1hfSU5URVJBQ1RJVkVfREFUQV9WSUVXLk5PX0dST1VQX1NFTEVDVEVEJ1xuICBASW5wdXQoKSBjdXJyZW50UGFnZVNob3dpbmdLZXkgPSAnT0NYX0RBVEFfVEFCTEUuU0hPV0lORydcbiAgQElucHV0KCkgY3VycmVudFBhZ2VTaG93aW5nV2l0aFRvdGFsT25TZXJ2ZXJLZXkgPSAnT0NYX0RBVEFfVEFCTEUuU0hPV0lOR19XSVRIX1RPVEFMX09OX1NFUlZFUidcbiAgQElucHV0KCkgYWRkaXRpb25hbEFjdGlvbnM6IERhdGFBY3Rpb25bXSA9IFtdXG4gIEBJbnB1dCgpIGxpc3RHcmlkUGFnaW5hdG9yID0gdHJ1ZVxuICBASW5wdXQoKSB0YWJsZVBhZ2luYXRvciA9IHRydWVcbiAgQElucHV0KCkgcGFnZSA9IDBcbiAgQElucHV0KCkgc2VsZWN0ZWRSb3dzOiBSb3dbXSA9IFtdXG4gIEBJbnB1dCgpIGRpc3BsYXllZENvbHVtbnM6IERhdGFUYWJsZUNvbHVtbltdID0gW11cbiAgQElucHV0KCkgZnJvemVuQWN0aW9uQ29sdW1uID0gZmFsc2VcbiAgQElucHV0KCkgYWN0aW9uQ29sdW1uUG9zaXRpb246ICdsZWZ0JyB8ICdyaWdodCcgPSAncmlnaHQnXG4gIEBDb250ZW50Q2hpbGQoJ3RhYmxlQ2VsbCcpIHRhYmxlQ2VsbDogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgV2lsbCBiZSByZXBsYWNlZCBieSBkYXRlVGFibGVDZWxsXG4gICAqL1xuICBAQ29udGVudENoaWxkKCd0YWJsZURhdGVDZWxsJykgdGFibGVEYXRlQ2VsbDogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuICBAQ29udGVudENoaWxkKCdkYXRlVGFibGVDZWxsJykgZGF0ZVRhYmxlQ2VsbDogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBXaWxsIGJlIHJlcGxhY2VkIGJ5IHJlbGF0aXZlRGF0ZVRhYmxlQ2VsbFxuICAgKi9cbiAgQENvbnRlbnRDaGlsZCgndGFibGVSZWxhdGl2ZURhdGVDZWxsJykgdGFibGVSZWxhdGl2ZURhdGVDZWxsOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkXG4gIEBDb250ZW50Q2hpbGQoJ3JlbGF0aXZlRGF0ZVRhYmxlQ2VsbCcpIHJlbGF0aXZlRGF0ZVRhYmxlQ2VsbDogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBXaWxsIGJlIHJlcGxhY2VkIGJ5IHRyYW5zbGF0aW9uS2V5VGFibGVDZWxsXG4gICAqL1xuICBAQ29udGVudENoaWxkKCd0YWJsZVRyYW5zbGF0aW9uS2V5Q2VsbCcpIHRhYmxlVHJhbnNsYXRpb25LZXlDZWxsOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkXG4gIEBDb250ZW50Q2hpbGQoJ3RyYW5zbGF0aW9uS2V5VGFibGVDZWxsJykgdHJhbnNsYXRpb25LZXlUYWJsZUNlbGw6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWRcblxuICBAQ29udGVudENoaWxkKCdncmlkSXRlbVN1YnRpdGxlTGluZXMnKSBncmlkSXRlbVN1YnRpdGxlTGluZXM6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWRcbiAgQENvbnRlbnRDaGlsZCgnbGlzdEl0ZW1TdWJ0aXRsZUxpbmVzJykgbGlzdEl0ZW1TdWJ0aXRsZUxpbmVzOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkXG4gIEBDb250ZW50Q2hpbGQoJ3N0cmluZ1RhYmxlQ2VsbCcpIHN0cmluZ1RhYmxlQ2VsbDogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuICBAQ29udGVudENoaWxkKCdudW1iZXJUYWJsZUNlbGwnKSBudW1iZXJUYWJsZUNlbGw6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWRcbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFdpbGwgYmUgcmVtb3ZlZCBhbmQgaW5zdGVhZCB0byBjaGFuZ2UgdGhlIHRlbXBsYXRlIG9mIGEgc3BlY2lmaWMgY29sdW1uXG4gICAqIHVzZSB0aGUgbmV3IGFwcHJvYWNoIGluc3RlYWQgYnkgZm9sbG93aW5nIHRoZSBuYW1pbmcgY29udmVudGlvbiBjb2x1bW4gaWQgKyBJZFRhYmxlQ2VsbFxuICAgKiBlLmcuIGZvciBhIGNvbHVtbiB3aXRoIHRoZSBpZCAnc3RhdHVzJyBpbiBEYXRhVGFibGUgdXNlIHBUZW1wbGF0ZT1cInN0YXR1c0lkVGFibGVDZWxsXCJcbiAgICovXG4gIEBDb250ZW50Q2hpbGQoJ2N1c3RvbVRhYmxlQ2VsbCcpIGN1c3RvbVRhYmxlQ2VsbDogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuICBAQ29udGVudENoaWxkKCdncmlkSXRlbScpIGdyaWRJdGVtOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkXG4gIEBDb250ZW50Q2hpbGQoJ2xpc3RJdGVtJykgbGlzdEl0ZW06IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWRcbiAgQENvbnRlbnRDaGlsZCgndG9wQ2VudGVyJykgdG9wQ2VudGVyOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkXG4gIEBDb250ZW50Q2hpbGQoJ2xpc3RWYWx1ZScpIGxpc3RWYWx1ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuICBAQ29udGVudENoaWxkKCd0cmFuc2xhdGlvbktleUxpc3RWYWx1ZScpIHRyYW5zbGF0aW9uS2V5TGlzdFZhbHVlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkXG4gIEBDb250ZW50Q2hpbGQoJ251bWJlckxpc3RWYWx1ZScpIG51bWJlckxpc3RWYWx1ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuICBAQ29udGVudENoaWxkKCdyZWxhdGl2ZURhdGVMaXN0VmFsdWUnKSByZWxhdGl2ZURhdGVMaXN0VmFsdWU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWRcbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFdpbGwgYmUgcmVtb3ZlZCBhbmQgaW5zdGVhZCB0byBjaGFuZ2UgdGhlIHRlbXBsYXRlIG9mIGEgc3BlY2lmaWMgY29sdW1uXG4gICAqIHVzZSB0aGUgbmV3IGFwcHJvYWNoIGluc3RlYWQgYnkgZm9sbG93aW5nIHRoZSBuYW1pbmcgY29udmVudGlvbiBjb2x1bW4gaWQgKyBJZExpc3RWYWx1ZVxuICAgKiBlLmcuIGZvciBhIGNvbHVtbiB3aXRoIHRoZSBpZCAnc3RhdHVzJyBEYXRhTGlzdEdyaWQgdXNlIHBUZW1wbGF0ZT1cInN0YXR1c0lkTGlzdFZhbHVlXCJcbiAgICovXG4gIEBDb250ZW50Q2hpbGQoJ2N1c3RvbUxpc3RWYWx1ZScpIGN1c3RvbUxpc3RWYWx1ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuICBAQ29udGVudENoaWxkKCdzdHJpbmdMaXN0VmFsdWUnKSBzdHJpbmdMaXN0VmFsdWU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWRcbiAgQENvbnRlbnRDaGlsZCgnZGF0ZUxpc3RWYWx1ZScpIGRhdGVMaXN0VmFsdWU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWRcbiAgQENvbnRlbnRDaGlsZCgndGFibGVGaWx0ZXJDZWxsJykgdGFibGVGaWx0ZXJDZWxsOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkXG4gIEBDb250ZW50Q2hpbGQoJ2RhdGVUYWJsZUZpbHRlckNlbGwnKSBkYXRlVGFibGVGaWx0ZXJDZWxsOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkXG4gIEBDb250ZW50Q2hpbGQoJ3JlbGF0aXZlRGF0ZVRhYmxlRmlsdGVyQ2VsbCcpIHJlbGF0aXZlRGF0ZVRhYmxlRmlsdGVyQ2VsbDogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuICBAQ29udGVudENoaWxkKCd0cmFuc2xhdGlvbktleVRhYmxlRmlsdGVyQ2VsbCcpIHRyYW5zbGF0aW9uS2V5VGFibGVGaWx0ZXJDZWxsOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkXG4gIEBDb250ZW50Q2hpbGQoJ3N0cmluZ1RhYmxlRmlsdGVyQ2VsbCcpIHN0cmluZ1RhYmxlRmlsdGVyQ2VsbDogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuICBAQ29udGVudENoaWxkKCdudW1iZXJUYWJsZUZpbHRlckNlbGwnKSBudW1iZXJUYWJsZUZpbHRlckNlbGw6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWRcbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFdpbGwgYmUgcmVtb3ZlZCBhbmQgaW5zdGVhZCB0byBjaGFuZ2UgdGhlIHRlbXBsYXRlIG9mIGEgc3BlY2lmaWMgY29sdW1uIGZpbHRlclxuICAgKiB1c2UgdGhlIG5ldyBhcHByb2FjaCBpbnN0ZWFkIGJ5IGZvbGxvd2luZyB0aGUgbmFtaW5nIGNvbnZlbnRpb24gY29sdW1uIGlkICsgSWRUYWJsZUZpbHRlckNlbGxcbiAgICogZS5nLiBmb3IgYSBjb2x1bW4gd2l0aCB0aGUgaWQgJ3N0YXR1cycgaW4gRGF0YVRhYmxlIHVzZSBwVGVtcGxhdGU9XCJzdGF0dXNJZFRhYmxlRmlsdGVyQ2VsbFwiXG4gICAqL1xuICBAQ29udGVudENoaWxkKCdjdXN0b21UYWJsZUZpbHRlckNlbGwnKSBjdXN0b21UYWJsZUZpbHRlckNlbGw6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWRcblxuICB0ZW1wbGF0ZXMkOiBCZWhhdmlvclN1YmplY3Q8UXVlcnlMaXN0PFByaW1lVGVtcGxhdGU+IHwgdW5kZWZpbmVkPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8XG4gICAgUXVlcnlMaXN0PFByaW1lVGVtcGxhdGU+IHwgdW5kZWZpbmVkXG4gID4odW5kZWZpbmVkKVxuICBAQ29udGVudENoaWxkcmVuKFByaW1lVGVtcGxhdGUpXG4gIHNldCB0ZW1wbGF0ZXModmFsdWU6IFF1ZXJ5TGlzdDxQcmltZVRlbXBsYXRlPiB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMudGVtcGxhdGVzJC5uZXh0KHZhbHVlKVxuICB9XG5cbiAgQE91dHB1dCgpIGZpbHRlcmVkID0gbmV3IEV2ZW50RW1pdHRlcjxGaWx0ZXJbXT4oKVxuICBAT3V0cHV0KCkgc29ydGVkID0gbmV3IEV2ZW50RW1pdHRlcjxTb3J0PigpXG4gIEBPdXRwdXQoKSBkZWxldGVJdGVtID0gbmV3IEV2ZW50RW1pdHRlcjxSb3dMaXN0R3JpZERhdGE+KClcbiAgQE91dHB1dCgpIHZpZXdJdGVtID0gbmV3IEV2ZW50RW1pdHRlcjxSb3dMaXN0R3JpZERhdGE+KClcbiAgQE91dHB1dCgpIGVkaXRJdGVtID0gbmV3IEV2ZW50RW1pdHRlcjxSb3dMaXN0R3JpZERhdGE+KClcbiAgQE91dHB1dCgpIGRhdGFWaWV3TGF5b3V0Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjwnZ3JpZCcgfCAnbGlzdCcgfCAndGFibGUnPigpXG4gIEBPdXRwdXQoKSBkaXNwbGF5ZWRDb2x1bW5zQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRhVGFibGVDb2x1bW5bXT4oKVxuICBAT3V0cHV0KCkgc2VsZWN0aW9uQ2hhbmdlZDogRXZlbnRFbWl0dGVyPFJvd1tdPiA9IG5ldyBFdmVudEVtaXR0ZXIoKVxuXG4gIEBPdXRwdXQoKSBwYWdlQ2hhbmdlZDogRXZlbnRFbWl0dGVyPG51bWJlcj4gPSBuZXcgRXZlbnRFbWl0dGVyKClcbiAgc2VsZWN0ZWRHcm91cEtleSA9ICcnXG4gIGlzRGVsZXRlSXRlbU9ic2VydmVkOiBib29sZWFuIHwgdW5kZWZpbmVkXG4gIGlzVmlld0l0ZW1PYnNlcnZlZDogYm9vbGVhbiB8IHVuZGVmaW5lZFxuICBpc0VkaXRJdGVtT2JzZXJ2ZWQ6IGJvb2xlYW4gfCB1bmRlZmluZWRcbiAgZmlyc3RDb2x1bW5JZDogc3RyaW5nIHwgdW5kZWZpbmVkXG5cbiAgQElucHV0KClcbiAgZ2V0IHBhZ2luYXRvcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5saXN0R3JpZFBhZ2luYXRvciAmJiB0aGlzLnRhYmxlUGFnaW5hdG9yXG4gIH1cbiAgc2V0IHBhZ2luYXRvcih2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMubGlzdEdyaWRQYWdpbmF0b3IgPSB2YWx1ZVxuICAgIHRoaXMudGFibGVQYWdpbmF0b3IgPSB2YWx1ZVxuICB9XG5cbiAgZ2V0IF9ncmlkSXRlbVN1YnRpdGxlTGluZXMoKTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuZ3JpZEl0ZW1TdWJ0aXRsZUxpbmVzXG4gIH1cbiAgZ2V0IF9saXN0SXRlbVN1YnRpdGxlTGluZXMoKTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMubGlzdEl0ZW1TdWJ0aXRsZUxpbmVzXG4gIH1cbiAgZ2V0IF90YWJsZUNlbGwoKTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMudGFibGVDZWxsXG4gIH1cbiAgZ2V0IF9zdHJpbmdUYWJsZUNlbGwoKTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuc3RyaW5nVGFibGVDZWxsXG4gIH1cbiAgZ2V0IF9udW1iZXJUYWJsZUNlbGwoKTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMubnVtYmVyVGFibGVDZWxsXG4gIH1cbiAgZ2V0IF9jdXN0b21UYWJsZUNlbGwoKTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuY3VzdG9tVGFibGVDZWxsXG4gIH1cbiAgZ2V0IF90YWJsZURhdGVDZWxsKCk6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmRhdGVUYWJsZUNlbGwgPz8gdGhpcy50YWJsZURhdGVDZWxsXG4gIH1cbiAgZ2V0IF9kYXRlVGFibGVDZWxsKCk6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmRhdGVUYWJsZUNlbGxcbiAgfVxuICBnZXQgX3RhYmxlUmVsYXRpdmVEYXRlQ2VsbCgpOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5yZWxhdGl2ZURhdGVUYWJsZUNlbGwgPz8gdGhpcy50YWJsZVJlbGF0aXZlRGF0ZUNlbGxcbiAgfVxuICBnZXQgX3JlbGF0aXZlRGF0ZVRhYmxlQ2VsbCgpOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5yZWxhdGl2ZURhdGVUYWJsZUNlbGxcbiAgfVxuICBnZXQgX3RhYmxlVHJhbnNsYXRpb25LZXlDZWxsKCk6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLnRyYW5zbGF0aW9uS2V5VGFibGVDZWxsID8/IHRoaXMudGFibGVUcmFuc2xhdGlvbktleUNlbGxcbiAgfVxuICBnZXQgX3RyYW5zbGF0aW9uS2V5VGFibGVDZWxsKCk6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLnRyYW5zbGF0aW9uS2V5VGFibGVDZWxsXG4gIH1cbiAgZ2V0IF9ncmlkSXRlbSgpOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5ncmlkSXRlbVxuICB9XG4gIGdldCBfbGlzdEl0ZW0oKTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMubGlzdEl0ZW1cbiAgfVxuICBnZXQgX2xpc3RWYWx1ZSgpOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5saXN0VmFsdWVcbiAgfVxuICBnZXQgX3RyYW5zbGF0aW9uS2V5TGlzdFZhbHVlKCk6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLnRyYW5zbGF0aW9uS2V5TGlzdFZhbHVlXG4gIH1cbiAgZ2V0IF9udW1iZXJMaXN0VmFsdWUoKTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMubnVtYmVyTGlzdFZhbHVlXG4gIH1cbiAgZ2V0IF9yZWxhdGl2ZURhdGVMaXN0VmFsdWUoKTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMucmVsYXRpdmVEYXRlTGlzdFZhbHVlXG4gIH1cbiAgZ2V0IF9jdXN0b21MaXN0VmFsdWUoKTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuY3VzdG9tTGlzdFZhbHVlXG4gIH1cbiAgZ2V0IF9zdHJpbmdMaXN0VmFsdWUoKTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuc3RyaW5nTGlzdFZhbHVlXG4gIH1cbiAgZ2V0IF9kYXRlTGlzdFZhbHVlKCk6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmRhdGVMaXN0VmFsdWVcbiAgfVxuICBnZXQgX3RhYmxlRmlsdGVyQ2VsbCgpOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy50YWJsZUZpbHRlckNlbGxcbiAgfVxuICBnZXQgX2RhdGVUYWJsZUZpbHRlckNlbGwoKTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuZGF0ZVRhYmxlRmlsdGVyQ2VsbFxuICB9XG4gIGdldCBfcmVsYXRpdmVEYXRlVGFibGVGaWx0ZXJDZWxsKCk6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLnJlbGF0aXZlRGF0ZVRhYmxlRmlsdGVyQ2VsbFxuICB9XG4gIGdldCBfdHJhbnNsYXRpb25LZXlUYWJsZUZpbHRlckNlbGwoKTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMudHJhbnNsYXRpb25LZXlUYWJsZUZpbHRlckNlbGxcbiAgfVxuICBnZXQgX3N0cmluZ1RhYmxlRmlsdGVyQ2VsbCgpOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5zdHJpbmdUYWJsZUZpbHRlckNlbGxcbiAgfVxuICBnZXQgX251bWJlclRhYmxlRmlsdGVyQ2VsbCgpOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5udW1iZXJUYWJsZUZpbHRlckNlbGxcbiAgfVxuICBnZXQgX2N1c3RvbVRhYmxlRmlsdGVyQ2VsbCgpOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5jdXN0b21UYWJsZUZpbHRlckNlbGxcbiAgfVxuXG4gIF9kYXRhOiBSb3dMaXN0R3JpZERhdGFbXSA9IFtdXG4gIEBJbnB1dCgpXG4gIGdldCBkYXRhKCk6IFJvd0xpc3RHcmlkRGF0YVtdIHtcbiAgICByZXR1cm4gdGhpcy5fZGF0YVxuICB9XG4gIHNldCBkYXRhKHZhbHVlOiBSb3dMaXN0R3JpZERhdGFbXSkge1xuICAgIHRoaXMuX2RhdGEgPSB2YWx1ZVxuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZEdyb3VwS2V5ID0gdGhpcy5kZWZhdWx0R3JvdXBLZXlcbiAgICB0aGlzLmRpc3BsYXllZENvbHVtbnMgPSB0aGlzLmNvbHVtbnNcbiAgICBpZiAodGhpcy5kZWZhdWx0R3JvdXBLZXkpIHtcbiAgICAgIHRoaXMuZGlzcGxheWVkQ29sdW1ucyA9IHRoaXMuY29sdW1ucy5maWx0ZXIoKGNvbHVtbikgPT5cbiAgICAgICAgY29sdW1uLnByZWRlZmluZWRHcm91cEtleXM/LmluY2x1ZGVzKHRoaXMuZGVmYXVsdEdyb3VwS2V5KVxuICAgICAgKVxuICAgIH1cbiAgICB0aGlzLmRpc3BsYXllZENvbHVtbnNDaGFuZ2UuZW1pdCh0aGlzLmRpc3BsYXllZENvbHVtbnMpXG4gICAgaWYgKCF0aGlzLmdyb3VwU2VsZWN0aW9uTm9Hcm91cFNlbGVjdGVkS2V5KSB7XG4gICAgICB0aGlzLmdyb3VwU2VsZWN0aW9uTm9Hcm91cFNlbGVjdGVkS2V5ID0gJ09DWF9JTlRFUkFDVElWRV9EQVRBX1ZJRVcuTk9fR1JPVVBfU0VMRUNURUQnXG4gICAgfVxuICAgIHRoaXMuZmlyc3RDb2x1bW5JZCA9IHRoaXMuY29sdW1uc1swXT8uaWRcbiAgfVxuXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICB0aGlzLnRlbXBsYXRlcz8uZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgc3dpdGNoIChpdGVtLmdldFR5cGUoKSkge1xuICAgICAgICBjYXNlICd0YWJsZUNlbGwnOlxuICAgICAgICAgIHRoaXMudGFibGVDZWxsID0gaXRlbS50ZW1wbGF0ZVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgJ3RhYmxlRGF0ZUNlbGwnOlxuICAgICAgICAgIHRoaXMudGFibGVEYXRlQ2VsbCA9IGl0ZW0udGVtcGxhdGVcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlICdkYXRlVGFibGVDZWxsJzpcbiAgICAgICAgICB0aGlzLmRhdGVUYWJsZUNlbGwgPSBpdGVtLnRlbXBsYXRlXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAndGFibGVSZWxhdGl2ZURhdGVDZWxsJzpcbiAgICAgICAgICB0aGlzLnRhYmxlUmVsYXRpdmVEYXRlQ2VsbCA9IGl0ZW0udGVtcGxhdGVcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlICdyZWxhdGl2ZURhdGVUYWJsZUNlbGwnOlxuICAgICAgICAgIHRoaXMucmVsYXRpdmVEYXRlVGFibGVDZWxsID0gaXRlbS50ZW1wbGF0ZVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgJ3RhYmxlVHJhbnNsYXRpb25LZXlDZWxsJzpcbiAgICAgICAgICB0aGlzLnRhYmxlVHJhbnNsYXRpb25LZXlDZWxsID0gaXRlbS50ZW1wbGF0ZVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgJ3RyYW5zbGF0aW9uS2V5VGFibGVDZWxsJzpcbiAgICAgICAgICB0aGlzLnRyYW5zbGF0aW9uS2V5VGFibGVDZWxsID0gaXRlbS50ZW1wbGF0ZVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgJ2dyaWRJdGVtU3VidGl0bGVMaW5lcyc6XG4gICAgICAgICAgdGhpcy5ncmlkSXRlbVN1YnRpdGxlTGluZXMgPSBpdGVtLnRlbXBsYXRlXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAnbGlzdEl0ZW1TdWJ0aXRsZUxpbmVzJzpcbiAgICAgICAgICB0aGlzLmxpc3RJdGVtU3VidGl0bGVMaW5lcyA9IGl0ZW0udGVtcGxhdGVcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlICdzdHJpbmdUYWJsZUNlbGwnOlxuICAgICAgICAgIHRoaXMuc3RyaW5nVGFibGVDZWxsID0gaXRlbS50ZW1wbGF0ZVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgJ251bWJlclRhYmxlQ2VsbCc6XG4gICAgICAgICAgdGhpcy5udW1iZXJUYWJsZUNlbGwgPSBpdGVtLnRlbXBsYXRlXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAnY3VzdG9tVGFibGVDZWxsJzpcbiAgICAgICAgICB0aGlzLmN1c3RvbVRhYmxlQ2VsbCA9IGl0ZW0udGVtcGxhdGVcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlICdncmlkSXRlbSc6XG4gICAgICAgICAgdGhpcy5ncmlkSXRlbSA9IGl0ZW0udGVtcGxhdGVcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlICdsaXN0SXRlbSc6XG4gICAgICAgICAgdGhpcy5saXN0SXRlbSA9IGl0ZW0udGVtcGxhdGVcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlICd0b3BDZW50ZXInOlxuICAgICAgICAgIHRoaXMudG9wQ2VudGVyID0gaXRlbS50ZW1wbGF0ZVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgJ2xpc3RWYWx1ZSc6XG4gICAgICAgICAgdGhpcy5saXN0VmFsdWUgPSBpdGVtLnRlbXBsYXRlXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAndHJhbnNsYXRpb25LZXlMaXN0VmFsdWUnOlxuICAgICAgICAgIHRoaXMudHJhbnNsYXRpb25LZXlMaXN0VmFsdWUgPSBpdGVtLnRlbXBsYXRlXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAnbnVtYmVyTGlzdFZhbHVlJzpcbiAgICAgICAgICB0aGlzLm51bWJlckxpc3RWYWx1ZSA9IGl0ZW0udGVtcGxhdGVcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlICdyZWxhdGl2ZURhdGVMaXN0VmFsdWUnOlxuICAgICAgICAgIHRoaXMucmVsYXRpdmVEYXRlTGlzdFZhbHVlID0gaXRlbS50ZW1wbGF0ZVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgJ2N1c3RvbUxpc3RWYWx1ZSc6XG4gICAgICAgICAgdGhpcy5jdXN0b21MaXN0VmFsdWUgPSBpdGVtLnRlbXBsYXRlXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAnc3RyaW5nTGlzdFZhbHVlJzpcbiAgICAgICAgICB0aGlzLnN0cmluZ0xpc3RWYWx1ZSA9IGl0ZW0udGVtcGxhdGVcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlICdkYXRlTGlzdFZhbHVlJzpcbiAgICAgICAgICB0aGlzLmRhdGVMaXN0VmFsdWUgPSBpdGVtLnRlbXBsYXRlXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAndGFibGVGaWx0ZXJDZWxsJzpcbiAgICAgICAgICB0aGlzLnRhYmxlRmlsdGVyQ2VsbCA9IGl0ZW0udGVtcGxhdGVcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlICdkYXRlVGFibGVGaWx0ZXJDZWxsJzpcbiAgICAgICAgICB0aGlzLmRhdGVUYWJsZUZpbHRlckNlbGwgPSBpdGVtLnRlbXBsYXRlXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAncmVsYXRpdmVEYXRlVGFibGVGaWx0ZXJDZWxsJzpcbiAgICAgICAgICB0aGlzLnJlbGF0aXZlRGF0ZVRhYmxlRmlsdGVyQ2VsbCA9IGl0ZW0udGVtcGxhdGVcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlICd0cmFuc2xhdGlvbktleVRhYmxlRmlsdGVyQ2VsbCc6XG4gICAgICAgICAgdGhpcy50cmFuc2xhdGlvbktleVRhYmxlRmlsdGVyQ2VsbCA9IGl0ZW0udGVtcGxhdGVcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlICdzdHJpbmdUYWJsZUZpbHRlckNlbGwnOlxuICAgICAgICAgIHRoaXMuc3RyaW5nVGFibGVGaWx0ZXJDZWxsID0gaXRlbS50ZW1wbGF0ZVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgJ251bWJlclRhYmxlRmlsdGVyQ2VsbCc6XG4gICAgICAgICAgdGhpcy5udW1iZXJUYWJsZUZpbHRlckNlbGwgPSBpdGVtLnRlbXBsYXRlXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAnY3VzdG9tVGFibGVGaWx0ZXJDZWxsJzpcbiAgICAgICAgICB0aGlzLmN1c3RvbVRhYmxlRmlsdGVyQ2VsbCA9IGl0ZW0udGVtcGxhdGVcbiAgICAgICAgICBicmVha1xuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICBmaWx0ZXJpbmcoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuZmlsdGVycyA9IGV2ZW50XG4gICAgdGhpcy5maWx0ZXJlZC5lbWl0KGV2ZW50KVxuICB9XG5cbiAgc29ydGluZyhldmVudDogYW55KSB7XG4gICAgdGhpcy5zb3J0RGlyZWN0aW9uID0gZXZlbnQuc29ydERpcmVjdGlvblxuICAgIHRoaXMuc29ydEZpZWxkID0gZXZlbnQuc29ydENvbHVtblxuICAgIHRoaXMuc29ydGVkLmVtaXQoZXZlbnQpXG4gIH1cblxuICBvbkRlbGV0ZUVsZW1lbnQoZWxlbWVudDogUm93TGlzdEdyaWREYXRhKSB7XG4gICAgaWYgKHRoaXMuaXNEZWxldGVJdGVtT2JzZXJ2ZWQpIHtcbiAgICAgIHRoaXMuZGVsZXRlSXRlbS5lbWl0KGVsZW1lbnQpXG4gICAgfVxuICB9XG5cbiAgb25WaWV3RWxlbWVudChlbGVtZW50OiBSb3dMaXN0R3JpZERhdGEpIHtcbiAgICBpZiAodGhpcy5pc1ZpZXdJdGVtT2JzZXJ2ZWQpIHtcbiAgICAgIHRoaXMudmlld0l0ZW0uZW1pdChlbGVtZW50KVxuICAgIH1cbiAgfVxuXG4gIG9uRWRpdEVsZW1lbnQoZWxlbWVudDogUm93TGlzdEdyaWREYXRhKSB7XG4gICAgaWYgKHRoaXMuaXNFZGl0SXRlbU9ic2VydmVkKSB7XG4gICAgICB0aGlzLmVkaXRJdGVtLmVtaXQoZWxlbWVudClcbiAgICB9XG4gIH1cblxuICBvbkRhdGFWaWV3TGF5b3V0Q2hhbmdlKGxheW91dDogJ2dyaWQnIHwgJ2xpc3QnIHwgJ3RhYmxlJykge1xuICAgIHRoaXMubGF5b3V0ID0gbGF5b3V0XG4gICAgdGhpcy5kYXRhVmlld0xheW91dENoYW5nZS5lbWl0KGxheW91dClcbiAgfVxuXG4gIG9uU29ydENoYW5nZSgkZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuc29ydEZpZWxkID0gJGV2ZW50XG4gICAgdGhpcy5zb3J0ZWQuZW1pdCh7IHNvcnRDb2x1bW46IHRoaXMuc29ydEZpZWxkLCBzb3J0RGlyZWN0aW9uOiB0aGlzLnNvcnREaXJlY3Rpb24gfSlcbiAgfVxuXG4gIG9uU29ydERpcmVjdGlvbkNoYW5nZSgkZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuc29ydERpcmVjdGlvbiA9ICRldmVudFxuICAgIHRoaXMuc29ydGVkLmVtaXQoeyBzb3J0Q29sdW1uOiB0aGlzLnNvcnRGaWVsZCwgc29ydERpcmVjdGlvbjogdGhpcy5zb3J0RGlyZWN0aW9uIH0pXG4gIH1cblxuICBvbkNvbHVtbkdyb3VwU2VsZWN0aW9uQ2hhbmdlKGV2ZW50OiBHcm91cFNlbGVjdGlvbkNoYW5nZWRFdmVudCkge1xuICAgIHRoaXMuZGlzcGxheWVkQ29sdW1ucyA9IGV2ZW50LmFjdGl2ZUNvbHVtbnNcbiAgICB0aGlzLnNlbGVjdGVkR3JvdXBLZXkgPSBldmVudC5ncm91cEtleVxuICAgIHRoaXMuZGlzcGxheWVkQ29sdW1uc0NoYW5nZS5lbWl0KHRoaXMuZGlzcGxheWVkQ29sdW1ucylcbiAgfVxuXG4gIHJlZ2lzdGVyRXZlbnRMaXN0ZW5lckZvckRhdGFWaWV3KCkge1xuICAgIGlmICh0aGlzLmRlbGV0ZUl0ZW0ub2JzZXJ2ZWQpIHtcbiAgICAgIHRoaXMuaXNEZWxldGVJdGVtT2JzZXJ2ZWQgPSB0cnVlXG4gICAgICBpZiAoIXRoaXMuX2RhdGFWaWV3Q29tcG9uZW50Py5kZWxldGVJdGVtLm9ic2VydmVkKSB7XG4gICAgICAgIHRoaXMuX2RhdGFWaWV3Q29tcG9uZW50Py5kZWxldGVJdGVtLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgICB0aGlzLm9uRGVsZXRlRWxlbWVudChldmVudClcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHRoaXMudmlld0l0ZW0ub2JzZXJ2ZWQpIHtcbiAgICAgIHRoaXMuaXNWaWV3SXRlbU9ic2VydmVkID0gdHJ1ZVxuICAgICAgaWYgKCF0aGlzLl9kYXRhVmlld0NvbXBvbmVudD8udmlld0l0ZW0ub2JzZXJ2ZWQpIHtcbiAgICAgICAgdGhpcy5fZGF0YVZpZXdDb21wb25lbnQ/LnZpZXdJdGVtLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgICB0aGlzLm9uVmlld0VsZW1lbnQoZXZlbnQpXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfVxuICAgIGlmICh0aGlzLmVkaXRJdGVtLm9ic2VydmVkKSB7XG4gICAgICB0aGlzLmlzRWRpdEl0ZW1PYnNlcnZlZCA9IHRydWVcbiAgICAgIGlmICghdGhpcy5fZGF0YVZpZXdDb21wb25lbnQ/LmVkaXRJdGVtLm9ic2VydmVkKSB7XG4gICAgICAgIHRoaXMuX2RhdGFWaWV3Q29tcG9uZW50Py5lZGl0SXRlbS5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICAgICAgdGhpcy5vbkVkaXRFbGVtZW50KGV2ZW50KVxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAodGhpcy5zZWxlY3Rpb25DaGFuZ2VkLm9ic2VydmVkKSB7XG4gICAgICBpZiAoIXRoaXMuX2RhdGFWaWV3Q29tcG9uZW50Py5zZWxlY3Rpb25DaGFuZ2VkLm9ic2VydmVkKSB7XG4gICAgICAgIHRoaXMuX2RhdGFWaWV3Q29tcG9uZW50Py5zZWxlY3Rpb25DaGFuZ2VkLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgICB0aGlzLm9uUm93U2VsZWN0aW9uQ2hhbmdlKGV2ZW50KVxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG9uQ29sdW1uU2VsZWN0aW9uQ2hhbmdlKGV2ZW50OiBDb2x1bW5TZWxlY3Rpb25DaGFuZ2VkRXZlbnQpIHtcbiAgICB0aGlzLmRpc3BsYXllZENvbHVtbnMgPSBldmVudC5hY3RpdmVDb2x1bW5zXG4gICAgdGhpcy5zZWxlY3RlZEdyb3VwS2V5ID0gdGhpcy5jdXN0b21Hcm91cEtleVxuICAgIHRoaXMuZGlzcGxheWVkQ29sdW1uc0NoYW5nZS5lbWl0KHRoaXMuZGlzcGxheWVkQ29sdW1ucylcbiAgfVxuXG4gIG9uQWN0aW9uQ29sdW1uQ29uZmlnQ2hhbmdlKGV2ZW50OiBBY3Rpb25Db2x1bW5DaGFuZ2VkRXZlbnQpIHtcbiAgICB0aGlzLmZyb3plbkFjdGlvbkNvbHVtbiA9IGV2ZW50LmZyb3plbkFjdGlvbkNvbHVtblxuICAgIHRoaXMuYWN0aW9uQ29sdW1uUG9zaXRpb24gPSBldmVudC5hY3Rpb25Db2x1bW5Qb3NpdGlvblxuICB9XG5cbiAgb25Sb3dTZWxlY3Rpb25DaGFuZ2UoZXZlbnQ6IFJvd1tdKSB7XG4gICAgaWYgKHRoaXMuc2VsZWN0aW9uQ2hhbmdlZC5vYnNlcnZlZCkge1xuICAgICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2VkLmVtaXQoZXZlbnQpXG4gICAgfVxuICB9XG5cbiAgb25QYWdlQ2hhbmdlKGV2ZW50OiBudW1iZXIpIHtcbiAgICB0aGlzLnBhZ2UgPSBldmVudFxuICAgIHRoaXMucGFnZUNoYW5nZWQuZW1pdChldmVudClcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInAtMyBib3JkZXItYm90dG9tLTEgc3VyZmFjZS1ib3JkZXJcIj5cbiAgPGRpdiBjbGFzcz1cImZsZXggZmxleC13cmFwIGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBweS0xIGdhcC0yXCI+XG4gICAgPG9jeC1kYXRhLWxheW91dC1zZWxlY3Rpb25cbiAgICAgIFtzdXBwb3J0ZWRWaWV3TGF5b3V0c109XCJzdXBwb3J0ZWRWaWV3TGF5b3V0c1wiXG4gICAgICBbbGF5b3V0XT1cImxheW91dFwiXG4gICAgICAoZGF0YVZpZXdMYXlvdXRDaGFuZ2UpPVwib25EYXRhVmlld0xheW91dENoYW5nZSgkZXZlbnQpXCJcbiAgICA+PC9vY3gtZGF0YS1sYXlvdXQtc2VsZWN0aW9uPlxuXG4gICAgPGRpdiAqbmdJZj1cInRvcENlbnRlclwiPlxuICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJ0b3BDZW50ZXJcIj4gPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2ICpuZ0lmPVwibGF5b3V0ICE9PSAndGFibGUnXCIgY2xhc3M9XCJmbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMlwiPlxuICAgICAgPG9jeC1kYXRhLWxpc3QtZ3JpZC1zb3J0aW5nXG4gICAgICAgIFtzb3J0RGlyZWN0aW9uXT1cInNvcnREaXJlY3Rpb25cIlxuICAgICAgICBbc29ydEZpZWxkXT1cInNvcnRGaWVsZFwiXG4gICAgICAgIFtjb2x1bW5zXT1cImNvbHVtbnNcIlxuICAgICAgICBbc29ydFN0YXRlc109XCJzb3J0U3RhdGVzXCJcbiAgICAgICAgKHNvcnRDaGFuZ2UpPVwib25Tb3J0Q2hhbmdlKCRldmVudClcIlxuICAgICAgICAoc29ydERpcmVjdGlvbkNoYW5nZSk9XCJvblNvcnREaXJlY3Rpb25DaGFuZ2UoJGV2ZW50KVwiXG4gICAgICA+PC9vY3gtZGF0YS1saXN0LWdyaWQtc29ydGluZz5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgKm5nSWY9XCJsYXlvdXQgPT09ICd0YWJsZSdcIiBjbGFzcz1cImZsZXggZmxleC13cmFwIGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMlwiPlxuICAgICAgPG9jeC1jb2x1bW4tZ3JvdXAtc2VsZWN0aW9uXG4gICAgICAgIFtzZWxlY3RlZEdyb3VwS2V5XT1cInNlbGVjdGVkR3JvdXBLZXlcIlxuICAgICAgICBbY29sdW1uc109XCJjb2x1bW5zXCJcbiAgICAgICAgW2RlZmF1bHRHcm91cEtleV09XCJkZWZhdWx0R3JvdXBLZXlcIlxuICAgICAgICBbY3VzdG9tR3JvdXBLZXldPVwiY3VzdG9tR3JvdXBLZXlcIlxuICAgICAgICBbcGxhY2Vob2xkZXJLZXldPVwiZ3JvdXBTZWxlY3Rpb25Ob0dyb3VwU2VsZWN0ZWRLZXlcIlxuICAgICAgICAoZ3JvdXBTZWxlY3Rpb25DaGFuZ2VkKT1cIm9uQ29sdW1uR3JvdXBTZWxlY3Rpb25DaGFuZ2UoJGV2ZW50KVwiXG4gICAgICA+PC9vY3gtY29sdW1uLWdyb3VwLXNlbGVjdGlvbj5cblxuICAgICAgPG9jeC1jdXN0b20tZ3JvdXAtY29sdW1uLXNlbGVjdG9yXG4gICAgICAgIFtjb2x1bW5zXT1cImNvbHVtbnNcIlxuICAgICAgICBbZGlzcGxheWVkQ29sdW1uc109XCJkaXNwbGF5ZWRDb2x1bW5zXCJcbiAgICAgICAgKGNvbHVtblNlbGVjdGlvbkNoYW5nZWQpPVwib25Db2x1bW5TZWxlY3Rpb25DaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgIFtmcm96ZW5BY3Rpb25Db2x1bW5dPVwiZnJvemVuQWN0aW9uQ29sdW1uXCJcbiAgICAgICAgW2FjdGlvbkNvbHVtblBvc2l0aW9uXT1cImFjdGlvbkNvbHVtblBvc2l0aW9uXCJcbiAgICAgICAgKGFjdGlvbkNvbHVtbkNvbmZpZ0NoYW5nZWQpPVwib25BY3Rpb25Db2x1bW5Db25maWdDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICA+PC9vY3gtY3VzdG9tLWdyb3VwLWNvbHVtbi1zZWxlY3Rvcj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJwLTNcIj5cbiAgPG9jeC1kYXRhLXZpZXdcbiAgICBbY29sdW1uc109XCJkaXNwbGF5ZWRDb2x1bW5zXCJcbiAgICBbc29ydFN0YXRlc109XCJzb3J0U3RhdGVzXCJcbiAgICBbc29ydEZpZWxkXT1cInNvcnRGaWVsZFwiXG4gICAgW2ZpbHRlcnNdPVwiZmlsdGVyc1wiXG4gICAgW2RhdGFdPVwiZGF0YVwiXG4gICAgW3NvcnREaXJlY3Rpb25dPVwic29ydERpcmVjdGlvblwiXG4gICAgW3RpdGxlTGluZUlkXT1cInRpdGxlTGluZUlkXCJcbiAgICBbc3VidGl0bGVMaW5lSWRzXT1cInN1YnRpdGxlTGluZUlkc1wiXG4gICAgW2NsaWVudFNpZGVTb3J0aW5nXT1cImNsaWVudFNpZGVTb3J0aW5nXCJcbiAgICBbY2xpZW50U2lkZUZpbHRlcmluZ109XCJjbGllbnRTaWRlRmlsdGVyaW5nXCJcbiAgICBbcGFnZVNpemVzXT1cInBhZ2VTaXplc1wiXG4gICAgW3BhZ2VTaXplXT1cInBhZ2VTaXplXCJcbiAgICBbZW1wdHlSZXN1bHRzTWVzc2FnZV09XCJlbXB0eVJlc3VsdHNNZXNzYWdlXCJcbiAgICBbbGF5b3V0XT1cImxheW91dFwiXG4gICAgW25hbWVdPVwibmFtZVwiXG4gICAgW2RlbGV0ZVBlcm1pc3Npb25dPVwiZGVsZXRlUGVybWlzc2lvblwiXG4gICAgW2VkaXRQZXJtaXNzaW9uXT1cImVkaXRQZXJtaXNzaW9uXCJcbiAgICBbdmlld1Blcm1pc3Npb25dPVwidmlld1Blcm1pc3Npb25cIlxuICAgIFtkZWxldGVBY3Rpb25FbmFibGVkRmllbGRdPVwiZGVsZXRlQWN0aW9uRW5hYmxlZEZpZWxkXCJcbiAgICBbZGVsZXRlQWN0aW9uVmlzaWJsZUZpZWxkXT1cImRlbGV0ZUFjdGlvblZpc2libGVGaWVsZFwiXG4gICAgW2VkaXRBY3Rpb25FbmFibGVkRmllbGRdPVwiZWRpdEFjdGlvbkVuYWJsZWRGaWVsZFwiXG4gICAgW2VkaXRBY3Rpb25WaXNpYmxlRmllbGRdPVwiZWRpdEFjdGlvblZpc2libGVGaWVsZFwiXG4gICAgW3ZpZXdBY3Rpb25FbmFibGVkRmllbGRdPVwidmlld0FjdGlvbkVuYWJsZWRGaWVsZFwiXG4gICAgW3ZpZXdBY3Rpb25WaXNpYmxlRmllbGRdPVwidmlld0FjdGlvblZpc2libGVGaWVsZFwiXG4gICAgW2FkZGl0aW9uYWxBY3Rpb25zXT1cImFkZGl0aW9uYWxBY3Rpb25zXCJcbiAgICBbbGlzdEdyaWRQYWdpbmF0b3JdPVwibGlzdEdyaWRQYWdpbmF0b3JcIlxuICAgIFt0YWJsZVBhZ2luYXRvcl09XCJ0YWJsZVBhZ2luYXRvclwiXG4gICAgW3BhZ2VdPVwicGFnZVwiXG4gICAgKHBhZ2VDaGFuZ2VkKT1cIm9uUGFnZUNoYW5nZSgkZXZlbnQpXCJcbiAgICBbc2VsZWN0ZWRSb3dzXT1cInNlbGVjdGVkUm93c1wiXG4gICAgW2Zyb3plbkFjdGlvbkNvbHVtbl09XCJmcm96ZW5BY3Rpb25Db2x1bW5cIlxuICAgIFthY3Rpb25Db2x1bW5Qb3NpdGlvbl09XCJhY3Rpb25Db2x1bW5Qb3NpdGlvblwiXG4gICAgW3N0cmluZ1RhYmxlQ2VsbFRlbXBsYXRlXT1cIl9zdHJpbmdUYWJsZUNlbGwgPyBzdHJpbmdUYWJsZUNlbGwgOiB1bmRlZmluZWRcIlxuICAgIFtudW1iZXJUYWJsZUNlbGxUZW1wbGF0ZV09XCJfbnVtYmVyVGFibGVDZWxsID8gbnVtYmVyVGFibGVDZWxsIDogdW5kZWZpbmVkXCJcbiAgICBbY3VzdG9tVGFibGVDZWxsVGVtcGxhdGVdPVwiX2N1c3RvbVRhYmxlQ2VsbCA/IGN1c3RvbVRhYmxlQ2VsbCA6IHVuZGVmaW5lZFwiXG4gICAgW2RhdGVUYWJsZUNlbGxUZW1wbGF0ZV09XCJfZGF0ZVRhYmxlQ2VsbCA/IGRhdGVUYWJsZUNlbGwgOiBfdGFibGVEYXRlQ2VsbCA/IHRhYmxlRGF0ZUNlbGwgOiB1bmRlZmluZWRcIlxuICAgIFtyZWxhdGl2ZURhdGVUYWJsZUNlbGxUZW1wbGF0ZV09XCJfcmVsYXRpdmVEYXRlVGFibGVDZWxsID8gcmVsYXRpdmVEYXRlVGFibGVDZWxsIDogX3RhYmxlUmVsYXRpdmVEYXRlQ2VsbCA/IHRhYmxlUmVsYXRpdmVEYXRlQ2VsbCA6IHVuZGVmaW5lZFwiXG4gICAgW3RhYmxlQ2VsbFRlbXBsYXRlXT1cIl90YWJsZUNlbGwgPyB0YWJsZUNlbGwgOiB1bmRlZmluZWRcIlxuICAgIFt0cmFuc2xhdGlvbktleVRhYmxlQ2VsbFRlbXBsYXRlXT1cIl90cmFuc2xhdGlvbktleVRhYmxlQ2VsbCA/IHRyYW5zbGF0aW9uS2V5VGFibGVDZWxsIDogX3RhYmxlVHJhbnNsYXRpb25LZXlDZWxsID8gdGFibGVUcmFuc2xhdGlvbktleUNlbGwgOiB1bmRlZmluZWRcIlxuICAgIFtncmlkSXRlbVN1YnRpdGxlTGluZXNUZW1wbGF0ZV09XCJfZ3JpZEl0ZW1TdWJ0aXRsZUxpbmVzID8gZ3JpZEl0ZW1TdWJ0aXRsZUxpbmVzIDogdW5kZWZpbmVkXCJcbiAgICBbbGlzdEl0ZW1TdWJ0aXRsZUxpbmVzVGVtcGxhdGVdPVwiX2xpc3RJdGVtU3VidGl0bGVMaW5lcyA/IGxpc3RJdGVtU3VidGl0bGVMaW5lcyA6IHVuZGVmaW5lZFwiXG4gICAgW2xpc3RJdGVtVGVtcGxhdGVdPVwiX2xpc3RJdGVtID8gbGlzdEl0ZW0gOiB1bmRlZmluZWRcIlxuICAgIFtsaXN0VmFsdWVUZW1wbGF0ZV09XCJfbGlzdFZhbHVlID8gbGlzdFZhbHVlIDogdW5kZWZpbmVkXCJcbiAgICBbdHJhbnNsYXRpb25LZXlMaXN0VmFsdWVUZW1wbGF0ZV09XCJfdHJhbnNsYXRpb25LZXlMaXN0VmFsdWUgPyB0cmFuc2xhdGlvbktleUxpc3RWYWx1ZSA6IHVuZGVmaW5lZFwiXG4gICAgW251bWJlckxpc3RWYWx1ZVRlbXBsYXRlXT1cIl9udW1iZXJMaXN0VmFsdWUgPyBudW1iZXJMaXN0VmFsdWUgOiB1bmRlZmluZWRcIlxuICAgIFtyZWxhdGl2ZURhdGVMaXN0VmFsdWVUZW1wbGF0ZV09XCJfcmVsYXRpdmVEYXRlTGlzdFZhbHVlID8gcmVsYXRpdmVEYXRlTGlzdFZhbHVlIDogdW5kZWZpbmVkXCJcbiAgICBbY3VzdG9tTGlzdFZhbHVlVGVtcGxhdGVdPVwiX2N1c3RvbUxpc3RWYWx1ZSA/IGN1c3RvbUxpc3RWYWx1ZSA6IHVuZGVmaW5lZFwiXG4gICAgW3N0cmluZ0xpc3RWYWx1ZVRlbXBsYXRlXT1cIl9zdHJpbmdMaXN0VmFsdWUgPyBzdHJpbmdMaXN0VmFsdWUgOiB1bmRlZmluZWRcIlxuICAgIFtkYXRlTGlzdFZhbHVlVGVtcGxhdGVdPVwiX2RhdGVMaXN0VmFsdWUgPyBkYXRlTGlzdFZhbHVlIDogdW5kZWZpbmVkXCJcbiAgICBbZ3JpZEl0ZW1UZW1wbGF0ZV09XCJfZ3JpZEl0ZW0gPyBncmlkSXRlbSAgOiB1bmRlZmluZWRcIlxuICAgIFt0YWJsZUZpbHRlckNlbGxUZW1wbGF0ZV09XCJfdGFibGVGaWx0ZXJDZWxsID8gdGFibGVGaWx0ZXJDZWxsIDogdW5kZWZpbmVkXCJcbiAgICBbZGF0ZVRhYmxlRmlsdGVyQ2VsbFRlbXBsYXRlXT1cIl9kYXRlVGFibGVGaWx0ZXJDZWxsID8gZGF0ZVRhYmxlRmlsdGVyQ2VsbCA6IHVuZGVmaW5lZFwiXG4gICAgW2N1c3RvbVRhYmxlRmlsdGVyQ2VsbFRlbXBsYXRlXT1cIl9jdXN0b21UYWJsZUZpbHRlckNlbGwgPyBjdXN0b21UYWJsZUZpbHRlckNlbGwgOiB1bmRlZmluZWRcIlxuICAgIFtudW1iZXJUYWJsZUZpbHRlckNlbGxUZW1wbGF0ZV09XCJfbnVtYmVyVGFibGVGaWx0ZXJDZWxsID8gbnVtYmVyVGFibGVGaWx0ZXJDZWxsIDogdW5kZWZpbmVkXCJcbiAgICBbc3RyaW5nVGFibGVGaWx0ZXJDZWxsVGVtcGxhdGVdPVwiX3N0cmluZ1RhYmxlRmlsdGVyQ2VsbCA/IHN0cmluZ1RhYmxlRmlsdGVyQ2VsbCA6IHVuZGVmaW5lZFwiXG4gICAgW3JlbGF0aXZlRGF0ZVRhYmxlRmlsdGVyQ2VsbFRlbXBsYXRlXT1cIl9yZWxhdGl2ZURhdGVUYWJsZUZpbHRlckNlbGwgPyByZWxhdGl2ZURhdGVUYWJsZUZpbHRlckNlbGwgOiB1bmRlZmluZWRcIlxuICAgIFt0cmFuc2xhdGlvbktleVRhYmxlRmlsdGVyQ2VsbFRlbXBsYXRlXT1cIl90cmFuc2xhdGlvbktleVRhYmxlRmlsdGVyQ2VsbCA/IHRyYW5zbGF0aW9uS2V5VGFibGVGaWx0ZXJDZWxsIDogdW5kZWZpbmVkXCJcbiAgICAoc29ydGVkKT1cInNvcnRpbmcoJGV2ZW50KVwiXG4gICAgKGZpbHRlcmVkKT1cImZpbHRlcmluZygkZXZlbnQpXCJcbiAgICBbdG90YWxSZWNvcmRzT25TZXJ2ZXJdPVwidG90YWxSZWNvcmRzT25TZXJ2ZXJcIlxuICAgIFtjdXJyZW50UGFnZVNob3dpbmdLZXldPVwiY3VycmVudFBhZ2VTaG93aW5nS2V5XCJcbiAgICBbY3VycmVudFBhZ2VTaG93aW5nV2l0aFRvdGFsT25TZXJ2ZXJLZXldPVwiY3VycmVudFBhZ2VTaG93aW5nV2l0aFRvdGFsT25TZXJ2ZXJLZXlcIlxuICAgIFtwYXJlbnRUZW1wbGF0ZXNdPVwidGVtcGxhdGVzJCB8IGFzeW5jXCJcbiAgPlxuICA8L29jeC1kYXRhLXZpZXc+XG48L2Rpdj5cbjxuZy10ZW1wbGF0ZSAjc3RyaW5nVGFibGVDZWxsIGxldC1yb3dPYmplY3Q9XCJyb3dPYmplY3RcIiBsZXQtY29sdW1uPVwiY29sdW1uXCI+XG4gIDxuZy1jb250YWluZXJcbiAgICAqbmdJZj1cIl9zdHJpbmdUYWJsZUNlbGxcIlxuICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIl9zdHJpbmdUYWJsZUNlbGxcIlxuICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7cm93T2JqZWN0OiByb3dPYmplY3QsIGNvbHVtbjpjb2x1bW59XCJcbiAgPlxuICA8L25nLWNvbnRhaW5lclxuPjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI3RhYmxlRGF0ZUNlbGwgbGV0LXJvd09iamVjdD1cInJvd09iamVjdFwiIGxldC1jb2x1bW49XCJjb2x1bW5cIj5cbiAgPG5nLWNvbnRhaW5lclxuICAgICpuZ0lmPVwiX3RhYmxlRGF0ZUNlbGxcIlxuICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIl90YWJsZURhdGVDZWxsXCJcbiAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie3Jvd09iamVjdDpyb3dPYmplY3QsIGNvbHVtbjpjb2x1bW59XCJcbiAgPlxuICA8L25nLWNvbnRhaW5lclxuPjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI2RhdGVUYWJsZUNlbGwgbGV0LXJvd09iamVjdD1cInJvd09iamVjdFwiIGxldC1jb2x1bW49XCJjb2x1bW5cIj5cbiAgPG5nLWNvbnRhaW5lclxuICAgICpuZ0lmPVwiX2RhdGVUYWJsZUNlbGxcIlxuICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIl9kYXRlVGFibGVDZWxsXCJcbiAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie3Jvd09iamVjdDpyb3dPYmplY3QsIGNvbHVtbjpjb2x1bW59XCJcbiAgPlxuICA8L25nLWNvbnRhaW5lclxuPjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI3RhYmxlUmVsYXRpdmVEYXRlQ2VsbCBsZXQtcm93T2JqZWN0PVwicm93T2JqZWN0XCIgbGV0LWNvbHVtbj1cImNvbHVtblwiPlxuICA8bmctY29udGFpbmVyXG4gICAgKm5nSWY9XCJfdGFibGVSZWxhdGl2ZURhdGVDZWxsXCJcbiAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJfdGFibGVSZWxhdGl2ZURhdGVDZWxsXCJcbiAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie3Jvd09iamVjdDpyb3dPYmplY3QsIGNvbHVtbjpjb2x1bW59XCJcbiAgPlxuICA8L25nLWNvbnRhaW5lclxuPjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI3JlbGF0aXZlRGF0ZVRhYmxlQ2VsbCBsZXQtcm93T2JqZWN0PVwicm93T2JqZWN0XCIgbGV0LWNvbHVtbj1cImNvbHVtblwiPlxuICA8bmctY29udGFpbmVyXG4gICAgKm5nSWY9XCJfcmVsYXRpdmVEYXRlVGFibGVDZWxsXCJcbiAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJfcmVsYXRpdmVEYXRlVGFibGVDZWxsXCJcbiAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie3Jvd09iamVjdDpyb3dPYmplY3QsIGNvbHVtbjpjb2x1bW59XCJcbiAgPlxuICA8L25nLWNvbnRhaW5lclxuPjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI3RhYmxlQ2VsbCBsZXQtcm93T2JqZWN0PVwicm93T2JqZWN0XCIgbGV0LWNvbHVtbj1cImNvbHVtblwiPlxuICA8bmctY29udGFpbmVyXG4gICAgKm5nSWY9XCJfdGFibGVDZWxsXCJcbiAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJfdGFibGVDZWxsXCJcbiAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie3Jvd09iamVjdDogcm93T2JqZWN0LCBjb2x1bW46Y29sdW1ufVwiXG4gID5cbiAgPC9uZy1jb250YWluZXJcbj48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICN0YWJsZVRyYW5zbGF0aW9uS2V5Q2VsbCBsZXQtcm93T2JqZWN0PVwicm93T2JqZWN0XCIgbGV0LWNvbHVtbj1cImNvbHVtblwiPlxuICA8bmctY29udGFpbmVyXG4gICAgKm5nSWY9XCJfdGFibGVUcmFuc2xhdGlvbktleUNlbGxcIlxuICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIl90YWJsZVRyYW5zbGF0aW9uS2V5Q2VsbFwiXG4gICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntyb3dPYmplY3Q6cm93T2JqZWN0LCBjb2x1bW46Y29sdW1ufVwiXG4gID5cbiAgPC9uZy1jb250YWluZXJcbj48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICN0cmFuc2xhdGlvbktleVRhYmxlQ2VsbCBsZXQtcm93T2JqZWN0PVwicm93T2JqZWN0XCIgbGV0LWNvbHVtbj1cImNvbHVtblwiPlxuICA8bmctY29udGFpbmVyXG4gICAgKm5nSWY9XCJfdHJhbnNsYXRpb25LZXlUYWJsZUNlbGxcIlxuICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIl90cmFuc2xhdGlvbktleVRhYmxlQ2VsbFwiXG4gICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntyb3dPYmplY3Q6cm93T2JqZWN0LCBjb2x1bW46Y29sdW1ufVwiXG4gID5cbiAgPC9uZy1jb250YWluZXJcbj48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICNncmlkSXRlbVN1YnRpdGxlTGluZXMgbGV0LWl0ZW0+XG4gIDxuZy1jb250YWluZXJcbiAgICAqbmdJZj1cIl9ncmlkSXRlbVN1YnRpdGxlTGluZXNcIlxuICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIl9ncmlkSXRlbVN1YnRpdGxlTGluZXNcIlxuICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7JGltcGxpY2l0Oml0ZW19XCJcbiAgPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI2xpc3RJdGVtU3VidGl0bGVMaW5lcyBsZXQtaXRlbT5cbiAgPG5nLWNvbnRhaW5lclxuICAgICpuZ0lmPVwiX2xpc3RJdGVtU3VidGl0bGVMaW5lc1wiXG4gICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiX2xpc3RJdGVtU3VidGl0bGVMaW5lc1wiXG4gICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInskaW1wbGljaXQ6aXRlbX1cIlxuICA+XG4gIDwvbmctY29udGFpbmVyXG4+PC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjZ3JpZEl0ZW0gbGV0LWl0ZW0+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJfZ3JpZEl0ZW1cIiBbbmdUZW1wbGF0ZU91dGxldF09XCJfZ3JpZEl0ZW1cIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyRpbXBsaWNpdDppdGVtfVwiPlxuICA8L25nLWNvbnRhaW5lclxuPjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI2xpc3RJdGVtIGxldC1pdGVtPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiX2xpc3RJdGVtXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiX2xpc3RJdGVtXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInskaW1wbGljaXQ6aXRlbX1cIj5cbiAgPC9uZy1jb250YWluZXJcbj48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICNsaXN0VmFsdWUgbGV0LXJvd09iamVjdD1cInJvd09iamVjdFwiIGxldC1jb2x1bW49XCJjb2x1bW5cIj5cbiAgPG5nLWNvbnRhaW5lclxuICAgICpuZ0lmPVwiX2xpc3RWYWx1ZVwiXG4gICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiX2xpc3RWYWx1ZVwiXG4gICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntyb3dPYmplY3Q6IHJvd09iamVjdCwgY29sdW1uOmNvbHVtbn1cIlxuICA+XG4gIDwvbmctY29udGFpbmVyXG4+PC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjdHJhbnNsYXRpb25LZXlMaXN0VmFsdWUgbGV0LXJvd09iamVjdD1cInJvd09iamVjdFwiIGxldC1jb2x1bW49XCJjb2x1bW5cIj5cbiAgPG5nLWNvbnRhaW5lclxuICAgICpuZ0lmPVwiX3RyYW5zbGF0aW9uS2V5TGlzdFZhbHVlXCJcbiAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJfdHJhbnNsYXRpb25LZXlMaXN0VmFsdWVcIlxuICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7cm93T2JqZWN0OiByb3dPYmplY3QsIGNvbHVtbjpjb2x1bW59XCJcbiAgPlxuICA8L25nLWNvbnRhaW5lclxuPjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI251bWJlckxpc3RWYWx1ZSBsZXQtcm93T2JqZWN0PVwicm93T2JqZWN0XCIgbGV0LWNvbHVtbj1cImNvbHVtblwiPlxuICA8bmctY29udGFpbmVyXG4gICAgKm5nSWY9XCJfbnVtYmVyTGlzdFZhbHVlXCJcbiAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJfbnVtYmVyTGlzdFZhbHVlXCJcbiAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie3Jvd09iamVjdDogcm93T2JqZWN0LCBjb2x1bW46Y29sdW1ufVwiXG4gID5cbiAgPC9uZy1jb250YWluZXJcbj48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICNyZWxhdGl2ZURhdGVMaXN0VmFsdWUgbGV0LXJvd09iamVjdD1cInJvd09iamVjdFwiIGxldC1jb2x1bW49XCJjb2x1bW5cIj5cbiAgPG5nLWNvbnRhaW5lclxuICAgICpuZ0lmPVwiX3JlbGF0aXZlRGF0ZUxpc3RWYWx1ZVwiXG4gICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiX3JlbGF0aXZlRGF0ZUxpc3RWYWx1ZVwiXG4gICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntyb3dPYmplY3Q6IHJvd09iamVjdCwgY29sdW1uOmNvbHVtbn1cIlxuICA+XG4gIDwvbmctY29udGFpbmVyXG4+PC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjY3VzdG9tTGlzdFZhbHVlIGxldC1yb3dPYmplY3Q9XCJyb3dPYmplY3RcIiBsZXQtY29sdW1uPVwiY29sdW1uXCI+XG4gIDxuZy1jb250YWluZXJcbiAgICAqbmdJZj1cIl9jdXN0b21MaXN0VmFsdWVcIlxuICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIl9jdXN0b21MaXN0VmFsdWVcIlxuICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7cm93T2JqZWN0OiByb3dPYmplY3QsIGNvbHVtbjpjb2x1bW59XCJcbiAgPlxuICA8L25nLWNvbnRhaW5lclxuPjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI3N0cmluZ0xpc3RWYWx1ZSBsZXQtcm93T2JqZWN0PVwicm93T2JqZWN0XCIgbGV0LWNvbHVtbj1cImNvbHVtblwiPlxuICA8bmctY29udGFpbmVyXG4gICAgKm5nSWY9XCJfc3RyaW5nTGlzdFZhbHVlXCJcbiAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJfc3RyaW5nTGlzdFZhbHVlXCJcbiAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie3Jvd09iamVjdDogcm93T2JqZWN0LCBjb2x1bW46Y29sdW1ufVwiXG4gID5cbiAgPC9uZy1jb250YWluZXJcbj48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICNkYXRlTGlzdFZhbHVlIGxldC1yb3dPYmplY3Q9XCJyb3dPYmplY3RcIiBsZXQtY29sdW1uPVwiY29sdW1uXCI+XG4gIDxuZy1jb250YWluZXJcbiAgICAqbmdJZj1cIl9kYXRlTGlzdFZhbHVlXCJcbiAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJfZGF0ZUxpc3RWYWx1ZVwiXG4gICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntyb3dPYmplY3Q6IHJvd09iamVjdCwgY29sdW1uOmNvbHVtbn1cIlxuICA+XG4gIDwvbmctY29udGFpbmVyXG4+PC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNzdHJpbmdUYWJsZUZpbHRlckNlbGwgbGV0LXJvd09iamVjdD1cInJvd09iamVjdFwiIGxldC1jb2x1bW49XCJjb2x1bW5cIj5cbiAgPG5nLWNvbnRhaW5lclxuICAgICpuZ0lmPVwiX3N0cmluZ1RhYmxlRmlsdGVyQ2VsbFwiXG4gICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiX3N0cmluZ1RhYmxlRmlsdGVyQ2VsbFwiXG4gICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntyb3dPYmplY3Q6IHJvd09iamVjdCwgY29sdW1uOmNvbHVtbn1cIlxuICA+XG4gIDwvbmctY29udGFpbmVyXG4+PC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjbnVtYmVyVGFibGVGaWx0ZXJDZWxsIGxldC1yb3dPYmplY3Q9XCJyb3dPYmplY3RcIiBsZXQtY29sdW1uPVwiY29sdW1uXCI+XG4gIDxuZy1jb250YWluZXJcbiAgICAqbmdJZj1cIl9udW1iZXJUYWJsZUZpbHRlckNlbGxcIlxuICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIl9udW1iZXJUYWJsZUZpbHRlckNlbGxcIlxuICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7cm93T2JqZWN0OiByb3dPYmplY3QsIGNvbHVtbjpjb2x1bW59XCJcbiAgPlxuICA8L25nLWNvbnRhaW5lclxuPjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI2N1c3RvbVRhYmxlRmlsdGVyQ2VsbCBsZXQtcm93T2JqZWN0PVwicm93T2JqZWN0XCIgbGV0LWNvbHVtbj1cImNvbHVtblwiPlxuICA8bmctY29udGFpbmVyXG4gICAgKm5nSWY9XCJfY3VzdG9tVGFibGVGaWx0ZXJDZWxsXCJcbiAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJfY3VzdG9tVGFibGVGaWx0ZXJDZWxsXCJcbiAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie3Jvd09iamVjdDogcm93T2JqZWN0LCBjb2x1bW46Y29sdW1ufVwiXG4gID5cbiAgPC9uZy1jb250YWluZXJcbj48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICNkYXRlVGFibGVGaWx0ZXJDZWxsIGxldC1yb3dPYmplY3Q9XCJyb3dPYmplY3RcIiBsZXQtY29sdW1uPVwiY29sdW1uXCI+XG4gIDxuZy1jb250YWluZXJcbiAgICAqbmdJZj1cIl9kYXRlVGFibGVGaWx0ZXJDZWxsXCJcbiAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJfZGF0ZVRhYmxlRmlsdGVyQ2VsbFwiXG4gICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntyb3dPYmplY3Q6IHJvd09iamVjdCwgY29sdW1uOmNvbHVtbn1cIlxuICA+XG4gIDwvbmctY29udGFpbmVyXG4+PC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjcmVsYXRpdmVEYXRlVGFibGVGaWx0ZXJDZWxsIGxldC1yb3dPYmplY3Q9XCJyb3dPYmplY3RcIiBsZXQtY29sdW1uPVwiY29sdW1uXCI+XG4gIDxuZy1jb250YWluZXJcbiAgICAqbmdJZj1cIl9yZWxhdGl2ZURhdGVUYWJsZUZpbHRlckNlbGxcIlxuICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIl9yZWxhdGl2ZURhdGVUYWJsZUZpbHRlckNlbGxcIlxuICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7cm93T2JqZWN0OiByb3dPYmplY3QsIGNvbHVtbjpjb2x1bW59XCJcbiAgPlxuICA8L25nLWNvbnRhaW5lclxuPjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI3RyYW5zbGF0aW9uS2V5VGFibGVGaWx0ZXJDZWxsIGxldC1yb3dPYmplY3Q9XCJyb3dPYmplY3RcIiBsZXQtY29sdW1uPVwiY29sdW1uXCI+XG4gIDxuZy1jb250YWluZXJcbiAgICAqbmdJZj1cIl90cmFuc2xhdGlvbktleVRhYmxlRmlsdGVyQ2VsbFwiXG4gICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiX3RyYW5zbGF0aW9uS2V5VGFibGVGaWx0ZXJDZWxsXCJcbiAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie3Jvd09iamVjdDogcm93T2JqZWN0LCBjb2x1bW46Y29sdW1ufVwiXG4gID5cbiAgPC9uZy1jb250YWluZXJcbj48L25nLXRlbXBsYXRlPlxuIl19
|