@tetacom/svg-charts 1.2.28 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/chart/chart/chart.component.d.ts +5 -2
  2. package/chart/chart-container/chart-container.component.d.ts +1 -1
  3. package/chart/chart-container/series/linear-series-base.d.ts +0 -3
  4. package/chart/core/axis/axis.d.ts +2 -2
  5. package/chart/directives/brushable.directive.d.ts +15 -5
  6. package/chart/directives/zoomable.directive.d.ts +6 -11
  7. package/chart/model/i-broadcast-message.d.ts +18 -19
  8. package/chart/model/marker-options.d.ts +1 -1
  9. package/chart/service/broadcast.service.d.ts +1 -4
  10. package/chart/service/brush.service.d.ts +6 -13
  11. package/chart/service/chart.service.d.ts +0 -4
  12. package/chart/service/scale.service.d.ts +1 -1
  13. package/chart/service/zoom.service.d.ts +15 -15
  14. package/esm2020/chart/chart/chart.component.mjs +17 -17
  15. package/esm2020/chart/chart-container/chart-container.component.mjs +3 -3
  16. package/esm2020/chart/chart-container/crosshair/crosshair.component.mjs +1 -2
  17. package/esm2020/chart/chart-container/plotband/plot-band.component.mjs +4 -2
  18. package/esm2020/chart/chart-container/series/line/line-series.component.mjs +4 -4
  19. package/esm2020/chart/chart-container/series/linear-series-base.mjs +4 -72
  20. package/esm2020/chart/core/axis/axis.mjs +2 -2
  21. package/esm2020/chart/directives/brushable.directive.mjs +120 -10
  22. package/esm2020/chart/directives/draggable-point.directive.mjs +2 -1
  23. package/esm2020/chart/directives/zoomable.directive.mjs +90 -197
  24. package/esm2020/chart/model/i-broadcast-message.mjs +4 -6
  25. package/esm2020/chart/model/marker-options.mjs +1 -1
  26. package/esm2020/chart/service/broadcast.service.mjs +4 -17
  27. package/esm2020/chart/service/brush.service.mjs +11 -147
  28. package/esm2020/chart/service/chart.service.mjs +17 -9
  29. package/esm2020/chart/service/scale.service.mjs +19 -21
  30. package/esm2020/chart/service/zoom.service.mjs +48 -53
  31. package/fesm2015/tetacom-svg-charts.mjs +373 -586
  32. package/fesm2015/tetacom-svg-charts.mjs.map +1 -1
  33. package/fesm2020/tetacom-svg-charts.mjs +356 -566
  34. package/fesm2020/tetacom-svg-charts.mjs.map +1 -1
  35. package/package.json +1 -1
@@ -21,7 +21,7 @@ export class LinearSeriesBase extends SeriesBaseComponent {
21
21
  }
22
22
  set series(series) {
23
23
  this.__series = series;
24
- this.markers = this.__series.data?.filter((_) => _?.marker);
24
+ this.markers = this.__series.data?.filter((_) => _?.marker && _?.x !== undefined && _?.y !== undefined);
25
25
  }
26
26
  get series() {
27
27
  return this.__series;
@@ -58,7 +58,6 @@ export class LinearSeriesBase extends SeriesBaseComponent {
58
58
  return this.getTransform(event, x.get(this.series.xAxisIndex).scale, y.get(this.series.yAxisIndex).scale);
59
59
  }), tap(() => setTimeout(() => this.cdr.detectChanges())));
60
60
  this.path = combineLatest([this.scaleService.scales, this._update]).pipe(map(([data]) => {
61
- // console.log(data);
62
61
  const { x, y } = data;
63
62
  this.x = x.get(this.series.xAxisIndex)?.scale;
64
63
  this.y = y.get(this.series.yAxisIndex)?.scale;
@@ -90,17 +89,9 @@ export class LinearSeriesBase extends SeriesBaseComponent {
90
89
  filteredData = filteredData?.filter(filter(min, max));
91
90
  }
92
91
  return line(filteredData);
93
- }), tap((_) => {
94
- // console.log(_)
95
- setTimeout(() => {
96
- if (this.markers?.length > 0) {
97
- // this.addDragEvents();
98
- }
99
- });
100
92
  }));
101
93
  }
102
94
  ngOnDestroy() {
103
- // this.markerListeners?.on('start drag end', null);
104
95
  this.svc.setTooltip({
105
96
  point: null,
106
97
  series: this.series,
@@ -108,65 +99,6 @@ export class LinearSeriesBase extends SeriesBaseComponent {
108
99
  }
109
100
  ngAfterViewInit() {
110
101
  }
111
- addDragEvents() {
112
- // this.markerListeners?.on('start drag end', null);
113
- // const drag = (node, event: d3.D3DragEvent<any, any, any>, d: BasePoint) => {
114
- // if (
115
- // d.marker?.dragType === DragPointType.x ||
116
- // d.marker?.dragType === DragPointType.xy
117
- // ) {
118
- // d.x = this.x.invert(event.x);
119
- // }
120
- //
121
- // if (
122
- // d.marker?.dragType === DragPointType.y ||
123
- // d.marker?.dragType === DragPointType.xy
124
- // ) {
125
- // d.y = this.y.invert(event.y);
126
- // }
127
- //
128
- // this.svc.emitPoint({
129
- // target: {
130
- // series: this.series,
131
- // point: d,
132
- // },
133
- // event,
134
- // });
135
- //
136
- // this.cdr.detectChanges();
137
- // };
138
- // this.markerListeners = d3
139
- // .drag()
140
- // .subject(function (event, d: BasePoint) {
141
- // const node = d3.select(this);
142
- // return {x: node.attr('cx'), y: node.attr('cy')};
143
- // });
144
- // const dragMarkers =
145
- // this.markerListeners.on(
146
- // 'start drag end',
147
- // function (event: d3.D3DragEvent<any, any, any>, d: BasePoint) {
148
- // const node = d3.select(this);
149
- //
150
- // drag(node, event, d);
151
- // }
152
- // );
153
- //
154
- // const draggableMarkers = this.series.data?.filter(
155
- // (_) => _?.marker && _?.marker?.draggable
156
- // );
157
- //
158
- // const element = d3
159
- // .select(this.element.nativeElement)
160
- // .selectAll('.draggable-marker')
161
- // .data(draggableMarkers);
162
- //
163
- // element.call(dragMarkers as any);
164
- //
165
- // this.svgElement = d3
166
- // .select(this.element.nativeElement)
167
- // .select('.line')
168
- // .node() as SVGGeometryElement;
169
- }
170
102
  getTransform(event, scaleX, scaleY) {
171
103
  if (event.type === 'mouseleave') {
172
104
  return null;
@@ -203,7 +135,7 @@ export class LinearSeriesBase extends SeriesBaseComponent {
203
135
  }
204
136
  const rightId = bisect(this.series.data, x0);
205
137
  const range = scaleY.range();
206
- const intersect = lineIntersection(pointer, range[0], pointer, range[1], scaleX(this.series.data[rightId - 1]?.x), scaleY(this.series.data[rightId - 1]?.y), scaleX(this.series.data[rightId]?.x), scaleY(this.series.data[rightId]?.y));
138
+ const intersect = lineIntersection(pointer, range[0], pointer, Number.MAX_SAFE_INTEGER, scaleX(this.series.data[rightId - 1]?.x), scaleY(this.series.data[rightId - 1]?.y), scaleX(this.series.data[rightId]?.x), scaleY(this.series.data[rightId]?.y));
207
139
  const x = scaleX.invert(intersect.x);
208
140
  const y = scaleY.invert(intersect.y);
209
141
  if (x !== null && x !== undefined && !isNaN(x) && y !== null && y !== undefined && !isNaN(y)) {
@@ -231,7 +163,7 @@ export class LinearSeriesBase extends SeriesBaseComponent {
231
163
  }
232
164
  const rightId = bisect(this.series.data, y0);
233
165
  const range = scaleX.range();
234
- const intersect = lineIntersection(range[0], mouse[1], range[1], mouse[1], scaleX(this.series.data[rightId - 1]?.x), scaleY(this.series.data[rightId - 1]?.y), scaleX(this.series.data[rightId]?.x), scaleY(this.series.data[rightId]?.y));
166
+ const intersect = lineIntersection(range[0], mouse[1], Number.MAX_SAFE_INTEGER, mouse[1], scaleX(this.series.data[rightId - 1]?.x), scaleY(this.series.data[rightId - 1]?.y), scaleX(this.series.data[rightId]?.x), scaleY(this.series.data[rightId]?.y));
235
167
  const x = scaleX.invert(intersect.x);
236
168
  const y = scaleY.invert(intersect.y);
237
169
  if (x !== null && x !== undefined && !isNaN(x) && y !== null && y !== undefined && !isNaN(y)) {
@@ -263,4 +195,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImpor
263
195
  }], ctorParameters: function () { return [{ type: i1.ChartService }, { type: i0.ChangeDetectorRef }, { type: i2.ScaleService }, { type: i3.ZoomService }, { type: i0.ElementRef }]; }, propDecorators: { series: [{
264
196
  type: Input
265
197
  }] } });
266
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluZWFyLXNlcmllcy1iYXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NoYXJ0L2NoYXJ0LWNvbnRhaW5lci9zZXJpZXMvbGluZWFyLXNlcmllcy1iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLGtDQUFrQyxDQUFDO0FBQ3JFLE9BQU8sRUFFTCxTQUFTLEVBRVQsS0FBSyxHQUdOLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxlQUFlLEVBQUUsYUFBYSxFQUFVLEdBQUcsRUFBYyxHQUFHLEVBQUUsY0FBYyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBSWxHLE9BQU8sS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBRXpCLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxtQ0FBbUMsQ0FBQztBQUNsRSxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSx3Q0FBd0MsQ0FBQzs7Ozs7QUFPM0UsTUFBTSxPQUFPLGdCQUNYLFNBQVEsbUJBQXNCO0lBNEI5QixZQUNxQixHQUFpQixFQUNqQixHQUFzQixFQUN0QixZQUEwQixFQUMxQixXQUF3QixFQUN4QixPQUFtQjtRQUV0QyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBTmpDLFFBQUcsR0FBSCxHQUFHLENBQWM7UUFDakIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDdEIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsWUFBTyxHQUFQLE9BQU8sQ0FBWTtRQTlCakMsNkJBQXdCLEdBQXlILElBQUksR0FBRyxFQUFFLENBQUM7UUFZeEosWUFBTyxHQUFHLElBQUksZUFBZSxDQUFPLElBQUksQ0FBQyxDQUFDO0lBcUJwRCxDQUFDO0lBbkJELElBQ2EsTUFBTSxDQUFDLE1BQWlC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O2FBQ2YsQ0FBQztTQUNIO0lBQ0gsQ0FBQzs7NkdBN1ZVLGdCQUFnQjtpR0FBaEIsZ0JBQWdCLHlHQUZqQixFQUFFOzJGQUVELGdCQUFnQjtrQkFINUIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsRUFBRTtpQkFDYjtpTkFvQmMsTUFBTTtzQkFEbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QmFzZVBvaW50fSBmcm9tICcuLi8uLi9tb2RlbC9iYXNlLXBvaW50JztcbmltcG9ydCB7U2VyaWVzQmFzZUNvbXBvbmVudH0gZnJvbSAnLi4vLi4vYmFzZS9zZXJpZXMtYmFzZS5jb21wb25lbnQnO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBmaWx0ZXIsIG1hcCwgT2JzZXJ2YWJsZSwgdGFwLCB3aXRoTGF0ZXN0RnJvbX0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0NoYXJ0U2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZS9jaGFydC5zZXJ2aWNlJztcbmltcG9ydCB7U2NhbGVTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlL3NjYWxlLnNlcnZpY2UnO1xuaW1wb3J0IHtab29tU2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZS96b29tLnNlcnZpY2UnO1xuaW1wb3J0ICogYXMgZDMgZnJvbSAnZDMnO1xuaW1wb3J0IHtEcmFnUG9pbnRUeXBlfSBmcm9tICcuLi8uLi9tb2RlbC9lbnVtL2RyYWctcG9pbnQtdHlwZSc7XG5pbXBvcnQge1Rvb2x0aXBUcmFja2luZ30gZnJvbSAnLi4vLi4vbW9kZWwvZW51bS90b29sdGlwLXRyYWNraW5nJztcbmltcG9ydCB7Q2xpcFBvaW50c0RpcmVjdGlvbn0gZnJvbSAnLi4vLi4vbW9kZWwvZW51bS9jbGlwLXBvaW50cy1kaXJlY3Rpb24nO1xuaW1wb3J0IHtJU2NhbGVzTWFwfSBmcm9tICcuLi8uLi9tb2RlbC9pLXNjYWxlcy1tYXAnO1xuaW1wb3J0IHtTZXJpZXN9IGZyb20gJy4uLy4uL21vZGVsL3Nlcmllcyc7XG5cbkBDb21wb25lbnQoe1xuICB0ZW1wbGF0ZTogJycsXG59KVxuZXhwb3J0IGNsYXNzIExpbmVhclNlcmllc0Jhc2U8VCBleHRlbmRzIEJhc2VQb2ludD5cbiAgZXh0ZW5kcyBTZXJpZXNCYXNlQ29tcG9uZW50PFQ+XG4gIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gIHB1YmxpYyBkZWZhdWx0Q2xpcFBvaW50c01hcHBpbmc6IE1hcDxDbGlwUG9pbnRzRGlyZWN0aW9uLCAobWluOiBudW1iZXIsIG1heDogbnVtYmVyKSA9PiAocG9pbnQ6IEJhc2VQb2ludCwgaWR4OiBudW1iZXIsIGFycjogQXJyYXk8QmFzZVBvaW50PikgPT4ge30+ID0gbmV3IE1hcCgpO1xuXG4gIHRyYW5zZm9ybTogT2JzZXJ2YWJsZTxQaWNrPEJhc2VQb2ludCwgJ3gnIHwgJ3knPj47XG4gIGRpc3BsYXk6IE9ic2VydmFibGU8bnVtYmVyPjtcbiAgcGF0aDogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuICBzdmdFbGVtZW50OiBTVkdHZW9tZXRyeUVsZW1lbnQ7XG4gIHg6IGFueTtcbiAgeTogYW55O1xuICBtYXJrZXJzOiBCYXNlUG9pbnRbXTtcbiAgbWFya2VyTGlzdGVuZXJzOiBhbnk7XG5cbiAgcHJpdmF0ZSBfX3NlcmllczogU2VyaWVzPFQ+O1xuICBwcm90ZWN0ZWQgX3VwZGF0ZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8dm9pZD4obnVsbCk7XG5cbiAgQElucHV0KClcbiAgb3ZlcnJpZGUgc2V0IHNlcmllcyhzZXJpZXM6IFNlcmllczxUPikge1xuICAgIHRoaXMuX19zZXJpZXMgPSBzZXJpZXM7XG5cbiAgICB0aGlzLm1hcmtlcnMgPSB0aGlzLl9fc2VyaWVzLmRhdGE/LmZpbHRlcigoXykgPT4gXz8ubWFya2VyKTtcbiAgfVxuXG4gIG92ZXJyaWRlIGdldCBzZXJpZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX19zZXJpZXM7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgc3ZjOiBDaGFydFNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIHNjYWxlU2VydmljZTogU2NhbGVTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBvdmVycmlkZSB6b29tU2VydmljZTogWm9vbVNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIGVsZW1lbnQ6IEVsZW1lbnRSZWZcbiAgKSB7XG4gICAgc3VwZXIoc3ZjLCBjZHIsIHNjYWxlU2VydmljZSwgem9vbVNlcnZpY2UsIGVsZW1lbnQpO1xuICB9XG5cbiAgb3ZlcnJpZGUgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgY29uc3QgZmlsdGVyWCA9IChtaW46IG51bWJlciwgbWF4OiBudW1iZXIpID0+IChcbiAgICAgIHBvaW50OiBCYXNlUG9pbnQsXG4gICAgICBpZHg6IG51bWJlcixcbiAgICAgIGFycjogQXJyYXk8QmFzZVBvaW50PlxuICAgICkgPT4ge1xuICAgICAgY29uc3QgYmlnZ2VyID0gbWluID4gbWF4ID8gbWluIDogbWF4O1xuICAgICAgY29uc3Qgc21hbGxlciA9IG1pbiA+IG1heCA/IG1heCA6IG1pbjtcbiAgICAgIHJldHVybiAocG9pbnQueCA8PSBiaWdnZXIgfHxcbiAgICAgICAgICBwb2ludC54MSA8PSBiaWdnZXIgfHxcbiAgICAgICAgICAoYXJyW2lkeCAtIDFdICYmIGFycltpZHggLSAxXS54IDw9IGJpZ2dlcikgfHxcbiAgICAgICAgICAoYXJyW2lkeCAtIDFdICYmIGFycltpZHggLSAxXS54MSA8PSBiaWdnZXIpKSAmJlxuICAgICAgICAocG9pbnQueCA+PSBzbWFsbGVyIHx8XG4gICAgICAgICAgcG9pbnQueDEgPj0gc21hbGxlciB8fFxuICAgICAgICAgIChhcnJbaWR4ICsgMV0gJiYgYXJyW2lkeCArIDFdLnggPj0gc21hbGxlcikgfHxcbiAgICAgICAgICAoYXJyW2lkeCArIDFdICYmIGFycltpZHggKyAxXS54MSA+PSBzbWFsbGVyKSlcbiAgICAgICAgO1xuICAgIH07XG5cbiAgICBjb25zdCBmaWx0ZXJZID0gKG1pbjogbnVtYmVyLCBtYXg6IG51bWJlcikgPT4gKFxuICAgICAgcG9pbnQ6IEJhc2VQb2ludCxcbiAgICAgIGlkeDogbnVtYmVyLFxuICAgICAgYXJyOiBBcnJheTxCYXNlUG9pbnQ+XG4gICAgKSA9PiB7XG4gICAgICBjb25zdCBiaWdnZXIgPSBtaW4gPiBtYXggPyBtaW4gOiBtYXg7XG4gICAgICBjb25zdCBzbWFsbGVyID0gbWluID4gbWF4ID8gbWF4IDogbWluO1xuICAgICAgcmV0dXJuIChwb2ludC55IDw9IGJpZ2dlciB8fFxuICAgICAgICAgIHBvaW50LnkxIDw9IGJpZ2dlciB8fFxuICAgICAgICAgIChhcnJbaWR4IC0gMV0gJiYgYXJyW2lkeCAtIDFdLnkgPD0gYmlnZ2VyKSB8fFxuICAgICAgICAgIChhcnJbaWR4IC0gMV0gJiYgYXJyW2lkeCAtIDFdLnkxIDw9IGJpZ2dlcikpICYmXG4gICAgICAgIChwb2ludC55ID49IHNtYWxsZXIgfHxcbiAgICAgICAgICBwb2ludC55MSA+PSBzbWFsbGVyIHx8XG4gICAgICAgICAgKGFycltpZHggKyAxXSAmJiBhcnJbaWR4ICsgMV0ueSA+PSBzbWFsbGVyKSB8fFxuICAgICAgICAgIChhcnJbaWR4ICsgMV0gJiYgYXJyW2lkeCArIDFdLnkxID49IHNtYWxsZXIpKTtcbiAgICB9O1xuXG4gICAgdGhpcy5kZWZhdWx0Q2xpcFBvaW50c01hcHBpbmcuc2V0KENsaXBQb2ludHNEaXJlY3Rpb24ueCwgZmlsdGVyWCk7XG4gICAgdGhpcy5kZWZhdWx0Q2xpcFBvaW50c01hcHBpbmcuc2V0KENsaXBQb2ludHNEaXJlY3Rpb24ueSwgZmlsdGVyWSk7XG5cbiAgICB0aGlzLnRyYW5zZm9ybSA9IHRoaXMuc3ZjLnBvaW50ZXJNb3ZlLnBpcGUoXG4gICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLnNjYWxlU2VydmljZS5zY2FsZXMpLFxuICAgICAgbWFwKChkYXRhOiBbUG9pbnRlckV2ZW50LCBJU2NhbGVzTWFwXSkgPT4ge1xuICAgICAgICBjb25zdCBbZXZlbnQsIHt4LCB5fV0gPSBkYXRhO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmdldFRyYW5zZm9ybShldmVudCwgeC5nZXQodGhpcy5zZXJpZXMueEF4aXNJbmRleCkuc2NhbGUsIHkuZ2V0KHRoaXMuc2VyaWVzLnlBeGlzSW5kZXgpLnNjYWxlKTtcbiAgICAgIH0pLFxuICAgICAgdGFwKCgpID0+IHNldFRpbWVvdXQoKCkgPT4gdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpKSlcbiAgICApO1xuXG4gICAgdGhpcy5wYXRoID0gY29tYmluZUxhdGVzdChbdGhpcy5zY2FsZVNlcnZpY2Uuc2NhbGVzLCB0aGlzLl91cGRhdGVdKS5waXBlKFxuICAgICAgbWFwKChbZGF0YV0pID0+IHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coZGF0YSk7XG4gICAgICAgIGNvbnN0IHt4LCB5fSA9IGRhdGE7XG4gICAgICAgIHRoaXMueCA9IHguZ2V0KHRoaXMuc2VyaWVzLnhBeGlzSW5kZXgpPy5zY2FsZTtcbiAgICAgICAgdGhpcy55ID0geS5nZXQodGhpcy5zZXJpZXMueUF4aXNJbmRleCk/LnNjYWxlO1xuXG4gICAgICAgIGlmICghdGhpcy54IHx8ICF0aGlzLnkpIHtcbiAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBmaWx0ZXIgPSB0aGlzLmRlZmF1bHRDbGlwUG9pbnRzTWFwcGluZy5nZXQodGhpcy5zZXJpZXMuY2xpcFBvaW50c0RpcmVjdGlvbik7XG5cbiAgICAgICAgY29uc3QgbGluZSA9IGQzXG4gICAgICAgICAgLmxpbmU8QmFzZVBvaW50PigpXG4gICAgICAgICAgLmRlZmluZWQoXG4gICAgICAgICAgICAocG9pbnQpID0+XG4gICAgICAgICAgICAgIHBvaW50LnggIT09IG51bGwgJiZcbiAgICAgICAgICAgICAgcG9pbnQueSAhPT0gbnVsbCAmJlxuICAgICAgICAgICAgICBwb2ludC54ICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgICAgICAgcG9pbnQueSAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICAgICFpc05hTihwb2ludC54KSAmJlxuICAgICAgICAgICAgICAhaXNOYU4ocG9pbnQueSlcbiAgICAgICAgICApXG4gICAgICAgICAgLngoKHBvaW50KSA9PiB0aGlzLngocG9pbnQueCkpXG4gICAgICAgICAgLnkoKHBvaW50KSA9PiB0aGlzLnkocG9pbnQueSkpO1xuXG4gICAgICAgIGxldCBmaWx0ZXJlZERhdGEgPSB0aGlzLnNlcmllcy5kYXRhO1xuXG4gICAgICAgIGlmICh0aGlzLnNlcmllcy5jbGlwUG9pbnRzRGlyZWN0aW9uID09PSBDbGlwUG9pbnRzRGlyZWN0aW9uLngpIHtcbiAgICAgICAgICBsZXQgW21pbiwgbWF4XSA9IHRoaXMueC5kb21haW4oKTtcblxuICAgICAgICAgIG1pbiA9IG1pbiBpbnN0YW5jZW9mIERhdGUgPyBtaW4uZ2V0VGltZSgpIDogbWluO1xuICAgICAgICAgIG1heCA9IG1heCBpbnN0YW5jZW9mIERhdGUgPyBtYXguZ2V0VGltZSgpIDogbWF4O1xuXG4gICAgICAgICAgZmlsdGVyZWREYXRhID0gZmlsdGVyZWREYXRhPy5maWx0ZXIoZmlsdGVyKG1pbiwgbWF4KSk7XG4gICAgICAgIH1cblxuXG4gICAgICAgIGlmICh0aGlzLnNlcmllcy5jbGlwUG9pbnRzRGlyZWN0aW9uID09PSBDbGlwUG9pbnRzRGlyZWN0aW9uLnkpIHtcbiAgICAgICAgICBsZXQgW21pbiwgbWF4XSA9IHRoaXMueS5kb21haW4oKTtcblxuICAgICAgICAgIG1pbiA9IG1pbiBpbnN0YW5jZW9mIERhdGUgPyBtaW4uZ2V0VGltZSgpIDogbWluO1xuICAgICAgICAgIG1heCA9IG1heCBpbnN0YW5jZW9mIERhdGUgPyBtYXguZ2V0VGltZSgpIDogbWF4O1xuXG4gICAgICAgICAgZmlsdGVyZWREYXRhID0gZmlsdGVyZWREYXRhPy5maWx0ZXIoZmlsdGVyKG1pbiwgbWF4KSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbGluZShmaWx0ZXJlZERhdGEpO1xuICAgICAgfSksXG4gICAgICB0YXAoKF8pID0+IHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coXylcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMubWFya2Vycz8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgLy8gdGhpcy5hZGREcmFnRXZlbnRzKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIC8vIHRoaXMubWFya2VyTGlzdGVuZXJzPy5vbignc3RhcnQgZHJhZyBlbmQnLCBudWxsKTtcbiAgICB0aGlzLnN2Yy5zZXRUb29sdGlwKHtcbiAgICAgIHBvaW50OiBudWxsLFxuICAgICAgc2VyaWVzOiB0aGlzLnNlcmllcyxcbiAgICB9KTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcblxuICB9XG5cbiAgYWRkRHJhZ0V2ZW50cygpIHtcbiAgICAvLyB0aGlzLm1hcmtlckxpc3RlbmVycz8ub24oJ3N0YXJ0IGRyYWcgZW5kJywgbnVsbCk7XG4gICAgLy8gY29uc3QgZHJhZyA9IChub2RlLCBldmVudDogZDMuRDNEcmFnRXZlbnQ8YW55LCBhbnksIGFueT4sIGQ6IEJhc2VQb2ludCkgPT4ge1xuICAgIC8vICAgaWYgKFxuICAgIC8vICAgICBkLm1hcmtlcj8uZHJhZ1R5cGUgPT09IERyYWdQb2ludFR5cGUueCB8fFxuICAgIC8vICAgICBkLm1hcmtlcj8uZHJhZ1R5cGUgPT09IERyYWdQb2ludFR5cGUueHlcbiAgICAvLyAgICkge1xuICAgIC8vICAgICBkLnggPSB0aGlzLnguaW52ZXJ0KGV2ZW50LngpO1xuICAgIC8vICAgfVxuICAgIC8vXG4gICAgLy8gICBpZiAoXG4gICAgLy8gICAgIGQubWFya2VyPy5kcmFnVHlwZSA9PT0gRHJhZ1BvaW50VHlwZS55IHx8XG4gICAgLy8gICAgIGQubWFya2VyPy5kcmFnVHlwZSA9PT0gRHJhZ1BvaW50VHlwZS54eVxuICAgIC8vICAgKSB7XG4gICAgLy8gICAgIGQueSA9IHRoaXMueS5pbnZlcnQoZXZlbnQueSk7XG4gICAgLy8gICB9XG4gICAgLy9cbiAgICAvLyAgIHRoaXMuc3ZjLmVtaXRQb2ludCh7XG4gICAgLy8gICAgIHRhcmdldDoge1xuICAgIC8vICAgICAgIHNlcmllczogdGhpcy5zZXJpZXMsXG4gICAgLy8gICAgICAgcG9pbnQ6IGQsXG4gICAgLy8gICAgIH0sXG4gICAgLy8gICAgIGV2ZW50LFxuICAgIC8vICAgfSk7XG4gICAgLy9cbiAgICAvLyAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAvLyB9O1xuXG4gICAgLy8gdGhpcy5tYXJrZXJMaXN0ZW5lcnMgPSBkM1xuICAgIC8vICAgLmRyYWcoKVxuICAgIC8vICAgLnN1YmplY3QoZnVuY3Rpb24gKGV2ZW50LCBkOiBCYXNlUG9pbnQpIHtcbiAgICAvLyAgICAgY29uc3Qgbm9kZSA9IGQzLnNlbGVjdCh0aGlzKTtcbiAgICAvLyAgICAgcmV0dXJuIHt4OiBub2RlLmF0dHIoJ2N4JyksIHk6IG5vZGUuYXR0cignY3knKX07XG4gICAgLy8gICB9KTtcbiAgICAvLyBjb25zdCBkcmFnTWFya2VycyA9XG4gICAgLy8gICB0aGlzLm1hcmtlckxpc3RlbmVycy5vbihcbiAgICAvLyAgICAgJ3N0YXJ0IGRyYWcgZW5kJyxcbiAgICAvLyAgICAgZnVuY3Rpb24gKGV2ZW50OiBkMy5EM0RyYWdFdmVudDxhbnksIGFueSwgYW55PiwgZDogQmFzZVBvaW50KSB7XG4gICAgLy8gICAgICAgY29uc3Qgbm9kZSA9IGQzLnNlbGVjdCh0aGlzKTtcbiAgICAvL1xuICAgIC8vICAgICAgIGRyYWcobm9kZSwgZXZlbnQsIGQpO1xuICAgIC8vICAgICB9XG4gICAgLy8gICApO1xuICAgIC8vXG4gICAgLy8gY29uc3QgZHJhZ2dhYmxlTWFya2VycyA9IHRoaXMuc2VyaWVzLmRhdGE/LmZpbHRlcihcbiAgICAvLyAgIChfKSA9PiBfPy5tYXJrZXIgJiYgXz8ubWFya2VyPy5kcmFnZ2FibGVcbiAgICAvLyApO1xuICAgIC8vXG4gICAgLy8gY29uc3QgZWxlbWVudCA9IGQzXG4gICAgLy8gICAuc2VsZWN0KHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50KVxuICAgIC8vICAgLnNlbGVjdEFsbCgnLmRyYWdnYWJsZS1tYXJrZXInKVxuICAgIC8vICAgLmRhdGEoZHJhZ2dhYmxlTWFya2Vycyk7XG4gICAgLy9cbiAgICAvLyBlbGVtZW50LmNhbGwoZHJhZ01hcmtlcnMgYXMgYW55KTtcbiAgICAvL1xuICAgIC8vIHRoaXMuc3ZnRWxlbWVudCA9IGQzXG4gICAgLy8gICAuc2VsZWN0KHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50KVxuICAgIC8vICAgLnNlbGVjdCgnLmxpbmUnKVxuICAgIC8vICAgLm5vZGUoKSBhcyBTVkdHZW9tZXRyeUVsZW1lbnQ7XG4gIH1cblxuICBnZXRUcmFuc2Zvcm0oXG4gICAgZXZlbnQ6IGFueSxcbiAgICBzY2FsZVg6IGFueSxcbiAgICBzY2FsZVk6IGFueVxuICApOiBQaWNrPEJhc2VQb2ludCwgJ3gnIHwgJ3knPiB7XG4gICAgaWYgKGV2ZW50LnR5cGUgPT09ICdtb3VzZWxlYXZlJykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGNvbnN0IG1vdXNlID0gW2V2ZW50Py5vZmZzZXRYLCBldmVudD8ub2Zmc2V0WV07XG5cbiAgICBjb25zdCB0b29sdGlwVHJhY2tpbmcgPSB0aGlzLmNvbmZpZz8udG9vbHRpcD8udHJhY2tpbmc7XG4gICAgY29uc3QgbGluZUludGVyc2VjdGlvbiA9IChcbiAgICAgIHAwX3gsXG4gICAgICBwMF95LFxuICAgICAgcDFfeCxcbiAgICAgIHAxX3ksXG4gICAgICBwMl94LFxuICAgICAgcDJfeSxcbiAgICAgIHAzX3gsXG4gICAgICBwM195XG4gICAgKSA9PiB7XG4gICAgICBjb25zdCByViA9IHt9IGFzIGFueTtcbiAgICAgIGxldCBzMV94LCBzMV95LCBzMl94LCBzMl95O1xuICAgICAgczFfeCA9IHAxX3ggLSBwMF94O1xuICAgICAgczFfeSA9IHAxX3kgLSBwMF95O1xuICAgICAgczJfeCA9IHAzX3ggLSBwMl94O1xuICAgICAgczJfeSA9IHAzX3kgLSBwMl95O1xuXG4gICAgICBsZXQgcywgdDtcbiAgICAgIHMgPVxuICAgICAgICAoLXMxX3kgKiAocDBfeCAtIHAyX3gpICsgczFfeCAqIChwMF95IC0gcDJfeSkpIC9cbiAgICAgICAgKC1zMl94ICogczFfeSArIHMxX3ggKiBzMl95KTtcbiAgICAgIHQgPVxuICAgICAgICAoczJfeCAqIChwMF95IC0gcDJfeSkgLSBzMl95ICogKHAwX3ggLSBwMl94KSkgL1xuICAgICAgICAoLXMyX3ggKiBzMV95ICsgczFfeCAqIHMyX3kpO1xuXG4gICAgICBpZiAocyA+PSAwICYmIHMgPD0gMSAmJiB0ID49IDAgJiYgdCA8PSAxKSB7XG4gICAgICAgIC8vIENvbGxpc2lvbiBkZXRlY3RlZFxuICAgICAgICByVi54ID0gcDBfeCArIHQgKiBzMV94O1xuICAgICAgICByVi55ID0gcDBfeSArIHQgKiBzMV95O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gclY7XG4gICAgfTtcblxuICAgIGlmICh0b29sdGlwVHJhY2tpbmcgPT09IFRvb2x0aXBUcmFja2luZy54KSB7XG4gICAgICBjb25zdCBiaXNlY3QgPSBkMy5iaXNlY3RvcigoXzogQmFzZVBvaW50KSA9PiBfLngpLnJpZ2h0O1xuICAgICAgY29uc3QgcG9pbnRlciA9IG1vdXNlWzBdO1xuXG4gICAgICBsZXQgeDAgPSBzY2FsZVguaW52ZXJ0KHBvaW50ZXIpO1xuICAgICAgaWYgKHgwIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgICB4MCA9IHgwLmdldFRpbWUoKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHJpZ2h0SWQgPSBiaXNlY3QodGhpcy5zZXJpZXMuZGF0YSwgeDApO1xuICAgICAgY29uc3QgcmFuZ2UgPSBzY2FsZVkucmFuZ2UoKTtcblxuICAgICAgY29uc3QgaW50ZXJzZWN0ID0gbGluZUludGVyc2VjdGlvbihcbiAgICAgICAgcG9pbnRlcixcbiAgICAgICAgcmFuZ2VbMF0sXG4gICAgICAgIHBvaW50ZXIsXG4gICAgICAgIHJhbmdlWzFdLFxuICAgICAgICBzY2FsZVgodGhpcy5zZXJpZXMuZGF0YVtyaWdodElkIC0gMV0/LngpLFxuICAgICAgICBzY2FsZVkodGhpcy5zZXJpZXMuZGF0YVtyaWdodElkIC0gMV0/LnkpLFxuICAgICAgICBzY2FsZVgodGhpcy5zZXJpZXMuZGF0YVtyaWdodElkXT8ueCksXG4gICAgICAgIHNjYWxlWSh0aGlzLnNlcmllcy5kYXRhW3JpZ2h0SWRdPy55KVxuICAgICAgKTtcbiAgICAgIGNvbnN0IHggPSBzY2FsZVguaW52ZXJ0KGludGVyc2VjdC54KTtcbiAgICAgIGNvbnN0IHkgPSBzY2FsZVkuaW52ZXJ0KGludGVyc2VjdC55KTtcbiAgICAgIGlmICh4ICE9PSBudWxsICYmIHggIT09IHVuZGVmaW5lZCAmJiAhaXNOYU4oeCkgJiYgeSAhPT0gbnVsbCAmJiB5ICE9PSB1bmRlZmluZWQgJiYgIWlzTmFOKHkpKSB7XG4gICAgICAgIHRoaXMuc3ZjLnNldFRvb2x0aXAoe1xuICAgICAgICAgIHBvaW50OiB7eDogc2NhbGVYLmludmVydChpbnRlcnNlY3QueCksIHk6IHNjYWxlWS5pbnZlcnQoaW50ZXJzZWN0LnkpfSxcbiAgICAgICAgICBzZXJpZXM6IHRoaXMuc2VyaWVzLFxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc3ZjLnNldFRvb2x0aXAoe1xuICAgICAgICAgIHBvaW50OiBudWxsLFxuICAgICAgICAgIHNlcmllczogdGhpcy5zZXJpZXMsXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICB4OiBpbnRlcnNlY3QueCxcbiAgICAgICAgeTogaW50ZXJzZWN0LnksXG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmICh0b29sdGlwVHJhY2tpbmcgPT09IFRvb2x0aXBUcmFja2luZy55KSB7XG4gICAgICBjb25zdCBiaXNlY3QgPSBkMy5iaXNlY3RvcigoXzogQmFzZVBvaW50KSA9PiBfLnkpLnJpZ2h0O1xuXG4gICAgICBsZXQgeTAgPSBzY2FsZVkuaW52ZXJ0KG1vdXNlWzFdKTtcbiAgICAgIGlmICh5MCBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgICAgeTAgPSB5MC5nZXRUaW1lKCk7XG4gICAgICB9XG4gICAgICBjb25zdCByaWdodElkID0gYmlzZWN0KHRoaXMuc2VyaWVzLmRhdGEsIHkwKTtcbiAgICAgIGNvbnN0IHJhbmdlID0gc2NhbGVYLnJhbmdlKCk7XG5cbiAgICAgIGNvbnN0IGludGVyc2VjdCA9IGxpbmVJbnRlcnNlY3Rpb24oXG4gICAgICAgIHJhbmdlWzBdLFxuICAgICAgICBtb3VzZVsxXSxcbiAgICAgICAgcmFuZ2VbMV0sXG4gICAgICAgIG1vdXNlWzFdLFxuICAgICAgICBzY2FsZVgodGhpcy5zZXJpZXMuZGF0YVtyaWdodElkIC0gMV0/LngpLFxuICAgICAgICBzY2FsZVkodGhpcy5zZXJpZXMuZGF0YVtyaWdodElkIC0gMV0/LnkpLFxuICAgICAgICBzY2FsZVgodGhpcy5zZXJpZXMuZGF0YVtyaWdodElkXT8ueCksXG4gICAgICAgIHNjYWxlWSh0aGlzLnNlcmllcy5kYXRhW3JpZ2h0SWRdPy55KVxuICAgICAgKTtcblxuICAgICAgY29uc3QgeCA9IHNjYWxlWC5pbnZlcnQoaW50ZXJzZWN0LngpO1xuICAgICAgY29uc3QgeSA9IHNjYWxlWS5pbnZlcnQoaW50ZXJzZWN0LnkpO1xuXG4gICAgICBpZiAoeCAhPT0gbnVsbCAmJiB4ICE9PSB1bmRlZmluZWQgJiYgIWlzTmFOKHgpICYmIHkgIT09IG51bGwgJiYgeSAhPT0gdW5kZWZpbmVkICYmICFpc05hTih5KSkge1xuICAgICAgICB0aGlzLnN2Yy5zZXRUb29sdGlwKHtcbiAgICAgICAgICBwb2ludDoge3g6IHNjYWxlWC5pbnZlcnQoaW50ZXJzZWN0LngpLCB5OiBzY2FsZVkuaW52ZXJ0KGludGVyc2VjdC55KX0sXG4gICAgICAgICAgc2VyaWVzOiB0aGlzLnNlcmllcyxcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnN2Yy5zZXRUb29sdGlwKHtcbiAgICAgICAgICBwb2ludDogbnVsbCxcbiAgICAgICAgICBzZXJpZXM6IHRoaXMuc2VyaWVzLFxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgeDogaW50ZXJzZWN0LngsXG4gICAgICAgIHk6IGludGVyc2VjdC55LFxuICAgICAgfTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
198
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluZWFyLXNlcmllcy1iYXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NoYXJ0L2NoYXJ0LWNvbnRhaW5lci9zZXJpZXMvbGluZWFyLXNlcmllcy1iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLGtDQUFrQyxDQUFDO0FBQ3JFLE9BQU8sRUFFTCxTQUFTLEVBRVQsS0FBSyxHQUdOLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxlQUFlLEVBQUUsYUFBYSxFQUFVLEdBQUcsRUFBYyxHQUFHLEVBQUUsY0FBYyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBSWxHLE9BQU8sS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBRXpCLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxtQ0FBbUMsQ0FBQztBQUNsRSxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSx3Q0FBd0MsQ0FBQzs7Ozs7QUFPM0UsTUFBTSxPQUFPLGdCQUNYLFNBQVEsbUJBQXNCO0lBMEI5QixZQUNxQixHQUFpQixFQUNqQixHQUFzQixFQUN0QixZQUEwQixFQUMxQixXQUF3QixFQUN4QixPQUFtQjtRQUV0QyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBTmpDLFFBQUcsR0FBSCxHQUFHLENBQWM7UUFDakIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDdEIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsWUFBTyxHQUFQLE9BQU8sQ0FBWTtRQTVCakMsNkJBQXdCLEdBQXlILElBQUksR0FBRyxFQUFFLENBQUM7UUFVeEosWUFBTyxHQUFHLElBQUksZUFBZSxDQUFPLElBQUksQ0FBQyxDQUFDO0lBcUJwRCxDQUFDO0lBbkJELElBQ2EsTUFBTSxDQUFDLE1BQWlC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Q0wsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDO2dCQUNkLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQzthQUNmLENBQUM7U0FDSDtJQUNILENBQUM7OzZHQW5SVSxnQkFBZ0I7aUdBQWhCLGdCQUFnQix5R0FGakIsRUFBRTsyRkFFRCxnQkFBZ0I7a0JBSDVCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLEVBQUU7aUJBQ2I7aU5Ba0JjLE1BQU07c0JBRGxCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0Jhc2VQb2ludH0gZnJvbSAnLi4vLi4vbW9kZWwvYmFzZS1wb2ludCc7XG5pbXBvcnQge1Nlcmllc0Jhc2VDb21wb25lbnR9IGZyb20gJy4uLy4uL2Jhc2Uvc2VyaWVzLWJhc2UuY29tcG9uZW50JztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgZmlsdGVyLCBtYXAsIE9ic2VydmFibGUsIHRhcCwgd2l0aExhdGVzdEZyb219IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtDaGFydFNlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2UvY2hhcnQuc2VydmljZSc7XG5pbXBvcnQge1NjYWxlU2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZS9zY2FsZS5zZXJ2aWNlJztcbmltcG9ydCB7Wm9vbVNlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2Uvem9vbS5zZXJ2aWNlJztcbmltcG9ydCAqIGFzIGQzIGZyb20gJ2QzJztcbmltcG9ydCB7RHJhZ1BvaW50VHlwZX0gZnJvbSAnLi4vLi4vbW9kZWwvZW51bS9kcmFnLXBvaW50LXR5cGUnO1xuaW1wb3J0IHtUb29sdGlwVHJhY2tpbmd9IGZyb20gJy4uLy4uL21vZGVsL2VudW0vdG9vbHRpcC10cmFja2luZyc7XG5pbXBvcnQge0NsaXBQb2ludHNEaXJlY3Rpb259IGZyb20gJy4uLy4uL21vZGVsL2VudW0vY2xpcC1wb2ludHMtZGlyZWN0aW9uJztcbmltcG9ydCB7SVNjYWxlc01hcH0gZnJvbSAnLi4vLi4vbW9kZWwvaS1zY2FsZXMtbWFwJztcbmltcG9ydCB7U2VyaWVzfSBmcm9tICcuLi8uLi9tb2RlbC9zZXJpZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgdGVtcGxhdGU6ICcnLFxufSlcbmV4cG9ydCBjbGFzcyBMaW5lYXJTZXJpZXNCYXNlPFQgZXh0ZW5kcyBCYXNlUG9pbnQ+XG4gIGV4dGVuZHMgU2VyaWVzQmFzZUNvbXBvbmVudDxUPlxuICBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICBwdWJsaWMgZGVmYXVsdENsaXBQb2ludHNNYXBwaW5nOiBNYXA8Q2xpcFBvaW50c0RpcmVjdGlvbiwgKG1pbjogbnVtYmVyLCBtYXg6IG51bWJlcikgPT4gKHBvaW50OiBCYXNlUG9pbnQsIGlkeDogbnVtYmVyLCBhcnI6IEFycmF5PEJhc2VQb2ludD4pID0+IHt9PiA9IG5ldyBNYXAoKTtcblxuICB0cmFuc2Zvcm06IE9ic2VydmFibGU8UGljazxCYXNlUG9pbnQsICd4JyB8ICd5Jz4+O1xuICBkaXNwbGF5OiBPYnNlcnZhYmxlPG51bWJlcj47XG4gIHBhdGg6IE9ic2VydmFibGU8c3RyaW5nPjtcbiAgeDogYW55O1xuICB5OiBhbnk7XG4gIG1hcmtlcnM6IEJhc2VQb2ludFtdO1xuXG4gIHByaXZhdGUgX19zZXJpZXM6IFNlcmllczxUPjtcbiAgcHJvdGVjdGVkIF91cGRhdGUgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHZvaWQ+KG51bGwpO1xuXG4gIEBJbnB1dCgpXG4gIG92ZXJyaWRlIHNldCBzZXJpZXMoc2VyaWVzOiBTZXJpZXM8VD4pIHtcbiAgICB0aGlzLl9fc2VyaWVzID0gc2VyaWVzO1xuXG4gICAgdGhpcy5tYXJrZXJzID0gdGhpcy5fX3Nlcmllcy5kYXRhPy5maWx0ZXIoKF8pID0+IF8/Lm1hcmtlciAmJiBfPy54ICE9PSB1bmRlZmluZWQgJiYgXz8ueSAhPT0gdW5kZWZpbmVkKTtcbiAgfVxuXG4gIG92ZXJyaWRlIGdldCBzZXJpZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX19zZXJpZXM7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgc3ZjOiBDaGFydFNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIHNjYWxlU2VydmljZTogU2NhbGVTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBvdmVycmlkZSB6b29tU2VydmljZTogWm9vbVNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIGVsZW1lbnQ6IEVsZW1lbnRSZWZcbiAgKSB7XG4gICAgc3VwZXIoc3ZjLCBjZHIsIHNjYWxlU2VydmljZSwgem9vbVNlcnZpY2UsIGVsZW1lbnQpO1xuICB9XG5cbiAgb3ZlcnJpZGUgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgY29uc3QgZmlsdGVyWCA9IChtaW46IG51bWJlciwgbWF4OiBudW1iZXIpID0+IChcbiAgICAgIHBvaW50OiBCYXNlUG9pbnQsXG4gICAgICBpZHg6IG51bWJlcixcbiAgICAgIGFycjogQXJyYXk8QmFzZVBvaW50PlxuICAgICkgPT4ge1xuICAgICAgY29uc3QgYmlnZ2VyID0gbWluID4gbWF4ID8gbWluIDogbWF4O1xuICAgICAgY29uc3Qgc21hbGxlciA9IG1pbiA+IG1heCA/IG1heCA6IG1pbjtcbiAgICAgIHJldHVybiAocG9pbnQueCA8PSBiaWdnZXIgfHxcbiAgICAgICAgICBwb2ludC54MSA8PSBiaWdnZXIgfHxcbiAgICAgICAgICAoYXJyW2lkeCAtIDFdICYmIGFycltpZHggLSAxXS54IDw9IGJpZ2dlcikgfHxcbiAgICAgICAgICAoYXJyW2lkeCAtIDFdICYmIGFycltpZHggLSAxXS54MSA8PSBiaWdnZXIpKSAmJlxuICAgICAgICAocG9pbnQueCA+PSBzbWFsbGVyIHx8XG4gICAgICAgICAgcG9pbnQueDEgPj0gc21hbGxlciB8fFxuICAgICAgICAgIChhcnJbaWR4ICsgMV0gJiYgYXJyW2lkeCArIDFdLnggPj0gc21hbGxlcikgfHxcbiAgICAgICAgICAoYXJyW2lkeCArIDFdICYmIGFycltpZHggKyAxXS54MSA+PSBzbWFsbGVyKSlcbiAgICAgICAgO1xuICAgIH07XG5cbiAgICBjb25zdCBmaWx0ZXJZID0gKG1pbjogbnVtYmVyLCBtYXg6IG51bWJlcikgPT4gKFxuICAgICAgcG9pbnQ6IEJhc2VQb2ludCxcbiAgICAgIGlkeDogbnVtYmVyLFxuICAgICAgYXJyOiBBcnJheTxCYXNlUG9pbnQ+XG4gICAgKSA9PiB7XG4gICAgICBjb25zdCBiaWdnZXIgPSBtaW4gPiBtYXggPyBtaW4gOiBtYXg7XG4gICAgICBjb25zdCBzbWFsbGVyID0gbWluID4gbWF4ID8gbWF4IDogbWluO1xuICAgICAgcmV0dXJuIChwb2ludC55IDw9IGJpZ2dlciB8fFxuICAgICAgICAgIHBvaW50LnkxIDw9IGJpZ2dlciB8fFxuICAgICAgICAgIChhcnJbaWR4IC0gMV0gJiYgYXJyW2lkeCAtIDFdLnkgPD0gYmlnZ2VyKSB8fFxuICAgICAgICAgIChhcnJbaWR4IC0gMV0gJiYgYXJyW2lkeCAtIDFdLnkxIDw9IGJpZ2dlcikpICYmXG4gICAgICAgIChwb2ludC55ID49IHNtYWxsZXIgfHxcbiAgICAgICAgICBwb2ludC55MSA+PSBzbWFsbGVyIHx8XG4gICAgICAgICAgKGFycltpZHggKyAxXSAmJiBhcnJbaWR4ICsgMV0ueSA+PSBzbWFsbGVyKSB8fFxuICAgICAgICAgIChhcnJbaWR4ICsgMV0gJiYgYXJyW2lkeCArIDFdLnkxID49IHNtYWxsZXIpKTtcbiAgICB9O1xuXG4gICAgdGhpcy5kZWZhdWx0Q2xpcFBvaW50c01hcHBpbmcuc2V0KENsaXBQb2ludHNEaXJlY3Rpb24ueCwgZmlsdGVyWCk7XG4gICAgdGhpcy5kZWZhdWx0Q2xpcFBvaW50c01hcHBpbmcuc2V0KENsaXBQb2ludHNEaXJlY3Rpb24ueSwgZmlsdGVyWSk7XG5cbiAgICB0aGlzLnRyYW5zZm9ybSA9IHRoaXMuc3ZjLnBvaW50ZXJNb3ZlLnBpcGUoXG4gICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLnNjYWxlU2VydmljZS5zY2FsZXMpLFxuICAgICAgbWFwKChkYXRhOiBbUG9pbnRlckV2ZW50LCBJU2NhbGVzTWFwXSkgPT4ge1xuICAgICAgICBjb25zdCBbZXZlbnQsIHt4LCB5fV0gPSBkYXRhO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmdldFRyYW5zZm9ybShldmVudCwgeC5nZXQodGhpcy5zZXJpZXMueEF4aXNJbmRleCkuc2NhbGUsIHkuZ2V0KHRoaXMuc2VyaWVzLnlBeGlzSW5kZXgpLnNjYWxlKTtcbiAgICAgIH0pLFxuICAgICAgdGFwKCgpID0+IHNldFRpbWVvdXQoKCkgPT4gdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpKSlcbiAgICApO1xuXG4gICAgdGhpcy5wYXRoID0gY29tYmluZUxhdGVzdChbdGhpcy5zY2FsZVNlcnZpY2Uuc2NhbGVzLCB0aGlzLl91cGRhdGVdKS5waXBlKFxuICAgICAgbWFwKChbZGF0YV0pID0+IHtcbiAgICAgICAgY29uc3Qge3gsIHl9ID0gZGF0YTtcbiAgICAgICAgdGhpcy54ID0geC5nZXQodGhpcy5zZXJpZXMueEF4aXNJbmRleCk/LnNjYWxlO1xuICAgICAgICB0aGlzLnkgPSB5LmdldCh0aGlzLnNlcmllcy55QXhpc0luZGV4KT8uc2NhbGU7XG5cbiAgICAgICAgaWYgKCF0aGlzLnggfHwgIXRoaXMueSkge1xuICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGZpbHRlciA9IHRoaXMuZGVmYXVsdENsaXBQb2ludHNNYXBwaW5nLmdldCh0aGlzLnNlcmllcy5jbGlwUG9pbnRzRGlyZWN0aW9uKTtcblxuICAgICAgICBjb25zdCBsaW5lID0gZDNcbiAgICAgICAgICAubGluZTxCYXNlUG9pbnQ+KClcbiAgICAgICAgICAuZGVmaW5lZChcbiAgICAgICAgICAgIChwb2ludCkgPT5cbiAgICAgICAgICAgICAgcG9pbnQueCAhPT0gbnVsbCAmJlxuICAgICAgICAgICAgICBwb2ludC55ICE9PSBudWxsICYmXG4gICAgICAgICAgICAgIHBvaW50LnggIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgICAgICBwb2ludC55ICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgICAgICAgIWlzTmFOKHBvaW50LngpICYmXG4gICAgICAgICAgICAgICFpc05hTihwb2ludC55KVxuICAgICAgICAgIClcbiAgICAgICAgICAueCgocG9pbnQpID0+IHRoaXMueChwb2ludC54KSlcbiAgICAgICAgICAueSgocG9pbnQpID0+IHRoaXMueShwb2ludC55KSk7XG5cbiAgICAgICAgbGV0IGZpbHRlcmVkRGF0YSA9IHRoaXMuc2VyaWVzLmRhdGE7XG5cbiAgICAgICAgaWYgKHRoaXMuc2VyaWVzLmNsaXBQb2ludHNEaXJlY3Rpb24gPT09IENsaXBQb2ludHNEaXJlY3Rpb24ueCkge1xuICAgICAgICAgIGxldCBbbWluLCBtYXhdID0gdGhpcy54LmRvbWFpbigpO1xuXG4gICAgICAgICAgbWluID0gbWluIGluc3RhbmNlb2YgRGF0ZSA/IG1pbi5nZXRUaW1lKCkgOiBtaW47XG4gICAgICAgICAgbWF4ID0gbWF4IGluc3RhbmNlb2YgRGF0ZSA/IG1heC5nZXRUaW1lKCkgOiBtYXg7XG5cbiAgICAgICAgICBmaWx0ZXJlZERhdGEgPSBmaWx0ZXJlZERhdGE/LmZpbHRlcihmaWx0ZXIobWluLCBtYXgpKTtcbiAgICAgICAgfVxuXG5cbiAgICAgICAgaWYgKHRoaXMuc2VyaWVzLmNsaXBQb2ludHNEaXJlY3Rpb24gPT09IENsaXBQb2ludHNEaXJlY3Rpb24ueSkge1xuICAgICAgICAgIGxldCBbbWluLCBtYXhdID0gdGhpcy55LmRvbWFpbigpO1xuXG4gICAgICAgICAgbWluID0gbWluIGluc3RhbmNlb2YgRGF0ZSA/IG1pbi5nZXRUaW1lKCkgOiBtaW47XG4gICAgICAgICAgbWF4ID0gbWF4IGluc3RhbmNlb2YgRGF0ZSA/IG1heC5nZXRUaW1lKCkgOiBtYXg7XG5cbiAgICAgICAgICBmaWx0ZXJlZERhdGEgPSBmaWx0ZXJlZERhdGE/LmZpbHRlcihmaWx0ZXIobWluLCBtYXgpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBsaW5lKGZpbHRlcmVkRGF0YSk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnN2Yy5zZXRUb29sdGlwKHtcbiAgICAgIHBvaW50OiBudWxsLFxuICAgICAgc2VyaWVzOiB0aGlzLnNlcmllcyxcbiAgICB9KTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgfVxuXG4gIGdldFRyYW5zZm9ybShcbiAgICBldmVudDogYW55LFxuICAgIHNjYWxlWDogYW55LFxuICAgIHNjYWxlWTogYW55XG4gICk6IFBpY2s8QmFzZVBvaW50LCAneCcgfCAneSc+IHtcbiAgICBpZiAoZXZlbnQudHlwZSA9PT0gJ21vdXNlbGVhdmUnKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgY29uc3QgbW91c2UgPSBbZXZlbnQ/Lm9mZnNldFgsIGV2ZW50Py5vZmZzZXRZXTtcblxuICAgIGNvbnN0IHRvb2x0aXBUcmFja2luZyA9IHRoaXMuY29uZmlnPy50b29sdGlwPy50cmFja2luZztcbiAgICBjb25zdCBsaW5lSW50ZXJzZWN0aW9uID0gKFxuICAgICAgcDBfeCxcbiAgICAgIHAwX3ksXG4gICAgICBwMV94LFxuICAgICAgcDFfeSxcbiAgICAgIHAyX3gsXG4gICAgICBwMl95LFxuICAgICAgcDNfeCxcbiAgICAgIHAzX3lcbiAgICApID0+IHtcbiAgICAgIGNvbnN0IHJWID0ge30gYXMgYW55O1xuICAgICAgbGV0IHMxX3gsIHMxX3ksIHMyX3gsIHMyX3k7XG4gICAgICBzMV94ID0gcDFfeCAtIHAwX3g7XG4gICAgICBzMV95ID0gcDFfeSAtIHAwX3k7XG4gICAgICBzMl94ID0gcDNfeCAtIHAyX3g7XG4gICAgICBzMl95ID0gcDNfeSAtIHAyX3k7XG5cbiAgICAgIGxldCBzLCB0O1xuICAgICAgcyA9XG4gICAgICAgICgtczFfeSAqIChwMF94IC0gcDJfeCkgKyBzMV94ICogKHAwX3kgLSBwMl95KSkgL1xuICAgICAgICAoLXMyX3ggKiBzMV95ICsgczFfeCAqIHMyX3kpO1xuICAgICAgdCA9XG4gICAgICAgIChzMl94ICogKHAwX3kgLSBwMl95KSAtIHMyX3kgKiAocDBfeCAtIHAyX3gpKSAvXG4gICAgICAgICgtczJfeCAqIHMxX3kgKyBzMV94ICogczJfeSk7XG5cbiAgICAgIGlmIChzID49IDAgJiYgcyA8PSAxICYmIHQgPj0gMCAmJiB0IDw9IDEpIHtcbiAgICAgICAgLy8gQ29sbGlzaW9uIGRldGVjdGVkXG4gICAgICAgIHJWLnggPSBwMF94ICsgdCAqIHMxX3g7XG4gICAgICAgIHJWLnkgPSBwMF95ICsgdCAqIHMxX3k7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByVjtcbiAgICB9O1xuXG4gICAgaWYgKHRvb2x0aXBUcmFja2luZyA9PT0gVG9vbHRpcFRyYWNraW5nLngpIHtcbiAgICAgIGNvbnN0IGJpc2VjdCA9IGQzLmJpc2VjdG9yKChfOiBCYXNlUG9pbnQpID0+IF8ueCkucmlnaHQ7XG4gICAgICBjb25zdCBwb2ludGVyID0gbW91c2VbMF07XG5cbiAgICAgIGxldCB4MCA9IHNjYWxlWC5pbnZlcnQocG9pbnRlcik7XG4gICAgICBpZiAoeDAgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICAgIHgwID0geDAuZ2V0VGltZSgpO1xuICAgICAgfVxuICAgICAgY29uc3QgcmlnaHRJZCA9IGJpc2VjdCh0aGlzLnNlcmllcy5kYXRhLCB4MCk7XG4gICAgICBjb25zdCByYW5nZSA9IHNjYWxlWS5yYW5nZSgpO1xuXG4gICAgICBjb25zdCBpbnRlcnNlY3QgPSBsaW5lSW50ZXJzZWN0aW9uKFxuICAgICAgICBwb2ludGVyLFxuICAgICAgICByYW5nZVswXSxcbiAgICAgICAgcG9pbnRlcixcbiAgICAgICAgTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIsXG4gICAgICAgIHNjYWxlWCh0aGlzLnNlcmllcy5kYXRhW3JpZ2h0SWQgLSAxXT8ueCksXG4gICAgICAgIHNjYWxlWSh0aGlzLnNlcmllcy5kYXRhW3JpZ2h0SWQgLSAxXT8ueSksXG4gICAgICAgIHNjYWxlWCh0aGlzLnNlcmllcy5kYXRhW3JpZ2h0SWRdPy54KSxcbiAgICAgICAgc2NhbGVZKHRoaXMuc2VyaWVzLmRhdGFbcmlnaHRJZF0/LnkpXG4gICAgICApO1xuICAgICAgY29uc3QgeCA9IHNjYWxlWC5pbnZlcnQoaW50ZXJzZWN0LngpO1xuICAgICAgY29uc3QgeSA9IHNjYWxlWS5pbnZlcnQoaW50ZXJzZWN0LnkpO1xuICAgICAgaWYgKHggIT09IG51bGwgJiYgeCAhPT0gdW5kZWZpbmVkICYmICFpc05hTih4KSAmJiB5ICE9PSBudWxsICYmIHkgIT09IHVuZGVmaW5lZCAmJiAhaXNOYU4oeSkpIHtcbiAgICAgICAgdGhpcy5zdmMuc2V0VG9vbHRpcCh7XG4gICAgICAgICAgcG9pbnQ6IHt4OiBzY2FsZVguaW52ZXJ0KGludGVyc2VjdC54KSwgeTogc2NhbGVZLmludmVydChpbnRlcnNlY3QueSl9LFxuICAgICAgICAgIHNlcmllczogdGhpcy5zZXJpZXMsXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zdmMuc2V0VG9vbHRpcCh7XG4gICAgICAgICAgcG9pbnQ6IG51bGwsXG4gICAgICAgICAgc2VyaWVzOiB0aGlzLnNlcmllcyxcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHg6IGludGVyc2VjdC54LFxuICAgICAgICB5OiBpbnRlcnNlY3QueSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKHRvb2x0aXBUcmFja2luZyA9PT0gVG9vbHRpcFRyYWNraW5nLnkpIHtcbiAgICAgIGNvbnN0IGJpc2VjdCA9IGQzLmJpc2VjdG9yKChfOiBCYXNlUG9pbnQpID0+IF8ueSkucmlnaHQ7XG5cbiAgICAgIGxldCB5MCA9IHNjYWxlWS5pbnZlcnQobW91c2VbMV0pO1xuICAgICAgaWYgKHkwIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgICB5MCA9IHkwLmdldFRpbWUoKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHJpZ2h0SWQgPSBiaXNlY3QodGhpcy5zZXJpZXMuZGF0YSwgeTApO1xuICAgICAgY29uc3QgcmFuZ2UgPSBzY2FsZVgucmFuZ2UoKTtcblxuICAgICAgY29uc3QgaW50ZXJzZWN0ID0gbGluZUludGVyc2VjdGlvbihcbiAgICAgICAgcmFuZ2VbMF0sXG4gICAgICAgIG1vdXNlWzFdLFxuICAgICAgICBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUixcbiAgICAgICAgbW91c2VbMV0sXG4gICAgICAgIHNjYWxlWCh0aGlzLnNlcmllcy5kYXRhW3JpZ2h0SWQgLSAxXT8ueCksXG4gICAgICAgIHNjYWxlWSh0aGlzLnNlcmllcy5kYXRhW3JpZ2h0SWQgLSAxXT8ueSksXG4gICAgICAgIHNjYWxlWCh0aGlzLnNlcmllcy5kYXRhW3JpZ2h0SWRdPy54KSxcbiAgICAgICAgc2NhbGVZKHRoaXMuc2VyaWVzLmRhdGFbcmlnaHRJZF0/LnkpXG4gICAgICApO1xuXG4gICAgICBjb25zdCB4ID0gc2NhbGVYLmludmVydChpbnRlcnNlY3QueCk7XG4gICAgICBjb25zdCB5ID0gc2NhbGVZLmludmVydChpbnRlcnNlY3QueSk7XG5cbiAgICAgIGlmICh4ICE9PSBudWxsICYmIHggIT09IHVuZGVmaW5lZCAmJiAhaXNOYU4oeCkgJiYgeSAhPT0gbnVsbCAmJiB5ICE9PSB1bmRlZmluZWQgJiYgIWlzTmFOKHkpKSB7XG4gICAgICAgIHRoaXMuc3ZjLnNldFRvb2x0aXAoe1xuICAgICAgICAgIHBvaW50OiB7eDogc2NhbGVYLmludmVydChpbnRlcnNlY3QueCksIHk6IHNjYWxlWS5pbnZlcnQoaW50ZXJzZWN0LnkpfSxcbiAgICAgICAgICBzZXJpZXM6IHRoaXMuc2VyaWVzLFxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc3ZjLnNldFRvb2x0aXAoe1xuICAgICAgICAgIHBvaW50OiBudWxsLFxuICAgICAgICAgIHNlcmllczogdGhpcy5zZXJpZXMsXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICB4OiBpbnRlcnNlY3QueCxcbiAgICAgICAgeTogaW50ZXJzZWN0LnksXG4gICAgICB9O1xuICAgIH1cbiAgfVxufVxuIl19
@@ -6,7 +6,7 @@ import { ScaleType } from '../../model/enum/scale-type';
6
6
  export class Axis {
7
7
  constructor(config) {
8
8
  this._extremes = [0, 0];
9
- this._originDomain = [];
9
+ this._originDomain = [0, 0];
10
10
  this.defaultFormatters = new Map()
11
11
  .set(ScaleType.linear, d3.format(',.5~r'))
12
12
  .set(ScaleType.time, d3.timeFormat('%d.%m.%Y'))
@@ -119,4 +119,4 @@ export class Axis {
119
119
  return this.defaultScales.get(this.options.scaleType.type);
120
120
  }
121
121
  }
122
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXhpcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jaGFydC9jb3JlL2F4aXMvYXhpcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFHcEUsT0FBTyxLQUFLLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFFekIsT0FBTyxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRXhELE1BQU0sT0FBTyxJQUFJO0lBNEJmLFlBQVksTUFBb0I7UUF4QnhCLGNBQVMsR0FBcUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFJckMsa0JBQWEsR0FBZSxFQUFFLENBQUM7UUFJL0Isc0JBQWlCLEdBQUcsSUFBSSxHQUFHLEVBQWtCO2FBQ2xELEdBQUcsQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDekMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQzthQUM5QyxHQUFHLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ25DLEdBQUcsQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDdEMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUNuQyxHQUFHLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFD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Q0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFekMsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUM7SUFDMUIsQ0FBQztJQUVELElBQUksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxJQUFJLFdBQVc7UUFDYixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDM0IsQ0FBQztJQUVELElBQUksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBRUQsSUFBSSxVQUFVO1FBQ1osT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzNCLENBQUM7SUFFRCxJQUFJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckIsQ0FBQztJQUVELElBQUksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBRUQsSUFBSSxZQUFZO1FBQ2QsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFBO0lBQzNCLENBQUM7SUFFTSxnQkFBZ0I7UUFDckIsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFTSxZQUFZO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0QsQ0FBQztDQUdGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSUNoYXJ0Q29uZmlnIH0gZnJvbSAnLi4vLi4vbW9kZWwvaS1jaGFydC1jb25maWcnO1xuaW1wb3J0IHsgQXhpc09yaWVudGF0aW9uIH0gZnJvbSAnLi4vLi4vbW9kZWwvZW51bS9heGlzLW9yaWVudGF0aW9uJztcbmltcG9ydCB7IFNlcmllcyB9IGZyb20gJy4uLy4uL21vZGVsL3Nlcmllcyc7XG5pbXBvcnQgeyBCYXNlUG9pbnQgfSBmcm9tICcuLi8uLi9tb2RlbC9iYXNlLXBvaW50JztcbmltcG9ydCAqIGFzIGQzIGZyb20gJ2QzJztcbmltcG9ydCB7IEF4aXNPcHRpb25zIH0gZnJvbSAnLi4vLi4vbW9kZWwvYXhpcy1vcHRpb25zJztcbmltcG9ydCB7IEF4aXNTaXplQnVpbGRlciwgRXh0cmVtZXNCdWlsZGVyIH0gZnJvbSAnLi9idWlsZGVycy9wdWJsaWMtYXBpJztcbmltcG9ydCB7IGdlbmVyYXRlVGlja3MgfSBmcm9tICcuLi91dGlscy9wdWJsaWMtYXBpJztcbmltcG9ydCB7IFNjYWxlVHlwZSB9IGZyb20gJy4uLy4uL21vZGVsL2VudW0vc2NhbGUtdHlwZSc7XG5cbmV4cG9ydCBjbGFzcyBBeGlzIHtcbiAgcHJpdmF0ZSBjaGFydENvbmZpZzogSUNoYXJ0Q29uZmlnO1xuICBwcml2YXRlIF9vcmllbnRhdGlvbjogQXhpc09yaWVudGF0aW9uO1xuICBwcml2YXRlIF9pbmRleDogbnVtYmVyO1xuICBwcml2YXRlIF9leHRyZW1lczogW251bWJlciwgbnVtYmVyXSA9IFswLCAwXTtcbiAgcHJpdmF0ZSBfc2VsZlNpemU6IG51bWJlcjtcbiAgcHJpdmF0ZSBfdGlja3NWYWx1ZXM6IG51bWJlcltdO1xuICBwcml2YXRlIF9vcHRpb25zOiBBeGlzT3B0aW9ucztcbiAgcHJpdmF0ZSBfb3JpZ2luRG9tYWluOiBBcnJheTxhbnk+ID0gW107XG5cbiAgcHJpdmF0ZSBfc2NhbGU6IGFueTtcblxuICBwcml2YXRlIGRlZmF1bHRGb3JtYXR0ZXJzID0gbmV3IE1hcDxTY2FsZVR5cGUsIGFueT4oKVxuICAgIC5zZXQoU2NhbGVUeXBlLmxpbmVhciwgZDMuZm9ybWF0KCcsLjV+cicpKVxuICAgIC5zZXQoU2NhbGVUeXBlLnRpbWUsIGQzLnRpbWVGb3JtYXQoJyVkLiVtLiVZJykpXG4gICAgLnNldChTY2FsZVR5cGUubG9nLCBkMy5mb3JtYXQoJ35zJykpXG4gICAgLnNldChTY2FsZVR5cGUuc3ltbG9nLCBkMy5mb3JtYXQoJ35zJykpXG4gICAgLnNldChTY2FsZVR5cGUucG93LCBkMy5mb3JtYXQoJ35zJykpXG4gICAgLnNldChTY2FsZVR5cGUuc3FydCwgZDMuZm9ybWF0KCd+cycpKTtcblxuICBwcml2YXRlIGRlZmF1bHRTY2FsZXMgPSBuZXcgTWFwPFNjYWxlVHlwZSwgYW55PigpXG4gICAgLnNldChTY2FsZVR5cGUubGluZWFyLCBkMy5zY2FsZUxpbmVhcilcbiAgICAuc2V0KFNjYWxlVHlwZS5sb2csIGQzLnNjYWxlTG9nKVxuICAgIC5zZXQoU2NhbGVUeXBlLnN5bWxvZywgZDMuc2NhbGVTeW1sb2cpXG4gICAgLnNldChTY2FsZVR5cGUucG93LCBkMy5zY2FsZVBvdylcbiAgICAuc2V0KFNjYWxlVHlwZS5zcXJ0LCBkMy5zY2FsZVNxcnQpXG4gICAgLnNldChTY2FsZVR5cGUudGltZSwgZDMuc2NhbGVUaW1lKTtcblxuICBjb25zdHJ1Y3Rvcihjb25maWc6IElDaGFydENvbmZpZykge1xuICAgIHRoaXMuY2hhcnRDb25maWcgPSBjb25maWc7XG4gIH1cblxuICAvKipcbiAgICogRmFjdG9yeSBmb3IgY3JlYXRpbmcgeCx5IGF4ZXNcbiAgICogQHBhcmFtIHtBeGlzT3JpZW50YXRpb259IG9yaWVudGF0aW9uXG4gICAqIEF4aXMgdHlwZVxuICAgKiBAcGFyYW0ge0lDaGFydENvbmZpZ30gY29uZmlnXG4gICAqIENoYXJ0IGNvbmZpZ1xuICAgKiBAcGFyYW0ge251bWJlcn0gaW5kZXhcbiAgICogTmV3IGdlbmVyYXRlZCBheGlzXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGNyZWF0ZUF4aXMoXG4gICAgb3JpZW50YXRpb246IEF4aXNPcmllbnRhdGlvbixcbiAgICBjb25maWc6IElDaGFydENvbmZpZyxcbiAgICBpbmRleDogbnVtYmVyXG4gICk6IEF4aXMge1xuICAgIGNvbnN0IGF4aXMgPSBuZXcgQXhpcyhjb25maWcpO1xuICAgIGF4aXMuc2V0TG9jYXRlKG9yaWVudGF0aW9uKTtcbiAgICBheGlzLnNldEluZGV4KGluZGV4KTtcblxuICAgIGF4aXMuc2V0T3B0aW9ucygpO1xuICAgIGF4aXMuc2V0RXh0cmVtZXMoKTtcbiAgICBheGlzLnNldFRpY2tzVmFsdWVzKCk7XG4gICAgYXhpcy5zZXRTZWxmU2l6ZSgpO1xuXG4gICAgcmV0dXJuIGF4aXM7XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIHtvcmllbnRhdGlvbn0gb3JpZW50YXRpb25cbiAgICogU2V0IGxvY2F0ZSBheGlzIHggb3IgeVxuICAgKi9cbiAgcHJpdmF0ZSBzZXRMb2NhdGUob3JpZW50YXRpb246IEF4aXNPcmllbnRhdGlvbik6IHZvaWQge1xuICAgIHRoaXMuX29yaWVudGF0aW9uID0gb3JpZW50YXRpb247XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IGluZGV4XG4gICAqIEluZGV4IGF4aXNcbiAgICovXG4gIHByaXZhdGUgc2V0SW5kZXgoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuX2luZGV4ID0gaW5kZXg7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybiB7QXJyYXk8U2VyaWVzPEJhc2VQb2ludD4+fVxuICAgKiBMaW5rZWQgc2VyaWVzXG4gICAqL1xuICBwdWJsaWMgbGlua2VkU2VyaWVzKCk6IEFycmF5PFNlcmllczxCYXNlUG9pbnQ+PiB7XG4gICAgY29uc3QgbGlua2VkRmlsdGVyID0gKHNlcmllOiBTZXJpZXM8QmFzZVBvaW50PikgPT5cbiAgICAgIHNlcmllW1xuICAgICAgICB0aGlzLl9vcmllbnRhdGlvbiA9PT0gQXhpc09yaWVudGF0aW9uLnkgPyAneUF4aXNJbmRleCcgOiAneEF4aXNJbmRleCdcbiAgICAgIF0gPT09IHRoaXMuX2luZGV4O1xuXG4gICAgcmV0dXJuIHRoaXMuY2hhcnRDb25maWc/LnNlcmllcy5maWx0ZXIobGlua2VkRmlsdGVyKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRFeHRyZW1lcygpOiB2b2lkIHtcbiAgICBjb25zdCBidWlsZGVyID0gbmV3IEV4dHJlbWVzQnVpbGRlcigpO1xuICAgIHRoaXMuX2V4dHJlbWVzID0gYnVpbGRlci5idWlsZCh0aGlzKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRPcmlnaW5Eb21haW4oZG9tYWluOiBBcnJheTxhbnk+KSB7XG4gICAgdGhpcy5fb3JpZ2luRG9tYWluID0gZG9tYWluO1xuICB9XG5cbiAgcHVibGljIHNldFNjYWxlKHNjYWxlOiBhbnkpIHtcbiAgICB0aGlzLl9zY2FsZSA9IHNjYWxlO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRTZWxmU2l6ZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9zZWxmU2l6ZSA9IG5ldyBBeGlzU2l6ZUJ1aWxkZXIoKS5idWlsZCh0aGlzKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0VGlja3NWYWx1ZXMoKTogdm9pZCB7XG4gICAgdGhpcy5fdGlja3NWYWx1ZXMgPSBnZW5lcmF0ZVRpY2tzKHRoaXMuX2V4dHJlbWVzKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0T3B0aW9ucygpOiB2b2lkIHtcbiAgICBjb25zdCBvcHRpb25zID1cbiAgICAgIHRoaXMub3JpZW50YXRpb24gPT09IEF4aXNPcmllbnRhdGlvbi54XG4gICAgICAgID8gdGhpcy5jaGFydENvbmZpZy54QXhpc1t0aGlzLmluZGV4XVxuICAgICAgICA6IHRoaXMuY2hhcnRDb25maWcueUF4aXNbdGhpcy5pbmRleF07XG5cbiAgICB0aGlzLl9vcHRpb25zID0gb3B0aW9ucztcbiAgfVxuXG4gIGdldCBzY2FsZSgpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLl9zY2FsZTtcbiAgfVxuXG4gIGdldCBleHRyZW1lcygpOiBBcnJheTxudW1iZXI+IHtcbiAgICByZXR1cm4gdGhpcy5fZXh0cmVtZXM7XG4gIH1cblxuICBnZXQgb3JpZW50YXRpb24oKTogQXhpc09yaWVudGF0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5fb3JpZW50YXRpb247XG4gIH1cblxuICBnZXQgc2VsZlNpemUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZlNpemU7XG4gIH1cblxuICBnZXQgdGlja1ZhbHVlcygpOiBudW1iZXJbXSB7XG4gICAgcmV0dXJuIHRoaXMuX3RpY2tzVmFsdWVzO1xuICB9XG5cbiAgZ2V0IGluZGV4KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX2luZGV4O1xuICB9XG5cbiAgZ2V0IG9wdGlvbnMoKTogQXhpc09wdGlvbnMge1xuICAgIHJldHVybiB0aGlzLl9vcHRpb25zO1xuICB9XG5cbiAgZ2V0IG9yaWdpbkRvbWFpbigpOiBBcnJheTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5fb3JpZ2luRG9tYWluXG4gIH1cblxuICBwdWJsaWMgZGVmYXVsdEZvcm1hdHRlcigpIHtcbiAgICByZXR1cm4gdGhpcy5kZWZhdWx0Rm9ybWF0dGVycy5nZXQodGhpcy5vcHRpb25zLnNjYWxlVHlwZS50eXBlKTtcbiAgfVxuXG4gIHB1YmxpYyBkZWZhdWx0U2NhbGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZGVmYXVsdFNjYWxlcy5nZXQodGhpcy5vcHRpb25zLnNjYWxlVHlwZS50eXBlKTtcbiAgfVxuXG5cbn1cbiJdfQ==
122
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXhpcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jaGFydC9jb3JlL2F4aXMvYXhpcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sbUNBQW1DLENBQUM7QUFHbEUsT0FBTyxLQUFLLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFFekIsT0FBTyxFQUFDLGVBQWUsRUFBRSxlQUFlLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUN2RSxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDbEQsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBRXRELE1BQU0sT0FBTyxJQUFJO0lBNEJmLFlBQVksTUFBb0I7UUF4QnhCLGNBQVMsR0FBcUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFJckMsa0JBQWEsR0FBcUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFJekMsc0JBQWlCLEdBQUcsSUFBSSxHQUFHLEVBQWtCO2FBQ2xELEdBQUcsQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDekMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQzthQUM5QyxHQUFHLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ25DLEdBQUcsQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDdEMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUNuQyxHQUFHLENBQUMsU0FBUyxDQUFDLElBQUksRUFB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S0FBSyxDQUFDO1lBQ3BDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFekMsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUM7SUFDMUIsQ0FBQztJQUVELElBQUksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxJQUFJLFdBQVc7UUFDYixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDM0IsQ0FBQztJQUVELElBQUksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBRUQsSUFBSSxVQUFVO1FBQ1osT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzNCLENBQUM7SUFFRCxJQUFJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckIsQ0FBQztJQUVELElBQUksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBRUQsSUFBSSxZQUFZO1FBQ2QsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzVCLENBQUM7SUFFTSxnQkFBZ0I7UUFDckIsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFTSxZQUFZO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0QsQ0FBQztDQUdGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJQ2hhcnRDb25maWd9IGZyb20gJy4uLy4uL21vZGVsL2ktY2hhcnQtY29uZmlnJztcbmltcG9ydCB7QXhpc09yaWVudGF0aW9ufSBmcm9tICcuLi8uLi9tb2RlbC9lbnVtL2F4aXMtb3JpZW50YXRpb24nO1xuaW1wb3J0IHtTZXJpZXN9IGZyb20gJy4uLy4uL21vZGVsL3Nlcmllcyc7XG5pbXBvcnQge0Jhc2VQb2ludH0gZnJvbSAnLi4vLi4vbW9kZWwvYmFzZS1wb2ludCc7XG5pbXBvcnQgKiBhcyBkMyBmcm9tICdkMyc7XG5pbXBvcnQge0F4aXNPcHRpb25zfSBmcm9tICcuLi8uLi9tb2RlbC9heGlzLW9wdGlvbnMnO1xuaW1wb3J0IHtBeGlzU2l6ZUJ1aWxkZXIsIEV4dHJlbWVzQnVpbGRlcn0gZnJvbSAnLi9idWlsZGVycy9wdWJsaWMtYXBpJztcbmltcG9ydCB7Z2VuZXJhdGVUaWNrc30gZnJvbSAnLi4vdXRpbHMvcHVibGljLWFwaSc7XG5pbXBvcnQge1NjYWxlVHlwZX0gZnJvbSAnLi4vLi4vbW9kZWwvZW51bS9zY2FsZS10eXBlJztcblxuZXhwb3J0IGNsYXNzIEF4aXMge1xuICBwcml2YXRlIGNoYXJ0Q29uZmlnOiBJQ2hhcnRDb25maWc7XG4gIHByaXZhdGUgX29yaWVudGF0aW9uOiBBeGlzT3JpZW50YXRpb247XG4gIHByaXZhdGUgX2luZGV4OiBudW1iZXI7XG4gIHByaXZhdGUgX2V4dHJlbWVzOiBbbnVtYmVyLCBudW1iZXJdID0gWzAsIDBdO1xuICBwcml2YXRlIF9zZWxmU2l6ZTogbnVtYmVyO1xuICBwcml2YXRlIF90aWNrc1ZhbHVlczogbnVtYmVyW107XG4gIHByaXZhdGUgX29wdGlvbnM6IEF4aXNPcHRpb25zO1xuICBwcml2YXRlIF9vcmlnaW5Eb21haW46IFtudW1iZXIsIG51bWJlcl0gPSBbMCwgMF07XG5cbiAgcHJpdmF0ZSBfc2NhbGU6IGFueTtcblxuICBwcml2YXRlIGRlZmF1bHRGb3JtYXR0ZXJzID0gbmV3IE1hcDxTY2FsZVR5cGUsIGFueT4oKVxuICAgIC5zZXQoU2NhbGVUeXBlLmxpbmVhciwgZDMuZm9ybWF0KCcsLjV+cicpKVxuICAgIC5zZXQoU2NhbGVUeXBlLnRpbWUsIGQzLnRpbWVGb3JtYXQoJyVkLiVtLiVZJykpXG4gICAgLnNldChTY2FsZVR5cGUubG9nLCBkMy5mb3JtYXQoJ35zJykpXG4gICAgLnNldChTY2FsZVR5cGUuc3ltbG9nLCBkMy5mb3JtYXQoJ35zJykpXG4gICAgLnNldChTY2FsZVR5cGUucG93LCBkMy5mb3JtYXQoJ35zJykpXG4gICAgLnNldChTY2FsZVR5cGUuc3FydCwgZDMuZm9ybWF0KCd+cycpKTtcblxuICBwcml2YXRlIGRlZmF1bHRTY2FsZXMgPSBuZXcgTWFwPFNjYWxlVHlwZSwgYW55PigpXG4gICAgLnNldChTY2FsZVR5cGUubGluZWFyLCBkMy5zY2FsZUxpbmVhcilcbiAgICAuc2V0KFNjYWxlVHlwZS5sb2csIGQzLnNjYWxlTG9nKVxuICAgIC5zZXQoU2NhbGVUeXBlLnN5bWxvZywgZDMuc2NhbGVTeW1sb2cpXG4gICAgLnNldChTY2FsZVR5cGUucG93LCBkMy5zY2FsZVBvdylcbiAgICAuc2V0KFNjYWxlVHlwZS5zcXJ0LCBkMy5zY2FsZVNxcnQpXG4gICAgLnNldChTY2FsZVR5cGUudGltZSwgZDMuc2NhbGVUaW1lKTtcblxuICBjb25zdHJ1Y3Rvcihjb25maWc6IElDaGFydENvbmZpZykge1xuICAgIHRoaXMuY2hhcnRDb25maWcgPSBjb25maWc7XG4gIH1cblxuICAvKipcbiAgICogRmFjdG9yeSBmb3IgY3JlYXRpbmcgeCx5IGF4ZXNcbiAgICogQHBhcmFtIHtBeGlzT3JpZW50YXRpb259IG9yaWVudGF0aW9uXG4gICAqIEF4aXMgdHlwZVxuICAgKiBAcGFyYW0ge0lDaGFydENvbmZpZ30gY29uZmlnXG4gICAqIENoYXJ0IGNvbmZpZ1xuICAgKiBAcGFyYW0ge251bWJlcn0gaW5kZXhcbiAgICogTmV3IGdlbmVyYXRlZCBheGlzXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGNyZWF0ZUF4aXMoXG4gICAgb3JpZW50YXRpb246IEF4aXNPcmllbnRhdGlvbixcbiAgICBjb25maWc6IElDaGFydENvbmZpZyxcbiAgICBpbmRleDogbnVtYmVyXG4gICk6IEF4aXMge1xuICAgIGNvbnN0IGF4aXMgPSBuZXcgQXhpcyhjb25maWcpO1xuICAgIGF4aXMuc2V0TG9jYXRlKG9yaWVudGF0aW9uKTtcbiAgICBheGlzLnNldEluZGV4KGluZGV4KTtcblxuICAgIGF4aXMuc2V0T3B0aW9ucygpO1xuICAgIGF4aXMuc2V0RXh0cmVtZXMoKTtcbiAgICBheGlzLnNldFRpY2tzVmFsdWVzKCk7XG4gICAgYXhpcy5zZXRTZWxmU2l6ZSgpO1xuXG4gICAgcmV0dXJuIGF4aXM7XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIHtvcmllbnRhdGlvbn0gb3JpZW50YXRpb25cbiAgICogU2V0IGxvY2F0ZSBheGlzIHggb3IgeVxuICAgKi9cbiAgcHJpdmF0ZSBzZXRMb2NhdGUob3JpZW50YXRpb246IEF4aXNPcmllbnRhdGlvbik6IHZvaWQge1xuICAgIHRoaXMuX29yaWVudGF0aW9uID0gb3JpZW50YXRpb247XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IGluZGV4XG4gICAqIEluZGV4IGF4aXNcbiAgICovXG4gIHByaXZhdGUgc2V0SW5kZXgoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuX2luZGV4ID0gaW5kZXg7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybiB7QXJyYXk8U2VyaWVzPEJhc2VQb2ludD4+fVxuICAgKiBMaW5rZWQgc2VyaWVzXG4gICAqL1xuICBwdWJsaWMgbGlua2VkU2VyaWVzKCk6IEFycmF5PFNlcmllczxCYXNlUG9pbnQ+PiB7XG4gICAgY29uc3QgbGlua2VkRmlsdGVyID0gKHNlcmllOiBTZXJpZXM8QmFzZVBvaW50PikgPT5cbiAgICAgIHNlcmllW1xuICAgICAgICB0aGlzLl9vcmllbnRhdGlvbiA9PT0gQXhpc09yaWVudGF0aW9uLnkgPyAneUF4aXNJbmRleCcgOiAneEF4aXNJbmRleCdcbiAgICAgICAgXSA9PT0gdGhpcy5faW5kZXg7XG5cbiAgICByZXR1cm4gdGhpcy5jaGFydENvbmZpZz8uc2VyaWVzLmZpbHRlcihsaW5rZWRGaWx0ZXIpO1xuICB9XG5cbiAgcHVibGljIHNldEV4dHJlbWVzKCk6IHZvaWQge1xuICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXcgRXh0cmVtZXNCdWlsZGVyKCk7XG4gICAgdGhpcy5fZXh0cmVtZXMgPSBidWlsZGVyLmJ1aWxkKHRoaXMpO1xuICB9XG5cbiAgcHVibGljIHNldE9yaWdpbkRvbWFpbihkb21haW46IFtudW1iZXIsIG51bWJlcl0pIHtcbiAgICB0aGlzLl9vcmlnaW5Eb21haW4gPSBkb21haW47XG4gIH1cblxuICBwdWJsaWMgc2V0U2NhbGUoc2NhbGU6IGFueSkge1xuICAgIHRoaXMuX3NjYWxlID0gc2NhbGU7XG4gIH1cblxuICBwcml2YXRlIHNldFNlbGZTaXplKCk6IHZvaWQge1xuICAgIHRoaXMuX3NlbGZTaXplID0gbmV3IEF4aXNTaXplQnVpbGRlcigpLmJ1aWxkKHRoaXMpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRUaWNrc1ZhbHVlcygpOiB2b2lkIHtcbiAgICB0aGlzLl90aWNrc1ZhbHVlcyA9IGdlbmVyYXRlVGlja3ModGhpcy5fZXh0cmVtZXMpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRPcHRpb25zKCk6IHZvaWQge1xuICAgIGNvbnN0IG9wdGlvbnMgPVxuICAgICAgdGhpcy5vcmllbnRhdGlvbiA9PT0gQXhpc09yaWVudGF0aW9uLnhcbiAgICAgICAgPyB0aGlzLmNoYXJ0Q29uZmlnLnhBeGlzW3RoaXMuaW5kZXhdXG4gICAgICAgIDogdGhpcy5jaGFydENvbmZpZy55QXhpc1t0aGlzLmluZGV4XTtcblxuICAgIHRoaXMuX29wdGlvbnMgPSBvcHRpb25zO1xuICB9XG5cbiAgZ2V0IHNjYWxlKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuX3NjYWxlO1xuICB9XG5cbiAgZ2V0IGV4dHJlbWVzKCk6IEFycmF5PG51bWJlcj4ge1xuICAgIHJldHVybiB0aGlzLl9leHRyZW1lcztcbiAgfVxuXG4gIGdldCBvcmllbnRhdGlvbigpOiBBeGlzT3JpZW50YXRpb24ge1xuICAgIHJldHVybiB0aGlzLl9vcmllbnRhdGlvbjtcbiAgfVxuXG4gIGdldCBzZWxmU2l6ZSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9zZWxmU2l6ZTtcbiAgfVxuXG4gIGdldCB0aWNrVmFsdWVzKCk6IG51bWJlcltdIHtcbiAgICByZXR1cm4gdGhpcy5fdGlja3NWYWx1ZXM7XG4gIH1cblxuICBnZXQgaW5kZXgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5faW5kZXg7XG4gIH1cblxuICBnZXQgb3B0aW9ucygpOiBBeGlzT3B0aW9ucyB7XG4gICAgcmV0dXJuIHRoaXMuX29wdGlvbnM7XG4gIH1cblxuICBnZXQgb3JpZ2luRG9tYWluKCk6IFtudW1iZXIsIG51bWJlcl0ge1xuICAgIHJldHVybiB0aGlzLl9vcmlnaW5Eb21haW47XG4gIH1cblxuICBwdWJsaWMgZGVmYXVsdEZvcm1hdHRlcigpIHtcbiAgICByZXR1cm4gdGhpcy5kZWZhdWx0Rm9ybWF0dGVycy5nZXQodGhpcy5vcHRpb25zLnNjYWxlVHlwZS50eXBlKTtcbiAgfVxuXG4gIHB1YmxpYyBkZWZhdWx0U2NhbGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZGVmYXVsdFNjYWxlcy5nZXQodGhpcy5vcHRpb25zLnNjYWxlVHlwZS50eXBlKTtcbiAgfVxuXG5cbn1cbiJdfQ==
@@ -1,34 +1,144 @@
1
1
  import { Directive, Input, } from '@angular/core';
2
+ import { BrushType } from '../model/enum/brush-type';
3
+ import * as d3 from 'd3';
4
+ import { BrushMessage } from '../model/i-broadcast-message';
5
+ import { filter, takeWhile } from 'rxjs';
2
6
  import * as i0 from "@angular/core";
3
7
  import * as i1 from "../service/brush.service";
4
8
  import * as i2 from "../service/chart.service";
5
9
  export class BrushableDirective {
6
- constructor(brushService, chartService, element) {
10
+ constructor(brushService, chartService, element, zone) {
7
11
  this.brushService = brushService;
8
12
  this.chartService = chartService;
9
13
  this.element = element;
14
+ this.zone = zone;
15
+ this.brushMap = new Map()
16
+ .set(BrushType.x, d3.brushX())
17
+ .set(BrushType.y, d3.brushY());
18
+ this._alive = true;
19
+ this._container = d3.select(this.element.nativeElement);
20
+ }
21
+ ngOnInit() {
22
+ this.brushService.brushDomain.pipe(takeWhile(() => this._alive), filter((brush) => brush.chartId !== this.config.id)).subscribe((brush) => {
23
+ this._container.call(this.brush.move, [
24
+ Math.floor(brush.selection[0]),
25
+ Math.floor(brush.selection[1]),
26
+ ].map(this.axis.scale));
27
+ });
28
+ }
29
+ ngOnDestroy() {
30
+ this._alive = false;
31
+ }
32
+ ngAfterViewInit() {
10
33
  }
11
- ngOnInit() { }
12
- ngAfterViewInit() { }
13
34
  ngOnChanges(changes) {
14
35
  if (changes.hasOwnProperty('config')) {
15
- this.brushService.clearPreviousSelection();
36
+ this.clearPreviousSelection();
16
37
  }
17
38
  if (this.config?.brush?.enable) {
18
- this.brushService.applyBrush(this.element, this.config, this.brushScale);
39
+ this.applyBrush(this.config, this.axis.scale);
19
40
  }
20
41
  }
42
+ applyBrush(config, brushScale) {
43
+ this.brush?.on('start brush end', null);
44
+ if (config.brush?.enable) {
45
+ this.brush = this.brushMap.get(config?.brush?.type ?? BrushType.x);
46
+ this.brush.on('start brush end', (_) => {
47
+ if (_.sourceEvent) {
48
+ if (!_.selection)
49
+ return;
50
+ const [from, to] = _.selection;
51
+ if (to - from === 0) {
52
+ const selection = this.selection?.map(brushScale) ??
53
+ [config.brush?.from, config.brush?.to].map(brushScale);
54
+ const halfBrushHeight = (selection[1] - selection[0]) / 2;
55
+ const invertedSelection = [
56
+ from - halfBrushHeight,
57
+ to + halfBrushHeight,
58
+ ].map(brushScale.invert);
59
+ if (invertedSelection[1] - invertedSelection[0] >
60
+ config.brush?.max) {
61
+ this._container.call(this.brush.move, [
62
+ Math.floor(invertedSelection[0]),
63
+ Math.floor(invertedSelection[0] + config.brush?.max),
64
+ ].map(brushScale));
65
+ return;
66
+ }
67
+ if (invertedSelection[1] - invertedSelection[0] <
68
+ config.brush?.min) {
69
+ this._container.call(this.brush.move, [
70
+ Math.floor(invertedSelection[0]),
71
+ Math.ceil(invertedSelection[0] + config.brush?.min),
72
+ ].map(brushScale));
73
+ return;
74
+ }
75
+ this._container.call(this.brush.move, [
76
+ from - halfBrushHeight,
77
+ to + halfBrushHeight,
78
+ ]);
79
+ return;
80
+ }
81
+ if (brushScale.invert(to) - brushScale.invert(from) >
82
+ config.brush?.max) {
83
+ this._container.call(this.brush.move, this.selection
84
+ ? [
85
+ this.selection[0],
86
+ this.selection[0] + config.brush?.max,
87
+ ].map(brushScale)
88
+ : [config.brush?.from, config.brush?.to].map(brushScale));
89
+ return;
90
+ }
91
+ if (brushScale.invert(to) - brushScale.invert(from) <
92
+ config.brush?.min) {
93
+ this._container.call(this.brush.move, this.selection
94
+ ? [
95
+ this.selection[0],
96
+ this.selection[0] + config.brush?.min,
97
+ ].map(brushScale)
98
+ : [config.brush?.from, config.brush?.to].map(brushScale));
99
+ return;
100
+ }
101
+ if (_.sourceEvent instanceof MouseEvent) {
102
+ this.selection = _.selection.map(brushScale.invert);
103
+ }
104
+ const brushMessage = new BrushMessage({
105
+ chartId: this.config.id,
106
+ selection: [brushScale.invert(from), brushScale.invert(to)],
107
+ });
108
+ this.brushService.setBrush(brushMessage);
109
+ }
110
+ });
111
+ this.zone.runOutsideAngular(() => {
112
+ setTimeout(() => {
113
+ this._container.call(this.brush);
114
+ let domain = brushScale.domain();
115
+ if (config?.brush?.from) {
116
+ domain[0] = config.brush.from;
117
+ }
118
+ if (config?.brush?.to) {
119
+ domain[1] = config.brush.to;
120
+ }
121
+ this._container.call(this.brush.move, this.selection
122
+ ? this.selection.map(brushScale)
123
+ : domain.map(brushScale), {});
124
+ }, 0);
125
+ });
126
+ }
127
+ }
128
+ clearPreviousSelection() {
129
+ this.selection = null;
130
+ }
21
131
  }
22
- BrushableDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: BrushableDirective, deps: [{ token: i1.BrushService }, { token: i2.ChartService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
23
- BrushableDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.0.2", type: BrushableDirective, selector: "[tetaBrushable]", inputs: { config: "config", brushScale: "brushScale" }, usesOnChanges: true, ngImport: i0 });
132
+ BrushableDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: BrushableDirective, deps: [{ token: i1.BrushService }, { token: i2.ChartService }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });
133
+ BrushableDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.0.2", type: BrushableDirective, selector: "[tetaBrushable]", inputs: { config: "config", axis: "axis" }, usesOnChanges: true, ngImport: i0 });
24
134
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: BrushableDirective, decorators: [{
25
135
  type: Directive,
26
136
  args: [{
27
137
  selector: '[tetaBrushable]',
28
138
  }]
29
- }], ctorParameters: function () { return [{ type: i1.BrushService }, { type: i2.ChartService }, { type: i0.ElementRef }]; }, propDecorators: { config: [{
139
+ }], ctorParameters: function () { return [{ type: i1.BrushService }, { type: i2.ChartService }, { type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { config: [{
30
140
  type: Input
31
- }], brushScale: [{
141
+ }], axis: [{
32
142
  type: Input
33
143
  }] } });
34
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJ1c2hhYmxlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jaGFydC9kaXJlY3RpdmVzL2JydXNoYWJsZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFFVCxLQUFLLEdBR04sTUFBTSxlQUFlLENBQUM7Ozs7QUFRdkIsTUFBTSxPQUFPLGtCQUFrQjtJQUk3QixZQUNVLFlBQTBCLEVBQzFCLFlBQTBCLEVBQzFCLE9BQW1CO1FBRm5CLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLFlBQU8sR0FBUCxPQUFPLENBQVk7SUFDMUIsQ0FBQztJQUVKLFFBQVEsS0FBSSxDQUFDO0lBQ2IsZUFBZSxLQUFJLENBQUM7SUFFcEIsV0FBVyxDQUFDLE9BQXNCO1FBRWhDLElBQUcsT0FBTyxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUNuQyxJQUFJLENBQUMsWUFBWSxDQUFDLHNCQUFzQixFQUFFLENBQUM7U0FDNUM7UUFFRCxJQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRTtZQUM3QixJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FDMUIsSUFBSSxDQUFDLE9BQU8sRUFDWixJQUFJLENBQUMsTUFBTSxFQUNYLElBQUksQ0FBQyxVQUFVLENBQ2hCLENBQUM7U0FDSDtJQUNILENBQUM7OytHQTFCVSxrQkFBa0I7bUdBQWxCLGtCQUFrQjsyRkFBbEIsa0JBQWtCO2tCQUg5QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxpQkFBaUI7aUJBQzVCO3VKQUVVLE1BQU07c0JBQWQsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBTaW1wbGVDaGFuZ2VzLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElDaGFydENvbmZpZyB9IGZyb20gJy4uL21vZGVsL2ktY2hhcnQtY29uZmlnJztcbmltcG9ydCB7IEJydXNoU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2UvYnJ1c2guc2VydmljZSc7XG5pbXBvcnQgeyBDaGFydFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlL2NoYXJ0LnNlcnZpY2UnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbdGV0YUJydXNoYWJsZV0nLFxufSlcbmV4cG9ydCBjbGFzcyBCcnVzaGFibGVEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xuICBASW5wdXQoKSBjb25maWc6IElDaGFydENvbmZpZztcbiAgQElucHV0KCkgYnJ1c2hTY2FsZTogYW55O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYnJ1c2hTZXJ2aWNlOiBCcnVzaFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjaGFydFNlcnZpY2U6IENoYXJ0U2VydmljZSxcbiAgICBwcml2YXRlIGVsZW1lbnQ6IEVsZW1lbnRSZWZcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCkge31cbiAgbmdBZnRlclZpZXdJbml0KCkge31cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG5cbiAgICBpZihjaGFuZ2VzLmhhc093blByb3BlcnR5KCdjb25maWcnKSkge1xuICAgICAgdGhpcy5icnVzaFNlcnZpY2UuY2xlYXJQcmV2aW91c1NlbGVjdGlvbigpO1xuICAgIH1cblxuICAgIGlmKHRoaXMuY29uZmlnPy5icnVzaD8uZW5hYmxlKSB7XG4gICAgICB0aGlzLmJydXNoU2VydmljZS5hcHBseUJydXNoKFxuICAgICAgICB0aGlzLmVsZW1lbnQsXG4gICAgICAgIHRoaXMuY29uZmlnLFxuICAgICAgICB0aGlzLmJydXNoU2NhbGVcbiAgICAgICk7XG4gICAgfVxuICB9XG59XG4iXX0=
144
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJ1c2hhYmxlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jaGFydC9kaXJlY3RpdmVzL2JydXNoYWJsZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFFVCxLQUFLLEdBR04sTUFBTSxlQUFlLENBQUM7QUFLdkIsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ25ELE9BQU8sS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ3pCLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUMxRCxPQUFPLEVBQUMsTUFBTSxFQUFFLFNBQVMsRUFBQyxNQUFNLE1BQU0sQ0FBQzs7OztBQUt2QyxNQUFNLE9BQU8sa0JBQWtCO0lBWTdCLFlBQ1UsWUFBMEIsRUFDMUIsWUFBMEIsRUFDMUIsT0FBbUIsRUFDbkIsSUFBWTtRQUhaLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLFlBQU8sR0FBUCxPQUFPLENBQVk7UUFDbkIsU0FBSSxHQUFKLElBQUksQ0FBUTtRQVZkLGFBQVEsR0FBRyxJQUFJLEdBQUcsRUFBb0M7YUFDM0QsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDO2FBQzdCLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQ3pCLFdBQU0sR0FBRyxJQUFJLENBQUM7UUFTcEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQ2hDLFNBQVMsQ0FB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QUFDLENBQUMsQ0FBQztZQUNSLENBQUMsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDO0lBRUQsc0JBQXNCO1FBQ3BCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO0lBQ3hCLENBQUM7OytHQXJMVSxrQkFBa0I7bUdBQWxCLGtCQUFrQjsyRkFBbEIsa0JBQWtCO2tCQUg5QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxpQkFBaUI7aUJBQzVCOzRLQUVVLE1BQU07c0JBQWQsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIElucHV0LCBOZ1pvbmUsIE9uQ2hhbmdlcywgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIFNpbXBsZUNoYW5nZXMsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtJQ2hhcnRDb25maWd9IGZyb20gJy4uL21vZGVsL2ktY2hhcnQtY29uZmlnJztcbmltcG9ydCB7QnJ1c2hTZXJ2aWNlfSBmcm9tICcuLi9zZXJ2aWNlL2JydXNoLnNlcnZpY2UnO1xuaW1wb3J0IHtDaGFydFNlcnZpY2V9IGZyb20gJy4uL3NlcnZpY2UvY2hhcnQuc2VydmljZSc7XG5pbXBvcnQge0F4aXN9IGZyb20gJy4uL2NvcmUvYXhpcy9heGlzJztcbmltcG9ydCB7QnJ1c2hUeXBlfSBmcm9tICcuLi9tb2RlbC9lbnVtL2JydXNoLXR5cGUnO1xuaW1wb3J0ICogYXMgZDMgZnJvbSAnZDMnO1xuaW1wb3J0IHtCcnVzaE1lc3NhZ2V9IGZyb20gJy4uL21vZGVsL2ktYnJvYWRjYXN0LW1lc3NhZ2UnO1xuaW1wb3J0IHtmaWx0ZXIsIHRha2VXaGlsZX0gZnJvbSAncnhqcyc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1t0ZXRhQnJ1c2hhYmxlXScsXG59KVxuZXhwb3J0IGNsYXNzIEJydXNoYWJsZURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uRGVzdHJveSwgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkNoYW5nZXMge1xuICBASW5wdXQoKSBjb25maWc6IElDaGFydENvbmZpZztcbiAgQElucHV0KCkgYXhpczogQXhpcztcblxuICBwcml2YXRlIHNlbGVjdGlvbjogbnVtYmVyW107XG4gIHByaXZhdGUgYnJ1c2g6IGQzLkJydXNoQmVoYXZpb3I8YW55PjtcbiAgcHJpdmF0ZSBicnVzaE1hcCA9IG5ldyBNYXA8QnJ1c2hUeXBlLCBkMy5CcnVzaEJlaGF2aW9yPGFueT4+KClcbiAgICAuc2V0KEJydXNoVHlwZS54LCBkMy5icnVzaFgoKSlcbiAgICAuc2V0KEJydXNoVHlwZS55LCBkMy5icnVzaFkoKSk7XG4gIHByaXZhdGUgX2FsaXZlID0gdHJ1ZTtcbiAgcHJpdmF0ZSBfY29udGFpbmVyO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYnJ1c2hTZXJ2aWNlOiBCcnVzaFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjaGFydFNlcnZpY2U6IENoYXJ0U2VydmljZSxcbiAgICBwcml2YXRlIGVsZW1lbnQ6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSB6b25lOiBOZ1pvbmVcbiAgKSB7XG4gICAgdGhpcy5fY29udGFpbmVyID0gZDMuc2VsZWN0KHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50KTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuYnJ1c2hTZXJ2aWNlLmJydXNoRG9tYWluLnBpcGUoXG4gICAgICB0YWtlV2hpbGUoKCkgPT4gdGhpcy5fYWxpdmUpLFxuICAgICAgZmlsdGVyKChicnVzaCkgPT4gYnJ1c2guY2hhcnRJZCAhPT0gdGhpcy5jb25maWcuaWQpXG4gICAgKS5zdWJzY3JpYmUoKGJydXNoKSA9PiB7XG4gICAgICB0aGlzLl9jb250YWluZXIuY2FsbChcbiAgICAgICAgdGhpcy5icnVzaC5tb3ZlLFxuICAgICAgICBbXG4gICAgICAgICAgTWF0aC5mbG9vcihicnVzaC5zZWxlY3Rpb25bMF0pLFxuICAgICAgICAgIE1hdGguZmxvb3IoYnJ1c2guc2VsZWN0aW9uWzFdKSxcbiAgICAgICAgXS5tYXAodGhpcy5heGlzLnNjYWxlKVxuICAgICAgKTtcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuX2FsaXZlID0gZmFsc2U7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKGNoYW5nZXMuaGFzT3duUHJvcGVydHkoJ2NvbmZpZycpKSB7XG4gICAgICB0aGlzLmNsZWFyUHJldmlvdXNTZWxlY3Rpb24oKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jb25maWc/LmJydXNoPy5lbmFibGUpIHtcbiAgICAgIHRoaXMuYXBwbHlCcnVzaChcbiAgICAgICAgdGhpcy5jb25maWcsXG4gICAgICAgIHRoaXMuYXhpcy5zY2FsZVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBhcHBseUJydXNoKGNvbmZpZzogSUNoYXJ0Q29uZmlnLCBicnVzaFNjYWxlOiBhbnkpIHtcbiAgICB0aGlzLmJydXNoPy5vbignc3RhcnQgYnJ1c2ggZW5kJywgbnVsbCk7XG4gICAgaWYgKGNvbmZpZy5icnVzaD8uZW5hYmxlKSB7XG4gICAgICB0aGlzLmJydXNoID0gdGhpcy5icnVzaE1hcC5nZXQoY29uZmlnPy5icnVzaD8udHlwZSA/PyBCcnVzaFR5cGUueCk7XG4gICAgICB0aGlzLmJydXNoLm9uKCdzdGFydCBicnVzaCBlbmQnLCAoXzogZDMuRDNCcnVzaEV2ZW50PGFueT4pID0+IHtcbiAgICAgICAgaWYgKF8uc291cmNlRXZlbnQpIHtcbiAgICAgICAgICBpZiAoIV8uc2VsZWN0aW9uKSByZXR1cm47XG4gICAgICAgICAgY29uc3QgW2Zyb20sIHRvXSA9IF8uc2VsZWN0aW9uIGFzIG51bWJlcltdO1xuICAgICAgICAgIGlmICh0byAtIGZyb20gPT09IDApIHtcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdGlvbjogbnVtYmVyW10gPVxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbj8ubWFwKGJydXNoU2NhbGUpID8/XG4gICAgICAgICAgICAgIFtjb25maWcuYnJ1c2g/LmZyb20sIGNvbmZpZy5icnVzaD8udG9dLm1hcChicnVzaFNjYWxlKTtcbiAgICAgICAgICAgIGNvbnN0IGhhbGZCcnVzaEhlaWdodCA9IChzZWxlY3Rpb25bMV0gLSBzZWxlY3Rpb25bMF0pIC8gMjtcbiAgICAgICAgICAgIGNvbnN0IGludmVydGVkU2VsZWN0aW9uOiBudW1iZXJbXSA9IFtcbiAgICAgICAgICAgICAgZnJvbSAtIGhhbGZCcnVzaEhlaWdodCxcbiAgICAgICAgICAgICAgdG8gKyBoYWxmQnJ1c2hIZWlnaHQsXG4gICAgICAgICAgICBdLm1hcChicnVzaFNjYWxlLmludmVydCk7XG5cbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgaW52ZXJ0ZWRTZWxlY3Rpb25bMV0gLSBpbnZlcnRlZFNlbGVjdGlvblswXSA+XG4gICAgICAgICAgICAgIGNvbmZpZy5icnVzaD8ubWF4XG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgdGhpcy5fY29udGFpbmVyLmNhbGwoXG4gICAgICAgICAgICAgICAgdGhpcy5icnVzaC5tb3ZlLFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgIE1hdGguZmxvb3IoaW52ZXJ0ZWRTZWxlY3Rpb25bMF0pLFxuICAgICAgICAgICAgICAgICAgTWF0aC5mbG9vcihpbnZlcnRlZFNlbGVjdGlvblswXSArIGNvbmZpZy5icnVzaD8ubWF4KSxcbiAgICAgICAgICAgICAgICBdLm1hcChicnVzaFNjYWxlKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgaW52ZXJ0ZWRTZWxlY3Rpb25bMV0gLSBpbnZlcnRlZFNlbGVjdGlvblswXSA8XG4gICAgICAgICAgICAgIGNvbmZpZy5icnVzaD8ubWluXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgdGhpcy5fY29udGFpbmVyLmNhbGwoXG4gICAgICAgICAgICAgICAgdGhpcy5icnVzaC5tb3ZlLFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgIE1hdGguZmxvb3IoaW52ZXJ0ZWRTZWxlY3Rpb25bMF0pLFxuICAgICAgICAgICAgICAgICAgTWF0aC5jZWlsKGludmVydGVkU2VsZWN0aW9uWzBdICsgY29uZmlnLmJydXNoPy5taW4pLFxuICAgICAgICAgICAgICAgIF0ubWFwKGJydXNoU2NhbGUpXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5fY29udGFpbmVyLmNhbGwodGhpcy5icnVzaC5tb3ZlLCBbXG4gICAgICAgICAgICAgIGZyb20gLSBoYWxmQnJ1c2hIZWlnaHQsXG4gICAgICAgICAgICAgIHRvICsgaGFsZkJydXNoSGVpZ2h0LFxuICAgICAgICAgICAgXSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgYnJ1c2hTY2FsZS5pbnZlcnQodG8pIC0gYnJ1c2hTY2FsZS5pbnZlcnQoZnJvbSkgPlxuICAgICAgICAgICAgY29uZmlnLmJydXNoPy5tYXhcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMuX2NvbnRhaW5lci5jYWxsKFxuICAgICAgICAgICAgICB0aGlzLmJydXNoLm1vdmUsXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uXG4gICAgICAgICAgICAgICAgPyBbXG4gICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvblswXSxcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uWzBdICsgY29uZmlnLmJydXNoPy5tYXgsXG4gICAgICAgICAgICAgICAgXS5tYXAoYnJ1c2hTY2FsZSlcbiAgICAgICAgICAgICAgICA6IFtjb25maWcuYnJ1c2g/LmZyb20sIGNvbmZpZy5icnVzaD8udG9dLm1hcChicnVzaFNjYWxlKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBicnVzaFNjYWxlLmludmVydCh0bykgLSBicnVzaFNjYWxlLmludmVydChmcm9tKSA8XG4gICAgICAgICAgICBjb25maWcuYnJ1c2g/Lm1pblxuICAgICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5fY29udGFpbmVyLmNhbGwoXG4gICAgICAgICAgICAgIHRoaXMuYnJ1c2gubW92ZSxcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25cbiAgICAgICAgICAgICAgICA/IFtcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uWzBdLFxuICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25bMF0gKyBjb25maWcuYnJ1c2g/Lm1pbixcbiAgICAgICAgICAgICAgICBdLm1hcChicnVzaFNjYWxlKVxuICAgICAgICAgICAgICAgIDogW2NvbmZpZy5icnVzaD8uZnJvbSwgY29uZmlnLmJydXNoPy50b10ubWFwKGJydXNoU2NhbGUpXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChfLnNvdXJjZUV2ZW50IGluc3RhbmNlb2YgTW91c2VFdmVudCkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb24gPSBfLnNlbGVjdGlvbi5tYXAoYnJ1c2hTY2FsZS5pbnZlcnQpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IGJydXNoTWVzc2FnZSA9IG5ldyBCcnVzaE1lc3NhZ2Uoe1xuICAgICAgICAgICAgY2hhcnRJZDogdGhpcy5jb25maWcuaWQsXG4gICAgICAgICAgICBzZWxlY3Rpb246IFticnVzaFNjYWxlLmludmVydChmcm9tKSwgYnJ1c2hTY2FsZS5pbnZlcnQodG8pXSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aGlzLmJydXNoU2VydmljZS5zZXRCcnVzaChicnVzaE1lc3NhZ2UpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5fY29udGFpbmVyLmNhbGwodGhpcy5icnVzaCk7XG5cbiAgICAgICAgICBsZXQgZG9tYWluID0gYnJ1c2hTY2FsZS5kb21haW4oKTtcblxuICAgICAgICAgIGlmIChjb25maWc/LmJydXNoPy5mcm9tKSB7XG4gICAgICAgICAgICBkb21haW5bMF0gPSBjb25maWcuYnJ1c2guZnJvbTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoY29uZmlnPy5icnVzaD8udG8pIHtcbiAgICAgICAgICAgIGRvbWFpblsxXSA9IGNvbmZpZy5icnVzaC50bztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLl9jb250YWluZXIuY2FsbChcbiAgICAgICAgICAgIHRoaXMuYnJ1c2gubW92ZSxcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uXG4gICAgICAgICAgICAgID8gdGhpcy5zZWxlY3Rpb24ubWFwKGJydXNoU2NhbGUpXG4gICAgICAgICAgICAgIDogZG9tYWluLm1hcChicnVzaFNjYWxlKSxcbiAgICAgICAgICAgIHt9XG4gICAgICAgICAgKTtcbiAgICAgICAgfSwgMCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBjbGVhclByZXZpb3VzU2VsZWN0aW9uKCkge1xuICAgIHRoaXMuc2VsZWN0aW9uID0gbnVsbDtcbiAgfVxufVxuIl19
@@ -36,6 +36,7 @@ export class DraggablePointDirective {
36
36
  deltaX,
37
37
  deltaY
38
38
  })) {
39
+ this.startPosition = null;
39
40
  return;
40
41
  }
41
42
  if (this.transformCache) {
@@ -137,4 +138,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImpor
137
138
  type: HostListener,
138
139
  args: ['window:touchmove', ['$event']]
139
140
  }] } });
140
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhZ2dhYmxlLXBvaW50LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jaGFydC9kaXJlY3RpdmVzL2RyYWdnYWJsZS1wb2ludC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBYyxZQUFZLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDL0YsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLCtCQUErQixDQUFDOztBQU01RCxNQUFNLE9BQU8sdUJBQXVCO0lBb0JsQyxZQUFvQixXQUF1QjtRQUF2QixnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQUdqQyxjQUFTLEdBQUcsSUFBSSxZQUFZLEVBR2xDLENBQUM7UUFFSyxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUtwQyxDQUFDO1FBRUssWUFBTyxHQUFHLElBQUksWUFBWSxFQUtoQyxDQUFDO0lBbkJMLENBQUM7SUF1QkQsU0FBUyxDQUFDLEtBQWlCO1FBQ3pCLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUU7WUFDNUIsT0FBTztTQUNSO1FBQ0QsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3hCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsYUFBYSxHQUFHO1lBQ25CLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUNWLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztTQUNYLENBQUM7UUFDRixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUlELE9BQU8sQ0FBQyxLQUFpQjtRQUN2QixJQUFJLElBQUksQ0FBQyxhQUFhLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxhQUFhLEtBQUssU0FBUyxFQUFFO1lBQ25FLElBQUksTUFBTSxHQUFHLEtB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bWVudFJlZiwgRXZlbnRFbWl0dGVyLCBIb3N0TGlzdGVuZXIsIElucHV0LCBPdXRwdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtEcmFnUG9pbnRUeXBlfSBmcm9tICcuLi9tb2RlbC9lbnVtL2RyYWctcG9pbnQtdHlwZSc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1t0ZXRhRHJhZ2dhYmxlUG9pbnRdJyxcbiAgZXhwb3J0QXM6ICd0ZXRhRHJhZ2dhYmxlUG9pbnQnXG59KVxuZXhwb3J0IGNsYXNzIERyYWdnYWJsZVBvaW50RGlyZWN0aXZlIHtcbiAgQElucHV0KCkgdGV0YURyYWdnYWJsZVBvaW50OiBib29sZWFuO1xuICBASW5wdXQoKSBkcmFnRGlyZWN0aW9uOiBEcmFnUG9pbnRUeXBlO1xuICBASW5wdXQoKSBhbGxvd0RyYWc6IChwb2ludDoge1xuICAgIHg6IG51bWJlcixcbiAgICB5OiBudW1iZXIsXG4gICAgZGVsdGFYOiBudW1iZXIsXG4gICAgZGVsdGFZOiBudW1iZXJcbiAgfSkgPT4gYm9vbGVhbjtcblxuICBwcml2YXRlIHN0YXJ0UG9zaXRpb246IHtcbiAgICB4OiBudW1iZXIsXG4gICAgeTogbnVtYmVyO1xuICB9O1xuXG4gIHByaXZhdGUgdHJhbnNmb3JtQ2FjaGU6IHtcbiAgICB4OiBudW1iZXIsXG4gICAgeTogbnVtYmVyO1xuICB9O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWYpIHtcbiAgfVxuXG4gIEBPdXRwdXQoKSBtb3ZlU3RhcnQgPSBuZXcgRXZlbnRFbWl0dGVyPHtcbiAgICB4OiBudW1iZXIsXG4gICAgeTogbnVtYmVyXG4gIH0+KCk7XG5cbiAgQE91dHB1dCgpIG1vdmVQcm9jZXNzID0gbmV3IEV2ZW50RW1pdHRlcjx7XG4gICAgeDogbnVtYmVyLFxuICAgIHk6IG51bWJlcixcbiAgICBkZWx0YVg6IG51bWJlcixcbiAgICBkZWx0YVk6IG51bWJlclxuICB9PigpO1xuXG4gIEBPdXRwdXQoKSBtb3ZlRW5kID0gbmV3IEV2ZW50RW1pdHRlcjx7XG4gICAgeDogbnVtYmVyLFxuICAgIHk6IG51bWJlcixcbiAgICBkZWx0YVg6IG51bWJlcixcbiAgICBkZWx0YVk6IG51bWJlclxuICB9PigpO1xuXG4gIEBIb3N0TGlzdGVuZXIoJ21vdXNlZG93bicsIFsnJGV2ZW50J10pXG4gIEBIb3N0TGlzdGVuZXIoJ3RvdWNoc3RhcnQnLCBbJyRldmVudCddKVxuICBtb3VzZURvd24oZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICBpZiAoIXRoaXMudGV0YURyYWdnYWJsZVBvaW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgdGhpcy5zdGFydFBvc2l0aW9uID0ge1xuICAgICAgeDogZXZlbnQueCxcbiAgICAgIHk6IGV2ZW50LnlcbiAgICB9O1xuICAgIHRoaXMubW92ZVN0YXJ0LmVtaXQodGhpcy5zdGFydFBvc2l0aW9uKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzptb3VzZXVwJywgWyckZXZlbnQnXSlcbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OnRvdWNoZW5kJywgWyckZXZlbnQnXSlcbiAgbW91c2VVcChldmVudDogTW91c2VFdmVudCkge1xuICAgIGlmICh0aGlzLnN0YXJ0UG9zaXRpb24gIT09IG51bGwgJiYgdGhpcy5zdGFydFBvc2l0aW9uICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGxldCBkZWx0YVggPSBldmVudC54IC0gdGhpcy5zdGFydFBvc2l0aW9uLng7XG4gICAgICBsZXQgZGVsdGFZID0gZXZlbnQueSAtIHRoaXMuc3RhcnRQb3NpdGlvbi55O1xuICAgICAgaWYgKHRoaXMuZHJhZ0RpcmVjdGlvbiA9PT0gRHJhZ1BvaW50VHlwZS54KSB7XG4gICAgICAgIGRlbHRhWSA9IDA7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5kcmFnRGlyZWN0aW9uID09PSBEcmFnUG9pbnRUeXBlLnkpIHtcbiAgICAgICAgZGVsdGFYID0gMDtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmFsbG93RHJhZyAmJiAhdGhpcy5hbGxvd0RyYWcoe1xuICAgICAgICB4OiBldmVudC54LFxuICAgICAgICB5OiBldmVudC55LFxuICAgICAgICBkZWx0YVgsXG4gICAgICAgIGRlbHRhWVxuICAgICAgfSkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMudHJhbnNmb3JtQ2FjaGUpIHtcbiAgICAgICAgdGhpcy50cmFuc2Zvcm1DYWNoZS54ID0gdGhpcy50cmFuc2Zvcm1DYWNoZS54ICsgZGVsdGFYO1xuICAgICAgICB0aGlzLnRyYW5zZm9ybUNhY2hlLnkgPSB0aGlzLnRyYW5zZm9ybUNhY2hlLnkgKyBkZWx0YVk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnRyYW5zZm9ybUNhY2hlID0ge1xuICAgICAgICAgIHg6IGRlbHRhWCxcbiAgICAgICAgICB5OiBkZWx0YVlcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIHRoaXMubW92ZUVuZC5lbWl0KHtcbiAgICAgICAgeDogZXZlbnQueCxcbiAgICAgICAgeTogZXZlbnQueSxcbiAgICAgICAgZGVsdGFYLFxuICAgICAgICBkZWx0YVlcbiAgICAgIH0pO1xuICAgIH1cbiAgICB0aGlzLnN0YXJ0UG9zaXRpb24gPSBudWxsO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignd2luZG93Om1vdXNlbW92ZScsIFsnJGV2ZW50J10pXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzp0b3VjaG1vdmUnLCBbJyRldmVudCddKVxuICBtb3VzZU1vdmUoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICBpZiAodGhpcy5zdGFydFBvc2l0aW9uKSB7XG4gICAgICBsZXQgZGVsdGFYID0gZXZlbnQueCAtIHRoaXMuc3RhcnRQb3NpdGlvbi54O1xuICAgICAgbGV0IGRlbHRhWSA9IGV2ZW50LnkgLSB0aGlzLnN0YXJ0UG9zaXRpb24ueTtcbiAgICAgIGlmICh0aGlzLnRyYW5zZm9ybUNhY2hlKSB7XG4gICAgICAgIGRlbHRhWCA9IHRoaXMudHJhbnNmb3JtQ2FjaGUueCArIGRlbHRhWDtcbiAgICAgICAgZGVsdGFZID0gdGhpcy50cmFuc2Zvcm1DYWNoZS55ICsgZGVsdGFZO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuYWxsb3dEcmFnICYmICF0aGlzLmFsbG93RHJhZyh7XG4gICAgICAgIHg6IGV2ZW50LngsXG4gICAgICAgIHk6IGV2ZW50LnksXG4gICAgICAgIGRlbHRhWCxcbiAgICAgICAgZGVsdGFZXG4gICAgICB9KSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5kcmFnRGlyZWN0aW9uID09PSBEcmFnUG9pbnRUeXBlLngpIHtcbiAgICAgICAgZGVsdGFZID0gMDtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmRyYWdEaXJlY3Rpb24gPT09IERyYWdQb2ludFR5cGUueSkge1xuICAgICAgICBkZWx0YVggPSAwO1xuICAgICAgfVxuICAgICAgdGhpcy5zZXRUcmFuc2Zvcm0oZGVsdGFYLCBkZWx0YVkpO1xuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgdGhpcy5tb3ZlUHJvY2Vzcy5lbWl0KHtcbiAgICAgICAgeDogZXZlbnQueCxcbiAgICAgICAgeTogZXZlbnQueSxcbiAgICAgICAgZGVsdGFYLFxuICAgICAgICBkZWx0YVlcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHNldFRyYW5zZm9ybSh4OiBudW1iZXIsIHk6IG51bWJlcikge1xuICAgIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zdHlsZS50cmFuc2Zvcm0gPSBgdHJhbnNsYXRlKCR7eH1weCwgJHt5fXB4KWA7XG4gIH1cblxuICByZXNldFRyYW5zZm9ybSgpIHtcbiAgICB0aGlzLnNldFRyYW5zZm9ybSgwLCAwKTtcbiAgICB0aGlzLnRyYW5zZm9ybUNhY2hlID0gbnVsbDtcbiAgfVxufVxuIl19
141
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhZ2dhYmxlLXBvaW50LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jaGFydC9kaXJlY3RpdmVzL2RyYWdnYWJsZS1wb2ludC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBYyxZQUFZLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDL0YsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLCtCQUErQixDQUFDOztBQU01RCxNQUFNLE9BQU8sdUJBQXVCO0lBb0JsQyxZQUFvQixXQUF1QjtRQUF2QixnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQUdqQyxjQUFTLEdBQUcsSUFBSSxZQUFZLEVBR2xDLENBQUM7UUFFSyxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUtwQyxDQUFDO1FBRUssWUFBTyxHQUFHLElBQUksWUFBWSxFQUtoQyxDQUFDO0lBbkJMLENBQUM7SUF1QkQsU0FBUyxDQUFDLEtBQWlCO1FBQ3pCLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUU7WUFDNUIsT0FBTztTQUNSO1FBQ0QsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3hCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsYUFBYSxHQUFHO1lBQ25CLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUNWLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztTQUNYLENBQUM7UUFDRixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUlELE9BQU8sQ0FBQyxLQUFpQjtRQUN2QixJQUFJLElBQUksQ0FBQyxhQUFhLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxhQUFhLEtBQUssU0FBUyxFQUFFO1lBQ25FLElBQUksTUFBTSxHQUFHLEtBQUssQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7WUFDNUMsSUFBSSxNQUFNLEdBQUcsS0FBSyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztZQUM1QyxJQUFJLElBQUksQ0FBQyxhQUFhLEtBQUssYUFBYSxDQUFDLENBQUMsRUFBRTtnQkFDMUMsTUFBTSxHQUFHLENBQUMsQ0FBQzthQUNaO1lBQ0QsSUFBSSxJQUFJLENBQUMsYUFBYSxLQUFLLGFBQWEsQ0FBQyxDQUFDLEVBQUU7Z0JBQzFDLE1BQU0sR0FBRyxDQUFDLENBQUM7YUFDWjtZQUNELElBQUksSUFBSSxDQUFDLFNBQVMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7Z0JBQ3BDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDVixDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBQ1YsTUFBTTtnQkFDTixNQUFNO2FBQ1AsQ0FBQyxFQUFFO2dCQUNGLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO2dCQUMxQixPQUFPO2FBQ1I7WUFDRCxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUU7Z0JBQ3ZCLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQztnQkFDdkQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDO2FBQ3hEO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxjQUFjLEdBQUc7b0JBQ3BCLENBQUMsRUFBRSxNQUFNO29CQUNULENBQUMsRUFBRSxNQUFNO2lCQUNWLENBQUM7YUFDSDtZQUNELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO2dCQUNoQixDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBQ1YsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUNWLE1BQU07Z0JBQ04sTUFBTTthQUNQLENBQUMsQ0FBQztTQUNKO1FBQ0QsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7SUFDNUIsQ0FBQztJQUlELFNBQVMsQ0FBQyxLQUFpQjtRQUN6QixJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDdEIsSUFBSSxNQUFNLEdBQUcsS0FBSyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztZQUM1QyxJQUFJLE1BQU0sR0FBRyxLQUFLLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO1lBQzVDLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRTtnQkFDdkIsTUFBTSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQztnQkFDeEMsTUFBTSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQzthQUN6QztZQUNELElBQUksSUFBSSxDQUFDLFNBQVMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7Z0JBQ3BDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDVixDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBQ1YsTUFBTTtnQkFDTixNQUFNO2FBQ1AsQ0FBQyxFQUFFO2dCQUNGLE9BQU87YUFDUjtZQUNELElBQUksSUFBSSxDQUFDLGFBQWEsS0FBSyxhQUFhLENBQUMsQ0FBQyxFQUFFO2dCQUMxQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO2FBQ1o7WUFDRCxJQUFJLElBQUksQ0FBQyxhQUFhLEtBQUssYUFBYSxDQUFDLENBQUMsRUFBRTtnQkFDMUMsTUFBTSxHQUFHLENBQUMsQ0FBQzthQUNaO1lBQ0QsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDbEMsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3hCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztnQkFDcEIsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUNWLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDVixNQUFNO2dCQUNOLE1BQU07YUFDUCxDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7SUFFRCxZQUFZLENBQUMsQ0FBUyxFQUFFLENBQVM7UUFDL0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLFNBQVMsR0FBRyxhQUFhLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztJQUMvRSxDQUFDO0lBRUQsY0FBYztRQUNaLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO0lBQzdCLENBQUM7O29IQTVJVSx1QkFBdUI7d0dBQXZCLHVCQUF1QjsyRkFBdkIsdUJBQXVCO2tCQUpuQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxzQkFBc0I7b0JBQ2hDLFFBQVEsRUFBRSxvQkFBb0I7aUJBQy9CO2lHQUVVLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBb0JJLFNBQVM7c0JBQWxCLE1BQU07Z0JBS0csV0FBVztzQkFBcEIsTUFBTTtnQkFPRyxPQUFPO3NCQUFoQixNQUFNO2dCQVNQLFNBQVM7c0JBRlIsWUFBWTt1QkFBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUM7O3NCQUNwQyxZQUFZO3VCQUFDLFlBQVksRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFnQnRDLE9BQU87c0JBRk4sWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQzs7c0JBQ3pDLFlBQVk7dUJBQUMsaUJBQWlCLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBeUMzQyxTQUFTO3NCQUZSLFlBQVk7dUJBQUMsa0JBQWtCLEVBQUUsQ0FBQyxRQUFRLENBQUM7O3NCQUMzQyxZQUFZO3VCQUFDLGtCQUFrQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT3V0cHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7RHJhZ1BvaW50VHlwZX0gZnJvbSAnLi4vbW9kZWwvZW51bS9kcmFnLXBvaW50LXR5cGUnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbdGV0YURyYWdnYWJsZVBvaW50XScsXG4gIGV4cG9ydEFzOiAndGV0YURyYWdnYWJsZVBvaW50J1xufSlcbmV4cG9ydCBjbGFzcyBEcmFnZ2FibGVQb2ludERpcmVjdGl2ZSB7XG4gIEBJbnB1dCgpIHRldGFEcmFnZ2FibGVQb2ludDogYm9vbGVhbjtcbiAgQElucHV0KCkgZHJhZ0RpcmVjdGlvbjogRHJhZ1BvaW50VHlwZTtcbiAgQElucHV0KCkgYWxsb3dEcmFnOiAocG9pbnQ6IHtcbiAgICB4OiBudW1iZXIsXG4gICAgeTogbnVtYmVyLFxuICAgIGRlbHRhWDogbnVtYmVyLFxuICAgIGRlbHRhWTogbnVtYmVyXG4gIH0pID0+IGJvb2xlYW47XG5cbiAgcHJpdmF0ZSBzdGFydFBvc2l0aW9uOiB7XG4gICAgeDogbnVtYmVyLFxuICAgIHk6IG51bWJlcjtcbiAgfTtcblxuICBwcml2YXRlIHRyYW5zZm9ybUNhY2hlOiB7XG4gICAgeDogbnVtYmVyLFxuICAgIHk6IG51bWJlcjtcbiAgfTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7XG4gIH1cblxuICBAT3V0cHV0KCkgbW92ZVN0YXJ0ID0gbmV3IEV2ZW50RW1pdHRlcjx7XG4gICAgeDogbnVtYmVyLFxuICAgIHk6IG51bWJlclxuICB9PigpO1xuXG4gIEBPdXRwdXQoKSBtb3ZlUHJvY2VzcyA9IG5ldyBFdmVudEVtaXR0ZXI8e1xuICAgIHg6IG51bWJlcixcbiAgICB5OiBudW1iZXIsXG4gICAgZGVsdGFYOiBudW1iZXIsXG4gICAgZGVsdGFZOiBudW1iZXJcbiAgfT4oKTtcblxuICBAT3V0cHV0KCkgbW92ZUVuZCA9IG5ldyBFdmVudEVtaXR0ZXI8e1xuICAgIHg6IG51bWJlcixcbiAgICB5OiBudW1iZXIsXG4gICAgZGVsdGFYOiBudW1iZXIsXG4gICAgZGVsdGFZOiBudW1iZXJcbiAgfT4oKTtcblxuICBASG9zdExpc3RlbmVyKCdtb3VzZWRvd24nLCBbJyRldmVudCddKVxuICBASG9zdExpc3RlbmVyKCd0b3VjaHN0YXJ0JywgWyckZXZlbnQnXSlcbiAgbW91c2VEb3duKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgaWYgKCF0aGlzLnRldGFEcmFnZ2FibGVQb2ludCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHRoaXMuc3RhcnRQb3NpdGlvbiA9IHtcbiAgICAgIHg6IGV2ZW50LngsXG4gICAgICB5OiBldmVudC55XG4gICAgfTtcbiAgICB0aGlzLm1vdmVTdGFydC5lbWl0KHRoaXMuc3RhcnRQb3NpdGlvbik7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6bW91c2V1cCcsIFsnJGV2ZW50J10pXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzp0b3VjaGVuZCcsIFsnJGV2ZW50J10pXG4gIG1vdXNlVXAoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICBpZiAodGhpcy5zdGFydFBvc2l0aW9uICE9PSBudWxsICYmIHRoaXMuc3RhcnRQb3NpdGlvbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBsZXQgZGVsdGFYID0gZXZlbnQueCAtIHRoaXMuc3RhcnRQb3NpdGlvbi54O1xuICAgICAgbGV0IGRlbHRhWSA9IGV2ZW50LnkgLSB0aGlzLnN0YXJ0UG9zaXRpb24ueTtcbiAgICAgIGlmICh0aGlzLmRyYWdEaXJlY3Rpb24gPT09IERyYWdQb2ludFR5cGUueCkge1xuICAgICAgICBkZWx0YVkgPSAwO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuZHJhZ0RpcmVjdGlvbiA9PT0gRHJhZ1BvaW50VHlwZS55KSB7XG4gICAgICAgIGRlbHRhWCA9IDA7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5hbGxvd0RyYWcgJiYgIXRoaXMuYWxsb3dEcmFnKHtcbiAgICAgICAgeDogZXZlbnQueCxcbiAgICAgICAgeTogZXZlbnQueSxcbiAgICAgICAgZGVsdGFYLFxuICAgICAgICBkZWx0YVlcbiAgICAgIH0pKSB7XG4gICAgICAgIHRoaXMuc3RhcnRQb3NpdGlvbiA9IG51bGw7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLnRyYW5zZm9ybUNhY2hlKSB7XG4gICAgICAgIHRoaXMudHJhbnNmb3JtQ2FjaGUueCA9IHRoaXMudHJhbnNmb3JtQ2FjaGUueCArIGRlbHRhWDtcbiAgICAgICAgdGhpcy50cmFuc2Zvcm1DYWNoZS55ID0gdGhpcy50cmFuc2Zvcm1DYWNoZS55ICsgZGVsdGFZO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy50cmFuc2Zvcm1DYWNoZSA9IHtcbiAgICAgICAgICB4OiBkZWx0YVgsXG4gICAgICAgICAgeTogZGVsdGFZXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICB0aGlzLm1vdmVFbmQuZW1pdCh7XG4gICAgICAgIHg6IGV2ZW50LngsXG4gICAgICAgIHk6IGV2ZW50LnksXG4gICAgICAgIGRlbHRhWCxcbiAgICAgICAgZGVsdGFZXG4gICAgICB9KTtcbiAgICB9XG4gICAgdGhpcy5zdGFydFBvc2l0aW9uID0gbnVsbDtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzptb3VzZW1vdmUnLCBbJyRldmVudCddKVxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6dG91Y2htb3ZlJywgWyckZXZlbnQnXSlcbiAgbW91c2VNb3ZlKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgaWYgKHRoaXMuc3RhcnRQb3NpdGlvbikge1xuICAgICAgbGV0IGRlbHRhWCA9IGV2ZW50LnggLSB0aGlzLnN0YXJ0UG9zaXRpb24ueDtcbiAgICAgIGxldCBkZWx0YVkgPSBldmVudC55IC0gdGhpcy5zdGFydFBvc2l0aW9uLnk7XG4gICAgICBpZiAodGhpcy50cmFuc2Zvcm1DYWNoZSkge1xuICAgICAgICBkZWx0YVggPSB0aGlzLnRyYW5zZm9ybUNhY2hlLnggKyBkZWx0YVg7XG4gICAgICAgIGRlbHRhWSA9IHRoaXMudHJhbnNmb3JtQ2FjaGUueSArIGRlbHRhWTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmFsbG93RHJhZyAmJiAhdGhpcy5hbGxvd0RyYWcoe1xuICAgICAgICB4OiBldmVudC54LFxuICAgICAgICB5OiBldmVudC55LFxuICAgICAgICBkZWx0YVgsXG4gICAgICAgIGRlbHRhWVxuICAgICAgfSkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuZHJhZ0RpcmVjdGlvbiA9PT0gRHJhZ1BvaW50VHlwZS54KSB7XG4gICAgICAgIGRlbHRhWSA9IDA7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5kcmFnRGlyZWN0aW9uID09PSBEcmFnUG9pbnRUeXBlLnkpIHtcbiAgICAgICAgZGVsdGFYID0gMDtcbiAgICAgIH1cbiAgICAgIHRoaXMuc2V0VHJhbnNmb3JtKGRlbHRhWCwgZGVsdGFZKTtcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHRoaXMubW92ZVByb2Nlc3MuZW1pdCh7XG4gICAgICAgIHg6IGV2ZW50LngsXG4gICAgICAgIHk6IGV2ZW50LnksXG4gICAgICAgIGRlbHRhWCxcbiAgICAgICAgZGVsdGFZXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBzZXRUcmFuc2Zvcm0oeDogbnVtYmVyLCB5OiBudW1iZXIpIHtcbiAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUudHJhbnNmb3JtID0gYHRyYW5zbGF0ZSgke3h9cHgsICR7eX1weClgO1xuICB9XG5cbiAgcmVzZXRUcmFuc2Zvcm0oKSB7XG4gICAgdGhpcy5zZXRUcmFuc2Zvcm0oMCwgMCk7XG4gICAgdGhpcy50cmFuc2Zvcm1DYWNoZSA9IG51bGw7XG4gIH1cbn1cbiJdfQ==