fixa-admin 0.0.6 → 0.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/class/popover.mjs +8 -6
- package/esm2022/lib/components/captcha/captcha.component.mjs +7 -7
- package/esm2022/lib/components/grid/filter/date-filter.component.mjs +8 -8
- package/esm2022/lib/components/grid/grid.component.mjs +78 -68
- package/esm2022/lib/components/grid/render/action-button.component.mjs +6 -5
- package/esm2022/lib/components/map/map.component.mjs +17 -17
- package/esm2022/lib/components/spinner/spinner.component.mjs +3 -3
- package/esm2022/lib/directive/char-input.directive.mjs +11 -15
- package/esm2022/lib/directive/mask.directive.mjs +4 -7
- package/esm2022/lib/directive/numeric-input.directive.mjs +3 -6
- package/esm2022/lib/guard/auth.guard.mjs +3 -4
- package/esm2022/lib/layouts/blank/blank.layout.mjs +3 -3
- package/esm2022/lib/layouts/master/master.layout.mjs +5 -9
- package/esm2022/lib/models/shared.model.mjs +8 -6
- package/esm2022/lib/pipes/date.pipe.mjs +3 -3
- package/esm2022/lib/pipes/timer.pipe.mjs +3 -3
- package/esm2022/lib/services/confirm.service.mjs +3 -4
- package/esm2022/lib/services/dialog.service.mjs +3 -4
- package/esm2022/lib/services/form.service.mjs +3 -3
- package/esm2022/lib/services/shared.service.mjs +6 -5
- package/esm2022/lib/services/toast.service.mjs +3 -4
- package/esm2022/lib/shared.module.mjs +6 -6
- package/fesm2022/fixa-admin.mjs +172 -174
- package/fesm2022/fixa-admin.mjs.map +1 -1
- package/lib/components/grid/grid.component.d.ts +5 -2
- package/package.json +1 -1
|
@@ -12,74 +12,83 @@ import * as i5 from "ng-zorro-antd/button";
|
|
|
12
12
|
import * as i6 from "ng-zorro-antd/core/transition-patch";
|
|
13
13
|
import * as i7 from "ng-zorro-antd/core/wave";
|
|
14
14
|
export class GridComponent {
|
|
15
|
-
_translate;
|
|
16
15
|
constructor(_translate) {
|
|
17
16
|
this._translate = _translate;
|
|
17
|
+
this.getServerSideGroupKey = null;
|
|
18
|
+
this.groupDefaultExpanded = -1;
|
|
19
|
+
this._treeGroupColumn = null;
|
|
20
|
+
this.themeClass = "ag-theme-quartz";
|
|
21
|
+
this.columnDefs = [];
|
|
22
|
+
this._column = [];
|
|
23
|
+
this._autoColumnSize = { type: 'fitGridWidth' };
|
|
24
|
+
this.autoGroupColumnDef = {
|
|
25
|
+
headerName: "",
|
|
26
|
+
minWidth: 250,
|
|
27
|
+
sortable: false,
|
|
28
|
+
cellRendererParams: {
|
|
29
|
+
suppressCount: true,
|
|
30
|
+
},
|
|
31
|
+
};
|
|
32
|
+
this.defaultColDef = {
|
|
33
|
+
flex: 1,
|
|
34
|
+
minWidth: 150,
|
|
35
|
+
filter: 'agTextColumnFilter',
|
|
36
|
+
suppressHeaderMenuButton: true,
|
|
37
|
+
suppressHeaderContextMenu: true,
|
|
38
|
+
suppressSizeToFit: true
|
|
39
|
+
};
|
|
40
|
+
this.onAction = new EventEmitter();
|
|
41
|
+
this.onToolbar = new EventEmitter();
|
|
42
|
+
this.onClicked = new EventEmitter();
|
|
43
|
+
this.label = null;
|
|
44
|
+
this.rowModelType = 'serverSide';
|
|
45
|
+
this.isToolbar = true;
|
|
46
|
+
this.rtl = true;
|
|
47
|
+
this.paginationPageSize = 15;
|
|
48
|
+
this.paginationPageSizeSelector = [10, 15, 25];
|
|
49
|
+
this.enableAdvancedFilter = false;
|
|
50
|
+
this.treeModel = false;
|
|
51
|
+
this.isLeaf = false;
|
|
52
|
+
this.showAdvancedButton = true;
|
|
53
|
+
this.actionItems = [
|
|
54
|
+
{
|
|
55
|
+
code: 'edit',
|
|
56
|
+
icon: 'fa-light fa-pen',
|
|
57
|
+
alt: 'ویرایش'
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
code: 'delete',
|
|
61
|
+
icon: 'fa-light fa-trash',
|
|
62
|
+
alt: 'حذف'
|
|
63
|
+
}
|
|
64
|
+
];
|
|
65
|
+
this.toolbarItems = [
|
|
66
|
+
{
|
|
67
|
+
code: 'insert',
|
|
68
|
+
icon: 'plus',
|
|
69
|
+
text: 'ایجاد جدید',
|
|
70
|
+
type: 'primary'
|
|
71
|
+
},
|
|
72
|
+
// {
|
|
73
|
+
// code: 'refresh',
|
|
74
|
+
// icon: 'sync',
|
|
75
|
+
// text: 'بروزرسانی',
|
|
76
|
+
// type: 'default'
|
|
77
|
+
// }
|
|
78
|
+
];
|
|
18
79
|
this.datasource = this.createServerSideDatasource();
|
|
19
80
|
}
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
autoGroupColumnDef = {
|
|
30
|
-
headerName: "",
|
|
31
|
-
minWidth: 250,
|
|
32
|
-
sortable: false,
|
|
33
|
-
cellRendererParams: {
|
|
34
|
-
suppressCount: true,
|
|
35
|
-
},
|
|
36
|
-
};
|
|
37
|
-
defaultColDef = {
|
|
38
|
-
flex: 1,
|
|
39
|
-
minWidth: 150,
|
|
40
|
-
filter: 'agTextColumnFilter',
|
|
41
|
-
suppressHeaderMenuButton: true,
|
|
42
|
-
suppressHeaderContextMenu: true
|
|
43
|
-
};
|
|
44
|
-
onAction = new EventEmitter();
|
|
45
|
-
onToolbar = new EventEmitter();
|
|
46
|
-
onClicked = new EventEmitter();
|
|
47
|
-
label = null;
|
|
48
|
-
rowModelType = 'serverSide';
|
|
49
|
-
isToolbar = true;
|
|
50
|
-
rtl = true;
|
|
51
|
-
paginationPageSize = 15;
|
|
52
|
-
paginationPageSizeSelector = [10, 15, 25];
|
|
53
|
-
enableAdvancedFilter = false;
|
|
54
|
-
treeModel = false;
|
|
55
|
-
isLeaf = false;
|
|
56
|
-
showAdvancedButton = true;
|
|
57
|
-
actionItems = [
|
|
58
|
-
{
|
|
59
|
-
code: 'edit',
|
|
60
|
-
icon: 'fa-light fa-pen',
|
|
61
|
-
alt: 'ویرایش'
|
|
62
|
-
},
|
|
63
|
-
{
|
|
64
|
-
code: 'delete',
|
|
65
|
-
icon: 'fa-light fa-trash',
|
|
66
|
-
alt: 'حذف'
|
|
81
|
+
get autoColumnSize() {
|
|
82
|
+
return this._autoColumnSize;
|
|
83
|
+
}
|
|
84
|
+
set autoColumnSize(v) {
|
|
85
|
+
if (v) {
|
|
86
|
+
this._autoColumnSize = { type: 'fitCellContents' };
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
this._autoColumnSize = { type: 'fitGridWidth' };
|
|
67
90
|
}
|
|
68
|
-
|
|
69
|
-
toolbarItems = [
|
|
70
|
-
{
|
|
71
|
-
code: 'insert',
|
|
72
|
-
icon: 'plus',
|
|
73
|
-
text: 'ایجاد جدید',
|
|
74
|
-
type: 'primary'
|
|
75
|
-
},
|
|
76
|
-
// {
|
|
77
|
-
// code: 'refresh',
|
|
78
|
-
// icon: 'sync',
|
|
79
|
-
// text: 'بروزرسانی',
|
|
80
|
-
// type: 'default'
|
|
81
|
-
// }
|
|
82
|
-
];
|
|
91
|
+
}
|
|
83
92
|
get treeGroupColumn() {
|
|
84
93
|
return this.treeGroupColumn;
|
|
85
94
|
}
|
|
@@ -103,7 +112,6 @@ export class GridComponent {
|
|
|
103
112
|
// this.autoGroupColumnDef.headerName = v;
|
|
104
113
|
}
|
|
105
114
|
}
|
|
106
|
-
fetchData;
|
|
107
115
|
get column() {
|
|
108
116
|
return this.column;
|
|
109
117
|
}
|
|
@@ -464,12 +472,12 @@ export class GridComponent {
|
|
|
464
472
|
};
|
|
465
473
|
}
|
|
466
474
|
ngOnInit() { }
|
|
467
|
-
static
|
|
468
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: GridComponent, selector: "app-grid", inputs: { label: "label", rowModelType: "rowModelType", isToolbar: "isToolbar", rtl: "rtl", paginationPageSize: "paginationPageSize", paginationPageSizeSelector: "paginationPageSizeSelector", enableAdvancedFilter: "enableAdvancedFilter", treeModel: "treeModel", isLeaf: "isLeaf", showAdvancedButton: "showAdvancedButton", actionItems: "actionItems", toolbarItems: "toolbarItems", treeGroupColumn: "treeGroupColumn", fetchData: "fetchData", column: "column" }, outputs: { onAction: "onAction", onToolbar: "onToolbar", onClicked: "onClicked" }, ngImport: i0, template: "<!-- <button (click)=\"enableAdvancedFilter=!enableAdvancedFilter\">advanced</button> -->\n<div class=\"flex justify-between items-center mb-4 pb-4 border-b border-b-slate-200\" *ngIf=\"isToolbar\">\n <div>\n <h4 class=\"font-semibold text-2xl\">{{label}}</h4>\n </div>\n <div class=\"flex gap-3\">\n <button nz-button *ngFor=\"let item of toolbarItems\" (click)=\"handleClick(item)\" [nzType]=\"item.type\">\n <span nz-icon [nzType]=\"item.icon\"></span>\n {{item.text}}\n </button>\n <button nz-button (click)=\"refresh()\" nzType=\"default\">\n <span nz-icon nzType=\"sync\"></span>\n \u0628\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06CC\n </button>\n <!-- <button nz-button (click)=\"advancedFilter()\" *ngIf=\"showAdvancedButton\" nzType=\"default\">\n <span nz-icon nzType=\"filter\"></span>\n \u062C\u0633\u062A\u062C\u0648\u06CC \u067E\u06CC\u0634\u0631\u0641\u062A\u0647\n </button> -->\n </div>\n</div>\n<ag-grid-angular style=\"width: 100%;\" [style]=\"(isToolbar) ? 'height: calc(100% - 1rem - 48px);':'height: 100%;'\" [columnDefs]=\"columnDefs\" [pagination]=\"true\"\n [paginationPageSize]=\"paginationPageSize\" [paginationPageSizeSelector]=\"paginationPageSizeSelector\"\n [class]=\"themeClass\" [defaultColDef]=\"defaultColDef\" [enableAdvancedFilter]=\"enableAdvancedFilter\" [enableRtl]=\"rtl\"\n [treeData]=\"treeModel\" [autoGroupColumnDef]=\"autoGroupColumnDef\" [isServerSideGroup]=\"isServerSideGroup\"\n [getServerSideGroupKey]=\"getServerSideGroupKey\" [rowModelType]=\"rowModelType\" [serverSideDatasource]=\"datasource\"\n (gridReady)=\"onGridReady($event)\" [cacheBlockSize]=\"paginationPageSize\" [maxBlocksInCache]=\"2\"\n [context]=\"{actionItems: actionItems}\" (cellDoubleClicked)=\"cellDoubleClicked($event)\" #grid />", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.AgGridAngular, selector: "ag-grid-angular", inputs: ["gridOptions", "modules", "statusBar", "sideBar", "suppressContextMenu", "preventDefaultOnContextMenu", "allowContextMenuWithControlKey", "columnMenu", "suppressMenuHide", "enableBrowserTooltips", "tooltipTrigger", "tooltipShowDelay", "tooltipHideDelay", "tooltipMouseTrack", "tooltipShowMode", "tooltipInteraction", "popupParent", "copyHeadersToClipboard", "copyGroupHeadersToClipboard", "clipboardDelimiter", "suppressCopyRowsToClipboard", "suppressCopySingleCellRanges", "suppressLastEmptyLineOnPaste", "suppressClipboardPaste", "suppressClipboardApi", "suppressCutToClipboard", "columnDefs", "defaultColDef", "defaultColGroupDef", "columnTypes", "dataTypeDefinitions", "maintainColumnOrder", "enableStrictPivotColumnOrder", "suppressFieldDotNotation", "headerHeight", "groupHeaderHeight", "floatingFiltersHeight", "pivotHeaderHeight", "pivotGroupHeaderHeight", "allowDragFromColumnsToolPanel", "suppressMovableColumns", "suppressColumnMoveAnimation", "suppressMoveWhenColumnDragging", "suppressDragLeaveHidesColumns", "suppressRowGroupHidesColumns", "colResizeDefault", "suppressAutoSize", "autoSizePadding", "skipHeaderOnAutoSize", "autoSizeStrategy", "components", "editType", "singleClickEdit", "suppressClickEdit", "readOnlyEdit", "stopEditingWhenCellsLoseFocus", "enterNavigatesVertically", "enterNavigatesVerticallyAfterEdit", "enableCellEditingOnBackspace", "undoRedoCellEditing", "undoRedoCellEditingLimit", "defaultCsvExportParams", "suppressCsvExport", "defaultExcelExportParams", "suppressExcelExport", "excelStyles", "quickFilterText", "cacheQuickFilter", "includeHiddenColumnsInQuickFilter", "quickFilterParser", "quickFilterMatcher", "applyQuickFilterBeforePivotOrAgg", "excludeChildrenWhenTreeDataFiltering", "enableAdvancedFilter", "advancedFilterModel", "includeHiddenColumnsInAdvancedFilter", "advancedFilterParent", "advancedFilterBuilderParams", "suppressAdvancedFilterEval", "suppressSetFilterByDefault", "enableCharts", "chartThemes", "customChartThemes", "chartThemeOverrides", "chartToolPanelsDef", "chartMenuItems", "loadingCellRenderer", "loadingCellRendererParams", "loadingCellRendererSelector", "localeText", "masterDetail", "keepDetailRows", "keepDetailRowsCount", "detailCellRenderer", "detailCellRendererParams", "detailRowHeight", "detailRowAutoHeight", "context", "dragAndDropImageComponent", "dragAndDropImageComponentParams", "alignedGrids", "tabIndex", "rowBuffer", "valueCache", "valueCacheNeverExpires", "enableCellExpressions", "suppressTouch", "suppressFocusAfterRefresh", "suppressAsyncEvents", "suppressBrowserResizeObserver", "suppressPropertyNamesCheck", "suppressChangeDetection", "debug", "loading", "overlayLoadingTemplate", "loadingOverlayComponent", "loadingOverlayComponentParams", "suppressLoadingOverlay", "overlayNoRowsTemplate", "noRowsOverlayComponent", "noRowsOverlayComponentParams", "suppressNoRowsOverlay", "pagination", "paginationPageSize", "paginationPageSizeSelector", "paginationAutoPageSize", "paginateChildRows", "suppressPaginationPanel", "pivotMode", "pivotPanelShow", "pivotMaxGeneratedColumns", "pivotDefaultExpanded", "pivotColumnGroupTotals", "pivotRowTotals", "pivotSuppressAutoColumn", "suppressExpandablePivotGroups", "functionsReadOnly", "aggFuncs", "suppressAggFuncInHeader", "alwaysAggregateAtRootLevel", "aggregateOnlyChangedColumns", "suppressAggFilteredOnly", "removePivotHeaderRowWhenSingleValueColumn", "animateRows", "enableCellChangeFlash", "cellFlashDuration", "cellFlashDelay", "cellFadeDuration", "cellFadeDelay", "allowShowChangeAfterFilter", "domLayout", "ensureDomOrder", "enableRtl", "suppressColumnVirtualisation", "suppressMaxRenderedRowRestriction", "suppressRowVirtualisation", "rowDragManaged", "suppressRowDrag", "suppressMoveWhenRowDragging", "rowDragEntireRow", "rowDragMultiRow", "rowDragText", "fullWidthCellRenderer", "fullWidthCellRendererParams", "embedFullWidthRows", "suppressGroupMaintainValueType", "groupDisplayType", "groupDefaultExpanded", "autoGroupColumnDef", "groupMaintainOrder", "groupSelectsChildren", "groupLockGroupColumns", "groupAggFiltering", "groupIncludeFooter", "groupIncludeTotalFooter", "groupTotalRow", "grandTotalRow", "suppressStickyTotalRow", "groupSuppressBlankHeader", "groupSelectsFiltered", "showOpenedGroup", "groupRemoveSingleChildren", "groupRemoveLowestSingleChildren", "groupHideOpenParents", "groupAllowUnbalanced", "rowGroupPanelShow", "groupRowRenderer", "groupRowRendererParams", "suppressMakeColumnVisibleAfterUnGroup", "treeData", "rowGroupPanelSuppressSort", "suppressGroupRowsSticky", "pinnedTopRowData", "pinnedBottomRowData", "rowModelType", "rowData", "asyncTransactionWaitMillis", "suppressModelUpdateAfterUpdateTransaction", "datasource", "cacheOverflowSize", "infiniteInitialRowCount", "serverSideInitialRowCount", "suppressServerSideInfiniteScroll", "suppressServerSideFullWidthLoadingRow", "cacheBlockSize", "maxBlocksInCache", "maxConcurrentDatasourceRequests", "blockLoadDebounceMillis", "purgeClosedRowNodes", "serverSideDatasource", "serverSideSortAllLevels", "serverSideEnableClientSideSort", "serverSideOnlyRefreshFilteredGroups", "serverSideSortOnServer", "serverSideFilterOnServer", "serverSidePivotResultFieldSeparator", "viewportDatasource", "viewportRowModelPageSize", "viewportRowModelBufferSize", "alwaysShowHorizontalScroll", "alwaysShowVerticalScroll", "debounceVerticalScrollbar", "suppressHorizontalScroll", "suppressScrollOnNewData", "suppressScrollWhenPopupsAreOpen", "suppressAnimationFrame", "suppressMiddleClickScrolls", "suppressPreventDefaultOnMouseWheel", "scrollbarWidth", "rowSelection", "cellSelection", "rowMultiSelectWithClick", "suppressRowDeselection", "suppressRowClickSelection", "suppressCellFocus", "suppressHeaderFocus", "selectionColumnDef", "suppressMultiRangeSelection", "enableCellTextSelection", "enableRangeSelection", "enableRangeHandle", "enableFillHandle", "fillHandleDirection", "suppressClearOnFillReduction", "sortingOrder", "accentedSort", "unSortIcon", "suppressMultiSort", "alwaysMultiSort", "multiSortKey", "suppressMaintainUnsortedOrder", "icons", "rowHeight", "rowStyle", "rowClass", "rowClassRules", "suppressRowHoverHighlight", "suppressRowTransform", "columnHoverHighlight", "gridId", "deltaSort", "treeDataDisplayType", "enableGroupEdit", "initialState", "theme", "loadThemeGoogleFonts", "getContextMenuItems", "getMainMenuItems", "postProcessPopup", "processUnpinnedColumns", "processCellForClipboard", "processHeaderForClipboard", "processGroupHeaderForClipboard", "processCellFromClipboard", "sendToClipboard", "processDataFromClipboard", "isExternalFilterPresent", "doesExternalFilterPass", "getChartToolbarItems", "createChartContainer", "focusGridInnerElement", "navigateToNextHeader", "tabToNextHeader", "navigateToNextCell", "tabToNextCell", "getLocaleText", "getDocument", "paginationNumberFormatter", "getGroupRowAgg", "isGroupOpenByDefault", "initialGroupOrderComparator", "processPivotResultColDef", "processPivotResultColGroupDef", "getDataPath", "getChildCount", "getServerSideGroupLevelParams", "isServerSideGroupOpenByDefault", "isApplyServerSideTransaction", "isServerSideGroup", "getServerSideGroupKey", "getBusinessKeyForNode", "getRowId", "resetRowDataOnUpdate", "processRowPostCreate", "isRowSelectable", "isRowMaster", "fillOperation", "postSortRows", "getRowStyle", "getRowClass", "getRowHeight", "isFullWidthRow"], outputs: ["toolPanelVisibleChanged", "toolPanelSizeChanged", "columnMenuVisibleChanged", "contextMenuVisibleChanged", "cutStart", "cutEnd", "pasteStart", "pasteEnd", "columnVisible", "columnPinned", "columnResized", "columnMoved", "columnValueChanged", "columnPivotModeChanged", "columnPivotChanged", "columnGroupOpened", "newColumnsLoaded", "gridColumnsChanged", "displayedColumnsChanged", "virtualColumnsChanged", "columnEverythingChanged", "columnHeaderMouseOver", "columnHeaderMouseLeave", "columnHeaderClicked", "columnHeaderContextMenu", "componentStateChanged", "cellValueChanged", "cellEditRequest", "rowValueChanged", "cellEditingStarted", "cellEditingStopped", "rowEditingStarted", "rowEditingStopped", "undoStarted", "undoEnded", "redoStarted", "redoEnded", "cellSelectionDeleteStart", "cellSelectionDeleteEnd", "rangeDeleteStart", "rangeDeleteEnd", "fillStart", "fillEnd", "filterOpened", "filterChanged", "filterModified", "advancedFilterBuilderVisibleChanged", "chartCreated", "chartRangeSelectionChanged", "chartOptionsChanged", "chartDestroyed", "cellKeyDown", "gridReady", "firstDataRendered", "gridSizeChanged", "modelUpdated", "virtualRowRemoved", "viewportChanged", "bodyScroll", "bodyScrollEnd", "dragStarted", "dragStopped", "dragCancelled", "stateUpdated", "paginationChanged", "rowDragEnter", "rowDragMove", "rowDragLeave", "rowDragEnd", "rowDragCancel", "columnRowGroupChanged", "rowGroupOpened", "expandOrCollapseAll", "pivotMaxColumnsExceeded", "pinnedRowDataChanged", "rowDataUpdated", "asyncTransactionsFlushed", "storeRefreshed", "headerFocused", "cellClicked", "cellDoubleClicked", "cellFocused", "cellMouseOver", "cellMouseOut", "cellMouseDown", "rowClicked", "rowDoubleClicked", "rowSelected", "selectionChanged", "cellContextMenu", "rangeSelectionChanged", "cellSelectionChanged", "tooltipShow", "tooltipHide", "sortChanged"] }, { kind: "directive", type: i4.NzIconDirective, selector: "[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }, { kind: "component", type: i5.NzButtonComponent, selector: "button[nz-button], a[nz-button]", inputs: ["nzBlock", "nzGhost", "nzSearch", "nzLoading", "nzDanger", "disabled", "tabIndex", "nzType", "nzShape", "nzSize"], exportAs: ["nzButton"] }, { kind: "directive", type: i6.ɵNzTransitionPatchDirective, selector: "[nz-button], nz-button-group, [nz-icon], [nz-menu-item], [nz-submenu], nz-select-top-control, nz-select-placeholder, nz-input-group", inputs: ["hidden"] }, { kind: "directive", type: i7.NzWaveDirective, selector: "[nz-wave],button[nz-button]:not([nzType=\"link\"]):not([nzType=\"text\"])", inputs: ["nzWaveExtraNode"], exportAs: ["nzWave"] }] });
|
|
475
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: GridComponent, deps: [{ token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
476
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: GridComponent, selector: "app-grid", inputs: { label: "label", rowModelType: "rowModelType", isToolbar: "isToolbar", rtl: "rtl", paginationPageSize: "paginationPageSize", paginationPageSizeSelector: "paginationPageSizeSelector", enableAdvancedFilter: "enableAdvancedFilter", treeModel: "treeModel", isLeaf: "isLeaf", autoColumnSize: "autoColumnSize", showAdvancedButton: "showAdvancedButton", actionItems: "actionItems", toolbarItems: "toolbarItems", treeGroupColumn: "treeGroupColumn", fetchData: "fetchData", column: "column" }, outputs: { onAction: "onAction", onToolbar: "onToolbar", onClicked: "onClicked" }, ngImport: i0, template: "<!-- <button (click)=\"enableAdvancedFilter=!enableAdvancedFilter\">advanced</button> -->\n<div class=\"flex justify-between items-center mb-4 pb-4 border-b border-b-slate-200\" *ngIf=\"isToolbar\">\n <div>\n <h4 class=\"font-semibold text-2xl\">{{label}}</h4>\n </div>\n <div class=\"flex gap-3\">\n <button nz-button *ngFor=\"let item of toolbarItems\" (click)=\"handleClick(item)\" [nzType]=\"item.type\">\n <span nz-icon [nzType]=\"item.icon\"></span>\n {{item.text}}\n </button>\n <button nz-button (click)=\"refresh()\" nzType=\"default\">\n <span nz-icon nzType=\"sync\"></span>\n \u0628\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06CC\n </button>\n <!-- <button nz-button (click)=\"advancedFilter()\" *ngIf=\"showAdvancedButton\" nzType=\"default\">\n <span nz-icon nzType=\"filter\"></span>\n \u062C\u0633\u062A\u062C\u0648\u06CC \u067E\u06CC\u0634\u0631\u0641\u062A\u0647\n </button> -->\n </div>\n</div>\n<ag-grid-angular style=\"width: 100%;\" [style]=\"(isToolbar) ? 'height: calc(100% - 1rem - 48px);':'height: 100%;'\" [columnDefs]=\"columnDefs\" [pagination]=\"true\"\n [paginationPageSize]=\"paginationPageSize\" [paginationPageSizeSelector]=\"paginationPageSizeSelector\"\n [class]=\"themeClass\" [defaultColDef]=\"defaultColDef\" [enableAdvancedFilter]=\"enableAdvancedFilter\" [enableRtl]=\"rtl\"\n [treeData]=\"treeModel\" [autoGroupColumnDef]=\"autoGroupColumnDef\" [isServerSideGroup]=\"isServerSideGroup\"\n [getServerSideGroupKey]=\"getServerSideGroupKey\" [rowModelType]=\"rowModelType\" [serverSideDatasource]=\"datasource\"\n (gridReady)=\"onGridReady($event)\" [cacheBlockSize]=\"paginationPageSize\" [maxBlocksInCache]=\"2\"\n [context]=\"{actionItems: actionItems}\" (cellDoubleClicked)=\"cellDoubleClicked($event)\" [autoSizeStrategy]=\"_autoColumnSize\" #grid />", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.AgGridAngular, selector: "ag-grid-angular", inputs: ["gridOptions", "modules", "statusBar", "sideBar", "suppressContextMenu", "preventDefaultOnContextMenu", "allowContextMenuWithControlKey", "columnMenu", "suppressMenuHide", "enableBrowserTooltips", "tooltipTrigger", "tooltipShowDelay", "tooltipHideDelay", "tooltipMouseTrack", "tooltipShowMode", "tooltipInteraction", "popupParent", "copyHeadersToClipboard", "copyGroupHeadersToClipboard", "clipboardDelimiter", "suppressCopyRowsToClipboard", "suppressCopySingleCellRanges", "suppressLastEmptyLineOnPaste", "suppressClipboardPaste", "suppressClipboardApi", "suppressCutToClipboard", "columnDefs", "defaultColDef", "defaultColGroupDef", "columnTypes", "dataTypeDefinitions", "maintainColumnOrder", "enableStrictPivotColumnOrder", "suppressFieldDotNotation", "headerHeight", "groupHeaderHeight", "floatingFiltersHeight", "pivotHeaderHeight", "pivotGroupHeaderHeight", "allowDragFromColumnsToolPanel", "suppressMovableColumns", "suppressColumnMoveAnimation", "suppressMoveWhenColumnDragging", "suppressDragLeaveHidesColumns", "suppressRowGroupHidesColumns", "colResizeDefault", "suppressAutoSize", "autoSizePadding", "skipHeaderOnAutoSize", "autoSizeStrategy", "components", "editType", "singleClickEdit", "suppressClickEdit", "readOnlyEdit", "stopEditingWhenCellsLoseFocus", "enterNavigatesVertically", "enterNavigatesVerticallyAfterEdit", "enableCellEditingOnBackspace", "undoRedoCellEditing", "undoRedoCellEditingLimit", "defaultCsvExportParams", "suppressCsvExport", "defaultExcelExportParams", "suppressExcelExport", "excelStyles", "quickFilterText", "cacheQuickFilter", "includeHiddenColumnsInQuickFilter", "quickFilterParser", "quickFilterMatcher", "applyQuickFilterBeforePivotOrAgg", "excludeChildrenWhenTreeDataFiltering", "enableAdvancedFilter", "advancedFilterModel", "includeHiddenColumnsInAdvancedFilter", "advancedFilterParent", "advancedFilterBuilderParams", "suppressAdvancedFilterEval", "suppressSetFilterByDefault", "enableCharts", "chartThemes", "customChartThemes", "chartThemeOverrides", "chartToolPanelsDef", "chartMenuItems", "loadingCellRenderer", "loadingCellRendererParams", "loadingCellRendererSelector", "localeText", "masterDetail", "keepDetailRows", "keepDetailRowsCount", "detailCellRenderer", "detailCellRendererParams", "detailRowHeight", "detailRowAutoHeight", "context", "dragAndDropImageComponent", "dragAndDropImageComponentParams", "alignedGrids", "tabIndex", "rowBuffer", "valueCache", "valueCacheNeverExpires", "enableCellExpressions", "suppressTouch", "suppressFocusAfterRefresh", "suppressAsyncEvents", "suppressBrowserResizeObserver", "suppressPropertyNamesCheck", "suppressChangeDetection", "debug", "loading", "overlayLoadingTemplate", "loadingOverlayComponent", "loadingOverlayComponentParams", "suppressLoadingOverlay", "overlayNoRowsTemplate", "noRowsOverlayComponent", "noRowsOverlayComponentParams", "suppressNoRowsOverlay", "pagination", "paginationPageSize", "paginationPageSizeSelector", "paginationAutoPageSize", "paginateChildRows", "suppressPaginationPanel", "pivotMode", "pivotPanelShow", "pivotMaxGeneratedColumns", "pivotDefaultExpanded", "pivotColumnGroupTotals", "pivotRowTotals", "pivotSuppressAutoColumn", "suppressExpandablePivotGroups", "functionsReadOnly", "aggFuncs", "suppressAggFuncInHeader", "alwaysAggregateAtRootLevel", "aggregateOnlyChangedColumns", "suppressAggFilteredOnly", "removePivotHeaderRowWhenSingleValueColumn", "animateRows", "enableCellChangeFlash", "cellFlashDuration", "cellFlashDelay", "cellFadeDuration", "cellFadeDelay", "allowShowChangeAfterFilter", "domLayout", "ensureDomOrder", "enableRtl", "suppressColumnVirtualisation", "suppressMaxRenderedRowRestriction", "suppressRowVirtualisation", "rowDragManaged", "suppressRowDrag", "suppressMoveWhenRowDragging", "rowDragEntireRow", "rowDragMultiRow", "rowDragText", "fullWidthCellRenderer", "fullWidthCellRendererParams", "embedFullWidthRows", "suppressGroupMaintainValueType", "groupDisplayType", "groupDefaultExpanded", "autoGroupColumnDef", "groupMaintainOrder", "groupSelectsChildren", "groupLockGroupColumns", "groupAggFiltering", "groupIncludeFooter", "groupIncludeTotalFooter", "groupTotalRow", "grandTotalRow", "suppressStickyTotalRow", "groupSuppressBlankHeader", "groupSelectsFiltered", "showOpenedGroup", "groupRemoveSingleChildren", "groupRemoveLowestSingleChildren", "groupHideOpenParents", "groupAllowUnbalanced", "rowGroupPanelShow", "groupRowRenderer", "groupRowRendererParams", "suppressMakeColumnVisibleAfterUnGroup", "treeData", "rowGroupPanelSuppressSort", "suppressGroupRowsSticky", "pinnedTopRowData", "pinnedBottomRowData", "rowModelType", "rowData", "asyncTransactionWaitMillis", "suppressModelUpdateAfterUpdateTransaction", "datasource", "cacheOverflowSize", "infiniteInitialRowCount", "serverSideInitialRowCount", "suppressServerSideInfiniteScroll", "suppressServerSideFullWidthLoadingRow", "cacheBlockSize", "maxBlocksInCache", "maxConcurrentDatasourceRequests", "blockLoadDebounceMillis", "purgeClosedRowNodes", "serverSideDatasource", "serverSideSortAllLevels", "serverSideEnableClientSideSort", "serverSideOnlyRefreshFilteredGroups", "serverSideSortOnServer", "serverSideFilterOnServer", "serverSidePivotResultFieldSeparator", "viewportDatasource", "viewportRowModelPageSize", "viewportRowModelBufferSize", "alwaysShowHorizontalScroll", "alwaysShowVerticalScroll", "debounceVerticalScrollbar", "suppressHorizontalScroll", "suppressScrollOnNewData", "suppressScrollWhenPopupsAreOpen", "suppressAnimationFrame", "suppressMiddleClickScrolls", "suppressPreventDefaultOnMouseWheel", "scrollbarWidth", "rowSelection", "cellSelection", "rowMultiSelectWithClick", "suppressRowDeselection", "suppressRowClickSelection", "suppressCellFocus", "suppressHeaderFocus", "selectionColumnDef", "suppressMultiRangeSelection", "enableCellTextSelection", "enableRangeSelection", "enableRangeHandle", "enableFillHandle", "fillHandleDirection", "suppressClearOnFillReduction", "sortingOrder", "accentedSort", "unSortIcon", "suppressMultiSort", "alwaysMultiSort", "multiSortKey", "suppressMaintainUnsortedOrder", "icons", "rowHeight", "rowStyle", "rowClass", "rowClassRules", "suppressRowHoverHighlight", "suppressRowTransform", "columnHoverHighlight", "gridId", "deltaSort", "treeDataDisplayType", "enableGroupEdit", "initialState", "theme", "loadThemeGoogleFonts", "getContextMenuItems", "getMainMenuItems", "postProcessPopup", "processUnpinnedColumns", "processCellForClipboard", "processHeaderForClipboard", "processGroupHeaderForClipboard", "processCellFromClipboard", "sendToClipboard", "processDataFromClipboard", "isExternalFilterPresent", "doesExternalFilterPass", "getChartToolbarItems", "createChartContainer", "focusGridInnerElement", "navigateToNextHeader", "tabToNextHeader", "navigateToNextCell", "tabToNextCell", "getLocaleText", "getDocument", "paginationNumberFormatter", "getGroupRowAgg", "isGroupOpenByDefault", "initialGroupOrderComparator", "processPivotResultColDef", "processPivotResultColGroupDef", "getDataPath", "getChildCount", "getServerSideGroupLevelParams", "isServerSideGroupOpenByDefault", "isApplyServerSideTransaction", "isServerSideGroup", "getServerSideGroupKey", "getBusinessKeyForNode", "getRowId", "resetRowDataOnUpdate", "processRowPostCreate", "isRowSelectable", "isRowMaster", "fillOperation", "postSortRows", "getRowStyle", "getRowClass", "getRowHeight", "isFullWidthRow"], outputs: ["toolPanelVisibleChanged", "toolPanelSizeChanged", "columnMenuVisibleChanged", "contextMenuVisibleChanged", "cutStart", "cutEnd", "pasteStart", "pasteEnd", "columnVisible", "columnPinned", "columnResized", "columnMoved", "columnValueChanged", "columnPivotModeChanged", "columnPivotChanged", "columnGroupOpened", "newColumnsLoaded", "gridColumnsChanged", "displayedColumnsChanged", "virtualColumnsChanged", "columnEverythingChanged", "columnHeaderMouseOver", "columnHeaderMouseLeave", "columnHeaderClicked", "columnHeaderContextMenu", "componentStateChanged", "cellValueChanged", "cellEditRequest", "rowValueChanged", "cellEditingStarted", "cellEditingStopped", "rowEditingStarted", "rowEditingStopped", "undoStarted", "undoEnded", "redoStarted", "redoEnded", "cellSelectionDeleteStart", "cellSelectionDeleteEnd", "rangeDeleteStart", "rangeDeleteEnd", "fillStart", "fillEnd", "filterOpened", "filterChanged", "filterModified", "advancedFilterBuilderVisibleChanged", "chartCreated", "chartRangeSelectionChanged", "chartOptionsChanged", "chartDestroyed", "cellKeyDown", "gridReady", "firstDataRendered", "gridSizeChanged", "modelUpdated", "virtualRowRemoved", "viewportChanged", "bodyScroll", "bodyScrollEnd", "dragStarted", "dragStopped", "dragCancelled", "stateUpdated", "paginationChanged", "rowDragEnter", "rowDragMove", "rowDragLeave", "rowDragEnd", "rowDragCancel", "columnRowGroupChanged", "rowGroupOpened", "expandOrCollapseAll", "pivotMaxColumnsExceeded", "pinnedRowDataChanged", "rowDataUpdated", "asyncTransactionsFlushed", "storeRefreshed", "headerFocused", "cellClicked", "cellDoubleClicked", "cellFocused", "cellMouseOver", "cellMouseOut", "cellMouseDown", "rowClicked", "rowDoubleClicked", "rowSelected", "selectionChanged", "cellContextMenu", "rangeSelectionChanged", "cellSelectionChanged", "tooltipShow", "tooltipHide", "sortChanged"] }, { kind: "directive", type: i4.NzIconDirective, selector: "[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }, { kind: "component", type: i5.NzButtonComponent, selector: "button[nz-button], a[nz-button]", inputs: ["nzBlock", "nzGhost", "nzSearch", "nzLoading", "nzDanger", "disabled", "tabIndex", "nzType", "nzShape", "nzSize"], exportAs: ["nzButton"] }, { kind: "directive", type: i6.ɵNzTransitionPatchDirective, selector: "[nz-button], nz-button-group, [nz-icon], [nz-menu-item], [nz-submenu], nz-select-top-control, nz-select-placeholder, nz-input-group", inputs: ["hidden"] }, { kind: "directive", type: i7.NzWaveDirective, selector: "[nz-wave],button[nz-button]:not([nzType=\"link\"]):not([nzType=\"text\"])", inputs: ["nzWaveExtraNode"], exportAs: ["nzWave"] }] }); }
|
|
469
477
|
}
|
|
470
478
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: GridComponent, decorators: [{
|
|
471
479
|
type: Component,
|
|
472
|
-
args: [{ selector: 'app-grid', template: "<!-- <button (click)=\"enableAdvancedFilter=!enableAdvancedFilter\">advanced</button> -->\n<div class=\"flex justify-between items-center mb-4 pb-4 border-b border-b-slate-200\" *ngIf=\"isToolbar\">\n <div>\n <h4 class=\"font-semibold text-2xl\">{{label}}</h4>\n </div>\n <div class=\"flex gap-3\">\n <button nz-button *ngFor=\"let item of toolbarItems\" (click)=\"handleClick(item)\" [nzType]=\"item.type\">\n <span nz-icon [nzType]=\"item.icon\"></span>\n {{item.text}}\n </button>\n <button nz-button (click)=\"refresh()\" nzType=\"default\">\n <span nz-icon nzType=\"sync\"></span>\n \u0628\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06CC\n </button>\n <!-- <button nz-button (click)=\"advancedFilter()\" *ngIf=\"showAdvancedButton\" nzType=\"default\">\n <span nz-icon nzType=\"filter\"></span>\n \u062C\u0633\u062A\u062C\u0648\u06CC \u067E\u06CC\u0634\u0631\u0641\u062A\u0647\n </button> -->\n </div>\n</div>\n<ag-grid-angular style=\"width: 100%;\" [style]=\"(isToolbar) ? 'height: calc(100% - 1rem - 48px);':'height: 100%;'\" [columnDefs]=\"columnDefs\" [pagination]=\"true\"\n [paginationPageSize]=\"paginationPageSize\" [paginationPageSizeSelector]=\"paginationPageSizeSelector\"\n [class]=\"themeClass\" [defaultColDef]=\"defaultColDef\" [enableAdvancedFilter]=\"enableAdvancedFilter\" [enableRtl]=\"rtl\"\n [treeData]=\"treeModel\" [autoGroupColumnDef]=\"autoGroupColumnDef\" [isServerSideGroup]=\"isServerSideGroup\"\n [getServerSideGroupKey]=\"getServerSideGroupKey\" [rowModelType]=\"rowModelType\" [serverSideDatasource]=\"datasource\"\n (gridReady)=\"onGridReady($event)\" [cacheBlockSize]=\"paginationPageSize\" [maxBlocksInCache]=\"2\"\n [context]=\"{actionItems: actionItems}\" (cellDoubleClicked)=\"cellDoubleClicked($event)\" #grid />" }]
|
|
480
|
+
args: [{ selector: 'app-grid', template: "<!-- <button (click)=\"enableAdvancedFilter=!enableAdvancedFilter\">advanced</button> -->\n<div class=\"flex justify-between items-center mb-4 pb-4 border-b border-b-slate-200\" *ngIf=\"isToolbar\">\n <div>\n <h4 class=\"font-semibold text-2xl\">{{label}}</h4>\n </div>\n <div class=\"flex gap-3\">\n <button nz-button *ngFor=\"let item of toolbarItems\" (click)=\"handleClick(item)\" [nzType]=\"item.type\">\n <span nz-icon [nzType]=\"item.icon\"></span>\n {{item.text}}\n </button>\n <button nz-button (click)=\"refresh()\" nzType=\"default\">\n <span nz-icon nzType=\"sync\"></span>\n \u0628\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06CC\n </button>\n <!-- <button nz-button (click)=\"advancedFilter()\" *ngIf=\"showAdvancedButton\" nzType=\"default\">\n <span nz-icon nzType=\"filter\"></span>\n \u062C\u0633\u062A\u062C\u0648\u06CC \u067E\u06CC\u0634\u0631\u0641\u062A\u0647\n </button> -->\n </div>\n</div>\n<ag-grid-angular style=\"width: 100%;\" [style]=\"(isToolbar) ? 'height: calc(100% - 1rem - 48px);':'height: 100%;'\" [columnDefs]=\"columnDefs\" [pagination]=\"true\"\n [paginationPageSize]=\"paginationPageSize\" [paginationPageSizeSelector]=\"paginationPageSizeSelector\"\n [class]=\"themeClass\" [defaultColDef]=\"defaultColDef\" [enableAdvancedFilter]=\"enableAdvancedFilter\" [enableRtl]=\"rtl\"\n [treeData]=\"treeModel\" [autoGroupColumnDef]=\"autoGroupColumnDef\" [isServerSideGroup]=\"isServerSideGroup\"\n [getServerSideGroupKey]=\"getServerSideGroupKey\" [rowModelType]=\"rowModelType\" [serverSideDatasource]=\"datasource\"\n (gridReady)=\"onGridReady($event)\" [cacheBlockSize]=\"paginationPageSize\" [maxBlocksInCache]=\"2\"\n [context]=\"{actionItems: actionItems}\" (cellDoubleClicked)=\"cellDoubleClicked($event)\" [autoSizeStrategy]=\"_autoColumnSize\" #grid />" }]
|
|
473
481
|
}], ctorParameters: () => [{ type: i1.TranslateService }], propDecorators: { onAction: [{
|
|
474
482
|
type: Output
|
|
475
483
|
}], onToolbar: [{
|
|
@@ -494,6 +502,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
494
502
|
type: Input
|
|
495
503
|
}], isLeaf: [{
|
|
496
504
|
type: Input
|
|
505
|
+
}], autoColumnSize: [{
|
|
506
|
+
type: Input
|
|
497
507
|
}], showAdvancedButton: [{
|
|
498
508
|
type: Input
|
|
499
509
|
}], actionItems: [{
|
|
@@ -507,4 +517,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
507
517
|
}], column: [{
|
|
508
518
|
type: Input
|
|
509
519
|
}] } });
|
|
510
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaGFyZWQvc3JjL2xpYi9jb21wb25lbnRzL2dyaWQvZ3JpZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaGFyZWQvc3JjL2xpYi9jb21wb25lbnRzL2dyaWQvZ3JpZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRS9FLE9BQU8sRUFBeUUsY0FBYyxFQUFvRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3BNLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNuRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7Ozs7Ozs7QUFpQmhELE1BQU0sT0FBTyxhQUFhO0lBRVY7SUFEWixZQUNZLFVBQTRCO1FBQTVCLGVBQVUsR0FBVixVQUFVLENBQWtCO1FBRXBDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUM7SUFDeEQsQ0FBQztJQUNPLE9BQU8sQ0FBVztJQUNuQixpQkFBaUIsQ0FBQztJQUNsQixxQkFBcUIsR0FBRyxJQUFJLENBQUM7SUFDN0Isb0JBQW9CLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDekIsZ0JBQWdCLEdBQVcsSUFBSSxDQUFDO0lBQ3hDLFVBQVUsQ0FBd0I7SUFDbEMsVUFBVSxHQUFXLGlCQUFpQixDQUFDO0lBQ3ZDLFVBQVUsR0FBYSxFQUFFLENBQUM7SUFDMUIsT0FBTyxHQUFrQixFQUFFLENBQUM7SUFDNUIsa0JBQWtCLEdBQVc7UUFDekIsVUFBVSxFQUFFLEVBQUU7UUFDZCxR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LFNBQVM7c0JBRFIsS0FBSztnQkFJSyxNQUFNO3NCQURoQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2VsbERvdWJsZUNsaWNrZWRFdmVudCwgQ29sRGVmLCBHcmlkQXBpLCBHcmlkT3B0aW9ucywgSURhdGVGaWx0ZXJQYXJhbXMsIElSb3dOb2RlLCBJU2VydmVyU2lkZURhdGFzb3VyY2UsIElTZXJ2ZXJTaWRlR2V0Um93c1BhcmFtcywgUm93TW9kZWxUeXBlLCBTZXRGaWx0ZXJWYWx1ZXNGdW5jUGFyYW1zIH0gZnJvbSAnQGFnLWdyaWQtY29tbXVuaXR5L2NvcmUnO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgQWN0aW9uSXRlbXMsIENvbHVtbkl0ZW1zLCBEYXRhc291cmNlT3V0cHV0TW9kZWwsIEZpbHRlckdyaWRJdGVtc01vZGVsLCBGaWx0ZXJPcGVyYXRvciwgR3JpZEFjdGlvbk91dHB1dCwgR3JpZElucHV0TW9kZWwsIEdyaWRSZXF1ZXN0UGFyYW0sIFRvb2xiYXJJdGVtcyB9IGZyb20gJy4uLy4uL21vZGVscy9zaGFyZWQubW9kZWwnO1xuaW1wb3J0IHsgQWN0aW9uc0NlbGxSZW5kZXJlciB9IGZyb20gJy4uL2luZGV4LmFwaSc7XG5pbXBvcnQgeyBKRGF0ZVBpcGUgfSBmcm9tICcuLi8uLi9waXBlcy9kYXRlLnBpcGUnO1xuaW1wb3J0IHsgRGF0ZUZpbHRlciB9IGZyb20gJy4vZmlsdGVyL2luZGV4LmFwaSc7XG5leHBvcnQgaW50ZXJmYWNlIElPbHltcGljRGF0YSB7XG4gICAgYXRobGV0ZTogc3RyaW5nLFxuICAgIGFnZTogbnVtYmVyLFxuICAgIGNvdW50cnk6IHN0cmluZyxcbiAgICB5ZWFyOiBudW1iZXIsXG4gICAgZGF0ZTogc3RyaW5nLFxuICAgIHNwb3J0OiBzdHJpbmcsXG4gICAgZ29sZDogbnVtYmVyLFxuICAgIHNpbHZlcjogbnVtYmVyLFxuICAgIGJyb256ZTogbnVtYmVyLFxuICAgIHRvdGFsOiBudW1iZXJcbn1cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYXBwLWdyaWQnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9ncmlkLmNvbXBvbmVudC5odG1sJyxcbn0pXG5leHBvcnQgY2xhc3MgR3JpZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgX3RyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZVxuICAgICkge1xuICAgICAgICB0aGlzLmRhdGFzb3VyY2UgPSB0aGlzLmNyZWF0ZVNlcnZlclNpZGVEYXRhc291cmNlKCk7XG4gICAgfVxuICAgIHByaXZhdGUgZ3JpZEFwaSE6IEdyaWRBcGk7XG4gICAgcHVibGljIGlzU2VydmVyU2lkZUdyb3VwO1xuICAgIHB1YmxpYyBnZXRTZXJ2ZXJTaWRlR3JvdXBLZXkgPSBudWxsO1xuICAgIHB1YmxpYyBncm91cERlZmF1bHRFeHBhbmRlZCA9IC0xO1xuICAgIHByaXZhdGUgX3RyZWVHcm91cENvbHVtbjogc3RyaW5nID0gbnVsbDtcbiAgICBkYXRhc291cmNlOiBJU2VydmVyU2lkZURhdGFzb3VyY2U7XG4gICAgdGhlbWVDbGFzczogc3RyaW5nID0gXCJhZy10aGVtZS1xdWFydHpcIjtcbiAgICBjb2x1bW5EZWZzOiBDb2xEZWZbXSA9IFtdO1xuICAgIF9jb2x1bW46IENvbHVtbkl0ZW1zW10gPSBbXTtcbiAgICBhdXRvR3JvdXBDb2x1bW5EZWY6IENvbERlZiA9IHtcbiAgICAgICAgaGVhZGVyTmFtZTogXCJcIixcbiAgICAgICAgbWluV2lkdGg6IDI1MCxcbiAgICAgICAgc29ydGFibGU6IGZhbHNlLFxuICAgICAgICBjZWxsUmVuZGVyZXJQYXJhbXM6IHtcbiAgICAgICAgICAgIHN1cHByZXNzQ291bnQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgfTtcblxuICAgIGRlZmF1bHRDb2xEZWY6IENvbERlZiA9IHtcbiAgICAgICAgZmxleDogMSxcbiAgICAgICAgbWluV2lkdGg6IDE1MCxcbiAgICAgICAgZmlsdGVyOiAnYWdUZXh0Q29sdW1uRmlsdGVyJyxcbiAgICAgICAgc3VwcHJlc3NIZWFkZXJNZW51QnV0dG9uOiB0cnVlLFxuICAgICAgICBzdXBwcmVzc0hlYWRlckNvbnRleHRNZW51OiB0cnVlXG4gICAgfTtcbiAgICBAT3V0cHV0KClcbiAgICBvbkFjdGlvbjogRXZlbnRFbWl0dGVyPEdyaWRBY3Rpb25PdXRwdXQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpXG4gICAgb25Ub29sYmFyOiBFdmVudEVtaXR0ZXI8VG9vbGJhckl0ZW1zPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIG9uQ2xpY2tlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBASW5wdXQoKVxuICAgIGxhYmVsOiBzdHJpbmcgPSBudWxsO1xuXG4gICAgQElucHV0KClcbiAgICByb3dNb2RlbFR5cGU6IFJvd01vZGVsVHlwZSA9ICdzZXJ2ZXJTaWRlJztcblxuICAgIEBJbnB1dCgpXG4gICAgaXNUb29sYmFyOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpXG4gICAgcnRsOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpXG4gICAgcGFnaW5hdGlvblBhZ2VTaXplID0gMTU7XG5cbiAgICBASW5wdXQoKVxuICAgIHBhZ2luYXRpb25QYWdlU2l6ZVNlbGVjdG9yOiBudW1iZXJbXSB8IGJvb2xlYW4gPSBbMTAsIDE1LCAyNV07XG5cbiAgICBASW5wdXQoKVxuICAgIGVuYWJsZUFkdmFuY2VkRmlsdGVyOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIHRyZWVNb2RlbDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBpc0xlYWY6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgc2hvd0FkdmFuY2VkQnV0dG9uOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpXG4gICAgYWN0aW9uSXRlbXM6IEFjdGlvbkl0ZW1zW10gPSBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIGNvZGU6ICdlZGl0JyxcbiAgICAgICAgICAgIGljb246ICdmYS1saWdodCBmYS1wZW4nLFxuICAgICAgICAgICAgYWx0OiAn2YjbjNix2KfbjNi0J1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBjb2RlOiAnZGVsZXRlJyxcbiAgICAgICAgICAgIGljb246ICdmYS1saWdodCBmYS10cmFzaCcsXG4gICAgICAgICAgICBhbHQ6ICfYrdiw2YEnXG4gICAgICAgIH1cbiAgICBdO1xuXG4gICAgQElucHV0KClcbiAgICB0b29sYmFySXRlbXM6IFRvb2xiYXJJdGVtc1tdID0gW1xuICAgICAgICB7XG4gICAgICAgICAgICBjb2RlOiAnaW5zZXJ0JyxcbiAgICAgICAgICAgIGljb246ICdwbHVzJyxcbiAgICAgICAgICAgIHRleHQ6ICfYp9uM2KzYp9ivINis2K/bjNivJyxcbiAgICAgICAgICAgIHR5cGU6ICdwcmltYXJ5J1xuICAgICAgICB9LFxuICAgICAgICAvLyB7XG4gICAgICAgIC8vICAgICBjb2RlOiAncmVmcmVzaCcsXG4gICAgICAgIC8vICAgICBpY29uOiAnc3luYycsXG4gICAgICAgIC8vICAgICB0ZXh0OiAn2KjYsdmI2LLYsdiz2KfZhtuMJyxcbiAgICAgICAgLy8gICAgIHR5cGU6ICdkZWZhdWx0J1xuICAgICAgICAvLyB9XG4gICAgXTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGdldCB0cmVlR3JvdXBDb2x1bW4oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRyZWVHcm91cENvbHVtbjtcbiAgICB9XG4gICAgcHVibGljIHNldCB0cmVlR3JvdXBDb2x1bW4odjogc3RyaW5nKSB7XG4gICAgICAgIGlmICh2KSB7XG4gICAgICAgICAgICB0aGlzLl90cmVlR3JvdXBDb2x1bW4gPSB2O1xuICAgICAgICAgICAgdGhpcy5pc1NlcnZlclNpZGVHcm91cCA9IGRhdGFJdGVtID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pc0xlYWYpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFkYXRhSXRlbS5sYXN0Tm9kZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBkYXRhSXRlbVt2XTtcbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRhdGFJdGVtW3ZdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICB0aGlzLmdldFNlcnZlclNpZGVHcm91cEtleSA9IGRhdGFJdGVtID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZGF0YUl0ZW1bdl07XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgLy8gdGhpcy5hdXRvR3JvdXBDb2x1bW5EZWYuaGVhZGVyTmFtZSA9IHY7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASW5wdXQoKVxuICAgIGZldGNoRGF0YTogKGZpbHRlckdyaWQ6IEdyaWRJbnB1dE1vZGVsLCByZXF1ZXN0UGFyYW1zOiBHcmlkUmVxdWVzdFBhcmFtKSA9PiBQcm9taXNlPERhdGFzb3VyY2VPdXRwdXRNb2RlbD47XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBnZXQgY29sdW1uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jb2x1bW47XG4gICAgfVxuICAgIHB1YmxpYyBzZXQgY29sdW1uKHY6IENvbHVtbkl0ZW1zW10pIHtcbiAgICAgICAgaWYgKHYgIT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy5fY29sdW1uID0gdjtcbiAgICAgICAgICAgIHYuZm9yRWFjaCgoZWwpID0+IHtcbiAgICAgICAgICAgICAgICB2YXIgZmlsdGVyOiBhbnkgPSAnYWdUZXh0Q29sdW1uRmlsdGVyJztcbiAgICAgICAgICAgICAgICB2YXIgc29ydGFibGU6IGJvb2xlYW4gPSB0cnVlO1xuICAgICAgICAgICAgICAgIHZhciBmaWx0ZXJQYXJhbXM6IElEYXRlRmlsdGVyUGFyYW1zID0ge1xuICAgICAgICAgICAgICAgICAgICBtYXhOdW1Db25kaXRpb25zOiAxXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKGVsLnR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnYm9vbGVhbic6XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXIgPSAnYWdOdW1iZXJDb2x1bW5GaWx0ZXInO1xuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyUGFyYW1zLmZpbHRlck9wdGlvbnMgPSBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJlbXB0eVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheUtleTogJ3RydWUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5TmFtZTogdGhpcy5fdHJhbnNsYXRlLmluc3RhbnQoJ1lFUycpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGU6ICgpID0+IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlck9mSW5wdXRzOiAwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlLZXk6ICdmYWxzZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1lOiB0aGlzLl90cmFuc2xhdGUuaW5zdGFudCgnTk8nKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZGljYXRlOiAoKSA9PiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1iZXJPZklucHV0czogMFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnZW51bSc6XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXIgPSAnYWdOdW1iZXJDb2x1bW5GaWx0ZXInO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaXRlbXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgcHJvcGVydHkgaW4gZWwuZmlsdGVySXRlbXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtcy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheUtleTogZWwuZmlsdGVySXRlbXNbcHJvcGVydHldLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5TmFtZTogdGhpcy5fdHJhbnNsYXRlLmluc3RhbnQoZWwuZmlsdGVySXRlbXNbcHJvcGVydHldKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZGljYXRlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1iZXJPZklucHV0czogMFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJQYXJhbXMuZmlsdGVyT3B0aW9ucyA9IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImVtcHR5XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uaXRlbXNcbiAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlciA9ICdhZ051bWJlckNvbHVtbkZpbHRlcic7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnc2VsZWN0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlciA9ICdhZ1NldENvbHVtbkZpbHRlcic7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlciA9ICdhZ1RleHRDb2x1bW5GaWx0ZXInO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ2RhdGUnOlxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyID0gJ2FnRGF0ZUNvbHVtbkZpbHRlcic7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlciA9ICdhZ1RleHRDb2x1bW5GaWx0ZXInO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChlbC5maWx0ZXIgIT0gdW5kZWZpbmVkICYmICFlbC5maWx0ZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChlbC5zb3J0YWJsZSAhPSB1bmRlZmluZWQgJiYgIWVsLnNvcnRhYmxlKSB7XG4gICAgICAgICAgICAgICAgICAgIHNvcnRhYmxlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChlbC5maWVsZCAhPSB0aGlzLl90cmVlR3JvdXBDb2x1bW4pIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVsLnR5cGUgJiYgZWwudHlwZSA9PSAnYm9vbGVhbicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29sdW1uRGVmcy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZDogZWwuZmllbGQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyTmFtZTogZWwubGFiZWwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyOiBmaWx0ZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydGFibGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWRpdGFibGU6IGVsLmVkaXRhYmxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbldpZHRoOiBlbC5taW5XaWR0aCA/IGVsLm1pbldpZHRoIDogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJQYXJhbXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VsbENsYXNzOiAnYWctYm9vbGVhbi1jZWxsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZWxsUmVuZGVyZXI6IHBhcmFtcyA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJhbXMudmFsdWUgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBhcmFtcy52YWx1ZSA/ICc8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiBzdHJva2U9XCJncmVlblwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjFcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiBjbGFzcz1cImZlYXRoZXIgZmVhdGhlci1jaGVja1wiPjxwYXRoIGQ9XCJNMjAgNkw5IDE3TDQgMTJcIi8+PC9zdmc+JyA6ICc8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBzdHJva2U9XCJyZWRcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIxXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgY2xhc3M9XCJmZWF0aGVyIGZlYXRoZXIteFwiPjxsaW5lIHgxPVwiMThcIiB5MT1cIjZcIiB4Mj1cIjZcIiB5Mj1cIjE4XCIgLz48bGluZSB4MT1cIjZcIiB5MT1cIjZcIiB4Mj1cIjE4XCIgeTI9XCIxOFwiIC8+PC9zdmc+JztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZWwudHlwZSAmJiBlbC50eXBlID09ICdlbnVtJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb2x1bW5EZWZzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiBlbC5maWVsZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJOYW1lOiBlbC5sYWJlbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXI6IGZpbHRlcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0YWJsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlZGl0YWJsZTogZWwuZWRpdGFibGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluV2lkdGg6IGVsLm1pbldpZHRoID8gZWwubWluV2lkdGggOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlclBhcmFtcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZWxsUmVuZGVyZXI6IHBhcmFtcyA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJhbXMudmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl90cmFuc2xhdGUuaW5zdGFudChwYXJhbXMudmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChlbC50eXBlICYmIGVsLnR5cGUgPT0gJ2RhdGUnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbHVtbkRlZnMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6IGVsLmZpZWxkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlck5hbWU6IGVsLmxhYmVsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcjogRGF0ZUZpbHRlcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0YWJsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlZGl0YWJsZTogZWwuZWRpdGFibGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluV2lkdGg6IGVsLm1pbldpZHRoID8gZWwubWluV2lkdGggOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlclBhcmFtcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZWxsUmVuZGVyZXI6IHBhcmFtcyA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJhbXMudmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgSkRhdGVQaXBlKCkudHJhbnNmb3JtKHBhcmFtcy52YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGVsLnR5cGUgJiYgZWwudHlwZSA9PSAnZGF0ZS10aW1lJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb2x1bW5EZWZzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiBlbC5maWVsZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJOYW1lOiBlbC5sYWJlbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXI6IERhdGVGaWx0ZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydGFibGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWRpdGFibGU6IGVsLmVkaXRhYmxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbldpZHRoOiBlbC5taW5XaWR0aCA/IGVsLm1pbldpZHRoIDogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJQYXJhbXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VsbFJlbmRlcmVyOiBwYXJhbXMgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFyYW1zLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEpEYXRlUGlwZSgpLnRyYW5zZm9ybShwYXJhbXMudmFsdWUsIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChlbC50eXBlICYmIGVsLnR5cGUgPT0gJ3ByaWNlJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb2x1bW5EZWZzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiBlbC5maWVsZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJOYW1lOiBlbC5sYWJlbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXI6IGZpbHRlcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0YWJsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlZGl0YWJsZTogZWwuZWRpdGFibGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluV2lkdGg6IGVsLm1pbldpZHRoID8gZWwubWluV2lkdGggOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlclBhcmFtcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZWxsUmVuZGVyZXI6IHBhcmFtcyA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJhbXMudmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwYXJhbXMudmFsdWUudG9Mb2NhbGVTdHJpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZWwudHlwZSAmJiBlbC50eXBlID09ICdpbWFnZScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29sdW1uRGVmcy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZDogZWwuZmllbGQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyTmFtZTogZWwubGFiZWwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluV2lkdGg6IDgwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiA4MCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXI6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnRhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlZGl0YWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyUGFyYW1zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlbGxSZW5kZXJlcjogcGFyYW1zID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmFtcy52YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGA8aW1nIGNsYXNzPVwicm91bmRlZC1mdWxsIG10LTFcIiB3aWR0aD1cIjMyXCIgaGVpZ2h0PVwiMzJcIiBzcmM9XCIke3BhcmFtcy52YWx1ZX1cIi8+YDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbHVtbkRlZnMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6IGVsLmZpZWxkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlck5hbWU6IGVsLmxhYmVsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0YWJsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlZGl0YWJsZTogZWwuZWRpdGFibGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyUGFyYW1zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbldpZHRoOiBlbC5taW5XaWR0aCA/IGVsLm1pbldpZHRoIDogbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYXV0b0dyb3VwQ29sdW1uRGVmLmZpZWxkID0gZWwuZmllbGQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAodGhpcy5hY3Rpb25JdGVtcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jb2x1bW5EZWZzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICBmaWx0ZXI6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBoZWFkZXJOYW1lOiAnJyxcbiAgICAgICAgICAgICAgICAgICAgbWluV2lkdGg6IDEwMCxcbiAgICAgICAgICAgICAgICAgICAgcmVzaXphYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBwaW5uZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIHNvcnRhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgZmllbGQ6ICdhY3Rpb25zJyxcbiAgICAgICAgICAgICAgICAgICAgY2VsbFJlbmRlcmVyOiBBY3Rpb25zQ2VsbFJlbmRlcmVyLFxuICAgICAgICAgICAgICAgICAgICBjZWxsUmVuZGVyZXJQYXJhbXM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s6IChwYXJhbXM6IEdyaWRBY3Rpb25PdXRwdXQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9uQWN0aW9uLmVtaXQocGFyYW1zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjZWxsRG91YmxlQ2xpY2tlZChlOiBDZWxsRG91YmxlQ2xpY2tlZEV2ZW50KSB7XG4gICAgICAgIHRoaXMub25DbGlja2VkLmVtaXQoZS5kYXRhKTtcbiAgICB9XG5cbiAgICBoYW5kbGVDbGljayhpdGVtOiBUb29sYmFySXRlbXMpIHtcbiAgICAgICAgdGhpcy5vblRvb2xiYXIuZW1pdChpdGVtKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVmcmVzaCgpIHtcbiAgICAgICAgdGhpcy5ncmlkQXBpLnJlZnJlc2hTZXJ2ZXJTaWRlKHsgcHVyZ2U6IHRydWUgfSlcbiAgICB9XG5cbiAgICBvbkdyaWRSZWFkeShwYXJhbXM6IGFueSkge1xuICAgICAgICB0aGlzLmdyaWRBcGkgPSBwYXJhbXMuYXBpO1xuICAgIH1cblxuICAgIGFkdmFuY2VkRmlsdGVyKCkge1xuICAgICAgICB0aGlzLmVuYWJsZUFkdmFuY2VkRmlsdGVyID0gIXRoaXMuZW5hYmxlQWR2YW5jZWRGaWx0ZXI7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5ncmlkQXBpLnNob3dBZHZhbmNlZEZpbHRlckJ1aWxkZXIoKTtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIChkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdhZy1pY29uLW1heGltaXplJylbMF0gYXMgSFRNTEVsZW1lbnQpLmNsaWNrKCk7XG4gICAgICAgICAgICB9KVxuICAgICAgICB9LCAxMCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRSb3V0ZVRvTm9kZShyb3dOb2RlOiBJUm93Tm9kZSk6IHN0cmluZ1tdIHtcbiAgICAgICAgaWYgKCFyb3dOb2RlLnBhcmVudCkge1xuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAuLi50aGlzLmdldFJvdXRlVG9Ob2RlKHJvd05vZGUucGFyZW50KSxcbiAgICAgICAgICAgIHJvd05vZGUua2V5ID8gcm93Tm9kZS5rZXkgOiByb3dOb2RlLmRhdGEuZW1wbG95ZWVOYW1lLFxuICAgICAgICBdO1xuICAgIH1cblxuICAgIHJlZnJlc2hOb2RlKGlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRSb3dzID0gdGhpcy5ncmlkQXBpLmdldFJvd05vZGUoaWQpO1xuICAgICAgICBjb25zdCByb3V0ZSA9IHRoaXMuZ2V0Um91dGVUb05vZGUoc2VsZWN0ZWRSb3dzKTtcbiAgICAgICAgdGhpcy5ncmlkQXBpLnJlZnJlc2hTZXJ2ZXJTaWRlKHtcbiAgICAgICAgICAgIHB1cmdlOiB0cnVlLFxuICAgICAgICAgICAgcm91dGU6IHJvdXRlXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHJlZnJlc2hQYXJlbnROb2RlKGlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRSb3dzID0gdGhpcy5ncmlkQXBpLmdldFJvd05vZGUoaWQpO1xuICAgICAgICBjb25zdCByb3V0ZSA9IHRoaXMuZ2V0Um91dGVUb05vZGUoc2VsZWN0ZWRSb3dzLnBhcmVudCk7XG4gICAgICAgIHRoaXMuZ3JpZEFwaS5yZWZyZXNoU2VydmVyU2lkZSh7XG4gICAgICAgICAgICBwdXJnZTogdHJ1ZSxcbiAgICAgICAgICAgIHJvdXRlOiByb3V0ZVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBjcmVhdGVTZXJ2ZXJTaWRlRGF0YXNvdXJjZSgpOiBJU2VydmVyU2lkZURhdGFzb3VyY2Uge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZ2V0Um93czogKHBhcmFtczogSVNlcnZlclNpZGVHZXRSb3dzUGFyYW1zKSA9PiB7XG4gICAgICAgICAgICAgICAgZGVidWdnZXJcbiAgICAgICAgICAgICAgICBsZXQgZmlsdGVyOiBGaWx0ZXJHcmlkSXRlbXNNb2RlbCA9IG51bGw7XG4gICAgICAgICAgICAgICAgaWYgKE9iamVjdC5rZXlzKHBhcmFtcy5yZXF1ZXN0LmZpbHRlck1vZGVsKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGZpbHRlciA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2dpYzogJ0FORCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJzOiBbXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZUNhc2U6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRvcjogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRydW5jYXRlRGF0ZTogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBwYXJhbXMucmVxdWVzdC5maWx0ZXJNb2RlbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmFtcy5yZXF1ZXN0LmZpbHRlck1vZGVsW2tleV0uZmlsdGVyVHlwZSA9PSAnY3VzdG9tLWRhdGUnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyLmZpbHRlcnMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZDoga2V5ID09ICdhZy1HcmlkLUF1dG9Db2x1bW4nID8gdGhpcy5fdHJlZUdyb3VwQ29sdW1uIDoga2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dpYzogJ0FORCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcnM6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZUNhc2U6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRvcjogRmlsdGVyT3BlcmF0b3IudHJ1bmNHcmVhdGVyVGhhbkVxdWFsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVuY2F0ZURhdGU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBuZXcgRGF0ZShwYXJhbXMucmVxdWVzdC5maWx0ZXJNb2RlbFtrZXldLmRhdGVGcm9tKS50b0lTT1N0cmluZygpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmFtcy5yZXF1ZXN0LmZpbHRlck1vZGVsW2tleV0uZGF0ZVRvICE9IFwiXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyLmZpbHRlcnMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiBrZXkgPT0gJ2FnLUdyaWQtQXV0b0NvbHVtbicgPyB0aGlzLl90cmVlR3JvdXBDb2x1bW4gOiBrZXksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dpYzogJ0FORCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJzOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWdub3JlQ2FzZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRvcjogRmlsdGVyT3BlcmF0b3IudHJ1bmNMZXNzVGhhbk9yRXF1YWwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVuY2F0ZURhdGU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogbmV3IERhdGUocGFyYW1zLnJlcXVlc3QuZmlsdGVyTW9kZWxba2V5XS5kYXRlVG8pLnRvSVNPU3RyaW5nKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvcGVyYXRpb24gPSBGaWx0ZXJPcGVyYXRvcltwYXJhbXMucmVxdWVzdC5maWx0ZXJNb2RlbFtrZXldLnR5cGVdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpZ25vcmVDYXNlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmaW5kRWwgPSB0aGlzLl9jb2x1bW4uZmluZCgoZWwpID0+IGVsLmZpZWxkID09IGtleSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGZpZWxkID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoa2V5ID09ICdhZy1HcmlkLUF1dG9Db2x1bW4nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkID0gdGhpcy5fdHJlZUdyb3VwQ29sdW1uO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkID0ga2V5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmluZEVsLnNlYXJjaEZpZWxkICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkID0gZmluZEVsLnNlYXJjaEZpZWxkO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaW5kRWwgJiYgZmluZEVsLnR5cGUgPT0gJ2VudW0nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZUNhc2UgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyLmZpbHRlcnMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9naWM6ICdBTkQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJzOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZ25vcmVDYXNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRvcjogb3BlcmF0aW9uID8gb3BlcmF0aW9uIDogRmlsdGVyT3BlcmF0b3IuZXF1YWxzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVuY2F0ZURhdGU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBwYXJhbXMucmVxdWVzdC5maWx0ZXJNb2RlbFtrZXldLmZpbHRlciA/IHBhcmFtcy5yZXF1ZXN0LmZpbHRlck1vZGVsW2tleV0uZmlsdGVyIDogcGFyYW1zLnJlcXVlc3QuZmlsdGVyTW9kZWxba2V5XS50eXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBncmlkRmlsdGVyOiBHcmlkSW5wdXRNb2RlbCA9IHtcbiAgICAgICAgICAgICAgICAgICAgdGFrZTogcGFyYW1zLmFwaS5wYWdpbmF0aW9uR2V0UGFnZVNpemUoKSxcbiAgICAgICAgICAgICAgICAgICAgZGF0YTogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyLFxuICAgICAgICAgICAgICAgICAgICBza2lwOiBwYXJhbXMuYXBpLnBhZ2luYXRpb25HZXRDdXJyZW50UGFnZSgpICogcGFyYW1zLmFwaS5wYWdpbmF0aW9uR2V0UGFnZVNpemUoKSxcbiAgICAgICAgICAgICAgICAgICAgc29ydHM6IHBhcmFtcy5yZXF1ZXN0LnNvcnRNb2RlbC5sZW5ndGggPiAwID8gW3sgZGlyOiBwYXJhbXMucmVxdWVzdC5zb3J0TW9kZWxbMF0uc29ydCwgZmllbGQ6IHBhcmFtcy5yZXF1ZXN0LnNvcnRNb2RlbFswXS5jb2xJZCB9XSA6IFtdXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBjb25zdCByZXF1ZXN0UGFyYW1zOiBHcmlkUmVxdWVzdFBhcmFtID0ge1xuICAgICAgICAgICAgICAgICAgICBwYXJlbnROb2RlOiBwYXJhbXMucGFyZW50Tm9kZS5kYXRhXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB0aGlzLmZldGNoRGF0YShncmlkRmlsdGVyLCByZXF1ZXN0UGFyYW1zKS50aGVuKGRhdGEgPT4ge1xuICAgICAgICAgICAgICAgICAgICBwYXJhbXMuc3VjY2Vzcyh7XG4gICAgICAgICAgICAgICAgICAgICAgICByb3dEYXRhOiBkYXRhLml0ZW1zLFxuICAgICAgICAgICAgICAgICAgICAgICAgcm93Q291bnQ6IGRhdGEudG90YWxDb3VudFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KS5jYXRjaCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHBhcmFtcy5mYWlsKCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7IH1cbn0iLCI8IS0tIDxidXR0b24gKGNsaWNrKT1cImVuYWJsZUFkdmFuY2VkRmlsdGVyPSFlbmFibGVBZHZhbmNlZEZpbHRlclwiPmFkdmFuY2VkPC9idXR0b24+IC0tPlxuPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1iZXR3ZWVuIGl0ZW1zLWNlbnRlciBtYi00IHBiLTQgYm9yZGVyLWIgYm9yZGVyLWItc2xhdGUtMjAwXCIgKm5nSWY9XCJpc1Rvb2xiYXJcIj5cbiAgICA8ZGl2PlxuICAgICAgICA8aDQgY2xhc3M9XCJmb250LXNlbWlib2xkIHRleHQtMnhsXCI+e3tsYWJlbH19PC9oND5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBnYXAtM1wiPlxuICAgICAgICA8YnV0dG9uIG56LWJ1dHRvbiAqbmdGb3I9XCJsZXQgaXRlbSBvZiB0b29sYmFySXRlbXNcIiAoY2xpY2spPVwiaGFuZGxlQ2xpY2soaXRlbSlcIiBbbnpUeXBlXT1cIml0ZW0udHlwZVwiPlxuICAgICAgICAgICAgPHNwYW4gbnotaWNvbiBbbnpUeXBlXT1cIml0ZW0uaWNvblwiPjwvc3Bhbj5cbiAgICAgICAgICAgIHt7aXRlbS50ZXh0fX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxidXR0b24gbnotYnV0dG9uIChjbGljayk9XCJyZWZyZXNoKClcIiBuelR5cGU9XCJkZWZhdWx0XCI+XG4gICAgICAgICAgICA8c3BhbiBuei1pY29uIG56VHlwZT1cInN5bmNcIj48L3NwYW4+XG4gICAgICAgICAgICDYqNix2YjYstix2LPYp9mG24xcbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwhLS0gPGJ1dHRvbiBuei1idXR0b24gKGNsaWNrKT1cImFkdmFuY2VkRmlsdGVyKClcIiAqbmdJZj1cInNob3dBZHZhbmNlZEJ1dHRvblwiIG56VHlwZT1cImRlZmF1bHRcIj5cbiAgICAgICAgICAgIDxzcGFuIG56LWljb24gbnpUeXBlPVwiZmlsdGVyXCI+PC9zcGFuPlxuICAgICAgICAgICAg2KzYs9iq2KzZiNuMINm+24zYtNix2YHYqtmHXG4gICAgICAgIDwvYnV0dG9uPiAtLT5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuPGFnLWdyaWQtYW5ndWxhciBzdHlsZT1cIndpZHRoOiAxMDAlO1wiIFtzdHlsZV09XCIoaXNUb29sYmFyKSA/ICdoZWlnaHQ6IGNhbGMoMTAwJSAtIDFyZW0gLSA0OHB4KTsnOidoZWlnaHQ6IDEwMCU7J1wiIFtjb2x1bW5EZWZzXT1cImNvbHVtbkRlZnNcIiBbcGFnaW5hdGlvbl09XCJ0cnVlXCJcbiAgICBbcGFnaW5hdGlvblBhZ2VTaXplXT1cInBhZ2luYXRpb25QYWdlU2l6ZVwiIFtwYWdpbmF0aW9uUGFnZVNpemVTZWxlY3Rvcl09XCJwYWdpbmF0aW9uUGFnZVNpemVTZWxlY3RvclwiXG4gICAgW2NsYXNzXT1cInRoZW1lQ2xhc3NcIiBbZGVmYXVsdENvbERlZl09XCJkZWZhdWx0Q29sRGVmXCIgW2VuYWJsZUFkdmFuY2VkRmlsdGVyXT1cImVuYWJsZUFkdmFuY2VkRmlsdGVyXCIgW2VuYWJsZVJ0bF09XCJydGxcIlxuICAgIFt0cmVlRGF0YV09XCJ0cmVlTW9kZWxcIiBbYXV0b0dyb3VwQ29sdW1uRGVmXT1cImF1dG9Hcm91cENvbHVtbkRlZlwiIFtpc1NlcnZlclNpZGVHcm91cF09XCJpc1NlcnZlclNpZGVHcm91cFwiXG4gICAgW2dldFNlcnZlclNpZGVHcm91cEtleV09XCJnZXRTZXJ2ZXJTaWRlR3JvdXBLZXlcIiBbcm93TW9kZWxUeXBlXT1cInJvd01vZGVsVHlwZVwiIFtzZXJ2ZXJTaWRlRGF0YXNvdXJjZV09XCJkYXRhc291cmNlXCJcbiAgICAoZ3JpZFJlYWR5KT1cIm9uR3JpZFJlYWR5KCRldmVudClcIiBbY2FjaGVCbG9ja1NpemVdPVwicGFnaW5hdGlvblBhZ2VTaXplXCIgW21heEJsb2Nrc0luQ2FjaGVdPVwiMlwiXG4gICAgW2NvbnRleHRdPVwie2FjdGlvbkl0ZW1zOiBhY3Rpb25JdGVtc31cIiAoY2VsbERvdWJsZUNsaWNrZWQpPVwiY2VsbERvdWJsZUNsaWNrZWQoJGV2ZW50KVwiICNncmlkIC8+Il19
|
|
520
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaGFyZWQvc3JjL2xpYi9jb21wb25lbnRzL2dyaWQvZ3JpZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaGFyZWQvc3JjL2xpYi9jb21wb25lbnRzL2dyaWQvZ3JpZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRS9FLE9BQU8sRUFBeUUsY0FBYyxFQUFvRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3BNLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNuRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7Ozs7Ozs7QUFpQmhELE1BQU0sT0FBTyxhQUFhO0lBQ3RCLFlBQ1ksVUFBNEI7UUFBNUIsZUFBVSxHQUFWLFVBQVUsQ0FBa0I7UUFNakMsMEJBQXFCLEdBQUcsSUFBSSxDQUFDO1FBQzdCLHlCQUFvQixHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3pCLHFCQUFnQixHQUFXLElBQUksQ0FBQztRQUV4QyxlQUFVLEdBQVcsaUJBQWlCLENBQUM7UUFDdkMsZUFBVSxHQUFhLEVBQUUsQ0FBQztRQUMxQixZQUFPLEdBQWtCLEVBQUUsQ0FBQztRQUM1QixvQkFBZSxHQUF3RyxFQUFFLElBQUksRUFBRSxjQUFjLEVBQUUsQ0FBQztRQUNoSix1QkFBa0IsR0FBVztZQUN6QixVQUFVLEVBQUUsRUFBRTtZQUNkLFFBQVEsRUFBRSxHQUFHO1lBQ2IsUUFBUSxFQUFFLEtBQUs7WUFDZixrQkFBa0IsRUFBRTtnQkFDaEIsYUFBYSxFQUFFLElB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LFlBQVk7c0JBRFgsS0FBSztnQkFJTixTQUFTO3NCQURSLEtBQUs7Z0JBSU4sR0FBRztzQkFERixLQUFLO2dCQUlOLGtCQUFrQjtzQkFEakIsS0FBSztnQkFJTiwwQkFBMEI7c0JBRHpCLEtBQUs7Z0JBSU4sb0JBQW9CO3NCQURuQixLQUFLO2dCQUlOLFNBQVM7c0JBRFIsS0FBSztnQkFJTixNQUFNO3NCQURMLEtBQUs7Z0JBSUssY0FBYztzQkFEeEIsS0FBSztnQkFhTixrQkFBa0I7c0JBRGpCLEtBQUs7Z0JBSU4sV0FBVztzQkFEVixLQUFLO2dCQWVOLFlBQVk7c0JBRFgsS0FBSztnQkFpQkssZUFBZTtzQkFEekIsS0FBSztnQkF5Qk4sU0FBUztzQkFEUixLQUFLO2dCQUlLLE1BQU07c0JBRGhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZWxsRG91YmxlQ2xpY2tlZEV2ZW50LCBDb2xEZWYsIEdyaWRBcGksIEdyaWRPcHRpb25zLCBJRGF0ZUZpbHRlclBhcmFtcywgSVJvd05vZGUsIElTZXJ2ZXJTaWRlRGF0YXNvdXJjZSwgSVNlcnZlclNpZGVHZXRSb3dzUGFyYW1zLCBSb3dNb2RlbFR5cGUsIFNldEZpbHRlclZhbHVlc0Z1bmNQYXJhbXMsIFNpemVDb2x1bW5zVG9Db250ZW50U3RyYXRlZ3ksIFNpemVDb2x1bW5zVG9GaXRHcmlkU3RyYXRlZ3ksIFNpemVDb2x1bW5zVG9GaXRQcm92aWRlZFdpZHRoU3RyYXRlZ3kgfSBmcm9tICdAYWctZ3JpZC1jb21tdW5pdHkvY29yZSc7XG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBBY3Rpb25JdGVtcywgQ29sdW1uSXRlbXMsIERhdGFzb3VyY2VPdXRwdXRNb2RlbCwgRmlsdGVyR3JpZEl0ZW1zTW9kZWwsIEZpbHRlck9wZXJhdG9yLCBHcmlkQWN0aW9uT3V0cHV0LCBHcmlkSW5wdXRNb2RlbCwgR3JpZFJlcXVlc3RQYXJhbSwgVG9vbGJhckl0ZW1zIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3NoYXJlZC5tb2RlbCc7XG5pbXBvcnQgeyBBY3Rpb25zQ2VsbFJlbmRlcmVyIH0gZnJvbSAnLi4vaW5kZXguYXBpJztcbmltcG9ydCB7IEpEYXRlUGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzL2RhdGUucGlwZSc7XG5pbXBvcnQgeyBEYXRlRmlsdGVyIH0gZnJvbSAnLi9maWx0ZXIvaW5kZXguYXBpJztcbmV4cG9ydCBpbnRlcmZhY2UgSU9seW1waWNEYXRhIHtcbiAgICBhdGhsZXRlOiBzdHJpbmcsXG4gICAgYWdlOiBudW1iZXIsXG4gICAgY291bnRyeTogc3RyaW5nLFxuICAgIHllYXI6IG51bWJlcixcbiAgICBkYXRlOiBzdHJpbmcsXG4gICAgc3BvcnQ6IHN0cmluZyxcbiAgICBnb2xkOiBudW1iZXIsXG4gICAgc2lsdmVyOiBudW1iZXIsXG4gICAgYnJvbnplOiBudW1iZXIsXG4gICAgdG90YWw6IG51bWJlclxufVxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdhcHAtZ3JpZCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2dyaWQuY29tcG9uZW50Lmh0bWwnLFxufSlcbmV4cG9ydCBjbGFzcyBHcmlkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBfdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlXG4gICAgKSB7XG4gICAgICAgIHRoaXMuZGF0YXNvdXJjZSA9IHRoaXMuY3JlYXRlU2VydmVyU2lkZURhdGFzb3VyY2UoKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBncmlkQXBpITogR3JpZEFwaTtcbiAgICBwdWJsaWMgaXNTZXJ2ZXJTaWRlR3JvdXA7XG4gICAgcHVibGljIGdldFNlcnZlclNpZGVHcm91cEtleSA9IG51bGw7XG4gICAgcHVibGljIGdyb3VwRGVmYXVsdEV4cGFuZGVkID0gLTE7XG4gICAgcHJpdmF0ZSBfdHJlZUdyb3VwQ29sdW1uOiBzdHJpbmcgPSBudWxsO1xuICAgIGRhdGFzb3VyY2U6IElTZXJ2ZXJTaWRlRGF0YXNvdXJjZTtcbiAgICB0aGVtZUNsYXNzOiBzdHJpbmcgPSBcImFnLXRoZW1lLXF1YXJ0elwiO1xuICAgIGNvbHVtbkRlZnM6IENvbERlZltdID0gW107XG4gICAgX2NvbHVtbjogQ29sdW1uSXRlbXNbXSA9IFtdO1xuICAgIF9hdXRvQ29sdW1uU2l6ZTogU2l6ZUNvbHVtbnNUb0ZpdEdyaWRTdHJhdGVneSB8IFNpemVDb2x1bW5zVG9GaXRQcm92aWRlZFdpZHRoU3RyYXRlZ3kgfCBTaXplQ29sdW1uc1RvQ29udGVudFN0cmF0ZWd5ID0geyB0eXBlOiAnZml0R3JpZFdpZHRoJyB9O1xuICAgIGF1dG9Hcm91cENvbHVtbkRlZjogQ29sRGVmID0ge1xuICAgICAgICBoZWFkZXJOYW1lOiBcIlwiLFxuICAgICAgICBtaW5XaWR0aDogMjUwLFxuICAgICAgICBzb3J0YWJsZTogZmFsc2UsXG4gICAgICAgIGNlbGxSZW5kZXJlclBhcmFtczoge1xuICAgICAgICAgICAgc3VwcHJlc3NDb3VudDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICB9O1xuXG4gICAgZGVmYXVsdENvbERlZjogQ29sRGVmID0ge1xuICAgICAgICBmbGV4OiAxLFxuICAgICAgICBtaW5XaWR0aDogMTUwLFxuICAgICAgICBmaWx0ZXI6ICdhZ1RleHRDb2x1bW5GaWx0ZXInLFxuICAgICAgICBzdXBwcmVzc0hlYWRlck1lbnVCdXR0b246IHRydWUsXG4gICAgICAgIHN1cHByZXNzSGVhZGVyQ29udGV4dE1lbnU6IHRydWUsXG4gICAgICAgIHN1cHByZXNzU2l6ZVRvRml0OiB0cnVlXG4gICAgfTtcblxuXG4gICAgQE91dHB1dCgpXG4gICAgb25BY3Rpb246IEV2ZW50RW1pdHRlcjxHcmlkQWN0aW9uT3V0cHV0PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIG9uVG9vbGJhcjogRXZlbnRFbWl0dGVyPFRvb2xiYXJJdGVtcz4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KClcbiAgICBvbkNsaWNrZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQElucHV0KClcbiAgICBsYWJlbDogc3RyaW5nID0gbnVsbDtcblxuICAgIEBJbnB1dCgpXG4gICAgcm93TW9kZWxUeXBlOiBSb3dNb2RlbFR5cGUgPSAnc2VydmVyU2lkZSc7XG5cbiAgICBASW5wdXQoKVxuICAgIGlzVG9vbGJhcjogYm9vbGVhbiA9IHRydWU7XG5cbiAgICBASW5wdXQoKVxuICAgIHJ0bDogYm9vbGVhbiA9IHRydWU7XG5cbiAgICBASW5wdXQoKVxuICAgIHBhZ2luYXRpb25QYWdlU2l6ZSA9IDE1O1xuXG4gICAgQElucHV0KClcbiAgICBwYWdpbmF0aW9uUGFnZVNpemVTZWxlY3RvcjogbnVtYmVyW10gfCBib29sZWFuID0gWzEwLCAxNSwgMjVdO1xuXG4gICAgQElucHV0KClcbiAgICBlbmFibGVBZHZhbmNlZEZpbHRlcjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICB0cmVlTW9kZWw6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgaXNMZWFmOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBnZXQgYXV0b0NvbHVtblNpemUoKTogU2l6ZUNvbHVtbnNUb0ZpdEdyaWRTdHJhdGVneSB8IFNpemVDb2x1bW5zVG9GaXRQcm92aWRlZFdpZHRoU3RyYXRlZ3kgfCBTaXplQ29sdW1uc1RvQ29udGVudFN0cmF0ZWd5IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2F1dG9Db2x1bW5TaXplO1xuICAgIH1cbiAgICBwdWJsaWMgc2V0IGF1dG9Db2x1bW5TaXplKHY6IGJvb2xlYW4pIHtcbiAgICAgICAgaWYgKHYpIHtcbiAgICAgICAgICAgIHRoaXMuX2F1dG9Db2x1bW5TaXplID0geyB0eXBlOiAnZml0Q2VsbENvbnRlbnRzJyB9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fYXV0b0NvbHVtblNpemUgPSB7IHR5cGU6ICdmaXRHcmlkV2lkdGgnIH07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASW5wdXQoKVxuICAgIHNob3dBZHZhbmNlZEJ1dHRvbjogYm9vbGVhbiA9IHRydWU7XG5cbiAgICBASW5wdXQoKVxuICAgIGFjdGlvbkl0ZW1zOiBBY3Rpb25JdGVtc1tdID0gW1xuICAgICAgICB7XG4gICAgICAgICAgICBjb2RlOiAnZWRpdCcsXG4gICAgICAgICAgICBpY29uOiAnZmEtbGlnaHQgZmEtcGVuJyxcbiAgICAgICAgICAgIGFsdDogJ9mI24zYsdin24zYtCdcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgY29kZTogJ2RlbGV0ZScsXG4gICAgICAgICAgICBpY29uOiAnZmEtbGlnaHQgZmEtdHJhc2gnLFxuICAgICAgICAgICAgYWx0OiAn2K3YsNmBJ1xuICAgICAgICB9XG4gICAgXTtcblxuICAgIEBJbnB1dCgpXG4gICAgdG9vbGJhckl0ZW1zOiBUb29sYmFySXRlbXNbXSA9IFtcbiAgICAgICAge1xuICAgICAgICAgICAgY29kZTogJ2luc2VydCcsXG4gICAgICAgICAgICBpY29uOiAncGx1cycsXG4gICAgICAgICAgICB0ZXh0OiAn2KfbjNis2KfYryDYrNiv24zYrycsXG4gICAgICAgICAgICB0eXBlOiAncHJpbWFyeSdcbiAgICAgICAgfSxcbiAgICAgICAgLy8ge1xuICAgICAgICAvLyAgICAgY29kZTogJ3JlZnJlc2gnLFxuICAgICAgICAvLyAgICAgaWNvbjogJ3N5bmMnLFxuICAgICAgICAvLyAgICAgdGV4dDogJ9io2LHZiNiy2LHYs9in2YbbjCcsXG4gICAgICAgIC8vICAgICB0eXBlOiAnZGVmYXVsdCdcbiAgICAgICAgLy8gfVxuICAgIF07XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBnZXQgdHJlZUdyb3VwQ29sdW1uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy50cmVlR3JvdXBDb2x1bW47XG4gICAgfVxuICAgIHB1YmxpYyBzZXQgdHJlZUdyb3VwQ29sdW1uKHY6IHN0cmluZykge1xuICAgICAgICBpZiAodikge1xuICAgICAgICAgICAgdGhpcy5fdHJlZUdyb3VwQ29sdW1uID0gdjtcbiAgICAgICAgICAgIHRoaXMuaXNTZXJ2ZXJTaWRlR3JvdXAgPSBkYXRhSXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNMZWFmKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghZGF0YUl0ZW0ubGFzdE5vZGUpXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGF0YUl0ZW1bdl07XG4gICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBkYXRhSXRlbVt2XTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdGhpcy5nZXRTZXJ2ZXJTaWRlR3JvdXBLZXkgPSBkYXRhSXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRhdGFJdGVtW3ZdO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIC8vIHRoaXMuYXV0b0dyb3VwQ29sdW1uRGVmLmhlYWRlck5hbWUgPSB2O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICBmZXRjaERhdGE6IChmaWx0ZXJHcmlkOiBHcmlkSW5wdXRNb2RlbCwgcmVxdWVzdFBhcmFtczogR3JpZFJlcXVlc3RQYXJhbSkgPT4gUHJvbWlzZTxEYXRhc291cmNlT3V0cHV0TW9kZWw+O1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZ2V0IGNvbHVtbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29sdW1uO1xuICAgIH1cbiAgICBwdWJsaWMgc2V0IGNvbHVtbih2OiBDb2x1bW5JdGVtc1tdKSB7XG4gICAgICAgIGlmICh2ICE9IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMuX2NvbHVtbiA9IHY7XG4gICAgICAgICAgICB2LmZvckVhY2goKGVsKSA9PiB7XG4gICAgICAgICAgICAgICAgdmFyIGZpbHRlcjogYW55ID0gJ2FnVGV4dENvbHVtbkZpbHRlcic7XG4gICAgICAgICAgICAgICAgdmFyIHNvcnRhYmxlOiBib29sZWFuID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB2YXIgZmlsdGVyUGFyYW1zOiBJRGF0ZUZpbHRlclBhcmFtcyA9IHtcbiAgICAgICAgICAgICAgICAgICAgbWF4TnVtQ29uZGl0aW9uczogMVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgc3dpdGNoIChlbC50eXBlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyID0gJ2FnTnVtYmVyQ29sdW1uRmlsdGVyJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlclBhcmFtcy5maWx0ZXJPcHRpb25zID0gW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZW1wdHlcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlLZXk6ICd0cnVlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheU5hbWU6IHRoaXMuX3RyYW5zbGF0ZS5pbnN0YW50KCdZRVMnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZGljYXRlOiAoKSA9PiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1iZXJPZklucHV0czogMFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5S2V5OiAnZmFsc2UnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5TmFtZTogdGhpcy5fdHJhbnNsYXRlLmluc3RhbnQoJ05PJyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZTogKCkgPT4gdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyT2ZJbnB1dHM6IDBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ2VudW0nOlxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyID0gJ2FnTnVtYmVyQ29sdW1uRmlsdGVyJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1zID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHByb3BlcnR5IGluIGVsLmZpbHRlckl0ZW1zKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlLZXk6IGVsLmZpbHRlckl0ZW1zW3Byb3BlcnR5XSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheU5hbWU6IHRoaXMuX3RyYW5zbGF0ZS5pbnN0YW50KGVsLmZpbHRlckl0ZW1zW3Byb3BlcnR5XSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyT2ZJbnB1dHM6IDBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyUGFyYW1zLmZpbHRlck9wdGlvbnMgPSBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJlbXB0eVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLml0ZW1zXG4gICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ251bWJlcic6XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXIgPSAnYWdOdW1iZXJDb2x1bW5GaWx0ZXInO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ3NlbGVjdCc6XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXIgPSAnYWdTZXRDb2x1bW5GaWx0ZXInO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXIgPSAnYWdUZXh0Q29sdW1uRmlsdGVyJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlICdkYXRlJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlciA9ICdhZ0RhdGVDb2x1bW5GaWx0ZXInO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXIgPSAnYWdUZXh0Q29sdW1uRmlsdGVyJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoZWwuZmlsdGVyICE9IHVuZGVmaW5lZCAmJiAhZWwuZmlsdGVyKSB7XG4gICAgICAgICAgICAgICAgICAgIGZpbHRlciA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoZWwuc29ydGFibGUgIT0gdW5kZWZpbmVkICYmICFlbC5zb3J0YWJsZSkge1xuICAgICAgICAgICAgICAgICAgICBzb3J0YWJsZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoZWwuZmllbGQgIT0gdGhpcy5fdHJlZUdyb3VwQ29sdW1uKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChlbC50eXBlICYmIGVsLnR5cGUgPT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbHVtbkRlZnMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6IGVsLmZpZWxkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlck5hbWU6IGVsLmxhYmVsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcjogZmlsdGVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnRhYmxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVkaXRhYmxlOiBlbC5lZGl0YWJsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5XaWR0aDogZWwubWluV2lkdGggPyBlbC5taW5XaWR0aCA6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyUGFyYW1zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlbGxDbGFzczogJ2FnLWJvb2xlYW4tY2VsbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VsbFJlbmRlcmVyOiBwYXJhbXMgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFyYW1zLnZhbHVlICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwYXJhbXMudmFsdWUgPyAnPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgc3Ryb2tlPVwiZ3JlZW5cIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIxXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgY2xhc3M9XCJmZWF0aGVyIGZlYXRoZXItY2hlY2tcIj48cGF0aCBkPVwiTTIwIDZMOSAxN0w0IDEyXCIvPjwvc3ZnPicgOiAnPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgc3Ryb2tlPVwicmVkXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIGNsYXNzPVwiZmVhdGhlciBmZWF0aGVyLXhcIj48bGluZSB4MT1cIjE4XCIgeTE9XCI2XCIgeDI9XCI2XCIgeTI9XCIxOFwiIC8+PGxpbmUgeDE9XCI2XCIgeTE9XCI2XCIgeDI9XCIxOFwiIHkyPVwiMThcIiAvPjwvc3ZnPic7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGVsLnR5cGUgJiYgZWwudHlwZSA9PSAnZW51bScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29sdW1uRGVmcy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZDogZWwuZmllbGQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyTmFtZTogZWwubGFiZWwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyOiBmaWx0ZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydGFibGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWRpdGFibGU6IGVsLmVkaXRhYmxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbldpZHRoOiBlbC5taW5XaWR0aCA/IGVsLm1pbldpZHRoIDogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJQYXJhbXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VsbFJlbmRlcmVyOiBwYXJhbXMgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFyYW1zLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fdHJhbnNsYXRlLmluc3RhbnQocGFyYW1zLnZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZWwudHlwZSAmJiBlbC50eXBlID09ICdkYXRlJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb2x1bW5EZWZzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiBlbC5maWVsZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJOYW1lOiBlbC5sYWJlbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXI6IERhdGVGaWx0ZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydGFibGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWRpdGFibGU6IGVsLmVkaXRhYmxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbldpZHRoOiBlbC5taW5XaWR0aCA/IGVsLm1pbldpZHRoIDogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJQYXJhbXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VsbFJlbmRlcmVyOiBwYXJhbXMgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFyYW1zLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEpEYXRlUGlwZSgpLnRyYW5zZm9ybShwYXJhbXMudmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChlbC50eXBlICYmIGVsLnR5cGUgPT0gJ2RhdGUtdGltZScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29sdW1uRGVmcy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZDogZWwuZmllbGQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyTmFtZTogZWwubGFiZWwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyOiBEYXRlRmlsdGVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnRhYmxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVkaXRhYmxlOiBlbC5lZGl0YWJsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5XaWR0aDogZWwubWluV2lkdGggPyBlbC5taW5XaWR0aCA6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyUGFyYW1zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlbGxSZW5kZXJlcjogcGFyYW1zID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmFtcy52YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBKRGF0ZVBpcGUoKS50cmFuc2Zvcm0ocGFyYW1zLnZhbHVlLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZWwudHlwZSAmJiBlbC50eXBlID09ICdwcmljZScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29sdW1uRGVmcy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZDogZWwuZmllbGQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyTmFtZTogZWwubGFiZWwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyOiBmaWx0ZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydGFibGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWRpdGFibGU6IGVsLmVkaXRhYmxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbldpZHRoOiBlbC5taW5XaWR0aCA/IGVsLm1pbldpZHRoIDogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJQYXJhbXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VsbFJlbmRlcmVyOiBwYXJhbXMgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFyYW1zLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGFyYW1zLnZhbHVlLnRvTG9jYWxlU3RyaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGVsLnR5cGUgJiYgZWwudHlwZSA9PSAnaW1hZ2UnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbHVtbkRlZnMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6IGVsLmZpZWxkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlck5hbWU6IGVsLmxhYmVsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbldpZHRoOiA4MCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogODAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0YWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWRpdGFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlclBhcmFtcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZWxsUmVuZGVyZXI6IHBhcmFtcyA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJhbXMudmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBgPGltZyBjbGFzcz1cInJvdW5kZWQtZnVsbCBtdC0xXCIgd2lkdGg9XCIzMlwiIGhlaWdodD1cIjMyXCIgc3JjPVwiJHtwYXJhbXMudmFsdWV9XCIvPmA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb2x1bW5EZWZzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiBlbC5maWVsZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJOYW1lOiBlbC5sYWJlbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydGFibGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWRpdGFibGU6IGVsLmVkaXRhYmxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlclBhcmFtcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5XaWR0aDogZWwubWluV2lkdGggPyBlbC5taW5XaWR0aCA6IG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmF1dG9Hcm91cENvbHVtbkRlZi5maWVsZCA9IGVsLmZpZWxkO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaWYgKHRoaXMuYWN0aW9uSXRlbXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMuY29sdW1uRGVmcy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgaGVhZGVyTmFtZTogJycsXG4gICAgICAgICAgICAgICAgICAgIG1pbldpZHRoOiAxMDAsXG4gICAgICAgICAgICAgICAgICAgIHJlc2l6YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgcGlubmVkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBzb3J0YWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIGZpZWxkOiAnYWN0aW9ucycsXG4gICAgICAgICAgICAgICAgICAgIGNlbGxSZW5kZXJlcjogQWN0aW9uc0NlbGxSZW5kZXJlcixcbiAgICAgICAgICAgICAgICAgICAgY2VsbFJlbmRlcmVyUGFyYW1zOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrOiAocGFyYW1zOiBHcmlkQWN0aW9uT3V0cHV0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vbkFjdGlvbi5lbWl0KHBhcmFtcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgY2VsbERvdWJsZUNsaWNrZWQoZTogQ2VsbERvdWJsZUNsaWNrZWRFdmVudCkge1xuICAgICAgICB0aGlzLm9uQ2xpY2tlZC5lbWl0KGUuZGF0YSk7XG4gICAgfVxuXG4gICAgaGFuZGxlQ2xpY2soaXRlbTogVG9vbGJhckl0ZW1zKSB7XG4gICAgICAgIHRoaXMub25Ub29sYmFyLmVtaXQoaXRlbSk7XG4gICAgfVxuXG4gICAgcHVibGljIHJlZnJlc2goKSB7XG4gICAgICAgIHRoaXMuZ3JpZEFwaS5yZWZyZXNoU2VydmVyU2lkZSh7IHB1cmdlOiB0cnVlIH0pXG4gICAgfVxuXG4gICAgb25HcmlkUmVhZHkocGFyYW1zOiBhbnkpIHtcbiAgICAgICAgdGhpcy5ncmlkQXBpID0gcGFyYW1zLmFwaTtcbiAgICB9XG5cbiAgICBhZHZhbmNlZEZpbHRlcigpIHtcbiAgICAgICAgdGhpcy5lbmFibGVBZHZhbmNlZEZpbHRlciA9ICF0aGlzLmVuYWJsZUFkdmFuY2VkRmlsdGVyO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZ3JpZEFwaS5zaG93QWR2YW5jZWRGaWx0ZXJCdWlsZGVyKCk7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAoZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnYWctaWNvbi1tYXhpbWl6ZScpWzBdIGFzIEhUTUxFbGVtZW50KS5jbGljaygpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgfSwgMTApO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0Um91dGVUb05vZGUocm93Tm9kZTogSVJvd05vZGUpOiBzdHJpbmdbXSB7XG4gICAgICAgIGlmICghcm93Tm9kZS5wYXJlbnQpIHtcbiAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgLi4udGhpcy5nZXRSb3V0ZVRvTm9kZShyb3dOb2RlLnBhcmVudCksXG4gICAgICAgICAgICByb3dOb2RlLmtleSA/IHJvd05vZGUua2V5IDogcm93Tm9kZS5kYXRhLmVtcGxveWVlTmFtZSxcbiAgICAgICAgXTtcbiAgICB9XG5cbiAgICByZWZyZXNoTm9kZShpZDogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkUm93cyA9IHRoaXMuZ3JpZEFwaS5nZXRSb3dOb2RlKGlkKTtcbiAgICAgICAgY29uc3Qgcm91dGUgPSB0aGlzLmdldFJvdXRlVG9Ob2RlKHNlbGVjdGVkUm93cyk7XG4gICAgICAgIHRoaXMuZ3JpZEFwaS5yZWZyZXNoU2VydmVyU2lkZSh7XG4gICAgICAgICAgICBwdXJnZTogdHJ1ZSxcbiAgICAgICAgICAgIHJvdXRlOiByb3V0ZVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICByZWZyZXNoUGFyZW50Tm9kZShpZDogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkUm93cyA9IHRoaXMuZ3JpZEFwaS5nZXRSb3dOb2RlKGlkKTtcbiAgICAgICAgY29uc3Qgcm91dGUgPSB0aGlzLmdldFJvdXRlVG9Ob2RlKHNlbGVjdGVkUm93cy5wYXJlbnQpO1xuICAgICAgICB0aGlzLmdyaWRBcGkucmVmcmVzaFNlcnZlclNpZGUoe1xuICAgICAgICAgICAgcHVyZ2U6IHRydWUsXG4gICAgICAgICAgICByb3V0ZTogcm91dGVcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgY3JlYXRlU2VydmVyU2lkZURhdGFzb3VyY2UoKTogSVNlcnZlclNpZGVEYXRhc291cmNlIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGdldFJvd3M6IChwYXJhbXM6IElTZXJ2ZXJTaWRlR2V0Um93c1BhcmFtcykgPT4ge1xuICAgICAgICAgICAgICAgIGRlYnVnZ2VyXG4gICAgICAgICAgICAgICAgbGV0IGZpbHRlcjogRmlsdGVyR3JpZEl0ZW1zTW9kZWwgPSBudWxsO1xuICAgICAgICAgICAgICAgIGlmIChPYmplY3Qua2V5cyhwYXJhbXMucmVxdWVzdC5maWx0ZXJNb2RlbCkubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICBmaWx0ZXIgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgbG9naWM6ICdBTkQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyczogW10sXG4gICAgICAgICAgICAgICAgICAgICAgICBpZ25vcmVDYXNlOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3I6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICB0cnVuY2F0ZURhdGU6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gcGFyYW1zLnJlcXVlc3QuZmlsdGVyTW9kZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJhbXMucmVxdWVzdC5maWx0ZXJNb2RlbFtrZXldLmZpbHRlclR5cGUgPT0gJ2N1c3RvbS1kYXRlJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlci5maWx0ZXJzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6IGtleSA9PSAnYWctR3JpZC1BdXRvQ29sdW1uJyA/IHRoaXMuX3RyZWVHcm91cENvbHVtbiA6IGtleSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9naWM6ICdBTkQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJzOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZ25vcmVDYXNlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3I6IEZpbHRlck9wZXJhdG9yLnRydW5jR3JlYXRlclRoYW5FcXVhbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1bmNhdGVEYXRlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogbmV3IERhdGUocGFyYW1zLnJlcXVlc3QuZmlsdGVyTW9kZWxba2V5XS5kYXRlRnJvbSkudG9JU09TdHJpbmcoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJhbXMucmVxdWVzdC5maWx0ZXJNb2RlbFtrZXldLmRhdGVUbyAhPSBcIlwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlci5maWx0ZXJzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZDoga2V5ID09ICdhZy1HcmlkLUF1dG9Db2x1bW4nID8gdGhpcy5fdHJlZUdyb3VwQ29sdW1uIDoga2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9naWM6ICdBTkQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyczogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZUNhc2U6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3I6IEZpbHRlck9wZXJhdG9yLnRydW5jTGVzc1RoYW5PckVxdWFsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1bmNhdGVEYXRlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IG5ldyBEYXRlKHBhcmFtcy5yZXF1ZXN0LmZpbHRlck1vZGVsW2tleV0uZGF0ZVRvKS50b0lTT1N0cmluZygpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb3BlcmF0aW9uID0gRmlsdGVyT3BlcmF0b3JbcGFyYW1zLnJlcXVlc3QuZmlsdGVyTW9kZWxba2V5XS50eXBlXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaWdub3JlQ2FzZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZmluZEVsID0gdGhpcy5fY29sdW1uLmZpbmQoKGVsKSA9PiBlbC5maWVsZCA9PSBrZXkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBmaWVsZCA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGtleSA9PSAnYWctR3JpZC1BdXRvQ29sdW1uJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZCA9IHRoaXMuX3RyZWVHcm91cENvbHVtbjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZCA9IGtleTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpbmRFbC5zZWFyY2hGaWVsZCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZCA9IGZpbmRFbC5zZWFyY2hGaWVsZDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmluZEVsICYmIGZpbmRFbC50eXBlID09ICdlbnVtJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZ25vcmVDYXNlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlci5maWx0ZXJzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2ljOiAnQU5EJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyczogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWdub3JlQ2FzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3I6IG9wZXJhdGlvbiA/IG9wZXJhdGlvbiA6IEZpbHRlck9wZXJhdG9yLmVxdWFscyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1bmNhdGVEYXRlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogcGFyYW1zLnJlcXVlc3QuZmlsdGVyTW9kZWxba2V5XS5maWx0ZXIgPyBwYXJhbXMucmVxdWVzdC5maWx0ZXJNb2RlbFtrZXldLmZpbHRlciA6IHBhcmFtcy5yZXF1ZXN0LmZpbHRlck1vZGVsW2tleV0udHlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgZ3JpZEZpbHRlcjogR3JpZElucHV0TW9kZWwgPSB7XG4gICAgICAgICAgICAgICAgICAgIHRha2U6IHBhcmFtcy5hcGkucGFnaW5hdGlvbkdldFBhZ2VTaXplKCksXG4gICAgICAgICAgICAgICAgICAgIGRhdGE6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcixcbiAgICAgICAgICAgICAgICAgICAgc2tpcDogcGFyYW1zLmFwaS5wYWdpbmF0aW9uR2V0Q3VycmVudFBhZ2UoKSAqIHBhcmFtcy5hcGkucGFnaW5hdGlvbkdldFBhZ2VTaXplKCksXG4gICAgICAgICAgICAgICAgICAgIHNvcnRzOiBwYXJhbXMucmVxdWVzdC5zb3J0TW9kZWwubGVuZ3RoID4gMCA/IFt7IGRpcjogcGFyYW1zLnJlcXVlc3Quc29ydE1vZGVsWzBdLnNvcnQsIGZpZWxkOiBwYXJhbXMucmVxdWVzdC5zb3J0TW9kZWxbMF0uY29sSWQgfV0gOiBbXVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgY29uc3QgcmVxdWVzdFBhcmFtczogR3JpZFJlcXVlc3RQYXJhbSA9IHtcbiAgICAgICAgICAgICAgICAgICAgcGFyZW50Tm9kZTogcGFyYW1zLnBhcmVudE5vZGUuZGF0YVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgdGhpcy5mZXRjaERhdGEoZ3JpZEZpbHRlciwgcmVxdWVzdFBhcmFtcykudGhlbihkYXRhID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcGFyYW1zLnN1Y2Nlc3Moe1xuICAgICAgICAgICAgICAgICAgICAgICAgcm93RGF0YTogZGF0YS5pdGVtcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvd0NvdW50OiBkYXRhLnRvdGFsQ291bnRcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSkuY2F0Y2goKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBwYXJhbXMuZmFpbCgpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQgeyB9XG59IiwiPCEtLSA8YnV0dG9uIChjbGljayk9XCJlbmFibGVBZHZhbmNlZEZpbHRlcj0hZW5hYmxlQWR2YW5jZWRGaWx0ZXJcIj5hZHZhbmNlZDwvYnV0dG9uPiAtLT5cbjxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktYmV0d2VlbiBpdGVtcy1jZW50ZXIgbWItNCBwYi00IGJvcmRlci1iIGJvcmRlci1iLXNsYXRlLTIwMFwiICpuZ0lmPVwiaXNUb29sYmFyXCI+XG4gICAgPGRpdj5cbiAgICAgICAgPGg0IGNsYXNzPVwiZm9udC1zZW1pYm9sZCB0ZXh0LTJ4bFwiPnt7bGFiZWx9fTwvaDQ+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImZsZXggZ2FwLTNcIj5cbiAgICAgICAgPGJ1dHRvbiBuei1idXR0b24gKm5nRm9yPVwibGV0IGl0ZW0gb2YgdG9vbGJhckl0ZW1zXCIgKGNsaWNrKT1cImhhbmRsZUNsaWNrKGl0ZW0pXCIgW256VHlwZV09XCJpdGVtLnR5cGVcIj5cbiAgICAgICAgICAgIDxzcGFuIG56LWljb24gW256VHlwZV09XCJpdGVtLmljb25cIj48L3NwYW4+XG4gICAgICAgICAgICB7e2l0ZW0udGV4dH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uIG56LWJ1dHRvbiAoY2xpY2spPVwicmVmcmVzaCgpXCIgbnpUeXBlPVwiZGVmYXVsdFwiPlxuICAgICAgICAgICAgPHNwYW4gbnotaWNvbiBuelR5cGU9XCJzeW5jXCI+PC9zcGFuPlxuICAgICAgICAgICAg2KjYsdmI2LLYsdiz2KfZhtuMXG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8IS0tIDxidXR0b24gbnotYnV0dG9uIChjbGljayk9XCJhZHZhbmNlZEZpbHRlcigpXCIgKm5nSWY9XCJzaG93QWR2YW5jZWRCdXR0b25cIiBuelR5cGU9XCJkZWZhdWx0XCI+XG4gICAgICAgICAgICA8c3BhbiBuei1pY29uIG56VHlwZT1cImZpbHRlclwiPjwvc3Bhbj5cbiAgICAgICAgICAgINis2LPYqtis2YjbjCDZvtuM2LTYsdmB2KrZh1xuICAgICAgICA8L2J1dHRvbj4gLS0+XG4gICAgPC9kaXY+XG48L2Rpdj5cbjxhZy1ncmlkLWFuZ3VsYXIgc3R5bGU9XCJ3aWR0aDogMTAwJTtcIiBbc3R5bGVdPVwiKGlzVG9vbGJhcikgPyAnaGVpZ2h0OiBjYWxjKDEwMCUgLSAxcmVtIC0gNDhweCk7JzonaGVpZ2h0OiAxMDAlOydcIiBbY29sdW1uRGVmc109XCJjb2x1bW5EZWZzXCIgW3BhZ2luYXRpb25dPVwidHJ1ZVwiXG4gICAgW3BhZ2luYXRpb25QYWdlU2l6ZV09XCJwYWdpbmF0aW9uUGFnZVNpemVcIiBbcGFnaW5hdGlvblBhZ2VTaXplU2VsZWN0b3JdPVwicGFnaW5hdGlvblBhZ2VTaXplU2VsZWN0b3JcIlxuICAgIFtjbGFzc109XCJ0aGVtZUNsYXNzXCIgW2RlZmF1bHRDb2xEZWZdPVwiZGVmYXVsdENvbERlZlwiIFtlbmFibGVBZHZhbmNlZEZpbHRlcl09XCJlbmFibGVBZHZhbmNlZEZpbHRlclwiIFtlbmFibGVSdGxdPVwicnRsXCJcbiAgICBbdHJlZURhdGFdPVwidHJlZU1vZGVsXCIgW2F1dG9Hcm91cENvbHVtbkRlZl09XCJhdXRvR3JvdXBDb2x1bW5EZWZcIiBbaXNTZXJ2ZXJTaWRlR3JvdXBdPVwiaXNTZXJ2ZXJTaWRlR3JvdXBcIlxuICAgIFtnZXRTZXJ2ZXJTaWRlR3JvdXBLZXldPVwiZ2V0U2VydmVyU2lkZUdyb3VwS2V5XCIgW3Jvd01vZGVsVHlwZV09XCJyb3dNb2RlbFR5cGVcIiBbc2VydmVyU2lkZURhdGFzb3VyY2VdPVwiZGF0YXNvdXJjZVwiXG4gICAgKGdyaWRSZWFkeSk9XCJvbkdyaWRSZWFkeSgkZXZlbnQpXCIgW2NhY2hlQmxvY2tTaXplXT1cInBhZ2luYXRpb25QYWdlU2l6ZVwiIFttYXhCbG9ja3NJbkNhY2hlXT1cIjJcIlxuICAgIFtjb250ZXh0XT1cInthY3Rpb25JdGVtczogYWN0aW9uSXRlbXN9XCIgKGNlbGxEb3VibGVDbGlja2VkKT1cImNlbGxEb3VibGVDbGlja2VkKCRldmVudClcIiBbYXV0b1NpemVTdHJhdGVneV09XCJfYXV0b0NvbHVtblNpemVcIiAjZ3JpZCAvPiJdfQ==
|
|
@@ -3,8 +3,9 @@ import * as i0 from "@angular/core";
|
|
|
3
3
|
import * as i1 from "@angular/common";
|
|
4
4
|
import * as i2 from "ng-zorro-antd/tooltip";
|
|
5
5
|
export class ActionsCellRenderer {
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
constructor() {
|
|
7
|
+
this.items = [];
|
|
8
|
+
}
|
|
8
9
|
agInit(params) {
|
|
9
10
|
this.params = params;
|
|
10
11
|
this.items = params.context.actionItems;
|
|
@@ -16,11 +17,11 @@ export class ActionsCellRenderer {
|
|
|
16
17
|
handleClick(item) {
|
|
17
18
|
this.params.onClick({ data: this.params.data, event: item.code, id: this.params.node.id });
|
|
18
19
|
}
|
|
19
|
-
static
|
|
20
|
-
static
|
|
20
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ActionsCellRenderer, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
21
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ActionsCellRenderer, selector: "app-button-renderer", ngImport: i0, template: "<div class=\"h-full flex gap-2 items-center\">\n <button mat-button class=\"min-w-[30px] min-h-[30px] h-[30px]\" *ngFor=\"let item of items\" nz-tooltip [nzTooltipTitle]=\"item.alt\" nzTooltipPlacement=\"bottom\" (click)=\"handleClick(item)\">\n <div class=\"flex justify-center items-center\">\n <i [class]=\"item.icon\"></i>\n </div>\n </button>\n \n</div>", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NzTooltipDirective, selector: "[nz-tooltip]", inputs: ["nzTooltipTitle", "nzTooltipTitleContext", "nz-tooltip", "nzTooltipTrigger", "nzTooltipPlacement", "nzTooltipOrigin", "nzTooltipVisible", "nzTooltipMouseEnterDelay", "nzTooltipMouseLeaveDelay", "nzTooltipOverlayClassName", "nzTooltipOverlayStyle", "nzTooltipArrowPointAtCenter", "cdkConnectedOverlayPush", "nzTooltipColor"], outputs: ["nzTooltipVisibleChange"], exportAs: ["nzTooltip"] }] }); }
|
|
21
22
|
}
|
|
22
23
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ActionsCellRenderer, decorators: [{
|
|
23
24
|
type: Component,
|
|
24
25
|
args: [{ selector: 'app-button-renderer', template: "<div class=\"h-full flex gap-2 items-center\">\n <button mat-button class=\"min-w-[30px] min-h-[30px] h-[30px]\" *ngFor=\"let item of items\" nz-tooltip [nzTooltipTitle]=\"item.alt\" nzTooltipPlacement=\"bottom\" (click)=\"handleClick(item)\">\n <div class=\"flex justify-center items-center\">\n <i [class]=\"item.icon\"></i>\n </div>\n </button>\n \n</div>" }]
|
|
25
26
|
}] });
|
|
26
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLWJ1dHRvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaGFyZWQvc3JjL2xpYi9jb21wb25lbnRzL2dyaWQvcmVuZGVyL2FjdGlvbi1idXR0b24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2hhcmVkL3NyYy9saWIvY29tcG9uZW50cy9ncmlkL3JlbmRlci9hY3Rpb24tYnV0dG9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7QUFPMUMsTUFBTSxPQUFPLG1CQUFtQjtJQUpoQztRQU1XLFVBQUssR0FBa0IsRUFBRSxDQUFDO0tBZXBDO0lBYkcsTUFBTSxDQUFDLE1BQTJCO1FBQzlCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUM7SUFDNUMsQ0FBQztJQUVELE9BQU8sQ0FBQyxNQUEyQjtRQUMvQixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQsV0FBVyxDQUFDLElBQWlCO1FBQ3pCLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQy9GLENBQUM7K0dBaEJRLG1CQUFtQjttR0FBbkIsbUJBQW1CLDJEQ1RoQywwWUFPTTs7NEZERU8sbUJBQW1CO2tCQUovQixTQUFTOytCQUNJLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElDZWxsUmVuZGVyZXJBbmd1bGFyQ29tcCB9IGZyb20gJ0BhZy1ncmlkLWNvbW11bml0eS9hbmd1bGFyJztcbmltcG9ydCB7IElDZWxsUmVuZGVyZXJQYXJhbXMgfSBmcm9tICdAYWctZ3JpZC1jb21tdW5pdHkvY29yZSc7XG5pbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGlvbkl0ZW1zIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL3NoYXJlZC5tb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYXBwLWJ1dHRvbi1yZW5kZXJlcicsXG4gICAgdGVtcGxhdGVVcmw6IGAuL2FjdGlvbi1idXR0b24uY29tcG9uZW50Lmh0bWxgXG59KVxuZXhwb3J0IGNsYXNzIEFjdGlvbnNDZWxsUmVuZGVyZXIgaW1wbGVtZW50cyBJQ2VsbFJlbmRlcmVyQW5ndWxhckNvbXAge1xuICAgIHByaXZhdGUgcGFyYW1zITogYW55O1xuICAgIHB1YmxpYyBpdGVtczogQWN0aW9uSXRlbXNbXSA9IFtdO1xuXG4gICAgYWdJbml0KHBhcmFtczogSUNlbGxSZW5kZXJlclBhcmFtcyk6IHZvaWQge1xuICAgICAgICB0aGlzLnBhcmFtcyA9IHBhcmFtcztcbiAgICAgICAgdGhpcy5pdGVtcyA9IHBhcmFtcy5jb250ZXh0LmFjdGlvbkl0ZW1zO1xuICAgIH1cblxuICAgIHJlZnJlc2gocGFyYW1zOiBJQ2VsbFJlbmRlcmVyUGFyYW1zKTogYm9vbGVhbiB7XG4gICAgICAgIHRoaXMucGFyYW1zID0gcGFyYW1zO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBoYW5kbGVDbGljayhpdGVtOiBBY3Rpb25JdGVtcykge1xuICAgICAgICB0aGlzLnBhcmFtcy5vbkNsaWNrKHsgZGF0YTogdGhpcy5wYXJhbXMuZGF0YSwgZXZlbnQ6IGl0ZW0uY29kZSwgaWQ6IHRoaXMucGFyYW1zLm5vZGUuaWQgfSk7XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImgtZnVsbCBmbGV4IGdhcC0yIGl0ZW1zLWNlbnRlclwiPlxuICAgIDxidXR0b24gbWF0LWJ1dHRvbiBjbGFzcz1cIm1pbi13LVszMHB4XSBtaW4taC1bMzBweF0gaC1bMzBweF1cIiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpdGVtc1wiIG56LXRvb2x0aXAgW256VG9vbHRpcFRpdGxlXT1cIml0ZW0uYWx0XCIgbnpUb29sdGlwUGxhY2VtZW50PVwiYm90dG9tXCIgKGNsaWNrKT1cImhhbmRsZUNsaWNrKGl0ZW0pXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktY2VudGVyIGl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgPGkgW2NsYXNzXT1cIml0ZW0uaWNvblwiPjwvaT5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9idXR0b24+XG4gICAgXG48L2Rpdj4iXX0=
|