@ethlete/query 4.7.2 → 4.7.4
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/esm2022/lib/devtools/components/query-devtools/query-devtools.component.mjs +41 -15
- package/esm2022/lib/query/query.mjs +1 -10
- package/esm2022/lib/query-store/query-store.mjs +1 -2
- package/fesm2022/ethlete-query.mjs +39 -23
- package/fesm2022/ethlete-query.mjs.map +1 -1
- package/lib/devtools/components/query-devtools/query-devtools.component.d.ts +6 -0
- package/package.json +1 -1
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { AsyncPipe, JsonPipe, NgFor, NgIf } from '@angular/common';
|
|
2
2
|
import { ChangeDetectionStrategy, Component, ViewEncapsulation, computed, effect, inject, signal, } from '@angular/core';
|
|
3
|
-
import { toSignal } from '@angular/core/rxjs-interop';
|
|
3
|
+
import { toObservable, toSignal } from '@angular/core/rxjs-interop';
|
|
4
4
|
import { createDestroy } from '@ethlete/core';
|
|
5
|
-
import { BehaviorSubject,
|
|
5
|
+
import { BehaviorSubject, map, startWith, switchMap, takeUntil, tap } from 'rxjs';
|
|
6
6
|
import { QUERY_CLIENT_DEVTOOLS_TOKEN } from '../../utils';
|
|
7
7
|
import * as i0 from "@angular/core";
|
|
8
8
|
export class QueryDevtoolsComponent {
|
|
@@ -12,6 +12,7 @@ export class QueryDevtoolsComponent {
|
|
|
12
12
|
this.isOpen = signal(false);
|
|
13
13
|
this.isTranslucent = signal(false);
|
|
14
14
|
this.snapLayout = signal('full');
|
|
15
|
+
this.queryListMode = signal('live');
|
|
15
16
|
this.showResponse = signal(false);
|
|
16
17
|
this.showRawResponse = signal(false);
|
|
17
18
|
this.selectedClientId = signal(0);
|
|
@@ -27,25 +28,41 @@ export class QueryDevtoolsComponent {
|
|
|
27
28
|
const config = this.selectedClientConfig();
|
|
28
29
|
return config.client._store;
|
|
29
30
|
});
|
|
31
|
+
this.queryStore$ = toObservable(this.queryStore);
|
|
30
32
|
this._queries$ = new BehaviorSubject([]);
|
|
31
33
|
this.queries = toSignal(this._queries$);
|
|
32
34
|
this.selectedQuery = computed(() => {
|
|
33
35
|
const path = this.selectedQueryPath();
|
|
34
|
-
|
|
36
|
+
const mode = this.queryListMode();
|
|
37
|
+
if (!path || !mode) {
|
|
35
38
|
return null;
|
|
36
39
|
}
|
|
37
|
-
|
|
40
|
+
if (mode === 'live') {
|
|
41
|
+
return this.queries()?.find((q) => q._routeWithParams === path) ?? null;
|
|
42
|
+
}
|
|
43
|
+
return this.queryHistory()?.find((q) => q._routeWithParams === path) ?? null;
|
|
38
44
|
});
|
|
45
|
+
this.queryHistory = signal([]);
|
|
39
46
|
this.trackByClient = (_, { client }) => client.config.baseRoute;
|
|
40
47
|
this.trackByQuery = (_, { _routeWithParams }) => _routeWithParams;
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
48
|
+
this.queryStore$
|
|
49
|
+
.pipe(switchMap((s) => s.storeChange$.pipe(startWith(''), map(() => s._store), tap((s) => this._queries$.next(Array.from(s.values()))), takeUntil(this._destroy$))))
|
|
50
|
+
.subscribe();
|
|
51
|
+
this._queries$
|
|
52
|
+
.pipe(tap((queries) => {
|
|
53
|
+
const currentHistory = this.queryHistory();
|
|
54
|
+
if (!queries || !currentHistory)
|
|
55
|
+
return;
|
|
56
|
+
const currentHistoryClone = [...currentHistory];
|
|
57
|
+
for (const query of queries) {
|
|
58
|
+
if (!currentHistoryClone.includes(query)) {
|
|
59
|
+
currentHistoryClone.push(query);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
currentHistoryClone.splice(50);
|
|
63
|
+
this.queryHistory.set(currentHistoryClone);
|
|
64
|
+
}), takeUntil(this._destroy$))
|
|
65
|
+
.subscribe();
|
|
49
66
|
effect(() => {
|
|
50
67
|
const devtoolConfig = {
|
|
51
68
|
isOpen: this.isOpen(),
|
|
@@ -55,6 +72,7 @@ export class QueryDevtoolsComponent {
|
|
|
55
72
|
showRawResponse: this.showRawResponse(),
|
|
56
73
|
selectedClientId: this.selectedClientId(),
|
|
57
74
|
selectedQueryPath: this.selectedQueryPath(),
|
|
75
|
+
queryListMode: this.queryListMode(),
|
|
58
76
|
};
|
|
59
77
|
window.localStorage.setItem('ethlete:query:devtools', JSON.stringify(devtoolConfig));
|
|
60
78
|
});
|
|
@@ -68,6 +86,7 @@ export class QueryDevtoolsComponent {
|
|
|
68
86
|
this.showRawResponse.set(parsed.showRawResponse ?? false);
|
|
69
87
|
this.selectedClientId.set(parsed.selectedClientId ?? 0);
|
|
70
88
|
this.selectedQueryPath.set(parsed.selectedQueryPath ?? null);
|
|
89
|
+
this.queryListMode.set(parsed.queryListMode ?? 'live');
|
|
71
90
|
}
|
|
72
91
|
}
|
|
73
92
|
toggleOpen() {
|
|
@@ -85,19 +104,26 @@ export class QueryDevtoolsComponent {
|
|
|
85
104
|
selectSnapLayout(layout) {
|
|
86
105
|
this.snapLayout.set(layout);
|
|
87
106
|
}
|
|
107
|
+
selectQueryListMode(mode) {
|
|
108
|
+
this.queryListMode.set(mode);
|
|
109
|
+
}
|
|
88
110
|
selectClient(clientId) {
|
|
89
111
|
this.selectedClientId.set(clientId);
|
|
112
|
+
this.clearQueryHistory();
|
|
90
113
|
}
|
|
91
114
|
selectQuery(query) {
|
|
92
115
|
this.selectedQueryPath.set(query._routeWithParams);
|
|
93
116
|
}
|
|
117
|
+
clearQueryHistory() {
|
|
118
|
+
this.queryHistory.set([]);
|
|
119
|
+
}
|
|
94
120
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: QueryDevtoolsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
95
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: QueryDevtoolsComponent, isStandalone: true, selector: "et-query-devtools", host: { classAttribute: "et-query-devtools" }, ngImport: i0, template: "<button *ngIf=\"!isOpen()\" (click)=\"toggleOpen()\" class=\"et-query-devtools-open-btn\">Open Devtools</button>\n\n<div\n *ngIf=\"isOpen()\"\n [class.et-query-devtools-container--transparent]=\"isTranslucent()\"\n class=\"et-query-devtools-container et-query-devtools-container--snap-{{ snapLayout() }}\"\n>\n <button (click)=\"toggleOpen()\" class=\"et-query-devtools-close-btn\">Close Devtools</button>\n <button (click)=\"toggleTranslucent()\" class=\"et-query-devtools-translucent-btn\">Toggle Translucent</button>\n <button (click)=\"selectSnapLayout('full')\" class=\"et-query-devtools-snap-btn\">Snap full</button>\n <button (click)=\"selectSnapLayout('top')\" class=\"et-query-devtools-snap-btn\">Snap top</button>\n <button (click)=\"selectSnapLayout('bottom')\" class=\"et-query-devtools-snap-btn\">Snap bottom</button>\n <button (click)=\"selectSnapLayout('left')\" class=\"et-query-devtools-snap-btn\">Snap left</button>\n <button (click)=\"selectSnapLayout('right')\" class=\"et-query-devtools-snap-btn\">Snap right</button>\n\n <ng-container *ngIf=\"queryClientConfigs.length > 1\">\n <p>Client instance:</p>\n <ul>\n <li *ngFor=\"let clientConfig of queryClientConfigs; index as i; trackBy: trackByClient\">\n <button (click)=\"selectClient(i)\">\n {{ clientConfig.displayName ?? clientConfig.client.config.baseRoute }}\n </button>\n </li>\n </ul>\n </ng-container>\n\n <ng-container *ngIf=\"selectedClientConfig() as cfg\">\n <p>{{ cfg.displayName ?? cfg.client.config.baseRoute }}</p>\n\n <button (click)=\"cfg.client._store.refreshQueriesInUse()\">Force Refresh of in use queries</button> <br />\n <button (click)=\"cfg.client._store.refreshQueriesInUse({ ignoreCacheValidity: true })\">HARD Force Refresh</button>\n <br />\n <button (click)=\"cfg.client._store.refreshQueriesInUse({ ignoreCacheValidity: true, purgeUnused: true })\">\n PURGE & HARD Force Refresh\n </button>\n\n <ul>\n <li *ngFor=\"let query of queries(); trackBy: trackByQuery\">\n <button (click)=\"selectQuery(query)\">\n {{ query._routeWithParams }}\n </button>\n </li>\n </ul>\n </ng-container>\n\n <ng-container *ngIf=\"selectedQuery() as query\">\n <p>{{ query._routeWithParams }}</p>\n\n <button (click)=\"query.execute()\">Execute</button> <br />\n <button (click)=\"query.execute({ skipCache: true })\">FORCE Execute</button> <br />\n <button (click)=\"query.abort()\">Abort</button> <br />\n <button (click)=\"query.poll({ interval: 5000, takeUntil: _destroy$ })\">Poll</button> <br />\n <button (click)=\"query.stopPolling()\">Stop polling</button> <br />\n <button (click)=\"query.pausePolling()\">Pause polling</button> <br />\n <button (click)=\"query.resumePolling()\">Resume polling</button> <br />\n\n <div>\n <p>state type</p>\n <pre>{{
|
|
121
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: QueryDevtoolsComponent, isStandalone: true, selector: "et-query-devtools", host: { classAttribute: "et-query-devtools" }, ngImport: i0, template: "<button *ngIf=\"!isOpen()\" (click)=\"toggleOpen()\" class=\"et-query-devtools-open-btn\">Open Devtools</button>\n\n<div\n *ngIf=\"isOpen()\"\n [class.et-query-devtools-container--transparent]=\"isTranslucent()\"\n class=\"et-query-devtools-container et-query-devtools-container--snap-{{ snapLayout() }}\"\n>\n <button (click)=\"toggleOpen()\" class=\"et-query-devtools-close-btn\">Close Devtools</button>\n <button (click)=\"toggleTranslucent()\" class=\"et-query-devtools-translucent-btn\">Toggle Translucent</button>\n <button (click)=\"selectSnapLayout('full')\" class=\"et-query-devtools-snap-btn\">Snap full</button>\n <button (click)=\"selectSnapLayout('top')\" class=\"et-query-devtools-snap-btn\">Snap top</button>\n <button (click)=\"selectSnapLayout('bottom')\" class=\"et-query-devtools-snap-btn\">Snap bottom</button>\n <button (click)=\"selectSnapLayout('left')\" class=\"et-query-devtools-snap-btn\">Snap left</button>\n <button (click)=\"selectSnapLayout('right')\" class=\"et-query-devtools-snap-btn\">Snap right</button>\n\n <ng-container *ngIf=\"queryClientConfigs.length > 1\">\n <p>Client instance:</p>\n <ul>\n <li *ngFor=\"let clientConfig of queryClientConfigs; index as i; trackBy: trackByClient\">\n <button (click)=\"selectClient(i)\">\n {{ clientConfig.displayName ?? clientConfig.client.config.baseRoute }}\n </button>\n </li>\n </ul>\n </ng-container>\n\n <ng-container *ngIf=\"selectedClientConfig() as cfg\">\n <p>{{ cfg.displayName ?? cfg.client.config.baseRoute }}</p>\n\n <button (click)=\"cfg.client._store.refreshQueriesInUse()\">Force Refresh of in use queries</button> <br />\n <button (click)=\"cfg.client._store.refreshQueriesInUse({ ignoreCacheValidity: true })\">HARD Force Refresh</button>\n <br />\n <button (click)=\"cfg.client._store.refreshQueriesInUse({ ignoreCacheValidity: true, purgeUnused: true })\">\n PURGE & HARD Force Refresh\n </button>\n\n <br />\n <br />\n\n <button (click)=\"selectQueryListMode('live')\">Live</button>\n <button (click)=\"selectQueryListMode('history')\">History (last {{ queryHistory().length }} )</button>\n <button *ngIf=\"queryListMode() === 'history'\" (click)=\"clearQueryHistory()\">Clear</button>\n <ul *ngIf=\"queryListMode() === 'live'\">\n <li *ngFor=\"let query of queries(); trackBy: trackByQuery\">\n <button (click)=\"selectQuery(query)\">\n {{ query._routeWithParams }}\n </button>\n </li>\n </ul>\n\n <ul *ngIf=\"queryListMode() === 'history'\">\n <li *ngFor=\"let query of queryHistory(); trackBy: trackByQuery\">\n <button (click)=\"selectQuery(query)\">\n {{ query._routeWithParams }}\n </button>\n </li>\n </ul>\n </ng-container>\n\n <ng-container *ngIf=\"selectedQuery() as query\">\n <p>{{ query._routeWithParams }}</p>\n\n <button (click)=\"query.execute()\">Execute</button> <br />\n <button (click)=\"query.execute({ skipCache: true })\">FORCE Execute</button> <br />\n <button (click)=\"query.abort()\">Abort</button> <br />\n <button (click)=\"query.poll({ interval: 5000, takeUntil: _destroy$ })\">Poll</button> <br />\n <button (click)=\"query.stopPolling()\">Stop polling</button> <br />\n <button (click)=\"query.pausePolling()\">Pause polling</button> <br />\n <button (click)=\"query.resumePolling()\">Resume polling</button> <br />\n\n <div>\n <p>state type</p>\n <pre>{{ query.rawState.type }}</pre>\n </div>\n\n <div>\n <p>_enableSmartPolling:</p>\n <pre>{{ query._enableSmartPolling }}</pre>\n </div>\n\n <div>\n <p>isExpired:</p>\n <pre>{{ query.isExpired }}</pre>\n </div>\n\n <div>\n <p>isInUse:</p>\n <pre>{{ query.isInUse }}</pre>\n </div>\n\n <div>\n <p>_subscriberCount:</p>\n <pre>{{ query._subscriberCount }}</pre>\n </div>\n\n <div>\n <p>isPolling:</p>\n <pre>{{ query.isPolling }}</pre>\n </div>\n\n <div>\n <p>_arguments:</p>\n <pre>{{ query._arguments | json }}</pre>\n </div>\n\n <div>\n <p>state$:</p>\n <p><i> Warning, this will cause a subscription if shown </i></p>\n <button (click)=\"toggleShowResponse()\">Show/Hide</button>\n <pre *ngIf=\"showResponse()\">{{ query.state$ | async | json }}</pre>\n </div>\n\n <div>\n <p>rawState:</p>\n <button (click)=\"toggleShowRawResponse()\">Show/Hide</button>\n <pre *ngIf=\"showRawResponse()\">{{ query.rawState | json }}</pre>\n </div>\n </ng-container>\n</div>\n", styles: [".et-query-devtools-container{position:fixed;inset:0;background-color:#000;z-index:10000;overflow:auto}.et-query-devtools-container.et-query-devtools-container--transparent{opacity:.25;pointer-events:none}.et-query-devtools-container.et-query-devtools-container--transparent .et-query-devtools-translucent-btn{pointer-events:all}.et-query-devtools-container.et-query-devtools-container--snap-left{inset-inline-start:0;inset-block-start:0;inset-block-end:0;width:50%}.et-query-devtools-container.et-query-devtools-container--snap-right{inset-inline-start:unset;inset-inline-end:0;inset-block-start:0;inset-block-end:0;width:50%}.et-query-devtools-container.et-query-devtools-container--snap-top{inset-inline-start:0;inset-block-start:0;inset-inline-end:0;height:50%}.et-query-devtools-container.et-query-devtools-container--snap-bottom{inset-inline-start:0;inset-block-start:unset;inset-block-end:0;inset-inline-end:0;height:50%}.et-query-devtools-open-btn{position:fixed;inset-inline-start:0;inset-block-start:0;z-index:9999}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: JsonPipe, name: "json" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.ShadowDom }); }
|
|
96
122
|
}
|
|
97
123
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: QueryDevtoolsComponent, decorators: [{
|
|
98
124
|
type: Component,
|
|
99
125
|
args: [{ selector: 'et-query-devtools', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.ShadowDom, host: {
|
|
100
126
|
class: 'et-query-devtools',
|
|
101
|
-
}, imports: [NgIf, NgFor, AsyncPipe, JsonPipe], hostDirectives: [], template: "<button *ngIf=\"!isOpen()\" (click)=\"toggleOpen()\" class=\"et-query-devtools-open-btn\">Open Devtools</button>\n\n<div\n *ngIf=\"isOpen()\"\n [class.et-query-devtools-container--transparent]=\"isTranslucent()\"\n class=\"et-query-devtools-container et-query-devtools-container--snap-{{ snapLayout() }}\"\n>\n <button (click)=\"toggleOpen()\" class=\"et-query-devtools-close-btn\">Close Devtools</button>\n <button (click)=\"toggleTranslucent()\" class=\"et-query-devtools-translucent-btn\">Toggle Translucent</button>\n <button (click)=\"selectSnapLayout('full')\" class=\"et-query-devtools-snap-btn\">Snap full</button>\n <button (click)=\"selectSnapLayout('top')\" class=\"et-query-devtools-snap-btn\">Snap top</button>\n <button (click)=\"selectSnapLayout('bottom')\" class=\"et-query-devtools-snap-btn\">Snap bottom</button>\n <button (click)=\"selectSnapLayout('left')\" class=\"et-query-devtools-snap-btn\">Snap left</button>\n <button (click)=\"selectSnapLayout('right')\" class=\"et-query-devtools-snap-btn\">Snap right</button>\n\n <ng-container *ngIf=\"queryClientConfigs.length > 1\">\n <p>Client instance:</p>\n <ul>\n <li *ngFor=\"let clientConfig of queryClientConfigs; index as i; trackBy: trackByClient\">\n <button (click)=\"selectClient(i)\">\n {{ clientConfig.displayName ?? clientConfig.client.config.baseRoute }}\n </button>\n </li>\n </ul>\n </ng-container>\n\n <ng-container *ngIf=\"selectedClientConfig() as cfg\">\n <p>{{ cfg.displayName ?? cfg.client.config.baseRoute }}</p>\n\n <button (click)=\"cfg.client._store.refreshQueriesInUse()\">Force Refresh of in use queries</button> <br />\n <button (click)=\"cfg.client._store.refreshQueriesInUse({ ignoreCacheValidity: true })\">HARD Force Refresh</button>\n <br />\n <button (click)=\"cfg.client._store.refreshQueriesInUse({ ignoreCacheValidity: true, purgeUnused: true })\">\n PURGE & HARD Force Refresh\n </button>\n\n <ul>\n <li *ngFor=\"let query of queries(); trackBy: trackByQuery\">\n <button (click)=\"selectQuery(query)\">\n {{ query._routeWithParams }}\n </button>\n </li>\n </ul>\n </ng-container>\n\n <ng-container *ngIf=\"selectedQuery() as query\">\n <p>{{ query._routeWithParams }}</p>\n\n <button (click)=\"query.execute()\">Execute</button> <br />\n <button (click)=\"query.execute({ skipCache: true })\">FORCE Execute</button> <br />\n <button (click)=\"query.abort()\">Abort</button> <br />\n <button (click)=\"query.poll({ interval: 5000, takeUntil: _destroy$ })\">Poll</button> <br />\n <button (click)=\"query.stopPolling()\">Stop polling</button> <br />\n <button (click)=\"query.pausePolling()\">Pause polling</button> <br />\n <button (click)=\"query.resumePolling()\">Resume polling</button> <br />\n\n <div>\n <p>state type</p>\n <pre>{{
|
|
127
|
+
}, imports: [NgIf, NgFor, AsyncPipe, JsonPipe], hostDirectives: [], template: "<button *ngIf=\"!isOpen()\" (click)=\"toggleOpen()\" class=\"et-query-devtools-open-btn\">Open Devtools</button>\n\n<div\n *ngIf=\"isOpen()\"\n [class.et-query-devtools-container--transparent]=\"isTranslucent()\"\n class=\"et-query-devtools-container et-query-devtools-container--snap-{{ snapLayout() }}\"\n>\n <button (click)=\"toggleOpen()\" class=\"et-query-devtools-close-btn\">Close Devtools</button>\n <button (click)=\"toggleTranslucent()\" class=\"et-query-devtools-translucent-btn\">Toggle Translucent</button>\n <button (click)=\"selectSnapLayout('full')\" class=\"et-query-devtools-snap-btn\">Snap full</button>\n <button (click)=\"selectSnapLayout('top')\" class=\"et-query-devtools-snap-btn\">Snap top</button>\n <button (click)=\"selectSnapLayout('bottom')\" class=\"et-query-devtools-snap-btn\">Snap bottom</button>\n <button (click)=\"selectSnapLayout('left')\" class=\"et-query-devtools-snap-btn\">Snap left</button>\n <button (click)=\"selectSnapLayout('right')\" class=\"et-query-devtools-snap-btn\">Snap right</button>\n\n <ng-container *ngIf=\"queryClientConfigs.length > 1\">\n <p>Client instance:</p>\n <ul>\n <li *ngFor=\"let clientConfig of queryClientConfigs; index as i; trackBy: trackByClient\">\n <button (click)=\"selectClient(i)\">\n {{ clientConfig.displayName ?? clientConfig.client.config.baseRoute }}\n </button>\n </li>\n </ul>\n </ng-container>\n\n <ng-container *ngIf=\"selectedClientConfig() as cfg\">\n <p>{{ cfg.displayName ?? cfg.client.config.baseRoute }}</p>\n\n <button (click)=\"cfg.client._store.refreshQueriesInUse()\">Force Refresh of in use queries</button> <br />\n <button (click)=\"cfg.client._store.refreshQueriesInUse({ ignoreCacheValidity: true })\">HARD Force Refresh</button>\n <br />\n <button (click)=\"cfg.client._store.refreshQueriesInUse({ ignoreCacheValidity: true, purgeUnused: true })\">\n PURGE & HARD Force Refresh\n </button>\n\n <br />\n <br />\n\n <button (click)=\"selectQueryListMode('live')\">Live</button>\n <button (click)=\"selectQueryListMode('history')\">History (last {{ queryHistory().length }} )</button>\n <button *ngIf=\"queryListMode() === 'history'\" (click)=\"clearQueryHistory()\">Clear</button>\n <ul *ngIf=\"queryListMode() === 'live'\">\n <li *ngFor=\"let query of queries(); trackBy: trackByQuery\">\n <button (click)=\"selectQuery(query)\">\n {{ query._routeWithParams }}\n </button>\n </li>\n </ul>\n\n <ul *ngIf=\"queryListMode() === 'history'\">\n <li *ngFor=\"let query of queryHistory(); trackBy: trackByQuery\">\n <button (click)=\"selectQuery(query)\">\n {{ query._routeWithParams }}\n </button>\n </li>\n </ul>\n </ng-container>\n\n <ng-container *ngIf=\"selectedQuery() as query\">\n <p>{{ query._routeWithParams }}</p>\n\n <button (click)=\"query.execute()\">Execute</button> <br />\n <button (click)=\"query.execute({ skipCache: true })\">FORCE Execute</button> <br />\n <button (click)=\"query.abort()\">Abort</button> <br />\n <button (click)=\"query.poll({ interval: 5000, takeUntil: _destroy$ })\">Poll</button> <br />\n <button (click)=\"query.stopPolling()\">Stop polling</button> <br />\n <button (click)=\"query.pausePolling()\">Pause polling</button> <br />\n <button (click)=\"query.resumePolling()\">Resume polling</button> <br />\n\n <div>\n <p>state type</p>\n <pre>{{ query.rawState.type }}</pre>\n </div>\n\n <div>\n <p>_enableSmartPolling:</p>\n <pre>{{ query._enableSmartPolling }}</pre>\n </div>\n\n <div>\n <p>isExpired:</p>\n <pre>{{ query.isExpired }}</pre>\n </div>\n\n <div>\n <p>isInUse:</p>\n <pre>{{ query.isInUse }}</pre>\n </div>\n\n <div>\n <p>_subscriberCount:</p>\n <pre>{{ query._subscriberCount }}</pre>\n </div>\n\n <div>\n <p>isPolling:</p>\n <pre>{{ query.isPolling }}</pre>\n </div>\n\n <div>\n <p>_arguments:</p>\n <pre>{{ query._arguments | json }}</pre>\n </div>\n\n <div>\n <p>state$:</p>\n <p><i> Warning, this will cause a subscription if shown </i></p>\n <button (click)=\"toggleShowResponse()\">Show/Hide</button>\n <pre *ngIf=\"showResponse()\">{{ query.state$ | async | json }}</pre>\n </div>\n\n <div>\n <p>rawState:</p>\n <button (click)=\"toggleShowRawResponse()\">Show/Hide</button>\n <pre *ngIf=\"showRawResponse()\">{{ query.rawState | json }}</pre>\n </div>\n </ng-container>\n</div>\n", styles: [".et-query-devtools-container{position:fixed;inset:0;background-color:#000;z-index:10000;overflow:auto}.et-query-devtools-container.et-query-devtools-container--transparent{opacity:.25;pointer-events:none}.et-query-devtools-container.et-query-devtools-container--transparent .et-query-devtools-translucent-btn{pointer-events:all}.et-query-devtools-container.et-query-devtools-container--snap-left{inset-inline-start:0;inset-block-start:0;inset-block-end:0;width:50%}.et-query-devtools-container.et-query-devtools-container--snap-right{inset-inline-start:unset;inset-inline-end:0;inset-block-start:0;inset-block-end:0;width:50%}.et-query-devtools-container.et-query-devtools-container--snap-top{inset-inline-start:0;inset-block-start:0;inset-inline-end:0;height:50%}.et-query-devtools-container.et-query-devtools-container--snap-bottom{inset-inline-start:0;inset-block-start:unset;inset-block-end:0;inset-inline-end:0;height:50%}.et-query-devtools-open-btn{position:fixed;inset-inline-start:0;inset-block-start:0;z-index:9999}\n"] }]
|
|
102
128
|
}], ctorParameters: function () { return []; } });
|
|
103
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktZGV2dG9vbHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9xdWVyeS9zcmMvbGliL2RldnRvb2xzL2NvbXBvbmVudHMvcXVlcnktZGV2dG9vbHMvcXVlcnktZGV2dG9vbHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9xdWVyeS9zcmMvbGliL2RldnRvb2xzL2NvbXBvbmVudHMvcXVlcnktZGV2dG9vbHMvcXVlcnktZGV2dG9vbHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ25FLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUVULGlCQUFpQixFQUNqQixRQUFRLEVBQ1IsTUFBTSxFQUNOLE1BQU0sRUFDTixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRWhGLE9BQU8sRUFBRSwyQkFBMkIsRUFBOEIsTUFBTSxhQUFhLENBQUM7O0FBa0J0RixNQUFNLE9BQU8sc0JBQXNCO0lBNENqQztRQTNDbUIsY0FBUyxHQUFHLGFBQWEsRUFBRSxDQUFDO1FBRTVCLHVCQUFrQixHQUFHLE1BQU0sQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO1FBRXpELFdBQU0sR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkIsa0JBQWEsR0FBRyxNQUFNLENBQUMsS0FBSyxD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LGlCQUNoQyxpQkFBaUIsQ0FBQyxTQUFTLFFBRXBDO3dCQUNKLEtBQUssRUFBRSxtQkFBbUI7cUJBQzNCLFdBQ1EsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxRQUFRLENBQUMsa0JBQzNCLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBc3luY1BpcGUsIEpzb25QaXBlLCBOZ0ZvciwgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBUcmFja0J5RnVuY3Rpb24sXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBjb21wdXRlZCxcbiAgZWZmZWN0LFxuICBpbmplY3QsXG4gIHNpZ25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0b1NpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IGNyZWF0ZURlc3Ryb3kgfSBmcm9tICdAZXRobGV0ZS9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3ViamVjdCwgbWFwLCBzdGFydFdpdGgsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBbnlRdWVyeSB9IGZyb20gJy4uLy4uLy4uL3F1ZXJ5JztcbmltcG9ydCB7IFFVRVJZX0NMSUVOVF9ERVZUT09MU19UT0tFTiwgUXVlcnlDbGllbnREZXZ0b29sc09wdGlvbnMgfSBmcm9tICcuLi8uLi91dGlscyc7XG5cbnR5cGUgUXVlcnlEZXZ0b29sc1NuYXBMYXlvdXQgPSAnZnVsbCcgfCAnbGVmdCcgfCAncmlnaHQnIHwgJ2JvdHRvbScgfCAndG9wJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZXQtcXVlcnktZGV2dG9vbHMnLFxuICB0ZW1wbGF0ZVVybDogJy4vcXVlcnktZGV2dG9vbHMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9xdWVyeS1kZXZ0b29scy5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uU2hhZG93RG9tLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWhvc3QtbWV0YWRhdGEtcHJvcGVydHlcbiAgaG9zdDoge1xuICAgIGNsYXNzOiAnZXQtcXVlcnktZGV2dG9vbHMnLFxuICB9LFxuICBpbXBvcnRzOiBbTmdJZiwgTmdGb3IsIEFzeW5jUGlwZSwgSnNvblBpcGVdLFxuICBob3N0RGlyZWN0aXZlczogW10sXG59KVxuZXhwb3J0IGNsYXNzIFF1ZXJ5RGV2dG9vbHNDb21wb25lbnQge1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2Rlc3Ryb3kkID0gY3JlYXRlRGVzdHJveSgpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBxdWVyeUNsaWVudENvbmZpZ3MgPSBpbmplY3QoUVVFUllfQ0xJRU5UX0RFVlRPT0xTX1RPS0VOKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgaXNPcGVuID0gc2lnbmFsKGZhbHNlKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGlzVHJhbnNsdWNlbnQgPSBzaWduYWwoZmFsc2UpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc25hcExheW91dCA9IHNpZ25hbDxRdWVyeURldnRvb2xzU25hcExheW91dD4oJ2Z1bGwnKTtcblxuICBwcm90ZWN0ZWQgc2hvd1Jlc3BvbnNlID0gc2lnbmFsKGZhbHNlKTtcbiAgcHJvdGVjdGVkIHNob3dSYXdSZXNwb25zZSA9IHNpZ25hbChmYWxzZSk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHNlbGVjdGVkQ2xpZW50SWQgPSBzaWduYWwoMCk7XG4gIHByb3RlY3RlZCByZWFkb25seSBzZWxlY3RlZFF1ZXJ5UGF0aCA9IHNpZ25hbDxzdHJpbmcgfCBudWxsPihudWxsKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc2VsZWN0ZWRDbGllbnRDb25maWcgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgaWYgKHRoaXMucXVlcnlDbGllbnRDb25maWdzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgcmV0dXJuIHRoaXMucXVlcnlDbGllbnRDb25maWdzWzBdO1xuICAgIH1cblxuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5zZWxlY3RlZENsaWVudElkKCk7XG5cbiAgICByZXR1cm4gdGhpcy5xdWVyeUNsaWVudENvbmZpZ3NbaW5kZXhdO1xuICB9KTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgcXVlcnlTdG9yZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBjb25maWcgPSB0aGlzLnNlbGVjdGVkQ2xpZW50Q29uZmlnKCk7XG5cbiAgICByZXR1cm4gY29uZmlnLmNsaWVudC5fc3RvcmU7XG4gIH0pO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3F1ZXJpZXMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxBbnlRdWVyeVtdPihbXSk7XG4gIHByb3RlY3RlZCByZWFkb25seSBxdWVyaWVzID0gdG9TaWduYWwodGhpcy5fcXVlcmllcyQpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBzZWxlY3RlZFF1ZXJ5ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHBhdGggPSB0aGlzLnNlbGVjdGVkUXVlcnlQYXRoKCk7XG5cbiAgICBpZiAoIXBhdGgpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnF1ZXJpZXMoKT8uZmluZCgocSkgPT4gcS5fcm91dGVXaXRoUGFyYW1zID09PSBwYXRoKSA/PyBudWxsO1xuICB9KTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBjb25zdCBjaGFuZ2UkID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcblxuICAgIGVmZmVjdChcbiAgICAgICgpID0+IHtcbiAgICAgICAgY2hhbmdlJC5uZXh0KHRydWUpO1xuXG4gICAgICAgIGNvbnN0IHN0b3JlID0gdGhpcy5xdWVyeVN0b3JlKCk7XG5cbiAgICAgICAgc3RvcmUuc3RvcmVDaGFuZ2UkXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICBzdGFydFdpdGgoJycpLFxuICAgICAgICAgICAgbWFwKCgpID0+IHN0b3JlLl9zdG9yZSksXG4gICAgICAgICAgICB0YXAoKHMpID0+IHRoaXMuX3F1ZXJpZXMkLm5leHQoQXJyYXkuZnJvbShzLnZhbHVlcygpKSkpLFxuICAgICAgICAgICAgdGFrZVVudGlsKGNoYW5nZSQpLFxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgICAgICApXG4gICAgICAgICAgLnN1YnNjcmliZSgpO1xuICAgICAgfSxcbiAgICAgIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfSxcbiAgICApO1xuXG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IGRldnRvb2xDb25maWcgPSB7XG4gICAgICAgIGlzT3BlbjogdGhpcy5pc09wZW4oKSxcbiAgICAgICAgaXNUcmFuc2x1Y2VudDogdGhpcy5pc1RyYW5zbHVjZW50KCksXG4gICAgICAgIHNuYXBMYXlvdXQ6IHRoaXMuc25hcExheW91dCgpLFxuICAgICAgICBzaG93UmVzcG9uc2U6IHRoaXMuc2hvd1Jlc3BvbnNlKCksXG4gICAgICAgIHNob3dSYXdSZXNwb25zZTogdGhpcy5zaG93UmF3UmVzcG9uc2UoKSxcbiAgICAgICAgc2VsZWN0ZWRDbGllbnRJZDogdGhpcy5zZWxlY3RlZENsaWVudElkKCksXG4gICAgICAgIHNlbGVjdGVkUXVlcnlQYXRoOiB0aGlzLnNlbGVjdGVkUXVlcnlQYXRoKCksXG4gICAgICB9O1xuXG4gICAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2V0aGxldGU6cXVlcnk6ZGV2dG9vbHMnLCBKU09OLnN0cmluZ2lmeShkZXZ0b29sQ29uZmlnKSk7XG4gICAgfSk7XG5cbiAgICBjb25zdCBpbml0aWFsQ29uZmlnID0gd2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKCdldGhsZXRlOnF1ZXJ5OmRldnRvb2xzJyk7XG5cbiAgICBpZiAoaW5pdGlhbENvbmZpZykge1xuICAgICAgY29uc3QgcGFyc2VkID0gSlNPTi5wYXJzZShpbml0aWFsQ29uZmlnKTtcblxuICAgICAgdGhpcy5pc09wZW4uc2V0KHBhcnNlZC5pc09wZW4gPz8gZmFsc2UpO1xuICAgICAgdGhpcy5pc1RyYW5zbHVjZW50LnNldChwYXJzZWQuaXNUcmFuc2x1Y2VudCA/PyBmYWxzZSk7XG4gICAgICB0aGlzLnNuYXBMYXlvdXQuc2V0KHBhcnNlZC5zbmFwTGF5b3V0ID8/ICdmdWxsJyk7XG4gICAgICB0aGlzLnNob3dSZXNwb25zZS5zZXQocGFyc2VkLnNob3dSZXNwb25zZSA/PyBmYWxzZSk7XG4gICAgICB0aGlzLnNob3dSYXdSZXNwb25zZS5zZXQocGFyc2VkLnNob3dSYXdSZXNwb25zZSA/PyBmYWxzZSk7XG4gICAgICB0aGlzLnNlbGVjdGVkQ2xpZW50SWQuc2V0KHBhcnNlZC5zZWxlY3RlZENsaWVudElkID8/IDApO1xuICAgICAgdGhpcy5zZWxlY3RlZFF1ZXJ5UGF0aC5zZXQocGFyc2VkLnNlbGVjdGVkUXVlcnlQYXRoID8/IG51bGwpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCB0cmFja0J5Q2xpZW50OiBUcmFja0J5RnVuY3Rpb248UXVlcnlDbGllbnREZXZ0b29sc09wdGlvbnM+ID0gKF8sIHsgY2xpZW50IH0pID0+IGNsaWVudC5jb25maWcuYmFzZVJvdXRlO1xuICBwcm90ZWN0ZWQgdHJhY2tCeVF1ZXJ5OiBUcmFja0J5RnVuY3Rpb248QW55UXVlcnk+ID0gKF8sIHsgX3JvdXRlV2l0aFBhcmFtcyB9KSA9PiBfcm91dGVXaXRoUGFyYW1zO1xuXG4gIHByb3RlY3RlZCB0b2dnbGVPcGVuKCkge1xuICAgIHRoaXMuaXNPcGVuLnNldCghdGhpcy5pc09wZW4oKSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgdG9nZ2xlVHJhbnNsdWNlbnQoKSB7XG4gICAgdGhpcy5pc1RyYW5zbHVjZW50LnNldCghdGhpcy5pc1RyYW5zbHVjZW50KCkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHRvZ2dsZVNob3dSZXNwb25zZSgpIHtcbiAgICB0aGlzLnNob3dSZXNwb25zZS5zZXQoIXRoaXMuc2hvd1Jlc3BvbnNlKCkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHRvZ2dsZVNob3dSYXdSZXNwb25zZSgpIHtcbiAgICB0aGlzLnNob3dSYXdSZXNwb25zZS5zZXQoIXRoaXMuc2hvd1Jhd1Jlc3BvbnNlKCkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNlbGVjdFNuYXBMYXlvdXQobGF5b3V0OiBRdWVyeURldnRvb2xzU25hcExheW91dCkge1xuICAgIHRoaXMuc25hcExheW91dC5zZXQobGF5b3V0KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzZWxlY3RDbGllbnQoY2xpZW50SWQ6IG51bWJlcikge1xuICAgIHRoaXMuc2VsZWN0ZWRDbGllbnRJZC5zZXQoY2xpZW50SWQpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNlbGVjdFF1ZXJ5KHF1ZXJ5OiBBbnlRdWVyeSkge1xuICAgIHRoaXMuc2VsZWN0ZWRRdWVyeVBhdGguc2V0KHF1ZXJ5Ll9yb3V0ZVdpdGhQYXJhbXMpO1xuICB9XG59XG4iLCI8YnV0dG9uICpuZ0lmPVwiIWlzT3BlbigpXCIgKGNsaWNrKT1cInRvZ2dsZU9wZW4oKVwiIGNsYXNzPVwiZXQtcXVlcnktZGV2dG9vbHMtb3Blbi1idG5cIj5PcGVuIERldnRvb2xzPC9idXR0b24+XG5cbjxkaXZcbiAgKm5nSWY9XCJpc09wZW4oKVwiXG4gIFtjbGFzcy5ldC1xdWVyeS1kZXZ0b29scy1jb250YWluZXItLXRyYW5zcGFyZW50XT1cImlzVHJhbnNsdWNlbnQoKVwiXG4gIGNsYXNzPVwiZXQtcXVlcnktZGV2dG9vbHMtY29udGFpbmVyIGV0LXF1ZXJ5LWRldnRvb2xzLWNvbnRhaW5lci0tc25hcC17eyBzbmFwTGF5b3V0KCkgfX1cIlxuPlxuICA8YnV0dG9uIChjbGljayk9XCJ0b2dnbGVPcGVuKClcIiBjbGFzcz1cImV0LXF1ZXJ5LWRldnRvb2xzLWNsb3NlLWJ0blwiPkNsb3NlIERldnRvb2xzPC9idXR0b24+XG4gIDxidXR0b24gKGNsaWNrKT1cInRvZ2dsZVRyYW5zbHVjZW50KClcIiBjbGFzcz1cImV0LXF1ZXJ5LWRldnRvb2xzLXRyYW5zbHVjZW50LWJ0blwiPlRvZ2dsZSBUcmFuc2x1Y2VudDwvYnV0dG9uPlxuICA8YnV0dG9uIChjbGljayk9XCJzZWxlY3RTbmFwTGF5b3V0KCdmdWxsJylcIiBjbGFzcz1cImV0LXF1ZXJ5LWRldnRvb2xzLXNuYXAtYnRuXCI+U25hcCBmdWxsPC9idXR0b24+XG4gIDxidXR0b24gKGNsaWNrKT1cInNlbGVjdFNuYXBMYXlvdXQoJ3RvcCcpXCIgY2xhc3M9XCJldC1xdWVyeS1kZXZ0b29scy1zbmFwLWJ0blwiPlNuYXAgdG9wPC9idXR0b24+XG4gIDxidXR0b24gKGNsaWNrKT1cInNlbGVjdFNuYXBMYXlvdXQoJ2JvdHRvbScpXCIgY2xhc3M9XCJldC1xdWVyeS1kZXZ0b29scy1zbmFwLWJ0blwiPlNuYXAgYm90dG9tPC9idXR0b24+XG4gIDxidXR0b24gKGNsaWNrKT1cInNlbGVjdFNuYXBMYXlvdXQoJ2xlZnQnKVwiIGNsYXNzPVwiZXQtcXVlcnktZGV2dG9vbHMtc25hcC1idG5cIj5TbmFwIGxlZnQ8L2J1dHRvbj5cbiAgPGJ1dHRvbiAoY2xpY2spPVwic2VsZWN0U25hcExheW91dCgncmlnaHQnKVwiIGNsYXNzPVwiZXQtcXVlcnktZGV2dG9vbHMtc25hcC1idG5cIj5TbmFwIHJpZ2h0PC9idXR0b24+XG5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInF1ZXJ5Q2xpZW50Q29uZmlncy5sZW5ndGggPiAxXCI+XG4gICAgPHA+Q2xpZW50IGluc3RhbmNlOjwvcD5cbiAgICA8dWw+XG4gICAgICA8bGkgKm5nRm9yPVwibGV0IGNsaWVudENvbmZpZyBvZiBxdWVyeUNsaWVudENvbmZpZ3M7IGluZGV4IGFzIGk7IHRyYWNrQnk6IHRyYWNrQnlDbGllbnRcIj5cbiAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwic2VsZWN0Q2xpZW50KGkpXCI+XG4gICAgICAgICAge3sgY2xpZW50Q29uZmlnLmRpc3BsYXlOYW1lID8/IGNsaWVudENvbmZpZy5jbGllbnQuY29uZmlnLmJhc2VSb3V0ZSB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvbGk+XG4gICAgPC91bD5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdGVkQ2xpZW50Q29uZmlnKCkgYXMgY2ZnXCI+XG4gICAgPHA+e3sgY2ZnLmRpc3BsYXlOYW1lID8/IGNmZy5jbGllbnQuY29uZmlnLmJhc2VSb3V0ZSB9fTwvcD5cblxuICAgIDxidXR0b24gKGNsaWNrKT1cImNmZy5jbGllbnQuX3N0b3JlLnJlZnJlc2hRdWVyaWVzSW5Vc2UoKVwiPkZvcmNlIFJlZnJlc2ggb2YgaW4gdXNlIHF1ZXJpZXM8L2J1dHRvbj4gPGJyIC8+XG4gICAgPGJ1dHRvbiAoY2xpY2spPVwiY2ZnLmNsaWVudC5fc3RvcmUucmVmcmVzaFF1ZXJpZXNJblVzZSh7IGlnbm9yZUNhY2hlVmFsaWRpdHk6IHRydWUgfSlcIj5IQVJEIEZvcmNlIFJlZnJlc2g8L2J1dHRvbj5cbiAgICA8YnIgLz5cbiAgICA8YnV0dG9uIChjbGljayk9XCJjZmcuY2xpZW50Ll9zdG9yZS5yZWZyZXNoUXVlcmllc0luVXNlKHsgaWdub3JlQ2FjaGVWYWxpZGl0eTogdHJ1ZSwgcHVyZ2VVbnVzZWQ6IHRydWUgfSlcIj5cbiAgICAgIFBVUkdFICYgSEFSRCBGb3JjZSBSZWZyZXNoXG4gICAgPC9idXR0b24+XG5cbiAgICA8dWw+XG4gICAgICA8bGkgKm5nRm9yPVwibGV0IHF1ZXJ5IG9mIHF1ZXJpZXMoKTsgdHJhY2tCeTogdHJhY2tCeVF1ZXJ5XCI+XG4gICAgICAgIDxidXR0b24gKGNsaWNrKT1cInNlbGVjdFF1ZXJ5KHF1ZXJ5KVwiPlxuICAgICAgICAgIHt7IHF1ZXJ5Ll9yb3V0ZVdpdGhQYXJhbXMgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3RlZFF1ZXJ5KCkgYXMgcXVlcnlcIj5cbiAgICA8cD57eyBxdWVyeS5fcm91dGVXaXRoUGFyYW1zIH19PC9wPlxuXG4gICAgPGJ1dHRvbiAoY2xpY2spPVwicXVlcnkuZXhlY3V0ZSgpXCI+RXhlY3V0ZTwvYnV0dG9uPiA8YnIgLz5cbiAgICA8YnV0dG9uIChjbGljayk9XCJxdWVyeS5leGVjdXRlKHsgc2tpcENhY2hlOiB0cnVlIH0pXCI+Rk9SQ0UgRXhlY3V0ZTwvYnV0dG9uPiA8YnIgLz5cbiAgICA8YnV0dG9uIChjbGljayk9XCJxdWVyeS5hYm9ydCgpXCI+QWJvcnQ8L2J1dHRvbj4gPGJyIC8+XG4gICAgPGJ1dHRvbiAoY2xpY2spPVwicXVlcnkucG9sbCh7IGludGVydmFsOiA1MDAwLCB0YWtlVW50aWw6IF9kZXN0cm95JCB9KVwiPlBvbGw8L2J1dHRvbj4gPGJyIC8+XG4gICAgPGJ1dHRvbiAoY2xpY2spPVwicXVlcnkuc3RvcFBvbGxpbmcoKVwiPlN0b3AgcG9sbGluZzwvYnV0dG9uPiA8YnIgLz5cbiAgICA8YnV0dG9uIChjbGljayk9XCJxdWVyeS5wYXVzZVBvbGxpbmcoKVwiPlBhdXNlIHBvbGxpbmc8L2J1dHRvbj4gPGJyIC8+XG4gICAgPGJ1dHRvbiAoY2xpY2spPVwicXVlcnkucmVzdW1lUG9sbGluZygpXCI+UmVzdW1lIHBvbGxpbmc8L2J1dHRvbj4gPGJyIC8+XG5cbiAgICA8ZGl2PlxuICAgICAgPHA+c3RhdGUgdHlwZTwvcD5cbiAgICAgIDxwcmU+e3sgKHF1ZXJ5LnN0YXRlJCB8IGFzeW5jKT8udHlwZSB9fTwvcHJlPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdj5cbiAgICAgIDxwPl9lbmFibGVTbWFydFBvbGxpbmc6PC9wPlxuICAgICAgPHByZT57eyBxdWVyeS5fZW5hYmxlU21hcnRQb2xsaW5nIH19PC9wcmU+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2PlxuICAgICAgPHA+aXNFeHBpcmVkOjwvcD5cbiAgICAgIDxwcmU+e3sgcXVlcnkuaXNFeHBpcmVkIH19PC9wcmU+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2PlxuICAgICAgPHA+aXNJblVzZTo8L3A+XG4gICAgICA8cHJlPnt7IHF1ZXJ5LmlzSW5Vc2UgfX08L3ByZT5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXY+XG4gICAgICA8cD5fc3Vic2NyaWJlckNvdW50OjwvcD5cbiAgICAgIDxwcmU+e3sgcXVlcnkuX3N1YnNjcmliZXJDb3VudCB9fTwvcHJlPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdj5cbiAgICAgIDxwPmlzUG9sbGluZzo8L3A+XG4gICAgICA8cHJlPnt7IHF1ZXJ5LmlzUG9sbGluZyB9fTwvcHJlPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdj5cbiAgICAgIDxwPl9hcmd1bWVudHM6PC9wPlxuICAgICAgPHByZT57eyBxdWVyeS5fYXJndW1lbnRzIHwganNvbiB9fTwvcHJlPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdj5cbiAgICAgIDxwPnN0YXRlJDo8L3A+XG4gICAgICA8YnV0dG9uIChjbGljayk9XCJ0b2dnbGVTaG93UmVzcG9uc2UoKVwiPlNob3cvSGlkZTwvYnV0dG9uPlxuICAgICAgPHByZSAqbmdJZj1cInNob3dSZXNwb25zZSgpXCI+e3sgcXVlcnkuc3RhdGUkIHwgYXN5bmMgfCBqc29uIH19PC9wcmU+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2PlxuICAgICAgPHA+cmF3U3RhdGU6PC9wPlxuICAgICAgPGJ1dHRvbiAoY2xpY2spPVwidG9nZ2xlU2hvd1Jhd1Jlc3BvbnNlKClcIj5TaG93L0hpZGU8L2J1dHRvbj5cbiAgICAgIDxwcmUgKm5nSWY9XCJzaG93UmF3UmVzcG9uc2UoKVwiPnt7IHF1ZXJ5LnJhd1N0YXRlIHwganNvbiB9fTwvcHJlPlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuIl19
|
|
129
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktZGV2dG9vbHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9xdWVyeS9zcmMvbGliL2RldnRvb2xzL2NvbXBvbmVudHMvcXVlcnktZGV2dG9vbHMvcXVlcnktZGV2dG9vbHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9xdWVyeS9zcmMvbGliL2RldnRvb2xzL2NvbXBvbmVudHMvcXVlcnktZGV2dG9vbHMvcXVlcnktZGV2dG9vbHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ25FLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUVULGlCQUFpQixFQUNqQixRQUFRLEVBQ1IsTUFBTSxFQUNOLE1BQU0sRUFDTixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlDLE9BQU8sRUFBRSxlQUFlLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVsRixPQUFPLEVBQUUsMkJBQTJCLEVBQThCLE1BQU0sYUFBYSxDQUFDOztBQW1CdEYsTUFBTSxPQUFPLHNCQUFzQjtJQXNEakM7UUFyRG1CLGNBQVMsR0FBRyxhQUFhLEVBQUUsQ0FBQztRQUU1Qix1QkFBa0IsR0FBRyxNQUFNLENBQUMsMkJBQTJCLENBQUMsQ0FBQztRQUV6RCxXQUFNLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZCLGtCQUFhLEdBQUcsTUFBTSxD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bkMsMC9JQXVIQSw0akNEeEZZLElBQUksNkZBQUUsS0FBSyw4R0FBRSxTQUFTLHlDQUFFLFFBQVE7OzJGQUcvQixzQkFBc0I7a0JBZGxDLFNBQVM7K0JBQ0UsbUJBQW1CLGNBR2pCLElBQUksbUJBQ0MsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsU0FBUyxRQUVwQzt3QkFDSixLQUFLLEVBQUUsbUJBQW1CO3FCQUMzQixXQUNRLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsUUFBUSxDQUFDLGtCQUMzQixFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXN5bmNQaXBlLCBKc29uUGlwZSwgTmdGb3IsIE5nSWYgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgVHJhY2tCeUZ1bmN0aW9uLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgY29tcHV0ZWQsXG4gIGVmZmVjdCxcbiAgaW5qZWN0LFxuICBzaWduYWwsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdG9PYnNlcnZhYmxlLCB0b1NpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IGNyZWF0ZURlc3Ryb3kgfSBmcm9tICdAZXRobGV0ZS9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgbWFwLCBzdGFydFdpdGgsIHN3aXRjaE1hcCwgdGFrZVVudGlsLCB0YXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFueVF1ZXJ5IH0gZnJvbSAnLi4vLi4vLi4vcXVlcnknO1xuaW1wb3J0IHsgUVVFUllfQ0xJRU5UX0RFVlRPT0xTX1RPS0VOLCBRdWVyeUNsaWVudERldnRvb2xzT3B0aW9ucyB9IGZyb20gJy4uLy4uL3V0aWxzJztcblxudHlwZSBRdWVyeURldnRvb2xzU25hcExheW91dCA9ICdmdWxsJyB8ICdsZWZ0JyB8ICdyaWdodCcgfCAnYm90dG9tJyB8ICd0b3AnO1xudHlwZSBRdWVyeUxpc3RNb2RlID0gJ2xpdmUnIHwgJ2hpc3RvcnknO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdldC1xdWVyeS1kZXZ0b29scycsXG4gIHRlbXBsYXRlVXJsOiAnLi9xdWVyeS1kZXZ0b29scy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3F1ZXJ5LWRldnRvb2xzLmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5TaGFkb3dEb20sXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taG9zdC1tZXRhZGF0YS1wcm9wZXJ0eVxuICBob3N0OiB7XG4gICAgY2xhc3M6ICdldC1xdWVyeS1kZXZ0b29scycsXG4gIH0sXG4gIGltcG9ydHM6IFtOZ0lmLCBOZ0ZvciwgQXN5bmNQaXBlLCBKc29uUGlwZV0sXG4gIGhvc3REaXJlY3RpdmVzOiBbXSxcbn0pXG5leHBvcnQgY2xhc3MgUXVlcnlEZXZ0b29sc0NvbXBvbmVudCB7XG4gIHByb3RlY3RlZCByZWFkb25seSBfZGVzdHJveSQgPSBjcmVhdGVEZXN0cm95KCk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHF1ZXJ5Q2xpZW50Q29uZmlncyA9IGluamVjdChRVUVSWV9DTElFTlRfREVWVE9PTFNfVE9LRU4pO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBpc09wZW4gPSBzaWduYWwoZmFsc2UpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgaXNUcmFuc2x1Y2VudCA9IHNpZ25hbChmYWxzZSk7XG4gIHByb3RlY3RlZCByZWFkb25seSBzbmFwTGF5b3V0ID0gc2lnbmFsPFF1ZXJ5RGV2dG9vbHNTbmFwTGF5b3V0PignZnVsbCcpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgcXVlcnlMaXN0TW9kZSA9IHNpZ25hbDxRdWVyeUxpc3RNb2RlPignbGl2ZScpO1xuXG4gIHByb3RlY3RlZCBzaG93UmVzcG9uc2UgPSBzaWduYWwoZmFsc2UpO1xuICBwcm90ZWN0ZWQgc2hvd1Jhd1Jlc3BvbnNlID0gc2lnbmFsKGZhbHNlKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc2VsZWN0ZWRDbGllbnRJZCA9IHNpZ25hbCgwKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHNlbGVjdGVkUXVlcnlQYXRoID0gc2lnbmFsPHN0cmluZyB8IG51bGw+KG51bGwpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBzZWxlY3RlZENsaWVudENvbmZpZyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBpZiAodGhpcy5xdWVyeUNsaWVudENvbmZpZ3MubGVuZ3RoID09PSAxKSB7XG4gICAgICByZXR1cm4gdGhpcy5xdWVyeUNsaWVudENvbmZpZ3NbMF07XG4gICAgfVxuXG4gICAgY29uc3QgaW5kZXggPSB0aGlzLnNlbGVjdGVkQ2xpZW50SWQoKTtcblxuICAgIHJldHVybiB0aGlzLnF1ZXJ5Q2xpZW50Q29uZmlnc1tpbmRleF07XG4gIH0pO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBxdWVyeVN0b3JlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuc2VsZWN0ZWRDbGllbnRDb25maWcoKTtcblxuICAgIHJldHVybiBjb25maWcuY2xpZW50Ll9zdG9yZTtcbiAgfSk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHF1ZXJ5U3RvcmUkID0gdG9PYnNlcnZhYmxlKHRoaXMucXVlcnlTdG9yZSk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfcXVlcmllcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEFueVF1ZXJ5W10+KFtdKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHF1ZXJpZXMgPSB0b1NpZ25hbCh0aGlzLl9xdWVyaWVzJCk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHNlbGVjdGVkUXVlcnkgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgcGF0aCA9IHRoaXMuc2VsZWN0ZWRRdWVyeVBhdGgoKTtcbiAgICBjb25zdCBtb2RlID0gdGhpcy5xdWVyeUxpc3RNb2RlKCk7XG5cbiAgICBpZiAoIXBhdGggfHwgIW1vZGUpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmIChtb2RlID09PSAnbGl2ZScpIHtcbiAgICAgIHJldHVybiB0aGlzLnF1ZXJpZXMoKT8uZmluZCgocSkgPT4gcS5fcm91dGVXaXRoUGFyYW1zID09PSBwYXRoKSA/PyBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnF1ZXJ5SGlzdG9yeSgpPy5maW5kKChxKSA9PiBxLl9yb3V0ZVdpdGhQYXJhbXMgPT09IHBhdGgpID8/IG51bGw7XG4gIH0pO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBxdWVyeUhpc3RvcnkgPSBzaWduYWw8QW55UXVlcnlbXT4oW10pO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMucXVlcnlTdG9yZSRcbiAgICAgIC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKHMpID0+XG4gICAgICAgICAgcy5zdG9yZUNoYW5nZSQucGlwZShcbiAgICAgICAgICAgIHN0YXJ0V2l0aCgnJyksXG4gICAgICAgICAgICBtYXAoKCkgPT4gcy5fc3RvcmUpLFxuICAgICAgICAgICAgdGFwKChzKSA9PiB0aGlzLl9xdWVyaWVzJC5uZXh0KEFycmF5LmZyb20ocy52YWx1ZXMoKSkpKSxcbiAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICAgICAgKSxcbiAgICAgICAgKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcblxuICAgIHRoaXMuX3F1ZXJpZXMkXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKChxdWVyaWVzKSA9PiB7XG4gICAgICAgICAgY29uc3QgY3VycmVudEhpc3RvcnkgPSB0aGlzLnF1ZXJ5SGlzdG9yeSgpO1xuXG4gICAgICAgICAgaWYgKCFxdWVyaWVzIHx8ICFjdXJyZW50SGlzdG9yeSkgcmV0dXJuO1xuXG4gICAgICAgICAgY29uc3QgY3VycmVudEhpc3RvcnlDbG9uZSA9IFsuLi5jdXJyZW50SGlzdG9yeV07XG5cbiAgICAgICAgICBmb3IgKGNvbnN0IHF1ZXJ5IG9mIHF1ZXJpZXMpIHtcbiAgICAgICAgICAgIGlmICghY3VycmVudEhpc3RvcnlDbG9uZS5pbmNsdWRlcyhxdWVyeSkpIHtcbiAgICAgICAgICAgICAgY3VycmVudEhpc3RvcnlDbG9uZS5wdXNoKHF1ZXJ5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjdXJyZW50SGlzdG9yeUNsb25lLnNwbGljZSg1MCk7XG5cbiAgICAgICAgICB0aGlzLnF1ZXJ5SGlzdG9yeS5zZXQoY3VycmVudEhpc3RvcnlDbG9uZSk7XG4gICAgICAgIH0pLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuXG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IGRldnRvb2xDb25maWcgPSB7XG4gICAgICAgIGlzT3BlbjogdGhpcy5pc09wZW4oKSxcbiAgICAgICAgaXNUcmFuc2x1Y2VudDogdGhpcy5pc1RyYW5zbHVjZW50KCksXG4gICAgICAgIHNuYXBMYXlvdXQ6IHRoaXMuc25hcExheW91dCgpLFxuICAgICAgICBzaG93UmVzcG9uc2U6IHRoaXMuc2hvd1Jlc3BvbnNlKCksXG4gICAgICAgIHNob3dSYXdSZXNwb25zZTogdGhpcy5zaG93UmF3UmVzcG9uc2UoKSxcbiAgICAgICAgc2VsZWN0ZWRDbGllbnRJZDogdGhpcy5zZWxlY3RlZENsaWVudElkKCksXG4gICAgICAgIHNlbGVjdGVkUXVlcnlQYXRoOiB0aGlzLnNlbGVjdGVkUXVlcnlQYXRoKCksXG4gICAgICAgIHF1ZXJ5TGlzdE1vZGU6IHRoaXMucXVlcnlMaXN0TW9kZSgpLFxuICAgICAgfTtcblxuICAgICAgd2luZG93LmxvY2FsU3RvcmFnZS5zZXRJdGVtKCdldGhsZXRlOnF1ZXJ5OmRldnRvb2xzJywgSlNPTi5zdHJpbmdpZnkoZGV2dG9vbENvbmZpZykpO1xuICAgIH0pO1xuXG4gICAgY29uc3QgaW5pdGlhbENvbmZpZyA9IHdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnZXRobGV0ZTpxdWVyeTpkZXZ0b29scycpO1xuXG4gICAgaWYgKGluaXRpYWxDb25maWcpIHtcbiAgICAgIGNvbnN0IHBhcnNlZCA9IEpTT04ucGFyc2UoaW5pdGlhbENvbmZpZyk7XG5cbiAgICAgIHRoaXMuaXNPcGVuLnNldChwYXJzZWQuaXNPcGVuID8/IGZhbHNlKTtcbiAgICAgIHRoaXMuaXNUcmFuc2x1Y2VudC5zZXQocGFyc2VkLmlzVHJhbnNsdWNlbnQgPz8gZmFsc2UpO1xuICAgICAgdGhpcy5zbmFwTGF5b3V0LnNldChwYXJzZWQuc25hcExheW91dCA/PyAnZnVsbCcpO1xuICAgICAgdGhpcy5zaG93UmVzcG9uc2Uuc2V0KHBhcnNlZC5zaG93UmVzcG9uc2UgPz8gZmFsc2UpO1xuICAgICAgdGhpcy5zaG93UmF3UmVzcG9uc2Uuc2V0KHBhcnNlZC5zaG93UmF3UmVzcG9uc2UgPz8gZmFsc2UpO1xuICAgICAgdGhpcy5zZWxlY3RlZENsaWVudElkLnNldChwYXJzZWQuc2VsZWN0ZWRDbGllbnRJZCA/PyAwKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRRdWVyeVBhdGguc2V0KHBhcnNlZC5zZWxlY3RlZFF1ZXJ5UGF0aCA/PyBudWxsKTtcbiAgICAgIHRoaXMucXVlcnlMaXN0TW9kZS5zZXQocGFyc2VkLnF1ZXJ5TGlzdE1vZGUgPz8gJ2xpdmUnKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgdHJhY2tCeUNsaWVudDogVHJhY2tCeUZ1bmN0aW9uPFF1ZXJ5Q2xpZW50RGV2dG9vbHNPcHRpb25zPiA9IChfLCB7IGNsaWVudCB9KSA9PiBjbGllbnQuY29uZmlnLmJhc2VSb3V0ZTtcbiAgcHJvdGVjdGVkIHRyYWNrQnlRdWVyeTogVHJhY2tCeUZ1bmN0aW9uPEFueVF1ZXJ5PiA9IChfLCB7IF9yb3V0ZVdpdGhQYXJhbXMgfSkgPT4gX3JvdXRlV2l0aFBhcmFtcztcblxuICBwcm90ZWN0ZWQgdG9nZ2xlT3BlbigpIHtcbiAgICB0aGlzLmlzT3Blbi5zZXQoIXRoaXMuaXNPcGVuKCkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHRvZ2dsZVRyYW5zbHVjZW50KCkge1xuICAgIHRoaXMuaXNUcmFuc2x1Y2VudC5zZXQoIXRoaXMuaXNUcmFuc2x1Y2VudCgpKTtcbiAgfVxuXG4gIHByb3RlY3RlZCB0b2dnbGVTaG93UmVzcG9uc2UoKSB7XG4gICAgdGhpcy5zaG93UmVzcG9uc2Uuc2V0KCF0aGlzLnNob3dSZXNwb25zZSgpKTtcbiAgfVxuXG4gIHByb3RlY3RlZCB0b2dnbGVTaG93UmF3UmVzcG9uc2UoKSB7XG4gICAgdGhpcy5zaG93UmF3UmVzcG9uc2Uuc2V0KCF0aGlzLnNob3dSYXdSZXNwb25zZSgpKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzZWxlY3RTbmFwTGF5b3V0KGxheW91dDogUXVlcnlEZXZ0b29sc1NuYXBMYXlvdXQpIHtcbiAgICB0aGlzLnNuYXBMYXlvdXQuc2V0KGxheW91dCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2VsZWN0UXVlcnlMaXN0TW9kZShtb2RlOiBRdWVyeUxpc3RNb2RlKSB7XG4gICAgdGhpcy5xdWVyeUxpc3RNb2RlLnNldChtb2RlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzZWxlY3RDbGllbnQoY2xpZW50SWQ6IG51bWJlcikge1xuICAgIHRoaXMuc2VsZWN0ZWRDbGllbnRJZC5zZXQoY2xpZW50SWQpO1xuICAgIHRoaXMuY2xlYXJRdWVyeUhpc3RvcnkoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzZWxlY3RRdWVyeShxdWVyeTogQW55UXVlcnkpIHtcbiAgICB0aGlzLnNlbGVjdGVkUXVlcnlQYXRoLnNldChxdWVyeS5fcm91dGVXaXRoUGFyYW1zKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjbGVhclF1ZXJ5SGlzdG9yeSgpIHtcbiAgICB0aGlzLnF1ZXJ5SGlzdG9yeS5zZXQoW10pO1xuICB9XG59XG4iLCI8YnV0dG9uICpuZ0lmPVwiIWlzT3BlbigpXCIgKGNsaWNrKT1cInRvZ2dsZU9wZW4oKVwiIGNsYXNzPVwiZXQtcXVlcnktZGV2dG9vbHMtb3Blbi1idG5cIj5PcGVuIERldnRvb2xzPC9idXR0b24+XG5cbjxkaXZcbiAgKm5nSWY9XCJpc09wZW4oKVwiXG4gIFtjbGFzcy5ldC1xdWVyeS1kZXZ0b29scy1jb250YWluZXItLXRyYW5zcGFyZW50XT1cImlzVHJhbnNsdWNlbnQoKVwiXG4gIGNsYXNzPVwiZXQtcXVlcnktZGV2dG9vbHMtY29udGFpbmVyIGV0LXF1ZXJ5LWRldnRvb2xzLWNvbnRhaW5lci0tc25hcC17eyBzbmFwTGF5b3V0KCkgfX1cIlxuPlxuICA8YnV0dG9uIChjbGljayk9XCJ0b2dnbGVPcGVuKClcIiBjbGFzcz1cImV0LXF1ZXJ5LWRldnRvb2xzLWNsb3NlLWJ0blwiPkNsb3NlIERldnRvb2xzPC9idXR0b24+XG4gIDxidXR0b24gKGNsaWNrKT1cInRvZ2dsZVRyYW5zbHVjZW50KClcIiBjbGFzcz1cImV0LXF1ZXJ5LWRldnRvb2xzLXRyYW5zbHVjZW50LWJ0blwiPlRvZ2dsZSBUcmFuc2x1Y2VudDwvYnV0dG9uPlxuICA8YnV0dG9uIChjbGljayk9XCJzZWxlY3RTbmFwTGF5b3V0KCdmdWxsJylcIiBjbGFzcz1cImV0LXF1ZXJ5LWRldnRvb2xzLXNuYXAtYnRuXCI+U25hcCBmdWxsPC9idXR0b24+XG4gIDxidXR0b24gKGNsaWNrKT1cInNlbGVjdFNuYXBMYXlvdXQoJ3RvcCcpXCIgY2xhc3M9XCJldC1xdWVyeS1kZXZ0b29scy1zbmFwLWJ0blwiPlNuYXAgdG9wPC9idXR0b24+XG4gIDxidXR0b24gKGNsaWNrKT1cInNlbGVjdFNuYXBMYXlvdXQoJ2JvdHRvbScpXCIgY2xhc3M9XCJldC1xdWVyeS1kZXZ0b29scy1zbmFwLWJ0blwiPlNuYXAgYm90dG9tPC9idXR0b24+XG4gIDxidXR0b24gKGNsaWNrKT1cInNlbGVjdFNuYXBMYXlvdXQoJ2xlZnQnKVwiIGNsYXNzPVwiZXQtcXVlcnktZGV2dG9vbHMtc25hcC1idG5cIj5TbmFwIGxlZnQ8L2J1dHRvbj5cbiAgPGJ1dHRvbiAoY2xpY2spPVwic2VsZWN0U25hcExheW91dCgncmlnaHQnKVwiIGNsYXNzPVwiZXQtcXVlcnktZGV2dG9vbHMtc25hcC1idG5cIj5TbmFwIHJpZ2h0PC9idXR0b24+XG5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInF1ZXJ5Q2xpZW50Q29uZmlncy5sZW5ndGggPiAxXCI+XG4gICAgPHA+Q2xpZW50IGluc3RhbmNlOjwvcD5cbiAgICA8dWw+XG4gICAgICA8bGkgKm5nRm9yPVwibGV0IGNsaWVudENvbmZpZyBvZiBxdWVyeUNsaWVudENvbmZpZ3M7IGluZGV4IGFzIGk7IHRyYWNrQnk6IHRyYWNrQnlDbGllbnRcIj5cbiAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwic2VsZWN0Q2xpZW50KGkpXCI+XG4gICAgICAgICAge3sgY2xpZW50Q29uZmlnLmRpc3BsYXlOYW1lID8/IGNsaWVudENvbmZpZy5jbGllbnQuY29uZmlnLmJhc2VSb3V0ZSB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvbGk+XG4gICAgPC91bD5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdGVkQ2xpZW50Q29uZmlnKCkgYXMgY2ZnXCI+XG4gICAgPHA+e3sgY2ZnLmRpc3BsYXlOYW1lID8/IGNmZy5jbGllbnQuY29uZmlnLmJhc2VSb3V0ZSB9fTwvcD5cblxuICAgIDxidXR0b24gKGNsaWNrKT1cImNmZy5jbGllbnQuX3N0b3JlLnJlZnJlc2hRdWVyaWVzSW5Vc2UoKVwiPkZvcmNlIFJlZnJlc2ggb2YgaW4gdXNlIHF1ZXJpZXM8L2J1dHRvbj4gPGJyIC8+XG4gICAgPGJ1dHRvbiAoY2xpY2spPVwiY2ZnLmNsaWVudC5fc3RvcmUucmVmcmVzaFF1ZXJpZXNJblVzZSh7IGlnbm9yZUNhY2hlVmFsaWRpdHk6IHRydWUgfSlcIj5IQVJEIEZvcmNlIFJlZnJlc2g8L2J1dHRvbj5cbiAgICA8YnIgLz5cbiAgICA8YnV0dG9uIChjbGljayk9XCJjZmcuY2xpZW50Ll9zdG9yZS5yZWZyZXNoUXVlcmllc0luVXNlKHsgaWdub3JlQ2FjaGVWYWxpZGl0eTogdHJ1ZSwgcHVyZ2VVbnVzZWQ6IHRydWUgfSlcIj5cbiAgICAgIFBVUkdFICYgSEFSRCBGb3JjZSBSZWZyZXNoXG4gICAgPC9idXR0b24+XG5cbiAgICA8YnIgLz5cbiAgICA8YnIgLz5cblxuICAgIDxidXR0b24gKGNsaWNrKT1cInNlbGVjdFF1ZXJ5TGlzdE1vZGUoJ2xpdmUnKVwiPkxpdmU8L2J1dHRvbj5cbiAgICA8YnV0dG9uIChjbGljayk9XCJzZWxlY3RRdWVyeUxpc3RNb2RlKCdoaXN0b3J5JylcIj5IaXN0b3J5IChsYXN0IHt7IHF1ZXJ5SGlzdG9yeSgpLmxlbmd0aCB9fSApPC9idXR0b24+XG4gICAgPGJ1dHRvbiAqbmdJZj1cInF1ZXJ5TGlzdE1vZGUoKSA9PT0gJ2hpc3RvcnknXCIgKGNsaWNrKT1cImNsZWFyUXVlcnlIaXN0b3J5KClcIj5DbGVhcjwvYnV0dG9uPlxuICAgIDx1bCAqbmdJZj1cInF1ZXJ5TGlzdE1vZGUoKSA9PT0gJ2xpdmUnXCI+XG4gICAgICA8bGkgKm5nRm9yPVwibGV0IHF1ZXJ5IG9mIHF1ZXJpZXMoKTsgdHJhY2tCeTogdHJhY2tCeVF1ZXJ5XCI+XG4gICAgICAgIDxidXR0b24gKGNsaWNrKT1cInNlbGVjdFF1ZXJ5KHF1ZXJ5KVwiPlxuICAgICAgICAgIHt7IHF1ZXJ5Ll9yb3V0ZVdpdGhQYXJhbXMgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG5cbiAgICA8dWwgKm5nSWY9XCJxdWVyeUxpc3RNb2RlKCkgPT09ICdoaXN0b3J5J1wiPlxuICAgICAgPGxpICpuZ0Zvcj1cImxldCBxdWVyeSBvZiBxdWVyeUhpc3RvcnkoKTsgdHJhY2tCeTogdHJhY2tCeVF1ZXJ5XCI+XG4gICAgICAgIDxidXR0b24gKGNsaWNrKT1cInNlbGVjdFF1ZXJ5KHF1ZXJ5KVwiPlxuICAgICAgICAgIHt7IHF1ZXJ5Ll9yb3V0ZVdpdGhQYXJhbXMgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3RlZFF1ZXJ5KCkgYXMgcXVlcnlcIj5cbiAgICA8cD57eyBxdWVyeS5fcm91dGVXaXRoUGFyYW1zIH19PC9wPlxuXG4gICAgPGJ1dHRvbiAoY2xpY2spPVwicXVlcnkuZXhlY3V0ZSgpXCI+RXhlY3V0ZTwvYnV0dG9uPiA8YnIgLz5cbiAgICA8YnV0dG9uIChjbGljayk9XCJxdWVyeS5leGVjdXRlKHsgc2tpcENhY2hlOiB0cnVlIH0pXCI+Rk9SQ0UgRXhlY3V0ZTwvYnV0dG9uPiA8YnIgLz5cbiAgICA8YnV0dG9uIChjbGljayk9XCJxdWVyeS5hYm9ydCgpXCI+QWJvcnQ8L2J1dHRvbj4gPGJyIC8+XG4gICAgPGJ1dHRvbiAoY2xpY2spPVwicXVlcnkucG9sbCh7IGludGVydmFsOiA1MDAwLCB0YWtlVW50aWw6IF9kZXN0cm95JCB9KVwiPlBvbGw8L2J1dHRvbj4gPGJyIC8+XG4gICAgPGJ1dHRvbiAoY2xpY2spPVwicXVlcnkuc3RvcFBvbGxpbmcoKVwiPlN0b3AgcG9sbGluZzwvYnV0dG9uPiA8YnIgLz5cbiAgICA8YnV0dG9uIChjbGljayk9XCJxdWVyeS5wYXVzZVBvbGxpbmcoKVwiPlBhdXNlIHBvbGxpbmc8L2J1dHRvbj4gPGJyIC8+XG4gICAgPGJ1dHRvbiAoY2xpY2spPVwicXVlcnkucmVzdW1lUG9sbGluZygpXCI+UmVzdW1lIHBvbGxpbmc8L2J1dHRvbj4gPGJyIC8+XG5cbiAgICA8ZGl2PlxuICAgICAgPHA+c3RhdGUgdHlwZTwvcD5cbiAgICAgIDxwcmU+e3sgcXVlcnkucmF3U3RhdGUudHlwZSB9fTwvcHJlPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdj5cbiAgICAgIDxwPl9lbmFibGVTbWFydFBvbGxpbmc6PC9wPlxuICAgICAgPHByZT57eyBxdWVyeS5fZW5hYmxlU21hcnRQb2xsaW5nIH19PC9wcmU+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2PlxuICAgICAgPHA+aXNFeHBpcmVkOjwvcD5cbiAgICAgIDxwcmU+e3sgcXVlcnkuaXNFeHBpcmVkIH19PC9wcmU+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2PlxuICAgICAgPHA+aXNJblVzZTo8L3A+XG4gICAgICA8cHJlPnt7IHF1ZXJ5LmlzSW5Vc2UgfX08L3ByZT5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXY+XG4gICAgICA8cD5fc3Vic2NyaWJlckNvdW50OjwvcD5cbiAgICAgIDxwcmU+e3sgcXVlcnkuX3N1YnNjcmliZXJDb3VudCB9fTwvcHJlPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdj5cbiAgICAgIDxwPmlzUG9sbGluZzo8L3A+XG4gICAgICA8cHJlPnt7IHF1ZXJ5LmlzUG9sbGluZyB9fTwvcHJlPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdj5cbiAgICAgIDxwPl9hcmd1bWVudHM6PC9wPlxuICAgICAgPHByZT57eyBxdWVyeS5fYXJndW1lbnRzIHwganNvbiB9fTwvcHJlPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdj5cbiAgICAgIDxwPnN0YXRlJDo8L3A+XG4gICAgICA8cD48aT4gV2FybmluZywgdGhpcyB3aWxsIGNhdXNlIGEgc3Vic2NyaXB0aW9uIGlmIHNob3duIDwvaT48L3A+XG4gICAgICA8YnV0dG9uIChjbGljayk9XCJ0b2dnbGVTaG93UmVzcG9uc2UoKVwiPlNob3cvSGlkZTwvYnV0dG9uPlxuICAgICAgPHByZSAqbmdJZj1cInNob3dSZXNwb25zZSgpXCI+e3sgcXVlcnkuc3RhdGUkIHwgYXN5bmMgfCBqc29uIH19PC9wcmU+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2PlxuICAgICAgPHA+cmF3U3RhdGU6PC9wPlxuICAgICAgPGJ1dHRvbiAoY2xpY2spPVwidG9nZ2xlU2hvd1Jhd1Jlc3BvbnNlKClcIj5TaG93L0hpZGU8L2J1dHRvbj5cbiAgICAgIDxwcmUgKm5nSWY9XCJzaG93UmF3UmVzcG9uc2UoKVwiPnt7IHF1ZXJ5LnJhd1N0YXRlIHwganNvbiB9fTwvcHJlPlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuIl19
|
|
@@ -167,15 +167,6 @@ export class Query {
|
|
|
167
167
|
this._isPollingPaused = false;
|
|
168
168
|
return this.poll({ ...this._currentPollConfig, triggerImmediately: true });
|
|
169
169
|
}
|
|
170
|
-
/**
|
|
171
|
-
* @internal
|
|
172
|
-
*/
|
|
173
|
-
_destroy() {
|
|
174
|
-
this._state$.complete();
|
|
175
|
-
this._onAbort$.complete();
|
|
176
|
-
this._pollingSubscription?.unsubscribe();
|
|
177
|
-
this._requestSubscription?.unsubscribe();
|
|
178
|
-
}
|
|
179
170
|
_getBearerAuthProvider() {
|
|
180
171
|
const authProvider = this._client.authProvider;
|
|
181
172
|
if (authProvider && isBearerAuthProvider(authProvider)) {
|
|
@@ -264,4 +255,4 @@ export class Query {
|
|
|
264
255
|
.pipe(map((v) => ({ ...s, response: v })));
|
|
265
256
|
}
|
|
266
257
|
}
|
|
267
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3F1ZXJ5L3NyYy9saWIvcXVlcnkvcXVlcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGVBQWUsRUFDZixNQUFNLEVBQ04sUUFBUSxFQUNSLEdBQUcsRUFFSCxFQUFFLEVBQ0YsV0FBVyxFQUNYLElBQUksRUFDSixPQUFPLEVBRVAsU0FBUyxFQUNULFNBQVMsRUFDVCxTQUFTLEVBQ1QsR0FBRyxHQUNKLE1BQU0sTUFBTSxDQUFDO0FBQ2QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRy9DLE9BQU8sRUFBa0IsT0FBTyxFQUFnQixNQUFNLFlBQVksQ0FBQztBQWFuRSxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLG1CQUFtQixFQUNuQixrQkFBa0IsRUFDbEIsZ0JBQWdCLEVBQ2hCLG1CQUFtQixFQUNuQixvQkFBb0IsRUFDcEIsbUJBQW1CLEVBQ25CLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUV2QixNQUFNLE9BQU8sS0FBSztJQXdCaEIsSUFBWSxPQUFPO1FBQ2pCLE9BQU8sRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQzNCLENBQUM7SUFFRCxJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUN0QixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUNSLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsMEJBQTBCO2dCQUFFLE9BQU87WUFFckUsSUFBSSxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDM0IsT0FBTyxDQUFDLElBQUksQ0FDVixTQUFTLElBQUksQ0FBQyxnQkFBZ0IsOEVBQThFLENBQzdHLENBQUM7YUFDSDtRQUNILENBQUMsQ0FBQyxFQUNGLFNBQVMsQ0FBQyxDQUFDLENBQUMs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O0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBCZWhhdmlvclN1YmplY3QsXG4gIGZpbHRlcixcbiAgaW50ZXJ2YWwsXG4gIG1hcCxcbiAgT2JzZXJ2YWJsZSxcbiAgb2YsXG4gIHNoYXJlUmVwbGF5LFxuICBza2lwLFxuICBTdWJqZWN0LFxuICBTdWJzY3JpcHRpb24sXG4gIHN3aXRjaE1hcCxcbiAgdGFrZVVudGlsLFxuICB0YWtlV2hpbGUsXG4gIHRhcCxcbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBpc0JlYXJlckF1dGhQcm92aWRlciB9IGZyb20gJy4uL2F1dGgnO1xuaW1wb3J0IHsgRW50aXR5U3RvcmUgfSBmcm9tICcuLi9lbnRpdHknO1xuaW1wb3J0IHsgUXVlcnlDbGllbnQgfSBmcm9tICcuLi9xdWVyeS1jbGllbnQnO1xuaW1wb3J0IHsgSHR0cFN0YXR1c0NvZGUsIHJlcXVlc3QsIFJlcXVlc3RFdmVudCB9IGZyb20gJy4uL3JlcXVlc3QnO1xuaW1wb3J0IHtcbiAgQmFzZUFyZ3VtZW50cyxcbiAgRXhlY3V0ZVF1ZXJ5T3B0aW9ucyxcbiAgR3FsUXVlcnlDb25maWcsXG4gIFBvbGxDb25maWcsXG4gIFF1ZXJ5QXV0b1JlZnJlc2hDb25maWcsXG4gIFF1ZXJ5U3RhdGUsXG4gIFF1ZXJ5U3RhdGVNZXRhLFxuICBRdWVyeVN0YXRlVHlwZSxcbiAgUmVzdFF1ZXJ5Q29uZmlnLFxuICBSb3V0ZVR5cGUsXG59IGZyb20gJy4vcXVlcnkudHlwZXMnO1xuaW1wb3J0IHtcbiAgY29tcHV0ZVF1ZXJ5Qm9keSxcbiAgY29tcHV0ZVF1ZXJ5SGVhZGVycyxcbiAgY29tcHV0ZVF1ZXJ5TWV0aG9kLFxuICBpc0dxbFF1ZXJ5Q29uZmlnLFxuICBpc1F1ZXJ5U3RhdGVMb2FkaW5nLFxuICBpc1F1ZXJ5U3RhdGVQcmVwYXJlZCxcbiAgaXNRdWVyeVN0YXRlU3VjY2VzcyxcbiAgdGFrZVVudGlsUmVzcG9uc2UsXG59IGZyb20gJy4vcXVlcnkudXRpbHMnO1xuXG5leHBvcnQgY2xhc3MgUXVlcnk8XG4gIFJlc3BvbnNlLFxuICBBcmd1bWVudHMgZXh0ZW5kcyBCYXNlQXJndW1lbnRzIHwgdW5kZWZpbmVkLFxuICBSb3V0ZSBleHRlbmRzIFJvdXRlVHlwZTxBcmd1bWVudHM+LFxuICBTdG9yZSBleHRlbmRzIEVudGl0eVN0b3JlPHVua25vd24+LFxuICBEYXRhLFxuICBJZCxcbj4ge1xuICBwcml2YXRlIF9jdXJyZW50SWQgPSAwO1xuICBwcml2YXRlIF9wb2xsaW5nU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBfcmVxdWVzdFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgX29uQWJvcnQkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJpdmF0ZSBfY3VycmVudFBvbGxDb25maWc6IFBvbGxDb25maWcgfCBudWxsID0gbnVsbDtcblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBfaXNQb2xsaW5nUGF1c2VkID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfc3RhdGUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxRdWVyeVN0YXRlPFJlc3BvbnNlPj4oe1xuICAgIHR5cGU6IFF1ZXJ5U3RhdGVUeXBlLlByZXBhcmVkLFxuICAgIG1ldGE6IHsgaWQ6IHRoaXMuX2N1cnJlbnRJZCwgdHJpZ2dlcmVkVmlhOiAncHJvZ3JhbScgfSxcbiAgfSk7XG5cbiAgcHJpdmF0ZSBnZXQgX25leHRJZCgpIHtcbiAgICByZXR1cm4gKyt0aGlzLl9jdXJyZW50SWQ7XG4gIH1cblxuICBnZXQgc3RhdGUkKCk6IE9ic2VydmFibGU8UXVlcnlTdGF0ZTxEYXRhPj4ge1xuICAgIHJldHVybiB0aGlzLl9zdGF0ZSQucGlwZShcbiAgICAgIHRhcCgocykgPT4ge1xuICAgICAgICBpZiAoIXRoaXMuX2NsaWVudC5jb25maWcubG9nZ2luZz8ucHJlcGFyZWRRdWVyeVN1YnNjcmlwdGlvbnMpIHJldHVybjtcblxuICAgICAgICBpZiAoaXNRdWVyeVN0YXRlUHJlcGFyZWQocykpIHtcbiAgICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgICBgUXVlcnkgJHt0aGlzLl9yb3V0ZVdpdGhQYXJhbXN9IHdhcyBzdWJzY3JpYmVkIHRvIGluIHRoZSBwcmVwYXJlZCBzdGF0ZS4gRGlkIHlvdSBmb3JnZXQgdG8gY2FsbCAuZXhlY3V0ZSgpP2AsXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgICBzd2l0Y2hNYXAoKHMpID0+IHRoaXMuX3RyYW5zZm9ybVN0YXRlKHMpKSxcbiAgICAgIHNoYXJlUmVwbGF5KHsgYnVmZmVyU2l6ZTogMSwgcmVmQ291bnQ6IHRydWUgfSksXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgcXVlcnkuXG4gICAqXG4gICAqICoqV2FybmluZyEqKiBUaGlzIGRpZmZlcnMgZnJvbSB0aGUgYHN0YXRlJGAgb2JzZXJ2YWJsZSBpbiB0aGF0IGl0IGRvZXMgbm90IHVzZSB0aGUgcXVlcnkgc3RvcmUuIFRodXMsIHRoZSByZXNwb25zZSBkYXRhIG1pZ2h0IGJlIG91dGRhdGVkLlxuICAgKiBVc2UgYHN0YXRlJGAgKG9yIGBmaXJzdFZhbHVlRnJvbShzdGF0ZSQpYCkgdGhlIG1vc3QgdXAtdG8tZGF0ZSBkYXRhLlxuICAgKi9cbiAgZ2V0IHJhd1N0YXRlKCkge1xuICAgIHJldHVybiB0aGlzLl9zdGF0ZSQudmFsdWU7XG4gIH1cblxuICBnZXQgaXNFeHBpcmVkKCkge1xuICAgIGlmICghaXNRdWVyeVN0YXRlU3VjY2Vzcyh0aGlzLl9zdGF0ZSQudmFsdWUpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3QgdHMgPSB0aGlzLl9zdGF0ZSQudmFsdWUubWV0YS5leHBpcmVzQXQ7XG5cbiAgICBpZiAoIXRzKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHMgPCBEYXRlLm5vdygpO1xuICB9XG5cbiAgZ2V0IGlzSW5Vc2UoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXRlJC5vYnNlcnZlZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGdldCBfc3Vic2NyaWJlckNvdW50KCkge1xuICAgIHJldHVybiB0aGlzLl9zdGF0ZSQub2JzZXJ2ZXJzLmxlbmd0aDtcbiAgfVxuXG4gIGdldCBpc1BvbGxpbmcoKSB7XG4gICAgcmV0dXJuICEhdGhpcy5fcG9sbGluZ1N1YnNjcmlwdGlvbjtcbiAgfVxuXG4gIGdldCBhdXRvUmVmcmVzaE9uQ29uZmlnKCkge1xuICAgIGNvbnN0IGJhc2UgPSB0aGlzLl9xdWVyeUNvbmZpZy5hdXRvUmVmcmVzaE9uID8/IHt9O1xuXG4gICAgY29uc3QgdHJhbnNmb3JtZWQ6IFJlYWRvbmx5PFF1ZXJ5QXV0b1JlZnJlc2hDb25maWc+ID0ge1xuICAgICAgcXVlcnlDbGllbnREZWZhdWx0SGVhZGVyc0NoYW5nZTogYmFzZS5xdWVyeUNsaWVudERlZmF1bHRIZWFkZXJzQ2hhbmdlID8/IHRydWUsXG4gICAgICB3aW5kb3dGb2N1czogYmFzZS53aW5kb3dGb2N1cyA/PyB0cnVlLFxuICAgIH07XG5cbiAgICByZXR1cm4gdHJhbnNmb3JtZWQ7XG4gIH1cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBnZXQgX2VuYWJsZVNtYXJ0UG9sbGluZygpIHtcbiAgICByZXR1cm4gdGhpcy5fcXVlcnlDb25maWcuZW5hYmxlU21hcnRQb2xsaW5nID8/IHRydWU7XG4gIH1cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBnZXQgX2FyZ3VtZW50cygpIHtcbiAgICByZXR1cm4gdGhpcy5fYXJncztcbiAgfVxuXG4gIGdldCBzdG9yZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fcXVlcnlDb25maWcuZW50aXR5Py5zdG9yZSA/PyBudWxsO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBfY2xpZW50OiBRdWVyeUNsaWVudCxcbiAgICBwcml2YXRlIF9xdWVyeUNvbmZpZzpcbiAgICAgIHwgUmVzdFF1ZXJ5Q29uZmlnPFJvdXRlLCBSZXNwb25zZSwgQXJndW1lbnRzLCBTdG9yZSwgRGF0YSwgSWQ+XG4gICAgICB8IEdxbFF1ZXJ5Q29uZmlnPFJvdXRlLCBSZXNwb25zZSwgQXJndW1lbnRzLCBTdG9yZSwgRGF0YSwgSWQ+LFxuXG4gICAgLyoqXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIF9yb3V0ZVdpdGhQYXJhbXM6IFJvdXRlLFxuICAgIHByaXZhdGUgX2FyZ3M6IEFyZ3VtZW50cyxcbiAgKSB7fVxuXG4gIGV4ZWN1dGUob3B0aW9uczogRXhlY3V0ZVF1ZXJ5T3B0aW9ucyA9IHt9KSB7XG4gICAgY29uc3QgeyBza2lwQ2FjaGUgPSBmYWxzZSwgX3RyaWdnZXJlZFZpYTogdHJpZ2dlcmVkVmlhID0gJ3Byb2dyYW0nLCBjYW5jZWxQcmV2aW91cyA9IGZhbHNlIH0gPSBvcHRpb25zO1xuICAgIGNvbnN0IHsgYXV0aFByb3ZpZGVyIH0gPSB0aGlzLl9jbGllbnQ7XG4gICAgY29uc3QgcXVlcnlDb25maWcgPSB0aGlzLl9xdWVyeUNvbmZpZztcblxuICAgIGlmICghdGhpcy5pc0V4cGlyZWQgJiYgIXNraXBDYWNoZSAmJiBpc1F1ZXJ5U3RhdGVTdWNjZXNzKHRoaXMucmF3U3RhdGUpKSB7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBpZiAocXVlcnlDb25maWcuc2VjdXJlICYmICFhdXRoUHJvdmlkZXIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IGV4ZWN1dGUgc2VjdXJlIHF1ZXJ5IHdpdGhvdXQgYXV0aCBwcm92aWRlcicpO1xuICAgIH1cblxuICAgIGNvbnN0IGlkID0gdGhpcy5fbmV4dElkO1xuICAgIGNvbnN0IG1ldGE6IFF1ZXJ5U3RhdGVNZXRhID0geyBpZCwgdHJpZ2dlcmVkVmlhIH07XG5cbiAgICBpZiAoaXNRdWVyeVN0YXRlTG9hZGluZyh0aGlzLnJhd1N0YXRlKSkge1xuICAgICAgaWYgKGNhbmNlbFByZXZpb3VzKSB7XG4gICAgICAgIHRoaXMuYWJvcnQoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuX3N0YXRlJC5uZXh0KHsgdHlwZTogUXVlcnlTdGF0ZVR5cGUuTG9hZGluZywgbWV0YSB9KTtcblxuICAgIGNvbnN0IG1ldGhvZCA9IGNvbXB1dGVRdWVyeU1ldGhvZCh7IGNvbmZpZzogcXVlcnlDb25maWcsIGNsaWVudDogdGhpcy5fY2xpZW50IH0pO1xuICAgIGNvbnN0IGJvZHkgPSBjb21wdXRlUXVlcnlCb2R5KHsgY29uZmlnOiBxdWVyeUNvbmZpZywgY2xpZW50OiB0aGlzLl9jbGllbnQsIGFyZ3M6IHRoaXMuX2FyZ3MsIG1ldGhvZCB9KTtcbiAgICBjb25zdCBoZWFkZXJzID0gY29tcHV0ZVF1ZXJ5SGVhZGVycyh7IGNsaWVudDogdGhpcy5fY2xpZW50LCBjb25maWc6IHF1ZXJ5Q29uZmlnLCBhcmdzOiB0aGlzLl9hcmdzIH0pO1xuXG4gICAgdGhpcy5fcmVxdWVzdFN1YnNjcmlwdGlvbiA9IHJlcXVlc3Q8UmVzcG9uc2U+KHtcbiAgICAgIHVybFdpdGhQYXJhbXM6IHRoaXMuX3JvdXRlV2l0aFBhcmFtcyxcbiAgICAgIG1ldGhvZCxcbiAgICAgIGJvZHksXG4gICAgICBoZWFkZXJzLFxuICAgICAgcmVwb3J0UHJvZ3Jlc3M6IHF1ZXJ5Q29uZmlnLnJlcG9ydFByb2dyZXNzLFxuICAgICAgcmVzcG9uc2VUeXBlOiBxdWVyeUNvbmZpZy5yZXNwb25zZVR5cGUsXG4gICAgICB3aXRoQ3JlZGVudGlhbHM6IHF1ZXJ5Q29uZmlnLndpdGhDcmVkZW50aWFscyxcbiAgICAgIGNhY2hlQWRhcHRlcjogdGhpcy5fY2xpZW50LmNvbmZpZy5yZXF1ZXN0Py5jYWNoZUFkYXB0ZXIsXG4gICAgICByZXRyeUZuOiB0aGlzLl9jbGllbnQuY29uZmlnLnJlcXVlc3Q/LnJldHJ5Rm4sXG4gICAgfSlcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fb25BYm9ydCQpLFxuICAgICAgICB0YXAoKHN0YXRlKSA9PiB0aGlzLl91cGRhdGVFbnRpdHlTdGF0ZShzdGF0ZSwgbWV0YSwgb3B0aW9ucykpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBhYm9ydCgpIHtcbiAgICB0aGlzLl9vbkFib3J0JC5uZXh0KCk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHBvbGwoY29uZmlnOiBQb2xsQ29uZmlnKSB7XG4gICAgaWYgKHRoaXMuX3BvbGxpbmdTdWJzY3JpcHRpb24pIHtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHRoaXMuX2N1cnJlbnRQb2xsQ29uZmlnID0gY29uZmlnO1xuXG4gICAgY29uc3QgaW50ZXJ2YWwkID0gaW50ZXJ2YWwoY29uZmlnLmludGVydmFsKTtcbiAgICBjb25zdCBwb2xsJCA9IGludGVydmFsJC5waXBlKFxuICAgICAgc2tpcChjb25maWcudHJpZ2dlckltbWVkaWF0ZWx5ID8gMCA6IDEpLFxuICAgICAgdGFrZVVudGlsKGNvbmZpZy50YWtlVW50aWwpLFxuICAgICAgdGFrZVdoaWxlKCgpID0+ICF0aGlzLl9pc1BvbGxpbmdQYXVzZWQpLFxuICAgICAgZmlsdGVyKCgpID0+ICFpc1F1ZXJ5U3RhdGVMb2FkaW5nKHRoaXMuX3N0YXRlJC52YWx1ZSkpLFxuICAgICk7XG5cbiAgICB0aGlzLl9wb2xsaW5nU3Vic2NyaXB0aW9uID0gcG9sbCQuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6ICgpID0+IHRoaXMuZXhlY3V0ZSh7IHNraXBDYWNoZTogdHJ1ZSwgX3RyaWdnZXJlZFZpYTogJ3BvbGwnIH0pLFxuICAgICAgY29tcGxldGU6ICgpID0+IHRoaXMuc3RvcFBvbGxpbmcoKSxcbiAgICB9KTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgc3RvcFBvbGxpbmcoKSB7XG4gICAgdGhpcy5fcG9sbGluZ1N1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLl9wb2xsaW5nU3Vic2NyaXB0aW9uID0gbnVsbDtcbiAgICB0aGlzLl9jdXJyZW50UG9sbENvbmZpZyA9IG51bGw7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHBhdXNlUG9sbGluZygpIHtcbiAgICB0aGlzLl9wb2xsaW5nU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuX3BvbGxpbmdTdWJzY3JpcHRpb24gPSBudWxsO1xuXG4gICAgdGhpcy5faXNQb2xsaW5nUGF1c2VkID0gdHJ1ZTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcmVzdW1lUG9sbGluZygpIHtcbiAgICBpZiAoIXRoaXMuX2lzUG9sbGluZ1BhdXNlZCB8fCAhdGhpcy5fY3VycmVudFBvbGxDb25maWcpIHtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHRoaXMuX2lzUG9sbGluZ1BhdXNlZCA9IGZhbHNlO1xuXG4gICAgcmV0dXJuIHRoaXMucG9sbCh7IC4uLnRoaXMuX2N1cnJlbnRQb2xsQ29uZmlnLCB0cmlnZ2VySW1tZWRpYXRlbHk6IHRydWUgfSk7XG4gIH1cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBfZGVzdHJveSgpIHtcbiAgICB0aGlzLl9zdGF0ZSQuY29tcGxldGUoKTtcbiAgICB0aGlzLl9vbkFib3J0JC5jb21wbGV0ZSgpO1xuICAgIHRoaXMuX3BvbGxpbmdTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5fcmVxdWVzdFN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHByaXZhdGUgX2dldEJlYXJlckF1dGhQcm92aWRlcigpIHtcbiAgICBjb25zdCBhdXRoUHJvdmlkZXIgPSB0aGlzLl9jbGllbnQuYXV0aFByb3ZpZGVyO1xuXG4gICAgaWYgKGF1dGhQcm92aWRlciAmJiBpc0JlYXJlckF1dGhQcm92aWRlcihhdXRoUHJvdmlkZXIpKSB7XG4gICAgICByZXR1cm4gYXV0aFByb3ZpZGVyO1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBfdXBkYXRlRW50aXR5U3RhdGUoXG4gICAgcmVxdWVzdEV2ZW50OiBSZXF1ZXN0RXZlbnQ8UmVzcG9uc2U+LFxuICAgIG1ldGE6IFF1ZXJ5U3RhdGVNZXRhLFxuICAgIG9wdGlvbnM/OiBFeGVjdXRlUXVlcnlPcHRpb25zLFxuICApIHtcbiAgICBzd2l0Y2ggKHJlcXVlc3RFdmVudC50eXBlKSB7XG4gICAgICBjYXNlICdzdGFydCc6XG4gICAgICBjYXNlICdkZWxheS1yZXRyeSc6IHtcbiAgICAgICAgY29uc3QgeyB0eXBlLCByZXRyeURlbGF5LCByZXRyeU51bWJlciB9ID0gcmVxdWVzdEV2ZW50O1xuICAgICAgICBjb25zdCBuZXdNZXRhOiBRdWVyeVN0YXRlTWV0YSA9IHsgLi4ubWV0YSwgaXNXYWl0aW5nRm9yUmV0cnk6IHR5cGUgPT09ICdkZWxheS1yZXRyeScsIHJldHJ5RGVsYXksIHJldHJ5TnVtYmVyIH07XG5cbiAgICAgICAgdGhpcy5fc3RhdGUkLm5leHQoe1xuICAgICAgICAgIHR5cGU6IFF1ZXJ5U3RhdGVUeXBlLkxvYWRpbmcsXG4gICAgICAgICAgbWV0YTogbmV3TWV0YSxcbiAgICAgICAgfSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBjYXNlICd1cGxvYWQtcHJvZ3Jlc3MnOlxuICAgICAgY2FzZSAnZG93bmxvYWQtcHJvZ3Jlc3MnOiB7XG4gICAgICAgIHRoaXMuX3N0YXRlJC5uZXh0KHtcbiAgICAgICAgICB0eXBlOiBRdWVyeVN0YXRlVHlwZS5Mb2FkaW5nLFxuICAgICAgICAgIHByb2dyZXNzOiByZXF1ZXN0RXZlbnQucHJvZ3Jlc3MsXG4gICAgICAgICAgcGFydGlhbFRleHQ6ICdwYXJ0aWFsVGV4dCcgaW4gcmVxdWVzdEV2ZW50ID8gcmVxdWVzdEV2ZW50LnBhcnRpYWxUZXh0IDogdW5kZWZpbmVkLFxuICAgICAgICAgIG1ldGEsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBjYXNlICdzdWNjZXNzJzoge1xuICAgICAgICBjb25zdCB7IHJlc3BvbnNlLCBleHBpcmVzSW5UaW1lc3RhbXAgfSA9IHJlcXVlc3RFdmVudDtcbiAgICAgICAgY29uc3QgaXNHcWwgPSBpc0dxbFF1ZXJ5Q29uZmlnKHRoaXMuX3F1ZXJ5Q29uZmlnKTtcbiAgICAgICAgY29uc3QgcmVzcG9uc2VEYXRhID1cbiAgICAgICAgICBpc0dxbCAmJiB0eXBlb2YgcmVzcG9uc2UgPT09ICdvYmplY3QnICYmICEhcmVzcG9uc2UgJiYgJ2RhdGEnIGluIHJlc3BvbnNlXG4gICAgICAgICAgICA/IChyZXNwb25zZVsnZGF0YSddIGFzIFJlc3BvbnNlKVxuICAgICAgICAgICAgOiAocmVzcG9uc2UgYXMgUmVzcG9uc2UpO1xuXG4gICAgICAgIGlmICh0aGlzLl9xdWVyeUNvbmZpZy5lbnRpdHkgJiYgdGhpcy5fcXVlcnlDb25maWcuZW50aXR5LnNldCkge1xuICAgICAgICAgIGNvbnN0IGlkID0gdGhpcy5fcXVlcnlDb25maWcuZW50aXR5Py5pZCh7IGFyZ3M6IHRoaXMuX2FyZ3MsIHJlc3BvbnNlOiByZXNwb25zZURhdGEgfSk7XG5cbiAgICAgICAgICB0aGlzLl9xdWVyeUNvbmZpZy5lbnRpdHk/LnNldCh7XG4gICAgICAgICAgICBhcmdzOiB0aGlzLl9hcmdzLFxuICAgICAgICAgICAgcmVzcG9uc2U6IHJlc3BvbnNlRGF0YSxcbiAgICAgICAgICAgIGlkLFxuICAgICAgICAgICAgc3RvcmU6IHRoaXMuX3F1ZXJ5Q29uZmlnLmVudGl0eS5zdG9yZSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3N0YXRlJC5uZXh0KHtcbiAgICAgICAgICB0eXBlOiBRdWVyeVN0YXRlVHlwZS5TdWNjZXNzLFxuICAgICAgICAgIHJlc3BvbnNlOiByZXNwb25zZURhdGEsXG4gICAgICAgICAgbWV0YTogeyAuLi5tZXRhLCBleHBpcmVzQXQ6IGV4cGlyZXNJblRpbWVzdGFtcCB9LFxuICAgICAgICB9KTtcblxuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgY2FzZSAnZmFpbHVyZSc6IHtcbiAgICAgICAgY29uc3QgeyBlcnJvciB9ID0gcmVxdWVzdEV2ZW50O1xuICAgICAgICBjb25zdCBmYWlsdXJlID0gKCkgPT4gdGhpcy5fc3RhdGUkLm5leHQoeyB0eXBlOiBRdWVyeVN0YXRlVHlwZS5GYWlsdXJlLCBlcnJvciwgbWV0YSB9KTtcbiAgICAgICAgY29uc3QgYmVhcmVyQXV0aFByb3ZpZGVyID0gdGhpcy5fZ2V0QmVhcmVyQXV0aFByb3ZpZGVyKCk7XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICFiZWFyZXJBdXRoUHJvdmlkZXIgfHxcbiAgICAgICAgICBvcHRpb25zPy5faXNVbmF1dGhvcml6ZWRSZXRyeSB8fFxuICAgICAgICAgIGVycm9yLnN0YXR1cyAhPT0gSHR0cFN0YXR1c0NvZGUuVW5hdXRob3JpemVkIHx8XG4gICAgICAgICAgIWJlYXJlckF1dGhQcm92aWRlci5zaG91bGRSZWZyZXNoT25VbmF1dGhvcml6ZWRSZXNwb25zZVxuICAgICAgICApIHtcbiAgICAgICAgICByZXR1cm4gZmFpbHVyZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcXVlcnkgPSBiZWFyZXJBdXRoUHJvdmlkZXIuX3JlZnJlc2hRdWVyeSgpO1xuICAgICAgICBpZiAoIXF1ZXJ5KSByZXR1cm4gZmFpbHVyZSgpO1xuXG4gICAgICAgIHF1ZXJ5LnN0YXRlJFxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgdGFrZVVudGlsUmVzcG9uc2UoKSxcbiAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9vbkFib3J0JCksXG4gICAgICAgICAgICB0YXAoKHN0YXRlKSA9PlxuICAgICAgICAgICAgICBpc1F1ZXJ5U3RhdGVTdWNjZXNzKHN0YXRlKSA/IHRoaXMuZXhlY3V0ZSh7IC4uLm9wdGlvbnMsIF9pc1VuYXV0aG9yaXplZFJldHJ5OiB0cnVlIH0pIDogZmFpbHVyZSgpLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICApXG4gICAgICAgICAgLnN1YnNjcmliZSgpO1xuXG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBjYXNlICdjYW5jZWwnOiB7XG4gICAgICAgIHRoaXMuX3N0YXRlJC5uZXh0KHtcbiAgICAgICAgICB0eXBlOiBRdWVyeVN0YXRlVHlwZS5DYW5jZWxsZWQsXG4gICAgICAgICAgbWV0YSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfdHJhbnNmb3JtU3RhdGUoczogUXVlcnlTdGF0ZTxSZXNwb25zZT4pOiBPYnNlcnZhYmxlPFF1ZXJ5U3RhdGU8RGF0YT4+IHtcbiAgICBpZiAoIWlzUXVlcnlTdGF0ZVN1Y2Nlc3MocykgfHwgIXRoaXMuX3F1ZXJ5Q29uZmlnLmVudGl0eT8uZ2V0KSB7XG4gICAgICByZXR1cm4gb2YocykgYXMgT2JzZXJ2YWJsZTxRdWVyeVN0YXRlPERhdGE+PjtcbiAgICB9XG5cbiAgICBjb25zdCBpZCA9IHRoaXMuX3F1ZXJ5Q29uZmlnLmVudGl0eS5pZCh7IGFyZ3M6IHRoaXMuX2FyZ3MsIHJlc3BvbnNlOiBzLnJlc3BvbnNlIH0pO1xuXG4gICAgcmV0dXJuIHRoaXMuX3F1ZXJ5Q29uZmlnLmVudGl0eVxuICAgICAgLmdldCh7IGFyZ3M6IHRoaXMuX2FyZ3MsIGlkLCByZXNwb25zZTogcy5yZXNwb25zZSwgc3RvcmU6IHRoaXMuX3F1ZXJ5Q29uZmlnLmVudGl0eS5zdG9yZSB9KVxuICAgICAgLnBpcGUobWFwKCh2KSA9PiAoeyAuLi5zLCByZXNwb25zZTogdiB9KSkpO1xuICB9XG59XG4iXX0=
|
|
258
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3F1ZXJ5L3NyYy9saWIvcXVlcnkvcXVlcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGVBQWUsRUFDZixNQUFNLEVBQ04sUUFBUSxFQUNSLEdBQUcsRUFFSCxFQUFFLEVBQ0YsV0FBVyxFQUNYLElBQUksRUFDSixPQUFPLEVBRVAsU0FBUyxFQUNULFNBQVMsRUFDVCxTQUFTLEVBQ1QsR0FBRyxHQUNKLE1BQU0sTUFBTSxDQUFDO0FBQ2QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRy9DLE9BQU8sRUFBa0IsT0FBTyxFQUFnQixNQUFNLFlBQVksQ0FBQztBQWFuRSxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLG1CQUFtQixFQUNuQixrQkFBa0IsRUFDbEIsZ0JBQWdCLEVBQ2hCLG1CQUFtQixFQUNuQixvQkFBb0IsRUFDcEIsbUJBQW1CLEVBQ25CLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUV2QixNQUFNLE9BQU8sS0FBSztJQXdCaEIsSUFBWSxPQUFPO1FBQ2pCLE9BQU8sRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQzNCLENBQUM7SUFFRCxJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUN0QixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUNSLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsMEJBQTBCO2dCQUFFLE9BQU87WUFFckUsSUFBSSxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDM0IsT0FBTyxDQUFDLElBQUksQ0FDVixTQUFTLElBQUksQ0FBQyxnQkFBZ0IsOEVBQThFLENBQzdHLENBQUM7YUFDSDtRQUNILENBQUMsQ0FBQyxFQUNGLFNBQVMsQ0FBQyxDQUFDLENBQUMs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QUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO29CQUNoQixJQUFJLDRDQUEwQjtvQkFDOUIsSUFBSTtpQkFDTCxDQUFDLENBQUM7Z0JBRUgsTUFBTTthQUNQO1NBQ0Y7SUFDSCxDQUFDO0lBRU8sZUFBZSxDQUFDLENBQXVCO1FBQzdDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRTtZQUM3RCxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQWlDLENBQUM7U0FDOUM7UUFFRCxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFFbkYsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU07YUFDNUIsR0FBRyxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQzthQUMxRixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQy9DLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEJlaGF2aW9yU3ViamVjdCxcbiAgZmlsdGVyLFxuICBpbnRlcnZhbCxcbiAgbWFwLFxuICBPYnNlcnZhYmxlLFxuICBvZixcbiAgc2hhcmVSZXBsYXksXG4gIHNraXAsXG4gIFN1YmplY3QsXG4gIFN1YnNjcmlwdGlvbixcbiAgc3dpdGNoTWFwLFxuICB0YWtlVW50aWwsXG4gIHRha2VXaGlsZSxcbiAgdGFwLFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGlzQmVhcmVyQXV0aFByb3ZpZGVyIH0gZnJvbSAnLi4vYXV0aCc7XG5pbXBvcnQgeyBFbnRpdHlTdG9yZSB9IGZyb20gJy4uL2VudGl0eSc7XG5pbXBvcnQgeyBRdWVyeUNsaWVudCB9IGZyb20gJy4uL3F1ZXJ5LWNsaWVudCc7XG5pbXBvcnQgeyBIdHRwU3RhdHVzQ29kZSwgcmVxdWVzdCwgUmVxdWVzdEV2ZW50IH0gZnJvbSAnLi4vcmVxdWVzdCc7XG5pbXBvcnQge1xuICBCYXNlQXJndW1lbnRzLFxuICBFeGVjdXRlUXVlcnlPcHRpb25zLFxuICBHcWxRdWVyeUNvbmZpZyxcbiAgUG9sbENvbmZpZyxcbiAgUXVlcnlBdXRvUmVmcmVzaENvbmZpZyxcbiAgUXVlcnlTdGF0ZSxcbiAgUXVlcnlTdGF0ZU1ldGEsXG4gIFF1ZXJ5U3RhdGVUeXBlLFxuICBSZXN0UXVlcnlDb25maWcsXG4gIFJvdXRlVHlwZSxcbn0gZnJvbSAnLi9xdWVyeS50eXBlcyc7XG5pbXBvcnQge1xuICBjb21wdXRlUXVlcnlCb2R5LFxuICBjb21wdXRlUXVlcnlIZWFkZXJzLFxuICBjb21wdXRlUXVlcnlNZXRob2QsXG4gIGlzR3FsUXVlcnlDb25maWcsXG4gIGlzUXVlcnlTdGF0ZUxvYWRpbmcsXG4gIGlzUXVlcnlTdGF0ZVByZXBhcmVkLFxuICBpc1F1ZXJ5U3RhdGVTdWNjZXNzLFxuICB0YWtlVW50aWxSZXNwb25zZSxcbn0gZnJvbSAnLi9xdWVyeS51dGlscyc7XG5cbmV4cG9ydCBjbGFzcyBRdWVyeTxcbiAgUmVzcG9uc2UsXG4gIEFyZ3VtZW50cyBleHRlbmRzIEJhc2VBcmd1bWVudHMgfCB1bmRlZmluZWQsXG4gIFJvdXRlIGV4dGVuZHMgUm91dGVUeXBlPEFyZ3VtZW50cz4sXG4gIFN0b3JlIGV4dGVuZHMgRW50aXR5U3RvcmU8dW5rbm93bj4sXG4gIERhdGEsXG4gIElkLFxuPiB7XG4gIHByaXZhdGUgX2N1cnJlbnRJZCA9IDA7XG4gIHByaXZhdGUgX3BvbGxpbmdTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIF9yZXF1ZXN0U3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBfb25BYm9ydCQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBwcml2YXRlIF9jdXJyZW50UG9sbENvbmZpZzogUG9sbENvbmZpZyB8IG51bGwgPSBudWxsO1xuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIF9pc1BvbGxpbmdQYXVzZWQgPSBmYWxzZTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9zdGF0ZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFF1ZXJ5U3RhdGU8UmVzcG9uc2U+Pih7XG4gICAgdHlwZTogUXVlcnlTdGF0ZVR5cGUuUHJlcGFyZWQsXG4gICAgbWV0YTogeyBpZDogdGhpcy5fY3VycmVudElkLCB0cmlnZ2VyZWRWaWE6ICdwcm9ncmFtJyB9LFxuICB9KTtcblxuICBwcml2YXRlIGdldCBfbmV4dElkKCkge1xuICAgIHJldHVybiArK3RoaXMuX2N1cnJlbnRJZDtcbiAgfVxuXG4gIGdldCBzdGF0ZSQoKTogT2JzZXJ2YWJsZTxRdWVyeVN0YXRlPERhdGE+PiB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXRlJC5waXBlKFxuICAgICAgdGFwKChzKSA9PiB7XG4gICAgICAgIGlmICghdGhpcy5fY2xpZW50LmNvbmZpZy5sb2dnaW5nPy5wcmVwYXJlZFF1ZXJ5U3Vic2NyaXB0aW9ucykgcmV0dXJuO1xuXG4gICAgICAgIGlmIChpc1F1ZXJ5U3RhdGVQcmVwYXJlZChzKSkge1xuICAgICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgIGBRdWVyeSAke3RoaXMuX3JvdXRlV2l0aFBhcmFtc30gd2FzIHN1YnNjcmliZWQgdG8gaW4gdGhlIHByZXBhcmVkIHN0YXRlLiBEaWQgeW91IGZvcmdldCB0byBjYWxsIC5leGVjdXRlKCk/YCxcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9KSxcbiAgICAgIHN3aXRjaE1hcCgocykgPT4gdGhpcy5fdHJhbnNmb3JtU3RhdGUocykpLFxuICAgICAgc2hhcmVSZXBsYXkoeyBidWZmZXJTaXplOiAxLCByZWZDb3VudDogdHJ1ZSB9KSxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBjdXJyZW50IHN0YXRlIG9mIHRoZSBxdWVyeS5cbiAgICpcbiAgICogKipXYXJuaW5nISoqIFRoaXMgZGlmZmVycyBmcm9tIHRoZSBgc3RhdGUkYCBvYnNlcnZhYmxlIGluIHRoYXQgaXQgZG9lcyBub3QgdXNlIHRoZSBxdWVyeSBzdG9yZS4gVGh1cywgdGhlIHJlc3BvbnNlIGRhdGEgbWlnaHQgYmUgb3V0ZGF0ZWQuXG4gICAqIFVzZSBgc3RhdGUkYCAob3IgYGZpcnN0VmFsdWVGcm9tKHN0YXRlJClgKSB0aGUgbW9zdCB1cC10by1kYXRlIGRhdGEuXG4gICAqL1xuICBnZXQgcmF3U3RhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXRlJC52YWx1ZTtcbiAgfVxuXG4gIGdldCBpc0V4cGlyZWQoKSB7XG4gICAgaWYgKCFpc1F1ZXJ5U3RhdGVTdWNjZXNzKHRoaXMuX3N0YXRlJC52YWx1ZSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCB0cyA9IHRoaXMuX3N0YXRlJC52YWx1ZS5tZXRhLmV4cGlyZXNBdDtcblxuICAgIGlmICghdHMpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiB0cyA8IERhdGUubm93KCk7XG4gIH1cblxuICBnZXQgaXNJblVzZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fc3RhdGUkLm9ic2VydmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgZ2V0IF9zdWJzY3JpYmVyQ291bnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXRlJC5vYnNlcnZlcnMubGVuZ3RoO1xuICB9XG5cbiAgZ2V0IGlzUG9sbGluZygpIHtcbiAgICByZXR1cm4gISF0aGlzLl9wb2xsaW5nU3Vic2NyaXB0aW9uO1xuICB9XG5cbiAgZ2V0IGF1dG9SZWZyZXNoT25Db25maWcoKSB7XG4gICAgY29uc3QgYmFzZSA9IHRoaXMuX3F1ZXJ5Q29uZmlnLmF1dG9SZWZyZXNoT24gPz8ge307XG5cbiAgICBjb25zdCB0cmFuc2Zvcm1lZDogUmVhZG9ubHk8UXVlcnlBdXRvUmVmcmVzaENvbmZpZz4gPSB7XG4gICAgICBxdWVyeUNsaWVudERlZmF1bHRIZWFkZXJzQ2hhbmdlOiBiYXNlLnF1ZXJ5Q2xpZW50RGVmYXVsdEhlYWRlcnNDaGFuZ2UgPz8gdHJ1ZSxcbiAgICAgIHdpbmRvd0ZvY3VzOiBiYXNlLndpbmRvd0ZvY3VzID8/IHRydWUsXG4gICAgfTtcblxuICAgIHJldHVybiB0cmFuc2Zvcm1lZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGdldCBfZW5hYmxlU21hcnRQb2xsaW5nKCkge1xuICAgIHJldHVybiB0aGlzLl9xdWVyeUNvbmZpZy5lbmFibGVTbWFydFBvbGxpbmcgPz8gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGdldCBfYXJndW1lbnRzKCkge1xuICAgIHJldHVybiB0aGlzLl9hcmdzO1xuICB9XG5cbiAgZ2V0IHN0b3JlKCkge1xuICAgIHJldHVybiB0aGlzLl9xdWVyeUNvbmZpZy5lbnRpdHk/LnN0b3JlID8/IG51bGw7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9jbGllbnQ6IFF1ZXJ5Q2xpZW50LFxuICAgIHByaXZhdGUgX3F1ZXJ5Q29uZmlnOlxuICAgICAgfCBSZXN0UXVlcnlDb25maWc8Um91dGUsIFJlc3BvbnNlLCBBcmd1bWVudHMsIFN0b3JlLCBEYXRhLCBJZD5cbiAgICAgIHwgR3FsUXVlcnlDb25maWc8Um91dGUsIFJlc3BvbnNlLCBBcmd1bWVudHMsIFN0b3JlLCBEYXRhLCBJZD4sXG5cbiAgICAvKipcbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgX3JvdXRlV2l0aFBhcmFtczogUm91dGUsXG4gICAgcHJpdmF0ZSBfYXJnczogQXJndW1lbnRzLFxuICApIHt9XG5cbiAgZXhlY3V0ZShvcHRpb25zOiBFeGVjdXRlUXVlcnlPcHRpb25zID0ge30pIHtcbiAgICBjb25zdCB7IHNraXBDYWNoZSA9IGZhbHNlLCBfdHJpZ2dlcmVkVmlhOiB0cmlnZ2VyZWRWaWEgPSAncHJvZ3JhbScsIGNhbmNlbFByZXZpb3VzID0gZmFsc2UgfSA9IG9wdGlvbnM7XG4gICAgY29uc3QgeyBhdXRoUHJvdmlkZXIgfSA9IHRoaXMuX2NsaWVudDtcbiAgICBjb25zdCBxdWVyeUNvbmZpZyA9IHRoaXMuX3F1ZXJ5Q29uZmlnO1xuXG4gICAgaWYgKCF0aGlzLmlzRXhwaXJlZCAmJiAhc2tpcENhY2hlICYmIGlzUXVlcnlTdGF0ZVN1Y2Nlc3ModGhpcy5yYXdTdGF0ZSkpIHtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGlmIChxdWVyeUNvbmZpZy5zZWN1cmUgJiYgIWF1dGhQcm92aWRlcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgZXhlY3V0ZSBzZWN1cmUgcXVlcnkgd2l0aG91dCBhdXRoIHByb3ZpZGVyJyk7XG4gICAgfVxuXG4gICAgY29uc3QgaWQgPSB0aGlzLl9uZXh0SWQ7XG4gICAgY29uc3QgbWV0YTogUXVlcnlTdGF0ZU1ldGEgPSB7IGlkLCB0cmlnZ2VyZWRWaWEgfTtcblxuICAgIGlmIChpc1F1ZXJ5U3RhdGVMb2FkaW5nKHRoaXMucmF3U3RhdGUpKSB7XG4gICAgICBpZiAoY2FuY2VsUHJldmlvdXMpIHtcbiAgICAgICAgdGhpcy5hYm9ydCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5fc3RhdGUkLm5leHQoeyB0eXBlOiBRdWVyeVN0YXRlVHlwZS5Mb2FkaW5nLCBtZXRhIH0pO1xuXG4gICAgY29uc3QgbWV0aG9kID0gY29tcHV0ZVF1ZXJ5TWV0aG9kKHsgY29uZmlnOiBxdWVyeUNvbmZpZywgY2xpZW50OiB0aGlzLl9jbGllbnQgfSk7XG4gICAgY29uc3QgYm9keSA9IGNvbXB1dGVRdWVyeUJvZHkoeyBjb25maWc6IHF1ZXJ5Q29uZmlnLCBjbGllbnQ6IHRoaXMuX2NsaWVudCwgYXJnczogdGhpcy5fYXJncywgbWV0aG9kIH0pO1xuICAgIGNvbnN0IGhlYWRlcnMgPSBjb21wdXRlUXVlcnlIZWFkZXJzKHsgY2xpZW50OiB0aGlzLl9jbGllbnQsIGNvbmZpZzogcXVlcnlDb25maWcsIGFyZ3M6IHRoaXMuX2FyZ3MgfSk7XG5cbiAgICB0aGlzLl9yZXF1ZXN0U3Vic2NyaXB0aW9uID0gcmVxdWVzdDxSZXNwb25zZT4oe1xuICAgICAgdXJsV2l0aFBhcmFtczogdGhpcy5fcm91dGVXaXRoUGFyYW1zLFxuICAgICAgbWV0aG9kLFxuICAgICAgYm9keSxcbiAgICAgIGhlYWRlcnMsXG4gICAgICByZXBvcnRQcm9ncmVzczogcXVlcnlDb25maWcucmVwb3J0UHJvZ3Jlc3MsXG4gICAgICByZXNwb25zZVR5cGU6IHF1ZXJ5Q29uZmlnLnJlc3BvbnNlVHlwZSxcbiAgICAgIHdpdGhDcmVkZW50aWFsczogcXVlcnlDb25maWcud2l0aENyZWRlbnRpYWxzLFxuICAgICAgY2FjaGVBZGFwdGVyOiB0aGlzLl9jbGllbnQuY29uZmlnLnJlcXVlc3Q/LmNhY2hlQWRhcHRlcixcbiAgICAgIHJldHJ5Rm46IHRoaXMuX2NsaWVudC5jb25maWcucmVxdWVzdD8ucmV0cnlGbixcbiAgICB9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9vbkFib3J0JCksXG4gICAgICAgIHRhcCgoc3RhdGUpID0+IHRoaXMuX3VwZGF0ZUVudGl0eVN0YXRlKHN0YXRlLCBtZXRhLCBvcHRpb25zKSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGFib3J0KCkge1xuICAgIHRoaXMuX29uQWJvcnQkLm5leHQoKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcG9sbChjb25maWc6IFBvbGxDb25maWcpIHtcbiAgICBpZiAodGhpcy5fcG9sbGluZ1N1YnNjcmlwdGlvbikge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgdGhpcy5fY3VycmVudFBvbGxDb25maWcgPSBjb25maWc7XG5cbiAgICBjb25zdCBpbnRlcnZhbCQgPSBpbnRlcnZhbChjb25maWcuaW50ZXJ2YWwpO1xuICAgIGNvbnN0IHBvbGwkID0gaW50ZXJ2YWwkLnBpcGUoXG4gICAgICBza2lwKGNvbmZpZy50cmlnZ2VySW1tZWRpYXRlbHkgPyAwIDogMSksXG4gICAgICB0YWtlVW50aWwoY29uZmlnLnRha2VVbnRpbCksXG4gICAgICB0YWtlV2hpbGUoKCkgPT4gIXRoaXMuX2lzUG9sbGluZ1BhdXNlZCksXG4gICAgICBmaWx0ZXIoKCkgPT4gIWlzUXVlcnlTdGF0ZUxvYWRpbmcodGhpcy5fc3RhdGUkLnZhbHVlKSksXG4gICAgKTtcblxuICAgIHRoaXMuX3BvbGxpbmdTdWJzY3JpcHRpb24gPSBwb2xsJC5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKCkgPT4gdGhpcy5leGVjdXRlKHsgc2tpcENhY2hlOiB0cnVlLCBfdHJpZ2dlcmVkVmlhOiAncG9sbCcgfSksXG4gICAgICBjb21wbGV0ZTogKCkgPT4gdGhpcy5zdG9wUG9sbGluZygpLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBzdG9wUG9sbGluZygpIHtcbiAgICB0aGlzLl9wb2xsaW5nU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuX3BvbGxpbmdTdWJzY3JpcHRpb24gPSBudWxsO1xuICAgIHRoaXMuX2N1cnJlbnRQb2xsQ29uZmlnID0gbnVsbDtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcGF1c2VQb2xsaW5nKCkge1xuICAgIHRoaXMuX3BvbGxpbmdTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5fcG9sbGluZ1N1YnNjcmlwdGlvbiA9IG51bGw7XG5cbiAgICB0aGlzLl9pc1BvbGxpbmdQYXVzZWQgPSB0cnVlO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICByZXN1bWVQb2xsaW5nKCkge1xuICAgIGlmICghdGhpcy5faXNQb2xsaW5nUGF1c2VkIHx8ICF0aGlzLl9jdXJyZW50UG9sbENvbmZpZykge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgdGhpcy5faXNQb2xsaW5nUGF1c2VkID0gZmFsc2U7XG5cbiAgICByZXR1cm4gdGhpcy5wb2xsKHsgLi4udGhpcy5fY3VycmVudFBvbGxDb25maWcsIHRyaWdnZXJJbW1lZGlhdGVseTogdHJ1ZSB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX2dldEJlYXJlckF1dGhQcm92aWRlcigpIHtcbiAgICBjb25zdCBhdXRoUHJvdmlkZXIgPSB0aGlzLl9jbGllbnQuYXV0aFByb3ZpZGVyO1xuXG4gICAgaWYgKGF1dGhQcm92aWRlciAmJiBpc0JlYXJlckF1dGhQcm92aWRlcihhdXRoUHJvdmlkZXIpKSB7XG4gICAgICByZXR1cm4gYXV0aFByb3ZpZGVyO1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBfdXBkYXRlRW50aXR5U3RhdGUoXG4gICAgcmVxdWVzdEV2ZW50OiBSZXF1ZXN0RXZlbnQ8UmVzcG9uc2U+LFxuICAgIG1ldGE6IFF1ZXJ5U3RhdGVNZXRhLFxuICAgIG9wdGlvbnM/OiBFeGVjdXRlUXVlcnlPcHRpb25zLFxuICApIHtcbiAgICBzd2l0Y2ggKHJlcXVlc3RFdmVudC50eXBlKSB7XG4gICAgICBjYXNlICdzdGFydCc6XG4gICAgICBjYXNlICdkZWxheS1yZXRyeSc6IHtcbiAgICAgICAgY29uc3QgeyB0eXBlLCByZXRyeURlbGF5LCByZXRyeU51bWJlciB9ID0gcmVxdWVzdEV2ZW50O1xuICAgICAgICBjb25zdCBuZXdNZXRhOiBRdWVyeVN0YXRlTWV0YSA9IHsgLi4ubWV0YSwgaXNXYWl0aW5nRm9yUmV0cnk6IHR5cGUgPT09ICdkZWxheS1yZXRyeScsIHJldHJ5RGVsYXksIHJldHJ5TnVtYmVyIH07XG5cbiAgICAgICAgdGhpcy5fc3RhdGUkLm5leHQoe1xuICAgICAgICAgIHR5cGU6IFF1ZXJ5U3RhdGVUeXBlLkxvYWRpbmcsXG4gICAgICAgICAgbWV0YTogbmV3TWV0YSxcbiAgICAgICAgfSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBjYXNlICd1cGxvYWQtcHJvZ3Jlc3MnOlxuICAgICAgY2FzZSAnZG93bmxvYWQtcHJvZ3Jlc3MnOiB7XG4gICAgICAgIHRoaXMuX3N0YXRlJC5uZXh0KHtcbiAgICAgICAgICB0eXBlOiBRdWVyeVN0YXRlVHlwZS5Mb2FkaW5nLFxuICAgICAgICAgIHByb2dyZXNzOiByZXF1ZXN0RXZlbnQucHJvZ3Jlc3MsXG4gICAgICAgICAgcGFydGlhbFRleHQ6ICdwYXJ0aWFsVGV4dCcgaW4gcmVxdWVzdEV2ZW50ID8gcmVxdWVzdEV2ZW50LnBhcnRpYWxUZXh0IDogdW5kZWZpbmVkLFxuICAgICAgICAgIG1ldGEsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBjYXNlICdzdWNjZXNzJzoge1xuICAgICAgICBjb25zdCB7IHJlc3BvbnNlLCBleHBpcmVzSW5UaW1lc3RhbXAgfSA9IHJlcXVlc3RFdmVudDtcbiAgICAgICAgY29uc3QgaXNHcWwgPSBpc0dxbFF1ZXJ5Q29uZmlnKHRoaXMuX3F1ZXJ5Q29uZmlnKTtcbiAgICAgICAgY29uc3QgcmVzcG9uc2VEYXRhID1cbiAgICAgICAgICBpc0dxbCAmJiB0eXBlb2YgcmVzcG9uc2UgPT09ICdvYmplY3QnICYmICEhcmVzcG9uc2UgJiYgJ2RhdGEnIGluIHJlc3BvbnNlXG4gICAgICAgICAgICA/IChyZXNwb25zZVsnZGF0YSddIGFzIFJlc3BvbnNlKVxuICAgICAgICAgICAgOiAocmVzcG9uc2UgYXMgUmVzcG9uc2UpO1xuXG4gICAgICAgIGlmICh0aGlzLl9xdWVyeUNvbmZpZy5lbnRpdHkgJiYgdGhpcy5fcXVlcnlDb25maWcuZW50aXR5LnNldCkge1xuICAgICAgICAgIGNvbnN0IGlkID0gdGhpcy5fcXVlcnlDb25maWcuZW50aXR5Py5pZCh7IGFyZ3M6IHRoaXMuX2FyZ3MsIHJlc3BvbnNlOiByZXNwb25zZURhdGEgfSk7XG5cbiAgICAgICAgICB0aGlzLl9xdWVyeUNvbmZpZy5lbnRpdHk/LnNldCh7XG4gICAgICAgICAgICBhcmdzOiB0aGlzLl9hcmdzLFxuICAgICAgICAgICAgcmVzcG9uc2U6IHJlc3BvbnNlRGF0YSxcbiAgICAgICAgICAgIGlkLFxuICAgICAgICAgICAgc3RvcmU6IHRoaXMuX3F1ZXJ5Q29uZmlnLmVudGl0eS5zdG9yZSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3N0YXRlJC5uZXh0KHtcbiAgICAgICAgICB0eXBlOiBRdWVyeVN0YXRlVHlwZS5TdWNjZXNzLFxuICAgICAgICAgIHJlc3BvbnNlOiByZXNwb25zZURhdGEsXG4gICAgICAgICAgbWV0YTogeyAuLi5tZXRhLCBleHBpcmVzQXQ6IGV4cGlyZXNJblRpbWVzdGFtcCB9LFxuICAgICAgICB9KTtcblxuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgY2FzZSAnZmFpbHVyZSc6IHtcbiAgICAgICAgY29uc3QgeyBlcnJvciB9ID0gcmVxdWVzdEV2ZW50O1xuICAgICAgICBjb25zdCBmYWlsdXJlID0gKCkgPT4gdGhpcy5fc3RhdGUkLm5leHQoeyB0eXBlOiBRdWVyeVN0YXRlVHlwZS5GYWlsdXJlLCBlcnJvciwgbWV0YSB9KTtcbiAgICAgICAgY29uc3QgYmVhcmVyQXV0aFByb3ZpZGVyID0gdGhpcy5fZ2V0QmVhcmVyQXV0aFByb3ZpZGVyKCk7XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICFiZWFyZXJBdXRoUHJvdmlkZXIgfHxcbiAgICAgICAgICBvcHRpb25zPy5faXNVbmF1dGhvcml6ZWRSZXRyeSB8fFxuICAgICAgICAgIGVycm9yLnN0YXR1cyAhPT0gSHR0cFN0YXR1c0NvZGUuVW5hdXRob3JpemVkIHx8XG4gICAgICAgICAgIWJlYXJlckF1dGhQcm92aWRlci5zaG91bGRSZWZyZXNoT25VbmF1dGhvcml6ZWRSZXNwb25zZVxuICAgICAgICApIHtcbiAgICAgICAgICByZXR1cm4gZmFpbHVyZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcXVlcnkgPSBiZWFyZXJBdXRoUHJvdmlkZXIuX3JlZnJlc2hRdWVyeSgpO1xuICAgICAgICBpZiAoIXF1ZXJ5KSByZXR1cm4gZmFpbHVyZSgpO1xuXG4gICAgICAgIHF1ZXJ5LnN0YXRlJFxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgdGFrZVVudGlsUmVzcG9uc2UoKSxcbiAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9vbkFib3J0JCksXG4gICAgICAgICAgICB0YXAoKHN0YXRlKSA9PlxuICAgICAgICAgICAgICBpc1F1ZXJ5U3RhdGVTdWNjZXNzKHN0YXRlKSA/IHRoaXMuZXhlY3V0ZSh7IC4uLm9wdGlvbnMsIF9pc1VuYXV0aG9yaXplZFJldHJ5OiB0cnVlIH0pIDogZmFpbHVyZSgpLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICApXG4gICAgICAgICAgLnN1YnNjcmliZSgpO1xuXG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBjYXNlICdjYW5jZWwnOiB7XG4gICAgICAgIHRoaXMuX3N0YXRlJC5uZXh0KHtcbiAgICAgICAgICB0eXBlOiBRdWVyeVN0YXRlVHlwZS5DYW5jZWxsZWQsXG4gICAgICAgICAgbWV0YSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfdHJhbnNmb3JtU3RhdGUoczogUXVlcnlTdGF0ZTxSZXNwb25zZT4pOiBPYnNlcnZhYmxlPFF1ZXJ5U3RhdGU8RGF0YT4+IHtcbiAgICBpZiAoIWlzUXVlcnlTdGF0ZVN1Y2Nlc3MocykgfHwgIXRoaXMuX3F1ZXJ5Q29uZmlnLmVudGl0eT8uZ2V0KSB7XG4gICAgICByZXR1cm4gb2YocykgYXMgT2JzZXJ2YWJsZTxRdWVyeVN0YXRlPERhdGE+PjtcbiAgICB9XG5cbiAgICBjb25zdCBpZCA9IHRoaXMuX3F1ZXJ5Q29uZmlnLmVudGl0eS5pZCh7IGFyZ3M6IHRoaXMuX2FyZ3MsIHJlc3BvbnNlOiBzLnJlc3BvbnNlIH0pO1xuXG4gICAgcmV0dXJuIHRoaXMuX3F1ZXJ5Q29uZmlnLmVudGl0eVxuICAgICAgLmdldCh7IGFyZ3M6IHRoaXMuX2FyZ3MsIGlkLCByZXNwb25zZTogcy5yZXNwb25zZSwgc3RvcmU6IHRoaXMuX3F1ZXJ5Q29uZmlnLmVudGl0eS5zdG9yZSB9KVxuICAgICAgLnBpcGUobWFwKCh2KSA9PiAoeyAuLi5zLCByZXNwb25zZTogdiB9KSkpO1xuICB9XG59XG4iXX0=
|
|
@@ -23,7 +23,6 @@ export class QueryStore {
|
|
|
23
23
|
return this._store.get(id) ?? null;
|
|
24
24
|
}
|
|
25
25
|
remove(id) {
|
|
26
|
-
this.get(id)?._destroy();
|
|
27
26
|
this._store.delete(id);
|
|
28
27
|
this._logState(id, null, 'REMOVE');
|
|
29
28
|
this._storeChange$.next(id);
|
|
@@ -134,4 +133,4 @@ export class QueryStore {
|
|
|
134
133
|
console.log(`%cGC: ${action}`, 'color: yellow; font-weight: bold');
|
|
135
134
|
}
|
|
136
135
|
}
|
|
137
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktc3RvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3F1ZXJ5L3NyYy9saWIvcXVlcnktc3RvcmUvcXVlcnktc3RvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHbEUsTUFBTSxPQUFPLFVBQVU7SUFjckIsWUFDVSxPQUtQO1FBTE8sWUFBTyxHQUFQLE9BQU8sQ0FLZDtRQW5CSDs7V0FFRztRQUNNLFdBQU0sR0FBRyxJQUFJLEdBQUcsRUFBb0IsQ0FBQztRQUV0QyxzQkFBaUIsR0FBa0IsSUFBSSxDQUFDO1FBQ3hDLHlCQUFvQixHQUFHLEtBQUssQ0FBQztRQUM3Qix1QkFBa0IsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFFaEMsa0JBQWEsR0FBRyxJQUFJLE9BQU8sRUFBVSxDQUFDO1FBRXJDLGlCQUFZLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQVV4RCxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBRUQsR0FBRyxDQUFDLEVBQVUsRUFBRSxLQUFlO1FBQzdCLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUUzQixJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUU3QixJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFakMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVELEdBQUcsQ0FBcUIsRUFBVTtRQUNoQyxPQUFRLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBTyxJQUFJ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SUFBSSxDQUFDLE9BQU8sRUFBRSw2QkFBNkI7WUFBRSxPQUFPO1FBRXpELE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxNQUFNLEVBQUUsRUFBRSxrQ0FBa0MsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN1YmplY3QsIGZyb21FdmVudCwgdGFrZSwgdGFrZVVudGlsLCB0aW1lciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQW55UXVlcnkgfSBmcm9tICcuLi9xdWVyeSc7XG5cbmV4cG9ydCBjbGFzcyBRdWVyeVN0b3JlIHtcbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcmVhZG9ubHkgX3N0b3JlID0gbmV3IE1hcDxzdHJpbmcsIEFueVF1ZXJ5PigpO1xuXG4gIHByaXZhdGUgX2dhcmJhZ2VDb2xsZWN0b3I6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIF9pc0luTG93UmVzb3VyY2VNb2RlID0gZmFsc2U7XG4gIHByaXZhdGUgX2xhc3RCbHVyVGltZXN0YW1wID0gRGF0ZS5ub3coKTtcblxuICBwcml2YXRlIF9zdG9yZUNoYW5nZSQgPSBuZXcgU3ViamVjdDxzdHJpbmc+KCk7XG5cbiAgcmVhZG9ubHkgc3RvcmVDaGFuZ2UkID0gdGhpcy5fc3RvcmVDaGFuZ2UkLmFzT2JzZXJ2YWJsZSgpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2NvbmZpZz86IHtcbiAgICAgIGVuYWJsZUNoYW5nZUxvZ2dpbmc/OiBib29sZWFuO1xuICAgICAgZW5hYmxlR2FyYmFnZUNvbGxlY3RvckxvZ2dpbmc/OiBib29sZWFuO1xuICAgICAgYXV0b1JlZnJlc2hRdWVyaWVzT25XaW5kb3dGb2N1cz86IGJvb2xlYW47XG4gICAgICBlbmFibGVTbWFydFBvbGxpbmc/OiBib29sZWFuO1xuICAgIH0sXG4gICkge1xuICAgIHRoaXMuX2luaXRTbWFydFF1ZXJ5SGFuZGxpbmcoKTtcbiAgfVxuXG4gIGFkZChpZDogc3RyaW5nLCBxdWVyeTogQW55UXVlcnkpIHtcbiAgICB0aGlzLl9zdG9yZS5zZXQoaWQsIHF1ZXJ5KTtcblxuICAgIHRoaXMuX2luaXRHYXJiYWdlQ29sbGVjdG9yKCk7XG5cbiAgICB0aGlzLl9sb2dTdGF0ZShpZCwgcXVlcnksICdTRVQnKTtcblxuICAgIHRoaXMuX3N0b3JlQ2hhbmdlJC5uZXh0KGlkKTtcbiAgfVxuXG4gIGdldDxUIGV4dGVuZHMgQW55UXVlcnk+KGlkOiBzdHJpbmcpOiBUIHwgbnVsbCB7XG4gICAgcmV0dXJuICh0aGlzLl9zdG9yZS5nZXQoaWQpIGFzIFQpID8/IG51bGw7XG4gIH1cblxuICByZW1vdmUoaWQ6IHN0cmluZykge1xuICAgIHRoaXMuZ2V0KGlkKT8uX2Rlc3Ryb3koKTtcbiAgICB0aGlzLl9zdG9yZS5kZWxldGUoaWQpO1xuXG4gICAgdGhpcy5fbG9nU3RhdGUoaWQsIG51bGwsICdSRU1PVkUnKTtcblxuICAgIHRoaXMuX3N0b3JlQ2hhbmdlJC5uZXh0KGlkKTtcbiAgfVxuXG4gIGZvckVhY2goY2FsbGJhY2s6ICh2YWx1ZTogQW55UXVlcnksIGtleTogc3RyaW5nKSA9PiB2b2lkKSB7XG4gICAgZm9yIChjb25zdCBba2V5LCBxdWVyeV0gb2YgdGhpcy5fc3RvcmUpIHtcbiAgICAgIGNhbGxiYWNrKHF1ZXJ5LCBrZXkpO1xuICAgIH1cbiAgfVxuXG4gIHJlZnJlc2hRdWVyaWVzSW5Vc2UoY29uZmlnPzogeyBpZ25vcmVDYWNoZVZhbGlkaXR5PzogYm9vbGVhbjsgcHVyZ2VVbnVzZWQ/OiBib29sZWFuIH0pIHtcbiAgICBjb25zdCB7IGlnbm9yZUNhY2hlVmFsaWRpdHksIHB1cmdlVW51c2VkIH0gPSBjb25maWcgPz8ge307XG5cbiAgICBmb3IgKGNvbnN0IFtrZXksIHF1ZXJ5XSBvZiB0aGlzLl9zdG9yZSkge1xuICAgICAgaWYgKFxuICAgICAgICBxdWVyeS5pc0luVXNlICYmXG4gICAgICAgIChxdWVyeS5pc0V4cGlyZWQgfHwgaWdub3JlQ2FjaGVWYWxpZGl0eSkgJiZcbiAgICAgICAgcXVlcnkuYXV0b1JlZnJlc2hPbkNvbmZpZy5xdWVyeUNsaWVudERlZmF1bHRIZWFkZXJzQ2hhbmdlXG4gICAgICApIHtcbiAgICAgICAgcXVlcnkuZXhlY3V0ZSh7IHNraXBDYWNoZTogdHJ1ZSwgX3RyaWdnZXJlZFZpYTogJ2F1dG8nIH0pO1xuICAgICAgfSBlbHNlIGlmIChwdXJnZVVudXNlZCAmJiAhcXVlcnkuaXNJblVzZSkge1xuICAgICAgICB0aGlzLnJlbW92ZShrZXkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2luaXRTbWFydFF1ZXJ5SGFuZGxpbmcoKSB7XG4gICAgY29uc3Qgd2luZG93Qmx1ciQgPSBmcm9tRXZlbnQ8RXZlbnQ+KHdpbmRvdywgJ2JsdXInKTtcbiAgICBjb25zdCB3aW5kb3dGb2N1cyQgPSBmcm9tRXZlbnQ8RXZlbnQ+KHdpbmRvdywgJ2ZvY3VzJyk7XG5cbiAgICB3aW5kb3dCbHVyJC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGltZXIoNTAwMClcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHdpbmRvd0ZvY3VzJCksIHRha2UoMSkpXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuX2xhc3RCbHVyVGltZXN0YW1wID0gRGF0ZS5ub3coKTtcbiAgICAgICAgICB0aGlzLl9pc0luTG93UmVzb3VyY2VNb2RlID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLl9zdG9wR2FyYmFnZUNvbGxlY3RvcigpO1xuXG4gICAgICAgICAgaWYgKHRoaXMuX2NvbmZpZz8uZW5hYmxlU21hcnRQb2xsaW5nKSB7XG4gICAgICAgICAgICB0aGlzLmZvckVhY2goKHF1ZXJ5KSA9PiB7XG4gICAgICAgICAgICAgIGlmICghcXVlcnkuaXNQb2xsaW5nIHx8ICFxdWVyeS5fZW5hYmxlU21hcnRQb2xsaW5nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgcXVlcnkucGF1c2VQb2xsaW5nKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgd2luZG93Rm9jdXMkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICBpZiAoIXRoaXMuX2lzSW5Mb3dSZXNvdXJjZU1vZGUpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9pc0luTG93UmVzb3VyY2VNb2RlID0gZmFsc2U7XG5cbiAgICAgIGlmICh0aGlzLl9jb25maWc/LmVuYWJsZVNtYXJ0UG9sbGluZyB8fCB0aGlzLl9jb25maWc/LmF1dG9SZWZyZXNoUXVlcmllc09uV2luZG93Rm9jdXMpIHtcbiAgICAgICAgdGhpcy5mb3JFYWNoKChxdWVyeSkgPT4ge1xuICAgICAgICAgIGlmICh0aGlzLl9jb25maWc/LmVuYWJsZVNtYXJ0UG9sbGluZyAmJiBxdWVyeS5faXNQb2xsaW5nUGF1c2VkKSB7XG4gICAgICAgICAgICBxdWVyeS5yZXN1bWVQb2xsaW5nKCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKERhdGUubm93KCkgLSB0aGlzLl9sYXN0Qmx1clRpbWVzdGFtcCA+IDE1MDAwKSB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIHRoaXMuX2NvbmZpZz8uYXV0b1JlZnJlc2hRdWVyaWVzT25XaW5kb3dGb2N1cyAmJlxuICAgICAgICAgICAgICBxdWVyeS5pc0V4cGlyZWQgJiZcbiAgICAgICAgICAgICAgcXVlcnkuaXNJblVzZSAmJlxuICAgICAgICAgICAgICBxdWVyeS5hdXRvUmVmcmVzaE9uQ29uZmlnLndpbmRvd0ZvY3VzXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgcXVlcnkuZXhlY3V0ZSh7IHNraXBDYWNoZTogdHJ1ZSwgX3RyaWdnZXJlZFZpYTogJ2F1dG8nIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX2luaXRHYXJiYWdlQ29sbGVjdG9yKCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9sb2dTdGF0ZShrZXk6IHN0cmluZyB8IG51bGwsIGl0ZW06IEFueVF1ZXJ5IHwgbnVsbCwgb3BlcmF0aW9uOiBzdHJpbmcpIHtcbiAgICBpZiAoIXRoaXMuX2NvbmZpZz8uZW5hYmxlQ2hhbmdlTG9nZ2luZykgcmV0dXJuO1xuXG4gICAgY29uc3Qgc3RhdGVBc0pzb246IFJlY29yZDxzdHJpbmcsIEFueVF1ZXJ5PiA9IHt9O1xuXG4gICAgdGhpcy5fc3RvcmUuZm9yRWFjaCgodmFsdWUsIGtleSkgPT4ge1xuICAgICAgc3RhdGVBc0pzb25ba2V5XSA9IHZhbHVlO1xuICAgIH0pO1xuXG4gICAgY29uc29sZS5sb2coYCVjWyR7b3BlcmF0aW9ufV0gJHtrZXl9YCwgJ2ZvbnQtd2VpZ2h0OiBib2xkJyk7XG5cbiAgICBjb25zb2xlLmxvZyh7IG9wZXJhdGlvbiwga2V5LCBpdGVtIH0pO1xuICAgIGNvbnNvbGUubG9nKHN0YXRlQXNKc29uKTtcbiAgfVxuXG4gIHByaXZhdGUgX2luaXRHYXJiYWdlQ29sbGVjdG9yKCkge1xuICAgIGlmICh0aGlzLl9nYXJiYWdlQ29sbGVjdG9yICE9PSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fbG9nR2FyYmFnZUNvbGxlY3RvcignU3RhcnQnKTtcblxuICAgIHRoaXMuX2dhcmJhZ2VDb2xsZWN0b3IgPSB3aW5kb3cuc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgdGhpcy5fcnVuR2FyYmFnZUNvbGxlY3RvcigpO1xuICAgIH0sIDE1MDAwKTtcbiAgfVxuXG4gIHByaXZhdGUgX3N0b3BHYXJiYWdlQ29sbGVjdG9yKCkge1xuICAgIGlmICh0aGlzLl9nYXJiYWdlQ29sbGVjdG9yICE9PSBudWxsKSB7XG4gICAgICB3aW5kb3cuY2xlYXJJbnRlcnZhbCh0aGlzLl9nYXJiYWdlQ29sbGVjdG9yKTtcbiAgICAgIHRoaXMuX2dhcmJhZ2VDb2xsZWN0b3IgPSBudWxsO1xuICAgICAgdGhpcy5fbG9nR2FyYmFnZUNvbGxlY3RvcignU3RvcCcpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3J1bkdhcmJhZ2VDb2xsZWN0b3IoKSB7XG4gICAgdGhpcy5fbG9nR2FyYmFnZUNvbGxlY3RvcignQ29sbGVjdGluZy4uLicpO1xuXG4gICAgdGhpcy5fc3RvcmUuZm9yRWFjaCgoaXRlbSwga2V5KSA9PiB7XG4gICAgICBpZiAoaXRlbS5pc0V4cGlyZWQgJiYgIWl0ZW0uaXNJblVzZSkge1xuICAgICAgICB0aGlzLnJlbW92ZShrZXkpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5fbG9nR2FyYmFnZUNvbGxlY3RvcignQ29sbGVjdGlvbiBkb25lJyk7XG5cbiAgICBpZiAoIXRoaXMuX3N0b3JlLnNpemUpIHtcbiAgICAgIHRoaXMuX3N0b3BHYXJiYWdlQ29sbGVjdG9yKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfbG9nR2FyYmFnZUNvbGxlY3RvcihhY3Rpb246IHN0cmluZykge1xuICAgIGlmICghdGhpcy5fY29uZmlnPy5lbmFibGVHYXJiYWdlQ29sbGVjdG9yTG9nZ2luZykgcmV0dXJuO1xuXG4gICAgY29uc29sZS5sb2coYCVjR0M6ICR7YWN0aW9ufWAsICdjb2xvcjogeWVsbG93OyBmb250LXdlaWdodDogYm9sZCcpO1xuICB9XG59XG4iXX0=
|
|
136
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktc3RvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3F1ZXJ5L3NyYy9saWIvcXVlcnktc3RvcmUvcXVlcnktc3RvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHbEUsTUFBTSxPQUFPLFVBQVU7SUFjckIsWUFDVSxPQUtQO1FBTE8sWUFBTyxHQUFQLE9BQU8sQ0FLZDtRQW5CSDs7V0FFRztRQUNNLFdBQU0sR0FBRyxJQUFJLEdBQUcsRUFBb0IsQ0FBQztRQUV0QyxzQkFBaUIsR0FBa0IsSUFBSSxDQUFDO1FBQ3hDLHlCQUFvQixHQUFHLEtBQUssQ0FBQztRQUM3Qix1QkFBa0IsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFFaEMsa0JBQWEsR0FBRyxJQUFJLE9BQU8sRUFBVSxDQUFDO1FBRXJDLGlCQUFZLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQVV4RCxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBRUQsR0FBRyxDQUFDLEVBQVUsRUFBRSxLQUFlO1FBQzdCLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUUzQixJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUU3QixJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFakMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVELEdBQUcsQ0FBcUIsRUFBVTtRQUNoQyxPQUFRLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBTyxJQUFJ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RyxDQUFDLFNBQVMsTUFBTSxFQUFFLEVBQUUsa0NBQWtDLENBQUMsQ0FBQztJQUNyRSxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdWJqZWN0LCBmcm9tRXZlbnQsIHRha2UsIHRha2VVbnRpbCwgdGltZXIgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFueVF1ZXJ5IH0gZnJvbSAnLi4vcXVlcnknO1xuXG5leHBvcnQgY2xhc3MgUXVlcnlTdG9yZSB7XG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHJlYWRvbmx5IF9zdG9yZSA9IG5ldyBNYXA8c3RyaW5nLCBBbnlRdWVyeT4oKTtcblxuICBwcml2YXRlIF9nYXJiYWdlQ29sbGVjdG9yOiBudW1iZXIgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBfaXNJbkxvd1Jlc291cmNlTW9kZSA9IGZhbHNlO1xuICBwcml2YXRlIF9sYXN0Qmx1clRpbWVzdGFtcCA9IERhdGUubm93KCk7XG5cbiAgcHJpdmF0ZSBfc3RvcmVDaGFuZ2UkID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xuXG4gIHJlYWRvbmx5IHN0b3JlQ2hhbmdlJCA9IHRoaXMuX3N0b3JlQ2hhbmdlJC5hc09ic2VydmFibGUoKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9jb25maWc/OiB7XG4gICAgICBlbmFibGVDaGFuZ2VMb2dnaW5nPzogYm9vbGVhbjtcbiAgICAgIGVuYWJsZUdhcmJhZ2VDb2xsZWN0b3JMb2dnaW5nPzogYm9vbGVhbjtcbiAgICAgIGF1dG9SZWZyZXNoUXVlcmllc09uV2luZG93Rm9jdXM/OiBib29sZWFuO1xuICAgICAgZW5hYmxlU21hcnRQb2xsaW5nPzogYm9vbGVhbjtcbiAgICB9LFxuICApIHtcbiAgICB0aGlzLl9pbml0U21hcnRRdWVyeUhhbmRsaW5nKCk7XG4gIH1cblxuICBhZGQoaWQ6IHN0cmluZywgcXVlcnk6IEFueVF1ZXJ5KSB7XG4gICAgdGhpcy5fc3RvcmUuc2V0KGlkLCBxdWVyeSk7XG5cbiAgICB0aGlzLl9pbml0R2FyYmFnZUNvbGxlY3RvcigpO1xuXG4gICAgdGhpcy5fbG9nU3RhdGUoaWQsIHF1ZXJ5LCAnU0VUJyk7XG5cbiAgICB0aGlzLl9zdG9yZUNoYW5nZSQubmV4dChpZCk7XG4gIH1cblxuICBnZXQ8VCBleHRlbmRzIEFueVF1ZXJ5PihpZDogc3RyaW5nKTogVCB8IG51bGwge1xuICAgIHJldHVybiAodGhpcy5fc3RvcmUuZ2V0KGlkKSBhcyBUKSA/PyBudWxsO1xuICB9XG5cbiAgcmVtb3ZlKGlkOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9zdG9yZS5kZWxldGUoaWQpO1xuXG4gICAgdGhpcy5fbG9nU3RhdGUoaWQsIG51bGwsICdSRU1PVkUnKTtcblxuICAgIHRoaXMuX3N0b3JlQ2hhbmdlJC5uZXh0KGlkKTtcbiAgfVxuXG4gIGZvckVhY2goY2FsbGJhY2s6ICh2YWx1ZTogQW55UXVlcnksIGtleTogc3RyaW5nKSA9PiB2b2lkKSB7XG4gICAgZm9yIChjb25zdCBba2V5LCBxdWVyeV0gb2YgdGhpcy5fc3RvcmUpIHtcbiAgICAgIGNhbGxiYWNrKHF1ZXJ5LCBrZXkpO1xuICAgIH1cbiAgfVxuXG4gIHJlZnJlc2hRdWVyaWVzSW5Vc2UoY29uZmlnPzogeyBpZ25vcmVDYWNoZVZhbGlkaXR5PzogYm9vbGVhbjsgcHVyZ2VVbnVzZWQ/OiBib29sZWFuIH0pIHtcbiAgICBjb25zdCB7IGlnbm9yZUNhY2hlVmFsaWRpdHksIHB1cmdlVW51c2VkIH0gPSBjb25maWcgPz8ge307XG5cbiAgICBmb3IgKGNvbnN0IFtrZXksIHF1ZXJ5XSBvZiB0aGlzLl9zdG9yZSkge1xuICAgICAgaWYgKFxuICAgICAgICBxdWVyeS5pc0luVXNlICYmXG4gICAgICAgIChxdWVyeS5pc0V4cGlyZWQgfHwgaWdub3JlQ2FjaGVWYWxpZGl0eSkgJiZcbiAgICAgICAgcXVlcnkuYXV0b1JlZnJlc2hPbkNvbmZpZy5xdWVyeUNsaWVudERlZmF1bHRIZWFkZXJzQ2hhbmdlXG4gICAgICApIHtcbiAgICAgICAgcXVlcnkuZXhlY3V0ZSh7IHNraXBDYWNoZTogdHJ1ZSwgX3RyaWdnZXJlZFZpYTogJ2F1dG8nIH0pO1xuICAgICAgfSBlbHNlIGlmIChwdXJnZVVudXNlZCAmJiAhcXVlcnkuaXNJblVzZSkge1xuICAgICAgICB0aGlzLnJlbW92ZShrZXkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2luaXRTbWFydFF1ZXJ5SGFuZGxpbmcoKSB7XG4gICAgY29uc3Qgd2luZG93Qmx1ciQgPSBmcm9tRXZlbnQ8RXZlbnQ+KHdpbmRvdywgJ2JsdXInKTtcbiAgICBjb25zdCB3aW5kb3dGb2N1cyQgPSBmcm9tRXZlbnQ8RXZlbnQ+KHdpbmRvdywgJ2ZvY3VzJyk7XG5cbiAgICB3aW5kb3dCbHVyJC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGltZXIoNTAwMClcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHdpbmRvd0ZvY3VzJCksIHRha2UoMSkpXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuX2xhc3RCbHVyVGltZXN0YW1wID0gRGF0ZS5ub3coKTtcbiAgICAgICAgICB0aGlzLl9pc0luTG93UmVzb3VyY2VNb2RlID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLl9zdG9wR2FyYmFnZUNvbGxlY3RvcigpO1xuXG4gICAgICAgICAgaWYgKHRoaXMuX2NvbmZpZz8uZW5hYmxlU21hcnRQb2xsaW5nKSB7XG4gICAgICAgICAgICB0aGlzLmZvckVhY2goKHF1ZXJ5KSA9PiB7XG4gICAgICAgICAgICAgIGlmICghcXVlcnkuaXNQb2xsaW5nIHx8ICFxdWVyeS5fZW5hYmxlU21hcnRQb2xsaW5nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgcXVlcnkucGF1c2VQb2xsaW5nKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgd2luZG93Rm9jdXMkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICBpZiAoIXRoaXMuX2lzSW5Mb3dSZXNvdXJjZU1vZGUpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9pc0luTG93UmVzb3VyY2VNb2RlID0gZmFsc2U7XG5cbiAgICAgIGlmICh0aGlzLl9jb25maWc/LmVuYWJsZVNtYXJ0UG9sbGluZyB8fCB0aGlzLl9jb25maWc/LmF1dG9SZWZyZXNoUXVlcmllc09uV2luZG93Rm9jdXMpIHtcbiAgICAgICAgdGhpcy5mb3JFYWNoKChxdWVyeSkgPT4ge1xuICAgICAgICAgIGlmICh0aGlzLl9jb25maWc/LmVuYWJsZVNtYXJ0UG9sbGluZyAmJiBxdWVyeS5faXNQb2xsaW5nUGF1c2VkKSB7XG4gICAgICAgICAgICBxdWVyeS5yZXN1bWVQb2xsaW5nKCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKERhdGUubm93KCkgLSB0aGlzLl9sYXN0Qmx1clRpbWVzdGFtcCA+IDE1MDAwKSB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIHRoaXMuX2NvbmZpZz8uYXV0b1JlZnJlc2hRdWVyaWVzT25XaW5kb3dGb2N1cyAmJlxuICAgICAgICAgICAgICBxdWVyeS5pc0V4cGlyZWQgJiZcbiAgICAgICAgICAgICAgcXVlcnkuaXNJblVzZSAmJlxuICAgICAgICAgICAgICBxdWVyeS5hdXRvUmVmcmVzaE9uQ29uZmlnLndpbmRvd0ZvY3VzXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgcXVlcnkuZXhlY3V0ZSh7IHNraXBDYWNoZTogdHJ1ZSwgX3RyaWdnZXJlZFZpYTogJ2F1dG8nIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX2luaXRHYXJiYWdlQ29sbGVjdG9yKCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9sb2dTdGF0ZShrZXk6IHN0cmluZyB8IG51bGwsIGl0ZW06IEFueVF1ZXJ5IHwgbnVsbCwgb3BlcmF0aW9uOiBzdHJpbmcpIHtcbiAgICBpZiAoIXRoaXMuX2NvbmZpZz8uZW5hYmxlQ2hhbmdlTG9nZ2luZykgcmV0dXJuO1xuXG4gICAgY29uc3Qgc3RhdGVBc0pzb246IFJlY29yZDxzdHJpbmcsIEFueVF1ZXJ5PiA9IHt9O1xuXG4gICAgdGhpcy5fc3RvcmUuZm9yRWFjaCgodmFsdWUsIGtleSkgPT4ge1xuICAgICAgc3RhdGVBc0pzb25ba2V5XSA9IHZhbHVlO1xuICAgIH0pO1xuXG4gICAgY29uc29sZS5sb2coYCVjWyR7b3BlcmF0aW9ufV0gJHtrZXl9YCwgJ2ZvbnQtd2VpZ2h0OiBib2xkJyk7XG5cbiAgICBjb25zb2xlLmxvZyh7IG9wZXJhdGlvbiwga2V5LCBpdGVtIH0pO1xuICAgIGNvbnNvbGUubG9nKHN0YXRlQXNKc29uKTtcbiAgfVxuXG4gIHByaXZhdGUgX2luaXRHYXJiYWdlQ29sbGVjdG9yKCkge1xuICAgIGlmICh0aGlzLl9nYXJiYWdlQ29sbGVjdG9yICE9PSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fbG9nR2FyYmFnZUNvbGxlY3RvcignU3RhcnQnKTtcblxuICAgIHRoaXMuX2dhcmJhZ2VDb2xsZWN0b3IgPSB3aW5kb3cuc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgdGhpcy5fcnVuR2FyYmFnZUNvbGxlY3RvcigpO1xuICAgIH0sIDE1MDAwKTtcbiAgfVxuXG4gIHByaXZhdGUgX3N0b3BHYXJiYWdlQ29sbGVjdG9yKCkge1xuICAgIGlmICh0aGlzLl9nYXJiYWdlQ29sbGVjdG9yICE9PSBudWxsKSB7XG4gICAgICB3aW5kb3cuY2xlYXJJbnRlcnZhbCh0aGlzLl9nYXJiYWdlQ29sbGVjdG9yKTtcbiAgICAgIHRoaXMuX2dhcmJhZ2VDb2xsZWN0b3IgPSBudWxsO1xuICAgICAgdGhpcy5fbG9nR2FyYmFnZUNvbGxlY3RvcignU3RvcCcpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3J1bkdhcmJhZ2VDb2xsZWN0b3IoKSB7XG4gICAgdGhpcy5fbG9nR2FyYmFnZUNvbGxlY3RvcignQ29sbGVjdGluZy4uLicpO1xuXG4gICAgdGhpcy5fc3RvcmUuZm9yRWFjaCgoaXRlbSwga2V5KSA9PiB7XG4gICAgICBpZiAoaXRlbS5pc0V4cGlyZWQgJiYgIWl0ZW0uaXNJblVzZSkge1xuICAgICAgICB0aGlzLnJlbW92ZShrZXkpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5fbG9nR2FyYmFnZUNvbGxlY3RvcignQ29sbGVjdGlvbiBkb25lJyk7XG5cbiAgICBpZiAoIXRoaXMuX3N0b3JlLnNpemUpIHtcbiAgICAgIHRoaXMuX3N0b3BHYXJiYWdlQ29sbGVjdG9yKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfbG9nR2FyYmFnZUNvbGxlY3RvcihhY3Rpb246IHN0cmluZykge1xuICAgIGlmICghdGhpcy5fY29uZmlnPy5lbmFibGVHYXJiYWdlQ29sbGVjdG9yTG9nZ2luZykgcmV0dXJuO1xuXG4gICAgY29uc29sZS5sb2coYCVjR0M6ICR7YWN0aW9ufWAsICdjb2xvcjogeWVsbG93OyBmb250LXdlaWdodDogYm9sZCcpO1xuICB9XG59XG4iXX0=
|