ngx-histaff-alpha 2.3.2 → 2.3.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/app/libraries/core-contract-seeker/core-contract-seeker/core-contract-seeker.component.mjs +5 -3
- package/esm2022/lib/app/libraries/core-control/core-control/core-control.component.mjs +3 -3
- package/esm2022/lib/app/libraries/core-control-no-grid-buffer/core-control-no-grid-buffer/core-control-no-grid-buffer.component.mjs +2 -2
- package/esm2022/lib/app/libraries/core-currency-input/core-currency-input/core-currency-input.component.mjs +9 -6
- package/esm2022/lib/app/libraries/core-employee-seeker/core-employee-seeker/core-employee-seeker.component.mjs +5 -3
- package/esm2022/lib/app/libraries/core-form/core-form/enum-interfaces.mjs +1 -1
- package/esm2022/lib/app/libraries/core-form-control-seeker/EnumCoreSeekerColumn.mjs +95 -0
- package/esm2022/lib/app/libraries/core-form-control-seeker/core-form-control-seeker/core-form-control-seeker.component.mjs +75 -23
- package/esm2022/lib/app/libraries/core-job-seeker/core-job-seeker.component.mjs +6 -3
- package/esm2022/lib/app/libraries/core-page-edit/core-page-edit.component.mjs +6 -1
- package/esm2022/lib/app/libraries/core-position-concurrent-seeker/core-position-concurrent-seeker/core-position-concurrent-seeker.component.mjs +5 -3
- package/esm2022/lib/app/libraries/core-position-seeker/core-position-seeker/core-position-seeker.component.mjs +5 -3
- package/esm2022/lib/app/libraries/core-table/ICoreTableColumnItem.mjs +1 -1
- package/esm2022/lib/app/libraries/core-table/core-table.component.mjs +3 -3
- package/esm2022/lib/app/libraries/core-wage-seeker/core-wage-seeker/core-wage-seeker.component.mjs +5 -3
- package/esm2022/lib/app/libraries/core-working-seeker/core-working-seeker/core-working-seeker.component.mjs +5 -3
- package/esm2022/lib/app/libraries/decision/decision.component.mjs +4 -2
- package/esm2022/lib/app/libraries/huconcurrently/huconcurrently.component.mjs +6 -4
- package/esm2022/lib/app/libraries/job/job.component.mjs +21 -11
- package/esm2022/lib/app/libraries/position/position.component.mjs +4 -2
- package/esm2022/lib/app/libraries/staffprofile/staffprofile.component.mjs +4 -2
- package/esm2022/lib/app/libraries/wage/wage.component.mjs +4 -64
- package/esm2022/public-api.mjs +2 -1
- package/fesm2022/ngx-histaff-alpha.mjs +247 -122
- package/fesm2022/ngx-histaff-alpha.mjs.map +1 -1
- package/lib/app/libraries/core-contract-seeker/core-contract-seeker/core-contract-seeker.component.d.ts +3 -1
- package/lib/app/libraries/core-currency-input/core-currency-input/core-currency-input.component.d.ts +3 -2
- package/lib/app/libraries/core-employee-seeker/core-employee-seeker/core-employee-seeker.component.d.ts +3 -1
- package/lib/app/libraries/core-form/core-form/enum-interfaces.d.ts +3 -0
- package/lib/app/libraries/core-form-control-seeker/EnumCoreSeekerColumn.d.ts +87 -0
- package/lib/app/libraries/core-form-control-seeker/core-form-control-seeker/core-form-control-seeker.component.d.ts +16 -2
- package/lib/app/libraries/core-job-seeker/core-job-seeker.component.d.ts +3 -1
- package/lib/app/libraries/core-position-concurrent-seeker/core-position-concurrent-seeker/core-position-concurrent-seeker.component.d.ts +3 -1
- package/lib/app/libraries/core-position-seeker/core-position-seeker/core-position-seeker.component.d.ts +3 -1
- package/lib/app/libraries/core-table/ICoreTableColumnItem.d.ts +8 -0
- package/lib/app/libraries/core-wage-seeker/core-wage-seeker/core-wage-seeker.component.d.ts +3 -1
- package/lib/app/libraries/core-working-seeker/core-working-seeker/core-working-seeker.component.d.ts +3 -1
- package/lib/app/libraries/decision/decision.component.d.ts +1 -1
- package/lib/app/libraries/huconcurrently/huconcurrently.component.d.ts +1 -1
- package/lib/app/libraries/job/job.component.d.ts +2 -2
- package/lib/app/libraries/position/position.component.d.ts +1 -1
- package/lib/app/libraries/staffprofile/staffprofile.component.d.ts +1 -1
- package/lib/app/libraries/wage/wage.component.d.ts +1 -1
- package/package.json +1 -1
- package/public-api.d.ts +1 -0
|
@@ -19,6 +19,7 @@ export class CoreJobSeekerComponent extends JobComponent {
|
|
|
19
19
|
this.corePageListHeight = 800;
|
|
20
20
|
}
|
|
21
21
|
ngOnInit() {
|
|
22
|
+
this.columns = this.columns.filter(x => !!x.jobSeekerColumnCode ? !this.excludedColumns.includes(x.jobSeekerColumnCode) : true);
|
|
22
23
|
this.subscriptions.push(this.mls.lang$.subscribe(x => this.lang = x));
|
|
23
24
|
if (this.preDefinedOuterParam$) {
|
|
24
25
|
this.subscriptions.push(this.preDefinedOuterParam$.subscribe(x => {
|
|
@@ -59,7 +60,7 @@ export class CoreJobSeekerComponent extends JobComponent {
|
|
|
59
60
|
});
|
|
60
61
|
}
|
|
61
62
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: CoreJobSeekerComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
62
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.3", type: CoreJobSeekerComponent, isStandalone: true, selector: "core-job-seeker", inputs: { multiMode: "multiMode", preDefinedOuterParam$: "preDefinedOuterParam$", excludedIds$: "excludedIds$" }, outputs: { rowDoubleClick: "rowDoubleClick", selectedIdsChange: "selectedIdsChange", selectedDataChange: "selectedDataChange", columnsInit: "columnsInit" }, usesInheritance: true, ngImport: i0, template: "<div class=\"core-job-seeker-container\">\r\n @if (!!sticker) {\r\n <core-page-list [hideCheck]=\"!!!multiMode\" [height]=\"corePageListHeight\" [apiDefinition]=\"apiDefinition\"\r\n [columns]=\"columns\" [editRoute]=\"editRoute\" [crud]=\"crud\" [title]=\"title\"\r\n [outerParam$]=\"outerParam$\"\r\n [excludedIds$]=\"excludedIds$\"\r\n [seekerMode]=\"true\" (rowDoubleClick)=\"onRowDoubleClick($event)\"\r\n (selectedIdsChange)=\"onSelectedIdsChange($event)\"\r\n (selectedDataChange)=\"onSelectedDataChange($event)\"></core-page-list>\r\n }\r\n\r\n <ng-template #sticker let-code=\"context.actflg\">\r\n <core-status-sticker [code]=\"code\" [isTrueCode]=\"true\"></core-status-sticker>\r\n </ng-template>\r\n\r\n</div>", styles: [""], dependencies: [{ kind: "component", type: CorePageListComponent, selector: "core-page-list", inputs: ["normalMode", "hideHeader", "hideButtonGroup", "seekerMode", "mccMode", "height", "headerWrap", "headerFirstRowHeight", "enableTimeZoneConverterForDateTimePeriodParameters", "showParamKit", "datePeriodComparisonFor", "datePeriodComparisonForLabelKey", "statusInclusionFor", "statusInclusionForLabelKey", "statusOptionsApi", "hideDatePeriodComparison", "hideStatusInclusion", "title", "hasIdOfStringType", "hideCheck", "apiDefinition", "columns", "frozen", "inlineTools", "inlineToolItems", "editRoute", "crud", "showListInlineTools", "top", "left", "hideLeft", "outerParam$", "outerSort", "outerFilterOperators", "outerInOperators", "autoResizeWithWindow", "extraManualOffset", "wrap", "rowHeight", "selfResolveCorePageHeaderButtonClick", "clearData$", "deleteValidateFn", "generateTemplateRequest", "importPreviewPath", "columnSearchDefaultOpen", "fixedPageSize", "disableDoubleClick", "noPaddingCell", "disableHighlightOnClick", "loading$", "excludedIds$"], outputs: ["corePageHeaderButtonClick", "rowClick", "rowDoubleClick", "selectedIdsChange", "selectedDataChange", "onInstanceCreated", "onInputFileBase64DataReady"] }, { kind: "component", type: CoreStatusStickerComponent, selector: "core-status-sticker", inputs: ["code", "isTrueCode"] }] }); }
|
|
63
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.3", type: CoreJobSeekerComponent, isStandalone: true, selector: "core-job-seeker", inputs: { excludedColumns: "excludedColumns", multiMode: "multiMode", preDefinedOuterParam$: "preDefinedOuterParam$", excludedIds$: "excludedIds$" }, outputs: { rowDoubleClick: "rowDoubleClick", selectedIdsChange: "selectedIdsChange", selectedDataChange: "selectedDataChange", columnsInit: "columnsInit" }, usesInheritance: true, ngImport: i0, template: "<div class=\"core-job-seeker-container\">\r\n @if (!!sticker) {\r\n <core-page-list [hideCheck]=\"!!!multiMode\" [height]=\"corePageListHeight\" [apiDefinition]=\"apiDefinition\"\r\n [columns]=\"columns\" [editRoute]=\"editRoute\" [crud]=\"crud\" [title]=\"title\"\r\n [outerParam$]=\"outerParam$\"\r\n [excludedIds$]=\"excludedIds$\"\r\n [seekerMode]=\"true\" (rowDoubleClick)=\"onRowDoubleClick($event)\"\r\n (selectedIdsChange)=\"onSelectedIdsChange($event)\"\r\n (selectedDataChange)=\"onSelectedDataChange($event)\"></core-page-list>\r\n }\r\n\r\n <ng-template #sticker let-code=\"context.actflg\">\r\n <core-status-sticker [code]=\"code\" [isTrueCode]=\"true\"></core-status-sticker>\r\n </ng-template>\r\n\r\n</div>", styles: [""], dependencies: [{ kind: "component", type: CorePageListComponent, selector: "core-page-list", inputs: ["normalMode", "hideHeader", "hideButtonGroup", "seekerMode", "mccMode", "height", "headerWrap", "headerFirstRowHeight", "enableTimeZoneConverterForDateTimePeriodParameters", "showParamKit", "datePeriodComparisonFor", "datePeriodComparisonForLabelKey", "statusInclusionFor", "statusInclusionForLabelKey", "statusOptionsApi", "hideDatePeriodComparison", "hideStatusInclusion", "title", "hasIdOfStringType", "hideCheck", "apiDefinition", "columns", "frozen", "inlineTools", "inlineToolItems", "editRoute", "crud", "showListInlineTools", "top", "left", "hideLeft", "outerParam$", "outerSort", "outerFilterOperators", "outerInOperators", "autoResizeWithWindow", "extraManualOffset", "wrap", "rowHeight", "selfResolveCorePageHeaderButtonClick", "clearData$", "deleteValidateFn", "generateTemplateRequest", "importPreviewPath", "columnSearchDefaultOpen", "fixedPageSize", "disableDoubleClick", "noPaddingCell", "disableHighlightOnClick", "loading$", "excludedIds$"], outputs: ["corePageHeaderButtonClick", "rowClick", "rowDoubleClick", "selectedIdsChange", "selectedDataChange", "onInstanceCreated", "onInputFileBase64DataReady"] }, { kind: "component", type: CoreStatusStickerComponent, selector: "core-status-sticker", inputs: ["code", "isTrueCode"] }] }); }
|
|
63
64
|
}
|
|
64
65
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: CoreJobSeekerComponent, decorators: [{
|
|
65
66
|
type: Component,
|
|
@@ -67,7 +68,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
|
|
|
67
68
|
CorePageListComponent,
|
|
68
69
|
CoreStatusStickerComponent
|
|
69
70
|
], template: "<div class=\"core-job-seeker-container\">\r\n @if (!!sticker) {\r\n <core-page-list [hideCheck]=\"!!!multiMode\" [height]=\"corePageListHeight\" [apiDefinition]=\"apiDefinition\"\r\n [columns]=\"columns\" [editRoute]=\"editRoute\" [crud]=\"crud\" [title]=\"title\"\r\n [outerParam$]=\"outerParam$\"\r\n [excludedIds$]=\"excludedIds$\"\r\n [seekerMode]=\"true\" (rowDoubleClick)=\"onRowDoubleClick($event)\"\r\n (selectedIdsChange)=\"onSelectedIdsChange($event)\"\r\n (selectedDataChange)=\"onSelectedDataChange($event)\"></core-page-list>\r\n }\r\n\r\n <ng-template #sticker let-code=\"context.actflg\">\r\n <core-status-sticker [code]=\"code\" [isTrueCode]=\"true\"></core-status-sticker>\r\n </ng-template>\r\n\r\n</div>" }]
|
|
70
|
-
}], propDecorators: {
|
|
71
|
+
}], propDecorators: { excludedColumns: [{
|
|
72
|
+
type: Input
|
|
73
|
+
}], multiMode: [{
|
|
71
74
|
type: Input
|
|
72
75
|
}], preDefinedOuterParam$: [{
|
|
73
76
|
type: Input
|
|
@@ -82,4 +85,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
|
|
|
82
85
|
}], columnsInit: [{
|
|
83
86
|
type: Output
|
|
84
87
|
}] } });
|
|
85
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
88
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS1qb2Itc2Vla2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1oaXN0YWZmLWFscGhhL3NyYy9saWIvYXBwL2xpYnJhcmllcy9jb3JlLWpvYi1zZWVrZXIvY29yZS1qb2Itc2Vla2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1oaXN0YWZmLWFscGhhL3NyYy9saWIvYXBwL2xpYnJhcmllcy9jb3JlLWpvYi1zZWVrZXIvY29yZS1qb2Itc2Vla2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUEwQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckksT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDMUQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDbkYsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sMEVBQTBFLENBQUM7O0FBYXRILE1BQU0sT0FBTyxzQkFBdUIsU0FBUSxZQUFZO0lBVnhEOztRQWVXLGlCQUFZLEdBQUcsSUFBSSxlQUFlLENBQVcsRUFBRSxDQUFDLENBQUM7UUFFaEQsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3BDLHNCQUFpQixHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDdkMsdUJBQWtCLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUN4QyxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFFM0MsY0FBUyxHQUFHLFNBQVMsRUFB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QUF2QixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0cscUJBQXFCO3NCQUE3QixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBRUksY0FBYztzQkFBdkIsTUFBTTtnQkFDRyxpQkFBaUI7c0JBQTFCLE1BQU07Z0JBQ0csa0JBQWtCO3NCQUEzQixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCwgaXNEZXZNb2RlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEpvYkNvbXBvbmVudCB9IGZyb20gJy4uL2pvYi9qb2IuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEVudW1UcmFuc2xhdGVLZXkgfSBmcm9tICdhbHBoYS1nbG9iYWwtY29uc3RhbnRzJztcclxuaW1wb3J0IHsgQ29yZVBhZ2VMaXN0Q29tcG9uZW50IH0gZnJvbSAnLi4vY29yZS1wYWdlLWxpc3QvY29yZS1wYWdlLWxpc3QuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ29yZVN0YXR1c1N0aWNrZXJDb21wb25lbnQgfSBmcm9tICcuLi9jb3JlLXN0YXR1cy1zdGlja2VyL2NvcmUtc3RhdHVzLXN0aWNrZXIvY29yZS1zdGF0dXMtc3RpY2tlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBFbnVtQ29yZVNlZWtlckNvbHVtbkpvYiB9IGZyb20gJy4uL2NvcmUtZm9ybS1jb250cm9sLXNlZWtlci9FbnVtQ29yZVNlZWtlckNvbHVtbic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2NvcmUtam9iLXNlZWtlcicsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb3JlUGFnZUxpc3RDb21wb25lbnQsXHJcbiAgICBDb3JlU3RhdHVzU3RpY2tlckNvbXBvbmVudFxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NvcmUtam9iLXNlZWtlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL2NvcmUtam9iLXNlZWtlci5jb21wb25lbnQuc2NzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIENvcmVKb2JTZWVrZXJDb21wb25lbnQgZXh0ZW5kcyBKb2JDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcclxuXHJcbiAgQElucHV0KCkgZXhjbHVkZWRDb2x1bW5zITogRW51bUNvcmVTZWVrZXJDb2x1bW5Kb2JbXTtcclxuICBASW5wdXQoKSBtdWx0aU1vZGUhOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIHByZURlZmluZWRPdXRlclBhcmFtJCE6IEJlaGF2aW9yU3ViamVjdDxhbnk+O1xyXG4gIEBJbnB1dCgpIGV4Y2x1ZGVkSWRzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyW10+KFtdKTtcclxuXHJcbiAgQE91dHB1dCgpIHJvd0RvdWJsZUNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBzZWxlY3RlZElkc0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgc2VsZWN0ZWREYXRhQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBjb2x1bW5zSW5pdCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgaXNEZXZNb2RlID0gaXNEZXZNb2RlKCk7XHJcblxyXG4gIG92ZXJyaWRlIHRpdGxlID0gRW51bVRyYW5zbGF0ZUtleS5VSV9DT01QT05FTlRfVElUTEVfSk9CX1NFRUtFUjtcclxuICBvdmVycmlkZSBoZWlnaHQ6IG51bWJlciA9IDYyMDtcclxuXHJcbiAgY29yZVBhZ2VMaXN0SGVpZ2h0OiBudW1iZXIgPSA4MDA7XHJcblxyXG4gIG92ZXJyaWRlIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5jb2x1bW5zID0gdGhpcy5jb2x1bW5zLmZpbHRlcih4ID0+ICEheC5qb2JTZWVrZXJDb2x1bW5Db2RlID8gIXRoaXMuZXhjbHVkZWRDb2x1bW5zLmluY2x1ZGVzKHguam9iU2Vla2VyQ29sdW1uQ29kZSkgOiB0cnVlKTtcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICB0aGlzLm1scy5sYW5nJC5zdWJzY3JpYmUoeCA9PiB0aGlzLmxhbmcgPSB4KVxyXG4gICAgKVxyXG4gICAgaWYgKHRoaXMucHJlRGVmaW5lZE91dGVyUGFyYW0kKSB7XHJcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICAgIHRoaXMucHJlRGVmaW5lZE91dGVyUGFyYW0kLnN1YnNjcmliZSh4ID0+IHtcclxuICAgICAgICAgIGlmICh0aGlzLm91dGVyUGFyYW0kLnZhbHVlID09PSBudWxsKSB7XHJcbiAgICAgICAgICAgIHRoaXMub3V0ZXJQYXJhbSQubmV4dCh4KTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMub3V0ZXJQYXJhbSQubmV4dCh7XHJcbiAgICAgICAgICAgICAgLi4udGhpcy5vdXRlclBhcmFtJC52YWx1ZSxcclxuICAgICAgICAgICAgICAuLi54XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgIClcclxuICAgIH1cclxuICAgIHRoaXMuY29sdW1uc0luaXQuZW1pdCh0aGlzLmNvbHVtbnMpO1xyXG4gIH1cclxuXHJcbiAgb3ZlcnJpZGUgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGlmICh3aW5kb3cuaW5uZXJIZWlnaHQgLSAxMDAgPCA4MDApIHtcclxuICAgICAgICB0aGlzLmNvcmVQYWdlTGlzdEhlaWdodCA9IHdpbmRvdy5pbm5lckhlaWdodCAtIDEwMFxyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IHN0aWNrZXJGaWx0ZXIgPSB0aGlzLmNvbHVtbnMuZmlsdGVyKGMgPT4gYy5maWVsZCA9PT0gJ2FjdGZsZycpO1xyXG4gICAgICBpZiAoISFzdGlja2VyRmlsdGVyLmxlbmd0aCkgc3RpY2tlckZpbHRlclswXS50ZW1wbGF0ZVJlZiA9IHRoaXMuc3RpY2tlcjtcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBvblJvd0RvdWJsZUNsaWNrKGU6IGFueSkge1xyXG4gICAgaWYgKCF0aGlzLm11bHRpTW9kZSkgdGhpcy5yb3dEb3VibGVDbGljay5lbWl0KGUpXHJcbiAgfVxyXG5cclxuICBvblNlbGVjdGVkSWRzQ2hhbmdlKGU6IGFueSkge1xyXG4gICAgdGhpcy5zZWxlY3RlZElkc0NoYW5nZS5lbWl0KGUpXHJcbiAgfVxyXG5cclxuICBvblNlbGVjdGVkRGF0YUNoYW5nZShlOiBhbnlbXSkge1xyXG4gICAgdGhpcy5zZWxlY3RlZERhdGFDaGFuZ2UuZW1pdCh7XHJcbiAgICAgIGNvbHVtbnM6IHRoaXMuY29sdW1ucyxcclxuICAgICAgZGF0YTogZVxyXG4gICAgfSlcclxuICB9XHJcblxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJjb3JlLWpvYi1zZWVrZXItY29udGFpbmVyXCI+XHJcbiAgICBAaWYgKCEhc3RpY2tlcikge1xyXG4gICAgICAgIDxjb3JlLXBhZ2UtbGlzdCBbaGlkZUNoZWNrXT1cIiEhIW11bHRpTW9kZVwiIFtoZWlnaHRdPVwiY29yZVBhZ2VMaXN0SGVpZ2h0XCIgW2FwaURlZmluaXRpb25dPVwiYXBpRGVmaW5pdGlvblwiXHJcbiAgICAgICAgW2NvbHVtbnNdPVwiY29sdW1uc1wiIFtlZGl0Um91dGVdPVwiZWRpdFJvdXRlXCIgW2NydWRdPVwiY3J1ZFwiIFt0aXRsZV09XCJ0aXRsZVwiXHJcbiAgICAgICAgW291dGVyUGFyYW0kXT1cIm91dGVyUGFyYW0kXCJcclxuICAgICAgICBbZXhjbHVkZWRJZHMkXT1cImV4Y2x1ZGVkSWRzJFwiXHJcbiAgICAgICAgW3NlZWtlck1vZGVdPVwidHJ1ZVwiIChyb3dEb3VibGVDbGljayk9XCJvblJvd0RvdWJsZUNsaWNrKCRldmVudClcIlxyXG4gICAgICAgIChzZWxlY3RlZElkc0NoYW5nZSk9XCJvblNlbGVjdGVkSWRzQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgIChzZWxlY3RlZERhdGFDaGFuZ2UpPVwib25TZWxlY3RlZERhdGFDaGFuZ2UoJGV2ZW50KVwiPjwvY29yZS1wYWdlLWxpc3Q+XHJcbiAgICB9XHJcblxyXG4gICAgPG5nLXRlbXBsYXRlICNzdGlja2VyIGxldC1jb2RlPVwiY29udGV4dC5hY3RmbGdcIj5cclxuICAgICAgICA8Y29yZS1zdGF0dXMtc3RpY2tlciBbY29kZV09XCJjb2RlXCIgW2lzVHJ1ZUNvZGVdPVwidHJ1ZVwiPjwvY29yZS1zdGF0dXMtc3RpY2tlcj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG48L2Rpdj4iXX0=
|
|
@@ -175,6 +175,11 @@ export class CorePageEditComponent {
|
|
|
175
175
|
if (!!this.currentValue[control.field]) {
|
|
176
176
|
if (isDevMode() && !!!control.getByIdApi) {
|
|
177
177
|
switch (control.controlType) {
|
|
178
|
+
case EnumFormBaseContolType.SEEKER:
|
|
179
|
+
if (!control.multiMode) {
|
|
180
|
+
this.alertService.error(`getByIdApi not provided for '${control.field}'`, noneAutoClosedAlertOptions);
|
|
181
|
+
}
|
|
182
|
+
break;
|
|
178
183
|
case EnumFormBaseContolType.DROPDOWN:
|
|
179
184
|
if (!!!control.dropdownOptions$?.value) {
|
|
180
185
|
this.alertService.error(`getByIdApi not provided for '${control.field}'`, noneAutoClosedAlertOptions);
|
|
@@ -494,4 +499,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
|
|
|
494
499
|
type: ViewChild,
|
|
495
500
|
args: ['containerBigger']
|
|
496
501
|
}] } });
|
|
497
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS1wYWdlLWVkaXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWhpc3RhZmYtYWxwaGEvc3JjL2xpYi9hcHAvbGlicmFyaWVzL2NvcmUtcGFnZS1lZGl0L2NvcmUtcGFnZS1lZGl0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1oaXN0YWZmLWFscGhhL3NyYy9saWIvYXBwL2xpYnJhcmllcy9jb3JlLXBhZ2UtZWRpdC9jb3JlLXBhZ2UtZWRpdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBeUIsTUFBTSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsU0FBUyxHQUE0QixNQUFNLGVBQWUsQ0FBQztBQU85SSxPQUFPLEVBQUUsZUFBZSxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUlyRCxPQUFPLEVBQUUsaUJBQWlCLEVBQWlDLE1BQU0sNENBQTRDLENBQUM7QUFDOUcsT0FBTyxFQUFhLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHNFQUFzRSxDQUFDO0FBQzdHLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBUTFELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUU3RCxPQUFPLEVBQUUsWUFBWSxFQUFFLDBCQUEwQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFeEYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDM0UsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFOUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8s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RyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0cseUJBQXlCO3NCQUFqQyxLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csa0JBQWtCO3NCQUExQixLQUFLO2dCQUNHLHFCQUFxQjtzQkFBN0IsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBR0ksV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLGVBQWU7c0JBQXhCLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUlFLElBQUk7c0JBQVosS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBRUkseUJBQXlCO3NCQUFsQyxNQUFNO2dCQUVpQixTQUFTO3NCQUFoQyxTQUFTO3VCQUFDLFdBQVc7Z0JBQ1EsZUFBZTtzQkFBNUMsU0FBUzt1QkFBQyxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQsIEFmdGVyVmlld0luaXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBpc0Rldk1vZGUsIFZpZXdDaGlsZCwgRWxlbWVudFJlZiwgVGVtcGxhdGVSZWYsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFJvdXRlciwgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5cclxuaW1wb3J0IHsgQ29yZVBhZ2VFZGl0U2VydmljZSB9IGZyb20gJy4vY29yZS1wYWdlLWVkaXQuc2VydmljZSc7XHJcbmltcG9ydCB7IEFuaW1hdGVkVGV4dFNlcnZpY2UgfSBmcm9tICcuLi9hbmltYXRlZC10ZXh0L2FuaW1hdGVkLXRleHQuc2VydmljZSc7XHJcblxyXG5pbXBvcnQgeyBBbGVydFNlcnZpY2UgfSBmcm9tICcuLi9hbGVydC9hbGVydC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQ29yZVBhZ2VMaXN0U2VydmljZSB9IGZyb20gJy4uL2NvcmUtcGFnZS1saXN0L2NvcmUtcGFnZS1saXN0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb3JlRm9ybVNlcnZpY2UgfSBmcm9tICcuLi9jb3JlLWZvcm0vY29yZS1mb3JtLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBJQ29yZUZvcm1TZWN0aW9uLCB9IGZyb20gJy4uL2NvcmUtZm9ybS9jb3JlLWZvcm0vZW51bS1pbnRlcmZhY2VzJztcclxuaW1wb3J0IHsgQ29yZUZvcm1Db21wb25lbnQsIElEeW5hbWljRm9ybUVtaXRPbkZvcm1DcmVhdGVkIH0gZnJvbSAnLi4vY29yZS1mb3JtL2NvcmUtZm9ybS9jb3JlLWZvcm0uY29tcG9uZW50JztcclxuaW1wb3J0IHsgRm9ybUdyb3VwLCBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgRW51bUNvcmVCdXR0b25WTlNDb2RlIH0gZnJvbSAnLi4vY29yZS1idXR0b24tZ3JvdXAtdm5zL2NvcmUtYnV0dG9uLWdyb3VwLXZucy9FbnVtQ29yZUJ1dHRvblZOU0NvZGUnO1xyXG5pbXBvcnQgeyBFbnVtVHJhbnNsYXRlS2V5IH0gZnJvbSBcImFscGhhLWdsb2JhbC1jb25zdGFudHNcIjtcclxuaW1wb3J0IHsgQ29tbW9uSHR0cFJlcXVlc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY29tbW9uLWh0dHAtcmVxdWVzdC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTXVsdGlMYW5ndWFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9tdWx0aS1sYW5ndWFnZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSHViQ29ubmVjdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9odWItY29ubmVjdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9hdXRoLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBVcmxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdXJsLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBSb3V0aW5nU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3JvdXRpbmcuc2VydmljZSc7XHJcbmltcG9ydCB7IElIdWJDb25uZWN0aW9uQWN0aXZpdHkgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL0lIdWJDb25uZWN0aW9uQWN0aXZpdHknO1xyXG5pbXBvcnQgeyBFbnVtU2lnbmFsUlR5cGUgfSBmcm9tICcuLi8uLi9lbnVtL0VudW1TaWduYWxSVHlwZSc7XHJcbmltcG9ydCB7IElGb3JtYXRlZFJlc3BvbnNlIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9JRm9ybWF0ZWRSZXNwb25zZSc7XHJcbmltcG9ydCB7IGFsZXJ0T3B0aW9ucywgbm9uZUF1dG9DbG9zZWRBbGVydE9wdGlvbnMgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvYWxlcnRPcHRpb25zJztcclxuaW1wb3J0IHsgSVN5c011dGF0aW9uTG9nQmVmb3JlQWZ0ZXJSZXF1ZXN0IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9JU3lzTXV0YXRpb25Mb2dCZWZvcmVBZnRlclJlcXVlc3QnO1xyXG5pbXBvcnQgeyBFbnVtRm9ybUJhc2VDb250b2xUeXBlIH0gZnJvbSAnLi4vLi4vZW51bS9FbnVtRm9ybUJhc2VDb250b2xUeXBlJztcclxuaW1wb3J0IHsgRW51bUNvcmVQYWdlRWRpdE1vZGUgfSBmcm9tICcuL0VudW1Db3JlUGFnZUVkaXRNb2RlJztcclxuaW1wb3J0IHsgSUNvcmVQYWdlRWRpdENSVUQgfSBmcm9tICcuL0lDb3JlUGFnZUVkaXRDUlVEJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlUGlwZSB9IGZyb20gJy4uLy4uL2FwcC1waXBlcy90cmFuc2xhdGUucGlwZSc7XHJcbmltcG9ydCB7IEZ1bGxzY3JlZW5Nb2RhbExvYWRlckNvbXBvbmVudCB9IGZyb20gJy4uL2Z1bGxzY3JlZW4tbW9kYWwtbG9hZGVyL2Z1bGxzY3JlZW4tbW9kYWwtbG9hZGVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENvcmVQYWdlSGVhZGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vY29yZS1wYWdlLWhlYWRlci9jb3JlLXBhZ2UtaGVhZGVyL2NvcmUtcGFnZS1oZWFkZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUmVzcG9uc2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcmVzcG9uc2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IEFwcENvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9hcHAtY29uZmlnLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBJQ29yZUJ1dHRvblZOUyB9IGZyb20gJy4uL2NvcmUtYnV0dG9uLWdyb3VwLXZucy9jb3JlLWJ1dHRvbi1ncm91cC12bnMvSUNvcmVCdXR0b25WTlMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdjb3JlLXBhZ2UtZWRpdCcsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgICBDb3JlRm9ybUNvbXBvbmVudCxcclxuICAgIFRyYW5zbGF0ZVBpcGUsXHJcbiAgICBGdWxsc2NyZWVuTW9kYWxMb2FkZXJDb21wb25lbnQsXHJcbiAgICBDb3JlUGFnZUhlYWRlckNvbXBvbmVudFxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NvcmUtcGFnZS1lZGl0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9jb3JlLXBhZ2UtZWRpdC5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29yZVBhZ2VFZGl0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcclxuICBASW5wdXQoKSBzdGF5QWZ0ZXJTdWJtaXQhOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIHdpZHRoITogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIGVudGl0eVRhYmxlITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGhhc0lkT2ZTdHJpbmdUeXBlITogYm9vbGVhbjtcclxuICBASW5wdXQoKSBjYXB0aW9uQ29kZSE6IHN0cmluZztcclxuICBASW5wdXQoKSBsZWZ0SW5wdXRTZWN0aW9ucyE6IElDb3JlRm9ybVNlY3Rpb25bXTtcclxuICBASW5wdXQoKSBsZWZ0SW5wdXRTZWN0aW9uc0ZsZXhTaXplITogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIHNlY3Rpb25zITogSUNvcmVGb3JtU2VjdGlvbltdO1xyXG4gIEBJbnB1dCgpIG5vcm1hbE1vZGUhOiBib29sZWFuOyAvLyB0aGlzIGFsbG93cyB0byBvcGVuIHRoZSBlZGl0IGZvcm0gYXMgdXN1YWwgbW9kZVxyXG4gIEBJbnB1dCgpIGJvdHRvbVRlbXBsYXRlUmVmITogVGVtcGxhdGVSZWY8YW55PjtcclxuICBASW5wdXQoKSBhdXRvR2V0QnlJZE9mZiE6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgYXV0b1N1Ym1pdExvZ2ljT2ZmITogYm9vbGVhbjtcclxuICBASW5wdXQoKSBhdXRvQ2FuY2VsTG9naWNPZmYhOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGN1c3RvbUZvcm1CdXR0b25JdGVtcyE6IEVudW1Db3JlQnV0dG9uVk5TQ29kZVtdO1xyXG4gIEBJbnB1dCgpIG1peGVkTW9kZSE6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgY2hlY2tFcnJvciQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcclxuICBASW5wdXQoKSBzaG93U2F2ZUJ1dHRvbiE6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgZGlzYWJsZVNhdmVCdXR0b24hOiBib29sZWFuO1xyXG5cclxuXHJcbiAgQE91dHB1dCgpIHN1Ym1pdExvZ2ljID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBvbkZvcm1DcmVhdGVkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBvblN1Ym1pdFN1Y2Nlc3MgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIG9uQnV0dG9uQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGNhbmNlbExvZ2ljID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBmb3JtITogRm9ybUdyb3VwO1xyXG5cclxuICBASW5wdXQoKSBjcnVkITogSUNvcmVQYWdlRWRpdENSVUQ7XHJcbiAgQElucHV0KCkgZW50aXR5VW5pcXVlSW5kZXhzOiBzdHJpbmdbXVtdID1cclxuICAgIFtdOyAvKiBGb3IgZXg6IFtbJ2lkJ10sIFsncHJvdmluY2VJZCcsICdkaXN0cmljQ29kZSddXSAgZXRjLi4uICovXHJcbiAgQE91dHB1dCgpIG9uSW5pdGlhbFZhbHVlU3RyaW5nUmVhZHkgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuXHJcbiAgQFZpZXdDaGlsZCgnY29udGFpbmVyJykgY29udGFpbmVyITogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdjb250YWluZXJCaWdnZXInKSBjb250YWluZXJCaWdnZXIhOiBFbGVtZW50UmVmO1xyXG5cclxuICBzZWN0aW9ucyQhOiBCZWhhdmlvclN1YmplY3Q8SUNvcmVGb3JtU2VjdGlvbltdPjtcclxuICBtb2RlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RW51bUNvcmVQYWdlRWRpdE1vZGU+KFxyXG4gICAgRW51bUNvcmVQYWdlRWRpdE1vZGUuQ1JFQVRFXHJcbiAgKTtcclxuXHJcbiAgY3VycmVudFZhbHVlOiBhbnk7XHJcbiAgaW5pdGlhbFZhbHVlITogc3RyaW5nO1xyXG4gIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XHJcblxyXG4gIGZyb21VcmwhOiBzdHJpbmc7XHJcbiAgbGlzdEluc3RhbmNlITogbnVtYmVyO1xyXG4gIGxvYWRpbmchOiBib29sZWFuO1xyXG5cclxuICBsYW5nITogc3RyaW5nO1xyXG5cclxuICBzdWJtaXRUZXh0ITogRW51bVRyYW5zbGF0ZUtleTtcclxuXHJcbiAgc2hvd0NhcHRpb25CdXR0b246IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBzY3JvbGwhOiBib29sZWFuO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcclxuICAgIHByaXZhdGUgY29yZVBhZ2VFZGl0U2VydmljZTogQ29yZVBhZ2VFZGl0U2VydmljZSxcclxuICAgIHByaXZhdGUgY29tbW9uSHR0cFJlcXVlc3RTZXJ2aWNlOiBDb21tb25IdHRwUmVxdWVzdFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGFuaW1hdGVkVGV4dFNlcnZpY2U6IEFuaW1hdGVkVGV4dFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG1sczogTXVsdGlMYW5ndWFnZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNvcmVGb3JtU2VydmljZTogQ29yZUZvcm1TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjb3JlUGFnZUxpc3RTZXJ2aWNlOiBDb3JlUGFnZUxpc3RTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBodWJDb25uZWN0aW9uU2VydmljZTogSHViQ29ubmVjdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSxcclxuICAgIHByaXZhdGUgYWxlcnRTZXJ2aWNlOiBBbGVydFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHVybFNlcnZpY2U6IFVybFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJvdXRpbmdTZXJ2aWNlOiBSb3V0aW5nU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVzcG9uc2VTZXJ2aWNlOiBSZXNwb25zZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGFwcENvbmZpZ1NlcnZpY2U6IEFwcENvbmZpZ1NlcnZpY2VcclxuICApIHtcclxuICAgIHRoaXMuZnJvbVVybCA9IHRoaXMuY29yZVBhZ2VFZGl0U2VydmljZS5mcm9tVXJsO1xyXG4gICAgdGhpcy5saXN0SW5zdGFuY2UgPSBOdW1iZXIoXHJcbiAgICAgIHRoaXMucm91dGUuc25hcHNob3QucGFyYW1NYXAuZ2V0KCdsaXN0SW5zdGFuY2UnKSFcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNlbmRTaWduYWwoZGF0YTogYW55KSB7XHJcbiAgICBjb25zdCBjb25uZWN0aW9uID0gdGhpcy5odWJDb25uZWN0aW9uU2VydmljZS5odWJDb25uZWN0aW9uJC52YWx1ZTtcclxuICAgIGlmICghIWNvbm5lY3Rpb24pIHtcclxuICAgICAgY29uc3QgbWVzc2FnZTogSUh1YkNvbm5lY3Rpb25BY3Rpdml0eSA9IHtcclxuICAgICAgICBzaWQ6IHRoaXMuYXV0aFNlcnZpY2UuZGF0YSQudmFsdWU/LmlkISxcclxuICAgICAgICB1c2VybmFtZTogdGhpcy5hdXRoU2VydmljZS5kYXRhJC52YWx1ZT8uZnVsbE5hbWUhLFxyXG4gICAgICAgIGF2YXRhcjogdGhpcy5hdXRoU2VydmljZS5kYXRhJC52YWx1ZT8uYXZhdGFyISxcclxuICAgICAgICBzaWduYWxUeXBlOiBFbnVtU2lnbmFsUlR5cGUuRU5USVRZX0NIQU5HRUQsXHJcbiAgICAgICAgbWVzc2FnZTogYCR7dGhpcy5hdXRoU2VydmljZS5kYXRhJC52YWx1ZVxyXG4gICAgICAgICAgPy51c2VyTmFtZSF9IGhhcyBjaGFuZ2VkIGVudGl0eSAke3RoaXMuZW50aXR5VGFibGV9YCxcclxuICAgICAgICBsb2dpblRpbWU6IHRoaXMuYXV0aFNlcnZpY2UuZGF0YSQudmFsdWU/LmxvZ2luVGltZSEsXHJcbiAgICAgICAgZGF0YTogbnVsbCxcclxuICAgICAgfTtcclxuICAgICAgY29ubmVjdGlvbi5pbnZva2UoJ1NlbmRNZXNzYWdlJywgbWVzc2FnZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuXHJcbiAgICB0aGlzLnNlY3Rpb25zJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SUNvcmVGb3JtU2VjdGlvbltdPih0aGlzLnNlY3Rpb25zKTtcclxuXHJcbiAgICBpZiAoISEhdGhpcy5lbnRpdHlUYWJsZSkge1xyXG4gICAgICBhbGVydChcclxuICAgICAgICAnUHJvcGVydHkgZW50aXR5VGFibGUgKG5hbWUpIGlzIHJlcXVpcmVkIGZvciBjb21wb25lbnQgJyArXHJcbiAgICAgICAgdGhpcy5jYXB0aW9uQ29kZVxyXG4gICAgICApO1xyXG4gICAgICBjb25zb2xlLmVycm9yKFxyXG4gICAgICAgICdQcm9wZXJ0eSBlbnRpdHlUYWJsZSAobmFtZSkgaXMgcmVxdWlyZWQgZm9yIGNvbXBvbmVudCAnICtcclxuICAgICAgICB0aGlzLmNhcHRpb25Db2RlXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICBpZiAoISF0aGlzLm5vcm1hbE1vZGUpIHtcclxuICAgICAgY29uc29sZS5sb2codGhpcy5jb250YWluZXIpXHJcbiAgICAgIHRoaXMuY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0td2lkdGgnLCAnMTAwJScpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKCEhdGhpcy53aWR0aCkge1xyXG4gICAgICAgIHRoaXMuY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoXHJcbiAgICAgICAgICAnLS13aWR0aCcsXHJcbiAgICAgICAgICB0aGlzLndpZHRoICsgJ3B4J1xyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5jb250YWluZXJCaWdnZXIubmF0aXZlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eShcclxuICAgICAgICAnLS1oZWlnaHQnLFxyXG4gICAgICAgICc5NSUnXHJcbiAgICAgIClcclxuICAgIH1cclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5zY3JvbGwgPSB0aGlzLmNvbnRhaW5lci5uYXRpdmVFbGVtZW50LnNjcm9sbEhlaWdodCA+IHRoaXMuY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0XHJcbiAgICB9KTtcclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgaWYgKCEhIXRoaXMubWl4ZWRNb2RlKSB7XHJcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgICAgICB0aGlzLnJvdXRlLnBhcmFtcy5zdWJzY3JpYmUoeCA9PiB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwidGhpcy5yb3V0ZS5wYXJhbXMuc3Vic2NyaWJlXCIsIHgpXHJcblxyXG4gICAgICAgICAgICBsZXQgaWQ6IHN0cmluZyA9ICcwJztcclxuICAgICAgICAgICAgaWYgKHRoaXMuaGFzSWRPZlN0cmluZ1R5cGUpIHtcclxuICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgaWQgPSBhdG9iKHhbJ2lkJ10pO1xyXG4gICAgICAgICAgICAgIH0gY2F0Y2ggeyByZXR1cm4gfVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICBpZCA9IE51bWJlcihhdG9iKHhbJ2lkJ10pKS50b1N0cmluZygpO1xyXG4gICAgICAgICAgICAgIH0gY2F0Y2ggeyByZXR1cm4gfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAoaWQgIT09ICcwJykge1xyXG4gICAgICAgICAgICAgIHRoaXMubW9kZSQubmV4dChFbnVtQ29yZVBhZ2VFZGl0TW9kZS5VUERBVEUpO1xyXG5cclxuICAgICAgICAgICAgICB0aGlzLnN1Ym1pdFRleHQgPSBFbnVtVHJhbnNsYXRlS2V5LlVJX0VESVRfRk9STV9CVVRUT05fU0FWRTtcclxuXHJcbiAgICAgICAgICAgICAgaWYgKCEhIXRoaXMuYXV0b0dldEJ5SWRPZmYpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgICAgICAgICAgICAgdGhpcy5jb3JlUGFnZUVkaXRTZXJ2aWNlLmdldEJ5SWQoaWQsIHRoaXMuY3J1ZC5yKS5zdWJzY3JpYmUoKHgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBib2R5OiBJRm9ybWF0ZWRSZXNwb25zZSA9IHguYm9keTtcclxuICAgICAgICAgICAgICAgICAgICAvL3RoaXMucmVzcG9uc2VTZXJ2aWNlLnJlc29sdmUoYm9keSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKChib2R5LnN0YXR1c0NvZGUgPSAyMDApKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAvKiAjcmVnaW9uIEV4Y2x1ZGUgc2VjdGlvbnMgd2l0aCBmbGFnIGFkZE1vZGVPbmx5PXRydWUgKi9cclxuICAgICAgICAgICAgICAgICAgICAgIGlmICghIWJvZHkuaW5uZXJCb2R5LmlkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlbW92ZSByZWxldmFudCBjb250cm9scyBmcm9tIGZvcm0gZ3JvdXBcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYWRkTW9kZU9ubHlTZWN0aW9ucyA9IHRoaXMuc2VjdGlvbnMuZmlsdGVyKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICh4KSA9PiAhIXguYWRkTW9kZU9ubHlcclxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYWRkTW9kZU9ubHlTZWN0aW9ucy5tYXAoKGFkZE1vZGVPbmx5U2VjdGlvbikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFkZE1vZGVPbmx5U2VjdGlvbi5yb3dzLm1hcCgoYWRkTW9kZU9ubHlSb3cpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZE1vZGVPbmx5Um93Lm1hcCgoYWRkTW9kZU9ubHlDb250cm9sKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5yZW1vdmVDb250cm9sKGFkZE1vZGVPbmx5Q29udHJvbC5maWVsZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyByZW1vdmUgcmVsZXZhbnQgY29udHJvbHMgZnJvbSBmb3JtIHNlY3Rpb25zXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5ld1NlY3Rpb25zID0gdGhpcy5zZWN0aW9ucy5maWx0ZXIoKHgpID0+ICEhIXguYWRkTW9kZU9ubHkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlY3Rpb25zID0gbmV3U2VjdGlvbnM7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VjdGlvbnMkLm5leHQodGhpcy5zZWN0aW9ucyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAvKiAjZW5kcmVnaW9uIEV4Y2x1ZGUgc2VjdGlvbnMgd2l0aCBmbGFnIGFkZE1vZGVPbmx5PXRydWUgKi9cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAvKiAjcmVnaW9uOiBBc3NpZ24gdmFsdWUgdG8gYXR0YWNobWVudCBmaWVsZHMgd2hlbiBjb250cm9sVHlwZSA9IEFUVEFDSE1FTlQgKi9cclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VjdGlvbnMubWFwKChzZWN0aW9uKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24ucm93cy5tYXAoKHJvdykgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJvdy5tYXAoKGNvbnRyb2wpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb250cm9sLmNvbnRyb2xUeXBlID09PSBFbnVtRm9ybUJhc2VDb250b2xUeXBlLkFUVEFDSE1FTlQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbC52YWx1ZVRvU2hvdyA9IGJvZHkuaW5uZXJCb2R5W2NvbnRyb2wuYXNzaWduVG8hXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgIC8qICNlbmRyZWdpb246IEFzc2lnbiB2YWx1ZSB0byBiYXNpYyBmaWVsZHMgd2hlbiBjb250cm9sVHlwZSA9IEFUVEFDSE1FTlQgKi9cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAvKiAjcmVnaW9uOiBVc2luZyBQYXRjaFZhbHVlIGluc3RlYWQgb2Ygc2V0VmFsdWUgKi9cclxuICAgICAgICAgICAgICAgICAgICAgIC8vIEZvcm1zIG9mdGVuIGhhdmUgZXh0cmEgaGVscGVyIGZpZWxkc1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgIC8vIHRodXMsIGlmIHdlIHVzZSBzZXRWYWx1ZSBtZXRob2QsIHRoZSBoZWxwZXIgZmllbGRzIHdpbGwgYmUgbG9zdDpcclxuICAgICAgICAgICAgICAgICAgICAgIC8vIHRoaXMuZm9ybS5zZXRWYWx1ZShib2R5LmlubmVyQm9keSlcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAvLyBzbywgd2UgdXNlIHBhdGNoVmFsdWUgbWV0aG9kIDpcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudFZhbHVlID0gYm9keS5pbm5lckJvZHk7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZSh0aGlzLmN1cnJlbnRWYWx1ZSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWN0aW9ucy5tYXAoKHNlY3Rpb24pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbi5yb3dzLm1hcCgocm93KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcm93Lm1hcCgoY29udHJvbCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bUZvcm1CYXNlQ29udG9sVHlwZS5TRUVLRVIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bUZvcm1CYXNlQ29udG9sVHlwZS5EUk9QRE9XTixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnVtRm9ybUJhc2VDb250b2xUeXBlLkNIRUNLTElTVCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXS5pbmNsdWRlcyhjb250cm9sLmNvbnRyb2xUeXBlKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghIXRoaXMuY3VycmVudFZhbHVlW2NvbnRyb2wuZmllbGRdKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc0Rldk1vZGUoKSAmJiAhISFjb250cm9sLmdldEJ5SWRBcGkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoY29udHJvbC5jb250cm9sVHlwZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEVudW1Gb3JtQmFzZUNvbnRvbFR5cGUuRFJPUERPV046XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEhIWNvbnRyb2wuZHJvcGRvd25PcHRpb25zJD8udmFsdWUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmVycm9yKGBnZXRCeUlkQXBpIG5vdCBwcm92aWRlZCBmb3IgJyR7Y29udHJvbC5maWVsZH0nYCwgbm9uZUF1dG9DbG9zZWRBbGVydE9wdGlvbnMpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEVudW1Gb3JtQmFzZUNvbnRvbFR5cGUuQ0hFQ0tMSVNUOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghISFjb250cm9sLmNoZWNrbGlzdE9wdGlvbnMkPy52YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hbGVydFNlcnZpY2UuZXJyb3IoYGdldEJ5SWRBcGkgbm90IHByb3ZpZGVkIGZvciAnJHtjb250cm9sLmZpZWxkfSdgLCBub25lQXV0b0Nsb3NlZEFsZXJ0T3B0aW9ucylcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hbGVydFNlcnZpY2UuZXJyb3IoYGdldEJ5SWRBcGkgbm90IHByb3ZpZGVkIGZvciAnJHtjb250cm9sLmZpZWxkfSdgLCBub25lQXV0b0Nsb3NlZEFsZXJ0T3B0aW9ucylcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uSHR0cFJlcXVlc3RTZXJ2aWNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5tYWtlR2V0UmVxdWVzdChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ2V0QnlJZCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbC5nZXRCeUlkQXBpICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgP2lkPSR7dGhpcy5jdXJyZW50VmFsdWVbY29udHJvbC5maWVsZF19YFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKHgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcImZvcm0gZ2V0QnlJZCByZXN1bHQ6IFwiLCB0aGlzLmN1cnJlbnRWYWx1ZSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoeC5vayAmJiB4LnN0YXR1cyA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBib2R5OiBJRm9ybWF0ZWRSZXNwb25zZSA9IHguYm9keTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChib2R5LnN0YXR1c0NvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sLmdldEJ5SWRPYmplY3QkPy5uZXh0KGJvZHkuaW5uZXJCb2R5KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2wuZ2V0QnlJZE9iamVjdCQ/Lm5leHQobnVsbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29udHJvbC5jb250cm9sVHlwZSA9PT0gRW51bUZvcm1CYXNlQ29udG9sVHlwZS5TRUVLRVIgJiYgY29udHJvbC5tdWx0aU1vZGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbC5vYmplY3RMaXN0JD8ubmV4dChib2R5LmlubmVyQm9keVtjb250cm9sLmdldE9iamVjdExpc3RGcm9tIV0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VjdGlvbnMkLm5leHQodGhpcy5zZWN0aW9ucyk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgLyogI2VuZHJlZ2lvbjogVXNpbmcgUGF0Y2hWYWx1ZSBpbnN0ZWFkIG9mIHNldFZhbHVlICovXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIC8vIHJldHVybiBpbml0Rm9ybVZhbHVlU3RyaW5nIHRvIHRoZSBjYWxsZXJcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uSW5pdGlhbFZhbHVlU3RyaW5nUmVhZHkuZW1pdChcclxuICAgICAgICAgICAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KHRoaXMuZm9ybS5nZXRSYXdWYWx1ZSgpKVxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLm1vZGUkLm5leHQoRW51bUNvcmVQYWdlRWRpdE1vZGUuQ1JFQVRFKTtcclxuICAgICAgICAgICAgICB0aGlzLnN1Ym1pdFRleHQgPSBFbnVtVHJhbnNsYXRlS2V5LlVJX0VESVRfRk9STV9CVVRUT05fQUREO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIClcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgICB0aGlzLm1scy5sYW5nJC5zdWJzY3JpYmUoeCA9PiB0aGlzLmxhbmcgPSB4KVxyXG4gICAgICApXHJcbiAgICB9KVxyXG5cclxuICB9XHJcblxyXG4gIHByaXZhdGUgdG9nZ2xlUmVsb2FkRmxhZ0ZvclRoZUNhbGxlcihpZDogbnVtYmVyKTogdm9pZCB7XHJcblxyXG4gICAgY29uc3QgaW5zdGFuY2VzRmlsdGVyID0gdGhpcy5jb3JlUGFnZUxpc3RTZXJ2aWNlLmluc3RhbmNlcy5maWx0ZXIoXHJcbiAgICAgICh4KSA9PiB4Lmluc3RhbmNlTnVtYmVyID09PSB0aGlzLmxpc3RJbnN0YW5jZVxyXG4gICAgKTtcclxuICAgIGlmICghIWluc3RhbmNlc0ZpbHRlci5sZW5ndGgpIHtcclxuICAgICAgY29uc3QgaW5zdGFuY2UgPSBpbnN0YW5jZXNGaWx0ZXJbMF07XHJcbiAgICAgIGluc3RhbmNlLmlkJC5uZXh0KGlkKTtcclxuICAgICAgLy9pZiAoISEhdGhpcy5ub3JtYWxNb2RlKSBpbnN0YW5jZS5yZWxvYWRGbGFnJD8ubmV4dCghaW5zdGFuY2UucmVsb2FkRmxhZyQudmFsdWUpO1xyXG5cclxuICAgICAgaWYgKGlzRGV2TW9kZSgpKSB7XHJcbiAgICAgICAgdGhpcy5hbGVydFNlcnZpY2UuaW5mbyhgQ29yZVBhZ2VMaXN0IGluc3RhbmNlIG51bWJlciAke3RoaXMubGlzdEluc3RhbmNlfSBjdXJyZW50IGlkIGlzOiAke2luc3RhbmNlLmlkJC52YWx1ZX1gLCBhbGVydE9wdGlvbnMpXHJcbiAgICAgIH1cclxuXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAoaXNEZXZNb2RlKCkpIHtcclxuICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5pbmZvKGBDb3JlUGFnZUxpc3QgaW5zdGFuY2VzIGRvIG5vdCBpbmNsdWRlIG51bWJlciAke3RoaXMubGlzdEluc3RhbmNlfWAsIGFsZXJ0T3B0aW9ucylcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25Ob3RPazIwMFJlc3BvbnNlKHg6IG9iamVjdCk6IHZvaWQge1xyXG4gICAgaWYgKGlzRGV2TW9kZSgpKSB7XHJcbiAgICAgIGlmIChPYmplY3Qua2V5cyh4KS5sZW5ndGggPT09IDApIHtcclxuICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5lcnJvcihcIk5vIHJlc3BvbnNlIGNvbnRlbnQuIEl0IHdhcyBwb3NzaWJseSBhIENPUlMgZXJyb3IuXCIsIG5vbmVBdXRvQ2xvc2VkQWxlcnRPcHRpb25zKVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIC8vdGhpcy5hbGVydFNlcnZpY2UuZXJyb3IoSlNPTi5zdHJpbmdpZnkoeCwgbnVsbCwgMiksIG5vbmVBdXRvQ2xvc2VkQWxlcnRPcHRpb25zKVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvblN1Ym1pdCgpOiB2b2lkIHtcclxuXHJcbiAgICAvKiBJRiBpZCBpcyBmYWxzeSA9PiBDUkVBVCwgb3RoZXJ3aXNlIFVQREFURSAqL1xyXG5cclxuICAgIC8qIEZPUiBDT05UUk9MIE9GIFRZUEUgR1JJREJVRkZFUiwgU0VUIEVWRVJZIGlkIFRPIE5VTEwgKi9cclxuICAgIHRoaXMuc2VjdGlvbnMubWFwKHNlY3Rpb24gPT4ge1xyXG4gICAgICBzZWN0aW9uLnJvd3MubWFwKHJvdyA9PiB7XHJcbiAgICAgICAgcm93Lm1hcChjb250cm9sID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKGNvbnRyb2wuY29udHJvbFR5cGUpXHJcbiAgICAgICAgICBpZiAoY29udHJvbC5jb250cm9sVHlwZSA9PT0gRW51bUZvcm1CYXNlQ29udG9sVHlwZS5HUklEQlVGRkVSKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGFic3RyYWN0Q29udHJvbCA9IHRoaXMuZm9ybS5nZXQoY29udHJvbC5maWVsZCk/LnZhbHVlO1xyXG4gICAgICAgICAgICAvLyBUTyBETyAxNy8wOC8yMDIzID09PT09PT09PT09XHJcbiAgICAgICAgICAgIGFic3RyYWN0Q29udHJvbD8udmFsdWU/Lm1hcCgoeDogYW55KSA9PiB4LmlkID0gbnVsbCk7XHJcbiAgICAgICAgICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICB9KVxyXG4gICAgfSlcclxuXHJcbiAgICBpZiAoISF0aGlzLm1peGVkTW9kZSkge1xyXG4gICAgICB0aGlzLnN1Ym1pdExvZ2ljLmVtaXQoXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbW9kZTogdGhpcy5mb3JtLmdldCgnZWRpdE1vZGUnKT8udmFsdWUsXHJcbiAgICAgICAgICBmb3JtVmFsdWU6IHRoaXMuZm9ybS5nZXRSYXdWYWx1ZSgpXHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCEhdGhpcy5hdXRvU3VibWl0TG9naWNPZmYpIHtcclxuICAgICAgLy8gRE8geW91ciBsb2dpYyBoZXJlXHJcbiAgICAgIHRoaXMuc3VibWl0TG9naWMuZW1pdChKU09OLnN0cmluZ2lmeSh0aGlzLmZvcm0uZ2V0UmF3VmFsdWUoKSkpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgZWxzZSBpZiAoISEhdGhpcy5mb3JtLmdldCgnaWQnKSEudmFsdWUpIHtcclxuICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuXHJcbiAgICAgIGNvbnN0IHN5c011dGF0aW9uTG9nQmVmb3JlQWZ0ZXJSZXF1ZXN0OiBJU3lzTXV0YXRpb25Mb2dCZWZvcmVBZnRlclJlcXVlc3QgPSB7XHJcbiAgICAgICAgc3lzRnVuY3Rpb25Db2RlOiB0aGlzLnJvdXRpbmdTZXJ2aWNlLmN1cnJlbnRGdW5jdGlvbiQudmFsdWU/LmNvZGUgfHwgJ1VOREVGSU5FRCcsXHJcbiAgICAgICAgc3lzQWN0aW9uQ29kZTogRW51bUNvcmVCdXR0b25WTlNDb2RlLkhFQURFUl9DUkVBVEUsXHJcbiAgICAgICAgYmVmb3JlOiBKU09OLnN0cmluZ2lmeSh0aGlzLmN1cnJlbnRWYWx1ZSkgPz8gJ1wiXCInLFxyXG4gICAgICAgIGFmdGVyOiBKU09OLnN0cmluZ2lmeSh0aGlzLmZvcm0uZ2V0UmF3VmFsdWUoKSksXHJcbiAgICAgICAgdXNlcm5hbWU6IHRoaXMuYXV0aFNlcnZpY2UuZGF0YSQudmFsdWU/LnVzZXJOYW1lIVxyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLmFuaW1hdGVkVGV4dFNlcnZpY2UudGV4dCQubmV4dChcclxuICAgICAgICB0aGlzLm1scy50cmFucyhFbnVtVHJhbnNsYXRlS2V5LlVJX0RJQUxPR19BRERJTkdfUExFQVNFX1dBSVQpXHJcbiAgICAgICk7XHJcblxyXG4gICAgICB0aGlzLmNvbW1vbkh0dHBSZXF1ZXN0U2VydmljZVxyXG4gICAgICAgIC5tYWtlUG9zdFJlcXVlc3QoXHJcbiAgICAgICAgICAnY3JlYXRlICcgKyB0aGlzLmVudGl0eVRhYmxlLFxyXG4gICAgICAgICAgdGhpcy5jcnVkLmMhLFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICAuLi50aGlzLmZvcm0uZ2V0UmF3VmFsdWUoKSxcclxuICAgICAgICAgICAgc3lzTXV0YXRpb25Mb2dCZWZvcmVBZnRlclJlcXVlc3QsXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKHgpID0+IHtcclxuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgaWYgKHgub2sgJiYgeC5zdGF0dXMgPT09IDIwMCkge1xyXG4gICAgICAgICAgICBjb25zdCBib2R5OiBJRm9ybWF0ZWRSZXNwb25zZSA9IHguYm9keTtcclxuICAgICAgICAgICAgLy90aGlzLnJlc3BvbnNlU2VydmljZS5yZXNvbHZlKGJvZHkpO1xyXG4gICAgICAgICAgICBpZiAoYm9keS5zdGF0dXNDb2RlID09PSAyMDApIHtcclxuICAgICAgICAgICAgICBpZiAoaXNEZXZNb2RlKCkpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VuZFNpZ25hbChib2R5LmlubmVyQm9keSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm9uU3VibWl0U3VjY2Vzcy5lbWl0KHRydWUpO1xyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgdGhpcy5vbkluaXRpYWxWYWx1ZVN0cmluZ1JlYWR5LmVtaXQoXHJcbiAgICAgICAgICAgICAgICBKU09OLnN0cmluZ2lmeSh0aGlzLmZvcm0uZ2V0UmF3VmFsdWUoKSlcclxuICAgICAgICAgICAgICApO1xyXG5cclxuICAgICAgICAgICAgICAvKlxyXG4gICAgICAgICAgICAgIFRyYW5zZmVyIG5ld2x5IGNyZWF0ZWQgcmVjb3JkIGlkXHJcbiAgICAgICAgICAgICovXHJcbiAgICAgICAgICAgICAgdGhpcy50b2dnbGVSZWxvYWRGbGFnRm9yVGhlQ2FsbGVyKGJvZHkuaW5uZXJCb2R5LmlkKTtcclxuICAgICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy4uLyddLCB7IC8qIGV4cGVyaW1lbnQqLyByZXBsYWNlVXJsOiB0cnVlLCByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlLCBzdGF0ZTogeyBpZDogYm9keS5pbm5lckJvZHkuaWQsIGluc3RhbmNlTnVtYmVyOiB0aGlzLmxpc3RJbnN0YW5jZSB9IH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLm9uTm90T2syMDBSZXNwb25zZSh4KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcblxyXG4gICAgICBjb25zdCBzeXNNdXRhdGlvbkxvZ0JlZm9yZUFmdGVyUmVxdWVzdDogSVN5c011dGF0aW9uTG9nQmVmb3JlQWZ0ZXJSZXF1ZXN0ID0ge1xyXG4gICAgICAgIHN5c0Z1bmN0aW9uQ29kZTogdGhpcy5yb3V0aW5nU2VydmljZS5jdXJyZW50RnVuY3Rpb24kLnZhbHVlPy5jb2RlIHx8ICdVTkRFRklORUQnLFxyXG4gICAgICAgIHN5c0FjdGlvbkNvZGU6IEVudW1Db3JlQnV0dG9uVk5TQ29kZS5IRUFERVJfU0FWRSxcclxuICAgICAgICBiZWZvcmU6IEpTT04uc3RyaW5naWZ5KHRoaXMuY3VycmVudFZhbHVlKSA/PyAnXCJcIicsXHJcbiAgICAgICAgYWZ0ZXI6IEpTT04uc3RyaW5naWZ5KHRoaXMuZm9ybS5nZXRSYXdWYWx1ZSgpKSxcclxuICAgICAgICB1c2VybmFtZTogdGhpcy5hdXRoU2VydmljZS5kYXRhJC52YWx1ZT8udXNlck5hbWUhXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IGExID0gdGhpcy5jb3JlRm9ybVNlcnZpY2UuZ2V0QWxsRm9ybUJhc2VDb250cm9sTmFtZXModGhpcy5sZWZ0SW5wdXRTZWN0aW9ucz8uZmlsdGVyKHggPT4gIXguaGlkZGVuKSk7XHJcbiAgICAgIGNvbnN0IGEyID0gdGhpcy5jb3JlRm9ybVNlcnZpY2UuZ2V0QWxsRm9ybUJhc2VDb250cm9sTmFtZXModGhpcy5zZWN0aW9ucz8uZmlsdGVyKHggPT4gIXguaGlkZGVuKSk7XHJcbiAgICAgIGNvbnN0IGFjdHVhbEZvcm1EZWNsYXJlZEZpZWxkcyA9IFsuLi5hMSwgLi4uYTJdO1xyXG5cclxuICAgICAgdGhpcy5hbmltYXRlZFRleHRTZXJ2aWNlLnRleHQkLm5leHQoXHJcbiAgICAgICAgdGhpcy5tbHMudHJhbnMoRW51bVRyYW5zbGF0ZUtleS5VSV9ESUFMT0dfVVBEQVRJTkdfUExFQVNFX1dBSVQpXHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMuY29tbW9uSHR0cFJlcXVlc3RTZXJ2aWNlXHJcbiAgICAgICAgLm1ha2VQb3N0UmVxdWVzdChcclxuICAgICAgICAgICd1cGRhdGUgJyArIHRoaXMuZW50aXR5VGFibGUsXHJcbiAgICAgICAgICB0aGlzLmNydWQudSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgLi4udGhpcy5mb3JtLmdldFJhd1ZhbHVlKCksXHJcbiAgICAgICAgICAgIHN5c011dGF0aW9uTG9nQmVmb3JlQWZ0ZXJSZXF1ZXN0LFxyXG4gICAgICAgICAgICBhY3R1YWxGb3JtRGVjbGFyZWRGaWVsZHNcclxuICAgICAgICAgIH1cclxuICAgICAgICApXHJcbiAgICAgICAgLnN1YnNjcmliZSgoeCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICBpZiAoeC5vayAmJiB4LnN0YXR1cyA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGJvZHk6IElGb3JtYXRlZFJlc3BvbnNlID0geC5ib2R5O1xyXG4gICAgICAgICAgICAvL3RoaXMucmVzcG9uc2VTZXJ2aWNlLnJlc29sdmUoYm9keSk7XHJcbiAgICAgICAgICAgIGlmIChib2R5LnN0YXR1c0NvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgICAgIGlmIChpc0Rldk1vZGUoKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZW5kU2lnbmFsKGJvZHkuaW5uZXJCb2R5KTtcclxuICAgICAgICAgICAgICAgIHRoaXMub25TdWJtaXRTdWNjZXNzLmVtaXQodHJ1ZSk7XHJcbiAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICB0aGlzLm9uSW5pdGlhbFZhbHVlU3RyaW5nUmVhZHkuZW1pdChcclxuICAgICAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KHRoaXMuZm9ybS5nZXRSYXdWYWx1ZSgpKVxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgLypcclxuICAgICAgICAgICAgICBUcmFuc2ZlciBjdXJyZW50IHJlY29yZCBpZFxyXG4gICAgICAgICAgICAqL1xyXG4gICAgICAgICAgICAgIHRoaXMudG9nZ2xlUmVsb2FkRmxhZ0ZvclRoZUNhbGxlcihib2R5LmlubmVyQm9keS5pZCk7XHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuYXBwQ29uZmlnU2VydmljZS5BUFBfVFlQRSA9PT0gXCJNT0JJTEVcIikge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycuLi8nXSwgeyAvKiBleHBlcmltZW50Ki8gcmVwbGFjZVVybDogdHJ1ZSwgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSwgc3RhdGU6IHsgaWQ6IGJvZHkuaW5uZXJCb2R5LmlkLCBpbnN0YW5jZU51bWJlcjogdGhpcy5saXN0SW5zdGFuY2UgfSB9KTsgIFxyXG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5hcHBDb25maWdTZXJ2aWNlLkFQUF9UWVBFID09PSBcIldFQkFQUFwiKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy4uLyddLCB7IHJlbGF0aXZlVG86IHRoaXMucm91dGUsIHN0YXRlOiB7IGlkOiBib2R5LmlubmVyQm9keS5pZCwgaW5zdGFuY2VOdW1iZXI6IHRoaXMubGlzdEluc3RhbmNlIH0gfSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLm9uTm90T2syMDBSZXNwb25zZSh4KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICAvKipcclxuICAgKiBcclxuICAgKiBQSMavxqBORyBUSOG7qEMgTsOAWSDEkMav4buiQyBU4bqgTyBSQSBLSEkgREVWIFZOUy1QT1JUQUxcclxuICAgKi9cclxuXHJcbiAgb25TYXZlKGU6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMuYW5pbWF0ZWRUZXh0U2VydmljZS50ZXh0JC5uZXh0KFxyXG4gICAgICB0aGlzLm1scy50cmFucyhFbnVtVHJhbnNsYXRlS2V5LlVJX0RJQUxPR19BRERJTkdfUExFQVNFX1dBSVQpXHJcbiAgICApO1xyXG4gICAgaWYgKCEhdGhpcy5hcHBDb25maWdTZXJ2aWNlLkRFQlVHX0VOQUJMRUQpIHtcclxuICAgICAgYWxlcnQoSlNPTi5zdHJpbmdpZnkoZSwgbnVsbCwgMikpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jb21tb25IdHRwUmVxdWVzdFNlcnZpY2VcclxuICAgICAgLm1ha2VQb3N0UmVxdWVzdChcclxuICAgICAgICAnY3JlYXRlICcgKyB0aGlzLmVudGl0eVRhYmxlLFxyXG4gICAgICAgIHRoaXMuY3J1ZC5zISxcclxuICAgICAgICBlXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZSgoeCkgPT4ge1xyXG4gICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIGNvbnN0IGJvZHk6IElGb3JtYXRlZFJlc3BvbnNlID0geC5ib2R5O1xyXG4gICAgICAgIHRoaXMucmVzcG9uc2VTZXJ2aWNlLnJlc29sdmUoYm9keSk7XHJcbiAgICAgICAgaWYgKHgub2sgJiYgeC5zdGF0dXMgPT09IDIwMCAmJiBib2R5LnN0YXR1c0NvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgaWYgKGlzRGV2TW9kZSgpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VuZFNpZ25hbChib2R5LmlubmVyQm9keSk7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgdGhpcy5vbkluaXRpYWxWYWx1ZVN0cmluZ1JlYWR5LmVtaXQoXHJcbiAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KGUpXHJcbiAgICAgICAgICApO1xyXG5cclxuICAgICAgICAgIC8qXHJcbiAgICAgICAgICBUcmFuc2ZlciBuZXdseSBjcmVhdGVkIHJlY29yZCBpZFxyXG4gICAgICAgICAgKi9cclxuICAgICAgICAgIHRoaXMudG9nZ2xlUmVsb2FkRmxhZ0ZvclRoZUNhbGxlcihib2R5LmlubmVyQm9keS5pZCk7XHJcblxyXG4gICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCh0aGlzLnVybFNlcnZpY2UucHJldmlvdXNSb3V0ZVVybCQudmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBvbkNhbmNlbCgpOiB2b2lkIHtcclxuICAgIGlmICghIXRoaXMuYXV0b0NhbmNlbExvZ2ljT2ZmKSB7XHJcbiAgICAgIHRoaXMuY2FuY2VsTG9naWMuZW1pdCh0cnVlKTtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgICBpZiAoISF0aGlzLnVybFNlcnZpY2UucHJldmlvdXNSb3V0ZVVybCQudmFsdWUubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwodGhpcy51cmxTZXJ2aWNlLnByZXZpb3VzUm91dGVVcmwkLnZhbHVlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnLi4vJ10sIHsgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGJ1dHRvbkNsaWNrKGU6IElDb3JlQnV0dG9uVk5TKSB7XHJcbiAgICB0aGlzLm9uQnV0dG9uQ2xpY2suZW1pdChlKTtcclxuICB9XHJcblxyXG4gIG9uRm9ybUNyZWF0ZWRMb2NhbChlOiBJRHluYW1pY0Zvcm1FbWl0T25Gb3JtQ3JlYXRlZCk6IHZvaWQge1xyXG4gICAgdGhpcy5mb3JtID0gZS5mb3JtR3JvdXA7XHJcbiAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZSh0aGlzLmN1cnJlbnRWYWx1ZSk7XHJcbiAgICB0aGlzLm9uRm9ybUNyZWF0ZWQuZW1pdCh0aGlzLmZvcm0pO1xyXG5cclxuICAgIC8vIE5vdyB3ZSBjYW4gcmV0dXJuIGluaXRGb3JtVmFsdWVTdHJpbmcgdG8gdGhlIGNhbGxlclxyXG4gICAgdGhpcy5vbkluaXRpYWxWYWx1ZVN0cmluZ1JlYWR5LmVtaXQoXHJcbiAgICAgIEpTT04uc3RyaW5naWZ5KHRoaXMuZm9ybS5nZXRSYXdWYWx1ZSgpKVxyXG4gICAgKTtcclxuICB9XHJcbn1cclxuIiwiQGlmICghIW5vcm1hbE1vZGUpIHtcclxuPGRpdiAjY29udGFpbmVyIGNsYXNzPVwiY29yZS1wYWdlLWVkaXQtY29udGFpbmVyXCI+XHJcbiAgICA8ZGl2IFtuZ1N0eWxlXT1cInsgbWFyZ2luOiAnMHB4IDI0cHgnIH1cIj5cclxuICAgICAgICA8Y29yZS1wYWdlLWhlYWRlciBbdGl0bGVdPVwiY2FwdGlvbkNvZGVcIiBbaGlkZUJ1dHRvbkdyb3VwXT1cInRydWVcIj48L2NvcmUtcGFnZS1oZWFkZXI+XHJcbiAgICA8L2Rpdj5cclxuICAgIEBpZiAoISFzZWN0aW9ucy5sZW5ndGgpIHtcclxuICAgIDxjb3JlLWZvcm0gW2Zvcm1OYW1lXT1cIidmb3JtJ1wiIFtzdWJtaXRUZXh0XT1cInN1Ym1pdFRleHRcIiBbc2hvd0NhcHRpb25CdXR0b25dPVwic2hvd0NhcHRpb25CdXR0b25cIlxyXG4gICAgICAgIFtsZWZ0SW5wdXRTZWN0aW9uc109XCJsZWZ0SW5wdXRTZWN0aW9uc1wiIFtsZWZ0SW5wdXRTZWN0aW9uc0ZsZXhTaXplXT1cImxlZnRJbnB1dFNlY3Rpb25zRmxleFNpemVcIlxyXG4gICAgICAgIFtpbnB1dFNlY3Rpb25zXT1cInNlY3Rpb25zXCIgW21vZGUkXT1cIm1vZGUkXCIgW2JvdHRvbVRlbXBsYXRlUmVmXT1cImJvdHRvbVRlbXBsYXRlUmVmXCJcclxuICAgICAgICBbY3VzdG9tRm9ybUJ1dHRvbkl0ZW1zXT1cImN1c3RvbUZvcm1CdXR0b25JdGVtc1wiIFtkaXNhYmxlU2F2ZUJ1dHRvbl09XCJkaXNhYmxlU2F2ZUJ1dHRvblwiXHJcbiAgICAgICAgW2NoZWNrRXJyb3IkXT1cImNoZWNrRXJyb3IkXCIgKG9uRm9ybUNyZWF0ZWQpPVwib25Gb3JtQ3JlYXRlZExvY2FsKCRldmVudClcIiAob25TdWJtaXQpPVwib25TdWJtaXQoKVwiXHJcbiAgICAgICAgKG9uU2F2ZSk9XCJvblNhdmUoJGV2ZW50KVwiIChidXR0b25DbGljayk9XCJidXR0b25DbGljaygkZXZlbnQpXCIgKG9uQ2FuY2FsKT1cIm9uQ2FuY2VsKClcIj48L2NvcmUtZm9ybT5cclxuICAgIH1cclxuPC9kaXY+XHJcbn0gQGVsc2Uge1xyXG48ZGl2IGNsYXNzPVwibW9kYWwtY29udGFpbmVyXCIgW25nU3R5bGVdPVwie1xyXG4gICAgICAgIG92ZXJmbG93WTogJ3Njcm9sbCdcclxuICAgIH1cIj5cclxuICAgIDxkaXYgI2NvbnRhaW5lckJpZ2dlciBjbGFzcz1cIm1vZGFsLWNvbnRlbnRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY3VzdG9tLWhlYWRlci1wb3B1cFwiPlxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cImZlYXRoZXIteFwiIChjbGljayk9XCJvbkNhbmNlbCgpXCI+PC9pPlxyXG4gICAgICAgICAgICA8ZGl2IFtuZ1N0eWxlXT1cInsgbWFyZ2luOiAnMHB4IDI0cHgnIH1cIj5cclxuICAgICAgICAgICAgICAgIDxjb3JlLXBhZ2UtaGVhZGVyIFt0aXRsZV09XCJjYXB0aW9uQ29kZVwiIFtoaWRlQnV0dG9uR3JvdXBdPVwidHJ1ZVwiPjwvY29yZS1wYWdlLWhlYWRlcj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiAjY29udGFpbmVyIGNsYXNzPVwiY29yZS1wYWdlLWVkaXQtY29udGFpbmVyIG5vdC1ub3JtYWwtbW9kZVwiIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgIG92ZXJmbG93OiAndmlzaWJsZSdcclxuICAgICAgICAgICAgfVwiPlxyXG4gICAgICAgICAgICBAaWYgKCEhc2VjdGlvbnMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIDxjb3JlLWZvcm0gW2Zvcm1OYW1lXT1cIidmb3JtJ1wiIFtzdWJtaXRUZXh0XT1cInN1Ym1pdFRleHRcIiBbc2hvd0NhcHRpb25CdXR0b25dPVwic2hvd0NhcHRpb25CdXR0b25cIlxyXG4gICAgICAgICAgICAgICAgW2xlZnRJbnB1dFNlY3Rpb25zXT1cImxlZnRJbnB1dFNlY3Rpb25zXCIgW2xlZnRJbnB1dFNlY3Rpb25zRmxleFNpemVdPVwibGVmdElucHV0U2VjdGlvbnNGbGV4U2l6ZVwiXHJcbiAgICAgICAgICAgICAgICBbaW5wdXRTZWN0aW9uc109XCJzZWN0aW9uc1wiIFttb2RlJF09XCJtb2RlJFwiIFtjdXN0b21Gb3JtQnV0dG9uSXRlbXNdPVwiY3VzdG9tRm9ybUJ1dHRvbkl0ZW1zXCJcclxuICAgICAgICAgICAgICAgIFtkaXNhYmxlU2F2ZUJ1dHRvbl09XCJkaXNhYmxlU2F2ZUJ1dHRvblwiIFtjaGVja0Vycm9yJF09XCJjaGVja0Vycm9yJFwiXHJcbiAgICAgICAgICAgICAgICAob25Gb3JtQ3JlYXRlZCk9XCJvbkZvcm1DcmVhdGVkTG9jYWwoJGV2ZW50KVwiIChvblN1Ym1pdCk9XCJvblN1Ym1pdCgpXCIgKG9uU2F2ZSk9XCJvblNhdmUoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAob25DYW5jYWwpPVwib25DYW5jZWwoKVwiPjwvY29yZS1mb3JtPlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+XHJcbn1cclxuQGlmIChsb2FkaW5nKSB7XHJcbjxhcHAtZnVsbHNjcmVlbi1tb2RhbC1sb2FkZXI+PC9hcHAtZnVsbHNjcmVlbi1tb2RhbC1sb2FkZXI+XHJcbn0iXX0=
|
|
502
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS1wYWdlLWVkaXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWhpc3RhZmYtYWxwaGEvc3JjL2xpYi9hcHAvbGlicmFyaWVzL2NvcmUtcGFnZS1lZGl0L2NvcmUtcGFnZS1lZGl0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1oaXN0YWZmLWFscGhhL3NyYy9saWIvYXBwL2xpYnJhcmllcy9jb3JlLXBhZ2UtZWRpdC9jb3JlLXBhZ2UtZWRpdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBeUIsTUFBTSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsU0FBUyxHQUE0QixNQUFNLGVBQWUsQ0FBQztBQU85SSxPQUFPLEVBQUUsZUFBZSxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUlyRCxPQUFPLEVBQUUsaUJBQWlCLEVBQWlDLE1BQU0sNENBQTRDLENBQUM7QUFDOUcsT0FBTyxFQUFhLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHNFQUFzRSxDQUFDO0FBQzdHLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBUTFELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUU3RCxPQUFPLEVBQUUsWUFBWSxFQUFFLDBCQUEwQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFeEYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDM0UsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFOUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8s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O3dCQUNQLFlBQVk7d0JBQ1osV0FBVzt3QkFDWCxtQkFBbUI7d0JBQ25CLGlCQUFpQjt3QkFDakIsYUFBYTt3QkFDYiw4QkFBOEI7d0JBQzlCLHVCQUF1QjtxQkFDeEI7c2dCQUtRLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLHlCQUF5QjtzQkFBakMsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csa0JBQWtCO3NCQUExQixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFDRyxxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUdJLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxlQUFlO3NCQUF4QixNQUFNO2dCQUNHLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTTtnQkFJRSxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csa0JBQWtCO3NCQUExQixLQUFLO2dCQUVJLHlCQUF5QjtzQkFBbEMsTUFBTTtnQkFFaUIsU0FBUztzQkFBaEMsU0FBUzt1QkFBQyxXQUFXO2dCQUNRLGVBQWU7c0JBQTVDLFNBQVM7dUJBQUMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgaXNEZXZNb2RlLCBWaWV3Q2hpbGQsIEVsZW1lbnRSZWYsIFRlbXBsYXRlUmVmLCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBSb3V0ZXIsIEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuXHJcbmltcG9ydCB7IENvcmVQYWdlRWRpdFNlcnZpY2UgfSBmcm9tICcuL2NvcmUtcGFnZS1lZGl0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBbmltYXRlZFRleHRTZXJ2aWNlIH0gZnJvbSAnLi4vYW5pbWF0ZWQtdGV4dC9hbmltYXRlZC10ZXh0LnNlcnZpY2UnO1xyXG5cclxuaW1wb3J0IHsgQWxlcnRTZXJ2aWNlIH0gZnJvbSAnLi4vYWxlcnQvYWxlcnQuc2VydmljZSc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IENvcmVQYWdlTGlzdFNlcnZpY2UgfSBmcm9tICcuLi9jb3JlLXBhZ2UtbGlzdC9jb3JlLXBhZ2UtbGlzdC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29yZUZvcm1TZXJ2aWNlIH0gZnJvbSAnLi4vY29yZS1mb3JtL2NvcmUtZm9ybS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSUNvcmVGb3JtU2VjdGlvbiwgfSBmcm9tICcuLi9jb3JlLWZvcm0vY29yZS1mb3JtL2VudW0taW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7IENvcmVGb3JtQ29tcG9uZW50LCBJRHluYW1pY0Zvcm1FbWl0T25Gb3JtQ3JlYXRlZCB9IGZyb20gJy4uL2NvcmUtZm9ybS9jb3JlLWZvcm0vY29yZS1mb3JtLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCwgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEVudW1Db3JlQnV0dG9uVk5TQ29kZSB9IGZyb20gJy4uL2NvcmUtYnV0dG9uLWdyb3VwLXZucy9jb3JlLWJ1dHRvbi1ncm91cC12bnMvRW51bUNvcmVCdXR0b25WTlNDb2RlJztcclxuaW1wb3J0IHsgRW51bVRyYW5zbGF0ZUtleSB9IGZyb20gXCJhbHBoYS1nbG9iYWwtY29uc3RhbnRzXCI7XHJcbmltcG9ydCB7IENvbW1vbkh0dHBSZXF1ZXN0U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NvbW1vbi1odHRwLXJlcXVlc3Quc2VydmljZSc7XHJcbmltcG9ydCB7IE11bHRpTGFuZ3VhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbXVsdGktbGFuZ3VhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IEh1YkNvbm5lY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvaHViLWNvbm5lY3Rpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYXV0aC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVXJsU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3VybC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUm91dGluZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9yb3V0aW5nLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBJSHViQ29ubmVjdGlvbkFjdGl2aXR5IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9JSHViQ29ubmVjdGlvbkFjdGl2aXR5JztcclxuaW1wb3J0IHsgRW51bVNpZ25hbFJUeXBlIH0gZnJvbSAnLi4vLi4vZW51bS9FbnVtU2lnbmFsUlR5cGUnO1xyXG5pbXBvcnQgeyBJRm9ybWF0ZWRSZXNwb25zZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvSUZvcm1hdGVkUmVzcG9uc2UnO1xyXG5pbXBvcnQgeyBhbGVydE9wdGlvbnMsIG5vbmVBdXRvQ2xvc2VkQWxlcnRPcHRpb25zIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL2FsZXJ0T3B0aW9ucyc7XHJcbmltcG9ydCB7IElTeXNNdXRhdGlvbkxvZ0JlZm9yZUFmdGVyUmVxdWVzdCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvSVN5c011dGF0aW9uTG9nQmVmb3JlQWZ0ZXJSZXF1ZXN0JztcclxuaW1wb3J0IHsgRW51bUZvcm1CYXNlQ29udG9sVHlwZSB9IGZyb20gJy4uLy4uL2VudW0vRW51bUZvcm1CYXNlQ29udG9sVHlwZSc7XHJcbmltcG9ydCB7IEVudW1Db3JlUGFnZUVkaXRNb2RlIH0gZnJvbSAnLi9FbnVtQ29yZVBhZ2VFZGl0TW9kZSc7XHJcbmltcG9ydCB7IElDb3JlUGFnZUVkaXRDUlVEIH0gZnJvbSAnLi9JQ29yZVBhZ2VFZGl0Q1JVRCc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVBpcGUgfSBmcm9tICcuLi8uLi9hcHAtcGlwZXMvdHJhbnNsYXRlLnBpcGUnO1xyXG5pbXBvcnQgeyBGdWxsc2NyZWVuTW9kYWxMb2FkZXJDb21wb25lbnQgfSBmcm9tICcuLi9mdWxsc2NyZWVuLW1vZGFsLWxvYWRlci9mdWxsc2NyZWVuLW1vZGFsLWxvYWRlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb3JlUGFnZUhlYWRlckNvbXBvbmVudCB9IGZyb20gJy4uL2NvcmUtcGFnZS1oZWFkZXIvY29yZS1wYWdlLWhlYWRlci9jb3JlLXBhZ2UtaGVhZGVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFJlc3BvbnNlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3Jlc3BvbnNlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBcHBDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYXBwLWNvbmZpZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSUNvcmVCdXR0b25WTlMgfSBmcm9tICcuLi9jb3JlLWJ1dHRvbi1ncm91cC12bnMvY29yZS1idXR0b24tZ3JvdXAtdm5zL0lDb3JlQnV0dG9uVk5TJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnY29yZS1wYWdlLWVkaXQnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gICAgQ29yZUZvcm1Db21wb25lbnQsXHJcbiAgICBUcmFuc2xhdGVQaXBlLFxyXG4gICAgRnVsbHNjcmVlbk1vZGFsTG9hZGVyQ29tcG9uZW50LFxyXG4gICAgQ29yZVBhZ2VIZWFkZXJDb21wb25lbnRcclxuICBdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jb3JlLXBhZ2UtZWRpdC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vY29yZS1wYWdlLWVkaXQuY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIENvcmVQYWdlRWRpdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XHJcbiAgQElucHV0KCkgc3RheUFmdGVyU3VibWl0ITogYm9vbGVhbjtcclxuICBASW5wdXQoKSB3aWR0aCE6IG51bWJlcjtcclxuICBASW5wdXQoKSBlbnRpdHlUYWJsZSE6IHN0cmluZztcclxuICBASW5wdXQoKSBoYXNJZE9mU3RyaW5nVHlwZSE6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgY2FwdGlvbkNvZGUhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgbGVmdElucHV0U2VjdGlvbnMhOiBJQ29yZUZvcm1TZWN0aW9uW107XHJcbiAgQElucHV0KCkgbGVmdElucHV0U2VjdGlvbnNGbGV4U2l6ZSE6IG51bWJlcjtcclxuICBASW5wdXQoKSBzZWN0aW9ucyE6IElDb3JlRm9ybVNlY3Rpb25bXTtcclxuICBASW5wdXQoKSBub3JtYWxNb2RlITogYm9vbGVhbjsgLy8gdGhpcyBhbGxvd3MgdG8gb3BlbiB0aGUgZWRpdCBmb3JtIGFzIHVzdWFsIG1vZGVcclxuICBASW5wdXQoKSBib3R0b21UZW1wbGF0ZVJlZiE6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQElucHV0KCkgYXV0b0dldEJ5SWRPZmYhOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGF1dG9TdWJtaXRMb2dpY09mZiE6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgYXV0b0NhbmNlbExvZ2ljT2ZmITogYm9vbGVhbjtcclxuICBASW5wdXQoKSBjdXN0b21Gb3JtQnV0dG9uSXRlbXMhOiBFbnVtQ29yZUJ1dHRvblZOU0NvZGVbXTtcclxuICBASW5wdXQoKSBtaXhlZE1vZGUhOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGNoZWNrRXJyb3IkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XHJcbiAgQElucHV0KCkgc2hvd1NhdmVCdXR0b24hOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGRpc2FibGVTYXZlQnV0dG9uITogYm9vbGVhbjtcclxuXHJcblxyXG4gIEBPdXRwdXQoKSBzdWJtaXRMb2dpYyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgb25Gb3JtQ3JlYXRlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgb25TdWJtaXRTdWNjZXNzID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBvbkJ1dHRvbkNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBjYW5jZWxMb2dpYyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgZm9ybSE6IEZvcm1Hcm91cDtcclxuXHJcbiAgQElucHV0KCkgY3J1ZCE6IElDb3JlUGFnZUVkaXRDUlVEO1xyXG4gIEBJbnB1dCgpIGVudGl0eVVuaXF1ZUluZGV4czogc3RyaW5nW11bXSA9XHJcbiAgICBbXTsgLyogRm9yIGV4OiBbWydpZCddLCBbJ3Byb3ZpbmNlSWQnLCAnZGlzdHJpY0NvZGUnXV0gIGV0Yy4uLiAqL1xyXG4gIEBPdXRwdXQoKSBvbkluaXRpYWxWYWx1ZVN0cmluZ1JlYWR5ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2NvbnRhaW5lcicpIGNvbnRhaW5lciE6IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZCgnY29udGFpbmVyQmlnZ2VyJykgY29udGFpbmVyQmlnZ2VyITogRWxlbWVudFJlZjtcclxuXHJcbiAgc2VjdGlvbnMkITogQmVoYXZpb3JTdWJqZWN0PElDb3JlRm9ybVNlY3Rpb25bXT47XHJcbiAgbW9kZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEVudW1Db3JlUGFnZUVkaXRNb2RlPihcclxuICAgIEVudW1Db3JlUGFnZUVkaXRNb2RlLkNSRUFURVxyXG4gICk7XHJcblxyXG4gIGN1cnJlbnRWYWx1ZTogYW55O1xyXG4gIGluaXRpYWxWYWx1ZSE6IHN0cmluZztcclxuICBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG5cclxuICBmcm9tVXJsITogc3RyaW5nO1xyXG4gIGxpc3RJbnN0YW5jZSE6IG51bWJlcjtcclxuICBsb2FkaW5nITogYm9vbGVhbjtcclxuXHJcbiAgbGFuZyE6IHN0cmluZztcclxuXHJcbiAgc3VibWl0VGV4dCE6IEVudW1UcmFuc2xhdGVLZXk7XHJcblxyXG4gIHNob3dDYXB0aW9uQnV0dG9uOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgc2Nyb2xsITogYm9vbGVhbjtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxyXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXHJcbiAgICBwcml2YXRlIGNvcmVQYWdlRWRpdFNlcnZpY2U6IENvcmVQYWdlRWRpdFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNvbW1vbkh0dHBSZXF1ZXN0U2VydmljZTogQ29tbW9uSHR0cFJlcXVlc3RTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhbmltYXRlZFRleHRTZXJ2aWNlOiBBbmltYXRlZFRleHRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBtbHM6IE11bHRpTGFuZ3VhZ2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjb3JlRm9ybVNlcnZpY2U6IENvcmVGb3JtU2VydmljZSxcclxuICAgIHByaXZhdGUgY29yZVBhZ2VMaXN0U2VydmljZTogQ29yZVBhZ2VMaXN0U2VydmljZSxcclxuICAgIHByaXZhdGUgaHViQ29ubmVjdGlvblNlcnZpY2U6IEh1YkNvbm5lY3Rpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGFsZXJ0U2VydmljZTogQWxlcnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB1cmxTZXJ2aWNlOiBVcmxTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByb3V0aW5nU2VydmljZTogUm91dGluZ1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlc3BvbnNlU2VydmljZTogUmVzcG9uc2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhcHBDb25maWdTZXJ2aWNlOiBBcHBDb25maWdTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICB0aGlzLmZyb21VcmwgPSB0aGlzLmNvcmVQYWdlRWRpdFNlcnZpY2UuZnJvbVVybDtcclxuICAgIHRoaXMubGlzdEluc3RhbmNlID0gTnVtYmVyKFxyXG4gICAgICB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtTWFwLmdldCgnbGlzdEluc3RhbmNlJykhXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZW5kU2lnbmFsKGRhdGE6IGFueSkge1xyXG4gICAgY29uc3QgY29ubmVjdGlvbiA9IHRoaXMuaHViQ29ubmVjdGlvblNlcnZpY2UuaHViQ29ubmVjdGlvbiQudmFsdWU7XHJcbiAgICBpZiAoISFjb25uZWN0aW9uKSB7XHJcbiAgICAgIGNvbnN0IG1lc3NhZ2U6IElIdWJDb25uZWN0aW9uQWN0aXZpdHkgPSB7XHJcbiAgICAgICAgc2lkOiB0aGlzLmF1dGhTZXJ2aWNlLmRhdGEkLnZhbHVlPy5pZCEsXHJcbiAgICAgICAgdXNlcm5hbWU6IHRoaXMuYXV0aFNlcnZpY2UuZGF0YSQudmFsdWU/LmZ1bGxOYW1lISxcclxuICAgICAgICBhdmF0YXI6IHRoaXMuYXV0aFNlcnZpY2UuZGF0YSQudmFsdWU/LmF2YXRhciEsXHJcbiAgICAgICAgc2lnbmFsVHlwZTogRW51bVNpZ25hbFJUeXBlLkVOVElUWV9DSEFOR0VELFxyXG4gICAgICAgIG1lc3NhZ2U6IGAke3RoaXMuYXV0aFNlcnZpY2UuZGF0YSQudmFsdWVcclxuICAgICAgICAgID8udXNlck5hbWUhfSBoYXMgY2hhbmdlZCBlbnRpdHkgJHt0aGlzLmVudGl0eVRhYmxlfWAsXHJcbiAgICAgICAgbG9naW5UaW1lOiB0aGlzLmF1dGhTZXJ2aWNlLmRhdGEkLnZhbHVlPy5sb2dpblRpbWUhLFxyXG4gICAgICAgIGRhdGE6IG51bGwsXHJcbiAgICAgIH07XHJcbiAgICAgIGNvbm5lY3Rpb24uaW52b2tlKCdTZW5kTWVzc2FnZScsIG1lc3NhZ2UpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcblxyXG4gICAgdGhpcy5zZWN0aW9ucyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PElDb3JlRm9ybVNlY3Rpb25bXT4odGhpcy5zZWN0aW9ucyk7XHJcblxyXG4gICAgaWYgKCEhIXRoaXMuZW50aXR5VGFibGUpIHtcclxuICAgICAgYWxlcnQoXHJcbiAgICAgICAgJ1Byb3BlcnR5IGVudGl0eVRhYmxlIChuYW1lKSBpcyByZXF1aXJlZCBmb3IgY29tcG9uZW50ICcgK1xyXG4gICAgICAgIHRoaXMuY2FwdGlvbkNvZGVcclxuICAgICAgKTtcclxuICAgICAgY29uc29sZS5lcnJvcihcclxuICAgICAgICAnUHJvcGVydHkgZW50aXR5VGFibGUgKG5hbWUpIGlzIHJlcXVpcmVkIGZvciBjb21wb25lbnQgJyArXHJcbiAgICAgICAgdGhpcy5jYXB0aW9uQ29kZVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgaWYgKCEhdGhpcy5ub3JtYWxNb2RlKSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKHRoaXMuY29udGFpbmVyKVxyXG4gICAgICB0aGlzLmNvbnRhaW5lci5uYXRpdmVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLXdpZHRoJywgJzEwMCUnKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICghIXRoaXMud2lkdGgpIHtcclxuICAgICAgICB0aGlzLmNvbnRhaW5lci5uYXRpdmVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KFxyXG4gICAgICAgICAgJy0td2lkdGgnLFxyXG4gICAgICAgICAgdGhpcy53aWR0aCArICdweCdcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY29udGFpbmVyQmlnZ2VyLm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoXHJcbiAgICAgICAgJy0taGVpZ2h0JyxcclxuICAgICAgICAnOTUlJ1xyXG4gICAgICApXHJcbiAgICB9XHJcblxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuc2Nyb2xsID0gdGhpcy5jb250YWluZXIubmF0aXZlRWxlbWVudC5zY3JvbGxIZWlnaHQgPiB0aGlzLmNvbnRhaW5lci5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodFxyXG4gICAgfSk7XHJcblxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGlmICghISF0aGlzLm1peGVkTW9kZSkge1xyXG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICAgICAgdGhpcy5yb3V0ZS5wYXJhbXMuc3Vic2NyaWJlKHggPT4ge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcInRoaXMucm91dGUucGFyYW1zLnN1YnNjcmliZVwiLCB4KVxyXG5cclxuICAgICAgICAgICAgbGV0IGlkOiBzdHJpbmcgPSAnMCc7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmhhc0lkT2ZTdHJpbmdUeXBlKSB7XHJcbiAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgIGlkID0gYXRvYih4WydpZCddKTtcclxuICAgICAgICAgICAgICB9IGNhdGNoIHsgcmV0dXJuIH1cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgaWQgPSBOdW1iZXIoYXRvYih4WydpZCddKSkudG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgICB9IGNhdGNoIHsgcmV0dXJuIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKGlkICE9PSAnMCcpIHtcclxuICAgICAgICAgICAgICB0aGlzLm1vZGUkLm5leHQoRW51bUNvcmVQYWdlRWRpdE1vZGUuVVBEQVRFKTtcclxuXHJcbiAgICAgICAgICAgICAgdGhpcy5zdWJtaXRUZXh0ID0gRW51bVRyYW5zbGF0ZUtleS5VSV9FRElUX0ZPUk1fQlVUVE9OX1NBVkU7XHJcblxyXG4gICAgICAgICAgICAgIGlmICghISF0aGlzLmF1dG9HZXRCeUlkT2ZmKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuY29yZVBhZ2VFZGl0U2VydmljZS5nZXRCeUlkKGlkLCB0aGlzLmNydWQucikuc3Vic2NyaWJlKCh4KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYm9keTogSUZvcm1hdGVkUmVzcG9uc2UgPSB4LmJvZHk7XHJcbiAgICAgICAgICAgICAgICAgICAgLy90aGlzLnJlc3BvbnNlU2VydmljZS5yZXNvbHZlKGJvZHkpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICgoYm9keS5zdGF0dXNDb2RlID0gMjAwKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgLyogI3JlZ2lvbiBFeGNsdWRlIHNlY3Rpb25zIHdpdGggZmxhZyBhZGRNb2RlT25seT10cnVlICovXHJcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoISFib2R5LmlubmVyQm9keS5pZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyByZW1vdmUgcmVsZXZhbnQgY29udHJvbHMgZnJvbSBmb3JtIGdyb3VwXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGFkZE1vZGVPbmx5U2VjdGlvbnMgPSB0aGlzLnNlY3Rpb25zLmZpbHRlcihcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAoeCkgPT4gISF4LmFkZE1vZGVPbmx5XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZE1vZGVPbmx5U2VjdGlvbnMubWFwKChhZGRNb2RlT25seVNlY3Rpb24pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRNb2RlT25seVNlY3Rpb24ucm93cy5tYXAoKGFkZE1vZGVPbmx5Um93KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRNb2RlT25seVJvdy5tYXAoKGFkZE1vZGVPbmx5Q29udHJvbCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0ucmVtb3ZlQ29udHJvbChhZGRNb2RlT25seUNvbnRyb2wuZmllbGQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVtb3ZlIHJlbGV2YW50IGNvbnRyb2xzIGZyb20gZm9ybSBzZWN0aW9uc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXdTZWN0aW9ucyA9IHRoaXMuc2VjdGlvbnMuZmlsdGVyKCh4KSA9PiAhISF4LmFkZE1vZGVPbmx5KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWN0aW9ucyA9IG5ld1NlY3Rpb25zO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlY3Rpb25zJC5uZXh0KHRoaXMuc2VjdGlvbnMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgLyogI2VuZHJlZ2lvbiBFeGNsdWRlIHNlY3Rpb25zIHdpdGggZmxhZyBhZGRNb2RlT25seT10cnVlICovXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgLyogI3JlZ2lvbjogQXNzaWduIHZhbHVlIHRvIGF0dGFjaG1lbnQgZmllbGRzIHdoZW4gY29udHJvbFR5cGUgPSBBVFRBQ0hNRU5UICovXHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlY3Rpb25zLm1hcCgoc2VjdGlvbikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLnJvd3MubWFwKChyb3cpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICByb3cubWFwKChjb250cm9sKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29udHJvbC5jb250cm9sVHlwZSA9PT0gRW51bUZvcm1CYXNlQ29udG9sVHlwZS5BVFRBQ0hNRU5UKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2wudmFsdWVUb1Nob3cgPSBib2R5LmlubmVyQm9keVtjb250cm9sLmFzc2lnblRvIV1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAvKiAjZW5kcmVnaW9uOiBBc3NpZ24gdmFsdWUgdG8gYmFzaWMgZmllbGRzIHdoZW4gY29udHJvbFR5cGUgPSBBVFRBQ0hNRU5UICovXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgLyogI3JlZ2lvbjogVXNpbmcgUGF0Y2hWYWx1ZSBpbnN0ZWFkIG9mIHNldFZhbHVlICovXHJcbiAgICAgICAgICAgICAgICAgICAgICAvLyBGb3JtcyBvZnRlbiBoYXZlIGV4dHJhIGhlbHBlciBmaWVsZHNcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAvLyB0aHVzLCBpZiB3ZSB1c2Ugc2V0VmFsdWUgbWV0aG9kLCB0aGUgaGVscGVyIGZpZWxkcyB3aWxsIGJlIGxvc3Q6XHJcbiAgICAgICAgICAgICAgICAgICAgICAvLyB0aGlzLmZvcm0uc2V0VmFsdWUoYm9keS5pbm5lckJvZHkpXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgLy8gc28sIHdlIHVzZSBwYXRjaFZhbHVlIG1ldGhvZCA6XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRWYWx1ZSA9IGJvZHkuaW5uZXJCb2R5O1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUodGhpcy5jdXJyZW50VmFsdWUpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VjdGlvbnMubWFwKChzZWN0aW9uKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24ucm93cy5tYXAoKHJvdykgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJvdy5tYXAoKGNvbnRyb2wpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1Gb3JtQmFzZUNvbnRvbFR5cGUuU0VFS0VSLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudW1Gb3JtQmFzZUNvbnRvbFR5cGUuRFJPUERPV04sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW51bUZvcm1CYXNlQ29udG9sVHlwZS5DSEVDS0xJU1QsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0uaW5jbHVkZXMoY29udHJvbC5jb250cm9sVHlwZSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISF0aGlzLmN1cnJlbnRWYWx1ZVtjb250cm9sLmZpZWxkXSkge1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNEZXZNb2RlKCkgJiYgISEhY29udHJvbC5nZXRCeUlkQXBpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGNvbnRyb2wuY29udHJvbFR5cGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBFbnVtRm9ybUJhc2VDb250b2xUeXBlLlNFRUtFUjpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbnRyb2wubXVsdGlNb2RlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5lcnJvcihgZ2V0QnlJZEFwaSBub3QgcHJvdmlkZWQgZm9yICcke2NvbnRyb2wuZmllbGR9J2AsIG5vbmVBdXRvQ2xvc2VkQWxlcnRPcHRpb25zKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgRW51bUZvcm1CYXNlQ29udG9sVHlwZS5EUk9QRE9XTjpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISEhY29udHJvbC5kcm9wZG93bk9wdGlvbnMkPy52YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hbGVydFNlcnZpY2UuZXJyb3IoYGdldEJ5SWRBcGkgbm90IHByb3ZpZGVkIGZvciAnJHtjb250cm9sLmZpZWxkfSdgLCBub25lQXV0b0Nsb3NlZEFsZXJ0T3B0aW9ucylcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgRW51bUZvcm1CYXNlQ29udG9sVHlwZS5DSEVDS0xJU1Q6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEhIWNvbnRyb2wuY2hlY2tsaXN0T3B0aW9ucyQ/LnZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5lcnJvcihgZ2V0QnlJZEFwaSBub3QgcHJvdmlkZWQgZm9yICcke2NvbnRyb2wuZmllbGR9J2AsIG5vbmVBdXRvQ2xvc2VkQWxlcnRPcHRpb25zKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5lcnJvcihgZ2V0QnlJZEFwaSBub3QgcHJvdmlkZWQgZm9yICcke2NvbnRyb2wuZmllbGR9J2AsIG5vbmVBdXRvQ2xvc2VkQWxlcnRPcHRpb25zKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb21tb25IdHRwUmVxdWVzdFNlcnZpY2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLm1ha2VHZXRSZXF1ZXN0KFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdnZXRCeUlkJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sLmdldEJ5SWRBcGkgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGA/aWQ9JHt0aGlzLmN1cnJlbnRWYWx1ZVtjb250cm9sLmZpZWxkXX1gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoeCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiZm9ybSBnZXRCeUlkIHJlc3VsdDogXCIsIHRoaXMuY3VycmVudFZhbHVlKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh4Lm9rICYmIHguc3RhdHVzID09PSAyMDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJvZHk6IElGb3JtYXRlZFJlc3BvbnNlID0geC5ib2R5O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJvZHkuc3RhdHVzQ29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2wuZ2V0QnlJZE9iamVjdCQ/Lm5leHQoYm9keS5pbm5lckJvZHkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbC5nZXRCeUlkT2JqZWN0JD8ubmV4dChudWxsKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb250cm9sLmNvbnRyb2xUeXBlID09PSBFbnVtRm9ybUJhc2VDb250b2xUeXBlLlNFRUtFUiAmJiBjb250cm9sLm11bHRpTW9kZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sLm9iamVjdExpc3QkPy5uZXh0KGJvZHkuaW5uZXJCb2R5W2NvbnRyb2wuZ2V0T2JqZWN0TGlzdEZyb20hXSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWN0aW9ucyQubmV4dCh0aGlzLnNlY3Rpb25zKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAvKiAjZW5kcmVnaW9uOiBVc2luZyBQYXRjaFZhbHVlIGluc3RlYWQgb2Ygc2V0VmFsdWUgKi9cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gcmV0dXJuIGluaXRGb3JtVmFsdWVTdHJpbmcgdG8gdGhlIGNhbGxlclxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25Jbml0aWFsVmFsdWVTdHJpbmdSZWFkeS5lbWl0KFxyXG4gICAgICAgICAgICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkodGhpcy5mb3JtLmdldFJhd1ZhbHVlKCkpXHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMubW9kZSQubmV4dChFbnVtQ29yZVBhZ2VFZGl0TW9kZS5DUkVBVEUpO1xyXG4gICAgICAgICAgICAgIHRoaXMuc3VibWl0VGV4dCA9IEVudW1UcmFuc2xhdGVLZXkuVUlfRURJVF9GT1JNX0JVVFRPTl9BREQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgKVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICAgIHRoaXMubWxzLmxhbmckLnN1YnNjcmliZSh4ID0+IHRoaXMubGFuZyA9IHgpXHJcbiAgICAgIClcclxuICAgIH0pXHJcblxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB0b2dnbGVSZWxvYWRGbGFnRm9yVGhlQ2FsbGVyKGlkOiBudW1iZXIpOiB2b2lkIHtcclxuXHJcbiAgICBjb25zdCBpbnN0YW5jZXNGaWx0ZXIgPSB0aGlzLmNvcmVQYWdlTGlzdFNlcnZpY2UuaW5zdGFuY2VzLmZpbHRlcihcclxuICAgICAgKHgpID0+IHguaW5zdGFuY2VOdW1iZXIgPT09IHRoaXMubGlzdEluc3RhbmNlXHJcbiAgICApO1xyXG4gICAgaWYgKCEhaW5zdGFuY2VzRmlsdGVyLmxlbmd0aCkge1xyXG4gICAgICBjb25zdCBpbnN0YW5jZSA9IGluc3RhbmNlc0ZpbHRlclswXTtcclxuICAgICAgaW5zdGFuY2UuaWQkLm5leHQoaWQpO1xyXG4gICAgICAvL2lmICghISF0aGlzLm5vcm1hbE1vZGUpIGluc3RhbmNlLnJlbG9hZEZsYWckPy5uZXh0KCFpbnN0YW5jZS5yZWxvYWRGbGFnJC52YWx1ZSk7XHJcblxyXG4gICAgICBpZiAoaXNEZXZNb2RlKCkpIHtcclxuICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5pbmZvKGBDb3JlUGFnZUxpc3QgaW5zdGFuY2UgbnVtYmVyICR7dGhpcy5saXN0SW5zdGFuY2V9IGN1cnJlbnQgaWQgaXM6ICR7aW5zdGFuY2UuaWQkLnZhbHVlfWAsIGFsZXJ0T3B0aW9ucylcclxuICAgICAgfVxyXG5cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmIChpc0Rldk1vZGUoKSkge1xyXG4gICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmluZm8oYENvcmVQYWdlTGlzdCBpbnN0YW5jZXMgZG8gbm90IGluY2x1ZGUgbnVtYmVyICR7dGhpcy5saXN0SW5zdGFuY2V9YCwgYWxlcnRPcHRpb25zKVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbk5vdE9rMjAwUmVzcG9uc2UoeDogb2JqZWN0KTogdm9pZCB7XHJcbiAgICBpZiAoaXNEZXZNb2RlKCkpIHtcclxuICAgICAgaWYgKE9iamVjdC5rZXlzKHgpLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmVycm9yKFwiTm8gcmVzcG9uc2UgY29udGVudC4gSXQgd2FzIHBvc3NpYmx5IGEgQ09SUyBlcnJvci5cIiwgbm9uZUF1dG9DbG9zZWRBbGVydE9wdGlvbnMpXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgLy90aGlzLmFsZXJ0U2VydmljZS5lcnJvcihKU09OLnN0cmluZ2lmeSh4LCBudWxsLCAyKSwgbm9uZUF1dG9DbG9zZWRBbGVydE9wdGlvbnMpXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uU3VibWl0KCk6IHZvaWQge1xyXG5cclxuICAgIC8qIElGIGlkIGlzIGZhbHN5ID0+IENSRUFULCBvdGhlcndpc2UgVVBEQVRFICovXHJcblxyXG4gICAgLyogRk9SIENPTlRST0wgT0YgVFlQRSBHUklEQlVGRkVSLCBTRVQgRVZFUlkgaWQgVE8gTlVMTCAqL1xyXG4gICAgdGhpcy5zZWN0aW9ucy5tYXAoc2VjdGlvbiA9PiB7XHJcbiAgICAgIHNlY3Rpb24ucm93cy5tYXAocm93ID0+IHtcclxuICAgICAgICByb3cubWFwKGNvbnRyb2wgPT4ge1xyXG4gICAgICAgICAgY29uc29sZS5sb2coY29udHJvbC5jb250cm9sVHlwZSlcclxuICAgICAgICAgIGlmIChjb250cm9sLmNvbnRyb2xUeXBlID09PSBFbnVtRm9ybUJhc2VDb250b2xUeXBlLkdSSURCVUZGRVIpIHtcclxuICAgICAgICAgICAgY29uc3QgYWJzdHJhY3RDb250cm9sID0gdGhpcy5mb3JtLmdldChjb250cm9sLmZpZWxkKT8udmFsdWU7XHJcbiAgICAgICAgICAgIC8vIFRPIERPIDE3LzA4LzIwMjMgPT09PT09PT09PT1cclxuICAgICAgICAgICAgYWJzdHJhY3RDb250cm9sPy52YWx1ZT8ubWFwKCh4OiBhbnkpID0+IHguaWQgPSBudWxsKTtcclxuICAgICAgICAgICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgIH0pXHJcbiAgICB9KVxyXG5cclxuICAgIGlmICghIXRoaXMubWl4ZWRNb2RlKSB7XHJcbiAgICAgIHRoaXMuc3VibWl0TG9naWMuZW1pdChcclxuICAgICAgICB7XHJcbiAgICAgICAgICBtb2RlOiB0aGlzLmZvcm0uZ2V0KCdlZGl0TW9kZScpPy52YWx1ZSxcclxuICAgICAgICAgIGZvcm1WYWx1ZTogdGhpcy5mb3JtLmdldFJhd1ZhbHVlKClcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoISF0aGlzLmF1dG9TdWJtaXRMb2dpY09mZikge1xyXG4gICAgICAvLyBETyB5b3VyIGxvZ2ljIGhlcmVcclxuICAgICAgdGhpcy5zdWJtaXRMb2dpYy5lbWl0KEpTT04uc3RyaW5naWZ5KHRoaXMuZm9ybS5nZXRSYXdWYWx1ZSgpKSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBlbHNlIGlmICghISF0aGlzLmZvcm0uZ2V0KCdpZCcpIS52YWx1ZSkge1xyXG4gICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG5cclxuICAgICAgY29uc3Qgc3lzTXV0YXRpb25Mb2dCZWZvcmVBZnRlclJlcXVlc3Q6IElTeXNNdXRhdGlvbkxvZ0JlZm9yZUFmdGVyUmVxdWVzdCA9IHtcclxuICAgICAgICBzeXNGdW5jdGlvbkNvZGU6IHRoaXMucm91dGluZ1NlcnZpY2UuY3VycmVudEZ1bmN0aW9uJC52YWx1ZT8uY29kZSB8fCAnVU5ERUZJTkVEJyxcclxuICAgICAgICBzeXNBY3Rpb25Db2RlOiBFbnVtQ29yZUJ1dHRvblZOU0NvZGUuSEVBREVSX0NSRUFURSxcclxuICAgICAgICBiZWZvcmU6IEpTT04uc3RyaW5naWZ5KHRoaXMuY3VycmVudFZhbHVlKSA/PyAnXCJcIicsXHJcbiAgICAgICAgYWZ0ZXI6IEpTT04uc3RyaW5naWZ5KHRoaXMuZm9ybS5nZXRSYXdWYWx1ZSgpKSxcclxuICAgICAgICB1c2VybmFtZTogdGhpcy5hdXRoU2VydmljZS5kYXRhJC52YWx1ZT8udXNlck5hbWUhXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuYW5pbWF0ZWRUZXh0U2VydmljZS50ZXh0JC5uZXh0KFxyXG4gICAgICAgIHRoaXMubWxzLnRyYW5zKEVudW1UcmFuc2xhdGVLZXkuVUlfRElBTE9HX0FERElOR19QTEVBU0VfV0FJVClcclxuICAgICAgKTtcclxuXHJcbiAgICAgIHRoaXMuY29tbW9uSHR0cFJlcXVlc3RTZXJ2aWNlXHJcbiAgICAgICAgLm1ha2VQb3N0UmVxdWVzdChcclxuICAgICAgICAgICdjcmVhdGUgJyArIHRoaXMuZW50aXR5VGFibGUsXHJcbiAgICAgICAgICB0aGlzLmNydWQuYyEsXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIC4uLnRoaXMuZm9ybS5nZXRSYXdWYWx1ZSgpLFxyXG4gICAgICAgICAgICBzeXNNdXRhdGlvbkxvZ0JlZm9yZUFmdGVyUmVxdWVzdCxcclxuICAgICAgICAgIH1cclxuICAgICAgICApXHJcbiAgICAgICAgLnN1YnNjcmliZSgoeCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICBpZiAoeC5vayAmJiB4LnN0YXR1cyA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGJvZHk6IElGb3JtYXRlZFJlc3BvbnNlID0geC5ib2R5O1xyXG4gICAgICAgICAgICAvL3RoaXMucmVzcG9uc2VTZXJ2aWNlLnJlc29sdmUoYm9keSk7XHJcbiAgICAgICAgICAgIGlmIChib2R5LnN0YXR1c0NvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgICAgIGlmIChpc0Rldk1vZGUoKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZW5kU2lnbmFsKGJvZHkuaW5uZXJCb2R5KTtcclxuICAgICAgICAgICAgICAgIHRoaXMub25TdWJtaXRTdWNjZXNzLmVtaXQodHJ1ZSk7XHJcbiAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICB0aGlzLm9uSW5pdGlhbFZhbHVlU3RyaW5nUmVhZHkuZW1pdChcclxuICAgICAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KHRoaXMuZm9ybS5nZXRSYXdWYWx1ZSgpKVxyXG4gICAgICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgICAgIC8qXHJcbiAgICAgICAgICAgICAgVHJhbnNmZXIgbmV3bHkgY3JlYXRlZCByZWNvcmQgaWRcclxuICAgICAgICAgICAgKi9cclxuICAgICAgICAgICAgICB0aGlzLnRvZ2dsZVJlbG9hZEZsYWdGb3JUaGVDYWxsZXIoYm9keS5pbm5lckJvZHkuaWQpO1xyXG4gICAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnLi4vJ10sIHsgLyogZXhwZXJpbWVudCovIHJlcGxhY2VVcmw6IHRydWUsIHJlbGF0aXZlVG86IHRoaXMucm91dGUsIHN0YXRlOiB7IGlkOiBib2R5LmlubmVyQm9keS5pZCwgaW5zdGFuY2VOdW1iZXI6IHRoaXMubGlzdEluc3RhbmNlIH0gfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMub25Ob3RPazIwMFJlc3BvbnNlKHgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuXHJcbiAgICAgIGNvbnN0IHN5c011dGF0aW9uTG9nQmVmb3JlQWZ0ZXJSZXF1ZXN0OiBJU3lzTXV0YXRpb25Mb2dCZWZvcmVBZnRlclJlcXVlc3QgPSB7XHJcbiAgICAgICAgc3lzRnVuY3Rpb25Db2RlOiB0aGlzLnJvdXRpbmdTZXJ2aWNlLmN1cnJlbnRGdW5jdGlvbiQudmFsdWU/LmNvZGUgfHwgJ1VOREVGSU5FRCcsXHJcbiAgICAgICAgc3lzQWN0aW9uQ29kZTogRW51bUNvcmVCdXR0b25WTlNDb2RlLkhFQURFUl9TQVZFLFxyXG4gICAgICAgIGJlZm9yZTogSlNPTi5zdHJpbmdpZnkodGhpcy5jdXJyZW50VmFsdWUpID8/ICdcIlwiJyxcclxuICAgICAgICBhZnRlcjogSlNPTi5zdHJpbmdpZnkodGhpcy5mb3JtLmdldFJhd1ZhbHVlKCkpLFxyXG4gICAgICAgIHVzZXJuYW1lOiB0aGlzLmF1dGhTZXJ2aWNlLmRhdGEkLnZhbHVlPy51c2VyTmFtZSFcclxuICAgICAgfVxyXG5cclxuICAgICAgY29uc3QgYTEgPSB0aGlzLmNvcmVGb3JtU2VydmljZS5nZXRBbGxGb3JtQmFzZUNvbnRyb2xOYW1lcyh0aGlzLmxlZnRJbnB1dFNlY3Rpb25zPy5maWx0ZXIoeCA9PiAheC5oaWRkZW4pKTtcclxuICAgICAgY29uc3QgYTIgPSB0aGlzLmNvcmVGb3JtU2VydmljZS5nZXRBbGxGb3JtQmFzZUNvbnRyb2xOYW1lcyh0aGlzLnNlY3Rpb25zPy5maWx0ZXIoeCA9PiAheC5oaWRkZW4pKTtcclxuICAgICAgY29uc3QgYWN0dWFsRm9ybURlY2xhcmVkRmllbGRzID0gWy4uLmExLCAuLi5hMl07XHJcblxyXG4gICAgICB0aGlzLmFuaW1hdGVkVGV4dFNlcnZpY2UudGV4dCQubmV4dChcclxuICAgICAgICB0aGlzLm1scy50cmFucyhFbnVtVHJhbnNsYXRlS2V5LlVJX0RJQUxPR19VUERBVElOR19QTEVBU0VfV0FJVClcclxuICAgICAgKTtcclxuICAgICAgdGhpcy5jb21tb25IdHRwUmVxdWVzdFNlcnZpY2VcclxuICAgICAgICAubWFrZVBvc3RSZXF1ZXN0KFxyXG4gICAgICAgICAgJ3VwZGF0ZSAnICsgdGhpcy5lbnRpdHlUYWJsZSxcclxuICAgICAgICAgIHRoaXMuY3J1ZC51LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICAuLi50aGlzLmZvcm0uZ2V0UmF3VmFsdWUoKSxcclxuICAgICAgICAgICAgc3lzTXV0YXRpb25Mb2dCZWZvcmVBZnRlclJlcXVlc3QsXHJcbiAgICAgICAgICAgIGFjdHVhbEZvcm1EZWNsYXJlZEZpZWxkc1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIClcclxuICAgICAgICAuc3Vic2NyaWJlKCh4KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIGlmICh4Lm9rICYmIHguc3RhdHVzID09PSAyMDApIHtcclxuICAgICAgICAgICAgY29uc3QgYm9keTogSUZvcm1hdGVkUmVzcG9uc2UgPSB4LmJvZHk7XHJcbiAgICAgICAgICAgIC8vdGhpcy5yZXNwb25zZVNlcnZpY2UucmVzb2x2ZShib2R5KTtcclxuICAgICAgICAgICAgaWYgKGJvZHkuc3RhdHVzQ29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgaWYgKGlzRGV2TW9kZSgpKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbmRTaWduYWwoYm9keS5pbm5lckJvZHkpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5vblN1Ym1pdFN1Y2Nlc3MuZW1pdCh0cnVlKTtcclxuICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgIHRoaXMub25Jbml0aWFsVmFsdWVTdHJpbmdSZWFkeS5lbWl0KFxyXG4gICAgICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkodGhpcy5mb3JtLmdldFJhd1ZhbHVlKCkpXHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAvKlxyXG4gICAgICAgICAgICAgIFRyYW5zZmVyIGN1cnJlbnQgcmVjb3JkIGlkXHJcbiAgICAgICAgICAgICovXHJcbiAgICAgICAgICAgICAgdGhpcy50b2dnbGVSZWxvYWRGbGFnRm9yVGhlQ2FsbGVyKGJvZHkuaW5uZXJCb2R5LmlkKTtcclxuICAgICAgICAgICAgICBpZiAodGhpcy5hcHBDb25maWdTZXJ2aWNlLkFQUF9UWVBFID09PSBcIk1PQklMRVwiKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy4uLyddLCB7IC8qIGV4cGVyaW1lbnQqLyByZXBsYWNlVXJsOiB0cnVlLCByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlLCBzdGF0ZTogeyBpZDogYm9keS5pbm5lckJvZHkuaWQsIGluc3RhbmNlTnVtYmVyOiB0aGlzLmxpc3RJbnN0YW5jZSB9IH0pOyAgXHJcbiAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmFwcENvbmZpZ1NlcnZpY2UuQVBQX1RZUEUgPT09IFwiV0VCQVBQXCIpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnLi4vJ10sIHsgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSwgc3RhdGU6IHsgaWQ6IGJvZHkuaW5uZXJCb2R5LmlkLCBpbnN0YW5jZU51bWJlcjogdGhpcy5saXN0SW5zdGFuY2UgfSB9KTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMub25Ob3RPazIwMFJlc3BvbnNlKHgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIC8qKlxyXG4gICAqIFxyXG4gICAqIFBIxq/GoE5HIFRI4buoQyBOw4BZIMSQxq/hu6JDIFThuqBPIFJBIEtISSBERVYgVk5TLVBPUlRBTFxyXG4gICAqL1xyXG5cclxuICBvblNhdmUoZTogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5hbmltYXRlZFRleHRTZXJ2aWNlLnRleHQkLm5leHQoXHJcbiAgICAgIHRoaXMubWxzLnRyYW5zKEVudW1UcmFuc2xhdGVLZXkuVUlfRElBTE9HX0FERElOR19QTEVBU0VfV0FJVClcclxuICAgICk7XHJcbiAgICBpZiAoISF0aGlzLmFwcENvbmZpZ1NlcnZpY2UuREVCVUdfRU5BQkxFRCkge1xyXG4gICAgICBhbGVydChKU09OLnN0cmluZ2lmeShlLCBudWxsLCAyKSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNvbW1vbkh0dHBSZXF1ZXN0U2VydmljZVxyXG4gICAgICAubWFrZVBvc3RSZXF1ZXN0KFxyXG4gICAgICAgICdjcmVhdGUgJyArIHRoaXMuZW50aXR5VGFibGUsXHJcbiAgICAgICAgdGhpcy5jcnVkLnMhLFxyXG4gICAgICAgIGVcclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKCh4KSA9PiB7XHJcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgY29uc3QgYm9keTogSUZvcm1hdGVkUmVzcG9uc2UgPSB4LmJvZHk7XHJcbiAgICAgICAgdGhpcy5yZXNwb25zZVNlcnZpY2UucmVzb2x2ZShib2R5KTtcclxuICAgICAgICBpZiAoeC5vayAmJiB4LnN0YXR1cyA9PT0gMjAwICYmIGJvZHkuc3RhdHVzQ29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgICBpZiAoaXNEZXZNb2RlKCkpIHtcclxuICAgICAgICAgICAgdGhpcy5zZW5kU2lnbmFsKGJvZHkuaW5uZXJCb2R5KTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICB0aGlzLm9uSW5pdGlhbFZhbHVlU3RyaW5nUmVhZHkuZW1pdChcclxuICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkoZSlcclxuICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgLypcclxuICAgICAgICAgIFRyYW5zZmVyIG5ld2x5IGNyZWF0ZWQgcmVjb3JkIGlkXHJcbiAgICAgICAgICAqL1xyXG4gICAgICAgICAgdGhpcy50b2dnbGVSZWxvYWRGbGFnRm9yVGhlQ2FsbGVyKGJvZHkuaW5uZXJCb2R5LmlkKTtcclxuXHJcbiAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKHRoaXMudXJsU2VydmljZS5wcmV2aW91c1JvdXRlVXJsJC52YWx1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uQ2FuY2VsKCk6IHZvaWQge1xyXG4gICAgaWYgKCEhdGhpcy5hdXRvQ2FuY2VsTG9naWNPZmYpIHtcclxuICAgICAgdGhpcy5jYW5jZWxMb2dpYy5lbWl0KHRydWUpO1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuICAgIGlmICghIXRoaXMudXJsU2VydmljZS5wcmV2aW91c1JvdXRlVXJsJC52YWx1ZS5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCh0aGlzLnVybFNlcnZpY2UucHJldmlvdXNSb3V0ZVVybCQudmFsdWUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycuLi8nXSwgeyByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYnV0dG9uQ2xpY2soZTogSUNvcmVCdXR0b25WTlMpIHtcclxuICAgIHRoaXMub25CdXR0b25DbGljay5lbWl0KGUpO1xyXG4gIH1cclxuXHJcbiAgb25Gb3JtQ3JlYXRlZExvY2FsKGU6IElEeW5hbWljRm9ybUVtaXRPbkZvcm1DcmVhdGVkKTogdm9pZCB7XHJcbiAgICB0aGlzLmZvcm0gPSBlLmZvcm1Hcm91cDtcclxuICAgIHRoaXMuZm9ybS5wYXRjaFZhbHVlKHRoaXMuY3VycmVudFZhbHVlKTtcclxuICAgIHRoaXMub25Gb3JtQ3JlYXRlZC5lbWl0KHRoaXMuZm9ybSk7XHJcblxyXG4gICAgLy8gTm93IHdlIGNhbiByZXR1cm4gaW5pdEZvcm1WYWx1ZVN0cmluZyB0byB0aGUgY2FsbGVyXHJcbiAgICB0aGlzLm9uSW5pdGlhbFZhbHVlU3RyaW5nUmVhZHkuZW1pdChcclxuICAgICAgSlNPTi5zdHJpbmdpZnkodGhpcy5mb3JtLmdldFJhd1ZhbHVlKCkpXHJcbiAgICApO1xyXG4gIH1cclxufVxyXG4iLCJAaWYgKCEhbm9ybWFsTW9kZSkge1xyXG48ZGl2ICNjb250YWluZXIgY2xhc3M9XCJjb3JlLXBhZ2UtZWRpdC1jb250YWluZXJcIj5cclxuICAgIDxkaXYgW25nU3R5bGVdPVwieyBtYXJnaW46ICcwcHggMjRweCcgfVwiPlxyXG4gICAgICAgIDxjb3JlLXBhZ2UtaGVhZGVyIFt0aXRsZV09XCJjYXB0aW9uQ29kZVwiIFtoaWRlQnV0dG9uR3JvdXBdPVwidHJ1ZVwiPjwvY29yZS1wYWdlLWhlYWRlcj5cclxuICAgIDwvZGl2PlxyXG4gICAgQGlmICghIXNlY3Rpb25zLmxlbmd0aCkge1xyXG4gICAgPGNvcmUtZm9ybSBbZm9ybU5hbWVdPVwiJ2Zvcm0nXCIgW3N1Ym1pdFRleHRdPVwic3VibWl0VGV4dFwiIFtzaG93Q2FwdGlvbkJ1dHRvbl09XCJzaG93Q2FwdGlvbkJ1dHRvblwiXHJcbiAgICAgICAgW2xlZnRJbnB1dFNlY3Rpb25zXT1cImxlZnRJbnB1dFNlY3Rpb25zXCIgW2xlZnRJbnB1dFNlY3Rpb25zRmxleFNpemVdPVwibGVmdElucHV0U2VjdGlvbnNGbGV4U2l6ZVwiXHJcbiAgICAgICAgW2lucHV0U2VjdGlvbnNdPVwic2VjdGlvbnNcIiBbbW9kZSRdPVwibW9kZSRcIiBbYm90dG9tVGVtcGxhdGVSZWZdPVwiYm90dG9tVGVtcGxhdGVSZWZcIlxyXG4gICAgICAgIFtjdXN0b21Gb3JtQnV0dG9uSXRlbXNdPVwiY3VzdG9tRm9ybUJ1dHRvbkl0ZW1zXCIgW2Rpc2FibGVTYXZlQnV0dG9uXT1cImRpc2FibGVTYXZlQnV0dG9uXCJcclxuICAgICAgICBbY2hlY2tFcnJvciRdPVwiY2hlY2tFcnJvciRcIiAob25Gb3JtQ3JlYXRlZCk9XCJvbkZvcm1DcmVhdGVkTG9jYWwoJGV2ZW50KVwiIChvblN1Ym1pdCk9XCJvblN1Ym1pdCgpXCJcclxuICAgICAgICAob25TYXZlKT1cIm9uU2F2ZSgkZXZlbnQpXCIgKGJ1dHRvbkNsaWNrKT1cImJ1dHRvbkNsaWNrKCRldmVudClcIiAob25DYW5jYWwpPVwib25DYW5jZWwoKVwiPjwvY29yZS1mb3JtPlxyXG4gICAgfVxyXG48L2Rpdj5cclxufSBAZWxzZSB7XHJcbjxkaXYgY2xhc3M9XCJtb2RhbC1jb250YWluZXJcIiBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgb3ZlcmZsb3dZOiAnc2Nyb2xsJ1xyXG4gICAgfVwiPlxyXG4gICAgPGRpdiAjY29udGFpbmVyQmlnZ2VyIGNsYXNzPVwibW9kYWwtY29udGVudFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjdXN0b20taGVhZGVyLXBvcHVwXCI+XHJcbiAgICAgICAgICAgIDxpIGNsYXNzPVwiZmVhdGhlci14XCIgKGNsaWNrKT1cIm9uQ2FuY2VsKClcIj48L2k+XHJcbiAgICAgICAgICAgIDxkaXYgW25nU3R5bGVdPVwieyBtYXJnaW46ICcwcHggMjRweCcgfVwiPlxyXG4gICAgICAgICAgICAgICAgPGNvcmUtcGFnZS1oZWFkZXIgW3RpdGxlXT1cImNhcHRpb25Db2RlXCIgW2hpZGVCdXR0b25Hcm91cF09XCJ0cnVlXCI+PC9jb3JlLXBhZ2UtaGVhZGVyPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2ICNjb250YWluZXIgY2xhc3M9XCJjb3JlLXBhZ2UtZWRpdC1jb250YWluZXIgbm90LW5vcm1hbC1tb2RlXCIgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgb3ZlcmZsb3c6ICd2aXNpYmxlJ1xyXG4gICAgICAgICAgICB9XCI+XHJcbiAgICAgICAgICAgIEBpZiAoISFzZWN0aW9ucy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgPGNvcmUtZm9ybSBbZm9ybU5hbWVdPVwiJ2Zvcm0nXCIgW3N1Ym1pdFRleHRdPVwic3VibWl0VGV4dFwiIFtzaG93Q2FwdGlvbkJ1dHRvbl09XCJzaG93Q2FwdGlvbkJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICBbbGVmdElucHV0U2VjdGlvbnNdPVwibGVmdElucHV0U2VjdGlvbnNcIiBbbGVmdElucHV0U2VjdGlvbnNGbGV4U2l6ZV09XCJsZWZ0SW5wdXRTZWN0aW9uc0ZsZXhTaXplXCJcclxuICAgICAgICAgICAgICAgIFtpbnB1dFNlY3Rpb25zXT1cInNlY3Rpb25zXCIgW21vZGUkXT1cIm1vZGUkXCIgW2N1c3RvbUZvcm1CdXR0b25JdGVtc109XCJjdXN0b21Gb3JtQnV0dG9uSXRlbXNcIlxyXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVTYXZlQnV0dG9uXT1cImRpc2FibGVTYXZlQnV0dG9uXCIgW2NoZWNrRXJyb3IkXT1cImNoZWNrRXJyb3IkXCJcclxuICAgICAgICAgICAgICAgIChvbkZvcm1DcmVhdGVkKT1cIm9uRm9ybUNyZWF0ZWRMb2NhbCgkZXZlbnQpXCIgKG9uU3VibWl0KT1cIm9uU3VibWl0KClcIiAob25TYXZlKT1cIm9uU2F2ZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgIChvbkNhbmNhbCk9XCJvbkNhbmNlbCgpXCI+PC9jb3JlLWZvcm0+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj5cclxufVxyXG5AaWYgKGxvYWRpbmcpIHtcclxuPGFwcC1mdWxsc2NyZWVuLW1vZGFsLWxvYWRlcj48L2FwcC1mdWxsc2NyZWVuLW1vZGFsLWxvYWRlcj5cclxufSJdfQ==
|
|
@@ -44,7 +44,7 @@ export class CorePositionConcurrentSeekerComponent extends HuconcurrentlyCompone
|
|
|
44
44
|
this.selectedDataChange.emit(e);
|
|
45
45
|
}
|
|
46
46
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: CorePositionConcurrentSeekerComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
47
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.3", type: CorePositionConcurrentSeekerComponent, isStandalone: true, selector: "core-position-concurrent-seeker", inputs: { multiMode: "multiMode", preDefinedOuterParam$: "preDefinedOuterParam$", excludedIds$: "excludedIds$" }, outputs: { rowDoubleClick: "rowDoubleClick", selectedIdsChange: "selectedIdsChange", selectedDataChange: "selectedDataChange", columnsInit: "columnsInit" }, usesInheritance: true, ngImport: i0, template: "<div class=\"core-position-concurrent-seeker-container\">\r\n <core-page-list [hideCheck]=\"true\" [height]=\"800\" [apiDefinition]=\"apiDefinition\" [columns]=\"columns\" [editRoute]=\"editRoute\" [crud]=\"crud\"\r\n [title]=\"title\" [left]=\"orgTree\" [outerParam$]=\"outerParam$\"\r\n [outerInOperators]=\"outerInOperators\"\r\n [excludedIds$]=\"excludedIds$\"\r\n [outerFilterOperators]=\"outerFilterOperators\" [autoResizeWithWindow]=\"true\" [seekerMode]=\"true\" (rowDoubleClick)=\"onRowDoubleClick($event)\"></core-page-list>\r\n\r\n <ng-template #orgTree>\r\n <core-org-tree [(ngModel)]=\"orgIds\"\r\n (ngModelChange)=\"onOrgIdsChange($event)\" [fullWidthMode]=\"false\">\r\n </core-org-tree>\r\n </ng-template>\r\n \r\n</div>\r\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: CoreOrgTreeComponent, selector: "core-org-tree", inputs: ["lineColor", "fullWidthMode", "accessorMode", "fullRendering", "height", "disabledLoopExpand", "showCheckInheritance", "excludedIds$"], outputs: ["itemDoubleClick", "itemClick"] }, { kind: "component", type: CorePageListComponent, selector: "core-page-list", inputs: ["normalMode", "hideHeader", "hideButtonGroup", "seekerMode", "mccMode", "height", "headerWrap", "headerFirstRowHeight", "enableTimeZoneConverterForDateTimePeriodParameters", "showParamKit", "datePeriodComparisonFor", "datePeriodComparisonForLabelKey", "statusInclusionFor", "statusInclusionForLabelKey", "statusOptionsApi", "hideDatePeriodComparison", "hideStatusInclusion", "title", "hasIdOfStringType", "hideCheck", "apiDefinition", "columns", "frozen", "inlineTools", "inlineToolItems", "editRoute", "crud", "showListInlineTools", "top", "left", "hideLeft", "outerParam$", "outerSort", "outerFilterOperators", "outerInOperators", "autoResizeWithWindow", "extraManualOffset", "wrap", "rowHeight", "selfResolveCorePageHeaderButtonClick", "clearData$", "deleteValidateFn", "generateTemplateRequest", "importPreviewPath", "columnSearchDefaultOpen", "fixedPageSize", "disableDoubleClick", "noPaddingCell", "disableHighlightOnClick", "loading$", "excludedIds$"], outputs: ["corePageHeaderButtonClick", "rowClick", "rowDoubleClick", "selectedIdsChange", "selectedDataChange", "onInstanceCreated", "onInputFileBase64DataReady"] }] }); }
|
|
47
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.3", type: CorePositionConcurrentSeekerComponent, isStandalone: true, selector: "core-position-concurrent-seeker", inputs: { excludedColumns: "excludedColumns", multiMode: "multiMode", preDefinedOuterParam$: "preDefinedOuterParam$", excludedIds$: "excludedIds$" }, outputs: { rowDoubleClick: "rowDoubleClick", selectedIdsChange: "selectedIdsChange", selectedDataChange: "selectedDataChange", columnsInit: "columnsInit" }, usesInheritance: true, ngImport: i0, template: "<div class=\"core-position-concurrent-seeker-container\">\r\n <core-page-list [hideCheck]=\"true\" [height]=\"800\" [apiDefinition]=\"apiDefinition\" [columns]=\"columns\" [editRoute]=\"editRoute\" [crud]=\"crud\"\r\n [title]=\"title\" [left]=\"orgTree\" [outerParam$]=\"outerParam$\"\r\n [outerInOperators]=\"outerInOperators\"\r\n [excludedIds$]=\"excludedIds$\"\r\n [outerFilterOperators]=\"outerFilterOperators\" [autoResizeWithWindow]=\"true\" [seekerMode]=\"true\" (rowDoubleClick)=\"onRowDoubleClick($event)\"></core-page-list>\r\n\r\n <ng-template #orgTree>\r\n <core-org-tree [(ngModel)]=\"orgIds\"\r\n (ngModelChange)=\"onOrgIdsChange($event)\" [fullWidthMode]=\"false\">\r\n </core-org-tree>\r\n </ng-template>\r\n \r\n</div>\r\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: CoreOrgTreeComponent, selector: "core-org-tree", inputs: ["lineColor", "fullWidthMode", "accessorMode", "fullRendering", "height", "disabledLoopExpand", "showCheckInheritance", "excludedIds$"], outputs: ["itemDoubleClick", "itemClick"] }, { kind: "component", type: CorePageListComponent, selector: "core-page-list", inputs: ["normalMode", "hideHeader", "hideButtonGroup", "seekerMode", "mccMode", "height", "headerWrap", "headerFirstRowHeight", "enableTimeZoneConverterForDateTimePeriodParameters", "showParamKit", "datePeriodComparisonFor", "datePeriodComparisonForLabelKey", "statusInclusionFor", "statusInclusionForLabelKey", "statusOptionsApi", "hideDatePeriodComparison", "hideStatusInclusion", "title", "hasIdOfStringType", "hideCheck", "apiDefinition", "columns", "frozen", "inlineTools", "inlineToolItems", "editRoute", "crud", "showListInlineTools", "top", "left", "hideLeft", "outerParam$", "outerSort", "outerFilterOperators", "outerInOperators", "autoResizeWithWindow", "extraManualOffset", "wrap", "rowHeight", "selfResolveCorePageHeaderButtonClick", "clearData$", "deleteValidateFn", "generateTemplateRequest", "importPreviewPath", "columnSearchDefaultOpen", "fixedPageSize", "disableDoubleClick", "noPaddingCell", "disableHighlightOnClick", "loading$", "excludedIds$"], outputs: ["corePageHeaderButtonClick", "rowClick", "rowDoubleClick", "selectedIdsChange", "selectedDataChange", "onInstanceCreated", "onInputFileBase64DataReady"] }] }); }
|
|
48
48
|
}
|
|
49
49
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: CorePositionConcurrentSeekerComponent, decorators: [{
|
|
50
50
|
type: Component,
|
|
@@ -54,7 +54,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
|
|
|
54
54
|
CoreOrgTreeComponent,
|
|
55
55
|
CorePageListComponent,
|
|
56
56
|
], template: "<div class=\"core-position-concurrent-seeker-container\">\r\n <core-page-list [hideCheck]=\"true\" [height]=\"800\" [apiDefinition]=\"apiDefinition\" [columns]=\"columns\" [editRoute]=\"editRoute\" [crud]=\"crud\"\r\n [title]=\"title\" [left]=\"orgTree\" [outerParam$]=\"outerParam$\"\r\n [outerInOperators]=\"outerInOperators\"\r\n [excludedIds$]=\"excludedIds$\"\r\n [outerFilterOperators]=\"outerFilterOperators\" [autoResizeWithWindow]=\"true\" [seekerMode]=\"true\" (rowDoubleClick)=\"onRowDoubleClick($event)\"></core-page-list>\r\n\r\n <ng-template #orgTree>\r\n <core-org-tree [(ngModel)]=\"orgIds\"\r\n (ngModelChange)=\"onOrgIdsChange($event)\" [fullWidthMode]=\"false\">\r\n </core-org-tree>\r\n </ng-template>\r\n \r\n</div>\r\n" }]
|
|
57
|
-
}], propDecorators: {
|
|
57
|
+
}], propDecorators: { excludedColumns: [{
|
|
58
|
+
type: Input
|
|
59
|
+
}], multiMode: [{
|
|
58
60
|
type: Input
|
|
59
61
|
}], preDefinedOuterParam$: [{
|
|
60
62
|
type: Input
|
|
@@ -69,4 +71,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
|
|
|
69
71
|
}], columnsInit: [{
|
|
70
72
|
type: Output
|
|
71
73
|
}] } });
|
|
72
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
74
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS1wb3NpdGlvbi1jb25jdXJyZW50LXNlZWtlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtaGlzdGFmZi1hbHBoYS9zcmMvbGliL2FwcC9saWJyYXJpZXMvY29yZS1wb3NpdGlvbi1jb25jdXJyZW50LXNlZWtlci9jb3JlLXBvc2l0aW9uLWNvbmN1cnJlbnQtc2Vla2VyL2NvcmUtcG9zaXRpb24tY29uY3VycmVudC1zZWVrZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWhpc3RhZmYtYWxwaGEvc3JjL2xpYi9hcHAvbGlicmFyaWVzL2NvcmUtcG9zaXRpb24tY29uY3VycmVudC1zZWVrZXIvY29yZS1wb3NpdGlvbi1jb25jdXJyZW50LXNlZWtlci9jb3JlLXBvc2l0aW9uLWNvbmN1cnJlbnQtc2Vla2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUN4RixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJEQUEyRCxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLCtDQUErQyxDQUFDOzs7QUFldEYsTUFBTSxPQUFPLHFDQUFzQyxTQUFRLHVCQUF1QjtJQVpsRjs7UUFjVyxVQUFLLEdBQUcsZ0JBQWdCLENBQUMsNkNBQTZDLENBQUM7UUFLdkUsaUJBQVksR0FBRyxJQUFJLGVBQWUsQ0FBVyxFQUFFLENBQUMsQ0FBQztRQUVoRCxtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDcEMsc0JBQWlCLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUN2Qyx1QkFBa0IsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3hDLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztLQWtDNUM7SUFoQ1UsUUFBUTtRQUNmLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUNyQixJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUM3QyxDQUFBO1FBQ0QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQ3JCLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDdkMsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssS0FBSyxJQUFJLEVBQUU7Z0JBQ25DLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQzFCO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDO29CQUNwQixHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSztvQkFDekIsR0FBRyxDQUFDO2lCQUNMLENBQUMsQ0FBQzthQUNKO1FBQ0gsQ0FBQyxDQUFDLENBQ0gsQ0FBQTtRQUNELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBR0QsZ0JBQWdCLENBQUMsQ0FBTTtRQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVM7WUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUNsRCxDQUFDO0lBRUQsbUJBQW1CLENBQUMsQ0FBTTtRQUN4QixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ2hDLENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxDQUFRO1FBQzNCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDakMsQ0FBQzs4R0E1Q1UscUNBQXFDO2tHQUFyQyxxQ0FBcUMscWFDdEJsRCx1eUJBY0EseUREQUksWUFBWSw4QkFDWixXQUFXLCtWQUNYLG9CQUFvQixzUEFDcEIscUJBQXFCOzsyRkFLWixxQ0FBcUM7a0JBWmpELFNBQVM7K0JBQ0UsaUNBQWlDLGNBQy9CLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsb0JBQW9CO3dCQUNwQixxQkFBcUI7cUJBQ3RCOzhCQVFRLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFFSSxjQUFjO3NCQUF2QixNQUFNO2dCQUNHLGlCQUFpQjtzQkFBMUIsTUFBTTtnQkFDRyxrQkFBa0I7c0JBQTNCLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEVudW1UcmFuc2xhdGVLZXkgfSBmcm9tIFwiYWxwaGEtZ2xvYmFsLWNvbnN0YW50c1wiO1xyXG5pbXBvcnQgeyBIdWNvbmN1cnJlbnRseUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2h1Y29uY3VycmVudGx5L2h1Y29uY3VycmVudGx5LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBDb3JlT3JnVHJlZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvcmUtb3JnLXRyZWUvY29yZS1vcmctdHJlZS9jb3JlLW9yZy10cmVlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENvcmVQYWdlTGlzdENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvcmUtcGFnZS1saXN0L2NvcmUtcGFnZS1saXN0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEVudW1Db3JlU2Vla2VyQ29sdW1uQ29udHJhY3QsIEVudW1Db3JlU2Vla2VyQ29sdW1uUG9zaXRpb25Db25jdXJyZW50IH0gZnJvbSAnLi4vLi4vY29yZS1mb3JtLWNvbnRyb2wtc2Vla2VyL0VudW1Db3JlU2Vla2VyQ29sdW1uJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnY29yZS1wb3NpdGlvbi1jb25jdXJyZW50LXNlZWtlcicsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuICAgIENvcmVPcmdUcmVlQ29tcG9uZW50LFxyXG4gICAgQ29yZVBhZ2VMaXN0Q29tcG9uZW50LCAgICBcclxuICBdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jb3JlLXBvc2l0aW9uLWNvbmN1cnJlbnQtc2Vla2VyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9jb3JlLXBvc2l0aW9uLWNvbmN1cnJlbnQtc2Vla2VyLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIENvcmVQb3NpdGlvbkNvbmN1cnJlbnRTZWVrZXJDb21wb25lbnQgZXh0ZW5kcyBIdWNvbmN1cnJlbnRseUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIG92ZXJyaWRlIHRpdGxlID0gRW51bVRyYW5zbGF0ZUtleS5VSV9DT01QT05FTlRfVElUTEVfUE9TSVRJT05fQ09OQ1VSUkVOVF9TRUVLRVI7XHJcblxyXG4gIEBJbnB1dCgpIGV4Y2x1ZGVkQ29sdW1ucyE6IEVudW1Db3JlU2Vla2VyQ29sdW1uUG9zaXRpb25Db25jdXJyZW50W107XHJcbiAgQElucHV0KCkgbXVsdGlNb2RlITogYm9vbGVhbjtcclxuICBASW5wdXQoKSBwcmVEZWZpbmVkT3V0ZXJQYXJhbSQhOiBCZWhhdmlvclN1YmplY3Q8YW55PjtcclxuICBASW5wdXQoKSBleGNsdWRlZElkcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcltdPihbXSk7XHJcblxyXG4gIEBPdXRwdXQoKSByb3dEb3VibGVDbGljayA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgc2VsZWN0ZWRJZHNDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHNlbGVjdGVkRGF0YUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgY29sdW1uc0luaXQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIG92ZXJyaWRlIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgIHRoaXMubWxzLmxhbmckLnN1YnNjcmliZSh4ID0+IHRoaXMubGFuZyA9IHgpXHJcbiAgICApXHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgdGhpcy5wcmVEZWZpbmVkT3V0ZXJQYXJhbSQuc3Vic2NyaWJlKHggPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLm91dGVyUGFyYW0kLnZhbHVlID09PSBudWxsKSB7XHJcbiAgICAgICAgICB0aGlzLm91dGVyUGFyYW0kLm5leHQoeCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMub3V0ZXJQYXJhbSQubmV4dCh7XHJcbiAgICAgICAgICAgIC4uLnRoaXMub3V0ZXJQYXJhbSQudmFsdWUsXHJcbiAgICAgICAgICAgIC4uLnhcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgIClcclxuICAgIHRoaXMuY29sdW1uc0luaXQuZW1pdCh0aGlzLmNvbHVtbnMpO1xyXG4gIH1cclxuXHJcblxyXG4gIG9uUm93RG91YmxlQ2xpY2soZTogYW55KSB7XHJcbiAgICBpZiAoIXRoaXMubXVsdGlNb2RlKSB0aGlzLnJvd0RvdWJsZUNsaWNrLmVtaXQoZSlcclxuICB9XHJcblxyXG4gIG9uU2VsZWN0ZWRJZHNDaGFuZ2UoZTogYW55KSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkSWRzQ2hhbmdlLmVtaXQoZSlcclxuICB9XHJcblxyXG4gIG9uU2VsZWN0ZWREYXRhQ2hhbmdlKGU6IGFueVtdKSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkRGF0YUNoYW5nZS5lbWl0KGUpXHJcbiAgfVxyXG5cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiY29yZS1wb3NpdGlvbi1jb25jdXJyZW50LXNlZWtlci1jb250YWluZXJcIj5cclxuICAgIDxjb3JlLXBhZ2UtbGlzdCBbaGlkZUNoZWNrXT1cInRydWVcIiBbaGVpZ2h0XT1cIjgwMFwiIFthcGlEZWZpbml0aW9uXT1cImFwaURlZmluaXRpb25cIiBbY29sdW1uc109XCJjb2x1bW5zXCIgW2VkaXRSb3V0ZV09XCJlZGl0Um91dGVcIiBbY3J1ZF09XCJjcnVkXCJcclxuICAgICAgICBbdGl0bGVdPVwidGl0bGVcIiBbbGVmdF09XCJvcmdUcmVlXCIgW291dGVyUGFyYW0kXT1cIm91dGVyUGFyYW0kXCJcclxuICAgICAgICBbb3V0ZXJJbk9wZXJhdG9yc109XCJvdXRlckluT3BlcmF0b3JzXCJcclxuICAgICAgICBbZXhjbHVkZWRJZHMkXT1cImV4Y2x1ZGVkSWRzJFwiXHJcbiAgICAgICAgW291dGVyRmlsdGVyT3BlcmF0b3JzXT1cIm91dGVyRmlsdGVyT3BlcmF0b3JzXCIgW2F1dG9SZXNpemVXaXRoV2luZG93XT1cInRydWVcIiBbc2Vla2VyTW9kZV09XCJ0cnVlXCIgKHJvd0RvdWJsZUNsaWNrKT1cIm9uUm93RG91YmxlQ2xpY2soJGV2ZW50KVwiPjwvY29yZS1wYWdlLWxpc3Q+XHJcblxyXG4gICAgPG5nLXRlbXBsYXRlICNvcmdUcmVlPlxyXG4gICAgICAgIDxjb3JlLW9yZy10cmVlIFsobmdNb2RlbCldPVwib3JnSWRzXCJcclxuICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25PcmdJZHNDaGFuZ2UoJGV2ZW50KVwiIFtmdWxsV2lkdGhNb2RlXT1cImZhbHNlXCI+XHJcbiAgICAgICAgPC9jb3JlLW9yZy10cmVlPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIFxyXG48L2Rpdj5cclxuIl19
|