@syncfusion/ej2-angular-charts 32.2.9 → 33.1.44-ngcc
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/@syncfusion/ej2-angular-charts.es5.js +5388 -0
- package/@syncfusion/ej2-angular-charts.es5.js.map +1 -0
- package/@syncfusion/ej2-angular-charts.js +5087 -0
- package/@syncfusion/ej2-angular-charts.js.map +1 -0
- package/LICENSE +10 -0
- package/dist/ej2-angular-charts.umd.js +6123 -0
- package/dist/ej2-angular-charts.umd.js.map +1 -0
- package/dist/ej2-angular-charts.umd.min.js +11 -0
- package/dist/ej2-angular-charts.umd.min.js.map +1 -0
- package/ej2-angular-charts.d.ts +14 -0
- package/ej2-angular-charts.metadata.json +1 -0
- package/package.json +12 -24
- package/public_api.d.ts +1 -1
- package/schematics/utils/lib-details.d.ts +3 -3
- package/schematics/utils/lib-details.js +3 -3
- package/schematics/utils/lib-details.ts +3 -3
- package/src/accumulation-chart/accumulationchart-all.module.d.ts +15 -21
- package/src/accumulation-chart/accumulationchart.component.d.ts +59 -61
- package/src/accumulation-chart/accumulationchart.module.d.ts +5 -13
- package/src/accumulation-chart/annotations.directive.d.ts +80 -85
- package/src/accumulation-chart/series.directive.d.ts +257 -249
- package/src/bullet-chart/bulletchart-all.module.d.ts +8 -14
- package/src/bullet-chart/bulletchart.component.d.ts +38 -41
- package/src/bullet-chart/bulletchart.module.d.ts +5 -12
- package/src/bullet-chart/ranges.directive.d.ts +68 -73
- package/src/chart/annotations.directive.d.ts +96 -101
- package/src/chart/axes.directive.d.ts +404 -409
- package/src/chart/categories.directive.d.ts +69 -74
- package/src/chart/chart-all.module.d.ts +67 -72
- package/src/chart/chart.component.d.ts +88 -89
- package/src/chart/chart.module.d.ts +5 -24
- package/src/chart/columns.directive.d.ts +30 -35
- package/src/chart/indicators.directive.d.ts +260 -255
- package/src/chart/multilevellabels.directive.d.ts +57 -62
- package/src/chart/rangecolorsettings.directive.d.ts +36 -41
- package/src/chart/rows.directive.d.ts +30 -35
- package/src/chart/segments.directive.d.ts +41 -46
- package/src/chart/selecteddataindexes.directive.d.ts +32 -37
- package/src/chart/series.directive.d.ts +500 -488
- package/src/chart/striplines.directive.d.ts +166 -171
- package/src/chart/trendlines.directive.d.ts +122 -117
- package/src/chart3d/axes.directive.d.ts +266 -271
- package/src/chart3d/chart3d-all.module.d.ts +20 -26
- package/src/chart3d/chart3d.component.d.ts +62 -65
- package/src/chart3d/chart3d.module.d.ts +5 -16
- package/src/chart3d/columns.directive.d.ts +26 -31
- package/src/chart3d/rows.directive.d.ts +26 -31
- package/src/chart3d/selecteddataindexes.directive.d.ts +32 -37
- package/src/chart3d/series.directive.d.ts +172 -177
- package/src/circularchart3d/circularchart3d-all.module.d.ts +13 -19
- package/src/circularchart3d/circularchart3d.component.d.ts +55 -58
- package/src/circularchart3d/circularchart3d.module.d.ts +5 -13
- package/src/circularchart3d/selecteddataindexes.directive.d.ts +32 -37
- package/src/circularchart3d/series.directive.d.ts +142 -147
- package/src/index.d.ts +68 -63
- package/src/range-navigator/rangenavigator-all.module.d.ts +8 -14
- package/src/range-navigator/rangenavigator.component.d.ts +41 -44
- package/src/range-navigator/rangenavigator.module.d.ts +5 -12
- package/src/range-navigator/series.directive.d.ts +78 -83
- package/src/sankey/links.directive.d.ts +41 -0
- package/src/sankey/nodes.directive.d.ts +44 -0
- package/src/sankey/sankey-all.module.d.ts +10 -0
- package/src/sankey/sankey.component.d.ts +53 -0
- package/src/sankey/sankey.module.d.ts +5 -0
- package/src/smithchart/series.directive.d.ts +88 -93
- package/src/smithchart/smithchart-all.module.d.ts +8 -14
- package/src/smithchart/smithchart.component.d.ts +41 -44
- package/src/smithchart/smithchart.module.d.ts +5 -12
- package/src/sparkline/rangebandsettings.directive.d.ts +33 -38
- package/src/sparkline/sparkline-all.module.d.ts +7 -13
- package/src/sparkline/sparkline.component.d.ts +43 -46
- package/src/sparkline/sparkline.module.d.ts +5 -12
- package/src/stock-chart/annotations.directive.d.ts +84 -89
- package/src/stock-chart/axes.directive.d.ts +286 -291
- package/src/stock-chart/indicators.directive.d.ts +221 -213
- package/src/stock-chart/periods.directive.d.ts +42 -47
- package/src/stock-chart/rows.directive.d.ts +30 -35
- package/src/stock-chart/selecteddataindexes.directive.d.ts +32 -37
- package/src/stock-chart/series.directive.d.ts +259 -247
- package/src/stock-chart/stockchart-all.module.d.ts +7 -13
- package/src/stock-chart/stockchart.component.d.ts +67 -68
- package/src/stock-chart/stockchart.module.d.ts +5 -20
- package/src/stock-chart/stockevents.directive.d.ts +83 -88
- package/src/stock-chart/trendlines.directive.d.ts +123 -118
- package/CHANGELOG.md +0 -3815
- package/esm2020/public_api.mjs +0 -2
- package/esm2020/src/accumulation-chart/accumulationchart-all.module.mjs +0 -53
- package/esm2020/src/accumulation-chart/accumulationchart.component.mjs +0 -146
- package/esm2020/src/accumulation-chart/accumulationchart.module.mjs +0 -43
- package/esm2020/src/accumulation-chart/annotations.directive.mjs +0 -62
- package/esm2020/src/accumulation-chart/series.directive.mjs +0 -62
- package/esm2020/src/bullet-chart/bulletchart-all.module.mjs +0 -32
- package/esm2020/src/bullet-chart/bulletchart.component.mjs +0 -85
- package/esm2020/src/bullet-chart/bulletchart.module.mjs +0 -34
- package/esm2020/src/bullet-chart/ranges.directive.mjs +0 -54
- package/esm2020/src/chart/annotations.directive.mjs +0 -60
- package/esm2020/src/chart/axes.directive.mjs +0 -58
- package/esm2020/src/chart/categories.directive.mjs +0 -59
- package/esm2020/src/chart/chart-all.module.mjs +0 -206
- package/esm2020/src/chart/chart.component.mjs +0 -525
- package/esm2020/src/chart/chart.module.mjs +0 -142
- package/esm2020/src/chart/columns.directive.mjs +0 -52
- package/esm2020/src/chart/indicators.directive.mjs +0 -54
- package/esm2020/src/chart/multilevellabels.directive.mjs +0 -60
- package/esm2020/src/chart/rangecolorsettings.directive.mjs +0 -52
- package/esm2020/src/chart/rows.directive.mjs +0 -52
- package/esm2020/src/chart/segments.directive.mjs +0 -58
- package/esm2020/src/chart/selecteddataindexes.directive.mjs +0 -52
- package/esm2020/src/chart/series.directive.mjs +0 -68
- package/esm2020/src/chart/striplines.directive.mjs +0 -56
- package/esm2020/src/chart/trendlines.directive.mjs +0 -58
- package/esm2020/src/chart3d/axes.directive.mjs +0 -52
- package/esm2020/src/chart3d/chart3d-all.module.mjs +0 -68
- package/esm2020/src/chart3d/chart3d.component.mjs +0 -189
- package/esm2020/src/chart3d/chart3d.module.mjs +0 -70
- package/esm2020/src/chart3d/columns.directive.mjs +0 -52
- package/esm2020/src/chart3d/rows.directive.mjs +0 -52
- package/esm2020/src/chart3d/selecteddataindexes.directive.mjs +0 -52
- package/esm2020/src/chart3d/series.directive.mjs +0 -62
- package/esm2020/src/circularchart3d/circularchart3d-all.module.mjs +0 -47
- package/esm2020/src/circularchart3d/circularchart3d.component.mjs +0 -125
- package/esm2020/src/circularchart3d/circularchart3d.module.mjs +0 -43
- package/esm2020/src/circularchart3d/selecteddataindexes.directive.mjs +0 -52
- package/esm2020/src/circularchart3d/series.directive.mjs +0 -62
- package/esm2020/src/index.mjs +0 -64
- package/esm2020/src/range-navigator/rangenavigator-all.module.mjs +0 -32
- package/esm2020/src/range-navigator/rangenavigator.component.mjs +0 -127
- package/esm2020/src/range-navigator/rangenavigator.module.mjs +0 -34
- package/esm2020/src/range-navigator/series.directive.mjs +0 -54
- package/esm2020/src/smithchart/series.directive.mjs +0 -46
- package/esm2020/src/smithchart/smithchart-all.module.mjs +0 -32
- package/esm2020/src/smithchart/smithchart.component.mjs +0 -78
- package/esm2020/src/smithchart/smithchart.module.mjs +0 -34
- package/esm2020/src/sparkline/rangebandsettings.directive.mjs +0 -46
- package/esm2020/src/sparkline/sparkline-all.module.mjs +0 -29
- package/esm2020/src/sparkline/sparkline.component.mjs +0 -71
- package/esm2020/src/sparkline/sparkline.module.mjs +0 -34
- package/esm2020/src/stock-chart/annotations.directive.mjs +0 -60
- package/esm2020/src/stock-chart/axes.directive.mjs +0 -52
- package/esm2020/src/stock-chart/indicators.directive.mjs +0 -54
- package/esm2020/src/stock-chart/periods.directive.mjs +0 -54
- package/esm2020/src/stock-chart/rows.directive.mjs +0 -52
- package/esm2020/src/stock-chart/selecteddataindexes.directive.mjs +0 -52
- package/esm2020/src/stock-chart/series.directive.mjs +0 -58
- package/esm2020/src/stock-chart/stockchart-all.module.mjs +0 -29
- package/esm2020/src/stock-chart/stockchart.component.mjs +0 -337
- package/esm2020/src/stock-chart/stockchart.module.mjs +0 -106
- package/esm2020/src/stock-chart/stockevents.directive.mjs +0 -54
- package/esm2020/src/stock-chart/trendlines.directive.mjs +0 -59
- package/esm2020/syncfusion-ej2-angular-charts.mjs +0 -5
- package/fesm2015/syncfusion-ej2-angular-charts.mjs +0 -4376
- package/fesm2015/syncfusion-ej2-angular-charts.mjs.map +0 -1
- package/fesm2020/syncfusion-ej2-angular-charts.mjs +0 -4376
- package/fesm2020/syncfusion-ej2-angular-charts.mjs.map +0 -1
- package/syncfusion-ej2-angular-charts.d.ts +0 -5
|
@@ -1,525 +0,0 @@
|
|
|
1
|
-
import { __decorate } from "tslib";
|
|
2
|
-
import { Component, ContentChild } from '@angular/core';
|
|
3
|
-
import { ComponentBase, ComponentMixins, setValue } from '@syncfusion/ej2-angular-base';
|
|
4
|
-
import { Chart } from '@syncfusion/ej2-charts';
|
|
5
|
-
import { Template } from '@syncfusion/ej2-angular-base';
|
|
6
|
-
import { SeriesCollectionDirective } from './series.directive';
|
|
7
|
-
import { AxesDirective } from './axes.directive';
|
|
8
|
-
import { RowsDirective } from './rows.directive';
|
|
9
|
-
import { ColumnsDirective } from './columns.directive';
|
|
10
|
-
import { RangeColorSettingsDirective } from './rangecolorsettings.directive';
|
|
11
|
-
import { AnnotationsDirective } from './annotations.directive';
|
|
12
|
-
import { SelectedDataIndexesDirective } from './selecteddataindexes.directive';
|
|
13
|
-
import { IndicatorsDirective } from './indicators.directive';
|
|
14
|
-
import * as i0 from "@angular/core";
|
|
15
|
-
export const inputs = ['accessibility', 'allowExport', 'allowMultiSelection', 'annotations', 'axes', 'background', 'backgroundImage', 'border', 'chartArea', 'columns', 'crosshair', 'currencyCode', 'dataSource', 'description', 'enableAnimation', 'enableAutoIntervalOnBothAxis', 'enableCanvas', 'enableExport', 'enableHtmlSanitizer', 'enablePersistence', 'enableRtl', 'enableSideBySidePlacement', 'focusBorderColor', 'focusBorderMargin', 'focusBorderWidth', 'height', 'highlightColor', 'highlightMode', 'highlightPattern', 'indicators', 'isMultiSelect', 'isTransposed', 'legendSettings', 'locale', 'margin', 'noDataTemplate', 'palettes', 'primaryXAxis', 'primaryYAxis', 'rangeColorSettings', 'rows', 'selectedDataIndexes', 'selectionMode', 'selectionPattern', 'series', 'stackLabels', 'subTitle', 'subTitleStyle', 'tabIndex', 'theme', 'title', 'titleStyle', 'tooltip', 'useGroupingSeparator', 'width', 'zoomSettings'];
|
|
16
|
-
export const outputs = ['afterExport', 'animationComplete', 'annotationRender', 'axisLabelClick', 'axisLabelRender', 'axisMultiLabelRender', 'axisRangeCalculated', 'beforeExport', 'beforePrint', 'beforeResize', 'chartDoubleClick', 'chartMouseClick', 'chartMouseDown', 'chartMouseLeave', 'chartMouseMove', 'chartMouseUp', 'drag', 'dragComplete', 'dragEnd', 'dragStart', 'legendClick', 'legendRender', 'load', 'loaded', 'multiLevelLabelClick', 'onZooming', 'pointClick', 'pointDoubleClick', 'pointMove', 'pointRender', 'resized', 'scrollChanged', 'scrollEnd', 'scrollStart', 'selectionComplete', 'seriesRender', 'sharedTooltipRender', 'textRender', 'tooltipRender', 'zoomComplete', 'dataSourceChange'];
|
|
17
|
-
export const twoWays = ['dataSource'];
|
|
18
|
-
/**
|
|
19
|
-
* Chart Component
|
|
20
|
-
* ```html
|
|
21
|
-
* <ejschart></ejschart>
|
|
22
|
-
* ```
|
|
23
|
-
*/
|
|
24
|
-
let ChartComponent = class ChartComponent extends Chart {
|
|
25
|
-
constructor(ngEle, srenderer, viewContainerRef, injector) {
|
|
26
|
-
super();
|
|
27
|
-
this.ngEle = ngEle;
|
|
28
|
-
this.srenderer = srenderer;
|
|
29
|
-
this.viewContainerRef = viewContainerRef;
|
|
30
|
-
this.injector = injector;
|
|
31
|
-
this.tags = ['series', 'axes', 'rows', 'columns', 'rangeColorSettings', 'annotations', 'selectedDataIndexes', 'indicators'];
|
|
32
|
-
this.element = this.ngEle.nativeElement;
|
|
33
|
-
this.injectedModules = this.injectedModules || [];
|
|
34
|
-
try {
|
|
35
|
-
let mod = this.injector.get('ChartsLineSeries');
|
|
36
|
-
if (this.injectedModules.indexOf(mod) === -1) {
|
|
37
|
-
this.injectedModules.push(mod);
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
catch { }
|
|
41
|
-
try {
|
|
42
|
-
let mod = this.injector.get('ChartsScatterSeries');
|
|
43
|
-
if (this.injectedModules.indexOf(mod) === -1) {
|
|
44
|
-
this.injectedModules.push(mod);
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
catch { }
|
|
48
|
-
try {
|
|
49
|
-
let mod = this.injector.get('ChartsColumnSeries');
|
|
50
|
-
if (this.injectedModules.indexOf(mod) === -1) {
|
|
51
|
-
this.injectedModules.push(mod);
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
catch { }
|
|
55
|
-
try {
|
|
56
|
-
let mod = this.injector.get('ChartsSplineSeries');
|
|
57
|
-
if (this.injectedModules.indexOf(mod) === -1) {
|
|
58
|
-
this.injectedModules.push(mod);
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
catch { }
|
|
62
|
-
try {
|
|
63
|
-
let mod = this.injector.get('ChartsSplineAreaSeries');
|
|
64
|
-
if (this.injectedModules.indexOf(mod) === -1) {
|
|
65
|
-
this.injectedModules.push(mod);
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
catch { }
|
|
69
|
-
try {
|
|
70
|
-
let mod = this.injector.get('ChartsStripLine');
|
|
71
|
-
if (this.injectedModules.indexOf(mod) === -1) {
|
|
72
|
-
this.injectedModules.push(mod);
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
catch { }
|
|
76
|
-
try {
|
|
77
|
-
let mod = this.injector.get('ChartsAreaSeries');
|
|
78
|
-
if (this.injectedModules.indexOf(mod) === -1) {
|
|
79
|
-
this.injectedModules.push(mod);
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
catch { }
|
|
83
|
-
try {
|
|
84
|
-
let mod = this.injector.get('ChartsScrollBar');
|
|
85
|
-
if (this.injectedModules.indexOf(mod) === -1) {
|
|
86
|
-
this.injectedModules.push(mod);
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
catch { }
|
|
90
|
-
try {
|
|
91
|
-
let mod = this.injector.get('ChartsStepLineSeries');
|
|
92
|
-
if (this.injectedModules.indexOf(mod) === -1) {
|
|
93
|
-
this.injectedModules.push(mod);
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
catch { }
|
|
97
|
-
try {
|
|
98
|
-
let mod = this.injector.get('ChartsStepAreaSeries');
|
|
99
|
-
if (this.injectedModules.indexOf(mod) === -1) {
|
|
100
|
-
this.injectedModules.push(mod);
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
catch { }
|
|
104
|
-
try {
|
|
105
|
-
let mod = this.injector.get('ChartsStackingColumnSeries');
|
|
106
|
-
if (this.injectedModules.indexOf(mod) === -1) {
|
|
107
|
-
this.injectedModules.push(mod);
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
catch { }
|
|
111
|
-
try {
|
|
112
|
-
let mod = this.injector.get('ChartsStackingLineSeries');
|
|
113
|
-
if (this.injectedModules.indexOf(mod) === -1) {
|
|
114
|
-
this.injectedModules.push(mod);
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
catch { }
|
|
118
|
-
try {
|
|
119
|
-
let mod = this.injector.get('ChartsStackingAreaSeries');
|
|
120
|
-
if (this.injectedModules.indexOf(mod) === -1) {
|
|
121
|
-
this.injectedModules.push(mod);
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
catch { }
|
|
125
|
-
try {
|
|
126
|
-
let mod = this.injector.get('ChartsStackingStepAreaSeries');
|
|
127
|
-
if (this.injectedModules.indexOf(mod) === -1) {
|
|
128
|
-
this.injectedModules.push(mod);
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
catch { }
|
|
132
|
-
try {
|
|
133
|
-
let mod = this.injector.get('ChartsBarSeries');
|
|
134
|
-
if (this.injectedModules.indexOf(mod) === -1) {
|
|
135
|
-
this.injectedModules.push(mod);
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
catch { }
|
|
139
|
-
try {
|
|
140
|
-
let mod = this.injector.get('ChartsStackingBarSeries');
|
|
141
|
-
if (this.injectedModules.indexOf(mod) === -1) {
|
|
142
|
-
this.injectedModules.push(mod);
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
catch { }
|
|
146
|
-
try {
|
|
147
|
-
let mod = this.injector.get('ChartsRangeColumnSeries');
|
|
148
|
-
if (this.injectedModules.indexOf(mod) === -1) {
|
|
149
|
-
this.injectedModules.push(mod);
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
catch { }
|
|
153
|
-
try {
|
|
154
|
-
let mod = this.injector.get('ChartsBubbleSeries');
|
|
155
|
-
if (this.injectedModules.indexOf(mod) === -1) {
|
|
156
|
-
this.injectedModules.push(mod);
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
catch { }
|
|
160
|
-
try {
|
|
161
|
-
let mod = this.injector.get('ChartsTooltip');
|
|
162
|
-
if (this.injectedModules.indexOf(mod) === -1) {
|
|
163
|
-
this.injectedModules.push(mod);
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
catch { }
|
|
167
|
-
try {
|
|
168
|
-
let mod = this.injector.get('ChartsCrosshair');
|
|
169
|
-
if (this.injectedModules.indexOf(mod) === -1) {
|
|
170
|
-
this.injectedModules.push(mod);
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
catch { }
|
|
174
|
-
try {
|
|
175
|
-
let mod = this.injector.get('ChartsCategory');
|
|
176
|
-
if (this.injectedModules.indexOf(mod) === -1) {
|
|
177
|
-
this.injectedModules.push(mod);
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
|
-
catch { }
|
|
181
|
-
try {
|
|
182
|
-
let mod = this.injector.get('ChartsDateTime');
|
|
183
|
-
if (this.injectedModules.indexOf(mod) === -1) {
|
|
184
|
-
this.injectedModules.push(mod);
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
catch { }
|
|
188
|
-
try {
|
|
189
|
-
let mod = this.injector.get('ChartsLogarithmic');
|
|
190
|
-
if (this.injectedModules.indexOf(mod) === -1) {
|
|
191
|
-
this.injectedModules.push(mod);
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
catch { }
|
|
195
|
-
try {
|
|
196
|
-
let mod = this.injector.get('ChartsLegend');
|
|
197
|
-
if (this.injectedModules.indexOf(mod) === -1) {
|
|
198
|
-
this.injectedModules.push(mod);
|
|
199
|
-
}
|
|
200
|
-
}
|
|
201
|
-
catch { }
|
|
202
|
-
try {
|
|
203
|
-
let mod = this.injector.get('ChartsZoom');
|
|
204
|
-
if (this.injectedModules.indexOf(mod) === -1) {
|
|
205
|
-
this.injectedModules.push(mod);
|
|
206
|
-
}
|
|
207
|
-
}
|
|
208
|
-
catch { }
|
|
209
|
-
try {
|
|
210
|
-
let mod = this.injector.get('ChartsDataLabel');
|
|
211
|
-
if (this.injectedModules.indexOf(mod) === -1) {
|
|
212
|
-
this.injectedModules.push(mod);
|
|
213
|
-
}
|
|
214
|
-
}
|
|
215
|
-
catch { }
|
|
216
|
-
try {
|
|
217
|
-
let mod = this.injector.get('ChartsSelection');
|
|
218
|
-
if (this.injectedModules.indexOf(mod) === -1) {
|
|
219
|
-
this.injectedModules.push(mod);
|
|
220
|
-
}
|
|
221
|
-
}
|
|
222
|
-
catch { }
|
|
223
|
-
try {
|
|
224
|
-
let mod = this.injector.get('ChartsChartAnnotation');
|
|
225
|
-
if (this.injectedModules.indexOf(mod) === -1) {
|
|
226
|
-
this.injectedModules.push(mod);
|
|
227
|
-
}
|
|
228
|
-
}
|
|
229
|
-
catch { }
|
|
230
|
-
try {
|
|
231
|
-
let mod = this.injector.get('ChartsHiloSeries');
|
|
232
|
-
if (this.injectedModules.indexOf(mod) === -1) {
|
|
233
|
-
this.injectedModules.push(mod);
|
|
234
|
-
}
|
|
235
|
-
}
|
|
236
|
-
catch { }
|
|
237
|
-
try {
|
|
238
|
-
let mod = this.injector.get('ChartsHiloOpenCloseSeries');
|
|
239
|
-
if (this.injectedModules.indexOf(mod) === -1) {
|
|
240
|
-
this.injectedModules.push(mod);
|
|
241
|
-
}
|
|
242
|
-
}
|
|
243
|
-
catch { }
|
|
244
|
-
try {
|
|
245
|
-
let mod = this.injector.get('ChartsWaterfallSeries');
|
|
246
|
-
if (this.injectedModules.indexOf(mod) === -1) {
|
|
247
|
-
this.injectedModules.push(mod);
|
|
248
|
-
}
|
|
249
|
-
}
|
|
250
|
-
catch { }
|
|
251
|
-
try {
|
|
252
|
-
let mod = this.injector.get('ChartsRangeAreaSeries');
|
|
253
|
-
if (this.injectedModules.indexOf(mod) === -1) {
|
|
254
|
-
this.injectedModules.push(mod);
|
|
255
|
-
}
|
|
256
|
-
}
|
|
257
|
-
catch { }
|
|
258
|
-
try {
|
|
259
|
-
let mod = this.injector.get('ChartsRangeStepAreaSeries');
|
|
260
|
-
if (this.injectedModules.indexOf(mod) === -1) {
|
|
261
|
-
this.injectedModules.push(mod);
|
|
262
|
-
}
|
|
263
|
-
}
|
|
264
|
-
catch { }
|
|
265
|
-
try {
|
|
266
|
-
let mod = this.injector.get('ChartsSplineRangeAreaSeries');
|
|
267
|
-
if (this.injectedModules.indexOf(mod) === -1) {
|
|
268
|
-
this.injectedModules.push(mod);
|
|
269
|
-
}
|
|
270
|
-
}
|
|
271
|
-
catch { }
|
|
272
|
-
try {
|
|
273
|
-
let mod = this.injector.get('ChartsCandleSeries');
|
|
274
|
-
if (this.injectedModules.indexOf(mod) === -1) {
|
|
275
|
-
this.injectedModules.push(mod);
|
|
276
|
-
}
|
|
277
|
-
}
|
|
278
|
-
catch { }
|
|
279
|
-
try {
|
|
280
|
-
let mod = this.injector.get('ChartsPolarSeries');
|
|
281
|
-
if (this.injectedModules.indexOf(mod) === -1) {
|
|
282
|
-
this.injectedModules.push(mod);
|
|
283
|
-
}
|
|
284
|
-
}
|
|
285
|
-
catch { }
|
|
286
|
-
try {
|
|
287
|
-
let mod = this.injector.get('ChartsRadarSeries');
|
|
288
|
-
if (this.injectedModules.indexOf(mod) === -1) {
|
|
289
|
-
this.injectedModules.push(mod);
|
|
290
|
-
}
|
|
291
|
-
}
|
|
292
|
-
catch { }
|
|
293
|
-
try {
|
|
294
|
-
let mod = this.injector.get('ChartsSmaIndicator');
|
|
295
|
-
if (this.injectedModules.indexOf(mod) === -1) {
|
|
296
|
-
this.injectedModules.push(mod);
|
|
297
|
-
}
|
|
298
|
-
}
|
|
299
|
-
catch { }
|
|
300
|
-
try {
|
|
301
|
-
let mod = this.injector.get('ChartsTmaIndicator');
|
|
302
|
-
if (this.injectedModules.indexOf(mod) === -1) {
|
|
303
|
-
this.injectedModules.push(mod);
|
|
304
|
-
}
|
|
305
|
-
}
|
|
306
|
-
catch { }
|
|
307
|
-
try {
|
|
308
|
-
let mod = this.injector.get('ChartsEmaIndicator');
|
|
309
|
-
if (this.injectedModules.indexOf(mod) === -1) {
|
|
310
|
-
this.injectedModules.push(mod);
|
|
311
|
-
}
|
|
312
|
-
}
|
|
313
|
-
catch { }
|
|
314
|
-
try {
|
|
315
|
-
let mod = this.injector.get('ChartsAccumulationDistributionIndicator');
|
|
316
|
-
if (this.injectedModules.indexOf(mod) === -1) {
|
|
317
|
-
this.injectedModules.push(mod);
|
|
318
|
-
}
|
|
319
|
-
}
|
|
320
|
-
catch { }
|
|
321
|
-
try {
|
|
322
|
-
let mod = this.injector.get('ChartsMacdIndicator');
|
|
323
|
-
if (this.injectedModules.indexOf(mod) === -1) {
|
|
324
|
-
this.injectedModules.push(mod);
|
|
325
|
-
}
|
|
326
|
-
}
|
|
327
|
-
catch { }
|
|
328
|
-
try {
|
|
329
|
-
let mod = this.injector.get('ChartsAtrIndicator');
|
|
330
|
-
if (this.injectedModules.indexOf(mod) === -1) {
|
|
331
|
-
this.injectedModules.push(mod);
|
|
332
|
-
}
|
|
333
|
-
}
|
|
334
|
-
catch { }
|
|
335
|
-
try {
|
|
336
|
-
let mod = this.injector.get('ChartsRsiIndicator');
|
|
337
|
-
if (this.injectedModules.indexOf(mod) === -1) {
|
|
338
|
-
this.injectedModules.push(mod);
|
|
339
|
-
}
|
|
340
|
-
}
|
|
341
|
-
catch { }
|
|
342
|
-
try {
|
|
343
|
-
let mod = this.injector.get('ChartsMomentumIndicator');
|
|
344
|
-
if (this.injectedModules.indexOf(mod) === -1) {
|
|
345
|
-
this.injectedModules.push(mod);
|
|
346
|
-
}
|
|
347
|
-
}
|
|
348
|
-
catch { }
|
|
349
|
-
try {
|
|
350
|
-
let mod = this.injector.get('ChartsStochasticIndicator');
|
|
351
|
-
if (this.injectedModules.indexOf(mod) === -1) {
|
|
352
|
-
this.injectedModules.push(mod);
|
|
353
|
-
}
|
|
354
|
-
}
|
|
355
|
-
catch { }
|
|
356
|
-
try {
|
|
357
|
-
let mod = this.injector.get('ChartsBollingerBands');
|
|
358
|
-
if (this.injectedModules.indexOf(mod) === -1) {
|
|
359
|
-
this.injectedModules.push(mod);
|
|
360
|
-
}
|
|
361
|
-
}
|
|
362
|
-
catch { }
|
|
363
|
-
try {
|
|
364
|
-
let mod = this.injector.get('ChartsBoxAndWhiskerSeries');
|
|
365
|
-
if (this.injectedModules.indexOf(mod) === -1) {
|
|
366
|
-
this.injectedModules.push(mod);
|
|
367
|
-
}
|
|
368
|
-
}
|
|
369
|
-
catch { }
|
|
370
|
-
try {
|
|
371
|
-
let mod = this.injector.get('ChartsHistogramSeries');
|
|
372
|
-
if (this.injectedModules.indexOf(mod) === -1) {
|
|
373
|
-
this.injectedModules.push(mod);
|
|
374
|
-
}
|
|
375
|
-
}
|
|
376
|
-
catch { }
|
|
377
|
-
try {
|
|
378
|
-
let mod = this.injector.get('ChartsErrorBar');
|
|
379
|
-
if (this.injectedModules.indexOf(mod) === -1) {
|
|
380
|
-
this.injectedModules.push(mod);
|
|
381
|
-
}
|
|
382
|
-
}
|
|
383
|
-
catch { }
|
|
384
|
-
try {
|
|
385
|
-
let mod = this.injector.get('ChartsTrendlines');
|
|
386
|
-
if (this.injectedModules.indexOf(mod) === -1) {
|
|
387
|
-
this.injectedModules.push(mod);
|
|
388
|
-
}
|
|
389
|
-
}
|
|
390
|
-
catch { }
|
|
391
|
-
try {
|
|
392
|
-
let mod = this.injector.get('ChartsDateTimeCategory');
|
|
393
|
-
if (this.injectedModules.indexOf(mod) === -1) {
|
|
394
|
-
this.injectedModules.push(mod);
|
|
395
|
-
}
|
|
396
|
-
}
|
|
397
|
-
catch { }
|
|
398
|
-
try {
|
|
399
|
-
let mod = this.injector.get('ChartsMultiColoredLineSeries');
|
|
400
|
-
if (this.injectedModules.indexOf(mod) === -1) {
|
|
401
|
-
this.injectedModules.push(mod);
|
|
402
|
-
}
|
|
403
|
-
}
|
|
404
|
-
catch { }
|
|
405
|
-
try {
|
|
406
|
-
let mod = this.injector.get('ChartsMultiColoredAreaSeries');
|
|
407
|
-
if (this.injectedModules.indexOf(mod) === -1) {
|
|
408
|
-
this.injectedModules.push(mod);
|
|
409
|
-
}
|
|
410
|
-
}
|
|
411
|
-
catch { }
|
|
412
|
-
try {
|
|
413
|
-
let mod = this.injector.get('ChartsMultiLevelLabel');
|
|
414
|
-
if (this.injectedModules.indexOf(mod) === -1) {
|
|
415
|
-
this.injectedModules.push(mod);
|
|
416
|
-
}
|
|
417
|
-
}
|
|
418
|
-
catch { }
|
|
419
|
-
try {
|
|
420
|
-
let mod = this.injector.get('ChartsParetoSeries');
|
|
421
|
-
if (this.injectedModules.indexOf(mod) === -1) {
|
|
422
|
-
this.injectedModules.push(mod);
|
|
423
|
-
}
|
|
424
|
-
}
|
|
425
|
-
catch { }
|
|
426
|
-
try {
|
|
427
|
-
let mod = this.injector.get('ChartsExport');
|
|
428
|
-
if (this.injectedModules.indexOf(mod) === -1) {
|
|
429
|
-
this.injectedModules.push(mod);
|
|
430
|
-
}
|
|
431
|
-
}
|
|
432
|
-
catch { }
|
|
433
|
-
try {
|
|
434
|
-
let mod = this.injector.get('ChartsDataEditing');
|
|
435
|
-
if (this.injectedModules.indexOf(mod) === -1) {
|
|
436
|
-
this.injectedModules.push(mod);
|
|
437
|
-
}
|
|
438
|
-
}
|
|
439
|
-
catch { }
|
|
440
|
-
try {
|
|
441
|
-
let mod = this.injector.get('ChartsHighlight');
|
|
442
|
-
if (this.injectedModules.indexOf(mod) === -1) {
|
|
443
|
-
this.injectedModules.push(mod);
|
|
444
|
-
}
|
|
445
|
-
}
|
|
446
|
-
catch { }
|
|
447
|
-
try {
|
|
448
|
-
let mod = this.injector.get('ChartsLastValueLabel');
|
|
449
|
-
if (this.injectedModules.indexOf(mod) === -1) {
|
|
450
|
-
this.injectedModules.push(mod);
|
|
451
|
-
}
|
|
452
|
-
}
|
|
453
|
-
catch { }
|
|
454
|
-
this.registerEvents(outputs);
|
|
455
|
-
this.addTwoWay.call(this, twoWays);
|
|
456
|
-
setValue('currentInstance', this, this.viewContainerRef);
|
|
457
|
-
this.context = new ComponentBase();
|
|
458
|
-
}
|
|
459
|
-
ngOnInit() {
|
|
460
|
-
this.context.ngOnInit(this);
|
|
461
|
-
}
|
|
462
|
-
ngAfterViewInit() {
|
|
463
|
-
this.context.ngAfterViewInit(this);
|
|
464
|
-
}
|
|
465
|
-
ngOnDestroy() {
|
|
466
|
-
this.context.ngOnDestroy(this);
|
|
467
|
-
}
|
|
468
|
-
ngAfterContentChecked() {
|
|
469
|
-
this.tagObjects[0].instance = this.childSeries;
|
|
470
|
-
if (this.childAxes) {
|
|
471
|
-
this.tagObjects[1].instance = this.childAxes;
|
|
472
|
-
}
|
|
473
|
-
if (this.childRows) {
|
|
474
|
-
this.tagObjects[2].instance = this.childRows;
|
|
475
|
-
}
|
|
476
|
-
if (this.childColumns) {
|
|
477
|
-
this.tagObjects[3].instance = this.childColumns;
|
|
478
|
-
}
|
|
479
|
-
if (this.childRangeColorSettings) {
|
|
480
|
-
this.tagObjects[4].instance = this.childRangeColorSettings;
|
|
481
|
-
}
|
|
482
|
-
if (this.childAnnotations) {
|
|
483
|
-
this.tagObjects[5].instance = this.childAnnotations;
|
|
484
|
-
}
|
|
485
|
-
if (this.childSelectedDataIndexes) {
|
|
486
|
-
this.tagObjects[6].instance = this.childSelectedDataIndexes;
|
|
487
|
-
}
|
|
488
|
-
if (this.childIndicators) {
|
|
489
|
-
this.tagObjects[7].instance = this.childIndicators;
|
|
490
|
-
}
|
|
491
|
-
this.context.ngAfterContentChecked(this);
|
|
492
|
-
}
|
|
493
|
-
};
|
|
494
|
-
ChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ChartComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ViewContainerRef }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
|
|
495
|
-
ChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: ChartComponent, selector: "ejs-chart", inputs: { accessibility: "accessibility", allowExport: "allowExport", allowMultiSelection: "allowMultiSelection", annotations: "annotations", axes: "axes", background: "background", backgroundImage: "backgroundImage", border: "border", chartArea: "chartArea", columns: "columns", crosshair: "crosshair", currencyCode: "currencyCode", dataSource: "dataSource", description: "description", enableAnimation: "enableAnimation", enableAutoIntervalOnBothAxis: "enableAutoIntervalOnBothAxis", enableCanvas: "enableCanvas", enableExport: "enableExport", enableHtmlSanitizer: "enableHtmlSanitizer", enablePersistence: "enablePersistence", enableRtl: "enableRtl", enableSideBySidePlacement: "enableSideBySidePlacement", focusBorderColor: "focusBorderColor", focusBorderMargin: "focusBorderMargin", focusBorderWidth: "focusBorderWidth", height: "height", highlightColor: "highlightColor", highlightMode: "highlightMode", highlightPattern: "highlightPattern", indicators: "indicators", isMultiSelect: "isMultiSelect", isTransposed: "isTransposed", legendSettings: "legendSettings", locale: "locale", margin: "margin", noDataTemplate: "noDataTemplate", palettes: "palettes", primaryXAxis: "primaryXAxis", primaryYAxis: "primaryYAxis", rangeColorSettings: "rangeColorSettings", rows: "rows", selectedDataIndexes: "selectedDataIndexes", selectionMode: "selectionMode", selectionPattern: "selectionPattern", series: "series", stackLabels: "stackLabels", subTitle: "subTitle", subTitleStyle: "subTitleStyle", tabIndex: "tabIndex", theme: "theme", title: "title", titleStyle: "titleStyle", tooltip: "tooltip", useGroupingSeparator: "useGroupingSeparator", width: "width", zoomSettings: "zoomSettings" }, outputs: { afterExport: "afterExport", animationComplete: "animationComplete", annotationRender: "annotationRender", axisLabelClick: "axisLabelClick", axisLabelRender: "axisLabelRender", axisMultiLabelRender: "axisMultiLabelRender", axisRangeCalculated: "axisRangeCalculated", beforeExport: "beforeExport", beforePrint: "beforePrint", beforeResize: "beforeResize", chartDoubleClick: "chartDoubleClick", chartMouseClick: "chartMouseClick", chartMouseDown: "chartMouseDown", chartMouseLeave: "chartMouseLeave", chartMouseMove: "chartMouseMove", chartMouseUp: "chartMouseUp", drag: "drag", dragComplete: "dragComplete", dragEnd: "dragEnd", dragStart: "dragStart", legendClick: "legendClick", legendRender: "legendRender", load: "load", loaded: "loaded", multiLevelLabelClick: "multiLevelLabelClick", onZooming: "onZooming", pointClick: "pointClick", pointDoubleClick: "pointDoubleClick", pointMove: "pointMove", pointRender: "pointRender", resized: "resized", scrollChanged: "scrollChanged", scrollEnd: "scrollEnd", scrollStart: "scrollStart", selectionComplete: "selectionComplete", seriesRender: "seriesRender", sharedTooltipRender: "sharedTooltipRender", textRender: "textRender", tooltipRender: "tooltipRender", zoomComplete: "zoomComplete", dataSourceChange: "dataSourceChange" }, queries: [{ propertyName: "tooltip_template", first: true, predicate: ["tooltipTemplate"], descendants: true }, { propertyName: "childSeries", first: true, predicate: SeriesCollectionDirective, descendants: true }, { propertyName: "childAxes", first: true, predicate: AxesDirective, descendants: true }, { propertyName: "childRows", first: true, predicate: RowsDirective, descendants: true }, { propertyName: "childColumns", first: true, predicate: ColumnsDirective, descendants: true }, { propertyName: "childRangeColorSettings", first: true, predicate: RangeColorSettingsDirective, descendants: true }, { propertyName: "childAnnotations", first: true, predicate: AnnotationsDirective, descendants: true }, { propertyName: "childSelectedDataIndexes", first: true, predicate: SelectedDataIndexesDirective, descendants: true }, { propertyName: "childIndicators", first: true, predicate: IndicatorsDirective, descendants: true }], usesInheritance: true, ngImport: i0, template: '', isInline: true });
|
|
496
|
-
__decorate([
|
|
497
|
-
Template()
|
|
498
|
-
], ChartComponent.prototype, "tooltip_template", void 0);
|
|
499
|
-
ChartComponent = __decorate([
|
|
500
|
-
ComponentMixins([ComponentBase])
|
|
501
|
-
], ChartComponent);
|
|
502
|
-
export { ChartComponent };
|
|
503
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ChartComponent, decorators: [{
|
|
504
|
-
type: Component,
|
|
505
|
-
args: [{
|
|
506
|
-
selector: 'ejs-chart',
|
|
507
|
-
inputs: inputs,
|
|
508
|
-
outputs: outputs,
|
|
509
|
-
template: '',
|
|
510
|
-
queries: {
|
|
511
|
-
childSeries: new ContentChild(SeriesCollectionDirective),
|
|
512
|
-
childAxes: new ContentChild(AxesDirective),
|
|
513
|
-
childRows: new ContentChild(RowsDirective),
|
|
514
|
-
childColumns: new ContentChild(ColumnsDirective),
|
|
515
|
-
childRangeColorSettings: new ContentChild(RangeColorSettingsDirective),
|
|
516
|
-
childAnnotations: new ContentChild(AnnotationsDirective),
|
|
517
|
-
childSelectedDataIndexes: new ContentChild(SelectedDataIndexesDirective),
|
|
518
|
-
childIndicators: new ContentChild(IndicatorsDirective)
|
|
519
|
-
}
|
|
520
|
-
}]
|
|
521
|
-
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ViewContainerRef }, { type: i0.Injector }]; }, propDecorators: { tooltip_template: [{
|
|
522
|
-
type: ContentChild,
|
|
523
|
-
args: ['tooltipTemplate']
|
|
524
|
-
}] } });
|
|
525
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NoYXJ0L2NoYXJ0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBd0csWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlKLE9BQU8sRUFBRSxhQUFhLEVBQStCLGVBQWUsRUFBMEIsUUFBUSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDN0ksT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN4RCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDakQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQy9ELE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDOztBQUU3RCxNQUFNLENBQUMsTUFBTSxNQUFNLEdBQWEsQ0FBQyxlQUFlLEVBQUMsYUFBYSxFQUFDLHFCQUFxQixFQUFDLGFBQWEsRUFBQyxNQUFNLEVBQUMsWUFBWSxFQUFDLGlCQUFpQixFQUFDLFFBQVEsRUFBQyxXQUFXLEVBQUMsU0FBUyxFQUFDLFdBQVcsRUFBQyxjQUFjLEVBQUMsWUFBWSxFQUFDLGFBQWEsRUFBQyxpQkFBaUIsRUFBQyw4QkFBOEIsRUFBQyxj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QkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIFZpZXdDb250YWluZXJSZWYsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBRdWVyeUxpc3QsIFJlbmRlcmVyMiwgSW5qZWN0b3IsIFZhbHVlUHJvdmlkZXIsIENvbnRlbnRDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tcG9uZW50QmFzZSwgSUNvbXBvbmVudEJhc2UsIGFwcGx5TWl4aW5zLCBDb21wb25lbnRNaXhpbnMsIFByb3BlcnR5Q29sbGVjdGlvbkluZm8sIHNldFZhbHVlIH0gZnJvbSAnQHN5bmNmdXNpb24vZWoyLWFuZ3VsYXItYmFzZSc7XG5pbXBvcnQgeyBDaGFydCB9IGZyb20gJ0BzeW5jZnVzaW9uL2VqMi1jaGFydHMnO1xuaW1wb3J0IHsgVGVtcGxhdGUgfSBmcm9tICdAc3luY2Z1c2lvbi9lajItYW5ndWxhci1iYXNlJztcbmltcG9ydCB7IFNlcmllc0NvbGxlY3Rpb25EaXJlY3RpdmUgfSBmcm9tICcuL3Nlcmllcy5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgQXhlc0RpcmVjdGl2ZSB9IGZyb20gJy4vYXhlcy5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgUm93c0RpcmVjdGl2ZSB9IGZyb20gJy4vcm93cy5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgQ29sdW1uc0RpcmVjdGl2ZSB9IGZyb20gJy4vY29sdW1ucy5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgUmFuZ2VDb2xvclNldHRpbmdzRGlyZWN0aXZlIH0gZnJvbSAnLi9yYW5nZWNvbG9yc2V0dGluZ3MuZGlyZWN0aXZlJztcbmltcG9ydCB7IEFubm90YXRpb25zRGlyZWN0aXZlIH0gZnJvbSAnLi9hbm5vdGF0aW9ucy5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgU2VsZWN0ZWREYXRhSW5kZXhlc0RpcmVjdGl2ZSB9IGZyb20gJy4vc2VsZWN0ZWRkYXRhaW5kZXhlcy5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgSW5kaWNhdG9yc0RpcmVjdGl2ZSB9IGZyb20gJy4vaW5kaWNhdG9ycy5kaXJlY3RpdmUnO1xuXG5leHBvcnQgY29uc3QgaW5wdXRzOiBzdHJpbmdbXSA9IFsnYWNjZXNzaWJpbGl0eScsJ2FsbG93RXhwb3J0JywnYWxsb3dNdWx0aVNlbGVjdGlvbicsJ2Fubm90YXRpb25zJywnYXhlcycsJ2JhY2tncm91bmQnLCdiYWNrZ3JvdW5kSW1hZ2UnLCdib3JkZXInLCdjaGFydEFyZWEnLCdjb2x1bW5zJywnY3Jvc3NoYWlyJywnY3VycmVuY3lDb2RlJywnZGF0YVNvdXJjZScsJ2Rlc2NyaXB0aW9uJywnZW5hYmxlQW5pbWF0aW9uJywnZW5hYmxlQXV0b0ludGVydmFsT25Cb3RoQXhpcycsJ2VuYWJsZUNhbnZhcycsJ2VuYWJsZUV4cG9ydCcsJ2VuYWJsZUh0bWxTYW5pdGl6ZXInLCdlbmFibGVQZXJzaXN0ZW5jZScsJ2VuYWJsZVJ0bCcsJ2VuYWJsZVNpZGVCeVNpZGVQbGFjZW1lbnQnLCdmb2N1c0JvcmRlckNvbG9yJywnZm9jdXNCb3JkZXJNYXJnaW4nLCdmb2N1c0JvcmRlcldpZHRoJywnaGVpZ2h0JywnaGlnaGxpZ2h0Q29sb3InLCdoaWdobGlnaHRNb2RlJywnaGlnaGxpZ2h0UGF0dGVybicsJ2luZGljYXRvcnMnLCdpc011bHRpU2VsZWN0JywnaXNUcmFuc3Bvc2VkJywnbGVnZW5kU2V0dGluZ3MnLCdsb2NhbGUnLCdtYXJnaW4nLCdub0RhdGFUZW1wbGF0ZScsJ3BhbGV0dGVzJywncHJpbWFyeVhBeGlzJywncHJpbWFyeVlBeGlzJywncmFuZ2VDb2xvclNldHRpbmdzJywncm93cycsJ3NlbGVjdGVkRGF0YUluZGV4ZXMnLCdzZWxlY3Rpb25Nb2RlJywnc2VsZWN0aW9uUGF0dGVybicsJ3NlcmllcycsJ3N0YWNrTGFiZWxzJywnc3ViVGl0bGUnLCdzdWJUaXRsZVN0eWxlJywndGFiSW5kZXgnLCd0aGVtZScsJ3RpdGxlJywndGl0bGVTdHlsZScsJ3Rvb2x0aXAnLCd1c2VHcm91cGluZ1NlcGFyYXRvcicsJ3dpZHRoJywnem9vbVNldHRpbmdzJ107XG5leHBvcnQgY29uc3Qgb3V0cHV0czogc3RyaW5nW10gPSBbJ2FmdGVyRXhwb3J0JywnYW5pbWF0aW9uQ29tcGxldGUnLCdhbm5vdGF0aW9uUmVuZGVyJywnYXhpc0xhYmVsQ2xpY2snLCdheGlzTGFiZWxSZW5kZXInLCdheGlzTXVsdGlMYWJlbFJlbmRlcicsJ2F4aXNSYW5nZUNhbGN1bGF0ZWQnLCdiZWZvcmVFeHBvcnQnLCdiZWZvcmVQcmludCcsJ2JlZm9yZVJlc2l6ZScsJ2NoYXJ0RG91YmxlQ2xpY2snLCdjaGFydE1vdXNlQ2xpY2snLCdjaGFydE1vdXNlRG93bicsJ2NoYXJ0TW91c2VMZWF2ZScsJ2NoYXJ0TW91c2VNb3ZlJywnY2hhcnRNb3VzZVVwJywnZHJhZycsJ2RyYWdDb21wbGV0ZScsJ2RyYWdFbmQnLCdkcmFnU3RhcnQnLCdsZWdlbmRDbGljaycsJ2xlZ2VuZFJlbmRlcicsJ2xvYWQnLCdsb2FkZWQnLCdtdWx0aUxldmVsTGFiZWxDbGljaycsJ29uWm9vbWluZycsJ3BvaW50Q2xpY2snLCdwb2ludERvdWJsZUNsaWNrJywncG9pbnRNb3ZlJywncG9pbnRSZW5kZXInLCdyZXNpemVkJywnc2Nyb2xsQ2hhbmdlZCcsJ3Njcm9sbEVuZCcsJ3Njcm9sbFN0YXJ0Jywnc2VsZWN0aW9uQ29tcGxldGUnLCdzZXJpZXNSZW5kZXInLCdzaGFyZWRUb29sdGlwUmVuZGVyJywndGV4dFJlbmRlcicsJ3Rvb2x0aXBSZW5kZXInLCd6b29tQ29tcGxldGUnLCdkYXRhU291cmNlQ2hhbmdlJ107XG5leHBvcnQgY29uc3QgdHdvV2F5czogc3RyaW5nW10gPSBbJ2RhdGFTb3VyY2UnXTtcblxuLyoqXG4gKiBDaGFydCBDb21wb25lbnRcbiAqIGBgYGh0bWxcbiAqIDxlanNjaGFydD48L2Vqc2NoYXJ0PlxuICogYGBgXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZWpzLWNoYXJ0JyxcbiAgICBpbnB1dHM6IGlucHV0cyxcbiAgICBvdXRwdXRzOiBvdXRwdXRzLFxuICAgIHRlbXBsYXRlOiAnJyxcbiAgICBxdWVyaWVzOiB7XG4gICAgICAgIGNoaWxkU2VyaWVzOiBuZXcgQ29udGVudENoaWxkKFNlcmllc0NvbGxlY3Rpb25EaXJlY3RpdmUpLCBcbiAgICAgICAgY2hpbGRBeGVzOiBuZXcgQ29udGVudENoaWxkKEF4ZXNEaXJlY3RpdmUpLCBcbiAgICAgICAgY2hpbGRSb3dzOiBuZXcgQ29udGVudENoaWxkKFJvd3NEaXJlY3RpdmUpLCBcbiAgICAgICAgY2hpbGRDb2x1bW5zOiBuZXcgQ29udGVudENoaWxkKENvbHVtbnNEaXJlY3RpdmUpLCBcbiAgICAgICAgY2hpbGRSYW5nZUNvbG9yU2V0dGluZ3M6IG5ldyBDb250ZW50Q2hpbGQoUmFuZ2VDb2xvclNldHRpbmdzRGlyZWN0aXZlKSwgXG4gICAgICAgIGNoaWxkQW5ub3RhdGlvbnM6IG5ldyBDb250ZW50Q2hpbGQoQW5ub3RhdGlvbnNEaXJlY3RpdmUpLCBcbiAgICAgICAgY2hpbGRTZWxlY3RlZERhdGFJbmRleGVzOiBuZXcgQ29udGVudENoaWxkKFNlbGVjdGVkRGF0YUluZGV4ZXNEaXJlY3RpdmUpLCBcbiAgICAgICAgY2hpbGRJbmRpY2F0b3JzOiBuZXcgQ29udGVudENoaWxkKEluZGljYXRvcnNEaXJlY3RpdmUpXG4gICAgfVxufSlcbkBDb21wb25lbnRNaXhpbnMoW0NvbXBvbmVudEJhc2VdKVxuZXhwb3J0IGNsYXNzIENoYXJ0Q29tcG9uZW50IGV4dGVuZHMgQ2hhcnQgaW1wbGVtZW50cyBJQ29tcG9uZW50QmFzZSB7XG4gICAgcHVibGljIGNvbnRleHQgOiBhbnk7XG4gICAgcHVibGljIHRhZ09iamVjdHM6IGFueTtcblx0YWZ0ZXJFeHBvcnQ6IGFueTtcblx0YW5pbWF0aW9uQ29tcGxldGU6IGFueTtcblx0YW5ub3RhdGlvblJlbmRlcjogYW55O1xuXHRheGlzTGFiZWxDbGljazogYW55O1xuXHRheGlzTGFiZWxSZW5kZXI6IGFueTtcblx0YXhpc011bHRpTGFiZWxSZW5kZXI6IGFueTtcblx0YXhpc1JhbmdlQ2FsY3VsYXRlZDogYW55O1xuXHRiZWZvcmVFeHBvcnQ6IGFueTtcblx0YmVmb3JlUHJpbnQ6IGFueTtcblx0YmVmb3JlUmVzaXplOiBhbnk7XG5cdGNoYXJ0RG91YmxlQ2xpY2s6IGFueTtcblx0Y2hhcnRNb3VzZUNsaWNrOiBhbnk7XG5cdGNoYXJ0TW91c2VEb3duOiBhbnk7XG5cdGNoYXJ0TW91c2VMZWF2ZTogYW55O1xuXHRjaGFydE1vdXNlTW92ZTogYW55O1xuXHRjaGFydE1vdXNlVXA6IGFueTtcblx0ZHJhZzogYW55O1xuXHRkcmFnQ29tcGxldGU6IGFueTtcblx0ZHJhZ0VuZDogYW55O1xuXHRkcmFnU3RhcnQ6IGFueTtcblx0bGVnZW5kQ2xpY2s6IGFueTtcblx0bGVnZW5kUmVuZGVyOiBhbnk7XG5cdGxvYWQ6IGFueTtcblx0bG9hZGVkOiBhbnk7XG5cdG11bHRpTGV2ZWxMYWJlbENsaWNrOiBhbnk7XG5cdG9uWm9vbWluZzogYW55O1xuXHRwb2ludENsaWNrOiBhbnk7XG5cdHBvaW50RG91YmxlQ2xpY2s6IGFueTtcblx0cG9pbnRNb3ZlOiBhbnk7XG5cdHBvaW50UmVuZGVyOiBhbnk7XG5cdHJlc2l6ZWQ6IGFueTtcblx0c2Nyb2xsQ2hhbmdlZDogYW55O1xuXHRzY3JvbGxFbmQ6IGFueTtcblx0c2Nyb2xsU3RhcnQ6IGFueTtcblx0c2VsZWN0aW9uQ29tcGxldGU6IGFueTtcblx0c2VyaWVzUmVuZGVyOiBhbnk7XG5cdHNoYXJlZFRvb2x0aXBSZW5kZXI6IGFueTtcblx0dGV4dFJlbmRlcjogYW55O1xuXHR0b29sdGlwUmVuZGVyOiBhbnk7XG5cdHpvb21Db21wbGV0ZTogYW55O1xuXHRwdWJsaWMgZGF0YVNvdXJjZUNoYW5nZTogYW55O1xuICAgIHB1YmxpYyBjaGlsZFNlcmllczogUXVlcnlMaXN0PFNlcmllc0NvbGxlY3Rpb25EaXJlY3RpdmU+O1xuICAgIHB1YmxpYyBjaGlsZEF4ZXM6IFF1ZXJ5TGlzdDxBeGVzRGlyZWN0aXZlPjtcbiAgICBwdWJsaWMgY2hpbGRSb3dzOiBRdWVyeUxpc3Q8Um93c0RpcmVjdGl2ZT47XG4gICAgcHVibGljIGNoaWxkQ29sdW1uczogUXVlcnlMaXN0PENvbHVtbnNEaXJlY3RpdmU+O1xuICAgIHB1YmxpYyBjaGlsZFJhbmdlQ29sb3JTZXR0aW5nczogUXVlcnlMaXN0PFJhbmdlQ29sb3JTZXR0aW5nc0RpcmVjdGl2ZT47XG4gICAgcHVibGljIGNoaWxkQW5ub3RhdGlvbnM6IFF1ZXJ5TGlzdDxBbm5vdGF0aW9uc0RpcmVjdGl2ZT47XG4gICAgcHVibGljIGNoaWxkU2VsZWN0ZWREYXRhSW5kZXhlczogUXVlcnlMaXN0PFNlbGVjdGVkRGF0YUluZGV4ZXNEaXJlY3RpdmU+O1xuICAgIHB1YmxpYyBjaGlsZEluZGljYXRvcnM6IFF1ZXJ5TGlzdDxJbmRpY2F0b3JzRGlyZWN0aXZlPjtcbiAgICBwdWJsaWMgdGFnczogc3RyaW5nW10gPSBbJ3NlcmllcycsICdheGVzJywgJ3Jvd3MnLCAnY29sdW1ucycsICdyYW5nZUNvbG9yU2V0dGluZ3MnLCAnYW5ub3RhdGlvbnMnLCAnc2VsZWN0ZWREYXRhSW5kZXhlcycsICdpbmRpY2F0b3JzJ107XG4gICAgQENvbnRlbnRDaGlsZCgndG9vbHRpcFRlbXBsYXRlJylcbiAgICBAVGVtcGxhdGUoKVxuICAgIHB1YmxpYyB0b29sdGlwX3RlbXBsYXRlOiBhbnk7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIG5nRWxlOiBFbGVtZW50UmVmLCBwcml2YXRlIHNyZW5kZXJlcjogUmVuZGVyZXIyLCBwcml2YXRlIHZpZXdDb250YWluZXJSZWY6Vmlld0NvbnRhaW5lclJlZiwgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5lbGVtZW50ID0gdGhpcy5uZ0VsZS5uYXRpdmVFbGVtZW50O1xuICAgICAgICB0aGlzLmluamVjdGVkTW9kdWxlcyA9IHRoaXMuaW5qZWN0ZWRNb2R1bGVzIHx8IFtdO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGxldCBtb2QgPSB0aGlzLmluamVjdG9yLmdldCgnQ2hhcnRzTGluZVNlcmllcycpO1xuICAgICAgICAgICAgICAgIGlmKHRoaXMuaW5qZWN0ZWRNb2R1bGVzLmluZGV4T2YobW9kKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmplY3RlZE1vZHVsZXMucHVzaChtb2QpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCB7IH1cblxyICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGxldCBtb2QgPSB0aGlzLmluamVjdG9yLmdldCgnQ2hhcnRzU2NhdHRlclNlcmllcycpO1xuICAgICAgICAgICAgICAgIGlmKHRoaXMuaW5qZWN0ZWRNb2R1bGVzLmluZGV4T2YobW9kKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmplY3RlZE1vZHVsZXMucHVzaChtb2QpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCB7IH1cblxyICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGxldCBtb2QgPSB0aGlzLmluamVjdG9yLmdldCgnQ2hhcnRzQ29sdW1uU2VyaWVzJyk7XG4gICAgICAgICAgICAgICAgaWYodGhpcy5pbmplY3RlZE1vZHVsZXMuaW5kZXhPZihtb2QpID09PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmluamVjdGVkTW9kdWxlcy5wdXNoKG1vZClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIHsgfVxuXHIgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgbGV0IG1vZCA9IHRoaXMuaW5qZWN0b3IuZ2V0KCdDaGFydHNTcGxpbmVTZXJpZXMnKTtcbiAgICAgICAgICAgICAgICBpZih0aGlzLmluamVjdGVkTW9kdWxlcy5pbmRleE9mKG1vZCkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5qZWN0ZWRNb2R1bGVzLnB1c2gobW9kKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggeyB9XG5cciAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBsZXQgbW9kID0gdGhpcy5pbmplY3Rvci5nZXQoJ0NoYXJ0c1NwbGluZUFyZWFTZXJpZXMnKTtcbiAgICAgICAgICAgICAgICBpZih0aGlzLmluamVjdGVkTW9kdWxlcy5pbmRleE9mKG1vZCkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5qZWN0ZWRNb2R1bGVzLnB1c2gobW9kKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggeyB9XG5cciAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBsZXQgbW9kID0gdGhpcy5pbmplY3Rvci5nZXQoJ0NoYXJ0c1N0cmlwTGluZScpO1xuICAgICAgICAgICAgICAgIGlmKHRoaXMuaW5qZWN0ZWRNb2R1bGVzLmluZGV4T2YobW9kKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmplY3RlZE1vZHVsZXMucHVzaChtb2QpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCB7IH1cblxyICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGxldCBtb2QgPSB0aGlzLmluamVjdG9yLmdldCgnQ2hhcnRzQXJlYVNlcmllcycpO1xuICAgICAgICAgICAgICAgIGlmKHRoaXMuaW5qZWN0ZWRNb2R1bGVzLmluZGV4T2YobW9kKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmplY3RlZE1vZHVsZXMucHVzaChtb2QpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCB7IH1cblxyICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGxldCBtb2QgPSB0aGlzLmluamVjdG9yLmdldCgnQ2hhcnRzU2Nyb2xsQmFyJyk7XG4gICAgICAgICAgICAgICAgaWYodGhpcy5pbmplY3RlZE1vZHVsZXMuaW5kZXhPZihtb2QpID09PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmluamVjdGVkTW9kdWxlcy5wdXNoKG1vZClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIHsgfVxuXHIgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgbGV0IG1vZCA9IHRoaXMuaW5qZWN0b3IuZ2V0KCdDaGFydHNTdGVwTGluZVNlcmllcycpO1xuICAgICAgICAgICAgICAgIGlmKHRoaXMuaW5qZWN0ZWRNb2R1bGVzLmluZGV4T2YobW9kKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmplY3RlZE1vZHVsZXMucHVzaChtb2QpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCB7IH1cblxyICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGxldCBtb2QgPSB0aGlzLmluamVjdG9yLmdldCgnQ2hhcnRzU3RlcEFyZWFTZXJpZXMnKTtcbiAgICAgICAgICAgICAgICBpZih0aGlzLmluamVjdGVkTW9kdWxlcy5pbmRleE9mKG1vZCkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5qZWN0ZWRNb2R1bGVzLnB1c2gobW9kKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggeyB9XG5cciAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBsZXQgbW9kID0gdGhpcy5pbmplY3Rvci5nZXQoJ0NoYXJ0c1N0YWNraW5nQ29sdW1uU2VyaWVzJyk7XG4gICAgICAgICAgICAgICAgaWYodGhpcy5pbmplY3RlZE1vZHVsZXMuaW5kZXhPZihtb2QpID09PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmluamVjdGVkTW9kdWxlcy5wdXNoKG1vZClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIHsgfVxuXHIgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgbGV0IG1vZCA9IHRoaXMuaW5qZWN0b3IuZ2V0KCdDaGFydHNTdGFja2luZ0xpbmVTZXJpZXMnKTtcbiAgICAgICAgICAgICAgICBpZih0aGlzLmluamVjdGVkTW9kdWxlcy5pbmRleE9mKG1vZCkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5qZWN0ZWRNb2R1bGVzLnB1c2gobW9kKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggeyB9XG5cciAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBsZXQgbW9kID0gdGhpcy5pbmplY3Rvci5nZXQoJ0NoYXJ0c1N0YWNraW5nQXJlYVNlcmllcycpO1xuICAgICAgICAgICAgICAgIGlmKHRoaXMuaW5qZWN0ZWRNb2R1bGVzLmluZGV4T2YobW9kKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmplY3RlZE1vZHVsZXMucHVzaChtb2QpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCB7IH1cblxyICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGxldCBtb2QgPSB0aGlzLmluamVjdG9yLmdldCgnQ2hhcnRzU3RhY2tpbmdTdGVwQXJlYVNlcmllcycpO1xuICAgICAgICAgICAgICAgIGlmKHRoaXMuaW5qZWN0ZWRNb2R1bGVzLmluZGV4T2YobW9kKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmplY3RlZE1vZHVsZXMucHVzaChtb2QpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCB7IH1cblxyICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGxldCBtb2QgPSB0aGlzLmluamVjdG9yLmdldCgnQ2hhcnRzQmFyU2VyaWVzJyk7XG4gICAgICAgICAgICAgICAgaWYodGhpcy5pbmplY3RlZE1vZHVsZXMuaW5kZXhPZihtb2QpID09PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmluamVjdGVkTW9kdWxlcy5wdXNoKG1vZClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIHsgfVxuXHIgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgbGV0IG1vZCA9IHRoaXMuaW5qZWN0b3IuZ2V0KCdDaGFydHNTdGFja2luZ0JhclNlcmllcycpO1xuICAgICAgICAgICAgICAgIGlmKHRoaXMuaW5qZWN0ZWRNb2R1bGVzLmluZGV4T2YobW9kKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmplY3RlZE1vZHVsZXMucHVzaChtb2QpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCB7IH1cblxyICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGxldCBtb2QgPSB0aGlzLmluamVjdG9yLmdldCgnQ2hhcnRzUmFuZ2VDb2x1bW5TZXJpZXMnKTtcbiAgICAgICAgICAgICAgICBpZih0aGlzLmluamVjdGVkTW9kdWxlcy5pbmRleE9mKG1vZCkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5qZWN0ZWRNb2R1bGVzLnB1c2gobW9kKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggeyB9XG5cciAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBsZXQgbW9kID0gdGhpcy5pbmplY3Rvci5nZXQoJ0NoYXJ0c0J1YmJsZVNlcmllcycpO1xuICAgICAgICAgICAgICAgIGlmKHRoaXMuaW5qZWN0ZWRNb2R1bGVzLmluZGV4T2YobW9kKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmplY3RlZE1vZHVsZXMucHVzaChtb2QpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCB7IH1cblxyICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGxldCBtb2QgPSB0aGlzLmluamVjdG9yLmdldCgnQ2hhcnRzVG9vbHRpcCcpO1xuICAgICAgICAgICAgICAgIGlmKHRoaXMuaW5qZWN0ZWRNb2R1bGVzLmluZGV4T2YobW9kKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmplY3RlZE1vZHVsZXMucHVzaChtb2QpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCB7IH1cblxyICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGxldCBtb2QgPSB0aGlzLmluamVjdG9yLmdldCgnQ2hhcnRzQ3Jvc3NoYWlyJyk7XG4gICAgICAgICAgICAgICAgaWYodGhpcy5pbmplY3RlZE1vZHVsZXMuaW5kZXhPZihtb2QpID09PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmluamVjdGVkTW9kdWxlcy5wdXNoKG1vZClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIHsgfVxuXHIgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgbGV0IG1vZCA9IHRoaXMuaW5qZWN0b3IuZ2V0KCdDaGFydHNDYXRlZ29yeScpO1xuICAgICAgICAgICAgICAgIGlmKHRoaXMuaW5qZWN0ZWRNb2R1bGVzLmluZGV4T2YobW9kKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmplY3RlZE1vZHVsZXMucHVzaChtb2QpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCB7IH1cblxyICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGxldCBtb2QgPSB0aGlzLmluamVjdG9yLmdldCgnQ2hhcnRzRGF0ZVRpbWUnKTtcbiAgICAgICAgICAgICAgICBpZih0aGlzLmluamVjdGVkTW9kdWxlcy5pbmRleE9mKG1vZCkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5qZWN0ZWRNb2R1bGVzLnB1c2gobW9kKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggeyB9XG5cciAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBsZXQgbW9kID0gdGhpcy5pbmplY3Rvci5nZXQoJ0NoYXJ0c0xvZ2FyaXRobWljJyk7XG4gICAgICAgICAgICAgICAgaWYodGhpcy5pbmplY3RlZE1vZHVsZXMuaW5kZXhPZihtb2QpID09PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmluamVjdGVkTW9kdWxlcy5wdXNoKG1vZClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIHsgfVxuXHIgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgbGV0IG1vZCA9IHRoaXMuaW5qZWN0b3IuZ2V0KCdDaGFydHNMZWdlbmQnKTtcbiAgICAgICAgICAgICAgICBpZih0aGlzLmluamVjdGVkTW9kdWxlcy5pbmRleE9mKG1vZCkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5qZWN0ZWRNb2R1bGVzLnB1c2gobW9kKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggeyB9XG5cciAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBsZXQgbW9kID0gdGhpcy5pbmplY3Rvci5nZXQoJ0NoYXJ0c1pvb20nKTtcbiAgICAgICAgICAgICAgICBpZih0aGlzLmluamVjdGVkTW9kdWxlcy5pbmRleE9mKG1vZCkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5qZWN0ZWRNb2R1bGVzLnB1c2gobW9kKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggeyB9XG5cciAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBsZXQgbW9kID0gdGhpcy5pbmplY3Rvci5nZXQoJ0NoYXJ0c0RhdGFMYWJlbCcpO1xuICAgICAgICAgICAgICAgIGlmKHRoaXMuaW5qZWN0ZWRNb2R1bGVzLmluZGV4T2YobW9kKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmplY3RlZE1vZHVsZXMucHVzaChtb2QpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCB7IH1cblxyICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGxldCBtb2QgPSB0aGlzLmluamVjdG9yLmdldCgnQ2hhcnRzU2VsZWN0aW9uJyk7XG4gICAgICAgICAgICAgICAgaWYodGhpcy5pbmplY3RlZE1vZHVsZXMuaW5kZXhPZihtb2QpID09PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmluamVjdGVkTW9kdWxlcy5wdXNoKG1vZClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIHsgfVxuXHIgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgbGV0IG1vZCA9IHRoaXMuaW5qZWN0b3IuZ2V0KCdDaGFydHNDaGFydEFubm90YXRpb24nKTtcbiAgICAgICAgICAgICAgICBpZih0aGlzLmluamVjdGVkTW9kdWxlcy5pbmRleE9mKG1vZCkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5qZWN0ZWRNb2R1bGVzLnB1c2gobW9kKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggeyB9XG5cciAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBsZXQgbW9kID0gdGhpcy5pbmplY3Rvci5nZXQoJ0NoYXJ0c0hpbG9TZXJpZXMnKTtcbiAgICAgICAgICAgICAgICBpZih0aGlzLmluamVjdGVkTW9kdWxlcy5pbmRleE9mKG1vZCkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5qZWN0ZWRNb2R1bGVzLnB1c2gobW9kKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggeyB9XG5cciAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBsZXQgbW9kID0gdGhpcy5pbmplY3Rvci5nZXQoJ0NoYXJ0c0hpbG9PcGVuQ2xvc2VTZXJpZXMnKTtcbiAgICAgICAgICAgICAgICBpZih0aGlzLmluamVjdGVkTW9kdWxlcy5pbmRleE9mKG1vZCkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5qZWN0ZWRNb2R1bGVzLnB1c2gobW9kKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggeyB9XG5cciAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBsZXQgbW9kID0gdGhpcy5pbmplY3Rvci5nZXQoJ0NoYXJ0c1dhdGVyZmFsbFNlcmllcycpO1xuICAgICAgICAgICAgICAgIGlmKHRoaXMuaW5qZWN0ZWRNb2R1bGVzLmluZGV4T2YobW9kKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmplY3RlZE1vZHVsZXMucHVzaChtb2QpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCB7IH1cblxyICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGxldCBtb2QgPSB0aGlzLmluamVjdG9yLmdldCgnQ2hhcnRzUmFuZ2VBcmVhU2VyaWVzJyk7XG4gICAgICAgICAgICAgICAgaWYodGhpcy5pbmplY3RlZE1vZHVsZXMuaW5kZXhPZihtb2QpID09PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmluamVjdGVkTW9kdWxlcy5wdXNoKG1vZClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIHsgfVxuXHIgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgbGV0IG1vZCA9IHRoaXMuaW5qZWN0b3IuZ2V0KCdDaGFydHNSYW5nZVN0ZXBBcmVhU2VyaWVzJyk7XG4gICAgICAgICAgICAgICAgaWYodGhpcy5pbmplY3RlZE1vZHVsZXMuaW5kZXhPZihtb2QpID09PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmluamVjdGVkTW9kdWxlcy5wdXNoKG1vZClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIHsgfVxuXHIgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgbGV0IG1vZCA9IHRoaXMuaW5qZWN0b3IuZ2V0KCdDaGFydHNTcGxpbmVSYW5nZUFyZWFTZXJpZXMnKTtcbiAgICAgICAgICAgICAgICBpZih0aGlzLmluamVjdGVkTW9kdWxlcy5pbmRleE9mKG1vZCkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5qZWN0ZWRNb2R1bGVzLnB1c2gobW9kKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggeyB9XG5cciAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBsZXQgbW9kID0gdGhpcy5pbmplY3Rvci5nZXQoJ0NoYXJ0c0NhbmRsZVNlcmllcycpO1xuICAgICAgICAgICAgICAgIGlmKHRoaXMuaW5qZWN0ZWRNb2R1bGVzLmluZGV4T2YobW9kKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmplY3RlZE1vZHVsZXMucHVzaChtb2QpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCB7IH1cblxyICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGxldCBtb2QgPSB0aGlzLmluamVjdG9yLmdldCgnQ2hhcnRzUG9sYXJTZXJpZXMnKTtcbiAgICAgICAgICAgICAgICBpZih0aGlzLmluamVjdGVkTW9kdWxlcy5pbmRleE9mKG1vZCkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5qZWN0ZWRNb2R1bGVzLnB1c2gobW9kKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggeyB9XG5cciAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBsZXQgbW9kID0gdGhpcy5pbmplY3Rvci5nZXQoJ0NoYXJ0c1JhZGFyU2VyaWVzJyk7XG4gICAgICAgICAgICAgICAgaWYodGhpcy5pbmplY3RlZE1vZHVsZXMuaW5kZXhPZihtb2QpID09PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmluamVjdGVkTW9kdWxlcy5wdXNoKG1vZClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIHsgfVxuXHIgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgbGV0IG1vZCA9IHRoaXMuaW5qZWN0b3IuZ2V0KCdDaGFydHNTbWFJbmRpY2F0b3InKTtcbiAgICAgICAgICAgICAgICBpZih0aGlzLmluamVjdGVkTW9kdWxlcy5pbmRleE9mKG1vZCkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5qZWN0ZWRNb2R1bGVzLnB1c2gobW9kKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggeyB9XG5cciAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBsZXQgbW9kID0gdGhpcy5pbmplY3Rvci5nZXQoJ0NoYXJ0c1RtYUluZGljYXRvcicpO1xuICAgICAgICAgICAgICAgIGlmKHRoaXMuaW5qZWN0ZWRNb2R1bGVzLmluZGV4T2YobW9kKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmplY3RlZE1vZHVsZXMucHVzaChtb2QpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCB7IH1cblxyICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGxldCBtb2QgPSB0aGlzLmluamVjdG9yLmdldCgnQ2hhcnRzRW1hSW5kaWNhdG9yJyk7XG4gICAgICAgICAgICAgICAgaWYodGhpcy5pbmplY3RlZE1vZHVsZXMuaW5kZXhPZihtb2QpID09PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmluamVjdGVkTW9kdWxlcy5wdXNoKG1vZClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIHsgfVxuXHIgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgbGV0IG1vZCA9IHRoaXMuaW5qZWN0b3IuZ2V0KCdDaGFydHNBY2N1bXVsYXRpb25EaXN0cmlidXRpb25JbmRpY2F0b3InKTtcbiAgICAgICAgICAgICAgICBpZih0aGlzLmluamVjdGVkTW9kdWxlcy5pbmRleE9mKG1vZCkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5qZWN0ZWRNb2R1bGVzLnB1c2gobW9kKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggeyB9XG5cciAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBsZXQgbW9kID0gdGhpcy5pbmplY3Rvci5nZXQoJ0NoYXJ0c01hY2RJbmRpY2F0b3InKTtcbiAgICAgICAgICAgICAgICBpZih0aGlzLmluamVjdGVkTW9kdWxlcy5pbmRleE9mKG1vZCkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5qZWN0ZWRNb2R1bGVzLnB1c2gobW9kKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggeyB9XG5cciAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBsZXQgbW9kID0gdGhpcy5pbmplY3Rvci5nZXQoJ0NoYXJ0c0F0ckluZGljYXRvcicpO1xuICAgICAgICAgICAgICAgIGlmKHRoaXMuaW5qZWN0ZWRNb2R1bGVzLmluZGV4T2YobW9kKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmplY3RlZE1vZHVsZXMucHVzaChtb2QpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCB7IH1cblxyICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGxldCBtb2QgPSB0aGlzLmluamVjdG9yLmdldCgnQ2hhcnRzUnNpSW5kaWNhdG9yJyk7XG4gICAgICAgICAgICAgICAgaWYodGhpcy5pbmplY3RlZE1vZHVsZXMuaW5kZXhPZihtb2QpID09PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmluamVjdGVkTW9kdWxlcy5wdXNoKG1vZClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIHsgfVxuXHIgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgbGV0IG1vZCA9IHRoaXMuaW5qZWN0b3IuZ2V0KCdDaGFydHNNb21lbnR1bUluZGljYXRvcicpO1xuICAgICAgICAgICAgICAgIGlmKHRoaXMuaW5qZWN0ZWRNb2R1bGVzLmluZGV4T2YobW9kKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmplY3RlZE1vZHVsZXMucHVzaChtb2QpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCB7IH1cblxyICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGxldCBtb2QgPSB0aGlzLmluamVjdG9yLmdldCgnQ2hhcnRzU3RvY2hhc3RpY0luZGljYXRvcicpO1xuICAgICAgICAgICAgICAgIGlmKHRoaXMuaW5qZWN0ZWRNb2R1bGVzLmluZGV4T2YobW9kKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmplY3RlZE1vZHVsZXMucHVzaChtb2QpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCB7IH1cblxyICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGxldCBtb2QgPSB0aGlzLmluamVjdG9yLmdldCgnQ2hhcnRzQm9sbGluZ2VyQmFuZHMnKTtcbiAgICAgICAgICAgICAgICBpZih0aGlzLmluamVjdGVkTW9kdWxlcy5pbmRleE9mKG1vZCkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5qZWN0ZWRNb2R1bGVzLnB1c2gobW9kKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggeyB9XG5cciAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBsZXQgbW9kID0gdGhpcy5pbmplY3Rvci5nZXQoJ0NoYXJ0c0JveEFuZFdoaXNrZXJTZXJpZXMnKTtcbiAgICAgICAgICAgICAgICBpZih0aGlzLmluamVjdGVkTW9kdWxlcy5pbmRleE9mKG1vZCkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5qZWN0ZWRNb2R1bGVzLnB1c2gobW9kKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggeyB9XG5cciAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBsZXQgbW9kID0gdGhpcy5pbmplY3Rvci5nZXQoJ0NoYXJ0c0hpc3RvZ3JhbVNlcmllcycpO1xuICAgICAgICAgICAgICAgIGlmKHRoaXMuaW5qZWN0ZWRNb2R1bGVzLmluZGV4T2YobW9kKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmplY3RlZE1vZHVsZXMucHVzaChtb2QpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCB7IH1cblxyICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGxldCBtb2QgPSB0aGlzLmluamVjdG9yLmdldCgnQ2hhcnRzRXJyb3JCYXInKTtcbiAgICAgICAgICAgICAgICBpZih0aGlzLmluamVjdGVkTW9kdWxlcy5pbmRleE9mKG1vZCkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5qZWN0ZWRNb2R1bGVzLnB1c2gobW9kKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggeyB9XG5cciAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBsZXQgbW9kID0gdGhpcy5pbmplY3Rvci5nZXQoJ0NoYXJ0c1RyZW5kbGluZXMnKTtcbiAgICAgICAgICAgICAgICBpZih0aGlzLmluamVjdGVkTW9kdWxlcy5pbmRleE9mKG1vZCkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5qZWN0ZWRNb2R1bGVzLnB1c2gobW9kKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggeyB9XG5cciAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBsZXQgbW9kID0gdGhpcy5pbmplY3Rvci5nZXQoJ0NoYXJ0c0RhdGVUaW1lQ2F0ZWdvcnknKTtcbiAgICAgICAgICAgICAgICBpZih0aGlzLmluamVjdGVkTW9kdWxlcy5pbmRleE9mKG1vZCkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5qZWN0ZWRNb2R1bGVzLnB1c2gobW9kKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggeyB9XG5cciAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBsZXQgbW9kID0gdGhpcy5pbmplY3Rvci5nZXQoJ0NoYXJ0c011bHRpQ29sb3JlZExpbmVTZXJpZXMnKTtcbiAgICAgICAgICAgICAgICBpZih0aGlzLmluamVjdGVkTW9kdWxlcy5pbmRleE9mKG1vZCkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5qZWN0ZWRNb2R1bGVzLnB1c2gobW9kKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggeyB9XG5cciAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBsZXQgbW9kID0gdGhpcy5pbmplY3Rvci5nZXQoJ0NoYXJ0c011bHRpQ29sb3JlZEFyZWFTZXJpZXMnKTtcbiAgICAgICAgICAgICAgICBpZih0aGlzLmluamVjdGVkTW9kdWxlcy5pbmRleE9mKG1vZCkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5qZWN0ZWRNb2R1bGVzLnB1c2gobW9kKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggeyB9XG5cciAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBsZXQgbW9kID0gdGhpcy5pbmplY3Rvci5nZXQoJ0NoYXJ0c011bHRpTGV2ZWxMYWJlbCcpO1xuICAgICAgICAgICAgICAgIGlmKHRoaXMuaW5qZWN0ZWRNb2R1bGVzLmluZGV4T2YobW9kKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmplY3RlZE1vZHVsZXMucHVzaChtb2QpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCB7IH1cblxyICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGxldCBtb2QgPSB0aGlzLmluamVjdG9yLmdldCgnQ2hhcnRzUGFyZXRvU2VyaWVzJyk7XG4gICAgICAgICAgICAgICAgaWYodGhpcy5pbmplY3RlZE1vZHVsZXMuaW5kZXhPZihtb2QpID09PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmluamVjdGVkTW9kdWxlcy5wdXNoKG1vZClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIHsgfVxuXHIgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgbGV0IG1vZCA9IHRoaXMuaW5qZWN0b3IuZ2V0KCdDaGFydHNFeHBvcnQnKTtcbiAgICAgICAgICAgICAgICBpZih0aGlzLmluamVjdGVkTW9kdWxlcy5pbmRleE9mKG1vZCkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5qZWN0ZWRNb2R1bGVzLnB1c2gobW9kKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggeyB9XG5cciAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBsZXQgbW9kID0gdGhpcy5pbmplY3Rvci5nZXQoJ0NoYXJ0c0RhdGFFZGl0aW5nJyk7XG4gICAgICAgICAgICAgICAgaWYodGhpcy5pbmplY3RlZE1vZHVsZXMuaW5kZXhPZihtb2QpID09PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmluamVjdGVkTW9kdWxlcy5wdXNoKG1vZClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIHsgfVxuXHIgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgbGV0IG1vZCA9IHRoaXMuaW5qZWN0b3IuZ2V0KCdDaGFydHNIaWdobGlnaHQnKTtcbiAgICAgICAgICAgICAgICBpZih0aGlzLmluamVjdGVkTW9kdWxlcy5pbmRleE9mKG1vZCkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5qZWN0ZWRNb2R1bGVzLnB1c2gobW9kKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggeyB9XG5cciAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBsZXQgbW9kID0gdGhpcy5pbmplY3Rvci5nZXQoJ0NoYXJ0c0xhc3RWYWx1ZUxhYmVsJyk7XG4gICAgICAgICAgICAgICAgaWYodGhpcy5pbmplY3RlZE1vZHVsZXMuaW5kZXhPZihtb2QpID09PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmluamVjdGVkTW9kdWxlcy5wdXNoKG1vZClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIHsgfVxuXHJcbiAgICAgICAgdGhpcy5yZWdpc3RlckV2ZW50cyhvdXRwdXRzKTtcbiAgICAgICAgdGhpcy5hZGRUd29XYXkuY2FsbCh0aGlzLCB0d29XYXlzKTtcbiAgICAgICAgc2V0VmFsdWUoJ2N1cnJlbnRJbnN0YW5jZScsIHRoaXMsIHRoaXMudmlld0NvbnRhaW5lclJlZik7XG4gICAgICAgIHRoaXMuY29udGV4dCAgPSBuZXcgQ29tcG9uZW50QmFzZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5jb250ZXh0Lm5nT25Jbml0KHRoaXMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY29udGV4dC5uZ0FmdGVyVmlld0luaXQodGhpcyk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNvbnRleHQubmdPbkRlc3Ryb3kodGhpcyk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nQWZ0ZXJDb250ZW50Q2hlY2tlZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy50YWdPYmplY3RzWzBdLmluc3RhbmNlID0gdGhpcy5jaGlsZFNlcmllcztcbiAgICAgICAgXG5cdCAgICBpZiAodGhpcy5jaGlsZEF4ZXMpIHtcbiAgICAgICAgICAgIHRoaXMudGFnT2JqZWN0c1sxXS5pbnN0YW5jZSA9IHRoaXMuY2hpbGRBeGVzO1xuICAgICAgICB9XG4gICAgICAgIFxuXHQgICAgaWYgKHRoaXMuY2hpbGRSb3dzKSB7XG4gICAgICAgICAgICB0aGlzLnRhZ09iamVjdHNbMl0uaW5zdGFuY2UgPSB0aGlzLmNoaWxkUm93cztcbiAgICAgICAgfVxuICAgICAgICBcblx0ICAgIGlmICh0aGlzLmNoaWxkQ29sdW1ucykge1xuICAgICAgICAgICAgdGhpcy50YWdPYmplY3RzWzNdLmluc3RhbmNlID0gdGhpcy5jaGlsZENvbHVtbnM7XG4gICAgICAgIH1cbiAgICAgICAgXG5cdCAgICBpZiAodGhpcy5jaGlsZFJhbmdlQ29sb3JTZXR0aW5ncykge1xuICAgICAgICAgICAgdGhpcy50YWdPYmplY3RzWzRdLmluc3RhbmNlID0gdGhpcy5jaGlsZFJhbmdlQ29sb3JTZXR0aW5ncztcbiAgICAgICAgfVxuICAgICAgICBcblx0ICAgIGlmICh0aGlzLmNoaWxkQW5ub3RhdGlvbnMpIHtcbiAgICAgICAgICAgIHRoaXMudGFnT2JqZWN0c1s1XS5pbnN0YW5jZSA9IHRoaXMuY2hpbGRBbm5vdGF0aW9ucztcbiAgICAgICAgfVxuICAgICAgICBcblx0ICAgIGlmICh0aGlzLmNoaWxkU2VsZWN0ZWREYXRhSW5kZXhlcykge1xuICAgICAgICAgICAgdGhpcy50YWdPYmplY3RzWzZdLmluc3RhbmNlID0gdGhpcy5jaGlsZFNlbGVjdGVkRGF0YUluZGV4ZXM7XG4gICAgICAgIH1cbiAgICAgICAgXG5cdCAgICBpZiAodGhpcy5jaGlsZEluZGljYXRvcnMpIHtcbiAgICAgICAgICAgIHRoaXMudGFnT2JqZWN0c1s3XS5pbnN0YW5jZSA9IHRoaXMuY2hpbGRJbmRpY2F0b3JzO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY29udGV4dC5uZ0FmdGVyQ29udGVudENoZWNrZWQodGhpcyk7XG4gICAgfVxuXG4gICAgcHVibGljIHJlZ2lzdGVyRXZlbnRzOiAoZXZlbnRMaXN0OiBzdHJpbmdbXSkgPT4gdm9pZDtcbiAgICBwdWJsaWMgYWRkVHdvV2F5OiAocHJvcExpc3Q6IHN0cmluZ1tdKSA9PiB2b2lkO1xufVxuXG4iXX0=
|