gamma-app-controller 1.2.6 → 1.2.8
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/esm2020/lib/gamma-app-controller.service.mjs +22 -7
- package/esm2020/lib/shared/advanced-component/gamma-advance-operator-table/gamma-advance-operator-table.component.mjs +1 -2
- package/esm2020/lib/shared/gamma-advance-filter/gamma-advance-filter.component.mjs +4 -4
- package/esm2020/lib/template-module/kpiWithSingleLayout/kpi-single-layout.service.mjs +9 -1
- package/esm2020/lib/template-module/kpiWithSingleLayout/kpi-with-dataset.component.mjs +9 -7
- package/esm2020/lib/template-module/kpiWithSingleLayout/single-layout-dataset-call.service.mjs +4 -4
- package/fesm2015/gamma-app-controller.mjs +158 -138
- package/fesm2015/gamma-app-controller.mjs.map +1 -1
- package/fesm2020/gamma-app-controller.mjs +156 -135
- package/fesm2020/gamma-app-controller.mjs.map +1 -1
- package/lib/gamma-app-controller.service.d.ts +7 -2
- package/lib/shared/gamma-advance-filter/gamma-advance-filter.component.d.ts +3 -3
- package/lib/template-module/kpiWithSingleLayout/kpi-single-layout.service.d.ts +1 -0
- package/lib/template-module/kpiWithSingleLayout/single-layout-dataset-call.service.d.ts +2 -2
- package/package.json +1 -1
|
@@ -1,12 +1,27 @@
|
|
|
1
1
|
import { Inject, Injectable } from '@angular/core';
|
|
2
|
+
import { catchError, map, throwError } from 'rxjs';
|
|
3
|
+
import { APP_ENVIRONMENT } from './application-controller/environment';
|
|
2
4
|
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@angular/common/http";
|
|
3
6
|
export class GammaAppControllerService {
|
|
4
|
-
constructor(
|
|
5
|
-
this.
|
|
6
|
-
|
|
7
|
+
constructor(environment, http) {
|
|
8
|
+
this.environment = environment;
|
|
9
|
+
this.http = http;
|
|
10
|
+
console.log(this.environment.apiEndpoint);
|
|
11
|
+
}
|
|
12
|
+
getFilterDataByDrillDown(apiName) {
|
|
13
|
+
const apiUrl = this.environment.appUrl + apiName;
|
|
14
|
+
return this.http
|
|
15
|
+
.get(apiUrl, { withCredentials: true })
|
|
16
|
+
.pipe(map((response) => {
|
|
17
|
+
return response;
|
|
18
|
+
}), catchError(this.handleError));
|
|
19
|
+
}
|
|
20
|
+
handleError(error) {
|
|
21
|
+
return throwError(error);
|
|
7
22
|
}
|
|
8
23
|
}
|
|
9
|
-
GammaAppControllerService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: GammaAppControllerService, deps: [{ token:
|
|
24
|
+
GammaAppControllerService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: GammaAppControllerService, deps: [{ token: APP_ENVIRONMENT }, { token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
10
25
|
GammaAppControllerService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: GammaAppControllerService, providedIn: 'root' });
|
|
11
26
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: GammaAppControllerService, decorators: [{
|
|
12
27
|
type: Injectable,
|
|
@@ -15,6 +30,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
15
30
|
}]
|
|
16
31
|
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
17
32
|
type: Inject,
|
|
18
|
-
args: [
|
|
19
|
-
}] }]; } });
|
|
20
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
33
|
+
args: [APP_ENVIRONMENT]
|
|
34
|
+
}] }, { type: i1.HttpClient }]; } });
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FtbWEtYXBwLWNvbnRyb2xsZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2dhbW1hLWFwcC1jb250cm9sbGVyL3NyYy9saWIvZ2FtbWEtYXBwLWNvbnRyb2xsZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQW1CLFVBQVUsRUFBRSxHQUFHLEVBQWMsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQzs7O0FBS3ZFLE1BQU0sT0FBTyx5QkFBeUI7SUFFcEMsWUFBOEMsV0FBZ0IsRUFBUyxJQUFnQjtRQUF6QyxnQkFBVyxHQUFYLFdBQVcsQ0FBSztRQUFTLFNBQUksR0FBSixJQUFJLENBQVk7UUFDckYsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRCx3QkFBd0IsQ0FBQyxPQUFPO1FBQzFCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQztRQUNqRCxPQUFPLElBQUksQ0FBQyxJQUFJO2FBQ1gsR0FBRyxDQUFDLE1BQU0sRUFBRSxFQUFFLGVBQWUsRUFBRSxJQUFJLEVBQUUsQ0FBQzthQUN0QyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBa0IsRUFBRSxFQUFFO1lBQzdCLE9BQU8sUUFBUSxDQUFDO1FBQ3BCLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUUxQyxDQUFDO0lBRUYsV0FBVyxDQUFDLEtBQVU7UUFDakIsT0FBTyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0IsQ0FBQzs7c0hBbEJRLHlCQUF5QixrQkFFZixlQUFlOzBIQUZ6Qix5QkFBeUIsY0FGeEIsTUFBTTsyRkFFUCx5QkFBeUI7a0JBSHJDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFHZSxNQUFNOzJCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNhdGNoRXJyb3IsIG1hcCwgT2JzZXJ2YWJsZSwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQVBQX0VOVklST05NRU5UIH0gZnJvbSAnLi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL2Vudmlyb25tZW50JztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgR2FtbWFBcHBDb250cm9sbGVyU2VydmljZSB7XG5cbiAgY29uc3RydWN0b3IoIEBJbmplY3QoQVBQX0VOVklST05NRU5UKSBwcml2YXRlIGVudmlyb25tZW50OiBhbnksIHB1YmxpYyBodHRwOiBIdHRwQ2xpZW50LCkge1xuICAgIGNvbnNvbGUubG9nKHRoaXMuZW52aXJvbm1lbnQuYXBpRW5kcG9pbnQpO1xuICB9XG5cbiAgZ2V0RmlsdGVyRGF0YUJ5RHJpbGxEb3duKGFwaU5hbWUpOiBhbnkge1xuICAgICAgICBjb25zdCBhcGlVcmwgPSB0aGlzLmVudmlyb25tZW50LmFwcFVybCArIGFwaU5hbWU7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgICAgICAgIC5nZXQoYXBpVXJsLCB7IHdpdGhDcmVkZW50aWFsczogdHJ1ZSB9KVxuICAgICAgICAgICAgLnBpcGUobWFwKChyZXNwb25zZTogUmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgICAgICAgICB9KSwgY2F0Y2hFcnJvcih0aGlzLmhhbmRsZUVycm9yKSk7XG5cbiAgICB9XG5cbiAgIGhhbmRsZUVycm9yKGVycm9yOiBhbnkpOiBPYnNlcnZhYmxlPFJlc3BvbnNlPiB7XG4gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9yKTtcbiAgICB9XG5cbiAgXG59XG4iXX0=
|
|
@@ -25,7 +25,6 @@ export class GammaAdvanceOperatorTableComponent {
|
|
|
25
25
|
return;
|
|
26
26
|
}
|
|
27
27
|
else {
|
|
28
|
-
debugger;
|
|
29
28
|
this.isLoader = true;
|
|
30
29
|
this.page_config = value;
|
|
31
30
|
this.page_parms = value.titleParams;
|
|
@@ -184,4 +183,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
184
183
|
type: Input,
|
|
185
184
|
args: ['chartDataSource']
|
|
186
185
|
}] } });
|
|
187
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FtbWEtYWR2YW5jZS1vcGVyYXRvci10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9nYW1tYS1hcHAtY29udHJvbGxlci9zcmMvbGliL3NoYXJlZC9hZHZhbmNlZC1jb21wb25lbnQvZ2FtbWEtYWR2YW5jZS1vcGVyYXRvci10YWJsZS9nYW1tYS1hZHZhbmNlLW9wZXJhdG9yLXRhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dhbW1hLWFwcC1jb250cm9sbGVyL3NyYy9saWIvc2hhcmVkL2FkdmFuY2VkLWNvbXBvbmVudC9nYW1tYS1hZHZhbmNlLW9wZXJhdG9yLXRhYmxlL2dhbW1hLWFkdmFuY2Utb3BlcmF0b3ItdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLE1BQU0sTUFBTSwrQ0FBK0MsQ0FBQzs7Ozs7Ozs7QUFPbkUsTUFBTSxPQUFPLGtDQUFrQztJQXVGN0MsWUFBbUIsYUFBNEI7UUFBNUIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFyRi9DLHVCQUFrQixHQUFRLEVBQUUsQ0FBQztRQUc3QixhQUFRLEdBQVksSUFBSSxDQUFDO1FBQ3pCLG9CQUFlLEdBQVEsRUFBRSxDQUFDO1FBQzFCLG1CQUFjLEdBQUcsQ0FBQyxhQUFhLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsdUNBQXVDLEVBQUUsZUFBZSxDQUFDLENBQUE7UUFJOUgsY0FBUyxHQUFXLE9BQU8sQ0FBQztRQUtYLHlCQUFvQixHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzdELGNBQVMsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNsRCxpQ0FBNEIsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUN0RixxQkFBZ0IsR0FBWSxJQUFJLENBQUM7SUFvRWtCLENBQUM7SUFsRXBELElBQ0ksZUFBZSxDQUFDLEtBQUs7UUFDdkIsSUFBSSxLQUFLLEtBQUssU0FBUyxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQzdDLE9BQU87U0FDUjthQUFNO1lBQ0wsUUFBUSxDQUFBO1lBQ1IsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7WUFDckIsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7WUFDekIsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUMsV0FBVyxDQUFDO1lBQ3BDLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxXQUFXLElBQUksS0FBSyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsV0FBVyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7WUFDcEwsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQzlHLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7WUFDeEgsSUFBSSxLQUFLLENBQUMsU0FBUyxDQUFDLFVBQVUsSUFBSSxLQUFLLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO2dCQUV6RSxJQUFJLEtBQUssQ0FBQyxTQUFTLENBQUMsT0FBTyxJQUFJLE9BQU8sRUFBRTtvQkFDdEMsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxVQUFVO3lCQUMxQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDO3lCQUNuQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFFbkUsTUFBTSxnQkFBZ0IsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ3ZDLE1BQU0sZUFBZSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxLQUFLLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxDQUFDO29CQUNuRyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsZUFBZSxDQUFDO2lCQUUzQztxQkFBTSxJQUFJLEtBQUssQ0FBQyxTQUFTLENBQUMsT0FBTyxJQUFJLFNBQVMsRUFBRTtvQkFDL0MsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQztvQkFFbEQsSUFBSSxZQUFZLEdBQUcsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7b0JBQ2xHLElBQUksWUFBWSxJQUFJLFlBQVksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO3dCQUM3QyxNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUU7NEJBQ3RELE1BQU0sTUFBTSxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQzs0QkFDMUIsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0NBRWhDLE1BQU0sZ0JBQWdCLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxTQUFTLEtBQUssR0FBRyxDQUFDLENBQUM7Z0NBQ3pFLElBQUksZ0JBQWdCLEVBQUU7b0NBQ3BCLElBQUksZ0JBQWdCLENBQUMsVUFBVSxJQUFJLGdCQUFnQixDQUFDLFVBQVUsS0FBSyxFQUFFLEVBQUU7d0NBRXJFLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBO3FDQUNqRjtpQ0FDRjtnQ0FHRCxJQUFJLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFO29DQUNyRCxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztpQ0FDeEQ7NEJBQ0gsQ0FBQyxDQUFDLENBQUM7NEJBQ0gsT0FBTyxNQUFNLENBQUM7d0JBQ2hCLENBQUMsQ0FBQyxDQUFDO3dCQUNILElBQUksQ0FBQyxrQkFBa0IsR0FBRyxVQUFVLENBQUM7cUJBQ3RDO3lCQUFNO3dCQUNMLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxHQUFHLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxVQUFVLElBQUksS0FBSyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO3dCQUNuSyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUM7cUJBQ3REO2lCQUNGO2dCQUNELFVBQVUsQ0FBQyxHQUFHLEVBQUU7b0JBQ2QsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7Z0JBQ3hCLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQzthQUNUO2lCQUFNO2dCQUNMLFVBQVUsQ0FBQyxHQUFHLEVBQUU7b0JBQ2QsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEVBQUUsQ0FBQztvQkFDN0IsSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUM7b0JBQ3JDLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO2dCQUN4QixDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7YUFDVDtTQUNGO0lBQ0gsQ0FBQztJQUlELFFBQVE7SUFDUixDQUFDO0lBR0QsZ0JBQWdCLENBQUMsT0FBWTtRQUMzQixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ3BDLE9BQU87Z0JBQ0wsT0FBTyxFQUFFLElBQUk7Z0JBQ2IsU0FBUyxFQUFFLEdBQUc7Z0JBQ2QsT0FBTyxFQUFFLEdBQUc7YUFDYixDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBSUQsYUFBYSxDQUFDLEdBQVE7UUFDcEIsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFDRCxZQUFZLENBQUMsR0FBVztRQUN0QixJQUFJLENBQUMsU0FBUyxHQUFHLEdBQUcsQ0FBQztJQUN2QixDQUFDO0lBRUQsVUFBVSxDQUFDLENBQUM7UUFFVixNQUFNLFlBQVksR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQTtRQUM1RixJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxHQUFHLFlBQVksQ0FBQztRQUN2RixJQUFJLEdBQUcsR0FBRztZQUNSLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSTtZQUNaLFNBQVMsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxTQUFTO1lBQy9DLFVBQVUsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUs7WUFDL0QsTUFBTSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTTtZQUMvQixhQUFhLEVBQUUsU0FBUztZQUN4QixhQUFhLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNO1lBQ3RDLFdBQVcsRUFBRSxFQUFFO1NBQ2hCLENBQUE7UUFDRCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBRUQsWUFBWSxDQUFDLENBQUM7UUFFWixNQUFNLFlBQVksR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUE7UUFDaEcsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsR0FBRyxZQUFZLENBQUM7UUFFdkYsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLElBQUksQ0FBQyxDQUFDLFdBQVcsSUFBSSxDQUFDLEVBQUU7WUFDL0MsSUFBSSxDQUFDLENBQUMsTUFBTSxJQUFJLFNBQVMsRUFBRTtnQkFDekIsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLO29CQUFFLENBQUMsQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO2dCQUUzQixJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFO29CQUN2RCxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUU7d0JBQ3ZGLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDOzRCQUNYLElBQUksRUFBRSxPQUFPLENBQUMsVUFBVTs0QkFDeEIsV0FBVyxFQUFFLEdBQUcsRUFBRTtnQ0FDaEIsSUFBSSxjQUFjLEdBQUc7b0NBQ25CLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUk7b0NBQ2hCLFNBQVMsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxTQUFTO29DQUMvQyxVQUFVLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLO29DQUMvRCxNQUFNLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNO29DQUMvQixhQUFhLEVBQUUsU0FBUztvQ0FDeEIsYUFBYSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTTtvQ0FDdEMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxNQUFNO2lDQUU1QixDQUFBO2dDQUNELElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUE7NEJBQ3hELENBQUM7eUJBQ0YsQ0FBQyxDQUFDO3FCQUNKO2dCQUNILENBQUMsQ0FBQyxDQUFDO2FBQ0o7U0FDRjtJQUNILENBQUM7SUFFRCxjQUFjLENBQUMsS0FBVTtRQUV2QixNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUM7UUFDMUIsSUFBSSxXQUFXLEtBQUssTUFBTSxFQUFFO1lBQzFCLE9BQU8sTUFBTSxDQUFDO1NBQ2Y7UUFDRCxNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDekMsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsSUFBSSxZQUFZLEdBQUcsQ0FBQyxFQUFFO1lBQzVDLE9BQU8sWUFBWSxDQUFDO1NBQ3JCO0lBQ0gsQ0FBQztJQUVELG1CQUFtQixDQUFDLFlBQW9CLEVBQUUsS0FBSztRQUM3QyxJQUFJLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsS0FBSyxVQUFVLEVBQUU7WUFDMUQsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ2hEO2FBQU07WUFDTCxPQUFPLENBQUMsS0FBSyxDQUFDLFlBQVksWUFBWSw2QkFBNkIsQ0FBQyxDQUFDO1lBQ3JFLE9BQU8sSUFBSSxDQUFDO1NBQ2I7SUFDSCxDQUFDO0lBR0QsZ0JBQWdCLENBQUMsS0FBYTtRQUU1QixJQUFJLGNBQWMsR0FBRyxDQUFDLFlBQVksRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQzlFLElBQUksSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDdkQsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQ2xDLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUE7WUFDOUIsQ0FBQyxDQUFDLENBQUM7U0FDSjtRQUNELE9BQU8sQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3pDLENBQUM7OytIQWhNVSxrQ0FBa0M7bUhBQWxDLGtDQUFrQyx5UUNYL0MseWpOQTBHTTsyRkQvRk8sa0NBQWtDO2tCQUo5QyxTQUFTOytCQUNFLGtDQUFrQztvR0FtQjNCLG9CQUFvQjtzQkFBcEMsTUFBTTtnQkFDVSxTQUFTO3NCQUF6QixNQUFNO2dCQUNVLDRCQUE0QjtzQkFBNUMsTUFBTTtnQkFJSCxlQUFlO3NCQURsQixLQUFLO3VCQUFDLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbIlxuXG5cbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCBtb21lbnQgZnJvbSAnLi4vLi4vLi4vYXBwbGljYXRpb24tY29udHJvbGxlci9tb21lbnQtaGVscGVyJztcbmltcG9ydCB7IENvbW1vblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL2NvbW1vbic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1nYW1tYS1hZHZhbmNlLW9wZXJhdG9yLXRhYmxlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2dhbW1hLWFkdmFuY2Utb3BlcmF0b3ItdGFibGUuY29tcG9uZW50Lmh0bWwnLFxufSlcbmV4cG9ydCBjbGFzcyBHYW1tYUFkdmFuY2VPcGVyYXRvclRhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgaXNKc29uUHJldmlldzogYm9vbGVhblxuICBkYXRhU291cnNlRm9yVGFibGU6IGFueSA9IFtdO1xuICBqc2FvbkRhdGFzb3VyY2U6IGFueTtcbiAgY29uZmlnQ29sdW1lOiBhbnk7XG4gIGlzTG9hZGVyOiBib29sZWFuID0gdHJ1ZTtcbiAgdGFibGVEYXRhQ29uZmlnOiBhbnkgPSB7fTtcbiAgZW5yaWNoTmFtZUxpc3QgPSBbXCJmb3JtYXRCeXRlc1wiLCBcImZvcm1hdEJ5dHNUb0tiXCIsIFwiZm9ybWF0Qnl0c1RvR2JcIiwgXCJyZWZvcm1hdE51bWJlcldpdGhUaG91c2FuZFNlcGFyYXRvclYzXCIsIFwiZm9ybWF0Qnl0ZXN2MlwiXVxuICBwYWdlX2NvbmZpZzogYW55O1xuICBwYWdlX3Bhcm1zOiBhbnk7XG4gIHBhZ2Vfc2VsZWN0ZWRfb3BlcmF0b3I6IGFueTtcbiAgYWN0aXZlVGFiOiBzdHJpbmcgPSAnYmFzaWMnO1xuXG4gIHRhYmxlSGVpZ2h0OiBhbnk7XG4gIHRhYmxlU2hvcnRCeTogYW55O1xuXG4gIEBPdXRwdXQoKSBwdWJsaWMgZ2V0VGFibGVDb25maWdPdXRQdXQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgcHVibGljIG9Sb3dDbGljazogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBwdWJsaWMgb25yaWdodENsaWNrQ29udGV4dFNlbGVjdGlvbjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIHJpZ2h0Q2xpY2tFbmFibGU6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIEBJbnB1dCgnY2hhcnREYXRhU291cmNlJylcbiAgc2V0IGNoYXJ0RGF0YVNvdXJjZSh2YWx1ZSkge1xuICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSB7XG4gICAgICBkZWJ1Z2dlclxuICAgICAgdGhpcy5pc0xvYWRlciA9IHRydWU7XG4gICAgICB0aGlzLnBhZ2VfY29uZmlnID0gdmFsdWU7XG4gICAgICB0aGlzLnBhZ2VfcGFybXMgPSB2YWx1ZS50aXRsZVBhcmFtcztcbiAgICAgIHRoaXMudGFibGVIZWlnaHQgPSAodmFsdWUua3BpQ29uZmlnLmRhdGFDb25maWcudGFibGVIZWlnaHQgJiYgdmFsdWUua3BpQ29uZmlnLmRhdGFDb25maWcudGFibGVIZWlnaHQgIT09IFwiXCIpID8gdGhpcy5zZXRUYWJsZUhlaWdodCh2YWx1ZS5rcGlDb25maWcuZGF0YUNvbmZpZy50YWJsZUhlaWdodCkgOiAnYXV0byc7XG4gICAgICB0aGlzLnRhYmxlU2hvcnRCeSA9ICh2YWx1ZS5rcGlDb25maWcuZGF0YUNvbmZpZy50YWJsZVNvcnRCeSkgPyB2YWx1ZS5rcGlDb25maWcuZGF0YUNvbmZpZ1sndGFibGVTb3J0QnknXSA6IFtdO1xuICAgICAgdGhpcy5yaWdodENsaWNrRW5hYmxlID0gKHZhbHVlLmtwaUNvbmZpZy52aWV3UHJvcGVydGllcykgPyB2YWx1ZS5rcGlDb25maWcudmlld1Byb3BlcnRpZXMuZW5hYmxlUmlnaHRDbGlja0V2ZW50IDogZmFsc2U7XG4gICAgICBpZiAodmFsdWUua3BpQ29uZmlnLmRhdGFTb3VyY2UgJiYgdmFsdWUua3BpQ29uZmlnLmRhdGFTb3VyY2UubGVuZ3RoICE9PSAwKSB7XG5cbiAgICAgICAgaWYgKHZhbHVlLmtwaUNvbmZpZy5mb3JtYXRlID09IFwiZGFpbHlcIikge1xuICAgICAgICAgIGNvbnN0IHNvcnRlZERhdGEgPSB2YWx1ZS5rcGlDb25maWcuZGF0YVNvdXJjZVxuICAgICAgICAgICAgLmZpbHRlcihyZWNvcmQgPT4gcmVjb3JkLnJlY29yZERhdGUpXG4gICAgICAgICAgICAuc29ydCgoYSwgYikgPT4gbW9tZW50KGIucmVjb3JkRGF0ZSkuZGlmZihtb21lbnQoYS5yZWNvcmREYXRlKSkpO1xuXG4gICAgICAgICAgY29uc3QgbW9zdFJlY2VudFJlY29yZCA9IHNvcnRlZERhdGFbMF07XG4gICAgICAgICAgY29uc3QgZmlsdGVyZWRPYmplY3RzID0gc29ydGVkRGF0YS5maWx0ZXIoZGF0YSA9PiBkYXRhLnJlY29yZERhdGUgPT09IG1vc3RSZWNlbnRSZWNvcmQucmVjb3JkRGF0ZSk7XG4gICAgICAgICAgdGhpcy5kYXRhU291cnNlRm9yVGFibGUgPSBmaWx0ZXJlZE9iamVjdHM7XG5cbiAgICAgICAgfSBlbHNlIGlmICh2YWx1ZS5rcGlDb25maWcuZm9ybWF0ZSA9PSBcIm1vbnRobHlcIikge1xuICAgICAgICAgIHRoaXMudGFibGVEYXRhQ29uZmlnID0gdmFsdWUua3BpQ29uZmlnLmRhdGFDb25maWc7XG5cbiAgICAgICAgICBsZXQgdGFibGVDb2x1bW5zID0gKHZhbHVlLmtwaUNvbmZpZy5kYXRhQ29uZmlnLmNvbHVtbnMpID8gdmFsdWUua3BpQ29uZmlnLmRhdGFDb25maWcuY29sdW1ucyA6IFtdO1xuICAgICAgICAgIGlmICh0YWJsZUNvbHVtbnMgJiYgdGFibGVDb2x1bW5zLmxlbmd0aCAhPT0gMCkge1xuICAgICAgICAgICAgY29uc3QgZGF0YVNvdXJjZSA9IHZhbHVlLmtwaUNvbmZpZy5kYXRhU291cmNlLm1hcChvYmogPT4ge1xuICAgICAgICAgICAgICBjb25zdCBuZXdPYmogPSB7IC4uLm9iaiB9O1xuICAgICAgICAgICAgICBPYmplY3Qua2V5cyhuZXdPYmopLmZvckVhY2goa2V5ID0+IHtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGZvdW5kTWF0Y2hPYmplY3QgPSB0YWJsZUNvbHVtbnMuZmluZChvYmogPT4gb2JqLmRhdGFGaWVsZCA9PT0ga2V5KTtcbiAgICAgICAgICAgICAgICBpZiAoZm91bmRNYXRjaE9iamVjdCkge1xuICAgICAgICAgICAgICAgICAgaWYgKGZvdW5kTWF0Y2hPYmplY3QuZW5yaWNoTmFtZSAmJiBmb3VuZE1hdGNoT2JqZWN0LmVucmljaE5hbWUgIT09IFwiXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coZm91bmRNYXRjaE9iamVjdC5lbnJpY2hOYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgbmV3T2JqW2tleV0gPSB0aGlzLmNhbGxTZXJ2aWNlRnVuY3Rpb24oZm91bmRNYXRjaE9iamVjdC5lbnJpY2hOYW1lLCBuZXdPYmpba2V5XSlcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cblxuICAgICAgICAgICAgICAgIGlmIChrZXkudG9Mb3dlckNhc2UoKS5pbmNsdWRlcygnZGF0ZScpICYmIG5ld09ialtrZXldKSB7XG4gICAgICAgICAgICAgICAgICBuZXdPYmpba2V5XSA9IG1vbWVudChuZXdPYmpba2V5XSkuZm9ybWF0KFwiWVlZWS1NTS1ERFwiKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICByZXR1cm4gbmV3T2JqO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLmRhdGFTb3Vyc2VGb3JUYWJsZSA9IGRhdGFTb3VyY2U7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudGFibGVEYXRhQ29uZmlnLmNvbHVtbnMgPSAodmFsdWUua3BpQ29uZmlnLmRhdGFTb3VyY2UgJiYgdmFsdWUua3BpQ29uZmlnLmRhdGFTb3VyY2UubGVuZ3RoICE9PSAwKSA/IHRoaXMudHJhbnNmb3JtQ29sdW1ucyh2YWx1ZS5rcGlDb25maWcuZGF0YVNvdXJjZVswXSkgOiBbXTtcbiAgICAgICAgICAgIHRoaXMuZGF0YVNvdXJzZUZvclRhYmxlID0gdmFsdWUua3BpQ29uZmlnLmRhdGFTb3VyY2U7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuaXNMb2FkZXIgPSBmYWxzZTtcbiAgICAgICAgfSwgMjAwKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuZGF0YVNvdXJzZUZvclRhYmxlID0gW107XG4gICAgICAgICAgdGhpcy50YWJsZURhdGFDb25maWdbJ2NvbHVtbnMnXSA9IFtdO1xuICAgICAgICAgIHRoaXMuaXNMb2FkZXIgPSBmYWxzZTtcbiAgICAgICAgfSwgMjAwKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgY29tbW9uU2VydmljZTogQ29tbW9uU2VydmljZSkgeyB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gIH1cblxuXG4gIHRyYW5zZm9ybUNvbHVtbnMobWFpbm9iajogYW55KTogYW55W10ge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyhtYWlub2JqKS5tYXAoa2V5ID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHZpc2libGU6IHRydWUsXG4gICAgICAgIGRhdGFGaWVsZDoga2V5LFxuICAgICAgICBjYXB0aW9uOiBrZXlcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuXG5cbiAgZ2V0T2JqZWN0S2V5cyhvYmo6IGFueSk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXMob2JqKTtcbiAgfVxuICBzZXRBY3RpdmVUYWIodGFiOiBzdHJpbmcpIHtcbiAgICB0aGlzLmFjdGl2ZVRhYiA9IHRhYjtcbiAgfVxuXG4gIG9uUm93Q2xpY2soZSkge1xuXG4gICAgY29uc3QgdGl0bGVfcGFyYW1zID0gZS5kYXRhW3RoaXMucGFnZV9jb25maWcua3BpQ29uZmlnLmRhdGFDb25maWcuY29tbW9uQ29uZmlnWydkYXRhRmllbGQnXV1cbiAgICBsZXQgdGl0bGUgPSB0aGlzLnBhZ2VfY29uZmlnLmtwaUNvbmZpZy5kYXRhQ29uZmlnLmNvbW1vbkNvbmZpZ1sndGl0bGUnXSArIHRpdGxlX3BhcmFtcztcbiAgICBsZXQgb2JqID0ge1xuICAgICAgZGF0YTogZS5kYXRhLFxuICAgICAga2V5VG9QYXNzOiB0aGlzLnBhZ2VfY29uZmlnLmtwaUNvbmZpZy5rZXlUb1Bhc3MsXG4gICAgICB0YWJsZVRpdGxlOiAodGhpcy5wYWdlX3Bhcm1zKSA/IHRoaXMucGFnZV9wYXJtcyArIHRpdGxlIDogdGl0bGUsXG4gICAgICB2aWV3SWQ6IHRoaXMucGFnZV9jb25maWcudmlld0lkLFxuICAgICAgZHJpbGxEb3duVHlwZTogXCJuYXR1cmFsXCIsXG4gICAgICBkcmlsbGRvd25Gcm9tOiB0aGlzLnBhZ2VfY29uZmlnLnZpZXdJZCxcbiAgICAgIGRyaWxsZG93blRvOiBcIlwiLFxuICAgIH1cbiAgICB0aGlzLm9Sb3dDbGljay5lbWl0KG9iaik7XG4gIH1cblxuICBhZGRNZW51SXRlbXMoZSkge1xuXG4gICAgY29uc3QgdGl0bGVfcGFyYW1zID0gZS5yb3cuZGF0YVt0aGlzLnBhZ2VfY29uZmlnLmtwaUNvbmZpZy5kYXRhQ29uZmlnLmNvbW1vbkNvbmZpZ1snZGF0YUZpZWxkJ11dXG4gICAgbGV0IHRpdGxlID0gdGhpcy5wYWdlX2NvbmZpZy5rcGlDb25maWcuZGF0YUNvbmZpZy5jb21tb25Db25maWdbJ3RpdGxlJ10gKyB0aXRsZV9wYXJhbXM7XG5cbiAgICBpZiAodGhpcy5yaWdodENsaWNrRW5hYmxlICYmIGUuY29sdW1uSW5kZXggPT0gMCkge1xuICAgICAgaWYgKGUudGFyZ2V0ID09ICdjb250ZW50Jykge1xuICAgICAgICBpZiAoIWUuaXRlbXMpIGUuaXRlbXMgPSBbXTtcblxuICAgICAgICB0aGlzLnBhZ2VfY29uZmlnLmtwaUNvbmZpZy5jb250ZXh0TWVudS5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgICAgIGlmICghdGhpcy5wYWdlX2NvbmZpZy5rcGlDb25maWcua2V5VG9QYXNzLnNvbWUoa2V5ID0+IGVsZW1lbnQuZGlzcGxheUtleS5pbmNsdWRlcyhrZXkpKSkge1xuICAgICAgICAgICAgZS5pdGVtcy5wdXNoKHtcbiAgICAgICAgICAgICAgdGV4dDogZWxlbWVudC5kaXNwbGF5S2V5LFxuICAgICAgICAgICAgICBvbkl0ZW1DbGljazogKCkgPT4ge1xuICAgICAgICAgICAgICAgIGxldCByaWdodGNsaWNrRGF0YSA9IHtcbiAgICAgICAgICAgICAgICAgIGRhdGE6IGUucm93LmRhdGEsXG4gICAgICAgICAgICAgICAgICBrZXlUb1Bhc3M6IHRoaXMucGFnZV9jb25maWcua3BpQ29uZmlnLmtleVRvUGFzcyxcbiAgICAgICAgICAgICAgICAgIHRhYmxlVGl0bGU6ICh0aGlzLnBhZ2VfcGFybXMpID8gdGhpcy5wYWdlX3Bhcm1zICsgdGl0bGUgOiB0aXRsZSxcbiAgICAgICAgICAgICAgICAgIHZpZXdJZDogdGhpcy5wYWdlX2NvbmZpZy52aWV3SWQsXG4gICAgICAgICAgICAgICAgICBkcmlsbERvd25UeXBlOiBcImNvbnRleHRcIixcbiAgICAgICAgICAgICAgICAgIGRyaWxsZG93bkZyb206IHRoaXMucGFnZV9jb25maWcudmlld0lkLFxuICAgICAgICAgICAgICAgICAgZHJpbGxkb3duVG86IGVsZW1lbnQudmlld0lkLFxuXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMub25yaWdodENsaWNrQ29udGV4dFNlbGVjdGlvbi5lbWl0KHJpZ2h0Y2xpY2tEYXRhKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHNldFRhYmxlSGVpZ2h0KHZhbHVlOiBhbnkpOiBhbnkge1xuXG4gICAgY29uc3QgdGFibGVIZWlnaHQgPSB2YWx1ZTtcbiAgICBpZiAodGFibGVIZWlnaHQgPT09ICdhdXRvJykge1xuICAgICAgcmV0dXJuICdhdXRvJztcbiAgICB9XG4gICAgY29uc3QgcGFyc2VkSGVpZ2h0ID0gTnVtYmVyKHRhYmxlSGVpZ2h0KTtcbiAgICBpZiAoIWlzTmFOKHBhcnNlZEhlaWdodCkgJiYgcGFyc2VkSGVpZ2h0ID4gMCkge1xuICAgICAgcmV0dXJuIHBhcnNlZEhlaWdodDtcbiAgICB9XG4gIH1cblxuICBjYWxsU2VydmljZUZ1bmN0aW9uKGZ1bmN0aW9uTmFtZTogc3RyaW5nLCB2YWx1ZSk6IGFueSB7XG4gICAgaWYgKHR5cGVvZiB0aGlzLmNvbW1vblNlcnZpY2VbZnVuY3Rpb25OYW1lXSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICByZXR1cm4gdGhpcy5jb21tb25TZXJ2aWNlW2Z1bmN0aW9uTmFtZV0odmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmVycm9yKGBGdW5jdGlvbiAke2Z1bmN0aW9uTmFtZX0gbm90IGZvdW5kIGluIENvbW1vblNlcnZpY2VgKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG5cbiAgc2hvdWxkU2hvd0NvbHVtbihmaWVsZDogc3RyaW5nKTogYm9vbGVhbiB7XG5cbiAgICBsZXQgZXhjbHVkZWRGaWVsZHMgPSBbJ3JlY29yZERhdGUnLCAncmVjb3JkX2RhdGUnLCAnZXZlbnREYXRlJywgJ2V2ZW50X2RhdGUnXTtcbiAgICBpZiAodGhpcy50YWJsZVNob3J0QnkgJiYgdGhpcy50YWJsZVNob3J0QnkubGVuZ3RoICE9PSAwKSB7XG4gICAgICB0aGlzLnRhYmxlU2hvcnRCeS5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgICBleGNsdWRlZEZpZWxkcy5wdXNoKGVsZW1lbnQpXG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuICFleGNsdWRlZEZpZWxkcy5pbmNsdWRlcyhmaWVsZCk7XG4gIH1cblxuXG5cblxufVxuIiwiPGRpdiBjbGFzcz1cIm14LTIgYmctZ3JheS04MDBcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNMb2FkZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1jZW50ZXIgaXRlbXMtc3RhcnQgYmctZ3JheS04MDAgcC0yXCI+XG4gICAgICAgICAgICA8YXBwLWxvYWRlcj48L2FwcC1sb2FkZXI+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPGRpdiBjbGFzcz1cIm14LTIgcGItMlwiPlxuICAgICAgICA8IS0tIDxkeC1kYXRhLWdyaWQgW2NvbHVtbkF1dG9XaWR0aF09XCJ0cnVlXCIgKG9uUm93Q2xpY2spPVwib25Sb3dDbGljaygkZXZlbnQpXCIgW2RhdGFTb3VyY2VdPVwiZGF0YVNvdXJzZUZvclRhYmxlXCJcbiAgICAgICAgICAgIFtob3ZlclN0YXRlRW5hYmxlZF09XCJ0cnVlXCIgW3NlbGVjdGVkUm93S2V5c109XCJbXVwiIFtzaG93Qm9yZGVyc109XCJ0cnVlXCIgW3Nob3dDb2x1bW5MaW5lc109XCJ0cnVlXCJcbiAgICAgICAgICAgICpuZ0lmPVwiIWlzTG9hZGVyXCIgW2NvbHVtbnNdPVwidGFibGVEYXRhQ29uZmlnLmNvbHVtbnNcIiBbc2hvd1Jvd0xpbmVzXT1cInRydWVcIiBpZD1cImdyaWRDb250YWluZXJcIlxuICAgICAgICAgICAgKG9uQ29udGV4dE1lbnVQcmVwYXJpbmcpPVwiYWRkTWVudUl0ZW1zKCRldmVudClcIj5cbiAgICAgICAgICAgIDxkeG8tc2VhcmNoLXBhbmVsIFtoaWdobGlnaHRDYXNlU2Vuc2l0aXZlXT1cInRydWVcIlxuICAgICAgICAgICAgICAgIFt2aXNpYmxlXT1cInRhYmxlRGF0YUNvbmZpZy5zZWFyY2hQYW5lbFwiPjwvZHhvLXNlYXJjaC1wYW5lbD5cbiAgICAgICAgICAgIDxkeG8tZXhwb3J0IFtlbmFibGVkXT1cInRydWVcIiBmaWxlTmFtZT1cInt7dGFibGVEYXRhQ29uZmlnLmZpbGVfbmFtZX19XCJcbiAgICAgICAgICAgICAgICBbY3VzdG9taXplRXhjZWxDZWxsXT1cImNvbW1vblNlcnZpY2UuY3VzdG9taXplRXhjZWxDZWxsXCI+PC9keG8tZXhwb3J0PlxuICAgICAgICAgICAgPGR4by1wYWdpbmcgW3BhZ2VTaXplXT1cInRhYmxlRGF0YUNvbmZpZy5udW1iZXJPZlJvd1wiPjwvZHhvLXBhZ2luZz5cbiAgICAgICAgICAgIDxkeG8tcGFnZXIgW3Nob3dJbmZvXT1cInRhYmxlRGF0YUNvbmZpZy5wYWdlSW5mb1wiIFtzaG93UGFnZVNpemVTZWxlY3Rvcl09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBbYWxsb3dlZFBhZ2VTaXplc109XCJ0YWJsZURhdGFDb25maWcuYWxsb3dlZFBhZ2VTaXplc1wiPlxuICAgICAgICAgICAgPC9keG8tcGFnZXI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGFibGVEYXRhQ29uZmlnLmNvbHVtbnMgJiYgdGFibGVEYXRhQ29uZmlnLmNvbHVtbnMubGVuZ3RoICE9PSAwXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiB0YWJsZURhdGFDb25maWcuY29sdW1uc1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZHhpLWNvbHVtbiAqbmdJZj1cIml0ZW0uZGF0YUZpZWxkID09ICdyZWNvcmREYXRlJ1wiIGRhdGFGaWVsZD1cInt7IGl0ZW0uZGF0YUZpZWxkIH19XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjYXB0aW9uXT1cIml0ZW0uY2FwdGlvblwiIFt2aXNpYmxlXT1cIml0ZW0udmlzaWJsZVwiIHNvcnRPcmRlcj1cImRlc2NcIj48L2R4aS1jb2x1bW4+XG4gICAgICAgICAgICAgICAgICAgIDxkeGktY29sdW1uICpuZ0lmPVwiaXRlbS5kYXRhRmllbGQgIT09ICdyZWNvcmREYXRlJ1wiIGZvcm1hdD1cIiMsIyMwLiMjXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzb3J0aW5nTWV0aG9kXT1cImNvbW1vblNlcnZpY2UuY3VzdG9tVmFsdWVTb3J0ZXJcIiBbY2VsbFRlbXBsYXRlXT1cIml0ZW0uZGF0YUZpZWxkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjYXB0aW9uXT1cIml0ZW0uY2FwdGlvblwiIGRhdGFGaWVsZD1cInt7IGl0ZW0uZGF0YUZpZWxkIH19XCIgYWxpZ25tZW50PVwibGVmdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbdmlzaWJsZV09XCJpdGVtLnZpc2libGVcIj5cbiAgICAgICAgICAgICAgICAgICAgPC9keGktY29sdW1uPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgdGFibGVEYXRhQ29uZmlnLmNvbHVtbnNcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqZHhUZW1wbGF0ZT1cImxldCBkYXRhIG9mIGl0ZW0uZGF0YUZpZWxkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cImRhdGEudmFsdWVcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPC9keC1kYXRhLWdyaWQ+IC0tPlxuICAgICAgICA8ZHgtZGF0YS1ncmlkIFtjb2x1bW5BdXRvV2lkdGhdPVwidHJ1ZVwiIChvblJvd0NsaWNrKT1cIm9uUm93Q2xpY2soJGV2ZW50KVwiIFtkYXRhU291cmNlXT1cImRhdGFTb3Vyc2VGb3JUYWJsZVwiXG4gICAgICAgICAgICBbaG92ZXJTdGF0ZUVuYWJsZWRdPVwidHJ1ZVwiIFtzZWxlY3RlZFJvd0tleXNdPVwiW11cIiBbc2hvd0JvcmRlcnNdPVwidHJ1ZVwiIFtzaG93Q29sdW1uTGluZXNdPVwidHJ1ZVwiXG4gICAgICAgICAgICBbaGVpZ2h0XT1cInRhYmxlSGVpZ2h0XCIgKm5nSWY9XCIhaXNMb2FkZXJcIiBbY29sdW1uc109XCJ0YWJsZURhdGFDb25maWcuY29sdW1uc1wiIFtzaG93Um93TGluZXNdPVwidHJ1ZVwiXG4gICAgICAgICAgICBpZD1cImdyaWRDb250YWluZXJcIiAob25Db250ZXh0TWVudVByZXBhcmluZyk9XCJhZGRNZW51SXRlbXMoJGV2ZW50KVwiXG4gICAgICAgICAgICBbY3VzdG9taXplRXhwb3J0RGF0YV09XCJjb21tb25TZXJ2aWNlLnJlbW92ZUh0bWxDb250ZW50RnJvbURhdGFcIj5cbiAgICAgICAgICAgIDxkeG8tc2VhcmNoLXBhbmVsIFtoaWdobGlnaHRDYXNlU2Vuc2l0aXZlXT1cInRydWVcIlxuICAgICAgICAgICAgICAgIFt2aXNpYmxlXT1cInRhYmxlRGF0YUNvbmZpZy5zZWFyY2hQYW5lbFwiPjwvZHhvLXNlYXJjaC1wYW5lbD5cbiAgICAgICAgICAgIDxkeG8tZXhwb3J0IFtlbmFibGVkXT1cInRydWVcIiBmaWxlTmFtZT1cInt7dGFibGVEYXRhQ29uZmlnLmZpbGVfbmFtZX19XCJcbiAgICAgICAgICAgICAgICBbY3VzdG9taXplRXhjZWxDZWxsXT1cImNvbW1vblNlcnZpY2UuY3VzdG9taXplRXhjZWxDZWxsXCI+PC9keG8tZXhwb3J0PlxuICAgICAgICAgICAgPGR4by1wYWdpbmcgW3BhZ2VTaXplXT1cInRhYmxlRGF0YUNvbmZpZy5udW1iZXJPZlJvd1wiPjwvZHhvLXBhZ2luZz5cbiAgICAgICAgICAgIDxkeG8tcGFnZXIgW3Nob3dJbmZvXT1cInRhYmxlRGF0YUNvbmZpZy5wYWdlSW5mb1wiIFtzaG93UGFnZVNpemVTZWxlY3Rvcl09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBbYWxsb3dlZFBhZ2VTaXplc109XCJ0YWJsZURhdGFDb25maWcuYWxsb3dlZFBhZ2VTaXplc1wiPlxuICAgICAgICAgICAgPC9keG8tcGFnZXI+XG5cbiAgICAgICAgICAgIDwhLS0gPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiB0YWJsZURhdGFDb25maWcuY29sdW1uc1wiPlxuICAgICAgICAgICAgICAgIDxkeGktY29sdW1uICpuZ0lmPVwiaXRlbS5kYXRhRmllbGQgPT0gJ3JlY29yZERhdGUnXCIgZGF0YUZpZWxkPVwie3sgaXRlbS5kYXRhRmllbGQgfX1cIlxuICAgICAgICAgICAgICAgICAgICBbY2FwdGlvbl09XCJpdGVtLmNhcHRpb25cIiBbdmlzaWJsZV09XCJpdGVtLnZpc2libGVcIiBzb3J0T3JkZXI9XCJkZXNjXCI+PC9keGktY29sdW1uPlxuICAgICAgICAgICAgICAgIDxkeGktY29sdW1uICpuZ0lmPVwiaXRlbS5kYXRhRmllbGQgIT09ICdyZWNvcmREYXRlJ1wiIFtzb3J0aW5nTWV0aG9kXT1cImNvbW1vblNlcnZpY2UuY3VzdG9tVmFsdWVTb3J0ZXJcIlxuICAgICAgICAgICAgICAgICAgICBbY2VsbFRlbXBsYXRlXT1cIml0ZW0uZGF0YUZpZWxkXCIgW2NhcHRpb25dPVwiaXRlbS5jYXB0aW9uXCIgZGF0YUZpZWxkPVwie3sgaXRlbS5kYXRhRmllbGQgfX1cIlxuICAgICAgICAgICAgICAgICAgICBhbGlnbm1lbnQ9XCJsZWZ0XCIgW3Zpc2libGVdPVwiaXRlbS52aXNpYmxlXCI+XG4gICAgICAgICAgICAgICAgPC9keGktY29sdW1uPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+IC0tPlxuXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIHRhYmxlRGF0YUNvbmZpZy5jb2x1bW5zXCI+XG4gICAgICAgICAgICAgICAgPCEtLSBDaGVjayBpZiBjb2x1bW4gaGFzIG5lc3RlZCBjb2x1bW5zIChjb2x1bW5zT25lIHN0cnVjdHVyZSkgLS0+XG4gICAgICAgICAgICAgICAgPGR4aS1jb2x1bW4gKm5nSWY9XCJpdGVtLmNvbHVtbnM7IGVsc2UgZmxhdENvbHVtblwiIGNhcHRpb249XCJ7eyBpdGVtLmNhcHRpb24gfX1cIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgc3ViSXRlbSBvZiBpdGVtLmNvbHVtbnNcIj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPGR4aS1jb2x1bW4gKm5nSWY9XCIhc2hvdWxkU2hvd0NvbHVtbihzdWJJdGVtLmRhdGFGaWVsZClcIiBbZGF0YUZpZWxkXT1cInN1Ykl0ZW0uZGF0YUZpZWxkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2FwdGlvbl09XCJzdWJJdGVtLmNhcHRpb25cIiBbdmlzaWJsZV09XCJzdWJJdGVtLnZpc2libGVcIiBhbGlnbm1lbnQ9XCJsZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0T3JkZXI9XCJkZXNjXCI+PC9keGktY29sdW1uPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZHhpLWNvbHVtbiAqbmdJZj1cInNob3VsZFNob3dDb2x1bW4oc3ViSXRlbS5kYXRhRmllbGQpXCIgW2RhdGFGaWVsZF09XCJzdWJJdGVtLmRhdGFGaWVsZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NhcHRpb25dPVwic3ViSXRlbS5jYXB0aW9uXCIgW3Zpc2libGVdPVwic3ViSXRlbS52aXNpYmxlXCIgYWxpZ25tZW50PVwicmlnaHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjZWxsVGVtcGxhdGVdPVwiaXRlbS5kYXRhRmllbGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzb3J0aW5nTWV0aG9kXT1cImNvbW1vblNlcnZpY2UuY3VzdG9tVmFsdWVTb3J0ZXJcIj48L2R4aS1jb2x1bW4+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvZHhpLWNvbHVtbj5cblxuICAgICAgICAgICAgICAgIDwhLS0gRmxhdCBjb2x1bW4gc3RydWN0dXJlIChjb2x1bW5zVHdvIHN0cnVjdHVyZSkgLS0+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNmbGF0Q29sdW1uPlxuXG4gICAgICAgICAgICAgICAgICAgIDxkeGktY29sdW1uICpuZ0lmPVwiIXNob3VsZFNob3dDb2x1bW4oaXRlbS5kYXRhRmllbGQpXCIgZGF0YUZpZWxkPVwie3sgaXRlbS5kYXRhRmllbGQgfX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NhcHRpb25dPVwiaXRlbS5jYXB0aW9uXCIgW3Zpc2libGVdPVwiaXRlbS52aXNpYmxlXCIgc29ydE9yZGVyPVwiZGVzY1wiPjwvZHhpLWNvbHVtbj5cblxuICAgICAgICAgICAgICAgICAgICA8ZHhpLWNvbHVtbiAqbmdJZj1cInNob3VsZFNob3dDb2x1bW4oaXRlbS5kYXRhRmllbGQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzb3J0aW5nTWV0aG9kXT1cImNvbW1vblNlcnZpY2UuY3VzdG9tVmFsdWVTb3J0ZXJcIiBbY2VsbFRlbXBsYXRlXT1cIml0ZW0uZGF0YUZpZWxkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjYXB0aW9uXT1cIml0ZW0uY2FwdGlvblwiIGRhdGFGaWVsZD1cInt7IGl0ZW0uZGF0YUZpZWxkIH19XCIgYWxpZ25tZW50PVwicmlnaHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3Zpc2libGVdPVwiaXRlbS52aXNpYmxlXCI+XG4gICAgICAgICAgICAgICAgICAgIDwvZHhpLWNvbHVtbj5cblxuXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gPGR4aS1jb2x1bW4gW2RhdGFGaWVsZF09XCJpdGVtLmRhdGFGaWVsZFwiIFtjYXB0aW9uXT1cIml0ZW0uY2FwdGlvblwiIFt2aXNpYmxlXT1cIml0ZW0udmlzaWJsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2VsbFRlbXBsYXRlXT1cIml0ZW0uZGF0YUZpZWxkXCIgYWxpZ25tZW50PVwibGVmdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc29ydGluZ01ldGhvZF09XCJjb21tb25TZXJ2aWNlLmN1c3RvbVZhbHVlU29ydGVyXCI+PC9keGktY29sdW1uPiAtLT5cbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgdGFibGVEYXRhQ29uZmlnLmNvbHVtbnNcIj5cbiAgICAgICAgICAgICAgICA8ZGl2ICpkeFRlbXBsYXRlPVwibGV0IGRhdGEgb2YgaXRlbS5kYXRhRmllbGRcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJkYXRhLnZhbHVlXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZHgtZGF0YS1ncmlkPlxuXG4gICAgPC9kaXY+XG5cblxuPC9kaXY+Il19
|
|
186
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FtbWEtYWR2YW5jZS1vcGVyYXRvci10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9nYW1tYS1hcHAtY29udHJvbGxlci9zcmMvbGliL3NoYXJlZC9hZHZhbmNlZC1jb21wb25lbnQvZ2FtbWEtYWR2YW5jZS1vcGVyYXRvci10YWJsZS9nYW1tYS1hZHZhbmNlLW9wZXJhdG9yLXRhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dhbW1hLWFwcC1jb250cm9sbGVyL3NyYy9saWIvc2hhcmVkL2FkdmFuY2VkLWNvbXBvbmVudC9nYW1tYS1hZHZhbmNlLW9wZXJhdG9yLXRhYmxlL2dhbW1hLWFkdmFuY2Utb3BlcmF0b3ItdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLE1BQU0sTUFBTSwrQ0FBK0MsQ0FBQzs7Ozs7Ozs7QUFPbkUsTUFBTSxPQUFPLGtDQUFrQztJQXVGN0MsWUFBbUIsYUFBNEI7UUFBNUIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFyRi9DLHVCQUFrQixHQUFRLEVBQUUsQ0FBQztRQUc3QixhQUFRLEdBQVksSUFBSSxDQUFDO1FBQ3pCLG9CQUFlLEdBQVEsRUFBRSxDQUFDO1FBQzFCLG1CQUFjLEdBQUcsQ0FBQyxhQUFhLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsdUNBQXVDLEVBQUUsZUFBZSxDQUFDLENBQUE7UUFJOUgsY0FBUyxHQUFXLE9BQU8sQ0FBQztRQUtYLHlCQUFvQixHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzdELGNBQVMsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNsRCxpQ0FBNEIsR0FBc0IsSUFB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QjtzQkFBNUMsTUFBTTtnQkFJSCxlQUFlO3NCQURsQixLQUFLO3VCQUFDLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbIlxuXG5cbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCBtb21lbnQgZnJvbSAnLi4vLi4vLi4vYXBwbGljYXRpb24tY29udHJvbGxlci9tb21lbnQtaGVscGVyJztcbmltcG9ydCB7IENvbW1vblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL2NvbW1vbic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1nYW1tYS1hZHZhbmNlLW9wZXJhdG9yLXRhYmxlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2dhbW1hLWFkdmFuY2Utb3BlcmF0b3ItdGFibGUuY29tcG9uZW50Lmh0bWwnLFxufSlcbmV4cG9ydCBjbGFzcyBHYW1tYUFkdmFuY2VPcGVyYXRvclRhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgaXNKc29uUHJldmlldzogYm9vbGVhblxuICBkYXRhU291cnNlRm9yVGFibGU6IGFueSA9IFtdO1xuICBqc2FvbkRhdGFzb3VyY2U6IGFueTtcbiAgY29uZmlnQ29sdW1lOiBhbnk7XG4gIGlzTG9hZGVyOiBib29sZWFuID0gdHJ1ZTtcbiAgdGFibGVEYXRhQ29uZmlnOiBhbnkgPSB7fTtcbiAgZW5yaWNoTmFtZUxpc3QgPSBbXCJmb3JtYXRCeXRlc1wiLCBcImZvcm1hdEJ5dHNUb0tiXCIsIFwiZm9ybWF0Qnl0c1RvR2JcIiwgXCJyZWZvcm1hdE51bWJlcldpdGhUaG91c2FuZFNlcGFyYXRvclYzXCIsIFwiZm9ybWF0Qnl0ZXN2MlwiXVxuICBwYWdlX2NvbmZpZzogYW55O1xuICBwYWdlX3Bhcm1zOiBhbnk7XG4gIHBhZ2Vfc2VsZWN0ZWRfb3BlcmF0b3I6IGFueTtcbiAgYWN0aXZlVGFiOiBzdHJpbmcgPSAnYmFzaWMnO1xuXG4gIHRhYmxlSGVpZ2h0OiBhbnk7XG4gIHRhYmxlU2hvcnRCeTogYW55O1xuXG4gIEBPdXRwdXQoKSBwdWJsaWMgZ2V0VGFibGVDb25maWdPdXRQdXQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgcHVibGljIG9Sb3dDbGljazogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBwdWJsaWMgb25yaWdodENsaWNrQ29udGV4dFNlbGVjdGlvbjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIHJpZ2h0Q2xpY2tFbmFibGU6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIEBJbnB1dCgnY2hhcnREYXRhU291cmNlJylcbiAgc2V0IGNoYXJ0RGF0YVNvdXJjZSh2YWx1ZSkge1xuICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSB7XG4gICAgICBcbiAgICAgIHRoaXMuaXNMb2FkZXIgPSB0cnVlO1xuICAgICAgdGhpcy5wYWdlX2NvbmZpZyA9IHZhbHVlO1xuICAgICAgdGhpcy5wYWdlX3Bhcm1zID0gdmFsdWUudGl0bGVQYXJhbXM7XG4gICAgICB0aGlzLnRhYmxlSGVpZ2h0ID0gKHZhbHVlLmtwaUNvbmZpZy5kYXRhQ29uZmlnLnRhYmxlSGVpZ2h0ICYmIHZhbHVlLmtwaUNvbmZpZy5kYXRhQ29uZmlnLnRhYmxlSGVpZ2h0ICE9PSBcIlwiKSA/IHRoaXMuc2V0VGFibGVIZWlnaHQodmFsdWUua3BpQ29uZmlnLmRhdGFDb25maWcudGFibGVIZWlnaHQpIDogJ2F1dG8nO1xuICAgICAgdGhpcy50YWJsZVNob3J0QnkgPSAodmFsdWUua3BpQ29uZmlnLmRhdGFDb25maWcudGFibGVTb3J0QnkpID8gdmFsdWUua3BpQ29uZmlnLmRhdGFDb25maWdbJ3RhYmxlU29ydEJ5J10gOiBbXTtcbiAgICAgIHRoaXMucmlnaHRDbGlja0VuYWJsZSA9ICh2YWx1ZS5rcGlDb25maWcudmlld1Byb3BlcnRpZXMpID8gdmFsdWUua3BpQ29uZmlnLnZpZXdQcm9wZXJ0aWVzLmVuYWJsZVJpZ2h0Q2xpY2tFdmVudCA6IGZhbHNlO1xuICAgICAgaWYgKHZhbHVlLmtwaUNvbmZpZy5kYXRhU291cmNlICYmIHZhbHVlLmtwaUNvbmZpZy5kYXRhU291cmNlLmxlbmd0aCAhPT0gMCkge1xuXG4gICAgICAgIGlmICh2YWx1ZS5rcGlDb25maWcuZm9ybWF0ZSA9PSBcImRhaWx5XCIpIHtcbiAgICAgICAgICBjb25zdCBzb3J0ZWREYXRhID0gdmFsdWUua3BpQ29uZmlnLmRhdGFTb3VyY2VcbiAgICAgICAgICAgIC5maWx0ZXIocmVjb3JkID0+IHJlY29yZC5yZWNvcmREYXRlKVxuICAgICAgICAgICAgLnNvcnQoKGEsIGIpID0+IG1vbWVudChiLnJlY29yZERhdGUpLmRpZmYobW9tZW50KGEucmVjb3JkRGF0ZSkpKTtcblxuICAgICAgICAgIGNvbnN0IG1vc3RSZWNlbnRSZWNvcmQgPSBzb3J0ZWREYXRhWzBdO1xuICAgICAgICAgIGNvbnN0IGZpbHRlcmVkT2JqZWN0cyA9IHNvcnRlZERhdGEuZmlsdGVyKGRhdGEgPT4gZGF0YS5yZWNvcmREYXRlID09PSBtb3N0UmVjZW50UmVjb3JkLnJlY29yZERhdGUpO1xuICAgICAgICAgIHRoaXMuZGF0YVNvdXJzZUZvclRhYmxlID0gZmlsdGVyZWRPYmplY3RzO1xuXG4gICAgICAgIH0gZWxzZSBpZiAodmFsdWUua3BpQ29uZmlnLmZvcm1hdGUgPT0gXCJtb250aGx5XCIpIHtcbiAgICAgICAgICB0aGlzLnRhYmxlRGF0YUNvbmZpZyA9IHZhbHVlLmtwaUNvbmZpZy5kYXRhQ29uZmlnO1xuXG4gICAgICAgICAgbGV0IHRhYmxlQ29sdW1ucyA9ICh2YWx1ZS5rcGlDb25maWcuZGF0YUNvbmZpZy5jb2x1bW5zKSA/IHZhbHVlLmtwaUNvbmZpZy5kYXRhQ29uZmlnLmNvbHVtbnMgOiBbXTtcbiAgICAgICAgICBpZiAodGFibGVDb2x1bW5zICYmIHRhYmxlQ29sdW1ucy5sZW5ndGggIT09IDApIHtcbiAgICAgICAgICAgIGNvbnN0IGRhdGFTb3VyY2UgPSB2YWx1ZS5rcGlDb25maWcuZGF0YVNvdXJjZS5tYXAob2JqID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgbmV3T2JqID0geyAuLi5vYmogfTtcbiAgICAgICAgICAgICAgT2JqZWN0LmtleXMobmV3T2JqKS5mb3JFYWNoKGtleSA9PiB7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBmb3VuZE1hdGNoT2JqZWN0ID0gdGFibGVDb2x1bW5zLmZpbmQob2JqID0+IG9iai5kYXRhRmllbGQgPT09IGtleSk7XG4gICAgICAgICAgICAgICAgaWYgKGZvdW5kTWF0Y2hPYmplY3QpIHtcbiAgICAgICAgICAgICAgICAgIGlmIChmb3VuZE1hdGNoT2JqZWN0LmVucmljaE5hbWUgJiYgZm91bmRNYXRjaE9iamVjdC5lbnJpY2hOYW1lICE9PSBcIlwiKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKGZvdW5kTWF0Y2hPYmplY3QuZW5yaWNoTmFtZSk7XG4gICAgICAgICAgICAgICAgICAgIG5ld09ialtrZXldID0gdGhpcy5jYWxsU2VydmljZUZ1bmN0aW9uKGZvdW5kTWF0Y2hPYmplY3QuZW5yaWNoTmFtZSwgbmV3T2JqW2tleV0pXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG5cbiAgICAgICAgICAgICAgICBpZiAoa2V5LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoJ2RhdGUnKSAmJiBuZXdPYmpba2V5XSkge1xuICAgICAgICAgICAgICAgICAgbmV3T2JqW2tleV0gPSBtb21lbnQobmV3T2JqW2tleV0pLmZvcm1hdChcIllZWVktTU0tRERcIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgcmV0dXJuIG5ld09iajtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5kYXRhU291cnNlRm9yVGFibGUgPSBkYXRhU291cmNlO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnRhYmxlRGF0YUNvbmZpZy5jb2x1bW5zID0gKHZhbHVlLmtwaUNvbmZpZy5kYXRhU291cmNlICYmIHZhbHVlLmtwaUNvbmZpZy5kYXRhU291cmNlLmxlbmd0aCAhPT0gMCkgPyB0aGlzLnRyYW5zZm9ybUNvbHVtbnModmFsdWUua3BpQ29uZmlnLmRhdGFTb3VyY2VbMF0pIDogW107XG4gICAgICAgICAgICB0aGlzLmRhdGFTb3Vyc2VGb3JUYWJsZSA9IHZhbHVlLmtwaUNvbmZpZy5kYXRhU291cmNlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0aGlzLmlzTG9hZGVyID0gZmFsc2U7XG4gICAgICAgIH0sIDIwMCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0aGlzLmRhdGFTb3Vyc2VGb3JUYWJsZSA9IFtdO1xuICAgICAgICAgIHRoaXMudGFibGVEYXRhQ29uZmlnWydjb2x1bW5zJ10gPSBbXTtcbiAgICAgICAgICB0aGlzLmlzTG9hZGVyID0gZmFsc2U7XG4gICAgICAgIH0sIDIwMCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3RydWN0b3IocHVibGljIGNvbW1vblNlcnZpY2U6IENvbW1vblNlcnZpY2UpIHsgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICB9XG5cblxuICB0cmFuc2Zvcm1Db2x1bW5zKG1haW5vYmo6IGFueSk6IGFueVtdIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXMobWFpbm9iaikubWFwKGtleSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB2aXNpYmxlOiB0cnVlLFxuICAgICAgICBkYXRhRmllbGQ6IGtleSxcbiAgICAgICAgY2FwdGlvbjoga2V5XG4gICAgICB9O1xuICAgIH0pO1xuICB9XG5cblxuXG4gIGdldE9iamVjdEtleXMob2JqOiBhbnkpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKG9iaik7XG4gIH1cbiAgc2V0QWN0aXZlVGFiKHRhYjogc3RyaW5nKSB7XG4gICAgdGhpcy5hY3RpdmVUYWIgPSB0YWI7XG4gIH1cblxuICBvblJvd0NsaWNrKGUpIHtcblxuICAgIGNvbnN0IHRpdGxlX3BhcmFtcyA9IGUuZGF0YVt0aGlzLnBhZ2VfY29uZmlnLmtwaUNvbmZpZy5kYXRhQ29uZmlnLmNvbW1vbkNvbmZpZ1snZGF0YUZpZWxkJ11dXG4gICAgbGV0IHRpdGxlID0gdGhpcy5wYWdlX2NvbmZpZy5rcGlDb25maWcuZGF0YUNvbmZpZy5jb21tb25Db25maWdbJ3RpdGxlJ10gKyB0aXRsZV9wYXJhbXM7XG4gICAgbGV0IG9iaiA9IHtcbiAgICAgIGRhdGE6IGUuZGF0YSxcbiAgICAgIGtleVRvUGFzczogdGhpcy5wYWdlX2NvbmZpZy5rcGlDb25maWcua2V5VG9QYXNzLFxuICAgICAgdGFibGVUaXRsZTogKHRoaXMucGFnZV9wYXJtcykgPyB0aGlzLnBhZ2VfcGFybXMgKyB0aXRsZSA6IHRpdGxlLFxuICAgICAgdmlld0lkOiB0aGlzLnBhZ2VfY29uZmlnLnZpZXdJZCxcbiAgICAgIGRyaWxsRG93blR5cGU6IFwibmF0dXJhbFwiLFxuICAgICAgZHJpbGxkb3duRnJvbTogdGhpcy5wYWdlX2NvbmZpZy52aWV3SWQsXG4gICAgICBkcmlsbGRvd25UbzogXCJcIixcbiAgICB9XG4gICAgdGhpcy5vUm93Q2xpY2suZW1pdChvYmopO1xuICB9XG5cbiAgYWRkTWVudUl0ZW1zKGUpIHtcblxuICAgIGNvbnN0IHRpdGxlX3BhcmFtcyA9IGUucm93LmRhdGFbdGhpcy5wYWdlX2NvbmZpZy5rcGlDb25maWcuZGF0YUNvbmZpZy5jb21tb25Db25maWdbJ2RhdGFGaWVsZCddXVxuICAgIGxldCB0aXRsZSA9IHRoaXMucGFnZV9jb25maWcua3BpQ29uZmlnLmRhdGFDb25maWcuY29tbW9uQ29uZmlnWyd0aXRsZSddICsgdGl0bGVfcGFyYW1zO1xuXG4gICAgaWYgKHRoaXMucmlnaHRDbGlja0VuYWJsZSAmJiBlLmNvbHVtbkluZGV4ID09IDApIHtcbiAgICAgIGlmIChlLnRhcmdldCA9PSAnY29udGVudCcpIHtcbiAgICAgICAgaWYgKCFlLml0ZW1zKSBlLml0ZW1zID0gW107XG5cbiAgICAgICAgdGhpcy5wYWdlX2NvbmZpZy5rcGlDb25maWcuY29udGV4dE1lbnUuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgICAgICBpZiAoIXRoaXMucGFnZV9jb25maWcua3BpQ29uZmlnLmtleVRvUGFzcy5zb21lKGtleSA9PiBlbGVtZW50LmRpc3BsYXlLZXkuaW5jbHVkZXMoa2V5KSkpIHtcbiAgICAgICAgICAgIGUuaXRlbXMucHVzaCh7XG4gICAgICAgICAgICAgIHRleHQ6IGVsZW1lbnQuZGlzcGxheUtleSxcbiAgICAgICAgICAgICAgb25JdGVtQ2xpY2s6ICgpID0+IHtcbiAgICAgICAgICAgICAgICBsZXQgcmlnaHRjbGlja0RhdGEgPSB7XG4gICAgICAgICAgICAgICAgICBkYXRhOiBlLnJvdy5kYXRhLFxuICAgICAgICAgICAgICAgICAga2V5VG9QYXNzOiB0aGlzLnBhZ2VfY29uZmlnLmtwaUNvbmZpZy5rZXlUb1Bhc3MsXG4gICAgICAgICAgICAgICAgICB0YWJsZVRpdGxlOiAodGhpcy5wYWdlX3Bhcm1zKSA/IHRoaXMucGFnZV9wYXJtcyArIHRpdGxlIDogdGl0bGUsXG4gICAgICAgICAgICAgICAgICB2aWV3SWQ6IHRoaXMucGFnZV9jb25maWcudmlld0lkLFxuICAgICAgICAgICAgICAgICAgZHJpbGxEb3duVHlwZTogXCJjb250ZXh0XCIsXG4gICAgICAgICAgICAgICAgICBkcmlsbGRvd25Gcm9tOiB0aGlzLnBhZ2VfY29uZmlnLnZpZXdJZCxcbiAgICAgICAgICAgICAgICAgIGRyaWxsZG93blRvOiBlbGVtZW50LnZpZXdJZCxcblxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLm9ucmlnaHRDbGlja0NvbnRleHRTZWxlY3Rpb24uZW1pdChyaWdodGNsaWNrRGF0YSlcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBzZXRUYWJsZUhlaWdodCh2YWx1ZTogYW55KTogYW55IHtcblxuICAgIGNvbnN0IHRhYmxlSGVpZ2h0ID0gdmFsdWU7XG4gICAgaWYgKHRhYmxlSGVpZ2h0ID09PSAnYXV0bycpIHtcbiAgICAgIHJldHVybiAnYXV0byc7XG4gICAgfVxuICAgIGNvbnN0IHBhcnNlZEhlaWdodCA9IE51bWJlcih0YWJsZUhlaWdodCk7XG4gICAgaWYgKCFpc05hTihwYXJzZWRIZWlnaHQpICYmIHBhcnNlZEhlaWdodCA+IDApIHtcbiAgICAgIHJldHVybiBwYXJzZWRIZWlnaHQ7XG4gICAgfVxuICB9XG5cbiAgY2FsbFNlcnZpY2VGdW5jdGlvbihmdW5jdGlvbk5hbWU6IHN0cmluZywgdmFsdWUpOiBhbnkge1xuICAgIFxuICAgIGlmICh0eXBlb2YgdGhpcy5jb21tb25TZXJ2aWNlW2Z1bmN0aW9uTmFtZV0gPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgcmV0dXJuIHRoaXMuY29tbW9uU2VydmljZVtmdW5jdGlvbk5hbWVdKHZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS5lcnJvcihgRnVuY3Rpb24gJHtmdW5jdGlvbk5hbWV9IG5vdCBmb3VuZCBpbiBDb21tb25TZXJ2aWNlYCk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuXG4gIHNob3VsZFNob3dDb2x1bW4oZmllbGQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuXG4gICAgbGV0IGV4Y2x1ZGVkRmllbGRzID0gWydyZWNvcmREYXRlJywgJ3JlY29yZF9kYXRlJywgJ2V2ZW50RGF0ZScsICdldmVudF9kYXRlJ107XG4gICAgaWYgKHRoaXMudGFibGVTaG9ydEJ5ICYmIHRoaXMudGFibGVTaG9ydEJ5Lmxlbmd0aCAhPT0gMCkge1xuICAgICAgdGhpcy50YWJsZVNob3J0QnkuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgICAgZXhjbHVkZWRGaWVsZHMucHVzaChlbGVtZW50KVxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiAhZXhjbHVkZWRGaWVsZHMuaW5jbHVkZXMoZmllbGQpO1xuICB9XG5cblxuXG5cbn1cbiIsIjxkaXYgY2xhc3M9XCJteC0yIGJnLWdyYXktODAwXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzTG9hZGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktY2VudGVyIGl0ZW1zLXN0YXJ0IGJnLWdyYXktODAwIHAtMlwiPlxuICAgICAgICAgICAgPGFwcC1sb2FkZXI+PC9hcHAtbG9hZGVyPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxkaXYgY2xhc3M9XCJteC0yIHBiLTJcIj5cbiAgICAgICAgPCEtLSA8ZHgtZGF0YS1ncmlkIFtjb2x1bW5BdXRvV2lkdGhdPVwidHJ1ZVwiIChvblJvd0NsaWNrKT1cIm9uUm93Q2xpY2soJGV2ZW50KVwiIFtkYXRhU291cmNlXT1cImRhdGFTb3Vyc2VGb3JUYWJsZVwiXG4gICAgICAgICAgICBbaG92ZXJTdGF0ZUVuYWJsZWRdPVwidHJ1ZVwiIFtzZWxlY3RlZFJvd0tleXNdPVwiW11cIiBbc2hvd0JvcmRlcnNdPVwidHJ1ZVwiIFtzaG93Q29sdW1uTGluZXNdPVwidHJ1ZVwiXG4gICAgICAgICAgICAqbmdJZj1cIiFpc0xvYWRlclwiIFtjb2x1bW5zXT1cInRhYmxlRGF0YUNvbmZpZy5jb2x1bW5zXCIgW3Nob3dSb3dMaW5lc109XCJ0cnVlXCIgaWQ9XCJncmlkQ29udGFpbmVyXCJcbiAgICAgICAgICAgIChvbkNvbnRleHRNZW51UHJlcGFyaW5nKT1cImFkZE1lbnVJdGVtcygkZXZlbnQpXCI+XG4gICAgICAgICAgICA8ZHhvLXNlYXJjaC1wYW5lbCBbaGlnaGxpZ2h0Q2FzZVNlbnNpdGl2ZV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBbdmlzaWJsZV09XCJ0YWJsZURhdGFDb25maWcuc2VhcmNoUGFuZWxcIj48L2R4by1zZWFyY2gtcGFuZWw+XG4gICAgICAgICAgICA8ZHhvLWV4cG9ydCBbZW5hYmxlZF09XCJ0cnVlXCIgZmlsZU5hbWU9XCJ7e3RhYmxlRGF0YUNvbmZpZy5maWxlX25hbWV9fVwiXG4gICAgICAgICAgICAgICAgW2N1c3RvbWl6ZUV4Y2VsQ2VsbF09XCJjb21tb25TZXJ2aWNlLmN1c3RvbWl6ZUV4Y2VsQ2VsbFwiPjwvZHhvLWV4cG9ydD5cbiAgICAgICAgICAgIDxkeG8tcGFnaW5nIFtwYWdlU2l6ZV09XCJ0YWJsZURhdGFDb25maWcubnVtYmVyT2ZSb3dcIj48L2R4by1wYWdpbmc+XG4gICAgICAgICAgICA8ZHhvLXBhZ2VyIFtzaG93SW5mb109XCJ0YWJsZURhdGFDb25maWcucGFnZUluZm9cIiBbc2hvd1BhZ2VTaXplU2VsZWN0b3JdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgW2FsbG93ZWRQYWdlU2l6ZXNdPVwidGFibGVEYXRhQ29uZmlnLmFsbG93ZWRQYWdlU2l6ZXNcIj5cbiAgICAgICAgICAgIDwvZHhvLXBhZ2VyPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRhYmxlRGF0YUNvbmZpZy5jb2x1bW5zICYmIHRhYmxlRGF0YUNvbmZpZy5jb2x1bW5zLmxlbmd0aCAhPT0gMFwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgdGFibGVEYXRhQ29uZmlnLmNvbHVtbnNcIj5cbiAgICAgICAgICAgICAgICAgICAgPGR4aS1jb2x1bW4gKm5nSWY9XCJpdGVtLmRhdGFGaWVsZCA9PSAncmVjb3JkRGF0ZSdcIiBkYXRhRmllbGQ9XCJ7eyBpdGVtLmRhdGFGaWVsZCB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2FwdGlvbl09XCJpdGVtLmNhcHRpb25cIiBbdmlzaWJsZV09XCJpdGVtLnZpc2libGVcIiBzb3J0T3JkZXI9XCJkZXNjXCI+PC9keGktY29sdW1uPlxuICAgICAgICAgICAgICAgICAgICA8ZHhpLWNvbHVtbiAqbmdJZj1cIml0ZW0uZGF0YUZpZWxkICE9PSAncmVjb3JkRGF0ZSdcIiBmb3JtYXQ9XCIjLCMjMC4jI1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc29ydGluZ01ldGhvZF09XCJjb21tb25TZXJ2aWNlLmN1c3RvbVZhbHVlU29ydGVyXCIgW2NlbGxUZW1wbGF0ZV09XCJpdGVtLmRhdGFGaWVsZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2FwdGlvbl09XCJpdGVtLmNhcHRpb25cIiBkYXRhRmllbGQ9XCJ7eyBpdGVtLmRhdGFGaWVsZCB9fVwiIGFsaWdubWVudD1cImxlZnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3Zpc2libGVdPVwiaXRlbS52aXNpYmxlXCI+XG4gICAgICAgICAgICAgICAgICAgIDwvZHhpLWNvbHVtbj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIHRhYmxlRGF0YUNvbmZpZy5jb2x1bW5zXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKmR4VGVtcGxhdGU9XCJsZXQgZGF0YSBvZiBpdGVtLmRhdGFGaWVsZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJkYXRhLnZhbHVlXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDwvZHgtZGF0YS1ncmlkPiAtLT5cbiAgICAgICAgPGR4LWRhdGEtZ3JpZCBbY29sdW1uQXV0b1dpZHRoXT1cInRydWVcIiAob25Sb3dDbGljayk9XCJvblJvd0NsaWNrKCRldmVudClcIiBbZGF0YVNvdXJjZV09XCJkYXRhU291cnNlRm9yVGFibGVcIlxuICAgICAgICAgICAgW2hvdmVyU3RhdGVFbmFibGVkXT1cInRydWVcIiBbc2VsZWN0ZWRSb3dLZXlzXT1cIltdXCIgW3Nob3dCb3JkZXJzXT1cInRydWVcIiBbc2hvd0NvbHVtbkxpbmVzXT1cInRydWVcIlxuICAgICAgICAgICAgW2hlaWdodF09XCJ0YWJsZUhlaWdodFwiICpuZ0lmPVwiIWlzTG9hZGVyXCIgW2NvbHVtbnNdPVwidGFibGVEYXRhQ29uZmlnLmNvbHVtbnNcIiBbc2hvd1Jvd0xpbmVzXT1cInRydWVcIlxuICAgICAgICAgICAgaWQ9XCJncmlkQ29udGFpbmVyXCIgKG9uQ29udGV4dE1lbnVQcmVwYXJpbmcpPVwiYWRkTWVudUl0ZW1zKCRldmVudClcIlxuICAgICAgICAgICAgW2N1c3RvbWl6ZUV4cG9ydERhdGFdPVwiY29tbW9uU2VydmljZS5yZW1vdmVIdG1sQ29udGVudEZyb21EYXRhXCI+XG4gICAgICAgICAgICA8ZHhvLXNlYXJjaC1wYW5lbCBbaGlnaGxpZ2h0Q2FzZVNlbnNpdGl2ZV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBbdmlzaWJsZV09XCJ0YWJsZURhdGFDb25maWcuc2VhcmNoUGFuZWxcIj48L2R4by1zZWFyY2gtcGFuZWw+XG4gICAgICAgICAgICA8ZHhvLWV4cG9ydCBbZW5hYmxlZF09XCJ0cnVlXCIgZmlsZU5hbWU9XCJ7e3RhYmxlRGF0YUNvbmZpZy5maWxlX25hbWV9fVwiXG4gICAgICAgICAgICAgICAgW2N1c3RvbWl6ZUV4Y2VsQ2VsbF09XCJjb21tb25TZXJ2aWNlLmN1c3RvbWl6ZUV4Y2VsQ2VsbFwiPjwvZHhvLWV4cG9ydD5cbiAgICAgICAgICAgIDxkeG8tcGFnaW5nIFtwYWdlU2l6ZV09XCJ0YWJsZURhdGFDb25maWcubnVtYmVyT2ZSb3dcIj48L2R4by1wYWdpbmc+XG4gICAgICAgICAgICA8ZHhvLXBhZ2VyIFtzaG93SW5mb109XCJ0YWJsZURhdGFDb25maWcucGFnZUluZm9cIiBbc2hvd1BhZ2VTaXplU2VsZWN0b3JdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgW2FsbG93ZWRQYWdlU2l6ZXNdPVwidGFibGVEYXRhQ29uZmlnLmFsbG93ZWRQYWdlU2l6ZXNcIj5cbiAgICAgICAgICAgIDwvZHhvLXBhZ2VyPlxuXG4gICAgICAgICAgICA8IS0tIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgdGFibGVEYXRhQ29uZmlnLmNvbHVtbnNcIj5cbiAgICAgICAgICAgICAgICA8ZHhpLWNvbHVtbiAqbmdJZj1cIml0ZW0uZGF0YUZpZWxkID09ICdyZWNvcmREYXRlJ1wiIGRhdGFGaWVsZD1cInt7IGl0ZW0uZGF0YUZpZWxkIH19XCJcbiAgICAgICAgICAgICAgICAgICAgW2NhcHRpb25dPVwiaXRlbS5jYXB0aW9uXCIgW3Zpc2libGVdPVwiaXRlbS52aXNpYmxlXCIgc29ydE9yZGVyPVwiZGVzY1wiPjwvZHhpLWNvbHVtbj5cbiAgICAgICAgICAgICAgICA8ZHhpLWNvbHVtbiAqbmdJZj1cIml0ZW0uZGF0YUZpZWxkICE9PSAncmVjb3JkRGF0ZSdcIiBbc29ydGluZ01ldGhvZF09XCJjb21tb25TZXJ2aWNlLmN1c3RvbVZhbHVlU29ydGVyXCJcbiAgICAgICAgICAgICAgICAgICAgW2NlbGxUZW1wbGF0ZV09XCJpdGVtLmRhdGFGaWVsZFwiIFtjYXB0aW9uXT1cIml0ZW0uY2FwdGlvblwiIGRhdGFGaWVsZD1cInt7IGl0ZW0uZGF0YUZpZWxkIH19XCJcbiAgICAgICAgICAgICAgICAgICAgYWxpZ25tZW50PVwibGVmdFwiIFt2aXNpYmxlXT1cIml0ZW0udmlzaWJsZVwiPlxuICAgICAgICAgICAgICAgIDwvZHhpLWNvbHVtbj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPiAtLT5cblxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiB0YWJsZURhdGFDb25maWcuY29sdW1uc1wiPlxuICAgICAgICAgICAgICAgIDwhLS0gQ2hlY2sgaWYgY29sdW1uIGhhcyBuZXN0ZWQgY29sdW1ucyAoY29sdW1uc09uZSBzdHJ1Y3R1cmUpIC0tPlxuICAgICAgICAgICAgICAgIDxkeGktY29sdW1uICpuZ0lmPVwiaXRlbS5jb2x1bW5zOyBlbHNlIGZsYXRDb2x1bW5cIiBjYXB0aW9uPVwie3sgaXRlbS5jYXB0aW9uIH19XCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHN1Ykl0ZW0gb2YgaXRlbS5jb2x1bW5zXCI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkeGktY29sdW1uICpuZ0lmPVwiIXNob3VsZFNob3dDb2x1bW4oc3ViSXRlbS5kYXRhRmllbGQpXCIgW2RhdGFGaWVsZF09XCJzdWJJdGVtLmRhdGFGaWVsZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NhcHRpb25dPVwic3ViSXRlbS5jYXB0aW9uXCIgW3Zpc2libGVdPVwic3ViSXRlbS52aXNpYmxlXCIgYWxpZ25tZW50PVwibGVmdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydE9yZGVyPVwiZGVzY1wiPjwvZHhpLWNvbHVtbj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPGR4aS1jb2x1bW4gKm5nSWY9XCJzaG91bGRTaG93Q29sdW1uKHN1Ykl0ZW0uZGF0YUZpZWxkKVwiIFtkYXRhRmllbGRdPVwic3ViSXRlbS5kYXRhRmllbGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjYXB0aW9uXT1cInN1Ykl0ZW0uY2FwdGlvblwiIFt2aXNpYmxlXT1cInN1Ykl0ZW0udmlzaWJsZVwiIGFsaWdubWVudD1cInJpZ2h0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2VsbFRlbXBsYXRlXT1cIml0ZW0uZGF0YUZpZWxkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc29ydGluZ01ldGhvZF09XCJjb21tb25TZXJ2aWNlLmN1c3RvbVZhbHVlU29ydGVyXCI+PC9keGktY29sdW1uPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L2R4aS1jb2x1bW4+XG5cbiAgICAgICAgICAgICAgICA8IS0tIEZsYXQgY29sdW1uIHN0cnVjdHVyZSAoY29sdW1uc1R3byBzdHJ1Y3R1cmUpIC0tPlxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZmxhdENvbHVtbj5cblxuICAgICAgICAgICAgICAgICAgICA8ZHhpLWNvbHVtbiAqbmdJZj1cIiFzaG91bGRTaG93Q29sdW1uKGl0ZW0uZGF0YUZpZWxkKVwiIGRhdGFGaWVsZD1cInt7IGl0ZW0uZGF0YUZpZWxkIH19XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjYXB0aW9uXT1cIml0ZW0uY2FwdGlvblwiIFt2aXNpYmxlXT1cIml0ZW0udmlzaWJsZVwiIHNvcnRPcmRlcj1cImRlc2NcIj48L2R4aS1jb2x1bW4+XG5cbiAgICAgICAgICAgICAgICAgICAgPGR4aS1jb2x1bW4gKm5nSWY9XCJzaG91bGRTaG93Q29sdW1uKGl0ZW0uZGF0YUZpZWxkKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc29ydGluZ01ldGhvZF09XCJjb21tb25TZXJ2aWNlLmN1c3RvbVZhbHVlU29ydGVyXCIgW2NlbGxUZW1wbGF0ZV09XCJpdGVtLmRhdGFGaWVsZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2FwdGlvbl09XCJpdGVtLmNhcHRpb25cIiBkYXRhRmllbGQ9XCJ7eyBpdGVtLmRhdGFGaWVsZCB9fVwiIGFsaWdubWVudD1cInJpZ2h0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt2aXNpYmxlXT1cIml0ZW0udmlzaWJsZVwiPlxuICAgICAgICAgICAgICAgICAgICA8L2R4aS1jb2x1bW4+XG5cblxuICAgICAgICAgICAgICAgICAgICA8IS0tIDxkeGktY29sdW1uIFtkYXRhRmllbGRdPVwiaXRlbS5kYXRhRmllbGRcIiBbY2FwdGlvbl09XCJpdGVtLmNhcHRpb25cIiBbdmlzaWJsZV09XCJpdGVtLnZpc2libGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NlbGxUZW1wbGF0ZV09XCJpdGVtLmRhdGFGaWVsZFwiIGFsaWdubWVudD1cImxlZnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3NvcnRpbmdNZXRob2RdPVwiY29tbW9uU2VydmljZS5jdXN0b21WYWx1ZVNvcnRlclwiPjwvZHhpLWNvbHVtbj4gLS0+XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIHRhYmxlRGF0YUNvbmZpZy5jb2x1bW5zXCI+XG4gICAgICAgICAgICAgICAgPGRpdiAqZHhUZW1wbGF0ZT1cImxldCBkYXRhIG9mIGl0ZW0uZGF0YUZpZWxkXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwiZGF0YS52YWx1ZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2R4LWRhdGEtZ3JpZD5cblxuICAgIDwvZGl2PlxuXG5cbjwvZGl2PiJdfQ==
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Component, Input, EventEmitter, Output, ViewChild, HostListener } from '@angular/core';
|
|
2
2
|
import moment from '../../application-controller/moment-helper';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "../../
|
|
4
|
+
import * as i1 from "../../gamma-app-controller.service";
|
|
5
5
|
import * as i2 from "../kpi-comon-service";
|
|
6
6
|
import * as i3 from "ngx-toastr";
|
|
7
7
|
import * as i4 from "../../application-controller/common";
|
|
@@ -243,12 +243,12 @@ export class GammaAdvanceFilterComponent {
|
|
|
243
243
|
}
|
|
244
244
|
}
|
|
245
245
|
}
|
|
246
|
-
GammaAdvanceFilterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: GammaAdvanceFilterComponent, deps: [{ token: i1.
|
|
246
|
+
GammaAdvanceFilterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: GammaAdvanceFilterComponent, deps: [{ token: i1.GammaAppControllerService }, { token: i2.kpicommonService }, { token: i3.ToastrService }, { token: i4.CommonService }], target: i0.ɵɵFactoryTarget.Component });
|
|
247
247
|
GammaAdvanceFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: GammaAdvanceFilterComponent, selector: "app-gamma-advance-filter", inputs: { kpiId: "kpiId", filterStartDate: "filterStartDate", filterEndDate: "filterEndDate", browser_api_config: "browser_api_config", isButtonDesiable: "isButtonDesiable", filterOperatorData: "filterOperatorData" }, outputs: { filterDataObject: "filterDataObject" }, host: { listeners: { "document:click": "onDocumentClick($event)" } }, viewQueries: [{ propertyName: "menuIcon", first: true, predicate: ["menuIcon"], descendants: true }], ngImport: i0, template: "<app-loader *ngIf=\"isLoader\"></app-loader>\n\n\n<ng-container *ngIf=\"!isLoader\">\n <div class=\"flex flex-col border-b\">\n <div class=\"flex flex-row justify-end mb-4\" *ngIf=\"quickDateSelector\">\n <div class=\"w-1/4\">\n <dx-select-box [dataSource]=\"ranges\" valueExpr=\"value\" displayExpr=\"name\"\n (onValueChanged)=\"getQuickDateClick($event)\" placeholder=\"Quick Dates\">\n </dx-select-box>\n </div>\n </div>\n\n <ng-container *ngFor=\"let filter of kpiFilterData\">\n\n <div class=\"flex flex-row justify-between\">\n <ng-container *ngIf=\"filter.filterType == 'date'\">\n <ng-container *ngIf=\"filter.display\">\n <div class=\"mb-2\">{{getCapitalize(filter.label)}}</div>\n <div class=\"mb-2\">\n <div class=\"w-80\" *ngIf=\"filter.momentFunction == 'monthPicker'\">\n <dx-date-box (onValueChanged)=\"startDateChangeForMonthPicker($event,filter.momentFormat)\"\n displayFormat=\"monthAndYear\" placeholder=\"Select Month\"\n [calendarOptions]=\"{maxZoomLevel: 'year', minZoomLevel: 'century'}\"\n type=\"{{filter.filterType}}\" [(ngModel)]=\"filter.filterDataSourceValue\">\n </dx-date-box>\n </div>\n <div class=\"w-80\" *ngIf=\"filter.momentFunction == 'weekPicker'\">\n <dx-date-box (onValueChanged)=\"startDateChange($event)\" displayFormat=\"yyyy-MM-dd\"\n type=\"{{filter.filterType}}\" [(ngModel)]=\"filter.filterDataSourceValue\">\n </dx-date-box>\n </div>\n <div class=\"w-80\"\n *ngIf=\"filter.momentFunction !== 'monthPicker' && filter.momentFunction !== 'weekPicker'\">\n <dx-date-box (onValueChanged)=\"startDateChange($event)\" displayFormat=\"yyyy-MM-dd\"\n type=\"{{filter.filterType}}\" [(ngModel)]=\"filter.filterDataSourceValue\">\n </dx-date-box>\n </div>\n </div>\n </ng-container>\n\n\n </ng-container>\n <ng-container *ngIf=\"filter.filterType == 'datetime'\">\n <div class=\"mb-2\">{{getCapitalize(filter.label)}}</div>\n <div class=\"mb-2\">\n <div class=\"w-80\">\n <dx-date-box (onValueChanged)=\"startDateChange($event)\" displayFormat=\"yyyy-MM-dd HH:mm:ss\"\n type=\"{{filter.filterType}}\" [(ngModel)]=\"filter.filterDataSourceValue\">\n </dx-date-box>\n </div>\n </div>\n </ng-container>\n <ng-container *ngIf=\"filter.filterType !== 'date' && filter.filterType !== 'datetime'\">\n <div class=\"mb-2\">\n {{getCapitalize(filter.label)}}\n </div>\n <div class=\"mb-2\">\n <ng-container *ngIf=\"filter.filterType == 'multiple'\">\n <div class=\"w-80\">\n <dx-tag-box [dataSource]=\"filter.filterDataSource\" valueExpr=\"value\" displayExpr=\"name\"\n [searchEnabled]=\"true\" [multiline]=\"true\" [maxDisplayedTags]=\"6\"\n [(ngModel)]=\"filter.filterDataSourceValue\" [showSelectionControls]=\"true\"\n [searchEnabled]=\"true\">\n </dx-tag-box>\n </div>\n </ng-container>\n <ng-container *ngIf=\"filter.filterType == 'single'\">\n <div class=\"w-80\">\n <dx-select-box [items]=\"filter.filterDataSource\"\n [(ngModel)]=\"filter.filterDataSourceValue\" displayExpr=\"name\"\n valueExpr=\"value\"></dx-select-box>\n </div>\n </ng-container>\n <ng-container *ngIf=\"filter.filterType == 'content'\">\n <div class=\"w-80\">\n <dx-text-box [(ngModel)]=\"filter.filterDataSourceValue\"></dx-text-box>\n </div>\n </ng-container>\n </div>\n </ng-container>\n </div>\n </ng-container>\n </div>\n <div class=\"flex flex-row justify-end pl-3\">\n\n\n <button class=\"{{commonService.BtnLightWhite}} cursor-pointer mt-2\" (click)=\"reseteFilter()\">Reset</button>\n <button class=\"{{commonService.btnPrimaryBlue}} cursor-pointer mt-2\" (click)=\"searchByFilter()\"\n *ngIf=\"isButtonDesiable\">Search</button>\n </div>\n</ng-container>", styles: ["::ng-deep .dx-timeview{width:250px!important}::ng-deep .dx-timeview-field .dx-numberbox{width:70px!important}::ng-deep .dx-timeview-format12{width:70px!important}::ng-deep .dx-numberbox-spin-container{width:18px!important}::ng-deep .dx-texteditor{margin-bottom:10px}.floating-menu{position:absolute;display:none;background:white;border:1px solid #ccc;box-shadow:0 4px 8px #0000001a;z-index:1000;min-width:150px}.floating-menu.show{display:block;z-index:99999}.floating-menu ul{list-style:none;padding:0;margin:0}.floating-menu ul li{padding:10px;cursor:pointer}.floating-menu ul li:hover{background:#f0f0f0}\n"], dependencies: [{ kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.DxDateBoxComponent, selector: "dx-date-box", inputs: ["acceptCustomValue", "accessKey", "activeStateEnabled", "adaptivityEnabled", "applyButtonText", "applyValueMode", "buttons", "calendarOptions", "cancelButtonText", "dateOutOfRangeMessage", "dateSerializationFormat", "deferRendering", "disabled", "disabledDates", "displayFormat", "dropDownButtonTemplate", "dropDownOptions", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "inputAttr", "interval", "invalidDateMessage", "isValid", "label", "labelMode", "max", "maxLength", "min", "name", "opened", "openOnFieldClick", "pickerType", "placeholder", "readOnly", "rtlEnabled", "showAnalogClock", "showClearButton", "showDropDownButton", "spellcheck", "stylingMode", "tabIndex", "text", "type", "useMaskBehavior", "validationError", "validationErrors", "validationMessageMode", "validationStatus", "value", "valueChangeEvent", "visible", "width"], outputs: ["onChange", "onClosed", "onContentReady", "onCopy", "onCut", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onKeyDown", "onKeyUp", "onOpened", "onOptionChanged", "onPaste", "onValueChanged", "acceptCustomValueChange", "accessKeyChange", "activeStateEnabledChange", "adaptivityEnabledChange", "applyButtonTextChange", "applyValueModeChange", "buttonsChange", "calendarOptionsChange", "cancelButtonTextChange", "dateOutOfRangeMessageChange", "dateSerializationFormatChange", "deferRenderingChange", "disabledChange", "disabledDatesChange", "displayFormatChange", "dropDownButtonTemplateChange", "dropDownOptionsChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "intervalChange", "invalidDateMessageChange", "isValidChange", "labelChange", "labelModeChange", "maxChange", "maxLengthChange", "minChange", "nameChange", "openedChange", "openOnFieldClickChange", "pickerTypeChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "showAnalogClockChange", "showClearButtonChange", "showDropDownButtonChange", "spellcheckChange", "stylingModeChange", "tabIndexChange", "textChange", "typeChange", "useMaskBehaviorChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationStatusChange", "valueChange", "valueChangeEventChange", "visibleChange", "widthChange", "onBlur"] }, { kind: "component", type: i7.DxSelectBoxComponent, selector: "dx-select-box", inputs: ["acceptCustomValue", "accessKey", "activeStateEnabled", "buttons", "dataSource", "deferRendering", "disabled", "displayExpr", "displayValue", "dropDownButtonTemplate", "dropDownOptions", "elementAttr", "fieldTemplate", "focusStateEnabled", "grouped", "groupTemplate", "height", "hint", "hoverStateEnabled", "inputAttr", "isValid", "items", "itemTemplate", "label", "labelMode", "maxLength", "minSearchLength", "name", "noDataText", "opened", "openOnFieldClick", "placeholder", "readOnly", "rtlEnabled", "searchEnabled", "searchExpr", "searchMode", "searchTimeout", "selectedItem", "showClearButton", "showDataBeforeSearch", "showDropDownButton", "showSelectionControls", "spellcheck", "stylingMode", "tabIndex", "text", "useItemTextAsTitle", "validationError", "validationErrors", "validationMessageMode", "validationStatus", "value", "valueChangeEvent", "valueExpr", "visible", "width", "wrapItemText"], outputs: ["onChange", "onClosed", "onContentReady", "onCopy", "onCustomItemCreating", "onCut", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onItemClick", "onKeyDown", "onKeyUp", "onOpened", "onOptionChanged", "onPaste", "onSelectionChanged", "onValueChanged", "acceptCustomValueChange", "accessKeyChange", "activeStateEnabledChange", "buttonsChange", "dataSourceChange", "deferRenderingChange", "disabledChange", "displayExprChange", "displayValueChange", "dropDownButtonTemplateChange", "dropDownOptionsChange", "elementAttrChange", "fieldTemplateChange", "focusStateEnabledChange", "groupedChange", "groupTemplateChange", "heightChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "isValidChange", "itemsChange", "itemTemplateChange", "labelChange", "labelModeChange", "maxLengthChange", "minSearchLengthChange", "nameChange", "noDataTextChange", "openedChange", "openOnFieldClickChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "searchEnabledChange", "searchExprChange", "searchModeChange", "searchTimeoutChange", "selectedItemChange", "showClearButtonChange", "showDataBeforeSearchChange", "showDropDownButtonChange", "showSelectionControlsChange", "spellcheckChange", "stylingModeChange", "tabIndexChange", "textChange", "useItemTextAsTitleChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationStatusChange", "valueChange", "valueChangeEventChange", "valueExprChange", "visibleChange", "widthChange", "wrapItemTextChange", "onBlur"] }, { kind: "component", type: i8.DxTagBoxComponent, selector: "dx-tag-box", inputs: ["acceptCustomValue", "accessKey", "activeStateEnabled", "applyValueMode", "buttons", "dataSource", "deferRendering", "disabled", "displayExpr", "dropDownButtonTemplate", "dropDownOptions", "elementAttr", "fieldTemplate", "focusStateEnabled", "grouped", "groupTemplate", "height", "hideSelectedItems", "hint", "hoverStateEnabled", "inputAttr", "isValid", "items", "itemTemplate", "label", "labelMode", "maxDisplayedTags", "maxFilterQueryLength", "maxLength", "minSearchLength", "multiline", "name", "noDataText", "opened", "openOnFieldClick", "placeholder", "readOnly", "rtlEnabled", "searchEnabled", "searchExpr", "searchMode", "searchTimeout", "selectAllMode", "selectAllText", "selectedItems", "showClearButton", "showDataBeforeSearch", "showDropDownButton", "showMultiTagOnly", "showSelectionControls", "stylingMode", "tabIndex", "tagTemplate", "text", "useItemTextAsTitle", "validationError", "validationErrors", "validationMessageMode", "validationStatus", "value", "valueExpr", "visible", "width", "wrapItemText"], outputs: ["onChange", "onClosed", "onContentReady", "onCustomItemCreating", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onItemClick", "onKeyDown", "onKeyUp", "onMultiTagPreparing", "onOpened", "onOptionChanged", "onSelectAllValueChanged", "onSelectionChanged", "onValueChanged", "acceptCustomValueChange", "accessKeyChange", "activeStateEnabledChange", "applyValueModeChange", "buttonsChange", "dataSourceChange", "deferRenderingChange", "disabledChange", "displayExprChange", "dropDownButtonTemplateChange", "dropDownOptionsChange", "elementAttrChange", "fieldTemplateChange", "focusStateEnabledChange", "groupedChange", "groupTemplateChange", "heightChange", "hideSelectedItemsChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "isValidChange", "itemsChange", "itemTemplateChange", "labelChange", "labelModeChange", "maxDisplayedTagsChange", "maxFilterQueryLengthChange", "maxLengthChange", "minSearchLengthChange", "multilineChange", "nameChange", "noDataTextChange", "openedChange", "openOnFieldClickChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "searchEnabledChange", "searchExprChange", "searchModeChange", "searchTimeoutChange", "selectAllModeChange", "selectAllTextChange", "selectedItemsChange", "showClearButtonChange", "showDataBeforeSearchChange", "showDropDownButtonChange", "showMultiTagOnlyChange", "showSelectionControlsChange", "stylingModeChange", "tabIndexChange", "tagTemplateChange", "textChange", "useItemTextAsTitleChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationStatusChange", "valueChange", "valueExprChange", "visibleChange", "widthChange", "wrapItemTextChange", "onBlur"] }, { kind: "component", type: i9.DxTextBoxComponent, selector: "dx-text-box", inputs: ["accessKey", "activeStateEnabled", "buttons", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "inputAttr", "isValid", "label", "labelMode", "mask", "maskChar", "maskInvalidMessage", "maskRules", "maxLength", "mode", "name", "placeholder", "readOnly", "rtlEnabled", "showClearButton", "showMaskMode", "spellcheck", "stylingMode", "tabIndex", "text", "useMaskedValue", "validationError", "validationErrors", "validationMessageMode", "validationStatus", "value", "valueChangeEvent", "visible", "width"], outputs: ["onChange", "onContentReady", "onCopy", "onCut", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onKeyDown", "onKeyUp", "onOptionChanged", "onPaste", "onValueChanged", "accessKeyChange", "activeStateEnabledChange", "buttonsChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "isValidChange", "labelChange", "labelModeChange", "maskChange", "maskCharChange", "maskInvalidMessageChange", "maskRulesChange", "maxLengthChange", "modeChange", "nameChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "showClearButtonChange", "showMaskModeChange", "spellcheckChange", "stylingModeChange", "tabIndexChange", "textChange", "useMaskedValueChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationStatusChange", "valueChange", "valueChangeEventChange", "visibleChange", "widthChange", "onBlur"] }, { kind: "directive", type: i10.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i10.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i11.LoaderComponent, selector: "app-loader" }] });
|
|
248
248
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: GammaAdvanceFilterComponent, decorators: [{
|
|
249
249
|
type: Component,
|
|
250
250
|
args: [{ selector: 'app-gamma-advance-filter', template: "<app-loader *ngIf=\"isLoader\"></app-loader>\n\n\n<ng-container *ngIf=\"!isLoader\">\n <div class=\"flex flex-col border-b\">\n <div class=\"flex flex-row justify-end mb-4\" *ngIf=\"quickDateSelector\">\n <div class=\"w-1/4\">\n <dx-select-box [dataSource]=\"ranges\" valueExpr=\"value\" displayExpr=\"name\"\n (onValueChanged)=\"getQuickDateClick($event)\" placeholder=\"Quick Dates\">\n </dx-select-box>\n </div>\n </div>\n\n <ng-container *ngFor=\"let filter of kpiFilterData\">\n\n <div class=\"flex flex-row justify-between\">\n <ng-container *ngIf=\"filter.filterType == 'date'\">\n <ng-container *ngIf=\"filter.display\">\n <div class=\"mb-2\">{{getCapitalize(filter.label)}}</div>\n <div class=\"mb-2\">\n <div class=\"w-80\" *ngIf=\"filter.momentFunction == 'monthPicker'\">\n <dx-date-box (onValueChanged)=\"startDateChangeForMonthPicker($event,filter.momentFormat)\"\n displayFormat=\"monthAndYear\" placeholder=\"Select Month\"\n [calendarOptions]=\"{maxZoomLevel: 'year', minZoomLevel: 'century'}\"\n type=\"{{filter.filterType}}\" [(ngModel)]=\"filter.filterDataSourceValue\">\n </dx-date-box>\n </div>\n <div class=\"w-80\" *ngIf=\"filter.momentFunction == 'weekPicker'\">\n <dx-date-box (onValueChanged)=\"startDateChange($event)\" displayFormat=\"yyyy-MM-dd\"\n type=\"{{filter.filterType}}\" [(ngModel)]=\"filter.filterDataSourceValue\">\n </dx-date-box>\n </div>\n <div class=\"w-80\"\n *ngIf=\"filter.momentFunction !== 'monthPicker' && filter.momentFunction !== 'weekPicker'\">\n <dx-date-box (onValueChanged)=\"startDateChange($event)\" displayFormat=\"yyyy-MM-dd\"\n type=\"{{filter.filterType}}\" [(ngModel)]=\"filter.filterDataSourceValue\">\n </dx-date-box>\n </div>\n </div>\n </ng-container>\n\n\n </ng-container>\n <ng-container *ngIf=\"filter.filterType == 'datetime'\">\n <div class=\"mb-2\">{{getCapitalize(filter.label)}}</div>\n <div class=\"mb-2\">\n <div class=\"w-80\">\n <dx-date-box (onValueChanged)=\"startDateChange($event)\" displayFormat=\"yyyy-MM-dd HH:mm:ss\"\n type=\"{{filter.filterType}}\" [(ngModel)]=\"filter.filterDataSourceValue\">\n </dx-date-box>\n </div>\n </div>\n </ng-container>\n <ng-container *ngIf=\"filter.filterType !== 'date' && filter.filterType !== 'datetime'\">\n <div class=\"mb-2\">\n {{getCapitalize(filter.label)}}\n </div>\n <div class=\"mb-2\">\n <ng-container *ngIf=\"filter.filterType == 'multiple'\">\n <div class=\"w-80\">\n <dx-tag-box [dataSource]=\"filter.filterDataSource\" valueExpr=\"value\" displayExpr=\"name\"\n [searchEnabled]=\"true\" [multiline]=\"true\" [maxDisplayedTags]=\"6\"\n [(ngModel)]=\"filter.filterDataSourceValue\" [showSelectionControls]=\"true\"\n [searchEnabled]=\"true\">\n </dx-tag-box>\n </div>\n </ng-container>\n <ng-container *ngIf=\"filter.filterType == 'single'\">\n <div class=\"w-80\">\n <dx-select-box [items]=\"filter.filterDataSource\"\n [(ngModel)]=\"filter.filterDataSourceValue\" displayExpr=\"name\"\n valueExpr=\"value\"></dx-select-box>\n </div>\n </ng-container>\n <ng-container *ngIf=\"filter.filterType == 'content'\">\n <div class=\"w-80\">\n <dx-text-box [(ngModel)]=\"filter.filterDataSourceValue\"></dx-text-box>\n </div>\n </ng-container>\n </div>\n </ng-container>\n </div>\n </ng-container>\n </div>\n <div class=\"flex flex-row justify-end pl-3\">\n\n\n <button class=\"{{commonService.BtnLightWhite}} cursor-pointer mt-2\" (click)=\"reseteFilter()\">Reset</button>\n <button class=\"{{commonService.btnPrimaryBlue}} cursor-pointer mt-2\" (click)=\"searchByFilter()\"\n *ngIf=\"isButtonDesiable\">Search</button>\n </div>\n</ng-container>", styles: ["::ng-deep .dx-timeview{width:250px!important}::ng-deep .dx-timeview-field .dx-numberbox{width:70px!important}::ng-deep .dx-timeview-format12{width:70px!important}::ng-deep .dx-numberbox-spin-container{width:18px!important}::ng-deep .dx-texteditor{margin-bottom:10px}.floating-menu{position:absolute;display:none;background:white;border:1px solid #ccc;box-shadow:0 4px 8px #0000001a;z-index:1000;min-width:150px}.floating-menu.show{display:block;z-index:99999}.floating-menu ul{list-style:none;padding:0;margin:0}.floating-menu ul li{padding:10px;cursor:pointer}.floating-menu ul li:hover{background:#f0f0f0}\n"] }]
|
|
251
|
-
}], ctorParameters: function () { return [{ type: i1.
|
|
251
|
+
}], ctorParameters: function () { return [{ type: i1.GammaAppControllerService }, { type: i2.kpicommonService }, { type: i3.ToastrService }, { type: i4.CommonService }]; }, propDecorators: { kpiId: [{
|
|
252
252
|
type: Input
|
|
253
253
|
}], filterStartDate: [{
|
|
254
254
|
type: Input
|
|
@@ -270,4 +270,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
270
270
|
type: HostListener,
|
|
271
271
|
args: ['document:click', ['$event']]
|
|
272
272
|
}] } });
|
|
273
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FtbWEtYWR2YW5jZS1maWx0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2FtbWEtYXBwLWNvbnRyb2xsZXIvc3JjL2xpYi9zaGFyZWQvZ2FtbWEtYWR2YW5jZS1maWx0ZXIvZ2FtbWEtYWR2YW5jZS1maWx0ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2FtbWEtYXBwLWNvbnRyb2xsZXIvc3JjL2xpYi9zaGFyZWQvZ2FtbWEtYWR2YW5jZS1maWx0ZXIvZ2FtbWEtYWR2YW5jZS1maWx0ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBYyxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXBILE9BQU8sTUFBTSxNQUFNLDRDQUE0QyxDQUFDOzs7Ozs7Ozs7Ozs7O0FBVWhFLE1BQU0sT0FBTywyQkFBMkI7SUFnRHRDLFlBQ1UsT0FBa0MsRUFDbEMsVUFBNEIsRUFDNUIsTUFBcUIsRUFDdEIsYUFBNEI7UUFIM0IsWUFBTyxHQUFQLE9BQU8sQ0FBMkI7UUFDbEMsZUFBVSxHQUFWLFVBQVUsQ0FBa0I7UUFDNUIsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQUN0QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQTlDcEIscUJBQWdCLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFJMUUsc0JBQWlCLEdBQVksS0FBSyxDQUFDO1FBTW5DLGFBQVEsR0FBRyxJQUFJLENBQUM7UUFFaEIsV0FBTSxHQUFHO1lBQ1AsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDLE1BQU0sRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUU7WUFDOUMsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxFQUFFO1lBQzFGLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsRUFBRTtZQUM1RixFQUFFLElBQUksRUFBRSxjQUFjLEVBQUUsS0FBSyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLEVBQUU7WUFDOUYsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRTtZQUNuRixFQUFFLElBQUksRUFBRSxjQUFjLEVBQUUsS0FBSyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFO1lBQzFFLEVBQUUsSUFBSSxFQUFFLGNBQWMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUU7WUFDMUUsRUFBRSxJQUFJLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRTtZQUMzRSxFQUFF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MkI7a0JBTHZDLFNBQVM7K0JBQ0UsMEJBQTBCO3VNQUszQixLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ1csZ0JBQWdCO3NCQUFoQyxNQUFNO2dCQUNtQyxRQUFRO3NCQUFqRCxTQUFTO3VCQUFDLFVBQVUsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBd0JwQyxrQkFBa0I7c0JBRHJCLEtBQUs7dUJBQUMsb0JBQW9CO2dCQW9QM0IsZUFBZTtzQkFEZCxZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBFdmVudEVtaXR0ZXIsIE91dHB1dCwgRWxlbWVudFJlZiwgVmlld0NoaWxkLCBIb3N0TGlzdGVuZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRvYXN0clNlcnZpY2UgfSBmcm9tICduZ3gtdG9hc3RyJztcbmltcG9ydCBtb21lbnQgZnJvbSAnLi4vLi4vYXBwbGljYXRpb24tY29udHJvbGxlci9tb21lbnQtaGVscGVyJztcbmltcG9ydCB7IGtwaWNvbW1vblNlcnZpY2UgfSBmcm9tICcuLi9rcGktY29tb24tc2VydmljZSc7XG5pbXBvcnQgeyBDb21tb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vYXBwbGljYXRpb24tY29udHJvbGxlci9jb21tb24nO1xuaW1wb3J0IHsgQXBwbGljYXRpb25Db250ZW50U2VydmljZSB9IGZyb20gJy4uLy4uL2FwcGxpY2F0aW9uLWNvbnRyb2xsZXIvYXBwbGljYXRpb24tY29udGVudC5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWdhbW1hLWFkdmFuY2UtZmlsdGVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2dhbW1hLWFkdmFuY2UtZmlsdGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZ2FtbWEtYWR2YW5jZS1maWx0ZXIuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBHYW1tYUFkdmFuY2VGaWx0ZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBrcGlJZDogYW55O1xuICBASW5wdXQoKSBmaWx0ZXJTdGFydERhdGU6IGFueTtcbiAgQElucHV0KCkgZmlsdGVyRW5kRGF0ZTogYW55O1xuICBASW5wdXQoKSBicm93c2VyX2FwaV9jb25maWc6IGFueTtcbiAgQElucHV0KCkgaXNCdXR0b25EZXNpYWJsZTogYm9vbGVhbjtcbiAgQE91dHB1dCgpIHB1YmxpYyBmaWx0ZXJEYXRhT2JqZWN0OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQFZpZXdDaGlsZCgnbWVudUljb24nLCB7IHN0YXRpYzogZmFsc2UgfSkgbWVudUljb246IEVsZW1lbnRSZWY7XG5cbiAgaXNEYXRlc0Ryb3BEb3duOiBib29sZWFuO1xuICBxdWlja0RhdGVTZWxlY3RvcjogYm9vbGVhbiA9IGZhbHNlO1xuICBrcGlGaWx0ZXJEYXRhOiBhbnk7XG4gIC8vIHN0YXJ0X2RhdGUgPSBtb21lbnQoKS5zdWJ0cmFjdCg1LCAnZGF5cycpLmZvcm1hdCgnWVlZWS1NTS1ERCcpO1xuICAvLyBlbmRfZGF0ZSA9IG1vbWVudCgpLmZvcm1hdCgnWVlZWS1NTS1ERCcpO1xuICBkZWZhdWx0U3RhcnREYXRlOiBhbnk7XG4gIGRlZmF1bHRFbmREYXRlOiBhbnk7XG4gIGlzTG9hZGVyID0gdHJ1ZTtcblxuICByYW5nZXMgPSBbXG4gICAgeyBuYW1lOiBcIlRvZGF5XCIsIHZhbHVlOiBbbW9tZW50KCksIG1vbWVudCgpXSB9LFxuICAgIHsgbmFtZTogXCJZZXN0ZXJkYXlcIiwgdmFsdWU6IFttb21lbnQoKS5zdWJ0cmFjdCgxLCAnZGF5cycpLCBtb21lbnQoKS5zdWJ0cmFjdCgxLCAnZGF5cycpXSB9LFxuICAgIHsgbmFtZTogXCJMYXN0IDcgRGF5c1wiLCB2YWx1ZTogW21vbWVudCgpLnN1YnRyYWN0KDcsICdkYXlzJyksIG1vbWVudCgpLnN1YnRyYWN0KDEsICdkYXlzJyldIH0sXG4gICAgeyBuYW1lOiBcIkxhc3QgMTUgRGF5c1wiLCB2YWx1ZTogW21vbWVudCgpLnN1YnRyYWN0KDE1LCAnZGF5cycpLCBtb21lbnQoKS5zdWJ0cmFjdCgxLCAnZGF5cycpXSB9LFxuICAgIHsgbmFtZTogJ1RoaXMgTW9udGgnLCB2YWx1ZTogW21vbWVudCgpLnN0YXJ0T2YoJ21vbnRoJyksIG1vbWVudCgpLmVuZE9mKCdtb250aCcpXSB9LFxuICAgIHsgbmFtZTogJ0xhc3QgMSBNb250aCcsIHZhbHVlOiBbbW9tZW50KCkuc3VidHJhY3QoMzAsICdkYXlzJyksIG1vbWVudCgpXSB9LFxuICAgIHsgbmFtZTogJ0xhc3QgMyBNb250aCcsIHZhbHVlOiBbbW9tZW50KCkuc3VidHJhY3QoOTEsICdkYXlzJyksIG1vbWVudCgpXSB9LFxuICAgIHsgbmFtZTogJ0xhc3QgNiBNb250aCcsIHZhbHVlOiBbbW9tZW50KCkuc3VidHJhY3QoMTgyLCAnZGF5cycpLCBtb21lbnQoKV0gfSxcbiAgICB7IG5hbWU6ICdMYXN0IDEgWWVhcicsIHZhbHVlOiBbbW9tZW50KCkuc3VidHJhY3QoMzY1LCAnZGF5cycpLCBtb21lbnQoKV0gfVxuICBdXG5cbiAgQElucHV0KCdmaWx0ZXJPcGVyYXRvckRhdGEnKVxuICBzZXQgZmlsdGVyT3BlcmF0b3JEYXRhKHZhbHVlKSB7XG4gICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfSBlbHNlIHtcblxuICAgICAgdGhpcy5rcGlGaWx0ZXJEYXRhID0gW107XG4gICAgICB0aGlzLmtwaUZpbHRlckRhdGEgPSB2YWx1ZTtcbiAgICAgIHRoaXMua3BpRmlsdGVyRGF0YS5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICBpZiAoaXRlbS5oYXNPd25Qcm9wZXJ0eSgnbW9tZW50Rm9ybWF0ZScpKSB7XG4gICAgICAgICAgaXRlbS5tb21lbnRGb3JtYXQgPSBpdGVtLm1vbWVudEZvcm1hdGU7XG4gICAgICAgICAgZGVsZXRlIGl0ZW0ubW9tZW50Rm9ybWF0ZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICB0aGlzLnByb2Nlc3NGaWx0ZXJGb3JEYXRhKCk7XG4gICAgfVxuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBzZXJ2aWNlOiBBcHBsaWNhdGlvbkNvbnRlbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUga3BpU2VydmljZToga3BpY29tbW9uU2VydmljZSxcbiAgICBwcml2YXRlIHRvYXN0cjogVG9hc3RyU2VydmljZSxcbiAgICBwdWJsaWMgY29tbW9uU2VydmljZTogQ29tbW9uU2VydmljZVxuICApIHsgfVxuXG5cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmRlZmF1bHRFbmREYXRlID0gbW9tZW50KCkuc3VidHJhY3QoJzEnLCAnZGF5cycpLmZvcm1hdCgnWVlZWS1NTS1ERCcpO1xuICAgIHRoaXMuZGVmYXVsdFN0YXJ0RGF0ZSA9IG1vbWVudCh0aGlzLmRlZmF1bHRFbmREYXRlKS5zdWJ0cmFjdCgnNScsICdkYXlzJykuZm9ybWF0KCdZWVlZLU1NLUREJyk7XG5cblxuICB9XG5cblxuICBhc3luYyBwcm9jZXNzRmlsdGVyRm9yRGF0YSgpIHtcbiAgICBmb3IgKGNvbnN0IGZpbHRlciBvZiB0aGlzLmtwaUZpbHRlckRhdGEpIHtcblxuICAgICAgdGhpcy5pc0xvYWRlciA9IHRydWU7XG4gICAgICBjb25zdCBzdGFydERhdGVGaWx0ZXIgPSB0aGlzLmtwaUZpbHRlckRhdGEuZmluZChmaWx0ZXIgPT4gZmlsdGVyLmFwaU5hbWUgPT09ICdzdGFydERhdGUnICYmIChmaWx0ZXIuZGlzcGxheSAhPT0gdW5kZWZpbmVkID8gZmlsdGVyLmRpc3BsYXkgOiB0cnVlKSk7XG4gICAgICBjb25zdCBlbmREYXRlRmlsdGVyID0gdGhpcy5rcGlGaWx0ZXJEYXRhLmZpbmQoZmlsdGVyID0+IGZpbHRlci5hcGlOYW1lID09PSAnZW5kRGF0ZScgJiYgKGZpbHRlci5kaXNwbGF5ICE9PSB1bmRlZmluZWQgPyBmaWx0ZXIuZGlzcGxheSA6IHRydWUpKTtcbiAgICAgIGlmIChzdGFydERhdGVGaWx0ZXIgJiYgZW5kRGF0ZUZpbHRlcikge1xuICAgICAgICB0aGlzLnF1aWNrRGF0ZVNlbGVjdG9yID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHRyeSB7XG4gICAgICAgIGlmIChmaWx0ZXIuYXBpTmFtZSAhPT0gJ3N0YXJ0RGF0ZScgJiYgZmlsdGVyLmFwaU5hbWUgIT09ICdlbmREYXRlJykge1xuICAgICAgICAgIGlmIChmaWx0ZXIuYXBpTmFtZS5pbmNsdWRlcygnL3JlZmVyZW5jZS8nKSkge1xuICAgICAgICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMuc2VydmljZS5nZXRGaWx0ZXJEYXRhQnlEcmlsbERvd24oZmlsdGVyLmFwaU5hbWUpLnRvUHJvbWlzZSgpO1xuXG4gICAgICAgICAgICBmaWx0ZXJbJ2ZpbHRlckRhdGFTb3VyY2UnXSA9IGRhdGE7XG4gICAgICAgICAgICBpZiAoZmlsdGVyLmRlZmF1bHRGaWx0ZXJUeXBlID09IFwiZHluYW1pY1wiICYmIGZpbHRlci5kZWZhdWx0RmlsdGVyVmFsdWUgIT09IFwiXCIpIHtcbiAgICAgICAgICAgICAgZmlsdGVyWydmaWx0ZXJEYXRhU291cmNlVmFsdWUnXSA9IHRoaXMucGFyc2VDb250ZW50VmFsdWUoZmlsdGVyLmRlZmF1bHRGaWx0ZXJWYWx1ZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBmaWx0ZXJbJ2ZpbHRlckRhdGFTb3VyY2VWYWx1ZSddID0gXCJcIjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZmlsdGVyWydmaWx0ZXJEYXRhU291cmNlJ10gPSBbXTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgfSBlbHNlIGlmIChmaWx0ZXIuZmlsdGVyVHlwZSA9PSAnZGF0ZScgfHwgZmlsdGVyLmZpbHRlclR5cGUgPT0gJ2RhdGV0aW1lJykge1xuICAgICAgICAgIGlmIChmaWx0ZXIuZGlzcGxheSA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGZpbHRlci5kaXNwbGF5ID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGZpbHRlci5kZWZhdWx0RmlsdGVyVHlwZSA9PSBcImR5bmFtaWNcIiAmJiBmaWx0ZXIubW9tZW50RnVuY3Rpb24gIT09IFwiXCIgJiYgZmlsdGVyLmRlZmF1bHRGaWx0ZXJWYWx1ZSAhPT0gXCJcIiAmJiBmaWx0ZXIubW9tZW50Rm9ybWF0ICE9PSBcIlwiKSB7XG4gICAgICAgICAgICBpZiAoZmlsdGVyLm1vbWVudEZ1bmN0aW9uID09IFwibW9udGhQaWNrZXJcIikge1xuICAgICAgICAgICAgICBpZiAoZmlsdGVyLmFwaU5hbWUgPT0gXCJzdGFydERhdGVcIikge1xuICAgICAgICAgICAgICAgIGZpbHRlclsnZmlsdGVyRGF0YVNvdXJjZVZhbHVlJ10gPSBtb21lbnQoKS5zdGFydE9mKCdtb250aCcpLmZvcm1hdChmaWx0ZXIubW9tZW50Rm9ybWF0KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAoZmlsdGVyLmFwaU5hbWUgPT0gXCJlbmREYXRlXCIpIHtcbiAgICAgICAgICAgICAgICBmaWx0ZXJbJ2ZpbHRlckRhdGFTb3VyY2VWYWx1ZSddID0gbW9tZW50KCkuZW5kT2YoJ21vbnRoJykuZm9ybWF0KGZpbHRlci5tb21lbnRGb3JtYXQpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGZpbHRlci5tb21lbnRGdW5jdGlvbiA9PSBcIndlZWtQaWNrZXJcIikge1xuICAgICAgICAgICAgICBpZiAoZmlsdGVyLmFwaU5hbWUgPT0gXCJzdGFydERhdGVcIikge1xuICAgICAgICAgICAgICAgIGZpbHRlclsnZmlsdGVyRGF0YVNvdXJjZVZhbHVlJ10gPSBtb21lbnQoKS5zdGFydE9mKCd3ZWVrJykuZm9ybWF0KGZpbHRlci5tb21lbnRGb3JtYXQpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmIChmaWx0ZXIuYXBpTmFtZSA9PSBcImVuZERhdGVcIikge1xuICAgICAgICAgICAgICAgIGZpbHRlclsnZmlsdGVyRGF0YVNvdXJjZVZhbHVlJ10gPSBtb21lbnQoKS5lbmRPZignd2VlaycpLmZvcm1hdChmaWx0ZXIubW9tZW50Rm9ybWF0KTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBpZiAoZmlsdGVyLmFwaU5hbWUgPT0gXCJzdGFydERhdGVcIikge1xuICAgICAgICAgICAgICAgIGxldCBbY291bnQsIHVuaXRdID0gZmlsdGVyLmRlZmF1bHRGaWx0ZXJWYWx1ZS5zcGxpdCgnLCcpO1xuICAgICAgICAgICAgICAgIGZpbHRlclsnZmlsdGVyRGF0YVNvdXJjZVZhbHVlJ10gPSBtb21lbnQoKVtmaWx0ZXIubW9tZW50RnVuY3Rpb25dKHBhcnNlSW50KGNvdW50KSwgdW5pdCkuZm9ybWF0KGZpbHRlci5tb21lbnRGb3JtYXQpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmIChmaWx0ZXIuYXBpTmFtZSA9PSBcImVuZERhdGVcIikge1xuICAgICAgICAgICAgICAgIGxldCBbY291bnQsIHVuaXRdID0gZmlsdGVyLmRlZmF1bHRGaWx0ZXJWYWx1ZS5zcGxpdCgnLCcpO1xuICAgICAgICAgICAgICAgIGZpbHRlclsnZmlsdGVyRGF0YVNvdXJjZVZhbHVlJ10gPSBtb21lbnQoKVtmaWx0ZXIubW9tZW50RnVuY3Rpb25dKHBhcnNlSW50KGNvdW50KSwgdW5pdCkuZm9ybWF0KGZpbHRlci5tb21lbnRGb3JtYXQpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cblxuXG5cbiAgICAgICAgICB9IGVsc2UgaWYgKChmaWx0ZXIuZGVmYXVsdEZpbHRlclR5cGUgPT0gXCJzdGF0aWNcIiAmJiBmaWx0ZXIuZGVmYXVsdEZpbHRlclZhbHVlICE9PSBcIlwiKSkge1xuICAgICAgICAgICAgaWYgKGZpbHRlci5hcGlOYW1lID09IFwic3RhcnREYXRlXCIpIHtcbiAgICAgICAgICAgICAgZmlsdGVyWydmaWx0ZXJEYXRhU291cmNlVmFsdWUnXSA9IGZpbHRlci5kZWZhdWx0RmlsdGVyVmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZmlsdGVyLmFwaU5hbWUgPT0gXCJlbmREYXRlXCIpIHtcbiAgICAgICAgICAgICAgZmlsdGVyWydmaWx0ZXJEYXRhU291cmNlVmFsdWUnXSA9IGZpbHRlci5kZWZhdWx0RmlsdGVyVmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgIHRoaXMudG9hc3RyLmVycm9yKFwiVW5leHBlY3RlZCBTZXJ2ZXIgRXhjZXB0aW9uLiBQbGVhc2UgY29udGFjdCBTeXN0ZW0gQWRtaW4uXCIsIGZpbHRlci50eXBlKVxuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgdGhpcy5pc0xvYWRlciA9IGZhbHNlO1xuICAgICAgICBjb25zb2xlLmxvZyh0aGlzLmtwaUZpbHRlckRhdGEpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHBhcnNlQ29udGVudFZhbHVlKGNvbnRlbnR2YWx1ZSkge1xuICAgIHJldHVybiBjb250ZW50dmFsdWUuc3BsaXQoJywnKS5tYXAoaXRlbSA9PiBpdGVtLnRyaW0oKSk7XG4gIH1cblxuXG4gIGdldElzTXNpc2RuKGNvbnRleHQpIHtcbiAgICBsZXQga2V5ID0gY29udGV4dC50b0xvd2VyQ2FzZSgpXG4gICAgaWYgKGtleS5pbmNsdWRlcygnbXNpc2RuJykpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgc3RhcnREYXRlQ2hhbmdlRm9yTW9udGhQaWNrZXIoZSwgZm9ybWF0KSB7XG5cbiAgICBpZiAoZS5ldmVudCkge1xuICAgICAgdGhpcy5rcGlGaWx0ZXJEYXRhLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICAgIGlmIChlbGVtZW50LmZpbHRlclR5cGUgPT0gJ2RhdGUnIHx8IGVsZW1lbnQuZmlsdGVyVHlwZSA9PSAnZGF0ZXRpbWUnKSB7XG4gICAgICAgICAgbGV0IFtjb3VudCwgdW5pdF0gPSBlbGVtZW50LmRlZmF1bHRGaWx0ZXJWYWx1ZS5zcGxpdCgnLCcpO1xuICAgICAgICAgIGlmIChlbGVtZW50LmFwaU5hbWUgPT0gXCJzdGFydERhdGVcIikge1xuICAgICAgICAgICAgZWxlbWVudFsnZmlsdGVyRGF0YVNvdXJjZVZhbHVlJ10gPSBtb21lbnQoZS52YWx1ZSkuc3VidHJhY3QocGFyc2VJbnQoY291bnQpLCB1bml0KS5zdGFydE9mKHVuaXQpLmZvcm1hdChlbGVtZW50Lm1vbWVudEZvcm1hdCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChlbGVtZW50LmFwaU5hbWUgPT0gXCJlbmREYXRlXCIpIHtcbiAgICAgICAgICAgIGVsZW1lbnRbJ2ZpbHRlckRhdGFTb3VyY2VWYWx1ZSddID0gbW9tZW50KGUudmFsdWUpLnN1YnRyYWN0KHBhcnNlSW50KGNvdW50KSwgdW5pdCkuZW5kT2YodW5pdCkuZm9ybWF0KGVsZW1lbnQubW9tZW50Rm9ybWF0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgc3RhcnREYXRlQ2hhbmdlKGUpIHtcbiAgICB0aGlzLmRlZmF1bHRTdGFydERhdGUgPSBlLnZhbHVlO1xuICB9XG4gIGVuZERhdGVDaGFuZ2UoZSkge1xuICAgIHRoaXMuZGVmYXVsdEVuZERhdGUgPSBlLnZhbHVlO1xuICB9XG5cbiAgc2VhcmNoQnlGaWx0ZXIoKSB7XG5cbiAgICBsZXQgYXBpSnNvbk9iamVjdDogYW55ID0ge307XG4gICAgbGV0IG9wZXJhdGlvbkZpbHRlcjogYW55ID0ge307XG4gICAgdGhpcy5rcGlGaWx0ZXJEYXRhLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICBpZiAoZWxlbWVudC5maWx0ZXJUeXBlID09ICdkYXRlJyB8fCBlbGVtZW50LmZpbHRlclR5cGUgPT0gJ2RhdGV0aW1lJykge1xuICAgICAgICBhcGlKc29uT2JqZWN0W2VsZW1lbnQuYXBpTmFtZV0gPSBtb21lbnQoZWxlbWVudC5maWx0ZXJEYXRhU291cmNlVmFsdWUpLmZvcm1hdChlbGVtZW50Lm1vbWVudEZvcm1hdCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgKHR5cGVvZiBlbGVtZW50LmZpbHRlckRhdGFTb3VyY2VWYWx1ZSA9PT0gXCJzdHJpbmdcIiAmJiBlbGVtZW50LmZpbHRlckRhdGFTb3VyY2VWYWx1ZSAhPT0gXCJcIikgfHxcbiAgICAgICAgICAoQXJyYXkuaXNBcnJheShlbGVtZW50LmZpbHRlckRhdGFTb3VyY2VWYWx1ZSkgJiYgZWxlbWVudC5maWx0ZXJEYXRhU291cmNlVmFsdWUubGVuZ3RoID4gMClcbiAgICAgICAgKSB7XG4gICAgICAgICAgaWYgKGVsZW1lbnQub3BlcmF0b3JOYW1lICE9PSBcIlwiKSB7XG4gICAgICAgICAgICBpZiAoZWxlbWVudC5maWx0ZXJUeXBlID09IFwiY29udGVudFwiKSB7XG4gICAgICAgICAgICAgIG9wZXJhdGlvbkZpbHRlcltlbGVtZW50Lm9wZXJhdG9yTmFtZV0gPSBlbGVtZW50LmZpbHRlckRhdGFTb3VyY2VWYWx1ZTtcbiAgICAgICAgICAgIH0gaWYgKGVsZW1lbnQuZmlsdGVyVHlwZSA9PSBcInNpbmdsZVwiKSB7XG4gICAgICAgICAgICAgIG9wZXJhdGlvbkZpbHRlcltlbGVtZW50Lm9wZXJhdG9yTmFtZV0gPSBlbGVtZW50LmZpbHRlckRhdGFTb3VyY2VWYWx1ZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIG9wZXJhdGlvbkZpbHRlcltlbGVtZW50Lm9wZXJhdG9yTmFtZV0gPSBBcnJheS5pc0FycmF5KGVsZW1lbnQuZmlsdGVyRGF0YVNvdXJjZVZhbHVlKSA/IGVsZW1lbnQuZmlsdGVyRGF0YVNvdXJjZVZhbHVlIDogW2VsZW1lbnQuZmlsdGVyRGF0YVNvdXJjZVZhbHVlXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYXBpSnNvbk9iamVjdFtlbGVtZW50LmFwaU5hbWVdID0gZWxlbWVudC5maWx0ZXJEYXRhU291cmNlVmFsdWU7XG5cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgIH0pO1xuXG4gICAgYXBpSnNvbk9iamVjdFsnb3BlcmF0aW9uRmlsdGVyJ10gPSBvcGVyYXRpb25GaWx0ZXI7XG4gICAgLy8gbGV0IGZpbHRlcl9jb25maWcgPSB7XG4gICAgLy8gICBzdGFydERhdGU6IHRoaXMuZGVmYXVsdFN0YXJ0RGF0ZSxcbiAgICAvLyAgIGVuZERhdGU6IHRoaXMuZGVmYXVsdEVuZERhdGUsXG4gICAgLy8gICBvcGVyYXRpb25GaWx0ZXI6IGFwaUpzb25PYmplY3RcbiAgICAvLyB9XG4gICAgLy8gdGhpcy5pc0J1dHRvbkRlc2lhYmxlID0gZmFsc2U7XG5cbiAgICBjb25zb2xlLmxvZyhhcGlKc29uT2JqZWN0KTtcbiAgICB0aGlzLmZpbHRlckRhdGFPYmplY3QuZW1pdChhcGlKc29uT2JqZWN0KTtcblxuICB9XG5cblxuXG4gIHJlc2V0ZUZpbHRlcigpIHtcbiAgICB0aGlzLmRlZmF1bHRFbmREYXRlID0gdGhpcy5maWx0ZXJFbmREYXRlO1xuICAgIHRoaXMuZGVmYXVsdFN0YXJ0RGF0ZSA9IHRoaXMuZmlsdGVyU3RhcnREYXRlO1xuICAgIHRoaXMua3BpRmlsdGVyRGF0YS5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgZWxlbWVudFsnZmlsdGVyRGF0YVNvdXJjZVZhbHVlJ10gPSBcIlwiXG4gICAgfSk7XG4gIH1cblxuXG4gIGdldERyaWxkb3duRGltZW50aW9ucyhhcGlOYW1lKSB7XG4gICAgbGV0IGRpbWVudGlvbnMgPSB7XG4gICAgICBcIi9hcGkvdjEvcmVmZXJlbmNlL2dldFNlcnZlZFR5cGVzXCI6IFwic3J2VHlwZVwiLFxuICAgICAgXCIvYXBpL3YxL3JlZmVyZW5jZS9nZXRPdXRSb2FtaW5nU2VydmVkVHlwZXNcIjogXCJzcnZUeXBlXCIsXG4gICAgICBcIi9hcGkvdjEvcmVmZXJlbmNlL2dldE1TQ0RpcmVjdGlvbnNcIjogXCJkaXJlY3Rpb25cIixcbiAgICAgIFwiL2FwaS92MS9yZWZlcmVuY2UvZ2V0Q0JTVm9pY2VEaXJlY3Rpb25zXCI6IFwiZGlyZWN0aW9uXCIsXG4gICAgICBcIi9hcGkvdjEvcmVmZXJlbmNlL2dldENCU21zRGlyZWN0aW9uc1wiOiBcImRpcmVjdGlvblwiLFxuICAgICAgXCIvYXBpL3YxL3JlZmVyZW5jZS9nZXRDQlNHcHJzRGlyZWN0aW9uc1wiOiBcImRpcmVjdGlvblwiLFxuICAgICAgXCIvYXBpL3YxL3JlZmVyZW5jZS9nZXROZXR3b3JrVHlwZUtleXNcIjogXCJud19jYWxsX3R5cGVcIixcbiAgICAgIFwiL2FwaS92MS9yZWZlcmVuY2UvZ2V0R0dTTlJhdGluZ0dyb3Vwc1wiOiBcInJhdGluZ0dyb3VwXCIsXG4gICAgICBcIi9hcGkvdjEvcmVmZXJlbmNlL2dldEdHU05BY2Nlc3NQb2ludE5hbWVzXCI6IFwiYXBuXCIsXG4gICAgICBcIi9hcGkvdjEvcmVmZXJlbmNlL2dldE1haW5BY2NvdW50QmFsYW5jZVR5cGVzXCI6IFwiYmFsYW5jZVR5cGVJZFwiLFxuICAgICAgXCIvYXBpL3YxL3JlZmVyZW5jZS9nZXREaWFsRGlnaXRDb3VudHJpZXNcIjogXCJvdGhlcl9wYXJ0eV9pc29cIlxuICAgIH1cbiAgICByZXR1cm4gZGltZW50aW9uc1thcGlOYW1lXTtcbiAgfVxuICBnZXRDYXBpdGFsaXplKGl0ZW06IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmNvbW1vblNlcnZpY2UuY29udmVydFRvU3BhY2VTZXBhcmF0ZWRDYXBpdGFsaXplZChpdGVtKVxuICB9XG5cblxuXG4gIGdldFF1aWNrRGF0ZUNsaWNrKGl0ZW0pIHtcbiAgICBsZXQgc3RhcnREYXRlID0gaXRlbS52YWx1ZVswXTtcbiAgICBsZXQgZW5kRGF0ZSA9IGl0ZW0udmFsdWVbMV07XG5cbiAgICBmb3IgKGNvbnN0IGZpbHRlciBvZiB0aGlzLmtwaUZpbHRlckRhdGEpIHtcbiAgICAgIGlmIChmaWx0ZXIuZmlsdGVyVHlwZSA9PSAnZGF0ZScgfHwgZmlsdGVyLmZpbHRlclR5cGUgPT0gJ2RhdGV0aW1lJykge1xuICAgICAgICBpZiAoZmlsdGVyLmFwaU5hbWUgPT0gXCJzdGFydERhdGVcIikge1xuICAgICAgICAgIGZpbHRlclsnZmlsdGVyRGF0YVNvdXJjZVZhbHVlJ10gPSBtb21lbnQoc3RhcnREYXRlKS5mb3JtYXQoZmlsdGVyLm1vbWVudEZvcm1hdCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGZpbHRlci5hcGlOYW1lID09IFwiZW5kRGF0ZVwiKSB7XG4gICAgICAgICAgZmlsdGVyWydmaWx0ZXJEYXRhU291cmNlVmFsdWUnXSA9IG1vbWVudChlbmREYXRlKS5mb3JtYXQoZmlsdGVyLm1vbWVudEZvcm1hdCk7XG4gICAgICAgIH1cblxuICAgICAgfVxuICAgIH1cblxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6Y2xpY2snLCBbJyRldmVudCddKVxuICBvbkRvY3VtZW50Q2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpIHtcblxuICAgIGlmICh0aGlzLmlzRGF0ZXNEcm9wRG93bikge1xuICAgICAgY29uc3QgbWVudUVsZW1lbnQgPSB0aGlzLm1lbnVJY29uLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICBpZiAoIW1lbnVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpIHtcbiAgICAgICAgaWYgKGV2ZW50LnRhcmdldFsnaW5uZXJUZXh0J10gIT09IFwiUXVpY2sgRGF0ZXNcIikge1xuICAgICAgICAgIHRoaXMuaXNEYXRlc0Ryb3BEb3duID0gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgfVxuICAgIH1cbiAgfVxuXG5cblxufVxuIiwiPGFwcC1sb2FkZXIgKm5nSWY9XCJpc0xvYWRlclwiPjwvYXBwLWxvYWRlcj5cblxuXG48bmctY29udGFpbmVyICpuZ0lmPVwiIWlzTG9hZGVyXCI+XG4gICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgYm9yZGVyLWJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cganVzdGlmeS1lbmQgbWItNFwiICpuZ0lmPVwicXVpY2tEYXRlU2VsZWN0b3JcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LTEvNFwiPlxuICAgICAgICAgICAgICAgIDxkeC1zZWxlY3QtYm94IFtkYXRhU291cmNlXT1cInJhbmdlc1wiIHZhbHVlRXhwcj1cInZhbHVlXCIgZGlzcGxheUV4cHI9XCJuYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgKG9uVmFsdWVDaGFuZ2VkKT1cImdldFF1aWNrRGF0ZUNsaWNrKCRldmVudClcIiBwbGFjZWhvbGRlcj1cIlF1aWNrIERhdGVzXCI+XG4gICAgICAgICAgICAgICAgPC9keC1zZWxlY3QtYm94PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGZpbHRlciBvZiBrcGlGaWx0ZXJEYXRhXCI+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGp1c3RpZnktYmV0d2VlblwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWx0ZXIuZmlsdGVyVHlwZSA9PSAnZGF0ZSdcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpbHRlci5kaXNwbGF5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItMlwiPnt7Z2V0Q2FwaXRhbGl6ZShmaWx0ZXIubGFiZWwpfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctODBcIiAqbmdJZj1cImZpbHRlci5tb21lbnRGdW5jdGlvbiA9PSAnbW9udGhQaWNrZXInXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeC1kYXRlLWJveCAob25WYWx1ZUNoYW5nZWQpPVwic3RhcnREYXRlQ2hhbmdlRm9yTW9udGhQaWNrZXIoJGV2ZW50LGZpbHRlci5tb21lbnRGb3JtYXQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlGb3JtYXQ9XCJtb250aEFuZFllYXJcIiBwbGFjZWhvbGRlcj1cIlNlbGVjdCBNb250aFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2FsZW5kYXJPcHRpb25zXT1cInttYXhab29tTGV2ZWw6ICd5ZWFyJywgbWluWm9vbUxldmVsOiAnY2VudHVyeSd9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ7e2ZpbHRlci5maWx0ZXJUeXBlfX1cIiBbKG5nTW9kZWwpXT1cImZpbHRlci5maWx0ZXJEYXRhU291cmNlVmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9keC1kYXRlLWJveD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy04MFwiICpuZ0lmPVwiZmlsdGVyLm1vbWVudEZ1bmN0aW9uID09ICd3ZWVrUGlja2VyJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHgtZGF0ZS1ib3ggKG9uVmFsdWVDaGFuZ2VkKT1cInN0YXJ0RGF0ZUNoYW5nZSgkZXZlbnQpXCIgZGlzcGxheUZvcm1hdD1cInl5eXktTU0tZGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInt7ZmlsdGVyLmZpbHRlclR5cGV9fVwiIFsobmdNb2RlbCldPVwiZmlsdGVyLmZpbHRlckRhdGFTb3VyY2VWYWx1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2R4LWRhdGUtYm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LTgwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJmaWx0ZXIubW9tZW50RnVuY3Rpb24gIT09ICdtb250aFBpY2tlcicgJiYgZmlsdGVyLm1vbWVudEZ1bmN0aW9uICE9PSAnd2Vla1BpY2tlcidcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR4LWRhdGUtYm94IChvblZhbHVlQ2hhbmdlZCk9XCJzdGFydERhdGVDaGFuZ2UoJGV2ZW50KVwiIGRpc3BsYXlGb3JtYXQ9XCJ5eXl5LU1NLWRkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ7e2ZpbHRlci5maWx0ZXJUeXBlfX1cIiBbKG5nTW9kZWwpXT1cImZpbHRlci5maWx0ZXJEYXRhU291cmNlVmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9keC1kYXRlLWJveD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpbHRlci5maWx0ZXJUeXBlID09ICdkYXRldGltZSdcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTJcIj57e2dldENhcGl0YWxpemUoZmlsdGVyLmxhYmVsKX19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy04MFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeC1kYXRlLWJveCAob25WYWx1ZUNoYW5nZWQpPVwic3RhcnREYXRlQ2hhbmdlKCRldmVudClcIiBkaXNwbGF5Rm9ybWF0PVwieXl5eS1NTS1kZCBISDptbTpzc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ7e2ZpbHRlci5maWx0ZXJUeXBlfX1cIiBbKG5nTW9kZWwpXT1cImZpbHRlci5maWx0ZXJEYXRhU291cmNlVmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2R4LWRhdGUtYm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWx0ZXIuZmlsdGVyVHlwZSAhPT0gJ2RhdGUnICYmIGZpbHRlci5maWx0ZXJUeXBlICE9PSAnZGF0ZXRpbWUnXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7e2dldENhcGl0YWxpemUoZmlsdGVyLmxhYmVsKX19XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpbHRlci5maWx0ZXJUeXBlID09ICdtdWx0aXBsZSdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy04MFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHgtdGFnLWJveCBbZGF0YVNvdXJjZV09XCJmaWx0ZXIuZmlsdGVyRGF0YVNvdXJjZVwiIHZhbHVlRXhwcj1cInZhbHVlXCIgZGlzcGxheUV4cHI9XCJuYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzZWFyY2hFbmFibGVkXT1cInRydWVcIiBbbXVsdGlsaW5lXT1cInRydWVcIiBbbWF4RGlzcGxheWVkVGFnc109XCI2XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmlsdGVyLmZpbHRlckRhdGFTb3VyY2VWYWx1ZVwiIFtzaG93U2VsZWN0aW9uQ29udHJvbHNdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2VhcmNoRW5hYmxlZF09XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZHgtdGFnLWJveD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpbHRlci5maWx0ZXJUeXBlID09ICdzaW5nbGUnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctODBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXNlbGVjdC1ib3ggW2l0ZW1zXT1cImZpbHRlci5maWx0ZXJEYXRhU291cmNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmlsdGVyLmZpbHRlckRhdGFTb3VyY2VWYWx1ZVwiIGRpc3BsYXlFeHByPVwibmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZUV4cHI9XCJ2YWx1ZVwiPjwvZHgtc2VsZWN0LWJveD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpbHRlci5maWx0ZXJUeXBlID09ICdjb250ZW50J1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LTgwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeC10ZXh0LWJveCBbKG5nTW9kZWwpXT1cImZpbHRlci5maWx0ZXJEYXRhU291cmNlVmFsdWVcIj48L2R4LXRleHQtYm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGp1c3RpZnktZW5kIHBsLTNcIj5cblxuXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJ7e2NvbW1vblNlcnZpY2UuQnRuTGlnaHRXaGl0ZX19IGN1cnNvci1wb2ludGVyIG10LTJcIiAoY2xpY2spPVwicmVzZXRlRmlsdGVyKClcIj5SZXNldDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwie3tjb21tb25TZXJ2aWNlLmJ0blByaW1hcnlCbHVlfX0gY3Vyc29yLXBvaW50ZXIgbXQtMlwiIChjbGljayk9XCJzZWFyY2hCeUZpbHRlcigpXCJcbiAgICAgICAgICAgICpuZ0lmPVwiaXNCdXR0b25EZXNpYWJsZVwiPlNlYXJjaDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuPC9uZy1jb250YWluZXI+Il19
|
|
273
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FtbWEtYWR2YW5jZS1maWx0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2FtbWEtYXBwLWNvbnRyb2xsZXIvc3JjL2xpYi9zaGFyZWQvZ2FtbWEtYWR2YW5jZS1maWx0ZXIvZ2FtbWEtYWR2YW5jZS1maWx0ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2FtbWEtYXBwLWNvbnRyb2xsZXIvc3JjL2xpYi9zaGFyZWQvZ2FtbWEtYWR2YW5jZS1maWx0ZXIvZ2FtbWEtYWR2YW5jZS1maWx0ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBYyxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXBILE9BQU8sTUFBTSxNQUFNLDRDQUE0QyxDQUFDOzs7Ozs7Ozs7Ozs7O0FBV2hFLE1BQU0sT0FBTywyQkFBMkI7SUFnRHRDLFlBQ1MsT0FBa0MsRUFDakMsVUFBNEIsRUFDNUIsTUFBcUIsRUFDdEIsYUFBNEI7UUFINUIsWUFBTyxHQUFQLE9BQU8sQ0FBMkI7UUFDakMsZUFBVSxHQUFWLFVBQVUsQ0FBa0I7UUFDNUIsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQUN0QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQTlDcEIscUJBQWdCLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFJMUUsc0JBQWlCLEdBQVksS0FBSyxDQUFDO1FBTW5DLGFBQVEsR0FBRyxJQUFJLENBQUM7UUFFaEIsV0FBTSxHQUFHO1lBQ1AsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDLE1BQU0sRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUU7WUFDOUMsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxFQUFFO1lBQzFGLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsRUFBRTtZQUM1RixFQUFFLElBQUksRUFBRSxjQUFjLEVBQUUsS0FBSyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLEVBQUU7WUFDOUYsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRTtZQUNuRixFQUFFLElBQUksRUFBRSxjQUFjLEVBQUUsS0FBSyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFO1lBQzFFLEVBQUUsSUFBSSxFQUFFLGNBQWMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUU7WUFDMUUsRUFBRSxJQUFJLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRTtZQUMzRSxFQUFF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MkI7a0JBTHZDLFNBQVM7K0JBQ0UsMEJBQTBCO3VNQUszQixLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ1csZ0JBQWdCO3NCQUFoQyxNQUFNO2dCQUNtQyxRQUFRO3NCQUFqRCxTQUFTO3VCQUFDLFVBQVUsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBd0JwQyxrQkFBa0I7c0JBRHJCLEtBQUs7dUJBQUMsb0JBQW9CO2dCQW9QM0IsZUFBZTtzQkFEZCxZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBFdmVudEVtaXR0ZXIsIE91dHB1dCwgRWxlbWVudFJlZiwgVmlld0NoaWxkLCBIb3N0TGlzdGVuZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRvYXN0clNlcnZpY2UgfSBmcm9tICduZ3gtdG9hc3RyJztcbmltcG9ydCBtb21lbnQgZnJvbSAnLi4vLi4vYXBwbGljYXRpb24tY29udHJvbGxlci9tb21lbnQtaGVscGVyJztcbmltcG9ydCB7IGtwaWNvbW1vblNlcnZpY2UgfSBmcm9tICcuLi9rcGktY29tb24tc2VydmljZSc7XG5pbXBvcnQgeyBDb21tb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vYXBwbGljYXRpb24tY29udHJvbGxlci9jb21tb24nO1xuaW1wb3J0IHsgQXBwbGljYXRpb25Db250ZW50U2VydmljZSB9IGZyb20gJy4uLy4uL2FwcGxpY2F0aW9uLWNvbnRyb2xsZXIvYXBwbGljYXRpb24tY29udGVudC5zZXJ2aWNlJztcbmltcG9ydCB7IEdhbW1hQXBwQ29udHJvbGxlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9nYW1tYS1hcHAtY29udHJvbGxlci5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWdhbW1hLWFkdmFuY2UtZmlsdGVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2dhbW1hLWFkdmFuY2UtZmlsdGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZ2FtbWEtYWR2YW5jZS1maWx0ZXIuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBHYW1tYUFkdmFuY2VGaWx0ZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBrcGlJZDogYW55O1xuICBASW5wdXQoKSBmaWx0ZXJTdGFydERhdGU6IGFueTtcbiAgQElucHV0KCkgZmlsdGVyRW5kRGF0ZTogYW55O1xuICBASW5wdXQoKSBicm93c2VyX2FwaV9jb25maWc6IGFueTtcbiAgQElucHV0KCkgaXNCdXR0b25EZXNpYWJsZTogYm9vbGVhbjtcbiAgQE91dHB1dCgpIHB1YmxpYyBmaWx0ZXJEYXRhT2JqZWN0OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQFZpZXdDaGlsZCgnbWVudUljb24nLCB7IHN0YXRpYzogZmFsc2UgfSkgbWVudUljb246IEVsZW1lbnRSZWY7XG5cbiAgaXNEYXRlc0Ryb3BEb3duOiBib29sZWFuO1xuICBxdWlja0RhdGVTZWxlY3RvcjogYm9vbGVhbiA9IGZhbHNlO1xuICBrcGlGaWx0ZXJEYXRhOiBhbnk7XG4gIC8vIHN0YXJ0X2RhdGUgPSBtb21lbnQoKS5zdWJ0cmFjdCg1LCAnZGF5cycpLmZvcm1hdCgnWVlZWS1NTS1ERCcpO1xuICAvLyBlbmRfZGF0ZSA9IG1vbWVudCgpLmZvcm1hdCgnWVlZWS1NTS1ERCcpO1xuICBkZWZhdWx0U3RhcnREYXRlOiBhbnk7XG4gIGRlZmF1bHRFbmREYXRlOiBhbnk7XG4gIGlzTG9hZGVyID0gdHJ1ZTtcblxuICByYW5nZXMgPSBbXG4gICAgeyBuYW1lOiBcIlRvZGF5XCIsIHZhbHVlOiBbbW9tZW50KCksIG1vbWVudCgpXSB9LFxuICAgIHsgbmFtZTogXCJZZXN0ZXJkYXlcIiwgdmFsdWU6IFttb21lbnQoKS5zdWJ0cmFjdCgxLCAnZGF5cycpLCBtb21lbnQoKS5zdWJ0cmFjdCgxLCAnZGF5cycpXSB9LFxuICAgIHsgbmFtZTogXCJMYXN0IDcgRGF5c1wiLCB2YWx1ZTogW21vbWVudCgpLnN1YnRyYWN0KDcsICdkYXlzJyksIG1vbWVudCgpLnN1YnRyYWN0KDEsICdkYXlzJyldIH0sXG4gICAgeyBuYW1lOiBcIkxhc3QgMTUgRGF5c1wiLCB2YWx1ZTogW21vbWVudCgpLnN1YnRyYWN0KDE1LCAnZGF5cycpLCBtb21lbnQoKS5zdWJ0cmFjdCgxLCAnZGF5cycpXSB9LFxuICAgIHsgbmFtZTogJ1RoaXMgTW9udGgnLCB2YWx1ZTogW21vbWVudCgpLnN0YXJ0T2YoJ21vbnRoJyksIG1vbWVudCgpLmVuZE9mKCdtb250aCcpXSB9LFxuICAgIHsgbmFtZTogJ0xhc3QgMSBNb250aCcsIHZhbHVlOiBbbW9tZW50KCkuc3VidHJhY3QoMzAsICdkYXlzJyksIG1vbWVudCgpXSB9LFxuICAgIHsgbmFtZTogJ0xhc3QgMyBNb250aCcsIHZhbHVlOiBbbW9tZW50KCkuc3VidHJhY3QoOTEsICdkYXlzJyksIG1vbWVudCgpXSB9LFxuICAgIHsgbmFtZTogJ0xhc3QgNiBNb250aCcsIHZhbHVlOiBbbW9tZW50KCkuc3VidHJhY3QoMTgyLCAnZGF5cycpLCBtb21lbnQoKV0gfSxcbiAgICB7IG5hbWU6ICdMYXN0IDEgWWVhcicsIHZhbHVlOiBbbW9tZW50KCkuc3VidHJhY3QoMzY1LCAnZGF5cycpLCBtb21lbnQoKV0gfVxuICBdXG5cbiAgQElucHV0KCdmaWx0ZXJPcGVyYXRvckRhdGEnKVxuICBzZXQgZmlsdGVyT3BlcmF0b3JEYXRhKHZhbHVlKSB7XG4gICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfSBlbHNlIHtcblxuICAgICAgdGhpcy5rcGlGaWx0ZXJEYXRhID0gW107XG4gICAgICB0aGlzLmtwaUZpbHRlckRhdGEgPSB2YWx1ZTtcbiAgICAgIHRoaXMua3BpRmlsdGVyRGF0YS5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICBpZiAoaXRlbS5oYXNPd25Qcm9wZXJ0eSgnbW9tZW50Rm9ybWF0ZScpKSB7XG4gICAgICAgICAgaXRlbS5tb21lbnRGb3JtYXQgPSBpdGVtLm1vbWVudEZvcm1hdGU7XG4gICAgICAgICAgZGVsZXRlIGl0ZW0ubW9tZW50Rm9ybWF0ZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICB0aGlzLnByb2Nlc3NGaWx0ZXJGb3JEYXRhKCk7XG4gICAgfVxuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHNlcnZpY2U6IEdhbW1hQXBwQ29udHJvbGxlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBrcGlTZXJ2aWNlOiBrcGljb21tb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgdG9hc3RyOiBUb2FzdHJTZXJ2aWNlLFxuICAgIHB1YmxpYyBjb21tb25TZXJ2aWNlOiBDb21tb25TZXJ2aWNlXG4gICkgeyB9XG5cblxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZGVmYXVsdEVuZERhdGUgPSBtb21lbnQoKS5zdWJ0cmFjdCgnMScsICdkYXlzJykuZm9ybWF0KCdZWVlZLU1NLUREJyk7XG4gICAgdGhpcy5kZWZhdWx0U3RhcnREYXRlID0gbW9tZW50KHRoaXMuZGVmYXVsdEVuZERhdGUpLnN1YnRyYWN0KCc1JywgJ2RheXMnKS5mb3JtYXQoJ1lZWVktTU0tREQnKTtcblxuXG4gIH1cblxuXG4gIGFzeW5jIHByb2Nlc3NGaWx0ZXJGb3JEYXRhKCkge1xuICAgIGZvciAoY29uc3QgZmlsdGVyIG9mIHRoaXMua3BpRmlsdGVyRGF0YSkge1xuXG4gICAgICB0aGlzLmlzTG9hZGVyID0gdHJ1ZTtcbiAgICAgIGNvbnN0IHN0YXJ0RGF0ZUZpbHRlciA9IHRoaXMua3BpRmlsdGVyRGF0YS5maW5kKGZpbHRlciA9PiBmaWx0ZXIuYXBpTmFtZSA9PT0gJ3N0YXJ0RGF0ZScgJiYgKGZpbHRlci5kaXNwbGF5ICE9PSB1bmRlZmluZWQgPyBmaWx0ZXIuZGlzcGxheSA6IHRydWUpKTtcbiAgICAgIGNvbnN0IGVuZERhdGVGaWx0ZXIgPSB0aGlzLmtwaUZpbHRlckRhdGEuZmluZChmaWx0ZXIgPT4gZmlsdGVyLmFwaU5hbWUgPT09ICdlbmREYXRlJyAmJiAoZmlsdGVyLmRpc3BsYXkgIT09IHVuZGVmaW5lZCA/IGZpbHRlci5kaXNwbGF5IDogdHJ1ZSkpO1xuICAgICAgaWYgKHN0YXJ0RGF0ZUZpbHRlciAmJiBlbmREYXRlRmlsdGVyKSB7XG4gICAgICAgIHRoaXMucXVpY2tEYXRlU2VsZWN0b3IgPSB0cnVlO1xuICAgICAgfVxuICAgICAgdHJ5IHtcbiAgICAgICAgaWYgKGZpbHRlci5hcGlOYW1lICE9PSAnc3RhcnREYXRlJyAmJiBmaWx0ZXIuYXBpTmFtZSAhPT0gJ2VuZERhdGUnKSB7XG4gICAgICAgICAgaWYgKGZpbHRlci5hcGlOYW1lLmluY2x1ZGVzKCcvcmVmZXJlbmNlLycpKSB7XG4gICAgICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5zZXJ2aWNlLmdldEZpbHRlckRhdGFCeURyaWxsRG93bihmaWx0ZXIuYXBpTmFtZSkudG9Qcm9taXNlKCk7XG5cbiAgICAgICAgICAgIGZpbHRlclsnZmlsdGVyRGF0YVNvdXJjZSddID0gZGF0YTtcbiAgICAgICAgICAgIGlmIChmaWx0ZXIuZGVmYXVsdEZpbHRlclR5cGUgPT0gXCJkeW5hbWljXCIgJiYgZmlsdGVyLmRlZmF1bHRGaWx0ZXJWYWx1ZSAhPT0gXCJcIikge1xuICAgICAgICAgICAgICBmaWx0ZXJbJ2ZpbHRlckRhdGFTb3VyY2VWYWx1ZSddID0gdGhpcy5wYXJzZUNvbnRlbnRWYWx1ZShmaWx0ZXIuZGVmYXVsdEZpbHRlclZhbHVlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGZpbHRlclsnZmlsdGVyRGF0YVNvdXJjZVZhbHVlJ10gPSBcIlwiO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmaWx0ZXJbJ2ZpbHRlckRhdGFTb3VyY2UnXSA9IFtdO1xuICAgICAgICAgIH1cblxuICAgICAgICB9IGVsc2UgaWYgKGZpbHRlci5maWx0ZXJUeXBlID09ICdkYXRlJyB8fCBmaWx0ZXIuZmlsdGVyVHlwZSA9PSAnZGF0ZXRpbWUnKSB7XG4gICAgICAgICAgaWYgKGZpbHRlci5kaXNwbGF5ID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgZmlsdGVyLmRpc3BsYXkgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoZmlsdGVyLmRlZmF1bHRGaWx0ZXJUeXBlID09IFwiZHluYW1pY1wiICYmIGZpbHRlci5tb21lbnRGdW5jdGlvbiAhPT0gXCJcIiAmJiBmaWx0ZXIuZGVmYXVsdEZpbHRlclZhbHVlICE9PSBcIlwiICYmIGZpbHRlci5tb21lbnRGb3JtYXQgIT09IFwiXCIpIHtcbiAgICAgICAgICAgIGlmIChmaWx0ZXIubW9tZW50RnVuY3Rpb24gPT0gXCJtb250aFBpY2tlclwiKSB7XG4gICAgICAgICAgICAgIGlmIChmaWx0ZXIuYXBpTmFtZSA9PSBcInN0YXJ0RGF0ZVwiKSB7XG4gICAgICAgICAgICAgICAgZmlsdGVyWydmaWx0ZXJEYXRhU291cmNlVmFsdWUnXSA9IG1vbWVudCgpLnN0YXJ0T2YoJ21vbnRoJykuZm9ybWF0KGZpbHRlci5tb21lbnRGb3JtYXQpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmIChmaWx0ZXIuYXBpTmFtZSA9PSBcImVuZERhdGVcIikge1xuICAgICAgICAgICAgICAgIGZpbHRlclsnZmlsdGVyRGF0YVNvdXJjZVZhbHVlJ10gPSBtb21lbnQoKS5lbmRPZignbW9udGgnKS5mb3JtYXQoZmlsdGVyLm1vbWVudEZvcm1hdCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZmlsdGVyLm1vbWVudEZ1bmN0aW9uID09IFwid2Vla1BpY2tlclwiKSB7XG4gICAgICAgICAgICAgIGlmIChmaWx0ZXIuYXBpTmFtZSA9PSBcInN0YXJ0RGF0ZVwiKSB7XG4gICAgICAgICAgICAgICAgZmlsdGVyWydmaWx0ZXJEYXRhU291cmNlVmFsdWUnXSA9IG1vbWVudCgpLnN0YXJ0T2YoJ3dlZWsnKS5mb3JtYXQoZmlsdGVyLm1vbWVudEZvcm1hdCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKGZpbHRlci5hcGlOYW1lID09IFwiZW5kRGF0ZVwiKSB7XG4gICAgICAgICAgICAgICAgZmlsdGVyWydmaWx0ZXJEYXRhU291cmNlVmFsdWUnXSA9IG1vbWVudCgpLmVuZE9mKCd3ZWVrJykuZm9ybWF0KGZpbHRlci5tb21lbnRGb3JtYXQpO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGlmIChmaWx0ZXIuYXBpTmFtZSA9PSBcInN0YXJ0RGF0ZVwiKSB7XG4gICAgICAgICAgICAgICAgbGV0IFtjb3VudCwgdW5pdF0gPSBmaWx0ZXIuZGVmYXVsdEZpbHRlclZhbHVlLnNwbGl0KCcsJyk7XG4gICAgICAgICAgICAgICAgZmlsdGVyWydmaWx0ZXJEYXRhU291cmNlVmFsdWUnXSA9IG1vbWVudCgpW2ZpbHRlci5tb21lbnRGdW5jdGlvbl0ocGFyc2VJbnQoY291bnQpLCB1bml0KS5mb3JtYXQoZmlsdGVyLm1vbWVudEZvcm1hdCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKGZpbHRlci5hcGlOYW1lID09IFwiZW5kRGF0ZVwiKSB7XG4gICAgICAgICAgICAgICAgbGV0IFtjb3VudCwgdW5pdF0gPSBmaWx0ZXIuZGVmYXVsdEZpbHRlclZhbHVlLnNwbGl0KCcsJyk7XG4gICAgICAgICAgICAgICAgZmlsdGVyWydmaWx0ZXJEYXRhU291cmNlVmFsdWUnXSA9IG1vbWVudCgpW2ZpbHRlci5tb21lbnRGdW5jdGlvbl0ocGFyc2VJbnQoY291bnQpLCB1bml0KS5mb3JtYXQoZmlsdGVyLm1vbWVudEZvcm1hdCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuXG5cblxuICAgICAgICAgIH0gZWxzZSBpZiAoKGZpbHRlci5kZWZhdWx0RmlsdGVyVHlwZSA9PSBcInN0YXRpY1wiICYmIGZpbHRlci5kZWZhdWx0RmlsdGVyVmFsdWUgIT09IFwiXCIpKSB7XG4gICAgICAgICAgICBpZiAoZmlsdGVyLmFwaU5hbWUgPT0gXCJzdGFydERhdGVcIikge1xuICAgICAgICAgICAgICBmaWx0ZXJbJ2ZpbHRlckRhdGFTb3VyY2VWYWx1ZSddID0gZmlsdGVyLmRlZmF1bHRGaWx0ZXJWYWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChmaWx0ZXIuYXBpTmFtZSA9PSBcImVuZERhdGVcIikge1xuICAgICAgICAgICAgICBmaWx0ZXJbJ2ZpbHRlckRhdGFTb3VyY2VWYWx1ZSddID0gZmlsdGVyLmRlZmF1bHRGaWx0ZXJWYWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IoXCJVbmV4cGVjdGVkIFNlcnZlciBFeGNlcHRpb24uIFBsZWFzZSBjb250YWN0IFN5c3RlbSBBZG1pbi5cIiwgZmlsdGVyLnR5cGUpXG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICB0aGlzLmlzTG9hZGVyID0gZmFsc2U7XG4gICAgICAgIGNvbnNvbGUubG9nKHRoaXMua3BpRmlsdGVyRGF0YSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcGFyc2VDb250ZW50VmFsdWUoY29udGVudHZhbHVlKSB7XG4gICAgcmV0dXJuIGNvbnRlbnR2YWx1ZS5zcGxpdCgnLCcpLm1hcChpdGVtID0+IGl0ZW0udHJpbSgpKTtcbiAgfVxuXG5cbiAgZ2V0SXNNc2lzZG4oY29udGV4dCkge1xuICAgIGxldCBrZXkgPSBjb250ZXh0LnRvTG93ZXJDYXNlKClcbiAgICBpZiAoa2V5LmluY2x1ZGVzKCdtc2lzZG4nKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBzdGFydERhdGVDaGFuZ2VGb3JNb250aFBpY2tlcihlLCBmb3JtYXQpIHtcblxuICAgIGlmIChlLmV2ZW50KSB7XG4gICAgICB0aGlzLmtwaUZpbHRlckRhdGEuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgICAgaWYgKGVsZW1lbnQuZmlsdGVyVHlwZSA9PSAnZGF0ZScgfHwgZWxlbWVudC5maWx0ZXJUeXBlID09ICdkYXRldGltZScpIHtcbiAgICAgICAgICBsZXQgW2NvdW50LCB1bml0XSA9IGVsZW1lbnQuZGVmYXVsdEZpbHRlclZhbHVlLnNwbGl0KCcsJyk7XG4gICAgICAgICAgaWYgKGVsZW1lbnQuYXBpTmFtZSA9PSBcInN0YXJ0RGF0ZVwiKSB7XG4gICAgICAgICAgICBlbGVtZW50WydmaWx0ZXJEYXRhU291cmNlVmFsdWUnXSA9IG1vbWVudChlLnZhbHVlKS5zdWJ0cmFjdChwYXJzZUludChjb3VudCksIHVuaXQpLnN0YXJ0T2YodW5pdCkuZm9ybWF0KGVsZW1lbnQubW9tZW50Rm9ybWF0KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGVsZW1lbnQuYXBpTmFtZSA9PSBcImVuZERhdGVcIikge1xuICAgICAgICAgICAgZWxlbWVudFsnZmlsdGVyRGF0YVNvdXJjZVZhbHVlJ10gPSBtb21lbnQoZS52YWx1ZSkuc3VidHJhY3QocGFyc2VJbnQoY291bnQpLCB1bml0KS5lbmRPZih1bml0KS5mb3JtYXQoZWxlbWVudC5tb21lbnRGb3JtYXQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICBzdGFydERhdGVDaGFuZ2UoZSkge1xuICAgIHRoaXMuZGVmYXVsdFN0YXJ0RGF0ZSA9IGUudmFsdWU7XG4gIH1cbiAgZW5kRGF0ZUNoYW5nZShlKSB7XG4gICAgdGhpcy5kZWZhdWx0RW5kRGF0ZSA9IGUudmFsdWU7XG4gIH1cblxuICBzZWFyY2hCeUZpbHRlcigpIHtcblxuICAgIGxldCBhcGlKc29uT2JqZWN0OiBhbnkgPSB7fTtcbiAgICBsZXQgb3BlcmF0aW9uRmlsdGVyOiBhbnkgPSB7fTtcbiAgICB0aGlzLmtwaUZpbHRlckRhdGEuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgIGlmIChlbGVtZW50LmZpbHRlclR5cGUgPT0gJ2RhdGUnIHx8IGVsZW1lbnQuZmlsdGVyVHlwZSA9PSAnZGF0ZXRpbWUnKSB7XG4gICAgICAgIGFwaUpzb25PYmplY3RbZWxlbWVudC5hcGlOYW1lXSA9IG1vbWVudChlbGVtZW50LmZpbHRlckRhdGFTb3VyY2VWYWx1ZSkuZm9ybWF0KGVsZW1lbnQubW9tZW50Rm9ybWF0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAodHlwZW9mIGVsZW1lbnQuZmlsdGVyRGF0YVNvdXJjZVZhbHVlID09PSBcInN0cmluZ1wiICYmIGVsZW1lbnQuZmlsdGVyRGF0YVNvdXJjZVZhbHVlICE9PSBcIlwiKSB8fFxuICAgICAgICAgIChBcnJheS5pc0FycmF5KGVsZW1lbnQuZmlsdGVyRGF0YVNvdXJjZVZhbHVlKSAmJiBlbGVtZW50LmZpbHRlckRhdGFTb3VyY2VWYWx1ZS5sZW5ndGggPiAwKVxuICAgICAgICApIHtcbiAgICAgICAgICBpZiAoZWxlbWVudC5vcGVyYXRvck5hbWUgIT09IFwiXCIpIHtcbiAgICAgICAgICAgIGlmIChlbGVtZW50LmZpbHRlclR5cGUgPT0gXCJjb250ZW50XCIpIHtcbiAgICAgICAgICAgICAgb3BlcmF0aW9uRmlsdGVyW2VsZW1lbnQub3BlcmF0b3JOYW1lXSA9IGVsZW1lbnQuZmlsdGVyRGF0YVNvdXJjZVZhbHVlO1xuICAgICAgICAgICAgfSBpZiAoZWxlbWVudC5maWx0ZXJUeXBlID09IFwic2luZ2xlXCIpIHtcbiAgICAgICAgICAgICAgb3BlcmF0aW9uRmlsdGVyW2VsZW1lbnQub3BlcmF0b3JOYW1lXSA9IGVsZW1lbnQuZmlsdGVyRGF0YVNvdXJjZVZhbHVlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgb3BlcmF0aW9uRmlsdGVyW2VsZW1lbnQub3BlcmF0b3JOYW1lXSA9IEFycmF5LmlzQXJyYXkoZWxlbWVudC5maWx0ZXJEYXRhU291cmNlVmFsdWUpID8gZWxlbWVudC5maWx0ZXJEYXRhU291cmNlVmFsdWUgOiBbZWxlbWVudC5maWx0ZXJEYXRhU291cmNlVmFsdWVdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBhcGlKc29uT2JqZWN0W2VsZW1lbnQuYXBpTmFtZV0gPSBlbGVtZW50LmZpbHRlckRhdGFTb3VyY2VWYWx1ZTtcblxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgfSk7XG5cbiAgICBhcGlKc29uT2JqZWN0WydvcGVyYXRpb25GaWx0ZXInXSA9IG9wZXJhdGlvbkZpbHRlcjtcbiAgICAvLyBsZXQgZmlsdGVyX2NvbmZpZyA9IHtcbiAgICAvLyAgIHN0YXJ0RGF0ZTogdGhpcy5kZWZhdWx0U3RhcnREYXRlLFxuICAgIC8vICAgZW5kRGF0ZTogdGhpcy5kZWZhdWx0RW5kRGF0ZSxcbiAgICAvLyAgIG9wZXJhdGlvbkZpbHRlcjogYXBpSnNvbk9iamVjdFxuICAgIC8vIH1cbiAgICAvLyB0aGlzLmlzQnV0dG9uRGVzaWFibGUgPSBmYWxzZTtcblxuICAgIGNvbnNvbGUubG9nKGFwaUpzb25PYmplY3QpO1xuICAgIHRoaXMuZmlsdGVyRGF0YU9iamVjdC5lbWl0KGFwaUpzb25PYmplY3QpO1xuXG4gIH1cblxuXG5cbiAgcmVzZXRlRmlsdGVyKCkge1xuICAgIHRoaXMuZGVmYXVsdEVuZERhdGUgPSB0aGlzLmZpbHRlckVuZERhdGU7XG4gICAgdGhpcy5kZWZhdWx0U3RhcnREYXRlID0gdGhpcy5maWx0ZXJTdGFydERhdGU7XG4gICAgdGhpcy5rcGlGaWx0ZXJEYXRhLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICBlbGVtZW50WydmaWx0ZXJEYXRhU291cmNlVmFsdWUnXSA9IFwiXCJcbiAgICB9KTtcbiAgfVxuXG5cbiAgZ2V0RHJpbGRvd25EaW1lbnRpb25zKGFwaU5hbWUpIHtcbiAgICBsZXQgZGltZW50aW9ucyA9IHtcbiAgICAgIFwiL2FwaS92MS9yZWZlcmVuY2UvZ2V0U2VydmVkVHlwZXNcIjogXCJzcnZUeXBlXCIsXG4gICAgICBcIi9hcGkvdjEvcmVmZXJlbmNlL2dldE91dFJvYW1pbmdTZXJ2ZWRUeXBlc1wiOiBcInNydlR5cGVcIixcbiAgICAgIFwiL2FwaS92MS9yZWZlcmVuY2UvZ2V0TVNDRGlyZWN0aW9uc1wiOiBcImRpcmVjdGlvblwiLFxuICAgICAgXCIvYXBpL3YxL3JlZmVyZW5jZS9nZXRDQlNWb2ljZURpcmVjdGlvbnNcIjogXCJkaXJlY3Rpb25cIixcbiAgICAgIFwiL2FwaS92MS9yZWZlcmVuY2UvZ2V0Q0JTbXNEaXJlY3Rpb25zXCI6IFwiZGlyZWN0aW9uXCIsXG4gICAgICBcIi9hcGkvdjEvcmVmZXJlbmNlL2dldENCU0dwcnNEaXJlY3Rpb25zXCI6IFwiZGlyZWN0aW9uXCIsXG4gICAgICBcIi9hcGkvdjEvcmVmZXJlbmNlL2dldE5ldHdvcmtUeXBlS2V5c1wiOiBcIm53X2NhbGxfdHlwZVwiLFxuICAgICAgXCIvYXBpL3YxL3JlZmVyZW5jZS9nZXRHR1NOUmF0aW5nR3JvdXBzXCI6IFwicmF0aW5nR3JvdXBcIixcbiAgICAgIFwiL2FwaS92MS9yZWZlcmVuY2UvZ2V0R0dTTkFjY2Vzc1BvaW50TmFtZXNcIjogXCJhcG5cIixcbiAgICAgIFwiL2FwaS92MS9yZWZlcmVuY2UvZ2V0TWFpbkFjY291bnRCYWxhbmNlVHlwZXNcIjogXCJiYWxhbmNlVHlwZUlkXCIsXG4gICAgICBcIi9hcGkvdjEvcmVmZXJlbmNlL2dldERpYWxEaWdpdENvdW50cmllc1wiOiBcIm90aGVyX3BhcnR5X2lzb1wiXG4gICAgfVxuICAgIHJldHVybiBkaW1lbnRpb25zW2FwaU5hbWVdO1xuICB9XG4gIGdldENhcGl0YWxpemUoaXRlbTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuY29tbW9uU2VydmljZS5jb252ZXJ0VG9TcGFjZVNlcGFyYXRlZENhcGl0YWxpemVkKGl0ZW0pXG4gIH1cblxuXG5cbiAgZ2V0UXVpY2tEYXRlQ2xpY2soaXRlbSkge1xuICAgIGxldCBzdGFydERhdGUgPSBpdGVtLnZhbHVlWzBdO1xuICAgIGxldCBlbmREYXRlID0gaXRlbS52YWx1ZVsxXTtcblxuICAgIGZvciAoY29uc3QgZmlsdGVyIG9mIHRoaXMua3BpRmlsdGVyRGF0YSkge1xuICAgICAgaWYgKGZpbHRlci5maWx0ZXJUeXBlID09ICdkYXRlJyB8fCBmaWx0ZXIuZmlsdGVyVHlwZSA9PSAnZGF0ZXRpbWUnKSB7XG4gICAgICAgIGlmIChmaWx0ZXIuYXBpTmFtZSA9PSBcInN0YXJ0RGF0ZVwiKSB7XG4gICAgICAgICAgZmlsdGVyWydmaWx0ZXJEYXRhU291cmNlVmFsdWUnXSA9IG1vbWVudChzdGFydERhdGUpLmZvcm1hdChmaWx0ZXIubW9tZW50Rm9ybWF0KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZmlsdGVyLmFwaU5hbWUgPT0gXCJlbmREYXRlXCIpIHtcbiAgICAgICAgICBmaWx0ZXJbJ2ZpbHRlckRhdGFTb3VyY2VWYWx1ZSddID0gbW9tZW50KGVuZERhdGUpLmZvcm1hdChmaWx0ZXIubW9tZW50Rm9ybWF0KTtcbiAgICAgICAgfVxuXG4gICAgICB9XG4gICAgfVxuXG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDpjbGljaycsIFsnJGV2ZW50J10pXG4gIG9uRG9jdW1lbnRDbGljayhldmVudDogTW91c2VFdmVudCkge1xuXG4gICAgaWYgKHRoaXMuaXNEYXRlc0Ryb3BEb3duKSB7XG4gICAgICBjb25zdCBtZW51RWxlbWVudCA9IHRoaXMubWVudUljb24ubmF0aXZlRWxlbWVudDtcbiAgICAgIGlmICghbWVudUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xuICAgICAgICBpZiAoZXZlbnQudGFyZ2V0Wydpbm5lclRleHQnXSAhPT0gXCJRdWljayBEYXRlc1wiKSB7XG4gICAgICAgICAgdGhpcy5pc0RhdGVzRHJvcERvd24gPSBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICB9XG4gICAgfVxuICB9XG5cblxuXG59XG4iLCI8YXBwLWxvYWRlciAqbmdJZj1cImlzTG9hZGVyXCI+PC9hcHAtbG9hZGVyPlxuXG5cbjxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNMb2FkZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBib3JkZXItYlwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBqdXN0aWZ5LWVuZCBtYi00XCIgKm5nSWY9XCJxdWlja0RhdGVTZWxlY3RvclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctMS80XCI+XG4gICAgICAgICAgICAgICAgPGR4LXNlbGVjdC1ib3ggW2RhdGFTb3VyY2VdPVwicmFuZ2VzXCIgdmFsdWVFeHByPVwidmFsdWVcIiBkaXNwbGF5RXhwcj1cIm5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAob25WYWx1ZUNoYW5nZWQpPVwiZ2V0UXVpY2tEYXRlQ2xpY2soJGV2ZW50KVwiIHBsYWNlaG9sZGVyPVwiUXVpY2sgRGF0ZXNcIj5cbiAgICAgICAgICAgICAgICA8L2R4LXNlbGVjdC1ib3g+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZmlsdGVyIG9mIGtwaUZpbHRlckRhdGFcIj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cganVzdGlmeS1iZXR3ZWVuXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpbHRlci5maWx0ZXJUeXBlID09ICdkYXRlJ1wiPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmlsdGVyLmRpc3BsYXlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0yXCI+e3tnZXRDYXBpdGFsaXplKGZpbHRlci5sYWJlbCl9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy04MFwiICpuZ0lmPVwiZmlsdGVyLm1vbWVudEZ1bmN0aW9uID09ICdtb250aFBpY2tlcidcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR4LWRhdGUtYm94IChvblZhbHVlQ2hhbmdlZCk9XCJzdGFydERhdGVDaGFuZ2VGb3JNb250aFBpY2tlcigkZXZlbnQsZmlsdGVyLm1vbWVudEZvcm1hdClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheUZvcm1hdD1cIm1vbnRoQW5kWWVhclwiIHBsYWNlaG9sZGVyPVwiU2VsZWN0IE1vbnRoXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjYWxlbmRhck9wdGlvbnNdPVwie21heFpvb21MZXZlbDogJ3llYXInLCBtaW5ab29tTGV2ZWw6ICdjZW50dXJ5J31cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInt7ZmlsdGVyLmZpbHRlclR5cGV9fVwiIFsobmdNb2RlbCldPVwiZmlsdGVyLmZpbHRlckRhdGFTb3VyY2VWYWx1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2R4LWRhdGUtYm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LTgwXCIgKm5nSWY9XCJmaWx0ZXIubW9tZW50RnVuY3Rpb24gPT0gJ3dlZWtQaWNrZXInXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeC1kYXRlLWJveCAob25WYWx1ZUNoYW5nZWQpPVwic3RhcnREYXRlQ2hhbmdlKCRldmVudClcIiBkaXNwbGF5Rm9ybWF0PVwieXl5eS1NTS1kZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwie3tmaWx0ZXIuZmlsdGVyVHlwZX19XCIgWyhuZ01vZGVsKV09XCJmaWx0ZXIuZmlsdGVyRGF0YVNvdXJjZVZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZHgtZGF0ZS1ib3g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctODBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImZpbHRlci5tb21lbnRGdW5jdGlvbiAhPT0gJ21vbnRoUGlja2VyJyAmJiBmaWx0ZXIubW9tZW50RnVuY3Rpb24gIT09ICd3ZWVrUGlja2VyJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHgtZGF0ZS1ib3ggKG9uVmFsdWVDaGFuZ2VkKT1cInN0YXJ0RGF0ZUNoYW5nZSgkZXZlbnQpXCIgZGlzcGxheUZvcm1hdD1cInl5eXktTU0tZGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInt7ZmlsdGVyLmZpbHRlclR5cGV9fVwiIFsobmdNb2RlbCldPVwiZmlsdGVyLmZpbHRlckRhdGFTb3VyY2VWYWx1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2R4LWRhdGUtYm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmlsdGVyLmZpbHRlclR5cGUgPT0gJ2RhdGV0aW1lJ1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItMlwiPnt7Z2V0Q2FwaXRhbGl6ZShmaWx0ZXIubGFiZWwpfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LTgwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR4LWRhdGUtYm94IChvblZhbHVlQ2hhbmdlZCk9XCJzdGFydERhdGVDaGFuZ2UoJGV2ZW50KVwiIGRpc3BsYXlGb3JtYXQ9XCJ5eXl5LU1NLWRkIEhIOm1tOnNzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInt7ZmlsdGVyLmZpbHRlclR5cGV9fVwiIFsobmdNb2RlbCldPVwiZmlsdGVyLmZpbHRlckRhdGFTb3VyY2VWYWx1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZHgtZGF0ZS1ib3g+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpbHRlci5maWx0ZXJUeXBlICE9PSAnZGF0ZScgJiYgZmlsdGVyLmZpbHRlclR5cGUgIT09ICdkYXRldGltZSdcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7Z2V0Q2FwaXRhbGl6ZShmaWx0ZXIubGFiZWwpfX1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmlsdGVyLmZpbHRlclR5cGUgPT0gJ211bHRpcGxlJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LTgwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeC10YWctYm94IFtkYXRhU291cmNlXT1cImZpbHRlci5maWx0ZXJEYXRhU291cmNlXCIgdmFsdWVFeHByPVwidmFsdWVcIiBkaXNwbGF5RXhwcj1cIm5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlYXJjaEVuYWJsZWRdPVwidHJ1ZVwiIFttdWx0aWxpbmVdPVwidHJ1ZVwiIFttYXhEaXNwbGF5ZWRUYWdzXT1cIjZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmaWx0ZXIuZmlsdGVyRGF0YVNvdXJjZVZhbHVlXCIgW3Nob3dTZWxlY3Rpb25Db250cm9sc109XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzZWFyY2hFbmFibGVkXT1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9keC10YWctYm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmlsdGVyLmZpbHRlclR5cGUgPT0gJ3NpbmdsZSdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy04MFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHgtc2VsZWN0LWJveCBbaXRlbXNdPVwiZmlsdGVyLmZpbHRlckRhdGFTb3VyY2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmaWx0ZXIuZmlsdGVyRGF0YVNvdXJjZVZhbHVlXCIgZGlzcGxheUV4cHI9XCJuYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlRXhwcj1cInZhbHVlXCI+PC9keC1zZWxlY3QtYm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmlsdGVyLmZpbHRlclR5cGUgPT0gJ2NvbnRlbnQnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctODBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXRleHQtYm94IFsobmdNb2RlbCldPVwiZmlsdGVyLmZpbHRlckRhdGFTb3VyY2VWYWx1ZVwiPjwvZHgtdGV4dC1ib3g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cganVzdGlmeS1lbmQgcGwtM1wiPlxuXG5cbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInt7Y29tbW9uU2VydmljZS5CdG5MaWdodFdoaXRlfX0gY3Vyc29yLXBvaW50ZXIgbXQtMlwiIChjbGljayk9XCJyZXNldGVGaWx0ZXIoKVwiPlJlc2V0PC9idXR0b24+XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJ7e2NvbW1vblNlcnZpY2UuYnRuUHJpbWFyeUJsdWV9fSBjdXJzb3ItcG9pbnRlciBtdC0yXCIgKGNsaWNrKT1cInNlYXJjaEJ5RmlsdGVyKClcIlxuICAgICAgICAgICAgKm5nSWY9XCJpc0J1dHRvbkRlc2lhYmxlXCI+U2VhcmNoPC9idXR0b24+XG4gICAgPC9kaXY+XG48L25nLWNvbnRhaW5lcj4iXX0=
|
|
@@ -108,6 +108,14 @@ export class KpiWithSingleLayoutService {
|
|
|
108
108
|
return response;
|
|
109
109
|
}), catchError(this.handleError));
|
|
110
110
|
}
|
|
111
|
+
getFilterDataByDrillDown(apiName) {
|
|
112
|
+
const apiUrl = this.environment.appUrl + apiName;
|
|
113
|
+
return this.http
|
|
114
|
+
.get(apiUrl, { withCredentials: true })
|
|
115
|
+
.pipe(map((response) => {
|
|
116
|
+
return response;
|
|
117
|
+
}), catchError(this.handleError));
|
|
118
|
+
}
|
|
111
119
|
}
|
|
112
120
|
KpiWithSingleLayoutService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: KpiWithSingleLayoutService, deps: [{ token: i1.HttpClient }, { token: APP_ENVIRONMENT }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
113
121
|
KpiWithSingleLayoutService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: KpiWithSingleLayoutService, providedIn: "root" });
|
|
@@ -118,4 +126,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
118
126
|
type: Inject,
|
|
119
127
|
args: [APP_ENVIRONMENT]
|
|
120
128
|
}] }]; } });
|
|
121
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3BpLXNpbmdsZS1sYXlvdXQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dhbW1hLWFwcC1jb250cm9sbGVyL3NyYy9saWIvdGVtcGxhdGUtbW9kdWxlL2twaVdpdGhTaW5nbGVMYXlvdXQva3BpLXNpbmdsZS1sYXlvdXQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWMsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFDOUQsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxlQUFlLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDekYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBDQUEwQyxDQUFDOzs7QUFJM0UsTUFBTSxPQUFPLDBCQUEwQjtJQWVuQyxZQUFtQixJQUFnQixFQUFtQyxXQUFnQjtRQUFuRSxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQW1DLGdCQUFXLEdBQVgsV0FBVyxDQUFLO1FBWi9FLFlBQU8sR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztRQUNwRSxZQUFPLEdBQUcsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxlQUFlLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFHbEUsd0JBQW1CLEdBQWlCLElBQUksT0FBTyxFQUFPLENBQUM7UUFDdkQsYUFBUSxHQUFpQixJQUFJLE9BQU8sRUFBTyxDQUFDO1FBRTVDLDJCQUFzQixHQUFpQixJQUFJLE9BQU8sRUFBTyxDQUFDO1FBRWxELHVCQUFrQixHQUFxQixJQUFJLEdBQUcsRUFBZSxDQUFDO1FBQzlELGNBQVMsR0FBRyxJQUFJLGVBQWUsQ0FBTSxFQUFFLENBQUMsQ0FBQztJ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QUM7SUFDMUMsQ0FBQztJQUNELHVCQUF1QixDQUFDLFVBQVUsRUFBRSxJQUFJO1FBQ3BDLE9BQU8sSUFBSSxDQUFDLElBQUk7YUFDWCxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEdBQUcsVUFBVSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQzthQUM1RyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBa0IsRUFBTyxFQUFFO1lBQ2xDLE9BQU8sUUFBUSxDQUFDO1FBQ3BCLENBQUMsQ0FBQyxFQUNFLFVBQVUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUMxQyxDQUFDOzt1SEFqSVEsMEJBQTBCLDRDQWVVLGVBQWU7MkhBZm5ELDBCQUEwQixjQURiLE1BQU07MkZBQ25CLDBCQUEwQjtrQkFEdEMsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7OzBCQWdCUSxNQUFNOzJCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJ1xuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAsIFN1YmplY3QsIHRocm93RXJyb3IsIEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQVBQX0VOVklST05NRU5UIH0gZnJvbSAnLi4vLi4vYXBwbGljYXRpb24tY29udHJvbGxlci9lbnZpcm9ubWVudCc7XG5cblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiBcInJvb3RcIiB9KVxuZXhwb3J0IGNsYXNzIEtwaVdpdGhTaW5nbGVMYXlvdXRTZXJ2aWNlIHtcblxuXG4gICAgcHVibGljIGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XG4gICAgcHVibGljIG9wdGlvbnMgPSB7IGhlYWRlcnM6IHRoaXMuaGVhZGVycywgd2l0aENyZWRlbnRpYWxzOiB0cnVlIH07XG5cblxuICAgIF9zZWxlY3RlZEtwaU9uQ2xpY2s6IFN1YmplY3Q8YW55PiA9IG5ldyBTdWJqZWN0PGFueT4oKTtcbiAgICBfa3BpbGlzdDogU3ViamVjdDxhbnk+ID0gbmV3IFN1YmplY3Q8YW55PigpO1xuXG4gICAgX3NlbGVjdEtwaUZyb21Ecm9wRG93bjogU3ViamVjdDxhbnk+ID0gbmV3IFN1YmplY3Q8YW55PigpO1xuXG4gICAgcHJpdmF0ZSBfY29tcG9uZW50UmVnaXN0cnk6IE1hcDxzdHJpbmcsIGFueT4gPSBuZXcgTWFwPHN0cmluZywgYW55PigpO1xuICAgIHByaXZhdGUga3BpRmlsdGVyID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnk+KFtdKTtcblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBodHRwOiBIdHRwQ2xpZW50LCBASW5qZWN0KEFQUF9FTlZJUk9OTUVOVCkgcHJpdmF0ZSBlbnZpcm9ubWVudDogYW55KSB7XG4gICAgfVxuXG4gICAgaGFuZGxlRXJyb3IoZXJyb3I6IGFueSk6IE9ic2VydmFibGU8UmVzcG9uc2U+IHtcbiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXJyb3IpO1xuICAgIH1cblxuICAgIGdldGxpc3RLcGlCcm93c2VyKCk6IGFueSB7XG4gICAgICAgIGNvbnN0IGFwaVVybCA9IHRoaXMuZW52aXJvbm1lbnQuYXBwVXJsICsgdGhpcy5lbnZpcm9ubWVudC5hcGlWZXJzaW9uICsgJy9rcGktY29uZmlnL2xpc3RLcGlCcm93c2VyJztcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgICAgICAgLmdldChhcGlVcmwsIHsgd2l0aENyZWRlbnRpYWxzOiB0cnVlIH0pXG4gICAgICAgICAgICAucGlwZShtYXAoKHJlc3BvbnNlOiBSZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICAgICAgICAgIH0pLCBjYXRjaEVycm9yKHRoaXMuaGFuZGxlRXJyb3IpKTtcblxuICAgIH1cblxuICAgIGdldEFwcFBhZ2VEZXRhaWxDb25maWcocGFnZUlkKTogYW55IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgICAgICAgLmdldCh0aGlzLmVudmlyb25tZW50LmFwcFVybCArIHRoaXMuZW52aXJvbm1lbnQuYXBpVmVyc2lvbiArICcva3BpLWNvbmZpZy9nZXRBcHBQYWdlRGV0YWlsQ29uZmlnP3BhZ2VDb25maWdJZD0nICsgcGFnZUlkLCB0aGlzLm9wdGlvbnMpXG4gICAgICAgICAgICAucGlwZShtYXAoKHJlc3BvbnNlOiBSZXNwb25zZSk6IGFueSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgY2F0Y2hFcnJvcih0aGlzLmhhbmRsZUVycm9yKSk7XG4gICAgfVxuXG4gICAgZ2V0QXBwUGFnZUNvbmZpZ3MoKTogYW55IHtcbiAgICAgICAgY29uc3QgYXBpVXJsID0gdGhpcy5lbnZpcm9ubWVudC5hcHBVcmwgKyB0aGlzLmVudmlyb25tZW50LmFwaVZlcnNpb24gKyAnL2twaS1jb25maWcvZ2V0QXBwUGFnZUNvbmZpZ3MnO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAgICAgICAuZ2V0KGFwaVVybCwgeyB3aXRoQ3JlZGVudGlhbHM6IHRydWUgfSlcbiAgICAgICAgICAgIC5waXBlKG1hcCgocmVzcG9uc2U6IFJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgICAgICAgICAgfSksIGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvcikpO1xuXG4gICAgfVxuXG4gICAgZ2V0QXBwRGF0YXNldENvbmZpZ3MoKTogYW55IHtcbiAgICAgICAgY29uc3QgYXBpVXJsID0gdGhpcy5lbnZpcm9ubWVudC5hcHBVcmwgKyB0aGlzLmVudmlyb25tZW50LmFwaVZlcnNpb24gKyAnL2twaS1jb25maWcvZ2V0QXBwRGF0YXNldENvbmZpZ3MnO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAgICAgICAuZ2V0KGFwaVVybCwgeyB3aXRoQ3JlZGVudGlhbHM6IHRydWUgfSlcbiAgICAgICAgICAgIC5waXBlKG1hcCgocmVzcG9uc2U6IFJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgICAgICAgICAgfSksIGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvcikpO1xuXG4gICAgfVxuICAgIGdldEFwcERhdGFzZXRDb25maWcoZGF0YXNldElkKTogYW55IHtcbiAgICAgICAgY29uc3QgYXBpVXJsID0gdGhpcy5lbnZpcm9ubWVudC5hcHBVcmwgKyB0aGlzLmVudmlyb25tZW50LmFwaVZlcnNpb24gKyAnL2twaS1jb25maWcvZ2V0QXBwRGF0YXNldENvbmZpZz9kYXRhc2V0SWQ9JyArIGRhdGFzZXRJZDtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgICAgICAgLmdldChhcGlVcmwsIHsgd2l0aENyZWRlbnRpYWxzOiB0cnVlIH0pXG4gICAgICAgICAgICAucGlwZShtYXAoKHJlc3BvbnNlOiBSZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICAgICAgICAgIH0pLCBjYXRjaEVycm9yKHRoaXMuaGFuZGxlRXJyb3IpKTtcblxuICAgIH1cblxuICAgIGdldEFwcEZpbHRlckNvbmZpZyhmaWx0ZXJJZCk6IGFueSB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgICAgICAgIC5nZXQodGhpcy5lbnZpcm9ubWVudC5hcHBVcmwgKyB0aGlzLmVudmlyb25tZW50LmFwaVZlcnNpb24gKyAnL2twaS1jb25maWcvZ2V0QXBwRmlsdGVyQ29uZmlnP2ZpbHRlcklkPScgKyBmaWx0ZXJJZCwgdGhpcy5vcHRpb25zKVxuICAgICAgICAgICAgLnBpcGUobWFwKChyZXNwb25zZTogUmVzcG9uc2UpOiBhbnkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvcikpO1xuICAgIH1cbiAgICBnZXRBcHBWaWV3Q29uZmlncygpOiBhbnkge1xuICAgICAgICBjb25zdCBhcGlVcmwgPSB0aGlzLmVudmlyb25tZW50LmFwcFVybCArIHRoaXMuZW52aXJvbm1lbnQuYXBpVmVyc2lvbiArICcva3BpLWNvbmZpZy9nZXRBcHBWaWV3Q29uZmlncyc7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgICAgICAgIC5nZXQoYXBpVXJsLCB7IHdpdGhDcmVkZW50aWFsczogdHJ1ZSB9KVxuICAgICAgICAgICAgLnBpcGUobWFwKChyZXNwb25zZTogUmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgICAgICAgICB9KSwgY2F0Y2hFcnJvcih0aGlzLmhhbmRsZUVycm9yKSk7XG5cbiAgICB9XG5cbiAgICBnZXREYXRhKGJvZHksIHJlcXVlc3RJRCk6IGFueSB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgICAgICAgIC5wb3N0KHRoaXMuZW52aXJvbm1lbnQuYXBwVXJsICsgdGhpcy5lbnZpcm9ubWVudC5hcGlWZXJzaW9uICsgcmVxdWVzdElELCBKU09OLnN0cmluZ2lmeShib2R5KSwgdGhpcy5vcHRpb25zKVxuICAgICAgICAgICAgLnBpcGUobWFwKChyZXNwb25zZTogUmVzcG9uc2UpOiBhbnkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvcikpO1xuICAgIH1cblxuICAgICBnZXRTaW1wbGVBcGlQb3N0UmVxdWVzdChyZXF1ZXN0QXBpLCBib2R5KTogYW55IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgICAgICAgLnBvc3QodGhpcy5lbnZpcm9ubWVudC5hcHBVcmwgKyB0aGlzLmVudmlyb25tZW50LmFwaVZlcnNpb24gKyByZXF1ZXN0QXBpLCBKU09OLnN0cmluZ2lmeShib2R5KSwgdGhpcy5vcHRpb25zKVxuICAgICAgICAgICAgLnBpcGUobWFwKChyZXNwb25zZTogUmVzcG9uc2UpOiBhbnkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvcikpO1xuICAgIH1cbiAgICBnZXRTaW1wbGVBcGlHZXRSZXF1ZXN0KHJlcXVlc3RBcGkpOiBhbnkge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAgICAgICAuZ2V0KHRoaXMuZW52aXJvbm1lbnQuYXBwVXJsICsgdGhpcy5lbnZpcm9ubWVudC5hcGlWZXJzaW9uICsgcmVxdWVzdEFwaSwgeyB3aXRoQ3JlZGVudGlhbHM6IHRydWUgfSlcbiAgICAgICAgICAgIC5waXBlKG1hcCgocmVzcG9uc2U6IFJlc3BvbnNlKTogYW55ID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKHRoaXMuaGFuZGxlRXJyb3IpKTtcbiAgICB9XG5cbiAgICAgZ2V0SnNvbkRhdGFzZXRQYXlsb2FkKHJlcXVlc3RBcGkpOiBhbnkge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAgICAgICAuZ2V0KHRoaXMuZW52aXJvbm1lbnQuYXBwVXJsICsgdGhpcy5lbnZpcm9ubWVudC5hcGlWZXJzaW9uICsgcmVxdWVzdEFwaSwgeyB3aXRoQ3JlZGVudGlhbHM6IHRydWUgfSlcbiAgICAgICAgICAgIC5waXBlKG1hcCgocmVzcG9uc2U6IFJlc3BvbnNlKTogYW55ID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKHRoaXMuaGFuZGxlRXJyb3IpKTtcbiAgICB9XG4gICAgZ2VuZXJpY1NxbFF1ZXJ5UmVzcG9uc2UocmVxdWVzdEFwaSwgYm9keSk6IGFueSB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgICAgICAgIC5wb3N0KHRoaXMuZW52aXJvbm1lbnQuYXBwVXJsICsgdGhpcy5lbnZpcm9ubWVudC5hcGlWZXJzaW9uICsgcmVxdWVzdEFwaSwgSlNPTi5zdHJpbmdpZnkoYm9keSksIHRoaXMub3B0aW9ucylcbiAgICAgICAgICAgIC5waXBlKG1hcCgocmVzcG9uc2U6IFJlc3BvbnNlKTogYW55ID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKHRoaXMuaGFuZGxlRXJyb3IpKTtcbiAgICB9XG5cbn1cbiJdfQ==
|
|
129
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3BpLXNpbmdsZS1sYXlvdXQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dhbW1hLWFwcC1jb250cm9sbGVyL3NyYy9saWIvdGVtcGxhdGUtbW9kdWxlL2twaVdpdGhTaW5nbGVMYXlvdXQva3BpLXNpbmdsZS1sYXlvdXQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWMsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFDOUQsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxlQUFlLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDekYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBDQUEwQyxDQUFDOzs7QUFJM0UsTUFBTSxPQUFPLDBCQUEwQjtJQWVuQyxZQUFtQixJQUFnQixFQUFtQyxXQUFnQjtRQUFuRSxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQW1DLGdCQUFXLEdBQVgsV0FBVyxDQUFLO1FBWi9FLFlBQU8sR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztRQUNwRSxZQUFPLEdBQUcsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxlQUFlLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFHbEUsd0JBQW1CLEdBQWlCLElBQUksT0FBTyxFQUFPLENBQUM7UUFDdkQsYUFBUSxHQUFpQixJQUFJLE9BQU8sRUFBTyxDQUFDO1FBRTVDLDJCQUFzQixHQUFpQixJQUFJLE9BQU8sRUFBTyxDQUFDO1FBRWxELHVCQUFrQixHQUFxQixJQUFJLEdBQUcsRUFBZSxDQUFDO1FBQzlELGNBQVMsR0FBRyxJQUFJLGVBQWUsQ0FBTSxFQUFFLENBQUMsQ0FBQztJ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QUM7SUFDMUMsQ0FBQztJQUNELHVCQUF1QixDQUFDLFVBQVUsRUFBRSxJQUFJO1FBQ3BDLE9BQU8sSUFBSSxDQUFDLElBQUk7YUFDWCxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEdBQUcsVUFBVSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQzthQUM1RyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBa0IsRUFBTyxFQUFFO1lBQ2xDLE9BQU8sUUFBUSxDQUFDO1FBQ3BCLENBQUMsQ0FBQyxFQUNFLFVBQVUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQsd0JBQXdCLENBQUMsT0FBTztRQUM1QixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUM7UUFDakQsT0FBTyxJQUFJLENBQUMsSUFBSTthQUNYLEdBQUcsQ0FBQyxNQUFNLEVBQUUsRUFBRSxlQUFlLEVBQUUsSUFBSSxFQUFFLENBQUM7YUFDdEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQWtCLEVBQUUsRUFBRTtZQUM3QixPQUFPLFFBQVEsQ0FBQztRQUNwQixDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFFMUMsQ0FBQzs7dUhBM0lRLDBCQUEwQiw0Q0FlVSxlQUFlOzJIQWZuRCwwQkFBMEIsY0FEYixNQUFNOzJGQUNuQiwwQkFBMEI7a0JBRHRDLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOzswQkFnQlEsTUFBTTsyQkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEhlYWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCdcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbWFwLCBTdWJqZWN0LCB0aHJvd0Vycm9yLCBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFQUF9FTlZJUk9OTUVOVCB9IGZyb20gJy4uLy4uL2FwcGxpY2F0aW9uLWNvbnRyb2xsZXIvZW52aXJvbm1lbnQnO1xuXG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogXCJyb290XCIgfSlcbmV4cG9ydCBjbGFzcyBLcGlXaXRoU2luZ2xlTGF5b3V0U2VydmljZSB7XG5cblxuICAgIHB1YmxpYyBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xuICAgIHB1YmxpYyBvcHRpb25zID0geyBoZWFkZXJzOiB0aGlzLmhlYWRlcnMsIHdpdGhDcmVkZW50aWFsczogdHJ1ZSB9O1xuXG5cbiAgICBfc2VsZWN0ZWRLcGlPbkNsaWNrOiBTdWJqZWN0PGFueT4gPSBuZXcgU3ViamVjdDxhbnk+KCk7XG4gICAgX2twaWxpc3Q6IFN1YmplY3Q8YW55PiA9IG5ldyBTdWJqZWN0PGFueT4oKTtcblxuICAgIF9zZWxlY3RLcGlGcm9tRHJvcERvd246IFN1YmplY3Q8YW55PiA9IG5ldyBTdWJqZWN0PGFueT4oKTtcblxuICAgIHByaXZhdGUgX2NvbXBvbmVudFJlZ2lzdHJ5OiBNYXA8c3RyaW5nLCBhbnk+ID0gbmV3IE1hcDxzdHJpbmcsIGFueT4oKTtcbiAgICBwcml2YXRlIGtwaUZpbHRlciA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55PihbXSk7XG5cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgaHR0cDogSHR0cENsaWVudCwgQEluamVjdChBUFBfRU5WSVJPTk1FTlQpIHByaXZhdGUgZW52aXJvbm1lbnQ6IGFueSkge1xuICAgIH1cblxuICAgIGhhbmRsZUVycm9yKGVycm9yOiBhbnkpOiBPYnNlcnZhYmxlPFJlc3BvbnNlPiB7XG4gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9yKTtcbiAgICB9XG5cbiAgICBnZXRsaXN0S3BpQnJvd3NlcigpOiBhbnkge1xuICAgICAgICBjb25zdCBhcGlVcmwgPSB0aGlzLmVudmlyb25tZW50LmFwcFVybCArIHRoaXMuZW52aXJvbm1lbnQuYXBpVmVyc2lvbiArICcva3BpLWNvbmZpZy9saXN0S3BpQnJvd3Nlcic7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgICAgICAgIC5nZXQoYXBpVXJsLCB7IHdpdGhDcmVkZW50aWFsczogdHJ1ZSB9KVxuICAgICAgICAgICAgLnBpcGUobWFwKChyZXNwb25zZTogUmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgICAgICAgICB9KSwgY2F0Y2hFcnJvcih0aGlzLmhhbmRsZUVycm9yKSk7XG5cbiAgICB9XG5cbiAgICBnZXRBcHBQYWdlRGV0YWlsQ29uZmlnKHBhZ2VJZCk6IGFueSB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgICAgICAgIC5nZXQodGhpcy5lbnZpcm9ubWVudC5hcHBVcmwgKyB0aGlzLmVudmlyb25tZW50LmFwaVZlcnNpb24gKyAnL2twaS1jb25maWcvZ2V0QXBwUGFnZURldGFpbENvbmZpZz9wYWdlQ29uZmlnSWQ9JyArIHBhZ2VJZCwgdGhpcy5vcHRpb25zKVxuICAgICAgICAgICAgLnBpcGUobWFwKChyZXNwb25zZTogUmVzcG9uc2UpOiBhbnkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvcikpO1xuICAgIH1cblxuICAgIGdldEFwcFBhZ2VDb25maWdzKCk6IGFueSB7XG4gICAgICAgIGNvbnN0IGFwaVVybCA9IHRoaXMuZW52aXJvbm1lbnQuYXBwVXJsICsgdGhpcy5lbnZpcm9ubWVudC5hcGlWZXJzaW9uICsgJy9rcGktY29uZmlnL2dldEFwcFBhZ2VDb25maWdzJztcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgICAgICAgLmdldChhcGlVcmwsIHsgd2l0aENyZWRlbnRpYWxzOiB0cnVlIH0pXG4gICAgICAgICAgICAucGlwZShtYXAoKHJlc3BvbnNlOiBSZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICAgICAgICAgIH0pLCBjYXRjaEVycm9yKHRoaXMuaGFuZGxlRXJyb3IpKTtcblxuICAgIH1cblxuICAgIGdldEFwcERhdGFzZXRDb25maWdzKCk6IGFueSB7XG4gICAgICAgIGNvbnN0IGFwaVVybCA9IHRoaXMuZW52aXJvbm1lbnQuYXBwVXJsICsgdGhpcy5lbnZpcm9ubWVudC5hcGlWZXJzaW9uICsgJy9rcGktY29uZmlnL2dldEFwcERhdGFzZXRDb25maWdzJztcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgICAgICAgLmdldChhcGlVcmwsIHsgd2l0aENyZWRlbnRpYWxzOiB0cnVlIH0pXG4gICAgICAgICAgICAucGlwZShtYXAoKHJlc3BvbnNlOiBSZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICAgICAgICAgIH0pLCBjYXRjaEVycm9yKHRoaXMuaGFuZGxlRXJyb3IpKTtcblxuICAgIH1cbiAgICBnZXRBcHBEYXRhc2V0Q29uZmlnKGRhdGFzZXRJZCk6IGFueSB7XG4gICAgICAgIGNvbnN0IGFwaVVybCA9IHRoaXMuZW52aXJvbm1lbnQuYXBwVXJsICsgdGhpcy5lbnZpcm9ubWVudC5hcGlWZXJzaW9uICsgJy9rcGktY29uZmlnL2dldEFwcERhdGFzZXRDb25maWc/ZGF0YXNldElkPScgKyBkYXRhc2V0SWQ7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgICAgICAgIC5nZXQoYXBpVXJsLCB7IHdpdGhDcmVkZW50aWFsczogdHJ1ZSB9KVxuICAgICAgICAgICAgLnBpcGUobWFwKChyZXNwb25zZTogUmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgICAgICAgICB9KSwgY2F0Y2hFcnJvcih0aGlzLmhhbmRsZUVycm9yKSk7XG5cbiAgICB9XG5cbiAgICBnZXRBcHBGaWx0ZXJDb25maWcoZmlsdGVySWQpOiBhbnkge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAgICAgICAuZ2V0KHRoaXMuZW52aXJvbm1lbnQuYXBwVXJsICsgdGhpcy5lbnZpcm9ubWVudC5hcGlWZXJzaW9uICsgJy9rcGktY29uZmlnL2dldEFwcEZpbHRlckNvbmZpZz9maWx0ZXJJZD0nICsgZmlsdGVySWQsIHRoaXMub3B0aW9ucylcbiAgICAgICAgICAgIC5waXBlKG1hcCgocmVzcG9uc2U6IFJlc3BvbnNlKTogYW55ID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKHRoaXMuaGFuZGxlRXJyb3IpKTtcbiAgICB9XG4gICAgZ2V0QXBwVmlld0NvbmZpZ3MoKTogYW55IHtcbiAgICAgICAgY29uc3QgYXBpVXJsID0gdGhpcy5lbnZpcm9ubWVudC5hcHBVcmwgKyB0aGlzLmVudmlyb25tZW50LmFwaVZlcnNpb24gKyAnL2twaS1jb25maWcvZ2V0QXBwVmlld0NvbmZpZ3MnO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAgICAgICAuZ2V0KGFwaVVybCwgeyB3aXRoQ3JlZGVudGlhbHM6IHRydWUgfSlcbiAgICAgICAgICAgIC5waXBlKG1hcCgocmVzcG9uc2U6IFJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgICAgICAgICAgfSksIGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvcikpO1xuXG4gICAgfVxuXG4gICAgZ2V0RGF0YShib2R5LCByZXF1ZXN0SUQpOiBhbnkge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAgICAgICAucG9zdCh0aGlzLmVudmlyb25tZW50LmFwcFVybCArIHRoaXMuZW52aXJvbm1lbnQuYXBpVmVyc2lvbiArIHJlcXVlc3RJRCwgSlNPTi5zdHJpbmdpZnkoYm9keSksIHRoaXMub3B0aW9ucylcbiAgICAgICAgICAgIC5waXBlKG1hcCgocmVzcG9uc2U6IFJlc3BvbnNlKTogYW55ID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKHRoaXMuaGFuZGxlRXJyb3IpKTtcbiAgICB9XG5cbiAgICBnZXRTaW1wbGVBcGlQb3N0UmVxdWVzdChyZXF1ZXN0QXBpLCBib2R5KTogYW55IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgICAgICAgLnBvc3QodGhpcy5lbnZpcm9ubWVudC5hcHBVcmwgKyB0aGlzLmVudmlyb25tZW50LmFwaVZlcnNpb24gKyByZXF1ZXN0QXBpLCBKU09OLnN0cmluZ2lmeShib2R5KSwgdGhpcy5vcHRpb25zKVxuICAgICAgICAgICAgLnBpcGUobWFwKChyZXNwb25zZTogUmVzcG9uc2UpOiBhbnkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvcikpO1xuICAgIH1cbiAgICBnZXRTaW1wbGVBcGlHZXRSZXF1ZXN0KHJlcXVlc3RBcGkpOiBhbnkge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAgICAgICAuZ2V0KHRoaXMuZW52aXJvbm1lbnQuYXBwVXJsICsgdGhpcy5lbnZpcm9ubWVudC5hcGlWZXJzaW9uICsgcmVxdWVzdEFwaSwgeyB3aXRoQ3JlZGVudGlhbHM6IHRydWUgfSlcbiAgICAgICAgICAgIC5waXBlKG1hcCgocmVzcG9uc2U6IFJlc3BvbnNlKTogYW55ID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKHRoaXMuaGFuZGxlRXJyb3IpKTtcbiAgICB9XG5cbiAgICBnZXRKc29uRGF0YXNldFBheWxvYWQocmVxdWVzdEFwaSk6IGFueSB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgICAgICAgIC5nZXQodGhpcy5lbnZpcm9ubWVudC5hcHBVcmwgKyB0aGlzLmVudmlyb25tZW50LmFwaVZlcnNpb24gKyByZXF1ZXN0QXBpLCB7IHdpdGhDcmVkZW50aWFsczogdHJ1ZSB9KVxuICAgICAgICAgICAgLnBpcGUobWFwKChyZXNwb25zZTogUmVzcG9uc2UpOiBhbnkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvcikpO1xuICAgIH1cbiAgICBnZW5lcmljU3FsUXVlcnlSZXNwb25zZShyZXF1ZXN0QXBpLCBib2R5KTogYW55IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgICAgICAgLnBvc3QodGhpcy5lbnZpcm9ubWVudC5hcHBVcmwgKyB0aGlzLmVudmlyb25tZW50LmFwaVZlcnNpb24gKyByZXF1ZXN0QXBpLCBKU09OLnN0cmluZ2lmeShib2R5KSwgdGhpcy5vcHRpb25zKVxuICAgICAgICAgICAgLnBpcGUobWFwKChyZXNwb25zZTogUmVzcG9uc2UpOiBhbnkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvcikpO1xuICAgIH1cblxuICAgIGdldEZpbHRlckRhdGFCeURyaWxsRG93bihhcGlOYW1lKTogYW55IHtcbiAgICAgICAgY29uc3QgYXBpVXJsID0gdGhpcy5lbnZpcm9ubWVudC5hcHBVcmwgKyBhcGlOYW1lO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAgICAgICAuZ2V0KGFwaVVybCwgeyB3aXRoQ3JlZGVudGlhbHM6IHRydWUgfSlcbiAgICAgICAgICAgIC5waXBlKG1hcCgocmVzcG9uc2U6IFJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgICAgICAgICAgfSksIGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvcikpO1xuXG4gICAgfVxufVxuIl19
|