@tetacom/svg-charts 1.1.13 → 1.1.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/chart/chart-container/chart-container.component.mjs +3 -3
- package/esm2020/chart/directives/zoomable.directive.mjs +1 -2
- package/esm2020/chart/service/scale.service.mjs +1 -1
- package/fesm2015/tetacom-svg-charts.mjs +2 -3
- package/fesm2015/tetacom-svg-charts.mjs.map +1 -1
- package/fesm2020/tetacom-svg-charts.mjs +2 -3
- package/fesm2020/tetacom-svg-charts.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -167,9 +167,9 @@ export class ChartContainerComponent {
|
|
|
167
167
|
}
|
|
168
168
|
}
|
|
169
169
|
ChartContainerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: ChartContainerComponent, deps: [{ token: i1.ChartService }, { token: i0.ChangeDetectorRef }, { token: i2.ScaleService }, { token: i3.ZoomService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
170
|
-
ChartContainerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.1", type: ChartContainerComponent, selector: "teta-chart-container", ngImport: i0, template: "<ng-container *ngIf=\"{\n size: size | async,\n config: config | async,\n xAxisMap: xAxisMap | async,\n yAxisMap: yAxisMap | async,\n xScaleMap: xScaleMap | async,\n yScaleMap: yScaleMap | async,\n visibleRect: visibleRect | async,\n brushScale: brushScale | async\n} as data\" xmlns:svg=\"http://www.w3.org/1999/html\">\n <teta-tooltip *ngIf=\"data.config?.tooltip?.enable\"\n [size]=\"data.size\"\n [config]=\"data.config\"></teta-tooltip>\n\n <svg height=\"100%\" width=\"100%\" class=\"position-absolute\">\n <g class=\"y-axis-container\">\n <ng-container *ngFor=\"let item of data.yAxisMap | keyvalue;\">\n <ng-container *ngIf=\"item.value.options.visible\">\n <g\n teta-y-axis\n [axis]=\"item.value\"\n [scale]=\"data.yScaleMap.get(item.key)\"\n [size]=\"data.size\"\n [attr.transform]=\"getTranslate(item.value, data.size) | async\"></g>\n <rect\n tetaZoomable\n fill-opacity=\"0\"\n [brushScale]=\"data.brushScale\"\n [axis]=\"item.value\"\n [config]=\"data.config\"\n [size]=\"data.size\"\n [attr.x]=\"item.value.options.opposite ? 0 : -item.value.selfSize\"\n [attr.y]=\"0\"\n [attr.height]=\"data.size.height\"\n [attr.width]=\"item.value.selfSize\"\n [attr.transform]=\"getTranslate(item.value, data.size) | async\"></rect>\n </ng-container>\n\n </ng-container>\n </g>\n <g class=\"x-axis-container\">\n <ng-container *ngFor=\"let item of data.xAxisMap | keyvalue;\">\n <ng-container *ngIf=\"item.value.options.visible\">\n <g\n teta-x-axis\n [axis]=\"item.value\"\n [scale]=\"data.xScaleMap.get(item.key)\"\n [size]=\"data.size\"\n [attr.transform]=\"getTranslate(item.value, data.size) | async\"></g>\n <rect\n tetaZoomable\n fill-opacity=\"0\"\n [brushScale]=\"data.brushScale\"\n [axis]=\"item.value\"\n [config]=\"data.config\"\n [size]=\"data.size\"\n [attr.x]=\"0\"\n [attr.y]=\"0\"\n [attr.width]=\"data.size.width\"\n [attr.height]=\"item.value.selfSize\"\n [attr.transform]=\"getTranslate(item.value, data.size) | async\"></rect>\n </ng-container>\n </ng-container>\n </g>\n </svg>\n <ng-container *ngIf=\"data.visibleRect?.width > 0 && data.visibleRect?.height > 0\">\n <svg\n tetaBrushable\n tetaZoomable\n [size]=\"data.size\"\n [brushScale]=\"data.brushScale\"\n [config]=\"data.config\"\n [attr.width]=\"data.visibleRect.width\"\n [attr.height]=\"data.visibleRect.height\"\n [attr.
|
|
170
|
+
ChartContainerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.1", type: ChartContainerComponent, selector: "teta-chart-container", ngImport: i0, template: "<ng-container *ngIf=\"{\n size: size | async,\n config: config | async,\n xAxisMap: xAxisMap | async,\n yAxisMap: yAxisMap | async,\n xScaleMap: xScaleMap | async,\n yScaleMap: yScaleMap | async,\n visibleRect: visibleRect | async,\n brushScale: brushScale | async\n} as data\" xmlns:svg=\"http://www.w3.org/1999/html\">\n <teta-tooltip *ngIf=\"data.config?.tooltip?.enable\"\n [size]=\"data.size\"\n [config]=\"data.config\"></teta-tooltip>\n\n <svg height=\"100%\" width=\"100%\" class=\"position-absolute\">\n <g class=\"y-axis-container\">\n <ng-container *ngFor=\"let item of data.yAxisMap | keyvalue;\">\n <ng-container *ngIf=\"item.value.options.visible\">\n <g\n teta-y-axis\n [axis]=\"item.value\"\n [scale]=\"data.yScaleMap.get(item.key)\"\n [size]=\"data.size\"\n [attr.transform]=\"getTranslate(item.value, data.size) | async\"></g>\n <rect\n tetaZoomable\n fill-opacity=\"0\"\n [brushScale]=\"data.brushScale\"\n [axis]=\"item.value\"\n [config]=\"data.config\"\n [size]=\"data.size\"\n [attr.x]=\"item.value.options.opposite ? 0 : -item.value.selfSize\"\n [attr.y]=\"0\"\n [attr.height]=\"data.size.height\"\n [attr.width]=\"item.value.selfSize\"\n [attr.transform]=\"getTranslate(item.value, data.size) | async\"></rect>\n </ng-container>\n\n </ng-container>\n </g>\n <g class=\"x-axis-container\">\n <ng-container *ngFor=\"let item of data.xAxisMap | keyvalue;\">\n <ng-container *ngIf=\"item.value.options.visible\">\n <g\n teta-x-axis\n [axis]=\"item.value\"\n [scale]=\"data.xScaleMap.get(item.key)\"\n [size]=\"data.size\"\n [attr.transform]=\"getTranslate(item.value, data.size) | async\"></g>\n <rect\n tetaZoomable\n fill-opacity=\"0\"\n [brushScale]=\"data.brushScale\"\n [axis]=\"item.value\"\n [config]=\"data.config\"\n [size]=\"data.size\"\n [attr.x]=\"0\"\n [attr.y]=\"0\"\n [attr.width]=\"data.size.width\"\n [attr.height]=\"item.value.selfSize\"\n [attr.transform]=\"getTranslate(item.value, data.size) | async\"></rect>\n </ng-container>\n </ng-container>\n </g>\n </svg>\n <ng-container *ngIf=\"data.visibleRect?.width > 0 && data.visibleRect?.height > 0\">\n <svg\n tetaBrushable\n tetaZoomable\n class=\"position-absolute\"\n [size]=\"data.size\"\n [brushScale]=\"data.brushScale\"\n [config]=\"data.config\"\n [attr.width]=\"data.visibleRect.width\"\n [attr.height]=\"data.visibleRect.height\"\n [attr.viewBox]=\"'0 0 ' + data.visibleRect.width + ' ' + data.visibleRect.height\"\n [style.transform]=\"'translate('+ data.visibleRect.x +'px, '+ data.visibleRect.y +'px)'\"\n (contextmenu)=\"contextMenu($event, data.xScaleMap, data.yScaleMap)\"\n (click)=\"click($event, data.xScaleMap, data.yScaleMap)\"\n (mouseleave)=\"mouseLeave($event)\"\n (mousemove)=\"mouseMove($event)\">\n\n <g class=\"gridlines\"\n teta-gridlines\n *ngIf=\"data.config.gridLines?.enable !== false\"\n [size]=\"data.size\"\n [config]=\"data.config\"\n [xScaleMap]=\"data.xScaleMap\"\n [yScaleMap]=\"data.yScaleMap\"></g>\n\n <g class=\"x-axis-plotband-container\">\n <ng-container *ngFor=\"let axis of data.config.xAxis; let i = index\">\n <g teta-plot-band *ngFor=\"let plotBand of axis.plotBands\"\n [plotBand]=\"plotBand\"\n [scale]=\"data.xScaleMap.get(i)\"\n [size]=\"data.size\"\n [axis]=\"data.xAxisMap.get(i)\"></g>\n </ng-container>\n </g>\n <g class=\"y-axis-plotband-container\">\n <ng-container *ngFor=\"let axis of data.config.yAxis; let i = index\">\n <g teta-plot-band *ngFor=\"let plotBand of axis.plotBands\"\n [plotBand]=\"plotBand\"\n [scale]=\"data.yScaleMap.get(i)\"\n [size]=\"data.size\"\n [axis]=\"data.yAxisMap.get(i)\"></g>\n </ng-container>\n </g>\n <g class=\"x-axis-plotline-container\">\n <ng-container *ngFor=\"let axis of data.config.xAxis; let i = index\">\n <g teta-plot-line *ngFor=\"let plotLine of axis.plotLines\"\n [plotLine]=\"plotLine\"\n [scale]=\"data.xScaleMap.get(i)\"\n [size]=\"data.size\"\n [axis]=\"data.xAxisMap.get(i)\"></g>\n </ng-container>\n </g>\n <g class=\"y-axis-plotline-container\">\n <ng-container *ngFor=\"let axis of data.config.yAxis; let i = index\">\n <g teta-plot-line *ngFor=\"let plotLine of axis.plotLines\"\n [plotLine]=\"plotLine\"\n [scale]=\"data.yScaleMap.get(i)\"\n [size]=\"data.size\"\n [axis]=\"data.yAxisMap.get(i)\"></g>\n </ng-container>\n </g>\n <g class=\"series-container\">\n <g teta-series-host\n *ngFor=\"let series of data.config.series\"\n [config]=\"data.config\"\n [series]=\"series\"></g>\n </g>\n <g class=\"annotations\">\n <g teta-annotation\n *ngFor=\"let annotation of data.config.annotations\"\n [annotation]=\"annotation\"></g>\n </g>\n </svg>\n\n </ng-container>\n</ng-container>\n", styles: [":host{display:flex;flex-direction:column;flex-grow:1;min-width:0;min-height:0}:host .zoomable:hover{cursor:grab}:host .zoomable:active{cursor:grabbing}\n"], components: [{ type: i4.TooltipComponent, selector: "teta-tooltip", inputs: ["size", "config"] }, { type: i5.YAxisComponent, selector: "[teta-y-axis]", inputs: ["axis", "scale", "size"] }, { type: i6.XAxisComponent, selector: "[teta-x-axis]", inputs: ["axis", "scale", "size"] }, { type: i7.GridlinesComponent, selector: "[teta-gridlines]", inputs: ["size", "xScaleMap", "yScaleMap", "config"] }, { type: i8.PlotBandComponent, selector: "[teta-plot-band]", inputs: ["plotBand", "axis", "scale", "size"] }, { type: i9.PlotlineComponent, selector: "[teta-plot-line]", inputs: ["plotLine", "size", "axis", "scale"] }, { type: i10.SeriesHostComponent, selector: "[teta-series-host]", inputs: ["config", "series"] }, { type: i11.AnnotationComponent, selector: "[teta-annotation]", inputs: ["annotation"] }], directives: [{ type: i12.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i12.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i13.ZoomableDirective, selector: "[tetaZoomable]", inputs: ["config", "axis", "size", "brushScale"] }, { type: i14.BrushableDirective, selector: "svg:svg[tetaBrushable]", inputs: ["config", "size", "brushScale"] }], pipes: { "async": i12.AsyncPipe, "keyvalue": i12.KeyValuePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
171
171
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: ChartContainerComponent, decorators: [{
|
|
172
172
|
type: Component,
|
|
173
|
-
args: [{ selector: 'teta-chart-container', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"{\n size: size | async,\n config: config | async,\n xAxisMap: xAxisMap | async,\n yAxisMap: yAxisMap | async,\n xScaleMap: xScaleMap | async,\n yScaleMap: yScaleMap | async,\n visibleRect: visibleRect | async,\n brushScale: brushScale | async\n} as data\" xmlns:svg=\"http://www.w3.org/1999/html\">\n <teta-tooltip *ngIf=\"data.config?.tooltip?.enable\"\n [size]=\"data.size\"\n [config]=\"data.config\"></teta-tooltip>\n\n <svg height=\"100%\" width=\"100%\" class=\"position-absolute\">\n <g class=\"y-axis-container\">\n <ng-container *ngFor=\"let item of data.yAxisMap | keyvalue;\">\n <ng-container *ngIf=\"item.value.options.visible\">\n <g\n teta-y-axis\n [axis]=\"item.value\"\n [scale]=\"data.yScaleMap.get(item.key)\"\n [size]=\"data.size\"\n [attr.transform]=\"getTranslate(item.value, data.size) | async\"></g>\n <rect\n tetaZoomable\n fill-opacity=\"0\"\n [brushScale]=\"data.brushScale\"\n [axis]=\"item.value\"\n [config]=\"data.config\"\n [size]=\"data.size\"\n [attr.x]=\"item.value.options.opposite ? 0 : -item.value.selfSize\"\n [attr.y]=\"0\"\n [attr.height]=\"data.size.height\"\n [attr.width]=\"item.value.selfSize\"\n [attr.transform]=\"getTranslate(item.value, data.size) | async\"></rect>\n </ng-container>\n\n </ng-container>\n </g>\n <g class=\"x-axis-container\">\n <ng-container *ngFor=\"let item of data.xAxisMap | keyvalue;\">\n <ng-container *ngIf=\"item.value.options.visible\">\n <g\n teta-x-axis\n [axis]=\"item.value\"\n [scale]=\"data.xScaleMap.get(item.key)\"\n [size]=\"data.size\"\n [attr.transform]=\"getTranslate(item.value, data.size) | async\"></g>\n <rect\n tetaZoomable\n fill-opacity=\"0\"\n [brushScale]=\"data.brushScale\"\n [axis]=\"item.value\"\n [config]=\"data.config\"\n [size]=\"data.size\"\n [attr.x]=\"0\"\n [attr.y]=\"0\"\n [attr.width]=\"data.size.width\"\n [attr.height]=\"item.value.selfSize\"\n [attr.transform]=\"getTranslate(item.value, data.size) | async\"></rect>\n </ng-container>\n </ng-container>\n </g>\n </svg>\n <ng-container *ngIf=\"data.visibleRect?.width > 0 && data.visibleRect?.height > 0\">\n <svg\n tetaBrushable\n tetaZoomable\n [size]=\"data.size\"\n [brushScale]=\"data.brushScale\"\n [config]=\"data.config\"\n [attr.width]=\"data.visibleRect.width\"\n [attr.height]=\"data.visibleRect.height\"\n [attr.
|
|
173
|
+
args: [{ selector: 'teta-chart-container', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"{\n size: size | async,\n config: config | async,\n xAxisMap: xAxisMap | async,\n yAxisMap: yAxisMap | async,\n xScaleMap: xScaleMap | async,\n yScaleMap: yScaleMap | async,\n visibleRect: visibleRect | async,\n brushScale: brushScale | async\n} as data\" xmlns:svg=\"http://www.w3.org/1999/html\">\n <teta-tooltip *ngIf=\"data.config?.tooltip?.enable\"\n [size]=\"data.size\"\n [config]=\"data.config\"></teta-tooltip>\n\n <svg height=\"100%\" width=\"100%\" class=\"position-absolute\">\n <g class=\"y-axis-container\">\n <ng-container *ngFor=\"let item of data.yAxisMap | keyvalue;\">\n <ng-container *ngIf=\"item.value.options.visible\">\n <g\n teta-y-axis\n [axis]=\"item.value\"\n [scale]=\"data.yScaleMap.get(item.key)\"\n [size]=\"data.size\"\n [attr.transform]=\"getTranslate(item.value, data.size) | async\"></g>\n <rect\n tetaZoomable\n fill-opacity=\"0\"\n [brushScale]=\"data.brushScale\"\n [axis]=\"item.value\"\n [config]=\"data.config\"\n [size]=\"data.size\"\n [attr.x]=\"item.value.options.opposite ? 0 : -item.value.selfSize\"\n [attr.y]=\"0\"\n [attr.height]=\"data.size.height\"\n [attr.width]=\"item.value.selfSize\"\n [attr.transform]=\"getTranslate(item.value, data.size) | async\"></rect>\n </ng-container>\n\n </ng-container>\n </g>\n <g class=\"x-axis-container\">\n <ng-container *ngFor=\"let item of data.xAxisMap | keyvalue;\">\n <ng-container *ngIf=\"item.value.options.visible\">\n <g\n teta-x-axis\n [axis]=\"item.value\"\n [scale]=\"data.xScaleMap.get(item.key)\"\n [size]=\"data.size\"\n [attr.transform]=\"getTranslate(item.value, data.size) | async\"></g>\n <rect\n tetaZoomable\n fill-opacity=\"0\"\n [brushScale]=\"data.brushScale\"\n [axis]=\"item.value\"\n [config]=\"data.config\"\n [size]=\"data.size\"\n [attr.x]=\"0\"\n [attr.y]=\"0\"\n [attr.width]=\"data.size.width\"\n [attr.height]=\"item.value.selfSize\"\n [attr.transform]=\"getTranslate(item.value, data.size) | async\"></rect>\n </ng-container>\n </ng-container>\n </g>\n </svg>\n <ng-container *ngIf=\"data.visibleRect?.width > 0 && data.visibleRect?.height > 0\">\n <svg\n tetaBrushable\n tetaZoomable\n class=\"position-absolute\"\n [size]=\"data.size\"\n [brushScale]=\"data.brushScale\"\n [config]=\"data.config\"\n [attr.width]=\"data.visibleRect.width\"\n [attr.height]=\"data.visibleRect.height\"\n [attr.viewBox]=\"'0 0 ' + data.visibleRect.width + ' ' + data.visibleRect.height\"\n [style.transform]=\"'translate('+ data.visibleRect.x +'px, '+ data.visibleRect.y +'px)'\"\n (contextmenu)=\"contextMenu($event, data.xScaleMap, data.yScaleMap)\"\n (click)=\"click($event, data.xScaleMap, data.yScaleMap)\"\n (mouseleave)=\"mouseLeave($event)\"\n (mousemove)=\"mouseMove($event)\">\n\n <g class=\"gridlines\"\n teta-gridlines\n *ngIf=\"data.config.gridLines?.enable !== false\"\n [size]=\"data.size\"\n [config]=\"data.config\"\n [xScaleMap]=\"data.xScaleMap\"\n [yScaleMap]=\"data.yScaleMap\"></g>\n\n <g class=\"x-axis-plotband-container\">\n <ng-container *ngFor=\"let axis of data.config.xAxis; let i = index\">\n <g teta-plot-band *ngFor=\"let plotBand of axis.plotBands\"\n [plotBand]=\"plotBand\"\n [scale]=\"data.xScaleMap.get(i)\"\n [size]=\"data.size\"\n [axis]=\"data.xAxisMap.get(i)\"></g>\n </ng-container>\n </g>\n <g class=\"y-axis-plotband-container\">\n <ng-container *ngFor=\"let axis of data.config.yAxis; let i = index\">\n <g teta-plot-band *ngFor=\"let plotBand of axis.plotBands\"\n [plotBand]=\"plotBand\"\n [scale]=\"data.yScaleMap.get(i)\"\n [size]=\"data.size\"\n [axis]=\"data.yAxisMap.get(i)\"></g>\n </ng-container>\n </g>\n <g class=\"x-axis-plotline-container\">\n <ng-container *ngFor=\"let axis of data.config.xAxis; let i = index\">\n <g teta-plot-line *ngFor=\"let plotLine of axis.plotLines\"\n [plotLine]=\"plotLine\"\n [scale]=\"data.xScaleMap.get(i)\"\n [size]=\"data.size\"\n [axis]=\"data.xAxisMap.get(i)\"></g>\n </ng-container>\n </g>\n <g class=\"y-axis-plotline-container\">\n <ng-container *ngFor=\"let axis of data.config.yAxis; let i = index\">\n <g teta-plot-line *ngFor=\"let plotLine of axis.plotLines\"\n [plotLine]=\"plotLine\"\n [scale]=\"data.yScaleMap.get(i)\"\n [size]=\"data.size\"\n [axis]=\"data.yAxisMap.get(i)\"></g>\n </ng-container>\n </g>\n <g class=\"series-container\">\n <g teta-series-host\n *ngFor=\"let series of data.config.series\"\n [config]=\"data.config\"\n [series]=\"series\"></g>\n </g>\n <g class=\"annotations\">\n <g teta-annotation\n *ngFor=\"let annotation of data.config.annotations\"\n [annotation]=\"annotation\"></g>\n </g>\n </svg>\n\n </ng-container>\n</ng-container>\n", styles: [":host{display:flex;flex-direction:column;flex-grow:1;min-width:0;min-height:0}:host .zoomable:hover{cursor:grab}:host .zoomable:active{cursor:grabbing}\n"] }]
|
|
174
174
|
}], ctorParameters: function () { return [{ type: i1.ChartService }, { type: i0.ChangeDetectorRef }, { type: i2.ScaleService }, { type: i3.ZoomService }, { type: i0.ElementRef }]; } });
|
|
175
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQtY29udGFpbmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jaGFydC9jaGFydC1jb250YWluZXIvY2hhcnQtY29udGFpbmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy9jaGFydC9jaGFydC1jb250YWluZXIvY2hhcnQtY29udGFpbmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFFdkIsU0FBUyxHQUdWLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFDTCxhQUFhLEVBQ2IsR0FBRyxFQUdILFdBQVcsRUFFWCxHQUFHLEVBQ0gsY0FBYyxHQUNmLE1BQU0sTUFBTSxDQUFDO0FBRWQsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBSS9ELE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7OztBQVVuRCxNQUFNLE9BQU8sdUJBQXVCO0lBOEJsQyxZQUNVLElBQWtCLEVBQ2xCLElBQXVCLEVBQ3ZCLGFBQTJCLEVBQzNCLFlBQXlCLEVBQ3pCLFdBQXVCO1FBSnZCLFNBQUksR0FBSixJQUFJLENBQWM7UUFDbEIsU0FBSSxHQUFKLElBQUksQ0FBbUI7UUFDdkIsa0JBQWEsR0FBYixhQUFhLENBQWM7UUFDM0IsaUJBQVksR0FBWixZQUFZLENBQWE7UUFDekIsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUFwQnpCLHNCQUFpQixHQUFHLElBQUksR0FBRyxFQUNNO2FBQ3RDLEdBQUcsQ0FDRixJQUFJLEVBQ0osQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBTyxFQUFFLEVBQUUsQ0FDcEIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMs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QUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxFQUFFO1FBQ0EsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7O29IQTFPVSx1QkFBdUI7d0dBQXZCLHVCQUF1Qiw0RENsQ3BDLDg4S0EySUE7MkZEekdhLHVCQUF1QjtrQkFObkMsU0FBUzsrQkFDRSxzQkFBc0IsbUJBR2YsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLCBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0lDaGFydENvbmZpZ30gZnJvbSAnLi4vbW9kZWwvaS1jaGFydC1jb25maWcnO1xuaW1wb3J0IHtDaGFydFNlcnZpY2V9IGZyb20gJy4uL3NlcnZpY2UvY2hhcnQuc2VydmljZSc7XG5pbXBvcnQge1xuICBjb21iaW5lTGF0ZXN0LFxuICBtYXAsXG4gIE9ic2VydmFibGUsXG4gIHNoYXJlLFxuICBzaGFyZVJlcGxheSxcbiAgc3RhcnRXaXRoLFxuICB0YXAsXG4gIHdpdGhMYXRlc3RGcm9tLFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7QXhpc30gZnJvbSAnLi4vY29yZS9heGlzL2F4aXMnO1xuaW1wb3J0IHtBeGlzT3JpZW50YXRpb259IGZyb20gJy4uL21vZGVsL2VudW0vYXhpcy1vcmllbnRhdGlvbic7XG5pbXBvcnQge1NjYWxlU2VydmljZX0gZnJvbSAnLi4vc2VydmljZS9zY2FsZS5zZXJ2aWNlJztcbmltcG9ydCB7SUNoYXJ0RXZlbnR9IGZyb20gJy4uL21vZGVsL2ktY2hhcnQtZXZlbnQnO1xuaW1wb3J0IHtab29tU2VydmljZX0gZnJvbSAnLi4vc2VydmljZS96b29tLnNlcnZpY2UnO1xuaW1wb3J0IHtCcnVzaFR5cGV9IGZyb20gJy4uL21vZGVsL2VudW0vYnJ1c2gtdHlwZSc7XG5cbnR5cGUgT3Bwb3NpdGUgPSBib29sZWFuO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd0ZXRhLWNoYXJ0LWNvbnRhaW5lcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9jaGFydC1jb250YWluZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jaGFydC1jb250YWluZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIENoYXJ0Q29udGFpbmVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBjb25maWc6IE9ic2VydmFibGU8SUNoYXJ0Q29uZmlnPjtcblxuICB5QXhpc01hcDogT2JzZXJ2YWJsZTxNYXA8bnVtYmVyLCBBeGlzPj47XG4gIHhBeGlzTWFwOiBPYnNlcnZhYmxlPE1hcDxudW1iZXIsIEF4aXM+PjtcbiAgeVNjYWxlTWFwOiBPYnNlcnZhYmxlPE1hcDxudW1iZXIsIGFueT4+O1xuICB4U2NhbGVNYXA6IE9ic2VydmFibGU8TWFwPG51bWJlciwgYW55Pj47XG4gIHNpemU6IE9ic2VydmFibGU8RE9NUmVjdD47XG4gIHZpc2libGVSZWN0OiBPYnNlcnZhYmxlPGFueT47XG5cbiAgYnJ1c2hTY2FsZTogT2JzZXJ2YWJsZTxhbnk+O1xuXG4gIHByaXZhdGUgX29ic2VydmVyOiBSZXNpemVPYnNlcnZlcjtcbiAgcHJpdmF0ZSB1bmlxSWQ6IHN0cmluZztcblxuICBwcml2YXRlIGZpbHRlclBvc2l0aW9uTWFwID0gbmV3IE1hcDxPcHBvc2l0ZSxcbiAgICAoYXhpczogQXhpcykgPT4gKF86IEF4aXMpID0+IGJvb2xlYW4+KClcbiAgICAuc2V0KFxuICAgICAgdHJ1ZSxcbiAgICAgIChheGlzKSA9PiAoXzogQXhpcykgPT5cbiAgICAgICAgXy5vcHRpb25zLm9wcG9zaXRlICYmIF8ub3B0aW9ucy52aXNpYmxlICYmIGF4aXMuaW5kZXggPD0gXy5pbmRleFxuICAgIClcbiAgICAuc2V0KFxuICAgICAgZmFsc2UsXG4gICAgICAoYXhpcykgPT4gKF86IEF4aXMpID0+XG4gICAgICAgIF8ub3B0aW9ucy5vcHBvc2l0ZSAhPT0gdHJ1ZSAmJlxuICAgICAgICBfLm9wdGlvbnMudmlzaWJsZSAmJlxuICAgICAgICBfLmluZGV4IDw9IGF4aXMuaW5kZXhcbiAgICApO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX3N2YzogQ2hhcnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgX2NkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBfc2NhbGVTZXJ2aWNlOiBTY2FsZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBfem9vbVNlcnZpY2U6IFpvb21TZXJ2aWNlLFxuICAgIHByaXZhdGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWZcbiAgKSB7XG4gICAgdGhpcy5jb25maWcgPSB0aGlzLl9zdmMuY29uZmlnO1xuICAgIHRoaXMuc2l6ZSA9IHRoaXMuX3N2Yy5zaXplO1xuICAgIHRoaXMueUF4aXNNYXAgPSB0aGlzLl9zY2FsZVNlcnZpY2UueUF4aXNNYXA7XG4gICAgdGhpcy54QXhpc01hcCA9IHRoaXMuX3NjYWxlU2VydmljZS54QXhpc01hcDtcbiAgICB0aGlzLnlTY2FsZU1hcCA9IHRoaXMuX3NjYWxlU2VydmljZS55U2NhbGVNYXA7XG4gICAgdGhpcy54U2NhbGVNYXAgPSB0aGlzLl9zY2FsZVNlcnZpY2UueFNjYWxlTWFwO1xuXG4gICAgdGhpcy5icnVzaFNjYWxlID0gY29tYmluZUxhdGVzdChbXG4gICAgICB0aGlzLl9zY2FsZVNlcnZpY2UueFNjYWxlTWFwLFxuICAgICAgdGhpcy5fc2NhbGVTZXJ2aWNlLnlTY2FsZU1hcCxcbiAgICBdKS5waXBlKFxuICAgICAgd2l0aExhdGVzdEZyb20odGhpcy5jb25maWcpLFxuICAgICAgbWFwKChkYXRhOiBbW01hcDxudW1iZXIsIGFueT4sIE1hcDxudW1iZXIsIGFueT5dLCBJQ2hhcnRDb25maWddKSA9PiB7XG4gICAgICAgIGNvbnN0IFtbeCwgeV0sIGNvbmZpZ10gPSBkYXRhO1xuXG4gICAgICAgIHJldHVybiBjb25maWcuYnJ1c2g/LnR5cGUgPT09IEJydXNoVHlwZS54XG4gICAgICAgICAgPyB4LmdldCgwKVxuICAgICAgICAgIDogeS5nZXQoMCk7XG4gICAgICB9KSxcbiAgICAgIHNoYXJlUmVwbGF5KHtcbiAgICAgICAgYnVmZmVyU2l6ZTogMSxcbiAgICAgICAgcmVmQ291bnQ6IHRydWVcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHRoaXMudmlzaWJsZVJlY3QgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICAgIHRoaXMuc2l6ZSxcbiAgICAgIHRoaXMueEF4aXNNYXAsXG4gICAgICB0aGlzLnlBeGlzTWFwLFxuICAgICAgdGhpcy5fem9vbVNlcnZpY2Uuem9vbWVkLFxuICAgIF0pLnBpcGUoXG4gICAgICBtYXAoXG4gICAgICAgIChcbiAgICAgICAgICBkYXRhOiBbRE9NUmVjdCwgTWFwPG51bWJlciwgYW55PiwgTWFwPG51bWJlciwgYW55PiwgSUNoYXJ0RXZlbnQ8QXhpcz5dXG4gICAgICAgICkgPT4ge1xuICAgICAgICAgIGNvbnN0IFtzaXplLCB4LCB5XSA9IGRhdGE7XG4gICAgICAgICAgY29uc3QgeUF4ZXNBcnJheSA9IFsuLi55LnZhbHVlcygpXTtcbiAgICAgICAgICBjb25zdCB4QXhlc0FycmF5ID0gWy4uLngudmFsdWVzKCldO1xuICAgICAgICAgIGNvbnN0IGxlZnQgPSB5QXhlc0FycmF5XG4gICAgICAgICAgICAuZmlsdGVyKChfKSA9PiBfLm9wdGlvbnMub3Bwb3NpdGUgIT09IHRydWUgJiYgXy5vcHRpb25zLnZpc2libGUpXG4gICAgICAgICAgICAucmVkdWNlKHRoaXMuc3VtU2l6ZSwgMCk7XG5cbiAgICAgICAgICBjb25zdCByaWdodCA9IHlBeGVzQXJyYXlcbiAgICAgICAgICAgIC5maWx0ZXIoKF8pID0+IF8ub3B0aW9ucy5vcHBvc2l0ZSAmJiBfLm9wdGlvbnMudmlzaWJsZSlcbiAgICAgICAgICAgIC5yZWR1Y2UodGhpcy5zdW1TaXplLCAwKTtcblxuICAgICAgICAgIGNvbnN0IGJvdHRvbSA9IHhBeGVzQXJyYXlcbiAgICAgICAgICAgIC5maWx0ZXIoKF8pID0+IF8ub3B0aW9ucy5vcHBvc2l0ZSAhPT0gdHJ1ZSAmJiBfLm9wdGlvbnMudmlzaWJsZSlcbiAgICAgICAgICAgIC5yZWR1Y2UodGhpcy5zdW1TaXplLCAwKTtcblxuICAgICAgICAgIGNvbnN0IHRvcCA9IHhBeGVzQXJyYXlcbiAgICAgICAgICAgIC5maWx0ZXIoKF8pID0+IF8ub3B0aW9ucy5vcHBvc2l0ZSAmJiBfLm9wdGlvbnMudmlzaWJsZSlcbiAgICAgICAgICAgIC5yZWR1Y2UodGhpcy5zdW1TaXplLCAwKTtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgeDogbGVmdCxcbiAgICAgICAgICAgIHk6IHRvcCxcbiAgICAgICAgICAgIHdpZHRoOiBzaXplLndpZHRoIC0gbGVmdCAtIHJpZ2h0LFxuICAgICAgICAgICAgaGVpZ2h0OiBzaXplLmhlaWdodCAtIHRvcCAtIGJvdHRvbSxcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICApLFxuICAgICAgdGFwKChfKSA9PiB7XG4gICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnVuaXFJZCA9IChEYXRlLm5vdygpICsgTWF0aC5yYW5kb20oKSkudG9TdHJpbmcoMzYpO1xuICAgIHRoaXMuX29ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKChlbnRyaWVzOiBSZXNpemVPYnNlcnZlckVudHJ5W10pID0+IHtcblxuICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICFBcnJheS5pc0FycmF5KGVudHJpZXMpIHx8XG4gICAgICAgICAgIWVudHJpZXMubGVuZ3RoIHx8XG4gICAgICAgICAgZW50cmllc1swXS5jb250ZW50UmVjdC53aWR0aCA8PSAwIHx8XG4gICAgICAgICAgZW50cmllc1swXS5jb250ZW50UmVjdC5oZWlnaHQgPD0gMFxuICAgICAgICApIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fc3ZjLnNldFNpemUoZW50cmllc1swXS5jb250ZW50UmVjdCk7XG5cbiAgICAgIH0pO1xuXG5cbiAgICB9KTtcbiAgICB0aGlzLl9vYnNlcnZlci5vYnNlcnZlKHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLl9vYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gIH1cblxuICBwcml2YXRlIHN1bVNpemUgPSAoYWNjLCBjdXJyKSA9PiBhY2MgKyBjdXJyLnNlbGZTaXplO1xuXG4gIGdldFRyYW5zbGF0ZShheGlzPzogQXhpcywgc2l6ZT86IERPTVJlY3QpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KFt0aGlzLnhBeGlzTWFwLCB0aGlzLnlBeGlzTWFwXSkucGlwZShcbiAgICAgIG1hcCgoZGF0YTogW01hcDxudW1iZXIsIEF4aXM+LCBNYXA8bnVtYmVyLCBBeGlzPl0pID0+IHtcbiAgICAgICAgY29uc3QgW3gsIHldID0gZGF0YTtcbiAgICAgICAgY29uc3QgeEF4ZXNBcnJheSA9IFsuLi54LnZhbHVlcygpXTtcbiAgICAgICAgY29uc3QgeUF4ZXNBcnJheSA9IFsuLi55LnZhbHVlcygpXTtcblxuICAgICAgICBjb25zdCBvcHBvc2l0ZUZpbHRlciA9IHRoaXMuZmlsdGVyUG9zaXRpb25NYXAuZ2V0KHRydWUpO1xuICAgICAgICBjb25zdCBub25PcHBvc2l0ZUZpbHRlciA9IHRoaXMuZmlsdGVyUG9zaXRpb25NYXAuZ2V0KGZhbHNlKTtcblxuICAgICAgICBjb25zdCBvcHBvc2l0ZU9mZnNldFkgPSB5QXhlc0FycmF5LmZpbHRlcihvcHBvc2l0ZUZpbHRlcihheGlzKSk7XG4gICAgICAgIGNvbnN0IG5vbk9wcG9zaXRlT2Zmc2V0WSA9IHlBeGVzQXJyYXkuZmlsdGVyKG5vbk9wcG9zaXRlRmlsdGVyKGF4aXMpKTtcblxuICAgICAgICBjb25zdCBvcHBvc2l0ZU9mZnNldFggPSB4QXhlc0FycmF5LmZpbHRlcihvcHBvc2l0ZUZpbHRlcihheGlzKSk7XG4gICAgICAgIGNvbnN0IG5vbk9wcG9zaXRlT2Zmc2V0WCA9IHhBeGVzQXJyYXkuZmlsdGVyKG5vbk9wcG9zaXRlRmlsdGVyKGF4aXMpKTtcblxuICAgICAgICBjb25zdCBvcHBvc2l0ZVRyYW5zbGF0ZVkgPSBvcHBvc2l0ZU9mZnNldFkucmVkdWNlKFxuICAgICAgICAgIChhY2MsIGN1cnIpID0+IGFjYyArIGN1cnIuc2VsZlNpemUsXG4gICAgICAgICAgMFxuICAgICAgICApO1xuICAgICAgICBjb25zdCBub25PcHBpc3RlVHJhbnNsYXRlWSA9IG5vbk9wcG9zaXRlT2Zmc2V0WS5yZWR1Y2UoXG4gICAgICAgICAgKGFjYywgY3VycikgPT4gYWNjICsgY3Vyci5zZWxmU2l6ZSxcbiAgICAgICAgICAwXG4gICAgICAgICk7XG5cbiAgICAgICAgY29uc3Qgb3Bwb3NpdGVUcmFuc2xhdGVYID0gb3Bwb3NpdGVPZmZzZXRYLnJlZHVjZShcbiAgICAgICAgICAoYWNjLCBjdXJyKSA9PiBhY2MgKyBjdXJyLnNlbGZTaXplLFxuICAgICAgICAgIDBcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCBub25PcHBpc3RlVHJhbnNsYXRlWCA9IG5vbk9wcG9zaXRlT2Zmc2V0WC5yZWR1Y2UoXG4gICAgICAgICAgKGFjYywgY3VycikgPT4gYWNjICsgY3Vyci5zZWxmU2l6ZSxcbiAgICAgICAgICAwXG4gICAgICAgICk7XG5cbiAgICAgICAgY29uc3QgbGVmdCA9IHlBeGVzQXJyYXlcbiAgICAgICAgICAuZmlsdGVyKChfKSA9PiBfLm9wdGlvbnMudmlzaWJsZSAmJiBfLm9wdGlvbnMub3Bwb3NpdGUgIT09IHRydWUpXG4gICAgICAgICAgLnJlZHVjZSgoYWNjLCBjdXJyKSA9PiBhY2MgKyBjdXJyLnNlbGZTaXplLCAwKTtcblxuICAgICAgICBjb25zdCB0b3AgPSB4QXhlc0FycmF5XG4gICAgICAgICAgLmZpbHRlcigoXykgPT4gXy5vcHRpb25zLnZpc2libGUgJiYgXy5vcHRpb25zLm9wcG9zaXRlID09PSB0cnVlKVxuICAgICAgICAgIC5yZWR1Y2UoKGFjYywgY3VycikgPT4gYWNjICsgY3Vyci5zZWxmU2l6ZSwgMCk7XG5cbiAgICAgICAgaWYgKGF4aXMub3JpZW50YXRpb24gPT09IEF4aXNPcmllbnRhdGlvbi54KSB7XG4gICAgICAgICAgcmV0dXJuIGB0cmFuc2xhdGUoJHtsZWZ0fSwgJHtcbiAgICAgICAgICAgIGF4aXMub3B0aW9ucy5vcHBvc2l0ZVxuICAgICAgICAgICAgICA/IG9wcG9zaXRlVHJhbnNsYXRlWFxuICAgICAgICAgICAgICA6IHNpemUuaGVpZ2h0IC0gbm9uT3BwaXN0ZVRyYW5zbGF0ZVhcbiAgICAgICAgICB9KWA7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYXhpcy5vcmllbnRhdGlvbiA9PT0gQXhpc09yaWVudGF0aW9uLnkpIHtcbiAgICAgICAgICByZXR1cm4gYHRyYW5zbGF0ZSgke1xuICAgICAgICAgICAgYXhpcy5vcHRpb25zLm9wcG9zaXRlXG4gICAgICAgICAgICAgID8gc2l6ZS53aWR0aCAtIG9wcG9zaXRlVHJhbnNsYXRlWVxuICAgICAgICAgICAgICA6IG5vbk9wcGlzdGVUcmFuc2xhdGVZXG4gICAgICAgICAgfSwgJHt0b3B9KWA7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gJ3RyYW5zbGF0ZSgwLCAwKSc7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBpZGVudGlmeShpbmRleCwgaXRlbSkge1xuICAgIHJldHVybiBpdGVtLnZhbHVlLmluZGV4O1xuICB9XG5cbiAgY2xpY2soZXZlbnQ6IFBvaW50ZXJFdmVudCwgeFNjYWxlczogTWFwPG51bWJlciwgYW55PiwgeVNjYWxlczogTWFwPG51bWJlciwgYW55Pikge1xuICAgIGNvbnN0IHggPSB4U2NhbGVzLmdldCgwKTtcbiAgICBjb25zdCB5ID0geVNjYWxlcy5nZXQoMCk7XG4gICAgdGhpcy5fc3ZjLmVtaXRDaGFydENsaWNrKHtcbiAgICAgIGV2ZW50OiBldmVudCxcbiAgICAgIHRhcmdldDoge1xuICAgICAgICB4OiB4LmludmVydChldmVudC5vZmZzZXRYKSxcbiAgICAgICAgeTogeS5pbnZlcnQoZXZlbnQub2Zmc2V0WSlcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGNvbnRleHRNZW51KGV2ZW50OiBNb3VzZUV2ZW50LCB4U2NhbGVzOiBNYXA8bnVtYmVyLCBhbnk+LCB5U2NhbGVzOiBNYXA8bnVtYmVyLCBhbnk+KSB7XG4gICAgY29uc3QgeCA9IHhTY2FsZXMuZ2V0KDApO1xuICAgIGNvbnN0IHkgPSB5U2NhbGVzLmdldCgwKTtcbiAgICB0aGlzLl9zdmMuZW1pdENoYXJ0Q29udGV4dE1lbnUoe1xuICAgICAgZXZlbnQ6IGV2ZW50LFxuICAgICAgdGFyZ2V0OiB7XG4gICAgICAgIHg6IHguaW52ZXJ0KGV2ZW50Lm9mZnNldFgpLFxuICAgICAgICB5OiB5LmludmVydChldmVudC5vZmZzZXRZKVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgbW91c2VNb3ZlKGV2ZW50KSB7XG4gICAgdGhpcy5fc3ZjLnNldFBvaW50ZXJNb3ZlKGV2ZW50KTtcbiAgfVxuXG4gIG1vdXNlTGVhdmUoZXZlbnQpIHtcbiAgICB0aGlzLl9zdmMuc2V0UG9pbnRlck1vdmUoZXZlbnQpO1xuICB9XG5cbiAgaWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy51bmlxSWQ7XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJ7XG4gIHNpemU6IHNpemUgfCBhc3luYyxcbiAgY29uZmlnOiBjb25maWcgfCBhc3luYyxcbiAgeEF4aXNNYXA6IHhBeGlzTWFwIHwgYXN5bmMsXG4gIHlBeGlzTWFwOiB5QXhpc01hcCB8IGFzeW5jLFxuICB4U2NhbGVNYXA6IHhTY2FsZU1hcCB8IGFzeW5jLFxuICB5U2NhbGVNYXA6IHlTY2FsZU1hcCB8IGFzeW5jLFxuICB2aXNpYmxlUmVjdDogdmlzaWJsZVJlY3QgfCBhc3luYyxcbiAgYnJ1c2hTY2FsZTogYnJ1c2hTY2FsZSB8IGFzeW5jXG59IGFzIGRhdGFcIiB4bWxuczpzdmc9XCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L2h0bWxcIj5cbiAgPHRldGEtdG9vbHRpcCAqbmdJZj1cImRhdGEuY29uZmlnPy50b29sdGlwPy5lbmFibGVcIlxuICAgICAgICAgICAgICAgIFtzaXplXT1cImRhdGEuc2l6ZVwiXG4gICAgICAgICAgICAgICAgW2NvbmZpZ109XCJkYXRhLmNvbmZpZ1wiPjwvdGV0YS10b29sdGlwPlxuXG4gIDxzdmcgaGVpZ2h0PVwiMTAwJVwiIHdpZHRoPVwiMTAwJVwiIGNsYXNzPVwicG9zaXRpb24tYWJzb2x1dGVcIj5cbiAgICA8ZyBjbGFzcz1cInktYXhpcy1jb250YWluZXJcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZGF0YS55QXhpc01hcCB8IGtleXZhbHVlO1wiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbS52YWx1ZS5vcHRpb25zLnZpc2libGVcIj5cbiAgICAgICAgICA8Z1xuICAgICAgICAgICAgdGV0YS15LWF4aXNcbiAgICAgICAgICAgIFtheGlzXT1cIml0ZW0udmFsdWVcIlxuICAgICAgICAgICAgW3NjYWxlXT1cImRhdGEueVNjYWxlTWFwLmdldChpdGVtLmtleSlcIlxuICAgICAgICAgICAgW3NpemVdPVwiZGF0YS5zaXplXCJcbiAgICAgICAgICAgIFthdHRyLnRyYW5zZm9ybV09XCJnZXRUcmFuc2xhdGUoaXRlbS52YWx1ZSwgZGF0YS5zaXplKSB8IGFzeW5jXCI+PC9nPlxuICAgICAgICAgIDxyZWN0XG4gICAgICAgICAgICB0ZXRhWm9vbWFibGVcbiAgICAgICAgICAgIGZpbGwtb3BhY2l0eT1cIjBcIlxuICAgICAgICAgICAgW2JydXNoU2NhbGVdPVwiZGF0YS5icnVzaFNjYWxlXCJcbiAgICAgICAgICAgIFtheGlzXT1cIml0ZW0udmFsdWVcIlxuICAgICAgICAgICAgW2NvbmZpZ109XCJkYXRhLmNvbmZpZ1wiXG4gICAgICAgICAgICBbc2l6ZV09XCJkYXRhLnNpemVcIlxuICAgICAgICAgICAgW2F0dHIueF09XCJpdGVtLnZhbHVlLm9wdGlvbnMub3Bwb3NpdGUgPyAwIDogLWl0ZW0udmFsdWUuc2VsZlNpemVcIlxuICAgICAgICAgICAgW2F0dHIueV09XCIwXCJcbiAgICAgICAgICAgIFthdHRyLmhlaWdodF09XCJkYXRhLnNpemUuaGVpZ2h0XCJcbiAgICAgICAgICAgIFthdHRyLndpZHRoXT1cIml0ZW0udmFsdWUuc2VsZlNpemVcIlxuICAgICAgICAgICAgW2F0dHIudHJhbnNmb3JtXT1cImdldFRyYW5zbGF0ZShpdGVtLnZhbHVlLCBkYXRhLnNpemUpIHwgYXN5bmNcIj48L3JlY3Q+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2c+XG4gICAgPGcgY2xhc3M9XCJ4LWF4aXMtY29udGFpbmVyXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIGRhdGEueEF4aXNNYXAgfCBrZXl2YWx1ZTtcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW0udmFsdWUub3B0aW9ucy52aXNpYmxlXCI+XG4gICAgICAgICAgPGdcbiAgICAgICAgICAgIHRldGEteC1heGlzXG4gICAgICAgICAgICBbYXhpc109XCJpdGVtLnZhbHVlXCJcbiAgICAgICAgICAgIFtzY2FsZV09XCJkYXRhLnhTY2FsZU1hcC5nZXQoaXRlbS5rZXkpXCJcbiAgICAgICAgICAgIFtzaXplXT1cImRhdGEuc2l6ZVwiXG4gICAgICAgICAgICBbYXR0ci50cmFuc2Zvcm1dPVwiZ2V0VHJhbnNsYXRlKGl0ZW0udmFsdWUsIGRhdGEuc2l6ZSkgfCBhc3luY1wiPjwvZz5cbiAgICAgICAgICA8cmVjdFxuICAgICAgICAgICAgdGV0YVpvb21hYmxlXG4gICAgICAgICAgICBmaWxsLW9wYWNpdHk9XCIwXCJcbiAgICAgICAgICAgIFticnVzaFNjYWxlXT1cImRhdGEuYnJ1c2hTY2FsZVwiXG4gICAgICAgICAgICBbYXhpc109XCJpdGVtLnZhbHVlXCJcbiAgICAgICAgICAgIFtjb25maWddPVwiZGF0YS5jb25maWdcIlxuICAgICAgICAgICAgW3NpemVdPVwiZGF0YS5zaXplXCJcbiAgICAgICAgICAgIFthdHRyLnhdPVwiMFwiXG4gICAgICAgICAgICBbYXR0ci55XT1cIjBcIlxuICAgICAgICAgICAgW2F0dHIud2lkdGhdPVwiZGF0YS5zaXplLndpZHRoXCJcbiAgICAgICAgICAgIFthdHRyLmhlaWdodF09XCJpdGVtLnZhbHVlLnNlbGZTaXplXCJcbiAgICAgICAgICAgIFthdHRyLnRyYW5zZm9ybV09XCJnZXRUcmFuc2xhdGUoaXRlbS52YWx1ZSwgZGF0YS5zaXplKSB8IGFzeW5jXCI+PC9yZWN0PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZz5cbiAgPC9zdmc+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJkYXRhLnZpc2libGVSZWN0Py53aWR0aCA+IDAgJiYgZGF0YS52aXNpYmxlUmVjdD8uaGVpZ2h0ID4gMFwiPlxuICAgIDxzdmdcbiAgICAgIHRldGFCcnVzaGFibGVcbiAgICAgIHRldGFab29tYWJsZVxuICAgICAgW3NpemVdPVwiZGF0YS5zaXplXCJcbiAgICAgIFticnVzaFNjYWxlXT1cImRhdGEuYnJ1c2hTY2FsZVwiXG4gICAgICBbY29uZmlnXT1cImRhdGEuY29uZmlnXCJcbiAgICAgIFthdHRyLndpZHRoXT1cImRhdGEudmlzaWJsZVJlY3Qud2lkdGhcIlxuICAgICAgW2F0dHIuaGVpZ2h0XT1cImRhdGEudmlzaWJsZVJlY3QuaGVpZ2h0XCJcbiAgICAgIFthdHRyLnRyYW5zZm9ybV09XCIndHJhbnNsYXRlKCcrIGRhdGEudmlzaWJsZVJlY3QueCArJywgJysgZGF0YS52aXNpYmxlUmVjdC55ICsnKSdcIlxuICAgICAgW2F0dHIudmlld0JveF09XCInMCAwICcgKyBkYXRhLnZpc2libGVSZWN0LndpZHRoICsgJyAnICsgZGF0YS52aXNpYmxlUmVjdC5oZWlnaHRcIlxuICAgICAgKGNvbnRleHRtZW51KT1cImNvbnRleHRNZW51KCRldmVudCwgZGF0YS54U2NhbGVNYXAsIGRhdGEueVNjYWxlTWFwKVwiXG4gICAgICAoY2xpY2spPVwiY2xpY2soJGV2ZW50LCBkYXRhLnhTY2FsZU1hcCwgZGF0YS55U2NhbGVNYXApXCJcbiAgICAgIChtb3VzZWxlYXZlKT1cIm1vdXNlTGVhdmUoJGV2ZW50KVwiXG4gICAgICAobW91c2Vtb3ZlKT1cIm1vdXNlTW92ZSgkZXZlbnQpXCI+XG4gICAgICA8ZyBjbGFzcz1cImdyaWRsaW5lc1wiXG4gICAgICAgICB0ZXRhLWdyaWRsaW5lc1xuICAgICAgICAgKm5nSWY9XCJkYXRhLmNvbmZpZy5ncmlkTGluZXM/LmVuYWJsZSAhPT0gZmFsc2VcIlxuICAgICAgICAgW3NpemVdPVwiZGF0YS5zaXplXCJcbiAgICAgICAgIFtjb25maWddPVwiZGF0YS5jb25maWdcIlxuICAgICAgICAgW3hTY2FsZU1hcF09XCJkYXRhLnhTY2FsZU1hcFwiXG4gICAgICAgICBbeVNjYWxlTWFwXT1cImRhdGEueVNjYWxlTWFwXCI+PC9nPlxuXG4gICAgICA8ZyBjbGFzcz1cIngtYXhpcy1wbG90YmFuZC1jb250YWluZXJcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYXhpcyBvZiBkYXRhLmNvbmZpZy54QXhpczsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgICAgIDxnIHRldGEtcGxvdC1iYW5kICpuZ0Zvcj1cImxldCBwbG90QmFuZCBvZiBheGlzLnBsb3RCYW5kc1wiXG4gICAgICAgICAgICAgW3Bsb3RCYW5kXT1cInBsb3RCYW5kXCJcbiAgICAgICAgICAgICBbc2NhbGVdPVwiZGF0YS54U2NhbGVNYXAuZ2V0KGkpXCJcbiAgICAgICAgICAgICBbc2l6ZV09XCJkYXRhLnNpemVcIlxuICAgICAgICAgICAgIFtheGlzXT1cImRhdGEueEF4aXNNYXAuZ2V0KGkpXCI+PC9nPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZz5cbiAgICAgIDxnIGNsYXNzPVwieS1heGlzLXBsb3RiYW5kLWNvbnRhaW5lclwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBheGlzIG9mIGRhdGEuY29uZmlnLnlBeGlzOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICAgICAgPGcgdGV0YS1wbG90LWJhbmQgKm5nRm9yPVwibGV0IHBsb3RCYW5kIG9mIGF4aXMucGxvdEJhbmRzXCJcbiAgICAgICAgICAgICBbcGxvdEJhbmRdPVwicGxvdEJhbmRcIlxuICAgICAgICAgICAgIFtzY2FsZV09XCJkYXRhLnlTY2FsZU1hcC5nZXQoaSlcIlxuICAgICAgICAgICAgIFtzaXplXT1cImRhdGEuc2l6ZVwiXG4gICAgICAgICAgICAgW2F4aXNdPVwiZGF0YS55QXhpc01hcC5nZXQoaSlcIj48L2c+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9nPlxuICAgICAgPGcgY2xhc3M9XCJ4LWF4aXMtcGxvdGxpbmUtY29udGFpbmVyXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGF4aXMgb2YgZGF0YS5jb25maWcueEF4aXM7IGxldCBpID0gaW5kZXhcIj5cbiAgICAgICAgICA8ZyB0ZXRhLXBsb3QtbGluZSAqbmdGb3I9XCJsZXQgcGxvdExpbmUgb2YgYXhpcy5wbG90TGluZXNcIlxuICAgICAgICAgICAgIFtwbG90TGluZV09XCJwbG90TGluZVwiXG4gICAgICAgICAgICAgW3NjYWxlXT1cImRhdGEueFNjYWxlTWFwLmdldChpKVwiXG4gICAgICAgICAgICAgW3NpemVdPVwiZGF0YS5zaXplXCJcbiAgICAgICAgICAgICBbYXhpc109XCJkYXRhLnhBeGlzTWFwLmdldChpKVwiPjwvZz5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2c+XG4gICAgICA8ZyBjbGFzcz1cInktYXhpcy1wbG90bGluZS1jb250YWluZXJcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYXhpcyBvZiBkYXRhLmNvbmZpZy55QXhpczsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgICAgIDxnIHRldGEtcGxvdC1saW5lICpuZ0Zvcj1cImxldCBwbG90TGluZSBvZiBheGlzLnBsb3RMaW5lc1wiXG4gICAgICAgICAgICAgW3Bsb3RMaW5lXT1cInBsb3RMaW5lXCJcbiAgICAgICAgICAgICBbc2NhbGVdPVwiZGF0YS55U2NhbGVNYXAuZ2V0KGkpXCJcbiAgICAgICAgICAgICBbc2l6ZV09XCJkYXRhLnNpemVcIlxuICAgICAgICAgICAgIFtheGlzXT1cImRhdGEueUF4aXNNYXAuZ2V0KGkpXCI+PC9nPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZz5cbiAgICAgIDxnIGNsYXNzPVwic2VyaWVzLWNvbnRhaW5lclwiPlxuICAgICAgICA8ZyB0ZXRhLXNlcmllcy1ob3N0XG4gICAgICAgICAgICpuZ0Zvcj1cImxldCBzZXJpZXMgb2YgZGF0YS5jb25maWcuc2VyaWVzXCJcbiAgICAgICAgICAgW2NvbmZpZ109XCJkYXRhLmNvbmZpZ1wiXG4gICAgICAgICAgIFtzZXJpZXNdPVwic2VyaWVzXCI+PC9nPlxuICAgICAgPC9nPlxuICAgICAgPGcgY2xhc3M9XCJhbm5vdGF0aW9uc1wiPlxuICAgICAgICA8ZyB0ZXRhLWFubm90YXRpb25cbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBhbm5vdGF0aW9uIG9mIGRhdGEuY29uZmlnLmFubm90YXRpb25zXCJcbiAgICAgICAgICAgIFthbm5vdGF0aW9uXT1cImFubm90YXRpb25cIj48L2c+XG4gICAgICA8L2c+XG4gICAgPC9zdmc+XG5cbiAgPC9uZy1jb250YWluZXI+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
|
|
175
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQtY29udGFpbmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jaGFydC9jaGFydC1jb250YWluZXIvY2hhcnQtY29udGFpbmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy9jaGFydC9jaGFydC1jb250YWluZXIvY2hhcnQtY29udGFpbmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFFdkIsU0FBUyxHQUdWLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFDTCxhQUFhLEVBQ2IsR0FBRyxFQUdILFdBQVcsRUFFWCxHQUFHLEVBQ0gsY0FBYyxHQUNmLE1BQU0sTUFBTSxDQUFDO0FBRWQsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBSS9ELE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7OztBQVVuRCxNQUFNLE9BQU8sdUJBQXVCO0lBOEJsQyxZQUNVLElBQWtCLEVBQ2xCLElBQXVCLEVBQ3ZCLGFBQTJCLEVBQzNCLFlBQXlCLEVBQ3pCLFdBQXVCO1FBSnZCLFNBQUksR0FBSixJQUFJLENBQWM7UUFDbEIsU0FBSSxHQUFKLElBQUksQ0FBbUI7UUFDdkIsa0JBQWEsR0FBYixhQUFhLENBQWM7UUFDM0IsaUJBQVksR0FBWixZQUFZLENBQWE7UUFDekIsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUFwQnpCLHNCQUFpQixHQUFHLElBQUksR0FBRyxFQUNNO2FBQ3RDLEdBQUcsQ0FDRixJQUFJLEVBQ0osQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBTyxFQUFFLEVBQUUsQ0FDcEIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMs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QUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxFQUFFO1FBQ0EsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7O29IQTFPVSx1QkFBdUI7d0dBQXZCLHVCQUF1Qiw0RENsQ3BDLGttTEE2SUE7MkZEM0dhLHVCQUF1QjtrQkFObkMsU0FBUzsrQkFDRSxzQkFBc0IsbUJBR2YsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLCBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0lDaGFydENvbmZpZ30gZnJvbSAnLi4vbW9kZWwvaS1jaGFydC1jb25maWcnO1xuaW1wb3J0IHtDaGFydFNlcnZpY2V9IGZyb20gJy4uL3NlcnZpY2UvY2hhcnQuc2VydmljZSc7XG5pbXBvcnQge1xuICBjb21iaW5lTGF0ZXN0LFxuICBtYXAsXG4gIE9ic2VydmFibGUsXG4gIHNoYXJlLFxuICBzaGFyZVJlcGxheSxcbiAgc3RhcnRXaXRoLFxuICB0YXAsXG4gIHdpdGhMYXRlc3RGcm9tLFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7QXhpc30gZnJvbSAnLi4vY29yZS9heGlzL2F4aXMnO1xuaW1wb3J0IHtBeGlzT3JpZW50YXRpb259IGZyb20gJy4uL21vZGVsL2VudW0vYXhpcy1vcmllbnRhdGlvbic7XG5pbXBvcnQge1NjYWxlU2VydmljZX0gZnJvbSAnLi4vc2VydmljZS9zY2FsZS5zZXJ2aWNlJztcbmltcG9ydCB7SUNoYXJ0RXZlbnR9IGZyb20gJy4uL21vZGVsL2ktY2hhcnQtZXZlbnQnO1xuaW1wb3J0IHtab29tU2VydmljZX0gZnJvbSAnLi4vc2VydmljZS96b29tLnNlcnZpY2UnO1xuaW1wb3J0IHtCcnVzaFR5cGV9IGZyb20gJy4uL21vZGVsL2VudW0vYnJ1c2gtdHlwZSc7XG5cbnR5cGUgT3Bwb3NpdGUgPSBib29sZWFuO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd0ZXRhLWNoYXJ0LWNvbnRhaW5lcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9jaGFydC1jb250YWluZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jaGFydC1jb250YWluZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIENoYXJ0Q29udGFpbmVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBjb25maWc6IE9ic2VydmFibGU8SUNoYXJ0Q29uZmlnPjtcblxuICB5QXhpc01hcDogT2JzZXJ2YWJsZTxNYXA8bnVtYmVyLCBBeGlzPj47XG4gIHhBeGlzTWFwOiBPYnNlcnZhYmxlPE1hcDxudW1iZXIsIEF4aXM+PjtcbiAgeVNjYWxlTWFwOiBPYnNlcnZhYmxlPE1hcDxudW1iZXIsIGFueT4+O1xuICB4U2NhbGVNYXA6IE9ic2VydmFibGU8TWFwPG51bWJlciwgYW55Pj47XG4gIHNpemU6IE9ic2VydmFibGU8RE9NUmVjdD47XG4gIHZpc2libGVSZWN0OiBPYnNlcnZhYmxlPGFueT47XG5cbiAgYnJ1c2hTY2FsZTogT2JzZXJ2YWJsZTxhbnk+O1xuXG4gIHByaXZhdGUgX29ic2VydmVyOiBSZXNpemVPYnNlcnZlcjtcbiAgcHJpdmF0ZSB1bmlxSWQ6IHN0cmluZztcblxuICBwcml2YXRlIGZpbHRlclBvc2l0aW9uTWFwID0gbmV3IE1hcDxPcHBvc2l0ZSxcbiAgICAoYXhpczogQXhpcykgPT4gKF86IEF4aXMpID0+IGJvb2xlYW4+KClcbiAgICAuc2V0KFxuICAgICAgdHJ1ZSxcbiAgICAgIChheGlzKSA9PiAoXzogQXhpcykgPT5cbiAgICAgICAgXy5vcHRpb25zLm9wcG9zaXRlICYmIF8ub3B0aW9ucy52aXNpYmxlICYmIGF4aXMuaW5kZXggPD0gXy5pbmRleFxuICAgIClcbiAgICAuc2V0KFxuICAgICAgZmFsc2UsXG4gICAgICAoYXhpcykgPT4gKF86IEF4aXMpID0+XG4gICAgICAgIF8ub3B0aW9ucy5vcHBvc2l0ZSAhPT0gdHJ1ZSAmJlxuICAgICAgICBfLm9wdGlvbnMudmlzaWJsZSAmJlxuICAgICAgICBfLmluZGV4IDw9IGF4aXMuaW5kZXhcbiAgICApO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX3N2YzogQ2hhcnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgX2NkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBfc2NhbGVTZXJ2aWNlOiBTY2FsZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBfem9vbVNlcnZpY2U6IFpvb21TZXJ2aWNlLFxuICAgIHByaXZhdGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWZcbiAgKSB7XG4gICAgdGhpcy5jb25maWcgPSB0aGlzLl9zdmMuY29uZmlnO1xuICAgIHRoaXMuc2l6ZSA9IHRoaXMuX3N2Yy5zaXplO1xuICAgIHRoaXMueUF4aXNNYXAgPSB0aGlzLl9zY2FsZVNlcnZpY2UueUF4aXNNYXA7XG4gICAgdGhpcy54QXhpc01hcCA9IHRoaXMuX3NjYWxlU2VydmljZS54QXhpc01hcDtcbiAgICB0aGlzLnlTY2FsZU1hcCA9IHRoaXMuX3NjYWxlU2VydmljZS55U2NhbGVNYXA7XG4gICAgdGhpcy54U2NhbGVNYXAgPSB0aGlzLl9zY2FsZVNlcnZpY2UueFNjYWxlTWFwO1xuXG4gICAgdGhpcy5icnVzaFNjYWxlID0gY29tYmluZUxhdGVzdChbXG4gICAgICB0aGlzLl9zY2FsZVNlcnZpY2UueFNjYWxlTWFwLFxuICAgICAgdGhpcy5fc2NhbGVTZXJ2aWNlLnlTY2FsZU1hcCxcbiAgICBdKS5waXBlKFxuICAgICAgd2l0aExhdGVzdEZyb20odGhpcy5jb25maWcpLFxuICAgICAgbWFwKChkYXRhOiBbW01hcDxudW1iZXIsIGFueT4sIE1hcDxudW1iZXIsIGFueT5dLCBJQ2hhcnRDb25maWddKSA9PiB7XG4gICAgICAgIGNvbnN0IFtbeCwgeV0sIGNvbmZpZ10gPSBkYXRhO1xuXG4gICAgICAgIHJldHVybiBjb25maWcuYnJ1c2g/LnR5cGUgPT09IEJydXNoVHlwZS54XG4gICAgICAgICAgPyB4LmdldCgwKVxuICAgICAgICAgIDogeS5nZXQoMCk7XG4gICAgICB9KSxcbiAgICAgIHNoYXJlUmVwbGF5KHtcbiAgICAgICAgYnVmZmVyU2l6ZTogMSxcbiAgICAgICAgcmVmQ291bnQ6IHRydWVcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHRoaXMudmlzaWJsZVJlY3QgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICAgIHRoaXMuc2l6ZSxcbiAgICAgIHRoaXMueEF4aXNNYXAsXG4gICAgICB0aGlzLnlBeGlzTWFwLFxuICAgICAgdGhpcy5fem9vbVNlcnZpY2Uuem9vbWVkLFxuICAgIF0pLnBpcGUoXG4gICAgICBtYXAoXG4gICAgICAgIChcbiAgICAgICAgICBkYXRhOiBbRE9NUmVjdCwgTWFwPG51bWJlciwgYW55PiwgTWFwPG51bWJlciwgYW55PiwgSUNoYXJ0RXZlbnQ8QXhpcz5dXG4gICAgICAgICkgPT4ge1xuICAgICAgICAgIGNvbnN0IFtzaXplLCB4LCB5XSA9IGRhdGE7XG4gICAgICAgICAgY29uc3QgeUF4ZXNBcnJheSA9IFsuLi55LnZhbHVlcygpXTtcbiAgICAgICAgICBjb25zdCB4QXhlc0FycmF5ID0gWy4uLngudmFsdWVzKCldO1xuICAgICAgICAgIGNvbnN0IGxlZnQgPSB5QXhlc0FycmF5XG4gICAgICAgICAgICAuZmlsdGVyKChfKSA9PiBfLm9wdGlvbnMub3Bwb3NpdGUgIT09IHRydWUgJiYgXy5vcHRpb25zLnZpc2libGUpXG4gICAgICAgICAgICAucmVkdWNlKHRoaXMuc3VtU2l6ZSwgMCk7XG5cbiAgICAgICAgICBjb25zdCByaWdodCA9IHlBeGVzQXJyYXlcbiAgICAgICAgICAgIC5maWx0ZXIoKF8pID0+IF8ub3B0aW9ucy5vcHBvc2l0ZSAmJiBfLm9wdGlvbnMudmlzaWJsZSlcbiAgICAgICAgICAgIC5yZWR1Y2UodGhpcy5zdW1TaXplLCAwKTtcblxuICAgICAgICAgIGNvbnN0IGJvdHRvbSA9IHhBeGVzQXJyYXlcbiAgICAgICAgICAgIC5maWx0ZXIoKF8pID0+IF8ub3B0aW9ucy5vcHBvc2l0ZSAhPT0gdHJ1ZSAmJiBfLm9wdGlvbnMudmlzaWJsZSlcbiAgICAgICAgICAgIC5yZWR1Y2UodGhpcy5zdW1TaXplLCAwKTtcblxuICAgICAgICAgIGNvbnN0IHRvcCA9IHhBeGVzQXJyYXlcbiAgICAgICAgICAgIC5maWx0ZXIoKF8pID0+IF8ub3B0aW9ucy5vcHBvc2l0ZSAmJiBfLm9wdGlvbnMudmlzaWJsZSlcbiAgICAgICAgICAgIC5yZWR1Y2UodGhpcy5zdW1TaXplLCAwKTtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgeDogbGVmdCxcbiAgICAgICAgICAgIHk6IHRvcCxcbiAgICAgICAgICAgIHdpZHRoOiBzaXplLndpZHRoIC0gbGVmdCAtIHJpZ2h0LFxuICAgICAgICAgICAgaGVpZ2h0OiBzaXplLmhlaWdodCAtIHRvcCAtIGJvdHRvbSxcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICApLFxuICAgICAgdGFwKChfKSA9PiB7XG4gICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnVuaXFJZCA9IChEYXRlLm5vdygpICsgTWF0aC5yYW5kb20oKSkudG9TdHJpbmcoMzYpO1xuICAgIHRoaXMuX29ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKChlbnRyaWVzOiBSZXNpemVPYnNlcnZlckVudHJ5W10pID0+IHtcblxuICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICFBcnJheS5pc0FycmF5KGVudHJpZXMpIHx8XG4gICAgICAgICAgIWVudHJpZXMubGVuZ3RoIHx8XG4gICAgICAgICAgZW50cmllc1swXS5jb250ZW50UmVjdC53aWR0aCA8PSAwIHx8XG4gICAgICAgICAgZW50cmllc1swXS5jb250ZW50UmVjdC5oZWlnaHQgPD0gMFxuICAgICAgICApIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fc3ZjLnNldFNpemUoZW50cmllc1swXS5jb250ZW50UmVjdCk7XG5cbiAgICAgIH0pO1xuXG5cbiAgICB9KTtcbiAgICB0aGlzLl9vYnNlcnZlci5vYnNlcnZlKHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLl9vYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gIH1cblxuICBwcml2YXRlIHN1bVNpemUgPSAoYWNjLCBjdXJyKSA9PiBhY2MgKyBjdXJyLnNlbGZTaXplO1xuXG4gIGdldFRyYW5zbGF0ZShheGlzPzogQXhpcywgc2l6ZT86IERPTVJlY3QpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KFt0aGlzLnhBeGlzTWFwLCB0aGlzLnlBeGlzTWFwXSkucGlwZShcbiAgICAgIG1hcCgoZGF0YTogW01hcDxudW1iZXIsIEF4aXM+LCBNYXA8bnVtYmVyLCBBeGlzPl0pID0+IHtcbiAgICAgICAgY29uc3QgW3gsIHldID0gZGF0YTtcbiAgICAgICAgY29uc3QgeEF4ZXNBcnJheSA9IFsuLi54LnZhbHVlcygpXTtcbiAgICAgICAgY29uc3QgeUF4ZXNBcnJheSA9IFsuLi55LnZhbHVlcygpXTtcblxuICAgICAgICBjb25zdCBvcHBvc2l0ZUZpbHRlciA9IHRoaXMuZmlsdGVyUG9zaXRpb25NYXAuZ2V0KHRydWUpO1xuICAgICAgICBjb25zdCBub25PcHBvc2l0ZUZpbHRlciA9IHRoaXMuZmlsdGVyUG9zaXRpb25NYXAuZ2V0KGZhbHNlKTtcblxuICAgICAgICBjb25zdCBvcHBvc2l0ZU9mZnNldFkgPSB5QXhlc0FycmF5LmZpbHRlcihvcHBvc2l0ZUZpbHRlcihheGlzKSk7XG4gICAgICAgIGNvbnN0IG5vbk9wcG9zaXRlT2Zmc2V0WSA9IHlBeGVzQXJyYXkuZmlsdGVyKG5vbk9wcG9zaXRlRmlsdGVyKGF4aXMpKTtcblxuICAgICAgICBjb25zdCBvcHBvc2l0ZU9mZnNldFggPSB4QXhlc0FycmF5LmZpbHRlcihvcHBvc2l0ZUZpbHRlcihheGlzKSk7XG4gICAgICAgIGNvbnN0IG5vbk9wcG9zaXRlT2Zmc2V0WCA9IHhBeGVzQXJyYXkuZmlsdGVyKG5vbk9wcG9zaXRlRmlsdGVyKGF4aXMpKTtcblxuICAgICAgICBjb25zdCBvcHBvc2l0ZVRyYW5zbGF0ZVkgPSBvcHBvc2l0ZU9mZnNldFkucmVkdWNlKFxuICAgICAgICAgIChhY2MsIGN1cnIpID0+IGFjYyArIGN1cnIuc2VsZlNpemUsXG4gICAgICAgICAgMFxuICAgICAgICApO1xuICAgICAgICBjb25zdCBub25PcHBpc3RlVHJhbnNsYXRlWSA9IG5vbk9wcG9zaXRlT2Zmc2V0WS5yZWR1Y2UoXG4gICAgICAgICAgKGFjYywgY3VycikgPT4gYWNjICsgY3Vyci5zZWxmU2l6ZSxcbiAgICAgICAgICAwXG4gICAgICAgICk7XG5cbiAgICAgICAgY29uc3Qgb3Bwb3NpdGVUcmFuc2xhdGVYID0gb3Bwb3NpdGVPZmZzZXRYLnJlZHVjZShcbiAgICAgICAgICAoYWNjLCBjdXJyKSA9PiBhY2MgKyBjdXJyLnNlbGZTaXplLFxuICAgICAgICAgIDBcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCBub25PcHBpc3RlVHJhbnNsYXRlWCA9IG5vbk9wcG9zaXRlT2Zmc2V0WC5yZWR1Y2UoXG4gICAgICAgICAgKGFjYywgY3VycikgPT4gYWNjICsgY3Vyci5zZWxmU2l6ZSxcbiAgICAgICAgICAwXG4gICAgICAgICk7XG5cbiAgICAgICAgY29uc3QgbGVmdCA9IHlBeGVzQXJyYXlcbiAgICAgICAgICAuZmlsdGVyKChfKSA9PiBfLm9wdGlvbnMudmlzaWJsZSAmJiBfLm9wdGlvbnMub3Bwb3NpdGUgIT09IHRydWUpXG4gICAgICAgICAgLnJlZHVjZSgoYWNjLCBjdXJyKSA9PiBhY2MgKyBjdXJyLnNlbGZTaXplLCAwKTtcblxuICAgICAgICBjb25zdCB0b3AgPSB4QXhlc0FycmF5XG4gICAgICAgICAgLmZpbHRlcigoXykgPT4gXy5vcHRpb25zLnZpc2libGUgJiYgXy5vcHRpb25zLm9wcG9zaXRlID09PSB0cnVlKVxuICAgICAgICAgIC5yZWR1Y2UoKGFjYywgY3VycikgPT4gYWNjICsgY3Vyci5zZWxmU2l6ZSwgMCk7XG5cbiAgICAgICAgaWYgKGF4aXMub3JpZW50YXRpb24gPT09IEF4aXNPcmllbnRhdGlvbi54KSB7XG4gICAgICAgICAgcmV0dXJuIGB0cmFuc2xhdGUoJHtsZWZ0fSwgJHtcbiAgICAgICAgICAgIGF4aXMub3B0aW9ucy5vcHBvc2l0ZVxuICAgICAgICAgICAgICA/IG9wcG9zaXRlVHJhbnNsYXRlWFxuICAgICAgICAgICAgICA6IHNpemUuaGVpZ2h0IC0gbm9uT3BwaXN0ZVRyYW5zbGF0ZVhcbiAgICAgICAgICB9KWA7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYXhpcy5vcmllbnRhdGlvbiA9PT0gQXhpc09yaWVudGF0aW9uLnkpIHtcbiAgICAgICAgICByZXR1cm4gYHRyYW5zbGF0ZSgke1xuICAgICAgICAgICAgYXhpcy5vcHRpb25zLm9wcG9zaXRlXG4gICAgICAgICAgICAgID8gc2l6ZS53aWR0aCAtIG9wcG9zaXRlVHJhbnNsYXRlWVxuICAgICAgICAgICAgICA6IG5vbk9wcGlzdGVUcmFuc2xhdGVZXG4gICAgICAgICAgfSwgJHt0b3B9KWA7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gJ3RyYW5zbGF0ZSgwLCAwKSc7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBpZGVudGlmeShpbmRleCwgaXRlbSkge1xuICAgIHJldHVybiBpdGVtLnZhbHVlLmluZGV4O1xuICB9XG5cbiAgY2xpY2soZXZlbnQ6IFBvaW50ZXJFdmVudCwgeFNjYWxlczogTWFwPG51bWJlciwgYW55PiwgeVNjYWxlczogTWFwPG51bWJlciwgYW55Pikge1xuICAgIGNvbnN0IHggPSB4U2NhbGVzLmdldCgwKTtcbiAgICBjb25zdCB5ID0geVNjYWxlcy5nZXQoMCk7XG4gICAgdGhpcy5fc3ZjLmVtaXRDaGFydENsaWNrKHtcbiAgICAgIGV2ZW50OiBldmVudCxcbiAgICAgIHRhcmdldDoge1xuICAgICAgICB4OiB4LmludmVydChldmVudC5vZmZzZXRYKSxcbiAgICAgICAgeTogeS5pbnZlcnQoZXZlbnQub2Zmc2V0WSlcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGNvbnRleHRNZW51KGV2ZW50OiBNb3VzZUV2ZW50LCB4U2NhbGVzOiBNYXA8bnVtYmVyLCBhbnk+LCB5U2NhbGVzOiBNYXA8bnVtYmVyLCBhbnk+KSB7XG4gICAgY29uc3QgeCA9IHhTY2FsZXMuZ2V0KDApO1xuICAgIGNvbnN0IHkgPSB5U2NhbGVzLmdldCgwKTtcbiAgICB0aGlzLl9zdmMuZW1pdENoYXJ0Q29udGV4dE1lbnUoe1xuICAgICAgZXZlbnQ6IGV2ZW50LFxuICAgICAgdGFyZ2V0OiB7XG4gICAgICAgIHg6IHguaW52ZXJ0KGV2ZW50Lm9mZnNldFgpLFxuICAgICAgICB5OiB5LmludmVydChldmVudC5vZmZzZXRZKVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgbW91c2VNb3ZlKGV2ZW50KSB7XG4gICAgdGhpcy5fc3ZjLnNldFBvaW50ZXJNb3ZlKGV2ZW50KTtcbiAgfVxuXG4gIG1vdXNlTGVhdmUoZXZlbnQpIHtcbiAgICB0aGlzLl9zdmMuc2V0UG9pbnRlck1vdmUoZXZlbnQpO1xuICB9XG5cbiAgaWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy51bmlxSWQ7XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJ7XG4gIHNpemU6IHNpemUgfCBhc3luYyxcbiAgY29uZmlnOiBjb25maWcgfCBhc3luYyxcbiAgeEF4aXNNYXA6IHhBeGlzTWFwIHwgYXN5bmMsXG4gIHlBeGlzTWFwOiB5QXhpc01hcCB8IGFzeW5jLFxuICB4U2NhbGVNYXA6IHhTY2FsZU1hcCB8IGFzeW5jLFxuICB5U2NhbGVNYXA6IHlTY2FsZU1hcCB8IGFzeW5jLFxuICB2aXNpYmxlUmVjdDogdmlzaWJsZVJlY3QgfCBhc3luYyxcbiAgYnJ1c2hTY2FsZTogYnJ1c2hTY2FsZSB8IGFzeW5jXG59IGFzIGRhdGFcIiB4bWxuczpzdmc9XCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L2h0bWxcIj5cbiAgPHRldGEtdG9vbHRpcCAqbmdJZj1cImRhdGEuY29uZmlnPy50b29sdGlwPy5lbmFibGVcIlxuICAgICAgICAgICAgICAgIFtzaXplXT1cImRhdGEuc2l6ZVwiXG4gICAgICAgICAgICAgICAgW2NvbmZpZ109XCJkYXRhLmNvbmZpZ1wiPjwvdGV0YS10b29sdGlwPlxuXG4gIDxzdmcgaGVpZ2h0PVwiMTAwJVwiIHdpZHRoPVwiMTAwJVwiIGNsYXNzPVwicG9zaXRpb24tYWJzb2x1dGVcIj5cbiAgICA8ZyBjbGFzcz1cInktYXhpcy1jb250YWluZXJcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZGF0YS55QXhpc01hcCB8IGtleXZhbHVlO1wiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbS52YWx1ZS5vcHRpb25zLnZpc2libGVcIj5cbiAgICAgICAgICA8Z1xuICAgICAgICAgICAgdGV0YS15LWF4aXNcbiAgICAgICAgICAgIFtheGlzXT1cIml0ZW0udmFsdWVcIlxuICAgICAgICAgICAgW3NjYWxlXT1cImRhdGEueVNjYWxlTWFwLmdldChpdGVtLmtleSlcIlxuICAgICAgICAgICAgW3NpemVdPVwiZGF0YS5zaXplXCJcbiAgICAgICAgICAgIFthdHRyLnRyYW5zZm9ybV09XCJnZXRUcmFuc2xhdGUoaXRlbS52YWx1ZSwgZGF0YS5zaXplKSB8IGFzeW5jXCI+PC9nPlxuICAgICAgICAgIDxyZWN0XG4gICAgICAgICAgICB0ZXRhWm9vbWFibGVcbiAgICAgICAgICAgIGZpbGwtb3BhY2l0eT1cIjBcIlxuICAgICAgICAgICAgW2JydXNoU2NhbGVdPVwiZGF0YS5icnVzaFNjYWxlXCJcbiAgICAgICAgICAgIFtheGlzXT1cIml0ZW0udmFsdWVcIlxuICAgICAgICAgICAgW2NvbmZpZ109XCJkYXRhLmNvbmZpZ1wiXG4gICAgICAgICAgICBbc2l6ZV09XCJkYXRhLnNpemVcIlxuICAgICAgICAgICAgW2F0dHIueF09XCJpdGVtLnZhbHVlLm9wdGlvbnMub3Bwb3NpdGUgPyAwIDogLWl0ZW0udmFsdWUuc2VsZlNpemVcIlxuICAgICAgICAgICAgW2F0dHIueV09XCIwXCJcbiAgICAgICAgICAgIFthdHRyLmhlaWdodF09XCJkYXRhLnNpemUuaGVpZ2h0XCJcbiAgICAgICAgICAgIFthdHRyLndpZHRoXT1cIml0ZW0udmFsdWUuc2VsZlNpemVcIlxuICAgICAgICAgICAgW2F0dHIudHJhbnNmb3JtXT1cImdldFRyYW5zbGF0ZShpdGVtLnZhbHVlLCBkYXRhLnNpemUpIHwgYXN5bmNcIj48L3JlY3Q+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2c+XG4gICAgPGcgY2xhc3M9XCJ4LWF4aXMtY29udGFpbmVyXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIGRhdGEueEF4aXNNYXAgfCBrZXl2YWx1ZTtcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW0udmFsdWUub3B0aW9ucy52aXNpYmxlXCI+XG4gICAgICAgICAgPGdcbiAgICAgICAgICAgIHRldGEteC1heGlzXG4gICAgICAgICAgICBbYXhpc109XCJpdGVtLnZhbHVlXCJcbiAgICAgICAgICAgIFtzY2FsZV09XCJkYXRhLnhTY2FsZU1hcC5nZXQoaXRlbS5rZXkpXCJcbiAgICAgICAgICAgIFtzaXplXT1cImRhdGEuc2l6ZVwiXG4gICAgICAgICAgICBbYXR0ci50cmFuc2Zvcm1dPVwiZ2V0VHJhbnNsYXRlKGl0ZW0udmFsdWUsIGRhdGEuc2l6ZSkgfCBhc3luY1wiPjwvZz5cbiAgICAgICAgICA8cmVjdFxuICAgICAgICAgICAgdGV0YVpvb21hYmxlXG4gICAgICAgICAgICBmaWxsLW9wYWNpdHk9XCIwXCJcbiAgICAgICAgICAgIFticnVzaFNjYWxlXT1cImRhdGEuYnJ1c2hTY2FsZVwiXG4gICAgICAgICAgICBbYXhpc109XCJpdGVtLnZhbHVlXCJcbiAgICAgICAgICAgIFtjb25maWddPVwiZGF0YS5jb25maWdcIlxuICAgICAgICAgICAgW3NpemVdPVwiZGF0YS5zaXplXCJcbiAgICAgICAgICAgIFthdHRyLnhdPVwiMFwiXG4gICAgICAgICAgICBbYXR0ci55XT1cIjBcIlxuICAgICAgICAgICAgW2F0dHIud2lkdGhdPVwiZGF0YS5zaXplLndpZHRoXCJcbiAgICAgICAgICAgIFthdHRyLmhlaWdodF09XCJpdGVtLnZhbHVlLnNlbGZTaXplXCJcbiAgICAgICAgICAgIFthdHRyLnRyYW5zZm9ybV09XCJnZXRUcmFuc2xhdGUoaXRlbS52YWx1ZSwgZGF0YS5zaXplKSB8IGFzeW5jXCI+PC9yZWN0PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZz5cbiAgPC9zdmc+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJkYXRhLnZpc2libGVSZWN0Py53aWR0aCA+IDAgJiYgZGF0YS52aXNpYmxlUmVjdD8uaGVpZ2h0ID4gMFwiPlxuICAgIDxzdmdcbiAgICAgIHRldGFCcnVzaGFibGVcbiAgICAgIHRldGFab29tYWJsZVxuICAgICAgY2xhc3M9XCJwb3NpdGlvbi1hYnNvbHV0ZVwiXG4gICAgICBbc2l6ZV09XCJkYXRhLnNpemVcIlxuICAgICAgW2JydXNoU2NhbGVdPVwiZGF0YS5icnVzaFNjYWxlXCJcbiAgICAgIFtjb25maWddPVwiZGF0YS5jb25maWdcIlxuICAgICAgW2F0dHIud2lkdGhdPVwiZGF0YS52aXNpYmxlUmVjdC53aWR0aFwiXG4gICAgICBbYXR0ci5oZWlnaHRdPVwiZGF0YS52aXNpYmxlUmVjdC5oZWlnaHRcIlxuICAgICAgW2F0dHIudmlld0JveF09XCInMCAwICcgKyBkYXRhLnZpc2libGVSZWN0LndpZHRoICsgJyAnICsgZGF0YS52aXNpYmxlUmVjdC5oZWlnaHRcIlxuICAgICAgW3N0eWxlLnRyYW5zZm9ybV09XCIndHJhbnNsYXRlKCcrIGRhdGEudmlzaWJsZVJlY3QueCArJ3B4LCAnKyBkYXRhLnZpc2libGVSZWN0LnkgKydweCknXCJcbiAgICAgIChjb250ZXh0bWVudSk9XCJjb250ZXh0TWVudSgkZXZlbnQsIGRhdGEueFNjYWxlTWFwLCBkYXRhLnlTY2FsZU1hcClcIlxuICAgICAgKGNsaWNrKT1cImNsaWNrKCRldmVudCwgZGF0YS54U2NhbGVNYXAsIGRhdGEueVNjYWxlTWFwKVwiXG4gICAgICAobW91c2VsZWF2ZSk9XCJtb3VzZUxlYXZlKCRldmVudClcIlxuICAgICAgKG1vdXNlbW92ZSk9XCJtb3VzZU1vdmUoJGV2ZW50KVwiPlxuXG4gICAgICAgIDxnIGNsYXNzPVwiZ3JpZGxpbmVzXCJcbiAgICAgICAgICAgdGV0YS1ncmlkbGluZXNcbiAgICAgICAgICAgKm5nSWY9XCJkYXRhLmNvbmZpZy5ncmlkTGluZXM/LmVuYWJsZSAhPT0gZmFsc2VcIlxuICAgICAgICAgICBbc2l6ZV09XCJkYXRhLnNpemVcIlxuICAgICAgICAgICBbY29uZmlnXT1cImRhdGEuY29uZmlnXCJcbiAgICAgICAgICAgW3hTY2FsZU1hcF09XCJkYXRhLnhTY2FsZU1hcFwiXG4gICAgICAgICAgIFt5U2NhbGVNYXBdPVwiZGF0YS55U2NhbGVNYXBcIj48L2c+XG5cbiAgICAgICAgPGcgY2xhc3M9XCJ4LWF4aXMtcGxvdGJhbmQtY29udGFpbmVyXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYXhpcyBvZiBkYXRhLmNvbmZpZy54QXhpczsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgICAgICAgPGcgdGV0YS1wbG90LWJhbmQgKm5nRm9yPVwibGV0IHBsb3RCYW5kIG9mIGF4aXMucGxvdEJhbmRzXCJcbiAgICAgICAgICAgICAgIFtwbG90QmFuZF09XCJwbG90QmFuZFwiXG4gICAgICAgICAgICAgICBbc2NhbGVdPVwiZGF0YS54U2NhbGVNYXAuZ2V0KGkpXCJcbiAgICAgICAgICAgICAgIFtzaXplXT1cImRhdGEuc2l6ZVwiXG4gICAgICAgICAgICAgICBbYXhpc109XCJkYXRhLnhBeGlzTWFwLmdldChpKVwiPjwvZz5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9nPlxuICAgICAgICA8ZyBjbGFzcz1cInktYXhpcy1wbG90YmFuZC1jb250YWluZXJcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBheGlzIG9mIGRhdGEuY29uZmlnLnlBeGlzOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICAgICAgICA8ZyB0ZXRhLXBsb3QtYmFuZCAqbmdGb3I9XCJsZXQgcGxvdEJhbmQgb2YgYXhpcy5wbG90QmFuZHNcIlxuICAgICAgICAgICAgICAgW3Bsb3RCYW5kXT1cInBsb3RCYW5kXCJcbiAgICAgICAgICAgICAgIFtzY2FsZV09XCJkYXRhLnlTY2FsZU1hcC5nZXQoaSlcIlxuICAgICAgICAgICAgICAgW3NpemVdPVwiZGF0YS5zaXplXCJcbiAgICAgICAgICAgICAgIFtheGlzXT1cImRhdGEueUF4aXNNYXAuZ2V0KGkpXCI+PC9nPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2c+XG4gICAgICAgIDxnIGNsYXNzPVwieC1heGlzLXBsb3RsaW5lLWNvbnRhaW5lclwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGF4aXMgb2YgZGF0YS5jb25maWcueEF4aXM7IGxldCBpID0gaW5kZXhcIj5cbiAgICAgICAgICAgIDxnIHRldGEtcGxvdC1saW5lICpuZ0Zvcj1cImxldCBwbG90TGluZSBvZiBheGlzLnBsb3RMaW5lc1wiXG4gICAgICAgICAgICAgICBbcGxvdExpbmVdPVwicGxvdExpbmVcIlxuICAgICAgICAgICAgICAgW3NjYWxlXT1cImRhdGEueFNjYWxlTWFwLmdldChpKVwiXG4gICAgICAgICAgICAgICBbc2l6ZV09XCJkYXRhLnNpemVcIlxuICAgICAgICAgICAgICAgW2F4aXNdPVwiZGF0YS54QXhpc01hcC5nZXQoaSlcIj48L2c+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZz5cbiAgICAgICAgPGcgY2xhc3M9XCJ5LWF4aXMtcGxvdGxpbmUtY29udGFpbmVyXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYXhpcyBvZiBkYXRhLmNvbmZpZy55QXhpczsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgICAgICAgPGcgdGV0YS1wbG90LWxpbmUgKm5nRm9yPVwibGV0IHBsb3RMaW5lIG9mIGF4aXMucGxvdExpbmVzXCJcbiAgICAgICAgICAgICAgIFtwbG90TGluZV09XCJwbG90TGluZVwiXG4gICAgICAgICAgICAgICBbc2NhbGVdPVwiZGF0YS55U2NhbGVNYXAuZ2V0KGkpXCJcbiAgICAgICAgICAgICAgIFtzaXplXT1cImRhdGEuc2l6ZVwiXG4gICAgICAgICAgICAgICBbYXhpc109XCJkYXRhLnlBeGlzTWFwLmdldChpKVwiPjwvZz5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9nPlxuICAgICAgICA8ZyBjbGFzcz1cInNlcmllcy1jb250YWluZXJcIj5cbiAgICAgICAgICA8ZyB0ZXRhLXNlcmllcy1ob3N0XG4gICAgICAgICAgICAgKm5nRm9yPVwibGV0IHNlcmllcyBvZiBkYXRhLmNvbmZpZy5zZXJpZXNcIlxuICAgICAgICAgICAgIFtjb25maWddPVwiZGF0YS5jb25maWdcIlxuICAgICAgICAgICAgIFtzZXJpZXNdPVwic2VyaWVzXCI+PC9nPlxuICAgICAgICA8L2c+XG4gICAgICAgIDxnIGNsYXNzPVwiYW5ub3RhdGlvbnNcIj5cbiAgICAgICAgICA8ZyB0ZXRhLWFubm90YXRpb25cbiAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgYW5ub3RhdGlvbiBvZiBkYXRhLmNvbmZpZy5hbm5vdGF0aW9uc1wiXG4gICAgICAgICAgICAgW2Fubm90YXRpb25dPVwiYW5ub3RhdGlvblwiPjwvZz5cbiAgICAgICAgPC9nPlxuICAgIDwvc3ZnPlxuXG4gIDwvbmctY29udGFpbmVyPlxuPC9uZy1jb250YWluZXI+XG4iXX0=
|
|
@@ -71,7 +71,6 @@ export class ZoomableDirective {
|
|
|
71
71
|
const maxZoom = this.config.zoom?.max ? (this.zoomAxis.extremes[1] - this.zoomAxis.extremes[0]) / this.config.zoom?.max : 0;
|
|
72
72
|
const minZoom = this.config.zoom?.min ? (this.zoomAxis.extremes[1] - this.zoomAxis.extremes[0]) / this.config.zoom?.min : Infinity;
|
|
73
73
|
this.zoom.scaleExtent([maxZoom, minZoom]);
|
|
74
|
-
console.log(this.zoom.scaleExtent());
|
|
75
74
|
this.zoom.on('start zoom end', this.zoomed);
|
|
76
75
|
this._element.call(this.zoom);
|
|
77
76
|
}
|
|
@@ -139,4 +138,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImpor
|
|
|
139
138
|
type: HostBinding,
|
|
140
139
|
args: ['class.zoomable']
|
|
141
140
|
}] } });
|
|
142
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiem9vbWFibGUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NoYXJ0L2RpcmVjdGl2ZXMvem9vbWFibGUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQWMsV0FBVyxFQUFFLEtBQUssR0FBb0MsTUFBTSxlQUFlLENBQUM7QUFHM0csT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBQ3ZDLE9BQU8sS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ3pCLE9BQU8sRUFBNEIsWUFBWSxFQUFDLE1BQU0sSUFBSSxDQUFDO0FBQzNELE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUNqRCxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sZ0NBQWdDLENBQUM7QUFDL0QsT0FBTyxFQUFrQyxXQUFXLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUMxRixPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFFbkQsT0FBTyxFQUFDLFlBQVksRUFBRSxHQUFHLEVBQWUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvRCxPQUFPLEVBQTBCLE1BQU0sRUFBa0IsU0FBUyxFQUFDLE1BQU0sTUFBTSxDQUFDOzs7O0FBS2hGLE1BQU0sT0FBTyxpQkFBaUI7SUFnQjVCLFlBQ1UsVUFBc0IsRUFDdEIsV0FBd0IsRUFDeEIsZ0JBQWtDLEVBQ2xDLElBQVk7UUFIWixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsU0FBSSxHQUFKLElBQUksQ0FBUTtRQWRpQixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBS2hELFVBQUssR0FBRyxJQUFJLENBQUM7UUFFYixxQkFBZ0IsR0FBRyxZQUFZLENBQUM7UUFrQnhDLFdBQU0sR0FBRyxD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QUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQzNDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUNuQixTQUFTLEVBQ1QsSUFBSSxFQUNKLEVBQUUsQ0FDSCxDQUFDO0lBQ0osQ0FBQzs7OEdBL0xVLGlCQUFpQjtrR0FBakIsaUJBQWlCOzJGQUFqQixpQkFBaUI7a0JBSDdCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGdCQUFnQjtpQkFDM0I7K0tBRVUsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFFaUMsUUFBUTtzQkFBOUMsV0FBVzt1QkFBQyxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0RpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSG9zdEJpbmRpbmcsIElucHV0LCBOZ1pvbmUsIE9uRGVzdHJveSwgU2ltcGxlQ2hhbmdlcyx9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtab29tU2VydmljZX0gZnJvbSAnLi4vc2VydmljZS96b29tLnNlcnZpY2UnO1xuaW1wb3J0IHtJQ2hhcnRDb25maWd9IGZyb20gJy4uL21vZGVsL2ktY2hhcnQtY29uZmlnJztcbmltcG9ydCB7QXhpc30gZnJvbSAnLi4vY29yZS9heGlzL2F4aXMnO1xuaW1wb3J0ICogYXMgZDMgZnJvbSAnZDMnO1xuaW1wb3J0IHtEM1pvb21FdmVudCwgWm9vbUJlaGF2aW9yLCB6b29tSWRlbnRpdHl9IGZyb20gJ2QzJztcbmltcG9ydCB7Wm9vbVR5cGV9IGZyb20gJy4uL21vZGVsL2VudW0vem9vbS10eXBlJztcbmltcG9ydCB7QXhpc09yaWVudGF0aW9ufSBmcm9tICcuLi9tb2RlbC9lbnVtL2F4aXMtb3JpZW50YXRpb24nO1xuaW1wb3J0IHtCcnVzaE1lc3NhZ2UsIElCcm9hZGNhc3RNZXNzYWdlLCBab29tTWVzc2FnZX0gZnJvbSAnLi4vbW9kZWwvaS1icm9hZGNhc3QtbWVzc2FnZSc7XG5pbXBvcnQge0JydXNoVHlwZX0gZnJvbSAnLi4vbW9kZWwvZW51bS9icnVzaC10eXBlJztcbmltcG9ydCB7QnJvYWRjYXN0U2VydmljZX0gZnJvbSAnLi4vc2VydmljZS9icm9hZGNhc3Quc2VydmljZSc7XG5pbXBvcnQge2RlYm91bmNlVGltZSwgdGFwLCB0aHJvdHRsZVRpbWV9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7YW5pbWF0aW9uRnJhbWVTY2hlZHVsZXIsIGZpbHRlciwgcXVldWVTY2hlZHVsZXIsIHRha2VXaGlsZX0gZnJvbSAncnhqcyc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1t0ZXRhWm9vbWFibGVdJyxcbn0pXG5leHBvcnQgY2xhc3MgWm9vbWFibGVEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBjb25maWc/OiBJQ2hhcnRDb25maWc7XG4gIEBJbnB1dCgpIGF4aXM/OiBBeGlzO1xuICBASW5wdXQoKSBzaXplPzogRE9NUmVjdDtcbiAgQElucHV0KCkgYnJ1c2hTY2FsZT86IGFueTtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnpvb21hYmxlJykgcHJpdmF0ZSB6b29tYWJsZSA9IGZhbHNlO1xuXG4gIHByaXZhdGUgX2VsZW1lbnQ6IGQzLlNlbGVjdGlvbjxTVkdFbGVtZW50LCBhbnksIGFueSwgYW55PjtcbiAgcHJpdmF0ZSB6b29tQXhpczogQXhpcztcbiAgcHJpdmF0ZSB6b29tOiBab29tQmVoYXZpb3I8YW55LCBhbnk+O1xuICBwcml2YXRlIGFsaXZlID0gdHJ1ZTtcblxuICBwcml2YXRlIGN1cnJlbnRUcmFuc2Zvcm0gPSB6b29tSWRlbnRpdHk7XG4gIHByaXZhdGUgY3VycmVudFNlbGVjdGlvbjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSB6b29tU2VydmljZTogWm9vbVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBicm9hZGNhc3RTZXJ2aWNlOiBCcm9hZGNhc3RTZXJ2aWNlLFxuICAgIHByaXZhdGUgem9uZTogTmdab25lXG4gICkge1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKHRoaXMuYXhpcz8ub3B0aW9ucz8uem9vbSB8fCB0aGlzLmNvbmZpZz8uem9vbT8uZW5hYmxlKSB7XG4gICAgICB0aGlzLnpvb21hYmxlID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuXG4gIHpvb21lZCA9IChldmVudDogRDNab29tRXZlbnQ8YW55LCBhbnk+KSA9PiB7XG4gICAgaWYgKGV2ZW50LnNvdXJjZUV2ZW50KSB7XG5cbiAgICAgIGlmIChPYmplY3Qua2V5cyhldmVudC5zb3VyY2VFdmVudCkubGVuZ3RoICE9PSAwKSB7XG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRUcmFuc2Zvcm0gPT09IGV2ZW50LnRyYW5zZm9ybSAmJiBldmVudC50eXBlICE9PSAnZW5kJykge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG9yaWdpbiA9IHRoaXMuYnJ1c2hTY2FsZS5jb3B5KCkuZG9tYWluKHRoaXMuem9vbUF4aXMuZXh0cmVtZXMpO1xuXG4gICAgICAgIGxldCBkb21haW4gPSB0aGlzLmNvbmZpZy56b29tPy50eXBlID09PSBab29tVHlwZS55ID9cbiAgICAgICAgICBldmVudC50cmFuc2Zvcm0ucmVzY2FsZVkob3JpZ2luKS5kb21haW4oKSA6XG4gICAgICAgICAgZXZlbnQudHJhbnNmb3JtLnJlc2NhbGVYKG9yaWdpbikuZG9tYWluKCk7XG5cbiAgICAgICAgY29uc3QgbWVzc2FnZSA9IG5ldyBab29tTWVzc2FnZSh7XG4gICAgICAgICAgZXZlbnQsXG4gICAgICAgICAgYXhpczogdGhpcy56b29tQXhpcyxcbiAgICAgICAgICBicnVzaERvbWFpbjogZG9tYWluXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuYnJvYWRjYXN0U2VydmljZS5icm9hZGNhc3Rab29tKHtcbiAgICAgICAgICBjaGFubmVsOiB0aGlzLmNvbmZpZz8uem9vbT8uc3luY0NoYW5uZWwsXG4gICAgICAgICAgbWVzc2FnZSxcbiAgICAgICAgfSk7XG5cbiAgICAgIH1cblxuICAgICAgdGhpcy56b29tU2VydmljZS5zZXRab29tKHtcbiAgICAgICAgZXZlbnQsXG4gICAgICAgIHRhcmdldDogdGhpcy56b29tQXhpc1xuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuY3VycmVudFRyYW5zZm9ybSA9IGV2ZW50LnRyYW5zZm9ybTtcbiAgICB9XG4gIH07XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIGNvbnN0IGVuYWJsZSA9IHRoaXMuYXhpcz8ub3B0aW9ucz8uem9vbSAmJiB0aGlzLmF4aXM/Lm9wdGlvbnMudmlzaWJsZSB8fCB0aGlzLmNvbmZpZz8uem9vbT8uZW5hYmxlO1xuXG4gICAgaWYgKCFlbmFibGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9lbGVtZW50ID0gZDMuc2VsZWN0KHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcblxuICAgIHRoaXMuem9vbSA9IGQzXG4gICAgICAuem9vbSgpXG4gICAgICAuZXh0ZW50KFtcbiAgICAgICAgWzAsIDBdLFxuICAgICAgICBbdGhpcy5zaXplLndpZHRoLCB0aGlzLnNpemUuaGVpZ2h0XSxcbiAgICAgIF0pO1xuXG5cbiAgICBjb25zdCBjb21tb25ab29tQXhpcyA9IEF4aXMuY3JlYXRlQXhpcyhcbiAgICAgIHRoaXMuY29uZmlnPy56b29tLnR5cGUgPT09IFpvb21UeXBlLnggPyBBeGlzT3JpZW50YXRpb24ueCA6IEF4aXNPcmllbnRhdGlvbi55LFxuICAgICAgdGhpcy5jb25maWcsXG4gICAgICAwLFxuICAgICAgdHJ1ZVxuICAgICk7XG5cbiAgICB0aGlzLnpvb21BeGlzID0gdGhpcy5heGlzID8/IGNvbW1vblpvb21BeGlzO1xuXG4gICAgaWYgKGVuYWJsZSkge1xuXG5cbiAgICAgIGNvbnN0IG1heFpvb20gPSB0aGlzLmNvbmZpZy56b29tPy5tYXggPyAodGhpcy56b29tQXhpcy5leHRyZW1lc1sxXSAtIHRoaXMuem9vbUF4aXMuZXh0cmVtZXNbMF0pIC8gdGhpcy5jb25maWcuem9vbT8ubWF4IDogMDtcbiAgICAgIGNvbnN0IG1pblpvb20gPSB0aGlzLmNvbmZpZy56b29tPy5taW4gPyAodGhpcy56b29tQXhpcy5leHRyZW1lc1sxXSAtIHRoaXMuem9vbUF4aXMuZXh0cmVtZXNbMF0pIC8gdGhpcy5jb25maWcuem9vbT8ubWluIDogSW5maW5pdHk7XG5cbiAgICAgIHRoaXMuem9vbS5zY2FsZUV4dGVudChbbWF4Wm9vbSwgbWluWm9vbV0pO1xuXG4gICAgICBjb25zb2xlLmxvZyh0aGlzLnpvb20uc2NhbGVFeHRlbnQoKSlcblxuXG4gICAgICB0aGlzLnpvb20ub24oJ3N0YXJ0IHpvb20gZW5kJywgdGhpcy56b29tZWQpO1xuICAgICAgdGhpcy5fZWxlbWVudC5jYWxsKHRoaXMuem9vbSk7XG4gICAgfVxuXG5cbiAgICAvLyBTdWJzY3JpYmUgdG8gem9vbSBldmVudHNcbiAgICB0aGlzLmJyb2FkY2FzdFNlcnZpY2Uuc3Vic2NyaWJlVG9ab29tKHRoaXMuY29uZmlnPy56b29tLnN5bmNDaGFubmVsKS5waXBlKFxuICAgICAgZmlsdGVyKChtOiBJQnJvYWRjYXN0TWVzc2FnZTxab29tTWVzc2FnZT4pID0+IG0ubWVzc2FnZS5ldmVudC5zb3VyY2VFdmVudCBpbnN0YW5jZW9mIE1vdXNlRXZlbnQgfHwgbS5tZXNzYWdlLmV2ZW50LnNvdXJjZUV2ZW50IGluc3RhbmNlb2YgV2hlZWxFdmVudCksXG4gICAgICBkZWJvdW5jZVRpbWUoMzApLFxuICAgICAgZmlsdGVyKChtOiBJQnJvYWRjYXN0TWVzc2FnZTxab29tTWVzc2FnZT4pID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuem9vbUF4aXMuaW5kZXggPT09IG0ubWVzc2FnZT8uYXhpcz8uaW5kZXggJiYgdGhpcy56b29tQXhpcy5vcmllbnRhdGlvbiA9PT0gbS5tZXNzYWdlPy5heGlzPy5vcmllbnRhdGlvbjtcbiAgICAgIH0pLFxuICAgICAgdGFwKChtOiBJQnJvYWRjYXN0TWVzc2FnZTxab29tTWVzc2FnZT4pID0+IHtcblxuICAgICAgICBjb25zdCBjdXJyZW50VHJhbnNmb3JtID0gZDMuem9vbVRyYW5zZm9ybShcbiAgICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudFxuICAgICAgICApO1xuXG4gICAgICAgIGlmIChjdXJyZW50VHJhbnNmb3JtICE9PSBtLm1lc3NhZ2UuZXZlbnQudHJhbnNmb3JtKSB7XG4gICAgICAgICAgdGhpcy5fZWxlbWVudC5jYWxsKHRoaXMuem9vbS50cmFuc2Zvcm0sIG0ubWVzc2FnZS5ldmVudC50cmFuc2Zvcm0sIG51bGwsIHt9KTtcbiAgICAgICAgfVxuXG4gICAgICB9KSxcbiAgICAgIHRha2VXaGlsZSgoXykgPT4gdGhpcy5hbGl2ZSlcbiAgICApLnN1YnNjcmliZSgpO1xuXG5cbiAgICAvLyBTdWJzY3JpYmUgdG8gYnJ1c2ggZXZlbnRzIHggb3IgeVxuXG4gICAgaWYgKCh0aGlzLmNvbmZpZy5icnVzaD8udHlwZSA9PT0gQnJ1c2hUeXBlLnggJiYgdGhpcy56b29tQXhpcy5vcmllbnRhdGlvbiA9PT0gQXhpc09yaWVudGF0aW9uLngpIHx8XG4gICAgICAodGhpcy5jb25maWcuYnJ1c2g/LnR5cGUgPT09IEJydXNoVHlwZS55ICYmIHRoaXMuem9vbUF4aXMub3JpZW50YXRpb24gPT09IEF4aXNPcmllbnRhdGlvbi55KSkge1xuICAgICAgdGhpcy5icm9hZGNhc3RTZXJ2aWNlLnN1YnNjcmliZVRvQnJ1c2godGhpcy5jb25maWc/Lnpvb20uc3luY0NoYW5uZWwpLnBpcGUoXG4gICAgICAgIGRlYm91bmNlVGltZSgzMCksXG4gICAgICAgIGZpbHRlcigobTogSUJyb2FkY2FzdE1lc3NhZ2U8QnJ1c2hNZXNzYWdlPikgPT4gQm9vbGVhbihtLm1lc3NhZ2Uuc2VsZWN0aW9uKSksXG4gICAgICAgIHRhcCgobTogSUJyb2FkY2FzdE1lc3NhZ2U8QnJ1c2hNZXNzYWdlPikgPT4ge1xuXG4gICAgICAgICAgY29uc3QgY3VycmVudFRyYW5zZm9ybSA9IGQzLnpvb21UcmFuc2Zvcm0oXG4gICAgICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudFxuICAgICAgICAgICk7XG5cbiAgICAgICAgICBpZiAoIW0ubWVzc2FnZS5ldmVudCAmJiB0aGlzLmN1cnJlbnRTZWxlY3Rpb24gJiYgY3VycmVudFRyYW5zZm9ybS5rICE9PSAxKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy5jdXJyZW50U2VsZWN0aW9uID0gbS5tZXNzYWdlLnNlbGVjdGlvbjtcblxuICAgICAgICAgIHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy51cGRhdGVab29tKG0pO1xuICAgICAgICAgICAgfSwgMTAwKVxuICAgICAgICAgIH0pXG5cblxuICAgICAgICB9KSxcbiAgICAgICAgdGFrZVdoaWxlKChfKSA9PiB0aGlzLmFsaXZlKVxuICAgICAgKS5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuem9vbT8ub24oJ3N0YXJ0IHpvb20gZW5kJywgbnVsbCk7XG4gICAgdGhpcy5hbGl2ZSA9IGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVab29tKG06IElCcm9hZGNhc3RNZXNzYWdlPEJydXNoTWVzc2FnZT4pIHtcbiAgICBjb25zdCBzID0gbS5tZXNzYWdlLnNlbGVjdGlvbjtcbiAgICB0aGlzLmJydXNoU2NhbGUuZG9tYWluKHRoaXMuem9vbUF4aXMuZXh0cmVtZXMpO1xuICAgIGNvbnN0IGRvbWFpbiA9IHRoaXMuYnJ1c2hTY2FsZS5kb21haW4oKTtcblxuICAgIGNvbnN0IHNjYWxlID0gKGRvbWFpblsxXSAtIGRvbWFpblswXSkgLyAoc1sxXSAtIHNbMF0pO1xuXG4gICAgbGV0IHRyYW5zZm9ybSA9IHpvb21JZGVudGl0eS5zY2FsZShzY2FsZSk7XG5cbiAgICBpZiAobS5tZXNzYWdlPy5icnVzaFR5cGUgPT09IEJydXNoVHlwZS54KSB7XG4gICAgICB0cmFuc2Zvcm0gPSB0cmFuc2Zvcm0udHJhbnNsYXRlKC10aGlzLmJydXNoU2NhbGUoc1swXSksIDApO1xuICAgIH1cbiAgICBpZiAobS5tZXNzYWdlPy5icnVzaFR5cGUgPT09IEJydXNoVHlwZS55KSB7XG4gICAgICB0cmFuc2Zvcm0gPSB0cmFuc2Zvcm0udHJhbnNsYXRlKDAsIC10aGlzLmJydXNoU2NhbGUoc1swXSkpO1xuICAgIH1cblxuICAgIHRoaXMuX2VsZW1lbnQudHJhbnNpdGlvbigpLmR1cmF0aW9uKDE1MCkuY2FsbChcbiAgICAgIHRoaXMuem9vbS50cmFuc2Zvcm0sXG4gICAgICB0cmFuc2Zvcm0sXG4gICAgICBudWxsLFxuICAgICAge31cbiAgICApO1xuICB9XG59XG4iXX0=
|
|
141
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiem9vbWFibGUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NoYXJ0L2RpcmVjdGl2ZXMvem9vbWFibGUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQWMsV0FBVyxFQUFFLEtBQUssR0FBb0MsTUFBTSxlQUFlLENBQUM7QUFHM0csT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBQ3ZDLE9BQU8sS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ3pCLE9BQU8sRUFBNEIsWUFBWSxFQUFDLE1BQU0sSUFBSSxDQUFDO0FBQzNELE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUNqRCxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sZ0NBQWdDLENBQUM7QUFDL0QsT0FBTyxFQUFrQyxXQUFXLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUMxRixPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFFbkQsT0FBTyxFQUFDLFlBQVksRUFBRSxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRCxPQUFPLEVBQUMsTUFBTSxFQUFFLFNBQVMsRUFBQyxNQUFNLE1BQU0sQ0FBQzs7OztBQUt2QyxNQUFNLE9BQU8saUJBQWlCO0lBZ0I1QixZQUNVLFVBQXNCLEVBQ3RCLFdBQXdCLEVBQ3hCLGdCQUFrQyxFQUNsQyxJQUFZO1FBSFosZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLFNBQUksR0FBSixJQUFJLENBQVE7UUFkaUIsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUtoRCxVQUFLLEdBQUcsSUFBSSxDQUFDO1FBRWIscUJBQWdCLEdBQUcsWUFBWSxDQUFDO1FBa0J4QyxXQUFNLEdBQUcsQ0FB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QyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFDbkIsU0FBUyxFQUNULElBQUksRUFDSixFQUFFLENBQ0gsQ0FBQztJQUNKLENBQUM7OzhHQTVMVSxpQkFBaUI7a0dBQWpCLGlCQUFpQjsyRkFBakIsaUJBQWlCO2tCQUg3QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxnQkFBZ0I7aUJBQzNCOytLQUVVLE1BQU07c0JBQWQsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRWlDLFFBQVE7c0JBQTlDLFdBQVc7dUJBQUMsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEhvc3RCaW5kaW5nLCBJbnB1dCwgTmdab25lLCBPbkRlc3Ryb3ksIFNpbXBsZUNoYW5nZXMsfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Wm9vbVNlcnZpY2V9IGZyb20gJy4uL3NlcnZpY2Uvem9vbS5zZXJ2aWNlJztcbmltcG9ydCB7SUNoYXJ0Q29uZmlnfSBmcm9tICcuLi9tb2RlbC9pLWNoYXJ0LWNvbmZpZyc7XG5pbXBvcnQge0F4aXN9IGZyb20gJy4uL2NvcmUvYXhpcy9heGlzJztcbmltcG9ydCAqIGFzIGQzIGZyb20gJ2QzJztcbmltcG9ydCB7RDNab29tRXZlbnQsIFpvb21CZWhhdmlvciwgem9vbUlkZW50aXR5fSBmcm9tICdkMyc7XG5pbXBvcnQge1pvb21UeXBlfSBmcm9tICcuLi9tb2RlbC9lbnVtL3pvb20tdHlwZSc7XG5pbXBvcnQge0F4aXNPcmllbnRhdGlvbn0gZnJvbSAnLi4vbW9kZWwvZW51bS9heGlzLW9yaWVudGF0aW9uJztcbmltcG9ydCB7QnJ1c2hNZXNzYWdlLCBJQnJvYWRjYXN0TWVzc2FnZSwgWm9vbU1lc3NhZ2V9IGZyb20gJy4uL21vZGVsL2ktYnJvYWRjYXN0LW1lc3NhZ2UnO1xuaW1wb3J0IHtCcnVzaFR5cGV9IGZyb20gJy4uL21vZGVsL2VudW0vYnJ1c2gtdHlwZSc7XG5pbXBvcnQge0Jyb2FkY2FzdFNlcnZpY2V9IGZyb20gJy4uL3NlcnZpY2UvYnJvYWRjYXN0LnNlcnZpY2UnO1xuaW1wb3J0IHtkZWJvdW5jZVRpbWUsIHRhcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtmaWx0ZXIsIHRha2VXaGlsZX0gZnJvbSAncnhqcyc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1t0ZXRhWm9vbWFibGVdJyxcbn0pXG5leHBvcnQgY2xhc3MgWm9vbWFibGVEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBjb25maWc/OiBJQ2hhcnRDb25maWc7XG4gIEBJbnB1dCgpIGF4aXM/OiBBeGlzO1xuICBASW5wdXQoKSBzaXplPzogRE9NUmVjdDtcbiAgQElucHV0KCkgYnJ1c2hTY2FsZT86IGFueTtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnpvb21hYmxlJykgcHJpdmF0ZSB6b29tYWJsZSA9IGZhbHNlO1xuXG4gIHByaXZhdGUgX2VsZW1lbnQ6IGQzLlNlbGVjdGlvbjxTVkdFbGVtZW50LCBhbnksIGFueSwgYW55PjtcbiAgcHJpdmF0ZSB6b29tQXhpczogQXhpcztcbiAgcHJpdmF0ZSB6b29tOiBab29tQmVoYXZpb3I8YW55LCBhbnk+O1xuICBwcml2YXRlIGFsaXZlID0gdHJ1ZTtcblxuICBwcml2YXRlIGN1cnJlbnRUcmFuc2Zvcm0gPSB6b29tSWRlbnRpdHk7XG4gIHByaXZhdGUgY3VycmVudFNlbGVjdGlvbjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSB6b29tU2VydmljZTogWm9vbVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBicm9hZGNhc3RTZXJ2aWNlOiBCcm9hZGNhc3RTZXJ2aWNlLFxuICAgIHByaXZhdGUgem9uZTogTmdab25lXG4gICkge1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKHRoaXMuYXhpcz8ub3B0aW9ucz8uem9vbSB8fCB0aGlzLmNvbmZpZz8uem9vbT8uZW5hYmxlKSB7XG4gICAgICB0aGlzLnpvb21hYmxlID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuXG4gIHpvb21lZCA9IChldmVudDogRDNab29tRXZlbnQ8YW55LCBhbnk+KSA9PiB7XG4gICAgaWYgKGV2ZW50LnNvdXJjZUV2ZW50KSB7XG5cbiAgICAgIGlmIChPYmplY3Qua2V5cyhldmVudC5zb3VyY2VFdmVudCkubGVuZ3RoICE9PSAwKSB7XG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRUcmFuc2Zvcm0gPT09IGV2ZW50LnRyYW5zZm9ybSAmJiBldmVudC50eXBlICE9PSAnZW5kJykge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG9yaWdpbiA9IHRoaXMuYnJ1c2hTY2FsZS5jb3B5KCkuZG9tYWluKHRoaXMuem9vbUF4aXMuZXh0cmVtZXMpO1xuXG4gICAgICAgIGxldCBkb21haW4gPSB0aGlzLmNvbmZpZy56b29tPy50eXBlID09PSBab29tVHlwZS55ID9cbiAgICAgICAgICBldmVudC50cmFuc2Zvcm0ucmVzY2FsZVkob3JpZ2luKS5kb21haW4oKSA6XG4gICAgICAgICAgZXZlbnQudHJhbnNmb3JtLnJlc2NhbGVYKG9yaWdpbikuZG9tYWluKCk7XG5cbiAgICAgICAgY29uc3QgbWVzc2FnZSA9IG5ldyBab29tTWVzc2FnZSh7XG4gICAgICAgICAgZXZlbnQsXG4gICAgICAgICAgYXhpczogdGhpcy56b29tQXhpcyxcbiAgICAgICAgICBicnVzaERvbWFpbjogZG9tYWluXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuYnJvYWRjYXN0U2VydmljZS5icm9hZGNhc3Rab29tKHtcbiAgICAgICAgICBjaGFubmVsOiB0aGlzLmNvbmZpZz8uem9vbT8uc3luY0NoYW5uZWwsXG4gICAgICAgICAgbWVzc2FnZSxcbiAgICAgICAgfSk7XG5cbiAgICAgIH1cblxuICAgICAgdGhpcy56b29tU2VydmljZS5zZXRab29tKHtcbiAgICAgICAgZXZlbnQsXG4gICAgICAgIHRhcmdldDogdGhpcy56b29tQXhpc1xuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuY3VycmVudFRyYW5zZm9ybSA9IGV2ZW50LnRyYW5zZm9ybTtcbiAgICB9XG4gIH07XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIGNvbnN0IGVuYWJsZSA9IHRoaXMuYXhpcz8ub3B0aW9ucz8uem9vbSAmJiB0aGlzLmF4aXM/Lm9wdGlvbnMudmlzaWJsZSB8fCB0aGlzLmNvbmZpZz8uem9vbT8uZW5hYmxlO1xuXG4gICAgaWYgKCFlbmFibGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9lbGVtZW50ID0gZDMuc2VsZWN0KHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcblxuICAgIHRoaXMuem9vbSA9IGQzXG4gICAgICAuem9vbSgpXG4gICAgICAuZXh0ZW50KFtcbiAgICAgICAgWzAsIDBdLFxuICAgICAgICBbdGhpcy5zaXplLndpZHRoLCB0aGlzLnNpemUuaGVpZ2h0XSxcbiAgICAgIF0pO1xuXG5cbiAgICBjb25zdCBjb21tb25ab29tQXhpcyA9IEF4aXMuY3JlYXRlQXhpcyhcbiAgICAgIHRoaXMuY29uZmlnPy56b29tLnR5cGUgPT09IFpvb21UeXBlLnggPyBBeGlzT3JpZW50YXRpb24ueCA6IEF4aXNPcmllbnRhdGlvbi55LFxuICAgICAgdGhpcy5jb25maWcsXG4gICAgICAwLFxuICAgICAgdHJ1ZVxuICAgICk7XG5cbiAgICB0aGlzLnpvb21BeGlzID0gdGhpcy5heGlzID8/IGNvbW1vblpvb21BeGlzO1xuXG4gICAgaWYgKGVuYWJsZSkge1xuXG5cbiAgICAgIGNvbnN0IG1heFpvb20gPSB0aGlzLmNvbmZpZy56b29tPy5tYXggPyAodGhpcy56b29tQXhpcy5leHRyZW1lc1sxXSAtIHRoaXMuem9vbUF4aXMuZXh0cmVtZXNbMF0pIC8gdGhpcy5jb25maWcuem9vbT8ubWF4IDogMDtcbiAgICAgIGNvbnN0IG1pblpvb20gPSB0aGlzLmNvbmZpZy56b29tPy5taW4gPyAodGhpcy56b29tQXhpcy5leHRyZW1lc1sxXSAtIHRoaXMuem9vbUF4aXMuZXh0cmVtZXNbMF0pIC8gdGhpcy5jb25maWcuem9vbT8ubWluIDogSW5maW5pdHk7XG5cbiAgICAgIHRoaXMuem9vbS5zY2FsZUV4dGVudChbbWF4Wm9vbSwgbWluWm9vbV0pO1xuXG4gICAgICB0aGlzLnpvb20ub24oJ3N0YXJ0IHpvb20gZW5kJywgdGhpcy56b29tZWQpO1xuICAgICAgdGhpcy5fZWxlbWVudC5jYWxsKHRoaXMuem9vbSk7XG4gICAgfVxuXG5cbiAgICAvLyBTdWJzY3JpYmUgdG8gem9vbSBldmVudHNcbiAgICB0aGlzLmJyb2FkY2FzdFNlcnZpY2Uuc3Vic2NyaWJlVG9ab29tKHRoaXMuY29uZmlnPy56b29tLnN5bmNDaGFubmVsKS5waXBlKFxuICAgICAgZmlsdGVyKChtOiBJQnJvYWRjYXN0TWVzc2FnZTxab29tTWVzc2FnZT4pID0+IG0ubWVzc2FnZS5ldmVudC5zb3VyY2VFdmVudCBpbnN0YW5jZW9mIE1vdXNlRXZlbnQgfHwgbS5tZXNzYWdlLmV2ZW50LnNvdXJjZUV2ZW50IGluc3RhbmNlb2YgV2hlZWxFdmVudCksXG4gICAgICBkZWJvdW5jZVRpbWUoMzApLFxuICAgICAgZmlsdGVyKChtOiBJQnJvYWRjYXN0TWVzc2FnZTxab29tTWVzc2FnZT4pID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuem9vbUF4aXMuaW5kZXggPT09IG0ubWVzc2FnZT8uYXhpcz8uaW5kZXggJiYgdGhpcy56b29tQXhpcy5vcmllbnRhdGlvbiA9PT0gbS5tZXNzYWdlPy5heGlzPy5vcmllbnRhdGlvbjtcbiAgICAgIH0pLFxuICAgICAgdGFwKChtOiBJQnJvYWRjYXN0TWVzc2FnZTxab29tTWVzc2FnZT4pID0+IHtcblxuICAgICAgICBjb25zdCBjdXJyZW50VHJhbnNmb3JtID0gZDMuem9vbVRyYW5zZm9ybShcbiAgICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudFxuICAgICAgICApO1xuXG4gICAgICAgIGlmIChjdXJyZW50VHJhbnNmb3JtICE9PSBtLm1lc3NhZ2UuZXZlbnQudHJhbnNmb3JtKSB7XG4gICAgICAgICAgdGhpcy5fZWxlbWVudC5jYWxsKHRoaXMuem9vbS50cmFuc2Zvcm0sIG0ubWVzc2FnZS5ldmVudC50cmFuc2Zvcm0sIG51bGwsIHt9KTtcbiAgICAgICAgfVxuXG4gICAgICB9KSxcbiAgICAgIHRha2VXaGlsZSgoXykgPT4gdGhpcy5hbGl2ZSlcbiAgICApLnN1YnNjcmliZSgpO1xuXG5cbiAgICAvLyBTdWJzY3JpYmUgdG8gYnJ1c2ggZXZlbnRzIHggb3IgeVxuXG4gICAgaWYgKCh0aGlzLmNvbmZpZy5icnVzaD8udHlwZSA9PT0gQnJ1c2hUeXBlLnggJiYgdGhpcy56b29tQXhpcy5vcmllbnRhdGlvbiA9PT0gQXhpc09yaWVudGF0aW9uLngpIHx8XG4gICAgICAodGhpcy5jb25maWcuYnJ1c2g/LnR5cGUgPT09IEJydXNoVHlwZS55ICYmIHRoaXMuem9vbUF4aXMub3JpZW50YXRpb24gPT09IEF4aXNPcmllbnRhdGlvbi55KSkge1xuICAgICAgdGhpcy5icm9hZGNhc3RTZXJ2aWNlLnN1YnNjcmliZVRvQnJ1c2godGhpcy5jb25maWc/Lnpvb20uc3luY0NoYW5uZWwpLnBpcGUoXG4gICAgICAgIGRlYm91bmNlVGltZSgzMCksXG4gICAgICAgIGZpbHRlcigobTogSUJyb2FkY2FzdE1lc3NhZ2U8QnJ1c2hNZXNzYWdlPikgPT4gQm9vbGVhbihtLm1lc3NhZ2Uuc2VsZWN0aW9uKSksXG4gICAgICAgIHRhcCgobTogSUJyb2FkY2FzdE1lc3NhZ2U8QnJ1c2hNZXNzYWdlPikgPT4ge1xuXG4gICAgICAgICAgY29uc3QgY3VycmVudFRyYW5zZm9ybSA9IGQzLnpvb21UcmFuc2Zvcm0oXG4gICAgICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudFxuICAgICAgICAgICk7XG5cbiAgICAgICAgICBpZiAoIW0ubWVzc2FnZS5ldmVudCAmJiB0aGlzLmN1cnJlbnRTZWxlY3Rpb24gJiYgY3VycmVudFRyYW5zZm9ybS5rICE9PSAxKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy5jdXJyZW50U2VsZWN0aW9uID0gbS5tZXNzYWdlLnNlbGVjdGlvbjtcblxuICAgICAgICAgIHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy51cGRhdGVab29tKG0pO1xuICAgICAgICAgICAgfSwgMTAwKVxuICAgICAgICAgIH0pXG5cblxuICAgICAgICB9KSxcbiAgICAgICAgdGFrZVdoaWxlKChfKSA9PiB0aGlzLmFsaXZlKVxuICAgICAgKS5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuem9vbT8ub24oJ3N0YXJ0IHpvb20gZW5kJywgbnVsbCk7XG4gICAgdGhpcy5hbGl2ZSA9IGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVab29tKG06IElCcm9hZGNhc3RNZXNzYWdlPEJydXNoTWVzc2FnZT4pIHtcbiAgICBjb25zdCBzID0gbS5tZXNzYWdlLnNlbGVjdGlvbjtcbiAgICB0aGlzLmJydXNoU2NhbGUuZG9tYWluKHRoaXMuem9vbUF4aXMuZXh0cmVtZXMpO1xuICAgIGNvbnN0IGRvbWFpbiA9IHRoaXMuYnJ1c2hTY2FsZS5kb21haW4oKTtcblxuICAgIGNvbnN0IHNjYWxlID0gKGRvbWFpblsxXSAtIGRvbWFpblswXSkgLyAoc1sxXSAtIHNbMF0pO1xuXG4gICAgbGV0IHRyYW5zZm9ybSA9IHpvb21JZGVudGl0eS5zY2FsZShzY2FsZSk7XG5cbiAgICBpZiAobS5tZXNzYWdlPy5icnVzaFR5cGUgPT09IEJydXNoVHlwZS54KSB7XG4gICAgICB0cmFuc2Zvcm0gPSB0cmFuc2Zvcm0udHJhbnNsYXRlKC10aGlzLmJydXNoU2NhbGUoc1swXSksIDApO1xuICAgIH1cbiAgICBpZiAobS5tZXNzYWdlPy5icnVzaFR5cGUgPT09IEJydXNoVHlwZS55KSB7XG4gICAgICB0cmFuc2Zvcm0gPSB0cmFuc2Zvcm0udHJhbnNsYXRlKDAsIC10aGlzLmJydXNoU2NhbGUoc1swXSkpO1xuICAgIH1cblxuICAgIHRoaXMuX2VsZW1lbnQudHJhbnNpdGlvbigpLmR1cmF0aW9uKDE1MCkuY2FsbChcbiAgICAgIHRoaXMuem9vbS50cmFuc2Zvcm0sXG4gICAgICB0cmFuc2Zvcm0sXG4gICAgICBudWxsLFxuICAgICAge31cbiAgICApO1xuICB9XG59XG4iXX0=
|
|
@@ -161,4 +161,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImpor
|
|
|
161
161
|
providedIn: 'root',
|
|
162
162
|
}]
|
|
163
163
|
}], ctorParameters: function () { return [{ type: i1.ChartService }, { type: i2.ZoomService }]; } });
|
|
164
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NhbGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jaGFydC9zZXJ2aWNlL3NjYWxlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQztBQUV6QixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDekMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBR2pFLE9BQU8sRUFDTCxhQUFhLEVBQ2IsR0FBRyxFQUVILFdBQVcsRUFFWCxjQUFjLEdBQ2YsTUFBTSxNQUFNLENBQUM7QUFHZCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7QUFLckQsTUFBTSxPQUFPLFlBQVk7SUFrQnZCLFlBQ1UsWUFBMEIsRUFDMUIsV0FBd0I7UUFEeEIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFiMUIsb0JBQWUsR0FBRyxJQUFJLEdBQUcsRUFBeUIsQ0FBQztRQUNuRCxvQkFBZSxHQUFHLElBQUksR0FBRyxFQUF5QixDQUFDO1FBRW5ELGlCQUFZLEdBQUcsSUFBSSxHQUFHLEVBQWtCO2FBQzdDLEdBQUcsQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxXQUFXLENBQUM7YUFDckMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQzthQUNqQyxHQUFHLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDO2FBQ3hDLEdBQUcsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUM7YUFDL0IsR0FBRyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFD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QyxLQUFLLENBQUMsQ0FBQztvQkFDMUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7aUJBQ3ZEO2FBQ0Y7WUFFRCxPQUFPLEdBQUcsQ0FBQztRQUNiLENBQUMsQ0FDRixFQUNELFdBQVcsQ0FBQztZQUNWLFVBQVUsRUFBRSxDQUFDO1lBQ2IsUUFBUSxFQUFFLElBQUk7U0FDZixDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7O3lHQTdOVSxZQUFZOzZHQUFaLFlBQVksY0FGWCxNQUFNOzJGQUVQLFlBQVk7a0JBSHhCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0ICogYXMgZDMgZnJvbSAnZDMnO1xuaW1wb3J0IHsgRDNab29tRXZlbnQsIFpvb21UcmFuc2Zvcm0gfSBmcm9tICdkMyc7XG5pbXBvcnQgeyBBeGlzIH0gZnJvbSAnLi4vY29yZS9heGlzL2F4aXMnO1xuaW1wb3J0IHsgQXhpc09yaWVudGF0aW9uIH0gZnJvbSAnLi4vbW9kZWwvZW51bS9heGlzLW9yaWVudGF0aW9uJztcbmltcG9ydCB7IElDaGFydENvbmZpZyB9IGZyb20gJy4uL21vZGVsL2ktY2hhcnQtY29uZmlnJztcbmltcG9ydCB7IENoYXJ0U2VydmljZSB9IGZyb20gJy4vY2hhcnQuc2VydmljZSc7XG5pbXBvcnQge1xuICBjb21iaW5lTGF0ZXN0LFxuICBtYXAsXG4gIE9ic2VydmFibGUsXG4gIHNoYXJlUmVwbGF5LFxuICB0YXAsXG4gIHdpdGhMYXRlc3RGcm9tLFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7IElDaGFydEV2ZW50IH0gZnJvbSAnLi4vbW9kZWwvaS1jaGFydC1ldmVudCc7XG5pbXBvcnQgeyBab29tU2VydmljZSB9IGZyb20gJy4vem9vbS5zZXJ2aWNlJztcbmltcG9ydCB7IFNjYWxlVHlwZSB9IGZyb20gJy4uL21vZGVsL2VudW0vc2NhbGUtdHlwZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBTY2FsZVNlcnZpY2Uge1xuICBwdWJsaWMgeUF4aXNNYXA6IE9ic2VydmFibGU8TWFwPG51bWJlciwgQXhpcz4+O1xuICBwdWJsaWMgeEF4aXNNYXA6IE9ic2VydmFibGU8TWFwPG51bWJlciwgQXhpcz4+O1xuXG4gIHB1YmxpYyB5U2NhbGVNYXA6IE9ic2VydmFibGU8TWFwPG51bWJlciwgYW55Pj47XG4gIHB1YmxpYyB4U2NhbGVNYXA6IE9ic2VydmFibGU8TWFwPG51bWJlciwgYW55Pj47XG5cbiAgcHJpdmF0ZSB0cmFuc2Zvcm1DYWNoZVggPSBuZXcgTWFwPG51bWJlciwgWm9vbVRyYW5zZm9ybT4oKTtcbiAgcHJpdmF0ZSB0cmFuc2Zvcm1DYWNoZVkgPSBuZXcgTWFwPG51bWJlciwgWm9vbVRyYW5zZm9ybT4oKTtcblxuICBwcml2YXRlIHNjYWxlTWFwcGluZyA9IG5ldyBNYXA8U2NhbGVUeXBlLCBhbnk+KClcbiAgICAuc2V0KFNjYWxlVHlwZS5saW5lYXIsIGQzLnNjYWxlTGluZWFyKVxuICAgIC5zZXQoU2NhbGVUeXBlLnRpbWUsIGQzLnNjYWxlVGltZSlcbiAgICAuc2V0KFNjYWxlVHlwZS5jYXRlZ29yeSwgZDMuc2NhbGVPcmRpbmFsKVxuICAgIC5zZXQoU2NhbGVUeXBlLmxvZywgZDMuc2NhbGVMb2cpXG4gICAgLnNldChTY2FsZVR5cGUucG93LCBkMy5zY2FsZVBvdylcbiAgICAuc2V0KFNjYWxlVHlwZS5zcXJ0LCBkMy5zY2FsZVNxcnQpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY2hhcnRTZXJ2aWNlOiBDaGFydFNlcnZpY2UsXG4gICAgcHJpdmF0ZSB6b29tU2VydmljZTogWm9vbVNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy54QXhpc01hcCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy5jaGFydFNlcnZpY2Uuc2l6ZSxcbiAgICAgIHRoaXMuY2hhcnRTZXJ2aWNlLmNvbmZpZyxcbiAgICBdKS5waXBlKFxuICAgICAgbWFwKChkYXRhOiBbRE9NUmVjdFJlYWRPbmx5LCBJQ2hhcnRDb25maWddKSA9PiB7XG4gICAgICAgIGNvbnN0IFssIGNvbmZpZ10gPSBkYXRhO1xuICAgICAgICBjb25zdCBtYXAgPSBuZXcgTWFwPG51bWJlciwgQXhpcz4oKTtcbiAgICAgICAgY29uZmlnLnhBeGlzLm1hcCgoXywgaW5kZXgpID0+IHtcbiAgICAgICAgICBtYXAuc2V0KGluZGV4LCBBeGlzLmNyZWF0ZUF4aXMoQXhpc09yaWVudGF0aW9uLngsIGNvbmZpZywgaW5kZXgpKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBtYXA7XG4gICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLnlBeGlzTWFwID0gY29tYmluZUxhdGVzdChbXG4gICAgICB0aGlzLmNoYXJ0U2VydmljZS5zaXplLFxuICAgICAgdGhpcy5jaGFydFNlcnZpY2UuY29uZmlnLFxuICAgIF0pLnBpcGUoXG4gICAgICBtYXAoKGRhdGE6IFtET01SZWN0UmVhZE9ubHksIElDaGFydENvbmZpZ10pID0+IHtcbiAgICAgICAgY29uc3QgWywgY29uZmlnXSA9IGRhdGE7XG4gICAgICAgIGNvbnN0IG1hcCA9IG5ldyBNYXA8bnVtYmVyLCBBeGlzPigpO1xuICAgICAgICBjb25maWcueUF4aXMubWFwKChfLCBpbmRleCkgPT4ge1xuICAgICAgICAgIG1hcC5zZXQoaW5kZXgsIEF4aXMuY3JlYXRlQXhpcyhBeGlzT3JpZW50YXRpb24ueSwgY29uZmlnLCBpbmRleCkpO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gbWFwO1xuICAgICAgfSlcbiAgICApO1xuXG4gICAgdGhpcy54U2NhbGVNYXAgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICAgIHRoaXMuY2hhcnRTZXJ2aWNlLnNpemUsXG4gICAgICB0aGlzLmNoYXJ0U2VydmljZS5jb25maWcsXG4gICAgICB0aGlzLnpvb21TZXJ2aWNlLnpvb21lZCxcbiAgICBdKS5waXBlKFxuICAgICAgd2l0aExhdGVzdEZyb20odGhpcy55QXhpc01hcCwgdGhpcy54QXhpc01hcCksXG4gICAgICBtYXAoXG4gICAgICAgIChcbiAgICAgICAgICBkYXRhOiBbXG4gICAgICAgICAgICBbRE9NUmVjdFJlYWRPbmx5LCBJQ2hhcnRDb25maWcsIElDaGFydEV2ZW50PEF4aXM+XSxcbiAgICAgICAgICAgIE1hcDxudW1iZXIsIEF4aXM+LFxuICAgICAgICAgICAgTWFwPG51bWJlciwgQXhpcz5cbiAgICAgICAgICBdXG4gICAgICAgICkgPT4ge1xuICAgICAgICAgIGNvbnN0IFtbc2l6ZSwgY29uZmlnLCB6b29tXSwgeUF4ZXMsIHhBeGVzXSA9IGRhdGE7XG5cbiAgICAgICAgICBjb25zdCBtYXAgPSBuZXcgTWFwPG51bWJlciwgYW55PigpO1xuXG4gICAgICAgICAgY29uc3QgbGVmdCA9IFsuLi55QXhlcy52YWx1ZXMoKV1cbiAgICAgICAgICAgIC5maWx0ZXIoKF8pID0+IF8ub3B0aW9ucz8udmlzaWJsZSAmJiBfLm9wdGlvbnM/Lm9wcG9zaXRlKVxuICAgICAgICAgICAgLnJlZHVjZSgoYWNjLCBjdXIpID0+IGFjYyArIGN1ci5zZWxmU2l6ZSwgMCk7XG5cbiAgICAgICAgICBjb25zdCByaWdodCA9IFsuLi55QXhlcy52YWx1ZXMoKV1cbiAgICAgICAgICAgIC5maWx0ZXIoKF8pID0+IF8ub3B0aW9ucz8udmlzaWJsZSAmJiBfLm9wdGlvbnM/Lm9wcG9zaXRlICE9PSB0cnVlKVxuICAgICAgICAgICAgLnJlZHVjZSgoYWNjLCBjdXIpID0+IGFjYyArIGN1ci5zZWxmU2l6ZSwgMCk7XG5cbiAgICAgICAgICBjb25zdCBmaW5hbFdpZHRoID0gKHNpemUud2lkdGggfHwgMCkgLSBsZWZ0IC0gcmlnaHQ7XG5cbiAgICAgICAgICB4QXhlcy5mb3JFYWNoKChheGlzKSA9PiB7XG4gICAgICAgICAgICBsZXQgZG9tYWluID0gYXhpcy5leHRyZW1lcztcblxuICAgICAgICAgICAgaWYgKGF4aXM/Lm9wdGlvbnMuaW52ZXJ0ZWQpIHtcbiAgICAgICAgICAgICAgZG9tYWluID0gWy4uLmF4aXMuZXh0cmVtZXNdLnJldmVyc2UoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IHNjYWxlID0gdGhpcy5zY2FsZU1hcHBpbmdcbiAgICAgICAgICAgICAgLmdldChheGlzLm9wdGlvbnMuc2NhbGVUeXBlLnR5cGUpKClcbiAgICAgICAgICAgICAgLmRvbWFpbihkb21haW4pXG4gICAgICAgICAgICAgIC5yYW5nZShbMCwgZmluYWxXaWR0aF0pO1xuXG4gICAgICAgICAgICBpZiAoYXhpcy5vcHRpb25zLm5pY2VUaWNrcykge1xuICAgICAgICAgICAgICBzY2FsZS5uaWNlKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChheGlzLm9wdGlvbnMuc2NhbGVUeXBlLnR5cGUgPT09IFNjYWxlVHlwZS5sb2cpIHtcbiAgICAgICAgICAgICAgc2NhbGUuYmFzZShheGlzLm9wdGlvbnMuc2NhbGVUeXBlLmJhc2UpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBtYXAuc2V0KGF4aXMuaW5kZXgsIHNjYWxlKTtcblxuICAgICAgICAgICAgY29uc3QgaGFzQ2FjaGUgPSB0aGlzLnRyYW5zZm9ybUNhY2hlWC5oYXMoYXhpcy5pbmRleCk7XG4gICAgICAgICAgICBjb25zdCBzaG91bGRSZXN0b3JlID1cbiAgICAgICAgICAgICAgem9vbT8udGFyZ2V0Py5vcmllbnRhdGlvbiAhPT0gQXhpc09yaWVudGF0aW9uLnggfHxcbiAgICAgICAgICAgICAgem9vbS50YXJnZXQ/LmluZGV4ICE9PSBheGlzLmluZGV4O1xuXG4gICAgICAgICAgICBpZiAoaGFzQ2FjaGUgJiYgc2hvdWxkUmVzdG9yZSkge1xuICAgICAgICAgICAgICBjb25zdCByZXN0b3JlZFRyYW5zZm9ybSA9IHRoaXMudHJhbnNmb3JtQ2FjaGVYLmdldChheGlzLmluZGV4KTtcbiAgICAgICAgICAgICAgbWFwLnNldChheGlzLmluZGV4LCByZXN0b3JlZFRyYW5zZm9ybS5yZXNjYWxlWChzY2FsZSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgaWYgKHpvb20pIHtcbiAgICAgICAgICAgIGNvbnN0IGV2ZW50ID0gem9vbS5ldmVudCBhcyBEM1pvb21FdmVudDxhbnksIGFueT47XG5cbiAgICAgICAgICAgIGlmICh6b29tLnRhcmdldD8ub3JpZW50YXRpb24gPT09IEF4aXNPcmllbnRhdGlvbi54KSB7XG4gICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRTY2FsZSA9IG1hcC5nZXQoem9vbS50YXJnZXQuaW5kZXgpO1xuICAgICAgICAgICAgICBjb25zdCByZXNjYWxlZCA9IGV2ZW50LnRyYW5zZm9ybS5yZXNjYWxlWChjdXJyZW50U2NhbGUpO1xuICAgICAgICAgICAgICBtYXAuc2V0KHpvb20udGFyZ2V0LmluZGV4LCByZXNjYWxlZCk7XG5cbiAgICAgICAgICAgICAgY29uc3QgYXhpcyA9IHhBeGVzLmdldCh6b29tLnRhcmdldC5pbmRleCk7XG4gICAgICAgICAgICAgIHRoaXMudHJhbnNmb3JtQ2FjaGVYLnNldChheGlzLmluZGV4LCBldmVudC50cmFuc2Zvcm0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBtYXA7XG4gICAgICAgIH1cbiAgICAgICksXG4gICAgICBzaGFyZVJlcGxheSh7XG4gICAgICAgIGJ1ZmZlclNpemU6IDEsXG4gICAgICAgIHJlZkNvdW50OiB0cnVlXG4gICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLnlTY2FsZU1hcCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy5jaGFydFNlcnZpY2Uuc2l6ZSxcbiAgICAgIHRoaXMuY2hhcnRTZXJ2aWNlLmNvbmZpZyxcbiAgICAgIHRoaXMuem9vbVNlcnZpY2Uuem9vbWVkLFxuICAgIF0pLnBpcGUoXG4gICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLnlBeGlzTWFwLCB0aGlzLnhBeGlzTWFwKSxcbiAgICAgIG1hcChcbiAgICAgICAgKFxuICAgICAgICAgIGRhdGE6IFtcbiAgICAgICAgICAgIFtET01SZWN0UmVhZE9ubHksIElDaGFydENvbmZpZywgSUNoYXJ0RXZlbnQ8QXhpcz5dLFxuICAgICAgICAgICAgTWFwPG51bWJlciwgQXhpcz4sXG4gICAgICAgICAgICBNYXA8bnVtYmVyLCBBeGlzPlxuICAgICAgICAgIF1cbiAgICAgICAgKSA9PiB7XG4gICAgICAgICAgY29uc3QgW1tzaXplLCBjb25maWcsIHpvb21dLCB5QXhlcywgeEF4ZXNdID0gZGF0YTtcblxuICAgICAgICAgIGNvbnN0IG1hcCA9IG5ldyBNYXA8bnVtYmVyLCBhbnk+KCk7XG5cbiAgICAgICAgICBjb25zdCB0b3AgPSBbLi4ueEF4ZXMudmFsdWVzKCldXG4gICAgICAgICAgICAuZmlsdGVyKChfKSA9PiBfLm9wdGlvbnM/LnZpc2libGUgJiYgXy5vcHRpb25zPy5vcHBvc2l0ZSlcbiAgICAgICAgICAgIC5yZWR1Y2UoKGFjYywgY3VyKSA9PiBhY2MgKyBjdXIuc2VsZlNpemUsIDApO1xuXG4gICAgICAgICAgY29uc3QgYm90dG9tID0gWy4uLnhBeGVzLnZhbHVlcygpXVxuICAgICAgICAgICAgLmZpbHRlcigoXykgPT4gXy5vcHRpb25zPy52aXNpYmxlICYmIF8ub3B0aW9ucz8ub3Bwb3NpdGUgIT09IHRydWUpXG4gICAgICAgICAgICAucmVkdWNlKChhY2MsIGN1cikgPT4gYWNjICsgY3VyLnNlbGZTaXplLCAwKTtcblxuICAgICAgICAgIGNvbnN0IGZpbmFsSGVpZ2h0ID0gKHNpemUuaGVpZ2h0IHx8IDApIC0gdG9wIC0gYm90dG9tO1xuXG4gICAgICAgICAgeUF4ZXMuZm9yRWFjaCgoYXhpcykgPT4ge1xuICAgICAgICAgICAgbGV0IGRvbWFpbiA9IGF4aXMuZXh0cmVtZXM7XG5cbiAgICAgICAgICAgIGlmIChheGlzLm9yaWVudGF0aW9uID09PSBBeGlzT3JpZW50YXRpb24ueSkge1xuICAgICAgICAgICAgICBkb21haW4gPSBbLi4uYXhpcy5leHRyZW1lc10ucmV2ZXJzZSgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoYXhpcz8ub3B0aW9ucy5pbnZlcnRlZCkge1xuICAgICAgICAgICAgICBkb21haW4gPSBkb21haW4ucmV2ZXJzZSgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBzY2FsZSA9IHRoaXMuc2NhbGVNYXBwaW5nXG4gICAgICAgICAgICAgIC5nZXQoYXhpcy5vcHRpb25zLnNjYWxlVHlwZS50eXBlKSgpXG4gICAgICAgICAgICAgIC5kb21haW4oZG9tYWluKVxuICAgICAgICAgICAgICAucmFuZ2UoWzAsIGZpbmFsSGVpZ2h0XSk7XG5cbiAgICAgICAgICAgIGlmIChheGlzLm9wdGlvbnMubmljZVRpY2tzKSB7XG4gICAgICAgICAgICAgIHNjYWxlLm5pY2UoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGF4aXMub3B0aW9ucy5zY2FsZVR5cGUudHlwZSA9PT0gU2NhbGVUeXBlLmxvZykge1xuICAgICAgICAgICAgICBzY2FsZS5iYXNlKGF4aXMub3B0aW9ucy5zY2FsZVR5cGUuYmFzZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIG1hcC5zZXQoYXhpcy5pbmRleCwgc2NhbGUpO1xuXG4gICAgICAgICAgICBjb25zdCBoYXNDYWNoZSA9IHRoaXMudHJhbnNmb3JtQ2FjaGVZLmhhcyhheGlzLmluZGV4KTtcblxuICAgICAgICAgICAgY29uc3Qgc2hvdWxkUmVzdG9yZSA9XG4gICAgICAgICAgICAgIHpvb20/LnRhcmdldD8ub3JpZW50YXRpb24gIT09IEF4aXNPcmllbnRhdGlvbi55IHx8XG4gICAgICAgICAgICAgIHpvb20udGFyZ2V0Py5pbmRleCAhPT0gYXhpcy5pbmRleDtcblxuICAgICAgICAgICAgaWYgKGhhc0NhY2hlICYmIHNob3VsZFJlc3RvcmUpIHtcbiAgICAgICAgICAgICAgY29uc3QgcmVzdG9yZWRUcmFuc2Zvcm0gPSB0aGlzLnRyYW5zZm9ybUNhY2hlWS5nZXQoYXhpcy5pbmRleCk7XG4gICAgICAgICAgICAgIG1hcC5zZXQoYXhpcy5pbmRleCwgcmVzdG9yZWRUcmFuc2Zvcm0ucmVzY2FsZVkoc2NhbGUpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIGlmICh6b29tKSB7XG4gICAgICAgICAgICBjb25zdCBldmVudCA9IHpvb20uZXZlbnQgYXMgRDNab29tRXZlbnQ8YW55LCBhbnk+O1xuXG4gICAgICAgICAgICBpZiAoem9vbS50YXJnZXQ/Lm9yaWVudGF0aW9uID09PSBBeGlzT3JpZW50YXRpb24ueSkge1xuICAgICAgICAgICAgICBjb25zdCBjdXJyZW50U2NhbGUgPSBtYXAuZ2V0KHpvb20udGFyZ2V0LmluZGV4KTtcbiAgICAgICAgICAgICAgY29uc3QgcmVzY2FsZWQgPSBldmVudC50cmFuc2Zvcm0ucmVzY2FsZVkoY3VycmVudFNjYWxlKTtcbiAgICAgICAgICAgICAgbWFwLnNldCh6b29tLnRhcmdldC5pbmRleCwgcmVzY2FsZWQpO1xuXG4gICAgICAgICAgICAgIGNvbnN0IGF4aXMgPSB5QXhlcy5nZXQoem9vbS50YXJnZXQuaW5kZXgpO1xuICAgICAgICAgICAgICB0aGlzLnRyYW5zZm9ybUNhY2hlWS5zZXQoYXhpcy5pbmRleCwgZXZlbnQudHJhbnNmb3JtKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gbWFwO1xuICAgICAgICB9XG4gICAgICApLFxuICAgICAgc2hhcmVSZXBsYXkoe1xuICAgICAgICBidWZmZXJTaXplOiAxLFxuICAgICAgICByZWZDb3VudDogdHJ1ZVxuICAgICAgfSlcbiAgICApO1xuICB9XG59XG4iXX0=
|
|
164
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NhbGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jaGFydC9zZXJ2aWNlL3NjYWxlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQztBQUV6QixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDekMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBR2pFLE9BQU8sRUFDTCxhQUFhLEVBQ2IsR0FBRyxFQUVILFdBQVcsRUFDWCxjQUFjLEdBQ2YsTUFBTSxNQUFNLENBQUM7QUFHZCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7QUFLckQsTUFBTSxPQUFPLFlBQVk7SUFrQnZCLFlBQ1UsWUFBMEIsRUFDMUIsV0FBd0I7UUFEeEIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFiMUIsb0JBQWUsR0FBRyxJQUFJLEdBQUcsRUFBeUIsQ0FBQztRQUNuRCxvQkFBZSxHQUFHLElBQUksR0FBRyxFQUF5QixDQUFDO1FBRW5ELGlCQUFZLEdBQUcsSUFBSSxHQUFHLEVBQWtCO2FBQzdDLEdBQUcsQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxXQUFXLENBQUM7YUFDckMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQzthQUNqQyxHQUFHLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDO2FBQ3hDLEdBQUcsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUM7YUFDL0IsR0FBRyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFD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QyxLQUFLLENBQUMsQ0FBQztvQkFDMUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7aUJBQ3ZEO2FBQ0Y7WUFFRCxPQUFPLEdBQUcsQ0FBQztRQUNiLENBQUMsQ0FDRixFQUNELFdBQVcsQ0FBQztZQUNWLFVBQVUsRUFBRSxDQUFDO1lBQ2IsUUFBUSxFQUFFLElBQUk7U0FDZixDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7O3lHQTdOVSxZQUFZOzZHQUFaLFlBQVksY0FGWCxNQUFNOzJGQUVQLFlBQVk7a0JBSHhCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0ICogYXMgZDMgZnJvbSAnZDMnO1xuaW1wb3J0IHsgRDNab29tRXZlbnQsIFpvb21UcmFuc2Zvcm0gfSBmcm9tICdkMyc7XG5pbXBvcnQgeyBBeGlzIH0gZnJvbSAnLi4vY29yZS9heGlzL2F4aXMnO1xuaW1wb3J0IHsgQXhpc09yaWVudGF0aW9uIH0gZnJvbSAnLi4vbW9kZWwvZW51bS9heGlzLW9yaWVudGF0aW9uJztcbmltcG9ydCB7IElDaGFydENvbmZpZyB9IGZyb20gJy4uL21vZGVsL2ktY2hhcnQtY29uZmlnJztcbmltcG9ydCB7IENoYXJ0U2VydmljZSB9IGZyb20gJy4vY2hhcnQuc2VydmljZSc7XG5pbXBvcnQge1xuICBjb21iaW5lTGF0ZXN0LFxuICBtYXAsXG4gIE9ic2VydmFibGUsXG4gIHNoYXJlUmVwbGF5LFxuICB3aXRoTGF0ZXN0RnJvbSxcbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBJQ2hhcnRFdmVudCB9IGZyb20gJy4uL21vZGVsL2ktY2hhcnQtZXZlbnQnO1xuaW1wb3J0IHsgWm9vbVNlcnZpY2UgfSBmcm9tICcuL3pvb20uc2VydmljZSc7XG5pbXBvcnQgeyBTY2FsZVR5cGUgfSBmcm9tICcuLi9tb2RlbC9lbnVtL3NjYWxlLXR5cGUnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgU2NhbGVTZXJ2aWNlIHtcbiAgcHVibGljIHlBeGlzTWFwOiBPYnNlcnZhYmxlPE1hcDxudW1iZXIsIEF4aXM+PjtcbiAgcHVibGljIHhBeGlzTWFwOiBPYnNlcnZhYmxlPE1hcDxudW1iZXIsIEF4aXM+PjtcblxuICBwdWJsaWMgeVNjYWxlTWFwOiBPYnNlcnZhYmxlPE1hcDxudW1iZXIsIGFueT4+O1xuICBwdWJsaWMgeFNjYWxlTWFwOiBPYnNlcnZhYmxlPE1hcDxudW1iZXIsIGFueT4+O1xuXG4gIHByaXZhdGUgdHJhbnNmb3JtQ2FjaGVYID0gbmV3IE1hcDxudW1iZXIsIFpvb21UcmFuc2Zvcm0+KCk7XG4gIHByaXZhdGUgdHJhbnNmb3JtQ2FjaGVZID0gbmV3IE1hcDxudW1iZXIsIFpvb21UcmFuc2Zvcm0+KCk7XG5cbiAgcHJpdmF0ZSBzY2FsZU1hcHBpbmcgPSBuZXcgTWFwPFNjYWxlVHlwZSwgYW55PigpXG4gICAgLnNldChTY2FsZVR5cGUubGluZWFyLCBkMy5zY2FsZUxpbmVhcilcbiAgICAuc2V0KFNjYWxlVHlwZS50aW1lLCBkMy5zY2FsZVRpbWUpXG4gICAgLnNldChTY2FsZVR5cGUuY2F0ZWdvcnksIGQzLnNjYWxlT3JkaW5hbClcbiAgICAuc2V0KFNjYWxlVHlwZS5sb2csIGQzLnNjYWxlTG9nKVxuICAgIC5zZXQoU2NhbGVUeXBlLnBvdywgZDMuc2NhbGVQb3cpXG4gICAgLnNldChTY2FsZVR5cGUuc3FydCwgZDMuc2NhbGVTcXJ0KTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNoYXJ0U2VydmljZTogQ2hhcnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgem9vbVNlcnZpY2U6IFpvb21TZXJ2aWNlXG4gICkge1xuICAgIHRoaXMueEF4aXNNYXAgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICAgIHRoaXMuY2hhcnRTZXJ2aWNlLnNpemUsXG4gICAgICB0aGlzLmNoYXJ0U2VydmljZS5jb25maWcsXG4gICAgXSkucGlwZShcbiAgICAgIG1hcCgoZGF0YTogW0RPTVJlY3RSZWFkT25seSwgSUNoYXJ0Q29uZmlnXSkgPT4ge1xuICAgICAgICBjb25zdCBbLCBjb25maWddID0gZGF0YTtcbiAgICAgICAgY29uc3QgbWFwID0gbmV3IE1hcDxudW1iZXIsIEF4aXM+KCk7XG4gICAgICAgIGNvbmZpZy54QXhpcy5tYXAoKF8sIGluZGV4KSA9PiB7XG4gICAgICAgICAgbWFwLnNldChpbmRleCwgQXhpcy5jcmVhdGVBeGlzKEF4aXNPcmllbnRhdGlvbi54LCBjb25maWcsIGluZGV4KSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gbWFwO1xuICAgICAgfSlcbiAgICApO1xuXG4gICAgdGhpcy55QXhpc01hcCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy5jaGFydFNlcnZpY2Uuc2l6ZSxcbiAgICAgIHRoaXMuY2hhcnRTZXJ2aWNlLmNvbmZpZyxcbiAgICBdKS5waXBlKFxuICAgICAgbWFwKChkYXRhOiBbRE9NUmVjdFJlYWRPbmx5LCBJQ2hhcnRDb25maWddKSA9PiB7XG4gICAgICAgIGNvbnN0IFssIGNvbmZpZ10gPSBkYXRhO1xuICAgICAgICBjb25zdCBtYXAgPSBuZXcgTWFwPG51bWJlciwgQXhpcz4oKTtcbiAgICAgICAgY29uZmlnLnlBeGlzLm1hcCgoXywgaW5kZXgpID0+IHtcbiAgICAgICAgICBtYXAuc2V0KGluZGV4LCBBeGlzLmNyZWF0ZUF4aXMoQXhpc09yaWVudGF0aW9uLnksIGNvbmZpZywgaW5kZXgpKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIG1hcDtcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHRoaXMueFNjYWxlTWFwID0gY29tYmluZUxhdGVzdChbXG4gICAgICB0aGlzLmNoYXJ0U2VydmljZS5zaXplLFxuICAgICAgdGhpcy5jaGFydFNlcnZpY2UuY29uZmlnLFxuICAgICAgdGhpcy56b29tU2VydmljZS56b29tZWQsXG4gICAgXSkucGlwZShcbiAgICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMueUF4aXNNYXAsIHRoaXMueEF4aXNNYXApLFxuICAgICAgbWFwKFxuICAgICAgICAoXG4gICAgICAgICAgZGF0YTogW1xuICAgICAgICAgICAgW0RPTVJlY3RSZWFkT25seSwgSUNoYXJ0Q29uZmlnLCBJQ2hhcnRFdmVudDxBeGlzPl0sXG4gICAgICAgICAgICBNYXA8bnVtYmVyLCBBeGlzPixcbiAgICAgICAgICAgIE1hcDxudW1iZXIsIEF4aXM+XG4gICAgICAgICAgXVxuICAgICAgICApID0+IHtcbiAgICAgICAgICBjb25zdCBbW3NpemUsIGNvbmZpZywgem9vbV0sIHlBeGVzLCB4QXhlc10gPSBkYXRhO1xuXG4gICAgICAgICAgY29uc3QgbWFwID0gbmV3IE1hcDxudW1iZXIsIGFueT4oKTtcblxuICAgICAgICAgIGNvbnN0IGxlZnQgPSBbLi4ueUF4ZXMudmFsdWVzKCldXG4gICAgICAgICAgICAuZmlsdGVyKChfKSA9PiBfLm9wdGlvbnM/LnZpc2libGUgJiYgXy5vcHRpb25zPy5vcHBvc2l0ZSlcbiAgICAgICAgICAgIC5yZWR1Y2UoKGFjYywgY3VyKSA9PiBhY2MgKyBjdXIuc2VsZlNpemUsIDApO1xuXG4gICAgICAgICAgY29uc3QgcmlnaHQgPSBbLi4ueUF4ZXMudmFsdWVzKCldXG4gICAgICAgICAgICAuZmlsdGVyKChfKSA9PiBfLm9wdGlvbnM/LnZpc2libGUgJiYgXy5vcHRpb25zPy5vcHBvc2l0ZSAhPT0gdHJ1ZSlcbiAgICAgICAgICAgIC5yZWR1Y2UoKGFjYywgY3VyKSA9PiBhY2MgKyBjdXIuc2VsZlNpemUsIDApO1xuXG4gICAgICAgICAgY29uc3QgZmluYWxXaWR0aCA9IChzaXplLndpZHRoIHx8IDApIC0gbGVmdCAtIHJpZ2h0O1xuXG4gICAgICAgICAgeEF4ZXMuZm9yRWFjaCgoYXhpcykgPT4ge1xuICAgICAgICAgICAgbGV0IGRvbWFpbiA9IGF4aXMuZXh0cmVtZXM7XG5cbiAgICAgICAgICAgIGlmIChheGlzPy5vcHRpb25zLmludmVydGVkKSB7XG4gICAgICAgICAgICAgIGRvbWFpbiA9IFsuLi5heGlzLmV4dHJlbWVzXS5yZXZlcnNlKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCBzY2FsZSA9IHRoaXMuc2NhbGVNYXBwaW5nXG4gICAgICAgICAgICAgIC5nZXQoYXhpcy5vcHRpb25zLnNjYWxlVHlwZS50eXBlKSgpXG4gICAgICAgICAgICAgIC5kb21haW4oZG9tYWluKVxuICAgICAgICAgICAgICAucmFuZ2UoWzAsIGZpbmFsV2lkdGhdKTtcblxuICAgICAgICAgICAgaWYgKGF4aXMub3B0aW9ucy5uaWNlVGlja3MpIHtcbiAgICAgICAgICAgICAgc2NhbGUubmljZSgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoYXhpcy5vcHRpb25zLnNjYWxlVHlwZS50eXBlID09PSBTY2FsZVR5cGUubG9nKSB7XG4gICAgICAgICAgICAgIHNjYWxlLmJhc2UoYXhpcy5vcHRpb25zLnNjYWxlVHlwZS5iYXNlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbWFwLnNldChheGlzLmluZGV4LCBzY2FsZSk7XG5cbiAgICAgICAgICAgIGNvbnN0IGhhc0NhY2hlID0gdGhpcy50cmFuc2Zvcm1DYWNoZVguaGFzKGF4aXMuaW5kZXgpO1xuICAgICAgICAgICAgY29uc3Qgc2hvdWxkUmVzdG9yZSA9XG4gICAgICAgICAgICAgIHpvb20/LnRhcmdldD8ub3JpZW50YXRpb24gIT09IEF4aXNPcmllbnRhdGlvbi54IHx8XG4gICAgICAgICAgICAgIHpvb20udGFyZ2V0Py5pbmRleCAhPT0gYXhpcy5pbmRleDtcblxuICAgICAgICAgICAgaWYgKGhhc0NhY2hlICYmIHNob3VsZFJlc3RvcmUpIHtcbiAgICAgICAgICAgICAgY29uc3QgcmVzdG9yZWRUcmFuc2Zvcm0gPSB0aGlzLnRyYW5zZm9ybUNhY2hlWC5nZXQoYXhpcy5pbmRleCk7XG4gICAgICAgICAgICAgIG1hcC5zZXQoYXhpcy5pbmRleCwgcmVzdG9yZWRUcmFuc2Zvcm0ucmVzY2FsZVgoc2NhbGUpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIGlmICh6b29tKSB7XG4gICAgICAgICAgICBjb25zdCBldmVudCA9IHpvb20uZXZlbnQgYXMgRDNab29tRXZlbnQ8YW55LCBhbnk+O1xuXG4gICAgICAgICAgICBpZiAoem9vbS50YXJnZXQ/Lm9yaWVudGF0aW9uID09PSBBeGlzT3JpZW50YXRpb24ueCkge1xuICAgICAgICAgICAgICBjb25zdCBjdXJyZW50U2NhbGUgPSBtYXAuZ2V0KHpvb20udGFyZ2V0LmluZGV4KTtcbiAgICAgICAgICAgICAgY29uc3QgcmVzY2FsZWQgPSBldmVudC50cmFuc2Zvcm0ucmVzY2FsZVgoY3VycmVudFNjYWxlKTtcbiAgICAgICAgICAgICAgbWFwLnNldCh6b29tLnRhcmdldC5pbmRleCwgcmVzY2FsZWQpO1xuXG4gICAgICAgICAgICAgIGNvbnN0IGF4aXMgPSB4QXhlcy5nZXQoem9vbS50YXJnZXQuaW5kZXgpO1xuICAgICAgICAgICAgICB0aGlzLnRyYW5zZm9ybUNhY2hlWC5zZXQoYXhpcy5pbmRleCwgZXZlbnQudHJhbnNmb3JtKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gbWFwO1xuICAgICAgICB9XG4gICAgICApLFxuICAgICAgc2hhcmVSZXBsYXkoe1xuICAgICAgICBidWZmZXJTaXplOiAxLFxuICAgICAgICByZWZDb3VudDogdHJ1ZVxuICAgICAgfSlcbiAgICApO1xuXG4gICAgdGhpcy55U2NhbGVNYXAgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICAgIHRoaXMuY2hhcnRTZXJ2aWNlLnNpemUsXG4gICAgICB0aGlzLmNoYXJ0U2VydmljZS5jb25maWcsXG4gICAgICB0aGlzLnpvb21TZXJ2aWNlLnpvb21lZCxcbiAgICBdKS5waXBlKFxuICAgICAgd2l0aExhdGVzdEZyb20odGhpcy55QXhpc01hcCwgdGhpcy54QXhpc01hcCksXG4gICAgICBtYXAoXG4gICAgICAgIChcbiAgICAgICAgICBkYXRhOiBbXG4gICAgICAgICAgICBbRE9NUmVjdFJlYWRPbmx5LCBJQ2hhcnRDb25maWcsIElDaGFydEV2ZW50PEF4aXM+XSxcbiAgICAgICAgICAgIE1hcDxudW1iZXIsIEF4aXM+LFxuICAgICAgICAgICAgTWFwPG51bWJlciwgQXhpcz5cbiAgICAgICAgICBdXG4gICAgICAgICkgPT4ge1xuICAgICAgICAgIGNvbnN0IFtbc2l6ZSwgY29uZmlnLCB6b29tXSwgeUF4ZXMsIHhBeGVzXSA9IGRhdGE7XG5cbiAgICAgICAgICBjb25zdCBtYXAgPSBuZXcgTWFwPG51bWJlciwgYW55PigpO1xuXG4gICAgICAgICAgY29uc3QgdG9wID0gWy4uLnhBeGVzLnZhbHVlcygpXVxuICAgICAgICAgICAgLmZpbHRlcigoXykgPT4gXy5vcHRpb25zPy52aXNpYmxlICYmIF8ub3B0aW9ucz8ub3Bwb3NpdGUpXG4gICAgICAgICAgICAucmVkdWNlKChhY2MsIGN1cikgPT4gYWNjICsgY3VyLnNlbGZTaXplLCAwKTtcblxuICAgICAgICAgIGNvbnN0IGJvdHRvbSA9IFsuLi54QXhlcy52YWx1ZXMoKV1cbiAgICAgICAgICAgIC5maWx0ZXIoKF8pID0+IF8ub3B0aW9ucz8udmlzaWJsZSAmJiBfLm9wdGlvbnM/Lm9wcG9zaXRlICE9PSB0cnVlKVxuICAgICAgICAgICAgLnJlZHVjZSgoYWNjLCBjdXIpID0+IGFjYyArIGN1ci5zZWxmU2l6ZSwgMCk7XG5cbiAgICAgICAgICBjb25zdCBmaW5hbEhlaWdodCA9IChzaXplLmhlaWdodCB8fCAwKSAtIHRvcCAtIGJvdHRvbTtcblxuICAgICAgICAgIHlBeGVzLmZvckVhY2goKGF4aXMpID0+IHtcbiAgICAgICAgICAgIGxldCBkb21haW4gPSBheGlzLmV4dHJlbWVzO1xuXG4gICAgICAgICAgICBpZiAoYXhpcy5vcmllbnRhdGlvbiA9PT0gQXhpc09yaWVudGF0aW9uLnkpIHtcbiAgICAgICAgICAgICAgZG9tYWluID0gWy4uLmF4aXMuZXh0cmVtZXNdLnJldmVyc2UoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGF4aXM/Lm9wdGlvbnMuaW52ZXJ0ZWQpIHtcbiAgICAgICAgICAgICAgZG9tYWluID0gZG9tYWluLnJldmVyc2UoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3Qgc2NhbGUgPSB0aGlzLnNjYWxlTWFwcGluZ1xuICAgICAgICAgICAgICAuZ2V0KGF4aXMub3B0aW9ucy5zY2FsZVR5cGUudHlwZSkoKVxuICAgICAgICAgICAgICAuZG9tYWluKGRvbWFpbilcbiAgICAgICAgICAgICAgLnJhbmdlKFswLCBmaW5hbEhlaWdodF0pO1xuXG4gICAgICAgICAgICBpZiAoYXhpcy5vcHRpb25zLm5pY2VUaWNrcykge1xuICAgICAgICAgICAgICBzY2FsZS5uaWNlKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChheGlzLm9wdGlvbnMuc2NhbGVUeXBlLnR5cGUgPT09IFNjYWxlVHlwZS5sb2cpIHtcbiAgICAgICAgICAgICAgc2NhbGUuYmFzZShheGlzLm9wdGlvbnMuc2NhbGVUeXBlLmJhc2UpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBtYXAuc2V0KGF4aXMuaW5kZXgsIHNjYWxlKTtcblxuICAgICAgICAgICAgY29uc3QgaGFzQ2FjaGUgPSB0aGlzLnRyYW5zZm9ybUNhY2hlWS5oYXMoYXhpcy5pbmRleCk7XG5cbiAgICAgICAgICAgIGNvbnN0IHNob3VsZFJlc3RvcmUgPVxuICAgICAgICAgICAgICB6b29tPy50YXJnZXQ/Lm9yaWVudGF0aW9uICE9PSBBeGlzT3JpZW50YXRpb24ueSB8fFxuICAgICAgICAgICAgICB6b29tLnRhcmdldD8uaW5kZXggIT09IGF4aXMuaW5kZXg7XG5cbiAgICAgICAgICAgIGlmIChoYXNDYWNoZSAmJiBzaG91bGRSZXN0b3JlKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHJlc3RvcmVkVHJhbnNmb3JtID0gdGhpcy50cmFuc2Zvcm1DYWNoZVkuZ2V0KGF4aXMuaW5kZXgpO1xuICAgICAgICAgICAgICBtYXAuc2V0KGF4aXMuaW5kZXgsIHJlc3RvcmVkVHJhbnNmb3JtLnJlc2NhbGVZKHNjYWxlKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBpZiAoem9vbSkge1xuICAgICAgICAgICAgY29uc3QgZXZlbnQgPSB6b29tLmV2ZW50IGFzIEQzWm9vbUV2ZW50PGFueSwgYW55PjtcblxuICAgICAgICAgICAgaWYgKHpvb20udGFyZ2V0Py5vcmllbnRhdGlvbiA9PT0gQXhpc09yaWVudGF0aW9uLnkpIHtcbiAgICAgICAgICAgICAgY29uc3QgY3VycmVudFNjYWxlID0gbWFwLmdldCh6b29tLnRhcmdldC5pbmRleCk7XG4gICAgICAgICAgICAgIGNvbnN0IHJlc2NhbGVkID0gZXZlbnQudHJhbnNmb3JtLnJlc2NhbGVZKGN1cnJlbnRTY2FsZSk7XG4gICAgICAgICAgICAgIG1hcC5zZXQoem9vbS50YXJnZXQuaW5kZXgsIHJlc2NhbGVkKTtcblxuICAgICAgICAgICAgICBjb25zdCBheGlzID0geUF4ZXMuZ2V0KHpvb20udGFyZ2V0LmluZGV4KTtcbiAgICAgICAgICAgICAgdGhpcy50cmFuc2Zvcm1DYWNoZVkuc2V0KGF4aXMuaW5kZXgsIGV2ZW50LnRyYW5zZm9ybSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIG1hcDtcbiAgICAgICAgfVxuICAgICAgKSxcbiAgICAgIHNoYXJlUmVwbGF5KHtcbiAgICAgICAgYnVmZmVyU2l6ZTogMSxcbiAgICAgICAgcmVmQ291bnQ6IHRydWVcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxufVxuIl19
|
|
@@ -1862,7 +1862,6 @@ class ZoomableDirective {
|
|
|
1862
1862
|
const maxZoom = ((_h = this.config.zoom) === null || _h === void 0 ? void 0 : _h.max) ? (this.zoomAxis.extremes[1] - this.zoomAxis.extremes[0]) / ((_j = this.config.zoom) === null || _j === void 0 ? void 0 : _j.max) : 0;
|
|
1863
1863
|
const minZoom = ((_k = this.config.zoom) === null || _k === void 0 ? void 0 : _k.min) ? (this.zoomAxis.extremes[1] - this.zoomAxis.extremes[0]) / ((_l = this.config.zoom) === null || _l === void 0 ? void 0 : _l.min) : Infinity;
|
|
1864
1864
|
this.zoom.scaleExtent([maxZoom, minZoom]);
|
|
1865
|
-
console.log(this.zoom.scaleExtent());
|
|
1866
1865
|
this.zoom.on('start zoom end', this.zoomed);
|
|
1867
1866
|
this._element.call(this.zoom);
|
|
1868
1867
|
}
|
|
@@ -2116,10 +2115,10 @@ class ChartContainerComponent {
|
|
|
2116
2115
|
}
|
|
2117
2116
|
}
|
|
2118
2117
|
ChartContainerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: ChartContainerComponent, deps: [{ token: ChartService }, { token: i0.ChangeDetectorRef }, { token: ScaleService }, { token: ZoomService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
2119
|
-
ChartContainerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.1", type: ChartContainerComponent, selector: "teta-chart-container", ngImport: i0, template: "<ng-container *ngIf=\"{\n size: size | async,\n config: config | async,\n xAxisMap: xAxisMap | async,\n yAxisMap: yAxisMap | async,\n xScaleMap: xScaleMap | async,\n yScaleMap: yScaleMap | async,\n visibleRect: visibleRect | async,\n brushScale: brushScale | async\n} as data\" xmlns:svg=\"http://www.w3.org/1999/html\">\n <teta-tooltip *ngIf=\"data.config?.tooltip?.enable\"\n [size]=\"data.size\"\n [config]=\"data.config\"></teta-tooltip>\n\n <svg height=\"100%\" width=\"100%\" class=\"position-absolute\">\n <g class=\"y-axis-container\">\n <ng-container *ngFor=\"let item of data.yAxisMap | keyvalue;\">\n <ng-container *ngIf=\"item.value.options.visible\">\n <g\n teta-y-axis\n [axis]=\"item.value\"\n [scale]=\"data.yScaleMap.get(item.key)\"\n [size]=\"data.size\"\n [attr.transform]=\"getTranslate(item.value, data.size) | async\"></g>\n <rect\n tetaZoomable\n fill-opacity=\"0\"\n [brushScale]=\"data.brushScale\"\n [axis]=\"item.value\"\n [config]=\"data.config\"\n [size]=\"data.size\"\n [attr.x]=\"item.value.options.opposite ? 0 : -item.value.selfSize\"\n [attr.y]=\"0\"\n [attr.height]=\"data.size.height\"\n [attr.width]=\"item.value.selfSize\"\n [attr.transform]=\"getTranslate(item.value, data.size) | async\"></rect>\n </ng-container>\n\n </ng-container>\n </g>\n <g class=\"x-axis-container\">\n <ng-container *ngFor=\"let item of data.xAxisMap | keyvalue;\">\n <ng-container *ngIf=\"item.value.options.visible\">\n <g\n teta-x-axis\n [axis]=\"item.value\"\n [scale]=\"data.xScaleMap.get(item.key)\"\n [size]=\"data.size\"\n [attr.transform]=\"getTranslate(item.value, data.size) | async\"></g>\n <rect\n tetaZoomable\n fill-opacity=\"0\"\n [brushScale]=\"data.brushScale\"\n [axis]=\"item.value\"\n [config]=\"data.config\"\n [size]=\"data.size\"\n [attr.x]=\"0\"\n [attr.y]=\"0\"\n [attr.width]=\"data.size.width\"\n [attr.height]=\"item.value.selfSize\"\n [attr.transform]=\"getTranslate(item.value, data.size) | async\"></rect>\n </ng-container>\n </ng-container>\n </g>\n </svg>\n <ng-container *ngIf=\"data.visibleRect?.width > 0 && data.visibleRect?.height > 0\">\n <svg\n tetaBrushable\n tetaZoomable\n [size]=\"data.size\"\n [brushScale]=\"data.brushScale\"\n [config]=\"data.config\"\n [attr.width]=\"data.visibleRect.width\"\n [attr.height]=\"data.visibleRect.height\"\n [attr.
|
|
2118
|
+
ChartContainerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.1", type: ChartContainerComponent, selector: "teta-chart-container", ngImport: i0, template: "<ng-container *ngIf=\"{\n size: size | async,\n config: config | async,\n xAxisMap: xAxisMap | async,\n yAxisMap: yAxisMap | async,\n xScaleMap: xScaleMap | async,\n yScaleMap: yScaleMap | async,\n visibleRect: visibleRect | async,\n brushScale: brushScale | async\n} as data\" xmlns:svg=\"http://www.w3.org/1999/html\">\n <teta-tooltip *ngIf=\"data.config?.tooltip?.enable\"\n [size]=\"data.size\"\n [config]=\"data.config\"></teta-tooltip>\n\n <svg height=\"100%\" width=\"100%\" class=\"position-absolute\">\n <g class=\"y-axis-container\">\n <ng-container *ngFor=\"let item of data.yAxisMap | keyvalue;\">\n <ng-container *ngIf=\"item.value.options.visible\">\n <g\n teta-y-axis\n [axis]=\"item.value\"\n [scale]=\"data.yScaleMap.get(item.key)\"\n [size]=\"data.size\"\n [attr.transform]=\"getTranslate(item.value, data.size) | async\"></g>\n <rect\n tetaZoomable\n fill-opacity=\"0\"\n [brushScale]=\"data.brushScale\"\n [axis]=\"item.value\"\n [config]=\"data.config\"\n [size]=\"data.size\"\n [attr.x]=\"item.value.options.opposite ? 0 : -item.value.selfSize\"\n [attr.y]=\"0\"\n [attr.height]=\"data.size.height\"\n [attr.width]=\"item.value.selfSize\"\n [attr.transform]=\"getTranslate(item.value, data.size) | async\"></rect>\n </ng-container>\n\n </ng-container>\n </g>\n <g class=\"x-axis-container\">\n <ng-container *ngFor=\"let item of data.xAxisMap | keyvalue;\">\n <ng-container *ngIf=\"item.value.options.visible\">\n <g\n teta-x-axis\n [axis]=\"item.value\"\n [scale]=\"data.xScaleMap.get(item.key)\"\n [size]=\"data.size\"\n [attr.transform]=\"getTranslate(item.value, data.size) | async\"></g>\n <rect\n tetaZoomable\n fill-opacity=\"0\"\n [brushScale]=\"data.brushScale\"\n [axis]=\"item.value\"\n [config]=\"data.config\"\n [size]=\"data.size\"\n [attr.x]=\"0\"\n [attr.y]=\"0\"\n [attr.width]=\"data.size.width\"\n [attr.height]=\"item.value.selfSize\"\n [attr.transform]=\"getTranslate(item.value, data.size) | async\"></rect>\n </ng-container>\n </ng-container>\n </g>\n </svg>\n <ng-container *ngIf=\"data.visibleRect?.width > 0 && data.visibleRect?.height > 0\">\n <svg\n tetaBrushable\n tetaZoomable\n class=\"position-absolute\"\n [size]=\"data.size\"\n [brushScale]=\"data.brushScale\"\n [config]=\"data.config\"\n [attr.width]=\"data.visibleRect.width\"\n [attr.height]=\"data.visibleRect.height\"\n [attr.viewBox]=\"'0 0 ' + data.visibleRect.width + ' ' + data.visibleRect.height\"\n [style.transform]=\"'translate('+ data.visibleRect.x +'px, '+ data.visibleRect.y +'px)'\"\n (contextmenu)=\"contextMenu($event, data.xScaleMap, data.yScaleMap)\"\n (click)=\"click($event, data.xScaleMap, data.yScaleMap)\"\n (mouseleave)=\"mouseLeave($event)\"\n (mousemove)=\"mouseMove($event)\">\n\n <g class=\"gridlines\"\n teta-gridlines\n *ngIf=\"data.config.gridLines?.enable !== false\"\n [size]=\"data.size\"\n [config]=\"data.config\"\n [xScaleMap]=\"data.xScaleMap\"\n [yScaleMap]=\"data.yScaleMap\"></g>\n\n <g class=\"x-axis-plotband-container\">\n <ng-container *ngFor=\"let axis of data.config.xAxis; let i = index\">\n <g teta-plot-band *ngFor=\"let plotBand of axis.plotBands\"\n [plotBand]=\"plotBand\"\n [scale]=\"data.xScaleMap.get(i)\"\n [size]=\"data.size\"\n [axis]=\"data.xAxisMap.get(i)\"></g>\n </ng-container>\n </g>\n <g class=\"y-axis-plotband-container\">\n <ng-container *ngFor=\"let axis of data.config.yAxis; let i = index\">\n <g teta-plot-band *ngFor=\"let plotBand of axis.plotBands\"\n [plotBand]=\"plotBand\"\n [scale]=\"data.yScaleMap.get(i)\"\n [size]=\"data.size\"\n [axis]=\"data.yAxisMap.get(i)\"></g>\n </ng-container>\n </g>\n <g class=\"x-axis-plotline-container\">\n <ng-container *ngFor=\"let axis of data.config.xAxis; let i = index\">\n <g teta-plot-line *ngFor=\"let plotLine of axis.plotLines\"\n [plotLine]=\"plotLine\"\n [scale]=\"data.xScaleMap.get(i)\"\n [size]=\"data.size\"\n [axis]=\"data.xAxisMap.get(i)\"></g>\n </ng-container>\n </g>\n <g class=\"y-axis-plotline-container\">\n <ng-container *ngFor=\"let axis of data.config.yAxis; let i = index\">\n <g teta-plot-line *ngFor=\"let plotLine of axis.plotLines\"\n [plotLine]=\"plotLine\"\n [scale]=\"data.yScaleMap.get(i)\"\n [size]=\"data.size\"\n [axis]=\"data.yAxisMap.get(i)\"></g>\n </ng-container>\n </g>\n <g class=\"series-container\">\n <g teta-series-host\n *ngFor=\"let series of data.config.series\"\n [config]=\"data.config\"\n [series]=\"series\"></g>\n </g>\n <g class=\"annotations\">\n <g teta-annotation\n *ngFor=\"let annotation of data.config.annotations\"\n [annotation]=\"annotation\"></g>\n </g>\n </svg>\n\n </ng-container>\n</ng-container>\n", styles: [":host{display:flex;flex-direction:column;flex-grow:1;min-width:0;min-height:0}:host .zoomable:hover{cursor:grab}:host .zoomable:active{cursor:grabbing}\n"], components: [{ type: TooltipComponent, selector: "teta-tooltip", inputs: ["size", "config"] }, { type: YAxisComponent, selector: "[teta-y-axis]", inputs: ["axis", "scale", "size"] }, { type: XAxisComponent, selector: "[teta-x-axis]", inputs: ["axis", "scale", "size"] }, { type: GridlinesComponent, selector: "[teta-gridlines]", inputs: ["size", "xScaleMap", "yScaleMap", "config"] }, { type: PlotBandComponent, selector: "[teta-plot-band]", inputs: ["plotBand", "axis", "scale", "size"] }, { type: PlotlineComponent, selector: "[teta-plot-line]", inputs: ["plotLine", "size", "axis", "scale"] }, { type: SeriesHostComponent, selector: "[teta-series-host]", inputs: ["config", "series"] }, { type: AnnotationComponent, selector: "[teta-annotation]", inputs: ["annotation"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: ZoomableDirective, selector: "[tetaZoomable]", inputs: ["config", "axis", "size", "brushScale"] }, { type: BrushableDirective, selector: "svg:svg[tetaBrushable]", inputs: ["config", "size", "brushScale"] }], pipes: { "async": i4.AsyncPipe, "keyvalue": i4.KeyValuePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
2120
2119
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: ChartContainerComponent, decorators: [{
|
|
2121
2120
|
type: Component,
|
|
2122
|
-
args: [{ selector: 'teta-chart-container', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"{\n size: size | async,\n config: config | async,\n xAxisMap: xAxisMap | async,\n yAxisMap: yAxisMap | async,\n xScaleMap: xScaleMap | async,\n yScaleMap: yScaleMap | async,\n visibleRect: visibleRect | async,\n brushScale: brushScale | async\n} as data\" xmlns:svg=\"http://www.w3.org/1999/html\">\n <teta-tooltip *ngIf=\"data.config?.tooltip?.enable\"\n [size]=\"data.size\"\n [config]=\"data.config\"></teta-tooltip>\n\n <svg height=\"100%\" width=\"100%\" class=\"position-absolute\">\n <g class=\"y-axis-container\">\n <ng-container *ngFor=\"let item of data.yAxisMap | keyvalue;\">\n <ng-container *ngIf=\"item.value.options.visible\">\n <g\n teta-y-axis\n [axis]=\"item.value\"\n [scale]=\"data.yScaleMap.get(item.key)\"\n [size]=\"data.size\"\n [attr.transform]=\"getTranslate(item.value, data.size) | async\"></g>\n <rect\n tetaZoomable\n fill-opacity=\"0\"\n [brushScale]=\"data.brushScale\"\n [axis]=\"item.value\"\n [config]=\"data.config\"\n [size]=\"data.size\"\n [attr.x]=\"item.value.options.opposite ? 0 : -item.value.selfSize\"\n [attr.y]=\"0\"\n [attr.height]=\"data.size.height\"\n [attr.width]=\"item.value.selfSize\"\n [attr.transform]=\"getTranslate(item.value, data.size) | async\"></rect>\n </ng-container>\n\n </ng-container>\n </g>\n <g class=\"x-axis-container\">\n <ng-container *ngFor=\"let item of data.xAxisMap | keyvalue;\">\n <ng-container *ngIf=\"item.value.options.visible\">\n <g\n teta-x-axis\n [axis]=\"item.value\"\n [scale]=\"data.xScaleMap.get(item.key)\"\n [size]=\"data.size\"\n [attr.transform]=\"getTranslate(item.value, data.size) | async\"></g>\n <rect\n tetaZoomable\n fill-opacity=\"0\"\n [brushScale]=\"data.brushScale\"\n [axis]=\"item.value\"\n [config]=\"data.config\"\n [size]=\"data.size\"\n [attr.x]=\"0\"\n [attr.y]=\"0\"\n [attr.width]=\"data.size.width\"\n [attr.height]=\"item.value.selfSize\"\n [attr.transform]=\"getTranslate(item.value, data.size) | async\"></rect>\n </ng-container>\n </ng-container>\n </g>\n </svg>\n <ng-container *ngIf=\"data.visibleRect?.width > 0 && data.visibleRect?.height > 0\">\n <svg\n tetaBrushable\n tetaZoomable\n [size]=\"data.size\"\n [brushScale]=\"data.brushScale\"\n [config]=\"data.config\"\n [attr.width]=\"data.visibleRect.width\"\n [attr.height]=\"data.visibleRect.height\"\n [attr.
|
|
2121
|
+
args: [{ selector: 'teta-chart-container', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"{\n size: size | async,\n config: config | async,\n xAxisMap: xAxisMap | async,\n yAxisMap: yAxisMap | async,\n xScaleMap: xScaleMap | async,\n yScaleMap: yScaleMap | async,\n visibleRect: visibleRect | async,\n brushScale: brushScale | async\n} as data\" xmlns:svg=\"http://www.w3.org/1999/html\">\n <teta-tooltip *ngIf=\"data.config?.tooltip?.enable\"\n [size]=\"data.size\"\n [config]=\"data.config\"></teta-tooltip>\n\n <svg height=\"100%\" width=\"100%\" class=\"position-absolute\">\n <g class=\"y-axis-container\">\n <ng-container *ngFor=\"let item of data.yAxisMap | keyvalue;\">\n <ng-container *ngIf=\"item.value.options.visible\">\n <g\n teta-y-axis\n [axis]=\"item.value\"\n [scale]=\"data.yScaleMap.get(item.key)\"\n [size]=\"data.size\"\n [attr.transform]=\"getTranslate(item.value, data.size) | async\"></g>\n <rect\n tetaZoomable\n fill-opacity=\"0\"\n [brushScale]=\"data.brushScale\"\n [axis]=\"item.value\"\n [config]=\"data.config\"\n [size]=\"data.size\"\n [attr.x]=\"item.value.options.opposite ? 0 : -item.value.selfSize\"\n [attr.y]=\"0\"\n [attr.height]=\"data.size.height\"\n [attr.width]=\"item.value.selfSize\"\n [attr.transform]=\"getTranslate(item.value, data.size) | async\"></rect>\n </ng-container>\n\n </ng-container>\n </g>\n <g class=\"x-axis-container\">\n <ng-container *ngFor=\"let item of data.xAxisMap | keyvalue;\">\n <ng-container *ngIf=\"item.value.options.visible\">\n <g\n teta-x-axis\n [axis]=\"item.value\"\n [scale]=\"data.xScaleMap.get(item.key)\"\n [size]=\"data.size\"\n [attr.transform]=\"getTranslate(item.value, data.size) | async\"></g>\n <rect\n tetaZoomable\n fill-opacity=\"0\"\n [brushScale]=\"data.brushScale\"\n [axis]=\"item.value\"\n [config]=\"data.config\"\n [size]=\"data.size\"\n [attr.x]=\"0\"\n [attr.y]=\"0\"\n [attr.width]=\"data.size.width\"\n [attr.height]=\"item.value.selfSize\"\n [attr.transform]=\"getTranslate(item.value, data.size) | async\"></rect>\n </ng-container>\n </ng-container>\n </g>\n </svg>\n <ng-container *ngIf=\"data.visibleRect?.width > 0 && data.visibleRect?.height > 0\">\n <svg\n tetaBrushable\n tetaZoomable\n class=\"position-absolute\"\n [size]=\"data.size\"\n [brushScale]=\"data.brushScale\"\n [config]=\"data.config\"\n [attr.width]=\"data.visibleRect.width\"\n [attr.height]=\"data.visibleRect.height\"\n [attr.viewBox]=\"'0 0 ' + data.visibleRect.width + ' ' + data.visibleRect.height\"\n [style.transform]=\"'translate('+ data.visibleRect.x +'px, '+ data.visibleRect.y +'px)'\"\n (contextmenu)=\"contextMenu($event, data.xScaleMap, data.yScaleMap)\"\n (click)=\"click($event, data.xScaleMap, data.yScaleMap)\"\n (mouseleave)=\"mouseLeave($event)\"\n (mousemove)=\"mouseMove($event)\">\n\n <g class=\"gridlines\"\n teta-gridlines\n *ngIf=\"data.config.gridLines?.enable !== false\"\n [size]=\"data.size\"\n [config]=\"data.config\"\n [xScaleMap]=\"data.xScaleMap\"\n [yScaleMap]=\"data.yScaleMap\"></g>\n\n <g class=\"x-axis-plotband-container\">\n <ng-container *ngFor=\"let axis of data.config.xAxis; let i = index\">\n <g teta-plot-band *ngFor=\"let plotBand of axis.plotBands\"\n [plotBand]=\"plotBand\"\n [scale]=\"data.xScaleMap.get(i)\"\n [size]=\"data.size\"\n [axis]=\"data.xAxisMap.get(i)\"></g>\n </ng-container>\n </g>\n <g class=\"y-axis-plotband-container\">\n <ng-container *ngFor=\"let axis of data.config.yAxis; let i = index\">\n <g teta-plot-band *ngFor=\"let plotBand of axis.plotBands\"\n [plotBand]=\"plotBand\"\n [scale]=\"data.yScaleMap.get(i)\"\n [size]=\"data.size\"\n [axis]=\"data.yAxisMap.get(i)\"></g>\n </ng-container>\n </g>\n <g class=\"x-axis-plotline-container\">\n <ng-container *ngFor=\"let axis of data.config.xAxis; let i = index\">\n <g teta-plot-line *ngFor=\"let plotLine of axis.plotLines\"\n [plotLine]=\"plotLine\"\n [scale]=\"data.xScaleMap.get(i)\"\n [size]=\"data.size\"\n [axis]=\"data.xAxisMap.get(i)\"></g>\n </ng-container>\n </g>\n <g class=\"y-axis-plotline-container\">\n <ng-container *ngFor=\"let axis of data.config.yAxis; let i = index\">\n <g teta-plot-line *ngFor=\"let plotLine of axis.plotLines\"\n [plotLine]=\"plotLine\"\n [scale]=\"data.yScaleMap.get(i)\"\n [size]=\"data.size\"\n [axis]=\"data.yAxisMap.get(i)\"></g>\n </ng-container>\n </g>\n <g class=\"series-container\">\n <g teta-series-host\n *ngFor=\"let series of data.config.series\"\n [config]=\"data.config\"\n [series]=\"series\"></g>\n </g>\n <g class=\"annotations\">\n <g teta-annotation\n *ngFor=\"let annotation of data.config.annotations\"\n [annotation]=\"annotation\"></g>\n </g>\n </svg>\n\n </ng-container>\n</ng-container>\n", styles: [":host{display:flex;flex-direction:column;flex-grow:1;min-width:0;min-height:0}:host .zoomable:hover{cursor:grab}:host .zoomable:active{cursor:grabbing}\n"] }]
|
|
2123
2122
|
}], ctorParameters: function () { return [{ type: ChartService }, { type: i0.ChangeDetectorRef }, { type: ScaleService }, { type: ZoomService }, { type: i0.ElementRef }]; } });
|
|
2124
2123
|
|
|
2125
2124
|
class LegendComponent {
|