@taiga-ui/addon-charts 4.7.0 → 4.8.1-canary.0ecc12f

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.
@@ -1,10 +1,11 @@
1
- import type { ElementRef, QueryList } from '@angular/core';
1
+ import { type ElementRef, type QueryList } from '@angular/core';
2
2
  import type { TuiSizeXL } from '@taiga-ui/core/types';
3
3
  import type { Observable } from 'rxjs';
4
4
  import * as i0 from "@angular/core";
5
5
  export declare class TuiArcChart {
6
6
  private readonly arcs$;
7
- protected initialized: boolean;
7
+ protected initialized: import("@angular/core").WritableSignal<boolean>;
8
+ protected readonly $: import("rxjs").Subscription;
8
9
  value: readonly number[];
9
10
  size: TuiSizeXL;
10
11
  max: number;
@@ -12,7 +13,6 @@ export declare class TuiArcChart {
12
13
  maxLabel: string;
13
14
  activeItemIndex: number;
14
15
  readonly activeItemIndexChange: Observable<number>;
15
- constructor();
16
16
  protected set arcs(arcs: QueryList<ElementRef<SVGElement>>);
17
17
  protected get width(): number;
18
18
  protected get strokeWidth(): number;
@@ -1,19 +1,22 @@
1
- import type { QueryList } from '@angular/core';
1
+ import { type OnChanges, type QueryList } from '@angular/core';
2
2
  import type { TuiLineChartHintContext } from '@taiga-ui/addon-charts/types';
3
3
  import type { TuiStringHandler } from '@taiga-ui/cdk/types';
4
4
  import { TuiHintOptionsDirective } from '@taiga-ui/core/directives/hint';
5
5
  import type { TuiPoint } from '@taiga-ui/core/types';
6
6
  import type { PolymorpheusContent } from '@taiga-ui/polymorpheus';
7
- import type { Observable } from 'rxjs';
7
+ import { type Observable } from 'rxjs';
8
8
  import { TuiLineChartHint } from './line-chart-hint.directive';
9
9
  import * as i0 from "@angular/core";
10
- export declare class TuiLineChart {
10
+ export declare class TuiLineChart implements OnChanges {
11
11
  private readonly zone;
12
12
  private readonly options;
13
13
  private readonly hover$;
14
14
  private readonly autoId;
15
+ private readonly resize;
16
+ private readonly box;
15
17
  protected readonly hintDirective: TuiLineChartHint | null;
16
18
  protected readonly hintOptions: TuiHintOptionsDirective | null;
19
+ protected readonly viewBox: import("@angular/core").Signal<string>;
17
20
  readonly drivers: QueryList<Observable<boolean>>;
18
21
  x: number;
19
22
  y: number;
@@ -26,12 +29,12 @@ export declare class TuiLineChart {
26
29
  dots: boolean;
27
30
  value: readonly TuiPoint[];
28
31
  set valueSetter(value: readonly TuiPoint[]);
32
+ ngOnChanges(): void;
29
33
  onHovered(index: number): void;
30
34
  protected get hovered$(): Observable<number>;
31
35
  protected get hintContent(): PolymorpheusContent<TuiLineChartHintContext<TuiPoint>>;
32
36
  protected get fillId(): string;
33
37
  protected get fill(): string;
34
- protected get viewBox(): string;
35
38
  protected get d(): string;
36
39
  protected get fillD(): string;
37
40
  protected get isFocusable(): boolean;
@@ -1,7 +1,11 @@
1
1
  import * as i0 from "@angular/core";
2
2
  export declare class TuiPieChartDirective {
3
3
  private readonly sector$;
4
- constructor();
4
+ private readonly el;
5
+ private readonly performance;
6
+ private readonly animationFrame$;
7
+ private readonly speed;
8
+ protected readonly $: import("rxjs").Subscription;
5
9
  set tuiPieChart(sector: readonly [number, number]);
6
10
  static ɵfac: i0.ɵɵFactoryDeclaration<TuiPieChartDirective, never>;
7
11
  static ɵdir: i0.ɵɵDirectiveDeclaration<TuiPieChartDirective, "path[tuiPieChart]", never, { "tuiPieChart": { "alias": "tuiPieChart"; "required": false; }; }, {}, never, never, true, never>;
@@ -1,33 +1,24 @@
1
- import { ChangeDetectionStrategy, ChangeDetectorRef, Component, inject, Input, Output, ViewChildren, } from '@angular/core';
1
+ import { signal } from '@angular/core';
2
+ import { ChangeDetectionStrategy, Component, Input, Output, ViewChildren, } from '@angular/core';
2
3
  import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
3
4
  import { TuiRepeatTimes } from '@taiga-ui/cdk/directives/repeat-times';
4
- import { tuiTypedFromEvent, tuiWatch } from '@taiga-ui/cdk/observables';
5
+ import { tuiTypedFromEvent, tuiZonefree } from '@taiga-ui/cdk/observables';
5
6
  import { map, merge, ReplaySubject, startWith, switchMap, tap, timer } from 'rxjs';
6
7
  import * as i0 from "@angular/core";
7
- // 3/4 with 1% safety offset
8
- const ARC = 0.76;
9
- const SIZE = {
10
- m: 9,
11
- l: 11,
12
- xl: 16,
13
- };
14
- const WIDTH = {
15
- m: 0.25,
16
- l: 0.375,
17
- xl: 0.5625,
18
- };
19
- const GAP = {
20
- m: 0.125,
21
- l: 0.1875,
22
- xl: 0.25,
23
- };
8
+ const ARC = 0.76; // 3/4 with 1% safety offset
9
+ const SIZE = { m: 9, l: 11, xl: 16 };
10
+ const WIDTH = { m: 0.25, l: 0.375, xl: 0.5625 };
11
+ const GAP = { m: 0.125, l: 0.1875, xl: 0.25 };
24
12
  function arcsToIndex(arcs) {
25
13
  return arcs.map(({ nativeElement }, index) => merge(tuiTypedFromEvent(nativeElement, 'mouseenter').pipe(map(() => index)), tuiTypedFromEvent(nativeElement, 'mouseleave').pipe(map(() => NaN))));
26
14
  }
27
15
  class TuiArcChart {
28
16
  constructor() {
29
17
  this.arcs$ = new ReplaySubject(1);
30
- this.initialized = false;
18
+ this.initialized = signal(false);
19
+ this.$ = timer(0)
20
+ .pipe(tuiZonefree(), takeUntilDestroyed())
21
+ .subscribe(() => this.initialized.set(true));
31
22
  this.value = [];
32
23
  this.size = 'm';
33
24
  this.max = 100;
@@ -37,11 +28,6 @@ class TuiArcChart {
37
28
  this.activeItemIndexChange = this.arcs$.pipe(switchMap((arcs) => arcs.changes.pipe(startWith(null), switchMap(() => merge(...arcsToIndex(arcs))))), tap((index) => {
38
29
  this.activeItemIndex = index;
39
30
  }));
40
- timer(0)
41
- .pipe(tuiWatch(inject(ChangeDetectorRef)), takeUntilDestroyed())
42
- .subscribe(() => {
43
- this.initialized = true;
44
- });
45
31
  }
46
32
  set arcs(arcs) {
47
33
  this.arcs$.next(arcs);
@@ -68,7 +54,7 @@ class TuiArcChart {
68
54
  return (this.getLength(index) * (1 - Math.min((this.value[index] || 0) / this.max, 1)));
69
55
  }
70
56
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiArcChart, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
71
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiArcChart, isStandalone: true, selector: "tui-arc-chart", inputs: { value: "value", size: "size", max: "max", minLabel: "minLabel", maxLabel: "maxLabel", activeItemIndex: "activeItemIndex" }, outputs: { activeItemIndexChange: "activeItemIndexChange" }, host: { properties: { "attr.data-size": "size", "style.width.rem": "width", "style.height.rem": "width", "style.strokeWidth.rem": "strokeWidth" } }, viewQueries: [{ propertyName: "arcs", predicate: ["arc"], descendants: true }], ngImport: i0, template: "<svg\n *tuiRepeatTimes=\"let index of value.length\"\n focusable=\"false\"\n viewBox=\"-100 -100 200 200\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"t-svg\"\n [style.height.em]=\"getDiameter(index)\"\n [style.left.em]=\"getInset(index)\"\n [style.top.em]=\"getInset(index)\"\n [style.width.em]=\"getDiameter(index)\"\n>\n <path\n d=\"M -70 70 A 100 100 0 1 1 70 70\"\n vector-effect=\"non-scaling-stroke\"\n />\n <path\n #arc\n d=\"M -70 70 A 100 100 0 1 1 70 70\"\n vector-effect=\"non-scaling-stroke\"\n class=\"t-value\"\n [class.t-value_inactive]=\"isInactive(index)\"\n [style.stroke]=\"'var(--tui-chart-categorical-0' + index + ')'\"\n [style.strokeDasharray.em]=\"getLength(index)\"\n [style.strokeDashoffset.em]=\"initialized ? getOffset(index) : getLength(index)\"\n />\n</svg>\n<div class=\"t-content\">\n <div class=\"t-wrapper\">\n <ng-content />\n </div>\n</div>\n<div class=\"t-percent\">\n <span>{{ minLabel }}</span>\n <span>{{ maxLabel }}</span>\n</div>\n", styles: [":host{position:relative;display:block;flex-shrink:0}.t-svg{position:absolute;top:0;left:0;bottom:0;right:0;overflow:visible;fill:none;stroke:currentColor;stroke-linecap:round;color:var(--tui-background-neutral-1);font-size:1rem;pointer-events:none}.t-value{pointer-events:auto;transition:stroke-dashoffset var(--tui-duration) ease-in-out,opacity var(--tui-duration) ease-in-out .1s}.t-value_inactive{transition-property:stroke-dashoffset,opacity;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;opacity:.16}.t-content{position:absolute;top:0;left:0;inline-size:100%;block-size:100%;display:flex;justify-content:center;align-items:center;text-align:center;color:var(--tui-text-secondary);font:var(--tui-font-text-xs);pointer-events:none}:host[data-size=xl] .t-content{font:var(--tui-font-text-m)}.t-wrapper{pointer-events:auto}.t-wrapper:first-line{color:var(--tui-text-primary)}:host[data-size=m] .t-wrapper:first-line{font:var(--tui-font-text-s);font-weight:700}:host[data-size=l] .t-wrapper:first-line{font:var(--tui-font-text-m);font-weight:700}:host[data-size=xl] .t-wrapper:first-line{font:var(--tui-font-heading-5)}.t-percent{position:absolute;left:25%;bottom:11%;display:flex;inline-size:50%;justify-content:space-between;font:var(--tui-font-text-xs);color:var(--tui-text-secondary)}:host[data-size=xl] .t-percent{font:var(--tui-font-text-m)}\n"], dependencies: [{ kind: "directive", type: TuiRepeatTimes, selector: "[tuiRepeatTimes][tuiRepeatTimesOf]", inputs: ["tuiRepeatTimesOf"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
57
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiArcChart, isStandalone: true, selector: "tui-arc-chart", inputs: { value: "value", size: "size", max: "max", minLabel: "minLabel", maxLabel: "maxLabel", activeItemIndex: "activeItemIndex" }, outputs: { activeItemIndexChange: "activeItemIndexChange" }, host: { properties: { "attr.data-size": "size", "style.width.rem": "width", "style.height.rem": "width", "style.strokeWidth.rem": "strokeWidth" } }, viewQueries: [{ propertyName: "arcs", predicate: ["arc"], descendants: true }], ngImport: i0, template: "<svg\n *tuiRepeatTimes=\"let index of value.length\"\n focusable=\"false\"\n viewBox=\"-100 -100 200 200\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"t-svg\"\n [style.height.em]=\"getDiameter(index)\"\n [style.left.em]=\"getInset(index)\"\n [style.top.em]=\"getInset(index)\"\n [style.width.em]=\"getDiameter(index)\"\n>\n <path\n d=\"M -70 70 A 100 100 0 1 1 70 70\"\n vector-effect=\"non-scaling-stroke\"\n />\n <path\n #arc\n d=\"M -70 70 A 100 100 0 1 1 70 70\"\n vector-effect=\"non-scaling-stroke\"\n class=\"t-value\"\n [class.t-value_inactive]=\"isInactive(index)\"\n [style.stroke]=\"'var(--tui-chart-categorical-0' + index + ')'\"\n [style.strokeDasharray.em]=\"getLength(index)\"\n [style.strokeDashoffset.em]=\"initialized() ? getOffset(index) : getLength(index)\"\n />\n</svg>\n<div class=\"t-content\">\n <div class=\"t-wrapper\">\n <ng-content />\n </div>\n</div>\n<div class=\"t-percent\">\n <span>{{ minLabel }}</span>\n <span>{{ maxLabel }}</span>\n</div>\n", styles: [":host{position:relative;display:block;flex-shrink:0}.t-svg{position:absolute;top:0;left:0;bottom:0;right:0;overflow:visible;fill:none;stroke:currentColor;stroke-linecap:round;color:var(--tui-background-neutral-1);font-size:1rem;pointer-events:none}.t-value{pointer-events:auto;transition:stroke-dashoffset var(--tui-duration) ease-in-out,opacity var(--tui-duration) ease-in-out .1s}.t-value_inactive{transition-property:stroke-dashoffset,opacity;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;opacity:.16}.t-content{position:absolute;top:0;left:0;inline-size:100%;block-size:100%;display:flex;justify-content:center;align-items:center;text-align:center;color:var(--tui-text-secondary);font:var(--tui-font-text-xs);pointer-events:none}:host[data-size=xl] .t-content{font:var(--tui-font-text-m)}.t-wrapper{pointer-events:auto}.t-wrapper:first-line{color:var(--tui-text-primary)}:host[data-size=m] .t-wrapper:first-line{font:var(--tui-font-text-s);font-weight:700}:host[data-size=l] .t-wrapper:first-line{font:var(--tui-font-text-m);font-weight:700}:host[data-size=xl] .t-wrapper:first-line{font:var(--tui-font-heading-5)}.t-percent{position:absolute;left:25%;bottom:11%;display:flex;inline-size:50%;justify-content:space-between;font:var(--tui-font-text-xs);color:var(--tui-text-secondary)}:host[data-size=xl] .t-percent{font:var(--tui-font-text-m)}\n"], dependencies: [{ kind: "directive", type: TuiRepeatTimes, selector: "[tuiRepeatTimes][tuiRepeatTimesOf]", inputs: ["tuiRepeatTimesOf"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
72
58
  }
73
59
  export { TuiArcChart };
74
60
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiArcChart, decorators: [{
@@ -78,8 +64,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
78
64
  '[style.width.rem]': 'width',
79
65
  '[style.height.rem]': 'width',
80
66
  '[style.strokeWidth.rem]': 'strokeWidth',
81
- }, template: "<svg\n *tuiRepeatTimes=\"let index of value.length\"\n focusable=\"false\"\n viewBox=\"-100 -100 200 200\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"t-svg\"\n [style.height.em]=\"getDiameter(index)\"\n [style.left.em]=\"getInset(index)\"\n [style.top.em]=\"getInset(index)\"\n [style.width.em]=\"getDiameter(index)\"\n>\n <path\n d=\"M -70 70 A 100 100 0 1 1 70 70\"\n vector-effect=\"non-scaling-stroke\"\n />\n <path\n #arc\n d=\"M -70 70 A 100 100 0 1 1 70 70\"\n vector-effect=\"non-scaling-stroke\"\n class=\"t-value\"\n [class.t-value_inactive]=\"isInactive(index)\"\n [style.stroke]=\"'var(--tui-chart-categorical-0' + index + ')'\"\n [style.strokeDasharray.em]=\"getLength(index)\"\n [style.strokeDashoffset.em]=\"initialized ? getOffset(index) : getLength(index)\"\n />\n</svg>\n<div class=\"t-content\">\n <div class=\"t-wrapper\">\n <ng-content />\n </div>\n</div>\n<div class=\"t-percent\">\n <span>{{ minLabel }}</span>\n <span>{{ maxLabel }}</span>\n</div>\n", styles: [":host{position:relative;display:block;flex-shrink:0}.t-svg{position:absolute;top:0;left:0;bottom:0;right:0;overflow:visible;fill:none;stroke:currentColor;stroke-linecap:round;color:var(--tui-background-neutral-1);font-size:1rem;pointer-events:none}.t-value{pointer-events:auto;transition:stroke-dashoffset var(--tui-duration) ease-in-out,opacity var(--tui-duration) ease-in-out .1s}.t-value_inactive{transition-property:stroke-dashoffset,opacity;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;opacity:.16}.t-content{position:absolute;top:0;left:0;inline-size:100%;block-size:100%;display:flex;justify-content:center;align-items:center;text-align:center;color:var(--tui-text-secondary);font:var(--tui-font-text-xs);pointer-events:none}:host[data-size=xl] .t-content{font:var(--tui-font-text-m)}.t-wrapper{pointer-events:auto}.t-wrapper:first-line{color:var(--tui-text-primary)}:host[data-size=m] .t-wrapper:first-line{font:var(--tui-font-text-s);font-weight:700}:host[data-size=l] .t-wrapper:first-line{font:var(--tui-font-text-m);font-weight:700}:host[data-size=xl] .t-wrapper:first-line{font:var(--tui-font-heading-5)}.t-percent{position:absolute;left:25%;bottom:11%;display:flex;inline-size:50%;justify-content:space-between;font:var(--tui-font-text-xs);color:var(--tui-text-secondary)}:host[data-size=xl] .t-percent{font:var(--tui-font-text-m)}\n"] }]
82
- }], ctorParameters: function () { return []; }, propDecorators: { value: [{
67
+ }, template: "<svg\n *tuiRepeatTimes=\"let index of value.length\"\n focusable=\"false\"\n viewBox=\"-100 -100 200 200\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"t-svg\"\n [style.height.em]=\"getDiameter(index)\"\n [style.left.em]=\"getInset(index)\"\n [style.top.em]=\"getInset(index)\"\n [style.width.em]=\"getDiameter(index)\"\n>\n <path\n d=\"M -70 70 A 100 100 0 1 1 70 70\"\n vector-effect=\"non-scaling-stroke\"\n />\n <path\n #arc\n d=\"M -70 70 A 100 100 0 1 1 70 70\"\n vector-effect=\"non-scaling-stroke\"\n class=\"t-value\"\n [class.t-value_inactive]=\"isInactive(index)\"\n [style.stroke]=\"'var(--tui-chart-categorical-0' + index + ')'\"\n [style.strokeDasharray.em]=\"getLength(index)\"\n [style.strokeDashoffset.em]=\"initialized() ? getOffset(index) : getLength(index)\"\n />\n</svg>\n<div class=\"t-content\">\n <div class=\"t-wrapper\">\n <ng-content />\n </div>\n</div>\n<div class=\"t-percent\">\n <span>{{ minLabel }}</span>\n <span>{{ maxLabel }}</span>\n</div>\n", styles: [":host{position:relative;display:block;flex-shrink:0}.t-svg{position:absolute;top:0;left:0;bottom:0;right:0;overflow:visible;fill:none;stroke:currentColor;stroke-linecap:round;color:var(--tui-background-neutral-1);font-size:1rem;pointer-events:none}.t-value{pointer-events:auto;transition:stroke-dashoffset var(--tui-duration) ease-in-out,opacity var(--tui-duration) ease-in-out .1s}.t-value_inactive{transition-property:stroke-dashoffset,opacity;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;opacity:.16}.t-content{position:absolute;top:0;left:0;inline-size:100%;block-size:100%;display:flex;justify-content:center;align-items:center;text-align:center;color:var(--tui-text-secondary);font:var(--tui-font-text-xs);pointer-events:none}:host[data-size=xl] .t-content{font:var(--tui-font-text-m)}.t-wrapper{pointer-events:auto}.t-wrapper:first-line{color:var(--tui-text-primary)}:host[data-size=m] .t-wrapper:first-line{font:var(--tui-font-text-s);font-weight:700}:host[data-size=l] .t-wrapper:first-line{font:var(--tui-font-text-m);font-weight:700}:host[data-size=xl] .t-wrapper:first-line{font:var(--tui-font-heading-5)}.t-percent{position:absolute;left:25%;bottom:11%;display:flex;inline-size:50%;justify-content:space-between;font:var(--tui-font-text-xs);color:var(--tui-text-secondary)}:host[data-size=xl] .t-percent{font:var(--tui-font-text-m)}\n"] }]
68
+ }], propDecorators: { value: [{
83
69
  type: Input
84
70
  }], size: [{
85
71
  type: Input
@@ -97,4 +83,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
97
83
  type: ViewChildren,
98
84
  args: ['arc']
99
85
  }] } });
100
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJjLWNoYXJ0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FkZG9uLWNoYXJ0cy9jb21wb25lbnRzL2FyYy1jaGFydC9hcmMtY2hhcnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWRkb24tY2hhcnRzL2NvbXBvbmVudHMvYXJjLWNoYXJ0L2FyYy1jaGFydC50ZW1wbGF0ZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEdBQ2YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDOUQsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLHVDQUF1QyxDQUFDO0FBQ3JFLE9BQU8sRUFBQyxpQkFBaUIsRUFBRSxRQUFRLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUd0RSxPQUFPLEVBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFDLE1BQU0sTUFBTSxDQUFDOztBQUNqRiw0QkFBNEI7QUFDNUIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDO0FBRWpCLE1BQU0sSUFBSSxHQUE4QjtJQUNwQyxDQUFDLEVBQUUsQ0FBQztJQUNKLENBQUMsRUFBRSxFQUFFO0lBQ0wsRUFBRSxFQUFFLEVBQUU7Q0FDVCxDQUFDO0FBRUYsTUFBTSxLQUFLLEdBQThCO0lBQ3JDLENBQUMsRUFBRSxJQUFJO0lBQ1AsQ0FBQyxFQUFFLEtBQUs7SUFDUixFQUFFLEVBQUUsTUFBTTtDQUNiLENBQUM7QUFFRixNQUFNLEdBQUcsR0FBOEI7SUFDbkMsQ0FBQyxFQUFFLEtBQUs7SUFDUixDQUFDLEVBQUUs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VyxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsQ0FBQztJQUNuRCxDQUFDO0lBRVMsU0FBUyxDQUFDLEtBQWE7UUFDN0IsT0FBTyxDQUNILElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUNqRixDQUFDO0lBQ04sQ0FBQzsrR0E3RVEsV0FBVzttR0FBWCxXQUFXLGlmQzVEeEIscWxDQW1DQSxvNkNEY2MsY0FBYzs7U0FXZixXQUFXOzRGQUFYLFdBQVc7a0JBZHZCLFNBQVM7aUNBQ00sSUFBSSxZQUNOLGVBQWUsV0FDaEIsQ0FBQyxjQUFjLENBQUMsbUJBR1IsdUJBQXVCLENBQUMsTUFBTSxRQUN6Qzt3QkFDRixrQkFBa0IsRUFBRSxNQUFNO3dCQUMxQixtQkFBbUIsRUFBRSxPQUFPO3dCQUM1QixvQkFBb0IsRUFBRSxPQUFPO3dCQUM3Qix5QkFBeUIsRUFBRSxhQUFhO3FCQUMzQzswRUFRTSxLQUFLO3NCQURYLEtBQUs7Z0JBSUMsSUFBSTtzQkFEVixLQUFLO2dCQUlDLEdBQUc7c0JBRFQsS0FBSztnQkFJQyxRQUFRO3NCQURkLEtBQUs7Z0JBSUMsUUFBUTtzQkFEZCxLQUFLO2dCQUlDLGVBQWU7c0JBRHJCLEtBQUs7Z0JBSVUscUJBQXFCO3NCQURwQyxNQUFNO2dCQXNCTyxJQUFJO3NCQURqQixZQUFZO3VCQUFDLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7RWxlbWVudFJlZiwgUXVlcnlMaXN0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIGluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPdXRwdXQsXG4gICAgVmlld0NoaWxkcmVuLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7dGFrZVVudGlsRGVzdHJveWVkfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQge1R1aVJlcGVhdFRpbWVzfSBmcm9tICdAdGFpZ2EtdWkvY2RrL2RpcmVjdGl2ZXMvcmVwZWF0LXRpbWVzJztcbmltcG9ydCB7dHVpVHlwZWRGcm9tRXZlbnQsIHR1aVdhdGNofSBmcm9tICdAdGFpZ2EtdWkvY2RrL29ic2VydmFibGVzJztcbmltcG9ydCB0eXBlIHtUdWlTaXplWEx9IGZyb20gJ0B0YWlnYS11aS9jb3JlL3R5cGVzJztcbmltcG9ydCB0eXBlIHtPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcbmltcG9ydCB7bWFwLCBtZXJnZSwgUmVwbGF5U3ViamVjdCwgc3RhcnRXaXRoLCBzd2l0Y2hNYXAsIHRhcCwgdGltZXJ9IGZyb20gJ3J4anMnO1xuLy8gMy80IHdpdGggMSUgc2FmZXR5IG9mZnNldFxuY29uc3QgQVJDID0gMC43NjtcblxuY29uc3QgU0laRTogUmVjb3JkPFR1aVNpemVYTCwgbnVtYmVyPiA9IHtcbiAgICBtOiA5LFxuICAgIGw6IDExLFxuICAgIHhsOiAxNixcbn07XG5cbmNvbnN0IFdJRFRIOiBSZWNvcmQ8VHVpU2l6ZVhMLCBudW1iZXI+ID0ge1xuICAgIG06IDAuMjUsXG4gICAgbDogMC4zNzUsXG4gICAgeGw6IDAuNTYyNSxcbn07XG5cbmNvbnN0IEdBUDogUmVjb3JkPFR1aVNpemVYTCwgbnVtYmVyPiA9IHtcbiAgICBtOiAwLjEyNSxcbiAgICBsOiAwLjE4NzUsXG4gICAgeGw6IDAuMjUsXG59O1xuXG5mdW5jdGlvbiBhcmNzVG9JbmRleChhcmNzOiBRdWVyeUxpc3Q8RWxlbWVudFJlZjxTVkdFbGVtZW50Pj4pOiBBcnJheTxPYnNlcnZhYmxlPG51bWJlcj4+IHtcbiAgICByZXR1cm4gYXJjcy5tYXAoKHtuYXRpdmVFbGVtZW50fSwgaW5kZXgpID0+XG4gICAgICAgIG1lcmdlKFxuICAgICAgICAgICAgdHVpVHlwZWRGcm9tRXZlbnQobmF0aXZlRWxlbWVudCwgJ21vdXNlZW50ZXInKS5waXBlKG1hcCgoKSA9PiBpbmRleCkpLFxuICAgICAgICAgICAgdHVpVHlwZWRGcm9tRXZlbnQobmF0aXZlRWxlbWVudCwgJ21vdXNlbGVhdmUnKS5waXBlKG1hcCgoKSA9PiBOYU4pKSxcbiAgICAgICAgKSxcbiAgICApO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAndHVpLWFyYy1jaGFydCcsXG4gICAgaW1wb3J0czogW1R1aVJlcGVhdFRpbWVzXSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vYXJjLWNoYXJ0LnRlbXBsYXRlLmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2FyYy1jaGFydC5zdHlsZS5sZXNzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgaG9zdDoge1xuICAgICAgICAnW2F0dHIuZGF0YS1zaXplXSc6ICdzaXplJyxcbiAgICAgICAgJ1tzdHlsZS53aWR0aC5yZW1dJzogJ3dpZHRoJyxcbiAgICAgICAgJ1tzdHlsZS5oZWlnaHQucmVtXSc6ICd3aWR0aCcsXG4gICAgICAgICdbc3R5bGUuc3Ryb2tlV2lkdGgucmVtXSc6ICdzdHJva2VXaWR0aCcsXG4gICAgfSxcbn0pXG5leHBvcnQgY2xhc3MgVHVpQXJjQ2hhcnQge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgYXJjcyQgPSBuZXcgUmVwbGF5U3ViamVjdDxRdWVyeUxpc3Q8RWxlbWVudFJlZjxTVkdFbGVtZW50Pj4+KDEpO1xuXG4gICAgcHJvdGVjdGVkIGluaXRpYWxpemVkID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyB2YWx1ZTogcmVhZG9ubHkgbnVtYmVyW10gPSBbXTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNpemU6IFR1aVNpemVYTCA9ICdtJztcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIG1heCA9IDEwMDtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIG1pbkxhYmVsID0gJzAlJztcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIG1heExhYmVsID0gJzEwMCUnO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgYWN0aXZlSXRlbUluZGV4ID0gTmFOO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHJlYWRvbmx5IGFjdGl2ZUl0ZW1JbmRleENoYW5nZSA9IHRoaXMuYXJjcyQucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKChhcmNzKSA9PlxuICAgICAgICAgICAgYXJjcy5jaGFuZ2VzLnBpcGUoXG4gICAgICAgICAgICAgICAgc3RhcnRXaXRoKG51bGwpLFxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PiBtZXJnZSguLi5hcmNzVG9JbmRleChhcmNzKSkpLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgKSxcbiAgICAgICAgdGFwKChpbmRleCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5hY3RpdmVJdGVtSW5kZXggPSBpbmRleDtcbiAgICAgICAgfSksXG4gICAgKTtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aW1lcigwKVxuICAgICAgICAgICAgLnBpcGUodHVpV2F0Y2goaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKSksIHRha2VVbnRpbERlc3Ryb3llZCgpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5pbml0aWFsaXplZCA9IHRydWU7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBAVmlld0NoaWxkcmVuKCdhcmMnKVxuICAgIHByb3RlY3RlZCBzZXQgYXJjcyhhcmNzOiBRdWVyeUxpc3Q8RWxlbWVudFJlZjxTVkdFbGVtZW50Pj4pIHtcbiAgICAgICAgdGhpcy5hcmNzJC5uZXh0KGFyY3MpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgd2lkdGgoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIFNJWkVbdGhpcy5zaXplXTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IHN0cm9rZVdpZHRoKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBXSURUSFt0aGlzLnNpemVdO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBpc0luYWN0aXZlKGluZGV4OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICFOdW1iZXIuaXNOYU4odGhpcy5hY3RpdmVJdGVtSW5kZXgpICYmIGluZGV4ICE9PSB0aGlzLmFjdGl2ZUl0ZW1JbmRleDtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0SW5zZXQoaW5kZXg6IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0cm9rZVdpZHRoIC8gMiArIGluZGV4ICogKHRoaXMuc3Ryb2tlV2lkdGggKyBHQVBbdGhpcy5zaXplXSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldERpYW1ldGVyKGluZGV4OiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gU0laRVt0aGlzLnNpemVdIC0gMiAqIHRoaXMuZ2V0SW5zZXQoaW5kZXgpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXRMZW5ndGgoaW5kZXg6IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBNYXRoLlBJICogdGhpcy5nZXREaWFtZXRlcihpbmRleCkgKiBBUkM7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldE9mZnNldChpbmRleDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRoaXMuZ2V0TGVuZ3RoKGluZGV4KSAqICgxIC0gTWF0aC5taW4oKHRoaXMudmFsdWVbaW5kZXhdIHx8IDApIC8gdGhpcy5tYXgsIDEpKVxuICAgICAgICApO1xuICAgIH1cbn1cbiIsIjxzdmdcbiAgICAqdHVpUmVwZWF0VGltZXM9XCJsZXQgaW5kZXggb2YgdmFsdWUubGVuZ3RoXCJcbiAgICBmb2N1c2FibGU9XCJmYWxzZVwiXG4gICAgdmlld0JveD1cIi0xMDAgLTEwMCAyMDAgMjAwXCJcbiAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICBjbGFzcz1cInQtc3ZnXCJcbiAgICBbc3R5bGUuaGVpZ2h0LmVtXT1cImdldERpYW1ldGVyKGluZGV4KVwiXG4gICAgW3N0eWxlLmxlZnQuZW1dPVwiZ2V0SW5zZXQoaW5kZXgpXCJcbiAgICBbc3R5bGUudG9wLmVtXT1cImdldEluc2V0KGluZGV4KVwiXG4gICAgW3N0eWxlLndpZHRoLmVtXT1cImdldERpYW1ldGVyKGluZGV4KVwiXG4+XG4gICAgPHBhdGhcbiAgICAgICAgZD1cIk0gLTcwIDcwIEEgMTAwIDEwMCAwIDEgMSA3MCA3MFwiXG4gICAgICAgIHZlY3Rvci1lZmZlY3Q9XCJub24tc2NhbGluZy1zdHJva2VcIlxuICAgIC8+XG4gICAgPHBhdGhcbiAgICAgICAgI2FyY1xuICAgICAgICBkPVwiTSAtNzAgNzAgQSAxMDAgMTAwIDAgMSAxIDcwIDcwXCJcbiAgICAgICAgdmVjdG9yLWVmZmVjdD1cIm5vbi1zY2FsaW5nLXN0cm9rZVwiXG4gICAgICAgIGNsYXNzPVwidC12YWx1ZVwiXG4gICAgICAgIFtjbGFzcy50LXZhbHVlX2luYWN0aXZlXT1cImlzSW5hY3RpdmUoaW5kZXgpXCJcbiAgICAgICAgW3N0eWxlLnN0cm9rZV09XCIndmFyKC0tdHVpLWNoYXJ0LWNhdGVnb3JpY2FsLTAnICsgaW5kZXggKyAnKSdcIlxuICAgICAgICBbc3R5bGUuc3Ryb2tlRGFzaGFycmF5LmVtXT1cImdldExlbmd0aChpbmRleClcIlxuICAgICAgICBbc3R5bGUuc3Ryb2tlRGFzaG9mZnNldC5lbV09XCJpbml0aWFsaXplZCA/IGdldE9mZnNldChpbmRleCkgOiBnZXRMZW5ndGgoaW5kZXgpXCJcbiAgICAvPlxuPC9zdmc+XG48ZGl2IGNsYXNzPVwidC1jb250ZW50XCI+XG4gICAgPGRpdiBjbGFzcz1cInQtd3JhcHBlclwiPlxuICAgICAgICA8bmctY29udGVudCAvPlxuICAgIDwvZGl2PlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwidC1wZXJjZW50XCI+XG4gICAgPHNwYW4+e3sgbWluTGFiZWwgfX08L3NwYW4+XG4gICAgPHNwYW4+e3sgbWF4TGFiZWwgfX08L3NwYW4+XG48L2Rpdj5cbiJdfQ==
86
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJjLWNoYXJ0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FkZG9uLWNoYXJ0cy9jb21wb25lbnRzL2FyYy1jaGFydC9hcmMtY2hhcnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWRkb24tY2hhcnRzL2NvbXBvbmVudHMvYXJjLWNoYXJ0L2FyYy1jaGFydC50ZW1wbGF0ZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBa0MsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3RFLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULEtBQUssRUFDTCxNQUFNLEVBQ04sWUFBWSxHQUNmLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQzlELE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSx1Q0FBdUMsQ0FBQztBQUNyRSxPQUFPLEVBQUMsaUJBQWlCLEVBQUUsV0FBVyxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFHekUsT0FBTyxFQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBQyxNQUFNLE1BQU0sQ0FBQzs7QUFFakYsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUMsNEJBQTRCO0FBQzlDLE1BQU0sSUFBSSxHQUFHLEVBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQVUsQ0FBQztBQUM1QyxNQUFNLEtBQUssR0FBRyxFQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFVLENBQUM7QUFDdkQsTUFBTSxHQUFHLEdBQUcsRUFBQyxDQUFDLEVBQUUsS0FBSyxF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LENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsQ0FBQztJQUNuRCxDQUFDO0lBRVMsU0FBUyxDQUFDLEtBQWE7UUFDN0IsT0FBTyxDQUNILElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUNqRixDQUFDO0lBQ04sQ0FBQzsrR0F6RVEsV0FBVzttR0FBWCxXQUFXLGlmQzNDeEIsdWxDQW1DQSxvNkNESGMsY0FBYzs7U0FXZixXQUFXOzRGQUFYLFdBQVc7a0JBZHZCLFNBQVM7aUNBQ00sSUFBSSxZQUNOLGVBQWUsV0FDaEIsQ0FBQyxjQUFjLENBQUMsbUJBR1IsdUJBQXVCLENBQUMsTUFBTSxRQUN6Qzt3QkFDRixrQkFBa0IsRUFBRSxNQUFNO3dCQUMxQixtQkFBbUIsRUFBRSxPQUFPO3dCQUM1QixvQkFBb0IsRUFBRSxPQUFPO3dCQUM3Qix5QkFBeUIsRUFBRSxhQUFhO3FCQUMzQzs4QkFZTSxLQUFLO3NCQURYLEtBQUs7Z0JBSUMsSUFBSTtzQkFEVixLQUFLO2dCQUlDLEdBQUc7c0JBRFQsS0FBSztnQkFJQyxRQUFRO3NCQURkLEtBQUs7Z0JBSUMsUUFBUTtzQkFEZCxLQUFLO2dCQUlDLGVBQWU7c0JBRHJCLEtBQUs7Z0JBSVUscUJBQXFCO3NCQURwQyxNQUFNO2dCQWNPLElBQUk7c0JBRGpCLFlBQVk7dUJBQUMsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7dHlwZSBFbGVtZW50UmVmLCB0eXBlIFF1ZXJ5TGlzdCwgc2lnbmFsfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ29tcG9uZW50LFxuICAgIElucHV0LFxuICAgIE91dHB1dCxcbiAgICBWaWV3Q2hpbGRyZW4sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHt0YWtlVW50aWxEZXN0cm95ZWR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7VHVpUmVwZWF0VGltZXN9IGZyb20gJ0B0YWlnYS11aS9jZGsvZGlyZWN0aXZlcy9yZXBlYXQtdGltZXMnO1xuaW1wb3J0IHt0dWlUeXBlZEZyb21FdmVudCwgdHVpWm9uZWZyZWV9IGZyb20gJ0B0YWlnYS11aS9jZGsvb2JzZXJ2YWJsZXMnO1xuaW1wb3J0IHR5cGUge1R1aVNpemVYTH0gZnJvbSAnQHRhaWdhLXVpL2NvcmUvdHlwZXMnO1xuaW1wb3J0IHR5cGUge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHttYXAsIG1lcmdlLCBSZXBsYXlTdWJqZWN0LCBzdGFydFdpdGgsIHN3aXRjaE1hcCwgdGFwLCB0aW1lcn0gZnJvbSAncnhqcyc7XG5cbmNvbnN0IEFSQyA9IDAuNzY7IC8vIDMvNCB3aXRoIDElIHNhZmV0eSBvZmZzZXRcbmNvbnN0IFNJWkUgPSB7bTogOSwgbDogMTEsIHhsOiAxNn0gYXMgY29uc3Q7XG5jb25zdCBXSURUSCA9IHttOiAwLjI1LCBsOiAwLjM3NSwgeGw6IDAuNTYyNX0gYXMgY29uc3Q7XG5jb25zdCBHQVAgPSB7bTogMC4xMjUsIGw6IDAuMTg3NSwgeGw6IDAuMjV9IGFzIGNvbnN0O1xuXG5mdW5jdGlvbiBhcmNzVG9JbmRleChhcmNzOiBRdWVyeUxpc3Q8RWxlbWVudFJlZjxTVkdFbGVtZW50Pj4pOiBBcnJheTxPYnNlcnZhYmxlPG51bWJlcj4+IHtcbiAgICByZXR1cm4gYXJjcy5tYXAoKHtuYXRpdmVFbGVtZW50fSwgaW5kZXgpID0+XG4gICAgICAgIG1lcmdlKFxuICAgICAgICAgICAgdHVpVHlwZWRGcm9tRXZlbnQobmF0aXZlRWxlbWVudCwgJ21vdXNlZW50ZXInKS5waXBlKG1hcCgoKSA9PiBpbmRleCkpLFxuICAgICAgICAgICAgdHVpVHlwZWRGcm9tRXZlbnQobmF0aXZlRWxlbWVudCwgJ21vdXNlbGVhdmUnKS5waXBlKG1hcCgoKSA9PiBOYU4pKSxcbiAgICAgICAgKSxcbiAgICApO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAndHVpLWFyYy1jaGFydCcsXG4gICAgaW1wb3J0czogW1R1aVJlcGVhdFRpbWVzXSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vYXJjLWNoYXJ0LnRlbXBsYXRlLmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2FyYy1jaGFydC5zdHlsZS5sZXNzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgaG9zdDoge1xuICAgICAgICAnW2F0dHIuZGF0YS1zaXplXSc6ICdzaXplJyxcbiAgICAgICAgJ1tzdHlsZS53aWR0aC5yZW1dJzogJ3dpZHRoJyxcbiAgICAgICAgJ1tzdHlsZS5oZWlnaHQucmVtXSc6ICd3aWR0aCcsXG4gICAgICAgICdbc3R5bGUuc3Ryb2tlV2lkdGgucmVtXSc6ICdzdHJva2VXaWR0aCcsXG4gICAgfSxcbn0pXG5leHBvcnQgY2xhc3MgVHVpQXJjQ2hhcnQge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgYXJjcyQgPSBuZXcgUmVwbGF5U3ViamVjdDxRdWVyeUxpc3Q8RWxlbWVudFJlZjxTVkdFbGVtZW50Pj4+KDEpO1xuXG4gICAgcHJvdGVjdGVkIGluaXRpYWxpemVkID0gc2lnbmFsKGZhbHNlKTtcblxuICAgIHByb3RlY3RlZCByZWFkb25seSAkID0gdGltZXIoMClcbiAgICAgICAgLnBpcGUodHVpWm9uZWZyZWUoKSwgdGFrZVVudGlsRGVzdHJveWVkKCkpXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5pbml0aWFsaXplZC5zZXQodHJ1ZSkpO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgdmFsdWU6IHJlYWRvbmx5IG51bWJlcltdID0gW107XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzaXplOiBUdWlTaXplWEwgPSAnbSc7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBtYXggPSAxMDA7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBtaW5MYWJlbCA9ICcwJSc7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBtYXhMYWJlbCA9ICcxMDAlJztcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGFjdGl2ZUl0ZW1JbmRleCA9IE5hTjtcblxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyByZWFkb25seSBhY3RpdmVJdGVtSW5kZXhDaGFuZ2UgPSB0aGlzLmFyY3MkLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcCgoYXJjcykgPT5cbiAgICAgICAgICAgIGFyY3MuY2hhbmdlcy5waXBlKFxuICAgICAgICAgICAgICAgIHN0YXJ0V2l0aChudWxsKSxcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gbWVyZ2UoLi4uYXJjc1RvSW5kZXgoYXJjcykpKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICksXG4gICAgICAgIHRhcCgoaW5kZXgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlSXRlbUluZGV4ID0gaW5kZXg7XG4gICAgICAgIH0pLFxuICAgICk7XG5cbiAgICBAVmlld0NoaWxkcmVuKCdhcmMnKVxuICAgIHByb3RlY3RlZCBzZXQgYXJjcyhhcmNzOiBRdWVyeUxpc3Q8RWxlbWVudFJlZjxTVkdFbGVtZW50Pj4pIHtcbiAgICAgICAgdGhpcy5hcmNzJC5uZXh0KGFyY3MpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgd2lkdGgoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIFNJWkVbdGhpcy5zaXplXTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IHN0cm9rZVdpZHRoKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBXSURUSFt0aGlzLnNpemVdO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBpc0luYWN0aXZlKGluZGV4OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICFOdW1iZXIuaXNOYU4odGhpcy5hY3RpdmVJdGVtSW5kZXgpICYmIGluZGV4ICE9PSB0aGlzLmFjdGl2ZUl0ZW1JbmRleDtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0SW5zZXQoaW5kZXg6IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0cm9rZVdpZHRoIC8gMiArIGluZGV4ICogKHRoaXMuc3Ryb2tlV2lkdGggKyBHQVBbdGhpcy5zaXplXSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldERpYW1ldGVyKGluZGV4OiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gU0laRVt0aGlzLnNpemVdIC0gMiAqIHRoaXMuZ2V0SW5zZXQoaW5kZXgpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXRMZW5ndGgoaW5kZXg6IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBNYXRoLlBJICogdGhpcy5nZXREaWFtZXRlcihpbmRleCkgKiBBUkM7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldE9mZnNldChpbmRleDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRoaXMuZ2V0TGVuZ3RoKGluZGV4KSAqICgxIC0gTWF0aC5taW4oKHRoaXMudmFsdWVbaW5kZXhdIHx8IDApIC8gdGhpcy5tYXgsIDEpKVxuICAgICAgICApO1xuICAgIH1cbn1cbiIsIjxzdmdcbiAgICAqdHVpUmVwZWF0VGltZXM9XCJsZXQgaW5kZXggb2YgdmFsdWUubGVuZ3RoXCJcbiAgICBmb2N1c2FibGU9XCJmYWxzZVwiXG4gICAgdmlld0JveD1cIi0xMDAgLTEwMCAyMDAgMjAwXCJcbiAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICBjbGFzcz1cInQtc3ZnXCJcbiAgICBbc3R5bGUuaGVpZ2h0LmVtXT1cImdldERpYW1ldGVyKGluZGV4KVwiXG4gICAgW3N0eWxlLmxlZnQuZW1dPVwiZ2V0SW5zZXQoaW5kZXgpXCJcbiAgICBbc3R5bGUudG9wLmVtXT1cImdldEluc2V0KGluZGV4KVwiXG4gICAgW3N0eWxlLndpZHRoLmVtXT1cImdldERpYW1ldGVyKGluZGV4KVwiXG4+XG4gICAgPHBhdGhcbiAgICAgICAgZD1cIk0gLTcwIDcwIEEgMTAwIDEwMCAwIDEgMSA3MCA3MFwiXG4gICAgICAgIHZlY3Rvci1lZmZlY3Q9XCJub24tc2NhbGluZy1zdHJva2VcIlxuICAgIC8+XG4gICAgPHBhdGhcbiAgICAgICAgI2FyY1xuICAgICAgICBkPVwiTSAtNzAgNzAgQSAxMDAgMTAwIDAgMSAxIDcwIDcwXCJcbiAgICAgICAgdmVjdG9yLWVmZmVjdD1cIm5vbi1zY2FsaW5nLXN0cm9rZVwiXG4gICAgICAgIGNsYXNzPVwidC12YWx1ZVwiXG4gICAgICAgIFtjbGFzcy50LXZhbHVlX2luYWN0aXZlXT1cImlzSW5hY3RpdmUoaW5kZXgpXCJcbiAgICAgICAgW3N0eWxlLnN0cm9rZV09XCIndmFyKC0tdHVpLWNoYXJ0LWNhdGVnb3JpY2FsLTAnICsgaW5kZXggKyAnKSdcIlxuICAgICAgICBbc3R5bGUuc3Ryb2tlRGFzaGFycmF5LmVtXT1cImdldExlbmd0aChpbmRleClcIlxuICAgICAgICBbc3R5bGUuc3Ryb2tlRGFzaG9mZnNldC5lbV09XCJpbml0aWFsaXplZCgpID8gZ2V0T2Zmc2V0KGluZGV4KSA6IGdldExlbmd0aChpbmRleClcIlxuICAgIC8+XG48L3N2Zz5cbjxkaXYgY2xhc3M9XCJ0LWNvbnRlbnRcIj5cbiAgICA8ZGl2IGNsYXNzPVwidC13cmFwcGVyXCI+XG4gICAgICAgIDxuZy1jb250ZW50IC8+XG4gICAgPC9kaXY+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJ0LXBlcmNlbnRcIj5cbiAgICA8c3Bhbj57eyBtaW5MYWJlbCB9fTwvc3Bhbj5cbiAgICA8c3Bhbj57eyBtYXhMYWJlbCB9fTwvc3Bhbj5cbjwvZGl2PlxuIl19
@@ -1,6 +1,9 @@
1
1
  import { __decorate } from "tslib";
2
2
  import { AsyncPipe, NgForOf, NgIf } from '@angular/common';
3
+ import { computed, signal } from '@angular/core';
3
4
  import { ChangeDetectionStrategy, Component, inject, Input, NgZone, ViewChildren, } from '@angular/core';
5
+ import { toSignal } from '@angular/core/rxjs-interop';
6
+ import { ResizeObserverService } from '@ng-web-apis/resize-observer';
4
7
  import { tuiDraw } from '@taiga-ui/addon-charts/utils';
5
8
  import { EMPTY_QUERY } from '@taiga-ui/cdk/constants';
6
9
  import { TuiLet } from '@taiga-ui/cdk/directives/let';
@@ -8,6 +11,7 @@ import { tuiZoneOptimized } from '@taiga-ui/cdk/observables';
8
11
  import { tuiInjectId } from '@taiga-ui/cdk/services';
9
12
  import { tuiIsPresent, tuiPure } from '@taiga-ui/cdk/utils/miscellaneous';
10
13
  import { TuiHint, TuiHintHover, TuiHintOptionsDirective, tuiHintOptionsProvider, } from '@taiga-ui/core/directives/hint';
14
+ import { map } from 'rxjs';
11
15
  import { distinctUntilChanged, Subject } from 'rxjs';
12
16
  import { TUI_LINE_CHART_OPTIONS } from './line-chart.options';
13
17
  import { TuiLineChartHint } from './line-chart-hint.directive';
@@ -19,8 +23,15 @@ class TuiLineChart {
19
23
  this.options = inject(TUI_LINE_CHART_OPTIONS);
20
24
  this.hover$ = new Subject();
21
25
  this.autoId = tuiInjectId();
26
+ this.resize = toSignal(inject(ResizeObserverService, { self: true }).pipe(map(([e]) => e?.contentRect.height || 0)), { initialValue: 0 });
27
+ this.box = signal('');
22
28
  this.hintDirective = inject(TuiLineChartHint, { optional: true });
23
29
  this.hintOptions = inject(TuiHintOptionsDirective, { optional: true });
30
+ this.viewBox = computed(() => {
31
+ const offset = this.height / this.resize();
32
+ const [x = 0, y = 0, width = 0, height = 0] = this.box().split(' ').map(Number);
33
+ return `${x} ${y - offset} ${width} ${height + 2 * offset}`;
34
+ });
24
35
  this.drivers = EMPTY_QUERY;
25
36
  this.x = 0;
26
37
  this.y = 0;
@@ -36,6 +47,9 @@ class TuiLineChart {
36
47
  set valueSetter(value) {
37
48
  this.value = value.filter((item) => !item.some(Number.isNaN));
38
49
  }
50
+ ngOnChanges() {
51
+ this.box.set(`${this.x} ${this.y} ${this.width} ${this.height}`);
52
+ }
39
53
  onHovered(index) {
40
54
  this.hover$.next(index);
41
55
  }
@@ -51,9 +65,6 @@ class TuiLineChart {
51
65
  get fill() {
52
66
  return this.filled ? `url(#${this.fillId})` : 'none';
53
67
  }
54
- get viewBox() {
55
- return `${this.x} ${this.y} ${this.width} ${this.height}`;
56
- }
57
68
  get d() {
58
69
  return this.getD(this.value, this.smoothingFactor);
59
70
  }
@@ -128,7 +139,7 @@ class TuiLineChart {
128
139
  : this.getX(index + 1) - this.getX(index);
129
140
  }
130
141
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiLineChart, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
131
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiLineChart, isStandalone: true, selector: "tui-line-chart", inputs: { x: "x", y: "y", width: "width", height: "height", smoothingFactor: "smoothingFactor", xStringify: "xStringify", yStringify: "yStringify", filled: "filled", dots: "dots", valueSetter: ["value", "valueSetter"] }, host: { listeners: { "mouseleave": "onMouseLeave()" } }, viewQueries: [{ propertyName: "drivers", predicate: TuiHintHover, descendants: true }], ngImport: i0, template: "<ng-container *tuiLet=\"hovered$ | async as hovered\">\n <svg\n focusable=\"false\"\n height=\"100%\"\n preserveAspectRatio=\"none\"\n width=\"100%\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"t-svg\"\n [attr.viewBox]=\"viewBox\"\n >\n <defs>\n <linearGradient\n x1=\"0\"\n x2=\"0\"\n y1=\"1\"\n y2=\"0\"\n [attr.id]=\"fillId\"\n >\n <stop\n offset=\"0%\"\n stop-color=\"currentColor\"\n stop-opacity=\"0.5\"\n />\n <stop\n offset=\"100%\"\n stop-color=\"currentColor\"\n stop-opacity=\"0\"\n />\n </linearGradient>\n </defs>\n <path\n stroke=\"none\"\n [attr.d]=\"fillD\"\n [attr.fill]=\"fill\"\n />\n <path\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n vector-effect=\"non-scaling-stroke\"\n [attr.d]=\"d\"\n />\n </svg>\n <ng-container *ngIf=\"dots\">\n <div\n *ngFor=\"let point of value\"\n class=\"t-dot\"\n [style.bottom.%]=\"getBottom(point[1])\"\n [style.left.%]=\"getLeft(point[0])\"\n ></div>\n </ng-container>\n <ng-container *ngIf=\"hasHints\">\n <ng-container *ngFor=\"let point of value; let index = index\">\n <!-- TODO: Fix hint type -->\n <div\n *ngIf=\"value.length > 1 || dots\"\n class=\"t-column\"\n [class.t-column_hint_hovered]=\"drivers.get(index) | async\"\n [class.t-column_hovered]=\"hovered === index\"\n [style.left.%]=\"getLeft(getX(index))\"\n [style.width.%]=\"getWidth(index)\"\n [tuiHint]=\"$any(hintDirective?.hint || hintContent)\"\n [tuiHintContext]=\"{$implicit: getImplicit(point), index: index}\"\n [tuiHintDescribe]=\"isFocusable ? getHintId(index) : null\"\n [tuiHintHost]=\"hintHost\"\n (mouseenter)=\"onMouseEnter(index)\"\n >\n <div\n class=\"t-line t-line_vertical\"\n [style.left.%]=\"getOffset(index)\"\n ></div>\n <div\n #hintHost\n class=\"t-host\"\n [id]=\"getHintId(index)\"\n [style.bottom.%]=\"getBottom(point[1])\"\n [style.left.%]=\"getOffset(index)\"\n [tabIndex]=\"isFocusable ? 0 : -1\"\n ></div>\n </div>\n <div\n *ngIf=\"isFocusable\"\n class=\"t-line t-line_horizontal\"\n [style.bottom.%]=\"getBottom(point[1])\"\n ></div>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"getHovered(hovered) as point\">\n <div\n *ngIf=\"xStringify\"\n class=\"t-hint t-hint_x\"\n [style.left.%]=\"getLeft(point[0])\"\n >\n {{ xStringify(point[0]) }}\n </div>\n <div\n *ngIf=\"yStringify\"\n class=\"t-hint t-hint_y\"\n [style.bottom.%]=\"getBottom(point[1])\"\n >\n {{ yStringify(point[1]) }}\n </div>\n </ng-container>\n</ng-container>\n", styles: [":host{display:flex;inline-size:100%;block-size:100%;pointer-events:none}.t-svg{transform:scaleY(-1)}.t-column{position:absolute;top:0;block-size:100%;pointer-events:auto}.t-dot{position:absolute;inline-size:.375rem;block-size:.375rem;border-radius:100%;background:currentColor;margin:-.1875rem;box-shadow:0 0 0 2px #fff}.t-host{position:absolute;left:50%;inline-size:.5rem;block-size:.5rem;border-radius:100%;opacity:0;background:#fff;margin:-.25rem;box-shadow:0 0 0 2px currentColor,0 .0625rem .1875rem .125rem #0000001a;outline:none;pointer-events:none}.t-host:focus,.t-column_hovered .t-host,.t-column:hover .t-host,.t-column_hint_hovered .t-host{opacity:1}.t-line{position:absolute;opacity:0;background:var(--tui-border-normal)}.t-line_vertical{top:0;bottom:0;left:50%;inline-size:1px}.t-line_horizontal{z-index:-1;inline-size:100%;block-size:1px}:host[style^=\"z-index: 0\"] .t-column_hovered .t-line,:host:not([style]) .t-column:hover .t-line,:host:not([style]) .t-column_hint_hovered .t-line,:host[style^=\"z-index: 0\"] .t-column_hovered+.t-line,:host:not([style]) .t-column:hover+.t-line,:host:not([style]) .t-column_hint_hovered+.t-line{opacity:1}.t-hint{position:absolute;box-shadow:var(--tui-shadow-small);font:var(--tui-font-text-xs);block-size:1.25rem;line-height:1.25rem;margin-bottom:-.625rem;padding:0 .375rem;white-space:nowrap;color:var(--tui-text-primary);background:var(--tui-background-base);transform:translate3d(-50%,0,0)}.t-hint_x{bottom:0}.t-hint_y{left:0}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.TuiHintDirective, selector: "[tuiHint]:not(ng-container):not(ng-template)", inputs: ["tuiHintContext", "tuiHintAppearance", "tuiHint"] }, { kind: "directive", type: i1.TuiHintDescribe, selector: "[tuiHintDescribe]", inputs: ["tuiHintDescribe"] }, { kind: "directive", type: i1.TuiHintHost, selector: "[tuiHint][tuiHintHost]", inputs: ["tuiHintHost"] }, { kind: "directive", type: TuiLet, selector: "[tuiLet]", inputs: ["tuiLet"] }], viewProviders: [tuiHintOptionsProvider({ direction: 'top', hideDelay: 0 })], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
142
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiLineChart, isStandalone: true, selector: "tui-line-chart", inputs: { x: "x", y: "y", width: "width", height: "height", smoothingFactor: "smoothingFactor", xStringify: "xStringify", yStringify: "yStringify", filled: "filled", dots: "dots", valueSetter: ["value", "valueSetter"] }, host: { listeners: { "mouseleave": "onMouseLeave()" } }, providers: [ResizeObserverService], viewQueries: [{ propertyName: "drivers", predicate: TuiHintHover, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<ng-container *tuiLet=\"hovered$ | async as hovered\">\n <svg\n focusable=\"false\"\n height=\"100%\"\n preserveAspectRatio=\"none\"\n width=\"100%\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"t-svg\"\n [attr.viewBox]=\"viewBox()\"\n >\n <defs>\n <linearGradient\n x1=\"0\"\n x2=\"0\"\n y1=\"1\"\n y2=\"0\"\n [attr.id]=\"fillId\"\n >\n <stop\n offset=\"0%\"\n stop-color=\"currentColor\"\n stop-opacity=\"0.5\"\n />\n <stop\n offset=\"100%\"\n stop-color=\"currentColor\"\n stop-opacity=\"0\"\n />\n </linearGradient>\n </defs>\n <path\n stroke=\"none\"\n [attr.d]=\"fillD\"\n [attr.fill]=\"fill\"\n />\n <path\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n vector-effect=\"non-scaling-stroke\"\n [attr.d]=\"d\"\n />\n </svg>\n <ng-container *ngIf=\"dots\">\n <div\n *ngFor=\"let point of value\"\n class=\"t-dot\"\n [style.bottom.%]=\"getBottom(point[1])\"\n [style.left.%]=\"getLeft(point[0])\"\n ></div>\n </ng-container>\n <ng-container *ngIf=\"hasHints\">\n <ng-container *ngFor=\"let point of value; let index = index\">\n <!-- TODO: Fix hint type -->\n <div\n *ngIf=\"value.length > 1 || dots\"\n class=\"t-column\"\n [class.t-column_hint_hovered]=\"drivers.get(index) | async\"\n [class.t-column_hovered]=\"hovered === index\"\n [style.left.%]=\"getLeft(getX(index))\"\n [style.width.%]=\"getWidth(index)\"\n [tuiHint]=\"$any(hintDirective?.hint || hintContent)\"\n [tuiHintContext]=\"{$implicit: getImplicit(point), index: index}\"\n [tuiHintDescribe]=\"isFocusable ? getHintId(index) : null\"\n [tuiHintHost]=\"hintHost\"\n (mouseenter)=\"onMouseEnter(index)\"\n >\n <div\n class=\"t-line t-line_vertical\"\n [style.left.%]=\"getOffset(index)\"\n ></div>\n <div\n #hintHost\n class=\"t-host\"\n [id]=\"getHintId(index)\"\n [style.bottom.%]=\"getBottom(point[1])\"\n [style.left.%]=\"getOffset(index)\"\n [tabIndex]=\"isFocusable ? 0 : -1\"\n ></div>\n </div>\n <div\n *ngIf=\"isFocusable\"\n class=\"t-line t-line_horizontal\"\n [style.bottom.%]=\"getBottom(point[1])\"\n ></div>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"getHovered(hovered) as point\">\n <div\n *ngIf=\"xStringify\"\n class=\"t-hint t-hint_x\"\n [style.left.%]=\"getLeft(point[0])\"\n >\n {{ xStringify(point[0]) }}\n </div>\n <div\n *ngIf=\"yStringify\"\n class=\"t-hint t-hint_y\"\n [style.bottom.%]=\"getBottom(point[1])\"\n >\n {{ yStringify(point[1]) }}\n </div>\n </ng-container>\n</ng-container>\n", styles: [":host{display:flex;inline-size:100%;block-size:100%;pointer-events:none}.t-svg{block-size:calc(100% + 1px);transform:scaleY(-1);margin:-.03125rem 0}.t-column{position:absolute;top:0;block-size:100%;pointer-events:auto}.t-dot{position:absolute;inline-size:.375rem;block-size:.375rem;border-radius:100%;background:currentColor;margin:-.1875rem;box-shadow:0 0 0 2px #fff}.t-host{position:absolute;left:50%;inline-size:.5rem;block-size:.5rem;border-radius:100%;opacity:0;background:#fff;margin:-.25rem;box-shadow:0 0 0 2px currentColor,0 .0625rem .1875rem .125rem #0000001a;outline:none;pointer-events:none}.t-host:focus,.t-column_hovered .t-host,.t-column:hover .t-host,.t-column_hint_hovered .t-host{opacity:1}.t-line{position:absolute;opacity:0;background:var(--tui-border-normal)}.t-line_vertical{top:0;bottom:0;left:50%;inline-size:1px}.t-line_horizontal{z-index:-1;inline-size:100%;block-size:1px}:host[style^=\"z-index: 0\"] .t-column_hovered .t-line,:host:not([style]) .t-column:hover .t-line,:host:not([style]) .t-column_hint_hovered .t-line,:host[style^=\"z-index: 0\"] .t-column_hovered+.t-line,:host:not([style]) .t-column:hover+.t-line,:host:not([style]) .t-column_hint_hovered+.t-line{opacity:1}.t-hint{position:absolute;box-shadow:var(--tui-shadow-small);font:var(--tui-font-text-xs);block-size:1.25rem;line-height:1.25rem;margin-bottom:-.625rem;padding:0 .375rem;white-space:nowrap;color:var(--tui-text-primary);background:var(--tui-background-base);transform:translate3d(-50%,0,0)}.t-hint_x{bottom:0}.t-hint_y{left:0}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.TuiHintDirective, selector: "[tuiHint]:not(ng-container):not(ng-template)", inputs: ["tuiHintContext", "tuiHintAppearance", "tuiHint"] }, { kind: "directive", type: i1.TuiHintDescribe, selector: "[tuiHintDescribe]", inputs: ["tuiHintDescribe"] }, { kind: "directive", type: i1.TuiHintHost, selector: "[tuiHint][tuiHintHost]", inputs: ["tuiHintHost"] }, { kind: "directive", type: TuiLet, selector: "[tuiLet]", inputs: ["tuiLet"] }], viewProviders: [tuiHintOptionsProvider({ direction: 'top', hideDelay: 0 })], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
132
143
  }
133
144
  __decorate([
134
145
  tuiPure
@@ -139,9 +150,9 @@ __decorate([
139
150
  export { TuiLineChart };
140
151
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiLineChart, decorators: [{
141
152
  type: Component,
142
- args: [{ standalone: true, selector: 'tui-line-chart', imports: [AsyncPipe, NgForOf, NgIf, TuiHint, TuiLet], changeDetection: ChangeDetectionStrategy.OnPush, viewProviders: [tuiHintOptionsProvider({ direction: 'top', hideDelay: 0 })], host: {
153
+ args: [{ standalone: true, selector: 'tui-line-chart', imports: [AsyncPipe, NgForOf, NgIf, TuiHint, TuiLet], changeDetection: ChangeDetectionStrategy.OnPush, providers: [ResizeObserverService], viewProviders: [tuiHintOptionsProvider({ direction: 'top', hideDelay: 0 })], host: {
143
154
  '(mouseleave)': 'onMouseLeave()',
144
- }, template: "<ng-container *tuiLet=\"hovered$ | async as hovered\">\n <svg\n focusable=\"false\"\n height=\"100%\"\n preserveAspectRatio=\"none\"\n width=\"100%\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"t-svg\"\n [attr.viewBox]=\"viewBox\"\n >\n <defs>\n <linearGradient\n x1=\"0\"\n x2=\"0\"\n y1=\"1\"\n y2=\"0\"\n [attr.id]=\"fillId\"\n >\n <stop\n offset=\"0%\"\n stop-color=\"currentColor\"\n stop-opacity=\"0.5\"\n />\n <stop\n offset=\"100%\"\n stop-color=\"currentColor\"\n stop-opacity=\"0\"\n />\n </linearGradient>\n </defs>\n <path\n stroke=\"none\"\n [attr.d]=\"fillD\"\n [attr.fill]=\"fill\"\n />\n <path\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n vector-effect=\"non-scaling-stroke\"\n [attr.d]=\"d\"\n />\n </svg>\n <ng-container *ngIf=\"dots\">\n <div\n *ngFor=\"let point of value\"\n class=\"t-dot\"\n [style.bottom.%]=\"getBottom(point[1])\"\n [style.left.%]=\"getLeft(point[0])\"\n ></div>\n </ng-container>\n <ng-container *ngIf=\"hasHints\">\n <ng-container *ngFor=\"let point of value; let index = index\">\n <!-- TODO: Fix hint type -->\n <div\n *ngIf=\"value.length > 1 || dots\"\n class=\"t-column\"\n [class.t-column_hint_hovered]=\"drivers.get(index) | async\"\n [class.t-column_hovered]=\"hovered === index\"\n [style.left.%]=\"getLeft(getX(index))\"\n [style.width.%]=\"getWidth(index)\"\n [tuiHint]=\"$any(hintDirective?.hint || hintContent)\"\n [tuiHintContext]=\"{$implicit: getImplicit(point), index: index}\"\n [tuiHintDescribe]=\"isFocusable ? getHintId(index) : null\"\n [tuiHintHost]=\"hintHost\"\n (mouseenter)=\"onMouseEnter(index)\"\n >\n <div\n class=\"t-line t-line_vertical\"\n [style.left.%]=\"getOffset(index)\"\n ></div>\n <div\n #hintHost\n class=\"t-host\"\n [id]=\"getHintId(index)\"\n [style.bottom.%]=\"getBottom(point[1])\"\n [style.left.%]=\"getOffset(index)\"\n [tabIndex]=\"isFocusable ? 0 : -1\"\n ></div>\n </div>\n <div\n *ngIf=\"isFocusable\"\n class=\"t-line t-line_horizontal\"\n [style.bottom.%]=\"getBottom(point[1])\"\n ></div>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"getHovered(hovered) as point\">\n <div\n *ngIf=\"xStringify\"\n class=\"t-hint t-hint_x\"\n [style.left.%]=\"getLeft(point[0])\"\n >\n {{ xStringify(point[0]) }}\n </div>\n <div\n *ngIf=\"yStringify\"\n class=\"t-hint t-hint_y\"\n [style.bottom.%]=\"getBottom(point[1])\"\n >\n {{ yStringify(point[1]) }}\n </div>\n </ng-container>\n</ng-container>\n", styles: [":host{display:flex;inline-size:100%;block-size:100%;pointer-events:none}.t-svg{transform:scaleY(-1)}.t-column{position:absolute;top:0;block-size:100%;pointer-events:auto}.t-dot{position:absolute;inline-size:.375rem;block-size:.375rem;border-radius:100%;background:currentColor;margin:-.1875rem;box-shadow:0 0 0 2px #fff}.t-host{position:absolute;left:50%;inline-size:.5rem;block-size:.5rem;border-radius:100%;opacity:0;background:#fff;margin:-.25rem;box-shadow:0 0 0 2px currentColor,0 .0625rem .1875rem .125rem #0000001a;outline:none;pointer-events:none}.t-host:focus,.t-column_hovered .t-host,.t-column:hover .t-host,.t-column_hint_hovered .t-host{opacity:1}.t-line{position:absolute;opacity:0;background:var(--tui-border-normal)}.t-line_vertical{top:0;bottom:0;left:50%;inline-size:1px}.t-line_horizontal{z-index:-1;inline-size:100%;block-size:1px}:host[style^=\"z-index: 0\"] .t-column_hovered .t-line,:host:not([style]) .t-column:hover .t-line,:host:not([style]) .t-column_hint_hovered .t-line,:host[style^=\"z-index: 0\"] .t-column_hovered+.t-line,:host:not([style]) .t-column:hover+.t-line,:host:not([style]) .t-column_hint_hovered+.t-line{opacity:1}.t-hint{position:absolute;box-shadow:var(--tui-shadow-small);font:var(--tui-font-text-xs);block-size:1.25rem;line-height:1.25rem;margin-bottom:-.625rem;padding:0 .375rem;white-space:nowrap;color:var(--tui-text-primary);background:var(--tui-background-base);transform:translate3d(-50%,0,0)}.t-hint_x{bottom:0}.t-hint_y{left:0}\n"] }]
155
+ }, template: "<ng-container *tuiLet=\"hovered$ | async as hovered\">\n <svg\n focusable=\"false\"\n height=\"100%\"\n preserveAspectRatio=\"none\"\n width=\"100%\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"t-svg\"\n [attr.viewBox]=\"viewBox()\"\n >\n <defs>\n <linearGradient\n x1=\"0\"\n x2=\"0\"\n y1=\"1\"\n y2=\"0\"\n [attr.id]=\"fillId\"\n >\n <stop\n offset=\"0%\"\n stop-color=\"currentColor\"\n stop-opacity=\"0.5\"\n />\n <stop\n offset=\"100%\"\n stop-color=\"currentColor\"\n stop-opacity=\"0\"\n />\n </linearGradient>\n </defs>\n <path\n stroke=\"none\"\n [attr.d]=\"fillD\"\n [attr.fill]=\"fill\"\n />\n <path\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n vector-effect=\"non-scaling-stroke\"\n [attr.d]=\"d\"\n />\n </svg>\n <ng-container *ngIf=\"dots\">\n <div\n *ngFor=\"let point of value\"\n class=\"t-dot\"\n [style.bottom.%]=\"getBottom(point[1])\"\n [style.left.%]=\"getLeft(point[0])\"\n ></div>\n </ng-container>\n <ng-container *ngIf=\"hasHints\">\n <ng-container *ngFor=\"let point of value; let index = index\">\n <!-- TODO: Fix hint type -->\n <div\n *ngIf=\"value.length > 1 || dots\"\n class=\"t-column\"\n [class.t-column_hint_hovered]=\"drivers.get(index) | async\"\n [class.t-column_hovered]=\"hovered === index\"\n [style.left.%]=\"getLeft(getX(index))\"\n [style.width.%]=\"getWidth(index)\"\n [tuiHint]=\"$any(hintDirective?.hint || hintContent)\"\n [tuiHintContext]=\"{$implicit: getImplicit(point), index: index}\"\n [tuiHintDescribe]=\"isFocusable ? getHintId(index) : null\"\n [tuiHintHost]=\"hintHost\"\n (mouseenter)=\"onMouseEnter(index)\"\n >\n <div\n class=\"t-line t-line_vertical\"\n [style.left.%]=\"getOffset(index)\"\n ></div>\n <div\n #hintHost\n class=\"t-host\"\n [id]=\"getHintId(index)\"\n [style.bottom.%]=\"getBottom(point[1])\"\n [style.left.%]=\"getOffset(index)\"\n [tabIndex]=\"isFocusable ? 0 : -1\"\n ></div>\n </div>\n <div\n *ngIf=\"isFocusable\"\n class=\"t-line t-line_horizontal\"\n [style.bottom.%]=\"getBottom(point[1])\"\n ></div>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"getHovered(hovered) as point\">\n <div\n *ngIf=\"xStringify\"\n class=\"t-hint t-hint_x\"\n [style.left.%]=\"getLeft(point[0])\"\n >\n {{ xStringify(point[0]) }}\n </div>\n <div\n *ngIf=\"yStringify\"\n class=\"t-hint t-hint_y\"\n [style.bottom.%]=\"getBottom(point[1])\"\n >\n {{ yStringify(point[1]) }}\n </div>\n </ng-container>\n</ng-container>\n", styles: [":host{display:flex;inline-size:100%;block-size:100%;pointer-events:none}.t-svg{block-size:calc(100% + 1px);transform:scaleY(-1);margin:-.03125rem 0}.t-column{position:absolute;top:0;block-size:100%;pointer-events:auto}.t-dot{position:absolute;inline-size:.375rem;block-size:.375rem;border-radius:100%;background:currentColor;margin:-.1875rem;box-shadow:0 0 0 2px #fff}.t-host{position:absolute;left:50%;inline-size:.5rem;block-size:.5rem;border-radius:100%;opacity:0;background:#fff;margin:-.25rem;box-shadow:0 0 0 2px currentColor,0 .0625rem .1875rem .125rem #0000001a;outline:none;pointer-events:none}.t-host:focus,.t-column_hovered .t-host,.t-column:hover .t-host,.t-column_hint_hovered .t-host{opacity:1}.t-line{position:absolute;opacity:0;background:var(--tui-border-normal)}.t-line_vertical{top:0;bottom:0;left:50%;inline-size:1px}.t-line_horizontal{z-index:-1;inline-size:100%;block-size:1px}:host[style^=\"z-index: 0\"] .t-column_hovered .t-line,:host:not([style]) .t-column:hover .t-line,:host:not([style]) .t-column_hint_hovered .t-line,:host[style^=\"z-index: 0\"] .t-column_hovered+.t-line,:host:not([style]) .t-column:hover+.t-line,:host:not([style]) .t-column_hint_hovered+.t-line{opacity:1}.t-hint{position:absolute;box-shadow:var(--tui-shadow-small);font:var(--tui-font-text-xs);block-size:1.25rem;line-height:1.25rem;margin-bottom:-.625rem;padding:0 .375rem;white-space:nowrap;color:var(--tui-text-primary);background:var(--tui-background-base);transform:translate3d(-50%,0,0)}.t-hint_x{bottom:0}.t-hint_y{left:0}\n"] }]
145
156
  }], propDecorators: { drivers: [{
146
157
  type: ViewChildren,
147
158
  args: [TuiHintHover]
@@ -167,4 +178,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
167
178
  type: Input,
168
179
  args: ['value']
169
180
  }], hovered$: [], getD: [] } });
170
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluZS1jaGFydC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hZGRvbi1jaGFydHMvY29tcG9uZW50cy9saW5lLWNoYXJ0L2xpbmUtY2hhcnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWRkb24tY2hhcnRzL2NvbXBvbmVudHMvbGluZS1jaGFydC9saW5lLWNoYXJ0LnRlbXBsYXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBRXpELE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksR0FDZixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDckQsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ3BELE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUNwRCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFFbkQsT0FBTyxFQUFDLFlBQVksRUFBRSxPQUFPLEVBQUMsTUFBTSxtQ0FBbUMsQ0FBQztBQUN4RSxPQUFPLEVBQ0gsT0FBTyxFQUNQLFlBQVksRUFDWix1QkFBdUIsRUFDdkIsc0JBQXNCLEdBQ3pCLE1BQU0sZ0NBQWdDLENBQUM7QUFJeEMsT0FBTyxFQUFDLG9CQUFvQixFQUFFLE9BQU8sRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUVuRCxPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUM1RCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQzs7O0FBRTdELE1BWWEsWUFBWTtJQVp6QjtRQWFxQixTQUFJLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3RCLFlBQU8sR0FBRyxNQUFNLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUN6QyxXQUFNLEdBQUcsSUFBSSxPQUFPLEVBQVUsQ0FBQztRQUMvQixXQUFNLEdBQUcsV0FBVyxFQUFFLENBQUM7UUFFckIsa0JBQWEsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsRUFBQyxRQUFRLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQztRQUUzRCxnQkFBVyxHQUFHLE1BQU0sQ0FBQyx1QkFBdUIsRUFBRSxFQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDO1FBR25FLFlBQU8sR0FBbUMsV0FBVyxDQUFDO1FBRy9ELE1BQUMsR0FBRyxDQUFDLENBQUM7UUFHTixNQUFDLEdBQUcsQ0FBQyxDQUFDO1FBR04sVUFBSyxHQUFHLENBQUMsQ0FBQztRQUdWLFdBQU0sR0FBRyxDQUFDLENBQUM7UUFHWCxvQkFBZSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDO1FBRy9DLGVBQVUsR0FBb0MsSUFBSSxDQUFDO1FBR25ELGVBQVUsR0FBb0MsSUFBSSxDQUFDO1FBR25ELFdBQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztRQUc3QixTQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7UUFFekIsVUFBSyxHQUF3QixFQUFFLENBQUM7S0FxSTFDO0lBbklHLElBQ1csV0FBVyxDQUFDLEtBQTBCO1FBQzdDLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFTSxTQUFTLENBQUMsS0FBYTtRQUMxQixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBR0QsSUFBYyxRQUFRO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsRUFBRSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNqRixDQUFDO0lBRUQsSUFBYyxXQUFXO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLFdBQVcsRUFBRSxPQUFPLElBQUksRUFBRSxDQUFDO0lBQzNDLENBQUM7SUFFRCxJQUFjLE1BQU07UUFDaEIsT0FBTyxrQkFBa0IsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQzNDLENBQUM7SUFFRCxJQUFjLElBQUk7UUFDZCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFFBQVEsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDekQsQ0FBQztJQUVELElBQWMsT0FBTztRQUNqQixPQUFPLEdBQUcsSUFBSSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQzlELENBQUM7SUFFRCxJQUFjLENBQUM7UUFDWCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVELElBQWMsS0FBSztRQUNmLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNO1lBQ3BCLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ3hFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxJQUFjLFdBQVc7UUFDckIsT0FBTyxDQUFDLElBQUksQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUNoRCxDQUFDO0lBRUQsSUFBYyxRQUFRO1FBQ2xCLE9BQU8sQ0FDSCxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVU7WUFDakIsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVO1lBQ2pCLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLElBQUk7WUFDMUIsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQ3JCLENBQUM7SUFDTixDQUFDO0lBRVMsWUFBWTtRQUNsQixJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUNyQixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3ZCO0lBQ0wsQ0FBQztJQUVTLElBQUksQ0FBQyxLQUFhO1FBQ3hCLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUNwQixPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUN4QztRQUVELE9BQU8sS0FBSztZQUNSLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7WUFDekUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFUyxRQUFRLENBQUMsS0FBYTtRQUM1QixPQUFPLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3pELENBQUM7SUFFUyxTQUFTLENBQUMsS0FBYTtRQUM3QixPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sSUFBSSxLQUFLLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0lBRVMsV0FBVyxDQUFDLFNBQW1CO1FBQ3JDLE9BQU8sQ0FDRixJQUFJLENBQUMsYUFBYSxFQUFFLFVBQVUsQ0FDM0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQzdCLElBQUksQ0FDaUIsSUFBSSxTQUFTLENBQ3pDLENBQUM7SUFDTixDQUFDO0lBRVMsVUFBVSxDQUFDLE9BQXNCO1FBQ3ZDLG1GQUFtRjtRQUNuRixPQUFPLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQztZQUNyRCxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksQ0FBQztZQUMvQixDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ2YsQ0FBQztJQUVTLFNBQVMsQ0FBQyxDQUFTO1FBQ3pCLE9BQU8sQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUM5QyxDQUFDO0lBRVMsT0FBTyxDQUFDLENBQVM7UUFDdkIsT0FBTyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQzdDLENBQUM7SUFFUyxTQUFTLENBQUMsQ0FBUztRQUN6QixPQUFPLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyRixDQUFDO0lBRVMsWUFBWSxDQUFDLEtBQWE7UUFDaEMsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3BCLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztTQUN6QzthQUFNO1lBQ0gsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUN6QjtJQUNMLENBQUM7SUFFRCxJQUFZLGFBQWE7UUFDckIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUdPLElBQUksQ0FBQyxLQUEwQixFQUFFLGVBQXVCO1FBQzVELE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FDZixDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FDaEIsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxPQUFPLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxlQUFlLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEtBQUssRUFBRSxFQUMzRSxFQUFFLENBQ0wsQ0FBQztJQUNOLENBQUM7SUFFTyxZQUFZLENBQUMsS0FBYTtRQUM5QixPQUFPLEtBQUssS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDO1lBQ2xDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3hELENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2xELENBQUM7K0dBNUtRLFlBQVk7bUdBQVosWUFBWSw0WEFVUCxZQUFZLGdEQ3REOUIsa2hIQXdHQSxpZ0REckVjLFNBQVMsOENBQUUsT0FBTyxtSEFBRSxJQUFJLDRkQUFXLE1BQU0sOERBSXBDLENBQUMsc0JBQXNCLENBQUMsRUFBQyxTQUFTLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUMsQ0FBQyxDQUFDOztBQXlEekU7SUFEQyxPQUFPOzRDQUdQO0FBMEdPO0lBRFAsT0FBTzt3Q0FPUDtTQXRLUSxZQUFZOzRGQUFaLFlBQVk7a0JBWnhCLFNBQVM7aUNBQ00sSUFBSSxZQUNOLGdCQUFnQixXQUNqQixDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxNQUFNLENBQUMsbUJBR25DLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLENBQUMsc0JBQXNCLENBQUMsRUFBQyxTQUFTLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUMsQ0FBQyxDQUFDLFFBQ25FO3dCQUNGLGNBQWMsRUFBRSxnQkFBZ0I7cUJBQ25DOzhCQWFlLE9BQU87c0JBRHRCLFlBQVk7dUJBQUMsWUFBWTtnQkFJbkIsQ0FBQztzQkFEUCxLQUFLO2dCQUlDLENBQUM7c0JBRFAsS0FBSztnQkFJQyxLQUFLO3NCQURYLEtBQUs7Z0JBSUMsTUFBTTtzQkFEWixLQUFLO2dCQUlDLGVBQWU7c0JBRHJCLEtBQUs7Z0JBSUMsVUFBVTtzQkFEaEIsS0FBSztnQkFJQyxVQUFVO3NCQURoQixLQUFLO2dCQUlDLE1BQU07c0JBRFosS0FBSztnQkFJQyxJQUFJO3NCQURWLEtBQUs7Z0JBTUssV0FBVztzQkFEckIsS0FBSzt1QkFBQyxPQUFPO2dCQVVBLFFBQVEsTUE0R2QsSUFBSSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QXN5bmNQaXBlLCBOZ0Zvck9mLCBOZ0lmfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHR5cGUge1F1ZXJ5TGlzdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENvbXBvbmVudCxcbiAgICBpbmplY3QsXG4gICAgSW5wdXQsXG4gICAgTmdab25lLFxuICAgIFZpZXdDaGlsZHJlbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgdHlwZSB7VHVpTGluZUNoYXJ0SGludENvbnRleHR9IGZyb20gJ0B0YWlnYS11aS9hZGRvbi1jaGFydHMvdHlwZXMnO1xuaW1wb3J0IHt0dWlEcmF3fSBmcm9tICdAdGFpZ2EtdWkvYWRkb24tY2hhcnRzL3V0aWxzJztcbmltcG9ydCB7RU1QVFlfUVVFUll9IGZyb20gJ0B0YWlnYS11aS9jZGsvY29uc3RhbnRzJztcbmltcG9ydCB7VHVpTGV0fSBmcm9tICdAdGFpZ2EtdWkvY2RrL2RpcmVjdGl2ZXMvbGV0JztcbmltcG9ydCB7dHVpWm9uZU9wdGltaXplZH0gZnJvbSAnQHRhaWdhLXVpL2Nkay9vYnNlcnZhYmxlcyc7XG5pbXBvcnQge3R1aUluamVjdElkfSBmcm9tICdAdGFpZ2EtdWkvY2RrL3NlcnZpY2VzJztcbmltcG9ydCB0eXBlIHtUdWlTdHJpbmdIYW5kbGVyfSBmcm9tICdAdGFpZ2EtdWkvY2RrL3R5cGVzJztcbmltcG9ydCB7dHVpSXNQcmVzZW50LCB0dWlQdXJlfSBmcm9tICdAdGFpZ2EtdWkvY2RrL3V0aWxzL21pc2NlbGxhbmVvdXMnO1xuaW1wb3J0IHtcbiAgICBUdWlIaW50LFxuICAgIFR1aUhpbnRIb3ZlcixcbiAgICBUdWlIaW50T3B0aW9uc0RpcmVjdGl2ZSxcbiAgICB0dWlIaW50T3B0aW9uc1Byb3ZpZGVyLFxufSBmcm9tICdAdGFpZ2EtdWkvY29yZS9kaXJlY3RpdmVzL2hpbnQnO1xuaW1wb3J0IHR5cGUge1R1aVBvaW50fSBmcm9tICdAdGFpZ2EtdWkvY29yZS90eXBlcyc7XG5pbXBvcnQgdHlwZSB7UG9seW1vcnBoZXVzQ29udGVudH0gZnJvbSAnQHRhaWdhLXVpL3BvbHltb3JwaGV1cyc7XG5pbXBvcnQgdHlwZSB7T2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XG5pbXBvcnQge2Rpc3RpbmN0VW50aWxDaGFuZ2VkLCBTdWJqZWN0fSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtUVUlfTElORV9DSEFSVF9PUFRJT05TfSBmcm9tICcuL2xpbmUtY2hhcnQub3B0aW9ucyc7XG5pbXBvcnQge1R1aUxpbmVDaGFydEhpbnR9IGZyb20gJy4vbGluZS1jaGFydC1oaW50LmRpcmVjdGl2ZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6ICd0dWktbGluZS1jaGFydCcsXG4gICAgaW1wb3J0czogW0FzeW5jUGlwZSwgTmdGb3JPZiwgTmdJZiwgVHVpSGludCwgVHVpTGV0XSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vbGluZS1jaGFydC50ZW1wbGF0ZS5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9saW5lLWNoYXJ0LnN0eWxlLmxlc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICB2aWV3UHJvdmlkZXJzOiBbdHVpSGludE9wdGlvbnNQcm92aWRlcih7ZGlyZWN0aW9uOiAndG9wJywgaGlkZURlbGF5OiAwfSldLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJyhtb3VzZWxlYXZlKSc6ICdvbk1vdXNlTGVhdmUoKScsXG4gICAgfSxcbn0pXG5leHBvcnQgY2xhc3MgVHVpTGluZUNoYXJ0IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHpvbmUgPSBpbmplY3QoTmdab25lKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IG9wdGlvbnMgPSBpbmplY3QoVFVJX0xJTkVfQ0hBUlRfT1BUSU9OUyk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBob3ZlciQgPSBuZXcgU3ViamVjdDxudW1iZXI+KCk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBhdXRvSWQgPSB0dWlJbmplY3RJZCgpO1xuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGhpbnREaXJlY3RpdmUgPSBpbmplY3QoVHVpTGluZUNoYXJ0SGludCwge29wdGlvbmFsOiB0cnVlfSk7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgaGludE9wdGlvbnMgPSBpbmplY3QoVHVpSGludE9wdGlvbnNEaXJlY3RpdmUsIHtvcHRpb25hbDogdHJ1ZX0pO1xuXG4gICAgQFZpZXdDaGlsZHJlbihUdWlIaW50SG92ZXIpXG4gICAgcHVibGljIHJlYWRvbmx5IGRyaXZlcnM6IFF1ZXJ5TGlzdDxPYnNlcnZhYmxlPGJvb2xlYW4+PiA9IEVNUFRZX1FVRVJZO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgeCA9IDA7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyB5ID0gMDtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHdpZHRoID0gMDtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGhlaWdodCA9IDA7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzbW9vdGhpbmdGYWN0b3IgPSB0aGlzLm9wdGlvbnMuc21vb3RoaW5nRmFjdG9yO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgeFN0cmluZ2lmeTogVHVpU3RyaW5nSGFuZGxlcjxudW1iZXI+IHwgbnVsbCA9IG51bGw7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyB5U3RyaW5naWZ5OiBUdWlTdHJpbmdIYW5kbGVyPG51bWJlcj4gfCBudWxsID0gbnVsbDtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGZpbGxlZCA9IHRoaXMub3B0aW9ucy5maWxsZWQ7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBkb3RzID0gdGhpcy5vcHRpb25zLmRvdHM7XG5cbiAgICBwdWJsaWMgdmFsdWU6IHJlYWRvbmx5IFR1aVBvaW50W10gPSBbXTtcblxuICAgIEBJbnB1dCgndmFsdWUnKVxuICAgIHB1YmxpYyBzZXQgdmFsdWVTZXR0ZXIodmFsdWU6IHJlYWRvbmx5IFR1aVBvaW50W10pIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlLmZpbHRlcigoaXRlbSkgPT4gIWl0ZW0uc29tZShOdW1iZXIuaXNOYU4pKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25Ib3ZlcmVkKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5ob3ZlciQubmV4dChpbmRleCk7XG4gICAgfVxuXG4gICAgQHR1aVB1cmVcbiAgICBwcm90ZWN0ZWQgZ2V0IGhvdmVyZWQkKCk6IE9ic2VydmFibGU8bnVtYmVyPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmhvdmVyJC5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksIHR1aVpvbmVPcHRpbWl6ZWQodGhpcy56b25lKSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBoaW50Q29udGVudCgpOiBQb2x5bW9ycGhldXNDb250ZW50PFR1aUxpbmVDaGFydEhpbnRDb250ZXh0PFR1aVBvaW50Pj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5oaW50T3B0aW9ucz8uY29udGVudCB8fCAnJztcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IGZpbGxJZCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gYHR1aS1saW5lLWNoYXJ0LSR7dGhpcy5hdXRvSWR9YDtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IGZpbGwoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmlsbGVkID8gYHVybCgjJHt0aGlzLmZpbGxJZH0pYCA6ICdub25lJztcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IHZpZXdCb3goKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGAke3RoaXMueH0gJHt0aGlzLnl9ICR7dGhpcy53aWR0aH0gJHt0aGlzLmhlaWdodH1gO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgZCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXREKHRoaXMudmFsdWUsIHRoaXMuc21vb3RoaW5nRmFjdG9yKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IGZpbGxEKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlLmxlbmd0aFxuICAgICAgICAgICAgPyBgJHt0aGlzLmR9ViAke3RoaXMueX0gSCAke3RoaXMudmFsdWVbMF0/LlswXX0gViAke3RoaXMudmFsdWVbMF0/LlsxXX1gXG4gICAgICAgICAgICA6IHRoaXMuZDtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IGlzRm9jdXNhYmxlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gIXRoaXMuaGludERpcmVjdGl2ZSAmJiB0aGlzLmhhc0hpbnRzO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgaGFzSGludHMoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAhIXRoaXMueFN0cmluZ2lmeSB8fFxuICAgICAgICAgICAgISF0aGlzLnlTdHJpbmdpZnkgfHxcbiAgICAgICAgICAgICEhdGhpcy5oaW50RGlyZWN0aXZlPy5oaW50IHx8XG4gICAgICAgICAgICAhIXRoaXMuaGludENvbnRlbnRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb25Nb3VzZUxlYXZlKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuaGludERpcmVjdGl2ZSkge1xuICAgICAgICAgICAgdGhpcy5vbkhvdmVyZWQoTmFOKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXRYKGluZGV4OiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICBpZiAodGhpcy5pc1NpbmdsZVBvaW50KSB7XG4gICAgICAgICAgICByZXR1cm4gKHRoaXMudmFsdWVbMF0/LlswXSB8fCAwKSAvIDI7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaW5kZXhcbiAgICAgICAgICAgID8gKCh0aGlzLnZhbHVlW2luZGV4IC0gMV0/LlswXSB8fCAwKSArICh0aGlzLnZhbHVlW2luZGV4XT8uWzBdIHx8IDApKSAvIDJcbiAgICAgICAgICAgIDogMiAqICh0aGlzLnZhbHVlWzBdPy5bMF0gfHwgMCkgLSB0aGlzLmdldFgoMSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldFdpZHRoKGluZGV4OiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gKDEwMCAqIHRoaXMuY29tcHV0ZVdpZHRoKGluZGV4KSkgLyB0aGlzLndpZHRoO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXRIaW50SWQoaW5kZXg6IG51bWJlcik6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBgJHt0aGlzLmF1dG9JZH1fJHtpbmRleH1gO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXRJbXBsaWNpdCgkaW1wbGljaXQ6IFR1aVBvaW50KTogVHVpUG9pbnQgfCByZWFkb25seSBUdWlQb2ludFtdIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICh0aGlzLmhpbnREaXJlY3RpdmU/LmdldENvbnRleHQoXG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZS5pbmRleE9mKCRpbXBsaWNpdCksXG4gICAgICAgICAgICAgICAgdGhpcyxcbiAgICAgICAgICAgICkgYXMgcmVhZG9ubHkgVHVpUG9pbnRbXSkgPz8gJGltcGxpY2l0XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldEhvdmVyZWQoaG92ZXJlZDogbnVtYmVyIHwgbnVsbCk6IFR1aVBvaW50IHwgbnVsbCB7XG4gICAgICAgIC8vIFRoaXMgY2hlY2tzIGZvciBOYU4gYW5kIG51bGwgdG9vIHNpbmNlIGFzeW5jIHBpcGUgcmV0dXJucyBudWxsIGJlZm9yZSBmaXJzdCBpdGVtXG4gICAgICAgIHJldHVybiB0dWlJc1ByZXNlbnQoaG92ZXJlZCkgJiYgTnVtYmVyLmlzSW50ZWdlcihob3ZlcmVkKVxuICAgICAgICAgICAgPyAodGhpcy52YWx1ZVtob3ZlcmVkXSA/PyBudWxsKVxuICAgICAgICAgICAgOiBudWxsO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXRCb3R0b20oeTogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuICgxMDAgKiAoeSAtIHRoaXMueSkpIC8gdGhpcy5oZWlnaHQ7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldExlZnQoeDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuICgxMDAgKiAoeCAtIHRoaXMueCkpIC8gdGhpcy53aWR0aDtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0T2Zmc2V0KHg6IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIHJldHVybiAoMTAwICogKCh0aGlzLnZhbHVlW3hdPy5bMF0gfHwgMCkgLSB0aGlzLmdldFgoeCkpKSAvIHRoaXMuY29tcHV0ZVdpZHRoKHgpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBvbk1vdXNlRW50ZXIoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5oaW50RGlyZWN0aXZlKSB7XG4gICAgICAgICAgICB0aGlzLmhpbnREaXJlY3RpdmUucmFpc2UoaW5kZXgsIHRoaXMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5vbkhvdmVyZWQoaW5kZXgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXQgaXNTaW5nbGVQb2ludCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWUubGVuZ3RoID09PSAxO1xuICAgIH1cblxuICAgIEB0dWlQdXJlXG4gICAgcHJpdmF0ZSBnZXREKHZhbHVlOiByZWFkb25seSBUdWlQb2ludFtdLCBzbW9vdGhpbmdGYWN0b3I6IG51bWJlcik6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB2YWx1ZS5yZWR1Y2UoXG4gICAgICAgICAgICAoZCwgcG9pbnQsIGluZGV4KSA9PlxuICAgICAgICAgICAgICAgIGluZGV4ID8gYCR7ZH0gJHt0dWlEcmF3KHZhbHVlLCBpbmRleCwgc21vb3RoaW5nRmFjdG9yKX1gIDogYE0gJHtwb2ludH1gLFxuICAgICAgICAgICAgJycsXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjb21wdXRlV2lkdGgoaW5kZXg6IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBpbmRleCA9PT0gdGhpcy52YWx1ZS5sZW5ndGggLSAxXG4gICAgICAgICAgICA/IDIgKiAoKHRoaXMudmFsdWVbaW5kZXhdPy5bMF0gfHwgMCkgLSB0aGlzLmdldFgoaW5kZXgpKVxuICAgICAgICAgICAgOiB0aGlzLmdldFgoaW5kZXggKyAxKSAtIHRoaXMuZ2V0WChpbmRleCk7XG4gICAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqdHVpTGV0PVwiaG92ZXJlZCQgfCBhc3luYyBhcyBob3ZlcmVkXCI+XG4gICAgPHN2Z1xuICAgICAgICBmb2N1c2FibGU9XCJmYWxzZVwiXG4gICAgICAgIGhlaWdodD1cIjEwMCVcIlxuICAgICAgICBwcmVzZXJ2ZUFzcGVjdFJhdGlvPVwibm9uZVwiXG4gICAgICAgIHdpZHRoPVwiMTAwJVwiXG4gICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICBjbGFzcz1cInQtc3ZnXCJcbiAgICAgICAgW2F0dHIudmlld0JveF09XCJ2aWV3Qm94XCJcbiAgICA+XG4gICAgICAgIDxkZWZzPlxuICAgICAgICAgICAgPGxpbmVhckdyYWRpZW50XG4gICAgICAgICAgICAgICAgeDE9XCIwXCJcbiAgICAgICAgICAgICAgICB4Mj1cIjBcIlxuICAgICAgICAgICAgICAgIHkxPVwiMVwiXG4gICAgICAgICAgICAgICAgeTI9XCIwXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5pZF09XCJmaWxsSWRcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzdG9wXG4gICAgICAgICAgICAgICAgICAgIG9mZnNldD1cIjAlXCJcbiAgICAgICAgICAgICAgICAgICAgc3RvcC1jb2xvcj1cImN1cnJlbnRDb2xvclwiXG4gICAgICAgICAgICAgICAgICAgIHN0b3Atb3BhY2l0eT1cIjAuNVwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8c3RvcFxuICAgICAgICAgICAgICAgICAgICBvZmZzZXQ9XCIxMDAlXCJcbiAgICAgICAgICAgICAgICAgICAgc3RvcC1jb2xvcj1cImN1cnJlbnRDb2xvclwiXG4gICAgICAgICAgICAgICAgICAgIHN0b3Atb3BhY2l0eT1cIjBcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L2xpbmVhckdyYWRpZW50PlxuICAgICAgICA8L2RlZnM+XG4gICAgICAgIDxwYXRoXG4gICAgICAgICAgICBzdHJva2U9XCJub25lXCJcbiAgICAgICAgICAgIFthdHRyLmRdPVwiZmlsbERcIlxuICAgICAgICAgICAgW2F0dHIuZmlsbF09XCJmaWxsXCJcbiAgICAgICAgLz5cbiAgICAgICAgPHBhdGhcbiAgICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiXG4gICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIyXCJcbiAgICAgICAgICAgIHZlY3Rvci1lZmZlY3Q9XCJub24tc2NhbGluZy1zdHJva2VcIlxuICAgICAgICAgICAgW2F0dHIuZF09XCJkXCJcbiAgICAgICAgLz5cbiAgICA8L3N2Zz5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZG90c1wiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgcG9pbnQgb2YgdmFsdWVcIlxuICAgICAgICAgICAgY2xhc3M9XCJ0LWRvdFwiXG4gICAgICAgICAgICBbc3R5bGUuYm90dG9tLiVdPVwiZ2V0Qm90dG9tKHBvaW50WzFdKVwiXG4gICAgICAgICAgICBbc3R5bGUubGVmdC4lXT1cImdldExlZnQocG9pbnRbMF0pXCJcbiAgICAgICAgPjwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJoYXNIaW50c1wiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBwb2ludCBvZiB2YWx1ZTsgbGV0IGluZGV4ID0gaW5kZXhcIj5cbiAgICAgICAgICAgIDwhLS0gVE9ETzogRml4IGhpbnQgdHlwZSAtLT5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAqbmdJZj1cInZhbHVlLmxlbmd0aCA+IDEgfHwgZG90c1wiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ0LWNvbHVtblwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLnQtY29sdW1uX2hpbnRfaG92ZXJlZF09XCJkcml2ZXJzLmdldChpbmRleCkgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgW2NsYXNzLnQtY29sdW1uX2hvdmVyZWRdPVwiaG92ZXJlZCA9PT0gaW5kZXhcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5sZWZ0LiVdPVwiZ2V0TGVmdChnZXRYKGluZGV4KSlcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS53aWR0aC4lXT1cImdldFdpZHRoKGluZGV4KVwiXG4gICAgICAgICAgICAgICAgW3R1aUhpbnRdPVwiJGFueShoaW50RGlyZWN0aXZlPy5oaW50IHx8IGhpbnRDb250ZW50KVwiXG4gICAgICAgICAgICAgICAgW3R1aUhpbnRDb250ZXh0XT1cInskaW1wbGljaXQ6IGdldEltcGxpY2l0KHBvaW50KSwgaW5kZXg6IGluZGV4fVwiXG4gICAgICAgICAgICAgICAgW3R1aUhpbnREZXNjcmliZV09XCJpc0ZvY3VzYWJsZSA/IGdldEhpbnRJZChpbmRleCkgOiBudWxsXCJcbiAgICAgICAgICAgICAgICBbdHVpSGludEhvc3RdPVwiaGludEhvc3RcIlxuICAgICAgICAgICAgICAgIChtb3VzZWVudGVyKT1cIm9uTW91c2VFbnRlcihpbmRleClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0LWxpbmUgdC1saW5lX3ZlcnRpY2FsXCJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmxlZnQuJV09XCJnZXRPZmZzZXQoaW5kZXgpXCJcbiAgICAgICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAjaGludEhvc3RcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0LWhvc3RcIlxuICAgICAgICAgICAgICAgICAgICBbaWRdPVwiZ2V0SGludElkKGluZGV4KVwiXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZS5ib3R0b20uJV09XCJnZXRCb3R0b20ocG9pbnRbMV0pXCJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmxlZnQuJV09XCJnZXRPZmZzZXQoaW5kZXgpXCJcbiAgICAgICAgICAgICAgICAgICAgW3RhYkluZGV4XT1cImlzRm9jdXNhYmxlID8gMCA6IC0xXCJcbiAgICAgICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAqbmdJZj1cImlzRm9jdXNhYmxlXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInQtbGluZSB0LWxpbmVfaG9yaXpvbnRhbFwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLmJvdHRvbS4lXT1cImdldEJvdHRvbShwb2ludFsxXSlcIlxuICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZ2V0SG92ZXJlZChob3ZlcmVkKSBhcyBwb2ludFwiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgICAqbmdJZj1cInhTdHJpbmdpZnlcIlxuICAgICAgICAgICAgY2xhc3M9XCJ0LWhpbnQgdC1oaW50X3hcIlxuICAgICAgICAgICAgW3N0eWxlLmxlZnQuJV09XCJnZXRMZWZ0KHBvaW50WzBdKVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIHt7IHhTdHJpbmdpZnkocG9pbnRbMF0pIH19XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgICAqbmdJZj1cInlTdHJpbmdpZnlcIlxuICAgICAgICAgICAgY2xhc3M9XCJ0LWhpbnQgdC1oaW50X3lcIlxuICAgICAgICAgICAgW3N0eWxlLmJvdHRvbS4lXT1cImdldEJvdHRvbShwb2ludFsxXSlcIlxuICAgICAgICA+XG4gICAgICAgICAgICB7eyB5U3RyaW5naWZ5KHBvaW50WzFdKSB9fVxuICAgICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbjwvbmctY29udGFpbmVyPlxuIl19
181
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluZS1jaGFydC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hZGRvbi1jaGFydHMvY29tcG9uZW50cy9saW5lLWNoYXJ0L2xpbmUtY2hhcnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWRkb24tY2hhcnRzL2NvbXBvbmVudHMvbGluZS1jaGFydC9saW5lLWNoYXJ0LnRlbXBsYXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBQyxRQUFRLEVBQWtDLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEdBQ2YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQ3BELE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBRW5FLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUNyRCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDcEQsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQ3BELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUVuRCxPQUFPLEVBQUMsWUFBWSxFQUFFLE9BQU8sRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBQ3hFLE9BQU8sRUFDSCxPQUFPLEVBQ1AsWUFBWSxFQUNaLHVCQUF1QixFQUN2QixzQkFBc0IsR0FDekIsTUFB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QUM7K0dBekxRLFlBQVk7bUdBQVosWUFBWSxtVkFOVixDQUFDLHFCQUFxQixDQUFDLHNEQTZCcEIsWUFBWSxxRUN0RTlCLG9oSEF3R0EsaWpERG5FYyxTQUFTLDhDQUFFLE9BQU8sbUhBQUUsSUFBSSw0ZEFBVyxNQUFNLDhEQUtwQyxDQUFDLHNCQUFzQixDQUFDLEVBQUMsU0FBUyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFDLENBQUMsQ0FBQzs7QUEwRXpFO0lBREMsT0FBTzs0Q0FHUDtBQXNHTztJQURQLE9BQU87d0NBT1A7U0FuTFEsWUFBWTs0RkFBWixZQUFZO2tCQWJ4QixTQUFTO2lDQUNNLElBQUksWUFDTixnQkFBZ0IsV0FDakIsQ0FBQyxTQUFTLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDLG1CQUduQyx1QkFBdUIsQ0FBQyxNQUFNLGFBQ3BDLENBQUMscUJBQXFCLENBQUMsaUJBQ25CLENBQUMsc0JBQXNCLENBQUMsRUFBQyxTQUFTLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUMsQ0FBQyxDQUFDLFFBQ25FO3dCQUNGLGNBQWMsRUFBRSxnQkFBZ0I7cUJBQ25DOzhCQTBCZSxPQUFPO3NCQUR0QixZQUFZO3VCQUFDLFlBQVk7Z0JBSW5CLENBQUM7c0JBRFAsS0FBSztnQkFJQyxDQUFDO3NCQURQLEtBQUs7Z0JBSUMsS0FBSztzQkFEWCxLQUFLO2dCQUlDLE1BQU07c0JBRFosS0FBSztnQkFJQyxlQUFlO3NCQURyQixLQUFLO2dCQUlDLFVBQVU7c0JBRGhCLEtBQUs7Z0JBSUMsVUFBVTtzQkFEaEIsS0FBSztnQkFJQyxNQUFNO3NCQURaLEtBQUs7Z0JBSUMsSUFBSTtzQkFEVixLQUFLO2dCQU1LLFdBQVc7c0JBRHJCLEtBQUs7dUJBQUMsT0FBTztnQkFjQSxRQUFRLE1Bd0dkLElBQUkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FzeW5jUGlwZSwgTmdGb3JPZiwgTmdJZn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7Y29tcHV0ZWQsIHR5cGUgT25DaGFuZ2VzLCB0eXBlIFF1ZXJ5TGlzdCwgc2lnbmFsfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ29tcG9uZW50LFxuICAgIGluamVjdCxcbiAgICBJbnB1dCxcbiAgICBOZ1pvbmUsXG4gICAgVmlld0NoaWxkcmVuLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7dG9TaWduYWx9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7UmVzaXplT2JzZXJ2ZXJTZXJ2aWNlfSBmcm9tICdAbmctd2ViLWFwaXMvcmVzaXplLW9ic2VydmVyJztcbmltcG9ydCB0eXBlIHtUdWlMaW5lQ2hhcnRIaW50Q29udGV4dH0gZnJvbSAnQHRhaWdhLXVpL2FkZG9uLWNoYXJ0cy90eXBlcyc7XG5pbXBvcnQge3R1aURyYXd9IGZyb20gJ0B0YWlnYS11aS9hZGRvbi1jaGFydHMvdXRpbHMnO1xuaW1wb3J0IHtFTVBUWV9RVUVSWX0gZnJvbSAnQHRhaWdhLXVpL2Nkay9jb25zdGFudHMnO1xuaW1wb3J0IHtUdWlMZXR9IGZyb20gJ0B0YWlnYS11aS9jZGsvZGlyZWN0aXZlcy9sZXQnO1xuaW1wb3J0IHt0dWlab25lT3B0aW1pemVkfSBmcm9tICdAdGFpZ2EtdWkvY2RrL29ic2VydmFibGVzJztcbmltcG9ydCB7dHVpSW5qZWN0SWR9IGZyb20gJ0B0YWlnYS11aS9jZGsvc2VydmljZXMnO1xuaW1wb3J0IHR5cGUge1R1aVN0cmluZ0hhbmRsZXJ9IGZyb20gJ0B0YWlnYS11aS9jZGsvdHlwZXMnO1xuaW1wb3J0IHt0dWlJc1ByZXNlbnQsIHR1aVB1cmV9IGZyb20gJ0B0YWlnYS11aS9jZGsvdXRpbHMvbWlzY2VsbGFuZW91cyc7XG5pbXBvcnQge1xuICAgIFR1aUhpbnQsXG4gICAgVHVpSGludEhvdmVyLFxuICAgIFR1aUhpbnRPcHRpb25zRGlyZWN0aXZlLFxuICAgIHR1aUhpbnRPcHRpb25zUHJvdmlkZXIsXG59IGZyb20gJ0B0YWlnYS11aS9jb3JlL2RpcmVjdGl2ZXMvaGludCc7XG5pbXBvcnQgdHlwZSB7VHVpUG9pbnR9IGZyb20gJ0B0YWlnYS11aS9jb3JlL3R5cGVzJztcbmltcG9ydCB0eXBlIHtQb2x5bW9ycGhldXNDb250ZW50fSBmcm9tICdAdGFpZ2EtdWkvcG9seW1vcnBoZXVzJztcbmltcG9ydCB7bWFwLCB0eXBlIE9ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtkaXN0aW5jdFVudGlsQ2hhbmdlZCwgU3ViamVjdH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7VFVJX0xJTkVfQ0hBUlRfT1BUSU9OU30gZnJvbSAnLi9saW5lLWNoYXJ0Lm9wdGlvbnMnO1xuaW1wb3J0IHtUdWlMaW5lQ2hhcnRIaW50fSBmcm9tICcuL2xpbmUtY2hhcnQtaGludC5kaXJlY3RpdmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAndHVpLWxpbmUtY2hhcnQnLFxuICAgIGltcG9ydHM6IFtBc3luY1BpcGUsIE5nRm9yT2YsIE5nSWYsIFR1aUhpbnQsIFR1aUxldF0sXG4gICAgdGVtcGxhdGVVcmw6ICcuL2xpbmUtY2hhcnQudGVtcGxhdGUuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vbGluZS1jaGFydC5zdHlsZS5sZXNzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbUmVzaXplT2JzZXJ2ZXJTZXJ2aWNlXSxcbiAgICB2aWV3UHJvdmlkZXJzOiBbdHVpSGludE9wdGlvbnNQcm92aWRlcih7ZGlyZWN0aW9uOiAndG9wJywgaGlkZURlbGF5OiAwfSldLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJyhtb3VzZWxlYXZlKSc6ICdvbk1vdXNlTGVhdmUoKScsXG4gICAgfSxcbn0pXG5leHBvcnQgY2xhc3MgVHVpTGluZUNoYXJ0IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHpvbmUgPSBpbmplY3QoTmdab25lKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IG9wdGlvbnMgPSBpbmplY3QoVFVJX0xJTkVfQ0hBUlRfT1BUSU9OUyk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBob3ZlciQgPSBuZXcgU3ViamVjdDxudW1iZXI+KCk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBhdXRvSWQgPSB0dWlJbmplY3RJZCgpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcmVzaXplID0gdG9TaWduYWwoXG4gICAgICAgIGluamVjdChSZXNpemVPYnNlcnZlclNlcnZpY2UsIHtzZWxmOiB0cnVlfSkucGlwZShcbiAgICAgICAgICAgIG1hcCgoW2VdKSA9PiBlPy5jb250ZW50UmVjdC5oZWlnaHQgfHwgMCksXG4gICAgICAgICksXG4gICAgICAgIHtpbml0aWFsVmFsdWU6IDB9LFxuICAgICk7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IGJveCA9IHNpZ25hbCgnJyk7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgaGludERpcmVjdGl2ZSA9IGluamVjdChUdWlMaW5lQ2hhcnRIaW50LCB7b3B0aW9uYWw6IHRydWV9KTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgaGludE9wdGlvbnMgPSBpbmplY3QoVHVpSGludE9wdGlvbnNEaXJlY3RpdmUsIHtvcHRpb25hbDogdHJ1ZX0pO1xuICAgIHByb3RlY3RlZCByZWFkb25seSB2aWV3Qm94ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICBjb25zdCBvZmZzZXQgPSB0aGlzLmhlaWdodCAvIHRoaXMucmVzaXplKCk7XG4gICAgICAgIGNvbnN0IFt4ID0gMCwgeSA9IDAsIHdpZHRoID0gMCwgaGVpZ2h0ID0gMF0gPSB0aGlzLmJveCgpLnNwbGl0KCcgJykubWFwKE51bWJlcik7XG5cbiAgICAgICAgcmV0dXJuIGAke3h9ICR7eSAtIG9mZnNldH0gJHt3aWR0aH0gJHtoZWlnaHQgKyAyICogb2Zmc2V0fWA7XG4gICAgfSk7XG5cbiAgICBAVmlld0NoaWxkcmVuKFR1aUhpbnRIb3ZlcilcbiAgICBwdWJsaWMgcmVhZG9ubHkgZHJpdmVyczogUXVlcnlMaXN0PE9ic2VydmFibGU8Ym9vbGVhbj4+ID0gRU1QVFlfUVVFUlk7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyB4ID0gMDtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHkgPSAwO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgd2lkdGggPSAwO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgaGVpZ2h0ID0gMDtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNtb290aGluZ0ZhY3RvciA9IHRoaXMub3B0aW9ucy5zbW9vdGhpbmdGYWN0b3I7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyB4U3RyaW5naWZ5OiBUdWlTdHJpbmdIYW5kbGVyPG51bWJlcj4gfCBudWxsID0gbnVsbDtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHlTdHJpbmdpZnk6IFR1aVN0cmluZ0hhbmRsZXI8bnVtYmVyPiB8IG51bGwgPSBudWxsO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZmlsbGVkID0gdGhpcy5vcHRpb25zLmZpbGxlZDtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGRvdHMgPSB0aGlzLm9wdGlvbnMuZG90cztcblxuICAgIHB1YmxpYyB2YWx1ZTogcmVhZG9ubHkgVHVpUG9pbnRbXSA9IFtdO1xuXG4gICAgQElucHV0KCd2YWx1ZScpXG4gICAgcHVibGljIHNldCB2YWx1ZVNldHRlcih2YWx1ZTogcmVhZG9ubHkgVHVpUG9pbnRbXSkge1xuICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWUuZmlsdGVyKChpdGVtKSA9PiAhaXRlbS5zb21lKE51bWJlci5pc05hTikpO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uQ2hhbmdlcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5ib3guc2V0KGAke3RoaXMueH0gJHt0aGlzLnl9ICR7dGhpcy53aWR0aH0gJHt0aGlzLmhlaWdodH1gKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25Ib3ZlcmVkKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5ob3ZlciQubmV4dChpbmRleCk7XG4gICAgfVxuXG4gICAgQHR1aVB1cmVcbiAgICBwcm90ZWN0ZWQgZ2V0IGhvdmVyZWQkKCk6IE9ic2VydmFibGU8bnVtYmVyPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmhvdmVyJC5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksIHR1aVpvbmVPcHRpbWl6ZWQodGhpcy56b25lKSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBoaW50Q29udGVudCgpOiBQb2x5bW9ycGhldXNDb250ZW50PFR1aUxpbmVDaGFydEhpbnRDb250ZXh0PFR1aVBvaW50Pj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5oaW50T3B0aW9ucz8uY29udGVudCB8fCAnJztcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IGZpbGxJZCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gYHR1aS1saW5lLWNoYXJ0LSR7dGhpcy5hdXRvSWR9YDtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IGZpbGwoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmlsbGVkID8gYHVybCgjJHt0aGlzLmZpbGxJZH0pYCA6ICdub25lJztcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IGQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RCh0aGlzLnZhbHVlLCB0aGlzLnNtb290aGluZ0ZhY3Rvcik7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBmaWxsRCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZS5sZW5ndGhcbiAgICAgICAgICAgID8gYCR7dGhpcy5kfVYgJHt0aGlzLnl9IEggJHt0aGlzLnZhbHVlWzBdPy5bMF19IFYgJHt0aGlzLnZhbHVlWzBdPy5bMV19YFxuICAgICAgICAgICAgOiB0aGlzLmQ7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBpc0ZvY3VzYWJsZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmhpbnREaXJlY3RpdmUgJiYgdGhpcy5oYXNIaW50cztcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IGhhc0hpbnRzKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgISF0aGlzLnhTdHJpbmdpZnkgfHxcbiAgICAgICAgICAgICEhdGhpcy55U3RyaW5naWZ5IHx8XG4gICAgICAgICAgICAhIXRoaXMuaGludERpcmVjdGl2ZT8uaGludCB8fFxuICAgICAgICAgICAgISF0aGlzLmhpbnRDb250ZW50XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG9uTW91c2VMZWF2ZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmhpbnREaXJlY3RpdmUpIHtcbiAgICAgICAgICAgIHRoaXMub25Ib3ZlcmVkKE5hTik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0WChpbmRleDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgICAgaWYgKHRoaXMuaXNTaW5nbGVQb2ludCkge1xuICAgICAgICAgICAgcmV0dXJuICh0aGlzLnZhbHVlWzBdPy5bMF0gfHwgMCkgLyAyO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGluZGV4XG4gICAgICAgICAgICA/ICgodGhpcy52YWx1ZVtpbmRleCAtIDFdPy5bMF0gfHwgMCkgKyAodGhpcy52YWx1ZVtpbmRleF0/LlswXSB8fCAwKSkgLyAyXG4gICAgICAgICAgICA6IDIgKiAodGhpcy52YWx1ZVswXT8uWzBdIHx8IDApIC0gdGhpcy5nZXRYKDEpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXRXaWR0aChpbmRleDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuICgxMDAgKiB0aGlzLmNvbXB1dGVXaWR0aChpbmRleCkpIC8gdGhpcy53aWR0aDtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0SGludElkKGluZGV4OiBudW1iZXIpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gYCR7dGhpcy5hdXRvSWR9XyR7aW5kZXh9YDtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0SW1wbGljaXQoJGltcGxpY2l0OiBUdWlQb2ludCk6IFR1aVBvaW50IHwgcmVhZG9ubHkgVHVpUG9pbnRbXSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAodGhpcy5oaW50RGlyZWN0aXZlPy5nZXRDb250ZXh0KFxuICAgICAgICAgICAgICAgIHRoaXMudmFsdWUuaW5kZXhPZigkaW1wbGljaXQpLFxuICAgICAgICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgICApIGFzIHJlYWRvbmx5IFR1aVBvaW50W10pID8/ICRpbXBsaWNpdFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXRIb3ZlcmVkKGhvdmVyZWQ6IG51bWJlciB8IG51bGwpOiBUdWlQb2ludCB8IG51bGwge1xuICAgICAgICAvLyBUaGlzIGNoZWNrcyBmb3IgTmFOIGFuZCBudWxsIHRvbyBzaW5jZSBhc3luYyBwaXBlIHJldHVybnMgbnVsbCBiZWZvcmUgZmlyc3QgaXRlbVxuICAgICAgICByZXR1cm4gdHVpSXNQcmVzZW50KGhvdmVyZWQpICYmIE51bWJlci5pc0ludGVnZXIoaG92ZXJlZClcbiAgICAgICAgICAgID8gKHRoaXMudmFsdWVbaG92ZXJlZF0gPz8gbnVsbClcbiAgICAgICAgICAgIDogbnVsbDtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0Qm90dG9tKHk6IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIHJldHVybiAoMTAwICogKHkgLSB0aGlzLnkpKSAvIHRoaXMuaGVpZ2h0O1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXRMZWZ0KHg6IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIHJldHVybiAoMTAwICogKHggLSB0aGlzLngpKSAvIHRoaXMud2lkdGg7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldE9mZnNldCh4OiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gKDEwMCAqICgodGhpcy52YWx1ZVt4XT8uWzBdIHx8IDApIC0gdGhpcy5nZXRYKHgpKSkgLyB0aGlzLmNvbXB1dGVXaWR0aCh4KTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb25Nb3VzZUVudGVyKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaGludERpcmVjdGl2ZSkge1xuICAgICAgICAgICAgdGhpcy5oaW50RGlyZWN0aXZlLnJhaXNlKGluZGV4LCB0aGlzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMub25Ib3ZlcmVkKGluZGV4KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0IGlzU2luZ2xlUG9pbnQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlLmxlbmd0aCA9PT0gMTtcbiAgICB9XG5cbiAgICBAdHVpUHVyZVxuICAgIHByaXZhdGUgZ2V0RCh2YWx1ZTogcmVhZG9ubHkgVHVpUG9pbnRbXSwgc21vb3RoaW5nRmFjdG9yOiBudW1iZXIpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdmFsdWUucmVkdWNlKFxuICAgICAgICAgICAgKGQsIHBvaW50LCBpbmRleCkgPT5cbiAgICAgICAgICAgICAgICBpbmRleCA/IGAke2R9ICR7dHVpRHJhdyh2YWx1ZSwgaW5kZXgsIHNtb290aGluZ0ZhY3Rvcil9YCA6IGBNICR7cG9pbnR9YCxcbiAgICAgICAgICAgICcnLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgY29tcHV0ZVdpZHRoKGluZGV4OiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gaW5kZXggPT09IHRoaXMudmFsdWUubGVuZ3RoIC0gMVxuICAgICAgICAgICAgPyAyICogKCh0aGlzLnZhbHVlW2luZGV4XT8uWzBdIHx8IDApIC0gdGhpcy5nZXRYKGluZGV4KSlcbiAgICAgICAgICAgIDogdGhpcy5nZXRYKGluZGV4ICsgMSkgLSB0aGlzLmdldFgoaW5kZXgpO1xuICAgIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKnR1aUxldD1cImhvdmVyZWQkIHwgYXN5bmMgYXMgaG92ZXJlZFwiPlxuICAgIDxzdmdcbiAgICAgICAgZm9jdXNhYmxlPVwiZmFsc2VcIlxuICAgICAgICBoZWlnaHQ9XCIxMDAlXCJcbiAgICAgICAgcHJlc2VydmVBc3BlY3RSYXRpbz1cIm5vbmVcIlxuICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgY2xhc3M9XCJ0LXN2Z1wiXG4gICAgICAgIFthdHRyLnZpZXdCb3hdPVwidmlld0JveCgpXCJcbiAgICA+XG4gICAgICAgIDxkZWZzPlxuICAgICAgICAgICAgPGxpbmVhckdyYWRpZW50XG4gICAgICAgICAgICAgICAgeDE9XCIwXCJcbiAgICAgICAgICAgICAgICB4Mj1cIjBcIlxuICAgICAgICAgICAgICAgIHkxPVwiMVwiXG4gICAgICAgICAgICAgICAgeTI9XCIwXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5pZF09XCJmaWxsSWRcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzdG9wXG4gICAgICAgICAgICAgICAgICAgIG9mZnNldD1cIjAlXCJcbiAgICAgICAgICAgICAgICAgICAgc3RvcC1jb2xvcj1cImN1cnJlbnRDb2xvclwiXG4gICAgICAgICAgICAgICAgICAgIHN0b3Atb3BhY2l0eT1cIjAuNVwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8c3RvcFxuICAgICAgICAgICAgICAgICAgICBvZmZzZXQ9XCIxMDAlXCJcbiAgICAgICAgICAgICAgICAgICAgc3RvcC1jb2xvcj1cImN1cnJlbnRDb2xvclwiXG4gICAgICAgICAgICAgICAgICAgIHN0b3Atb3BhY2l0eT1cIjBcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L2xpbmVhckdyYWRpZW50PlxuICAgICAgICA8L2RlZnM+XG4gICAgICAgIDxwYXRoXG4gICAgICAgICAgICBzdHJva2U9XCJub25lXCJcbiAgICAgICAgICAgIFthdHRyLmRdPVwiZmlsbERcIlxuICAgICAgICAgICAgW2F0dHIuZmlsbF09XCJmaWxsXCJcbiAgICAgICAgLz5cbiAgICAgICAgPHBhdGhcbiAgICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiXG4gICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIyXCJcbiAgICAgICAgICAgIHZlY3Rvci1lZmZlY3Q9XCJub24tc2NhbGluZy1zdHJva2VcIlxuICAgICAgICAgICAgW2F0dHIuZF09XCJkXCJcbiAgICAgICAgLz5cbiAgICA8L3N2Zz5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZG90c1wiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgcG9pbnQgb2YgdmFsdWVcIlxuICAgICAgICAgICAgY2xhc3M9XCJ0LWRvdFwiXG4gICAgICAgICAgICBbc3R5bGUuYm90dG9tLiVdPVwiZ2V0Qm90dG9tKHBvaW50WzFdKVwiXG4gICAgICAgICAgICBbc3R5bGUubGVmdC4lXT1cImdldExlZnQocG9pbnRbMF0pXCJcbiAgICAgICAgPjwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJoYXNIaW50c1wiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBwb2ludCBvZiB2YWx1ZTsgbGV0IGluZGV4ID0gaW5kZXhcIj5cbiAgICAgICAgICAgIDwhLS0gVE9ETzogRml4IGhpbnQgdHlwZSAtLT5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAqbmdJZj1cInZhbHVlLmxlbmd0aCA+IDEgfHwgZG90c1wiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ0LWNvbHVtblwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLnQtY29sdW1uX2hpbnRfaG92ZXJlZF09XCJkcml2ZXJzLmdldChpbmRleCkgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgW2NsYXNzLnQtY29sdW1uX2hvdmVyZWRdPVwiaG92ZXJlZCA9PT0gaW5kZXhcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5sZWZ0LiVdPVwiZ2V0TGVmdChnZXRYKGluZGV4KSlcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS53aWR0aC4lXT1cImdldFdpZHRoKGluZGV4KVwiXG4gICAgICAgICAgICAgICAgW3R1aUhpbnRdPVwiJGFueShoaW50RGlyZWN0aXZlPy5oaW50IHx8IGhpbnRDb250ZW50KVwiXG4gICAgICAgICAgICAgICAgW3R1aUhpbnRDb250ZXh0XT1cInskaW1wbGljaXQ6IGdldEltcGxpY2l0KHBvaW50KSwgaW5kZXg6IGluZGV4fVwiXG4gICAgICAgICAgICAgICAgW3R1aUhpbnREZXNjcmliZV09XCJpc0ZvY3VzYWJsZSA/IGdldEhpbnRJZChpbmRleCkgOiBudWxsXCJcbiAgICAgICAgICAgICAgICBbdHVpSGludEhvc3RdPVwiaGludEhvc3RcIlxuICAgICAgICAgICAgICAgIChtb3VzZWVudGVyKT1cIm9uTW91c2VFbnRlcihpbmRleClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0LWxpbmUgdC1saW5lX3ZlcnRpY2FsXCJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmxlZnQuJV09XCJnZXRPZmZzZXQoaW5kZXgpXCJcbiAgICAgICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAjaGludEhvc3RcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0LWhvc3RcIlxuICAgICAgICAgICAgICAgICAgICBbaWRdPVwiZ2V0SGludElkKGluZGV4KVwiXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZS5ib3R0b20uJV09XCJnZXRCb3R0b20ocG9pbnRbMV0pXCJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmxlZnQuJV09XCJnZXRPZmZzZXQoaW5kZXgpXCJcbiAgICAgICAgICAgICAgICAgICAgW3RhYkluZGV4XT1cImlzRm9jdXNhYmxlID8gMCA6IC0xXCJcbiAgICAgICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAqbmdJZj1cImlzRm9jdXNhYmxlXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInQtbGluZSB0LWxpbmVfaG9yaXpvbnRhbFwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLmJvdHRvbS4lXT1cImdldEJvdHRvbShwb2ludFsxXSlcIlxuICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZ2V0SG92ZXJlZChob3ZlcmVkKSBhcyBwb2ludFwiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgICAqbmdJZj1cInhTdHJpbmdpZnlcIlxuICAgICAgICAgICAgY2xhc3M9XCJ0LWhpbnQgdC1oaW50X3hcIlxuICAgICAgICAgICAgW3N0eWxlLmxlZnQuJV09XCJnZXRMZWZ0KHBvaW50WzBdKVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIHt7IHhTdHJpbmdpZnkocG9pbnRbMF0pIH19XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgICAqbmdJZj1cInlTdHJpbmdpZnlcIlxuICAgICAgICAgICAgY2xhc3M9XCJ0LWhpbnQgdC1oaW50X3lcIlxuICAgICAgICAgICAgW3N0eWxlLmJvdHRvbS4lXT1cImdldEJvdHRvbShwb2ludFsxXSlcIlxuICAgICAgICA+XG4gICAgICAgICAgICB7eyB5U3RyaW5naWZ5KHBvaW50WzFdKSB9fVxuICAgICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbjwvbmctY29udGFpbmVyPlxuIl19
@@ -13,21 +13,21 @@ import * as i0 from "@angular/core";
13
13
  class TuiPieChartDirective {
14
14
  constructor() {
15
15
  this.sector$ = new BehaviorSubject([0, 0]);
16
- const el = tuiInjectElement();
17
- const performance = inject(WA_PERFORMANCE);
18
- const animationFrame$ = inject(WA_ANIMATION_FRAME);
19
- const speed = inject(TUI_ANIMATIONS_SPEED);
20
- this.sector$
16
+ this.el = tuiInjectElement();
17
+ this.performance = inject(WA_PERFORMANCE);
18
+ this.animationFrame$ = inject(WA_ANIMATION_FRAME);
19
+ this.speed = inject(TUI_ANIMATIONS_SPEED);
20
+ this.$ = this.sector$
21
21
  .pipe(pairwise(), switchMap(([prev, cur]) => {
22
- const now = performance.now();
22
+ const now = this.performance.now();
23
23
  const startDelta = cur[0] - prev[0];
24
24
  const endDelta = cur[1] - prev[1];
25
- return animationFrame$.pipe(map((timestamp) => tuiEaseInOutQuad(tuiClamp((timestamp - now) / tuiGetDuration(speed), 0, 1))), takeWhile((progress) => progress < 1, true), map((progress) => [
25
+ return this.animationFrame$.pipe(map((timestamp) => tuiEaseInOutQuad(tuiClamp((timestamp - now) / tuiGetDuration(this.speed), 0, 1))), takeWhile((progress) => progress < 1, true), map((progress) => [
26
26
  prev[0] + startDelta * progress,
27
27
  cur[1] > 359 ? cur[1] : prev[1] + endDelta * progress,
28
28
  ]));
29
29
  }), tuiZonefree(), takeUntilDestroyed())
30
- .subscribe(([start, end]) => el.setAttribute('d', tuiDescribeSector(start, end)));
30
+ .subscribe(([start, end]) => this.el.setAttribute('d', tuiDescribeSector(start, end)));
31
31
  }
32
32
  set tuiPieChart(sector) {
33
33
  this.sector$.next(sector);
@@ -42,7 +42,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
42
42
  standalone: true,
43
43
  selector: 'path[tuiPieChart]',
44
44
  }]
45
- }], ctorParameters: function () { return []; }, propDecorators: { tuiPieChart: [{
45
+ }], propDecorators: { tuiPieChart: [{
46
46
  type: Input
47
47
  }] } });
48
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGllLWNoYXJ0LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FkZG9uLWNoYXJ0cy9jb21wb25lbnRzL3BpZS1jaGFydC9waWUtY2hhcnQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN2RCxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RCxPQUFPLEVBQUMsa0JBQWtCLEVBQUUsY0FBYyxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDdkUsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDL0QsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQ3RELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUNsRCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxtQ0FBbUMsQ0FBQztBQUNuRSxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUMzRCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sb0NBQW9DLENBQUM7QUFDbEUsT0FBTyxFQUFDLGVBQWUsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUMsTUFBTSxNQUFNLENBQUM7O0FBRTFFLE1BSWEsb0JBQW9CO0lBRzdCO1FBRmlCLFlBQU8sR0FBRyxJQUFJLGVBQWUsQ0FBNEIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUc5RSxNQUFNLEVBQUUsR0FBRyxnQkFBZ0IsRUFBa0IsQ0FBQztRQUM5QyxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDM0MsTUFBTSxlQUFlLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDbkQsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFFM0MsSUFBSSxDQUFDLE9BQU87YUFDUCxJQUFJLENBQ0QsUUFBUSxFQUFFLEVBQ1YsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRTtZQUN0QixNQUFNLEdBQUcsR0FBRyxXQUFXLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDOUIsTUFBTSxVQUFVLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNwQyxNQUFNLFFBQVEsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRWxDLE9BQU8sZUFBZSxDQUFDLElBQUksQ0FDdkIsR0FBRyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FDZCxnQkFBZ0IsQ0FDWixRQUFRLENBQUMsQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDLEdBQUcsY0FBYyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FDNUQsQ0FDSixFQUNELFNBQVMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsUUFBUSxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsRUFDM0MsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQztnQkFDZCxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsVUFBVSxHQUFHLFFBQVE7Z0JBQy9CLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLFFBQVEsR0FBRyxRQUFRO2FBQ3hELENBQUMsQ0FDTCxDQUFDO1FBQ04sQ0FBQyxDQUFDLEVBQ0YsV0FBVyxFQUFFLEVBQ2Isa0JBQWtCLEVBQUUsQ0FDdkI7YUFDQSxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLENBQ3hCLEVBQUUsQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLGlCQUFpQixDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUN0RCxDQUFDO0lBQ1YsQ0FBQztJQUVELElBQ1csV0FBVyxDQUFDLE1BQWlDO1FBQ3BELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzlCLENBQUM7K0dBekNRLG9CQUFvQjttR0FBcEIsb0JBQW9COztTQUFwQixvQkFBb0I7NEZBQXBCLG9CQUFvQjtrQkFKaEMsU0FBUzttQkFBQztvQkFDUCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLG1CQUFtQjtpQkFDaEM7MEVBd0NjLFdBQVc7c0JBRHJCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0RpcmVjdGl2ZSwgaW5qZWN0LCBJbnB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge3Rha2VVbnRpbERlc3Ryb3llZH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHtXQV9BTklNQVRJT05fRlJBTUUsIFdBX1BFUkZPUk1BTkNFfSBmcm9tICdAbmctd2ViLWFwaXMvY29tbW9uJztcbmltcG9ydCB7dHVpRGVzY3JpYmVTZWN0b3J9IGZyb20gJ0B0YWlnYS11aS9hZGRvbi1jaGFydHMvdXRpbHMnO1xuaW1wb3J0IHt0dWlab25lZnJlZX0gZnJvbSAnQHRhaWdhLXVpL2Nkay9vYnNlcnZhYmxlcyc7XG5pbXBvcnQge3R1aUluamVjdEVsZW1lbnR9IGZyb20gJ0B0YWlnYS11aS9jZGsvdXRpbHMvZG9tJztcbmltcG9ydCB7dHVpQ2xhbXB9IGZyb20gJ0B0YWlnYS11aS9jZGsvdXRpbHMvbWF0aCc7XG5pbXBvcnQge3R1aUVhc2VJbk91dFF1YWR9IGZyb20gJ0B0YWlnYS11aS9jZGsvdXRpbHMvbWlzY2VsbGFuZW91cyc7XG5pbXBvcnQge1RVSV9BTklNQVRJT05TX1NQRUVEfSBmcm9tICdAdGFpZ2EtdWkvY29yZS90b2tlbnMnO1xuaW1wb3J0IHt0dWlHZXREdXJhdGlvbn0gZnJvbSAnQHRhaWdhLXVpL2NvcmUvdXRpbHMvbWlzY2VsbGFuZW91cyc7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgbWFwLCBwYWlyd2lzZSwgc3dpdGNoTWFwLCB0YWtlV2hpbGV9IGZyb20gJ3J4anMnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAncGF0aFt0dWlQaWVDaGFydF0nLFxufSlcbmV4cG9ydCBjbGFzcyBUdWlQaWVDaGFydERpcmVjdGl2ZSB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBzZWN0b3IkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxyZWFkb25seSBbbnVtYmVyLCBudW1iZXJdPihbMCwgMF0pO1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIGNvbnN0IGVsID0gdHVpSW5qZWN0RWxlbWVudDxTVkdQYXRoRWxlbWVudD4oKTtcbiAgICAgICAgY29uc3QgcGVyZm9ybWFuY2UgPSBpbmplY3QoV0FfUEVSRk9STUFOQ0UpO1xuICAgICAgICBjb25zdCBhbmltYXRpb25GcmFtZSQgPSBpbmplY3QoV0FfQU5JTUFUSU9OX0ZSQU1FKTtcbiAgICAgICAgY29uc3Qgc3BlZWQgPSBpbmplY3QoVFVJX0FOSU1BVElPTlNfU1BFRUQpO1xuXG4gICAgICAgIHRoaXMuc2VjdG9yJFxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgcGFpcndpc2UoKSxcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoKFtwcmV2LCBjdXJdKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5vdyA9IHBlcmZvcm1hbmNlLm5vdygpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGFydERlbHRhID0gY3VyWzBdIC0gcHJldlswXTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZW5kRGVsdGEgPSBjdXJbMV0gLSBwcmV2WzFdO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhbmltYXRpb25GcmFtZSQucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcCgodGltZXN0YW1wKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR1aUVhc2VJbk91dFF1YWQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR1aUNsYW1wKCh0aW1lc3RhbXAgLSBub3cpIC8gdHVpR2V0RHVyYXRpb24oc3BlZWQpLCAwLCAxKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRha2VXaGlsZSgocHJvZ3Jlc3MpID0+IHByb2dyZXNzIDwgMSwgdHJ1ZSksXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXAoKHByb2dyZXNzKSA9PiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldlswXSArIHN0YXJ0RGVsdGEgKiBwcm9ncmVzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJbMV0gPiAzNTkgPyBjdXJbMV0gOiBwcmV2WzFdICsgZW5kRGVsdGEgKiBwcm9ncmVzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIHR1aVpvbmVmcmVlKCksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKCksXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChbc3RhcnQsIGVuZF0pID0+XG4gICAgICAgICAgICAgICAgZWwuc2V0QXR0cmlidXRlKCdkJywgdHVpRGVzY3JpYmVTZWN0b3Ioc3RhcnQsIGVuZCkpLFxuICAgICAgICAgICAgKTtcbiAgICB9XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZXQgdHVpUGllQ2hhcnQoc2VjdG9yOiByZWFkb25seSBbbnVtYmVyLCBudW1iZXJdKSB7XG4gICAgICAgIHRoaXMuc2VjdG9yJC5uZXh0KHNlY3Rvcik7XG4gICAgfVxufVxuIl19
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGllLWNoYXJ0LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FkZG9uLWNoYXJ0cy9jb21wb25lbnRzL3BpZS1jaGFydC9waWUtY2hhcnQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN2RCxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RCxPQUFPLEVBQUMsa0JBQWtCLEVBQUUsY0FBYyxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDdkUsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDL0QsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQ3RELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUNsRCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxtQ0FBbUMsQ0FBQztBQUNuRSxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUMzRCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sb0NBQW9DLENBQUM7QUFDbEUsT0FBTyxFQUFDLGVBQWUsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUMsTUFBTSxNQUFNLENBQUM7O0FBRTFFLE1BSWEsb0JBQW9CO0lBSmpDO1FBS3FCLFlBQU8sR0FBRyxJQUFJLGVBQWUsQ0FBNEIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNqRSxPQUFFLEdBQUcsZ0JBQWdCLEVBQWtCLENBQUM7UUFDeEMsZ0JBQVcsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDckMsb0JBQWUsR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUM3QyxVQUFLLEdBQUcsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDbkMsTUFBQyxHQUFHLElBQUksQ0FBQyxPQUFPO2FBQzlCLElBQUksQ0FDRCxRQUFRLEVBQUUsRUFDVixTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFO1lBQ3RCLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDbkMsTUFBTSxVQUFVLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNwQyxNQUFNLFFBQVEsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRWxDLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQzVCLEdBQUcsQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQ2QsZ0JBQWdCLENBQ1osUUFBUSxDQUNKLENBQUMsU0FBUyxHQUFHLEdBQUcsQ0FBQyxHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQzlDLENBQUMsRUFDRCxDQUFDLENBQ0osQ0FDSixDQUNKLEVBQ0QsU0FBUyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxFQUMzQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDO2dCQUNkLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxVQUFVLEdBQUcsUUFBUTtnQkFDL0IsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxHQUFHLFFBQVE7YUFDeEQsQ0FBQyxDQUNMLENBQUM7UUFDTixDQUFDLENBQUMsRUFDRixXQUFXLEVBQUUsRUFDYixrQkFBa0IsRUFBRSxDQUN2QjthQUNBLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FDeEIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLGlCQUFpQixDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUMzRCxDQUFDO0tBTVQ7SUFKRyxJQUNXLFdBQVcsQ0FBQyxNQUFpQztRQUNwRCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM5QixDQUFDOytHQXpDUSxvQkFBb0I7bUdBQXBCLG9CQUFvQjs7U0FBcEIsb0JBQW9COzRGQUFwQixvQkFBb0I7a0JBSmhDLFNBQVM7bUJBQUM7b0JBQ1AsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRSxtQkFBbUI7aUJBQ2hDOzhCQXdDYyxXQUFXO3NCQURyQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEaXJlY3RpdmUsIGluamVjdCwgSW5wdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHt0YWtlVW50aWxEZXN0cm95ZWR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7V0FfQU5JTUFUSU9OX0ZSQU1FLCBXQV9QRVJGT1JNQU5DRX0gZnJvbSAnQG5nLXdlYi1hcGlzL2NvbW1vbic7XG5pbXBvcnQge3R1aURlc2NyaWJlU2VjdG9yfSBmcm9tICdAdGFpZ2EtdWkvYWRkb24tY2hhcnRzL3V0aWxzJztcbmltcG9ydCB7dHVpWm9uZWZyZWV9IGZyb20gJ0B0YWlnYS11aS9jZGsvb2JzZXJ2YWJsZXMnO1xuaW1wb3J0IHt0dWlJbmplY3RFbGVtZW50fSBmcm9tICdAdGFpZ2EtdWkvY2RrL3V0aWxzL2RvbSc7XG5pbXBvcnQge3R1aUNsYW1wfSBmcm9tICdAdGFpZ2EtdWkvY2RrL3V0aWxzL21hdGgnO1xuaW1wb3J0IHt0dWlFYXNlSW5PdXRRdWFkfSBmcm9tICdAdGFpZ2EtdWkvY2RrL3V0aWxzL21pc2NlbGxhbmVvdXMnO1xuaW1wb3J0IHtUVUlfQU5JTUFUSU9OU19TUEVFRH0gZnJvbSAnQHRhaWdhLXVpL2NvcmUvdG9rZW5zJztcbmltcG9ydCB7dHVpR2V0RHVyYXRpb259IGZyb20gJ0B0YWlnYS11aS9jb3JlL3V0aWxzL21pc2NlbGxhbmVvdXMnO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIG1hcCwgcGFpcndpc2UsIHN3aXRjaE1hcCwgdGFrZVdoaWxlfSBmcm9tICdyeGpzJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ3BhdGhbdHVpUGllQ2hhcnRdJyxcbn0pXG5leHBvcnQgY2xhc3MgVHVpUGllQ2hhcnREaXJlY3RpdmUge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgc2VjdG9yJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8cmVhZG9ubHkgW251bWJlciwgbnVtYmVyXT4oWzAsIDBdKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGVsID0gdHVpSW5qZWN0RWxlbWVudDxTVkdQYXRoRWxlbWVudD4oKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHBlcmZvcm1hbmNlID0gaW5qZWN0KFdBX1BFUkZPUk1BTkNFKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFuaW1hdGlvbkZyYW1lJCA9IGluamVjdChXQV9BTklNQVRJT05fRlJBTUUpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgc3BlZWQgPSBpbmplY3QoVFVJX0FOSU1BVElPTlNfU1BFRUQpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSAkID0gdGhpcy5zZWN0b3IkXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgICAgcGFpcndpc2UoKSxcbiAgICAgICAgICAgIHN3aXRjaE1hcCgoW3ByZXYsIGN1cl0pID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBub3cgPSB0aGlzLnBlcmZvcm1hbmNlLm5vdygpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHN0YXJ0RGVsdGEgPSBjdXJbMF0gLSBwcmV2WzBdO1xuICAgICAgICAgICAgICAgIGNvbnN0IGVuZERlbHRhID0gY3VyWzFdIC0gcHJldlsxXTtcblxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmFuaW1hdGlvbkZyYW1lJC5waXBlKFxuICAgICAgICAgICAgICAgICAgICBtYXAoKHRpbWVzdGFtcCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIHR1aUVhc2VJbk91dFF1YWQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHVpQ2xhbXAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0aW1lc3RhbXAgLSBub3cpIC8gdHVpR2V0RHVyYXRpb24odGhpcy5zcGVlZCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIHRha2VXaGlsZSgocHJvZ3Jlc3MpID0+IHByb2dyZXNzIDwgMSwgdHJ1ZSksXG4gICAgICAgICAgICAgICAgICAgIG1hcCgocHJvZ3Jlc3MpID0+IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZXZbMF0gKyBzdGFydERlbHRhICogcHJvZ3Jlc3MsXG4gICAgICAgICAgICAgICAgICAgICAgICBjdXJbMV0gPiAzNTkgPyBjdXJbMV0gOiBwcmV2WzFdICsgZW5kRGVsdGEgKiBwcm9ncmVzcyxcbiAgICAgICAgICAgICAgICAgICAgXSksXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgdHVpWm9uZWZyZWUoKSxcbiAgICAgICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCgpLFxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKFtzdGFydCwgZW5kXSkgPT5cbiAgICAgICAgICAgIHRoaXMuZWwuc2V0QXR0cmlidXRlKCdkJywgdHVpRGVzY3JpYmVTZWN0b3Ioc3RhcnQsIGVuZCkpLFxuICAgICAgICApO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IHR1aVBpZUNoYXJ0KHNlY3RvcjogcmVhZG9ubHkgW251bWJlciwgbnVtYmVyXSkge1xuICAgICAgICB0aGlzLnNlY3RvciQubmV4dChzZWN0b3IpO1xuICAgIH1cbn1cbiJdfQ==