@worktile/theia 17.2.1 → 17.2.3
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/components/column-resize/overlay-handle.component.d.ts +3 -3
- package/components/toolbar/toolbar.component.d.ts +0 -1
- package/editor.component.d.ts +1 -1
- package/esm2022/components/column-resize/overlay-handle.component.mjs +5 -5
- package/esm2022/components/toolbar/toolbar.component.mjs +2 -7
- package/esm2022/editor.component.mjs +13 -5
- package/esm2022/plugins/color/toolbar-item.component.mjs +8 -3
- package/esm2022/plugins/image/image.editor.mjs +2 -3
- package/esm2022/plugins/table/components/table.component.mjs +7 -3
- package/esm2022/plugins/table/table.editor.mjs +2 -2
- package/esm2022/plugins/table/utils/get-grid-columns.mjs +2 -2
- package/esm2022/plugins/vertical-align/toolbar-item.component.mjs +3 -5
- package/fesm2022/worktile-theia.mjs +31 -22
- package/fesm2022/worktile-theia.mjs.map +1 -1
- package/interfaces/editor.d.ts +3 -3
- package/package.json +2 -2
- package/plugins/color/toolbar-item.component.d.ts +5 -1
- package/plugins/table/components/table.component.d.ts +1 -1
- package/plugins/vertical-align/toolbar-item.component.d.ts +2 -3
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { AfterViewInit, ChangeDetectorRef, ElementRef, NgZone, OnDestroy, ViewContainerRef } from '@angular/core';
|
|
2
2
|
import { ReplaySubject } from 'rxjs';
|
|
3
|
-
import { ResizeRef } from './resize-ref';
|
|
4
|
-
import { TableCellEventDispatcher } from './event-dispatcher';
|
|
5
3
|
import { ColumnResizeNotifierSource } from './column-resize-notifier';
|
|
4
|
+
import { TableCellEventDispatcher } from './event-dispatcher';
|
|
5
|
+
import { ResizeRef } from './resize-ref';
|
|
6
6
|
import * as i0 from "@angular/core";
|
|
7
7
|
export declare class TheColumnResizeOverlayHandle implements AfterViewInit, OnDestroy {
|
|
8
8
|
elementRef: ElementRef<HTMLElement>;
|
|
@@ -28,7 +28,6 @@ export declare class TheToolbarComponent implements OnInit, OnChanges, OnDestroy
|
|
|
28
28
|
ngOnDestroy(): void;
|
|
29
29
|
setToolbarClass(): void;
|
|
30
30
|
private resizeElement;
|
|
31
|
-
private isTableActive;
|
|
32
31
|
selectionChange(editor: Editor): void;
|
|
33
32
|
renderToolbarView(): void;
|
|
34
33
|
/**
|
package/editor.component.d.ts
CHANGED
|
@@ -75,7 +75,7 @@ export declare class TheEditorComponent implements OnInit, OnChanges, OnDestroy
|
|
|
75
75
|
private generateDecorate;
|
|
76
76
|
onKeyDown: (event: KeyboardEvent) => void;
|
|
77
77
|
mousedown(event: MouseEvent): void;
|
|
78
|
-
handleSelectAll(): void;
|
|
78
|
+
handleSelectAll(event: KeyboardEvent): void;
|
|
79
79
|
onClick: (event: MouseEvent) => void;
|
|
80
80
|
onSlaPaste: (event: ClipboardEvent) => void;
|
|
81
81
|
onSlaBeforeInput: (event: Event & {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { Component, ChangeDetectionStrategy, Inject } from '@angular/core';
|
|
2
1
|
import { DOCUMENT } from '@angular/common';
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
2
|
+
import { ChangeDetectionStrategy, Component, Inject } from '@angular/core';
|
|
3
|
+
import { ReplaySubject, fromEvent } from 'rxjs';
|
|
4
|
+
import { distinctUntilChanged, filter, map, mapTo, pairwise, startWith, take, takeUntil } from 'rxjs/operators';
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
6
6
|
import * as i1 from "./resize-ref";
|
|
7
7
|
import * as i2 from "./event-dispatcher";
|
|
@@ -22,7 +22,7 @@ export class TheColumnResizeOverlayHandle {
|
|
|
22
22
|
this._listenForMouseEvents();
|
|
23
23
|
const overlayPane = this.elementRef.nativeElement.closest('.cdk-overlay-pane');
|
|
24
24
|
// 解决鼠标 hover 在拖拽线上阻断浏览器滚动
|
|
25
|
-
fromEvent(overlayPane, 'wheel')
|
|
25
|
+
fromEvent(overlayPane, 'wheel', { passive: true })
|
|
26
26
|
.pipe(take(1))
|
|
27
27
|
.subscribe(() => {
|
|
28
28
|
overlayPane.style.pointerEvents = 'none';
|
|
@@ -145,4 +145,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImpor
|
|
|
145
145
|
type: Inject,
|
|
146
146
|
args: [DOCUMENT]
|
|
147
147
|
}] }, { type: i3.ColumnResizeNotifierSource }] });
|
|
148
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS1oYW5kbGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc3JjL2NvbXBvbmVudHMvY29sdW1uLXJlc2l6ZS9vdmVybGF5LWhhbmRsZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFJVCx1QkFBdUIsRUFJdkIsTUFBTSxFQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoRCxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsb0JBQW9CLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7O0FBV2hILE1BQU0sT0FBTyw0QkFBNEI7SUFHckMsWUFDVyxVQUFtQyxFQUNuQyxnQkFBa0MsRUFDbEMsR0FBc0IsRUFDdEIsTUFBYyxFQUNkLFNBQW9CLEVBQ3BCLGVBQXlDLEVBQ3ZCLFFBQWEsRUFDL0IsY0FBMEM7UUFQMUMsZUFBVSxHQUFWLFVBQVUsQ0FBeUI7UUFDbkMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUNwQixvQkFBZSxHQUFmLGVBQWUsQ0FBMEI7UUFDdkIsYUFBUSxHQUFSLFFBQVEsQ0FBSztRQUMvQixtQkFBYyxHQUFkLGNBQWMsQ0FBNEI7UUFWbEMsY0FBUyxHQUFHLElBQUksYUFBYSxFQUFRLENBQUM7SUFXdEQsQ0FBQztJQUVKLGVBQWU7UUFDWCxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUM3QixNQUFN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QUM7b0JBQ1AsSUFBSSxFQUFFLEVBQUUsS0FBSyxFQUFFLGdDQUFnQyxFQUFFO29CQUNqRCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsUUFBUSxFQUFFLEVBQUU7b0JBQ1osVUFBVSxFQUFFLElBQUk7aUJBQ25COzswQkFXUSxNQUFNOzJCQUFDLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgRWxlbWVudFJlZixcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIFZpZXdDb250YWluZXJSZWYsXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgTmdab25lLFxuICAgIEluamVjdFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IGZyb21FdmVudCwgUmVwbGF5U3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsLCBtYXBUbywgbWFwLCBmaWx0ZXIsIHN0YXJ0V2l0aCwgcGFpcndpc2UsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgUmVzaXplUmVmIH0gZnJvbSAnLi9yZXNpemUtcmVmJztcbmltcG9ydCB7IFRhYmxlQ2VsbEV2ZW50RGlzcGF0Y2hlciB9IGZyb20gJy4vZXZlbnQtZGlzcGF0Y2hlcic7XG5pbXBvcnQgeyBDb2x1bW5SZXNpemVOb3RpZmllclNvdXJjZSB9IGZyb20gJy4vY29sdW1uLXJlc2l6ZS1ub3RpZmllcic7XG5cbkBDb21wb25lbnQoe1xuICAgIGhvc3Q6IHsgY2xhc3M6ICd0aGUtdGFibGUtcmVzaXplLW92ZXJsYXktdGh1bWInIH0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgdGVtcGxhdGU6ICcnLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgVGhlQ29sdW1uUmVzaXplT3ZlcmxheUhhbmRsZSBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGRlc3Ryb3llZCA9IG5ldyBSZXBsYXlTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgICAgICBwdWJsaWMgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcbiAgICAgICAgcHVibGljIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHB1YmxpYyBuZ1pvbmU6IE5nWm9uZSxcbiAgICAgICAgcHVibGljIHJlc2l6ZVJlZjogUmVzaXplUmVmLFxuICAgICAgICBwdWJsaWMgZXZlbnREaXNwYXRjaGVyOiBUYWJsZUNlbGxFdmVudERpc3BhdGNoZXIsXG4gICAgICAgIEBJbmplY3QoRE9DVU1FTlQpIHB1YmxpYyBkb2N1bWVudDogYW55LFxuICAgICAgICBwdWJsaWMgcmVzaXplTm90aWZpZXI6IENvbHVtblJlc2l6ZU5vdGlmaWVyU291cmNlXG4gICAgKSB7fVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICB0aGlzLl9saXN0ZW5Gb3JNb3VzZUV2ZW50cygpO1xuICAgICAgICBjb25zdCBvdmVybGF5UGFuZSA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNsb3Nlc3QoJy5jZGstb3ZlcmxheS1wYW5lJykgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgIC8vIOino+WGs+m8oOaghyBob3ZlciDlnKjmi5bmi73nur/kuIrpmLvmlq3mtY/op4jlmajmu5rliqhcbiAgICAgICAgZnJvbUV2ZW50KG92ZXJsYXlQYW5lLCAnd2hlZWwnKVxuICAgICAgICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIG92ZXJsYXlQYW5lLnN0eWxlLnBvaW50ZXJFdmVudHMgPSAnbm9uZSc7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9saXN0ZW5Gb3JNb3VzZUV2ZW50cygpIHtcbiAgICAgICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdGFrZVVudGlsRGVzdHJveWVkID0gdGFrZVVudGlsPE1vdXNlRXZlbnQ+KHRoaXMuZGVzdHJveWVkKTtcbiAgICAgICAgICAgIGZyb21FdmVudDxNb3VzZUV2ZW50Pih0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ21vdXNlZW50ZXInKVxuICAgICAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCwgbWFwVG8odGhpcy5yZXNpemVSZWYub3JpZ2luLm5hdGl2ZUVsZW1lbnQpKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoY2VsbCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZXZlbnREaXNwYXRjaGVyLnRhYmxlQ2VsbEhvdmVyZWQubmV4dCh7IGNlbGwsIHBvc2l0aW9uOiB0aGlzLnJlc2l6ZVJlZi5wb3NpdGlvbiB9KTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXNpemVSZWYudXBkYXRlU2l6ZUFuZE9mZnNldCgpO1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBmcm9tRXZlbnQ8TW91c2VFdmVudD4odGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdtb3VzZWRvd24nKVxuICAgICAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZClcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKG1vdXNlZG93bkV2ZW50ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgbW91c2Vkb3duRXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZHJhZ1N0YXJ0ZWQobW91c2Vkb3duRXZlbnQpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9kcmFnU3RhcnRlZChtb3VzZWRvd25FdmVudDogTW91c2VFdmVudCkge1xuICAgICAgICBpZiAobW91c2Vkb3duRXZlbnQuYnV0dG9uICE9PSAwKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbW91c2V1cCA9IGZyb21FdmVudDxNb3VzZUV2ZW50Pih0aGlzLmRvY3VtZW50LCAnbW91c2V1cCcpO1xuICAgICAgICBjb25zdCBtb3VzZW1vdmUgPSBmcm9tRXZlbnQ8TW91c2VFdmVudD4odGhpcy5kb2N1bWVudCwgJ21vdXNlbW92ZScpO1xuICAgICAgICBjb25zdCBlc2NhcGUgPSBmcm9tRXZlbnQ8S2V5Ym9hcmRFdmVudD4odGhpcy5kb2N1bWVudCwgJ2tleXVwJykucGlwZShmaWx0ZXIoKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiBldmVudC5rZXkgPT09ICdFc2NhcGUnKSk7XG5cbiAgICAgICAgY29uc3Qgc3RhcnRYID0gbW91c2Vkb3duRXZlbnQuY2xpZW50WDtcbiAgICAgICAgY29uc3Qgc3RhcnRZID0gbW91c2Vkb3duRXZlbnQuY2xpZW50WTtcblxuICAgICAgICBjb25zdCBpbml0aWFsV2lkdGhTaXplID0gdGhpcy5fZ2V0T3JpZ2luV2lkdGgoKTtcbiAgICAgICAgY29uc3QgaW5pdGlhbEhlaWdodFNpemUgPSB0aGlzLl9nZXRPcmlnaW5IZWlnaHQoKTtcbiAgICAgICAgY29uc3QgaXNYQXhpcyA9IHRoaXMuX2lzWEF4aXMoKTtcbiAgICAgICAgbGV0IG92ZXJsYXlPZmZzZXQgPSB0aGlzLl9nZXRPdmVybGF5T2Zmc2V0KCk7XG4gICAgICAgIGxldCBvcmlnaW5PZmZzZXQgPSB0aGlzLl9nZXRPcmlnaW5PZmZzZXQoKTtcbiAgICAgICAgbGV0IHNpemUgPSBpc1hBeGlzID8gaW5pdGlhbFdpZHRoU2l6ZSA6IGluaXRpYWxIZWlnaHRTaXplO1xuICAgICAgICB0aGlzLnVwZGF0ZVJlc2l6ZUFjdGl2ZSh0cnVlKTtcbiAgICAgICAgdGhpcy5fbm90aWZ5UmVzaXplU3RhcnRlZCgpO1xuXG4gICAgICAgIG1vdXNldXAucGlwZSh0YWtlVW50aWwoZXNjYXBlKSwgdGFrZVVudGlsKHRoaXMuZGVzdHJveWVkKSkuc3Vic2NyaWJlKCh7IGNsaWVudFgsIGNsaWVudFkgfSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fbm90aWZ5UmVzaXplRW5kZWQoc2l6ZSwgaXNYQXhpcyA/IGNsaWVudFggIT09IHN0YXJ0WCA6IGNsaWVudFkgIT09IHN0YXJ0WSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGVzY2FwZS5waXBlKHRha2VVbnRpbChtb3VzZXVwKSwgdGFrZVVudGlsKHRoaXMuZGVzdHJveWVkKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX25vdGlmeVJlc2l6ZUVuZGVkKHNpemUpO1xuICAgICAgICB9KTtcblxuICAgICAgICBtb3VzZW1vdmVcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcCgoeyBjbGllbnRYLCBjbGllbnRZIH0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudFgsXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRZXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgc3RhcnRXaXRoKHtcbiAgICAgICAgICAgICAgICAgICAgY2xpZW50WDogc3RhcnRYLFxuICAgICAgICAgICAgICAgICAgICBjbGllbnRZOiBzdGFydFlcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgICAgICAgICAgIHBhaXJ3aXNlKCksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKG1vdXNldXApLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbChlc2NhcGUpLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZClcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKFtwcmV2LCBjdXJyXSkgPT4ge1xuICAgICAgICAgICAgICAgIGxldCBkZWx0YVNpemUgPSBpc1hBeGlzID8gY3Vyci5jbGllbnRYIC0gcHJldi5jbGllbnRYIDogY3Vyci5jbGllbnRZIC0gcHJldi5jbGllbnRZO1xuICAgICAgICAgICAgICAgIHRoaXMucmVzaXplTm90aWZpZXIudHJpZ2dlclJlc2l6ZS5uZXh0KHtcbiAgICAgICAgICAgICAgICAgICAgdGFibGVDZWxsOiB0aGlzLnJlc2l6ZVJlZi5vcmlnaW4ubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICAgICAgICAgICAgZGVsdGFTaXplLFxuICAgICAgICAgICAgICAgICAgICBwcmV2aW91c1NpemU6IHNpemVcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCB1cGRhdGVSZXNpemVBY3RpdmUoYWN0aXZlOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZXZlbnREaXNwYXRjaGVyLm92ZXJsYXlIYW5kbGVBY3RpdmVGb3JDZWxsLm5leHQoXG4gICAgICAgICAgICBhY3RpdmUgPyB7IGNlbGw6IHRoaXMucmVzaXplUmVmLm9yaWdpbi5uYXRpdmVFbGVtZW50ISwgcG9zaXRpb246IHRoaXMucmVzaXplUmVmLnBvc2l0aW9uIH0gOiBudWxsXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfaXNYQXhpcygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVzaXplUmVmLmRpcmVjdGlvbiA9PT0gJ1gnO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2dldE9yaWdpbkhlaWdodCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5yZXNpemVSZWYub3JpZ2luLm5hdGl2ZUVsZW1lbnQhLm9mZnNldEhlaWdodDtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9nZXRPcmlnaW5XaWR0aCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5yZXNpemVSZWYub3JpZ2luLm5hdGl2ZUVsZW1lbnQhLm9mZnNldFdpZHRoO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2dldE9yaWdpbk9mZnNldCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5yZXNpemVSZWYub3JpZ2luLm5hdGl2ZUVsZW1lbnQhLm9mZnNldExlZnQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZ2V0T3ZlcmxheU9mZnNldCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gcGFyc2VJbnQodGhpcy5yZXNpemVSZWYub3ZlcmxheVJlZi5vdmVybGF5RWxlbWVudC5zdHlsZS5sZWZ0ISwgMTApO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2lzTHRyKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9ub3RpZnlSZXNpemVFbmRlZChzaXplOiBudW1iZXIsIGNvbXBsZXRlZFN1Y2Nlc3NmdWxseSA9IGZhbHNlKTogdm9pZCB7XG4gICAgICAgIHRoaXMudXBkYXRlUmVzaXplQWN0aXZlKGZhbHNlKTtcblxuICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc2l6ZU1lc3NhZ2UgPSB7IHRhYmxlQ2VsbDogdGhpcy5yZXNpemVSZWYub3JpZ2luLm5hdGl2ZUVsZW1lbnQgfTtcbiAgICAgICAgICAgIGlmIChjb21wbGV0ZWRTdWNjZXNzZnVsbHkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlc2l6ZU5vdGlmaWVyLnJlc2l6ZUNvbXBsZXRlZC5uZXh0KHNpemVNZXNzYWdlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXNpemVOb3RpZmllci5yZXNpemVDYW5jZWxlZC5uZXh0KHNpemVNZXNzYWdlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfbm90aWZ5UmVzaXplU3RhcnRlZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHNpemVNZXNzYWdlID0geyB0YWJsZUNlbGw6IHRoaXMucmVzaXplUmVmLm9yaWdpbi5uYXRpdmVFbGVtZW50IH07XG4gICAgICAgICAgICB0aGlzLnJlc2l6ZU5vdGlmaWVyLnJlc2l6ZVN0YXJ0ZWQubmV4dChzaXplTWVzc2FnZSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLmRlc3Ryb3llZC5uZXh0KCk7XG4gICAgICAgIHRoaXMuZGVzdHJveWVkLmNvbXBsZXRlKCk7XG4gICAgfVxufVxuIl19
|
|
148
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS1oYW5kbGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc3JjL2NvbXBvbmVudHMvY29sdW1uLXJlc2l6ZS9vdmVybGF5LWhhbmRsZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFFSCx1QkFBdUIsRUFFdkIsU0FBUyxFQUVULE1BQU0sRUFJVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7O0FBV2hILE1BQU0sT0FBTyw0QkFBNEI7SUFHckMsWUFDVyxVQUFtQyxFQUNuQyxnQkFBa0MsRUFDbEMsR0FBc0IsRUFDdEIsTUFBYyxFQUNkLFNBQW9CLEVBQ3BCLGVBQXlDLEVBQ3ZCLFFBQWEsRUFDL0IsY0FBMEM7UUFQMUMsZUFBVSxHQUFWLFVBQVUsQ0FBeUI7UUFDbkMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUNwQixvQkFBZSxHQUFmLGVBQWUsQ0FBMEI7UUFDdkIsYUFBUSxHQUFSLFFBQVEsQ0FBSztRQUMvQixtQkFBYyxHQUFkLGNBQWMsQ0FBNEI7UUFWbEMsY0FBUyxHQUFHLElBQUksYUFBYSxFQUFRLENBQUM7SUFXdEQsQ0FBQztJQUVKLGVBQWU7UUFDWCxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUM3QixNQUFN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OzsyRkFHSCw0QkFBNEI7a0JBTnhDLFNBQVM7bUJBQUM7b0JBQ1AsSUFBSSxFQUFFLEVBQUUsS0FBSyxFQUFFLGdDQUFnQyxFQUFFO29CQUNqRCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsUUFBUSxFQUFFLEVBQUU7b0JBQ1osVUFBVSxFQUFFLElBQUk7aUJBQ25COzswQkFXUSxNQUFNOzJCQUFDLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgSW5qZWN0LFxuICAgIE5nWm9uZSxcbiAgICBPbkRlc3Ryb3ksXG4gICAgVmlld0NvbnRhaW5lclJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJlcGxheVN1YmplY3QsIGZyb21FdmVudCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZpbHRlciwgbWFwLCBtYXBUbywgcGFpcndpc2UsIHN0YXJ0V2l0aCwgdGFrZSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQ29sdW1uUmVzaXplTm90aWZpZXJTb3VyY2UgfSBmcm9tICcuL2NvbHVtbi1yZXNpemUtbm90aWZpZXInO1xuaW1wb3J0IHsgVGFibGVDZWxsRXZlbnREaXNwYXRjaGVyIH0gZnJvbSAnLi9ldmVudC1kaXNwYXRjaGVyJztcbmltcG9ydCB7IFJlc2l6ZVJlZiB9IGZyb20gJy4vcmVzaXplLXJlZic7XG5cbkBDb21wb25lbnQoe1xuICAgIGhvc3Q6IHsgY2xhc3M6ICd0aGUtdGFibGUtcmVzaXplLW92ZXJsYXktdGh1bWInIH0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgdGVtcGxhdGU6ICcnLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgVGhlQ29sdW1uUmVzaXplT3ZlcmxheUhhbmRsZSBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGRlc3Ryb3llZCA9IG5ldyBSZXBsYXlTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgICAgICBwdWJsaWMgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcbiAgICAgICAgcHVibGljIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHB1YmxpYyBuZ1pvbmU6IE5nWm9uZSxcbiAgICAgICAgcHVibGljIHJlc2l6ZVJlZjogUmVzaXplUmVmLFxuICAgICAgICBwdWJsaWMgZXZlbnREaXNwYXRjaGVyOiBUYWJsZUNlbGxFdmVudERpc3BhdGNoZXIsXG4gICAgICAgIEBJbmplY3QoRE9DVU1FTlQpIHB1YmxpYyBkb2N1bWVudDogYW55LFxuICAgICAgICBwdWJsaWMgcmVzaXplTm90aWZpZXI6IENvbHVtblJlc2l6ZU5vdGlmaWVyU291cmNlXG4gICAgKSB7fVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICB0aGlzLl9saXN0ZW5Gb3JNb3VzZUV2ZW50cygpO1xuICAgICAgICBjb25zdCBvdmVybGF5UGFuZSA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNsb3Nlc3QoJy5jZGstb3ZlcmxheS1wYW5lJykgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgIC8vIOino+WGs+m8oOaghyBob3ZlciDlnKjmi5bmi73nur/kuIrpmLvmlq3mtY/op4jlmajmu5rliqhcbiAgICAgICAgZnJvbUV2ZW50KG92ZXJsYXlQYW5lLCAnd2hlZWwnLCB7IHBhc3NpdmU6IHRydWUgfSlcbiAgICAgICAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICBvdmVybGF5UGFuZS5zdHlsZS5wb2ludGVyRXZlbnRzID0gJ25vbmUnO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfbGlzdGVuRm9yTW91c2VFdmVudHMoKSB7XG4gICAgICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHRha2VVbnRpbERlc3Ryb3llZCA9IHRha2VVbnRpbDxNb3VzZUV2ZW50Pih0aGlzLmRlc3Ryb3llZCk7XG4gICAgICAgICAgICBmcm9tRXZlbnQ8TW91c2VFdmVudD4odGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdtb3VzZWVudGVyJylcbiAgICAgICAgICAgICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQsIG1hcFRvKHRoaXMucmVzaXplUmVmLm9yaWdpbi5uYXRpdmVFbGVtZW50KSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKGNlbGwgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmV2ZW50RGlzcGF0Y2hlci50YWJsZUNlbGxIb3ZlcmVkLm5leHQoeyBjZWxsLCBwb3NpdGlvbjogdGhpcy5yZXNpemVSZWYucG9zaXRpb24gfSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVzaXplUmVmLnVwZGF0ZVNpemVBbmRPZmZzZXQoKTtcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgZnJvbUV2ZW50PE1vdXNlRXZlbnQ+KHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnbW91c2Vkb3duJylcbiAgICAgICAgICAgICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZShtb3VzZWRvd25FdmVudCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIG1vdXNlZG93bkV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2RyYWdTdGFydGVkKG1vdXNlZG93bkV2ZW50KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZHJhZ1N0YXJ0ZWQobW91c2Vkb3duRXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgaWYgKG1vdXNlZG93bkV2ZW50LmJ1dHRvbiAhPT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG1vdXNldXAgPSBmcm9tRXZlbnQ8TW91c2VFdmVudD4odGhpcy5kb2N1bWVudCwgJ21vdXNldXAnKTtcbiAgICAgICAgY29uc3QgbW91c2Vtb3ZlID0gZnJvbUV2ZW50PE1vdXNlRXZlbnQ+KHRoaXMuZG9jdW1lbnQsICdtb3VzZW1vdmUnKTtcbiAgICAgICAgY29uc3QgZXNjYXBlID0gZnJvbUV2ZW50PEtleWJvYXJkRXZlbnQ+KHRoaXMuZG9jdW1lbnQsICdrZXl1cCcpLnBpcGUoZmlsdGVyKChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4gZXZlbnQua2V5ID09PSAnRXNjYXBlJykpO1xuXG4gICAgICAgIGNvbnN0IHN0YXJ0WCA9IG1vdXNlZG93bkV2ZW50LmNsaWVudFg7XG4gICAgICAgIGNvbnN0IHN0YXJ0WSA9IG1vdXNlZG93bkV2ZW50LmNsaWVudFk7XG5cbiAgICAgICAgY29uc3QgaW5pdGlhbFdpZHRoU2l6ZSA9IHRoaXMuX2dldE9yaWdpbldpZHRoKCk7XG4gICAgICAgIGNvbnN0IGluaXRpYWxIZWlnaHRTaXplID0gdGhpcy5fZ2V0T3JpZ2luSGVpZ2h0KCk7XG4gICAgICAgIGNvbnN0IGlzWEF4aXMgPSB0aGlzLl9pc1hBeGlzKCk7XG4gICAgICAgIGxldCBvdmVybGF5T2Zmc2V0ID0gdGhpcy5fZ2V0T3ZlcmxheU9mZnNldCgpO1xuICAgICAgICBsZXQgb3JpZ2luT2Zmc2V0ID0gdGhpcy5fZ2V0T3JpZ2luT2Zmc2V0KCk7XG4gICAgICAgIGxldCBzaXplID0gaXNYQXhpcyA/IGluaXRpYWxXaWR0aFNpemUgOiBpbml0aWFsSGVpZ2h0U2l6ZTtcbiAgICAgICAgdGhpcy51cGRhdGVSZXNpemVBY3RpdmUodHJ1ZSk7XG4gICAgICAgIHRoaXMuX25vdGlmeVJlc2l6ZVN0YXJ0ZWQoKTtcblxuICAgICAgICBtb3VzZXVwLnBpcGUodGFrZVVudGlsKGVzY2FwZSksIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCkpLnN1YnNjcmliZSgoeyBjbGllbnRYLCBjbGllbnRZIH0pID0+IHtcbiAgICAgICAgICAgIHRoaXMuX25vdGlmeVJlc2l6ZUVuZGVkKHNpemUsIGlzWEF4aXMgPyBjbGllbnRYICE9PSBzdGFydFggOiBjbGllbnRZICE9PSBzdGFydFkpO1xuICAgICAgICB9KTtcblxuICAgICAgICBlc2NhcGUucGlwZSh0YWtlVW50aWwobW91c2V1cCksIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9ub3RpZnlSZXNpemVFbmRlZChzaXplKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgbW91c2Vtb3ZlXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAoKHsgY2xpZW50WCwgY2xpZW50WSB9KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRYLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50WVxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIHN0YXJ0V2l0aCh7XG4gICAgICAgICAgICAgICAgICAgIGNsaWVudFg6IHN0YXJ0WCxcbiAgICAgICAgICAgICAgICAgICAgY2xpZW50WTogc3RhcnRZXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICAgICAgICAgICBwYWlyd2lzZSgpLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbChtb3VzZXVwKSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwoZXNjYXBlKSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChbcHJldiwgY3Vycl0pID0+IHtcbiAgICAgICAgICAgICAgICBsZXQgZGVsdGFTaXplID0gaXNYQXhpcyA/IGN1cnIuY2xpZW50WCAtIHByZXYuY2xpZW50WCA6IGN1cnIuY2xpZW50WSAtIHByZXYuY2xpZW50WTtcbiAgICAgICAgICAgICAgICB0aGlzLnJlc2l6ZU5vdGlmaWVyLnRyaWdnZXJSZXNpemUubmV4dCh7XG4gICAgICAgICAgICAgICAgICAgIHRhYmxlQ2VsbDogdGhpcy5yZXNpemVSZWYub3JpZ2luLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICAgICAgICAgICAgIGRlbHRhU2l6ZSxcbiAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNTaXplOiBzaXplXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgdXBkYXRlUmVzaXplQWN0aXZlKGFjdGl2ZTogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLmV2ZW50RGlzcGF0Y2hlci5vdmVybGF5SGFuZGxlQWN0aXZlRm9yQ2VsbC5uZXh0KFxuICAgICAgICAgICAgYWN0aXZlID8geyBjZWxsOiB0aGlzLnJlc2l6ZVJlZi5vcmlnaW4ubmF0aXZlRWxlbWVudCEsIHBvc2l0aW9uOiB0aGlzLnJlc2l6ZVJlZi5wb3NpdGlvbiB9IDogbnVsbFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2lzWEF4aXMoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlc2l6ZVJlZi5kaXJlY3Rpb24gPT09ICdYJztcbiAgICB9XG5cbiAgICBwcml2YXRlIF9nZXRPcmlnaW5IZWlnaHQoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVzaXplUmVmLm9yaWdpbi5uYXRpdmVFbGVtZW50IS5vZmZzZXRIZWlnaHQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZ2V0T3JpZ2luV2lkdGgoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVzaXplUmVmLm9yaWdpbi5uYXRpdmVFbGVtZW50IS5vZmZzZXRXaWR0aDtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9nZXRPcmlnaW5PZmZzZXQoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVzaXplUmVmLm9yaWdpbi5uYXRpdmVFbGVtZW50IS5vZmZzZXRMZWZ0O1xuICAgIH1cblxuICAgIHByaXZhdGUgX2dldE92ZXJsYXlPZmZzZXQoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHBhcnNlSW50KHRoaXMucmVzaXplUmVmLm92ZXJsYXlSZWYub3ZlcmxheUVsZW1lbnQuc3R5bGUubGVmdCEsIDEwKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9pc0x0cigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfbm90aWZ5UmVzaXplRW5kZWQoc2l6ZTogbnVtYmVyLCBjb21wbGV0ZWRTdWNjZXNzZnVsbHkgPSBmYWxzZSk6IHZvaWQge1xuICAgICAgICB0aGlzLnVwZGF0ZVJlc2l6ZUFjdGl2ZShmYWxzZSk7XG5cbiAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHNpemVNZXNzYWdlID0geyB0YWJsZUNlbGw6IHRoaXMucmVzaXplUmVmLm9yaWdpbi5uYXRpdmVFbGVtZW50IH07XG4gICAgICAgICAgICBpZiAoY29tcGxldGVkU3VjY2Vzc2Z1bGx5KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXNpemVOb3RpZmllci5yZXNpemVDb21wbGV0ZWQubmV4dChzaXplTWVzc2FnZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMucmVzaXplTm90aWZpZXIucmVzaXplQ2FuY2VsZWQubmV4dChzaXplTWVzc2FnZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgX25vdGlmeVJlc2l6ZVN0YXJ0ZWQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzaXplTWVzc2FnZSA9IHsgdGFibGVDZWxsOiB0aGlzLnJlc2l6ZVJlZi5vcmlnaW4ubmF0aXZlRWxlbWVudCB9O1xuICAgICAgICAgICAgdGhpcy5yZXNpemVOb3RpZmllci5yZXNpemVTdGFydGVkLm5leHQoc2l6ZU1lc3NhZ2UpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5kZXN0cm95ZWQubmV4dCgpO1xuICAgICAgICB0aGlzLmRlc3Ryb3llZC5jb21wbGV0ZSgpO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { NgIf, NgTemplateOutlet } from '@angular/common';
|
|
2
2
|
import { Component, HostBinding, Inject, Input, ViewChild, ViewContainerRef } from '@angular/core';
|
|
3
3
|
import { ThyDivider } from 'ngx-tethys/divider';
|
|
4
|
-
import {
|
|
5
|
-
import { DropdownMode, ElementKinds, TheToolbarGroupToken, ToolbarActionTypes, ToolbarMoreGroup } from '../../constants';
|
|
4
|
+
import { DropdownMode, TheToolbarGroupToken, ToolbarActionTypes, ToolbarMoreGroup } from '../../constants';
|
|
6
5
|
import { ToolbarItemType } from '../../interfaces/toolbar';
|
|
7
6
|
import { TheToolbarDropdown } from '../toolbar-dropdown/toolbar-dropdown.component';
|
|
8
7
|
import { TheToolbarItem } from '../toolbar-item/toolbar-item.component';
|
|
@@ -59,10 +58,6 @@ export class TheToolbarComponent {
|
|
|
59
58
|
});
|
|
60
59
|
this.resizeObserver.observe(editableElement);
|
|
61
60
|
}
|
|
62
|
-
isTableActive() {
|
|
63
|
-
const [table] = Editor.nodes(this.editor, { match: n => Element.isElement(n) && n.type === ElementKinds.table });
|
|
64
|
-
return !!table;
|
|
65
|
-
}
|
|
66
61
|
selectionChange(editor) {
|
|
67
62
|
if (this.isMore) {
|
|
68
63
|
this.renderToolbarView();
|
|
@@ -264,4 +259,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImpor
|
|
|
264
259
|
type: HostBinding,
|
|
265
260
|
args: ['style.justifyContent']
|
|
266
261
|
}] } });
|
|
267
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbGJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvY29tcG9uZW50cy90b29sYmFyL3Rvb2xiYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc3JjL2NvbXBvbmVudHMvdG9vbGJhci90b29sYmFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBRUgsU0FBUyxFQUdULFdBQVcsRUFDWCxNQUFNLEVBQ04sS0FBSyxFQU9MLFNBQVMsRUFDVCxnQkFBZ0IsRUFDbkIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBRXhDLE9BQU8sRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLGtCQUFrQixFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFekgsT0FBTyxFQUFpQyxlQUFlLEVBQTZCLE1BQU0sMEJBQTBCLENBQUM7QUFDckgsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFFcEYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdDQUF3QyxDQUFDOztBQVd4RSxNQUFNLE9BQU8sbUJBQW1CO0lBZTVCLElBQXlDLGNBQWM7UUFDbkQsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3RCLENBQUM7SUFZRCxZQUNZLEdBQXNCLEVBQ3RCLFVBQXNCLEVBQ3RCLE1BQWMsRUFDZ0IsWUFBNEM7UUFIMUUsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDdEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixXQUFNLEdB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QkFtQzVCLE1BQU07MkJBQUMsb0JBQW9CO3lDQWhDdkIsTUFBTTtzQkFBZCxLQUFLO2dCQUVHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBRUcsS0FBSztzQkFBYixLQUFLO2dCQUVHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBRUcsTUFBTTtzQkFBZCxLQUFLO2dCQUVHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBRW1FLGdCQUFnQjtzQkFBeEYsU0FBUzt1QkFBQyxrQkFBa0IsRUFBRSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUU5QixjQUFjO3NCQUF0RCxXQUFXO3VCQUFDLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nSWYsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgQ29tcG9uZW50UmVmLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSW5qZWN0LFxuICAgIElucHV0LFxuICAgIE5nWm9uZSxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3Q29udGFpbmVyUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVGh5RGl2aWRlciB9IGZyb20gJ25neC10ZXRoeXMvZGl2aWRlcic7XG5pbXBvcnQgeyBFZGl0b3IsIEVsZW1lbnQgfSBmcm9tICdzbGF0ZSc7XG5pbXBvcnQgeyBDb21wb25lbnRUeXBlIH0gZnJvbSAnc2xhdGUtYW5ndWxhcic7XG5pbXBvcnQgeyBEcm9wZG93bk1vZGUsIEVsZW1lbnRLaW5kcywgVGhlVG9vbGJhckdyb3VwVG9rZW4sIFRvb2xiYXJBY3Rpb25UeXBlcywgVG9vbGJhck1vcmVHcm91cCB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBUaGVCYXNlVG9vbGJhckRyb3Bkb3duLCBUaGVCYXNlVG9vbGJhckl0ZW0gfSBmcm9tICcuLi8uLi9jb3JlL3Rvb2xiYXItaXRlbS9iYXNlLXRvb2xiYXItaXRlbSc7XG5pbXBvcnQgeyBUb29sYmFyQWxpZ25tZW50LCBUb29sYmFySXRlbSwgVG9vbGJhckl0ZW1UeXBlLCBUb29sYmFySXRlbXNDb21wb3NlUmV0dXJuIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy90b29sYmFyJztcbmltcG9ydCB7IFRoZVRvb2xiYXJEcm9wZG93biB9IGZyb20gJy4uL3Rvb2xiYXItZHJvcGRvd24vdG9vbGJhci1kcm9wZG93bi5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGhlVG9vbGJhckdyb3VwIH0gZnJvbSAnLi4vdG9vbGJhci1ncm91cC90b29sYmFyLWdyb3VwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUaGVUb29sYmFySXRlbSB9IGZyb20gJy4uL3Rvb2xiYXItaXRlbS90b29sYmFyLWl0ZW0uY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd0aGUtdG9vbGJhcicsXG4gICAgdGVtcGxhdGVVcmw6ICd0b29sYmFyLmNvbXBvbmVudC5odG1sJyxcbiAgICBob3N0OiB7XG4gICAgICAgIGNsYXNzOiAndGhlLXRvb2xiYXItY29udGFpbmVyIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXInXG4gICAgfSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtOZ0lmLCBOZ1RlbXBsYXRlT3V0bGV0XVxufSlcbmV4cG9ydCBjbGFzcyBUaGVUb29sYmFyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gICAgQElucHV0KCkgZWRpdG9yOiBFZGl0b3I7XG5cbiAgICBASW5wdXQoKSB0b29sYmFySXRlbXM6IFRvb2xiYXJJdGVtW10gPSBbXTtcblxuICAgIEBJbnB1dCgpIGFsaWduOiBUb29sYmFyQWxpZ25tZW50O1xuXG4gICAgQElucHV0KCkgY29udGFpbmVyQ2xhc3M6IHN0cmluZ1tdID0gW107XG5cbiAgICBASW5wdXQoKSBpc01vcmUgPSB0cnVlO1xuXG4gICAgQElucHV0KCkgYWZ0ZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIEBWaWV3Q2hpbGQoJ3Rvb2xiYXJDb250YWluZXInLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYsIHN0YXRpYzogdHJ1ZSB9KSB0b29sYmFyQ29udGFpbmVyOiBWaWV3Q29udGFpbmVyUmVmO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdzdHlsZS5qdXN0aWZ5Q29udGVudCcpIGdldCBqdXN0aWZ5Q29udGVudCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWxpZ247XG4gICAgfVxuXG4gICAgY29tcG9uZW50czogTWFwPHN0cmluZywgQ29tcG9uZW50UmVmPGFueT4+ID0gbmV3IE1hcDxzdHJpbmcsIENvbXBvbmVudFJlZjxhbnk+PigpO1xuXG4gICAgY29tcG9zZVRvb2xiYXJJdGVtczogVG9vbGJhckl0ZW1zQ29tcG9zZVJldHVybjtcblxuICAgIG1vcmVHcm91cE1lbnUgPSBUb29sYmFyTW9yZUdyb3VwO1xuXG4gICAgcmVzaXplT2JzZXJ2ZXI6IFJlc2l6ZU9ic2VydmVyO1xuXG4gICAgZWxlbWVudFdpZHRoID0gMDtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcbiAgICAgICAgQEluamVjdChUaGVUb29sYmFyR3JvdXBUb2tlbikgcHJpdmF0ZSB0b29sYmFyR3JvdXA6IENvbXBvbmVudFR5cGU8VGhlVG9vbGJhckdyb3VwPlxuICAgICkge31cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLnNldFRvb2xiYXJDbGFzcygpO1xuICAgICAgICB0aGlzLnJlbmRlclRvb2xiYXJWaWV3KCk7XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlKHRoaXMuZWRpdG9yKTtcbiAgICAgICAgdGhpcy5pc01vcmUgJiYgdGhpcy5yZXNpemVFbGVtZW50KCk7XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBjb25zdCB0b29sYmFySXRlbXMgPSBjaGFuZ2VzLnRvb2xiYXJJdGVtcztcbiAgICAgICAgaWYgKHRvb2xiYXJJdGVtcyAmJiAhdG9vbGJhckl0ZW1zLmZpcnN0Q2hhbmdlKSB7XG4gICAgICAgICAgICB0aGlzLnJlbmRlclRvb2xiYXJWaWV3KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMucmVzaXplT2JzZXJ2ZXIpIHtcbiAgICAgICAgICAgIHRoaXMucmVzaXplT2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHNldFRvb2xiYXJDbGFzcygpIHtcbiAgICAgICAgaWYgKHRoaXMuZWRpdG9yICYmICEhdGhpcy5jb250YWluZXJDbGFzcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5hZGQoLi4udGhpcy5jb250YWluZXJDbGFzcyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHJlc2l6ZUVsZW1lbnQoKSB7XG4gICAgICAgIGNvbnN0IGVkaXRhYmxlRWxlbWVudCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIHRoaXMucmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoZW50cmllcyA9PiB7XG4gICAgICAgICAgICBmb3IgKGxldCBlbnRyeSBvZiBlbnRyaWVzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyB3aWR0aCB9ID0gZW50cnkuY29udGVudFJlY3Q7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNNb3JlICYmIHRoaXMuZWxlbWVudFdpZHRoICE9PSB3aWR0aCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnRXaWR0aCA9IHdpZHRoO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbmRlclRvb2xiYXJWaWV3KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5yZXNpemVPYnNlcnZlci5vYnNlcnZlKGVkaXRhYmxlRWxlbWVudCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc1RhYmxlQWN0aXZlKCkge1xuICAgICAgICBjb25zdCBbdGFibGVdID0gRWRpdG9yLm5vZGVzKHRoaXMuZWRpdG9yLCB7IG1hdGNoOiBuID0+IEVsZW1lbnQuaXNFbGVtZW50KG4pICYmIG4udHlwZSA9PT0gRWxlbWVudEtpbmRzLnRhYmxlIH0pO1xuICAgICAgICByZXR1cm4gISF0YWJsZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2VsZWN0aW9uQ2hhbmdlKGVkaXRvcjogRWRpdG9yKSB7XG4gICAgICAgIGlmICh0aGlzLmlzTW9yZSkge1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJUb29sYmFyVmlldygpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdG9vbGJhckl0ZW1zID0gWy4uLnRoaXMudG9vbGJhckl0ZW1zLCB0aGlzLm1vcmVHcm91cE1lbnVdO1xuICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgdG9vbGJhckl0ZW1zKSB7XG4gICAgICAgICAgICBpZiAoaXRlbS5rZXkgIT09IFRvb2xiYXJBY3Rpb25UeXBlcy5zcGxpdCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1Db21wb25lbnQgPSB0aGlzLmNvbXBvbmVudHMuZ2V0KGl0ZW0ua2V5KTtcbiAgICAgICAgICAgICAgICBpZiAoaXRlbUNvbXBvbmVudCAmJiBpdGVtQ29tcG9uZW50Lmluc3RhbmNlLnNlbGVjdGlvbkNoYW5nZSkge1xuICAgICAgICAgICAgICAgICAgICBpdGVtQ29tcG9uZW50Lmluc3RhbmNlLnNlbGVjdGlvbkNoYW5nZShlZGl0b3IpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyByZW5kZXJUb29sYmFyVmlldygpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdG9vbGJhckl0ZW1zID0gdGhpcy50b29sYmFySXRlbXNDb21wb3NlKCk7XG4gICAgICAgIGNvbnN0IHsgaXRlbXMsIGdyb3VwIH0gPSB0b29sYmFySXRlbXM7XG5cbiAgICAgICAgaWYgKGl0ZW1zLmxlbmd0aCA9PT0gdGhpcy5jb21wb3NlVG9vbGJhckl0ZW1zPy5pdGVtcz8ubGVuZ3RoICYmIGdyb3VwPy5sZW5ndGggPT09IHRoaXMuY29tcG9zZVRvb2xiYXJJdGVtcz8uZ3JvdXA/Lmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY29tcG9zZVRvb2xiYXJJdGVtcyA9IHRvb2xiYXJJdGVtcztcbiAgICAgICAgdGhpcy5jb21wb25lbnRzLmNsZWFyKCk7XG4gICAgICAgIHRoaXMudG9vbGJhckNvbnRhaW5lci5jbGVhcigpO1xuXG4gICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgaXRlbXMpIHtcbiAgICAgICAgICAgICAgICBpZiAoaXRlbS5rZXkgPT09IFRvb2xiYXJBY3Rpb25UeXBlcy5zcGxpdCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZVRvb2xiYXJTcGxpdCgpO1xuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVUb29sYmFySXRlbShpdGVtKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuY3JlYXRlTW9yZUdyb3VwKGdyb3VwKTtcbiAgICAgICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBjYWxjdWxhdGlvbiBkaXNwbGF5IHRvb2xiYXIgYW5kIG1vcmUgZ3JvdXBlZCB0b29sYmFyc1xuICAgICAqXG4gICAgICpcdOKUjOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgCAgR2xvYmFsVG9vbGJhclZpZXcg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSQXG4gICAgICpcdHwg4pSM4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAICNjaGlsZHJlbiDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJAgfFxuICAgICAqXHR8IHwgICDilIzilIDilIDilIDilIDilIDilIDilIAgI2l0ZW1zVmlldyDilIDilIDilIDilIDilIDilIDilIDilIDilJAg4pSM4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSQIOKUjOKUgOKUgCAjZ3JvdXBlZEl0ZW1zRHJvcGRvd24g4pSA4pSA4pSA4pSQICAgfCB8XG4gICAgICpcdHwgfCAgIHwgICAgICAgI3VuZ3JvdXBlZEl0ZW1zICAgICB8IHwgVG9vbGJhclNlcGFyYXRvclZpZXcgfCB8ICAgICAgICAjZ3JvdXBlZEl0ZW1zICAgICAgIHwgICB8IHxcbiAgICAgKlx0fCB8ICAg4pSU4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSALeKUmCDilJTilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJgg4pSU4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSYICAgfCB8XG4gICAgICpcdHwgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXC0tLS0tLS0tLS0gb25seSB3aGVuIHRvb2xiYXIgaXRlbXMgb3ZlcmZsb3cgLS0tLS0tLS0vICAgfCB8XG4gICAgICpcdHwg4pSU4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSYIHxcbiAgICAgKlx04pSU4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSYXG4gICAgICovXG4gICAgcHJpdmF0ZSB0b29sYmFySXRlbXNDb21wb3NlKCk6IFRvb2xiYXJJdGVtc0NvbXBvc2VSZXR1cm4ge1xuICAgICAgICBjb25zdCBncm91cFdpZHRoID0gMzI7XG4gICAgICAgIGNvbnN0IGl0ZW1zOiBUb29sYmFySXRlbVtdID0gW107XG4gICAgICAgIGNvbnN0IGdyb3VwOiBUb29sYmFySXRlbVtdID0gW107XG4gICAgICAgIGxldCBlbGVtZW50V2lkdGggPSB0aGlzLmlzTW9yZSA/IHRoaXMuZWxlbWVudFdpZHRoIDogbnVsbDtcbiAgICAgICAgbGV0IGlzU3BhY2VSZW1haW5pbmcgPSB0cnVlO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy50b29sYmFySXRlbXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLnRvb2xiYXJJdGVtc1tpXTtcbiAgICAgICAgICAgIGlmICghdGhpcy5pc01vcmUpIHtcbiAgICAgICAgICAgICAgICBpdGVtcy5wdXNoKGl0ZW0pO1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIWlzU3BhY2VSZW1haW5pbmcpIHtcbiAgICAgICAgICAgICAgICBncm91cC5wdXNoKGl0ZW0pO1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBpdGVtV2lkdGggPSB0aGlzLmdldEl0ZW1XaWR0aChpdGVtKTtcbiAgICAgICAgICAgIGNvbnN0IG9jY3VweVdpZHRoID0gaSA9PT0gdGhpcy50b29sYmFySXRlbXMubGVuZ3RoIC0gMSA/IGl0ZW1XaWR0aCA6IGl0ZW1XaWR0aCArIGdyb3VwV2lkdGg7XG4gICAgICAgICAgICBjb25zdCBhbGxvd1JlbmRlciA9IGVsZW1lbnRXaWR0aCAmJiBlbGVtZW50V2lkdGggPj0gb2NjdXB5V2lkdGg7XG5cbiAgICAgICAgICAgIGlmIChhbGxvd1JlbmRlcikge1xuICAgICAgICAgICAgICAgIGl0ZW1zLnB1c2goaXRlbSk7XG4gICAgICAgICAgICAgICAgZWxlbWVudFdpZHRoIC09IGl0ZW1XaWR0aDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaXNGaXJzdFNwbGl0ID0gZ3JvdXAubGVuZ3RoID09PSAwICYmIGl0ZW0ua2V5ID09PSBUb29sYmFyQWN0aW9uVHlwZXMuc3BsaXQ7XG4gICAgICAgICAgICAgICAgaWYgKCFpc0ZpcnN0U3BsaXQpIHtcbiAgICAgICAgICAgICAgICAgICAgaXNTcGFjZVJlbWFpbmluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBncm91cC5wdXNoKGl0ZW0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpdGVtczogdGhpcy5wdXJlVG9vbGJhckl0ZW1zKGl0ZW1zKSxcbiAgICAgICAgICAgIGdyb3VwXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogc3BsaXQgd2lkdGg6IDEzcHhcbiAgICAgKiBpdGVtIHdpZHRoOiBkZWZhdWx0IGl0ZW06IDMycHhcbiAgICAgKiBkcm9wZG93biBpdGVtOiA0OHB4XG4gICAgICogZGVmYXVsdCBwYWRkaW5nUmlnaHQ6IDRweFxuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0SXRlbVdpZHRoKGl0ZW06IFRvb2xiYXJJdGVtKSB7XG4gICAgICAgIGNvbnN0IHBhZGRpbmdSaWdodCA9IDQ7XG4gICAgICAgIGNvbnN0IGRlZmF1bHRJdGVtV2lkdGggPSAzMjtcbiAgICAgICAgY29uc3QgaWNvbkRyb3Bkb3duSXRlbVdpZHRoID0gNDg7XG4gICAgICAgIGNvbnN0IHRleHREcm9wZG93bkl0ZW1XaWR0aCA9IDcwO1xuICAgICAgICBjb25zdCBkcm9wZG93bkFjdGlvbkljb25XaWR0aCA9IDE2O1xuICAgICAgICBjb25zdCBzcGxpdFdpZHRoID0gOTtcbiAgICAgICAgY29uc3QgaXNEcm9wZG93bkNvbXBvbmVudCA9IGl0ZW0/LnR5cGUgPT09IFRvb2xiYXJJdGVtVHlwZS5kcm9wZG93bjtcbiAgICAgICAgY29uc3QgaXNVcGRhdGVEcm9wZG93bkl0ZW1XaWR0aCA9ICFpdGVtPy53aWR0aCAmJiBpc0Ryb3Bkb3duQ29tcG9uZW50O1xuXG4gICAgICAgIGxldCBpdGVtV2lkdGggPSBpdGVtPy53aWR0aCA/PyBkZWZhdWx0SXRlbVdpZHRoO1xuXG4gICAgICAgIGlmIChpc1VwZGF0ZURyb3Bkb3duSXRlbVdpZHRoKSB7XG4gICAgICAgICAgICBpZiAoaXRlbT8uZHJvcGRvd25Nb2RlID09PSBEcm9wZG93bk1vZGUuaWNvbikge1xuICAgICAgICAgICAgICAgIGl0ZW1XaWR0aCA9IGljb25Ecm9wZG93bkl0ZW1XaWR0aDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghaXRlbT8uZHJvcGRvd25Nb2RlIHx8IGl0ZW0/LmRyb3Bkb3duTW9kZSA9PT0gRHJvcGRvd25Nb2RlLnRleHQpIHtcbiAgICAgICAgICAgICAgICBpdGVtV2lkdGggPSB0ZXh0RHJvcGRvd25JdGVtV2lkdGg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXRlbT8uaXNIaWRlRHJvcGRvd25BY3Rpb25JY29uKSB7XG4gICAgICAgICAgICAgICAgaXRlbVdpZHRoIC09IGRyb3Bkb3duQWN0aW9uSWNvbldpZHRoO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChpdGVtLmtleSA9PT0gVG9vbGJhckFjdGlvblR5cGVzLnNwbGl0KSB7XG4gICAgICAgICAgICBpdGVtV2lkdGggPSBzcGxpdFdpZHRoO1xuICAgICAgICB9XG5cbiAgICAgICAgaXRlbVdpZHRoICs9IHBhZGRpbmdSaWdodDtcblxuICAgICAgICByZXR1cm4gaXRlbVdpZHRoO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGZpbHRlciBhZGphY2VudCByZXBlYXRlZCBkaXZpZGVyc1xuICAgICAqIEBwYXJhbSB7VG9vbGJhckl0ZW1bXX0gaXRlbXNcbiAgICAgKiBAcmV0dXJuc1xuICAgICAqIEBtZW1iZXJvZiBUaGVUb29sYmFyQ29tcG9uZW50XG4gICAgICovXG4gICAgcHVyZVRvb2xiYXJJdGVtcyhpdGVtczogVG9vbGJhckl0ZW1bXSkge1xuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoaXRlbXMpKSB7XG4gICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGl0ZW1zLmZpbHRlcigoYSwgaSkgPT4ge1xuICAgICAgICAgICAgaWYgKGkgPiAwICYmIGl0ZW1zW2kgLSAxXS5rZXkgIT09IFRvb2xiYXJBY3Rpb25UeXBlcy5zcGxpdCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGEua2V5ICE9PSBUb29sYmFyQWN0aW9uVHlwZXMuc3BsaXQ7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlVG9vbGJhckl0ZW0oaXRlbTogVG9vbGJhckl0ZW0pIHtcbiAgICAgICAgY29uc3QgeyBpY29uQ29tcG9uZW50LCB0eXBlLCBkcm9wZG93bk1vZGUsIGRyb3Bkb3duSXRlbUtleSwgaW5jbHVkZXMsIC4uLmFyZ3MgfSA9IGl0ZW07XG4gICAgICAgIGNvbnN0IHZpZXdDb21wb25lbnQgPSB0aGlzLnZpZXdDb21wb25lbnRUeXBlKHR5cGUpO1xuICAgICAgICBjb25zdCBjb21wUmVmID0gdGhpcy50b29sYmFyQ29udGFpbmVyLmNyZWF0ZUNvbXBvbmVudDxUaGVCYXNlVG9vbGJhckl0ZW0+KGljb25Db21wb25lbnQgPyBpY29uQ29tcG9uZW50IDogdmlld0NvbXBvbmVudCk7XG5cbiAgICAgICAgY29tcFJlZi5pbnN0YW5jZS5lZGl0b3IgPSB0aGlzLmVkaXRvcjtcbiAgICAgICAgY29tcFJlZi5pbnN0YW5jZS50b29sYmFySXRlbSA9IGl0ZW07XG4gICAgICAgIHRoaXMuY29tcG9uZW50cy5zZXQoaXRlbS5rZXksIGNvbXBSZWYpO1xuICAgICAgICBpZiAoaXRlbS50eXBlID09PSBUb29sYmFySXRlbVR5cGUuZHJvcGRvd24pIHtcbiAgICAgICAgICAgIGNvbnN0IGRyb3Bkb3duUmVmID0gY29tcFJlZiBhcyB1bmtub3duIGFzIENvbXBvbmVudFJlZjxUaGVCYXNlVG9vbGJhckRyb3Bkb3duPjtcbiAgICAgICAgICAgIGRyb3Bkb3duUmVmLmluc3RhbmNlLmRyb3Bkb3duSXRlbUtleSA9IGl0ZW0uZHJvcGRvd25JdGVtS2V5O1xuICAgICAgICAgICAgZHJvcGRvd25SZWYuaW5zdGFuY2UubWVudXMgPSBpbmNsdWRlcyBhcyBUb29sYmFySXRlbVtdO1xuICAgICAgICAgICAgZHJvcGRvd25SZWYuaW5zdGFuY2UubW9kZSA9IGRyb3Bkb3duTW9kZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlVG9vbGJhclNwbGl0KCkge1xuICAgICAgICBjb25zdCBjb21wUmVmID0gdGhpcy50b29sYmFyQ29udGFpbmVyLmNyZWF0ZUNvbXBvbmVudChUaHlEaXZpZGVyKTtcbiAgICAgICAgY29tcFJlZi5pbnN0YW5jZS50aHlWZXJ0aWNhbCA9IHRydWU7XG4gICAgICAgIGNvbXBSZWYuaW5zdGFuY2UudGh5Q29sb3IgPSAnbGlnaHQnO1xuICAgICAgICBjb21wUmVmLmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LmFkZCgnbXgtMicpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlTW9yZUdyb3VwKGdyb3VwOiBUb29sYmFySXRlbVtdKSB7XG4gICAgICAgIGlmIChncm91cC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBjb25zdCBjb21wUmVmID0gdGhpcy50b29sYmFyQ29udGFpbmVyLmNyZWF0ZUNvbXBvbmVudCh0aGlzLnRvb2xiYXJHcm91cCk7XG4gICAgICAgICAgICBjb21wUmVmLmluc3RhbmNlLmVkaXRvciA9IHRoaXMuZWRpdG9yO1xuICAgICAgICAgICAgY29tcFJlZi5pbnN0YW5jZS5tZW51cyA9IGdyb3VwO1xuICAgICAgICAgICAgY29tcFJlZi5pbnN0YW5jZS5pdGVtID0gdGhpcy5tb3JlR3JvdXBNZW51O1xuICAgICAgICAgICAgdGhpcy5jb21wb25lbnRzLnNldCh0aGlzLm1vcmVHcm91cE1lbnUua2V5LCBjb21wUmVmKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgdmlld0NvbXBvbmVudFR5cGUodHlwZTogVG9vbGJhckl0ZW1UeXBlKSB7XG4gICAgICAgIGlmICh0eXBlID09PSBUb29sYmFySXRlbVR5cGUuZGVmYXVsdCkge1xuICAgICAgICAgICAgcmV0dXJuIFRoZVRvb2xiYXJJdGVtO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlID09PSBUb29sYmFySXRlbVR5cGUuZHJvcGRvd24pIHtcbiAgICAgICAgICAgIHJldHVybiBUaGVUb29sYmFyRHJvcGRvd247XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFRoZVRvb2xiYXJJdGVtO1xuICAgIH1cbn1cbiIsIjxuZy1jb250YWluZXIgI3Rvb2xiYXJDb250YWluZXI+PC9uZy1jb250YWluZXI+XG48bmctY29udGVudD48L25nLWNvbnRlbnQ+XG48bmctdGVtcGxhdGUgKm5nSWY9XCJhZnRlclRlbXBsYXRlXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiYWZ0ZXJUZW1wbGF0ZVwiPjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
262
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbGJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvY29tcG9uZW50cy90b29sYmFyL3Rvb2xiYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc3JjL2NvbXBvbmVudHMvdG9vbGJhci90b29sYmFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBRUgsU0FBUyxFQUdULFdBQVcsRUFDWCxNQUFNLEVBQ04sS0FBSyxFQU9MLFNBQVMsRUFDVCxnQkFBZ0IsRUFDbkIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBR2hELE9BQU8sRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsa0JBQWtCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUzRyxPQUFPLEVBQWlDLGVBQWUsRUFBNkIsTUFBTSwwQkFBMEIsQ0FBQztBQUNySCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUVwRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0NBQXdDLENBQUM7O0FBV3hFLE1BQU0sT0FBTyxtQkFBbUI7SUFlNUIsSUFBeUMsY0FBYztRQUNuRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDdEIsQ0FBQztJQVlELFlBQ1ksR0FBc0IsRUFDdEIsVUFBc0IsRUFDdEIsTUFBYyxFQUNnQixZQUE0QztRQUgxRSxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZ0IsaUJBQVksR0FBWixZQUFZLENBQWdDO1FBOUI3RSxpQkFBWSxHQUFrQixF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bnQiOlsiaW1wb3J0IHsgTmdJZiwgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBDb21wb25lbnRSZWYsXG4gICAgRWxlbWVudFJlZixcbiAgICBIb3N0QmluZGluZyxcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgTmdab25lLFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdDb250YWluZXJSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUaHlEaXZpZGVyIH0gZnJvbSAnbmd4LXRldGh5cy9kaXZpZGVyJztcbmltcG9ydCB7IEVkaXRvciB9IGZyb20gJ3NsYXRlJztcbmltcG9ydCB7IENvbXBvbmVudFR5cGUgfSBmcm9tICdzbGF0ZS1hbmd1bGFyJztcbmltcG9ydCB7IERyb3Bkb3duTW9kZSwgVGhlVG9vbGJhckdyb3VwVG9rZW4sIFRvb2xiYXJBY3Rpb25UeXBlcywgVG9vbGJhck1vcmVHcm91cCB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBUaGVCYXNlVG9vbGJhckRyb3Bkb3duLCBUaGVCYXNlVG9vbGJhckl0ZW0gfSBmcm9tICcuLi8uLi9jb3JlL3Rvb2xiYXItaXRlbS9iYXNlLXRvb2xiYXItaXRlbSc7XG5pbXBvcnQgeyBUb29sYmFyQWxpZ25tZW50LCBUb29sYmFySXRlbSwgVG9vbGJhckl0ZW1UeXBlLCBUb29sYmFySXRlbXNDb21wb3NlUmV0dXJuIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy90b29sYmFyJztcbmltcG9ydCB7IFRoZVRvb2xiYXJEcm9wZG93biB9IGZyb20gJy4uL3Rvb2xiYXItZHJvcGRvd24vdG9vbGJhci1kcm9wZG93bi5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGhlVG9vbGJhckdyb3VwIH0gZnJvbSAnLi4vdG9vbGJhci1ncm91cC90b29sYmFyLWdyb3VwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUaGVUb29sYmFySXRlbSB9IGZyb20gJy4uL3Rvb2xiYXItaXRlbS90b29sYmFyLWl0ZW0uY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd0aGUtdG9vbGJhcicsXG4gICAgdGVtcGxhdGVVcmw6ICd0b29sYmFyLmNvbXBvbmVudC5odG1sJyxcbiAgICBob3N0OiB7XG4gICAgICAgIGNsYXNzOiAndGhlLXRvb2xiYXItY29udGFpbmVyIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXInXG4gICAgfSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtOZ0lmLCBOZ1RlbXBsYXRlT3V0bGV0XVxufSlcbmV4cG9ydCBjbGFzcyBUaGVUb29sYmFyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gICAgQElucHV0KCkgZWRpdG9yOiBFZGl0b3I7XG5cbiAgICBASW5wdXQoKSB0b29sYmFySXRlbXM6IFRvb2xiYXJJdGVtW10gPSBbXTtcblxuICAgIEBJbnB1dCgpIGFsaWduOiBUb29sYmFyQWxpZ25tZW50O1xuXG4gICAgQElucHV0KCkgY29udGFpbmVyQ2xhc3M6IHN0cmluZ1tdID0gW107XG5cbiAgICBASW5wdXQoKSBpc01vcmUgPSB0cnVlO1xuXG4gICAgQElucHV0KCkgYWZ0ZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIEBWaWV3Q2hpbGQoJ3Rvb2xiYXJDb250YWluZXInLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYsIHN0YXRpYzogdHJ1ZSB9KSB0b29sYmFyQ29udGFpbmVyOiBWaWV3Q29udGFpbmVyUmVmO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdzdHlsZS5qdXN0aWZ5Q29udGVudCcpIGdldCBqdXN0aWZ5Q29udGVudCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWxpZ247XG4gICAgfVxuXG4gICAgY29tcG9uZW50czogTWFwPHN0cmluZywgQ29tcG9uZW50UmVmPGFueT4+ID0gbmV3IE1hcDxzdHJpbmcsIENvbXBvbmVudFJlZjxhbnk+PigpO1xuXG4gICAgY29tcG9zZVRvb2xiYXJJdGVtczogVG9vbGJhckl0ZW1zQ29tcG9zZVJldHVybjtcblxuICAgIG1vcmVHcm91cE1lbnUgPSBUb29sYmFyTW9yZUdyb3VwO1xuXG4gICAgcmVzaXplT2JzZXJ2ZXI6IFJlc2l6ZU9ic2VydmVyO1xuXG4gICAgZWxlbWVudFdpZHRoID0gMDtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcbiAgICAgICAgQEluamVjdChUaGVUb29sYmFyR3JvdXBUb2tlbikgcHJpdmF0ZSB0b29sYmFyR3JvdXA6IENvbXBvbmVudFR5cGU8VGhlVG9vbGJhckdyb3VwPlxuICAgICkge31cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLnNldFRvb2xiYXJDbGFzcygpO1xuICAgICAgICB0aGlzLnJlbmRlclRvb2xiYXJWaWV3KCk7XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlKHRoaXMuZWRpdG9yKTtcbiAgICAgICAgdGhpcy5pc01vcmUgJiYgdGhpcy5yZXNpemVFbGVtZW50KCk7XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBjb25zdCB0b29sYmFySXRlbXMgPSBjaGFuZ2VzLnRvb2xiYXJJdGVtcztcbiAgICAgICAgaWYgKHRvb2xiYXJJdGVtcyAmJiAhdG9vbGJhckl0ZW1zLmZpcnN0Q2hhbmdlKSB7XG4gICAgICAgICAgICB0aGlzLnJlbmRlclRvb2xiYXJWaWV3KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMucmVzaXplT2JzZXJ2ZXIpIHtcbiAgICAgICAgICAgIHRoaXMucmVzaXplT2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHNldFRvb2xiYXJDbGFzcygpIHtcbiAgICAgICAgaWYgKHRoaXMuZWRpdG9yICYmICEhdGhpcy5jb250YWluZXJDbGFzcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5hZGQoLi4udGhpcy5jb250YWluZXJDbGFzcyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHJlc2l6ZUVsZW1lbnQoKSB7XG4gICAgICAgIGNvbnN0IGVkaXRhYmxlRWxlbWVudCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIHRoaXMucmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoZW50cmllcyA9PiB7XG4gICAgICAgICAgICBmb3IgKGxldCBlbnRyeSBvZiBlbnRyaWVzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyB3aWR0aCB9ID0gZW50cnkuY29udGVudFJlY3Q7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNNb3JlICYmIHRoaXMuZWxlbWVudFdpZHRoICE9PSB3aWR0aCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnRXaWR0aCA9IHdpZHRoO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbmRlclRvb2xiYXJWaWV3KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5yZXNpemVPYnNlcnZlci5vYnNlcnZlKGVkaXRhYmxlRWxlbWVudCk7XG4gICAgfVxuXG4gICAgcHVibGljIHNlbGVjdGlvbkNoYW5nZShlZGl0b3I6IEVkaXRvcikge1xuICAgICAgICBpZiAodGhpcy5pc01vcmUpIHtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyVG9vbGJhclZpZXcoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHRvb2xiYXJJdGVtcyA9IFsuLi50aGlzLnRvb2xiYXJJdGVtcywgdGhpcy5tb3JlR3JvdXBNZW51XTtcbiAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIHRvb2xiYXJJdGVtcykge1xuICAgICAgICAgICAgaWYgKGl0ZW0ua2V5ICE9PSBUb29sYmFyQWN0aW9uVHlwZXMuc3BsaXQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpdGVtQ29tcG9uZW50ID0gdGhpcy5jb21wb25lbnRzLmdldChpdGVtLmtleSk7XG4gICAgICAgICAgICAgICAgaWYgKGl0ZW1Db21wb25lbnQgJiYgaXRlbUNvbXBvbmVudC5pbnN0YW5jZS5zZWxlY3Rpb25DaGFuZ2UpIHtcbiAgICAgICAgICAgICAgICAgICAgaXRlbUNvbXBvbmVudC5pbnN0YW5jZS5zZWxlY3Rpb25DaGFuZ2UoZWRpdG9yKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgcmVuZGVyVG9vbGJhclZpZXcoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHRvb2xiYXJJdGVtcyA9IHRoaXMudG9vbGJhckl0ZW1zQ29tcG9zZSgpO1xuICAgICAgICBjb25zdCB7IGl0ZW1zLCBncm91cCB9ID0gdG9vbGJhckl0ZW1zO1xuXG4gICAgICAgIGlmIChpdGVtcy5sZW5ndGggPT09IHRoaXMuY29tcG9zZVRvb2xiYXJJdGVtcz8uaXRlbXM/Lmxlbmd0aCAmJiBncm91cD8ubGVuZ3RoID09PSB0aGlzLmNvbXBvc2VUb29sYmFySXRlbXM/Lmdyb3VwPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNvbXBvc2VUb29sYmFySXRlbXMgPSB0b29sYmFySXRlbXM7XG4gICAgICAgIHRoaXMuY29tcG9uZW50cy5jbGVhcigpO1xuICAgICAgICB0aGlzLnRvb2xiYXJDb250YWluZXIuY2xlYXIoKTtcblxuICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7XG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0ua2V5ID09PSBUb29sYmFyQWN0aW9uVHlwZXMuc3BsaXQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVUb29sYmFyU3BsaXQoKTtcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlVG9vbGJhckl0ZW0oaXRlbSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmNyZWF0ZU1vcmVHcm91cChncm91cCk7XG4gICAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogY2FsY3VsYXRpb24gZGlzcGxheSB0b29sYmFyIGFuZCBtb3JlIGdyb3VwZWQgdG9vbGJhcnNcbiAgICAgKlxuICAgICAqXHTilIzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAgIEdsb2JhbFRvb2xiYXJWaWV3IOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUkFxuICAgICAqXHR8IOKUjOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgCAjY2hpbGRyZW4g4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSQIHxcbiAgICAgKlx0fCB8ICAg4pSM4pSA4pSA4pSA4pSA4pSA4pSA4pSAICNpdGVtc1ZpZXcg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSQIOKUjOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUkCDilIzilIDilIAgI2dyb3VwZWRJdGVtc0Ryb3Bkb3duIOKUgOKUgOKUgOKUkCAgIHwgfFxuICAgICAqXHR8IHwgICB8ICAgICAgICN1bmdyb3VwZWRJdGVtcyAgICAgfCB8IFRvb2xiYXJTZXBhcmF0b3JWaWV3IHwgfCAgICAgICAgI2dyb3VwZWRJdGVtcyAgICAgICB8ICAgfCB8XG4gICAgICpcdHwgfCAgIOKUlOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgC3ilJgg4pSU4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSYIOKUlOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUmCAgIHwgfFxuICAgICAqXHR8IHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFwtLS0tLS0tLS0tIG9ubHkgd2hlbiB0b29sYmFyIGl0ZW1zIG92ZXJmbG93IC0tLS0tLS0tLyAgIHwgfFxuICAgICAqXHR8IOKUlOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUmCB8XG4gICAgICpcdOKUlOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUmFxuICAgICAqL1xuICAgIHByaXZhdGUgdG9vbGJhckl0ZW1zQ29tcG9zZSgpOiBUb29sYmFySXRlbXNDb21wb3NlUmV0dXJuIHtcbiAgICAgICAgY29uc3QgZ3JvdXBXaWR0aCA9IDMyO1xuICAgICAgICBjb25zdCBpdGVtczogVG9vbGJhckl0ZW1bXSA9IFtdO1xuICAgICAgICBjb25zdCBncm91cDogVG9vbGJhckl0ZW1bXSA9IFtdO1xuICAgICAgICBsZXQgZWxlbWVudFdpZHRoID0gdGhpcy5pc01vcmUgPyB0aGlzLmVsZW1lbnRXaWR0aCA6IG51bGw7XG4gICAgICAgIGxldCBpc1NwYWNlUmVtYWluaW5nID0gdHJ1ZTtcblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMudG9vbGJhckl0ZW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBpdGVtID0gdGhpcy50b29sYmFySXRlbXNbaV07XG4gICAgICAgICAgICBpZiAoIXRoaXMuaXNNb3JlKSB7XG4gICAgICAgICAgICAgICAgaXRlbXMucHVzaChpdGVtKTtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFpc1NwYWNlUmVtYWluaW5nKSB7XG4gICAgICAgICAgICAgICAgZ3JvdXAucHVzaChpdGVtKTtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgaXRlbVdpZHRoID0gdGhpcy5nZXRJdGVtV2lkdGgoaXRlbSk7XG4gICAgICAgICAgICBjb25zdCBvY2N1cHlXaWR0aCA9IGkgPT09IHRoaXMudG9vbGJhckl0ZW1zLmxlbmd0aCAtIDEgPyBpdGVtV2lkdGggOiBpdGVtV2lkdGggKyBncm91cFdpZHRoO1xuICAgICAgICAgICAgY29uc3QgYWxsb3dSZW5kZXIgPSBlbGVtZW50V2lkdGggJiYgZWxlbWVudFdpZHRoID49IG9jY3VweVdpZHRoO1xuXG4gICAgICAgICAgICBpZiAoYWxsb3dSZW5kZXIpIHtcbiAgICAgICAgICAgICAgICBpdGVtcy5wdXNoKGl0ZW0pO1xuICAgICAgICAgICAgICAgIGVsZW1lbnRXaWR0aCAtPSBpdGVtV2lkdGg7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IGlzRmlyc3RTcGxpdCA9IGdyb3VwLmxlbmd0aCA9PT0gMCAmJiBpdGVtLmtleSA9PT0gVG9vbGJhckFjdGlvblR5cGVzLnNwbGl0O1xuICAgICAgICAgICAgICAgIGlmICghaXNGaXJzdFNwbGl0KSB7XG4gICAgICAgICAgICAgICAgICAgIGlzU3BhY2VSZW1haW5pbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgZ3JvdXAucHVzaChpdGVtKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaXRlbXM6IHRoaXMucHVyZVRvb2xiYXJJdGVtcyhpdGVtcyksXG4gICAgICAgICAgICBncm91cFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHNwbGl0IHdpZHRoOiAxM3B4XG4gICAgICogaXRlbSB3aWR0aDogZGVmYXVsdCBpdGVtOiAzMnB4XG4gICAgICogZHJvcGRvd24gaXRlbTogNDhweFxuICAgICAqIGRlZmF1bHQgcGFkZGluZ1JpZ2h0OiA0cHhcbiAgICAgKi9cbiAgICBwcml2YXRlIGdldEl0ZW1XaWR0aChpdGVtOiBUb29sYmFySXRlbSkge1xuICAgICAgICBjb25zdCBwYWRkaW5nUmlnaHQgPSA0O1xuICAgICAgICBjb25zdCBkZWZhdWx0SXRlbVdpZHRoID0gMzI7XG4gICAgICAgIGNvbnN0IGljb25Ecm9wZG93bkl0ZW1XaWR0aCA9IDQ4O1xuICAgICAgICBjb25zdCB0ZXh0RHJvcGRvd25JdGVtV2lkdGggPSA3MDtcbiAgICAgICAgY29uc3QgZHJvcGRvd25BY3Rpb25JY29uV2lkdGggPSAxNjtcbiAgICAgICAgY29uc3Qgc3BsaXRXaWR0aCA9IDk7XG4gICAgICAgIGNvbnN0IGlzRHJvcGRvd25Db21wb25lbnQgPSBpdGVtPy50eXBlID09PSBUb29sYmFySXRlbVR5cGUuZHJvcGRvd247XG4gICAgICAgIGNvbnN0IGlzVXBkYXRlRHJvcGRvd25JdGVtV2lkdGggPSAhaXRlbT8ud2lkdGggJiYgaXNEcm9wZG93bkNvbXBvbmVudDtcblxuICAgICAgICBsZXQgaXRlbVdpZHRoID0gaXRlbT8ud2lkdGggPz8gZGVmYXVsdEl0ZW1XaWR0aDtcblxuICAgICAgICBpZiAoaXNVcGRhdGVEcm9wZG93bkl0ZW1XaWR0aCkge1xuICAgICAgICAgICAgaWYgKGl0ZW0/LmRyb3Bkb3duTW9kZSA9PT0gRHJvcGRvd25Nb2RlLmljb24pIHtcbiAgICAgICAgICAgICAgICBpdGVtV2lkdGggPSBpY29uRHJvcGRvd25JdGVtV2lkdGg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIWl0ZW0/LmRyb3Bkb3duTW9kZSB8fCBpdGVtPy5kcm9wZG93bk1vZGUgPT09IERyb3Bkb3duTW9kZS50ZXh0KSB7XG4gICAgICAgICAgICAgICAgaXRlbVdpZHRoID0gdGV4dERyb3Bkb3duSXRlbVdpZHRoO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGl0ZW0/LmlzSGlkZURyb3Bkb3duQWN0aW9uSWNvbikge1xuICAgICAgICAgICAgICAgIGl0ZW1XaWR0aCAtPSBkcm9wZG93bkFjdGlvbkljb25XaWR0aDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoaXRlbS5rZXkgPT09IFRvb2xiYXJBY3Rpb25UeXBlcy5zcGxpdCkge1xuICAgICAgICAgICAgaXRlbVdpZHRoID0gc3BsaXRXaWR0aDtcbiAgICAgICAgfVxuXG4gICAgICAgIGl0ZW1XaWR0aCArPSBwYWRkaW5nUmlnaHQ7XG5cbiAgICAgICAgcmV0dXJuIGl0ZW1XaWR0aDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBmaWx0ZXIgYWRqYWNlbnQgcmVwZWF0ZWQgZGl2aWRlcnNcbiAgICAgKiBAcGFyYW0ge1Rvb2xiYXJJdGVtW119IGl0ZW1zXG4gICAgICogQHJldHVybnNcbiAgICAgKiBAbWVtYmVyb2YgVGhlVG9vbGJhckNvbXBvbmVudFxuICAgICAqL1xuICAgIHB1cmVUb29sYmFySXRlbXMoaXRlbXM6IFRvb2xiYXJJdGVtW10pIHtcbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGl0ZW1zKSkge1xuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpdGVtcy5maWx0ZXIoKGEsIGkpID0+IHtcbiAgICAgICAgICAgIGlmIChpID4gMCAmJiBpdGVtc1tpIC0gMV0ua2V5ICE9PSBUb29sYmFyQWN0aW9uVHlwZXMuc3BsaXQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBhLmtleSAhPT0gVG9vbGJhckFjdGlvblR5cGVzLnNwbGl0O1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZVRvb2xiYXJJdGVtKGl0ZW06IFRvb2xiYXJJdGVtKSB7XG4gICAgICAgIGNvbnN0IHsgaWNvbkNvbXBvbmVudCwgdHlwZSwgZHJvcGRvd25Nb2RlLCBkcm9wZG93bkl0ZW1LZXksIGluY2x1ZGVzLCAuLi5hcmdzIH0gPSBpdGVtO1xuICAgICAgICBjb25zdCB2aWV3Q29tcG9uZW50ID0gdGhpcy52aWV3Q29tcG9uZW50VHlwZSh0eXBlKTtcbiAgICAgICAgY29uc3QgY29tcFJlZiA9IHRoaXMudG9vbGJhckNvbnRhaW5lci5jcmVhdGVDb21wb25lbnQ8VGhlQmFzZVRvb2xiYXJJdGVtPihpY29uQ29tcG9uZW50ID8gaWNvbkNvbXBvbmVudCA6IHZpZXdDb21wb25lbnQpO1xuXG4gICAgICAgIGNvbXBSZWYuaW5zdGFuY2UuZWRpdG9yID0gdGhpcy5lZGl0b3I7XG4gICAgICAgIGNvbXBSZWYuaW5zdGFuY2UudG9vbGJhckl0ZW0gPSBpdGVtO1xuICAgICAgICB0aGlzLmNvbXBvbmVudHMuc2V0KGl0ZW0ua2V5LCBjb21wUmVmKTtcbiAgICAgICAgaWYgKGl0ZW0udHlwZSA9PT0gVG9vbGJhckl0ZW1UeXBlLmRyb3Bkb3duKSB7XG4gICAgICAgICAgICBjb25zdCBkcm9wZG93blJlZiA9IGNvbXBSZWYgYXMgdW5rbm93biBhcyBDb21wb25lbnRSZWY8VGhlQmFzZVRvb2xiYXJEcm9wZG93bj47XG4gICAgICAgICAgICBkcm9wZG93blJlZi5pbnN0YW5jZS5kcm9wZG93bkl0ZW1LZXkgPSBpdGVtLmRyb3Bkb3duSXRlbUtleTtcbiAgICAgICAgICAgIGRyb3Bkb3duUmVmLmluc3RhbmNlLm1lbnVzID0gaW5jbHVkZXMgYXMgVG9vbGJhckl0ZW1bXTtcbiAgICAgICAgICAgIGRyb3Bkb3duUmVmLmluc3RhbmNlLm1vZGUgPSBkcm9wZG93bk1vZGU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZVRvb2xiYXJTcGxpdCgpIHtcbiAgICAgICAgY29uc3QgY29tcFJlZiA9IHRoaXMudG9vbGJhckNvbnRhaW5lci5jcmVhdGVDb21wb25lbnQoVGh5RGl2aWRlcik7XG4gICAgICAgIGNvbXBSZWYuaW5zdGFuY2UudGh5VmVydGljYWwgPSB0cnVlO1xuICAgICAgICBjb21wUmVmLmluc3RhbmNlLnRoeUNvbG9yID0gJ2xpZ2h0JztcbiAgICAgICAgY29tcFJlZi5sb2NhdGlvbi5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ214LTInKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZU1vcmVHcm91cChncm91cDogVG9vbGJhckl0ZW1bXSkge1xuICAgICAgICBpZiAoZ3JvdXAubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgY29uc3QgY29tcFJlZiA9IHRoaXMudG9vbGJhckNvbnRhaW5lci5jcmVhdGVDb21wb25lbnQodGhpcy50b29sYmFyR3JvdXApO1xuICAgICAgICAgICAgY29tcFJlZi5pbnN0YW5jZS5lZGl0b3IgPSB0aGlzLmVkaXRvcjtcbiAgICAgICAgICAgIGNvbXBSZWYuaW5zdGFuY2UubWVudXMgPSBncm91cDtcbiAgICAgICAgICAgIGNvbXBSZWYuaW5zdGFuY2UuaXRlbSA9IHRoaXMubW9yZUdyb3VwTWVudTtcbiAgICAgICAgICAgIHRoaXMuY29tcG9uZW50cy5zZXQodGhpcy5tb3JlR3JvdXBNZW51LmtleSwgY29tcFJlZik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHZpZXdDb21wb25lbnRUeXBlKHR5cGU6IFRvb2xiYXJJdGVtVHlwZSkge1xuICAgICAgICBpZiAodHlwZSA9PT0gVG9vbGJhckl0ZW1UeXBlLmRlZmF1bHQpIHtcbiAgICAgICAgICAgIHJldHVybiBUaGVUb29sYmFySXRlbTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZSA9PT0gVG9vbGJhckl0ZW1UeXBlLmRyb3Bkb3duKSB7XG4gICAgICAgICAgICByZXR1cm4gVGhlVG9vbGJhckRyb3Bkb3duO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBUaGVUb29sYmFySXRlbTtcbiAgICB9XG59XG4iLCI8bmctY29udGFpbmVyICN0b29sYmFyQ29udGFpbmVyPjwvbmctY29udGFpbmVyPlxuPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPG5nLXRlbXBsYXRlICpuZ0lmPVwiYWZ0ZXJUZW1wbGF0ZVwiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImFmdGVyVGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxuIl19
|
|
@@ -100,7 +100,7 @@ export class TheEditorComponent {
|
|
|
100
100
|
return;
|
|
101
101
|
}
|
|
102
102
|
if (isKeyHotkey('mod+a', event) && !event.defaultPrevented) {
|
|
103
|
-
this.handleSelectAll();
|
|
103
|
+
this.handleSelectAll(event);
|
|
104
104
|
}
|
|
105
105
|
};
|
|
106
106
|
this.onClick = (event) => {
|
|
@@ -380,8 +380,8 @@ export class TheEditorComponent {
|
|
|
380
380
|
mousedown(event) {
|
|
381
381
|
this.editor.mousedown(event);
|
|
382
382
|
}
|
|
383
|
-
handleSelectAll() {
|
|
384
|
-
let node;
|
|
383
|
+
handleSelectAll(event) {
|
|
384
|
+
let node = null;
|
|
385
385
|
if (!this.editor.selection) {
|
|
386
386
|
TheTransforms.setEndSelection(this.editor);
|
|
387
387
|
}
|
|
@@ -405,7 +405,15 @@ export class TheEditorComponent {
|
|
|
405
405
|
}
|
|
406
406
|
}
|
|
407
407
|
if (!node) {
|
|
408
|
-
|
|
408
|
+
let range = Editor.range(this.editor, []);
|
|
409
|
+
// If the first element is of block-card type,
|
|
410
|
+
// clicking delete does not trigger the underlying beforeinput event,
|
|
411
|
+
// resulting in ineffective deletion #WIK-15396.
|
|
412
|
+
if (this.editor.isBlockCard(this.editor.children[0])) {
|
|
413
|
+
const [anchor, focus] = Range.edges(range, { reverse: true });
|
|
414
|
+
range = { anchor, focus };
|
|
415
|
+
}
|
|
416
|
+
Transforms.select(this.editor, range);
|
|
409
417
|
}
|
|
410
418
|
event.preventDefault();
|
|
411
419
|
return;
|
|
@@ -498,4 +506,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImpor
|
|
|
498
506
|
type: ViewChild,
|
|
499
507
|
args: ['globalToolbar']
|
|
500
508
|
}] } });
|
|
501
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhY2thZ2VzL3NyYy9lZGl0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vcGFja2FnZXMvc3JjL2VkaXRvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBQ0gsdUJBQXVCLEVBRXZCLFNBQVMsRUFFVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLE1BQU0sRUFFTixLQUFLLEVBS0wsUUFBUSxFQUNSLE1BQU0sRUFFTixTQUFTLEVBRVQsVUFBVSxFQUNiLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxXQUFXLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRXhDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2pDLE9BQU8sRUFBYyxNQUFNLEVBQXNCLElBQUksRUFBRSxLQUFLLEVBQVEsVUFBVSxFQUFFLFlBQVksRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUM1RyxPQUFPLEVBQUUsYUFBYSxFQUF3QixXQUFXLEVBQUUsOEJBQThCLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlILE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxtQkFBbUIsRUFB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bUJBQ2dCLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsSUFBSSxXQUNQO3dCQUNMLElBQUk7d0JBQ0osT0FBTzt3QkFDUCxPQUFPO3dCQUNQLFdBQVc7d0JBQ1gsV0FBVzt3QkFDWCxXQUFXO3dCQUNYLGNBQWM7d0JBQ2QsZ0JBQWdCO3dCQUNoQixtQkFBbUI7d0JBQ25CLGFBQWE7cUJBQ2hCLGFBQ1U7d0JBQ1AsaUJBQWlCO3dCQUNqQjs0QkFDSSxPQUFPLEVBQUUsb0JBQW9COzRCQUM3QixRQUFRLEVBQUUsZUFBZTt5QkFDNUI7d0JBQ0Q7NEJBQ0ksT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsbUJBQW1CLENBQUM7NEJBQ2pELEtBQUssRUFBRSxJQUFJO3lCQUNkO3FCQUNKOzswQkF1RUksUUFBUTs7MEJBQUksTUFBTTsyQkFBQyx1QkFBdUI7eUNBcEV0QyxVQUFVO3NCQUFsQixLQUFLO2dCQUVHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUcsZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUVHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBRUcsVUFBVTtzQkFBbEIsS0FBSztnQkFFSSxTQUFTO3NCQUFsQixNQUFNO2dCQUVHLGFBQWE7c0JBQXRCLE1BQU07Z0JBRUcsZ0JBQWdCO3NCQUF6QixNQUFNO2dCQUVHLGtCQUFrQjtzQkFBM0IsTUFBTTtnQkFHUCxnQkFBZ0I7c0JBRGYsU0FBUzt1QkFBQyxrQkFBa0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBSS9DLG9CQUFvQjtzQkFEbkIsU0FBUzt1QkFBQyxzQkFBc0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkFJckUscUJBQXFCO3NCQURwQixTQUFTO3VCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ0NsYXNzLCBOZ0lmLCBOZ1N0eWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIERlc3Ryb3lSZWYsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5qZWN0LFxuICAgIEluamVjdG9yLFxuICAgIElucHV0LFxuICAgIE5nWm9uZSxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPcHRpb25hbCxcbiAgICBPdXRwdXQsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0NvbnRhaW5lclJlZixcbiAgICBmb3J3YXJkUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgaXNLZXlIb3RrZXkgfSBmcm9tICdpcy1ob3RrZXknO1xuaW1wb3J0IHsgVGh5SWNvblJlZ2lzdHJ5IH0gZnJvbSAnbmd4LXRldGh5cy9pY29uJztcbmltcG9ydCB7IFRoeUltYWdlR3JvdXAgfSBmcm9tICduZ3gtdGV0aHlzL2ltYWdlJztcbmltcG9ydCB7IGZyb21FdmVudCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRGVzY2VuZGFudCwgRWRpdG9yLCBFbGVtZW50LCBOb2RlRW50cnksIFBhdGgsIFJhbmdlLCBUZXh0LCBUcmFuc2Zvcm1zLCBjcmVhdGVFZGl0b3IgfSBmcm9tICdzbGF0ZSc7XG5pbXBvcnQgeyBBbmd1bGFyRWRpdG9yLCBET01SYW5nZSwgU2xhdGVFcnJvciwgU2xhdGVNb2R1bGUsIGRlZmF1bHRTY3JvbGxTZWxlY3Rpb25JbnRvVmlldywgd2l0aEFuZ3VsYXIgfSBmcm9tICdzbGF0ZS1hbmd1bGFyJztcbmltcG9ydCB7IHdpdGhIaXN0b3J5IH0gZnJvbSAnc2xhdGUtaGlzdG9yeSc7XG5pbXBvcnQgeyBUaGVJbmxpbmVUb29sYmFyLCBUaGVUZW1wbGF0ZSwgVGhlVGV4dCwgVGhlVG9vbGJhckdyb3VwIH0gZnJvbSAnLi9jb21wb25lbnRzJztcbmltcG9ydCB7IFRoZVRvb2xiYXJDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvdG9vbGJhci90b29sYmFyLmNvbXBvbmVudCc7XG5pbXBvcnQge1xuICAgIENMSVBCT0FSRF9GT1JNQVRfS0VZLFxuICAgIERlZmF1bHRHbG9iYWxUb29sYmFyRGVmaW5pdGlvbixcbiAgICBEZWZhdWx0SW5saW5lVG9vbGJhckRlZmluaXRpb24sXG4gICAgRGVmYXVsdFBsdWdpbk1lbnUsXG4gICAgTWFya1R5cGVzLFxuICAgIFRoZVRvb2xiYXJHcm91cFRva2VuLFxuICAgIGluaXRpYWxpemVEZWZhdWx0TWVudUljb25zXG59IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IGNyZWF0ZVRvb2xiYXIsIGdldFBsdWdpbk9wdGlvbnMsIHdpdGhUaGVpYSB9IGZyb20gJy4vY29yZSc7XG5pbXBvcnQge1xuICAgIFBsdWdpbktleXMsXG4gICAgVEhFX01PREVfVE9LRU4sXG4gICAgVEhFX1BSRVNFVF9DT05GSUdfVE9LRU4sXG4gICAgVGhlRGF0YU1vZGUsXG4gICAgVGhlRWRpdG9yLFxuICAgIFRoZU1vZGUsXG4gICAgVGhlT3B0aW9ucyxcbiAgICBUaGVQcmVzZXRDb25maWcsXG4gICAgVG9vbGJhckVudGl0eSxcbiAgICB0eXBlIERvbUV2ZW50RGF0YUluZm9cbn0gZnJvbSAnLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IFRoZVBsdWdpbiB9IGZyb20gJy4vaW50ZXJmYWNlcy9wbHVnaW5zL3BsdWdpbnMnO1xuaW1wb3J0IHsgaW50ZXJuYWxQbHVnaW5zIH0gZnJvbSAnLi9wbHVnaW5zJztcbmltcG9ydCB7IFRoZVF1aWNrSW5zZXJ0IH0gZnJvbSAnLi9wbHVnaW5zL3F1aWNrLWluc2VydC9jb21wb25lbnRzL3F1aWNrLWluc2VydC5jb21wb25lbnQnO1xuaW1wb3J0IHsgUXVpY2tJbnNlcnRQbHVnaW5PcHRpb25zIH0gZnJvbSAnLi9wbHVnaW5zL3F1aWNrLWluc2VydC9xdWljay1pbnNlcnQucGx1Z2luJztcbmltcG9ydCAqIGFzIFRoZVF1ZXJpZXMgZnJvbSAnLi9xdWVyaWVzJztcbmltcG9ydCB7IFRoZUNvbnRleHRTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9jb250ZXh0LnNlcnZpY2UnO1xuaW1wb3J0IHsgc2hvcnRjdXRzIH0gZnJvbSAnLi9zaG9ydGN1dHMnO1xuaW1wb3J0ICogYXMgVGhlVHJhbnNmb3JtcyBmcm9tICcuL3RyYW5zZm9ybXMnO1xuaW1wb3J0IHsgVEhFX0VESVRPUl9QUkVWSU9VU19TRUxFQ1RJT04sIGF1dG9Gb2N1cywgZGF0YURlc2VyaWFsaXplLCBkYXRhU2VyaWFsaXppbmcsIGlkQ3JlYXRvciwgc2V0RWRpdG9yVVVJRCB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgaXNFcXVhbCB9IGZyb20gJy4vdXRpbHMvbG9kYXNoJztcbmltcG9ydCB7IG5vcm1hbGl6ZVZhbHVlIH0gZnJvbSAnLi91dGlscy9ub3JtYWxpemUnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3RoZS1lZGl0b3IsIHRoZUVkaXRvcicsXG4gICAgdGVtcGxhdGVVcmw6ICdlZGl0b3IuY29tcG9uZW50Lmh0bWwnLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICd0aGUtZWRpdG9yJyxcbiAgICAgICAgJ1tjbGFzcy50aGUtZWRpdG9yLXJlYWRvbmx5XSc6ICdlZGl0b3Iub3B0aW9ucz8ucmVhZG9ubHknLFxuICAgICAgICAnW2NsYXNzLnRoZS1tb2JpbGUtZWRpdG9yXSc6ICdpc01vYmlsZU1vZGUnXG4gICAgfSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgTmdJZixcbiAgICAgICAgTmdTdHlsZSxcbiAgICAgICAgTmdDbGFzcyxcbiAgICAgICAgRm9ybXNNb2R1bGUsXG4gICAgICAgIFNsYXRlTW9kdWxlLFxuICAgICAgICBUaGVUZW1wbGF0ZSxcbiAgICAgICAgVGhlUXVpY2tJbnNlcnQsXG4gICAgICAgIFRoZUlubGluZVRvb2xiYXIsXG4gICAgICAgIFRoZVRvb2xiYXJDb21wb25lbnQsXG4gICAgICAgIFRoeUltYWdlR3JvdXBcbiAgICBdLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICBUaGVDb250ZXh0U2VydmljZSxcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogVGhlVG9vbGJhckdyb3VwVG9rZW4sXG4gICAgICAgICAgICB1c2VWYWx1ZTogVGhlVG9vbGJhckdyb3VwXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gVGhlRWRpdG9yQ29tcG9uZW50KSxcbiAgICAgICAgICAgIG11bHRpOiB0cnVlXG4gICAgICAgIH1cbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIFRoZUVkaXRvckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICAgIEBJbnB1dCgpIHRoZU9wdGlvbnM6IFRoZU9wdGlvbnM7XG5cbiAgICBASW5wdXQoKSB0aGVQbHVnaW5zOiBUaGVQbHVnaW5bXSA9IFtdO1xuXG4gICAgQElucHV0KCkgdGhlR2xvYmFsVG9vbGJhcj86IFRoZVRvb2xiYXJDb21wb25lbnQ7XG5cbiAgICBASW5wdXQoKSB0aGVEZWNvcmF0ZTogKGVkaXRvcjogVGhlRWRpdG9yLCBub2RlRW50cnk6IE5vZGVFbnRyeSkgPT4gUmFuZ2VbXTtcblxuICAgIEBJbnB1dCgpIHRoZU9uRXJyb3I/OiAoZXJyb3I6IFNsYXRlRXJyb3IpID0+IHZvaWQ7XG5cbiAgICBAT3V0cHV0KCkgdGhlT25TYXZlOiBFdmVudEVtaXR0ZXI8RGVzY2VuZGFudFtdPiA9IG5ldyBFdmVudEVtaXR0ZXI8RGVzY2VuZGFudFtdPigpO1xuXG4gICAgQE91dHB1dCgpIHRoZU9uRE9NRXZlbnQ6IEV2ZW50RW1pdHRlcjx7IG5hdGl2ZUV2ZW50OiBFdmVudDsgZGF0YT86IERvbUV2ZW50RGF0YUluZm8gfT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KCkgdGhlRWRpdG9yQ3JlYXRlZDogRXZlbnRFbWl0dGVyPEVkaXRvcj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KCkgdGhlVXBsb2FkaW5nU3RhdHVzOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7IC8vIHRydWUg5LiK5Lyg57uT5p2fIGZhbHNlIOS4iuS8oOS4rVxuXG4gICAgQFZpZXdDaGlsZCgndGVtcGxhdGVJbnN0YW5jZScsIHsgc3RhdGljOiB0cnVlIH0pXG4gICAgdGVtcGxhdGVJbnN0YW5jZTogVGhlVGVtcGxhdGU7XG5cbiAgICBAVmlld0NoaWxkKCd0aGVFZGl0YWJsZUNvbnRhaW5lcicsIHsgc3RhdGljOiB0cnVlLCByZWFkOiBFbGVtZW50UmVmIH0pXG4gICAgdGhlRWRpdGFibGVDb250YWluZXI6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gICAgQFZpZXdDaGlsZCgnZ2xvYmFsVG9vbGJhcicpXG4gICAgZ2xvYmFsVG9vbGJhckluc3RhbmNlOiBUaGVUb29sYmFyQ29tcG9uZW50O1xuXG4gICAgdG9vbGJhckVudGl0eTogVG9vbGJhckVudGl0eTtcblxuICAgIGVkaXRvcjogVGhlRWRpdG9yO1xuXG4gICAgZWRpdG9yVmFsdWU6IERlc2NlbmRhbnRbXTtcblxuICAgIGdsb2JhbFRvb2xiYXJDbGFzczogc3RyaW5nW107XG5cbiAgICBpc01vYmlsZU1vZGU6IGJvb2xlYW47XG5cbiAgICB2aXNpYmxlUXVpY2tJbnNlcnRQbHVzID0gdHJ1ZTtcblxuICAgIGVsZW1lbnRUb0h0bWw6IFdlYWtNYXA8RWxlbWVudCwgc3RyaW5nPiA9IG5ldyBXZWFrTWFwKCk7XG5cbiAgICBkZWNvcmF0ZTogKG5vZGVFbnRyeTogTm9kZUVudHJ5KSA9PiBSYW5nZVtdO1xuXG4gICAgZ2V0IG9wdGlvbnMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmVkaXRvcj8ub3B0aW9ucztcbiAgICB9XG5cbiAgICBnZXQgdGhlR2xvYmFsVG9vbGJhckluc3RhbmNlKCk6IFRoZVRvb2xiYXJDb21wb25lbnQge1xuICAgICAgICByZXR1cm4gdGhpcy50aGVHbG9iYWxUb29sYmFyID8gdGhpcy50aGVHbG9iYWxUb29sYmFyIDogdGhpcy5nbG9iYWxUb29sYmFySW5zdGFuY2U7XG4gICAgfVxuXG4gICAgZ2V0IG1heEhlaWdodCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucz8ubWF4SGVpZ2h0ID8gYCR7dGhpcy5vcHRpb25zPy5tYXhIZWlnaHR9cHhgIDogbnVsbDtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uQ2hhbmdlQ2FsbGJhY2s6IChfOiBhbnkpID0+IHZvaWQgPSAoKSA9PiB7fTtcblxuICAgIHByaXZhdGUgb25Ub3VjaGVkQ2FsbGJhY2s6ICgpID0+IHZvaWQgPSAoKSA9PiB7fTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgZGVzdHJveVJlZjogRGVzdHJveVJlZixcbiAgICAgICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvcixcbiAgICAgICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcbiAgICAgICAgcHJpdmF0ZSB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgICAgICBwcml2YXRlIHRoZUNvbnRleHRTZXJ2aWNlOiBUaGVDb250ZXh0U2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBpY29uUmVnaXN0cnk6IFRoeUljb25SZWdpc3RyeSxcbiAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChUSEVfUFJFU0VUX0NPTkZJR19UT0tFTikgcHJpdmF0ZSBwcmVzZXRDb25maWc6IFRoZVByZXNldENvbmZpZ1xuICAgICkge31cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLmluaXRpYWxpemUoKTtcbiAgICAgICAgdGhpcy5vbkVycm9ySGFuZGxlcigpO1xuICAgICAgICBpbml0aWFsaXplRGVmYXVsdE1lbnVJY29ucyh0aGlzLmljb25SZWdpc3RyeSk7XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgICAgICBjb25zdCBvcHRpb25zID0gY2hhbmdlcy50aGVPcHRpb25zO1xuXG4gICAgICAgIGlmIChvcHRpb25zICYmICFvcHRpb25zLmZpcnN0Q2hhbmdlKSB7XG4gICAgICAgICAgICB0aGlzLmluaXRpYWxpemVPcHRpb25zKG9wdGlvbnMuY3VycmVudFZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvcHRpb25zICYmICFvcHRpb25zLmZpcnN0Q2hhbmdlICYmICFpc0VxdWFsKG9wdGlvbnMuY3VycmVudFZhbHVlPy50b29sYmFyLCBvcHRpb25zLnByZXZpb3VzVmFsdWU/LnRvb2xiYXIpKSB7XG4gICAgICAgICAgICB0aGlzLnRvb2xiYXJDYWxjdWxhdGUoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLmN1cnJlbnRWYWx1ZT8ucmVhZG9ubHkgIT09IG9wdGlvbnMucHJldmlvdXNWYWx1ZT8ucmVhZG9ubHkpIHtcbiAgICAgICAgICAgIHRoaXMuYXBwbHlBdXRvRm9jdXMoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2hhbmdlc1sndGhlRGVjb3JhdGUnXSkge1xuICAgICAgICAgICAgdGhpcy5nZW5lcmF0ZURlY29yYXRlKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuZWRpdG9yPy5zZWxlY3Rpb24gJiYgKG9wdGlvbnM/LmN1cnJlbnRWYWx1ZT8ucmVhZG9ubHkgfHwgb3B0aW9ucz8uY3VycmVudFZhbHVlPy5kaXNhYmxlZCkpIHtcbiAgICAgICAgICAgIFRyYW5zZm9ybXMuZGVzZWxlY3QodGhpcy5lZGl0b3IpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIFRIRV9FRElUT1JfUFJFVklPVVNfU0VMRUNUSU9OLmRlbGV0ZSh0aGlzLmVkaXRvcik7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0aWFsaXplKCkge1xuICAgICAgICBjb25zdCBwbHVnaW5zID0gdGhpcy5nZXRQbHVnaW5zKCk7XG4gICAgICAgIHRoaXMuZWRpdG9yID0gd2l0aFRoZWlhKHdpdGhIaXN0b3J5KHdpdGhBbmd1bGFyKGNyZWF0ZUVkaXRvcigpLCBDTElQQk9BUkRfRk9STUFUX0tFWSkpLCBwbHVnaW5zKTtcbiAgICAgICAgc2V0RWRpdG9yVVVJRCh0aGlzLmVkaXRvciwgaWRDcmVhdG9yKCkpO1xuICAgICAgICB0aGlzLmluaXRpYWxpemVNb2JpbGVNb2RlKCk7XG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZU9wdGlvbnModGhpcy50aGVPcHRpb25zKTtcbiAgICAgICAgdGhpcy5pbml0aWFsaXplQ29udGV4dCgpO1xuICAgICAgICB0aGlzLnRvb2xiYXJDYWxjdWxhdGUoKTtcbiAgICAgICAgdGhpcy5pbml0aWFsaXplUXVpY2tJbnNlcnQoKTtcbiAgICAgICAgdGhpcy5pbml0aWFsaXplRXZlbnRzKCk7XG4gICAgICAgIHRoaXMuZ2VuZXJhdGVEZWNvcmF0ZSgpO1xuICAgICAgICB0aGlzLnN1YnNjcmliZVVwbG9hZGluZ1N0YXR1cygpO1xuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgLy8gWW91IG5lZWQgdG8gd2FpdCBmb3IgdGhlIGVkaXRvciByZW5kZXJpbmcgdG8gY29tcGxldGVcbiAgICAgICAgICAgIC8vIGJlZm9yZSB0cmlnZ2VyaW5nIHRoZSBleHRlcm5hbCB0b29sYmFyIGFzc2lnbm1lbnQgZGV0ZWN0aW9uXG4gICAgICAgICAgICB0aGlzLmluaXRpYWxpemVHbG9iYWxUb29sYmFyKCk7XG4gICAgICAgICAgICB0aGlzLnRoZUVkaXRvckNyZWF0ZWQuZW1pdCh0aGlzLmVkaXRvcik7XG4gICAgICAgICAgICB0aGlzLmFwcGx5QXV0b0ZvY3VzKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdGlhbGl6ZU9wdGlvbnModGhlT3B0aW9uczogVGhlT3B0aW9ucykge1xuICAgICAgICBjb25zdCBwcmVzZXRNb2RlID0gdGhpcy5wcmVzZXRDb25maWc/Lm9wdGlvbnM/Lm1vZGU7XG4gICAgICAgIGNvbnN0IHByZXNldEF1dG9Ob3JtYWxpemUgPSB0aGlzLnByZXNldENvbmZpZz8ub3B0aW9ucz8uYXV0b05vcm1hbGl6ZTtcbiAgICAgICAgY29uc3QgcHJlc2V0SW5saW5lVG9vbGJhclZpc2libGUgPSB0aGlzLnByZXNldENvbmZpZz8ub3B0aW9ucz8uaW5saW5lVG9vbGJhclZpc2libGU7XG4gICAgICAgIGNvbnN0IHByZXNldE1lbnUgPSB0aGlzLnByZXNldENvbmZpZz8ub3B0aW9ucz8ubWVudTtcbiAgICAgICAgY29uc3QgcHJlc2V0VG9vbGJhckFsaWduID0gdGhpcy5wcmVzZXRDb25maWc/Lm9wdGlvbnM/LnRvb2xiYXI/LmFsaWduO1xuICAgICAgICBjb25zdCBwcmVzZXRHbG9iYWxUb29sYmFyID0gdGhpcy5wcmVzZXRDb25maWc/Lm9wdGlvbnM/LnRvb2xiYXI/Lmdsb2JhbDtcbiAgICAgICAgY29uc3QgcHJlc2V0SW5saW5lVG9vbGJhciA9IHRoaXMucHJlc2V0Q29uZmlnPy5vcHRpb25zPy50b29sYmFyPy5pbmxpbmU7XG4gICAgICAgIGNvbnN0IG9wdGlvbnNHbG9iYWxUb29sYmFyID0gdGhlT3B0aW9ucz8udG9vbGJhcj8uZ2xvYmFsO1xuICAgICAgICBjb25zdCBvcHRpb25zSW5saW5lVG9vbGJhciA9IHRoZU9wdGlvbnM/LnRvb2xiYXI/LmlubGluZTtcblxuICAgICAgICBjb25zdCBvcHRpb25zOiBUaGVPcHRpb25zID0ge1xuICAgICAgICAgICAgcmVhZG9ubHk6IGZhbHNlLFxuICAgICAgICAgICAgbmVlZGVkU2Nyb2xsSW50b1ZpZXc6ICgpID0+IHRydWUsXG4gICAgICAgICAgICAuLi50aGVPcHRpb25zLFxuICAgICAgICAgICAgYXV0b05vcm1hbGl6ZTogdGhlT3B0aW9ucz8uYXV0b05vcm1hbGl6ZSA/PyBwcmVzZXRBdXRvTm9ybWFsaXplID8/IGZhbHNlLFxuICAgICAgICAgICAgbW9kZTogdGhlT3B0aW9ucz8ubW9kZSA/PyBwcmVzZXRNb2RlID8/IFRoZURhdGFNb2RlLmh0bWwsXG4gICAgICAgICAgICBpbmxpbmVUb29sYmFyVmlzaWJsZTogdGhlT3B0aW9ucz8uaW5saW5lVG9vbGJhclZpc2libGUgPz8gcHJlc2V0SW5saW5lVG9vbGJhclZpc2libGUsXG4gICAgICAgICAgICBtZW51OiB0aGVPcHRpb25zPy5tZW51ID8/IHByZXNldE1lbnUgPz8gRGVmYXVsdFBsdWdpbk1lbnUsXG4gICAgICAgICAgICB0b29sYmFyOiB7XG4gICAgICAgICAgICAgICAgYWxpZ246IHRoZU9wdGlvbnM/LnRvb2xiYXI/LmFsaWduID8/IHByZXNldFRvb2xiYXJBbGlnbixcbiAgICAgICAgICAgICAgICBnbG9iYWw6IG9wdGlvbnNHbG9iYWxUb29sYmFyID8/IHByZXNldEdsb2JhbFRvb2xiYXIgPz8gRGVmYXVsdEdsb2JhbFRvb2xiYXJEZWZpbml0aW9uLFxuICAgICAgICAgICAgICAgIGlubGluZTogb3B0aW9uc0lubGluZVRvb2xiYXIgPz8gcHJlc2V0SW5saW5lVG9vbGJhciA/PyBEZWZhdWx0SW5saW5lVG9vbGJhckRlZmluaXRpb25cbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLmVkaXRvci5vcHRpb25zID0gb3B0aW9ucztcbiAgICAgICAgdGhpcy5lZGl0b3IuZGlzYWJsZWQgPSB0aGVPcHRpb25zPy5kaXNhYmxlZDtcbiAgICAgICAgdGhpcy5lZGl0b3IuZXh0cmFFbGVtZW50T3B0aW9ucyA9IG9wdGlvbnM/LmV4dHJhRWxlbWVudE9wdGlvbnM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0aWFsaXplQ29udGV4dCgpIHtcbiAgICAgICAgdGhpcy50aGVDb250ZXh0U2VydmljZS5pbml0aWFsaXplKHtcbiAgICAgICAgICAgIGVkaXRvcjogdGhpcy5lZGl0b3IsXG4gICAgICAgICAgICBuYXRpdmVFbGVtZW50OiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICAgIHZpZXdDb250YWluZXJSZWY6IHRoaXMudmlld0NvbnRhaW5lclJlZlxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFBsdWdpbnMoKSB7XG4gICAgICAgIGNvbnN0IGRlZmF1bHRQbHVnaW5zID0gaW50ZXJuYWxQbHVnaW5zKCk7XG4gICAgICAgIGNvbnN0IHByZXNldFBsdWdpbnMgPSB0aGlzLnByZXNldENvbmZpZz8ucGx1Z2lucyA/PyBbXTtcbiAgICAgICAgY29uc3QgYXBwbHlQcmVzZXRQbHVnaW5zID0gcHJlc2V0UGx1Z2lucy5maWx0ZXIocHJlc2V0UGx1Z2luID0+ICF0aGlzLnRoZVBsdWdpbnMuc29tZShwbHVnaW4gPT4gcHJlc2V0UGx1Z2luLmtleSA9PT0gcGx1Z2luLmtleSkpO1xuICAgICAgICByZXR1cm4gWy4uLmRlZmF1bHRQbHVnaW5zLCAuLi5hcHBseVByZXNldFBsdWdpbnMsIC4uLnRoaXMudGhlUGx1Z2luc107XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0aWFsaXplTW9iaWxlTW9kZSgpIHtcbiAgICAgICAgY29uc3QgbW9kZUNvbmZpZyA9IHRoaXMuaW5qZWN0b3IuZ2V0KFRIRV9NT0RFX1RPS0VOKTtcbiAgICAgICAgdGhpcy5pc01vYmlsZU1vZGUgPSBtb2RlQ29uZmlnICYmIG1vZGVDb25maWcubW9kZSA9PT0gVGhlTW9kZS5tb2JpbGU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB0b29sYmFyQ2FsY3VsYXRlKCkge1xuICAgICAgICBjb25zdCBnbG9iYWxUb29sYmFyID0gdGhpcy5vcHRpb25zPy50b29sYmFyLmdsb2JhbDtcbiAgICAgICAgY29uc3QgaW5saW5lVG9vbGJhciA9IHRoaXMub3B0aW9ucz8udG9vbGJhcj8uaW5saW5lO1xuICAgICAgICBjb25zdCB7IGdsb2JhbFRvb2xiYXJDbGFzcywgdG9vbGJhckVudGl0eSB9ID0gY3JlYXRlVG9vbGJhcih0aGlzLmVkaXRvciwgZ2xvYmFsVG9vbGJhciwgaW5saW5lVG9vbGJhcik7XG4gICAgICAgIHRoaXMuZ2xvYmFsVG9vbGJhckNsYXNzID0gZ2xvYmFsVG9vbGJhckNsYXNzO1xuICAgICAgICB0aGlzLnRvb2xiYXJFbnRpdHkgPSB0b29sYmFyRW50aXR5O1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdGlhbGl6ZUdsb2JhbFRvb2xiYXIoKSB7XG4gICAgICAgIGlmICh0aGlzLnRoZUdsb2JhbFRvb2xiYXIpIHtcbiAgICAgICAgICAgIHRoaXMudGhlR2xvYmFsVG9vbGJhckluc3RhbmNlLmVkaXRvciA9IHRoaXMuZWRpdG9yO1xuICAgICAgICAgICAgdGhpcy50aGVHbG9iYWxUb29sYmFySW5zdGFuY2UudG9vbGJhckl0ZW1zID0gdGhpcy50b29sYmFyRW50aXR5Lmdsb2JhbDtcbiAgICAgICAgICAgIHRoaXMudGhlR2xvYmFsVG9vbGJhckluc3RhbmNlLmNvbnRhaW5lckNsYXNzID0gdGhpcy5nbG9iYWxUb29sYmFyQ2xhc3M7XG4gICAgICAgICAgICB0aGlzLnRoZUdsb2JhbFRvb2xiYXJJbnN0YW5jZS5hbGlnbiA9IHRoaXMub3B0aW9ucz8udG9vbGJhcj8uYWxpZ247XG4gICAgICAgICAgICB0aGlzLnRoZUdsb2JhbFRvb2xiYXJJbnN0YW5jZS5zZXRUb29sYmFyQ2xhc3MoKTtcbiAgICAgICAgICAgIHRoaXMudGhlR2xvYmFsVG9vbGJhckluc3RhbmNlLnJlbmRlclRvb2xiYXJWaWV3KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRpYWxpemVRdWlja0luc2VydCgpIHtcbiAgICAgICAgY29uc3QgcXVpY2tJbnNlcnRQbHVnaW4gPSBnZXRQbHVnaW5PcHRpb25zPFF1aWNrSW5zZXJ0UGx1Z2luT3B0aW9ucz4odGhpcy5lZGl0b3IsIFBsdWdpbktleXMucXVpY2tJbnNlcnQpO1xuICAgICAgICBpZiAocXVpY2tJbnNlcnRQbHVnaW4uZGlzYWJsZWQgfHwgcXVpY2tJbnNlcnRQbHVnaW4uZGlzYWJsZWRQbHVzKSB7XG4gICAgICAgICAgICB0aGlzLnZpc2libGVRdWlja0luc2VydFBsdXMgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdGlhbGl6ZUV2ZW50cygpIHtcbiAgICAgICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICAgICAgZnJvbUV2ZW50PE1vdXNlRXZlbnQ+KGRvY3VtZW50LCAnbW91c2Vkb3duJylcbiAgICAgICAgICAgICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmVkaXRvci5nbG9iYWxNb3VzZWRvd24oZXZlbnQpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN1YnNjcmliZVVwbG9hZGluZ1N0YXR1cygpIHtcbiAgICAgICAgdGhpcy50aGVDb250ZXh0U2VydmljZS51cGxvYWRpbmdTdGF0dXMkLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpLnN1YnNjcmliZShpc1VwbG9hZGluZyA9PiB7XG4gICAgICAgICAgICBpZiAoaXNVcGxvYWRpbmcpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRoZVVwbG9hZGluZ1N0YXR1cy5lbWl0KHRydWUpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy50aGVDb250ZXh0U2VydmljZS51cGxvYWRpbmdGaWxlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50aGVVcGxvYWRpbmdTdGF0dXMuZW1pdChmYWxzZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFwcGx5QXV0b0ZvY3VzKCkge1xuICAgICAgICBpZiAoIXRoaXMub3B0aW9ucz8uZGlzYWJsZWQgJiYgIXRoaXMub3B0aW9ucz8ucmVhZG9ubHkpIHtcbiAgICAgICAgICAgIGF1dG9Gb2N1cyh0aGlzLmVkaXRvciwgdGhpcy5vcHRpb25zPy5hdXRvRm9jdXMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc0ZpcnN0V3JpdGVWYWx1ZSA9IHRydWU7XG5cbiAgICB3cml0ZVZhbHVlKHZhbHVlOiBzdHJpbmcgfCBEZXNjZW5kYW50W10pIHtcbiAgICAgICAgaWYgKHRoaXMuaXNGaXJzdFdyaXRlVmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuaXNGaXJzdFdyaXRlVmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkYXRhID0gZGF0YURlc2VyaWFsaXplKHRoaXMuZWRpdG9yLm9wdGlvbnM/Lm1vZGUsIHZhbHVlKTtcbiAgICAgICAgLy8gZGF0YS1kZXNlcmlhbGl6ZVxuICAgICAgICB0aGlzLmVkaXRvclZhbHVlID0gZGF0YTtcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIGlmICghdGhpcy5vcHRpb25zLnJlYWRvbmx5KSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoQW5ndWxhckVkaXRvci5pc0ZvY3VzZWQodGhpcy5lZGl0b3IpICYmIHRoaXMuZWRpdG9yLnNlbGVjdGlvbikge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3Rpb24gPSB0aGlzLmVkaXRvci5zZWxlY3Rpb247XG4gICAgICAgICAgICAgICAgICAgIFRyYW5zZm9ybXMuZGVzZWxlY3QodGhpcy5lZGl0b3IpO1xuICAgICAgICAgICAgICAgICAgICBUcmFuc2Zvcm1zLnNlbGVjdCh0aGlzLmVkaXRvciwgc2VsZWN0aW9uKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMuYXV0b05vcm1hbGl6ZSkge1xuICAgICAgICAgICAgICAgIG5vcm1hbGl6ZVZhbHVlKHRoaXMuZWRpdG9yLCBkYXRhKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSkge1xuICAgICAgICB0aGlzLm9uQ2hhbmdlQ2FsbGJhY2sgPSBmbjtcbiAgICB9XG5cbiAgICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KSB7XG4gICAgICAgIHRoaXMub25Ub3VjaGVkQ2FsbGJhY2sgPSBmbjtcbiAgICB9XG5cbiAgICBzY3JvbGxTZWxlY3Rpb25JbnRvVmlldyA9IChlOiBUaGVFZGl0b3IsIGRvbVJhbmdlOiBET01SYW5nZSkgPT4ge1xuICAgICAgICBjb25zdCB7IG5lZWRlZFNjcm9sbEludG9WaWV3IH0gPSBlLm9wdGlvbnM7XG4gICAgICAgIGlmIChuZWVkZWRTY3JvbGxJbnRvVmlldyAmJiAhbmVlZGVkU2Nyb2xsSW50b1ZpZXcodGhpcy5lZGl0b3IpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgZGVmYXVsdFNjcm9sbFNlbGVjdGlvbkludG9WaWV3KGUsIGRvbVJhbmdlKTtcbiAgICB9O1xuXG4gICAgdmFsdWVDaGFuZ2UodmFsdWU6IERlc2NlbmRhbnRbXSkge1xuICAgICAgICB0aGlzLnRoZUdsb2JhbFRvb2xiYXJJbnN0YW5jZT8uc2VsZWN0aW9uQ2hhbmdlKHRoaXMuZWRpdG9yKTtcblxuICAgICAgICBpZiAodGhpcy5lZGl0b3JWYWx1ZSA9PT0gdmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmVkaXRvclZhbHVlID0gdmFsdWU7XG5cbiAgICAgICAgLy8gc2VyaWFsaXppbmdcbiAgICAgICAgbGV0IG5ld1ZhbHVlID0gdGhpcy5zZXJpYWxpemluZ1ZhbHVlKHZhbHVlKTtcbiAgICAgICAgdGhpcy5vbkNoYW5nZUNhbGxiYWNrKG5ld1ZhbHVlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNlcmlhbGl6aW5nVmFsdWUodmFsdWU6IERlc2NlbmRhbnRbXSk6IHN0cmluZyB8IERlc2NlbmRhbnRbXSB7XG4gICAgICAgIGNvbnN0IG1vZGUgPSB0aGlzLm9wdGlvbnM/Lm1vZGU7XG4gICAgICAgIGlmIChtb2RlID09PSBUaGVEYXRhTW9kZS5odG1sKSB7XG4gICAgICAgICAgICBsZXQgaHRtbFZhbHVlID0gJyc7XG4gICAgICAgICAgICBjb25zdCBpc0VtcHR5Q29udGVudCA9IFRoZVF1ZXJpZXMuaXNFbXB0eUNvbnRlbnQodmFsdWUpO1xuICAgICAgICAgICAgdmFsdWUuZm9yRWFjaCgoZWxlbWVudDogRWxlbWVudCkgPT4ge1xuICAgICAgICAgICAgICAgIGxldCBlbGVtZW50SHRtbCA9IHRoaXMuZWxlbWVudFRvSHRtbC5nZXQoZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgaWYgKGVsZW1lbnRIdG1sID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gc2VyaWFsaXppbmdcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudEh0bWwgPSBkYXRhU2VyaWFsaXppbmcobW9kZSwgW2VsZW1lbnRdKSBhcyBzdHJpbmc7XG4gICAgICAgICAgICAgICAgICAgIGh0bWxWYWx1ZSArPSBlbGVtZW50SHRtbDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50VG9IdG1sLnNldChlbGVtZW50LCBlbGVtZW50SHRtbCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaHRtbFZhbHVlICs9IGVsZW1lbnRIdG1sO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gaXNFbXB0eUNvbnRlbnQgPyAnJyA6IGh0bWxWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvbkVycm9ySGFuZGxlcigpIHtcbiAgICAgICAgdGhpcy5lZGl0b3Iub25FcnJvciA9IChlcnJvckRhdGE6IFNsYXRlRXJyb3IpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLnRoZU9uRXJyb3IpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRoZU9uRXJyb3IoZXJyb3JEYXRhKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZXJyb3JEYXRhLm5hdGl2ZUVycm9yKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvckRhdGEubmF0aXZlRXJyb3IpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHJlbmRlckVsZW1lbnQgPSAoZWxlbWVudDogRWxlbWVudCkgPT4ge1xuICAgICAgICBjb25zdCB0ZW1wbGF0ZSA9IHRoaXMudGVtcGxhdGVJbnN0YW5jZS5yZW5kZXJFbGVtZW50KGVsZW1lbnQpO1xuICAgICAgICBjb25zdCBjb21wb25lbnQgPSB0aGlzLmVkaXRvci5yZW5kZXJFbGVtZW50KGVsZW1lbnQpO1xuICAgICAgICByZXR1cm4gY29tcG9uZW50ID8gY29tcG9uZW50IDogdGVtcGxhdGU7XG4gICAgfTtcblxuICAgIHJlbmRlckxlYWYgPSAodGV4dDogVGV4dCkgPT4ge1xuICAgICAgICBjb25zdCBsZWFmID0gdGhpcy5lZGl0b3IucmVuZGVyTGVhZih0ZXh0KTtcbiAgICAgICAgcmV0dXJuIGxlYWYgPyBsZWFmIDogbnVsbDtcbiAgICB9O1xuXG4gICAgcmVuZGVyVGV4dCA9ICh0ZXh0OiBUZXh0KSA9PiB7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIE1hcmtUeXBlcykge1xuICAgICAgICAgICAgaWYgKHRleHRbTWFya1R5cGVzW2tleV1dKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFRoZVRleHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRleHQudGV4dC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBwcml2YXRlIGdlbmVyYXRlRGVjb3JhdGUoKSB7XG4gICAgICAgIHRoaXMuZGVjb3JhdGUgPSAobm9kZUVudHJ5OiBOb2RlRW50cnkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGRlY29yYXRpb25zID0gW107XG5cbiAgICAgICAgICAgIGlmICh0aGlzLnRoZURlY29yYXRlKSB7XG4gICAgICAgICAgICAgICAgZGVjb3JhdGlvbnMucHVzaCguLi50aGlzLnRoZURlY29yYXRlKHRoaXMuZWRpdG9yLCBub2RlRW50cnkpKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGRlY29yYXRpb25zO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIG9uS2V5RG93biA9IChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgICBzaG9ydGN1dHModGhpcy5lZGl0b3IsIGV2ZW50KTtcbiAgICAgICAgdGhpcy50aGVPbkRPTUV2ZW50LmVtaXQoe1xuICAgICAgICAgICAgbmF0aXZlRXZlbnQ6IGV2ZW50LFxuICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICAgIGtleTogZXZlbnQua2V5XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIEFuZ3VsYXJFZGl0b3Iub25LZXlkb3duKHRoaXMuZWRpdG9yLCBldmVudCk7XG5cbiAgICAgICAgaWYgKGlzS2V5SG90a2V5KCdtb2QrcycsIGV2ZW50KSAmJiAhZXZlbnQuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnRoZU9uU2F2ZS5lbWl0KHRoaXMuZWRpdG9yVmFsdWUpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzS2V5SG90a2V5KCdtb2QrYScsIGV2ZW50KSAmJiAhZXZlbnQuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVTZWxlY3RBbGwoKTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBtb3VzZWRvd24oZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgdGhpcy5lZGl0b3IubW91c2Vkb3duKGV2ZW50KTtcbiAgICB9XG5cbiAgICBoYW5kbGVTZWxlY3RBbGwoKSB7XG4gICAgICAgIGxldCBub2RlO1xuICAgICAgICBpZiAoIXRoaXMuZWRpdG9yLnNlbGVjdGlvbikge1xuICAgICAgICAgICAgVGhlVHJhbnNmb3Jtcy5zZXRFbmRTZWxlY3Rpb24odGhpcy5lZGl0b3IpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IFtzdGFydCwgZW5kXSA9IFJhbmdlLmVkZ2VzKHRoaXMuZWRpdG9yLnNlbGVjdGlvbik7XG4gICAgICAgIGNvbnN0IHNlbGVjdGlvblJhbmdlID0gRWRpdG9yLnJhbmdlKHRoaXMuZWRpdG9yLCBzdGFydCwgZW5kKTtcbiAgICAgICAgY29uc3QgY29udGFpbmVyQmxvY2tzID0gVGhlUXVlcmllcy5nZXRDb250YWluZXJCbG9ja3ModGhpcy5lZGl0b3IpO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbnRhaW5lckJsb2Nrcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgW25vZGVdID0gVGhlUXVlcmllcy5nZXROb2Rlc0J5VHlwZSh0aGlzLmVkaXRvciwgY29udGFpbmVyQmxvY2tzW2ldKTtcbiAgICAgICAgICAgIGlmIChub2RlKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgWywgcGF0aF0gPSBub2RlO1xuICAgICAgICAgICAgICAgIGNvbnN0IGlzU3RhcnRQYXJlbnQgPSBQYXRoLmVxdWFscyhwYXRoLCBzdGFydC5wYXRoLnNsaWNlKDAsIHBhdGgubGVuZ3RoKSk7XG4gICAgICAgICAgICAgICAgY29uc3QgaXNFbmRQYXJlbnQgPSBQYXRoLmVxdWFscyhwYXRoLCBlbmQucGF0aC5zbGljZSgwLCBwYXRoLmxlbmd0aCkpO1xuICAgICAgICAgICAgICAgIGlmIChpc1N0YXJ0UGFyZW50ICYmIGlzRW5kUGFyZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5vZGVSYW5nZSA9IEVkaXRvci5yYW5nZSh0aGlzLmVkaXRvciwgcGF0aCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghUmFuZ2UuZXF1YWxzKG5vZGVSYW5nZSwgc2VsZWN0aW9uUmFuZ2UpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2Zvcm1zLnNlbGVjdCh0aGlzLmVkaXRvciwgbm9kZVJhbmdlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIG5vZGUgPSBudWxsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoIW5vZGUpIHtcbiAgICAgICAgICAgIFRyYW5zZm9ybXMuc2VsZWN0KHRoaXMuZWRpdG9yLCBbXSk7XG4gICAgICAgIH1cbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIG9uQ2xpY2sgPSAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgQW5ndWxhckVkaXRvci5vbkNsaWNrKHRoaXMuZWRpdG9yLCBldmVudCk7XG4gICAgICAgIHRoaXMudGhlT25ET01FdmVudC5lbWl0KHtcbiAgICAgICAgICAgIG5hdGl2ZUV2ZW50OiBldmVudFxuICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgb25TbGFQYXN0ZSA9IChldmVudDogQ2xpcGJvYXJkRXZlbnQpID0+IHtcbiAgICAgICAgdGhpcy50aGVPbkRPTUV2ZW50LmVtaXQoe1xuICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICAgIC4uLnRoaXMuZ2V0VGV4dEFuZEpTT04oZXZlbnQuY2xpcGJvYXJkRGF0YSlcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBuYXRpdmVFdmVudDogZXZlbnRcbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIG9uU2xhQmVmb3JlSW5wdXQgPSAoXG4gICAgICAgIGV2ZW50OiBFdmVudCAmIHtcbiAgICAgICAgICAgIGlucHV0VHlwZTogc3RyaW5nO1xuICAgICAgICAgICAgZGF0YTogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgICAgIGRhdGFUcmFuc2ZlcjogRGF0YVRyYW5zZmVyIHwgbnVsbDtcbiAgICAgICAgfVxuICAgICkgPT4ge1xuICAgICAgICBsZXQgZGF0YSA9IHtcbiAgICAgICAgICAgIGlucHV0VHlwZTogZXZlbnQuaW5wdXRUeXBlLFxuICAgICAgICAgICAgdGV4dDogKGV2ZW50LmRhdGEgfHwgZXZlbnQuZGF0YVRyYW5zZmVyKSBhcyBzdHJpbmdcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKGV2ZW50LmlucHV0VHlwZSA9PT0gJ2luc2VydEZyb21QYXN0ZScpIHtcbiAgICAgICAgICAgIGRhdGEgPSB7XG4gICAgICAgICAgICAgICAgLi4uZGF0YSxcbiAgICAgICAgICAgICAgICAuLi50aGlzLmdldFRleHRBbmRKU09OKChldmVudC5kYXRhIHx8IGV2ZW50LmRhdGFUcmFuc2ZlcikgYXMgRGF0YVRyYW5zZmVyKVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnRoZU9uRE9NRXZlbnQuZW1pdCh7XG4gICAgICAgICAgICBkYXRhLFxuICAgICAgICAgICAgbmF0aXZlRXZlbnQ6IGV2ZW50XG4gICAgICAgIH0pO1xuICAgIH07XG5cbiAgICBvblNsYUJsdXIgPSAoZXZlbnQ6IEZvY3VzRXZlbnQpID0+IHtcbiAgICAgICAgdGhpcy50aGVPbkRPTUV2ZW50LmVtaXQoe1xuICAgICAgICAgICAgbmF0aXZlRXZlbnQ6IGV2ZW50XG4gICAgICAgIH0pO1xuICAgIH07XG5cbiAgICBvblNsYUZvY3VzID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgICAgICB0aGlzLnRoZU9uRE9NRXZlbnQuZW1pdCh7XG4gICAgICAgICAgICBuYXRpdmVFdmVudDogZXZlbnRcbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIG9uU2xhQ3V0ID0gKGV2ZW50OiBDbGlwYm9hcmRFdmVudCkgPT4ge1xuICAgICAgICB0aGlzLnRoZU9uRE9NRXZlbnQuZW1pdCh7XG4gICAgICAgICAgICBuYXRpdmVFdmVudDogZXZlbnRcbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIG9uU2xhQ29weSA9IChldmVudDogQ2xpcGJvYXJkRXZlbnQpID0+IHt9O1xuXG4gICAgb25TbGFDb21wb3NpdGlvblN0YXJ0ID0gKGV2ZW50OiBDb21wb3NpdGlvbkV2ZW50KSA9PiB7fTtcblxuICAgIG9uU2xhQ29tcG9zaXRpb25FbmQgPSAoZXZlbnQ6IENvbXBvc2l0aW9uRXZlbnQpID0+IHt9O1xuXG4gICAgb25TbGFEcmFnU3RhcnQgPSAoZXZlbnQ6IERyYWdFdmVudCkgPT4ge307XG5cbiAgICBvblNsYURyYWdPdmVyID0gKGV2ZW50OiBEcmFnRXZlbnQpID0+IHt9O1xuXG4gICAgb25Ecm9wID0gKGV2ZW50OiBEcmFnRXZlbnQpID0+IHtcbiAgICAgICAgdGhpcy50aGVPbkRPTUV2ZW50LmVtaXQoe1xuICAgICAgICAgICAgbmF0aXZlRXZlbnQ6IGV2ZW50XG4gICAgICAgIH0pO1xuICAgIH07XG5cbiAgICBwcml2YXRlIGdldFRleHRBbmRKU09OKGRhdGE6IERhdGFUcmFuc2Zlcikge1xuICAgICAgICBjb25zdCBmcmFnbWVudCA9IGRhdGEuZ2V0RGF0YShgYXBwbGljYXRpb24vJHtDTElQQk9BUkRfRk9STUFUX0tFWX1gKTtcbiAgICAgICAgbGV0IGpzb24gPSBbXTtcbiAgICAgICAgaWYgKGZyYWdtZW50KSB7XG4gICAgICAgICAgICBqc29uID0gSlNPTi5wYXJzZShkZWNvZGVVUklDb21wb25lbnQod2luZG93LmF0b2IoZnJhZ21lbnQpKSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgdGV4dCA9IGRhdGEuZ2V0RGF0YSgndGV4dC9wbGFpbicpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAganNvbixcbiAgICAgICAgICAgIHRleHRcbiAgICAgICAgfTtcbiAgICB9XG59XG4iLCI8dGhlLXRvb2xiYXJcbiAgKm5nSWY9XCIhb3B0aW9ucz8ucmVhZG9ubHkgJiYgIXRoZUdsb2JhbFRvb2xiYXIgJiYgIWlzTW9iaWxlTW9kZVwiXG4gIFtuZ0NsYXNzXT1cIntcbiAgICAndGhlLXRvb2xiYXItZGlzYWJsZWQnOiBvcHRpb25zPy5kaXNhYmxlZFxuICB9XCJcbiAgI2dsb2JhbFRvb2xiYXJcbiAgW2VkaXRvcl09XCJlZGl0b3JcIlxuICBbdG9vbGJhckl0ZW1zXT1cInRvb2xiYXJFbnRpdHkuZ2xvYmFsXCJcbiAgW2NvbnRhaW5lckNsYXNzXT1cImdsb2JhbFRvb2xiYXJDbGFzc1wiXG4gIFthbGlnbl09XCJvcHRpb25zPy50b29sYmFyPy5hbGlnblwiXG4+PC90aGUtdG9vbGJhcj5cblxuPGRpdlxuICAjdGhlRWRpdGFibGVDb250YWluZXJcbiAgY2xhc3M9XCJ0aGUtZWRpdGFibGUtY29udGFpbmVyXCJcbiAgdGh5SW1hZ2VHcm91cFxuICBbbmdDbGFzc109XCJ7XG4gICAgJ3RoZS1lZGl0b3ItZGlzYWJsZWQnOiBvcHRpb25zPy5kaXNhYmxlZCxcbiAgICAnbWF4LWhlaWdodCc6IG1heEhlaWdodFxuICB9XCJcbiAgW25nU3R5bGVdPVwieyAnbWF4LWhlaWdodCc6IG1heEhlaWdodCB9XCJcbj5cbiAgPHNsYXRlLWVkaXRhYmxlXG4gICAgY2xhc3M9XCJ0aGUtZWRpdG9yLXR5cG9cIlxuICAgIFtlZGl0b3JdPVwiZWRpdG9yXCJcbiAgICBbbmdNb2RlbF09XCJlZGl0b3JWYWx1ZVwiXG4gICAgW3JlbmRlckVsZW1lbnRdPVwicmVuZGVyRWxlbWVudFwiXG4gICAgW3JlbmRlclRleHRdPVwicmVuZGVyVGV4dFwiXG4gICAgW3JlbmRlckxlYWZdPVwicmVuZGVyTGVhZlwiXG4gICAgW2lzU3RyaWN0RGVjb3JhdGVdPVwiZmFsc2VcIlxuICAgIFtkZWNvcmF0ZV09XCJkZWNvcmF0ZVwiXG4gICAgW3BsYWNlaG9sZGVyXT1cIm9wdGlvbnM/LnBsYWNlaG9sZGVyXCJcbiAgICBbcGxhY2Vob2xkZXJEZWNvcmF0ZV09XCJvcHRpb25zPy5wbGFjZWhvbGRlckRlY29yYXRlID8gb3B0aW9ucz8ucGxhY2Vob2xkZXJEZWNvcmF0ZSA6IG51bGxcIlxuICAgIFtyZWFkb25seV09XCJvcHRpb25zPy5yZWFkb25seSB8fCBvcHRpb25zPy5kaXNhYmxlZFwiXG4gICAgW2tleWRvd25dPVwib25LZXlEb3duXCJcbiAgICBbY2xpY2tdPVwib25DbGlja1wiXG4gICAgW3Bhc3RlXT1cIm9uU2xhUGFzdGVcIlxuICAgIFtibHVyXT1cIm9uU2xhQmx1clwiXG4gICAgW2ZvY3VzXT1cIm9uU2xhRm9jdXNcIlxuICAgIFtjb3B5XT1cIm9uU2xhQ29weVwiXG4gICAgW2N1dF09XCJvblNsYUN1dFwiXG4gICAgW2JlZm9yZUlucHV0XT1cIm9uU2xhQmVmb3JlSW5wdXRcIlxuICAgIFtjb21wb3NpdGlvblN0YXJ0XT1cIm9uU2xhQ29tcG9zaXRpb25TdGFydFwiXG4gICAgW2NvbXBvc2l0aW9uRW5kXT1cIm9uU2xhQ29tcG9zaXRpb25FbmRcIlxuICAgIFtkcmFnU3RhcnRdPVwib25TbGFEcmFnU3RhcnRcIlxuICAgIFtkcmFnT3Zlcl09XCJvblNsYURyYWdPdmVyXCJcbiAgICBbZHJvcF09XCJvbkRyb3BcIlxuICAgIFtzY3JvbGxTZWxlY3Rpb25JbnRvVmlld109XCJzY3JvbGxTZWxlY3Rpb25JbnRvVmlld1wiXG4gICAgKG5nTW9kZWxDaGFuZ2UpPVwidmFsdWVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgKG1vdXNlZG93bik9XCJtb3VzZWRvd24oJGV2ZW50KVwiXG4gID48L3NsYXRlLWVkaXRhYmxlPlxuXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNNb2JpbGVNb2RlXCI+XG4gICAgPHRoZS1pbmxpbmUtdG9vbGJhclxuICAgICAgKm5nSWY9XCIhb3B0aW9ucz8ucmVhZG9ubHkgJiYgb3B0aW9ucz8uaW5saW5lVG9vbGJhclZpc2libGVcIlxuICAgICAgW2VkaXRvcl09XCJlZGl0b3JcIlxuICAgICAgW3Rvb2xiYXJJdGVtc109XCJ0b29sYmFyRW50aXR5LmlubGluZVwiXG4gICAgPjwvdGhlLWlubGluZS10b29sYmFyPlxuICAgIDxkaXYgKm5nSWY9XCIhb3B0aW9ucz8ucmVhZG9ubHlcIiB0aGVRdWlja0luc2VydCBbZWRpdG9yXT1cImVkaXRvclwiIFtpc1Zpc2libGVdPVwidmlzaWJsZVF1aWNrSW5zZXJ0UGx1c1wiPjwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8dGhlLXRlbXBsYXRlICN0ZW1wbGF0ZUluc3RhbmNlPjwvdGhlLXRlbXBsYXRlPlxuPC9kaXY+XG4iXX0=
|
|
509
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhY2thZ2VzL3NyYy9lZGl0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vcGFja2FnZXMvc3JjL2VkaXRvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBQ0gsdUJBQXVCLEVBRXZCLFNBQVMsRUFFVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLE1BQU0sRUFFTixLQUFLLEVBS0wsUUFBUSxFQUNSLE1BQU0sRUFFTixTQUFTLEVBRVQsVUFBVSxFQUNiLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxXQUFXLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRXhDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2pDLE9BQU8sRUFBYyxNQUFNLEVBQXNCLElBQUksRUFBRSxLQUFLLEVBQVEsVUFBVSxFQUFFLFlBQVksRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUM1RyxPQUFPLEVBQUUsYUFBYSxFQUF3QixXQUFXLEVBQUUsOEJBQThCLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlILE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxtQkFBbUIsRUFB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RyxVQUFVO3NCQUFsQixLQUFLO2dCQUVJLFNBQVM7c0JBQWxCLE1BQU07Z0JBRUcsYUFBYTtzQkFBdEIsTUFBTTtnQkFFRyxnQkFBZ0I7c0JBQXpCLE1BQU07Z0JBRUcsa0JBQWtCO3NCQUEzQixNQUFNO2dCQUdQLGdCQUFnQjtzQkFEZixTQUFTO3VCQUFDLGtCQUFrQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFJL0Msb0JBQW9CO3NCQURuQixTQUFTO3VCQUFDLHNCQUFzQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUlyRSxxQkFBcUI7c0JBRHBCLFNBQVM7dUJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nQ2xhc3MsIE5nSWYsIE5nU3R5bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRGVzdHJveVJlZixcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbmplY3QsXG4gICAgSW5qZWN0b3IsXG4gICAgSW5wdXQsXG4gICAgTmdab25lLFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE9wdGlvbmFsLFxuICAgIE91dHB1dCxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3Q29udGFpbmVyUmVmLFxuICAgIGZvcndhcmRSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBpc0tleUhvdGtleSB9IGZyb20gJ2lzLWhvdGtleSc7XG5pbXBvcnQgeyBUaHlJY29uUmVnaXN0cnkgfSBmcm9tICduZ3gtdGV0aHlzL2ljb24nO1xuaW1wb3J0IHsgVGh5SW1hZ2VHcm91cCB9IGZyb20gJ25neC10ZXRoeXMvaW1hZ2UnO1xuaW1wb3J0IHsgZnJvbUV2ZW50IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBEZXNjZW5kYW50LCBFZGl0b3IsIEVsZW1lbnQsIE5vZGVFbnRyeSwgUGF0aCwgUmFuZ2UsIFRleHQsIFRyYW5zZm9ybXMsIGNyZWF0ZUVkaXRvciB9IGZyb20gJ3NsYXRlJztcbmltcG9ydCB7IEFuZ3VsYXJFZGl0b3IsIERPTVJhbmdlLCBTbGF0ZUVycm9yLCBTbGF0ZU1vZHVsZSwgZGVmYXVsdFNjcm9sbFNlbGVjdGlvbkludG9WaWV3LCB3aXRoQW5ndWxhciB9IGZyb20gJ3NsYXRlLWFuZ3VsYXInO1xuaW1wb3J0IHsgd2l0aEhpc3RvcnkgfSBmcm9tICdzbGF0ZS1oaXN0b3J5JztcbmltcG9ydCB7IFRoZUlubGluZVRvb2xiYXIsIFRoZVRlbXBsYXRlLCBUaGVUZXh0LCBUaGVUb29sYmFyR3JvdXAgfSBmcm9tICcuL2NvbXBvbmVudHMnO1xuaW1wb3J0IHsgVGhlVG9vbGJhckNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy90b29sYmFyL3Rvb2xiYXIuY29tcG9uZW50JztcbmltcG9ydCB7XG4gICAgQ0xJUEJPQVJEX0ZPUk1BVF9LRVksXG4gICAgRGVmYXVsdEdsb2JhbFRvb2xiYXJEZWZpbml0aW9uLFxuICAgIERlZmF1bHRJbmxpbmVUb29sYmFyRGVmaW5pdGlvbixcbiAgICBEZWZhdWx0UGx1Z2luTWVudSxcbiAgICBNYXJrVHlwZXMsXG4gICAgVGhlVG9vbGJhckdyb3VwVG9rZW4sXG4gICAgaW5pdGlhbGl6ZURlZmF1bHRNZW51SWNvbnNcbn0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgY3JlYXRlVG9vbGJhciwgZ2V0UGx1Z2luT3B0aW9ucywgd2l0aFRoZWlhIH0gZnJvbSAnLi9jb3JlJztcbmltcG9ydCB7XG4gICAgUGx1Z2luS2V5cyxcbiAgICBUSEVfTU9ERV9UT0tFTixcbiAgICBUSEVfUFJFU0VUX0NPTkZJR19UT0tFTixcbiAgICBUaGVEYXRhTW9kZSxcbiAgICBUaGVFZGl0b3IsXG4gICAgVGhlTW9kZSxcbiAgICBUaGVPcHRpb25zLFxuICAgIFRoZVByZXNldENvbmZpZyxcbiAgICBUb29sYmFyRW50aXR5LFxuICAgIHR5cGUgRG9tRXZlbnREYXRhSW5mb1xufSBmcm9tICcuL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgVGhlUGx1Z2luIH0gZnJvbSAnLi9pbnRlcmZhY2VzL3BsdWdpbnMvcGx1Z2lucyc7XG5pbXBvcnQgeyBpbnRlcm5hbFBsdWdpbnMgfSBmcm9tICcuL3BsdWdpbnMnO1xuaW1wb3J0IHsgVGhlUXVpY2tJbnNlcnQgfSBmcm9tICcuL3BsdWdpbnMvcXVpY2staW5zZXJ0L2NvbXBvbmVudHMvcXVpY2staW5zZXJ0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBRdWlja0luc2VydFBsdWdpbk9wdGlvbnMgfSBmcm9tICcuL3BsdWdpbnMvcXVpY2staW5zZXJ0L3F1aWNrLWluc2VydC5wbHVnaW4nO1xuaW1wb3J0ICogYXMgVGhlUXVlcmllcyBmcm9tICcuL3F1ZXJpZXMnO1xuaW1wb3J0IHsgVGhlQ29udGV4dFNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2NvbnRleHQuc2VydmljZSc7XG5pbXBvcnQgeyBzaG9ydGN1dHMgfSBmcm9tICcuL3Nob3J0Y3V0cyc7XG5pbXBvcnQgKiBhcyBUaGVUcmFuc2Zvcm1zIGZyb20gJy4vdHJhbnNmb3Jtcyc7XG5pbXBvcnQgeyBUSEVfRURJVE9SX1BSRVZJT1VTX1NFTEVDVElPTiwgYXV0b0ZvY3VzLCBkYXRhRGVzZXJpYWxpemUsIGRhdGFTZXJpYWxpemluZywgaWRDcmVhdG9yLCBzZXRFZGl0b3JVVUlEIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBpc0VxdWFsIH0gZnJvbSAnLi91dGlscy9sb2Rhc2gnO1xuaW1wb3J0IHsgbm9ybWFsaXplVmFsdWUgfSBmcm9tICcuL3V0aWxzL25vcm1hbGl6ZSc7XG5pbXBvcnQgeyBOb2RlIH0gZnJvbSAnc2xhdGUnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3RoZS1lZGl0b3IsIHRoZUVkaXRvcicsXG4gICAgdGVtcGxhdGVVcmw6ICdlZGl0b3IuY29tcG9uZW50Lmh0bWwnLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICd0aGUtZWRpdG9yJyxcbiAgICAgICAgJ1tjbGFzcy50aGUtZWRpdG9yLXJlYWRvbmx5XSc6ICdlZGl0b3Iub3B0aW9ucz8ucmVhZG9ubHknLFxuICAgICAgICAnW2NsYXNzLnRoZS1tb2JpbGUtZWRpdG9yXSc6ICdpc01vYmlsZU1vZGUnXG4gICAgfSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgTmdJZixcbiAgICAgICAgTmdTdHlsZSxcbiAgICAgICAgTmdDbGFzcyxcbiAgICAgICAgRm9ybXNNb2R1bGUsXG4gICAgICAgIFNsYXRlTW9kdWxlLFxuICAgICAgICBUaGVUZW1wbGF0ZSxcbiAgICAgICAgVGhlUXVpY2tJbnNlcnQsXG4gICAgICAgIFRoZUlubGluZVRvb2xiYXIsXG4gICAgICAgIFRoZVRvb2xiYXJDb21wb25lbnQsXG4gICAgICAgIFRoeUltYWdlR3JvdXBcbiAgICBdLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICBUaGVDb250ZXh0U2VydmljZSxcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogVGhlVG9vbGJhckdyb3VwVG9rZW4sXG4gICAgICAgICAgICB1c2VWYWx1ZTogVGhlVG9vbGJhckdyb3VwXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gVGhlRWRpdG9yQ29tcG9uZW50KSxcbiAgICAgICAgICAgIG11bHRpOiB0cnVlXG4gICAgICAgIH1cbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIFRoZUVkaXRvckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICAgIEBJbnB1dCgpIHRoZU9wdGlvbnM6IFRoZU9wdGlvbnM7XG5cbiAgICBASW5wdXQoKSB0aGVQbHVnaW5zOiBUaGVQbHVnaW5bXSA9IFtdO1xuXG4gICAgQElucHV0KCkgdGhlR2xvYmFsVG9vbGJhcj86IFRoZVRvb2xiYXJDb21wb25lbnQ7XG5cbiAgICBASW5wdXQoKSB0aGVEZWNvcmF0ZTogKGVkaXRvcjogVGhlRWRpdG9yLCBub2RlRW50cnk6IE5vZGVFbnRyeSkgPT4gUmFuZ2VbXTtcblxuICAgIEBJbnB1dCgpIHRoZU9uRXJyb3I/OiAoZXJyb3I6IFNsYXRlRXJyb3IpID0+IHZvaWQ7XG5cbiAgICBAT3V0cHV0KCkgdGhlT25TYXZlOiBFdmVudEVtaXR0ZXI8RGVzY2VuZGFudFtdPiA9IG5ldyBFdmVudEVtaXR0ZXI8RGVzY2VuZGFudFtdPigpO1xuXG4gICAgQE91dHB1dCgpIHRoZU9uRE9NRXZlbnQ6IEV2ZW50RW1pdHRlcjx7IG5hdGl2ZUV2ZW50OiBFdmVudDsgZGF0YT86IERvbUV2ZW50RGF0YUluZm8gfT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KCkgdGhlRWRpdG9yQ3JlYXRlZDogRXZlbnRFbWl0dGVyPEVkaXRvcj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KCkgdGhlVXBsb2FkaW5nU3RhdHVzOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7IC8vIHRydWUg5LiK5Lyg57uT5p2fIGZhbHNlIOS4iuS8oOS4rVxuXG4gICAgQFZpZXdDaGlsZCgndGVtcGxhdGVJbnN0YW5jZScsIHsgc3RhdGljOiB0cnVlIH0pXG4gICAgdGVtcGxhdGVJbnN0YW5jZTogVGhlVGVtcGxhdGU7XG5cbiAgICBAVmlld0NoaWxkKCd0aGVFZGl0YWJsZUNvbnRhaW5lcicsIHsgc3RhdGljOiB0cnVlLCByZWFkOiBFbGVtZW50UmVmIH0pXG4gICAgdGhlRWRpdGFibGVDb250YWluZXI6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gICAgQFZpZXdDaGlsZCgnZ2xvYmFsVG9vbGJhcicpXG4gICAgZ2xvYmFsVG9vbGJhckluc3RhbmNlOiBUaGVUb29sYmFyQ29tcG9uZW50O1xuXG4gICAgdG9vbGJhckVudGl0eTogVG9vbGJhckVudGl0eTtcblxuICAgIGVkaXRvcjogVGhlRWRpdG9yO1xuXG4gICAgZWRpdG9yVmFsdWU6IERlc2NlbmRhbnRbXTtcblxuICAgIGdsb2JhbFRvb2xiYXJDbGFzczogc3RyaW5nW107XG5cbiAgICBpc01vYmlsZU1vZGU6IGJvb2xlYW47XG5cbiAgICB2aXNpYmxlUXVpY2tJbnNlcnRQbHVzID0gdHJ1ZTtcblxuICAgIGVsZW1lbnRUb0h0bWw6IFdlYWtNYXA8RWxlbWVudCwgc3RyaW5nPiA9IG5ldyBXZWFrTWFwKCk7XG5cbiAgICBkZWNvcmF0ZTogKG5vZGVFbnRyeTogTm9kZUVudHJ5KSA9PiBSYW5nZVtdO1xuXG4gICAgZ2V0IG9wdGlvbnMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmVkaXRvcj8ub3B0aW9ucztcbiAgICB9XG5cbiAgICBnZXQgdGhlR2xvYmFsVG9vbGJhckluc3RhbmNlKCk6IFRoZVRvb2xiYXJDb21wb25lbnQge1xuICAgICAgICByZXR1cm4gdGhpcy50aGVHbG9iYWxUb29sYmFyID8gdGhpcy50aGVHbG9iYWxUb29sYmFyIDogdGhpcy5nbG9iYWxUb29sYmFySW5zdGFuY2U7XG4gICAgfVxuXG4gICAgZ2V0IG1heEhlaWdodCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucz8ubWF4SGVpZ2h0ID8gYCR7dGhpcy5vcHRpb25zPy5tYXhIZWlnaHR9cHhgIDogbnVsbDtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uQ2hhbmdlQ2FsbGJhY2s6IChfOiBhbnkpID0+IHZvaWQgPSAoKSA9PiB7fTtcblxuICAgIHByaXZhdGUgb25Ub3VjaGVkQ2FsbGJhY2s6ICgpID0+IHZvaWQgPSAoKSA9PiB7fTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgZGVzdHJveVJlZjogRGVzdHJveVJlZixcbiAgICAgICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvcixcbiAgICAgICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcbiAgICAgICAgcHJpdmF0ZSB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgICAgICBwcml2YXRlIHRoZUNvbnRleHRTZXJ2aWNlOiBUaGVDb250ZXh0U2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBpY29uUmVnaXN0cnk6IFRoeUljb25SZWdpc3RyeSxcbiAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChUSEVfUFJFU0VUX0NPTkZJR19UT0tFTikgcHJpdmF0ZSBwcmVzZXRDb25maWc6IFRoZVByZXNldENvbmZpZ1xuICAgICkge31cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLmluaXRpYWxpemUoKTtcbiAgICAgICAgdGhpcy5vbkVycm9ySGFuZGxlcigpO1xuICAgICAgICBpbml0aWFsaXplRGVmYXVsdE1lbnVJY29ucyh0aGlzLmljb25SZWdpc3RyeSk7XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgICAgICBjb25zdCBvcHRpb25zID0gY2hhbmdlcy50aGVPcHRpb25zO1xuXG4gICAgICAgIGlmIChvcHRpb25zICYmICFvcHRpb25zLmZpcnN0Q2hhbmdlKSB7XG4gICAgICAgICAgICB0aGlzLmluaXRpYWxpemVPcHRpb25zKG9wdGlvbnMuY3VycmVudFZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvcHRpb25zICYmICFvcHRpb25zLmZpcnN0Q2hhbmdlICYmICFpc0VxdWFsKG9wdGlvbnMuY3VycmVudFZhbHVlPy50b29sYmFyLCBvcHRpb25zLnByZXZpb3VzVmFsdWU/LnRvb2xiYXIpKSB7XG4gICAgICAgICAgICB0aGlzLnRvb2xiYXJDYWxjdWxhdGUoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLmN1cnJlbnRWYWx1ZT8ucmVhZG9ubHkgIT09IG9wdGlvbnMucHJldmlvdXNWYWx1ZT8ucmVhZG9ubHkpIHtcbiAgICAgICAgICAgIHRoaXMuYXBwbHlBdXRvRm9jdXMoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2hhbmdlc1sndGhlRGVjb3JhdGUnXSkge1xuICAgICAgICAgICAgdGhpcy5nZW5lcmF0ZURlY29yYXRlKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuZWRpdG9yPy5zZWxlY3Rpb24gJiYgKG9wdGlvbnM/LmN1cnJlbnRWYWx1ZT8ucmVhZG9ubHkgfHwgb3B0aW9ucz8uY3VycmVudFZhbHVlPy5kaXNhYmxlZCkpIHtcbiAgICAgICAgICAgIFRyYW5zZm9ybXMuZGVzZWxlY3QodGhpcy5lZGl0b3IpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIFRIRV9FRElUT1JfUFJFVklPVVNfU0VMRUNUSU9OLmRlbGV0ZSh0aGlzLmVkaXRvcik7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0aWFsaXplKCkge1xuICAgICAgICBjb25zdCBwbHVnaW5zID0gdGhpcy5nZXRQbHVnaW5zKCk7XG4gICAgICAgIHRoaXMuZWRpdG9yID0gd2l0aFRoZWlhKHdpdGhIaXN0b3J5KHdpdGhBbmd1bGFyKGNyZWF0ZUVkaXRvcigpLCBDTElQQk9BUkRfRk9STUFUX0tFWSkpLCBwbHVnaW5zKTtcbiAgICAgICAgc2V0RWRpdG9yVVVJRCh0aGlzLmVkaXRvciwgaWRDcmVhdG9yKCkpO1xuICAgICAgICB0aGlzLmluaXRpYWxpemVNb2JpbGVNb2RlKCk7XG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZU9wdGlvbnModGhpcy50aGVPcHRpb25zKTtcbiAgICAgICAgdGhpcy5pbml0aWFsaXplQ29udGV4dCgpO1xuICAgICAgICB0aGlzLnRvb2xiYXJDYWxjdWxhdGUoKTtcbiAgICAgICAgdGhpcy5pbml0aWFsaXplUXVpY2tJbnNlcnQoKTtcbiAgICAgICAgdGhpcy5pbml0aWFsaXplRXZlbnRzKCk7XG4gICAgICAgIHRoaXMuZ2VuZXJhdGVEZWNvcmF0ZSgpO1xuICAgICAgICB0aGlzLnN1YnNjcmliZVVwbG9hZGluZ1N0YXR1cygpO1xuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgLy8gWW91IG5lZWQgdG8gd2FpdCBmb3IgdGhlIGVkaXRvciByZW5kZXJpbmcgdG8gY29tcGxldGVcbiAgICAgICAgICAgIC8vIGJlZm9yZSB0cmlnZ2VyaW5nIHRoZSBleHRlcm5hbCB0b29sYmFyIGFzc2lnbm1lbnQgZGV0ZWN0aW9uXG4gICAgICAgICAgICB0aGlzLmluaXRpYWxpemVHbG9iYWxUb29sYmFyKCk7XG4gICAgICAgICAgICB0aGlzLnRoZUVkaXRvckNyZWF0ZWQuZW1pdCh0aGlzLmVkaXRvcik7XG4gICAgICAgICAgICB0aGlzLmFwcGx5QXV0b0ZvY3VzKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdGlhbGl6ZU9wdGlvbnModGhlT3B0aW9uczogVGhlT3B0aW9ucykge1xuICAgICAgICBjb25zdCBwcmVzZXRNb2RlID0gdGhpcy5wcmVzZXRDb25maWc/Lm9wdGlvbnM/Lm1vZGU7XG4gICAgICAgIGNvbnN0IHByZXNldEF1dG9Ob3JtYWxpemUgPSB0aGlzLnByZXNldENvbmZpZz8ub3B0aW9ucz8uYXV0b05vcm1hbGl6ZTtcbiAgICAgICAgY29uc3QgcHJlc2V0SW5saW5lVG9vbGJhclZpc2libGUgPSB0aGlzLnByZXNldENvbmZpZz8ub3B0aW9ucz8uaW5saW5lVG9vbGJhclZpc2libGU7XG4gICAgICAgIGNvbnN0IHByZXNldE1lbnUgPSB0aGlzLnByZXNldENvbmZpZz8ub3B0aW9ucz8ubWVudTtcbiAgICAgICAgY29uc3QgcHJlc2V0VG9vbGJhckFsaWduID0gdGhpcy5wcmVzZXRDb25maWc/Lm9wdGlvbnM/LnRvb2xiYXI/LmFsaWduO1xuICAgICAgICBjb25zdCBwcmVzZXRHbG9iYWxUb29sYmFyID0gdGhpcy5wcmVzZXRDb25maWc/Lm9wdGlvbnM/LnRvb2xiYXI/Lmdsb2JhbDtcbiAgICAgICAgY29uc3QgcHJlc2V0SW5saW5lVG9vbGJhciA9IHRoaXMucHJlc2V0Q29uZmlnPy5vcHRpb25zPy50b29sYmFyPy5pbmxpbmU7XG4gICAgICAgIGNvbnN0IG9wdGlvbnNHbG9iYWxUb29sYmFyID0gdGhlT3B0aW9ucz8udG9vbGJhcj8uZ2xvYmFsO1xuICAgICAgICBjb25zdCBvcHRpb25zSW5saW5lVG9vbGJhciA9IHRoZU9wdGlvbnM/LnRvb2xiYXI/LmlubGluZTtcblxuICAgICAgICBjb25zdCBvcHRpb25zOiBUaGVPcHRpb25zID0ge1xuICAgICAgICAgICAgcmVhZG9ubHk6IGZhbHNlLFxuICAgICAgICAgICAgbmVlZGVkU2Nyb2xsSW50b1ZpZXc6ICgpID0+IHRydWUsXG4gICAgICAgICAgICAuLi50aGVPcHRpb25zLFxuICAgICAgICAgICAgYXV0b05vcm1hbGl6ZTogdGhlT3B0aW9ucz8uYXV0b05vcm1hbGl6ZSA/PyBwcmVzZXRBdXRvTm9ybWFsaXplID8/IGZhbHNlLFxuICAgICAgICAgICAgbW9kZTogdGhlT3B0aW9ucz8ubW9kZSA/PyBwcmVzZXRNb2RlID8/IFRoZURhdGFNb2RlLmh0bWwsXG4gICAgICAgICAgICBpbmxpbmVUb29sYmFyVmlzaWJsZTogdGhlT3B0aW9ucz8uaW5saW5lVG9vbGJhclZpc2libGUgPz8gcHJlc2V0SW5saW5lVG9vbGJhclZpc2libGUsXG4gICAgICAgICAgICBtZW51OiB0aGVPcHRpb25zPy5tZW51ID8/IHByZXNldE1lbnUgPz8gRGVmYXVsdFBsdWdpbk1lbnUsXG4gICAgICAgICAgICB0b29sYmFyOiB7XG4gICAgICAgICAgICAgICAgYWxpZ246IHRoZU9wdGlvbnM/LnRvb2xiYXI/LmFsaWduID8/IHByZXNldFRvb2xiYXJBbGlnbixcbiAgICAgICAgICAgICAgICBnbG9iYWw6IG9wdGlvbnNHbG9iYWxUb29sYmFyID8/IHByZXNldEdsb2JhbFRvb2xiYXIgPz8gRGVmYXVsdEdsb2JhbFRvb2xiYXJEZWZpbml0aW9uLFxuICAgICAgICAgICAgICAgIGlubGluZTogb3B0aW9uc0lubGluZVRvb2xiYXIgPz8gcHJlc2V0SW5saW5lVG9vbGJhciA/PyBEZWZhdWx0SW5saW5lVG9vbGJhckRlZmluaXRpb25cbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLmVkaXRvci5vcHRpb25zID0gb3B0aW9ucztcbiAgICAgICAgdGhpcy5lZGl0b3IuZGlzYWJsZWQgPSB0aGVPcHRpb25zPy5kaXNhYmxlZDtcbiAgICAgICAgdGhpcy5lZGl0b3IuZXh0cmFFbGVtZW50T3B0aW9ucyA9IG9wdGlvbnM/LmV4dHJhRWxlbWVudE9wdGlvbnM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0aWFsaXplQ29udGV4dCgpIHtcbiAgICAgICAgdGhpcy50aGVDb250ZXh0U2VydmljZS5pbml0aWFsaXplKHtcbiAgICAgICAgICAgIGVkaXRvcjogdGhpcy5lZGl0b3IsXG4gICAgICAgICAgICBuYXRpdmVFbGVtZW50OiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICAgIHZpZXdDb250YWluZXJSZWY6IHRoaXMudmlld0NvbnRhaW5lclJlZlxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFBsdWdpbnMoKSB7XG4gICAgICAgIGNvbnN0IGRlZmF1bHRQbHVnaW5zID0gaW50ZXJuYWxQbHVnaW5zKCk7XG4gICAgICAgIGNvbnN0IHByZXNldFBsdWdpbnMgPSB0aGlzLnByZXNldENvbmZpZz8ucGx1Z2lucyA/PyBbXTtcbiAgICAgICAgY29uc3QgYXBwbHlQcmVzZXRQbHVnaW5zID0gcHJlc2V0UGx1Z2lucy5maWx0ZXIocHJlc2V0UGx1Z2luID0+ICF0aGlzLnRoZVBsdWdpbnMuc29tZShwbHVnaW4gPT4gcHJlc2V0UGx1Z2luLmtleSA9PT0gcGx1Z2luLmtleSkpO1xuICAgICAgICByZXR1cm4gWy4uLmRlZmF1bHRQbHVnaW5zLCAuLi5hcHBseVByZXNldFBsdWdpbnMsIC4uLnRoaXMudGhlUGx1Z2luc107XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0aWFsaXplTW9iaWxlTW9kZSgpIHtcbiAgICAgICAgY29uc3QgbW9kZUNvbmZpZyA9IHRoaXMuaW5qZWN0b3IuZ2V0KFRIRV9NT0RFX1RPS0VOKTtcbiAgICAgICAgdGhpcy5pc01vYmlsZU1vZGUgPSBtb2RlQ29uZmlnICYmIG1vZGVDb25maWcubW9kZSA9PT0gVGhlTW9kZS5tb2JpbGU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB0b29sYmFyQ2FsY3VsYXRlKCkge1xuICAgICAgICBjb25zdCBnbG9iYWxUb29sYmFyID0gdGhpcy5vcHRpb25zPy50b29sYmFyLmdsb2JhbDtcbiAgICAgICAgY29uc3QgaW5saW5lVG9vbGJhciA9IHRoaXMub3B0aW9ucz8udG9vbGJhcj8uaW5saW5lO1xuICAgICAgICBjb25zdCB7IGdsb2JhbFRvb2xiYXJDbGFzcywgdG9vbGJhckVudGl0eSB9ID0gY3JlYXRlVG9vbGJhcih0aGlzLmVkaXRvciwgZ2xvYmFsVG9vbGJhciwgaW5saW5lVG9vbGJhcik7XG4gICAgICAgIHRoaXMuZ2xvYmFsVG9vbGJhckNsYXNzID0gZ2xvYmFsVG9vbGJhckNsYXNzO1xuICAgICAgICB0aGlzLnRvb2xiYXJFbnRpdHkgPSB0b29sYmFyRW50aXR5O1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdGlhbGl6ZUdsb2JhbFRvb2xiYXIoKSB7XG4gICAgICAgIGlmICh0aGlzLnRoZUdsb2JhbFRvb2xiYXIpIHtcbiAgICAgICAgICAgIHRoaXMudGhlR2xvYmFsVG9vbGJhckluc3RhbmNlLmVkaXRvciA9IHRoaXMuZWRpdG9yO1xuICAgICAgICAgICAgdGhpcy50aGVHbG9iYWxUb29sYmFySW5zdGFuY2UudG9vbGJhckl0ZW1zID0gdGhpcy50b29sYmFyRW50aXR5Lmdsb2JhbDtcbiAgICAgICAgICAgIHRoaXMudGhlR2xvYmFsVG9vbGJhckluc3RhbmNlLmNvbnRhaW5lckNsYXNzID0gdGhpcy5nbG9iYWxUb29sYmFyQ2xhc3M7XG4gICAgICAgICAgICB0aGlzLnRoZUdsb2JhbFRvb2xiYXJJbnN0YW5jZS5hbGlnbiA9IHRoaXMub3B0aW9ucz8udG9vbGJhcj8uYWxpZ247XG4gICAgICAgICAgICB0aGlzLnRoZUdsb2JhbFRvb2xiYXJJbnN0YW5jZS5zZXRUb29sYmFyQ2xhc3MoKTtcbiAgICAgICAgICAgIHRoaXMudGhlR2xvYmFsVG9vbGJhckluc3RhbmNlLnJlbmRlclRvb2xiYXJWaWV3KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRpYWxpemVRdWlja0luc2VydCgpIHtcbiAgICAgICAgY29uc3QgcXVpY2tJbnNlcnRQbHVnaW4gPSBnZXRQbHVnaW5PcHRpb25zPFF1aWNrSW5zZXJ0UGx1Z2luT3B0aW9ucz4odGhpcy5lZGl0b3IsIFBsdWdpbktleXMucXVpY2tJbnNlcnQpO1xuICAgICAgICBpZiAocXVpY2tJbnNlcnRQbHVnaW4uZGlzYWJsZWQgfHwgcXVpY2tJbnNlcnRQbHVnaW4uZGlzYWJsZWRQbHVzKSB7XG4gICAgICAgICAgICB0aGlzLnZpc2libGVRdWlja0luc2VydFBsdXMgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdGlhbGl6ZUV2ZW50cygpIHtcbiAgICAgICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICAgICAgZnJvbUV2ZW50PE1vdXNlRXZlbnQ+KGRvY3VtZW50LCAnbW91c2Vkb3duJylcbiAgICAgICAgICAgICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmVkaXRvci5nbG9iYWxNb3VzZWRvd24oZXZlbnQpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN1YnNjcmliZVVwbG9hZGluZ1N0YXR1cygpIHtcbiAgICAgICAgdGhpcy50aGVDb250ZXh0U2VydmljZS51cGxvYWRpbmdTdGF0dXMkLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpLnN1YnNjcmliZShpc1VwbG9hZGluZyA9PiB7XG4gICAgICAgICAgICBpZiAoaXNVcGxvYWRpbmcpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRoZVVwbG9hZGluZ1N0YXR1cy5lbWl0KHRydWUpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy50aGVDb250ZXh0U2VydmljZS51cGxvYWRpbmdGaWxlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50aGVVcGxvYWRpbmdTdGF0dXMuZW1pdChmYWxzZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFwcGx5QXV0b0ZvY3VzKCkge1xuICAgICAgICBpZiAoIXRoaXMub3B0aW9ucz8uZGlzYWJsZWQgJiYgIXRoaXMub3B0aW9ucz8ucmVhZG9ubHkpIHtcbiAgICAgICAgICAgIGF1dG9Gb2N1cyh0aGlzLmVkaXRvciwgdGhpcy5vcHRpb25zPy5hdXRvRm9jdXMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc0ZpcnN0V3JpdGVWYWx1ZSA9IHRydWU7XG5cbiAgICB3cml0ZVZhbHVlKHZhbHVlOiBzdHJpbmcgfCBEZXNjZW5kYW50W10pIHtcbiAgICAgICAgaWYgKHRoaXMuaXNGaXJzdFdyaXRlVmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuaXNGaXJzdFdyaXRlVmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkYXRhID0gZGF0YURlc2VyaWFsaXplKHRoaXMuZWRpdG9yLm9wdGlvbnM/Lm1vZGUsIHZhbHVlKTtcbiAgICAgICAgLy8gZGF0YS1kZXNlcmlhbGl6ZVxuICAgICAgICB0aGlzLmVkaXRvclZhbHVlID0gZGF0YTtcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIGlmICghdGhpcy5vcHRpb25zLnJlYWRvbmx5KSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoQW5ndWxhckVkaXRvci5pc0ZvY3VzZWQodGhpcy5lZGl0b3IpICYmIHRoaXMuZWRpdG9yLnNlbGVjdGlvbikge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3Rpb24gPSB0aGlzLmVkaXRvci5zZWxlY3Rpb247XG4gICAgICAgICAgICAgICAgICAgIFRyYW5zZm9ybXMuZGVzZWxlY3QodGhpcy5lZGl0b3IpO1xuICAgICAgICAgICAgICAgICAgICBUcmFuc2Zvcm1zLnNlbGVjdCh0aGlzLmVkaXRvciwgc2VsZWN0aW9uKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMuYXV0b05vcm1hbGl6ZSkge1xuICAgICAgICAgICAgICAgIG5vcm1hbGl6ZVZhbHVlKHRoaXMuZWRpdG9yLCBkYXRhKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSkge1xuICAgICAgICB0aGlzLm9uQ2hhbmdlQ2FsbGJhY2sgPSBmbjtcbiAgICB9XG5cbiAgICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KSB7XG4gICAgICAgIHRoaXMub25Ub3VjaGVkQ2FsbGJhY2sgPSBmbjtcbiAgICB9XG5cbiAgICBzY3JvbGxTZWxlY3Rpb25JbnRvVmlldyA9IChlOiBUaGVFZGl0b3IsIGRvbVJhbmdlOiBET01SYW5nZSkgPT4ge1xuICAgICAgICBjb25zdCB7IG5lZWRlZFNjcm9sbEludG9WaWV3IH0gPSBlLm9wdGlvbnM7XG4gICAgICAgIGlmIChuZWVkZWRTY3JvbGxJbnRvVmlldyAmJiAhbmVlZGVkU2Nyb2xsSW50b1ZpZXcodGhpcy5lZGl0b3IpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgZGVmYXVsdFNjcm9sbFNlbGVjdGlvbkludG9WaWV3KGUsIGRvbVJhbmdlKTtcbiAgICB9O1xuXG4gICAgdmFsdWVDaGFuZ2UodmFsdWU6IERlc2NlbmRhbnRbXSkge1xuICAgICAgICB0aGlzLnRoZUdsb2JhbFRvb2xiYXJJbnN0YW5jZT8uc2VsZWN0aW9uQ2hhbmdlKHRoaXMuZWRpdG9yKTtcblxuICAgICAgICBpZiAodGhpcy5lZGl0b3JWYWx1ZSA9PT0gdmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmVkaXRvclZhbHVlID0gdmFsdWU7XG5cbiAgICAgICAgLy8gc2VyaWFsaXppbmdcbiAgICAgICAgbGV0IG5ld1ZhbHVlID0gdGhpcy5zZXJpYWxpemluZ1ZhbHVlKHZhbHVlKTtcbiAgICAgICAgdGhpcy5vbkNoYW5nZUNhbGxiYWNrKG5ld1ZhbHVlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNlcmlhbGl6aW5nVmFsdWUodmFsdWU6IERlc2NlbmRhbnRbXSk6IHN0cmluZyB8IERlc2NlbmRhbnRbXSB7XG4gICAgICAgIGNvbnN0IG1vZGUgPSB0aGlzLm9wdGlvbnM/Lm1vZGU7XG4gICAgICAgIGlmIChtb2RlID09PSBUaGVEYXRhTW9kZS5odG1sKSB7XG4gICAgICAgICAgICBsZXQgaHRtbFZhbHVlID0gJyc7XG4gICAgICAgICAgICBjb25zdCBpc0VtcHR5Q29udGVudCA9IFRoZVF1ZXJpZXMuaXNFbXB0eUNvbnRlbnQodmFsdWUpO1xuICAgICAgICAgICAgdmFsdWUuZm9yRWFjaCgoZWxlbWVudDogRWxlbWVudCkgPT4ge1xuICAgICAgICAgICAgICAgIGxldCBlbGVtZW50SHRtbCA9IHRoaXMuZWxlbWVudFRvSHRtbC5nZXQoZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgaWYgKGVsZW1lbnRIdG1sID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gc2VyaWFsaXppbmdcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudEh0bWwgPSBkYXRhU2VyaWFsaXppbmcobW9kZSwgW2VsZW1lbnRdKSBhcyBzdHJpbmc7XG4gICAgICAgICAgICAgICAgICAgIGh0bWxWYWx1ZSArPSBlbGVtZW50SHRtbDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50VG9IdG1sLnNldChlbGVtZW50LCBlbGVtZW50SHRtbCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaHRtbFZhbHVlICs9IGVsZW1lbnRIdG1sO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gaXNFbXB0eUNvbnRlbnQgPyAnJyA6IGh0bWxWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvbkVycm9ySGFuZGxlcigpIHtcbiAgICAgICAgdGhpcy5lZGl0b3Iub25FcnJvciA9IChlcnJvckRhdGE6IFNsYXRlRXJyb3IpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLnRoZU9uRXJyb3IpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRoZU9uRXJyb3IoZXJyb3JEYXRhKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZXJyb3JEYXRhLm5hdGl2ZUVycm9yKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvckRhdGEubmF0aXZlRXJyb3IpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHJlbmRlckVsZW1lbnQgPSAoZWxlbWVudDogRWxlbWVudCkgPT4ge1xuICAgICAgICBjb25zdCB0ZW1wbGF0ZSA9IHRoaXMudGVtcGxhdGVJbnN0YW5jZS5yZW5kZXJFbGVtZW50KGVsZW1lbnQpO1xuICAgICAgICBjb25zdCBjb21wb25lbnQgPSB0aGlzLmVkaXRvci5yZW5kZXJFbGVtZW50KGVsZW1lbnQpO1xuICAgICAgICByZXR1cm4gY29tcG9uZW50ID8gY29tcG9uZW50IDogdGVtcGxhdGU7XG4gICAgfTtcblxuICAgIHJlbmRlckxlYWYgPSAodGV4dDogVGV4dCkgPT4ge1xuICAgICAgICBjb25zdCBsZWFmID0gdGhpcy5lZGl0b3IucmVuZGVyTGVhZih0ZXh0KTtcbiAgICAgICAgcmV0dXJuIGxlYWYgPyBsZWFmIDogbnVsbDtcbiAgICB9O1xuXG4gICAgcmVuZGVyVGV4dCA9ICh0ZXh0OiBUZXh0KSA9PiB7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIE1hcmtUeXBlcykge1xuICAgICAgICAgICAgaWYgKHRleHRbTWFya1R5cGVzW2tleV1dKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFRoZVRleHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRleHQudGV4dC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBwcml2YXRlIGdlbmVyYXRlRGVjb3JhdGUoKSB7XG4gICAgICAgIHRoaXMuZGVjb3JhdGUgPSAobm9kZUVudHJ5OiBOb2RlRW50cnkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGRlY29yYXRpb25zID0gW107XG5cbiAgICAgICAgICAgIGlmICh0aGlzLnRoZURlY29yYXRlKSB7XG4gICAgICAgICAgICAgICAgZGVjb3JhdGlvbnMucHVzaCguLi50aGlzLnRoZURlY29yYXRlKHRoaXMuZWRpdG9yLCBub2RlRW50cnkpKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGRlY29yYXRpb25zO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIG9uS2V5RG93biA9IChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgICBzaG9ydGN1dHModGhpcy5lZGl0b3IsIGV2ZW50KTtcbiAgICAgICAgdGhpcy50aGVPbkRPTUV2ZW50LmVtaXQoe1xuICAgICAgICAgICAgbmF0aXZlRXZlbnQ6IGV2ZW50LFxuICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICAgIGtleTogZXZlbnQua2V5XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIEFuZ3VsYXJFZGl0b3Iub25LZXlkb3duKHRoaXMuZWRpdG9yLCBldmVudCk7XG5cbiAgICAgICAgaWYgKGlzS2V5SG90a2V5KCdtb2QrcycsIGV2ZW50KSAmJiAhZXZlbnQuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnRoZU9uU2F2ZS5lbWl0KHRoaXMuZWRpdG9yVmFsdWUpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzS2V5SG90a2V5KCdtb2QrYScsIGV2ZW50KSAmJiAhZXZlbnQuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVTZWxlY3RBbGwoZXZlbnQpO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIG1vdXNlZG93bihldmVudDogTW91c2VFdmVudCkge1xuICAgICAgICB0aGlzLmVkaXRvci5tb3VzZWRvd24oZXZlbnQpO1xuICAgIH1cblxuICAgIGhhbmRsZVNlbGVjdEFsbChldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBsZXQgbm9kZTogTm9kZUVudHJ5PE5vZGU+IHwgbnVsbCA9IG51bGw7XG4gICAgICAgIGlmICghdGhpcy5lZGl0b3Iuc2VsZWN0aW9uKSB7XG4gICAgICAgICAgICBUaGVUcmFuc2Zvcm1zLnNldEVuZFNlbGVjdGlvbih0aGlzLmVkaXRvcik7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgW3N0YXJ0LCBlbmRdID0gUmFuZ2UuZWRnZXModGhpcy5lZGl0b3Iuc2VsZWN0aW9uKTtcbiAgICAgICAgY29uc3Qgc2VsZWN0aW9uUmFuZ2UgPSBFZGl0b3IucmFuZ2UodGhpcy5lZGl0b3IsIHN0YXJ0LCBlbmQpO1xuICAgICAgICBjb25zdCBjb250YWluZXJCbG9ja3MgPSBUaGVRdWVyaWVzLmdldENvbnRhaW5lckJsb2Nrcyh0aGlzLmVkaXRvcik7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29udGFpbmVyQmxvY2tzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBbbm9kZV0gPSBUaGVRdWVyaWVzLmdldE5vZGVzQnlUeXBlKHRoaXMuZWRpdG9yLCBjb250YWluZXJCbG9ja3NbaV0pO1xuICAgICAgICAgICAgaWYgKG5vZGUpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBbLCBwYXRoXSA9IG5vZGU7XG4gICAgICAgICAgICAgICAgY29uc3QgaXNTdGFydFBhcmVudCA9IFBhdGguZXF1YWxzKHBhdGgsIHN0YXJ0LnBhdGguc2xpY2UoMCwgcGF0aC5sZW5ndGgpKTtcbiAgICAgICAgICAgICAgICBjb25zdCBpc0VuZFBhcmVudCA9IFBhdGguZXF1YWxzKHBhdGgsIGVuZC5wYXRoLnNsaWNlKDAsIHBhdGgubGVuZ3RoKSk7XG4gICAgICAgICAgICAgICAgaWYgKGlzU3RhcnRQYXJlbnQgJiYgaXNFbmRQYXJlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgbm9kZVJhbmdlID0gRWRpdG9yLnJhbmdlKHRoaXMuZWRpdG9yLCBwYXRoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFSYW5nZS5lcXVhbHMobm9kZVJhbmdlLCBzZWxlY3Rpb25SYW5nZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zZm9ybXMuc2VsZWN0KHRoaXMuZWRpdG9yLCBub2RlUmFuZ2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgbm9kZSA9IG51bGw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICghbm9kZSkge1xuICAgICAgICAgICAgbGV0IHJhbmdlID0gRWRpdG9yLnJhbmdlKHRoaXMuZWRpdG9yLCBbXSk7XG4gICAgICAgICAgICAvLyBJZiB0aGUgZmlyc3QgZWxlbWVudCBpcyBvZiBibG9jay1jYXJkIHR5cGUsXG4gICAgICAgICAgICAvLyBjbGlja2luZyBkZWxldGUgZG9lcyBub3QgdHJpZ2dlciB0aGUgdW5kZXJseWluZyBiZWZvcmVpbnB1dCBldmVudCxcbiAgICAgICAgICAgIC8vIHJlc3VsdGluZyBpbiBpbmVmZmVjdGl2ZSBkZWxldGlvbiAjV0lLLTE1Mzk2LlxuICAgICAgICAgICAgaWYgKHRoaXMuZWRpdG9yLmlzQmxvY2tDYXJkKHRoaXMuZWRpdG9yLmNoaWxkcmVuWzBdKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IFthbmNob3IsIGZvY3VzXSA9IFJhbmdlLmVkZ2VzKHJhbmdlLCB7IHJldmVyc2U6IHRydWUgfSk7XG4gICAgICAgICAgICAgICAgcmFuZ2UgPSB7IGFuY2hvciwgZm9jdXMgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIFRyYW5zZm9ybXMuc2VsZWN0KHRoaXMuZWRpdG9yLCByYW5nZSk7XG4gICAgICAgIH1cbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIG9uQ2xpY2sgPSAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgQW5ndWxhckVkaXRvci5vbkNsaWNrKHRoaXMuZWRpdG9yLCBldmVudCk7XG4gICAgICAgIHRoaXMudGhlT25ET01FdmVudC5lbWl0KHtcbiAgICAgICAgICAgIG5hdGl2ZUV2ZW50OiBldmVudFxuICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgb25TbGFQYXN0ZSA9IChldmVudDogQ2xpcGJvYXJkRXZlbnQpID0+IHtcbiAgICAgICAgdGhpcy50aGVPbkRPTUV2ZW50LmVtaXQoe1xuICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICAgIC4uLnRoaXMuZ2V0VGV4dEFuZEpTT04oZXZlbnQuY2xpcGJvYXJkRGF0YSlcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBuYXRpdmVFdmVudDogZXZlbnRcbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIG9uU2xhQmVmb3JlSW5wdXQgPSAoXG4gICAgICAgIGV2ZW50OiBFdmVudCAmIHtcbiAgICAgICAgICAgIGlucHV0VHlwZTogc3RyaW5nO1xuICAgICAgICAgICAgZGF0YTogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgICAgIGRhdGFUcmFuc2ZlcjogRGF0YVRyYW5zZmVyIHwgbnVsbDtcbiAgICAgICAgfVxuICAgICkgPT4ge1xuICAgICAgICBsZXQgZGF0YSA9IHtcbiAgICAgICAgICAgIGlucHV0VHlwZTogZXZlbnQuaW5wdXRUeXBlLFxuICAgICAgICAgICAgdGV4dDogKGV2ZW50LmRhdGEgfHwgZXZlbnQuZGF0YVRyYW5zZmVyKSBhcyBzdHJpbmdcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKGV2ZW50LmlucHV0VHlwZSA9PT0gJ2luc2VydEZyb21QYXN0ZScpIHtcbiAgICAgICAgICAgIGRhdGEgPSB7XG4gICAgICAgICAgICAgICAgLi4uZGF0YSxcbiAgICAgICAgICAgICAgICAuLi50aGlzLmdldFRleHRBbmRKU09OKChldmVudC5kYXRhIHx8IGV2ZW50LmRhdGFUcmFuc2ZlcikgYXMgRGF0YVRyYW5zZmVyKVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnRoZU9uRE9NRXZlbnQuZW1pdCh7XG4gICAgICAgICAgICBkYXRhLFxuICAgICAgICAgICAgbmF0aXZlRXZlbnQ6IGV2ZW50XG4gICAgICAgIH0pO1xuICAgIH07XG5cbiAgICBvblNsYUJsdXIgPSAoZXZlbnQ6IEZvY3VzRXZlbnQpID0+IHtcbiAgICAgICAgdGhpcy50aGVPbkRPTUV2ZW50LmVtaXQoe1xuICAgICAgICAgICAgbmF0aXZlRXZlbnQ6IGV2ZW50XG4gICAgICAgIH0pO1xuICAgIH07XG5cbiAgICBvblNsYUZvY3VzID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgICAgICB0aGlzLnRoZU9uRE9NRXZlbnQuZW1pdCh7XG4gICAgICAgICAgICBuYXRpdmVFdmVudDogZXZlbnRcbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIG9uU2xhQ3V0ID0gKGV2ZW50OiBDbGlwYm9hcmRFdmVudCkgPT4ge1xuICAgICAgICB0aGlzLnRoZU9uRE9NRXZlbnQuZW1pdCh7XG4gICAgICAgICAgICBuYXRpdmVFdmVudDogZXZlbnRcbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIG9uU2xhQ29weSA9IChldmVudDogQ2xpcGJvYXJkRXZlbnQpID0+IHt9O1xuXG4gICAgb25TbGFDb21wb3NpdGlvblN0YXJ0ID0gKGV2ZW50OiBDb21wb3NpdGlvbkV2ZW50KSA9PiB7fTtcblxuICAgIG9uU2xhQ29tcG9zaXRpb25FbmQgPSAoZXZlbnQ6IENvbXBvc2l0aW9uRXZlbnQpID0+IHt9O1xuXG4gICAgb25TbGFEcmFnU3RhcnQgPSAoZXZlbnQ6IERyYWdFdmVudCkgPT4ge307XG5cbiAgICBvblNsYURyYWdPdmVyID0gKGV2ZW50OiBEcmFnRXZlbnQpID0+IHt9O1xuXG4gICAgb25Ecm9wID0gKGV2ZW50OiBEcmFnRXZlbnQpID0+IHtcbiAgICAgICAgdGhpcy50aGVPbkRPTUV2ZW50LmVtaXQoe1xuICAgICAgICAgICAgbmF0aXZlRXZlbnQ6IGV2ZW50XG4gICAgICAgIH0pO1xuICAgIH07XG5cbiAgICBwcml2YXRlIGdldFRleHRBbmRKU09OKGRhdGE6IERhdGFUcmFuc2Zlcikge1xuICAgICAgICBjb25zdCBmcmFnbWVudCA9IGRhdGEuZ2V0RGF0YShgYXBwbGljYXRpb24vJHtDTElQQk9BUkRfRk9STUFUX0tFWX1gKTtcbiAgICAgICAgbGV0IGpzb24gPSBbXTtcbiAgICAgICAgaWYgKGZyYWdtZW50KSB7XG4gICAgICAgICAgICBqc29uID0gSlNPTi5wYXJzZShkZWNvZGVVUklDb21wb25lbnQod2luZG93LmF0b2IoZnJhZ21lbnQpKSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgdGV4dCA9IGRhdGEuZ2V0RGF0YSgndGV4dC9wbGFpbicpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAganNvbixcbiAgICAgICAgICAgIHRleHRcbiAgICAgICAgfTtcbiAgICB9XG59XG4iLCI8dGhlLXRvb2xiYXJcbiAgKm5nSWY9XCIhb3B0aW9ucz8ucmVhZG9ubHkgJiYgIXRoZUdsb2JhbFRvb2xiYXIgJiYgIWlzTW9iaWxlTW9kZVwiXG4gIFtuZ0NsYXNzXT1cIntcbiAgICAndGhlLXRvb2xiYXItZGlzYWJsZWQnOiBvcHRpb25zPy5kaXNhYmxlZFxuICB9XCJcbiAgI2dsb2JhbFRvb2xiYXJcbiAgW2VkaXRvcl09XCJlZGl0b3JcIlxuICBbdG9vbGJhckl0ZW1zXT1cInRvb2xiYXJFbnRpdHkuZ2xvYmFsXCJcbiAgW2NvbnRhaW5lckNsYXNzXT1cImdsb2JhbFRvb2xiYXJDbGFzc1wiXG4gIFthbGlnbl09XCJvcHRpb25zPy50b29sYmFyPy5hbGlnblwiXG4+PC90aGUtdG9vbGJhcj5cblxuPGRpdlxuICAjdGhlRWRpdGFibGVDb250YWluZXJcbiAgY2xhc3M9XCJ0aGUtZWRpdGFibGUtY29udGFpbmVyXCJcbiAgdGh5SW1hZ2VHcm91cFxuICBbbmdDbGFzc109XCJ7XG4gICAgJ3RoZS1lZGl0b3ItZGlzYWJsZWQnOiBvcHRpb25zPy5kaXNhYmxlZCxcbiAgICAnbWF4LWhlaWdodCc6IG1heEhlaWdodFxuICB9XCJcbiAgW25nU3R5bGVdPVwieyAnbWF4LWhlaWdodCc6IG1heEhlaWdodCB9XCJcbj5cbiAgPHNsYXRlLWVkaXRhYmxlXG4gICAgY2xhc3M9XCJ0aGUtZWRpdG9yLXR5cG9cIlxuICAgIFtlZGl0b3JdPVwiZWRpdG9yXCJcbiAgICBbbmdNb2RlbF09XCJlZGl0b3JWYWx1ZVwiXG4gICAgW3JlbmRlckVsZW1lbnRdPVwicmVuZGVyRWxlbWVudFwiXG4gICAgW3JlbmRlclRleHRdPVwicmVuZGVyVGV4dFwiXG4gICAgW3JlbmRlckxlYWZdPVwicmVuZGVyTGVhZlwiXG4gICAgW2lzU3RyaWN0RGVjb3JhdGVdPVwiZmFsc2VcIlxuICAgIFtkZWNvcmF0ZV09XCJkZWNvcmF0ZVwiXG4gICAgW3BsYWNlaG9sZGVyXT1cIm9wdGlvbnM/LnBsYWNlaG9sZGVyXCJcbiAgICBbcGxhY2Vob2xkZXJEZWNvcmF0ZV09XCJvcHRpb25zPy5wbGFjZWhvbGRlckRlY29yYXRlID8gb3B0aW9ucz8ucGxhY2Vob2xkZXJEZWNvcmF0ZSA6IG51bGxcIlxuICAgIFtyZWFkb25seV09XCJvcHRpb25zPy5yZWFkb25seSB8fCBvcHRpb25zPy5kaXNhYmxlZFwiXG4gICAgW2tleWRvd25dPVwib25LZXlEb3duXCJcbiAgICBbY2xpY2tdPVwib25DbGlja1wiXG4gICAgW3Bhc3RlXT1cIm9uU2xhUGFzdGVcIlxuICAgIFtibHVyXT1cIm9uU2xhQmx1clwiXG4gICAgW2ZvY3VzXT1cIm9uU2xhRm9jdXNcIlxuICAgIFtjb3B5XT1cIm9uU2xhQ29weVwiXG4gICAgW2N1dF09XCJvblNsYUN1dFwiXG4gICAgW2JlZm9yZUlucHV0XT1cIm9uU2xhQmVmb3JlSW5wdXRcIlxuICAgIFtjb21wb3NpdGlvblN0YXJ0XT1cIm9uU2xhQ29tcG9zaXRpb25TdGFydFwiXG4gICAgW2NvbXBvc2l0aW9uRW5kXT1cIm9uU2xhQ29tcG9zaXRpb25FbmRcIlxuICAgIFtkcmFnU3RhcnRdPVwib25TbGFEcmFnU3RhcnRcIlxuICAgIFtkcmFnT3Zlcl09XCJvblNsYURyYWdPdmVyXCJcbiAgICBbZHJvcF09XCJvbkRyb3BcIlxuICAgIFtzY3JvbGxTZWxlY3Rpb25JbnRvVmlld109XCJzY3JvbGxTZWxlY3Rpb25JbnRvVmlld1wiXG4gICAgKG5nTW9kZWxDaGFuZ2UpPVwidmFsdWVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgKG1vdXNlZG93bik9XCJtb3VzZWRvd24oJGV2ZW50KVwiXG4gID48L3NsYXRlLWVkaXRhYmxlPlxuXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNNb2JpbGVNb2RlXCI+XG4gICAgPHRoZS1pbmxpbmUtdG9vbGJhclxuICAgICAgKm5nSWY9XCIhb3B0aW9ucz8ucmVhZG9ubHkgJiYgb3B0aW9ucz8uaW5saW5lVG9vbGJhclZpc2libGVcIlxuICAgICAgW2VkaXRvcl09XCJlZGl0b3JcIlxuICAgICAgW3Rvb2xiYXJJdGVtc109XCJ0b29sYmFyRW50aXR5LmlubGluZVwiXG4gICAgPjwvdGhlLWlubGluZS10b29sYmFyPlxuICAgIDxkaXYgKm5nSWY9XCIhb3B0aW9ucz8ucmVhZG9ubHlcIiB0aGVRdWlja0luc2VydCBbZWRpdG9yXT1cImVkaXRvclwiIFtpc1Zpc2libGVdPVwidmlzaWJsZVF1aWNrSW5zZXJ0UGx1c1wiPjwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8dGhlLXRlbXBsYXRlICN0ZW1wbGF0ZUluc3RhbmNlPjwvdGhlLXRlbXBsYXRlPlxuPC9kaXY+XG4iXX0=
|