nuxeo-development-framework 5.5.7 → 5.5.9

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.
@@ -1,9 +1,9 @@
1
1
  import { __rest } from "tslib";
2
- import { Component, ContentChild, EventEmitter, Input, Output, TemplateRef } from '@angular/core';
3
- import { BehaviorSubject, combineLatest, forkJoin, of } from 'rxjs';
4
- import { catchError, filter, map, startWith, switchMap, takeUntil } from 'rxjs/operators';
5
- import { ACTIONS_TABLE_TEMPLATE, FILTER_CUSTOM_TEMPLATE, SEARCH_TABLE_TEMPLATE } from '../../directives';
6
- import { COMPARISON_OPERATOR, HtmlDialogComponent } from '../../../../ndf-filters';
2
+ import { Component, ContentChild, EventEmitter, Input, Output, TemplateRef, } from '@angular/core';
3
+ import { BehaviorSubject, combineLatest, forkJoin, of, } from 'rxjs';
4
+ import { catchError, filter, map, startWith, switchMap, takeUntil, } from 'rxjs/operators';
5
+ import { ACTIONS_TABLE_TEMPLATE, FILTER_CUSTOM_TEMPLATE, SEARCH_TABLE_TEMPLATE, } from '../../directives';
6
+ import { COMPARISON_OPERATOR, HtmlDialogComponent, } from '../../../../ndf-filters';
7
7
  import _ from 'lodash';
8
8
  import { PAGE_SIZE } from '../../constants';
9
9
  import { DestroySubject } from '../../../../../shared/components';
@@ -54,8 +54,8 @@ export class NdfTableComponent extends DestroySubject {
54
54
  this._customCriteriaSub = new BehaviorSubject({
55
55
  params: {},
56
56
  payload: {
57
- predicateList: []
58
- }
57
+ predicateList: [],
58
+ },
59
59
  });
60
60
  this.aggregations$ = this._aggregationsSub.asObservable();
61
61
  this.displayedColumns$ = this._displayedColumnsSub.asObservable();
@@ -63,10 +63,14 @@ export class NdfTableComponent extends DestroySubject {
63
63
  this.viewMode$ = this._viewModeSub.asObservable();
64
64
  this.customFilters$ = this._customCriteriaSub.asObservable();
65
65
  this.textSearch$ = this._textSearchSub.asObservable();
66
- this.searchAndFilters$ = combineLatest([this.textSearch$, this.customFilters$]).pipe(map((res) => this._prepareSearch(res)));
66
+ this.searchAndFilters$ = combineLatest([
67
+ this.textSearch$,
68
+ this.customFilters$,
69
+ ]).pipe(map((res) => this._prepareSearch(res)));
67
70
  this.autoCalculateHeight = true;
68
71
  this.emptyMessage = 'table_noData';
69
72
  this.configPath = 'tables';
73
+ this.styleClass = '';
70
74
  this.jsonEditorEnabled = false;
71
75
  this.onRowSelected = new EventEmitter();
72
76
  this.onRowIndexSelected = new EventEmitter();
@@ -90,7 +94,7 @@ export class NdfTableComponent extends DestroySubject {
90
94
  this._activePage = {
91
95
  pageIndex: 1,
92
96
  pageSize: 10,
93
- length: 0
97
+ length: 0,
94
98
  };
95
99
  this.editorType = NDF_EDITOR_TYPE.TABLES;
96
100
  this._translateService.onLangChange
@@ -179,11 +183,14 @@ export class NdfTableComponent extends DestroySubject {
179
183
  onLoad(data) {
180
184
  var _a, _b, _c;
181
185
  this.onLoaded.emit(data);
182
- if (!this._tableInitialized || ((_a = this.filterReloadConfig) === null || _a === void 0 ? void 0 : _a.strategy) === 'never' || this._pageChanged) {
186
+ if (!this._tableInitialized ||
187
+ ((_a = this.filterReloadConfig) === null || _a === void 0 ? void 0 : _a.strategy) === 'never' ||
188
+ this._pageChanged) {
183
189
  this._pageChanged = false;
184
190
  return;
185
191
  }
186
- if (this._isConfigChanged || ((_b = this.filterReloadConfig) === null || _b === void 0 ? void 0 : _b.strategy) === 'always') {
192
+ if (this._isConfigChanged ||
193
+ ((_b = this.filterReloadConfig) === null || _b === void 0 ? void 0 : _b.strategy) === 'always') {
187
194
  this._aggregationsSub.next(data === null || data === void 0 ? void 0 : data.aggregations);
188
195
  return;
189
196
  }
@@ -229,7 +236,9 @@ export class NdfTableComponent extends DestroySubject {
229
236
  const fields = columns.map((col) => col.headerClass || (col === null || col === void 0 ? void 0 : col.filedKey));
230
237
  const headers = columns.map((col) => (this.tableConfig.prefix || '') + col.name);
231
238
  const criteria = this._customCriteriaSub.getValue();
232
- request.params = Object.assign({}, criteria.params, this._sortValue || {}, ((_b = this.tableConfig) === null || _b === void 0 ? void 0 : _b.quickFilters) ? { quickFilters: this.tableConfig.quickFilters } : {}, request.params);
239
+ request.params = Object.assign({}, criteria.params, this._sortValue || {}, ((_b = this.tableConfig) === null || _b === void 0 ? void 0 : _b.quickFilters)
240
+ ? { quickFilters: this.tableConfig.quickFilters }
241
+ : {}, request.params);
233
242
  const blobNameKey = (_c = this.exportTableConfig) === null || _c === void 0 ? void 0 : _c.blobName;
234
243
  const payload = {
235
244
  predicateList: criteria.payload.predicateList || [],
@@ -239,12 +248,12 @@ export class NdfTableComponent extends DestroySubject {
239
248
  fileType: type,
240
249
  locale: ((_d = this.exportTableConfig) === null || _d === void 0 ? void 0 : _d.locale) || this._translateService.currentLang,
241
250
  fields: ((_e = this.exportTableConfig) === null || _e === void 0 ? void 0 : _e.fields) || fields,
242
- headers: []
243
- }
251
+ headers: [],
252
+ },
244
253
  };
245
254
  forkJoin({
246
255
  ar: this._translateService.getTranslation('ar'),
247
- en: this._translateService.getTranslation('en')
256
+ en: this._translateService.getTranslation('en'),
248
257
  })
249
258
  .pipe(switchMap((translations) => {
250
259
  const currentTranslations = translations[this._translateService.currentLang];
@@ -270,7 +279,9 @@ export class NdfTableComponent extends DestroySubject {
270
279
  this._triggerCriteriaChanges(criteria);
271
280
  if (((_a = this.filtersConfig) === null || _a === void 0 ? void 0 : _a.mode) !== 'payload') {
272
281
  const isStringifyParams = (_b = this.filtersConfig) === null || _b === void 0 ? void 0 : _b.stringifyParams;
273
- const value = !isStringifyParams ? criteria : this._stringifyValues(criteria);
282
+ const value = !isStringifyParams
283
+ ? criteria
284
+ : this._stringifyValues(criteria);
274
285
  this._dynamicTableService.refreshData.next(value);
275
286
  return;
276
287
  }
@@ -301,7 +312,9 @@ export class NdfTableComponent extends DestroySubject {
301
312
  this._dialog.open(HtmlDialogComponent, Object.assign(Object.assign({ panelClass: 'p-0', minWidth: 'min(500px,60vw)', direction: this.direction }, options), { data }));
302
313
  }
303
314
  onPageChanged(page) {
304
- this._pageChanged = this._activePage.pageIndex !== page.pageIndex || this._activePage.pageSize !== page.pageSize;
315
+ this._pageChanged =
316
+ this._activePage.pageIndex !== page.pageIndex ||
317
+ this._activePage.pageSize !== page.pageSize;
305
318
  if (this._pageChanged) {
306
319
  this.onPage.emit(page);
307
320
  this._activePage = page;
@@ -324,7 +337,7 @@ export class NdfTableComponent extends DestroySubject {
324
337
  predicateList.push({
325
338
  name: _key,
326
339
  operator: ((_b = this.textSearchConfig) === null || _b === void 0 ? void 0 : _b.operator) || COMPARISON_OPERATOR.equals,
327
- value: `'${search}'`
340
+ value: `'${search}'`,
328
341
  });
329
342
  }
330
343
  }
@@ -348,7 +361,7 @@ export class NdfTableComponent extends DestroySubject {
348
361
  const previousValue = activatedQuery === null || activatedQuery === void 0 ? void 0 : activatedQuery.currentValue;
349
362
  this._activatedCriteriaSub.next({
350
363
  previousValue: previousValue,
351
- currentValue: criteria
364
+ currentValue: criteria,
352
365
  });
353
366
  }
354
367
  /**
@@ -395,7 +408,7 @@ export class NdfTableComponent extends DestroySubject {
395
408
  }
396
409
  }
397
410
  NdfTableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NdfTableComponent, deps: [{ token: i1.FiltersMapperService }, { token: i2.DynamicTableService }, { token: i3.TranslateService }, { token: i4.NdfTableService }, { token: i5.CustomToastrService }, { token: i4.NdfTableConfigurationService }, { token: i6.MatDialog }], target: i0.ɵɵFactoryTarget.Component });
398
- NdfTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: NdfTableComponent, selector: "app-ndf-table", inputs: { rows: "rows", totalRecords: "totalRecords", autoCalculateHeight: "autoCalculateHeight", emptyMessage: "emptyMessage", activeQuery: "activeQuery", configPath: "configPath", configTransformer: "configTransformer", tableKey: "tableKey", jsonEditorEnabled: "jsonEditorEnabled", config: "config", customCriteria: "customCriteria", searchTerm: "searchTerm" }, outputs: { onRowSelected: "onRowSelected", onRowIndexSelected: "onRowIndexSelected", actionOnRow: "actionOnRow", onGettingData: "onGettingData", onMultiRowSelected: "onMultiRowSelected", onLoading: "onLoading", onPage: "onPage", onInitialized: "onInitialized", onLoaded: "onLoaded", onQueryChange: "onQueryChange", onSort: "onSort" }, host: { properties: { "dir": "direction" }, classAttribute: "ndf-table" }, queries: [{ propertyName: "actionsTableTemplate", first: true, predicate: ACTIONS_TABLE_TEMPLATE, descendants: true, read: TemplateRef }, { propertyName: "searchTableTemplate", first: true, predicate: SEARCH_TABLE_TEMPLATE, descendants: true, read: TemplateRef }, { propertyName: "filterCustomTemplate", first: true, predicate: FILTER_CUSTOM_TEMPLATE, descendants: true, read: TemplateRef }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div\r\n\t*ngIf=\"tableConfig\"\r\n\tclass=\"ndf-table__container\"\r\n\t[class.panel-opened]=\"isPanelOpened && filtersConfig\"\r\n\t[dir]=\"direction\"\r\n\tndfFluidHeight\r\n\tcssVar=\"--ndf-table-height\"\r\n\t[calculate]=\"autoCalculateHeight\"\r\n>\r\n\t<div class=\"ndf-table__panel\" *ngIf=\"filtersConfig?.fields\">\r\n\t\t<app-filters-panel\r\n\t\t\t[fields]=\"filtersConfig.fields\"\r\n\t\t\t[aggregations]=\"aggregations$ | async\"\r\n\t\t\t(filterChanged)=\"filterChanged($event)\"\r\n\t\t\t[activeQuery]=\"activeQuery\"\r\n\t\t\tclass=\"ndf-table__filters\"\r\n\t\t\t[customTemplateRef]=\"filterCustomTemplate\"\r\n\t\t></app-filters-panel>\r\n\t</div>\r\n\t<div class=\"ndf-table__content\">\r\n\t\t<div class=\"ndf-table__header flex\">\r\n\t\t\t<div class=\"ndf-table__header__custom-actions flex gap-x-4 items-center\">\r\n\t\t\t\t<ng-container\r\n\t\t\t\t\t[ngTemplateOutlet]=\"searchTableTemplate || defaultActionTemplate\"\r\n\t\t\t\t\t[ngTemplateOutletContext]=\"{\r\n\t\t\t\t\t\t$implicit: tableConfig,\r\n\t\t\t\t\t\tpanelOpened: isPanelOpened,\r\n\t\t\t\t\t\ttogglePanel: togglePanel,\r\n\t\t\t\t\t\topenModal: openSearchModal,\r\n\t\t\t\t\t\tsearch: onTextSearch,\r\n\t\t\t\t\t\tclear: onClearSearch\r\n\t\t\t\t\t}\"\r\n\t\t\t\t></ng-container>\r\n\r\n\t\t\t\t<ng-template #defaultActionTemplate>\r\n\t\t\t\t\t<button mat-stroked-button *ngIf=\"isPanelToggleAvailable\" class=\"toggle-button\" (click)=\"togglePanel()\">\r\n\t\t\t\t\t\t<mat-icon> filter_alt</mat-icon>\r\n\t\t\t\t\t</button>\r\n\t\t\t\t\t<app-text-search\r\n\t\t\t\t\t\t*ngIf=\"textSearchConfig\"\r\n\t\t\t\t\t\t[searchConfig]=\"textSearchConfig\"\r\n\t\t\t\t\t\t(openModal)=\"openSearchModal()\"\r\n\t\t\t\t\t\t[search]=\"textSearch$ | async\"\r\n\t\t\t\t\t\t(searchChange)=\"onTextSearch($event)\"\r\n\t\t\t\t\t\t(clear)=\"onClearSearch()\"\r\n\t\t\t\t\t></app-text-search>\r\n\t\t\t\t</ng-template>\r\n\t\t\t</div>\r\n\t\t\t<div class=\"ndf-table__header__actions flex gap-x-4 items-center\">\r\n\t\t\t\t<app-editor-button\r\n\t\t\t\t\t*ngIf=\"jsonEditorEnabled && (tableKey || tableConfig?.key)\"\r\n\t\t\t\t\t[key]=\"tableKey || tableConfig?.key\"\r\n [type]=\"editorType\"\r\n\t\t\t\t></app-editor-button>\r\n\t\t\t\t<ndf-table-export\r\n\t\t\t\t\t*ngIf=\"exportTableConfig?.enabled\"\r\n\t\t\t\t\t[config]=\"exportTableConfig\"\r\n\t\t\t\t\t(onExport)=\"exportTable($event)\"\r\n\t\t\t\t></ndf-table-export>\r\n\r\n\t\t\t\t<table-sorting-list\r\n\t\t\t\t\t*ngIf=\"!!sortList?.length\"\r\n\t\t\t\t\t[sortList]=\"sortList\"\r\n\t\t\t\t\t(sortChanged)=\"sortChanged($event)\"\r\n\t\t\t\t></table-sorting-list>\r\n\t\t\t\t<table-columns-toggler\r\n\t\t\t\t\t*ngIf=\"columnToggle\"\r\n\t\t\t\t\t[columns]=\"tableConfig.columns\"\r\n\t\t\t\t\t[prefix]=\"tableConfig.prefix\"\r\n\t\t\t\t\t[sortable]=\"columnsOptions?.sortable\"\r\n\t\t\t\t\t(columnsChanged)=\"columnsChanged($event)\"\r\n\t\t\t\t></table-columns-toggler>\r\n\t\t\t\t<mode-toggler\r\n\t\t\t\t\t*ngIf=\"tableMode?.toggleMode\"\r\n\t\t\t\t\t[mode]=\"tableMode.mode || 'list'\"\r\n\t\t\t\t\t[modesList]=\"tableMode?.availableMode\"\r\n\t\t\t\t\t(modeChanged)=\"modeChanged($event)\"\r\n\t\t\t\t></mode-toggler>\r\n\t\t\t\t<ng-container\r\n\t\t\t\t\t[ngTemplateOutlet]=\"actionsTableTemplate\"\r\n\t\t\t\t\t[ngTemplateOutletContext]=\"{\r\n\t\t\t\t\t\t$implicit: tableConfig,\r\n\t\t\t\t\t\tpanelOpened: isPanelOpened,\r\n\t\t\t\t\t\ttogglePanel: togglePanel,\r\n\t\t\t\t\t\topenModal: openSearchModal,\r\n\t\t\t\t\t\tsearch: onTextSearch,\r\n\t\t\t\t\t\tclear: onClearSearch\r\n\t\t\t\t\t}\"\r\n\t\t\t\t></ng-container>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\r\n\t\t<cts-dynamic-table\r\n\t\t\t*ngIf=\"!tableConfig.isDataProvided\"\r\n\t\t\tclass=\"ndf-table__table table-style\"\r\n\t\t\t[columns]=\"displayedColumns$ | async\"\r\n\t\t\t[responsiveColumns]=\"displayedColumns$ | async\"\r\n\t\t\t[fullWidth]=\"tableConfig.fullWidth || 'auto'\"\r\n\t\t\t[pageSize]=\"tableConfig.pageSize || 10\"\r\n\t\t\t[pageNumber]=\"tableConfig.pageNumber || 1\"\r\n\t\t\t[pageProvider]=\"tableConfig.pageProvider\"\r\n\t\t\t[customUrl]=\"tableConfig.customUrl\"\r\n\t\t\t[quickFilter]=\"tableConfig.quickFilters ? { quickFilters: tableConfig.quickFilters } : undefined\"\r\n\t\t\t[defultSort]=\"tableConfig.defaultSort || defaultSort\"\r\n\t\t\t[sortingBy]=\"sortOption$ | async\"\r\n\t\t\t[entityType]=\"'all'\"\r\n\t\t\t[fields]=\"tableConfig.fields\"\r\n\t\t\t[tableMode]=\"viewMode$ | async\"\r\n\t\t\t[componentName]=\"tableMode?.['componentName']\"\r\n\t\t\t[range]=\"tableConfig?.range\"\r\n\t\t\t[isSearchPage]=\"tableConfig?.isSearchPage\"\r\n\t\t\t[multiSelectRows]=\"tableConfig?.multiSelectRows\"\r\n\t\t\t[customFirstRow]=\"tableConfig?.customFirstRow\"\r\n\t\t\t[highlightSelectedCard]=\"tableConfig?.highlightSelectedCard\"\r\n\t\t\t[showActionsAsMenu]=\"tableConfig?.showActionsAsMenu\"\r\n\t\t\t[filterParams]=\"tableConfig?.filterParams\"\r\n\t\t\t[format]=\"tableConfig?.format || 'MMMM d, y'\"\r\n\t\t\t[pageSizes]=\"tableConfig?.pageSizes || defaultPageSizes\"\r\n\t\t\t[prefix]=\"tableConfig.prefix || ''\"\r\n\t\t\t[rowCursor]=\"true\"\r\n\t\t\t[queryParam]=\"tableConfig.queryParam\"\r\n\t\t\t[customFilters]=\"searchAndFilters$ | async\"\r\n\t\t\t[tableActions]=\"tableConfig.tableActions\"\r\n [requestActions]=\"tableConfig?.requestActions\"\r\n\t\t\t[headers]=\"tableConfig.headers\"\r\n\t\t\t(onRowSelected)=\"onRowSelected.emit($event)\"\r\n\t\t\t(onRowIndexSelected)=\"onRowIndexSelected.emit($event)\"\r\n\t\t\t(actionOnRow)=\"actionOnRow.emit($event)\"\r\n\t\t\t(onGettingData)=\"onGettingData.emit($event)\"\r\n\t\t\t(onLoad)=\"onLoad($event)\"\r\n\t\t\t(onInitialize)=\"onInitialize($event)\"\r\n\t\t\t(onMultiRowSelected)=\"onMultiRowSelected.emit($event)\"\r\n\t\t\t(onLoading)=\"onLoading.emit($event)\"\r\n\t\t\t(onPage)=\"onPageChanged($event)\"\r\n\t\t\t[isLegacyMode]=\"false\"\r\n\t\t\t[showTotalRecord]=\"true\"\r\n\t\t\t(sortChanged)=\"onSortChanged($event)\"\r\n\t\t>\r\n\t\t\t<ng-template emptyTemplate let-isLoading let-rows=\"rows\" let-initialized=\"initialized\">\r\n\t\t\t\t<div class=\"loading-data\" *ngIf=\"isLoading && initialized\">\r\n\t\t\t\t\t<mat-spinner></mat-spinner>\r\n\t\t\t\t</div>\r\n\r\n\t\t\t\t<div class=\"flex items-center justify-center h-5/6\" *ngIf=\"!isLoading && !rows.length\">\r\n\t\t\t\t\t<app-no-data-found class=\"mt-4\" [message]=\"emptyMessage\"></app-no-data-found>\r\n\t\t\t\t</div>\r\n\t\t\t</ng-template>\r\n\t\t</cts-dynamic-table>\r\n\r\n\t\t<cts-table\r\n\t\t\t*ngIf=\"tableConfig.isDataProvided\"\r\n\t\t\t[rows]=\"rows\"\r\n\t\t\t[totalRecords]=\"totalRecords\"\r\n\t\t\t[columns]=\"displayedColumns$ | async\"\r\n\t\t\t[responsiveColumns]=\"displayedColumns$ | async\"\r\n\t\t\t[rowCursor]=\"true\"\r\n\t\t\t[fullWidth]=\"tableConfig.fullWidth || 'auto'\"\r\n\t\t\t[entityType]=\"'all'\"\r\n\t\t\t[prefix]=\"tableConfig.prefix || ''\"\r\n\t\t\t[tableMode]=\"viewMode$ | async\"\r\n\t\t\t[componentName]=\"tableMode?.['componentName']\"\r\n\t\t\t[multiSelectRows]=\"tableConfig?.multiSelectRows\"\r\n\t\t\t[customFirstRow]=\"tableConfig?.customFirstRow\"\r\n\t\t\t[tableActions]=\"tableConfig.tableActions\"\r\n\t\t\t[showActionsAsMenu]=\"tableConfig?.showActionsAsMenu\"\r\n\t\t\t[defultSort]=\"tableConfig.defaultSort || defaultSort\"\r\n\t\t\t[format]=\"tableConfig?.format || 'MMMM d, y'\"\r\n\t\t\t[highlightSelectedCard]=\"tableConfig?.highlightSelectedCard\"\r\n\t\t\t(onRowSelected)=\"onRowSelected.emit($event)\"\r\n\t\t\t(onRowIndexSelected)=\"onRowIndexSelected.emit($event)\"\r\n\t\t\t(onMultiRowSelected)=\"onMultiRowSelected.emit($event)\"\r\n\t\t\t(actionOnRow)=\"actionOnRow.emit($event)\"\r\n\t\t\t(onSorting)=\"onSortChanged($event)\"\r\n\t\t></cts-table>\r\n\t</div>\r\n</div>\r\n", styles: [":host{padding-inline:var(--ndf-tbl-inline-padding, 1rem);padding-block:var(--ndf-tbl-block-padding, 1rem);border:var(--ndf-tbl-border, solid transparent);border-width:var(--ndf-table-border-width, 0);border-radius:var(--ndf-tbl-border-radius, 0);height:100%;position:relative;display:flex;flex-direction:column;background-color:var(--ndf-tbl-background, #fff);box-sizing:border-box;max-width:100%;flex:0 0 100%}:host [dir=ltr]{--ndf-tbl-panel-translateX: -100%}:host:before,:host:after{box-sizing:border-box}::ng-deep .wrapping,::ng-deep .wrapping .table-reposition{overflow:visible}.ndf-table__container{--table-div-height: auto;--table-reposition-overflow-y: visible;--table-div-overflow: visible;--panel-width: var(--ndf-tbl-panel-width, 18rem);position:relative;overflow:hidden;display:grid;transition:all .2s;max-width:100%;width:100%;height:var(--ndf-tbl-height, calc(var(--ndf-table-height, auto) - calc(var(--ndf-tbl-block-padding, 1rem) * 2.5)));flex-grow:1;grid-gap:var(--ndf-table-container-gap, .5rem);gap:var(--ndf-table-container-gap, .5rem)}.ndf-table__container.panel-opened{--ndf-tbl-panel-translateX: 0;--ndf-tbl-content-pis: var(--panel-width)}.ndf-table__panel,.ndf-table__content{overflow:auto;transition:all .2s}.ndf-table__panel{position:absolute;width:var(--panel-width);height:100%;transform:translate(var(--ndf-tbl-panel-translateX, 100%));padding-inline:var(--ndf-tbl-panel-inline-padding, .5rem);padding-block:var(--ndf-tbl-panel-block-padding, .5rem);background:var(--ndf-tbl-panel-background, #fff);z-index:1}.ndf-table__content{flex-grow:1;padding-inline-start:var(--ndf-tbl-content-pis, 0);padding-block-end:var(--ndf-tbl-content-pbe, 1rem);overflow-y:var(--ndf-tbl-content-overflow-y, auto);max-height:var(--ndf-tbl-content-max-height, var(--ndf-table-height));display:flex;flex-direction:column;height:-moz-fit-content;height:fit-content}.ndf-table__header{background-color:var(--ndf-tbl-background, #fff);flex-direction:var(--ndf-tbl-header-direction, row);justify-content:var(--ndf-tbl-header-justify, space-between);align-items:var(--ndf-tbl-header-items, center);padding-inline:var(--ndf-tbl-header-padding-inline, .5rem);padding-block:var(--ndf-tbl-header-padding-block, 0 .5rem);position:var(--ndf-tbl-header-position, sticky);top:0;z-index:1}.ndf-table__header__actions{justify-content:var(--ndf-tbl-actions-justify, flex-end)}.ndf-table__header__custom-actions .toggle-button{min-width:0;padding:0 10px}.ndf-table__table{flex-grow:1;display:flex;flex-direction:column}.ndf-table__table.no-data{--table-div-height: auto}.loading-data{position:absolute;inset:0;display:grid;place-items:center;background:var(--loading-data-background, rgba(255, 255, 255, .2));-webkit-backdrop-filter:var(--loading-data-backdrop-filter, blur(3px));backdrop-filter:var(--loading-data-backdrop-filter, blur(3px))}\n"], components: [{ type: i7.FiltersPanelComponent, selector: "app-filters-panel", inputs: ["aggregations", "fields", "activeQuery"], outputs: ["filterChanged"] }, { type: i8.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i9.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i10.TextSearchComponent, selector: "app-text-search", inputs: ["searchConfig", "search"], outputs: ["searchChange", "openModal", "clear"] }, { type: i11.EditorButtonComponent, selector: "app-editor-button", inputs: ["type", "key"] }, { type: i12.TableExportComponent, selector: "ndf-table-export", inputs: ["config"], outputs: ["onExport"] }, { type: i13.SortingListComponent, selector: "table-sorting-list", inputs: ["sortList"], outputs: ["sortChanged"] }, { type: i14.TableColumnsTogglerComponent, selector: "table-columns-toggler", inputs: ["prefix", "sortable", "columns"], outputs: ["columnsChanged"] }, { type: i15.ModeTogglerComponent, selector: "mode-toggler", inputs: ["modesList", "mode"], outputs: ["modeChanged"] }, { type: i16.DynamicTableComponent, selector: "cts-dynamic-table", inputs: ["columns", "responsiveColumns", "entityType", "prefix", "headers", "fields", "pageProvider", "pageSize", "isLegacyMode", "showTotalRecord", "pageNumber", "sortingBy", "queryParam", "customFilters", "quickFilter", "report", "rowCursor", "fullWidth", "tableMode", "componentName", "tableActions", "defultSort", "range", "isSearchPage", "multiSelectRows", "customFirstRow", "highlightSelectedCard", "showActionsAsMenu", "filterParams", "skipAggregation", "customUrl", "format", "requestActions", "pageSizes"], outputs: ["onRowSelected", "onRowIndexSelected", "actionOnRow", "onGettingData", "onMultiRowSelected", "onLoading", "sortChanged", "onPageChange", "onPage", "onLoad", "onInitialize"] }, { type: i17.MatSpinner, selector: "mat-spinner", inputs: ["color"] }, { type: i18.NoDataFoundComponent, selector: "app-no-data-found", inputs: ["message", "width", "height"] }, { type: i19.TableComponent, selector: "cts-table", inputs: ["rows", "columns", "responsiveColumns", "entityType", "prefix", "pageCount", "totalRecords", "rowCursor", "fullWidth", "vocItemTranslationPrefix", "tableMode", "componentName", "tableActions", "format", "defultSort", "highlightSelectedCard", "multiSelectRows", "customFirstRow", "showActionsAsMenu", "messages", "defaultColumnSize"], outputs: ["onRowSelected", "onRowIndexSelected", "onIconSelected", "actionOnRow", "onSorting", "onMultiRowSelected"] }], directives: [{ type: i20.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i21.FluidHeightDirective, selector: "[ndfFluidHeight]", inputs: ["minHeight", "ndfFluidHeight", "subtractItems", "decrease", "delay", "cssVar", "calculate", "inlineStyle"], exportAs: ["ndfFluidHeight"] }, { type: i22.Dir, selector: "[dir]", inputs: ["dir"], outputs: ["dirChange"], exportAs: ["dir"] }, { type: i20.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i23.EmptyTemplateDirective, selector: "[emptyTemplate]" }], pipes: { "async": i20.AsyncPipe } });
411
+ NdfTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: NdfTableComponent, selector: "app-ndf-table", inputs: { rows: "rows", totalRecords: "totalRecords", autoCalculateHeight: "autoCalculateHeight", emptyMessage: "emptyMessage", activeQuery: "activeQuery", configPath: "configPath", styleClass: "styleClass", configTransformer: "configTransformer", tableKey: "tableKey", jsonEditorEnabled: "jsonEditorEnabled", config: "config", customCriteria: "customCriteria", searchTerm: "searchTerm" }, outputs: { onRowSelected: "onRowSelected", onRowIndexSelected: "onRowIndexSelected", actionOnRow: "actionOnRow", onGettingData: "onGettingData", onMultiRowSelected: "onMultiRowSelected", onLoading: "onLoading", onPage: "onPage", onInitialized: "onInitialized", onLoaded: "onLoaded", onQueryChange: "onQueryChange", onSort: "onSort" }, host: { properties: { "dir": "direction" }, classAttribute: "ndf-table" }, queries: [{ propertyName: "actionsTableTemplate", first: true, predicate: ACTIONS_TABLE_TEMPLATE, descendants: true, read: TemplateRef }, { propertyName: "searchTableTemplate", first: true, predicate: SEARCH_TABLE_TEMPLATE, descendants: true, read: TemplateRef }, { propertyName: "filterCustomTemplate", first: true, predicate: FILTER_CUSTOM_TEMPLATE, descendants: true, read: TemplateRef }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div\r\n *ngIf=\"tableConfig\"\r\n class=\"ndf-table__container\"\r\n [class.panel-opened]=\"isPanelOpened && filtersConfig\"\r\n [dir]=\"direction\"\r\n ndfFluidHeight\r\n cssVar=\"--ndf-table-height\"\r\n [calculate]=\"autoCalculateHeight\"\r\n>\r\n <div class=\"ndf-table__panel\" *ngIf=\"filtersConfig?.fields\">\r\n <app-filters-panel\r\n [fields]=\"filtersConfig.fields\"\r\n [aggregations]=\"aggregations$ | async\"\r\n (filterChanged)=\"filterChanged($event)\"\r\n [activeQuery]=\"activeQuery\"\r\n class=\"ndf-table__filters\"\r\n [customTemplateRef]=\"filterCustomTemplate\"\r\n ></app-filters-panel>\r\n </div>\r\n <div class=\"ndf-table__content\">\r\n <div class=\"ndf-table__header flex\">\r\n <div class=\"ndf-table__header__custom-actions flex gap-x-4 items-center\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"searchTableTemplate || defaultActionTemplate\"\r\n [ngTemplateOutletContext]=\"{\r\n $implicit: tableConfig,\r\n panelOpened: isPanelOpened,\r\n togglePanel: togglePanel,\r\n openModal: openSearchModal,\r\n search: onTextSearch,\r\n clear: onClearSearch\r\n }\"\r\n ></ng-container>\r\n\r\n <ng-template #defaultActionTemplate>\r\n <button\r\n mat-stroked-button\r\n *ngIf=\"isPanelToggleAvailable\"\r\n class=\"toggle-button\"\r\n (click)=\"togglePanel()\"\r\n >\r\n <mat-icon> filter_alt</mat-icon>\r\n </button>\r\n <app-text-search\r\n *ngIf=\"textSearchConfig\"\r\n [searchConfig]=\"textSearchConfig\"\r\n (openModal)=\"openSearchModal()\"\r\n [search]=\"textSearch$ | async\"\r\n (searchChange)=\"onTextSearch($event)\"\r\n (clear)=\"onClearSearch()\"\r\n ></app-text-search>\r\n </ng-template>\r\n </div>\r\n <div class=\"ndf-table__header__actions flex gap-x-4 items-center\">\r\n <app-editor-button\r\n *ngIf=\"jsonEditorEnabled && (tableKey || tableConfig?.key)\"\r\n [key]=\"tableKey || tableConfig?.key\"\r\n [type]=\"editorType\"\r\n ></app-editor-button>\r\n <ndf-table-export\r\n *ngIf=\"exportTableConfig?.enabled\"\r\n [config]=\"exportTableConfig\"\r\n (onExport)=\"exportTable($event)\"\r\n ></ndf-table-export>\r\n\r\n <table-sorting-list\r\n *ngIf=\"!!sortList?.length\"\r\n [sortList]=\"sortList\"\r\n (sortChanged)=\"sortChanged($event)\"\r\n ></table-sorting-list>\r\n <table-columns-toggler\r\n *ngIf=\"columnToggle\"\r\n [columns]=\"tableConfig.columns\"\r\n [prefix]=\"tableConfig.prefix\"\r\n [sortable]=\"columnsOptions?.sortable\"\r\n (columnsChanged)=\"columnsChanged($event)\"\r\n ></table-columns-toggler>\r\n <mode-toggler\r\n *ngIf=\"tableMode?.toggleMode\"\r\n [mode]=\"tableMode.mode || 'list'\"\r\n [modesList]=\"tableMode?.availableMode\"\r\n (modeChanged)=\"modeChanged($event)\"\r\n ></mode-toggler>\r\n <ng-container\r\n [ngTemplateOutlet]=\"actionsTableTemplate\"\r\n [ngTemplateOutletContext]=\"{\r\n $implicit: tableConfig,\r\n panelOpened: isPanelOpened,\r\n togglePanel: togglePanel,\r\n openModal: openSearchModal,\r\n search: onTextSearch,\r\n clear: onClearSearch\r\n }\"\r\n ></ng-container>\r\n </div>\r\n </div>\r\n\r\n <cts-dynamic-table\r\n *ngIf=\"!tableConfig.isDataProvided\"\r\n class=\"ndf-table__table table-style\"\r\n [ngClass]=\"styleClass\"\r\n [columns]=\"displayedColumns$ | async\"\r\n [responsiveColumns]=\"displayedColumns$ | async\"\r\n [fullWidth]=\"tableConfig.fullWidth || 'auto'\"\r\n [pageSize]=\"tableConfig.pageSize || 10\"\r\n [pageNumber]=\"tableConfig.pageNumber || 1\"\r\n [pageProvider]=\"tableConfig.pageProvider\"\r\n [customUrl]=\"tableConfig.customUrl\"\r\n [quickFilter]=\"\r\n tableConfig.quickFilters\r\n ? { quickFilters: tableConfig.quickFilters }\r\n : undefined\r\n \"\r\n [defultSort]=\"tableConfig.defaultSort || defaultSort\"\r\n [sortingBy]=\"sortOption$ | async\"\r\n [entityType]=\"'all'\"\r\n [fields]=\"tableConfig.fields\"\r\n [tableMode]=\"viewMode$ | async\"\r\n [componentName]=\"tableMode?.['componentName']\"\r\n [range]=\"tableConfig?.range\"\r\n [isSearchPage]=\"tableConfig?.isSearchPage\"\r\n [multiSelectRows]=\"tableConfig?.multiSelectRows\"\r\n [customFirstRow]=\"tableConfig?.customFirstRow\"\r\n [highlightSelectedCard]=\"tableConfig?.highlightSelectedCard\"\r\n [showActionsAsMenu]=\"tableConfig?.showActionsAsMenu\"\r\n [filterParams]=\"tableConfig?.filterParams\"\r\n [format]=\"tableConfig?.format || 'MMMM d, y'\"\r\n [pageSizes]=\"tableConfig?.pageSizes || defaultPageSizes\"\r\n [prefix]=\"tableConfig.prefix || ''\"\r\n [rowCursor]=\"true\"\r\n [queryParam]=\"tableConfig.queryParam\"\r\n [customFilters]=\"searchAndFilters$ | async\"\r\n [tableActions]=\"tableConfig.tableActions\"\r\n [requestActions]=\"tableConfig?.requestActions\"\r\n [headers]=\"tableConfig.headers\"\r\n (onRowSelected)=\"onRowSelected.emit($event)\"\r\n (onRowIndexSelected)=\"onRowIndexSelected.emit($event)\"\r\n (actionOnRow)=\"actionOnRow.emit($event)\"\r\n (onGettingData)=\"onGettingData.emit($event)\"\r\n (onLoad)=\"onLoad($event)\"\r\n (onInitialize)=\"onInitialize($event)\"\r\n (onMultiRowSelected)=\"onMultiRowSelected.emit($event)\"\r\n (onLoading)=\"onLoading.emit($event)\"\r\n (onPage)=\"onPageChanged($event)\"\r\n [isLegacyMode]=\"false\"\r\n [showTotalRecord]=\"true\"\r\n (sortChanged)=\"onSortChanged($event)\"\r\n >\r\n <ng-template\r\n emptyTemplate\r\n let-isLoading\r\n let-rows=\"rows\"\r\n let-initialized=\"initialized\"\r\n >\r\n <div class=\"loading-data\" *ngIf=\"isLoading && initialized\">\r\n <mat-spinner></mat-spinner>\r\n </div>\r\n\r\n <div\r\n class=\"flex items-center justify-center h-5/6\"\r\n *ngIf=\"!isLoading && !rows.length\"\r\n >\r\n <app-no-data-found\r\n class=\"mt-4\"\r\n [message]=\"emptyMessage\"\r\n ></app-no-data-found>\r\n </div>\r\n </ng-template>\r\n </cts-dynamic-table>\r\n\r\n <cts-table\r\n *ngIf=\"tableConfig.isDataProvided\"\r\n [ngClass]=\"styleClass\"\r\n [rows]=\"rows\"\r\n [totalRecords]=\"totalRecords\"\r\n [columns]=\"displayedColumns$ | async\"\r\n [responsiveColumns]=\"displayedColumns$ | async\"\r\n [rowCursor]=\"true\"\r\n [fullWidth]=\"tableConfig.fullWidth || 'auto'\"\r\n [entityType]=\"'all'\"\r\n [prefix]=\"tableConfig.prefix || ''\"\r\n [tableMode]=\"viewMode$ | async\"\r\n [componentName]=\"tableMode?.['componentName']\"\r\n [multiSelectRows]=\"tableConfig?.multiSelectRows\"\r\n [customFirstRow]=\"tableConfig?.customFirstRow\"\r\n [tableActions]=\"tableConfig.tableActions\"\r\n [showActionsAsMenu]=\"tableConfig?.showActionsAsMenu\"\r\n [defultSort]=\"tableConfig.defaultSort || defaultSort\"\r\n [format]=\"tableConfig?.format || 'MMMM d, y'\"\r\n [highlightSelectedCard]=\"tableConfig?.highlightSelectedCard\"\r\n (onRowSelected)=\"onRowSelected.emit($event)\"\r\n (onRowIndexSelected)=\"onRowIndexSelected.emit($event)\"\r\n (onMultiRowSelected)=\"onMultiRowSelected.emit($event)\"\r\n (actionOnRow)=\"actionOnRow.emit($event)\"\r\n (onSorting)=\"onSortChanged($event)\"\r\n ></cts-table>\r\n </div>\r\n</div>\r\n", styles: [":host{padding-inline:var(--ndf-tbl-inline-padding, 1rem);padding-block:var(--ndf-tbl-block-padding, 1rem);border:var(--ndf-tbl-border, solid transparent);border-width:var(--ndf-table-border-width, 0);border-radius:var(--ndf-tbl-border-radius, 0);height:100%;position:relative;display:flex;flex-direction:column;background-color:var(--ndf-tbl-background, #fff);box-sizing:border-box;max-width:100%;flex:0 0 100%}:host [dir=ltr]{--ndf-tbl-panel-translateX: -100%}:host:before,:host:after{box-sizing:border-box}::ng-deep .wrapping,::ng-deep .wrapping .table-reposition{overflow:visible}.ndf-table__container{--table-div-height: auto;--table-reposition-overflow-y: visible;--table-div-overflow: visible;--panel-width: var(--ndf-tbl-panel-width, 18rem);position:relative;overflow:hidden;display:grid;transition:all .2s;max-width:100%;width:100%;height:var(--ndf-tbl-height, calc(var(--ndf-table-height, auto) - calc(var(--ndf-tbl-block-padding, 1rem) * 2.5)));flex-grow:1;grid-gap:var(--ndf-table-container-gap, .5rem);gap:var(--ndf-table-container-gap, .5rem)}.ndf-table__container.panel-opened{--ndf-tbl-panel-translateX: 0;--ndf-tbl-content-pis: var(--panel-width)}.ndf-table__panel,.ndf-table__content{overflow:auto;transition:all .2s}.ndf-table__panel{position:absolute;width:var(--panel-width);height:100%;transform:translate(var(--ndf-tbl-panel-translateX, 100%));padding-inline:var(--ndf-tbl-panel-inline-padding, .5rem);padding-block:var(--ndf-tbl-panel-block-padding, .5rem);background:var(--ndf-tbl-panel-background, #fff);z-index:1}.ndf-table__content{flex-grow:1;padding-inline-start:var(--ndf-tbl-content-pis, 0);padding-block-end:var(--ndf-tbl-content-pbe, 1rem);overflow-y:var(--ndf-tbl-content-overflow-y, auto);max-height:var(--ndf-tbl-content-max-height, var(--ndf-table-height));display:flex;flex-direction:column;height:var(--ndf-tbl-content-height, auto)}.ndf-table__header{background-color:var(--ndf-tbl-background, #fff);flex-direction:var(--ndf-tbl-header-direction, row);justify-content:var(--ndf-tbl-header-justify, space-between);align-items:var(--ndf-tbl-header-items, center);padding-inline:var(--ndf-tbl-header-padding-inline, .5rem);padding-block:var(--ndf-tbl-header-padding-block, 0 .5rem);position:var(--ndf-tbl-header-position, sticky);top:0;z-index:1}.ndf-table__header__actions{justify-content:var(--ndf-tbl-actions-justify, flex-end)}.ndf-table__header__custom-actions .toggle-button{min-width:0;padding:0 10px}.ndf-table__table{flex-grow:1;display:flex;flex-direction:column}.ndf-table__table.no-data{--table-div-height: auto}.loading-data{position:absolute;inset:0;display:grid;place-items:center;background:var(--loading-data-background, rgba(255, 255, 255, .2));-webkit-backdrop-filter:var(--loading-data-backdrop-filter, blur(3px));backdrop-filter:var(--loading-data-backdrop-filter, blur(3px))}\n"], components: [{ type: i7.FiltersPanelComponent, selector: "app-filters-panel", inputs: ["aggregations", "fields", "activeQuery"], outputs: ["filterChanged"] }, { type: i8.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i9.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i10.TextSearchComponent, selector: "app-text-search", inputs: ["searchConfig", "search"], outputs: ["searchChange", "openModal", "clear"] }, { type: i11.EditorButtonComponent, selector: "app-editor-button", inputs: ["type", "key"] }, { type: i12.TableExportComponent, selector: "ndf-table-export", inputs: ["config"], outputs: ["onExport"] }, { type: i13.SortingListComponent, selector: "table-sorting-list", inputs: ["sortList"], outputs: ["sortChanged"] }, { type: i14.TableColumnsTogglerComponent, selector: "table-columns-toggler", inputs: ["prefix", "sortable", "columns"], outputs: ["columnsChanged"] }, { type: i15.ModeTogglerComponent, selector: "mode-toggler", inputs: ["modesList", "mode"], outputs: ["modeChanged"] }, { type: i16.DynamicTableComponent, selector: "cts-dynamic-table", inputs: ["columns", "responsiveColumns", "entityType", "prefix", "headers", "fields", "pageProvider", "pageSize", "isLegacyMode", "showTotalRecord", "pageNumber", "sortingBy", "queryParam", "customFilters", "quickFilter", "report", "rowCursor", "fullWidth", "tableMode", "componentName", "tableActions", "defultSort", "range", "isSearchPage", "multiSelectRows", "customFirstRow", "highlightSelectedCard", "showActionsAsMenu", "filterParams", "skipAggregation", "customUrl", "format", "requestActions", "pageSizes"], outputs: ["onRowSelected", "onRowIndexSelected", "actionOnRow", "onGettingData", "onMultiRowSelected", "onLoading", "sortChanged", "onPageChange", "onPage", "onLoad", "onInitialize"] }, { type: i17.MatSpinner, selector: "mat-spinner", inputs: ["color"] }, { type: i18.NoDataFoundComponent, selector: "app-no-data-found", inputs: ["message", "width", "height"] }, { type: i19.TableComponent, selector: "cts-table", inputs: ["rows", "columns", "responsiveColumns", "entityType", "prefix", "pageCount", "totalRecords", "rowCursor", "fullWidth", "vocItemTranslationPrefix", "tableMode", "componentName", "tableActions", "format", "defultSort", "highlightSelectedCard", "multiSelectRows", "customFirstRow", "showActionsAsMenu", "messages", "defaultColumnSize"], outputs: ["onRowSelected", "onRowIndexSelected", "onIconSelected", "actionOnRow", "onSorting", "onMultiRowSelected"] }], directives: [{ type: i20.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i21.FluidHeightDirective, selector: "[ndfFluidHeight]", inputs: ["minHeight", "ndfFluidHeight", "subtractItems", "decrease", "delay", "cssVar", "calculate", "inlineStyle"], exportAs: ["ndfFluidHeight"] }, { type: i22.Dir, selector: "[dir]", inputs: ["dir"], outputs: ["dirChange"], exportAs: ["dir"] }, { type: i20.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i20.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i23.EmptyTemplateDirective, selector: "[emptyTemplate]" }], pipes: { "async": i20.AsyncPipe } });
399
412
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NdfTableComponent, decorators: [{
400
413
  type: Component,
401
414
  args: [{
@@ -404,8 +417,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
404
417
  styleUrls: ['./ndf-table.component.scss'],
405
418
  host: {
406
419
  class: 'ndf-table',
407
- '[dir]': 'direction'
408
- }
420
+ '[dir]': 'direction',
421
+ },
409
422
  }]
410
423
  }], ctorParameters: function () { return [{ type: i1.FiltersMapperService }, { type: i2.DynamicTableService }, { type: i3.TranslateService }, { type: i4.NdfTableService }, { type: i5.CustomToastrService }, { type: i4.NdfTableConfigurationService }, { type: i6.MatDialog }]; }, propDecorators: { rows: [{
411
424
  type: Input
@@ -419,6 +432,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
419
432
  type: Input
420
433
  }], configPath: [{
421
434
  type: Input
435
+ }], styleClass: [{
436
+ type: Input
422
437
  }], configTransformer: [{
423
438
  type: Input
424
439
  }], tableKey: [{
@@ -463,4 +478,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
463
478
  type: ContentChild,
464
479
  args: [FILTER_CUSTOM_TEMPLATE, { read: TemplateRef }]
465
480
  }] } });
466
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmRmLXRhYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL251eGVvLWRldmVsb3BtZW50LWZyYW1ld29yay9zcmMvbGliL2NvbXBvbmVudHMvdGFibGVzL25kZi10YWJsZS9jb250YWluZXJzL25kZi10YWJsZS9uZGYtdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnV4ZW8tZGV2ZWxvcG1lbnQtZnJhbWV3b3JrL3NyYy9saWIvY29tcG9uZW50cy90YWJsZXMvbmRmLXRhYmxlL2NvbnRhaW5lcnMvbmRmLXRhYmxlL25kZi10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EsT0FBTyxFQUNOLFNBQVMsRUFDVCxZQUFZLEVBQ1osWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBRU4sV0FBVyxFQUNYLE1BQU0sZUFBZSxDQUFDO0FBSXZCLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBbUIsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFRLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hHLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxzQkFBc0IsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3pHLE9BQU8sRUFFTixtQkFBbUIsRUFFbkIsbUJBQW1CLEVBRW5CLE1BQU0seUJBQXlCLENBQUM7QUFZakMsT0FBTyxDQUFDLE1BQU0sUUFBUSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUU1QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFNbEUsT0FB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O2dCQUNHLGtCQUFrQjtzQkFBM0IsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0csa0JBQWtCO3NCQUEzQixNQUFNO2dCQUNHLFNBQVM7c0JBQWxCLE1BQU07Z0JBRUcsTUFBTTtzQkFBZixNQUFNO2dCQUNHLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0csUUFBUTtzQkFBakIsTUFBTTtnQkFFRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLE1BQU07c0JBQWYsTUFBTTtnQkFFc0Qsb0JBQW9CO3NCQUFoRixZQUFZO3VCQUFDLHNCQUFzQixFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRTtnQkFDQyxtQkFBbUI7c0JBQTlFLFlBQVk7dUJBQUMscUJBQXFCLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFO2dCQUNHLG9CQUFvQjtzQkFBaEYsWUFBWTt1QkFBQyxzQkFBc0IsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3Rpb24gfSBmcm9tICdAYW5ndWxhci9jZGsvYmlkaSc7XHJcbmltcG9ydCB7XHJcblx0Q29tcG9uZW50LFxyXG5cdENvbnRlbnRDaGlsZCxcclxuXHRFdmVudEVtaXR0ZXIsXHJcblx0SW5wdXQsXHJcblx0T25DaGFuZ2VzLFxyXG5cdE91dHB1dCxcclxuXHRTaW1wbGVDaGFuZ2VzLFxyXG5cdFRlbXBsYXRlUmVmXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuXHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgZm9ya0pvaW4sIGlpZiwgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZmlsdGVyLCBtYXAsIHN0YXJ0V2l0aCwgc3dpdGNoTWFwLCB0YWtlLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IEFDVElPTlNfVEFCTEVfVEVNUExBVEUsIEZJTFRFUl9DVVNUT01fVEVNUExBVEUsIFNFQVJDSF9UQUJMRV9URU1QTEFURSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMnO1xyXG5pbXBvcnQge1xyXG5cdEFnZ3JlZ2F0aW9uUmVzcG9uc2UsXHJcblx0Q09NUEFSSVNPTl9PUEVSQVRPUixcclxuXHRGb3JtUXVlcnlNb2RlbCxcclxuXHRIdG1sRGlhbG9nQ29tcG9uZW50LFxyXG5cdEh0bWxEaWFsb2dDb25maWdcclxufSBmcm9tICcuLi8uLi8uLi8uLi9uZGYtZmlsdGVycyc7XHJcbmltcG9ydCB7XHJcblx0Q3VzdG9tQ3JpdGVyaWFNb2RlbCxcclxuXHRFeHBvcnRUeXBlLFxyXG5cdE5kZkV4cG9ydFBheWxvYWQsXHJcblx0TmRmVGFibGVDb25maWcsXHJcblx0U29ydFRhYmxlSXRlbSxcclxuXHRUYWJsZUNvbHVtbkNvbmZpZyxcclxuXHRUYWJsZVNvcnRPcHRpb25zLFxyXG5cdFRhYmxlVmlld01vZGVcclxufSBmcm9tICcuLi8uLi9tb2RlbHMnO1xyXG5pbXBvcnQgeyBOZGZUYWJsZUNvbmZpZ3VyYXRpb25TZXJ2aWNlLCBOZGZUYWJsZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcyc7XHJcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XHJcbmltcG9ydCB7IFBBR0VfU0laRSB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XHJcbmltcG9ydCB7IFBhZ2VFdmVudCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvci9wYWdpbmF0b3InO1xyXG5pbXBvcnQgeyBEZXN0cm95U3ViamVjdCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3NoYXJlZC9jb21wb25lbnRzJztcclxuaW1wb3J0IHsgTnV4ZW9QYWdpbmF0aW9uIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vc2hhcmVkL21vZGVscyc7XHJcbmltcG9ydCB7IER5bmFtaWNUYWJsZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9keW5hbWljLXRhYmxlJztcclxuaW1wb3J0IHsgQ3VzdG9tVG9hc3RyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL2N1c3RvbS10b2FzdHIvc2VydmljZXMvY3VzdG9tLXRvYXN0ci5zZXJ2aWNlJztcclxuXHJcbmltcG9ydCB7IEZpbHRlcnNNYXBwZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vbmRmLWZpbHRlcnMvc2VydmljZXMnO1xyXG5pbXBvcnQgeyBOREZfRURJVE9SX1RZUEUgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9zaGFyZWQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcblx0c2VsZWN0b3I6ICdhcHAtbmRmLXRhYmxlJyxcclxuXHR0ZW1wbGF0ZVVybDogJy4vbmRmLXRhYmxlLmNvbXBvbmVudC5odG1sJyxcclxuXHRzdHlsZVVybHM6IFsnLi9uZGYtdGFibGUuY29tcG9uZW50LnNjc3MnXSxcclxuXHRob3N0OiB7XHJcblx0XHRjbGFzczogJ25kZi10YWJsZScsXHJcblx0XHQnW2Rpcl0nOiAnZGlyZWN0aW9uJ1xyXG5cdH1cclxufSlcclxuZXhwb3J0IGNsYXNzIE5kZlRhYmxlQ29tcG9uZW50IGV4dGVuZHMgRGVzdHJveVN1YmplY3QgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xyXG5cdHByaXZhdGUgcmVhZG9ubHkgX2FnZ3JlZ2F0aW9uc1N1YiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8UmVjb3JkPHN0cmluZywgQWdncmVnYXRpb25SZXNwb25zZT4+KG51bGwpO1xyXG5cdHByaXZhdGUgcmVhZG9ubHkgX2Rpc3BsYXllZENvbHVtbnNTdWIgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRhYmxlQ29sdW1uQ29uZmlnW10+KFtdKTtcclxuXHRwcml2YXRlIHJlYWRvbmx5IF9zb3J0T3B0aW9uU3ViID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUYWJsZVNvcnRPcHRpb25zPihudWxsKTtcclxuXHRwcml2YXRlIHJlYWRvbmx5IF92aWV3TW9kZVN1YiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VGFibGVWaWV3TW9kZT4oJ2xpc3QnKTtcclxuXHRwcml2YXRlIHJlYWRvbmx5IF90ZXh0U2VhcmNoU3ViID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KG51bGwpO1xyXG5cclxuXHRwcml2YXRlIHJlYWRvbmx5IF9hY3RpdmF0ZWRDcml0ZXJpYVN1YiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8e1xyXG5cdFx0cHJldmlvdXNWYWx1ZTogUmVjb3JkPHN0cmluZywgYW55PjtcclxuXHRcdGN1cnJlbnRWYWx1ZTogUmVjb3JkPHN0cmluZywgYW55PjtcclxuXHR9PihudWxsKTtcclxuXHJcblx0cHJpdmF0ZSByZWFkb25seSBfY3VzdG9tQ3JpdGVyaWFTdWIgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEN1c3RvbUNyaXRlcmlhTW9kZWw+KHtcclxuXHRcdHBhcmFtczoge30sXHJcblx0XHRwYXlsb2FkOiB7XHJcblx0XHRcdHByZWRpY2F0ZUxpc3Q6IFtdXHJcblx0XHR9XHJcblx0fSk7XHJcblxyXG5cdHJlYWRvbmx5IGFnZ3JlZ2F0aW9ucyQgPSB0aGlzLl9hZ2dyZWdhdGlvbnNTdWIuYXNPYnNlcnZhYmxlKCk7XHJcblx0cmVhZG9ubHkgZGlzcGxheWVkQ29sdW1ucyQgPSB0aGlzLl9kaXNwbGF5ZWRDb2x1bW5zU3ViLmFzT2JzZXJ2YWJsZSgpO1xyXG5cdHJlYWRvbmx5IHNvcnRPcHRpb24kID0gdGhpcy5fc29ydE9wdGlvblN1Yi5hc09ic2VydmFibGUoKTtcclxuXHRyZWFkb25seSB2aWV3TW9kZSQgPSB0aGlzLl92aWV3TW9kZVN1Yi5hc09ic2VydmFibGUoKTtcclxuXHRyZWFkb25seSBjdXN0b21GaWx0ZXJzJCA9IHRoaXMuX2N1c3RvbUNyaXRlcmlhU3ViLmFzT2JzZXJ2YWJsZSgpO1xyXG5cdHJlYWRvbmx5IHRleHRTZWFyY2gkID0gdGhpcy5fdGV4dFNlYXJjaFN1Yi5hc09ic2VydmFibGUoKTtcclxuXHJcblx0cmVhZG9ubHkgc2VhcmNoQW5kRmlsdGVycyQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLnRleHRTZWFyY2gkLCB0aGlzLmN1c3RvbUZpbHRlcnMkXSkucGlwZShcclxuXHRcdG1hcCgocmVzKSA9PiB0aGlzLl9wcmVwYXJlU2VhcmNoKHJlcykpXHJcblx0KTtcclxuXHRASW5wdXQoKSByb3dzOiBBcnJheTx1bmtub3duPjtcclxuXHRASW5wdXQoKSB0b3RhbFJlY29yZHM6IG51bWJlcjtcclxuXHRASW5wdXQoKSBhdXRvQ2FsY3VsYXRlSGVpZ2h0ID0gdHJ1ZTtcclxuXHRASW5wdXQoKSBlbXB0eU1lc3NhZ2UgPSAndGFibGVfbm9EYXRhJztcclxuXHRASW5wdXQoKSBhY3RpdmVRdWVyeTogRm9ybVF1ZXJ5TW9kZWw7XHJcblx0QElucHV0KCkgY29uZmlnUGF0aDogc3RyaW5nID0gJ3RhYmxlcyc7XHJcblx0QElucHV0KCkgY29uZmlnVHJhbnNmb3JtZXI6IChjb25maWc6IE5kZlRhYmxlQ29uZmlnKSA9PiBPYnNlcnZhYmxlPE5kZlRhYmxlQ29uZmlnPjtcclxuXHRASW5wdXQoKSB0YWJsZUtleTogc3RyaW5nO1xyXG5cclxuXHRASW5wdXQoKSBqc29uRWRpdG9yRW5hYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuXHRwcml2YXRlIF9jb25maWc6IE5kZlRhYmxlQ29uZmlnO1xyXG5cdEBJbnB1dCgpIHNldCBjb25maWcoY29uZmlnOiBOZGZUYWJsZUNvbmZpZykge1xyXG5cdFx0dGhpcy5fY29uZmlnID0gY29uZmlnO1xyXG5cdH1cclxuXHJcblx0Z2V0IHRhYmxlQ29uZmlnKCkge1xyXG5cdFx0cmV0dXJuIHRoaXMuX3RhYmxlQ29uZmlnU3ViLmdldFZhbHVlKCk7XHJcblx0fVxyXG5cclxuXHRASW5wdXQoKSBzZXQgY3VzdG9tQ3JpdGVyaWEoY3JpdGVyaWE6IEN1c3RvbUNyaXRlcmlhTW9kZWwpIHtcclxuXHRcdGlmIChjcml0ZXJpYSkge1xyXG5cdFx0XHR0aGlzLl9jdXN0b21Dcml0ZXJpYVN1Yi5uZXh0KGNyaXRlcmlhKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdEBJbnB1dCgpIHNldCBzZWFyY2hUZXJtKHZhbHVlOiBzdHJpbmcpIHtcclxuXHRcdGlmICh2YWx1ZSkge1xyXG5cdFx0XHR0aGlzLl90ZXh0U2VhcmNoU3ViLm5leHQodmFsdWUpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0QE91dHB1dCgpIG9uUm93U2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblx0QE91dHB1dCgpIG9uUm93SW5kZXhTZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHRAT3V0cHV0KCkgYWN0aW9uT25Sb3cgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblx0QE91dHB1dCgpIG9uR2V0dGluZ0RhdGEgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblx0QE91dHB1dCgpIG9uTXVsdGlSb3dTZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHRAT3V0cHV0KCkgb25Mb2FkaW5nID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuXHRAT3V0cHV0KCkgb25QYWdlID0gbmV3IEV2ZW50RW1pdHRlcjxQYWdlRXZlbnQ+KCk7XHJcblx0QE91dHB1dCgpIG9uSW5pdGlhbGl6ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPE51eGVvUGFnaW5hdGlvbjxhbnk+PigpO1xyXG5cdEBPdXRwdXQoKSBvbkxvYWRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8TnV4ZW9QYWdpbmF0aW9uPGFueT4+KCk7XHJcblxyXG5cdEBPdXRwdXQoKSBvblF1ZXJ5Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cdEBPdXRwdXQoKSBvblNvcnQgPSBuZXcgRXZlbnRFbWl0dGVyPFRhYmxlU29ydE9wdGlvbnM+KCk7XHJcblxyXG5cdEBDb250ZW50Q2hpbGQoQUNUSU9OU19UQUJMRV9URU1QTEFURSwgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KSBhY3Rpb25zVGFibGVUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuXHRAQ29udGVudENoaWxkKFNFQVJDSF9UQUJMRV9URU1QTEFURSwgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KSBzZWFyY2hUYWJsZVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cdEBDb250ZW50Q2hpbGQoRklMVEVSX0NVU1RPTV9URU1QTEFURSwgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KSBmaWx0ZXJDdXN0b21UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuXHJcblx0cHJpdmF0ZSBfdGFibGVDb25maWdTdWIgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE5kZlRhYmxlQ29uZmlnPihudWxsKTtcclxuXHJcblx0Z2V0IG9wdGlvbnMoKSB7XHJcblx0XHRyZXR1cm4gdGhpcy50YWJsZUNvbmZpZz8ub3B0aW9ucztcclxuXHR9XHJcblxyXG5cdGdldCBmaWx0ZXJzQ29uZmlnKCkge1xyXG5cdFx0cmV0dXJuIHRoaXMub3B0aW9ucz8uZmlsdGVycztcclxuXHR9XHJcblxyXG5cdGdldCBzb3J0TGlzdCgpIHtcclxuXHRcdHJldHVybiB0aGlzLm9wdGlvbnM/LnNvcnRMaXN0IHx8IFtdO1xyXG5cdH1cclxuXHJcblx0Z2V0IGNvbHVtbnNPcHRpb25zKCkge1xyXG5cdFx0cmV0dXJuIHRoaXMudGFibGVDb25maWc/Lm9wdGlvbnM/LmNvbHVtbnM7XHJcblx0fVxyXG5cclxuXHRnZXQgY29sdW1uVG9nZ2xlKCkge1xyXG5cdFx0cmV0dXJuIHRoaXMuY29sdW1uc09wdGlvbnM/LnRvZ2dsZSA/PyB0cnVlO1xyXG5cdH1cclxuXHJcblx0Z2V0IHRhYmxlTW9kZSgpIHtcclxuXHRcdHJldHVybiB0aGlzLm9wdGlvbnM/LnRhYmxlTW9kZTtcclxuXHR9XHJcblxyXG5cdGdldCBwYW5lbENvbmZpZygpIHtcclxuXHRcdHJldHVybiB0aGlzLm9wdGlvbnM/LmZpbHRlcnM/LnBhbmVsO1xyXG5cdH1cclxuXHJcblx0Z2V0IGlzUGFuZWxUb2dnbGVBdmFpbGFibGUoKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5wYW5lbENvbmZpZz8udG9nZ2xlQnV0dG9uID8/IHRydWU7XHJcblx0fVxyXG5cclxuXHRnZXQgdGV4dFNlYXJjaENvbmZpZygpIHtcclxuXHRcdHJldHVybiB0aGlzLm9wdGlvbnM/LnNlYXJjaDtcclxuXHR9XHJcblxyXG5cdGdldCBmaWx0ZXJSZWxvYWRDb25maWcoKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5vcHRpb25zPy5maWx0ZXJzPy5yZWxvYWQ7XHJcblx0fVxyXG5cclxuXHRnZXQgZXhwb3J0VGFibGVDb25maWcoKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5vcHRpb25zPy5leHBvcnQ7XHJcblx0fVxyXG5cclxuXHRyZWFkb25seSBkZWZhdWx0U29ydCA9IFt7IHByb3A6ICdwcm9wZXJ0aWVzLmNyZWF0ZWRBdCcsIGRpcjogJ2Rlc2MnIH1dO1xyXG5cclxuXHRkaXJlY3Rpb246IERpcmVjdGlvbiA9ICdydGwnO1xyXG5cdGlzUGFuZWxPcGVuZWQgPSBmYWxzZTtcclxuXHRyZWFkb25seSBkZWZhdWx0UGFnZVNpemVzID0gUEFHRV9TSVpFO1xyXG5cclxuXHRwcml2YXRlIF9pc0NvbmZpZ0NoYW5nZWQgPSBmYWxzZTtcclxuXHRwcml2YXRlIF90YWJsZUluaXRpYWxpemVkID0gZmFsc2U7XHJcblx0cHJpdmF0ZSBfcGFnZUNoYW5nZWQgPSBmYWxzZTtcclxuXHRwcml2YXRlIF9hY3RpdmVQYWdlOiBQYWdlRXZlbnQgPSB7XHJcblx0XHRwYWdlSW5kZXg6IDEsXHJcblx0XHRwYWdlU2l6ZTogMTAsXHJcblx0XHRsZW5ndGg6IDBcclxuXHR9O1xyXG5cclxuXHRwcml2YXRlIF9zb3J0VmFsdWU6IFRhYmxlU29ydE9wdGlvbnM7XHJcblxyXG5cdGVkaXRvclR5cGUgPSBOREZfRURJVE9SX1RZUEUuVEFCTEVTO1xyXG5cdC8qKlxyXG5cdCAqXHJcblx0ICovXHJcblx0Y29uc3RydWN0b3IoXHJcblx0XHRwcml2YXRlIF9maWx0ZXJzTWFwcGVyOiBGaWx0ZXJzTWFwcGVyU2VydmljZSxcclxuXHRcdHByaXZhdGUgX2R5bmFtaWNUYWJsZVNlcnZpY2U6IER5bmFtaWNUYWJsZVNlcnZpY2UsXHJcblx0XHRwcml2YXRlIF90cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSBfbmdUYWJsZVNlcnZpY2U6IE5kZlRhYmxlU2VydmljZSxcclxuXHRcdHByaXZhdGUgX3RvYXN0clNlcnZpY2U6IEN1c3RvbVRvYXN0clNlcnZpY2UsXHJcblx0XHRwcml2YXRlIF9uZGZUYWJsZUNvbmZpZ3VyYXRpb25TZXJ2aWNlOiBOZGZUYWJsZUNvbmZpZ3VyYXRpb25TZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSBfZGlhbG9nOiBNYXREaWFsb2dcclxuXHQpIHtcclxuXHRcdHN1cGVyKCk7XHJcblx0XHR0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLm9uTGFuZ0NoYW5nZVxyXG5cdFx0XHQucGlwZShzdGFydFdpdGgoeyBsYW5nOiB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmN1cnJlbnRMYW5nIH0pLCB0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcblx0XHRcdC5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG5cdFx0XHRcdHRoaXMuZGlyZWN0aW9uID0gcmVzLmxhbmcgPT09ICdhcicgPyAncnRsJyA6ICdsdHInO1xyXG5cdFx0XHR9KTtcclxuXHR9XHJcblxyXG5cdG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuXHRcdGNvbnN0IHRhYmxlS2V5ID0gY2hhbmdlcy50YWJsZUtleT8uY3VycmVudFZhbHVlO1xyXG5cdFx0Y29uc3QgY29uZmlnID0gY2hhbmdlcy5jb25maWc/LmN1cnJlbnRWYWx1ZTtcclxuXHJcblx0XHRpZiAodGFibGVLZXkgJiYgY29uZmlnKSB7XHJcblx0XHRcdHRocm93IG5ldyBFcnJvcignWW91IGNhbm5vdCBzZXQgYm90aCB0YWJsZUtleSBhbmQgdGFibGVDb25maWcgYXQgdGhlIHNhbWUgdGltZS4nKTtcclxuXHRcdH1cclxuXHJcblx0XHRpZiAoY29uZmlnKSB7XHJcblx0XHRcdHRoaXMuX2FwcGx5VGFibGVDb25maWcoY29uZmlnKTtcclxuXHRcdH1cclxuXHJcblx0XHRpZiAodGFibGVLZXkpIHtcclxuXHRcdFx0dGhpcy5fbG9hZFRhYmxlQ29uZmlnKHRhYmxlS2V5KTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdHRvZ2dsZVBhbmVsKCkge1xyXG5cdFx0dGhpcy5pc1BhbmVsT3BlbmVkID0gIXRoaXMuaXNQYW5lbE9wZW5lZDtcclxuXHR9XHJcblxyXG5cdG9uTG9hZChkYXRhOiBOdXhlb1BhZ2luYXRpb248YW55Pik6IHZvaWQge1xyXG5cdFx0dGhpcy5vbkxvYWRlZC5lbWl0KGRhdGEpO1xyXG5cdFx0aWYgKCF0aGlzLl90YWJsZUluaXRpYWxpemVkIHx8IHRoaXMuZmlsdGVyUmVsb2FkQ29uZmlnPy5zdHJhdGVneSA9PT0gJ25ldmVyJyB8fCB0aGlzLl9wYWdlQ2hhbmdlZCkge1xyXG5cdFx0XHR0aGlzLl9wYWdlQ2hhbmdlZCA9IGZhbHNlO1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKHRoaXMuX2lzQ29uZmlnQ2hhbmdlZCB8fCB0aGlzLmZpbHRlclJlbG9hZENvbmZpZz8uc3RyYXRlZ3kgPT09ICdhbHdheXMnKSB7XHJcblx0XHRcdHRoaXMuX2FnZ3JlZ2F0aW9uc1N1Yi5uZXh0KGRhdGE/LmFnZ3JlZ2F0aW9ucyk7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHJcblx0XHRpZiAodGhpcy5maWx0ZXJSZWxvYWRDb25maWc/LnN0cmF0ZWd5ID09PSAnb25DaGFuZ2UnKSB7XHJcblx0XHRcdGNvbnN0IGFjdGl2YXRlZFF1ZXJ5ID0gdGhpcy5fYWN0aXZhdGVkQ3JpdGVyaWFTdWIuZ2V0VmFsdWUoKTtcclxuXHRcdFx0Y29uc3QgY3VycmVudFZhbHVlID0gYWN0aXZhdGVkUXVlcnk/LmN1cnJlbnRWYWx1ZSB8fCB7fTtcclxuXHRcdFx0Y29uc3QgcHJldmlvdXNWYWx1ZSA9IGFjdGl2YXRlZFF1ZXJ5Py5wcmV2aW91c1ZhbHVlIHx8IHt9O1xyXG5cclxuXHRcdFx0Y29uc3QgdXBkYXRlZEtleXMgPSBfLnVuaW9uKF8ua2V5cyhwcmV2aW91c1ZhbHVlKSwgXy5rZXlzKGN1cnJlbnRWYWx1ZSkpLmZpbHRlcihcclxuXHRcdFx0XHQoa2V5KSA9PiAhXy5pc0VxdWFsKHByZXZpb3VzVmFsdWVba2V5XSwgY3VycmVudFZhbHVlW2tleV0pXHJcblx0XHRcdCk7XHJcblxyXG5cdFx0XHRjb25zdCB0cmlnZ2VyS2V5cyA9IHRoaXMuZmlsdGVyUmVsb2FkQ29uZmlnLnRyaWdnZXJGaWVsZHMgfHwgW107XHJcblx0XHRcdGNvbnN0IHNob3VsZFJlbG9hZCA9IHRyaWdnZXJLZXlzLnNvbWUoKGtleSkgPT4gdXBkYXRlZEtleXMuaW5jbHVkZXMoa2V5KSk7XHJcblx0XHRcdGlmIChzaG91bGRSZWxvYWQpIHtcclxuXHRcdFx0XHR0aGlzLl9hZ2dyZWdhdGlvbnNTdWIubmV4dChkYXRhPy5hZ2dyZWdhdGlvbnMpO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRvbkluaXRpYWxpemUoZGF0YTogTnV4ZW9QYWdpbmF0aW9uPGFueT4pOiB2b2lkIHtcclxuXHRcdHRoaXMuX2FnZ3JlZ2F0aW9uc1N1Yi5uZXh0KGRhdGE/LmFnZ3JlZ2F0aW9ucyk7XHJcblx0XHR0aGlzLl90YWJsZUluaXRpYWxpemVkID0gdHJ1ZTtcclxuXHRcdHRoaXMuX2lzQ29uZmlnQ2hhbmdlZCA9IGZhbHNlO1xyXG5cdFx0dGhpcy5vbkluaXRpYWxpemVkLmVtaXQoZGF0YSk7XHJcblx0fVxyXG5cclxuXHRjb2x1bW5zQ2hhbmdlZChjb2x1bW5zOiBUYWJsZUNvbHVtbkNvbmZpZ1tdKSB7XHJcblx0XHR0aGlzLl9kaXNwbGF5ZWRDb2x1bW5zU3ViLm5leHQoY29sdW1ucyk7XHJcblx0fVxyXG5cclxuXHRzb3J0Q2hhbmdlZChzb3J0OiBTb3J0VGFibGVJdGVtKSB7XHJcblx0XHR0aGlzLl9zb3J0VmFsdWUgPSB7IHNvcnRCeTogc29ydC52YWx1ZSwgc29ydE9yZGVyOiBzb3J0LmRpcmVjdGlvbiB9O1xyXG5cdFx0dGhpcy5fc29ydE9wdGlvblN1Yi5uZXh0KHRoaXMuX3NvcnRWYWx1ZSk7XHJcblx0fVxyXG5cclxuXHRtb2RlQ2hhbmdlZChtb2RlOiBUYWJsZVZpZXdNb2RlKSB7XHJcblx0XHR0aGlzLl92aWV3TW9kZVN1Yi5uZXh0KG1vZGUpO1xyXG5cdH1cclxuXHJcblx0b25Tb3J0Q2hhbmdlZChzb3J0OiBUYWJsZVNvcnRPcHRpb25zKSB7XHJcblx0XHR0aGlzLl9zb3J0VmFsdWUgPSBzb3J0O1xyXG5cdFx0dGhpcy5vblNvcnQuZW1pdChzb3J0KTtcclxuXHR9XHJcblxyXG5cdGV4cG9ydFRhYmxlKHR5cGU6IEV4cG9ydFR5cGUpIHtcclxuXHRcdGNvbnN0IHJlcXVlc3QgPSBfLmNsb25lRGVlcCh0aGlzLmV4cG9ydFRhYmxlQ29uZmlnPy5yZXF1ZXN0KTtcclxuXHRcdGlmICghcmVxdWVzdCkge1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblx0XHRjb25zdCBjb2x1bW5zID0gdGhpcy5fZGlzcGxheWVkQ29sdW1uc1N1Yi5nZXRWYWx1ZSgpO1xyXG5cdFx0Y29uc3QgZmllbGRzID0gY29sdW1ucy5tYXAoKGNvbCkgPT4gY29sLmhlYWRlckNsYXNzIHx8IGNvbD8uZmlsZWRLZXkpO1xyXG5cdFx0Y29uc3QgaGVhZGVycyA9IGNvbHVtbnMubWFwKChjb2wpID0+ICh0aGlzLnRhYmxlQ29uZmlnLnByZWZpeCB8fCAnJykgKyBjb2wubmFtZSk7XHJcblxyXG5cdFx0Y29uc3QgY3JpdGVyaWEgPSB0aGlzLl9jdXN0b21Dcml0ZXJpYVN1Yi5nZXRWYWx1ZSgpO1xyXG5cclxuXHRcdHJlcXVlc3QucGFyYW1zID0gT2JqZWN0LmFzc2lnbihcclxuXHRcdFx0e30sXHJcblx0XHRcdGNyaXRlcmlhLnBhcmFtcyxcclxuXHRcdFx0dGhpcy5fc29ydFZhbHVlIHx8IHt9LFxyXG5cdFx0XHR0aGlzLnRhYmxlQ29uZmlnPy5xdWlja0ZpbHRlcnMgPyB7IHF1aWNrRmlsdGVyczogdGhpcy50YWJsZUNvbmZpZy5xdWlja0ZpbHRlcnMgfSA6IHt9LFxyXG5cdFx0XHRyZXF1ZXN0LnBhcmFtc1xyXG5cdFx0KTtcclxuXHJcblx0XHRjb25zdCBibG9iTmFtZUtleSA9IHRoaXMuZXhwb3J0VGFibGVDb25maWc/LmJsb2JOYW1lO1xyXG5cdFx0Y29uc3QgcGF5bG9hZDogTmRmRXhwb3J0UGF5bG9hZCA9IHtcclxuXHRcdFx0cHJlZGljYXRlTGlzdDogY3JpdGVyaWEucGF5bG9hZC5wcmVkaWNhdGVMaXN0IHx8IFtdLFxyXG5cdFx0XHRyZXBvcnRNZXRhRGF0YToge1xyXG5cdFx0XHRcdGJsb2JOYW1lOiAnJyxcclxuXHRcdFx0XHRkb2NUeXBlTmFtZTogdGhpcy5leHBvcnRUYWJsZUNvbmZpZy5kb2NUeXBlTmFtZSxcclxuXHRcdFx0XHRmaWxlVHlwZTogdHlwZSxcclxuXHRcdFx0XHRsb2NhbGU6IHRoaXMuZXhwb3J0VGFibGVDb25maWc/LmxvY2FsZSB8fCB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmN1cnJlbnRMYW5nLFxyXG5cdFx0XHRcdGZpZWxkczogdGhpcy5leHBvcnRUYWJsZUNvbmZpZz8uZmllbGRzIHx8IGZpZWxkcyxcclxuXHRcdFx0XHRoZWFkZXJzOiBbXVxyXG5cdFx0XHR9XHJcblx0XHR9O1xyXG5cclxuXHRcdGZvcmtKb2luKHtcclxuXHRcdFx0YXI6IHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuZ2V0VHJhbnNsYXRpb24oJ2FyJyksXHJcblx0XHRcdGVuOiB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmdldFRyYW5zbGF0aW9uKCdlbicpXHJcblx0XHR9KVxyXG5cdFx0XHQucGlwZShcclxuXHRcdFx0XHRzd2l0Y2hNYXAoKHRyYW5zbGF0aW9ucykgPT4ge1xyXG5cdFx0XHRcdFx0Y29uc3QgY3VycmVudFRyYW5zbGF0aW9ucyA9IHRyYW5zbGF0aW9uc1t0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmN1cnJlbnRMYW5nXTtcclxuXHRcdFx0XHRcdHBheWxvYWQucmVwb3J0TWV0YURhdGEuaGVhZGVycyA9IGhlYWRlcnMubWFwKChjb2wpID0+IF8uZ2V0KGN1cnJlbnRUcmFuc2xhdGlvbnMsIGNvbCkpO1xyXG5cdFx0XHRcdFx0cGF5bG9hZC5yZXBvcnRNZXRhRGF0YS5ibG9iTmFtZSA9IF8uZ2V0KHRyYW5zbGF0aW9uc1snYXInXSwgYmxvYk5hbWVLZXkpO1xyXG5cdFx0XHRcdFx0cGF5bG9hZC5yZXBvcnRNZXRhRGF0YS5ibG9iTmFtZUVuID0gXy5nZXQodHJhbnNsYXRpb25zWydlbiddLCBibG9iTmFtZUtleSk7XHJcblx0XHRcdFx0XHRyZXR1cm4gdGhpcy5fbmdUYWJsZVNlcnZpY2UuZXhwb3J0VGFibGUocmVxdWVzdCwgcGF5bG9hZCkucGlwZShcclxuXHRcdFx0XHRcdFx0Y2F0Y2hFcnJvcigoXykgPT4ge1xyXG5cdFx0XHRcdFx0XHRcdHRoaXMuX3RvYXN0clNlcnZpY2UuZXJyb3IoJ1RBQkxFLkVYUE9SVC5SZXF1ZXN0RXJyb3InKTtcclxuXHRcdFx0XHRcdFx0XHRyZXR1cm4gb2YoZmFsc2UpO1xyXG5cdFx0XHRcdFx0XHR9KVxyXG5cdFx0XHRcdFx0KTtcclxuXHRcdFx0XHR9KSxcclxuXHJcblx0XHRcdFx0ZmlsdGVyKEJvb2xlYW4pLFxyXG5cdFx0XHRcdHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKVxyXG5cdFx0XHQpXHJcblx0XHRcdC5zdWJzY3JpYmUoKHJlczogYm9vbGVhbikgPT4ge1xyXG5cdFx0XHRcdGlmIChyZXMpIHtcclxuXHRcdFx0XHRcdHRoaXMuX3RvYXN0clNlcnZpY2Uuc3VjY2VzcygnVEFCTEUuRVhQT1JULnJlcXVlc3RTdWNjZXNzJyk7XHJcblx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdHRoaXMuX3RvYXN0clNlcnZpY2UuZXJyb3IoJ1RBQkxFLkVYUE9SVC5yZXF1ZXN0RXJyb3InKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0pO1xyXG5cdH1cclxuXHJcblx0ZmlsdGVyQ2hhbmdlZChjcml0ZXJpYTogUmVjb3JkPHN0cmluZywgYW55Pikge1xyXG5cdFx0dGhpcy5fdHJpZ2dlckNyaXRlcmlhQ2hhbmdlcyhjcml0ZXJpYSk7XHJcblx0XHRpZiAodGhpcy5maWx0ZXJzQ29uZmlnPy5tb2RlICE9PSAncGF5bG9hZCcpIHtcclxuXHRcdFx0Y29uc3QgaXNTdHJpbmdpZnlQYXJhbXMgPSB0aGlzLmZpbHRlcnNDb25maWc/LnN0cmluZ2lmeVBhcmFtcztcclxuXHRcdFx0Y29uc3QgdmFsdWUgPSAhaXNTdHJpbmdpZnlQYXJhbXMgPyBjcml0ZXJpYSA6IHRoaXMuX3N0cmluZ2lmeVZhbHVlcyhjcml0ZXJpYSk7XHJcblx0XHRcdHRoaXMuX2R5bmFtaWNUYWJsZVNlcnZpY2UucmVmcmVzaERhdGEubmV4dCh2YWx1ZSk7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHJcblx0XHRjb25zdCBwYXlsb2FkID0gdGhpcy5fZmlsdGVyc01hcHBlci5wcmVwYXJlUGF5bG9hZCh0aGlzLmZpbHRlcnNDb25maWcuZmllbGRzLCBjcml0ZXJpYSk7XHJcblx0XHR0aGlzLl9jdXN0b21Dcml0ZXJpYVN1Yi5uZXh0KHBheWxvYWQpO1xyXG5cdH1cclxuXHJcblx0b25UZXh0U2VhcmNoKHRleHQ6IHN0cmluZykge1xyXG5cdFx0aWYgKCF0aGlzLnRleHRTZWFyY2hDb25maWc/LmZpZWxkS2V5IHx8IHR5cGVvZiB0ZXh0ICE9PSAnc3RyaW5nJykge1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKCF0ZXh0KSB7XHJcblx0XHRcdHRoaXMub25DbGVhclNlYXJjaCgpO1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblx0XHR0aGlzLl90ZXh0U2VhcmNoU3ViLm5leHQodGV4dCk7XHJcblx0fVxyXG5cclxuXHRvbkNsZWFyU2VhcmNoKCkge1xyXG5cdFx0dGhpcy5fdGV4dFNlYXJjaFN1Yi5uZXh0KG51bGwpO1xyXG5cdH1cclxuXHJcblx0b3BlblNlYXJjaE1vZGFsKCkge1xyXG5cdFx0Y29uc3QgX2RpYWxvZ0NvbmZpZyA9IHRoaXMudGV4dFNlYXJjaENvbmZpZz8uc3VmZml4Py5kaWFsb2c7XHJcblx0XHRpZiAoIV9kaWFsb2dDb25maWcpIHtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cdFx0Y29uc3QgeyBvcHRpb25zLCAuLi5kYXRhIH0gPSBfZGlhbG9nQ29uZmlnO1xyXG5cdFx0dGhpcy5fZGlhbG9nLm9wZW48SHRtbERpYWxvZ0NvbXBvbmVudCwgSHRtbERpYWxvZ0NvbmZpZz4oSHRtbERpYWxvZ0NvbXBvbmVudCwge1xyXG5cdFx0XHRwYW5lbENsYXNzOiAncC0wJyxcclxuXHRcdFx0bWluV2lkdGg6ICdtaW4oNTAwcHgsNjB2dyknLFxyXG5cdFx0XHRkaXJlY3Rpb246IHRoaXMuZGlyZWN0aW9uLFxyXG5cdFx0XHQuLi5vcHRpb25zLFxyXG5cdFx0XHRkYXRhXHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdG9uUGFnZUNoYW5nZWQocGFnZTogUGFnZUV2ZW50KSB7XHJcblx0XHR0aGlzLl9wYWdlQ2hhbmdlZCA9IHRoaXMuX2FjdGl2ZVBhZ2UucGFnZUluZGV4ICE9PSBwYWdlLnBhZ2VJbmRleCB8fCB0aGlzLl9hY3RpdmVQYWdlLnBhZ2VTaXplICE9PSBwYWdlLnBhZ2VTaXplO1xyXG5cdFx0aWYgKHRoaXMuX3BhZ2VDaGFuZ2VkKSB7XHJcblx0XHRcdHRoaXMub25QYWdlLmVtaXQocGFnZSk7XHJcblx0XHRcdHRoaXMuX2FjdGl2ZVBhZ2UgPSBwYWdlO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBfZmlsdGVyQnlWaXNpYmlsaXR5KGNvbHVtbnM6IFRhYmxlQ29sdW1uQ29uZmlnW10pOiBUYWJsZUNvbHVtbkNvbmZpZ1tdIHtcclxuXHRcdHJldHVybiBjb2x1bW5zLmZpbHRlcigoY29sKSA9PiBjb2wuZGVmYXVsdFZpc2libGUpO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBfcHJlcGFyZVNlYXJjaChbc2VhcmNoLCBmaWx0ZXJzXTogW1xyXG5cdFx0c3RyaW5nLFxyXG5cdFx0e1xyXG5cdFx0XHRwYXJhbXM/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xyXG5cdFx0XHRwYXlsb2FkPzogeyBwcmVkaWNhdGVMaXN0OiBhbnlbXSB9ICYgUmVjb3JkPHN0cmluZywgYW55PjtcclxuXHRcdH1cclxuXHRdKTogYW55IHtcclxuXHRcdHtcclxuXHRcdFx0Y29uc3QgeyBwcmVkaWNhdGVMaXN0IH0gPSBmaWx0ZXJzPy5wYXlsb2FkIHx8IHsgcHJlZGljYXRlTGlzdDogW10gfTtcclxuXHRcdFx0Y29uc3QgX2tleSA9IHRoaXMudGV4dFNlYXJjaENvbmZpZz8uZmllbGRLZXk7XHJcblx0XHRcdGNvbnN0IHNlYXJjaEluZGV4ID0gcHJlZGljYXRlTGlzdC5maW5kSW5kZXgoKGl0bSkgPT4gaXRtLm5hbWUgPT09IF9rZXkpO1xyXG5cdFx0XHRpZiAoc2VhcmNoICYmIF9rZXkpIHtcclxuXHRcdFx0XHRpZiAoc2VhcmNoSW5kZXggPj0gMCkge1xyXG5cdFx0XHRcdFx0cHJlZGljYXRlTGlzdFtzZWFyY2hJbmRleF0udmFsdWUgPSBgJyR7c2VhcmNofSdgO1xyXG5cdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRwcmVkaWNhdGVMaXN0LnB1c2goe1xyXG5cdFx0XHRcdFx0XHRuYW1lOiBfa2V5LFxyXG5cdFx0XHRcdFx0XHRvcGVyYXRvcjogdGhpcy50ZXh0U2VhcmNoQ29uZmlnPy5vcGVyYXRvciB8fCBDT01QQVJJU09OX09QRVJBVE9SLmVxdWFscyxcclxuXHRcdFx0XHRcdFx0dmFsdWU6IGAnJHtzZWFyY2h9J2BcclxuXHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSBlbHNlIGlmIChzZWFyY2hJbmRleCA+PSAwKSB7XHJcblx0XHRcdFx0cHJlZGljYXRlTGlzdC5zcGxpY2Uoc2VhcmNoSW5kZXgpO1xyXG5cdFx0XHR9XHJcblx0XHRcdHJldHVybiBfLmNsb25lRGVlcCh7IC4uLmZpbHRlcnMgfSk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIF9zdHJpbmdpZnlWYWx1ZXMoY3JpdGVyaWE6IFJlY29yZDxzdHJpbmcsIGFueT4pIHtcclxuXHRcdHJldHVybiBPYmplY3QuZW50cmllcyhjcml0ZXJpYSkucmVkdWNlKChhY2MsIFtrZXksIHZhbHVlXSkgPT4ge1xyXG5cdFx0XHRhY2Nba2V5XSA9IEFycmF5LmlzQXJyYXkodmFsdWUpID8gSlNPTi5zdHJpbmdpZnkodmFsdWUpIDogdmFsdWU7XHJcblx0XHRcdHJldHVybiBhY2M7XHJcblx0XHR9LCB7fSk7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIF90cmlnZ2VyQ3JpdGVyaWFDaGFuZ2VzKGNyaXRlcmlhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSB7XHJcblx0XHRpZiAodGhpcy5fdGFibGVJbml0aWFsaXplZCkge1xyXG5cdFx0XHR0aGlzLm9uUXVlcnlDaGFuZ2UuZW1pdChjcml0ZXJpYSk7XHJcblx0XHR9XHJcblx0XHRjb25zdCBhY3RpdmF0ZWRRdWVyeSA9IHsgLi4udGhpcy5fYWN0aXZhdGVkQ3JpdGVyaWFTdWIuZ2V0VmFsdWUoKSB9O1xyXG5cdFx0Y29uc3QgcHJldmlvdXNWYWx1ZSA9IGFjdGl2YXRlZFF1ZXJ5Py5jdXJyZW50VmFsdWU7XHJcblx0XHR0aGlzLl9hY3RpdmF0ZWRDcml0ZXJpYVN1Yi5uZXh0KHtcclxuXHRcdFx0cHJldmlvdXNWYWx1ZTogcHJldmlvdXNWYWx1ZSxcclxuXHRcdFx0Y3VycmVudFZhbHVlOiBjcml0ZXJpYVxyXG5cdFx0fSk7XHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIEBkZXNjcmlwdGlvblxyXG5cdCAqIFRoaXMgbWV0aG9kIGlzIHVzZWQgdG8gc2V0IHRoZSB0YWJsZSBjb25maWd1cmF0aW9uLlxyXG5cdCAqIEBwYXJhbSBjb25maWcgTmRmVGFibGVDb25maWdcclxuXHQgKi9cclxuXHRwcml2YXRlIF9hcHBseVRhYmxlQ29uZmlnKGNvbmZpZzogTmRmVGFibGVDb25maWcpOiB2b2lkIHtcclxuXHRcdHRoaXMuX3RhYmxlQ29uZmlnU3ViLm5leHQoY29uZmlnKTtcclxuXHRcdHRoaXMuaXNQYW5lbE9wZW5lZCA9IGNvbmZpZz8ub3B0aW9ucz8uZmlsdGVycz8ucGFuZWw/LnZpc2libGUgPz8gdHJ1ZTtcclxuXHRcdHRoaXMuX2lzQ29uZmlnQ2hhbmdlZCA9ICEhY29uZmlnO1xyXG5cdFx0aWYgKGNvbmZpZy5jb2x1bW5zKSB7XHJcblx0XHRcdHRoaXMuX2Rpc3BsYXllZENvbHVtbnNTdWIubmV4dCh0aGlzLl9maWx0ZXJCeVZpc2liaWxpdHkoY29uZmlnLmNvbHVtbnMpKTtcclxuXHRcdH1cclxuXHRcdGlmIChjb25maWcuc29ydGluZ0J5KSB7XHJcblx0XHRcdHRoaXMuX3NvcnRWYWx1ZSA9IGNvbmZpZy5zb3J0aW5nQnk7XHJcblx0XHRcdHRoaXMuX3NvcnRPcHRpb25TdWIubmV4dChjb25maWcuc29ydGluZ0J5KTtcclxuXHRcdH1cclxuXHRcdGlmIChjb25maWc/Lm9wdGlvbnM/LnRhYmxlTW9kZT8ubW9kZSkge1xyXG5cdFx0XHR0aGlzLl92aWV3TW9kZVN1Yi5uZXh0KGNvbmZpZy5vcHRpb25zLnRhYmxlTW9kZS5tb2RlKTtcclxuXHRcdH1cclxuXHRcdGlmIChjb25maWcucGFnZVNpemUpIHtcclxuXHRcdFx0dGhpcy5fYWN0aXZlUGFnZS5wYWdlU2l6ZSA9IGNvbmZpZy5wYWdlU2l6ZTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEBwcml2YXRlXHJcblx0ICogQGRlc2NyaXB0aW9uIExvYWRzIHRoZSB0YWJsZSBjb25maWd1cmF0aW9uIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBrZXkgYW5kIGFwcGxpZXMgaXQuXHJcblx0ICogQHBhcmFtIHtzdHJpbmd9IGtleSAtIFRoZSBrZXkgdXNlZCB0byBmZXRjaCB0aGUgdGFibGUgY29uZmlndXJhdGlvbi5cclxuXHQgKi9cclxuXHRwcml2YXRlIF9sb2FkVGFibGVDb25maWcoa2V5OiBzdHJpbmcpIHtcclxuXHRcdHRoaXMuX25kZlRhYmxlQ29uZmlndXJhdGlvblNlcnZpY2VcclxuXHRcdFx0LmdldFRhYmxlQ29uZmlndXJhdGlvbihrZXksIHRoaXMuY29uZmlnUGF0aClcclxuXHRcdFx0LnBpcGUoXHJcblx0XHRcdFx0c3dpdGNoTWFwKChjb25maWcpID0+IHtcclxuXHRcdFx0XHRcdGlmICh0aGlzLmNvbmZpZ1RyYW5zZm9ybWVyICYmIF8uaXNGdW5jdGlvbih0aGlzLmNvbmZpZ1RyYW5zZm9ybWVyKSkge1xyXG5cdFx0XHRcdFx0XHRyZXR1cm4gdGhpcy5jb25maWdUcmFuc2Zvcm1lcihjb25maWcpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0cmV0dXJuIG9mKGNvbmZpZyk7XHJcblx0XHRcdFx0fSksXHJcblx0XHRcdFx0dGFrZVVudGlsKHRoaXMuZGVzdHJveSQpXHJcblx0XHRcdClcclxuXHRcdFx0LnN1YnNjcmliZSgoY29uZmlnKSA9PiB7XHJcblx0XHRcdFx0dGhpcy5fYXBwbHlUYWJsZUNvbmZpZyhjb25maWcpO1xyXG5cdFx0XHR9KTtcclxuXHR9XHJcbn1cclxuIiwiPGRpdlxyXG5cdCpuZ0lmPVwidGFibGVDb25maWdcIlxyXG5cdGNsYXNzPVwibmRmLXRhYmxlX19jb250YWluZXJcIlxyXG5cdFtjbGFzcy5wYW5lbC1vcGVuZWRdPVwiaXNQYW5lbE9wZW5lZCAmJiBmaWx0ZXJzQ29uZmlnXCJcclxuXHRbZGlyXT1cImRpcmVjdGlvblwiXHJcblx0bmRmRmx1aWRIZWlnaHRcclxuXHRjc3NWYXI9XCItLW5kZi10YWJsZS1oZWlnaHRcIlxyXG5cdFtjYWxjdWxhdGVdPVwiYXV0b0NhbGN1bGF0ZUhlaWdodFwiXHJcbj5cclxuXHQ8ZGl2IGNsYXNzPVwibmRmLXRhYmxlX19wYW5lbFwiICpuZ0lmPVwiZmlsdGVyc0NvbmZpZz8uZmllbGRzXCI+XHJcblx0XHQ8YXBwLWZpbHRlcnMtcGFuZWxcclxuXHRcdFx0W2ZpZWxkc109XCJmaWx0ZXJzQ29uZmlnLmZpZWxkc1wiXHJcblx0XHRcdFthZ2dyZWdhdGlvbnNdPVwiYWdncmVnYXRpb25zJCB8IGFzeW5jXCJcclxuXHRcdFx0KGZpbHRlckNoYW5nZWQpPVwiZmlsdGVyQ2hhbmdlZCgkZXZlbnQpXCJcclxuXHRcdFx0W2FjdGl2ZVF1ZXJ5XT1cImFjdGl2ZVF1ZXJ5XCJcclxuXHRcdFx0Y2xhc3M9XCJuZGYtdGFibGVfX2ZpbHRlcnNcIlxyXG5cdFx0XHRbY3VzdG9tVGVtcGxhdGVSZWZdPVwiZmlsdGVyQ3VzdG9tVGVtcGxhdGVcIlxyXG5cdFx0PjwvYXBwLWZpbHRlcnMtcGFuZWw+XHJcblx0PC9kaXY+XHJcblx0PGRpdiBjbGFzcz1cIm5kZi10YWJsZV9fY29udGVudFwiPlxyXG5cdFx0PGRpdiBjbGFzcz1cIm5kZi10YWJsZV9faGVhZGVyIGZsZXhcIj5cclxuXHRcdFx0PGRpdiBjbGFzcz1cIm5kZi10YWJsZV9faGVhZGVyX19jdXN0b20tYWN0aW9ucyBmbGV4IGdhcC14LTQgaXRlbXMtY2VudGVyXCI+XHJcblx0XHRcdFx0PG5nLWNvbnRhaW5lclxyXG5cdFx0XHRcdFx0W25nVGVtcGxhdGVPdXRsZXRdPVwic2VhcmNoVGFibGVUZW1wbGF0ZSB8fCBkZWZhdWx0QWN0aW9uVGVtcGxhdGVcIlxyXG5cdFx0XHRcdFx0W25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcclxuXHRcdFx0XHRcdFx0JGltcGxpY2l0OiB0YWJsZUNvbmZpZyxcclxuXHRcdFx0XHRcdFx0cGFuZWxPcGVuZWQ6IGlzUGFuZWxPcGVuZWQsXHJcblx0XHRcdFx0XHRcdHRvZ2dsZVBhbmVsOiB0b2dnbGVQYW5lbCxcclxuXHRcdFx0XHRcdFx0b3Blbk1vZGFsOiBvcGVuU2VhcmNoTW9kYWwsXHJcblx0XHRcdFx0XHRcdHNlYXJjaDogb25UZXh0U2VhcmNoLFxyXG5cdFx0XHRcdFx0XHRjbGVhcjogb25DbGVhclNlYXJjaFxyXG5cdFx0XHRcdFx0fVwiXHJcblx0XHRcdFx0PjwvbmctY29udGFpbmVyPlxyXG5cclxuXHRcdFx0XHQ8bmctdGVtcGxhdGUgI2RlZmF1bHRBY3Rpb25UZW1wbGF0ZT5cclxuXHRcdFx0XHRcdDxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uICpuZ0lmPVwiaXNQYW5lbFRvZ2dsZUF2YWlsYWJsZVwiIGNsYXNzPVwidG9nZ2xlLWJ1dHRvblwiIChjbGljayk9XCJ0b2dnbGVQYW5lbCgpXCI+XHJcblx0XHRcdFx0XHRcdDxtYXQtaWNvbj4gZmlsdGVyX2FsdDwvbWF0LWljb24+XHJcblx0XHRcdFx0XHQ8L2J1dHRvbj5cclxuXHRcdFx0XHRcdDxhcHAtdGV4dC1zZWFyY2hcclxuXHRcdFx0XHRcdFx0Km5nSWY9XCJ0ZXh0U2VhcmNoQ29uZmlnXCJcclxuXHRcdFx0XHRcdFx0W3NlYXJjaENvbmZpZ109XCJ0ZXh0U2VhcmNoQ29uZmlnXCJcclxuXHRcdFx0XHRcdFx0KG9wZW5Nb2RhbCk9XCJvcGVuU2VhcmNoTW9kYWwoKVwiXHJcblx0XHRcdFx0XHRcdFtzZWFyY2hdPVwidGV4dFNlYXJjaCQgfCBhc3luY1wiXHJcblx0XHRcdFx0XHRcdChzZWFyY2hDaGFuZ2UpPVwib25UZXh0U2VhcmNoKCRldmVudClcIlxyXG5cdFx0XHRcdFx0XHQoY2xlYXIpPVwib25DbGVhclNlYXJjaCgpXCJcclxuXHRcdFx0XHRcdD48L2FwcC10ZXh0LXNlYXJjaD5cclxuXHRcdFx0XHQ8L25nLXRlbXBsYXRlPlxyXG5cdFx0XHQ8L2Rpdj5cclxuXHRcdFx0PGRpdiBjbGFzcz1cIm5kZi10YWJsZV9faGVhZGVyX19hY3Rpb25zIGZsZXggZ2FwLXgtNCBpdGVtcy1jZW50ZXJcIj5cclxuXHRcdFx0XHQ8YXBwLWVkaXRvci1idXR0b25cclxuXHRcdFx0XHRcdCpuZ0lmPVwianNvbkVkaXRvckVuYWJsZWQgJiYgKHRhYmxlS2V5IHx8IHRhYmxlQ29uZmlnPy5rZXkpXCJcclxuXHRcdFx0XHRcdFtrZXldPVwidGFibGVLZXkgfHwgdGFibGVDb25maWc/LmtleVwiXHJcbiAgICAgICAgICBbdHlwZV09XCJlZGl0b3JUeXBlXCJcclxuXHRcdFx0XHQ+PC9hcHAtZWRpdG9yLWJ1dHRvbj5cclxuXHRcdFx0XHQ8bmRmLXRhYmxlLWV4cG9ydFxyXG5cdFx0XHRcdFx0Km5nSWY9XCJleHBvcnRUYWJsZUNvbmZpZz8uZW5hYmxlZFwiXHJcblx0XHRcdFx0XHRbY29uZmlnXT1cImV4cG9ydFRhYmxlQ29uZmlnXCJcclxuXHRcdFx0XHRcdChvbkV4cG9ydCk9XCJleHBvcnRUYWJsZSgkZXZlbnQpXCJcclxuXHRcdFx0XHQ+PC9uZGYtdGFibGUtZXhwb3J0PlxyXG5cclxuXHRcdFx0XHQ8dGFibGUtc29ydGluZy1saXN0XHJcblx0XHRcdFx0XHQqbmdJZj1cIiEhc29ydExpc3Q/Lmxlbmd0aFwiXHJcblx0XHRcdFx0XHRbc29ydExpc3RdPVwic29ydExpc3RcIlxyXG5cdFx0XHRcdFx0KHNvcnRDaGFuZ2VkKT1cInNvcnRDaGFuZ2VkKCRldmVudClcIlxyXG5cdFx0XHRcdD48L3RhYmxlLXNvcnRpbmctbGlzdD5cclxuXHRcdFx0XHQ8dGFibGUtY29sdW1ucy10b2dnbGVyXHJcblx0XHRcdFx0XHQqbmdJZj1cImNvbHVtblRvZ2dsZVwiXHJcblx0XHRcdFx0XHRbY29sdW1uc109XCJ0YWJsZUNvbmZpZy5jb2x1bW5zXCJcclxuXHRcdFx0XHRcdFtwcmVmaXhdPVwidGFibGVDb25maWcucHJlZml4XCJcclxuXHRcdFx0XHRcdFtzb3J0YWJsZV09XCJjb2x1bW5zT3B0aW9ucz8uc29ydGFibGVcIlxyXG5cdFx0XHRcdFx0KGNvbHVtbnNDaGFuZ2VkKT1cImNvbHVtbnNDaGFuZ2VkKCRldmVudClcIlxyXG5cdFx0XHRcdD48L3RhYmxlLWNvbHVtbnMtdG9nZ2xlcj5cclxuXHRcdFx0XHQ8bW9kZS10b2dnbGVyXHJcblx0XHRcdFx0XHQqbmdJZj1cInRhYmxlTW9kZT8udG9nZ2xlTW9kZVwiXHJcblx0XHRcdFx0XHRbbW9kZV09XCJ0YWJsZU1vZGUubW9kZSB8fCAnbGlzdCdcIlxyXG5cdFx0XHRcdFx0W21vZGVzTGlzdF09XCJ0YWJsZU1vZGU/LmF2YWlsYWJsZU1vZGVcIlxyXG5cdFx0XHRcdFx0KG1vZGVDaGFuZ2VkKT1cIm1vZGVDaGFuZ2VkKCRldmVudClcIlxyXG5cdFx0XHRcdD48L21vZGUtdG9nZ2xlcj5cclxuXHRcdFx0XHQ8bmctY29udGFpbmVyXHJcblx0XHRcdFx0XHRbbmdUZW1wbGF0ZU91dGxldF09XCJhY3Rpb25zVGFibGVUZW1wbGF0ZVwiXHJcblx0XHRcdFx0XHRbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie1xyXG5cdFx0XHRcdFx0XHQkaW1wbGljaXQ6IHRhYmxlQ29uZmlnLFxyXG5cdFx0XHRcdFx0XHRwYW5lbE9wZW5lZDogaXNQYW5lbE9wZW5lZCxcclxuXHRcdFx0XHRcdFx0dG9nZ2xlUGFuZWw6IHRvZ2dsZVBhbmVsLFxyXG5cdFx0XHRcdFx0XHRvcGVuTW9kYWw6IG9wZW5TZWFyY2hNb2RhbCxcclxuXHRcdFx0XHRcdFx0c2VhcmNoOiBvblRleHRTZWFyY2gsXHJcblx0XHRcdFx0XHRcdGNsZWFyOiBvbkNsZWFyU2VhcmNoXHJcblx0XHRcdFx0XHR9XCJcclxuXHRcdFx0XHQ+PC9uZy1jb250YWluZXI+XHJcblx0XHRcdDwvZGl2PlxyXG5cdFx0PC9kaXY+XHJcblxyXG5cdFx0PGN0cy1keW5hbWljLXRhYmxlXHJcblx0XHRcdCpuZ0lmPVwiIXRhYmxlQ29uZmlnLmlzRGF0YVByb3ZpZGVkXCJcclxuXHRcdFx0Y2xhc3M9XCJuZGYtdGFibGVfX3RhYmxlIHRhYmxlLXN0eWxlXCJcclxuXHRcdFx0W2NvbHVtbnNdPVwiZGlzcGxheWVkQ29sdW1ucyQgfCBhc3luY1wiXHJcblx0XHRcdFtyZXNwb25zaXZlQ29sdW1uc109XCJkaXNwbGF5ZWRDb2x1bW5zJCB8IGFzeW5jXCJcclxuXHRcdFx0W2Z1bGxXaWR0aF09XCJ0YWJsZUNvbmZpZy5mdWxsV2lkdGggfHwgJ2F1dG8nXCJcclxuXHRcdFx0W3BhZ2VTaXplXT1cInRhYmxlQ29uZmlnLnBhZ2VTaXplIHx8IDEwXCJcclxuXHRcdFx0W3BhZ2VOdW1iZXJdPVwidGFibGVDb25maWcucGFnZU51bWJlciB8fCAxXCJcclxuXHRcdFx0W3BhZ2VQcm92aWRlcl09XCJ0YWJsZUNvbmZpZy5wYWdlUHJvdmlkZXJcIlxyXG5cdFx0XHRbY3VzdG9tVXJsXT1cInRhYmxlQ29uZmlnLmN1c3RvbVVybFwiXHJcblx0XHRcdFtxdWlja0ZpbHRlcl09XCJ0YWJsZUNvbmZpZy5xdWlja0ZpbHRlcnMgPyB7IHF1aWNrRmlsdGVyczogdGFibGVDb25maWcucXVpY2tGaWx0ZXJzIH0gOiB1bmRlZmluZWRcIlxyXG5cdFx0XHRbZGVmdWx0U29ydF09XCJ0YWJsZUNvbmZpZy5kZWZhdWx0U29ydCB8fCBkZWZhdWx0U29ydFwiXHJcblx0XHRcdFtzb3J0aW5nQnldPVwic29ydE9wdGlvbiQgfCBhc3luY1wiXHJcblx0XHRcdFtlbnRpdHlUeXBlXT1cIidhbGwnXCJcclxuXHRcdFx0W2ZpZWxkc109XCJ0YWJsZUNvbmZpZy5maWVsZHNcIlxyXG5cdFx0XHRbdGFibGVNb2RlXT1cInZpZXdNb2RlJCB8IGFzeW5jXCJcclxuXHRcdFx0W2NvbXBvbmVudE5hbWVdPVwidGFibGVNb2RlPy5bJ2NvbXBvbmVudE5hbWUnXVwiXHJcblx0XHRcdFtyYW5nZV09XCJ0YWJsZUNvbmZpZz8ucmFuZ2VcIlxyXG5cdFx0XHRbaXNTZWFyY2hQYWdlXT1cInRhYmxlQ29uZmlnPy5pc1NlYXJjaFBhZ2VcIlxyXG5cdFx0XHRbbXVsdGlTZWxlY3RSb3dzXT1cInRhYmxlQ29uZmlnPy5tdWx0aVNlbGVjdFJvd3NcIlxyXG5cdFx0XHRbY3VzdG9tRmlyc3RSb3ddPVwidGFibGVDb25maWc/LmN1c3RvbUZpcnN0Um93XCJcclxuXHRcdFx0W2hpZ2hsaWdodFNlbGVjdGVkQ2FyZF09XCJ0YWJsZUNvbmZpZz8uaGlnaGxpZ2h0U2VsZWN0ZWRDYXJkXCJcclxuXHRcdFx0W3Nob3dBY3Rpb25zQXNNZW51XT1cInRhYmxlQ29uZmlnPy5zaG93QWN0aW9uc0FzTWVudVwiXHJcblx0XHRcdFtmaWx0ZXJQYXJhbXNdPVwidGFibGVDb25maWc/LmZpbHRlclBhcmFtc1wiXHJcblx0XHRcdFtmb3JtYXRdPVwidGFibGVDb25maWc/LmZvcm1hdCB8fCAnTU1NTSBkLCB5J1wiXHJcblx0XHRcdFtwYWdlU2l6ZXNdPVwidGFibGVDb25maWc/LnBhZ2VTaXplcyB8fCBkZWZhdWx0UGFnZVNpemVzXCJcclxuXHRcdFx0W3ByZWZpeF09XCJ0YWJsZUNvbmZpZy5wcmVmaXggfHwgJydcIlxyXG5cdFx0XHRbcm93Q3Vyc29yXT1cInRydWVcIlxyXG5cdFx0XHRbcXVlcnlQYXJhbV09XCJ0YWJsZUNvbmZpZy5xdWVyeVBhcmFtXCJcclxuXHRcdFx0W2N1c3RvbUZpbHRlcnNdPVwic2VhcmNoQW5kRmlsdGVycyQgfCBhc3luY1wiXHJcblx0XHRcdFt0YWJsZUFjdGlvbnNdPVwidGFibGVDb25maWcudGFibGVBY3Rpb25zXCJcclxuICAgICAgW3JlcXVlc3RBY3Rpb25zXT1cInRhYmxlQ29uZmlnPy5yZXF1ZXN0QWN0aW9uc1wiXHJcblx0XHRcdFtoZWFkZXJzXT1cInRhYmxlQ29uZmlnLmhlYWRlcnNcIlxyXG5cdFx0XHQob25Sb3dTZWxlY3RlZCk9XCJvblJvd1NlbGVjdGVkLmVtaXQoJGV2ZW50KVwiXHJcblx0XHRcdChvblJvd0luZGV4U2VsZWN0ZWQpPVwib25Sb3dJbmRleFNlbGVjdGVkLmVtaXQoJGV2ZW50KVwiXHJcblx0XHRcdChhY3Rpb25PblJvdyk9XCJhY3Rpb25PblJvdy5lbWl0KCRldmVudClcIlxyXG5cdFx0XHQob25HZXR0aW5nRGF0YSk9XCJvbkdldHRpbmdEYXRhLmVtaXQoJGV2ZW50KVwiXHJcblx0XHRcdChvbkxvYWQpPVwib25Mb2FkKCRldmVudClcIlxyXG5cdFx0XHQob25Jbml0aWFsaXplKT1cIm9uSW5pdGlhbGl6ZSgkZXZlbnQpXCJcclxuXHRcdFx0KG9uTXVsdGlSb3dTZWxlY3RlZCk9XCJvbk11bHRpUm93U2VsZWN0ZWQuZW1pdCgkZXZlbnQpXCJcclxuXHRcdFx0KG9uTG9hZGluZyk9XCJvbkxvYWRpbmcuZW1pdCgkZXZlbnQpXCJcclxuXHRcdFx0KG9uUGFnZSk9XCJvblBhZ2VDaGFuZ2VkKCRldmVudClcIlxyXG5cdFx0XHRbaXNMZWdhY3lNb2RlXT1cImZhbHNlXCJcclxuXHRcdFx0W3Nob3dUb3RhbFJlY29yZF09XCJ0cnVlXCJcclxuXHRcdFx0KHNvcnRDaGFuZ2VkKT1cIm9uU29ydENoYW5nZWQoJGV2ZW50KVwiXHJcblx0XHQ+XHJcblx0XHRcdDxuZy10ZW1wbGF0ZSBlbXB0eVRlbXBsYXRlIGxldC1pc0xvYWRpbmcgbGV0LXJvd3M9XCJyb3dzXCIgbGV0LWluaXRpYWxpemVkPVwiaW5pdGlhbGl6ZWRcIj5cclxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwibG9hZGluZy1kYXRhXCIgKm5nSWY9XCJpc0xvYWRpbmcgJiYgaW5pdGlhbGl6ZWRcIj5cclxuXHRcdFx0XHRcdDxtYXQtc3Bpbm5lcj48L21hdC1zcGlubmVyPlxyXG5cdFx0XHRcdDwvZGl2PlxyXG5cclxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgaC01LzZcIiAqbmdJZj1cIiFpc0xvYWRpbmcgJiYgIXJvd3MubGVuZ3RoXCI+XHJcblx0XHRcdFx0XHQ8YXBwLW5vLWRhdGEtZm91bmQgY2xhc3M9XCJtdC00XCIgW21lc3NhZ2VdPVwiZW1wdHlNZXNzYWdlXCI+PC9hcHAtbm8tZGF0YS1mb3VuZD5cclxuXHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0PC9uZy10ZW1wbGF0ZT5cclxuXHRcdDwvY3RzLWR5bmFtaWMtdGFibGU+XHJcblxyXG5cdFx0PGN0cy10YWJsZVxyXG5cdFx0XHQqbmdJZj1cInRhYmxlQ29uZmlnLmlzRGF0YVByb3ZpZGVkXCJcclxuXHRcdFx0W3Jvd3NdPVwicm93c1wiXHJcblx0XHRcdFt0b3RhbFJlY29yZHNdPVwidG90YWxSZWNvcmRzXCJcclxuXHRcdFx0W2NvbHVtbnNdPVwiZGlzcGxheWVkQ29sdW1ucyQgfCBhc3luY1wiXHJcblx0XHRcdFtyZXNwb25zaXZlQ29sdW1uc109XCJkaXNwbGF5ZWRDb2x1bW5zJCB8IGFzeW5jXCJcclxuXHRcdFx0W3Jvd0N1cnNvcl09XCJ0cnVlXCJcclxuXHRcdFx0W2Z1bGxXaWR0aF09XCJ0YWJsZUNvbmZpZy5mdWxsV2lkdGggfHwgJ2F1dG8nXCJcclxuXHRcdFx0W2VudGl0eVR5cGVdPVwiJ2FsbCdcIlxyXG5cdFx0XHRbcHJlZml4XT1cInRhYmxlQ29uZmlnLnByZWZpeCB8fCAnJ1wiXHJcblx0XHRcdFt0YWJsZU1vZGVdPVwidmlld01vZGUkIHwgYXN5bmNcIlxyXG5cdFx0XHRbY29tcG9uZW50TmFtZV09XCJ0YWJsZU1vZGU/LlsnY29tcG9uZW50TmFtZSddXCJcclxuXHRcdFx0W211bHRpU2VsZWN0Um93c109XCJ0YWJsZUNvbmZpZz8ubXVsdGlTZWxlY3RSb3dzXCJcclxuXHRcdFx0W2N1c3RvbUZpcnN0Um93XT1cInRhYmxlQ29uZmlnPy5jdXN0b21GaXJzdFJvd1wiXHJcblx0XHRcdFt0YWJsZUFjdGlvbnNdPVwidGFibGVDb25maWcudGFibGVBY3Rpb25zXCJcclxuXHRcdFx0W3Nob3dBY3Rpb25zQXNNZW51XT1cInRhYmxlQ29uZmlnPy5zaG93QWN0aW9uc0FzTWVudVwiXHJcblx0XHRcdFtkZWZ1bHRTb3J0XT1cInRhYmxlQ29uZmlnLmRlZmF1bHRTb3J0IHx8IGRlZmF1bHRTb3J0XCJcclxuXHRcdFx0W2Zvcm1hdF09XCJ0YWJsZUNvbmZpZz8uZm9ybWF0IHx8ICdNTU1NIGQsIHknXCJcclxuXHRcdFx0W2hpZ2hsaWdodFNlbGVjdGVkQ2FyZF09XCJ0YWJsZUNvbmZpZz8uaGlnaGxpZ2h0U2VsZWN0ZWRDYXJkXCJcclxuXHRcdFx0KG9uUm93U2VsZWN0ZWQpPVwib25Sb3dTZWxlY3RlZC5lbWl0KCRldmVudClcIlxyXG5cdFx0XHQob25Sb3dJbmRleFNlbGVjdGVkKT1cIm9uUm93SW5kZXhTZWxlY3RlZC5lbWl0KCRldmVudClcIlxyXG5cdFx0XHQob25NdWx0aVJvd1NlbGVjdGVkKT1cIm9uTXVsdGlSb3dTZWxlY3RlZC5lbWl0KCRldmVudClcIlxyXG5cdFx0XHQoYWN0aW9uT25Sb3cpPVwiYWN0aW9uT25Sb3cuZW1pdCgkZXZlbnQpXCJcclxuXHRcdFx0KG9uU29ydGluZyk9XCJvblNvcnRDaGFuZ2VkKCRldmVudClcIlxyXG5cdFx0PjwvY3RzLXRhYmxlPlxyXG5cdDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
481
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmRmLXRhYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL251eGVvLWRldmVsb3BtZW50LWZyYW1ld29yay9zcmMvbGliL2NvbXBvbmVudHMvdGFibGVzL25kZi10YWJsZS9jb250YWluZXJzL25kZi10YWJsZS9uZGYtdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnV4ZW8tZGV2ZWxvcG1lbnQtZnJhbWV3b3JrL3NyYy9saWIvY29tcG9uZW50cy90YWJsZXMvbmRmLXRhYmxlL2NvbnRhaW5lcnMvbmRmLXRhYmxlL25kZi10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBRU4sV0FBVyxHQUNaLE1BQU0sZUFBZSxDQUFDO0FBSXZCLE9BQU8sRUFDTCxlQUFlLEVBQ2YsYUFBYSxFQUNiLFFBQVEsRUFHUixFQUFFLEdBQ0gsTUFBTSxNQUFNLENBQUM7QUFDZCxPQUFPLEVBQ0wsVUFBVSxFQUNWLE1BQU0sRUFDTixHQUFHLEVBQ0gsU0FBUyxFQUNULFNBQVMsRUFFVCxTQUFTLEdBQ1YsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQ0wsc0JBQXNCLEVBQ3RCLHNCQUFzQixFQUN0QixxQkFBcUIsR0FDdEIsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBRUwsbUJBQW1CLEVBRW5CLG1CQUFtQixHQUVwQixNQUFNLHlCQUF5QixDQUFDO0FBWWpDLE9BQU8sQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUN2QixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFNUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBTWxFLE9B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QkFRTyxjQUFjO3NCQUExQixLQUFLO2dCQU1PLFVBQVU7c0JBQXRCLEtBQUs7Z0JBTUksYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxrQkFBa0I7c0JBQTNCLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLGtCQUFrQjtzQkFBM0IsTUFBTTtnQkFDRyxTQUFTO3NCQUFsQixNQUFNO2dCQUVHLE1BQU07c0JBQWYsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLFFBQVE7c0JBQWpCLE1BQU07Z0JBRUcsYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxNQUFNO3NCQUFmLE1BQU07Z0JBR1Asb0JBQW9CO3NCQURuQixZQUFZO3VCQUFDLHNCQUFzQixFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRTtnQkFHM0QsbUJBQW1CO3NCQURsQixZQUFZO3VCQUFDLHFCQUFxQixFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRTtnQkFHMUQsb0JBQW9CO3NCQURuQixZQUFZO3VCQUFDLHNCQUFzQixFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9iaWRpJztcclxuaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgQ29udGVudENoaWxkLFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBJbnB1dCxcclxuICBPbkNoYW5nZXMsXHJcbiAgT3V0cHV0LFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbiAgVGVtcGxhdGVSZWYsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuXHJcbmltcG9ydCB7XHJcbiAgQmVoYXZpb3JTdWJqZWN0LFxyXG4gIGNvbWJpbmVMYXRlc3QsXHJcbiAgZm9ya0pvaW4sXHJcbiAgaWlmLFxyXG4gIE9ic2VydmFibGUsXHJcbiAgb2YsXHJcbn0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7XHJcbiAgY2F0Y2hFcnJvcixcclxuICBmaWx0ZXIsXHJcbiAgbWFwLFxyXG4gIHN0YXJ0V2l0aCxcclxuICBzd2l0Y2hNYXAsXHJcbiAgdGFrZSxcclxuICB0YWtlVW50aWwsXHJcbn0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQge1xyXG4gIEFDVElPTlNfVEFCTEVfVEVNUExBVEUsXHJcbiAgRklMVEVSX0NVU1RPTV9URU1QTEFURSxcclxuICBTRUFSQ0hfVEFCTEVfVEVNUExBVEUsXHJcbn0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcyc7XHJcbmltcG9ydCB7XHJcbiAgQWdncmVnYXRpb25SZXNwb25zZSxcclxuICBDT01QQVJJU09OX09QRVJBVE9SLFxyXG4gIEZvcm1RdWVyeU1vZGVsLFxyXG4gIEh0bWxEaWFsb2dDb21wb25lbnQsXHJcbiAgSHRtbERpYWxvZ0NvbmZpZyxcclxufSBmcm9tICcuLi8uLi8uLi8uLi9uZGYtZmlsdGVycyc7XHJcbmltcG9ydCB7XHJcbiAgQ3VzdG9tQ3JpdGVyaWFNb2RlbCxcclxuICBFeHBvcnRUeXBlLFxyXG4gIE5kZkV4cG9ydFBheWxvYWQsXHJcbiAgTmRmVGFibGVDb25maWcsXHJcbiAgU29ydFRhYmxlSXRlbSxcclxuICBUYWJsZUNvbHVtbkNvbmZpZyxcclxuICBUYWJsZVNvcnRPcHRpb25zLFxyXG4gIFRhYmxlVmlld01vZGUsXHJcbn0gZnJvbSAnLi4vLi4vbW9kZWxzJztcclxuaW1wb3J0IHsgTmRmVGFibGVDb25maWd1cmF0aW9uU2VydmljZSwgTmRmVGFibGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMnO1xyXG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xyXG5pbXBvcnQgeyBQQUdFX1NJWkUgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xyXG5pbXBvcnQgeyBQYWdlRXZlbnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wYWdpbmF0b3IvcGFnaW5hdG9yJztcclxuaW1wb3J0IHsgRGVzdHJveVN1YmplY3QgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9zaGFyZWQvY29tcG9uZW50cyc7XHJcbmltcG9ydCB7IE51eGVvUGFnaW5hdGlvbiB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3NoYXJlZC9tb2RlbHMnO1xyXG5pbXBvcnQgeyBEeW5hbWljVGFibGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vZHluYW1pYy10YWJsZSc7XHJcbmltcG9ydCB7IEN1c3RvbVRvYXN0clNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9jdXN0b20tdG9hc3RyL3NlcnZpY2VzL2N1c3RvbS10b2FzdHIuc2VydmljZSc7XHJcblxyXG5pbXBvcnQgeyBGaWx0ZXJzTWFwcGVyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL25kZi1maWx0ZXJzL3NlcnZpY2VzJztcclxuaW1wb3J0IHsgTkRGX0VESVRPUl9UWVBFIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vc2hhcmVkJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLW5kZi10YWJsZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL25kZi10YWJsZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vbmRmLXRhYmxlLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgaG9zdDoge1xyXG4gICAgY2xhc3M6ICduZGYtdGFibGUnLFxyXG4gICAgJ1tkaXJdJzogJ2RpcmVjdGlvbicsXHJcbiAgfSxcclxufSlcclxuZXhwb3J0IGNsYXNzIE5kZlRhYmxlQ29tcG9uZW50IGV4dGVuZHMgRGVzdHJveVN1YmplY3QgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgX2FnZ3JlZ2F0aW9uc1N1YiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8XHJcbiAgICBSZWNvcmQ8c3RyaW5nLCBBZ2dyZWdhdGlvblJlc3BvbnNlPlxyXG4gID4obnVsbCk7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfZGlzcGxheWVkQ29sdW1uc1N1YiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8XHJcbiAgICBUYWJsZUNvbHVtbkNvbmZpZ1tdXHJcbiAgPihbXSk7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfc29ydE9wdGlvblN1YiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VGFibGVTb3J0T3B0aW9ucz4obnVsbCk7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfdmlld01vZGVTdWIgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRhYmxlVmlld01vZGU+KCdsaXN0Jyk7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfdGV4dFNlYXJjaFN1YiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPihudWxsKTtcclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBfYWN0aXZhdGVkQ3JpdGVyaWFTdWIgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHtcclxuICAgIHByZXZpb3VzVmFsdWU6IFJlY29yZDxzdHJpbmcsIGFueT47XHJcbiAgICBjdXJyZW50VmFsdWU6IFJlY29yZDxzdHJpbmcsIGFueT47XHJcbiAgfT4obnVsbCk7XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgX2N1c3RvbUNyaXRlcmlhU3ViID1cclxuICAgIG5ldyBCZWhhdmlvclN1YmplY3Q8Q3VzdG9tQ3JpdGVyaWFNb2RlbD4oe1xyXG4gICAgICBwYXJhbXM6IHt9LFxyXG4gICAgICBwYXlsb2FkOiB7XHJcbiAgICAgICAgcHJlZGljYXRlTGlzdDogW10sXHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuXHJcbiAgcmVhZG9ubHkgYWdncmVnYXRpb25zJCA9IHRoaXMuX2FnZ3JlZ2F0aW9uc1N1Yi5hc09ic2VydmFibGUoKTtcclxuICByZWFkb25seSBkaXNwbGF5ZWRDb2x1bW5zJCA9IHRoaXMuX2Rpc3BsYXllZENvbHVtbnNTdWIuYXNPYnNlcnZhYmxlKCk7XHJcbiAgcmVhZG9ubHkgc29ydE9wdGlvbiQgPSB0aGlzLl9zb3J0T3B0aW9uU3ViLmFzT2JzZXJ2YWJsZSgpO1xyXG4gIHJlYWRvbmx5IHZpZXdNb2RlJCA9IHRoaXMuX3ZpZXdNb2RlU3ViLmFzT2JzZXJ2YWJsZSgpO1xyXG4gIHJlYWRvbmx5IGN1c3RvbUZpbHRlcnMkID0gdGhpcy5fY3VzdG9tQ3JpdGVyaWFTdWIuYXNPYnNlcnZhYmxlKCk7XHJcbiAgcmVhZG9ubHkgdGV4dFNlYXJjaCQgPSB0aGlzLl90ZXh0U2VhcmNoU3ViLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICByZWFkb25seSBzZWFyY2hBbmRGaWx0ZXJzJCA9IGNvbWJpbmVMYXRlc3QoW1xyXG4gICAgdGhpcy50ZXh0U2VhcmNoJCxcclxuICAgIHRoaXMuY3VzdG9tRmlsdGVycyQsXHJcbiAgXSkucGlwZShtYXAoKHJlcykgPT4gdGhpcy5fcHJlcGFyZVNlYXJjaChyZXMpKSk7XHJcbiAgQElucHV0KCkgcm93czogQXJyYXk8dW5rbm93bj47XHJcbiAgQElucHV0KCkgdG90YWxSZWNvcmRzOiBudW1iZXI7XHJcbiAgQElucHV0KCkgYXV0b0NhbGN1bGF0ZUhlaWdodCA9IHRydWU7XHJcbiAgQElucHV0KCkgZW1wdHlNZXNzYWdlID0gJ3RhYmxlX25vRGF0YSc7XHJcbiAgQElucHV0KCkgYWN0aXZlUXVlcnk6IEZvcm1RdWVyeU1vZGVsO1xyXG4gIEBJbnB1dCgpIGNvbmZpZ1BhdGg6IHN0cmluZyA9ICd0YWJsZXMnO1xyXG4gIEBJbnB1dCgpIHN0eWxlQ2xhc3M6IHN0cmluZyA9ICcnO1xyXG5cclxuICBASW5wdXQoKSBjb25maWdUcmFuc2Zvcm1lcjogKFxyXG4gICAgY29uZmlnOiBOZGZUYWJsZUNvbmZpZyxcclxuICApID0+IE9ic2VydmFibGU8TmRmVGFibGVDb25maWc+O1xyXG4gIEBJbnB1dCgpIHRhYmxlS2V5OiBzdHJpbmc7XHJcblxyXG4gIEBJbnB1dCgpIGpzb25FZGl0b3JFbmFibGVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIHByaXZhdGUgX2NvbmZpZzogTmRmVGFibGVDb25maWc7XHJcbiAgQElucHV0KCkgc2V0IGNvbmZpZyhjb25maWc6IE5kZlRhYmxlQ29uZmlnKSB7XHJcbiAgICB0aGlzLl9jb25maWcgPSBjb25maWc7XHJcbiAgfVxyXG5cclxuICBnZXQgdGFibGVDb25maWcoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fdGFibGVDb25maWdTdWIuZ2V0VmFsdWUoKTtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpIHNldCBjdXN0b21Dcml0ZXJpYShjcml0ZXJpYTogQ3VzdG9tQ3JpdGVyaWFNb2RlbCkge1xyXG4gICAgaWYgKGNyaXRlcmlhKSB7XHJcbiAgICAgIHRoaXMuX2N1c3RvbUNyaXRlcmlhU3ViLm5leHQoY3JpdGVyaWEpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQElucHV0KCkgc2V0IHNlYXJjaFRlcm0odmFsdWU6IHN0cmluZykge1xyXG4gICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgIHRoaXMuX3RleHRTZWFyY2hTdWIubmV4dCh2YWx1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBAT3V0cHV0KCkgb25Sb3dTZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgb25Sb3dJbmRleFNlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBhY3Rpb25PblJvdyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgb25HZXR0aW5nRGF0YSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgb25NdWx0aVJvd1NlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBvbkxvYWRpbmcgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIEBPdXRwdXQoKSBvblBhZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFBhZ2VFdmVudD4oKTtcclxuICBAT3V0cHV0KCkgb25Jbml0aWFsaXplZCA9IG5ldyBFdmVudEVtaXR0ZXI8TnV4ZW9QYWdpbmF0aW9uPGFueT4+KCk7XHJcbiAgQE91dHB1dCgpIG9uTG9hZGVkID0gbmV3IEV2ZW50RW1pdHRlcjxOdXhlb1BhZ2luYXRpb248YW55Pj4oKTtcclxuXHJcbiAgQE91dHB1dCgpIG9uUXVlcnlDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIG9uU29ydCA9IG5ldyBFdmVudEVtaXR0ZXI8VGFibGVTb3J0T3B0aW9ucz4oKTtcclxuXHJcbiAgQENvbnRlbnRDaGlsZChBQ1RJT05TX1RBQkxFX1RFTVBMQVRFLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pXHJcbiAgYWN0aW9uc1RhYmxlVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQENvbnRlbnRDaGlsZChTRUFSQ0hfVEFCTEVfVEVNUExBVEUsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSlcclxuICBzZWFyY2hUYWJsZVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIEBDb250ZW50Q2hpbGQoRklMVEVSX0NVU1RPTV9URU1QTEFURSwgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KVxyXG4gIGZpbHRlckN1c3RvbVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICBwcml2YXRlIF90YWJsZUNvbmZpZ1N1YiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TmRmVGFibGVDb25maWc+KG51bGwpO1xyXG5cclxuICBnZXQgb3B0aW9ucygpIHtcclxuICAgIHJldHVybiB0aGlzLnRhYmxlQ29uZmlnPy5vcHRpb25zO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGZpbHRlcnNDb25maWcoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zPy5maWx0ZXJzO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHNvcnRMaXN0KCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucz8uc29ydExpc3QgfHwgW107XHJcbiAgfVxyXG5cclxuICBnZXQgY29sdW1uc09wdGlvbnMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy50YWJsZUNvbmZpZz8ub3B0aW9ucz8uY29sdW1ucztcclxuICB9XHJcblxyXG4gIGdldCBjb2x1bW5Ub2dnbGUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5jb2x1bW5zT3B0aW9ucz8udG9nZ2xlID8/IHRydWU7XHJcbiAgfVxyXG5cclxuICBnZXQgdGFibGVNb2RlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucz8udGFibGVNb2RlO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHBhbmVsQ29uZmlnKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucz8uZmlsdGVycz8ucGFuZWw7XHJcbiAgfVxyXG5cclxuICBnZXQgaXNQYW5lbFRvZ2dsZUF2YWlsYWJsZSgpIHtcclxuICAgIHJldHVybiB0aGlzLnBhbmVsQ29uZmlnPy50b2dnbGVCdXR0b24gPz8gdHJ1ZTtcclxuICB9XHJcblxyXG4gIGdldCB0ZXh0U2VhcmNoQ29uZmlnKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucz8uc2VhcmNoO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGZpbHRlclJlbG9hZENvbmZpZygpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnM/LmZpbHRlcnM/LnJlbG9hZDtcclxuICB9XHJcblxyXG4gIGdldCBleHBvcnRUYWJsZUNvbmZpZygpIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnM/LmV4cG9ydDtcclxuICB9XHJcblxyXG4gIHJlYWRvbmx5IGRlZmF1bHRTb3J0ID0gW3sgcHJvcDogJ3Byb3BlcnRpZXMuY3JlYXRlZEF0JywgZGlyOiAnZGVzYycgfV07XHJcblxyXG4gIGRpcmVjdGlvbjogRGlyZWN0aW9uID0gJ3J0bCc7XHJcbiAgaXNQYW5lbE9wZW5lZCA9IGZhbHNlO1xyXG4gIHJlYWRvbmx5IGRlZmF1bHRQYWdlU2l6ZXMgPSBQQUdFX1NJWkU7XHJcblxyXG4gIHByaXZhdGUgX2lzQ29uZmlnQ2hhbmdlZCA9IGZhbHNlO1xyXG4gIHByaXZhdGUgX3RhYmxlSW5pdGlhbGl6ZWQgPSBmYWxzZTtcclxuICBwcml2YXRlIF9wYWdlQ2hhbmdlZCA9IGZhbHNlO1xyXG4gIHByaXZhdGUgX2FjdGl2ZVBhZ2U6IFBhZ2VFdmVudCA9IHtcclxuICAgIHBhZ2VJbmRleDogMSxcclxuICAgIHBhZ2VTaXplOiAxMCxcclxuICAgIGxlbmd0aDogMCxcclxuICB9O1xyXG5cclxuICBwcml2YXRlIF9zb3J0VmFsdWU6IFRhYmxlU29ydE9wdGlvbnM7XHJcblxyXG4gIGVkaXRvclR5cGUgPSBOREZfRURJVE9SX1RZUEUuVEFCTEVTO1xyXG4gIC8qKlxyXG4gICAqXHJcbiAgICovXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIF9maWx0ZXJzTWFwcGVyOiBGaWx0ZXJzTWFwcGVyU2VydmljZSxcclxuICAgIHByaXZhdGUgX2R5bmFtaWNUYWJsZVNlcnZpY2U6IER5bmFtaWNUYWJsZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF90cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfbmdUYWJsZVNlcnZpY2U6IE5kZlRhYmxlU2VydmljZSxcclxuICAgIHByaXZhdGUgX3RvYXN0clNlcnZpY2U6IEN1c3RvbVRvYXN0clNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9uZGZUYWJsZUNvbmZpZ3VyYXRpb25TZXJ2aWNlOiBOZGZUYWJsZUNvbmZpZ3VyYXRpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfZGlhbG9nOiBNYXREaWFsb2csXHJcbiAgKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gICAgdGhpcy5fdHJhbnNsYXRlU2VydmljZS5vbkxhbmdDaGFuZ2VcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgc3RhcnRXaXRoKHsgbGFuZzogdGhpcy5fdHJhbnNsYXRlU2VydmljZS5jdXJyZW50TGFuZyB9KSxcclxuICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JCksXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcbiAgICAgICAgdGhpcy5kaXJlY3Rpb24gPSByZXMubGFuZyA9PT0gJ2FyJyA/ICdydGwnIDogJ2x0cic7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgY29uc3QgdGFibGVLZXkgPSBjaGFuZ2VzLnRhYmxlS2V5Py5jdXJyZW50VmFsdWU7XHJcbiAgICBjb25zdCBjb25maWcgPSBjaGFuZ2VzLmNvbmZpZz8uY3VycmVudFZhbHVlO1xyXG5cclxuICAgIGlmICh0YWJsZUtleSAmJiBjb25maWcpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKFxyXG4gICAgICAgICdZb3UgY2Fubm90IHNldCBib3RoIHRhYmxlS2V5IGFuZCB0YWJsZUNvbmZpZyBhdCB0aGUgc2FtZSB0aW1lLicsXHJcbiAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGNvbmZpZykge1xyXG4gICAgICB0aGlzLl9hcHBseVRhYmxlQ29uZmlnKGNvbmZpZyk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRhYmxlS2V5KSB7XHJcbiAgICAgIHRoaXMuX2xvYWRUYWJsZUNvbmZpZyh0YWJsZUtleSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB0b2dnbGVQYW5lbCgpIHtcclxuICAgIHRoaXMuaXNQYW5lbE9wZW5lZCA9ICF0aGlzLmlzUGFuZWxPcGVuZWQ7XHJcbiAgfVxyXG5cclxuICBvbkxvYWQoZGF0YTogTnV4ZW9QYWdpbmF0aW9uPGFueT4pOiB2b2lkIHtcclxuICAgIHRoaXMub25Mb2FkZWQuZW1pdChkYXRhKTtcclxuICAgIGlmIChcclxuICAgICAgIXRoaXMuX3RhYmxlSW5pdGlhbGl6ZWQgfHxcclxuICAgICAgdGhpcy5maWx0ZXJSZWxvYWRDb25maWc/LnN0cmF0ZWd5ID09PSAnbmV2ZXInIHx8XHJcbiAgICAgIHRoaXMuX3BhZ2VDaGFuZ2VkXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5fcGFnZUNoYW5nZWQgPSBmYWxzZTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChcclxuICAgICAgdGhpcy5faXNDb25maWdDaGFuZ2VkIHx8XHJcbiAgICAgIHRoaXMuZmlsdGVyUmVsb2FkQ29uZmlnPy5zdHJhdGVneSA9PT0gJ2Fsd2F5cydcclxuICAgICkge1xyXG4gICAgICB0aGlzLl9hZ2dyZWdhdGlvbnNTdWIubmV4dChkYXRhPy5hZ2dyZWdhdGlvbnMpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuZmlsdGVyUmVsb2FkQ29uZmlnPy5zdHJhdGVneSA9PT0gJ29uQ2hhbmdlJykge1xyXG4gICAgICBjb25zdCBhY3RpdmF0ZWRRdWVyeSA9IHRoaXMuX2FjdGl2YXRlZENyaXRlcmlhU3ViLmdldFZhbHVlKCk7XHJcbiAgICAgIGNvbnN0IGN1cnJlbnRWYWx1ZSA9IGFjdGl2YXRlZFF1ZXJ5Py5jdXJyZW50VmFsdWUgfHwge307XHJcbiAgICAgIGNvbnN0IHByZXZpb3VzVmFsdWUgPSBhY3RpdmF0ZWRRdWVyeT8ucHJldmlvdXNWYWx1ZSB8fCB7fTtcclxuXHJcbiAgICAgIGNvbnN0IHVwZGF0ZWRLZXlzID0gXy51bmlvbihcclxuICAgICAgICBfLmtleXMocHJldmlvdXNWYWx1ZSksXHJcbiAgICAgICAgXy5rZXlzKGN1cnJlbnRWYWx1ZSksXHJcbiAgICAgICkuZmlsdGVyKChrZXkpID0+ICFfLmlzRXF1YWwocHJldmlvdXNWYWx1ZVtrZXldLCBjdXJyZW50VmFsdWVba2V5XSkpO1xyXG5cclxuICAgICAgY29uc3QgdHJpZ2dlcktleXMgPSB0aGlzLmZpbHRlclJlbG9hZENvbmZpZy50cmlnZ2VyRmllbGRzIHx8IFtdO1xyXG4gICAgICBjb25zdCBzaG91bGRSZWxvYWQgPSB0cmlnZ2VyS2V5cy5zb21lKChrZXkpID0+IHVwZGF0ZWRLZXlzLmluY2x1ZGVzKGtleSkpO1xyXG4gICAgICBpZiAoc2hvdWxkUmVsb2FkKSB7XHJcbiAgICAgICAgdGhpcy5fYWdncmVnYXRpb25zU3ViLm5leHQoZGF0YT8uYWdncmVnYXRpb25zKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25Jbml0aWFsaXplKGRhdGE6IE51eGVvUGFnaW5hdGlvbjxhbnk+KTogdm9pZCB7XHJcbiAgICB0aGlzLl9hZ2dyZWdhdGlvbnNTdWIubmV4dChkYXRhPy5hZ2dyZWdhdGlvbnMpO1xyXG4gICAgdGhpcy5fdGFibGVJbml0aWFsaXplZCA9IHRydWU7XHJcbiAgICB0aGlzLl9pc0NvbmZpZ0NoYW5nZWQgPSBmYWxzZTtcclxuICAgIHRoaXMub25Jbml0aWFsaXplZC5lbWl0KGRhdGEpO1xyXG4gIH1cclxuXHJcbiAgY29sdW1uc0NoYW5nZWQoY29sdW1uczogVGFibGVDb2x1bW5Db25maWdbXSkge1xyXG4gICAgdGhpcy5fZGlzcGxheWVkQ29sdW1uc1N1Yi5uZXh0KGNvbHVtbnMpO1xyXG4gIH1cclxuXHJcbiAgc29ydENoYW5nZWQoc29ydDogU29ydFRhYmxlSXRlbSkge1xyXG4gICAgdGhpcy5fc29ydFZhbHVlID0geyBzb3J0Qnk6IHNvcnQudmFsdWUsIHNvcnRPcmRlcjogc29ydC5kaXJlY3Rpb24gfTtcclxuICAgIHRoaXMuX3NvcnRPcHRpb25TdWIubmV4dCh0aGlzLl9zb3J0VmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgbW9kZUNoYW5nZWQobW9kZTogVGFibGVWaWV3TW9kZSkge1xyXG4gICAgdGhpcy5fdmlld01vZGVTdWIubmV4dChtb2RlKTtcclxuICB9XHJcblxyXG4gIG9uU29ydENoYW5nZWQoc29ydDogVGFibGVTb3J0T3B0aW9ucykge1xyXG4gICAgdGhpcy5fc29ydFZhbHVlID0gc29ydDtcclxuICAgIHRoaXMub25Tb3J0LmVtaXQoc29ydCk7XHJcbiAgfVxyXG5cclxuICBleHBvcnRUYWJsZSh0eXBlOiBFeHBvcnRUeXBlKSB7XHJcbiAgICBjb25zdCByZXF1ZXN0ID0gXy5jbG9uZURlZXAodGhpcy5leHBvcnRUYWJsZUNvbmZpZz8ucmVxdWVzdCk7XHJcbiAgICBpZiAoIXJlcXVlc3QpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgY29sdW1ucyA9IHRoaXMuX2Rpc3BsYXllZENvbHVtbnNTdWIuZ2V0VmFsdWUoKTtcclxuICAgIGNvbnN0IGZpZWxkcyA9IGNvbHVtbnMubWFwKChjb2wpID0+IGNvbC5oZWFkZXJDbGFzcyB8fCBjb2w/LmZpbGVkS2V5KTtcclxuICAgIGNvbnN0IGhlYWRlcnMgPSBjb2x1bW5zLm1hcChcclxuICAgICAgKGNvbCkgPT4gKHRoaXMudGFibGVDb25maWcucHJlZml4IHx8ICcnKSArIGNvbC5uYW1lLFxyXG4gICAgKTtcclxuXHJcbiAgICBjb25zdCBjcml0ZXJpYSA9IHRoaXMuX2N1c3RvbUNyaXRlcmlhU3ViLmdldFZhbHVlKCk7XHJcblxyXG4gICAgcmVxdWVzdC5wYXJhbXMgPSBPYmplY3QuYXNzaWduKFxyXG4gICAgICB7fSxcclxuICAgICAgY3JpdGVyaWEucGFyYW1zLFxyXG4gICAgICB0aGlzLl9zb3J0VmFsdWUgfHwge30sXHJcbiAgICAgIHRoaXMudGFibGVDb25maWc/LnF1aWNrRmlsdGVyc1xyXG4gICAgICAgID8geyBxdWlja0ZpbHRlcnM6IHRoaXMudGFibGVDb25maWcucXVpY2tGaWx0ZXJzIH1cclxuICAgICAgICA6IHt9LFxyXG4gICAgICByZXF1ZXN0LnBhcmFtcyxcclxuICAgICk7XHJcblxyXG4gICAgY29uc3QgYmxvYk5hbWVLZXkgPSB0aGlzLmV4cG9ydFRhYmxlQ29uZmlnPy5ibG9iTmFtZTtcclxuICAgIGNvbnN0IHBheWxvYWQ6IE5kZkV4cG9ydFBheWxvYWQgPSB7XHJcbiAgICAgIHByZWRpY2F0ZUxpc3Q6IGNyaXRlcmlhLnBheWxvYWQucHJlZGljYXRlTGlzdCB8fCBbXSxcclxuICAgICAgcmVwb3J0TWV0YURhdGE6IHtcclxuICAgICAgICBibG9iTmFtZTogJycsXHJcbiAgICAgICAgZG9jVHlwZU5hbWU6IHRoaXMuZXhwb3J0VGFibGVDb25maWcuZG9jVHlwZU5hbWUsXHJcbiAgICAgICAgZmlsZVR5cGU6IHR5cGUsXHJcbiAgICAgICAgbG9jYWxlOlxyXG4gICAgICAgICAgdGhpcy5leHBvcnRUYWJsZUNvbmZpZz8ubG9jYWxlIHx8IHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuY3VycmVudExhbmcsXHJcbiAgICAgICAgZmllbGRzOiB0aGlzLmV4cG9ydFRhYmxlQ29uZmlnPy5maWVsZHMgfHwgZmllbGRzLFxyXG4gICAgICAgIGhlYWRlcnM6IFtdLFxyXG4gICAgICB9LFxyXG4gICAgfTtcclxuXHJcbiAgICBmb3JrSm9pbih7XHJcbiAgICAgIGFyOiB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmdldFRyYW5zbGF0aW9uKCdhcicpLFxyXG4gICAgICBlbjogdGhpcy5fdHJhbnNsYXRlU2VydmljZS5nZXRUcmFuc2xhdGlvbignZW4nKSxcclxuICAgIH0pXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIHN3aXRjaE1hcCgodHJhbnNsYXRpb25zKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBjdXJyZW50VHJhbnNsYXRpb25zID1cclxuICAgICAgICAgICAgdHJhbnNsYXRpb25zW3RoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuY3VycmVudExhbmddO1xyXG4gICAgICAgICAgcGF5bG9hZC5yZXBvcnRNZXRhRGF0YS5oZWFkZXJzID0gaGVhZGVycy5tYXAoKGNvbCkgPT5cclxuICAgICAgICAgICAgXy5nZXQoY3VycmVudFRyYW5zbGF0aW9ucywgY29sKSxcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICBwYXlsb2FkLnJlcG9ydE1ldGFEYXRhLmJsb2JOYW1lID0gXy5nZXQoXHJcbiAgICAgICAgICAgIHRyYW5zbGF0aW9uc1snYXInXSxcclxuICAgICAgICAgICAgYmxvYk5hbWVLZXksXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgcGF5bG9hZC5yZXBvcnRNZXRhRGF0YS5ibG9iTmFtZUVuID0gXy5nZXQoXHJcbiAgICAgICAgICAgIHRyYW5zbGF0aW9uc1snZW4nXSxcclxuICAgICAgICAgICAgYmxvYk5hbWVLZXksXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuX25nVGFibGVTZXJ2aWNlLmV4cG9ydFRhYmxlKHJlcXVlc3QsIHBheWxvYWQpLnBpcGUoXHJcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKF8pID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLl90b2FzdHJTZXJ2aWNlLmVycm9yKCdUQUJMRS5FWFBPUlQuUmVxdWVzdEVycm9yJyk7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIG9mKGZhbHNlKTtcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0pLFxyXG5cclxuICAgICAgICBmaWx0ZXIoQm9vbGVhbiksXHJcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLFxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoKHJlczogYm9vbGVhbikgPT4ge1xyXG4gICAgICAgIGlmIChyZXMpIHtcclxuICAgICAgICAgIHRoaXMuX3RvYXN0clNlcnZpY2Uuc3VjY2VzcygnVEFCTEUuRVhQT1JULnJlcXVlc3RTdWNjZXNzJyk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuX3RvYXN0clNlcnZpY2UuZXJyb3IoJ1RBQkxFLkVYUE9SVC5yZXF1ZXN0RXJyb3InKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZmlsdGVyQ2hhbmdlZChjcml0ZXJpYTogUmVjb3JkPHN0cmluZywgYW55Pikge1xyXG4gICAgdGhpcy5fdHJpZ2dlckNyaXRlcmlhQ2hhbmdlcyhjcml0ZXJpYSk7XHJcbiAgICBpZiAodGhpcy5maWx0ZXJzQ29uZmlnPy5tb2RlICE9PSAncGF5bG9hZCcpIHtcclxuICAgICAgY29uc3QgaXNTdHJpbmdpZnlQYXJhbXMgPSB0aGlzLmZpbHRlcnNDb25maWc/LnN0cmluZ2lmeVBhcmFtcztcclxuICAgICAgY29uc3QgdmFsdWUgPSAhaXNTdHJpbmdpZnlQYXJhbXNcclxuICAgICAgICA/IGNyaXRlcmlhXHJcbiAgICAgICAgOiB0aGlzLl9zdHJpbmdpZnlWYWx1ZXMoY3JpdGVyaWEpO1xyXG4gICAgICB0aGlzLl9keW5hbWljVGFibGVTZXJ2aWNlLnJlZnJlc2hEYXRhLm5leHQodmFsdWUpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgcGF5bG9hZCA9IHRoaXMuX2ZpbHRlcnNNYXBwZXIucHJlcGFyZVBheWxvYWQoXHJcbiAgICAgIHRoaXMuZmlsdGVyc0NvbmZpZy5maWVsZHMsXHJcbiAgICAgIGNyaXRlcmlhLFxyXG4gICAgKTtcclxuICAgIHRoaXMuX2N1c3RvbUNyaXRlcmlhU3ViLm5leHQocGF5bG9hZCk7XHJcbiAgfVxyXG5cclxuICBvblRleHRTZWFyY2godGV4dDogc3RyaW5nKSB7XHJcbiAgICBpZiAoIXRoaXMudGV4dFNlYXJjaENvbmZpZz8uZmllbGRLZXkgfHwgdHlwZW9mIHRleHQgIT09ICdzdHJpbmcnKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIXRleHQpIHtcclxuICAgICAgdGhpcy5vbkNsZWFyU2VhcmNoKCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuX3RleHRTZWFyY2hTdWIubmV4dCh0ZXh0KTtcclxuICB9XHJcblxyXG4gIG9uQ2xlYXJTZWFyY2goKSB7XHJcbiAgICB0aGlzLl90ZXh0U2VhcmNoU3ViLm5leHQobnVsbCk7XHJcbiAgfVxyXG5cclxuICBvcGVuU2VhcmNoTW9kYWwoKSB7XHJcbiAgICBjb25zdCBfZGlhbG9nQ29uZmlnID0gdGhpcy50ZXh0U2VhcmNoQ29uZmlnPy5zdWZmaXg/LmRpYWxvZztcclxuICAgIGlmICghX2RpYWxvZ0NvbmZpZykge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCB7IG9wdGlvbnMsIC4uLmRhdGEgfSA9IF9kaWFsb2dDb25maWc7XHJcbiAgICB0aGlzLl9kaWFsb2cub3BlbjxIdG1sRGlhbG9nQ29tcG9uZW50LCBIdG1sRGlhbG9nQ29uZmlnPihcclxuICAgICAgSHRtbERpYWxvZ0NvbXBvbmVudCxcclxuICAgICAge1xyXG4gICAgICAgIHBhbmVsQ2xhc3M6ICdwLTAnLFxyXG4gICAgICAgIG1pbldpZHRoOiAnbWluKDUwMHB4LDYwdncpJyxcclxuICAgICAgICBkaXJlY3Rpb246IHRoaXMuZGlyZWN0aW9uLFxyXG4gICAgICAgIC4uLm9wdGlvbnMsXHJcbiAgICAgICAgZGF0YSxcclxuICAgICAgfSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBvblBhZ2VDaGFuZ2VkKHBhZ2U6IFBhZ2VFdmVudCkge1xyXG4gICAgdGhpcy5fcGFnZUNoYW5nZWQgPVxyXG4gICAgICB0aGlzLl9hY3RpdmVQYWdlLnBhZ2VJbmRleCAhPT0gcGFnZS5wYWdlSW5kZXggfHxcclxuICAgICAgdGhpcy5fYWN0aXZlUGFnZS5wYWdlU2l6ZSAhPT0gcGFnZS5wYWdlU2l6ZTtcclxuICAgIGlmICh0aGlzLl9wYWdlQ2hhbmdlZCkge1xyXG4gICAgICB0aGlzLm9uUGFnZS5lbWl0KHBhZ2UpO1xyXG4gICAgICB0aGlzLl9hY3RpdmVQYWdlID0gcGFnZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2ZpbHRlckJ5VmlzaWJpbGl0eShcclxuICAgIGNvbHVtbnM6IFRhYmxlQ29sdW1uQ29uZmlnW10sXHJcbiAgKTogVGFibGVDb2x1bW5Db25maWdbXSB7XHJcbiAgICByZXR1cm4gY29sdW1ucy5maWx0ZXIoKGNvbCkgPT4gY29sLmRlZmF1bHRWaXNpYmxlKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3ByZXBhcmVTZWFyY2goW3NlYXJjaCwgZmlsdGVyc106IFtcclxuICAgIHN0cmluZyxcclxuICAgIHtcclxuICAgICAgcGFyYW1zPzogUmVjb3JkPHN0cmluZywgYW55PjtcclxuICAgICAgcGF5bG9hZD86IHsgcHJlZGljYXRlTGlzdDogYW55W10gfSAmIFJlY29yZDxzdHJpbmcsIGFueT47XHJcbiAgICB9LFxyXG4gIF0pOiBhbnkge1xyXG4gICAge1xyXG4gICAgICBjb25zdCB7IHByZWRpY2F0ZUxpc3QgfSA9IGZpbHRlcnM/LnBheWxvYWQgfHwgeyBwcmVkaWNhdGVMaXN0OiBbXSB9O1xyXG4gICAgICBjb25zdCBfa2V5ID0gdGhpcy50ZXh0U2VhcmNoQ29uZmlnPy5maWVsZEtleTtcclxuICAgICAgY29uc3Qgc2VhcmNoSW5kZXggPSBwcmVkaWNhdGVMaXN0LmZpbmRJbmRleCgoaXRtKSA9PiBpdG0ubmFtZSA9PT0gX2tleSk7XHJcbiAgICAgIGlmIChzZWFyY2ggJiYgX2tleSkge1xyXG4gICAgICAgIGlmIChzZWFyY2hJbmRleCA+PSAwKSB7XHJcbiAgICAgICAgICBwcmVkaWNhdGVMaXN0W3NlYXJjaEluZGV4XS52YWx1ZSA9IGAnJHtzZWFyY2h9J2A7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHByZWRpY2F0ZUxpc3QucHVzaCh7XHJcbiAgICAgICAgICAgIG5hbWU6IF9rZXksXHJcbiAgICAgICAgICAgIG9wZXJhdG9yOlxyXG4gICAgICAgICAgICAgIHRoaXMudGV4dFNlYXJjaENvbmZpZz8ub3BlcmF0b3IgfHwgQ09NUEFSSVNPTl9PUEVSQVRPUi5lcXVhbHMsXHJcbiAgICAgICAgICAgIHZhbHVlOiBgJyR7c2VhcmNofSdgLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2UgaWYgKHNlYXJjaEluZGV4ID49IDApIHtcclxuICAgICAgICBwcmVkaWNhdGVMaXN0LnNwbGljZShzZWFyY2hJbmRleCk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIF8uY2xvbmVEZWVwKHsgLi4uZmlsdGVycyB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3N0cmluZ2lmeVZhbHVlcyhjcml0ZXJpYTogUmVjb3JkPHN0cmluZywgYW55Pikge1xyXG4gICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKGNyaXRlcmlhKS5yZWR1Y2UoKGFjYywgW2tleSwgdmFsdWVdKSA9PiB7XHJcbiAgICAgIGFjY1trZXldID0gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyBKU09OLnN0cmluZ2lmeSh2YWx1ZSkgOiB2YWx1ZTtcclxuICAgICAgcmV0dXJuIGFjYztcclxuICAgIH0sIHt9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3RyaWdnZXJDcml0ZXJpYUNoYW5nZXMoY3JpdGVyaWE6IFJlY29yZDxzdHJpbmcsIGFueT4pIHtcclxuICAgIGlmICh0aGlzLl90YWJsZUluaXRpYWxpemVkKSB7XHJcbiAgICAgIHRoaXMub25RdWVyeUNoYW5nZS5lbWl0KGNyaXRlcmlhKTtcclxuICAgIH1cclxuICAgIGNvbnN0IGFjdGl2YXRlZFF1ZXJ5ID0geyAuLi50aGlzLl9hY3RpdmF0ZWRDcml0ZXJpYVN1Yi5nZXRWYWx1ZSgpIH07XHJcbiAgICBjb25zdCBwcmV2aW91c1ZhbHVlID0gYWN0aXZhdGVkUXVlcnk/LmN1cnJlbnRWYWx1ZTtcclxuICAgIHRoaXMuX2FjdGl2YXRlZENyaXRlcmlhU3ViLm5leHQoe1xyXG4gICAgICBwcmV2aW91c1ZhbHVlOiBwcmV2aW91c1ZhbHVlLFxyXG4gICAgICBjdXJyZW50VmFsdWU6IGNyaXRlcmlhLFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEBkZXNjcmlwdGlvblxyXG4gICAqIFRoaXMgbWV0aG9kIGlzIHVzZWQgdG8gc2V0IHRoZSB0YWJsZSBjb25maWd1cmF0aW9uLlxyXG4gICAqIEBwYXJhbSBjb25maWcgTmRmVGFibGVDb25maWdcclxuICAgKi9cclxuICBwcml2YXRlIF9hcHBseVRhYmxlQ29uZmlnKGNvbmZpZzogTmRmVGFibGVDb25maWcpOiB2b2lkIHtcclxuICAgIHRoaXMuX3RhYmxlQ29uZmlnU3ViLm5leHQoY29uZmlnKTtcclxuICAgIHRoaXMuaXNQYW5lbE9wZW5lZCA9IGNvbmZpZz8ub3B0aW9ucz8uZmlsdGVycz8ucGFuZWw/LnZpc2libGUgPz8gdHJ1ZTtcclxuICAgIHRoaXMuX2lzQ29uZmlnQ2hhbmdlZCA9ICEhY29uZmlnO1xyXG4gICAgaWYgKGNvbmZpZy5jb2x1bW5zKSB7XHJcbiAgICAgIHRoaXMuX2Rpc3BsYXllZENvbHVtbnNTdWIubmV4dCh0aGlzLl9maWx0ZXJCeVZpc2liaWxpdHkoY29uZmlnLmNvbHVtbnMpKTtcclxuICAgIH1cclxuICAgIGlmIChjb25maWcuc29ydGluZ0J5KSB7XHJcbiAgICAgIHRoaXMuX3NvcnRWYWx1ZSA9IGNvbmZpZy5zb3J0aW5nQnk7XHJcbiAgICAgIHRoaXMuX3NvcnRPcHRpb25TdWIubmV4dChjb25maWcuc29ydGluZ0J5KTtcclxuICAgIH1cclxuICAgIGlmIChjb25maWc/Lm9wdGlvbnM/LnRhYmxlTW9kZT8ubW9kZSkge1xyXG4gICAgICB0aGlzLl92aWV3TW9kZVN1Yi5uZXh0KGNvbmZpZy5vcHRpb25zLnRhYmxlTW9kZS5tb2RlKTtcclxuICAgIH1cclxuICAgIGlmIChjb25maWcucGFnZVNpemUpIHtcclxuICAgICAgdGhpcy5fYWN0aXZlUGFnZS5wYWdlU2l6ZSA9IGNvbmZpZy5wYWdlU2l6ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEBwcml2YXRlXHJcbiAgICogQGRlc2NyaXB0aW9uIExvYWRzIHRoZSB0YWJsZSBjb25maWd1cmF0aW9uIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBrZXkgYW5kIGFwcGxpZXMgaXQuXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IGtleSAtIFRoZSBrZXkgdXNlZCB0byBmZXRjaCB0aGUgdGFibGUgY29uZmlndXJhdGlvbi5cclxuICAgKi9cclxuICBwcml2YXRlIF9sb2FkVGFibGVDb25maWcoa2V5OiBzdHJpbmcpIHtcclxuICAgIHRoaXMuX25kZlRhYmxlQ29uZmlndXJhdGlvblNlcnZpY2VcclxuICAgICAgLmdldFRhYmxlQ29uZmlndXJhdGlvbihrZXksIHRoaXMuY29uZmlnUGF0aClcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgc3dpdGNoTWFwKChjb25maWcpID0+IHtcclxuICAgICAgICAgIGlmICh0aGlzLmNvbmZpZ1RyYW5zZm9ybWVyICYmIF8uaXNGdW5jdGlvbih0aGlzLmNvbmZpZ1RyYW5zZm9ybWVyKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jb25maWdUcmFuc2Zvcm1lcihjb25maWcpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgcmV0dXJuIG9mKGNvbmZpZyk7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLFxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoKGNvbmZpZykgPT4ge1xyXG4gICAgICAgIHRoaXMuX2FwcGx5VGFibGVDb25maWcoY29uZmlnKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXZcclxuICAqbmdJZj1cInRhYmxlQ29uZmlnXCJcclxuICBjbGFzcz1cIm5kZi10YWJsZV9fY29udGFpbmVyXCJcclxuICBbY2xhc3MucGFuZWwtb3BlbmVkXT1cImlzUGFuZWxPcGVuZWQgJiYgZmlsdGVyc0NvbmZpZ1wiXHJcbiAgW2Rpcl09XCJkaXJlY3Rpb25cIlxyXG4gIG5kZkZsdWlkSGVpZ2h0XHJcbiAgY3NzVmFyPVwiLS1uZGYtdGFibGUtaGVpZ2h0XCJcclxuICBbY2FsY3VsYXRlXT1cImF1dG9DYWxjdWxhdGVIZWlnaHRcIlxyXG4+XHJcbiAgPGRpdiBjbGFzcz1cIm5kZi10YWJsZV9fcGFuZWxcIiAqbmdJZj1cImZpbHRlcnNDb25maWc/LmZpZWxkc1wiPlxyXG4gICAgPGFwcC1maWx0ZXJzLXBhbmVsXHJcbiAgICAgIFtmaWVsZHNdPVwiZmlsdGVyc0NvbmZpZy5maWVsZHNcIlxyXG4gICAgICBbYWdncmVnYXRpb25zXT1cImFnZ3JlZ2F0aW9ucyQgfCBhc3luY1wiXHJcbiAgICAgIChmaWx0ZXJDaGFuZ2VkKT1cImZpbHRlckNoYW5nZWQoJGV2ZW50KVwiXHJcbiAgICAgIFthY3RpdmVRdWVyeV09XCJhY3RpdmVRdWVyeVwiXHJcbiAgICAgIGNsYXNzPVwibmRmLXRhYmxlX19maWx0ZXJzXCJcclxuICAgICAgW2N1c3RvbVRlbXBsYXRlUmVmXT1cImZpbHRlckN1c3RvbVRlbXBsYXRlXCJcclxuICAgID48L2FwcC1maWx0ZXJzLXBhbmVsPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJuZGYtdGFibGVfX2NvbnRlbnRcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJuZGYtdGFibGVfX2hlYWRlciBmbGV4XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJuZGYtdGFibGVfX2hlYWRlcl9fY3VzdG9tLWFjdGlvbnMgZmxleCBnYXAteC00IGl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInNlYXJjaFRhYmxlVGVtcGxhdGUgfHwgZGVmYXVsdEFjdGlvblRlbXBsYXRlXCJcclxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7XHJcbiAgICAgICAgICAgICRpbXBsaWNpdDogdGFibGVDb25maWcsXHJcbiAgICAgICAgICAgIHBhbmVsT3BlbmVkOiBpc1BhbmVsT3BlbmVkLFxyXG4gICAgICAgICAgICB0b2dnbGVQYW5lbDogdG9nZ2xlUGFuZWwsXHJcbiAgICAgICAgICAgIG9wZW5Nb2RhbDogb3BlblNlYXJjaE1vZGFsLFxyXG4gICAgICAgICAgICBzZWFyY2g6IG9uVGV4dFNlYXJjaCxcclxuICAgICAgICAgICAgY2xlYXI6IG9uQ2xlYXJTZWFyY2hcclxuICAgICAgICAgIH1cIlxyXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0QWN0aW9uVGVtcGxhdGU+XHJcbiAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgIG1hdC1zdHJva2VkLWJ1dHRvblxyXG4gICAgICAgICAgICAqbmdJZj1cImlzUGFuZWxUb2dnbGVBdmFpbGFibGVcIlxyXG4gICAgICAgICAgICBjbGFzcz1cInRvZ2dsZS1idXR0b25cIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlUGFuZWwoKVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbj4gZmlsdGVyX2FsdDwvbWF0LWljb24+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDxhcHAtdGV4dC1zZWFyY2hcclxuICAgICAgICAgICAgKm5nSWY9XCJ0ZXh0U2VhcmNoQ29uZmlnXCJcclxuICAgICAgICAgICAgW3NlYXJjaENvbmZpZ109XCJ0ZXh0U2VhcmNoQ29uZmlnXCJcclxuICAgICAgICAgICAgKG9wZW5Nb2RhbCk9XCJvcGVuU2VhcmNoTW9kYWwoKVwiXHJcbiAgICAgICAgICAgIFtzZWFyY2hdPVwidGV4dFNlYXJjaCQgfCBhc3luY1wiXHJcbiAgICAgICAgICAgIChzZWFyY2hDaGFuZ2UpPVwib25UZXh0U2VhcmNoKCRldmVudClcIlxyXG4gICAgICAgICAgICAoY2xlYXIpPVwib25DbGVhclNlYXJjaCgpXCJcclxuICAgICAgICAgID48L2FwcC10ZXh0LXNlYXJjaD5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm5kZi10YWJsZV9faGVhZGVyX19hY3Rpb25zIGZsZXggZ2FwLXgtNCBpdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICA8YXBwLWVkaXRvci1idXR0b25cclxuICAgICAgICAgICpuZ0lmPVwianNvbkVkaXRvckVuYWJsZWQgJiYgKHRhYmxlS2V5IHx8IHRhYmxlQ29uZmlnPy5rZXkpXCJcclxuICAgICAgICAgIFtrZXldPVwidGFibGVLZXkgfHwgdGFibGVDb25maWc/LmtleVwiXHJcbiAgICAgICAgICBbdHlwZV09XCJlZGl0b3JUeXBlXCJcclxuICAgICAgICA+PC9hcHAtZWRpdG9yLWJ1dHRvbj5cclxuICAgICAgICA8bmRmLXRhYmxlLWV4cG9ydFxyXG4gICAgICAgICAgKm5nSWY9XCJleHBvcnRUYWJsZUNvbmZpZz8uZW5hYmxlZFwiXHJcbiAgICAgICAgICBbY29uZmlnXT1cImV4cG9ydFRhYmxlQ29uZmlnXCJcclxuICAgICAgICAgIChvbkV4cG9ydCk9XCJleHBvcnRUYWJsZSgkZXZlbnQpXCJcclxuICAgICAgICA+PC9uZGYtdGFibGUtZXhwb3J0PlxyXG5cclxuICAgICAgICA8dGFibGUtc29ydGluZy1saXN0XHJcbiAgICAgICAgICAqbmdJZj1cIiEhc29ydExpc3Q/Lmxlbmd0aFwiXHJcbiAgICAgICAgICBbc29ydExpc3RdPVwic29ydExpc3RcIlxyXG4gICAgICAgICAgKHNvcnRDaGFuZ2VkKT1cInNvcnRDaGFuZ2VkKCRldmVudClcIlxyXG4gICAgICAgID48L3RhYmxlLXNvcnRpbmctbGlzdD5cclxuICAgICAgICA8dGFibGUtY29sdW1ucy10b2dnbGVyXHJcbiAgICAgICAgICAqbmdJZj1cImNvbHVtblRvZ2dsZVwiXHJcbiAgICAgICAgICBbY29sdW1uc109XCJ0YWJsZUNvbmZpZy5jb2x1bW5zXCJcclxuICAgICAgICAgIFtwcmVmaXhdPVwidGFibGVDb25maWcucHJlZml4XCJcclxuICAgICAgICAgIFtzb3J0YWJsZV09XCJjb2x1bW5zT3B0aW9ucz8uc29ydGFibGVcIlxyXG4gICAgICAgICAgKGNvbHVtbnNDaGFuZ2VkKT1cImNvbHVtbnNDaGFuZ2VkKCRldmVudClcIlxyXG4gICAgICAgID48L3RhYmxlLWNvbHVtbnMtdG9nZ2xlcj5cclxuICAgICAgICA8bW9kZS10b2dnbGVyXHJcbiAgICAgICAgICAqbmdJZj1cInRhYmxlTW9kZT8udG9nZ2xlTW9kZVwiXHJcbiAgICAgICAgICBbbW9kZV09XCJ0YWJsZU1vZGUubW9kZSB8fCAnbGlzdCdcIlxyXG4gICAgICAgICAgW21vZGVzTGlzdF09XCJ0YWJsZU1vZGU/LmF2YWlsYWJsZU1vZGVcIlxyXG4gICAgICAgICAgKG1vZGVDaGFuZ2VkKT1cIm1vZGVDaGFuZ2VkKCRldmVudClcIlxyXG4gICAgICAgID48L21vZGUtdG9nZ2xlcj5cclxuICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJhY3Rpb25zVGFibGVUZW1wbGF0ZVwiXHJcbiAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie1xyXG4gICAgICAgICAgICAkaW1wbGljaXQ6IHRhYmxlQ29uZmlnLFxyXG4gICAgICAgICAgICBwYW5lbE9wZW5lZDogaXNQYW5lbE9wZW5lZCxcclxuICAgICAgICAgICAgdG9nZ2xlUGFuZWw6IHRvZ2dsZVBhbmVsLFxyXG4gICAgICAgICAgICBvcGVuTW9kYWw6IG9wZW5TZWFyY2hNb2RhbCxcclxuICAgICAgICAgICAgc2VhcmNoOiBvblRleHRTZWFyY2gsXHJcbiAgICAgICAgICAgIGNsZWFyOiBvbkNsZWFyU2VhcmNoXHJcbiAgICAgICAgICB9XCJcclxuICAgICAgICA+PC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGN0cy1keW5hbWljLXRhYmxlXHJcbiAgICAgICpuZ0lmPVwiIXRhYmxlQ29uZmlnLmlzRGF0YVByb3ZpZGVkXCJcclxuICAgICAgY2xhc3M9XCJuZGYtdGFibGVfX3RhYmxlIHRhYmxlLXN0eWxlXCJcclxuICAgICAgW25nQ2xhc3NdPVwic3R5bGVDbGFzc1wiXHJcbiAgICAgIFtjb2x1bW5zXT1cImRpc3BsYXllZENvbHVtbnMkIHwgYXN5bmNcIlxyXG4gICAgICBbcmVzcG9uc2l2ZUNvbHVtbnNdPVwiZGlzcGxheWVkQ29sdW1ucyQgfCBhc3luY1wiXHJcbiAgICAgIFtmdWxsV2lkdGhdPVwidGFibGVDb25maWcuZnVsbFdpZHRoIHx8ICdhdXRvJ1wiXHJcbiAgICAgIFtwYWdlU2l6ZV09XCJ0YWJsZUNvbmZpZy5wYWdlU2l6ZSB8fCAxMFwiXHJcbiAgICAgIFtwYWdlTnVtYmVyXT1cInRhYmxlQ29uZmlnLnBhZ2VOdW1iZXIgfHwgMVwiXHJcbiAgICAgIFtwYWdlUHJvdmlkZXJdPVwidGFibGVDb25maWcucGFnZVByb3ZpZGVyXCJcclxuICAgICAgW2N1c3RvbVVybF09XCJ0YWJsZUNvbmZpZy5jdXN0b21VcmxcIlxyXG4gICAgICBbcXVpY2tGaWx0ZXJdPVwiXHJcbiAgICAgICAgdGFibGVDb25maWcucXVpY2tGaWx0ZXJzXHJcbiAgICAgICAgICA/IHsgcXVpY2tGaWx0ZXJzOiB0YWJsZUNvbmZpZy5xdWlja0ZpbHRlcnMgfVxyXG4gICAgICAgICAgOiB1bmRlZmluZWRcclxuICAgICAgXCJcclxuICAgICAgW2RlZnVsdFNvcnRdPVwidGFibGVDb25maWcuZGVmYXVsdFNvcnQgfHwgZGVmYXVsdFNvcnRcIlxyXG4gICAgICBbc29ydGluZ0J5XT1cInNvcnRPcHRpb24kIHwgYXN5bmNcIlxyXG4gICAgICBbZW50aXR5VHlwZV09XCInYWxsJ1wiXHJcbiAgICAgIFtmaWVsZHNdPVwidGFibGVDb25maWcuZmllbGRzXCJcclxuICAgICAgW3RhYmxlTW9kZV09XCJ2aWV3TW9kZSQgfCBhc3luY1wiXHJcbiAgICAgIFtjb21wb25lbnROYW1lXT1cInRhYmxlTW9kZT8uWydjb21wb25lbnROYW1lJ11cIlxyXG4gICAgICBbcmFuZ2VdPVwidGFibGVDb25maWc/LnJhbmdlXCJcclxuICAgICAgW2lzU2VhcmNoUGFnZV09XCJ0YWJsZUNvbmZpZz8uaXNTZWFyY2hQYWdlXCJcclxuICAgICAgW211bHRpU2VsZWN0Um93c109XCJ0YWJsZUNvbmZpZz8ubXVsdGlTZWxlY3RSb3dzXCJcclxuICAgICAgW2N1c3RvbUZpcnN0Um93XT1cInRhYmxlQ29uZmlnPy5jdXN0b21GaXJzdFJvd1wiXHJcbiAgICAgIFtoaWdobGlnaHRTZWxlY3RlZENhcmRdPVwidGFibGVDb25maWc/LmhpZ2hsaWdodFNlbGVjdGVkQ2FyZFwiXHJcbiAgICAgIFtzaG93QWN0aW9uc0FzTWVudV09XCJ0YWJsZUNvbmZpZz8uc2hvd0FjdGlvbnNBc01lbnVcIlxyXG4gICAgICBbZmlsdGVyUGFyYW1zXT1cInRhYmxlQ29uZmlnPy5maWx0ZXJQYXJhbXNcIlxyXG4gICAgICBbZm9ybWF0XT1cInRhYmxlQ29uZmlnPy5mb3JtYXQgfHwgJ01NTU0gZCwgeSdcIlxyXG4gICAgICBbcGFnZVNpemVzXT1cInRhYmxlQ29uZmlnPy5wYWdlU2l6ZXMgfHwgZGVmYXVsdFBhZ2VTaXplc1wiXHJcbiAgICAgIFtwcmVmaXhdPVwidGFibGVDb25maWcucHJlZml4IHx8ICcnXCJcclxuICAgICAgW3Jvd0N1cnNvcl09XCJ0cnVlXCJcclxuICAgICAgW3F1ZXJ5UGFyYW1dPVwidGFibGVDb25maWcucXVlcnlQYXJhbVwiXHJcbiAgICAgIFtjdXN0b21GaWx0ZXJzXT1cInNlYXJjaEFuZEZpbHRlcnMkIHwgYXN5bmNcIlxyXG4gICAgICBbdGFibGVBY3Rpb25zXT1cInRhYmxlQ29uZmlnLnRhYmxlQWN0aW9uc1wiXHJcbiAgICAgIFtyZXF1ZXN0QWN0aW9uc109XCJ0YWJsZUNvbmZpZz8ucmVxdWVzdEFjdGlvbnNcIlxyXG4gICAgICBbaGVhZGVyc109XCJ0YWJsZUNvbmZpZy5oZWFkZXJzXCJcclxuICAgICAgKG9uUm93U2VsZWN0ZWQpPVwib25Sb3dTZWxlY3RlZC5lbWl0KCRldmVudClcIlxyXG4gICAgICAob25Sb3dJbmRleFNlbGVjdGVkKT1cIm9uUm93SW5kZXhTZWxlY3RlZC5lbWl0KCRldmVudClcIlxyXG4gICAgICAoYWN0aW9uT25Sb3cpPVwiYWN0aW9uT25Sb3cuZW1pdCgkZXZlbnQpXCJcclxuICAgICAgKG9uR2V0dGluZ0RhdGEpPVwib25HZXR0aW5nRGF0YS5lbWl0KCRldmVudClcIlxyXG4gICAgICAob25Mb2FkKT1cIm9uTG9hZCgkZXZlbnQpXCJcclxuICAgICAgKG9uSW5pdGlhbGl6ZSk9XCJvbkluaXRpYWxpemUoJGV2ZW50KVwiXHJcbiAgICAgIChvbk11bHRpUm93U2VsZWN0ZWQpPVwib25NdWx0aVJvd1NlbGVjdGVkLmVtaXQoJGV2ZW50KVwiXHJcbiAgICAgIChvbkxvYWRpbmcpPVwib25Mb2FkaW5nLmVtaXQoJGV2ZW50KVwiXHJcbiAgICAgIChvblBhZ2UpPVwib25QYWdlQ2hhbmdlZCgkZXZlbnQpXCJcclxuICAgICAgW2lzTGVnYWN5TW9kZV09XCJmYWxzZVwiXHJcbiAgICAgIFtzaG93VG90YWxSZWNvcmRdPVwidHJ1ZVwiXHJcbiAgICAgIChzb3J0Q2hhbmdlZCk9XCJvblNvcnRDaGFuZ2VkKCRldmVudClcIlxyXG4gICAgPlxyXG4gICAgICA8bmctdGVtcGxhdGVcclxuICAgICAgICBlbXB0eVRlbXBsYXRlXHJcbiAgICAgICAgbGV0LWlzTG9hZGluZ1xyXG4gICAgICAgIGxldC1yb3dzPVwicm93c1wiXHJcbiAgICAgICAgbGV0LWluaXRpYWxpemVkPVwiaW5pdGlhbGl6ZWRcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImxvYWRpbmctZGF0YVwiICpuZ0lmPVwiaXNMb2FkaW5nICYmIGluaXRpYWxpemVkXCI+XHJcbiAgICAgICAgICA8bWF0LXNwaW5uZXI+PC9tYXQtc3Bpbm5lcj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBoLTUvNlwiXHJcbiAgICAgICAgICAqbmdJZj1cIiFpc0xvYWRpbmcgJiYgIXJvd3MubGVuZ3RoXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8YXBwLW5vLWRhdGEtZm91bmRcclxuICAgICAgICAgICAgY2xhc3M9XCJtdC00XCJcclxuICAgICAgICAgICAgW21lc3NhZ2VdPVwiZW1wdHlNZXNzYWdlXCJcclxuICAgICAgICAgID48L2FwcC1uby1kYXRhLWZvdW5kPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPC9jdHMtZHluYW1pYy10YWJsZT5cclxuXHJcbiAgICA8Y3RzLXRhYmxlXHJcbiAgICAgICpuZ0lmPVwidGFibGVDb25maWcuaXNEYXRhUHJvdmlkZWRcIlxyXG4gICAgICBbbmdDbGFzc109XCJzdHlsZUNsYXNzXCJcclxuICAgICAgW3Jvd3NdPVwicm93c1wiXHJcbiAgICAgIFt0b3RhbFJlY29yZHNdPVwidG90YWxSZWNvcmRzXCJcclxuICAgICAgW2NvbHVtbnNdPVwiZGlzcGxheWVkQ29sdW1ucyQgfCBhc3luY1wiXHJcbiAgICAgIFtyZXNwb25zaXZlQ29sdW1uc109XCJkaXNwbGF5ZWRDb2x1bW5zJCB8IGFzeW5jXCJcclxuICAgICAgW3Jvd0N1cnNvcl09XCJ0cnVlXCJcclxuICAgICAgW2Z1bGxXaWR0aF09XCJ0YWJsZUNvbmZpZy5mdWxsV2lkdGggfHwgJ2F1dG8nXCJcclxuICAgICAgW2VudGl0eVR5cGVdPVwiJ2FsbCdcIlxyXG4gICAgICBbcHJlZml4XT1cInRhYmxlQ29uZmlnLnByZWZpeCB8fCAnJ1wiXHJcbiAgICAgIFt0YWJsZU1vZGVdPVwidmlld01vZGUkIHwgYXN5bmNcIlxyXG4gICAgICBbY29tcG9uZW50TmFtZV09XCJ0YWJsZU1vZGU/LlsnY29tcG9uZW50TmFtZSddXCJcclxuICAgICAgW211bHRpU2VsZWN0Um93c109XCJ0YWJsZUNvbmZpZz8ubXVsdGlTZWxlY3RSb3dzXCJcclxuICAgICAgW2N1c3RvbUZpcnN0Um93XT1cInRhYmxlQ29uZmlnPy5jdXN0b21GaXJzdFJvd1wiXHJcbiAgICAgIFt0YWJsZUFjdGlvbnNdPVwidGFibGVDb25maWcudGFibGVBY3Rpb25zXCJcclxuICAgICAgW3Nob3dBY3Rpb25zQXNNZW51XT1cInRhYmxlQ29uZmlnPy5zaG93QWN0aW9uc0FzTWVudVwiXHJcbiAgICAgIFtkZWZ1bHRTb3J0XT1cInRhYmxlQ29uZmlnLmRlZmF1bHRTb3J0IHx8IGRlZmF1bHRTb3J0XCJcclxuICAgICAgW2Zvcm1hdF09XCJ0YWJsZUNvbmZpZz8uZm9ybWF0IHx8ICdNTU1NIGQsIHknXCJcclxuICAgICAgW2hpZ2hsaWdodFNlbGVjdGVkQ2FyZF09XCJ0YWJsZUNvbmZpZz8uaGlnaGxpZ2h0U2VsZWN0ZWRDYXJkXCJcclxuICAgICAgKG9uUm93U2VsZWN0ZWQpPVwib25Sb3dTZWxlY3RlZC5lbWl0KCRldmVudClcIlxyXG4gICAgICAob25Sb3dJbmRleFNlbGVjdGVkKT1cIm9uUm93SW5kZXhTZWxlY3RlZC5lbWl0KCRldmVudClcIlxyXG4gICAgICAob25NdWx0aVJvd1NlbGVjdGVkKT1cIm9uTXVsdGlSb3dTZWxlY3RlZC5lbWl0KCRldmVudClcIlxyXG4gICAgICAoYWN0aW9uT25Sb3cpPVwiYWN0aW9uT25Sb3cuZW1pdCgkZXZlbnQpXCJcclxuICAgICAgKG9uU29ydGluZyk9XCJvblNvcnRDaGFuZ2VkKCRldmVudClcIlxyXG4gICAgPjwvY3RzLXRhYmxlPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
@@ -49,7 +49,7 @@ export class PageSizesListComponent {
49
49
  }
50
50
  }
51
51
  PageSizesListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: PageSizesListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
52
- PageSizesListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: PageSizesListComponent, selector: "ndf-page-sizes-list", inputs: { pageSizes: "pageSizes", selectedPageSize: "selectedPageSize" }, outputs: { onChangePageSize: "onChangePageSize" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"tablePageSizesWrapper\" *ngIf=\"pageSizes?.length\">\r\n\t<span class=\"tablePageSizeLabel\">\r\n\t\t{{ 'tablePageSizes' | translate }}\r\n\t</span>\r\n\t<ng-select\r\n\t\tclass=\"tablePageSizesList\"\r\n\t\t[dropdownPosition]=\"'top'\"\r\n\t\t[items]=\"pageSizes\"\r\n\t\tbindValue=\"size\"\r\n\t\tbindLabel=\"label\"\r\n\t\t[(ngModel)]=\"selectedPageSize\"\r\n\t\t(change)=\"changePageSize()\"\r\n\t>\r\n\t</ng-select>\r\n</div>\r\n", styles: [".tablePageSizesWrapper{display:flex;grid-column-gap:12px;column-gap:12px;align-items:center}.tablePageSizesWrapper .tablePageSizesList{width:100px}\n"], components: [{ type: i1.NgSelectComponent, selector: "ng-select", inputs: ["markFirst", "dropdownPosition", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "bufferAmount", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd", "bindLabel", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "virtualScroll", "openOnEnter", "appendTo", "bindValue", "appearance", "maxSelectedItems", "groupBy", "groupValue", "tabIndex", "typeahead"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], pipes: { "translate": i4.TranslatePipe } });
52
+ PageSizesListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: PageSizesListComponent, selector: "ndf-page-sizes-list", inputs: { pageSizes: "pageSizes", selectedPageSize: "selectedPageSize" }, outputs: { onChangePageSize: "onChangePageSize" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"tablePageSizesWrapper\" *ngIf=\"pageSizes?.length\">\r\n\t<span class=\"tablePageSizeLabel\">\r\n\t\t{{ 'tablePageSizes' | translate }}\r\n\t</span>\r\n\t<ng-select\r\n\t\tclass=\"tablePageSizesList\"\r\n\t\t[dropdownPosition]=\"'top'\"\r\n\t\t[items]=\"pageSizes\"\r\n\t\tbindValue=\"size\"\r\n\t\tbindLabel=\"label\"\r\n\t\t[(ngModel)]=\"selectedPageSize\"\r\n\t\t(change)=\"changePageSize()\"\r\n [searchable]=\"false\"\r\n\t>\r\n\t</ng-select>\r\n\r\n</div>\r\n", styles: [".tablePageSizesWrapper{display:flex;grid-column-gap:12px;column-gap:12px;align-items:center}.tablePageSizesWrapper .tablePageSizesList{width:100px}.tablePageSizesWrapper .ng-select-container .ng-value-container .ng-value{color:var(--ng-select-color, inherit)}\n"], components: [{ type: i1.NgSelectComponent, selector: "ng-select", inputs: ["markFirst", "dropdownPosition", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "bufferAmount", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd", "bindLabel", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "virtualScroll", "openOnEnter", "appendTo", "bindValue", "appearance", "maxSelectedItems", "groupBy", "groupValue", "tabIndex", "typeahead"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], pipes: { "translate": i4.TranslatePipe } });
53
53
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: PageSizesListComponent, decorators: [{
54
54
  type: Component,
55
55
  args: [{
@@ -64,4 +64,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
64
64
  }], onChangePageSize: [{
65
65
  type: Output
66
66
  }] } });
67
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS1zaXplcy1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL251eGVvLWRldmVsb3BtZW50LWZyYW1ld29yay9zcmMvbGliL2NvbXBvbmVudHMvdGFibGVzL3RhYmxlL3BhZ2Utc2l6ZXMtbGlzdC9wYWdlLXNpemVzLWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnV4ZW8tZGV2ZWxvcG1lbnQtZnJhbWV3b3JrL3NyYy9saWIvY29tcG9uZW50cy90YWJsZXMvdGFibGUvcGFnZS1zaXplcy1saXN0L3BhZ2Utc2l6ZXMtbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQWEsTUFBTSxFQUFpQixNQUFNLGVBQWUsQ0FBQzs7Ozs7O0FBQ2pHLE1BQU0sU0FBUyxHQUFzQztJQUNwRDtRQUNDLEtBQUssRUFBRSxHQUFHO1FBQ1YsSUFBSSxFQUFFLENBQUM7S0FDUDtJQUNEO1FBQ0MsS0FBSyxFQUFFLElBQUk7UUFDWCxJQUFJLEVBQUUsRUFBRTtLQUNSO0lBQ0Q7UUFDQyxLQUFLLEVBQUUsSUFBSTtRQUNYLElBQUksRUFBRSxFQUFFO0tBQ1I7SUFDRDtRQUNDLEtBQUssRUFBRSxJQUFJO1FBQ1gsSUFBSSxFQUFFLEVBQUU7S0FDUjtJQUNEO1FBQ0MsS0FBSyxFQUFFLElBQUk7UUFDWCxJQUFJLEVBQUUsRUFBRTtLQUNSO0NBQ0QsQ0FBQztBQU9GLE1BQU0sT0FBTyxzQkFBc0I7SUFZbEM7UUFYUyxjQUFTLEdBQTJDLFNBQVMsQ0FBQztRQUMvRCxVQUFLLEdBQUcsRUFBRSxDQUFDO1FBU1QscUJBQWdCLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztJQUN6QyxDQUFDO0lBVGhCLElBQWEsZ0JBQWdCLENBQUMsS0FBYTtRQUMxQyxJQUFJLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFBSSxnQkFBZ0I7UUFDbkIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ25CLENBQUM7SUFLRCxXQUFXLENBQUMsT0FBc0I7O1FBQ2pDLElBQUksQ0FBQSxNQUFBLE9BQU8sQ0FBQyxTQUFTLDBDQUFFLFlBQVksTUFBSSxNQUFBLE9BQU8sQ0FBQyxnQkFBZ0IsMENBQUUsWUFBWSxDQUFBLEVBQUU7WUFDOUUsSUFBSSxDQUFDLGdCQUFnQixHQUFHLENBQUMsSUFBSSxDQUFDLGdCQUFnQixLQUFJLE1BQUEsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsMENBQUUsSUFBSSxDQUFBLElBQUksRUFBRSxDQUFDO1NBQ2hGO0lBQ0YsQ0FBQztJQUNELGNBQWM7UUFDYixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ25ELENBQUM7O29IQXJCVyxzQkFBc0I7d0dBQXRCLHNCQUFzQiw2TUM3Qm5DLGljQWVBOzRGRGNhLHNCQUFzQjtrQkFMbEMsU0FBUzttQkFBQztvQkFDVixRQUFRLEVBQUUscUJBQXFCO29CQUMvQixXQUFXLEVBQUUsa0NBQWtDO29CQUMvQyxTQUFTLEVBQUUsQ0FBQyxrQ0FBa0MsQ0FBQztpQkFDL0M7MEVBRVMsU0FBUztzQkFBakIsS0FBSztnQkFFTyxnQkFBZ0I7c0JBQTVCLEtBQUs7Z0JBUUksZ0JBQWdCO3NCQUF6QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5jb25zdCBQQUdFX1NJWkU6IHsgbGFiZWw6IHN0cmluZzsgc2l6ZTogbnVtYmVyIH1bXSA9IFtcclxuXHR7XHJcblx0XHRsYWJlbDogJzUnLFxyXG5cdFx0c2l6ZTogNVxyXG5cdH0sXHJcblx0e1xyXG5cdFx0bGFiZWw6ICcxMCcsXHJcblx0XHRzaXplOiAxMFxyXG5cdH0sXHJcblx0e1xyXG5cdFx0bGFiZWw6ICcxNScsXHJcblx0XHRzaXplOiAxNVxyXG5cdH0sXHJcblx0e1xyXG5cdFx0bGFiZWw6ICcyNScsXHJcblx0XHRzaXplOiAyNVxyXG5cdH0sXHJcblx0e1xyXG5cdFx0bGFiZWw6ICc1MCcsXHJcblx0XHRzaXplOiA1MFxyXG5cdH1cclxuXTtcclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHNlbGVjdG9yOiAnbmRmLXBhZ2Utc2l6ZXMtbGlzdCcsXHJcblx0dGVtcGxhdGVVcmw6ICcuL3BhZ2Utc2l6ZXMtbGlzdC5jb21wb25lbnQuaHRtbCcsXHJcblx0c3R5bGVVcmxzOiBbJy4vcGFnZS1zaXplcy1saXN0LmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFBhZ2VTaXplc0xpc3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xyXG5cdEBJbnB1dCgpIHBhZ2VTaXplczogQXJyYXk8eyBsYWJlbDogc3RyaW5nOyBzaXplOiBudW1iZXIgfT4gPSBQQUdFX1NJWkU7XHJcblx0cHJpdmF0ZSBfc2l6ZSA9IDEwO1xyXG5cdEBJbnB1dCgpIHNldCBzZWxlY3RlZFBhZ2VTaXplKHZhbHVlOiBudW1iZXIpIHtcclxuXHRcdHRoaXMuX3NpemUgPSBOdW1iZXIodmFsdWUpO1xyXG5cdH1cclxuXHJcblx0Z2V0IHNlbGVjdGVkUGFnZVNpemUoKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5fc2l6ZTtcclxuXHR9XHJcblxyXG5cdEBPdXRwdXQoKSBvbkNoYW5nZVBhZ2VTaXplID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XHJcblx0Y29uc3RydWN0b3IoKSB7fVxyXG5cclxuXHRuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcblx0XHRpZiAoY2hhbmdlcy5wYWdlU2l6ZXM/LmN1cnJlbnRWYWx1ZSB8fCBjaGFuZ2VzLnNlbGVjdGVkUGFnZVNpemU/LmN1cnJlbnRWYWx1ZSkge1xyXG5cdFx0XHR0aGlzLnNlbGVjdGVkUGFnZVNpemUgPSArdGhpcy5zZWxlY3RlZFBhZ2VTaXplIHx8IHRoaXMucGFnZVNpemVzWzBdPy5zaXplIHx8IDEwO1xyXG5cdFx0fVxyXG5cdH1cclxuXHRjaGFuZ2VQYWdlU2l6ZSgpIHtcclxuXHRcdHRoaXMub25DaGFuZ2VQYWdlU2l6ZS5lbWl0KHRoaXMuc2VsZWN0ZWRQYWdlU2l6ZSk7XHJcblx0fVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJ0YWJsZVBhZ2VTaXplc1dyYXBwZXJcIiAqbmdJZj1cInBhZ2VTaXplcz8ubGVuZ3RoXCI+XHJcblx0PHNwYW4gY2xhc3M9XCJ0YWJsZVBhZ2VTaXplTGFiZWxcIj5cclxuXHRcdHt7ICd0YWJsZVBhZ2VTaXplcycgfCB0cmFuc2xhdGUgfX1cclxuXHQ8L3NwYW4+XHJcblx0PG5nLXNlbGVjdFxyXG5cdFx0Y2xhc3M9XCJ0YWJsZVBhZ2VTaXplc0xpc3RcIlxyXG5cdFx0W2Ryb3Bkb3duUG9zaXRpb25dPVwiJ3RvcCdcIlxyXG5cdFx0W2l0ZW1zXT1cInBhZ2VTaXplc1wiXHJcblx0XHRiaW5kVmFsdWU9XCJzaXplXCJcclxuXHRcdGJpbmRMYWJlbD1cImxhYmVsXCJcclxuXHRcdFsobmdNb2RlbCldPVwic2VsZWN0ZWRQYWdlU2l6ZVwiXHJcblx0XHQoY2hhbmdlKT1cImNoYW5nZVBhZ2VTaXplKClcIlxyXG5cdD5cclxuXHQ8L25nLXNlbGVjdD5cclxuPC9kaXY+XHJcbiJdfQ==
67
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS1zaXplcy1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL251eGVvLWRldmVsb3BtZW50LWZyYW1ld29yay9zcmMvbGliL2NvbXBvbmVudHMvdGFibGVzL3RhYmxlL3BhZ2Utc2l6ZXMtbGlzdC9wYWdlLXNpemVzLWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnV4ZW8tZGV2ZWxvcG1lbnQtZnJhbWV3b3JrL3NyYy9saWIvY29tcG9uZW50cy90YWJsZXMvdGFibGUvcGFnZS1zaXplcy1saXN0L3BhZ2Utc2l6ZXMtbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQWEsTUFBTSxFQUFpQixNQUFNLGVBQWUsQ0FBQzs7Ozs7O0FBQ2pHLE1BQU0sU0FBUyxHQUFzQztJQUNwRDtRQUNDLEtBQUssRUFBRSxHQUFHO1FBQ1YsSUFBSSxFQUFFLENBQUM7S0FDUDtJQUNEO1FBQ0MsS0FBSyxFQUFFLElBQUk7UUFDWCxJQUFJLEVBQUUsRUFBRTtLQUNSO0lBQ0Q7UUFDQyxLQUFLLEVBQUUsSUFBSTtRQUNYLElBQUksRUFBRSxFQUFFO0tBQ1I7SUFDRDtRQUNDLEtBQUssRUFBRSxJQUFJO1FBQ1gsSUFBSSxFQUFFLEVBQUU7S0FDUjtJQUNEO1FBQ0MsS0FBSyxFQUFFLElBQUk7UUFDWCxJQUFJLEVBQUUsRUFBRTtLQUNSO0NBQ0QsQ0FBQztBQU9GLE1BQU0sT0FBTyxzQkFBc0I7SUFjbEM7UUFiUyxjQUFTLEdBQTJDLFNBQVMsQ0FBQztRQUcvRCxVQUFLLEdBQUcsRUFBRSxDQUFDO1FBU1QscUJBQWdCLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztJQUN6QyxDQUFDO0lBVGhCLElBQWEsZ0JBQWdCLENBQUMsS0FBYTtRQUMxQyxJQUFJLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFBSSxnQkFBZ0I7UUFDbkIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ25CLENBQUM7SUFLRCxXQUFXLENBQUMsT0FBc0I7O1FBQ2pDLElBQUksQ0FBQSxNQUFBLE9BQU8sQ0FBQyxTQUFTLDBDQUFFLFlBQVksTUFBSSxNQUFBLE9BQU8sQ0FBQyxnQkFBZ0IsMENBQUUsWUFBWSxDQUFBLEVBQUU7WUFDOUUsSUFBSSxDQUFDLGdCQUFnQixHQUFHLENBQUMsSUFBSSxDQUFDLGdCQUFnQixLQUFJLE1BQUEsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsMENBQUUsSUFBSSxDQUFBLElBQUksRUFBRSxDQUFDO1NBQ2hGO0lBQ0YsQ0FBQztJQUNELGNBQWM7UUFDYixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ25ELENBQUM7O29IQXZCVyxzQkFBc0I7d0dBQXRCLHNCQUFzQiw2TUM3Qm5DLG1lQWlCQTs0RkRZYSxzQkFBc0I7a0JBTGxDLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLHFCQUFxQjtvQkFDL0IsV0FBVyxFQUFFLGtDQUFrQztvQkFDL0MsU0FBUyxFQUFFLENBQUMsa0NBQWtDLENBQUM7aUJBQy9DOzBFQUVTLFNBQVM7c0JBQWpCLEtBQUs7Z0JBSU8sZ0JBQWdCO3NCQUE1QixLQUFLO2dCQVFJLGdCQUFnQjtzQkFBekIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuY29uc3QgUEFHRV9TSVpFOiB7IGxhYmVsOiBzdHJpbmc7IHNpemU6IG51bWJlciB9W10gPSBbXHJcblx0e1xyXG5cdFx0bGFiZWw6ICc1JyxcclxuXHRcdHNpemU6IDVcclxuXHR9LFxyXG5cdHtcclxuXHRcdGxhYmVsOiAnMTAnLFxyXG5cdFx0c2l6ZTogMTBcclxuXHR9LFxyXG5cdHtcclxuXHRcdGxhYmVsOiAnMTUnLFxyXG5cdFx0c2l6ZTogMTVcclxuXHR9LFxyXG5cdHtcclxuXHRcdGxhYmVsOiAnMjUnLFxyXG5cdFx0c2l6ZTogMjVcclxuXHR9LFxyXG5cdHtcclxuXHRcdGxhYmVsOiAnNTAnLFxyXG5cdFx0c2l6ZTogNTBcclxuXHR9XHJcbl07XHJcblxyXG5AQ29tcG9uZW50KHtcclxuXHRzZWxlY3RvcjogJ25kZi1wYWdlLXNpemVzLWxpc3QnLFxyXG5cdHRlbXBsYXRlVXJsOiAnLi9wYWdlLXNpemVzLWxpc3QuY29tcG9uZW50Lmh0bWwnLFxyXG5cdHN0eWxlVXJsczogWycuL3BhZ2Utc2l6ZXMtbGlzdC5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQYWdlU2l6ZXNMaXN0Q29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcclxuXHRASW5wdXQoKSBwYWdlU2l6ZXM6IEFycmF5PHsgbGFiZWw6IHN0cmluZzsgc2l6ZTogbnVtYmVyIH0+ID0gUEFHRV9TSVpFO1xyXG5cclxuXHJcblx0cHJpdmF0ZSBfc2l6ZSA9IDEwO1xyXG5cdEBJbnB1dCgpIHNldCBzZWxlY3RlZFBhZ2VTaXplKHZhbHVlOiBudW1iZXIpIHtcclxuXHRcdHRoaXMuX3NpemUgPSBOdW1iZXIodmFsdWUpO1xyXG5cdH1cclxuXHJcblx0Z2V0IHNlbGVjdGVkUGFnZVNpemUoKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5fc2l6ZTtcclxuXHR9XHJcblxyXG5cdEBPdXRwdXQoKSBvbkNoYW5nZVBhZ2VTaXplID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XHJcblx0Y29uc3RydWN0b3IoKSB7fVxyXG5cclxuXHRuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcblx0XHRpZiAoY2hhbmdlcy5wYWdlU2l6ZXM/LmN1cnJlbnRWYWx1ZSB8fCBjaGFuZ2VzLnNlbGVjdGVkUGFnZVNpemU/LmN1cnJlbnRWYWx1ZSkge1xyXG5cdFx0XHR0aGlzLnNlbGVjdGVkUGFnZVNpemUgPSArdGhpcy5zZWxlY3RlZFBhZ2VTaXplIHx8IHRoaXMucGFnZVNpemVzWzBdPy5zaXplIHx8IDEwO1xyXG5cdFx0fVxyXG5cdH1cclxuXHRjaGFuZ2VQYWdlU2l6ZSgpIHtcclxuXHRcdHRoaXMub25DaGFuZ2VQYWdlU2l6ZS5lbWl0KHRoaXMuc2VsZWN0ZWRQYWdlU2l6ZSk7XHJcblx0fVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJ0YWJsZVBhZ2VTaXplc1dyYXBwZXJcIiAqbmdJZj1cInBhZ2VTaXplcz8ubGVuZ3RoXCI+XHJcblx0PHNwYW4gY2xhc3M9XCJ0YWJsZVBhZ2VTaXplTGFiZWxcIj5cclxuXHRcdHt7ICd0YWJsZVBhZ2VTaXplcycgfCB0cmFuc2xhdGUgfX1cclxuXHQ8L3NwYW4+XHJcblx0PG5nLXNlbGVjdFxyXG5cdFx0Y2xhc3M9XCJ0YWJsZVBhZ2VTaXplc0xpc3RcIlxyXG5cdFx0W2Ryb3Bkb3duUG9zaXRpb25dPVwiJ3RvcCdcIlxyXG5cdFx0W2l0ZW1zXT1cInBhZ2VTaXplc1wiXHJcblx0XHRiaW5kVmFsdWU9XCJzaXplXCJcclxuXHRcdGJpbmRMYWJlbD1cImxhYmVsXCJcclxuXHRcdFsobmdNb2RlbCldPVwic2VsZWN0ZWRQYWdlU2l6ZVwiXHJcblx0XHQoY2hhbmdlKT1cImNoYW5nZVBhZ2VTaXplKClcIlxyXG4gICAgW3NlYXJjaGFibGVdPVwiZmFsc2VcIlxyXG5cdD5cclxuXHQ8L25nLXNlbGVjdD5cclxuXHJcbjwvZGl2PlxyXG4iXX0=
@@ -99,4 +99,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
99
99
  type: Injectable,
100
100
  args: [{ providedIn: 'root' }]
101
101
  }] });
102
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLXJlbmRlcmVyLXJlZ2lzdHJ5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsvc3JjL2xpYi9jb3JlL3NlcnZpY2VzL2NvbHVtbi1yZW5kZXJlci9jb2x1bW4tcmVuZGVyZXItcmVnaXN0cnkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFRLE1BQU0sZUFBZSxDQUFDOztBQWVqRCxNQUFNLE9BQU8sNkJBQTZCO0lBRDFDO1FBRVMsYUFBUSxHQUFHLElBQUksR0FBRyxFQUFnQyxDQUFDO0tBd0czRDtJQXBHQSxRQUFRLENBQUMsT0FBc0Q7UUFDOUQsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQzNCLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztTQUN6QzthQUFNO1lBQ04sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUNuQjtJQUNGLENBQUM7SUFFRDs7O09BR0c7SUFDSCxHQUFHLENBQUMsSUFBWTtRQUNmLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsTUFBTTtRQUNMLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVEOztPQUVHO0lBQ0gsUUFBUSxDQUFDLEdBQVc7UUFDbkIsT0FBTyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFBLEdBQUcsYUFBSCxH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bSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5leHBvcnQgdHlwZSBDYXRlZ29yeVR5cGUgPSAnY29tbW9uJyB8ICdjdXN0b20nO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDb2x1bW5UeXBlRGVmaW5pdGlvbiB7XHJcblx0bmFtZTogc3RyaW5nO1xyXG5cdHR5cGU6IHN0cmluZztcclxuXHRhcHA/OiBzdHJpbmc7XHJcblx0ZGVzY3JpcHRpb24/OiBzdHJpbmc7XHJcblx0aWNvbj86IHN0cmluZztcclxuXHRjb21wb25lbnQ6IFR5cGU8YW55PjtcclxuXHRjYXRlZ29yeTogQ2F0ZWdvcnlUeXBlO1xyXG59XHJcblxyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxyXG5leHBvcnQgY2xhc3MgQ29sdW1uUmVuZGVyZXJSZWdpc3RyeVNlcnZpY2Uge1xyXG5cdHByaXZhdGUgcmVnaXN0cnkgPSBuZXcgTWFwPHN0cmluZywgQ29sdW1uVHlwZURlZmluaXRpb24+KCk7XHJcblxyXG5cdHJlZ2lzdGVyKGRlZmluaXRpb246IENvbHVtblR5cGVEZWZpbml0aW9uKTogdm9pZDtcclxuXHRyZWdpc3RlcihkZWZpbml0aW9uOiBDb2x1bW5UeXBlRGVmaW5pdGlvbltdKTogdm9pZDtcclxuXHRyZWdpc3Rlcihjb2x1bW5zOiBDb2x1bW5UeXBlRGVmaW5pdGlvbiB8IENvbHVtblR5cGVEZWZpbml0aW9uW10pOiB2b2lkIHtcclxuXHRcdGlmIChBcnJheS5pc0FycmF5KGNvbHVtbnMpKSB7XHJcblx0XHRcdGNvbHVtbnMuZm9yRWFjaCgoZGVmKSA9PiB0aGlzLl9zZXQoZGVmKSk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHR0aGlzLl9zZXQoY29sdW1ucyk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBSZXRyaWV2ZXMgYSBjb2x1bW4gdHlwZSBkZWZpbml0aW9uIGJ5IGl0cyB1bmlxdWUgdHlwZSBrZXkuXHJcblx0ICogQHBhcmFtIHR5cGUgVGhlIGNvbHVtbiB0eXBlIGlkZW50aWZpZXJcclxuXHQgKi9cclxuXHRnZXQodHlwZTogc3RyaW5nKTogQ29sdW1uVHlwZURlZmluaXRpb24gfCB1bmRlZmluZWQge1xyXG5cdFx0cmV0dXJuIHRoaXMucmVnaXN0cnkuZ2V0KHR5cGUpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogUmV0dXJucyBhbGwgcmVnaXN0ZXJlZCBjb2x1bW4gdHlwZSBkZWZpbml0aW9ucy5cclxuXHQgKi9cclxuXHRnZXRBbGwoKTogQ29sdW1uVHlwZURlZmluaXRpb25bXSB7XHJcblx0XHRyZXR1cm4gQXJyYXkuZnJvbSh0aGlzLnJlZ2lzdHJ5LnZhbHVlcygpKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEdldHMgY29sdW1uIHR5cGVzIGZpbHRlcmVkIGJ5IGFwcFxyXG5cdCAqL1xyXG5cdGdldEJ5QXBwKGFwcDogc3RyaW5nKTogQ29sdW1uVHlwZURlZmluaXRpb25bXSB7XHJcblx0XHRyZXR1cm4gdGhpcy5nZXRBbGwoKS5maWx0ZXIoKGRlZikgPT4gZGVmPy5hcHAgPT09IGFwcCk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBSZXR1cm5zIG9ubHkgdGhlIGNvbXBvbmVudCBhc3NvY2lhdGVkIHdpdGggYSBjb2x1bW4gdHlwZS5cclxuXHQgKiBAcGFyYW0gdHlwZSBUaGUgY29sdW1uIHR5cGUgaWRlbnRpZmllclxyXG5cdCAqL1xyXG5cdGdldENvbXBvbmVudCh0eXBlOiBzdHJpbmcpOiBUeXBlPHVua25vd24+IHwgdW5kZWZpbmVkIHtcclxuXHRcdHJldHVybiB0aGlzLnJlZ2lzdHJ5LmdldCh0eXBlKT8uY29tcG9uZW50O1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogR2V0cyBhbGwgY29sdW1uIHR5cGVzIGZpbHRlcmVkIGJ5IGNhdGVnb3J5XHJcblx0ICovXHJcblx0Z2V0QnlDYXRlZ29yeShjYXRlZ29yeTogc3RyaW5nKTogQ29sdW1uVHlwZURlZmluaXRpb25bXSB7XHJcblx0XHRyZXR1cm4gQXJyYXkuZnJvbSh0aGlzLnJlZ2lzdHJ5LnZhbHVlcygpKS5maWx0ZXIoKGRlZikgPT4gZGVmLmNhdGVnb3J5ID09PSBjYXRlZ29yeSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBSZXR1cm5zIGFsbCB1bmlxdWUgY2F0ZWdvcmllc1xyXG5cdCAqL1xyXG5cdGdldENhdGVnb3JpZXMoKTogc3RyaW5nW10ge1xyXG5cdFx0Y29uc3QgY2F0ZWdvcmllcyA9IEFycmF5LmZyb20odGhpcy5yZWdpc3RyeS52YWx1ZXMoKSkubWFwKChkZWYpID0+IGRlZi5jYXRlZ29yeSk7XHJcblx0XHRyZXR1cm4gWy4uLm5ldyBTZXQoY2F0ZWdvcmllcyldLnNvcnQoKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFJldHVybnMgY29sdW1uIHR5cGVzIGdyb3VwZWQgYnkgY2F0ZWdvcnlcclxuXHQgKi9cclxuXHRnZXRHcm91cGVkQnlDYXRlZ29yeSgpOiBSZWNvcmQ8c3RyaW5nLCBDb2x1bW5UeXBlRGVmaW5pdGlvbltdPiB7XHJcblx0XHRjb25zdCBncm91cGVkOiBSZWNvcmQ8c3RyaW5nLCBDb2x1bW5UeXBlRGVmaW5pdGlvbltdPiA9IHt9O1xyXG5cclxuXHRcdHRoaXMucmVnaXN0cnkuZm9yRWFjaCgoZGVmaW5pdGlvbikgPT4ge1xyXG5cdFx0XHRpZiAoIWdyb3VwZWRbZGVmaW5pdGlvbi5jYXRlZ29yeV0pIHtcclxuXHRcdFx0XHRncm91cGVkW2RlZmluaXRpb24uY2F0ZWdvcnldID0gW107XHJcblx0XHRcdH1cclxuXHRcdFx0Z3JvdXBlZFtkZWZpbml0aW9uLmNhdGVnb3J5XS5wdXNoKGRlZmluaXRpb24pO1xyXG5cdFx0fSk7XHJcblxyXG5cdFx0cmV0dXJuIGdyb3VwZWQ7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBHZXRzIGNvbHVtbiB0eXBlcyBmaWx0ZXJlZCBieSBtdWx0aXBsZSBjYXRlZ29yaWVzXHJcblx0ICovXHJcblx0Z2V0QnlDYXRlZ29yaWVzKGNhdGVnb3JpZXM6IHN0cmluZ1tdKTogQ29sdW1uVHlwZURlZmluaXRpb25bXSB7XHJcblx0XHRyZXR1cm4gQXJyYXkuZnJvbSh0aGlzLnJlZ2lzdHJ5LnZhbHVlcygpKS5maWx0ZXIoKGRlZikgPT4gY2F0ZWdvcmllcy5pbmNsdWRlcyhkZWYuY2F0ZWdvcnkpKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIENoZWNrcyBpZiBhIGNvbHVtbiB0eXBlIGV4aXN0c1xyXG5cdCAqL1xyXG5cdGhhcyh0eXBlOiBzdHJpbmcpOiBib29sZWFuIHtcclxuXHRcdHJldHVybiB0aGlzLnJlZ2lzdHJ5Lmhhcyh0eXBlKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIENsZWFycyBhbGwgcmVnaXN0ZXJlZCBjb2x1bW4gdHlwZXMgKG1haW5seSBmb3IgdGVzdGluZyBvciBob3QgcmVsb2FkIHNjZW5hcmlvcykuXHJcblx0ICovXHJcblx0Y2xlYXIoKTogdm9pZCB7XHJcblx0XHR0aGlzLnJlZ2lzdHJ5LmNsZWFyKCk7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIF9zZXQoZGVmaW5pdGlvbjogQ29sdW1uVHlwZURlZmluaXRpb24pOiB2b2lkIHtcclxuXHRcdGlmICghZGVmaW5pdGlvbi50eXBlIHx8ICFkZWZpbml0aW9uLm5hbWUpIHtcclxuXHRcdFx0dGhyb3cgbmV3IEVycm9yKCdbQ29sdW1uUmVuZGVyZXJSZWdpc3RyeV0gVHlwZSBhbmQgbmFtZSBhcmUgcmVxdWlyZWQgZmllbGRzJyk7XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKHRoaXMucmVnaXN0cnkuaGFzKGRlZmluaXRpb24udHlwZSkpIHtcclxuXHRcdFx0Y29uc29sZS53YXJuKGBbQ29sdW1uUmVuZGVyZXJSZWdpc3RyeV0gVHlwZSAnJHtkZWZpbml0aW9uLnR5cGV9JyBpcyBhbHJlYWR5IHJlZ2lzdGVyZWQuIE92ZXJ3cml0aW5nLi4uYCk7XHJcblx0XHR9XHJcblx0XHR0aGlzLnJlZ2lzdHJ5LnNldChkZWZpbml0aW9uLnR5cGUsIGRlZmluaXRpb24pO1xyXG5cdH1cclxufVxyXG4iXX0=
102
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLXJlbmRlcmVyLXJlZ2lzdHJ5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsvc3JjL2xpYi9jb3JlL3NlcnZpY2VzL2NvbHVtbi1yZW5kZXJlci9jb2x1bW4tcmVuZGVyZXItcmVnaXN0cnkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFRLE1BQU0sZUFBZSxDQUFDOztBQWVqRCxNQUFNLE9BQU8sNkJBQTZCO0lBRDFDO1FBRVUsYUFBUSxHQUFHLElBQUksR0FBRyxFQUFnQyxDQUFDO0tBaUg1RDtJQTlHQyxRQUFRLENBQUMsT0FBc0Q7UUFDN0QsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQzFCLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztTQUMxQzthQUFNO1lBQ0wsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUNwQjtJQUNILENBQUM7SUFFRDs7O09BR0c7SUFDSCxHQUFHLENBQUMsSUFBWTtRQUNkLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsTUFBTTtRQUNKLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsUUFBUSxDQUFDLEdBQVc7UUFDbEIsT0FBTyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFBLEdBQUcsYUFBSCxH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ZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5leHBvcnQgdHlwZSBDYXRlZ29yeVR5cGUgPSAnY29tbW9uJyB8ICdjdXN0b20nO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDb2x1bW5UeXBlRGVmaW5pdGlvbiB7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG4gIHR5cGU6IHN0cmluZztcclxuICBhcHA/OiBzdHJpbmc7XHJcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XHJcbiAgaWNvbj86IHN0cmluZztcclxuICBjb21wb25lbnQ6IFR5cGU8YW55PjtcclxuICBjYXRlZ29yeTogQ2F0ZWdvcnlUeXBlO1xyXG59XHJcblxyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxyXG5leHBvcnQgY2xhc3MgQ29sdW1uUmVuZGVyZXJSZWdpc3RyeVNlcnZpY2Uge1xyXG4gIHByaXZhdGUgcmVnaXN0cnkgPSBuZXcgTWFwPHN0cmluZywgQ29sdW1uVHlwZURlZmluaXRpb24+KCk7XHJcblxyXG4gIHJlZ2lzdGVyKGNvbHVtbnM6IENvbHVtblR5cGVEZWZpbml0aW9uIHwgQ29sdW1uVHlwZURlZmluaXRpb25bXSk6IHZvaWQ7XHJcbiAgcmVnaXN0ZXIoY29sdW1uczogQ29sdW1uVHlwZURlZmluaXRpb24gfCBDb2x1bW5UeXBlRGVmaW5pdGlvbltdKTogdm9pZCB7XHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheShjb2x1bW5zKSkge1xyXG4gICAgICBjb2x1bW5zLmZvckVhY2goKGRlZikgPT4gdGhpcy5fc2V0KGRlZikpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5fc2V0KGNvbHVtbnMpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmVzIGEgY29sdW1uIHR5cGUgZGVmaW5pdGlvbiBieSBpdHMgdW5pcXVlIHR5cGUga2V5LlxyXG4gICAqIEBwYXJhbSB0eXBlIFRoZSBjb2x1bW4gdHlwZSBpZGVudGlmaWVyXHJcbiAgICovXHJcbiAgZ2V0KHR5cGU6IHN0cmluZyk6IENvbHVtblR5cGVEZWZpbml0aW9uIHwgdW5kZWZpbmVkIHtcclxuICAgIHJldHVybiB0aGlzLnJlZ2lzdHJ5LmdldCh0eXBlKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgYWxsIHJlZ2lzdGVyZWQgY29sdW1uIHR5cGUgZGVmaW5pdGlvbnMuXHJcbiAgICovXHJcbiAgZ2V0QWxsKCk6IENvbHVtblR5cGVEZWZpbml0aW9uW10ge1xyXG4gICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5yZWdpc3RyeS52YWx1ZXMoKSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXRzIGNvbHVtbiB0eXBlcyBmaWx0ZXJlZCBieSBhcHBcclxuICAgKi9cclxuICBnZXRCeUFwcChhcHA6IHN0cmluZyk6IENvbHVtblR5cGVEZWZpbml0aW9uW10ge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0QWxsKCkuZmlsdGVyKChkZWYpID0+IGRlZj8uYXBwID09PSBhcHApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyBvbmx5IHRoZSBjb21wb25lbnQgYXNzb2NpYXRlZCB3aXRoIGEgY29sdW1uIHR5cGUuXHJcbiAgICogQHBhcmFtIHR5cGUgVGhlIGNvbHVtbiB0eXBlIGlkZW50aWZpZXJcclxuICAgKi9cclxuICBnZXRDb21wb25lbnQodHlwZTogc3RyaW5nKTogVHlwZTx1bmtub3duPiB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gdGhpcy5yZWdpc3RyeS5nZXQodHlwZSk/LmNvbXBvbmVudDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldHMgYWxsIGNvbHVtbiB0eXBlcyBmaWx0ZXJlZCBieSBjYXRlZ29yeVxyXG4gICAqL1xyXG4gIGdldEJ5Q2F0ZWdvcnkoY2F0ZWdvcnk6IHN0cmluZyk6IENvbHVtblR5cGVEZWZpbml0aW9uW10ge1xyXG4gICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5yZWdpc3RyeS52YWx1ZXMoKSkuZmlsdGVyKFxyXG4gICAgICAoZGVmKSA9PiBkZWYuY2F0ZWdvcnkgPT09IGNhdGVnb3J5LFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgYWxsIHVuaXF1ZSBjYXRlZ29yaWVzXHJcbiAgICovXHJcbiAgZ2V0Q2F0ZWdvcmllcygpOiBzdHJpbmdbXSB7XHJcbiAgICBjb25zdCBjYXRlZ29yaWVzID0gQXJyYXkuZnJvbSh0aGlzLnJlZ2lzdHJ5LnZhbHVlcygpKS5tYXAoXHJcbiAgICAgIChkZWYpID0+IGRlZi5jYXRlZ29yeSxcclxuICAgICk7XHJcbiAgICByZXR1cm4gWy4uLm5ldyBTZXQoY2F0ZWdvcmllcyldLnNvcnQoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgY29sdW1uIHR5cGVzIGdyb3VwZWQgYnkgY2F0ZWdvcnlcclxuICAgKi9cclxuICBnZXRHcm91cGVkQnlDYXRlZ29yeSgpOiBSZWNvcmQ8c3RyaW5nLCBDb2x1bW5UeXBlRGVmaW5pdGlvbltdPiB7XHJcbiAgICBjb25zdCBncm91cGVkOiBSZWNvcmQ8c3RyaW5nLCBDb2x1bW5UeXBlRGVmaW5pdGlvbltdPiA9IHt9O1xyXG5cclxuICAgIHRoaXMucmVnaXN0cnkuZm9yRWFjaCgoZGVmaW5pdGlvbikgPT4ge1xyXG4gICAgICBpZiAoIWdyb3VwZWRbZGVmaW5pdGlvbi5jYXRlZ29yeV0pIHtcclxuICAgICAgICBncm91cGVkW2RlZmluaXRpb24uY2F0ZWdvcnldID0gW107XHJcbiAgICAgIH1cclxuICAgICAgZ3JvdXBlZFtkZWZpbml0aW9uLmNhdGVnb3J5XS5wdXNoKGRlZmluaXRpb24pO1xyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIGdyb3VwZWQ7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXRzIGNvbHVtbiB0eXBlcyBmaWx0ZXJlZCBieSBtdWx0aXBsZSBjYXRlZ29yaWVzXHJcbiAgICovXHJcbiAgZ2V0QnlDYXRlZ29yaWVzKGNhdGVnb3JpZXM6IHN0cmluZ1tdKTogQ29sdW1uVHlwZURlZmluaXRpb25bXSB7XHJcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLnJlZ2lzdHJ5LnZhbHVlcygpKS5maWx0ZXIoKGRlZikgPT5cclxuICAgICAgY2F0ZWdvcmllcy5pbmNsdWRlcyhkZWYuY2F0ZWdvcnkpLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENoZWNrcyBpZiBhIGNvbHVtbiB0eXBlIGV4aXN0c1xyXG4gICAqL1xyXG4gIGhhcyh0eXBlOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLnJlZ2lzdHJ5Lmhhcyh0eXBlKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENsZWFycyBhbGwgcmVnaXN0ZXJlZCBjb2x1bW4gdHlwZXMgKG1haW5seSBmb3IgdGVzdGluZyBvciBob3QgcmVsb2FkIHNjZW5hcmlvcykuXHJcbiAgICovXHJcbiAgY2xlYXIoKTogdm9pZCB7XHJcbiAgICB0aGlzLnJlZ2lzdHJ5LmNsZWFyKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9zZXQoZGVmaW5pdGlvbjogQ29sdW1uVHlwZURlZmluaXRpb24pOiB2b2lkIHtcclxuICAgIGlmICghZGVmaW5pdGlvbi50eXBlIHx8ICFkZWZpbml0aW9uLm5hbWUpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKFxyXG4gICAgICAgICdbQ29sdW1uUmVuZGVyZXJSZWdpc3RyeV0gVHlwZSBhbmQgbmFtZSBhcmUgcmVxdWlyZWQgZmllbGRzJyxcclxuICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5yZWdpc3RyeS5oYXMoZGVmaW5pdGlvbi50eXBlKSkge1xyXG4gICAgICBjb25zb2xlLndhcm4oXHJcbiAgICAgICAgYFtDb2x1bW5SZW5kZXJlclJlZ2lzdHJ5XSBUeXBlICcke2RlZmluaXRpb24udHlwZX0nIGlzIGFscmVhZHkgcmVnaXN0ZXJlZC4gT3ZlcndyaXRpbmcuLi5gLFxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgdGhpcy5yZWdpc3RyeS5zZXQoZGVmaW5pdGlvbi50eXBlLCBkZWZpbml0aW9uKTtcclxuICB9XHJcbn1cclxuIl19