@tetacom/ng-components 1.0.16 → 1.0.17

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.
@@ -29,6 +29,7 @@ export declare class ChartComponent implements OnInit, AfterViewInit, OnDestroy,
29
29
  ngOnChanges(changes: SimpleChanges): void;
30
30
  ngOnInit(): void;
31
31
  ngAfterViewInit(): void;
32
+ get showLegend(): boolean;
32
33
  ngOnDestroy(): void;
33
34
  private redraw;
34
35
  private resize;
@@ -4,6 +4,7 @@ import { map, takeWhile, throttleTime } from 'rxjs/operators';
4
4
  import { TetaChart } from '../core/chart';
5
5
  import { SeriesType } from '../model/enum/series-type';
6
6
  import * as i0 from "@angular/core";
7
+ import * as i1 from "@angular/common";
7
8
  export class ChartComponent {
8
9
  constructor(_zone) {
9
10
  this._zone = _zone;
@@ -77,6 +78,9 @@ export class ChartComponent {
77
78
  }))
78
79
  .subscribe();
79
80
  }
81
+ get showLegend() {
82
+ return this._config?.legend?.visible;
83
+ }
80
84
  ngOnDestroy() {
81
85
  this._alive = false;
82
86
  this._observer?.unobserve(this.chart.nativeElement);
@@ -130,10 +134,10 @@ export class ChartComponent {
130
134
  }
131
135
  }
132
136
  ChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: ChartComponent, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
133
- ChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.1", type: ChartComponent, selector: "teta-chart", inputs: { zoom: "zoom", config: "config" }, outputs: { plotLinesMove: "plotLinesMove", plotBandsMove: "plotBandsMove", seriesMove: "seriesMove", pointMove: "pointMove", zoomChange: "zoomChange" }, host: { listeners: { "click": "click($event)" } }, viewQueries: [{ propertyName: "chart", first: true, predicate: ["chart"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<div [style.display]=\"hasSeriesData ? 'contents' : 'none'\">\n <div #chart class=\"chart-container\"></div>\n <div class=\"legend-container\"></div>\n</div>\n<div [style.display]=\"!hasSeriesData ? 'block' : 'none'\" class=\"chart-placeholder text-align-center\">\n <span class=\"font-body-3 color-text-40\">\u0414\u0430\u043D\u043D\u044B\u0435 \u043E\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044E\u0442</span>\n</div>\n\n\n", styles: [":host{display:flex;width:100%;height:100%;flex-direction:column}.chart-container{position:relative;min-height:0;flex-grow:1;flex-basis:1px}.chart-placeholder{margin:auto;width:100%}.chart-placeholder span{text-overflow:ellipsis;overflow:hidden;display:block}.legend-container{flex-shrink:0;flex-basis:1px}::ng-deep .grid line{stroke-dasharray:1,4}::ng-deep .tooltip-chart{padding:8px 12px;border-radius:2px}::ng-deep .legend{grid-gap:8px;padding-bottom:5px;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-evenly}::ng-deep .legend .item{display:flex;align-items:center;cursor:pointer}::ng-deep .legend .item .swatch{width:10px;height:10px}::ng-deep .legend .item .line{width:12px;height:2px}::ng-deep .legend .item .label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-left:5px}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
137
+ ChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.1", type: ChartComponent, selector: "teta-chart", inputs: { zoom: "zoom", config: "config" }, outputs: { plotLinesMove: "plotLinesMove", plotBandsMove: "plotBandsMove", seriesMove: "seriesMove", pointMove: "pointMove", zoomChange: "zoomChange" }, host: { listeners: { "click": "click($event)" } }, viewQueries: [{ propertyName: "chart", first: true, predicate: ["chart"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<div [style.display]=\"hasSeriesData ? 'contents' : 'none'\">\n <div #chart class=\"chart-container\"></div>\n <div *ngIf=\"showLegend\" class=\"legend-container\"></div>\n</div>\n<div [style.display]=\"!hasSeriesData ? 'block' : 'none'\" class=\"chart-placeholder text-align-center\">\n <span class=\"font-body-3 color-text-40\">\u0414\u0430\u043D\u043D\u044B\u0435 \u043E\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044E\u0442</span>\n</div>\n\n\n", styles: [":host{display:flex;width:100%;height:100%;flex-direction:column}.chart-container{position:relative;min-height:0;flex-grow:1;flex-basis:1px}.chart-placeholder{margin:auto;width:100%}.chart-placeholder span{text-overflow:ellipsis;overflow:hidden;display:block}.legend-container{flex-shrink:0;flex-basis:1px}::ng-deep .grid line{stroke-dasharray:1,4}::ng-deep .tooltip-chart{padding:8px 12px;border-radius:2px}::ng-deep .legend{grid-gap:8px;padding-bottom:5px;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-evenly}::ng-deep .legend .item{display:flex;align-items:center;cursor:pointer}::ng-deep .legend .item .swatch{width:10px;height:10px}::ng-deep .legend .item .line{width:12px;height:2px}::ng-deep .legend .item .label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-left:5px}\n"], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
134
138
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: ChartComponent, decorators: [{
135
139
  type: Component,
136
- args: [{ selector: 'teta-chart', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div [style.display]=\"hasSeriesData ? 'contents' : 'none'\">\n <div #chart class=\"chart-container\"></div>\n <div class=\"legend-container\"></div>\n</div>\n<div [style.display]=\"!hasSeriesData ? 'block' : 'none'\" class=\"chart-placeholder text-align-center\">\n <span class=\"font-body-3 color-text-40\">\u0414\u0430\u043D\u043D\u044B\u0435 \u043E\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044E\u0442</span>\n</div>\n\n\n", styles: [":host{display:flex;width:100%;height:100%;flex-direction:column}.chart-container{position:relative;min-height:0;flex-grow:1;flex-basis:1px}.chart-placeholder{margin:auto;width:100%}.chart-placeholder span{text-overflow:ellipsis;overflow:hidden;display:block}.legend-container{flex-shrink:0;flex-basis:1px}::ng-deep .grid line{stroke-dasharray:1,4}::ng-deep .tooltip-chart{padding:8px 12px;border-radius:2px}::ng-deep .legend{grid-gap:8px;padding-bottom:5px;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-evenly}::ng-deep .legend .item{display:flex;align-items:center;cursor:pointer}::ng-deep .legend .item .swatch{width:10px;height:10px}::ng-deep .legend .item .line{width:12px;height:2px}::ng-deep .legend .item .label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-left:5px}\n"] }]
140
+ args: [{ selector: 'teta-chart', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div [style.display]=\"hasSeriesData ? 'contents' : 'none'\">\n <div #chart class=\"chart-container\"></div>\n <div *ngIf=\"showLegend\" class=\"legend-container\"></div>\n</div>\n<div [style.display]=\"!hasSeriesData ? 'block' : 'none'\" class=\"chart-placeholder text-align-center\">\n <span class=\"font-body-3 color-text-40\">\u0414\u0430\u043D\u043D\u044B\u0435 \u043E\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044E\u0442</span>\n</div>\n\n\n", styles: [":host{display:flex;width:100%;height:100%;flex-direction:column}.chart-container{position:relative;min-height:0;flex-grow:1;flex-basis:1px}.chart-placeholder{margin:auto;width:100%}.chart-placeholder span{text-overflow:ellipsis;overflow:hidden;display:block}.legend-container{flex-shrink:0;flex-basis:1px}::ng-deep .grid line{stroke-dasharray:1,4}::ng-deep .tooltip-chart{padding:8px 12px;border-radius:2px}::ng-deep .legend{grid-gap:8px;padding-bottom:5px;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-evenly}::ng-deep .legend .item{display:flex;align-items:center;cursor:pointer}::ng-deep .legend .item .swatch{width:10px;height:10px}::ng-deep .legend .item .line{width:12px;height:2px}::ng-deep .legend .item .label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-left:5px}\n"] }]
137
141
  }], ctorParameters: function () { return [{ type: i0.NgZone }]; }, propDecorators: { zoom: [{
138
142
  type: Input
139
143
  }], config: [{
@@ -157,4 +161,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImpor
157
161
  type: HostListener,
158
162
  args: ['click', ['$event']]
159
163
  }] } });
160
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvY29tcG9uZW50L2NoYXJ0L2NoYXJ0L2NoYXJ0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2NvbXBvbmVudC9jaGFydC9jaGFydC9jaGFydC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFFVCxZQUFZLEVBQ1osWUFBWSxFQUNaLEtBQUssRUFLTCxNQUFNLEVBRU4sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQVExQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7O0FBU3ZELE1BQU0sT0FBTyxjQUFjO0lBMEN6QixZQUFvQixLQUFhO1FBQWIsVUFBSyxHQUFMLEtBQUssQ0FBUTtRQWxDakMsa0JBQWEsR0FBdUMsSUFBSSxZQUFZLEVBRWpFLENBQUM7UUFFSixrQkFBYSxHQUF1QyxJQUFJLFlBQVksRUFFakUsQ0FBQztRQUdKLGVBQVUsR0FBZ0QsSUFBSSxZQUFZLEVBRXZFLENBQUM7UUFHSixjQUFTLEdBQWdELElBQUksWUFBWSxFQUV0RSxDQUFDO1FBR0osZUFBVSxHQUE2QixJQUFJLFlBQVksRUFBYyxDQUFDO1FBUzlELFdBQU0sR0FBRyxJQUFJLENBQUM7UUFDZCxVQUFLLEdBQUcsSUFBSSxPQUFPLEVBQU8sQ0FBQztJQUtDLENBQUM7SUFFRixLQUFLLENBQUMsS0FBVTtR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LE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7cUJBQzNCO2lCQUNGO2FBQ0Y7U0FDRjtJQUNILENBQUM7OzJHQXRNVSxjQUFjOytGQUFkLGNBQWMsNmFDcEMzQixzYkFTQTsyRkQyQmEsY0FBYztrQkFOMUIsU0FBUzsrQkFDRSxZQUFZLG1CQUdMLHVCQUF1QixDQUFDLE1BQU07NkZBS3RDLElBQUk7c0JBQVosS0FBSztnQkFFRyxNQUFNO3NCQUFkLEtBQUs7Z0JBR04sYUFBYTtzQkFEWixNQUFNO2dCQUtQLGFBQWE7c0JBRFosTUFBTTtnQkFNUCxVQUFVO3NCQURULE1BQU07Z0JBTVAsU0FBUztzQkFEUixNQUFNO2dCQU1QLFVBQVU7c0JBRFQsTUFBTTtnQkFNUCxLQUFLO3NCQUhKLFNBQVM7dUJBQUMsT0FBTyxFQUFFO3dCQUNsQixNQUFNLEVBQUUsSUFBSTtxQkFDYjtnQkFha0MsS0FBSztzQkFBdkMsWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsXG4gIE5nWm9uZSxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAsIHRha2VXaGlsZSwgdGhyb3R0bGVUaW1lIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgVGV0YUNoYXJ0IH0gZnJvbSAnLi4vY29yZS9jaGFydCc7XG5pbXBvcnQgeyBDaGFydE9wdGlvbnMgfSBmcm9tICcuLi9tb2RlbC9jaGFydC1vcHRpb25zJztcbmltcG9ydCB7IEJhc2VQb2ludCB9IGZyb20gJy4uL21vZGVsL3BvaW50L2Jhc2UtcG9pbnQnO1xuaW1wb3J0IHsgU2VyaWVzIH0gZnJvbSAnLi4vbW9kZWwvc2VyaWVzJztcbmltcG9ydCB7IFBsb3RMaW5lIH0gZnJvbSAnLi4vbW9kZWwvcGxvdC1saW5lJztcbmltcG9ydCB7IFBsb3RCYW5kIH0gZnJvbSAnLi4vbW9kZWwvcGxvdC1iYW5kJztcbmltcG9ydCB7IElEcmFnRXZlbnQgfSBmcm9tICcuLi9tb2RlbC9pLWRyYWctZXZlbnQnO1xuaW1wb3J0IHsgSVpvb21FdmVudCB9IGZyb20gJy4uL21vZGVsL2ktem9vbS1ldmVudCc7XG5pbXBvcnQgeyBTZXJpZXNUeXBlIH0gZnJvbSAnLi4vbW9kZWwvZW51bS9zZXJpZXMtdHlwZSc7XG5pbXBvcnQgeyBCYXJQb2ludCB9IGZyb20gJy4uL21vZGVsL3BvaW50L2Jhci1wb2ludCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RldGEtY2hhcnQnLFxuICB0ZW1wbGF0ZVVybDogJy4vY2hhcnQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jaGFydC5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgQ2hhcnRDb21wb25lbnRcbiAgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSwgT25DaGFuZ2VzXG57XG4gIEBJbnB1dCgpIHpvb206IElab29tRXZlbnQ7XG5cbiAgQElucHV0KCkgY29uZmlnOiBDaGFydE9wdGlvbnM7XG5cbiAgQE91dHB1dCgpXG4gIHBsb3RMaW5lc01vdmU6IEV2ZW50RW1pdHRlcjxJRHJhZ0V2ZW50PFBsb3RMaW5lPj4gPSBuZXcgRXZlbnRFbWl0dGVyPFxuICAgIElEcmFnRXZlbnQ8UGxvdExpbmU+XG4gID4oKTtcbiAgQE91dHB1dCgpXG4gIHBsb3RCYW5kc01vdmU6IEV2ZW50RW1pdHRlcjxJRHJhZ0V2ZW50PFBsb3RCYW5kPj4gPSBuZXcgRXZlbnRFbWl0dGVyPFxuICAgIElEcmFnRXZlbnQ8UGxvdEJhbmQ+XG4gID4oKTtcblxuICBAT3V0cHV0KClcbiAgc2VyaWVzTW92ZTogRXZlbnRFbWl0dGVyPElEcmFnRXZlbnQ8U2VyaWVzPEJhc2VQb2ludD4+PiA9IG5ldyBFdmVudEVtaXR0ZXI8XG4gICAgSURyYWdFdmVudDxTZXJpZXM8QmFzZVBvaW50Pj5cbiAgPigpO1xuXG4gIEBPdXRwdXQoKVxuICBwb2ludE1vdmU6IEV2ZW50RW1pdHRlcjxJRHJhZ0V2ZW50PFNlcmllczxCYXNlUG9pbnQ+Pj4gPSBuZXcgRXZlbnRFbWl0dGVyPFxuICAgIElEcmFnRXZlbnQ8U2VyaWVzPEJhc2VQb2ludD4+XG4gID4oKTtcblxuICBAT3V0cHV0KClcbiAgem9vbUNoYW5nZTogRXZlbnRFbWl0dGVyPElab29tRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxJWm9vbUV2ZW50PigpO1xuXG4gIEBWaWV3Q2hpbGQoJ2NoYXJ0Jywge1xuICAgIHN0YXRpYzogdHJ1ZSxcbiAgfSlcbiAgY2hhcnQ6IEVsZW1lbnRSZWY7XG4gIGhhc1Nlcmllc0RhdGE6IGJvb2xlYW47XG5cbiAgcHJpdmF0ZSBfY29uZmlnOiBDaGFydE9wdGlvbnM7XG4gIHByaXZhdGUgX2FsaXZlID0gdHJ1ZTtcbiAgcHJpdmF0ZSBzaXplJCA9IG5ldyBTdWJqZWN0PGFueT4oKTtcbiAgcHJpdmF0ZSBfb2JzZXJ2ZXI6IFJlc2l6ZU9ic2VydmVyO1xuICBwcml2YXRlIF9jaGFydDogVGV0YUNoYXJ0O1xuICBwcml2YXRlIF96b29tOiBJWm9vbUV2ZW50O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX3pvbmU6IE5nWm9uZSkge31cblxuICBASG9zdExpc3RlbmVyKCdjbGljaycsIFsnJGV2ZW50J10pIGNsaWNrKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICBjb25zdCBjb21wb3NlZFBhdGggPSBldmVudC5jb21wb3NlZFBhdGgoKTtcbiAgICBjb25zdCB0cmlnZ2VyVG9rZW4gPSAnbGVnZW5kJztcblxuICAgIGNvbnN0IGlzTGVnZW5kID0gY29tcG9zZWRQYXRoLnNvbWUoKF8pID0+XG4gICAgICBfLmNsYXNzTGlzdD8uY29udGFpbnModHJpZ2dlclRva2VuKVxuICAgICk7XG5cbiAgICBpZiAoaXNMZWdlbmQpIHtcbiAgICAgIGNvbnN0IGNsaWNrZWRFbGVtZW50OiBhbnkgPSBldmVudC50YXJnZXQ/Ll9fZGF0YV9fO1xuXG4gICAgICBpZiAoIWNsaWNrZWRFbGVtZW50KSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3Qgc2VyaWVJbmRleCA9IHRoaXMuX2NvbmZpZz8uc2VyaWVzPy5pbmRleE9mKGNsaWNrZWRFbGVtZW50KTtcblxuICAgICAgaWYgKGNsaWNrZWRFbGVtZW50LnNlcmllVHlwZSA9PT0gU2VyaWVzVHlwZS5iYXIpIHtcbiAgICAgICAgY29uc3QgZm91bmRTZXJpZSA9IHRoaXMuX2NvbmZpZy5zZXJpZXNbY2xpY2tlZEVsZW1lbnQuc2VyaWVJbmRleF07XG5cbiAgICAgICAgdGhpcy5fY29uZmlnLnNlcmllc1tmb3VuZFNlcmllLmlkXS5kYXRhID0gdGhpcy5fY29uZmlnLnNlcmllc1tcbiAgICAgICAgICBmb3VuZFNlcmllLmlkXG4gICAgICAgIF0uZGF0YS5tYXAoKF86IEJhc2VQb2ludCAmIEJhclBvaW50KSA9PiB7XG4gICAgICAgICAgaWYgKGNsaWNrZWRFbGVtZW50LmlkID09PSBfLmlkKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAuLi5fLFxuICAgICAgICAgICAgICB2aXNpYmxlOiAhXy52aXNpYmxlLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gXztcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5yZWRyYXcodGhpcy5fY29uZmlnKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHNlcmllSW5kZXggIT09IC0xKSB7XG4gICAgICAgIGNvbnN0IGZvdW5kU2VyaWUgPSB0aGlzLl9jb25maWcuc2VyaWVzW3NlcmllSW5kZXhdO1xuXG4gICAgICAgIGNvbnN0IHlBeGlzSW5kZXggPSBmb3VuZFNlcmllPy55QXhpc0luZGV4O1xuXG4gICAgICAgIHRoaXMuX2NvbmZpZy5zZXJpZXNbc2VyaWVJbmRleF0udmlzaWJsZSA9ICFmb3VuZFNlcmllLnZpc2libGU7XG5cbiAgICAgICAgY29uc3QgYXR0YWNoZWRZQXhlcyA9IHRoaXMuX2NvbmZpZy5zZXJpZXNcbiAgICAgICAgICA/LmZpbHRlcigoXykgPT4gXy52aXNpYmxlKVxuICAgICAgICAgIC5tYXAoKF8pID0+IF8ueUF4aXNJbmRleCk7XG5cbiAgICAgICAgY29uc3Qgc2hvdWxkVmlzaWJsZVlBeGlzID0gYXR0YWNoZWRZQXhlcz8uaW5jbHVkZXMoeUF4aXNJbmRleCk7XG5cbiAgICAgICAgdGhpcy5fY29uZmlnLnlBeGlzW3lBeGlzSW5kZXhdLnZpc2libGUgPSBzaG91bGRWaXNpYmxlWUF4aXM7XG4gICAgICAgIHRoaXMucmVkcmF3KHRoaXMuX2NvbmZpZyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmICh0aGlzLmNvbmZpZyAmJiBjaGFuZ2VzLmhhc093blByb3BlcnR5KCdjb25maWcnKSkge1xuICAgICAgdGhpcy5zZXRDb25maWcodGhpcy5jb25maWcpO1xuXG4gICAgICBpZiAodGhpcy56b29tKSB7XG4gICAgICAgIHRoaXMuX2NoYXJ0Py5zZXRab29tKHRoaXMuem9vbSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuem9vbSAmJiBjaGFuZ2VzLmhhc093blByb3BlcnR5KCd6b29tJykpIHtcbiAgICAgIHRoaXMuX2NoYXJ0Py5zZXRab29tKHRoaXMuem9vbSk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7fVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLl9vYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcigoZW50cmllcykgPT4ge1xuICAgICAgY29uc3QgeyBjb250ZW50UmVjdCB9ID0gZW50cmllc1swXTtcbiAgICAgIHRoaXMuc2l6ZSQubmV4dChjb250ZW50UmVjdCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLl9vYnNlcnZlci5vYnNlcnZlKHRoaXMuY2hhcnQubmF0aXZlRWxlbWVudCk7XG5cbiAgICB0aGlzLnNpemUkXG4gICAgICAucGlwZSh0aHJvdHRsZVRpbWUoMTAwLCB1bmRlZmluZWQsIHsgdHJhaWxpbmc6IHRydWUgfSkpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVdoaWxlKChfKSA9PiB0aGlzLl9hbGl2ZSksXG4gICAgICAgIG1hcCgoXykgPT4ge1xuICAgICAgICAgIHRoaXMucmVzaXplKF8pO1xuICAgICAgICAgIHRoaXMucmVkcmF3KHRoaXMuX2NvbmZpZyk7XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLl9hbGl2ZSA9IGZhbHNlO1xuICAgIHRoaXMuX29ic2VydmVyPy51bm9ic2VydmUodGhpcy5jaGFydC5uYXRpdmVFbGVtZW50KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVkcmF3KGNvbmZpZzogYW55KSB7XG4gICAgaWYgKGNvbmZpZykge1xuICAgICAgdGhpcy5fY2hhcnQucmVkcmF3KGNvbmZpZyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZXNpemUoY29udGVudFJlY3Q6IGFueSkge1xuICAgIGNvbnN0IHsgd2lkdGgsIGhlaWdodCB9ID0gY29udGVudFJlY3Q7XG4gICAgdGhpcy5fY2hhcnQuc2V0U2l6ZSh7XG4gICAgICB3aWR0aCxcbiAgICAgIGhlaWdodCxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0Q29uZmlnKGNvbmZpZzogQ2hhcnRPcHRpb25zKSB7XG4gICAgaWYgKGNvbmZpZykge1xuICAgICAgdGhpcy5fY29uZmlnID0gY29uZmlnO1xuICAgICAgdGhpcy5oYXNTZXJpZXNEYXRhID0gISF0aGlzLl9jb25maWc/LnNlcmllcz8uc29tZSgoXykgPT4gXy5kYXRhLmxlbmd0aCk7XG5cbiAgICAgIGlmICghdGhpcy5fY2hhcnQpIHtcbiAgICAgICAgdGhpcy5fY2hhcnQgPSBuZXcgVGV0YUNoYXJ0KHRoaXMuX2NvbmZpZywgdGhpcy5jaGFydCk7XG5cbiAgICAgICAgdGhpcy5fY2hhcnQucGxvdExpbmVzTW92ZVxuICAgICAgICAgIC5waXBlKHRha2VXaGlsZSgoXykgPT4gdGhpcy5fYWxpdmUpKVxuICAgICAgICAgIC5zdWJzY3JpYmUoKF8pID0+IHRoaXMucGxvdExpbmVzTW92ZS5lbWl0KF8pKTtcblxuICAgICAgICB0aGlzLl9jaGFydC5wbG90QmFuZHNNb3ZlXG4gICAgICAgICAgLnBpcGUodGFrZVdoaWxlKChfKSA9PiB0aGlzLl9hbGl2ZSkpXG4gICAgICAgICAgLnN1YnNjcmliZSgoXykgPT4gdGhpcy5wbG90QmFuZHNNb3ZlLmVtaXQoXykpO1xuXG4gICAgICAgIHRoaXMuX2NoYXJ0LnNlcmllc01vdmVcbiAgICAgICAgICAucGlwZSh0YWtlV2hpbGUoKF8pID0+IHRoaXMuX2FsaXZlKSlcbiAgICAgICAgICAuc3Vic2NyaWJlKChfKSA9PiB0aGlzLnNlcmllc01vdmUuZW1pdChfKSk7XG5cbiAgICAgICAgdGhpcy5fY2hhcnQucG9pbnRNb3ZlXG4gICAgICAgICAgLnBpcGUodGFrZVdoaWxlKChfKSA9PiB0aGlzLl9hbGl2ZSkpXG4gICAgICAgICAgLnN1YnNjcmliZSgoXykgPT4ge1xuICAgICAgICAgICAgdGhpcy5wb2ludE1vdmUuZW1pdChfKTtcbiAgICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLl9jaGFydC56b29tXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICB0YWtlV2hpbGUoKF8pID0+IHRoaXMuX2FsaXZlKSxcbiAgICAgICAgICAgIG1hcCgoXykgPT4ge1xuICAgICAgICAgICAgICB0aGlzLnpvb21DaGFuZ2UuZW1pdChfKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKVxuICAgICAgICAgIC5zdWJzY3JpYmUoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuY2hhcnQpIHtcbiAgICAgICAgaWYgKHRoaXMuaGFzU2VyaWVzRGF0YSkge1xuICAgICAgICAgIGlmICghdGhpcy5fem9vbSB8fCB0aGlzLl96b29tPy5ldmVudD8udHlwZSA9PT0gJ2VuZCcpIHtcbiAgICAgICAgICAgIHRoaXMucmVkcmF3KHRoaXMuX2NvbmZpZyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IFtzdHlsZS5kaXNwbGF5XT1cImhhc1Nlcmllc0RhdGEgPyAnY29udGVudHMnIDogJ25vbmUnXCI+XG4gIDxkaXYgI2NoYXJ0IGNsYXNzPVwiY2hhcnQtY29udGFpbmVyXCI+PC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJsZWdlbmQtY29udGFpbmVyXCI+PC9kaXY+XG48L2Rpdj5cbjxkaXYgW3N0eWxlLmRpc3BsYXldPVwiIWhhc1Nlcmllc0RhdGEgPyAnYmxvY2snIDogJ25vbmUnXCIgY2xhc3M9XCJjaGFydC1wbGFjZWhvbGRlciB0ZXh0LWFsaWduLWNlbnRlclwiPlxuICA8c3BhbiBjbGFzcz1cImZvbnQtYm9keS0zIGNvbG9yLXRleHQtNDBcIj7QlNCw0L3QvdGL0LUg0L7RgtGB0YPRgtGB0YLQstGD0Y7Rgjwvc3Bhbj5cbjwvZGl2PlxuXG5cbiJdfQ==
164
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvY29tcG9uZW50L2NoYXJ0L2NoYXJ0L2NoYXJ0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2NvbXBvbmVudC9jaGFydC9jaGFydC9jaGFydC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFFVCxZQUFZLEVBQ1osWUFBWSxFQUNaLEtBQUssRUFLTCxNQUFNLEVBRU4sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQVExQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7OztBQVN2RCxNQUFNLE9BQU8sY0FBYztJQTBDekIsWUFBb0IsS0FBYTtRQUFiLFVBQUssR0FBTCxLQUFLLENBQVE7UUFsQ2pDLGtCQUFhLEdBQXVDLElBQUksWUFBWSxFQUVqRSxDQUFDO1FBRUosa0JBQWEsR0FBdUMsSUFBSSxZQUFZLEVBRWpFLENBQUM7UUFHSixlQUFVLEdBQWdELElBQUksWUFBWSxFQUV2RSxDQUFDO1FBR0osY0FBUyxHQUFnRCxJQUFJLFlBQVksRUFFdEUsQ0FBQztRQUdKLGVBQVUsR0FBNkIsSUFBSSxZQUFZLEVBQWMsQ0FBQztRQVM5RCxXQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ2QsVUFBSyxHQUFHLElBQUksT0FBTyxFQUFPLENBQUM7SUFLQyxDQUFDO0lBRUYsS0FBSyxDQUFDLEtBQVU7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LEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLEtBQUssS0FBSyxFQUFFO3dCQUNwRCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztxQkFDM0I7aUJBQ0Y7YUFDRjtTQUNGO0lBQ0gsQ0FBQzs7MkdBMU1VLGNBQWM7K0ZBQWQsY0FBYyw2YUNwQzNCLDJjQVNBOzJGRDJCYSxjQUFjO2tCQU4xQixTQUFTOytCQUNFLFlBQVksbUJBR0wsdUJBQXVCLENBQUMsTUFBTTs2RkFLdEMsSUFBSTtzQkFBWixLQUFLO2dCQUVHLE1BQU07c0JBQWQsS0FBSztnQkFHTixhQUFhO3NCQURaLE1BQU07Z0JBS1AsYUFBYTtzQkFEWixNQUFNO2dCQU1QLFVBQVU7c0JBRFQsTUFBTTtnQkFNUCxTQUFTO3NCQURSLE1BQU07Z0JBTVAsVUFBVTtzQkFEVCxNQUFNO2dCQU1QLEtBQUs7c0JBSEosU0FBUzt1QkFBQyxPQUFPLEVBQUU7d0JBQ2xCLE1BQU0sRUFBRSxJQUFJO3FCQUNiO2dCQWFrQyxLQUFLO3NCQUF2QyxZQUFZO3VCQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdExpc3RlbmVyLFxuICBJbnB1dCxcbiAgTmdab25lLFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCwgdGFrZVdoaWxlLCB0aHJvdHRsZVRpbWUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBUZXRhQ2hhcnQgfSBmcm9tICcuLi9jb3JlL2NoYXJ0JztcbmltcG9ydCB7IENoYXJ0T3B0aW9ucyB9IGZyb20gJy4uL21vZGVsL2NoYXJ0LW9wdGlvbnMnO1xuaW1wb3J0IHsgQmFzZVBvaW50IH0gZnJvbSAnLi4vbW9kZWwvcG9pbnQvYmFzZS1wb2ludCc7XG5pbXBvcnQgeyBTZXJpZXMgfSBmcm9tICcuLi9tb2RlbC9zZXJpZXMnO1xuaW1wb3J0IHsgUGxvdExpbmUgfSBmcm9tICcuLi9tb2RlbC9wbG90LWxpbmUnO1xuaW1wb3J0IHsgUGxvdEJhbmQgfSBmcm9tICcuLi9tb2RlbC9wbG90LWJhbmQnO1xuaW1wb3J0IHsgSURyYWdFdmVudCB9IGZyb20gJy4uL21vZGVsL2ktZHJhZy1ldmVudCc7XG5pbXBvcnQgeyBJWm9vbUV2ZW50IH0gZnJvbSAnLi4vbW9kZWwvaS16b29tLWV2ZW50JztcbmltcG9ydCB7IFNlcmllc1R5cGUgfSBmcm9tICcuLi9tb2RlbC9lbnVtL3Nlcmllcy10eXBlJztcbmltcG9ydCB7IEJhclBvaW50IH0gZnJvbSAnLi4vbW9kZWwvcG9pbnQvYmFyLXBvaW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndGV0YS1jaGFydCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9jaGFydC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NoYXJ0LmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBDaGFydENvbXBvbmVudFxuICBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXNcbntcbiAgQElucHV0KCkgem9vbTogSVpvb21FdmVudDtcblxuICBASW5wdXQoKSBjb25maWc6IENoYXJ0T3B0aW9ucztcblxuICBAT3V0cHV0KClcbiAgcGxvdExpbmVzTW92ZTogRXZlbnRFbWl0dGVyPElEcmFnRXZlbnQ8UGxvdExpbmU+PiA9IG5ldyBFdmVudEVtaXR0ZXI8XG4gICAgSURyYWdFdmVudDxQbG90TGluZT5cbiAgPigpO1xuICBAT3V0cHV0KClcbiAgcGxvdEJhbmRzTW92ZTogRXZlbnRFbWl0dGVyPElEcmFnRXZlbnQ8UGxvdEJhbmQ+PiA9IG5ldyBFdmVudEVtaXR0ZXI8XG4gICAgSURyYWdFdmVudDxQbG90QmFuZD5cbiAgPigpO1xuXG4gIEBPdXRwdXQoKVxuICBzZXJpZXNNb3ZlOiBFdmVudEVtaXR0ZXI8SURyYWdFdmVudDxTZXJpZXM8QmFzZVBvaW50Pj4+ID0gbmV3IEV2ZW50RW1pdHRlcjxcbiAgICBJRHJhZ0V2ZW50PFNlcmllczxCYXNlUG9pbnQ+PlxuICA+KCk7XG5cbiAgQE91dHB1dCgpXG4gIHBvaW50TW92ZTogRXZlbnRFbWl0dGVyPElEcmFnRXZlbnQ8U2VyaWVzPEJhc2VQb2ludD4+PiA9IG5ldyBFdmVudEVtaXR0ZXI8XG4gICAgSURyYWdFdmVudDxTZXJpZXM8QmFzZVBvaW50Pj5cbiAgPigpO1xuXG4gIEBPdXRwdXQoKVxuICB6b29tQ2hhbmdlOiBFdmVudEVtaXR0ZXI8SVpvb21FdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPElab29tRXZlbnQ+KCk7XG5cbiAgQFZpZXdDaGlsZCgnY2hhcnQnLCB7XG4gICAgc3RhdGljOiB0cnVlLFxuICB9KVxuICBjaGFydDogRWxlbWVudFJlZjtcbiAgaGFzU2VyaWVzRGF0YTogYm9vbGVhbjtcblxuICBwcml2YXRlIF9jb25maWc6IENoYXJ0T3B0aW9ucztcbiAgcHJpdmF0ZSBfYWxpdmUgPSB0cnVlO1xuICBwcml2YXRlIHNpemUkID0gbmV3IFN1YmplY3Q8YW55PigpO1xuICBwcml2YXRlIF9vYnNlcnZlcjogUmVzaXplT2JzZXJ2ZXI7XG4gIHByaXZhdGUgX2NoYXJ0OiBUZXRhQ2hhcnQ7XG4gIHByaXZhdGUgX3pvb206IElab29tRXZlbnQ7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfem9uZTogTmdab25lKSB7fVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJywgWyckZXZlbnQnXSkgY2xpY2soZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IGNvbXBvc2VkUGF0aCA9IGV2ZW50LmNvbXBvc2VkUGF0aCgpO1xuICAgIGNvbnN0IHRyaWdnZXJUb2tlbiA9ICdsZWdlbmQnO1xuXG4gICAgY29uc3QgaXNMZWdlbmQgPSBjb21wb3NlZFBhdGguc29tZSgoXykgPT5cbiAgICAgIF8uY2xhc3NMaXN0Py5jb250YWlucyh0cmlnZ2VyVG9rZW4pXG4gICAgKTtcblxuICAgIGlmIChpc0xlZ2VuZCkge1xuICAgICAgY29uc3QgY2xpY2tlZEVsZW1lbnQ6IGFueSA9IGV2ZW50LnRhcmdldD8uX19kYXRhX187XG5cbiAgICAgIGlmICghY2xpY2tlZEVsZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBzZXJpZUluZGV4ID0gdGhpcy5fY29uZmlnPy5zZXJpZXM/LmluZGV4T2YoY2xpY2tlZEVsZW1lbnQpO1xuXG4gICAgICBpZiAoY2xpY2tlZEVsZW1lbnQuc2VyaWVUeXBlID09PSBTZXJpZXNUeXBlLmJhcikge1xuICAgICAgICBjb25zdCBmb3VuZFNlcmllID0gdGhpcy5fY29uZmlnLnNlcmllc1tjbGlja2VkRWxlbWVudC5zZXJpZUluZGV4XTtcblxuICAgICAgICB0aGlzLl9jb25maWcuc2VyaWVzW2ZvdW5kU2VyaWUuaWRdLmRhdGEgPSB0aGlzLl9jb25maWcuc2VyaWVzW1xuICAgICAgICAgIGZvdW5kU2VyaWUuaWRcbiAgICAgICAgXS5kYXRhLm1hcCgoXzogQmFzZVBvaW50ICYgQmFyUG9pbnQpID0+IHtcbiAgICAgICAgICBpZiAoY2xpY2tlZEVsZW1lbnQuaWQgPT09IF8uaWQpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIC4uLl8sXG4gICAgICAgICAgICAgIHZpc2libGU6ICFfLnZpc2libGUsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBfO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLnJlZHJhdyh0aGlzLl9jb25maWcpO1xuICAgICAgfVxuXG4gICAgICBpZiAoc2VyaWVJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgY29uc3QgZm91bmRTZXJpZSA9IHRoaXMuX2NvbmZpZy5zZXJpZXNbc2VyaWVJbmRleF07XG5cbiAgICAgICAgY29uc3QgeUF4aXNJbmRleCA9IGZvdW5kU2VyaWU/LnlBeGlzSW5kZXg7XG5cbiAgICAgICAgdGhpcy5fY29uZmlnLnNlcmllc1tzZXJpZUluZGV4XS52aXNpYmxlID0gIWZvdW5kU2VyaWUudmlzaWJsZTtcblxuICAgICAgICBjb25zdCBhdHRhY2hlZFlBeGVzID0gdGhpcy5fY29uZmlnLnNlcmllc1xuICAgICAgICAgID8uZmlsdGVyKChfKSA9PiBfLnZpc2libGUpXG4gICAgICAgICAgLm1hcCgoXykgPT4gXy55QXhpc0luZGV4KTtcblxuICAgICAgICBjb25zdCBzaG91bGRWaXNpYmxlWUF4aXMgPSBhdHRhY2hlZFlBeGVzPy5pbmNsdWRlcyh5QXhpc0luZGV4KTtcblxuICAgICAgICB0aGlzLl9jb25maWcueUF4aXNbeUF4aXNJbmRleF0udmlzaWJsZSA9IHNob3VsZFZpc2libGVZQXhpcztcbiAgICAgICAgdGhpcy5yZWRyYXcodGhpcy5fY29uZmlnKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKHRoaXMuY29uZmlnICYmIGNoYW5nZXMuaGFzT3duUHJvcGVydHkoJ2NvbmZpZycpKSB7XG4gICAgICB0aGlzLnNldENvbmZpZyh0aGlzLmNvbmZpZyk7XG5cbiAgICAgIGlmICh0aGlzLnpvb20pIHtcbiAgICAgICAgdGhpcy5fY2hhcnQ/LnNldFpvb20odGhpcy56b29tKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy56b29tICYmIGNoYW5nZXMuaGFzT3duUHJvcGVydHkoJ3pvb20nKSkge1xuICAgICAgdGhpcy5fY2hhcnQ/LnNldFpvb20odGhpcy56b29tKTtcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHt9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuX29ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKChlbnRyaWVzKSA9PiB7XG4gICAgICBjb25zdCB7IGNvbnRlbnRSZWN0IH0gPSBlbnRyaWVzWzBdO1xuICAgICAgdGhpcy5zaXplJC5uZXh0KGNvbnRlbnRSZWN0KTtcbiAgICB9KTtcblxuICAgIHRoaXMuX29ic2VydmVyLm9ic2VydmUodGhpcy5jaGFydC5uYXRpdmVFbGVtZW50KTtcblxuICAgIHRoaXMuc2l6ZSRcbiAgICAgIC5waXBlKHRocm90dGxlVGltZSgxMDAsIHVuZGVmaW5lZCwgeyB0cmFpbGluZzogdHJ1ZSB9KSlcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlV2hpbGUoKF8pID0+IHRoaXMuX2FsaXZlKSxcbiAgICAgICAgbWFwKChfKSA9PiB7XG4gICAgICAgICAgdGhpcy5yZXNpemUoXyk7XG4gICAgICAgICAgdGhpcy5yZWRyYXcodGhpcy5fY29uZmlnKTtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIGdldCBzaG93TGVnZW5kKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9jb25maWc/LmxlZ2VuZD8udmlzaWJsZTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuX2FsaXZlID0gZmFsc2U7XG4gICAgdGhpcy5fb2JzZXJ2ZXI/LnVub2JzZXJ2ZSh0aGlzLmNoYXJ0Lm5hdGl2ZUVsZW1lbnQpO1xuICB9XG5cbiAgcHJpdmF0ZSByZWRyYXcoY29uZmlnOiBhbnkpIHtcbiAgICBpZiAoY29uZmlnKSB7XG4gICAgICB0aGlzLl9jaGFydC5yZWRyYXcoY29uZmlnKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlc2l6ZShjb250ZW50UmVjdDogYW55KSB7XG4gICAgY29uc3QgeyB3aWR0aCwgaGVpZ2h0IH0gPSBjb250ZW50UmVjdDtcbiAgICB0aGlzLl9jaGFydC5zZXRTaXplKHtcbiAgICAgIHdpZHRoLFxuICAgICAgaGVpZ2h0LFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRDb25maWcoY29uZmlnOiBDaGFydE9wdGlvbnMpIHtcbiAgICBpZiAoY29uZmlnKSB7XG4gICAgICB0aGlzLl9jb25maWcgPSBjb25maWc7XG4gICAgICB0aGlzLmhhc1Nlcmllc0RhdGEgPSAhIXRoaXMuX2NvbmZpZz8uc2VyaWVzPy5zb21lKChfKSA9PiBfLmRhdGEubGVuZ3RoKTtcblxuICAgICAgaWYgKCF0aGlzLl9jaGFydCkge1xuICAgICAgICB0aGlzLl9jaGFydCA9IG5ldyBUZXRhQ2hhcnQodGhpcy5fY29uZmlnLCB0aGlzLmNoYXJ0KTtcblxuICAgICAgICB0aGlzLl9jaGFydC5wbG90TGluZXNNb3ZlXG4gICAgICAgICAgLnBpcGUodGFrZVdoaWxlKChfKSA9PiB0aGlzLl9hbGl2ZSkpXG4gICAgICAgICAgLnN1YnNjcmliZSgoXykgPT4gdGhpcy5wbG90TGluZXNNb3ZlLmVtaXQoXykpO1xuXG4gICAgICAgIHRoaXMuX2NoYXJ0LnBsb3RCYW5kc01vdmVcbiAgICAgICAgICAucGlwZSh0YWtlV2hpbGUoKF8pID0+IHRoaXMuX2FsaXZlKSlcbiAgICAgICAgICAuc3Vic2NyaWJlKChfKSA9PiB0aGlzLnBsb3RCYW5kc01vdmUuZW1pdChfKSk7XG5cbiAgICAgICAgdGhpcy5fY2hhcnQuc2VyaWVzTW92ZVxuICAgICAgICAgIC5waXBlKHRha2VXaGlsZSgoXykgPT4gdGhpcy5fYWxpdmUpKVxuICAgICAgICAgIC5zdWJzY3JpYmUoKF8pID0+IHRoaXMuc2VyaWVzTW92ZS5lbWl0KF8pKTtcblxuICAgICAgICB0aGlzLl9jaGFydC5wb2ludE1vdmVcbiAgICAgICAgICAucGlwZSh0YWtlV2hpbGUoKF8pID0+IHRoaXMuX2FsaXZlKSlcbiAgICAgICAgICAuc3Vic2NyaWJlKChfKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnBvaW50TW92ZS5lbWl0KF8pO1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuX2NoYXJ0Lnpvb21cbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIHRha2VXaGlsZSgoXykgPT4gdGhpcy5fYWxpdmUpLFxuICAgICAgICAgICAgbWFwKChfKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuem9vbUNoYW5nZS5lbWl0KF8pO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICApXG4gICAgICAgICAgLnN1YnNjcmliZSgpO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5jaGFydCkge1xuICAgICAgICBpZiAodGhpcy5oYXNTZXJpZXNEYXRhKSB7XG4gICAgICAgICAgaWYgKCF0aGlzLl96b29tIHx8IHRoaXMuX3pvb20/LmV2ZW50Py50eXBlID09PSAnZW5kJykge1xuICAgICAgICAgICAgdGhpcy5yZWRyYXcodGhpcy5fY29uZmlnKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgW3N0eWxlLmRpc3BsYXldPVwiaGFzU2VyaWVzRGF0YSA/ICdjb250ZW50cycgOiAnbm9uZSdcIj5cbiAgPGRpdiAjY2hhcnQgY2xhc3M9XCJjaGFydC1jb250YWluZXJcIj48L2Rpdj5cbiAgPGRpdiAqbmdJZj1cInNob3dMZWdlbmRcIiBjbGFzcz1cImxlZ2VuZC1jb250YWluZXJcIj48L2Rpdj5cbjwvZGl2PlxuPGRpdiBbc3R5bGUuZGlzcGxheV09XCIhaGFzU2VyaWVzRGF0YSA/ICdibG9jaycgOiAnbm9uZSdcIiBjbGFzcz1cImNoYXJ0LXBsYWNlaG9sZGVyIHRleHQtYWxpZ24tY2VudGVyXCI+XG4gIDxzcGFuIGNsYXNzPVwiZm9udC1ib2R5LTMgY29sb3ItdGV4dC00MFwiPtCU0LDQvdC90YvQtSDQvtGC0YHRg9GC0YHRgtCy0YPRjtGCPC9zcGFuPlxuPC9kaXY+XG5cblxuIl19