gamma-app-controller 1.1.5 → 1.1.6
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/esm2020/lib/application-controller/application-content.service.mjs +32 -1
- package/esm2020/lib/application-controller/application-controller.module.mjs +22 -5
- package/esm2020/lib/application-controller/application-metric-config/all-metrics-config/all-metrics-config.component.mjs +95 -0
- package/esm2020/lib/application-controller/application-metric-config/create-metrics/create-metrics.component.mjs +42 -21
- package/esm2020/lib/application-controller/application-metric-config/ofline-metrics/ofline-metrics.component.mjs +3 -3
- package/esm2020/lib/application-controller/application-metric-config/online-metrics/online-metrics.component.mjs +5 -3
- package/esm2020/lib/application-controller/application-view-components/create-comp-view/create-comp-view.component.mjs +4 -4
- package/esm2020/public-api.mjs +2 -1
- package/fesm2015/gamma-app-controller.mjs +278 -130
- package/fesm2015/gamma-app-controller.mjs.map +1 -1
- package/fesm2020/gamma-app-controller.mjs +278 -130
- package/fesm2020/gamma-app-controller.mjs.map +1 -1
- package/lib/application-controller/application-content.service.d.ts +4 -0
- package/lib/application-controller/application-controller.module.d.ts +12 -11
- package/lib/application-controller/application-metric-config/all-metrics-config/all-metrics-config.component.d.ts +41 -0
- package/lib/application-controller/application-metric-config/create-metrics/create-metrics.component.d.ts +7 -1
- package/package.json +1 -1
- package/public-api.d.ts +1 -0
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { Component, ViewChild } from '@angular/core';
|
|
2
|
+
import { confirm } from 'devextreme/ui/dialog';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "../../application-content.service";
|
|
5
|
+
import * as i2 from "../../common";
|
|
6
|
+
import * as i3 from "ngx-toastr";
|
|
7
|
+
import * as i4 from "@angular/router";
|
|
8
|
+
import * as i5 from "@angular/platform-browser";
|
|
9
|
+
import * as i6 from "../../kpi-service";
|
|
10
|
+
import * as i7 from "@angular/common";
|
|
11
|
+
import * as i8 from "devextreme-angular/core";
|
|
12
|
+
import * as i9 from "devextreme-angular/ui/nested";
|
|
13
|
+
import * as i10 from "devextreme-angular/ui/data-grid";
|
|
14
|
+
import * as i11 from "../../shared/loader/loader.component";
|
|
15
|
+
import * as i12 from "../../common-header/common-header.component";
|
|
16
|
+
export class AllMetricsConfigComponent {
|
|
17
|
+
constructor(service, commonService, toastr, activatedRoute, router, title, kpiService) {
|
|
18
|
+
this.service = service;
|
|
19
|
+
this.commonService = commonService;
|
|
20
|
+
this.toastr = toastr;
|
|
21
|
+
this.activatedRoute = activatedRoute;
|
|
22
|
+
this.router = router;
|
|
23
|
+
this.title = title;
|
|
24
|
+
this.kpiService = kpiService;
|
|
25
|
+
this.dataSourceModal = {};
|
|
26
|
+
this.title.setTitle('Application Metrics Controller');
|
|
27
|
+
}
|
|
28
|
+
ngOnInit() {
|
|
29
|
+
this.getMetricsDataCongigs();
|
|
30
|
+
}
|
|
31
|
+
getMetricsDataCongigs() {
|
|
32
|
+
this.isLoader = true;
|
|
33
|
+
this.service.listMetricConfigs().subscribe({
|
|
34
|
+
next: (data) => {
|
|
35
|
+
this.metricsDatasource = data;
|
|
36
|
+
this.isLoader = false;
|
|
37
|
+
}, error: (err) => {
|
|
38
|
+
this.toastr.error('Unexpected Server Exception. Please contact System Admin.', 'Metrics Config');
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
getCreateNewMetrics() {
|
|
43
|
+
this.router.navigate(['/apps/controlPanel/metricController/createMetrics']);
|
|
44
|
+
}
|
|
45
|
+
editMetricsConfigs(data) {
|
|
46
|
+
this.service.setCurrentDatasetValue(data);
|
|
47
|
+
let navigationExtra = {
|
|
48
|
+
queryParams: {
|
|
49
|
+
metricId: data.metricId,
|
|
50
|
+
contentType: "edit"
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
this.router.navigate(['/apps/controlPanel/metricController/createMetrics'], navigationExtra);
|
|
54
|
+
}
|
|
55
|
+
deleteMetricConfig(data) {
|
|
56
|
+
let result = confirm("<i>Are You Sure?</i>", "Delete Config");
|
|
57
|
+
result.then((dialogResult) => {
|
|
58
|
+
if (dialogResult) {
|
|
59
|
+
this.isLoader = true;
|
|
60
|
+
this.service.deleteMetricConfig(data.metricId).subscribe((val) => {
|
|
61
|
+
this.getMetricsDataCongigs();
|
|
62
|
+
this.isLoader = false;
|
|
63
|
+
this.toastr.success('Metric Config Deleted Successfully');
|
|
64
|
+
}, err => {
|
|
65
|
+
console.log(err);
|
|
66
|
+
this.toastr.error('Unexpected Server Exception. Please contact System Admin.', 'Metric Config');
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
activatedReport(data) {
|
|
72
|
+
let result = confirm("<i>Are You Sure?</i>", "Activate Metric");
|
|
73
|
+
result.then((dialogResult) => {
|
|
74
|
+
if (dialogResult) {
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
deActivatedReport(data) {
|
|
79
|
+
let result = confirm("<i>Are You Sure?</i>", "Deactivate Metric");
|
|
80
|
+
result.then((dialogResult) => {
|
|
81
|
+
if (dialogResult) {
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
AllMetricsConfigComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: AllMetricsConfigComponent, deps: [{ token: i1.ApplicationContentService }, { token: i2.CommonService }, { token: i3.ToastrService }, { token: i4.ActivatedRoute }, { token: i4.Router }, { token: i5.Title }, { token: i6.kpicommonService }], target: i0.ɵɵFactoryTarget.Component });
|
|
87
|
+
AllMetricsConfigComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: AllMetricsConfigComponent, selector: "app-all-metrics-config", viewQueries: [{ propertyName: "scrollToElement", first: true, predicate: ["scrollToElement"], descendants: true }], ngImport: i0, template: "<div class=\"flex flex-col flex-auto min-w-0\">\n <lib-common-header [pageTitle]=\"'Application Datasets'\"></lib-common-header>\n\n <div class=\"p-4 w-full\">\n <div class=\"m-3 p-4 bg-white border border-gray-200 rounded-lg shadow-md dark:bg-gray-800 dark:border-gray-700\">\n <h6 class=\"mb-2 text-lg tracking-tight text-gray-900 dark:text-white border-b pb-3 flex items-center\">\n <i class=\"fa fa-table mr-2\"></i> All metrics Config\n <div class=\"ml-auto\">\n <button class=\"{{commonService.btn_primary_md}}\" (click)=\"getCreateNewMetrics()\">\n Add New Metric\n </button>\n\n </div>\n </h6>\n <app-loader *ngIf=\"isLoader\"></app-loader>\n <dx-data-grid [columnAutoWidth]=\"true\" [dataSource]=\"metricsDatasource\" [hoverStateEnabled]=\"true\"\n *ngIf=\"!isLoader\" [selectedRowKeys]=\"[]\" [showBorders]=\"true\" [showColumnLines]=\"true\"\n [showRowLines]=\"true\" id=\"gridContainer\">\n <dxo-paging [pageSize]=\"10\"></dxo-paging>\n <dxo-export [enabled]=\"true\"></dxo-export>\n <dxo-search-panel [highlightCaseSensitive]=\"true\" [visible]=\"true\"></dxo-search-panel>\n\n <dxi-column dataField=\"metricId\"></dxi-column>\n <dxi-column dataField=\"metricDisplayName\"></dxi-column>\n <dxi-column dataField=\"metricType\"></dxi-column>\n <dxi-column dataField=\"metricName\"></dxi-column>\n <dxi-column dataField=\"status\"></dxi-column>\n <dxi-column dataField=\"activated\" cellTemplate=\"cellTemplate2\"></dxi-column>\n <dxi-column dataField=\"createdBy\"></dxi-column>\n <dxi-column dataField=\"creationDate\" sortOrder=\"desc\"></dxi-column>\n <dxi-column dataField=\"action\" cellTemplate=\"cellTemplate\" [fixed]=\"true\"\n fixedPosition=\"right\"></dxi-column>\n <div *dxTemplate=\"let data of 'cellTemplate'\">\n <button class=\"{{commonService.btn_primary_md}}\" (click)=\"editMetricsConfigs(data.data)\">\n Edit\n </button>\n <!-- <button class=\"{{commonService.btn_warning_md}}\" (click)=\"duplicateDataset(data.data)\">\n Duplicate\n </button> -->\n <button class=\"{{commonService.btn_danger_md}}\" (click)=\"deleteMetricConfig(data.data)\">\n Delete\n </button>\n\n </div>\n <div *dxTemplate=\"let data of 'cellTemplate2'\">\n <button type=\"button\" *ngIf=\"data.data.activated == true\" (click)=\"deActivatedReport(data.data)\"\n class=\"{{commonService.btnSuccessGreen}}\">Activated</button>\n\n <button type=\"button\" *ngIf=\"data.data.activated == false\" (click)=\"activatedReport(data.data)\"\n class=\"{{commonService.btnWarningYellow}}\">Deactivated</button>\n\n </div>\n\n\n </dx-data-grid>\n </div>\n </div>\n\n\n</div>", dependencies: [{ kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i8.DxTemplateDirective, selector: "[dxTemplate]", inputs: ["dxTemplateOf"] }, { kind: "component", type: i9.DxoExportComponent, selector: "dxo-export", inputs: ["backgroundColor", "enabled", "fileName", "formats", "margin", "printingEnabled", "proxyUrl", "svgToCanvas", "allowExportSelectedData", "customizeExcelCell", "excelFilterEnabled", "excelWrapTextEnabled", "ignoreExcelErrors", "texts"] }, { kind: "component", type: i10.DxDataGridComponent, selector: "dx-data-grid", inputs: ["accessKey", "activeStateEnabled", "allowColumnReordering", "allowColumnResizing", "autoNavigateToFocusedRow", "cacheEnabled", "cellHintEnabled", "columnAutoWidth", "columnChooser", "columnFixing", "columnHidingEnabled", "columnMinWidth", "columnResizingMode", "columns", "columnWidth", "customizeColumns", "customizeExportData", "dataRowTemplate", "dataSource", "dateSerializationFormat", "disabled", "editing", "elementAttr", "errorRowEnabled", "export", "filterBuilder", "filterBuilderPopup", "filterPanel", "filterRow", "filterSyncEnabled", "filterValue", "focusedColumnIndex", "focusedRowEnabled", "focusedRowIndex", "focusedRowKey", "focusStateEnabled", "grouping", "groupPanel", "headerFilter", "height", "highlightChanges", "hint", "hoverStateEnabled", "keyboardNavigation", "keyExpr", "loadPanel", "masterDetail", "noDataText", "pager", "paging", "remoteOperations", "renderAsync", "repaintChangesOnly", "rowAlternationEnabled", "rowDragging", "rowTemplate", "rtlEnabled", "scrolling", "searchPanel", "selectedRowKeys", "selection", "selectionFilter", "showBorders", "showColumnHeaders", "showColumnLines", "showRowLines", "sortByGroupSummaryInfo", "sorting", "stateStoring", "summary", "syncLookupFilterValues", "tabIndex", "toolbar", "twoWayBindingEnabled", "visible", "width", "wordWrapEnabled"], outputs: ["onAdaptiveDetailRowPreparing", "onCellClick", "onCellDblClick", "onCellHoverChanged", "onCellPrepared", "onContentReady", "onContextMenuPreparing", "onDataErrorOccurred", "onDisposing", "onEditCanceled", "onEditCanceling", "onEditingStart", "onEditorPrepared", "onEditorPreparing", "onExported", "onExporting", "onFileSaving", "onFocusedCellChanged", "onFocusedCellChanging", "onFocusedRowChanged", "onFocusedRowChanging", "onInitialized", "onInitNewRow", "onKeyDown", "onOptionChanged", "onRowClick", "onRowCollapsed", "onRowCollapsing", "onRowDblClick", "onRowExpanded", "onRowExpanding", "onRowInserted", "onRowInserting", "onRowPrepared", "onRowRemoved", "onRowRemoving", "onRowUpdated", "onRowUpdating", "onRowValidating", "onSaved", "onSaving", "onSelectionChanged", "onToolbarPreparing", "accessKeyChange", "activeStateEnabledChange", "allowColumnReorderingChange", "allowColumnResizingChange", "autoNavigateToFocusedRowChange", "cacheEnabledChange", "cellHintEnabledChange", "columnAutoWidthChange", "columnChooserChange", "columnFixingChange", "columnHidingEnabledChange", "columnMinWidthChange", "columnResizingModeChange", "columnsChange", "columnWidthChange", "customizeColumnsChange", "customizeExportDataChange", "dataRowTemplateChange", "dataSourceChange", "dateSerializationFormatChange", "disabledChange", "editingChange", "elementAttrChange", "errorRowEnabledChange", "exportChange", "filterBuilderChange", "filterBuilderPopupChange", "filterPanelChange", "filterRowChange", "filterSyncEnabledChange", "filterValueChange", "focusedColumnIndexChange", "focusedRowEnabledChange", "focusedRowIndexChange", "focusedRowKeyChange", "focusStateEnabledChange", "groupingChange", "groupPanelChange", "headerFilterChange", "heightChange", "highlightChangesChange", "hintChange", "hoverStateEnabledChange", "keyboardNavigationChange", "keyExprChange", "loadPanelChange", "masterDetailChange", "noDataTextChange", "pagerChange", "pagingChange", "remoteOperationsChange", "renderAsyncChange", "repaintChangesOnlyChange", "rowAlternationEnabledChange", "rowDraggingChange", "rowTemplateChange", "rtlEnabledChange", "scrollingChange", "searchPanelChange", "selectedRowKeysChange", "selectionChange", "selectionFilterChange", "showBordersChange", "showColumnHeadersChange", "showColumnLinesChange", "showRowLinesChange", "sortByGroupSummaryInfoChange", "sortingChange", "stateStoringChange", "summaryChange", "syncLookupFilterValuesChange", "tabIndexChange", "toolbarChange", "twoWayBindingEnabledChange", "visibleChange", "widthChange", "wordWrapEnabledChange"] }, { kind: "component", type: i9.DxiColumnComponent, selector: "dxi-column", inputs: ["alignment", "allowEditing", "allowExporting", "allowFiltering", "allowFixing", "allowGrouping", "allowHeaderFiltering", "allowHiding", "allowReordering", "allowResizing", "allowSearch", "allowSorting", "autoExpandGroup", "buttons", "calculateCellValue", "calculateDisplayValue", "calculateFilterExpression", "calculateGroupValue", "calculateSortValue", "caption", "cellTemplate", "columns", "cssClass", "customizeText", "dataField", "dataType", "editCellTemplate", "editorOptions", "encodeHtml", "falseText", "filterOperations", "filterType", "filterValue", "filterValues", "fixed", "fixedPosition", "format", "formItem", "groupCellTemplate", "groupIndex", "headerCellTemplate", "headerFilter", "hidingPriority", "isBand", "lookup", "minWidth", "name", "ownerBand", "renderAsync", "selectedFilterOperation", "setCellValue", "showEditorAlways", "showInColumnChooser", "showWhenGrouped", "sortIndex", "sortingMethod", "sortOrder", "trueText", "type", "validationRules", "visible", "visibleIndex", "width"], outputs: ["filterValueChange", "filterValuesChange", "groupIndexChange", "selectedFilterOperationChange", "sortIndexChange", "sortOrderChange", "visibleChange", "visibleIndexChange"] }, { kind: "component", type: i9.DxoPagingComponent, selector: "dxo-paging", inputs: ["enabled", "pageIndex", "pageSize"], outputs: ["pageIndexChange", "pageSizeChange"] }, { kind: "component", type: i9.DxoSearchPanelComponent, selector: "dxo-search-panel", inputs: ["highlightCaseSensitive", "highlightSearchText", "placeholder", "searchVisibleColumnsOnly", "text", "visible", "width"], outputs: ["textChange"] }, { kind: "component", type: i11.LoaderComponent, selector: "app-loader" }, { kind: "component", type: i12.CommonHeaderComponent, selector: "lib-common-header", inputs: ["pageTitle"] }] });
|
|
88
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: AllMetricsConfigComponent, decorators: [{
|
|
89
|
+
type: Component,
|
|
90
|
+
args: [{ selector: 'app-all-metrics-config', template: "<div class=\"flex flex-col flex-auto min-w-0\">\n <lib-common-header [pageTitle]=\"'Application Datasets'\"></lib-common-header>\n\n <div class=\"p-4 w-full\">\n <div class=\"m-3 p-4 bg-white border border-gray-200 rounded-lg shadow-md dark:bg-gray-800 dark:border-gray-700\">\n <h6 class=\"mb-2 text-lg tracking-tight text-gray-900 dark:text-white border-b pb-3 flex items-center\">\n <i class=\"fa fa-table mr-2\"></i> All metrics Config\n <div class=\"ml-auto\">\n <button class=\"{{commonService.btn_primary_md}}\" (click)=\"getCreateNewMetrics()\">\n Add New Metric\n </button>\n\n </div>\n </h6>\n <app-loader *ngIf=\"isLoader\"></app-loader>\n <dx-data-grid [columnAutoWidth]=\"true\" [dataSource]=\"metricsDatasource\" [hoverStateEnabled]=\"true\"\n *ngIf=\"!isLoader\" [selectedRowKeys]=\"[]\" [showBorders]=\"true\" [showColumnLines]=\"true\"\n [showRowLines]=\"true\" id=\"gridContainer\">\n <dxo-paging [pageSize]=\"10\"></dxo-paging>\n <dxo-export [enabled]=\"true\"></dxo-export>\n <dxo-search-panel [highlightCaseSensitive]=\"true\" [visible]=\"true\"></dxo-search-panel>\n\n <dxi-column dataField=\"metricId\"></dxi-column>\n <dxi-column dataField=\"metricDisplayName\"></dxi-column>\n <dxi-column dataField=\"metricType\"></dxi-column>\n <dxi-column dataField=\"metricName\"></dxi-column>\n <dxi-column dataField=\"status\"></dxi-column>\n <dxi-column dataField=\"activated\" cellTemplate=\"cellTemplate2\"></dxi-column>\n <dxi-column dataField=\"createdBy\"></dxi-column>\n <dxi-column dataField=\"creationDate\" sortOrder=\"desc\"></dxi-column>\n <dxi-column dataField=\"action\" cellTemplate=\"cellTemplate\" [fixed]=\"true\"\n fixedPosition=\"right\"></dxi-column>\n <div *dxTemplate=\"let data of 'cellTemplate'\">\n <button class=\"{{commonService.btn_primary_md}}\" (click)=\"editMetricsConfigs(data.data)\">\n Edit\n </button>\n <!-- <button class=\"{{commonService.btn_warning_md}}\" (click)=\"duplicateDataset(data.data)\">\n Duplicate\n </button> -->\n <button class=\"{{commonService.btn_danger_md}}\" (click)=\"deleteMetricConfig(data.data)\">\n Delete\n </button>\n\n </div>\n <div *dxTemplate=\"let data of 'cellTemplate2'\">\n <button type=\"button\" *ngIf=\"data.data.activated == true\" (click)=\"deActivatedReport(data.data)\"\n class=\"{{commonService.btnSuccessGreen}}\">Activated</button>\n\n <button type=\"button\" *ngIf=\"data.data.activated == false\" (click)=\"activatedReport(data.data)\"\n class=\"{{commonService.btnWarningYellow}}\">Deactivated</button>\n\n </div>\n\n\n </dx-data-grid>\n </div>\n </div>\n\n\n</div>" }]
|
|
91
|
+
}], ctorParameters: function () { return [{ type: i1.ApplicationContentService }, { type: i2.CommonService }, { type: i3.ToastrService }, { type: i4.ActivatedRoute }, { type: i4.Router }, { type: i5.Title }, { type: i6.kpicommonService }]; }, propDecorators: { scrollToElement: [{
|
|
92
|
+
type: ViewChild,
|
|
93
|
+
args: ['scrollToElement']
|
|
94
|
+
}] } });
|
|
95
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxsLW1ldHJpY3MtY29uZmlnLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dhbW1hLWFwcC1jb250cm9sbGVyL3NyYy9saWIvYXBwbGljYXRpb24tY29udHJvbGxlci9hcHBsaWNhdGlvbi1tZXRyaWMtY29uZmlnL2FsbC1tZXRyaWNzLWNvbmZpZy9hbGwtbWV0cmljcy1jb25maWcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2FtbWEtYXBwLWNvbnRyb2xsZXIvc3JjL2xpYi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL2FwcGxpY2F0aW9uLW1ldHJpYy1jb25maWcvYWxsLW1ldHJpY3MtY29uZmlnL2FsbC1tZXRyaWNzLWNvbmZpZy5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQTZCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVoRixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7Ozs7Ozs7Ozs7O0FBWS9DLE1BQU0sT0FBTyx5QkFBeUI7SUFxQmxDLFlBQ1UsT0FBa0MsRUFDbkMsYUFBNEIsRUFDM0IsTUFBcUIsRUFDckIsY0FBOEIsRUFDOUIsTUFBYyxFQUNkLEtBQVksRUFDWixVQUE0QjtRQU41QixZQUFPLEdBQVAsT0FBTyxDQUEyQjtRQUNuQyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUMzQixXQUFNLEdBQU4sTUFBTSxDQUFlO1FBQ3JCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsVUFBSyxHQUFMLEtBQUssQ0FBTztRQUNaLGVBQVUsR0FBVixVQUFVLENBQWtCO1FBWnRDLG9CQUFlLEdBQVEsRUFBRSxDQUFDO1FBY3hCLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLGdDQUFnQyxDQUFDLENBQUM7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QkFKckMsU0FBUzsrQkFDRSx3QkFBd0I7NlFBYUYsZUFBZTtzQkFBNUMsU0FBUzt1QkFBQyxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIElucHV0LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVG9hc3RyU2VydmljZSB9IGZyb20gJ25neC10b2FzdHInO1xuaW1wb3J0IHsgY29uZmlybSB9IGZyb20gJ2RldmV4dHJlbWUvdWkvZGlhbG9nJztcbmltcG9ydCB7IFRpdGxlIH0gZnJvbSBcIkBhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXJcIjtcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBOYXZpZ2F0aW9uRXh0cmFzLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQXBwbGljYXRpb25Db250ZW50U2VydmljZSB9IGZyb20gJy4uLy4uL2FwcGxpY2F0aW9uLWNvbnRlbnQuc2VydmljZSc7XG5pbXBvcnQgbW9tZW50IGZyb20gJy4vLi4vLi4vbW9tZW50LWhlbHBlcic7XG5pbXBvcnQgeyBDb21tb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29tbW9uJztcbmltcG9ydCB7IGtwaWNvbW1vblNlcnZpY2UgfSBmcm9tICcuLi8uLi9rcGktc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1hbGwtbWV0cmljcy1jb25maWcnLFxuICB0ZW1wbGF0ZVVybDogJy4vYWxsLW1ldHJpY3MtY29uZmlnLmh0bWwnLFxufSlcbmV4cG9ydCBjbGFzcyBBbGxNZXRyaWNzQ29uZmlnQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICAgIG1ldHJpY3NEYXRhc291cmNlOiBhbnk7XG4gICAgaXNMb2FkZXI6IGJvb2xlYW47XG4gICAgaXNEdXBsaWRhdGVWaWV3OiBib29sZWFuO1xuICAgIGlzTmV3RGF0YVNldENyZWF0ZVZpZXc6IGJvb2xlYW47XG4gIFxuICAgIHBhZ2VWaWV3SWQ6IGJvb2xlYW47XG4gICAgcGFnZUNvbmZpZ0lkOiBib29sZWFuO1xuICBcbiAgICBAVmlld0NoaWxkKCdzY3JvbGxUb0VsZW1lbnQnKSBzY3JvbGxUb0VsZW1lbnQhOiBFbGVtZW50UmVmO1xuICAgIGRlZmF1bHRTdGFydERhdGU6IGFueTtcbiAgICBkZWZhdWx0RW5kRGF0ZTogYW55O1xuICAgIGlzRGF0YXNldFByZXZpZXc6IGJvb2xlYW47XG4gICAgaXNGaWx0ZXJJbnB1dHM6IGJvb2xlYW47XG4gICAgaXNEYXRhc2V0bG9hZGVyOiBib29sZWFuO1xuICAgIGRhdGFTb3VyY2VNb2RhbDogYW55ID0ge307XG4gICAgc2VsZWN0ZWREYXRhU2V0OiBhbnk7XG4gIFxuICBcbiAgXG4gICAgY29uc3RydWN0b3IoXG4gICAgICBwcml2YXRlIHNlcnZpY2U6IEFwcGxpY2F0aW9uQ29udGVudFNlcnZpY2UsXG4gICAgICBwdWJsaWMgY29tbW9uU2VydmljZTogQ29tbW9uU2VydmljZSxcbiAgICAgIHByaXZhdGUgdG9hc3RyOiBUb2FzdHJTZXJ2aWNlLFxuICAgICAgcHJpdmF0ZSBhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgICAgcHJpdmF0ZSB0aXRsZTogVGl0bGUsXG4gICAgICBwcml2YXRlIGtwaVNlcnZpY2U6IGtwaWNvbW1vblNlcnZpY2VcbiAgICApIHtcbiAgICAgIHRoaXMudGl0bGUuc2V0VGl0bGUoJ0FwcGxpY2F0aW9uIE1ldHJpY3MgQ29udHJvbGxlcicpO1xuICAgIH1cbiAgXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgXG4gICAgICB0aGlzLmdldE1ldHJpY3NEYXRhQ29uZ2lncygpO1xuICAgIH1cbiAgXG4gICAgZ2V0TWV0cmljc0RhdGFDb25naWdzKCkge1xuICAgICAgdGhpcy5pc0xvYWRlciA9IHRydWU7XG4gICAgICB0aGlzLnNlcnZpY2UubGlzdE1ldHJpY0NvbmZpZ3MoKS5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAoZGF0YTogYW55KSA9PiB7XG4gICAgICAgICAgdGhpcy5tZXRyaWNzRGF0YXNvdXJjZSA9IGRhdGE7XG4gICAgICAgICAgdGhpcy5pc0xvYWRlciA9IGZhbHNlO1xuICAgICAgICB9LCBlcnJvcjogKGVycjogYW55KSA9PiB7XG4gICAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IoJ1VuZXhwZWN0ZWQgU2VydmVyIEV4Y2VwdGlvbi4gUGxlYXNlIGNvbnRhY3QgU3lzdGVtIEFkbWluLicsICdNZXRyaWNzIENvbmZpZycpXG4gIFxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cbiAgXG4gICAgZ2V0Q3JlYXRlTmV3TWV0cmljcygpIHtcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL2FwcHMvY29udHJvbFBhbmVsL21ldHJpY0NvbnRyb2xsZXIvY3JlYXRlTWV0cmljcyddKVxuICBcbiAgICB9XG4gIFxuICBcbiAgICBlZGl0TWV0cmljc0NvbmZpZ3MoZGF0YSkge1xuICBcbiAgICAgIHRoaXMuc2VydmljZS5zZXRDdXJyZW50RGF0YXNldFZhbHVlKGRhdGEpXG4gICAgICBsZXQgbmF2aWdhdGlvbkV4dHJhOiBOYXZpZ2F0aW9uRXh0cmFzID0ge1xuICAgICAgICBxdWVyeVBhcmFtczoge1xuICAgICAgICAgIG1ldHJpY0lkOiBkYXRhLm1ldHJpY0lkLFxuICAgICAgICAgIGNvbnRlbnRUeXBlOiBcImVkaXRcIlxuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9hcHBzL2NvbnRyb2xQYW5lbC9tZXRyaWNDb250cm9sbGVyL2NyZWF0ZU1ldHJpY3MnXSwgbmF2aWdhdGlvbkV4dHJhKVxuICBcbiAgICB9XG4gIFxuICAgIGRlbGV0ZU1ldHJpY0NvbmZpZyhkYXRhKSB7XG4gICAgICBsZXQgcmVzdWx0ID0gY29uZmlybShcIjxpPkFyZSBZb3UgU3VyZT88L2k+XCIsIFwiRGVsZXRlIENvbmZpZ1wiKTtcbiAgICAgIHJlc3VsdC50aGVuKChkaWFsb2dSZXN1bHQpID0+IHtcbiAgICAgICAgaWYgKGRpYWxvZ1Jlc3VsdCkge1xuICAgICAgICAgIHRoaXMuaXNMb2FkZXIgPSB0cnVlO1xuICAgICAgICAgIHRoaXMuc2VydmljZS5kZWxldGVNZXRyaWNDb25maWcoZGF0YS5tZXRyaWNJZCkuc3Vic2NyaWJlKCh2YWw6IGFueSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5nZXRNZXRyaWNzRGF0YUNvbmdpZ3MoKTtcbiAgICAgICAgICAgIHRoaXMuaXNMb2FkZXIgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMudG9hc3RyLnN1Y2Nlc3MoJ01ldHJpYyBDb25maWcgRGVsZXRlZCBTdWNjZXNzZnVsbHknKVxuICAgICAgICAgIH0sIGVyciA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhlcnIpO1xuICAgICAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IoJ1VuZXhwZWN0ZWQgU2VydmVyIEV4Y2VwdGlvbi4gUGxlYXNlIGNvbnRhY3QgU3lzdGVtIEFkbWluLicsICdNZXRyaWMgQ29uZmlnJyk7XG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICBcbiAgXG4gICAgYWN0aXZhdGVkUmVwb3J0KGRhdGEpIHtcbiAgICAgICAgbGV0IHJlc3VsdCA9IGNvbmZpcm0oXCI8aT5BcmUgWW91IFN1cmU/PC9pPlwiLCBcIkFjdGl2YXRlIE1ldHJpY1wiKTtcbiAgICAgICAgcmVzdWx0LnRoZW4oKGRpYWxvZ1Jlc3VsdCkgPT4ge1xuICAgICAgICAgIGlmIChkaWFsb2dSZXN1bHQpIHtcbiAgICAgICAgICAgIC8vIHRoaXMubG9hZGluZ01vZGFsID0gdHJ1ZVxuICAgICAgICAgICAgLy8gdGhpcy5zZXJ2aWNlLmFjdGl2YXRlUmVwb3J0Q29uZmlnKGRhdGEucmVwb3J0SWQpLnN1YnNjcmliZSh7XG4gICAgICAgICAgICAvLyAgIG5leHQ6IChkYXRhOiBhbnkpID0+IHtcbiAgICAgICAgICAgIC8vICAgICB0aGlzLnBvcHVsYXRlUmVwb3J0RGF0YSgpO1xuICAgICAgICAgICAgLy8gICAgIHRoaXMudG9zdGVyLnN1Y2Nlc3MoZGF0YS5yZXNwb25zZSlcbiAgICAgICAgICAgIC8vICAgfSwgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xuICAgICAgICAgICAgLy8gICAgIGNvbnNvbGUubG9nKGVycik7XG4gICAgICAgICAgICAvLyAgICAgdGhpcy5sb2FkaW5nTW9kYWwgPSBmYWxzZTtcbiAgICAgICAgICAgIC8vICAgICB0aGlzLnRvc3Rlci5lcnJvcignVW5leHBlY3RlZCBTZXJ2ZXIgRXhjZXB0aW9uLiBQbGVhc2UgY29udGFjdCBTeXN0ZW0gQWRtaW4uJywgJ1J1bGUgTW9kdWxlJyk7XG4gICAgICAgICAgICAvLyAgIH1cbiAgICAgICAgICAgIC8vIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICAgIGRlQWN0aXZhdGVkUmVwb3J0KGRhdGEpIHtcbiAgICAgICAgbGV0IHJlc3VsdCA9IGNvbmZpcm0oXCI8aT5BcmUgWW91IFN1cmU/PC9pPlwiLCBcIkRlYWN0aXZhdGUgTWV0cmljXCIpO1xuICAgICAgICByZXN1bHQudGhlbigoZGlhbG9nUmVzdWx0KSA9PiB7XG4gICAgICAgICAgaWYgKGRpYWxvZ1Jlc3VsdCkge1xuICAgICAgICAgICAgLy8gdGhpcy5sb2FkaW5nTW9kYWwgPSB0cnVlXG4gICAgICAgICAgICAvLyB0aGlzLnNlcnZpY2UuZGVhY3RpdmF0ZVJlcG9ydENvbmZpZyhkYXRhLnJlcG9ydElkKS5zdWJzY3JpYmUoe1xuICAgICAgICAgICAgLy8gICBuZXh0OiAoZGF0YTogYW55KSA9PiB7XG4gICAgICAgICAgICAvLyAgICAgdGhpcy5wb3B1bGF0ZVJlcG9ydERhdGEoKTtcbiAgICAgICAgICAgIC8vICAgICB0aGlzLnRvc3Rlci5zdWNjZXNzKGRhdGEucmVzcG9uc2UpXG4gICAgICAgICAgICAvLyAgIH0sIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcbiAgICAgICAgICAgIC8vICAgICBjb25zb2xlLmxvZyhlcnIpO1xuICAgICAgICAgICAgLy8gICAgIHRoaXMubG9hZGluZ01vZGFsID0gZmFsc2U7XG4gICAgICAgICAgICAvLyAgICAgdGhpcy50b3N0ZXIuZXJyb3IoJ1VuZXhwZWN0ZWQgU2VydmVyIEV4Y2VwdGlvbi4gUGxlYXNlIGNvbnRhY3QgU3lzdGVtIEFkbWluLicsICdSdWxlIE1vZHVsZScpO1xuICAgICAgICAgICAgLy8gICB9XG4gICAgICAgICAgICAvLyB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICB9XG4gIFxuICBcblxufSIsIjxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGZsZXgtYXV0byBtaW4tdy0wXCI+XG4gICAgPGxpYi1jb21tb24taGVhZGVyIFtwYWdlVGl0bGVdPVwiJ0FwcGxpY2F0aW9uIERhdGFzZXRzJ1wiPjwvbGliLWNvbW1vbi1oZWFkZXI+XG5cbiAgICA8ZGl2IGNsYXNzPVwicC00IHctZnVsbFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibS0zIHAtNCBiZy13aGl0ZSBib3JkZXIgYm9yZGVyLWdyYXktMjAwIHJvdW5kZWQtbGcgc2hhZG93LW1kIGRhcms6YmctZ3JheS04MDAgZGFyazpib3JkZXItZ3JheS03MDBcIj5cbiAgICAgICAgICAgIDxoNiBjbGFzcz1cIm1iLTIgdGV4dC1sZyB0cmFja2luZy10aWdodCB0ZXh0LWdyYXktOTAwIGRhcms6dGV4dC13aGl0ZSBib3JkZXItYiBwYi0zIGZsZXggaXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS10YWJsZSBtci0yXCI+PC9pPiBBbGwgbWV0cmljcyBDb25maWdcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWwtYXV0b1wiPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwie3tjb21tb25TZXJ2aWNlLmJ0bl9wcmltYXJ5X21kfX1cIiAoY2xpY2spPVwiZ2V0Q3JlYXRlTmV3TWV0cmljcygpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBBZGQgTmV3IE1ldHJpY1xuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9oNj5cbiAgICAgICAgICAgIDxhcHAtbG9hZGVyICpuZ0lmPVwiaXNMb2FkZXJcIj48L2FwcC1sb2FkZXI+XG4gICAgICAgICAgICA8ZHgtZGF0YS1ncmlkIFtjb2x1bW5BdXRvV2lkdGhdPVwidHJ1ZVwiIFtkYXRhU291cmNlXT1cIm1ldHJpY3NEYXRhc291cmNlXCIgW2hvdmVyU3RhdGVFbmFibGVkXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiIWlzTG9hZGVyXCIgW3NlbGVjdGVkUm93S2V5c109XCJbXVwiIFtzaG93Qm9yZGVyc109XCJ0cnVlXCIgW3Nob3dDb2x1bW5MaW5lc109XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBbc2hvd1Jvd0xpbmVzXT1cInRydWVcIiBpZD1cImdyaWRDb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICA8ZHhvLXBhZ2luZyBbcGFnZVNpemVdPVwiMTBcIj48L2R4by1wYWdpbmc+XG4gICAgICAgICAgICAgICAgPGR4by1leHBvcnQgW2VuYWJsZWRdPVwidHJ1ZVwiPjwvZHhvLWV4cG9ydD5cbiAgICAgICAgICAgICAgICA8ZHhvLXNlYXJjaC1wYW5lbCBbaGlnaGxpZ2h0Q2FzZVNlbnNpdGl2ZV09XCJ0cnVlXCIgW3Zpc2libGVdPVwidHJ1ZVwiPjwvZHhvLXNlYXJjaC1wYW5lbD5cblxuICAgICAgICAgICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cIm1ldHJpY0lkXCI+PC9keGktY29sdW1uPlxuICAgICAgICAgICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cIm1ldHJpY0Rpc3BsYXlOYW1lXCI+PC9keGktY29sdW1uPlxuICAgICAgICAgICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cIm1ldHJpY1R5cGVcIj48L2R4aS1jb2x1bW4+XG4gICAgICAgICAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwibWV0cmljTmFtZVwiPjwvZHhpLWNvbHVtbj5cbiAgICAgICAgICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJzdGF0dXNcIj48L2R4aS1jb2x1bW4+XG4gICAgICAgICAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwiYWN0aXZhdGVkXCIgY2VsbFRlbXBsYXRlPVwiY2VsbFRlbXBsYXRlMlwiPjwvZHhpLWNvbHVtbj5cbiAgICAgICAgICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJjcmVhdGVkQnlcIj48L2R4aS1jb2x1bW4+XG4gICAgICAgICAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwiY3JlYXRpb25EYXRlXCIgc29ydE9yZGVyPVwiZGVzY1wiPjwvZHhpLWNvbHVtbj5cbiAgICAgICAgICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJhY3Rpb25cIiBjZWxsVGVtcGxhdGU9XCJjZWxsVGVtcGxhdGVcIiBbZml4ZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgIGZpeGVkUG9zaXRpb249XCJyaWdodFwiPjwvZHhpLWNvbHVtbj5cbiAgICAgICAgICAgICAgICA8ZGl2ICpkeFRlbXBsYXRlPVwibGV0IGRhdGEgb2YgJ2NlbGxUZW1wbGF0ZSdcIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInt7Y29tbW9uU2VydmljZS5idG5fcHJpbWFyeV9tZH19XCIgKGNsaWNrKT1cImVkaXRNZXRyaWNzQ29uZmlncyhkYXRhLmRhdGEpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBFZGl0XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8IS0tIDxidXR0b24gY2xhc3M9XCJ7e2NvbW1vblNlcnZpY2UuYnRuX3dhcm5pbmdfbWR9fVwiIChjbGljayk9XCJkdXBsaWNhdGVEYXRhc2V0KGRhdGEuZGF0YSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIER1cGxpY2F0ZVxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4gLS0+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ7e2NvbW1vblNlcnZpY2UuYnRuX2Rhbmdlcl9tZH19XCIgKGNsaWNrKT1cImRlbGV0ZU1ldHJpY0NvbmZpZyhkYXRhLmRhdGEpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBEZWxldGVcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2ICpkeFRlbXBsYXRlPVwibGV0IGRhdGEgb2YgJ2NlbGxUZW1wbGF0ZTInXCI+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiICpuZ0lmPVwiZGF0YS5kYXRhLmFjdGl2YXRlZCA9PSB0cnVlXCIgKGNsaWNrKT1cImRlQWN0aXZhdGVkUmVwb3J0KGRhdGEuZGF0YSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ7e2NvbW1vblNlcnZpY2UuYnRuU3VjY2Vzc0dyZWVufX1cIj5BY3RpdmF0ZWQ8L2J1dHRvbj5cblxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAqbmdJZj1cImRhdGEuZGF0YS5hY3RpdmF0ZWQgPT0gZmFsc2VcIiAoY2xpY2spPVwiYWN0aXZhdGVkUmVwb3J0KGRhdGEuZGF0YSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ7e2NvbW1vblNlcnZpY2UuYnRuV2FybmluZ1llbGxvd319XCI+RGVhY3RpdmF0ZWQ8L2J1dHRvbj5cblxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG5cbiAgICAgICAgICAgIDwvZHgtZGF0YS1ncmlkPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuXG48L2Rpdj4iXX0=
|
|
@@ -2,18 +2,22 @@ import { Component } from '@angular/core';
|
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
3
|
import * as i1 from "../../common";
|
|
4
4
|
import * as i2 from "ngx-toastr";
|
|
5
|
-
import * as i3 from "@angular/
|
|
6
|
-
import * as i4 from "
|
|
7
|
-
import * as i5 from "
|
|
8
|
-
import * as i6 from "
|
|
9
|
-
import * as i7 from "
|
|
10
|
-
import * as i8 from "
|
|
11
|
-
import * as i9 from "
|
|
12
|
-
import * as i10 from "
|
|
5
|
+
import * as i3 from "@angular/router";
|
|
6
|
+
import * as i4 from "../../application-content.service";
|
|
7
|
+
import * as i5 from "@angular/common";
|
|
8
|
+
import * as i6 from "devextreme-angular/ui/select-box";
|
|
9
|
+
import * as i7 from "devextreme-angular/ui/text-box";
|
|
10
|
+
import * as i8 from "@angular/forms";
|
|
11
|
+
import * as i9 from "@angular/material/icon";
|
|
12
|
+
import * as i10 from "../../shared/loading/loading.component";
|
|
13
|
+
import * as i11 from "../online-metrics/online-metrics.component";
|
|
14
|
+
import * as i12 from "../ofline-metrics/ofline-metrics.component";
|
|
13
15
|
export class CreateMetricsComponent {
|
|
14
|
-
constructor(commonService, toastr) {
|
|
16
|
+
constructor(commonService, toastr, router, service) {
|
|
15
17
|
this.commonService = commonService;
|
|
16
18
|
this.toastr = toastr;
|
|
19
|
+
this.router = router;
|
|
20
|
+
this.service = service;
|
|
17
21
|
this.reqFieldsDataSource = [];
|
|
18
22
|
this.isreqFields = false;
|
|
19
23
|
this.iscdrParams = false;
|
|
@@ -62,6 +66,7 @@ export class CreateMetricsComponent {
|
|
|
62
66
|
"databaseName": "rafmdb",
|
|
63
67
|
"dbConfig": "mongo",
|
|
64
68
|
"tableName": "msc_daily_metric",
|
|
69
|
+
"partitionColumn": "",
|
|
65
70
|
"dimensionColumns": ["record_date", "event_type", "srv_type", "direction", "nw_call_type", "hour",
|
|
66
71
|
"country", "operator"
|
|
67
72
|
],
|
|
@@ -83,6 +88,7 @@ export class CreateMetricsComponent {
|
|
|
83
88
|
"metricId": "",
|
|
84
89
|
"metricDisplayName": "",
|
|
85
90
|
"metricType": "offline",
|
|
91
|
+
"runner": "",
|
|
86
92
|
"source": {
|
|
87
93
|
"databaseName": "rafms",
|
|
88
94
|
"dbConfig": "bigquery",
|
|
@@ -129,24 +135,39 @@ export class CreateMetricsComponent {
|
|
|
129
135
|
}
|
|
130
136
|
}
|
|
131
137
|
submittOnlineMetrics(data) {
|
|
132
|
-
data["
|
|
133
|
-
data["metricId"] =
|
|
134
|
-
data["
|
|
135
|
-
data["metricType"] = this.metricMainObject.metricType;
|
|
138
|
+
data["appName"] = "pronto";
|
|
139
|
+
data["metricId"] = "";
|
|
140
|
+
data["activated"] = false;
|
|
136
141
|
console.log(data);
|
|
142
|
+
this.service.saveOnlineMetricConfig(data).subscribe({
|
|
143
|
+
next: (data) => {
|
|
144
|
+
this.toastr.success("Online Metrics Updates Successfully");
|
|
145
|
+
this.router.navigate(['/apps/controlPanel/metricController']);
|
|
146
|
+
}, error: (err) => {
|
|
147
|
+
this.toastr.error('Unexpected Server Exception. Please contact System Admin.', 'Create Metrics Config');
|
|
148
|
+
}
|
|
149
|
+
});
|
|
137
150
|
}
|
|
138
151
|
submittOfflineMetrics(data) {
|
|
139
|
-
data["
|
|
140
|
-
data["metricId"] =
|
|
141
|
-
data["
|
|
142
|
-
data
|
|
152
|
+
data["appName"] = "pronto";
|
|
153
|
+
data["metricId"] = "";
|
|
154
|
+
data["activated"] = false;
|
|
155
|
+
console.log(data);
|
|
156
|
+
this.service.editOfflineMetricConfig(data).subscribe({
|
|
157
|
+
next: (data) => {
|
|
158
|
+
this.toastr.success("Offline Metrics Updates Successfully");
|
|
159
|
+
this.router.navigate(['/apps/controlPanel/metricController']);
|
|
160
|
+
}, error: (err) => {
|
|
161
|
+
this.toastr.error('Unexpected Server Exception. Please contact System Admin.', 'Create Metrics Config');
|
|
162
|
+
}
|
|
163
|
+
});
|
|
143
164
|
console.log(data);
|
|
144
165
|
}
|
|
145
166
|
}
|
|
146
|
-
CreateMetricsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: CreateMetricsComponent, deps: [{ token: i1.CommonService }, { token: i2.ToastrService }], target: i0.ɵɵFactoryTarget.Component });
|
|
147
|
-
CreateMetricsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: CreateMetricsComponent, selector: "app-create-metrics", ngImport: i0, template: "<app-loading *ngIf=\"loadingModal\"></app-loading>\n<div class=\"flex flex-col flex-auto w-full\">\n <div class=\"flex flex-col\">\n <div class=\"flex justify-between border-b dark:bg-transparent\">\n <div class=\"flex flex-col ml-1\">\n <div class=\"flex items-center float-start\">\n <div class=\"flex items-center overflow-hidden\">\n <mat-icon class=\"icon-size-2\" [svgIcon]=\"'heroicons_solid:template'\"></mat-icon>\n </div>\n <h2\n class=\"text-2xl md:text-2xl py-3 font-extrabold items-center ml-2 tracking-tight leading-5 truncate capitalize\">\n Create Metrics\n </h2>\n </div>\n <div class=\"\">\n </div>\n </div>\n <!-- <div class=\"flex justify-between items-center border-l-2 p-0 m-0 relative\">\n <div class=\"mx-4\">\n <div class=\"text-lg font-bold mx-4 corsur-pointer\" (click)=\"openDateFilter()\">\n {{selectedDateAndTime}}\n <i class=\"fa fa-calendar\"></i>\n </div>\n </div>\n </div> -->\n </div>\n\n </div>\n\n <div class=\"flex\">\n <div class=\"w-full border-r\">\n <div class=\"m-2\">\n <div class=\"flex flex-row mb-2\">\n <div class=\"mx-2 w-1/3\">\n <div class=\"text-md mb-2\">Metric Name</div>\n <dx-text-box [(ngModel)]=\"metricMainObject.metricName\"></dx-text-box>\n </div>\n <div class=\"mx-2 w-1/3\">\n <div class=\"text-md mb-2\">Metric Display Name</div>\n <dx-text-box [(ngModel)]=\"metricMainObject.metricDisplayName\"></dx-text-box>\n </div>\n <div class=\"mx-2 w-1/3\">\n <div class=\"text-md mb-2\">Metric Id</div>\n <dx-text-box [(ngModel)]=\"metricMainObject.metricId\"></dx-text-box>\n </div>\n <div class=\"mx-2 w-1/3\">\n <div class=\"text-md mb-2\">Metric Type</div>\n <dx-select-box [items]=\"['online','ofline']\" [(ngModel)]=\"metricMainObject.metricType\"\n (onValueChanged)=\"getMetricType($event)\"></dx-select-box>\n </div>\n </div>\n <ng-container *ngIf=\"metricMainObject.metricType == 'online'\">\n <app-online-metrics [onlineMetricData]=\"metricOnlineObject\"\n (getMetRicOnlineDataSet)=\"submittOnlineMetrics($event)\"></app-online-metrics>\n </ng-container>\n <ng-container *ngIf=\"metricMainObject.metricType == 'ofline'\">\n <app-ofline-metrics [onflineMetricData]=\"metricOflineObject\"\n (getMetRicOflineDataSet)=\"submittOfflineMetrics($event)\"></app-ofline-metrics>\n </ng-container>\n\n\n </div>\n </div>\n </div>\n</div>", styles: [""], dependencies: [{ kind: "directive", type:
|
|
167
|
+
CreateMetricsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: CreateMetricsComponent, deps: [{ token: i1.CommonService }, { token: i2.ToastrService }, { token: i3.Router }, { token: i4.ApplicationContentService }], target: i0.ɵɵFactoryTarget.Component });
|
|
168
|
+
CreateMetricsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: CreateMetricsComponent, selector: "app-create-metrics", ngImport: i0, template: "<app-loading *ngIf=\"loadingModal\"></app-loading>\n<div class=\"flex flex-col flex-auto w-full\">\n <div class=\"flex flex-col\">\n <div class=\"flex justify-between border-b dark:bg-transparent\">\n <div class=\"flex flex-col ml-1\">\n <div class=\"flex items-center float-start\">\n <div class=\"flex items-center overflow-hidden\">\n <mat-icon class=\"icon-size-2\" [svgIcon]=\"'heroicons_solid:template'\"></mat-icon>\n </div>\n <h2\n class=\"text-2xl md:text-2xl py-3 font-extrabold items-center ml-2 tracking-tight leading-5 truncate capitalize\">\n Create Metrics\n </h2>\n </div>\n <div class=\"\">\n </div>\n </div>\n <!-- <div class=\"flex justify-between items-center border-l-2 p-0 m-0 relative\">\n <div class=\"mx-4\">\n <div class=\"text-lg font-bold mx-4 corsur-pointer\" (click)=\"openDateFilter()\">\n {{selectedDateAndTime}}\n <i class=\"fa fa-calendar\"></i>\n </div>\n </div>\n </div> -->\n </div>\n\n </div>\n\n <div class=\"flex\">\n <div class=\"w-full border-r\">\n <div class=\"m-2\">\n <div class=\"flex flex-row mb-2\">\n <div class=\"mx-2 w-1/3\">\n <div class=\"text-md mb-2\">Metric Name</div>\n <dx-text-box [(ngModel)]=\"metricMainObject.metricName\"></dx-text-box>\n </div>\n <div class=\"mx-2 w-1/3\">\n <div class=\"text-md mb-2\">Metric Display Name</div>\n <dx-text-box [(ngModel)]=\"metricMainObject.metricDisplayName\"></dx-text-box>\n </div>\n <div class=\"mx-2 w-1/3\">\n <div class=\"text-md mb-2\">Metric Id</div>\n <dx-text-box [(ngModel)]=\"metricMainObject.metricId\"></dx-text-box>\n </div>\n <div class=\"mx-2 w-1/3\">\n <div class=\"text-md mb-2\">Metric Type</div>\n <dx-select-box [items]=\"['online','ofline']\" [(ngModel)]=\"metricMainObject.metricType\"\n (onValueChanged)=\"getMetricType($event)\"></dx-select-box>\n </div>\n </div>\n <ng-container *ngIf=\"metricMainObject.metricType == 'online'\">\n <app-online-metrics [onlineMetricData]=\"metricOnlineObject\"\n (getMetRicOnlineDataSet)=\"submittOnlineMetrics($event)\"></app-online-metrics>\n </ng-container>\n <ng-container *ngIf=\"metricMainObject.metricType == 'ofline'\">\n <app-ofline-metrics [onflineMetricData]=\"metricOflineObject\"\n (getMetRicOflineDataSet)=\"submittOfflineMetrics($event)\"></app-ofline-metrics>\n </ng-container>\n\n\n </div>\n </div>\n </div>\n</div>", styles: [""], dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.DxSelectBoxComponent, selector: "dx-select-box", inputs: ["acceptCustomValue", "accessKey", "activeStateEnabled", "buttons", "dataSource", "deferRendering", "disabled", "displayExpr", "displayValue", "dropDownButtonTemplate", "dropDownOptions", "elementAttr", "fieldTemplate", "focusStateEnabled", "grouped", "groupTemplate", "height", "hint", "hoverStateEnabled", "inputAttr", "isValid", "items", "itemTemplate", "label", "labelMode", "maxLength", "minSearchLength", "name", "noDataText", "opened", "openOnFieldClick", "placeholder", "readOnly", "rtlEnabled", "searchEnabled", "searchExpr", "searchMode", "searchTimeout", "selectedItem", "showClearButton", "showDataBeforeSearch", "showDropDownButton", "showSelectionControls", "spellcheck", "stylingMode", "tabIndex", "text", "useItemTextAsTitle", "validationError", "validationErrors", "validationMessageMode", "validationStatus", "value", "valueChangeEvent", "valueExpr", "visible", "width", "wrapItemText"], outputs: ["onChange", "onClosed", "onContentReady", "onCopy", "onCustomItemCreating", "onCut", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onItemClick", "onKeyDown", "onKeyUp", "onOpened", "onOptionChanged", "onPaste", "onSelectionChanged", "onValueChanged", "acceptCustomValueChange", "accessKeyChange", "activeStateEnabledChange", "buttonsChange", "dataSourceChange", "deferRenderingChange", "disabledChange", "displayExprChange", "displayValueChange", "dropDownButtonTemplateChange", "dropDownOptionsChange", "elementAttrChange", "fieldTemplateChange", "focusStateEnabledChange", "groupedChange", "groupTemplateChange", "heightChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "isValidChange", "itemsChange", "itemTemplateChange", "labelChange", "labelModeChange", "maxLengthChange", "minSearchLengthChange", "nameChange", "noDataTextChange", "openedChange", "openOnFieldClickChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "searchEnabledChange", "searchExprChange", "searchModeChange", "searchTimeoutChange", "selectedItemChange", "showClearButtonChange", "showDataBeforeSearchChange", "showDropDownButtonChange", "showSelectionControlsChange", "spellcheckChange", "stylingModeChange", "tabIndexChange", "textChange", "useItemTextAsTitleChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationStatusChange", "valueChange", "valueChangeEventChange", "valueExprChange", "visibleChange", "widthChange", "wrapItemTextChange", "onBlur"] }, { kind: "component", type: i7.DxTextBoxComponent, selector: "dx-text-box", inputs: ["accessKey", "activeStateEnabled", "buttons", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "inputAttr", "isValid", "label", "labelMode", "mask", "maskChar", "maskInvalidMessage", "maskRules", "maxLength", "mode", "name", "placeholder", "readOnly", "rtlEnabled", "showClearButton", "showMaskMode", "spellcheck", "stylingMode", "tabIndex", "text", "useMaskedValue", "validationError", "validationErrors", "validationMessageMode", "validationStatus", "value", "valueChangeEvent", "visible", "width"], outputs: ["onChange", "onContentReady", "onCopy", "onCut", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onKeyDown", "onKeyUp", "onOptionChanged", "onPaste", "onValueChanged", "accessKeyChange", "activeStateEnabledChange", "buttonsChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "isValidChange", "labelChange", "labelModeChange", "maskChange", "maskCharChange", "maskInvalidMessageChange", "maskRulesChange", "maxLengthChange", "modeChange", "nameChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "showClearButtonChange", "showMaskModeChange", "spellcheckChange", "stylingModeChange", "tabIndexChange", "textChange", "useMaskedValueChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationStatusChange", "valueChange", "valueChangeEventChange", "visibleChange", "widthChange", "onBlur"] }, { kind: "directive", type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i9.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i10.LoadingComponent, selector: "app-loading" }, { kind: "component", type: i11.OnlineMetricsComponent, selector: "app-online-metrics", inputs: ["onlineMetricData"], outputs: ["getMetRicOnlineDataSet"] }, { kind: "component", type: i12.OflineMetricsComponent, selector: "app-ofline-metrics", inputs: ["onflineMetricData"], outputs: ["getMetRicOflineDataSet"] }] });
|
|
148
169
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: CreateMetricsComponent, decorators: [{
|
|
149
170
|
type: Component,
|
|
150
171
|
args: [{ selector: 'app-create-metrics', template: "<app-loading *ngIf=\"loadingModal\"></app-loading>\n<div class=\"flex flex-col flex-auto w-full\">\n <div class=\"flex flex-col\">\n <div class=\"flex justify-between border-b dark:bg-transparent\">\n <div class=\"flex flex-col ml-1\">\n <div class=\"flex items-center float-start\">\n <div class=\"flex items-center overflow-hidden\">\n <mat-icon class=\"icon-size-2\" [svgIcon]=\"'heroicons_solid:template'\"></mat-icon>\n </div>\n <h2\n class=\"text-2xl md:text-2xl py-3 font-extrabold items-center ml-2 tracking-tight leading-5 truncate capitalize\">\n Create Metrics\n </h2>\n </div>\n <div class=\"\">\n </div>\n </div>\n <!-- <div class=\"flex justify-between items-center border-l-2 p-0 m-0 relative\">\n <div class=\"mx-4\">\n <div class=\"text-lg font-bold mx-4 corsur-pointer\" (click)=\"openDateFilter()\">\n {{selectedDateAndTime}}\n <i class=\"fa fa-calendar\"></i>\n </div>\n </div>\n </div> -->\n </div>\n\n </div>\n\n <div class=\"flex\">\n <div class=\"w-full border-r\">\n <div class=\"m-2\">\n <div class=\"flex flex-row mb-2\">\n <div class=\"mx-2 w-1/3\">\n <div class=\"text-md mb-2\">Metric Name</div>\n <dx-text-box [(ngModel)]=\"metricMainObject.metricName\"></dx-text-box>\n </div>\n <div class=\"mx-2 w-1/3\">\n <div class=\"text-md mb-2\">Metric Display Name</div>\n <dx-text-box [(ngModel)]=\"metricMainObject.metricDisplayName\"></dx-text-box>\n </div>\n <div class=\"mx-2 w-1/3\">\n <div class=\"text-md mb-2\">Metric Id</div>\n <dx-text-box [(ngModel)]=\"metricMainObject.metricId\"></dx-text-box>\n </div>\n <div class=\"mx-2 w-1/3\">\n <div class=\"text-md mb-2\">Metric Type</div>\n <dx-select-box [items]=\"['online','ofline']\" [(ngModel)]=\"metricMainObject.metricType\"\n (onValueChanged)=\"getMetricType($event)\"></dx-select-box>\n </div>\n </div>\n <ng-container *ngIf=\"metricMainObject.metricType == 'online'\">\n <app-online-metrics [onlineMetricData]=\"metricOnlineObject\"\n (getMetRicOnlineDataSet)=\"submittOnlineMetrics($event)\"></app-online-metrics>\n </ng-container>\n <ng-container *ngIf=\"metricMainObject.metricType == 'ofline'\">\n <app-ofline-metrics [onflineMetricData]=\"metricOflineObject\"\n (getMetRicOflineDataSet)=\"submittOfflineMetrics($event)\"></app-ofline-metrics>\n </ng-container>\n\n\n </div>\n </div>\n </div>\n</div>" }]
|
|
151
|
-
}], ctorParameters: function () { return [{ type: i1.CommonService }, { type: i2.ToastrService }]; } });
|
|
152
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLW1ldHJpY3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2FtbWEtYXBwLWNvbnRyb2xsZXIvc3JjL2xpYi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL2FwcGxpY2F0aW9uLW1ldHJpYy1jb25maWcvY3JlYXRlLW1ldHJpY3MvY3JlYXRlLW1ldHJpY3MuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2FtbWEtYXBwLWNvbnRyb2xsZXIvc3JjL2xpYi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL2FwcGxpY2F0aW9uLW1ldHJpYy1jb25maWcvY3JlYXRlLW1ldHJpY3MvY3JlYXRlLW1ldHJpY3MuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLFNBQVMsRUFBdUMsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7Ozs7OztBQVMvRSxNQUFNLE9BQU8sc0JBQXNCO0lBd0hqQyxZQUFtQixhQUE0QixFQUFVLE1BQXFCO1FBQTNELGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQVUsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQXJIOUUsd0JBQW1CLEdBQVEsRUFBRSxDQUFDO1FBQzlCLGdCQUFXLEdBQVksS0FBSyxDQUFDO1FBQzdCLGdCQUFXLEdBQVksS0FBSyxDQUFDO1FBQzdCLHdCQUFtQixHQUFRLEVBQUUsQ0FBQztRQUM5QixpQkFBWSxHQUFRLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQTtRQUNyRixpQkFBWSxHQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQTtRQUM3RCx3QkFBbUIsR0FBUSxFQUFFLENBQUM7UUFDOUIsdUJB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VUFBVSxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUM7U0FDM0I7SUFDSCxDQUFDO0lBRUQsb0JBQW9CLENBQUMsSUFBSTtRQUN2QixJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3pELElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDckQsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDdkUsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUM7UUFDdEQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwQixDQUFDO0lBQ0QscUJBQXFCLENBQUMsSUFBSTtRQUN4QixJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3pELElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDckQsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDdkUsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUM7UUFDdEQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwQixDQUFDOzttSEFsSlUsc0JBQXNCO3VHQUF0QixzQkFBc0IsMERDWG5DLDJyR0FnRU07MkZEckRPLHNCQUFzQjtrQkFMbEMsU0FBUzsrQkFDRSxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJcblxuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVG9hc3RyU2VydmljZSB9IGZyb20gJ25neC10b2FzdHInO1xuaW1wb3J0IHsgQ29tbW9uU2VydmljZSB9IGZyb20gJy4uLy4uL2NvbW1vbic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1jcmVhdGUtbWV0cmljcycsXG4gIHRlbXBsYXRlVXJsOiAnLi9jcmVhdGUtbWV0cmljcy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NyZWF0ZS1tZXRyaWNzLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgQ3JlYXRlTWV0cmljc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIGxvYWRpbmdNb2RhbDogYm9vbGVhbjtcbiAgLy8gQElucHV0KCkgcXVlcnlCdWxkZXJEYXRhc2V0OiBhbnk7XG4gIHJlcUZpZWxkc0RhdGFTb3VyY2U6IGFueSA9IFtdO1xuICBpc3JlcUZpZWxkczogYm9vbGVhbiA9IGZhbHNlO1xuICBpc2NkclBhcmFtczogYm9vbGVhbiA9IGZhbHNlO1xuICBjZHJGaWVsZHNEYXRhU291cmNlOiBhbnkgPSBbXTtcbiAga3BpX2Z1bmN0aW9uOiBhbnkgPSBbXCJzdW1cIiwgXCJjb3VudFwiLCBcImF2Z1wiLCBcIm1heFwiLCBcIm1pblwiLCBcInN0ZGRldlwiLCBcImNvdW50X2Rpc3RpbmN0XCJdXG4gIGtwaV9vcGVyYXRvcjogYW55ID0gW1wiZXFcIiwgXCJndGVcIiwgXCJsdGVcIiwgXCJuZVwiLCBcImluXCIsIFwibm90SW5cIl1cbiAga3BpX2VucmljaG1lbnRfbmFtZTogYW55ID0gW107XG4gIHJlcVNob3J0RGF0YVNvdXJjZTogYW55ID0gW107XG4gIGZpbHRlck1hcGluZ0RhdGFzb3VyY2U6IGFueSA9IFtdO1xuICBxdWVyeV9kYXRhOiBhbnk7XG4gIGlzTW9kZWxWaXNpYmxlOiBib29sZWFuID0gZmFsc2U7XG4gIGlzU3FsQ29waWVkVGV4dDogYm9vbGVhbiA9IGZhbHNlO1xuICBxdWVyeUJ1bGRlckRhdGFzZXQ6IGFueTtcbiAgaXNSZWNvbkNvbHVtZTogYm9vbGVhbiA9IGZhbHNlO1xuICAvLyBAT3V0cHV0KCkgcHVibGljIGdldFF1ZXJ5QnVsYmRlckRhdGFTZXQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIHJlY29uQ29sdW1lRGF0YXNvdXJjZSA9IFtdO1xuXG4gIHNlbGVjdGVkRGF0YVNvdXJjZTogYW55O1xuICBpc1F1ZXJ5VHlwZVNlbGVjdDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIG1lc3VyZXNBbmREaW1lbnRpb25zQ29sdW1ucyA9IFtdO1xuICBtZXRyaWNPbmxpbmVPYmplY3QgPSB7XG4gICAgXCJtZXRyaWNOYW1lXCI6IFwibXNjX3ZvaWNlX2RheV9tZXRyaWNcIixcbiAgICBcIm1ldHJpY0lkXCI6IFwiXCIsXG4gICAgXCJtZXRyaWNEaXNwbGF5TmFtZVwiOiBcIk1ldHJpYyBWb2ljZSBEYXkgTWV0cmljXCIsXG4gICAgXCJtZXRyaWNUeXBlXCI6IFwib25saW5lXCIsXG4gICAgXCJzb3VyY2VcIjoge1xuICAgICAgXCJkYXRhc291cmNlXCI6IFwiaHVhd2VpLW1zY1wiLFxuICAgICAgXCJldmVudE5hbWVcIjogXCJodWF3ZWlfbXNjX2ZjdFwiLFxuICAgICAgXCJmaWx0ZXJzXCI6IFtcbiAgICAgICAgeyBcImZpZWxkTmFtZVwiOiBcImV2ZW50X3R5cGVfa2V5XCIsIFwib3BlcmF0aW9uXCI6IFwic3RyaW5nXCIsIFwidGhyZXNob2xkXCI6IFwiMSw1LDZcIiwgXCJjb21wYXJhdG9yXCI6IFwiaW5cIiB9XG4gICAgICBdLFxuICAgICAgXCJleGNsdXNpb25zXCI6IFtcbiAgICAgICAgeyBcImZpZWxkTmFtZVwiOiBcIlwiLCBcIm9wZXJhdGlvblwiOiBcIlwiLCBcInRocmVzaG9sZFwiOiBcIlwiLCBcImNvbXBhcmF0b3JcIjogXCJcIiB9XG4gICAgICBdLFxuICAgICAgXCJkaW1lbnNpb25zXCI6IFtcbiAgICAgICAgeyBcImZpZWxkTmFtZVwiOiBcInhkcl9kYXRlXCIsIFwiYWxpYXNOYW1lXCI6IFwicmVjb3JkX2RhdGVcIiwgXCJkYXRhVHlwZVwiOiBcInN0cmluZ1wiLCBcImZvcm1hdFwiOiBcInl5eXlNTWRkXCIgfSxcbiAgICAgICAgeyBcImZpZWxkTmFtZVwiOiBcImV2ZW50X3R5cGVfa2V5XCIsIFwiYWxpYXNOYW1lXCI6IFwiZXZlbnRfdHlwZVwiLCBcImRhdGFUeXBlXCI6IFwic3RyaW5nXCIgfSxcbiAgICAgICAgeyBcImZpZWxkTmFtZVwiOiBcInNydl90eXBlX2tleVwiLCBcImFsaWFzTmFtZVwiOiBcInNydl90eXBlXCIsIFwiZGF0YVR5cGVcIjogXCJzdHJpbmdcIiB9LFxuICAgICAgICB7IFwiZmllbGROYW1lXCI6IFwib3RoZXJfbndfaW5kX2tleVwiLCBcImFsaWFzTmFtZVwiOiBcIm53X2NhbGxfdHlwZVwiLCBcImRhdGFUeXBlXCI6IFwic3RyaW5nXCIgfSxcbiAgICAgICAgeyBcImZpZWxkTmFtZVwiOiBcInhkcl9kYXRlXCIsIFwiYWxpYXNOYW1lXCI6IFwiaG91clwiLCBcImRhdGFUeXBlXCI6IFwiaW50XCIsIFwibWV0aG9kXCI6IFwiZ2V0SG91clwiIH0sXG4gICAgICAgIHsgXCJmaWVsZE5hbWVcIjogXCJvdGhlcl9tc2lzZG5faXNvX2NvZGVcIiwgXCJhbGlhc05hbWVcIjogXCJjb3VudHJ5XCIsIFwiZGF0YVR5cGVcIjogXCJzdHJpbmdcIiB9LFxuICAgICAgICB7IFwiZmllbGROYW1lXCI6IFwib3RoZXJfb3BlclwiLCBcImFsaWFzTmFtZVwiOiBcIm9wZXJhdG9yXCIsIFwiZGF0YVR5cGVcIjogXCJzdHJpbmdcIiB9LFxuICAgICAgICB7IFwiZmllbGROYW1lXCI6IFwiZXZlbnRfZGlyZWN0aW9uX2tleVwiLCBcImFsaWFzTmFtZVwiOiBcImRpcmVjdGlvblwiLCBcImRhdGFUeXBlXCI6IFwic3RyaW5nXCIgfVxuICAgICAgXSxcbiAgICAgIFwibWVhc3VyZXNcIjogW1xuICAgICAgICB7IFwiZmllbGROYW1lXCI6IFwib3JpZ2luYWxfZHVyXCIsIFwiYWxpYXNOYW1lXCI6IFwibXNjX21vdVwiLCBcImRhdGFUeXBlXCI6IFwiZG91YmxlXCIsIFwidHlwZVwiOiBcInN1bVwiIH0sXG4gICAgICAgIHsgXCJhbGlhc05hbWVcIjogXCJtc2NfY291bnRcIiwgXCJ0eXBlXCI6IFwiY291bnRcIiB9XG4gICAgICBdXG4gICAgfSxcbiAgICBcInRhcmdldFwiOiB7XG4gICAgICBcImRhdGFiYXNlTmFtZVwiOiBcInJhZm1kYlwiLFxuICAgICAgXCJkYkNvbmZpZ1wiOiBcIm1vbmdvXCIsXG4gICAgICBcInRhYmxlTmFtZVwiOiBcIm1zY19kYWlseV9tZXRyaWNcIixcbiAgICAgIFwiZGltZW5zaW9uQ29sdW1uc1wiOiBbXCJyZWNvcmRfZGF0ZVwiLCBcImV2ZW50X3R5cGVcIiwgXCJzcnZfdHlwZVwiLCBcImRpcmVjdGlvblwiLCBcIm53X2NhbGxfdHlwZVwiLCBcImhvdXJcIixcbiAgICAgICAgXCJjb3VudHJ5XCIsIFwib3BlcmF0b3JcIlxuICAgICAgXSxcbiAgICAgIFwibWVhc3VyZUNvbHVtbnNcIjogW1xuICAgICAgICBcIm1zY19tb3VcIiwgXCJtc2NfY291bnRcIlxuICAgICAgXSxcbiAgICAgIFwiY3JlYXRlVGFibGVcIjogZmFsc2UsXG4gICAgICBcIndyaXRlRGlzcG9zaXRpb25cIjogXCJhcHBlbmRcIlxuICAgIH1cbiAgfVxuICBtZXRyaWNNYWluT2JqZWN0OiBhbnkgPSB7XG4gICAgXCJtZXRyaWNOYW1lXCI6IFwibXNjX3ZvaWNlX2RheV9tZXRyaWNcIixcbiAgICBcIm1ldHJpY0lkXCI6IFwiXCIsXG4gICAgXCJtZXRyaWNEaXNwbGF5TmFtZVwiOiBcIk1ldHJpYyBWb2ljZSBEYXkgTWV0cmljXCIsXG4gICAgXCJtZXRyaWNUeXBlXCI6IFwib25saW5lXCIsXG4gIH07XG5cbiAgbWV0cmljT2ZsaW5lT2JqZWN0ID0ge1xuICAgIFwibWV0cmljTmFtZVwiOiBcIlwiLFxuICAgIFwibWV0cmljSWRcIjogXCJcIixcbiAgICBcIm1ldHJpY0Rpc3BsYXlOYW1lXCI6IFwiXCIsXG4gICAgXCJtZXRyaWNUeXBlXCI6IFwib2ZmbGluZVwiLFxuICAgIFwic291cmNlXCI6IHtcbiAgICAgIFwiZGF0YWJhc2VOYW1lXCI6IFwicmFmbXNcIixcbiAgICAgIFwiZGJDb25maWdcIjogXCJiaWdxdWVyeVwiLFxuICAgICAgXCJxdWVyeVRlbXBsYXRlXCI6IFwiXCIsXG4gICAgICBcInF1ZXJ5VGVtcGxhdGVGaWxlXCI6IFwiXCJcbiAgICB9LFxuICAgIFwidGFyZ2V0XCI6IHtcbiAgICAgIFwiZGF0YWJhc2VOYW1lXCI6IFwicmFmbWRiXCIsXG4gICAgICBcImRiQ29uZmlnXCI6IFwibXlzcWxcIixcbiAgICAgIFwidGFibGVOYW1lXCI6IFwiXCIsXG4gICAgICBcImRpbWVuc2lvbkNvbHVtbnNcIjogW10sXG4gICAgICBcIm1lYXN1cmVDb2x1bW5zXCI6IFtdLFxuICAgICAgXCJwYXJ0aXRpb25Db2x1bW5cIjogXCJcIixcbiAgICAgIFwiY3JlYXRlVGFibGVcIjogdHJ1ZSxcbiAgICAgIFwid3JpdGVEaXNwb3NpdGlvblwiOiBcImFwcGVuZFwiXG4gICAgfSxcbiAgICBcImV4ZWN1dGlvblwiOiB7XG4gICAgICBcInR5cGVcIjogXCJzY2hlZHVsZWRcIixcbiAgICAgIFwiam9iR3JvdXBJZFwiOiBcIlwiLFxuICAgICAgXCJhcmd1bWVudHNcIjogW1xuICAgICAgICB7XG4gICAgICAgICAgXCJhcmd1bWVudE5hbWVcIjogXCJzdGFydF9kYXRlXCIsXG4gICAgICAgICAgXCJsYWJlbE5hbWVcIjogXCJFdmVudCBTdGFydCBEYXRlXCIsXG4gICAgICAgICAgXCJkYXRhdHlwZVwiOiBcInRpbWVzdGFtcFwiLFxuICAgICAgICAgIFwicnVudGltZVZhbHVlXCI6IFwic3RhdGljXCIsXG4gICAgICAgICAgXCJmdW5jdGlvblwiOiBcIkQxX1NUQVJUXCJcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIFwiYXJndW1lbnROYW1lXCI6IFwiZW5kX2RhdGVcIixcbiAgICAgICAgICBcImxhYmVsTmFtZVwiOiBcIkV2ZW50IEVuZCBEYXRlXCIsXG4gICAgICAgICAgXCJydW50aW1lVmFsdWVcIjogXCJzdGF0aWNcIixcbiAgICAgICAgICBcImRhdGF0eXBlXCI6IFwidGltZXN0YW1wXCIsXG4gICAgICAgICAgXCJmdW5jdGlvblwiOiBcIkQxX0VORFwiXG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9XG4gIH1cblxuICBtZXRyaWN0eXBlOiBhbnk7XG5cbiAgY29uc3RydWN0b3IocHVibGljIGNvbW1vblNlcnZpY2U6IENvbW1vblNlcnZpY2UsIHByaXZhdGUgdG9hc3RyOiBUb2FzdHJTZXJ2aWNlKSB7IH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcblxuICB9XG5cblxuICBnZXRNZXRyaWNUeXBlKGUpIHtcbiAgICBpZiAoZS5ldmVudCkge1xuICAgICAgdGhpcy5tZXRyaWN0eXBlID0gZS52YWx1ZTtcbiAgICB9XG4gIH1cblxuICBzdWJtaXR0T25saW5lTWV0cmljcyhkYXRhKSB7XG4gICAgZGF0YVtcIm1ldHJpY05hbWVcIl0gPSB0aGlzLm1ldHJpY01haW5PYmplY3RbJ21ldHJpY05hbWUnXTtcbiAgICBkYXRhW1wibWV0cmljSWRcIl0gPSB0aGlzLm1ldHJpY01haW5PYmplY3RbJ21ldHJpY0lkJ107XG4gICAgZGF0YVtcIm1ldHJpY0Rpc3BsYXlOYW1lXCJdID0gdGhpcy5tZXRyaWNNYWluT2JqZWN0WydtZXRyaWNEaXNwbGF5TmFtZSddO1xuICAgIGRhdGFbXCJtZXRyaWNUeXBlXCJdID0gdGhpcy5tZXRyaWNNYWluT2JqZWN0Lm1ldHJpY1R5cGU7XG4gICAgY29uc29sZS5sb2coZGF0YSk7XG4gIH1cbiAgc3VibWl0dE9mZmxpbmVNZXRyaWNzKGRhdGEpIHtcbiAgICBkYXRhW1wibWV0cmljTmFtZVwiXSA9IHRoaXMubWV0cmljTWFpbk9iamVjdFsnbWV0cmljTmFtZSddO1xuICAgIGRhdGFbXCJtZXRyaWNJZFwiXSA9IHRoaXMubWV0cmljTWFpbk9iamVjdFsnbWV0cmljSWQnXTtcbiAgICBkYXRhW1wibWV0cmljRGlzcGxheU5hbWVcIl0gPSB0aGlzLm1ldHJpY01haW5PYmplY3RbJ21ldHJpY0Rpc3BsYXlOYW1lJ107XG4gICAgZGF0YVtcIm1ldHJpY1R5cGVcIl0gPSB0aGlzLm1ldHJpY01haW5PYmplY3QubWV0cmljVHlwZTtcbiAgICBjb25zb2xlLmxvZyhkYXRhKTtcbiAgfVxuXG5cbn1cbiIsIjxhcHAtbG9hZGluZyAqbmdJZj1cImxvYWRpbmdNb2RhbFwiPjwvYXBwLWxvYWRpbmc+XG48ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBmbGV4LWF1dG8gdy1mdWxsXCI+XG4gICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2xcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1iZXR3ZWVuIGJvcmRlci1iICBkYXJrOmJnLXRyYW5zcGFyZW50XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCAgZmxleC1jb2wgbWwtMVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4ICBpdGVtcy1jZW50ZXIgZmxvYXQtc3RhcnRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIG92ZXJmbG93LWhpZGRlblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiaWNvbi1zaXplLTJcIiBbc3ZnSWNvbl09XCInaGVyb2ljb25zX3NvbGlkOnRlbXBsYXRlJ1wiPjwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8aDJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGV4dC0yeGwgbWQ6dGV4dC0yeGwgcHktMyBmb250LWV4dHJhYm9sZCBpdGVtcy1jZW50ZXIgbWwtMiB0cmFja2luZy10aWdodCBsZWFkaW5nLTUgdHJ1bmNhdGUgY2FwaXRhbGl6ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgQ3JlYXRlIE1ldHJpY3NcbiAgICAgICAgICAgICAgICAgICAgPC9oMj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1iZXR3ZWVuIGl0ZW1zLWNlbnRlciBib3JkZXItbC0yIHAtMCBtLTAgcmVsYXRpdmVcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXgtNFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1sZyBmb250LWJvbGQgbXgtNCBjb3JzdXItcG9pbnRlclwiIChjbGljayk9XCJvcGVuRGF0ZUZpbHRlcigpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7e3NlbGVjdGVkRGF0ZUFuZFRpbWV9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1jYWxlbmRhclwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj4gLS0+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiZmxleFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidy1mdWxsIGJvcmRlci1yXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS0yXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cgbWItMlwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXgtMiB3LTEvM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgbWItMlwiPk1ldHJpYyBOYW1lPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZHgtdGV4dC1ib3ggWyhuZ01vZGVsKV09XCJtZXRyaWNNYWluT2JqZWN0Lm1ldHJpY05hbWVcIj48L2R4LXRleHQtYm94PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm14LTIgdy0xLzNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTJcIj5NZXRyaWMgRGlzcGxheSBOYW1lPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZHgtdGV4dC1ib3ggWyhuZ01vZGVsKV09XCJtZXRyaWNNYWluT2JqZWN0Lm1ldHJpY0Rpc3BsYXlOYW1lXCI+PC9keC10ZXh0LWJveD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteC0yIHctMS8zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0yXCI+TWV0cmljIElkPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZHgtdGV4dC1ib3ggWyhuZ01vZGVsKV09XCJtZXRyaWNNYWluT2JqZWN0Lm1ldHJpY0lkXCI+PC9keC10ZXh0LWJveD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteC0yIHctMS8zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0yXCI+TWV0cmljIFR5cGU8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkeC1zZWxlY3QtYm94IFtpdGVtc109XCJbJ29ubGluZScsJ29mbGluZSddXCIgWyhuZ01vZGVsKV09XCJtZXRyaWNNYWluT2JqZWN0Lm1ldHJpY1R5cGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvblZhbHVlQ2hhbmdlZCk9XCJnZXRNZXRyaWNUeXBlKCRldmVudClcIj48L2R4LXNlbGVjdC1ib3g+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJtZXRyaWNNYWluT2JqZWN0Lm1ldHJpY1R5cGUgPT0gJ29ubGluZSdcIj5cbiAgICAgICAgICAgICAgICAgICAgPGFwcC1vbmxpbmUtbWV0cmljcyBbb25saW5lTWV0cmljRGF0YV09XCJtZXRyaWNPbmxpbmVPYmplY3RcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGdldE1ldFJpY09ubGluZURhdGFTZXQpPVwic3VibWl0dE9ubGluZU1ldHJpY3MoJGV2ZW50KVwiPjwvYXBwLW9ubGluZS1tZXRyaWNzPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJtZXRyaWNNYWluT2JqZWN0Lm1ldHJpY1R5cGUgPT0gJ29mbGluZSdcIj5cbiAgICAgICAgICAgICAgICAgICAgPGFwcC1vZmxpbmUtbWV0cmljcyBbb25mbGluZU1ldHJpY0RhdGFdPVwibWV0cmljT2ZsaW5lT2JqZWN0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChnZXRNZXRSaWNPZmxpbmVEYXRhU2V0KT1cInN1Ym1pdHRPZmZsaW5lTWV0cmljcygkZXZlbnQpXCI+PC9hcHAtb2ZsaW5lLW1ldHJpY3M+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cblxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+Il19
|
|
172
|
+
}], ctorParameters: function () { return [{ type: i1.CommonService }, { type: i2.ToastrService }, { type: i3.Router }, { type: i4.ApplicationContentService }]; } });
|
|
173
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLW1ldHJpY3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2FtbWEtYXBwLWNvbnRyb2xsZXIvc3JjL2xpYi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL2FwcGxpY2F0aW9uLW1ldHJpYy1jb25maWcvY3JlYXRlLW1ldHJpY3MvY3JlYXRlLW1ldHJpY3MuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2FtbWEtYXBwLWNvbnRyb2xsZXIvc3JjL2xpYi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL2FwcGxpY2F0aW9uLW1ldHJpYy1jb25maWcvY3JlYXRlLW1ldHJpY3MvY3JlYXRlLW1ldHJpY3MuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLFNBQVMsRUFBdUMsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7Ozs7Ozs7O0FBVy9FLE1BQU0sT0FBTyxzQkFBc0I7SUEwSGpDLFlBQW1CLGFBQTRCLEVBQ3JDLE1BQXFCLEVBQ3JCLE1BQWMsRUFDZCxPQUFrQztRQUh6QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUNyQyxXQUFNLEdBQU4sTUFBTSxDQUFlO1FBQ3JCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxZQUFPLEdBQVAsT0FBTyxDQUEyQjtRQTFINUMsd0JBQW1CLEdBQVEsRUFBRSxDQUFDO1FBQzlCLGdCQUFXLEdBQVksS0FBSyxDQUFDO1FBQzdCLGdCQUFXLEdBQVksS0FBSyxDQUFDO1FBQzdCLHdCQUFtQixHQUFRLEVBQUUsQ0FBQztRQUM5QixpQkFBWSxHQUFRLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQTtRQUNyRixpQkFBWSxHQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFL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Q0FBQztRQUNsQixJQUFJLENBQUMsT0FBTyxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUNuRCxJQUFJLEVBQUUsQ0FBQyxJQUFTLEVBQUUsRUFBRTtnQkFDbEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsc0NBQXNDLENBQUMsQ0FBQTtnQkFDM0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDLENBQUE7WUFDL0QsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEdBQVEsRUFBRSxFQUFFO2dCQUNyQixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQywyREFBMkQsRUFBRSx1QkFBdUIsQ0FBQyxDQUFBO1lBQ3pHLENBQUM7U0FDRixDQUFDLENBQUE7UUFDRixPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BCLENBQUM7O21IQXRLVSxzQkFBc0I7dUdBQXRCLHNCQUFzQiwwRENibkMsMnJHQWdFTTsyRkRuRE8sc0JBQXNCO2tCQUxsQyxTQUFTOytCQUNFLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbIlxuXG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUb2FzdHJTZXJ2aWNlIH0gZnJvbSAnbmd4LXRvYXN0cic7XG5pbXBvcnQgeyBDb21tb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29tbW9uJztcbmltcG9ydCB7IEFwcGxpY2F0aW9uQ29udGVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi9hcHBsaWNhdGlvbi1jb250ZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWNyZWF0ZS1tZXRyaWNzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NyZWF0ZS1tZXRyaWNzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY3JlYXRlLW1ldHJpY3MuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBDcmVhdGVNZXRyaWNzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgbG9hZGluZ01vZGFsOiBib29sZWFuO1xuICAvLyBASW5wdXQoKSBxdWVyeUJ1bGRlckRhdGFzZXQ6IGFueTtcbiAgcmVxRmllbGRzRGF0YVNvdXJjZTogYW55ID0gW107XG4gIGlzcmVxRmllbGRzOiBib29sZWFuID0gZmFsc2U7XG4gIGlzY2RyUGFyYW1zOiBib29sZWFuID0gZmFsc2U7XG4gIGNkckZpZWxkc0RhdGFTb3VyY2U6IGFueSA9IFtdO1xuICBrcGlfZnVuY3Rpb246IGFueSA9IFtcInN1bVwiLCBcImNvdW50XCIsIFwiYXZnXCIsIFwibWF4XCIsIFwibWluXCIsIFwic3RkZGV2XCIsIFwiY291bnRfZGlzdGluY3RcIl1cbiAga3BpX29wZXJhdG9yOiBhbnkgPSBbXCJlcVwiLCBcImd0ZVwiLCBcImx0ZVwiLCBcIm5lXCIsIFwiaW5cIiwgXCJub3RJblwiXVxuICBrcGlfZW5yaWNobWVudF9uYW1lOiBhbnkgPSBbXTtcbiAgcmVxU2hvcnREYXRhU291cmNlOiBhbnkgPSBbXTtcbiAgZmlsdGVyTWFwaW5nRGF0YXNvdXJjZTogYW55ID0gW107XG4gIHF1ZXJ5X2RhdGE6IGFueTtcbiAgaXNNb2RlbFZpc2libGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaXNTcWxDb3BpZWRUZXh0OiBib29sZWFuID0gZmFsc2U7XG4gIHF1ZXJ5QnVsZGVyRGF0YXNldDogYW55O1xuICBpc1JlY29uQ29sdW1lOiBib29sZWFuID0gZmFsc2U7XG4gIC8vIEBPdXRwdXQoKSBwdWJsaWMgZ2V0UXVlcnlCdWxiZGVyRGF0YVNldDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgcmVjb25Db2x1bWVEYXRhc291cmNlID0gW107XG5cbiAgc2VsZWN0ZWREYXRhU291cmNlOiBhbnk7XG4gIGlzUXVlcnlUeXBlU2VsZWN0OiBib29sZWFuID0gZmFsc2U7XG5cbiAgbWVzdXJlc0FuZERpbWVudGlvbnNDb2x1bW5zID0gW107XG4gIG1ldHJpY09ubGluZU9iamVjdCA9IHtcbiAgICBcIm1ldHJpY05hbWVcIjogXCJtc2Nfdm9pY2VfZGF5X21ldHJpY1wiLFxuICAgIFwibWV0cmljSWRcIjogXCJcIixcbiAgICBcIm1ldHJpY0Rpc3BsYXlOYW1lXCI6IFwiTWV0cmljIFZvaWNlIERheSBNZXRyaWNcIixcbiAgICBcIm1ldHJpY1R5cGVcIjogXCJvbmxpbmVcIixcbiAgICBcInNvdXJjZVwiOiB7XG4gICAgICBcImRhdGFzb3VyY2VcIjogXCJodWF3ZWktbXNjXCIsXG4gICAgICBcImV2ZW50TmFtZVwiOiBcImh1YXdlaV9tc2NfZmN0XCIsXG4gICAgICBcImZpbHRlcnNcIjogW1xuICAgICAgICB7IFwiZmllbGROYW1lXCI6IFwiZXZlbnRfdHlwZV9rZXlcIiwgXCJvcGVyYXRpb25cIjogXCJzdHJpbmdcIiwgXCJ0aHJlc2hvbGRcIjogXCIxLDUsNlwiLCBcImNvbXBhcmF0b3JcIjogXCJpblwiIH1cbiAgICAgIF0sXG4gICAgICBcImV4Y2x1c2lvbnNcIjogW1xuICAgICAgICB7IFwiZmllbGROYW1lXCI6IFwiXCIsIFwib3BlcmF0aW9uXCI6IFwiXCIsIFwidGhyZXNob2xkXCI6IFwiXCIsIFwiY29tcGFyYXRvclwiOiBcIlwiIH1cbiAgICAgIF0sXG4gICAgICBcImRpbWVuc2lvbnNcIjogW1xuICAgICAgICB7IFwiZmllbGROYW1lXCI6IFwieGRyX2RhdGVcIiwgXCJhbGlhc05hbWVcIjogXCJyZWNvcmRfZGF0ZVwiLCBcImRhdGFUeXBlXCI6IFwic3RyaW5nXCIsIFwiZm9ybWF0XCI6IFwieXl5eU1NZGRcIiB9LFxuICAgICAgICB7IFwiZmllbGROYW1lXCI6IFwiZXZlbnRfdHlwZV9rZXlcIiwgXCJhbGlhc05hbWVcIjogXCJldmVudF90eXBlXCIsIFwiZGF0YVR5cGVcIjogXCJzdHJpbmdcIiB9LFxuICAgICAgICB7IFwiZmllbGROYW1lXCI6IFwic3J2X3R5cGVfa2V5XCIsIFwiYWxpYXNOYW1lXCI6IFwic3J2X3R5cGVcIiwgXCJkYXRhVHlwZVwiOiBcInN0cmluZ1wiIH0sXG4gICAgICAgIHsgXCJmaWVsZE5hbWVcIjogXCJvdGhlcl9ud19pbmRfa2V5XCIsIFwiYWxpYXNOYW1lXCI6IFwibndfY2FsbF90eXBlXCIsIFwiZGF0YVR5cGVcIjogXCJzdHJpbmdcIiB9LFxuICAgICAgICB7IFwiZmllbGROYW1lXCI6IFwieGRyX2RhdGVcIiwgXCJhbGlhc05hbWVcIjogXCJob3VyXCIsIFwiZGF0YVR5cGVcIjogXCJpbnRcIiwgXCJtZXRob2RcIjogXCJnZXRIb3VyXCIgfSxcbiAgICAgICAgeyBcImZpZWxkTmFtZVwiOiBcIm90aGVyX21zaXNkbl9pc29fY29kZVwiLCBcImFsaWFzTmFtZVwiOiBcImNvdW50cnlcIiwgXCJkYXRhVHlwZVwiOiBcInN0cmluZ1wiIH0sXG4gICAgICAgIHsgXCJmaWVsZE5hbWVcIjogXCJvdGhlcl9vcGVyXCIsIFwiYWxpYXNOYW1lXCI6IFwib3BlcmF0b3JcIiwgXCJkYXRhVHlwZVwiOiBcInN0cmluZ1wiIH0sXG4gICAgICAgIHsgXCJmaWVsZE5hbWVcIjogXCJldmVudF9kaXJlY3Rpb25fa2V5XCIsIFwiYWxpYXNOYW1lXCI6IFwiZGlyZWN0aW9uXCIsIFwiZGF0YVR5cGVcIjogXCJzdHJpbmdcIiB9XG4gICAgICBdLFxuICAgICAgXCJtZWFzdXJlc1wiOiBbXG4gICAgICAgIHsgXCJmaWVsZE5hbWVcIjogXCJvcmlnaW5hbF9kdXJcIiwgXCJhbGlhc05hbWVcIjogXCJtc2NfbW91XCIsIFwiZGF0YVR5cGVcIjogXCJkb3VibGVcIiwgXCJ0eXBlXCI6IFwic3VtXCIgfSxcbiAgICAgICAgeyBcImFsaWFzTmFtZVwiOiBcIm1zY19jb3VudFwiLCBcInR5cGVcIjogXCJjb3VudFwiIH1cbiAgICAgIF1cbiAgICB9LFxuICAgIFwidGFyZ2V0XCI6IHtcbiAgICAgIFwiZGF0YWJhc2VOYW1lXCI6IFwicmFmbWRiXCIsXG4gICAgICBcImRiQ29uZmlnXCI6IFwibW9uZ29cIixcbiAgICAgIFwidGFibGVOYW1lXCI6IFwibXNjX2RhaWx5X21ldHJpY1wiLFxuICAgICAgXCJwYXJ0aXRpb25Db2x1bW5cIjogXCJcIixcbiAgICAgIFwiZGltZW5zaW9uQ29sdW1uc1wiOiBbXCJyZWNvcmRfZGF0ZVwiLCBcImV2ZW50X3R5cGVcIiwgXCJzcnZfdHlwZVwiLCBcImRpcmVjdGlvblwiLCBcIm53X2NhbGxfdHlwZVwiLCBcImhvdXJcIixcbiAgICAgICAgXCJjb3VudHJ5XCIsIFwib3BlcmF0b3JcIlxuICAgICAgXSxcbiAgICAgIFwibWVhc3VyZUNvbHVtbnNcIjogW1xuICAgICAgICBcIm1zY19tb3VcIiwgXCJtc2NfY291bnRcIlxuICAgICAgXSxcbiAgICAgIFwiY3JlYXRlVGFibGVcIjogZmFsc2UsXG4gICAgICBcIndyaXRlRGlzcG9zaXRpb25cIjogXCJhcHBlbmRcIlxuICAgIH1cbiAgfVxuICBtZXRyaWNNYWluT2JqZWN0OiBhbnkgPSB7XG4gICAgXCJtZXRyaWNOYW1lXCI6IFwibXNjX3ZvaWNlX2RheV9tZXRyaWNcIixcbiAgICBcIm1ldHJpY0lkXCI6IFwiXCIsXG4gICAgXCJtZXRyaWNEaXNwbGF5TmFtZVwiOiBcIk1ldHJpYyBWb2ljZSBEYXkgTWV0cmljXCIsXG4gICAgXCJtZXRyaWNUeXBlXCI6IFwib25saW5lXCIsXG4gIH07XG5cbiAgbWV0cmljT2ZsaW5lT2JqZWN0ID0ge1xuICAgIFwibWV0cmljTmFtZVwiOiBcIlwiLFxuICAgIFwibWV0cmljSWRcIjogXCJcIixcbiAgICBcIm1ldHJpY0Rpc3BsYXlOYW1lXCI6IFwiXCIsXG4gICAgXCJtZXRyaWNUeXBlXCI6IFwib2ZmbGluZVwiLFxuICAgIFwicnVubmVyXCI6XCJcIixcbiAgICBcInNvdXJjZVwiOiB7XG4gICAgICBcImRhdGFiYXNlTmFtZVwiOiBcInJhZm1zXCIsXG4gICAgICBcImRiQ29uZmlnXCI6IFwiYmlncXVlcnlcIixcbiAgICAgIFwicXVlcnlUZW1wbGF0ZVwiOiBcIlwiLFxuICAgICAgXCJxdWVyeVRlbXBsYXRlRmlsZVwiOiBcIlwiXG4gICAgfSxcbiAgICBcInRhcmdldFwiOiB7XG4gICAgICBcImRhdGFiYXNlTmFtZVwiOiBcInJhZm1kYlwiLFxuICAgICAgXCJkYkNvbmZpZ1wiOiBcIm15c3FsXCIsXG4gICAgICBcInRhYmxlTmFtZVwiOiBcIlwiLFxuICAgICAgXCJkaW1lbnNpb25Db2x1bW5zXCI6IFtdLFxuICAgICAgXCJtZWFzdXJlQ29sdW1uc1wiOiBbXSxcbiAgICAgIFwicGFydGl0aW9uQ29sdW1uXCI6IFwiXCIsXG4gICAgICBcImNyZWF0ZVRhYmxlXCI6IHRydWUsXG4gICAgICBcIndyaXRlRGlzcG9zaXRpb25cIjogXCJhcHBlbmRcIlxuICAgIH0sXG4gICAgXCJleGVjdXRpb25cIjoge1xuICAgICAgXCJ0eXBlXCI6IFwic2NoZWR1bGVkXCIsXG4gICAgICBcImpvYkdyb3VwSWRcIjogXCJcIixcbiAgICAgIFwiYXJndW1lbnRzXCI6IFtcbiAgICAgICAge1xuICAgICAgICAgIFwiYXJndW1lbnROYW1lXCI6IFwic3RhcnRfZGF0ZVwiLFxuICAgICAgICAgIFwibGFiZWxOYW1lXCI6IFwiRXZlbnQgU3RhcnQgRGF0ZVwiLFxuICAgICAgICAgIFwiZGF0YXR5cGVcIjogXCJ0aW1lc3RhbXBcIixcbiAgICAgICAgICBcInJ1bnRpbWVWYWx1ZVwiOiBcInN0YXRpY1wiLFxuICAgICAgICAgIFwiZnVuY3Rpb25cIjogXCJEMV9TVEFSVFwiXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBcImFyZ3VtZW50TmFtZVwiOiBcImVuZF9kYXRlXCIsXG4gICAgICAgICAgXCJsYWJlbE5hbWVcIjogXCJFdmVudCBFbmQgRGF0ZVwiLFxuICAgICAgICAgIFwicnVudGltZVZhbHVlXCI6IFwic3RhdGljXCIsXG4gICAgICAgICAgXCJkYXRhdHlwZVwiOiBcInRpbWVzdGFtcFwiLFxuICAgICAgICAgIFwiZnVuY3Rpb25cIjogXCJEMV9FTkRcIlxuICAgICAgICB9XG4gICAgICBdXG4gICAgfVxuICB9XG5cbiAgbWV0cmljdHlwZTogYW55O1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBjb21tb25TZXJ2aWNlOiBDb21tb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgdG9hc3RyOiBUb2FzdHJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBzZXJ2aWNlOiBBcHBsaWNhdGlvbkNvbnRlbnRTZXJ2aWNlKSB7IH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcblxuICB9XG5cblxuICBnZXRNZXRyaWNUeXBlKGUpIHtcbiAgICBpZiAoZS5ldmVudCkge1xuICAgICAgdGhpcy5tZXRyaWN0eXBlID0gZS52YWx1ZTtcbiAgICB9XG4gIH1cblxuICBzdWJtaXR0T25saW5lTWV0cmljcyhkYXRhKSB7XG4gICAgZGF0YVtcImFwcE5hbWVcIl0gPSBcInByb250b1wiO1xuICAgIGRhdGFbXCJtZXRyaWNJZFwiXSA9IFwiXCI7XG4gICAgZGF0YVtcImFjdGl2YXRlZFwiXSA9IGZhbHNlO1xuICAgIGNvbnNvbGUubG9nKGRhdGEpO1xuICAgIHRoaXMuc2VydmljZS5zYXZlT25saW5lTWV0cmljQ29uZmlnKGRhdGEpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAoZGF0YTogYW55KSA9PiB7XG4gICAgICAgIHRoaXMudG9hc3RyLnN1Y2Nlc3MoXCJPbmxpbmUgTWV0cmljcyBVcGRhdGVzIFN1Y2Nlc3NmdWxseVwiKVxuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9hcHBzL2NvbnRyb2xQYW5lbC9tZXRyaWNDb250cm9sbGVyJ10pXG4gICAgICB9LCBlcnJvcjogKGVycjogYW55KSA9PiB7XG4gICAgICAgIHRoaXMudG9hc3RyLmVycm9yKCdVbmV4cGVjdGVkIFNlcnZlciBFeGNlcHRpb24uIFBsZWFzZSBjb250YWN0IFN5c3RlbSBBZG1pbi4nLCAnQ3JlYXRlIE1ldHJpY3MgQ29uZmlnJylcbiAgICAgIH1cbiAgICB9KVxuICB9XG4gIHN1Ym1pdHRPZmZsaW5lTWV0cmljcyhkYXRhKSB7XG4gICAgZGF0YVtcImFwcE5hbWVcIl0gPSBcInByb250b1wiO1xuICAgIGRhdGFbXCJtZXRyaWNJZFwiXSA9IFwiXCI7XG4gICAgZGF0YVtcImFjdGl2YXRlZFwiXSA9IGZhbHNlO1xuICAgIGNvbnNvbGUubG9nKGRhdGEpO1xuICAgIHRoaXMuc2VydmljZS5lZGl0T2ZmbGluZU1ldHJpY0NvbmZpZyhkYXRhKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKGRhdGE6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLnRvYXN0ci5zdWNjZXNzKFwiT2ZmbGluZSBNZXRyaWNzIFVwZGF0ZXMgU3VjY2Vzc2Z1bGx5XCIpXG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL2FwcHMvY29udHJvbFBhbmVsL21ldHJpY0NvbnRyb2xsZXInXSlcbiAgICAgIH0sIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IoJ1VuZXhwZWN0ZWQgU2VydmVyIEV4Y2VwdGlvbi4gUGxlYXNlIGNvbnRhY3QgU3lzdGVtIEFkbWluLicsICdDcmVhdGUgTWV0cmljcyBDb25maWcnKVxuICAgICAgfVxuICAgIH0pXG4gICAgY29uc29sZS5sb2coZGF0YSk7XG4gIH1cblxuXG59XG4iLCI8YXBwLWxvYWRpbmcgKm5nSWY9XCJsb2FkaW5nTW9kYWxcIj48L2FwcC1sb2FkaW5nPlxuPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgZmxleC1hdXRvIHctZnVsbFwiPlxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktYmV0d2VlbiBib3JkZXItYiAgZGFyazpiZy10cmFuc3BhcmVudFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggIGZsZXgtY29sIG1sLTFcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCAgaXRlbXMtY2VudGVyIGZsb2F0LXN0YXJ0XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBvdmVyZmxvdy1oaWRkZW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImljb24tc2l6ZS0yXCIgW3N2Z0ljb25dPVwiJ2hlcm9pY29uc19zb2xpZDp0ZW1wbGF0ZSdcIj48L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGgyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtMnhsIG1kOnRleHQtMnhsIHB5LTMgZm9udC1leHRyYWJvbGQgaXRlbXMtY2VudGVyIG1sLTIgdHJhY2tpbmctdGlnaHQgbGVhZGluZy01IHRydW5jYXRlIGNhcGl0YWxpemVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIENyZWF0ZSBNZXRyaWNzXG4gICAgICAgICAgICAgICAgICAgIDwvaDI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlwiPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktYmV0d2VlbiBpdGVtcy1jZW50ZXIgYm9yZGVyLWwtMiBwLTAgbS0wIHJlbGF0aXZlXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm14LTRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbGcgZm9udC1ib2xkIG14LTQgY29yc3VyLXBvaW50ZXJcIiAoY2xpY2spPVwib3BlbkRhdGVGaWx0ZXIoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3tzZWxlY3RlZERhdGVBbmRUaW1lfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtY2FsZW5kYXJcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+IC0tPlxuICAgICAgICA8L2Rpdj5cblxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImZsZXhcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInctZnVsbCBib3JkZXItclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm0tMlwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm14LTIgdy0xLzNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTJcIj5NZXRyaWMgTmFtZTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXRleHQtYm94IFsobmdNb2RlbCldPVwibWV0cmljTWFpbk9iamVjdC5tZXRyaWNOYW1lXCI+PC9keC10ZXh0LWJveD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteC0yIHctMS8zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0yXCI+TWV0cmljIERpc3BsYXkgTmFtZTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXRleHQtYm94IFsobmdNb2RlbCldPVwibWV0cmljTWFpbk9iamVjdC5tZXRyaWNEaXNwbGF5TmFtZVwiPjwvZHgtdGV4dC1ib3g+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXgtMiB3LTEvM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgbWItMlwiPk1ldHJpYyBJZDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXRleHQtYm94IFsobmdNb2RlbCldPVwibWV0cmljTWFpbk9iamVjdC5tZXRyaWNJZFwiPjwvZHgtdGV4dC1ib3g+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXgtMiB3LTEvM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgbWItMlwiPk1ldHJpYyBUeXBlPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZHgtc2VsZWN0LWJveCBbaXRlbXNdPVwiWydvbmxpbmUnLCdvZmxpbmUnXVwiIFsobmdNb2RlbCldPVwibWV0cmljTWFpbk9iamVjdC5tZXRyaWNUeXBlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25WYWx1ZUNoYW5nZWQpPVwiZ2V0TWV0cmljVHlwZSgkZXZlbnQpXCI+PC9keC1zZWxlY3QtYm94PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibWV0cmljTWFpbk9iamVjdC5tZXRyaWNUeXBlID09ICdvbmxpbmUnXCI+XG4gICAgICAgICAgICAgICAgICAgIDxhcHAtb25saW5lLW1ldHJpY3MgW29ubGluZU1ldHJpY0RhdGFdPVwibWV0cmljT25saW5lT2JqZWN0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChnZXRNZXRSaWNPbmxpbmVEYXRhU2V0KT1cInN1Ym1pdHRPbmxpbmVNZXRyaWNzKCRldmVudClcIj48L2FwcC1vbmxpbmUtbWV0cmljcz5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibWV0cmljTWFpbk9iamVjdC5tZXRyaWNUeXBlID09ICdvZmxpbmUnXCI+XG4gICAgICAgICAgICAgICAgICAgIDxhcHAtb2ZsaW5lLW1ldHJpY3MgW29uZmxpbmVNZXRyaWNEYXRhXT1cIm1ldHJpY09mbGluZU9iamVjdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoZ2V0TWV0UmljT2ZsaW5lRGF0YVNldCk9XCJzdWJtaXR0T2ZmbGluZU1ldHJpY3MoJGV2ZW50KVwiPjwvYXBwLW9mbGluZS1tZXRyaWNzPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZGl2PiJdfQ==
|