@colijnit/homedecorator 255.1.4 → 255.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/app/core/enum/message-type.enum.d.ts +3 -1
- package/app/core/interface/message-with-payload.interface.d.ts +6 -0
- package/app/core/service/homedecorator-app-event.service.d.ts +1 -0
- package/app/core/service/homedecorator-connector-adapter.service.d.ts +2 -0
- package/app/core/service/homedecorator-connector.service.d.ts +5 -4
- package/app/core/service/presets.service.d.ts +3 -1
- package/app/homedecorator.component.d.ts +3 -1
- package/app/plugins/core3d/service/floor.service.d.ts +3 -1
- package/app/plugins/core3d/service/post-processing.service.d.ts +16 -4
- package/app/plugins/core3d/service/ssr.service.d.ts +0 -1
- package/app/plugins/model-uploader/model-previewer/model-preview.component.d.ts +10 -2
- package/app/plugins/model-uploader/model-previewer/model-preview.component.scss +180 -15
- package/app/plugins/model-uploader/model-uploader.module.d.ts +5 -1
- package/app/plugins/render/render-dialog/render-dialog.component.d.ts +4 -1
- package/app/plugins/room-planner/components/floorplanner/floorplanner.component.d.ts +3 -1
- package/app/plugins/room-planner/components/floorplanner/service/room.service.d.ts +1 -0
- package/app/plugins/room-planner/components/texture-editor/texture-editor.component.d.ts +4 -1
- package/app/plugins/threedselector/threedselector/service/build-furniture.service.d.ts +0 -3
- package/app/plugins/toolbar/draw-dialog/draw-dialog.component.d.ts +2 -0
- package/app/plugins/toolbar/draw-dialog/draw-dialog.component.scss +1 -1
- package/app/plugins/toolbar/toolbar/toolbar.component.d.ts +2 -0
- package/assets/icons/dash-button.svg +7 -0
- package/assets/icons/pen-ruler.svg +1 -0
- package/assets/icons/retry-button.svg +7 -0
- package/bundles/colijnit-homedecorator.umd.js +514 -423
- package/bundles/colijnit-homedecorator.umd.js.map +1 -1
- package/esm2015/app/app.version.js +3 -3
- package/esm2015/app/core/enum/message-type.enum.js +3 -1
- package/esm2015/app/core/interface/message-with-payload.interface.js +1 -1
- package/esm2015/app/core/service/3dm-api.js +4 -4
- package/esm2015/app/core/service/homedecorator-app-event.service.js +2 -1
- package/esm2015/app/core/service/homedecorator-connector-adapter.service.js +25 -2
- package/esm2015/app/core/service/homedecorator-connector.service.js +25 -22
- package/esm2015/app/core/service/presets.service.js +13 -5
- package/esm2015/app/core/utils/material.utils.js +3 -3
- package/esm2015/app/homedecorator.component.js +25 -19
- package/esm2015/app/plugins/core3d/core3d/components/scenecontrol/scene-control.component.js +2 -2
- package/esm2015/app/plugins/core3d/items/custom-cylinder-floor-item.js +2 -2
- package/esm2015/app/plugins/core3d/items/custom-cylinder-wall-item.js +2 -2
- package/esm2015/app/plugins/core3d/items/custom-shape-floor-item.js +2 -2
- package/esm2015/app/plugins/core3d/items/custom-shape-wall-item.js +2 -2
- package/esm2015/app/plugins/core3d/service/ar.service.js +2 -1
- package/esm2015/app/plugins/core3d/service/floor-tile-intersection.service.js +2 -2
- package/esm2015/app/plugins/core3d/service/floor.service.js +9 -4
- package/esm2015/app/plugins/core3d/service/post-processing.service.js +96 -35
- package/esm2015/app/plugins/core3d/service/scene.service.js +17 -11
- package/esm2015/app/plugins/core3d/service/ssr.service.js +1 -52
- package/esm2015/app/plugins/lite-selector/lite-selector/lite-selector.component.js +2 -2
- package/esm2015/app/plugins/model-uploader/model-previewer/model-preview.component.js +264 -168
- package/esm2015/app/plugins/model-uploader/model-uploader.module.js +22 -3
- package/esm2015/app/plugins/render/render-dialog/render-dialog.component.js +19 -14
- package/esm2015/app/plugins/room-planner/components/custom-cylinder-creator/custom-cylinder-creator.component.js +4 -2
- package/esm2015/app/plugins/room-planner/components/custome-shape-creator/custom-shape-creator.component.js +2 -2
- package/esm2015/app/plugins/room-planner/components/floorplanner/floorplanner.component.js +24 -12
- package/esm2015/app/plugins/room-planner/components/floorplanner/service/room.service.js +5 -2
- package/esm2015/app/plugins/room-planner/components/texture-editor/texture-editor.component.js +31 -15
- package/esm2015/app/plugins/threedselector/threedselector/service/build-furniture.service.js +4 -15
- package/esm2015/app/plugins/toolbar/draw-dialog/draw-dialog.component.js +26 -20
- package/esm2015/app/plugins/toolbar/save-dialog/save-dialog.component.js +2 -2
- package/esm2015/app/plugins/toolbar/toolbar/toolbar.component.js +15 -8
- package/esm2015/app/shared/model-dialog/model-dialog-furniture-list.component.js +3 -3
- package/fesm2015/colijnit-homedecorator.js +682 -483
- package/fesm2015/colijnit-homedecorator.js.map +1 -1
- package/package.json +1 -1
|
@@ -46,7 +46,7 @@ export class RoomService {
|
|
|
46
46
|
this._subs = [];
|
|
47
47
|
this._subs.push(this._appService.floorTexturesLoaded.subscribe((floors) => {
|
|
48
48
|
if (floors) {
|
|
49
|
-
this._defaultFloorTexture = floors.find(f => f.default === true);
|
|
49
|
+
this._defaultFloorTexture = floors.find(f => f.default === true && !f.useStandalone);
|
|
50
50
|
}
|
|
51
51
|
}), this._cameraService.cameraMovementChanged.subscribe(() => this._updateEdgeVisibility(this._cameraService.camera.position)), this._presetService.afterLoad.subscribe(() => this._updateEdgeVisibility(this._cameraService.camera.position)), this._viewModeService.viewModeChanged.subscribe((mode) => __awaiter(this, void 0, void 0, function* () {
|
|
52
52
|
if ((mode === ViewMode.RoomPlan3D || mode === ViewMode.TopView) && !_arService.arModeHasBeenActive()) {
|
|
@@ -265,6 +265,9 @@ export class RoomService {
|
|
|
265
265
|
}
|
|
266
266
|
});
|
|
267
267
|
}
|
|
268
|
+
resetAllRooms() {
|
|
269
|
+
this.rooms = [];
|
|
270
|
+
}
|
|
268
271
|
_showHideWalls(show) {
|
|
269
272
|
this.walls.forEach(w => w.showHideWall(show));
|
|
270
273
|
this._sceneService.needsRender = true;
|
|
@@ -327,4 +330,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
327
330
|
providedIn: 'root'
|
|
328
331
|
}]
|
|
329
332
|
}], ctorParameters: function () { return [{ type: i1.HomedecoratorAppService }, { type: i2.SceneService }, { type: i3.FloorService }, { type: i4.CeilingService }, { type: i5.CameraService }, { type: i6.ItemService }, { type: i7.ConfigurationService }, { type: i8.ViewModeService }, { type: i9.PresetsService }, { type: i10.ArService }]; } });
|
|
330
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9vbS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2NsaWVudC9hcHAvcGx1Z2lucy9yb29tLXBsYW5uZXIvY29tcG9uZW50cy9mbG9vcnBsYW5uZXIvc2VydmljZS9yb29tLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFDLFVBQVUsRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUdwRCxPQUFPLEVBQUMsT0FBTyxFQUFlLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBUyxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUMsTUFBTSx1Q0FBdUMsQ0FBQztBQWV6RixPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0seUNBQXlDLENBQUM7QUFFakUsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0saURBQWlELENBQUM7QUFDakYsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLCtCQUErQixDQUFDOzs7Ozs7Ozs7Ozs7QUFPcEQsTUFBTSxPQUFPLFdBQVc7SUFnQnRCLFlBQ1UsV0FBb0MsRUFDcEMsYUFBMkIsRUFDM0IsYUFBMkIsRUFDM0IsZUFBK0IsRUFDL0IsY0FBNkIsRUFDN0IsWUFBeUIsRUFDekIscUJBQTJDLEVBQzNDLGdCQUFpQyxFQUNqQyxjQUE4QixFQUM5QixVQUFxQjtRQVRyQixnQkFBVyxHQUFYLFdBQVcsQ0FBeUI7UUFDcEMsa0JBQWEsR0FBYixhQUFhLENBQWM7UUFDM0Isa0JBQWEsR0FBYixhQUFhLENBQWM7UUFDM0Isb0JBQWUsR0FBZixlQUFlLENBQWdCO1FBQy9CLG1CQUFjLEdBQWQsY0FBYyxDQUFlO1FBQzdCLGlCQUFZLEdBQVosWUFBWSxDQUFhO1FBQ3pCLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBc0I7UUFDM0MscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFpQjtRQUNqQyxtQkFBYyxHQUFk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QUFLLE1BQU0sSUFBSSxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDckMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxFQUFFO2dCQUNoQyxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDakM7U0FDRjtJQUNILENBQUM7SUFFTyxrQkFBa0I7UUFDeEIsY0FBYztRQUNkLDJEQUEyRDtRQUMzRCxrQkFBa0I7UUFDbEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUMxQixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUU7Z0JBQ3JDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO2dCQUNuQixNQUFNLElBQUksR0FBRyxJQUFJLFFBQVEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUM3QyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQ3JCLE1BQU0sS0FBSyxHQUFHLElBQUksUUFBUSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQzdDLEtBQUssQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFDdEIsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7Z0JBQ3pCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQzdCO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOzt5R0FuVlUsV0FBVzs2R0FBWCxXQUFXLGNBRlYsTUFBTTs0RkFFUCxXQUFXO2tCQUh2QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZSwgT25EZXN0cm95fSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0ICogYXMgVEhSRUUgZnJvbSAndGhyZWUnO1xyXG5pbXBvcnQge01lc2gsIFZlY3RvcjN9IGZyb20gJ3RocmVlJztcclxuaW1wb3J0IHtTdWJqZWN0LCBTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge0Nvcm5lciwgRWRnZSwgSGFsZkVkZ2UsIFJvb20sIFdhbGx9IGZyb20gJy4uLy4uLy4uLy4uL2NvcmUzZC9pdGVtcy93YWxsLW9iamVjdHMnO1xyXG5pbXBvcnQge1NlbGVjdGVkV2FsbEV2ZW50fSBmcm9tICcuLi8uLi8uLi8uLi8uLi9jb3JlL2ludGVyZmFjZS9zZWxlY3RlZC13YWxsLWV2ZW50LmludGVyZmFjZSc7XHJcbmltcG9ydCB7U2VsZWN0ZWRGbG9vckV2ZW50fSBmcm9tICcuLi8uLi8uLi8uLi8uLi9jb3JlL2ludGVyZmFjZS9zZWxlY3RlZC1mbG9vci1ldmVudC5pbnRlcmZhY2UnO1xyXG5pbXBvcnQge0VkZ2VWaXNpYmlsaXR5Q2hhbmdlc30gZnJvbSAnLi4vLi4vLi4vLi4vY29yZTNkL2ludGVyZmFjZS9lZGdlLXZpc2liaWxpdHktY2hhbmdlcyc7XHJcbmltcG9ydCB7VGV4dHVyZX0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vY29yZS9tb2RlbC90ZXh0dXJlJztcclxuaW1wb3J0IHtIb21lZGVjb3JhdG9yQXBwU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vY29yZS9zZXJ2aWNlL2hvbWVkZWNvcmF0b3ItYXBwLnNlcnZpY2UnO1xyXG5pbXBvcnQge1NjZW5lU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vLi4vY29yZTNkL3NlcnZpY2Uvc2NlbmUuc2VydmljZSc7XHJcbmltcG9ydCB7Rmxvb3JTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlM2Qvc2VydmljZS9mbG9vci5zZXJ2aWNlJztcclxuaW1wb3J0IHtDZWlsaW5nU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vLi4vY29yZTNkL3NlcnZpY2UvY2VpbGluZy5zZXJ2aWNlJztcclxuaW1wb3J0IHtDYW1lcmFTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlM2Qvc2VydmljZS9jYW1lcmEuc2VydmljZSc7XHJcbmltcG9ydCB7SXRlbVNlcnZpY2V9IGZyb20gJy4uLy4uLy4uLy4uL2NvcmUzZC9zZXJ2aWNlL2l0ZW0uc2VydmljZSc7XHJcbmltcG9ydCB7Q29uZmlndXJhdGlvblNlcnZpY2V9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2NvcmUvc2VydmljZS9jb25maWd1cmF0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQge1ZpZXdNb2RlU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vY29yZS9zZXJ2aWNlL3ZpZXctbW9kZS5zZXJ2aWNlJztcclxuaW1wb3J0IHtQcmVzZXRzU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vY29yZS9zZXJ2aWNlL3ByZXNldHMuc2VydmljZSc7XHJcbmltcG9ydCB7QXJTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlM2Qvc2VydmljZS9hci5zZXJ2aWNlJztcclxuaW1wb3J0IHtWaWV3TW9kZX0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vY29yZS9lbnVtL3ZpZXctbW9kZS5lbnVtJztcclxuaW1wb3J0IHtDb25maWd1cmF0aW9uRGF0YX0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vY29yZS9pbnRlcmZhY2UvY29uZmlndXJhdGlvbi1kYXRhLmludGVyZmFjZSc7XHJcbmltcG9ydCB7Q29uZmlndXJhdGlvbktleX0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vY29yZS9lbnVtL2NvbmZpZ3VyYXRpb24ta2V5LmVudW0nO1xyXG5pbXBvcnQge1V0aWxzfSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlM2QvY29yZS91dGlscyc7XHJcbmltcG9ydCB7VGhyZWVNZXNofSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlM2QvaXRlbXMvdGhyZWUtbWVzaCc7XHJcbmltcG9ydCB7Rmxvb3JQbGFuZUl0ZW19IGZyb20gJy4uLy4uLy4uLy4uL2NvcmUzZC9pdGVtcy9mbG9vci1wbGFuZS1pdGVtJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFJvb21TZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcclxuXHJcbiAgcHVibGljIHJvb21zOiBSb29tW10gPSBbXTtcclxuICBwdWJsaWMgd2FsbHM6IFdhbGxbXSA9IFtdO1xyXG4gIHB1YmxpYyBvcnBoYW5XYWxsczogV2FsbFtdID0gW107XHJcbiAgcHVibGljIGZsb29yVGV4dHVyZXM6IHt9O1xyXG4gIHB1YmxpYyBmbG9vckNvbG9yczoge307XHJcblxyXG4gIHB1YmxpYyB3YWxsU2VsZWN0ZWQ6IFN1YmplY3Q8U2VsZWN0ZWRXYWxsRXZlbnQ+ID0gbmV3IFN1YmplY3Q8U2VsZWN0ZWRXYWxsRXZlbnQ+KCk7XHJcbiAgcHVibGljIGZsb29yU2VsZWN0ZWQ6IFN1YmplY3Q8U2VsZWN0ZWRGbG9vckV2ZW50PiA9IG5ldyBTdWJqZWN0PFNlbGVjdGVkRmxvb3JFdmVudD4oKTtcclxuICBwdWJsaWMgZWRnZVZpc2liaWxpdHlDaGFuZ2VkOiBTdWJqZWN0PEVkZ2VWaXNpYmlsaXR5Q2hhbmdlcz4gPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICBwcml2YXRlIF9lZGdlczogRWRnZVtdID0gW107XHJcbiAgcHJpdmF0ZSBfc3ViczogU3Vic2NyaXB0aW9uW10gPSBbXTtcclxuICBwcml2YXRlIF9kZWZhdWx0Rmxvb3JUZXh0dXJlOiBUZXh0dXJlO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgX2FwcFNlcnZpY2U6IEhvbWVkZWNvcmF0b3JBcHBTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfc2NlbmVTZXJ2aWNlOiBTY2VuZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9mbG9vclNlcnZpY2U6IEZsb29yU2VydmljZSxcclxuICAgIHByaXZhdGUgX2NlaWxpbmdTZXJ2aWNlOiBDZWlsaW5nU2VydmljZSxcclxuICAgIHByaXZhdGUgX2NhbWVyYVNlcnZpY2U6IENhbWVyYVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9pdGVtU2VydmljZTogSXRlbVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9jb25maWd1cmF0aW9uU2VydmljZTogQ29uZmlndXJhdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF92aWV3TW9kZVNlcnZpY2U6IFZpZXdNb2RlU2VydmljZSxcclxuICAgIHByaXZhdGUgX3ByZXNldFNlcnZpY2U6IFByZXNldHNTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfYXJTZXJ2aWNlOiBBclNlcnZpY2VcclxuICApIHtcclxuICAgIHRoaXMuX3N1YnMucHVzaChcclxuICAgICAgdGhpcy5fYXBwU2VydmljZS5mbG9vclRleHR1cmVzTG9hZGVkLnN1YnNjcmliZSgoZmxvb3JzOiBUZXh0dXJlW10pID0+IHtcclxuICAgICAgICBpZiAoZmxvb3JzKSB7XHJcbiAgICAgICAgICB0aGlzLl9kZWZhdWx0Rmxvb3JUZXh0dXJlID0gZmxvb3JzLmZpbmQoZiA9PiBmLmRlZmF1bHQgPT09IHRydWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSksXHJcbiAgICAgIHRoaXMuX2NhbWVyYVNlcnZpY2UuY2FtZXJhTW92ZW1lbnRDaGFuZ2VkLnN1YnNjcmliZSgoKSA9PiB0aGlzLl91cGRhdGVFZGdlVmlzaWJpbGl0eSh0aGlzLl9jYW1lcmFTZXJ2aWNlLmNhbWVyYS5wb3NpdGlvbikpLFxyXG4gICAgICB0aGlzLl9wcmVzZXRTZXJ2aWNlLmFmdGVyTG9hZC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5fdXBkYXRlRWRnZVZpc2liaWxpdHkodGhpcy5fY2FtZXJhU2VydmljZS5jYW1lcmEucG9zaXRpb24pKSxcclxuICAgICAgdGhpcy5fdmlld01vZGVTZXJ2aWNlLnZpZXdNb2RlQ2hhbmdlZC5zdWJzY3JpYmUoYXN5bmMgbW9kZSA9PiB7XHJcbiAgICAgICAgaWYgKChtb2RlID09PSBWaWV3TW9kZS5Sb29tUGxhbjNEIHx8IG1vZGUgPT09IFZpZXdNb2RlLlRvcFZpZXcpICYmICFfYXJTZXJ2aWNlLmFyTW9kZUhhc0JlZW5BY3RpdmUoKSkge1xyXG4gICAgICAgICAgYXdhaXQgdGhpcy51cGRhdGVGbG9vcnNBbmRFZGdlcygpO1xyXG4gICAgICAgICAgdGhpcy5fdmlld01vZGVTZXJ2aWNlLnJvb20zRFVwZGF0ZWQubmV4dCh0cnVlKTtcclxuICAgICAgICB9IGVsc2UgaWYgKG1vZGUgPT09IFZpZXdNb2RlLlZSKSB7XHJcbiAgICAgICAgICB0aGlzLl9zZXRBbGxFZGdlc1Zpc2libGUoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pLFxyXG4gICAgICB0aGlzLl9jb25maWd1cmF0aW9uU2VydmljZS5vbkNoYW5nZS5zdWJzY3JpYmUoKGNoYW5nZWQ6IENvbmZpZ3VyYXRpb25EYXRhKSA9PiB7XHJcbiAgICAgICAgICBpZiAoQ29uZmlndXJhdGlvbktleS5TaG93V2FsbHMgaW4gY2hhbmdlZCkge1xyXG4gICAgICAgICAgICB0aGlzLl9zaG93SGlkZVdhbGxzKGNoYW5nZWRbQ29uZmlndXJhdGlvbktleS5TaG93V2FsbHNdKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0RmlsbGVyUGxhbmVzKCk6IGFueSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZWRnZXMucmVkdWNlKChwbGFuZXMsIGVkZ2UpID0+IHtcclxuICAgICAgY29uc3QgZmlsbGVycyA9IGVkZ2UuZ2V0VG9wU2lkZUZpbGxlcnMoKTtcclxuICAgICAgcmV0dXJuIHBsYW5lcy5jb25jYXQoZmlsbGVycyk7XHJcbiAgICB9LCBbXSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZmxvb3JQbGFuZXMoKTogVEhSRUUuTWVzaFtdIHtcclxuICAgIHJldHVybiBVdGlscy5tYXAodGhpcy5yb29tcywgKHJvb206IFJvb20pID0+IHtcclxuICAgICAgcmV0dXJuIHJvb20uZmxvb3JQbGFuZTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldEZsb29yVGV4dHVyZSh1dWlkOiBzdHJpbmcpOiBUZXh0dXJlIHtcclxuICAgIHJldHVybiB0aGlzLmZsb29yVGV4dHVyZXNbdXVpZF07XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0Rmxvb3JUZXh0dXJlKHJvb206IFJvb20sIHRleHR1cmU6IFRleHR1cmUpOiB2b2lkIHtcclxuICAgIHRoaXMuZmxvb3JUZXh0dXJlc1tyb29tLmdldFV1aWQoKV0gPSB0ZXh0dXJlO1xyXG4gICAgdGhpcy5kZWxldGVGbG9vckNvbG9yKHJvb20uZ2V0VXVpZCgpKTtcclxuICAgIHRoaXMuX2Zsb29yU2VydmljZS5zZXRGbG9vclRleHR1cmUocm9vbSwgdGV4dHVyZSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZGVsZXRlRmxvb3JUZXh0dXJlKHV1aWQ6IHN0cmluZykge1xyXG4gICAgZGVsZXRlIHRoaXMuZmxvb3JUZXh0dXJlc1t1dWlkXTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRGbG9vckNvbG9yKHV1aWQ6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuZmxvb3JDb2xvcnNbdXVpZF07XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0Rmxvb3JDb2xvcihyb29tOiBSb29tLCBjb2xvcjogbnVtYmVyKSB7XHJcbiAgICB0aGlzLmZsb29yQ29sb3JzW3Jvb20uZ2V0VXVpZCgpXSA9IGNvbG9yO1xyXG4gICAgdGhpcy5kZWxldGVGbG9vclRleHR1cmUocm9vbS5nZXRVdWlkKCkpO1xyXG4gICAgdGhpcy5fZmxvb3JTZXJ2aWNlLnNldEZsb29yQ29sb3Iocm9vbSwgY29sb3IpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGRlbGV0ZUZsb29yQ29sb3IodXVpZDogc3RyaW5nKSB7XHJcbiAgICBkZWxldGUgdGhpcy5mbG9vckNvbG9yc1t1dWlkXTtcclxuICB9XHJcblxyXG4gIC8vIGhhY2tcclxuICBwdWJsaWMgd2FsbEVkZ2VzKCk6IEhhbGZFZGdlW10ge1xyXG4gICAgY29uc3QgZWRnZXMgPSBbXTtcclxuXHJcbiAgICB0aGlzLndhbGxzLmZvckVhY2goKHdhbGwpID0+IHtcclxuICAgICAgaWYgKHdhbGwuZnJvbnRFZGdlKSB7XHJcbiAgICAgICAgZWRnZXMucHVzaCh3YWxsLmZyb250RWRnZSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHdhbGwuYmFja0VkZ2UpIHtcclxuICAgICAgICBlZGdlcy5wdXNoKHdhbGwuYmFja0VkZ2UpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBlZGdlcztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRDbG9zZXN0V2FsbEVkZ2UoaXRlbVg6IG51bWJlciwgaXRlbVo6IG51bWJlcik6IEhhbGZFZGdlIHtcclxuICAgIGNvbnN0IHdhbGxFZGdlcyA9IHRoaXMud2FsbEVkZ2VzKCk7XHJcblxyXG4gICAgbGV0IHdhbGxFZGdlID0gbnVsbDtcclxuICAgIGxldCBtaW5EaXN0YW5jZSA9IG51bGw7XHJcblxyXG4gICAgd2FsbEVkZ2VzLmZvckVhY2goKGVkZ2U6IEhhbGZFZGdlKSA9PiB7XHJcbiAgICAgIGNvbnN0IGRpc3RhbmNlID0gZWRnZS5kaXN0YW5jZVRvKGl0ZW1YLCBpdGVtWik7XHJcbiAgICAgIGlmIChtaW5EaXN0YW5jZSA9PT0gbnVsbCB8fCBkaXN0YW5jZSA8IG1pbkRpc3RhbmNlKSB7XHJcbiAgICAgICAgbWluRGlzdGFuY2UgPSBkaXN0YW5jZTtcclxuICAgICAgICB3YWxsRWRnZSA9IGVkZ2U7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiB3YWxsRWRnZTtcclxuICB9XHJcblxyXG4gIC8vIGhhY2tcclxuICBwdWJsaWMgd2FsbEVkZ2VQbGFuZXMoKTogVEhSRUUuTWVzaFtdIHtcclxuICAgIGNvbnN0IHBsYW5lcyA9IFtdO1xyXG4gICAgdGhpcy53YWxscy5mb3JFYWNoKCh3YWxsKSA9PiB7XHJcbiAgICAgIGlmICh3YWxsLmZyb250RWRnZSkge1xyXG4gICAgICAgIHBsYW5lcy5wdXNoKHdhbGwuZnJvbnRFZGdlLnBsYW5lKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAod2FsbC5iYWNrRWRnZSkge1xyXG4gICAgICAgIHBsYW5lcy5wdXNoKHdhbGwuYmFja0VkZ2UucGxhbmUpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBwbGFuZXM7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2VpbGluZ1BsYW5lcygpOiBNZXNoW10ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NlaWxpbmdTZXJ2aWNlLnBsYW5lcztcclxuICB9XHJcblxyXG4gIHB1YmxpYyB3YWxsUmVtb3ZlZCh3YWxsOiBXYWxsKTogdm9pZCB7XHJcbiAgICB3YWxsLml0ZW1zLmZvckVhY2goaSA9PiB0aGlzLl9zY2VuZVNlcnZpY2UucmVtb3ZlT2JqZWN0KGkpKTtcclxuICAgIHdhbGwub25JdGVtcy5mb3JFYWNoKGkgPT4gdGhpcy5fc2NlbmVTZXJ2aWNlLnJlbW92ZU9iamVjdChpKSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY3JlYXRlV2FsbChzdGFydDogQ29ybmVyLCBlbmQ6IENvcm5lcik6IFdhbGwge1xyXG4gICAgY29uc3Qgd2FsbCA9IG5ldyBXYWxsKHN0YXJ0LCBlbmQpO1xyXG4gICAgd2FsbC5oZWlnaHQgPSB0aGlzLl9jb25maWd1cmF0aW9uU2VydmljZS5nZXRWYWx1ZShDb25maWd1cmF0aW9uS2V5LldhbGxIZWlnaHQpIC8gMTAwO1xyXG4gICAgd2FsbC50aGlja25lc3MgPSB0aGlzLl9jb25maWd1cmF0aW9uU2VydmljZS5nZXRWYWx1ZShDb25maWd1cmF0aW9uS2V5LldhbGxUaGlja25lc3MpIC8gMTAwO1xyXG4gICAgdGhpcy53YWxscy5wdXNoKHdhbGwpO1xyXG4gICAgcmV0dXJuIHdhbGw7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcmVtb3ZlV2FsbCh3YWxsOiBXYWxsKTogdm9pZCB7XHJcbiAgICB3YWxsLml0ZW1zLmZvckVhY2goaSA9PiB0aGlzLl9pdGVtU2VydmljZS5yZW1vdmVJdGVtKGkpKTtcclxuICAgIHdhbGwub25JdGVtcy5mb3JFYWNoKGkgPT4gdGhpcy5faXRlbVNlcnZpY2UucmVtb3ZlSXRlbShpKSk7XHJcbiAgICBVdGlscy5yZW1vdmVWYWx1ZSh0aGlzLndhbGxzLCB3YWxsKTtcclxuICAgIHdhbGwucmVtb3ZlKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdXBkYXRlV2FsbEhlaWdodHMobmV3SGVpZ2h0OiBudW1iZXIpOiB2b2lkIHtcclxuICAgIHRoaXMud2FsbHMuZm9yRWFjaCh3YWxsID0+IHtcclxuICAgICAgd2FsbC5oZWlnaHQgPSBuZXdIZWlnaHQgLyAxMDA7XHJcbiAgICAgIHdhbGwuZmlyZVJlZHJhdygpO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLnVwZGF0ZUNlaWxpbmdzKCk7XHJcbiAgICB0aGlzLl9zY2VuZVNlcnZpY2UubmVlZHNSZW5kZXIgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIHVwZGF0ZVJvb21zKHJvb21Db3JuZXJzOiBDb3JuZXJbXVtdKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICB0aGlzLndhbGxzLmZvckVhY2god2FsbCA9PiB3YWxsLnJlc2V0RnJvbnRCYWNrKCkpO1xyXG4gICAgdGhpcy5yb29tcy5mb3JFYWNoKHIgPT4gci5kaXNwb3NlKCkpO1xyXG4gICAgdGhpcy5yb29tcyA9IFtdO1xyXG4gICAgcm9vbUNvcm5lcnMuZm9yRWFjaCgoY29ybmVyczogQ29ybmVyW10pID0+IHtcclxuICAgICAgdGhpcy5yb29tcy5wdXNoKG5ldyBSb29tKGNvcm5lcnMsICB0aGlzLl9kZWZhdWx0Rmxvb3JUZXh0dXJlKSk7XHJcbiAgICB9KTtcclxuICAgIGF3YWl0IHRoaXMudXBkYXRlRmxvb3JzQW5kRWRnZXMoKTtcclxuICAgIHRoaXMuX2Fzc2lnbk9ycGhhbkVkZ2VzKCk7XHJcbiAgICB0aGlzLndhbGxzLmZvckVhY2god2FsbCA9PiB3YWxsLnVwZGF0ZVdhbGxJdGVtcygpKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyByZXNldCgpOiB2b2lkIHtcclxuICAgIHRoaXMud2FsbHMuZm9yRWFjaCgod2FsbCkgPT4ge1xyXG4gICAgICB0aGlzLnJlbW92ZVdhbGwod2FsbCk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMud2FsbHMubGVuZ3RoID0gMDtcclxuICAgIHRoaXMuZmxvb3JDb2xvcnMgPSB7fTtcclxuICAgIHRoaXMuZmxvb3JUZXh0dXJlcyA9IHt9O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNlbGVjdFdhbGwoZXZlbnQ6IE1vdXNlRXZlbnQsIHdhbGw6IFdhbGwsIGVkZ2U6IEhhbGZFZGdlKTogdm9pZCB7XHJcbiAgICB0aGlzLndhbGxTZWxlY3RlZC5uZXh0KHtldmVudDogZXZlbnQsIHdhbGw6IHdhbGwsIGVkZ2U6IGVkZ2V9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZWxlY3RGbG9vcihldmVudDogTW91c2VFdmVudCwgcm9vbTogUm9vbSk6IHZvaWQge1xyXG4gICAgdGhpcy5mbG9vclNlbGVjdGVkLm5leHQoe2V2ZW50OiBldmVudCwgcm9vbTogcm9vbX0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldFJvb21DZW50ZXIoKTogVmVjdG9yMyB7XHJcbiAgICBjb25zdCBmbG9vcnMgPSB0aGlzLmZsb29yUGxhbmVzKCk7XHJcbiAgICByZXR1cm4gZmxvb3JzICYmIGZsb29ycy5sZW5ndGggPiAwID8gZmxvb3JzWzBdLnBvc2l0aW9uIDogbnVsbDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyB1cGRhdGVGbG9vcnNBbmRFZGdlcygpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRoaXMuX2Zsb29yU2VydmljZS5yZW1vdmVGbG9vcnMoKTtcclxuICAgIHRoaXMuX2VkZ2VzLmZvckVhY2goKGVkZ2U6IEVkZ2UpID0+IHtcclxuICAgICAgZWRnZS5nZXRQbGFuZXMoKS5mb3JFYWNoKChwbGFuZTogTWVzaCkgPT4ge1xyXG4gICAgICAgIHRoaXMuX3NjZW5lU2VydmljZS5yZW1vdmVPYmplY3QocGxhbmUpO1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5fZWRnZXMubGVuZ3RoID0gMDtcclxuXHJcbiAgICAvLyBkcmF3IGZsb29yc1xyXG4gICAgY29uc3Qgc29ydGVkUm9vbXM6IFJvb21bXSA9IHRoaXMucm9vbXMuc29ydCgoYSwgYikgPT4gYS5hcmVhIC0gYi5hcmVhKTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc29ydGVkUm9vbXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgY29uc3Qgcm9vbTogUm9vbSA9IHNvcnRlZFJvb21zW2ldO1xyXG4gICAgICBjb25zdCBzdG9yZWRDb2xvciA9IHRoaXMuZ2V0Rmxvb3JDb2xvcihyb29tLmdldFV1aWQoKSk7XHJcbiAgICAgIGNvbnN0IHN0b3JlZFRleHR1cmUgPSB0aGlzLmdldEZsb29yVGV4dHVyZShyb29tLmdldFV1aWQoKSk7XHJcbiAgICAgIGNvbnN0IGNvbG9yID0gc3RvcmVkQ29sb3IgPyBzdG9yZWRDb2xvciA6IHJvb20uZmxvb3JDb2xvcjtcclxuICAgICAgY29uc3QgdGV4dHVyZSA9IHN0b3JlZFRleHR1cmUgPyBzdG9yZWRUZXh0dXJlIDogKHJvb20uZmxvb3JUZXh0dXJlID8gcm9vbS5mbG9vclRleHR1cmUgOiB1bmRlZmluZWQpO1xyXG4gICAgICBjb25zdCBmbG9vclBsYW5lOiBGbG9vclBsYW5lSXRlbSA9IGF3YWl0IHRoaXMuX2Zsb29yU2VydmljZS5nZW5lcmF0ZUZsb29yUGxhbmUoXHJcbiAgICAgICAgICBzdG9yZWRUZXh0dXJlID8gbnVsbCA6IGNvbG9yLCBzdG9yZWRDb2xvciA/IChzdG9yZWRUZXh0dXJlID8gdGV4dHVyZSA6IG51bGwpIDogdGV4dHVyZSwgcm9vbS5pbnRlcmlvckNvcm5lcnMsIHNvcnRlZFJvb21zLnNsaWNlKDAsIGkpKTtcclxuICAgICAgZmxvb3JQbGFuZS5jaGlsZHJlblswXS51c2VyRGF0YS5yb29tID0gcm9vbTtcclxuICAgICAgcm9vbS5mbG9vclRleHR1cmUgPSB0ZXh0dXJlO1xyXG4gICAgICByb29tLmZsb29yQ29sb3IgPSBjb2xvcjtcclxuICAgICAgcm9vbS5mbG9vclBsYW5lID0gZmxvb3JQbGFuZTtcclxuICAgIH1cclxuICAgIC8vIGF3YWl0IHRoaXMucm9vbXNcclxuICAgIC8vICAgLnNvcnQoKGEsIGIpID0+IGEuYXJlYSAtIGIuYXJlYSlcclxuICAgIC8vICAgLmZvckVhY2goYXN5bmMgKHJvb20sIGluZGV4LCBhcnJheSkgPT4ge1xyXG4gICAgLy8gICAgIGNvbnN0IHN0b3JlZENvbG9yID0gdGhpcy5nZXRGbG9vckNvbG9yKHJvb20uZ2V0VXVpZCgpKTtcclxuICAgIC8vICAgICBjb25zdCBzdG9yZWRUZXh0dXJlID0gdGhpcy5nZXRGbG9vclRleHR1cmUocm9vbS5nZXRVdWlkKCkpO1xyXG4gICAgLy8gICAgIGNvbnN0IGNvbG9yID0gc3RvcmVkQ29sb3IgPyBzdG9yZWRDb2xvciA6IHJvb20uZmxvb3JDb2xvcjtcclxuICAgIC8vICAgICBjb25zdCB0ZXh0dXJlID0gc3RvcmVkVGV4dHVyZSA/IHN0b3JlZFRleHR1cmUgOiAocm9vbS5mbG9vclRleHR1cmUgPyByb29tLmZsb29yVGV4dHVyZSA6IHVuZGVmaW5lZCk7XHJcbiAgICAvLyAgICAgY29uc3QgZmxvb3JQbGFuZTogRmxvb3JQbGFuZUl0ZW0gPSBhd2FpdCB0aGlzLl9mbG9vclNlcnZpY2UuZ2VuZXJhdGVGbG9vclBsYW5lKFxyXG4gICAgLy8gICAgICAgc3RvcmVkVGV4dHVyZSA/IG51bGwgOiBjb2xvciwgc3RvcmVkQ29sb3IgPyAoc3RvcmVkVGV4dHVyZSA/IHRleHR1cmUgOiBudWxsKSA6IHRleHR1cmUsIHJvb20uaW50ZXJpb3JDb3JuZXJzLCBhcnJheS5zbGljZSgwLCBpbmRleCkpO1xyXG4gICAgLy8gICAgIGZsb29yUGxhbmUudXNlckRhdGEucm9vbSA9IHJvb207XHJcbiAgICAvLyAgICAgcm9vbS5mbG9vclRleHR1cmUgPSB0ZXh0dXJlO1xyXG4gICAgLy8gICAgIHJvb20uZmxvb3JDb2xvciA9IGNvbG9yO1xyXG4gICAgLy8gICAgIHJvb20uZmxvb3JQbGFuZSA9IGZsb29yUGxhbmU7XHJcbiAgICAvLyAgIH0pO1xyXG4gICAgLy9cclxuICAgIC8vIGRyYXcgZWRnZXNcclxuICAgIGNvbnN0IGVkZ2VzID0gdGhpcy53YWxsRWRnZXMoKTtcclxuICAgIGlmIChlZGdlcyAmJiBlZGdlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZWRnZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBjb25zdCBoYWxmRWRnZSA9IGVkZ2VzW2ldO1xyXG4gICAgICAgIGNvbnN0IG5ld0VkZ2U6IEVkZ2UgPSBuZXcgRWRnZShoYWxmRWRnZSk7XHJcbiAgICAgICAgYXdhaXQgbmV3RWRnZS5pbml0KCk7XHJcbiAgICAgICAgaGFsZkVkZ2UuZWRnZXMucHVzaChuZXdFZGdlKTtcclxuICAgICAgICB0aGlzLl9lZGdlcy5wdXNoKG5ld0VkZ2UpO1xyXG4gICAgICAgIGNvbnN0IHBsYW5lcyA9IG5ld0VkZ2UuZ2V0UGxhbmVzKCk7XHJcbiAgICAgICAgcGxhbmVzLmZvckVhY2goKHBsYW5lKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLl9zY2VuZVNlcnZpY2UuYWRkT2JqZWN0KHBsYW5lKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIGRyYXcgY2VpbGluZ3NcclxuICAgIHRoaXMudXBkYXRlQ2VpbGluZ3MoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyB1cGRhdGVDZWlsaW5ncygpOiB2b2lkIHtcclxuICAgIHRoaXMuX2NlaWxpbmdTZXJ2aWNlLnJlbW92ZUNlaWxpbmdzKCk7XHJcbiAgICB0aGlzLnJvb21zXHJcbiAgICAgIC5zb3J0KChhLCBiKSA9PiBhLmFyZWEgLSBiLmFyZWEpXHJcbiAgICAgIC5mb3JFYWNoKChyb29tOiBSb29tKSA9PiB7XHJcbiAgICAgICAgcm9vbS51cGRhdGVXYWxsSGVpZ2h0cygpO1xyXG4gICAgICAgIGNvbnN0IGNlaWxpbmc6IFRocmVlTWVzaCA9IHRoaXMuX2NlaWxpbmdTZXJ2aWNlLmdlbmVyYXRlQ2VpbGluZ1BsYW5lKDB4ZTVlNWU1LCByb29tLmludGVyaW9yQ29ybmVycywgcm9vbS5lZGdlSGVpZ2h0cyk7XHJcbiAgICAgICAgaWYgKGNlaWxpbmcpIHtcclxuICAgICAgICAgIGNlaWxpbmcudXNlckRhdGEucm9vbSA9IHJvb207XHJcbiAgICAgICAgICByb29tLmNlaWxpbmdQbGFuZSA9IGNlaWxpbmc7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3Nob3dIaWRlV2FsbHMoc2hvdzogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy53YWxscy5mb3JFYWNoKHcgPT4gdy5zaG93SGlkZVdhbGwoc2hvdykpO1xyXG4gICAgdGhpcy5fc2NlbmVTZXJ2aWNlLm5lZWRzUmVuZGVyID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3VwZGF0ZUVkZ2VWaXNpYmlsaXR5KGNhbWVyYVBvc2l0aW9uOiBWZWN0b3IzKTogdm9pZCB7XHJcbiAgICB0aGlzLndhbGxFZGdlcygpLmZvckVhY2goZSA9PiB7XHJcbiAgICAgIGNvbnN0IHZpc2liaWxpdHlDaGFuZ2UgPSBlLnVwZGF0ZVZpc2liaWxpdHkoY2FtZXJhUG9zaXRpb24pO1xyXG4gICAgICBpZiAodmlzaWJpbGl0eUNoYW5nZSAhPT0gbnVsbCkge1xyXG4gICAgICAgIGNvbnN0IGVkZ2VWaXNpYmlsaXR5Q2hhbmdlczogRWRnZVZpc2liaWxpdHlDaGFuZ2VzID0ge1xyXG4gICAgICAgICAgZWRnZTogZSxcclxuICAgICAgICAgIHZpc2liaWxpdHk6IHZpc2liaWxpdHlDaGFuZ2VcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMuZWRnZVZpc2liaWxpdHlDaGFuZ2VkLm5leHQoZWRnZVZpc2liaWxpdHlDaGFuZ2VzKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9zZXRBbGxFZGdlc1Zpc2libGUoKSB7XHJcbiAgICB0aGlzLndhbGxFZGdlcygpLmZvckVhY2goKGU6IEhhbGZFZGdlKSA9PiB7XHJcbiAgICAgIGUudXBkYXRlVmlzaWJsaXR5KHRydWUpO1xyXG4gICAgICBjb25zdCBlZGdlVmlzaWJpbGl0eUNoYW5nZXM6IEVkZ2VWaXNpYmlsaXR5Q2hhbmdlcyA9IHtcclxuICAgICAgICBlZGdlOiBlLFxyXG4gICAgICAgIHZpc2liaWxpdHk6IHRydWVcclxuICAgICAgfTtcclxuICAgICAgdGhpcy5lZGdlVmlzaWJpbGl0eUNoYW5nZWQubmV4dChlZGdlVmlzaWJpbGl0eUNoYW5nZXMpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF91cGRhdGVGbG9vclRleHR1cmVzKCkge1xyXG4gICAgY29uc3QgdXVpZHMgPSBVdGlscy5tYXAodGhpcy5yb29tcywgZnVuY3Rpb24gKHJvb20pIHtcclxuICAgICAgcmV0dXJuIHJvb20uZ2V0VXVpZCgpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgZm9yIChjb25zdCB1dWlkIGluIHRoaXMuZmxvb3JUZXh0dXJlcykge1xyXG4gICAgICBpZiAoIVV0aWxzLmhhc1ZhbHVlKHV1aWRzLCB1dWlkKSkge1xyXG4gICAgICAgIGRlbGV0ZSB0aGlzLmZsb29yVGV4dHVyZXNbdXVpZF07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2Fzc2lnbk9ycGhhbkVkZ2VzKCkge1xyXG4gICAgLy8ga2luZGEgaGFja3lcclxuICAgIC8vIGZpbmQgb3JwaGFuZWQgd2FsbCBzZWdtZW50cyAoaS5lLiBub3QgcGFydCBvZiByb29tcykgYW5kXHJcbiAgICAvLyBnaXZlIHRoZW0gZWRnZXNcclxuICAgIHRoaXMub3JwaGFuV2FsbHMgPSBbXTtcclxuICAgIHRoaXMud2FsbHMuZm9yRWFjaCgod2FsbCkgPT4ge1xyXG4gICAgICBpZiAoIXdhbGwuYmFja0VkZ2UgJiYgIXdhbGwuZnJvbnRFZGdlKSB7XHJcbiAgICAgICAgd2FsbC5vcnBoYW4gPSB0cnVlO1xyXG4gICAgICAgIGNvbnN0IGJhY2sgPSBuZXcgSGFsZkVkZ2UobnVsbCwgd2FsbCwgZmFsc2UpO1xyXG4gICAgICAgIGJhY2suZ2VuZXJhdGVQbGFuZSgpO1xyXG4gICAgICAgIGNvbnN0IGZyb250ID0gbmV3IEhhbGZFZGdlKG51bGwsIHdhbGwsIHRydWUpO1xyXG4gICAgICAgIGZyb250LmdlbmVyYXRlUGxhbmUoKTtcclxuICAgICAgICB3YWxsLnVwZGF0ZUluV2FsbEl0ZW1zKCk7XHJcbiAgICAgICAgdGhpcy5vcnBoYW5XYWxscy5wdXNoKHdhbGwpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuIl19
|
|
333
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9vbS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2NsaWVudC9hcHAvcGx1Z2lucy9yb29tLXBsYW5uZXIvY29tcG9uZW50cy9mbG9vcnBsYW5uZXIvc2VydmljZS9yb29tLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFDLFVBQVUsRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUdwRCxPQUFPLEVBQUMsT0FBTyxFQUFlLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBUyxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUMsTUFBTSx1Q0FBdUMsQ0FBQztBQWV6RixPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0seUNBQXlDLENBQUM7QUFFakUsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0saURBQWlELENBQUM7QUFDakYsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLCtCQUErQixDQUFDOzs7Ozs7Ozs7Ozs7QUFPcEQsTUFBTSxPQUFPLFdBQVc7SUFnQnRCLFlBQ1UsV0FBb0MsRUFDcEMsYUFBMkIsRUFDM0IsYUFBMkIsRUFDM0IsZUFBK0IsRUFDL0IsY0FBNkIsRUFDN0IsWUFBeUIsRUFDekIscUJBQTJDLEVBQzNDLGdCQUFpQyxFQUNqQyxjQUE4QixFQUM5QixVQUFxQjtRQVRyQixnQkFBVyxHQUFYLFdBQVcsQ0FBeUI7UUFDcEMsa0JBQWEsR0FBYixhQUFhLENBQWM7UUFDM0Isa0JBQWEsR0FBYixhQUFhLENBQWM7UUFDM0Isb0JBQWUsR0FBZixlQUFlLENBQWdCO1FBQy9CLG1CQUFjLEdBQWQsY0FBYyxDQUFlO1FBQzdCLGlCQUFZLEdBQVosWUFBWSxDQUFhO1FBQ3pCLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBc0I7UUFDM0MscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFpQjtRQUNqQyxtQkFBYyxHQUFk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TTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGUsIE9uRGVzdHJveX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCAqIGFzIFRIUkVFIGZyb20gJ3RocmVlJztcclxuaW1wb3J0IHtNZXNoLCBWZWN0b3IzfSBmcm9tICd0aHJlZSc7XHJcbmltcG9ydCB7U3ViamVjdCwgU3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHtDb3JuZXIsIEVkZ2UsIEhhbGZFZGdlLCBSb29tLCBXYWxsfSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlM2QvaXRlbXMvd2FsbC1vYmplY3RzJztcclxuaW1wb3J0IHtTZWxlY3RlZFdhbGxFdmVudH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vY29yZS9pbnRlcmZhY2Uvc2VsZWN0ZWQtd2FsbC1ldmVudC5pbnRlcmZhY2UnO1xyXG5pbXBvcnQge1NlbGVjdGVkRmxvb3JFdmVudH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vY29yZS9pbnRlcmZhY2Uvc2VsZWN0ZWQtZmxvb3ItZXZlbnQuaW50ZXJmYWNlJztcclxuaW1wb3J0IHtFZGdlVmlzaWJpbGl0eUNoYW5nZXN9IGZyb20gJy4uLy4uLy4uLy4uL2NvcmUzZC9pbnRlcmZhY2UvZWRnZS12aXNpYmlsaXR5LWNoYW5nZXMnO1xyXG5pbXBvcnQge1RleHR1cmV9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2NvcmUvbW9kZWwvdGV4dHVyZSc7XHJcbmltcG9ydCB7SG9tZWRlY29yYXRvckFwcFNlcnZpY2V9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2NvcmUvc2VydmljZS9ob21lZGVjb3JhdG9yLWFwcC5zZXJ2aWNlJztcclxuaW1wb3J0IHtTY2VuZVNlcnZpY2V9IGZyb20gJy4uLy4uLy4uLy4uL2NvcmUzZC9zZXJ2aWNlL3NjZW5lLnNlcnZpY2UnO1xyXG5pbXBvcnQge0Zsb29yU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vLi4vY29yZTNkL3NlcnZpY2UvZmxvb3Iuc2VydmljZSc7XHJcbmltcG9ydCB7Q2VpbGluZ1NlcnZpY2V9IGZyb20gJy4uLy4uLy4uLy4uL2NvcmUzZC9zZXJ2aWNlL2NlaWxpbmcuc2VydmljZSc7XHJcbmltcG9ydCB7Q2FtZXJhU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vLi4vY29yZTNkL3NlcnZpY2UvY2FtZXJhLnNlcnZpY2UnO1xyXG5pbXBvcnQge0l0ZW1TZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlM2Qvc2VydmljZS9pdGVtLnNlcnZpY2UnO1xyXG5pbXBvcnQge0NvbmZpZ3VyYXRpb25TZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9jb3JlL3NlcnZpY2UvY29uZmlndXJhdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHtWaWV3TW9kZVNlcnZpY2V9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2NvcmUvc2VydmljZS92aWV3LW1vZGUuc2VydmljZSc7XHJcbmltcG9ydCB7UHJlc2V0c1NlcnZpY2V9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2NvcmUvc2VydmljZS9wcmVzZXRzLnNlcnZpY2UnO1xyXG5pbXBvcnQge0FyU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vLi4vY29yZTNkL3NlcnZpY2UvYXIuc2VydmljZSc7XHJcbmltcG9ydCB7Vmlld01vZGV9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2NvcmUvZW51bS92aWV3LW1vZGUuZW51bSc7XHJcbmltcG9ydCB7Q29uZmlndXJhdGlvbkRhdGF9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2NvcmUvaW50ZXJmYWNlL2NvbmZpZ3VyYXRpb24tZGF0YS5pbnRlcmZhY2UnO1xyXG5pbXBvcnQge0NvbmZpZ3VyYXRpb25LZXl9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2NvcmUvZW51bS9jb25maWd1cmF0aW9uLWtleS5lbnVtJztcclxuaW1wb3J0IHtVdGlsc30gZnJvbSAnLi4vLi4vLi4vLi4vY29yZTNkL2NvcmUvdXRpbHMnO1xyXG5pbXBvcnQge1RocmVlTWVzaH0gZnJvbSAnLi4vLi4vLi4vLi4vY29yZTNkL2l0ZW1zL3RocmVlLW1lc2gnO1xyXG5pbXBvcnQge0Zsb29yUGxhbmVJdGVtfSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlM2QvaXRlbXMvZmxvb3ItcGxhbmUtaXRlbSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSb29tU2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcblxyXG4gIHB1YmxpYyByb29tczogUm9vbVtdID0gW107XHJcbiAgcHVibGljIHdhbGxzOiBXYWxsW10gPSBbXTtcclxuICBwdWJsaWMgb3JwaGFuV2FsbHM6IFdhbGxbXSA9IFtdO1xyXG4gIHB1YmxpYyBmbG9vclRleHR1cmVzOiB7fTtcclxuICBwdWJsaWMgZmxvb3JDb2xvcnM6IHt9O1xyXG5cclxuICBwdWJsaWMgd2FsbFNlbGVjdGVkOiBTdWJqZWN0PFNlbGVjdGVkV2FsbEV2ZW50PiA9IG5ldyBTdWJqZWN0PFNlbGVjdGVkV2FsbEV2ZW50PigpO1xyXG4gIHB1YmxpYyBmbG9vclNlbGVjdGVkOiBTdWJqZWN0PFNlbGVjdGVkRmxvb3JFdmVudD4gPSBuZXcgU3ViamVjdDxTZWxlY3RlZEZsb29yRXZlbnQ+KCk7XHJcbiAgcHVibGljIGVkZ2VWaXNpYmlsaXR5Q2hhbmdlZDogU3ViamVjdDxFZGdlVmlzaWJpbGl0eUNoYW5nZXM+ID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgcHJpdmF0ZSBfZWRnZXM6IEVkZ2VbXSA9IFtdO1xyXG4gIHByaXZhdGUgX3N1YnM6IFN1YnNjcmlwdGlvbltdID0gW107XHJcbiAgcHJpdmF0ZSBfZGVmYXVsdEZsb29yVGV4dHVyZTogVGV4dHVyZTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIF9hcHBTZXJ2aWNlOiBIb21lZGVjb3JhdG9yQXBwU2VydmljZSxcclxuICAgIHByaXZhdGUgX3NjZW5lU2VydmljZTogU2NlbmVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfZmxvb3JTZXJ2aWNlOiBGbG9vclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9jZWlsaW5nU2VydmljZTogQ2VpbGluZ1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9jYW1lcmFTZXJ2aWNlOiBDYW1lcmFTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfaXRlbVNlcnZpY2U6IEl0ZW1TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfY29uZmlndXJhdGlvblNlcnZpY2U6IENvbmZpZ3VyYXRpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfdmlld01vZGVTZXJ2aWNlOiBWaWV3TW9kZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9wcmVzZXRTZXJ2aWNlOiBQcmVzZXRzU2VydmljZSxcclxuICAgIHByaXZhdGUgX2FyU2VydmljZTogQXJTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICB0aGlzLl9zdWJzLnB1c2goXHJcbiAgICAgIHRoaXMuX2FwcFNlcnZpY2UuZmxvb3JUZXh0dXJlc0xvYWRlZC5zdWJzY3JpYmUoKGZsb29yczogVGV4dHVyZVtdKSA9PiB7XHJcbiAgICAgICAgaWYgKGZsb29ycykge1xyXG4gICAgICAgICAgdGhpcy5fZGVmYXVsdEZsb29yVGV4dHVyZSA9IGZsb29ycy5maW5kKGYgPT4gZi5kZWZhdWx0ID09PSB0cnVlICYmICFmLnVzZVN0YW5kYWxvbmUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSksXHJcbiAgICAgIHRoaXMuX2NhbWVyYVNlcnZpY2UuY2FtZXJhTW92ZW1lbnRDaGFuZ2VkLnN1YnNjcmliZSgoKSA9PiB0aGlzLl91cGRhdGVFZGdlVmlzaWJpbGl0eSh0aGlzLl9jYW1lcmFTZXJ2aWNlLmNhbWVyYS5wb3NpdGlvbikpLFxyXG4gICAgICB0aGlzLl9wcmVzZXRTZXJ2aWNlLmFmdGVyTG9hZC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5fdXBkYXRlRWRnZVZpc2liaWxpdHkodGhpcy5fY2FtZXJhU2VydmljZS5jYW1lcmEucG9zaXRpb24pKSxcclxuICAgICAgdGhpcy5fdmlld01vZGVTZXJ2aWNlLnZpZXdNb2RlQ2hhbmdlZC5zdWJzY3JpYmUoYXN5bmMgbW9kZSA9PiB7XHJcbiAgICAgICAgaWYgKChtb2RlID09PSBWaWV3TW9kZS5Sb29tUGxhbjNEIHx8IG1vZGUgPT09IFZpZXdNb2RlLlRvcFZpZXcpICYmICFfYXJTZXJ2aWNlLmFyTW9kZUhhc0JlZW5BY3RpdmUoKSkge1xyXG4gICAgICAgICAgYXdhaXQgdGhpcy51cGRhdGVGbG9vcnNBbmRFZGdlcygpO1xyXG4gICAgICAgICAgdGhpcy5fdmlld01vZGVTZXJ2aWNlLnJvb20zRFVwZGF0ZWQubmV4dCh0cnVlKTtcclxuICAgICAgICB9IGVsc2UgaWYgKG1vZGUgPT09IFZpZXdNb2RlLlZSKSB7XHJcbiAgICAgICAgICB0aGlzLl9zZXRBbGxFZGdlc1Zpc2libGUoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pLFxyXG4gICAgICB0aGlzLl9jb25maWd1cmF0aW9uU2VydmljZS5vbkNoYW5nZS5zdWJzY3JpYmUoKGNoYW5nZWQ6IENvbmZpZ3VyYXRpb25EYXRhKSA9PiB7XHJcbiAgICAgICAgICBpZiAoQ29uZmlndXJhdGlvbktleS5TaG93V2FsbHMgaW4gY2hhbmdlZCkge1xyXG4gICAgICAgICAgICB0aGlzLl9zaG93SGlkZVdhbGxzKGNoYW5nZWRbQ29uZmlndXJhdGlvbktleS5TaG93V2FsbHNdKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0RmlsbGVyUGxhbmVzKCk6IGFueSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZWRnZXMucmVkdWNlKChwbGFuZXMsIGVkZ2UpID0+IHtcclxuICAgICAgY29uc3QgZmlsbGVycyA9IGVkZ2UuZ2V0VG9wU2lkZUZpbGxlcnMoKTtcclxuICAgICAgcmV0dXJuIHBsYW5lcy5jb25jYXQoZmlsbGVycyk7XHJcbiAgICB9LCBbXSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZmxvb3JQbGFuZXMoKTogVEhSRUUuTWVzaFtdIHtcclxuICAgIHJldHVybiBVdGlscy5tYXAodGhpcy5yb29tcywgKHJvb206IFJvb20pID0+IHtcclxuICAgICAgcmV0dXJuIHJvb20uZmxvb3JQbGFuZTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldEZsb29yVGV4dHVyZSh1dWlkOiBzdHJpbmcpOiBUZXh0dXJlIHtcclxuICAgIHJldHVybiB0aGlzLmZsb29yVGV4dHVyZXNbdXVpZF07XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0Rmxvb3JUZXh0dXJlKHJvb206IFJvb20sIHRleHR1cmU6IFRleHR1cmUpOiB2b2lkIHtcclxuICAgIHRoaXMuZmxvb3JUZXh0dXJlc1tyb29tLmdldFV1aWQoKV0gPSB0ZXh0dXJlO1xyXG4gICAgdGhpcy5kZWxldGVGbG9vckNvbG9yKHJvb20uZ2V0VXVpZCgpKTtcclxuICAgIHRoaXMuX2Zsb29yU2VydmljZS5zZXRGbG9vclRleHR1cmUocm9vbSwgdGV4dHVyZSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZGVsZXRlRmxvb3JUZXh0dXJlKHV1aWQ6IHN0cmluZykge1xyXG4gICAgZGVsZXRlIHRoaXMuZmxvb3JUZXh0dXJlc1t1dWlkXTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRGbG9vckNvbG9yKHV1aWQ6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuZmxvb3JDb2xvcnNbdXVpZF07XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0Rmxvb3JDb2xvcihyb29tOiBSb29tLCBjb2xvcjogbnVtYmVyKSB7XHJcbiAgICB0aGlzLmZsb29yQ29sb3JzW3Jvb20uZ2V0VXVpZCgpXSA9IGNvbG9yO1xyXG4gICAgdGhpcy5kZWxldGVGbG9vclRleHR1cmUocm9vbS5nZXRVdWlkKCkpO1xyXG4gICAgdGhpcy5fZmxvb3JTZXJ2aWNlLnNldEZsb29yQ29sb3Iocm9vbSwgY29sb3IpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGRlbGV0ZUZsb29yQ29sb3IodXVpZDogc3RyaW5nKSB7XHJcbiAgICBkZWxldGUgdGhpcy5mbG9vckNvbG9yc1t1dWlkXTtcclxuICB9XHJcblxyXG4gIC8vIGhhY2tcclxuICBwdWJsaWMgd2FsbEVkZ2VzKCk6IEhhbGZFZGdlW10ge1xyXG4gICAgY29uc3QgZWRnZXMgPSBbXTtcclxuXHJcbiAgICB0aGlzLndhbGxzLmZvckVhY2goKHdhbGwpID0+IHtcclxuICAgICAgaWYgKHdhbGwuZnJvbnRFZGdlKSB7XHJcbiAgICAgICAgZWRnZXMucHVzaCh3YWxsLmZyb250RWRnZSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHdhbGwuYmFja0VkZ2UpIHtcclxuICAgICAgICBlZGdlcy5wdXNoKHdhbGwuYmFja0VkZ2UpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBlZGdlcztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRDbG9zZXN0V2FsbEVkZ2UoaXRlbVg6IG51bWJlciwgaXRlbVo6IG51bWJlcik6IEhhbGZFZGdlIHtcclxuICAgIGNvbnN0IHdhbGxFZGdlcyA9IHRoaXMud2FsbEVkZ2VzKCk7XHJcblxyXG4gICAgbGV0IHdhbGxFZGdlID0gbnVsbDtcclxuICAgIGxldCBtaW5EaXN0YW5jZSA9IG51bGw7XHJcblxyXG4gICAgd2FsbEVkZ2VzLmZvckVhY2goKGVkZ2U6IEhhbGZFZGdlKSA9PiB7XHJcbiAgICAgIGNvbnN0IGRpc3RhbmNlID0gZWRnZS5kaXN0YW5jZVRvKGl0ZW1YLCBpdGVtWik7XHJcbiAgICAgIGlmIChtaW5EaXN0YW5jZSA9PT0gbnVsbCB8fCBkaXN0YW5jZSA8IG1pbkRpc3RhbmNlKSB7XHJcbiAgICAgICAgbWluRGlzdGFuY2UgPSBkaXN0YW5jZTtcclxuICAgICAgICB3YWxsRWRnZSA9IGVkZ2U7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiB3YWxsRWRnZTtcclxuICB9XHJcblxyXG4gIC8vIGhhY2tcclxuICBwdWJsaWMgd2FsbEVkZ2VQbGFuZXMoKTogVEhSRUUuTWVzaFtdIHtcclxuICAgIGNvbnN0IHBsYW5lcyA9IFtdO1xyXG4gICAgdGhpcy53YWxscy5mb3JFYWNoKCh3YWxsKSA9PiB7XHJcbiAgICAgIGlmICh3YWxsLmZyb250RWRnZSkge1xyXG4gICAgICAgIHBsYW5lcy5wdXNoKHdhbGwuZnJvbnRFZGdlLnBsYW5lKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAod2FsbC5iYWNrRWRnZSkge1xyXG4gICAgICAgIHBsYW5lcy5wdXNoKHdhbGwuYmFja0VkZ2UucGxhbmUpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBwbGFuZXM7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2VpbGluZ1BsYW5lcygpOiBNZXNoW10ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NlaWxpbmdTZXJ2aWNlLnBsYW5lcztcclxuICB9XHJcblxyXG4gIHB1YmxpYyB3YWxsUmVtb3ZlZCh3YWxsOiBXYWxsKTogdm9pZCB7XHJcbiAgICB3YWxsLml0ZW1zLmZvckVhY2goaSA9PiB0aGlzLl9zY2VuZVNlcnZpY2UucmVtb3ZlT2JqZWN0KGkpKTtcclxuICAgIHdhbGwub25JdGVtcy5mb3JFYWNoKGkgPT4gdGhpcy5fc2NlbmVTZXJ2aWNlLnJlbW92ZU9iamVjdChpKSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY3JlYXRlV2FsbChzdGFydDogQ29ybmVyLCBlbmQ6IENvcm5lcik6IFdhbGwge1xyXG4gICAgY29uc3Qgd2FsbCA9IG5ldyBXYWxsKHN0YXJ0LCBlbmQpO1xyXG4gICAgd2FsbC5oZWlnaHQgPSB0aGlzLl9jb25maWd1cmF0aW9uU2VydmljZS5nZXRWYWx1ZShDb25maWd1cmF0aW9uS2V5LldhbGxIZWlnaHQpIC8gMTAwO1xyXG4gICAgd2FsbC50aGlja25lc3MgPSB0aGlzLl9jb25maWd1cmF0aW9uU2VydmljZS5nZXRWYWx1ZShDb25maWd1cmF0aW9uS2V5LldhbGxUaGlja25lc3MpIC8gMTAwO1xyXG4gICAgdGhpcy53YWxscy5wdXNoKHdhbGwpO1xyXG4gICAgcmV0dXJuIHdhbGw7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcmVtb3ZlV2FsbCh3YWxsOiBXYWxsKTogdm9pZCB7XHJcbiAgICB3YWxsLml0ZW1zLmZvckVhY2goaSA9PiB0aGlzLl9pdGVtU2VydmljZS5yZW1vdmVJdGVtKGkpKTtcclxuICAgIHdhbGwub25JdGVtcy5mb3JFYWNoKGkgPT4gdGhpcy5faXRlbVNlcnZpY2UucmVtb3ZlSXRlbShpKSk7XHJcbiAgICBVdGlscy5yZW1vdmVWYWx1ZSh0aGlzLndhbGxzLCB3YWxsKTtcclxuICAgIHdhbGwucmVtb3ZlKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdXBkYXRlV2FsbEhlaWdodHMobmV3SGVpZ2h0OiBudW1iZXIpOiB2b2lkIHtcclxuICAgIHRoaXMud2FsbHMuZm9yRWFjaCh3YWxsID0+IHtcclxuICAgICAgd2FsbC5oZWlnaHQgPSBuZXdIZWlnaHQgLyAxMDA7XHJcbiAgICAgIHdhbGwuZmlyZVJlZHJhdygpO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLnVwZGF0ZUNlaWxpbmdzKCk7XHJcbiAgICB0aGlzLl9zY2VuZVNlcnZpY2UubmVlZHNSZW5kZXIgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIHVwZGF0ZVJvb21zKHJvb21Db3JuZXJzOiBDb3JuZXJbXVtdKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICB0aGlzLndhbGxzLmZvckVhY2god2FsbCA9PiB3YWxsLnJlc2V0RnJvbnRCYWNrKCkpO1xyXG4gICAgdGhpcy5yb29tcy5mb3JFYWNoKHIgPT4gci5kaXNwb3NlKCkpO1xyXG4gICAgdGhpcy5yb29tcyA9IFtdO1xyXG4gICAgcm9vbUNvcm5lcnMuZm9yRWFjaCgoY29ybmVyczogQ29ybmVyW10pID0+IHtcclxuICAgICAgdGhpcy5yb29tcy5wdXNoKG5ldyBSb29tKGNvcm5lcnMsICB0aGlzLl9kZWZhdWx0Rmxvb3JUZXh0dXJlKSk7XHJcbiAgICB9KTtcclxuICAgIGF3YWl0IHRoaXMudXBkYXRlRmxvb3JzQW5kRWRnZXMoKTtcclxuICAgIHRoaXMuX2Fzc2lnbk9ycGhhbkVkZ2VzKCk7XHJcbiAgICB0aGlzLndhbGxzLmZvckVhY2god2FsbCA9PiB3YWxsLnVwZGF0ZVdhbGxJdGVtcygpKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyByZXNldCgpOiB2b2lkIHtcclxuICAgIHRoaXMud2FsbHMuZm9yRWFjaCgod2FsbCkgPT4ge1xyXG4gICAgICB0aGlzLnJlbW92ZVdhbGwod2FsbCk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMud2FsbHMubGVuZ3RoID0gMDtcclxuICAgIHRoaXMuZmxvb3JDb2xvcnMgPSB7fTtcclxuICAgIHRoaXMuZmxvb3JUZXh0dXJlcyA9IHt9O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNlbGVjdFdhbGwoZXZlbnQ6IE1vdXNlRXZlbnQsIHdhbGw6IFdhbGwsIGVkZ2U6IEhhbGZFZGdlKTogdm9pZCB7XHJcbiAgICB0aGlzLndhbGxTZWxlY3RlZC5uZXh0KHtldmVudDogZXZlbnQsIHdhbGw6IHdhbGwsIGVkZ2U6IGVkZ2V9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZWxlY3RGbG9vcihldmVudDogTW91c2VFdmVudCwgcm9vbTogUm9vbSk6IHZvaWQge1xyXG4gICAgdGhpcy5mbG9vclNlbGVjdGVkLm5leHQoe2V2ZW50OiBldmVudCwgcm9vbTogcm9vbX0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldFJvb21DZW50ZXIoKTogVmVjdG9yMyB7XHJcbiAgICBjb25zdCBmbG9vcnMgPSB0aGlzLmZsb29yUGxhbmVzKCk7XHJcbiAgICByZXR1cm4gZmxvb3JzICYmIGZsb29ycy5sZW5ndGggPiAwID8gZmxvb3JzWzBdLnBvc2l0aW9uIDogbnVsbDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyB1cGRhdGVGbG9vcnNBbmRFZGdlcygpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRoaXMuX2Zsb29yU2VydmljZS5yZW1vdmVGbG9vcnMoKTtcclxuICAgIHRoaXMuX2VkZ2VzLmZvckVhY2goKGVkZ2U6IEVkZ2UpID0+IHtcclxuICAgICAgZWRnZS5nZXRQbGFuZXMoKS5mb3JFYWNoKChwbGFuZTogTWVzaCkgPT4ge1xyXG4gICAgICAgIHRoaXMuX3NjZW5lU2VydmljZS5yZW1vdmVPYmplY3QocGxhbmUpO1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5fZWRnZXMubGVuZ3RoID0gMDtcclxuXHJcbiAgICAvLyBkcmF3IGZsb29yc1xyXG4gICAgY29uc3Qgc29ydGVkUm9vbXM6IFJvb21bXSA9IHRoaXMucm9vbXMuc29ydCgoYSwgYikgPT4gYS5hcmVhIC0gYi5hcmVhKTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc29ydGVkUm9vbXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgY29uc3Qgcm9vbTogUm9vbSA9IHNvcnRlZFJvb21zW2ldO1xyXG4gICAgICBjb25zdCBzdG9yZWRDb2xvciA9IHRoaXMuZ2V0Rmxvb3JDb2xvcihyb29tLmdldFV1aWQoKSk7XHJcbiAgICAgIGNvbnN0IHN0b3JlZFRleHR1cmUgPSB0aGlzLmdldEZsb29yVGV4dHVyZShyb29tLmdldFV1aWQoKSk7XHJcbiAgICAgIGNvbnN0IGNvbG9yID0gc3RvcmVkQ29sb3IgPyBzdG9yZWRDb2xvciA6IHJvb20uZmxvb3JDb2xvcjtcclxuICAgICAgY29uc3QgdGV4dHVyZSA9IHN0b3JlZFRleHR1cmUgPyBzdG9yZWRUZXh0dXJlIDogKHJvb20uZmxvb3JUZXh0dXJlID8gcm9vbS5mbG9vclRleHR1cmUgOiB1bmRlZmluZWQpO1xyXG4gICAgICBjb25zdCBmbG9vclBsYW5lOiBGbG9vclBsYW5lSXRlbSA9IGF3YWl0IHRoaXMuX2Zsb29yU2VydmljZS5nZW5lcmF0ZUZsb29yUGxhbmUoXHJcbiAgICAgICAgICBzdG9yZWRUZXh0dXJlID8gbnVsbCA6IGNvbG9yLCBzdG9yZWRDb2xvciA/IChzdG9yZWRUZXh0dXJlID8gdGV4dHVyZSA6IG51bGwpIDogdGV4dHVyZSwgcm9vbS5pbnRlcmlvckNvcm5lcnMsIHNvcnRlZFJvb21zLnNsaWNlKDAsIGkpKTtcclxuICAgICAgZmxvb3JQbGFuZS5jaGlsZHJlblswXS51c2VyRGF0YS5yb29tID0gcm9vbTtcclxuICAgICAgcm9vbS5mbG9vclRleHR1cmUgPSB0ZXh0dXJlO1xyXG4gICAgICByb29tLmZsb29yQ29sb3IgPSBjb2xvcjtcclxuICAgICAgcm9vbS5mbG9vclBsYW5lID0gZmxvb3JQbGFuZTtcclxuICAgIH1cclxuICAgIC8vIGF3YWl0IHRoaXMucm9vbXNcclxuICAgIC8vICAgLnNvcnQoKGEsIGIpID0+IGEuYXJlYSAtIGIuYXJlYSlcclxuICAgIC8vICAgLmZvckVhY2goYXN5bmMgKHJvb20sIGluZGV4LCBhcnJheSkgPT4ge1xyXG4gICAgLy8gICAgIGNvbnN0IHN0b3JlZENvbG9yID0gdGhpcy5nZXRGbG9vckNvbG9yKHJvb20uZ2V0VXVpZCgpKTtcclxuICAgIC8vICAgICBjb25zdCBzdG9yZWRUZXh0dXJlID0gdGhpcy5nZXRGbG9vclRleHR1cmUocm9vbS5nZXRVdWlkKCkpO1xyXG4gICAgLy8gICAgIGNvbnN0IGNvbG9yID0gc3RvcmVkQ29sb3IgPyBzdG9yZWRDb2xvciA6IHJvb20uZmxvb3JDb2xvcjtcclxuICAgIC8vICAgICBjb25zdCB0ZXh0dXJlID0gc3RvcmVkVGV4dHVyZSA/IHN0b3JlZFRleHR1cmUgOiAocm9vbS5mbG9vclRleHR1cmUgPyByb29tLmZsb29yVGV4dHVyZSA6IHVuZGVmaW5lZCk7XHJcbiAgICAvLyAgICAgY29uc3QgZmxvb3JQbGFuZTogRmxvb3JQbGFuZUl0ZW0gPSBhd2FpdCB0aGlzLl9mbG9vclNlcnZpY2UuZ2VuZXJhdGVGbG9vclBsYW5lKFxyXG4gICAgLy8gICAgICAgc3RvcmVkVGV4dHVyZSA/IG51bGwgOiBjb2xvciwgc3RvcmVkQ29sb3IgPyAoc3RvcmVkVGV4dHVyZSA/IHRleHR1cmUgOiBudWxsKSA6IHRleHR1cmUsIHJvb20uaW50ZXJpb3JDb3JuZXJzLCBhcnJheS5zbGljZSgwLCBpbmRleCkpO1xyXG4gICAgLy8gICAgIGZsb29yUGxhbmUudXNlckRhdGEucm9vbSA9IHJvb207XHJcbiAgICAvLyAgICAgcm9vbS5mbG9vclRleHR1cmUgPSB0ZXh0dXJlO1xyXG4gICAgLy8gICAgIHJvb20uZmxvb3JDb2xvciA9IGNvbG9yO1xyXG4gICAgLy8gICAgIHJvb20uZmxvb3JQbGFuZSA9IGZsb29yUGxhbmU7XHJcbiAgICAvLyAgIH0pO1xyXG4gICAgLy9cclxuICAgIC8vIGRyYXcgZWRnZXNcclxuICAgIGNvbnN0IGVkZ2VzID0gdGhpcy53YWxsRWRnZXMoKTtcclxuICAgIGlmIChlZGdlcyAmJiBlZGdlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZWRnZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBjb25zdCBoYWxmRWRnZSA9IGVkZ2VzW2ldO1xyXG4gICAgICAgIGNvbnN0IG5ld0VkZ2U6IEVkZ2UgPSBuZXcgRWRnZShoYWxmRWRnZSk7XHJcbiAgICAgICAgYXdhaXQgbmV3RWRnZS5pbml0KCk7XHJcbiAgICAgICAgaGFsZkVkZ2UuZWRnZXMucHVzaChuZXdFZGdlKTtcclxuICAgICAgICB0aGlzLl9lZGdlcy5wdXNoKG5ld0VkZ2UpO1xyXG4gICAgICAgIGNvbnN0IHBsYW5lcyA9IG5ld0VkZ2UuZ2V0UGxhbmVzKCk7XHJcbiAgICAgICAgcGxhbmVzLmZvckVhY2goKHBsYW5lKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLl9zY2VuZVNlcnZpY2UuYWRkT2JqZWN0KHBsYW5lKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIGRyYXcgY2VpbGluZ3NcclxuICAgIHRoaXMudXBkYXRlQ2VpbGluZ3MoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyB1cGRhdGVDZWlsaW5ncygpOiB2b2lkIHtcclxuICAgIHRoaXMuX2NlaWxpbmdTZXJ2aWNlLnJlbW92ZUNlaWxpbmdzKCk7XHJcbiAgICB0aGlzLnJvb21zXHJcbiAgICAgIC5zb3J0KChhLCBiKSA9PiBhLmFyZWEgLSBiLmFyZWEpXHJcbiAgICAgIC5mb3JFYWNoKChyb29tOiBSb29tKSA9PiB7XHJcbiAgICAgICAgcm9vbS51cGRhdGVXYWxsSGVpZ2h0cygpO1xyXG4gICAgICAgIGNvbnN0IGNlaWxpbmc6IFRocmVlTWVzaCA9IHRoaXMuX2NlaWxpbmdTZXJ2aWNlLmdlbmVyYXRlQ2VpbGluZ1BsYW5lKDB4ZTVlNWU1LCByb29tLmludGVyaW9yQ29ybmVycywgcm9vbS5lZGdlSGVpZ2h0cyk7XHJcbiAgICAgICAgaWYgKGNlaWxpbmcpIHtcclxuICAgICAgICAgIGNlaWxpbmcudXNlckRhdGEucm9vbSA9IHJvb207XHJcbiAgICAgICAgICByb29tLmNlaWxpbmdQbGFuZSA9IGNlaWxpbmc7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyByZXNldEFsbFJvb21zKCk6IHZvaWQge1xyXG4gICAgdGhpcy5yb29tcyA9IFtdO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfc2hvd0hpZGVXYWxscyhzaG93OiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLndhbGxzLmZvckVhY2godyA9PiB3LnNob3dIaWRlV2FsbChzaG93KSk7XHJcbiAgICB0aGlzLl9zY2VuZVNlcnZpY2UubmVlZHNSZW5kZXIgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfdXBkYXRlRWRnZVZpc2liaWxpdHkoY2FtZXJhUG9zaXRpb246IFZlY3RvcjMpOiB2b2lkIHtcclxuICAgIHRoaXMud2FsbEVkZ2VzKCkuZm9yRWFjaChlID0+IHtcclxuICAgICAgY29uc3QgdmlzaWJpbGl0eUNoYW5nZSA9IGUudXBkYXRlVmlzaWJpbGl0eShjYW1lcmFQb3NpdGlvbik7XHJcbiAgICAgIGlmICh2aXNpYmlsaXR5Q2hhbmdlICE9PSBudWxsKSB7XHJcbiAgICAgICAgY29uc3QgZWRnZVZpc2liaWxpdHlDaGFuZ2VzOiBFZGdlVmlzaWJpbGl0eUNoYW5nZXMgPSB7XHJcbiAgICAgICAgICBlZGdlOiBlLFxyXG4gICAgICAgICAgdmlzaWJpbGl0eTogdmlzaWJpbGl0eUNoYW5nZVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgdGhpcy5lZGdlVmlzaWJpbGl0eUNoYW5nZWQubmV4dChlZGdlVmlzaWJpbGl0eUNoYW5nZXMpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3NldEFsbEVkZ2VzVmlzaWJsZSgpIHtcclxuICAgIHRoaXMud2FsbEVkZ2VzKCkuZm9yRWFjaCgoZTogSGFsZkVkZ2UpID0+IHtcclxuICAgICAgZS51cGRhdGVWaXNpYmxpdHkodHJ1ZSk7XHJcbiAgICAgIGNvbnN0IGVkZ2VWaXNpYmlsaXR5Q2hhbmdlczogRWRnZVZpc2liaWxpdHlDaGFuZ2VzID0ge1xyXG4gICAgICAgIGVkZ2U6IGUsXHJcbiAgICAgICAgdmlzaWJpbGl0eTogdHJ1ZVxyXG4gICAgICB9O1xyXG4gICAgICB0aGlzLmVkZ2VWaXNpYmlsaXR5Q2hhbmdlZC5uZXh0KGVkZ2VWaXNpYmlsaXR5Q2hhbmdlcyk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3VwZGF0ZUZsb29yVGV4dHVyZXMoKSB7XHJcbiAgICBjb25zdCB1dWlkcyA9IFV0aWxzLm1hcCh0aGlzLnJvb21zLCBmdW5jdGlvbiAocm9vbSkge1xyXG4gICAgICByZXR1cm4gcm9vbS5nZXRVdWlkKCk7XHJcbiAgICB9KTtcclxuXHJcbiAgICBmb3IgKGNvbnN0IHV1aWQgaW4gdGhpcy5mbG9vclRleHR1cmVzKSB7XHJcbiAgICAgIGlmICghVXRpbHMuaGFzVmFsdWUodXVpZHMsIHV1aWQpKSB7XHJcbiAgICAgICAgZGVsZXRlIHRoaXMuZmxvb3JUZXh0dXJlc1t1dWlkXTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfYXNzaWduT3JwaGFuRWRnZXMoKSB7XHJcbiAgICAvLyBraW5kYSBoYWNreVxyXG4gICAgLy8gZmluZCBvcnBoYW5lZCB3YWxsIHNlZ21lbnRzIChpLmUuIG5vdCBwYXJ0IG9mIHJvb21zKSBhbmRcclxuICAgIC8vIGdpdmUgdGhlbSBlZGdlc1xyXG4gICAgdGhpcy5vcnBoYW5XYWxscyA9IFtdO1xyXG4gICAgdGhpcy53YWxscy5mb3JFYWNoKCh3YWxsKSA9PiB7XHJcbiAgICAgIGlmICghd2FsbC5iYWNrRWRnZSAmJiAhd2FsbC5mcm9udEVkZ2UpIHtcclxuICAgICAgICB3YWxsLm9ycGhhbiA9IHRydWU7XHJcbiAgICAgICAgY29uc3QgYmFjayA9IG5ldyBIYWxmRWRnZShudWxsLCB3YWxsLCBmYWxzZSk7XHJcbiAgICAgICAgYmFjay5nZW5lcmF0ZVBsYW5lKCk7XHJcbiAgICAgICAgY29uc3QgZnJvbnQgPSBuZXcgSGFsZkVkZ2UobnVsbCwgd2FsbCwgdHJ1ZSk7XHJcbiAgICAgICAgZnJvbnQuZ2VuZXJhdGVQbGFuZSgpO1xyXG4gICAgICAgIHdhbGwudXBkYXRlSW5XYWxsSXRlbXMoKTtcclxuICAgICAgICB0aGlzLm9ycGhhbldhbGxzLnB1c2god2FsbCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG4iXX0=
|