@firestitch/report 18.13.0 → 18.14.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/app/reports/components/component-grid/component-grid.component.d.ts +4 -0
- package/app/reports/data/report-grid-source.d.ts +1 -0
- package/app/reports/interfaces/{report-chat-viewer-detail.interface.d.ts → report-chat-viewer-show-rows.interface.d.ts} +1 -1
- package/app/reports/interfaces/report-chat-viewer-state.interface.d.ts +2 -2
- package/app/reports/interfaces/report-mark-action.type.d.ts +1 -1
- package/app/reports/interfaces/report-temporary-state.interface.d.ts +1 -1
- package/app/reports/interfaces/report-viewer-feature.type.d.ts +1 -1
- package/app/reports/report-grid-layout.d.ts +2 -1
- package/esm2022/app/reports/components/component-grid/component-grid.component.mjs +40 -5
- package/esm2022/app/reports/data/report-grid-source.mjs +11 -2
- package/esm2022/app/reports/interfaces/report-chat-viewer-show-rows.interface.mjs +2 -0
- package/esm2022/app/reports/interfaces/report-chat-viewer-state.interface.mjs +1 -1
- package/esm2022/app/reports/interfaces/report-mark-action.type.mjs +1 -1
- package/esm2022/app/reports/interfaces/report-temporary-state.interface.mjs +1 -1
- package/esm2022/app/reports/interfaces/report-viewer-feature.type.mjs +1 -1
- package/esm2022/app/reports/mark-click.mjs +2 -2
- package/esm2022/app/reports/option-builder.mjs +4 -4
- package/esm2022/app/reports/report-grid-layout.mjs +43 -2
- package/esm2022/app/reports/report-viewer-features.mjs +4 -2
- package/esm2022/app/reports/services/report-filter-state.service.mjs +2 -2
- package/fesm2022/{firestitch-report-echarts-EecIloKo.mjs → firestitch-report-echarts-DMflI6jp.mjs} +2 -2
- package/fesm2022/{firestitch-report-echarts-EecIloKo.mjs.map → firestitch-report-echarts-DMflI6jp.mjs.map} +1 -1
- package/fesm2022/{firestitch-report-firestitch-report-DbdLxQSE.mjs → firestitch-report-firestitch-report-C94rjx24.mjs} +104 -19
- package/fesm2022/firestitch-report-firestitch-report-C94rjx24.mjs.map +1 -0
- package/fesm2022/firestitch-report.mjs +1 -1
- package/package.json +1 -1
- package/esm2022/app/reports/interfaces/report-chat-viewer-detail.interface.mjs +0 -2
- package/fesm2022/firestitch-report-firestitch-report-DbdLxQSE.mjs.map +0 -1
|
@@ -20,11 +20,15 @@ export declare class ComponentGridComponent implements OnInit {
|
|
|
20
20
|
private _reportData;
|
|
21
21
|
private _filterState;
|
|
22
22
|
private _destroyRef;
|
|
23
|
+
private _injector;
|
|
24
|
+
private _isPruned;
|
|
23
25
|
private _paramsVersion;
|
|
24
26
|
ngOnInit(): void;
|
|
25
27
|
setLayout(layout: GridLayout): void;
|
|
26
28
|
setExpansion(expansion: GridExpansion | undefined): void;
|
|
27
29
|
private _init;
|
|
30
|
+
private _pruneAfterFirstRead;
|
|
31
|
+
private _prune;
|
|
28
32
|
private _settled$;
|
|
29
33
|
private _applyParams;
|
|
30
34
|
private _readParams;
|
|
@@ -12,6 +12,7 @@ export declare class ReportGridSource implements GridSource {
|
|
|
12
12
|
private readonly _reportId;
|
|
13
13
|
private readonly _componentId;
|
|
14
14
|
readonly report: import("@angular/core").WritableSignal<ReportGridReport>;
|
|
15
|
+
readonly summary: import("@angular/core").WritableSignal<GridResult>;
|
|
15
16
|
private readonly _isExport;
|
|
16
17
|
private readonly _locale;
|
|
17
18
|
constructor(_reportData: ReportData, _reportId: number, _componentId: number, options?: ReportGridSourceOptions);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ReportChatViewerCrossFilter } from './report-chat-viewer-cross-filter.interface';
|
|
2
|
-
import {
|
|
2
|
+
import { ReportChatViewerShowRows } from './report-chat-viewer-show-rows.interface';
|
|
3
3
|
import { ReportChatViewerDrill } from './report-chat-viewer-drill.interface';
|
|
4
4
|
import { ReportChatViewerFilter } from './report-chat-viewer-filter.interface';
|
|
5
5
|
import { ReportChatViewerSelection } from './report-chat-viewer-selection.interface';
|
|
@@ -13,7 +13,7 @@ export interface ReportChatViewerState {
|
|
|
13
13
|
match?: ReportFilterMatch;
|
|
14
14
|
crossFilters?: ReportChatViewerCrossFilter[];
|
|
15
15
|
drills?: ReportChatViewerDrill[];
|
|
16
|
-
|
|
16
|
+
showRows?: ReportChatViewerShowRows | null;
|
|
17
17
|
tiles?: ReportChatViewerTile[];
|
|
18
18
|
selection?: ReportChatViewerSelection;
|
|
19
19
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export type ReportMarkAction = 'drill' | 'crossFilter' | '
|
|
1
|
+
export type ReportMarkAction = 'drill' | 'crossFilter' | 'showRows';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export type ReportViewerFeature = 'excludeValues' | 'numberRange' | 'matchAny' | 'pageScope' | 'cascadingOptions' | 'scopeFilters' | 'drill' | 'crossFilter' | '
|
|
1
|
+
export type ReportViewerFeature = 'excludeValues' | 'numberRange' | 'matchAny' | 'pageScope' | 'cascadingOptions' | 'scopeFilters' | 'drill' | 'crossFilter' | 'showRows' | 'grid';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { GridClearedFilter, GridGranularity, GridLayout } from '@firestitch/grid';
|
|
1
|
+
import { GridClearedFilter, GridControlState, GridFilter, GridGranularity, GridLayout, GridNote } from '@firestitch/grid';
|
|
2
2
|
import { ChartGranularity, ReportComponent } from './interfaces/report.interface';
|
|
3
3
|
export declare const GRID_GRANULARITIES: Record<ChartGranularity, GridGranularity>;
|
|
4
4
|
export declare function authoredGridLayout(component: ReportComponent): GridLayout;
|
|
@@ -8,3 +8,4 @@ export declare function grainedGridLayout(layout: GridLayout, field: string, gra
|
|
|
8
8
|
layout: GridLayout;
|
|
9
9
|
cleared: GridClearedFilter | null;
|
|
10
10
|
};
|
|
11
|
+
export declare function prunedGridLayout(layout: GridLayout, notes: readonly GridNote[], filter?: GridControlState, authored?: readonly GridFilter[]): GridLayout;
|
|
@@ -1,10 +1,12 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, DestroyRef, computed, inject, input, signal, } from '@angular/core';
|
|
1
|
+
import { ChangeDetectionStrategy, Component, DestroyRef, Injector, computed, effect, inject, input, signal, untracked, } from '@angular/core';
|
|
2
2
|
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
3
3
|
import { FsGridCellDirective, FsGridComponent } from '@firestitch/grid';
|
|
4
|
+
import { FsPopoverDirective } from '@firestitch/popover';
|
|
4
5
|
import { filter, map, of, switchMap, tap, timer } from 'rxjs';
|
|
5
6
|
import { ReportData } from '../../data/report.data';
|
|
6
7
|
import { ReportGridSource } from '../../data/report-grid-source';
|
|
7
8
|
import { followsGroupBy } from '../../group-by';
|
|
9
|
+
import { authoredGridLayout, prunedGridLayout } from '../../report-grid-layout';
|
|
8
10
|
import { ReportFilterStateService } from '../../services/report-filter-state.service';
|
|
9
11
|
import { TILE_REFRESH_DEBOUNCE_MS } from '../../tile-loads';
|
|
10
12
|
import { ComponentNoteComponent } from '../component-note/component-note.component';
|
|
@@ -33,7 +35,11 @@ import * as i0 from "@angular/core";
|
|
|
33
35
|
// - fs-grid compares the layout and params by value: a cloned value never
|
|
34
36
|
// reads again.
|
|
35
37
|
// - An output's detail cell is drawn by fsReportGridCell, so a change tells
|
|
36
|
-
// a missing prior from a zero one
|
|
38
|
+
// a missing prior from a zero one, as a list does; a click on it opens
|
|
39
|
+
// why, as no cell carries a native tooltip.
|
|
40
|
+
// - After the tile's first read, the viewer's layout loses the filters and
|
|
41
|
+
// sort terms that read refused (prunedGridLayout), so stale tile state
|
|
42
|
+
// (a field the AI took out of the query) does not linger.
|
|
37
43
|
export class ComponentGridComponent {
|
|
38
44
|
reportId = input.required();
|
|
39
45
|
component = input.required();
|
|
@@ -57,11 +63,15 @@ export class ComponentGridComponent {
|
|
|
57
63
|
_reportData = inject(ReportData);
|
|
58
64
|
_filterState = inject(ReportFilterStateService);
|
|
59
65
|
_destroyRef = inject(DestroyRef);
|
|
66
|
+
_injector = inject(Injector);
|
|
67
|
+
// Whether the first read's notes have pruned the viewer's layout.
|
|
68
|
+
_isPruned = false;
|
|
60
69
|
// The state version the params on screen were read under.
|
|
61
70
|
_paramsVersion = 0;
|
|
62
71
|
ngOnInit() {
|
|
63
72
|
this.expansion.set(this._filterState.gridExpansion(this.component()));
|
|
64
73
|
this._init();
|
|
74
|
+
this._pruneAfterFirstRead();
|
|
65
75
|
}
|
|
66
76
|
setLayout(layout) {
|
|
67
77
|
this._filterState.setGridLayout(this.component(), layout);
|
|
@@ -81,6 +91,30 @@ export class ComponentGridComponent {
|
|
|
81
91
|
.subscribe(() => this._applyParams());
|
|
82
92
|
}
|
|
83
93
|
}
|
|
94
|
+
// Once the tile's first read is in, its notes prune the viewer's layout
|
|
95
|
+
// (prunedGridLayout). A tile showing its authored layout has nothing to
|
|
96
|
+
// prune.
|
|
97
|
+
_pruneAfterFirstRead() {
|
|
98
|
+
effect(() => {
|
|
99
|
+
const summary = this.source().summary();
|
|
100
|
+
if (!summary || this._isPruned) {
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
this._isPruned = true;
|
|
104
|
+
untracked(() => this._prune(summary.notes ?? []));
|
|
105
|
+
}, { injector: this._injector, allowSignalWrites: true });
|
|
106
|
+
}
|
|
107
|
+
_prune(notes) {
|
|
108
|
+
const component = this.component();
|
|
109
|
+
const session = this._filterState.gridSessionLayout(component);
|
|
110
|
+
if (!session) {
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
const pruned = prunedGridLayout(session, notes, this.controls().filter, authoredGridLayout(component).filters);
|
|
114
|
+
if (pruned !== session) {
|
|
115
|
+
this._filterState.setGridLayout(component, pruned);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
84
118
|
// A change, once it has settled: at once when the state version moved,
|
|
85
119
|
// else after the debounce; dropped when the version moves while it waits,
|
|
86
120
|
// since that move brings its own change.
|
|
@@ -106,15 +140,16 @@ export class ComponentGridComponent {
|
|
|
106
140
|
};
|
|
107
141
|
}
|
|
108
142
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ComponentGridComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
109
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ComponentGridComponent, isStandalone: true, selector: "app-report-component-grid", inputs: { reportId: { classPropertyName: "reportId", publicName: "reportId", isSignal: true, isRequired: true, transformFunction: null }, component: { classPropertyName: "component", publicName: "component", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: "<!-- The comparison and window note strip above the table, from the report\n line of the latest read; the windows' descriptions and notes go in each\n column's \"About this column\" instead. -->\n<div class=\"fs-column grid-pane\">\n <app-report-component-note\n [data]=\"noteData()\"\n [windowNotes]=\"false\">\n </app-report-component-note>\n <!-- The params are seeded before the first render, so the grid's first read\n carries the tile's report filters. -->\n @if (params(); as params) {\n <fs-grid\n class=\"fs-flex\"\n [source]=\"source()\"\n [layout]=\"layout()\"\n [expansion]=\"expansion()\"\n [clearedFilter]=\"clearedFilter()\"\n (expansionChange)=\"setExpansion($event)\"\n [params]=\"params\"\n [controls]=\"controls()\"\n [formatter]=\"formatter()\"\n (layoutChange)=\"setLayout($event)\">\n <ng-template fsGridCell let-value let-field=\"field\" let-record=\"record\" let-text=\"text\">\n @if (value | fsReportGridCell: field : record : text : noteData() : formatContext(); as shown) {\n <span
|
|
143
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ComponentGridComponent, isStandalone: true, selector: "app-report-component-grid", inputs: { reportId: { classPropertyName: "reportId", publicName: "reportId", isSignal: true, isRequired: true, transformFunction: null }, component: { classPropertyName: "component", publicName: "component", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: "<!-- The comparison and window note strip above the table, from the report\n line of the latest read; the windows' descriptions and notes go in each\n column's \"About this column\" instead. -->\n<div class=\"fs-column grid-pane\">\n <app-report-component-note\n [data]=\"noteData()\"\n [windowNotes]=\"false\">\n </app-report-component-note>\n <!-- The params are seeded before the first render, so the grid's first read\n carries the tile's report filters. -->\n @if (params(); as params) {\n <fs-grid\n class=\"fs-flex\"\n [source]=\"source()\"\n [layout]=\"layout()\"\n [expansion]=\"expansion()\"\n [clearedFilter]=\"clearedFilter()\"\n (expansionChange)=\"setExpansion($event)\"\n [params]=\"params\"\n [controls]=\"controls()\"\n [formatter]=\"formatter()\"\n (layoutChange)=\"setLayout($event)\">\n <ng-template fsGridCell let-value let-field=\"field\" let-record=\"record\" let-text=\"text\">\n @if (value | fsReportGridCell: field : record : text : noteData() : formatContext(); as shown) {\n <!-- A cell that says why (a missing or zero prior) opens it on a\n click; no cell carries a native tooltip. -->\n @if (shown.title) {\n <span\n class=\"explained\"\n fsPopover\n trigger=\"click\"\n [template]=\"explanation\"\n [indication]=\"false\"\n [maxWidth]=\"320\">\n {{ shown.text }}\n </span>\n <ng-template #explanation>{{ shown.title }}</ng-template>\n } @else {\n <span>{{ shown.text }}</span>\n }\n }\n </ng-template>\n </fs-grid>\n }\n</div>\n", styles: [":host{display:block;height:100%}.grid-pane{height:100%;min-height:0}fs-grid{min-height:0}.explained{cursor:pointer;text-decoration:underline dotted;text-underline-offset:2px}\n"], dependencies: [{ kind: "component", type: FsGridComponent, selector: "fs-grid", inputs: ["source", "layout", "controls", "params", "expansion", "panel", "editorOpen", "formatter", "clearedFilter"], outputs: ["layoutChange", "expansionChange", "panelChange", "editorOpenChange"] }, { kind: "directive", type: FsGridCellDirective, selector: "[fsGridCell]" }, { kind: "directive", type: FsPopoverDirective, selector: "[fsPopover]", inputs: ["text", "template", "data", "leaveDelay", "showDelay", "maxWidth", "maxHeight", "wrapperClass", "autoShow", "autoClose", "loadingDiameter", "loading", "indication", "position", "theme", "size", "trigger", "enabled", "panel"], outputs: ["closed"], exportAs: ["fsPopover"] }, { kind: "component", type: ComponentNoteComponent, selector: "app-report-component-note", inputs: ["data", "windows", "windowDescriptions", "windowNotes"] }, { kind: "pipe", type: ReportGridCellPipe, name: "fsReportGridCell" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
110
144
|
}
|
|
111
145
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ComponentGridComponent, decorators: [{
|
|
112
146
|
type: Component,
|
|
113
147
|
args: [{ selector: 'app-report-component-grid', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
|
|
114
148
|
FsGridComponent,
|
|
115
149
|
FsGridCellDirective,
|
|
150
|
+
FsPopoverDirective,
|
|
116
151
|
ComponentNoteComponent,
|
|
117
152
|
ReportGridCellPipe,
|
|
118
|
-
], template: "<!-- The comparison and window note strip above the table, from the report\n line of the latest read; the windows' descriptions and notes go in each\n column's \"About this column\" instead. -->\n<div class=\"fs-column grid-pane\">\n <app-report-component-note\n [data]=\"noteData()\"\n [windowNotes]=\"false\">\n </app-report-component-note>\n <!-- The params are seeded before the first render, so the grid's first read\n carries the tile's report filters. -->\n @if (params(); as params) {\n <fs-grid\n class=\"fs-flex\"\n [source]=\"source()\"\n [layout]=\"layout()\"\n [expansion]=\"expansion()\"\n [clearedFilter]=\"clearedFilter()\"\n (expansionChange)=\"setExpansion($event)\"\n [params]=\"params\"\n [controls]=\"controls()\"\n [formatter]=\"formatter()\"\n (layoutChange)=\"setLayout($event)\">\n <ng-template fsGridCell let-value let-field=\"field\" let-record=\"record\" let-text=\"text\">\n @if (value | fsReportGridCell: field : record : text : noteData() : formatContext(); as shown) {\n <span
|
|
153
|
+
], template: "<!-- The comparison and window note strip above the table, from the report\n line of the latest read; the windows' descriptions and notes go in each\n column's \"About this column\" instead. -->\n<div class=\"fs-column grid-pane\">\n <app-report-component-note\n [data]=\"noteData()\"\n [windowNotes]=\"false\">\n </app-report-component-note>\n <!-- The params are seeded before the first render, so the grid's first read\n carries the tile's report filters. -->\n @if (params(); as params) {\n <fs-grid\n class=\"fs-flex\"\n [source]=\"source()\"\n [layout]=\"layout()\"\n [expansion]=\"expansion()\"\n [clearedFilter]=\"clearedFilter()\"\n (expansionChange)=\"setExpansion($event)\"\n [params]=\"params\"\n [controls]=\"controls()\"\n [formatter]=\"formatter()\"\n (layoutChange)=\"setLayout($event)\">\n <ng-template fsGridCell let-value let-field=\"field\" let-record=\"record\" let-text=\"text\">\n @if (value | fsReportGridCell: field : record : text : noteData() : formatContext(); as shown) {\n <!-- A cell that says why (a missing or zero prior) opens it on a\n click; no cell carries a native tooltip. -->\n @if (shown.title) {\n <span\n class=\"explained\"\n fsPopover\n trigger=\"click\"\n [template]=\"explanation\"\n [indication]=\"false\"\n [maxWidth]=\"320\">\n {{ shown.text }}\n </span>\n <ng-template #explanation>{{ shown.title }}</ng-template>\n } @else {\n <span>{{ shown.text }}</span>\n }\n }\n </ng-template>\n </fs-grid>\n }\n</div>\n", styles: [":host{display:block;height:100%}.grid-pane{height:100%;min-height:0}fs-grid{min-height:0}.explained{cursor:pointer;text-decoration:underline dotted;text-underline-offset:2px}\n"] }]
|
|
119
154
|
}] });
|
|
120
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LWdyaWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9yZXBvcnRzL2NvbXBvbmVudHMvY29tcG9uZW50LWdyaWQvY29tcG9uZW50LWdyaWQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9yZXBvcnRzL2NvbXBvbmVudHMvY29tcG9uZW50LWdyaWQvY29tcG9uZW50LWdyaWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQVUsUUFBUSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxHQUN4RixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVoRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsZUFBZSxFQUE2QixNQUFNLGtCQUFrQixDQUFDO0FBRW5HLE9BQU8sRUFBYyxNQUFNLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUxRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDakUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR2hELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzVELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBRXBGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzdELE9BQU8s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QUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1NBQ3BDLENBQUM7SUFDSixDQUFDO3dHQTdGVSxzQkFBc0I7NEZBQXRCLHNCQUFzQixvV0MxRG5DLHlzQ0E4QkEscUpEc0JJLGVBQWUsMlBBQ2YsbUJBQW1CLHlEQUNuQixzQkFBc0IsbUlBQ3RCLGtCQUFrQjs7NEZBR1Qsc0JBQXNCO2tCQWJsQyxTQUFTOytCQUNFLDJCQUEyQixtQkFHcEIsdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxJQUFJLFdBQ1A7d0JBQ1AsZUFBZTt3QkFDZixtQkFBbUI7d0JBQ25CLHNCQUFzQjt3QkFDdEIsa0JBQWtCO3FCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIERlc3Ryb3lSZWYsIE9uSW5pdCwgY29tcHV0ZWQsIGluamVjdCwgaW5wdXQsIHNpZ25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5cbmltcG9ydCB7IEZzR3JpZENlbGxEaXJlY3RpdmUsIEZzR3JpZENvbXBvbmVudCwgR3JpZEV4cGFuc2lvbiwgR3JpZExheW91dCB9IGZyb20gJ0BmaXJlc3RpdGNoL2dyaWQnO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBmaWx0ZXIsIG1hcCwgb2YsIHN3aXRjaE1hcCwgdGFwLCB0aW1lciB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBSZXBvcnREYXRhIH0gZnJvbSAnLi4vLi4vZGF0YS9yZXBvcnQuZGF0YSc7XG5pbXBvcnQgeyBSZXBvcnRHcmlkU291cmNlIH0gZnJvbSAnLi4vLi4vZGF0YS9yZXBvcnQtZ3JpZC1zb3VyY2UnO1xuaW1wb3J0IHsgZm9sbG93c0dyb3VwQnkgfSBmcm9tICcuLi8uLi9ncm91cC1ieSc7XG5pbXBvcnQgeyBSZXBvcnRHcmlkUGFyYW1zIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9yZXBvcnQtZ3JpZC1wYXJhbXMuaW50ZXJmYWNlJztcbmltcG9ydCB7IFJlcG9ydENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvcmVwb3J0LmludGVyZmFjZSc7XG5pbXBvcnQgeyBSZXBvcnRGaWx0ZXJTdGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9yZXBvcnQtZmlsdGVyLXN0YXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgVElMRV9SRUZSRVNIX0RFQk9VTkNFX01TIH0gZnJvbSAnLi4vLi4vdGlsZS1sb2Fkcyc7XG5pbXBvcnQgeyBDb21wb25lbnROb3RlQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50LW5vdGUvY29tcG9uZW50LW5vdGUuY29tcG9uZW50JztcblxuaW1wb3J0IHsgUmVwb3J0R3JpZENlbGxQaXBlIH0gZnJvbSAnLi9yZXBvcnQtZ3JpZC1jZWxsLnBpcGUnO1xuaW1wb3J0IHsgcmVwb3J0R3JpZEZvcm1hdHRlciB9IGZyb20gJy4vcmVwb3J0LWdyaWQtZm9ybWF0dGVyJztcblxuXG4vLyBBIGdyaWQgdGlsZTogZnMtZ3JpZCBvdmVyIHRoZSB0aWxlJ3Mgcm93cywgcmVhZCB0aHJvdWdoIFJlcG9ydEdyaWRTb3VyY2UuXG4vL1xuLy8gLSBUaGUgcGFyYW1zICh0aGUgcmVwb3J0IGZpbHRlcnMgdGhlIHRpbGUgcmVzb2x2ZXMgdG8gYW5kIHRoZSAnYW55J1xuLy8gICBncm91cHMpIGFyZSBzZWVkZWQgYmVmb3JlIHRoZSBmaXJzdCByZW5kZXIsIHNvIG5vIHJlYWQgZ29lcyBvdXQgd2l0aG91dFxuLy8gICB0aGVtLiBBZnRlciB0aGF0IGEgY2hhbmdlIHRvIG9uZSBvZiB0aGUgdGlsZSdzIGZpbHRlciBncm91cHMgc2V0dGxlcyBmb3Jcbi8vICAgVElMRV9SRUZSRVNIX0RFQk9VTkNFX01TLCBzbyBhIHN3ZWVwIG9mIGNoYW5nZXMgY29zdHMgb25lIHJlYWQ7IG9uZSBzZW50XG4vLyAgIHVuZGVyIGFuIG9sZGVyIHN0YXRlIHZlcnNpb24gaXMgZHJvcHBlZC5cbi8vIC0gVGhlIGxheW91dCBvbiBzY3JlZW4gaXMgdGhlIHN0YXRlIHNlcnZpY2UncyAoZ3JpZExheW91dCk6IHRoZSB2aWV3ZXInc1xuLy8gICBvd24gd2hpbGUgdGhleSBjaGFuZ2VkIGl0IGZyb20gdGhlIGxheW91dCBhdXRob3JlZCBub3csIGVsc2UgdGhlXG4vLyAgIGF1dGhvcmVkIG9uZS4gSXQgb3V0bGl2ZXMgYSBwYWdlIHN3aXRjaCwgYW5kIHRoZSBjaGF0IHJlYWRzIGl0LiBTbyBkb1xuLy8gICB0aGUgZ3JvdXBzIHRoZSB2aWV3ZXIgbGVmdCBvcGVuIChncmlkRXhwYW5zaW9uKSwgd2hpY2ggYSBDbGVhciBsZWF2ZXMuXG4vLyAtIEEgc3RhdGUgdmVyc2lvbiBtb3ZlIChDbGVhciBmaWx0ZXJzLCBhIHNhdmVkIGZpbHRlcikgc2tpcHMgdGhlIHdhaXQ7IHRoZVxuLy8gICByZXNldCBoYXMgcHV0IHRoZSBhdXRob3JlZCBsYXlvdXQgYmFjayBpbiB0aGUgc2FtZSB0aWNrLCBzbyBpdCBjb3N0cyBvbmVcbi8vICAgcmVhZC5cbi8vIC0gQSB0YWJsZSB0aGF0IGZvbGxvd3MgdGhlIHJlcG9ydCdzIGdyb3VwLWJ5IChmb2xsb3dzR3JvdXBCeSkgc2VuZHMgaXRzXG4vLyAgIGdyYWluLCBhbmQgcmVhZHMgYWdhaW4gYXQgb25jZSB3aGVuIGl0IGNoYW5nZXMuIFRoZSBzdGF0ZSBzZXJ2aWNlIGhhc1xuLy8gICBtb3ZlZCBpdHMgZmlsdGVyIG9uIHRoZSBncm91cC1ieSdzIGZpZWxkIHRvIHRoZSBuZXcgZ3JhaW4gYnkgdGhlbiwgb3Jcbi8vICAgdGFrZW4gaXQgb3V0IChjbGVhcmVkRmlsdGVyLCB3aGljaCB0aGUgc3RhdHVzIGxpbmUgbmFtZXMpLCBzbyBvbmUgcmVhZFxuLy8gICBnb2VzIG91dCBhbmQgbm90aGluZyBwYWludHMgdW5maWx0ZXJlZC5cbi8vIC0gZnMtZ3JpZCBjb21wYXJlcyB0aGUgbGF5b3V0IGFuZCBwYXJhbXMgYnkgdmFsdWU6IGEgY2xvbmVkIHZhbHVlIG5ldmVyXG4vLyAgIHJlYWRzIGFnYWluLlxuLy8gLSBBbiBvdXRwdXQncyBkZXRhaWwgY2VsbCBpcyBkcmF3biBieSBmc1JlcG9ydEdyaWRDZWxsLCBzbyBhIGNoYW5nZSB0ZWxsc1xuLy8gICBhIG1pc3NpbmcgcHJpb3IgZnJvbSBhIHplcm8gb25lIGFuZCBzYXlzIHdoeSBvbiBob3ZlciwgYXMgYSBsaXN0IGRvZXMuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtcmVwb3J0LWNvbXBvbmVudC1ncmlkJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NvbXBvbmVudC1ncmlkLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY29tcG9uZW50LWdyaWQuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBGc0dyaWRDb21wb25lbnQsXG4gICAgRnNHcmlkQ2VsbERpcmVjdGl2ZSxcbiAgICBDb21wb25lbnROb3RlQ29tcG9uZW50LFxuICAgIFJlcG9ydEdyaWRDZWxsUGlwZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQ29tcG9uZW50R3JpZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgcHVibGljIHJlYWRvbmx5IHJlcG9ydElkID0gaW5wdXQucmVxdWlyZWQ8bnVtYmVyPigpO1xuICBwdWJsaWMgcmVhZG9ubHkgY29tcG9uZW50ID0gaW5wdXQucmVxdWlyZWQ8UmVwb3J0Q29tcG9uZW50PigpO1xuXG4gIHB1YmxpYyByZWFkb25seSBwYXJhbXMgPSBzaWduYWw8UmVwb3J0R3JpZFBhcmFtcyB8IG51bGw+KG51bGwpO1xuICBwdWJsaWMgcmVhZG9ubHkgY29udHJvbHMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmNvbXBvbmVudCgpLmNvbmZpZz8uY29udHJvbHMgPz8ge30pO1xuICBwdWJsaWMgcmVhZG9ubHkgc291cmNlID0gY29tcHV0ZWQoKCkgPT4gbmV3IFJlcG9ydEdyaWRTb3VyY2UodGhpcy5fcmVwb3J0RGF0YSwgdGhpcy5yZXBvcnRJZCgpLCB0aGlzLl9jb21wb25lbnRJZCgpLCB7XG4gICAgbG9jYWxlOiAoKSA9PiB0aGlzLl9maWx0ZXJTdGF0ZS5mb3JtYXRDb250ZXh0KCkubG9jYWxlLFxuICB9KSk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGxheW91dCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuX2ZpbHRlclN0YXRlLmdyaWRMYXlvdXQodGhpcy5jb21wb25lbnQoKSkpO1xuICBwdWJsaWMgcmVhZG9ubHkgY2xlYXJlZEZpbHRlciA9IGNvbXB1dGVkKCgpID0+IHRoaXMuX2ZpbHRlclN0YXRlLmdyaWRDbGVhcmVkRmlsdGVyKHRoaXMuY29tcG9uZW50KCkpKTtcbiAgLy8gUmVhZCBvbmNlOiBmcy1ncmlkIG93bnMgdGhlIG9wZW4gZ3JvdXBzIGZyb20gdGhlbiBvbiBhbmQgd3JpdGVzIHRoZW0gb3V0LlxuICBwdWJsaWMgcmVhZG9ubHkgZXhwYW5zaW9uID0gc2lnbmFsPEdyaWRFeHBhbnNpb24gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbiAgcHVibGljIHJlYWRvbmx5IG5vdGVEYXRhID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5zb3VyY2UoKS5yZXBvcnQoKSk7XG4gIHB1YmxpYyByZWFkb25seSBmb3JtYXRDb250ZXh0ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5fZmlsdGVyU3RhdGUuZm9ybWF0Q29udGV4dCgpKTtcbiAgcHVibGljIHJlYWRvbmx5IGZvcm1hdHRlciA9IGNvbXB1dGVkKCgpID0+IHJlcG9ydEdyaWRGb3JtYXR0ZXIoe1xuICAgIGZvcm1hdDogdGhpcy5fZmlsdGVyU3RhdGUuZm9ybWF0Q29udGV4dCgpLFxuICAgIHRpbWV6b25lOiB0aGlzLl9maWx0ZXJTdGF0ZS50aW1lem9uZSgpLFxuICAgIHJlcG9ydDogdGhpcy5zb3VyY2UoKS5yZXBvcnQoKSxcbiAgfSkpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2NvbXBvbmVudElkID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5jb21wb25lbnQoKS5pZCk7XG4gIHByaXZhdGUgX3JlcG9ydERhdGEgPSBpbmplY3QoUmVwb3J0RGF0YSk7XG4gIHByaXZhdGUgX2ZpbHRlclN0YXRlID0gaW5qZWN0KFJlcG9ydEZpbHRlclN0YXRlU2VydmljZSk7XG4gIHByaXZhdGUgX2Rlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG4gIC8vIFRoZSBzdGF0ZSB2ZXJzaW9uIHRoZSBwYXJhbXMgb24gc2NyZWVuIHdlcmUgcmVhZCB1bmRlci5cbiAgcHJpdmF0ZSBfcGFyYW1zVmVyc2lvbiA9IDA7XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZXhwYW5zaW9uLnNldCh0aGlzLl9maWx0ZXJTdGF0ZS5ncmlkRXhwYW5zaW9uKHRoaXMuY29tcG9uZW50KCkpKTtcbiAgICB0aGlzLl9pbml0KCk7XG4gIH1cblxuICBwdWJsaWMgc2V0TGF5b3V0KGxheW91dDogR3JpZExheW91dCk6IHZvaWQge1xuICAgIHRoaXMuX2ZpbHRlclN0YXRlLnNldEdyaWRMYXlvdXQodGhpcy5jb21wb25lbnQoKSwgbGF5b3V0KTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRFeHBhbnNpb24oZXhwYW5zaW9uOiBHcmlkRXhwYW5zaW9uIHwgdW5kZWZpbmVkKTogdm9pZCB7XG4gICAgdGhpcy5fZmlsdGVyU3RhdGUuc2V0R3JpZEV4cGFuc2lvbih0aGlzLmNvbXBvbmVudCgpLCBleHBhbnNpb24pO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLl9wYXJhbXNWZXJzaW9uID0gdGhpcy5fZmlsdGVyU3RhdGUuc3RhdGVWZXJzaW9uKCk7XG4gICAgdGhpcy5wYXJhbXMuc2V0KHRoaXMuX3JlYWRQYXJhbXMoKSk7XG5cbiAgICB0aGlzLl9maWx0ZXJTdGF0ZS5jaGFuZ2VzRm9yKHRoaXMuY29tcG9uZW50KCkpXG4gICAgICAucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMuX3NldHRsZWQkKCkpLFxuICAgICAgICB0YXAoKCkgPT4gdGhpcy5fYXBwbHlQYXJhbXMoKSksXG4gICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLl9kZXN0cm95UmVmKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcblxuICAgIGlmIChmb2xsb3dzR3JvdXBCeSh0aGlzLmNvbXBvbmVudCgpKSkge1xuICAgICAgdGhpcy5fZmlsdGVyU3RhdGUuZnJlcXVlbmN5Q2hhbmdlcygpXG4gICAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLl9kZXN0cm95UmVmKSlcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLl9hcHBseVBhcmFtcygpKTtcbiAgICB9XG4gIH1cblxuICAvLyBBIGNoYW5nZSwgb25jZSBpdCBoYXMgc2V0dGxlZDogYXQgb25jZSB3aGVuIHRoZSBzdGF0ZSB2ZXJzaW9uIG1vdmVkLFxuICAvLyBlbHNlIGFmdGVyIHRoZSBkZWJvdW5jZTsgZHJvcHBlZCB3aGVuIHRoZSB2ZXJzaW9uIG1vdmVzIHdoaWxlIGl0IHdhaXRzLFxuICAvLyBzaW5jZSB0aGF0IG1vdmUgYnJpbmdzIGl0cyBvd24gY2hhbmdlLlxuICBwcml2YXRlIF9zZXR0bGVkJCgpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICBjb25zdCB2ZXJzaW9uID0gdGhpcy5fZmlsdGVyU3RhdGUuc3RhdGVWZXJzaW9uKCk7XG4gICAgY29uc3QgbW92ZWQgPSB2ZXJzaW9uICE9PSB0aGlzLl9wYXJhbXNWZXJzaW9uO1xuXG4gICAgcmV0dXJuIChtb3ZlZCA/IG9mKDApIDogdGltZXIoVElMRV9SRUZSRVNIX0RFQk9VTkNFX01TKSlcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoKCkgPT4gdGhpcy5fZmlsdGVyU3RhdGUuc3RhdGVWZXJzaW9uKCkgPT09IHZlcnNpb24pLFxuICAgICAgICBtYXAoKCkgPT4gdW5kZWZpbmVkKSxcbiAgICAgICk7XG4gIH1cblxuICBwcml2YXRlIF9hcHBseVBhcmFtcygpOiB2b2lkIHtcbiAgICB0aGlzLl9wYXJhbXNWZXJzaW9uID0gdGhpcy5fZmlsdGVyU3RhdGUuc3RhdGVWZXJzaW9uKCk7XG4gICAgdGhpcy5wYXJhbXMuc2V0KHRoaXMuX3JlYWRQYXJhbXMoKSk7XG4gIH1cblxuICAvLyBUaGUgdGlsZSdzIHJlcG9ydCBmaWx0ZXJzLCAnYW55JyBncm91cHMgYW5kIGdyb3VwLWJ5IGdyYWluIGFzIHRoZXkgc3RhbmRcbiAgLy8gKHRpbGVTdGF0ZSgpKS5cbiAgcHJpdmF0ZSBfcmVhZFBhcmFtcygpOiBSZXBvcnRHcmlkUGFyYW1zIHtcbiAgICBjb25zdCBjb21wb25lbnQgPSB0aGlzLmNvbXBvbmVudCgpO1xuICAgIGNvbnN0IHsgbWF0Y2hBbnlHcm91cElkcywgZnJlcXVlbmN5IH0gPSB0aGlzLl9maWx0ZXJTdGF0ZS50aWxlU3RhdGUoY29tcG9uZW50KTtcblxuICAgIHJldHVybiB7XG4gICAgICBmaWx0ZXJzOiB0aGlzLl9maWx0ZXJTdGF0ZS5yZXNvbHZlRm9yQ29tcG9uZW50KGNvbXBvbmVudCksXG4gICAgICAuLi4obWF0Y2hBbnlHcm91cElkcz8ubGVuZ3RoID8geyBtYXRjaEFueUdyb3VwSWRzIH0gOiB7fSksXG4gICAgICAuLi4oZnJlcXVlbmN5ID8geyBmcmVxdWVuY3kgfSA6IHt9KSxcbiAgICB9O1xuICB9XG5cbn1cbiIsIjwhLS0gVGhlIGNvbXBhcmlzb24gYW5kIHdpbmRvdyBub3RlIHN0cmlwIGFib3ZlIHRoZSB0YWJsZSwgZnJvbSB0aGUgcmVwb3J0XG4gICAgIGxpbmUgb2YgdGhlIGxhdGVzdCByZWFkOyB0aGUgd2luZG93cycgZGVzY3JpcHRpb25zIGFuZCBub3RlcyBnbyBpbiBlYWNoXG4gICAgIGNvbHVtbidzIFwiQWJvdXQgdGhpcyBjb2x1bW5cIiBpbnN0ZWFkLiAtLT5cbjxkaXYgY2xhc3M9XCJmcy1jb2x1bW4gZ3JpZC1wYW5lXCI+XG4gIDxhcHAtcmVwb3J0LWNvbXBvbmVudC1ub3RlXG4gICAgW2RhdGFdPVwibm90ZURhdGEoKVwiXG4gICAgW3dpbmRvd05vdGVzXT1cImZhbHNlXCI+XG4gIDwvYXBwLXJlcG9ydC1jb21wb25lbnQtbm90ZT5cbiAgPCEtLSBUaGUgcGFyYW1zIGFyZSBzZWVkZWQgYmVmb3JlIHRoZSBmaXJzdCByZW5kZXIsIHNvIHRoZSBncmlkJ3MgZmlyc3QgcmVhZFxuICAgICAgIGNhcnJpZXMgdGhlIHRpbGUncyByZXBvcnQgZmlsdGVycy4gLS0+XG4gIEBpZiAocGFyYW1zKCk7IGFzIHBhcmFtcykge1xuICAgIDxmcy1ncmlkXG4gICAgICBjbGFzcz1cImZzLWZsZXhcIlxuICAgICAgW3NvdXJjZV09XCJzb3VyY2UoKVwiXG4gICAgICBbbGF5b3V0XT1cImxheW91dCgpXCJcbiAgICAgIFtleHBhbnNpb25dPVwiZXhwYW5zaW9uKClcIlxuICAgICAgW2NsZWFyZWRGaWx0ZXJdPVwiY2xlYXJlZEZpbHRlcigpXCJcbiAgICAgIChleHBhbnNpb25DaGFuZ2UpPVwic2V0RXhwYW5zaW9uKCRldmVudClcIlxuICAgICAgW3BhcmFtc109XCJwYXJhbXNcIlxuICAgICAgW2NvbnRyb2xzXT1cImNvbnRyb2xzKClcIlxuICAgICAgW2Zvcm1hdHRlcl09XCJmb3JtYXR0ZXIoKVwiXG4gICAgICAobGF5b3V0Q2hhbmdlKT1cInNldExheW91dCgkZXZlbnQpXCI+XG4gICAgICA8bmctdGVtcGxhdGUgZnNHcmlkQ2VsbCBsZXQtdmFsdWUgbGV0LWZpZWxkPVwiZmllbGRcIiBsZXQtcmVjb3JkPVwicmVjb3JkXCIgbGV0LXRleHQ9XCJ0ZXh0XCI+XG4gICAgICAgIEBpZiAodmFsdWUgfCBmc1JlcG9ydEdyaWRDZWxsOiBmaWVsZCA6IHJlY29yZCA6IHRleHQgOiBub3RlRGF0YSgpIDogZm9ybWF0Q29udGV4dCgpOyBhcyBzaG93bikge1xuICAgICAgICAgIDxzcGFuIFthdHRyLnRpdGxlXT1cInNob3duLnRpdGxlXCI+e3sgc2hvd24udGV4dCB9fTwvc3Bhbj5cbiAgICAgICAgfVxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2ZzLWdyaWQ+XG4gIH1cbjwvZGl2PlxuIl19
|
|
155
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LWdyaWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9yZXBvcnRzL2NvbXBvbmVudHMvY29tcG9uZW50LWdyaWQvY29tcG9uZW50LWdyaWQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9yZXBvcnRzL2NvbXBvbmVudHMvY29tcG9uZW50LWdyaWQvY29tcG9uZW50LWdyaWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFVLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsU0FBUyxHQUNySCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVoRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsZUFBZSxFQUF1QyxNQUFNLGtCQUFrQixDQUFDO0FBQzdHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXpELE9BQU8sRUFBYyxNQUFNLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUxRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDakUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR2hELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2hGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ3RGLE9BQU8sRUFB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LEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFL0UsT0FBTztZQUNMLE9BQU8sRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsQ0FBQztZQUN6RCxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLGdCQUFnQixFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUN6RCxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7U0FDcEMsQ0FBQztJQUNKLENBQUM7d0dBN0hVLHNCQUFzQjs0RkFBdEIsc0JBQXNCLG9XQ2pFbkMsb3VEQTZDQSwwT0RhSSxlQUFlLDJQQUNmLG1CQUFtQix5REFDbkIsa0JBQWtCLGlWQUNsQixzQkFBc0IsbUlBQ3RCLGtCQUFrQjs7NEZBR1Qsc0JBQXNCO2tCQWRsQyxTQUFTOytCQUNFLDJCQUEyQixtQkFHcEIsdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxJQUFJLFdBQ1A7d0JBQ1AsZUFBZTt3QkFDZixtQkFBbUI7d0JBQ25CLGtCQUFrQjt3QkFDbEIsc0JBQXNCO3dCQUN0QixrQkFBa0I7cUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRGVzdHJveVJlZiwgSW5qZWN0b3IsIE9uSW5pdCwgY29tcHV0ZWQsIGVmZmVjdCwgaW5qZWN0LCBpbnB1dCwgc2lnbmFsLCB1bnRyYWNrZWQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuXG5pbXBvcnQgeyBGc0dyaWRDZWxsRGlyZWN0aXZlLCBGc0dyaWRDb21wb25lbnQsIEdyaWRFeHBhbnNpb24sIEdyaWRMYXlvdXQsIEdyaWROb3RlIH0gZnJvbSAnQGZpcmVzdGl0Y2gvZ3JpZCc7XG5pbXBvcnQgeyBGc1BvcG92ZXJEaXJlY3RpdmUgfSBmcm9tICdAZmlyZXN0aXRjaC9wb3BvdmVyJztcblxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgZmlsdGVyLCBtYXAsIG9mLCBzd2l0Y2hNYXAsIHRhcCwgdGltZXIgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgUmVwb3J0RGF0YSB9IGZyb20gJy4uLy4uL2RhdGEvcmVwb3J0LmRhdGEnO1xuaW1wb3J0IHsgUmVwb3J0R3JpZFNvdXJjZSB9IGZyb20gJy4uLy4uL2RhdGEvcmVwb3J0LWdyaWQtc291cmNlJztcbmltcG9ydCB7IGZvbGxvd3NHcm91cEJ5IH0gZnJvbSAnLi4vLi4vZ3JvdXAtYnknO1xuaW1wb3J0IHsgUmVwb3J0R3JpZFBhcmFtcyB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvcmVwb3J0LWdyaWQtcGFyYW1zLmludGVyZmFjZSc7XG5pbXBvcnQgeyBSZXBvcnRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3JlcG9ydC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgYXV0aG9yZWRHcmlkTGF5b3V0LCBwcnVuZWRHcmlkTGF5b3V0IH0gZnJvbSAnLi4vLi4vcmVwb3J0LWdyaWQtbGF5b3V0JztcbmltcG9ydCB7IFJlcG9ydEZpbHRlclN0YXRlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3JlcG9ydC1maWx0ZXItc3RhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBUSUxFX1JFRlJFU0hfREVCT1VOQ0VfTVMgfSBmcm9tICcuLi8uLi90aWxlLWxvYWRzJztcbmltcG9ydCB7IENvbXBvbmVudE5vdGVDb21wb25lbnQgfSBmcm9tICcuLi9jb21wb25lbnQtbm90ZS9jb21wb25lbnQtbm90ZS5jb21wb25lbnQnO1xuXG5pbXBvcnQgeyBSZXBvcnRHcmlkQ2VsbFBpcGUgfSBmcm9tICcuL3JlcG9ydC1ncmlkLWNlbGwucGlwZSc7XG5pbXBvcnQgeyByZXBvcnRHcmlkRm9ybWF0dGVyIH0gZnJvbSAnLi9yZXBvcnQtZ3JpZC1mb3JtYXR0ZXInO1xuXG5cbi8vIEEgZ3JpZCB0aWxlOiBmcy1ncmlkIG92ZXIgdGhlIHRpbGUncyByb3dzLCByZWFkIHRocm91Z2ggUmVwb3J0R3JpZFNvdXJjZS5cbi8vXG4vLyAtIFRoZSBwYXJhbXMgKHRoZSByZXBvcnQgZmlsdGVycyB0aGUgdGlsZSByZXNvbHZlcyB0byBhbmQgdGhlICdhbnknXG4vLyAgIGdyb3VwcykgYXJlIHNlZWRlZCBiZWZvcmUgdGhlIGZpcnN0IHJlbmRlciwgc28gbm8gcmVhZCBnb2VzIG91dCB3aXRob3V0XG4vLyAgIHRoZW0uIEFmdGVyIHRoYXQgYSBjaGFuZ2UgdG8gb25lIG9mIHRoZSB0aWxlJ3MgZmlsdGVyIGdyb3VwcyBzZXR0bGVzIGZvclxuLy8gICBUSUxFX1JFRlJFU0hfREVCT1VOQ0VfTVMsIHNvIGEgc3dlZXAgb2YgY2hhbmdlcyBjb3N0cyBvbmUgcmVhZDsgb25lIHNlbnRcbi8vICAgdW5kZXIgYW4gb2xkZXIgc3RhdGUgdmVyc2lvbiBpcyBkcm9wcGVkLlxuLy8gLSBUaGUgbGF5b3V0IG9uIHNjcmVlbiBpcyB0aGUgc3RhdGUgc2VydmljZSdzIChncmlkTGF5b3V0KTogdGhlIHZpZXdlcidzXG4vLyAgIG93biB3aGlsZSB0aGV5IGNoYW5nZWQgaXQgZnJvbSB0aGUgbGF5b3V0IGF1dGhvcmVkIG5vdywgZWxzZSB0aGVcbi8vICAgYXV0aG9yZWQgb25lLiBJdCBvdXRsaXZlcyBhIHBhZ2Ugc3dpdGNoLCBhbmQgdGhlIGNoYXQgcmVhZHMgaXQuIFNvIGRvXG4vLyAgIHRoZSBncm91cHMgdGhlIHZpZXdlciBsZWZ0IG9wZW4gKGdyaWRFeHBhbnNpb24pLCB3aGljaCBhIENsZWFyIGxlYXZlcy5cbi8vIC0gQSBzdGF0ZSB2ZXJzaW9uIG1vdmUgKENsZWFyIGZpbHRlcnMsIGEgc2F2ZWQgZmlsdGVyKSBza2lwcyB0aGUgd2FpdDsgdGhlXG4vLyAgIHJlc2V0IGhhcyBwdXQgdGhlIGF1dGhvcmVkIGxheW91dCBiYWNrIGluIHRoZSBzYW1lIHRpY2ssIHNvIGl0IGNvc3RzIG9uZVxuLy8gICByZWFkLlxuLy8gLSBBIHRhYmxlIHRoYXQgZm9sbG93cyB0aGUgcmVwb3J0J3MgZ3JvdXAtYnkgKGZvbGxvd3NHcm91cEJ5KSBzZW5kcyBpdHNcbi8vICAgZ3JhaW4sIGFuZCByZWFkcyBhZ2FpbiBhdCBvbmNlIHdoZW4gaXQgY2hhbmdlcy4gVGhlIHN0YXRlIHNlcnZpY2UgaGFzXG4vLyAgIG1vdmVkIGl0cyBmaWx0ZXIgb24gdGhlIGdyb3VwLWJ5J3MgZmllbGQgdG8gdGhlIG5ldyBncmFpbiBieSB0aGVuLCBvclxuLy8gICB0YWtlbiBpdCBvdXQgKGNsZWFyZWRGaWx0ZXIsIHdoaWNoIHRoZSBzdGF0dXMgbGluZSBuYW1lcyksIHNvIG9uZSByZWFkXG4vLyAgIGdvZXMgb3V0IGFuZCBub3RoaW5nIHBhaW50cyB1bmZpbHRlcmVkLlxuLy8gLSBmcy1ncmlkIGNvbXBhcmVzIHRoZSBsYXlvdXQgYW5kIHBhcmFtcyBieSB2YWx1ZTogYSBjbG9uZWQgdmFsdWUgbmV2ZXJcbi8vICAgcmVhZHMgYWdhaW4uXG4vLyAtIEFuIG91dHB1dCdzIGRldGFpbCBjZWxsIGlzIGRyYXduIGJ5IGZzUmVwb3J0R3JpZENlbGwsIHNvIGEgY2hhbmdlIHRlbGxzXG4vLyAgIGEgbWlzc2luZyBwcmlvciBmcm9tIGEgemVybyBvbmUsIGFzIGEgbGlzdCBkb2VzOyBhIGNsaWNrIG9uIGl0IG9wZW5zXG4vLyAgIHdoeSwgYXMgbm8gY2VsbCBjYXJyaWVzIGEgbmF0aXZlIHRvb2x0aXAuXG4vLyAtIEFmdGVyIHRoZSB0aWxlJ3MgZmlyc3QgcmVhZCwgdGhlIHZpZXdlcidzIGxheW91dCBsb3NlcyB0aGUgZmlsdGVycyBhbmRcbi8vICAgc29ydCB0ZXJtcyB0aGF0IHJlYWQgcmVmdXNlZCAocHJ1bmVkR3JpZExheW91dCksIHNvIHN0YWxlIHRpbGUgc3RhdGVcbi8vICAgKGEgZmllbGQgdGhlIEFJIHRvb2sgb3V0IG9mIHRoZSBxdWVyeSkgZG9lcyBub3QgbGluZ2VyLlxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLXJlcG9ydC1jb21wb25lbnQtZ3JpZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9jb21wb25lbnQtZ3JpZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NvbXBvbmVudC1ncmlkLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgRnNHcmlkQ29tcG9uZW50LFxuICAgIEZzR3JpZENlbGxEaXJlY3RpdmUsXG4gICAgRnNQb3BvdmVyRGlyZWN0aXZlLFxuICAgIENvbXBvbmVudE5vdGVDb21wb25lbnQsXG4gICAgUmVwb3J0R3JpZENlbGxQaXBlLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBDb21wb25lbnRHcmlkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICBwdWJsaWMgcmVhZG9ubHkgcmVwb3J0SWQgPSBpbnB1dC5yZXF1aXJlZDxudW1iZXI+KCk7XG4gIHB1YmxpYyByZWFkb25seSBjb21wb25lbnQgPSBpbnB1dC5yZXF1aXJlZDxSZXBvcnRDb21wb25lbnQ+KCk7XG5cbiAgcHVibGljIHJlYWRvbmx5IHBhcmFtcyA9IHNpZ25hbDxSZXBvcnRHcmlkUGFyYW1zIHwgbnVsbD4obnVsbCk7XG4gIHB1YmxpYyByZWFkb25seSBjb250cm9scyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuY29tcG9uZW50KCkuY29uZmlnPy5jb250cm9scyA/PyB7fSk7XG4gIHB1YmxpYyByZWFkb25seSBzb3VyY2UgPSBjb21wdXRlZCgoKSA9PiBuZXcgUmVwb3J0R3JpZFNvdXJjZSh0aGlzLl9yZXBvcnREYXRhLCB0aGlzLnJlcG9ydElkKCksIHRoaXMuX2NvbXBvbmVudElkKCksIHtcbiAgICBsb2NhbGU6ICgpID0+IHRoaXMuX2ZpbHRlclN0YXRlLmZvcm1hdENvbnRleHQoKS5sb2NhbGUsXG4gIH0pKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgbGF5b3V0ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5fZmlsdGVyU3RhdGUuZ3JpZExheW91dCh0aGlzLmNvbXBvbmVudCgpKSk7XG4gIHB1YmxpYyByZWFkb25seSBjbGVhcmVkRmlsdGVyID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5fZmlsdGVyU3RhdGUuZ3JpZENsZWFyZWRGaWx0ZXIodGhpcy5jb21wb25lbnQoKSkpO1xuICAvLyBSZWFkIG9uY2U6IGZzLWdyaWQgb3ducyB0aGUgb3BlbiBncm91cHMgZnJvbSB0aGVuIG9uIGFuZCB3cml0ZXMgdGhlbSBvdXQuXG4gIHB1YmxpYyByZWFkb25seSBleHBhbnNpb24gPSBzaWduYWw8R3JpZEV4cGFuc2lvbiB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgbm90ZURhdGEgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnNvdXJjZSgpLnJlcG9ydCgpKTtcbiAgcHVibGljIHJlYWRvbmx5IGZvcm1hdENvbnRleHQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLl9maWx0ZXJTdGF0ZS5mb3JtYXRDb250ZXh0KCkpO1xuICBwdWJsaWMgcmVhZG9ubHkgZm9ybWF0dGVyID0gY29tcHV0ZWQoKCkgPT4gcmVwb3J0R3JpZEZvcm1hdHRlcih7XG4gICAgZm9ybWF0OiB0aGlzLl9maWx0ZXJTdGF0ZS5mb3JtYXRDb250ZXh0KCksXG4gICAgdGltZXpvbmU6IHRoaXMuX2ZpbHRlclN0YXRlLnRpbWV6b25lKCksXG4gICAgcmVwb3J0OiB0aGlzLnNvdXJjZSgpLnJlcG9ydCgpLFxuICB9KSk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfY29tcG9uZW50SWQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmNvbXBvbmVudCgpLmlkKTtcbiAgcHJpdmF0ZSBfcmVwb3J0RGF0YSA9IGluamVjdChSZXBvcnREYXRhKTtcbiAgcHJpdmF0ZSBfZmlsdGVyU3RhdGUgPSBpbmplY3QoUmVwb3J0RmlsdGVyU3RhdGVTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBfZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcbiAgcHJpdmF0ZSBfaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuICAvLyBXaGV0aGVyIHRoZSBmaXJzdCByZWFkJ3Mgbm90ZXMgaGF2ZSBwcnVuZWQgdGhlIHZpZXdlcidzIGxheW91dC5cbiAgcHJpdmF0ZSBfaXNQcnVuZWQgPSBmYWxzZTtcbiAgLy8gVGhlIHN0YXRlIHZlcnNpb24gdGhlIHBhcmFtcyBvbiBzY3JlZW4gd2VyZSByZWFkIHVuZGVyLlxuICBwcml2YXRlIF9wYXJhbXNWZXJzaW9uID0gMDtcblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5leHBhbnNpb24uc2V0KHRoaXMuX2ZpbHRlclN0YXRlLmdyaWRFeHBhbnNpb24odGhpcy5jb21wb25lbnQoKSkpO1xuICAgIHRoaXMuX2luaXQoKTtcbiAgICB0aGlzLl9wcnVuZUFmdGVyRmlyc3RSZWFkKCk7XG4gIH1cblxuICBwdWJsaWMgc2V0TGF5b3V0KGxheW91dDogR3JpZExheW91dCk6IHZvaWQge1xuICAgIHRoaXMuX2ZpbHRlclN0YXRlLnNldEdyaWRMYXlvdXQodGhpcy5jb21wb25lbnQoKSwgbGF5b3V0KTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRFeHBhbnNpb24oZXhwYW5zaW9uOiBHcmlkRXhwYW5zaW9uIHwgdW5kZWZpbmVkKTogdm9pZCB7XG4gICAgdGhpcy5fZmlsdGVyU3RhdGUuc2V0R3JpZEV4cGFuc2lvbih0aGlzLmNvbXBvbmVudCgpLCBleHBhbnNpb24pO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLl9wYXJhbXNWZXJzaW9uID0gdGhpcy5fZmlsdGVyU3RhdGUuc3RhdGVWZXJzaW9uKCk7XG4gICAgdGhpcy5wYXJhbXMuc2V0KHRoaXMuX3JlYWRQYXJhbXMoKSk7XG5cbiAgICB0aGlzLl9maWx0ZXJTdGF0ZS5jaGFuZ2VzRm9yKHRoaXMuY29tcG9uZW50KCkpXG4gICAgICAucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMuX3NldHRsZWQkKCkpLFxuICAgICAgICB0YXAoKCkgPT4gdGhpcy5fYXBwbHlQYXJhbXMoKSksXG4gICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLl9kZXN0cm95UmVmKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcblxuICAgIGlmIChmb2xsb3dzR3JvdXBCeSh0aGlzLmNvbXBvbmVudCgpKSkge1xuICAgICAgdGhpcy5fZmlsdGVyU3RhdGUuZnJlcXVlbmN5Q2hhbmdlcygpXG4gICAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLl9kZXN0cm95UmVmKSlcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLl9hcHBseVBhcmFtcygpKTtcbiAgICB9XG4gIH1cblxuICAvLyBPbmNlIHRoZSB0aWxlJ3MgZmlyc3QgcmVhZCBpcyBpbiwgaXRzIG5vdGVzIHBydW5lIHRoZSB2aWV3ZXIncyBsYXlvdXRcbiAgLy8gKHBydW5lZEdyaWRMYXlvdXQpLiBBIHRpbGUgc2hvd2luZyBpdHMgYXV0aG9yZWQgbGF5b3V0IGhhcyBub3RoaW5nIHRvXG4gIC8vIHBydW5lLlxuICBwcml2YXRlIF9wcnVuZUFmdGVyRmlyc3RSZWFkKCk6IHZvaWQge1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCBzdW1tYXJ5ID0gdGhpcy5zb3VyY2UoKS5zdW1tYXJ5KCk7XG4gICAgICBpZiAoIXN1bW1hcnkgfHwgdGhpcy5faXNQcnVuZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9pc1BydW5lZCA9IHRydWU7XG4gICAgICB1bnRyYWNrZWQoKCkgPT4gdGhpcy5fcHJ1bmUoc3VtbWFyeS5ub3RlcyA/PyBbXSkpO1xuICAgIH0sIHsgaW5qZWN0b3I6IHRoaXMuX2luamVjdG9yLCBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX3BydW5lKG5vdGVzOiBHcmlkTm90ZVtdKTogdm9pZCB7XG4gICAgY29uc3QgY29tcG9uZW50ID0gdGhpcy5jb21wb25lbnQoKTtcbiAgICBjb25zdCBzZXNzaW9uID0gdGhpcy5fZmlsdGVyU3RhdGUuZ3JpZFNlc3Npb25MYXlvdXQoY29tcG9uZW50KTtcbiAgICBpZiAoIXNlc3Npb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBwcnVuZWQgPSBwcnVuZWRHcmlkTGF5b3V0KHNlc3Npb24sIG5vdGVzLCB0aGlzLmNvbnRyb2xzKCkuZmlsdGVyLCBhdXRob3JlZEdyaWRMYXlvdXQoY29tcG9uZW50KS5maWx0ZXJzKTtcbiAgICBpZiAocHJ1bmVkICE9PSBzZXNzaW9uKSB7XG4gICAgICB0aGlzLl9maWx0ZXJTdGF0ZS5zZXRHcmlkTGF5b3V0KGNvbXBvbmVudCwgcHJ1bmVkKTtcbiAgICB9XG4gIH1cblxuICAvLyBBIGNoYW5nZSwgb25jZSBpdCBoYXMgc2V0dGxlZDogYXQgb25jZSB3aGVuIHRoZSBzdGF0ZSB2ZXJzaW9uIG1vdmVkLFxuICAvLyBlbHNlIGFmdGVyIHRoZSBkZWJvdW5jZTsgZHJvcHBlZCB3aGVuIHRoZSB2ZXJzaW9uIG1vdmVzIHdoaWxlIGl0IHdhaXRzLFxuICAvLyBzaW5jZSB0aGF0IG1vdmUgYnJpbmdzIGl0cyBvd24gY2hhbmdlLlxuICBwcml2YXRlIF9zZXR0bGVkJCgpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICBjb25zdCB2ZXJzaW9uID0gdGhpcy5fZmlsdGVyU3RhdGUuc3RhdGVWZXJzaW9uKCk7XG4gICAgY29uc3QgbW92ZWQgPSB2ZXJzaW9uICE9PSB0aGlzLl9wYXJhbXNWZXJzaW9uO1xuXG4gICAgcmV0dXJuIChtb3ZlZCA/IG9mKDApIDogdGltZXIoVElMRV9SRUZSRVNIX0RFQk9VTkNFX01TKSlcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoKCkgPT4gdGhpcy5fZmlsdGVyU3RhdGUuc3RhdGVWZXJzaW9uKCkgPT09IHZlcnNpb24pLFxuICAgICAgICBtYXAoKCkgPT4gdW5kZWZpbmVkKSxcbiAgICAgICk7XG4gIH1cblxuICBwcml2YXRlIF9hcHBseVBhcmFtcygpOiB2b2lkIHtcbiAgICB0aGlzLl9wYXJhbXNWZXJzaW9uID0gdGhpcy5fZmlsdGVyU3RhdGUuc3RhdGVWZXJzaW9uKCk7XG4gICAgdGhpcy5wYXJhbXMuc2V0KHRoaXMuX3JlYWRQYXJhbXMoKSk7XG4gIH1cblxuICAvLyBUaGUgdGlsZSdzIHJlcG9ydCBmaWx0ZXJzLCAnYW55JyBncm91cHMgYW5kIGdyb3VwLWJ5IGdyYWluIGFzIHRoZXkgc3RhbmRcbiAgLy8gKHRpbGVTdGF0ZSgpKS5cbiAgcHJpdmF0ZSBfcmVhZFBhcmFtcygpOiBSZXBvcnRHcmlkUGFyYW1zIHtcbiAgICBjb25zdCBjb21wb25lbnQgPSB0aGlzLmNvbXBvbmVudCgpO1xuICAgIGNvbnN0IHsgbWF0Y2hBbnlHcm91cElkcywgZnJlcXVlbmN5IH0gPSB0aGlzLl9maWx0ZXJTdGF0ZS50aWxlU3RhdGUoY29tcG9uZW50KTtcblxuICAgIHJldHVybiB7XG4gICAgICBmaWx0ZXJzOiB0aGlzLl9maWx0ZXJTdGF0ZS5yZXNvbHZlRm9yQ29tcG9uZW50KGNvbXBvbmVudCksXG4gICAgICAuLi4obWF0Y2hBbnlHcm91cElkcz8ubGVuZ3RoID8geyBtYXRjaEFueUdyb3VwSWRzIH0gOiB7fSksXG4gICAgICAuLi4oZnJlcXVlbmN5ID8geyBmcmVxdWVuY3kgfSA6IHt9KSxcbiAgICB9O1xuICB9XG5cbn1cbiIsIjwhLS0gVGhlIGNvbXBhcmlzb24gYW5kIHdpbmRvdyBub3RlIHN0cmlwIGFib3ZlIHRoZSB0YWJsZSwgZnJvbSB0aGUgcmVwb3J0XG4gICAgIGxpbmUgb2YgdGhlIGxhdGVzdCByZWFkOyB0aGUgd2luZG93cycgZGVzY3JpcHRpb25zIGFuZCBub3RlcyBnbyBpbiBlYWNoXG4gICAgIGNvbHVtbidzIFwiQWJvdXQgdGhpcyBjb2x1bW5cIiBpbnN0ZWFkLiAtLT5cbjxkaXYgY2xhc3M9XCJmcy1jb2x1bW4gZ3JpZC1wYW5lXCI+XG4gIDxhcHAtcmVwb3J0LWNvbXBvbmVudC1ub3RlXG4gICAgW2RhdGFdPVwibm90ZURhdGEoKVwiXG4gICAgW3dpbmRvd05vdGVzXT1cImZhbHNlXCI+XG4gIDwvYXBwLXJlcG9ydC1jb21wb25lbnQtbm90ZT5cbiAgPCEtLSBUaGUgcGFyYW1zIGFyZSBzZWVkZWQgYmVmb3JlIHRoZSBmaXJzdCByZW5kZXIsIHNvIHRoZSBncmlkJ3MgZmlyc3QgcmVhZFxuICAgICAgIGNhcnJpZXMgdGhlIHRpbGUncyByZXBvcnQgZmlsdGVycy4gLS0+XG4gIEBpZiAocGFyYW1zKCk7IGFzIHBhcmFtcykge1xuICAgIDxmcy1ncmlkXG4gICAgICBjbGFzcz1cImZzLWZsZXhcIlxuICAgICAgW3NvdXJjZV09XCJzb3VyY2UoKVwiXG4gICAgICBbbGF5b3V0XT1cImxheW91dCgpXCJcbiAgICAgIFtleHBhbnNpb25dPVwiZXhwYW5zaW9uKClcIlxuICAgICAgW2NsZWFyZWRGaWx0ZXJdPVwiY2xlYXJlZEZpbHRlcigpXCJcbiAgICAgIChleHBhbnNpb25DaGFuZ2UpPVwic2V0RXhwYW5zaW9uKCRldmVudClcIlxuICAgICAgW3BhcmFtc109XCJwYXJhbXNcIlxuICAgICAgW2NvbnRyb2xzXT1cImNvbnRyb2xzKClcIlxuICAgICAgW2Zvcm1hdHRlcl09XCJmb3JtYXR0ZXIoKVwiXG4gICAgICAobGF5b3V0Q2hhbmdlKT1cInNldExheW91dCgkZXZlbnQpXCI+XG4gICAgICA8bmctdGVtcGxhdGUgZnNHcmlkQ2VsbCBsZXQtdmFsdWUgbGV0LWZpZWxkPVwiZmllbGRcIiBsZXQtcmVjb3JkPVwicmVjb3JkXCIgbGV0LXRleHQ9XCJ0ZXh0XCI+XG4gICAgICAgIEBpZiAodmFsdWUgfCBmc1JlcG9ydEdyaWRDZWxsOiBmaWVsZCA6IHJlY29yZCA6IHRleHQgOiBub3RlRGF0YSgpIDogZm9ybWF0Q29udGV4dCgpOyBhcyBzaG93bikge1xuICAgICAgICAgIDwhLS0gQSBjZWxsIHRoYXQgc2F5cyB3aHkgKGEgbWlzc2luZyBvciB6ZXJvIHByaW9yKSBvcGVucyBpdCBvbiBhXG4gICAgICAgICAgICAgICBjbGljazsgbm8gY2VsbCBjYXJyaWVzIGEgbmF0aXZlIHRvb2x0aXAuIC0tPlxuICAgICAgICAgIEBpZiAoc2hvd24udGl0bGUpIHtcbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJleHBsYWluZWRcIlxuICAgICAgICAgICAgICAgIGZzUG9wb3ZlclxuICAgICAgICAgICAgICAgIHRyaWdnZXI9XCJjbGlja1wiXG4gICAgICAgICAgICAgICAgW3RlbXBsYXRlXT1cImV4cGxhbmF0aW9uXCJcbiAgICAgICAgICAgICAgICBbaW5kaWNhdGlvbl09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgW21heFdpZHRoXT1cIjMyMFwiPlxuICAgICAgICAgICAgICB7eyBzaG93bi50ZXh0IH19XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI2V4cGxhbmF0aW9uPnt7IHNob3duLnRpdGxlIH19PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgIDxzcGFuPnt7IHNob3duLnRleHQgfX08L3NwYW4+XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvZnMtZ3JpZD5cbiAgfVxuPC9kaXY+XG4iXX0=
|
|
@@ -29,6 +29,9 @@ export class ReportGridSource {
|
|
|
29
29
|
_componentId;
|
|
30
30
|
// The report line of the latest read, null until one arrives.
|
|
31
31
|
report = signal(null);
|
|
32
|
+
// The summary of the latest read (its version and notes), null until one
|
|
33
|
+
// arrives.
|
|
34
|
+
summary = signal(null);
|
|
32
35
|
_isExport;
|
|
33
36
|
_locale;
|
|
34
37
|
constructor(_reportData, _reportId, _componentId, options = {}) {
|
|
@@ -48,7 +51,13 @@ export class ReportGridSource {
|
|
|
48
51
|
return EMPTY;
|
|
49
52
|
}
|
|
50
53
|
return this._part$(event.data);
|
|
51
|
-
}), concatWith(defer(() =>
|
|
54
|
+
}), concatWith(defer(() => {
|
|
55
|
+
if (!summary) {
|
|
56
|
+
return throwError(() => new Error(STREAM_CUT));
|
|
57
|
+
}
|
|
58
|
+
this.summary.set(summary);
|
|
59
|
+
return of(summary);
|
|
60
|
+
})), catchError((error) => throwError(() => readError(error))));
|
|
52
61
|
});
|
|
53
62
|
}
|
|
54
63
|
_stream$(request, params) {
|
|
@@ -102,4 +111,4 @@ function readError(error) {
|
|
|
102
111
|
}
|
|
103
112
|
return error instanceof Error ? error : new Error(READ_FAILED);
|
|
104
113
|
}
|
|
105
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LWdyaWQtc291cmNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9yZXBvcnRzL2RhdGEvcmVwb3J0LWdyaWQtc291cmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdkMsT0FBTyxFQUFlLGVBQWUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRy9ELE9BQU8sRUFBRSxLQUFLLEVBQWMsVUFBVSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFbEcsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBS25ELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBS25ELHNFQUFzRTtBQUN0RSxNQUFNLFdBQVcsR0FBRyxxQkFBcUIsQ0FBQztBQUUxQywyRUFBMkU7QUFDM0UseURBQXlEO0FBQ3pELE1BQU0sVUFBVSxHQUFHLDZDQUE2QyxDQUFDO0FBVWpFLDRFQUE0RTtBQUM1RSw4RUFBOEU7QUFDOUUsOEVBQThFO0FBQzlFLG1DQUFtQztBQUNuQyxFQUFFO0FBQ0YsMkVBQTJFO0FBQzNFLDBFQUEwRTtBQUMxRSx1RUFBdUU7QUFDdkUsMkVBQTJFO0FBQzNFLGtFQUFrRTtBQUNsRSxFQUFFO0FBQ0YsNEVBQTRFO0FBQzVFLDJFQUEyRTtBQUMzRSw2QkFBNkI7QUFDN0IsTUFBTSxPQUFPLGdCQUFnQjtJQVNSO0lBQ0E7SUFDQTtJQVRuQiw4REFBOEQ7SUFDOUMsTUFBTSxHQUFHLE1BQU0sQ0FBMEIsSUFBSSxDQUFDLENBQUM7SUFFOUMsU0FBUyxDQUFVO0lBQ25CLE9BQU8sQ0FBd0I7SUFFaEQsWUFDbUIsV0FBdUIsRUFD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QUFJLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNuRixDQUFDO0lBRUQsT0FBTyxLQUFLLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQ2pFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBTdHJlYW1FdmVudCwgU3RyZWFtRXZlbnRUeXBlIH0gZnJvbSAnQGZpcmVzdGl0Y2gvYXBpJztcbmltcG9ydCB7IEdyaWRGaWVsZCwgR3JpZFBhcmFtcywgR3JpZFJlcXVlc3QsIEdyaWRSZXN1bHQsIEdyaWRTb3VyY2UgfSBmcm9tICdAZmlyZXN0aXRjaC9ncmlkJztcblxuaW1wb3J0IHsgRU1QVFksIE9ic2VydmFibGUsIGNhdGNoRXJyb3IsIGNvbmNhdFdpdGgsIGRlZmVyLCBtZXJnZU1hcCwgb2YsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgUkVQT1JUX0ZBTExCQUNLX0xPQ0FMRSB9IGZyb20gJy4uL2Zvcm1hdCc7XG5pbXBvcnQgeyBSZXBvcnRHcmlkTGluZSB9IGZyb20gJy4uL2ludGVyZmFjZXMvcmVwb3J0LWdyaWQtbGluZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUmVwb3J0R3JpZFBhcmFtcyB9IGZyb20gJy4uL2ludGVyZmFjZXMvcmVwb3J0LWdyaWQtcGFyYW1zLmludGVyZmFjZSc7XG5pbXBvcnQgeyBSZXBvcnRHcmlkUmVwb3J0IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9yZXBvcnQtZ3JpZC1yZXBvcnQuaW50ZXJmYWNlJztcbmltcG9ydCB7IENvbXBvbmVudERhdGFTdGF0ZSwgUmVwb3J0TG9jYWxlVGFnIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9yZXBvcnQuaW50ZXJmYWNlJztcbmltcG9ydCB7IG91dHB1dENvbHVtbk5vdGUgfSBmcm9tICcuLi9vdXRwdXQtbm90ZXMnO1xuXG5pbXBvcnQgeyBSZXBvcnREYXRhIH0gZnJvbSAnLi9yZXBvcnQuZGF0YSc7XG5cblxuLy8gV2hhdCBhIGZhaWxlZCByZWFkIHNheXMgd2hlbiB0aGUgc2VydmVyIGdhdmUgbm8gbWVzc2FnZSBvZiBpdHMgb3duLlxuY29uc3QgUkVBRF9GQUlMRUQgPSAnRmFpbGVkIHRvIGxvYWQgZGF0YSc7XG5cbi8vIEEgc3RyZWFtIHRoYXQgZW5kZWQgYmVmb3JlIGl0cyBzdW1tYXJ5IHdhcyBjdXQgb2ZmIG9uIHRoZSB3YXk6IHRoZSBwYXJ0c1xuLy8gaXQgYnJvdWdodCBtYXkgYmUgc2hvcnQsIHNvIHRoZSByZWFkIGNvdW50cyBhcyBmYWlsZWQuXG5jb25zdCBTVFJFQU1fQ1VUID0gJ1RoZSB0YWJsZVxcJ3MgYW5zd2VyIHdhcyBjdXQgb2ZmLiBUcnkgYWdhaW4uJztcblxuLy8gSG93IGEgZ3JpZCBzb3VyY2UgaXMgYnVpbHQ6IGBpc0V4cG9ydGAgbWFya3MgZXZlcnkgcmVhZCBhcyBwYXJ0IG9mIGEgUERGIG9yXG4vLyBQb3dlclBvaW50IHJlbmRlciwgd2hpY2ggdGhlIHNlcnZlciBnaXZlcyBpdHMgZXhwb3J0IGNlaWxpbmc7IGBsb2NhbGVgIGlzXG4vLyB0aGUgcmVwb3J0J3MsIHdoaWNoIGFuIG91dHB1dCBmaWVsZCdzIGRlc2NyaXB0aW9uIGlzIHdyaXR0ZW4gaW4uXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydEdyaWRTb3VyY2VPcHRpb25zIHtcbiAgaXNFeHBvcnQ/OiBib29sZWFuO1xuICBsb2NhbGU/OiAoKSA9PiBSZXBvcnRMb2NhbGVUYWc7XG59XG5cbi8vIE9uZSBncmlkIHRpbGUncyByb3dzLCByZWFkIHRocm91Z2ggdGhlIHJlcG9ydDogZnMtZ3JpZCBhc2tzLCBhbmQgZWFjaCBhc2tcbi8vIGlzIG9uZSBjb21wb25lbnRHcmlkIHJlcXVlc3QuIFRoZSBwYXJhbXMgKFJlcG9ydEdyaWRQYXJhbXMpIGFyZSBtYXBwZWQgb250b1xuLy8gdGhlIHJlcXVlc3QgYm9keSdzIG93biBuYW1lczogdGhlIHJlcG9ydCBmaWx0ZXJzIGdvIHRvIGBmaWx0ZXJzYCwgdGhlICdhbnknXG4vLyBncm91cHMgYW5kIHRoZSBncmFpbiB0byBgc3RhdGVgLlxuLy9cbi8vIFRoZSBhbnN3ZXIgc3RyZWFtcy4gSXRzIHJlcG9ydCBsaW5lIGlzIGhlbGQgaW4gYHJlcG9ydGAsIHNvIG91dHB1dCBjZWxsc1xuLy8gZm9ybWF0IGFuZCB0aGUgbm90ZSBzdHJpcCBmaWxscyBmcm9tIHRoZSBmaXJzdCBwYWludDsgZWFjaCBncmlkIGxpbmUgaXNcbi8vIHBhc3NlZCBvbiBhcyBvbmUgcGFydCwgaXRzIG91dHB1dCBmaWVsZHMgZGVzY3JpYmVkIGFzIHRvZGF5J3MgaGVhZGVyXG4vLyB0b29sdGlwIGRlc2NyaWJlcyB0aGVtIChvdXRwdXRDb2x1bW5Ob3RlKTsgdGhlIGVudmVsb3BlJ3Mgc3VtbWFyeSBpcyB0aGVcbi8vIGxhc3QgcGFydC4gQSBzdHJlYW0gdGhhdCBlbmRzIHdpdGhvdXQgaXRzIHN1bW1hcnkgaXMgYSBmYWlsdXJlLlxuLy9cbi8vIEV2ZXJ5IGZhaWx1cmUgcmVhY2hlcyB0aGUgZ3JpZCBhcyBhbiBFcnJvciBjYXJyeWluZyB0aGUgc2VydmVyJ3MgbWVzc2FnZTpcbi8vIGEgc3RyZWFtZWQgcmVxdWVzdCBzaG93cyBubyBlcnJvciBkaWFsb2cgb2YgaXRzIG93biwgc28gdGhlIGdyaWQncyBlcnJvclxuLy8gc3RhdGUgaXMgd2hlcmUgaXQgaXMgcmVhZC5cbmV4cG9ydCBjbGFzcyBSZXBvcnRHcmlkU291cmNlIGltcGxlbWVudHMgR3JpZFNvdXJjZSB7XG5cbiAgLy8gVGhlIHJlcG9ydCBsaW5lIG9mIHRoZSBsYXRlc3QgcmVhZCwgbnVsbCB1bnRpbCBvbmUgYXJyaXZlcy5cbiAgcHVibGljIHJlYWRvbmx5IHJlcG9ydCA9IHNpZ25hbDxSZXBvcnRHcmlkUmVwb3J0IHwgbnVsbD4obnVsbCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfaXNFeHBvcnQ6IGJvb2xlYW47XG4gIHByaXZhdGUgcmVhZG9ubHkgX2xvY2FsZTogKCkgPT4gUmVwb3J0TG9jYWxlVGFnO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgX3JlcG9ydERhdGE6IFJlcG9ydERhdGEsXG4gICAgcHJpdmF0ZSByZWFkb25seSBfcmVwb3J0SWQ6IG51bWJlcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9jb21wb25lbnRJZDogbnVtYmVyLFxuICAgIG9wdGlvbnM6IFJlcG9ydEdyaWRTb3VyY2VPcHRpb25zID0ge30sXG4gICkge1xuICAgIHRoaXMuX2lzRXhwb3J0ID0gb3B0aW9ucy5pc0V4cG9ydCA/PyBmYWxzZTtcbiAgICB0aGlzLl9sb2NhbGUgPSBvcHRpb25zLmxvY2FsZSA/PyAoKCkgPT4gUkVQT1JUX0ZBTExCQUNLX0xPQ0FMRSk7XG4gIH1cblxuICBwdWJsaWMgcmVhZChyZXF1ZXN0OiBHcmlkUmVxdWVzdCwgcGFyYW1zOiBHcmlkUGFyYW1zKTogT2JzZXJ2YWJsZTxHcmlkUmVzdWx0PiB7XG4gICAgcmV0dXJuIGRlZmVyKCgpID0+IHtcbiAgICAgIGxldCBzdW1tYXJ5OiBHcmlkUmVzdWx0IHwgbnVsbCA9IG51bGw7XG5cbiAgICAgIHJldHVybiB0aGlzLl9zdHJlYW0kKHJlcXVlc3QsIHBhcmFtcyBhcyBSZXBvcnRHcmlkUGFyYW1zKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtZXJnZU1hcCgoZXZlbnQpID0+IHtcbiAgICAgICAgICAgIGlmIChldmVudC50eXBlID09PSBTdHJlYW1FdmVudFR5cGUuQ29tcGxldGUpIHtcbiAgICAgICAgICAgICAgc3VtbWFyeSA9IGVudmVsb3BlU3VtbWFyeShldmVudCkgPz8gc3VtbWFyeTtcblxuICAgICAgICAgICAgICByZXR1cm4gRU1QVFk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9wYXJ0JChldmVudC5kYXRhKTtcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBjb25jYXRXaXRoKGRlZmVyKCgpID0+IChzdW1tYXJ5ID8gb2Yoc3VtbWFyeSkgOiB0aHJvd0Vycm9yKCgpID0+IG5ldyBFcnJvcihTVFJFQU1fQ1VUKSkpKSksXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IHVua25vd24pID0+IHRocm93RXJyb3IoKCkgPT4gcmVhZEVycm9yKGVycm9yKSkpLFxuICAgICAgICApO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfc3RyZWFtJChyZXF1ZXN0OiBHcmlkUmVxdWVzdCwgcGFyYW1zOiBSZXBvcnRHcmlkUGFyYW1zKTogT2JzZXJ2YWJsZTxTdHJlYW1FdmVudD4ge1xuICAgIHJldHVybiB0aGlzLl9yZXBvcnREYXRhLmNvbXBvbmVudEdyaWQoXG4gICAgICB0aGlzLl9yZXBvcnRJZCxcbiAgICAgIHRoaXMuX2NvbXBvbmVudElkLFxuICAgICAgcGFyYW1zLmZpbHRlcnMgPz8gW10sXG4gICAgICByZXF1ZXN0U3RhdGUocGFyYW1zKSxcbiAgICAgIHJlcXVlc3QsXG4gICAgICB0aGlzLl9pc0V4cG9ydCxcbiAgICApO1xuICB9XG5cbiAgLy8gT25lIGRhdGEgbGluZTogdGhlIHJlcG9ydCBsaW5lIGlzIGhlbGQsIGEgZ3JpZCBsaW5lIGlzIHBhc3NlZCBvbiBhcyBhXG4gIC8vIHBhcnQsIGFuZCBldmVyeSBvdGhlciBsaW5lIGlzIHNraXBwZWQuXG4gIHByaXZhdGUgX3BhcnQkKGRhdGE6IHVua25vd24pOiBPYnNlcnZhYmxlPEdyaWRSZXN1bHQ+IHtcbiAgICBjb25zdCBsaW5lID0gZGF0YSBhcyBSZXBvcnRHcmlkTGluZSB8IG51bGw7XG5cbiAgICBpZiAobGluZT8ucmVwb3J0KSB7XG4gICAgICB0aGlzLnJlcG9ydC5zZXQobGluZS5yZXBvcnQpO1xuXG4gICAgICByZXR1cm4gRU1QVFk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGxpbmU/LmdyaWQgPyBvZih0aGlzLl9kZXNjcmliZWQobGluZS5ncmlkKSkgOiBFTVBUWTtcbiAgfVxuXG4gIC8vIEEgcGFydCB3aG9zZSBmaWVsZHMgc2F5IHdoYXQgZWFjaCBvdXRwdXQgaG9sZHMsIGFzIHRvZGF5J3MgaGVhZGVyXG4gIC8vIHRvb2x0aXAgc2F5cyBpdC4gQSBmaWVsZCB0aGUgcmVwb3J0IHNheXMgbm90aGluZyBvZiBrZWVwcyBpdHMgb3duLlxuICBwcml2YXRlIF9kZXNjcmliZWQocGFydDogR3JpZFJlc3VsdCk6IEdyaWRSZXN1bHQge1xuICAgIGlmICghcGFydC5maWVsZHM/Lmxlbmd0aCkge1xuICAgICAgcmV0dXJuIHBhcnQ7XG4gICAgfVxuXG4gICAgY29uc3QgcmVwb3J0ID0gdGhpcy5yZXBvcnQoKTtcbiAgICBjb25zdCBsb2NhbGUgPSB0aGlzLl9sb2NhbGUoKTtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi5wYXJ0LFxuICAgICAgZmllbGRzOiBwYXJ0LmZpZWxkcy5tYXAoKGZpZWxkOiBHcmlkRmllbGQpID0+IHtcbiAgICAgICAgY29uc3Qgbm90ZSA9IG91dHB1dENvbHVtbk5vdGUoZmllbGQubmFtZSwgcmVwb3J0LCBsb2NhbGUpO1xuXG4gICAgICAgIHJldHVybiBub3RlID8geyAuLi5maWVsZCwgZGVzY3JpcHRpb246IG5vdGUgfSA6IGZpZWxkO1xuICAgICAgfSksXG4gICAgfTtcbiAgfVxuXG59XG5cbi8vIFRoZSB0aWxlIHN0YXRlIHRoZSBkYXRhIHJlcXVlc3QgY2FycmllcyBmb3IgYSBncmlkOiB0aGUgJ2FueScgZ3JvdXBzIGFuZFxuLy8gdGhlIGdyYWluLCBlYWNoIG9ubHkgd2hlbiBzZXQuXG5mdW5jdGlvbiByZXF1ZXN0U3RhdGUocGFyYW1zOiBSZXBvcnRHcmlkUGFyYW1zKTogQ29tcG9uZW50RGF0YVN0YXRlIHtcbiAgcmV0dXJuIHtcbiAgICAuLi4ocGFyYW1zLm1hdGNoQW55R3JvdXBJZHM/Lmxlbmd0aCA/IHsgbWF0Y2hBbnlHcm91cElkczogWy4uLnBhcmFtcy5tYXRjaEFueUdyb3VwSWRzXSB9IDoge30pLFxuICAgIC4uLihwYXJhbXMuZnJlcXVlbmN5ID8geyBmcmVxdWVuY3k6IHBhcmFtcy5mcmVxdWVuY3kgfSA6IHt9KSxcbiAgfTtcbn1cblxuLy8gVGhlIHJlYWQncyBzdW1tYXJ5IGZyb20gdGhlIGVudmVsb3BlIHRoYXQgY2xvc2VzIHRoZSBzdHJlYW1cbi8vICh7ZGF0YToge2RhdGE6IHtncmlkfX0sIGNvZGV9KSwgb3IgbnVsbCBmb3IgdGhlIGJhcmUgZW5kLW9mLXJlc3BvbnNlIGV2ZW50LlxuZnVuY3Rpb24gZW52ZWxvcGVTdW1tYXJ5KGV2ZW50OiBTdHJlYW1FdmVudCk6IEdyaWRSZXN1bHQgfCBudWxsIHtcbiAgcmV0dXJuIGV2ZW50LmRhdGE/LmRhdGE/LmRhdGE/LmdyaWQgPz8gbnVsbDtcbn1cblxuLy8gQW55IGZhaWx1cmUgYXMgYW4gRXJyb3I6IHRoZSBzZXJ2ZXIncyBtZXNzYWdlIHdoZW4gaXQgc2VudCBvbmUuXG5mdW5jdGlvbiByZWFkRXJyb3IoZXJyb3I6IHVua25vd24pOiBFcnJvciB7XG4gIGlmIChlcnJvciBpbnN0YW5jZW9mIEh0dHBFcnJvclJlc3BvbnNlKSB7XG4gICAgY29uc3QgbWVzc2FnZSA9IGVycm9yLmVycm9yPy5tZXNzYWdlO1xuXG4gICAgcmV0dXJuIG5ldyBFcnJvcih0eXBlb2YgbWVzc2FnZSA9PT0gJ3N0cmluZycgJiYgbWVzc2FnZSA/IG1lc3NhZ2UgOiBSRUFEX0ZBSUxFRCk7XG4gIH1cblxuICByZXR1cm4gZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yIDogbmV3IEVycm9yKFJFQURfRkFJTEVEKTtcbn1cbiJdfQ==
|
|
114
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LWdyaWQtc291cmNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9yZXBvcnRzL2RhdGEvcmVwb3J0LWdyaWQtc291cmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdkMsT0FBTyxFQUFlLGVBQWUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRy9ELE9BQU8sRUFBRSxLQUFLLEVBQWMsVUFBVSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFbEcsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBS25ELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBS25ELHNFQUFzRTtBQUN0RSxNQUFNLFdBQVcsR0FBRyxxQkFBcUIsQ0FBQztBQUUxQywyRUFBMkU7QUFDM0UseURBQXlEO0FBQ3pELE1BQU0sVUFBVSxHQUFHLDZDQUE2QyxDQUFDO0FBVWpFLDRFQUE0RTtBQUM1RSw4RUFBOEU7QUFDOUUsOEVBQThFO0FBQzlFLG1DQUFtQztBQUNuQyxFQUFFO0FBQ0YsMkVBQTJFO0FBQzNFLDBFQUEwRTtBQUMxRSx1RUFBdUU7QUFDdkUsMkVBQTJFO0FBQzNFLGtFQUFrRTtBQUNsRSxFQUFFO0FBQ0YsNEVBQTRFO0FBQzVFLDJFQUEyRTtBQUMzRSw2QkFBNkI7QUFDN0IsTUFBTSxPQUFPLGdCQUFnQjtJQVlSO0lBQ0E7SUFDQTtJQVpuQiw4REFBOEQ7SUFDOUMsTUFBTSxHQUFHLE1BQU0sQ0FBMEIsSUFBSSxDQUFDLENBQUM7SUFDL0QseUVBQXlFO0lBQ3pFLFdBQVc7SUFDSyxPQUFPLEdBQUcsTUFBTSxDQUFvQixJQUFJ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UyxTQUFTLENBQUMsS0FBYztJQUMvQixJQUFJLEtBQUssWUFBWSxpQkFBaUIsRUFBRSxDQUFDO1FBQ3ZDLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDO1FBRXJDLE9BQU8sSUFBSSxLQUFLLENBQUMsT0FBTyxPQUFPLEtBQUssUUFBUSxJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNuRixDQUFDO0lBRUQsT0FBTyxLQUFLLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQ2pFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBTdHJlYW1FdmVudCwgU3RyZWFtRXZlbnRUeXBlIH0gZnJvbSAnQGZpcmVzdGl0Y2gvYXBpJztcbmltcG9ydCB7IEdyaWRGaWVsZCwgR3JpZFBhcmFtcywgR3JpZFJlcXVlc3QsIEdyaWRSZXN1bHQsIEdyaWRTb3VyY2UgfSBmcm9tICdAZmlyZXN0aXRjaC9ncmlkJztcblxuaW1wb3J0IHsgRU1QVFksIE9ic2VydmFibGUsIGNhdGNoRXJyb3IsIGNvbmNhdFdpdGgsIGRlZmVyLCBtZXJnZU1hcCwgb2YsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgUkVQT1JUX0ZBTExCQUNLX0xPQ0FMRSB9IGZyb20gJy4uL2Zvcm1hdCc7XG5pbXBvcnQgeyBSZXBvcnRHcmlkTGluZSB9IGZyb20gJy4uL2ludGVyZmFjZXMvcmVwb3J0LWdyaWQtbGluZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUmVwb3J0R3JpZFBhcmFtcyB9IGZyb20gJy4uL2ludGVyZmFjZXMvcmVwb3J0LWdyaWQtcGFyYW1zLmludGVyZmFjZSc7XG5pbXBvcnQgeyBSZXBvcnRHcmlkUmVwb3J0IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9yZXBvcnQtZ3JpZC1yZXBvcnQuaW50ZXJmYWNlJztcbmltcG9ydCB7IENvbXBvbmVudERhdGFTdGF0ZSwgUmVwb3J0TG9jYWxlVGFnIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9yZXBvcnQuaW50ZXJmYWNlJztcbmltcG9ydCB7IG91dHB1dENvbHVtbk5vdGUgfSBmcm9tICcuLi9vdXRwdXQtbm90ZXMnO1xuXG5pbXBvcnQgeyBSZXBvcnREYXRhIH0gZnJvbSAnLi9yZXBvcnQuZGF0YSc7XG5cblxuLy8gV2hhdCBhIGZhaWxlZCByZWFkIHNheXMgd2hlbiB0aGUgc2VydmVyIGdhdmUgbm8gbWVzc2FnZSBvZiBpdHMgb3duLlxuY29uc3QgUkVBRF9GQUlMRUQgPSAnRmFpbGVkIHRvIGxvYWQgZGF0YSc7XG5cbi8vIEEgc3RyZWFtIHRoYXQgZW5kZWQgYmVmb3JlIGl0cyBzdW1tYXJ5IHdhcyBjdXQgb2ZmIG9uIHRoZSB3YXk6IHRoZSBwYXJ0c1xuLy8gaXQgYnJvdWdodCBtYXkgYmUgc2hvcnQsIHNvIHRoZSByZWFkIGNvdW50cyBhcyBmYWlsZWQuXG5jb25zdCBTVFJFQU1fQ1VUID0gJ1RoZSB0YWJsZVxcJ3MgYW5zd2VyIHdhcyBjdXQgb2ZmLiBUcnkgYWdhaW4uJztcblxuLy8gSG93IGEgZ3JpZCBzb3VyY2UgaXMgYnVpbHQ6IGBpc0V4cG9ydGAgbWFya3MgZXZlcnkgcmVhZCBhcyBwYXJ0IG9mIGEgUERGIG9yXG4vLyBQb3dlclBvaW50IHJlbmRlciwgd2hpY2ggdGhlIHNlcnZlciBnaXZlcyBpdHMgZXhwb3J0IGNlaWxpbmc7IGBsb2NhbGVgIGlzXG4vLyB0aGUgcmVwb3J0J3MsIHdoaWNoIGFuIG91dHB1dCBmaWVsZCdzIGRlc2NyaXB0aW9uIGlzIHdyaXR0ZW4gaW4uXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydEdyaWRTb3VyY2VPcHRpb25zIHtcbiAgaXNFeHBvcnQ/OiBib29sZWFuO1xuICBsb2NhbGU/OiAoKSA9PiBSZXBvcnRMb2NhbGVUYWc7XG59XG5cbi8vIE9uZSBncmlkIHRpbGUncyByb3dzLCByZWFkIHRocm91Z2ggdGhlIHJlcG9ydDogZnMtZ3JpZCBhc2tzLCBhbmQgZWFjaCBhc2tcbi8vIGlzIG9uZSBjb21wb25lbnRHcmlkIHJlcXVlc3QuIFRoZSBwYXJhbXMgKFJlcG9ydEdyaWRQYXJhbXMpIGFyZSBtYXBwZWQgb250b1xuLy8gdGhlIHJlcXVlc3QgYm9keSdzIG93biBuYW1lczogdGhlIHJlcG9ydCBmaWx0ZXJzIGdvIHRvIGBmaWx0ZXJzYCwgdGhlICdhbnknXG4vLyBncm91cHMgYW5kIHRoZSBncmFpbiB0byBgc3RhdGVgLlxuLy9cbi8vIFRoZSBhbnN3ZXIgc3RyZWFtcy4gSXRzIHJlcG9ydCBsaW5lIGlzIGhlbGQgaW4gYHJlcG9ydGAsIHNvIG91dHB1dCBjZWxsc1xuLy8gZm9ybWF0IGFuZCB0aGUgbm90ZSBzdHJpcCBmaWxscyBmcm9tIHRoZSBmaXJzdCBwYWludDsgZWFjaCBncmlkIGxpbmUgaXNcbi8vIHBhc3NlZCBvbiBhcyBvbmUgcGFydCwgaXRzIG91dHB1dCBmaWVsZHMgZGVzY3JpYmVkIGFzIHRvZGF5J3MgaGVhZGVyXG4vLyB0b29sdGlwIGRlc2NyaWJlcyB0aGVtIChvdXRwdXRDb2x1bW5Ob3RlKTsgdGhlIGVudmVsb3BlJ3Mgc3VtbWFyeSBpcyB0aGVcbi8vIGxhc3QgcGFydC4gQSBzdHJlYW0gdGhhdCBlbmRzIHdpdGhvdXQgaXRzIHN1bW1hcnkgaXMgYSBmYWlsdXJlLlxuLy9cbi8vIEV2ZXJ5IGZhaWx1cmUgcmVhY2hlcyB0aGUgZ3JpZCBhcyBhbiBFcnJvciBjYXJyeWluZyB0aGUgc2VydmVyJ3MgbWVzc2FnZTpcbi8vIGEgc3RyZWFtZWQgcmVxdWVzdCBzaG93cyBubyBlcnJvciBkaWFsb2cgb2YgaXRzIG93biwgc28gdGhlIGdyaWQncyBlcnJvclxuLy8gc3RhdGUgaXMgd2hlcmUgaXQgaXMgcmVhZC5cbmV4cG9ydCBjbGFzcyBSZXBvcnRHcmlkU291cmNlIGltcGxlbWVudHMgR3JpZFNvdXJjZSB7XG5cbiAgLy8gVGhlIHJlcG9ydCBsaW5lIG9mIHRoZSBsYXRlc3QgcmVhZCwgbnVsbCB1bnRpbCBvbmUgYXJyaXZlcy5cbiAgcHVibGljIHJlYWRvbmx5IHJlcG9ydCA9IHNpZ25hbDxSZXBvcnRHcmlkUmVwb3J0IHwgbnVsbD4obnVsbCk7XG4gIC8vIFRoZSBzdW1tYXJ5IG9mIHRoZSBsYXRlc3QgcmVhZCAoaXRzIHZlcnNpb24gYW5kIG5vdGVzKSwgbnVsbCB1bnRpbCBvbmVcbiAgLy8gYXJyaXZlcy5cbiAgcHVibGljIHJlYWRvbmx5IHN1bW1hcnkgPSBzaWduYWw8R3JpZFJlc3VsdCB8IG51bGw+KG51bGwpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2lzRXhwb3J0OiBib29sZWFuO1xuICBwcml2YXRlIHJlYWRvbmx5IF9sb2NhbGU6ICgpID0+IFJlcG9ydExvY2FsZVRhZztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9yZXBvcnREYXRhOiBSZXBvcnREYXRhLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgX3JlcG9ydElkOiBudW1iZXIsXG4gICAgcHJpdmF0ZSByZWFkb25seSBfY29tcG9uZW50SWQ6IG51bWJlcixcbiAgICBvcHRpb25zOiBSZXBvcnRHcmlkU291cmNlT3B0aW9ucyA9IHt9LFxuICApIHtcbiAgICB0aGlzLl9pc0V4cG9ydCA9IG9wdGlvbnMuaXNFeHBvcnQgPz8gZmFsc2U7XG4gICAgdGhpcy5fbG9jYWxlID0gb3B0aW9ucy5sb2NhbGUgPz8gKCgpID0+IFJFUE9SVF9GQUxMQkFDS19MT0NBTEUpO1xuICB9XG5cbiAgcHVibGljIHJlYWQocmVxdWVzdDogR3JpZFJlcXVlc3QsIHBhcmFtczogR3JpZFBhcmFtcyk6IE9ic2VydmFibGU8R3JpZFJlc3VsdD4ge1xuICAgIHJldHVybiBkZWZlcigoKSA9PiB7XG4gICAgICBsZXQgc3VtbWFyeTogR3JpZFJlc3VsdCB8IG51bGwgPSBudWxsO1xuXG4gICAgICByZXR1cm4gdGhpcy5fc3RyZWFtJChyZXF1ZXN0LCBwYXJhbXMgYXMgUmVwb3J0R3JpZFBhcmFtcylcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgbWVyZ2VNYXAoKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICBpZiAoZXZlbnQudHlwZSA9PT0gU3RyZWFtRXZlbnRUeXBlLkNvbXBsZXRlKSB7XG4gICAgICAgICAgICAgIHN1bW1hcnkgPSBlbnZlbG9wZVN1bW1hcnkoZXZlbnQpID8/IHN1bW1hcnk7XG5cbiAgICAgICAgICAgICAgcmV0dXJuIEVNUFRZO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fcGFydCQoZXZlbnQuZGF0YSk7XG4gICAgICAgICAgfSksXG4gICAgICAgICAgY29uY2F0V2l0aChkZWZlcigoKSA9PiB7XG4gICAgICAgICAgICBpZiAoIXN1bW1hcnkpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gbmV3IEVycm9yKFNUUkVBTV9DVVQpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuc3VtbWFyeS5zZXQoc3VtbWFyeSk7XG5cbiAgICAgICAgICAgIHJldHVybiBvZihzdW1tYXJ5KTtcbiAgICAgICAgICB9KSksXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IHVua25vd24pID0+IHRocm93RXJyb3IoKCkgPT4gcmVhZEVycm9yKGVycm9yKSkpLFxuICAgICAgICApO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfc3RyZWFtJChyZXF1ZXN0OiBHcmlkUmVxdWVzdCwgcGFyYW1zOiBSZXBvcnRHcmlkUGFyYW1zKTogT2JzZXJ2YWJsZTxTdHJlYW1FdmVudD4ge1xuICAgIHJldHVybiB0aGlzLl9yZXBvcnREYXRhLmNvbXBvbmVudEdyaWQoXG4gICAgICB0aGlzLl9yZXBvcnRJZCxcbiAgICAgIHRoaXMuX2NvbXBvbmVudElkLFxuICAgICAgcGFyYW1zLmZpbHRlcnMgPz8gW10sXG4gICAgICByZXF1ZXN0U3RhdGUocGFyYW1zKSxcbiAgICAgIHJlcXVlc3QsXG4gICAgICB0aGlzLl9pc0V4cG9ydCxcbiAgICApO1xuICB9XG5cbiAgLy8gT25lIGRhdGEgbGluZTogdGhlIHJlcG9ydCBsaW5lIGlzIGhlbGQsIGEgZ3JpZCBsaW5lIGlzIHBhc3NlZCBvbiBhcyBhXG4gIC8vIHBhcnQsIGFuZCBldmVyeSBvdGhlciBsaW5lIGlzIHNraXBwZWQuXG4gIHByaXZhdGUgX3BhcnQkKGRhdGE6IHVua25vd24pOiBPYnNlcnZhYmxlPEdyaWRSZXN1bHQ+IHtcbiAgICBjb25zdCBsaW5lID0gZGF0YSBhcyBSZXBvcnRHcmlkTGluZSB8IG51bGw7XG5cbiAgICBpZiAobGluZT8ucmVwb3J0KSB7XG4gICAgICB0aGlzLnJlcG9ydC5zZXQobGluZS5yZXBvcnQpO1xuXG4gICAgICByZXR1cm4gRU1QVFk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGxpbmU/LmdyaWQgPyBvZih0aGlzLl9kZXNjcmliZWQobGluZS5ncmlkKSkgOiBFTVBUWTtcbiAgfVxuXG4gIC8vIEEgcGFydCB3aG9zZSBmaWVsZHMgc2F5IHdoYXQgZWFjaCBvdXRwdXQgaG9sZHMsIGFzIHRvZGF5J3MgaGVhZGVyXG4gIC8vIHRvb2x0aXAgc2F5cyBpdC4gQSBmaWVsZCB0aGUgcmVwb3J0IHNheXMgbm90aGluZyBvZiBrZWVwcyBpdHMgb3duLlxuICBwcml2YXRlIF9kZXNjcmliZWQocGFydDogR3JpZFJlc3VsdCk6IEdyaWRSZXN1bHQge1xuICAgIGlmICghcGFydC5maWVsZHM/Lmxlbmd0aCkge1xuICAgICAgcmV0dXJuIHBhcnQ7XG4gICAgfVxuXG4gICAgY29uc3QgcmVwb3J0ID0gdGhpcy5yZXBvcnQoKTtcbiAgICBjb25zdCBsb2NhbGUgPSB0aGlzLl9sb2NhbGUoKTtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi5wYXJ0LFxuICAgICAgZmllbGRzOiBwYXJ0LmZpZWxkcy5tYXAoKGZpZWxkOiBHcmlkRmllbGQpID0+IHtcbiAgICAgICAgY29uc3Qgbm90ZSA9IG91dHB1dENvbHVtbk5vdGUoZmllbGQubmFtZSwgcmVwb3J0LCBsb2NhbGUpO1xuXG4gICAgICAgIHJldHVybiBub3RlID8geyAuLi5maWVsZCwgZGVzY3JpcHRpb246IG5vdGUgfSA6IGZpZWxkO1xuICAgICAgfSksXG4gICAgfTtcbiAgfVxuXG59XG5cbi8vIFRoZSB0aWxlIHN0YXRlIHRoZSBkYXRhIHJlcXVlc3QgY2FycmllcyBmb3IgYSBncmlkOiB0aGUgJ2FueScgZ3JvdXBzIGFuZFxuLy8gdGhlIGdyYWluLCBlYWNoIG9ubHkgd2hlbiBzZXQuXG5mdW5jdGlvbiByZXF1ZXN0U3RhdGUocGFyYW1zOiBSZXBvcnRHcmlkUGFyYW1zKTogQ29tcG9uZW50RGF0YVN0YXRlIHtcbiAgcmV0dXJuIHtcbiAgICAuLi4ocGFyYW1zLm1hdGNoQW55R3JvdXBJZHM/Lmxlbmd0aCA/IHsgbWF0Y2hBbnlHcm91cElkczogWy4uLnBhcmFtcy5tYXRjaEFueUdyb3VwSWRzXSB9IDoge30pLFxuICAgIC4uLihwYXJhbXMuZnJlcXVlbmN5ID8geyBmcmVxdWVuY3k6IHBhcmFtcy5mcmVxdWVuY3kgfSA6IHt9KSxcbiAgfTtcbn1cblxuLy8gVGhlIHJlYWQncyBzdW1tYXJ5IGZyb20gdGhlIGVudmVsb3BlIHRoYXQgY2xvc2VzIHRoZSBzdHJlYW1cbi8vICh7ZGF0YToge2RhdGE6IHtncmlkfX0sIGNvZGV9KSwgb3IgbnVsbCBmb3IgdGhlIGJhcmUgZW5kLW9mLXJlc3BvbnNlIGV2ZW50LlxuZnVuY3Rpb24gZW52ZWxvcGVTdW1tYXJ5KGV2ZW50OiBTdHJlYW1FdmVudCk6IEdyaWRSZXN1bHQgfCBudWxsIHtcbiAgcmV0dXJuIGV2ZW50LmRhdGE/LmRhdGE/LmRhdGE/LmdyaWQgPz8gbnVsbDtcbn1cblxuLy8gQW55IGZhaWx1cmUgYXMgYW4gRXJyb3I6IHRoZSBzZXJ2ZXIncyBtZXNzYWdlIHdoZW4gaXQgc2VudCBvbmUuXG5mdW5jdGlvbiByZWFkRXJyb3IoZXJyb3I6IHVua25vd24pOiBFcnJvciB7XG4gIGlmIChlcnJvciBpbnN0YW5jZW9mIEh0dHBFcnJvclJlc3BvbnNlKSB7XG4gICAgY29uc3QgbWVzc2FnZSA9IGVycm9yLmVycm9yPy5tZXNzYWdlO1xuXG4gICAgcmV0dXJuIG5ldyBFcnJvcih0eXBlb2YgbWVzc2FnZSA9PT0gJ3N0cmluZycgJiYgbWVzc2FnZSA/IG1lc3NhZ2UgOiBSRUFEX0ZBSUxFRCk7XG4gIH1cblxuICByZXR1cm4gZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yIDogbmV3IEVycm9yKFJFQURfRkFJTEVEKTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LWNoYXQtdmlld2VyLXNob3ctcm93cy5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3JlcG9ydHMvaW50ZXJmYWNlcy9yZXBvcnQtY2hhdC12aWV3ZXItc2hvdy1yb3dzLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLy8gVGhlIHJvd3MgcGFuZWwgb3BlbiBvbiBzY3JlZW4sIGFzIHRoZSBjaGF0IHJlYWRzIGl0OiB0aGUgdGlsZSBpdCB3YXMgb3BlbmVkXG4vLyBmcm9tIGFuZCB0aGUgdmFsdWUgaXQgc2hvd3MgdGhlIHJvd3Mgb2YuXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydENoYXRWaWV3ZXJTaG93Um93cyB7XG4gIGNvbXBvbmVudElkOiBudW1iZXI7XG4gIGxhYmVsOiBzdHJpbmc7XG59XG4iXX0=
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LWNoYXQtdmlld2VyLXN0YXRlLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvcmVwb3J0cy9pbnRlcmZhY2VzL3JlcG9ydC1jaGF0LXZpZXdlci1zdGF0ZS5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlcG9ydENoYXRWaWV3ZXJDcm9zc0ZpbHRlciB9IGZyb20gJy4vcmVwb3J0LWNoYXQtdmlld2VyLWNyb3NzLWZpbHRlci5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUmVwb3J0Q2hhdFZpZXdlclNob3dSb3dzIH0gZnJvbSAnLi9yZXBvcnQtY2hhdC12aWV3ZXItc2hvdy1yb3dzLmludGVyZmFjZSc7XG5pbXBvcnQgeyBSZXBvcnRDaGF0Vmlld2VyRHJpbGwgfSBmcm9tICcuL3JlcG9ydC1jaGF0LXZpZXdlci1kcmlsbC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUmVwb3J0Q2hhdFZpZXdlckZpbHRlciB9IGZyb20gJy4vcmVwb3J0LWNoYXQtdmlld2VyLWZpbHRlci5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUmVwb3J0Q2hhdFZpZXdlclNlbGVjdGlvbiB9IGZyb20gJy4vcmVwb3J0LWNoYXQtdmlld2VyLXNlbGVjdGlvbi5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUmVwb3J0Q2hhdFZpZXdlclRpbGUgfSBmcm9tICcuL3JlcG9ydC1jaGF0LXZpZXdlci10aWxlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBSZXBvcnRGaWx0ZXJNYXRjaCB9IGZyb20gJy4vcmVwb3J0LWZpbHRlci1tYXRjaC50eXBlJztcbmltcG9ydCB7IENoYXJ0R3JhbnVsYXJpdHkgfSBmcm9tICcuL3JlcG9ydC5pbnRlcmZhY2UnO1xuXG5cbi8vIFdoYXQgdGhlIHZpZXdlciBoYXMgb24gc2NyZWVuLCBzZW50IGFzIGB2aWV3ZXJTdGF0ZWAgd2l0aCBlYWNoIHJlcG9ydCBjaGF0XG4vLyB0dXJuIHNvIHRoZSBhZ2VudCBrbm93cyB3aGF0IFwidGhpcyBjaGFydFwiIGFuZCBcInRoaXMgcGVyaW9kXCIgbWVhbi4gUmVhZCBhdFxuLy8gdGhlIG1vbWVudCB0aGUgdHVybiBpcyBzZW50OyBpdCBpcyBuZXZlciBzYXZlZCB0byB0aGUgcmVwb3J0LiBFdmVyeSBmaWVsZFxuLy8gYWZ0ZXIgYGZpbHRlcnNgIGlzIG9wdGlvbmFsOiBhIGtleSBsZWZ0IG91dCBtZWFucyB0aGUgdmlld2VyIGhhcyBub3RoaW5nXG4vLyB0aGVyZSwgYW5kIGEgc2VydmVyIHRoYXQgZG9lcyBub3Qga25vdyBhIGtleSBpZ25vcmVzIGl0LlxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRDaGF0Vmlld2VyU3RhdGUge1xuICAvLyBUaGUgZ3JvdXAtYnkgY29udHJvbCdzIGdyYWluLCBvciBudWxsIHdoZW4gdGhlIHZpZXdlciBoYXMgbm90IHBpY2tlZCBvbmUuXG4gIGdyYW51bGFyaXR5OiBDaGFydEdyYW51bGFyaXR5IHwgbnVsbDtcbiAgLy8gVGhlIGNhbnZhcyBzZWxlY3Rpb24uIE9ubHkgc2VudCB3aGlsZSBlZGl0IG1vZGUgaXMgb24sIGJlY2F1c2UgdGhlXG4gIC8vIHNlbGVjdGlvbiBpcyBkcmF3biBvbmx5IHRoZW4uXG4gIHNlbGVjdGVkQ29tcG9uZW50SWQ6IG51bWJlciB8IG51bGw7XG4gIC8vIE9uZSBlbnRyeSBwZXIgZmlsdGVyIGdyb3VwIHdpdGggYSB2YWx1ZSwgaW4gZ3JvdXAgaWQgb3JkZXIuXG4gIGZpbHRlcnM6IFJlcG9ydENoYXRWaWV3ZXJGaWx0ZXJbXTtcbiAgLy8gJ2FueScgd2hpbGUgdGhlIGJhcidzIGdyb3VwcyBtYXRjaCBhbnkgZmlsdGVyOyBsZWZ0IG91dCBmb3IgJ2FsbCcuXG4gIG1hdGNoPzogUmVwb3J0RmlsdGVyTWF0Y2g7XG4gIC8vIFRoZSBjcm9zcy1maWx0ZXIgb24gc2NyZWVuIChhdCBtb3N0IG9uZSkuXG4gIGNyb3NzRmlsdGVycz86IFJlcG9ydENoYXRWaWV3ZXJDcm9zc0ZpbHRlcltdO1xuICAvLyBFYWNoIGRyaWxsZWQgY2hhcnQsIGluIGNvbXBvbmVudCBpZCBvcmRlci5cbiAgZHJpbGxzPzogUmVwb3J0Q2hhdFZpZXdlckRyaWxsW107XG4gIC8vIFRoZSByb3dzIHBhbmVsLCBvciBudWxsIHdoZW4gaXQgaXMgY2xvc2VkLlxuICBzaG93Um93cz86IFJlcG9ydENoYXRWaWV3ZXJTaG93Um93cyB8IG51bGw7XG4gIC8vIEV2ZXJ5IHRhYmxlIHRpbGUgb24gdGhlIGJvdW5kIHBhZ2UsIGluIHBhZ2Ugb3JkZXIsIGVhY2ggd2l0aCB0aGUgbGF5b3V0XG4gIC8vIHRoZSB2aWV3ZXIgaGFzIGl0IGluIHdoaWxlIHRoYXQgZGlmZmVycyBmcm9tIHRoZSBzdG9yZWQgb25lLiBUaGUgYWdlbnRcbiAgLy8gcmVhZHMgb25seSBhIGxpc3RlZCB0YWJsZSBhcyBzaG93biwgc28gXCJtYWtlIHRoaXMgdGhlIGRlZmF1bHRcIiBzYXZlc1xuICAvLyB3aGF0IGlzIG9uIHNjcmVlbi5cbiAgdGlsZXM/OiBSZXBvcnRDaGF0Vmlld2VyVGlsZVtdO1xuICAvLyBSZXNlcnZlZCBmb3IgaW5saW5lIHZhbHVlczsgbmV2ZXIgc2V0IGJ5IHRoaXMgdmlld2VyLlxuICBzZWxlY3Rpb24/OiBSZXBvcnRDaGF0Vmlld2VyU2VsZWN0aW9uO1xufVxuIl19
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LW1hcmstYWN0aW9uLnR5cGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3JlcG9ydHMvaW50ZXJmYWNlcy9yZXBvcnQtbWFyay1hY3Rpb24udHlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLy8gV2hhdCBhIGNsaWNrIG9uIGEgbWFyayBjYW4gZG8gKEIxMC4yKTogZHJpbGwgZG93biBhIHRpbWUgYXhpcywgZmlsdGVyIHRoZVxuLy8gb3RoZXIgdGlsZXMgYnkgdGhlIG1hcmssIG9yIHNob3cgdGhlIHJvd3MgYmVoaW5kIGl0cyB2YWx1ZS4gRWFjaCBpcyBvZmZlcmVkXG4vLyBvbmx5IHdoaWxlIGl0cyBmZWF0dXJlIGlzLlxuZXhwb3J0IHR5cGUgUmVwb3J0TWFya0FjdGlvbiA9ICdkcmlsbCcgfCAnY3Jvc3NGaWx0ZXInIHwgJ3Nob3dSb3dzJztcbiJdfQ==
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LXRlbXBvcmFyeS1zdGF0ZS5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3JlcG9ydHMvaW50ZXJmYWNlcy9yZXBvcnQtdGVtcG9yYXJ5LXN0YXRlLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLy8gVGhlIHZpZXdlcidzIHRlbXBvcmFyeSBzdGF0ZTogd2hhdCBpdCBwaWNrZWQgb24gYSB0aWxlIGZvciB0aGlzIHZpc2l0IG9ubHkuXG4vLyBEYXRhIHJlcXVlc3RzIGFuZCBleHBvcnRzIHJlYWQgaXQ7IHRoZSBzbmFwc2hvdCBhbmQgdGhlIHNjcmVlbidzXG4vLyBcImRpZmZlcnMgZnJvbSB0aGUgZGVmYXVsdHNcIiBjaGVjayBuZXZlciBkbyAoUmVwb3J0RmlsdGVyU3RhdGVTZXJ2aWNlLnNuYXBzaG90KCkgbGVhdmVzIGl0IG91dCkuXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydFRlbXBvcmFyeVN0YXRlIHtcbiAgLy8gVGhlIGNyb3NzLWZpbHRlciBlbnRyaWVzIGluIGZvcmNlICh0aGUgdmlld2VyIGtlZXBzIGF0IG1vc3Qgb25lKS5cbiAgY3Jvc3NGaWx0ZXJzOiB1bmtub3duW107XG4gIC8vIFRoZSB0aWxlIGFuZCB2YWx1ZSB3aG9zZSByb3dzIHBhbmVsIGlzIG9wZW4sIG9yIG51bGwuXG4gIHNob3dSb3dzOiB1bmtub3duO1xufVxuIl19
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LXZpZXdlci1mZWF0dXJlLnR5cGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3JlcG9ydHMvaW50ZXJmYWNlcy9yZXBvcnQtdmlld2VyLWZlYXR1cmUudHlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQSB2aWV3ZXIgY2FwYWJpbGl0eSB0aGUgc2VydmVyIGNhbiBzZXJ2ZSAoUmVwb3J0LnZpZXdlckZlYXR1cmVzKS4gVGhlXG4vLyB2aWV3ZXIgb2ZmZXJzIGEgY29udHJvbCBvbmx5IHdoZW4gdGhlIHJlcG9ydCBsaXN0cyBpdHMgZmVhdHVyZSwgYW5kIGl0XG4vLyBuYW1lcyB0aGUgZmVhdHVyZXMgaXQgaW1wbGVtZW50cyBvbiB0aGUgcmVwb3J0IEdFVCAoZmVhdHVyZXM9PGxpc3Q+
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LXZpZXdlci1mZWF0dXJlLnR5cGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3JlcG9ydHMvaW50ZXJmYWNlcy9yZXBvcnQtdmlld2VyLWZlYXR1cmUudHlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQSB2aWV3ZXIgY2FwYWJpbGl0eSB0aGUgc2VydmVyIGNhbiBzZXJ2ZSAoUmVwb3J0LnZpZXdlckZlYXR1cmVzKS4gVGhlXG4vLyB2aWV3ZXIgb2ZmZXJzIGEgY29udHJvbCBvbmx5IHdoZW4gdGhlIHJlcG9ydCBsaXN0cyBpdHMgZmVhdHVyZSwgYW5kIGl0XG4vLyBuYW1lcyB0aGUgZmVhdHVyZXMgaXQgaW1wbGVtZW50cyBvbiB0aGUgcmVwb3J0IEdFVCAoZmVhdHVyZXM9PGxpc3Q+KS5cbi8vIE1pcnJvcnMgdGhlIHNlcnZlcidzIFJlcG9ydFZpZXdlckZlYXR1cmVFbnVtIHZhbHVlIGZvciB2YWx1ZS5cbmV4cG9ydCB0eXBlIFJlcG9ydFZpZXdlckZlYXR1cmUgPVxuICB8ICdleGNsdWRlVmFsdWVzJ1xuICB8ICdudW1iZXJSYW5nZSdcbiAgfCAnbWF0Y2hBbnknXG4gIHwgJ3BhZ2VTY29wZSdcbiAgfCAnY2FzY2FkaW5nT3B0aW9ucydcbiAgfCAnc2NvcGVGaWx0ZXJzJ1xuICB8ICdkcmlsbCdcbiAgfCAnY3Jvc3NGaWx0ZXInXG4gIHwgJ3Nob3dSb3dzJ1xuICB8ICdncmlkJztcbiJdfQ==
|
|
@@ -14,7 +14,7 @@ import { isCalendarDay, isChartGranularity } from './report-state';
|
|
|
14
14
|
export const MARK_ACTION_LABELS = {
|
|
15
15
|
drill: 'Drill down',
|
|
16
16
|
crossFilter: 'Filter other tiles',
|
|
17
|
-
|
|
17
|
+
showRows: 'Show rows',
|
|
18
18
|
};
|
|
19
19
|
// Where a click was and what made it. A PointerEvent names its pointer; a
|
|
20
20
|
// TouchEvent is a touch; anything else (a plain MouseEvent, a key press
|
|
@@ -190,4 +190,4 @@ function numeric(value) {
|
|
|
190
190
|
function finite(value) {
|
|
191
191
|
return typeof value === 'number' && Number.isFinite(value) ? value : null;
|
|
192
192
|
}
|
|
193
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFyay1jbGljay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcHAvcmVwb3J0cy9tYXJrLWNsaWNrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWdCQSxPQUFPLEVBQ0wsWUFBWSxFQUNaLGNBQWMsRUFDZCxrQkFBa0IsRUFFbEIsaUJBQWlCLEVBQ2pCLG1CQUFtQixHQUNwQixNQUFNLGtCQUFrQixDQUFDO0FBQzFCLE9BQU8sRUFBRSxhQUFhLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUduRSwyRUFBMkU7QUFDM0UsaUVBQWlFO0FBQ2pFLEVBQUU7QUFDRiw2RUFBNkU7QUFDN0UsNkVBQTZFO0FBQzdFLGlDQUFpQztBQUNqQyw0RUFBNEU7QUFDNUUsNkVBQTZFO0FBQzdFLDZFQUE2RTtBQUM3RSx1REFBdUQ7QUFFdkQscUNBQXFDO0FBQ3JDLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFxQztJQUNsRSxLQUFLLEVBQUUsWUFBWTtJQUNuQixXQUFXLEVBQUUsb0JBQW9CO0lBQ2pDLE1BQU0sRUFBRSxXQUFXO0NBQ3BCLENBQUM7QUFFRiwwRUFBMEU7QUFDMUUsd0VBQXdFO0FBQ3hFLG9DQUFvQztBQUNwQyxNQUFNLFVBQVUsV0FBVyxDQUFDLEtBQXlDO0lBQ25FLE1BQU0sS0FBSyxHQUFHLEtBQUssRUFBRSxjQUFjLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN6QyxJQUFJLElBQUksR0FBdUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztJQUV6RSxJQUFJLEtBQUssRUFBRSxXQUFXLEtBQUssT0FBTyxJQUFJLEtBQUssRUFBRSxXQUFXLEtBQUssS0FBSyxJQUFJLEtBQUssRUFBRSxXQUFXLEtBQUssT0FBTyxFQUFFLENBQUM7UUFDckcsSUFBSSxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUM7SUFDM0IsQ0FBQztJQUVELE9BQU87UUFDTCxD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MUYsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1FBQ3JDLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFRCxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsU0FBUyxLQUFLLEtBQUssSUFBSSxNQUFNLENBQUMsU0FBUyxLQUFLLE9BQU8sQ0FBQztJQUV2RSxPQUFPO1FBQ0wsTUFBTTtRQUNOLEdBQUc7UUFDSCxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxNQUFNLEVBQUUsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3hHLE1BQU07UUFDTixLQUFLO0tBQ04sQ0FBQztBQUNKLENBQUM7QUFFRCxxRUFBcUU7QUFDckUsU0FBUyxPQUFPLENBQUMsS0FBYztJQUM3QixJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksS0FBSyxLQUFLLFNBQVMsSUFBSSxLQUFLLEtBQUssRUFBRSxFQUFFLENBQUM7UUFDMUQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDdkIsQ0FBQztBQUVELDhCQUE4QjtBQUM5QixTQUFTLE1BQU0sQ0FBQyxLQUFnQztJQUM5QyxPQUFPLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUM1RSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50RGF0YURyaWxsIH0gZnJvbSAnLi9pbnRlcmZhY2VzL2NvbXBvbmVudC1kYXRhLWRyaWxsLmludGVyZmFjZSc7XG5pbXBvcnQgeyBSZXBvcnRDaGFydEhpdCB9IGZyb20gJy4vaW50ZXJmYWNlcy9yZXBvcnQtY2hhcnQtaGl0LmludGVyZmFjZSc7XG5pbXBvcnQgeyBSZXBvcnREcmlsbFN0ZXAgfSBmcm9tICcuL2ludGVyZmFjZXMvcmVwb3J0LWRyaWxsLXN0ZXAuaW50ZXJmYWNlJztcbmltcG9ydCB7IFJlcG9ydE1hcmtBY3Rpb24gfSBmcm9tICcuL2ludGVyZmFjZXMvcmVwb3J0LW1hcmstYWN0aW9uLnR5cGUnO1xuaW1wb3J0IHsgUmVwb3J0TWFya0NsaWNrIH0gZnJvbSAnLi9pbnRlcmZhY2VzL3JlcG9ydC1tYXJrLWNsaWNrLmludGVyZmFjZSc7XG5pbXBvcnQgeyBSZXBvcnRNYXJrQ29udGV4dCB9IGZyb20gJy4vaW50ZXJmYWNlcy9yZXBvcnQtbWFyay1jb250ZXh0LmludGVyZmFjZSc7XG5pbXBvcnQgeyBSZXBvcnRNYXJrRGVjaXNpb24gfSBmcm9tICcuL2ludGVyZmFjZXMvcmVwb3J0LW1hcmstZGVjaXNpb24uaW50ZXJmYWNlJztcbmltcG9ydCB7IFJlcG9ydE1hcmtFdmVudCB9IGZyb20gJy4vaW50ZXJmYWNlcy9yZXBvcnQtbWFyay1ldmVudC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUmVwb3J0TWFya1BvaW50IH0gZnJvbSAnLi9pbnRlcmZhY2VzL3JlcG9ydC1tYXJrLXBvaW50LmludGVyZmFjZSc7XG5pbXBvcnQge1xuICBDaGFydENvbmZpZyxcbiAgQ29tcG9uZW50RGF0YSxcbiAgS3BpQ29uZmlnLFxuICBSZXBvcnRDb21wb25lbnQsXG4gIFJlcG9ydEZvcm1hdENvbnRleHQsXG59IGZyb20gJy4vaW50ZXJmYWNlcy9yZXBvcnQuaW50ZXJmYWNlJztcbmltcG9ydCB7XG4gIGNoYXJ0Q29sdW1ucyxcbiAgY2hhcnREYXRlTGFiZWwsXG4gIGV4dHJhY3RDaGFydFNlcmllcyxcbiAgRXh0cmFjdGVkQ2hhcnRTZXJpZXMsXG4gIGZvcm1hdFBlcmlvZExhYmVsLFxuICBwYXJ0aWFsU2VnbWVudE93bmVyLFxufSBmcm9tICcuL29wdGlvbi1idWlsZGVyJztcbmltcG9ydCB7IGlzQ2FsZW5kYXJEYXksIGlzQ2hhcnRHcmFudWxhcml0eSB9IGZyb20gJy4vcmVwb3J0LXN0YXRlJztcblxuXG4vLyBUaGUgb25lIGNsaWNrIG1vZGVsIChCMTApOiB3aGF0IGEgY2xpY2sgb24gYSB0aWxlJ3MgbWFyayBzdGFuZHMgZm9yLCBhbmRcbi8vIHdoYXQgdGhlIHRpbGUgZG9lcyB3aXRoIGl0LiBQdXJlLCBzbyB0aGUgbm9kZSBoYXJuZXNzIHJ1bnMgaXQuXG4vL1xuLy8gLSBjaGFydE1hcmtDbGljayBhbmQga3BpTWFya0NsaWNrIHR1cm4gYSBjbGljayBpbnRvIGEgUmVwb3J0TWFya0NsaWNrOiB0aGVcbi8vICAgcmF3IHZhbHVlcyBmcm9tIGRhdGEucm93cyAobmV2ZXIgdGhlIGRyYXduIHRleHQpLCB0aGUgY2xpY2tlZCBzZXJpZXMgYW5kXG4vLyAgIGl0cyBudW1iZXIsIGFuZCB0aGUgcG9pbnRlci5cbi8vIC0gbWFya0FjdGlvbnMgbGlzdHMgd2hhdCB0aGUgY2xpY2sgbWF5IGRvLCBlYWNoIG9ubHkgd2hpbGUgaXRzIGZlYXR1cmUgaXNcbi8vICAgb2ZmZXJlZDsgZGVjaWRlTWFya0NsaWNrIGFwcGxpZXMgdGhlIGFjdGlvbiBydWxlOiBub25lIGRvZXMgbm90aGluZywgb25lXG4vLyAgIHJ1bnMsIHR3byBvciBtb3JlIG9wZW4gdGhlIG1lbnUgYXQgdGhlIG1hcmssIGFuZCBhIHRvdWNoIGZpcnN0IHNob3dzIHRoZVxuLy8gICB0b29sdGlwIGFuZCBhY3RzIG9uIGEgc2Vjb25kIHRhcCBvbiB0aGUgc2FtZSBtYXJrLlxuXG4vLyBBIG1hcmsgbWVudSByb3cncyB0ZXh0LCBieSBhY3Rpb24uXG5leHBvcnQgY29uc3QgTUFSS19BQ1RJT05fTEFCRUxTOiBSZWNvcmQ8UmVwb3J0TWFya0FjdGlvbiwgc3RyaW5nPiA9IHtcbiAgZHJpbGw6ICdEcmlsbCBkb3duJyxcbiAgY3Jvc3NGaWx0ZXI6ICdGaWx0ZXIgb3RoZXIgdGlsZXMnLFxuICBkZXRhaWw6ICdTaG93IHJvd3MnLFxufTtcblxuLy8gV2hlcmUgYSBjbGljayB3YXMgYW5kIHdoYXQgbWFkZSBpdC4gQSBQb2ludGVyRXZlbnQgbmFtZXMgaXRzIHBvaW50ZXI7IGFcbi8vIFRvdWNoRXZlbnQgaXMgYSB0b3VjaDsgYW55dGhpbmcgZWxzZSAoYSBwbGFpbiBNb3VzZUV2ZW50LCBhIGtleSBwcmVzc1xuLy8gdGhhdCBjbGlja2VkKSByZWFkcyBhcyB0aGUgbW91c2UuXG5leHBvcnQgZnVuY3Rpb24gbWFya1BvaW50ZXIoZXZlbnQ6IFJlcG9ydE1hcmtFdmVudCB8IG51bGwgfCB1bmRlZmluZWQpOiBSZXBvcnRNYXJrQ2xpY2tbJ3BvaW50ZXInXSB7XG4gIGNvbnN0IHRvdWNoID0gZXZlbnQ/LmNoYW5nZWRUb3VjaGVzPy5bMF07XG4gIGxldCB0eXBlOiBSZXBvcnRNYXJrQ2xpY2tbJ3BvaW50ZXInXVsndHlwZSddID0gdG91Y2ggPyAndG91Y2gnIDogJ21vdXNlJztcblxuICBpZiAoZXZlbnQ/LnBvaW50ZXJUeXBlID09PSAndG91Y2gnIHx8IGV2ZW50Py5wb2ludGVyVHlwZSA9PT0gJ3BlbicgfHwgZXZlbnQ/LnBvaW50ZXJUeXBlID09PSAnbW91c2UnKSB7XG4gICAgdHlwZSA9IGV2ZW50LnBvaW50ZXJUeXBlO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICB4OiBmaW5pdGUoZXZlbnQ/LnBhZ2VYKSA/PyBmaW5pdGUodG91Y2g/LnBhZ2VYKSA/PyAwLFxuICAgIHk6IGZpbml0ZShldmVudD8ucGFnZVkpID8/IGZpbml0ZSh0b3VjaD8ucGFnZVkpID8/IDAsXG4gICAgdHlwZSxcbiAgfTtcbn1cblxuLy8gQSBjbGljayBvbiBhIGNoYXJ0OiBhIGJhciAoYW5kIGl0cyBzcGxpdCB2YWx1ZSksIGEgbGluZSBvciBhcmVhIHBvaW50IG9yXG4vLyB0aGUgbGluZSBpdHNlbGYsIGEgcGllIHNsaWNlLCBhIHdhdGVyZmFsbCBzdGVwLCBvciBhIGNhdGVnb3J5J3MgZW1wdHkgYmFuZFxuLy8gKHdpdGggdGhlIG1vdXNlIG9ubHk6IGEgdGFwIHRoZXJlIGlzIGhvdyBhIHBob25lIHNob3dzIHRoZSB0b29sdGlwKS4gQVxuLy8gcGFydGlhbCBzZWdtZW50IHJlYWRzIGFzIHRoZSBzZXJpZXMgaXQgY29udGludWVzLCBhbmQgYSBjb21wYXJlZCBzZXJpZXNcbi8vIGFzIGl0cyBjYXRlZ29yeSwgdGhlIGN1cnJlbnQgcGVyaW9kLiBudWxsIGZvciBhIHJlZmVyZW5jZSBsaW5lIG9yIGJhbmQsXG4vLyBhIHdhdGVyZmFsbCdzIGJhc2UgYW5kIGl0cyBUb3RhbCwgYW5kIGEgY2F0ZWdvcnkgdGhlIGNoYXJ0IGRvZXMgbm90IGhhdmUuXG5leHBvcnQgZnVuY3Rpb24gY2hhcnRNYXJrQ2xpY2soXG4gIGNvbXBvbmVudDogUmVwb3J0Q29tcG9uZW50LFxuICBkYXRhOiBDb21wb25lbnREYXRhLFxuICBjb250ZXh0OiBSZXBvcnRGb3JtYXRDb250ZXh0LFxuICBoaXQ6IFJlcG9ydENoYXJ0SGl0LFxuICBldmVudDogUmVwb3J0TWFya0V2ZW50IHwgbnVsbCB8IHVuZGVmaW5lZCxcbik6IFJlcG9ydE1hcmtDbGljayB8IG51bGwge1xuICBjb25zdCBwb2ludGVyID0gbWFya1BvaW50ZXIoZXZlbnQpO1xuICBjb25zdCBleHRyYWN0ZWQgPSBleHRyYWN0Q2hhcnRTZXJpZXMoY29tcG9uZW50LCBkYXRhKTtcbiAgY29uc3Qgc2VyaWVzID0gaGl0U2VyaWVzKGNvbXBvbmVudC5jb25maWcgYXMgQ2hhcnRDb25maWcsIGV4dHJhY3RlZCwgaGl0KTtcblxuICBpZiAoc2VyaWVzID09PSBudWxsIHx8ICFOdW1iZXIuaXNJbnRlZ2VyKGhpdC5kYXRhSW5kZXgpXG4gICAgfHwgaGl0LmRhdGFJbmRleCA8IDAgfHwgaGl0LmRhdGFJbmRleCA+PSBleHRyYWN0ZWQucmF3Q2F0ZWdvcmllcy5sZW5ndGhcbiAgICB8fCAoc2VyaWVzID09PSAnYmFuZCcgJiYgcG9pbnRlci50eXBlICE9PSAnbW91c2UnKSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3QgY2xpY2tlZCA9IHNlcmllcyA9PT0gJ2JhbmQnID8gbnVsbCA6IGV4dHJhY3RlZC5zZXJpZXNbc2VyaWVzXTtcblxuICByZXR1cm4ge1xuICAgIGNvbXBvbmVudElkOiBjb21wb25lbnQuaWQsXG4gICAgcG9pbnRzOiBjaGFydFBvaW50cyhjb21wb25lbnQsIGRhdGEsIGNvbnRleHQsIGV4dHJhY3RlZCwgaGl0LmRhdGFJbmRleCwgc2VyaWVzID09PSAnYmFuZCcgPyBudWxsIDogc2VyaWVzKSxcbiAgICBtZWFzdXJlOiBjbGlja2VkPy5tZWFzdXJlLmNvbHVtbiA/PyBudWxsLFxuICAgIHZhbHVlOiBjbGlja2VkPy52YWx1ZXNbaGl0LmRhdGFJbmRleF0gPz8gbnVsbCxcbiAgICBhZGRpdGl2ZTogISEoZXZlbnQ/LmN0cmxLZXkgfHwgZXZlbnQ/Lm1ldGFLZXkpLFxuICAgIHBvaW50ZXIsXG4gIH07XG59XG5cbi8vIEEgY2xpY2sgb24gYSBLUEkncyB2YWx1ZTogbm8gcG9pbnRzLCB0aGUgS1BJJ3MgbWVhc3VyZSBhbmQgaXRzIG51bWJlci5cbmV4cG9ydCBmdW5jdGlvbiBrcGlNYXJrQ2xpY2soXG4gIGNvbXBvbmVudDogUmVwb3J0Q29tcG9uZW50LFxuICBkYXRhOiBDb21wb25lbnREYXRhIHwgbnVsbCxcbiAgZXZlbnQ6IFJlcG9ydE1hcmtFdmVudCB8IG51bGwgfCB1bmRlZmluZWQsXG4pOiBSZXBvcnRNYXJrQ2xpY2sge1xuICBjb25zdCBjb25maWcgPSAoY29tcG9uZW50LmNvbmZpZyA/PyB7fSkgYXMgS3BpQ29uZmlnO1xuICBjb25zdCByb3cgPSBkYXRhPy5yb3dzPy5bMF07XG4gIGNvbnN0IG1lYXN1cmUgPSBjb25maWcubWVhc3VyZT8uY29sdW1uID8/IE9iamVjdC5rZXlzKHJvdyA/PyB7fSlbMF0gPz8gbnVsbDtcbiAgY29uc3QgdmFsdWUgPSBkYXRhPy5rcGkgPyBkYXRhLmtwaS52YWx1ZSA6IGZpbml0ZShudW1lcmljKG1lYXN1cmUgPT09IG51bGwgPyB1bmRlZmluZWQgOiByb3c/LlttZWFzdXJlXSkpO1xuXG4gIHJldHVybiB7XG4gICAgY29tcG9uZW50SWQ6IGNvbXBvbmVudC5pZCxcbiAgICBwb2ludHM6IFtdLFxuICAgIG1lYXN1cmUsXG4gICAgdmFsdWU6IHZhbHVlID8/IG51bGwsXG4gICAgYWRkaXRpdmU6ICEhKGV2ZW50Py5jdHJsS2V5IHx8IGV2ZW50Py5tZXRhS2V5KSxcbiAgICBwb2ludGVyOiBtYXJrUG9pbnRlcihldmVudCksXG4gIH07XG59XG5cbi8vIFdoYXQgYSB0aWxlJ3MgbWFya3MgbWF5IGRvIG9uIGl0cyBsYXN0IGFuc3dlciwgYmVmb3JlIGFueSBvbmUgbWFyayBpc1xuLy8gY2xpY2tlZDogdGhlIGNoYXJ0J3MgdG9vbHRpcCBoaW50IGFuZCBpdHMgaGFuZCBwb2ludGVyIHJlYWQgaXQuIERyaWxsXG4vLyBkb3duIHdoaWxlIGRyaWxsIGlzIG9mZmVyZWQgYW5kIHRoZSBhbnN3ZXIgbmFtZXMgYSBsZXZlbCBiZWxvdy5cbmV4cG9ydCBmdW5jdGlvbiB0aWxlTWFya0FjdGlvbnMoY29udGV4dDogUmVwb3J0TWFya0NvbnRleHQpOiBSZXBvcnRNYXJrQWN0aW9uW10ge1xuICByZXR1cm4gY29udGV4dC5mZWF0dXJlcy5pbmNsdWRlcygnZHJpbGwnKSAmJiBjb250ZXh0LmRhdGE/LmRyaWxsPy5uZXh0ID8gWydkcmlsbCddIDogW107XG59XG5cbi8vIFdoYXQgdGhpcyBjbGljayBtYXkgZG86IHRoZSB0aWxlJ3MgYWN0aW9ucyB0aGF0IGFwcGx5IHRvIHRoZSBjbGlja2VkIG1hcmsuXG4vLyBEcmlsbCBkb3duIG5lZWRzIGEgcGVyaW9kIG9uIHRoZSBkcmlsbGVkIGF4aXMsIHNvIGEgS1BJJ3MgdmFsdWUgYW5kIGEgbWFya1xuLy8gb2ZmIHRoYXQgYXhpcyBuZXZlciBkcmlsbC5cbmV4cG9ydCBmdW5jdGlvbiBtYXJrQWN0aW9ucyhjbGljazogUmVwb3J0TWFya0NsaWNrLCBjb250ZXh0OiBSZXBvcnRNYXJrQ29udGV4dCk6IFJlcG9ydE1hcmtBY3Rpb25bXSB7XG4gIHJldHVybiB0aWxlTWFya0FjdGlvbnMoY29udGV4dClcbiAgICAuZmlsdGVyKChhY3Rpb24pID0+IGFjdGlvbiAhPT0gJ2RyaWxsJyB8fCBkcmlsbFBvaW50KGNsaWNrLCBjb250ZXh0LmRhdGE/LmRyaWxsKSAhPT0gbnVsbCk7XG59XG5cbi8vIFRoZSBhY3Rpb24gcnVsZSAoQjEwLjIpLiBObyBhY3Rpb246IG5vdGhpbmcgaGFwcGVucy4gQSB0b3VjaCAob3IgYSBwZW4pXG4vLyBvbiBhIGNoYXJ0J3MgbWFyayBmaXJzdCBzaG93cyBpdHMgdG9vbHRpcCBvbmx5LCBhbmQgYSBzZWNvbmQgdGFwIG9uIHRoZVxuLy8gc2FtZSBtYXJrIGFjdHM7IGEgS1BJJ3MgdmFsdWUgaGFzIG5vIHRvb2x0aXAsIHNvIGl0cyBmaXJzdCB0YXAgYWN0cy4gVGhlblxuLy8gb25lIGFjdGlvbiBydW5zIGF0IG9uY2UsIGFuZCB0d28gb3IgbW9yZSBvcGVuIHRoZSBtZW51IGF0IHRoZSBtYXJrLlxuZXhwb3J0IGZ1bmN0aW9uIGRlY2lkZU1hcmtDbGljayhcbiAgY2xpY2s6IFJlcG9ydE1hcmtDbGljayxcbiAgYWN0aW9uczogcmVhZG9ubHkgUmVwb3J0TWFya0FjdGlvbltdLFxuICB0b3VjaGVkOiBzdHJpbmcgfCBudWxsLFxuKTogUmVwb3J0TWFya0RlY2lzaW9uIHtcbiAgaWYgKCFhY3Rpb25zLmxlbmd0aCkge1xuICAgIHJldHVybiB7IG91dGNvbWU6ICdub25lJywgYWN0aW9uczogW10sIHRvdWNoZWQ6IG51bGwgfTtcbiAgfVxuXG4gIGNvbnN0IGtleSA9IG1hcmtLZXkoY2xpY2spO1xuICBpZiAoY2xpY2sucG9pbnRlci50eXBlICE9PSAnbW91c2UnICYmIGNsaWNrLnBvaW50cy5sZW5ndGggJiYgdG91Y2hlZCAhPT0ga2V5KSB7XG4gICAgcmV0dXJuIHsgb3V0Y29tZTogJ3Rvb2x0aXAnLCBhY3Rpb25zOiBbLi4uYWN0aW9uc10sIHRvdWNoZWQ6IGtleSB9O1xuICB9XG5cbiAgcmV0dXJuIHsgb3V0Y29tZTogYWN0aW9ucy5sZW5ndGggPT09IDEgPyAncnVuJyA6ICdtZW51JywgYWN0aW9uczogWy4uLmFjdGlvbnNdLCB0b3VjaGVkOiBudWxsIH07XG59XG5cbi8vIFdoaWNoIG1hcmsgYSBjbGljayBpcyBvbjogaXRzIHRpbGUsIGl0cyByYXcgdmFsdWVzIGFuZCBpdHMgc2VyaWVzLiBUd29cbi8vIHRhcHMgYXJlIG9uIHRoZSBzYW1lIG1hcmsgd2hlbiB0aGVpciBrZXlzIG1hdGNoLlxuZXhwb3J0IGZ1bmN0aW9uIG1hcmtLZXkoY2xpY2s6IFJlcG9ydE1hcmtDbGljayk6IHN0cmluZyB7XG4gIHJldHVybiBKU09OLnN0cmluZ2lmeShbXG4gICAgY2xpY2suY29tcG9uZW50SWQsXG4gICAgY2xpY2sucG9pbnRzLm1hcCgocG9pbnQpID0+IFtwb2ludC5jb2x1bW4sIHBvaW50LnJhdyA/PyBudWxsXSksXG4gICAgY2xpY2subWVhc3VyZSxcbiAgXSk7XG59XG5cbi8vIFRoZSBwb2ludCBhIGRyaWxsIHN0ZXBzIGludG86IHRoZSBjbGlja2VkIHBlcmlvZCBvbiB0aGUgZHJpbGxlZCBheGlzLCBvclxuLy8gbnVsbCB3aGVuIHRoZSBjbGljayBoYXMgbm9uZS5cbmV4cG9ydCBmdW5jdGlvbiBkcmlsbFBvaW50KFxuICBjbGljazogUmVwb3J0TWFya0NsaWNrLFxuICBkcmlsbDogQ29tcG9uZW50RGF0YURyaWxsIHwgbnVsbCB8IHVuZGVmaW5lZCxcbik6IFJlcG9ydE1hcmtQb2ludCB8IG51bGwge1xuICByZXR1cm4gZHJpbGxcbiAgICA/IGNsaWNrLnBvaW50cy5maW5kKChwb2ludCkgPT4gcG9pbnQuY29sdW1uID09PSBkcmlsbC5heGlzICYmICEhcG9pbnQucGVyaW9kKSA/PyBudWxsXG4gICAgOiBudWxsO1xufVxuXG4vLyBUaGUgZHJpbGwgcGF0aCBvbmUgbGV2ZWwgZG93biBmcm9tIHdoYXQgdGhlIGNoYXJ0IHNob3dzOiB0aGUgc3RlcHMgdGhlXG4vLyBzZXJ2ZXIgYXBwbGllZCAoZHJpbGwucGF0aCksIHRoZW4gdGhlIGNsaWNrZWQgcGVyaW9kIGF0IHRoZSBsZXZlbCBpdCB3YXNcbi8vIGNsaWNrZWQgYXQgKGRyaWxsLmxldmVsKSwgd2hpY2ggdGhlIGNoYXJ0IHRoZW4gc2hvd3MgYXQgZHJpbGwubmV4dC4gQSBzdGVwXG4vLyBuYW1lcyB0aGUgcGVyaW9kIGNsaWNrZWQsIHNvIHRoZSBmaXJzdCBzdGVwIGlzIGF0IHRoZSBjaGFydCdzIHRvcCBsZXZlbC5cbi8vIG51bGwgd2hlbiB0aGUgY2hhcnQgaXMgYXQgaXRzIGxvd2VzdCBsZXZlbCBvciB0aGUgY2xpY2sgaGFzIG5vIHBlcmlvZC5cbmV4cG9ydCBmdW5jdGlvbiBkcmlsbERvd25QYXRoKFxuICBkcmlsbDogQ29tcG9uZW50RGF0YURyaWxsIHwgbnVsbCB8IHVuZGVmaW5lZCxcbiAgY2xpY2s6IFJlcG9ydE1hcmtDbGljayxcbik6IFJlcG9ydERyaWxsU3RlcFtdIHwgbnVsbCB7XG4gIGNvbnN0IHBvaW50ID0gZHJpbGxQb2ludChjbGljaywgZHJpbGwpO1xuXG4gIGlmICghZHJpbGw/Lm5leHQgfHwgIXBvaW50Py5wZXJpb2QpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHJldHVybiBbXG4gICAgLi4uZHJpbGwucGF0aC5tYXAoKGNydW1iKSA9PiAoeyBsZXZlbDogY3J1bWIubGV2ZWwsIHZhbHVlOiBjcnVtYi52YWx1ZSB9KSksXG4gICAgeyBsZXZlbDogZHJpbGwubGV2ZWwsIHZhbHVlOiBwb2ludC5wZXJpb2QgfSxcbiAgXTtcbn1cblxuLy8gVGhlIGV4dHJhY3RlZCBzZXJpZXMgYSBoaXQgaXMgb246IGl0cyBpbmRleCwgJ2JhbmQnIGZvciBhIGNhdGVnb3J5J3Ncbi8vIGVtcHR5IGJhbmQsIG9yIG51bGwgZm9yIHdoYXQgaXMgbm90IGEgbWFyay4gQW4gYXhpcyBjaGFydCdzIHBhcnRpYWxcbi8vIHNlZ21lbnQgbWFwcyB0byB0aGUgc2VyaWVzIGl0IGNvbnRpbnVlczsgYSByZWZlcmVuY2UgY2FycmllciBtYXBzIHRvXG4vLyBub3RoaW5nLiBBIHdhdGVyZmFsbCdzIHN0ZXBzIGFyZSBpdHMgc2Vjb25kIHNlcmllcyAodGhlIGZpcnN0IGlzIHRoZVxuLy8gaW52aXNpYmxlIGJhc2UpOyBhIHBpZSdzIHNsaWNlcyBpdHMgb25seSBvbmUuXG5mdW5jdGlvbiBoaXRTZXJpZXMoY29uZmlnOiBDaGFydENvbmZpZywgZXh0cmFjdGVkOiBFeHRyYWN0ZWRDaGFydFNlcmllcywgaGl0OiBSZXBvcnRDaGFydEhpdCk6IG51bWJlciB8ICdiYW5kJyB8IG51bGwge1xuICBjb25zdCBjaGFydFR5cGUgPSBjb25maWcuY2hhcnRUeXBlID8/ICdiYXInO1xuXG4gIGlmIChoaXQuc2VyaWVzSW5kZXggPT09IG51bGwpIHtcbiAgICByZXR1cm4gY2hhcnRUeXBlID09PSAncGllJyB8fCBjaGFydFR5cGUgPT09ICdkb251dCcgPyBudWxsIDogJ2JhbmQnO1xuICB9XG5cbiAgaWYgKGNoYXJ0VHlwZSA9PT0gJ3dhdGVyZmFsbCcpIHtcbiAgICByZXR1cm4gaGl0LnNlcmllc0luZGV4ID09PSAxICYmIGV4dHJhY3RlZC5zZXJpZXMubGVuZ3RoID8gMCA6IG51bGw7XG4gIH1cblxuICBpZiAoaGl0LnNlcmllc0luZGV4ID49IDAgJiYgaGl0LnNlcmllc0luZGV4IDwgZXh0cmFjdGVkLnNlcmllcy5sZW5ndGgpIHtcbiAgICByZXR1cm4gY2hhcnRUeXBlID09PSAncGllJyB8fCBjaGFydFR5cGUgPT09ICdkb251dCcgPyAwIDogaGl0LnNlcmllc0luZGV4O1xuICB9XG5cbiAgY29uc3Qgb3duZXIgPSBjaGFydFR5cGUgPT09ICdwaWUnIHx8IGNoYXJ0VHlwZSA9PT0gJ2RvbnV0JyA/IG51bGwgOiBwYXJ0aWFsU2VnbWVudE93bmVyKGhpdC5zZXJpZXNJZCk7XG5cbiAgcmV0dXJuIG93bmVyICE9PSBudWxsICYmIG93bmVyIDwgZXh0cmFjdGVkLnNlcmllcy5sZW5ndGggPyBvd25lciA6IG51bGw7XG59XG5cbi8vIFRoZSBjbGlja2VkIGNhdGVnb3J5LCB0aGVuIHRoZSBzcGxpdCB2YWx1ZSB3aGVuIHRoZSBjaGFydCBzcGxpdHMgYnlcbi8vIGFub3RoZXIgY29sdW1uIHRoYW4gaXRzIGF4aXMgKGEgY29sb3JCeSBjaGFydCdzIHNlcmllcyBhcmUgaXRzIGNhdGVnb3JpZXMpLlxuZnVuY3Rpb24gY2hhcnRQb2ludHMoXG4gIGNvbXBvbmVudDogUmVwb3J0Q29tcG9uZW50LFxuICBkYXRhOiBDb21wb25lbnREYXRhLFxuICBjb250ZXh0OiBSZXBvcnRGb3JtYXRDb250ZXh0LFxuICBleHRyYWN0ZWQ6IEV4dHJhY3RlZENoYXJ0U2VyaWVzLFxuICBkYXRhSW5kZXg6IG51bWJlcixcbiAgc2VyaWVzOiBudW1iZXIgfCBudWxsLFxuKTogUmVwb3J0TWFya1BvaW50W10ge1xuICBjb25zdCBjb25maWcgPSBjb21wb25lbnQuY29uZmlnIGFzIENoYXJ0Q29uZmlnO1xuICBjb25zdCB7IHhDb2x1bW4sIGdyb3VwQ29sdW1uIH0gPSBjaGFydENvbHVtbnMoY29uZmlnLCBkYXRhKTtcbiAgY29uc3QgcG9pbnRzID0gW2NhdGVnb3J5UG9pbnQoY29uZmlnLCBkYXRhLCBjb250ZXh0LCBleHRyYWN0ZWQsIHhDb2x1bW4sIGRhdGFJbmRleCldO1xuXG4gIGlmIChzZXJpZXMgIT09IG51bGwgJiYgZ3JvdXBDb2x1bW4gJiYgZ3JvdXBDb2x1bW4gIT09IHhDb2x1bW4pIHtcbiAgICBwb2ludHMucHVzaCh7IGNvbHVtbjogZ3JvdXBDb2x1bW4sIHJhdzogZXh0cmFjdGVkLnJhd0dyb3Vwc1tzZXJpZXNdLCBsYWJlbDogZXh0cmFjdGVkLnNlcmllc1tzZXJpZXNdLm5hbWUgfSk7XG4gIH1cblxuICByZXR1cm4gcG9pbnRzO1xufVxuXG4vLyBUaGUgY2F0ZWdvcnkgYXMgdGhlIHJvd3MgaG9sZCBpdCBhbmQgYXMgdGhlIGF4aXMgd3JvdGUgaXQuIE9uIGEgdGltZSBheGlzXG4vLyBpdCBhbHNvIGdpdmVzIHRoZSBwZXJpb2QncyBmaXJzdCBkYXkgYW5kIHRoZSBncmFpbiwgYW5kIHJlYWRzIGFzIHRoZVxuLy8gdG9vbHRpcCBuYW1lcyBpdCAoJ0phbnVhcnkgMjAyNicpOyBhIHBpZSB3cml0ZXMgaXRzIHNsaWNlcyBhcyB0aGV5IGNvbWUuXG5mdW5jdGlvbiBjYXRlZ29yeVBvaW50KFxuICBjb25maWc6IENoYXJ0Q29uZmlnLFxuICBkYXRhOiBDb21wb25lbnREYXRhLFxuICBjb250ZXh0OiBSZXBvcnRGb3JtYXRDb250ZXh0LFxuICBleHRyYWN0ZWQ6IEV4dHJhY3RlZENoYXJ0U2VyaWVzLFxuICBjb2x1bW46IHN0cmluZyxcbiAgZGF0YUluZGV4OiBudW1iZXIsXG4pOiBSZXBvcnRNYXJrUG9pbnQge1xuICBjb25zdCByYXcgPSBleHRyYWN0ZWQucmF3Q2F0ZWdvcmllc1tkYXRhSW5kZXhdO1xuICBjb25zdCBsYWJlbCA9IGV4dHJhY3RlZC5jYXRlZ29yaWVzW2RhdGFJbmRleF07XG4gIGNvbnN0IGdyYWluID0gaXNDaGFydEdyYW51bGFyaXR5KGRhdGEuZ3JhbnVsYXJpdHkpID8gZGF0YS5ncmFudWxhcml0eSA6IG51bGw7XG4gIGNvbnN0IHBlcmlvZCA9IGdyYWluICYmIHJhdyAhPT0gbnVsbCAmJiByYXcgIT09IHVuZGVmaW5lZCA/IFN0cmluZyhyYXcpLnNsaWNlKDAsIDEwKSA6ICcnO1xuXG4gIGlmICghZ3JhaW4gfHwgIWlzQ2FsZW5kYXJEYXkocGVyaW9kKSkge1xuICAgIHJldHVybiB7IGNvbHVtbiwgcmF3LCBsYWJlbCB9O1xuICB9XG5cbiAgY29uc3QgcGllID0gY29uZmlnLmNoYXJ0VHlwZSA9PT0gJ3BpZScgfHwgY29uZmlnLmNoYXJ0VHlwZSA9PT0gJ2RvbnV0JztcblxuICByZXR1cm4ge1xuICAgIGNvbHVtbixcbiAgICByYXcsXG4gICAgbGFiZWw6IHBpZSA/IGxhYmVsIDogZm9ybWF0UGVyaW9kTGFiZWwoU3RyaW5nKHJhdyksIGdyYWluLCB0cnVlLCBjb250ZXh0LmxvY2FsZSwgY2hhcnREYXRlTGFiZWwoY29uZmlnKSksXG4gICAgcGVyaW9kLFxuICAgIGdyYWluLFxuICB9O1xufVxuXG4vLyBBIG51bWJlciBhcyBhIGNlbGwgaG9sZHMgaXQgKGEgbnVtYmVyIG9yIG51bWVyaWMgdGV4dCksIGVsc2UgbnVsbC5cbmZ1bmN0aW9uIG51bWVyaWModmFsdWU6IHVua25vd24pOiBudW1iZXIgfCBudWxsIHtcbiAgaWYgKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09ICcnKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICByZXR1cm4gTnVtYmVyKHZhbHVlKTtcbn1cblxuLy8gQSBmaW5pdGUgbnVtYmVyLCBlbHNlIG51bGwuXG5mdW5jdGlvbiBmaW5pdGUodmFsdWU6IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWQpOiBudW1iZXIgfCBudWxsIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgJiYgTnVtYmVyLmlzRmluaXRlKHZhbHVlKSA/IHZhbHVlIDogbnVsbDtcbn1cbiJdfQ==
|
|
193
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFyay1jbGljay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcHAvcmVwb3J0cy9tYXJrLWNsaWNrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWdCQSxPQUFPLEVBQ0wsWUFBWSxFQUNaLGNBQWMsRUFDZCxrQkFBa0IsRUFFbEIsaUJBQWlCLEVBQ2pCLG1CQUFtQixHQUNwQixNQUFNLGtCQUFrQixDQUFDO0FBQzFCLE9BQU8sRUFBRSxhQUFhLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUduRSwyRUFBMkU7QUFDM0UsaUVBQWlFO0FBQ2pFLEVBQUU7QUFDRiw2RUFBNkU7QUFDN0UsNkVBQTZFO0FBQzdFLGlDQUFpQztBQUNqQyw0RUFBNEU7QUFDNUUsNkVBQTZFO0FBQzdFLDZFQUE2RTtBQUM3RSx1REFBdUQ7QUFFdkQscUNBQXFDO0FBQ3JDLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFxQztJQUNsRSxLQUFLLEVBQUUsWUFBWTtJQUNuQixXQUFXLEVBQUUsb0JBQW9CO0lBQ2pDLFFBQVEsRUFBRSxXQUFXO0NBQ3RCLENBQUM7QUFFRiwwRUFBMEU7QUFDMUUsd0VBQXdFO0FBQ3hFLG9DQUFvQztBQUNwQyxNQUFNLFVBQVUsV0FBVyxDQUFDLEtBQXlDO0lBQ25FLE1BQU0sS0FBSyxHQUFHLEtBQUssRUFBRSxjQUFjLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN6QyxJQUFJLElBQUksR0FBdUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztJQUV6RSxJQUFJLEtBQUssRUFBRSxXQUFXLEtBQUssT0FBTyxJQUFJLEtBQUssRUFBRSxXQUFXLEtBQUssS0FBSyxJQUFJLEtBQUssRUFBRSxXQUFXLEtBQUssT0FBTyxFQUFFLENBQUM7UUFDckcsSUFBSSxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUM7SUFDM0IsQ0FBQztJQUVELE9BQU87UUFDTCxDQUFDLEVBQUUsTUFBTSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsSUFBSSxNQUFNLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUM7UUFDcEQsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDO1FBQ3BELElBQUk7S0FDTCxDQUFDO0FBQ0osQ0FBQztBQUVELDJFQUEyRTtBQUMzRSw2RUFBNkU7QUFDN0UseUVBQXlFO0FBQ3pFLDBFQUEwRTtBQUMxRSwwRUFBMEU7QUFDMUUsNEVBQTRFO0FBQzVFLE1BQU0sVUFBVSxjQUFjLENBQzVCLFNBQTBCLEVBQzFCLElBQW1CLEVBQ25CLE9BQTRCLEVBQzVCLEdBQW1CLEVBQ25CLEtBQXlDO0lBRXpDLE1BQU0sT0FBTyxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNuQyxNQUFNLFNBQVMsR0FBRyxrQkFBa0IsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDdEQsTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFDLFNBQVMsQ0FBQyxNQUFxQixFQUFFLFNBQVMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUUxRSxJQUFJLE1BQU0sS0FBSyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUM7V0FDbEQsR0FBRyxDQUFDLFNBQVMsR0FBRyxDQUFDLElBQUksR0FBRyxDQUFDLFNBQVMsSUFBSSxTQUFTLENBQUMsYUFBYSxDQUFDLE1BQU07V0FDcEUsQ0FBQyxNQUFNLEtBQUssTUFBTSxJQUFJLE9BQU8sQ0FBQyxJQUFJLEtBQUssT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUNyRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxNQUFNLE9BQU8sR0FBRyxNQUFNLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFcEUsT0FBTztRQUNMLFdBQVcsRUFBRSxTQUFTLENBQUMsRUFBRTtRQUN6QixNQUFNLEVBQUUsV0FBVyxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxHQUFHLENBQUMsU0FBUyxFQUFFLE1BQU0sS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO1FBQzFHLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLE1BQU0sSUFBSSxJQUFJO1FBQ3hDLEtBQUssRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsSUFBSSxJQUFJO1FBQzdDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsT0FBTyxJQUFJLEtBQUssRUFBRSxPQUFPLENBQUM7UUFDOUMsT0FBTztLQUNSLENBQUM7QUFDSixDQUFDO0FBRUQseUVBQXlFO0FBQ3pFLE1BQU0sVUFBVSxZQUFZLENBQzFCLFNBQTBCLEVBQzFCLElBQTBCLEVBQzFCLEtBQXlDO0lBRXpDLE1BQU0sTUFBTSxHQUFHLENBQUMsU0FBUyxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQWMsQ0FBQztJQUNyRCxNQUFNLEdBQUcsR0FBRyxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUIsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sRUFBRSxNQUFNLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDO0lBQzVFLE1BQU0sS0FBSyxHQUFHLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRTFHLE9BQU87UUFDTCxXQUFXLEVBQUUsU0FBUyxDQUFDLEVBQUU7UUFDekIsTUFBTSxFQUFFLEVBQUU7UUFDVixPQUFPO1FBQ1AsS0FBSyxFQUFFLEtBQUssSUFBSSxJQUFJO1FBQ3BCLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsT0FBTyxJQUFJLEtBQUssRUFBRSxPQUFPLENBQUM7UUFDOUMsT0FBTyxFQUFFLFdBQVcsQ0FBQyxLQUFLLENBQUM7S0FDNUIsQ0FBQztBQUNKLENBQUM7QUFFRCx3RUFBd0U7QUFDeEUsd0VBQXdFO0FBQ3hFLGtFQUFrRTtBQUNsRSxNQUFNLFVBQVUsZUFBZSxDQUFDLE9BQTBCO0lBQ3hELE9BQU8sT0FBTyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksT0FBTyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDMUYsQ0FBQztBQUVELDZFQUE2RTtBQUM3RSw2RUFBNkU7QUFDN0UsNkJBQTZCO0FBQzdCLE1BQU0sVUFBVSxXQUFXLENBQUMsS0FBc0IsRUFBRSxPQUEwQjtJQUM1RSxPQUFPLGVBQWUsQ0FBQyxPQUFPLENBQUM7U0FDNUIsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLEtBQUssT0FBTyxJQUFJLFVBQVUsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQztBQUMvRixDQUFDO0FBRUQsMEVBQTBFO0FBQzFFLDBFQUEwRTtBQUMxRSw0RUFBNEU7QUFDNUUsc0VBQXNFO0FBQ3RFLE1BQU0sVUFBVSxlQUFlLENBQzdCLEtBQXNCLEVBQ3RCLE9BQW9DLEVBQ3BDLE9BQXNCO0lBRXRCLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDcEIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDekQsQ0FBQztJQUVELE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzQixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxLQUFLLE9BQU8sSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU0sSUFBSSxPQUFPLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDN0UsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLENBQUMsR0FBRyxPQUFPLENBQUMsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUM7SUFDckUsQ0FBQztJQUVELE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDO0FBQ2xHLENBQUM7QUFFRCx5RUFBeUU7QUFDekUsbURBQW1EO0FBQ25ELE1BQU0sVUFBVSxPQUFPLENBQUMsS0FBc0I7SUFDNUMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQ3BCLEtBQUssQ0FBQyxXQUFXO1FBQ2pCLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQztRQUM5RCxLQUFLLENBQUMsT0FBTztLQUNkLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRCwyRUFBMkU7QUFDM0UsZ0NBQWdDO0FBQ2hDLE1BQU0sVUFBVSxVQUFVLENBQ3hCLEtBQXNCLEVBQ3RCLEtBQTRDO0lBRTVDLE9BQU8sS0FBSztRQUNWLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLE1BQU0sS0FBSyxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSTtRQUNyRixDQUFDLENBQUMsSUFBSSxDQUFDO0FBQ1gsQ0FBQztBQUVELHlFQUF5RTtBQUN6RSwyRUFBMkU7QUFDM0UsNkVBQTZFO0FBQzdFLDJFQUEyRTtBQUMzRSx5RUFBeUU7QUFDekUsTUFBTSxVQUFVLGFBQWEsQ0FDM0IsS0FBNEMsRUFDNUMsS0FBc0I7SUFFdEIsTUFBTSxLQUFLLEdBQUcsVUFBVSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztJQUV2QyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQztRQUNuQyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxPQUFPO1FBQ0wsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUMxRSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsTUFBTSxFQUFFO0tBQzVDLENBQUM7QUFDSixDQUFDO0FBRUQsdUVBQXVFO0FBQ3ZFLHNFQUFzRTtBQUN0RSx1RUFBdUU7QUFDdkUsdUVBQXVFO0FBQ3ZFLGdEQUFnRDtBQUNoRCxTQUFTLFNBQVMsQ0FBQyxNQUFtQixFQUFFLFNBQStCLEVBQUUsR0FBbUI7SUFDMUYsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLFNBQVMsSUFBSSxLQUFLLENBQUM7SUFFNUMsSUFBSSxHQUFHLENBQUMsV0FBVyxLQUFLLElBQUksRUFBRSxDQUFDO1FBQzdCLE9BQU8sU0FBUyxLQUFLLEtBQUssSUFBSSxTQUFTLEtBQUssT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUN0RSxDQUFDO0lBRUQsSUFBSSxTQUFTLEtBQUssV0FBVyxFQUFFLENBQUM7UUFDOUIsT0FBTyxHQUFHLENBQUMsV0FBVyxLQUFLLENBQUMsSUFBSSxTQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDckUsQ0FBQztJQUVELElBQUksR0FBRyxDQUFDLFdBQVcsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3RFLE9BQU8sU0FBUyxLQUFLLEtBQUssSUFBSSxTQUFTLEtBQUssT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUM7SUFDNUUsQ0FBQztJQUVELE1BQU0sS0FBSyxHQUFHLFNBQVMsS0FBSyxLQUFLLElBQUksU0FBUyxLQUFLLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7SUFFdEcsT0FBTyxLQUFLLEtBQUssSUFBSSxJQUFJLEtBQUssR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDMUUsQ0FBQztBQUVELHNFQUFzRTtBQUN0RSw4RUFBOEU7QUFDOUUsU0FBUyxXQUFXLENBQ2xCLFNBQTBCLEVBQzFCLElBQW1CLEVBQ25CLE9BQTRCLEVBQzVCLFNBQStCLEVBQy9CLFNBQWlCLEVBQ2pCLE1BQXFCO0lBRXJCLE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQyxNQUFxQixDQUFDO0lBQy9DLE1BQU0sRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLEdBQUcsWUFBWSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM1RCxNQUFNLE1BQU0sR0FBRyxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFFckYsSUFBSSxNQUFNLEtBQUssSUFBSSxJQUFJLFdBQVcsSUFBSSxXQUFXLEtBQUssT0FBTyxFQUFFLENBQUM7UUFDOUQsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsR0FBRyxFQUFFLFNBQVMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUUsS0FBSyxFQUFFLFNBQVMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUMvRyxDQUFDO0lBRUQsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQztBQUVELDRFQUE0RTtBQUM1RSx1RUFBdUU7QUFDdkUsMkVBQTJFO0FBQzNFLFNBQVMsYUFBYSxDQUNwQixNQUFtQixFQUNuQixJQUFtQixFQUNuQixPQUE0QixFQUM1QixTQUErQixFQUMvQixNQUFjLEVBQ2QsU0FBaUI7SUFFakIsTUFBTSxHQUFHLEdBQUcsU0FBUyxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMvQyxNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzlDLE1BQU0sS0FBSyxHQUFHLGtCQUFrQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQzdFLE1BQU0sTUFBTSxHQUFHLEtBQUssSUFBSSxHQUFHLEtBQUssSUFBSSxJQUFJLEdBQUcsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFFMUYsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1FBQ3JDLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFRCxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsU0FBUyxLQUFLLEtBQUssSUFBSSxNQUFNLENBQUMsU0FBUyxLQUFLLE9BQU8sQ0FBQztJQUV2RSxPQUFPO1FBQ0wsTUFBTTtRQUNOLEdBQUc7UUFDSCxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxNQUFNLEVBQUUsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3hHLE1BQU07UUFDTixLQUFLO0tBQ04sQ0FBQztBQUNKLENBQUM7QUFFRCxxRUFBcUU7QUFDckUsU0FBUyxPQUFPLENBQUMsS0FBYztJQUM3QixJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksS0FBSyxLQUFLLFNBQVMsSUFBSSxLQUFLLEtBQUssRUFBRSxFQUFFLENBQUM7UUFDMUQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDdkIsQ0FBQztBQUVELDhCQUE4QjtBQUM5QixTQUFTLE1BQU0sQ0FBQyxLQUFnQztJQUM5QyxPQUFPLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUM1RSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50RGF0YURyaWxsIH0gZnJvbSAnLi9pbnRlcmZhY2VzL2NvbXBvbmVudC1kYXRhLWRyaWxsLmludGVyZmFjZSc7XG5pbXBvcnQgeyBSZXBvcnRDaGFydEhpdCB9IGZyb20gJy4vaW50ZXJmYWNlcy9yZXBvcnQtY2hhcnQtaGl0LmludGVyZmFjZSc7XG5pbXBvcnQgeyBSZXBvcnREcmlsbFN0ZXAgfSBmcm9tICcuL2ludGVyZmFjZXMvcmVwb3J0LWRyaWxsLXN0ZXAuaW50ZXJmYWNlJztcbmltcG9ydCB7IFJlcG9ydE1hcmtBY3Rpb24gfSBmcm9tICcuL2ludGVyZmFjZXMvcmVwb3J0LW1hcmstYWN0aW9uLnR5cGUnO1xuaW1wb3J0IHsgUmVwb3J0TWFya0NsaWNrIH0gZnJvbSAnLi9pbnRlcmZhY2VzL3JlcG9ydC1tYXJrLWNsaWNrLmludGVyZmFjZSc7XG5pbXBvcnQgeyBSZXBvcnRNYXJrQ29udGV4dCB9IGZyb20gJy4vaW50ZXJmYWNlcy9yZXBvcnQtbWFyay1jb250ZXh0LmludGVyZmFjZSc7XG5pbXBvcnQgeyBSZXBvcnRNYXJrRGVjaXNpb24gfSBmcm9tICcuL2ludGVyZmFjZXMvcmVwb3J0LW1hcmstZGVjaXNpb24uaW50ZXJmYWNlJztcbmltcG9ydCB7IFJlcG9ydE1hcmtFdmVudCB9IGZyb20gJy4vaW50ZXJmYWNlcy9yZXBvcnQtbWFyay1ldmVudC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUmVwb3J0TWFya1BvaW50IH0gZnJvbSAnLi9pbnRlcmZhY2VzL3JlcG9ydC1tYXJrLXBvaW50LmludGVyZmFjZSc7XG5pbXBvcnQge1xuICBDaGFydENvbmZpZyxcbiAgQ29tcG9uZW50RGF0YSxcbiAgS3BpQ29uZmlnLFxuICBSZXBvcnRDb21wb25lbnQsXG4gIFJlcG9ydEZvcm1hdENvbnRleHQsXG59IGZyb20gJy4vaW50ZXJmYWNlcy9yZXBvcnQuaW50ZXJmYWNlJztcbmltcG9ydCB7XG4gIGNoYXJ0Q29sdW1ucyxcbiAgY2hhcnREYXRlTGFiZWwsXG4gIGV4dHJhY3RDaGFydFNlcmllcyxcbiAgRXh0cmFjdGVkQ2hhcnRTZXJpZXMsXG4gIGZvcm1hdFBlcmlvZExhYmVsLFxuICBwYXJ0aWFsU2VnbWVudE93bmVyLFxufSBmcm9tICcuL29wdGlvbi1idWlsZGVyJztcbmltcG9ydCB7IGlzQ2FsZW5kYXJEYXksIGlzQ2hhcnRHcmFudWxhcml0eSB9IGZyb20gJy4vcmVwb3J0LXN0YXRlJztcblxuXG4vLyBUaGUgb25lIGNsaWNrIG1vZGVsIChCMTApOiB3aGF0IGEgY2xpY2sgb24gYSB0aWxlJ3MgbWFyayBzdGFuZHMgZm9yLCBhbmRcbi8vIHdoYXQgdGhlIHRpbGUgZG9lcyB3aXRoIGl0LiBQdXJlLCBzbyB0aGUgbm9kZSBoYXJuZXNzIHJ1bnMgaXQuXG4vL1xuLy8gLSBjaGFydE1hcmtDbGljayBhbmQga3BpTWFya0NsaWNrIHR1cm4gYSBjbGljayBpbnRvIGEgUmVwb3J0TWFya0NsaWNrOiB0aGVcbi8vICAgcmF3IHZhbHVlcyBmcm9tIGRhdGEucm93cyAobmV2ZXIgdGhlIGRyYXduIHRleHQpLCB0aGUgY2xpY2tlZCBzZXJpZXMgYW5kXG4vLyAgIGl0cyBudW1iZXIsIGFuZCB0aGUgcG9pbnRlci5cbi8vIC0gbWFya0FjdGlvbnMgbGlzdHMgd2hhdCB0aGUgY2xpY2sgbWF5IGRvLCBlYWNoIG9ubHkgd2hpbGUgaXRzIGZlYXR1cmUgaXNcbi8vICAgb2ZmZXJlZDsgZGVjaWRlTWFya0NsaWNrIGFwcGxpZXMgdGhlIGFjdGlvbiBydWxlOiBub25lIGRvZXMgbm90aGluZywgb25lXG4vLyAgIHJ1bnMsIHR3byBvciBtb3JlIG9wZW4gdGhlIG1lbnUgYXQgdGhlIG1hcmssIGFuZCBhIHRvdWNoIGZpcnN0IHNob3dzIHRoZVxuLy8gICB0b29sdGlwIGFuZCBhY3RzIG9uIGEgc2Vjb25kIHRhcCBvbiB0aGUgc2FtZSBtYXJrLlxuXG4vLyBBIG1hcmsgbWVudSByb3cncyB0ZXh0LCBieSBhY3Rpb24uXG5leHBvcnQgY29uc3QgTUFSS19BQ1RJT05fTEFCRUxTOiBSZWNvcmQ8UmVwb3J0TWFya0FjdGlvbiwgc3RyaW5nPiA9IHtcbiAgZHJpbGw6ICdEcmlsbCBkb3duJyxcbiAgY3Jvc3NGaWx0ZXI6ICdGaWx0ZXIgb3RoZXIgdGlsZXMnLFxuICBzaG93Um93czogJ1Nob3cgcm93cycsXG59O1xuXG4vLyBXaGVyZSBhIGNsaWNrIHdhcyBhbmQgd2hhdCBtYWRlIGl0LiBBIFBvaW50ZXJFdmVudCBuYW1lcyBpdHMgcG9pbnRlcjsgYVxuLy8gVG91Y2hFdmVudCBpcyBhIHRvdWNoOyBhbnl0aGluZyBlbHNlIChhIHBsYWluIE1vdXNlRXZlbnQsIGEga2V5IHByZXNzXG4vLyB0aGF0IGNsaWNrZWQpIHJlYWRzIGFzIHRoZSBtb3VzZS5cbmV4cG9ydCBmdW5jdGlvbiBtYXJrUG9pbnRlcihldmVudDogUmVwb3J0TWFya0V2ZW50IHwgbnVsbCB8IHVuZGVmaW5lZCk6IFJlcG9ydE1hcmtDbGlja1sncG9pbnRlciddIHtcbiAgY29uc3QgdG91Y2ggPSBldmVudD8uY2hhbmdlZFRvdWNoZXM/LlswXTtcbiAgbGV0IHR5cGU6IFJlcG9ydE1hcmtDbGlja1sncG9pbnRlciddWyd0eXBlJ10gPSB0b3VjaCA/ICd0b3VjaCcgOiAnbW91c2UnO1xuXG4gIGlmIChldmVudD8ucG9pbnRlclR5cGUgPT09ICd0b3VjaCcgfHwgZXZlbnQ/LnBvaW50ZXJUeXBlID09PSAncGVuJyB8fCBldmVudD8ucG9pbnRlclR5cGUgPT09ICdtb3VzZScpIHtcbiAgICB0eXBlID0gZXZlbnQucG9pbnRlclR5cGU7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHg6IGZpbml0ZShldmVudD8ucGFnZVgpID8/IGZpbml0ZSh0b3VjaD8ucGFnZVgpID8/IDAsXG4gICAgeTogZmluaXRlKGV2ZW50Py5wYWdlWSkgPz8gZmluaXRlKHRvdWNoPy5wYWdlWSkgPz8gMCxcbiAgICB0eXBlLFxuICB9O1xufVxuXG4vLyBBIGNsaWNrIG9uIGEgY2hhcnQ6IGEgYmFyIChhbmQgaXRzIHNwbGl0IHZhbHVlKSwgYSBsaW5lIG9yIGFyZWEgcG9pbnQgb3Jcbi8vIHRoZSBsaW5lIGl0c2VsZiwgYSBwaWUgc2xpY2UsIGEgd2F0ZXJmYWxsIHN0ZXAsIG9yIGEgY2F0ZWdvcnkncyBlbXB0eSBiYW5kXG4vLyAod2l0aCB0aGUgbW91c2Ugb25seTogYSB0YXAgdGhlcmUgaXMgaG93IGEgcGhvbmUgc2hvd3MgdGhlIHRvb2x0aXApLiBBXG4vLyBwYXJ0aWFsIHNlZ21lbnQgcmVhZHMgYXMgdGhlIHNlcmllcyBpdCBjb250aW51ZXMsIGFuZCBhIGNvbXBhcmVkIHNlcmllc1xuLy8gYXMgaXRzIGNhdGVnb3J5LCB0aGUgY3VycmVudCBwZXJpb2QuIG51bGwgZm9yIGEgcmVmZXJlbmNlIGxpbmUgb3IgYmFuZCxcbi8vIGEgd2F0ZXJmYWxsJ3MgYmFzZSBhbmQgaXRzIFRvdGFsLCBhbmQgYSBjYXRlZ29yeSB0aGUgY2hhcnQgZG9lcyBub3QgaGF2ZS5cbmV4cG9ydCBmdW5jdGlvbiBjaGFydE1hcmtDbGljayhcbiAgY29tcG9uZW50OiBSZXBvcnRDb21wb25lbnQsXG4gIGRhdGE6IENvbXBvbmVudERhdGEsXG4gIGNvbnRleHQ6IFJlcG9ydEZvcm1hdENvbnRleHQsXG4gIGhpdDogUmVwb3J0Q2hhcnRIaXQsXG4gIGV2ZW50OiBSZXBvcnRNYXJrRXZlbnQgfCBudWxsIHwgdW5kZWZpbmVkLFxuKTogUmVwb3J0TWFya0NsaWNrIHwgbnVsbCB7XG4gIGNvbnN0IHBvaW50ZXIgPSBtYXJrUG9pbnRlcihldmVudCk7XG4gIGNvbnN0IGV4dHJhY3RlZCA9IGV4dHJhY3RDaGFydFNlcmllcyhjb21wb25lbnQsIGRhdGEpO1xuICBjb25zdCBzZXJpZXMgPSBoaXRTZXJpZXMoY29tcG9uZW50LmNvbmZpZyBhcyBDaGFydENvbmZpZywgZXh0cmFjdGVkLCBoaXQpO1xuXG4gIGlmIChzZXJpZXMgPT09IG51bGwgfHwgIU51bWJlci5pc0ludGVnZXIoaGl0LmRhdGFJbmRleClcbiAgICB8fCBoaXQuZGF0YUluZGV4IDwgMCB8fCBoaXQuZGF0YUluZGV4ID49IGV4dHJhY3RlZC5yYXdDYXRlZ29yaWVzLmxlbmd0aFxuICAgIHx8IChzZXJpZXMgPT09ICdiYW5kJyAmJiBwb2ludGVyLnR5cGUgIT09ICdtb3VzZScpKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBjbGlja2VkID0gc2VyaWVzID09PSAnYmFuZCcgPyBudWxsIDogZXh0cmFjdGVkLnNlcmllc1tzZXJpZXNdO1xuXG4gIHJldHVybiB7XG4gICAgY29tcG9uZW50SWQ6IGNvbXBvbmVudC5pZCxcbiAgICBwb2ludHM6IGNoYXJ0UG9pbnRzKGNvbXBvbmVudCwgZGF0YSwgY29udGV4dCwgZXh0cmFjdGVkLCBoaXQuZGF0YUluZGV4LCBzZXJpZXMgPT09ICdiYW5kJyA/IG51bGwgOiBzZXJpZXMpLFxuICAgIG1lYXN1cmU6IGNsaWNrZWQ/Lm1lYXN1cmUuY29sdW1uID8/IG51bGwsXG4gICAgdmFsdWU6IGNsaWNrZWQ/LnZhbHVlc1toaXQuZGF0YUluZGV4XSA/PyBudWxsLFxuICAgIGFkZGl0aXZlOiAhIShldmVudD8uY3RybEtleSB8fCBldmVudD8ubWV0YUtleSksXG4gICAgcG9pbnRlcixcbiAgfTtcbn1cblxuLy8gQSBjbGljayBvbiBhIEtQSSdzIHZhbHVlOiBubyBwb2ludHMsIHRoZSBLUEkncyBtZWFzdXJlIGFuZCBpdHMgbnVtYmVyLlxuZXhwb3J0IGZ1bmN0aW9uIGtwaU1hcmtDbGljayhcbiAgY29tcG9uZW50OiBSZXBvcnRDb21wb25lbnQsXG4gIGRhdGE6IENvbXBvbmVudERhdGEgfCBudWxsLFxuICBldmVudDogUmVwb3J0TWFya0V2ZW50IHwgbnVsbCB8IHVuZGVmaW5lZCxcbik6IFJlcG9ydE1hcmtDbGljayB7XG4gIGNvbnN0IGNvbmZpZyA9IChjb21wb25lbnQuY29uZmlnID8/IHt9KSBhcyBLcGlDb25maWc7XG4gIGNvbnN0IHJvdyA9IGRhdGE/LnJvd3M/LlswXTtcbiAgY29uc3QgbWVhc3VyZSA9IGNvbmZpZy5tZWFzdXJlPy5jb2x1bW4gPz8gT2JqZWN0LmtleXMocm93ID8/IHt9KVswXSA/PyBudWxsO1xuICBjb25zdCB2YWx1ZSA9IGRhdGE/LmtwaSA/IGRhdGEua3BpLnZhbHVlIDogZmluaXRlKG51bWVyaWMobWVhc3VyZSA9PT0gbnVsbCA/IHVuZGVmaW5lZCA6IHJvdz8uW21lYXN1cmVdKSk7XG5cbiAgcmV0dXJuIHtcbiAgICBjb21wb25lbnRJZDogY29tcG9uZW50LmlkLFxuICAgIHBvaW50czogW10sXG4gICAgbWVhc3VyZSxcbiAgICB2YWx1ZTogdmFsdWUgPz8gbnVsbCxcbiAgICBhZGRpdGl2ZTogISEoZXZlbnQ/LmN0cmxLZXkgfHwgZXZlbnQ/Lm1ldGFLZXkpLFxuICAgIHBvaW50ZXI6IG1hcmtQb2ludGVyKGV2ZW50KSxcbiAgfTtcbn1cblxuLy8gV2hhdCBhIHRpbGUncyBtYXJrcyBtYXkgZG8gb24gaXRzIGxhc3QgYW5zd2VyLCBiZWZvcmUgYW55IG9uZSBtYXJrIGlzXG4vLyBjbGlja2VkOiB0aGUgY2hhcnQncyB0b29sdGlwIGhpbnQgYW5kIGl0cyBoYW5kIHBvaW50ZXIgcmVhZCBpdC4gRHJpbGxcbi8vIGRvd24gd2hpbGUgZHJpbGwgaXMgb2ZmZXJlZCBhbmQgdGhlIGFuc3dlciBuYW1lcyBhIGxldmVsIGJlbG93LlxuZXhwb3J0IGZ1bmN0aW9uIHRpbGVNYXJrQWN0aW9ucyhjb250ZXh0OiBSZXBvcnRNYXJrQ29udGV4dCk6IFJlcG9ydE1hcmtBY3Rpb25bXSB7XG4gIHJldHVybiBjb250ZXh0LmZlYXR1cmVzLmluY2x1ZGVzKCdkcmlsbCcpICYmIGNvbnRleHQuZGF0YT8uZHJpbGw/Lm5leHQgPyBbJ2RyaWxsJ10gOiBbXTtcbn1cblxuLy8gV2hhdCB0aGlzIGNsaWNrIG1heSBkbzogdGhlIHRpbGUncyBhY3Rpb25zIHRoYXQgYXBwbHkgdG8gdGhlIGNsaWNrZWQgbWFyay5cbi8vIERyaWxsIGRvd24gbmVlZHMgYSBwZXJpb2Qgb24gdGhlIGRyaWxsZWQgYXhpcywgc28gYSBLUEkncyB2YWx1ZSBhbmQgYSBtYXJrXG4vLyBvZmYgdGhhdCBheGlzIG5ldmVyIGRyaWxsLlxuZXhwb3J0IGZ1bmN0aW9uIG1hcmtBY3Rpb25zKGNsaWNrOiBSZXBvcnRNYXJrQ2xpY2ssIGNvbnRleHQ6IFJlcG9ydE1hcmtDb250ZXh0KTogUmVwb3J0TWFya0FjdGlvbltdIHtcbiAgcmV0dXJuIHRpbGVNYXJrQWN0aW9ucyhjb250ZXh0KVxuICAgIC5maWx0ZXIoKGFjdGlvbikgPT4gYWN0aW9uICE9PSAnZHJpbGwnIHx8IGRyaWxsUG9pbnQoY2xpY2ssIGNvbnRleHQuZGF0YT8uZHJpbGwpICE9PSBudWxsKTtcbn1cblxuLy8gVGhlIGFjdGlvbiBydWxlIChCMTAuMikuIE5vIGFjdGlvbjogbm90aGluZyBoYXBwZW5zLiBBIHRvdWNoIChvciBhIHBlbilcbi8vIG9uIGEgY2hhcnQncyBtYXJrIGZpcnN0IHNob3dzIGl0cyB0b29sdGlwIG9ubHksIGFuZCBhIHNlY29uZCB0YXAgb24gdGhlXG4vLyBzYW1lIG1hcmsgYWN0czsgYSBLUEkncyB2YWx1ZSBoYXMgbm8gdG9vbHRpcCwgc28gaXRzIGZpcnN0IHRhcCBhY3RzLiBUaGVuXG4vLyBvbmUgYWN0aW9uIHJ1bnMgYXQgb25jZSwgYW5kIHR3byBvciBtb3JlIG9wZW4gdGhlIG1lbnUgYXQgdGhlIG1hcmsuXG5leHBvcnQgZnVuY3Rpb24gZGVjaWRlTWFya0NsaWNrKFxuICBjbGljazogUmVwb3J0TWFya0NsaWNrLFxuICBhY3Rpb25zOiByZWFkb25seSBSZXBvcnRNYXJrQWN0aW9uW10sXG4gIHRvdWNoZWQ6IHN0cmluZyB8IG51bGwsXG4pOiBSZXBvcnRNYXJrRGVjaXNpb24ge1xuICBpZiAoIWFjdGlvbnMubGVuZ3RoKSB7XG4gICAgcmV0dXJuIHsgb3V0Y29tZTogJ25vbmUnLCBhY3Rpb25zOiBbXSwgdG91Y2hlZDogbnVsbCB9O1xuICB9XG5cbiAgY29uc3Qga2V5ID0gbWFya0tleShjbGljayk7XG4gIGlmIChjbGljay5wb2ludGVyLnR5cGUgIT09ICdtb3VzZScgJiYgY2xpY2sucG9pbnRzLmxlbmd0aCAmJiB0b3VjaGVkICE9PSBrZXkpIHtcbiAgICByZXR1cm4geyBvdXRjb21lOiAndG9vbHRpcCcsIGFjdGlvbnM6IFsuLi5hY3Rpb25zXSwgdG91Y2hlZDoga2V5IH07XG4gIH1cblxuICByZXR1cm4geyBvdXRjb21lOiBhY3Rpb25zLmxlbmd0aCA9PT0gMSA/ICdydW4nIDogJ21lbnUnLCBhY3Rpb25zOiBbLi4uYWN0aW9uc10sIHRvdWNoZWQ6IG51bGwgfTtcbn1cblxuLy8gV2hpY2ggbWFyayBhIGNsaWNrIGlzIG9uOiBpdHMgdGlsZSwgaXRzIHJhdyB2YWx1ZXMgYW5kIGl0cyBzZXJpZXMuIFR3b1xuLy8gdGFwcyBhcmUgb24gdGhlIHNhbWUgbWFyayB3aGVuIHRoZWlyIGtleXMgbWF0Y2guXG5leHBvcnQgZnVuY3Rpb24gbWFya0tleShjbGljazogUmVwb3J0TWFya0NsaWNrKTogc3RyaW5nIHtcbiAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KFtcbiAgICBjbGljay5jb21wb25lbnRJZCxcbiAgICBjbGljay5wb2ludHMubWFwKChwb2ludCkgPT4gW3BvaW50LmNvbHVtbiwgcG9pbnQucmF3ID8/IG51bGxdKSxcbiAgICBjbGljay5tZWFzdXJlLFxuICBdKTtcbn1cblxuLy8gVGhlIHBvaW50IGEgZHJpbGwgc3RlcHMgaW50bzogdGhlIGNsaWNrZWQgcGVyaW9kIG9uIHRoZSBkcmlsbGVkIGF4aXMsIG9yXG4vLyBudWxsIHdoZW4gdGhlIGNsaWNrIGhhcyBub25lLlxuZXhwb3J0IGZ1bmN0aW9uIGRyaWxsUG9pbnQoXG4gIGNsaWNrOiBSZXBvcnRNYXJrQ2xpY2ssXG4gIGRyaWxsOiBDb21wb25lbnREYXRhRHJpbGwgfCBudWxsIHwgdW5kZWZpbmVkLFxuKTogUmVwb3J0TWFya1BvaW50IHwgbnVsbCB7XG4gIHJldHVybiBkcmlsbFxuICAgID8gY2xpY2sucG9pbnRzLmZpbmQoKHBvaW50KSA9PiBwb2ludC5jb2x1bW4gPT09IGRyaWxsLmF4aXMgJiYgISFwb2ludC5wZXJpb2QpID8/IG51bGxcbiAgICA6IG51bGw7XG59XG5cbi8vIFRoZSBkcmlsbCBwYXRoIG9uZSBsZXZlbCBkb3duIGZyb20gd2hhdCB0aGUgY2hhcnQgc2hvd3M6IHRoZSBzdGVwcyB0aGVcbi8vIHNlcnZlciBhcHBsaWVkIChkcmlsbC5wYXRoKSwgdGhlbiB0aGUgY2xpY2tlZCBwZXJpb2QgYXQgdGhlIGxldmVsIGl0IHdhc1xuLy8gY2xpY2tlZCBhdCAoZHJpbGwubGV2ZWwpLCB3aGljaCB0aGUgY2hhcnQgdGhlbiBzaG93cyBhdCBkcmlsbC5uZXh0LiBBIHN0ZXBcbi8vIG5hbWVzIHRoZSBwZXJpb2QgY2xpY2tlZCwgc28gdGhlIGZpcnN0IHN0ZXAgaXMgYXQgdGhlIGNoYXJ0J3MgdG9wIGxldmVsLlxuLy8gbnVsbCB3aGVuIHRoZSBjaGFydCBpcyBhdCBpdHMgbG93ZXN0IGxldmVsIG9yIHRoZSBjbGljayBoYXMgbm8gcGVyaW9kLlxuZXhwb3J0IGZ1bmN0aW9uIGRyaWxsRG93blBhdGgoXG4gIGRyaWxsOiBDb21wb25lbnREYXRhRHJpbGwgfCBudWxsIHwgdW5kZWZpbmVkLFxuICBjbGljazogUmVwb3J0TWFya0NsaWNrLFxuKTogUmVwb3J0RHJpbGxTdGVwW10gfCBudWxsIHtcbiAgY29uc3QgcG9pbnQgPSBkcmlsbFBvaW50KGNsaWNrLCBkcmlsbCk7XG5cbiAgaWYgKCFkcmlsbD8ubmV4dCB8fCAhcG9pbnQ/LnBlcmlvZCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcmV0dXJuIFtcbiAgICAuLi5kcmlsbC5wYXRoLm1hcCgoY3J1bWIpID0+ICh7IGxldmVsOiBjcnVtYi5sZXZlbCwgdmFsdWU6IGNydW1iLnZhbHVlIH0pKSxcbiAgICB7IGxldmVsOiBkcmlsbC5sZXZlbCwgdmFsdWU6IHBvaW50LnBlcmlvZCB9LFxuICBdO1xufVxuXG4vLyBUaGUgZXh0cmFjdGVkIHNlcmllcyBhIGhpdCBpcyBvbjogaXRzIGluZGV4LCAnYmFuZCcgZm9yIGEgY2F0ZWdvcnknc1xuLy8gZW1wdHkgYmFuZCwgb3IgbnVsbCBmb3Igd2hhdCBpcyBub3QgYSBtYXJrLiBBbiBheGlzIGNoYXJ0J3MgcGFydGlhbFxuLy8gc2VnbWVudCBtYXBzIHRvIHRoZSBzZXJpZXMgaXQgY29udGludWVzOyBhIHJlZmVyZW5jZSBjYXJyaWVyIG1hcHMgdG9cbi8vIG5vdGhpbmcuIEEgd2F0ZXJmYWxsJ3Mgc3RlcHMgYXJlIGl0cyBzZWNvbmQgc2VyaWVzICh0aGUgZmlyc3QgaXMgdGhlXG4vLyBpbnZpc2libGUgYmFzZSk7IGEgcGllJ3Mgc2xpY2VzIGl0cyBvbmx5IG9uZS5cbmZ1bmN0aW9uIGhpdFNlcmllcyhjb25maWc6IENoYXJ0Q29uZmlnLCBleHRyYWN0ZWQ6IEV4dHJhY3RlZENoYXJ0U2VyaWVzLCBoaXQ6IFJlcG9ydENoYXJ0SGl0KTogbnVtYmVyIHwgJ2JhbmQnIHwgbnVsbCB7XG4gIGNvbnN0IGNoYXJ0VHlwZSA9IGNvbmZpZy5jaGFydFR5cGUgPz8gJ2Jhcic7XG5cbiAgaWYgKGhpdC5zZXJpZXNJbmRleCA9PT0gbnVsbCkge1xuICAgIHJldHVybiBjaGFydFR5cGUgPT09ICdwaWUnIHx8IGNoYXJ0VHlwZSA9PT0gJ2RvbnV0JyA/IG51bGwgOiAnYmFuZCc7XG4gIH1cblxuICBpZiAoY2hhcnRUeXBlID09PSAnd2F0ZXJmYWxsJykge1xuICAgIHJldHVybiBoaXQuc2VyaWVzSW5kZXggPT09IDEgJiYgZXh0cmFjdGVkLnNlcmllcy5sZW5ndGggPyAwIDogbnVsbDtcbiAgfVxuXG4gIGlmIChoaXQuc2VyaWVzSW5kZXggPj0gMCAmJiBoaXQuc2VyaWVzSW5kZXggPCBleHRyYWN0ZWQuc2VyaWVzLmxlbmd0aCkge1xuICAgIHJldHVybiBjaGFydFR5cGUgPT09ICdwaWUnIHx8IGNoYXJ0VHlwZSA9PT0gJ2RvbnV0JyA/IDAgOiBoaXQuc2VyaWVzSW5kZXg7XG4gIH1cblxuICBjb25zdCBvd25lciA9IGNoYXJ0VHlwZSA9PT0gJ3BpZScgfHwgY2hhcnRUeXBlID09PSAnZG9udXQnID8gbnVsbCA6IHBhcnRpYWxTZWdtZW50T3duZXIoaGl0LnNlcmllc0lkKTtcblxuICByZXR1cm4gb3duZXIgIT09IG51bGwgJiYgb3duZXIgPCBleHRyYWN0ZWQuc2VyaWVzLmxlbmd0aCA/IG93bmVyIDogbnVsbDtcbn1cblxuLy8gVGhlIGNsaWNrZWQgY2F0ZWdvcnksIHRoZW4gdGhlIHNwbGl0IHZhbHVlIHdoZW4gdGhlIGNoYXJ0IHNwbGl0cyBieVxuLy8gYW5vdGhlciBjb2x1bW4gdGhhbiBpdHMgYXhpcyAoYSBjb2xvckJ5IGNoYXJ0J3Mgc2VyaWVzIGFyZSBpdHMgY2F0ZWdvcmllcykuXG5mdW5jdGlvbiBjaGFydFBvaW50cyhcbiAgY29tcG9uZW50OiBSZXBvcnRDb21wb25lbnQsXG4gIGRhdGE6IENvbXBvbmVudERhdGEsXG4gIGNvbnRleHQ6IFJlcG9ydEZvcm1hdENvbnRleHQsXG4gIGV4dHJhY3RlZDogRXh0cmFjdGVkQ2hhcnRTZXJpZXMsXG4gIGRhdGFJbmRleDogbnVtYmVyLFxuICBzZXJpZXM6IG51bWJlciB8IG51bGwsXG4pOiBSZXBvcnRNYXJrUG9pbnRbXSB7XG4gIGNvbnN0IGNvbmZpZyA9IGNvbXBvbmVudC5jb25maWcgYXMgQ2hhcnRDb25maWc7XG4gIGNvbnN0IHsgeENvbHVtbiwgZ3JvdXBDb2x1bW4gfSA9IGNoYXJ0Q29sdW1ucyhjb25maWcsIGRhdGEpO1xuICBjb25zdCBwb2ludHMgPSBbY2F0ZWdvcnlQb2ludChjb25maWcsIGRhdGEsIGNvbnRleHQsIGV4dHJhY3RlZCwgeENvbHVtbiwgZGF0YUluZGV4KV07XG5cbiAgaWYgKHNlcmllcyAhPT0gbnVsbCAmJiBncm91cENvbHVtbiAmJiBncm91cENvbHVtbiAhPT0geENvbHVtbikge1xuICAgIHBvaW50cy5wdXNoKHsgY29sdW1uOiBncm91cENvbHVtbiwgcmF3OiBleHRyYWN0ZWQucmF3R3JvdXBzW3Nlcmllc10sIGxhYmVsOiBleHRyYWN0ZWQuc2VyaWVzW3Nlcmllc10ubmFtZSB9KTtcbiAgfVxuXG4gIHJldHVybiBwb2ludHM7XG59XG5cbi8vIFRoZSBjYXRlZ29yeSBhcyB0aGUgcm93cyBob2xkIGl0IGFuZCBhcyB0aGUgYXhpcyB3cm90ZSBpdC4gT24gYSB0aW1lIGF4aXNcbi8vIGl0IGFsc28gZ2l2ZXMgdGhlIHBlcmlvZCdzIGZpcnN0IGRheSBhbmQgdGhlIGdyYWluLCBhbmQgcmVhZHMgYXMgdGhlXG4vLyB0b29sdGlwIG5hbWVzIGl0ICgnSmFudWFyeSAyMDI2Jyk7IGEgcGllIHdyaXRlcyBpdHMgc2xpY2VzIGFzIHRoZXkgY29tZS5cbmZ1bmN0aW9uIGNhdGVnb3J5UG9pbnQoXG4gIGNvbmZpZzogQ2hhcnRDb25maWcsXG4gIGRhdGE6IENvbXBvbmVudERhdGEsXG4gIGNvbnRleHQ6IFJlcG9ydEZvcm1hdENvbnRleHQsXG4gIGV4dHJhY3RlZDogRXh0cmFjdGVkQ2hhcnRTZXJpZXMsXG4gIGNvbHVtbjogc3RyaW5nLFxuICBkYXRhSW5kZXg6IG51bWJlcixcbik6IFJlcG9ydE1hcmtQb2ludCB7XG4gIGNvbnN0IHJhdyA9IGV4dHJhY3RlZC5yYXdDYXRlZ29yaWVzW2RhdGFJbmRleF07XG4gIGNvbnN0IGxhYmVsID0gZXh0cmFjdGVkLmNhdGVnb3JpZXNbZGF0YUluZGV4XTtcbiAgY29uc3QgZ3JhaW4gPSBpc0NoYXJ0R3JhbnVsYXJpdHkoZGF0YS5ncmFudWxhcml0eSkgPyBkYXRhLmdyYW51bGFyaXR5IDogbnVsbDtcbiAgY29uc3QgcGVyaW9kID0gZ3JhaW4gJiYgcmF3ICE9PSBudWxsICYmIHJhdyAhPT0gdW5kZWZpbmVkID8gU3RyaW5nKHJhdykuc2xpY2UoMCwgMTApIDogJyc7XG5cbiAgaWYgKCFncmFpbiB8fCAhaXNDYWxlbmRhckRheShwZXJpb2QpKSB7XG4gICAgcmV0dXJuIHsgY29sdW1uLCByYXcsIGxhYmVsIH07XG4gIH1cblxuICBjb25zdCBwaWUgPSBjb25maWcuY2hhcnRUeXBlID09PSAncGllJyB8fCBjb25maWcuY2hhcnRUeXBlID09PSAnZG9udXQnO1xuXG4gIHJldHVybiB7XG4gICAgY29sdW1uLFxuICAgIHJhdyxcbiAgICBsYWJlbDogcGllID8gbGFiZWwgOiBmb3JtYXRQZXJpb2RMYWJlbChTdHJpbmcocmF3KSwgZ3JhaW4sIHRydWUsIGNvbnRleHQubG9jYWxlLCBjaGFydERhdGVMYWJlbChjb25maWcpKSxcbiAgICBwZXJpb2QsXG4gICAgZ3JhaW4sXG4gIH07XG59XG5cbi8vIEEgbnVtYmVyIGFzIGEgY2VsbCBob2xkcyBpdCAoYSBudW1iZXIgb3IgbnVtZXJpYyB0ZXh0KSwgZWxzZSBudWxsLlxuZnVuY3Rpb24gbnVtZXJpYyh2YWx1ZTogdW5rbm93bik6IG51bWJlciB8IG51bGwge1xuICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gJycpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHJldHVybiBOdW1iZXIodmFsdWUpO1xufVxuXG4vLyBBIGZpbml0ZSBudW1iZXIsIGVsc2UgbnVsbC5cbmZ1bmN0aW9uIGZpbml0ZSh2YWx1ZTogbnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZCk6IG51bWJlciB8IG51bGwge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyAmJiBOdW1iZXIuaXNGaW5pdGUodmFsdWUpID8gdmFsdWUgOiBudWxsO1xufVxuIl19
|