@plait/core 0.55.0 → 0.55.1
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/board/board.component.d.ts +2 -0
- package/esm2022/board/board.component.mjs +5 -3
- package/esm2022/core/list-render.mjs +4 -3
- package/esm2022/public-api.mjs +2 -2
- package/esm2022/services/context.service.mjs +30 -0
- package/esm2022/utils/common.mjs +5 -3
- package/esm2022/utils/fragment.mjs +5 -3
- package/esm2022/utils/group.mjs +7 -4
- package/esm2022/utils/z-index.mjs +2 -2
- package/fesm2022/plait-core.mjs +27 -10
- package/fesm2022/plait-core.mjs.map +1 -1
- package/package.json +1 -1
- package/public-api.d.ts +1 -1
- package/services/{image-context.service.d.ts → context.service.d.ts} +3 -0
- package/esm2022/services/image-context.service.mjs +0 -22
|
@@ -8,6 +8,7 @@ import { Viewport } from '../interfaces/viewport';
|
|
|
8
8
|
import { BoardComponentInterface } from './board.component.interface';
|
|
9
9
|
import { PlaitIslandBaseComponent } from '../core/island/island-base.component';
|
|
10
10
|
import { PlaitTheme } from '../interfaces/theme';
|
|
11
|
+
import { PlaitContextService } from '../services/context.service';
|
|
11
12
|
import { ListRender } from '../core/list-render';
|
|
12
13
|
import * as i0 from "@angular/core";
|
|
13
14
|
export declare class PlaitBoardComponent implements BoardComponentInterface, OnInit, OnChanges, AfterViewInit, AfterContentInit, OnDestroy {
|
|
@@ -38,6 +39,7 @@ export declare class PlaitBoardComponent implements BoardComponentInterface, OnI
|
|
|
38
39
|
viewportContainer: ElementRef;
|
|
39
40
|
islands?: QueryList<PlaitIslandBaseComponent>;
|
|
40
41
|
listRender: ListRender;
|
|
42
|
+
contextService: PlaitContextService;
|
|
41
43
|
constructor(cdr: ChangeDetectorRef, viewContainerRef: ViewContainerRef, elementRef: ElementRef<HTMLElement>, ngZone: NgZone);
|
|
42
44
|
ngOnInit(): void;
|
|
43
45
|
ngAfterContentInit(): void;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, ContentChildren, ElementRef, EventEmitter, HostBinding, Input, Output, ViewChild } from '@angular/core';
|
|
1
|
+
import { ChangeDetectionStrategy, Component, ContentChildren, ElementRef, EventEmitter, HostBinding, Input, Output, ViewChild, inject } from '@angular/core';
|
|
2
2
|
import rough from 'roughjs/bin/rough';
|
|
3
3
|
import { fromEvent, Subject } from 'rxjs';
|
|
4
4
|
import { filter, takeUntil, tap } from 'rxjs/operators';
|
|
@@ -19,7 +19,7 @@ import { PlaitIslandBaseComponent, hasOnBoardChange } from '../core/island/islan
|
|
|
19
19
|
import { BoardTransforms } from '../transforms/board';
|
|
20
20
|
import { withHotkey } from '../plugins/with-hotkey';
|
|
21
21
|
import { HOST_CLASS_NAME } from '../constants';
|
|
22
|
-
import { PlaitContextService } from '../services/
|
|
22
|
+
import { PlaitContextService } from '../services/context.service';
|
|
23
23
|
import { isPreventTouchMove } from '../utils/touch';
|
|
24
24
|
import { ZOOM_STEP } from '../constants/zoom';
|
|
25
25
|
import { withRelatedFragment } from '../plugins/with-related-fragment';
|
|
@@ -70,6 +70,7 @@ export class PlaitBoardComponent {
|
|
|
70
70
|
this.plaitPlugins = [];
|
|
71
71
|
this.plaitChange = new EventEmitter();
|
|
72
72
|
this.plaitBoardInitialized = new EventEmitter();
|
|
73
|
+
this.contextService = inject(PlaitContextService);
|
|
73
74
|
this.trackBy = (index, element) => {
|
|
74
75
|
return element.id;
|
|
75
76
|
};
|
|
@@ -273,6 +274,7 @@ export class PlaitBoardComponent {
|
|
|
273
274
|
}
|
|
274
275
|
updateListRender() {
|
|
275
276
|
this.listRender.update(this.board.children, this.initializeChildrenContext());
|
|
277
|
+
this.contextService.nextStable();
|
|
276
278
|
}
|
|
277
279
|
initializeChildrenContext() {
|
|
278
280
|
return {
|
|
@@ -436,4 +438,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImpor
|
|
|
436
438
|
type: ContentChildren,
|
|
437
439
|
args: [PlaitIslandBaseComponent, { descendants: true }]
|
|
438
440
|
}] } });
|
|
439
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9hcmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvYm9hcmQvYm9hcmQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHSCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULGVBQWUsRUFDZixVQUFVLEVBQ1YsWUFBWSxFQUNaLFdBQVcsRUFDWCxLQUFLLEVBS0wsTUFBTSxFQUdOLFNBQVMsRUFFWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEtBQUssTUFBTSxtQkFBbUIsQ0FBQztBQUV0QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxQyxPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsVUFBVSxFQUE0QyxNQUFNLHFCQUFxQixDQUFDO0FBSTNGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDMUQsT0FBTyxFQUNILFNBQVMsRUFDVCxVQUFVLEVBQ1YsU0FBUyxFQUNULGNBQWMsRUFDZCxnQkFBZ0IsRUFJaEIsV0FBVyxFQUNYLFdBQVcsRUFDWCxjQUFjLEVBQ2pCLE1BQU0sVUFBVSxDQUFDO0FBQ2xCLE9BQU8sRUFDSCxrQkFBa0IsRUFDbEIsa0JBQWtCLEVBQ2xCLHFCQUFxQixFQUNyQixhQUFhLEVBQ2Isa0JBQWtCLEVBQ2xCLDhCQUE4QixFQUM5QixxQkFBcUIsRUFDckIscUJB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QUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUdBLE9BQU87c0JBQXhFLGVBQWU7dUJBQUMsd0JBQXdCLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlckNvbnRlbnRJbml0LFxuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZHJlbixcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBIb3N0QmluZGluZyxcbiAgICBJbnB1dCxcbiAgICBOZ1pvbmUsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3Q29udGFpbmVyUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHJvdWdoIGZyb20gJ3JvdWdoanMvYmluL3JvdWdoJztcbmltcG9ydCB7IFJvdWdoU1ZHIH0gZnJvbSAncm91Z2hqcy9iaW4vc3ZnJztcbmltcG9ydCB7IGZyb21FdmVudCwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFBsYWl0Qm9hcmQsIFBsYWl0Qm9hcmRDaGFuZ2VFdmVudCwgUGxhaXRCb2FyZE9wdGlvbnMgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2JvYXJkJztcbmltcG9ydCB7IFBsYWl0RWxlbWVudCB9IGZyb20gJy4uL2ludGVyZmFjZXMvZWxlbWVudCc7XG5pbXBvcnQgeyBQbGFpdFBsdWdpbiB9IGZyb20gJy4uL2ludGVyZmFjZXMvcGx1Z2luJztcbmltcG9ydCB7IFZpZXdwb3J0IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy92aWV3cG9ydCc7XG5pbXBvcnQgeyBjcmVhdGVCb2FyZCB9IGZyb20gJy4uL3BsdWdpbnMvY3JlYXRlLWJvYXJkJztcbmltcG9ydCB7IHdpdGhCb2FyZCB9IGZyb20gJy4uL3BsdWdpbnMvd2l0aC1ib2FyZCc7XG5pbXBvcnQgeyB3aXRoSGlzdG9yeSB9IGZyb20gJy4uL3BsdWdpbnMvd2l0aC1oaXN0b3J5JztcbmltcG9ydCB7IHdpdGhIYW5kUG9pbnRlciB9IGZyb20gJy4uL3BsdWdpbnMvd2l0aC1oYW5kJztcbmltcG9ydCB7IHdpdGhTZWxlY3Rpb24gfSBmcm9tICcuLi9wbHVnaW5zL3dpdGgtc2VsZWN0aW9uJztcbmltcG9ydCB7XG4gICAgSVNfQ0hST01FLFxuICAgIElTX0ZJUkVGT1gsXG4gICAgSVNfU0FGQVJJLFxuICAgIGRlbGV0ZUZyYWdtZW50LFxuICAgIGdldENsaXBib2FyZERhdGEsXG4gICAgZ2V0UmVjdGFuZ2xlQnlFbGVtZW50cyxcbiAgICBnZXRTZWxlY3RlZEVsZW1lbnRzLFxuICAgIHNldENsaXBib2FyZERhdGEsXG4gICAgc2V0RnJhZ21lbnQsXG4gICAgdG9Ib3N0UG9pbnQsXG4gICAgdG9WaWV3Qm94UG9pbnRcbn0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHtcbiAgICBCT0FSRF9UT19PTl9DSEFOR0UsXG4gICAgQk9BUkRfVE9fQ09NUE9ORU5ULFxuICAgIEJPQVJEX1RPX0VMRU1FTlRfSE9TVCxcbiAgICBCT0FSRF9UT19IT1NULFxuICAgIEJPQVJEX1RPX1JPVUdIX1NWRyxcbiAgICBCT0FSRF9UT19NT1ZJTkdfUE9JTlRfSU5fQk9BUkQsXG4gICAgQk9BUkRfVE9fTU9WSU5HX1BPSU5ULFxuICAgIEJPQVJEX1RPX0FGVEVSX0NIQU5HRSxcbiAgICBJU19CT0FSRF9BTElWRVxufSBmcm9tICcuLi91dGlscy93ZWFrLW1hcHMnO1xuaW1wb3J0IHsgQm9hcmRDb21wb25lbnRJbnRlcmZhY2UgfSBmcm9tICcuL2JvYXJkLmNvbXBvbmVudC5pbnRlcmZhY2UnO1xuaW1wb3J0IHtcbiAgICBpbml0aWFsaXplVmlld3BvcnRPZmZzZXQsXG4gICAgaW5pdGlhbGl6ZVZpZXdCb3gsXG4gICAgaXNGcm9tVmlld3BvcnRDaGFuZ2UsXG4gICAgc2V0SXNGcm9tVmlld3BvcnRDaGFuZ2UsXG4gICAgaW5pdGlhbGl6ZVZpZXdwb3J0Q29udGFpbmVyLFxuICAgIHVwZGF0ZVZpZXdwb3J0T2Zmc2V0LFxuICAgIHVwZGF0ZVZpZXdwb3J0QnlTY3JvbGxpbmdcbn0gZnJvbSAnLi4vdXRpbHMvdmlld3BvcnQnO1xuaW1wb3J0IHsgd2l0aFZpZXdwb3J0IH0gZnJvbSAnLi4vcGx1Z2lucy93aXRoLXZpZXdwb3J0JztcbmltcG9ydCB7IHdpdGhNb3ZpbmcgfSBmcm9tICcuLi9wbHVnaW5zL3dpdGgtbW92aW5nJztcbmltcG9ydCB7IGhhc0lucHV0T3JUZXh0YXJlYVRhcmdldCB9IGZyb20gJy4uL3V0aWxzL2RvbS9jb21tb24nO1xuaW1wb3J0IHsgd2l0aE9wdGlvbnMgfSBmcm9tICcuLi9wbHVnaW5zL3dpdGgtb3B0aW9ucyc7XG5pbXBvcnQgeyBQbGFpdElzbGFuZEJhc2VDb21wb25lbnQsIGhhc09uQm9hcmRDaGFuZ2UgfSBmcm9tICcuLi9jb3JlL2lzbGFuZC9pc2xhbmQtYmFzZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQm9hcmRUcmFuc2Zvcm1zIH0gZnJvbSAnLi4vdHJhbnNmb3Jtcy9ib2FyZCc7XG5pbXBvcnQgeyBQbGFpdFRoZW1lIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy90aGVtZSc7XG5pbXBvcnQgeyB3aXRoSG90a2V5IH0gZnJvbSAnLi4vcGx1Z2lucy93aXRoLWhvdGtleSc7XG5pbXBvcnQgeyBIT1NUX0NMQVNTX05BTUUgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgUGxhaXRDb250ZXh0U2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2ltYWdlLWNvbnRleHQuc2VydmljZSc7XG5pbXBvcnQgeyBpc1ByZXZlbnRUb3VjaE1vdmUgfSBmcm9tICcuLi91dGlscy90b3VjaCc7XG5pbXBvcnQgeyBaT09NX1NURVAgfSBmcm9tICcuLi9jb25zdGFudHMvem9vbSc7XG5pbXBvcnQgeyB3aXRoUmVsYXRlZEZyYWdtZW50IH0gZnJvbSAnLi4vcGx1Z2lucy93aXRoLXJlbGF0ZWQtZnJhZ21lbnQnO1xuaW1wb3J0IHsgTGlzdFJlbmRlciB9IGZyb20gJy4uL2NvcmUvbGlzdC1yZW5kZXInO1xuaW1wb3J0IHsgUGxhaXRDaGlsZHJlbkNvbnRleHQgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcblxuY29uc3QgRWxlbWVudEhvc3RDbGFzcyA9ICdlbGVtZW50LWhvc3QnO1xuY29uc3QgRWxlbWVudFVwcGVySG9zdENsYXNzID0gJ2VsZW1lbnQtdXBwZXItaG9zdCc7XG5jb25zdCBFbGVtZW50QWN0aXZlSG9zdENsYXNzID0gJ2VsZW1lbnQtYWN0aXZlLWhvc3QnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3BsYWl0LWJvYXJkJyxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8ZGl2IGNsYXNzPVwidmlld3BvcnQtY29udGFpbmVyXCIgI3ZpZXdwb3J0Q29udGFpbmVyPlxuICAgICAgICAgICAgPHN2ZyAjc3ZnIHdpZHRoPVwiMTAwJVwiIGhlaWdodD1cIjEwMCVcIiBzdHlsZT1cInBvc2l0aW9uOiByZWxhdGl2ZTtcIiBjbGFzcz1cImJvYXJkLWhvc3Qtc3ZnXCI+XG4gICAgICAgICAgICAgICAgPGcgY2xhc3M9XCJlbGVtZW50LWhvc3RcIj48L2c+XG4gICAgICAgICAgICAgICAgPGcgY2xhc3M9XCJlbGVtZW50LXVwcGVyLWhvc3RcIj48L2c+XG4gICAgICAgICAgICAgICAgPGcgY2xhc3M9XCJlbGVtZW50LWFjdGl2ZS1ob3N0XCI+PC9nPlxuICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgYCxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBwcm92aWRlcnM6IFtQbGFpdENvbnRleHRTZXJ2aWNlXSxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIFBsYWl0Qm9hcmRDb21wb25lbnQgaW1wbGVtZW50cyBCb2FyZENvbXBvbmVudEludGVyZmFjZSwgT25Jbml0LCBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQsIEFmdGVyQ29udGVudEluaXQsIE9uRGVzdHJveSB7XG4gICAgaGFzSW5pdGlhbGl6ZWQgPSBmYWxzZTtcblxuICAgIGJvYXJkITogUGxhaXRCb2FyZDtcblxuICAgIHJvdWdoU1ZHITogUm91Z2hTVkc7XG5cbiAgICBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICBwcml2YXRlIHJlc2l6ZU9ic2VydmVyITogUmVzaXplT2JzZXJ2ZXI7XG5cbiAgICBASW5wdXQoKSBwbGFpdFZhbHVlOiBQbGFpdEVsZW1lbnRbXSA9IFtdO1xuXG4gICAgQElucHV0KCkgcGxhaXRWaWV3cG9ydCE6IFZpZXdwb3J0O1xuXG4gICAgQElucHV0KCkgcGxhaXRQbHVnaW5zOiBQbGFpdFBsdWdpbltdID0gW107XG5cbiAgICBASW5wdXQoKSBwbGFpdE9wdGlvbnM/OiBQbGFpdEJvYXJkT3B0aW9ucztcblxuICAgIEBJbnB1dCgpIHBsYWl0VGhlbWU/OiBQbGFpdFRoZW1lO1xuXG4gICAgQE91dHB1dCgpIHBsYWl0Q2hhbmdlOiBFdmVudEVtaXR0ZXI8UGxhaXRCb2FyZENoYW5nZUV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKSBwbGFpdEJvYXJkSW5pdGlhbGl6ZWQ6IEV2ZW50RW1pdHRlcjxQbGFpdEJvYXJkPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIGdldCBob3N0KCk6IFNWR1NWR0VsZW1lbnQge1xuICAgICAgICByZXR1cm4gdGhpcy5zdmcubmF0aXZlRWxlbWVudDtcbiAgICB9XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzJylcbiAgICBnZXQgaG9zdENsYXNzKCkge1xuICAgICAgICByZXR1cm4gYCR7SE9TVF9DTEFTU19OQU1FfSBwb2ludGVyLSR7dGhpcy5ib2FyZC5wb2ludGVyfSB0aGVtZS0ke3RoaXMuYm9hcmQudGhlbWUudGhlbWVDb2xvck1vZGV9ICR7dGhpcy5nZXRCcm93c2VyQ2xhc3NOYW1lKCl9YDtcbiAgICB9XG5cbiAgICBnZXRCcm93c2VyQ2xhc3NOYW1lKCkge1xuICAgICAgICBpZiAoSVNfU0FGQVJJKSB7XG4gICAgICAgICAgICByZXR1cm4gJ3NhZmFyaSc7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKElTX0NIUk9NRSkge1xuICAgICAgICAgICAgcmV0dXJuICdjaHJvbWUnO1xuICAgICAgICB9XG4gICAgICAgIGlmIChJU19GSVJFRk9YKSB7XG4gICAgICAgICAgICByZXR1cm4gJ2ZpcmVmb3gnO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLnJlYWRvbmx5JylcbiAgICBnZXQgcmVhZG9ubHkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmJvYXJkLm9wdGlvbnMucmVhZG9ubHk7XG4gICAgfVxuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5mb2N1c2VkJylcbiAgICBnZXQgaXNGb2N1c2VkKCkge1xuICAgICAgICByZXR1cm4gUGxhaXRCb2FyZC5pc0ZvY3VzKHRoaXMuYm9hcmQpO1xuICAgIH1cblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuZGlzYWJsZWQtc2Nyb2xsJylcbiAgICBnZXQgZGlzYWJsZWRTY3JvbGxPbk5vbkZvY3VzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5ib2FyZC5vcHRpb25zLmRpc2FibGVkU2Nyb2xsT25Ob25Gb2N1cyAmJiAhUGxhaXRCb2FyZC5pc0ZvY3VzKHRoaXMuYm9hcmQpO1xuICAgIH1cblxuICAgIGdldCBuYXRpdmVFbGVtZW50KCk6IEhUTUxFbGVtZW50IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgIH1cblxuICAgIEBWaWV3Q2hpbGQoJ3N2ZycsIHsgc3RhdGljOiB0cnVlIH0pXG4gICAgc3ZnITogRWxlbWVudFJlZjtcblxuICAgIEBWaWV3Q2hpbGQoJ3ZpZXdwb3J0Q29udGFpbmVyJywgeyByZWFkOiBFbGVtZW50UmVmLCBzdGF0aWM6IHRydWUgfSlcbiAgICB2aWV3cG9ydENvbnRhaW5lciE6IEVsZW1lbnRSZWY7XG5cbiAgICBAQ29udGVudENoaWxkcmVuKFBsYWl0SXNsYW5kQmFzZUNvbXBvbmVudCwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KSBpc2xhbmRzPzogUXVlcnlMaXN0PFBsYWl0SXNsYW5kQmFzZUNvbXBvbmVudD47XG5cbiAgICBsaXN0UmVuZGVyITogTGlzdFJlbmRlcjtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHVibGljIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXG4gICAgICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmVcbiAgICApIHt9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZWxlbWVudEhvc3QgPSB0aGlzLmhvc3QucXVlcnlTZWxlY3RvcihgLiR7RWxlbWVudEhvc3RDbGFzc31gKSBhcyBTVkdHRWxlbWVudDtcbiAgICAgICAgY29uc3QgZWxlbWVudFVwcGVySG9zdCA9IHRoaXMuaG9zdC5xdWVyeVNlbGVjdG9yKGAuJHtFbGVtZW50VXBwZXJIb3N0Q2xhc3N9YCkgYXMgU1ZHR0VsZW1lbnQ7XG4gICAgICAgIGNvbnN0IGVsZW1lbnRBY3RpdmVIb3N0ID0gdGhpcy5ob3N0LnF1ZXJ5U2VsZWN0b3IoYC4ke0VsZW1lbnRBY3RpdmVIb3N0Q2xhc3N9YCkgYXMgU1ZHR0VsZW1lbnQ7XG4gICAgICAgIGNvbnN0IHJvdWdoU1ZHID0gcm91Z2guc3ZnKHRoaXMuaG9zdCBhcyBTVkdTVkdFbGVtZW50LCB7XG4gICAgICAgICAgICBvcHRpb25zOiB7IHJvdWdobmVzczogMCwgc3Ryb2tlV2lkdGg6IDEgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5yb3VnaFNWRyA9IHJvdWdoU1ZHO1xuICAgICAgICB0aGlzLmluaXRpYWxpemVQbHVnaW5zKCk7XG5cbiAgICAgICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5pbml0aWFsaXplSG9va0xpc3RlbmVyKCk7XG4gICAgICAgICAgICB0aGlzLnZpZXdwb3J0U2Nyb2xsTGlzdGVuZXIoKTtcbiAgICAgICAgICAgIHRoaXMud2hlZWxab29tTGlzdGVuZXIoKTtcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudFJlc2l6ZUxpc3RlbmVyKCk7XG4gICAgICAgICAgICBmcm9tRXZlbnQ8TW91c2VFdmVudD4oZG9jdW1lbnQsICdtb3VzZWxlYXZlJylcbiAgICAgICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgQk9BUkRfVE9fTU9WSU5HX1BPSU5ULmRlbGV0ZSh0aGlzLmJvYXJkKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIEJPQVJEX1RPX0NPTVBPTkVOVC5zZXQodGhpcy5ib2FyZCwgdGhpcyk7XG4gICAgICAgIEJPQVJEX1RPX1JPVUdIX1NWRy5zZXQodGhpcy5ib2FyZCwgcm91Z2hTVkcpO1xuICAgICAgICBCT0FSRF9UT19IT1NULnNldCh0aGlzLmJvYXJkLCB0aGlzLmhvc3QpO1xuICAgICAgICBJU19CT0FSRF9BTElWRS5zZXQodGhpcy5ib2FyZCwgdHJ1ZSk7XG4gICAgICAgIEJPQVJEX1RPX0VMRU1FTlRfSE9TVC5zZXQodGhpcy5ib2FyZCwge1xuICAgICAgICAgICAgaG9zdDogZWxlbWVudEhvc3QsXG4gICAgICAgICAgICB1cHBlckhvc3Q6IGVsZW1lbnRVcHBlckhvc3QsXG4gICAgICAgICAgICBhY3RpdmVIb3N0OiBlbGVtZW50QWN0aXZlSG9zdCxcbiAgICAgICAgICAgIGNvbnRhaW5lcjogdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICAgICB2aWV3cG9ydENvbnRhaW5lcjogdGhpcy52aWV3cG9ydENvbnRhaW5lci5uYXRpdmVFbGVtZW50XG4gICAgICAgIH0pO1xuICAgICAgICBCT0FSRF9UT19PTl9DSEFOR0Uuc2V0KHRoaXMuYm9hcmQsICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVMaXN0UmVuZGVyKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIEJPQVJEX1RPX0FGVEVSX0NIQU5HRS5zZXQodGhpcy5ib2FyZCwgKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBjaGFuZ2VFdmVudDogUGxhaXRCb2FyZENoYW5nZUV2ZW50ID0ge1xuICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbjogdGhpcy5ib2FyZC5jaGlsZHJlbixcbiAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uczogdGhpcy5ib2FyZC5vcGVyYXRpb25zLFxuICAgICAgICAgICAgICAgICAgICB2aWV3cG9ydDogdGhpcy5ib2FyZC52aWV3cG9ydCxcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uOiB0aGlzLmJvYXJkLnNlbGVjdGlvbixcbiAgICAgICAgICAgICAgICAgICAgdGhlbWU6IHRoaXMuYm9hcmQudGhlbWVcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlSXNsYW5kcygpO1xuICAgICAgICAgICAgICAgIHRoaXMucGxhaXRDaGFuZ2UuZW1pdChjaGFuZ2VFdmVudCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZUxpc3RSZW5kZXIoKTtcbiAgICAgICAgdGhpcy5oYXNJbml0aWFsaXplZCA9IHRydWU7XG4gICAgfVxuXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmluaXRpYWxpemVJc2xhbmRzKCk7XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgICAgICBpZiAodGhpcy5oYXNJbml0aWFsaXplZCkge1xuICAgICAgICAgICAgY29uc3QgdmFsdWVDaGFuZ2UgPSBjaGFuZ2VzWydwbGFpdFZhbHVlJ107XG4gICAgICAgICAgICBjb25zdCBvcHRpb25zID0gY2hhbmdlc1sncGxhaXRPcHRpb25zJ107XG5cbiAgICAgICAgICAgIGlmICh2YWx1ZUNoYW5nZSkgdGhpcy5ib2FyZC5jaGlsZHJlbiA9IHZhbHVlQ2hhbmdlLmN1cnJlbnRWYWx1ZTtcbiAgICAgICAgICAgIGlmIChvcHRpb25zKSB0aGlzLmJvYXJkLm9wdGlvbnMgPSBvcHRpb25zLmN1cnJlbnRWYWx1ZTtcbiAgICAgICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnBsYWl0Qm9hcmRJbml0aWFsaXplZC5lbWl0KHRoaXMuYm9hcmQpO1xuICAgICAgICBpbml0aWFsaXplVmlld3BvcnRDb250YWluZXIodGhpcy5ib2FyZCk7XG4gICAgICAgIGluaXRpYWxpemVWaWV3Qm94KHRoaXMuYm9hcmQpO1xuICAgICAgICBpbml0aWFsaXplVmlld3BvcnRPZmZzZXQodGhpcy5ib2FyZCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0aWFsaXplUGx1Z2lucygpIHtcbiAgICAgICAgbGV0IGJvYXJkID0gd2l0aFJlbGF0ZWRGcmFnbWVudChcbiAgICAgICAgICAgIHdpdGhIb3RrZXkoXG4gICAgICAgICAgICAgICAgd2l0aEhhbmRQb2ludGVyKFxuICAgICAgICAgICAgICAgICAgICB3aXRoSGlzdG9yeShcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhTZWxlY3Rpb24od2l0aE1vdmluZyh3aXRoQm9hcmQod2l0aFZpZXdwb3J0KHdpdGhPcHRpb25zKGNyZWF0ZUJvYXJkKHRoaXMucGxhaXRWYWx1ZSwgdGhpcy5wbGFpdE9wdGlvbnMpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5wbGFpdFBsdWdpbnMuZm9yRWFjaChwbHVnaW4gPT4ge1xuICAgICAgICAgICAgYm9hcmQgPSBwbHVnaW4oYm9hcmQpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5ib2FyZCA9IGJvYXJkO1xuXG4gICAgICAgIGlmICh0aGlzLnBsYWl0Vmlld3BvcnQpIHtcbiAgICAgICAgICAgIHRoaXMuYm9hcmQudmlld3BvcnQgPSB0aGlzLnBsYWl0Vmlld3BvcnQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5wbGFpdFRoZW1lKSB7XG4gICAgICAgICAgICB0aGlzLmJvYXJkLnRoZW1lID0gdGhpcy5wbGFpdFRoZW1lO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0aWFsaXplSG9va0xpc3RlbmVyKCkge1xuICAgICAgICBmcm9tRXZlbnQ8TW91c2VFdmVudD4odGhpcy5ob3N0LCAnbW91c2Vkb3duJylcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5ib2FyZC5tb3VzZWRvd24oZXZlbnQpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgZnJvbUV2ZW50PFBvaW50ZXJFdmVudD4odGhpcy5ob3N0LCAncG9pbnRlcmRvd24nKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IFBvaW50ZXJFdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuYm9hcmQucG9pbnRlckRvd24oZXZlbnQpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgZnJvbUV2ZW50PE1vdXNlRXZlbnQ+KHRoaXMuaG9zdCwgJ21vdXNlbW92ZScpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIEJPQVJEX1RPX01PVklOR19QT0lOVF9JTl9CT0FSRC5zZXQodGhpcy5ib2FyZCwgW2V2ZW50LngsIGV2ZW50LnldKTtcbiAgICAgICAgICAgICAgICB0aGlzLmJvYXJkLm1vdXNlbW92ZShldmVudCk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICBmcm9tRXZlbnQ8UG9pbnRlckV2ZW50Pih0aGlzLmhvc3QsICdwb2ludGVybW92ZScpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChldmVudDogUG9pbnRlckV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgQk9BUkRfVE9fTU9WSU5HX1BPSU5UX0lOX0JPQVJELnNldCh0aGlzLmJvYXJkLCBbZXZlbnQueCwgZXZlbnQueV0pO1xuICAgICAgICAgICAgICAgIHRoaXMuYm9hcmQucG9pbnRlck1vdmUoZXZlbnQpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgZnJvbUV2ZW50PE1vdXNlRXZlbnQ+KHRoaXMuaG9zdCwgJ21vdXNlbGVhdmUnKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICBCT0FSRF9UT19NT1ZJTkdfUE9JTlRfSU5fQk9BUkQuZGVsZXRlKHRoaXMuYm9hcmQpO1xuICAgICAgICAgICAgICAgIHRoaXMuYm9hcmQubW91c2VsZWF2ZShldmVudCk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICBmcm9tRXZlbnQ8UG9pbnRlckV2ZW50Pih0aGlzLmhvc3QsICdwb2ludGVybGVhdmUnKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IFBvaW50ZXJFdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIEJPQVJEX1RPX01PVklOR19QT0lOVF9JTl9CT0FSRC5kZWxldGUodGhpcy5ib2FyZCk7XG4gICAgICAgICAgICAgICAgdGhpcy5ib2FyZC5wb2ludGVyTGVhdmUoZXZlbnQpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgZnJvbUV2ZW50PE1vdXNlRXZlbnQ+KGRvY3VtZW50LCAnbW91c2Vtb3ZlJylcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgQk9BUkRfVE9fTU9WSU5HX1BPSU5ULnNldCh0aGlzLmJvYXJkLCBbZXZlbnQueCwgZXZlbnQueV0pO1xuICAgICAgICAgICAgICAgIHRoaXMuYm9hcmQuZ2xvYmFsTW91c2Vtb3ZlKGV2ZW50KTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIGZyb21FdmVudDxQb2ludGVyRXZlbnQ+KGRvY3VtZW50LCAncG9pbnRlcm1vdmUnKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IFBvaW50ZXJFdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIEJPQVJEX1RPX01PVklOR19QT0lOVC5zZXQodGhpcy5ib2FyZCwgW2V2ZW50LngsIGV2ZW50LnldKTtcbiAgICAgICAgICAgICAgICB0aGlzLmJvYXJkLmdsb2JhbFBvaW50ZXJNb3ZlKGV2ZW50KTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIGZyb21FdmVudDxNb3VzZUV2ZW50Pih0aGlzLmhvc3QsICdtb3VzZXVwJylcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5ib2FyZC5tb3VzZXVwKGV2ZW50KTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIGZyb21FdmVudDxQb2ludGVyRXZlbnQ+KHRoaXMuaG9zdCwgJ3BvaW50ZXJ1cCcpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChldmVudDogUG9pbnRlckV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5ib2FyZC5wb2ludGVyVXAoZXZlbnQpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgZnJvbUV2ZW50PE1vdXNlRXZlbnQ+KGRvY3VtZW50LCAnbW91c2V1cCcpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuYm9hcmQuZ2xvYmFsTW91c2V1cChldmVudCk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICBmcm9tRXZlbnQ8UG9pbnRlckV2ZW50Pihkb2N1bWVudCwgJ3BvaW50ZXJ1cCcpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChldmVudDogUG9pbnRlckV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5ib2FyZC5nbG9iYWxQb2ludGVyVXAoZXZlbnQpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgZnJvbUV2ZW50PE1vdXNlRXZlbnQ+KHRoaXMuaG9zdCwgJ2RibGNsaWNrJylcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSxcbiAgICAgICAgICAgICAgICBmaWx0ZXIoKCkgPT4gdGhpcy5pc0ZvY3VzZWQgJiYgIVBsYWl0Qm9hcmQuaGFzQmVlblRleHRFZGl0aW5nKHRoaXMuYm9hcmQpKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmJvYXJkLmRibENsaWNrKGV2ZW50KTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIGZyb21FdmVudDxLZXlib2FyZEV2ZW50Pihkb2N1bWVudCwgJ2tleWRvd24nKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLFxuICAgICAgICAgICAgICAgIHRhcChldmVudCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYm9hcmQuZ2xvYmFsS2V5RG93bihldmVudCk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgZmlsdGVyKGV2ZW50ID0+IHRoaXMuaXNGb2N1c2VkICYmICFQbGFpdEJvYXJkLmhhc0JlZW5UZXh0RWRpdGluZyh0aGlzLmJvYXJkKSAmJiAhaGFzSW5wdXRPclRleHRhcmVhVGFyZ2V0KGV2ZW50LnRhcmdldCkpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuYm9hcmQua2V5RG93bihldmVudCk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICBmcm9tRXZlbnQ8S2V5Ym9hcmRFdmVudD4oZG9jdW1lbnQsICdrZXl1cCcpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JCksXG4gICAgICAgICAgICAgICAgZmlsdGVyKCgpID0+IHRoaXMuaXNGb2N1c2VkICYmICFQbGFpdEJvYXJkLmhhc0JlZW5UZXh0RWRpdGluZyh0aGlzLmJvYXJkKSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5ib2FyZD8ua2V5VXAoZXZlbnQpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgZnJvbUV2ZW50PENsaXBib2FyZEV2ZW50Pihkb2N1bWVudCwgJ2NvcHknKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLFxuICAgICAgICAgICAgICAgIGZpbHRlcigoKSA9PiB0aGlzLmlzRm9jdXNlZCAmJiAhUGxhaXRCb2FyZC5oYXNCZWVuVGV4dEVkaXRpbmcodGhpcy5ib2FyZCkpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChldmVudDogQ2xpcGJvYXJkRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIHNldEZyYWdtZW50KHRoaXMuYm9hcmQsICdjb3B5JywgZXZlbnQuY2xpcGJvYXJkRGF0YSk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICBmcm9tRXZlbnQ8Q2xpcGJvYXJkRXZlbnQ+KGRvY3VtZW50LCAncGFzdGUnKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLFxuICAgICAgICAgICAgICAgIGZpbHRlcigoKSA9PiB0aGlzLmlzRm9jdXNlZCAmJiAhUGxhaXRCb2FyZC5pc1JlYWRvbmx5KHRoaXMuYm9hcmQpICYmICFQbGFpdEJvYXJkLmhhc0JlZW5UZXh0RWRpdGluZyh0aGlzLmJvYXJkKSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoYXN5bmMgKGNsaXBib2FyZEV2ZW50OiBDbGlwYm9hcmRFdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IG1vdXNlUG9pbnQgPSBQbGFpdEJvYXJkLmdldE1vdmluZ1BvaW50SW5Cb2FyZCh0aGlzLmJvYXJkKTtcbiAgICAgICAgICAgICAgICBpZiAobW91c2VQb2ludCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXRQb2ludCA9IHRvVmlld0JveFBvaW50KHRoaXMuYm9hcmQsIHRvSG9zdFBvaW50KHRoaXMuYm9hcmQsIG1vdXNlUG9pbnRbMF0sIG1vdXNlUG9pbnRbMV0pKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2xpcGJvYXJkRGF0YSA9IGF3YWl0IGdldENsaXBib2FyZERhdGEoY2xpcGJvYXJkRXZlbnQuY2xpcGJvYXJkRGF0YSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYm9hcmQuaW5zZXJ0RnJhZ21lbnQoY2xpcGJvYXJkRGF0YSwgdGFyZ2V0UG9pbnQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIGZyb21FdmVudDxDbGlwYm9hcmRFdmVudD4oZG9jdW1lbnQsICdjdXQnKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLFxuICAgICAgICAgICAgICAgIGZpbHRlcigoKSA9PiB0aGlzLmlzRm9jdXNlZCAmJiAhUGxhaXRCb2FyZC5pc1JlYWRvbmx5KHRoaXMuYm9hcmQpICYmICFQbGFpdEJvYXJkLmhhc0JlZW5UZXh0RWRpdGluZyh0aGlzLmJvYXJkKSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBDbGlwYm9hcmRFdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgc2V0RnJhZ21lbnQodGhpcy5ib2FyZCwgJ2N1dCcsIGV2ZW50LmNsaXBib2FyZERhdGEpO1xuICAgICAgICAgICAgICAgIGRlbGV0ZUZyYWdtZW50KHRoaXMuYm9hcmQpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0aWFsaXplTGlzdFJlbmRlcigpIHtcbiAgICAgICAgdGhpcy5saXN0UmVuZGVyID0gbmV3IExpc3RSZW5kZXIodGhpcy5ib2FyZCwgdGhpcy52aWV3Q29udGFpbmVyUmVmKTtcbiAgICAgICAgdGhpcy5saXN0UmVuZGVyLmluaXRpYWxpemUodGhpcy5ib2FyZC5jaGlsZHJlbiwgdGhpcy5pbml0aWFsaXplQ2hpbGRyZW5Db250ZXh0KCkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlTGlzdFJlbmRlcigpIHtcbiAgICAgICAgdGhpcy5saXN0UmVuZGVyLnVwZGF0ZSh0aGlzLmJvYXJkLmNoaWxkcmVuLCB0aGlzLmluaXRpYWxpemVDaGlsZHJlbkNvbnRleHQoKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0aWFsaXplQ2hpbGRyZW5Db250ZXh0KCk6IFBsYWl0Q2hpbGRyZW5Db250ZXh0IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGJvYXJkOiB0aGlzLmJvYXJkLFxuICAgICAgICAgICAgcGFyZW50OiB0aGlzLmJvYXJkLFxuICAgICAgICAgICAgcGFyZW50RzogUGxhaXRCb2FyZC5nZXRFbGVtZW50SG9zdCh0aGlzLmJvYXJkKVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHByaXZhdGUgdmlld3BvcnRTY3JvbGxMaXN0ZW5lcigpIHtcbiAgICAgICAgZnJvbUV2ZW50PE1vdXNlRXZlbnQ+KHRoaXMudmlld3BvcnRDb250YWluZXIubmF0aXZlRWxlbWVudCwgJ3Njcm9sbCcpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JCksXG4gICAgICAgICAgICAgICAgZmlsdGVyKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzRnJvbVZpZXdwb3J0Q2hhbmdlKHRoaXMuYm9hcmQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRJc0Zyb21WaWV3cG9ydENoYW5nZSh0aGlzLmJvYXJkLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgc2Nyb2xsTGVmdCwgc2Nyb2xsVG9wIH0gPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgdXBkYXRlVmlld3BvcnRCeVNjcm9sbGluZyh0aGlzLmJvYXJkLCBzY3JvbGxMZWZ0LCBzY3JvbGxUb3ApO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIGZyb21FdmVudDxNb3VzZUV2ZW50Pih0aGlzLnZpZXdwb3J0Q29udGFpbmVyLm5hdGl2ZUVsZW1lbnQsICd0b3VjaG1vdmUnLCB7IHBhc3NpdmU6IGZhbHNlIH0pXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChldmVudDogRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoaXNQcmV2ZW50VG91Y2hNb3ZlKHRoaXMuYm9hcmQpKSB7XG4gICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVzaXplTGlzdGVuZXIoKSB7XG4gICAgICAgIHRoaXMucmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoKCkgPT4ge1xuICAgICAgICAgICAgaW5pdGlhbGl6ZVZpZXdwb3J0Q29udGFpbmVyKHRoaXMuYm9hcmQpO1xuICAgICAgICAgICAgaW5pdGlhbGl6ZVZpZXdCb3godGhpcy5ib2FyZCk7XG4gICAgICAgICAgICB1cGRhdGVWaWV3cG9ydE9mZnNldCh0aGlzLmJvYXJkKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMucmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLm5hdGl2ZUVsZW1lbnQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdGlhbGl6ZUlzbGFuZHMoKSB7XG4gICAgICAgIHRoaXMuaXNsYW5kcz8uZm9yRWFjaChpc2xhbmQgPT4ge1xuICAgICAgICAgICAgaXNsYW5kLmluaXRpYWxpemUodGhpcy5ib2FyZCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlSXNsYW5kcygpIHtcbiAgICAgICAgdGhpcy5pc2xhbmRzPy5mb3JFYWNoKGlzbGFuZCA9PiB7XG4gICAgICAgICAgICBpZiAoaGFzT25Cb2FyZENoYW5nZShpc2xhbmQpKSB7XG4gICAgICAgICAgICAgICAgaXNsYW5kLm9uQm9hcmRDaGFuZ2UoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlzbGFuZC5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB3aGVlbFpvb21MaXN0ZW5lcigpIHtcbiAgICAgICAgZnJvbUV2ZW50PFdoZWVsRXZlbnQ+KHRoaXMuaG9zdCwgJ3doZWVsJywgeyBwYXNzaXZlOiBmYWxzZSB9KVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IFdoZWVsRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAvLyBDcmVkaXRzIHRvIGV4Y2FsaWRyYXdcbiAgICAgICAgICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vZXhjYWxpZHJhdy9leGNhbGlkcmF3L2Jsb2IvYjdkN2NjYzkyOTY5NmNjMTdiNGNjMzQ0NTJlNGFmZDg0NmQ1OWY0Zi9zcmMvY29tcG9uZW50cy9BcHAudHN4I0w5MDYwXG4gICAgICAgICAgICAgICAgaWYgKGV2ZW50Lm1ldGFLZXkgfHwgZXZlbnQuY3RybEtleSkge1xuICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IGRlbHRhWCwgZGVsdGFZIH0gPSBldmVudDtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgem9vbSA9IHRoaXMuYm9hcmQudmlld3BvcnQuem9vbTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2lnbiA9IE1hdGguc2lnbihkZWx0YVkpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBNQVhfU1RFUCA9IFpPT01fU1RFUCAqIDEwMDtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYWJzRGVsdGEgPSBNYXRoLmFicyhkZWx0YVkpO1xuICAgICAgICAgICAgICAgICAgICBsZXQgZGVsdGEgPSBkZWx0YVk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChhYnNEZWx0YSA+IE1BWF9TVEVQKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkZWx0YSA9IE1BWF9TVEVQICogc2lnbjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBsZXQgbmV3Wm9vbSA9IHpvb20gLSBkZWx0YSAvIDEwMDtcbiAgICAgICAgICAgICAgICAgICAgLy8gaW5jcmVhc2Ugem9vbSBzdGVwcyB0aGUgbW9yZSB6b29tZWQtaW4gd2UgYXJlIChhcHBsaWVzIHRvID4xMDAlIG9ubHkpXG4gICAgICAgICAgICAgICAgICAgIG5ld1pvb20gKz1cbiAgICAgICAgICAgICAgICAgICAgICAgIE1hdGgubG9nMTAoTWF0aC5tYXgoMSwgem9vbSkpICpcbiAgICAgICAgICAgICAgICAgICAgICAgIC1zaWduICpcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlZHVjZWQgYW1wbGlmaWNhdGlvbiBmb3Igc21hbGwgZGVsdGFzIChzbWFsbCBtb3ZlbWVudHMgb24gYSB0cmFja3BhZClcbiAgICAgICAgICAgICAgICAgICAgICAgIE1hdGgubWluKDEsIGFic0RlbHRhIC8gMjApO1xuICAgICAgICAgICAgICAgICAgICBCb2FyZFRyYW5zZm9ybXMudXBkYXRlWm9vbSh0aGlzLmJvYXJkLCBuZXdab29tLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgdHJhY2tCeSA9IChpbmRleDogbnVtYmVyLCBlbGVtZW50OiBQbGFpdEVsZW1lbnQpID0+IHtcbiAgICAgICAgcmV0dXJuIGVsZW1lbnQuaWQ7XG4gICAgfTtcblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICAgICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICAgICAgICB0aGlzLnJlc2l6ZU9ic2VydmVyICYmIHRoaXMucmVzaXplT2JzZXJ2ZXI/LmRpc2Nvbm5lY3QoKTtcbiAgICAgICAgQk9BUkRfVE9fUk9VR0hfU1ZHLmRlbGV0ZSh0aGlzLmJvYXJkKTtcbiAgICAgICAgQk9BUkRfVE9fQ09NUE9ORU5ULmRlbGV0ZSh0aGlzLmJvYXJkKTtcbiAgICAgICAgQk9BUkRfVE9fUk9VR0hfU1ZHLmRlbGV0ZSh0aGlzLmJvYXJkKTtcbiAgICAgICAgQk9BUkRfVE9fSE9TVC5kZWxldGUodGhpcy5ib2FyZCk7XG4gICAgICAgIEJPQVJEX1RPX0VMRU1FTlRfSE9TVC5kZWxldGUodGhpcy5ib2FyZCk7XG4gICAgICAgIElTX0JPQVJEX0FMSVZFLnNldCh0aGlzLmJvYXJkLCBmYWxzZSk7XG4gICAgICAgIEJPQVJEX1RPX09OX0NIQU5HRS5kZWxldGUodGhpcy5ib2FyZCk7XG4gICAgICAgIEJPQVJEX1RPX0FGVEVSX0NIQU5HRS5zZXQodGhpcy5ib2FyZCwgKCkgPT4ge30pO1xuICAgIH1cblxuICAgIG1hcmtGb3JDaGVjaygpIHtcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUlzbGFuZHMoKTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl19
|
|
441
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9hcmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvYm9hcmQvYm9hcmQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHSCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULGVBQWUsRUFDZixVQUFVLEVBQ1YsWUFBWSxFQUNaLFdBQVcsRUFDWCxLQUFLLEVBS0wsTUFBTSxFQUdOLFNBQVMsRUFFVCxNQUFNLEVBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxLQUFLLE1BQU0sbUJBQW1CLENBQUM7QUFFdEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFVBQVUsRUFBNEMsTUFBTSxxQkFBcUIsQ0FBQztBQUkzRixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2xELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzFELE9BQU8sRUFDSCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFNBQVMsRUFDVCxjQUFjLEVBQ2QsZ0JBQWdCLEVBSWhCLFdBQVcsRUFDWCxXQUFXLEVBQ1gsY0FBYyxFQUNqQixNQUFNLFVBQVUsQ0FBQztBQUNsQixPQUFPLEVBQ0gsa0JBQWtCLEVBQ2xCLGtCQUFrQixFQUNsQixxQkFBcUIsRUFDckIsYUFBYSxFQUNiLGtCQUFrQixFQUNsQiw4QkFBOEIsRUFDOUIscUJBQXFC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QURGLFNBQVM7dUJBQUMsS0FBSyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFJbEMsaUJBQWlCO3NCQURoQixTQUFTO3VCQUFDLG1CQUFtQixFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUdBLE9BQU87c0JBQXhFLGVBQWU7dUJBQUMsd0JBQXdCLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlckNvbnRlbnRJbml0LFxuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZHJlbixcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBIb3N0QmluZGluZyxcbiAgICBJbnB1dCxcbiAgICBOZ1pvbmUsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3Q29udGFpbmVyUmVmLFxuICAgIGluamVjdFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCByb3VnaCBmcm9tICdyb3VnaGpzL2Jpbi9yb3VnaCc7XG5pbXBvcnQgeyBSb3VnaFNWRyB9IGZyb20gJ3JvdWdoanMvYmluL3N2Zyc7XG5pbXBvcnQgeyBmcm9tRXZlbnQsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgdGFrZVVudGlsLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBQbGFpdEJvYXJkLCBQbGFpdEJvYXJkQ2hhbmdlRXZlbnQsIFBsYWl0Qm9hcmRPcHRpb25zIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9ib2FyZCc7XG5pbXBvcnQgeyBQbGFpdEVsZW1lbnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2VsZW1lbnQnO1xuaW1wb3J0IHsgUGxhaXRQbHVnaW4gfSBmcm9tICcuLi9pbnRlcmZhY2VzL3BsdWdpbic7XG5pbXBvcnQgeyBWaWV3cG9ydCB9IGZyb20gJy4uL2ludGVyZmFjZXMvdmlld3BvcnQnO1xuaW1wb3J0IHsgY3JlYXRlQm9hcmQgfSBmcm9tICcuLi9wbHVnaW5zL2NyZWF0ZS1ib2FyZCc7XG5pbXBvcnQgeyB3aXRoQm9hcmQgfSBmcm9tICcuLi9wbHVnaW5zL3dpdGgtYm9hcmQnO1xuaW1wb3J0IHsgd2l0aEhpc3RvcnkgfSBmcm9tICcuLi9wbHVnaW5zL3dpdGgtaGlzdG9yeSc7XG5pbXBvcnQgeyB3aXRoSGFuZFBvaW50ZXIgfSBmcm9tICcuLi9wbHVnaW5zL3dpdGgtaGFuZCc7XG5pbXBvcnQgeyB3aXRoU2VsZWN0aW9uIH0gZnJvbSAnLi4vcGx1Z2lucy93aXRoLXNlbGVjdGlvbic7XG5pbXBvcnQge1xuICAgIElTX0NIUk9NRSxcbiAgICBJU19GSVJFRk9YLFxuICAgIElTX1NBRkFSSSxcbiAgICBkZWxldGVGcmFnbWVudCxcbiAgICBnZXRDbGlwYm9hcmREYXRhLFxuICAgIGdldFJlY3RhbmdsZUJ5RWxlbWVudHMsXG4gICAgZ2V0U2VsZWN0ZWRFbGVtZW50cyxcbiAgICBzZXRDbGlwYm9hcmREYXRhLFxuICAgIHNldEZyYWdtZW50LFxuICAgIHRvSG9zdFBvaW50LFxuICAgIHRvVmlld0JveFBvaW50XG59IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7XG4gICAgQk9BUkRfVE9fT05fQ0hBTkdFLFxuICAgIEJPQVJEX1RPX0NPTVBPTkVOVCxcbiAgICBCT0FSRF9UT19FTEVNRU5UX0hPU1QsXG4gICAgQk9BUkRfVE9fSE9TVCxcbiAgICBCT0FSRF9UT19ST1VHSF9TVkcsXG4gICAgQk9BUkRfVE9fTU9WSU5HX1BPSU5UX0lOX0JPQVJELFxuICAgIEJPQVJEX1RPX01PVklOR19QT0lOVCxcbiAgICBCT0FSRF9UT19BRlRFUl9DSEFOR0UsXG4gICAgSVNfQk9BUkRfQUxJVkVcbn0gZnJvbSAnLi4vdXRpbHMvd2Vhay1tYXBzJztcbmltcG9ydCB7IEJvYXJkQ29tcG9uZW50SW50ZXJmYWNlIH0gZnJvbSAnLi9ib2FyZC5jb21wb25lbnQuaW50ZXJmYWNlJztcbmltcG9ydCB7XG4gICAgaW5pdGlhbGl6ZVZpZXdwb3J0T2Zmc2V0LFxuICAgIGluaXRpYWxpemVWaWV3Qm94LFxuICAgIGlzRnJvbVZpZXdwb3J0Q2hhbmdlLFxuICAgIHNldElzRnJvbVZpZXdwb3J0Q2hhbmdlLFxuICAgIGluaXRpYWxpemVWaWV3cG9ydENvbnRhaW5lcixcbiAgICB1cGRhdGVWaWV3cG9ydE9mZnNldCxcbiAgICB1cGRhdGVWaWV3cG9ydEJ5U2Nyb2xsaW5nXG59IGZyb20gJy4uL3V0aWxzL3ZpZXdwb3J0JztcbmltcG9ydCB7IHdpdGhWaWV3cG9ydCB9IGZyb20gJy4uL3BsdWdpbnMvd2l0aC12aWV3cG9ydCc7XG5pbXBvcnQgeyB3aXRoTW92aW5nIH0gZnJvbSAnLi4vcGx1Z2lucy93aXRoLW1vdmluZyc7XG5pbXBvcnQgeyBoYXNJbnB1dE9yVGV4dGFyZWFUYXJnZXQgfSBmcm9tICcuLi91dGlscy9kb20vY29tbW9uJztcbmltcG9ydCB7IHdpdGhPcHRpb25zIH0gZnJvbSAnLi4vcGx1Z2lucy93aXRoLW9wdGlvbnMnO1xuaW1wb3J0IHsgUGxhaXRJc2xhbmRCYXNlQ29tcG9uZW50LCBoYXNPbkJvYXJkQ2hhbmdlIH0gZnJvbSAnLi4vY29yZS9pc2xhbmQvaXNsYW5kLWJhc2UuY29tcG9uZW50JztcbmltcG9ydCB7IEJvYXJkVHJhbnNmb3JtcyB9IGZyb20gJy4uL3RyYW5zZm9ybXMvYm9hcmQnO1xuaW1wb3J0IHsgUGxhaXRUaGVtZSB9IGZyb20gJy4uL2ludGVyZmFjZXMvdGhlbWUnO1xuaW1wb3J0IHsgd2l0aEhvdGtleSB9IGZyb20gJy4uL3BsdWdpbnMvd2l0aC1ob3RrZXknO1xuaW1wb3J0IHsgSE9TVF9DTEFTU19OQU1FIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IFBsYWl0Q29udGV4dFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9jb250ZXh0LnNlcnZpY2UnO1xuaW1wb3J0IHsgaXNQcmV2ZW50VG91Y2hNb3ZlIH0gZnJvbSAnLi4vdXRpbHMvdG91Y2gnO1xuaW1wb3J0IHsgWk9PTV9TVEVQIH0gZnJvbSAnLi4vY29uc3RhbnRzL3pvb20nO1xuaW1wb3J0IHsgd2l0aFJlbGF0ZWRGcmFnbWVudCB9IGZyb20gJy4uL3BsdWdpbnMvd2l0aC1yZWxhdGVkLWZyYWdtZW50JztcbmltcG9ydCB7IExpc3RSZW5kZXIgfSBmcm9tICcuLi9jb3JlL2xpc3QtcmVuZGVyJztcbmltcG9ydCB7IFBsYWl0Q2hpbGRyZW5Db250ZXh0IH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5cbmNvbnN0IEVsZW1lbnRIb3N0Q2xhc3MgPSAnZWxlbWVudC1ob3N0JztcbmNvbnN0IEVsZW1lbnRVcHBlckhvc3RDbGFzcyA9ICdlbGVtZW50LXVwcGVyLWhvc3QnO1xuY29uc3QgRWxlbWVudEFjdGl2ZUhvc3RDbGFzcyA9ICdlbGVtZW50LWFjdGl2ZS1ob3N0JztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwbGFpdC1ib2FyZCcsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPGRpdiBjbGFzcz1cInZpZXdwb3J0LWNvbnRhaW5lclwiICN2aWV3cG9ydENvbnRhaW5lcj5cbiAgICAgICAgICAgIDxzdmcgI3N2ZyB3aWR0aD1cIjEwMCVcIiBoZWlnaHQ9XCIxMDAlXCIgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmU7XCIgY2xhc3M9XCJib2FyZC1ob3N0LXN2Z1wiPlxuICAgICAgICAgICAgICAgIDxnIGNsYXNzPVwiZWxlbWVudC1ob3N0XCI+PC9nPlxuICAgICAgICAgICAgICAgIDxnIGNsYXNzPVwiZWxlbWVudC11cHBlci1ob3N0XCI+PC9nPlxuICAgICAgICAgICAgICAgIDxnIGNsYXNzPVwiZWxlbWVudC1hY3RpdmUtaG9zdFwiPjwvZz5cbiAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgIGAsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbUGxhaXRDb250ZXh0U2VydmljZV0sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBQbGFpdEJvYXJkQ29tcG9uZW50IGltcGxlbWVudHMgQm9hcmRDb21wb25lbnRJbnRlcmZhY2UsIE9uSW5pdCwgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0LCBBZnRlckNvbnRlbnRJbml0LCBPbkRlc3Ryb3kge1xuICAgIGhhc0luaXRpYWxpemVkID0gZmFsc2U7XG5cbiAgICBib2FyZCE6IFBsYWl0Qm9hcmQ7XG5cbiAgICByb3VnaFNWRyE6IFJvdWdoU1ZHO1xuXG4gICAgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgcHJpdmF0ZSByZXNpemVPYnNlcnZlciE6IFJlc2l6ZU9ic2VydmVyO1xuXG4gICAgQElucHV0KCkgcGxhaXRWYWx1ZTogUGxhaXRFbGVtZW50W10gPSBbXTtcblxuICAgIEBJbnB1dCgpIHBsYWl0Vmlld3BvcnQhOiBWaWV3cG9ydDtcblxuICAgIEBJbnB1dCgpIHBsYWl0UGx1Z2luczogUGxhaXRQbHVnaW5bXSA9IFtdO1xuXG4gICAgQElucHV0KCkgcGxhaXRPcHRpb25zPzogUGxhaXRCb2FyZE9wdGlvbnM7XG5cbiAgICBASW5wdXQoKSBwbGFpdFRoZW1lPzogUGxhaXRUaGVtZTtcblxuICAgIEBPdXRwdXQoKSBwbGFpdENoYW5nZTogRXZlbnRFbWl0dGVyPFBsYWl0Qm9hcmRDaGFuZ2VFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KCkgcGxhaXRCb2FyZEluaXRpYWxpemVkOiBFdmVudEVtaXR0ZXI8UGxhaXRCb2FyZD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBnZXQgaG9zdCgpOiBTVkdTVkdFbGVtZW50IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3ZnLm5hdGl2ZUVsZW1lbnQ7XG4gICAgfVxuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gICAgZ2V0IGhvc3RDbGFzcygpIHtcbiAgICAgICAgcmV0dXJuIGAke0hPU1RfQ0xBU1NfTkFNRX0gcG9pbnRlci0ke3RoaXMuYm9hcmQucG9pbnRlcn0gdGhlbWUtJHt0aGlzLmJvYXJkLnRoZW1lLnRoZW1lQ29sb3JNb2RlfSAke3RoaXMuZ2V0QnJvd3NlckNsYXNzTmFtZSgpfWA7XG4gICAgfVxuXG4gICAgZ2V0QnJvd3NlckNsYXNzTmFtZSgpIHtcbiAgICAgICAgaWYgKElTX1NBRkFSSSkge1xuICAgICAgICAgICAgcmV0dXJuICdzYWZhcmknO1xuICAgICAgICB9XG4gICAgICAgIGlmIChJU19DSFJPTUUpIHtcbiAgICAgICAgICAgIHJldHVybiAnY2hyb21lJztcbiAgICAgICAgfVxuICAgICAgICBpZiAoSVNfRklSRUZPWCkge1xuICAgICAgICAgICAgcmV0dXJuICdmaXJlZm94JztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5yZWFkb25seScpXG4gICAgZ2V0IHJlYWRvbmx5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5ib2FyZC5vcHRpb25zLnJlYWRvbmx5O1xuICAgIH1cblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuZm9jdXNlZCcpXG4gICAgZ2V0IGlzRm9jdXNlZCgpIHtcbiAgICAgICAgcmV0dXJuIFBsYWl0Qm9hcmQuaXNGb2N1cyh0aGlzLmJvYXJkKTtcbiAgICB9XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmRpc2FibGVkLXNjcm9sbCcpXG4gICAgZ2V0IGRpc2FibGVkU2Nyb2xsT25Ob25Gb2N1cygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYm9hcmQub3B0aW9ucy5kaXNhYmxlZFNjcm9sbE9uTm9uRm9jdXMgJiYgIVBsYWl0Qm9hcmQuaXNGb2N1cyh0aGlzLmJvYXJkKTtcbiAgICB9XG5cbiAgICBnZXQgbmF0aXZlRWxlbWVudCgpOiBIVE1MRWxlbWVudCB7XG4gICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICB9XG5cbiAgICBAVmlld0NoaWxkKCdzdmcnLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICAgIHN2ZyE6IEVsZW1lbnRSZWY7XG5cbiAgICBAVmlld0NoaWxkKCd2aWV3cG9ydENvbnRhaW5lcicsIHsgcmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiB0cnVlIH0pXG4gICAgdmlld3BvcnRDb250YWluZXIhOiBFbGVtZW50UmVmO1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbihQbGFpdElzbGFuZEJhc2VDb21wb25lbnQsIHsgZGVzY2VuZGFudHM6IHRydWUgfSkgaXNsYW5kcz86IFF1ZXJ5TGlzdDxQbGFpdElzbGFuZEJhc2VDb21wb25lbnQ+O1xuXG4gICAgbGlzdFJlbmRlciE6IExpc3RSZW5kZXI7XG5cbiAgICBjb250ZXh0U2VydmljZSA9IGluamVjdChQbGFpdENvbnRleHRTZXJ2aWNlKTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHVibGljIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXG4gICAgICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmVcbiAgICApIHt9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZWxlbWVudEhvc3QgPSB0aGlzLmhvc3QucXVlcnlTZWxlY3RvcihgLiR7RWxlbWVudEhvc3RDbGFzc31gKSBhcyBTVkdHRWxlbWVudDtcbiAgICAgICAgY29uc3QgZWxlbWVudFVwcGVySG9zdCA9IHRoaXMuaG9zdC5xdWVyeVNlbGVjdG9yKGAuJHtFbGVtZW50VXBwZXJIb3N0Q2xhc3N9YCkgYXMgU1ZHR0VsZW1lbnQ7XG4gICAgICAgIGNvbnN0IGVsZW1lbnRBY3RpdmVIb3N0ID0gdGhpcy5ob3N0LnF1ZXJ5U2VsZWN0b3IoYC4ke0VsZW1lbnRBY3RpdmVIb3N0Q2xhc3N9YCkgYXMgU1ZHR0VsZW1lbnQ7XG4gICAgICAgIGNvbnN0IHJvdWdoU1ZHID0gcm91Z2guc3ZnKHRoaXMuaG9zdCBhcyBTVkdTVkdFbGVtZW50LCB7XG4gICAgICAgICAgICBvcHRpb25zOiB7IHJvdWdobmVzczogMCwgc3Ryb2tlV2lkdGg6IDEgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5yb3VnaFNWRyA9IHJvdWdoU1ZHO1xuICAgICAgICB0aGlzLmluaXRpYWxpemVQbHVnaW5zKCk7XG5cbiAgICAgICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5pbml0aWFsaXplSG9va0xpc3RlbmVyKCk7XG4gICAgICAgICAgICB0aGlzLnZpZXdwb3J0U2Nyb2xsTGlzdGVuZXIoKTtcbiAgICAgICAgICAgIHRoaXMud2hlZWxab29tTGlzdGVuZXIoKTtcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudFJlc2l6ZUxpc3RlbmVyKCk7XG4gICAgICAgICAgICBmcm9tRXZlbnQ8TW91c2VFdmVudD4oZG9jdW1lbnQsICdtb3VzZWxlYXZlJylcbiAgICAgICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgQk9BUkRfVE9fTU9WSU5HX1BPSU5ULmRlbGV0ZSh0aGlzLmJvYXJkKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIEJPQVJEX1RPX0NPTVBPTkVOVC5zZXQodGhpcy5ib2FyZCwgdGhpcyk7XG4gICAgICAgIEJPQVJEX1RPX1JPVUdIX1NWRy5zZXQodGhpcy5ib2FyZCwgcm91Z2hTVkcpO1xuICAgICAgICBCT0FSRF9UT19IT1NULnNldCh0aGlzLmJvYXJkLCB0aGlzLmhvc3QpO1xuICAgICAgICBJU19CT0FSRF9BTElWRS5zZXQodGhpcy5ib2FyZCwgdHJ1ZSk7XG4gICAgICAgIEJPQVJEX1RPX0VMRU1FTlRfSE9TVC5zZXQodGhpcy5ib2FyZCwge1xuICAgICAgICAgICAgaG9zdDogZWxlbWVudEhvc3QsXG4gICAgICAgICAgICB1cHBlckhvc3Q6IGVsZW1lbnRVcHBlckhvc3QsXG4gICAgICAgICAgICBhY3RpdmVIb3N0OiBlbGVtZW50QWN0aXZlSG9zdCxcbiAgICAgICAgICAgIGNvbnRhaW5lcjogdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICAgICB2aWV3cG9ydENvbnRhaW5lcjogdGhpcy52aWV3cG9ydENvbnRhaW5lci5uYXRpdmVFbGVtZW50XG4gICAgICAgIH0pO1xuICAgICAgICBCT0FSRF9UT19PTl9DSEFOR0Uuc2V0KHRoaXMuYm9hcmQsICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVMaXN0UmVuZGVyKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIEJPQVJEX1RPX0FGVEVSX0NIQU5HRS5zZXQodGhpcy5ib2FyZCwgKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBjaGFuZ2VFdmVudDogUGxhaXRCb2FyZENoYW5nZUV2ZW50ID0ge1xuICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbjogdGhpcy5ib2FyZC5jaGlsZHJlbixcbiAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uczogdGhpcy5ib2FyZC5vcGVyYXRpb25zLFxuICAgICAgICAgICAgICAgICAgICB2aWV3cG9ydDogdGhpcy5ib2FyZC52aWV3cG9ydCxcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uOiB0aGlzLmJvYXJkLnNlbGVjdGlvbixcbiAgICAgICAgICAgICAgICAgICAgdGhlbWU6IHRoaXMuYm9hcmQudGhlbWVcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlSXNsYW5kcygpO1xuICAgICAgICAgICAgICAgIHRoaXMucGxhaXRDaGFuZ2UuZW1pdChjaGFuZ2VFdmVudCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZUxpc3RSZW5kZXIoKTtcbiAgICAgICAgdGhpcy5oYXNJbml0aWFsaXplZCA9IHRydWU7XG4gICAgfVxuXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmluaXRpYWxpemVJc2xhbmRzKCk7XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgICAgICBpZiAodGhpcy5oYXNJbml0aWFsaXplZCkge1xuICAgICAgICAgICAgY29uc3QgdmFsdWVDaGFuZ2UgPSBjaGFuZ2VzWydwbGFpdFZhbHVlJ107XG4gICAgICAgICAgICBjb25zdCBvcHRpb25zID0gY2hhbmdlc1sncGxhaXRPcHRpb25zJ107XG5cbiAgICAgICAgICAgIGlmICh2YWx1ZUNoYW5nZSkgdGhpcy5ib2FyZC5jaGlsZHJlbiA9IHZhbHVlQ2hhbmdlLmN1cnJlbnRWYWx1ZTtcbiAgICAgICAgICAgIGlmIChvcHRpb25zKSB0aGlzLmJvYXJkLm9wdGlvbnMgPSBvcHRpb25zLmN1cnJlbnRWYWx1ZTtcbiAgICAgICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnBsYWl0Qm9hcmRJbml0aWFsaXplZC5lbWl0KHRoaXMuYm9hcmQpO1xuICAgICAgICBpbml0aWFsaXplVmlld3BvcnRDb250YWluZXIodGhpcy5ib2FyZCk7XG4gICAgICAgIGluaXRpYWxpemVWaWV3Qm94KHRoaXMuYm9hcmQpO1xuICAgICAgICBpbml0aWFsaXplVmlld3BvcnRPZmZzZXQodGhpcy5ib2FyZCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0aWFsaXplUGx1Z2lucygpIHtcbiAgICAgICAgbGV0IGJvYXJkID0gd2l0aFJlbGF0ZWRGcmFnbWVudChcbiAgICAgICAgICAgIHdpdGhIb3RrZXkoXG4gICAgICAgICAgICAgICAgd2l0aEhhbmRQb2ludGVyKFxuICAgICAgICAgICAgICAgICAgICB3aXRoSGlzdG9yeShcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhTZWxlY3Rpb24od2l0aE1vdmluZyh3aXRoQm9hcmQod2l0aFZpZXdwb3J0KHdpdGhPcHRpb25zKGNyZWF0ZUJvYXJkKHRoaXMucGxhaXRWYWx1ZSwgdGhpcy5wbGFpdE9wdGlvbnMpKSkpKSlcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5wbGFpdFBsdWdpbnMuZm9yRWFjaChwbHVnaW4gPT4ge1xuICAgICAgICAgICAgYm9hcmQgPSBwbHVnaW4oYm9hcmQpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5ib2FyZCA9IGJvYXJkO1xuXG4gICAgICAgIGlmICh0aGlzLnBsYWl0Vmlld3BvcnQpIHtcbiAgICAgICAgICAgIHRoaXMuYm9hcmQudmlld3BvcnQgPSB0aGlzLnBsYWl0Vmlld3BvcnQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5wbGFpdFRoZW1lKSB7XG4gICAgICAgICAgICB0aGlzLmJvYXJkLnRoZW1lID0gdGhpcy5wbGFpdFRoZW1lO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0aWFsaXplSG9va0xpc3RlbmVyKCkge1xuICAgICAgICBmcm9tRXZlbnQ8TW91c2VFdmVudD4odGhpcy5ob3N0LCAnbW91c2Vkb3duJylcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5ib2FyZC5tb3VzZWRvd24oZXZlbnQpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgZnJvbUV2ZW50PFBvaW50ZXJFdmVudD4odGhpcy5ob3N0LCAncG9pbnRlcmRvd24nKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IFBvaW50ZXJFdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuYm9hcmQucG9pbnRlckRvd24oZXZlbnQpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgZnJvbUV2ZW50PE1vdXNlRXZlbnQ+KHRoaXMuaG9zdCwgJ21vdXNlbW92ZScpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIEJPQVJEX1RPX01PVklOR19QT0lOVF9JTl9CT0FSRC5zZXQodGhpcy5ib2FyZCwgW2V2ZW50LngsIGV2ZW50LnldKTtcbiAgICAgICAgICAgICAgICB0aGlzLmJvYXJkLm1vdXNlbW92ZShldmVudCk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICBmcm9tRXZlbnQ8UG9pbnRlckV2ZW50Pih0aGlzLmhvc3QsICdwb2ludGVybW92ZScpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChldmVudDogUG9pbnRlckV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgQk9BUkRfVE9fTU9WSU5HX1BPSU5UX0lOX0JPQVJELnNldCh0aGlzLmJvYXJkLCBbZXZlbnQueCwgZXZlbnQueV0pO1xuICAgICAgICAgICAgICAgIHRoaXMuYm9hcmQucG9pbnRlck1vdmUoZXZlbnQpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgZnJvbUV2ZW50PE1vdXNlRXZlbnQ+KHRoaXMuaG9zdCwgJ21vdXNlbGVhdmUnKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICBCT0FSRF9UT19NT1ZJTkdfUE9JTlRfSU5fQk9BUkQuZGVsZXRlKHRoaXMuYm9hcmQpO1xuICAgICAgICAgICAgICAgIHRoaXMuYm9hcmQubW91c2VsZWF2ZShldmVudCk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICBmcm9tRXZlbnQ8UG9pbnRlckV2ZW50Pih0aGlzLmhvc3QsICdwb2ludGVybGVhdmUnKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IFBvaW50ZXJFdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIEJPQVJEX1RPX01PVklOR19QT0lOVF9JTl9CT0FSRC5kZWxldGUodGhpcy5ib2FyZCk7XG4gICAgICAgICAgICAgICAgdGhpcy5ib2FyZC5wb2ludGVyTGVhdmUoZXZlbnQpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgZnJvbUV2ZW50PE1vdXNlRXZlbnQ+KGRvY3VtZW50LCAnbW91c2Vtb3ZlJylcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgQk9BUkRfVE9fTU9WSU5HX1BPSU5ULnNldCh0aGlzLmJvYXJkLCBbZXZlbnQueCwgZXZlbnQueV0pO1xuICAgICAgICAgICAgICAgIHRoaXMuYm9hcmQuZ2xvYmFsTW91c2Vtb3ZlKGV2ZW50KTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIGZyb21FdmVudDxQb2ludGVyRXZlbnQ+KGRvY3VtZW50LCAncG9pbnRlcm1vdmUnKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IFBvaW50ZXJFdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIEJPQVJEX1RPX01PVklOR19QT0lOVC5zZXQodGhpcy5ib2FyZCwgW2V2ZW50LngsIGV2ZW50LnldKTtcbiAgICAgICAgICAgICAgICB0aGlzLmJvYXJkLmdsb2JhbFBvaW50ZXJNb3ZlKGV2ZW50KTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIGZyb21FdmVudDxNb3VzZUV2ZW50Pih0aGlzLmhvc3QsICdtb3VzZXVwJylcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5ib2FyZC5tb3VzZXVwKGV2ZW50KTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIGZyb21FdmVudDxQb2ludGVyRXZlbnQ+KHRoaXMuaG9zdCwgJ3BvaW50ZXJ1cCcpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChldmVudDogUG9pbnRlckV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5ib2FyZC5wb2ludGVyVXAoZXZlbnQpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgZnJvbUV2ZW50PE1vdXNlRXZlbnQ+KGRvY3VtZW50LCAnbW91c2V1cCcpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuYm9hcmQuZ2xvYmFsTW91c2V1cChldmVudCk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICBmcm9tRXZlbnQ8UG9pbnRlckV2ZW50Pihkb2N1bWVudCwgJ3BvaW50ZXJ1cCcpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChldmVudDogUG9pbnRlckV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5ib2FyZC5nbG9iYWxQb2ludGVyVXAoZXZlbnQpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgZnJvbUV2ZW50PE1vdXNlRXZlbnQ+KHRoaXMuaG9zdCwgJ2RibGNsaWNrJylcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSxcbiAgICAgICAgICAgICAgICBmaWx0ZXIoKCkgPT4gdGhpcy5pc0ZvY3VzZWQgJiYgIVBsYWl0Qm9hcmQuaGFzQmVlblRleHRFZGl0aW5nKHRoaXMuYm9hcmQpKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmJvYXJkLmRibENsaWNrKGV2ZW50KTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIGZyb21FdmVudDxLZXlib2FyZEV2ZW50Pihkb2N1bWVudCwgJ2tleWRvd24nKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLFxuICAgICAgICAgICAgICAgIHRhcChldmVudCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYm9hcmQuZ2xvYmFsS2V5RG93bihldmVudCk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgZmlsdGVyKGV2ZW50ID0+IHRoaXMuaXNGb2N1c2VkICYmICFQbGFpdEJvYXJkLmhhc0JlZW5UZXh0RWRpdGluZyh0aGlzLmJvYXJkKSAmJiAhaGFzSW5wdXRPclRleHRhcmVhVGFyZ2V0KGV2ZW50LnRhcmdldCkpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuYm9hcmQua2V5RG93bihldmVudCk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICBmcm9tRXZlbnQ8S2V5Ym9hcmRFdmVudD4oZG9jdW1lbnQsICdrZXl1cCcpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JCksXG4gICAgICAgICAgICAgICAgZmlsdGVyKCgpID0+IHRoaXMuaXNGb2N1c2VkICYmICFQbGFpdEJvYXJkLmhhc0JlZW5UZXh0RWRpdGluZyh0aGlzLmJvYXJkKSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5ib2FyZD8ua2V5VXAoZXZlbnQpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgZnJvbUV2ZW50PENsaXBib2FyZEV2ZW50Pihkb2N1bWVudCwgJ2NvcHknKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLFxuICAgICAgICAgICAgICAgIGZpbHRlcigoKSA9PiB0aGlzLmlzRm9jdXNlZCAmJiAhUGxhaXRCb2FyZC5oYXNCZWVuVGV4dEVkaXRpbmcodGhpcy5ib2FyZCkpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChldmVudDogQ2xpcGJvYXJkRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIHNldEZyYWdtZW50KHRoaXMuYm9hcmQsICdjb3B5JywgZXZlbnQuY2xpcGJvYXJkRGF0YSk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICBmcm9tRXZlbnQ8Q2xpcGJvYXJkRXZlbnQ+KGRvY3VtZW50LCAncGFzdGUnKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLFxuICAgICAgICAgICAgICAgIGZpbHRlcigoKSA9PiB0aGlzLmlzRm9jdXNlZCAmJiAhUGxhaXRCb2FyZC5pc1JlYWRvbmx5KHRoaXMuYm9hcmQpICYmICFQbGFpdEJvYXJkLmhhc0JlZW5UZXh0RWRpdGluZyh0aGlzLmJvYXJkKSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoYXN5bmMgKGNsaXBib2FyZEV2ZW50OiBDbGlwYm9hcmRFdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IG1vdXNlUG9pbnQgPSBQbGFpdEJvYXJkLmdldE1vdmluZ1BvaW50SW5Cb2FyZCh0aGlzLmJvYXJkKTtcbiAgICAgICAgICAgICAgICBpZiAobW91c2VQb2ludCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXRQb2ludCA9IHRvVmlld0JveFBvaW50KHRoaXMuYm9hcmQsIHRvSG9zdFBvaW50KHRoaXMuYm9hcmQsIG1vdXNlUG9pbnRbMF0sIG1vdXNlUG9pbnRbMV0pKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2xpcGJvYXJkRGF0YSA9IGF3YWl0IGdldENsaXBib2FyZERhdGEoY2xpcGJvYXJkRXZlbnQuY2xpcGJvYXJkRGF0YSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYm9hcmQuaW5zZXJ0RnJhZ21lbnQoY2xpcGJvYXJkRGF0YSwgdGFyZ2V0UG9pbnQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIGZyb21FdmVudDxDbGlwYm9hcmRFdmVudD4oZG9jdW1lbnQsICdjdXQnKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLFxuICAgICAgICAgICAgICAgIGZpbHRlcigoKSA9PiB0aGlzLmlzRm9jdXNlZCAmJiAhUGxhaXRCb2FyZC5pc1JlYWRvbmx5KHRoaXMuYm9hcmQpICYmICFQbGFpdEJvYXJkLmhhc0JlZW5UZXh0RWRpdGluZyh0aGlzLmJvYXJkKSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBDbGlwYm9hcmRFdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgc2V0RnJhZ21lbnQodGhpcy5ib2FyZCwgJ2N1dCcsIGV2ZW50LmNsaXBib2FyZERhdGEpO1xuICAgICAgICAgICAgICAgIGRlbGV0ZUZyYWdtZW50KHRoaXMuYm9hcmQpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0aWFsaXplTGlzdFJlbmRlcigpIHtcbiAgICAgICAgdGhpcy5saXN0UmVuZGVyID0gbmV3IExpc3RSZW5kZXIodGhpcy5ib2FyZCwgdGhpcy52aWV3Q29udGFpbmVyUmVmKTtcbiAgICAgICAgdGhpcy5saXN0UmVuZGVyLmluaXRpYWxpemUodGhpcy5ib2FyZC5jaGlsZHJlbiwgdGhpcy5pbml0aWFsaXplQ2hpbGRyZW5Db250ZXh0KCkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlTGlzdFJlbmRlcigpIHtcbiAgICAgICAgdGhpcy5saXN0UmVuZGVyLnVwZGF0ZSh0aGlzLmJvYXJkLmNoaWxkcmVuLCB0aGlzLmluaXRpYWxpemVDaGlsZHJlbkNvbnRleHQoKSk7XG4gICAgICAgIHRoaXMuY29udGV4dFNlcnZpY2UubmV4dFN0YWJsZSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdGlhbGl6ZUNoaWxkcmVuQ29udGV4dCgpOiBQbGFpdENoaWxkcmVuQ29udGV4dCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBib2FyZDogdGhpcy5ib2FyZCxcbiAgICAgICAgICAgIHBhcmVudDogdGhpcy5ib2FyZCxcbiAgICAgICAgICAgIHBhcmVudEc6IFBsYWl0Qm9hcmQuZ2V0RWxlbWVudEhvc3QodGhpcy5ib2FyZClcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHZpZXdwb3J0U2Nyb2xsTGlzdGVuZXIoKSB7XG4gICAgICAgIGZyb21FdmVudDxNb3VzZUV2ZW50Pih0aGlzLnZpZXdwb3J0Q29udGFpbmVyLm5hdGl2ZUVsZW1lbnQsICdzY3JvbGwnKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLFxuICAgICAgICAgICAgICAgIGZpbHRlcigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc0Zyb21WaWV3cG9ydENoYW5nZSh0aGlzLmJvYXJkKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0SXNGcm9tVmlld3BvcnRDaGFuZ2UodGhpcy5ib2FyZCwgZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChldmVudDogRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB7IHNjcm9sbExlZnQsIHNjcm9sbFRvcCB9ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgICAgICAgICAgICAgIHVwZGF0ZVZpZXdwb3J0QnlTY3JvbGxpbmcodGhpcy5ib2FyZCwgc2Nyb2xsTGVmdCwgc2Nyb2xsVG9wKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICBmcm9tRXZlbnQ8TW91c2VFdmVudD4odGhpcy52aWV3cG9ydENvbnRhaW5lci5uYXRpdmVFbGVtZW50LCAndG91Y2htb3ZlJywgeyBwYXNzaXZlOiBmYWxzZSB9KVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IEV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGlzUHJldmVudFRvdWNoTW92ZSh0aGlzLmJvYXJkKSkge1xuICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZWxlbWVudFJlc2l6ZUxpc3RlbmVyKCkge1xuICAgICAgICB0aGlzLnJlc2l6ZU9ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKCgpID0+IHtcbiAgICAgICAgICAgIGluaXRpYWxpemVWaWV3cG9ydENvbnRhaW5lcih0aGlzLmJvYXJkKTtcbiAgICAgICAgICAgIGluaXRpYWxpemVWaWV3Qm94KHRoaXMuYm9hcmQpO1xuICAgICAgICAgICAgdXBkYXRlVmlld3BvcnRPZmZzZXQodGhpcy5ib2FyZCk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGhpcy5uYXRpdmVFbGVtZW50KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRpYWxpemVJc2xhbmRzKCkge1xuICAgICAgICB0aGlzLmlzbGFuZHM/LmZvckVhY2goaXNsYW5kID0+IHtcbiAgICAgICAgICAgIGlzbGFuZC5pbml0aWFsaXplKHRoaXMuYm9hcmQpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZUlzbGFuZHMoKSB7XG4gICAgICAgIHRoaXMuaXNsYW5kcz8uZm9yRWFjaChpc2xhbmQgPT4ge1xuICAgICAgICAgICAgaWYgKGhhc09uQm9hcmRDaGFuZ2UoaXNsYW5kKSkge1xuICAgICAgICAgICAgICAgIGlzbGFuZC5vbkJvYXJkQ2hhbmdlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpc2xhbmQubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgd2hlZWxab29tTGlzdGVuZXIoKSB7XG4gICAgICAgIGZyb21FdmVudDxXaGVlbEV2ZW50Pih0aGlzLmhvc3QsICd3aGVlbCcsIHsgcGFzc2l2ZTogZmFsc2UgfSlcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBXaGVlbEV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gQ3JlZGl0cyB0byBleGNhbGlkcmF3XG4gICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2V4Y2FsaWRyYXcvZXhjYWxpZHJhdy9ibG9iL2I3ZDdjY2M5Mjk2OTZjYzE3YjRjYzM0NDUyZTRhZmQ4NDZkNTlmNGYvc3JjL2NvbXBvbmVudHMvQXBwLnRzeCNMOTA2MFxuICAgICAgICAgICAgICAgIGlmIChldmVudC5tZXRhS2V5IHx8IGV2ZW50LmN0cmxLZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBkZWx0YVgsIGRlbHRhWSB9ID0gZXZlbnQ7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHpvb20gPSB0aGlzLmJvYXJkLnZpZXdwb3J0Lnpvb207XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNpZ24gPSBNYXRoLnNpZ24oZGVsdGFZKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgTUFYX1NURVAgPSBaT09NX1NURVAgKiAxMDA7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGFic0RlbHRhID0gTWF0aC5hYnMoZGVsdGFZKTtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGRlbHRhID0gZGVsdGFZO1xuICAgICAgICAgICAgICAgICAgICBpZiAoYWJzRGVsdGEgPiBNQVhfU1RFUCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVsdGEgPSBNQVhfU1RFUCAqIHNpZ247XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgbGV0IG5ld1pvb20gPSB6b29tIC0gZGVsdGEgLyAxMDA7XG4gICAgICAgICAgICAgICAgICAgIC8vIGluY3JlYXNlIHpvb20gc3RlcHMgdGhlIG1vcmUgem9vbWVkLWluIHdlIGFyZSAoYXBwbGllcyB0byA+MTAwJSBvbmx5KVxuICAgICAgICAgICAgICAgICAgICBuZXdab29tICs9XG4gICAgICAgICAgICAgICAgICAgICAgICBNYXRoLmxvZzEwKE1hdGgubWF4KDEsIHpvb20pKSAqXG4gICAgICAgICAgICAgICAgICAgICAgICAtc2lnbiAqXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyByZWR1Y2VkIGFtcGxpZmljYXRpb24gZm9yIHNtYWxsIGRlbHRhcyAoc21hbGwgbW92ZW1lbnRzIG9uIGEgdHJhY2twYWQpXG4gICAgICAgICAgICAgICAgICAgICAgICBNYXRoLm1pbigxLCBhYnNEZWx0YSAvIDIwKTtcbiAgICAgICAgICAgICAgICAgICAgQm9hcmRUcmFuc2Zvcm1zLnVwZGF0ZVpvb20odGhpcy5ib2FyZCwgbmV3Wm9vbSwgZmFsc2UpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHRyYWNrQnkgPSAoaW5kZXg6IG51bWJlciwgZWxlbWVudDogUGxhaXRFbGVtZW50KSA9PiB7XG4gICAgICAgIHJldHVybiBlbGVtZW50LmlkO1xuICAgIH07XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgICAgICAgdGhpcy5yZXNpemVPYnNlcnZlciAmJiB0aGlzLnJlc2l6ZU9ic2VydmVyPy5kaXNjb25uZWN0KCk7XG4gICAgICAgIEJPQVJEX1RPX1JPVUdIX1NWRy5kZWxldGUodGhpcy5ib2FyZCk7XG4gICAgICAgIEJPQVJEX1RPX0NPTVBPTkVOVC5kZWxldGUodGhpcy5ib2FyZCk7XG4gICAgICAgIEJPQVJEX1RPX1JPVUdIX1NWRy5kZWxldGUodGhpcy5ib2FyZCk7XG4gICAgICAgIEJPQVJEX1RPX0hPU1QuZGVsZXRlKHRoaXMuYm9hcmQpO1xuICAgICAgICBCT0FSRF9UT19FTEVNRU5UX0hPU1QuZGVsZXRlKHRoaXMuYm9hcmQpO1xuICAgICAgICBJU19CT0FSRF9BTElWRS5zZXQodGhpcy5ib2FyZCwgZmFsc2UpO1xuICAgICAgICBCT0FSRF9UT19PTl9DSEFOR0UuZGVsZXRlKHRoaXMuYm9hcmQpO1xuICAgICAgICBCT0FSRF9UT19BRlRFUl9DSEFOR0Uuc2V0KHRoaXMuYm9hcmQsICgpID0+IHt9KTtcbiAgICB9XG5cbiAgICBtYXJrRm9yQ2hlY2soKSB7XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVJc2xhbmRzKCk7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -59,7 +59,8 @@ export class ListRender {
|
|
|
59
59
|
newComponentRefs.push(componentRef);
|
|
60
60
|
newContexts.push(context);
|
|
61
61
|
}
|
|
62
|
-
|
|
62
|
+
// item might has been changed, so need to compare the id
|
|
63
|
+
if (record.item === this.children[0] || record.item.id === this.children[0]?.id) {
|
|
63
64
|
currentIndexForFirstElement = record.currentIndex;
|
|
64
65
|
}
|
|
65
66
|
});
|
|
@@ -109,7 +110,7 @@ const trackBy = (index, element) => {
|
|
|
109
110
|
return element.id;
|
|
110
111
|
};
|
|
111
112
|
const createPluginComponent = (componentType, context, viewContainerRef, childrenContext) => {
|
|
112
|
-
const componentRef = viewContainerRef.createComponent(componentType);
|
|
113
|
+
const componentRef = viewContainerRef.createComponent(componentType, { injector: viewContainerRef.injector });
|
|
113
114
|
const instance = componentRef.instance;
|
|
114
115
|
instance.context = context;
|
|
115
116
|
componentRef.changeDetectorRef.detectChanges();
|
|
@@ -206,4 +207,4 @@ const mountOnItemMove = (element, index, childrenContext, currentIndexForFirstEl
|
|
|
206
207
|
});
|
|
207
208
|
}
|
|
208
209
|
};
|
|
209
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1yZW5kZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9jb3JlL2xpc3QtcmVuZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBc0QsZUFBZSxFQUFvQixNQUFNLGVBQWUsQ0FBQztBQUN0SCxPQUFPLEVBR0gsVUFBVSxFQUVWLFlBQVksRUFDWixTQUFTLEVBRVosTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNuRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsaUJBQWlCLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUV6RyxNQUFNLE9BQU8sVUFBVTtJQU9uQixZQUFvQixLQUFpQixFQUFVLGdCQUFrQztRQUE3RCxVQUFLLEdBQUwsS0FBSyxDQUFZO1FBQVUscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQU56RSxhQUFRLEdBQW1CLEVBQUUsQ0FBQztRQUM5QixrQkFBYSxHQUFnRCxFQUFFLENBQUM7UUFDaEUsYUFBUSxHQUFnQyxFQUFFLENBQUM7UUFDM0MsV0FBTSxHQUErQixJQUFJLENBQUM7UUFDM0MsZ0JBQVcsR0FBRyxLQUFLLENBQUM7SUFFeUQsQ0FBQztJQUU5RSxVQUFVLENBQUMsUUFBd0IsRUFBRSxlQUFxQztRQUM3RSxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztRQUN4QixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN6QixRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQ25DLGFBQWEsQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ3JDLGNBQWMsQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN2RCxN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LENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUN0QyxlQUFlLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsZUFBZSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNqRixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7QUFDTCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnRSZWYsIEl0ZXJhYmxlQ2hhbmdlUmVjb3JkLCBJdGVyYWJsZURpZmZlciwgSXRlcmFibGVEaWZmZXJzLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIEFuY2VzdG9yLFxuICAgIENvbXBvbmVudFR5cGUsXG4gICAgUGxhaXRCb2FyZCxcbiAgICBQbGFpdENoaWxkcmVuQ29udGV4dCxcbiAgICBQbGFpdEVsZW1lbnQsXG4gICAgUGxhaXROb2RlLFxuICAgIFBsYWl0UGx1Z2luRWxlbWVudENvbnRleHRcbn0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBQbGFpdFBsdWdpbkVsZW1lbnRDb21wb25lbnQgfSBmcm9tICcuL2VsZW1lbnQvcGx1Z2luLWVsZW1lbnQnO1xuaW1wb3J0IHsgTk9ERV9UT19JTkRFWCwgTk9ERV9UT19QQVJFTlQgfSBmcm9tICcuLi91dGlscy93ZWFrLW1hcHMnO1xuaW1wb3J0IHsgYWRkU2VsZWN0ZWRFbGVtZW50LCBpc1NlbGVjdGVkRWxlbWVudCwgcmVtb3ZlU2VsZWN0ZWRFbGVtZW50IH0gZnJvbSAnLi4vdXRpbHMvc2VsZWN0ZWQtZWxlbWVudCc7XG5cbmV4cG9ydCBjbGFzcyBMaXN0UmVuZGVyIHtcbiAgICBwcml2YXRlIGNoaWxkcmVuOiBQbGFpdEVsZW1lbnRbXSA9IFtdO1xuICAgIHByaXZhdGUgY29tcG9uZW50UmVmczogQ29tcG9uZW50UmVmPFBsYWl0UGx1Z2luRWxlbWVudENvbXBvbmVudD5bXSA9IFtdO1xuICAgIHByaXZhdGUgY29udGV4dHM6IFBsYWl0UGx1Z2luRWxlbWVudENvbnRleHRbXSA9IFtdO1xuICAgIHByaXZhdGUgZGlmZmVyOiBJdGVyYWJsZURpZmZlcjxhbnk+IHwgbnVsbCA9IG51bGw7XG4gICAgcHVibGljIGluaXRpYWxpemVkID0gZmFsc2U7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGJvYXJkOiBQbGFpdEJvYXJkLCBwcml2YXRlIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYpIHt9XG5cbiAgICBwdWJsaWMgaW5pdGlhbGl6ZShjaGlsZHJlbjogUGxhaXRFbGVtZW50W10sIGNoaWxkcmVuQ29udGV4dDogUGxhaXRDaGlsZHJlbkNvbnRleHQpIHtcbiAgICAgICAgdGhpcy5pbml0aWFsaXplZCA9IHRydWU7XG4gICAgICAgIHRoaXMuY2hpbGRyZW4gPSBjaGlsZHJlbjtcbiAgICAgICAgY2hpbGRyZW4uZm9yRWFjaCgoZGVzY2VuZGFudCwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIE5PREVfVE9fSU5ERVguc2V0KGRlc2NlbmRhbnQsIGluZGV4KTtcbiAgICAgICAgICAgIE5PREVfVE9fUEFSRU5ULnNldChkZXNjZW5kYW50LCBjaGlsZHJlbkNvbnRleHQucGFyZW50KTtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRleHQgPSBnZXRDb250ZXh0KHRoaXMuYm9hcmQsIGRlc2NlbmRhbnQsIGluZGV4LCBjaGlsZHJlbkNvbnRleHQucGFyZW50KTtcbiAgICAgICAgICAgIGNvbnN0IGNvbXBvbmVudFR5cGUgPSBnZXRDb21wb25lbnRUeXBlKHRoaXMuYm9hcmQsIGNvbnRleHQpO1xuICAgICAgICAgICAgY29uc3QgY29tcG9uZW50UmVmID0gY3JlYXRlUGx1Z2luQ29tcG9uZW50KGNvbXBvbmVudFR5cGUsIGNvbnRleHQsIHRoaXMudmlld0NvbnRhaW5lclJlZiwgY2hpbGRyZW5Db250ZXh0KTtcbiAgICAgICAgICAgIHRoaXMuY29tcG9uZW50UmVmcy5wdXNoKGNvbXBvbmVudFJlZik7XG4gICAgICAgICAgICB0aGlzLmNvbnRleHRzLnB1c2goY29udGV4dCk7XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBuZXdEaWZmZXJzID0gdGhpcy52aWV3Q29udGFpbmVyUmVmLmluamVjdG9yLmdldChJdGVyYWJsZURpZmZlcnMpO1xuICAgICAgICB0aGlzLmRpZmZlciA9IG5ld0RpZmZlcnMuZmluZChjaGlsZHJlbikuY3JlYXRlKHRyYWNrQnkpO1xuICAgICAgICB0aGlzLmRpZmZlci5kaWZmKGNoaWxkcmVuKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdXBkYXRlKGNoaWxkcmVuOiBQbGFpdEVsZW1lbnRbXSwgY2hpbGRyZW5Db250ZXh0OiBQbGFpdENoaWxkcmVuQ29udGV4dCkge1xuICAgICAgICBpZiAoIXRoaXMuaW5pdGlhbGl6ZWQpIHtcbiAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZShjaGlsZHJlbiwgY2hpbGRyZW5Db250ZXh0KTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMuZGlmZmVyKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0V4Y2VwdGlvbjogQ2FuIG5vdCBmaW5kIGRpZmZlciAnKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB7IGJvYXJkLCBwYXJlbnQgfSA9IGNoaWxkcmVuQ29udGV4dDtcbiAgICAgICAgY29uc3QgZGlmZlJlc3VsdCA9IHRoaXMuZGlmZmVyLmRpZmYoY2hpbGRyZW4pO1xuICAgICAgICBpZiAoZGlmZlJlc3VsdCkge1xuICAgICAgICAgICAgY29uc3QgbmV3Q29udGV4dHM6IFBsYWl0UGx1Z2luRWxlbWVudENvbnRleHRbXSA9IFtdO1xuICAgICAgICAgICAgY29uc3QgbmV3Q29tcG9uZW50UmVmczogQ29tcG9uZW50UmVmPFBsYWl0UGx1Z2luRWxlbWVudENvbXBvbmVudD5bXSA9IFtdO1xuICAgICAgICAgICAgbGV0IGN1cnJlbnRJbmRleEZvckZpcnN0RWxlbWVudDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG4gICAgICAgICAgICBkaWZmUmVzdWx0LmZvckVhY2hJdGVtKChyZWNvcmQ6IEl0ZXJhYmxlQ2hhbmdlUmVjb3JkPGFueT4pID0+IHtcbiAgICAgICAgICAgICAgICBOT0RFX1RPX0lOREVYLnNldChyZWNvcmQuaXRlbSwgcmVjb3JkLmN1cnJlbnRJbmRleCBhcyBudW1iZXIpO1xuICAgICAgICAgICAgICAgIE5PREVfVE9fUEFSRU5ULnNldChyZWNvcmQuaXRlbSwgY2hpbGRyZW5Db250ZXh0LnBhcmVudCk7XG4gICAgICAgICAgICAgICAgY29uc3QgcHJldmlvdXNDb250ZXh0ID0gcmVjb3JkLnByZXZpb3VzSW5kZXggPT09IG51bGwgPyB1bmRlZmluZWQgOiB0aGlzLmNvbnRleHRzW3JlY29yZC5wcmV2aW91c0luZGV4XTtcbiAgICAgICAgICAgICAgICBjb25zdCBjb250ZXh0ID0gZ2V0Q29udGV4dChib2FyZCwgcmVjb3JkLml0ZW0sIHJlY29yZC5jdXJyZW50SW5kZXggYXMgbnVtYmVyLCBwYXJlbnQsIHByZXZpb3VzQ29udGV4dCk7XG4gICAgICAgICAgICAgICAgaWYgKHJlY29yZC5wcmV2aW91c0luZGV4ID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbXBvbmVudFR5cGUgPSBnZXRDb21wb25lbnRUeXBlKGJvYXJkLCBjb250ZXh0KTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY29tcG9uZW50UmVmID0gY3JlYXRlUGx1Z2luQ29tcG9uZW50KGNvbXBvbmVudFR5cGUsIGNvbnRleHQsIHRoaXMudmlld0NvbnRhaW5lclJlZiwgY2hpbGRyZW5Db250ZXh0KTtcbiAgICAgICAgICAgICAgICAgICAgbmV3Q29udGV4dHMucHVzaChjb250ZXh0KTtcbiAgICAgICAgICAgICAgICAgICAgbmV3Q29tcG9uZW50UmVmcy5wdXNoKGNvbXBvbmVudFJlZik7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY29tcG9uZW50UmVmID0gdGhpcy5jb21wb25lbnRSZWZzW3JlY29yZC5wcmV2aW91c0luZGV4XTtcbiAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLmNvbnRleHQgPSBjb250ZXh0O1xuICAgICAgICAgICAgICAgICAgICBuZXdDb21wb25lbnRSZWZzLnB1c2goY29tcG9uZW50UmVmKTtcbiAgICAgICAgICAgICAgICAgICAgbmV3Q29udGV4dHMucHVzaChjb250ZXh0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHJlY29yZC5pdGVtID09PSB0aGlzLmNoaWxkcmVuWzBdKSB7XG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRJbmRleEZvckZpcnN0RWxlbWVudCA9IHJlY29yZC5jdXJyZW50SW5kZXg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBkaWZmUmVzdWx0LmZvckVhY2hPcGVyYXRpb24ocmVjb3JkID0+IHtcbiAgICAgICAgICAgICAgICAvLyByZW1vdmVkXG4gICAgICAgICAgICAgICAgaWYgKHJlY29yZC5jdXJyZW50SW5kZXggPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY29tcG9uZW50UmVmID0gdGhpcy5jb21wb25lbnRSZWZzW3JlY29yZC5wcmV2aW91c0luZGV4IGFzIG51bWJlcl07XG4gICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudFJlZj8uZGVzdHJveSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBtb3ZlZFxuICAgICAgICAgICAgICAgIGlmIChyZWNvcmQucHJldmlvdXNJbmRleCAhPT0gbnVsbCAmJiByZWNvcmQuY3VycmVudEluZGV4ICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIG1vdW50T25JdGVtTW92ZShyZWNvcmQuaXRlbSwgcmVjb3JkLmN1cnJlbnRJbmRleCwgY2hpbGRyZW5Db250ZXh0LCBjdXJyZW50SW5kZXhGb3JGaXJzdEVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5jb21wb25lbnRSZWZzID0gbmV3Q29tcG9uZW50UmVmcztcbiAgICAgICAgICAgIHRoaXMuY29udGV4dHMgPSBuZXdDb250ZXh0cztcbiAgICAgICAgICAgIHRoaXMuY2hpbGRyZW4gPSBjaGlsZHJlbjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IG5ld0NvbnRleHRzOiBQbGFpdFBsdWdpbkVsZW1lbnRDb250ZXh0W10gPSBbXTtcbiAgICAgICAgICAgIHRoaXMuY2hpbGRyZW4uZm9yRWFjaCgoZWxlbWVudCwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICBOT0RFX1RPX0lOREVYLnNldChlbGVtZW50LCBpbmRleCk7XG4gICAgICAgICAgICAgICAgTk9ERV9UT19QQVJFTlQuc2V0KGVsZW1lbnQsIGNoaWxkcmVuQ29udGV4dC5wYXJlbnQpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHByZXZpb3VzQ29udGV4dCA9IHRoaXMuY29udGV4dHNbaW5kZXhdO1xuICAgICAgICAgICAgICAgIGNvbnN0IHByZXZpb3VzQ29tcG9uZW50UmVmID0gdGhpcy5jb21wb25lbnRSZWZzW2luZGV4XTtcbiAgICAgICAgICAgICAgICBjb25zdCBjb250ZXh0ID0gZ2V0Q29udGV4dChib2FyZCwgZWxlbWVudCwgaW5kZXgsIHBhcmVudCwgcHJldmlvdXNDb250ZXh0KTtcbiAgICAgICAgICAgICAgICBwcmV2aW91c0NvbXBvbmVudFJlZi5pbnN0YW5jZS5jb250ZXh0ID0gY29udGV4dDtcbiAgICAgICAgICAgICAgICBuZXdDb250ZXh0cy5wdXNoKGNvbnRleHQpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLmNvbnRleHRzID0gbmV3Q29udGV4dHM7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5jaGlsZHJlbi5mb3JFYWNoKChlbGVtZW50OiBQbGFpdEVsZW1lbnQsIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmNvbXBvbmVudFJlZnNbaW5kZXhdKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jb21wb25lbnRSZWZzW2luZGV4XS5kZXN0cm95KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmNvbXBvbmVudFJlZnMgPSBbXTtcbiAgICAgICAgdGhpcy5jaGlsZHJlbiA9IFtdO1xuICAgICAgICB0aGlzLmNvbnRleHRzID0gW107XG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5kaWZmZXIgPSBudWxsO1xuICAgIH1cbn1cblxuY29uc3QgdHJhY2tCeSA9IChpbmRleDogbnVtYmVyLCBlbGVtZW50OiBQbGFpdEVsZW1lbnQpID0+IHtcbiAgICByZXR1cm4gZWxlbWVudC5pZDtcbn07XG5cbmNvbnN0IGNyZWF0ZVBsdWdpbkNvbXBvbmVudCA9IChcbiAgICBjb21wb25lbnRUeXBlOiBDb21wb25lbnRUeXBlPFBsYWl0UGx1Z2luRWxlbWVudENvbXBvbmVudD4sXG4gICAgY29udGV4dDogUGxhaXRQbHVnaW5FbGVtZW50Q29udGV4dCxcbiAgICB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgIGNoaWxkcmVuQ29udGV4dDogUGxhaXRDaGlsZHJlbkNvbnRleHRcbikgPT4ge1xuICAgIGNvbnN0IGNvbXBvbmVudFJlZiA9IHZpZXdDb250YWluZXJSZWYuY3JlYXRlQ29tcG9uZW50KGNvbXBvbmVudFR5cGUpO1xuICAgIGNvbnN0IGluc3RhbmNlID0gY29tcG9uZW50UmVmLmluc3RhbmNlO1xuICAgIGluc3RhbmNlLmNvbnRleHQgPSBjb250ZXh0O1xuICAgIGNvbXBvbmVudFJlZi5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgY29uc3QgZyA9IGNvbXBvbmVudFJlZi5pbnN0YW5jZS5nZXRDb250YWluZXJHKCk7XG4gICAgbW91bnRFbGVtZW50Ryhjb250ZXh0LmluZGV4LCBnLCBjaGlsZHJlbkNvbnRleHQpO1xuICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5pbml0aWFsaXplTGlzdFJlbmRlcigpO1xuICAgIHJldHVybiBjb21wb25lbnRSZWY7XG59O1xuXG5jb25zdCBnZXRDb21wb25lbnRUeXBlID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBjb250ZXh0OiBQbGFpdFBsdWdpbkVsZW1lbnRDb250ZXh0KSA9PiB7XG4gICAgY29uc3QgcmVzdWx0ID0gYm9hcmQuZHJhd0VsZW1lbnQoY29udGV4dCk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbmNvbnN0IGdldENvbnRleHQgPSAoXG4gICAgYm9hcmQ6IFBsYWl0Qm9hcmQsXG4gICAgZWxlbWVudDogUGxhaXRFbGVtZW50LFxuICAgIGluZGV4OiBudW1iZXIsXG4gICAgcGFyZW50OiBBbmNlc3RvcixcbiAgICBwcmV2aW91c0NvbnRleHQ/OiBQbGFpdFBsdWdpbkVsZW1lbnRDb250ZXh0XG4pOiBQbGFpdFBsdWdpbkVsZW1lbnRDb250ZXh0ID0+IHtcbiAgICBsZXQgaXNTZWxlY3RlZCA9IGlzU2VsZWN0ZWRFbGVtZW50KGJvYXJkLCBlbGVtZW50KTtcbiAgICBjb25zdCBwcmV2aW91c0VsZW1lbnQgPSBwcmV2aW91c0NvbnRleHQgJiYgcHJldmlvdXNDb250ZXh0LmVsZW1lbnQ7XG4gICAgaWYgKHByZXZpb3VzRWxlbWVudCAmJiBwcmV2aW91c0VsZW1lbnQgIT09IGVsZW1lbnQgJiYgaXNTZWxlY3RlZEVsZW1lbnQoYm9hcmQsIHByZXZpb3VzRWxlbWVudCkpIHtcbiAgICAgICAgaXNTZWxlY3RlZCA9IHRydWU7XG4gICAgICAgIHJlbW92ZVNlbGVjdGVkRWxlbWVudChib2FyZCwgcHJldmlvdXNFbGVtZW50KTtcbiAgICAgICAgYWRkU2VsZWN0ZWRFbGVtZW50KGJvYXJkLCBlbGVtZW50KTtcbiAgICB9XG4gICAgY29uc3QgY29udGV4dDogUGxhaXRQbHVnaW5FbGVtZW50Q29udGV4dCA9IHtcbiAgICAgICAgZWxlbWVudDogZWxlbWVudCxcbiAgICAgICAgcGFyZW50OiBwYXJlbnQsXG4gICAgICAgIGJvYXJkOiBib2FyZCxcbiAgICAgICAgc2VsZWN0ZWQ6IGlzU2VsZWN0ZWQsXG4gICAgICAgIGluZGV4XG4gICAgfTtcbiAgICByZXR1cm4gY29udGV4dDtcbn07XG5cbi8vIHRoZSBnIGRlcHRoIG9mIHJvb3QgZWxlbWVudO+8mlsxXS1bMl0tWzNdLVs0XVxuLy8gdGhlIGcgZGVwdGggb2Ygcm9vdCBlbGVtZW50IGFuZCBjaGlsZHJlbiBlbGVtZW5077yIdGhlIFsyXSBlbGVtZW50IGhhcyBjaGlsZHJlbu+8ie+8mlxuLy8gWzFdLVxuLy8gWzJdKFsyLTEtMV1bMi0xLTJdWzItMV1bMi0yXVsyLTMtMV1bMi0zLTJdWzItM11bMl0pLVxuLy8gWzNdLVxuLy8gWzRdXG5leHBvcnQgY29uc3QgbW91bnRFbGVtZW50RyA9IChcbiAgICBpbmRleDogbnVtYmVyLFxuICAgIGc6IFNWR0dFbGVtZW50LFxuICAgIGNoaWxkcmVuQ29udGV4dDogUGxhaXRDaGlsZHJlbkNvbnRleHQsXG4gICAgLy8gZm9yIG1vdmluZyBzY2VuZTogdGhlIGN1cnJlbnQgaW5kZXggZm9yIGZpcnN0IGVsZW1lbnQgYmVmb3JlIG1vdmluZ1xuICAgIGN1cnJlbnRJbmRleEZvckZpcnN0RWxlbWVudDogbnVtYmVyIHwgbnVsbCA9IG51bGxcbikgPT4ge1xuICAgIGNvbnN0IHsgcGFyZW50LCBwYXJlbnRHIH0gPSBjaGlsZHJlbkNvbnRleHQ7XG4gICAgaWYgKFBsYWl0Qm9hcmQuaXNCb2FyZChwYXJlbnQpKSB7XG4gICAgICAgIGlmIChpbmRleCA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IHByZXZpb3VzRWxlbWVudCA9IHBhcmVudC5jaGlsZHJlbltpbmRleCAtIDFdO1xuICAgICAgICAgICAgY29uc3QgcHJldmlvdXNDb250YWluZXJHID0gUGxhaXRFbGVtZW50LmdldENvbnRhaW5lckcocHJldmlvdXNFbGVtZW50LCB7IHN1cHByZXNzVGhyb3c6IGZhbHNlIH0pO1xuICAgICAgICAgICAgcHJldmlvdXNDb250YWluZXJHLmluc2VydEFkamFjZW50RWxlbWVudCgnYWZ0ZXJlbmQnLCBnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChjdXJyZW50SW5kZXhGb3JGaXJzdEVsZW1lbnQgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmaXJzdEVsZW1lbnQgPSBwYXJlbnQuY2hpbGRyZW5bY3VycmVudEluZGV4Rm9yRmlyc3RFbGVtZW50XTtcbiAgICAgICAgICAgICAgICBjb25zdCBmaXJzdENvbnRhaW5lckcgPSBmaXJzdEVsZW1lbnQgJiYgUGxhaXRFbGVtZW50LmdldENvbnRhaW5lckcoZmlyc3RFbGVtZW50LCB7IHN1cHByZXNzVGhyb3c6IHRydWUgfSk7XG4gICAgICAgICAgICAgICAgaWYgKGZpcnN0RWxlbWVudCAmJiBmaXJzdENvbnRhaW5lckcpIHtcbiAgICAgICAgICAgICAgICAgICAgcGFyZW50Ry5pbnNlcnRCZWZvcmUoZywgZmlyc3RDb250YWluZXJHKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2ZhaWwgdG8gbW91bnQgY29udGFpbmVyIG9uIG1vdmluZycpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcGFyZW50Ry5hcHBlbmQoZyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoaW5kZXggPiAwKSB7XG4gICAgICAgICAgICBjb25zdCBwcmV2aW91c0VsZW1lbnQgPSAocGFyZW50LmNoaWxkcmVuIGFzIFBsYWl0RWxlbWVudFtdKVtpbmRleCAtIDFdO1xuICAgICAgICAgICAgY29uc3QgcHJldmlvdXNFbGVtZW50RyA9IFBsYWl0RWxlbWVudC5nZXRFbGVtZW50RyhwcmV2aW91c0VsZW1lbnQpO1xuICAgICAgICAgICAgcHJldmlvdXNFbGVtZW50Ry5pbnNlcnRBZGphY2VudEVsZW1lbnQoJ2FmdGVyZW5kJywgZyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoY3VycmVudEluZGV4Rm9yRmlyc3RFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbmV4dEVsZW1lbnQgPSAocGFyZW50LmNoaWxkcmVuIGFzIFBsYWl0RWxlbWVudFtdKVtjdXJyZW50SW5kZXhGb3JGaXJzdEVsZW1lbnRdO1xuICAgICAgICAgICAgICAgIGNvbnN0IG5leHRQYXRoID0gbmV4dEVsZW1lbnQgJiYgUGxhaXRCb2FyZC5maW5kUGF0aChjaGlsZHJlbkNvbnRleHQuYm9hcmQsIG5leHRFbGVtZW50KTtcbiAgICAgICAgICAgICAgICBjb25zdCBmaXJzdCA9IG5leHRQYXRoICYmIFBsYWl0Tm9kZS5maXJzdChjaGlsZHJlbkNvbnRleHQuYm9hcmQsIG5leHRQYXRoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBmaXJzdENvbnRhaW5lckcgPSBmaXJzdCAmJiBQbGFpdEVsZW1lbnQuZ2V0Q29udGFpbmVyRyhmaXJzdCwgeyBzdXBwcmVzc1Rocm93OiBmYWxzZSB9KTtcbiAgICAgICAgICAgICAgICBpZiAoZmlyc3RDb250YWluZXJHKSB7XG4gICAgICAgICAgICAgICAgICAgIHBhcmVudEcuaW5zZXJ0QmVmb3JlKGcsIGZpcnN0Q29udGFpbmVyRyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdmYWlsIHRvIG1vdW50IGNvbnRhaW5lciBvbiBtb3ZpbmcnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGxldCBwYXJlbnRFbGVtZW50RyA9IFBsYWl0RWxlbWVudC5nZXRFbGVtZW50RyhwYXJlbnQpO1xuICAgICAgICAgICAgICAgIHBhcmVudEcuaW5zZXJ0QmVmb3JlKGcsIHBhcmVudEVsZW1lbnRHKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn07XG5cbmNvbnN0IG1vdW50T25JdGVtTW92ZSA9IChcbiAgICBlbGVtZW50OiBQbGFpdEVsZW1lbnQsXG4gICAgaW5kZXg6IG51bWJlcixcbiAgICBjaGlsZHJlbkNvbnRleHQ6IFBsYWl0Q2hpbGRyZW5Db250ZXh0LFxuICAgIGN1cnJlbnRJbmRleEZvckZpcnN0RWxlbWVudDogbnVtYmVyIHwgbnVsbFxuKSA9PiB7XG4gICAgY29uc3QgY29udGFpbmVyRyA9IFBsYWl0RWxlbWVudC5nZXRDb250YWluZXJHKGVsZW1lbnQsIHsgc3VwcHJlc3NUaHJvdzogZmFsc2UgfSk7XG4gICAgbW91bnRFbGVtZW50RyhpbmRleCwgY29udGFpbmVyRywgY2hpbGRyZW5Db250ZXh0LCBjdXJyZW50SW5kZXhGb3JGaXJzdEVsZW1lbnQpO1xuICAgIGlmIChlbGVtZW50LmNoaWxkcmVuICYmICFQbGFpdEVsZW1lbnQuaXNSb290RWxlbWVudChlbGVtZW50KSkge1xuICAgICAgICBlbGVtZW50LmNoaWxkcmVuLmZvckVhY2goKGNoaWxkLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgbW91bnRPbkl0ZW1Nb3ZlKGNoaWxkLCBpbmRleCwgeyAuLi5jaGlsZHJlbkNvbnRleHQsIHBhcmVudDogZWxlbWVudCB9LCBudWxsKTtcbiAgICAgICAgfSk7XG4gICAgfVxufTtcbiJdfQ==
|
|
210
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1yZW5kZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9jb3JlL2xpc3QtcmVuZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBc0QsZUFBZSxFQUFvQixNQUFNLGVBQWUsQ0FBQztBQUN0SCxPQUFPLEVBR0gsVUFBVSxFQUVWLFlBQVksRUFDWixTQUFTLEVBRVosTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNuRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsaUJBQWlCLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUV6RyxNQUFNLE9BQU8sVUFBVTtJQU9uQixZQUFvQixLQUFpQixFQUFVLGdCQUFrQztRQUE3RCxVQUFLLEdBQUwsS0FBSyxDQUFZO1FBQVUscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQU56RSxhQUFRLEdBQW1CLEVBQUUsQ0FBQztRQUM5QixrQkFBYSxHQUFnRCxFQUFFLENBQUM7UUFDaEUsYUFBUSxHQUFnQyxFQUFFLENBQUM7UUFDM0MsV0FBTSxHQUErQixJQUFJLENBQUM7UUFDM0MsZ0JBQVcsR0FBRyxLQUFLLENBQUM7SUFFeUQsQ0FBQztJQUU5RSxVQUFVLENBQUMsUUFBd0IsRUFBRSxlQUFxQztRQUM3RSxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztRQUN4QixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN6QixRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQ25DLGFBQWEsQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ3JDLGNBQWMsQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN2RCxN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QUssRUFBRSxVQUFVLEVBQUUsZUFBZSxFQUFFLDJCQUEyQixDQUFDLENBQUM7SUFDL0UsSUFBSSxPQUFPLENBQUMsUUFBUSxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQzNELE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQ3RDLGVBQWUsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxlQUFlLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ2pGLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztBQUNMLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudFJlZiwgSXRlcmFibGVDaGFuZ2VSZWNvcmQsIEl0ZXJhYmxlRGlmZmVyLCBJdGVyYWJsZURpZmZlcnMsIFZpZXdDb250YWluZXJSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgQW5jZXN0b3IsXG4gICAgQ29tcG9uZW50VHlwZSxcbiAgICBQbGFpdEJvYXJkLFxuICAgIFBsYWl0Q2hpbGRyZW5Db250ZXh0LFxuICAgIFBsYWl0RWxlbWVudCxcbiAgICBQbGFpdE5vZGUsXG4gICAgUGxhaXRQbHVnaW5FbGVtZW50Q29udGV4dFxufSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IFBsYWl0UGx1Z2luRWxlbWVudENvbXBvbmVudCB9IGZyb20gJy4vZWxlbWVudC9wbHVnaW4tZWxlbWVudCc7XG5pbXBvcnQgeyBOT0RFX1RPX0lOREVYLCBOT0RFX1RPX1BBUkVOVCB9IGZyb20gJy4uL3V0aWxzL3dlYWstbWFwcyc7XG5pbXBvcnQgeyBhZGRTZWxlY3RlZEVsZW1lbnQsIGlzU2VsZWN0ZWRFbGVtZW50LCByZW1vdmVTZWxlY3RlZEVsZW1lbnQgfSBmcm9tICcuLi91dGlscy9zZWxlY3RlZC1lbGVtZW50JztcblxuZXhwb3J0IGNsYXNzIExpc3RSZW5kZXIge1xuICAgIHByaXZhdGUgY2hpbGRyZW46IFBsYWl0RWxlbWVudFtdID0gW107XG4gICAgcHJpdmF0ZSBjb21wb25lbnRSZWZzOiBDb21wb25lbnRSZWY8UGxhaXRQbHVnaW5FbGVtZW50Q29tcG9uZW50PltdID0gW107XG4gICAgcHJpdmF0ZSBjb250ZXh0czogUGxhaXRQbHVnaW5FbGVtZW50Q29udGV4dFtdID0gW107XG4gICAgcHJpdmF0ZSBkaWZmZXI6IEl0ZXJhYmxlRGlmZmVyPGFueT4gfCBudWxsID0gbnVsbDtcbiAgICBwdWJsaWMgaW5pdGlhbGl6ZWQgPSBmYWxzZTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgYm9hcmQ6IFBsYWl0Qm9hcmQsIHByaXZhdGUgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZikge31cblxuICAgIHB1YmxpYyBpbml0aWFsaXplKGNoaWxkcmVuOiBQbGFpdEVsZW1lbnRbXSwgY2hpbGRyZW5Db250ZXh0OiBQbGFpdENoaWxkcmVuQ29udGV4dCkge1xuICAgICAgICB0aGlzLmluaXRpYWxpemVkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5jaGlsZHJlbiA9IGNoaWxkcmVuO1xuICAgICAgICBjaGlsZHJlbi5mb3JFYWNoKChkZXNjZW5kYW50LCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgTk9ERV9UT19JTkRFWC5zZXQoZGVzY2VuZGFudCwgaW5kZXgpO1xuICAgICAgICAgICAgTk9ERV9UT19QQVJFTlQuc2V0KGRlc2NlbmRhbnQsIGNoaWxkcmVuQ29udGV4dC5wYXJlbnQpO1xuICAgICAgICAgICAgY29uc3QgY29udGV4dCA9IGdldENvbnRleHQodGhpcy5ib2FyZCwgZGVzY2VuZGFudCwgaW5kZXgsIGNoaWxkcmVuQ29udGV4dC5wYXJlbnQpO1xuICAgICAgICAgICAgY29uc3QgY29tcG9uZW50VHlwZSA9IGdldENvbXBvbmVudFR5cGUodGhpcy5ib2FyZCwgY29udGV4dCk7XG4gICAgICAgICAgICBjb25zdCBjb21wb25lbnRSZWYgPSBjcmVhdGVQbHVnaW5Db21wb25lbnQoY29tcG9uZW50VHlwZSwgY29udGV4dCwgdGhpcy52aWV3Q29udGFpbmVyUmVmLCBjaGlsZHJlbkNvbnRleHQpO1xuICAgICAgICAgICAgdGhpcy5jb21wb25lbnRSZWZzLnB1c2goY29tcG9uZW50UmVmKTtcbiAgICAgICAgICAgIHRoaXMuY29udGV4dHMucHVzaChjb250ZXh0KTtcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IG5ld0RpZmZlcnMgPSB0aGlzLnZpZXdDb250YWluZXJSZWYuaW5qZWN0b3IuZ2V0KEl0ZXJhYmxlRGlmZmVycyk7XG4gICAgICAgIHRoaXMuZGlmZmVyID0gbmV3RGlmZmVycy5maW5kKGNoaWxkcmVuKS5jcmVhdGUodHJhY2tCeSk7XG4gICAgICAgIHRoaXMuZGlmZmVyLmRpZmYoY2hpbGRyZW4pO1xuICAgIH1cblxuICAgIHB1YmxpYyB1cGRhdGUoY2hpbGRyZW46IFBsYWl0RWxlbWVudFtdLCBjaGlsZHJlbkNvbnRleHQ6IFBsYWl0Q2hpbGRyZW5Db250ZXh0KSB7XG4gICAgICAgIGlmICghdGhpcy5pbml0aWFsaXplZCkge1xuICAgICAgICAgICAgdGhpcy5pbml0aWFsaXplKGNoaWxkcmVuLCBjaGlsZHJlbkNvbnRleHQpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5kaWZmZXIpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRXhjZXB0aW9uOiBDYW4gbm90IGZpbmQgZGlmZmVyICcpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHsgYm9hcmQsIHBhcmVudCB9ID0gY2hpbGRyZW5Db250ZXh0O1xuICAgICAgICBjb25zdCBkaWZmUmVzdWx0ID0gdGhpcy5kaWZmZXIuZGlmZihjaGlsZHJlbik7XG4gICAgICAgIGlmIChkaWZmUmVzdWx0KSB7XG4gICAgICAgICAgICBjb25zdCBuZXdDb250ZXh0czogUGxhaXRQbHVnaW5FbGVtZW50Q29udGV4dFtdID0gW107XG4gICAgICAgICAgICBjb25zdCBuZXdDb21wb25lbnRSZWZzOiBDb21wb25lbnRSZWY8UGxhaXRQbHVnaW5FbGVtZW50Q29tcG9uZW50PltdID0gW107XG4gICAgICAgICAgICBsZXQgY3VycmVudEluZGV4Rm9yRmlyc3RFbGVtZW50OiBudW1iZXIgfCBudWxsID0gbnVsbDtcbiAgICAgICAgICAgIGRpZmZSZXN1bHQuZm9yRWFjaEl0ZW0oKHJlY29yZDogSXRlcmFibGVDaGFuZ2VSZWNvcmQ8UGxhaXRFbGVtZW50PikgPT4ge1xuICAgICAgICAgICAgICAgIE5PREVfVE9fSU5ERVguc2V0KHJlY29yZC5pdGVtLCByZWNvcmQuY3VycmVudEluZGV4IGFzIG51bWJlcik7XG4gICAgICAgICAgICAgICAgTk9ERV9UT19QQVJFTlQuc2V0KHJlY29yZC5pdGVtLCBjaGlsZHJlbkNvbnRleHQucGFyZW50KTtcbiAgICAgICAgICAgICAgICBjb25zdCBwcmV2aW91c0NvbnRleHQgPSByZWNvcmQucHJldmlvdXNJbmRleCA9PT0gbnVsbCA/IHVuZGVmaW5lZCA6IHRoaXMuY29udGV4dHNbcmVjb3JkLnByZXZpb3VzSW5kZXhdO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRleHQgPSBnZXRDb250ZXh0KGJvYXJkLCByZWNvcmQuaXRlbSwgcmVjb3JkLmN1cnJlbnRJbmRleCBhcyBudW1iZXIsIHBhcmVudCwgcHJldmlvdXNDb250ZXh0KTtcbiAgICAgICAgICAgICAgICBpZiAocmVjb3JkLnByZXZpb3VzSW5kZXggPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY29tcG9uZW50VHlwZSA9IGdldENvbXBvbmVudFR5cGUoYm9hcmQsIGNvbnRleHQpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjb21wb25lbnRSZWYgPSBjcmVhdGVQbHVnaW5Db21wb25lbnQoY29tcG9uZW50VHlwZSwgY29udGV4dCwgdGhpcy52aWV3Q29udGFpbmVyUmVmLCBjaGlsZHJlbkNvbnRleHQpO1xuICAgICAgICAgICAgICAgICAgICBuZXdDb250ZXh0cy5wdXNoKGNvbnRleHQpO1xuICAgICAgICAgICAgICAgICAgICBuZXdDb21wb25lbnRSZWZzLnB1c2goY29tcG9uZW50UmVmKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjb21wb25lbnRSZWYgPSB0aGlzLmNvbXBvbmVudFJlZnNbcmVjb3JkLnByZXZpb3VzSW5kZXhdO1xuICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UuY29udGV4dCA9IGNvbnRleHQ7XG4gICAgICAgICAgICAgICAgICAgIG5ld0NvbXBvbmVudFJlZnMucHVzaChjb21wb25lbnRSZWYpO1xuICAgICAgICAgICAgICAgICAgICBuZXdDb250ZXh0cy5wdXNoKGNvbnRleHQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBpdGVtIG1pZ2h0IGhhcyBiZWVuIGNoYW5nZWQsIHNvIG5lZWQgdG8gY29tcGFyZSB0aGUgaWRcbiAgICAgICAgICAgICAgICBpZiAocmVjb3JkLml0ZW0gPT09IHRoaXMuY2hpbGRyZW5bMF0gfHwgcmVjb3JkLml0ZW0uaWQgPT09IHRoaXMuY2hpbGRyZW5bMF0/LmlkKSB7XG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRJbmRleEZvckZpcnN0RWxlbWVudCA9IHJlY29yZC5jdXJyZW50SW5kZXg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBkaWZmUmVzdWx0LmZvckVhY2hPcGVyYXRpb24ocmVjb3JkID0+IHtcbiAgICAgICAgICAgICAgICAvLyByZW1vdmVkXG4gICAgICAgICAgICAgICAgaWYgKHJlY29yZC5jdXJyZW50SW5kZXggPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY29tcG9uZW50UmVmID0gdGhpcy5jb21wb25lbnRSZWZzW3JlY29yZC5wcmV2aW91c0luZGV4IGFzIG51bWJlcl07XG4gICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudFJlZj8uZGVzdHJveSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBtb3ZlZFxuICAgICAgICAgICAgICAgIGlmIChyZWNvcmQucHJldmlvdXNJbmRleCAhPT0gbnVsbCAmJiByZWNvcmQuY3VycmVudEluZGV4ICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIG1vdW50T25JdGVtTW92ZShyZWNvcmQuaXRlbSwgcmVjb3JkLmN1cnJlbnRJbmRleCwgY2hpbGRyZW5Db250ZXh0LCBjdXJyZW50SW5kZXhGb3JGaXJzdEVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5jb21wb25lbnRSZWZzID0gbmV3Q29tcG9uZW50UmVmcztcbiAgICAgICAgICAgIHRoaXMuY29udGV4dHMgPSBuZXdDb250ZXh0cztcbiAgICAgICAgICAgIHRoaXMuY2hpbGRyZW4gPSBjaGlsZHJlbjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IG5ld0NvbnRleHRzOiBQbGFpdFBsdWdpbkVsZW1lbnRDb250ZXh0W10gPSBbXTtcbiAgICAgICAgICAgIHRoaXMuY2hpbGRyZW4uZm9yRWFjaCgoZWxlbWVudCwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICBOT0RFX1RPX0lOREVYLnNldChlbGVtZW50LCBpbmRleCk7XG4gICAgICAgICAgICAgICAgTk9ERV9UT19QQVJFTlQuc2V0KGVsZW1lbnQsIGNoaWxkcmVuQ29udGV4dC5wYXJlbnQpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHByZXZpb3VzQ29udGV4dCA9IHRoaXMuY29udGV4dHNbaW5kZXhdO1xuICAgICAgICAgICAgICAgIGNvbnN0IHByZXZpb3VzQ29tcG9uZW50UmVmID0gdGhpcy5jb21wb25lbnRSZWZzW2luZGV4XTtcbiAgICAgICAgICAgICAgICBjb25zdCBjb250ZXh0ID0gZ2V0Q29udGV4dChib2FyZCwgZWxlbWVudCwgaW5kZXgsIHBhcmVudCwgcHJldmlvdXNDb250ZXh0KTtcbiAgICAgICAgICAgICAgICBwcmV2aW91c0NvbXBvbmVudFJlZi5pbnN0YW5jZS5jb250ZXh0ID0gY29udGV4dDtcbiAgICAgICAgICAgICAgICBuZXdDb250ZXh0cy5wdXNoKGNvbnRleHQpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLmNvbnRleHRzID0gbmV3Q29udGV4dHM7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5jaGlsZHJlbi5mb3JFYWNoKChlbGVtZW50OiBQbGFpdEVsZW1lbnQsIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmNvbXBvbmVudFJlZnNbaW5kZXhdKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jb21wb25lbnRSZWZzW2luZGV4XS5kZXN0cm95KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmNvbXBvbmVudFJlZnMgPSBbXTtcbiAgICAgICAgdGhpcy5jaGlsZHJlbiA9IFtdO1xuICAgICAgICB0aGlzLmNvbnRleHRzID0gW107XG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5kaWZmZXIgPSBudWxsO1xuICAgIH1cbn1cblxuY29uc3QgdHJhY2tCeSA9IChpbmRleDogbnVtYmVyLCBlbGVtZW50OiBQbGFpdEVsZW1lbnQpID0+IHtcbiAgICByZXR1cm4gZWxlbWVudC5pZDtcbn07XG5cbmNvbnN0IGNyZWF0ZVBsdWdpbkNvbXBvbmVudCA9IChcbiAgICBjb21wb25lbnRUeXBlOiBDb21wb25lbnRUeXBlPFBsYWl0UGx1Z2luRWxlbWVudENvbXBvbmVudD4sXG4gICAgY29udGV4dDogUGxhaXRQbHVnaW5FbGVtZW50Q29udGV4dCxcbiAgICB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgIGNoaWxkcmVuQ29udGV4dDogUGxhaXRDaGlsZHJlbkNvbnRleHRcbikgPT4ge1xuICAgIGNvbnN0IGNvbXBvbmVudFJlZiA9IHZpZXdDb250YWluZXJSZWYuY3JlYXRlQ29tcG9uZW50KGNvbXBvbmVudFR5cGUsIHsgaW5qZWN0b3I6IHZpZXdDb250YWluZXJSZWYuaW5qZWN0b3IgfSk7XG4gICAgY29uc3QgaW5zdGFuY2UgPSBjb21wb25lbnRSZWYuaW5zdGFuY2U7XG4gICAgaW5zdGFuY2UuY29udGV4dCA9IGNvbnRleHQ7XG4gICAgY29tcG9uZW50UmVmLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICBjb25zdCBnID0gY29tcG9uZW50UmVmLmluc3RhbmNlLmdldENvbnRhaW5lckcoKTtcbiAgICBtb3VudEVsZW1lbnRHKGNvbnRleHQuaW5kZXgsIGcsIGNoaWxkcmVuQ29udGV4dCk7XG4gICAgY29tcG9uZW50UmVmLmluc3RhbmNlLmluaXRpYWxpemVMaXN0UmVuZGVyKCk7XG4gICAgcmV0dXJuIGNvbXBvbmVudFJlZjtcbn07XG5cbmNvbnN0IGdldENvbXBvbmVudFR5cGUgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGNvbnRleHQ6IFBsYWl0UGx1Z2luRWxlbWVudENvbnRleHQpID0+IHtcbiAgICBjb25zdCByZXN1bHQgPSBib2FyZC5kcmF3RWxlbWVudChjb250ZXh0KTtcbiAgICByZXR1cm4gcmVzdWx0O1xufTtcblxuY29uc3QgZ2V0Q29udGV4dCA9IChcbiAgICBib2FyZDogUGxhaXRCb2FyZCxcbiAgICBlbGVtZW50OiBQbGFpdEVsZW1lbnQsXG4gICAgaW5kZXg6IG51bWJlcixcbiAgICBwYXJlbnQ6IEFuY2VzdG9yLFxuICAgIHByZXZpb3VzQ29udGV4dD86IFBsYWl0UGx1Z2luRWxlbWVudENvbnRleHRcbik6IFBsYWl0UGx1Z2luRWxlbWVudENvbnRleHQgPT4ge1xuICAgIGxldCBpc1NlbGVjdGVkID0gaXNTZWxlY3RlZEVsZW1lbnQoYm9hcmQsIGVsZW1lbnQpO1xuICAgIGNvbnN0IHByZXZpb3VzRWxlbWVudCA9IHByZXZpb3VzQ29udGV4dCAmJiBwcmV2aW91c0NvbnRleHQuZWxlbWVudDtcbiAgICBpZiAocHJldmlvdXNFbGVtZW50ICYmIHByZXZpb3VzRWxlbWVudCAhPT0gZWxlbWVudCAmJiBpc1NlbGVjdGVkRWxlbWVudChib2FyZCwgcHJldmlvdXNFbGVtZW50KSkge1xuICAgICAgICBpc1NlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgcmVtb3ZlU2VsZWN0ZWRFbGVtZW50KGJvYXJkLCBwcmV2aW91c0VsZW1lbnQpO1xuICAgICAgICBhZGRTZWxlY3RlZEVsZW1lbnQoYm9hcmQsIGVsZW1lbnQpO1xuICAgIH1cbiAgICBjb25zdCBjb250ZXh0OiBQbGFpdFBsdWdpbkVsZW1lbnRDb250ZXh0ID0ge1xuICAgICAgICBlbGVtZW50OiBlbGVtZW50LFxuICAgICAgICBwYXJlbnQ6IHBhcmVudCxcbiAgICAgICAgYm9hcmQ6IGJvYXJkLFxuICAgICAgICBzZWxlY3RlZDogaXNTZWxlY3RlZCxcbiAgICAgICAgaW5kZXhcbiAgICB9O1xuICAgIHJldHVybiBjb250ZXh0O1xufTtcblxuLy8gdGhlIGcgZGVwdGggb2Ygcm9vdCBlbGVtZW5077yaWzFdLVsyXS1bM10tWzRdXG4vLyB0aGUgZyBkZXB0aCBvZiByb290IGVsZW1lbnQgYW5kIGNoaWxkcmVuIGVsZW1lbnTvvIh0aGUgWzJdIGVsZW1lbnQgaGFzIGNoaWxkcmVu77yJ77yaXG4vLyBbMV0tXG4vLyBbMl0oWzItMS0xXVsyLTEtMl1bMi0xXVsyLTJdWzItMy0xXVsyLTMtMl1bMi0zXVsyXSktXG4vLyBbM10tXG4vLyBbNF1cbmV4cG9ydCBjb25zdCBtb3VudEVsZW1lbnRHID0gKFxuICAgIGluZGV4OiBudW1iZXIsXG4gICAgZzogU1ZHR0VsZW1lbnQsXG4gICAgY2hpbGRyZW5Db250ZXh0OiBQbGFpdENoaWxkcmVuQ29udGV4dCxcbiAgICAvLyBmb3IgbW92aW5nIHNjZW5lOiB0aGUgY3VycmVudCBpbmRleCBmb3IgZmlyc3QgZWxlbWVudCBiZWZvcmUgbW92aW5nXG4gICAgY3VycmVudEluZGV4Rm9yRmlyc3RFbGVtZW50OiBudW1iZXIgfCBudWxsID0gbnVsbFxuKSA9PiB7XG4gICAgY29uc3QgeyBwYXJlbnQsIHBhcmVudEcgfSA9IGNoaWxkcmVuQ29udGV4dDtcbiAgICBpZiAoUGxhaXRCb2FyZC5pc0JvYXJkKHBhcmVudCkpIHtcbiAgICAgICAgaWYgKGluZGV4ID4gMCkge1xuICAgICAgICAgICAgY29uc3QgcHJldmlvdXNFbGVtZW50ID0gcGFyZW50LmNoaWxkcmVuW2luZGV4IC0gMV07XG4gICAgICAgICAgICBjb25zdCBwcmV2aW91c0NvbnRhaW5lckcgPSBQbGFpdEVsZW1lbnQuZ2V0Q29udGFpbmVyRyhwcmV2aW91c0VsZW1lbnQsIHsgc3VwcHJlc3NUaHJvdzogZmFsc2UgfSk7XG4gICAgICAgICAgICBwcmV2aW91c0NvbnRhaW5lckcuaW5zZXJ0QWRqYWNlbnRFbGVtZW50KCdhZnRlcmVuZCcsIGcpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGN1cnJlbnRJbmRleEZvckZpcnN0RWxlbWVudCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpcnN0RWxlbWVudCA9IHBhcmVudC5jaGlsZHJlbltjdXJyZW50SW5kZXhGb3JGaXJzdEVsZW1lbnRdO1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpcnN0Q29udGFpbmVyRyA9IGZpcnN0RWxlbWVudCAmJiBQbGFpdEVsZW1lbnQuZ2V0Q29udGFpbmVyRyhmaXJzdEVsZW1lbnQsIHsgc3VwcHJlc3NUaHJvdzogdHJ1ZSB9KTtcbiAgICAgICAgICAgICAgICBpZiAoZmlyc3RFbGVtZW50ICYmIGZpcnN0Q29udGFpbmVyRykge1xuICAgICAgICAgICAgICAgICAgICBwYXJlbnRHLmluc2VydEJlZm9yZShnLCBmaXJzdENvbnRhaW5lckcpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignZmFpbCB0byBtb3VudCBjb250YWluZXIgb24gbW92aW5nJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBwYXJlbnRHLmFwcGVuZChnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChpbmRleCA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IHByZXZpb3VzRWxlbWVudCA9IChwYXJlbnQuY2hpbGRyZW4gYXMgUGxhaXRFbGVtZW50W10pW2luZGV4IC0gMV07XG4gICAgICAgICAgICBjb25zdCBwcmV2aW91c0VsZW1lbnRHID0gUGxhaXRFbGVtZW50LmdldEVsZW1lbnRHKHByZXZpb3VzRWxlbWVudCk7XG4gICAgICAgICAgICBwcmV2aW91c0VsZW1lbnRHLmluc2VydEFkamFjZW50RWxlbWVudCgnYWZ0ZXJlbmQnLCBnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChjdXJyZW50SW5kZXhGb3JGaXJzdEVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXh0RWxlbWVudCA9IChwYXJlbnQuY2hpbGRyZW4gYXMgUGxhaXRFbGVtZW50W10pW2N1cnJlbnRJbmRleEZvckZpcnN0RWxlbWVudF07XG4gICAgICAgICAgICAgICAgY29uc3QgbmV4dFBhdGggPSBuZXh0RWxlbWVudCAmJiBQbGFpdEJvYXJkLmZpbmRQYXRoKGNoaWxkcmVuQ29udGV4dC5ib2FyZCwgbmV4dEVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpcnN0ID0gbmV4dFBhdGggJiYgUGxhaXROb2RlLmZpcnN0KGNoaWxkcmVuQ29udGV4dC5ib2FyZCwgbmV4dFBhdGgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpcnN0Q29udGFpbmVyRyA9IGZpcnN0ICYmIFBsYWl0RWxlbWVudC5nZXRDb250YWluZXJHKGZpcnN0LCB7IHN1cHByZXNzVGhyb3c6IGZhbHNlIH0pO1xuICAgICAgICAgICAgICAgIGlmIChmaXJzdENvbnRhaW5lckcpIHtcbiAgICAgICAgICAgICAgICAgICAgcGFyZW50Ry5pbnNlcnRCZWZvcmUoZywgZmlyc3RDb250YWluZXJHKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2ZhaWwgdG8gbW91bnQgY29udGFpbmVyIG9uIG1vdmluZycpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbGV0IHBhcmVudEVsZW1lbnRHID0gUGxhaXRFbGVtZW50LmdldEVsZW1lbnRHKHBhcmVudCk7XG4gICAgICAgICAgICAgICAgcGFyZW50Ry5pbnNlcnRCZWZvcmUoZywgcGFyZW50RWxlbWVudEcpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufTtcblxuY29uc3QgbW91bnRPbkl0ZW1Nb3ZlID0gKFxuICAgIGVsZW1lbnQ6IFBsYWl0RWxlbWVudCxcbiAgICBpbmRleDogbnVtYmVyLFxuICAgIGNoaWxkcmVuQ29udGV4dDogUGxhaXRDaGlsZHJlbkNvbnRleHQsXG4gICAgY3VycmVudEluZGV4Rm9yRmlyc3RFbGVtZW50OiBudW1iZXIgfCBudWxsXG4pID0+IHtcbiAgICBjb25zdCBjb250YWluZXJHID0gUGxhaXRFbGVtZW50LmdldENvbnRhaW5lckcoZWxlbWVudCwgeyBzdXBwcmVzc1Rocm93OiBmYWxzZSB9KTtcbiAgICBtb3VudEVsZW1lbnRHKGluZGV4LCBjb250YWluZXJHLCBjaGlsZHJlbkNvbnRleHQsIGN1cnJlbnRJbmRleEZvckZpcnN0RWxlbWVudCk7XG4gICAgaWYgKGVsZW1lbnQuY2hpbGRyZW4gJiYgIVBsYWl0RWxlbWVudC5pc1Jvb3RFbGVtZW50KGVsZW1lbnQpKSB7XG4gICAgICAgIGVsZW1lbnQuY2hpbGRyZW4uZm9yRWFjaCgoY2hpbGQsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBtb3VudE9uSXRlbU1vdmUoY2hpbGQsIGluZGV4LCB7IC4uLmNoaWxkcmVuQ29udGV4dCwgcGFyZW50OiBlbGVtZW50IH0sIG51bGwpO1xuICAgICAgICB9KTtcbiAgICB9XG59O1xuIl19
|
package/esm2022/public-api.mjs
CHANGED
|
@@ -13,6 +13,6 @@ export * from './plugins/with-selection';
|
|
|
13
13
|
export * from './plugins/with-moving';
|
|
14
14
|
export * from './plugins/with-options';
|
|
15
15
|
export * from './testing';
|
|
16
|
-
export * from './services/
|
|
16
|
+
export * from './services/context.service';
|
|
17
17
|
export * from './utils/debug';
|
|
18
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLHFDQUFxQyxDQUFDO0FBQ3BELGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsU0FBUyxDQUFDO0FBQ3hCLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsV0FBVyxDQUFDO0FBQzFCLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyxlQUFlLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIHBsYWl0XG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9ib2FyZC9ib2FyZC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdGFudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb3JlL2VsZW1lbnQvcGx1Z2luLWVsZW1lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9jb3JlL2VsZW1lbnQvY29udGV4dC1jaGFuZ2UnO1xuZXhwb3J0ICogZnJvbSAnLi9jb3JlL2lzbGFuZC9pc2xhbmQtYmFzZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9pbnRlcmZhY2VzJztcbmV4cG9ydCAqIGZyb20gJy4vdHJhbnNmb3Jtcyc7XG5leHBvcnQgKiBmcm9tICcuL3V0aWxzJztcbmV4cG9ydCAqIGZyb20gJy4vcGx1Z2lucy93aXRoLXNlbGVjdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL3BsdWdpbnMvd2l0aC1tb3ZpbmcnO1xuZXhwb3J0ICogZnJvbSAnLi9wbHVnaW5zL3dpdGgtb3B0aW9ucyc7XG5leHBvcnQgKiBmcm9tICcuL3Rlc3RpbmcnO1xuZXhwb3J0ICogZnJvbSAnLi9zZXJ2aWNlcy9jb250ZXh0LnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi91dGlscy9kZWJ1Zyc7XG4iXX0=
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { Subject } from 'rxjs';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class PlaitContextService {
|
|
5
|
+
constructor() {
|
|
6
|
+
this._stable = new Subject();
|
|
7
|
+
this.uploadingFiles = [];
|
|
8
|
+
}
|
|
9
|
+
getUploadingFile(url) {
|
|
10
|
+
return this.uploadingFiles.find(file => file.url === url);
|
|
11
|
+
}
|
|
12
|
+
setUploadingFile(file) {
|
|
13
|
+
return this.uploadingFiles.push(file);
|
|
14
|
+
}
|
|
15
|
+
removeUploadingFile(fileEntry) {
|
|
16
|
+
this.uploadingFiles = this.uploadingFiles.filter(file => file.url !== fileEntry.url);
|
|
17
|
+
}
|
|
18
|
+
onStable() {
|
|
19
|
+
return this._stable.asObservable();
|
|
20
|
+
}
|
|
21
|
+
nextStable() {
|
|
22
|
+
this._stable.next('');
|
|
23
|
+
}
|
|
24
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: PlaitContextService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
25
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: PlaitContextService }); }
|
|
26
|
+
}
|
|
27
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: PlaitContextService, decorators: [{
|
|
28
|
+
type: Injectable
|
|
29
|
+
}] });
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvc2VydmljZXMvY29udGV4dC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFHL0IsTUFBTSxPQUFPLG1CQUFtQjtJQURoQztRQUVZLFlBQU8sR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBRXhCLG1CQUFjLEdBQWlCLEVBQUUsQ0FBQztLQXFCN0M7SUFuQkcsZ0JBQWdCLENBQUMsR0FBVztRQUN4QixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsSUFBZ0I7UUFDN0IsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQsbUJBQW1CLENBQUMsU0FBcUI7UUFDckMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3pGLENBQUM7SUFFRCxRQUFRO1FBQ0osT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxVQUFVO1FBQ04sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDMUIsQ0FBQzs4R0F2QlEsbUJBQW1CO2tIQUFuQixtQkFBbUI7OzJGQUFuQixtQkFBbUI7a0JBRC9CLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJbWFnZUVudHJ5IH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBQbGFpdENvbnRleHRTZXJ2aWNlIHtcbiAgICBwcml2YXRlIF9zdGFibGUgPSBuZXcgU3ViamVjdCgpO1xuXG4gICAgcHJpdmF0ZSB1cGxvYWRpbmdGaWxlczogSW1hZ2VFbnRyeVtdID0gW107XG5cbiAgICBnZXRVcGxvYWRpbmdGaWxlKHVybDogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnVwbG9hZGluZ0ZpbGVzLmZpbmQoZmlsZSA9PiBmaWxlLnVybCA9PT0gdXJsKTtcbiAgICB9XG5cbiAgICBzZXRVcGxvYWRpbmdGaWxlKGZpbGU6IEltYWdlRW50cnkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudXBsb2FkaW5nRmlsZXMucHVzaChmaWxlKTtcbiAgICB9XG5cbiAgICByZW1vdmVVcGxvYWRpbmdGaWxlKGZpbGVFbnRyeTogSW1hZ2VFbnRyeSkge1xuICAgICAgICB0aGlzLnVwbG9hZGluZ0ZpbGVzID0gdGhpcy51cGxvYWRpbmdGaWxlcy5maWx0ZXIoZmlsZSA9PiBmaWxlLnVybCAhPT0gZmlsZUVudHJ5LnVybCk7XG4gICAgfVxuXG4gICAgb25TdGFibGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zdGFibGUuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgbmV4dFN0YWJsZSgpIHtcbiAgICAgICAgdGhpcy5fc3RhYmxlLm5leHQoJycpO1xuICAgIH1cbn1cbiJdfQ==
|
package/esm2022/utils/common.mjs
CHANGED
|
@@ -49,9 +49,11 @@ export const debounce = (func, wait, options) => {
|
|
|
49
49
|
};
|
|
50
50
|
export const getElementsIndices = (board, elements) => {
|
|
51
51
|
sortElements(board, elements);
|
|
52
|
-
return elements
|
|
52
|
+
return elements
|
|
53
|
+
.map(item => {
|
|
53
54
|
return board.children.map(item => item.id).indexOf(item.id);
|
|
54
|
-
})
|
|
55
|
+
})
|
|
56
|
+
.filter(item => item >= 0);
|
|
55
57
|
};
|
|
56
58
|
export const getHighestIndexOfElement = (board, elements) => {
|
|
57
59
|
const indices = getElementsIndices(board, elements);
|
|
@@ -71,4 +73,4 @@ export const moveElementsToNewPath = (board, moveOptions) => {
|
|
|
71
73
|
action();
|
|
72
74
|
});
|
|
73
75
|
};
|
|
74
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
76
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvdXRpbHMvY29tbW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRCxPQUFPLEVBQWdCLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFlBQVksQ0FBQztBQUUxQyxNQUFNLFlBQVksR0FBRyxJQUFJLE9BQU8sRUFBZ0QsQ0FBQztBQU9qRixNQUFNLFVBQVUsR0FBRyxDQUFDLEtBQWlCLEVBQUUsR0FBVyxFQUFFLEVBQUU7SUFDbEQsTUFBTSxLQUFLLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pDLE9BQU8sS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQztBQUM5QixDQUFDLENBQUM7QUFFRixNQUFNLFdBQVcsR0FBRyxDQUFDLEtBQWlCLEVBQUUsRUFBRTtJQUN0QyxPQUFPLFlBQVksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO0FBQ3pDLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxDQUFDLEtBQWlCLEVBQUUsR0FBVyxFQUFFLEVBQWMsRUFBRSxFQUFFO0lBQzFFLE1BQU0sWUFBWSxHQUFHLEdBQUcsRUFBRTtRQUN0QixJQUFJLE9BQU8sR0FBRyxxQkFBcUIsQ0FBQyxHQUFHLEVBQUU7WUFDckMsTUFBTSxLQUFLLEdBQUcsWUFBWSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDNUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQztZQUNsQixZQUFZLENBQUMsR0FBRyxDQUFDLEtBQUssRUFB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QUFHLEVBQUU7WUFDUixHQUFHLENBQUMsT0FBTyxJQUFJLGNBQWMsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3pFLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNoQixDQUFDLENBQUM7SUFDTixDQUFDLENBQUM7U0FDRCxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7UUFDZCxNQUFNLEVBQUUsQ0FBQztJQUNiLENBQUMsQ0FBQyxDQUFDO0FBQ1gsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGF0aCwgUGxhaXRFbGVtZW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBQbGFpdEJvYXJkIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9ib2FyZCc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24sIHRpbWVyIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBOb2RlVHJhbnNmb3JtcyB9IGZyb20gJy4uL3RyYW5zZm9ybXMvbm9kZSc7XG5pbXBvcnQgeyBzb3J0RWxlbWVudHMgfSBmcm9tICcuL3Bvc2l0aW9uJztcblxuY29uc3QgQk9BUkRfVE9fUkFGID0gbmV3IFdlYWtNYXA8UGxhaXRCb2FyZCwgeyBba2V5OiBzdHJpbmddOiBudW1iZXIgfCBudWxsIH0+KCk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTW92ZU5vZGVPcHRpb24ge1xuICAgIGVsZW1lbnQ6IFBsYWl0RWxlbWVudDtcbiAgICBuZXdQYXRoOiBQYXRoO1xufVxuXG5jb25zdCBnZXRUaW1lcklkID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBrZXk6IHN0cmluZykgPT4ge1xuICAgIGNvbnN0IHN0YXRlID0gZ2V0UkFGU3RhdGUoYm9hcmQpO1xuICAgIHJldHVybiBzdGF0ZVtrZXldIHx8IG51bGw7XG59O1xuXG5jb25zdCBnZXRSQUZTdGF0ZSA9IChib2FyZDogUGxhaXRCb2FyZCkgPT4ge1xuICAgIHJldHVybiBCT0FSRF9UT19SQUYuZ2V0KGJvYXJkKSB8fCB7fTtcbn07XG5cbmV4cG9ydCBjb25zdCB0aHJvdHRsZVJBRiA9IChib2FyZDogUGxhaXRCb2FyZCwga2V5OiBzdHJpbmcsIGZuOiAoKSA9PiB2b2lkKSA9PiB7XG4gICAgY29uc3Qgc2NoZWR1bGVGdW5jID0gKCkgPT4ge1xuICAgICAgICBsZXQgdGltZXJJZCA9IHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IEJPQVJEX1RPX1JBRi5nZXQoYm9hcmQpIHx8IHt9O1xuICAgICAgICAgICAgdmFsdWVba2V5XSA9IG51bGw7XG4gICAgICAgICAgICBCT0FSRF9UT19SQUYuc2V0KGJvYXJkLCB2YWx1ZSk7XG4gICAgICAgICAgICBQbGFpdEJvYXJkLmlzQWxpdmUoYm9hcmQpICYmIGZuKCk7XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBzdGF0ZSA9IGdldFJBRlN0YXRlKGJvYXJkKTtcbiAgICAgICAgc3RhdGVba2V5XSA9IHRpbWVySWQ7XG4gICAgICAgIEJPQVJEX1RPX1JBRi5zZXQoYm9hcmQsIHN0YXRlKTtcbiAgICB9O1xuICAgIGxldCB0aW1lcklkID0gZ2V0VGltZXJJZChib2FyZCwga2V5KTtcbiAgICBpZiAodGltZXJJZCAhPT0gbnVsbCkge1xuICAgICAgICBjYW5jZWxBbmltYXRpb25GcmFtZSh0aW1lcklkKTtcbiAgICB9XG4gICAgc2NoZWR1bGVGdW5jKCk7XG59O1xuXG5leHBvcnQgY29uc3QgZGVib3VuY2UgPSAoZnVuYzogKCkgPT4gdm9pZCwgd2FpdDogbnVtYmVyLCBvcHRpb25zPzogeyBsZWFkaW5nOiBib29sZWFuIH0pID0+IHtcbiAgICBsZXQgdGltZXJTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiB8IG51bGwgPSBudWxsO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIGlmICh0aW1lclN1YnNjcmlwdGlvbiAmJiAhdGltZXJTdWJzY3JpcHRpb24uY2xvc2VkKSB7XG4gICAgICAgICAgICB0aW1lclN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgdGltZXJTdWJzY3JpcHRpb24gPSB0aW1lcih3YWl0KS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGZ1bmMoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKG9wdGlvbnM/LmxlYWRpbmcpIHtcbiAgICAgICAgICAgICAgICB0aW1lcigwKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBmdW5jKCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aW1lclN1YnNjcmlwdGlvbiA9IHRpbWVyKHdhaXQpLnN1YnNjcmliZSgpO1xuICAgICAgICB9XG4gICAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRFbGVtZW50c0luZGljZXMgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnRzOiBQbGFpdEVsZW1lbnRbXSk6IG51bWJlcltdID0+IHtcbiAgICBzb3J0RWxlbWVudHMoYm9hcmQsIGVsZW1lbnRzKTtcbiAgICByZXR1cm4gZWxlbWVudHNcbiAgICAgICAgLm1hcChpdGVtID0+IHtcbiAgICAgICAgICAgIHJldHVybiBib2FyZC5jaGlsZHJlbi5tYXAoaXRlbSA9PiBpdGVtLmlkKS5pbmRleE9mKGl0ZW0uaWQpO1xuICAgICAgICB9KVxuICAgICAgICAuZmlsdGVyKGl0ZW0gPT4gaXRlbSA+PSAwKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRIaWdoZXN0SW5kZXhPZkVsZW1lbnQgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnRzOiBQbGFpdEVsZW1lbnRbXSkgPT4ge1xuICAgIGNvbnN0IGluZGljZXMgPSBnZXRFbGVtZW50c0luZGljZXMoYm9hcmQsIGVsZW1lbnRzKTtcbiAgICByZXR1cm4gaW5kaWNlc1tpbmRpY2VzLmxlbmd0aCAtIDFdO1xufTtcblxuZXhwb3J0IGNvbnN0IG1vdmVFbGVtZW50c1RvTmV3UGF0aCA9IChib2FyZDogUGxhaXRCb2FyZCwgbW92ZU9wdGlvbnM6IE1vdmVOb2RlT3B0aW9uW10pID0+IHtcbiAgICBtb3ZlT3B0aW9uc1xuICAgICAgICAubWFwKGl0ZW0gPT4ge1xuICAgICAgICAgICAgY29uc3QgcGF0aCA9IFBsYWl0Qm9hcmQuZmluZFBhdGgoYm9hcmQsIGl0ZW0uZWxlbWVudCk7XG4gICAgICAgICAgICBjb25zdCByZWYgPSBib2FyZC5wYXRoUmVmKHBhdGgpO1xuICAgICAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgICAgICByZWYuY3VycmVudCAmJiBOb2RlVHJhbnNmb3Jtcy5tb3ZlTm9kZShib2FyZCwgcmVmLmN1cnJlbnQsIGl0ZW0ubmV3UGF0aCk7XG4gICAgICAgICAgICAgICAgcmVmLnVucmVmKCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9KVxuICAgICAgICAuZm9yRWFjaChhY3Rpb24gPT4ge1xuICAgICAgICAgICAgYWN0aW9uKCk7XG4gICAgICAgIH0pO1xufTtcbiJdfQ==
|
|
@@ -15,10 +15,12 @@ export const duplicateElements = (board, elements) => {
|
|
|
15
15
|
const selectedElements = elements || getSelectedElements(board);
|
|
16
16
|
const rectangle = getRectangleByElements(board, selectedElements, false);
|
|
17
17
|
const clipboardContext = board.buildFragment(null, rectangle, 'copy');
|
|
18
|
-
clipboardContext &&
|
|
18
|
+
const stringifiedContext = clipboardContext && JSON.stringify(clipboardContext);
|
|
19
|
+
const clonedContext = stringifiedContext && JSON.parse(stringifiedContext);
|
|
20
|
+
clonedContext &&
|
|
19
21
|
board.insertFragment({
|
|
20
|
-
...
|
|
22
|
+
...clonedContext,
|
|
21
23
|
text: undefined
|
|
22
24
|
}, [rectangle.x + rectangle.width / 2, rectangle.y + rectangle.height / 2]);
|
|
23
25
|
};
|
|
24
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJhZ21lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy91dGlscy9mcmFnbWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDbkQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFekQsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLENBQUMsS0FBaUIsRUFBRSxFQUFFO0lBQ2hELE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM5QyxLQUFLLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ25DLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxDQUFDLEtBQWlCLEVBQUUsSUFBb0IsRUFBRSxhQUFrQyxFQUFFLEVBQUU7SUFDdkcsTUFBTSxnQkFBZ0IsR0FBRyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwRCxNQUFNLFNBQVMsR0FBRyxzQkFBc0IsQ0FBQyxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDekUsTUFBTSxnQkFBZ0IsR0FBRyxLQUFLLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDcEUsZ0JBQWdCLElBQUksZ0JBQWdCLENBQUMsYUFBYSxFQUFFLGdCQUFnQixDQUFDLENBQUM7QUFDMUUsQ0FBQyxDQUFDO0FBR0YsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxLQUFpQixFQUFFLFFBQXlCLEVBQUUsRUFBRTtJQUM5RSxNQUFNLGdCQUFnQixHQUFHLFFBQVEsSUFBSSxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNoRSxNQUFNLFNBQVMsR0FBRyxzQkFBc0IsQ0FBQyxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDekUsTUFBTSxnQkFBZ0IsR0FBRyxLQUFLLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDdEUsTUFBTSxrQkFBa0IsR0FBRyxnQkFBZ0IsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDaEYsTUFBTSxhQUFhLEdBQUcsa0JBQWtCLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQzNFLGFBQWE7UUFDVCxLQUFLLENBQUMsY0FBYyxDQUNoQjtZQUNJLEdBQUcsYUFBYTtZQUNoQixJQUFJLEVBQUUsU0FBUztTQUNsQixFQUNELENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsS0FBSyxHQUFHLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQzFFLENBQUM7QUFDVixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQbGFpdEJvYXJkLCBQbGFpdEVsZW1lbnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IHNldENsaXBib2FyZERhdGEgfSBmcm9tICcuL2NsaXBib2FyZC9jbGlwYm9hcmQnO1xuaW1wb3J0IHsgZ2V0UmVjdGFuZ2xlQnlFbGVtZW50cyB9IGZyb20gJy4vZWxlbWVudCc7XG5pbXBvcnQgeyBnZXRTZWxlY3RlZEVsZW1lbnRzIH0gZnJvbSAnLi9zZWxlY3RlZC1lbGVtZW50JztcblxuZXhwb3J0IGNvbnN0IGRlbGV0ZUZyYWdtZW50ID0gKGJvYXJkOiBQbGFpdEJvYXJkKSA9PiB7XG4gICAgY29uc3QgZWxlbWVudHMgPSBib2FyZC5nZXREZWxldGVkRnJhZ21lbnQoW10pO1xuICAgIGJvYXJkLmRlbGV0ZUZyYWdtZW50KGVsZW1lbnRzKTtcbn07XG5cbmV4cG9ydCBjb25zdCBzZXRGcmFnbWVudCA9IChib2FyZDogUGxhaXRCb2FyZCwgdHlwZTogJ2NvcHknIHwgJ2N1dCcsIGNsaXBib2FyZERhdGE6IERhdGFUcmFuc2ZlciB8IG51bGwpID0+IHtcbiAgICBjb25zdCBzZWxlY3RlZEVsZW1lbnRzID0gZ2V0U2VsZWN0ZWRFbGVtZW50cyhib2FyZCk7XG4gICAgY29uc3QgcmVjdGFuZ2xlID0gZ2V0UmVjdGFuZ2xlQnlFbGVtZW50cyhib2FyZCwgc2VsZWN0ZWRFbGVtZW50cywgZmFsc2UpO1xuICAgIGNvbnN0IGNsaXBib2FyZENvbnRleHQgPSBib2FyZC5idWlsZEZyYWdtZW50KG51bGwsIHJlY3RhbmdsZSwgdHlwZSk7XG4gICAgY2xpcGJvYXJkQ29udGV4dCAmJiBzZXRDbGlwYm9hcmREYXRhKGNsaXBib2FyZERhdGEsIGNsaXBib2FyZENvbnRleHQpO1xufTtcblxuXG5leHBvcnQgY29uc3QgZHVwbGljYXRlRWxlbWVudHMgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnRzPzogUGxhaXRFbGVtZW50W10pID0+IHtcbiAgICBjb25zdCBzZWxlY3RlZEVsZW1lbnRzID0gZWxlbWVudHMgfHwgZ2V0U2VsZWN0ZWRFbGVtZW50cyhib2FyZCk7XG4gICAgY29uc3QgcmVjdGFuZ2xlID0gZ2V0UmVjdGFuZ2xlQnlFbGVtZW50cyhib2FyZCwgc2VsZWN0ZWRFbGVtZW50cywgZmFsc2UpO1xuICAgIGNvbnN0IGNsaXBib2FyZENvbnRleHQgPSBib2FyZC5idWlsZEZyYWdtZW50KG51bGwsIHJlY3RhbmdsZSwgJ2NvcHknKTtcbiAgICBjb25zdCBzdHJpbmdpZmllZENvbnRleHQgPSBjbGlwYm9hcmRDb250ZXh0ICYmIEpTT04uc3RyaW5naWZ5KGNsaXBib2FyZENvbnRleHQpO1xuICAgIGNvbnN0IGNsb25lZENvbnRleHQgPSBzdHJpbmdpZmllZENvbnRleHQgJiYgSlNPTi5wYXJzZShzdHJpbmdpZmllZENvbnRleHQpO1xuICAgIGNsb25lZENvbnRleHQgJiZcbiAgICAgICAgYm9hcmQuaW5zZXJ0RnJhZ21lbnQoXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgLi4uY2xvbmVkQ29udGV4dCxcbiAgICAgICAgICAgICAgICB0ZXh0OiB1bmRlZmluZWRcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBbcmVjdGFuZ2xlLnggKyByZWN0YW5nbGUud2lkdGggLyAyLCByZWN0YW5nbGUueSArIHJlY3RhbmdsZS5oZWlnaHQgLyAyXVxuICAgICAgICApO1xufTtcbiJdfQ==
|