@igo2/context 16.3.0 → 17.0.0-next.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/context-import-export/context-import-export/context-import-export.component.mjs +43 -18
- package/esm2022/lib/context-import-export/context-import-export.module.mjs +10 -66
- package/esm2022/lib/context-import-export/shared/context-export.service.mjs +4 -4
- package/esm2022/lib/context-import-export/shared/context-export.utils.mjs +1 -1
- package/esm2022/lib/context-import-export/shared/context-import.errors.mjs +1 -1
- package/esm2022/lib/context-import-export/shared/context-import.service.mjs +7 -7
- package/esm2022/lib/context-import-export/shared/context-import.utils.mjs +1 -1
- package/esm2022/lib/context-manager/context-edit/context-edit-binding.directive.mjs +10 -9
- package/esm2022/lib/context-manager/context-edit/context-edit.component.mjs +10 -9
- package/esm2022/lib/context-manager/context-form/context-form.component.mjs +32 -16
- package/esm2022/lib/context-manager/context-item/context-item.component.mjs +31 -15
- package/esm2022/lib/context-manager/context-list/context-list-binding.directive.mjs +18 -12
- package/esm2022/lib/context-manager/context-list/context-list.component.mjs +56 -36
- package/esm2022/lib/context-manager/context-manager.directive.mjs +19 -0
- package/esm2022/lib/context-manager/context-manager.module.mjs +23 -102
- package/esm2022/lib/context-manager/context-permissions/context-permissions-binding.directive.mjs +12 -9
- package/esm2022/lib/context-manager/context-permissions/context-permissions.component.mjs +49 -18
- package/esm2022/lib/context-manager/index.mjs +2 -1
- package/esm2022/lib/context-manager/shared/context.interface.mjs +1 -1
- package/esm2022/lib/context-manager/shared/context.service.mjs +20 -17
- package/esm2022/lib/context-manager/shared/layer-context.directive.mjs +14 -9
- package/esm2022/lib/context-manager/shared/map-context.directive.mjs +9 -8
- package/esm2022/lib/context-map-button/bookmark-button/bookmark-button.component.mjs +14 -10
- package/esm2022/lib/context-map-button/bookmark-button/bookmark-dialog.component.mjs +25 -11
- package/esm2022/lib/context-map-button/context-map-button.directive.mjs +10 -0
- package/esm2022/lib/context-map-button/context-map-button.module.mjs +16 -75
- package/esm2022/lib/context-map-button/index.mjs +2 -1
- package/esm2022/lib/context-map-button/poi-button/poi-button.component.mjs +34 -16
- package/esm2022/lib/context-map-button/poi-button/poi-dialog.component.mjs +25 -11
- package/esm2022/lib/context-map-button/poi-button/shared/poi.service.mjs +7 -7
- package/esm2022/lib/context-map-button/user-button/user-button.animation.mjs +1 -1
- package/esm2022/lib/context-map-button/user-button/user-button.component.mjs +24 -13
- package/esm2022/lib/context-map-button/user-button/user-dialog.component.mjs +17 -9
- package/esm2022/lib/context.module.mjs +9 -11
- package/esm2022/lib/environment/environment.interface.mjs +1 -1
- package/esm2022/lib/environment/index.mjs +1 -1
- package/esm2022/lib/share-map/index.mjs +2 -1
- package/esm2022/lib/share-map/share-map/share-map-api.component.mjs +36 -18
- package/esm2022/lib/share-map/share-map/share-map-url.component.mjs +28 -15
- package/esm2022/lib/share-map/share-map/share-map.component.mjs +21 -13
- package/esm2022/lib/share-map/share-map.module.mjs +15 -50
- package/esm2022/lib/share-map/shared/share-map.service.mjs +8 -8
- package/esm2022/lib/sidenav/sidenav.component.mjs +31 -16
- package/esm2022/lib/sidenav/sidenav.module.mjs +10 -46
- package/esm2022/public_api.mjs +1 -1
- package/fesm2022/igo2-context.mjs +1000 -1027
- package/fesm2022/igo2-context.mjs.map +1 -1
- package/lib/context-import-export/context-import-export/context-import-export.component.d.ts +3 -2
- package/lib/context-import-export/context-import-export.module.d.ts +4 -15
- package/lib/context-import-export/shared/context-export.utils.d.ts +1 -1
- package/lib/context-import-export/shared/context-import.service.d.ts +1 -1
- package/lib/context-import-export/shared/context-import.utils.d.ts +1 -1
- package/lib/context-manager/context-edit/context-edit-binding.directive.d.ts +2 -2
- package/lib/context-manager/context-edit/context-edit.component.d.ts +1 -1
- package/lib/context-manager/context-form/context-form.component.d.ts +2 -2
- package/lib/context-manager/context-item/context-item.component.d.ts +2 -2
- package/lib/context-manager/context-list/context-list-binding.directive.d.ts +5 -3
- package/lib/context-manager/context-list/context-list.component.d.ts +8 -10
- package/lib/context-manager/context-manager.directive.d.ts +7 -0
- package/lib/context-manager/context-manager.module.d.ts +6 -22
- package/lib/context-manager/context-permissions/context-permissions-binding.directive.d.ts +3 -2
- package/lib/context-manager/context-permissions/context-permissions.component.d.ts +2 -2
- package/lib/context-manager/index.d.ts +1 -0
- package/lib/context-manager/shared/context.interface.d.ts +2 -2
- package/lib/context-manager/shared/context.service.d.ts +6 -2
- package/lib/context-manager/shared/layer-context.directive.d.ts +3 -2
- package/lib/context-manager/shared/map-context.directive.d.ts +2 -2
- package/lib/context-map-button/bookmark-button/bookmark-button.component.d.ts +2 -2
- package/lib/context-map-button/bookmark-button/bookmark-dialog.component.d.ts +1 -1
- package/lib/context-map-button/context-map-button.directive.d.ts +4 -0
- package/lib/context-map-button/context-map-button.module.d.ts +5 -18
- package/lib/context-map-button/index.d.ts +1 -0
- package/lib/context-map-button/poi-button/poi-button.component.d.ts +4 -3
- package/lib/context-map-button/poi-button/poi-dialog.component.d.ts +1 -1
- package/lib/context-map-button/poi-button/shared/poi.service.d.ts +1 -1
- package/lib/context-map-button/user-button/user-button.component.d.ts +2 -2
- package/lib/context-map-button/user-button/user-dialog.component.d.ts +2 -2
- package/lib/context.module.d.ts +9 -9
- package/lib/share-map/index.d.ts +1 -0
- package/lib/share-map/share-map/share-map-api.component.d.ts +3 -2
- package/lib/share-map/share-map/share-map-url.component.d.ts +2 -2
- package/lib/share-map/share-map/share-map.component.d.ts +2 -2
- package/lib/share-map/share-map.module.d.ts +8 -11
- package/lib/share-map/shared/share-map.service.d.ts +1 -1
- package/lib/sidenav/sidenav.component.d.ts +4 -3
- package/lib/sidenav/sidenav.module.d.ts +4 -10
- package/locale/en.context.json +200 -200
- package/locale/fr.context.json +200 -200
- package/package.json +13 -13
- package/src/context-theme.scss +5 -5
- package/src/lib/context-manager/context-item/context-item.theming.scss +21 -21
- package/src/lib/context-manager/context-list/context-list.theming.scss +23 -23
- package/src/lib/context-manager/context-manager.theming.scss +7 -7
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { ChangeDetectorRef, Directive, HostListener, Self } from '@angular/core';
|
|
2
2
|
import { AuthService } from '@igo2/auth';
|
|
3
|
-
import { ConfirmDialogService } from '@igo2/common';
|
|
4
|
-
import { LanguageService
|
|
3
|
+
import { ConfirmDialogService } from '@igo2/common/confirm-dialog';
|
|
4
|
+
import { LanguageService } from '@igo2/core/language';
|
|
5
|
+
import { MessageService } from '@igo2/core/message';
|
|
6
|
+
import { StorageService } from '@igo2/core/storage';
|
|
5
7
|
import { MapService } from '@igo2/geo';
|
|
6
8
|
import { debounceTime } from 'rxjs/operators';
|
|
7
9
|
import { ContextService } from '../shared/context.service';
|
|
@@ -10,9 +12,11 @@ import * as i0 from "@angular/core";
|
|
|
10
12
|
import * as i1 from "./context-list.component";
|
|
11
13
|
import * as i2 from "../shared/context.service";
|
|
12
14
|
import * as i3 from "@igo2/geo";
|
|
13
|
-
import * as i4 from "@igo2/core";
|
|
14
|
-
import * as i5 from "@igo2/common";
|
|
15
|
-
import * as i6 from "@igo2/
|
|
15
|
+
import * as i4 from "@igo2/core/language";
|
|
16
|
+
import * as i5 from "@igo2/common/confirm-dialog";
|
|
17
|
+
import * as i6 from "@igo2/core/message";
|
|
18
|
+
import * as i7 from "@igo2/auth";
|
|
19
|
+
import * as i8 from "@igo2/core/storage";
|
|
16
20
|
export class ContextListBindingDirective {
|
|
17
21
|
contextService;
|
|
18
22
|
mapService;
|
|
@@ -204,17 +208,19 @@ export class ContextListBindingDirective {
|
|
|
204
208
|
handleContextsChange(contexts) {
|
|
205
209
|
this.component.contexts = contexts;
|
|
206
210
|
}
|
|
207
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
208
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
211
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: ContextListBindingDirective, deps: [{ token: i1.ContextListComponent, self: true }, { token: i2.ContextService }, { token: i3.MapService }, { token: i4.LanguageService }, { token: i5.ConfirmDialogService }, { token: i6.MessageService }, { token: i7.AuthService }, { token: i8.StorageService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
212
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.9", type: ContextListBindingDirective, isStandalone: true, selector: "[igoContextListBinding]", host: { listeners: { "select": "onSelect($event)", "edit": "onEdit($event)", "save": "onSave($event)", "favorite": "onFavorite($event)", "manageTools": "onManageTools($event)", "managePermissions": "onManagePermissions($event)", "delete": "onDelete($event)", "clone": "onClone($event)", "create": "onCreate($event)", "filterPermissionsChanged": "loadContexts()", "showHiddenContexts": "showHiddenContexts()", "show": "onShowContext($event)", "hide": "onHideContext($event)" } }, providers: [ConfirmDialogService], ngImport: i0 });
|
|
209
213
|
}
|
|
210
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
214
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: ContextListBindingDirective, decorators: [{
|
|
211
215
|
type: Directive,
|
|
212
216
|
args: [{
|
|
213
|
-
selector: '[igoContextListBinding]'
|
|
217
|
+
selector: '[igoContextListBinding]',
|
|
218
|
+
standalone: true,
|
|
219
|
+
providers: [ConfirmDialogService]
|
|
214
220
|
}]
|
|
215
|
-
}], ctorParameters:
|
|
221
|
+
}], ctorParameters: () => [{ type: i1.ContextListComponent, decorators: [{
|
|
216
222
|
type: Self
|
|
217
|
-
}] }, { type: i2.ContextService }, { type: i3.MapService }, { type: i4.LanguageService }, { type: i5.ConfirmDialogService }, { type:
|
|
223
|
+
}] }, { type: i2.ContextService }, { type: i3.MapService }, { type: i4.LanguageService }, { type: i5.ConfirmDialogService }, { type: i6.MessageService }, { type: i7.AuthService }, { type: i8.StorageService }, { type: i0.ChangeDetectorRef }], propDecorators: { onSelect: [{
|
|
218
224
|
type: HostListener,
|
|
219
225
|
args: ['select', ['$event']]
|
|
220
226
|
}], onEdit: [{
|
|
@@ -254,4 +260,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
254
260
|
type: HostListener,
|
|
255
261
|
args: ['hide', ['$event']]
|
|
256
262
|
}] } });
|
|
257
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1saXN0LWJpbmRpbmcuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29udGV4dC9zcmMvbGliL2NvbnRleHQtbWFuYWdlci9jb250ZXh0LWxpc3QvY29udGV4dC1saXN0LWJpbmRpbmcuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFHWixJQUFJLEVBQ0wsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUN6QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDcEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQzdFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFHdkMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBUTlDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7Ozs7QUFLaEUsTUFBTSxPQUFPLDJCQUEyQjtJQWtMNUI7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQXhMRixTQUFTLENBQXVCO0lBQ2hDLFVBQVUsQ0FBZTtJQUN6QixpQkFBaUIsQ0FBZTtJQUNoQyxrQkFBa0IsQ0FBZTtJQUNqQyxpQkFBaUIsQ0FBQztJQUcxQixRQUFRLENBQUMsT0FBZ0I7UUFDdkIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFHRCxNQUFNLENBQUMsT0FBZ0I7UUFDckIsSUFBSSxDQUFDLGNBQWMs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RGxCLFlBQVk7dUJBQUMsbUJBQW1CLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBTTdDLFFBQVE7c0JBRFAsWUFBWTt1QkFBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBd0JsQyxPQUFPO3NCQUROLFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQWlCakMsUUFBUTtzQkFEUCxZQUFZO3VCQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFvQmxDLFlBQVk7c0JBRFgsWUFBWTt1QkFBQywwQkFBMEI7Z0JBY3hDLGtCQUFrQjtzQkFEakIsWUFBWTt1QkFBQyxvQkFBb0I7Z0JBUWxDLGFBQWE7c0JBRFosWUFBWTt1QkFBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBTWhDLGFBQWE7c0JBRFosWUFBWTt1QkFBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIERpcmVjdGl2ZSxcclxuICBIb3N0TGlzdGVuZXIsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uSW5pdCxcclxuICBTZWxmXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJ0BpZ28yL2F1dGgnO1xyXG5pbXBvcnQgeyBDb25maXJtRGlhbG9nU2VydmljZSB9IGZyb20gJ0BpZ28yL2NvbW1vbic7XHJcbmltcG9ydCB7IExhbmd1YWdlU2VydmljZSwgTWVzc2FnZVNlcnZpY2UsIFN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29yZSc7XHJcbmltcG9ydCB7IE1hcFNlcnZpY2UgfSBmcm9tICdAaWdvMi9nZW8nO1xyXG5cclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGRlYm91bmNlVGltZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbmltcG9ydCB7XHJcbiAgQ29udGV4dCxcclxuICBDb250ZXh0VXNlclBlcm1pc3Npb24sXHJcbiAgQ29udGV4dHNMaXN0LFxyXG4gIERldGFpbGVkQ29udGV4dFxyXG59IGZyb20gJy4uL3NoYXJlZC9jb250ZXh0LmludGVyZmFjZSc7XHJcbmltcG9ydCB7IENvbnRleHRTZXJ2aWNlIH0gZnJvbSAnLi4vc2hhcmVkL2NvbnRleHQuc2VydmljZSc7XHJcbmltcG9ydCB7IENvbnRleHRMaXN0Q29tcG9uZW50IH0gZnJvbSAnLi9jb250ZXh0LWxpc3QuY29tcG9uZW50JztcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnW2lnb0NvbnRleHRMaXN0QmluZGluZ10nXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb250ZXh0TGlzdEJpbmRpbmdEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgcHJpdmF0ZSBjb21wb25lbnQ6IENvbnRleHRMaXN0Q29tcG9uZW50O1xyXG4gIHByaXZhdGUgY29udGV4dHMkJDogU3Vic2NyaXB0aW9uO1xyXG4gIHByaXZhdGUgc2VsZWN0ZWRDb250ZXh0JCQ6IFN1YnNjcmlwdGlvbjtcclxuICBwcml2YXRlIGRlZmF1bHRDb250ZXh0SWQkJDogU3Vic2NyaXB0aW9uO1xyXG4gIHByaXZhdGUgcHJldmlvdXNNZXNzYWdlSWQ7XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ3NlbGVjdCcsIFsnJGV2ZW50J10pXHJcbiAgb25TZWxlY3QoY29udGV4dDogQ29udGV4dCkge1xyXG4gICAgdGhpcy5jb250ZXh0U2VydmljZS5sb2FkQ29udGV4dChjb250ZXh0LnVyaSk7XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCdlZGl0JywgWyckZXZlbnQnXSlcclxuICBvbkVkaXQoY29udGV4dDogQ29udGV4dCkge1xyXG4gICAgdGhpcy5jb250ZXh0U2VydmljZS5sb2FkRWRpdGVkQ29udGV4dChjb250ZXh0LnVyaSk7XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCdzYXZlJywgWyckZXZlbnQnXSlcclxuICBvblNhdmUoY29udGV4dDogQ29udGV4dCkge1xyXG4gICAgY29uc3QgbWFwID0gdGhpcy5tYXBTZXJ2aWNlLmdldE1hcCgpO1xyXG4gICAgY29uc3QgY29udGV4dEZyb21NYXAgPSB0aGlzLmNvbnRleHRTZXJ2aWNlLmdldENvbnRleHRGcm9tTWFwKG1hcCk7XHJcblxyXG4gICAgY29uc3QgbXNnU3VjY2VzcyA9ICgpID0+IHtcclxuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5zdWNjZXNzKFxyXG4gICAgICAgICdpZ28uY29udGV4dC5jb250ZXh0TWFuYWdlci5kaWFsb2cuc2F2ZU1zZycsXHJcbiAgICAgICAgJ2lnby5jb250ZXh0LmNvbnRleHRNYW5hZ2VyLmRpYWxvZy5zYXZlVGl0bGUnLFxyXG4gICAgICAgIHVuZGVmaW5lZCxcclxuICAgICAgICB7XHJcbiAgICAgICAgICB2YWx1ZTogY29udGV4dC50aXRsZVxyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICAgIH07XHJcblxyXG4gICAgaWYgKGNvbnRleHQuaW1wb3J0ZWQpIHtcclxuICAgICAgY29udGV4dEZyb21NYXAudGl0bGUgPSBjb250ZXh0LnRpdGxlO1xyXG4gICAgICB0aGlzLmNvbnRleHRTZXJ2aWNlLmRlbGV0ZShjb250ZXh0LmlkLCB0cnVlKTtcclxuICAgICAgdGhpcy5jb250ZXh0U2VydmljZS5jcmVhdGUoY29udGV4dEZyb21NYXApLnN1YnNjcmliZSgoY29udGV4dENyZWF0ZWQpID0+IHtcclxuICAgICAgICB0aGlzLmNvbnRleHRTZXJ2aWNlLmxvYWRDb250ZXh0KGNvbnRleHRDcmVhdGVkLnVyaSk7XHJcbiAgICAgICAgbXNnU3VjY2VzcygpO1xyXG4gICAgICB9KTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGNoYW5nZXM6IGFueSA9IHtcclxuICAgICAgbGF5ZXJzOiBjb250ZXh0RnJvbU1hcC5sYXllcnMsXHJcbiAgICAgIG1hcDoge1xyXG4gICAgICAgIHZpZXc6IGNvbnRleHRGcm9tTWFwLm1hcC52aWV3XHJcbiAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgdGhpcy5jb250ZXh0U2VydmljZS51cGRhdGUoY29udGV4dC5pZCwgY2hhbmdlcykuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgbXNnU3VjY2VzcygpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCdmYXZvcml0ZScsIFsnJGV2ZW50J10pXHJcbiAgb25GYXZvcml0ZShjb250ZXh0OiBDb250ZXh0KSB7XHJcbiAgICBpZiAoIWNvbnRleHQuaWQpIHtcclxuICAgICAgY29udGV4dC5pZCA9IGNvbnRleHQudXJpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jb250ZXh0U2VydmljZS5zZXREZWZhdWx0KGNvbnRleHQuaWQpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLnByZXZpb3VzTWVzc2FnZUlkKSB7XHJcbiAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5yZW1vdmUodGhpcy5wcmV2aW91c01lc3NhZ2VJZCk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5jb250ZXh0U2VydmljZS5kZWZhdWx0Q29udGV4dElkJC5uZXh0KGNvbnRleHQuaWQpO1xyXG4gICAgICBjb25zdCBtZXNzYWdlT2JqID0gdGhpcy5tZXNzYWdlU2VydmljZS5zdWNjZXNzKFxyXG4gICAgICAgICdpZ28uY29udGV4dC5jb250ZXh0TWFuYWdlci5kaWFsb2cuZmF2b3JpdGVNc2cnLFxyXG4gICAgICAgICdpZ28uY29udGV4dC5jb250ZXh0TWFuYWdlci5kaWFsb2cuZmF2b3JpdGVUaXRsZScsXHJcbiAgICAgICAgdW5kZWZpbmVkLFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIHZhbHVlOiBjb250ZXh0LnRpdGxlXHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLnByZXZpb3VzTWVzc2FnZUlkID0gbWVzc2FnZU9iai50b2FzdElkO1xyXG4gICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignbWFuYWdlVG9vbHMnLCBbJyRldmVudCddKVxyXG4gIG9uTWFuYWdlVG9vbHMoY29udGV4dDogQ29udGV4dCkge1xyXG4gICAgdGhpcy5jb250ZXh0U2VydmljZS5sb2FkRWRpdGVkQ29udGV4dChjb250ZXh0LnVyaSk7XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCdtYW5hZ2VQZXJtaXNzaW9ucycsIFsnJGV2ZW50J10pXHJcbiAgb25NYW5hZ2VQZXJtaXNzaW9ucyhjb250ZXh0OiBDb250ZXh0KSB7XHJcbiAgICB0aGlzLmNvbnRleHRTZXJ2aWNlLmxvYWRFZGl0ZWRDb250ZXh0KGNvbnRleHQudXJpKTtcclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ2RlbGV0ZScsIFsnJGV2ZW50J10pXHJcbiAgb25EZWxldGUoY29udGV4dDogQ29udGV4dCkge1xyXG4gICAgY29uc3QgdHJhbnNsYXRlID0gdGhpcy5sYW5ndWFnZVNlcnZpY2UudHJhbnNsYXRlO1xyXG4gICAgdGhpcy5jb25maXJtRGlhbG9nU2VydmljZVxyXG4gICAgICAub3BlbihcclxuICAgICAgICB0cmFuc2xhdGUuaW5zdGFudCgnaWdvLmNvbnRleHQuY29udGV4dE1hbmFnZXIuZGlhbG9nLmNvbmZpcm1EZWxldGUnKVxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoKGNvbmZpcm0pID0+IHtcclxuICAgICAgICBpZiAoY29uZmlybSkge1xyXG4gICAgICAgICAgdGhpcy5jb250ZXh0U2VydmljZVxyXG4gICAgICAgICAgICAuZGVsZXRlKGNvbnRleHQuaWQsIGNvbnRleHQuaW1wb3J0ZWQpXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuaW5mbyhcclxuICAgICAgICAgICAgICAgICdpZ28uY29udGV4dC5jb250ZXh0TWFuYWdlci5kaWFsb2cuZGVsZXRlTXNnJyxcclxuICAgICAgICAgICAgICAgICdpZ28uY29udGV4dC5jb250ZXh0TWFuYWdlci5kaWFsb2cuZGVsZXRlVGl0bGUnLFxyXG4gICAgICAgICAgICAgICAgdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICAgICAgeyB2YWx1ZTogY29udGV4dC50aXRsZSB9XHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ2Nsb25lJywgWyckZXZlbnQnXSlcclxuICBvbkNsb25lKGNvbnRleHQ6IERldGFpbGVkQ29udGV4dCkge1xyXG4gICAgY29uc3QgcHJvcGVydGllcyA9IHtcclxuICAgICAgdGl0bGU6IGNvbnRleHQudGl0bGUgKyAnLWNvcHknLFxyXG4gICAgICB1cmk6IGNvbnRleHQudXJpICsgJy1jb3B5J1xyXG4gICAgfTtcclxuICAgIHRoaXMuY29udGV4dFNlcnZpY2UuY2xvbmUoY29udGV4dC5pZCwgcHJvcGVydGllcykuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5zdWNjZXNzKFxyXG4gICAgICAgICdpZ28uY29udGV4dC5jb250ZXh0TWFuYWdlci5kaWFsb2cuY2xvbmVNc2cnLFxyXG4gICAgICAgICdpZ28uY29udGV4dC5jb250ZXh0TWFuYWdlci5kaWFsb2cuY2xvbmVUaXRsZScsXHJcbiAgICAgICAgdW5kZWZpbmVkLFxyXG4gICAgICAgIHsgdmFsdWU6IGNvbnRleHQudGl0bGUgfVxyXG4gICAgICApO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCdjcmVhdGUnLCBbJyRldmVudCddKVxyXG4gIG9uQ3JlYXRlKG9wdHM6IHsgdGl0bGU6IHN0cmluZzsgZW1wdHk6IGJvb2xlYW4gfSkge1xyXG4gICAgY29uc3QgeyB0aXRsZSwgZW1wdHkgfSA9IG9wdHM7XHJcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5jb250ZXh0U2VydmljZS5nZXRDb250ZXh0RnJvbU1hcChcclxuICAgICAgdGhpcy5jb21wb25lbnQubWFwLFxyXG4gICAgICBlbXB0eVxyXG4gICAgKTtcclxuICAgIGNvbnRleHQudGl0bGUgPSB0aXRsZTtcclxuICAgIHRoaXMuY29udGV4dFNlcnZpY2UuY3JlYXRlKGNvbnRleHQpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2Uuc3VjY2VzcyhcclxuICAgICAgICAnaWdvLmNvbnRleHQuYm9va21hcmtCdXR0b24uZGlhbG9nLmNyZWF0ZU1zZycsXHJcbiAgICAgICAgJ2lnby5jb250ZXh0LmJvb2ttYXJrQnV0dG9uLmRpYWxvZy5jcmVhdGVUaXRsZScsXHJcbiAgICAgICAgdW5kZWZpbmVkLFxyXG4gICAgICAgIHsgdmFsdWU6IGNvbnRleHQudGl0bGUgfVxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLmNvbnRleHRTZXJ2aWNlLmxvYWRDb250ZXh0KGNvbnRleHQudXJpKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignZmlsdGVyUGVybWlzc2lvbnNDaGFuZ2VkJylcclxuICBsb2FkQ29udGV4dHMoKSB7XHJcbiAgICBjb25zdCBwZXJtaXNzaW9ucyA9IFsnbm9uZSddO1xyXG4gICAgZm9yIChjb25zdCBwIG9mIHRoaXMuY29tcG9uZW50LnBlcm1pc3Npb25zKSB7XHJcbiAgICAgIGlmIChwLmNoZWNrZWQgPT09IHRydWUgfHwgcC5pbmRldGVybWluYXRlID09PSB0cnVlKSB7XHJcbiAgICAgICAgcGVybWlzc2lvbnMucHVzaChwLm5hbWUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLmNvbXBvbmVudC5zaG93SGlkZGVuXHJcbiAgICAgID8gdGhpcy5jb250ZXh0U2VydmljZS5sb2FkQ29udGV4dHMocGVybWlzc2lvbnMsIHRydWUpXHJcbiAgICAgIDogdGhpcy5jb250ZXh0U2VydmljZS5sb2FkQ29udGV4dHMocGVybWlzc2lvbnMsIGZhbHNlKTtcclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ3Nob3dIaWRkZW5Db250ZXh0cycpXHJcbiAgc2hvd0hpZGRlbkNvbnRleHRzKCkge1xyXG4gICAgdGhpcy5jb21wb25lbnQuc2hvd0hpZGRlbiA9ICF0aGlzLmNvbXBvbmVudC5zaG93SGlkZGVuO1xyXG4gICAgdGhpcy5zdG9yYWdlU2VydmljZS5zZXQoJ2NvbnRleHRzLnNob3dIaWRkZW4nLCB0aGlzLmNvbXBvbmVudC5zaG93SGlkZGVuKTtcclxuICAgIHRoaXMubG9hZENvbnRleHRzKCk7XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCdzaG93JywgWyckZXZlbnQnXSlcclxuICBvblNob3dDb250ZXh0KGNvbnRleHQ6IERldGFpbGVkQ29udGV4dCkge1xyXG4gICAgdGhpcy5jb250ZXh0U2VydmljZS5zaG93Q29udGV4dChjb250ZXh0LmlkKS5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ2hpZGUnLCBbJyRldmVudCddKVxyXG4gIG9uSGlkZUNvbnRleHQoY29udGV4dDogRGV0YWlsZWRDb250ZXh0KSB7XHJcbiAgICB0aGlzLmNvbnRleHRTZXJ2aWNlLmhpZGVDb250ZXh0KGNvbnRleHQuaWQpLnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBAU2VsZigpIGNvbXBvbmVudDogQ29udGV4dExpc3RDb21wb25lbnQsXHJcbiAgICBwcml2YXRlIGNvbnRleHRTZXJ2aWNlOiBDb250ZXh0U2VydmljZSxcclxuICAgIHByaXZhdGUgbWFwU2VydmljZTogTWFwU2VydmljZSxcclxuICAgIHByaXZhdGUgbGFuZ3VhZ2VTZXJ2aWNlOiBMYW5ndWFnZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNvbmZpcm1EaWFsb2dTZXJ2aWNlOiBDb25maXJtRGlhbG9nU2VydmljZSxcclxuICAgIHByaXZhdGUgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhdXRoOiBBdXRoU2VydmljZSxcclxuICAgIHByaXZhdGUgc3RvcmFnZVNlcnZpY2U6IFN0b3JhZ2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWZcclxuICApIHtcclxuICAgIHRoaXMuY29tcG9uZW50ID0gY29tcG9uZW50O1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICAvLyBPdmVycmlkZSBpbnB1dCBjb250ZXh0c1xyXG4gICAgdGhpcy5jb21wb25lbnQuY29udGV4dHMgPSB7IG91cnM6IFtdIH07XHJcbiAgICB0aGlzLmNvbXBvbmVudC5zaG93SGlkZGVuID0gdGhpcy5zdG9yYWdlU2VydmljZS5nZXQoXHJcbiAgICAgICdjb250ZXh0cy5zaG93SGlkZGVuJ1xyXG4gICAgKSBhcyBib29sZWFuO1xyXG5cclxuICAgIHRoaXMuY29udGV4dHMkJCA9IHRoaXMuY29udGV4dFNlcnZpY2UuY29udGV4dHMkLnN1YnNjcmliZSgoY29udGV4dHMpID0+XHJcbiAgICAgIHRoaXMuaGFuZGxlQ29udGV4dHNDaGFuZ2UoY29udGV4dHMpXHJcbiAgICApO1xyXG5cclxuICAgIHRoaXMuZGVmYXVsdENvbnRleHRJZCQkID0gdGhpcy5jb250ZXh0U2VydmljZS5kZWZhdWx0Q29udGV4dElkJC5zdWJzY3JpYmUoXHJcbiAgICAgIChpZCkgPT4ge1xyXG4gICAgICAgIHRoaXMuY29tcG9uZW50LmRlZmF1bHRDb250ZXh0SWQgPSBpZDtcclxuICAgICAgfVxyXG4gICAgKTtcclxuICAgIGNvbnN0IHN0b3JlZENvbnRleHRVcmkgPSB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldChcclxuICAgICAgJ2Zhdm9yaXRlLmNvbnRleHQudXJpJ1xyXG4gICAgKSBhcyBzdHJpbmc7XHJcbiAgICBpZiAoc3RvcmVkQ29udGV4dFVyaSAmJiAhdGhpcy5hdXRoLmF1dGhlbnRpY2F0ZWQpIHtcclxuICAgICAgdGhpcy5jb250ZXh0U2VydmljZS5kZWZhdWx0Q29udGV4dElkJC5uZXh0KHN0b3JlZENvbnRleHRVcmkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFNlZSBmZWF0dXJlLWxpc3QuY29tcG9uZW50IGZvciBhbiBleHBsYW5hdGlvbiBhYm91dCB0aGUgZGVib3VuY2UgdGltZVxyXG4gICAgdGhpcy5zZWxlY3RlZENvbnRleHQkJCA9IHRoaXMuY29udGV4dFNlcnZpY2UuY29udGV4dCRcclxuICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDEwMCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKGNvbnRleHQpID0+ICh0aGlzLmNvbXBvbmVudC5zZWxlY3RlZENvbnRleHQgPSBjb250ZXh0KSk7XHJcblxyXG4gICAgdGhpcy5hdXRoLmF1dGhlbnRpY2F0ZSQuc3Vic2NyaWJlKChhdXRoZW50aWNhdGUpID0+IHtcclxuICAgICAgaWYgKGF1dGhlbnRpY2F0ZSkge1xyXG4gICAgICAgIHRoaXMuY29udGV4dFNlcnZpY2UuZ2V0UHJvZmlsQnlVc2VyKCkuc3Vic2NyaWJlKChwcm9maWxzKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmNvbXBvbmVudC51c2VycyA9IHByb2ZpbHM7XHJcbiAgICAgICAgICB0aGlzLmNvbXBvbmVudC5wZXJtaXNzaW9ucyA9IFtdO1xyXG4gICAgICAgICAgY29uc3QgcHJvZmlsc0FjYyA9IHRoaXMuY29tcG9uZW50LnVzZXJzLnJlZHVjZSgoYWNjLCBjdXIpID0+IHtcclxuICAgICAgICAgICAgYWNjID0gYWNjLmNvbmNhdChjdXIpO1xyXG4gICAgICAgICAgICBhY2MgPSBjdXIuY2hpbGRzID8gYWNjLmNvbmNhdChjdXIuY2hpbGRzKSA6IGFjYztcclxuICAgICAgICAgICAgcmV0dXJuIGFjYztcclxuICAgICAgICAgIH0sIFtdKTtcclxuXHJcbiAgICAgICAgICBmb3IgKGNvbnN0IHVzZXIgb2YgcHJvZmlsc0FjYykge1xyXG4gICAgICAgICAgICBjb25zdCBwZXJtaXNzaW9uOiBDb250ZXh0VXNlclBlcm1pc3Npb24gPSB7XHJcbiAgICAgICAgICAgICAgbmFtZTogdXNlci5uYW1lLFxyXG4gICAgICAgICAgICAgIGNoZWNrZWQ6IHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0KFxyXG4gICAgICAgICAgICAgICAgJ2NvbnRleHRzLnBlcm1pc3Npb25zLicgKyB1c2VyLm5hbWVcclxuICAgICAgICAgICAgICApIGFzIGJvb2xlYW5cclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgaWYgKHBlcm1pc3Npb24uY2hlY2tlZCA9PT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgIHBlcm1pc3Npb24uY2hlY2tlZCA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5jb21wb25lbnQucGVybWlzc2lvbnMucHVzaChwZXJtaXNzaW9uKTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBjb25zdCBwZXJtaXNzaW9ucyA9IFsnbm9uZSddO1xyXG4gICAgICAgICAgZm9yIChjb25zdCBwIG9mIHRoaXMuY29tcG9uZW50LnBlcm1pc3Npb25zKSB7XHJcbiAgICAgICAgICAgIGlmIChwLmNoZWNrZWQgPT09IHRydWUgfHwgcC5pbmRldGVybWluYXRlID09PSB0cnVlKSB7XHJcbiAgICAgICAgICAgICAgcGVybWlzc2lvbnMucHVzaChwLm5hbWUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgdGhpcy5jb21wb25lbnQuc2hvd0hpZGRlblxyXG4gICAgICAgICAgICA/IHRoaXMuY29udGV4dFNlcnZpY2UubG9hZENvbnRleHRzKHBlcm1pc3Npb25zLCB0cnVlKVxyXG4gICAgICAgICAgICA6IHRoaXMuY29udGV4dFNlcnZpY2UubG9hZENvbnRleHRzKHBlcm1pc3Npb25zLCBmYWxzZSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLmNvbnRleHRzJCQudW5zdWJzY3JpYmUoKTtcclxuICAgIHRoaXMuc2VsZWN0ZWRDb250ZXh0JCQudW5zdWJzY3JpYmUoKTtcclxuICAgIHRoaXMuZGVmYXVsdENvbnRleHRJZCQkLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhbmRsZUNvbnRleHRzQ2hhbmdlKGNvbnRleHRzOiBDb250ZXh0c0xpc3QpIHtcclxuICAgIHRoaXMuY29tcG9uZW50LmNvbnRleHRzID0gY29udGV4dHM7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
263
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1saXN0LWJpbmRpbmcuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29udGV4dC9zcmMvbGliL2NvbnRleHQtbWFuYWdlci9jb250ZXh0LWxpc3QvY29udGV4dC1saXN0LWJpbmRpbmcuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFHWixJQUFJLEVBQ0wsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUN6QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBR3ZDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQVE5QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7Ozs7Ozs7QUFPaEUsTUFBTSxPQUFPLDJCQUEyQjtJQWtMNUI7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQXhMRixTQUFTLENBQXVCO0lBQ2hDLFVBQVUsQ0FBZTtJQUN6QixpQkFBaUIsQ0FBZTtJQUNoQyxrQkFBa0IsQ0FBZTtJQUNqQyxpQkFBaUIsQ0FBQztJQUcxQixRQUFRLENBQUMsT0FBZ0I7UUFDdkIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsT0FBTyxD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RFAsWUFBWTt1QkFBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBTWxDLE1BQU07c0JBREwsWUFBWTt1QkFBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBTWhDLE1BQU07c0JBREwsWUFBWTt1QkFBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBdUNoQyxVQUFVO3NCQURULFlBQVk7dUJBQUMsVUFBVSxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQXdCcEMsYUFBYTtzQkFEWixZQUFZO3VCQUFDLGFBQWEsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFNdkMsbUJBQW1CO3NCQURsQixZQUFZO3VCQUFDLG1CQUFtQixFQUFFLENBQUMsUUFBUSxDQUFDO2dCQU03QyxRQUFRO3NCQURQLFlBQVk7dUJBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQXdCbEMsT0FBTztzQkFETixZQUFZO3VCQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFpQmpDLFFBQVE7c0JBRFAsWUFBWTt1QkFBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBb0JsQyxZQUFZO3NCQURYLFlBQVk7dUJBQUMsMEJBQTBCO2dCQWN4QyxrQkFBa0I7c0JBRGpCLFlBQVk7dUJBQUMsb0JBQW9CO2dCQVFsQyxhQUFhO3NCQURaLFlBQVk7dUJBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQU1oQyxhQUFhO3NCQURaLFlBQVk7dUJBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIERpcmVjdGl2ZSxcbiAgSG9zdExpc3RlbmVyLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgU2VsZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICdAaWdvMi9hdXRoJztcbmltcG9ydCB7IENvbmZpcm1EaWFsb2dTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29tbW9uL2NvbmZpcm0tZGlhbG9nJztcbmltcG9ydCB7IExhbmd1YWdlU2VydmljZSB9IGZyb20gJ0BpZ28yL2NvcmUvbGFuZ3VhZ2UnO1xuaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICdAaWdvMi9jb3JlL21lc3NhZ2UnO1xuaW1wb3J0IHsgU3RvcmFnZVNlcnZpY2UgfSBmcm9tICdAaWdvMi9jb3JlL3N0b3JhZ2UnO1xuaW1wb3J0IHsgTWFwU2VydmljZSB9IGZyb20gJ0BpZ28yL2dlbyc7XG5cbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQge1xuICBDb250ZXh0LFxuICBDb250ZXh0VXNlclBlcm1pc3Npb24sXG4gIENvbnRleHRzTGlzdCxcbiAgRGV0YWlsZWRDb250ZXh0XG59IGZyb20gJy4uL3NoYXJlZC9jb250ZXh0LmludGVyZmFjZSc7XG5pbXBvcnQgeyBDb250ZXh0U2VydmljZSB9IGZyb20gJy4uL3NoYXJlZC9jb250ZXh0LnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29udGV4dExpc3RDb21wb25lbnQgfSBmcm9tICcuL2NvbnRleHQtbGlzdC5jb21wb25lbnQnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbaWdvQ29udGV4dExpc3RCaW5kaW5nXScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHByb3ZpZGVyczogW0NvbmZpcm1EaWFsb2dTZXJ2aWNlXVxufSlcbmV4cG9ydCBjbGFzcyBDb250ZXh0TGlzdEJpbmRpbmdEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgY29tcG9uZW50OiBDb250ZXh0TGlzdENvbXBvbmVudDtcbiAgcHJpdmF0ZSBjb250ZXh0cyQkOiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgc2VsZWN0ZWRDb250ZXh0JCQ6IFN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSBkZWZhdWx0Q29udGV4dElkJCQ6IFN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSBwcmV2aW91c01lc3NhZ2VJZDtcblxuICBASG9zdExpc3RlbmVyKCdzZWxlY3QnLCBbJyRldmVudCddKVxuICBvblNlbGVjdChjb250ZXh0OiBDb250ZXh0KSB7XG4gICAgdGhpcy5jb250ZXh0U2VydmljZS5sb2FkQ29udGV4dChjb250ZXh0LnVyaSk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdlZGl0JywgWyckZXZlbnQnXSlcbiAgb25FZGl0KGNvbnRleHQ6IENvbnRleHQpIHtcbiAgICB0aGlzLmNvbnRleHRTZXJ2aWNlLmxvYWRFZGl0ZWRDb250ZXh0KGNvbnRleHQudXJpKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3NhdmUnLCBbJyRldmVudCddKVxuICBvblNhdmUoY29udGV4dDogQ29udGV4dCkge1xuICAgIGNvbnN0IG1hcCA9IHRoaXMubWFwU2VydmljZS5nZXRNYXAoKTtcbiAgICBjb25zdCBjb250ZXh0RnJvbU1hcCA9IHRoaXMuY29udGV4dFNlcnZpY2UuZ2V0Q29udGV4dEZyb21NYXAobWFwKTtcblxuICAgIGNvbnN0IG1zZ1N1Y2Nlc3MgPSAoKSA9PiB7XG4gICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnN1Y2Nlc3MoXG4gICAgICAgICdpZ28uY29udGV4dC5jb250ZXh0TWFuYWdlci5kaWFsb2cuc2F2ZU1zZycsXG4gICAgICAgICdpZ28uY29udGV4dC5jb250ZXh0TWFuYWdlci5kaWFsb2cuc2F2ZVRpdGxlJyxcbiAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICB7XG4gICAgICAgICAgdmFsdWU6IGNvbnRleHQudGl0bGVcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9O1xuXG4gICAgaWYgKGNvbnRleHQuaW1wb3J0ZWQpIHtcbiAgICAgIGNvbnRleHRGcm9tTWFwLnRpdGxlID0gY29udGV4dC50aXRsZTtcbiAgICAgIHRoaXMuY29udGV4dFNlcnZpY2UuZGVsZXRlKGNvbnRleHQuaWQsIHRydWUpO1xuICAgICAgdGhpcy5jb250ZXh0U2VydmljZS5jcmVhdGUoY29udGV4dEZyb21NYXApLnN1YnNjcmliZSgoY29udGV4dENyZWF0ZWQpID0+IHtcbiAgICAgICAgdGhpcy5jb250ZXh0U2VydmljZS5sb2FkQ29udGV4dChjb250ZXh0Q3JlYXRlZC51cmkpO1xuICAgICAgICBtc2dTdWNjZXNzKCk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBjaGFuZ2VzOiBhbnkgPSB7XG4gICAgICBsYXllcnM6IGNvbnRleHRGcm9tTWFwLmxheWVycyxcbiAgICAgIG1hcDoge1xuICAgICAgICB2aWV3OiBjb250ZXh0RnJvbU1hcC5tYXAudmlld1xuICAgICAgfVxuICAgIH07XG5cbiAgICB0aGlzLmNvbnRleHRTZXJ2aWNlLnVwZGF0ZShjb250ZXh0LmlkLCBjaGFuZ2VzKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgbXNnU3VjY2VzcygpO1xuICAgIH0pO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZmF2b3JpdGUnLCBbJyRldmVudCddKVxuICBvbkZhdm9yaXRlKGNvbnRleHQ6IENvbnRleHQpIHtcbiAgICBpZiAoIWNvbnRleHQuaWQpIHtcbiAgICAgIGNvbnRleHQuaWQgPSBjb250ZXh0LnVyaTtcbiAgICB9XG4gICAgdGhpcy5jb250ZXh0U2VydmljZS5zZXREZWZhdWx0KGNvbnRleHQuaWQpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5wcmV2aW91c01lc3NhZ2VJZCkge1xuICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnJlbW92ZSh0aGlzLnByZXZpb3VzTWVzc2FnZUlkKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuY29udGV4dFNlcnZpY2UuZGVmYXVsdENvbnRleHRJZCQubmV4dChjb250ZXh0LmlkKTtcbiAgICAgIGNvbnN0IG1lc3NhZ2VPYmogPSB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnN1Y2Nlc3MoXG4gICAgICAgICdpZ28uY29udGV4dC5jb250ZXh0TWFuYWdlci5kaWFsb2cuZmF2b3JpdGVNc2cnLFxuICAgICAgICAnaWdvLmNvbnRleHQuY29udGV4dE1hbmFnZXIuZGlhbG9nLmZhdm9yaXRlVGl0bGUnLFxuICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgIHtcbiAgICAgICAgICB2YWx1ZTogY29udGV4dC50aXRsZVxuICAgICAgICB9XG4gICAgICApO1xuICAgICAgdGhpcy5wcmV2aW91c01lc3NhZ2VJZCA9IG1lc3NhZ2VPYmoudG9hc3RJZDtcbiAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH0pO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignbWFuYWdlVG9vbHMnLCBbJyRldmVudCddKVxuICBvbk1hbmFnZVRvb2xzKGNvbnRleHQ6IENvbnRleHQpIHtcbiAgICB0aGlzLmNvbnRleHRTZXJ2aWNlLmxvYWRFZGl0ZWRDb250ZXh0KGNvbnRleHQudXJpKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ21hbmFnZVBlcm1pc3Npb25zJywgWyckZXZlbnQnXSlcbiAgb25NYW5hZ2VQZXJtaXNzaW9ucyhjb250ZXh0OiBDb250ZXh0KSB7XG4gICAgdGhpcy5jb250ZXh0U2VydmljZS5sb2FkRWRpdGVkQ29udGV4dChjb250ZXh0LnVyaSk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkZWxldGUnLCBbJyRldmVudCddKVxuICBvbkRlbGV0ZShjb250ZXh0OiBDb250ZXh0KSB7XG4gICAgY29uc3QgdHJhbnNsYXRlID0gdGhpcy5sYW5ndWFnZVNlcnZpY2UudHJhbnNsYXRlO1xuICAgIHRoaXMuY29uZmlybURpYWxvZ1NlcnZpY2VcbiAgICAgIC5vcGVuKFxuICAgICAgICB0cmFuc2xhdGUuaW5zdGFudCgnaWdvLmNvbnRleHQuY29udGV4dE1hbmFnZXIuZGlhbG9nLmNvbmZpcm1EZWxldGUnKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoY29uZmlybSkgPT4ge1xuICAgICAgICBpZiAoY29uZmlybSkge1xuICAgICAgICAgIHRoaXMuY29udGV4dFNlcnZpY2VcbiAgICAgICAgICAgIC5kZWxldGUoY29udGV4dC5pZCwgY29udGV4dC5pbXBvcnRlZClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmluZm8oXG4gICAgICAgICAgICAgICAgJ2lnby5jb250ZXh0LmNvbnRleHRNYW5hZ2VyLmRpYWxvZy5kZWxldGVNc2cnLFxuICAgICAgICAgICAgICAgICdpZ28uY29udGV4dC5jb250ZXh0TWFuYWdlci5kaWFsb2cuZGVsZXRlVGl0bGUnLFxuICAgICAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICB7IHZhbHVlOiBjb250ZXh0LnRpdGxlIH1cbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2Nsb25lJywgWyckZXZlbnQnXSlcbiAgb25DbG9uZShjb250ZXh0OiBEZXRhaWxlZENvbnRleHQpIHtcbiAgICBjb25zdCBwcm9wZXJ0aWVzID0ge1xuICAgICAgdGl0bGU6IGNvbnRleHQudGl0bGUgKyAnLWNvcHknLFxuICAgICAgdXJpOiBjb250ZXh0LnVyaSArICctY29weSdcbiAgICB9O1xuICAgIHRoaXMuY29udGV4dFNlcnZpY2UuY2xvbmUoY29udGV4dC5pZCwgcHJvcGVydGllcykuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2Uuc3VjY2VzcyhcbiAgICAgICAgJ2lnby5jb250ZXh0LmNvbnRleHRNYW5hZ2VyLmRpYWxvZy5jbG9uZU1zZycsXG4gICAgICAgICdpZ28uY29udGV4dC5jb250ZXh0TWFuYWdlci5kaWFsb2cuY2xvbmVUaXRsZScsXG4gICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgeyB2YWx1ZTogY29udGV4dC50aXRsZSB9XG4gICAgICApO1xuICAgIH0pO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignY3JlYXRlJywgWyckZXZlbnQnXSlcbiAgb25DcmVhdGUob3B0czogeyB0aXRsZTogc3RyaW5nOyBlbXB0eTogYm9vbGVhbiB9KSB7XG4gICAgY29uc3QgeyB0aXRsZSwgZW1wdHkgfSA9IG9wdHM7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuY29udGV4dFNlcnZpY2UuZ2V0Q29udGV4dEZyb21NYXAoXG4gICAgICB0aGlzLmNvbXBvbmVudC5tYXAsXG4gICAgICBlbXB0eVxuICAgICk7XG4gICAgY29udGV4dC50aXRsZSA9IHRpdGxlO1xuICAgIHRoaXMuY29udGV4dFNlcnZpY2UuY3JlYXRlKGNvbnRleHQpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnN1Y2Nlc3MoXG4gICAgICAgICdpZ28uY29udGV4dC5ib29rbWFya0J1dHRvbi5kaWFsb2cuY3JlYXRlTXNnJyxcbiAgICAgICAgJ2lnby5jb250ZXh0LmJvb2ttYXJrQnV0dG9uLmRpYWxvZy5jcmVhdGVUaXRsZScsXG4gICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgeyB2YWx1ZTogY29udGV4dC50aXRsZSB9XG4gICAgICApO1xuICAgICAgdGhpcy5jb250ZXh0U2VydmljZS5sb2FkQ29udGV4dChjb250ZXh0LnVyaSk7XG4gICAgfSk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdmaWx0ZXJQZXJtaXNzaW9uc0NoYW5nZWQnKVxuICBsb2FkQ29udGV4dHMoKSB7XG4gICAgY29uc3QgcGVybWlzc2lvbnMgPSBbJ25vbmUnXTtcbiAgICBmb3IgKGNvbnN0IHAgb2YgdGhpcy5jb21wb25lbnQucGVybWlzc2lvbnMpIHtcbiAgICAgIGlmIChwLmNoZWNrZWQgPT09IHRydWUgfHwgcC5pbmRldGVybWluYXRlID09PSB0cnVlKSB7XG4gICAgICAgIHBlcm1pc3Npb25zLnB1c2gocC5uYW1lKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5jb21wb25lbnQuc2hvd0hpZGRlblxuICAgICAgPyB0aGlzLmNvbnRleHRTZXJ2aWNlLmxvYWRDb250ZXh0cyhwZXJtaXNzaW9ucywgdHJ1ZSlcbiAgICAgIDogdGhpcy5jb250ZXh0U2VydmljZS5sb2FkQ29udGV4dHMocGVybWlzc2lvbnMsIGZhbHNlKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3Nob3dIaWRkZW5Db250ZXh0cycpXG4gIHNob3dIaWRkZW5Db250ZXh0cygpIHtcbiAgICB0aGlzLmNvbXBvbmVudC5zaG93SGlkZGVuID0gIXRoaXMuY29tcG9uZW50LnNob3dIaWRkZW47XG4gICAgdGhpcy5zdG9yYWdlU2VydmljZS5zZXQoJ2NvbnRleHRzLnNob3dIaWRkZW4nLCB0aGlzLmNvbXBvbmVudC5zaG93SGlkZGVuKTtcbiAgICB0aGlzLmxvYWRDb250ZXh0cygpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignc2hvdycsIFsnJGV2ZW50J10pXG4gIG9uU2hvd0NvbnRleHQoY29udGV4dDogRGV0YWlsZWRDb250ZXh0KSB7XG4gICAgdGhpcy5jb250ZXh0U2VydmljZS5zaG93Q29udGV4dChjb250ZXh0LmlkKS5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2hpZGUnLCBbJyRldmVudCddKVxuICBvbkhpZGVDb250ZXh0KGNvbnRleHQ6IERldGFpbGVkQ29udGV4dCkge1xuICAgIHRoaXMuY29udGV4dFNlcnZpY2UuaGlkZUNvbnRleHQoY29udGV4dC5pZCkuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBAU2VsZigpIGNvbXBvbmVudDogQ29udGV4dExpc3RDb21wb25lbnQsXG4gICAgcHJpdmF0ZSBjb250ZXh0U2VydmljZTogQ29udGV4dFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBtYXBTZXJ2aWNlOiBNYXBTZXJ2aWNlLFxuICAgIHByaXZhdGUgbGFuZ3VhZ2VTZXJ2aWNlOiBMYW5ndWFnZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb25maXJtRGlhbG9nU2VydmljZTogQ29uZmlybURpYWxvZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhdXRoOiBBdXRoU2VydmljZSxcbiAgICBwcml2YXRlIHN0b3JhZ2VTZXJ2aWNlOiBTdG9yYWdlU2VydmljZSxcbiAgICBwcml2YXRlIGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZlxuICApIHtcbiAgICB0aGlzLmNvbXBvbmVudCA9IGNvbXBvbmVudDtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIC8vIE92ZXJyaWRlIGlucHV0IGNvbnRleHRzXG4gICAgdGhpcy5jb21wb25lbnQuY29udGV4dHMgPSB7IG91cnM6IFtdIH07XG4gICAgdGhpcy5jb21wb25lbnQuc2hvd0hpZGRlbiA9IHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0KFxuICAgICAgJ2NvbnRleHRzLnNob3dIaWRkZW4nXG4gICAgKSBhcyBib29sZWFuO1xuXG4gICAgdGhpcy5jb250ZXh0cyQkID0gdGhpcy5jb250ZXh0U2VydmljZS5jb250ZXh0cyQuc3Vic2NyaWJlKChjb250ZXh0cykgPT5cbiAgICAgIHRoaXMuaGFuZGxlQ29udGV4dHNDaGFuZ2UoY29udGV4dHMpXG4gICAgKTtcblxuICAgIHRoaXMuZGVmYXVsdENvbnRleHRJZCQkID0gdGhpcy5jb250ZXh0U2VydmljZS5kZWZhdWx0Q29udGV4dElkJC5zdWJzY3JpYmUoXG4gICAgICAoaWQpID0+IHtcbiAgICAgICAgdGhpcy5jb21wb25lbnQuZGVmYXVsdENvbnRleHRJZCA9IGlkO1xuICAgICAgfVxuICAgICk7XG4gICAgY29uc3Qgc3RvcmVkQ29udGV4dFVyaSA9IHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0KFxuICAgICAgJ2Zhdm9yaXRlLmNvbnRleHQudXJpJ1xuICAgICkgYXMgc3RyaW5nO1xuICAgIGlmIChzdG9yZWRDb250ZXh0VXJpICYmICF0aGlzLmF1dGguYXV0aGVudGljYXRlZCkge1xuICAgICAgdGhpcy5jb250ZXh0U2VydmljZS5kZWZhdWx0Q29udGV4dElkJC5uZXh0KHN0b3JlZENvbnRleHRVcmkpO1xuICAgIH1cblxuICAgIC8vIFNlZSBmZWF0dXJlLWxpc3QuY29tcG9uZW50IGZvciBhbiBleHBsYW5hdGlvbiBhYm91dCB0aGUgZGVib3VuY2UgdGltZVxuICAgIHRoaXMuc2VsZWN0ZWRDb250ZXh0JCQgPSB0aGlzLmNvbnRleHRTZXJ2aWNlLmNvbnRleHQkXG4gICAgICAucGlwZShkZWJvdW5jZVRpbWUoMTAwKSlcbiAgICAgIC5zdWJzY3JpYmUoKGNvbnRleHQpID0+ICh0aGlzLmNvbXBvbmVudC5zZWxlY3RlZENvbnRleHQgPSBjb250ZXh0KSk7XG5cbiAgICB0aGlzLmF1dGguYXV0aGVudGljYXRlJC5zdWJzY3JpYmUoKGF1dGhlbnRpY2F0ZSkgPT4ge1xuICAgICAgaWYgKGF1dGhlbnRpY2F0ZSkge1xuICAgICAgICB0aGlzLmNvbnRleHRTZXJ2aWNlLmdldFByb2ZpbEJ5VXNlcigpLnN1YnNjcmliZSgocHJvZmlscykgPT4ge1xuICAgICAgICAgIHRoaXMuY29tcG9uZW50LnVzZXJzID0gcHJvZmlscztcbiAgICAgICAgICB0aGlzLmNvbXBvbmVudC5wZXJtaXNzaW9ucyA9IFtdO1xuICAgICAgICAgIGNvbnN0IHByb2ZpbHNBY2MgPSB0aGlzLmNvbXBvbmVudC51c2Vycy5yZWR1Y2UoKGFjYywgY3VyKSA9PiB7XG4gICAgICAgICAgICBhY2MgPSBhY2MuY29uY2F0KGN1cik7XG4gICAgICAgICAgICBhY2MgPSBjdXIuY2hpbGRzID8gYWNjLmNvbmNhdChjdXIuY2hpbGRzKSA6IGFjYztcbiAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgICAgfSwgW10pO1xuXG4gICAgICAgICAgZm9yIChjb25zdCB1c2VyIG9mIHByb2ZpbHNBY2MpIHtcbiAgICAgICAgICAgIGNvbnN0IHBlcm1pc3Npb246IENvbnRleHRVc2VyUGVybWlzc2lvbiA9IHtcbiAgICAgICAgICAgICAgbmFtZTogdXNlci5uYW1lLFxuICAgICAgICAgICAgICBjaGVja2VkOiB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldChcbiAgICAgICAgICAgICAgICAnY29udGV4dHMucGVybWlzc2lvbnMuJyArIHVzZXIubmFtZVxuICAgICAgICAgICAgICApIGFzIGJvb2xlYW5cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBpZiAocGVybWlzc2lvbi5jaGVja2VkID09PSBudWxsKSB7XG4gICAgICAgICAgICAgIHBlcm1pc3Npb24uY2hlY2tlZCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmNvbXBvbmVudC5wZXJtaXNzaW9ucy5wdXNoKHBlcm1pc3Npb24pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IHBlcm1pc3Npb25zID0gWydub25lJ107XG4gICAgICAgICAgZm9yIChjb25zdCBwIG9mIHRoaXMuY29tcG9uZW50LnBlcm1pc3Npb25zKSB7XG4gICAgICAgICAgICBpZiAocC5jaGVja2VkID09PSB0cnVlIHx8IHAuaW5kZXRlcm1pbmF0ZSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICBwZXJtaXNzaW9ucy5wdXNoKHAubmFtZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy5jb21wb25lbnQuc2hvd0hpZGRlblxuICAgICAgICAgICAgPyB0aGlzLmNvbnRleHRTZXJ2aWNlLmxvYWRDb250ZXh0cyhwZXJtaXNzaW9ucywgdHJ1ZSlcbiAgICAgICAgICAgIDogdGhpcy5jb250ZXh0U2VydmljZS5sb2FkQ29udGV4dHMocGVybWlzc2lvbnMsIGZhbHNlKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmNvbnRleHRzJCQudW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLnNlbGVjdGVkQ29udGV4dCQkLnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5kZWZhdWx0Q29udGV4dElkJCQudW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlQ29udGV4dHNDaGFuZ2UoY29udGV4dHM6IENvbnRleHRzTGlzdCkge1xuICAgIHRoaXMuY29tcG9uZW50LmNvbnRleHRzID0gY29udGV4dHM7XG4gIH1cbn1cbiJdfQ==
|