gamma-app-controller 1.1.6 → 1.1.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/application-controller/application-controller.module.mjs +10 -5
- package/esm2020/lib/application-controller/application-dataset-call.service.mjs +15 -10
- package/esm2020/lib/application-controller/application-dataset-component/application-dataset/application-dataset.component.mjs +14 -10
- package/esm2020/lib/application-controller/application-view-components/create-comp-view/create-comp-view.component.mjs +17 -11
- package/esm2020/lib/application-controller/shared/advanced-component/gamma-today-previous/gamma-today-previous.component.mjs +30 -19
- package/esm2020/lib/application-controller/support-components/dash-today-previous/dash-today-previous.component.mjs +278 -0
- package/esm2020/public-api.mjs +2 -1
- package/fesm2015/gamma-app-controller.mjs +346 -48
- package/fesm2015/gamma-app-controller.mjs.map +1 -1
- package/fesm2020/gamma-app-controller.mjs +339 -48
- package/fesm2020/gamma-app-controller.mjs.map +1 -1
- package/lib/application-controller/application-controller.module.d.ts +12 -11
- package/lib/application-controller/application-dataset-call.service.d.ts +2 -1
- package/lib/application-controller/application-dataset-component/application-dataset/application-dataset.component.d.ts +2 -1
- package/lib/application-controller/application-view-components/create-comp-view/create-comp-view.component.d.ts +2 -1
- package/lib/application-controller/shared/advanced-component/gamma-today-previous/gamma-today-previous.component.d.ts +3 -0
- package/lib/application-controller/support-components/dash-today-previous/dash-today-previous.component.d.ts +63 -0
- package/package.json +1 -1
- package/public-api.d.ts +1 -0
|
@@ -0,0 +1,278 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "../../common";
|
|
4
|
+
import * as i2 from "../../application-content.service";
|
|
5
|
+
import * as i3 from "ngx-toastr";
|
|
6
|
+
import * as i4 from "@angular/common";
|
|
7
|
+
import * as i5 from "devextreme-angular/ui/check-box";
|
|
8
|
+
import * as i6 from "devextreme-angular/ui/color-box";
|
|
9
|
+
import * as i7 from "devextreme-angular/ui/select-box";
|
|
10
|
+
import * as i8 from "devextreme-angular/ui/tag-box";
|
|
11
|
+
import * as i9 from "devextreme-angular/ui/text-box";
|
|
12
|
+
import * as i10 from "@angular/forms";
|
|
13
|
+
import * as i11 from "../../shared/loader/loader.component";
|
|
14
|
+
export class DashTodayPreviousComponent {
|
|
15
|
+
constructor(commonService, cdr, service, taostr) {
|
|
16
|
+
this.commonService = commonService;
|
|
17
|
+
this.cdr = cdr;
|
|
18
|
+
this.service = service;
|
|
19
|
+
this.taostr = taostr;
|
|
20
|
+
this.dataSourseForTable = [];
|
|
21
|
+
this.allConfiguredViews = [];
|
|
22
|
+
this.optionalDrilDownDataSource = [];
|
|
23
|
+
this.table_columns_config = {
|
|
24
|
+
"kpiConfig": {
|
|
25
|
+
"serviceId": "",
|
|
26
|
+
"api": "/kpi/trends/network/get-metric-data",
|
|
27
|
+
"displayType": "table",
|
|
28
|
+
"formate": "",
|
|
29
|
+
"keyToPass": [],
|
|
30
|
+
"componentName": "GammaAdvanceOperatorTableComponent",
|
|
31
|
+
"dataConfig": {}
|
|
32
|
+
},
|
|
33
|
+
};
|
|
34
|
+
this.tableDataConfig = {
|
|
35
|
+
"timeUnit": "Day",
|
|
36
|
+
"timeValue": 1,
|
|
37
|
+
"isPreviousDay": true,
|
|
38
|
+
"color": "",
|
|
39
|
+
"size": "",
|
|
40
|
+
"sortBy": [],
|
|
41
|
+
"columns": []
|
|
42
|
+
};
|
|
43
|
+
this.enrichNameList = ["abbreviateNumber", "getColorCodeSpan", "ThousandSeparator", "ThousandSeparatorWithTwoDecimals"];
|
|
44
|
+
this.isLoader = true;
|
|
45
|
+
this.activeTab = 'basic';
|
|
46
|
+
this.gettodayPreviousConfigOutPut = new EventEmitter();
|
|
47
|
+
}
|
|
48
|
+
set chartconfigData(value) {
|
|
49
|
+
if (value === undefined || value.length === 0) {
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
this.jsaonDatasource = value.data[0];
|
|
54
|
+
this.previousRevenue = value.data.length > 1 ? value.data[1].revenue : null;
|
|
55
|
+
this.configColume = Object.keys(value.data[0]);
|
|
56
|
+
this.dataSourseForTable = value.data.slice(0, 10);
|
|
57
|
+
this.selectedViewConfigs = value;
|
|
58
|
+
this.selectedTableViewType = value.selectedViewType;
|
|
59
|
+
if (value.selectedWidgetConfig) {
|
|
60
|
+
this.table_columns_config['kpiConfig'] = value.selectedWidgetConfig;
|
|
61
|
+
this.tableDataConfig = value.selectedWidgetConfig.dataConfig;
|
|
62
|
+
this.tableDataConfig.columns = (value.selectedWidgetConfig.dataConfig.columns) ? value.selectedWidgetConfig.dataConfig.columns : [];
|
|
63
|
+
if (value.selectedWidgetConfig.viewProperties) {
|
|
64
|
+
this.viewProperties = value.selectedWidgetConfig.viewProperties;
|
|
65
|
+
this.viewProperties = {
|
|
66
|
+
"enableClickEvent": value.selectedWidgetConfig.viewProperties.enableClickEvent,
|
|
67
|
+
"enableRightClickEvent": value.selectedWidgetConfig.viewProperties.enableRightClickEvent
|
|
68
|
+
};
|
|
69
|
+
if (value.selectedWidgetConfig.viewProperties.enableClickEvent) {
|
|
70
|
+
if (value.selectedWidgetConfig.viewProperties.clickEventOptions.eventType == 'optionalDrillDown') {
|
|
71
|
+
this.optionalDrilDownDataSource = value.selectedWidgetConfig.viewProperties.clickEventOptions.associatedViews;
|
|
72
|
+
this.viewProperties['clickEventOptions'] = {
|
|
73
|
+
"eventType": value.selectedWidgetConfig.viewProperties.clickEventOptions.eventType,
|
|
74
|
+
"associatedViews": []
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
else if (value.selectedWidgetConfig.viewProperties.clickEventOptions.eventType == 'drilldown') {
|
|
78
|
+
this.viewProperties['clickEventOptions'] = {
|
|
79
|
+
"eventType": value.selectedWidgetConfig.viewProperties.clickEventOptions.eventType,
|
|
80
|
+
"associatedViews": value.selectedWidgetConfig.viewProperties.clickEventOptions.associatedViews
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
else if (value.selectedWidgetConfig.viewProperties.clickEventOptions.eventType == '') {
|
|
84
|
+
this.viewProperties['clickEventOptions'] = {
|
|
85
|
+
"eventType": "",
|
|
86
|
+
"associatedViews": []
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
this.viewProperties = {
|
|
91
|
+
enableClickEvent: false,
|
|
92
|
+
enableRightClickEvent: true,
|
|
93
|
+
clickEventOptions: {
|
|
94
|
+
associatedViews: [],
|
|
95
|
+
eventType: ""
|
|
96
|
+
}
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
this.viewProperties['clickEventOptions'] = {};
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
else {
|
|
105
|
+
this.viewProperties = {
|
|
106
|
+
enableClickEvent: false,
|
|
107
|
+
enableRightClickEvent: true,
|
|
108
|
+
clickEventOptions: {
|
|
109
|
+
associatedViews: [],
|
|
110
|
+
eventType: ""
|
|
111
|
+
}
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
this.cdr.detectChanges();
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
this.tableDataConfig.columns = value.columnData;
|
|
118
|
+
this.viewProperties = {
|
|
119
|
+
enableClickEvent: false,
|
|
120
|
+
enableRightClickEvent: true,
|
|
121
|
+
clickEventOptions: {
|
|
122
|
+
associatedViews: [],
|
|
123
|
+
eventType: ""
|
|
124
|
+
}
|
|
125
|
+
};
|
|
126
|
+
if (!this.tableDataConfig.columns) {
|
|
127
|
+
this.tableDataConfig.columns = [];
|
|
128
|
+
this.configColume.forEach(element => {
|
|
129
|
+
let obj = {
|
|
130
|
+
"visible": true,
|
|
131
|
+
"dataField": element,
|
|
132
|
+
"caption": this.commonService.convertString(element),
|
|
133
|
+
"enrichName": "",
|
|
134
|
+
};
|
|
135
|
+
this.tableDataConfig.columns.push(obj);
|
|
136
|
+
});
|
|
137
|
+
console.log(this.configColume);
|
|
138
|
+
}
|
|
139
|
+
this.cdr.detectChanges();
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
ngOnInit() {
|
|
144
|
+
this.isLoader = true;
|
|
145
|
+
this.service.getAppViewConfigs().subscribe({
|
|
146
|
+
next: (data) => {
|
|
147
|
+
this.allConfiguredViews = data;
|
|
148
|
+
this.isLoader = false;
|
|
149
|
+
}, error: (err) => {
|
|
150
|
+
this.taostr.error('Unexpected Server Exception. Please contact System Admin.', 'All Views');
|
|
151
|
+
}
|
|
152
|
+
});
|
|
153
|
+
if (this.optionalDrilDownDataSource.length == 0) {
|
|
154
|
+
this.optionalDrilDownDataSource = [
|
|
155
|
+
{
|
|
156
|
+
'viewId': "",
|
|
157
|
+
'filterCondition': ""
|
|
158
|
+
}
|
|
159
|
+
];
|
|
160
|
+
}
|
|
161
|
+
this.cdr.detectChanges();
|
|
162
|
+
}
|
|
163
|
+
addColumns() {
|
|
164
|
+
let obj = {
|
|
165
|
+
"visible": true,
|
|
166
|
+
"dataField": "",
|
|
167
|
+
"caption": "",
|
|
168
|
+
"enrichName": "",
|
|
169
|
+
};
|
|
170
|
+
if (this.selectedTableViewType === 'groupTable') {
|
|
171
|
+
obj['group'] = '';
|
|
172
|
+
}
|
|
173
|
+
this.tableDataConfig.columns.push(obj);
|
|
174
|
+
}
|
|
175
|
+
deleteColumns(i) {
|
|
176
|
+
this.tableDataConfig.columns.splice(i, 1);
|
|
177
|
+
}
|
|
178
|
+
getEnrichClassName(e, item) {
|
|
179
|
+
item.enrichName = e.value;
|
|
180
|
+
}
|
|
181
|
+
moveItemForColumns(index, direction) {
|
|
182
|
+
if (index < 0 || index >= this.tableDataConfig.columns.length)
|
|
183
|
+
return;
|
|
184
|
+
const newPosition = direction === 'up' ? index - 1 : index + 1;
|
|
185
|
+
if (newPosition < 0 || newPosition >= this.tableDataConfig.columns.length)
|
|
186
|
+
return;
|
|
187
|
+
const itemToMove = this.tableDataConfig.columns[index];
|
|
188
|
+
this.tableDataConfig.columns.splice(index, 1);
|
|
189
|
+
this.tableDataConfig.columns.splice(newPosition, 0, itemToMove);
|
|
190
|
+
}
|
|
191
|
+
getObjectKeys(obj) {
|
|
192
|
+
return Object.keys(obj);
|
|
193
|
+
}
|
|
194
|
+
setActiveTab(tab) {
|
|
195
|
+
this.activeTab = tab;
|
|
196
|
+
}
|
|
197
|
+
getGroupColumns(columns) {
|
|
198
|
+
const groupedColumns = columns.reduce((acc, column) => {
|
|
199
|
+
let group = acc.find(item => item.caption === column.group);
|
|
200
|
+
if (!group) {
|
|
201
|
+
group = {
|
|
202
|
+
caption: column.group,
|
|
203
|
+
columns: []
|
|
204
|
+
};
|
|
205
|
+
acc.push(group);
|
|
206
|
+
}
|
|
207
|
+
group.columns.push({
|
|
208
|
+
dataField: column.dataField,
|
|
209
|
+
visible: column.visible,
|
|
210
|
+
caption: column.caption
|
|
211
|
+
});
|
|
212
|
+
return acc;
|
|
213
|
+
}, []);
|
|
214
|
+
return groupedColumns;
|
|
215
|
+
}
|
|
216
|
+
geColumnsFromGroup(columns) {
|
|
217
|
+
const newColumns = [];
|
|
218
|
+
columns.forEach(group => {
|
|
219
|
+
group.columns.forEach(col => {
|
|
220
|
+
newColumns.push({
|
|
221
|
+
dataField: col.dataField,
|
|
222
|
+
visible: col.visible,
|
|
223
|
+
caption: col.caption,
|
|
224
|
+
group: group.caption
|
|
225
|
+
});
|
|
226
|
+
});
|
|
227
|
+
});
|
|
228
|
+
return newColumns;
|
|
229
|
+
}
|
|
230
|
+
getSaveConfig() {
|
|
231
|
+
debugger;
|
|
232
|
+
if (this.viewProperties.clickEventOptions.eventType == 'optionalDrillDown') {
|
|
233
|
+
this.viewProperties['clickEventOptions']['associatedViews'] = this.optionalDrilDownDataSource;
|
|
234
|
+
}
|
|
235
|
+
this.table_columns_config.kpiConfig['viewProperties'] = this.viewProperties;
|
|
236
|
+
this.table_columns_config.kpiConfig.dataConfig = JSON.parse(JSON.stringify(this.tableDataConfig));
|
|
237
|
+
this.gettodayPreviousConfigOutPut.emit(this.table_columns_config);
|
|
238
|
+
}
|
|
239
|
+
deleteAssociatedParams(index) {
|
|
240
|
+
this.optionalDrilDownDataSource.splice(index, 1);
|
|
241
|
+
}
|
|
242
|
+
addAssociatedParams() {
|
|
243
|
+
this.optionalDrilDownDataSource.push({
|
|
244
|
+
'viewId': "",
|
|
245
|
+
'filterCondition': ""
|
|
246
|
+
});
|
|
247
|
+
}
|
|
248
|
+
getSelectedEventType(e) {
|
|
249
|
+
if (e.event) {
|
|
250
|
+
this.optionalDrilDownDataSource = [];
|
|
251
|
+
if (this.viewProperties.clickEventOptions.eventType == 'drilldown') {
|
|
252
|
+
this.table_columns_config.kpiConfig['viewProperties']['associatedViews'] = [];
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
resetViewProprstise() {
|
|
257
|
+
this.viewProperties = {
|
|
258
|
+
enableClickEvent: false,
|
|
259
|
+
enableRightClickEvent: true,
|
|
260
|
+
clickEventOptions: {
|
|
261
|
+
associatedViews: [],
|
|
262
|
+
eventType: ""
|
|
263
|
+
}
|
|
264
|
+
};
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
DashTodayPreviousComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: DashTodayPreviousComponent, deps: [{ token: i1.CommonService }, { token: i0.ChangeDetectorRef }, { token: i2.ApplicationContentService }, { token: i3.ToastrService }], target: i0.ɵɵFactoryTarget.Component });
|
|
268
|
+
DashTodayPreviousComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: DashTodayPreviousComponent, selector: "lib-dash-today-previous", inputs: { chartconfigData: ["datasetmodal", "chartconfigData"] }, outputs: { gettodayPreviousConfigOutPut: "gettodayPreviousConfigOutPut" }, ngImport: i0, template: "\n\n<div class=\"m-2\"></div>\n <div class=\"w-full m-2 border-r\">\n <ng-container *ngIf=\"!isJsonPreview\">\n <pre><code>{{jsaonDatasource | json}}</code></pre>\n </ng-container>\n <ng-container *ngIf=\"isJsonPreview\"> \n <div class=\"flex justify-center items-start bg-gray-800 p-3 mx-2 text-center\">\n <div class=\"w-full\">\n <div [style.color]=\"tableDataConfig.color\"\n [style.font-size.px]=\"tableDataConfig.size || 16\"\n class=\"font-semibold\">{{jsaonDatasource.revenue}}</div>\n <div class=\"text-gray-400 text-sm font-light m-2\">\n Previous: {{ previousRevenue !== null ? previousRevenue : 'N/A' }}\n <span class=\"text-teal-400\">(0.0001%)</span>\n </div>\n </div>\n </div>\n </ng-container>\n </div>\n <div class=\"w-full mx-2 border-r\">\n <div class=\"mb-4 border-b border-gray-200 dark:border-gray-700\">\n <ul class=\"flex flex-wrap -mb-px text-sm font-medium text-center\" role=\"tablist\">\n <li class=\"me-2\" role=\"presentation\">\n <button class=\"inline-block p-4 border-b-2 rounded-t-lg\" [ngClass]=\"{\n 'text-purple-600 border-purple-600 dark:text-purple-500 dark:border-purple-500': activeTab === 'basic',\n 'text-gray-500 dark:text-gray-400 border-transparent': activeTab !== 'basic'\n }\" (click)=\"setActiveTab('basic')\" type=\"button\" role=\"tab\">\n Basic\n </button>\n </li>\n <li class=\"me-2\" role=\"presentation\">\n <button class=\"inline-block p-4 border-b-2 rounded-t-lg\" [ngClass]=\"{\n 'text-purple-600 border-purple-600 dark:text-purple-500 dark:border-purple-500': activeTab === 'columns',\n 'text-gray-500 dark:text-gray-400 border-transparent': activeTab !== 'columns'\n }\" (click)=\"setActiveTab('columns')\" type=\"button\" role=\"tab\">\n Columns\n </button>\n </li>\n <li class=\"me-2\" role=\"presentation\">\n <button class=\"inline-block p-4 border-b-2 rounded-t-lg\" [ngClass]=\"{\n 'text-purple-600 border-purple-600 dark:text-purple-500 dark:border-purple-500': activeTab === 'properties',\n 'text-gray-500 dark:text-gray-400 border-transparent': activeTab !== 'properties'\n }\" (click)=\"setActiveTab('properties')\" type=\"button\" role=\"tab\">\n Properties\n </button>\n </li>\n\n </ul>\n </div>\n\n <div id=\"default-styled-tab-content\"> \n <div *ngIf=\"activeTab === 'basic'\">\n <div class=\"flex flex-col flex-auto min-w-0\">\n <div class=\"text-sm py-1 font-extrabold border-b bg-gray-700 text-white px-2\"> Filter Title Config\n </div>\n <div class=\"pt-2 border-x border-b \">\n <div class=\"my-2 flex justify-between\">\n \n <div class=\"px-1 mb-2 w-full\">\n <div class=\"text-md mb-2\">Color</div>\n <dx-color-box [(ngModel)]=\"tableDataConfig.color\"></dx-color-box>\n\n </div>\n <div class=\"px-1 mb-1 w-full\">\n <div class=\"text-md mb-2\">Size</div>\n <dx-text-box placeholder=\"Enter size\" [(ngModel)]=\"tableDataConfig.size\"></dx-text-box>\n \n </div>\n \n <div class=\"px-1 mb-1 w-full\">\n <div class=\"text-md mb-2\"> Key To Pass </div>\n <dx-tag-box [items]=\"configColume\"\n [(ngModel)]=\"table_columns_config.kpiConfig.keyToPass\"></dx-tag-box>\n </div>\n <div class=\"px-1 mb-1 w-full\">\n <div class=\"text-md mb-2\"> Display Formate </div>\n <dx-select-box [items]=\"['daily','hourly','monthly']\"\n [(ngModel)]=\"table_columns_config.kpiConfig.formate\"></dx-select-box>\n </div>\n\n <div class=\"px-1 mb-1 w-full\">\n <div class=\"text-md mb-2\"> Sort By </div>\n <dx-tag-box [items]=\"configColume\"\n [(ngModel)]=\"tableDataConfig.sortBy\"></dx-tag-box>\n </div>\n </div> \n </div>\n </div>\n </div>\n <div *ngIf=\"activeTab === 'basic'\" class=\"flex flex-col flex-auto min-w-0\">\n <div class=\"text-sm py-1 font-extrabold border-b bg-gray-700 text-white px-2\"> Select The Previos Date Range\n </div>\n <div class=\"flex flse-row border-x border-b p-4\">\n <div class=\"px-1 mb-1 w-full\">\n <div class=\"text-md mb-2\" style=\"margin-top: 37px;\">\n <dx-check-box [(value)]=\"tableDataConfig.isPreviousDay\" text=\"Previous Day\"></dx-check-box>\n \n </div>\n <ng-container *ngIf=\"tableDataConfig.isPreviousDay\">\n <div class=\"px-1 mb-1 w-1/2 flex items-center\">\n <dx-select-box \n [items]=\"['Day', 'Month', 'Year']\"\n class=\"ml-2\"\n [(ngModel)]=\"tableDataConfig.timeUnit\">\n </dx-select-box>\n \n <dx-text-box type=\"number\" [(ngModel)]=\"tableDataConfig.timeValue\"\n class=\"ml-2\"></dx-text-box>\n </div>\n </ng-container>\n \n </div>\n </div>\n\n </div>\n <div *ngIf=\"activeTab === 'columns'\">\n <div class=\"h-full overflow-x-auto\">\n <div class=\"flex flex-col flex-auto min-w-0\">\n\n <div class=\"pt-2 border-x border-b \">\n <div class=\"my-2 border-b flex flex-row\"\n *ngFor=\"let item of tableDataConfig.columns; let i = index;\">\n <div class=\"px-1 mb-2 mt-6 w-full\">\n <dx-check-box [(ngModel)]=\"item.visible\"\n text=\"Visiblity\"></dx-check-box>\n </div>\n \n <div class=\"px-1 mb-2 w-full\">\n <div class=\"text-md mb-2\"> Value Field</div>\n <dx-select-box [searchEnabled]=\"true\" [items]=\"configColume\"\n [(ngModel)]=\"item.dataField\"></dx-select-box>\n </div>\n <div class=\"px-1 mb-2 w-full\">\n <div class=\"text-md mb-2\"> Caption</div>\n <dx-text-box [(ngModel)]=\"item.caption\"></dx-text-box>\n </div>\n <div class=\"px-2 mb-2 w-full\">\n <div class=\"text-md mb-2\"> UI Function</div>\n <dx-select-box [items]=\"enrichNameList\" [(ngModel)]=\"item.enrichName\"\n [searchEnabled]=\"true\"></dx-select-box>\n </div>\n <div class=\"text-center mt-8 w-full\">\n <button *ngIf=\"i !== 0\" class=\"{{commonService.btn_light_sm}} cursor-pointer mx-1\"\n (click)=\"moveItemForColumns(i, 'up')\">\n <i class=\"fa fa-arrow-up\" aria-hidden=\"true\"></i>\n </button>\n\n <button *ngIf=\"i !== tableDataConfig.columns.length - 1\"\n class=\"{{commonService.btn_light_sm}} cursor-pointer mx-1\"\n (click)=\"moveItemForColumns(i, 'down')\">\n <i class=\"fa fa-arrow-down\" aria-hidden=\"true\"></i>\n </button>\n <button class=\"{{commonService.btn_danger_sm}} cursor-pointer\"\n (click)=\"deleteColumns(i)\"><i class=\"fa fa-trash-o\" aria-hidden=\"true\"></i>\n </button>\n </div>\n\n </div>\n </div>\n </div>\n <div class=\"flex flex-row justify-end my-2\">\n <button class=\"{{commonService.btn_primary_sm}} cursor-pointer\" (click)=\"addColumns()\">Add\n Columns</button>\n </div>\n </div>\n </div>\n <div *ngIf=\"activeTab === 'properties'\">\n <div class=\"h-full overflow-x-auto\">\n <app-loader *ngIf=\"isLoader\"></app-loader>\n <ng-container *ngIf=\"!isLoader\">\n <div class=\"flex flex-row justify-between border-b py-3\">\n <div class=\"mx-2\">\n <dx-check-box [value]=\"viewProperties.enableClickEvent\"\n [(ngModel)]=\"viewProperties.enableClickEvent\"\n text=\"Enable Click Event\"></dx-check-box>\n </div>\n <div class=\"mx-2\">\n <dx-check-box [value]=\"viewProperties.enableRightClickEvent\"\n [(ngModel)]=\"viewProperties.enableRightClickEvent\"\n text=\"Enable Right Click\"></dx-check-box>\n </div>\n </div>\n <div class=\"w-full p-2\" *ngIf=\"viewProperties.enableClickEvent\">\n\n <div class=\"flex flex-col flex-auto min-w-0 my-2\">\n <div class=\"text-sm py-1 font-extrabold border-b bg-gray-700 text-white px-2\"> Event\n Type\n Option\n </div>\n <div class=\"w-full p-3 border-x border-b \">\n <div class=\"flex flex-row\">\n <div class=\"w-full\">\n <div class=\"text-md mb-2\"> Event Type</div>\n </div>\n <div class=\"w-full\">\n <dx-select-box [items]=\"['drilldown','sameViewDrilldown','optionalDrillDown']\"\n (onValueChanged)=\"getSelectedEventType($event)\"\n [(ngModel)]=\"viewProperties.clickEventOptions.eventType\"></dx-select-box>\n </div>\n </div>\n <ng-container *ngIf=\"viewProperties.clickEventOptions.eventType == 'drilldown'\">\n <div class=\"flex flex-row justify-between mt-3\">\n <div class=\"w-full\">\n <div class=\"text-md mb-2\"> Associated Views</div>\n <dx-tag-box [items]=\"allConfiguredViews\"\n [(ngModel)]=\"viewProperties.clickEventOptions.associatedViews\"\n valueExpr=\"viewId\" displayExpr=\"viewName\"\n [showSelectionControls]=\"true\" [searchEnabled]=\"true\"></dx-tag-box>\n </div>\n </div>\n </ng-container>\n <ng-container *ngIf=\"viewProperties.clickEventOptions.eventType == 'sameViewDrilldown'\">\n <div class=\"flex flex-row justify-between mt-3\">\n <div class=\"w-full\">\n <div class=\"text-md mb-2\"> Associated Views</div>\n <dx-tag-box [items]=\"allConfiguredViews\"\n [(ngModel)]=\"viewProperties.clickEventOptions.associatedViews\"\n valueExpr=\"viewId\" displayExpr=\"viewName\"\n [showSelectionControls]=\"true\" [searchEnabled]=\"true\"></dx-tag-box>\n </div>\n </div>\n </ng-container>\n <ng-container\n *ngIf=\"viewProperties.clickEventOptions.eventType == 'optionalDrillDown'\">\n <div class=\"flex flex-row justify-between mt-3\">\n <div class=\"w-full\">\n <ng-container\n *ngFor=\"let item of optionalDrilDownDataSource;let i = index;\">\n\n <div class=\"flex flex-row justify-between\">\n <div class=\"mx-2 w-1/2\">\n <div class=\"text-md mb-2\"> Associated Views</div>\n <dx-tag-box [items]=\"allConfiguredViews\"\n [(ngModel)]=\"item.viewId\" valueExpr=\"viewId\"\n displayExpr=\"viewName\" [showSelectionControls]=\"true\"\n [maxDisplayedTags]=\"2\"\n [searchEnabled]=\"true\"></dx-tag-box>\n\n </div>\n <div class=\"mx-2 w-1/2\">\n <div class=\"text-md mb-2\"> Associated Params</div>\n <dx-text-box\n [(ngModel)]=\"item.filterCondition\"></dx-text-box>\n </div>\n <div class=\"mx-2\">\n <button\n class=\"{{commonService.btn_danger_sm}} cursor-pointer mt-8\"\n (click)=\"deleteAssociatedParams(i)\"><i\n class=\"fa fa-trash-o\" aria-hidden=\"true\"></i>\n </button>\n </div>\n </div>\n </ng-container>\n <div class=\"flex flex-row justify-end mt-4\">\n <button class=\"{{commonService.btn_primary_sm}} cursor-pointer\"\n (click)=\"addAssociatedParams()\">Add\n Params</button>\n </div>\n </div>\n </div>\n </ng-container>\n <button class=\"{{commonService.btn_light_md}} cursor-pointer mt-4\"\n (click)=\"resetViewProprstise()\">Reset All Event</button>\n </div>\n </div>\n\n </div>\n </ng-container>\n </div>\n </div>\n\n </div>\n </div>\n\n\n<div class=\"flex flex-row border-t pl-3\">\n <div class=\"flex justify-start mx-1\">\n <button class=\"{{commonService.btn_warning_md}} cursor-pointer mt-2\" (click)=\"isJsonPreview = true\">\n Preview</button>\n <button class=\"{{commonService.btn_primary_md}} cursor-pointer mt-2\" (click)=\"isJsonPreview = false\">Data\n Preview</button>\n </div>\n <div class=\"flex justify-end mx-1 flex-grow\">\n <button class=\"{{commonService.btn_success_md}} cursor-pointer mt-2\"\n (click)=\"getSaveConfig()\">Submit</button>\n </div>\n</div>", styles: [""], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.DxCheckBoxComponent, selector: "dx-check-box", inputs: ["accessKey", "activeStateEnabled", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "iconSize", "isValid", "name", "readOnly", "rtlEnabled", "tabIndex", "text", "validationError", "validationErrors", "validationMessageMode", "validationStatus", "value", "visible", "width"], outputs: ["onContentReady", "onDisposing", "onInitialized", "onOptionChanged", "onValueChanged", "accessKeyChange", "activeStateEnabledChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "iconSizeChange", "isValidChange", "nameChange", "readOnlyChange", "rtlEnabledChange", "tabIndexChange", "textChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationStatusChange", "valueChange", "visibleChange", "widthChange", "onBlur"] }, { kind: "component", type: i6.DxColorBoxComponent, selector: "dx-color-box", inputs: ["acceptCustomValue", "accessKey", "activeStateEnabled", "applyButtonText", "applyValueMode", "buttons", "cancelButtonText", "deferRendering", "disabled", "dropDownButtonTemplate", "dropDownOptions", "editAlphaChannel", "elementAttr", "fieldTemplate", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "inputAttr", "isValid", "keyStep", "label", "labelMode", "name", "opened", "openOnFieldClick", "placeholder", "readOnly", "rtlEnabled", "showClearButton", "showDropDownButton", "stylingMode", "tabIndex", "text", "validationError", "validationErrors", "validationMessageMode", "validationStatus", "value", "visible", "width"], outputs: ["onChange", "onClosed", "onCopy", "onCut", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onKeyDown", "onKeyUp", "onOpened", "onOptionChanged", "onPaste", "onValueChanged", "acceptCustomValueChange", "accessKeyChange", "activeStateEnabledChange", "applyButtonTextChange", "applyValueModeChange", "buttonsChange", "cancelButtonTextChange", "deferRenderingChange", "disabledChange", "dropDownButtonTemplateChange", "dropDownOptionsChange", "editAlphaChannelChange", "elementAttrChange", "fieldTemplateChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "isValidChange", "keyStepChange", "labelChange", "labelModeChange", "nameChange", "openedChange", "openOnFieldClickChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "showClearButtonChange", "showDropDownButtonChange", "stylingModeChange", "tabIndexChange", "textChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationStatusChange", "valueChange", "visibleChange", "widthChange", "onBlur"] }, { kind: "component", type: i7.DxSelectBoxComponent, selector: "dx-select-box", inputs: ["acceptCustomValue", "accessKey", "activeStateEnabled", "buttons", "dataSource", "deferRendering", "disabled", "displayExpr", "displayValue", "dropDownButtonTemplate", "dropDownOptions", "elementAttr", "fieldTemplate", "focusStateEnabled", "grouped", "groupTemplate", "height", "hint", "hoverStateEnabled", "inputAttr", "isValid", "items", "itemTemplate", "label", "labelMode", "maxLength", "minSearchLength", "name", "noDataText", "opened", "openOnFieldClick", "placeholder", "readOnly", "rtlEnabled", "searchEnabled", "searchExpr", "searchMode", "searchTimeout", "selectedItem", "showClearButton", "showDataBeforeSearch", "showDropDownButton", "showSelectionControls", "spellcheck", "stylingMode", "tabIndex", "text", "useItemTextAsTitle", "validationError", "validationErrors", "validationMessageMode", "validationStatus", "value", "valueChangeEvent", "valueExpr", "visible", "width", "wrapItemText"], outputs: ["onChange", "onClosed", "onContentReady", "onCopy", "onCustomItemCreating", "onCut", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onItemClick", "onKeyDown", "onKeyUp", "onOpened", "onOptionChanged", "onPaste", "onSelectionChanged", "onValueChanged", "acceptCustomValueChange", "accessKeyChange", "activeStateEnabledChange", "buttonsChange", "dataSourceChange", "deferRenderingChange", "disabledChange", "displayExprChange", "displayValueChange", "dropDownButtonTemplateChange", "dropDownOptionsChange", "elementAttrChange", "fieldTemplateChange", "focusStateEnabledChange", "groupedChange", "groupTemplateChange", "heightChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "isValidChange", "itemsChange", "itemTemplateChange", "labelChange", "labelModeChange", "maxLengthChange", "minSearchLengthChange", "nameChange", "noDataTextChange", "openedChange", "openOnFieldClickChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "searchEnabledChange", "searchExprChange", "searchModeChange", "searchTimeoutChange", "selectedItemChange", "showClearButtonChange", "showDataBeforeSearchChange", "showDropDownButtonChange", "showSelectionControlsChange", "spellcheckChange", "stylingModeChange", "tabIndexChange", "textChange", "useItemTextAsTitleChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationStatusChange", "valueChange", "valueChangeEventChange", "valueExprChange", "visibleChange", "widthChange", "wrapItemTextChange", "onBlur"] }, { kind: "component", type: i8.DxTagBoxComponent, selector: "dx-tag-box", inputs: ["acceptCustomValue", "accessKey", "activeStateEnabled", "applyValueMode", "buttons", "dataSource", "deferRendering", "disabled", "displayExpr", "dropDownButtonTemplate", "dropDownOptions", "elementAttr", "fieldTemplate", "focusStateEnabled", "grouped", "groupTemplate", "height", "hideSelectedItems", "hint", "hoverStateEnabled", "inputAttr", "isValid", "items", "itemTemplate", "label", "labelMode", "maxDisplayedTags", "maxFilterQueryLength", "maxLength", "minSearchLength", "multiline", "name", "noDataText", "opened", "openOnFieldClick", "placeholder", "readOnly", "rtlEnabled", "searchEnabled", "searchExpr", "searchMode", "searchTimeout", "selectAllMode", "selectAllText", "selectedItems", "showClearButton", "showDataBeforeSearch", "showDropDownButton", "showMultiTagOnly", "showSelectionControls", "stylingMode", "tabIndex", "tagTemplate", "text", "useItemTextAsTitle", "validationError", "validationErrors", "validationMessageMode", "validationStatus", "value", "valueExpr", "visible", "width", "wrapItemText"], outputs: ["onChange", "onClosed", "onContentReady", "onCustomItemCreating", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onItemClick", "onKeyDown", "onKeyUp", "onMultiTagPreparing", "onOpened", "onOptionChanged", "onSelectAllValueChanged", "onSelectionChanged", "onValueChanged", "acceptCustomValueChange", "accessKeyChange", "activeStateEnabledChange", "applyValueModeChange", "buttonsChange", "dataSourceChange", "deferRenderingChange", "disabledChange", "displayExprChange", "dropDownButtonTemplateChange", "dropDownOptionsChange", "elementAttrChange", "fieldTemplateChange", "focusStateEnabledChange", "groupedChange", "groupTemplateChange", "heightChange", "hideSelectedItemsChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "isValidChange", "itemsChange", "itemTemplateChange", "labelChange", "labelModeChange", "maxDisplayedTagsChange", "maxFilterQueryLengthChange", "maxLengthChange", "minSearchLengthChange", "multilineChange", "nameChange", "noDataTextChange", "openedChange", "openOnFieldClickChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "searchEnabledChange", "searchExprChange", "searchModeChange", "searchTimeoutChange", "selectAllModeChange", "selectAllTextChange", "selectedItemsChange", "showClearButtonChange", "showDataBeforeSearchChange", "showDropDownButtonChange", "showMultiTagOnlyChange", "showSelectionControlsChange", "stylingModeChange", "tabIndexChange", "tagTemplateChange", "textChange", "useItemTextAsTitleChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationStatusChange", "valueChange", "valueExprChange", "visibleChange", "widthChange", "wrapItemTextChange", "onBlur"] }, { kind: "component", type: i9.DxTextBoxComponent, selector: "dx-text-box", inputs: ["accessKey", "activeStateEnabled", "buttons", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "inputAttr", "isValid", "label", "labelMode", "mask", "maskChar", "maskInvalidMessage", "maskRules", "maxLength", "mode", "name", "placeholder", "readOnly", "rtlEnabled", "showClearButton", "showMaskMode", "spellcheck", "stylingMode", "tabIndex", "text", "useMaskedValue", "validationError", "validationErrors", "validationMessageMode", "validationStatus", "value", "valueChangeEvent", "visible", "width"], outputs: ["onChange", "onContentReady", "onCopy", "onCut", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onKeyDown", "onKeyUp", "onOptionChanged", "onPaste", "onValueChanged", "accessKeyChange", "activeStateEnabledChange", "buttonsChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "isValidChange", "labelChange", "labelModeChange", "maskChange", "maskCharChange", "maskInvalidMessageChange", "maskRulesChange", "maxLengthChange", "modeChange", "nameChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "showClearButtonChange", "showMaskModeChange", "spellcheckChange", "stylingModeChange", "tabIndexChange", "textChange", "useMaskedValueChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationStatusChange", "valueChange", "valueChangeEventChange", "visibleChange", "widthChange", "onBlur"] }, { kind: "directive", type: i10.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i10.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i11.LoaderComponent, selector: "app-loader" }, { kind: "pipe", type: i4.JsonPipe, name: "json" }] });
|
|
269
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: DashTodayPreviousComponent, decorators: [{
|
|
270
|
+
type: Component,
|
|
271
|
+
args: [{ selector: 'lib-dash-today-previous', template: "\n\n<div class=\"m-2\"></div>\n <div class=\"w-full m-2 border-r\">\n <ng-container *ngIf=\"!isJsonPreview\">\n <pre><code>{{jsaonDatasource | json}}</code></pre>\n </ng-container>\n <ng-container *ngIf=\"isJsonPreview\"> \n <div class=\"flex justify-center items-start bg-gray-800 p-3 mx-2 text-center\">\n <div class=\"w-full\">\n <div [style.color]=\"tableDataConfig.color\"\n [style.font-size.px]=\"tableDataConfig.size || 16\"\n class=\"font-semibold\">{{jsaonDatasource.revenue}}</div>\n <div class=\"text-gray-400 text-sm font-light m-2\">\n Previous: {{ previousRevenue !== null ? previousRevenue : 'N/A' }}\n <span class=\"text-teal-400\">(0.0001%)</span>\n </div>\n </div>\n </div>\n </ng-container>\n </div>\n <div class=\"w-full mx-2 border-r\">\n <div class=\"mb-4 border-b border-gray-200 dark:border-gray-700\">\n <ul class=\"flex flex-wrap -mb-px text-sm font-medium text-center\" role=\"tablist\">\n <li class=\"me-2\" role=\"presentation\">\n <button class=\"inline-block p-4 border-b-2 rounded-t-lg\" [ngClass]=\"{\n 'text-purple-600 border-purple-600 dark:text-purple-500 dark:border-purple-500': activeTab === 'basic',\n 'text-gray-500 dark:text-gray-400 border-transparent': activeTab !== 'basic'\n }\" (click)=\"setActiveTab('basic')\" type=\"button\" role=\"tab\">\n Basic\n </button>\n </li>\n <li class=\"me-2\" role=\"presentation\">\n <button class=\"inline-block p-4 border-b-2 rounded-t-lg\" [ngClass]=\"{\n 'text-purple-600 border-purple-600 dark:text-purple-500 dark:border-purple-500': activeTab === 'columns',\n 'text-gray-500 dark:text-gray-400 border-transparent': activeTab !== 'columns'\n }\" (click)=\"setActiveTab('columns')\" type=\"button\" role=\"tab\">\n Columns\n </button>\n </li>\n <li class=\"me-2\" role=\"presentation\">\n <button class=\"inline-block p-4 border-b-2 rounded-t-lg\" [ngClass]=\"{\n 'text-purple-600 border-purple-600 dark:text-purple-500 dark:border-purple-500': activeTab === 'properties',\n 'text-gray-500 dark:text-gray-400 border-transparent': activeTab !== 'properties'\n }\" (click)=\"setActiveTab('properties')\" type=\"button\" role=\"tab\">\n Properties\n </button>\n </li>\n\n </ul>\n </div>\n\n <div id=\"default-styled-tab-content\"> \n <div *ngIf=\"activeTab === 'basic'\">\n <div class=\"flex flex-col flex-auto min-w-0\">\n <div class=\"text-sm py-1 font-extrabold border-b bg-gray-700 text-white px-2\"> Filter Title Config\n </div>\n <div class=\"pt-2 border-x border-b \">\n <div class=\"my-2 flex justify-between\">\n \n <div class=\"px-1 mb-2 w-full\">\n <div class=\"text-md mb-2\">Color</div>\n <dx-color-box [(ngModel)]=\"tableDataConfig.color\"></dx-color-box>\n\n </div>\n <div class=\"px-1 mb-1 w-full\">\n <div class=\"text-md mb-2\">Size</div>\n <dx-text-box placeholder=\"Enter size\" [(ngModel)]=\"tableDataConfig.size\"></dx-text-box>\n \n </div>\n \n <div class=\"px-1 mb-1 w-full\">\n <div class=\"text-md mb-2\"> Key To Pass </div>\n <dx-tag-box [items]=\"configColume\"\n [(ngModel)]=\"table_columns_config.kpiConfig.keyToPass\"></dx-tag-box>\n </div>\n <div class=\"px-1 mb-1 w-full\">\n <div class=\"text-md mb-2\"> Display Formate </div>\n <dx-select-box [items]=\"['daily','hourly','monthly']\"\n [(ngModel)]=\"table_columns_config.kpiConfig.formate\"></dx-select-box>\n </div>\n\n <div class=\"px-1 mb-1 w-full\">\n <div class=\"text-md mb-2\"> Sort By </div>\n <dx-tag-box [items]=\"configColume\"\n [(ngModel)]=\"tableDataConfig.sortBy\"></dx-tag-box>\n </div>\n </div> \n </div>\n </div>\n </div>\n <div *ngIf=\"activeTab === 'basic'\" class=\"flex flex-col flex-auto min-w-0\">\n <div class=\"text-sm py-1 font-extrabold border-b bg-gray-700 text-white px-2\"> Select The Previos Date Range\n </div>\n <div class=\"flex flse-row border-x border-b p-4\">\n <div class=\"px-1 mb-1 w-full\">\n <div class=\"text-md mb-2\" style=\"margin-top: 37px;\">\n <dx-check-box [(value)]=\"tableDataConfig.isPreviousDay\" text=\"Previous Day\"></dx-check-box>\n \n </div>\n <ng-container *ngIf=\"tableDataConfig.isPreviousDay\">\n <div class=\"px-1 mb-1 w-1/2 flex items-center\">\n <dx-select-box \n [items]=\"['Day', 'Month', 'Year']\"\n class=\"ml-2\"\n [(ngModel)]=\"tableDataConfig.timeUnit\">\n </dx-select-box>\n \n <dx-text-box type=\"number\" [(ngModel)]=\"tableDataConfig.timeValue\"\n class=\"ml-2\"></dx-text-box>\n </div>\n </ng-container>\n \n </div>\n </div>\n\n </div>\n <div *ngIf=\"activeTab === 'columns'\">\n <div class=\"h-full overflow-x-auto\">\n <div class=\"flex flex-col flex-auto min-w-0\">\n\n <div class=\"pt-2 border-x border-b \">\n <div class=\"my-2 border-b flex flex-row\"\n *ngFor=\"let item of tableDataConfig.columns; let i = index;\">\n <div class=\"px-1 mb-2 mt-6 w-full\">\n <dx-check-box [(ngModel)]=\"item.visible\"\n text=\"Visiblity\"></dx-check-box>\n </div>\n \n <div class=\"px-1 mb-2 w-full\">\n <div class=\"text-md mb-2\"> Value Field</div>\n <dx-select-box [searchEnabled]=\"true\" [items]=\"configColume\"\n [(ngModel)]=\"item.dataField\"></dx-select-box>\n </div>\n <div class=\"px-1 mb-2 w-full\">\n <div class=\"text-md mb-2\"> Caption</div>\n <dx-text-box [(ngModel)]=\"item.caption\"></dx-text-box>\n </div>\n <div class=\"px-2 mb-2 w-full\">\n <div class=\"text-md mb-2\"> UI Function</div>\n <dx-select-box [items]=\"enrichNameList\" [(ngModel)]=\"item.enrichName\"\n [searchEnabled]=\"true\"></dx-select-box>\n </div>\n <div class=\"text-center mt-8 w-full\">\n <button *ngIf=\"i !== 0\" class=\"{{commonService.btn_light_sm}} cursor-pointer mx-1\"\n (click)=\"moveItemForColumns(i, 'up')\">\n <i class=\"fa fa-arrow-up\" aria-hidden=\"true\"></i>\n </button>\n\n <button *ngIf=\"i !== tableDataConfig.columns.length - 1\"\n class=\"{{commonService.btn_light_sm}} cursor-pointer mx-1\"\n (click)=\"moveItemForColumns(i, 'down')\">\n <i class=\"fa fa-arrow-down\" aria-hidden=\"true\"></i>\n </button>\n <button class=\"{{commonService.btn_danger_sm}} cursor-pointer\"\n (click)=\"deleteColumns(i)\"><i class=\"fa fa-trash-o\" aria-hidden=\"true\"></i>\n </button>\n </div>\n\n </div>\n </div>\n </div>\n <div class=\"flex flex-row justify-end my-2\">\n <button class=\"{{commonService.btn_primary_sm}} cursor-pointer\" (click)=\"addColumns()\">Add\n Columns</button>\n </div>\n </div>\n </div>\n <div *ngIf=\"activeTab === 'properties'\">\n <div class=\"h-full overflow-x-auto\">\n <app-loader *ngIf=\"isLoader\"></app-loader>\n <ng-container *ngIf=\"!isLoader\">\n <div class=\"flex flex-row justify-between border-b py-3\">\n <div class=\"mx-2\">\n <dx-check-box [value]=\"viewProperties.enableClickEvent\"\n [(ngModel)]=\"viewProperties.enableClickEvent\"\n text=\"Enable Click Event\"></dx-check-box>\n </div>\n <div class=\"mx-2\">\n <dx-check-box [value]=\"viewProperties.enableRightClickEvent\"\n [(ngModel)]=\"viewProperties.enableRightClickEvent\"\n text=\"Enable Right Click\"></dx-check-box>\n </div>\n </div>\n <div class=\"w-full p-2\" *ngIf=\"viewProperties.enableClickEvent\">\n\n <div class=\"flex flex-col flex-auto min-w-0 my-2\">\n <div class=\"text-sm py-1 font-extrabold border-b bg-gray-700 text-white px-2\"> Event\n Type\n Option\n </div>\n <div class=\"w-full p-3 border-x border-b \">\n <div class=\"flex flex-row\">\n <div class=\"w-full\">\n <div class=\"text-md mb-2\"> Event Type</div>\n </div>\n <div class=\"w-full\">\n <dx-select-box [items]=\"['drilldown','sameViewDrilldown','optionalDrillDown']\"\n (onValueChanged)=\"getSelectedEventType($event)\"\n [(ngModel)]=\"viewProperties.clickEventOptions.eventType\"></dx-select-box>\n </div>\n </div>\n <ng-container *ngIf=\"viewProperties.clickEventOptions.eventType == 'drilldown'\">\n <div class=\"flex flex-row justify-between mt-3\">\n <div class=\"w-full\">\n <div class=\"text-md mb-2\"> Associated Views</div>\n <dx-tag-box [items]=\"allConfiguredViews\"\n [(ngModel)]=\"viewProperties.clickEventOptions.associatedViews\"\n valueExpr=\"viewId\" displayExpr=\"viewName\"\n [showSelectionControls]=\"true\" [searchEnabled]=\"true\"></dx-tag-box>\n </div>\n </div>\n </ng-container>\n <ng-container *ngIf=\"viewProperties.clickEventOptions.eventType == 'sameViewDrilldown'\">\n <div class=\"flex flex-row justify-between mt-3\">\n <div class=\"w-full\">\n <div class=\"text-md mb-2\"> Associated Views</div>\n <dx-tag-box [items]=\"allConfiguredViews\"\n [(ngModel)]=\"viewProperties.clickEventOptions.associatedViews\"\n valueExpr=\"viewId\" displayExpr=\"viewName\"\n [showSelectionControls]=\"true\" [searchEnabled]=\"true\"></dx-tag-box>\n </div>\n </div>\n </ng-container>\n <ng-container\n *ngIf=\"viewProperties.clickEventOptions.eventType == 'optionalDrillDown'\">\n <div class=\"flex flex-row justify-between mt-3\">\n <div class=\"w-full\">\n <ng-container\n *ngFor=\"let item of optionalDrilDownDataSource;let i = index;\">\n\n <div class=\"flex flex-row justify-between\">\n <div class=\"mx-2 w-1/2\">\n <div class=\"text-md mb-2\"> Associated Views</div>\n <dx-tag-box [items]=\"allConfiguredViews\"\n [(ngModel)]=\"item.viewId\" valueExpr=\"viewId\"\n displayExpr=\"viewName\" [showSelectionControls]=\"true\"\n [maxDisplayedTags]=\"2\"\n [searchEnabled]=\"true\"></dx-tag-box>\n\n </div>\n <div class=\"mx-2 w-1/2\">\n <div class=\"text-md mb-2\"> Associated Params</div>\n <dx-text-box\n [(ngModel)]=\"item.filterCondition\"></dx-text-box>\n </div>\n <div class=\"mx-2\">\n <button\n class=\"{{commonService.btn_danger_sm}} cursor-pointer mt-8\"\n (click)=\"deleteAssociatedParams(i)\"><i\n class=\"fa fa-trash-o\" aria-hidden=\"true\"></i>\n </button>\n </div>\n </div>\n </ng-container>\n <div class=\"flex flex-row justify-end mt-4\">\n <button class=\"{{commonService.btn_primary_sm}} cursor-pointer\"\n (click)=\"addAssociatedParams()\">Add\n Params</button>\n </div>\n </div>\n </div>\n </ng-container>\n <button class=\"{{commonService.btn_light_md}} cursor-pointer mt-4\"\n (click)=\"resetViewProprstise()\">Reset All Event</button>\n </div>\n </div>\n\n </div>\n </ng-container>\n </div>\n </div>\n\n </div>\n </div>\n\n\n<div class=\"flex flex-row border-t pl-3\">\n <div class=\"flex justify-start mx-1\">\n <button class=\"{{commonService.btn_warning_md}} cursor-pointer mt-2\" (click)=\"isJsonPreview = true\">\n Preview</button>\n <button class=\"{{commonService.btn_primary_md}} cursor-pointer mt-2\" (click)=\"isJsonPreview = false\">Data\n Preview</button>\n </div>\n <div class=\"flex justify-end mx-1 flex-grow\">\n <button class=\"{{commonService.btn_success_md}} cursor-pointer mt-2\"\n (click)=\"getSaveConfig()\">Submit</button>\n </div>\n</div>" }]
|
|
272
|
+
}], ctorParameters: function () { return [{ type: i1.CommonService }, { type: i0.ChangeDetectorRef }, { type: i2.ApplicationContentService }, { type: i3.ToastrService }]; }, propDecorators: { gettodayPreviousConfigOutPut: [{
|
|
273
|
+
type: Output
|
|
274
|
+
}], chartconfigData: [{
|
|
275
|
+
type: Input,
|
|
276
|
+
args: ['datasetmodal']
|
|
277
|
+
}] } });
|
|
278
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFzaC10b2RheS1wcmV2aW91cy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9nYW1tYS1hcHAtY29udHJvbGxlci9zcmMvbGliL2FwcGxpY2F0aW9uLWNvbnRyb2xsZXIvc3VwcG9ydC1jb21wb25lbnRzL2Rhc2gtdG9kYXktcHJldmlvdXMvZGFzaC10b2RheS1wcmV2aW91cy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9nYW1tYS1hcHAtY29udHJvbGxlci9zcmMvbGliL2FwcGxpY2F0aW9uLWNvbnRyb2xsZXIvc3VwcG9ydC1jb21wb25lbnRzL2Rhc2gtdG9kYXktcHJldmlvdXMvZGFzaC10b2RheS1wcmV2aW91cy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7Ozs7OztBQVNsRyxNQUFNLE9BQU8sMEJBQTBCO0lBOENyQyxZQUFtQixhQUE0QixFQUFVLEdBQXNCLEVBQVUsT0FBa0MsRUFBVSxNQUFxQjtRQUF2SSxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUFVLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQVUsWUFBTyxHQUFQLE9BQU8sQ0FBMkI7UUFBVSxXQUFNLEdBQU4sTUFBTSxDQUFlO1FBNUMxSix1QkFBa0IsR0FBUSxFQUFFLENBQUM7UUFJN0IsdUJBQWtCLEdBQVEsRUFBRSxDQUFDO1FBRzdCLCtCQUEwQixHQUFRLEVBQUUsQ0FBQztRQUVyQyx5QkFBb0IsR0FBRztZQUNyQixXQUFXLEVBQUU7Z0JBQ1gsV0FBVyxFQUFFLEVBQUU7Z0JBQ2YsS0FBSyxFQUFFLHFDQUFxQztnQkFDNUMsYUFBYSxFQUFFLE9BQU87Z0JBQ3RCLFNBQVMsRUFBRSxFQUFFO2dCQUNiLFdBQVcs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Q3ZCLHFCQUFxQixFQUFFLElBQUk7WUFDM0IsaUJBQWlCLEVBQUU7Z0JBQ2pCLGVBQWUsRUFBRSxFQUFFO2dCQUNuQixTQUFTLEVBQUUsRUFBRTthQUNkO1NBQ0YsQ0FBQztJQUNKLENBQUM7O3VIQXpTVSwwQkFBMEI7MkdBQTFCLDBCQUEwQiw0TUNUdkMsdXVrQkFnU007MkZEdlJPLDBCQUEwQjtrQkFMdEMsU0FBUzsrQkFDRSx5QkFBeUI7d01BcURsQiw0QkFBNEI7c0JBQTVDLE1BQU07Z0JBSUgsZUFBZTtzQkFEbEIsS0FBSzt1QkFBQyxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFwcGxpY2F0aW9uQ29udGVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi9hcHBsaWNhdGlvbi1jb250ZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgVG9hc3RyU2VydmljZSB9IGZyb20gJ25neC10b2FzdHInO1xuaW1wb3J0IHsgQ29tbW9uU2VydmljZSB9IGZyb20gJy4uLy4uL2NvbW1vbic7XG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItZGFzaC10b2RheS1wcmV2aW91cycsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXNoLXRvZGF5LXByZXZpb3VzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZGFzaC10b2RheS1wcmV2aW91cy5jb21wb25lbnQuY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgRGFzaFRvZGF5UHJldmlvdXNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBpc0pzb25QcmV2aWV3OiBib29sZWFuXG4gIGRhdGFTb3Vyc2VGb3JUYWJsZTogYW55ID0gW107XG4gIGpzYW9uRGF0YXNvdXJjZTogYW55O1xuICBwcmV2aW91c1JldmVudWU6YW55O1xuICBjb25maWdDb2x1bWU6IGFueTtcbiAgYWxsQ29uZmlndXJlZFZpZXdzOiBhbnkgPSBbXTtcbiAgLy8gZ3JvdXBPZlZpZXdzOiBhbnk7XG4gIHZpZXdQcm9wZXJ0aWVzOiBhbnk7XG4gIG9wdGlvbmFsRHJpbERvd25EYXRhU291cmNlOiBhbnkgPSBbXTtcblxuICB0YWJsZV9jb2x1bW5zX2NvbmZpZyA9IHtcbiAgICBcImtwaUNvbmZpZ1wiOiB7XG4gICAgICBcInNlcnZpY2VJZFwiOiBcIlwiLFxuICAgICAgXCJhcGlcIjogXCIva3BpL3RyZW5kcy9uZXR3b3JrL2dldC1tZXRyaWMtZGF0YVwiLFxuICAgICAgXCJkaXNwbGF5VHlwZVwiOiBcInRhYmxlXCIsXG4gICAgICBcImZvcm1hdGVcIjogXCJcIixcbiAgICAgIFwia2V5VG9QYXNzXCI6IFtdLFxuICAgICAgXCJjb21wb25lbnROYW1lXCI6IFwiR2FtbWFBZHZhbmNlT3BlcmF0b3JUYWJsZUNvbXBvbmVudFwiLFxuICAgICAgXCJkYXRhQ29uZmlnXCI6IHtcbiAgICAgICAgXG4gICAgICB9XG4gICAgfSxcbiAgfTtcblxuICB0YWJsZURhdGFDb25maWcgPSB7XG4gICAgXCJ0aW1lVW5pdFwiOiBcIkRheVwiLFxuICAgIFwidGltZVZhbHVlXCI6IDEsXG4gICAgXCJpc1ByZXZpb3VzRGF5XCI6dHJ1ZSxcbiAgICBcImNvbG9yXCI6IFwiXCIsXG4gICAgXCJzaXplXCI6IFwiXCIsXG4gICAgXCJzb3J0QnlcIjpbXSxcbiAgICBcImNvbHVtbnNcIjogW1xuICAgIF1cbiAgfTtcblxuXG5cblxuICBlbnJpY2hOYW1lTGlzdCA9IFtcImFiYnJldmlhdGVOdW1iZXJcIiwgXCJnZXRDb2xvckNvZGVTcGFuXCIsIFwiVGhvdXNhbmRTZXBhcmF0b3JcIiwgXCJUaG91c2FuZFNlcGFyYXRvcldpdGhUd29EZWNpbWFsc1wiXVxuICBzZWxlY3RlZFRhYmxlVmlld1R5cGU6IGFueTtcbiAgaXNMb2FkZXI6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIHNlbGVjdGVkVmlld0NvbmZpZ3M6IGFueTtcblxuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBjb21tb25TZXJ2aWNlOiBDb21tb25TZXJ2aWNlLCBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsIHByaXZhdGUgc2VydmljZTogQXBwbGljYXRpb25Db250ZW50U2VydmljZSwgcHJpdmF0ZSB0YW9zdHI6IFRvYXN0clNlcnZpY2UpIHsgfVxuXG4gIGFjdGl2ZVRhYjogc3RyaW5nID0gJ2Jhc2ljJztcbiAgQE91dHB1dCgpIHB1YmxpYyBnZXR0b2RheVByZXZpb3VzQ29uZmlnT3V0UHV0OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuXG4gIEBJbnB1dCgnZGF0YXNldG1vZGFsJylcbiAgc2V0IGNoYXJ0Y29uZmlnRGF0YSh2YWx1ZSlcbiAgIHtcbiAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZS5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5qc2FvbkRhdGFzb3VyY2UgPSB2YWx1ZS5kYXRhWzBdO1xuICAgICAgdGhpcy5wcmV2aW91c1JldmVudWUgPSB2YWx1ZS5kYXRhLmxlbmd0aCA+IDEgPyB2YWx1ZS5kYXRhWzFdLnJldmVudWUgOiBudWxsO1xuICAgICAgdGhpcy5jb25maWdDb2x1bWUgPSBPYmplY3Qua2V5cyh2YWx1ZS5kYXRhWzBdKTtcbiAgICAgIHRoaXMuZGF0YVNvdXJzZUZvclRhYmxlID0gdmFsdWUuZGF0YS5zbGljZSgwLCAxMCk7XG4gICAgICB0aGlzLnNlbGVjdGVkVmlld0NvbmZpZ3MgPSB2YWx1ZTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRUYWJsZVZpZXdUeXBlID0gdmFsdWUuc2VsZWN0ZWRWaWV3VHlwZTtcbiAgICAgIGlmICh2YWx1ZS5zZWxlY3RlZFdpZGdldENvbmZpZykge1xuICAgICAgICB0aGlzLnRhYmxlX2NvbHVtbnNfY29uZmlnWydrcGlDb25maWcnXSA9IHZhbHVlLnNlbGVjdGVkV2lkZ2V0Q29uZmlnO1xuICAgICAgICB0aGlzLnRhYmxlRGF0YUNvbmZpZyA9IHZhbHVlLnNlbGVjdGVkV2lkZ2V0Q29uZmlnLmRhdGFDb25maWc7XG4gICAgICAgIC8vIGhhdmUgdG8gZGVmaW5lIGZvciAwIGluZGV4XG4gICAgICAgIHRoaXMudGFibGVEYXRhQ29uZmlnLmNvbHVtbnMgPSAodmFsdWUuc2VsZWN0ZWRXaWRnZXRDb25maWcuZGF0YUNvbmZpZy5jb2x1bW5zKT92YWx1ZS5zZWxlY3RlZFdpZGdldENvbmZpZy5kYXRhQ29uZmlnLmNvbHVtbnM6W10gO1xuICAgICAgICBpZiAodmFsdWUuc2VsZWN0ZWRXaWRnZXRDb25maWcudmlld1Byb3BlcnRpZXMpIHtcblxuICAgICAgICAgIC8vIHZhbHVlLnNlbGVjdGVkV2lkZ2V0Q29uZmlnLnZpZXdQcm9wZXJ0aWVzLmNsaWNrRXZlbnRPcHRpb25zLmFzc29jaWF0ZWRWaWV3c1xuICAgICAgICAgIHRoaXMudmlld1Byb3BlcnRpZXMgPSB2YWx1ZS5zZWxlY3RlZFdpZGdldENvbmZpZy52aWV3UHJvcGVydGllcztcbiAgICAgICAgICB0aGlzLnZpZXdQcm9wZXJ0aWVzID0ge1xuICAgICAgICAgICAgXCJlbmFibGVDbGlja0V2ZW50XCI6IHZhbHVlLnNlbGVjdGVkV2lkZ2V0Q29uZmlnLnZpZXdQcm9wZXJ0aWVzLmVuYWJsZUNsaWNrRXZlbnQsXG4gICAgICAgICAgICBcImVuYWJsZVJpZ2h0Q2xpY2tFdmVudFwiOiB2YWx1ZS5zZWxlY3RlZFdpZGdldENvbmZpZy52aWV3UHJvcGVydGllcy5lbmFibGVSaWdodENsaWNrRXZlbnRcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHZhbHVlLnNlbGVjdGVkV2lkZ2V0Q29uZmlnLnZpZXdQcm9wZXJ0aWVzLmVuYWJsZUNsaWNrRXZlbnQpIHtcbiAgICAgICAgICAgIGlmICh2YWx1ZS5zZWxlY3RlZFdpZGdldENvbmZpZy52aWV3UHJvcGVydGllcy5jbGlja0V2ZW50T3B0aW9ucy5ldmVudFR5cGUgPT0gJ29wdGlvbmFsRHJpbGxEb3duJykge1xuICAgICAgICAgICAgICB0aGlzLm9wdGlvbmFsRHJpbERvd25EYXRhU291cmNlID0gdmFsdWUuc2VsZWN0ZWRXaWRnZXRDb25maWcudmlld1Byb3BlcnRpZXMuY2xpY2tFdmVudE9wdGlvbnMuYXNzb2NpYXRlZFZpZXdzO1xuICAgICAgICAgICAgICB0aGlzLnZpZXdQcm9wZXJ0aWVzWydjbGlja0V2ZW50T3B0aW9ucyddID0ge1xuICAgICAgICAgICAgICAgIFwiZXZlbnRUeXBlXCI6IHZhbHVlLnNlbGVjdGVkV2lkZ2V0Q29uZmlnLnZpZXdQcm9wZXJ0aWVzLmNsaWNrRXZlbnRPcHRpb25zLmV2ZW50VHlwZSxcbiAgICAgICAgICAgICAgICBcImFzc29jaWF0ZWRWaWV3c1wiOiBbXVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHZhbHVlLnNlbGVjdGVkV2lkZ2V0Q29uZmlnLnZpZXdQcm9wZXJ0aWVzLmNsaWNrRXZlbnRPcHRpb25zLmV2ZW50VHlwZSA9PSAnZHJpbGxkb3duJykge1xuICAgICAgICAgICAgICB0aGlzLnZpZXdQcm9wZXJ0aWVzWydjbGlja0V2ZW50T3B0aW9ucyddID0ge1xuICAgICAgICAgICAgICAgIFwiZXZlbnRUeXBlXCI6IHZhbHVlLnNlbGVjdGVkV2lkZ2V0Q29uZmlnLnZpZXdQcm9wZXJ0aWVzLmNsaWNrRXZlbnRPcHRpb25zLmV2ZW50VHlwZSxcbiAgICAgICAgICAgICAgICBcImFzc29jaWF0ZWRWaWV3c1wiOiB2YWx1ZS5zZWxlY3RlZFdpZGdldENvbmZpZy52aWV3UHJvcGVydGllcy5jbGlja0V2ZW50T3B0aW9ucy5hc3NvY2lhdGVkVmlld3NcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmICh2YWx1ZS5zZWxlY3RlZFdpZGdldENvbmZpZy52aWV3UHJvcGVydGllcy5jbGlja0V2ZW50T3B0aW9ucy5ldmVudFR5cGUgPT0gJycpIHtcbiAgICAgICAgICAgICAgdGhpcy52aWV3UHJvcGVydGllc1snY2xpY2tFdmVudE9wdGlvbnMnXSA9IHtcbiAgICAgICAgICAgICAgICBcImV2ZW50VHlwZVwiOiBcIlwiLFxuICAgICAgICAgICAgICAgIFwiYXNzb2NpYXRlZFZpZXdzXCI6IFtdXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRoaXMudmlld1Byb3BlcnRpZXMgPSB7XG4gICAgICAgICAgICAgICAgZW5hYmxlQ2xpY2tFdmVudDogZmFsc2UsXG4gICAgICAgICAgICAgICAgZW5hYmxlUmlnaHRDbGlja0V2ZW50OiB0cnVlLFxuICAgICAgICAgICAgICAgIGNsaWNrRXZlbnRPcHRpb25zOiB7XG4gICAgICAgICAgICAgICAgICBhc3NvY2lhdGVkVmlld3M6IFtdLFxuICAgICAgICAgICAgICAgICAgZXZlbnRUeXBlOiBcIlwiXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudmlld1Byb3BlcnRpZXNbJ2NsaWNrRXZlbnRPcHRpb25zJ10gPSB7fVxuICAgICAgICAgIH1cblxuICAgICAgICB9XG4gICAgICAgIGVsc2V7XG4gICAgICAgICAgdGhpcy52aWV3UHJvcGVydGllcyA9IHtcbiAgICAgICAgICAgIGVuYWJsZUNsaWNrRXZlbnQ6IGZhbHNlLFxuICAgICAgICAgICAgZW5hYmxlUmlnaHRDbGlja0V2ZW50OiB0cnVlLFxuICAgICAgICAgICAgY2xpY2tFdmVudE9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgYXNzb2NpYXRlZFZpZXdzOiBbXSxcbiAgICAgICAgICAgICAgZXZlbnRUeXBlOiBcIlwiXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnRhYmxlRGF0YUNvbmZpZy5jb2x1bW5zID0gdmFsdWUuY29sdW1uRGF0YTtcbiAgICAgICAgdGhpcy52aWV3UHJvcGVydGllcyA9IHtcbiAgICAgICAgICBlbmFibGVDbGlja0V2ZW50OiBmYWxzZSxcbiAgICAgICAgICBlbmFibGVSaWdodENsaWNrRXZlbnQ6IHRydWUsXG4gICAgICAgICAgY2xpY2tFdmVudE9wdGlvbnM6IHtcbiAgICAgICAgICAgIGFzc29jaWF0ZWRWaWV3czogW10sXG4gICAgICAgICAgICBldmVudFR5cGU6IFwiXCJcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIGlmICghdGhpcy50YWJsZURhdGFDb25maWcuY29sdW1ucykge1xuICAgICAgICAgIHRoaXMudGFibGVEYXRhQ29uZmlnLmNvbHVtbnMgPSBbXTtcbiAgICAgICAgICB0aGlzLmNvbmZpZ0NvbHVtZS5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgICAgICAgbGV0IG9iaiA9IHtcbiAgICAgICAgICAgICAgXCJ2aXNpYmxlXCI6IHRydWUsXG4gICAgICAgICAgICAgIFwiZGF0YUZpZWxkXCI6IGVsZW1lbnQsXG4gICAgICAgICAgICAgIFwiY2FwdGlvblwiOiB0aGlzLmNvbW1vblNlcnZpY2UuY29udmVydFN0cmluZyhlbGVtZW50KSxcbiAgICAgICAgICAgICAgXCJlbnJpY2hOYW1lXCI6IFwiXCIsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgIFxuICAgICAgICAgICAgdGhpcy50YWJsZURhdGFDb25maWcuY29sdW1ucy5wdXNoKG9iaik7XG5cbiAgICAgICAgICB9KTtcbiAgICAgICAgICBjb25zb2xlLmxvZyh0aGlzLmNvbmZpZ0NvbHVtZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5pc0xvYWRlciA9IHRydWU7XG4gICAgdGhpcy5zZXJ2aWNlLmdldEFwcFZpZXdDb25maWdzKCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChkYXRhOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5hbGxDb25maWd1cmVkVmlld3MgPSBkYXRhO1xuXG4gICAgICAgIHRoaXMuaXNMb2FkZXIgPSBmYWxzZTtcbiAgICAgIH0sIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy50YW9zdHIuZXJyb3IoJ1VuZXhwZWN0ZWQgU2VydmVyIEV4Y2VwdGlvbi4gUGxlYXNlIGNvbnRhY3QgU3lzdGVtIEFkbWluLicsICdBbGwgVmlld3MnKVxuICAgICAgfVxuICAgIH0pXG4gICAgaWYgKHRoaXMub3B0aW9uYWxEcmlsRG93bkRhdGFTb3VyY2UubGVuZ3RoID09IDApIHtcbiAgICAgIHRoaXMub3B0aW9uYWxEcmlsRG93bkRhdGFTb3VyY2UgPSBbXG4gICAgICAgIHtcbiAgICAgICAgICAndmlld0lkJzogXCJcIixcbiAgICAgICAgICAnZmlsdGVyQ29uZGl0aW9uJzogXCJcIlxuICAgICAgICB9XG4gICAgICBdXG4gICAgfVxuICAgIFxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuIFxuICBcbiAgYWRkQ29sdW1ucygpIHtcbiAgICBsZXQgb2JqID0ge1xuICAgICAgXCJ2aXNpYmxlXCI6IHRydWUsXG4gICAgICBcImRhdGFGaWVsZFwiOiBcIlwiLFxuICAgICAgXCJjYXB0aW9uXCI6IFwiXCIsXG4gICAgICBcImVucmljaE5hbWVcIjogXCJcIixcbiAgICB9XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRUYWJsZVZpZXdUeXBlID09PSAnZ3JvdXBUYWJsZScpIHtcbiAgICAgIG9ialsnZ3JvdXAnXSA9ICcnO1xuICAgIH1cbiAgICB0aGlzLnRhYmxlRGF0YUNvbmZpZy5jb2x1bW5zLnB1c2gob2JqKTtcbiAgfVxuXG4gIGRlbGV0ZUNvbHVtbnMoaSkge1xuICAgIHRoaXMudGFibGVEYXRhQ29uZmlnLmNvbHVtbnMuc3BsaWNlKGksIDEpXG4gIH1cblxuICBnZXRFbnJpY2hDbGFzc05hbWUoZSwgaXRlbSkge1xuICAgIGl0ZW0uZW5yaWNoTmFtZSA9IGUudmFsdWU7XG5cbiAgfVxuXG5cbiAgbW92ZUl0ZW1Gb3JDb2x1bW5zKGluZGV4OiBudW1iZXIsIGRpcmVjdGlvbjogJ3VwJyB8ICdkb3duJyk6IHZvaWQge1xuICAgIC8vIFByZXZlbnQgbW92aW5nIGJleW9uZCBhcnJheSBib3VuZHNcbiAgICBpZiAoaW5kZXggPCAwIHx8IGluZGV4ID49IHRoaXMudGFibGVEYXRhQ29uZmlnLmNvbHVtbnMubGVuZ3RoKSByZXR1cm47XG4gICAgY29uc3QgbmV3UG9zaXRpb24gPSBkaXJlY3Rpb24gPT09ICd1cCcgPyBpbmRleCAtIDEgOiBpbmRleCArIDE7XG4gICAgLy8gUHJldmVudCBtb3ZpbmcgYmV5b25kIGFycmF5IGJvdW5kc1xuICAgIGlmIChuZXdQb3NpdGlvbiA8IDAgfHwgbmV3UG9zaXRpb24gPj0gdGhpcy50YWJsZURhdGFDb25maWcuY29sdW1ucy5sZW5ndGgpIHJldHVybjtcblxuICAgIC8vIE1vdmUgaXRlbVxuICAgIGNvbnN0IGl0ZW1Ub01vdmUgPSB0aGlzLnRhYmxlRGF0YUNvbmZpZy5jb2x1bW5zW2luZGV4XTtcbiAgICB0aGlzLnRhYmxlRGF0YUNvbmZpZy5jb2x1bW5zLnNwbGljZShpbmRleCwgMSk7IC8vIFJlbW92ZSBpdGVtIGZyb20gY3VycmVudCBwb3NpdGlvblxuICAgIHRoaXMudGFibGVEYXRhQ29uZmlnLmNvbHVtbnMuc3BsaWNlKG5ld1Bvc2l0aW9uLCAwLCBpdGVtVG9Nb3ZlKTsgLy8gSW5zZXJ0IGl0ZW0gaW4gbmV3IHBvc2l0aW9uXG4gIH1cblxuICBnZXRPYmplY3RLZXlzKG9iajogYW55KTogc3RyaW5nW10ge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyhvYmopO1xuICB9XG4gIHNldEFjdGl2ZVRhYih0YWI6IHN0cmluZykge1xuICAgIHRoaXMuYWN0aXZlVGFiID0gdGFiO1xuICB9XG5cbiAgZ2V0R3JvdXBDb2x1bW5zKGNvbHVtbnMpIHtcbiAgICBjb25zdCBncm91cGVkQ29sdW1ucyA9IGNvbHVtbnMucmVkdWNlKChhY2MsIGNvbHVtbikgPT4ge1xuICAgICAgbGV0IGdyb3VwID0gYWNjLmZpbmQoaXRlbSA9PiBpdGVtLmNhcHRpb24gPT09IGNvbHVtbi5ncm91cCk7XG4gICAgICBpZiAoIWdyb3VwKSB7XG4gICAgICAgIGdyb3VwID0ge1xuICAgICAgICAgIGNhcHRpb246IGNvbHVtbi5ncm91cCxcbiAgICAgICAgICBjb2x1bW5zOiBbXVxuICAgICAgICB9O1xuICAgICAgICBhY2MucHVzaChncm91cCk7XG4gICAgICB9XG4gICAgICBncm91cC5jb2x1bW5zLnB1c2goe1xuICAgICAgICBkYXRhRmllbGQ6IGNvbHVtbi5kYXRhRmllbGQsXG4gICAgICAgIHZpc2libGU6IGNvbHVtbi52aXNpYmxlLFxuICAgICAgICBjYXB0aW9uOiBjb2x1bW4uY2FwdGlvblxuICAgICAgfSk7XG4gICAgICByZXR1cm4gYWNjO1xuICAgIH0sIFtdKTtcbiAgICByZXR1cm4gZ3JvdXBlZENvbHVtbnM7XG4gIH1cbiAgZ2VDb2x1bW5zRnJvbUdyb3VwKGNvbHVtbnMpIHtcbiAgICBjb25zdCBuZXdDb2x1bW5zID0gW107XG5cbiAgICBjb2x1bW5zLmZvckVhY2goZ3JvdXAgPT4ge1xuICAgICAgZ3JvdXAuY29sdW1ucy5mb3JFYWNoKGNvbCA9PiB7XG4gICAgICAgIG5ld0NvbHVtbnMucHVzaCh7XG4gICAgICAgICAgZGF0YUZpZWxkOiBjb2wuZGF0YUZpZWxkLFxuICAgICAgICAgIHZpc2libGU6IGNvbC52aXNpYmxlLFxuICAgICAgICAgIGNhcHRpb246IGNvbC5jYXB0aW9uLFxuICAgICAgICAgIGdyb3VwOiBncm91cC5jYXB0aW9uXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIG5ld0NvbHVtbnM7XG4gIH1cblxuXG4gIGdldFNhdmVDb25maWcoKSB7XG4gICAgZGVidWdnZXJcbiAgICBpZiAodGhpcy52aWV3UHJvcGVydGllcy5jbGlja0V2ZW50T3B0aW9ucy5ldmVudFR5cGUgPT0gJ29wdGlvbmFsRHJpbGxEb3duJykge1xuICAgICAgdGhpcy52aWV3UHJvcGVydGllc1snY2xpY2tFdmVudE9wdGlvbnMnXVsnYXNzb2NpYXRlZFZpZXdzJ10gPSB0aGlzLm9wdGlvbmFsRHJpbERvd25EYXRhU291cmNlO1xuICAgIH1cblxuICAgIHRoaXMudGFibGVfY29sdW1uc19jb25maWcua3BpQ29uZmlnWyd2aWV3UHJvcGVydGllcyddID0gdGhpcy52aWV3UHJvcGVydGllcztcbiAgICB0aGlzLnRhYmxlX2NvbHVtbnNfY29uZmlnLmtwaUNvbmZpZy5kYXRhQ29uZmlnID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLnRhYmxlRGF0YUNvbmZpZykpO1xuICAgIHRoaXMuZ2V0dG9kYXlQcmV2aW91c0NvbmZpZ091dFB1dC5lbWl0KHRoaXMudGFibGVfY29sdW1uc19jb25maWcpO1xuICB9XG5cbiAgZGVsZXRlQXNzb2NpYXRlZFBhcmFtcyhpbmRleCkge1xuICAgIHRoaXMub3B0aW9uYWxEcmlsRG93bkRhdGFTb3VyY2Uuc3BsaWNlKGluZGV4LCAxKVxuICB9XG5cbiAgYWRkQXNzb2NpYXRlZFBhcmFtcygpIHtcbiAgICB0aGlzLm9wdGlvbmFsRHJpbERvd25EYXRhU291cmNlLnB1c2goe1xuICAgICAgJ3ZpZXdJZCc6IFwiXCIsXG4gICAgICAnZmlsdGVyQ29uZGl0aW9uJzogXCJcIlxuICAgIH0pXG4gIH1cblxuICBnZXRTZWxlY3RlZEV2ZW50VHlwZShlKSB7XG4gICAgaWYgKGUuZXZlbnQpIHtcbiAgICAgIHRoaXMub3B0aW9uYWxEcmlsRG93bkRhdGFTb3VyY2UgPSBbXTtcbiAgICAgIGlmICh0aGlzLnZpZXdQcm9wZXJ0aWVzLmNsaWNrRXZlbnRPcHRpb25zLmV2ZW50VHlwZSA9PSAnZHJpbGxkb3duJykge1xuICAgICAgICB0aGlzLnRhYmxlX2NvbHVtbnNfY29uZmlnLmtwaUNvbmZpZ1sndmlld1Byb3BlcnRpZXMnXVsnYXNzb2NpYXRlZFZpZXdzJ10gPSBbXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgfVxuXG5cbiAgcmVzZXRWaWV3UHJvcHJzdGlzZSgpIHtcbiAgICB0aGlzLnZpZXdQcm9wZXJ0aWVzID0ge1xuICAgICAgZW5hYmxlQ2xpY2tFdmVudDogZmFsc2UsXG4gICAgICBlbmFibGVSaWdodENsaWNrRXZlbnQ6IHRydWUsXG4gICAgICBjbGlja0V2ZW50T3B0aW9uczoge1xuICAgICAgICBhc3NvY2lhdGVkVmlld3M6IFtdLFxuICAgICAgICBldmVudFR5cGU6IFwiXCJcbiAgICAgIH1cbiAgICB9O1xuICB9XG5cblxuXG59XG4iLCJcblxuPGRpdiBjbGFzcz1cIm0tMlwiPjwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJ3LWZ1bGwgbS0yIGJvcmRlci1yXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNKc29uUHJldmlld1wiPlxuICAgICAgICAgICAgPHByZT48Y29kZT57e2pzYW9uRGF0YXNvdXJjZSB8IGpzb259fTwvY29kZT48L3ByZT5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0pzb25QcmV2aWV3XCI+ICAgIFxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1jZW50ZXIgaXRlbXMtc3RhcnQgYmctZ3JheS04MDAgcC0zIG14LTIgdGV4dC1jZW50ZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInctZnVsbFwiPlxuICAgICAgICAgICAgPGRpdiBbc3R5bGUuY29sb3JdPVwidGFibGVEYXRhQ29uZmlnLmNvbG9yXCJcbiAgICAgICAgIFtzdHlsZS5mb250LXNpemUucHhdPVwidGFibGVEYXRhQ29uZmlnLnNpemUgfHwgMTZcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9udC1zZW1pYm9sZFwiPnt7anNhb25EYXRhc291cmNlLnJldmVudWV9fTwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtZ3JheS00MDAgdGV4dC1zbSBmb250LWxpZ2h0IG0tMlwiPlxuICAgICAgICAgICAgICAgIFByZXZpb3VzOiB7eyBwcmV2aW91c1JldmVudWUgIT09IG51bGwgPyBwcmV2aW91c1JldmVudWUgOiAnTi9BJyB9fVxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC10ZWFsLTQwMFwiPigwLjAwMDElKTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwidy1mdWxsIG14LTIgYm9yZGVyLXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTQgYm9yZGVyLWIgYm9yZGVyLWdyYXktMjAwIGRhcms6Ym9yZGVyLWdyYXktNzAwXCI+XG4gICAgICAgICAgICA8dWwgY2xhc3M9XCJmbGV4IGZsZXgtd3JhcCAtbWItcHggdGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LWNlbnRlclwiIHJvbGU9XCJ0YWJsaXN0XCI+XG4gICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwibWUtMlwiIHJvbGU9XCJwcmVzZW50YXRpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImlubGluZS1ibG9jayBwLTQgYm9yZGVyLWItMiByb3VuZGVkLXQtbGdcIiBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RleHQtcHVycGxlLTYwMCBib3JkZXItcHVycGxlLTYwMCBkYXJrOnRleHQtcHVycGxlLTUwMCBkYXJrOmJvcmRlci1wdXJwbGUtNTAwJzogYWN0aXZlVGFiID09PSAnYmFzaWMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXh0LWdyYXktNTAwIGRhcms6dGV4dC1ncmF5LTQwMCBib3JkZXItdHJhbnNwYXJlbnQnOiBhY3RpdmVUYWIgIT09ICdiYXNpYydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIiAoY2xpY2spPVwic2V0QWN0aXZlVGFiKCdiYXNpYycpXCIgdHlwZT1cImJ1dHRvblwiIHJvbGU9XCJ0YWJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEJhc2ljXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwibWUtMlwiIHJvbGU9XCJwcmVzZW50YXRpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImlubGluZS1ibG9jayBwLTQgYm9yZGVyLWItMiByb3VuZGVkLXQtbGdcIiBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RleHQtcHVycGxlLTYwMCBib3JkZXItcHVycGxlLTYwMCBkYXJrOnRleHQtcHVycGxlLTUwMCBkYXJrOmJvcmRlci1wdXJwbGUtNTAwJzogYWN0aXZlVGFiID09PSAnY29sdW1ucycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RleHQtZ3JheS01MDAgZGFyazp0ZXh0LWdyYXktNDAwIGJvcmRlci10cmFuc3BhcmVudCc6IGFjdGl2ZVRhYiAhPT0gJ2NvbHVtbnMnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCIgKGNsaWNrKT1cInNldEFjdGl2ZVRhYignY29sdW1ucycpXCIgdHlwZT1cImJ1dHRvblwiIHJvbGU9XCJ0YWJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbnNcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJtZS0yXCIgcm9sZT1cInByZXNlbnRhdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiaW5saW5lLWJsb2NrIHAtNCBib3JkZXItYi0yIHJvdW5kZWQtdC1sZ1wiIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGV4dC1wdXJwbGUtNjAwIGJvcmRlci1wdXJwbGUtNjAwIGRhcms6dGV4dC1wdXJwbGUtNTAwIGRhcms6Ym9yZGVyLXB1cnBsZS01MDAnOiBhY3RpdmVUYWIgPT09ICdwcm9wZXJ0aWVzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGV4dC1ncmF5LTUwMCBkYXJrOnRleHQtZ3JheS00MDAgYm9yZGVyLXRyYW5zcGFyZW50JzogYWN0aXZlVGFiICE9PSAncHJvcGVydGllcydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIiAoY2xpY2spPVwic2V0QWN0aXZlVGFiKCdwcm9wZXJ0aWVzJylcIiB0eXBlPVwiYnV0dG9uXCIgcm9sZT1cInRhYlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgUHJvcGVydGllc1xuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2xpPlxuXG4gICAgICAgICAgICA8L3VsPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGlkPVwiZGVmYXVsdC1zdHlsZWQtdGFiLWNvbnRlbnRcIj4gICBcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJhY3RpdmVUYWIgPT09ICdiYXNpYydcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBmbGV4LWF1dG8gbWluLXctMFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1zbSBweS0xIGZvbnQtZXh0cmFib2xkIGJvcmRlci1iIGJnLWdyYXktNzAwIHRleHQtd2hpdGUgcHgtMlwiPiBGaWx0ZXIgVGl0bGUgQ29uZmlnXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHQtMiBib3JkZXIteCBib3JkZXItYiBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteS0yIGZsZXgganVzdGlmeS1iZXR3ZWVuXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTEgbWItMiB3LWZ1bGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgbWItMlwiPkNvbG9yPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeC1jb2xvci1ib3ggWyhuZ01vZGVsKV09XCJ0YWJsZURhdGFDb25maWcuY29sb3JcIj48L2R4LWNvbG9yLWJveD5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0xIG1iLTEgdy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTJcIj5TaXplPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeC10ZXh0LWJveCBwbGFjZWhvbGRlcj1cIkVudGVyIHNpemVcIiAgWyhuZ01vZGVsKV09XCJ0YWJsZURhdGFDb25maWcuc2l6ZVwiPjwvZHgtdGV4dC1ib3g+XG4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0xIG1iLTEgdy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTJcIj4gS2V5IFRvIFBhc3MgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeC10YWctYm94IFtpdGVtc109XCJjb25maWdDb2x1bWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJ0YWJsZV9jb2x1bW5zX2NvbmZpZy5rcGlDb25maWcua2V5VG9QYXNzXCI+PC9keC10YWctYm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0xIG1iLTEgdy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTJcIj4gRGlzcGxheSBGb3JtYXRlIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHgtc2VsZWN0LWJveCBbaXRlbXNdPVwiWydkYWlseScsJ2hvdXJseScsJ21vbnRobHknXVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInRhYmxlX2NvbHVtbnNfY29uZmlnLmtwaUNvbmZpZy5mb3JtYXRlXCI+PC9keC1zZWxlY3QtYm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTEgbWItMSB3LWZ1bGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgbWItMlwiPiBTb3J0IEJ5IDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHgtdGFnLWJveCBbaXRlbXNdPVwiY29uZmlnQ29sdW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwidGFibGVEYXRhQ29uZmlnLnNvcnRCeVwiPjwvZHgtdGFnLWJveD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiYWN0aXZlVGFiID09PSAnYmFzaWMnXCIgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGZsZXgtYXV0byBtaW4tdy0wXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXNtIHB5LTEgZm9udC1leHRyYWJvbGQgYm9yZGVyLWIgYmctZ3JheS03MDAgdGV4dC13aGl0ZSBweC0yXCI+IFNlbGVjdCBUaGUgUHJldmlvcyBEYXRlIFJhbmdlXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbHNlLXJvdyBib3JkZXIteCBib3JkZXItYiBwLTRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0xIG1iLTEgdy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgbWItMlwiIHN0eWxlPVwibWFyZ2luLXRvcDogMzdweDtcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeC1jaGVjay1ib3ggWyh2YWx1ZSldPVwidGFibGVEYXRhQ29uZmlnLmlzUHJldmlvdXNEYXlcIiB0ZXh0PVwiUHJldmlvdXMgRGF5XCI+PC9keC1jaGVjay1ib3g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGFibGVEYXRhQ29uZmlnLmlzUHJldmlvdXNEYXlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMSBtYi0xIHctMS8yIGZsZXggaXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeC1zZWxlY3QtYm94IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2l0ZW1zXT1cIlsnRGF5JywgJ01vbnRoJywgJ1llYXInXVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtbC0yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInRhYmxlRGF0YUNvbmZpZy50aW1lVW5pdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2R4LXNlbGVjdC1ib3g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHgtdGV4dC1ib3ggdHlwZT1cIm51bWJlclwiIFsobmdNb2RlbCldPVwidGFibGVEYXRhQ29uZmlnLnRpbWVWYWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1sLTJcIj48L2R4LXRleHQtYm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJhY3RpdmVUYWIgPT09ICdjb2x1bW5zJ1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoLWZ1bGwgb3ZlcmZsb3cteC1hdXRvXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGZsZXgtYXV0byBtaW4tdy0wXCI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwdC0yIGJvcmRlci14IGJvcmRlci1iIFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteS0yIGJvcmRlci1iIGZsZXggZmxleC1yb3dcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiB0YWJsZURhdGFDb25maWcuY29sdW1uczsgbGV0IGkgPSBpbmRleDtcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTEgbWItMiBtdC02IHctZnVsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR4LWNoZWNrLWJveCBbKG5nTW9kZWwpXT1cIml0ZW0udmlzaWJsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dD1cIlZpc2libGl0eVwiPjwvZHgtY2hlY2stYm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0xIG1iLTIgdy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0yXCI+IFZhbHVlIEZpZWxkPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHgtc2VsZWN0LWJveCBbc2VhcmNoRW5hYmxlZF09XCJ0cnVlXCIgW2l0ZW1zXT1cImNvbmZpZ0NvbHVtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJpdGVtLmRhdGFGaWVsZFwiPjwvZHgtc2VsZWN0LWJveD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0xIG1iLTIgdy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0yXCI+IENhcHRpb248L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeC10ZXh0LWJveCBbKG5nTW9kZWwpXT1cIml0ZW0uY2FwdGlvblwiPjwvZHgtdGV4dC1ib3g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMiBtYi0yIHctZnVsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgbWItMlwiPiBVSSBGdW5jdGlvbjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXNlbGVjdC1ib3ggW2l0ZW1zXT1cImVucmljaE5hbWVMaXN0XCIgWyhuZ01vZGVsKV09XCJpdGVtLmVucmljaE5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzZWFyY2hFbmFibGVkXT1cInRydWVcIj48L2R4LXNlbGVjdC1ib3g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgbXQtOCB3LWZ1bGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJpICE9PSAwXCIgY2xhc3M9XCJ7e2NvbW1vblNlcnZpY2UuYnRuX2xpZ2h0X3NtfX0gY3Vyc29yLXBvaW50ZXIgbXgtMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm1vdmVJdGVtRm9yQ29sdW1ucyhpLCAndXAnKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtYXJyb3ctdXBcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImkgIT09IHRhYmxlRGF0YUNvbmZpZy5jb2x1bW5zLmxlbmd0aCAtIDFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwie3tjb21tb25TZXJ2aWNlLmJ0bl9saWdodF9zbX19IGN1cnNvci1wb2ludGVyIG14LTFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJtb3ZlSXRlbUZvckNvbHVtbnMoaSwgJ2Rvd24nKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtYXJyb3ctZG93blwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInt7Y29tbW9uU2VydmljZS5idG5fZGFuZ2VyX3NtfX0gY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJkZWxldGVDb2x1bW5zKGkpXCI+PGkgY2xhc3M9XCJmYSBmYS10cmFzaC1vXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGp1c3RpZnktZW5kIG15LTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ7e2NvbW1vblNlcnZpY2UuYnRuX3ByaW1hcnlfc219fSBjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJhZGRDb2x1bW5zKClcIj5BZGRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5zPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiYWN0aXZlVGFiID09PSAncHJvcGVydGllcydcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaC1mdWxsIG92ZXJmbG93LXgtYXV0b1wiPlxuICAgICAgICAgICAgICAgICAgICA8YXBwLWxvYWRlciAqbmdJZj1cImlzTG9hZGVyXCI+PC9hcHAtbG9hZGVyPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzTG9hZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBqdXN0aWZ5LWJldHdlZW4gYm9yZGVyLWIgcHktM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeC1jaGVjay1ib3ggW3ZhbHVlXT1cInZpZXdQcm9wZXJ0aWVzLmVuYWJsZUNsaWNrRXZlbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJ2aWV3UHJvcGVydGllcy5lbmFibGVDbGlja0V2ZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ9XCJFbmFibGUgQ2xpY2sgRXZlbnRcIj48L2R4LWNoZWNrLWJveD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXgtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHgtY2hlY2stYm94IFt2YWx1ZV09XCJ2aWV3UHJvcGVydGllcy5lbmFibGVSaWdodENsaWNrRXZlbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJ2aWV3UHJvcGVydGllcy5lbmFibGVSaWdodENsaWNrRXZlbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dD1cIkVuYWJsZSBSaWdodCBDbGlja1wiPjwvZHgtY2hlY2stYm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy1mdWxsIHAtMlwiICpuZ0lmPVwidmlld1Byb3BlcnRpZXMuZW5hYmxlQ2xpY2tFdmVudFwiPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgZmxleC1hdXRvIG1pbi13LTAgbXktMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1zbSBweS0xIGZvbnQtZXh0cmFib2xkIGJvcmRlci1iIGJnLWdyYXktNzAwIHRleHQtd2hpdGUgcHgtMlwiPiBFdmVudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy1mdWxsIHAtMyBib3JkZXIteCBib3JkZXItYiBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctZnVsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0yXCI+IEV2ZW50IFR5cGU8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeC1zZWxlY3QtYm94IFtpdGVtc109XCJbJ2RyaWxsZG93bicsJ3NhbWVWaWV3RHJpbGxkb3duJywnb3B0aW9uYWxEcmlsbERvd24nXVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25WYWx1ZUNoYW5nZWQpPVwiZ2V0U2VsZWN0ZWRFdmVudFR5cGUoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInZpZXdQcm9wZXJ0aWVzLmNsaWNrRXZlbnRPcHRpb25zLmV2ZW50VHlwZVwiPjwvZHgtc2VsZWN0LWJveD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInZpZXdQcm9wZXJ0aWVzLmNsaWNrRXZlbnRPcHRpb25zLmV2ZW50VHlwZSA9PSAnZHJpbGxkb3duJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGp1c3RpZnktYmV0d2VlbiBtdC0zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LWZ1bGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTJcIj4gQXNzb2NpYXRlZCBWaWV3czwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXRhZy1ib3ggW2l0ZW1zXT1cImFsbENvbmZpZ3VyZWRWaWV3c1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJ2aWV3UHJvcGVydGllcy5jbGlja0V2ZW50T3B0aW9ucy5hc3NvY2lhdGVkVmlld3NcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlRXhwcj1cInZpZXdJZFwiIGRpc3BsYXlFeHByPVwidmlld05hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93U2VsZWN0aW9uQ29udHJvbHNdPVwidHJ1ZVwiIFtzZWFyY2hFbmFibGVkXT1cInRydWVcIj48L2R4LXRhZy1ib3g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidmlld1Byb3BlcnRpZXMuY2xpY2tFdmVudE9wdGlvbnMuZXZlbnRUeXBlID09ICdzYW1lVmlld0RyaWxsZG93bidcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBqdXN0aWZ5LWJldHdlZW4gbXQtM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0yXCI+IEFzc29jaWF0ZWQgVmlld3M8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeC10YWctYm94IFtpdGVtc109XCJhbGxDb25maWd1cmVkVmlld3NcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwidmlld1Byb3BlcnRpZXMuY2xpY2tFdmVudE9wdGlvbnMuYXNzb2NpYXRlZFZpZXdzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZUV4cHI9XCJ2aWV3SWRcIiBkaXNwbGF5RXhwcj1cInZpZXdOYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd1NlbGVjdGlvbkNvbnRyb2xzXT1cInRydWVcIiBbc2VhcmNoRW5hYmxlZF09XCJ0cnVlXCI+PC9keC10YWctYm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwidmlld1Byb3BlcnRpZXMuY2xpY2tFdmVudE9wdGlvbnMuZXZlbnRUeXBlID09ICdvcHRpb25hbERyaWxsRG93bidcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBqdXN0aWZ5LWJldHdlZW4gbXQtM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2Ygb3B0aW9uYWxEcmlsRG93bkRhdGFTb3VyY2U7bGV0IGkgPSBpbmRleDtcIj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGp1c3RpZnktYmV0d2VlblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXgtMiB3LTEvMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgbWItMlwiPiBBc3NvY2lhdGVkIFZpZXdzPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHgtdGFnLWJveCBbaXRlbXNdPVwiYWxsQ29uZmlndXJlZFZpZXdzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cIml0ZW0udmlld0lkXCIgdmFsdWVFeHByPVwidmlld0lkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5RXhwcj1cInZpZXdOYW1lXCIgW3Nob3dTZWxlY3Rpb25Db250cm9sc109XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWF4RGlzcGxheWVkVGFnc109XCIyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2VhcmNoRW5hYmxlZF09XCJ0cnVlXCI+PC9keC10YWctYm94PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXgtMiB3LTEvMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgbWItMlwiPiBBc3NvY2lhdGVkIFBhcmFtczwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXRleHQtYm94XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJpdGVtLmZpbHRlckNvbmRpdGlvblwiPjwvZHgtdGV4dC1ib3g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXgtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwie3tjb21tb25TZXJ2aWNlLmJ0bl9kYW5nZXJfc219fSBjdXJzb3ItcG9pbnRlciBtdC04XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZGVsZXRlQXNzb2NpYXRlZFBhcmFtcyhpKVwiPjxpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmEgZmEtdHJhc2gtb1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cganVzdGlmeS1lbmQgbXQtNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ7e2NvbW1vblNlcnZpY2UuYnRuX3ByaW1hcnlfc219fSBjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhZGRBc3NvY2lhdGVkUGFyYW1zKClcIj5BZGRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFyYW1zPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ7e2NvbW1vblNlcnZpY2UuYnRuX2xpZ2h0X21kfX0gY3Vyc29yLXBvaW50ZXIgbXQtNFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlc2V0Vmlld1Byb3Byc3Rpc2UoKVwiPlJlc2V0IEFsbCBFdmVudDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cblxuPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cgYm9yZGVyLXQgcGwtM1wiPlxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktc3RhcnQgbXgtMVwiPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwie3tjb21tb25TZXJ2aWNlLmJ0bl93YXJuaW5nX21kfX0gY3Vyc29yLXBvaW50ZXIgbXQtMlwiIChjbGljayk9XCJpc0pzb25QcmV2aWV3ID0gdHJ1ZVwiPlxuICAgICAgICAgICAgUHJldmlldzwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwie3tjb21tb25TZXJ2aWNlLmJ0bl9wcmltYXJ5X21kfX0gY3Vyc29yLXBvaW50ZXIgbXQtMlwiIChjbGljayk9XCJpc0pzb25QcmV2aWV3ID0gZmFsc2VcIj5EYXRhXG4gICAgICAgICAgICBQcmV2aWV3PC9idXR0b24+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1lbmQgbXgtMSBmbGV4LWdyb3dcIj5cbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInt7Y29tbW9uU2VydmljZS5idG5fc3VjY2Vzc19tZH19IGN1cnNvci1wb2ludGVyIG10LTJcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImdldFNhdmVDb25maWcoKVwiPlN1Ym1pdDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuPC9kaXY+Il19
|
package/esm2020/public-api.mjs
CHANGED
|
@@ -54,5 +54,6 @@ export * from './lib/application-controller/common';
|
|
|
54
54
|
export * from './lib/application-controller/environment';
|
|
55
55
|
export * from './lib/application-controller/support-components/dash-chart/dash-chart.component';
|
|
56
56
|
export * from './lib/application-controller/support-components/dash-table/dash-table.component';
|
|
57
|
+
export * from './lib/application-controller/support-components/dash-today-previous/dash-today-previous.component';
|
|
57
58
|
export * from './lib/application-controller/moment-helper';
|
|
58
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2dhbW1hLWFwcC1jb250cm9sbGVyL3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLGNBQWMsb0NBQW9DLENBQUM7QUFDbkQsY0FBYyxzQ0FBc0MsQ0FBQztBQUNyRCxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyw0REFBNEQsQ0FBQztBQU8zRSxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMsNERBQTRELENBQUM7QUFDM0UsY0FBYyxvREFBb0QsQ0FBQztBQUNuRSxjQUFjLHdEQUF3RCxDQUFDO0FBR3ZFLGNBQWMsOEVBQThFLENBQUM7QUFDN0YsY0FBYyw4R0FBOEcsQ0FBQztBQUM3SCxjQUFjLDRHQUE0RyxDQUFDO0FBQzNILGNBQWMsb0dBQW9HLENBQUM7QUFDbkgsY0FBYyx3R0FBd0csQ0FBQztBQUN2SCxjQUFjLHNHQUFzRyxDQUFDO0FBQ3JILGNBQWMsb0VBQW9FLENBQUM7QUFDbkYsY0FBYyw2RUFBNkUsQ0FBQztBQUM1RixjQUFjLDRIQUE0SCxDQUFDO0FBQzNJLGNBQWMsZ0dBQWdHLENBQUM7QUFDL0csY0FBYyxrSEFBa0gsQ0FBQztBQUNqSSxjQUFjLDBHQUEwRyxDQUFDO0FBQ3pILGNBQWMsNEhBQTRILENBQUM7QUFDM0ksY0FBYywwSEFBMEgsQ0FBQztBQUN6SSxjQUFjLDRHQUE0RyxDQUFDO0FBQzNILGNBQWMsZ0dBQWdHLENBQUM7QUFDL0csY0FBYywwSEFBMEgsQ0FBQztBQUN6SSxjQUFjLG1FQUFtRSxDQUFDO0FBQ2xGLGNBQWMseUVBQXlFLENBQUM7QUFDeEYsY0FBYyx5RkFBeUYsQ0FBQztBQUN4RyxjQUFjLCtFQUErRSxDQUFDO0FBQzlGLGNBQWMsNkRBQTZELENBQUM7QUFDNUUsY0FBYyx5RkFBeUYsQ0FBQztBQUN4RyxjQUFjLDJFQUEyRSxDQUFDO0FBQzFGLGNBQWMsZ0dBQWdHLENBQUM7QUFDL0csY0FBYyxrR0FBa0csQ0FBQztBQUVqSCxjQUFjLGdGQUFnRixDQUFDO0FBQy9GLGNBQWMsMEdBQTBHLENBQUM7QUFDekgsY0FBYyx3RkFBd0YsQ0FBQztBQUd2RyxjQUFjLGdHQUFnRyxDQUFDO0FBQy9HLGNBQWMsZ0dBQWdHLENBQUM7QUFDL0csY0FBYyxnR0FBZ0csQ0FBQztBQUMvRyxjQUFjLHdHQUF3RyxDQUFDO0FBS3ZILGNBQWMsK0RBQStELENBQUM7QUFDOUUsY0FBYywwREFBMEQsQ0FBQztBQUN6RSxjQUFjLDBDQUEwQyxDQUFDO0FBRXpELGNBQWMsK0NBQStDLENBQUM7QUFDOUQsY0FBYyxvQ0FBb0MsQ0FBQztBQUduRCxjQUFjLGtEQUFrRCxDQUFDO0FBQ2pFLGNBQWMsNEZBQTRGLENBQUM7QUFDM0csY0FBYyxvR0FBb0csQ0FBQztBQUduSCxjQUFjLHNDQUFzQyxDQUFDO0FBQ3JELGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLDBDQUEwQyxDQUFDO0FBR3pELGNBQWMsaUZBQWlGLENBQUE7QUFDL0YsY0FBYyxpRkFBaUYsQ0FBQTtBQUcvRixjQUFjLDRDQUE0QyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBnYW1tYS1hcHAtY29udHJvbGxlclxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL2dhbW1hLWFwcC1jb250cm9sbGVyLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZ2FtbWEtYXBwLWNvbnRyb2xsZXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2dhbW1hLWFwcC1jb250cm9sbGVyLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9pY29ucy5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXBwbGljYXRpb24tY29udHJvbGxlci9hcHBsaWNhdGlvbi1jb250cm9sbGVyLm1vZHVsZSc7XG4vLyBleHBvcnQgKiBmcm9tICcuL2xpYi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL2FwcGxpY2F0aW9uLWNvbnRlbnQuc2VydmljZSc7XG4vLyBleHBvcnQgKiBmcm9tICcuL2xpYi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL2FwcGxpY2F0aW9uLWRhdGFzZXQtY2FsbC5zZXJ2aWNlJztcbi8vIGV4cG9ydCAqIGZyb20gJy4vbGliL2FwcGxpY2F0aW9uLWNvbnRyb2xsZXIvZW52aXJvbm1lbnQnO1xuXG5cbi8vIEV4cG9ydCBNb2R1bGVzXG5leHBvcnQgKiBmcm9tICcuL2xpYi9nYW1tYS1hcHAtY29udHJvbGxlci5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXBwbGljYXRpb24tY29udHJvbGxlci9hcHBsaWNhdGlvbi1jb250cm9sbGVyLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL2xvYWRpbmcvbG9hZGluZ01vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL2xvYWRpbmcvbG9hZGluZy5jb21wb25lbnQnO1xuXG4vLyBFeHBvcnQgQ29tcG9uZW50c1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXBwbGljYXRpb24tY29udHJvbGxlci9hcHBsaWNhdGlvbi1maWx0ZXIvYXBwbGljYXRpb24tZmlsdGVyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL2FwcGxpY2F0aW9uLWRhdGFzZXQtY29tcG9uZW50L2NyZWF0ZS1kYXRhc2V0LWpzb24vY3JlYXRlLWRhdGFzZXQtanNvbi5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXBwbGljYXRpb24tY29udHJvbGxlci9hcHBsaWNhdGlvbi1kYXRhc2V0LWNvbXBvbmVudC9jcmVhdGUtZGF0YXNldC1zcWwvY3JlYXRlLWRhdGFzZXQtc3FsLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL2FwcGxpY2F0aW9uLWRhdGFzZXQtY29tcG9uZW50L2NyZWF0ZS1kYXRhc2V0L2NyZWF0ZS1kYXRhc2V0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL2FwcGxpY2F0aW9uLXZpZXctY29tcG9uZW50cy9hcHBsaWNhdGlvbi12aWV3cy9hcHBsaWNhdGlvbi12aWV3cy5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXBwbGljYXRpb24tY29udHJvbGxlci9hcHBsaWNhdGlvbi12aWV3LWNvbXBvbmVudHMvY3JlYXRlLWNvbXAtdmlldy9jcmVhdGUtY29tcC12aWV3LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL2NvbW1vbi1oZWFkZXIvY29tbW9uLWhlYWRlci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXBwbGljYXRpb24tY29udHJvbGxlci9wYWdlLXRlbXBsYXRlcy9jZHItY29uZmlnL2Nkci1jb25maWcuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FwcGxpY2F0aW9uLWNvbnRyb2xsZXIvc2hhcmVkL2FkdmFuY2VkLWNvbXBvbmVudC9hZHZhbmNlLXdpZGdldC1oZWFkZXItZmlsdGVyL2FkdmFuY2Utd2lkZ2V0LWhlYWRlci1maWx0ZXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FwcGxpY2F0aW9uLWNvbnRyb2xsZXIvc2hhcmVkL2FkdmFuY2VkLWNvbXBvbmVudC9hcHAtYWR2YW5jZS1oZWFkZXIvYXBwLWhlYWRlci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXBwbGljYXRpb24tY29udHJvbGxlci9zaGFyZWQvYWR2YW5jZWQtY29tcG9uZW50L2dhbW0tc2luZ2xlLW51bWJlci1jYXJkL2dhbW0tc2luZ2xlLW51bWJlci1jYXJkLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL3NoYXJlZC9hZHZhbmNlZC1jb21wb25lbnQvZ2FtbWEtYWR2YW5jZS1jaGFydC9nYW1tYS1hZHZhbmNlLWNoYXJ0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL3NoYXJlZC9hZHZhbmNlZC1jb21wb25lbnQvZ2FtbWEtYWR2YW5jZS1vcGVyYXRvci10YWJsZS9nYW1tYS1hZHZhbmNlLW9wZXJhdG9yLXRhYmxlLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL3NoYXJlZC9hZHZhbmNlZC1jb21wb25lbnQvZ2FtbWEtdGFibGUtd2l0aC1wZXJjZW50YWdlL2dhbW1hLXRhYmxlLXdpdGgtcGVyY2VudGFnZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXBwbGljYXRpb24tY29udHJvbGxlci9zaGFyZWQvYWR2YW5jZWQtY29tcG9uZW50L2dhbW1hLXRvZGF5LXByZXZpb3VzL2dhbW1hLXRvZGF5LXByZXZpb3VzLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL3NoYXJlZC9hZHZhbmNlZC1jb21wb25lbnQvZ29vZ2xlLWdlby1tYXAvZ29vZ2xlLWdlby1tYXAuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FwcGxpY2F0aW9uLWNvbnRyb2xsZXIvc2hhcmVkL2FkdmFuY2VkLWNvbXBvbmVudC9nYW1tYS10YWJsZS1jbHVtbi1iYXItY2hhcnQvZ2FtbWEtdGFibGUtY2x1bW4tYmFyLWNoYXJ0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL3NoYXJlZC9hcHAtdGl0bGUvYXBwLXRpdGxlLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL3NoYXJlZC9nYW1hbS13aWRnZXQvZ2FtYW0td2lkZ2V0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL3NoYXJlZC9nYW1tYS1hZHZhbmNlLWZpbHRlci9nYW1tYS1hZHZhbmNlLWZpbHRlci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXBwbGljYXRpb24tY29udHJvbGxlci9zaGFyZWQvZ2FtbWEtYnJlYWQtY3J1bWJzL2JyZWFkLWNydW1icy5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXBwbGljYXRpb24tY29udHJvbGxlci9zaGFyZWQvbG9hZGVyL2xvYWRlci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXBwbGljYXRpb24tY29udHJvbGxlci9zdXBwb3J0LWNvbXBvbmVudHMvdGFibGUtd2l0aC1iYXIvdGFibGUtd2l0aC1iYXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FwcGxpY2F0aW9uLWNvbnRyb2xsZXIvc3VwcG9ydC1jb21wb25lbnRzL2dlby1tYXAvZ2VvLW1hcC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXBwbGljYXRpb24tY29udHJvbGxlci9zaGFyZWQvYWR2YW5jZWQtY29tcG9uZW50L2dvb2dsZS1nZW8tbWFwL2dvb2dsZS1nZW8tbWFwLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL3NoYXJlZC9hZHZhbmNlZC1jb21wb25lbnQvZ2FtbWEtZ2VvLWNoYXJ0L2dhbW1hLWdlby1jaGFydC5jb21wb25lbnQnO1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL3BhZ2UtY29udHJvbGxlci9wYWdlLWNvbmZpZy9wYWdlLWNvbmZpZy5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXBwbGljYXRpb24tY29udHJvbGxlci9wYWdlLWNvbnRyb2xsZXIvcGFnZS1jb25maWctbXVsdGktbGF5b3V0L3BhZ2UtY29uZmlnLW11bHRpLWxheW91dC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXBwbGljYXRpb24tY29udHJvbGxlci9wYWdlLWNvbnRyb2xsZXIvcGFnZS1jb250cm9sbGVyL3BhZ2UtY29udHJvbGxlci5jb21wb25lbnQnO1xuXG4vL21ldHJpYyBjb21wb25lbnRcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FwcGxpY2F0aW9uLWNvbnRyb2xsZXIvYXBwbGljYXRpb24tbWV0cmljLWNvbmZpZy9jcmVhdGUtbWV0cmljcy9jcmVhdGUtbWV0cmljcy5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXBwbGljYXRpb24tY29udHJvbGxlci9hcHBsaWNhdGlvbi1tZXRyaWMtY29uZmlnL29mbGluZS1tZXRyaWNzL29mbGluZS1tZXRyaWNzLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL2FwcGxpY2F0aW9uLW1ldHJpYy1jb25maWcvb25saW5lLW1ldHJpY3Mvb25saW5lLW1ldHJpY3MuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FwcGxpY2F0aW9uLWNvbnRyb2xsZXIvYXBwbGljYXRpb24tbWV0cmljLWNvbmZpZy9hbGwtbWV0cmljcy1jb25maWcvYWxsLW1ldHJpY3MtY29uZmlnLmNvbXBvbmVudCc7XG5cblxuXG4vLyBFeHBvcnQgU2VydmljZXNcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FwcGxpY2F0aW9uLWNvbnRyb2xsZXIvYXBwbGljYXRpb24tZGF0YXNldC1jYWxsLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXBwbGljYXRpb24tY29udHJvbGxlci9hcHBsaWNhdGlvbi1jb250ZW50LnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXBwbGljYXRpb24tY29udHJvbGxlci9rcGktc2VydmljZSc7XG4vLyBleHBvcnQgKiBmcm9tICcuL2xpYi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL2twaS1jb21vbi1zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FwcGxpY2F0aW9uLWNvbnRyb2xsZXIvYXBwLmh0dHAuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9nYW1tYS1hcHAtY29udHJvbGxlci5zZXJ2aWNlJztcblxuLy8gRXhwb3J0IFBpcGVzXG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL3NoYXJlZC9zYWZlSHRtbFBpcGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXBwbGljYXRpb24tY29udHJvbGxlci9hcHBsaWNhdGlvbi1kYXRhc2V0LWNvbXBvbmVudC9jcmVhdGUtZGF0YXNldC1zcWwvc3FsRm9ybWF0dGVyJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FwcGxpY2F0aW9uLWNvbnRyb2xsZXIvc2hhcmVkL2FkdmFuY2VkLWNvbXBvbmVudC9nYW1tYS10YWJsZS13aXRoLXBlcmNlbnRhZ2UvY29udGVudFNhZmVIdG1sJztcblxuLy8gRXhwb3J0IE1pc2NlbGxhbmVvdXNcbmV4cG9ydCAqIGZyb20gJy4vbGliL2dhbW1hLWFwcC1jb250cm9sbGVyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9pY29ucy5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXBwbGljYXRpb24tY29udHJvbGxlci9jb21tb24nO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXBwbGljYXRpb24tY29udHJvbGxlci9lbnZpcm9ubWVudCc7XG5cbi8vIHN1cHBvcnQgY29tcG9uZW50XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL3N1cHBvcnQtY29tcG9uZW50cy9kYXNoLWNoYXJ0L2Rhc2gtY2hhcnQuY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXBwbGljYXRpb24tY29udHJvbGxlci9zdXBwb3J0LWNvbXBvbmVudHMvZGFzaC10YWJsZS9kYXNoLXRhYmxlLmNvbXBvbmVudCdcblxuLy9tb21lbnRcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FwcGxpY2F0aW9uLWNvbnRyb2xsZXIvbW9tZW50LWhlbHBlcidcblxuXG5cbiJdfQ==
|
|
59
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2dhbW1hLWFwcC1jb250cm9sbGVyL3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLGNBQWMsb0NBQW9DLENBQUM7QUFDbkQsY0FBYyxzQ0FBc0MsQ0FBQztBQUNyRCxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyw0REFBNEQsQ0FBQztBQU8zRSxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMsNERBQTRELENBQUM7QUFDM0UsY0FBYyxvREFBb0QsQ0FBQztBQUNuRSxjQUFjLHdEQUF3RCxDQUFDO0FBR3ZFLGNBQWMsOEVBQThFLENBQUM7QUFDN0YsY0FBYyw4R0FBOEcsQ0FBQztBQUM3SCxjQUFjLDRHQUE0RyxDQUFDO0FBQzNILGNBQWMsb0dBQW9HLENBQUM7QUFDbkgsY0FBYyx3R0FBd0csQ0FBQztBQUN2SCxjQUFjLHNHQUFzRyxDQUFDO0FBQ3JILGNBQWMsb0VBQW9FLENBQUM7QUFDbkYsY0FBYyw2RUFBNkUsQ0FBQztBQUM1RixjQUFjLDRIQUE0SCxDQUFDO0FBQzNJLGNBQWMsZ0dBQWdHLENBQUM7QUFDL0csY0FBYyxrSEFBa0gsQ0FBQztBQUNqSSxjQUFjLDBHQUEwRyxDQUFDO0FBQ3pILGNBQWMsNEhBQTRILENBQUM7QUFDM0ksY0FBYywwSEFBMEgsQ0FBQztBQUN6SSxjQUFjLDRHQUE0RyxDQUFDO0FBQzNILGNBQWMsZ0dBQWdHLENBQUM7QUFDL0csY0FBYywwSEFBMEgsQ0FBQztBQUN6SSxjQUFjLG1FQUFtRSxDQUFDO0FBQ2xGLGNBQWMseUVBQXlFLENBQUM7QUFDeEYsY0FBYyx5RkFBeUYsQ0FBQztBQUN4RyxjQUFjLCtFQUErRSxDQUFDO0FBQzlGLGNBQWMsNkRBQTZELENBQUM7QUFDNUUsY0FBYyx5RkFBeUYsQ0FBQztBQUN4RyxjQUFjLDJFQUEyRSxDQUFDO0FBQzFGLGNBQWMsZ0dBQWdHLENBQUM7QUFDL0csY0FBYyxrR0FBa0csQ0FBQztBQUVqSCxjQUFjLGdGQUFnRixDQUFDO0FBQy9GLGNBQWMsMEdBQTBHLENBQUM7QUFDekgsY0FBYyx3RkFBd0YsQ0FBQztBQUd2RyxjQUFjLGdHQUFnRyxDQUFDO0FBQy9HLGNBQWMsZ0dBQWdHLENBQUM7QUFDL0csY0FBYyxnR0FBZ0csQ0FBQztBQUMvRyxjQUFjLHdHQUF3RyxDQUFDO0FBS3ZILGNBQWMsK0RBQStELENBQUM7QUFDOUUsY0FBYywwREFBMEQsQ0FBQztBQUN6RSxjQUFjLDBDQUEwQyxDQUFDO0FBRXpELGNBQWMsK0NBQStDLENBQUM7QUFDOUQsY0FBYyxvQ0FBb0MsQ0FBQztBQUduRCxjQUFjLGtEQUFrRCxDQUFDO0FBQ2pFLGNBQWMsNEZBQTRGLENBQUM7QUFDM0csY0FBYyxvR0FBb0csQ0FBQztBQUduSCxjQUFjLHNDQUFzQyxDQUFDO0FBQ3JELGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLDBDQUEwQyxDQUFDO0FBR3pELGNBQWMsaUZBQWlGLENBQUM7QUFDaEcsY0FBYyxpRkFBaUYsQ0FBQztBQUNoRyxjQUFjLG1HQUFtRyxDQUFDO0FBSWxILGNBQWMsNENBQTRDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIGdhbW1hLWFwcC1jb250cm9sbGVyXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9saWIvZ2FtbWEtYXBwLWNvbnRyb2xsZXIuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9nYW1tYS1hcHAtY29udHJvbGxlci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZ2FtbWEtYXBwLWNvbnRyb2xsZXIubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ljb25zLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL2FwcGxpY2F0aW9uLWNvbnRyb2xsZXIubW9kdWxlJztcbi8vIGV4cG9ydCAqIGZyb20gJy4vbGliL2FwcGxpY2F0aW9uLWNvbnRyb2xsZXIvYXBwbGljYXRpb24tY29udGVudC5zZXJ2aWNlJztcbi8vIGV4cG9ydCAqIGZyb20gJy4vbGliL2FwcGxpY2F0aW9uLWNvbnRyb2xsZXIvYXBwbGljYXRpb24tZGF0YXNldC1jYWxsLnNlcnZpY2UnO1xuLy8gZXhwb3J0ICogZnJvbSAnLi9saWIvYXBwbGljYXRpb24tY29udHJvbGxlci9lbnZpcm9ubWVudCc7XG5cblxuLy8gRXhwb3J0IE1vZHVsZXNcbmV4cG9ydCAqIGZyb20gJy4vbGliL2dhbW1hLWFwcC1jb250cm9sbGVyLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL2FwcGxpY2F0aW9uLWNvbnRyb2xsZXIubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FwcGxpY2F0aW9uLWNvbnRyb2xsZXIvbG9hZGluZy9sb2FkaW5nTW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FwcGxpY2F0aW9uLWNvbnRyb2xsZXIvbG9hZGluZy9sb2FkaW5nLmNvbXBvbmVudCc7XG5cbi8vIEV4cG9ydCBDb21wb25lbnRzXG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL2FwcGxpY2F0aW9uLWZpbHRlci9hcHBsaWNhdGlvbi1maWx0ZXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FwcGxpY2F0aW9uLWNvbnRyb2xsZXIvYXBwbGljYXRpb24tZGF0YXNldC1jb21wb25lbnQvY3JlYXRlLWRhdGFzZXQtanNvbi9jcmVhdGUtZGF0YXNldC1qc29uLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL2FwcGxpY2F0aW9uLWRhdGFzZXQtY29tcG9uZW50L2NyZWF0ZS1kYXRhc2V0LXNxbC9jcmVhdGUtZGF0YXNldC1zcWwuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FwcGxpY2F0aW9uLWNvbnRyb2xsZXIvYXBwbGljYXRpb24tZGF0YXNldC1jb21wb25lbnQvY3JlYXRlLWRhdGFzZXQvY3JlYXRlLWRhdGFzZXQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FwcGxpY2F0aW9uLWNvbnRyb2xsZXIvYXBwbGljYXRpb24tdmlldy1jb21wb25lbnRzL2FwcGxpY2F0aW9uLXZpZXdzL2FwcGxpY2F0aW9uLXZpZXdzLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL2FwcGxpY2F0aW9uLXZpZXctY29tcG9uZW50cy9jcmVhdGUtY29tcC12aWV3L2NyZWF0ZS1jb21wLXZpZXcuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FwcGxpY2F0aW9uLWNvbnRyb2xsZXIvY29tbW9uLWhlYWRlci9jb21tb24taGVhZGVyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL3BhZ2UtdGVtcGxhdGVzL2Nkci1jb25maWcvY2RyLWNvbmZpZy5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXBwbGljYXRpb24tY29udHJvbGxlci9zaGFyZWQvYWR2YW5jZWQtY29tcG9uZW50L2FkdmFuY2Utd2lkZ2V0LWhlYWRlci1maWx0ZXIvYWR2YW5jZS13aWRnZXQtaGVhZGVyLWZpbHRlci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXBwbGljYXRpb24tY29udHJvbGxlci9zaGFyZWQvYWR2YW5jZWQtY29tcG9uZW50L2FwcC1hZHZhbmNlLWhlYWRlci9hcHAtaGVhZGVyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL3NoYXJlZC9hZHZhbmNlZC1jb21wb25lbnQvZ2FtbS1zaW5nbGUtbnVtYmVyLWNhcmQvZ2FtbS1zaW5nbGUtbnVtYmVyLWNhcmQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FwcGxpY2F0aW9uLWNvbnRyb2xsZXIvc2hhcmVkL2FkdmFuY2VkLWNvbXBvbmVudC9nYW1tYS1hZHZhbmNlLWNoYXJ0L2dhbW1hLWFkdmFuY2UtY2hhcnQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FwcGxpY2F0aW9uLWNvbnRyb2xsZXIvc2hhcmVkL2FkdmFuY2VkLWNvbXBvbmVudC9nYW1tYS1hZHZhbmNlLW9wZXJhdG9yLXRhYmxlL2dhbW1hLWFkdmFuY2Utb3BlcmF0b3ItdGFibGUuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FwcGxpY2F0aW9uLWNvbnRyb2xsZXIvc2hhcmVkL2FkdmFuY2VkLWNvbXBvbmVudC9nYW1tYS10YWJsZS13aXRoLXBlcmNlbnRhZ2UvZ2FtbWEtdGFibGUtd2l0aC1wZXJjZW50YWdlLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL3NoYXJlZC9hZHZhbmNlZC1jb21wb25lbnQvZ2FtbWEtdG9kYXktcHJldmlvdXMvZ2FtbWEtdG9kYXktcHJldmlvdXMuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FwcGxpY2F0aW9uLWNvbnRyb2xsZXIvc2hhcmVkL2FkdmFuY2VkLWNvbXBvbmVudC9nb29nbGUtZ2VvLW1hcC9nb29nbGUtZ2VvLW1hcC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXBwbGljYXRpb24tY29udHJvbGxlci9zaGFyZWQvYWR2YW5jZWQtY29tcG9uZW50L2dhbW1hLXRhYmxlLWNsdW1uLWJhci1jaGFydC9nYW1tYS10YWJsZS1jbHVtbi1iYXItY2hhcnQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FwcGxpY2F0aW9uLWNvbnRyb2xsZXIvc2hhcmVkL2FwcC10aXRsZS9hcHAtdGl0bGUuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FwcGxpY2F0aW9uLWNvbnRyb2xsZXIvc2hhcmVkL2dhbWFtLXdpZGdldC9nYW1hbS13aWRnZXQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FwcGxpY2F0aW9uLWNvbnRyb2xsZXIvc2hhcmVkL2dhbW1hLWFkdmFuY2UtZmlsdGVyL2dhbW1hLWFkdmFuY2UtZmlsdGVyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL3NoYXJlZC9nYW1tYS1icmVhZC1jcnVtYnMvYnJlYWQtY3J1bWJzLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL3NoYXJlZC9sb2FkZXIvbG9hZGVyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL3N1cHBvcnQtY29tcG9uZW50cy90YWJsZS13aXRoLWJhci90YWJsZS13aXRoLWJhci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXBwbGljYXRpb24tY29udHJvbGxlci9zdXBwb3J0LWNvbXBvbmVudHMvZ2VvLW1hcC9nZW8tbWFwLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL3NoYXJlZC9hZHZhbmNlZC1jb21wb25lbnQvZ29vZ2xlLWdlby1tYXAvZ29vZ2xlLWdlby1tYXAuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FwcGxpY2F0aW9uLWNvbnRyb2xsZXIvc2hhcmVkL2FkdmFuY2VkLWNvbXBvbmVudC9nYW1tYS1nZW8tY2hhcnQvZ2FtbWEtZ2VvLWNoYXJ0LmNvbXBvbmVudCc7XG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL2FwcGxpY2F0aW9uLWNvbnRyb2xsZXIvcGFnZS1jb250cm9sbGVyL3BhZ2UtY29uZmlnL3BhZ2UtY29uZmlnLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL3BhZ2UtY29udHJvbGxlci9wYWdlLWNvbmZpZy1tdWx0aS1sYXlvdXQvcGFnZS1jb25maWctbXVsdGktbGF5b3V0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL3BhZ2UtY29udHJvbGxlci9wYWdlLWNvbnRyb2xsZXIvcGFnZS1jb250cm9sbGVyLmNvbXBvbmVudCc7XG5cbi8vbWV0cmljIGNvbXBvbmVudFxuZXhwb3J0ICogZnJvbSAnLi9saWIvYXBwbGljYXRpb24tY29udHJvbGxlci9hcHBsaWNhdGlvbi1tZXRyaWMtY29uZmlnL2NyZWF0ZS1tZXRyaWNzL2NyZWF0ZS1tZXRyaWNzLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL2FwcGxpY2F0aW9uLW1ldHJpYy1jb25maWcvb2ZsaW5lLW1ldHJpY3Mvb2ZsaW5lLW1ldHJpY3MuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FwcGxpY2F0aW9uLWNvbnRyb2xsZXIvYXBwbGljYXRpb24tbWV0cmljLWNvbmZpZy9vbmxpbmUtbWV0cmljcy9vbmxpbmUtbWV0cmljcy5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXBwbGljYXRpb24tY29udHJvbGxlci9hcHBsaWNhdGlvbi1tZXRyaWMtY29uZmlnL2FsbC1tZXRyaWNzLWNvbmZpZy9hbGwtbWV0cmljcy1jb25maWcuY29tcG9uZW50JztcblxuXG5cbi8vIEV4cG9ydCBTZXJ2aWNlc1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXBwbGljYXRpb24tY29udHJvbGxlci9hcHBsaWNhdGlvbi1kYXRhc2V0LWNhbGwuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL2FwcGxpY2F0aW9uLWNvbnRlbnQuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL2twaS1zZXJ2aWNlJztcbi8vIGV4cG9ydCAqIGZyb20gJy4vbGliL2FwcGxpY2F0aW9uLWNvbnRyb2xsZXIva3BpLWNvbW9uLXNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXBwbGljYXRpb24tY29udHJvbGxlci9hcHAuaHR0cC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2dhbW1hLWFwcC1jb250cm9sbGVyLnNlcnZpY2UnO1xuXG4vLyBFeHBvcnQgUGlwZXNcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FwcGxpY2F0aW9uLWNvbnRyb2xsZXIvc2hhcmVkL3NhZmVIdG1sUGlwZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL2FwcGxpY2F0aW9uLWRhdGFzZXQtY29tcG9uZW50L2NyZWF0ZS1kYXRhc2V0LXNxbC9zcWxGb3JtYXR0ZXInO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXBwbGljYXRpb24tY29udHJvbGxlci9zaGFyZWQvYWR2YW5jZWQtY29tcG9uZW50L2dhbW1hLXRhYmxlLXdpdGgtcGVyY2VudGFnZS9jb250ZW50U2FmZUh0bWwnO1xuXG4vLyBFeHBvcnQgTWlzY2VsbGFuZW91c1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZ2FtbWEtYXBwLWNvbnRyb2xsZXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ljb25zLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL2NvbW1vbic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL2Vudmlyb25tZW50JztcblxuLy8gc3VwcG9ydCBjb21wb25lbnRcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FwcGxpY2F0aW9uLWNvbnRyb2xsZXIvc3VwcG9ydC1jb21wb25lbnRzL2Rhc2gtY2hhcnQvZGFzaC1jaGFydC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXBwbGljYXRpb24tY29udHJvbGxlci9zdXBwb3J0LWNvbXBvbmVudHMvZGFzaC10YWJsZS9kYXNoLXRhYmxlLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL3N1cHBvcnQtY29tcG9uZW50cy9kYXNoLXRvZGF5LXByZXZpb3VzL2Rhc2gtdG9kYXktcHJldmlvdXMuY29tcG9uZW50JztcblxuXG4vL21vbWVudFxuZXhwb3J0ICogZnJvbSAnLi9saWIvYXBwbGljYXRpb24tY29udHJvbGxlci9tb21lbnQtaGVscGVyJ1xuXG5cblxuIl19
|