raise-common-lib 0.0.205 → 0.0.207
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/bundles/raise-common-lib.umd.js +28147 -1277
- package/bundles/raise-common-lib.umd.js.map +1 -1
- package/bundles/raise-common-lib.umd.min.js +1 -1
- package/bundles/raise-common-lib.umd.min.js.map +1 -1
- package/esm2015/lib/dashboard/api.js +46 -0
- package/esm2015/lib/dashboard/bar-charts/bar-charts.component.js +638 -0
- package/esm2015/lib/dashboard/bar-charts/utils.js +40 -0
- package/esm2015/lib/dashboard/dashboard-properties/data-mart-new/data-mart-new.component.js +700 -0
- package/esm2015/lib/dashboard/dashboard.service.js +650 -0
- package/esm2015/lib/dashboard/dashboardPorlets.service.js +3107 -0
- package/esm2015/lib/dashboard/dialog-group/download/index.component.js +358 -0
- package/esm2015/lib/dashboard/dialog-group/empty-icon-prompt/empty-icon-prompt.component.js +67 -0
- package/esm2015/lib/dashboard/gadget-group/gadget-pivot/gadget-pivot.component.js +4443 -0
- package/esm2015/lib/dashboard/gadget-group/gadget-pivot-chart/gadget-pivot.component.js +4293 -0
- package/esm2015/lib/dashboard/gadget-group/gadget-table/gadget-table.component.js +1553 -0
- package/esm2015/lib/dashboard/gadget-group/gadget-transpose/gadget-transpose.component.js +857 -0
- package/esm2015/lib/dashboard/pane-group-new.component.js +2930 -0
- package/esm2015/lib/dashboard/sidebar-iconlist/field-filter/field-filter.component.js +1016 -0
- package/esm2015/lib/dashboard/sidebar-iconlist/field-format/field-format.component.js +1003 -0
- package/esm2015/lib/dashboard/sidebar-iconlist/portlet-type-new/portlet-type-new.component.js +319 -0
- package/esm2015/lib/dashboard/sidebar-iconlist/sidebar-iconlist-new.component.js +1638 -0
- package/esm2015/lib/layout/rs-stepper/index.component.js +175 -9
- package/esm2015/lib/raise-common-lib.module.js +56 -3
- package/esm2015/lib/service/InjectionToken.js +13 -0
- package/esm2015/public-api.js +3 -1
- package/esm2015/raise-common-lib.js +22 -6
- package/esm5/lib/dashboard/api.js +48 -0
- package/esm5/lib/dashboard/bar-charts/bar-charts.component.js +733 -0
- package/esm5/lib/dashboard/bar-charts/utils.js +45 -0
- package/esm5/lib/dashboard/dashboard-properties/data-mart-new/data-mart-new.component.js +772 -0
- package/esm5/lib/dashboard/dashboard.service.js +846 -0
- package/esm5/lib/dashboard/dashboardPorlets.service.js +3536 -0
- package/esm5/lib/dashboard/dialog-group/download/index.component.js +441 -0
- package/esm5/lib/dashboard/dialog-group/empty-icon-prompt/empty-icon-prompt.component.js +78 -0
- package/esm5/lib/dashboard/gadget-group/gadget-pivot/gadget-pivot.component.js +4940 -0
- package/esm5/lib/dashboard/gadget-group/gadget-pivot-chart/gadget-pivot.component.js +4751 -0
- package/esm5/lib/dashboard/gadget-group/gadget-table/gadget-table.component.js +1683 -0
- package/esm5/lib/dashboard/gadget-group/gadget-transpose/gadget-transpose.component.js +931 -0
- package/esm5/lib/dashboard/pane-group-new.component.js +3307 -0
- package/esm5/lib/dashboard/sidebar-iconlist/field-filter/field-filter.component.js +1138 -0
- package/esm5/lib/dashboard/sidebar-iconlist/field-format/field-format.component.js +1184 -0
- package/esm5/lib/dashboard/sidebar-iconlist/portlet-type-new/portlet-type-new.component.js +354 -0
- package/esm5/lib/dashboard/sidebar-iconlist/sidebar-iconlist-new.component.js +1792 -0
- package/esm5/lib/layout/rs-stepper/index.component.js +206 -12
- package/esm5/lib/raise-common-lib.module.js +56 -3
- package/esm5/lib/service/InjectionToken.js +13 -0
- package/esm5/public-api.js +3 -1
- package/esm5/raise-common-lib.js +22 -6
- package/fesm2015/raise-common-lib.js +24917 -1169
- package/fesm2015/raise-common-lib.js.map +1 -1
- package/fesm5/raise-common-lib.js +27944 -1267
- package/fesm5/raise-common-lib.js.map +1 -1
- package/lib/dashboard/api.d.ts +21 -0
- package/lib/dashboard/bar-charts/bar-charts.component.d.ts +60 -0
- package/lib/dashboard/bar-charts/utils.d.ts +1 -0
- package/lib/dashboard/dashboard-properties/data-mart-new/data-mart-new.component.d.ts +49 -0
- package/lib/dashboard/dashboard.service.d.ts +149 -0
- package/lib/dashboard/dashboardPorlets.service.d.ts +211 -0
- package/lib/dashboard/dialog-group/download/index.component.d.ts +33 -0
- package/lib/dashboard/dialog-group/empty-icon-prompt/empty-icon-prompt.component.d.ts +12 -0
- package/lib/dashboard/gadget-group/gadget-pivot/gadget-pivot.component.d.ts +125 -0
- package/lib/dashboard/gadget-group/gadget-pivot-chart/gadget-pivot.component.d.ts +128 -0
- package/lib/dashboard/gadget-group/gadget-table/gadget-table.component.d.ts +74 -0
- package/lib/dashboard/gadget-group/gadget-transpose/gadget-transpose.component.d.ts +44 -0
- package/lib/dashboard/pane-group-new.component.d.ts +165 -0
- package/lib/dashboard/sidebar-iconlist/field-filter/field-filter.component.d.ts +53 -0
- package/lib/dashboard/sidebar-iconlist/field-format/field-format.component.d.ts +59 -0
- package/lib/dashboard/sidebar-iconlist/portlet-type-new/portlet-type-new.component.d.ts +27 -0
- package/lib/dashboard/sidebar-iconlist/sidebar-iconlist-new.component.d.ts +147 -0
- package/lib/layout/rs-stepper/index.component.d.ts +17 -4
- package/lib/service/InjectionToken.d.ts +4 -0
- package/package.json +1 -1
- package/public-api.d.ts +2 -0
- package/raise-common-lib.d.ts +20 -4
- package/raise-common-lib.metadata.json +1 -1
- package/src/assets/img/dashboard_icon/AddPerson.svg +4 -0
- package/src/assets/img/dashboard_icon/Angle-double-left.svg +12 -0
- package/src/assets/img/dashboard_icon/Angle-double-right.svg +12 -0
- package/src/assets/img/dashboard_icon/Arrow_collapse.svg +3 -0
- package/src/assets/img/dashboard_icon/Arrow_expand.svg +3 -0
- package/src/assets/img/dashboard_icon/Close.svg +4 -0
- package/src/assets/img/dashboard_icon/Edit_label.svg +3 -0
- package/src/assets/img/dashboard_icon/RemoveMini.svg +3 -0
- package/src/assets/img/dashboard_icon/ShareTo.svg +3 -0
- package/src/assets/img/dashboard_icon/add-dashboard.svg +4 -0
- package/src/assets/img/dashboard_icon/add-tab.svg +4 -0
- package/src/assets/img/dashboard_icon/angle-left.svg +12 -0
- package/src/assets/img/dashboard_icon/angle-right.svg +12 -0
- package/src/assets/img/dashboard_icon/area-white.svg +3 -0
- package/src/assets/img/dashboard_icon/area.svg +3 -0
- package/src/assets/img/dashboard_icon/bar-white.svg +14 -0
- package/src/assets/img/dashboard_icon/bar.svg +14 -0
- package/src/assets/img/dashboard_icon/basic-icon-filter.svg +14 -0
- package/src/assets/img/dashboard_icon/chart-combined-active.svg +7 -0
- package/src/assets/img/dashboard_icon/chart-combined.svg +7 -0
- package/src/assets/img/dashboard_icon/column-white.svg +14 -0
- package/src/assets/img/dashboard_icon/column.svg +26 -0
- package/src/assets/img/dashboard_icon/customize.png +0 -0
- package/src/assets/img/dashboard_icon/dashboard-description.svg +18 -0
- package/src/assets/img/dashboard_icon/dashboard-download.svg +18 -0
- package/src/assets/img/dashboard_icon/dashboard-drag.svg +28 -0
- package/src/assets/img/dashboard_icon/dashboard-duplicate.svg +24 -0
- package/src/assets/img/dashboard_icon/dashboard-icon.svg +12 -0
- package/src/assets/img/dashboard_icon/dashboard-properties.svg +18 -0
- package/src/assets/img/dashboard_icon/dashboard-rename.svg +18 -0
- package/src/assets/img/dashboard_icon/dashboard-share.svg +20 -0
- package/src/assets/img/dashboard_icon/dashboard-tab-delete.svg +4 -0
- package/src/assets/img/dashboard_icon/dashboard_Share.svg +3 -0
- package/src/assets/img/dashboard_icon/dashboard_ToolsHide.svg +4 -0
- package/src/assets/img/dashboard_icon/datamart_.svg +5 -0
- package/src/assets/img/dashboard_icon/datamart_Admin.svg +3 -0
- package/src/assets/img/dashboard_icon/datamart_Asset Portfolio.svg +4 -0
- package/src/assets/img/dashboard_icon/datamart_Bank.svg +3 -0
- package/src/assets/img/dashboard_icon/datamart_CRM.svg +6 -0
- package/src/assets/img/dashboard_icon/datamart_Company.svg +6 -0
- package/src/assets/img/dashboard_icon/datamart_Compliance.svg +3 -0
- package/src/assets/img/dashboard_icon/datamart_Contact.svg +3 -0
- package/src/assets/img/dashboard_icon/datamart_DASHBOARD.svg +4 -0
- package/src/assets/img/dashboard_icon/datamart_DOCX.svg +4 -0
- package/src/assets/img/dashboard_icon/datamart_ESG.svg +4 -0
- package/src/assets/img/dashboard_icon/datamart_Financials - Company.svg +3 -0
- package/src/assets/img/dashboard_icon/datamart_Fund.svg +4 -0
- package/src/assets/img/dashboard_icon/datamart_FundFinancial.svg +4 -0
- package/src/assets/img/dashboard_icon/datamart_HTML.svg +4 -0
- package/src/assets/img/dashboard_icon/datamart_Logs.svg +8 -0
- package/src/assets/img/dashboard_icon/datamart_PDF.svg +5 -0
- package/src/assets/img/dashboard_icon/datamart_Project.svg +3 -0
- package/src/assets/img/dashboard_icon/datamart_Templates.svg +7 -0
- package/src/assets/img/dashboard_icon/datamart_Track Change.svg +3 -0
- package/src/assets/img/dashboard_icon/datamart_VirtualGroup.svg +5 -0
- package/src/assets/img/dashboard_icon/datamart_XLS.svg +4 -0
- package/src/assets/img/dashboard_icon/desktop_selected.svg +10 -0
- package/src/assets/img/dashboard_icon/desktop_unselected.svg +10 -0
- package/src/assets/img/dashboard_icon/favourite-grey.svg +3 -0
- package/src/assets/img/dashboard_icon/favourite-yellow.svg +3 -0
- package/src/assets/img/dashboard_icon/forms-checkbox-square-tick.svg +3 -0
- package/src/assets/img/dashboard_icon/ftable-white.svg +24 -0
- package/src/assets/img/dashboard_icon/ftable.svg +24 -0
- package/src/assets/img/dashboard_icon/gadget-basic-arrow-down.svg +14 -0
- package/src/assets/img/dashboard_icon/gadget-basic-format.svg +21 -0
- package/src/assets/img/dashboard_icon/gadget-basic-sub-total.svg +18 -0
- package/src/assets/img/dashboard_icon/gadget-basic-total-1.svg +9 -0
- package/src/assets/img/dashboard_icon/gadget-basic-total.svg +16 -0
- package/src/assets/img/dashboard_icon/gadget-columns.svg +12 -0
- package/src/assets/img/dashboard_icon/gadget-delete.svg +18 -0
- package/src/assets/img/dashboard_icon/gadget-download.svg +18 -0
- package/src/assets/img/dashboard_icon/gadget-duplicate.svg +24 -0
- package/src/assets/img/dashboard_icon/gadget-edit.svg +18 -0
- package/src/assets/img/dashboard_icon/gadget-filters-light.svg +9 -0
- package/src/assets/img/dashboard_icon/gadget-filters.svg +9 -0
- package/src/assets/img/dashboard_icon/gadget-format-0.svg +8 -0
- package/src/assets/img/dashboard_icon/gadget-format-1.svg +8 -0
- package/src/assets/img/dashboard_icon/gadget-format.svg +19 -0
- package/src/assets/img/dashboard_icon/gadget-fullscreen.svg +30 -0
- package/src/assets/img/dashboard_icon/gadget-settings.svg +18 -0
- package/src/assets/img/dashboard_icon/gadget-sub-total-0.svg +18 -0
- package/src/assets/img/dashboard_icon/gadget-sub-total-1.svg +18 -0
- package/src/assets/img/dashboard_icon/gadget-thumbnail.svg +12 -0
- package/src/assets/img/dashboard_icon/gadget-type-light.svg +15 -0
- package/src/assets/img/dashboard_icon/gadget-type.svg +16 -0
- package/src/assets/img/dashboard_icon/geo-white.svg +14 -0
- package/src/assets/img/dashboard_icon/geo.svg +14 -0
- package/src/assets/img/dashboard_icon/historic-IRR-white.svg +9 -0
- package/src/assets/img/dashboard_icon/historic-IRR.svg +5 -0
- package/src/assets/img/dashboard_icon/information-1.png +0 -0
- package/src/assets/img/dashboard_icon/information-grey.svg +4 -0
- package/src/assets/img/dashboard_icon/menu-change-group.svg +3 -0
- package/src/assets/img/dashboard_icon/menu-close.svg +20 -0
- package/src/assets/img/dashboard_icon/menu-delete.svg +18 -0
- package/src/assets/img/dashboard_icon/menu-description.svg +19 -0
- package/src/assets/img/dashboard_icon/menu-download.svg +24 -0
- package/src/assets/img/dashboard_icon/menu-drag.svg +28 -0
- package/src/assets/img/dashboard_icon/menu-duplicate.svg +26 -0
- package/src/assets/img/dashboard_icon/menu-properties.svg +18 -0
- package/src/assets/img/dashboard_icon/menu-rename.svg +23 -0
- package/src/assets/img/dashboard_icon/menu-share.svg +20 -0
- package/src/assets/img/dashboard_icon/menu-toolbar.svg +10 -0
- package/src/assets/img/dashboard_icon/mobile_selected.svg +10 -0
- package/src/assets/img/dashboard_icon/mobile_unselected.svg +10 -0
- package/src/assets/img/dashboard_icon/more_Save.svg +3 -0
- package/src/assets/img/dashboard_icon/more_View.svg +3 -0
- package/src/assets/img/dashboard_icon/multi-series-white.svg +20 -0
- package/src/assets/img/dashboard_icon/multi-series.svg +6 -0
- package/src/assets/img/dashboard_icon/paint-bucket.svg +6 -0
- package/src/assets/img/dashboard_icon/pie-white.svg +16 -0
- package/src/assets/img/dashboard_icon/pie.svg +16 -0
- package/src/assets/img/dashboard_icon/pivot-chart-active.svg +8 -0
- package/src/assets/img/dashboard_icon/pivot-chart.svg +8 -0
- package/src/assets/img/dashboard_icon/pivot-white.svg +8 -0
- package/src/assets/img/dashboard_icon/pivot.svg +8 -0
- package/src/assets/img/dashboard_icon/pivot_column.svg +9 -0
- package/src/assets/img/dashboard_icon/pivot_column_active.svg +9 -0
- package/src/assets/img/dashboard_icon/pivot_line.svg +12 -0
- package/src/assets/img/dashboard_icon/pivot_line_active.svg +12 -0
- package/src/assets/img/dashboard_icon/print-A2.svg +3 -0
- package/src/assets/img/dashboard_icon/radar-white.svg +19 -0
- package/src/assets/img/dashboard_icon/radar.svg +19 -0
- package/src/assets/img/dashboard_icon/saveAs.svg +3 -0
- package/src/assets/img/dashboard_icon/search_input.svg +4 -0
- package/src/assets/img/dashboard_icon/table-3-white.svg +16 -0
- package/src/assets/img/dashboard_icon/table-3.svg +16 -0
- package/src/assets/img/dashboard_icon/table-filter-off.svg +5 -0
- package/src/assets/img/dashboard_icon/table-filter-on.svg +5 -0
- package/src/assets/img/dashboard_icon/tag_dashboard_selected.svg +3 -0
- package/src/assets/img/dashboard_icon/tag_dashboard_unselected.svg +3 -0
- package/src/assets/img/dashboard_icon/tag_share_selected.svg +3 -0
- package/src/assets/img/dashboard_icon/tag_share_unselected.svg +3 -0
- package/src/assets/img/dashboard_icon/tick.svg +26 -0
- package/src/assets/img/dashboard_icon/toolbar_AddDashboard.svg +5 -0
- package/src/assets/img/dashboard_icon/toolbar_AddGroup.svg +3 -0
- package/src/assets/img/dashboard_icon/toolbar_AddReport.svg +3 -0
- package/src/assets/img/dashboard_icon/toolbar_CollapseAll.svg +3 -0
- package/src/assets/img/dashboard_icon/toolbar_Customize.svg +3 -0
- package/src/assets/img/dashboard_icon/toolbar_DeleteDark.svg +3 -0
- package/src/assets/img/dashboard_icon/toolbar_Duplicate.svg +3 -0
- package/src/assets/img/dashboard_icon/toolbar_Edit.svg +3 -0
- package/src/assets/img/dashboard_icon/toolbar_ExpandAll.svg +3 -0
- package/src/assets/img/dashboard_icon/toolbar_Search.svg +3 -0
- package/src/assets/img/dashboard_icon/topbar-menu.svg +33 -0
- package/src/assets/img/dashboard_icon/topbar-refresh.svg +17 -0
- package/src/assets/img/dashboard_icon/topbar-tool-off.svg +12 -0
- package/src/assets/img/dashboard_icon/topbar-tool-on.svg +12 -0
- package/src/assets/img/dashboard_icon/trade-up-white.svg +14 -0
- package/src/assets/img/dashboard_icon/trade-up.svg +14 -0
- package/src/assets/img/dashboard_icon/transpose-white.svg +16 -0
- package/src/assets/img/dashboard_icon/transpose.svg +16 -0
- package/src/assets/style/reset/mat-dialog.scss +11 -5
- package/src/assets/style/style.scss +14 -4
|
@@ -0,0 +1,1792 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview added by tsickle
|
|
3
|
+
* Generated from: lib/dashboard/sidebar-iconlist/sidebar-iconlist-new.component.ts
|
|
4
|
+
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
5
|
+
*/
|
|
6
|
+
import * as tslib_1 from "tslib";
|
|
7
|
+
import { Component, ChangeDetectorRef, ChangeDetectionStrategy, Input, Output, EventEmitter, Inject, Optional, } from "@angular/core";
|
|
8
|
+
import { ApiList } from "../api";
|
|
9
|
+
import { API_SERVICE_TOKEN, PBF_TOKEN } from "../../service/InjectionToken";
|
|
10
|
+
import { DashboardService } from "../dashboard.service";
|
|
11
|
+
import { DashboardPorletsService } from "../dashboardPorlets.service";
|
|
12
|
+
var SidebarIconlistNewComponent = /** @class */ (function () {
|
|
13
|
+
function SidebarIconlistNewComponent(api, dashboardService, dashboardPorletsService, ref, pbf, http) {
|
|
14
|
+
this.api = api;
|
|
15
|
+
this.dashboardService = dashboardService;
|
|
16
|
+
this.dashboardPorletsService = dashboardPorletsService;
|
|
17
|
+
this.ref = ref;
|
|
18
|
+
this.pbf = pbf;
|
|
19
|
+
this.http = http;
|
|
20
|
+
this.dashboard_sidebar = false;
|
|
21
|
+
this.portlets = [];
|
|
22
|
+
this.tabactive = false;
|
|
23
|
+
this._selectedX = [];
|
|
24
|
+
this._selectedY = [];
|
|
25
|
+
this._selectedMultiples = null;
|
|
26
|
+
this._selectedSecondY = [];
|
|
27
|
+
this._selectTheme = null;
|
|
28
|
+
this.closeSidebar = new EventEmitter();
|
|
29
|
+
this.updatePorletConfig = new EventEmitter();
|
|
30
|
+
this.onToggleTabactive = new EventEmitter();
|
|
31
|
+
this.updatePorlet = new EventEmitter();
|
|
32
|
+
this.updatePushBtn = new EventEmitter();
|
|
33
|
+
this.chartUpdate = new EventEmitter();
|
|
34
|
+
this.updateTheme = new EventEmitter();
|
|
35
|
+
this.translation = JSON.parse(localStorage.getItem("translation"));
|
|
36
|
+
this.dataMartTableList = [];
|
|
37
|
+
this.hasChanged = false;
|
|
38
|
+
this.subscriptions = [];
|
|
39
|
+
this.expandArray = [
|
|
40
|
+
false,
|
|
41
|
+
false,
|
|
42
|
+
false,
|
|
43
|
+
false,
|
|
44
|
+
false,
|
|
45
|
+
false,
|
|
46
|
+
false,
|
|
47
|
+
];
|
|
48
|
+
this.selectedDataTable = "";
|
|
49
|
+
this.chartSettings = {
|
|
50
|
+
legendSettings: {
|
|
51
|
+
visible: false,
|
|
52
|
+
},
|
|
53
|
+
enableMultipleAxis: false,
|
|
54
|
+
showMultiLevelLabels: false,
|
|
55
|
+
chartSeries: {
|
|
56
|
+
type: "Column",
|
|
57
|
+
width: 2,
|
|
58
|
+
},
|
|
59
|
+
multipleAxisMode: "Stacked",
|
|
60
|
+
primaryXAxis: {
|
|
61
|
+
title: " ",
|
|
62
|
+
majorGridLines: { width: 0 },
|
|
63
|
+
},
|
|
64
|
+
chartArea: {
|
|
65
|
+
opacity: 0,
|
|
66
|
+
border: {
|
|
67
|
+
width: 0,
|
|
68
|
+
},
|
|
69
|
+
},
|
|
70
|
+
palettes: [
|
|
71
|
+
"#594bb9",
|
|
72
|
+
"#f1af32",
|
|
73
|
+
"#4688ed",
|
|
74
|
+
"#e0563e",
|
|
75
|
+
"#803a63",
|
|
76
|
+
"#6dd8b5",
|
|
77
|
+
"#e87225",
|
|
78
|
+
"#c5df42",
|
|
79
|
+
"#c6437d",
|
|
80
|
+
],
|
|
81
|
+
primaryYAxis: {
|
|
82
|
+
// Y轴标题设置为空
|
|
83
|
+
title: " ",
|
|
84
|
+
},
|
|
85
|
+
zoomSettings: {
|
|
86
|
+
enableMouseWheelZooming: false,
|
|
87
|
+
// 禁用鼠标滚轮缩放
|
|
88
|
+
enablePinchZooming: false,
|
|
89
|
+
// 禁用触摸缩放
|
|
90
|
+
enableSelectionZooming: false,
|
|
91
|
+
// 禁用选择区域缩放
|
|
92
|
+
enableDeferredZooming: false,
|
|
93
|
+
// 禁用延迟缩放
|
|
94
|
+
toolbarItems: [],
|
|
95
|
+
enableScrollbar: false,
|
|
96
|
+
enableZooming: false,
|
|
97
|
+
},
|
|
98
|
+
};
|
|
99
|
+
this.displayOption = { view: "Both", primary: "Chart" };
|
|
100
|
+
this.currentTab = "tab1";
|
|
101
|
+
this.yList = [];
|
|
102
|
+
this.chartTypeList = [
|
|
103
|
+
"Column",
|
|
104
|
+
"Bar",
|
|
105
|
+
"Line",
|
|
106
|
+
"Spline",
|
|
107
|
+
"Area",
|
|
108
|
+
"Scatter",
|
|
109
|
+
"Polar",
|
|
110
|
+
"Pie",
|
|
111
|
+
"Doughnut",
|
|
112
|
+
"Stacked Column",
|
|
113
|
+
"Radar",
|
|
114
|
+
];
|
|
115
|
+
this.multipleAxisModeList = ["Stacked", "Single", "Combined"];
|
|
116
|
+
this.themeData = [
|
|
117
|
+
{
|
|
118
|
+
id: "theme13",
|
|
119
|
+
value: ["#1C3484", "#35B9FC"],
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
id: "theme14",
|
|
123
|
+
value: ["#04578F", "#3EBBCE"],
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
id: "theme15",
|
|
127
|
+
value: ["#1C3484", "#136BBB", "#35B9FC"],
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
id: "theme16",
|
|
131
|
+
value: ["#04578F", "#0082AF", "#3EBBCE"],
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
id: "theme17",
|
|
135
|
+
value: ["#1C3484", "#1659A9", "#1D97E1", "#35B9FC"],
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
id: "theme18",
|
|
139
|
+
value: ["#04578F", "#0070A3", "#16A2C2", "#3EBBCE"],
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
id: "theme19",
|
|
143
|
+
value: ["#1C3484", "#1659A9", "#1375C4", "#1D97E1", "#35B9FC"],
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
id: "theme20",
|
|
147
|
+
value: ["#04578F", "#0070A3", "#0089B4", "#16A2C2", "#3EBBCE"],
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
id: "theme21",
|
|
151
|
+
value: ["#1C3484", "#1659A9", "#1368B8", "#1375C4", "#1D97E1", "#35B9FC"],
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
id: "theme22",
|
|
155
|
+
value: ["#04578F", "#0070A3", "#007FAD", "#0089B4", "#16A2C2", "#3EBBCE"],
|
|
156
|
+
},
|
|
157
|
+
{
|
|
158
|
+
id: "theme23",
|
|
159
|
+
value: [
|
|
160
|
+
"#1C3484",
|
|
161
|
+
"#1659A9",
|
|
162
|
+
"#145FAF",
|
|
163
|
+
"#1368B8",
|
|
164
|
+
"#1375C4",
|
|
165
|
+
"#1D97E1",
|
|
166
|
+
"#35B9FC",
|
|
167
|
+
],
|
|
168
|
+
},
|
|
169
|
+
{
|
|
170
|
+
id: "theme24",
|
|
171
|
+
value: [
|
|
172
|
+
"#04578F",
|
|
173
|
+
"#0070A3",
|
|
174
|
+
"#0078A9",
|
|
175
|
+
"#007FAD",
|
|
176
|
+
"#0089B4",
|
|
177
|
+
"#16A2C2",
|
|
178
|
+
"#3EBBCE",
|
|
179
|
+
],
|
|
180
|
+
},
|
|
181
|
+
{
|
|
182
|
+
id: "theme11",
|
|
183
|
+
value: [
|
|
184
|
+
"#1C3484",
|
|
185
|
+
"#194697",
|
|
186
|
+
"#1659A9",
|
|
187
|
+
"#136BBB",
|
|
188
|
+
"#147ECC",
|
|
189
|
+
"#1B92DD",
|
|
190
|
+
"#26A5ED",
|
|
191
|
+
"#35B9FC",
|
|
192
|
+
],
|
|
193
|
+
},
|
|
194
|
+
{
|
|
195
|
+
id: "theme12",
|
|
196
|
+
value: [
|
|
197
|
+
"#04578F",
|
|
198
|
+
"#00659B",
|
|
199
|
+
"#0073A6",
|
|
200
|
+
"#0082AF",
|
|
201
|
+
"#0090B8",
|
|
202
|
+
"#0F9EC0",
|
|
203
|
+
"#29ADC7",
|
|
204
|
+
"#3EBBCE",
|
|
205
|
+
],
|
|
206
|
+
},
|
|
207
|
+
{
|
|
208
|
+
id: "theme1",
|
|
209
|
+
value: [
|
|
210
|
+
"#594bb9",
|
|
211
|
+
"#f1af32",
|
|
212
|
+
"#4688ed",
|
|
213
|
+
"#e0563e",
|
|
214
|
+
"#803a63",
|
|
215
|
+
"#6dd8b5",
|
|
216
|
+
"#e87225",
|
|
217
|
+
"#c5df42",
|
|
218
|
+
"#c6437d",
|
|
219
|
+
],
|
|
220
|
+
},
|
|
221
|
+
{
|
|
222
|
+
id: "theme2",
|
|
223
|
+
value: [
|
|
224
|
+
"#4688ed",
|
|
225
|
+
"#f1af32",
|
|
226
|
+
"#e0563e",
|
|
227
|
+
"#803a63",
|
|
228
|
+
"#6dd8b5",
|
|
229
|
+
"#e87225",
|
|
230
|
+
"#c5df42",
|
|
231
|
+
"#c6437d",
|
|
232
|
+
"#594bb9",
|
|
233
|
+
],
|
|
234
|
+
},
|
|
235
|
+
{
|
|
236
|
+
id: "theme3",
|
|
237
|
+
value: [
|
|
238
|
+
"#c6437d",
|
|
239
|
+
"#c5df42",
|
|
240
|
+
"#e87225",
|
|
241
|
+
"#6dd8b5",
|
|
242
|
+
"#e0563e",
|
|
243
|
+
"#803a63",
|
|
244
|
+
"#f1af32",
|
|
245
|
+
"#594bb9",
|
|
246
|
+
"#4688ed",
|
|
247
|
+
],
|
|
248
|
+
},
|
|
249
|
+
{
|
|
250
|
+
id: "theme4",
|
|
251
|
+
value: [
|
|
252
|
+
"#2f499f",
|
|
253
|
+
"#8d1d2e",
|
|
254
|
+
"#e9bf35",
|
|
255
|
+
"#51772f",
|
|
256
|
+
"#469bd8",
|
|
257
|
+
"#5c448f",
|
|
258
|
+
"#da732f",
|
|
259
|
+
"#245353",
|
|
260
|
+
"#43a245",
|
|
261
|
+
],
|
|
262
|
+
},
|
|
263
|
+
{
|
|
264
|
+
id: "theme5",
|
|
265
|
+
value: [
|
|
266
|
+
"#383839",
|
|
267
|
+
"#446ec6",
|
|
268
|
+
"#cf6384",
|
|
269
|
+
"#ebb37e",
|
|
270
|
+
"#71a249",
|
|
271
|
+
"#4bb1a5",
|
|
272
|
+
"#e87225",
|
|
273
|
+
"#c5df42",
|
|
274
|
+
"#c6437d",
|
|
275
|
+
],
|
|
276
|
+
},
|
|
277
|
+
{
|
|
278
|
+
id: "theme6",
|
|
279
|
+
value: [
|
|
280
|
+
"#517ae1",
|
|
281
|
+
"#6386e5",
|
|
282
|
+
"#7491e9",
|
|
283
|
+
"#849dec",
|
|
284
|
+
"#94a9ef",
|
|
285
|
+
"#a4b6f2",
|
|
286
|
+
"#b4c3f6",
|
|
287
|
+
"#c4cff9",
|
|
288
|
+
"#d4ddfd",
|
|
289
|
+
],
|
|
290
|
+
},
|
|
291
|
+
{
|
|
292
|
+
id: "theme7",
|
|
293
|
+
value: [
|
|
294
|
+
"#39828e",
|
|
295
|
+
"#488e99",
|
|
296
|
+
"#579aa5",
|
|
297
|
+
"#66a6b0",
|
|
298
|
+
"#75b3bd",
|
|
299
|
+
"#85bfc9",
|
|
300
|
+
"#95cdd6",
|
|
301
|
+
"#a4dae2",
|
|
302
|
+
"#b5e8f0",
|
|
303
|
+
],
|
|
304
|
+
},
|
|
305
|
+
{
|
|
306
|
+
id: "theme8",
|
|
307
|
+
value: [
|
|
308
|
+
"#e7963d",
|
|
309
|
+
"#ea9e4b",
|
|
310
|
+
"#eea659",
|
|
311
|
+
"#f0ae68",
|
|
312
|
+
"#f2b678",
|
|
313
|
+
"#f3bf87",
|
|
314
|
+
"#f5c798",
|
|
315
|
+
"#f6d0aa",
|
|
316
|
+
"#f7d9bb",
|
|
317
|
+
],
|
|
318
|
+
},
|
|
319
|
+
{
|
|
320
|
+
id: "theme9",
|
|
321
|
+
value: [
|
|
322
|
+
"#64a8b4",
|
|
323
|
+
"#7ebec0",
|
|
324
|
+
"#9cc9ca",
|
|
325
|
+
"#b8d4d4",
|
|
326
|
+
"#d9d6cd",
|
|
327
|
+
"#d8b7a7",
|
|
328
|
+
"#ce8f93",
|
|
329
|
+
"#c1627f",
|
|
330
|
+
"#ad2458",
|
|
331
|
+
],
|
|
332
|
+
},
|
|
333
|
+
{
|
|
334
|
+
id: "theme10",
|
|
335
|
+
value: [
|
|
336
|
+
"#4176ba",
|
|
337
|
+
"#559ae8",
|
|
338
|
+
"#70b3e8",
|
|
339
|
+
"#a7cce7",
|
|
340
|
+
"#dfdfdf",
|
|
341
|
+
"#d2a08b",
|
|
342
|
+
"#c76a50",
|
|
343
|
+
"#ca4e34",
|
|
344
|
+
"#aa3c29",
|
|
345
|
+
],
|
|
346
|
+
},
|
|
347
|
+
];
|
|
348
|
+
this.themeFields = { text: "value", value: "id" };
|
|
349
|
+
this.selectedInvestor = null;
|
|
350
|
+
this.investorList = [];
|
|
351
|
+
this.selectedVisualType = null;
|
|
352
|
+
this.visualTypeList = [];
|
|
353
|
+
this.selectedX = null;
|
|
354
|
+
this.selectedY = [];
|
|
355
|
+
this.selectedSecondY = [];
|
|
356
|
+
this.selectedMultiples = null;
|
|
357
|
+
this.markerFormat = "";
|
|
358
|
+
this.markerFormatList = [
|
|
359
|
+
{
|
|
360
|
+
value: "",
|
|
361
|
+
label: this.translation.NONE || ".None",
|
|
362
|
+
},
|
|
363
|
+
{
|
|
364
|
+
value: "K",
|
|
365
|
+
label: this.translation.THOUSANDS || ".Thousands",
|
|
366
|
+
},
|
|
367
|
+
{
|
|
368
|
+
value: "M",
|
|
369
|
+
label: this.translation.MILLIONS || ".Millions",
|
|
370
|
+
},
|
|
371
|
+
{
|
|
372
|
+
value: "bn",
|
|
373
|
+
label: this.translation.BILLIONS || ".Billions",
|
|
374
|
+
},
|
|
375
|
+
{
|
|
376
|
+
value: "T",
|
|
377
|
+
label: this.translation.TRILLIONS || ".Trillions",
|
|
378
|
+
},
|
|
379
|
+
];
|
|
380
|
+
this.hasMarker = false;
|
|
381
|
+
this.multiplesList = [];
|
|
382
|
+
this.selectTheme = "theme1";
|
|
383
|
+
}
|
|
384
|
+
/**
|
|
385
|
+
* @return {?}
|
|
386
|
+
*/
|
|
387
|
+
SidebarIconlistNewComponent.prototype.ngOnInit = /**
|
|
388
|
+
* @return {?}
|
|
389
|
+
*/
|
|
390
|
+
function () {
|
|
391
|
+
this.currentTab = this.tabactive ? "tab1" : "tab2";
|
|
392
|
+
this.getInfo();
|
|
393
|
+
this.setDatabind();
|
|
394
|
+
this.initHistoricalIRROptions();
|
|
395
|
+
this.getmultiplesList();
|
|
396
|
+
};
|
|
397
|
+
/**
|
|
398
|
+
* @return {?}
|
|
399
|
+
*/
|
|
400
|
+
SidebarIconlistNewComponent.prototype.ngOnChanges = /**
|
|
401
|
+
* @return {?}
|
|
402
|
+
*/
|
|
403
|
+
function () {
|
|
404
|
+
this.ref.markForCheck(); // 标记为需要检测
|
|
405
|
+
};
|
|
406
|
+
/**
|
|
407
|
+
* @return {?}
|
|
408
|
+
*/
|
|
409
|
+
SidebarIconlistNewComponent.prototype.ngAfterViewInit = /**
|
|
410
|
+
* @return {?}
|
|
411
|
+
*/
|
|
412
|
+
function () {
|
|
413
|
+
var _this = this;
|
|
414
|
+
this.subscriptions.push(this.dashboardService.getPushbtn().subscribe((/**
|
|
415
|
+
* @param {?} id
|
|
416
|
+
* @return {?}
|
|
417
|
+
*/
|
|
418
|
+
function (id) {
|
|
419
|
+
if (_this.dashboard && _this.dashboard.id === id) {
|
|
420
|
+
_this.config = _this.getConfig([]);
|
|
421
|
+
_this.selectedDatamart = "";
|
|
422
|
+
_this.selectedX = null;
|
|
423
|
+
_this.selectedY = [];
|
|
424
|
+
_this.selectedSecondY = [];
|
|
425
|
+
_this.selectedMultiples = null;
|
|
426
|
+
_this.ref.markForCheck();
|
|
427
|
+
_this.ref.detectChanges();
|
|
428
|
+
}
|
|
429
|
+
})));
|
|
430
|
+
this.subscriptions.push(this.dashboardService.getportletEdit().subscribe((/**
|
|
431
|
+
* @param {?} dashboardId
|
|
432
|
+
* @return {?}
|
|
433
|
+
*/
|
|
434
|
+
function (dashboardId) {
|
|
435
|
+
if (dashboardId === _this.dashboardId) {
|
|
436
|
+
_this.setDatabind();
|
|
437
|
+
}
|
|
438
|
+
})));
|
|
439
|
+
this.initDataMartTableList();
|
|
440
|
+
};
|
|
441
|
+
/**
|
|
442
|
+
* @private
|
|
443
|
+
* @return {?}
|
|
444
|
+
*/
|
|
445
|
+
SidebarIconlistNewComponent.prototype.initDataMartTableList = /**
|
|
446
|
+
* @private
|
|
447
|
+
* @return {?}
|
|
448
|
+
*/
|
|
449
|
+
function () {
|
|
450
|
+
this.dataMartTableList = tslib_1.__spread(this.dashboard.dataMartTables).filter((/**
|
|
451
|
+
* @param {?} item
|
|
452
|
+
* @return {?}
|
|
453
|
+
*/
|
|
454
|
+
function (item) { return !item.isHide; }));
|
|
455
|
+
this.dashboardPorletsService.renameDataMartTables(this.dataMartTableList, this.dashboard.id, this.dashboard.entityType);
|
|
456
|
+
this.dashboardPorletsService.sortDataMartTables(this.dataMartTableList);
|
|
457
|
+
if (!this.portlet) {
|
|
458
|
+
return;
|
|
459
|
+
}
|
|
460
|
+
/** @type {?} */
|
|
461
|
+
var figureCode = this.portlet.figureCode;
|
|
462
|
+
this.dashboard.dataMartTables.forEach((/**
|
|
463
|
+
* @param {?} item
|
|
464
|
+
* @return {?}
|
|
465
|
+
*/
|
|
466
|
+
function (item) {
|
|
467
|
+
if (item.datamartCode === figureCode && item.prefix) {
|
|
468
|
+
figureCode = item.prefix;
|
|
469
|
+
}
|
|
470
|
+
}));
|
|
471
|
+
if (!this.dataMartTableList.find((/**
|
|
472
|
+
* @param {?} item
|
|
473
|
+
* @return {?}
|
|
474
|
+
*/
|
|
475
|
+
function (item) { return item.datamartCode === figureCode; }))) {
|
|
476
|
+
this.dataMartTableList.forEach((/**
|
|
477
|
+
* @param {?} data
|
|
478
|
+
* @return {?}
|
|
479
|
+
*/
|
|
480
|
+
function (data) {
|
|
481
|
+
if (data.prefix === figureCode) {
|
|
482
|
+
figureCode = data.datamartCode;
|
|
483
|
+
}
|
|
484
|
+
}));
|
|
485
|
+
}
|
|
486
|
+
this.selectedDatamart = figureCode;
|
|
487
|
+
};
|
|
488
|
+
/**
|
|
489
|
+
* @return {?}
|
|
490
|
+
*/
|
|
491
|
+
SidebarIconlistNewComponent.prototype.ngOnDestroy = /**
|
|
492
|
+
* @return {?}
|
|
493
|
+
*/
|
|
494
|
+
function () {
|
|
495
|
+
this.subscriptions.forEach((/**
|
|
496
|
+
* @param {?} sb
|
|
497
|
+
* @return {?}
|
|
498
|
+
*/
|
|
499
|
+
function (sb) { return sb.unsubscribe(); }));
|
|
500
|
+
};
|
|
501
|
+
/**
|
|
502
|
+
* @param {?} wizard
|
|
503
|
+
* @return {?}
|
|
504
|
+
*/
|
|
505
|
+
SidebarIconlistNewComponent.prototype.nextWizard = /**
|
|
506
|
+
* @param {?} wizard
|
|
507
|
+
* @return {?}
|
|
508
|
+
*/
|
|
509
|
+
function (wizard) {
|
|
510
|
+
if (!this.expandArray[wizard]) {
|
|
511
|
+
this.expandArray = [
|
|
512
|
+
false,
|
|
513
|
+
false,
|
|
514
|
+
false,
|
|
515
|
+
false,
|
|
516
|
+
false,
|
|
517
|
+
false,
|
|
518
|
+
false,
|
|
519
|
+
false,
|
|
520
|
+
];
|
|
521
|
+
this.expandArray[wizard] = true;
|
|
522
|
+
}
|
|
523
|
+
else {
|
|
524
|
+
this.expandArray[wizard] = false;
|
|
525
|
+
}
|
|
526
|
+
};
|
|
527
|
+
/**
|
|
528
|
+
* @private
|
|
529
|
+
* @return {?}
|
|
530
|
+
*/
|
|
531
|
+
SidebarIconlistNewComponent.prototype.getInfo = /**
|
|
532
|
+
* @private
|
|
533
|
+
* @return {?}
|
|
534
|
+
*/
|
|
535
|
+
function () {
|
|
536
|
+
this.translation = JSON.parse(localStorage.getItem("translation"));
|
|
537
|
+
this.lang = this.pbf.getLanguageParams();
|
|
538
|
+
};
|
|
539
|
+
/**
|
|
540
|
+
* @return {?}
|
|
541
|
+
*/
|
|
542
|
+
SidebarIconlistNewComponent.prototype.clear = /**
|
|
543
|
+
* @return {?}
|
|
544
|
+
*/
|
|
545
|
+
function () {
|
|
546
|
+
this.dashboardService.clearSidebar.next(true);
|
|
547
|
+
};
|
|
548
|
+
/**
|
|
549
|
+
* @return {?}
|
|
550
|
+
*/
|
|
551
|
+
SidebarIconlistNewComponent.prototype.close = /**
|
|
552
|
+
* @return {?}
|
|
553
|
+
*/
|
|
554
|
+
function () {
|
|
555
|
+
this.updatePushBtn.emit(false);
|
|
556
|
+
this.updatePorlet.emit(null);
|
|
557
|
+
this.closeSidebar.emit(false);
|
|
558
|
+
};
|
|
559
|
+
/**
|
|
560
|
+
* @return {?}
|
|
561
|
+
*/
|
|
562
|
+
SidebarIconlistNewComponent.prototype.getFigurecode = /**
|
|
563
|
+
* @return {?}
|
|
564
|
+
*/
|
|
565
|
+
function () {
|
|
566
|
+
/** @type {?} */
|
|
567
|
+
var codeArr = ["Tasks", "FundList", "IRR", "Notes"];
|
|
568
|
+
/** @type {?} */
|
|
569
|
+
var i = codeArr.indexOf(this.figureCode);
|
|
570
|
+
return i > -1 ? false : true;
|
|
571
|
+
};
|
|
572
|
+
// 图表类型更改event
|
|
573
|
+
// 图表类型更改event
|
|
574
|
+
/**
|
|
575
|
+
* @param {?} $event
|
|
576
|
+
* @return {?}
|
|
577
|
+
*/
|
|
578
|
+
SidebarIconlistNewComponent.prototype.getPortletType =
|
|
579
|
+
// 图表类型更改event
|
|
580
|
+
/**
|
|
581
|
+
* @param {?} $event
|
|
582
|
+
* @return {?}
|
|
583
|
+
*/
|
|
584
|
+
function ($event) {
|
|
585
|
+
this.portletType = $event;
|
|
586
|
+
this.hasChanged = this.config.portletType !== this.portletType;
|
|
587
|
+
/** @type {?} */
|
|
588
|
+
var prevType = this.config.portletType;
|
|
589
|
+
this.config.portletType = this.portletType;
|
|
590
|
+
if (!$event) {
|
|
591
|
+
return;
|
|
592
|
+
}
|
|
593
|
+
if (["newcolumn", "newline", "newcolumnline"].includes($event)) {
|
|
594
|
+
this.selectedX = null;
|
|
595
|
+
this.selectedY = [];
|
|
596
|
+
this.selectedSecondY = [];
|
|
597
|
+
this.selectedMultiples = null;
|
|
598
|
+
this.expandArray[2] = false;
|
|
599
|
+
this.expandArray[7] = true;
|
|
600
|
+
// 修复有时选择 xy 轴时没有数据的问题
|
|
601
|
+
if (this.portlet && this.portlet.figureCode) {
|
|
602
|
+
this.getData(this.portlet.figureCode, false, this.portletType);
|
|
603
|
+
}
|
|
604
|
+
return;
|
|
605
|
+
}
|
|
606
|
+
if (this.portletType === "newchart") {
|
|
607
|
+
if (this.config.pvtableChartSetting &&
|
|
608
|
+
this.config.pvtableChartSetting.chartSettings) {
|
|
609
|
+
this.chartSettings = tslib_1.__assign({}, this.config.pvtableChartSetting.chartSettings);
|
|
610
|
+
}
|
|
611
|
+
else {
|
|
612
|
+
this.chartSettings = {
|
|
613
|
+
legendSettings: {
|
|
614
|
+
visible: false,
|
|
615
|
+
},
|
|
616
|
+
enableMultipleAxis: false,
|
|
617
|
+
showMultiLevelLabels: false,
|
|
618
|
+
chartSeries: {
|
|
619
|
+
type: "Column",
|
|
620
|
+
width: 2,
|
|
621
|
+
},
|
|
622
|
+
multipleAxisMode: "Stacked",
|
|
623
|
+
primaryXAxis: {
|
|
624
|
+
title: " ",
|
|
625
|
+
majorGridLines: { width: 0 },
|
|
626
|
+
},
|
|
627
|
+
chartArea: {
|
|
628
|
+
opacity: 0,
|
|
629
|
+
border: {
|
|
630
|
+
width: 0,
|
|
631
|
+
},
|
|
632
|
+
},
|
|
633
|
+
palettes: [
|
|
634
|
+
"#594bb9",
|
|
635
|
+
"#f1af32",
|
|
636
|
+
"#4688ed",
|
|
637
|
+
"#e0563e",
|
|
638
|
+
"#803a63",
|
|
639
|
+
"#6dd8b5",
|
|
640
|
+
"#e87225",
|
|
641
|
+
"#c5df42",
|
|
642
|
+
"#c6437d",
|
|
643
|
+
],
|
|
644
|
+
primaryYAxis: {
|
|
645
|
+
// Y轴标题设置为空
|
|
646
|
+
title: " ",
|
|
647
|
+
},
|
|
648
|
+
zoomSettings: {
|
|
649
|
+
enableMouseWheelZooming: false,
|
|
650
|
+
// 禁用鼠标滚轮缩放
|
|
651
|
+
enablePinchZooming: false,
|
|
652
|
+
// 禁用触摸缩放
|
|
653
|
+
enableSelectionZooming: false,
|
|
654
|
+
// 禁用选择区域缩放
|
|
655
|
+
enableDeferredZooming: false,
|
|
656
|
+
// 禁用延迟缩放
|
|
657
|
+
toolbarItems: [],
|
|
658
|
+
enableScrollbar: false,
|
|
659
|
+
enableZooming: false,
|
|
660
|
+
},
|
|
661
|
+
};
|
|
662
|
+
}
|
|
663
|
+
}
|
|
664
|
+
if ($event === "historicalIRR") {
|
|
665
|
+
this.onSelectedHistoricalIRRPortlet();
|
|
666
|
+
this.expandArray[2] = false;
|
|
667
|
+
this.expandArray[7] = true;
|
|
668
|
+
return;
|
|
669
|
+
}
|
|
670
|
+
this.expandArray[2] = false;
|
|
671
|
+
this.expandArray[3] = true;
|
|
672
|
+
if (this.portletType) {
|
|
673
|
+
this.AddOrEditPortlet();
|
|
674
|
+
}
|
|
675
|
+
};
|
|
676
|
+
/**
|
|
677
|
+
* @param {?} value
|
|
678
|
+
* @return {?}
|
|
679
|
+
*/
|
|
680
|
+
SidebarIconlistNewComponent.prototype.changeDataTable = /**
|
|
681
|
+
* @param {?} value
|
|
682
|
+
* @return {?}
|
|
683
|
+
*/
|
|
684
|
+
function (value) {
|
|
685
|
+
this.selectedDataTable = this.dataMartTableList.filter((/**
|
|
686
|
+
* @param {?} el
|
|
687
|
+
* @return {?}
|
|
688
|
+
*/
|
|
689
|
+
function (el) { return el.datamartCode === value; }))[0].id;
|
|
690
|
+
this.selectedDatamart = value;
|
|
691
|
+
if (this.portlet) {
|
|
692
|
+
this.portlet.figureCode = value;
|
|
693
|
+
this.portlet.dashboardDataTableId = this.getSelectDatamartId();
|
|
694
|
+
}
|
|
695
|
+
if (this.portlet) {
|
|
696
|
+
this.dashboardService.clearFieldList.next(this.portlet.newId);
|
|
697
|
+
}
|
|
698
|
+
if (this.portlet) {
|
|
699
|
+
this.dashboardPorletsService.clearFieldsObj(this.portlet);
|
|
700
|
+
}
|
|
701
|
+
this.getData(value);
|
|
702
|
+
this.expandArray[0] = false;
|
|
703
|
+
this.expandArray[2] = true;
|
|
704
|
+
};
|
|
705
|
+
/**
|
|
706
|
+
* @param {?} e
|
|
707
|
+
* @return {?}
|
|
708
|
+
*/
|
|
709
|
+
SidebarIconlistNewComponent.prototype._updatePorletConfig = /**
|
|
710
|
+
* @param {?} e
|
|
711
|
+
* @return {?}
|
|
712
|
+
*/
|
|
713
|
+
function (e) {
|
|
714
|
+
this.updatePorletConfig.emit(e);
|
|
715
|
+
};
|
|
716
|
+
/**
|
|
717
|
+
* @private
|
|
718
|
+
* @param {?} code
|
|
719
|
+
* @param {?=} edit
|
|
720
|
+
* @param {?=} portletType
|
|
721
|
+
* @return {?}
|
|
722
|
+
*/
|
|
723
|
+
SidebarIconlistNewComponent.prototype.getData = /**
|
|
724
|
+
* @private
|
|
725
|
+
* @param {?} code
|
|
726
|
+
* @param {?=} edit
|
|
727
|
+
* @param {?=} portletType
|
|
728
|
+
* @return {?}
|
|
729
|
+
*/
|
|
730
|
+
function (code, edit, portletType) {
|
|
731
|
+
var _this = this;
|
|
732
|
+
if (edit === void 0) { edit = true; }
|
|
733
|
+
if (portletType === void 0) { portletType = ""; }
|
|
734
|
+
/** @type {?} */
|
|
735
|
+
var dataObj = {
|
|
736
|
+
dataMartCode: code,
|
|
737
|
+
language: this.lang,
|
|
738
|
+
};
|
|
739
|
+
this.dashboardPorletsService.setSchemaParams(dataObj, code, this.dashboard);
|
|
740
|
+
this.http.post(this.api.urlList.GetSchema, dataObj, (/**
|
|
741
|
+
* @param {?} res
|
|
742
|
+
* @return {?}
|
|
743
|
+
*/
|
|
744
|
+
function (res) {
|
|
745
|
+
if (res) {
|
|
746
|
+
if ([
|
|
747
|
+
"SeeThroughQuarterly",
|
|
748
|
+
"SeeThroughYearly",
|
|
749
|
+
"SeeThroughMonthly",
|
|
750
|
+
].includes(code)) {
|
|
751
|
+
res = res.filter((/**
|
|
752
|
+
* @param {?} item
|
|
753
|
+
* @return {?}
|
|
754
|
+
*/
|
|
755
|
+
function (item) {
|
|
756
|
+
return ![
|
|
757
|
+
"CI_MTD",
|
|
758
|
+
"CI_QTD",
|
|
759
|
+
"CI_YTD",
|
|
760
|
+
"CTWR_MTD",
|
|
761
|
+
"CTWR_QTD",
|
|
762
|
+
"CTWR_YTD",
|
|
763
|
+
"CVAR_MTD_95",
|
|
764
|
+
"CVAR_MTD_99",
|
|
765
|
+
"CVAR_QTD_95",
|
|
766
|
+
"CVAR_QTD_99",
|
|
767
|
+
"CVAR_YTD_95",
|
|
768
|
+
"CVAR_YTD_99",
|
|
769
|
+
].includes(item.colName);
|
|
770
|
+
}));
|
|
771
|
+
}
|
|
772
|
+
if (!_this.dashboardPorletsService.fieldsArr[_this.dashboard.id]) {
|
|
773
|
+
_this.dashboardPorletsService.fieldsArr[_this.dashboard.id] = {};
|
|
774
|
+
}
|
|
775
|
+
_this.dashboardPorletsService.fieldsArr[_this.dashboard.id][_this.selectedDatamart] = res;
|
|
776
|
+
if (_this.portlet) {
|
|
777
|
+
if (_this.portlet.config) {
|
|
778
|
+
_this.config = JSON.parse(_this.portlet.config);
|
|
779
|
+
}
|
|
780
|
+
else {
|
|
781
|
+
_this.config = {};
|
|
782
|
+
}
|
|
783
|
+
if (portletType) {
|
|
784
|
+
_this.config.portletType = portletType;
|
|
785
|
+
}
|
|
786
|
+
_this.config.fields = res;
|
|
787
|
+
// TO DO 过滤Y轴的数据
|
|
788
|
+
_this.yList = res;
|
|
789
|
+
_this.portlet.config = _this.config ? JSON.stringify(_this.config) : "";
|
|
790
|
+
edit && _this.AddOrEditPortlet();
|
|
791
|
+
}
|
|
792
|
+
else {
|
|
793
|
+
_this.config.fields = res;
|
|
794
|
+
setTimeout((/**
|
|
795
|
+
* @return {?}
|
|
796
|
+
*/
|
|
797
|
+
function () {
|
|
798
|
+
/** @type {?} */
|
|
799
|
+
var portlet = Object.assign({}, _this.portlet);
|
|
800
|
+
portlet.config = _this.config;
|
|
801
|
+
_this.updatePorlet.emit(portlet);
|
|
802
|
+
// TO DO 过滤Y轴的数据
|
|
803
|
+
_this.yList = res;
|
|
804
|
+
}));
|
|
805
|
+
}
|
|
806
|
+
}
|
|
807
|
+
}));
|
|
808
|
+
};
|
|
809
|
+
/**
|
|
810
|
+
* @param {?} e
|
|
811
|
+
* @return {?}
|
|
812
|
+
*/
|
|
813
|
+
SidebarIconlistNewComponent.prototype.setMultipleAxis = /**
|
|
814
|
+
* @param {?} e
|
|
815
|
+
* @return {?}
|
|
816
|
+
*/
|
|
817
|
+
function (e) {
|
|
818
|
+
var _this = this;
|
|
819
|
+
setTimeout((/**
|
|
820
|
+
* @return {?}
|
|
821
|
+
*/
|
|
822
|
+
function () {
|
|
823
|
+
if (!_this.chartSettings.enableMultipleAxis) {
|
|
824
|
+
_this.chartSettings.legendSettings.visible = false;
|
|
825
|
+
_this.ref.markForCheck();
|
|
826
|
+
}
|
|
827
|
+
_this.dashboardService.enableMultipleAxisChange.next({
|
|
828
|
+
newId: _this.portlet.newId,
|
|
829
|
+
enableMultipleAxis: _this.chartSettings.enableMultipleAxis,
|
|
830
|
+
visible: _this.chartSettings.legendSettings.visible,
|
|
831
|
+
multipleAxisMode: _this.chartSettings.multipleAxisMode,
|
|
832
|
+
});
|
|
833
|
+
}));
|
|
834
|
+
};
|
|
835
|
+
/**
|
|
836
|
+
* @return {?}
|
|
837
|
+
*/
|
|
838
|
+
SidebarIconlistNewComponent.prototype.setChartType = /**
|
|
839
|
+
* @return {?}
|
|
840
|
+
*/
|
|
841
|
+
function () {
|
|
842
|
+
var _this = this;
|
|
843
|
+
/** @type {?} */
|
|
844
|
+
var portlet = Object.assign({}, this.portlet);
|
|
845
|
+
if (portlet.config) {
|
|
846
|
+
/** @type {?} */
|
|
847
|
+
var config = JSON.parse(portlet.config);
|
|
848
|
+
config.pvtableChartSetting = config.pvtableChartSetting
|
|
849
|
+
? tslib_1.__assign({}, config.pvtableChartSetting, { chartSettings: this.chartSettings }) : { chartSettings: this.chartSettings };
|
|
850
|
+
portlet.config = JSON.stringify(config);
|
|
851
|
+
}
|
|
852
|
+
this.updatePorlet.emit(portlet);
|
|
853
|
+
setTimeout((/**
|
|
854
|
+
* @return {?}
|
|
855
|
+
*/
|
|
856
|
+
function () {
|
|
857
|
+
_this.dashboardService.chartTypeChange.next({
|
|
858
|
+
newId: _this.portlet.newId,
|
|
859
|
+
chartSettings: _this.chartSettings,
|
|
860
|
+
});
|
|
861
|
+
}));
|
|
862
|
+
};
|
|
863
|
+
/**
|
|
864
|
+
* @param {?} e
|
|
865
|
+
* @return {?}
|
|
866
|
+
*/
|
|
867
|
+
SidebarIconlistNewComponent.prototype.getThemeData = /**
|
|
868
|
+
* @param {?} e
|
|
869
|
+
* @return {?}
|
|
870
|
+
*/
|
|
871
|
+
function (e) {
|
|
872
|
+
/** @type {?} */
|
|
873
|
+
var id = e.value;
|
|
874
|
+
/** @type {?} */
|
|
875
|
+
var portlet = this.portlet;
|
|
876
|
+
/** @type {?} */
|
|
877
|
+
var theme = this.themeData.find((/**
|
|
878
|
+
* @param {?} item
|
|
879
|
+
* @return {?}
|
|
880
|
+
*/
|
|
881
|
+
function (item) { return item.id === id; }));
|
|
882
|
+
if (!theme) {
|
|
883
|
+
return;
|
|
884
|
+
}
|
|
885
|
+
this.dashboardService.setTheme.next({
|
|
886
|
+
newId: portlet.newId,
|
|
887
|
+
theme: theme.value,
|
|
888
|
+
});
|
|
889
|
+
};
|
|
890
|
+
/**
|
|
891
|
+
* @return {?}
|
|
892
|
+
*/
|
|
893
|
+
SidebarIconlistNewComponent.prototype.AddOrEditPortlet = /**
|
|
894
|
+
* @return {?}
|
|
895
|
+
*/
|
|
896
|
+
function () {
|
|
897
|
+
var _this = this;
|
|
898
|
+
/** @type {?} */
|
|
899
|
+
var portletType = this.config.portletType === "historicalIRR"
|
|
900
|
+
? this.config.selectedVisualType
|
|
901
|
+
: this.config.portletType;
|
|
902
|
+
if (this.portlet && this.portlet.newId) {
|
|
903
|
+
// SMP2-17654 需要将选择的 frequency、investor、visual type 保存到 config 中用来拿取后端数据
|
|
904
|
+
// 但是如果直接保存 this.config 会出现 SMP2-18837 这个 BUG
|
|
905
|
+
/** @type {?} */
|
|
906
|
+
var config = JSON.parse(this.portlet.config);
|
|
907
|
+
if (this.hasChanged) {
|
|
908
|
+
if (["newcolumn", "newline", "newcolumnline"].includes(portletType) &&
|
|
909
|
+
(this.selectedY.length > 0 || this.selectedSecondY.length > 0)) {
|
|
910
|
+
config["selectedX"] = this.selectedX;
|
|
911
|
+
config["selectedY"] = this.selectedY;
|
|
912
|
+
config["selectedSecondY"] = this.selectedSecondY;
|
|
913
|
+
config["selectedMultiples"] = this.selectedMultiples;
|
|
914
|
+
config["selectTheme"] = this.selectTheme;
|
|
915
|
+
}
|
|
916
|
+
if (config.portletType === "newchart") {
|
|
917
|
+
config.pvtableChartSetting = {
|
|
918
|
+
chartSettings: this.chartSettings,
|
|
919
|
+
displayOption: this.displayOption,
|
|
920
|
+
};
|
|
921
|
+
}
|
|
922
|
+
}
|
|
923
|
+
config.selectedMultiples = this.config.selectedMultiples;
|
|
924
|
+
config.selectedInvestor = this.config.selectedInvestor;
|
|
925
|
+
config.selectedVisualType = this.config.selectedVisualType;
|
|
926
|
+
/** @type {?} */
|
|
927
|
+
var portlet = Object.assign({}, this.portlet);
|
|
928
|
+
portlet.config = JSON.stringify(config);
|
|
929
|
+
// 新增DataTable类型, 编辑Porlet
|
|
930
|
+
this.dashboardPorletsService.setDataManager([this.getTrueSelectedDatamart()], (/**
|
|
931
|
+
* @param {?} res
|
|
932
|
+
* @return {?}
|
|
933
|
+
*/
|
|
934
|
+
function (res) {
|
|
935
|
+
_this.pbf.pageLoading = false;
|
|
936
|
+
_this.pbf.pageLoading_.next(true);
|
|
937
|
+
_this.editPortlet();
|
|
938
|
+
}), [portletType], this.dashboard.id, portlet);
|
|
939
|
+
}
|
|
940
|
+
else {
|
|
941
|
+
this.config.fields.map((/**
|
|
942
|
+
* @param {?} el
|
|
943
|
+
* @return {?}
|
|
944
|
+
*/
|
|
945
|
+
function (el) {
|
|
946
|
+
el.visible = true;
|
|
947
|
+
}));
|
|
948
|
+
if (["newcolumn", "newline", "newcolumnline"].includes(portletType) &&
|
|
949
|
+
(this.selectedY.length > 0 || this.selectedSecondY.length > 0)) {
|
|
950
|
+
this.config["selectedX"] = this.selectedX;
|
|
951
|
+
this.config["selectedY"] = this.selectedY;
|
|
952
|
+
this.config["selectedSecondY"] = this.selectedSecondY;
|
|
953
|
+
this.config["selectedMultiples"] = this.selectedMultiples;
|
|
954
|
+
this.config["selectTheme"] = this.selectTheme;
|
|
955
|
+
}
|
|
956
|
+
if (this.config.portletType === "newchart") {
|
|
957
|
+
this.config.pvtableChartSetting = {
|
|
958
|
+
chartSettings: this.chartSettings,
|
|
959
|
+
displayOption: this.displayOption,
|
|
960
|
+
};
|
|
961
|
+
}
|
|
962
|
+
this.getSelectDatamartId();
|
|
963
|
+
/** @type {?} */
|
|
964
|
+
var portletdata = {
|
|
965
|
+
id: "00000000-0000-0000-0000-000000000000",
|
|
966
|
+
newId: "portlet_" + this.pbf.Guid(),
|
|
967
|
+
dashboardDataTableId: this.getSelectDatamartId(),
|
|
968
|
+
figureCode: this.getTrueSelectedDatamart(),
|
|
969
|
+
col: 0,
|
|
970
|
+
row: 0,
|
|
971
|
+
sizeX: 2,
|
|
972
|
+
sizeY: 1,
|
|
973
|
+
posX: 0,
|
|
974
|
+
posY: 0,
|
|
975
|
+
height: 1,
|
|
976
|
+
width: 2,
|
|
977
|
+
config: JSON.stringify(this.config),
|
|
978
|
+
};
|
|
979
|
+
this.updatePorlet.emit(portletdata);
|
|
980
|
+
this.portlets.forEach((/**
|
|
981
|
+
* @param {?} portlet
|
|
982
|
+
* @return {?}
|
|
983
|
+
*/
|
|
984
|
+
function (portlet) {
|
|
985
|
+
portlet.row += 1;
|
|
986
|
+
}));
|
|
987
|
+
// 新增DataTable类型, 新增Porlet
|
|
988
|
+
this.dashboardPorletsService.setDataManager([this.getTrueSelectedDatamart()], (/**
|
|
989
|
+
* @param {?} res
|
|
990
|
+
* @return {?}
|
|
991
|
+
*/
|
|
992
|
+
function (res) {
|
|
993
|
+
setTimeout((/**
|
|
994
|
+
* @return {?}
|
|
995
|
+
*/
|
|
996
|
+
function () {
|
|
997
|
+
_this.dashboardService.addOrdelPortlet.next(_this.dashboard.id);
|
|
998
|
+
_this.pbf.pageLoading = false;
|
|
999
|
+
_this.pbf.pageLoading_.next(true);
|
|
1000
|
+
}), 200);
|
|
1001
|
+
}), [portletType], this.dashboard.id, portletdata);
|
|
1002
|
+
}
|
|
1003
|
+
};
|
|
1004
|
+
/**
|
|
1005
|
+
* @private
|
|
1006
|
+
* @return {?}
|
|
1007
|
+
*/
|
|
1008
|
+
SidebarIconlistNewComponent.prototype.editPortlet = /**
|
|
1009
|
+
* @private
|
|
1010
|
+
* @return {?}
|
|
1011
|
+
*/
|
|
1012
|
+
function () {
|
|
1013
|
+
var _this = this;
|
|
1014
|
+
if (this.portlet) {
|
|
1015
|
+
/** @type {?} */
|
|
1016
|
+
var portletType = this.config.portletType === "historicalIRR"
|
|
1017
|
+
? this.config.selectedVisualType
|
|
1018
|
+
: this.config.portletType;
|
|
1019
|
+
if (["table", "transpose", "financialTable"].includes(portletType)) {
|
|
1020
|
+
this.config.filterSettings = [];
|
|
1021
|
+
this.config.fields.map((/**
|
|
1022
|
+
* @param {?} el
|
|
1023
|
+
* @return {?}
|
|
1024
|
+
*/
|
|
1025
|
+
function (el) {
|
|
1026
|
+
el.visible = true;
|
|
1027
|
+
}));
|
|
1028
|
+
}
|
|
1029
|
+
/** @type {?} */
|
|
1030
|
+
var index = this.portlets.findIndex((/**
|
|
1031
|
+
* @param {?} x
|
|
1032
|
+
* @return {?}
|
|
1033
|
+
*/
|
|
1034
|
+
function (x) { return x.newId === _this.portlet.newId; }));
|
|
1035
|
+
if (index > -1) {
|
|
1036
|
+
this.portlets[index].config = JSON.stringify(this.config);
|
|
1037
|
+
if (["newcolumn", "newline", "newcolumnline"].includes(portletType)) {
|
|
1038
|
+
this.portlets[index].figureCode = this.getTrueSelectedDatamart();
|
|
1039
|
+
}
|
|
1040
|
+
/** @type {?} */
|
|
1041
|
+
var portlet = Object.assign({}, this.portlet);
|
|
1042
|
+
portlet.config = JSON.stringify(this.config);
|
|
1043
|
+
portlet.dashboardDataTableId = this.getSelectDatamartId();
|
|
1044
|
+
this.updatePorlet.emit(portlet);
|
|
1045
|
+
}
|
|
1046
|
+
/** @type {?} */
|
|
1047
|
+
var id = this.portlet.id || this.portlet.newId;
|
|
1048
|
+
this.chartUpdate.emit(id);
|
|
1049
|
+
}
|
|
1050
|
+
};
|
|
1051
|
+
/**
|
|
1052
|
+
* @param {?} type
|
|
1053
|
+
* @return {?}
|
|
1054
|
+
*/
|
|
1055
|
+
SidebarIconlistNewComponent.prototype.switchTab = /**
|
|
1056
|
+
* @param {?} type
|
|
1057
|
+
* @return {?}
|
|
1058
|
+
*/
|
|
1059
|
+
function (type) {
|
|
1060
|
+
this.currentTab = type;
|
|
1061
|
+
this.onToggleTabactive.emit(!this.tabactive);
|
|
1062
|
+
this.dashboardService.portletEdit.next(this.dashboardId);
|
|
1063
|
+
};
|
|
1064
|
+
/**
|
|
1065
|
+
* @param {?} newObj
|
|
1066
|
+
* @return {?}
|
|
1067
|
+
*/
|
|
1068
|
+
SidebarIconlistNewComponent.prototype.gadgetTitleChange = /**
|
|
1069
|
+
* @param {?} newObj
|
|
1070
|
+
* @return {?}
|
|
1071
|
+
*/
|
|
1072
|
+
function (newObj) {
|
|
1073
|
+
var _this = this;
|
|
1074
|
+
if (!this.portlet || !this.portlet.config) {
|
|
1075
|
+
return;
|
|
1076
|
+
}
|
|
1077
|
+
this.config = JSON.parse(this.portlet.config);
|
|
1078
|
+
this.config.gadgetTitle = newObj;
|
|
1079
|
+
/** @type {?} */
|
|
1080
|
+
var index = this.portlets.findIndex((/**
|
|
1081
|
+
* @param {?} x
|
|
1082
|
+
* @return {?}
|
|
1083
|
+
*/
|
|
1084
|
+
function (x) { return x.newId === _this.portlet.newId; }));
|
|
1085
|
+
if (index > -1)
|
|
1086
|
+
this.portlets[index].config = JSON.stringify(this.config);
|
|
1087
|
+
this.portlet.config = JSON.stringify(this.config);
|
|
1088
|
+
this.dashboardService.portletTitle.next(true);
|
|
1089
|
+
};
|
|
1090
|
+
/**
|
|
1091
|
+
* @return {?}
|
|
1092
|
+
*/
|
|
1093
|
+
SidebarIconlistNewComponent.prototype.setDatabind = /**
|
|
1094
|
+
* @return {?}
|
|
1095
|
+
*/
|
|
1096
|
+
function () {
|
|
1097
|
+
if (this.portlet) {
|
|
1098
|
+
var _a = this.dashboardPorletsService.dataMartTables, dataMartTables = _a === void 0 ? {} : _a;
|
|
1099
|
+
/** @type {?} */
|
|
1100
|
+
var figureCode_1 = this.portlet.figureCode;
|
|
1101
|
+
dataMartTables[this.dashboard.id].forEach((/**
|
|
1102
|
+
* @param {?} item
|
|
1103
|
+
* @return {?}
|
|
1104
|
+
*/
|
|
1105
|
+
function (item) {
|
|
1106
|
+
if (item.datamartCode === figureCode_1 && item.prefix) {
|
|
1107
|
+
figureCode_1 = item.prefix;
|
|
1108
|
+
}
|
|
1109
|
+
}));
|
|
1110
|
+
if (this.dataMartTableList &&
|
|
1111
|
+
this.dataMartTableList.length &&
|
|
1112
|
+
!this.dataMartTableList.find((/**
|
|
1113
|
+
* @param {?} item
|
|
1114
|
+
* @return {?}
|
|
1115
|
+
*/
|
|
1116
|
+
function (item) { return item.datamartCode === figureCode_1; }))) {
|
|
1117
|
+
this.dataMartTableList.forEach((/**
|
|
1118
|
+
* @param {?} data
|
|
1119
|
+
* @return {?}
|
|
1120
|
+
*/
|
|
1121
|
+
function (data) {
|
|
1122
|
+
if (data.prefix === figureCode_1) {
|
|
1123
|
+
figureCode_1 = data.datamartCode;
|
|
1124
|
+
}
|
|
1125
|
+
}));
|
|
1126
|
+
}
|
|
1127
|
+
this.selectedDatamart = figureCode_1;
|
|
1128
|
+
this.config = {};
|
|
1129
|
+
if (this.portlet.config)
|
|
1130
|
+
this.config = JSON.parse(this.portlet.config);
|
|
1131
|
+
this.hasMarker = this.config.hasMarker;
|
|
1132
|
+
this.markerFormat = this.config.markerFormat || "";
|
|
1133
|
+
if (this.config.portletType === "historicalIRR") {
|
|
1134
|
+
this.selectedMultiples = this.config.selectedMultiples;
|
|
1135
|
+
this.selectedInvestor = this.config.selectedInvestor;
|
|
1136
|
+
this.selectedVisualType = this.config.selectedVisualType;
|
|
1137
|
+
this.portletType = this.config.portletType;
|
|
1138
|
+
}
|
|
1139
|
+
/** @type {?} */
|
|
1140
|
+
var portletType = this.config.portletType === "historicalIRR"
|
|
1141
|
+
? this.config.selectedVisualType
|
|
1142
|
+
: this.config.portletType;
|
|
1143
|
+
if (["newcolumn", "newline", "newcolumnline"].includes(portletType)) {
|
|
1144
|
+
this.selectedX = this._selectedX;
|
|
1145
|
+
this.selectedY = this._selectedY;
|
|
1146
|
+
this.selectedSecondY = this._selectedSecondY;
|
|
1147
|
+
this.selectedMultiples = this._selectedMultiples;
|
|
1148
|
+
this.selectTheme = this._selectTheme;
|
|
1149
|
+
this.portletType = this.config.portletType;
|
|
1150
|
+
this.getData(this.portlet.figureCode, false);
|
|
1151
|
+
}
|
|
1152
|
+
if (this.config.portletType === "newchart") {
|
|
1153
|
+
this.portletType = "newchart";
|
|
1154
|
+
if (this.config.pvtableChartSetting) {
|
|
1155
|
+
this.chartSettings = tslib_1.__assign({}, this.config.pvtableChartSetting.chartSettings);
|
|
1156
|
+
if (this.config.pvtableChartSetting.chartSettings.palettes) {
|
|
1157
|
+
var palettes_1 = this.config.pvtableChartSetting.chartSettings.palettes;
|
|
1158
|
+
if (palettes_1 && palettes_1.length) {
|
|
1159
|
+
this.selectTheme = this.themeData.find((/**
|
|
1160
|
+
* @param {?} item
|
|
1161
|
+
* @return {?}
|
|
1162
|
+
*/
|
|
1163
|
+
function (item) {
|
|
1164
|
+
// 用于判断两个
|
|
1165
|
+
return JSON.stringify(item.value) === JSON.stringify(palettes_1);
|
|
1166
|
+
})).id;
|
|
1167
|
+
}
|
|
1168
|
+
}
|
|
1169
|
+
}
|
|
1170
|
+
else {
|
|
1171
|
+
this.config.pvtableChartSetting = {
|
|
1172
|
+
displayOption: this.displayOption,
|
|
1173
|
+
chartSettings: this.chartSettings,
|
|
1174
|
+
};
|
|
1175
|
+
}
|
|
1176
|
+
}
|
|
1177
|
+
}
|
|
1178
|
+
else {
|
|
1179
|
+
this.selectedDatamart = "";
|
|
1180
|
+
this.config = this.getConfig([]);
|
|
1181
|
+
}
|
|
1182
|
+
this.ref.markForCheck();
|
|
1183
|
+
this.ref.detectChanges();
|
|
1184
|
+
};
|
|
1185
|
+
/**
|
|
1186
|
+
* @private
|
|
1187
|
+
* @param {?} fields
|
|
1188
|
+
* @return {?}
|
|
1189
|
+
*/
|
|
1190
|
+
SidebarIconlistNewComponent.prototype.getConfig = /**
|
|
1191
|
+
* @private
|
|
1192
|
+
* @param {?} fields
|
|
1193
|
+
* @return {?}
|
|
1194
|
+
*/
|
|
1195
|
+
function (fields) {
|
|
1196
|
+
return {
|
|
1197
|
+
tabId: this.activeTabId,
|
|
1198
|
+
tabLabel: this.activeTabLabel,
|
|
1199
|
+
portletType: "",
|
|
1200
|
+
gadgetTitle: "",
|
|
1201
|
+
isUpToDate: false,
|
|
1202
|
+
period: 3,
|
|
1203
|
+
pagebreak: false,
|
|
1204
|
+
timeMeasure: "MTD",
|
|
1205
|
+
series: [],
|
|
1206
|
+
sSeries: [],
|
|
1207
|
+
trendsOrder: 1,
|
|
1208
|
+
showTrends: true,
|
|
1209
|
+
numberFormat: "#,##0",
|
|
1210
|
+
showCurrentData: false,
|
|
1211
|
+
fields: fields,
|
|
1212
|
+
allFields: [
|
|
1213
|
+
{
|
|
1214
|
+
colName: "ALL_TEXT_FIELDS",
|
|
1215
|
+
langValue: "All text fields",
|
|
1216
|
+
dataType: "string",
|
|
1217
|
+
},
|
|
1218
|
+
{
|
|
1219
|
+
colName: "ALL_DATE_FIELDS",
|
|
1220
|
+
langValue: "All date fields",
|
|
1221
|
+
dataType: "date",
|
|
1222
|
+
},
|
|
1223
|
+
{
|
|
1224
|
+
colName: "ALL_NUMBER_FIELDS",
|
|
1225
|
+
langValue: "All number fields",
|
|
1226
|
+
dataType: "number",
|
|
1227
|
+
},
|
|
1228
|
+
{
|
|
1229
|
+
colName: "ALL_INTEGER_FIELDS",
|
|
1230
|
+
langValue: "All integer fields",
|
|
1231
|
+
dataType: "integer",
|
|
1232
|
+
},
|
|
1233
|
+
{
|
|
1234
|
+
colName: "ALL_PERCENTAGE_FIELDS",
|
|
1235
|
+
langValue: "All percentage fields",
|
|
1236
|
+
dataType: "percent",
|
|
1237
|
+
},
|
|
1238
|
+
{
|
|
1239
|
+
colName: "ALL_MULTIPLE_FIELDS",
|
|
1240
|
+
langValue: "All multiple fields",
|
|
1241
|
+
dataType: "multiple",
|
|
1242
|
+
},
|
|
1243
|
+
],
|
|
1244
|
+
filters: [],
|
|
1245
|
+
filterSettings: [],
|
|
1246
|
+
columnGroup: [],
|
|
1247
|
+
listOfInvesteeId: [],
|
|
1248
|
+
investeeId: "00000000-0000-0000-0000-000000000000",
|
|
1249
|
+
groupBy: "",
|
|
1250
|
+
groups: [],
|
|
1251
|
+
asOfDate: "",
|
|
1252
|
+
currencyCode: "",
|
|
1253
|
+
fundId: "00000000-0000-0000-0000-000000000000",
|
|
1254
|
+
xaxis: { groups: [] },
|
|
1255
|
+
yaxis: {
|
|
1256
|
+
series: [{ portletType: "", colName: "", calMethod: "" }],
|
|
1257
|
+
},
|
|
1258
|
+
calculatedFieldSettings: [],
|
|
1259
|
+
columnsWidth: [],
|
|
1260
|
+
sortSettings: [],
|
|
1261
|
+
groupSettings: [],
|
|
1262
|
+
valueSortSettings: {},
|
|
1263
|
+
showGrandTotals: true,
|
|
1264
|
+
showRowGrandTotals: true,
|
|
1265
|
+
showColumnGrandTotals: true,
|
|
1266
|
+
showSubTotals: true,
|
|
1267
|
+
showRowSubTotals: true,
|
|
1268
|
+
showColumnSubTotals: true,
|
|
1269
|
+
};
|
|
1270
|
+
};
|
|
1271
|
+
Object.defineProperty(SidebarIconlistNewComponent.prototype, "frequencyOptions", {
|
|
1272
|
+
// historical IRR frequency 不需要 Daily
|
|
1273
|
+
get:
|
|
1274
|
+
// historical IRR frequency 不需要 Daily
|
|
1275
|
+
/**
|
|
1276
|
+
* @return {?}
|
|
1277
|
+
*/
|
|
1278
|
+
function () {
|
|
1279
|
+
return this.multiplesList.filter((/**
|
|
1280
|
+
* @param {?} i
|
|
1281
|
+
* @return {?}
|
|
1282
|
+
*/
|
|
1283
|
+
function (i) { return i.langCode !== "DAILY"; }));
|
|
1284
|
+
},
|
|
1285
|
+
enumerable: true,
|
|
1286
|
+
configurable: true
|
|
1287
|
+
});
|
|
1288
|
+
/**
|
|
1289
|
+
* @return {?}
|
|
1290
|
+
*/
|
|
1291
|
+
SidebarIconlistNewComponent.prototype.initHistoricalIRROptions = /**
|
|
1292
|
+
* @return {?}
|
|
1293
|
+
*/
|
|
1294
|
+
function () {
|
|
1295
|
+
/** @type {?} */
|
|
1296
|
+
var chartText = this.translation.COMPANY_CHART || ".COMPANY_CHART";
|
|
1297
|
+
this.investorList = [
|
|
1298
|
+
{
|
|
1299
|
+
code: "All",
|
|
1300
|
+
text: this.translation.ALL,
|
|
1301
|
+
},
|
|
1302
|
+
{
|
|
1303
|
+
code: "ExcludeGP&SLP",
|
|
1304
|
+
text: this.translation["EXCLUDE_GP&SLP"] || ".Exclude GP&SLP",
|
|
1305
|
+
},
|
|
1306
|
+
];
|
|
1307
|
+
this.visualTypeList = [
|
|
1308
|
+
{
|
|
1309
|
+
code: "newline",
|
|
1310
|
+
text: (this.translation.LINE || ".LINE") + " " + chartText,
|
|
1311
|
+
},
|
|
1312
|
+
{
|
|
1313
|
+
code: "newcolumn",
|
|
1314
|
+
text: this.translation.COLUMN + " " + chartText,
|
|
1315
|
+
},
|
|
1316
|
+
{
|
|
1317
|
+
code: "table",
|
|
1318
|
+
text: this.translation.TABLE || ".TABLE",
|
|
1319
|
+
},
|
|
1320
|
+
];
|
|
1321
|
+
};
|
|
1322
|
+
/**
|
|
1323
|
+
* @return {?}
|
|
1324
|
+
*/
|
|
1325
|
+
SidebarIconlistNewComponent.prototype.onSelectedHistoricalIRRPortlet = /**
|
|
1326
|
+
* @return {?}
|
|
1327
|
+
*/
|
|
1328
|
+
function () {
|
|
1329
|
+
this.selectedInvestor = "All";
|
|
1330
|
+
this.selectedMultiples = "QUARTERLY";
|
|
1331
|
+
this.selectedVisualType = "newline";
|
|
1332
|
+
this.setHistoricalIRRChart(false);
|
|
1333
|
+
};
|
|
1334
|
+
/**
|
|
1335
|
+
* @param {?} opened
|
|
1336
|
+
* @return {?}
|
|
1337
|
+
*/
|
|
1338
|
+
SidebarIconlistNewComponent.prototype.setHistoricalIRRChart = /**
|
|
1339
|
+
* @param {?} opened
|
|
1340
|
+
* @return {?}
|
|
1341
|
+
*/
|
|
1342
|
+
function (opened) {
|
|
1343
|
+
if (opened) {
|
|
1344
|
+
return;
|
|
1345
|
+
}
|
|
1346
|
+
if (this.selectedVisualType !== "table" &&
|
|
1347
|
+
this.config.selectedVisualType === "table") {
|
|
1348
|
+
this.hasMarker = false;
|
|
1349
|
+
}
|
|
1350
|
+
this.config.selectedVisualType = this.selectedVisualType;
|
|
1351
|
+
this.config.selectedInvestor = this.selectedInvestor;
|
|
1352
|
+
if (this.selectedVisualType !== "table") {
|
|
1353
|
+
// 这里确定 x、y 轴字段名称
|
|
1354
|
+
this.selectedX = "Date";
|
|
1355
|
+
this.selectedY = ["IRR"];
|
|
1356
|
+
return this.xyChange(false);
|
|
1357
|
+
}
|
|
1358
|
+
else {
|
|
1359
|
+
this.config.selectedMultiples = this.selectedMultiples;
|
|
1360
|
+
this.AddOrEditPortlet();
|
|
1361
|
+
}
|
|
1362
|
+
};
|
|
1363
|
+
/**
|
|
1364
|
+
* @param {?} e
|
|
1365
|
+
* @return {?}
|
|
1366
|
+
*/
|
|
1367
|
+
SidebarIconlistNewComponent.prototype.labelConfigChange = /**
|
|
1368
|
+
* @param {?} e
|
|
1369
|
+
* @return {?}
|
|
1370
|
+
*/
|
|
1371
|
+
function (e) {
|
|
1372
|
+
this.config.hasMarker = e;
|
|
1373
|
+
this.updatePorletConfig.emit({
|
|
1374
|
+
newId: this.portlet.newId,
|
|
1375
|
+
config: Object.assign({}, this.config),
|
|
1376
|
+
});
|
|
1377
|
+
this.dashboardService.switchLabelConfig.next({
|
|
1378
|
+
checked: e,
|
|
1379
|
+
id: this.portlet.newId,
|
|
1380
|
+
});
|
|
1381
|
+
};
|
|
1382
|
+
/**
|
|
1383
|
+
* @param {?} e
|
|
1384
|
+
* @return {?}
|
|
1385
|
+
*/
|
|
1386
|
+
SidebarIconlistNewComponent.prototype.xyChange = /**
|
|
1387
|
+
* @param {?} e
|
|
1388
|
+
* @return {?}
|
|
1389
|
+
*/
|
|
1390
|
+
function (e) {
|
|
1391
|
+
var _this = this;
|
|
1392
|
+
if (e) {
|
|
1393
|
+
return;
|
|
1394
|
+
}
|
|
1395
|
+
setTimeout((/**
|
|
1396
|
+
* @return {?}
|
|
1397
|
+
*/
|
|
1398
|
+
function () {
|
|
1399
|
+
_this.updateTheme.emit({
|
|
1400
|
+
selectedX: _this.selectedX,
|
|
1401
|
+
selectedY: _this.selectedY,
|
|
1402
|
+
selectedMultiples: _this.selectedMultiples,
|
|
1403
|
+
selectedSecondY: _this.selectedSecondY,
|
|
1404
|
+
selectTheme: _this.selectTheme,
|
|
1405
|
+
hasMarker: _this.hasMarker,
|
|
1406
|
+
markerFormat: _this.markerFormat,
|
|
1407
|
+
});
|
|
1408
|
+
_this.config["markerFormat"] = _this.markerFormat;
|
|
1409
|
+
_this.config["hasMarker"] = _this.hasMarker;
|
|
1410
|
+
_this.config["selectedX"] = _this.selectedX;
|
|
1411
|
+
_this.config["selectedY"] = _this.selectedY;
|
|
1412
|
+
_this.config["selectedSecondY"] = _this.selectedSecondY;
|
|
1413
|
+
_this.config["selectedMultiples"] = _this.selectedMultiples;
|
|
1414
|
+
_this.config["selectTheme"] = _this.selectTheme;
|
|
1415
|
+
_this.updatePorletConfig.emit({
|
|
1416
|
+
newId: _this.portlet.newId,
|
|
1417
|
+
config: Object.assign({}, _this.config),
|
|
1418
|
+
});
|
|
1419
|
+
_this.showEdit();
|
|
1420
|
+
}), 500);
|
|
1421
|
+
};
|
|
1422
|
+
/**
|
|
1423
|
+
* @return {?}
|
|
1424
|
+
*/
|
|
1425
|
+
SidebarIconlistNewComponent.prototype.showEdit = /**
|
|
1426
|
+
* @return {?}
|
|
1427
|
+
*/
|
|
1428
|
+
function () {
|
|
1429
|
+
if (this.portletType == "newcolumnline" &&
|
|
1430
|
+
this.selectedY.length > 0 &&
|
|
1431
|
+
this.selectedSecondY.length > 0) {
|
|
1432
|
+
this.AddOrEditPortlet();
|
|
1433
|
+
}
|
|
1434
|
+
if (this.portletType != "newcolumnline" && this.selectedY.length > 0) {
|
|
1435
|
+
this.AddOrEditPortlet();
|
|
1436
|
+
}
|
|
1437
|
+
};
|
|
1438
|
+
/**
|
|
1439
|
+
* @return {?}
|
|
1440
|
+
*/
|
|
1441
|
+
SidebarIconlistNewComponent.prototype.getmultiplesList = /**
|
|
1442
|
+
* @return {?}
|
|
1443
|
+
*/
|
|
1444
|
+
function () {
|
|
1445
|
+
var _this = this;
|
|
1446
|
+
/** @type {?} */
|
|
1447
|
+
var url = this.appCode === "PMS"
|
|
1448
|
+
? this.api.urlList.LPGetPropertyList
|
|
1449
|
+
: this.api.urlList.GetPropertyList;
|
|
1450
|
+
this.http.post(url, { scope: "DASHBOARD_FREQUENCY", langIdx: 2 }, (/**
|
|
1451
|
+
* @param {?} res
|
|
1452
|
+
* @return {?}
|
|
1453
|
+
*/
|
|
1454
|
+
function (res) {
|
|
1455
|
+
_this.multiplesList = res;
|
|
1456
|
+
}));
|
|
1457
|
+
};
|
|
1458
|
+
/**
|
|
1459
|
+
* @param {?} str
|
|
1460
|
+
* @return {?}
|
|
1461
|
+
*/
|
|
1462
|
+
SidebarIconlistNewComponent.prototype.capitalize = /**
|
|
1463
|
+
* @param {?} str
|
|
1464
|
+
* @return {?}
|
|
1465
|
+
*/
|
|
1466
|
+
function (str) {
|
|
1467
|
+
// 将字符串转换为小写,并使用正则表达式将每个单词的第一个字符转换为大写
|
|
1468
|
+
if (!str) {
|
|
1469
|
+
return;
|
|
1470
|
+
}
|
|
1471
|
+
return str.toLowerCase().replace(/\b\w/g, (/**
|
|
1472
|
+
* @param {?} char
|
|
1473
|
+
* @return {?}
|
|
1474
|
+
*/
|
|
1475
|
+
function (char) {
|
|
1476
|
+
return char.toUpperCase();
|
|
1477
|
+
}));
|
|
1478
|
+
};
|
|
1479
|
+
/**
|
|
1480
|
+
* @return {?}
|
|
1481
|
+
*/
|
|
1482
|
+
SidebarIconlistNewComponent.prototype.getSelectDatamartId = /**
|
|
1483
|
+
* @return {?}
|
|
1484
|
+
*/
|
|
1485
|
+
function () {
|
|
1486
|
+
// 获取真正的DatamartID
|
|
1487
|
+
/** @type {?} */
|
|
1488
|
+
var code = this.getTrueSelectedDatamart();
|
|
1489
|
+
/** @type {?} */
|
|
1490
|
+
var dataMartTables = this.dashboardPorletsService.dataMartTables[this.dashboard.id].filter((/**
|
|
1491
|
+
* @param {?} el
|
|
1492
|
+
* @return {?}
|
|
1493
|
+
*/
|
|
1494
|
+
function (el) { return code == el.datamartCode; }));
|
|
1495
|
+
if (dataMartTables.length > 0) {
|
|
1496
|
+
return dataMartTables[0].id;
|
|
1497
|
+
}
|
|
1498
|
+
};
|
|
1499
|
+
/**
|
|
1500
|
+
* @return {?}
|
|
1501
|
+
*/
|
|
1502
|
+
SidebarIconlistNewComponent.prototype.getTrueSelectedDatamart = /**
|
|
1503
|
+
* @return {?}
|
|
1504
|
+
*/
|
|
1505
|
+
function () {
|
|
1506
|
+
/** @type {?} */
|
|
1507
|
+
var portletType = this.config.portletType === "historicalIRR"
|
|
1508
|
+
? this.config.selectedVisualType
|
|
1509
|
+
: this.config.portletType;
|
|
1510
|
+
// 获取真正的DatamartCode
|
|
1511
|
+
if (["newcolumn", "newline", "newcolumnline"].includes(portletType)) {
|
|
1512
|
+
return this.getSelectDatamartCode();
|
|
1513
|
+
}
|
|
1514
|
+
else {
|
|
1515
|
+
return this.selectedDatamart;
|
|
1516
|
+
}
|
|
1517
|
+
};
|
|
1518
|
+
/**
|
|
1519
|
+
* @return {?}
|
|
1520
|
+
*/
|
|
1521
|
+
SidebarIconlistNewComponent.prototype.getSelectDatamartCode = /**
|
|
1522
|
+
* @return {?}
|
|
1523
|
+
*/
|
|
1524
|
+
function () {
|
|
1525
|
+
var _this = this;
|
|
1526
|
+
/** @type {?} */
|
|
1527
|
+
var item = this.dashboardPorletsService.dataMartTables[this.dashboard.id].filter((/**
|
|
1528
|
+
* @param {?} e
|
|
1529
|
+
* @return {?}
|
|
1530
|
+
*/
|
|
1531
|
+
function (e) {
|
|
1532
|
+
return e["datamartCode"] == _this.selectedDatamart;
|
|
1533
|
+
}));
|
|
1534
|
+
if (item.length > 0) {
|
|
1535
|
+
if (item[0]["prefix"]) {
|
|
1536
|
+
return "" + item[0]["prefix"] + (this.capitalize(this.selectedMultiples) || "");
|
|
1537
|
+
}
|
|
1538
|
+
else {
|
|
1539
|
+
return item[0]["datamartCode"];
|
|
1540
|
+
}
|
|
1541
|
+
}
|
|
1542
|
+
else {
|
|
1543
|
+
return "";
|
|
1544
|
+
}
|
|
1545
|
+
};
|
|
1546
|
+
/**
|
|
1547
|
+
* @param {?} e
|
|
1548
|
+
* @param {?} type
|
|
1549
|
+
* @return {?}
|
|
1550
|
+
*/
|
|
1551
|
+
SidebarIconlistNewComponent.prototype.changeTheme = /**
|
|
1552
|
+
* @param {?} e
|
|
1553
|
+
* @param {?} type
|
|
1554
|
+
* @return {?}
|
|
1555
|
+
*/
|
|
1556
|
+
function (e, type) {
|
|
1557
|
+
this.selectTheme = e.value;
|
|
1558
|
+
this.config["selectTheme"] = this.selectTheme;
|
|
1559
|
+
this.updateTheme.emit({
|
|
1560
|
+
selectedX: this.selectedX,
|
|
1561
|
+
selectedY: this.selectedY,
|
|
1562
|
+
selectedMultiples: this.selectedMultiples,
|
|
1563
|
+
selectedSecondY: this.selectedSecondY,
|
|
1564
|
+
selectTheme: this.selectTheme,
|
|
1565
|
+
});
|
|
1566
|
+
this.showEdit();
|
|
1567
|
+
};
|
|
1568
|
+
/**
|
|
1569
|
+
* @param {?} data
|
|
1570
|
+
* @return {?}
|
|
1571
|
+
*/
|
|
1572
|
+
SidebarIconlistNewComponent.prototype.sortDataMartTables = /**
|
|
1573
|
+
* @param {?} data
|
|
1574
|
+
* @return {?}
|
|
1575
|
+
*/
|
|
1576
|
+
function (data) {
|
|
1577
|
+
data.sort((/**
|
|
1578
|
+
* @param {?} a
|
|
1579
|
+
* @param {?} b
|
|
1580
|
+
* @return {?}
|
|
1581
|
+
*/
|
|
1582
|
+
function (a, b) {
|
|
1583
|
+
/** @type {?} */
|
|
1584
|
+
var langValueA = a.langValue.toLowerCase();
|
|
1585
|
+
/** @type {?} */
|
|
1586
|
+
var langValueB = b.langValue.toLowerCase();
|
|
1587
|
+
if (langValueA < langValueB) {
|
|
1588
|
+
return -1;
|
|
1589
|
+
}
|
|
1590
|
+
if (langValueA > langValueB) {
|
|
1591
|
+
return 1;
|
|
1592
|
+
}
|
|
1593
|
+
return 0;
|
|
1594
|
+
}));
|
|
1595
|
+
};
|
|
1596
|
+
/**
|
|
1597
|
+
* @return {?}
|
|
1598
|
+
*/
|
|
1599
|
+
SidebarIconlistNewComponent.prototype.onChangeFormat = /**
|
|
1600
|
+
* @return {?}
|
|
1601
|
+
*/
|
|
1602
|
+
function () {
|
|
1603
|
+
this.dashboardService.markerFormat.next({
|
|
1604
|
+
newId: this.portlet.newId,
|
|
1605
|
+
markerFormat: this.markerFormat,
|
|
1606
|
+
});
|
|
1607
|
+
};
|
|
1608
|
+
SidebarIconlistNewComponent.decorators = [
|
|
1609
|
+
{ type: Component, args: [{
|
|
1610
|
+
selector: "kt-sidebar-iconlist-new",
|
|
1611
|
+
template: "<div class=\"sidebar-iconlist\" *ngIf=\"config\">\r\n <ul class=\"nav-tabs\">\r\n <li class=\"nav-item\">\r\n <a\r\n class=\"nav-link\"\r\n [ngClass]=\"{ active: currentTab === 'tab1' }\"\r\n data-toggle=\"tab\"\r\n (click)=\"switchTab('tab1')\"\r\n >\r\n <img\r\n style=\"margin-right: 8px\"\r\n src=\"../../../assets/img/dashboard_icon/basic-icon-filter.svg\"\r\n />\r\n <div class=\"tab-name\">\r\n {{ translation.FILTER ? translation.FILTER : \".FILTER\" }}\r\n </div>\r\n </a>\r\n </li>\r\n <li class=\"nav-item\">\r\n <a\r\n class=\"nav-link\"\r\n [ngClass]=\"{ active: currentTab === 'tab2' }\"\r\n data-toggle=\"tab\"\r\n (click)=\"switchTab('tab2')\"\r\n >\r\n <img\r\n style=\"margin-right: 8px\"\r\n src=\"../../../assets/img/dashboard_icon/dashboard-icon.svg\"\r\n />\r\n <div class=\"tab-name\">\r\n {{ translation.PROPERTIES ? translation.PROPERTIES : \".PROPERTIES\" }}\r\n </div>\r\n </a>\r\n </li>\r\n </ul>\r\n <div class=\"sidebar-iconlist-content\">\r\n <!-- <form action=\"\" method=\"\"> -->\r\n <div\r\n class=\"tab-content\"\r\n style=\"height: calc(100% - 140px); overflow-y: scroll\"\r\n >\r\n <div class=\"tab-pane\" *ngIf=\"currentTab === 'tab1'\" style=\"height: 100%\">\r\n <kt-field-filter\r\n [portlet]=\"portlet\"\r\n [dashboard]=\"dashboard\"\r\n [portlets]=\"portlets\"\r\n (updatePorletConfig)=\"_updatePorletConfig($event)\"\r\n ></kt-field-filter>\r\n </div>\r\n <div class=\"tab-pane\" *ngIf=\"currentTab === 'tab2'\">\r\n <div>\r\n <div (click)=\"nextWizard(0)\" class=\"wizard\">\r\n <span class=\"wizard-name\">\r\n {{\r\n translation.DATA_TABLE ? translation.DATA_TABLE : \"Data Table\"\r\n }}*\r\n </span>\r\n <mat-icon style=\"position: absolute; right: 0\">\r\n {{ !expandArray[0] ? \"expand_more\" : \"expand_less\" }}\r\n </mat-icon>\r\n </div>\r\n <div\r\n [ngStyle]=\"{ height: expandArray[0] ? '100px' : '0' }\"\r\n [ngClass]=\"{ collapsed: !expandArray[0] }\"\r\n class=\"wizard-expanded\"\r\n >\r\n <div class=\"data-source add-pdding\">\r\n <div style=\"margin-bottom: 10px\" class=\"twelvepx\">\r\n {{\r\n translation.FIRST_CHOOSE_THE_DATA_TABLE_TO_CUSTOMIZE_YOUR_DASHBOARD\r\n ? translation.FIRST_CHOOSE_THE_DATA_TABLE_TO_CUSTOMIZE_YOUR_DASHBOARD\r\n : \"Firstly, choose the data table to customize your dashboard\"\r\n }}\r\n </div>\r\n <div class=\"twelvepx\">\r\n <mat-select\r\n class=\"datamart-select\"\r\n [(ngModel)]=\"selectedDatamart\"\r\n (selectionChange)=\"changeDataTable($event.value)\"\r\n >\r\n <ng-container *ngFor=\"let datatable of dataMartTableList\">\r\n <!-- *ngIf=\"!datatable.isHide\" -->\r\n <mat-option [value]=\"datatable.datamartCode\">\r\n {{\r\n translation[datatable.langCode] || datatable.langCode\r\n }}\r\n </mat-option>\r\n </ng-container>\r\n </mat-select>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"getFigurecode()\" (click)=\"nextWizard(2)\" class=\"wizard\">\r\n <span class=\"wizard-name\"\r\n >{{\r\n translation.PORTLET_TYPE\r\n ? translation.PORTLET_TYPE\r\n : \".PORTLET_TYPE\"\r\n }}*</span\r\n >\r\n <mat-icon class=\"wizard-icon\">{{\r\n !expandArray[2] ? \"expand_more\" : \"expand_less\"\r\n }}</mat-icon>\r\n </div>\r\n <!-- \u56FE\u8868\u7C7B\u578B\u9009\u62E9 -->\r\n <div\r\n *ngIf=\"getFigurecode()\"\r\n [ngClass]=\"{ collapsed: !expandArray[2] }\"\r\n class=\"wizard-expanded portlets\"\r\n >\r\n <kt-portlet-type-new\r\n [portlet]=\"portlet\"\r\n [dashboard]=\"dashboard\"\r\n [dataMartCode]=\"selectedDatamart\"\r\n (portletType)=\"getPortletType($event)\"\r\n >\r\n </kt-portlet-type-new>\r\n </div>\r\n\r\n <!-- new dashboard \u5E76\u4E14\u9009\u62E9\u56FE\u6807\u7C7B\u578B \u624D\u6709\u7684\u4F9B\u4E09\u4E2A\u56FE\u8868\u9009\u62E9\u7684X\u8F74Y\u8F74 -->\r\n <ng-container\r\n *ngIf=\"\r\n ['newcolumn', 'newline', 'newcolumnline'].includes(portletType)\r\n \"\r\n >\r\n <div class=\"wizard\" (click)=\"nextWizard(7)\">\r\n <span class=\"wizard-name\"\r\n >{{ translation.CONFIGURATIONS || \".CONFIGURATIONS\" }}*</span\r\n >\r\n <mat-icon class=\"wizard-icon\">{{\r\n !expandArray[7] ? \"expand_more\" : \"expand_less\"\r\n }}</mat-icon>\r\n </div>\r\n\r\n <!-- \u56FE\u6807\u914D\u7F6E\u9879 configuration -->\r\n <div\r\n [ngClass]=\"{ collapsed: !expandArray[7] }\"\r\n class=\"wizard-expanded config\"\r\n >\r\n <div style=\"padding-left: 18px\">\r\n <div style=\"margin-bottom: 10px\" class=\"twelvepx\">\r\n {{ translation.COLORS || \".COLORS\" }}\r\n </div>\r\n\r\n <ejs-dropdownlist\r\n style=\"margin-bottom: 10px\"\r\n id=\"employees\"\r\n [dataSource]=\"themeData\"\r\n [allowFiltering]=\"true\"\r\n [filterType]=\"'Contains'\"\r\n [itemTemplate]=\"itemTemplate\"\r\n [valueTemplate]=\"valueTemplate\"\r\n [fields]=\"themeFields\"\r\n [value]=\"selectTheme\"\r\n (change)=\"changeTheme($event, 'theme')\"\r\n class=\"color-ipt\"\r\n >\r\n <ng-template #itemTemplate let-data>\r\n <div class=\"color-box\">\r\n <div\r\n *ngFor=\"let i of data.value\"\r\n class=\"color-item\"\r\n [ngStyle]=\"{\r\n 'background-color': i\r\n }\"\r\n ></div>\r\n </div>\r\n </ng-template>\r\n <ng-template #valueTemplate let-data>\r\n <div class=\"color-box\">\r\n <div\r\n *ngFor=\"let item of data.value\"\r\n class=\"color-item\"\r\n [ngStyle]=\"{\r\n 'background-color': item\r\n }\"\r\n ></div>\r\n </div>\r\n </ng-template>\r\n </ejs-dropdownlist>\r\n\r\n <div style=\"margin-bottom: 10px\" class=\"twelvepx\">\r\n {{ translation.X_AXIS || \".X-AXIS\" }}\r\n </div>\r\n\r\n <mat-select\r\n [(value)]=\"selectedX\"\r\n (openedChange)=\"xyChange($event)\"\r\n class=\"datamart-select\"\r\n >\r\n <ng-container *ngFor=\"let i of yList\">\r\n <mat-option\r\n *ngIf=\"!i.isCalculatedField\"\r\n [value]=\"i.colName\"\r\n >{{\r\n (translation[i.langCode]\r\n ? translation[i.langCode]\r\n : \".\" + i.langCode) +\r\n (i.addtionName ? \" \" + i.addtionName : \"\")\r\n }}</mat-option\r\n >\r\n </ng-container>\r\n </mat-select>\r\n\r\n <ng-container *ngIf=\"selectedX\">\r\n <div style=\"margin-bottom: 10px\" class=\"twelvepx\">\r\n {{ translation.FREQUENCY || \".FREQUENCY\" }}\r\n </div>\r\n\r\n <mat-select\r\n [(value)]=\"selectedMultiples\"\r\n (openedChange)=\"xyChange($event)\"\r\n class=\"datamart-select\"\r\n >\r\n <mat-option\r\n *ngFor=\"let i of multiplesList\"\r\n [value]=\"i.langCode\"\r\n >{{\r\n i.addtionName\r\n ? i.addtionName + \"\" + translation[i.langCode]\r\n : translation[i.langCode]\r\n }}</mat-option\r\n >\r\n </mat-select>\r\n </ng-container>\r\n\r\n <div style=\"margin-bottom: 10px\" class=\"twelvepx\">\r\n {{\r\n portletType === \"newcolumnline\"\r\n ? (translation.COLUMN ? translation.COLUMN + \" \" : \"\") +\r\n (translation.Y_AXIS || \".COLUMN Y-AXIS\")\r\n : translation.Y_AXIS || \".Y-AXIS\"\r\n }}\r\n </div>\r\n\r\n <mat-select\r\n multiple\r\n [(value)]=\"selectedY\"\r\n (openedChange)=\"xyChange($event)\"\r\n class=\"datamart-select\"\r\n >\r\n <ng-container *ngFor=\"let i of yList\">\r\n <mat-option\r\n *ngIf=\"!i.isCalculatedField\"\r\n [value]=\"i.colName\"\r\n >{{\r\n (translation[i.langCode]\r\n ? translation[i.langCode]\r\n : \".\" + i.langCode) +\r\n (i.addtionName ? \" \" + i.addtionName : \"\")\r\n }}</mat-option\r\n >\r\n </ng-container>\r\n </mat-select>\r\n\r\n <div\r\n style=\"margin-bottom: 10px\"\r\n class=\"twelvepx\"\r\n *ngIf=\"portletType == 'newcolumnline'\"\r\n >\r\n {{\r\n (translation.LINE ? translation.LINE + \" \" : \"\") +\r\n (translation.Y_AXIS || \".LINE Y-AXIS\")\r\n }}\r\n </div>\r\n\r\n <mat-select\r\n multiple\r\n class=\"datamart-select\"\r\n [(value)]=\"selectedSecondY\"\r\n (openedChange)=\"xyChange($event)\"\r\n panelClass=\"mat-select-multi-panel\"\r\n *ngIf=\"portletType == 'newcolumnline'\"\r\n >\r\n <ng-container *ngFor=\"let i of yList\">\r\n <mat-option\r\n *ngIf=\"!i.isCalculatedField\"\r\n [value]=\"i.colName\"\r\n >{{\r\n (translation[i.langCode]\r\n ? translation[i.langCode]\r\n : \".\" + i.langCode) +\r\n (i.addtionName ? \" \" + i.addtionName : \"\")\r\n }}</mat-option\r\n >\r\n </ng-container>\r\n </mat-select>\r\n\r\n <div class=\"data-label-content\">\r\n <div class=\"label\">\r\n {{ translation.DATA_LABEL || \".Data labels\" }}\r\n </div>\r\n <ejs-switch\r\n [(ngModel)]=\"hasMarker\"\r\n (ngModelChange)=\"labelConfigChange($event)\"\r\n ></ejs-switch>\r\n </div>\r\n\r\n <div style=\"margin: 10px 0\" class=\"twelvepx\">\r\n {{ translation.DISPLAY_UNITS || \".Display Units\" }}\r\n </div>\r\n\r\n <mat-select\r\n class=\"datamart-select\"\r\n [(ngModel)]=\"markerFormat\"\r\n (ngModelChange)=\"onChangeFormat()\"\r\n >\r\n <ng-container *ngFor=\"let format of markerFormatList\">\r\n <mat-option [value]=\"format.value\">{{\r\n format.label\r\n }}</mat-option>\r\n </ng-container>\r\n </mat-select>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <!-- historical IRR \u4E13\u7528 -->\r\n <ng-container *ngIf=\"['historicalIRR'].includes(portletType)\">\r\n <div class=\"wizard\" (click)=\"nextWizard(7)\">\r\n <span class=\"wizard-name\"\r\n >{{ translation.CONFIGURATIONS || \"CONFIGURATIONS\" }}*</span\r\n >\r\n <mat-icon class=\"wizard-icon\">{{\r\n !expandArray[7] ? \"expand_more\" : \"expand_less\"\r\n }}</mat-icon>\r\n </div>\r\n\r\n <!-- \u56FE\u6807\u914D\u7F6E\u9879 configuration -->\r\n <div\r\n [ngClass]=\"{ collapsed: !expandArray[7] }\"\r\n class=\"wizard-expanded config\"\r\n >\r\n <div style=\"padding-left: 18px\">\r\n <div style=\"margin-bottom: 10px\" class=\"twelvepx\">\r\n {{ translation.COLORS || \".COLORS\" }}\r\n </div>\r\n\r\n <ejs-dropdownlist\r\n style=\"margin-bottom: 10px\"\r\n id=\"employees\"\r\n [dataSource]=\"themeData\"\r\n [allowFiltering]=\"true\"\r\n [filterType]=\"'Contains'\"\r\n [itemTemplate]=\"itemTemplate\"\r\n [valueTemplate]=\"valueTemplate\"\r\n [fields]=\"themeFields\"\r\n [value]=\"selectTheme\"\r\n (change)=\"changeTheme($event, 'theme')\"\r\n class=\"color-ipt\"\r\n >\r\n <ng-template #itemTemplate let-data>\r\n <div class=\"color-box\">\r\n <div\r\n *ngFor=\"let i of data.value\"\r\n class=\"color-item\"\r\n [ngStyle]=\"{\r\n 'background-color': i\r\n }\"\r\n ></div>\r\n </div>\r\n </ng-template>\r\n <ng-template #valueTemplate let-data>\r\n <div class=\"color-box\">\r\n <div\r\n *ngFor=\"let item of data.value\"\r\n class=\"color-item\"\r\n [ngStyle]=\"{\r\n 'background-color': item\r\n }\"\r\n ></div>\r\n </div>\r\n </ng-template>\r\n </ejs-dropdownlist>\r\n\r\n <div style=\"margin-bottom: 10px\" class=\"twelvepx\">\r\n {{ translation.FREQUENCY || \".FREQUENCY\" }}\r\n </div>\r\n\r\n <!-- Frequency: Yearly/Quarterly(default)/Monthly -->\r\n <mat-select\r\n [(value)]=\"selectedMultiples\"\r\n (openedChange)=\"setHistoricalIRRChart($event)\"\r\n class=\"datamart-select\"\r\n >\r\n <mat-option\r\n *ngFor=\"let i of frequencyOptions\"\r\n [value]=\"i.langCode\"\r\n >\r\n {{ (i.addtionName || \"\") + translation[i.langCode] }}\r\n </mat-option>\r\n </mat-select>\r\n\r\n <!-- Fund cashflow IRR ( fund ops settlement) \u53EF\u9009\u62E9 -->\r\n <ng-container\r\n *ngIf=\"\r\n ['FundHistoricalCashflowIRR'].includes(selectedDatamart)\r\n \"\r\n >\r\n <div style=\"margin-bottom: 10px\" class=\"twelvepx\">\r\n Investors\r\n </div>\r\n <!-- Investors: All/exclude GP&SLP -->\r\n <mat-select\r\n [(value)]=\"selectedInvestor\"\r\n (openedChange)=\"setHistoricalIRRChart($event)\"\r\n class=\"datamart-select\"\r\n >\r\n <mat-option\r\n *ngFor=\"let item of investorList\"\r\n [value]=\"item.code\"\r\n >\r\n {{ item.text }}\r\n </mat-option>\r\n </mat-select>\r\n </ng-container>\r\n\r\n <!-- line \u548C bar \u56FE x \u8F74\u4E3A date\uFF0Cy \u8F74\u4E3A IRR \u767E\u5206\u6570 -->\r\n <div style=\"margin-bottom: 10px\" class=\"twelvepx\">\r\n {{ translation.VISUAL_TYPE || \".VISUAL_TYPE\" }}\r\n </div>\r\n <!-- Visual Type: Line(default)/Column Chart/Table -->\r\n <mat-select\r\n [(value)]=\"selectedVisualType\"\r\n (openedChange)=\"setHistoricalIRRChart($event)\"\r\n class=\"datamart-select\"\r\n >\r\n <mat-option\r\n *ngFor=\"let item of visualTypeList\"\r\n [value]=\"item.code\"\r\n >\r\n {{ item.text }}\r\n </mat-option>\r\n </mat-select>\r\n <div\r\n class=\"data-label-content\"\r\n *ngIf=\"selectedVisualType !== 'table'\"\r\n >\r\n <div class=\"label\">\r\n {{ translation.DATA_LABEL || \".Data labels\" }}\r\n </div>\r\n <ejs-switch\r\n [checked]=\"true\"\r\n [(ngModel)]=\"hasMarker\"\r\n (ngModelChange)=\"labelConfigChange($event)\"\r\n ></ejs-switch>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <div class=\"wizard\" (click)=\"nextWizard(3)\">\r\n <span class=\"wizard-name\"\r\n >{{\r\n translation.GENERAL_OPTIONS\r\n ? translation.GENERAL_OPTIONS\r\n : \".GENERAL_OPTIONS\"\r\n }}*</span\r\n >\r\n <mat-icon class=\"wizard-icon\">{{\r\n !expandArray[3] ? \"expand_more\" : \"expand_less\"\r\n }}</mat-icon>\r\n </div>\r\n <div\r\n class=\"dialog-content\"\r\n [ngClass]=\"{ collapsed: !expandArray[3] }\"\r\n *ngIf=\"portletType !== 'newchart'\"\r\n >\r\n <div class=\"condition-item\">\r\n <div class=\"title\">\r\n {{ translation.GADGET_TITLE || \".GADGET_TITLE\" }}\r\n </div>\r\n <input\r\n matInput\r\n #message\r\n maxlength=\"256\"\r\n (ngModelChange)=\"gadgetTitleChange($event)\"\r\n [(ngModel)]=\"config.gadgetTitle\"\r\n autocomplete=\"off\"\r\n />\r\n </div>\r\n </div>\r\n <div\r\n class=\"dialog-content\"\r\n [ngClass]=\"{ collapsed: !expandArray[3] }\"\r\n *ngIf=\"portletType === 'newchart'\"\r\n >\r\n <div class=\"condition-item\">\r\n <div class=\"title\">\r\n {{ translation.GADGET_TITLE || \".GADGET_TITLE\" }}\r\n </div>\r\n <input\r\n matInput\r\n #message\r\n maxlength=\"256\"\r\n (ngModelChange)=\"gadgetTitleChange($event)\"\r\n [(ngModel)]=\"config.gadgetTitle\"\r\n autocomplete=\"off\"\r\n />\r\n </div>\r\n <div class=\"condition-item\">\r\n <div class=\"title\">\r\n {{ translation.CHARTTYPE || \".CHARTTYPE\" }}\r\n </div>\r\n <mat-select\r\n [placeholder]=\"translation.SELECT_A_TYPE || 'Select a type'\"\r\n [(ngModel)]=\"chartSettings.chartSeries.type\"\r\n (selectionChange)=\"setChartType()\"\r\n >\r\n <mat-option *ngFor=\"let item of chartTypeList\" [value]=\"item\">\r\n {{ translation[\"chart_\" + item] || item }}\r\n </mat-option>\r\n </mat-select>\r\n </div>\r\n <div class=\"condition-item flex\">\r\n <ejs-checkbox\r\n [label]=\"translation.MULTIPLE_AXIS || '.MULTIPLE_AXIS'\"\r\n [(ngModel)]=\"chartSettings.enableMultipleAxis\"\r\n (change)=\"setMultipleAxis($event)\"\r\n ></ejs-checkbox>\r\n <ejs-checkbox\r\n [disabled]=\"!chartSettings.enableMultipleAxis\"\r\n [label]=\"translation.SHOW_LEGEND || '.SHOW_LEGEND'\"\r\n (change)=\"setMultipleAxis($event)\"\r\n [(ngModel)]=\"chartSettings.legendSettings.visible\"\r\n ></ejs-checkbox>\r\n </div>\r\n <div class=\"condition-item\">\r\n <div class=\"title\">\r\n {{ translation.MULTIPLE_AXIS_MODE || \".MULTIPLE_AXIS_MODE\" }}\r\n </div>\r\n <mat-select\r\n [placeholder]=\"translation.SELECT_A_MODE || '.SELECT_A_MODE'\"\r\n (selectionChange)=\"setMultipleAxis($event.value)\"\r\n [(ngModel)]=\"chartSettings.multipleAxisMode\"\r\n [disabled]=\"!chartSettings.enableMultipleAxis\"\r\n >\r\n <mat-option\r\n *ngFor=\"let item of multipleAxisModeList\"\r\n [value]=\"item\"\r\n >\r\n {{ translation[\"chart_\" + item] || item }}\r\n </mat-option>\r\n </mat-select>\r\n </div>\r\n <div class=\"condition-item\">\r\n <div class=\"title\">\r\n {{ translation.COLORS || \".COLORS\" }}\r\n </div>\r\n\r\n <ejs-dropdownlist\r\n id=\"employees\"\r\n [dataSource]=\"themeData\"\r\n [allowFiltering]=\"true\"\r\n [filterType]=\"'Contains'\"\r\n [itemTemplate]=\"itemTemplate\"\r\n [valueTemplate]=\"valueTemplate\"\r\n [fields]=\"themeFields\"\r\n [value]=\"selectTheme\"\r\n (change)=\"getThemeData($event)\"\r\n class=\"color-ipt\"\r\n >\r\n <ng-template #itemTemplate let-data>\r\n <div class=\"color-box\">\r\n <div\r\n *ngFor=\"let i of data.value\"\r\n class=\"color-item\"\r\n [ngStyle]=\"{\r\n 'background-color': i\r\n }\"\r\n ></div>\r\n </div>\r\n </ng-template>\r\n <ng-template #valueTemplate let-data>\r\n <div class=\"color-box\">\r\n <div\r\n *ngFor=\"let item of data.value\"\r\n class=\"color-item\"\r\n [ngStyle]=\"{\r\n 'background-color': item\r\n }\"\r\n ></div>\r\n </div>\r\n </ng-template>\r\n </ejs-dropdownlist>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- </form> -->\r\n <div class=\"footer-btn\">\r\n <button type=\"button\" mat-flat-button class=\"btn-close\" (click)=\"clear()\">\r\n {{ translation.CLEAR ? translation.CLEAR : \"Clear\" }}\r\n </button>\r\n <button type=\"button\" mat-flat-button class=\"btn-save\" (click)=\"close()\">\r\n {{ translation.CLOSE ? translation.CLOSE : \".CLOSE\" }}\r\n </button>\r\n </div>\r\n </div>\r\n</div>\r\n",
|
|
1612
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
1613
|
+
styles: ["@charset \"UTF-8\";.sidebar-iconlist{display:flex;flex-direction:column;height:100%}.sidebar-iconlist .nav-tabs{width:100%;display:flex;justify-content:center}.sidebar-iconlist .nav-tabs .nav-item{width:40%;padding:15px 10px 0}.sidebar-iconlist .nav-tabs .nav-item .nav-link{padding:12px 0;display:flex;justify-content:center}.sidebar-iconlist .nav-tabs .nav-item .tab-name{font-size:13px;font-weight:700;color:#48465a}.sidebar-iconlist .sidebar-iconlist-content{background-color:#fff;flex:1;height:0}.nav-tabs .nav-link.active,.nav-tabs .nav-link:hover{border-bottom:2px solid #5d78ff}.wizard{position:relative;width:100%;height:40px;background-color:#f7f9fb;padding:12px;margin-bottom:10px;cursor:pointer}.wizard .wizard-name{font-size:16px;color:#6c7293;font-weight:600}.wizard .wizard-icon{position:absolute;right:0}.wizard.slide-out{transform:translateX(100%);transition:transform .5s}.wizard.slide-out.slide-in{transform:translateX(0);transition:transform .5s}.wizard.chart{margin-top:-50px}.edit-dashboard-container{height:250px;transition:height .5s;overflow-y:hidden}.edit-dashboard-container.collapsed{height:0;transition:height .5s}.wizard-expanded{background-color:#fff;font-size:15px;overflow-y:auto}.wizard-expanded::-webkit-scrollbar{display:none}.wizard-expanded.datasource{height:500px;transition:height .5s}.wizard-expanded.datasource.extended{height:225px;transition:height .5s}.wizard-expanded.datasource.collapsed{height:0;transition:height .5s}.wizard-expanded.portlets{height:370px;transition:height .5s}.wizard-expanded.portlets.collapsed{height:0;transition:height .5s}.wizard-expanded.general{height:100px;transition:height .5s}.wizard-expanded.general.collapsed{height:0;transition:height .5s}.wizard-expanded.config{height:436px;transition:height .5s}.wizard-expanded.config.collapsed{height:0;transition:height .5s}.wizard-expanded.fields{height:300px;overflow-y:scroll;display:flex;flex-direction:column;transition:height .5s;transform:translateX(0);padding-bottom:50px}.wizard-expanded.fields.collapsed{height:0;transition:height .5s;transform:translateX(16px)}.wizard-expanded.fields.extended{height:400px;transition:height .5s}.wizard-expanded.series{height:auto;display:flex;flex-direction:column;transition:height .5s}.wizard-expanded.series.collapsed{height:0;transition:height .5s}.wizard-expanded.series .series-card{border:.33px solid #6c7293;margin-top:5px;margin-bottom:5px;width:98%}.wizard-expanded.series .series-card .select{height:40px;background-color:rgba(239,241,254,.5);padding-left:10px;padding-top:10px;margin-top:5px;margin-bottom:5px}.wizard-expanded.xaxis{height:auto;transition:height .5s}.wizard-expanded.xaxis.collapsed{height:0;transition:height .5s}.wizard-expanded.xaxis .select{height:40px;background-color:rgba(239,241,254,.5);padding-left:10px;padding-top:10px;margin-top:5px;margin-bottom:5px}.wizard-expanded.yaxis{height:auto;transition:height .5s}.wizard-expanded.yaxis.collapsed{height:0;transition:height .5s}.wizard-expanded.yaxis .select{height:40px;background-color:rgba(239,241,254,.5);padding-left:10px;padding-top:10px;margin-top:5px;margin-bottom:5px}.wizard-expanded .datamart-type-btn{border-radius:20px;height:40px;border:2px solid #606ede;background-color:#fff;color:#606ede;margin-right:10px;padding-left:10px;padding-right:10px;margin-bottom:10px}.wizard-expanded .datamart-type-btn.selected{color:#fff;background-color:#606ede}.wizard-expanded .datamart-select{height:40px;background-color:rgba(239,241,254,.5);width:95%;padding-left:10px;padding-top:10px;margin-bottom:10px}.wizard-expanded .twelvepx{font-size:12px}.footer-btn{z-index:998;background:#fff;padding-top:15px;position:absolute;bottom:30px}.btn-save{width:150px;height:40px;border-radius:5px;color:#5d78ff;background-color:#eff1fe;border-style:none;font-size:15px;font-weight:700;font-family:Arial;margin-left:13px}.btn-save:hover{color:#fff;background:#606ede}.btn-close{width:150px;height:40px;border-radius:5px;background-color:#f2f3f7;border-style:none;font-size:15px;font-weight:700;font-family:Arial;color:#979cb4;margin-left:44px}.scroll-body::-webkit-scrollbar{display:none}::ng-deep kt-sidebar-iconlist .fields-title{margin-bottom:0!important;background:#f7f8fa!important;padding-left:0!important}::ng-deep kt-sidebar-iconlist .fields-data{background:#f7f8fa!important}::ng-deep kt-sidebar-iconlist .fields-data .mat-checkbox-frame{background:#fff!important;border:1px solid #d6d6d6!important}::ng-deep kt-sidebar-iconlist .fields-data .mat-checkbox-inner-container{margin-right:10px!important}.cdk-drag-preview{box-sizing:border-box;border-radius:4px;box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}.cdk-drag-placeholder{opacity:0}.cdk-drag-animating{transition:transform 250ms cubic-bezier(0,0,.2,1)}.add-pdding{padding:0 16px}.data-source{background:#fff}.wizard-expanded.datasource{background:#f7f8fa}button.btn.prompt-btn{display:inline-block;width:20px!important;height:22px;margin-top:-6px;margin-left:3px}.prompt-btn{background-image:url(../../assets/img/dashboard_icon/information-1.png);background-position:0 0;background-size:20px;background-repeat:no-repeat}.prompt-btn ngb-tooltip-window .tooltip{width:189px!important;height:58px!important;border-radius:2px!important;box-shadow:0 8px 16px 0 rgba(169,194,209,.25)!important;background-color:rgba(169,194,209,.25)!important;font-family:Arial!important;font-size:13px!important;color:#fff!important}.content-title{font-size:10px;font-weight:400;color:#a2a3b5}.icon-list mat-icon.mat-icon{width:30px;height:30px;line-height:30px;background:#eff1fe;margin-right:12px;color:#44566c;text-align:center;border-radius:5px;cursor:pointer;margin-top:6px}.icon-list mat-icon.mat-icon.selected{color:#fff;background-color:#606ede}.data-label-content{margin-top:8px;display:flex;align-items:center}.data-label-content .label{margin-right:8px}input.field-name{border-bottom:1px solid #eaedf0}.display-total{color:#fdbf5e}.scroll-body{padding-bottom:1vh}::ng-deep kt-sidebar-iconlist input,::ng-deep kt-sidebar-iconlist mat-select{color:#4a4a4a!important}::ng-deep kt-sidebar-iconlist span.mat-slide-toggle-content{font-family:Arial!important;font-size:15px!important;font-weight:700!important;color:#4a4a4a!important}::ng-deep kt-sidebar-iconlist .mat-form-field-flex{border-bottom:1px solid #e9edef;border-radius:0!important}.footer-btn{margin:0}.state-selector{width:360px;height:36px;border:2px solid #5867dd;border-radius:5px;display:inline-block;margin-left:15px;margin-bottom:20px}.state-selector .state{display:inline-block;width:33.3%;padding-top:1px;text-align:center;background-color:#fff;height:32px;line-height:32px;font-size:15px;cursor:pointer;color:#606ede}.state-selector .state.investment{border-left:2px solid #5867dd;border-right:2px solid #5867dd}.state-selector .state.selected{background-color:#5867dd;color:#fff}:host ::ng-deep.kt-margin-bottom-10-mobile{height:40px;margin-bottom:20px}:host ::ng-deep.kt-margin-bottom-10-mobile .mat-form-field-flex{height:40px;background:#f8fafb;border:none!important}:host ::ng-deep.field-icon-filter .filter .kt-margin-bottom-10-mobile .mat-form-field-flex{height:40px;background:#f8fafb;border:none!important}:host ::ng-deep .box{position:absolute;top:364px;background:#fff;width:100%;z-index:999;height:auto}:host ::ng-deep .box .mat-checkbox-inner-container{background:#f8fafb}:host ::ng-deep .box .box-header{position:relative;height:40px;width:100%;border-radius:5px;background-color:rgba(239,241,254,.5)}:host ::ng-deep .box .box-header .title-icon{position:absolute;top:10px;left:10px}:host ::ng-deep .box .box-header .close-icon{position:absolute;top:10px;right:10px}:host ::ng-deep .box .box-header .title{position:absolute;top:0;padding-left:42px;width:100%;font-family:Arial}:host ::ng-deep .box .box-header .close{position:absolute;top:10px;right:10px}:host ::ng-deep .box .box-content{display:flex;flex-direction:column;padding:10px;max-height:210px;overflow:auto!important}:host ::ng-deep .box .buttons{font-family:Arial;display:flex;width:100%;justify-content:center;margin-bottom:10px;margin-top:15px}:host ::ng-deep .box .buttons .noki-btn{width:110px;border-radius:6px;color:#5d78ff;background-color:#eff1fe;box-shadow:none;border:none;font-size:1.25rem;font-weight:400;margin-left:15px;margin-right:15px;height:40px;line-height:40px}:host ::ng-deep .box .buttons .noki-btn:hover{color:#fff;background-color:#5d78ff}.format .box-content{max-height:150px}:host::ng-deep .datamart-select .mat-select-value-text{font-size:15px!important;font-weight:400!important;color:#44566c!important}.fields-row{height:40px!important;line-height:40px;position:relative}.fields-row mat-checkbox.fields-{display:inline-block}.fields-row .field-icon-filter,.fields-row .field-icon-format{cursor:pointer;margin:0 6px}.fields-row .field-icon-filter mat-icon,.fields-row .field-icon-format mat-icon{transform:translateY(2px)!important}.fields-row .field-icon-filter .box,.fields-row .field-icon-format .box{position:absolute;top:40px;z-index:99;border:1px solid #eaedf0;border-radius:5px;height:auto;width:367px;cursor:default;background-color:#fff}.fields-row .field-icon-filter .box .mat-checkbox-inner-container,.fields-row .field-icon-format .box .mat-checkbox-inner-container{cursor:pointer}.fields-row .field-icon-filter .box .box-header,.fields-row .field-icon-format .box .box-header{position:relative;height:40px;width:100%;border-radius:5px;background-color:rgba(239,241,254,.5)}.fields-row .field-icon-filter .box .box-header .title-icon,.fields-row .field-icon-format .box .box-header .title-icon{position:absolute;top:10px;left:10px}.fields-row .field-icon-filter .box .box-header .close-icon,.fields-row .field-icon-format .box .box-header .close-icon{position:absolute;top:10px;right:10px}.fields-row .field-icon-filter .box .box-header .title,.fields-row .field-icon-format .box .box-header .title{position:absolute;top:0;padding-left:42px;width:100%;font-family:Arial}.fields-row .field-icon-filter .box .box-header .close,.fields-row .field-icon-format .box .box-header .close{position:absolute;top:10px;right:10px}.fields-row .field-icon-filter .box .box-content,.fields-row .field-icon-format .box .box-content{display:flex;flex-direction:column;padding:10px;overflow-y:hidden}.fields-row .field-icon-filter .box{transform:translateX(-302px)}.fields-row .field-icon-format .box{transform:translateX(-338px)}.fields-row .field-icon-total{width:36px;text-align:center;font-weight:500;cursor:pointer;margin:0 5px}:host::ng-deep .fields-row mat-checkbox.fields- label.mat-checkbox-layout{width:100%}:host::ng-deep .fields-row mat-checkbox.fields- span.mat-checkbox-label{width:calc(100% - 26px);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}:host::ng-deep .fields-row .box-content label.mat-checkbox-layout{width:100%}:host::ng-deep .fields-row .box-content span.mat-checkbox-label{width:calc(100% - 26px);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}:host::ng-deep .search-select-all{position:absolute;background:#fff;top:40px;z-index:9;width:calc(100% - 10px)}:host::ng-deep .search-select-all .search- .mat-form-field-flex{display:inline-flex;align-items:baseline;box-sizing:border-box;width:calc(100% - 10px);border:1px solid #e9edef;border-radius:5px!important}.tab-content{padding:0!important}ul.nav.nav-tabs.nav-tabs-line{width:100%;padding-right:0;margin-bottom:25px}ul.nav.nav-tabs.nav-tabs-line li{width:40%;padding:15px 10px 0}ul.nav.nav-tabs.nav-tabs-line li .tab-name{display:inline-block;font-size:13px;font-weight:700;color:#48465a}.color-ipt{width:95%}.color-ipt .e-list-item{background-color:#fff!important}.color-ipt .e-input-group{background-color:rgba(239,241,254,.5)!important}::ng-deep .e-dropdownlist .e-list-item.e-active{background:red!important}.color-box{width:100%;display:flex;height:40px;align-items:center;justify-content:center}.color-box .color-item{width:10%;height:16px}.dialog-content{padding:16px 24px}.dialog-content .condition-item{margin-bottom:18px}.dialog-content .condition-item.flex{display:flex}.dialog-content .condition-item.flex .e-checkbox-wrapper{flex:1;height:20px}.dialog-content .condition-item.flex .e-checkbox-wrapper .e-icons{height:18px;width:18px}.dialog-content .condition-item.flex .e-checkbox-wrapper .e-icons:before{font-size:12px}.dialog-content .condition-item .title{margin-bottom:6px;font-size:13px;color:#646c9a}.dialog-content .condition-item .mat-input-element,.dialog-content .condition-item .mat-select{border-bottom:1px solid rgba(0,0,0,.42);height:30px;line-height:30px;width:100%}.dialog-content .condition-item .mat-input-element.mat-select-disabled,.dialog-content .condition-item .mat-select.mat-select-disabled{opacity:.3}::ng-deep .cdk-overlay-pane{transform:translateX(-16px)!important}::ng-deep .cdk-overlay-pane .mat-select-panel-wrap{max-width:380px!important}::ng-deep .cdk-overlay-pane .mat-select-panel-wrap .mat-select-panel{min-width:calc(100% + 32px)!important}"]
|
|
1614
|
+
}] }
|
|
1615
|
+
];
|
|
1616
|
+
/** @nocollapse */
|
|
1617
|
+
SidebarIconlistNewComponent.ctorParameters = function () { return [
|
|
1618
|
+
{ type: ApiList },
|
|
1619
|
+
{ type: DashboardService },
|
|
1620
|
+
{ type: DashboardPorletsService },
|
|
1621
|
+
{ type: ChangeDetectorRef },
|
|
1622
|
+
{ type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [PBF_TOKEN,] }] },
|
|
1623
|
+
{ type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [API_SERVICE_TOKEN,] }] }
|
|
1624
|
+
]; };
|
|
1625
|
+
SidebarIconlistNewComponent.propDecorators = {
|
|
1626
|
+
dashboard_sidebar: [{ type: Input }],
|
|
1627
|
+
dashboard: [{ type: Input }],
|
|
1628
|
+
dashboardId: [{ type: Input }],
|
|
1629
|
+
activeTabId: [{ type: Input }],
|
|
1630
|
+
activeTabLabel: [{ type: Input }],
|
|
1631
|
+
portlets: [{ type: Input }],
|
|
1632
|
+
tabactive: [{ type: Input }],
|
|
1633
|
+
portlet: [{ type: Input }],
|
|
1634
|
+
figureCode: [{ type: Input }],
|
|
1635
|
+
_selectedX: [{ type: Input }],
|
|
1636
|
+
_selectedY: [{ type: Input }],
|
|
1637
|
+
_selectedMultiples: [{ type: Input }],
|
|
1638
|
+
_selectedSecondY: [{ type: Input }],
|
|
1639
|
+
_selectTheme: [{ type: Input }],
|
|
1640
|
+
appCode: [{ type: Input }],
|
|
1641
|
+
closeSidebar: [{ type: Output }],
|
|
1642
|
+
updatePorletConfig: [{ type: Output }],
|
|
1643
|
+
onToggleTabactive: [{ type: Output }],
|
|
1644
|
+
updatePorlet: [{ type: Output }],
|
|
1645
|
+
updatePushBtn: [{ type: Output }],
|
|
1646
|
+
chartUpdate: [{ type: Output }],
|
|
1647
|
+
updateTheme: [{ type: Output }]
|
|
1648
|
+
};
|
|
1649
|
+
return SidebarIconlistNewComponent;
|
|
1650
|
+
}());
|
|
1651
|
+
export { SidebarIconlistNewComponent };
|
|
1652
|
+
if (false) {
|
|
1653
|
+
/** @type {?} */
|
|
1654
|
+
SidebarIconlistNewComponent.prototype.dashboard_sidebar;
|
|
1655
|
+
/** @type {?} */
|
|
1656
|
+
SidebarIconlistNewComponent.prototype.dashboard;
|
|
1657
|
+
/** @type {?} */
|
|
1658
|
+
SidebarIconlistNewComponent.prototype.dashboardId;
|
|
1659
|
+
/** @type {?} */
|
|
1660
|
+
SidebarIconlistNewComponent.prototype.activeTabId;
|
|
1661
|
+
/** @type {?} */
|
|
1662
|
+
SidebarIconlistNewComponent.prototype.activeTabLabel;
|
|
1663
|
+
/** @type {?} */
|
|
1664
|
+
SidebarIconlistNewComponent.prototype.portlets;
|
|
1665
|
+
/** @type {?} */
|
|
1666
|
+
SidebarIconlistNewComponent.prototype.tabactive;
|
|
1667
|
+
/** @type {?} */
|
|
1668
|
+
SidebarIconlistNewComponent.prototype.portlet;
|
|
1669
|
+
/** @type {?} */
|
|
1670
|
+
SidebarIconlistNewComponent.prototype.figureCode;
|
|
1671
|
+
/** @type {?} */
|
|
1672
|
+
SidebarIconlistNewComponent.prototype._selectedX;
|
|
1673
|
+
/** @type {?} */
|
|
1674
|
+
SidebarIconlistNewComponent.prototype._selectedY;
|
|
1675
|
+
/** @type {?} */
|
|
1676
|
+
SidebarIconlistNewComponent.prototype._selectedMultiples;
|
|
1677
|
+
/** @type {?} */
|
|
1678
|
+
SidebarIconlistNewComponent.prototype._selectedSecondY;
|
|
1679
|
+
/** @type {?} */
|
|
1680
|
+
SidebarIconlistNewComponent.prototype._selectTheme;
|
|
1681
|
+
/** @type {?} */
|
|
1682
|
+
SidebarIconlistNewComponent.prototype.appCode;
|
|
1683
|
+
/** @type {?} */
|
|
1684
|
+
SidebarIconlistNewComponent.prototype.closeSidebar;
|
|
1685
|
+
/** @type {?} */
|
|
1686
|
+
SidebarIconlistNewComponent.prototype.updatePorletConfig;
|
|
1687
|
+
/** @type {?} */
|
|
1688
|
+
SidebarIconlistNewComponent.prototype.onToggleTabactive;
|
|
1689
|
+
/** @type {?} */
|
|
1690
|
+
SidebarIconlistNewComponent.prototype.updatePorlet;
|
|
1691
|
+
/** @type {?} */
|
|
1692
|
+
SidebarIconlistNewComponent.prototype.updatePushBtn;
|
|
1693
|
+
/** @type {?} */
|
|
1694
|
+
SidebarIconlistNewComponent.prototype.chartUpdate;
|
|
1695
|
+
/** @type {?} */
|
|
1696
|
+
SidebarIconlistNewComponent.prototype.updateTheme;
|
|
1697
|
+
/** @type {?} */
|
|
1698
|
+
SidebarIconlistNewComponent.prototype.translation;
|
|
1699
|
+
/**
|
|
1700
|
+
* @type {?}
|
|
1701
|
+
* @private
|
|
1702
|
+
*/
|
|
1703
|
+
SidebarIconlistNewComponent.prototype.lang;
|
|
1704
|
+
/** @type {?} */
|
|
1705
|
+
SidebarIconlistNewComponent.prototype.dataMartTableList;
|
|
1706
|
+
/** @type {?} */
|
|
1707
|
+
SidebarIconlistNewComponent.prototype.hasChanged;
|
|
1708
|
+
/** @type {?} */
|
|
1709
|
+
SidebarIconlistNewComponent.prototype.gadgetTitle;
|
|
1710
|
+
/**
|
|
1711
|
+
* @type {?}
|
|
1712
|
+
* @private
|
|
1713
|
+
*/
|
|
1714
|
+
SidebarIconlistNewComponent.prototype.subscriptions;
|
|
1715
|
+
/** @type {?} */
|
|
1716
|
+
SidebarIconlistNewComponent.prototype.portletType;
|
|
1717
|
+
/** @type {?} */
|
|
1718
|
+
SidebarIconlistNewComponent.prototype.expandArray;
|
|
1719
|
+
/** @type {?} */
|
|
1720
|
+
SidebarIconlistNewComponent.prototype.selectedDataTable;
|
|
1721
|
+
/** @type {?} */
|
|
1722
|
+
SidebarIconlistNewComponent.prototype.selectedDatamart;
|
|
1723
|
+
/** @type {?} */
|
|
1724
|
+
SidebarIconlistNewComponent.prototype.chartSettings;
|
|
1725
|
+
/** @type {?} */
|
|
1726
|
+
SidebarIconlistNewComponent.prototype.displayOption;
|
|
1727
|
+
/** @type {?} */
|
|
1728
|
+
SidebarIconlistNewComponent.prototype.config;
|
|
1729
|
+
/** @type {?} */
|
|
1730
|
+
SidebarIconlistNewComponent.prototype.currentTab;
|
|
1731
|
+
/** @type {?} */
|
|
1732
|
+
SidebarIconlistNewComponent.prototype.yList;
|
|
1733
|
+
/** @type {?} */
|
|
1734
|
+
SidebarIconlistNewComponent.prototype.chartTypeList;
|
|
1735
|
+
/** @type {?} */
|
|
1736
|
+
SidebarIconlistNewComponent.prototype.multipleAxisModeList;
|
|
1737
|
+
/** @type {?} */
|
|
1738
|
+
SidebarIconlistNewComponent.prototype.themeData;
|
|
1739
|
+
/** @type {?} */
|
|
1740
|
+
SidebarIconlistNewComponent.prototype.themeFields;
|
|
1741
|
+
/** @type {?} */
|
|
1742
|
+
SidebarIconlistNewComponent.prototype.selectedInvestor;
|
|
1743
|
+
/** @type {?} */
|
|
1744
|
+
SidebarIconlistNewComponent.prototype.investorList;
|
|
1745
|
+
/** @type {?} */
|
|
1746
|
+
SidebarIconlistNewComponent.prototype.selectedVisualType;
|
|
1747
|
+
/** @type {?} */
|
|
1748
|
+
SidebarIconlistNewComponent.prototype.visualTypeList;
|
|
1749
|
+
/** @type {?} */
|
|
1750
|
+
SidebarIconlistNewComponent.prototype.selectedX;
|
|
1751
|
+
/** @type {?} */
|
|
1752
|
+
SidebarIconlistNewComponent.prototype.selectedY;
|
|
1753
|
+
/** @type {?} */
|
|
1754
|
+
SidebarIconlistNewComponent.prototype.selectedSecondY;
|
|
1755
|
+
/** @type {?} */
|
|
1756
|
+
SidebarIconlistNewComponent.prototype.selectedMultiples;
|
|
1757
|
+
/** @type {?} */
|
|
1758
|
+
SidebarIconlistNewComponent.prototype.markerFormat;
|
|
1759
|
+
/** @type {?} */
|
|
1760
|
+
SidebarIconlistNewComponent.prototype.markerFormatList;
|
|
1761
|
+
/** @type {?} */
|
|
1762
|
+
SidebarIconlistNewComponent.prototype.hasMarker;
|
|
1763
|
+
/** @type {?} */
|
|
1764
|
+
SidebarIconlistNewComponent.prototype.multiplesList;
|
|
1765
|
+
/** @type {?} */
|
|
1766
|
+
SidebarIconlistNewComponent.prototype.selectTheme;
|
|
1767
|
+
/**
|
|
1768
|
+
* @type {?}
|
|
1769
|
+
* @private
|
|
1770
|
+
*/
|
|
1771
|
+
SidebarIconlistNewComponent.prototype.api;
|
|
1772
|
+
/** @type {?} */
|
|
1773
|
+
SidebarIconlistNewComponent.prototype.dashboardService;
|
|
1774
|
+
/** @type {?} */
|
|
1775
|
+
SidebarIconlistNewComponent.prototype.dashboardPorletsService;
|
|
1776
|
+
/**
|
|
1777
|
+
* @type {?}
|
|
1778
|
+
* @private
|
|
1779
|
+
*/
|
|
1780
|
+
SidebarIconlistNewComponent.prototype.ref;
|
|
1781
|
+
/**
|
|
1782
|
+
* @type {?}
|
|
1783
|
+
* @private
|
|
1784
|
+
*/
|
|
1785
|
+
SidebarIconlistNewComponent.prototype.pbf;
|
|
1786
|
+
/**
|
|
1787
|
+
* @type {?}
|
|
1788
|
+
* @private
|
|
1789
|
+
*/
|
|
1790
|
+
SidebarIconlistNewComponent.prototype.http;
|
|
1791
|
+
}
|
|
1792
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZWJhci1pY29ubGlzdC1uZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vcmFpc2UtY29tbW9uLWxpYi8iLCJzb3VyY2VzIjpbImxpYi9kYXNoYm9hcmQvc2lkZWJhci1pY29ubGlzdC9zaWRlYmFyLWljb25saXN0LW5ldy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsT0FBTyxFQUNMLFNBQVMsRUFFVCxpQkFBaUIsRUFDakIsdUJBQXVCLEVBQ3ZCLEtBQUssRUFDTCxNQUFNLEVBQ04sWUFBWSxFQUNaLE1BQU0sRUFDTixRQUFRLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNqQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDNUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFHdEU7SUEyVkUscUNBQ1UsR0FBWSxFQUNiLGdCQUFrQyxFQUNsQyx1QkFBZ0QsRUFDL0MsR0FBc0IsRUFDUyxHQUFRLEVBQ0EsSUFBUztRQUxoRCxRQUFHLEdBQUgsR0FBRyxDQUFTO1FBQ2IscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyw0QkFBdUIsR0FBdkIsdUJBQXVCLENBQXlCO1FBQy9DLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQ1MsUUFBRyxHQUFILEdBQUcsQ0FBSztRQUNBLFNBQUksR0FBSixJQUFJLENBQUs7UUExVmpELHNCQUFpQixHQUFZLEtBQUssQ0FBQztRQUtuQyxhQUFRLEdBQUcsRUFBRSxDQUFDO1FBQ2QsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUdsQixlQUFVLEdBQVEsRUFBRSxDQUFDO1FBQ3JCLGVBQVUsR0FBUSxFQUFFLENBQUM7UUFDckIsdUJBQWtCLEdBQVEs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REFBdUQ7Ozs7O0lBQ3ZELDBDQUE4Qjs7Ozs7SUFDOUIsMENBQStDOzs7OztJQUMvQywyQ0FBd0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBPbkluaXQsXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgSW5wdXQsXHJcbiAgT3V0cHV0LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBJbmplY3QsXHJcbiAgT3B0aW9uYWwsXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgQXBpTGlzdCB9IGZyb20gXCIuLi9hcGlcIjtcclxuaW1wb3J0IHsgQVBJX1NFUlZJQ0VfVE9LRU4sIFBCRl9UT0tFTiB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlL0luamVjdGlvblRva2VuXCI7XHJcbmltcG9ydCB7IERhc2hib2FyZFNlcnZpY2UgfSBmcm9tIFwiLi4vZGFzaGJvYXJkLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgRGFzaGJvYXJkUG9ybGV0c1NlcnZpY2UgfSBmcm9tIFwiLi4vZGFzaGJvYXJkUG9ybGV0cy5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gXCJyeGpzXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJrdC1zaWRlYmFyLWljb25saXN0LW5ld1wiLFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4vc2lkZWJhci1pY29ubGlzdC1uZXcuY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybHM6IFtcIi4vc2lkZWJhci1pY29ubGlzdC1uZXcuY29tcG9uZW50LnNjc3NcIl0sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTaWRlYmFySWNvbmxpc3ROZXdDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEBJbnB1dCgpIGRhc2hib2FyZF9zaWRlYmFyOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgZGFzaGJvYXJkO1xyXG4gIEBJbnB1dCgpIGRhc2hib2FyZElkO1xyXG4gIEBJbnB1dCgpIGFjdGl2ZVRhYklkO1xyXG4gIEBJbnB1dCgpIGFjdGl2ZVRhYkxhYmVsO1xyXG4gIEBJbnB1dCgpIHBvcnRsZXRzID0gW107XHJcbiAgQElucHV0KCkgdGFiYWN0aXZlID0gZmFsc2U7XHJcbiAgQElucHV0KCkgcG9ydGxldDtcclxuICBASW5wdXQoKSBmaWd1cmVDb2RlO1xyXG4gIEBJbnB1dCgpIF9zZWxlY3RlZFg6IGFueSA9IFtdO1xyXG4gIEBJbnB1dCgpIF9zZWxlY3RlZFk6IGFueSA9IFtdO1xyXG4gIEBJbnB1dCgpIF9zZWxlY3RlZE11bHRpcGxlczogYW55ID0gbnVsbDtcclxuICBASW5wdXQoKSBfc2VsZWN0ZWRTZWNvbmRZOiBhbnkgPSBbXTtcclxuICBASW5wdXQoKSBfc2VsZWN0VGhlbWU6IGFueSA9IG51bGw7XHJcbiAgQElucHV0KCkgYXBwQ29kZTtcclxuICBAT3V0cHV0KCkgY2xvc2VTaWRlYmFyID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSB1cGRhdGVQb3JsZXRDb25maWcgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIG9uVG9nZ2xlVGFiYWN0aXZlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSB1cGRhdGVQb3JsZXQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHVwZGF0ZVB1c2hCdG4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGNoYXJ0VXBkYXRlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSB1cGRhdGVUaGVtZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBwdWJsaWMgdHJhbnNsYXRpb24gPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwidHJhbnNsYXRpb25cIikpO1xyXG4gIHByaXZhdGUgbGFuZztcclxuICBwdWJsaWMgZGF0YU1hcnRUYWJsZUxpc3QgPSBbXTtcclxuICBoYXNDaGFuZ2VkID0gZmFsc2U7XHJcbiAgLy9jb25maWc7XHJcbiAgcHVibGljIGdhZGdldFRpdGxlO1xyXG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcclxuICBwdWJsaWMgcG9ydGxldFR5cGU7XHJcbiAgcHVibGljIGV4cGFuZEFycmF5OiBBcnJheTxib29sZWFuPiA9IFtcclxuICAgIGZhbHNlLFxyXG4gICAgZmFsc2UsXHJcbiAgICBmYWxzZSxcclxuICAgIGZhbHNlLFxyXG4gICAgZmFsc2UsXHJcbiAgICBmYWxzZSxcclxuICAgIGZhbHNlLFxyXG4gIF07XHJcbiAgcHVibGljIHNlbGVjdGVkRGF0YVRhYmxlOiBhbnkgPSBcIlwiO1xyXG4gIHB1YmxpYyBzZWxlY3RlZERhdGFtYXJ0O1xyXG4gIHB1YmxpYyBjaGFydFNldHRpbmdzID0ge1xyXG4gICAgbGVnZW5kU2V0dGluZ3M6IHtcclxuICAgICAgdmlzaWJsZTogZmFsc2UsXHJcbiAgICB9LFxyXG4gICAgZW5hYmxlTXVsdGlwbGVBeGlzOiBmYWxzZSxcclxuICAgIHNob3dNdWx0aUxldmVsTGFiZWxzOiBmYWxzZSxcclxuICAgIGNoYXJ0U2VyaWVzOiB7XHJcbiAgICAgIHR5cGU6IFwiQ29sdW1uXCIsXHJcbiAgICAgIHdpZHRoOiAyLFxyXG4gICAgfSxcclxuICAgIG11bHRpcGxlQXhpc01vZGU6IFwiU3RhY2tlZFwiLFxyXG4gICAgcHJpbWFyeVhBeGlzOiB7XHJcbiAgICAgIHRpdGxlOiBcIiBcIixcclxuICAgICAgbWFqb3JHcmlkTGluZXM6IHsgd2lkdGg6IDAgfSxcclxuICAgIH0sXHJcbiAgICBjaGFydEFyZWE6IHtcclxuICAgICAgb3BhY2l0eTogMCxcclxuICAgICAgYm9yZGVyOiB7XHJcbiAgICAgICAgd2lkdGg6IDAsXHJcbiAgICAgIH0sXHJcbiAgICB9LFxyXG4gICAgcGFsZXR0ZXM6IFtcclxuICAgICAgXCIjNTk0YmI5XCIsXHJcbiAgICAgIFwiI2YxYWYzMlwiLFxyXG4gICAgICBcIiM0Njg4ZWRcIixcclxuICAgICAgXCIjZTA1NjNlXCIsXHJcbiAgICAgIFwiIzgwM2E2M1wiLFxyXG4gICAgICBcIiM2ZGQ4YjVcIixcclxuICAgICAgXCIjZTg3MjI1XCIsXHJcbiAgICAgIFwiI2M1ZGY0MlwiLFxyXG4gICAgICBcIiNjNjQzN2RcIixcclxuICAgIF0sXHJcbiAgICBwcmltYXJ5WUF4aXM6IHtcclxuICAgICAgLy8gWei9tOagh+mimOiuvue9ruS4uuepulxyXG4gICAgICB0aXRsZTogXCIgXCIsXHJcbiAgICB9LFxyXG4gICAgem9vbVNldHRpbmdzOiB7XHJcbiAgICAgIGVuYWJsZU1vdXNlV2hlZWxab29taW5nOiBmYWxzZSwgLy8g56aB55So6byg5qCH5rua6L2u57yp5pS+XHJcbiAgICAgIGVuYWJsZVBpbmNoWm9vbWluZzogZmFsc2UsIC8vIOemgeeUqOinpuaRuOe8qeaUvlxyXG4gICAgICBlbmFibGVTZWxlY3Rpb25ab29taW5nOiBmYWxzZSwgLy8g56aB55So6YCJ5oup5Yy65Z+f57yp5pS+XHJcbiAgICAgIGVuYWJsZURlZmVycmVkWm9vbWluZzogZmFsc2UsIC8vIOemgeeUqOW7tui/n+e8qeaUvlxyXG4gICAgICB0b29sYmFySXRlbXM6IFtdLFxyXG4gICAgICBlbmFibGVTY3JvbGxiYXI6IGZhbHNlLFxyXG4gICAgICBlbmFibGVab29taW5nOiBmYWxzZSxcclxuICAgIH0sXHJcbiAgfTtcclxuICBwdWJsaWMgZGlzcGxheU9wdGlvbiA9IHsgdmlldzogXCJCb3RoXCIsIHByaW1hcnk6IFwiQ2hhcnRcIiB9O1xyXG4gIHB1YmxpYyBjb25maWc7XHJcbiAgcHVibGljIGN1cnJlbnRUYWI6IHN0cmluZyA9IFwidGFiMVwiO1xyXG4gIHB1YmxpYyB5TGlzdDogYW55ID0gW107XHJcbiAgcHVibGljIGNoYXJ0VHlwZUxpc3QgPSBbXHJcbiAgICBcIkNvbHVtblwiLFxyXG4gICAgXCJCYXJcIixcclxuICAgIFwiTGluZVwiLFxyXG4gICAgXCJTcGxpbmVcIixcclxuICAgIFwiQXJlYVwiLFxyXG4gICAgXCJTY2F0dGVyXCIsXHJcbiAgICBcIlBvbGFyXCIsXHJcbiAgICBcIlBpZVwiLFxyXG4gICAgXCJEb3VnaG51dFwiLFxyXG4gICAgXCJTdGFja2VkIENvbHVtblwiLFxyXG4gICAgXCJSYWRhclwiLFxyXG4gIF07XHJcbiAgcHVibGljIG11bHRpcGxlQXhpc01vZGVMaXN0ID0gW1wiU3RhY2tlZFwiLCBcIlNpbmdsZVwiLCBcIkNvbWJpbmVkXCJdO1xyXG4gIHRoZW1lRGF0YTogYW55ID0gW1xyXG4gICAge1xyXG4gICAgICBpZDogXCJ0aGVtZTEzXCIsXHJcbiAgICAgIHZhbHVlOiBbXCIjMUMzNDg0XCIsIFwiIzM1QjlGQ1wiXSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGlkOiBcInRoZW1lMTRcIixcclxuICAgICAgdmFsdWU6IFtcIiMwNDU3OEZcIiwgXCIjM0VCQkNFXCJdLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgaWQ6IFwidGhlbWUxNVwiLFxyXG4gICAgICB2YWx1ZTogW1wiIzFDMzQ4NFwiLCBcIiMxMzZCQkJcIiwgXCIjMzVCOUZDXCJdLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgaWQ6IFwidGhlbWUxNlwiLFxyXG4gICAgICB2YWx1ZTogW1wiIzA0NTc4RlwiLCBcIiMwMDgyQUZcIiwgXCIjM0VCQkNFXCJdLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgaWQ6IFwidGhlbWUxN1wiLFxyXG4gICAgICB2YWx1ZTogW1wiIzFDMzQ4NFwiLCBcIiMxNjU5QTlcIiwgXCIjMUQ5N0UxXCIsIFwiIzM1QjlGQ1wiXSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGlkOiBcInRoZW1lMThcIixcclxuICAgICAgdmFsdWU6IFtcIiMwNDU3OEZcIiwgXCIjMDA3MEEzXCIsIFwiIzE2QTJDMlwiLCBcIiMzRUJCQ0VcIl0sXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBpZDogXCJ0aGVtZTE5XCIsXHJcbiAgICAgIHZhbHVlOiBbXCIjMUMzNDg0XCIsIFwiIzE2NTlBOVwiLCBcIiMxMzc1QzRcIiwgXCIjMUQ5N0UxXCIsIFwiIzM1QjlGQ1wiXSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGlkOiBcInRoZW1lMjBcIixcclxuICAgICAgdmFsdWU6IFtcIiMwNDU3OEZcIiwgXCIjMDA3MEEzXCIsIFwiIzAwODlCNFwiLCBcIiMxNkEyQzJcIiwgXCIjM0VCQkNFXCJdLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgaWQ6IFwidGhlbWUyMVwiLFxyXG4gICAgICB2YWx1ZTogW1wiIzFDMzQ4NFwiLCBcIiMxNjU5QTlcIiwgXCIjMTM2OEI4XCIsIFwiIzEzNzVDNFwiLCBcIiMxRDk3RTFcIiwgXCIjMzVCOUZDXCJdLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgaWQ6IFwidGhlbWUyMlwiLFxyXG4gICAgICB2YWx1ZTogW1wiIzA0NTc4RlwiLCBcIiMwMDcwQTNcIiwgXCIjMDA3RkFEXCIsIFwiIzAwODlCNFwiLCBcIiMxNkEyQzJcIiwgXCIjM0VCQkNFXCJdLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgaWQ6IFwidGhlbWUyM1wiLFxyXG4gICAgICB2YWx1ZTogW1xyXG4gICAgICAgIFwiIzFDMzQ4NFwiLFxyXG4gICAgICAgIFwiIzE2NTlBOVwiLFxyXG4gICAgICAgIFwiIzE0NUZBRlwiLFxyXG4gICAgICAgIFwiIzEzNjhCOFwiLFxyXG4gICAgICAgIFwiIzEzNzVDNFwiLFxyXG4gICAgICAgIFwiIzFEOTdFMVwiLFxyXG4gICAgICAgIFwiIzM1QjlGQ1wiLFxyXG4gICAgICBdLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgaWQ6IFwidGhlbWUyNFwiLFxyXG4gICAgICB2YWx1ZTogW1xyXG4gICAgICAgIFwiIzA0NTc4RlwiLFxyXG4gICAgICAgIFwiIzAwNzBBM1wiLFxyXG4gICAgICAgIFwiIzAwNzhBOVwiLFxyXG4gICAgICAgIFwiIzAwN0ZBRFwiLFxyXG4gICAgICAgIFwiIzAwODlCNFwiLFxyXG4gICAgICAgIFwiIzE2QTJDMlwiLFxyXG4gICAgICAgIFwiIzNFQkJDRVwiLFxyXG4gICAgICBdLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgaWQ6IFwidGhlbWUxMVwiLFxyXG4gICAgICB2YWx1ZTogW1xyXG4gICAgICAgIFwiIzFDMzQ4NFwiLFxyXG4gICAgICAgIFwiIzE5NDY5N1wiLFxyXG4gICAgICAgIFwiIzE2NTlBOVwiLFxyXG4gICAgICAgIFwiIzEzNkJCQlwiLFxyXG4gICAgICAgIFwiIzE0N0VDQ1wiLFxyXG4gICAgICAgIFwiIzFCOTJERFwiLFxyXG4gICAgICAgIFwiIzI2QTVFRFwiLFxyXG4gICAgICAgIFwiIzM1QjlGQ1wiLFxyXG4gICAgICBdLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgaWQ6IFwidGhlbWUxMlwiLFxyXG4gICAgICB2YWx1ZTogW1xyXG4gICAgICAgIFwiIzA0NTc4RlwiLFxyXG4gICAgICAgIFwiIzAwNjU5QlwiLFxyXG4gICAgICAgIFwiIzAwNzNBNlwiLFxyXG4gICAgICAgIFwiIzAwODJBRlwiLFxyXG4gICAgICAgIFwiIzAwOTBCOFwiLFxyXG4gICAgICAgIFwiIzBGOUVDMFwiLFxyXG4gICAgICAgIFwiIzI5QURDN1wiLFxyXG4gICAgICAgIFwiIzNFQkJDRVwiLFxyXG4gICAgICBdLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgaWQ6IFwidGhlbWUxXCIsXHJcbiAgICAgIHZhbHVlOiBbXHJcbiAgICAgICAgXCIjNTk0YmI5XCIsXHJcbiAgICAgICAgXCIjZjFhZjMyXCIsXHJcbiAgICAgICAgXCIjNDY4OGVkXCIsXHJcbiAgICAgICAgXCIjZTA1NjNlXCIsXHJcbiAgICAgICAgXCIjODAzYTYzXCIsXHJcbiAgICAgICAgXCIjNmRkOGI1XCIsXHJcbiAgICAgICAgXCIjZTg3MjI1XCIsXHJcbiAgICAgICAgXCIjYzVkZjQyXCIsXHJcbiAgICAgICAgXCIjYzY0MzdkXCIsXHJcbiAgICAgIF0sXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBpZDogXCJ0aGVtZTJcIixcclxuICAgICAgdmFsdWU6IFtcclxuICAgICAgICBcIiM0Njg4ZWRcIixcclxuICAgICAgICBcIiNmMWFmMzJcIixcclxuICAgICAgICBcIiNlMDU2M2VcIixcclxuICAgICAgICBcIiM4MDNhNjNcIixcclxuICAgICAgICBcIiM2ZGQ4YjVcIixcclxuICAgICAgICBcIiNlODcyMjVcIixcclxuICAgICAgICBcIiNjNWRmNDJcIixcclxuICAgICAgICBcIiNjNjQzN2RcIixcclxuICAgICAgICBcIiM1OTRiYjlcIixcclxuICAgICAgXSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGlkOiBcInRoZW1lM1wiLFxyXG4gICAgICB2YWx1ZTogW1xyXG4gICAgICAgIFwiI2M2NDM3ZFwiLFxyXG4gICAgICAgIFwiI2M1ZGY0MlwiLFxyXG4gICAgICAgIFwiI2U4NzIyNVwiLFxyXG4gICAgICAgIFwiIzZkZDhiNVwiLFxyXG4gICAgICAgIFwiI2UwNTYzZVwiLFxyXG4gICAgICAgIFwiIzgwM2E2M1wiLFxyXG4gICAgICAgIFwiI2YxYWYzMlwiLFxyXG4gICAgICAgIFwiIzU5NGJiOVwiLFxyXG4gICAgICAgIFwiIzQ2ODhlZFwiLFxyXG4gICAgICBdLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgaWQ6IFwidGhlbWU0XCIsXHJcbiAgICAgIHZhbHVlOiBbXHJcbiAgICAgICAgXCIjMmY0OTlmXCIsXHJcbiAgICAgICAgXCIjOGQxZDJlXCIsXHJcbiAgICAgICAgXCIjZTliZjM1XCIsXHJcbiAgICAgICAgXCIjNTE3NzJmXCIsXHJcbiAgICAgICAgXCIjNDY5YmQ4XCIsXHJcbiAgICAgICAgXCIjNWM0NDhmXCIsXHJcbiAgICAgICAgXCIjZGE3MzJmXCIsXHJcbiAgICAgICAgXCIjMjQ1MzUzXCIsXHJcbiAgICAgICAgXCIjNDNhMjQ1XCIsXHJcbiAgICAgIF0sXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBpZDogXCJ0aGVtZTVcIixcclxuICAgICAgdmFsdWU6IFtcclxuICAgICAgICBcIiMzODM4MzlcIixcclxuICAgICAgICBcIiM0NDZlYzZcIixcclxuICAgICAgICBcIiNjZjYzODRcIixcclxuICAgICAgICBcIiNlYmIzN2VcIixcclxuICAgICAgICBcIiM3MWEyNDlcIixcclxuICAgICAgICBcIiM0YmIxYTVcIixcclxuICAgICAgICBcIiNlODcyMjVcIixcclxuICAgICAgICBcIiNjNWRmNDJcIixcclxuICAgICAgICBcIiNjNjQzN2RcIixcclxuICAgICAgXSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGlkOiBcInRoZW1lNlwiLFxyXG4gICAgICB2YWx1ZTogW1xyXG4gICAgICAgIFwiIzUxN2FlMVwiLFxyXG4gICAgICAgIFwiIzYzODZlNVwiLFxyXG4gICAgICAgIFwiIzc0OTFlOVwiLFxyXG4gICAgICAgIFwiIzg0OWRlY1wiLFxyXG4gICAgICAgIFwiIzk0YTllZlwiLFxyXG4gICAgICAgIFwiI2E0YjZmMlwiLFxyXG4gICAgICAgIFwiI2I0YzNmNlwiLFxyXG4gICAgICAgIFwiI2M0Y2ZmOVwiLFxyXG4gICAgICAgIFwiI2Q0ZGRmZFwiLFxyXG4gICAgICBdLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgaWQ6IFwidGhlbWU3XCIsXHJcbiAgICAgIHZhbHVlOiBbXHJcbiAgICAgICAgXCIjMzk4MjhlXCIsXHJcbiAgICAgICAgXCIjNDg4ZTk5XCIsXHJcbiAgICAgICAgXCIjNTc5YWE1XCIsXHJcbiAgICAgICAgXCIjNjZhNmIwXCIsXHJcbiAgICAgICAgXCIjNzViM2JkXCIsXHJcbiAgICAgICAgXCIjODViZmM5XCIsXHJcbiAgICAgICAgXCIjOTVjZGQ2XCIsXHJcbiAgICAgICAgXCIjYTRkYWUyXCIsXHJcbiAgICAgICAgXCIjYjVlOGYwXCIsXHJcbiAgICAgIF0sXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBpZDogXCJ0aGVtZThcIixcclxuICAgICAgdmFsdWU6IFtcclxuICAgICAgICBcIiNlNzk2M2RcIixcclxuICAgICAgICBcIiNlYTllNGJcIixcclxuICAgICAgICBcIiNlZWE2NTlcIixcclxuICAgICAgICBcIiNmMGFlNjhcIixcclxuICAgICAgICBcIiNmMmI2NzhcIixcclxuICAgICAgICBcIiNmM2JmODdcIixcclxuICAgICAgICBcIiNmNWM3OThcIixcclxuICAgICAgICBcIiNmNmQwYWFcIixcclxuICAgICAgICBcIiNmN2Q5YmJcIixcclxuICAgICAgXSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGlkOiBcInRoZW1lOVwiLFxyXG4gICAgICB2YWx1ZTogW1xyXG4gICAgICAgIFwiIzY0YThiNFwiLFxyXG4gICAgICAgIFwiIzdlYmVjMFwiLFxyXG4gICAgICAgIFwiIzljYzljYVwiLFxyXG4gICAgICAgIFwiI2I4ZDRkNFwiLFxyXG4gICAgICAgIFwiI2Q5ZDZjZFwiLFxyXG4gICAgICAgIFwiI2Q4YjdhN1wiLFxyXG4gICAgICAgIFwiI2NlOGY5M1wiLFxyXG4gICAgICAgIFwiI2MxNjI3ZlwiLFxyXG4gICAgICAgIFwiI2FkMjQ1OFwiLFxyXG4gICAgICBdLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgaWQ6IFwidGhlbWUxMFwiLFxyXG4gICAgICB2YWx1ZTogW1xyXG4gICAgICAgIFwiIzQxNzZiYVwiLFxyXG4gICAgICAgIFwiIzU1OWFlOFwiLFxyXG4gICAgICAgIFwiIzcwYjNlOFwiLFxyXG4gICAgICAgIFwiI2E3Y2NlN1wiLFxyXG4gICAgICAgIFwiI2RmZGZkZlwiLFxyXG4gICAgICAgIFwiI2QyYTA4YlwiLFxyXG4gICAgICAgIFwiI2M3NmE1MFwiLFxyXG4gICAgICAgIFwiI2NhNGUzNFwiLFxyXG4gICAgICAgIFwiI2FhM2MyOVwiLFxyXG4gICAgICBdLFxyXG4gICAgfSxcclxuICBdO1xyXG5cclxuICBwdWJsaWMgdGhlbWVGaWVsZHM6IE9iamVjdCA9IHsgdGV4dDogXCJ2YWx1ZVwiLCB2YWx1ZTogXCJpZFwiIH07XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBhcGk6IEFwaUxpc3QsXHJcbiAgICBwdWJsaWMgZGFzaGJvYXJkU2VydmljZTogRGFzaGJvYXJkU2VydmljZSxcclxuICAgIHB1YmxpYyBkYXNoYm9hcmRQb3JsZXRzU2VydmljZTogRGFzaGJvYXJkUG9ybGV0c1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KFBCRl9UT0tFTikgcHJpdmF0ZSBwYmY6IGFueSxcclxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoQVBJX1NFUlZJQ0VfVE9LRU4pIHByaXZhdGUgaHR0cDogYW55XHJcbiAgKSB7fVxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5jdXJyZW50VGFiID0gdGhpcy50YWJhY3RpdmUgPyBcInRhYjFcIiA6IFwidGFiMlwiO1xyXG4gICAgdGhpcy5nZXRJbmZvKCk7XHJcbiAgICB0aGlzLnNldERhdGFiaW5kKCk7XHJcbiAgICB0aGlzLmluaXRIaXN0b3JpY2FsSVJST3B0aW9ucygpO1xyXG4gICAgdGhpcy5nZXRtdWx0aXBsZXNMaXN0KCk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcygpIHtcclxuICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpOyAvLyDmoIforrDkuLrpnIDopoHmo4DmtYtcclxuICB9XHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgIHRoaXMuZGFzaGJvYXJkU2VydmljZS5nZXRQdXNoYnRuKCkuc3Vic2NyaWJlKChpZCkgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLmRhc2hib2FyZCAmJiB0aGlzLmRhc2hib2FyZC5pZCA9PT0gaWQpIHtcclxuICAgICAgICAgIHRoaXMuY29uZmlnID0gdGhpcy5nZXRDb25maWcoW10pO1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGFtYXJ0ID0gXCJcIjtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRYID0gbnVsbDtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRZID0gW107XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkU2Vjb25kWSA9IFtdO1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZE11bHRpcGxlcyA9IG51bGw7XHJcbiAgICAgICAgICB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG5cclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICB0aGlzLmRhc2hib2FyZFNlcnZpY2UuZ2V0cG9ydGxldEVkaXQoKS5zdWJzY3JpYmUoKGRhc2hib2FyZElkKSA9PiB7XHJcbiAgICAgICAgaWYgKGRhc2hib2FyZElkID09PSB0aGlzLmRhc2hib2FyZElkKSB7XHJcbiAgICAgICAgICB0aGlzLnNldERhdGFiaW5kKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICAgIHRoaXMuaW5pdERhdGFNYXJ0VGFibGVMaXN0KCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGluaXREYXRhTWFydFRhYmxlTGlzdCgpIHtcclxuICAgIHRoaXMuZGF0YU1hcnRUYWJsZUxpc3QgPSBbLi4udGhpcy5kYXNoYm9hcmQuZGF0YU1hcnRUYWJsZXNdLmZpbHRlcihcclxuICAgICAgKGl0ZW0pID0+ICFpdGVtLmlzSGlkZVxyXG4gICAgKTtcclxuXHJcbiAgICB0aGlzLmRhc2hib2FyZFBvcmxldHNTZXJ2aWNlLnJlbmFtZURhdGFNYXJ0VGFibGVzKFxyXG4gICAgICB0aGlzLmRhdGFNYXJ0VGFibGVMaXN0LFxyXG4gICAgICB0aGlzLmRhc2hib2FyZC5pZCxcclxuICAgICAgdGhpcy5kYXNoYm9hcmQuZW50aXR5VHlwZVxyXG4gICAgKTtcclxuICAgIHRoaXMuZGFzaGJvYXJkUG9ybGV0c1NlcnZpY2Uuc29ydERhdGFNYXJ0VGFibGVzKHRoaXMuZGF0YU1hcnRUYWJsZUxpc3QpO1xyXG4gICAgaWYgKCF0aGlzLnBvcnRsZXQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgbGV0IGZpZ3VyZUNvZGUgPSB0aGlzLnBvcnRsZXQuZmlndXJlQ29kZTtcclxuICAgIHRoaXMuZGFzaGJvYXJkLmRhdGFNYXJ0VGFibGVzLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgaWYgKGl0ZW0uZGF0YW1hcnRDb2RlID09PSBmaWd1cmVDb2RlICYmIGl0ZW0ucHJlZml4KSB7XHJcbiAgICAgICAgZmlndXJlQ29kZSA9IGl0ZW0ucHJlZml4O1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIGlmIChcclxuICAgICAgIXRoaXMuZGF0YU1hcnRUYWJsZUxpc3QuZmluZCgoaXRlbSkgPT4gaXRlbS5kYXRhbWFydENvZGUgPT09IGZpZ3VyZUNvZGUpXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5kYXRhTWFydFRhYmxlTGlzdC5mb3JFYWNoKChkYXRhKSA9PiB7XHJcbiAgICAgICAgaWYgKGRhdGEucHJlZml4ID09PSBmaWd1cmVDb2RlKSB7XHJcbiAgICAgICAgICBmaWd1cmVDb2RlID0gZGF0YS5kYXRhbWFydENvZGU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnNlbGVjdGVkRGF0YW1hcnQgPSBmaWd1cmVDb2RlO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaCgoc2IpID0+IHNiLnVuc3Vic2NyaWJlKCkpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG5leHRXaXphcmQod2l6YXJkOiBudW1iZXIpIHtcclxuICAgIGlmICghdGhpcy5leHBhbmRBcnJheVt3aXphcmRdKSB7XHJcbiAgICAgIHRoaXMuZXhwYW5kQXJyYXkgPSBbXHJcbiAgICAgICAgZmFsc2UsXHJcbiAgICAgICAgZmFsc2UsXHJcbiAgICAgICAgZmFsc2UsXHJcbiAgICAgICAgZmFsc2UsXHJcbiAgICAgICAgZmFsc2UsXHJcbiAgICAgICAgZmFsc2UsXHJcbiAgICAgICAgZmFsc2UsXHJcbiAgICAgICAgZmFsc2UsXHJcbiAgICAgIF07XHJcbiAgICAgIHRoaXMuZXhwYW5kQXJyYXlbd2l6YXJkXSA9IHRydWU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmV4cGFuZEFycmF5W3dpemFyZF0gPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0SW5mbygpIHtcclxuICAgIHRoaXMudHJhbnNsYXRpb24gPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwidHJhbnNsYXRpb25cIikpO1xyXG4gICAgdGhpcy5sYW5nID0gdGhpcy5wYmYuZ2V0TGFuZ3VhZ2VQYXJhbXMoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjbGVhcigpIHtcclxuICAgIHRoaXMuZGFzaGJvYXJkU2VydmljZS5jbGVhclNpZGViYXIubmV4dCh0cnVlKTtcclxuICB9XHJcbiAgcHVibGljIGNsb3NlKCkge1xyXG4gICAgdGhpcy51cGRhdGVQdXNoQnRuLmVtaXQoZmFsc2UpO1xyXG4gICAgdGhpcy51cGRhdGVQb3JsZXQuZW1pdChudWxsKTtcclxuICAgIHRoaXMuY2xvc2VTaWRlYmFyLmVtaXQoZmFsc2UpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldEZpZ3VyZWNvZGUoKSB7XHJcbiAgICBsZXQgY29kZUFyciA9IFtcIlRhc2tzXCIsIFwiRnVuZExpc3RcIiwgXCJJUlJcIiwgXCJOb3Rlc1wiXTtcclxuICAgIGxldCBpID0gY29kZUFyci5pbmRleE9mKHRoaXMuZmlndXJlQ29kZSk7XHJcbiAgICByZXR1cm4gaSA+IC0xID8gZmFsc2UgOiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgLy8g5Zu+6KGo57G75Z6L5pu05pS5ZXZlbnRcclxuICBwdWJsaWMgZ2V0UG9ydGxldFR5cGUoJGV2ZW50KSB7XHJcbiAgICB0aGlzLnBvcnRsZXRUeXBlID0gJGV2ZW50O1xyXG4gICAgdGhpcy5oYXNDaGFuZ2VkID0gdGhpcy5jb25maWcucG9ydGxldFR5cGUgIT09IHRoaXMucG9ydGxldFR5cGU7XHJcbiAgICBjb25zdCBwcmV2VHlwZSA9IHRoaXMuY29uZmlnLnBvcnRsZXRUeXBlO1xyXG4gICAgdGhpcy5jb25maWcucG9ydGxldFR5cGUgPSB0aGlzLnBvcnRsZXRUeXBlO1xyXG4gICAgaWYgKCEkZXZlbnQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKFtcIm5ld2NvbHVtblwiLCBcIm5ld2xpbmVcIiwgXCJuZXdjb2x1bW5saW5lXCJdLmluY2x1ZGVzKCRldmVudCkpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFggPSBudWxsO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkWSA9IFtdO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkU2Vjb25kWSA9IFtdO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkTXVsdGlwbGVzID0gbnVsbDtcclxuICAgICAgdGhpcy5leHBhbmRBcnJheVsyXSA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmV4cGFuZEFycmF5WzddID0gdHJ1ZTtcclxuICAgICAgLy8g5L+u5aSN5pyJ5pe26YCJ5oupIHh5IOi9tOaXtuayoeacieaVsOaNrueahOmXrumimFxyXG4gICAgICBpZiAodGhpcy5wb3J0bGV0ICYmIHRoaXMucG9ydGxldC5maWd1cmVDb2RlKSB7XHJcbiAgICAgICAgdGhpcy5nZXREYXRhKHRoaXMucG9ydGxldC5maWd1cmVDb2RlLCBmYWxzZSwgdGhpcy5wb3J0bGV0VHlwZSk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMucG9ydGxldFR5cGUgPT09IFwibmV3Y2hhcnRcIikge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgdGhpcy5jb25maWcucHZ0YWJsZUNoYXJ0U2V0dGluZyAmJlxyXG4gICAgICAgIHRoaXMuY29uZmlnLnB2dGFibGVDaGFydFNldHRpbmcuY2hhcnRTZXR0aW5nc1xyXG4gICAgICApIHtcclxuICAgICAgICB0aGlzLmNoYXJ0U2V0dGluZ3MgPSB7XHJcbiAgICAgICAgICAuLi50aGlzLmNvbmZpZy5wdnRhYmxlQ2hhcnRTZXR0aW5nLmNoYXJ0U2V0dGluZ3MsXHJcbiAgICAgICAgfTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmNoYXJ0U2V0dGluZ3MgPSB7XHJcbiAgICAgICAgICBsZWdlbmRTZXR0aW5nczoge1xyXG4gICAgICAgICAgICB2aXNpYmxlOiBmYWxzZSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBlbmFibGVNdWx0aXBsZUF4aXM6IGZhbHNlLFxyXG4gICAgICAgICAgc2hvd011bHRpTGV2ZWxMYWJlbHM6IGZhbHNlLFxyXG4gICAgICAgICAgY2hhcnRTZXJpZXM6IHtcclxuICAgICAgICAgICAgdHlwZTogXCJDb2x1bW5cIixcclxuICAgICAgICAgICAgd2lkdGg6IDIsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgbXVsdGlwbGVBeGlzTW9kZTogXCJTdGFja2VkXCIsXHJcbiAgICAgICAgICBwcmltYXJ5WEF4aXM6IHtcclxuICAgICAgICAgICAgdGl0bGU6IFwiIFwiLFxyXG4gICAgICAgICAgICBtYWpvckdyaWRMaW5lczogeyB3aWR0aDogMCB9LFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGNoYXJ0QXJlYToge1xyXG4gICAgICAgICAgICBvcGFjaXR5OiAwLFxyXG4gICAgICAgICAgICBib3JkZXI6IHtcclxuICAgICAgICAgICAgICB3aWR0aDogMCxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBwYWxldHRlczogW1xyXG4gICAgICAgICAgICBcIiM1OTRiYjlcIixcclxuICAgICAgICAgICAgXCIjZjFhZjMyXCIsXHJcbiAgICAgICAgICAgIFwiIzQ2ODhlZFwiLFxyXG4gICAgICAgICAgICBcIiNlMDU2M2VcIixcclxuICAgICAgICAgICAgXCIjODAzYTYzXCIsXHJcbiAgICAgICAgICAgIFwiIzZkZDhiNVwiLFxyXG4gICAgICAgICAgICBcIiNlODcyMjVcIixcclxuICAgICAgICAgICAgXCIjYzVkZjQyXCIsXHJcbiAgICAgICAgICAgIFwiI2M2NDM3ZFwiLFxyXG4gICAgICAgICAgXSxcclxuICAgICAgICAgIHByaW1hcnlZQXhpczoge1xyXG4gICAgICAgICAgICAvLyBZ6L205qCH6aKY6K6+572u5Li656m6XHJcbiAgICAgICAgICAgIHRpdGxlOiBcIiBcIixcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB6b29tU2V0dGluZ3M6IHtcclxuICAgICAgICAgICAgZW5hYmxlTW91c2VXaGVlbFpvb21pbmc6IGZhbHNlLCAvLyDnpoHnlKjpvKDmoIfmu5rova7nvKnmlL5cclxuICAgICAgICAgICAgZW5hYmxlUGluY2hab29taW5nOiBmYWxzZSwgLy8g56aB55So6Kem5pG457yp5pS+XHJcbiAgICAgICAgICAgIGVuYWJsZVNlbGVjdGlvblpvb21pbmc6IGZhbHNlLCAvLyDnpoHnlKjpgInmi6nljLrln5/nvKnmlL5cclxuICAgICAgICAgICAgZW5hYmxlRGVmZXJyZWRab29taW5nOiBmYWxzZSwgLy8g56aB55So5bu26L+f57yp5pS+XHJcbiAgICAgICAgICAgIHRvb2xiYXJJdGVtczogW10sXHJcbiAgICAgICAgICAgIGVuYWJsZVNjcm9sbGJhcjogZmFsc2UsXHJcbiAgICAgICAgICAgIGVuYWJsZVpvb21pbmc6IGZhbHNlLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9O1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoJGV2ZW50ID09PSBcImhpc3RvcmljYWxJUlJcIikge1xyXG4gICAgICB0aGlzLm9uU2VsZWN0ZWRIaXN0b3JpY2FsSVJSUG9ydGxldCgpO1xyXG4gICAgICB0aGlzLmV4cGFuZEFycmF5WzJdID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuZXhwYW5kQXJyYXlbN10gPSB0cnVlO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLmV4cGFuZEFycmF5WzJdID0gZmFsc2U7XHJcbiAgICB0aGlzLmV4cGFuZEFycmF5WzNdID0gdHJ1ZTtcclxuICAgIGlmICh0aGlzLnBvcnRsZXRUeXBlKSB7XHJcbiAgICAgIHRoaXMuQWRkT3JFZGl0UG9ydGxldCgpO1xyXG4gICAgfVxyXG4gIH1cclxuICBwdWJsaWMgY2hhbmdlRGF0YVRhYmxlKHZhbHVlKSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkRGF0YVRhYmxlID0gdGhpcy5kYXRhTWFydFRhYmxlTGlzdC5maWx0ZXIoXHJcbiAgICAgIChlbCkgPT4gZWwuZGF0YW1hcnRDb2RlID09PSB2YWx1ZVxyXG4gICAgKVswXS5pZDtcclxuICAgIHRoaXMuc2VsZWN0ZWREYXRhbWFydCA9IHZhbHVlO1xyXG4gICAgaWYgKHRoaXMucG9ydGxldCkge1xyXG4gICAgICB0aGlzLnBvcnRsZXQuZmlndXJlQ29kZSA9IHZhbHVlO1xyXG5cclxuICAgICAgdGhpcy5wb3J0bGV0LmRhc2hib2FyZERhdGFUYWJsZUlkID0gdGhpcy5nZXRTZWxlY3REYXRhbWFydElkKCk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5wb3J0bGV0KSB7XHJcbiAgICAgIHRoaXMuZGFzaGJvYXJkU2VydmljZS5jbGVhckZpZWxkTGlzdC5uZXh0KHRoaXMucG9ydGxldC5uZXdJZCk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5wb3J0bGV0KSB7XHJcbiAgICAgIHRoaXMuZGFzaGJvYXJkUG9ybGV0c1NlcnZpY2UuY2xlYXJGaWVsZHNPYmoodGhpcy5wb3J0bGV0KTtcclxuICAgIH1cclxuICAgIHRoaXMuZ2V0RGF0YSh2YWx1ZSk7XHJcbiAgICB0aGlzLmV4cGFuZEFycmF5WzBdID0gZmFsc2U7XHJcbiAgICB0aGlzLmV4cGFuZEFycmF5WzJdID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIF91cGRhdGVQb3JsZXRDb25maWcoZSkge1xyXG4gICAgdGhpcy51cGRhdGVQb3JsZXRDb25maWcuZW1pdChlKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0RGF0YShjb2RlLCBlZGl0OiBib29sZWFuID0gdHJ1ZSwgcG9ydGxldFR5cGUgPSBcIlwiKSB7XHJcbiAgICBjb25zdCBkYXRhT2JqID0ge1xyXG4gICAgICBkYXRhTWFydENvZGU6IGNvZGUsXHJcbiAgICAgIGxhbmd1YWdlOiB0aGlzLmxhbmcsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5kYXNoYm9hcmRQb3JsZXRzU2VydmljZS5zZXRTY2hlbWFQYXJhbXMoZGF0YU9iaiwgY29kZSwgdGhpcy5kYXNoYm9hcmQpO1xyXG4gICAgdGhpcy5odHRwLnBvc3QodGhpcy5hcGkudXJsTGlzdC5HZXRTY2hlbWEsIGRhdGFPYmosIChyZXMpID0+IHtcclxuICAgICAgaWYgKHJlcykge1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIFtcclxuICAgICAgICAgICAgXCJTZWVUaHJvdWdoUXVhcnRlcmx5XCIsXHJcbiAgICAgICAgICAgIFwiU2VlVGhyb3VnaFllYXJseVwiLFxyXG4gICAgICAgICAgICBcIlNlZVRocm91Z2hNb250aGx5XCIsXHJcbiAgICAgICAgICBdLmluY2x1ZGVzKGNvZGUpXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICByZXMgPSByZXMuZmlsdGVyKFxyXG4gICAgICAgICAgICAoaXRlbSkgPT5cclxuICAgICAgICAgICAgICAhW1xyXG4gICAgICAgICAgICAgICAgXCJDSV9NVERcIixcclxuICAgICAgICAgICAgICAgIFwiQ0lfUVREXCIsXHJcbiAgICAgICAgICAgICAgICBcIkNJX1lURFwiLFxyXG4gICAgICAgICAgICAgICAgXCJDVFdSX01URFwiLFxyXG4gICAgICAgICAgICAgICAgXCJDVFdSX1FURFwiLFxyXG4gICAgICAgICAgICAgICAgXCJDVFdSX1lURFwiLFxyXG4gICAgICAgICAgICAgICAgXCJDVkFSX01URF85NVwiLFxyXG4gICAgICAgICAgICAgICAgXCJDVkFSX01URF85OVwiLFxyXG4gICAgICAgICAgICAgICAgXCJDVkFSX1FURF85NVwiLFxyXG4gICAgICAgICAgICAgICAgXCJDVkFSX1FURF85OVwiLFxyXG4gICAgICAgICAgICAgICAgXCJDVkFSX1lURF85NVwiLFxyXG4gICAgICAgICAgICAgICAgXCJDVkFSX1lURF85OVwiLFxyXG4gICAgICAgICAgICAgIF0uaW5jbHVkZXMoaXRlbS5jb2xOYW1lKVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCF0aGlzLmRhc2hib2FyZFBvcmxldHNTZXJ2aWNlLmZpZWxkc0Fyclt0aGlzLmRhc2hib2FyZC5pZF0pIHtcclxuICAgICAgICAgIHRoaXMuZGFzaGJvYXJkUG9ybGV0c1NlcnZpY2UuZmllbGRzQXJyW3RoaXMuZGFzaGJvYXJkLmlkXSA9IHt9O1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmRhc2hib2FyZFBvcmxldHNTZXJ2aWNlLmZpZWxkc0Fyclt0aGlzLmRhc2hib2FyZC5pZF1bXHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0YW1hcnRcclxuICAgICAgICBdID0gcmVzO1xyXG4gICAgICAgIGlmICh0aGlzLnBvcnRsZXQpIHtcclxuICAgICAgICAgIGlmICh0aGlzLnBvcnRsZXQuY29uZmlnKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29uZmlnID0gSlNPTi5wYXJzZSh0aGlzLnBvcnRsZXQuY29uZmlnKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29uZmlnID0ge307XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAocG9ydGxldFR5cGUpIHtcclxuICAgICAgICAgICAgdGhpcy5jb25maWcucG9ydGxldFR5cGUgPSBwb3J0bGV0VHlwZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuY29uZmlnLmZpZWxkcyA9IHJlcztcclxuXHJcbiAgICAgICAgICAvLyBUTyBETyDov4fmu6RZ6L2055qE5pWw5o2uXHJcbiAgICAgICAgICB0aGlzLnlMaXN0ID0gcmVzO1xyXG4gICAgICAgICAgdGhpcy5wb3J0bGV0LmNvbmZpZyA9IHRoaXMuY29uZmlnID8gSlNPTi5zdHJpbmdpZnkodGhpcy5jb25maWcpIDogXCJcIjtcclxuXHJcbiAgICAgICAgICBlZGl0ICYmIHRoaXMuQWRkT3JFZGl0UG9ydGxldCgpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmNvbmZpZy5maWVsZHMgPSByZXM7XHJcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgcG9ydGxldCA9IE9iamVjdC5hc3NpZ24oe30sIHRoaXMucG9ydGxldCk7XHJcbiAgICAgICAgICAgIHBvcnRsZXQuY29uZmlnID0gdGhpcy5jb25maWc7XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlUG9ybGV0LmVtaXQocG9ydGxldCk7XHJcbiAgICAgICAgICAgIC8vIFRPIERPIOi/h+a7pFnovbTnmoTmlbDmja5cclxuICAgICAgICAgICAgdGhpcy55TGlzdCA9IHJlcztcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0TXVsdGlwbGVBeGlzKGUpIHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBpZiAoIXRoaXMuY2hhcnRTZXR0aW5ncy5lbmFibGVNdWx0aXBsZUF4aXMpIHtcclxuICAgICAgICB0aGlzLmNoYXJ0U2V0dGluZ3MubGVnZW5kU2V0dGluZ3MudmlzaWJsZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZGFzaGJvYXJkU2VydmljZS5lbmFibGVNdWx0aXBsZUF4aXNDaGFuZ2UubmV4dCh7XHJcbiAgICAgICAgbmV3SWQ6IHRoaXMucG9ydGxldC5uZXdJZCxcclxuICAgICAgICBlbmFibGVNdWx0aXBsZUF4aXM6IHRoaXMuY2hhcnRTZXR0aW5ncy5lbmFibGVNdWx0aXBsZUF4aXMsXHJcbiAgICAgICAgdmlzaWJsZTogdGhpcy5jaGFydFNldHRpbmdzLmxlZ2VuZFNldHRpbmdzLnZpc2libGUsXHJcbiAgICAgICAgbXVsdGlwbGVBeGlzTW9kZTogdGhpcy5jaGFydFNldHRpbmdzLm11bHRpcGxlQXhpc01vZGUsXHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0Q2hhcnRUeXBlKCkge1xyXG4gICAgY29uc3QgcG9ydGxldCA9IE9iamVjdC5hc3NpZ24oe30sIHRoaXMucG9ydGxldCk7XHJcbiAgICBpZiAocG9ydGxldC5jb25maWcpIHtcclxuICAgICAgY29uc3QgY29uZmlnID0gSlNPTi5wYXJzZShwb3J0bGV0LmNvbmZpZyk7XHJcbiAgICAgIGNvbmZpZy5wdnRhYmxlQ2hhcnRTZXR0aW5nID0gY29uZmlnLnB2dGFibGVDaGFydFNldHRpbmdcclxuICAgICAgICA/IHtcclxuICAgICAgICAgICAgLi4uY29uZmlnLnB2dGFibGVDaGFydFNldHRpbmcsXHJcbiAgICAgICAgICAgIGNoYXJ0U2V0dGluZ3M6IHRoaXMuY2hhcnRTZXR0aW5ncyxcclxuICAgICAgICAgIH1cclxuICAgICAgICA6IHsgY2hhcnRTZXR0aW5nczogdGhpcy5jaGFydFNldHRpbmdzIH07XHJcbiAgICAgIHBvcnRsZXQuY29uZmlnID0gSlNPTi5zdHJpbmdpZnkoY29uZmlnKTtcclxuICAgIH1cclxuICAgIHRoaXMudXBkYXRlUG9ybGV0LmVtaXQocG9ydGxldCk7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5kYXNoYm9hcmRTZXJ2aWNlLmNoYXJ0VHlwZUNoYW5nZS5uZXh0KHtcclxuICAgICAgICBuZXdJZDogdGhpcy5wb3J0bGV0Lm5ld0lkLFxyXG4gICAgICAgIGNoYXJ0U2V0dGluZ3M6IHRoaXMuY2hhcnRTZXR0aW5ncyxcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRUaGVtZURhdGEoZSkge1xyXG4gICAgY29uc3QgaWQgPSBlLnZhbHVlO1xyXG4gICAgY29uc3QgcG9ydGxldCA9IHRoaXMucG9ydGxldDtcclxuICAgIGNvbnN0IHRoZW1lID0gdGhpcy50aGVtZURhdGEuZmluZCgoaXRlbSkgPT4gaXRlbS5pZCA9PT0gaWQpO1xyXG4gICAgaWYgKCF0aGVtZSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLmRhc2hib2FyZFNlcnZpY2Uuc2V0VGhlbWUubmV4dCh7XHJcbiAgICAgIG5ld0lkOiBwb3J0bGV0Lm5ld0lkLFxyXG4gICAgICB0aGVtZTogdGhlbWUudmFsdWUsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBBZGRPckVkaXRQb3J0bGV0KCkge1xyXG4gICAgY29uc3QgcG9ydGxldFR5cGUgPVxyXG4gICAgICB0aGlzLmNvbmZpZy5wb3J0bGV0VHlwZSA9PT0gXCJoaXN0b3JpY2FsSVJSXCJcclxuICAgICAgICA/IHRoaXMuY29uZmlnLnNlbGVjdGVkVmlzdWFsVHlwZVxyXG4gICAgICAgIDogdGhpcy5jb25maWcucG9ydGxldFR5cGU7XHJcbiAgICBpZiAodGhpcy5wb3J0bGV0ICYmIHRoaXMucG9ydGxldC5uZXdJZCkge1xyXG4gICAgICAvLyBTTVAyLTE3NjU0IOmcgOimgeWwhumAieaLqeeahCBmcmVxdWVuY3njgIFpbnZlc3RvcuOAgXZpc3VhbCB0eXBlIOS/neWtmOWIsCBjb25maWcg5Lit55So5p2l5ou/5Y+W5ZCO56uv5pWw5o2uXHJcbiAgICAgIC8vIOS9huaYr+WmguaenOebtOaOpeS/neWtmCB0aGlzLmNvbmZpZyDkvJrlh7rnjrAgU01QMi0xODgzNyDov5nkuKogQlVHXHJcbiAgICAgIGNvbnN0IGNvbmZpZyA9IEpTT04ucGFyc2UodGhpcy5wb3J0bGV0LmNvbmZpZyk7XHJcbiAgICAgIGlmICh0aGlzLmhhc0NoYW5nZWQpIHtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICBbXCJuZXdjb2x1bW5cIiwgXCJuZXdsaW5lXCIsIFwibmV3Y29sdW1ubGluZVwiXS5pbmNsdWRlcyhwb3J0bGV0VHlwZSkgJiZcclxuICAgICAgICAgICh0aGlzLnNlbGVjdGVkWS5sZW5ndGggPiAwIHx8IHRoaXMuc2VsZWN0ZWRTZWNvbmRZLmxlbmd0aCA+IDApXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICBjb25maWdbXCJzZWxlY3RlZFhcIl0gPSB0aGlzLnNlbGVjdGVkWDtcclxuICAgICAgICAgIGNvbmZpZ1tcInNlbGVjdGVkWVwiXSA9IHRoaXMuc2VsZWN0ZWRZO1xyXG4gICAgICAgICAgY29uZmlnW1wic2VsZWN0ZWRTZWNvbmRZXCJdID0gdGhpcy5zZWxlY3RlZFNlY29uZFk7XHJcbiAgICAgICAgICBjb25maWdbXCJzZWxlY3RlZE11bHRpcGxlc1wiXSA9IHRoaXMuc2VsZWN0ZWRNdWx0aXBsZXM7XHJcbiAgICAgICAgICBjb25maWdbXCJzZWxlY3RUaGVtZVwiXSA9IHRoaXMuc2VsZWN0VGhlbWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoY29uZmlnLnBvcnRsZXRUeXBlID09PSBcIm5ld2NoYXJ0XCIpIHtcclxuICAgICAgICAgIGNvbmZpZy5wdnRhYmxlQ2hhcnRTZXR0aW5nID0ge1xyXG4gICAgICAgICAgICBjaGFydFNldHRpbmdzOiB0aGlzLmNoYXJ0U2V0dGluZ3MsXHJcbiAgICAgICAgICAgIGRpc3BsYXlPcHRpb246IHRoaXMuZGlzcGxheU9wdGlvbixcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGNvbmZpZy5zZWxlY3RlZE11bHRpcGxlcyA9IHRoaXMuY29uZmlnLnNlbGVjdGVkTXVsdGlwbGVzO1xyXG4gICAgICBjb25maWcuc2VsZWN0ZWRJbnZlc3RvciA9IHRoaXMuY29uZmlnLnNlbGVjdGVkSW52ZXN0b3I7XHJcbiAgICAgIGNvbmZpZy5zZWxlY3RlZFZpc3VhbFR5cGUgPSB0aGlzLmNvbmZpZy5zZWxlY3RlZFZpc3VhbFR5cGU7XHJcbiAgICAgIGNvbnN0IHBvcnRsZXQgPSBPYmplY3QuYXNzaWduKHt9LCB0aGlzLnBvcnRsZXQpO1xyXG4gICAgICBwb3J0bGV0LmNvbmZpZyA9IEpTT04uc3RyaW5naWZ5KGNvbmZpZyk7XHJcbiAgICAgIC8vIOaWsOWinkRhdGFUYWJsZeexu+Wei++8jCDnvJbovpFQb3JsZXRcclxuICAgICAgdGhpcy5kYXNoYm9hcmRQb3JsZXRzU2VydmljZS5zZXREYXRhTWFuYWdlcihcclxuICAgICAgICBbdGhpcy5nZXRUcnVlU2VsZWN0ZWREYXRhbWFydCgpXSxcclxuICAgICAgICAocmVzKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnBiZi5wYWdlTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5wYmYucGFnZUxvYWRpbmdfLm5leHQodHJ1ZSk7XHJcbiAgICAgICAgICB0aGlzLmVkaXRQb3J0bGV0KCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBbcG9ydGxldFR5cGVdLFxyXG4gICAgICAgIHRoaXMuZGFzaGJvYXJkLmlkLFxyXG4gICAgICAgIHBvcnRsZXRcclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY29uZmlnLmZpZWxkcy5tYXAoKGVsKSA9PiB7XHJcbiAgICAgICAgZWwudmlzaWJsZSA9IHRydWU7XHJcbiAgICAgIH0pO1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgW1wibmV3Y29sdW1uXCIsIFwibmV3bGluZVwiLCBcIm5ld2NvbHVtbmxpbmVcIl0uaW5jbHVkZXMocG9ydGxldFR5cGUpICYmXHJcbiAgICAgICAgKHRoaXMuc2VsZWN0ZWRZLmxlbmd0aCA+IDAgfHwgdGhpcy5zZWxlY3RlZFNlY29uZFkubGVuZ3RoID4gMClcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy5jb25maWdbXCJzZWxlY3RlZFhcIl0gPSB0aGlzLnNlbGVjdGVkWDtcclxuICAgICAgICB0aGlzLmNvbmZpZ1tcInNlbGVjdGVkWVwiXSA9IHRoaXMuc2VsZWN0ZWRZO1xyXG4gICAgICAgIHRoaXMuY29uZmlnW1wic2VsZWN0ZWRTZWNvbmRZXCJdID0gdGhpcy5zZWxlY3RlZFNlY29uZFk7XHJcbiAgICAgICAgdGhpcy5jb25maWdbXCJzZWxlY3RlZE11bHRpcGxlc1wiXSA9IHRoaXMuc2VsZWN0ZWRNdWx0aXBsZXM7XHJcbiAgICAgICAgdGhpcy5jb25maWdbXCJzZWxlY3RUaGVtZVwiXSA9IHRoaXMuc2VsZWN0VGhlbWU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh0aGlzLmNvbmZpZy5wb3J0bGV0VHlwZSA9PT0gXCJuZXdjaGFydFwiKSB7XHJcbiAgICAgICAgdGhpcy5jb25maWcucHZ0YWJsZUNoYXJ0U2V0dGluZyA9IHtcclxuICAgICAgICAgIGNoYXJ0U2V0dGluZ3M6IHRoaXMuY2hhcnRTZXR0aW5ncyxcclxuICAgICAgICAgIGRpc3BsYXlPcHRpb246IHRoaXMuZGlzcGxheU9wdGlvbixcclxuICAgICAgICB9O1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLmdldFNlbGVjdERhdGFtYXJ0SWQoKTtcclxuICAgICAgY29uc3QgcG9ydGxldGRhdGEgPSB7XHJcbiAgICAgICAgaWQ6IFwiMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXHJcbiAgICAgICAgbmV3SWQ6IFwicG9ydGxldF9cIiArIHRoaXMucGJmLkd1aWQoKSxcclxuICAgICAgICBkYXNoYm9hcmREYXRhVGFibGVJZDogdGhpcy5nZXRTZWxlY3REYXRhbWFydElkKCksXHJcbiAgICAgICAgZmlndXJlQ29kZTogdGhpcy5nZXRUcnVlU2VsZWN0ZWREYXRhbWFydCgpLFxyXG4gICAgICAgIGNvbDogMCxcclxuICAgICAgICByb3c6IDAsXHJcbiAgICAgICAgc2l6ZVg6IDIsXHJcbiAgICAgICAgc2l6ZVk6IDEsXHJcbiAgICAgICAgcG9zWDogMCxcclxuICAgICAgICBwb3NZOiAwLFxyXG4gICAgICAgIGhlaWdodDogMSxcclxuICAgICAgICB3aWR0aDogMixcclxuICAgICAgICBjb25maWc6IEpTT04uc3RyaW5naWZ5KHRoaXMuY29uZmlnKSxcclxuICAgICAgfTtcclxuICAgICAgdGhpcy51cGRhdGVQb3JsZXQuZW1pdChwb3J0bGV0ZGF0YSk7XHJcbiAgICAgIHRoaXMucG9ydGxldHMuZm9yRWFjaCgocG9ydGxldCkgPT4ge1xyXG4gICAgICAgIHBvcnRsZXQucm93ICs9IDE7XHJcbiAgICAgIH0pO1xyXG4gICAgICAvLyDmlrDlop5EYXRhVGFibGXnsbvlnovvvIwg5paw5aKeUG9ybGV0XHJcbiAgICAgIHRoaXMuZGFzaGJvYXJkUG9ybGV0c1NlcnZpY2Uuc2V0RGF0YU1hbmFnZXIoXHJcbiAgICAgICAgW3RoaXMuZ2V0VHJ1ZVNlbGVjdGVkRGF0YW1hcnQoKV0sXHJcbiAgICAgICAgKHJlcykgPT4ge1xyXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZGFzaGJvYXJkU2VydmljZS5hZGRPcmRlbFBvcnRsZXQubmV4dCh0aGlzLmRhc2hib2FyZC5pZCk7XHJcbiAgICAgICAgICAgIHRoaXMucGJmLnBhZ2VMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMucGJmLnBhZ2VMb2FkaW5nXy5uZXh0KHRydWUpO1xyXG4gICAgICAgICAgfSwgMjAwKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIFtwb3J0bGV0VHlwZV0sXHJcbiAgICAgICAgdGhpcy5kYXNoYm9hcmQuaWQsXHJcbiAgICAgICAgcG9ydGxldGRhdGFcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcbiAgcHJpdmF0ZSBlZGl0UG9ydGxldCgpIHtcclxuICAgIGlmICh0aGlzLnBvcnRsZXQpIHtcclxuICAgICAgY29uc3QgcG9ydGxldFR5cGUgPVxyXG4gICAgICAgIHRoaXMuY29uZmlnLnBvcnRsZXRUeXBlID09PSBcImhpc3RvcmljYWxJUlJcIlxyXG4gICAgICAgICAgPyB0aGlzLmNvbmZpZy5zZWxlY3RlZFZpc3VhbFR5cGVcclxuICAgICAgICAgIDogdGhpcy5jb25maWcucG9ydGxldFR5cGU7XHJcbiAgICAgIGlmIChbXCJ0YWJsZVwiLCBcInRyYW5zcG9zZVwiLCBcImZpbmFuY2lhbFRhYmxlXCJdLmluY2x1ZGVzKHBvcnRsZXRUeXBlKSkge1xyXG4gICAgICAgIHRoaXMuY29uZmlnLmZpbHRlclNldHRpbmdzID0gW107XHJcbiAgICAgICAgdGhpcy5jb25maWcuZmllbGRzLm1hcCgoZWwpID0+IHtcclxuICAgICAgICAgIGVsLnZpc2libGUgPSB0cnVlO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5wb3J0bGV0cy5maW5kSW5kZXgoXHJcbiAgICAgICAgKHgpID0+IHgubmV3SWQgPT09IHRoaXMucG9ydGxldC5uZXdJZFxyXG4gICAgICApO1xyXG4gICAgICBpZiAoaW5kZXggPiAtMSkge1xyXG4gICAgICAgIHRoaXMucG9ydGxldHNbaW5kZXhdLmNvbmZpZyA9IEpTT04uc3RyaW5naWZ5KHRoaXMuY29uZmlnKTtcclxuXHJcbiAgICAgICAgaWYgKFtcIm5ld2NvbHVtblwiLCBcIm5ld2xpbmVcIiwgXCJuZXdjb2x1bW5saW5lXCJdLmluY2x1ZGVzKHBvcnRsZXRUeXBlKSkge1xyXG4gICAgICAgICAgdGhpcy5wb3J0bGV0c1tpbmRleF0uZmlndXJlQ29kZSA9IHRoaXMuZ2V0VHJ1ZVNlbGVjdGVkRGF0YW1hcnQoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IHBvcnRsZXQgPSBPYmplY3QuYXNzaWduKHt9LCB0aGlzLnBvcnRsZXQpO1xyXG4gICAgICAgIHBvcnRsZXQuY29uZmlnID0gSlNPTi5zdHJpbmdpZnkodGhpcy5jb25maWcpO1xyXG4gICAgICAgIHBvcnRsZXQuZGFzaGJvYXJkRGF0YVRhYmxlSWQgPSB0aGlzLmdldFNlbGVjdERhdGFtYXJ0SWQoKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZVBvcmxldC5lbWl0KHBvcnRsZXQpO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IGlkID0gdGhpcy5wb3J0bGV0LmlkIHx8IHRoaXMucG9ydGxldC5uZXdJZDtcclxuICAgICAgdGhpcy5jaGFydFVwZGF0ZS5lbWl0KGlkKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHN3aXRjaFRhYih0eXBlKSB7XHJcbiAgICB0aGlzLmN1cnJlbnRUYWIgPSB0eXBlO1xyXG4gICAgdGhpcy5vblRvZ2dsZVRhYmFjdGl2ZS5lbWl0KCF0aGlzLnRhYmFjdGl2ZSk7XHJcbiAgICB0aGlzLmRhc2hib2FyZFNlcnZpY2UucG9ydGxldEVkaXQubmV4dCh0aGlzLmRhc2hib2FyZElkKTtcclxuICB9XHJcblxyXG4gIGdhZGdldFRpdGxlQ2hhbmdlKG5ld09iaikge1xyXG4gICAgaWYgKCF0aGlzLnBvcnRsZXQgfHwgIXRoaXMucG9ydGxldC5jb25maWcpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jb25maWcgPSBKU09OLnBhcnNlKHRoaXMucG9ydGxldC5jb25maWcpO1xyXG4gICAgdGhpcy5jb25maWcuZ2FkZ2V0VGl0bGUgPSBuZXdPYmo7XHJcbiAgICBjb25zdCBpbmRleCA9IHRoaXMucG9ydGxldHMuZmluZEluZGV4KFxyXG4gICAgICAoeCkgPT4geC5uZXdJZCA9PT0gdGhpcy5wb3J0bGV0Lm5ld0lkXHJcbiAgICApO1xyXG4gICAgaWYgKGluZGV4ID4gLTEpIHRoaXMucG9ydGxldHNbaW5kZXhdLmNvbmZpZyA9IEpTT04uc3RyaW5naWZ5KHRoaXMuY29uZmlnKTtcclxuICAgIHRoaXMucG9ydGxldC5jb25maWcgPSBKU09OLnN0cmluZ2lmeSh0aGlzLmNvbmZpZyk7XHJcbiAgICB0aGlzLmRhc2hib2FyZFNlcnZpY2UucG9ydGxldFRpdGxlLm5leHQodHJ1ZSk7XHJcbiAgfVxyXG5cclxuICBzZXREYXRhYmluZCgpIHtcclxuICAgIGlmICh0aGlzLnBvcnRsZXQpIHtcclxuICAgICAgY29uc3QgeyBkYXRhTWFydFRhYmxlcyA9IHt9IH0gPSB0aGlzLmRhc2hib2FyZFBvcmxldHNTZXJ2aWNlO1xyXG4gICAgICBsZXQgZmlndXJlQ29kZSA9IHRoaXMucG9ydGxldC5maWd1cmVDb2RlO1xyXG4gICAgICBkYXRhTWFydFRhYmxlc1t0aGlzLmRhc2hib2FyZC5pZF0uZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICAgIGlmIChpdGVtLmRhdGFtYXJ0Q29kZSA9PT0gZmlndXJlQ29kZSAmJiBpdGVtLnByZWZpeCkge1xyXG4gICAgICAgICAgZmlndXJlQ29kZSA9IGl0ZW0ucHJlZml4O1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIGlmIChcclxuICAgICAgICB0aGlzLmRhdGFNYXJ0VGFibGVMaXN0ICYmXHJcbiAgICAgICAgdGhpcy5kYXRhTWFydFRhYmxlTGlzdC5sZW5ndGggJiZcclxuICAgICAgICAhdGhpcy5kYXRhTWFydFRhYmxlTGlzdC5maW5kKChpdGVtKSA9PiBpdGVtLmRhdGFtYXJ0Q29kZSA9PT0gZmlndXJlQ29kZSlcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy5kYXRhTWFydFRhYmxlTGlzdC5mb3JFYWNoKChkYXRhKSA9PiB7XHJcbiAgICAgICAgICBpZiAoZGF0YS5wcmVmaXggPT09IGZpZ3VyZUNvZGUpIHtcclxuICAgICAgICAgICAgZmlndXJlQ29kZSA9IGRhdGEuZGF0YW1hcnRDb2RlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLnNlbGVjdGVkRGF0YW1hcnQgPSBmaWd1cmVDb2RlO1xyXG4gICAgICB0aGlzLmNvbmZpZyA9IHt9O1xyXG4gICAgICBpZiAodGhpcy5wb3J0bGV0LmNvbmZpZykgdGhpcy5jb25maWcgPSBKU09OLnBhcnNlKHRoaXMucG9ydGxldC5jb25maWcpO1xyXG4gICAgICB0aGlzLmhhc01hcmtlciA9IHRoaXMuY29uZmlnLmhhc01hcmtlcjtcclxuICAgICAgdGhpcy5tYXJrZXJGb3JtYXQgPSB0aGlzLmNvbmZpZy5tYXJrZXJGb3JtYXQgfHwgXCJcIjtcclxuXHJcbiAgICAgIGlmICh0aGlzLmNvbmZpZy5wb3J0bGV0VHlwZSA9PT0gXCJoaXN0b3JpY2FsSVJSXCIpIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkTXVsdGlwbGVzID0gdGhpcy5jb25maWcuc2VsZWN0ZWRNdWx0aXBsZXM7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEludmVzdG9yID0gdGhpcy5jb25maWcuc2VsZWN0ZWRJbnZlc3RvcjtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkVmlzdWFsVHlwZSA9IHRoaXMuY29uZmlnLnNlbGVjdGVkVmlzdWFsVHlwZTtcclxuICAgICAgICB0aGlzLnBvcnRsZXRUeXBlID0gdGhpcy5jb25maWcucG9ydGxldFR5cGU7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgcG9ydGxldFR5cGUgPVxyXG4gICAgICAgIHRoaXMuY29uZmlnLnBvcnRsZXRUeXBlID09PSBcImhpc3RvcmljYWxJUlJcIlxyXG4gICAgICAgICAgPyB0aGlzLmNvbmZpZy5zZWxlY3RlZFZpc3VhbFR5cGVcclxuICAgICAgICAgIDogdGhpcy5jb25maWcucG9ydGxldFR5cGU7XHJcbiAgICAgIGlmIChbXCJuZXdjb2x1bW5cIiwgXCJuZXdsaW5lXCIsIFwibmV3Y29sdW1ubGluZVwiXS5pbmNsdWRlcyhwb3J0bGV0VHlwZSkpIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkWCA9IHRoaXMuX3NlbGVjdGVkWDtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkWSA9IHRoaXMuX3NlbGVjdGVkWTtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkU2Vjb25kWSA9IHRoaXMuX3NlbGVjdGVkU2Vjb25kWTtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkTXVsdGlwbGVzID0gdGhpcy5fc2VsZWN0ZWRNdWx0aXBsZXM7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RUaGVtZSA9IHRoaXMuX3NlbGVjdFRoZW1lO1xyXG4gICAgICAgIHRoaXMucG9ydGxldFR5cGUgPSB0aGlzLmNvbmZpZy5wb3J0bGV0VHlwZTtcclxuICAgICAgICB0aGlzLmdldERhdGEodGhpcy5wb3J0bGV0LmZpZ3VyZUNvZGUsIGZhbHNlKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHRoaXMuY29uZmlnLnBvcnRsZXRUeXBlID09PSBcIm5ld2NoYXJ0XCIpIHtcclxuICAgICAgICB0aGlzLnBvcnRsZXRUeXBlID0gXCJuZXdjaGFydFwiO1xyXG4gICAgICAgIGlmICh0aGlzLmNvbmZpZy5wdnRhYmxlQ2hhcnRTZXR0aW5nKSB7XHJcbiAgICAgICAgICB0aGlzLmNoYXJ0U2V0dGluZ3MgPSB7XHJcbiAgICAgICAgICAgIC4uLnRoaXMuY29uZmlnLnB2dGFibGVDaGFydFNldHRpbmcuY2hhcnRTZXR0aW5ncyxcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgICBpZiAodGhpcy5jb25maWcucHZ0YWJsZUNoYXJ0U2V0dGluZy5jaGFydFNldHRpbmdzLnBhbGV0dGVzKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHsgcGFsZXR0ZXMgfSA9IHRoaXMuY29uZmlnLnB2dGFibGVDaGFydFNldHRpbmcuY2hhcnRTZXR0aW5ncztcclxuICAgICAgICAgICAgaWYgKHBhbGV0dGVzICYmIHBhbGV0dGVzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0VGhlbWUgPSB0aGlzLnRoZW1lRGF0YS5maW5kKFxyXG4gICAgICAgICAgICAgICAgKGl0ZW0pID0+XHJcbiAgICAgICAgICAgICAgICAgIC8vIOeUqOS6juWIpOaWreS4pOS4qlxyXG4gICAgICAgICAgICAgICAgICBKU09OLnN0cmluZ2lmeShpdGVtLnZhbHVlKSA9PT0gSlNPTi5zdHJpbmdpZnkocGFsZXR0ZXMpXHJcbiAgICAgICAgICAgICAgKS5pZDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmNvbmZpZy5wdnRhYmxlQ2hhcnRTZXR0aW5nID0ge1xyXG4gICAgICAgICAgICBkaXNwbGF5T3B0aW9uOiB0aGlzLmRpc3BsYXlPcHRpb24sXHJcbiAgICAgICAgICAgIGNoYXJ0U2V0dGluZ3M6IHRoaXMuY2hhcnRTZXR0aW5ncyxcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRGF0YW1hcnQgPSBcIlwiO1xyXG4gICAgICB0aGlzLmNvbmZpZyA9IHRoaXMuZ2V0Q29uZmlnKFtdKTtcclxuICAgIH1cclxuICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuICBwcml2YXRlIGdldENvbmZpZyhmaWVsZHMpIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIHRhYklkOiB0aGlzLmFjdGl2ZVRhYklkLFxyXG4gICAgICB0YWJMYWJlbDogdGhpcy5hY3RpdmVUYWJMYWJlbCxcclxuICAgICAgcG9ydGxldFR5cGU6IFwiXCIsXHJcbiAgICAgIGdhZGdldFRpdGxlOiBcIlwiLFxyXG4gICAgICBpc1VwVG9EYXRlOiBmYWxzZSxcclxuICAgICAgcGVyaW9kOiAzLFxyXG4gICAgICBwYWdlYnJlYWs6IGZhbHNlLFxyXG4gICAgICB0aW1lTWVhc3VyZTogXCJNVERcIixcclxuICAgICAgc2VyaWVzOiBbXSxcclxuICAgICAgc1NlcmllczogW10sXHJcbiAgICAgIHRyZW5kc09yZGVyOiAxLFxyXG4gICAgICBzaG93VHJlbmRzOiB0cnVlLFxyXG4gICAgICBudW1iZXJGb3JtYXQ6IFwiIywjIzBcIixcclxuICAgICAgc2hvd0N1cnJlbnREYXRhOiBmYWxzZSxcclxuICAgICAgZmllbGRzOiBmaWVsZHMsXHJcbiAgICAgIGFsbEZpZWxkczogW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIGNvbE5hbWU6IFwiQUxMX1RFWFRfRklFTERTXCIsXHJcbiAgICAgICAgICBsYW5nVmFsdWU6IFwiQWxsIHRleHQgZmllbGRzXCIsXHJcbiAgICAgICAgICBkYXRhVHlwZTogXCJzdHJpbmdcIixcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGNvbE5hbWU6IFwiQUxMX0RBVEVfRklFTERTXCIsXHJcbiAgICAgICAgICBsYW5nVmFsdWU6IFwiQWxsIGRhdGUgZmllbGRzXCIsXHJcbiAgICAgICAgICBkYXRhVHlwZTogXCJkYXRlXCIsXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBjb2xOYW1lOiBcIkFMTF9OVU1CRVJfRklFTERTXCIsXHJcbiAgICAgICAgICBsYW5nVmFsdWU6IFwiQWxsIG51bWJlciBmaWVsZHNcIixcclxuICAgICAgICAgIGRhdGFUeXBlOiBcIm51bWJlclwiLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgY29sTmFtZTogXCJBTExfSU5URUdFUl9GSUVMRFNcIixcclxuICAgICAgICAgIGxhbmdWYWx1ZTogXCJBbGwgaW50ZWdlciBmaWVsZHNcIixcclxuICAgICAgICAgIGRhdGFUeXBlOiBcImludGVnZXJcIixcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGNvbE5hbWU6IFwiQUxMX1BFUkNFTlRBR0VfRklFTERTXCIsXHJcbiAgICAgICAgICBsYW5nVmFsdWU6IFwiQWxsIHBlcmNlbnRhZ2UgZmllbGRzXCIsXHJcbiAgICAgICAgICBkYXRhVHlwZTogXCJwZXJjZW50XCIsXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBjb2xOYW1lOiBcIkFMTF9NVUxUSVBMRV9GSUVMRFNcIixcclxuICAgICAgICAgIGxhbmdWYWx1ZTogXCJBbGwgbXVsdGlwbGUgZmllbGRzXCIsXHJcbiAgICAgICAgICBkYXRhVHlwZTogXCJtdWx0aXBsZVwiLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIF0sXHJcbiAgICAgIGZpbHRlcnM6IFtdLFxyXG4gICAgICBmaWx0ZXJTZXR0aW5nczogW10sXHJcbiAgICAgIGNvbHVtbkdyb3VwOiBbXSxcclxuICAgICAgbGlzdE9mSW52ZXN0ZWVJZDogW10sXHJcbiAgICAgIGludmVzdGVlSWQ6IFwiMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXHJcbiAgICAgIGdyb3VwQnk6IFwiXCIsXHJcbiAgICAgIGdyb3VwczogW10sXHJcbiAgICAgIGFzT2ZEYXRlOiBcIlwiLFxyXG4gICAgICBjdXJyZW5jeUNvZGU6IFwiXCIsXHJcbiAgICAgIGZ1bmRJZDogXCIwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDBcIixcclxuICAgICAgeGF4aXM6IHsgZ3JvdXBzOiBbXSB9LFxyXG4gICAgICB5YXhpczoge1xyXG4gICAgICAgIHNlcmllczogW3sgcG9ydGxldFR5cGU6IFwiXCIsIGNvbE5hbWU6IFwiXCIsIGNhbE1ldGhvZDogXCJcIiB9XSxcclxuICAgICAgfSxcclxuICAgICAgY2FsY3VsYXRlZEZpZWxkU2V0dGluZ3M6IFtdLFxyXG4gICAgICBjb2x1bW5zV2lkdGg6IFtdLFxyXG4gICAgICBzb3J0U2V0dGluZ3M6IFtdLFxyXG4gICAgICBncm91cFNldHRpbmdzOiBbXSxcclxuICAgICAgdmFsdWVTb3J0U2V0dGluZ3M6IHt9LFxyXG4gICAgICBzaG93R3JhbmRUb3RhbHM6IHRydWUsXHJcbiAgICAgIHNob3dSb3dHcmFuZFRvdGFsczogdHJ1ZSxcclxuICAgICAgc2hvd0NvbHVtbkdyYW5kVG90YWxzOiB0cnVlLFxyXG4gICAgICBzaG93U3ViVG90YWxzOiB0cnVlLFxyXG4gICAgICBzaG93Um93U3ViVG90YWxzOiB0cnVlLFxyXG4gICAgICBzaG93Q29sdW1uU3ViVG90YWxzOiB0cnVlLFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZWxlY3RlZEludmVzdG9yID0gbnVsbDtcclxuICBwdWJsaWMgaW52ZXN0b3JMaXN0ID0gW107XHJcbiAgcHVibGljIHNlbGVjdGVkVmlzdWFsVHlwZSA9IG51bGw7XHJcbiAgcHVibGljIHZpc3VhbFR5cGVMaXN0ID0gW107XHJcblxyXG4gIC8vIGhpc3RvcmljYWwgSVJSIGZyZXF1ZW5jeSDkuI3pnIDopoEgRGFpbHlcclxuICBnZXQgZnJlcXVlbmN5T3B0aW9ucygpIHtcclxuICAgIHJldHVybiB0aGlzLm11bHRpcGxlc0xpc3QuZmlsdGVyKChpKSA9PiBpLmxhbmdDb2RlICE9PSBcIkRBSUxZXCIpO1xyXG4gIH1cclxuXHJcbiAgaW5pdEhpc3RvcmljYWxJUlJPcHRpb25zKCkge1xyXG4gICAgY29uc3QgY2hhcnRUZXh0ID0gdGhpcy50cmFuc2xhdGlvbi5DT01QQU5ZX0NIQVJUIHx8IFwiLkNPTVBBTllfQ0hBUlRcIjtcclxuICAgIHRoaXMuaW52ZXN0b3JMaXN0ID0gW1xyXG4gICAgICB7XHJcbiAgICAgICAgY29kZTogXCJBbGxcIixcclxuICAgICAgICB0ZXh0OiB0aGlzLnRyYW5zbGF0aW9uLkFMTCxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGNvZGU6IFwiRXhjbHVkZUdQJlNMUFwiLFxyXG4gICAgICAgIHRleHQ6IHRoaXMudHJhbnNsYXRpb25bXCJFWENMVURFX0dQJlNMUFwiXSB8fCBcIi5FeGNsdWRlIEdQJlNMUFwiLFxyXG4gICAgICB9LFxyXG4gICAgXTtcclxuICAgIHRoaXMudmlzdWFsVHlwZUxpc3QgPSBbXHJcbiAgICAgIHtcclxuICAgICAgICBjb2RlOiBcIm5ld2xpbmVcIixcclxuICAgICAgICB0ZXh0OiBgJHt0aGlzLnRyYW5zbGF0aW9uLkxJTkUgfHwgXCIuTElORVwifSAke2NoYXJ0VGV4dH1gLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgY29kZTogXCJuZXdjb2x1bW5cIixcclxuICAgICAgICB0ZXh0OiBgJHt0aGlzLnRyYW5zbGF0aW9uLkNPTFVNTn0gJHtjaGFydFRleHR9YCxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGNvZGU6IFwidGFibGVcIixcclxuICAgICAgICB0ZXh0OiB0aGlzLnRyYW5zbGF0aW9uLlRBQkxFIHx8IFwiLlRBQkxFXCIsXHJcbiAgICAgIH0sXHJcbiAgICBdO1xyXG4gIH1cclxuXHJcbiAgb25TZWxlY3RlZEhpc3RvcmljYWxJUlJQb3J0bGV0KCkge1xyXG4gICAgdGhpcy5zZWxlY3RlZEludmVzdG9yID0gXCJBbGxcIjtcclxuICAgIHRoaXMuc2VsZWN0ZWRNdWx0aXBsZXMgPSBcIlFVQVJURVJMWVwiO1xyXG4gICAgdGhpcy5zZWxlY3RlZFZpc3VhbFR5cGUgPSBcIm5ld2xpbmVcIjtcclxuICAgIHRoaXMuc2V0SGlzdG9yaWNhbElSUkNoYXJ0KGZhbHNlKTtcclxuICB9XHJcblxyXG4gIHNldEhpc3RvcmljYWxJUlJDaGFydChvcGVuZWQ6IGJvb2xlYW4pIHtcclxuICAgIGlmIChvcGVuZWQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLnNlbGVjdGVkVmlzdWFsVHlwZSAhPT0gXCJ0YWJsZVwiICYmXHJcbiAgICAgIHRoaXMuY29uZmlnLnNlbGVjdGVkVmlzdWFsVHlwZSA9PT0gXCJ0YWJsZVwiXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5oYXNNYXJrZXIgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmNvbmZpZy5zZWxlY3RlZFZpc3VhbFR5cGUgPSB0aGlzLnNlbGVjdGVkVmlzdWFsVHlwZTtcclxuICAgIHRoaXMuY29uZmlnLnNlbGVjdGVkSW52ZXN0b3IgPSB0aGlzLnNlbGVjdGVkSW52ZXN0b3I7XHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZFZpc3VhbFR5cGUgIT09IFwidGFibGVcIikge1xyXG4gICAgICAvLyDov5nph4znoa7lrpogeOOAgXkg6L205a2X5q615ZCN56ewXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRYID0gXCJEYXRlXCI7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRZID0gW1wiSVJSXCJdO1xyXG4gICAgICByZXR1cm4gdGhpcy54eUNoYW5nZShmYWxzZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmNvbmZpZy5zZWxlY3RlZE11bHRpcGxlcyA9IHRoaXMuc2VsZWN0ZWRNdWx0aXBsZXM7XHJcbiAgICAgIHRoaXMuQWRkT3JFZGl0UG9ydGxldCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2VsZWN0ZWRYOiBhbnkgPSBudWxsO1xyXG4gIHNlbGVjdGVkWTogYW55ID0gW107XHJcbiAgc2VsZWN0ZWRTZWNvbmRZOiBhbnkgPSBbXTtcclxuICBzZWxlY3RlZE11bHRpcGxlczogYW55ID0gbnVsbDtcclxuICBtYXJrZXJGb3JtYXQgPSBcIlwiO1xyXG4gIG1hcmtlckZvcm1hdExpc3QgPSBbXHJcbiAgICB7XHJcbiAgICAgIHZhbHVlOiBcIlwiLFxyXG4gICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGlvbi5OT05FIHx8IFwiLk5vbmVcIixcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIHZhbHVlOiBcIktcIixcclxuICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRpb24uVEhPVVNBTkRTIHx8IFwiLlRob3VzYW5kc1wiLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgdmFsdWU6IFwiTVwiLFxyXG4gICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGlvbi5NSUxMSU9OUyB8fCBcIi5NaWxsaW9uc1wiLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgdmFsdWU6IFwiYm5cIixcclxuICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRpb24uQklMTElPTlMgfHwgXCIuQmlsbGlvbnNcIixcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIHZhbHVlOiBcIlRcIixcclxuICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRpb24uVFJJTExJT05TIHx8IFwiLlRyaWxsaW9uc1wiLFxyXG4gICAgfSxcclxuICBdO1xyXG4gIGhhc01hcmtlciA9IGZhbHNlO1xyXG5cclxuICBsYWJlbENvbmZpZ0NoYW5nZShlKSB7XHJcbiAgICB0aGlzLmNvbmZpZy5oYXNNYXJrZXIgPSBlO1xyXG4gICAgdGhpcy51cGRhdGVQb3JsZXRDb25maWcuZW1pdCh7XHJcbiAgICAgIG5ld0lkOiB0aGlzLnBvcnRsZXQubmV3SWQsXHJcbiAgICAgIGNvbmZpZzogT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5jb25maWcpLFxyXG4gICAgfSk7XHJcbiAgICB0aGlzLmRhc2hib2FyZFNlcnZpY2Uuc3dpdGNoTGFiZWxDb25maWcubmV4dCh7XHJcbiAgICAgIGNoZWNrZWQ6IGUsXHJcbiAgICAgIGlkOiB0aGlzLnBvcnRsZXQubmV3SWQsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHh5Q2hhbmdlKGUpIHtcclxuICAgIGlmIChlKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy51cGRhdGVUaGVtZS5lbWl0KHtcclxuICAgICAgICBzZWxlY3RlZFg6IHRoaXMuc2VsZWN0ZWRYLFxyXG4gICAgICAgIHNlbGVjdGVkWTogdGhpcy5zZWxlY3RlZFksXHJcbiAgICAgICAgc2VsZWN0ZWRNdWx0aXBsZXM6IHRoaXMuc2VsZWN0ZWRNdWx0aXBsZXMsXHJcbiAgICAgICAgc2VsZWN0ZWRTZWNvbmRZOiB0aGlzLnNlbGVjdGVkU2Vjb25kWSxcclxuICAgICAgICBzZWxlY3RUaGVtZTogdGhpcy5zZWxlY3RUaGVtZSxcclxuICAgICAgICBoYXNNYXJrZXI6IHRoaXMuaGFzTWFya2VyLFxyXG4gICAgICAgIG1hcmtlckZvcm1hdDogdGhpcy5tYXJrZXJGb3JtYXQsXHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgdGhpcy5jb25maWdbXCJtYXJrZXJGb3JtYXRcIl0gPSB0aGlzLm1hcmtlckZvcm1hdDtcclxuICAgICAgdGhpcy5jb25maWdbXCJoYXNNYXJrZXJcIl0gPSB0aGlzLmhhc01hcmtlcjtcclxuICAgICAgdGhpcy5jb25maWdbXCJzZWxlY3RlZFhcIl0gPSB0aGlzLnNlbGVjdGVkWDtcclxuICAgICAgdGhpcy5jb25maWdbXCJzZWxlY3RlZFlcIl0gPSB0aGlzLnNlbGVjdGVkWTtcclxuICAgICAgdGhpcy5jb25maWdbXCJzZWxlY3RlZFNlY29uZFlcIl0gPSB0aGlzLnNlbGVjdGVkU2Vjb25kWTtcclxuICAgICAgdGhpcy5jb25maWdbXCJzZWxlY3RlZE11bHRpcGxlc1wiXSA9IHRoaXMuc2VsZWN0ZWRNdWx0aXBsZXM7XHJcbiAgICAgIHRoaXMuY29uZmlnW1wic2VsZWN0VGhlbWVcIl0gPSB0aGlzLnNlbGVjdFRoZW1lO1xyXG5cclxuICAgICAgdGhpcy51cGRhdGVQb3JsZXRDb25maWcuZW1pdCh7XHJcbiAgICAgICAgbmV3SWQ6IHRoaXMucG9ydGxldC5uZXdJZCxcclxuICAgICAgICBjb25maWc6IE9iamVjdC5hc3NpZ24oe30sIHRoaXMuY29uZmlnKSxcclxuICAgICAgfSk7XHJcblxyXG4gICAgICB0aGlzLnNob3dFZGl0KCk7XHJcbiAgICB9LCA1MDApO1xyXG4gIH1cclxuXHJcbiAgc2hvd0VkaXQoKSB7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMucG9ydGxldFR5cGUgPT0gXCJuZXdjb2x1bW5saW5lXCIgJiZcclxuICAgICAgdGhpcy5zZWxlY3RlZFkubGVuZ3RoID4gMCAmJlxyXG4gICAgICB0aGlzLnNlbGVjdGVkU2Vjb25kWS5sZW5ndGggPiAwXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5BZGRPckVkaXRQb3J0bGV0KCk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5wb3J0bGV0VHlwZSAhPSBcIm5ld2NvbHVtbmxpbmVcIiAmJiB0aGlzLnNlbGVjdGVkWS5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuQWRkT3JFZGl0UG9ydGxldCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbXVsdGlwbGVzTGlzdDogYW55ID0gW107XHJcbiAgZ2V0bXVsdGlwbGVzTGlzdCgpIHtcclxuICAgIGNvbnN0IHVybCA9XHJcbiAgICAgIHRoaXMuYXBwQ29kZSA9PT0gXCJQTVNcIlxyXG4gICAgICAgID8gdGhpcy5hcGkudXJsTGlzdC5MUEdldFByb3BlcnR5TGlzdFxyXG4gICAgICAgIDogdGhpcy5hcGkudXJsTGlzdC5HZXRQcm9wZXJ0eUxpc3Q7XHJcbiAgICB0aGlzLmh0dHAucG9zdCh1cmwsIHsgc2NvcGU6IFwiREFTSEJPQVJEX0ZSRVFVRU5DWVwiLCBsYW5nSWR4OiAyIH0sIChyZXMpID0+IHtcclxuICAgICAgdGhpcy5tdWx0aXBsZXNMaXN0ID0gcmVzO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBjYXBpdGFsaXplKHN0cikge1xyXG4gICAgLy8g5bCG5a2X56ym5Liy6L2s5o2i5Li65bCP5YaZ77yM5bm25L2/55So5q2j5YiZ6KGo6L6+5byP5bCG5q+P5Liq5Y2V6K+N55qE56ys5LiA5Liq5a2X56ym6L2s5o2i5Li65aSn5YaZXHJcbiAgICBpZiAoIXN0cikge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICByZXR1cm4gc3RyLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvXFxiXFx3L2csIGZ1bmN0aW9uIChjaGFyKSB7XHJcbiAgICAgIHJldHVybiBjaGFyLnRvVXBwZXJDYXNlKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldFNlbGVjdERhdGFtYXJ0SWQoKSB7XHJcbiAgICAvLyDojrflj5bnnJ/mraPnmoREYXRhbWFydElEXHJcbiAgICBjb25zdCBjb2RlID0gdGhpcy5nZXRUcnVlU2VsZWN0ZWREYXRhbWFydCgpO1xyXG4gICAgbGV0IGRhdGFNYXJ0VGFibGVzID0gdGhpcy5kYXNoYm9hcmRQb3JsZXRzU2VydmljZS5kYXRhTWFydFRhYmxlc1tcclxuICAgICAgdGhpcy5kYXNoYm9hcmQuaWRcclxuICAgIF0uZmlsdGVyKChlbCkgPT4gY29kZSA9PSBlbC5kYXRhbWFydENvZGUpO1xyXG4gICAgaWYgKGRhdGFNYXJ0VGFibGVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgcmV0dXJuIGRhdGFNYXJ0VGFibGVzWzBdLmlkO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0VHJ1ZVNlbGVjdGVkRGF0YW1hcnQoKSB7XHJcbiAgICBjb25zdCBwb3J0bGV0VHlwZSA9XHJcbiAgICAgIHRoaXMuY29uZmlnLnBvcnRsZXRUeXBlID09PSBcImhpc3RvcmljYWxJUlJcIlxyXG4gICAgICAgID8gdGhpcy5jb25maWcuc2VsZWN0ZWRWaXN1YWxUeXBlXHJcbiAgICAgICAgOiB0aGlzLmNvbmZpZy5wb3J0bGV0VHlwZTtcclxuICAgIC8vIOiOt+WPluecn+ato+eahERhdGFtYXJ0Q29kZVxyXG4gICAgaWYgKFtcIm5ld2NvbHVtblwiLCBcIm5ld2xpbmVcIiwgXCJuZXdjb2x1bW5saW5lXCJdLmluY2x1ZGVzKHBvcnRsZXRUeXBlKSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5nZXRTZWxlY3REYXRhbWFydENvZGUoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkRGF0YW1hcnQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRTZWxlY3REYXRhbWFydENvZGUoKSB7XHJcbiAgICBjb25zdCBpdGVtID0gdGhpcy5kYXNoYm9hcmRQb3JsZXRzU2VydmljZS5kYXRhTWFydFRhYmxlc1tcclxuICAgICAgdGhpcy5kYXNoYm9hcmQuaWRcclxuICAgIF0uZmlsdGVyKChlKSA9PiB7XHJcbiAgICAgIHJldHVybiBlW1wiZGF0YW1hcnRDb2RlXCJdID09IHRoaXMuc2VsZWN0ZWREYXRhbWFydDtcclxuICAgIH0pO1xyXG4gICAgaWYgKGl0ZW0ubGVuZ3RoID4gMCkge1xyXG4gICAgICBpZiAoaXRlbVswXVtcInByZWZpeFwiXSkge1xyXG4gICAgICAgIHJldHVybiBgJHtpdGVtWzBdW1wicHJlZml4XCJdfSR7XHJcbiAgICAgICAgICB0aGlzLmNhcGl0YWxpemUodGhpcy5zZWxlY3RlZE11bHRpcGxlcykgfHwgXCJcIlxyXG4gICAgICAgIH1gO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiBpdGVtWzBdW1wiZGF0YW1hcnRDb2RlXCJdO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gXCJcIjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNlbGVjdFRoZW1lOiBhbnkgPSBcInRoZW1lMVwiO1xyXG4gIGNoYW5nZVRoZW1lKGUsIHR5cGUpIHtcclxuICAgIHRoaXMuc2VsZWN0VGhlbWUgPSBlLnZhbHVlO1xyXG4gICAgdGhpcy5jb25maWdbXCJzZWxlY3RUaGVtZVwiXSA9IHRoaXMuc2VsZWN0VGhlbWU7XHJcbiAgICB0aGlzLnVwZGF0ZVRoZW1lLmVtaXQoe1xyXG4gICAgICBzZWxlY3RlZFg6IHRoaXMuc2VsZWN0ZWRYLFxyXG4gICAgICBzZWxlY3RlZFk6IHRoaXMuc2VsZWN0ZWRZLFxyXG4gICAgICBzZWxlY3RlZE11bHRpcGxlczogdGhpcy5zZWxlY3RlZE11bHRpcGxlcyxcclxuICAgICAgc2VsZWN0ZWRTZWNvbmRZOiB0aGlzLnNlbGVjdGVkU2Vjb25kWSxcclxuICAgICAgc2VsZWN0VGhlbWU6IHRoaXMuc2VsZWN0VGhlbWUsXHJcbiAgICB9KTtcclxuICAgIHRoaXMuc2hvd0VkaXQoKTtcclxuICB9XHJcblxyXG4gIHNvcnREYXRhTWFydFRhYmxlcyhkYXRhKSB7XHJcbiAgICBkYXRhLnNvcnQoKGEsIGIpID0+IHtcclxuICAgICAgY29uc3QgbGFuZ1ZhbHVlQSA9IGEubGFuZ1ZhbHVlLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgIGNvbnN0IGxhbmdWYWx1ZUIgPSBiLmxhbmdWYWx1ZS50b0xvd2VyQ2FzZSgpO1xyXG5cclxuICAgICAgaWYgKGxhbmdWYWx1ZUEgPCBsYW5nVmFsdWVCKSB7XHJcbiAgICAgICAgcmV0dXJuIC0xO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChsYW5nVmFsdWVBID4gbGFuZ1ZhbHVlQikge1xyXG4gICAgICAgIHJldHVybiAxO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiAwO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvbkNoYW5nZUZvcm1hdCgpIHtcclxuICAgIHRoaXMuZGFzaGJvYXJkU2VydmljZS5tYXJrZXJGb3JtYXQubmV4dCh7XHJcbiAgICAgIG5ld0lkOiB0aGlzLnBvcnRsZXQubmV3SWQsXHJcbiAgICAgIG1hcmtlckZvcm1hdDogdGhpcy5tYXJrZXJGb3JtYXQsXHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuIl19
|