@tetacom/svg-charts 1.6.2 → 1.6.4
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/chart/chart-container/crosshair/crosshair.component.d.ts +3 -3
- package/chart/chart-container/gridlines/gridlines.component.d.ts +4 -4
- package/chart/chart-container/y-axis/y-axis.component.d.ts +2 -2
- package/chart/legend/legend.component.d.ts +1 -1
- package/chart/model/series.d.ts +1 -1
- package/chart/model/tooltip-options.d.ts +1 -1
- package/esm2022/chart/base/series-base.component.mjs +3 -4
- package/esm2022/chart/chart/chart.component.mjs +15 -39
- package/esm2022/chart/chart-container/annotation/annotation.component.mjs +8 -11
- package/esm2022/chart/chart-container/chart-container.component.mjs +21 -46
- package/esm2022/chart/chart-container/crosshair/crosshair.component.mjs +7 -9
- package/esm2022/chart/chart-container/gridlines/gridlines.component.mjs +15 -14
- package/esm2022/chart/chart-container/plotband/plot-band.component.mjs +7 -15
- package/esm2022/chart/chart-container/plotline/plotline.component.mjs +7 -14
- package/esm2022/chart/chart-container/series/area-series/area-series.component.mjs +9 -12
- package/esm2022/chart/chart-container/series/bar/bar-series.component.mjs +5 -12
- package/esm2022/chart/chart-container/series/block-area-series/block-area-series.component.mjs +8 -16
- package/esm2022/chart/chart-container/series/block-horizontal-series/block-horizontal-series.component.mjs +9 -18
- package/esm2022/chart/chart-container/series/block-series/block-series.component.mjs +9 -17
- package/esm2022/chart/chart-container/series/line/line-series.component.mjs +6 -9
- package/esm2022/chart/chart-container/series/linear-series-base.mjs +11 -29
- package/esm2022/chart/chart-container/series/scatter-series/scatter-series.component.mjs +7 -10
- package/esm2022/chart/chart-container/series-host/series-host.component.mjs +2 -3
- package/esm2022/chart/chart-container/tooltip/tooltip.component.mjs +9 -18
- package/esm2022/chart/chart-container/x-axis/x-axis.component.mjs +7 -8
- package/esm2022/chart/chart-container/y-axis/y-axis.component.mjs +8 -13
- package/esm2022/chart/core/axis/axis.mjs +3 -5
- package/esm2022/chart/core/axis/builders/axis-size-builder.mjs +2 -2
- package/esm2022/chart/core/axis/builders/extremes-builder.mjs +4 -6
- package/esm2022/chart/core/utils/generate-ticks.mjs +2 -4
- package/esm2022/chart/core/utils/get-text-width.mjs +1 -1
- package/esm2022/chart/core/utils/position-util.mjs +6 -14
- package/esm2022/chart/default/default-chart-config.mjs +8 -8
- package/esm2022/chart/default/default-series-config.mjs +3 -3
- package/esm2022/chart/default/defaultSeriesTypeMapping.mjs +1 -1
- package/esm2022/chart/directives/brushable.directive.mjs +20 -46
- package/esm2022/chart/directives/draggable-point.directive.mjs +20 -18
- package/esm2022/chart/directives/zoomable.directive.mjs +15 -35
- package/esm2022/chart/legend/legend.component.mjs +5 -5
- package/esm2022/chart/model/annotation.mjs +1 -1
- package/esm2022/chart/model/chart-bounds.mjs +1 -1
- package/esm2022/chart/model/enum/align.enum.mjs +1 -1
- package/esm2022/chart/model/enum/axis-orientation.mjs +1 -1
- package/esm2022/chart/model/enum/clip-points-direction.mjs +1 -1
- package/esm2022/chart/model/enum/public-api.mjs +1 -1
- package/esm2022/chart/model/enum/scale-type.mjs +1 -1
- package/esm2022/chart/model/enum/series-type.mjs +1 -1
- package/esm2022/chart/model/enum/vertical-align.enum.mjs +1 -1
- package/esm2022/chart/model/enum/zoom-behavior-type.mjs +1 -1
- package/esm2022/chart/model/i-broadcast-message.mjs +1 -1
- package/esm2022/chart/model/i-chart-config.mjs +1 -1
- package/esm2022/chart/model/marker-options.mjs +1 -1
- package/esm2022/chart/model/plot-band.mjs +2 -3
- package/esm2022/chart/model/plot-line.mjs +1 -1
- package/esm2022/chart/model/public-api.mjs +1 -1
- package/esm2022/chart/model/series.mjs +1 -1
- package/esm2022/chart/model/tooltip-options.mjs +1 -1
- package/esm2022/chart/service/broadcast.service.mjs +1 -1
- package/esm2022/chart/service/brush.service.mjs +1 -1
- package/esm2022/chart/service/chart.service.mjs +24 -35
- package/esm2022/chart/service/scale.service.mjs +14 -26
- package/esm2022/chart/service/zoom.service.mjs +10 -8
- package/esm2022/index.mjs +1 -1
- package/esm2022/observable/zoneObservable.mjs +4 -4
- package/fesm2022/tetacom-svg-charts.mjs +250 -474
- package/fesm2022/tetacom-svg-charts.mjs.map +1 -1
- package/package.json +4 -4
|
@@ -22,11 +22,10 @@ export class BrushableDirective {
|
|
|
22
22
|
this._container = d3.select(this.element.nativeElement);
|
|
23
23
|
}
|
|
24
24
|
ngOnInit() {
|
|
25
|
-
this.brushService.brushDomain
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
].map(this.axis.scale));
|
|
25
|
+
this.brushService.brushDomain
|
|
26
|
+
.pipe(takeWhile(() => this._alive), filter((brush) => brush.chartId !== this.config.id))
|
|
27
|
+
.subscribe((brush) => {
|
|
28
|
+
this._container.call(this.brush.move, [Math.floor(brush.selection[0]), Math.floor(brush.selection[1])].map(this.axis.scale));
|
|
30
29
|
});
|
|
31
30
|
}
|
|
32
31
|
ngOnDestroy() {
|
|
@@ -37,7 +36,7 @@ export class BrushableDirective {
|
|
|
37
36
|
const brushMessage = new BrushMessage({
|
|
38
37
|
chartId: this.config.id,
|
|
39
38
|
selection: [this.config?.brush?.from, this.config?.brush?.to],
|
|
40
|
-
mode: 'init'
|
|
39
|
+
mode: 'init',
|
|
41
40
|
});
|
|
42
41
|
this.brushService.setBrush(brushMessage);
|
|
43
42
|
}
|
|
@@ -60,52 +59,29 @@ export class BrushableDirective {
|
|
|
60
59
|
return;
|
|
61
60
|
const [from, to] = _.selection;
|
|
62
61
|
if (to - from === 0) {
|
|
63
|
-
const selection = this.selection?.map(brushScale) ??
|
|
64
|
-
[config.brush?.from, config.brush?.to].map(brushScale);
|
|
62
|
+
const selection = this.selection?.map(brushScale) ?? [config.brush?.from, config.brush?.to].map(brushScale);
|
|
65
63
|
const halfBrushHeight = (selection[1] - selection[0]) / 2;
|
|
66
|
-
const invertedSelection = [
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
].map(brushScale.invert);
|
|
70
|
-
if (invertedSelection[1] - invertedSelection[0] >
|
|
71
|
-
config.brush?.max) {
|
|
72
|
-
this._container.call(this.brush.move, [
|
|
73
|
-
Math.floor(invertedSelection[0]),
|
|
74
|
-
Math.floor(invertedSelection[0] + config.brush?.max),
|
|
75
|
-
].map(brushScale));
|
|
64
|
+
const invertedSelection = [from - halfBrushHeight, to + halfBrushHeight].map(brushScale.invert);
|
|
65
|
+
if (invertedSelection[1] - invertedSelection[0] > config.brush?.max) {
|
|
66
|
+
this._container.call(this.brush.move, [Math.floor(invertedSelection[0]), Math.floor(invertedSelection[0] + config.brush?.max)].map(brushScale));
|
|
76
67
|
return;
|
|
77
68
|
}
|
|
78
|
-
if (invertedSelection[1] - invertedSelection[0] <
|
|
79
|
-
config.brush?.min)
|
|
80
|
-
this._container.call(this.brush.move, [
|
|
81
|
-
Math.floor(invertedSelection[0]),
|
|
82
|
-
Math.ceil(invertedSelection[0] + config.brush?.min),
|
|
83
|
-
].map(brushScale));
|
|
69
|
+
if (invertedSelection[1] - invertedSelection[0] < config.brush?.min) {
|
|
70
|
+
this._container.call(this.brush.move, [Math.floor(invertedSelection[0]), Math.ceil(invertedSelection[0] + config.brush?.min)].map(brushScale));
|
|
84
71
|
return;
|
|
85
72
|
}
|
|
86
|
-
this._container.call(this.brush.move, [
|
|
87
|
-
from - halfBrushHeight,
|
|
88
|
-
to + halfBrushHeight,
|
|
89
|
-
]);
|
|
73
|
+
this._container.call(this.brush.move, [from - halfBrushHeight, to + halfBrushHeight]);
|
|
90
74
|
return;
|
|
91
75
|
}
|
|
92
|
-
if (brushScale.invert(to) - brushScale.invert(from) >
|
|
93
|
-
config.brush?.max) {
|
|
76
|
+
if (brushScale.invert(to) - brushScale.invert(from) > config.brush?.max) {
|
|
94
77
|
this._container.call(this.brush.move, this.selection
|
|
95
|
-
? [
|
|
96
|
-
this.selection[0],
|
|
97
|
-
this.selection[0] + config.brush?.max,
|
|
98
|
-
].map(brushScale)
|
|
78
|
+
? [this.selection[0], this.selection[0] + config.brush?.max].map(brushScale)
|
|
99
79
|
: [config.brush?.from, config.brush?.to].map(brushScale));
|
|
100
80
|
return;
|
|
101
81
|
}
|
|
102
|
-
if (brushScale.invert(to) - brushScale.invert(from) <
|
|
103
|
-
config.brush?.min) {
|
|
82
|
+
if (brushScale.invert(to) - brushScale.invert(from) < config.brush?.min) {
|
|
104
83
|
this._container.call(this.brush.move, this.selection
|
|
105
|
-
? [
|
|
106
|
-
this.selection[0],
|
|
107
|
-
this.selection[0] + config.brush?.min,
|
|
108
|
-
].map(brushScale)
|
|
84
|
+
? [this.selection[0], this.selection[0] + config.brush?.min].map(brushScale)
|
|
109
85
|
: [config.brush?.from, config.brush?.to].map(brushScale));
|
|
110
86
|
return;
|
|
111
87
|
}
|
|
@@ -115,7 +91,7 @@ export class BrushableDirective {
|
|
|
115
91
|
const brushMessage = new BrushMessage({
|
|
116
92
|
chartId: this.config.id,
|
|
117
93
|
selection: [brushScale.invert(from), brushScale.invert(to)],
|
|
118
|
-
mode: _.mode
|
|
94
|
+
mode: _.mode,
|
|
119
95
|
});
|
|
120
96
|
this.brushService.setBrush(brushMessage);
|
|
121
97
|
}
|
|
@@ -130,9 +106,7 @@ export class BrushableDirective {
|
|
|
130
106
|
if (config?.brush?.to) {
|
|
131
107
|
domain[1] = config.brush.to;
|
|
132
108
|
}
|
|
133
|
-
this._container.call(this.brush.move, this.selection
|
|
134
|
-
? this.selection.map(brushScale)
|
|
135
|
-
: domain.map(brushScale), {});
|
|
109
|
+
this._container.call(this.brush.move, this.selection ? this.selection.map(brushScale) : domain.map(brushScale), {});
|
|
136
110
|
}, 0);
|
|
137
111
|
});
|
|
138
112
|
}
|
|
@@ -147,11 +121,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.1", ngImpor
|
|
|
147
121
|
type: Directive,
|
|
148
122
|
args: [{
|
|
149
123
|
selector: '[tetaBrushable]',
|
|
150
|
-
standalone: true
|
|
124
|
+
standalone: true,
|
|
151
125
|
}]
|
|
152
126
|
}], ctorParameters: () => [{ type: i1.BrushService }, { type: i2.ChartService }, { type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { config: [{
|
|
153
127
|
type: Input
|
|
154
128
|
}], axis: [{
|
|
155
129
|
type: Input
|
|
156
130
|
}] } });
|
|
157
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJ1c2hhYmxlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jaGFydC9kaXJlY3RpdmVzL2JydXNoYWJsZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsS0FBSyxFQUFFLE1BQU0sR0FHZCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDdEQsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ3RELE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUN2QyxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDbkQsT0FBTyxLQUFLLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDekIsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQzFELE9BQU8sRUFBQyxNQUFNLEVBQUUsU0FBUyxFQUFDLE1BQU0sTUFBTSxDQUFDOzs7O0FBTXZDLE1BQU0sT0FBTyxrQkFBa0I7SUFZN0IsWUFDVSxZQUEwQixFQUMxQixZQUEwQixFQUMxQixPQUFtQixFQUNuQixJQUFZO1FBSFosaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsWUFBTyxHQUFQLE9BQU8sQ0FBWTtRQUNuQixTQUFJLEdBQUosSUFBSSxDQUFRO1FBVmQsYUFBUSxHQUFHLElBQUksR0FBRyxFQUFvQzthQUMzRCxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUM7YUFDN0IsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDekIsV0FBTSxHQUFHLElBQUksQ0FBQztRQVNwQixJ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c291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBJbnB1dCwgTmdab25lLCBPbkNoYW5nZXMsIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBTaW1wbGVDaGFuZ2VzLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7SUNoYXJ0Q29uZmlnfSBmcm9tICcuLi9tb2RlbC9pLWNoYXJ0LWNvbmZpZyc7XG5pbXBvcnQge0JydXNoU2VydmljZX0gZnJvbSAnLi4vc2VydmljZS9icnVzaC5zZXJ2aWNlJztcbmltcG9ydCB7Q2hhcnRTZXJ2aWNlfSBmcm9tICcuLi9zZXJ2aWNlL2NoYXJ0LnNlcnZpY2UnO1xuaW1wb3J0IHtBeGlzfSBmcm9tICcuLi9jb3JlL2F4aXMvYXhpcyc7XG5pbXBvcnQge0JydXNoVHlwZX0gZnJvbSAnLi4vbW9kZWwvZW51bS9icnVzaC10eXBlJztcbmltcG9ydCAqIGFzIGQzIGZyb20gJ2QzJztcbmltcG9ydCB7QnJ1c2hNZXNzYWdlfSBmcm9tICcuLi9tb2RlbC9pLWJyb2FkY2FzdC1tZXNzYWdlJztcbmltcG9ydCB7ZmlsdGVyLCB0YWtlV2hpbGV9IGZyb20gJ3J4anMnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbdGV0YUJydXNoYWJsZV0nLFxuICBzdGFuZGFsb25lOnRydWVcbn0pXG5leHBvcnQgY2xhc3MgQnJ1c2hhYmxlRGlyZWN0aXZlIGltcGxlbWVudHMgT25EZXN0cm95LCBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIGNvbmZpZzogSUNoYXJ0Q29uZmlnO1xuICBASW5wdXQoKSBheGlzOiBBeGlzO1xuXG4gIHByaXZhdGUgc2VsZWN0aW9uOiBudW1iZXJbXTtcbiAgcHJpdmF0ZSBicnVzaDogZDMuQnJ1c2hCZWhhdmlvcjxhbnk+O1xuICBwcml2YXRlIGJydXNoTWFwID0gbmV3IE1hcDxCcnVzaFR5cGUsIGQzLkJydXNoQmVoYXZpb3I8YW55Pj4oKVxuICAgIC5zZXQoQnJ1c2hUeXBlLngsIGQzLmJydXNoWCgpKVxuICAgIC5zZXQoQnJ1c2hUeXBlLnksIGQzLmJydXNoWSgpKTtcbiAgcHJpdmF0ZSBfYWxpdmUgPSB0cnVlO1xuICBwcml2YXRlIF9jb250YWluZXI7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBicnVzaFNlcnZpY2U6IEJydXNoU2VydmljZSxcbiAgICBwcml2YXRlIGNoYXJ0U2VydmljZTogQ2hhcnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgZWxlbWVudDogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIHpvbmU6IE5nWm9uZVxuICApIHtcbiAgICB0aGlzLl9jb250YWluZXIgPSBkMy5zZWxlY3QodGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5icnVzaFNlcnZpY2UuYnJ1c2hEb21haW4ucGlwZShcbiAgICAgIHRha2VXaGlsZSgoKSA9PiB0aGlzLl9hbGl2ZSksXG4gICAgICBmaWx0ZXIoKGJydXNoKSA9PiBicnVzaC5jaGFydElkICE9PSB0aGlzLmNvbmZpZy5pZClcbiAgICApLnN1YnNjcmliZSgoYnJ1c2gpID0+IHtcbiAgICAgIHRoaXMuX2NvbnRhaW5lci5jYWxsKFxuICAgICAgICB0aGlzLmJydXNoLm1vdmUsXG4gICAgICAgIFtcbiAgICAgICAgICBNYXRoLmZsb29yKGJydXNoLnNlbGVjdGlvblswXSksXG4gICAgICAgICAgTWF0aC5mbG9vcihicnVzaC5zZWxlY3Rpb25bMV0pLFxuICAgICAgICBdLm1hcCh0aGlzLmF4aXMuc2NhbGUpXG4gICAgICApO1xuICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fYWxpdmUgPSBmYWxzZTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBpZih0aGlzLmNvbmZpZz8uYnJ1c2g/LmVuYWJsZSkge1xuICAgICAgY29uc3QgYnJ1c2hNZXNzYWdlID0gbmV3IEJydXNoTWVzc2FnZSh7XG4gICAgICAgIGNoYXJ0SWQ6IHRoaXMuY29uZmlnLmlkLFxuICAgICAgICBzZWxlY3Rpb246IFt0aGlzLmNvbmZpZz8uYnJ1c2g/LmZyb20sIHRoaXMuY29uZmlnPy5icnVzaD8udG9dLFxuICAgICAgICBtb2RlOiAnaW5pdCdcbiAgICAgIH0pO1xuICAgICAgdGhpcy5icnVzaFNlcnZpY2Uuc2V0QnJ1c2goYnJ1c2hNZXNzYWdlKTtcbiAgICB9XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKGNoYW5nZXMuaGFzT3duUHJvcGVydHkoJ2NvbmZpZycpKSB7XG4gICAgICB0aGlzLmNsZWFyUHJldmlvdXNTZWxlY3Rpb24oKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jb25maWc/LmJydXNoPy5lbmFibGUpIHtcbiAgICAgIHRoaXMuYXBwbHlCcnVzaChcbiAgICAgICAgdGhpcy5jb25maWcsXG4gICAgICAgIHRoaXMuYXhpcy5zY2FsZVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBhcHBseUJydXNoKGNvbmZpZzogSUNoYXJ0Q29uZmlnLCBicnVzaFNjYWxlOiBhbnkpIHtcbiAgICB0aGlzLmJydXNoPy5vbignc3RhcnQgYnJ1c2ggZW5kJywgbnVsbCk7XG4gICAgaWYgKGNvbmZpZy5icnVzaD8uZW5hYmxlKSB7XG4gICAgICB0aGlzLmJydXNoID0gdGhpcy5icnVzaE1hcC5nZXQoY29uZmlnPy5icnVzaD8udHlwZSA/PyBCcnVzaFR5cGUueCk7XG4gICAgICB0aGlzLmJydXNoLm9uKCdzdGFydCBicnVzaCBlbmQnLCAoXzogZDMuRDNCcnVzaEV2ZW50PGFueT4pID0+IHtcbiAgICAgICAgaWYgKF8uc291cmNlRXZlbnQpIHtcbiAgICAgICAgICBpZiAoIV8uc2VsZWN0aW9uKSByZXR1cm47XG4gICAgICAgICAgY29uc3QgW2Zyb20sIHRvXSA9IF8uc2VsZWN0aW9uIGFzIG51bWJlcltdO1xuICAgICAgICAgIGlmICh0byAtIGZyb20gPT09IDApIHtcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdGlvbjogbnVtYmVyW10gPVxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbj8ubWFwKGJydXNoU2NhbGUpID8/XG4gICAgICAgICAgICAgIFtjb25maWcuYnJ1c2g/LmZyb20sIGNvbmZpZy5icnVzaD8udG9dLm1hcChicnVzaFNjYWxlKTtcbiAgICAgICAgICAgIGNvbnN0IGhhbGZCcnVzaEhlaWdodCA9IChzZWxlY3Rpb25bMV0gLSBzZWxlY3Rpb25bMF0pIC8gMjtcbiAgICAgICAgICAgIGNvbnN0IGludmVydGVkU2VsZWN0aW9uOiBudW1iZXJbXSA9IFtcbiAgICAgICAgICAgICAgZnJvbSAtIGhhbGZCcnVzaEhlaWdodCxcbiAgICAgICAgICAgICAgdG8gKyBoYWxmQnJ1c2hIZWlnaHQsXG4gICAgICAgICAgICBdLm1hcChicnVzaFNjYWxlLmludmVydCk7XG5cbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgaW52ZXJ0ZWRTZWxlY3Rpb25bMV0gLSBpbnZlcnRlZFNlbGVjdGlvblswXSA+XG4gICAgICAgICAgICAgIGNvbmZpZy5icnVzaD8ubWF4XG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgdGhpcy5fY29udGFpbmVyLmNhbGwoXG4gICAgICAgICAgICAgICAgdGhpcy5icnVzaC5tb3ZlLFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgIE1hdGguZmxvb3IoaW52ZXJ0ZWRTZWxlY3Rpb25bMF0pLFxuICAgICAgICAgICAgICAgICAgTWF0aC5mbG9vcihpbnZlcnRlZFNlbGVjdGlvblswXSArIGNvbmZpZy5icnVzaD8ubWF4KSxcbiAgICAgICAgICAgICAgICBdLm1hcChicnVzaFNjYWxlKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgaW52ZXJ0ZWRTZWxlY3Rpb25bMV0gLSBpbnZlcnRlZFNlbGVjdGlvblswXSA8XG4gICAgICAgICAgICAgIGNvbmZpZy5icnVzaD8ubWluXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgdGhpcy5fY29udGFpbmVyLmNhbGwoXG4gICAgICAgICAgICAgICAgdGhpcy5icnVzaC5tb3ZlLFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgIE1hdGguZmxvb3IoaW52ZXJ0ZWRTZWxlY3Rpb25bMF0pLFxuICAgICAgICAgICAgICAgICAgTWF0aC5jZWlsKGludmVydGVkU2VsZWN0aW9uWzBdICsgY29uZmlnLmJydXNoPy5taW4pLFxuICAgICAgICAgICAgICAgIF0ubWFwKGJydXNoU2NhbGUpXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5fY29udGFpbmVyLmNhbGwodGhpcy5icnVzaC5tb3ZlLCBbXG4gICAgICAgICAgICAgIGZyb20gLSBoYWxmQnJ1c2hIZWlnaHQsXG4gICAgICAgICAgICAgIHRvICsgaGFsZkJydXNoSGVpZ2h0LFxuICAgICAgICAgICAgXSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgYnJ1c2hTY2FsZS5pbnZlcnQodG8pIC0gYnJ1c2hTY2FsZS5pbnZlcnQoZnJvbSkgPlxuICAgICAgICAgICAgY29uZmlnLmJydXNoPy5tYXhcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMuX2NvbnRhaW5lci5jYWxsKFxuICAgICAgICAgICAgICB0aGlzLmJydXNoLm1vdmUsXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uXG4gICAgICAgICAgICAgICAgPyBbXG4gICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvblswXSxcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uWzBdICsgY29uZmlnLmJydXNoPy5tYXgsXG4gICAgICAgICAgICAgICAgXS5tYXAoYnJ1c2hTY2FsZSlcbiAgICAgICAgICAgICAgICA6IFtjb25maWcuYnJ1c2g/LmZyb20sIGNvbmZpZy5icnVzaD8udG9dLm1hcChicnVzaFNjYWxlKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBicnVzaFNjYWxlLmludmVydCh0bykgLSBicnVzaFNjYWxlLmludmVydChmcm9tKSA8XG4gICAgICAgICAgICBjb25maWcuYnJ1c2g/Lm1pblxuICAgICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5fY29udGFpbmVyLmNhbGwoXG4gICAgICAgICAgICAgIHRoaXMuYnJ1c2gubW92ZSxcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25cbiAgICAgICAgICAgICAgICA/IFtcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uWzBdLFxuICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25bMF0gKyBjb25maWcuYnJ1c2g/Lm1pbixcbiAgICAgICAgICAgICAgICBdLm1hcChicnVzaFNjYWxlKVxuICAgICAgICAgICAgICAgIDogW2NvbmZpZy5icnVzaD8uZnJvbSwgY29uZmlnLmJydXNoPy50b10ubWFwKGJydXNoU2NhbGUpXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChfLnNvdXJjZUV2ZW50IGluc3RhbmNlb2YgTW91c2VFdmVudCkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb24gPSBfLnNlbGVjdGlvbi5tYXAoYnJ1c2hTY2FsZS5pbnZlcnQpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IGJydXNoTWVzc2FnZSA9IG5ldyBCcnVzaE1lc3NhZ2Uoe1xuICAgICAgICAgICAgY2hhcnRJZDogdGhpcy5jb25maWcuaWQsXG4gICAgICAgICAgICBzZWxlY3Rpb246IFticnVzaFNjYWxlLmludmVydChmcm9tKSwgYnJ1c2hTY2FsZS5pbnZlcnQodG8pXSxcbiAgICAgICAgICAgIG1vZGU6IF8ubW9kZVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHRoaXMuYnJ1c2hTZXJ2aWNlLnNldEJydXNoKGJydXNoTWVzc2FnZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0aGlzLl9jb250YWluZXIuY2FsbCh0aGlzLmJydXNoKTtcblxuICAgICAgICAgIGxldCBkb21haW4gPSBicnVzaFNjYWxlLmRvbWFpbigpO1xuXG4gICAgICAgICAgaWYgKGNvbmZpZz8uYnJ1c2g/LmZyb20pIHtcbiAgICAgICAgICAgIGRvbWFpblswXSA9IGNvbmZpZy5icnVzaC5mcm9tO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChjb25maWc/LmJydXNoPy50bykge1xuICAgICAgICAgICAgZG9tYWluWzFdID0gY29uZmlnLmJydXNoLnRvO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMuX2NvbnRhaW5lci5jYWxsKFxuICAgICAgICAgICAgdGhpcy5icnVzaC5tb3ZlLFxuICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25cbiAgICAgICAgICAgICAgPyB0aGlzLnNlbGVjdGlvbi5tYXAoYnJ1c2hTY2FsZSlcbiAgICAgICAgICAgICAgOiBkb21haW4ubWFwKGJydXNoU2NhbGUpLFxuICAgICAgICAgICAge31cbiAgICAgICAgICApO1xuICAgICAgICB9LCAwKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGNsZWFyUHJldmlvdXNTZWxlY3Rpb24oKSB7XG4gICAgdGhpcy5zZWxlY3Rpb24gPSBudWxsO1xuICB9XG59XG4iXX0=
|
|
131
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJ1c2hhYmxlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jaGFydC9kaXJlY3RpdmVzL2JydXNoYWJsZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsS0FBSyxFQUNMLE1BQU0sR0FLUCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN6QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDckQsT0FBTyxLQUFLLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDekIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzVELE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7O0FBTXpDLE1BQU0sT0FBTyxrQkFBa0I7SUFZN0IsWUFDVSxZQUEwQixFQUMxQixZQUEwQixFQUMxQixPQUFtQixFQUNuQixJQUFZO1FBSFosaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsWUFBTyxHQUFQLE9BQU8sQ0FBWTtRQUNuQixTQUFJLEdBQUosSUFBSSxDQUFRO1FBVmQsYUFBUSxHQUFHLElBQUksR0FBRyxFQUFvQzthQUMzRCxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUM7YUFDN0IsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDekIsV0FBTSxHQUFHLElBQUksQ0FBQztRQVNwQixJ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RGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBJbnB1dCxcbiAgTmdab25lLFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBTaW1wbGVDaGFuZ2VzLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElDaGFydENvbmZpZyB9IGZyb20gJy4uL21vZGVsL2ktY2hhcnQtY29uZmlnJztcbmltcG9ydCB7IEJydXNoU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2UvYnJ1c2guc2VydmljZSc7XG5pbXBvcnQgeyBDaGFydFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlL2NoYXJ0LnNlcnZpY2UnO1xuaW1wb3J0IHsgQXhpcyB9IGZyb20gJy4uL2NvcmUvYXhpcy9heGlzJztcbmltcG9ydCB7IEJydXNoVHlwZSB9IGZyb20gJy4uL21vZGVsL2VudW0vYnJ1c2gtdHlwZSc7XG5pbXBvcnQgKiBhcyBkMyBmcm9tICdkMyc7XG5pbXBvcnQgeyBCcnVzaE1lc3NhZ2UgfSBmcm9tICcuLi9tb2RlbC9pLWJyb2FkY2FzdC1tZXNzYWdlJztcbmltcG9ydCB7IGZpbHRlciwgdGFrZVdoaWxlIH0gZnJvbSAncnhqcyc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1t0ZXRhQnJ1c2hhYmxlXScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIEJydXNoYWJsZURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uRGVzdHJveSwgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkNoYW5nZXMge1xuICBASW5wdXQoKSBjb25maWc6IElDaGFydENvbmZpZztcbiAgQElucHV0KCkgYXhpczogQXhpcztcblxuICBwcml2YXRlIHNlbGVjdGlvbjogbnVtYmVyW107XG4gIHByaXZhdGUgYnJ1c2g6IGQzLkJydXNoQmVoYXZpb3I8YW55PjtcbiAgcHJpdmF0ZSBicnVzaE1hcCA9IG5ldyBNYXA8QnJ1c2hUeXBlLCBkMy5CcnVzaEJlaGF2aW9yPGFueT4+KClcbiAgICAuc2V0KEJydXNoVHlwZS54LCBkMy5icnVzaFgoKSlcbiAgICAuc2V0KEJydXNoVHlwZS55LCBkMy5icnVzaFkoKSk7XG4gIHByaXZhdGUgX2FsaXZlID0gdHJ1ZTtcbiAgcHJpdmF0ZSBfY29udGFpbmVyO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYnJ1c2hTZXJ2aWNlOiBCcnVzaFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjaGFydFNlcnZpY2U6IENoYXJ0U2VydmljZSxcbiAgICBwcml2YXRlIGVsZW1lbnQ6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSB6b25lOiBOZ1pvbmVcbiAgKSB7XG4gICAgdGhpcy5fY29udGFpbmVyID0gZDMuc2VsZWN0KHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50KTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuYnJ1c2hTZXJ2aWNlLmJydXNoRG9tYWluXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVdoaWxlKCgpID0+IHRoaXMuX2FsaXZlKSxcbiAgICAgICAgZmlsdGVyKChicnVzaCkgPT4gYnJ1c2guY2hhcnRJZCAhPT0gdGhpcy5jb25maWcuaWQpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChicnVzaCkgPT4ge1xuICAgICAgICB0aGlzLl9jb250YWluZXIuY2FsbChcbiAgICAgICAgICB0aGlzLmJydXNoLm1vdmUsXG4gICAgICAgICAgW01hdGguZmxvb3IoYnJ1c2guc2VsZWN0aW9uWzBdKSwgTWF0aC5mbG9vcihicnVzaC5zZWxlY3Rpb25bMV0pXS5tYXAodGhpcy5heGlzLnNjYWxlKVxuICAgICAgICApO1xuICAgICAgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLl9hbGl2ZSA9IGZhbHNlO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIGlmICh0aGlzLmNvbmZpZz8uYnJ1c2g/LmVuYWJsZSkge1xuICAgICAgY29uc3QgYnJ1c2hNZXNzYWdlID0gbmV3IEJydXNoTWVzc2FnZSh7XG4gICAgICAgIGNoYXJ0SWQ6IHRoaXMuY29uZmlnLmlkLFxuICAgICAgICBzZWxlY3Rpb246IFt0aGlzLmNvbmZpZz8uYnJ1c2g/LmZyb20sIHRoaXMuY29uZmlnPy5icnVzaD8udG9dLFxuICAgICAgICBtb2RlOiAnaW5pdCcsXG4gICAgICB9KTtcbiAgICAgIHRoaXMuYnJ1c2hTZXJ2aWNlLnNldEJydXNoKGJydXNoTWVzc2FnZSk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmIChjaGFuZ2VzLmhhc093blByb3BlcnR5KCdjb25maWcnKSkge1xuICAgICAgdGhpcy5jbGVhclByZXZpb3VzU2VsZWN0aW9uKCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY29uZmlnPy5icnVzaD8uZW5hYmxlKSB7XG4gICAgICB0aGlzLmFwcGx5QnJ1c2godGhpcy5jb25maWcsIHRoaXMuYXhpcy5zY2FsZSk7XG4gICAgfVxuICB9XG5cbiAgYXBwbHlCcnVzaChjb25maWc6IElDaGFydENvbmZpZywgYnJ1c2hTY2FsZTogYW55KSB7XG4gICAgdGhpcy5icnVzaD8ub24oJ3N0YXJ0IGJydXNoIGVuZCcsIG51bGwpO1xuICAgIGlmIChjb25maWcuYnJ1c2g/LmVuYWJsZSkge1xuICAgICAgdGhpcy5icnVzaCA9IHRoaXMuYnJ1c2hNYXAuZ2V0KGNvbmZpZz8uYnJ1c2g/LnR5cGUgPz8gQnJ1c2hUeXBlLngpO1xuICAgICAgdGhpcy5icnVzaC5vbignc3RhcnQgYnJ1c2ggZW5kJywgKF86IGQzLkQzQnJ1c2hFdmVudDxhbnk+KSA9PiB7XG4gICAgICAgIGlmIChfLnNvdXJjZUV2ZW50KSB7XG4gICAgICAgICAgaWYgKCFfLnNlbGVjdGlvbikgcmV0dXJuO1xuICAgICAgICAgIGNvbnN0IFtmcm9tLCB0b10gPSBfLnNlbGVjdGlvbiBhcyBudW1iZXJbXTtcbiAgICAgICAgICBpZiAodG8gLSBmcm9tID09PSAwKSB7XG4gICAgICAgICAgICBjb25zdCBzZWxlY3Rpb246IG51bWJlcltdID1cbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb24/Lm1hcChicnVzaFNjYWxlKSA/PyBbY29uZmlnLmJydXNoPy5mcm9tLCBjb25maWcuYnJ1c2g/LnRvXS5tYXAoYnJ1c2hTY2FsZSk7XG4gICAgICAgICAgICBjb25zdCBoYWxmQnJ1c2hIZWlnaHQgPSAoc2VsZWN0aW9uWzFdIC0gc2VsZWN0aW9uWzBdKSAvIDI7XG4gICAgICAgICAgICBjb25zdCBpbnZlcnRlZFNlbGVjdGlvbjogbnVtYmVyW10gPSBbZnJvbSAtIGhhbGZCcnVzaEhlaWdodCwgdG8gKyBoYWxmQnJ1c2hIZWlnaHRdLm1hcChicnVzaFNjYWxlLmludmVydCk7XG5cbiAgICAgICAgICAgIGlmIChpbnZlcnRlZFNlbGVjdGlvblsxXSAtIGludmVydGVkU2VsZWN0aW9uWzBdID4gY29uZmlnLmJydXNoPy5tYXgpIHtcbiAgICAgICAgICAgICAgdGhpcy5fY29udGFpbmVyLmNhbGwoXG4gICAgICAgICAgICAgICAgdGhpcy5icnVzaC5tb3ZlLFxuICAgICAgICAgICAgICAgIFtNYXRoLmZsb29yKGludmVydGVkU2VsZWN0aW9uWzBdKSwgTWF0aC5mbG9vcihpbnZlcnRlZFNlbGVjdGlvblswXSArIGNvbmZpZy5icnVzaD8ubWF4KV0ubWFwKGJydXNoU2NhbGUpXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGludmVydGVkU2VsZWN0aW9uWzFdIC0gaW52ZXJ0ZWRTZWxlY3Rpb25bMF0gPCBjb25maWcuYnJ1c2g/Lm1pbikge1xuICAgICAgICAgICAgICB0aGlzLl9jb250YWluZXIuY2FsbChcbiAgICAgICAgICAgICAgICB0aGlzLmJydXNoLm1vdmUsXG4gICAgICAgICAgICAgICAgW01hdGguZmxvb3IoaW52ZXJ0ZWRTZWxlY3Rpb25bMF0pLCBNYXRoLmNlaWwoaW52ZXJ0ZWRTZWxlY3Rpb25bMF0gKyBjb25maWcuYnJ1c2g/Lm1pbildLm1hcChicnVzaFNjYWxlKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuX2NvbnRhaW5lci5jYWxsKHRoaXMuYnJ1c2gubW92ZSwgW2Zyb20gLSBoYWxmQnJ1c2hIZWlnaHQsIHRvICsgaGFsZkJydXNoSGVpZ2h0XSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGJydXNoU2NhbGUuaW52ZXJ0KHRvKSAtIGJydXNoU2NhbGUuaW52ZXJ0KGZyb20pID4gY29uZmlnLmJydXNoPy5tYXgpIHtcbiAgICAgICAgICAgIHRoaXMuX2NvbnRhaW5lci5jYWxsKFxuICAgICAgICAgICAgICB0aGlzLmJydXNoLm1vdmUsXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uXG4gICAgICAgICAgICAgICAgPyBbdGhpcy5zZWxlY3Rpb25bMF0sIHRoaXMuc2VsZWN0aW9uWzBdICsgY29uZmlnLmJydXNoPy5tYXhdLm1hcChicnVzaFNjYWxlKVxuICAgICAgICAgICAgICAgIDogW2NvbmZpZy5icnVzaD8uZnJvbSwgY29uZmlnLmJydXNoPy50b10ubWFwKGJydXNoU2NhbGUpXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChicnVzaFNjYWxlLmludmVydCh0bykgLSBicnVzaFNjYWxlLmludmVydChmcm9tKSA8IGNvbmZpZy5icnVzaD8ubWluKSB7XG4gICAgICAgICAgICB0aGlzLl9jb250YWluZXIuY2FsbChcbiAgICAgICAgICAgICAgdGhpcy5icnVzaC5tb3ZlLFxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvblxuICAgICAgICAgICAgICAgID8gW3RoaXMuc2VsZWN0aW9uWzBdLCB0aGlzLnNlbGVjdGlvblswXSArIGNvbmZpZy5icnVzaD8ubWluXS5tYXAoYnJ1c2hTY2FsZSlcbiAgICAgICAgICAgICAgICA6IFtjb25maWcuYnJ1c2g/LmZyb20sIGNvbmZpZy5icnVzaD8udG9dLm1hcChicnVzaFNjYWxlKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoXy5zb3VyY2VFdmVudCBpbnN0YW5jZW9mIE1vdXNlRXZlbnQpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uID0gXy5zZWxlY3Rpb24ubWFwKGJydXNoU2NhbGUuaW52ZXJ0KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBicnVzaE1lc3NhZ2UgPSBuZXcgQnJ1c2hNZXNzYWdlKHtcbiAgICAgICAgICAgIGNoYXJ0SWQ6IHRoaXMuY29uZmlnLmlkLFxuICAgICAgICAgICAgc2VsZWN0aW9uOiBbYnJ1c2hTY2FsZS5pbnZlcnQoZnJvbSksIGJydXNoU2NhbGUuaW52ZXJ0KHRvKV0sXG4gICAgICAgICAgICBtb2RlOiBfLm1vZGUsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdGhpcy5icnVzaFNlcnZpY2Uuc2V0QnJ1c2goYnJ1c2hNZXNzYWdlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuX2NvbnRhaW5lci5jYWxsKHRoaXMuYnJ1c2gpO1xuXG4gICAgICAgICAgbGV0IGRvbWFpbiA9IGJydXNoU2NhbGUuZG9tYWluKCk7XG5cbiAgICAgICAgICBpZiAoY29uZmlnPy5icnVzaD8uZnJvbSkge1xuICAgICAgICAgICAgZG9tYWluWzBdID0gY29uZmlnLmJydXNoLmZyb207XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGNvbmZpZz8uYnJ1c2g/LnRvKSB7XG4gICAgICAgICAgICBkb21haW5bMV0gPSBjb25maWcuYnJ1c2gudG87XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy5fY29udGFpbmVyLmNhbGwoXG4gICAgICAgICAgICB0aGlzLmJydXNoLm1vdmUsXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvbiA/IHRoaXMuc2VsZWN0aW9uLm1hcChicnVzaFNjYWxlKSA6IGRvbWFpbi5tYXAoYnJ1c2hTY2FsZSksXG4gICAgICAgICAgICB7fVxuICAgICAgICAgICk7XG4gICAgICAgIH0sIDApO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgY2xlYXJQcmV2aW91c1NlbGVjdGlvbigpIHtcbiAgICB0aGlzLnNlbGVjdGlvbiA9IG51bGw7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -16,7 +16,7 @@ export class DraggablePointDirective {
|
|
|
16
16
|
event.preventDefault();
|
|
17
17
|
this.startPosition = {
|
|
18
18
|
x: event.x,
|
|
19
|
-
y: event.y
|
|
19
|
+
y: event.y,
|
|
20
20
|
};
|
|
21
21
|
this.moveStart.emit(this.startPosition);
|
|
22
22
|
}
|
|
@@ -30,12 +30,13 @@ export class DraggablePointDirective {
|
|
|
30
30
|
if (this.dragDirection === DragPointType.y) {
|
|
31
31
|
deltaX = 0;
|
|
32
32
|
}
|
|
33
|
-
if (this.allowDrag &&
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
33
|
+
if (this.allowDrag &&
|
|
34
|
+
!this.allowDrag({
|
|
35
|
+
x: event.x,
|
|
36
|
+
y: event.y,
|
|
37
|
+
deltaX,
|
|
38
|
+
deltaY,
|
|
39
|
+
})) {
|
|
39
40
|
this.startPosition = null;
|
|
40
41
|
return;
|
|
41
42
|
}
|
|
@@ -46,14 +47,14 @@ export class DraggablePointDirective {
|
|
|
46
47
|
else {
|
|
47
48
|
this.transformCache = {
|
|
48
49
|
x: deltaX,
|
|
49
|
-
y: deltaY
|
|
50
|
+
y: deltaY,
|
|
50
51
|
};
|
|
51
52
|
}
|
|
52
53
|
this.moveEnd.emit({
|
|
53
54
|
x: event.x,
|
|
54
55
|
y: event.y,
|
|
55
56
|
deltaX,
|
|
56
|
-
deltaY
|
|
57
|
+
deltaY,
|
|
57
58
|
});
|
|
58
59
|
}
|
|
59
60
|
this.startPosition = null;
|
|
@@ -66,12 +67,13 @@ export class DraggablePointDirective {
|
|
|
66
67
|
deltaX = this.transformCache.x + deltaX;
|
|
67
68
|
deltaY = this.transformCache.y + deltaY;
|
|
68
69
|
}
|
|
69
|
-
if (this.allowDrag &&
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
70
|
+
if (this.allowDrag &&
|
|
71
|
+
!this.allowDrag({
|
|
72
|
+
x: event.x,
|
|
73
|
+
y: event.y,
|
|
74
|
+
deltaX,
|
|
75
|
+
deltaY,
|
|
76
|
+
})) {
|
|
75
77
|
return;
|
|
76
78
|
}
|
|
77
79
|
if (this.dragDirection === DragPointType.x) {
|
|
@@ -87,7 +89,7 @@ export class DraggablePointDirective {
|
|
|
87
89
|
x: event.x,
|
|
88
90
|
y: event.y,
|
|
89
91
|
deltaX,
|
|
90
|
-
deltaY
|
|
92
|
+
deltaY,
|
|
91
93
|
});
|
|
92
94
|
}
|
|
93
95
|
}
|
|
@@ -106,7 +108,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.1", ngImpor
|
|
|
106
108
|
args: [{
|
|
107
109
|
selector: '[tetaDraggablePoint]',
|
|
108
110
|
exportAs: 'tetaDraggablePoint',
|
|
109
|
-
standalone: true
|
|
111
|
+
standalone: true,
|
|
110
112
|
}]
|
|
111
113
|
}], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { tetaDraggablePoint: [{
|
|
112
114
|
type: Input
|
|
@@ -139,4 +141,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.1", ngImpor
|
|
|
139
141
|
type: HostListener,
|
|
140
142
|
args: ['window:touchmove', ['$event']]
|
|
141
143
|
}] } });
|
|
142
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhZ2dhYmxlLXBvaW50LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jaGFydC9kaXJlY3RpdmVzL2RyYWdnYWJsZS1wb2ludC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQy9GLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQzs7QUFPNUQsTUFBTSxPQUFPLHVCQUF1QjtJQW9CbEMsWUFBb0IsV0FBdUI7UUFBdkIsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUFHakMsY0FBUyxHQUFHLElBQUksWUFBWSxFQUdsQyxDQUFDO1FBRUssZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFLcEMsQ0FBQztRQUVLLFlBQU8sR0FBRyxJQUFJLFlBQVksRUFLaEMsQ0FBQztJQW5CTCxDQUFDO0lBdUJELFNBQVMsQ0FBQyxLQUFpQjtRQUN6QixJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDN0IsT0FBTztRQUNULENBQUM7UUFDRCxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDeEIsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxhQUFhLEdBQUc7WUFDbkIsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ1YsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1NBQ1gsQ0FBQztRQUNGLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBSUQsT0FBTyxDQUFDLEtBQWlCO1FBQ3ZCLElBQUksSUFBSSxDQUFDLGFBQWEsS0FBSyxJQUFJLElBQUksSUFBSSxDQUFDLGFBQWEsS0FBSyxTQUFTLEVBQUUsQ0FB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QkFDekMsWUFBWTt1QkFBQyxpQkFBaUIsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkF5QzNDLFNBQVM7c0JBRlIsWUFBWTt1QkFBQyxrQkFBa0IsRUFBRSxDQUFDLFFBQVEsQ0FBQzs7c0JBQzNDLFlBQVk7dUJBQUMsa0JBQWtCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0RpcmVjdGl2ZSwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBIb3N0TGlzdGVuZXIsIElucHV0LCBPdXRwdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtEcmFnUG9pbnRUeXBlfSBmcm9tICcuLi9tb2RlbC9lbnVtL2RyYWctcG9pbnQtdHlwZSc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1t0ZXRhRHJhZ2dhYmxlUG9pbnRdJyxcbiAgZXhwb3J0QXM6ICd0ZXRhRHJhZ2dhYmxlUG9pbnQnLFxuICBzdGFuZGFsb25lOnRydWVcbn0pXG5leHBvcnQgY2xhc3MgRHJhZ2dhYmxlUG9pbnREaXJlY3RpdmUge1xuICBASW5wdXQoKSB0ZXRhRHJhZ2dhYmxlUG9pbnQ6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGRyYWdEaXJlY3Rpb246IERyYWdQb2ludFR5cGU7XG4gIEBJbnB1dCgpIGFsbG93RHJhZzogKHBvaW50OiB7XG4gICAgeDogbnVtYmVyLFxuICAgIHk6IG51bWJlcixcbiAgICBkZWx0YVg6IG51bWJlcixcbiAgICBkZWx0YVk6IG51bWJlclxuICB9KSA9PiBib29sZWFuO1xuXG4gIHByaXZhdGUgc3RhcnRQb3NpdGlvbjoge1xuICAgIHg6IG51bWJlcixcbiAgICB5OiBudW1iZXI7XG4gIH07XG5cbiAgcHJpdmF0ZSB0cmFuc2Zvcm1DYWNoZToge1xuICAgIHg6IG51bWJlcixcbiAgICB5OiBudW1iZXI7XG4gIH07XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfZWxlbWVudFJlZjogRWxlbWVudFJlZikge1xuICB9XG5cbiAgQE91dHB1dCgpIG1vdmVTdGFydCA9IG5ldyBFdmVudEVtaXR0ZXI8e1xuICAgIHg6IG51bWJlcixcbiAgICB5OiBudW1iZXJcbiAgfT4oKTtcblxuICBAT3V0cHV0KCkgbW92ZVByb2Nlc3MgPSBuZXcgRXZlbnRFbWl0dGVyPHtcbiAgICB4OiBudW1iZXIsXG4gICAgeTogbnVtYmVyLFxuICAgIGRlbHRhWDogbnVtYmVyLFxuICAgIGRlbHRhWTogbnVtYmVyXG4gIH0+KCk7XG5cbiAgQE91dHB1dCgpIG1vdmVFbmQgPSBuZXcgRXZlbnRFbWl0dGVyPHtcbiAgICB4OiBudW1iZXIsXG4gICAgeTogbnVtYmVyLFxuICAgIGRlbHRhWDogbnVtYmVyLFxuICAgIGRlbHRhWTogbnVtYmVyXG4gIH0+KCk7XG5cbiAgQEhvc3RMaXN0ZW5lcignbW91c2Vkb3duJywgWyckZXZlbnQnXSlcbiAgQEhvc3RMaXN0ZW5lcigndG91Y2hzdGFydCcsIFsnJGV2ZW50J10pXG4gIG1vdXNlRG93bihldmVudDogTW91c2VFdmVudCkge1xuICAgIGlmICghdGhpcy50ZXRhRHJhZ2dhYmxlUG9pbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB0aGlzLnN0YXJ0UG9zaXRpb24gPSB7XG4gICAgICB4OiBldmVudC54LFxuICAgICAgeTogZXZlbnQueVxuICAgIH07XG4gICAgdGhpcy5tb3ZlU3RhcnQuZW1pdCh0aGlzLnN0YXJ0UG9zaXRpb24pO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignd2luZG93Om1vdXNldXAnLCBbJyRldmVudCddKVxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6dG91Y2hlbmQnLCBbJyRldmVudCddKVxuICBtb3VzZVVwKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgaWYgKHRoaXMuc3RhcnRQb3NpdGlvbiAhPT0gbnVsbCAmJiB0aGlzLnN0YXJ0UG9zaXRpb24gIT09IHVuZGVmaW5lZCkge1xuICAgICAgbGV0IGRlbHRhWCA9IGV2ZW50LnggLSB0aGlzLnN0YXJ0UG9zaXRpb24ueDtcbiAgICAgIGxldCBkZWx0YVkgPSBldmVudC55IC0gdGhpcy5zdGFydFBvc2l0aW9uLnk7XG4gICAgICBpZiAodGhpcy5kcmFnRGlyZWN0aW9uID09PSBEcmFnUG9pbnRUeXBlLngpIHtcbiAgICAgICAgZGVsdGFZID0gMDtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmRyYWdEaXJlY3Rpb24gPT09IERyYWdQb2ludFR5cGUueSkge1xuICAgICAgICBkZWx0YVggPSAwO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuYWxsb3dEcmFnICYmICF0aGlzLmFsbG93RHJhZyh7XG4gICAgICAgIHg6IGV2ZW50LngsXG4gICAgICAgIHk6IGV2ZW50LnksXG4gICAgICAgIGRlbHRhWCxcbiAgICAgICAgZGVsdGFZXG4gICAgICB9KSkge1xuICAgICAgICB0aGlzLnN0YXJ0UG9zaXRpb24gPSBudWxsO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAodGhpcy50cmFuc2Zvcm1DYWNoZSkge1xuICAgICAgICB0aGlzLnRyYW5zZm9ybUNhY2hlLnggPSB0aGlzLnRyYW5zZm9ybUNhY2hlLnggKyBkZWx0YVg7XG4gICAgICAgIHRoaXMudHJhbnNmb3JtQ2FjaGUueSA9IHRoaXMudHJhbnNmb3JtQ2FjaGUueSArIGRlbHRhWTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMudHJhbnNmb3JtQ2FjaGUgPSB7XG4gICAgICAgICAgeDogZGVsdGFYLFxuICAgICAgICAgIHk6IGRlbHRhWVxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgdGhpcy5tb3ZlRW5kLmVtaXQoe1xuICAgICAgICB4OiBldmVudC54LFxuICAgICAgICB5OiBldmVudC55LFxuICAgICAgICBkZWx0YVgsXG4gICAgICAgIGRlbHRhWVxuICAgICAgfSk7XG4gICAgfVxuICAgIHRoaXMuc3RhcnRQb3NpdGlvbiA9IG51bGw7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6bW91c2Vtb3ZlJywgWyckZXZlbnQnXSlcbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OnRvdWNobW92ZScsIFsnJGV2ZW50J10pXG4gIG1vdXNlTW92ZShldmVudDogTW91c2VFdmVudCkge1xuICAgIGlmICh0aGlzLnN0YXJ0UG9zaXRpb24pIHtcbiAgICAgIGxldCBkZWx0YVggPSBldmVudC54IC0gdGhpcy5zdGFydFBvc2l0aW9uLng7XG4gICAgICBsZXQgZGVsdGFZID0gZXZlbnQueSAtIHRoaXMuc3RhcnRQb3NpdGlvbi55O1xuICAgICAgaWYgKHRoaXMudHJhbnNmb3JtQ2FjaGUpIHtcbiAgICAgICAgZGVsdGFYID0gdGhpcy50cmFuc2Zvcm1DYWNoZS54ICsgZGVsdGFYO1xuICAgICAgICBkZWx0YVkgPSB0aGlzLnRyYW5zZm9ybUNhY2hlLnkgKyBkZWx0YVk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5hbGxvd0RyYWcgJiYgIXRoaXMuYWxsb3dEcmFnKHtcbiAgICAgICAgeDogZXZlbnQueCxcbiAgICAgICAgeTogZXZlbnQueSxcbiAgICAgICAgZGVsdGFYLFxuICAgICAgICBkZWx0YVlcbiAgICAgIH0pKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmRyYWdEaXJlY3Rpb24gPT09IERyYWdQb2ludFR5cGUueCkge1xuICAgICAgICBkZWx0YVkgPSAwO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuZHJhZ0RpcmVjdGlvbiA9PT0gRHJhZ1BvaW50VHlwZS55KSB7XG4gICAgICAgIGRlbHRhWCA9IDA7XG4gICAgICB9XG4gICAgICB0aGlzLnNldFRyYW5zZm9ybShkZWx0YVgsIGRlbHRhWSk7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB0aGlzLm1vdmVQcm9jZXNzLmVtaXQoe1xuICAgICAgICB4OiBldmVudC54LFxuICAgICAgICB5OiBldmVudC55LFxuICAgICAgICBkZWx0YVgsXG4gICAgICAgIGRlbHRhWVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgc2V0VHJhbnNmb3JtKHg6IG51bWJlciwgeTogbnVtYmVyKSB7XG4gICAgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnN0eWxlLnRyYW5zZm9ybSA9IGB0cmFuc2xhdGUoJHt4fXB4LCAke3l9cHgpYDtcbiAgfVxuXG4gIHJlc2V0VHJhbnNmb3JtKCkge1xuICAgIHRoaXMuc2V0VHJhbnNmb3JtKDAsIDApO1xuICAgIHRoaXMudHJhbnNmb3JtQ2FjaGUgPSBudWxsO1xuICB9XG59XG4iXX0=
|
|
144
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhZ2dhYmxlLXBvaW50LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jaGFydC9kaXJlY3RpdmVzL2RyYWdnYWJsZS1wb2ludC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7QUFPOUQsTUFBTSxPQUFPLHVCQUF1QjtJQWVsQyxZQUFvQixXQUF1QjtRQUF2QixnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQUVqQyxjQUFTLEdBQUcsSUFBSSxZQUFZLEVBR2xDLENBQUM7UUFFSyxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUtwQyxDQUFDO1FBRUssWUFBTyxHQUFHLElBQUksWUFBWSxFQUtoQyxDQUFDO0lBbkJ5QyxDQUFDO0lBdUIvQyxTQUFTLENBQUMsS0FBaUI7UUFDekIsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQzdCLE9BQU87UUFDVCxDQUFDO1FBQ0QsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3hCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsYUFBYSxHQUFHO1lBQ25CLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUNWLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztTQUNYLENBQUM7UUFDRixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUlELE9BQU8sQ0FBQyxLQUFpQjtRQUN2QixJQUFJLElBQUksQ0FBQyxhQUFhLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxhQUFhLEtBQUssU0FBUyxFQUFFLENB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O3NCQUN6QyxZQUFZO3VCQUFDLGlCQUFpQixFQUFFLENBQUMsUUFBUSxDQUFDO2dCQTRDM0MsU0FBUztzQkFGUixZQUFZO3VCQUFDLGtCQUFrQixFQUFFLENBQUMsUUFBUSxDQUFDOztzQkFDM0MsWUFBWTt1QkFBQyxrQkFBa0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBIb3N0TGlzdGVuZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERyYWdQb2ludFR5cGUgfSBmcm9tICcuLi9tb2RlbC9lbnVtL2RyYWctcG9pbnQtdHlwZSc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1t0ZXRhRHJhZ2dhYmxlUG9pbnRdJyxcbiAgZXhwb3J0QXM6ICd0ZXRhRHJhZ2dhYmxlUG9pbnQnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBEcmFnZ2FibGVQb2ludERpcmVjdGl2ZSB7XG4gIEBJbnB1dCgpIHRldGFEcmFnZ2FibGVQb2ludDogYm9vbGVhbjtcbiAgQElucHV0KCkgZHJhZ0RpcmVjdGlvbjogRHJhZ1BvaW50VHlwZTtcbiAgQElucHV0KCkgYWxsb3dEcmFnOiAocG9pbnQ6IHsgeDogbnVtYmVyOyB5OiBudW1iZXI7IGRlbHRhWDogbnVtYmVyOyBkZWx0YVk6IG51bWJlciB9KSA9PiBib29sZWFuO1xuXG4gIHByaXZhdGUgc3RhcnRQb3NpdGlvbjoge1xuICAgIHg6IG51bWJlcjtcbiAgICB5OiBudW1iZXI7XG4gIH07XG5cbiAgcHJpdmF0ZSB0cmFuc2Zvcm1DYWNoZToge1xuICAgIHg6IG51bWJlcjtcbiAgICB5OiBudW1iZXI7XG4gIH07XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfZWxlbWVudFJlZjogRWxlbWVudFJlZikge31cblxuICBAT3V0cHV0KCkgbW92ZVN0YXJ0ID0gbmV3IEV2ZW50RW1pdHRlcjx7XG4gICAgeDogbnVtYmVyO1xuICAgIHk6IG51bWJlcjtcbiAgfT4oKTtcblxuICBAT3V0cHV0KCkgbW92ZVByb2Nlc3MgPSBuZXcgRXZlbnRFbWl0dGVyPHtcbiAgICB4OiBudW1iZXI7XG4gICAgeTogbnVtYmVyO1xuICAgIGRlbHRhWDogbnVtYmVyO1xuICAgIGRlbHRhWTogbnVtYmVyO1xuICB9PigpO1xuXG4gIEBPdXRwdXQoKSBtb3ZlRW5kID0gbmV3IEV2ZW50RW1pdHRlcjx7XG4gICAgeDogbnVtYmVyO1xuICAgIHk6IG51bWJlcjtcbiAgICBkZWx0YVg6IG51bWJlcjtcbiAgICBkZWx0YVk6IG51bWJlcjtcbiAgfT4oKTtcblxuICBASG9zdExpc3RlbmVyKCdtb3VzZWRvd24nLCBbJyRldmVudCddKVxuICBASG9zdExpc3RlbmVyKCd0b3VjaHN0YXJ0JywgWyckZXZlbnQnXSlcbiAgbW91c2VEb3duKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgaWYgKCF0aGlzLnRldGFEcmFnZ2FibGVQb2ludCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHRoaXMuc3RhcnRQb3NpdGlvbiA9IHtcbiAgICAgIHg6IGV2ZW50LngsXG4gICAgICB5OiBldmVudC55LFxuICAgIH07XG4gICAgdGhpcy5tb3ZlU3RhcnQuZW1pdCh0aGlzLnN0YXJ0UG9zaXRpb24pO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignd2luZG93Om1vdXNldXAnLCBbJyRldmVudCddKVxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6dG91Y2hlbmQnLCBbJyRldmVudCddKVxuICBtb3VzZVVwKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgaWYgKHRoaXMuc3RhcnRQb3NpdGlvbiAhPT0gbnVsbCAmJiB0aGlzLnN0YXJ0UG9zaXRpb24gIT09IHVuZGVmaW5lZCkge1xuICAgICAgbGV0IGRlbHRhWCA9IGV2ZW50LnggLSB0aGlzLnN0YXJ0UG9zaXRpb24ueDtcbiAgICAgIGxldCBkZWx0YVkgPSBldmVudC55IC0gdGhpcy5zdGFydFBvc2l0aW9uLnk7XG4gICAgICBpZiAodGhpcy5kcmFnRGlyZWN0aW9uID09PSBEcmFnUG9pbnRUeXBlLngpIHtcbiAgICAgICAgZGVsdGFZID0gMDtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmRyYWdEaXJlY3Rpb24gPT09IERyYWdQb2ludFR5cGUueSkge1xuICAgICAgICBkZWx0YVggPSAwO1xuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICB0aGlzLmFsbG93RHJhZyAmJlxuICAgICAgICAhdGhpcy5hbGxvd0RyYWcoe1xuICAgICAgICAgIHg6IGV2ZW50LngsXG4gICAgICAgICAgeTogZXZlbnQueSxcbiAgICAgICAgICBkZWx0YVgsXG4gICAgICAgICAgZGVsdGFZLFxuICAgICAgICB9KVxuICAgICAgKSB7XG4gICAgICAgIHRoaXMuc3RhcnRQb3NpdGlvbiA9IG51bGw7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLnRyYW5zZm9ybUNhY2hlKSB7XG4gICAgICAgIHRoaXMudHJhbnNmb3JtQ2FjaGUueCA9IHRoaXMudHJhbnNmb3JtQ2FjaGUueCArIGRlbHRhWDtcbiAgICAgICAgdGhpcy50cmFuc2Zvcm1DYWNoZS55ID0gdGhpcy50cmFuc2Zvcm1DYWNoZS55ICsgZGVsdGFZO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy50cmFuc2Zvcm1DYWNoZSA9IHtcbiAgICAgICAgICB4OiBkZWx0YVgsXG4gICAgICAgICAgeTogZGVsdGFZLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgdGhpcy5tb3ZlRW5kLmVtaXQoe1xuICAgICAgICB4OiBldmVudC54LFxuICAgICAgICB5OiBldmVudC55LFxuICAgICAgICBkZWx0YVgsXG4gICAgICAgIGRlbHRhWSxcbiAgICAgIH0pO1xuICAgIH1cbiAgICB0aGlzLnN0YXJ0UG9zaXRpb24gPSBudWxsO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignd2luZG93Om1vdXNlbW92ZScsIFsnJGV2ZW50J10pXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzp0b3VjaG1vdmUnLCBbJyRldmVudCddKVxuICBtb3VzZU1vdmUoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICBpZiAodGhpcy5zdGFydFBvc2l0aW9uKSB7XG4gICAgICBsZXQgZGVsdGFYID0gZXZlbnQueCAtIHRoaXMuc3RhcnRQb3NpdGlvbi54O1xuICAgICAgbGV0IGRlbHRhWSA9IGV2ZW50LnkgLSB0aGlzLnN0YXJ0UG9zaXRpb24ueTtcbiAgICAgIGlmICh0aGlzLnRyYW5zZm9ybUNhY2hlKSB7XG4gICAgICAgIGRlbHRhWCA9IHRoaXMudHJhbnNmb3JtQ2FjaGUueCArIGRlbHRhWDtcbiAgICAgICAgZGVsdGFZID0gdGhpcy50cmFuc2Zvcm1DYWNoZS55ICsgZGVsdGFZO1xuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICB0aGlzLmFsbG93RHJhZyAmJlxuICAgICAgICAhdGhpcy5hbGxvd0RyYWcoe1xuICAgICAgICAgIHg6IGV2ZW50LngsXG4gICAgICAgICAgeTogZXZlbnQueSxcbiAgICAgICAgICBkZWx0YVgsXG4gICAgICAgICAgZGVsdGFZLFxuICAgICAgICB9KVxuICAgICAgKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmRyYWdEaXJlY3Rpb24gPT09IERyYWdQb2ludFR5cGUueCkge1xuICAgICAgICBkZWx0YVkgPSAwO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuZHJhZ0RpcmVjdGlvbiA9PT0gRHJhZ1BvaW50VHlwZS55KSB7XG4gICAgICAgIGRlbHRhWCA9IDA7XG4gICAgICB9XG4gICAgICB0aGlzLnNldFRyYW5zZm9ybShkZWx0YVgsIGRlbHRhWSk7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB0aGlzLm1vdmVQcm9jZXNzLmVtaXQoe1xuICAgICAgICB4OiBldmVudC54LFxuICAgICAgICB5OiBldmVudC55LFxuICAgICAgICBkZWx0YVgsXG4gICAgICAgIGRlbHRhWSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHNldFRyYW5zZm9ybSh4OiBudW1iZXIsIHk6IG51bWJlcikge1xuICAgIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zdHlsZS50cmFuc2Zvcm0gPSBgdHJhbnNsYXRlKCR7eH1weCwgJHt5fXB4KWA7XG4gIH1cblxuICByZXNldFRyYW5zZm9ybSgpIHtcbiAgICB0aGlzLnNldFRyYW5zZm9ybSgwLCAwKTtcbiAgICB0aGlzLnRyYW5zZm9ybUNhY2hlID0gbnVsbDtcbiAgfVxufVxuIl19
|
|
@@ -73,9 +73,7 @@ export class ZoomableDirective {
|
|
|
73
73
|
}
|
|
74
74
|
ngOnInit() {
|
|
75
75
|
if (this.axis?.options?.zoom || this.config?.zoom?.enable) {
|
|
76
|
-
this.zoomable =
|
|
77
|
-
this.config?.zoom?.zoomBehavior === ZoomBehaviorType.move &&
|
|
78
|
-
!this.config?.tooltip?.showCrosshair;
|
|
76
|
+
this.zoomable = this.config?.zoom?.zoomBehavior === ZoomBehaviorType.move && !this.config?.tooltip?.showCrosshair;
|
|
79
77
|
this.crosshair = this.config?.tooltip?.showCrosshair;
|
|
80
78
|
}
|
|
81
79
|
}
|
|
@@ -89,9 +87,7 @@ export class ZoomableDirective {
|
|
|
89
87
|
this.alive = false;
|
|
90
88
|
}
|
|
91
89
|
initZoomSync() {
|
|
92
|
-
this.zoomService.zoomed
|
|
93
|
-
.pipe(takeWhile(() => this.alive))
|
|
94
|
-
.subscribe((zoomed) => {
|
|
90
|
+
this.zoomService.zoomed.pipe(takeWhile(() => this.alive)).subscribe((zoomed) => {
|
|
95
91
|
if (this._element &&
|
|
96
92
|
this.elementRef !== zoomed?.element &&
|
|
97
93
|
zoomed?.axis?.index === this.axis.index &&
|
|
@@ -110,8 +106,7 @@ export class ZoomableDirective {
|
|
|
110
106
|
});
|
|
111
107
|
}
|
|
112
108
|
initZoomListeners() {
|
|
113
|
-
const enable = (this.axis?.options?.zoom && this.axis?.options.visible !== false) ||
|
|
114
|
-
this.config?.zoom?.enable;
|
|
109
|
+
const enable = (this.axis?.options?.zoom && this.axis?.options.visible !== false) || this.config?.zoom?.enable;
|
|
115
110
|
if (!enable) {
|
|
116
111
|
return;
|
|
117
112
|
}
|
|
@@ -120,21 +115,15 @@ export class ZoomableDirective {
|
|
|
120
115
|
[0, 0],
|
|
121
116
|
[this.size.width, this.size.height],
|
|
122
117
|
]);
|
|
123
|
-
const min = this.config?.zoom?.minTranslate != null
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
const max = this.config?.zoom?.maxTranslate != null
|
|
127
|
-
? this.axis.scale(this.config?.zoom?.maxTranslate)
|
|
128
|
-
: Infinity;
|
|
129
|
-
if (this.axis.orientation === AxisOrientation.x &&
|
|
130
|
-
this.config.zoom.type === ZoomType.x) {
|
|
118
|
+
const min = this.config?.zoom?.minTranslate != null ? this.axis.scale(this.config?.zoom?.minTranslate) : -Infinity;
|
|
119
|
+
const max = this.config?.zoom?.maxTranslate != null ? this.axis.scale(this.config?.zoom?.maxTranslate) : Infinity;
|
|
120
|
+
if (this.axis.orientation === AxisOrientation.x && this.config.zoom.type === ZoomType.x) {
|
|
131
121
|
this.zoom.translateExtent([
|
|
132
122
|
[Math.min(min, max), -Infinity],
|
|
133
123
|
[Math.max(min, max), Infinity],
|
|
134
124
|
]);
|
|
135
125
|
}
|
|
136
|
-
if (this.axis.orientation === AxisOrientation.y &&
|
|
137
|
-
this.config.zoom.type === ZoomType.y) {
|
|
126
|
+
if (this.axis.orientation === AxisOrientation.y && this.config.zoom.type === ZoomType.y) {
|
|
138
127
|
this.zoom.translateExtent([
|
|
139
128
|
[-Infinity, Math.min(min, max)],
|
|
140
129
|
[Infinity, Math.max(min, max)],
|
|
@@ -153,9 +142,7 @@ export class ZoomableDirective {
|
|
|
153
142
|
: this.config.zoom?.limitZoomByData
|
|
154
143
|
? 1
|
|
155
144
|
: 0;
|
|
156
|
-
const minZoom = this.config.zoom?.min
|
|
157
|
-
? (extremes[1] - extremes[0]) / this.config.zoom?.min
|
|
158
|
-
: Infinity;
|
|
145
|
+
const minZoom = this.config.zoom?.min ? (extremes[1] - extremes[0]) / this.config.zoom?.min : Infinity;
|
|
159
146
|
this.zoom.scaleExtent([maxZoom, minZoom]);
|
|
160
147
|
}
|
|
161
148
|
if (this.config?.zoom?.zoomBehavior === ZoomBehaviorType.wheel) {
|
|
@@ -169,22 +156,17 @@ export class ZoomableDirective {
|
|
|
169
156
|
this.zoom.on('start zoom end', this.zoomed);
|
|
170
157
|
this._element?.call(this.zoom);
|
|
171
158
|
this.zoom
|
|
172
|
-
.filter(event => {
|
|
173
|
-
return (
|
|
174
|
-
Boolean(window.TouchEvent && event.type !== 'wheel'));
|
|
159
|
+
.filter((event) => {
|
|
160
|
+
return (event.ctrlKey && event.type === 'wheel') || Boolean(window.TouchEvent && event.type !== 'wheel');
|
|
175
161
|
})
|
|
176
|
-
.wheelDelta(event => {
|
|
162
|
+
.wheelDelta((event) => {
|
|
177
163
|
const delta = this.config?.zoom.type === ZoomType.x ? -event.deltaX : -event.deltaY;
|
|
178
164
|
return delta * 0.002;
|
|
179
165
|
});
|
|
180
166
|
const emit = (type, event) => {
|
|
181
167
|
const origin = this.axis.scale.copy().domain(this.axis.originDomain);
|
|
182
168
|
let transform = zoomIdentity;
|
|
183
|
-
const delta = type === 'end'
|
|
184
|
-
? 0
|
|
185
|
-
: this.axis.orientation === AxisOrientation.y
|
|
186
|
-
? event.deltaY
|
|
187
|
-
: event.deltaX;
|
|
169
|
+
const delta = type === 'end' ? 0 : this.axis.orientation === AxisOrientation.y ? event.deltaY : event.deltaX;
|
|
188
170
|
if (this.axis.orientation === AxisOrientation.y) {
|
|
189
171
|
transform = transform.translate(0, this.currentTransform.y - delta / 2);
|
|
190
172
|
}
|
|
@@ -195,9 +177,7 @@ export class ZoomableDirective {
|
|
|
195
177
|
let domain = this.axis.orientation === AxisOrientation.y
|
|
196
178
|
? transform.rescaleY(origin).domain()
|
|
197
179
|
: transform.rescaleX(origin).domain();
|
|
198
|
-
const extent = this.axis.options?.inverted
|
|
199
|
-
? domain
|
|
200
|
-
: [...domain].reverse();
|
|
180
|
+
const extent = this.axis.options?.inverted ? domain : [...domain].reverse();
|
|
201
181
|
if (extent[0] <= this.config.zoom?.minTranslate) {
|
|
202
182
|
return;
|
|
203
183
|
}
|
|
@@ -242,7 +222,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.1", ngImpor
|
|
|
242
222
|
type: Directive,
|
|
243
223
|
args: [{
|
|
244
224
|
selector: '[tetaZoomable]',
|
|
245
|
-
standalone: true
|
|
225
|
+
standalone: true,
|
|
246
226
|
}]
|
|
247
227
|
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.ZoomService }, { type: i2.ChartService }, { type: i0.NgZone }], propDecorators: { config: [{
|
|
248
228
|
type: Input
|
|
@@ -263,4 +243,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.1", ngImpor
|
|
|
263
243
|
type: HostListener,
|
|
264
244
|
args: ['mouseleave']
|
|
265
245
|
}] } });
|
|
266
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiem9vbWFibGUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NoYXJ0L2RpcmVjdGl2ZXMvem9vbWFibGUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFdBQVcsRUFDWCxZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sR0FFUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFdEQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3pDLE9BQU8sS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ3pCLE9BQU8sRUFBNkIsWUFBWSxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQzdELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDakUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzNELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDakMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7OztBQU1yRCxNQUFNLE9BQU8saUJBQWlCO0lBYTVCLFVBQVU7UUFDUixJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDN0MsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxlQUFlLEVBQUUsSUFB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QUMsSUFBSSxDQUFDLElBQUksS0FBSyxRQUFRLENBQUMsQ0FBQyxFQUNwQyxDQUFDO1lBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUM7Z0JBQ3hCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBQy9CLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsUUFBUSxDQUFDO2FBQy9CLENBQUMsQ0FBQztRQUNMLENBQUM7UUFFRCxJQUNFLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxLQUFLLGVBQWUsQ0FBQyxDQUFDO1lBQzNDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxRQUFRLENBQUMsQ0FBQyxFQUNwQyxDQUFDO1lBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUM7Z0JBQ3hCLENBQUMsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7Z0JBQy9CLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO2FBQy9CLENBQUMsQ0FBQztRQUNMLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxDQUFDO1lBQ2pDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ3JELENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxDQUFDO1lBQ25DLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQ25ELENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMs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QUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUU7b0JBQ3pCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7b0JBQ25CLElBQUksR0FBRyxPQUFPLENBQUM7Z0JBQ2pCLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNULENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOzhHQWxTVSxpQkFBaUI7a0dBQWpCLGlCQUFpQjs7MkZBQWpCLGlCQUFpQjtrQkFKN0IsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsZ0JBQWdCO29CQUMxQixVQUFVLEVBQUMsSUFBSTtpQkFDaEI7eUpBRVUsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBRWlDLFFBQVE7c0JBQTlDLFdBQVc7dUJBQUMsZ0JBQWdCO2dCQUNXLFNBQVM7c0JBQWhELFdBQVc7dUJBQUMsaUJBQWlCO2dCQU85QixVQUFVO3NCQURULFlBQVk7dUJBQUMsWUFBWTtnQkFXMUIsVUFBVTtzQkFEVCxZQUFZO3VCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIEhvc3RCaW5kaW5nLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBOZ1pvbmUsXG4gIE9uRGVzdHJveSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBab29tU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2Uvem9vbS5zZXJ2aWNlJztcbmltcG9ydCB7IElDaGFydENvbmZpZyB9IGZyb20gJy4uL21vZGVsL2ktY2hhcnQtY29uZmlnJztcbmltcG9ydCB7IEF4aXMgfSBmcm9tICcuLi9jb3JlL2F4aXMvYXhpcyc7XG5pbXBvcnQgKiBhcyBkMyBmcm9tICdkMyc7XG5pbXBvcnQgeyBEM1pvb21FdmVudCwgWm9vbUJlaGF2aW9yLCB6b29tSWRlbnRpdHkgfSBmcm9tICdkMyc7XG5pbXBvcnQgeyBab29tVHlwZSB9IGZyb20gJy4uL21vZGVsL2VudW0vem9vbS10eXBlJztcbmltcG9ydCB7IEF4aXNPcmllbnRhdGlvbiB9IGZyb20gJy4uL21vZGVsL2VudW0vYXhpcy1vcmllbnRhdGlvbic7XG5pbXBvcnQgeyBab29tTWVzc2FnZSB9IGZyb20gJy4uL21vZGVsL2ktYnJvYWRjYXN0LW1lc3NhZ2UnO1xuaW1wb3J0IHsgdGFrZVdoaWxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDaGFydFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlL2NoYXJ0LnNlcnZpY2UnO1xuaW1wb3J0IHsgWm9vbUJlaGF2aW9yVHlwZSB9IGZyb20gJy4uL21vZGVsL2VudW0vem9vbS1iZWhhdmlvci10eXBlJztcbmltcG9ydCB7IFNjYWxlVHlwZSB9IGZyb20gJy4uL21vZGVsL2VudW0vc2NhbGUtdHlwZSc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1t0ZXRhWm9vbWFibGVdJyxcbiAgc3RhbmRhbG9uZTp0cnVlXG59KVxuZXhwb3J0IGNsYXNzIFpvb21hYmxlRGlyZWN0aXZlIGltcGxlbWVudHMgT25EZXN0cm95LCBBZnRlclZpZXdJbml0IHtcbiAgQElucHV0KCkgY29uZmlnOiBJQ2hhcnRDb25maWc7XG4gIEBJbnB1dCgpIGF4aXM6IEF4aXM7XG4gIEBJbnB1dCgpIHNpemU6IERPTVJlY3Q7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy56b29tYWJsZScpIHByaXZhdGUgem9vbWFibGUgPSBmYWxzZTtcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5jcm9zc2hhaXInKSBwcml2YXRlIGNyb3NzaGFpciA9IGZhbHNlO1xuXG4gIHByaXZhdGUgX2VsZW1lbnQ6IGQzLlNlbGVjdGlvbjxTVkdFbGVtZW50LCBhbnksIGFueSwgYW55PjtcbiAgcHJpdmF0ZSB6b29tOiBab29tQmVoYXZpb3I8YW55LCBhbnk+O1xuICBwcml2YXRlIGFsaXZlID0gdHJ1ZTtcblxuICBASG9zdExpc3RlbmVyKCdtb3VzZWVudGVyJylcbiAgbW91c2VlbnRlcigpIHtcbiAgICB0aGlzLnpvb20/Lm9uKCdzdGFydCB6b29tIGVuZCcsIHRoaXMuem9vbWVkKTtcbiAgICB0aGlzLl9lbGVtZW50Py5jYWxsKHRoaXMuem9vbSkub24oJ2RibGNsaWNrLnpvb20nLCBudWxsKTtcbiAgICAvLyBSdW4gd2hlZWwgZXZlbnQgbGlzdGVuZXJcbiAgICBpZiAodGhpcy5jb25maWc/Lnpvb20/Lnpvb21CZWhhdmlvciA9PT0gWm9vbUJlaGF2aW9yVHlwZS53aGVlbCkge1xuICAgICAgdGhpcy5ydW5XaGVlbFRyYW5zbGF0ZSgpO1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ21vdXNlbGVhdmUnKVxuICBtb3VzZWxlYXZlKCkge1xuICAgIHRoaXMuem9vbT8ub24oJ3N0YXJ0IHpvb20gZW5kJywgbnVsbCk7XG4gICAgdGhpcy5fZWxlbWVudD8ub24oJ3doZWVsJywgbnVsbCk7XG4gIH1cblxuICBwcml2YXRlIGN1cnJlbnRUcmFuc2Zvcm0gPSB6b29tSWRlbnRpdHk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgem9vbVNlcnZpY2U6IFpvb21TZXJ2aWNlLFxuICAgIHByaXZhdGUgY2hhcnRTZXJ2aWNlOiBDaGFydFNlcnZpY2UsXG4gICAgcHJpdmF0ZSB6b25lOiBOZ1pvbmVcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGlmICh0aGlzLmF4aXM/Lm9wdGlvbnM/Lnpvb20gfHwgdGhpcy5jb25maWc/Lnpvb20/LmVuYWJsZSkge1xuICAgICAgdGhpcy56b29tYWJsZSA9XG4gICAgICAgIHRoaXMuY29uZmlnPy56b29tPy56b29tQmVoYXZpb3IgPT09IFpvb21CZWhhdmlvclR5cGUubW92ZSAmJlxuICAgICAgICAhdGhpcy5jb25maWc/LnRvb2x0aXA/LnNob3dDcm9zc2hhaXI7XG4gICAgICB0aGlzLmNyb3NzaGFpciA9IHRoaXMuY29uZmlnPy50b29sdGlwPy5zaG93Q3Jvc3NoYWlyO1xuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICB0aGlzLmluaXRab29tTGlzdGVuZXJzKCk7XG4gICAgdGhpcy5pbml0Wm9vbVN5bmMoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuem9vbT8ub24oJ3N0YXJ0IHpvb20gZW5kJywgbnVsbCk7XG4gICAgdGhpcy5fZWxlbWVudD8ub24oJ3doZWVsJywgbnVsbCk7XG4gICAgdGhpcy5hbGl2ZSA9IGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0Wm9vbVN5bmMoKSB7XG4gICAgdGhpcy56b29tU2VydmljZS56b29tZWRcbiAgICAgIC5waXBlKHRha2VXaGlsZSgoKSA9PiB0aGlzLmFsaXZlKSlcbiAgICAgIC5zdWJzY3JpYmUoKHpvb21lZDogWm9vbU1lc3NhZ2UpID0+IHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHRoaXMuX2VsZW1lbnQgJiZcbiAgICAgICAgICB0aGlzLmVsZW1lbnRSZWYgIT09IHpvb21lZD8uZWxlbWVudCAmJlxuICAgICAgICAgIHpvb21lZD8uYXhpcz8uaW5kZXggPT09IHRoaXMuYXhpcy5pbmRleCAmJlxuICAgICAgICAgIHpvb21lZD8uYXhpcz8ub3JpZW50YXRpb24gPT09IHRoaXMuYXhpcy5vcmllbnRhdGlvblxuICAgICAgICApIHtcbiAgICAgICAgICBjb25zdCBzY2FsZSA9IHRoaXMuYXhpcy5zY2FsZS5jb3B5KCkuZG9tYWluKHRoaXMuYXhpcy5vcmlnaW5Eb21haW4pO1xuICAgICAgICAgIGxldCB0cmFuc2Zvcm07XG4gICAgICAgICAgaWYgKHpvb21lZC5kb21haW4gPT09IG51bGwpIHtcbiAgICAgICAgICAgIHRyYW5zZm9ybSA9IHpvb21JZGVudGl0eTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdHJhbnNmb3JtID0gdGhpcy56b29tU2VydmljZS5nZXREM1RyYW5zZm9ybShcbiAgICAgICAgICAgICAgem9vbWVkLmRvbWFpbixcbiAgICAgICAgICAgICAgdGhpcy5heGlzLm9yaWdpbkRvbWFpbixcbiAgICAgICAgICAgICAgc2NhbGUsXG4gICAgICAgICAgICAgIHRoaXMuYXhpcy5vcmllbnRhdGlvbixcbiAgICAgICAgICAgICAgdGhpcy5heGlzLm9wdGlvbnMuaW52ZXJ0ZWRcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuX2VsZW1lbnQuY2FsbCh0aGlzLnpvb20udHJhbnNmb3JtLCB0cmFuc2Zvcm0pO1xuICAgICAgICAgIHRoaXMuY3VycmVudFRyYW5zZm9ybSA9IHRyYW5zZm9ybTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGluaXRab29tTGlzdGVuZXJzKCkge1xuICAgIGNvbnN0IGVuYWJsZSA9XG4gICAgICAodGhpcy5heGlzPy5vcHRpb25zPy56b29tICYmIHRoaXMuYXhpcz8ub3B0aW9ucy52aXNpYmxlICE9PSBmYWxzZSkgfHxcbiAgICAgIHRoaXMuY29uZmlnPy56b29tPy5lbmFibGU7XG5cbiAgICBpZiAoIWVuYWJsZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2VsZW1lbnQgPSBkMy5zZWxlY3QodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xuICAgIHRoaXMuem9vbSA9IGQzLnpvb20oKS5leHRlbnQoW1xuICAgICAgWzAsIDBdLFxuICAgICAgW3RoaXMuc2l6ZS53aWR0aCwgdGhpcy5zaXplLmhlaWdodF0sXG4gICAgXSk7XG5cbiAgICBjb25zdCBtaW4gPVxuICAgICAgdGhpcy5jb25maWc/Lnpvb20/Lm1pblRyYW5zbGF0ZSAhPSBudWxsXG4gICAgICAgID8gdGhpcy5heGlzLnNjYWxlKHRoaXMuY29uZmlnPy56b29tPy5taW5UcmFuc2xhdGUpXG4gICAgICAgIDogLUluZmluaXR5O1xuICAgIGNvbnN0IG1heCA9XG4gICAgICB0aGlzLmNvbmZpZz8uem9vbT8ubWF4VHJhbnNsYXRlICE9IG51bGxcbiAgICAgICAgPyB0aGlzLmF4aXMuc2NhbGUodGhpcy5jb25maWc/Lnpvb20/Lm1heFRyYW5zbGF0ZSlcbiAgICAgICAgOiBJbmZpbml0eTtcbiAgICBpZiAoXG4gICAgICB0aGlzLmF4aXMub3JpZW50YXRpb24gPT09IEF4aXNPcmllbnRhdGlvbi54ICYmXG4gICAgICB0aGlzLmNvbmZpZy56b29tLnR5cGUgPT09IFpvb21UeXBlLnhcbiAgICApIHtcbiAgICAgIHRoaXMuem9vbS50cmFuc2xhdGVFeHRlbnQoW1xuICAgICAgICBbTWF0aC5taW4obWluLCBtYXgpLCAtSW5maW5pdHldLFxuICAgICAgICBbTWF0aC5tYXgobWluLCBtYXgpLCBJbmZpbml0eV0sXG4gICAgICBdKTtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICB0aGlzLmF4aXMub3JpZW50YXRpb24gPT09IEF4aXNPcmllbnRhdGlvbi55ICYmXG4gICAgICB0aGlzLmNvbmZpZy56b29tLnR5cGUgPT09IFpvb21UeXBlLnlcbiAgICApIHtcbiAgICAgIHRoaXMuem9vbS50cmFuc2xhdGVFeHRlbnQoW1xuICAgICAgICBbLUluZmluaXR5LCBNYXRoLm1pbihtaW4sIG1heCldLFxuICAgICAgICBbSW5maW5pdHksIE1hdGgubWF4KG1pbiwgbWF4KV0sXG4gICAgICBdKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jb25maWcuem9vbT8ud2hlZWxEZWx0YSkge1xuICAgICAgdGhpcy56b29tLndoZWVsRGVsdGEodGhpcy5jb25maWcuem9vbT8ud2hlZWxEZWx0YSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY29uZmlnPy56b29tPy53aGVlbEZpbHRlcikge1xuICAgICAgdGhpcy56b29tLmZpbHRlcih0aGlzLmNvbmZpZz8uem9vbT8ud2hlZWxGaWx0ZXIpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmF4aXMub3B0aW9ucy5zY2FsZVR5cGUudHlwZSAhPT0gU2NhbGVUeXBlLmJhbmQpIHtcbiAgICAgIGNvbnN0IGV4dHJlbWVzID0gdGhpcy5heGlzLmV4dHJlbWVzIGFzIG51bWJlcltdO1xuICAgICAgY29uc3QgbWF4Wm9vbSA9IHRoaXMuY29uZmlnLnpvb20/Lm1heFxuICAgICAgICA/IChleHRyZW1lc1sxXSAtIGV4dHJlbWVzWzBdKSAvIHRoaXMuY29uZmlnLnpvb20/Lm1heFxuICAgICAgICA6IHRoaXMuY29uZmlnLnpvb20/LmxpbWl0Wm9vbUJ5RGF0YVxuICAgICAgICA/IDFcbiAgICAgICAgOiAwO1xuXG4gICAgICBjb25zdCBtaW5ab29tID0gdGhpcy5jb25maWcuem9vbT8ubWluXG4gICAgICAgID8gKGV4dHJlbWVzWzFdIC0gZXh0cmVtZXNbMF0pIC8gdGhpcy5jb25maWcuem9vbT8ubWluXG4gICAgICAgIDogSW5maW5pdHk7XG5cbiAgICAgIHRoaXMuem9vbS5zY2FsZUV4dGVudChbbWF4Wm9vbSwgbWluWm9vbV0pO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmNvbmZpZz8uem9vbT8uem9vbUJlaGF2aW9yID09PSBab29tQmVoYXZpb3JUeXBlLndoZWVsKSB7XG4gICAgICB0aGlzLnJ1bldoZWVsVHJhbnNsYXRlKCk7XG4gICAgfVxuICB9XG5cbiAgem9vbWVkID0gKGV2ZW50OiBEM1pvb21FdmVudDxhbnksIGFueT4pID0+IHtcbiAgICBpZiAoXG4gICAgICBldmVudC5zb3VyY2VFdmVudCAmJlxuICAgICAgKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50ID09PSBldmVudC5zb3VyY2VFdmVudC50YXJnZXQgfHxcbiAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQuc291cmNlRXZlbnQudGFyZ2V0KSlcbiAgICApIHtcbiAgICAgIGlmIChPYmplY3Qua2V5cyhldmVudC5zb3VyY2VFdmVudCkubGVuZ3RoICE9PSAwKSB7XG4gICAgICAgIGNvbnN0IG9yaWdpbiA9IHRoaXMuYXhpcy5zY2FsZS5jb3B5KCkuZG9tYWluKHRoaXMuYXhpcy5vcmlnaW5Eb21haW4pO1xuICAgICAgICBpZiAodGhpcy5heGlzLm9wdGlvbnMuc2NhbGVUeXBlLnR5cGUgPT09IFNjYWxlVHlwZS5iYW5kKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZG9tYWluID1cbiAgICAgICAgICB0aGlzLmF4aXMub3JpZW50YXRpb24gPT09IEF4aXNPcmllbnRhdGlvbi55XG4gICAgICAgICAgICA/IGV2ZW50LnRyYW5zZm9ybS5yZXNjYWxlWShvcmlnaW4pLmRvbWFpbigpXG4gICAgICAgICAgICA6IGV2ZW50LnRyYW5zZm9ybS5yZXNjYWxlWChvcmlnaW4pLmRvbWFpbigpO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgZG9tYWluWzBdID09PSBudWxsIHx8XG4gICAgICAgICAgZG9tYWluWzBdID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICBkb21haW5bMV0gPT09IG51bGwgfHxcbiAgICAgICAgICBkb21haW5bMV0gPT09IHVuZGVmaW5lZCB8fFxuICAgICAgICAgIE1hdGguYWJzKGRvbWFpblswXSAtIGRvbWFpblsxXSkgPCAwLjAwMDAwMVxuICAgICAgICApIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbWVzc2FnZSA9IG5ldyBab29tTWVzc2FnZSh7XG4gICAgICAgICAgZXZlbnRUeXBlOiBldmVudC50eXBlLFxuICAgICAgICAgIGF4aXM6IHtcbiAgICAgICAgICAgIGluZGV4OiB0aGlzLmF4aXMuaW5kZXgsXG4gICAgICAgICAgICBvcmllbnRhdGlvbjogdGhpcy5heGlzLm9yaWVudGF0aW9uLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgZWxlbWVudDogdGhpcy5lbGVtZW50UmVmLFxuICAgICAgICAgIGRvbWFpbixcbiAgICAgICAgICBjaGFydElkOiB0aGlzLmNvbmZpZy5pZCxcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuem9vbVNlcnZpY2UuZmlyZVpvb20obWVzc2FnZSk7XG4gICAgICAgIHRoaXMuem9vbVNlcnZpY2UuYnJvYWRjYXN0Wm9vbShtZXNzYWdlKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuY3VycmVudFRyYW5zZm9ybSA9IGV2ZW50LnRyYW5zZm9ybTtcbiAgICB9XG4gIH07XG5cbiAgcHJpdmF0ZSBydW5XaGVlbFRyYW5zbGF0ZSgpIHtcbiAgICBsZXQgdHlwZTogJ3N0YXJ0JyB8ICd6b29tJyB8ICdlbmQnID0gJ3N0YXJ0JztcbiAgICBsZXQgd2hlZWxpbmc7XG5cbiAgICAvLyBGb3IgdG91Y2ggZXZlbnRzXG4gICAgdGhpcy56b29tLm9uKCdzdGFydCB6b29tIGVuZCcsIHRoaXMuem9vbWVkKTtcbiAgICB0aGlzLl9lbGVtZW50Py5jYWxsKHRoaXMuem9vbSk7XG5cbiAgICB0aGlzLnpvb21cbiAgICAgIC5maWx0ZXIoZXZlbnQgPT4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIChldmVudC5jdHJsS2V5ICYmIGV2ZW50LnR5cGUgPT09ICd3aGVlbCcpIHx8XG4gICAgICAgICAgQm9vbGVhbih3aW5kb3cuVG91Y2hFdmVudCAmJiBldmVudC50eXBlICE9PSAnd2hlZWwnKVxuICAgICAgICApO1xuICAgICAgfSlcbiAgICAgIC53aGVlbERlbHRhKGV2ZW50ID0+IHtcbiAgICAgICAgY29uc3QgZGVsdGEgPVxuICAgICAgICAgIHRoaXMuY29uZmlnPy56b29tLnR5cGUgPT09IFpvb21UeXBlLnggPyAtZXZlbnQuZGVsdGFYIDogLWV2ZW50LmRlbHRhWTtcbiAgICAgICAgcmV0dXJuIGRlbHRhICogMC4wMDI7XG4gICAgICB9KTtcblxuICAgIGNvbnN0IGVtaXQgPSAodHlwZTogc3RyaW5nLCBldmVudDogV2hlZWxFdmVudCkgPT4ge1xuICAgICAgY29uc3Qgb3JpZ2luID0gdGhpcy5heGlzLnNjYWxlLmNvcHkoKS5kb21haW4odGhpcy5heGlzLm9yaWdpbkRvbWFpbik7XG4gICAgICBsZXQgdHJhbnNmb3JtID0gem9vbUlkZW50aXR5O1xuICAgICAgY29uc3QgZGVsdGEgPVxuICAgICAgICB0eXBlID09PSAnZW5kJ1xuICAgICAgICAgID8gMFxuICAgICAgICAgIDogdGhpcy5heGlzLm9yaWVudGF0aW9uID09PSBBeGlzT3JpZW50YXRpb24ueVxuICAgICAgICAgID8gZXZlbnQuZGVsdGFZXG4gICAgICAgICAgOiBldmVudC5kZWx0YVg7XG5cbiAgICAgIGlmICh0aGlzLmF4aXMub3JpZW50YXRpb24gPT09IEF4aXNPcmllbnRhdGlvbi55KSB7XG4gICAgICAgIHRyYW5zZm9ybSA9IHRyYW5zZm9ybS50cmFuc2xhdGUoMCwgdGhpcy5jdXJyZW50VHJhbnNmb3JtLnkgLSBkZWx0YSAvIDIpO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5heGlzLm9yaWVudGF0aW9uID09PSBBeGlzT3JpZW50YXRpb24ueCkge1xuICAgICAgICB0cmFuc2Zvcm0gPSB0cmFuc2Zvcm0udHJhbnNsYXRlKHRoaXMuY3VycmVudFRyYW5zZm9ybS54IC0gZGVsdGEgLyAyLCAwKTtcbiAgICAgIH1cblxuICAgICAgdHJhbnNmb3JtID0gdHJhbnNmb3JtLnNjYWxlKHRoaXMuY3VycmVudFRyYW5zZm9ybS5rKTtcblxuICAgICAgbGV0IGRvbWFpbiA9XG4gICAgICAgIHRoaXMuYXhpcy5vcmllbnRhdGlvbiA9PT0gQXhpc09yaWVudGF0aW9uLnlcbiAgICAgICAgICA/IHRyYW5zZm9ybS5yZXNjYWxlWShvcmlnaW4pLmRvbWFpbigpXG4gICAgICAgICAgOiB0cmFuc2Zvcm0ucmVzY2FsZVgob3JpZ2luKS5kb21haW4oKTtcblxuICAgICAgY29uc3QgZXh0ZW50ID0gdGhpcy5heGlzLm9wdGlvbnM/LmludmVydGVkXG4gICAgICAgID8gZG9tYWluXG4gICAgICAgIDogWy4uLmRvbWFpbl0ucmV2ZXJzZSgpO1xuXG4gICAgICBpZiAoZXh0ZW50WzBdIDw9IHRoaXMuY29uZmlnLnpvb20/Lm1pblRyYW5zbGF0ZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmIChleHRlbnRbMV0gPj0gdGhpcy5jb25maWcuem9vbT8ubWF4VHJhbnNsYXRlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgbWVzc2FnZSA9IG5ldyBab29tTWVzc2FnZSh7XG4gICAgICAgIGV2ZW50VHlwZTogdHlwZSxcbiAgICAgICAgZWxlbWVudDogdGhpcy5lbGVtZW50UmVmLFxuICAgICAgICBheGlzOiB7XG4gICAgICAgICAgaW5kZXg6IHRoaXMuYXhpcy5pbmRleCxcbiAgICAgICAgICBvcmllbnRhdGlvbjogdGhpcy5heGlzLm9yaWVudGF0aW9uLFxuICAgICAgICB9LFxuICAgICAgICBkb21haW4sXG4gICAgICAgIGNoYXJ0SWQ6IHRoaXMuY29uZmlnLmlkLFxuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuX2VsZW1lbnQ/LmNhbGwodGhpcy56b29tLnRyYW5zZm9ybSwgdHJhbnNmb3JtKTtcbiAgICAgIHRoaXMuem9vbVNlcnZpY2UuZmlyZVpvb20obWVzc2FnZSk7XG4gICAgICB0aGlzLnpvb21TZXJ2aWNlLmJyb2FkY2FzdFpvb20obWVzc2FnZSk7XG4gICAgICB0aGlzLmN1cnJlbnRUcmFuc2Zvcm0gPSB0cmFuc2Zvcm07XG4gICAgfTtcblxuICAgIHRoaXMuX2VsZW1lbnQub24oJ3doZWVsJywgKGV2ZW50OiBXaGVlbEV2ZW50KSA9PiB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICBpZiAoZXZlbnQuY3RybEtleSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICBjbGVhclRpbWVvdXQod2hlZWxpbmcpO1xuICAgICAgICBlbWl0KHR5cGUsIGV2ZW50KTtcbiAgICAgICAgdHlwZSA9ICd6b29tJztcbiAgICAgICAgd2hlZWxpbmcgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICBlbWl0KCdlbmQnLCBldmVudCk7XG4gICAgICAgICAgdHlwZSA9ICdzdGFydCc7XG4gICAgICAgIH0sIDUwKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG59XG4iXX0=
|
|
246
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiem9vbWFibGUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NoYXJ0L2RpcmVjdGl2ZXMvem9vbWFibGUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFdBQVcsRUFDWCxZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sR0FFUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFdEQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3pDLE9BQU8sS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ3pCLE9BQU8sRUFBNkIsWUFBWSxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQzdELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDakUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzNELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDakMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7OztBQU1yRCxNQUFNLE9BQU8saUJBQWlCO0lBYTVCLFVBQVU7UUFDUixJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDN0MsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDekQsMkJBQTJCO1FBQzNCLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsWUFBWSxLQUFLLGdCQUFnQixDQUFDLEtBQUssRUFBRSxDQUFDO1lBQy9ELElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQzNCLENBQUM7SUFDSCxDQUFDO0lBR0QsVUFBVTtRQUNSLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBSUQsWUFDVSxVQUFzQixFQUN0QixXQUF3QixFQUN4QixZQUEwQixFQUMxQixJQUFZO1FBSFosZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixTQUFJLEdBQUosSUFBSSxDQUFRO1FBN0JpQixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2hCLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFJbEQsVUFBSyxHQUFHLElBQUksQ0FBQztRQWtCYixxQkFBZ0IsR0FBRyxZQUFZLENBQUM7UUE2R3hDLFdBQU0sR0FBRyxDQUFDLEtBQTRCLEVBQUUsRUFBRTtZQUN4QyxJQUNFLEtBQUssQ0FBQyxXQUFXO2dCQUNqQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxLQUFLLEtBQUssQ0FBQyxXQUFXLENBQUMsTUFBTTtvQkFDekQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsRUFDbkUsQ0FBQztnQkFDRCxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztvQkFDaEQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7b0JBQ3JFLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksS0FBSyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7d0JBQ3hELE9BQU87b0JBQ1QsQ0FBQztvQkFFRCxNQUFNLE1BQU0sR0FDVixJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsS0FBSyxlQUFlLENBQUMsQ0FBQzt3QkFDekMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRTt3QkFDM0MsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO29CQUNoRCxJQUNFLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJO3dCQUNsQixNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssU0FBUzt3QkFDdkIsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUk7d0JBQ2xCLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxTQUFTO3dCQUN2QixJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLEVBQzFDLENBQUM7d0JBQ0QsT0FBTztvQkFDVCxDQUFDO29CQUNELE1BQU0sT0FBTyxHQUFHLElBQUksV0FBVyxDQUFDO3dCQUM5QixTQUFTLEVBQUUsS0FBSyxDQUFDLElBQUk7d0JBQ3JCLElBQUksRUFBRTs0QkFDSixLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLOzRCQUN0QixXQUFXLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXO3lCQUNuQzt3QkFDRCxPQUFPLEVBQUUsSUFBSSxDQUFDLFVBQVU7d0JBQ3hCLE1BQU07d0JBQ04sT0FBTyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRTtxQkFDeEIsQ0FBQyxDQUFDO29CQUNILElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO29CQUNuQyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDMUMsQ0FBQztnQkFDRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQztZQUMxQyxDQUFDO1FBQ0gsQ0FBQyxDQUFDO0lBOUlDLENBQUM7SUFFSixRQUFRO1FBQ04sSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUM7WUFDMUQsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxZQUFZLEtBQUssZ0JBQWdCLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsYUFBYSxDQUFDO1lBQ2xILElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsYUFBYSxDQUFDO1FBQ3ZELENBQUM7SUFDSCxDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNqQyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUNyQixDQUFDO0lBRU8sWUFBWTtRQUNsQixJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQW1CLEVBQUUsRUFBRTtZQUMxRixJQUNFLElBQUksQ0FBQyxRQUFRO2dCQUNiLElBQUksQ0FBQyxVQUFVLEtBQUssTUFBTSxFQUFFLE9BQU87Z0JBQ25DLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSztnQkFDdkMsTUFBTSxFQUFFLElBQUksRUFBRSxXQUFXLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQ25ELENBQUM7Z0JBQ0QsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7Z0JBQ3BFLElBQUksU0FBUyxDQUFDO2dCQUNkLElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxJQUFJLEVBQUUsQ0FBQztvQkFDM0IsU0FBUyxHQUFHLFlBQVksQ0FBQztnQkFDM0IsQ0FBQztxQkFBTSxDQUFDO29CQUNOLFNBQVMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FDekMsTUFBTSxDQUFDLE1BQU0sRUFDYixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFDdEIsS0FBSyxFQUNMLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQzNCLENBQUM7Z0JBQ0osQ0FBQztnQkFDRCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQztnQkFDbkQsSUFBSSxDQUFDLGdCQUFnQixHQUFHLFNBQVMsQ0FBQztZQUNwQyxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8saUJBQWlCO1FBQ3ZCLE1BQU0sTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLE9BQU8sS0FBSyxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLENBQUM7UUFFL0csSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ1osT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN6RCxJQUFJLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxNQUFNLENBQUM7WUFDM0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ04sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztTQUNwQyxDQUFDLENBQUM7UUFFSCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxZQUFZLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7UUFDbkgsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsWUFBWSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztRQUNsSCxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxLQUFLLGVBQWUsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUN4RixJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQztnQkFDeEIsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFDL0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRSxRQUFRLENBQUM7YUFDL0IsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEtBQUssZUFBZSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ3hGLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDO2dCQUN4QixDQUFDLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO2dCQUMvQixDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQzthQUMvQixDQUFDLENBQUM7UUFDTCxDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUUsQ0FBQztZQUNqQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQztRQUNyRCxDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsQ0FBQztZQUNuQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQztRQUNuRCxDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxLQUFLLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUN4RCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQW9CLENBQUM7WUFDaEQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsR0FBRztnQkFDbkMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLEdBQUc7Z0JBQ3JELENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxlQUFlO29CQUNuQyxDQUFDLENBQUMsQ0FBQztvQkFDSCxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRU4sTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztZQUV2RyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQzVDLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLFlBQVksS0FBSyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUMvRCxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUMzQixDQUFDO0lBQ0gsQ0FBQztJQTRDTyxpQkFBaUI7UUFDdkIsSUFBSSxJQUFJLEdBQTZCLE9BQU8sQ0FBQztRQUM3QyxJQUFJLFFBQVEsQ0FBQztRQUViLG1CQUFtQjtRQUNuQixJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDNUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRS9CLElBQUksQ0FBQyxJQUFJO2FBQ04sTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDaEIsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxPQUFPLENBQUMsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLFVBQVUsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLE9BQU8sQ0FBQyxDQUFDO1FBQzNHLENBQUMsQ0FBQzthQUNELFVBQVUsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ3BCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLElBQUksS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUNwRixPQUFPLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDdkIsQ0FBQyxDQUFDLENBQUM7UUFFTCxNQUFNLElBQUksR0FBRyxDQUFDLElBQVksRUFBRSxLQUFpQixFQUFFLEVBQUU7WUFDL0MsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDckUsSUFBSSxTQUFTLEdBQUcsWUFBWSxDQUFDO1lBQzdCLE1BQU0sS0FBSyxHQUFHLElBQUksS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEtBQUssZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUU3RyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxLQUFLLGVBQWUsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDaEQsU0FBUyxHQUFHLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQzFFLENBQUM7WUFFRCxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxLQUFLLGVBQWUsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDaEQsU0FBUyxHQUFHLFNBQVMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsR0FBRyxLQUFLLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQzFFLENBQUM7WUFFRCxTQUFTLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFckQsSUFBSSxNQUFNLEdBQ1IsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEtBQUssZUFBZSxDQUFDLENBQUM7Z0JBQ3pDLENBQUMsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRTtnQkFDckMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7WUFFMUMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUU1RSxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxZQUFZLEVBQUUsQ0FBQztnQkFDaEQsT0FBTztZQUNULENBQUM7WUFFRCxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxZQUFZLEVBQUUsQ0FBQztnQkFDaEQsT0FBTztZQUNULENBQUM7WUFFRCxNQUFNLE9BQU8sR0FBRyxJQUFJLFdBQVcsQ0FBQztnQkFDOUIsU0FBUyxFQUFFLElBQUk7Z0JBQ2YsT0FBTyxFQUFFLElBQUksQ0FBQyxVQUFVO2dCQUN4QixJQUFJLEVBQUU7b0JBQ0osS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSztvQkFDdEIsV0FBVyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVztpQkFDbkM7Z0JBQ0QsTUFBTTtnQkFDTixPQUFPLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFO2FBQ3hCLENBQUMsQ0FBQztZQUVILElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1lBQ3BELElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ25DLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3hDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxTQUFTLENBQUM7UUFDcEMsQ0FBQyxDQUFDO1FBRUYsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsS0FBaUIsRUFBRSxFQUFFO1lBQzlDLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUV2QixJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDbEIsT0FBTztZQUNULENBQUM7WUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRTtnQkFDL0IsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUN2QixJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUNsQixJQUFJLEdBQUcsTUFBTSxDQUFDO2dCQUNkLFFBQVEsR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFO29CQUN6QixJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO29CQUNuQixJQUFJLEdBQUcsT0FBTyxDQUFDO2dCQUNqQixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDVCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs4R0FuUVUsaUJBQWlCO2tHQUFqQixpQkFBaUI7OzJGQUFqQixpQkFBaUI7a0JBSjdCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGdCQUFnQjtvQkFDMUIsVUFBVSxFQUFFLElBQUk7aUJBQ2pCO3lKQUVVLE1BQU07c0JBQWQsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUVpQyxRQUFRO3NCQUE5QyxXQUFXO3VCQUFDLGdCQUFnQjtnQkFDVyxTQUFTO3NCQUFoRCxXQUFXO3VCQUFDLGlCQUFpQjtnQkFPOUIsVUFBVTtzQkFEVCxZQUFZO3VCQUFDLFlBQVk7Z0JBVzFCLFVBQVU7c0JBRFQsWUFBWTt1QkFBQyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBIb3N0QmluZGluZyxcbiAgSG9zdExpc3RlbmVyLFxuICBJbnB1dCxcbiAgTmdab25lLFxuICBPbkRlc3Ryb3ksXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgWm9vbVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlL3pvb20uc2VydmljZSc7XG5pbXBvcnQgeyBJQ2hhcnRDb25maWcgfSBmcm9tICcuLi9tb2RlbC9pLWNoYXJ0LWNvbmZpZyc7XG5pbXBvcnQgeyBBeGlzIH0gZnJvbSAnLi4vY29yZS9heGlzL2F4aXMnO1xuaW1wb3J0ICogYXMgZDMgZnJvbSAnZDMnO1xuaW1wb3J0IHsgRDNab29tRXZlbnQsIFpvb21CZWhhdmlvciwgem9vbUlkZW50aXR5IH0gZnJvbSAnZDMnO1xuaW1wb3J0IHsgWm9vbVR5cGUgfSBmcm9tICcuLi9tb2RlbC9lbnVtL3pvb20tdHlwZSc7XG5pbXBvcnQgeyBBeGlzT3JpZW50YXRpb24gfSBmcm9tICcuLi9tb2RlbC9lbnVtL2F4aXMtb3JpZW50YXRpb24nO1xuaW1wb3J0IHsgWm9vbU1lc3NhZ2UgfSBmcm9tICcuLi9tb2RlbC9pLWJyb2FkY2FzdC1tZXNzYWdlJztcbmltcG9ydCB7IHRha2VXaGlsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ2hhcnRTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZS9jaGFydC5zZXJ2aWNlJztcbmltcG9ydCB7IFpvb21CZWhhdmlvclR5cGUgfSBmcm9tICcuLi9tb2RlbC9lbnVtL3pvb20tYmVoYXZpb3ItdHlwZSc7XG5pbXBvcnQgeyBTY2FsZVR5cGUgfSBmcm9tICcuLi9tb2RlbC9lbnVtL3NjYWxlLXR5cGUnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbdGV0YVpvb21hYmxlXScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIFpvb21hYmxlRGlyZWN0aXZlIGltcGxlbWVudHMgT25EZXN0cm95LCBBZnRlclZpZXdJbml0IHtcbiAgQElucHV0KCkgY29uZmlnOiBJQ2hhcnRDb25maWc7XG4gIEBJbnB1dCgpIGF4aXM6IEF4aXM7XG4gIEBJbnB1dCgpIHNpemU6IERPTVJlY3Q7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy56b29tYWJsZScpIHByaXZhdGUgem9vbWFibGUgPSBmYWxzZTtcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5jcm9zc2hhaXInKSBwcml2YXRlIGNyb3NzaGFpciA9IGZhbHNlO1xuXG4gIHByaXZhdGUgX2VsZW1lbnQ6IGQzLlNlbGVjdGlvbjxTVkdFbGVtZW50LCBhbnksIGFueSwgYW55PjtcbiAgcHJpdmF0ZSB6b29tOiBab29tQmVoYXZpb3I8YW55LCBhbnk+O1xuICBwcml2YXRlIGFsaXZlID0gdHJ1ZTtcblxuICBASG9zdExpc3RlbmVyKCdtb3VzZWVudGVyJylcbiAgbW91c2VlbnRlcigpIHtcbiAgICB0aGlzLnpvb20/Lm9uKCdzdGFydCB6b29tIGVuZCcsIHRoaXMuem9vbWVkKTtcbiAgICB0aGlzLl9lbGVtZW50Py5jYWxsKHRoaXMuem9vbSkub24oJ2RibGNsaWNrLnpvb20nLCBudWxsKTtcbiAgICAvLyBSdW4gd2hlZWwgZXZlbnQgbGlzdGVuZXJcbiAgICBpZiAodGhpcy5jb25maWc/Lnpvb20/Lnpvb21CZWhhdmlvciA9PT0gWm9vbUJlaGF2aW9yVHlwZS53aGVlbCkge1xuICAgICAgdGhpcy5ydW5XaGVlbFRyYW5zbGF0ZSgpO1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ21vdXNlbGVhdmUnKVxuICBtb3VzZWxlYXZlKCkge1xuICAgIHRoaXMuem9vbT8ub24oJ3N0YXJ0IHpvb20gZW5kJywgbnVsbCk7XG4gICAgdGhpcy5fZWxlbWVudD8ub24oJ3doZWVsJywgbnVsbCk7XG4gIH1cblxuICBwcml2YXRlIGN1cnJlbnRUcmFuc2Zvcm0gPSB6b29tSWRlbnRpdHk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgem9vbVNlcnZpY2U6IFpvb21TZXJ2aWNlLFxuICAgIHByaXZhdGUgY2hhcnRTZXJ2aWNlOiBDaGFydFNlcnZpY2UsXG4gICAgcHJpdmF0ZSB6b25lOiBOZ1pvbmVcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGlmICh0aGlzLmF4aXM/Lm9wdGlvbnM/Lnpvb20gfHwgdGhpcy5jb25maWc/Lnpvb20/LmVuYWJsZSkge1xuICAgICAgdGhpcy56b29tYWJsZSA9IHRoaXMuY29uZmlnPy56b29tPy56b29tQmVoYXZpb3IgPT09IFpvb21CZWhhdmlvclR5cGUubW92ZSAmJiAhdGhpcy5jb25maWc/LnRvb2x0aXA/LnNob3dDcm9zc2hhaXI7XG4gICAgICB0aGlzLmNyb3NzaGFpciA9IHRoaXMuY29uZmlnPy50b29sdGlwPy5zaG93Q3Jvc3NoYWlyO1xuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICB0aGlzLmluaXRab29tTGlzdGVuZXJzKCk7XG4gICAgdGhpcy5pbml0Wm9vbVN5bmMoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuem9vbT8ub24oJ3N0YXJ0IHpvb20gZW5kJywgbnVsbCk7XG4gICAgdGhpcy5fZWxlbWVudD8ub24oJ3doZWVsJywgbnVsbCk7XG4gICAgdGhpcy5hbGl2ZSA9IGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0Wm9vbVN5bmMoKSB7XG4gICAgdGhpcy56b29tU2VydmljZS56b29tZWQucGlwZSh0YWtlV2hpbGUoKCkgPT4gdGhpcy5hbGl2ZSkpLnN1YnNjcmliZSgoem9vbWVkOiBab29tTWVzc2FnZSkgPT4ge1xuICAgICAgaWYgKFxuICAgICAgICB0aGlzLl9lbGVtZW50ICYmXG4gICAgICAgIHRoaXMuZWxlbWVudFJlZiAhPT0gem9vbWVkPy5lbGVtZW50ICYmXG4gICAgICAgIHpvb21lZD8uYXhpcz8uaW5kZXggPT09IHRoaXMuYXhpcy5pbmRleCAmJlxuICAgICAgICB6b29tZWQ/LmF4aXM/Lm9yaWVudGF0aW9uID09PSB0aGlzLmF4aXMub3JpZW50YXRpb25cbiAgICAgICkge1xuICAgICAgICBjb25zdCBzY2FsZSA9IHRoaXMuYXhpcy5zY2FsZS5jb3B5KCkuZG9tYWluKHRoaXMuYXhpcy5vcmlnaW5Eb21haW4pO1xuICAgICAgICBsZXQgdHJhbnNmb3JtO1xuICAgICAgICBpZiAoem9vbWVkLmRvbWFpbiA9PT0gbnVsbCkge1xuICAgICAgICAgIHRyYW5zZm9ybSA9IHpvb21JZGVudGl0eTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0cmFuc2Zvcm0gPSB0aGlzLnpvb21TZXJ2aWNlLmdldEQzVHJhbnNmb3JtKFxuICAgICAgICAgICAgem9vbWVkLmRvbWFpbixcbiAgICAgICAgICAgIHRoaXMuYXhpcy5vcmlnaW5Eb21haW4sXG4gICAgICAgICAgICBzY2FsZSxcbiAgICAgICAgICAgIHRoaXMuYXhpcy5vcmllbnRhdGlvbixcbiAgICAgICAgICAgIHRoaXMuYXhpcy5vcHRpb25zLmludmVydGVkXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9lbGVtZW50LmNhbGwodGhpcy56b29tLnRyYW5zZm9ybSwgdHJhbnNmb3JtKTtcbiAgICAgICAgdGhpcy5jdXJyZW50VHJhbnNmb3JtID0gdHJhbnNmb3JtO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0Wm9vbUxpc3RlbmVycygpIHtcbiAgICBjb25zdCBlbmFibGUgPSAodGhpcy5heGlzPy5vcHRpb25zPy56b29tICYmIHRoaXMuYXhpcz8ub3B0aW9ucy52aXNpYmxlICE9PSBmYWxzZSkgfHwgdGhpcy5jb25maWc/Lnpvb20/LmVuYWJsZTtcblxuICAgIGlmICghZW5hYmxlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fZWxlbWVudCA9IGQzLnNlbGVjdCh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XG4gICAgdGhpcy56b29tID0gZDMuem9vbSgpLmV4dGVudChbXG4gICAgICBbMCwgMF0sXG4gICAgICBbdGhpcy5zaXplLndpZHRoLCB0aGlzLnNpemUuaGVpZ2h0XSxcbiAgICBdKTtcblxuICAgIGNvbnN0IG1pbiA9IHRoaXMuY29uZmlnPy56b29tPy5taW5UcmFuc2xhdGUgIT0gbnVsbCA/IHRoaXMuYXhpcy5zY2FsZSh0aGlzLmNvbmZpZz8uem9vbT8ubWluVHJhbnNsYXRlKSA6IC1JbmZpbml0eTtcbiAgICBjb25zdCBtYXggPSB0aGlzLmNvbmZpZz8uem9vbT8ubWF4VHJhbnNsYXRlICE9IG51bGwgPyB0aGlzLmF4aXMuc2NhbGUodGhpcy5jb25maWc/Lnpvb20/Lm1heFRyYW5zbGF0ZSkgOiBJbmZpbml0eTtcbiAgICBpZiAodGhpcy5heGlzLm9yaWVudGF0aW9uID09PSBBeGlzT3JpZW50YXRpb24ueCAmJiB0aGlzLmNvbmZpZy56b29tLnR5cGUgPT09IFpvb21UeXBlLngpIHtcbiAgICAgIHRoaXMuem9vbS50cmFuc2xhdGVFeHRlbnQoW1xuICAgICAgICBbTWF0aC5taW4obWluLCBtYXgpLCAtSW5maW5pdHldLFxuICAgICAgICBbTWF0aC5tYXgobWluLCBtYXgpLCBJbmZpbml0eV0sXG4gICAgICBdKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5heGlzLm9yaWVudGF0aW9uID09PSBBeGlzT3JpZW50YXRpb24ueSAmJiB0aGlzLmNvbmZpZy56b29tLnR5cGUgPT09IFpvb21UeXBlLnkpIHtcbiAgICAgIHRoaXMuem9vbS50cmFuc2xhdGVFeHRlbnQoW1xuICAgICAgICBbLUluZmluaXR5LCBNYXRoLm1pbihtaW4sIG1heCldLFxuICAgICAgICBbSW5maW5pdHksIE1hdGgubWF4KG1pbiwgbWF4KV0sXG4gICAgICBdKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jb25maWcuem9vbT8ud2hlZWxEZWx0YSkge1xuICAgICAgdGhpcy56b29tLndoZWVsRGVsdGEodGhpcy5jb25maWcuem9vbT8ud2hlZWxEZWx0YSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY29uZmlnPy56b29tPy53aGVlbEZpbHRlcikge1xuICAgICAgdGhpcy56b29tLmZpbHRlcih0aGlzLmNvbmZpZz8uem9vbT8ud2hlZWxGaWx0ZXIpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmF4aXMub3B0aW9ucy5zY2FsZVR5cGUudHlwZSAhPT0gU2NhbGVUeXBlLmJhbmQpIHtcbiAgICAgIGNvbnN0IGV4dHJlbWVzID0gdGhpcy5heGlzLmV4dHJlbWVzIGFzIG51bWJlcltdO1xuICAgICAgY29uc3QgbWF4Wm9vbSA9IHRoaXMuY29uZmlnLnpvb20/Lm1heFxuICAgICAgICA/IChleHRyZW1lc1sxXSAtIGV4dHJlbWVzWzBdKSAvIHRoaXMuY29uZmlnLnpvb20/Lm1heFxuICAgICAgICA6IHRoaXMuY29uZmlnLnpvb20/LmxpbWl0Wm9vbUJ5RGF0YVxuICAgICAgICA/IDFcbiAgICAgICAgOiAwO1xuXG4gICAgICBjb25zdCBtaW5ab29tID0gdGhpcy5jb25maWcuem9vbT8ubWluID8gKGV4dHJlbWVzWzFdIC0gZXh0cmVtZXNbMF0pIC8gdGhpcy5jb25maWcuem9vbT8ubWluIDogSW5maW5pdHk7XG5cbiAgICAgIHRoaXMuem9vbS5zY2FsZUV4dGVudChbbWF4Wm9vbSwgbWluWm9vbV0pO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmNvbmZpZz8uem9vbT8uem9vbUJlaGF2aW9yID09PSBab29tQmVoYXZpb3JUeXBlLndoZWVsKSB7XG4gICAgICB0aGlzLnJ1bldoZWVsVHJhbnNsYXRlKCk7XG4gICAgfVxuICB9XG5cbiAgem9vbWVkID0gKGV2ZW50OiBEM1pvb21FdmVudDxhbnksIGFueT4pID0+IHtcbiAgICBpZiAoXG4gICAgICBldmVudC5zb3VyY2VFdmVudCAmJlxuICAgICAgKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50ID09PSBldmVudC5zb3VyY2VFdmVudC50YXJnZXQgfHxcbiAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQuc291cmNlRXZlbnQudGFyZ2V0KSlcbiAgICApIHtcbiAgICAgIGlmIChPYmplY3Qua2V5cyhldmVudC5zb3VyY2VFdmVudCkubGVuZ3RoICE9PSAwKSB7XG4gICAgICAgIGNvbnN0IG9yaWdpbiA9IHRoaXMuYXhpcy5zY2FsZS5jb3B5KCkuZG9tYWluKHRoaXMuYXhpcy5vcmlnaW5Eb21haW4pO1xuICAgICAgICBpZiAodGhpcy5heGlzLm9wdGlvbnMuc2NhbGVUeXBlLnR5cGUgPT09IFNjYWxlVHlwZS5iYW5kKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZG9tYWluID1cbiAgICAgICAgICB0aGlzLmF4aXMub3JpZW50YXRpb24gPT09IEF4aXNPcmllbnRhdGlvbi55XG4gICAgICAgICAgICA/IGV2ZW50LnRyYW5zZm9ybS5yZXNjYWxlWShvcmlnaW4pLmRvbWFpbigpXG4gICAgICAgICAgICA6IGV2ZW50LnRyYW5zZm9ybS5yZXNjYWxlWChvcmlnaW4pLmRvbWFpbigpO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgZG9tYWluWzBdID09PSBudWxsIHx8XG4gICAgICAgICAgZG9tYWluWzBdID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICBkb21haW5bMV0gPT09IG51bGwgfHxcbiAgICAgICAgICBkb21haW5bMV0gPT09IHVuZGVmaW5lZCB8fFxuICAgICAgICAgIE1hdGguYWJzKGRvbWFpblswXSAtIGRvbWFpblsxXSkgPCAwLjAwMDAwMVxuICAgICAgICApIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbWVzc2FnZSA9IG5ldyBab29tTWVzc2FnZSh7XG4gICAgICAgICAgZXZlbnRUeXBlOiBldmVudC50eXBlLFxuICAgICAgICAgIGF4aXM6IHtcbiAgICAgICAgICAgIGluZGV4OiB0aGlzLmF4aXMuaW5kZXgsXG4gICAgICAgICAgICBvcmllbnRhdGlvbjogdGhpcy5heGlzLm9yaWVudGF0aW9uLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgZWxlbWVudDogdGhpcy5lbGVtZW50UmVmLFxuICAgICAgICAgIGRvbWFpbixcbiAgICAgICAgICBjaGFydElkOiB0aGlzLmNvbmZpZy5pZCxcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuem9vbVNlcnZpY2UuZmlyZVpvb20obWVzc2FnZSk7XG4gICAgICAgIHRoaXMuem9vbVNlcnZpY2UuYnJvYWRjYXN0Wm9vbShtZXNzYWdlKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuY3VycmVudFRyYW5zZm9ybSA9IGV2ZW50LnRyYW5zZm9ybTtcbiAgICB9XG4gIH07XG5cbiAgcHJpdmF0ZSBydW5XaGVlbFRyYW5zbGF0ZSgpIHtcbiAgICBsZXQgdHlwZTogJ3N0YXJ0JyB8ICd6b29tJyB8ICdlbmQnID0gJ3N0YXJ0JztcbiAgICBsZXQgd2hlZWxpbmc7XG5cbiAgICAvLyBGb3IgdG91Y2ggZXZlbnRzXG4gICAgdGhpcy56b29tLm9uKCdzdGFydCB6b29tIGVuZCcsIHRoaXMuem9vbWVkKTtcbiAgICB0aGlzLl9lbGVtZW50Py5jYWxsKHRoaXMuem9vbSk7XG5cbiAgICB0aGlzLnpvb21cbiAgICAgIC5maWx0ZXIoKGV2ZW50KSA9PiB7XG4gICAgICAgIHJldHVybiAoZXZlbnQuY3RybEtleSAmJiBldmVudC50eXBlID09PSAnd2hlZWwnKSB8fCBCb29sZWFuKHdpbmRvdy5Ub3VjaEV2ZW50ICYmIGV2ZW50LnR5cGUgIT09ICd3aGVlbCcpO1xuICAgICAgfSlcbiAgICAgIC53aGVlbERlbHRhKChldmVudCkgPT4ge1xuICAgICAgICBjb25zdCBkZWx0YSA9IHRoaXMuY29uZmlnPy56b29tLnR5cGUgPT09IFpvb21UeXBlLnggPyAtZXZlbnQuZGVsdGFYIDogLWV2ZW50LmRlbHRhWTtcbiAgICAgICAgcmV0dXJuIGRlbHRhICogMC4wMDI7XG4gICAgICB9KTtcblxuICAgIGNvbnN0IGVtaXQgPSAodHlwZTogc3RyaW5nLCBldmVudDogV2hlZWxFdmVudCkgPT4ge1xuICAgICAgY29uc3Qgb3JpZ2luID0gdGhpcy5heGlzLnNjYWxlLmNvcHkoKS5kb21haW4odGhpcy5heGlzLm9yaWdpbkRvbWFpbik7XG4gICAgICBsZXQgdHJhbnNmb3JtID0gem9vbUlkZW50aXR5O1xuICAgICAgY29uc3QgZGVsdGEgPSB0eXBlID09PSAnZW5kJyA/IDAgOiB0aGlzLmF4aXMub3JpZW50YXRpb24gPT09IEF4aXNPcmllbnRhdGlvbi55ID8gZXZlbnQuZGVsdGFZIDogZXZlbnQuZGVsdGFYO1xuXG4gICAgICBpZiAodGhpcy5heGlzLm9yaWVudGF0aW9uID09PSBBeGlzT3JpZW50YXRpb24ueSkge1xuICAgICAgICB0cmFuc2Zvcm0gPSB0cmFuc2Zvcm0udHJhbnNsYXRlKDAsIHRoaXMuY3VycmVudFRyYW5zZm9ybS55IC0gZGVsdGEgLyAyKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuYXhpcy5vcmllbnRhdGlvbiA9PT0gQXhpc09yaWVudGF0aW9uLngpIHtcbiAgICAgICAgdHJhbnNmb3JtID0gdHJhbnNmb3JtLnRyYW5zbGF0ZSh0aGlzLmN1cnJlbnRUcmFuc2Zvcm0ueCAtIGRlbHRhIC8gMiwgMCk7XG4gICAgICB9XG5cbiAgICAgIHRyYW5zZm9ybSA9IHRyYW5zZm9ybS5zY2FsZSh0aGlzLmN1cnJlbnRUcmFuc2Zvcm0uayk7XG5cbiAgICAgIGxldCBkb21haW4gPVxuICAgICAgICB0aGlzLmF4aXMub3JpZW50YXRpb24gPT09IEF4aXNPcmllbnRhdGlvbi55XG4gICAgICAgICAgPyB0cmFuc2Zvcm0ucmVzY2FsZVkob3JpZ2luKS5kb21haW4oKVxuICAgICAgICAgIDogdHJhbnNmb3JtLnJlc2NhbGVYKG9yaWdpbikuZG9tYWluKCk7XG5cbiAgICAgIGNvbnN0IGV4dGVudCA9IHRoaXMuYXhpcy5vcHRpb25zPy5pbnZlcnRlZCA/IGRvbWFpbiA6IFsuLi5kb21haW5dLnJldmVyc2UoKTtcblxuICAgICAgaWYgKGV4dGVudFswXSA8PSB0aGlzLmNvbmZpZy56b29tPy5taW5UcmFuc2xhdGUpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoZXh0ZW50WzFdID49IHRoaXMuY29uZmlnLnpvb20/Lm1heFRyYW5zbGF0ZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBuZXcgWm9vbU1lc3NhZ2Uoe1xuICAgICAgICBldmVudFR5cGU6IHR5cGUsXG4gICAgICAgIGVsZW1lbnQ6IHRoaXMuZWxlbWVudFJlZixcbiAgICAgICAgYXhpczoge1xuICAgICAgICAgIGluZGV4OiB0aGlzLmF4aXMuaW5kZXgsXG4gICAgICAgICAgb3JpZW50YXRpb246IHRoaXMuYXhpcy5vcmllbnRhdGlvbixcbiAgICAgICAgfSxcbiAgICAgICAgZG9tYWluLFxuICAgICAgICBjaGFydElkOiB0aGlzLmNvbmZpZy5pZCxcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLl9lbGVtZW50Py5jYWxsKHRoaXMuem9vbS50cmFuc2Zvcm0sIHRyYW5zZm9ybSk7XG4gICAgICB0aGlzLnpvb21TZXJ2aWNlLmZpcmVab29tKG1lc3NhZ2UpO1xuICAgICAgdGhpcy56b29tU2VydmljZS5icm9hZGNhc3Rab29tKG1lc3NhZ2UpO1xuICAgICAgdGhpcy5jdXJyZW50VHJhbnNmb3JtID0gdHJhbnNmb3JtO1xuICAgIH07XG5cbiAgICB0aGlzLl9lbGVtZW50Lm9uKCd3aGVlbCcsIChldmVudDogV2hlZWxFdmVudCkgPT4ge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgaWYgKGV2ZW50LmN0cmxLZXkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHdoZWVsaW5nKTtcbiAgICAgICAgZW1pdCh0eXBlLCBldmVudCk7XG4gICAgICAgIHR5cGUgPSAnem9vbSc7XG4gICAgICAgIHdoZWVsaW5nID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgZW1pdCgnZW5kJywgZXZlbnQpO1xuICAgICAgICAgIHR5cGUgPSAnc3RhcnQnO1xuICAgICAgICB9LCA1MCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxufVxuIl19
|