devexpress-dashboard-angular 23.2.6 → 24.1.2-beta

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.
Files changed (72) hide show
  1. package/README.md +17 -17
  2. package/{esm2020 → esm2022}/devexpress-dashboard-angular.mjs +4 -4
  3. package/{esm2020 → esm2022}/index.mjs +1 -1
  4. package/{esm2020 → esm2022}/ui/dashboard-control/devexpress-dashboard-angular-ui-dashboard-control.mjs +4 -4
  5. package/{esm2020 → esm2022}/ui/dashboard-control/index.mjs +634 -459
  6. package/esm2022/ui/nested/ajax-remote-service.mjs +77 -0
  7. package/esm2022/ui/nested/base/i-dashboard-data-source-wizard-settings.mjs +40 -0
  8. package/esm2022/ui/nested/chart-indicators.mjs +61 -0
  9. package/esm2022/ui/nested/dashboard-export.mjs +93 -0
  10. package/esm2022/ui/nested/dashboard-parameter-dialog.mjs +85 -0
  11. package/esm2022/ui/nested/data-inspector.mjs +109 -0
  12. package/esm2022/ui/nested/data-request-options.mjs +69 -0
  13. package/esm2022/ui/nested/data-source-wizard.mjs +85 -0
  14. package/esm2022/ui/nested/designer-toolbar.mjs +61 -0
  15. package/{esm2020 → esm2022}/ui/nested/devexpress-dashboard-angular-ui-nested.mjs +4 -4
  16. package/esm2022/ui/nested/extensions.mjs +133 -0
  17. package/esm2022/ui/nested/fetch-remote-service.mjs +69 -0
  18. package/{esm2020 → esm2022}/ui/nested/index.mjs +15 -15
  19. package/esm2022/ui/nested/item-binding-panel.mjs +61 -0
  20. package/esm2022/ui/nested/item-options-panel.mjs +61 -0
  21. package/esm2022/ui/nested/mobile-layout.mjs +61 -0
  22. package/esm2022/ui/nested/viewer-api.mjs +165 -0
  23. package/esm2022/ui/nested/wizard-settings.mjs +59 -0
  24. package/{fesm2020 → fesm2022}/devexpress-dashboard-angular-ui-dashboard-control.mjs +611 -438
  25. package/fesm2022/devexpress-dashboard-angular-ui-dashboard-control.mjs.map +1 -0
  26. package/{fesm2020 → fesm2022}/devexpress-dashboard-angular-ui-nested.mjs +1150 -1150
  27. package/{fesm2020 → fesm2022}/devexpress-dashboard-angular-ui-nested.mjs.map +1 -1
  28. package/{fesm2015 → fesm2022}/devexpress-dashboard-angular.mjs +2 -2
  29. package/index.d.ts +1 -1
  30. package/package.json +15 -25
  31. package/ui/dashboard-control/index.d.ts +509 -509
  32. package/ui/nested/ajax-remote-service.d.ts +23 -23
  33. package/ui/nested/base/i-dashboard-data-source-wizard-settings.d.ts +14 -14
  34. package/ui/nested/chart-indicators.d.ts +19 -19
  35. package/ui/nested/dashboard-export.d.ts +27 -27
  36. package/ui/nested/dashboard-parameter-dialog.d.ts +25 -25
  37. package/ui/nested/data-inspector.d.ts +31 -31
  38. package/ui/nested/data-request-options.d.ts +21 -21
  39. package/ui/nested/data-source-wizard.d.ts +26 -26
  40. package/ui/nested/designer-toolbar.d.ts +19 -19
  41. package/ui/nested/extensions.d.ts +136 -136
  42. package/ui/nested/fetch-remote-service.d.ts +21 -21
  43. package/ui/nested/index.d.ts +15 -15
  44. package/ui/nested/item-binding-panel.d.ts +19 -19
  45. package/ui/nested/item-options-panel.d.ts +19 -19
  46. package/ui/nested/mobile-layout.d.ts +19 -19
  47. package/ui/nested/viewer-api.d.ts +45 -45
  48. package/ui/nested/wizard-settings.d.ts +17 -17
  49. package/esm2020/ui/nested/ajax-remote-service.mjs +0 -75
  50. package/esm2020/ui/nested/base/i-dashboard-data-source-wizard-settings.mjs +0 -39
  51. package/esm2020/ui/nested/chart-indicators.mjs +0 -59
  52. package/esm2020/ui/nested/dashboard-export.mjs +0 -91
  53. package/esm2020/ui/nested/dashboard-parameter-dialog.mjs +0 -83
  54. package/esm2020/ui/nested/data-inspector.mjs +0 -107
  55. package/esm2020/ui/nested/data-request-options.mjs +0 -67
  56. package/esm2020/ui/nested/data-source-wizard.mjs +0 -83
  57. package/esm2020/ui/nested/designer-toolbar.mjs +0 -59
  58. package/esm2020/ui/nested/extensions.mjs +0 -131
  59. package/esm2020/ui/nested/fetch-remote-service.mjs +0 -67
  60. package/esm2020/ui/nested/item-binding-panel.mjs +0 -59
  61. package/esm2020/ui/nested/item-options-panel.mjs +0 -59
  62. package/esm2020/ui/nested/mobile-layout.mjs +0 -59
  63. package/esm2020/ui/nested/viewer-api.mjs +0 -163
  64. package/esm2020/ui/nested/wizard-settings.mjs +0 -57
  65. package/fesm2015/devexpress-dashboard-angular-ui-dashboard-control.mjs +0 -454
  66. package/fesm2015/devexpress-dashboard-angular-ui-dashboard-control.mjs.map +0 -1
  67. package/fesm2015/devexpress-dashboard-angular-ui-nested.mjs +0 -1221
  68. package/fesm2015/devexpress-dashboard-angular-ui-nested.mjs.map +0 -1
  69. package/fesm2020/devexpress-dashboard-angular-ui-dashboard-control.mjs.map +0 -1
  70. package/fesm2020/devexpress-dashboard-angular.mjs +0 -6
  71. package/fesm2020/devexpress-dashboard-angular.mjs.map +0 -1
  72. /package/{fesm2015 → fesm2022}/devexpress-dashboard-angular.mjs.map +0 -0
@@ -1,459 +1,634 @@
1
- import { Component, NgModule, PLATFORM_ID, Inject, Input, Output } from '@angular/core';
2
- import DxDashboardControl from 'devexpress-dashboard/integration/index';
3
- import { DxComponent, DxTemplateHost, DxIntegrationModule, DxTemplateModule, NestedOptionHost, WatcherHelper } from 'devextreme-angular/core';
4
- import { DxoAjaxRemoteServiceModule } from 'devexpress-dashboard-angular/ui/nested';
5
- import { DxoDataRequestOptionsModule } from 'devexpress-dashboard-angular/ui/nested';
6
- import { DxoExtensionsModule } from 'devexpress-dashboard-angular/ui/nested';
7
- import { DxoChartIndicatorsModule } from 'devexpress-dashboard-angular/ui/nested';
8
- import { DxoDashboardExportModule } from 'devexpress-dashboard-angular/ui/nested';
9
- import { DxoDashboardParameterDialogModule } from 'devexpress-dashboard-angular/ui/nested';
10
- import { DxoDataInspectorModule } from 'devexpress-dashboard-angular/ui/nested';
11
- import { DxoDataSourceWizardModule } from 'devexpress-dashboard-angular/ui/nested';
12
- import { DxoWizardSettingsModule } from 'devexpress-dashboard-angular/ui/nested';
13
- import { DxoDesignerToolbarModule } from 'devexpress-dashboard-angular/ui/nested';
14
- import { DxoItemBindingPanelModule } from 'devexpress-dashboard-angular/ui/nested';
15
- import { DxoItemOptionsPanelModule } from 'devexpress-dashboard-angular/ui/nested';
16
- import { DxoMobileLayoutModule } from 'devexpress-dashboard-angular/ui/nested';
17
- import { DxoViewerApiModule } from 'devexpress-dashboard-angular/ui/nested';
18
- import { DxoFetchRemoteServiceModule } from 'devexpress-dashboard-angular/ui/nested';
19
- import * as i0 from "@angular/core";
20
- import * as i1 from "devextreme-angular/core";
21
- import * as i2 from "@angular/platform-browser";
22
- /**
23
- * [descr:dxDashboardControl]
24
-
25
- */
26
- export class DxDashboardControlComponent extends DxComponent {
27
- constructor(elementRef, ngZone, templateHost, _watcherHelper, optionHost, transferState, platformId) {
28
- super(elementRef, ngZone, templateHost, _watcherHelper, transferState, platformId);
29
- this._createEventEmitters([
30
- { subscribe: 'beforeRender', emit: 'onBeforeRender' },
31
- { subscribe: 'dashboardBeginUpdate', emit: 'onDashboardBeginUpdate' },
32
- { subscribe: 'dashboardEndUpdate', emit: 'onDashboardEndUpdate' },
33
- { subscribe: 'dashboardInitialized', emit: 'onDashboardInitialized' },
34
- { subscribe: 'dashboardInitializing', emit: 'onDashboardInitializing' },
35
- { subscribe: 'dashboardStateChanged', emit: 'onDashboardStateChanged' },
36
- { subscribe: 'initializing', emit: 'onInitializing' },
37
- { subscribe: 'itemBeginUpdate', emit: 'onItemBeginUpdate' },
38
- { subscribe: 'itemEndUpdate', emit: 'onItemEndUpdate' },
39
- { subscribe: 'optionChanged', emit: 'onOptionChanged' },
40
- { emit: 'ajaxRemoteServiceChange' },
41
- { emit: 'allowMaximizeItemsChange' },
42
- { emit: 'dashboardIdChange' },
43
- { emit: 'dataRequestOptionsChange' },
44
- { emit: 'encodeHtmlChange' },
45
- { emit: 'endpointChange' },
46
- { emit: 'extensionsChange' },
47
- { emit: 'fetchRemoteServiceChange' },
48
- { emit: 'initialDashboardIdChange' },
49
- { emit: 'initialDashboardStateChange' },
50
- { emit: 'limitVisibleDataModeChange' },
51
- { emit: 'loadDefaultDashboardChange' },
52
- { emit: 'nonceChange' },
53
- { emit: 'resizeByTimerChange' },
54
- { emit: 'showConfirmationOnBrowserClosingChange' },
55
- { emit: 'useNeutralFilterModeChange' },
56
- { emit: 'workingModeChange' }
57
- ]);
58
- optionHost.setHost(this);
59
- }
60
- /**
61
- * [descr:dxDashboardControlOptions.ajaxRemoteService]
62
-
63
- */
64
- get ajaxRemoteService() {
65
- return this._getOption('ajaxRemoteService');
66
- }
67
- set ajaxRemoteService(value) {
68
- this._setOption('ajaxRemoteService', value);
69
- }
70
- /**
71
- * [descr:dxDashboardControlOptions.allowMaximizeItems]
72
-
73
- */
74
- get allowMaximizeItems() {
75
- return this._getOption('allowMaximizeItems');
76
- }
77
- set allowMaximizeItems(value) {
78
- this._setOption('allowMaximizeItems', value);
79
- }
80
- /**
81
- * [descr:dxDashboardControlOptions.dashboardId]
82
-
83
- */
84
- get dashboardId() {
85
- return this._getOption('dashboardId');
86
- }
87
- set dashboardId(value) {
88
- this._setOption('dashboardId', value);
89
- }
90
- /**
91
- * [descr:dxDashboardControlOptions.dataRequestOptions]
92
-
93
- */
94
- get dataRequestOptions() {
95
- return this._getOption('dataRequestOptions');
96
- }
97
- set dataRequestOptions(value) {
98
- this._setOption('dataRequestOptions', value);
99
- }
100
- /**
101
- * [descr:dxDashboardControlOptions.encodeHtml]
102
-
103
- */
104
- get encodeHtml() {
105
- return this._getOption('encodeHtml');
106
- }
107
- set encodeHtml(value) {
108
- this._setOption('encodeHtml', value);
109
- }
110
- /**
111
- * [descr:dxDashboardControlOptions.endpoint]
112
-
113
- */
114
- get endpoint() {
115
- return this._getOption('endpoint');
116
- }
117
- set endpoint(value) {
118
- this._setOption('endpoint', value);
119
- }
120
- /**
121
- * [descr:dxDashboardControlOptions.extensions]
122
-
123
- */
124
- get extensions() {
125
- return this._getOption('extensions');
126
- }
127
- set extensions(value) {
128
- this._setOption('extensions', value);
129
- }
130
- /**
131
- * [descr:dxDashboardControlOptions.fetchRemoteService]
132
-
133
- */
134
- get fetchRemoteService() {
135
- return this._getOption('fetchRemoteService');
136
- }
137
- set fetchRemoteService(value) {
138
- this._setOption('fetchRemoteService', value);
139
- }
140
- /**
141
- * [descr:dxDashboardControlOptions.initialDashboardId]
142
-
143
- */
144
- get initialDashboardId() {
145
- return this._getOption('initialDashboardId');
146
- }
147
- set initialDashboardId(value) {
148
- this._setOption('initialDashboardId', value);
149
- }
150
- /**
151
- * [descr:dxDashboardControlOptions.initialDashboardState]
152
-
153
- */
154
- get initialDashboardState() {
155
- return this._getOption('initialDashboardState');
156
- }
157
- set initialDashboardState(value) {
158
- this._setOption('initialDashboardState', value);
159
- }
160
- /**
161
- * [descr:dxDashboardControlOptions.limitVisibleDataMode]
162
-
163
- */
164
- get limitVisibleDataMode() {
165
- return this._getOption('limitVisibleDataMode');
166
- }
167
- set limitVisibleDataMode(value) {
168
- this._setOption('limitVisibleDataMode', value);
169
- }
170
- /**
171
- * [descr:dxDashboardControlOptions.loadDefaultDashboard]
172
-
173
- */
174
- get loadDefaultDashboard() {
175
- return this._getOption('loadDefaultDashboard');
176
- }
177
- set loadDefaultDashboard(value) {
178
- this._setOption('loadDefaultDashboard', value);
179
- }
180
- /**
181
- * [descr:dxDashboardControlOptions.nonce]
182
-
183
- */
184
- get nonce() {
185
- return this._getOption('nonce');
186
- }
187
- set nonce(value) {
188
- this._setOption('nonce', value);
189
- }
190
- /**
191
- * [descr:dxDashboardControlOptions.resizeByTimer]
192
-
193
- */
194
- get resizeByTimer() {
195
- return this._getOption('resizeByTimer');
196
- }
197
- set resizeByTimer(value) {
198
- this._setOption('resizeByTimer', value);
199
- }
200
- /**
201
- * [descr:dxDashboardControlOptions.showConfirmationOnBrowserClosing]
202
-
203
- */
204
- get showConfirmationOnBrowserClosing() {
205
- return this._getOption('showConfirmationOnBrowserClosing');
206
- }
207
- set showConfirmationOnBrowserClosing(value) {
208
- this._setOption('showConfirmationOnBrowserClosing', value);
209
- }
210
- /**
211
- * [descr:dxDashboardControlOptions.useNeutralFilterMode]
212
-
213
- */
214
- get useNeutralFilterMode() {
215
- return this._getOption('useNeutralFilterMode');
216
- }
217
- set useNeutralFilterMode(value) {
218
- this._setOption('useNeutralFilterMode', value);
219
- }
220
- /**
221
- * [descr:dxDashboardControlOptions.workingMode]
222
-
223
- */
224
- get workingMode() {
225
- return this._getOption('workingMode');
226
- }
227
- set workingMode(value) {
228
- this._setOption('workingMode', value);
229
- }
230
- _createInstance(element, options) {
231
- return new DxDashboardControl(element, options);
232
- }
233
- ngOnDestroy() {
234
- this._destroyWidget();
235
- }
236
- }
237
- /** @nocollapse */ DxDashboardControlComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: DxDashboardControlComponent, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i1.DxTemplateHost }, { token: i1.WatcherHelper }, { token: i1.NestedOptionHost }, { token: i2.TransferState }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Component });
238
- /** @nocollapse */ DxDashboardControlComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: DxDashboardControlComponent, selector: "dx-dashboard-control", inputs: { ajaxRemoteService: "ajaxRemoteService", allowMaximizeItems: "allowMaximizeItems", dashboardId: "dashboardId", dataRequestOptions: "dataRequestOptions", encodeHtml: "encodeHtml", endpoint: "endpoint", extensions: "extensions", fetchRemoteService: "fetchRemoteService", initialDashboardId: "initialDashboardId", initialDashboardState: "initialDashboardState", limitVisibleDataMode: "limitVisibleDataMode", loadDefaultDashboard: "loadDefaultDashboard", nonce: "nonce", resizeByTimer: "resizeByTimer", showConfirmationOnBrowserClosing: "showConfirmationOnBrowserClosing", useNeutralFilterMode: "useNeutralFilterMode", workingMode: "workingMode" }, outputs: { onBeforeRender: "onBeforeRender", onDashboardBeginUpdate: "onDashboardBeginUpdate", onDashboardEndUpdate: "onDashboardEndUpdate", onDashboardInitialized: "onDashboardInitialized", onDashboardInitializing: "onDashboardInitializing", onDashboardStateChanged: "onDashboardStateChanged", onInitializing: "onInitializing", onItemBeginUpdate: "onItemBeginUpdate", onItemEndUpdate: "onItemEndUpdate", onOptionChanged: "onOptionChanged", ajaxRemoteServiceChange: "ajaxRemoteServiceChange", allowMaximizeItemsChange: "allowMaximizeItemsChange", dashboardIdChange: "dashboardIdChange", dataRequestOptionsChange: "dataRequestOptionsChange", encodeHtmlChange: "encodeHtmlChange", endpointChange: "endpointChange", extensionsChange: "extensionsChange", fetchRemoteServiceChange: "fetchRemoteServiceChange", initialDashboardIdChange: "initialDashboardIdChange", initialDashboardStateChange: "initialDashboardStateChange", limitVisibleDataModeChange: "limitVisibleDataModeChange", loadDefaultDashboardChange: "loadDefaultDashboardChange", nonceChange: "nonceChange", resizeByTimerChange: "resizeByTimerChange", showConfirmationOnBrowserClosingChange: "showConfirmationOnBrowserClosingChange", useNeutralFilterModeChange: "useNeutralFilterModeChange", workingModeChange: "workingModeChange" }, providers: [
239
- DxTemplateHost,
240
- WatcherHelper,
241
- NestedOptionHost
242
- ], usesInheritance: true, ngImport: i0, template: '', isInline: true });
243
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: DxDashboardControlComponent, decorators: [{
244
- type: Component,
245
- args: [{
246
- selector: 'dx-dashboard-control',
247
- template: '',
248
- providers: [
249
- DxTemplateHost,
250
- WatcherHelper,
251
- NestedOptionHost
252
- ]
253
- }]
254
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i1.DxTemplateHost }, { type: i1.WatcherHelper }, { type: i1.NestedOptionHost }, { type: i2.TransferState }, { type: undefined, decorators: [{
255
- type: Inject,
256
- args: [PLATFORM_ID]
257
- }] }]; }, propDecorators: { ajaxRemoteService: [{
258
- type: Input
259
- }], allowMaximizeItems: [{
260
- type: Input
261
- }], dashboardId: [{
262
- type: Input
263
- }], dataRequestOptions: [{
264
- type: Input
265
- }], encodeHtml: [{
266
- type: Input
267
- }], endpoint: [{
268
- type: Input
269
- }], extensions: [{
270
- type: Input
271
- }], fetchRemoteService: [{
272
- type: Input
273
- }], initialDashboardId: [{
274
- type: Input
275
- }], initialDashboardState: [{
276
- type: Input
277
- }], limitVisibleDataMode: [{
278
- type: Input
279
- }], loadDefaultDashboard: [{
280
- type: Input
281
- }], nonce: [{
282
- type: Input
283
- }], resizeByTimer: [{
284
- type: Input
285
- }], showConfirmationOnBrowserClosing: [{
286
- type: Input
287
- }], useNeutralFilterMode: [{
288
- type: Input
289
- }], workingMode: [{
290
- type: Input
291
- }], onBeforeRender: [{
292
- type: Output
293
- }], onDashboardBeginUpdate: [{
294
- type: Output
295
- }], onDashboardEndUpdate: [{
296
- type: Output
297
- }], onDashboardInitialized: [{
298
- type: Output
299
- }], onDashboardInitializing: [{
300
- type: Output
301
- }], onDashboardStateChanged: [{
302
- type: Output
303
- }], onInitializing: [{
304
- type: Output
305
- }], onItemBeginUpdate: [{
306
- type: Output
307
- }], onItemEndUpdate: [{
308
- type: Output
309
- }], onOptionChanged: [{
310
- type: Output
311
- }], ajaxRemoteServiceChange: [{
312
- type: Output
313
- }], allowMaximizeItemsChange: [{
314
- type: Output
315
- }], dashboardIdChange: [{
316
- type: Output
317
- }], dataRequestOptionsChange: [{
318
- type: Output
319
- }], encodeHtmlChange: [{
320
- type: Output
321
- }], endpointChange: [{
322
- type: Output
323
- }], extensionsChange: [{
324
- type: Output
325
- }], fetchRemoteServiceChange: [{
326
- type: Output
327
- }], initialDashboardIdChange: [{
328
- type: Output
329
- }], initialDashboardStateChange: [{
330
- type: Output
331
- }], limitVisibleDataModeChange: [{
332
- type: Output
333
- }], loadDefaultDashboardChange: [{
334
- type: Output
335
- }], nonceChange: [{
336
- type: Output
337
- }], resizeByTimerChange: [{
338
- type: Output
339
- }], showConfirmationOnBrowserClosingChange: [{
340
- type: Output
341
- }], useNeutralFilterModeChange: [{
342
- type: Output
343
- }], workingModeChange: [{
344
- type: Output
345
- }] } });
346
- export class DxDashboardControlModule {
347
- }
348
- /** @nocollapse */ DxDashboardControlModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: DxDashboardControlModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
349
- /** @nocollapse */ DxDashboardControlModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.0.4", ngImport: i0, type: DxDashboardControlModule, declarations: [DxDashboardControlComponent], imports: [DxoAjaxRemoteServiceModule,
350
- DxoDataRequestOptionsModule,
351
- DxoExtensionsModule,
352
- DxoChartIndicatorsModule,
353
- DxoDashboardExportModule,
354
- DxoDashboardParameterDialogModule,
355
- DxoDataInspectorModule,
356
- DxoDataSourceWizardModule,
357
- DxoWizardSettingsModule,
358
- DxoDesignerToolbarModule,
359
- DxoItemBindingPanelModule,
360
- DxoItemOptionsPanelModule,
361
- DxoMobileLayoutModule,
362
- DxoViewerApiModule,
363
- DxoFetchRemoteServiceModule,
364
- DxIntegrationModule,
365
- DxTemplateModule], exports: [DxDashboardControlComponent, DxoAjaxRemoteServiceModule,
366
- DxoDataRequestOptionsModule,
367
- DxoExtensionsModule,
368
- DxoChartIndicatorsModule,
369
- DxoDashboardExportModule,
370
- DxoDashboardParameterDialogModule,
371
- DxoDataInspectorModule,
372
- DxoDataSourceWizardModule,
373
- DxoWizardSettingsModule,
374
- DxoDesignerToolbarModule,
375
- DxoItemBindingPanelModule,
376
- DxoItemOptionsPanelModule,
377
- DxoMobileLayoutModule,
378
- DxoViewerApiModule,
379
- DxoFetchRemoteServiceModule,
380
- DxTemplateModule] });
381
- /** @nocollapse */ DxDashboardControlModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: DxDashboardControlModule, imports: [DxoAjaxRemoteServiceModule,
382
- DxoDataRequestOptionsModule,
383
- DxoExtensionsModule,
384
- DxoChartIndicatorsModule,
385
- DxoDashboardExportModule,
386
- DxoDashboardParameterDialogModule,
387
- DxoDataInspectorModule,
388
- DxoDataSourceWizardModule,
389
- DxoWizardSettingsModule,
390
- DxoDesignerToolbarModule,
391
- DxoItemBindingPanelModule,
392
- DxoItemOptionsPanelModule,
393
- DxoMobileLayoutModule,
394
- DxoViewerApiModule,
395
- DxoFetchRemoteServiceModule,
396
- DxIntegrationModule,
397
- DxTemplateModule, DxoAjaxRemoteServiceModule,
398
- DxoDataRequestOptionsModule,
399
- DxoExtensionsModule,
400
- DxoChartIndicatorsModule,
401
- DxoDashboardExportModule,
402
- DxoDashboardParameterDialogModule,
403
- DxoDataInspectorModule,
404
- DxoDataSourceWizardModule,
405
- DxoWizardSettingsModule,
406
- DxoDesignerToolbarModule,
407
- DxoItemBindingPanelModule,
408
- DxoItemOptionsPanelModule,
409
- DxoMobileLayoutModule,
410
- DxoViewerApiModule,
411
- DxoFetchRemoteServiceModule,
412
- DxTemplateModule] });
413
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: DxDashboardControlModule, decorators: [{
414
- type: NgModule,
415
- args: [{
416
- imports: [
417
- DxoAjaxRemoteServiceModule,
418
- DxoDataRequestOptionsModule,
419
- DxoExtensionsModule,
420
- DxoChartIndicatorsModule,
421
- DxoDashboardExportModule,
422
- DxoDashboardParameterDialogModule,
423
- DxoDataInspectorModule,
424
- DxoDataSourceWizardModule,
425
- DxoWizardSettingsModule,
426
- DxoDesignerToolbarModule,
427
- DxoItemBindingPanelModule,
428
- DxoItemOptionsPanelModule,
429
- DxoMobileLayoutModule,
430
- DxoViewerApiModule,
431
- DxoFetchRemoteServiceModule,
432
- DxIntegrationModule,
433
- DxTemplateModule
434
- ],
435
- declarations: [
436
- DxDashboardControlComponent
437
- ],
438
- exports: [
439
- DxDashboardControlComponent,
440
- DxoAjaxRemoteServiceModule,
441
- DxoDataRequestOptionsModule,
442
- DxoExtensionsModule,
443
- DxoChartIndicatorsModule,
444
- DxoDashboardExportModule,
445
- DxoDashboardParameterDialogModule,
446
- DxoDataInspectorModule,
447
- DxoDataSourceWizardModule,
448
- DxoWizardSettingsModule,
449
- DxoDesignerToolbarModule,
450
- DxoItemBindingPanelModule,
451
- DxoItemOptionsPanelModule,
452
- DxoMobileLayoutModule,
453
- DxoViewerApiModule,
454
- DxoFetchRemoteServiceModule,
455
- DxTemplateModule
456
- ]
457
- }]
458
- }] });
459
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdWkvZGFzaGJvYXJkLWNvbnRyb2wvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0EsT0FBTyxFQUNILFNBQVMsRUFDVCxRQUFRLEVBR1IsV0FBVyxFQUNYLE1BQU0sRUFFTixLQUFLLEVBQ0wsTUFBTSxFQUdULE1BQU0sZUFBZSxDQUFDO0FBS3ZCLE9BQU8sa0JBQWtCLE1BQU0sd0NBQXdDLENBQUM7QUFHeEUsT0FBTyxFQUNILFdBQVcsRUFDWCxjQUFjLEVBQ2QsbUJBQW1CLEVBQ25CLGdCQUFnQixFQUNoQixnQkFBZ0IsRUFDaEIsYUFBYSxFQUNoQixNQUFNLHlCQUF5QixDQUFDO0FBRWpDLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ3BGLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzdFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzNGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ25GLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ25GLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FB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QixrQkFBa0I7d0JBQ2xCLDJCQUEyQjt3QkFDM0IsbUJBQW1CO3dCQUNuQixnQkFBZ0I7cUJBQ2pCO29CQUNELFlBQVksRUFBRTt3QkFDWiwyQkFBMkI7cUJBQzVCO29CQUNELE9BQU8sRUFBRTt3QkFDUCwyQkFBMkI7d0JBQzNCLDBCQUEwQjt3QkFDMUIsMkJBQTJCO3dCQUMzQixtQkFBbUI7d0JBQ25CLHdCQUF3Qjt3QkFDeEIsd0JBQXdCO3dCQUN4QixpQ0FBaUM7d0JBQ2pDLHNCQUFzQjt3QkFDdEIseUJBQXlCO3dCQUN6Qix1QkFBdUI7d0JBQ3ZCLHdCQUF3Qjt3QkFDeEIseUJBQXlCO3dCQUN6Qix5QkFBeUI7d0JBQ3pCLHFCQUFxQjt3QkFDckIsa0JBQWtCO3dCQUNsQiwyQkFBMkI7d0JBQzNCLGdCQUFnQjtxQkFDakI7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKiB0c2xpbnQ6ZGlzYWJsZTptYXgtbGluZS1sZW5ndGggKi9cblxuXG5pbXBvcnQgeyBUcmFuc2ZlclN0YXRlIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5cbmltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIE5nTW9kdWxlLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgTmdab25lLFxuICAgIFBMQVRGT1JNX0lELFxuICAgIEluamVjdCxcblxuICAgIElucHV0LFxuICAgIE91dHB1dCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgRXZlbnRFbWl0dGVyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5cbmltcG9ydCB7IElEYXNoYm9hcmREYXRhU291cmNlV2l6YXJkU2V0dGluZ3MgfSBmcm9tICdkZXZleHByZXNzLWRhc2hib2FyZC9kZXNpZ25lci9kYXRhLXNvdXJjZS13aXphcmQvZGF0YS1zb3VyY2Utd2l6YXJkLWV4dGVuc2lvbic7XG5cbmltcG9ydCBEeERhc2hib2FyZENvbnRyb2wgZnJvbSAnZGV2ZXhwcmVzcy1kYXNoYm9hcmQvaW50ZWdyYXRpb24vaW5kZXgnO1xuXG5cbmltcG9ydCB7XG4gICAgRHhDb21wb25lbnQsXG4gICAgRHhUZW1wbGF0ZUhvc3QsXG4gICAgRHhJbnRlZ3JhdGlvbk1vZHVsZSxcbiAgICBEeFRlbXBsYXRlTW9kdWxlLFxuICAgIE5lc3RlZE9wdGlvbkhvc3QsXG4gICAgV2F0Y2hlckhlbHBlclxufSBmcm9tICdkZXZleHRyZW1lLWFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IER4b0FqYXhSZW1vdGVTZXJ2aWNlTW9kdWxlIH0gZnJvbSAnZGV2ZXhwcmVzcy1kYXNoYm9hcmQtYW5ndWxhci91aS9uZXN0ZWQnO1xuaW1wb3J0IHsgRHhvRGF0YVJlcXVlc3RPcHRpb25zTW9kdWxlIH0gZnJvbSAnZGV2ZXhwcmVzcy1kYXNoYm9hcmQtYW5ndWxhci91aS9uZXN0ZWQnO1xuaW1wb3J0IHsgRHhvRXh0ZW5zaW9uc01vZHVsZSB9IGZyb20gJ2RldmV4cHJlc3MtZGFzaGJvYXJkLWFuZ3VsYXIvdWkvbmVzdGVkJztcbmltcG9ydCB7IER4b0NoYXJ0SW5kaWNhdG9yc01vZHVsZSB9IGZyb20gJ2RldmV4cHJlc3MtZGFzaGJvYXJkLWFuZ3VsYXIvdWkvbmVzdGVkJztcbmltcG9ydCB7IER4b0Rhc2hib2FyZEV4cG9ydE1vZHVsZSB9IGZyb20gJ2RldmV4cHJlc3MtZGFzaGJvYXJkLWFuZ3VsYXIvdWkvbmVzdGVkJztcbmltcG9ydCB7IER4b0Rhc2hib2FyZFBhcmFtZXRlckRpYWxvZ01vZHVsZSB9IGZyb20gJ2RldmV4cHJlc3MtZGFzaGJvYXJkLWFuZ3VsYXIvdWkvbmVzdGVkJztcbmltcG9ydCB7IER4b0RhdGFJbnNwZWN0b3JNb2R1bGUgfSBmcm9tICdkZXZleHByZXNzLWRhc2hib2FyZC1hbmd1bGFyL3VpL25lc3RlZCc7XG5pbXBvcnQgeyBEeG9EYXRhU291cmNlV2l6YXJkTW9kdWxlIH0gZnJvbSAnZGV2ZXhwcmVzcy1kYXNoYm9hcmQtYW5ndWxhci91aS9uZXN0ZWQnO1xuaW1wb3J0IHsgRHhvV2l6YXJkU2V0dGluZ3NNb2R1bGUgfSBmcm9tICdkZXZleHByZXNzLWRhc2hib2FyZC1hbmd1bGFyL3VpL25lc3RlZCc7XG5pbXBvcnQgeyBEeG9EZXNpZ25lclRvb2xiYXJNb2R1bGUgfSBmcm9tICdkZXZleHByZXNzLWRhc2hib2FyZC1hbmd1bGFyL3VpL25lc3RlZCc7XG5pbXBvcnQgeyBEeG9JdGVtQmluZGluZ1BhbmVsTW9kdWxlIH0gZnJvbSAnZGV2ZXhwcmVzcy1kYXNoYm9hcmQtYW5ndWxhci91aS9uZXN0ZWQnO1xuaW1wb3J0IHsgRHhvSXRlbU9wdGlvbnNQYW5lbE1vZHVsZSB9IGZyb20gJ2RldmV4cHJlc3MtZGFzaGJvYXJkLWFuZ3VsYXIvdWkvbmVzdGVkJztcbmltcG9ydCB7IER4b01vYmlsZUxheW91dE1vZHVsZSB9IGZyb20gJ2RldmV4cHJlc3MtZGFzaGJvYXJkLWFuZ3VsYXIvdWkvbmVzdGVkJztcbmltcG9ydCB7IER4b1ZpZXdlckFwaU1vZHVsZSB9IGZyb20gJ2RldmV4cHJlc3MtZGFzaGJvYXJkLWFuZ3VsYXIvdWkvbmVzdGVkJztcbmltcG9ydCB7IER4b0ZldGNoUmVtb3RlU2VydmljZU1vZHVsZSB9IGZyb20gJ2RldmV4cHJlc3MtZGFzaGJvYXJkLWFuZ3VsYXIvdWkvbmVzdGVkJztcblxuXG5cblxuLyoqXG4gKiBbZGVzY3I6ZHhEYXNoYm9hcmRDb250cm9sXVxuXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZHgtZGFzaGJvYXJkLWNvbnRyb2wnLFxuICAgIHRlbXBsYXRlOiAnJyxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgRHhUZW1wbGF0ZUhvc3QsXG4gICAgICAgIFdhdGNoZXJIZWxwZXIsXG4gICAgICAgIE5lc3RlZE9wdGlvbkhvc3RcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIER4RGFzaGJvYXJkQ29udHJvbENvbXBvbmVudCBleHRlbmRzIER4Q29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgICBpbnN0YW5jZTogRHhEYXNoYm9hcmRDb250cm9sO1xuXG4gICAgLyoqXG4gICAgICogW2Rlc2NyOmR4RGFzaGJvYXJkQ29udHJvbE9wdGlvbnMuYWpheFJlbW90ZVNlcnZpY2VdXG4gICAgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBnZXQgYWpheFJlbW90ZVNlcnZpY2UoKTogeyBiZWZvcmVTZW5kPzogRnVuY3Rpb24sIGNvbXBsZXRlPzogRnVuY3Rpb24sIGhlYWRlcnM/OiBhbnkgfSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9nZXRPcHRpb24oJ2FqYXhSZW1vdGVTZXJ2aWNlJyk7XG4gICAgfVxuICAgIHNldCBhamF4UmVtb3RlU2VydmljZSh2YWx1ZTogeyBiZWZvcmVTZW5kPzogRnVuY3Rpb24sIGNvbXBsZXRlPzogRnVuY3Rpb24sIGhlYWRlcnM/OiBhbnkgfSkge1xuICAgICAgICB0aGlzLl9zZXRPcHRpb24oJ2FqYXhSZW1vdGVTZXJ2aWNlJywgdmFsdWUpO1xuICAgIH1cblxuXG4gICAgLyoqXG4gICAgICogW2Rlc2NyOmR4RGFzaGJvYXJkQ29udHJvbE9wdGlvbnMuYWxsb3dNYXhpbWl6ZUl0ZW1zXVxuICAgIFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGFsbG93TWF4aW1pemVJdGVtcygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldE9wdGlvbignYWxsb3dNYXhpbWl6ZUl0ZW1zJyk7XG4gICAgfVxuICAgIHNldCBhbGxvd01heGltaXplSXRlbXModmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fc2V0T3B0aW9uKCdhbGxvd01heGltaXplSXRlbXMnLCB2YWx1ZSk7XG4gICAgfVxuXG5cbiAgICAvKipcbiAgICAgKiBbZGVzY3I6ZHhEYXNoYm9hcmRDb250cm9sT3B0aW9ucy5kYXNoYm9hcmRJZF1cbiAgICBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGdldCBkYXNoYm9hcmRJZCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0T3B0aW9uKCdkYXNoYm9hcmRJZCcpO1xuICAgIH1cbiAgICBzZXQgZGFzaGJvYXJkSWQodmFsdWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLl9zZXRPcHRpb24oJ2Rhc2hib2FyZElkJywgdmFsdWUpO1xuICAgIH1cblxuXG4gICAgLyoqXG4gICAgICogW2Rlc2NyOmR4RGFzaGJvYXJkQ29udHJvbE9wdGlvbnMuZGF0YVJlcXVlc3RPcHRpb25zXVxuICAgIFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGRhdGFSZXF1ZXN0T3B0aW9ucygpOiB7IGl0ZW1EYXRhTG9hZGluZ01vZGU/OiBzdHJpbmcsIGl0ZW1EYXRhUmVxdWVzdE1vZGU/OiBzdHJpbmcgfSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9nZXRPcHRpb24oJ2RhdGFSZXF1ZXN0T3B0aW9ucycpO1xuICAgIH1cbiAgICBzZXQgZGF0YVJlcXVlc3RPcHRpb25zKHZhbHVlOiB7IGl0ZW1EYXRhTG9hZGluZ01vZGU/OiBzdHJpbmcsIGl0ZW1EYXRhUmVxdWVzdE1vZGU/OiBzdHJpbmcgfSkge1xuICAgICAgICB0aGlzLl9zZXRPcHRpb24oJ2RhdGFSZXF1ZXN0T3B0aW9ucycsIHZhbHVlKTtcbiAgICB9XG5cblxuICAgIC8qKlxuICAgICAqIFtkZXNjcjpkeERhc2hib2FyZENvbnRyb2xPcHRpb25zLmVuY29kZUh0bWxdXG4gICAgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBnZXQgZW5jb2RlSHRtbCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldE9wdGlvbignZW5jb2RlSHRtbCcpO1xuICAgIH1cbiAgICBzZXQgZW5jb2RlSHRtbCh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9zZXRPcHRpb24oJ2VuY29kZUh0bWwnLCB2YWx1ZSk7XG4gICAgfVxuXG5cbiAgICAvKipcbiAgICAgKiBbZGVzY3I6ZHhEYXNoYm9hcmRDb250cm9sT3B0aW9ucy5lbmRwb2ludF1cbiAgICBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGdldCBlbmRwb2ludCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0T3B0aW9uKCdlbmRwb2ludCcpO1xuICAgIH1cbiAgICBzZXQgZW5kcG9pbnQodmFsdWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLl9zZXRPcHRpb24oJ2VuZHBvaW50JywgdmFsdWUpO1xuICAgIH1cblxuXG4gICAgLyoqXG4gICAgICogW2Rlc2NyOmR4RGFzaGJvYXJkQ29udHJvbE9wdGlvbnMuZXh0ZW5zaW9uc11cbiAgICBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGdldCBleHRlbnNpb25zKCk6IHsgY2hhcnRJbmRpY2F0b3JzPzogeyBjdXN0b21JbmRpY2F0b3JUeXBlcz86IGFueSB9LCBkYXNoYm9hcmRFeHBvcnQ/OiB7IGFsbG93RXhwb3J0RGFzaGJvYXJkPzogYm9vbGVhbiwgYWxsb3dFeHBvcnREYXNoYm9hcmRJdGVtcz86IGJvb2xlYW4sIG9uRXhwb3J0RGlhbG9nSGlkZGVuPzogRnVuY3Rpb24sIG9uRXhwb3J0RGlhbG9nU2hvd2luZz86IEZ1bmN0aW9uLCBvbkV4cG9ydERpYWxvZ1Nob3duPzogRnVuY3Rpb24gfSwgZGFzaGJvYXJkUGFyYW1ldGVyRGlhbG9nPzogeyBvbkR5bmFtaWNMb29rVXBWYWx1ZXNMb2FkZWQ/OiBGdW5jdGlvbiwgb25IaWRkZW4/OiBGdW5jdGlvbiwgb25TaG93aW5nPzogRnVuY3Rpb24sIG9uU2hvd24/OiBGdW5jdGlvbiB9LCBkYXRhSW5zcGVjdG9yPzogeyBhbGxvd0luc3BlY3RBZ2dyZWdhdGVkRGF0YT86IGJvb2xlYW4sIGFsbG93SW5zcGVjdFJhd0RhdGE/OiBib29sZWFuLCBvbkRpYWxvZ0hpZGRlbj86IEZ1bmN0aW9uLCBvbkRpYWxvZ1Nob3dpbmc/OiBGdW5jdGlvbiwgb25EaWFsb2dTaG93bj86IEZ1bmN0aW9uLCBvbkdyaWRDb250ZW50UmVhZHk/OiBGdW5jdGlvbiwgb25HcmlkSW5pdGlhbGl6ZWQ/OiBGdW5jdGlvbiB9LCBkYXRhU291cmNlV2l6YXJkPzogeyBhbGxvd0NyZWF0ZU5ld0pzb25Db25uZWN0aW9uPzogYm9vbGVhbiwgZW5hYmxlQ3VzdG9tU3FsPzogYm9vbGVhbiwgb25DdXN0b21pemVEYXRhU291cmNlV2l6YXJkPzogRnVuY3Rpb24sIHdpemFyZFNldHRpbmdzPzogSURhc2hib2FyZERhdGFTb3VyY2VXaXphcmRTZXR0aW5ncyB9LCBkZXNpZ25lclRvb2xiYXI/OiB7IG9uUHJlcGFyaW5nPzogRnVuY3Rpb24gfSwgaXRlbUJpbmRpbmdQYW5lbD86IHsgb25DdXN0b21pemVEYXRhSXRlbUNvbnRhaW5lclNlY3Rpb25zPzogRnVuY3Rpb24gfSwgaXRlbU9wdGlvbnNQYW5lbD86IHsgb25DdXN0b21pemVTZWN0aW9ucz86IEZ1bmN0aW9uIH0sIG1vYmlsZUxheW91dD86IHsgbW9iaWxlTGF5b3V0RW5hYmxlZD86IHN0cmluZyB9LCB2aWV3ZXJBcGk/OiB7IG9uRGFzaGJvYXJkVGl0bGVUb29sYmFyVXBkYXRlZD86IEZ1bmN0aW9uLCBvbkl0ZW1BY3Rpb25BdmFpbGFiaWxpdHlDaGFuZ2VkPzogRnVuY3Rpb24sIG9uSXRlbUNhcHRpb25Ub29sYmFyVXBkYXRlZD86IEZ1bmN0aW9uLCBvbkl0ZW1DbGljaz86IEZ1bmN0aW9uLCBvbkl0ZW1EcmlsbERvd25TdGF0ZUNoYW5nZWQ/OiBGdW5jdGlvbiwgb25JdGVtRWxlbWVudEN1c3RvbUNvbG9yPzogRnVuY3Rpb24sIG9uSXRlbU1hc3RlckZpbHRlclN0YXRlQ2hhbmdlZD86IEZ1bmN0aW9uLCBvbkl0ZW1TZWxlY3Rpb25DaGFuZ2VkPzogRnVuY3Rpb24sIG9uSXRlbVZpc3VhbEludGVyYWN0aXZpdHk/OiBGdW5jdGlvbiwgb25JdGVtV2lkZ2V0Q3JlYXRlZD86IEZ1bmN0aW9uLCBvbkl0ZW1XaWRnZXRPcHRpb25zUHJlcGFyZWQ/OiBGdW5jdGlvbiwgb25JdGVtV2lkZ2V0VXBkYXRlZD86IEZ1bmN0aW9uLCBvbkl0ZW1XaWRnZXRVcGRhdGluZz86IEZ1bmN0aW9uLCBvblNlbGVjdGVkVGFiUGFnZUNoYW5nZWQ/OiBGdW5jdGlvbiB9IH0ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0T3B0aW9uKCdleHRlbnNpb25zJyk7XG4gICAgfVxuICAgIHNldCBleHRlbnNpb25zKHZhbHVlOiB7IGNoYXJ0SW5kaWNhdG9ycz86IHsgY3VzdG9tSW5kaWNhdG9yVHlwZXM/OiBhbnkgfSwgZGFzaGJvYXJkRXhwb3J0PzogeyBhbGxvd0V4cG9ydERhc2hib2FyZD86IGJvb2xlYW4sIGFsbG93RXhwb3J0RGFzaGJvYXJkSXRlbXM/OiBib29sZWFuLCBvbkV4cG9ydERpYWxvZ0hpZGRlbj86IEZ1bmN0aW9uLCBvbkV4cG9ydERpYWxvZ1Nob3dpbmc/OiBGdW5jdGlvbiwgb25FeHBvcnREaWFsb2dTaG93bj86IEZ1bmN0aW9uIH0sIGRhc2hib2FyZFBhcmFtZXRlckRpYWxvZz86IHsgb25EeW5hbWljTG9va1VwVmFsdWVzTG9hZGVkPzogRnVuY3Rpb24sIG9uSGlkZGVuPzogRnVuY3Rpb24sIG9uU2hvd2luZz86IEZ1bmN0aW9uLCBvblNob3duPzogRnVuY3Rpb24gfSwgZGF0YUluc3BlY3Rvcj86IHsgYWxsb3dJbnNwZWN0QWdncmVnYXRlZERhdGE/OiBib29sZWFuLCBhbGxvd0luc3BlY3RSYXdEYXRhPzogYm9vbGVhbiwgb25EaWFsb2dIaWRkZW4/OiBGdW5jdGlvbiwgb25EaWFsb2dTaG93aW5nPzogRnVuY3Rpb24sIG9uRGlhbG9nU2hvd24/OiBGdW5jdGlvbiwgb25HcmlkQ29udGVudFJlYWR5PzogRnVuY3Rpb24sIG9uR3JpZEluaXRpYWxpemVkPzogRnVuY3Rpb24gfSwgZGF0YVNvdXJjZVdpemFyZD86IHsgYWxsb3dDcmVhdGVOZXdKc29uQ29ubmVjdGlvbj86IGJvb2xlYW4sIGVuYWJsZUN1c3RvbVNxbD86IGJvb2xlYW4sIG9uQ3VzdG9taXplRGF0YVNvdXJjZVdpemFyZD86IEZ1bmN0aW9uLCB3aXphcmRTZXR0aW5ncz86IElEYXNoYm9hcmREYXRhU291cmNlV2l6YXJkU2V0dGluZ3MgfSwgZGVzaWduZXJUb29sYmFyPzogeyBvblByZXBhcmluZz86IEZ1bmN0aW9uIH0sIGl0ZW1CaW5kaW5nUGFuZWw/OiB7IG9uQ3VzdG9taXplRGF0YUl0ZW1Db250YWluZXJTZWN0aW9ucz86IEZ1bmN0aW9uIH0sIGl0ZW1PcHRpb25zUGFuZWw/OiB7IG9uQ3VzdG9taXplU2VjdGlvbnM/OiBGdW5jdGlvbiB9LCBtb2JpbGVMYXlvdXQ/OiB7IG1vYmlsZUxheW91dEVuYWJsZWQ/OiBzdHJpbmcgfSwgdmlld2VyQXBpPzogeyBvbkRhc2hib2FyZFRpdGxlVG9vbGJhclVwZGF0ZWQ/OiBGdW5jdGlvbiwgb25JdGVtQWN0aW9uQXZhaWxhYmlsaXR5Q2hhbmdlZD86IEZ1bmN0aW9uLCBvbkl0ZW1DYXB0aW9uVG9vbGJhclVwZGF0ZWQ/OiBGdW5jdGlvbiwgb25JdGVtQ2xpY2s/OiBGdW5jdGlvbiwgb25JdGVtRHJpbGxEb3duU3RhdGVDaGFuZ2VkPzogRnVuY3Rpb24sIG9uSXRlbUVsZW1lbnRDdXN0b21Db2xvcj86IEZ1bmN0aW9uLCBvbkl0ZW1NYXN0ZXJGaWx0ZXJTdGF0ZUNoYW5nZWQ/OiBGdW5jdGlvbiwgb25JdGVtU2VsZWN0aW9uQ2hhbmdlZD86IEZ1bmN0aW9uLCBvbkl0ZW1WaXN1YWxJbnRlcmFjdGl2aXR5PzogRnVuY3Rpb24sIG9uSXRlbVdpZGdldENyZWF0ZWQ/OiBGdW5jdGlvbiwgb25JdGVtV2lkZ2V0T3B0aW9uc1ByZXBhcmVkPzogRnVuY3Rpb24sIG9uSXRlbVdpZGdldFVwZGF0ZWQ/OiBGdW5jdGlvbiwgb25JdGVtV2lkZ2V0VXBkYXRpbmc/OiBGdW5jdGlvbiwgb25TZWxlY3RlZFRhYlBhZ2VDaGFuZ2VkPzogRnVuY3Rpb24gfSB9KSB7XG4gICAgICAgIHRoaXMuX3NldE9wdGlvbignZXh0ZW5zaW9ucycsIHZhbHVlKTtcbiAgICB9XG5cblxuICAgIC8qKlxuICAgICAqIFtkZXNjcjpkeERhc2hib2FyZENvbnRyb2xPcHRpb25zLmZldGNoUmVtb3RlU2VydmljZV1cbiAgICBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGdldCBmZXRjaFJlbW90ZVNlcnZpY2UoKTogeyBiZWZvcmVTZW5kPzogRnVuY3Rpb24sIGhlYWRlcnM/OiBhbnkgfSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9nZXRPcHRpb24oJ2ZldGNoUmVtb3RlU2VydmljZScpO1xuICAgIH1cbiAgICBzZXQgZmV0Y2hSZW1vdGVTZXJ2aWNlKHZhbHVlOiB7IGJlZm9yZVNlbmQ/OiBGdW5jdGlvbiwgaGVhZGVycz86IGFueSB9KSB7XG4gICAgICAgIHRoaXMuX3NldE9wdGlvbignZmV0Y2hSZW1vdGVTZXJ2aWNlJywgdmFsdWUpO1xuICAgIH1cblxuXG4gICAgLyoqXG4gICAgICogW2Rlc2NyOmR4RGFzaGJvYXJkQ29udHJvbE9wdGlvbnMuaW5pdGlhbERhc2hib2FyZElkXVxuICAgIFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGluaXRpYWxEYXNoYm9hcmRJZCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0T3B0aW9uKCdpbml0aWFsRGFzaGJvYXJkSWQnKTtcbiAgICB9XG4gICAgc2V0IGluaXRpYWxEYXNoYm9hcmRJZCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX3NldE9wdGlvbignaW5pdGlhbERhc2hib2FyZElkJywgdmFsdWUpO1xuICAgIH1cblxuXG4gICAgLyoqXG4gICAgICogW2Rlc2NyOmR4RGFzaGJvYXJkQ29udHJvbE9wdGlvbnMuaW5pdGlhbERhc2hib2FyZFN0YXRlXVxuICAgIFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGluaXRpYWxEYXNoYm9hcmRTdGF0ZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0T3B0aW9uKCdpbml0aWFsRGFzaGJvYXJkU3RhdGUnKTtcbiAgICB9XG4gICAgc2V0IGluaXRpYWxEYXNoYm9hcmRTdGF0ZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX3NldE9wdGlvbignaW5pdGlhbERhc2hib2FyZFN0YXRlJywgdmFsdWUpO1xuICAgIH1cblxuXG4gICAgLyoqXG4gICAgICogW2Rlc2NyOmR4RGFzaGJvYXJkQ29udHJvbE9wdGlvbnMubGltaXRWaXNpYmxlRGF0YU1vZGVdXG4gICAgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBnZXQgbGltaXRWaXNpYmxlRGF0YU1vZGUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldE9wdGlvbignbGltaXRWaXNpYmxlRGF0YU1vZGUnKTtcbiAgICB9XG4gICAgc2V0IGxpbWl0VmlzaWJsZURhdGFNb2RlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fc2V0T3B0aW9uKCdsaW1pdFZpc2libGVEYXRhTW9kZScsIHZhbHVlKTtcbiAgICB9XG5cblxuICAgIC8qKlxuICAgICAqIFtkZXNjcjpkeERhc2hib2FyZENvbnRyb2xPcHRpb25zLmxvYWREZWZhdWx0RGFzaGJvYXJkXVxuICAgIFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGxvYWREZWZhdWx0RGFzaGJvYXJkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0T3B0aW9uKCdsb2FkRGVmYXVsdERhc2hib2FyZCcpO1xuICAgIH1cbiAgICBzZXQgbG9hZERlZmF1bHREYXNoYm9hcmQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fc2V0T3B0aW9uKCdsb2FkRGVmYXVsdERhc2hib2FyZCcsIHZhbHVlKTtcbiAgICB9XG5cblxuICAgIC8qKlxuICAgICAqIFtkZXNjcjpkeERhc2hib2FyZENvbnRyb2xPcHRpb25zLm5vbmNlXVxuICAgIFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IG5vbmNlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9nZXRPcHRpb24oJ25vbmNlJyk7XG4gICAgfVxuICAgIHNldCBub25jZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX3NldE9wdGlvbignbm9uY2UnLCB2YWx1ZSk7XG4gICAgfVxuXG5cbiAgICAvKipcbiAgICAgKiBbZGVzY3I6ZHhEYXNoYm9hcmRDb250cm9sT3B0aW9ucy5yZXNpemVCeVRpbWVyXVxuICAgIFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IHJlc2l6ZUJ5VGltZXIoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9nZXRPcHRpb24oJ3Jlc2l6ZUJ5VGltZXInKTtcbiAgICB9XG4gICAgc2V0IHJlc2l6ZUJ5VGltZXIodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fc2V0T3B0aW9uKCdyZXNpemVCeVRpbWVyJywgdmFsdWUpO1xuICAgIH1cblxuXG4gICAgLyoqXG4gICAgICogW2Rlc2NyOmR4RGFzaGJvYXJkQ29udHJvbE9wdGlvbnMuc2hvd0NvbmZpcm1hdGlvbk9uQnJvd3NlckNsb3NpbmddXG4gICAgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBnZXQgc2hvd0NvbmZpcm1hdGlvbk9uQnJvd3NlckNsb3NpbmcoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9nZXRPcHRpb24oJ3Nob3dDb25maXJtYXRpb25PbkJyb3dzZXJDbG9zaW5nJyk7XG4gICAgfVxuICAgIHNldCBzaG93Q29uZmlybWF0aW9uT25Ccm93c2VyQ2xvc2luZyh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9zZXRPcHRpb24oJ3Nob3dDb25maXJtYXRpb25PbkJyb3dzZXJDbG9zaW5nJywgdmFsdWUpO1xuICAgIH1cblxuXG4gICAgLyoqXG4gICAgICogW2Rlc2NyOmR4RGFzaGJvYXJkQ29udHJvbE9wdGlvbnMudXNlTmV1dHJhbEZpbHRlck1vZGVdXG4gICAgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBnZXQgdXNlTmV1dHJhbEZpbHRlck1vZGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9nZXRPcHRpb24oJ3VzZU5ldXRyYWxGaWx0ZXJNb2RlJyk7XG4gICAgfVxuICAgIHNldCB1c2VOZXV0cmFsRmlsdGVyTW9kZSh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9zZXRPcHRpb24oJ3VzZU5ldXRyYWxGaWx0ZXJNb2RlJywgdmFsdWUpO1xuICAgIH1cblxuXG4gICAgLyoqXG4gICAgICogW2Rlc2NyOmR4RGFzaGJvYXJkQ29udHJvbE9wdGlvbnMud29ya2luZ01vZGVdXG4gICAgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBnZXQgd29ya2luZ01vZGUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldE9wdGlvbignd29ya2luZ01vZGUnKTtcbiAgICB9XG4gICAgc2V0IHdvcmtpbmdNb2RlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fc2V0T3B0aW9uKCd3b3JraW5nTW9kZScsIHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICBcbiAgICAgKiBbZGVzY3I6ZHhEYXNoYm9hcmRDb250cm9sT3B0aW9ucy5vbkJlZm9yZVJlbmRlcl1cbiAgICBcbiAgICBcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgb25CZWZvcmVSZW5kZXI6IEV2ZW50RW1pdHRlcjxhbnk+O1xuXG4gICAgLyoqXG4gICAgXG4gICAgICogW2Rlc2NyOmR4RGFzaGJvYXJkQ29udHJvbE9wdGlvbnMub25EYXNoYm9hcmRCZWdpblVwZGF0ZV1cbiAgICBcbiAgICBcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgb25EYXNoYm9hcmRCZWdpblVwZGF0ZTogRXZlbnRFbWl0dGVyPGFueT47XG5cbiAgICAvKipcbiAgICBcbiAgICAgKiBbZGVzY3I6ZHhEYXNoYm9hcmRDb250cm9sT3B0aW9ucy5vbkRhc2hib2FyZEVuZFVwZGF0ZV1cbiAgICBcbiAgICBcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgb25EYXNoYm9hcmRFbmRVcGRhdGU6IEV2ZW50RW1pdHRlcjxhbnk+O1xuXG4gICAgLyoqXG4gICAgXG4gICAgICogW2Rlc2NyOmR4RGFzaGJvYXJkQ29udHJvbE9wdGlvbnMub25EYXNoYm9hcmRJbml0aWFsaXplZF1cbiAgICBcbiAgICBcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgb25EYXNoYm9hcmRJbml0aWFsaXplZDogRXZlbnRFbWl0dGVyPGFueT47XG5cbiAgICAvKipcbiAgICBcbiAgICAgKiBbZGVzY3I6ZHhEYXNoYm9hcmRDb250cm9sT3B0aW9ucy5vbkRhc2hib2FyZEluaXRpYWxpemluZ11cbiAgICBcbiAgICBcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgb25EYXNoYm9hcmRJbml0aWFsaXppbmc6IEV2ZW50RW1pdHRlcjxhbnk+O1xuXG4gICAgLyoqXG4gICAgXG4gICAgICogW2Rlc2NyOmR4RGFzaGJvYXJkQ29udHJvbE9wdGlvbnMub25EYXNoYm9hcmRTdGF0ZUNoYW5nZWRdXG4gICAgXG4gICAgXG4gICAgICovXG4gICAgQE91dHB1dCgpIG9uRGFzaGJvYXJkU3RhdGVDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8YW55PjtcblxuICAgIC8qKlxuICAgIFxuICAgICAqIFtkZXNjcjpkeERhc2hib2FyZENvbnRyb2xPcHRpb25zLm9uSW5pdGlhbGl6aW5nXVxuICAgIFxuICAgIFxuICAgICAqL1xuICAgIEBPdXRwdXQoKSBvbkluaXRpYWxpemluZzogRXZlbnRFbWl0dGVyPGFueT47XG5cbiAgICAvKipcbiAgICBcbiAgICAgKiBbZGVzY3I6ZHhEYXNoYm9hcmRDb250cm9sT3B0aW9ucy5vbkl0ZW1CZWdpblVwZGF0ZV1cbiAgICBcbiAgICBcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgb25JdGVtQmVnaW5VcGRhdGU6IEV2ZW50RW1pdHRlcjxhbnk+O1xuXG4gICAgLyoqXG4gICAgXG4gICAgICogW2Rlc2NyOmR4RGFzaGJvYXJkQ29udHJvbE9wdGlvbnMub25JdGVtRW5kVXBkYXRlXVxuICAgIFxuICAgIFxuICAgICAqL1xuICAgIEBPdXRwdXQoKSBvbkl0ZW1FbmRVcGRhdGU6IEV2ZW50RW1pdHRlcjxhbnk+O1xuXG4gICAgLyoqXG4gICAgXG4gICAgICogW2Rlc2NyOmR4RGFzaGJvYXJkQ29udHJvbE9wdGlvbnMub25PcHRpb25DaGFuZ2VkXVxuICAgIFxuICAgIFxuICAgICAqL1xuICAgIEBPdXRwdXQoKSBvbk9wdGlvbkNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxhbnk+O1xuXG4gICAgLyoqXG4gICAgXG4gICAgICogVGhpcyBtZW1iZXIgc3VwcG9ydHMgdGhlIGludGVybmFsIGluZnJhc3RydWN0dXJlIGFuZCBpcyBub3QgaW50ZW5kZWQgdG8gYmUgdXNlZCBkaXJlY3RseSBmcm9tIHlvdXIgY29kZS5cbiAgICBcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgYWpheFJlbW90ZVNlcnZpY2VDaGFuZ2U6IEV2ZW50RW1pdHRlcjx7IGJlZm9yZVNlbmQ/OiBGdW5jdGlvbiwgY29tcGxldGU/OiBGdW5jdGlvbiwgaGVhZGVycz86IGFueSB9PjtcblxuICAgIC8qKlxuICAgIFxuICAgICAqIFRoaXMgbWVtYmVyIHN1cHBvcnRzIHRoZSBpbnRlcm5hbCBpbmZyYXN0cnVjdHVyZSBhbmQgaXMgbm90IGludGVuZGVkIHRvIGJlIHVzZWQgZGlyZWN0bHkgZnJvbSB5b3VyIGNvZGUuXG4gICAgXG4gICAgICovXG4gICAgQE91dHB1dCgpIGFsbG93TWF4aW1pemVJdGVtc0NoYW5nZTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+O1xuXG4gICAgLyoqXG4gICAgXG4gICAgICogVGhpcyBtZW1iZXIgc3VwcG9ydHMgdGhlIGludGVybmFsIGluZnJhc3RydWN0dXJlIGFuZCBpcyBub3QgaW50ZW5kZWQgdG8gYmUgdXNlZCBkaXJlY3RseSBmcm9tIHlvdXIgY29kZS5cbiAgICBcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgZGFzaGJvYXJkSWRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxzdHJpbmc+O1xuXG4gICAgLyoqXG4gICAgXG4gICAgICogVGhpcyBtZW1iZXIgc3VwcG9ydHMgdGhlIGludGVybmFsIGluZnJhc3RydWN0dXJlIGFuZCBpcyBub3QgaW50ZW5kZWQgdG8gYmUgdXNlZCBkaXJlY3RseSBmcm9tIHlvdXIgY29kZS5cbiAgICBcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgZGF0YVJlcXVlc3RPcHRpb25zQ2hhbmdlOiBFdmVudEVtaXR0ZXI8eyBpdGVtRGF0YUxvYWRpbmdNb2RlPzogc3RyaW5nLCBpdGVtRGF0YVJlcXVlc3RNb2RlPzogc3RyaW5nIH0+O1xuXG4gICAgLyoqXG4gICAgXG4gICAgICogVGhpcyBtZW1iZXIgc3VwcG9ydHMgdGhlIGludGVybmFsIGluZnJhc3RydWN0dXJlIGFuZCBpcyBub3QgaW50ZW5kZWQgdG8gYmUgdXNlZCBkaXJlY3RseSBmcm9tIHlvdXIgY29kZS5cbiAgICBcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgZW5jb2RlSHRtbENoYW5nZTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+O1xuXG4gICAgLyoqXG4gICAgXG4gICAgICogVGhpcyBtZW1iZXIgc3VwcG9ydHMgdGhlIGludGVybmFsIGluZnJhc3RydWN0dXJlIGFuZCBpcyBub3QgaW50ZW5kZWQgdG8gYmUgdXNlZCBkaXJlY3RseSBmcm9tIHlvdXIgY29kZS5cbiAgICBcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgZW5kcG9pbnRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxzdHJpbmc+O1xuXG4gICAgLyoqXG4gICAgXG4gICAgICogVGhpcyBtZW1iZXIgc3VwcG9ydHMgdGhlIGludGVybmFsIGluZnJhc3RydWN0dXJlIGFuZCBpcyBub3QgaW50ZW5kZWQgdG8gYmUgdXNlZCBkaXJlY3RseSBmcm9tIHlvdXIgY29kZS5cbiAgICBcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgZXh0ZW5zaW9uc0NoYW5nZTogRXZlbnRFbWl0dGVyPHsgY2hhcnRJbmRpY2F0b3JzPzogeyBjdXN0b21JbmRpY2F0b3JUeXBlcz86IGFueSB9LCBkYXNoYm9hcmRFeHBvcnQ/OiB7IGFsbG93RXhwb3J0RGFzaGJvYXJkPzogYm9vbGVhbiwgYWxsb3dFeHBvcnREYXNoYm9hcmRJdGVtcz86IGJvb2xlYW4sIG9uRXhwb3J0RGlhbG9nSGlkZGVuPzogRnVuY3Rpb24sIG9uRXhwb3J0RGlhbG9nU2hvd2luZz86IEZ1bmN0aW9uLCBvbkV4cG9ydERpYWxvZ1Nob3duPzogRnVuY3Rpb24gfSwgZGFzaGJvYXJkUGFyYW1ldGVyRGlhbG9nPzogeyBvbkR5bmFtaWNMb29rVXBWYWx1ZXNMb2FkZWQ/OiBGdW5jdGlvbiwgb25IaWRkZW4/OiBGdW5jdGlvbiwgb25TaG93aW5nPzogRnVuY3Rpb24sIG9uU2hvd24/OiBGdW5jdGlvbiB9LCBkYXRhSW5zcGVjdG9yPzogeyBhbGxvd0luc3BlY3RBZ2dyZWdhdGVkRGF0YT86IGJvb2xlYW4sIGFsbG93SW5zcGVjdFJhd0RhdGE/OiBib29sZWFuLCBvbkRpYWxvZ0hpZGRlbj86IEZ1bmN0aW9uLCBvbkRpYWxvZ1Nob3dpbmc/OiBGdW5jdGlvbiwgb25EaWFsb2dTaG93bj86IEZ1bmN0aW9uLCBvbkdyaWRDb250ZW50UmVhZHk/OiBGdW5jdGlvbiwgb25HcmlkSW5pdGlhbGl6ZWQ/OiBGdW5jdGlvbiB9LCBkYXRhU291cmNlV2l6YXJkPzogeyBhbGxvd0NyZWF0ZU5ld0pzb25Db25uZWN0aW9uPzogYm9vbGVhbiwgZW5hYmxlQ3VzdG9tU3FsPzogYm9vbGVhbiwgb25DdXN0b21pemVEYXRhU291cmNlV2l6YXJkPzogRnVuY3Rpb24sIHdpemFyZFNldHRpbmdzPzogSURhc2hib2FyZERhdGFTb3VyY2VXaXphcmRTZXR0aW5ncyB9LCBkZXNpZ25lclRvb2xiYXI/OiB7IG9uUHJlcGFyaW5nPzogRnVuY3Rpb24gfSwgaXRlbUJpbmRpbmdQYW5lbD86IHsgb25DdXN0b21pemVEYXRhSXRlbUNvbnRhaW5lclNlY3Rpb25zPzogRnVuY3Rpb24gfSwgaXRlbU9wdGlvbnNQYW5lbD86IHsgb25DdXN0b21pemVTZWN0aW9ucz86IEZ1bmN0aW9uIH0sIG1vYmlsZUxheW91dD86IHsgbW9iaWxlTGF5b3V0RW5hYmxlZD86IHN0cmluZyB9LCB2aWV3ZXJBcGk/OiB7IG9uRGFzaGJvYXJkVGl0bGVUb29sYmFyVXBkYXRlZD86IEZ1bmN0aW9uLCBvbkl0ZW1BY3Rpb25BdmFpbGFiaWxpdHlDaGFuZ2VkPzogRnVuY3Rpb24sIG9uSXRlbUNhcHRpb25Ub29sYmFyVXBkYXRlZD86IEZ1bmN0aW9uLCBvbkl0ZW1DbGljaz86IEZ1bmN0aW9uLCBvbkl0ZW1EcmlsbERvd25TdGF0ZUNoYW5nZWQ/OiBGdW5jdGlvbiwgb25JdGVtRWxlbWVudEN1c3RvbUNvbG9yPzogRnVuY3Rpb24sIG9uSXRlbU1hc3RlckZpbHRlclN0YXRlQ2hhbmdlZD86IEZ1bmN0aW9uLCBvbkl0ZW1TZWxlY3Rpb25DaGFuZ2VkPzogRnVuY3Rpb24sIG9uSXRlbVZpc3VhbEludGVyYWN0aXZpdHk/OiBGdW5jdGlvbiwgb25JdGVtV2lkZ2V0Q3JlYXRlZD86IEZ1bmN0aW9uLCBvbkl0ZW1XaWRnZXRPcHRpb25zUHJlcGFyZWQ/OiBGdW5jdGlvbiwgb25JdGVtV2lkZ2V0VXBkYXRlZD86IEZ1bmN0aW9uLCBvbkl0ZW1XaWRnZXRVcGRhdGluZz86IEZ1bmN0aW9uLCBvblNlbGVjdGVkVGFiUGFnZUNoYW5nZWQ/OiBGdW5jdGlvbiB9IH0+O1xuXG4gICAgLyoqXG4gICAgXG4gICAgICogVGhpcyBtZW1iZXIgc3VwcG9ydHMgdGhlIGludGVybmFsIGluZnJhc3RydWN0dXJlIGFuZCBpcyBub3QgaW50ZW5kZWQgdG8gYmUgdXNlZCBkaXJlY3RseSBmcm9tIHlvdXIgY29kZS5cbiAgICBcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgZmV0Y2hSZW1vdGVTZXJ2aWNlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8eyBiZWZvcmVTZW5kPzogRnVuY3Rpb24sIGhlYWRlcnM/OiBhbnkgfT47XG5cbiAgICAvKipcbiAgICBcbiAgICAgKiBUaGlzIG1lbWJlciBzdXBwb3J0cyB0aGUgaW50ZXJuYWwgaW5mcmFzdHJ1Y3R1cmUgYW5kIGlzIG5vdCBpbnRlbmRlZCB0byBiZSB1c2VkIGRpcmVjdGx5IGZyb20geW91ciBjb2RlLlxuICAgIFxuICAgICAqL1xuICAgIEBPdXRwdXQoKSBpbml0aWFsRGFzaGJvYXJkSWRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxzdHJpbmc+O1xuXG4gICAgLyoqXG4gICAgXG4gICAgICogVGhpcyBtZW1iZXIgc3VwcG9ydHMgdGhlIGludGVybmFsIGluZnJhc3RydWN0dXJlIGFuZCBpcyBub3QgaW50ZW5kZWQgdG8gYmUgdXNlZCBkaXJlY3RseSBmcm9tIHlvdXIgY29kZS5cbiAgICBcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgaW5pdGlhbERhc2hib2FyZFN0YXRlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8c3RyaW5nPjtcblxuICAgIC8qKlxuICAgIFxuICAgICAqIFRoaXMgbWVtYmVyIHN1cHBvcnRzIHRoZSBpbnRlcm5hbCBpbmZyYXN0cnVjdHVyZSBhbmQgaXMgbm90IGludGVuZGVkIHRvIGJlIHVzZWQgZGlyZWN0bHkgZnJvbSB5b3VyIGNvZGUuXG4gICAgXG4gICAgICovXG4gICAgQE91dHB1dCgpIGxpbWl0VmlzaWJsZURhdGFNb2RlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8c3RyaW5nPjtcblxuICAgIC8qKlxuICAgIFxuICAgICAqIFRoaXMgbWVtYmVyIHN1cHBvcnRzIHRoZSBpbnRlcm5hbCBpbmZyYXN0cnVjdHVyZSBhbmQgaXMgbm90IGludGVuZGVkIHRvIGJlIHVzZWQgZGlyZWN0bHkgZnJvbSB5b3VyIGNvZGUuXG4gICAgXG4gICAgICovXG4gICAgQE91dHB1dCgpIGxvYWREZWZhdWx0RGFzaGJvYXJkQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj47XG5cbiAgICAvKipcbiAgICBcbiAgICAgKiBUaGlzIG1lbWJlciBzdXBwb3J0cyB0aGUgaW50ZXJuYWwgaW5mcmFzdHJ1Y3R1cmUgYW5kIGlzIG5vdCBpbnRlbmRlZCB0byBiZSB1c2VkIGRpcmVjdGx5IGZyb20geW91ciBjb2RlLlxuICAgIFxuICAgICAqL1xuICAgIEBPdXRwdXQoKSBub25jZUNoYW5nZTogRXZlbnRFbWl0dGVyPHN0cmluZz47XG5cbiAgICAvKipcbiAgICBcbiAgICAgKiBUaGlzIG1lbWJlciBzdXBwb3J0cyB0aGUgaW50ZXJuYWwgaW5mcmFzdHJ1Y3R1cmUgYW5kIGlzIG5vdCBpbnRlbmRlZCB0byBiZSB1c2VkIGRpcmVjdGx5IGZyb20geW91ciBjb2RlLlxuICAgIFxuICAgICAqL1xuICAgIEBPdXRwdXQoKSByZXNpemVCeVRpbWVyQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj47XG5cbiAgICAvKipcbiAgICBcbiAgICAgKiBUaGlzIG1lbWJlciBzdXBwb3J0cyB0aGUgaW50ZXJuYWwgaW5mcmFzdHJ1Y3R1cmUgYW5kIGlzIG5vdCBpbnRlbmRlZCB0byBiZSB1c2VkIGRpcmVjdGx5IGZyb20geW91ciBjb2RlLlxuICAgIFxuICAgICAqL1xuICAgIEBPdXRwdXQoKSBzaG93Q29uZmlybWF0aW9uT25Ccm93c2VyQ2xvc2luZ0NoYW5nZTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+O1xuXG4gICAgLyoqXG4gICAgXG4gICAgICogVGhpcyBtZW1iZXIgc3VwcG9ydHMgdGhlIGludGVybmFsIGluZnJhc3RydWN0dXJlIGFuZCBpcyBub3QgaW50ZW5kZWQgdG8gYmUgdXNlZCBkaXJlY3RseSBmcm9tIHlvdXIgY29kZS5cbiAgICBcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgdXNlTmV1dHJhbEZpbHRlck1vZGVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxib29sZWFuPjtcblxuICAgIC8qKlxuICAgIFxuICAgICAqIFRoaXMgbWVtYmVyIHN1cHBvcnRzIHRoZSBpbnRlcm5hbCBpbmZyYXN0cnVjdHVyZSBhbmQgaXMgbm90IGludGVuZGVkIHRvIGJlIHVzZWQgZGlyZWN0bHkgZnJvbSB5b3VyIGNvZGUuXG4gICAgXG4gICAgICovXG4gICAgQE91dHB1dCgpIHdvcmtpbmdNb2RlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8c3RyaW5nPjtcblxuXG5cblxuXG5cblxuICAgIGNvbnN0cnVjdG9yKGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsIG5nWm9uZTogTmdab25lLCB0ZW1wbGF0ZUhvc3Q6IER4VGVtcGxhdGVIb3N0LFxuICAgICAgICAgICAgX3dhdGNoZXJIZWxwZXI6IFdhdGNoZXJIZWxwZXIsXG4gICAgICAgICAgICBvcHRpb25Ib3N0OiBOZXN0ZWRPcHRpb25Ib3N0LFxuICAgICAgICAgICAgdHJhbnNmZXJTdGF0ZTogVHJhbnNmZXJTdGF0ZSxcbiAgICAgICAgICAgIEBJbmplY3QoUExBVEZPUk1fSUQpIHBsYXRmb3JtSWQ6IGFueSkge1xuXG4gICAgICAgIHN1cGVyKGVsZW1lbnRSZWYsIG5nWm9uZSwgdGVtcGxhdGVIb3N0LCBfd2F0Y2hlckhlbHBlciwgdHJhbnNmZXJTdGF0ZSwgcGxhdGZvcm1JZCk7XG5cbiAgICAgICAgdGhpcy5fY3JlYXRlRXZlbnRFbWl0dGVycyhbXG4gICAgICAgICAgICB7IHN1YnNjcmliZTogJ2JlZm9yZVJlbmRlcicsIGVtaXQ6ICdvbkJlZm9yZVJlbmRlcicgfSxcbiAgICAgICAgICAgIHsgc3Vic2NyaWJlOiAnZGFzaGJvYXJkQmVnaW5VcGRhdGUnLCBlbWl0OiAnb25EYXNoYm9hcmRCZWdpblVwZGF0ZScgfSxcbiAgICAgICAgICAgIHsgc3Vic2NyaWJlOiAnZGFzaGJvYXJkRW5kVXBkYXRlJywgZW1pdDogJ29uRGFzaGJvYXJkRW5kVXBkYXRlJyB9LFxuICAgICAgICAgICAgeyBzdWJzY3JpYmU6ICdkYXNoYm9hcmRJbml0aWFsaXplZCcsIGVtaXQ6ICdvbkRhc2hib2FyZEluaXRpYWxpemVkJyB9LFxuICAgICAgICAgICAgeyBzdWJzY3JpYmU6ICdkYXNoYm9hcmRJbml0aWFsaXppbmcnLCBlbWl0OiAnb25EYXNoYm9hcmRJbml0aWFsaXppbmcnIH0sXG4gICAgICAgICAgICB7IHN1YnNjcmliZTogJ2Rhc2hib2FyZFN0YXRlQ2hhbmdlZCcsIGVtaXQ6ICdvbkRhc2hib2FyZFN0YXRlQ2hhbmdlZCcgfSxcbiAgICAgICAgICAgIHsgc3Vic2NyaWJlOiAnaW5pdGlhbGl6aW5nJywgZW1pdDogJ29uSW5pdGlhbGl6aW5nJyB9LFxuICAgICAgICAgICAgeyBzdWJzY3JpYmU6ICdpdGVtQmVnaW5VcGRhdGUnLCBlbWl0OiAnb25JdGVtQmVnaW5VcGRhdGUnIH0sXG4gICAgICAgICAgICB7IHN1YnNjcmliZTogJ2l0ZW1FbmRVcGRhdGUnLCBlbWl0OiAnb25JdGVtRW5kVXBkYXRlJyB9LFxuICAgICAgICAgICAgeyBzdWJzY3JpYmU6ICdvcHRpb25DaGFuZ2VkJywgZW1pdDogJ29uT3B0aW9uQ2hhbmdlZCcgfSxcbiAgICAgICAgICAgIHsgZW1pdDogJ2FqYXhSZW1vdGVTZXJ2aWNlQ2hhbmdlJyB9LFxuICAgICAgICAgICAgeyBlbWl0OiAnYWxsb3dNYXhpbWl6ZUl0ZW1zQ2hhbmdlJyB9LFxuICAgICAgICAgICAgeyBlbWl0OiAnZGFzaGJvYXJkSWRDaGFuZ2UnIH0sXG4gICAgICAgICAgICB7IGVtaXQ6ICdkYXRhUmVxdWVzdE9wdGlvbnNDaGFuZ2UnIH0sXG4gICAgICAgICAgICB7IGVtaXQ6ICdlbmNvZGVIdG1sQ2hhbmdlJyB9LFxuICAgICAgICAgICAgeyBlbWl0OiAnZW5kcG9pbnRDaGFuZ2UnIH0sXG4gICAgICAgICAgICB7IGVtaXQ6ICdleHRlbnNpb25zQ2hhbmdlJyB9LFxuICAgICAgICAgICAgeyBlbWl0OiAnZmV0Y2hSZW1vdGVTZXJ2aWNlQ2hhbmdlJyB9LFxuICAgICAgICAgICAgeyBlbWl0OiAnaW5pdGlhbERhc2hib2FyZElkQ2hhbmdlJyB9LFxuICAgICAgICAgICAgeyBlbWl0OiAnaW5pdGlhbERhc2hib2FyZFN0YXRlQ2hhbmdlJyB9LFxuICAgICAgICAgICAgeyBlbWl0OiAnbGltaXRWaXNpYmxlRGF0YU1vZGVDaGFuZ2UnIH0sXG4gICAgICAgICAgICB7IGVtaXQ6ICdsb2FkRGVmYXVsdERhc2hib2FyZENoYW5nZScgfSxcbiAgICAgICAgICAgIHsgZW1pdDogJ25vbmNlQ2hhbmdlJyB9LFxuICAgICAgICAgICAgeyBlbWl0OiAncmVzaXplQnlUaW1lckNoYW5nZScgfSxcbiAgICAgICAgICAgIHsgZW1pdDogJ3Nob3dDb25maXJtYXRpb25PbkJyb3dzZXJDbG9zaW5nQ2hhbmdlJyB9LFxuICAgICAgICAgICAgeyBlbWl0OiAndXNlTmV1dHJhbEZpbHRlck1vZGVDaGFuZ2UnIH0sXG4gICAgICAgICAgICB7IGVtaXQ6ICd3b3JraW5nTW9kZUNoYW5nZScgfVxuICAgICAgICBdKTtcbiAgICAgICAgb3B0aW9uSG9zdC5zZXRIb3N0KHRoaXMpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfY3JlYXRlSW5zdGFuY2UoZWxlbWVudCwgb3B0aW9ucykge1xuXG4gICAgICAgIHJldHVybiBuZXcgRHhEYXNoYm9hcmRDb250cm9sKGVsZW1lbnQsIG9wdGlvbnMpO1xuICAgIH1cblxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMuX2Rlc3Ryb3lXaWRnZXQoKTtcbiAgICB9XG5cbn1cblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1xuICAgIER4b0FqYXhSZW1vdGVTZXJ2aWNlTW9kdWxlLFxuICAgIER4b0RhdGFSZXF1ZXN0T3B0aW9uc01vZHVsZSxcbiAgICBEeG9FeHRlbnNpb25zTW9kdWxlLFxuICAgIER4b0NoYXJ0SW5kaWNhdG9yc01vZHVsZSxcbiAgICBEeG9EYXNoYm9hcmRFeHBvcnRNb2R1bGUsXG4gICAgRHhvRGFzaGJvYXJkUGFyYW1ldGVyRGlhbG9nTW9kdWxlLFxuICAgIER4b0RhdGFJbnNwZWN0b3JNb2R1bGUsXG4gICAgRHhvRGF0YVNvdXJjZVdpemFyZE1vZHVsZSxcbiAgICBEeG9XaXphcmRTZXR0aW5nc01vZHVsZSxcbiAgICBEeG9EZXNpZ25lclRvb2xiYXJNb2R1bGUsXG4gICAgRHhvSXRlbUJpbmRpbmdQYW5lbE1vZHVsZSxcbiAgICBEeG9JdGVtT3B0aW9uc1BhbmVsTW9kdWxlLFxuICAgIER4b01vYmlsZUxheW91dE1vZHVsZSxcbiAgICBEeG9WaWV3ZXJBcGlNb2R1bGUsXG4gICAgRHhvRmV0Y2hSZW1vdGVTZXJ2aWNlTW9kdWxlLFxuICAgIER4SW50ZWdyYXRpb25Nb2R1bGUsXG4gICAgRHhUZW1wbGF0ZU1vZHVsZVxuICBdLFxuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBEeERhc2hib2FyZENvbnRyb2xDb21wb25lbnRcbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIER4RGFzaGJvYXJkQ29udHJvbENvbXBvbmVudCxcbiAgICBEeG9BamF4UmVtb3RlU2VydmljZU1vZHVsZSxcbiAgICBEeG9EYXRhUmVxdWVzdE9wdGlvbnNNb2R1bGUsXG4gICAgRHhvRXh0ZW5zaW9uc01vZHVsZSxcbiAgICBEeG9DaGFydEluZGljYXRvcnNNb2R1bGUsXG4gICAgRHhvRGFzaGJvYXJkRXhwb3J0TW9kdWxlLFxuICAgIER4b0Rhc2hib2FyZFBhcmFtZXRlckRpYWxvZ01vZHVsZSxcbiAgICBEeG9EYXRhSW5zcGVjdG9yTW9kdWxlLFxuICAgIER4b0RhdGFTb3VyY2VXaXphcmRNb2R1bGUsXG4gICAgRHhvV2l6YXJkU2V0dGluZ3NNb2R1bGUsXG4gICAgRHhvRGVzaWduZXJUb29sYmFyTW9kdWxlLFxuICAgIER4b0l0ZW1CaW5kaW5nUGFuZWxNb2R1bGUsXG4gICAgRHhvSXRlbU9wdGlvbnNQYW5lbE1vZHVsZSxcbiAgICBEeG9Nb2JpbGVMYXlvdXRNb2R1bGUsXG4gICAgRHhvVmlld2VyQXBpTW9kdWxlLFxuICAgIER4b0ZldGNoUmVtb3RlU2VydmljZU1vZHVsZSxcbiAgICBEeFRlbXBsYXRlTW9kdWxlXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgRHhEYXNoYm9hcmRDb250cm9sTW9kdWxlIHsgfVxuXG5cbiJdfQ==
1
+ import { Component, NgModule, PLATFORM_ID, Inject, Input, Output } from '@angular/core';
2
+ import DxDashboardControl from 'devexpress-dashboard/integration/index';
3
+ import { DxComponent, DxTemplateHost, DxIntegrationModule, DxTemplateModule, NestedOptionHost, WatcherHelper } from 'devextreme-angular/core';
4
+ import { DxoAjaxRemoteServiceModule } from 'devexpress-dashboard-angular/ui/nested';
5
+ import { DxoDataRequestOptionsModule } from 'devexpress-dashboard-angular/ui/nested';
6
+ import { DxoExtensionsModule } from 'devexpress-dashboard-angular/ui/nested';
7
+ import { DxoChartIndicatorsModule } from 'devexpress-dashboard-angular/ui/nested';
8
+ import { DxoDashboardExportModule } from 'devexpress-dashboard-angular/ui/nested';
9
+ import { DxoDashboardParameterDialogModule } from 'devexpress-dashboard-angular/ui/nested';
10
+ import { DxoDataInspectorModule } from 'devexpress-dashboard-angular/ui/nested';
11
+ import { DxoDataSourceWizardModule } from 'devexpress-dashboard-angular/ui/nested';
12
+ import { DxoWizardSettingsModule } from 'devexpress-dashboard-angular/ui/nested';
13
+ import { DxoDesignerToolbarModule } from 'devexpress-dashboard-angular/ui/nested';
14
+ import { DxoItemBindingPanelModule } from 'devexpress-dashboard-angular/ui/nested';
15
+ import { DxoItemOptionsPanelModule } from 'devexpress-dashboard-angular/ui/nested';
16
+ import { DxoMobileLayoutModule } from 'devexpress-dashboard-angular/ui/nested';
17
+ import { DxoViewerApiModule } from 'devexpress-dashboard-angular/ui/nested';
18
+ import { DxoFetchRemoteServiceModule } from 'devexpress-dashboard-angular/ui/nested';
19
+ import * as i0 from "@angular/core";
20
+ import * as i1 from "devextreme-angular/core";
21
+ import * as i2 from "@angular/platform-browser";
22
+ /**
23
+ * [descr:dxDashboardControl]
24
+
25
+ */
26
+ class DxDashboardControlComponent extends DxComponent {
27
+ instance = null;
28
+ /**
29
+ * [descr:dxDashboardControlOptions.ajaxRemoteService]
30
+
31
+ */
32
+ get ajaxRemoteService() {
33
+ return this._getOption('ajaxRemoteService');
34
+ }
35
+ set ajaxRemoteService(value) {
36
+ this._setOption('ajaxRemoteService', value);
37
+ }
38
+ /**
39
+ * [descr:dxDashboardControlOptions.allowMaximizeItems]
40
+
41
+ */
42
+ get allowMaximizeItems() {
43
+ return this._getOption('allowMaximizeItems');
44
+ }
45
+ set allowMaximizeItems(value) {
46
+ this._setOption('allowMaximizeItems', value);
47
+ }
48
+ /**
49
+ * [descr:dxDashboardControlOptions.dashboardId]
50
+
51
+ */
52
+ get dashboardId() {
53
+ return this._getOption('dashboardId');
54
+ }
55
+ set dashboardId(value) {
56
+ this._setOption('dashboardId', value);
57
+ }
58
+ /**
59
+ * [descr:dxDashboardControlOptions.dataRequestOptions]
60
+
61
+ */
62
+ get dataRequestOptions() {
63
+ return this._getOption('dataRequestOptions');
64
+ }
65
+ set dataRequestOptions(value) {
66
+ this._setOption('dataRequestOptions', value);
67
+ }
68
+ /**
69
+ * [descr:dxDashboardControlOptions.encodeHtml]
70
+
71
+ */
72
+ get encodeHtml() {
73
+ return this._getOption('encodeHtml');
74
+ }
75
+ set encodeHtml(value) {
76
+ this._setOption('encodeHtml', value);
77
+ }
78
+ /**
79
+ * [descr:dxDashboardControlOptions.endpoint]
80
+
81
+ */
82
+ get endpoint() {
83
+ return this._getOption('endpoint');
84
+ }
85
+ set endpoint(value) {
86
+ this._setOption('endpoint', value);
87
+ }
88
+ /**
89
+ * [descr:dxDashboardControlOptions.extensions]
90
+
91
+ */
92
+ get extensions() {
93
+ return this._getOption('extensions');
94
+ }
95
+ set extensions(value) {
96
+ this._setOption('extensions', value);
97
+ }
98
+ /**
99
+ * [descr:dxDashboardControlOptions.fetchRemoteService]
100
+
101
+ */
102
+ get fetchRemoteService() {
103
+ return this._getOption('fetchRemoteService');
104
+ }
105
+ set fetchRemoteService(value) {
106
+ this._setOption('fetchRemoteService', value);
107
+ }
108
+ /**
109
+ * [descr:dxDashboardControlOptions.initialDashboardId]
110
+
111
+ */
112
+ get initialDashboardId() {
113
+ return this._getOption('initialDashboardId');
114
+ }
115
+ set initialDashboardId(value) {
116
+ this._setOption('initialDashboardId', value);
117
+ }
118
+ /**
119
+ * [descr:dxDashboardControlOptions.initialDashboardState]
120
+
121
+ */
122
+ get initialDashboardState() {
123
+ return this._getOption('initialDashboardState');
124
+ }
125
+ set initialDashboardState(value) {
126
+ this._setOption('initialDashboardState', value);
127
+ }
128
+ /**
129
+ * [descr:dxDashboardControlOptions.limitVisibleDataMode]
130
+
131
+ */
132
+ get limitVisibleDataMode() {
133
+ return this._getOption('limitVisibleDataMode');
134
+ }
135
+ set limitVisibleDataMode(value) {
136
+ this._setOption('limitVisibleDataMode', value);
137
+ }
138
+ /**
139
+ * [descr:dxDashboardControlOptions.loadDefaultDashboard]
140
+
141
+ */
142
+ get loadDefaultDashboard() {
143
+ return this._getOption('loadDefaultDashboard');
144
+ }
145
+ set loadDefaultDashboard(value) {
146
+ this._setOption('loadDefaultDashboard', value);
147
+ }
148
+ /**
149
+ * [descr:dxDashboardControlOptions.nonce]
150
+
151
+ */
152
+ get nonce() {
153
+ return this._getOption('nonce');
154
+ }
155
+ set nonce(value) {
156
+ this._setOption('nonce', value);
157
+ }
158
+ /**
159
+ * [descr:dxDashboardControlOptions.resizeByTimer]
160
+
161
+ */
162
+ get resizeByTimer() {
163
+ return this._getOption('resizeByTimer');
164
+ }
165
+ set resizeByTimer(value) {
166
+ this._setOption('resizeByTimer', value);
167
+ }
168
+ /**
169
+ * [descr:dxDashboardControlOptions.showConfirmationOnBrowserClosing]
170
+
171
+ */
172
+ get showConfirmationOnBrowserClosing() {
173
+ return this._getOption('showConfirmationOnBrowserClosing');
174
+ }
175
+ set showConfirmationOnBrowserClosing(value) {
176
+ this._setOption('showConfirmationOnBrowserClosing', value);
177
+ }
178
+ /**
179
+ * [descr:dxDashboardControlOptions.useNeutralFilterMode]
180
+
181
+ */
182
+ get useNeutralFilterMode() {
183
+ return this._getOption('useNeutralFilterMode');
184
+ }
185
+ set useNeutralFilterMode(value) {
186
+ this._setOption('useNeutralFilterMode', value);
187
+ }
188
+ /**
189
+ * [descr:dxDashboardControlOptions.workingMode]
190
+
191
+ */
192
+ get workingMode() {
193
+ return this._getOption('workingMode');
194
+ }
195
+ set workingMode(value) {
196
+ this._setOption('workingMode', value);
197
+ }
198
+ /**
199
+
200
+ * [descr:dxDashboardControlOptions.onBeforeRender]
201
+
202
+
203
+ */
204
+ onBeforeRender;
205
+ /**
206
+
207
+ * [descr:dxDashboardControlOptions.onDashboardBeginUpdate]
208
+
209
+
210
+ */
211
+ onDashboardBeginUpdate;
212
+ /**
213
+
214
+ * [descr:dxDashboardControlOptions.onDashboardEndUpdate]
215
+
216
+
217
+ */
218
+ onDashboardEndUpdate;
219
+ /**
220
+
221
+ * [descr:dxDashboardControlOptions.onDashboardInitialized]
222
+
223
+
224
+ */
225
+ onDashboardInitialized;
226
+ /**
227
+
228
+ * [descr:dxDashboardControlOptions.onDashboardInitializing]
229
+
230
+
231
+ */
232
+ onDashboardInitializing;
233
+ /**
234
+
235
+ * [descr:dxDashboardControlOptions.onDashboardStateChanged]
236
+
237
+
238
+ */
239
+ onDashboardStateChanged;
240
+ /**
241
+
242
+ * [descr:dxDashboardControlOptions.onInitializing]
243
+
244
+
245
+ */
246
+ onInitializing;
247
+ /**
248
+
249
+ * [descr:dxDashboardControlOptions.onItemBeginUpdate]
250
+
251
+
252
+ */
253
+ onItemBeginUpdate;
254
+ /**
255
+
256
+ * [descr:dxDashboardControlOptions.onItemEndUpdate]
257
+
258
+
259
+ */
260
+ onItemEndUpdate;
261
+ /**
262
+
263
+ * [descr:dxDashboardControlOptions.onOptionChanged]
264
+
265
+
266
+ */
267
+ onOptionChanged;
268
+ /**
269
+
270
+ * This member supports the internal infrastructure and is not intended to be used directly from your code.
271
+
272
+ */
273
+ ajaxRemoteServiceChange;
274
+ /**
275
+
276
+ * This member supports the internal infrastructure and is not intended to be used directly from your code.
277
+
278
+ */
279
+ allowMaximizeItemsChange;
280
+ /**
281
+
282
+ * This member supports the internal infrastructure and is not intended to be used directly from your code.
283
+
284
+ */
285
+ dashboardIdChange;
286
+ /**
287
+
288
+ * This member supports the internal infrastructure and is not intended to be used directly from your code.
289
+
290
+ */
291
+ dataRequestOptionsChange;
292
+ /**
293
+
294
+ * This member supports the internal infrastructure and is not intended to be used directly from your code.
295
+
296
+ */
297
+ encodeHtmlChange;
298
+ /**
299
+
300
+ * This member supports the internal infrastructure and is not intended to be used directly from your code.
301
+
302
+ */
303
+ endpointChange;
304
+ /**
305
+
306
+ * This member supports the internal infrastructure and is not intended to be used directly from your code.
307
+
308
+ */
309
+ extensionsChange;
310
+ /**
311
+
312
+ * This member supports the internal infrastructure and is not intended to be used directly from your code.
313
+
314
+ */
315
+ fetchRemoteServiceChange;
316
+ /**
317
+
318
+ * This member supports the internal infrastructure and is not intended to be used directly from your code.
319
+
320
+ */
321
+ initialDashboardIdChange;
322
+ /**
323
+
324
+ * This member supports the internal infrastructure and is not intended to be used directly from your code.
325
+
326
+ */
327
+ initialDashboardStateChange;
328
+ /**
329
+
330
+ * This member supports the internal infrastructure and is not intended to be used directly from your code.
331
+
332
+ */
333
+ limitVisibleDataModeChange;
334
+ /**
335
+
336
+ * This member supports the internal infrastructure and is not intended to be used directly from your code.
337
+
338
+ */
339
+ loadDefaultDashboardChange;
340
+ /**
341
+
342
+ * This member supports the internal infrastructure and is not intended to be used directly from your code.
343
+
344
+ */
345
+ nonceChange;
346
+ /**
347
+
348
+ * This member supports the internal infrastructure and is not intended to be used directly from your code.
349
+
350
+ */
351
+ resizeByTimerChange;
352
+ /**
353
+
354
+ * This member supports the internal infrastructure and is not intended to be used directly from your code.
355
+
356
+ */
357
+ showConfirmationOnBrowserClosingChange;
358
+ /**
359
+
360
+ * This member supports the internal infrastructure and is not intended to be used directly from your code.
361
+
362
+ */
363
+ useNeutralFilterModeChange;
364
+ /**
365
+
366
+ * This member supports the internal infrastructure and is not intended to be used directly from your code.
367
+
368
+ */
369
+ workingModeChange;
370
+ constructor(elementRef, ngZone, templateHost, _watcherHelper, optionHost, transferState, platformId) {
371
+ super(elementRef, ngZone, templateHost, _watcherHelper, transferState, platformId);
372
+ this._createEventEmitters([
373
+ { subscribe: 'beforeRender', emit: 'onBeforeRender' },
374
+ { subscribe: 'dashboardBeginUpdate', emit: 'onDashboardBeginUpdate' },
375
+ { subscribe: 'dashboardEndUpdate', emit: 'onDashboardEndUpdate' },
376
+ { subscribe: 'dashboardInitialized', emit: 'onDashboardInitialized' },
377
+ { subscribe: 'dashboardInitializing', emit: 'onDashboardInitializing' },
378
+ { subscribe: 'dashboardStateChanged', emit: 'onDashboardStateChanged' },
379
+ { subscribe: 'initializing', emit: 'onInitializing' },
380
+ { subscribe: 'itemBeginUpdate', emit: 'onItemBeginUpdate' },
381
+ { subscribe: 'itemEndUpdate', emit: 'onItemEndUpdate' },
382
+ { subscribe: 'optionChanged', emit: 'onOptionChanged' },
383
+ { emit: 'ajaxRemoteServiceChange' },
384
+ { emit: 'allowMaximizeItemsChange' },
385
+ { emit: 'dashboardIdChange' },
386
+ { emit: 'dataRequestOptionsChange' },
387
+ { emit: 'encodeHtmlChange' },
388
+ { emit: 'endpointChange' },
389
+ { emit: 'extensionsChange' },
390
+ { emit: 'fetchRemoteServiceChange' },
391
+ { emit: 'initialDashboardIdChange' },
392
+ { emit: 'initialDashboardStateChange' },
393
+ { emit: 'limitVisibleDataModeChange' },
394
+ { emit: 'loadDefaultDashboardChange' },
395
+ { emit: 'nonceChange' },
396
+ { emit: 'resizeByTimerChange' },
397
+ { emit: 'showConfirmationOnBrowserClosingChange' },
398
+ { emit: 'useNeutralFilterModeChange' },
399
+ { emit: 'workingModeChange' }
400
+ ]);
401
+ optionHost.setHost(this);
402
+ }
403
+ _createInstance(element, options) {
404
+ return new DxDashboardControl(element, options);
405
+ }
406
+ ngOnDestroy() {
407
+ this._destroyWidget();
408
+ }
409
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DxDashboardControlComponent, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i1.DxTemplateHost }, { token: i1.WatcherHelper }, { token: i1.NestedOptionHost }, { token: i2.TransferState }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Component });
410
+ /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DxDashboardControlComponent, selector: "dx-dashboard-control", inputs: { ajaxRemoteService: "ajaxRemoteService", allowMaximizeItems: "allowMaximizeItems", dashboardId: "dashboardId", dataRequestOptions: "dataRequestOptions", encodeHtml: "encodeHtml", endpoint: "endpoint", extensions: "extensions", fetchRemoteService: "fetchRemoteService", initialDashboardId: "initialDashboardId", initialDashboardState: "initialDashboardState", limitVisibleDataMode: "limitVisibleDataMode", loadDefaultDashboard: "loadDefaultDashboard", nonce: "nonce", resizeByTimer: "resizeByTimer", showConfirmationOnBrowserClosing: "showConfirmationOnBrowserClosing", useNeutralFilterMode: "useNeutralFilterMode", workingMode: "workingMode" }, outputs: { onBeforeRender: "onBeforeRender", onDashboardBeginUpdate: "onDashboardBeginUpdate", onDashboardEndUpdate: "onDashboardEndUpdate", onDashboardInitialized: "onDashboardInitialized", onDashboardInitializing: "onDashboardInitializing", onDashboardStateChanged: "onDashboardStateChanged", onInitializing: "onInitializing", onItemBeginUpdate: "onItemBeginUpdate", onItemEndUpdate: "onItemEndUpdate", onOptionChanged: "onOptionChanged", ajaxRemoteServiceChange: "ajaxRemoteServiceChange", allowMaximizeItemsChange: "allowMaximizeItemsChange", dashboardIdChange: "dashboardIdChange", dataRequestOptionsChange: "dataRequestOptionsChange", encodeHtmlChange: "encodeHtmlChange", endpointChange: "endpointChange", extensionsChange: "extensionsChange", fetchRemoteServiceChange: "fetchRemoteServiceChange", initialDashboardIdChange: "initialDashboardIdChange", initialDashboardStateChange: "initialDashboardStateChange", limitVisibleDataModeChange: "limitVisibleDataModeChange", loadDefaultDashboardChange: "loadDefaultDashboardChange", nonceChange: "nonceChange", resizeByTimerChange: "resizeByTimerChange", showConfirmationOnBrowserClosingChange: "showConfirmationOnBrowserClosingChange", useNeutralFilterModeChange: "useNeutralFilterModeChange", workingModeChange: "workingModeChange" }, providers: [
411
+ DxTemplateHost,
412
+ WatcherHelper,
413
+ NestedOptionHost
414
+ ], usesInheritance: true, ngImport: i0, template: '', isInline: true });
415
+ }
416
+ export { DxDashboardControlComponent };
417
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DxDashboardControlComponent, decorators: [{
418
+ type: Component,
419
+ args: [{
420
+ selector: 'dx-dashboard-control',
421
+ template: '',
422
+ providers: [
423
+ DxTemplateHost,
424
+ WatcherHelper,
425
+ NestedOptionHost
426
+ ]
427
+ }]
428
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i1.DxTemplateHost }, { type: i1.WatcherHelper }, { type: i1.NestedOptionHost }, { type: i2.TransferState }, { type: undefined, decorators: [{
429
+ type: Inject,
430
+ args: [PLATFORM_ID]
431
+ }] }]; }, propDecorators: { ajaxRemoteService: [{
432
+ type: Input
433
+ }], allowMaximizeItems: [{
434
+ type: Input
435
+ }], dashboardId: [{
436
+ type: Input
437
+ }], dataRequestOptions: [{
438
+ type: Input
439
+ }], encodeHtml: [{
440
+ type: Input
441
+ }], endpoint: [{
442
+ type: Input
443
+ }], extensions: [{
444
+ type: Input
445
+ }], fetchRemoteService: [{
446
+ type: Input
447
+ }], initialDashboardId: [{
448
+ type: Input
449
+ }], initialDashboardState: [{
450
+ type: Input
451
+ }], limitVisibleDataMode: [{
452
+ type: Input
453
+ }], loadDefaultDashboard: [{
454
+ type: Input
455
+ }], nonce: [{
456
+ type: Input
457
+ }], resizeByTimer: [{
458
+ type: Input
459
+ }], showConfirmationOnBrowserClosing: [{
460
+ type: Input
461
+ }], useNeutralFilterMode: [{
462
+ type: Input
463
+ }], workingMode: [{
464
+ type: Input
465
+ }], onBeforeRender: [{
466
+ type: Output
467
+ }], onDashboardBeginUpdate: [{
468
+ type: Output
469
+ }], onDashboardEndUpdate: [{
470
+ type: Output
471
+ }], onDashboardInitialized: [{
472
+ type: Output
473
+ }], onDashboardInitializing: [{
474
+ type: Output
475
+ }], onDashboardStateChanged: [{
476
+ type: Output
477
+ }], onInitializing: [{
478
+ type: Output
479
+ }], onItemBeginUpdate: [{
480
+ type: Output
481
+ }], onItemEndUpdate: [{
482
+ type: Output
483
+ }], onOptionChanged: [{
484
+ type: Output
485
+ }], ajaxRemoteServiceChange: [{
486
+ type: Output
487
+ }], allowMaximizeItemsChange: [{
488
+ type: Output
489
+ }], dashboardIdChange: [{
490
+ type: Output
491
+ }], dataRequestOptionsChange: [{
492
+ type: Output
493
+ }], encodeHtmlChange: [{
494
+ type: Output
495
+ }], endpointChange: [{
496
+ type: Output
497
+ }], extensionsChange: [{
498
+ type: Output
499
+ }], fetchRemoteServiceChange: [{
500
+ type: Output
501
+ }], initialDashboardIdChange: [{
502
+ type: Output
503
+ }], initialDashboardStateChange: [{
504
+ type: Output
505
+ }], limitVisibleDataModeChange: [{
506
+ type: Output
507
+ }], loadDefaultDashboardChange: [{
508
+ type: Output
509
+ }], nonceChange: [{
510
+ type: Output
511
+ }], resizeByTimerChange: [{
512
+ type: Output
513
+ }], showConfirmationOnBrowserClosingChange: [{
514
+ type: Output
515
+ }], useNeutralFilterModeChange: [{
516
+ type: Output
517
+ }], workingModeChange: [{
518
+ type: Output
519
+ }] } });
520
+ class DxDashboardControlModule {
521
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DxDashboardControlModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
522
+ /** @nocollapse */ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: DxDashboardControlModule, declarations: [DxDashboardControlComponent], imports: [DxoAjaxRemoteServiceModule,
523
+ DxoDataRequestOptionsModule,
524
+ DxoExtensionsModule,
525
+ DxoChartIndicatorsModule,
526
+ DxoDashboardExportModule,
527
+ DxoDashboardParameterDialogModule,
528
+ DxoDataInspectorModule,
529
+ DxoDataSourceWizardModule,
530
+ DxoWizardSettingsModule,
531
+ DxoDesignerToolbarModule,
532
+ DxoItemBindingPanelModule,
533
+ DxoItemOptionsPanelModule,
534
+ DxoMobileLayoutModule,
535
+ DxoViewerApiModule,
536
+ DxoFetchRemoteServiceModule,
537
+ DxIntegrationModule,
538
+ DxTemplateModule], exports: [DxDashboardControlComponent, DxoAjaxRemoteServiceModule,
539
+ DxoDataRequestOptionsModule,
540
+ DxoExtensionsModule,
541
+ DxoChartIndicatorsModule,
542
+ DxoDashboardExportModule,
543
+ DxoDashboardParameterDialogModule,
544
+ DxoDataInspectorModule,
545
+ DxoDataSourceWizardModule,
546
+ DxoWizardSettingsModule,
547
+ DxoDesignerToolbarModule,
548
+ DxoItemBindingPanelModule,
549
+ DxoItemOptionsPanelModule,
550
+ DxoMobileLayoutModule,
551
+ DxoViewerApiModule,
552
+ DxoFetchRemoteServiceModule,
553
+ DxTemplateModule] });
554
+ /** @nocollapse */ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DxDashboardControlModule, imports: [DxoAjaxRemoteServiceModule,
555
+ DxoDataRequestOptionsModule,
556
+ DxoExtensionsModule,
557
+ DxoChartIndicatorsModule,
558
+ DxoDashboardExportModule,
559
+ DxoDashboardParameterDialogModule,
560
+ DxoDataInspectorModule,
561
+ DxoDataSourceWizardModule,
562
+ DxoWizardSettingsModule,
563
+ DxoDesignerToolbarModule,
564
+ DxoItemBindingPanelModule,
565
+ DxoItemOptionsPanelModule,
566
+ DxoMobileLayoutModule,
567
+ DxoViewerApiModule,
568
+ DxoFetchRemoteServiceModule,
569
+ DxIntegrationModule,
570
+ DxTemplateModule, DxoAjaxRemoteServiceModule,
571
+ DxoDataRequestOptionsModule,
572
+ DxoExtensionsModule,
573
+ DxoChartIndicatorsModule,
574
+ DxoDashboardExportModule,
575
+ DxoDashboardParameterDialogModule,
576
+ DxoDataInspectorModule,
577
+ DxoDataSourceWizardModule,
578
+ DxoWizardSettingsModule,
579
+ DxoDesignerToolbarModule,
580
+ DxoItemBindingPanelModule,
581
+ DxoItemOptionsPanelModule,
582
+ DxoMobileLayoutModule,
583
+ DxoViewerApiModule,
584
+ DxoFetchRemoteServiceModule,
585
+ DxTemplateModule] });
586
+ }
587
+ export { DxDashboardControlModule };
588
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DxDashboardControlModule, decorators: [{
589
+ type: NgModule,
590
+ args: [{
591
+ imports: [
592
+ DxoAjaxRemoteServiceModule,
593
+ DxoDataRequestOptionsModule,
594
+ DxoExtensionsModule,
595
+ DxoChartIndicatorsModule,
596
+ DxoDashboardExportModule,
597
+ DxoDashboardParameterDialogModule,
598
+ DxoDataInspectorModule,
599
+ DxoDataSourceWizardModule,
600
+ DxoWizardSettingsModule,
601
+ DxoDesignerToolbarModule,
602
+ DxoItemBindingPanelModule,
603
+ DxoItemOptionsPanelModule,
604
+ DxoMobileLayoutModule,
605
+ DxoViewerApiModule,
606
+ DxoFetchRemoteServiceModule,
607
+ DxIntegrationModule,
608
+ DxTemplateModule
609
+ ],
610
+ declarations: [
611
+ DxDashboardControlComponent
612
+ ],
613
+ exports: [
614
+ DxDashboardControlComponent,
615
+ DxoAjaxRemoteServiceModule,
616
+ DxoDataRequestOptionsModule,
617
+ DxoExtensionsModule,
618
+ DxoChartIndicatorsModule,
619
+ DxoDashboardExportModule,
620
+ DxoDashboardParameterDialogModule,
621
+ DxoDataInspectorModule,
622
+ DxoDataSourceWizardModule,
623
+ DxoWizardSettingsModule,
624
+ DxoDesignerToolbarModule,
625
+ DxoItemBindingPanelModule,
626
+ DxoItemOptionsPanelModule,
627
+ DxoMobileLayoutModule,
628
+ DxoViewerApiModule,
629
+ DxoFetchRemoteServiceModule,
630
+ DxTemplateModule
631
+ ]
632
+ }]
633
+ }] });
634
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdWkvZGFzaGJvYXJkLWNvbnRyb2wvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0EsT0FBTyxFQUNILFNBQVMsRUFDVCxRQUFRLEVBR1IsV0FBVyxFQUNYLE1BQU0sRUFFTixLQUFLLEVBQ0wsTUFBTSxFQUdULE1BQU0sZUFBZSxDQUFDO0FBS3ZCLE9BQU8sa0JBQWtCLE1BQU0sd0NBQXdDLENBQUM7QUFHeEUsT0FBTyxFQUNILFdBQVcsRUFDWCxjQUFjLEVBQ2QsbUJBQW1CLEVBQ25CLGdCQUFnQixFQUNoQixnQkFBZ0IsRUFDaEIsYUFBYSxFQUNoQixNQUFNLHlCQUF5QixDQUFDO0FBRWpDLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ3BGLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzdFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzNGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ25GLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ25GLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FB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d0JBQ3JCLGtCQUFrQjt3QkFDbEIsMkJBQTJCO3dCQUMzQixtQkFBbUI7d0JBQ25CLGdCQUFnQjtxQkFDakI7b0JBQ0QsWUFBWSxFQUFFO3dCQUNaLDJCQUEyQjtxQkFDNUI7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLDJCQUEyQjt3QkFDM0IsMEJBQTBCO3dCQUMxQiwyQkFBMkI7d0JBQzNCLG1CQUFtQjt3QkFDbkIsd0JBQXdCO3dCQUN4Qix3QkFBd0I7d0JBQ3hCLGlDQUFpQzt3QkFDakMsc0JBQXNCO3dCQUN0Qix5QkFBeUI7d0JBQ3pCLHVCQUF1Qjt3QkFDdkIsd0JBQXdCO3dCQUN4Qix5QkFBeUI7d0JBQ3pCLHlCQUF5Qjt3QkFDekIscUJBQXFCO3dCQUNyQixrQkFBa0I7d0JBQ2xCLDJCQUEyQjt3QkFDM0IsZ0JBQWdCO3FCQUNqQjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qIHRzbGludDpkaXNhYmxlOm1heC1saW5lLWxlbmd0aCAqL1xuXG5cbmltcG9ydCB7IFRyYW5zZmVyU3RhdGUgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcblxuaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgTmdNb2R1bGUsXG4gICAgRWxlbWVudFJlZixcbiAgICBOZ1pvbmUsXG4gICAgUExBVEZPUk1fSUQsXG4gICAgSW5qZWN0LFxuXG4gICAgSW5wdXQsXG4gICAgT3V0cHV0LFxuICAgIE9uRGVzdHJveSxcbiAgICBFdmVudEVtaXR0ZXJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cblxuaW1wb3J0IHsgSURhc2hib2FyZERhdGFTb3VyY2VXaXphcmRTZXR0aW5ncyB9IGZyb20gJ2RldmV4cHJlc3MtZGFzaGJvYXJkL2Rlc2lnbmVyL2RhdGEtc291cmNlLXdpemFyZC9kYXRhLXNvdXJjZS13aXphcmQtZXh0ZW5zaW9uJztcblxuaW1wb3J0IER4RGFzaGJvYXJkQ29udHJvbCBmcm9tICdkZXZleHByZXNzLWRhc2hib2FyZC9pbnRlZ3JhdGlvbi9pbmRleCc7XG5cblxuaW1wb3J0IHtcbiAgICBEeENvbXBvbmVudCxcbiAgICBEeFRlbXBsYXRlSG9zdCxcbiAgICBEeEludGVncmF0aW9uTW9kdWxlLFxuICAgIER4VGVtcGxhdGVNb2R1bGUsXG4gICAgTmVzdGVkT3B0aW9uSG9zdCxcbiAgICBXYXRjaGVySGVscGVyXG59IGZyb20gJ2RldmV4dHJlbWUtYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgRHhvQWpheFJlbW90ZVNlcnZpY2VNb2R1bGUgfSBmcm9tICdkZXZleHByZXNzLWRhc2hib2FyZC1hbmd1bGFyL3VpL25lc3RlZCc7XG5pbXBvcnQgeyBEeG9EYXRhUmVxdWVzdE9wdGlvbnNNb2R1bGUgfSBmcm9tICdkZXZleHByZXNzLWRhc2hib2FyZC1hbmd1bGFyL3VpL25lc3RlZCc7XG5pbXBvcnQgeyBEeG9FeHRlbnNpb25zTW9kdWxlIH0gZnJvbSAnZGV2ZXhwcmVzcy1kYXNoYm9hcmQtYW5ndWxhci91aS9uZXN0ZWQnO1xuaW1wb3J0IHsgRHhvQ2hhcnRJbmRpY2F0b3JzTW9kdWxlIH0gZnJvbSAnZGV2ZXhwcmVzcy1kYXNoYm9hcmQtYW5ndWxhci91aS9uZXN0ZWQnO1xuaW1wb3J0IHsgRHhvRGFzaGJvYXJkRXhwb3J0TW9kdWxlIH0gZnJvbSAnZGV2ZXhwcmVzcy1kYXNoYm9hcmQtYW5ndWxhci91aS9uZXN0ZWQnO1xuaW1wb3J0IHsgRHhvRGFzaGJvYXJkUGFyYW1ldGVyRGlhbG9nTW9kdWxlIH0gZnJvbSAnZGV2ZXhwcmVzcy1kYXNoYm9hcmQtYW5ndWxhci91aS9uZXN0ZWQnO1xuaW1wb3J0IHsgRHhvRGF0YUluc3BlY3Rvck1vZHVsZSB9IGZyb20gJ2RldmV4cHJlc3MtZGFzaGJvYXJkLWFuZ3VsYXIvdWkvbmVzdGVkJztcbmltcG9ydCB7IER4b0RhdGFTb3VyY2VXaXphcmRNb2R1bGUgfSBmcm9tICdkZXZleHByZXNzLWRhc2hib2FyZC1hbmd1bGFyL3VpL25lc3RlZCc7XG5pbXBvcnQgeyBEeG9XaXphcmRTZXR0aW5nc01vZHVsZSB9IGZyb20gJ2RldmV4cHJlc3MtZGFzaGJvYXJkLWFuZ3VsYXIvdWkvbmVzdGVkJztcbmltcG9ydCB7IER4b0Rlc2lnbmVyVG9vbGJhck1vZHVsZSB9IGZyb20gJ2RldmV4cHJlc3MtZGFzaGJvYXJkLWFuZ3VsYXIvdWkvbmVzdGVkJztcbmltcG9ydCB7IER4b0l0ZW1CaW5kaW5nUGFuZWxNb2R1bGUgfSBmcm9tICdkZXZleHByZXNzLWRhc2hib2FyZC1hbmd1bGFyL3VpL25lc3RlZCc7XG5pbXBvcnQgeyBEeG9JdGVtT3B0aW9uc1BhbmVsTW9kdWxlIH0gZnJvbSAnZGV2ZXhwcmVzcy1kYXNoYm9hcmQtYW5ndWxhci91aS9uZXN0ZWQnO1xuaW1wb3J0IHsgRHhvTW9iaWxlTGF5b3V0TW9kdWxlIH0gZnJvbSAnZGV2ZXhwcmVzcy1kYXNoYm9hcmQtYW5ndWxhci91aS9uZXN0ZWQnO1xuaW1wb3J0IHsgRHhvVmlld2VyQXBpTW9kdWxlIH0gZnJvbSAnZGV2ZXhwcmVzcy1kYXNoYm9hcmQtYW5ndWxhci91aS9uZXN0ZWQnO1xuaW1wb3J0IHsgRHhvRmV0Y2hSZW1vdGVTZXJ2aWNlTW9kdWxlIH0gZnJvbSAnZGV2ZXhwcmVzcy1kYXNoYm9hcmQtYW5ndWxhci91aS9uZXN0ZWQnO1xuXG5cblxuXG4vKipcbiAqIFtkZXNjcjpkeERhc2hib2FyZENvbnRyb2xdXG5cbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdkeC1kYXNoYm9hcmQtY29udHJvbCcsXG4gICAgdGVtcGxhdGU6ICcnLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICBEeFRlbXBsYXRlSG9zdCxcbiAgICAgICAgV2F0Y2hlckhlbHBlcixcbiAgICAgICAgTmVzdGVkT3B0aW9uSG9zdFxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgRHhEYXNoYm9hcmRDb250cm9sQ29tcG9uZW50IGV4dGVuZHMgRHhDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICAgIGluc3RhbmNlOiBEeERhc2hib2FyZENvbnRyb2wgPSBudWxsO1xuXG4gICAgLyoqXG4gICAgICogW2Rlc2NyOmR4RGFzaGJvYXJkQ29udHJvbE9wdGlvbnMuYWpheFJlbW90ZVNlcnZpY2VdXG4gICAgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBnZXQgYWpheFJlbW90ZVNlcnZpY2UoKTogeyBiZWZvcmVTZW5kPzogRnVuY3Rpb24sIGNvbXBsZXRlPzogRnVuY3Rpb24sIGhlYWRlcnM/OiBhbnkgfSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9nZXRPcHRpb24oJ2FqYXhSZW1vdGVTZXJ2aWNlJyk7XG4gICAgfVxuICAgIHNldCBhamF4UmVtb3RlU2VydmljZSh2YWx1ZTogeyBiZWZvcmVTZW5kPzogRnVuY3Rpb24sIGNvbXBsZXRlPzogRnVuY3Rpb24sIGhlYWRlcnM/OiBhbnkgfSkge1xuICAgICAgICB0aGlzLl9zZXRPcHRpb24oJ2FqYXhSZW1vdGVTZXJ2aWNlJywgdmFsdWUpO1xuICAgIH1cblxuXG4gICAgLyoqXG4gICAgICogW2Rlc2NyOmR4RGFzaGJvYXJkQ29udHJvbE9wdGlvbnMuYWxsb3dNYXhpbWl6ZUl0ZW1zXVxuICAgIFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGFsbG93TWF4aW1pemVJdGVtcygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldE9wdGlvbignYWxsb3dNYXhpbWl6ZUl0ZW1zJyk7XG4gICAgfVxuICAgIHNldCBhbGxvd01heGltaXplSXRlbXModmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fc2V0T3B0aW9uKCdhbGxvd01heGltaXplSXRlbXMnLCB2YWx1ZSk7XG4gICAgfVxuXG5cbiAgICAvKipcbiAgICAgKiBbZGVzY3I6ZHhEYXNoYm9hcmRDb250cm9sT3B0aW9ucy5kYXNoYm9hcmRJZF1cbiAgICBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGdldCBkYXNoYm9hcmRJZCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0T3B0aW9uKCdkYXNoYm9hcmRJZCcpO1xuICAgIH1cbiAgICBzZXQgZGFzaGJvYXJkSWQodmFsdWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLl9zZXRPcHRpb24oJ2Rhc2hib2FyZElkJywgdmFsdWUpO1xuICAgIH1cblxuXG4gICAgLyoqXG4gICAgICogW2Rlc2NyOmR4RGFzaGJvYXJkQ29udHJvbE9wdGlvbnMuZGF0YVJlcXVlc3RPcHRpb25zXVxuICAgIFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGRhdGFSZXF1ZXN0T3B0aW9ucygpOiB7IGl0ZW1EYXRhTG9hZGluZ01vZGU/OiBzdHJpbmcsIGl0ZW1EYXRhUmVxdWVzdE1vZGU/OiBzdHJpbmcgfSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9nZXRPcHRpb24oJ2RhdGFSZXF1ZXN0T3B0aW9ucycpO1xuICAgIH1cbiAgICBzZXQgZGF0YVJlcXVlc3RPcHRpb25zKHZhbHVlOiB7IGl0ZW1EYXRhTG9hZGluZ01vZGU/OiBzdHJpbmcsIGl0ZW1EYXRhUmVxdWVzdE1vZGU/OiBzdHJpbmcgfSkge1xuICAgICAgICB0aGlzLl9zZXRPcHRpb24oJ2RhdGFSZXF1ZXN0T3B0aW9ucycsIHZhbHVlKTtcbiAgICB9XG5cblxuICAgIC8qKlxuICAgICAqIFtkZXNjcjpkeERhc2hib2FyZENvbnRyb2xPcHRpb25zLmVuY29kZUh0bWxdXG4gICAgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBnZXQgZW5jb2RlSHRtbCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldE9wdGlvbignZW5jb2RlSHRtbCcpO1xuICAgIH1cbiAgICBzZXQgZW5jb2RlSHRtbCh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9zZXRPcHRpb24oJ2VuY29kZUh0bWwnLCB2YWx1ZSk7XG4gICAgfVxuXG5cbiAgICAvKipcbiAgICAgKiBbZGVzY3I6ZHhEYXNoYm9hcmRDb250cm9sT3B0aW9ucy5lbmRwb2ludF1cbiAgICBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGdldCBlbmRwb2ludCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0T3B0aW9uKCdlbmRwb2ludCcpO1xuICAgIH1cbiAgICBzZXQgZW5kcG9pbnQodmFsdWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLl9zZXRPcHRpb24oJ2VuZHBvaW50JywgdmFsdWUpO1xuICAgIH1cblxuXG4gICAgLyoqXG4gICAgICogW2Rlc2NyOmR4RGFzaGJvYXJkQ29udHJvbE9wdGlvbnMuZXh0ZW5zaW9uc11cbiAgICBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGdldCBleHRlbnNpb25zKCk6IHsgY2hhcnRJbmRpY2F0b3JzPzogeyBjdXN0b21JbmRpY2F0b3JUeXBlcz86IGFueSB9LCBkYXNoYm9hcmRFeHBvcnQ/OiB7IGFsbG93RXhwb3J0RGFzaGJvYXJkPzogYm9vbGVhbiwgYWxsb3dFeHBvcnREYXNoYm9hcmRJdGVtcz86IGJvb2xlYW4sIG9uRXhwb3J0RGlhbG9nSGlkZGVuPzogRnVuY3Rpb24sIG9uRXhwb3J0RGlhbG9nU2hvd2luZz86IEZ1bmN0aW9uLCBvbkV4cG9ydERpYWxvZ1Nob3duPzogRnVuY3Rpb24gfSwgZGFzaGJvYXJkUGFyYW1ldGVyRGlhbG9nPzogeyBvbkR5bmFtaWNMb29rVXBWYWx1ZXNMb2FkZWQ/OiBGdW5jdGlvbiwgb25IaWRkZW4/OiBGdW5jdGlvbiwgb25TaG93aW5nPzogRnVuY3Rpb24sIG9uU2hvd24/OiBGdW5jdGlvbiB9LCBkYXRhSW5zcGVjdG9yPzogeyBhbGxvd0luc3BlY3RBZ2dyZWdhdGVkRGF0YT86IGJvb2xlYW4sIGFsbG93SW5zcGVjdFJhd0RhdGE/OiBib29sZWFuLCBvbkRpYWxvZ0hpZGRlbj86IEZ1bmN0aW9uLCBvbkRpYWxvZ1Nob3dpbmc/OiBGdW5jdGlvbiwgb25EaWFsb2dTaG93bj86IEZ1bmN0aW9uLCBvbkdyaWRDb250ZW50UmVhZHk/OiBGdW5jdGlvbiwgb25HcmlkSW5pdGlhbGl6ZWQ/OiBGdW5jdGlvbiB9LCBkYXRhU291cmNlV2l6YXJkPzogeyBhbGxvd0NyZWF0ZU5ld0pzb25Db25uZWN0aW9uPzogYm9vbGVhbiwgZW5hYmxlQ3VzdG9tU3FsPzogYm9vbGVhbiwgb25DdXN0b21pemVEYXRhU291cmNlV2l6YXJkPzogRnVuY3Rpb24sIHdpemFyZFNldHRpbmdzPzogSURhc2hib2FyZERhdGFTb3VyY2VXaXphcmRTZXR0aW5ncyB9LCBkZXNpZ25lclRvb2xiYXI/OiB7IG9uUHJlcGFyaW5nPzogRnVuY3Rpb24gfSwgaXRlbUJpbmRpbmdQYW5lbD86IHsgb25DdXN0b21pemVEYXRhSXRlbUNvbnRhaW5lclNlY3Rpb25zPzogRnVuY3Rpb24gfSwgaXRlbU9wdGlvbnNQYW5lbD86IHsgb25DdXN0b21pemVTZWN0aW9ucz86IEZ1bmN0aW9uIH0sIG1vYmlsZUxheW91dD86IHsgbW9iaWxlTGF5b3V0RW5hYmxlZD86IHN0cmluZyB9LCB2aWV3ZXJBcGk/OiB7IG9uRGFzaGJvYXJkVGl0bGVUb29sYmFyVXBkYXRlZD86IEZ1bmN0aW9uLCBvbkl0ZW1BY3Rpb25BdmFpbGFiaWxpdHlDaGFuZ2VkPzogRnVuY3Rpb24sIG9uSXRlbUNhcHRpb25Ub29sYmFyVXBkYXRlZD86IEZ1bmN0aW9uLCBvbkl0ZW1DbGljaz86IEZ1bmN0aW9uLCBvbkl0ZW1EcmlsbERvd25TdGF0ZUNoYW5nZWQ/OiBGdW5jdGlvbiwgb25JdGVtRWxlbWVudEN1c3RvbUNvbG9yPzogRnVuY3Rpb24sIG9uSXRlbU1hc3RlckZpbHRlclN0YXRlQ2hhbmdlZD86IEZ1bmN0aW9uLCBvbkl0ZW1TZWxlY3Rpb25DaGFuZ2VkPzogRnVuY3Rpb24sIG9uSXRlbVZpc3VhbEludGVyYWN0aXZpdHk/OiBGdW5jdGlvbiwgb25JdGVtV2lkZ2V0Q3JlYXRlZD86IEZ1bmN0aW9uLCBvbkl0ZW1XaWRnZXRPcHRpb25zUHJlcGFyZWQ/OiBGdW5jdGlvbiwgb25JdGVtV2lkZ2V0VXBkYXRlZD86IEZ1bmN0aW9uLCBvbkl0ZW1XaWRnZXRVcGRhdGluZz86IEZ1bmN0aW9uLCBvblNlbGVjdGVkVGFiUGFnZUNoYW5nZWQ/OiBGdW5jdGlvbiB9IH0ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0T3B0aW9uKCdleHRlbnNpb25zJyk7XG4gICAgfVxuICAgIHNldCBleHRlbnNpb25zKHZhbHVlOiB7IGNoYXJ0SW5kaWNhdG9ycz86IHsgY3VzdG9tSW5kaWNhdG9yVHlwZXM/OiBhbnkgfSwgZGFzaGJvYXJkRXhwb3J0PzogeyBhbGxvd0V4cG9ydERhc2hib2FyZD86IGJvb2xlYW4sIGFsbG93RXhwb3J0RGFzaGJvYXJkSXRlbXM/OiBib29sZWFuLCBvbkV4cG9ydERpYWxvZ0hpZGRlbj86IEZ1bmN0aW9uLCBvbkV4cG9ydERpYWxvZ1Nob3dpbmc/OiBGdW5jdGlvbiwgb25FeHBvcnREaWFsb2dTaG93bj86IEZ1bmN0aW9uIH0sIGRhc2hib2FyZFBhcmFtZXRlckRpYWxvZz86IHsgb25EeW5hbWljTG9va1VwVmFsdWVzTG9hZGVkPzogRnVuY3Rpb24sIG9uSGlkZGVuPzogRnVuY3Rpb24sIG9uU2hvd2luZz86IEZ1bmN0aW9uLCBvblNob3duPzogRnVuY3Rpb24gfSwgZGF0YUluc3BlY3Rvcj86IHsgYWxsb3dJbnNwZWN0QWdncmVnYXRlZERhdGE/OiBib29sZWFuLCBhbGxvd0luc3BlY3RSYXdEYXRhPzogYm9vbGVhbiwgb25EaWFsb2dIaWRkZW4/OiBGdW5jdGlvbiwgb25EaWFsb2dTaG93aW5nPzogRnVuY3Rpb24sIG9uRGlhbG9nU2hvd24/OiBGdW5jdGlvbiwgb25HcmlkQ29udGVudFJlYWR5PzogRnVuY3Rpb24sIG9uR3JpZEluaXRpYWxpemVkPzogRnVuY3Rpb24gfSwgZGF0YVNvdXJjZVdpemFyZD86IHsgYWxsb3dDcmVhdGVOZXdKc29uQ29ubmVjdGlvbj86IGJvb2xlYW4sIGVuYWJsZUN1c3RvbVNxbD86IGJvb2xlYW4sIG9uQ3VzdG9taXplRGF0YVNvdXJjZVdpemFyZD86IEZ1bmN0aW9uLCB3aXphcmRTZXR0aW5ncz86IElEYXNoYm9hcmREYXRhU291cmNlV2l6YXJkU2V0dGluZ3MgfSwgZGVzaWduZXJUb29sYmFyPzogeyBvblByZXBhcmluZz86IEZ1bmN0aW9uIH0sIGl0ZW1CaW5kaW5nUGFuZWw/OiB7IG9uQ3VzdG9taXplRGF0YUl0ZW1Db250YWluZXJTZWN0aW9ucz86IEZ1bmN0aW9uIH0sIGl0ZW1PcHRpb25zUGFuZWw/OiB7IG9uQ3VzdG9taXplU2VjdGlvbnM/OiBGdW5jdGlvbiB9LCBtb2JpbGVMYXlvdXQ/OiB7IG1vYmlsZUxheW91dEVuYWJsZWQ/OiBzdHJpbmcgfSwgdmlld2VyQXBpPzogeyBvbkRhc2hib2FyZFRpdGxlVG9vbGJhclVwZGF0ZWQ/OiBGdW5jdGlvbiwgb25JdGVtQWN0aW9uQXZhaWxhYmlsaXR5Q2hhbmdlZD86IEZ1bmN0aW9uLCBvbkl0ZW1DYXB0aW9uVG9vbGJhclVwZGF0ZWQ/OiBGdW5jdGlvbiwgb25JdGVtQ2xpY2s/OiBGdW5jdGlvbiwgb25JdGVtRHJpbGxEb3duU3RhdGVDaGFuZ2VkPzogRnVuY3Rpb24sIG9uSXRlbUVsZW1lbnRDdXN0b21Db2xvcj86IEZ1bmN0aW9uLCBvbkl0ZW1NYXN0ZXJGaWx0ZXJTdGF0ZUNoYW5nZWQ/OiBGdW5jdGlvbiwgb25JdGVtU2VsZWN0aW9uQ2hhbmdlZD86IEZ1bmN0aW9uLCBvbkl0ZW1WaXN1YWxJbnRlcmFjdGl2aXR5PzogRnVuY3Rpb24sIG9uSXRlbVdpZGdldENyZWF0ZWQ/OiBGdW5jdGlvbiwgb25JdGVtV2lkZ2V0T3B0aW9uc1ByZXBhcmVkPzogRnVuY3Rpb24sIG9uSXRlbVdpZGdldFVwZGF0ZWQ/OiBGdW5jdGlvbiwgb25JdGVtV2lkZ2V0VXBkYXRpbmc/OiBGdW5jdGlvbiwgb25TZWxlY3RlZFRhYlBhZ2VDaGFuZ2VkPzogRnVuY3Rpb24gfSB9KSB7XG4gICAgICAgIHRoaXMuX3NldE9wdGlvbignZXh0ZW5zaW9ucycsIHZhbHVlKTtcbiAgICB9XG5cblxuICAgIC8qKlxuICAgICAqIFtkZXNjcjpkeERhc2hib2FyZENvbnRyb2xPcHRpb25zLmZldGNoUmVtb3RlU2VydmljZV1cbiAgICBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGdldCBmZXRjaFJlbW90ZVNlcnZpY2UoKTogeyBiZWZvcmVTZW5kPzogRnVuY3Rpb24sIGhlYWRlcnM/OiBhbnkgfSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9nZXRPcHRpb24oJ2ZldGNoUmVtb3RlU2VydmljZScpO1xuICAgIH1cbiAgICBzZXQgZmV0Y2hSZW1vdGVTZXJ2aWNlKHZhbHVlOiB7IGJlZm9yZVNlbmQ/OiBGdW5jdGlvbiwgaGVhZGVycz86IGFueSB9KSB7XG4gICAgICAgIHRoaXMuX3NldE9wdGlvbignZmV0Y2hSZW1vdGVTZXJ2aWNlJywgdmFsdWUpO1xuICAgIH1cblxuXG4gICAgLyoqXG4gICAgICogW2Rlc2NyOmR4RGFzaGJvYXJkQ29udHJvbE9wdGlvbnMuaW5pdGlhbERhc2hib2FyZElkXVxuICAgIFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGluaXRpYWxEYXNoYm9hcmRJZCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0T3B0aW9uKCdpbml0aWFsRGFzaGJvYXJkSWQnKTtcbiAgICB9XG4gICAgc2V0IGluaXRpYWxEYXNoYm9hcmRJZCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX3NldE9wdGlvbignaW5pdGlhbERhc2hib2FyZElkJywgdmFsdWUpO1xuICAgIH1cblxuXG4gICAgLyoqXG4gICAgICogW2Rlc2NyOmR4RGFzaGJvYXJkQ29udHJvbE9wdGlvbnMuaW5pdGlhbERhc2hib2FyZFN0YXRlXVxuICAgIFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGluaXRpYWxEYXNoYm9hcmRTdGF0ZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0T3B0aW9uKCdpbml0aWFsRGFzaGJvYXJkU3RhdGUnKTtcbiAgICB9XG4gICAgc2V0IGluaXRpYWxEYXNoYm9hcmRTdGF0ZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX3NldE9wdGlvbignaW5pdGlhbERhc2hib2FyZFN0YXRlJywgdmFsdWUpO1xuICAgIH1cblxuXG4gICAgLyoqXG4gICAgICogW2Rlc2NyOmR4RGFzaGJvYXJkQ29udHJvbE9wdGlvbnMubGltaXRWaXNpYmxlRGF0YU1vZGVdXG4gICAgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBnZXQgbGltaXRWaXNpYmxlRGF0YU1vZGUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldE9wdGlvbignbGltaXRWaXNpYmxlRGF0YU1vZGUnKTtcbiAgICB9XG4gICAgc2V0IGxpbWl0VmlzaWJsZURhdGFNb2RlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fc2V0T3B0aW9uKCdsaW1pdFZpc2libGVEYXRhTW9kZScsIHZhbHVlKTtcbiAgICB9XG5cblxuICAgIC8qKlxuICAgICAqIFtkZXNjcjpkeERhc2hib2FyZENvbnRyb2xPcHRpb25zLmxvYWREZWZhdWx0RGFzaGJvYXJkXVxuICAgIFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGxvYWREZWZhdWx0RGFzaGJvYXJkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0T3B0aW9uKCdsb2FkRGVmYXVsdERhc2hib2FyZCcpO1xuICAgIH1cbiAgICBzZXQgbG9hZERlZmF1bHREYXNoYm9hcmQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fc2V0T3B0aW9uKCdsb2FkRGVmYXVsdERhc2hib2FyZCcsIHZhbHVlKTtcbiAgICB9XG5cblxuICAgIC8qKlxuICAgICAqIFtkZXNjcjpkeERhc2hib2FyZENvbnRyb2xPcHRpb25zLm5vbmNlXVxuICAgIFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IG5vbmNlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9nZXRPcHRpb24oJ25vbmNlJyk7XG4gICAgfVxuICAgIHNldCBub25jZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX3NldE9wdGlvbignbm9uY2UnLCB2YWx1ZSk7XG4gICAgfVxuXG5cbiAgICAvKipcbiAgICAgKiBbZGVzY3I6ZHhEYXNoYm9hcmRDb250cm9sT3B0aW9ucy5yZXNpemVCeVRpbWVyXVxuICAgIFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IHJlc2l6ZUJ5VGltZXIoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9nZXRPcHRpb24oJ3Jlc2l6ZUJ5VGltZXInKTtcbiAgICB9XG4gICAgc2V0IHJlc2l6ZUJ5VGltZXIodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fc2V0T3B0aW9uKCdyZXNpemVCeVRpbWVyJywgdmFsdWUpO1xuICAgIH1cblxuXG4gICAgLyoqXG4gICAgICogW2Rlc2NyOmR4RGFzaGJvYXJkQ29udHJvbE9wdGlvbnMuc2hvd0NvbmZpcm1hdGlvbk9uQnJvd3NlckNsb3NpbmddXG4gICAgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBnZXQgc2hvd0NvbmZpcm1hdGlvbk9uQnJvd3NlckNsb3NpbmcoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9nZXRPcHRpb24oJ3Nob3dDb25maXJtYXRpb25PbkJyb3dzZXJDbG9zaW5nJyk7XG4gICAgfVxuICAgIHNldCBzaG93Q29uZmlybWF0aW9uT25Ccm93c2VyQ2xvc2luZyh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9zZXRPcHRpb24oJ3Nob3dDb25maXJtYXRpb25PbkJyb3dzZXJDbG9zaW5nJywgdmFsdWUpO1xuICAgIH1cblxuXG4gICAgLyoqXG4gICAgICogW2Rlc2NyOmR4RGFzaGJvYXJkQ29udHJvbE9wdGlvbnMudXNlTmV1dHJhbEZpbHRlck1vZGVdXG4gICAgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBnZXQgdXNlTmV1dHJhbEZpbHRlck1vZGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9nZXRPcHRpb24oJ3VzZU5ldXRyYWxGaWx0ZXJNb2RlJyk7XG4gICAgfVxuICAgIHNldCB1c2VOZXV0cmFsRmlsdGVyTW9kZSh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9zZXRPcHRpb24oJ3VzZU5ldXRyYWxGaWx0ZXJNb2RlJywgdmFsdWUpO1xuICAgIH1cblxuXG4gICAgLyoqXG4gICAgICogW2Rlc2NyOmR4RGFzaGJvYXJkQ29udHJvbE9wdGlvbnMud29ya2luZ01vZGVdXG4gICAgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBnZXQgd29ya2luZ01vZGUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldE9wdGlvbignd29ya2luZ01vZGUnKTtcbiAgICB9XG4gICAgc2V0IHdvcmtpbmdNb2RlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fc2V0T3B0aW9uKCd3b3JraW5nTW9kZScsIHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICBcbiAgICAgKiBbZGVzY3I6ZHhEYXNoYm9hcmRDb250cm9sT3B0aW9ucy5vbkJlZm9yZVJlbmRlcl1cbiAgICBcbiAgICBcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgb25CZWZvcmVSZW5kZXI6IEV2ZW50RW1pdHRlcjxhbnk+O1xuXG4gICAgLyoqXG4gICAgXG4gICAgICogW2Rlc2NyOmR4RGFzaGJvYXJkQ29udHJvbE9wdGlvbnMub25EYXNoYm9hcmRCZWdpblVwZGF0ZV1cbiAgICBcbiAgICBcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgb25EYXNoYm9hcmRCZWdpblVwZGF0ZTogRXZlbnRFbWl0dGVyPGFueT47XG5cbiAgICAvKipcbiAgICBcbiAgICAgKiBbZGVzY3I6ZHhEYXNoYm9hcmRDb250cm9sT3B0aW9ucy5vbkRhc2hib2FyZEVuZFVwZGF0ZV1cbiAgICBcbiAgICBcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgb25EYXNoYm9hcmRFbmRVcGRhdGU6IEV2ZW50RW1pdHRlcjxhbnk+O1xuXG4gICAgLyoqXG4gICAgXG4gICAgICogW2Rlc2NyOmR4RGFzaGJvYXJkQ29udHJvbE9wdGlvbnMub25EYXNoYm9hcmRJbml0aWFsaXplZF1cbiAgICBcbiAgICBcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgb25EYXNoYm9hcmRJbml0aWFsaXplZDogRXZlbnRFbWl0dGVyPGFueT47XG5cbiAgICAvKipcbiAgICBcbiAgICAgKiBbZGVzY3I6ZHhEYXNoYm9hcmRDb250cm9sT3B0aW9ucy5vbkRhc2hib2FyZEluaXRpYWxpemluZ11cbiAgICBcbiAgICBcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgb25EYXNoYm9hcmRJbml0aWFsaXppbmc6IEV2ZW50RW1pdHRlcjxhbnk+O1xuXG4gICAgLyoqXG4gICAgXG4gICAgICogW2Rlc2NyOmR4RGFzaGJvYXJkQ29udHJvbE9wdGlvbnMub25EYXNoYm9hcmRTdGF0ZUNoYW5nZWRdXG4gICAgXG4gICAgXG4gICAgICovXG4gICAgQE91dHB1dCgpIG9uRGFzaGJvYXJkU3RhdGVDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8YW55PjtcblxuICAgIC8qKlxuICAgIFxuICAgICAqIFtkZXNjcjpkeERhc2hib2FyZENvbnRyb2xPcHRpb25zLm9uSW5pdGlhbGl6aW5nXVxuICAgIFxuICAgIFxuICAgICAqL1xuICAgIEBPdXRwdXQoKSBvbkluaXRpYWxpemluZzogRXZlbnRFbWl0dGVyPGFueT47XG5cbiAgICAvKipcbiAgICBcbiAgICAgKiBbZGVzY3I6ZHhEYXNoYm9hcmRDb250cm9sT3B0aW9ucy5vbkl0ZW1CZWdpblVwZGF0ZV1cbiAgICBcbiAgICBcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgb25JdGVtQmVnaW5VcGRhdGU6IEV2ZW50RW1pdHRlcjxhbnk+O1xuXG4gICAgLyoqXG4gICAgXG4gICAgICogW2Rlc2NyOmR4RGFzaGJvYXJkQ29udHJvbE9wdGlvbnMub25JdGVtRW5kVXBkYXRlXVxuICAgIFxuICAgIFxuICAgICAqL1xuICAgIEBPdXRwdXQoKSBvbkl0ZW1FbmRVcGRhdGU6IEV2ZW50RW1pdHRlcjxhbnk+O1xuXG4gICAgLyoqXG4gICAgXG4gICAgICogW2Rlc2NyOmR4RGFzaGJvYXJkQ29udHJvbE9wdGlvbnMub25PcHRpb25DaGFuZ2VkXVxuICAgIFxuICAgIFxuICAgICAqL1xuICAgIEBPdXRwdXQoKSBvbk9wdGlvbkNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxhbnk+O1xuXG4gICAgLyoqXG4gICAgXG4gICAgICogVGhpcyBtZW1iZXIgc3VwcG9ydHMgdGhlIGludGVybmFsIGluZnJhc3RydWN0dXJlIGFuZCBpcyBub3QgaW50ZW5kZWQgdG8gYmUgdXNlZCBkaXJlY3RseSBmcm9tIHlvdXIgY29kZS5cbiAgICBcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgYWpheFJlbW90ZVNlcnZpY2VDaGFuZ2U6IEV2ZW50RW1pdHRlcjx7IGJlZm9yZVNlbmQ/OiBGdW5jdGlvbiwgY29tcGxldGU/OiBGdW5jdGlvbiwgaGVhZGVycz86IGFueSB9PjtcblxuICAgIC8qKlxuICAgIFxuICAgICAqIFRoaXMgbWVtYmVyIHN1cHBvcnRzIHRoZSBpbnRlcm5hbCBpbmZyYXN0cnVjdHVyZSBhbmQgaXMgbm90IGludGVuZGVkIHRvIGJlIHVzZWQgZGlyZWN0bHkgZnJvbSB5b3VyIGNvZGUuXG4gICAgXG4gICAgICovXG4gICAgQE91dHB1dCgpIGFsbG93TWF4aW1pemVJdGVtc0NoYW5nZTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+O1xuXG4gICAgLyoqXG4gICAgXG4gICAgICogVGhpcyBtZW1iZXIgc3VwcG9ydHMgdGhlIGludGVybmFsIGluZnJhc3RydWN0dXJlIGFuZCBpcyBub3QgaW50ZW5kZWQgdG8gYmUgdXNlZCBkaXJlY3RseSBmcm9tIHlvdXIgY29kZS5cbiAgICBcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgZGFzaGJvYXJkSWRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxzdHJpbmc+O1xuXG4gICAgLyoqXG4gICAgXG4gICAgICogVGhpcyBtZW1iZXIgc3VwcG9ydHMgdGhlIGludGVybmFsIGluZnJhc3RydWN0dXJlIGFuZCBpcyBub3QgaW50ZW5kZWQgdG8gYmUgdXNlZCBkaXJlY3RseSBmcm9tIHlvdXIgY29kZS5cbiAgICBcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgZGF0YVJlcXVlc3RPcHRpb25zQ2hhbmdlOiBFdmVudEVtaXR0ZXI8eyBpdGVtRGF0YUxvYWRpbmdNb2RlPzogc3RyaW5nLCBpdGVtRGF0YVJlcXVlc3RNb2RlPzogc3RyaW5nIH0+O1xuXG4gICAgLyoqXG4gICAgXG4gICAgICogVGhpcyBtZW1iZXIgc3VwcG9ydHMgdGhlIGludGVybmFsIGluZnJhc3RydWN0dXJlIGFuZCBpcyBub3QgaW50ZW5kZWQgdG8gYmUgdXNlZCBkaXJlY3RseSBmcm9tIHlvdXIgY29kZS5cbiAgICBcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgZW5jb2RlSHRtbENoYW5nZTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+O1xuXG4gICAgLyoqXG4gICAgXG4gICAgICogVGhpcyBtZW1iZXIgc3VwcG9ydHMgdGhlIGludGVybmFsIGluZnJhc3RydWN0dXJlIGFuZCBpcyBub3QgaW50ZW5kZWQgdG8gYmUgdXNlZCBkaXJlY3RseSBmcm9tIHlvdXIgY29kZS5cbiAgICBcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgZW5kcG9pbnRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxzdHJpbmc+O1xuXG4gICAgLyoqXG4gICAgXG4gICAgICogVGhpcyBtZW1iZXIgc3VwcG9ydHMgdGhlIGludGVybmFsIGluZnJhc3RydWN0dXJlIGFuZCBpcyBub3QgaW50ZW5kZWQgdG8gYmUgdXNlZCBkaXJlY3RseSBmcm9tIHlvdXIgY29kZS5cbiAgICBcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgZXh0ZW5zaW9uc0NoYW5nZTogRXZlbnRFbWl0dGVyPHsgY2hhcnRJbmRpY2F0b3JzPzogeyBjdXN0b21JbmRpY2F0b3JUeXBlcz86IGFueSB9LCBkYXNoYm9hcmRFeHBvcnQ/OiB7IGFsbG93RXhwb3J0RGFzaGJvYXJkPzogYm9vbGVhbiwgYWxsb3dFeHBvcnREYXNoYm9hcmRJdGVtcz86IGJvb2xlYW4sIG9uRXhwb3J0RGlhbG9nSGlkZGVuPzogRnVuY3Rpb24sIG9uRXhwb3J0RGlhbG9nU2hvd2luZz86IEZ1bmN0aW9uLCBvbkV4cG9ydERpYWxvZ1Nob3duPzogRnVuY3Rpb24gfSwgZGFzaGJvYXJkUGFyYW1ldGVyRGlhbG9nPzogeyBvbkR5bmFtaWNMb29rVXBWYWx1ZXNMb2FkZWQ/OiBGdW5jdGlvbiwgb25IaWRkZW4/OiBGdW5jdGlvbiwgb25TaG93aW5nPzogRnVuY3Rpb24sIG9uU2hvd24/OiBGdW5jdGlvbiB9LCBkYXRhSW5zcGVjdG9yPzogeyBhbGxvd0luc3BlY3RBZ2dyZWdhdGVkRGF0YT86IGJvb2xlYW4sIGFsbG93SW5zcGVjdFJhd0RhdGE/OiBib29sZWFuLCBvbkRpYWxvZ0hpZGRlbj86IEZ1bmN0aW9uLCBvbkRpYWxvZ1Nob3dpbmc/OiBGdW5jdGlvbiwgb25EaWFsb2dTaG93bj86IEZ1bmN0aW9uLCBvbkdyaWRDb250ZW50UmVhZHk/OiBGdW5jdGlvbiwgb25HcmlkSW5pdGlhbGl6ZWQ/OiBGdW5jdGlvbiB9LCBkYXRhU291cmNlV2l6YXJkPzogeyBhbGxvd0NyZWF0ZU5ld0pzb25Db25uZWN0aW9uPzogYm9vbGVhbiwgZW5hYmxlQ3VzdG9tU3FsPzogYm9vbGVhbiwgb25DdXN0b21pemVEYXRhU291cmNlV2l6YXJkPzogRnVuY3Rpb24sIHdpemFyZFNldHRpbmdzPzogSURhc2hib2FyZERhdGFTb3VyY2VXaXphcmRTZXR0aW5ncyB9LCBkZXNpZ25lclRvb2xiYXI/OiB7IG9uUHJlcGFyaW5nPzogRnVuY3Rpb24gfSwgaXRlbUJpbmRpbmdQYW5lbD86IHsgb25DdXN0b21pemVEYXRhSXRlbUNvbnRhaW5lclNlY3Rpb25zPzogRnVuY3Rpb24gfSwgaXRlbU9wdGlvbnNQYW5lbD86IHsgb25DdXN0b21pemVTZWN0aW9ucz86IEZ1bmN0aW9uIH0sIG1vYmlsZUxheW91dD86IHsgbW9iaWxlTGF5b3V0RW5hYmxlZD86IHN0cmluZyB9LCB2aWV3ZXJBcGk/OiB7IG9uRGFzaGJvYXJkVGl0bGVUb29sYmFyVXBkYXRlZD86IEZ1bmN0aW9uLCBvbkl0ZW1BY3Rpb25BdmFpbGFiaWxpdHlDaGFuZ2VkPzogRnVuY3Rpb24sIG9uSXRlbUNhcHRpb25Ub29sYmFyVXBkYXRlZD86IEZ1bmN0aW9uLCBvbkl0ZW1DbGljaz86IEZ1bmN0aW9uLCBvbkl0ZW1EcmlsbERvd25TdGF0ZUNoYW5nZWQ/OiBGdW5jdGlvbiwgb25JdGVtRWxlbWVudEN1c3RvbUNvbG9yPzogRnVuY3Rpb24sIG9uSXRlbU1hc3RlckZpbHRlclN0YXRlQ2hhbmdlZD86IEZ1bmN0aW9uLCBvbkl0ZW1TZWxlY3Rpb25DaGFuZ2VkPzogRnVuY3Rpb24sIG9uSXRlbVZpc3VhbEludGVyYWN0aXZpdHk/OiBGdW5jdGlvbiwgb25JdGVtV2lkZ2V0Q3JlYXRlZD86IEZ1bmN0aW9uLCBvbkl0ZW1XaWRnZXRPcHRpb25zUHJlcGFyZWQ/OiBGdW5jdGlvbiwgb25JdGVtV2lkZ2V0VXBkYXRlZD86IEZ1bmN0aW9uLCBvbkl0ZW1XaWRnZXRVcGRhdGluZz86IEZ1bmN0aW9uLCBvblNlbGVjdGVkVGFiUGFnZUNoYW5nZWQ/OiBGdW5jdGlvbiB9IH0+O1xuXG4gICAgLyoqXG4gICAgXG4gICAgICogVGhpcyBtZW1iZXIgc3VwcG9ydHMgdGhlIGludGVybmFsIGluZnJhc3RydWN0dXJlIGFuZCBpcyBub3QgaW50ZW5kZWQgdG8gYmUgdXNlZCBkaXJlY3RseSBmcm9tIHlvdXIgY29kZS5cbiAgICBcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgZmV0Y2hSZW1vdGVTZXJ2aWNlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8eyBiZWZvcmVTZW5kPzogRnVuY3Rpb24sIGhlYWRlcnM/OiBhbnkgfT47XG5cbiAgICAvKipcbiAgICBcbiAgICAgKiBUaGlzIG1lbWJlciBzdXBwb3J0cyB0aGUgaW50ZXJuYWwgaW5mcmFzdHJ1Y3R1cmUgYW5kIGlzIG5vdCBpbnRlbmRlZCB0byBiZSB1c2VkIGRpcmVjdGx5IGZyb20geW91ciBjb2RlLlxuICAgIFxuICAgICAqL1xuICAgIEBPdXRwdXQoKSBpbml0aWFsRGFzaGJvYXJkSWRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxzdHJpbmc+O1xuXG4gICAgLyoqXG4gICAgXG4gICAgICogVGhpcyBtZW1iZXIgc3VwcG9ydHMgdGhlIGludGVybmFsIGluZnJhc3RydWN0dXJlIGFuZCBpcyBub3QgaW50ZW5kZWQgdG8gYmUgdXNlZCBkaXJlY3RseSBmcm9tIHlvdXIgY29kZS5cbiAgICBcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgaW5pdGlhbERhc2hib2FyZFN0YXRlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8c3RyaW5nPjtcblxuICAgIC8qKlxuICAgIFxuICAgICAqIFRoaXMgbWVtYmVyIHN1cHBvcnRzIHRoZSBpbnRlcm5hbCBpbmZyYXN0cnVjdHVyZSBhbmQgaXMgbm90IGludGVuZGVkIHRvIGJlIHVzZWQgZGlyZWN0bHkgZnJvbSB5b3VyIGNvZGUuXG4gICAgXG4gICAgICovXG4gICAgQE91dHB1dCgpIGxpbWl0VmlzaWJsZURhdGFNb2RlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8c3RyaW5nPjtcblxuICAgIC8qKlxuICAgIFxuICAgICAqIFRoaXMgbWVtYmVyIHN1cHBvcnRzIHRoZSBpbnRlcm5hbCBpbmZyYXN0cnVjdHVyZSBhbmQgaXMgbm90IGludGVuZGVkIHRvIGJlIHVzZWQgZGlyZWN0bHkgZnJvbSB5b3VyIGNvZGUuXG4gICAgXG4gICAgICovXG4gICAgQE91dHB1dCgpIGxvYWREZWZhdWx0RGFzaGJvYXJkQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj47XG5cbiAgICAvKipcbiAgICBcbiAgICAgKiBUaGlzIG1lbWJlciBzdXBwb3J0cyB0aGUgaW50ZXJuYWwgaW5mcmFzdHJ1Y3R1cmUgYW5kIGlzIG5vdCBpbnRlbmRlZCB0byBiZSB1c2VkIGRpcmVjdGx5IGZyb20geW91ciBjb2RlLlxuICAgIFxuICAgICAqL1xuICAgIEBPdXRwdXQoKSBub25jZUNoYW5nZTogRXZlbnRFbWl0dGVyPHN0cmluZz47XG5cbiAgICAvKipcbiAgICBcbiAgICAgKiBUaGlzIG1lbWJlciBzdXBwb3J0cyB0aGUgaW50ZXJuYWwgaW5mcmFzdHJ1Y3R1cmUgYW5kIGlzIG5vdCBpbnRlbmRlZCB0byBiZSB1c2VkIGRpcmVjdGx5IGZyb20geW91ciBjb2RlLlxuICAgIFxuICAgICAqL1xuICAgIEBPdXRwdXQoKSByZXNpemVCeVRpbWVyQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj47XG5cbiAgICAvKipcbiAgICBcbiAgICAgKiBUaGlzIG1lbWJlciBzdXBwb3J0cyB0aGUgaW50ZXJuYWwgaW5mcmFzdHJ1Y3R1cmUgYW5kIGlzIG5vdCBpbnRlbmRlZCB0byBiZSB1c2VkIGRpcmVjdGx5IGZyb20geW91ciBjb2RlLlxuICAgIFxuICAgICAqL1xuICAgIEBPdXRwdXQoKSBzaG93Q29uZmlybWF0aW9uT25Ccm93c2VyQ2xvc2luZ0NoYW5nZTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+O1xuXG4gICAgLyoqXG4gICAgXG4gICAgICogVGhpcyBtZW1iZXIgc3VwcG9ydHMgdGhlIGludGVybmFsIGluZnJhc3RydWN0dXJlIGFuZCBpcyBub3QgaW50ZW5kZWQgdG8gYmUgdXNlZCBkaXJlY3RseSBmcm9tIHlvdXIgY29kZS5cbiAgICBcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgdXNlTmV1dHJhbEZpbHRlck1vZGVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxib29sZWFuPjtcblxuICAgIC8qKlxuICAgIFxuICAgICAqIFRoaXMgbWVtYmVyIHN1cHBvcnRzIHRoZSBpbnRlcm5hbCBpbmZyYXN0cnVjdHVyZSBhbmQgaXMgbm90IGludGVuZGVkIHRvIGJlIHVzZWQgZGlyZWN0bHkgZnJvbSB5b3VyIGNvZGUuXG4gICAgXG4gICAgICovXG4gICAgQE91dHB1dCgpIHdvcmtpbmdNb2RlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8c3RyaW5nPjtcblxuXG5cblxuXG5cblxuICAgIGNvbnN0cnVjdG9yKGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsIG5nWm9uZTogTmdab25lLCB0ZW1wbGF0ZUhvc3Q6IER4VGVtcGxhdGVIb3N0LFxuICAgICAgICAgICAgX3dhdGNoZXJIZWxwZXI6IFdhdGNoZXJIZWxwZXIsXG4gICAgICAgICAgICBvcHRpb25Ib3N0OiBOZXN0ZWRPcHRpb25Ib3N0LFxuICAgICAgICAgICAgdHJhbnNmZXJTdGF0ZTogVHJhbnNmZXJTdGF0ZSxcbiAgICAgICAgICAgIEBJbmplY3QoUExBVEZPUk1fSUQpIHBsYXRmb3JtSWQ6IGFueSkge1xuXG4gICAgICAgIHN1cGVyKGVsZW1lbnRSZWYsIG5nWm9uZSwgdGVtcGxhdGVIb3N0LCBfd2F0Y2hlckhlbHBlciwgdHJhbnNmZXJTdGF0ZSwgcGxhdGZvcm1JZCk7XG5cbiAgICAgICAgdGhpcy5fY3JlYXRlRXZlbnRFbWl0dGVycyhbXG4gICAgICAgICAgICB7IHN1YnNjcmliZTogJ2JlZm9yZVJlbmRlcicsIGVtaXQ6ICdvbkJlZm9yZVJlbmRlcicgfSxcbiAgICAgICAgICAgIHsgc3Vic2NyaWJlOiAnZGFzaGJvYXJkQmVnaW5VcGRhdGUnLCBlbWl0OiAnb25EYXNoYm9hcmRCZWdpblVwZGF0ZScgfSxcbiAgICAgICAgICAgIHsgc3Vic2NyaWJlOiAnZGFzaGJvYXJkRW5kVXBkYXRlJywgZW1pdDogJ29uRGFzaGJvYXJkRW5kVXBkYXRlJyB9LFxuICAgICAgICAgICAgeyBzdWJzY3JpYmU6ICdkYXNoYm9hcmRJbml0aWFsaXplZCcsIGVtaXQ6ICdvbkRhc2hib2FyZEluaXRpYWxpemVkJyB9LFxuICAgICAgICAgICAgeyBzdWJzY3JpYmU6ICdkYXNoYm9hcmRJbml0aWFsaXppbmcnLCBlbWl0OiAnb25EYXNoYm9hcmRJbml0aWFsaXppbmcnIH0sXG4gICAgICAgICAgICB7IHN1YnNjcmliZTogJ2Rhc2hib2FyZFN0YXRlQ2hhbmdlZCcsIGVtaXQ6ICdvbkRhc2hib2FyZFN0YXRlQ2hhbmdlZCcgfSxcbiAgICAgICAgICAgIHsgc3Vic2NyaWJlOiAnaW5pdGlhbGl6aW5nJywgZW1pdDogJ29uSW5pdGlhbGl6aW5nJyB9LFxuICAgICAgICAgICAgeyBzdWJzY3JpYmU6ICdpdGVtQmVnaW5VcGRhdGUnLCBlbWl0OiAnb25JdGVtQmVnaW5VcGRhdGUnIH0sXG4gICAgICAgICAgICB7IHN1YnNjcmliZTogJ2l0ZW1FbmRVcGRhdGUnLCBlbWl0OiAnb25JdGVtRW5kVXBkYXRlJyB9LFxuICAgICAgICAgICAgeyBzdWJzY3JpYmU6ICdvcHRpb25DaGFuZ2VkJywgZW1pdDogJ29uT3B0aW9uQ2hhbmdlZCcgfSxcbiAgICAgICAgICAgIHsgZW1pdDogJ2FqYXhSZW1vdGVTZXJ2aWNlQ2hhbmdlJyB9LFxuICAgICAgICAgICAgeyBlbWl0OiAnYWxsb3dNYXhpbWl6ZUl0ZW1zQ2hhbmdlJyB9LFxuICAgICAgICAgICAgeyBlbWl0OiAnZGFzaGJvYXJkSWRDaGFuZ2UnIH0sXG4gICAgICAgICAgICB7IGVtaXQ6ICdkYXRhUmVxdWVzdE9wdGlvbnNDaGFuZ2UnIH0sXG4gICAgICAgICAgICB7IGVtaXQ6ICdlbmNvZGVIdG1sQ2hhbmdlJyB9LFxuICAgICAgICAgICAgeyBlbWl0OiAnZW5kcG9pbnRDaGFuZ2UnIH0sXG4gICAgICAgICAgICB7IGVtaXQ6ICdleHRlbnNpb25zQ2hhbmdlJyB9LFxuICAgICAgICAgICAgeyBlbWl0OiAnZmV0Y2hSZW1vdGVTZXJ2aWNlQ2hhbmdlJyB9LFxuICAgICAgICAgICAgeyBlbWl0OiAnaW5pdGlhbERhc2hib2FyZElkQ2hhbmdlJyB9LFxuICAgICAgICAgICAgeyBlbWl0OiAnaW5pdGlhbERhc2hib2FyZFN0YXRlQ2hhbmdlJyB9LFxuICAgICAgICAgICAgeyBlbWl0OiAnbGltaXRWaXNpYmxlRGF0YU1vZGVDaGFuZ2UnIH0sXG4gICAgICAgICAgICB7IGVtaXQ6ICdsb2FkRGVmYXVsdERhc2hib2FyZENoYW5nZScgfSxcbiAgICAgICAgICAgIHsgZW1pdDogJ25vbmNlQ2hhbmdlJyB9LFxuICAgICAgICAgICAgeyBlbWl0OiAncmVzaXplQnlUaW1lckNoYW5nZScgfSxcbiAgICAgICAgICAgIHsgZW1pdDogJ3Nob3dDb25maXJtYXRpb25PbkJyb3dzZXJDbG9zaW5nQ2hhbmdlJyB9LFxuICAgICAgICAgICAgeyBlbWl0OiAndXNlTmV1dHJhbEZpbHRlck1vZGVDaGFuZ2UnIH0sXG4gICAgICAgICAgICB7IGVtaXQ6ICd3b3JraW5nTW9kZUNoYW5nZScgfVxuICAgICAgICBdKTtcbiAgICAgICAgb3B0aW9uSG9zdC5zZXRIb3N0KHRoaXMpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfY3JlYXRlSW5zdGFuY2UoZWxlbWVudCwgb3B0aW9ucykge1xuXG4gICAgICAgIHJldHVybiBuZXcgRHhEYXNoYm9hcmRDb250cm9sKGVsZW1lbnQsIG9wdGlvbnMpO1xuICAgIH1cblxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMuX2Rlc3Ryb3lXaWRnZXQoKTtcbiAgICB9XG5cbn1cblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1xuICAgIER4b0FqYXhSZW1vdGVTZXJ2aWNlTW9kdWxlLFxuICAgIER4b0RhdGFSZXF1ZXN0T3B0aW9uc01vZHVsZSxcbiAgICBEeG9FeHRlbnNpb25zTW9kdWxlLFxuICAgIER4b0NoYXJ0SW5kaWNhdG9yc01vZHVsZSxcbiAgICBEeG9EYXNoYm9hcmRFeHBvcnRNb2R1bGUsXG4gICAgRHhvRGFzaGJvYXJkUGFyYW1ldGVyRGlhbG9nTW9kdWxlLFxuICAgIER4b0RhdGFJbnNwZWN0b3JNb2R1bGUsXG4gICAgRHhvRGF0YVNvdXJjZVdpemFyZE1vZHVsZSxcbiAgICBEeG9XaXphcmRTZXR0aW5nc01vZHVsZSxcbiAgICBEeG9EZXNpZ25lclRvb2xiYXJNb2R1bGUsXG4gICAgRHhvSXRlbUJpbmRpbmdQYW5lbE1vZHVsZSxcbiAgICBEeG9JdGVtT3B0aW9uc1BhbmVsTW9kdWxlLFxuICAgIER4b01vYmlsZUxheW91dE1vZHVsZSxcbiAgICBEeG9WaWV3ZXJBcGlNb2R1bGUsXG4gICAgRHhvRmV0Y2hSZW1vdGVTZXJ2aWNlTW9kdWxlLFxuICAgIER4SW50ZWdyYXRpb25Nb2R1bGUsXG4gICAgRHhUZW1wbGF0ZU1vZHVsZVxuICBdLFxuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBEeERhc2hib2FyZENvbnRyb2xDb21wb25lbnRcbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIER4RGFzaGJvYXJkQ29udHJvbENvbXBvbmVudCxcbiAgICBEeG9BamF4UmVtb3RlU2VydmljZU1vZHVsZSxcbiAgICBEeG9EYXRhUmVxdWVzdE9wdGlvbnNNb2R1bGUsXG4gICAgRHhvRXh0ZW5zaW9uc01vZHVsZSxcbiAgICBEeG9DaGFydEluZGljYXRvcnNNb2R1bGUsXG4gICAgRHhvRGFzaGJvYXJkRXhwb3J0TW9kdWxlLFxuICAgIER4b0Rhc2hib2FyZFBhcmFtZXRlckRpYWxvZ01vZHVsZSxcbiAgICBEeG9EYXRhSW5zcGVjdG9yTW9kdWxlLFxuICAgIER4b0RhdGFTb3VyY2VXaXphcmRNb2R1bGUsXG4gICAgRHhvV2l6YXJkU2V0dGluZ3NNb2R1bGUsXG4gICAgRHhvRGVzaWduZXJUb29sYmFyTW9kdWxlLFxuICAgIER4b0l0ZW1CaW5kaW5nUGFuZWxNb2R1bGUsXG4gICAgRHhvSXRlbU9wdGlvbnNQYW5lbE1vZHVsZSxcbiAgICBEeG9Nb2JpbGVMYXlvdXRNb2R1bGUsXG4gICAgRHhvVmlld2VyQXBpTW9kdWxlLFxuICAgIER4b0ZldGNoUmVtb3RlU2VydmljZU1vZHVsZSxcbiAgICBEeFRlbXBsYXRlTW9kdWxlXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgRHhEYXNoYm9hcmRDb250cm9sTW9kdWxlIHsgfVxuXG5cbiJdfQ==