bpm-core 0.0.55 → 0.0.56
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/app-component-sections/activities/activities.component.mjs +13 -10
- package/esm2022/lib/components/app-component-sections/approvals-workflow/approvals-workflow.component.mjs +5 -3
- package/esm2022/lib/components/app-component-sections/feedback-section/feedback-section.component.mjs +7 -5
- package/esm2022/lib/components/app-component-sections/form-section/form-section.component.mjs +5 -3
- package/esm2022/lib/components/app-component-sections/previous-requests/previous-requests.component.mjs +196 -36
- package/esm2022/lib/components/app-component-sections/service-header/service-header.component.mjs +5 -3
- package/esm2022/lib/components/app-component-sections/workflow-section/workflow-section.component.mjs +5 -3
- package/esm2022/lib/components/shared-components/action-buttons/action-buttons.component.mjs +6 -4
- package/esm2022/lib/components/shared-components/form-field/add-attachment-section/add-attachment-section.component.mjs +5 -3
- package/esm2022/lib/components/shared-components/form-field/attachment-section/attachment-section.component.mjs +5 -3
- package/esm2022/lib/components/shared-components/form-field/date-range-picker/date-range-picker.component.mjs +3 -3
- package/esm2022/lib/components/shared-components/form-field/doc-uploader/docs-uploader.component.mjs +6 -4
- package/esm2022/lib/components/shared-components/form-field/search-employee/search-employee.component.mjs +5 -3
- package/esm2022/lib/components/shared-components/table/table.component.mjs +240 -0
- package/esm2022/lib/directives/skip-location.directive.mjs +28 -0
- package/esm2022/lib/enums/actions.enum.mjs +21 -0
- package/esm2022/lib/enums/colors.enum.mjs +6 -0
- package/esm2022/lib/enums/events.enum.mjs +6 -0
- package/esm2022/lib/helpers/shared.helper.mjs +26 -0
- package/esm2022/lib/interfaces/action.interface.mjs +2 -0
- package/esm2022/lib/regex/index.mjs +2 -0
- package/esm2022/lib/services/core.service.ts.mjs +7 -5
- package/esm2022/lib/testComponent/general-approver-section/general-approver-section.component.mjs +5 -3
- package/esm2022/lib/testComponent/request-details-section/request-details-section.component.mjs +7 -4
- package/esm2022/public-api.mjs +2 -1
- package/fesm2022/bpm-core.mjs +241 -67
- package/fesm2022/bpm-core.mjs.map +1 -1
- package/lib/components/app-component-sections/approvals-workflow/approvals-workflow.component.d.ts +2 -0
- package/lib/components/app-component-sections/feedback-section/feedback-section.component.d.ts +2 -1
- package/lib/components/app-component-sections/form-section/form-section.component.d.ts +2 -1
- package/lib/components/app-component-sections/previous-requests/previous-requests.component.d.ts +123 -1
- package/lib/components/app-component-sections/service-header/service-header.component.d.ts +2 -1
- package/lib/components/app-component-sections/workflow-section/workflow-section.component.d.ts +2 -1
- package/lib/components/shared-components/action-buttons/action-buttons.component.d.ts +2 -1
- package/lib/components/shared-components/form-field/add-attachment-section/add-attachment-section.component.d.ts +2 -1
- package/lib/components/shared-components/form-field/attachment-section/attachment-section.component.d.ts +2 -1
- package/lib/components/shared-components/form-field/doc-uploader/docs-uploader.component.d.ts +2 -1
- package/lib/components/shared-components/form-field/search-employee/search-employee.component.d.ts +2 -1
- package/lib/components/shared-components/form-field/shared-imports.d.ts +2 -2
- package/lib/components/shared-components/table/table.component.d.ts +76 -0
- package/lib/directives/skip-location.directive.d.ts +10 -0
- package/lib/enums/actions.enum.d.ts +19 -0
- package/lib/enums/colors.enum.d.ts +4 -0
- package/lib/enums/events.enum.d.ts +4 -0
- package/lib/helpers/shared.helper.d.ts +1 -0
- package/lib/interfaces/action.interface.d.ts +7 -0
- package/lib/regex/index.d.ts +1 -0
- package/lib/services/core.service.ts.d.ts +2 -0
- package/lib/testComponent/general-approver-section/general-approver-section.component.d.ts +2 -1
- package/lib/testComponent/request-details-section/request-details-section.component.d.ts +2 -1
- package/package.json +1 -1
- package/public-api.d.ts +1 -0
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Directive, HostListener, Input } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@angular/router";
|
|
4
|
+
export class SkipLocationDirective {
|
|
5
|
+
router;
|
|
6
|
+
appSkipLocation;
|
|
7
|
+
constructor(router) {
|
|
8
|
+
this.router = router;
|
|
9
|
+
}
|
|
10
|
+
onClick() {
|
|
11
|
+
this.router.navigate([this.appSkipLocation], { skipLocationChange: true });
|
|
12
|
+
}
|
|
13
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: SkipLocationDirective, deps: [{ token: i1.Router }], target: i0.ɵɵFactoryTarget.Directive });
|
|
14
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.8", type: SkipLocationDirective, isStandalone: true, selector: "[appSkipLocation]", inputs: { appSkipLocation: "appSkipLocation" }, host: { listeners: { "click": "onClick()" } }, ngImport: i0 });
|
|
15
|
+
}
|
|
16
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: SkipLocationDirective, decorators: [{
|
|
17
|
+
type: Directive,
|
|
18
|
+
args: [{
|
|
19
|
+
standalone: true,
|
|
20
|
+
selector: '[appSkipLocation]'
|
|
21
|
+
}]
|
|
22
|
+
}], ctorParameters: () => [{ type: i1.Router }], propDecorators: { appSkipLocation: [{
|
|
23
|
+
type: Input
|
|
24
|
+
}], onClick: [{
|
|
25
|
+
type: HostListener,
|
|
26
|
+
args: ['click']
|
|
27
|
+
}] } });
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2tpcC1sb2NhdGlvbi5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9icG0tY29yZS9zcmMvbGliL2RpcmVjdGl2ZXMvc2tpcC1sb2NhdGlvbi5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFDLE1BQU0sZUFBZSxDQUFDOzs7QUFPN0QsTUFBTSxPQUFPLHFCQUFxQjtJQUdWO0lBRlgsZUFBZSxDQUFNO0lBRTlCLFlBQW9CLE1BQWM7UUFBZCxXQUFNLEdBQU4sTUFBTSxDQUFRO0lBQ2xDLENBQUM7SUFHRCxPQUFPO1FBQ0gsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUUsRUFBQyxrQkFBa0IsRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDO0lBQzdFLENBQUM7dUdBVFEscUJBQXFCOzJGQUFyQixxQkFBcUI7OzJGQUFyQixxQkFBcUI7a0JBSmpDLFNBQVM7bUJBQUM7b0JBQ1AsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRSxtQkFBbUI7aUJBQ2hDOzJFQUVZLGVBQWU7c0JBQXZCLEtBQUs7Z0JBTU4sT0FBTztzQkFETixZQUFZO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0RpcmVjdGl2ZSwgSG9zdExpc3RlbmVyLCBJbnB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7Um91dGVyfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gICAgc2VsZWN0b3I6ICdbYXBwU2tpcExvY2F0aW9uXSdcclxufSlcclxuZXhwb3J0IGNsYXNzIFNraXBMb2NhdGlvbkRpcmVjdGl2ZSB7XHJcbiAgICBASW5wdXQoKSBhcHBTa2lwTG9jYXRpb246IGFueTtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJvdXRlcjogUm91dGVyKSB7XHJcbiAgICB9XHJcblxyXG4gICAgQEhvc3RMaXN0ZW5lcignY2xpY2snKVxyXG4gICAgb25DbGljaygpIHtcclxuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbdGhpcy5hcHBTa2lwTG9jYXRpb25dLCB7c2tpcExvY2F0aW9uQ2hhbmdlOiB0cnVlfSk7XHJcbiAgICB9XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export var Actions;
|
|
2
|
+
(function (Actions) {
|
|
3
|
+
Actions["VIEW"] = "view";
|
|
4
|
+
Actions["COPY"] = "copy";
|
|
5
|
+
Actions["EDIT"] = "edit";
|
|
6
|
+
Actions["DELETE"] = "delete";
|
|
7
|
+
Actions["DELETEPENDING"] = "deletePendingContract";
|
|
8
|
+
Actions["CHART"] = "chart";
|
|
9
|
+
Actions["APPROVE"] = "approve";
|
|
10
|
+
Actions["REJECT"] = "reject";
|
|
11
|
+
Actions["DETAILS"] = "Details";
|
|
12
|
+
Actions["START"] = "Start";
|
|
13
|
+
Actions["PREPARE"] = "Prepare";
|
|
14
|
+
Actions["CUSTOMACTION"] = "customAction";
|
|
15
|
+
Actions["CUSTOMACTIONMANAGE"] = "customActionManage";
|
|
16
|
+
Actions["CUSTOMACTIONEXTEND"] = "customActionExtend";
|
|
17
|
+
Actions["CUSTOMACTIONDETAILS"] = "customActionDetails";
|
|
18
|
+
Actions["STATUS"] = "status";
|
|
19
|
+
Actions["ALLOCATE"] = "allocate";
|
|
20
|
+
})(Actions || (Actions = {}));
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9ucy5lbnVtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnBtLWNvcmUvc3JjL2xpYi9lbnVtcy9hY3Rpb25zLmVudW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFOLElBQVksT0FrQlg7QUFsQkQsV0FBWSxPQUFPO0lBQ2Ysd0JBQWEsQ0FBQTtJQUNiLHdCQUFhLENBQUE7SUFDYix3QkFBYSxDQUFBO0lBQ2IsNEJBQWlCLENBQUE7SUFDakIsa0RBQXVDLENBQUE7SUFDdkMsMEJBQWUsQ0FBQTtJQUNmLDhCQUFtQixDQUFBO0lBQ25CLDRCQUFpQixDQUFBO0lBQ2pCLDhCQUFtQixDQUFBO0lBQ25CLDBCQUFlLENBQUE7SUFDZiw4QkFBbUIsQ0FBQTtJQUNuQix3Q0FBNkIsQ0FBQTtJQUM3QixvREFBeUMsQ0FBQTtJQUN6QyxvREFBeUMsQ0FBQTtJQUN6QyxzREFBMkMsQ0FBQTtJQUMzQyw0QkFBaUIsQ0FBQTtJQUNqQixnQ0FBcUIsQ0FBQTtBQUN6QixDQUFDLEVBbEJXLE9BQU8sS0FBUCxPQUFPLFFBa0JsQiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIEFjdGlvbnMge1xyXG4gICAgVklFVyA9ICd2aWV3JyxcclxuICAgIENPUFkgPSAnY29weScsXHJcbiAgICBFRElUID0gJ2VkaXQnLFxyXG4gICAgREVMRVRFID0gJ2RlbGV0ZScsXHJcbiAgICBERUxFVEVQRU5ESU5HID0gJ2RlbGV0ZVBlbmRpbmdDb250cmFjdCcsXHJcbiAgICBDSEFSVCA9ICdjaGFydCcsXHJcbiAgICBBUFBST1ZFID0gJ2FwcHJvdmUnLFxyXG4gICAgUkVKRUNUID0gJ3JlamVjdCcsXHJcbiAgICBERVRBSUxTID0gJ0RldGFpbHMnLFxyXG4gICAgU1RBUlQgPSAnU3RhcnQnLFxyXG4gICAgUFJFUEFSRSA9ICdQcmVwYXJlJyxcclxuICAgIENVU1RPTUFDVElPTiA9ICdjdXN0b21BY3Rpb24nLFxyXG4gICAgQ1VTVE9NQUNUSU9OTUFOQUdFID0gJ2N1c3RvbUFjdGlvbk1hbmFnZScsXHJcbiAgICBDVVNUT01BQ1RJT05FWFRFTkQgPSAnY3VzdG9tQWN0aW9uRXh0ZW5kJyxcclxuICAgIENVU1RPTUFDVElPTkRFVEFJTFMgPSAnY3VzdG9tQWN0aW9uRGV0YWlscycsXHJcbiAgICBTVEFUVVMgPSAnc3RhdHVzJyxcclxuICAgIEFMTE9DQVRFID0gJ2FsbG9jYXRlJ1xyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export var Colors;
|
|
2
|
+
(function (Colors) {
|
|
3
|
+
Colors["RED"] = "#CA102F";
|
|
4
|
+
Colors["GREEN"] = "#02C389";
|
|
5
|
+
})(Colors || (Colors = {}));
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3JzLmVudW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9icG0tY29yZS9zcmMvbGliL2VudW1zL2NvbG9ycy5lbnVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBTixJQUFZLE1BR1g7QUFIRCxXQUFZLE1BQU07SUFDZCx5QkFBZSxDQUFBO0lBQ2YsMkJBQWlCLENBQUE7QUFDckIsQ0FBQyxFQUhXLE1BQU0sS0FBTixNQUFNLFFBR2pCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGVudW0gQ29sb3JzIHtcclxuICAgIFJFRCA9ICcjQ0ExMDJGJyxcclxuICAgIEdSRUVOID0gJyMwMkMzODknLFxyXG59Il19
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export var Events;
|
|
2
|
+
(function (Events) {
|
|
3
|
+
Events["SCROLL"] = "scroll";
|
|
4
|
+
Events["ENTER"] = "enter";
|
|
5
|
+
})(Events || (Events = {}));
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnRzLmVudW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9icG0tY29yZS9zcmMvbGliL2VudW1zL2V2ZW50cy5lbnVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBTixJQUFZLE1BR1g7QUFIRCxXQUFZLE1BQU07SUFDZCwyQkFBaUIsQ0FBQTtJQUNqQix5QkFBZSxDQUFBO0FBQ25CLENBQUMsRUFIVyxNQUFNLEtBQU4sTUFBTSxRQUdqQiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIEV2ZW50cyB7XHJcbiAgICBTQ1JPTEwgPSAnc2Nyb2xsJyxcclxuICAgIEVOVEVSID0gJ2VudGVyJyxcclxufSJdfQ==
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
export function mapTo(path, source, allowUndefined = false, allowArrayWithSingleValue = false) {
|
|
2
|
+
let toBeReturned;
|
|
3
|
+
if (source) {
|
|
4
|
+
const attributes = path.split('.');
|
|
5
|
+
toBeReturned = source[attributes[0]];
|
|
6
|
+
for (let i = 1; i < attributes.length && toBeReturned != null; i++)
|
|
7
|
+
toBeReturned = toBeReturned[attributes[i]];
|
|
8
|
+
}
|
|
9
|
+
// Check if the value is a valid date
|
|
10
|
+
if (toBeReturned instanceof Date) {
|
|
11
|
+
return toBeReturned;
|
|
12
|
+
}
|
|
13
|
+
// Return null for undefined or missing date values
|
|
14
|
+
if (toBeReturned === undefined || toBeReturned === null) {
|
|
15
|
+
return allowUndefined ? toBeReturned : null;
|
|
16
|
+
}
|
|
17
|
+
// Return '-' for other missing values
|
|
18
|
+
let toReturn = toBeReturned || toBeReturned === 0 ? toBeReturned : '-';
|
|
19
|
+
// // to make sure that if the returned data is undefined, we will override it by -
|
|
20
|
+
// let toReturn = toBeReturned || toBeReturned === 0 ? toBeReturned : allowUndefined ? toBeReturned : '-';
|
|
21
|
+
if (Array.isArray(toReturn) && toReturn.length == 1 && !allowArrayWithSingleValue) {
|
|
22
|
+
toReturn = toReturn[0];
|
|
23
|
+
}
|
|
24
|
+
return toReturn;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcmVkLmhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JwbS1jb3JlL3NyYy9saWIvaGVscGVycy9zaGFyZWQuaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sVUFBVSxLQUFLLENBQUMsSUFBWSxFQUFFLE1BQVcsRUFBRSxjQUFjLEdBQUcsS0FBSyxFQUFFLHlCQUF5QixHQUFHLEtBQUs7SUFDdEcsSUFBSSxZQUFpQixDQUFDO0lBQ3RCLElBQUksTUFBTSxFQUFFLENBQUM7UUFDVCxNQUFNLFVBQVUsR0FBYSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzdDLFlBQVksR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDckMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxNQUFNLElBQUksWUFBWSxJQUFJLElBQUksRUFBRSxDQUFDLEVBQUU7WUFBRSxZQUFZLEdBQUcsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25ILENBQUM7SUFHRCxxQ0FBcUM7SUFDckMsSUFBSSxZQUFZLFlBQVksSUFBSSxFQUFFLENBQUM7UUFDL0IsT0FBTyxZQUFZLENBQUM7SUFDeEIsQ0FBQztJQUVELG1EQUFtRDtJQUNuRCxJQUFJLFlBQVksS0FBSyxTQUFTLElBQUksWUFBWSxLQUFLLElBQUksRUFBRSxDQUFDO1FBQ3RELE9BQU8sY0FBYyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNoRCxDQUFDO0lBRUQsc0NBQXNDO0lBQ3RDLElBQUksUUFBUSxHQUFHLFlBQVksSUFBSSxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztJQUd2RSxtRkFBbUY7SUFDbkYsMEdBQTBHO0lBRTFHLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxRQUFRLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQUM7UUFDaEYsUUFBUSxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBRUQsT0FBTyxRQUFRLENBQUM7QUFDcEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBtYXBUbyhwYXRoOiBzdHJpbmcsIHNvdXJjZTogYW55LCBhbGxvd1VuZGVmaW5lZCA9IGZhbHNlLCBhbGxvd0FycmF5V2l0aFNpbmdsZVZhbHVlID0gZmFsc2UpOiBhbnkge1xyXG4gICAgbGV0IHRvQmVSZXR1cm5lZDogYW55O1xyXG4gICAgaWYgKHNvdXJjZSkge1xyXG4gICAgICAgIGNvbnN0IGF0dHJpYnV0ZXM6IHN0cmluZ1tdID0gcGF0aC5zcGxpdCgnLicpO1xyXG4gICAgICAgIHRvQmVSZXR1cm5lZCA9IHNvdXJjZVthdHRyaWJ1dGVzWzBdXTtcclxuICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8IGF0dHJpYnV0ZXMubGVuZ3RoICYmIHRvQmVSZXR1cm5lZCAhPSBudWxsOyBpKyspIHRvQmVSZXR1cm5lZCA9IHRvQmVSZXR1cm5lZFthdHRyaWJ1dGVzW2ldXTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLy8gQ2hlY2sgaWYgdGhlIHZhbHVlIGlzIGEgdmFsaWQgZGF0ZVxyXG4gICAgaWYgKHRvQmVSZXR1cm5lZCBpbnN0YW5jZW9mIERhdGUpIHtcclxuICAgICAgICByZXR1cm4gdG9CZVJldHVybmVkO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFJldHVybiBudWxsIGZvciB1bmRlZmluZWQgb3IgbWlzc2luZyBkYXRlIHZhbHVlc1xyXG4gICAgaWYgKHRvQmVSZXR1cm5lZCA9PT0gdW5kZWZpbmVkIHx8IHRvQmVSZXR1cm5lZCA9PT0gbnVsbCkge1xyXG4gICAgICAgIHJldHVybiBhbGxvd1VuZGVmaW5lZCA/IHRvQmVSZXR1cm5lZCA6IG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gUmV0dXJuICctJyBmb3Igb3RoZXIgbWlzc2luZyB2YWx1ZXNcclxuICAgIGxldCB0b1JldHVybiA9IHRvQmVSZXR1cm5lZCB8fCB0b0JlUmV0dXJuZWQgPT09IDAgPyB0b0JlUmV0dXJuZWQgOiAnLSc7XHJcblxyXG5cclxuICAgIC8vIC8vIHRvIG1ha2Ugc3VyZSB0aGF0IGlmIHRoZSByZXR1cm5lZCBkYXRhIGlzIHVuZGVmaW5lZCwgd2Ugd2lsbCBvdmVycmlkZSBpdCBieSAtXHJcbiAgICAvLyBsZXQgdG9SZXR1cm4gPSB0b0JlUmV0dXJuZWQgfHwgdG9CZVJldHVybmVkID09PSAwID8gdG9CZVJldHVybmVkIDogYWxsb3dVbmRlZmluZWQgPyB0b0JlUmV0dXJuZWQgOiAnLSc7XHJcblxyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodG9SZXR1cm4pICYmIHRvUmV0dXJuLmxlbmd0aCA9PSAxICYmICFhbGxvd0FycmF5V2l0aFNpbmdsZVZhbHVlKSB7XHJcbiAgICAgICAgdG9SZXR1cm4gPSB0b1JldHVyblswXTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdG9SZXR1cm47XHJcbn0iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JwbS1jb3JlL3NyYy9saWIvaW50ZXJmYWNlcy9hY3Rpb24uaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBY3Rpb25zIH0gZnJvbSBcIi4uL2VudW1zL2FjdGlvbnMuZW51bVwiO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBBY3Rpb25Nb2RlbCB7XHJcbiAgICBhY3Rpb246IEFjdGlvbnMsXHJcbiAgICBvbkNsaWNrPzogKGVsZW1lbnQ6IGFueSkgPT4ge30sXHJcbiAgICBhY3Rpb25OYW1lPzogc3RyaW5nLFxyXG4gICAgaXNIaWRkZW4/OiBib29sZWFuXHJcbn0iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export * from './regex-patterns';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9icG0tY29yZS9zcmMvbGliL3JlZ2V4L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsa0JBQWtCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3JlZ2V4LXBhdHRlcm5zJzsiXX0=
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { HttpHeaders } from "@angular/common/http";
|
|
2
|
-
import { Inject, Injectable } from "@angular/core";
|
|
2
|
+
import { DestroyRef, inject, Inject, Injectable } from "@angular/core";
|
|
3
3
|
import { CommentsDrop, Form, Header, InboxItem, Messages, MY_LIB_CONFIG_TOKEN, ProfileInfoDrop, Section, SectionHeader } from "../../public-api";
|
|
4
4
|
import * as constants from '../constants';
|
|
5
5
|
import { catchError, from, switchMap, throwError } from "rxjs";
|
|
6
6
|
import { map } from "rxjs/operators";
|
|
7
7
|
import saveFormHooks from '../hooks/save-form';
|
|
8
|
+
import { takeUntilDestroyed } from "@angular/core/rxjs-interop";
|
|
8
9
|
import * as i0 from "@angular/core";
|
|
9
10
|
import * as i1 from "@angular/common/http";
|
|
10
11
|
export class CoreService {
|
|
@@ -27,6 +28,7 @@ export class CoreService {
|
|
|
27
28
|
historyDataLoaded;
|
|
28
29
|
historyData = [];
|
|
29
30
|
isMobile;
|
|
31
|
+
destroyRef = inject(DestroyRef);
|
|
30
32
|
constructor(http, config) {
|
|
31
33
|
this.http = http;
|
|
32
34
|
this.config = config;
|
|
@@ -51,7 +53,7 @@ export class CoreService {
|
|
|
51
53
|
}
|
|
52
54
|
getLoggedInUserData() {
|
|
53
55
|
let loggedInEmail = this.loggedInUserId();
|
|
54
|
-
this.employeeProfile(loggedInEmail).subscribe((response) => {
|
|
56
|
+
this.employeeProfile(loggedInEmail).pipe(takeUntilDestroyed(this.destroyRef)).subscribe((response) => {
|
|
55
57
|
this.loggedInUserData = response?.["Users"]?.[0];
|
|
56
58
|
console.log('getLoggedInUserData', response);
|
|
57
59
|
});
|
|
@@ -262,7 +264,7 @@ export class CoreService {
|
|
|
262
264
|
result.sections.push(new Section(constants.SECTION_ID_REQUEST_DETAILS, new SectionHeader(constants.DONT_SHOW, constants.DONT_SHOW, constants.DONT_SHOW, constants.DONT_SHOW, constants.DONT_SHOW, constants.DONT_SHOW, constants.DONT_SHOW, requestDetailsHasComment, (payload.data['workflowSteps'] ? constants.READ_ONLY : isReadOnly)), payload.data.request));
|
|
263
265
|
if (result.header.formId) {
|
|
264
266
|
result.commentsDrop = (!result.commentsDrop ? [] : result.commentsDrop);
|
|
265
|
-
this.loadHistory(result.header.formId).subscribe((response) => {
|
|
267
|
+
this.loadHistory(result.header.formId).pipe(takeUntilDestroyed(this.destroyRef)).subscribe((response) => {
|
|
266
268
|
if (response) {
|
|
267
269
|
response.items.forEach((item) => {
|
|
268
270
|
if (item.sequenceNumber !== '0' && item.processedBy) {
|
|
@@ -275,7 +277,7 @@ export class CoreService {
|
|
|
275
277
|
}
|
|
276
278
|
const inboxType = this.getInboxType(result);
|
|
277
279
|
if (result.header.formId && (!this.isOpenOnInbox())) {
|
|
278
|
-
this.getInboxItem(result.header.formId, inboxType).subscribe((response) => {
|
|
280
|
+
this.getInboxItem(result.header.formId, inboxType).pipe(takeUntilDestroyed(this.destroyRef)).subscribe((response) => {
|
|
279
281
|
if (response) {
|
|
280
282
|
const item = response.item;
|
|
281
283
|
result.inboxItem = new InboxItem(item['flagging'].flagPriority, item['flagging']['isFlagged'], item.feedback['canRequestFeedback'], item.feedback['hasFeedback'], item.feedback['isPending'], item.feedback['isRequested'], item.feedback['isResponded']);
|
|
@@ -515,4 +517,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
|
|
|
515
517
|
type: Inject,
|
|
516
518
|
args: [MY_LIB_CONFIG_TOKEN]
|
|
517
519
|
}] }] });
|
|
518
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS5zZXJ2aWNlLnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnBtLWNvcmUvc3JjL2xpYi9zZXJ2aWNlcy9jb3JlLnNlcnZpY2UudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFhLFdBQVcsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQzdELE9BQU8sRUFBQyxNQUFNLEVBQUUsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRWpELE9BQU8sRUFBQyxZQUFZLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLG1CQUFtQixFQUFFLGVBQWUsRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDL0ksT0FBTyxLQUFLLFNBQVMsTUFBTSxjQUFjLENBQUE7QUFDekMsT0FBTyxFQUFDLFVBQVUsRUFBRSxJQUFJLEVBQWMsU0FBUyxFQUFFLFVBQVUsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUN6RSxPQUFPLEVBQUMsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkMsT0FBTyxhQUFhLE1BQU0sb0JBQW9CLENBQUM7OztBQUsvQyxNQUFNLE9BQU8sV0FBVztJQW1CTztJQUM2QjtJQW5CMUQsTUFBTSxHQUFXLEVBQUUsQ0FBQTtJQUNYLFNBQVMsQ0FBUztJQUNsQixZQUFZLENBQVM7SUFDWixhQUFhLENBQVM7SUFDaEMsUUFBUSxDQUFTO0lBQ1AsU0FBUyxDQUFLO0lBQ3hCLGdCQUFnQixDQUFLO0lBQzVCLFlBQVksQ0FBUTtJQUNaLGVBQWUsQ0FBVTtJQUN6QixjQUFjLENBQVU7SUFDeEIsZ0JBQWdCLENBQU07SUFDOUIsUUFBUSxDQUFRO0lBQ2hCLFVBQVUsR0FBRyxFQUFFLENBQUE7SUFDZixTQUFTLENBQUs7SUFDZCxpQkFBaUIsQ0FBUztJQUMxQixXQUFXLEdBQVUsRUFBRSxDQUFBO0lBQ04sUUFBUSxDQUFV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LFdBQVc7UUFDaEIsT0FBUSxNQUFjLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQztJQUMzQyxDQUFDO0lBRU0sWUFBWSxDQUFDLE1BQU07UUFDeEIsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDO1FBQ2YsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLEtBQUssTUFBTSxDQUFDLGVBQWUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNuRSxHQUFHLEdBQUcsU0FBUyxDQUFDLGlCQUFpQixDQUFDO1FBQ3BDLENBQUM7YUFBTSxDQUFDO1lBQ04sR0FBRyxHQUFHLFNBQVMsQ0FBQyxvQkFBb0IsQ0FBQztRQUN2QyxDQUFDO1FBQ0QsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBRU0sYUFBYTtRQUNsQixPQUFRLE1BQWMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDO0lBQzFDLENBQUM7dUdBaG9CVSxXQUFXLDRDQW9CRixtQkFBbUI7MkdBcEI1QixXQUFXLGNBRlYsTUFBTTs7MkZBRVAsV0FBVztrQkFIdkIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQXFCYyxNQUFNOzJCQUFDLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SHR0cENsaWVudCwgSHR0cEhlYWRlcnN9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xyXG5pbXBvcnQge0luamVjdCwgSW5qZWN0YWJsZX0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHR5cGUge015TGliQ29uZmlnfSBmcm9tIFwiLi4vaW50ZXJmYWNlcy9zaGFyZWQuaW50ZXJmYWNlXCI7XHJcbmltcG9ydCB7Q29tbWVudHNEcm9wLCBGb3JtLCBIZWFkZXIsIEluYm94SXRlbSwgTWVzc2FnZXMsIE1ZX0xJQl9DT05GSUdfVE9LRU4sIFByb2ZpbGVJbmZvRHJvcCwgU2VjdGlvbiwgU2VjdGlvbkhlYWRlcn0gZnJvbSBcIi4uLy4uL3B1YmxpYy1hcGlcIjtcclxuaW1wb3J0ICogYXMgY29uc3RhbnRzIGZyb20gJy4uL2NvbnN0YW50cydcclxuaW1wb3J0IHtjYXRjaEVycm9yLCBmcm9tLCBPYnNlcnZhYmxlLCBzd2l0Y2hNYXAsIHRocm93RXJyb3J9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7bWFwfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcclxuaW1wb3J0IHNhdmVGb3JtSG9va3MgZnJvbSAnLi4vaG9va3Mvc2F2ZS1mb3JtJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiBcInJvb3RcIlxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29yZVNlcnZpY2Uge1xyXG4gIGFwaVVybDogc3RyaW5nID0gJydcclxuICBwcml2YXRlIGF1dGhUb2tlbjogc3RyaW5nO1xyXG4gIHByaXZhdGUgcmVmcmVzaFRva2VuOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBwcm9qZWN0Q29uZmlnOiBzdHJpbmc7XHJcbiAgcHVibGljIHVzZXJEYXRhOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBsb2NhbFVzZXI6IHt9O1xyXG4gIHB1YmxpYyBsb2dnZWRJblVzZXJEYXRhOiB7fTtcclxuICBjdXJyZW50QWN0b3I6IHN0cmluZ1xyXG4gIHByaXZhdGUgYXV0aG9yaXplZEVtYWlsITogc3RyaW5nO1xyXG4gIHByaXZhdGUgcmVxdWVzdGVyRW1haWwhOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSBjdXJyZW50U3VibWl0dGVyOiBhbnk7XHJcbiAgbGFuZ3VhZ2U6IHN0cmluZ1xyXG4gIGFjdGl2aXRpZXMgPSBbXVxyXG4gIGFwcHJvdmFsczogYW55XHJcbiAgaGlzdG9yeURhdGFMb2FkZWQ6IGJvb2xlYW5cclxuICBoaXN0b3J5RGF0YTogYW55W10gPSBbXVxyXG4gIHByaXZhdGUgcmVhZG9ubHkgaXNNb2JpbGU6IGJvb2xlYW47XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgaHR0cDogSHR0cENsaWVudCxcclxuICAgICAgICAgICAgICBASW5qZWN0KE1ZX0xJQl9DT05GSUdfVE9LRU4pIHByaXZhdGUgcmVhZG9ubHkgY29uZmlnOiBNeUxpYkNvbmZpZykge1xyXG4gICAgY29uc3QgbGFuZ3VhZ2UgPSAod2luZG93IGFzIGFueSk/LndtQ29uZmlnPy5sYW5ndWFnZSA/ICh3aW5kb3cgYXMgYW55KS53bUNvbmZpZy5sYW5ndWFnZSA6ICdlbic7XHJcbiAgICB0aGlzLmFwaVVybCA9IHRoaXMuY29uZmlnLnByb3h5U2VydmljZUJhc2VVcmwgKyBsYW5ndWFnZSArIHRoaXMuY29uZmlnLnByb3h5RnVsbEFkZHJlc3MgKyB0aGlzLmNvbmZpZy5wcm94eVNlcnZpY2VFeGVjdXRlO1xyXG4gICAgY29uc29sZS5sb2coJ0NvbmZpZzogJywgdGhpcy5jb25maWcpO1xyXG4gICAgdGhpcy5sb2NhbFVzZXIgPSB7XHJcbiAgICAgIFwiZm9ybVByZWZpeFwiOiBcIkNFUFwiLFxyXG4gICAgICBcImZvcm1JZFwiOiBcIkNFUDU1OTU0MzJcIixcclxuICAgICAgXCJpbmJveFVyaVwiOiBcIlxcL2dyb3VwXFwvaHViXFwvaW5ib3hcIixcclxuICAgICAgXCJiYXNlVXJsXCI6IFwiXFwvZ3JvdXBcXC9pLWdhdGVcXC93bS1icG1cXC9mb3Jtc1xcLy1cXC9wcm94eVwiLFxyXG4gICAgICBcInNob3dQcmludFwiOiB0cnVlLFxyXG4gICAgICBcImxhbmd1YWdlXCI6IFwiZW5cIixcclxuICAgICAgXCJpc01vYmlsZVwiOiB0cnVlLFxyXG4gICAgICBcIm91dGxvb2tcIjogZmFsc2UsXHJcbiAgICAgIFwibG9nZ2VkSW5Vc2VyRW1haWxcIjogXCJpYnJhaGltbWFhLmNAc3RjLmNvbS5zYVwiXHJcbiAgICB9XHJcbiAgICB0aGlzLnByb2plY3RDb25maWcgPSAodGhpcy5jb25maWcucHJvZHVjdGlvbikgPyAod2luZG93IGFzIGFueSlbJ3dtQ29uZmlnJ10gOiBidG9hKEpTT04uc3RyaW5naWZ5KHRoaXMubG9jYWxVc2VyKSk7XHJcbiAgICB0aGlzLnVzZXJEYXRhID0gdGhpcy5wcm9qZWN0Q29uZmlnO1xyXG4gICAgdGhpcy5sYW5ndWFnZSA9ICh3aW5kb3cgYXMgYW55KT8ud21Db25maWc/Lmxhbmd1YWdlID8gKHdpbmRvdyBhcyBhbnkpLndtQ29uZmlnLmxhbmd1YWdlIDogXCJlblwiO1xyXG4gICAgdGhpcy5pc01vYmlsZSA9IHRoaXMucHJvamVjdENvbmZpZz8uWydpc01vYmlsZSddO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldExvZ2dlZEluVXNlckRhdGEoKSB7XHJcbiAgICBsZXQgbG9nZ2VkSW5FbWFpbCA9IHRoaXMubG9nZ2VkSW5Vc2VySWQoKVxyXG4gICAgdGhpcy5lbXBsb3llZVByb2ZpbGUobG9nZ2VkSW5FbWFpbCkuc3Vic2NyaWJlKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMubG9nZ2VkSW5Vc2VyRGF0YSA9IHJlc3BvbnNlPy5bXCJVc2Vyc1wiXT8uWzBdXHJcbiAgICAgIGNvbnNvbGUubG9nKCdnZXRMb2dnZWRJblVzZXJEYXRhJywgcmVzcG9uc2UpXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGxvYWRGb3JtKCkge1xyXG4gICAgY29uc3QgYXV0aFVybCA9IHRoaXMuYnVpbGRBdXRoVXJsKCk7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChhdXRoVXJsLCB7b2JzZXJ2ZTogJ3Jlc3BvbnNlJ30pLnBpcGUoXHJcbiAgICAgIG1hcCgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBjb25zdCB0b2tlbkluZm9ybWF0aW9uID0gcmVzLmJvZHk7XHJcbiAgICAgICAgdGhpcy5hdXRoVG9rZW4gPSB0b2tlbkluZm9ybWF0aW9uLnRva2VuO1xyXG4gICAgICAgIHRoaXMuZ2V0TG9nZ2VkSW5Vc2VyRGF0YSgpO1xyXG4gICAgICAgIHRoaXMucmVmcmVzaFRva2VuID0gdG9rZW5JbmZvcm1hdGlvbi5yZWZyZXNoVG9rZW47XHJcbiAgICAgICAgY29uc3QgYm9keSA9IHRoaXMuYnVpbGRCb2R5KCk7XHJcbiAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuZ2V0UmVxdWVzdE9wdGlvbnMoKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5jYWxsUG9zdChib2R5LCBvcHRpb25zKTtcclxuICAgICAgfSksXHJcbiAgICAgIHN3aXRjaE1hcChwb3N0T2JzZXJ2YWJsZSA9PiBwb3N0T2JzZXJ2YWJsZSksXHJcbiAgICAgIGNhdGNoRXJyb3IoKGh0dHBFcnJvcjogYW55KSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoaHR0cEVycm9yKTtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGJ1aWxkQXV0aFVybCgpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgYmFzZVVybCA9IHRoaXMuY29uZmlnLnByb3h5U2VydmljZUJhc2VVcmw7XHJcbiAgICBjb25zdCBsYW5ndWFnZSA9ICh3aW5kb3cgYXMgYW55KT8ud21Db25maWc/Lmxhbmd1YWdlID8gKHdpbmRvdyBhcyBhbnkpLndtQ29uZmlnLmxhbmd1YWdlIDogJ2VuJztcclxuICAgIGNvbnN0IGZ1bGxBZGRyZXNzID0gdGhpcy5jb25maWcucHJveHlGdWxsQWRkcmVzcztcclxuICAgIGNvbnN0IGF1dGhQYXJ0ID0gdGhpcy5jb25maWcucHJveHlTZXJ2aWNlQXV0aG9yaXphdGlvbjtcclxuICAgIHJldHVybiBgJHtiYXNlVXJsfSR7bGFuZ3VhZ2V9JHtmdWxsQWRkcmVzc30ke2F1dGhQYXJ0fT90cz0keyhuZXcgRGF0ZSgpKS52YWx1ZU9mKCl9YDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYnVpbGRCb2R5KCk6IG9iamVjdCB7XHJcbiAgICBjb25zdCBiYXNlQm9keSA9IHtcclxuICAgICAgbWV0aG9kOiBjb25zdGFudHMuSFRUUF9NRVRIT0RfR0VULFxyXG4gICAgICBkZXN0aW5hdGlvbjogY29uc3RhbnRzLlRBUkdFVF9TRVJWRVJfV00sXHJcbiAgICAgIHNlcnZpY2VOYW1lOiBjb25zdGFudHMuU0VSVklDRV9OQU1FX1dNX0ZPUk0sXHJcbiAgICAgIGZvcm1OYW1lOiB0aGlzLmNvbmZpZy5mb3JtTmFtZSxcclxuICAgICAgZm9ybUlkOiBcIlwiLFxyXG4gICAgICAvLyBxdWVyeVBhcmFtZXRlcnM6IG51bGxcclxuICAgIH07XHJcbiAgICBpZiAoIXRoaXMuY29uZmlnLmZvcm1JZCkge1xyXG4gICAgICBkZWxldGUgYmFzZUJvZHkuZm9ybUlkO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgYmFzZUJvZHkuZm9ybUlkID0gdGhpcy5jb25maWcuZm9ybUlkO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGJhc2VCb2R5O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGVtcGxveWVlUHJvZmlsZShlbXBsb3llZUVtYWlsOiBhbnkpIHtcclxuICAgIGxldCBib2R5ID0ge1xyXG4gICAgICBtZXRob2Q6IGNvbnN0YW50cy5IVFRQX01FVEhPRF9HRVQsXHJcbiAgICAgIGZvcm1OYW1lOiB0aGlzLmNvbmZpZy5mb3JtTmFtZSxcclxuICAgICAgZGVzdGluYXRpb246IGNvbnN0YW50cy5UQVJHRVRfU0VSVkVSX0RQLFxyXG4gICAgICBzZXJ2aWNlTmFtZTogY29uc3RhbnRzLlNFUlZJQ0VfTkFNRV9EUF9TRUFSQ0hfRU1QTE9ZRUUsXHJcbiAgICAgIHBhcmFtZXRlcnM6IHtcclxuICAgICAgICBxOiBlbXBsb3llZUVtYWlsXHJcbiAgICAgIH1cclxuICAgIH07XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QodGhpcy5hcGlVcmwsIGJvZHksIHtcclxuICAgICAgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHtcclxuICAgICAgICBhdXRoVG9rZW46IHRoaXMuYXV0aFRva2VuLFxyXG4gICAgICAgIFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkXCJcclxuICAgICAgfSksXHJcbiAgICAgIG9ic2VydmU6IFwiYm9keVwiXHJcbiAgICB9KS5waXBlKFxyXG4gICAgICBtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICByZXR1cm4gcmVzcG9uc2VcclxuICAgICAgfSlcclxuICAgICAgLCBjYXRjaEVycm9yKChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycilcclxuICAgICAgfSkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRSZXF1ZXN0T3B0aW9ucygpIHtcclxuICAgIGNvbnN0IGlzTW9iaWxlID0gL2lQaG9uZXxpUGFkfGlQb2R8QW5kcm9pZC9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7XHJcbiAgICBjb25zdCB0cyA9IChuZXcgRGF0ZSgpKS52YWx1ZU9mKCkudG9TdHJpbmcoKTtcclxuICAgIGNvbnN0IHVzZXJBZ2VudCA9IG5hdmlnYXRvci51c2VyQWdlbnQ7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoe1xyXG4gICAgICAgIGF1dGhUb2tlbjogdGhpcy5hdXRoVG9rZW4sXHJcbiAgICAgICAgJ0NvbnRlbnQtVHlwZSc6IGNvbnN0YW50cy5IRUFERVJfQ09OVEVOVF9UWVBFX0ZPUk0sXHJcbiAgICAgICAgJ2ZlSGVhZGVyJzogJ3tcImlzTW9iaWxlXCI6JyArIHRoaXMuaXNNb2JpbGUgKyAnLCBcIixhSXNNb2JpbGVcIjonICsgaXNNb2JpbGUgKyAnLHRzOicgKyB0cyArICcsbG9nZ2VkSW5Vc2VyRW1haWw6JyArIHRoaXMubG9nZ2VkSW5Vc2VySWQoKSArICcsZm9ybU5hbWU6JyArIHRoaXMuY29uZmlnLmZvcm1OYW1lICsgJyx1c2VyLWFnZW50OicgKyB1c2VyQWdlbnQgKyAnfSdcclxuICAgICAgfSksXHJcbiAgICAgIG9ic2VydmU6ICdib2R5J1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXREcmFmdElkKHZhbCkge1xyXG4gICAgcmV0dXJuIHZhbC50b1VwcGVyQ2FzZSgpLnN0YXJ0c1dpdGgoJ0RSQUZUJyk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc3VibWl0Rm9ybSguLi5hcmdzKSB7XHJcbiAgICBjb25zdCBbc2VjdGlvbiwgYWN0aW9uXSA9IGFyZ3M7XHJcbiAgICBjb25zdCBtZXRob2QgPSB0aGlzLmdldEh0dHBNZXRob2QoKTtcclxuICAgIGxldCBzZWN0aW9uSWQgPSB0aGlzLmJlZm9yZVRyYW5zcGlsZVNlY3Rpb25XcmFwcGVyKHNlY3Rpb24pLmlkO1xyXG4gICAgbGV0IHNlcnZpY2VOYW1lID0gdGhpcy5nZXRTZXJ2aWNlTmFtZShhY3Rpb24pO1xyXG4gICAgbGV0IGZvcm1OYW1lID0gdGhpcy5nZXRGb3JtTmFtZShhY3Rpb24pO1xyXG4gICAgbGV0IGJvZHkgPSB0aGlzLmdldEJvZHlPYmplY3QobWV0aG9kLCBzZXJ2aWNlTmFtZSwgYWN0aW9uLCBmb3JtTmFtZSwgdGhpcy5wb3B1bGF0ZWRQYXlsb2FkKHNlY3Rpb25JZCwgc2VjdGlvbiksIHRoaXMuY29uZmlnLmZvcm1JZCk7XHJcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5nZXRSZXF1ZXN0T3B0aW9ucygpO1xyXG5cclxuICAgIHJldHVybiB0aGlzLnN1Ym1pdChib2R5LCBvcHRpb25zKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0SHR0cE1ldGhvZCgpIHtcclxuICAgIHJldHVybiAodGhpcy5jb25maWcuZm9ybUlkICYmICF0aGlzLmdldERyYWZ0SWQodGhpcy5jb25maWcuZm9ybUlkKSkgPyBjb25zdGFudHMuSFRUUF9NRVRIT0RfUFVUIDogY29uc3RhbnRzLkhUVFBfTUVUSE9EX1BPU1Q7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGJlZm9yZVRyYW5zcGlsZVNlY3Rpb25XcmFwcGVyKHNlY3Rpb24pIHtcclxuICAgIHJldHVybiBzYXZlRm9ybUhvb2tzLmJlZm9yZVRyYW5zcGlsZVNlY3Rpb24gPyBzYXZlRm9ybUhvb2tzLmJlZm9yZVRyYW5zcGlsZVNlY3Rpb24oc2VjdGlvbikgOiBzZWN0aW9uO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRTZXJ2aWNlTmFtZShhY3Rpb24pIHtcclxuICAgIGlmIChhY3Rpb24gPT09IGNvbnN0YW50cy5XTV9BQ1RJT05fU0FWRV9DSEFOR0VTKSB7XHJcbiAgICAgIHJldHVybiBjb25zdGFudHMuU0VSVklDRV9OQU1FX1dNX0RSQUZUX0ZPUk1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBjb25zdGFudHMuU0VSVklDRV9OQU1FX1dNX0ZPUk1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0Rm9ybU5hbWUoYWN0aW9uKSB7XHJcbiAgICBpZiAoYWN0aW9uID09PSBjb25zdGFudHMuV01fQUNUSU9OX1NBVkVfQ0hBTkdFUykge1xyXG4gICAgICByZXR1cm4gJ2NvbW1vbic7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gdGhpcy5jb25maWcuZm9ybU5hbWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHBvcHVsYXRlZFBheWxvYWQoc2VjdGlvbklkLCBzZWN0aW9uKSB7XHJcbiAgICBsZXQgcGF5bG9hZDtcclxuICAgIGlmIChzZWN0aW9uSWQgPT09IGNvbnN0YW50cy5TRUNUSU9OX0lEX1JFUVVFU1RfREVUQUlMUykge1xyXG4gICAgICBwYXlsb2FkID0ge3JlcXVlc3Q6IHtkZXRhaWxzOiBzZWN0aW9uLmJvZHkuZGV0YWlsc319O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcGF5bG9hZCA9IHt3b3JrZmxvd1N0ZXBzOiB7fX07XHJcbiAgICAgIHBheWxvYWQud29ya2Zsb3dTdGVwcy5kZXRhaWxzID0gc2VjdGlvbi5ib2R5LmRldGFpbHM7XHJcbiAgICAgIHBheWxvYWQud29ya2Zsb3dTdGVwcy5hY3RvciA9IHRoaXMuY3VycmVudFN1Ym1pdHRlci5hY3RvcjtcclxuICAgICAgcGF5bG9hZC53b3JrZmxvd1N0ZXBzLmFjdG9yLmVtYWlsID0gdGhpcy5jdXJyZW50QWN0b3I7XHJcbiAgICAgIHBheWxvYWQud29ya2Zsb3dTdGVwcy5zdGF0dXMgPSBjb25zdGFudHMuU0VDVElPTl9TVEFUVVNfUEVORElORztcclxuICAgIH1cclxuICAgIHJldHVybiBwYXlsb2FkO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRCb2R5T2JqZWN0KG1ldGhvZCwgc2VydmljZU5hbWUsIGFjdGlvbiwgZm9ybU5hbWUsIHBheWxvYWQsIGZvcm1JZCkge1xyXG4gICAgbGV0IGJvZHkgPSB7XHJcbiAgICAgIG1ldGhvZDogbWV0aG9kLFxyXG4gICAgICBkZXN0aW5hdGlvbjogY29uc3RhbnRzLlRBUkdFVF9TRVJWRVJfV00sXHJcbiAgICAgIHNlcnZpY2VOYW1lOiBzZXJ2aWNlTmFtZSxcclxuICAgICAgcGFyYW1ldGVyczoge1xyXG4gICAgICAgIGFjdGlvbjogYWN0aW9uXHJcbiAgICAgIH0sXHJcbiAgICAgIGZvcm1OYW1lOiBmb3JtTmFtZSxcclxuICAgICAgYm9keTogcGF5bG9hZCxcclxuICAgICAgZm9ybUlkOiBmb3JtSWQsXHJcbiAgICAgIHF1ZXJ5UGFyYW1ldGVyczoge30sXHJcbiAgICAgIC8vIHBheWxvYWRcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5jb25maWcuZm9ybUlkKSB7XHJcbiAgICAgIGJvZHkuZm9ybUlkID0gdGhpcy5jb25maWcuZm9ybUlkO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghdGhpcy5hdXRob3JpemVkRW1haWwgfHwgIXRoaXMuYXV0aG9yaXplZEVtYWlsLmxlbmd0aCB8fCB0aGlzLmF1dGhvcml6ZWRFbWFpbCA9PT0gdGhpcy5yZXF1ZXN0ZXJFbWFpbCkge1xyXG4gICAgICBkZWxldGUgYm9keS5xdWVyeVBhcmFtZXRlcnM7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHNhdmVGb3JtSG9va3MuYmVmb3JlU2VuZFBheWxvYWQpIHtcclxuICAgICAgYm9keS5ib2R5LnBheWxvYWQgPSBzYXZlRm9ybUhvb2tzLmJlZm9yZVNlbmRQYXlsb2FkKGJvZHkuYm9keS5wYXlsb2FkKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gYm9keTtcclxuICB9XHJcblxyXG5cclxuICBwcml2YXRlIGNhbGxQb3N0KGJvZHksIG9wdGlvbnMpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgY29uc3QgbGFuZ3VhZ2UgPSAod2luZG93IGFzIGFueSk/LndtQ29uZmlnPy5sYW5ndWFnZSA/ICh3aW5kb3cgYXMgYW55KS53bUNvbmZpZy5sYW5ndWFnZSA6IFwiZW5cIjtcclxuICAgIGxldCBhcGlVcmwgPSB0aGlzLmNvbmZpZy5wcm94eVNlcnZpY2VCYXNlVXJsICsgbGFuZ3VhZ2UgKyB0aGlzLmNvbmZpZy5wcm94eUZ1bGxBZGRyZXNzICsgdGhpcy5jb25maWcucHJveHlTZXJ2aWNlRXhlY3V0ZTtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYXBpVXJsLCBlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkoYm9keSkpLCBvcHRpb25zKS5waXBlKFxyXG4gICAgICBtYXAoKHJlc3BvbnNlT2JqZWN0OiBhbnkpID0+IHRoaXMuc3VjY2Vzc1dtKHJlc3BvbnNlT2JqZWN0KSksXHJcbiAgICAgIGNhdGNoRXJyb3IoKGh0dHBFcnJvcjogYW55KSA9PiB0aHJvd0Vycm9yKGh0dHBFcnJvcikpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdWJtaXQoYm9keTogYW55LCBvcHRpb25zOiBhbnkpIHtcclxuICAgIGNvbnN0IGxhbmd1YWdlID0gKHdpbmRvdyBhcyBhbnkpPy53bUNvbmZpZz8ubGFuZ3VhZ2UgPyAod2luZG93IGFzIGFueSkud21Db25maWcubGFuZ3VhZ2UgOiBcImVuXCI7XHJcbiAgICBjb25zdCBhcGlVcmwgPSB0aGlzLmNvbmZpZy5wcm94eVNlcnZpY2VCYXNlVXJsICsgbGFuZ3VhZ2UgKyB0aGlzLmNvbmZpZy5wcm94eUZ1bGxBZGRyZXNzICsgdGhpcy5jb25maWcucHJveHlTZXJ2aWNlRXhlY3V0ZTtcclxuXHJcbiAgICByZXR1cm4gZnJvbShcclxuICAgICAgdGhpcy5odHRwLnBvc3QoYXBpVXJsLCBlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkoYm9keSkpLCBvcHRpb25zKS50b1Byb21pc2UoKS50aGVuKFxyXG4gICAgICAgIChyZXNwb25zZU9iamVjdDogYW55KSA9PiB7XHJcbiAgICAgICAgICBsZXQgZm9ybVJlc3BvbnNlID0gcmVzcG9uc2VPYmplY3QuZGF0YS5mb3JtO1xyXG4gICAgICAgICAgaWYgKHNhdmVGb3JtSG9va3MuYWZ0ZXJTZW5kUGF5bG9hZCkge1xyXG4gICAgICAgICAgICBmb3JtUmVzcG9uc2UgPSBzYXZlRm9ybUhvb2tzLmFmdGVyU2VuZFBheWxvYWQoZm9ybVJlc3BvbnNlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGxldCByZXN1bHQgPSB7XHJcbiAgICAgICAgICAgIGlkOiBudWxsLFxyXG4gICAgICAgICAgICBzdGF0dXM6IG51bGwsXHJcbiAgICAgICAgICAgIG5leHRBcHByb3Zlcjoge1xyXG4gICAgICAgICAgICAgIG5hbWU6IG51bGwsXHJcbiAgICAgICAgICAgICAgZW1haWw6IG51bGwsXHJcbiAgICAgICAgICAgICAgcm9sZTogbnVsbFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBjcmVhdGlvbkRhdGU6IG51bGxcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgICByZXN1bHQuaWQgPSBmb3JtUmVzcG9uc2UuZm9ybUlkO1xyXG4gICAgICAgICAgcmVzdWx0LnN0YXR1cyA9IGZvcm1SZXNwb25zZVsnZm9ybVN0YXR1cyddO1xyXG4gICAgICAgICAgaWYgKGZvcm1SZXNwb25zZS5jdXJyZW50QWN0b3IpIHtcclxuICAgICAgICAgICAgcmVzdWx0Lm5leHRBcHByb3ZlciA9IHtcclxuICAgICAgICAgICAgICBuYW1lOiBmb3JtUmVzcG9uc2UuY3VycmVudEFjdG9yLm5hbWUsXHJcbiAgICAgICAgICAgICAgZW1haWw6IGZvcm1SZXNwb25zZS5jdXJyZW50QWN0b3IuZW1haWwsXHJcbiAgICAgICAgICAgICAgcm9sZTogZm9ybVJlc3BvbnNlWydmb3JtU3RlcCddXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHJlc3VsdC5jcmVhdGlvbkRhdGUgPSBmb3JtUmVzcG9uc2UuY3JlYXRpb25EYXRlO1xyXG4gICAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgICAgICB9LCAoaHR0cEVycm9yOiBhbnkpID0+IHtcclxuICAgICAgICAgIHRocm93IGh0dHBFcnJvcjtcclxuICAgICAgICB9XHJcbiAgICAgIClcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN1Y2Nlc3NXbSguLi5hcmdzKSB7XHJcbiAgICBsZXQgW3BheWxvYWRdID0gYXJncztcclxuICAgIGxldCB3YXNTZW5kQmFjayA9IGZhbHNlO1xyXG4gICAgbGV0IHJlc3VsdCA9IG5ldyBGb3JtKFxyXG4gICAgICBjb25zdGFudHMuTk9fVkFMVUUsXHJcbiAgICAgIGNvbnN0YW50cy5OT19WQUxVRSxcclxuICAgICAgY29uc3RhbnRzLk5PX1ZBTFVFLFxyXG4gICAgICBjb25zdGFudHMuTk9fVkFMVUUsXHJcbiAgICAgIGNvbnN0YW50cy5OT19WQUxVRSxcclxuICAgICAgY29uc3RhbnRzLk5PX1ZBTFVFLFxyXG4gICAgICBjb25zdGFudHMuTk9fVkFMVUVcclxuICAgICk7XHJcbiAgICB0aGlzLnJlcXVlc3RlckVtYWlsID0gcGF5bG9hZC5kYXRhWydyZXF1ZXN0ZXInXS5lbXBsb3llZUVtYWlsO1xyXG4gICAgdGhpcy5hdXRob3JpemVkRW1haWwgPSBwYXlsb2FkLmRhdGFbJ3JlcXVlc3RlciddLmF1dGhvcml6ZWRFbWFpbDtcclxuICAgIC8qIEdlbmVyYXRlIEhlYWRlciBPYmplY3QgKi9cclxuICAgIGxldCBwYXlsb2FkRm9ybURldGFpbHMgPSBwYXlsb2FkLmRhdGEuZm9ybTtcclxuICAgIGxldCBpc1JlYWRPbmx5ID0gKHBheWxvYWRGb3JtRGV0YWlscy5yZWFkT25seS50b1VwcGVyQ2FzZSgpID09PSBjb25zdGFudHMuVFJVRV9TVFJJTkcgPyBjb25zdGFudHMuVFJVRV9CT09MIDogKHBheWxvYWRGb3JtRGV0YWlscy5yZWFkT25seS50b1VwcGVyQ2FzZSgpID09PSBjb25zdGFudHMuRkFMU0VfU1RSSU5HID8gY29uc3RhbnRzLkZBTFNFX0JPT0wgOiBjb25zdGFudHMuTk9fVkFMVUUpKVxyXG4gICAgcmVzdWx0LmhlYWRlciA9IG5ldyBIZWFkZXIoXHJcbiAgICAgIHBheWxvYWQuZGF0YVsncmVxdWVzdGVyJ10uZnVsbE5hbWUsXHJcbiAgICAgIGNvbnN0YW50cy5JR0FURV9TVEFUSUNfQVNTRVRfUFJPRklMRV9QSE9UT19VUkwgKyBwYXlsb2FkLmRhdGFbJ3JlcXVlc3RlciddLmVtcGxveWVlRW1haWwsXHJcbiAgICAgIChwYXlsb2FkRm9ybURldGFpbHMuZm9ybUlkID8gcGF5bG9hZEZvcm1EZXRhaWxzLmZvcm1JZCA6IGNvbnN0YW50cy5ET05UX1NIT1cpLFxyXG4gICAgICAocGF5bG9hZEZvcm1EZXRhaWxzLmNyZWF0aW9uRGF0ZSA/IHBheWxvYWRGb3JtRGV0YWlscy5jcmVhdGlvbkRhdGUgOiBjb25zdGFudHMuRE9OVF9TSE9XKSxcclxuICAgICAgcGF5bG9hZEZvcm1EZXRhaWxzWydmb3JtU3RhdHVzJ10sXHJcbiAgICAgIHBheWxvYWRGb3JtRGV0YWlscy5kZXRhaWxzXHJcbiAgICApO1xyXG4gICAgLyogR2VuZXJhdGUgUHJvZmlsZSBJbmZvcm1hdGlvbiBPYmplY3QgKi9cclxuICAgIGxldCBwYXlsb2FkUHJvZmlsZUluZm8gPSBwYXlsb2FkLmRhdGFbJ3JlcXVlc3RlciddO1xyXG4gICAgcmVzdWx0LnByb2ZpbGVJbmZvRHJvcCA9IG5ldyBQcm9maWxlSW5mb0Ryb3AoXHJcbiAgICAgIChwYXlsb2FkUHJvZmlsZUluZm9bJ29uQmVoYWxmQXV0aG9yaXplZCddID8gSlNPTi5wYXJzZShwYXlsb2FkUHJvZmlsZUluZm9bJ29uQmVoYWxmQXV0aG9yaXplZCddKSA6IG51bGwpLFxyXG4gICAgICBwYXlsb2FkUHJvZmlsZUluZm9bJ2VtcGxveWVlSWQnXSxcclxuICAgICAgcGF5bG9hZFByb2ZpbGVJbmZvLmVtcGxveWVlRW1haWwsXHJcbiAgICAgIHBheWxvYWRQcm9maWxlSW5mby5mdWxsTmFtZSxcclxuICAgICAgcGF5bG9hZFByb2ZpbGVJbmZvLmdlbmVyYWxEZXBhcnRtZW50TmFtZSxcclxuICAgICAgcGF5bG9hZFByb2ZpbGVJbmZvLmpvYlBvc2l0aW9uLFxyXG4gICAgICBwYXlsb2FkUHJvZmlsZUluZm9bJ3NlY3Rvck5hbWUnXSxcclxuICAgICAgcGF5bG9hZFByb2ZpbGVJbmZvLmRlcGFydG1lbnROYW1lLFxyXG4gICAgICBwYXlsb2FkUHJvZmlsZUluZm8uZ2VuZXJhbERlcGFydG1lbnRDb2RlLFxyXG4gICAgICBwYXlsb2FkUHJvZmlsZUluZm9bJ2h1bWFuUmVzb3VyY2VMb2NhdGlvbiddLFxyXG4gICAgICBwYXlsb2FkUHJvZmlsZUluZm8ubmF0aW9uYWxpdHksXHJcbiAgICAgIHBheWxvYWRQcm9maWxlSW5mby5idXNpbmVzc1Bob25lLFxyXG4gICAgICBwYXlsb2FkUHJvZmlsZUluZm9bJ2RpcmVjdE1hbmFnZXJOYW1lJ10sXHJcbiAgICAgIHBheWxvYWRQcm9maWxlSW5mby5zZW5pb3JTZWN0b3JOYW1lXHJcbiAgICApO1xyXG4gICAgcmVzdWx0LnNlY3Rpb25zID0gW107XHJcbiAgICBsZXQgcmVxdWVzdERldGFpbHNIYXNDb21tZW50ID0gZmFsc2U7XHJcbiAgICBpZiAocGF5bG9hZC5kYXRhLnJlcXVlc3QuZGV0YWlscy5jb21tZW50KSB7XHJcbiAgICAgIHJlcXVlc3REZXRhaWxzSGFzQ29tbWVudCA9IHRydWU7XHJcbiAgICB9XHJcbiAgICByZXN1bHQuc2VjdGlvbnMucHVzaChcclxuICAgICAgbmV3IFNlY3Rpb24oXHJcbiAgICAgICAgY29uc3RhbnRzLlNFQ1RJT05fSURfUkVRVUVTVF9ERVRBSUxTLFxyXG4gICAgICAgIG5ldyBTZWN0aW9uSGVhZGVyKGNvbnN0YW50cy5ET05UX1NIT1csIGNvbnN0YW50cy5ET05UX1NIT1csIGNvbnN0YW50cy5ET05UX1NIT1csIGNvbnN0YW50cy5ET05UX1NIT1csIGNvbnN0YW50cy5ET05UX1NIT1csIGNvbnN0YW50cy5ET05UX1NIT1csIGNvbnN0YW50cy5ET05UX1NIT1csIHJlcXVlc3REZXRhaWxzSGFzQ29tbWVudCwgKHBheWxvYWQuZGF0YVsnd29ya2Zsb3dTdGVwcyddID8gY29uc3RhbnRzLlJFQURfT05MWSA6IGlzUmVhZE9ubHkpKSxcclxuICAgICAgICBwYXlsb2FkLmRhdGEucmVxdWVzdFxyXG4gICAgICApXHJcbiAgICApO1xyXG5cclxuICAgIGlmIChyZXN1bHQuaGVhZGVyLmZvcm1JZCkge1xyXG4gICAgICByZXN1bHQuY29tbWVudHNEcm9wID0gKCFyZXN1bHQuY29tbWVudHNEcm9wID8gW10gOiByZXN1bHQuY29tbWVudHNEcm9wKTtcclxuICAgICAgdGhpcy5sb2FkSGlzdG9yeShyZXN1bHQuaGVhZGVyLmZvcm1JZCkuc3Vic2NyaWJlKFxyXG4gICAgICAgIChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzcG9uc2UpIHtcclxuICAgICAgICAgICAgcmVzcG9uc2UuaXRlbXMuZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKGl0ZW0uc2VxdWVuY2VOdW1iZXIgIT09ICcwJyAmJiBpdGVtLnByb2Nlc3NlZEJ5KSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBuYW1lID0gaXRlbS5wcm9jZXNzZWRCeVsnZmlyc3ROYW1lJ10gKyAnICcgKyBpdGVtLnByb2Nlc3NlZEJ5WydzZWNvbmRNaWRkbGVOYW1lJ10gKyAnICcgKyBpdGVtLnByb2Nlc3NlZEJ5WydmYW1pbHlOYW1lJ107XHJcbiAgICAgICAgICAgICAgICByZXN1bHQuY29tbWVudHNEcm9wLnB1c2gobmV3IENvbW1lbnRzRHJvcChcclxuICAgICAgICAgICAgICAgICAgY29uc3RhbnRzLklHQVRFX1NUQVRJQ19BU1NFVF9QUk9GSUxFX1BIT1RPX1VSTCArIGl0ZW0ucHJvY2Vzc2VkQnkuZW1haWwsXHJcbiAgICAgICAgICAgICAgICAgIG5hbWUsXHJcbiAgICAgICAgICAgICAgICAgIGl0ZW0uY29tbWVudHMsXHJcbiAgICAgICAgICAgICAgICAgIGl0ZW1bJ21vZGlmaWVkRGF0ZSddLFxyXG4gICAgICAgICAgICAgICAgICBpdGVtLmF0dGFjaG1lbnRzLFxyXG4gICAgICAgICAgICAgICAgICBpdGVtLnByb2Nlc3NlZEJ5LmpvYlxyXG4gICAgICAgICAgICAgICAgKSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICApO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBjb25zdCBpbmJveFR5cGUgPSB0aGlzLmdldEluYm94VHlwZShyZXN1bHQpO1xyXG4gICAgaWYgKHJlc3VsdC5oZWFkZXIuZm9ybUlkICYmICghdGhpcy5pc09wZW5PbkluYm94KCkpKSB7XHJcbiAgICAgIHRoaXMuZ2V0SW5ib3hJdGVtKHJlc3VsdC5oZWFkZXIuZm9ybUlkLCBpbmJveFR5cGUpLnN1YnNjcmliZShcclxuICAgICAgICAocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlc3BvbnNlKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSByZXNwb25zZS5pdGVtO1xyXG4gICAgICAgICAgICByZXN1bHQuaW5ib3hJdGVtID0gbmV3IEluYm94SXRlbShcclxuICAgICAgICAgICAgICBpdGVtWydmbGFnZ2luZyddLmZsYWdQcmlvcml0eSxcclxuICAgICAgICAgICAgICBpdGVtWydmbGFnZ2luZyddWydpc0ZsYWdnZWQnXSxcclxuICAgICAgICAgICAgICBpdGVtLmZlZWRiYWNrWydjYW5SZXF1ZXN0RmVlZGJhY2snXSxcclxuICAgICAgICAgICAgICBpdGVtLmZlZWRiYWNrWydoYXNGZWVkYmFjayddLFxyXG4gICAgICAgICAgICAgIGl0ZW0uZmVlZGJhY2tbJ2lzUGVuZGluZyddLFxyXG4gICAgICAgICAgICAgIGl0ZW0uZmVlZGJhY2tbJ2lzUmVxdWVzdGVkJ10sXHJcbiAgICAgICAgICAgICAgaXRlbS5mZWVkYmFja1snaXNSZXNwb25kZWQnXVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IHBheWxvYWRXb3JrZmxvd1N0ZXBzID0gcGF5bG9hZC5kYXRhLndvcmtmbG93U3RlcHM7XHJcbiAgICBpZiAocGF5bG9hZFdvcmtmbG93U3RlcHMgJiYgcGF5bG9hZFdvcmtmbG93U3RlcHMuY29uc3RydWN0b3IgPT09IEFycmF5ICYmIHBheWxvYWRXb3JrZmxvd1N0ZXBzLmxlbmd0aCA+IDApIHtcclxuICAgICAgcGF5bG9hZFdvcmtmbG93U3RlcHMuZm9yRWFjaCgoc3RlcCwgaW5kZXgpID0+IHtcclxuICAgICAgICBsZXQgY3VycmVudElzUmVxdWVzdGVyU2VuZEJhY2sgPSBKU09OLnN0cmluZ2lmeShzdGVwLmRldGFpbHMpID09PSBKU09OLnN0cmluZ2lmeSh7fSk7XHJcbiAgICAgICAgbGV0IGhhc0NvbW1lbnRzID0gKCFjdXJyZW50SXNSZXF1ZXN0ZXJTZW5kQmFjayAmJiAoc3RlcC5kZXRhaWxzLmNvbW1lbnQgfHwgc3RlcC5jb21tZW50KSA/IGNvbnN0YW50cy5IQVNfQ09NTUVOVFMgOiBjb25zdGFudHMuTk9fQ09NTUVOVFMpO1xyXG4gICAgICAgIGxldCBjdXJyZW50QWN0b3IgPSAoc3RlcC5hY3Rvci5lbWFpbCA9PT0gc3RlcC5hY3Rvci5yZWNpcGllbnQuZW1haWwgPyBzdGVwLmFjdG9yLnJlY2lwaWVudCA6IChzdGVwLmFjdG9yLmRlbGVnYXRlID8gc3RlcC5hY3Rvci5kZWxlZ2F0ZSA6IG51bGwpKVxyXG4gICAgICAgIGlmICh3YXNTZW5kQmFjayAmJiBzdGVwLmFjdG9yLnJlY2lwaWVudC5yb2xlID09PSAnUkVRVUVTVEVSJykge1xyXG4gICAgICAgICAgY29uc29sZS5sb2coXCJ3YXNTZW5kQmFjayAmJiBSRVFVRVNURVJcIilcclxuICAgICAgICAgIHJlc3VsdC5zZWN0aW9ucyA9IFtuZXcgU2VjdGlvbihcclxuICAgICAgICAgICAgY29uc3RhbnRzLlNFQ1RJT05fSURfUkVRVUVTVF9ERVRBSUxTLFxyXG4gICAgICAgICAgICBuZXcgU2VjdGlvbkhlYWRlcihcclxuICAgICAgICAgICAgICBjb25zdGFudHMuRE9OVF9TSE9XLFxyXG4gICAgICAgICAgICAgIGNvbnN0YW50cy5ET05UX1NIT1csXHJcbiAgICAgICAgICAgICAgY29uc3RhbnRzLkRPTlRfU0hPVyxcclxuICAgICAgICAgICAgICBjb25zdGFudHMuRE9OVF9TSE9XLFxyXG4gICAgICAgICAgICAgIGNvbnN0YW50cy5ET05UX1NIT1csXHJcbiAgICAgICAgICAgICAgY29uc3RhbnRzLkRPTlRfU0hPVyxcclxuICAgICAgICAgICAgICBjb25zdGFudHMuRE9OVF9TSE9XLFxyXG4gICAgICAgICAgICAgIHJlcXVlc3REZXRhaWxzSGFzQ29tbWVudCxcclxuICAgICAgICAgICAgICAocGF5bG9hZC5kYXRhLndvcmtmbG93U3RlcHMgPyBjb25zdGFudHMuUkVBRF9PTkxZIDogaXNSZWFkT25seSlcclxuICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgcGF5bG9hZC5kYXRhLnJlcXVlc3RcclxuICAgICAgICAgICldXHJcbiAgICAgICAgfSBlbHNlIGlmICh3YXNTZW5kQmFjaykge1xyXG4gICAgICAgICAgY29uc29sZS5sb2coXCJQb3BcIilcclxuICAgICAgICAgIGlmIChyZXN1bHQuc2VjdGlvbnMubGVuZ3RoID4gMSkge1xyXG4gICAgICAgICAgICByZXN1bHQuc2VjdGlvbnMucG9wKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB3YXNTZW5kQmFjayA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuXHJcblxyXG4gICAgICAgIGlmIChzdGVwLmRldGFpbHMuZGVjaXNpb24gJiYgc3RlcC5kZXRhaWxzLmRlY2lzaW9uLmtleSA9PT0gY29uc3RhbnRzLkZPUk1fU1RBVFVTX1NFTkRfQkFDSykge1xyXG4gICAgICAgICAgd2FzU2VuZEJhY2sgPSB0cnVlO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoSlNPTi5zdHJpbmdpZnkoc3RlcC5kZXRhaWxzKSAhPT0gSlNPTi5zdHJpbmdpZnkoe30pKSB7XHJcbiAgICAgICAgICByZXN1bHQuc2VjdGlvbnMucHVzaChcclxuICAgICAgICAgICAgbmV3IFNlY3Rpb24oXHJcbiAgICAgICAgICAgICAgc3RlcC5hY3Rvci5yZWNpcGllbnQucm9sZS50b0xvd2VyQ2FzZSgpICsgY29uc3RhbnRzLlNFQ1RJT05fSURfQVBQUk9WQUxfUEFSVElBTF9OQU1FLFxyXG4gICAgICAgICAgICAgIG5ldyBTZWN0aW9uSGVhZGVyKFxyXG4gICAgICAgICAgICAgICAgKGN1cnJlbnRBY3RvciA/IHRoaXMuZ2V0U2hvcnROYW1lKGN1cnJlbnRBY3Rvci5uYW1lKSA6IFwiXCIpLnRvU3RyaW5nKCksXHJcbiAgICAgICAgICAgICAgICBzdGVwLmRhdGUsXHJcbiAgICAgICAgICAgICAgICB0aGlzLmdldFNob3J0TmFtZShzdGVwLmFjdG9yLnJlY2lwaWVudC5uYW1lKS50b1N0cmluZygpLFxyXG4gICAgICAgICAgICAgICAgY29uc3RhbnRzLklHQVRFX1NUQVRJQ19BU1NFVF9QUk9GSUxFX1BIT1RPX1VSTCArIHN0ZXAuYWN0b3IucmVjaXBpZW50LmVtYWlsLFxyXG4gICAgICAgICAgICAgICAgKHN0ZXAuYWN0b3IuZGVsZWdhdGU/Lm5hbWUgPyB0aGlzLmdldFNob3J0TmFtZShzdGVwLmFjdG9yLmRlbGVnYXRlLm5hbWUpIDogXCJcIikudG9TdHJpbmcoKSxcclxuICAgICAgICAgICAgICAgIChzdGVwLmFjdG9yLmRlbGVnYXRlPy5lbWFpbCA/IGNvbnN0YW50cy5JR0FURV9TVEFUSUNfQVNTRVRfUFJPRklMRV9QSE9UT19VUkwgKyBzdGVwLmFjdG9yLmRlbGVnYXRlLmVtYWlsIDogXCJcIiksXHJcbiAgICAgICAgICAgICAgICBzdGVwLmFjdG9yLnN0YXR1cyxcclxuICAgICAgICAgICAgICAgIGhhc0NvbW1lbnRzLFxyXG4gICAgICAgICAgICAgICAgKGluZGV4IDwgcGF5bG9hZFdvcmtmbG93U3RlcHMubGVuZ3RoIC0gMSA/IGNvbnN0YW50cy5SRUFEX09OTFkgOiBpc1JlYWRPbmx5KVxyXG4gICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgICAge2RldGFpbHM6IHN0ZXAuZGV0YWlscywgcHJvY2Vzc2luZ0RhdGU6IHN0ZXAuZGF0ZX1cclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIHRoaXMuY3VycmVudFN1Ym1pdHRlciA9IHthY3Rvcjogc3RlcC5hY3RvciwgcmVjaXBpZW50OiBzdGVwLnJlY2lwaWVudCwgZGVsZWdhdGU6IHN0ZXAuYWN0b3IuZGVsZWdhdGV9O1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICAvKiBDcmVhdGUgTG92IFNlY3Rpb25zICovXHJcbiAgICByZXN1bHQubG92cyA9IChwYXlsb2FkPy5tZXRhPy5sb3ZzID8gcGF5bG9hZC5tZXRhLmxvdnMgOiBudWxsKTtcclxuXHJcbiAgICBpZiAocGF5bG9hZD8ubWV0YT8ubWVzc2FnZXMpIHtcclxuICAgICAgcmVzdWx0Lm1lc3NhZ2VzID0gbmV3IE1lc3NhZ2VzKFxyXG4gICAgICAgIHt9LFxyXG4gICAgICAgIFtdLFxyXG4gICAgICAgIFtdLFxyXG4gICAgICAgIFtdXHJcbiAgICAgICk7XHJcbiAgICAgIHBheWxvYWQubWV0YS5tZXNzYWdlcy5mb3JFYWNoKChtZXNzYWdlKSA9PiB7XHJcbiAgICAgICAgcmVzdWx0Lm1lc3NhZ2VzLm9yaWdpbmFsTXNncy5wdXNoKG1lc3NhZ2UpO1xyXG4gICAgICAgIHJlc3VsdC5tZXNzYWdlc1ttZXNzYWdlLnR5cGVdLnB1c2gobWVzc2FnZS5tZXNzYWdlKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICByZXN1bHQuc2VjdGlvbnNbcmVzdWx0LnNlY3Rpb25zLmxlbmd0aCAtIDFdLmhlYWRlci5yZWFkT25seSA9IGlzUmVhZE9ubHk7XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGxvYWRGaWxlKC4uLmFyZ3M6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBjb25zdCBbaWRdID0gYXJncztcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KFxyXG4gICAgICBgJHt0aGlzLmNvbmZpZy5wcm94eUZ1bGxBZGRyZXNzfSR7dGhpcy5jb25maWcucHJveHlTZXJ2aWNlRm9ybXN9JHt0aGlzLmNvbmZpZy5mb3JtSWR9JHt0aGlzLmNvbmZpZy5wcm94eVNlcnZpY2VBdHRhY2htZW50fSR7aWR9YCxcclxuICAgICAge29ic2VydmU6ICdyZXNwb25zZSd9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGRhdGFVUkl0b0Jsb2IoZGF0YVVSSTogYW55KSB7XHJcbiAgICBjb25zdCBieXRlU3RyaW5nID0gYXRvYihkYXRhVVJJKTtcclxuICAgIGNvbnN0IGFycmF5QnVmZmVyID0gbmV3IEFycmF5QnVmZmVyKGJ5dGVTdHJpbmcubGVuZ3RoKTtcclxuICAgIGNvbnN0IGludDhBcnJheSA9IG5ldyBVaW50OEFycmF5KGFycmF5QnVmZmVyKTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYnl0ZVN0cmluZy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBpbnQ4QXJyYXlbaV0gPSBieXRlU3RyaW5nLmNoYXJDb2RlQXQoaSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbmV3IEJsb2IoW2FycmF5QnVmZmVyXSwge3R5cGU6ICdpbWFnZS9qcGVnJ30pO1xyXG4gIH1cclxuXHJcbiAgc2F2ZUZpbGUoZmlsZUluZm9ybWF0aW9uKSB7XHJcbiAgICBjb25zdCBmaWxlQmxvYiA9IHRoaXMuZGF0YVVSSXRvQmxvYihmaWxlSW5mb3JtYXRpb24uZmlsZUNvbnRlbnRzKTtcclxuICAgIGNvbnN0IGZpbGUgPSBuZXcgRmlsZShbZmlsZUJsb2JdLCBmaWxlSW5mb3JtYXRpb24uZmlsZU5hbWUsIHt0eXBlOiBmaWxlSW5mb3JtYXRpb24ubWltZVR5cGV9KTtcclxuICAgIGNvbnN0IGJsb2JVcmwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGZpbGUpO1xyXG4gICAgY29uc3QgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcclxuICAgIGxpbmsuaHJlZiA9IGJsb2JVcmw7XHJcbiAgICBsaW5rLmRvd25sb2FkID0gZmlsZUluZm9ybWF0aW9uLmZpbGVOYW1lO1xyXG4gICAgbGluay5jbGljaygpO1xyXG4gICAgVVJMLnJldm9rZU9iamVjdFVSTChibG9iVXJsKTtcclxuICB9XHJcblxyXG4gIHNldEZsYWdQcmlvcml0eShpZDogc3RyaW5nKSB7XHJcbiAgICBsZXQgYm9keSA9IHtcclxuICAgICAgbWV0aG9kOiBjb25zdGFudHMuSFRUUF9NRVRIT0RfUFVULFxyXG4gICAgICBkZXN0aW5hdGlvbjogY29uc3RhbnRzLlRBUkdFVF9TRVJWRVJfRFAsXHJcbiAgICAgIHNlcnZpY2VOYW1lOiBjb25zdGFudHMuU0VSVklDRV9OQU1FX0RQX1VQREFURV9JTkJPWF9JVEVNLFxyXG4gICAgICBmb3JtTmFtZTogdGhpcy5jb25maWcuZm9ybU5hbWUsXHJcbiAgICAgIHVybFBhcmFtZXRlcnM6IHtcclxuICAgICAgICBpbmJveGlkOiB0aGlzLmNvbmZpZy5mb3JtSWRcclxuICAgICAgfSxcclxuICAgICAgYm9keToge1xyXG4gICAgICAgIGZsYWc6IGlkXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGxldCBvcHRpb25zID0gdGhpcy5nZXRSZXF1ZXN0T3B0aW9ucygpO1xyXG4gICAgcmV0dXJuIHRoaXMuZ2VuZXJhbENhbGxBcGkoYm9keSwgY29uc3RhbnRzLlNUQVRFX01BQ0hJTkVfQUNUSU9OX1NVQ0NFU1NfSU5CT1hfSVRFTSwgb3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbG9hZEhpc3RvcnkoLi4uYXJncykge1xyXG4gICAgY29uc3QgW2lkXSA9IGFyZ3M7XHJcbiAgICBjb25zdCBib2R5ID0ge1xyXG4gICAgICBtZXRob2Q6IGNvbnN0YW50cy5IVFRQX01FVEhPRF9HRVQsXHJcbiAgICAgIGRlc3RpbmF0aW9uOiBjb25zdGFudHMuVEFSR0VUX1NFUlZFUl9XTSxcclxuICAgICAgc2VydmljZU5hbWU6IGNvbnN0YW50cy5XT1JLRkxPV19JVEVNUyxcclxuICAgICAgZm9ybUlkOiBpZCB8fCB0aGlzLmNvbmZpZy5mb3JtSWQsXHJcbiAgICAgIGZvcm1OYW1lOiBcImJwbVwiLFxyXG4gICAgfTtcclxuICAgIGxldCBvcHRpb25zID0gdGhpcy5nZXRSZXF1ZXN0T3B0aW9ucygpO1xyXG4gICAgcmV0dXJuIHRoaXMuZ2VuZXJhbENhbGxBcGkoYm9keSwgY29uc3RhbnRzLlNUQVRFX01BQ0hJTkVfQUNUSU9OX0xPQURfSElTVE9SWSwgb3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0SW5ib3hJdGVtKC4uLmFyZ3MpIHtcclxuICAgIGNvbnN0IFtpZCwgaW5ib3hUeXBlXSA9IGFyZ3M7XHJcbiAgICBjb25zdCBib2R5ID0ge1xyXG4gICAgICBmb3JtTmFtZTogdGhpcy5jb25maWcuZm9ybU5hbWUsXHJcbiAgICAgIG1ldGhvZDogY29uc3RhbnRzLkhUVFBfTUVUSE9EX0dFVCxcclxuICAgICAgZGVzdGluYXRpb246IGNvbnN0YW50cy5UQVJHRVRfU0VSVkVSX0RQLFxyXG4gICAgICBzZXJ2aWNlTmFtZTogY29uc3RhbnRzLlNFUlZJQ0VfTkFNRV9EUF9JTkJPWF9JVEVNLFxyXG4gICAgICB1cmxQYXJhbWV0ZXJzOiB7XHJcbiAgICAgICAgaW5ib3hpZDogaWQsXHJcbiAgICAgICAgaW5ib3h0eXBlOiBpbmJveFR5cGVcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgbGV0IG9wdGlvbnMgPSB0aGlzLmdldFJlcXVlc3RPcHRpb25zKCk7XHJcbiAgICByZXR1cm4gdGhpcy5nZW5lcmFsQ2FsbEFwaShib2R5LCBjb25zdGFudHMuU1RBVEVfTUFDSElORV9BQ1RJT05fR0VUX0lOQk9YX0lURU0sIG9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHBlcnNwZWN0aXZlQXBwcm92ZXMoZGV0YWlscykge1xyXG4gICAgaWYgKCF0aGlzLmNvbmZpZy5wcm9kdWN0aW9uKSB7XHJcbiAgICAgIGRldGFpbHMgPSB7fVxyXG4gICAgfVxyXG4gICAgbGV0IHNlcnZpY2VOYW1lID0gXCJmb3JtL1wiICsgdGhpcy5jb25maWcuZm9ybU5hbWVcclxuICAgIGlmICh0aGlzLmNvbmZpZy5mb3JtSWQpIHtcclxuICAgICAgc2VydmljZU5hbWUgPSBcImZvcm0vXCIgKyB0aGlzLmNvbmZpZy5mb3JtSWRcclxuICAgIH1cclxuICAgIGxldCBib2R5ID0ge1xyXG4gICAgICBtZXRob2Q6IGNvbnN0YW50cy5IVFRQX01FVEhPRF9QT1NULFxyXG4gICAgICBkZXN0aW5hdGlvbjogY29uc3RhbnRzLlRBUkdFVF9TRVJWRVJfV00sXHJcbiAgICAgIHNlcnZpY2VOYW1lOiBzZXJ2aWNlTmFtZVxyXG4gICAgICAsIGZvcm1OYW1lOiBjb25zdGFudHMuQVBQUk9WRVJTXHJcbiAgICAgICwgYm9keToge1xyXG4gICAgICAgIFwicmVxdWVzdFwiOiB7XHJcbiAgICAgICAgICBcImRldGFpbHNcIjpcclxuICAgICAgICAgIGRldGFpbHNcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGxldCBvcHRpb25zID0gdGhpcy5nZXRSZXF1ZXN0T3B0aW9ucygpO1xyXG4gICAgcmV0dXJuIHRoaXMuZ2VuZXJhbENhbGxBcGkoYm9keSwgY29uc3RhbnRzLlNUQVRFX01BQ0hJTkVfQUNUSU9OX1NVQ0NFU1NfUkVTUE9OU0UsIG9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgZ2V0QXR0YWNobWVudHMoZGF0YTogYW55LCAuLi5hcmdzOiBhbnkpIHtcclxuICAgIGxldCBib2R5ID0ge1xyXG4gICAgICBtZXRob2Q6IGNvbnN0YW50cy5IVFRQX01FVEhPRF9QT1NULFxyXG4gICAgICBkZXN0aW5hdGlvbjogY29uc3RhbnRzLlRBUkdFVF9TRVJWRVJfV00sXHJcbiAgICAgIHNlcnZpY2VOYW1lOiAnYXR0YWNobWVudCdcclxuICAgICAgLCBmb3JtTmFtZTogJ2NvbW1vbidcclxuICAgICAgLCBib2R5OiB7XHJcbiAgICAgICAgYXR0YWNobWVudDoge1xyXG4gICAgICAgICAgZmlsZU5hbWU6IHRoaXMuY29uZmlnLnByb2R1Y3Rpb24gPyBkYXRhLmZpbGVOYW1lIDogJycsXHJcbiAgICAgICAgICBtaW1lVHlwZTogdGhpcy5jb25maWcucHJvZHVjdGlvbiA/IGRhdGEubWltZVR5cGUgOiAnJyxcclxuICAgICAgICAgIGZpbGVDb250ZW50czogdGhpcy5jb25maWcucHJvZHVjdGlvbiA/IGRhdGEuZmlsZUNvbnRlbnRzIDogJycsXHJcbiAgICAgICAgfVxyXG4gICAgICAgICwgY29tbWVudDogZGF0YS5hdHRhY2htZW50Y29tbWVudFxyXG4gICAgICAgICwgZGVzY3JpcHRpb246IGRhdGEuZmlsZURlc2NyaXB0aW9uLFxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBsZXQgb3B0aW9ucyA9IHRoaXMuZ2V0UmVxdWVzdE9wdGlvbnMoKTtcclxuICAgIHJldHVybiB0aGlzLmdlbmVyYWxDYWxsQXBpKGJvZHksIGNvbnN0YW50cy5TVEFURV9NQUNISU5FX0FDVElPTl9TVUNDRVNTX1JFU1BPTlNFLCBvcHRpb25zKTtcclxuICB9XHJcblxyXG4gIHNlYXJjaEVtcGxveWVlKC4uLmFyZ3MpIHtcclxuICAgIGxldCBbc2VhcmNoU3RyaW5nXSA9IGFyZ3M7XHJcbiAgICBsZXQgYm9keSA9IHtcclxuICAgICAgbWV0aG9kOiBjb25zdGFudHMuSFRUUF9NRVRIT0RfR0VULFxyXG4gICAgICBmb3JtTmFtZTogdGhpcy5jb25maWcuZm9ybU5hbWUsXHJcbiAgICAgIGRlc3RpbmF0aW9uOiBjb25zdGFudHMuVEFSR0VUX1NFUlZFUl9EUCxcclxuICAgICAgc2VydmljZU5hbWU6IGNvbnN0YW50cy5TRVJWSUNFX05BTUVfRFBfU0VBUkNIX0VNUExPWUVFLFxyXG4gICAgICBwYXJhbWV0ZXJzOiB7XHJcbiAgICAgICAgcTogc2VhcmNoU3RyaW5nLFxyXG4gICAgICAgIGxpbWl0OiAxMFxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBsZXQgb3B0aW9ucyA9IHRoaXMuZ2V0UmVxdWVzdE9wdGlvbnMoKTtcclxuICAgIHJldHVybiB0aGlzLmdlbmVyYWxDYWxsQXBpKGJvZHksIGNvbnN0YW50cy5TVEFURV9NQUNISU5FX0FDVElPTl9TVUNDRVNTX1JFU1BPTlNFLCBvcHRpb25zKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBteVJlcXVlc3RzKGRldGFpbHMpIHtcclxuICAgIGxldCBib2R5ID0ge1xyXG4gICAgICBtZXRob2Q6IGNvbnN0YW50cy5IVFRQX01FVEhPRF9HRVQsXHJcbiAgICAgIGRlc3RpbmF0aW9uOiBjb25zdGFudHMuVEFSR0VUX1NFUlZFUl9XTSxcclxuICAgICAgc2VydmljZU5hbWU6IFwiZm9ybVwiIC8vLCAgLy90aGlzLmdldFNlcnZpY2VOYW1lKCksXHJcbiAgICAgICwgZm9ybU5hbWU6IFwiaGlzdG9yeVwiXHJcbiAgICAgICwgcXVlcnlQYXJhbWV0ZXJzOiB7XHJcbiAgICAgICAgZm9ybU5hbWU6IHRoaXMuY29uZmlnLmZvcm1OYW1lLFxyXG4gICAgICAgIHllYXI6IGRldGFpbHMueWVhcixcclxuICAgICAgICBtb250aDogZGV0YWlscy5tb250aCxcclxuICAgICAgICBlbWFpbDogdGhpcy5sb2dnZWRJblVzZXJJZCgpXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGxldCBvcHRpb25zID0gdGhpcy5nZXRSZXF1ZXN0T3B0aW9ucygpO1xyXG4gICAgcmV0dXJuIHRoaXMuZ2VuZXJhbENhbGxBcGkoYm9keSwgY29uc3RhbnRzLlNUQVRFX01BQ0hJTkVfQUNUSU9OX1NVQ0NFU1NfUkVTUE9OU0UsIG9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgZ2VuZXJhbENhbGxBcGkoYm9keSwgdHlwZTogc3RyaW5nLCBvcHRpb25zKSB7XHJcbiAgICBsZXQgYXBpVXJsID0gdGhpcy5jb25maWcucHJveHlTZXJ2aWNlQmFzZVVybCArIHRoaXMubGFuZ3VhZ2UgKyB0aGlzLmNvbmZpZy5wcm94eUZ1bGxBZGRyZXNzICsgdGhpcy5jb25maWcucHJveHlTZXJ2aWNlRXhlY3V0ZTtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChhcGlVcmwsIGVuY29kZVVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeShib2R5KSksIG9wdGlvbnMpLnBpcGUoXHJcbiAgICAgIG1hcCgocmVzcG9uc2VPYmplY3Q6IGFueSkgPT4ge1xyXG4gICAgICAgIHJldHVybiByZXNwb25zZU9iamVjdFxyXG4gICAgICB9KSxcclxuICAgICAgY2F0Y2hFcnJvcigoaHR0cEVycm9yOiBhbnkpID0+IHtcclxuICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihodHRwRXJyb3IpO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBsb2dnZWRJblVzZXJJZCgpIHtcclxuICAgIHJldHVybiB0aGlzLnVzZXJEYXRhWydsb2dnZWRJblVzZXJFbWFpbCddO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldFNob3J0TmFtZShuYW1lOiBzdHJpbmcpIHtcclxuICAgIGlmIChuYW1lKSB7XHJcbiAgICAgIGxldCBuYW1lVG9rZW5zID0gbmFtZS5zcGxpdCgnICcpO1xyXG4gICAgICBpZiAobmFtZVRva2Vucy5sZW5ndGggPT0gMSkge1xyXG4gICAgICAgIHJldHVybiBbbmFtZVRva2Vuc1swXV1cclxuICAgICAgfSBlbHNlIGlmIChuYW1lVG9rZW5zW25hbWVUb2tlbnMubGVuZ3RoIC0gMl0udG9Mb3dlckNhc2UoKSA9PSAnYWwnKSB7XHJcbiAgICAgICAgcmV0dXJuIFtuYW1lVG9rZW5zWzBdLCBuYW1lVG9rZW5zW25hbWVUb2tlbnMubGVuZ3RoIC0gMl0sIG5hbWVUb2tlbnNbbmFtZVRva2Vucy5sZW5ndGggLSAxXV0uam9pbignICcpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiBbbmFtZVRva2Vuc1swXSwgbmFtZVRva2Vuc1tuYW1lVG9rZW5zLmxlbmd0aCAtIDFdXS5qb2luKCcgJyk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGlzTW9iaWxlQXBwKCkge1xyXG4gICAgcmV0dXJuICh3aW5kb3cgYXMgYW55KS53bUNvbmZpZy5pc01vYmlsZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRJbmJveFR5cGUocmVzdWx0KSB7XHJcbiAgICBsZXQgcnRuID0gbnVsbDtcclxuICAgIGlmICh0aGlzLmxvZ2dlZEluVXNlcklkKCkgPT09IHJlc3VsdC5wcm9maWxlSW5mb0Ryb3AuZW1wbG95ZWVFbWFpbCkge1xyXG4gICAgICBydG4gPSBjb25zdGFudHMuSU5CT1hfU1RBVFVTX1NFTlQ7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBydG4gPSBjb25zdGFudHMuSU5CT1hfU1RBVFVTX1BFTkRJTkc7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcnRuO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGlzT3Blbk9uSW5ib3goKSB7XHJcbiAgICByZXR1cm4gKHdpbmRvdyBhcyBhbnkpLndtQ29uZmlnLm91dGxvb2s7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
520
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS5zZXJ2aWNlLnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnBtLWNvcmUvc3JjL2xpYi9zZXJ2aWNlcy9jb3JlLnNlcnZpY2UudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFhLFdBQVcsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQzdELE9BQU8sRUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFckUsT0FBTyxFQUFDLFlBQVksRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsbUJBQW1CLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUMvSSxPQUFPLEtBQUssU0FBUyxNQUFNLGNBQWMsQ0FBQTtBQUN6QyxPQUFPLEVBQUMsVUFBVSxFQUFFLElBQUksRUFBYyxTQUFTLEVBQUUsVUFBVSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ3pFLE9BQU8sRUFBQyxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuQyxPQUFPLGFBQWEsTUFBTSxvQkFBb0IsQ0FBQztBQUMvQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7O0FBS2hFLE1BQU0sT0FBTyxXQUFXO0lBcUJPO0lBQzZCO0lBckIxRCxNQUFNLEdBQVcsRUFBRSxDQUFBO0lBQ1gsU0FBUyxDQUFTO0lBQ2xCLFlBQVksQ0FBUztJQUNaLGFBQWEsQ0FBUztJQUNoQyxRQUFRLENBQVM7SUFDUCxTQUFTLENBQUs7SUFDeEIsZ0JBQWdCLENBQUs7SUFDNUIsWUFBWSxDQUFRO0lBQ1osZUFBZSxDQUFVO0lBQ3pCLGNBQWMsQ0FBVTtJQUN4QixnQkFBZ0IsQ0FBTTtJQUM5QixRQUFRLENBQVE7SUFDaEIsVUFBVSxHQUFHLEVBQUUsQ0FBQTtJQUNmLFNB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QU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN6RyxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN0RSxDQUFDO1FBQ0gsQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7SUFDSCxDQUFDO0lBRU0sV0FBVztRQUNoQixPQUFRLE1BQWMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDO0lBQzNDLENBQUM7SUFFTSxZQUFZLENBQUMsTUFBTTtRQUN4QixJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUM7UUFDZixJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUUsS0FBSyxNQUFNLENBQUMsZUFBZSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ25FLEdBQUcsR0FBRyxTQUFTLENBQUMsaUJBQWlCLENBQUM7UUFDcEMsQ0FBQzthQUFNLENBQUM7WUFDTixHQUFHLEdBQUcsU0FBUyxDQUFDLG9CQUFvQixDQUFDO1FBQ3ZDLENBQUM7UUFDRCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFFTSxhQUFhO1FBQ2xCLE9BQVEsTUFBYyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUM7SUFDMUMsQ0FBQzt1R0F4b0JVLFdBQVcsNENBc0JGLG1CQUFtQjsyR0F0QjVCLFdBQVcsY0FGVixNQUFNOzsyRkFFUCxXQUFXO2tCQUh2QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBdUJjLE1BQU07MkJBQUMsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtIdHRwQ2xpZW50LCBIdHRwSGVhZGVyc30gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XHJcbmltcG9ydCB7RGVzdHJveVJlZiwgaW5qZWN0LCBJbmplY3QsIEluamVjdGFibGV9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB0eXBlIHtNeUxpYkNvbmZpZ30gZnJvbSBcIi4uL2ludGVyZmFjZXMvc2hhcmVkLmludGVyZmFjZVwiO1xyXG5pbXBvcnQge0NvbW1lbnRzRHJvcCwgRm9ybSwgSGVhZGVyLCBJbmJveEl0ZW0sIE1lc3NhZ2VzLCBNWV9MSUJfQ09ORklHX1RPS0VOLCBQcm9maWxlSW5mb0Ryb3AsIFNlY3Rpb24sIFNlY3Rpb25IZWFkZXJ9IGZyb20gXCIuLi8uLi9wdWJsaWMtYXBpXCI7XHJcbmltcG9ydCAqIGFzIGNvbnN0YW50cyBmcm9tICcuLi9jb25zdGFudHMnXHJcbmltcG9ydCB7Y2F0Y2hFcnJvciwgZnJvbSwgT2JzZXJ2YWJsZSwgc3dpdGNoTWFwLCB0aHJvd0Vycm9yfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQge21hcH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XHJcbmltcG9ydCBzYXZlRm9ybUhvb2tzIGZyb20gJy4uL2hvb2tzL3NhdmUtZm9ybSc7XHJcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gXCJAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcFwiO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46IFwicm9vdFwiXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb3JlU2VydmljZSB7XHJcbiAgYXBpVXJsOiBzdHJpbmcgPSAnJ1xyXG4gIHByaXZhdGUgYXV0aFRva2VuOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSByZWZyZXNoVG9rZW46IHN0cmluZztcclxuICBwcml2YXRlIHJlYWRvbmx5IHByb2plY3RDb25maWc6IHN0cmluZztcclxuICBwdWJsaWMgdXNlckRhdGE6IHN0cmluZztcclxuICBwcml2YXRlIHJlYWRvbmx5IGxvY2FsVXNlcjoge307XHJcbiAgcHVibGljIGxvZ2dlZEluVXNlckRhdGE6IHt9O1xyXG4gIGN1cnJlbnRBY3Rvcjogc3RyaW5nXHJcbiAgcHJpdmF0ZSBhdXRob3JpemVkRW1haWwhOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSByZXF1ZXN0ZXJFbWFpbCE6IHN0cmluZztcclxuICBwcml2YXRlIGN1cnJlbnRTdWJtaXR0ZXI6IGFueTtcclxuICBsYW5ndWFnZTogc3RyaW5nXHJcbiAgYWN0aXZpdGllcyA9IFtdXHJcbiAgYXBwcm92YWxzOiBhbnlcclxuICBoaXN0b3J5RGF0YUxvYWRlZDogYm9vbGVhblxyXG4gIGhpc3RvcnlEYXRhOiBhbnlbXSA9IFtdXHJcbiAgcHJpdmF0ZSByZWFkb25seSBpc01vYmlsZTogYm9vbGVhbjtcclxuICBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xyXG5cclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBodHRwOiBIdHRwQ2xpZW50LFxyXG4gICAgICAgICAgICAgIEBJbmplY3QoTVlfTElCX0NPTkZJR19UT0tFTikgcHJpdmF0ZSByZWFkb25seSBjb25maWc6IE15TGliQ29uZmlnKSB7XHJcbiAgICBjb25zdCBsYW5ndWFnZSA9ICh3aW5kb3cgYXMgYW55KT8ud21Db25maWc/Lmxhbmd1YWdlID8gKHdpbmRvdyBhcyBhbnkpLndtQ29uZmlnLmxhbmd1YWdlIDogJ2VuJztcclxuICAgIHRoaXMuYXBpVXJsID0gdGhpcy5jb25maWcucHJveHlTZXJ2aWNlQmFzZVVybCArIGxhbmd1YWdlICsgdGhpcy5jb25maWcucHJveHlGdWxsQWRkcmVzcyArIHRoaXMuY29uZmlnLnByb3h5U2VydmljZUV4ZWN1dGU7XHJcbiAgICBjb25zb2xlLmxvZygnQ29uZmlnOiAnLCB0aGlzLmNvbmZpZyk7XHJcbiAgICB0aGlzLmxvY2FsVXNlciA9IHtcclxuICAgICAgXCJmb3JtUHJlZml4XCI6IFwiQ0VQXCIsXHJcbiAgICAgIFwiZm9ybUlkXCI6IFwiQ0VQNTU5NTQzMlwiLFxyXG4gICAgICBcImluYm94VXJpXCI6IFwiXFwvZ3JvdXBcXC9odWJcXC9pbmJveFwiLFxyXG4gICAgICBcImJhc2VVcmxcIjogXCJcXC9ncm91cFxcL2ktZ2F0ZVxcL3dtLWJwbVxcL2Zvcm1zXFwvLVxcL3Byb3h5XCIsXHJcbiAgICAgIFwic2hvd1ByaW50XCI6IHRydWUsXHJcbiAgICAgIFwibGFuZ3VhZ2VcIjogXCJlblwiLFxyXG4gICAgICBcImlzTW9iaWxlXCI6IHRydWUsXHJcbiAgICAgIFwib3V0bG9va1wiOiBmYWxzZSxcclxuICAgICAgXCJsb2dnZWRJblVzZXJFbWFpbFwiOiBcImlicmFoaW1tYWEuY0BzdGMuY29tLnNhXCJcclxuICAgIH1cclxuICAgIHRoaXMucHJvamVjdENvbmZpZyA9ICh0aGlzLmNvbmZpZy5wcm9kdWN0aW9uKSA/ICh3aW5kb3cgYXMgYW55KVsnd21Db25maWcnXSA6IGJ0b2EoSlNPTi5zdHJpbmdpZnkodGhpcy5sb2NhbFVzZXIpKTtcclxuICAgIHRoaXMudXNlckRhdGEgPSB0aGlzLnByb2plY3RDb25maWc7XHJcbiAgICB0aGlzLmxhbmd1YWdlID0gKHdpbmRvdyBhcyBhbnkpPy53bUNvbmZpZz8ubGFuZ3VhZ2UgPyAod2luZG93IGFzIGFueSkud21Db25maWcubGFuZ3VhZ2UgOiBcImVuXCI7XHJcbiAgICB0aGlzLmlzTW9iaWxlID0gdGhpcy5wcm9qZWN0Q29uZmlnPy5bJ2lzTW9iaWxlJ107XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0TG9nZ2VkSW5Vc2VyRGF0YSgpIHtcclxuICAgIGxldCBsb2dnZWRJbkVtYWlsID0gdGhpcy5sb2dnZWRJblVzZXJJZCgpXHJcbiAgICB0aGlzLmVtcGxveWVlUHJvZmlsZShsb2dnZWRJbkVtYWlsKS5waXBlKFxyXG4gICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKVxyXG4gICAgKS5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgdGhpcy5sb2dnZWRJblVzZXJEYXRhID0gcmVzcG9uc2U/LltcIlVzZXJzXCJdPy5bMF1cclxuICAgICAgY29uc29sZS5sb2coJ2dldExvZ2dlZEluVXNlckRhdGEnLCByZXNwb25zZSlcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbG9hZEZvcm0oKSB7XHJcbiAgICBjb25zdCBhdXRoVXJsID0gdGhpcy5idWlsZEF1dGhVcmwoKTtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGF1dGhVcmwsIHtvYnNlcnZlOiAncmVzcG9uc2UnfSkucGlwZShcclxuICAgICAgbWFwKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHRva2VuSW5mb3JtYXRpb24gPSByZXMuYm9keTtcclxuICAgICAgICB0aGlzLmF1dGhUb2tlbiA9IHRva2VuSW5mb3JtYXRpb24udG9rZW47XHJcbiAgICAgICAgdGhpcy5nZXRMb2dnZWRJblVzZXJEYXRhKCk7XHJcbiAgICAgICAgdGhpcy5yZWZyZXNoVG9rZW4gPSB0b2tlbkluZm9ybWF0aW9uLnJlZnJlc2hUb2tlbjtcclxuICAgICAgICBjb25zdCBib2R5ID0gdGhpcy5idWlsZEJvZHkoKTtcclxuICAgICAgICBjb25zdCBvcHRpb25zID0gdGhpcy5nZXRSZXF1ZXN0T3B0aW9ucygpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmNhbGxQb3N0KGJvZHksIG9wdGlvbnMpO1xyXG4gICAgICB9KSxcclxuICAgICAgc3dpdGNoTWFwKHBvc3RPYnNlcnZhYmxlID0+IHBvc3RPYnNlcnZhYmxlKSxcclxuICAgICAgY2F0Y2hFcnJvcigoaHR0cEVycm9yOiBhbnkpID0+IHtcclxuICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihodHRwRXJyb3IpO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYnVpbGRBdXRoVXJsKCk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBiYXNlVXJsID0gdGhpcy5jb25maWcucHJveHlTZXJ2aWNlQmFzZVVybDtcclxuICAgIGNvbnN0IGxhbmd1YWdlID0gKHdpbmRvdyBhcyBhbnkpPy53bUNvbmZpZz8ubGFuZ3VhZ2UgPyAod2luZG93IGFzIGFueSkud21Db25maWcubGFuZ3VhZ2UgOiAnZW4nO1xyXG4gICAgY29uc3QgZnVsbEFkZHJlc3MgPSB0aGlzLmNvbmZpZy5wcm94eUZ1bGxBZGRyZXNzO1xyXG4gICAgY29uc3QgYXV0aFBhcnQgPSB0aGlzLmNvbmZpZy5wcm94eVNlcnZpY2VBdXRob3JpemF0aW9uO1xyXG4gICAgcmV0dXJuIGAke2Jhc2VVcmx9JHtsYW5ndWFnZX0ke2Z1bGxBZGRyZXNzfSR7YXV0aFBhcnR9P3RzPSR7KG5ldyBEYXRlKCkpLnZhbHVlT2YoKX1gO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBidWlsZEJvZHkoKTogb2JqZWN0IHtcclxuICAgIGNvbnN0IGJhc2VCb2R5ID0ge1xyXG4gICAgICBtZXRob2Q6IGNvbnN0YW50cy5IVFRQX01FVEhPRF9HRVQsXHJcbiAgICAgIGRlc3RpbmF0aW9uOiBjb25zdGFudHMuVEFSR0VUX1NFUlZFUl9XTSxcclxuICAgICAgc2VydmljZU5hbWU6IGNvbnN0YW50cy5TRVJWSUNFX05BTUVfV01fRk9STSxcclxuICAgICAgZm9ybU5hbWU6IHRoaXMuY29uZmlnLmZvcm1OYW1lLFxyXG4gICAgICBmb3JtSWQ6IFwiXCIsXHJcbiAgICAgIC8vIHF1ZXJ5UGFyYW1ldGVyczogbnVsbFxyXG4gICAgfTtcclxuICAgIGlmICghdGhpcy5jb25maWcuZm9ybUlkKSB7XHJcbiAgICAgIGRlbGV0ZSBiYXNlQm9keS5mb3JtSWQ7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBiYXNlQm9keS5mb3JtSWQgPSB0aGlzLmNvbmZpZy5mb3JtSWQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYmFzZUJvZHk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZW1wbG95ZWVQcm9maWxlKGVtcGxveWVlRW1haWw6IGFueSkge1xyXG4gICAgbGV0IGJvZHkgPSB7XHJcbiAgICAgIG1ldGhvZDogY29uc3RhbnRzLkhUVFBfTUVUSE9EX0dFVCxcclxuICAgICAgZm9ybU5hbWU6IHRoaXMuY29uZmlnLmZvcm1OYW1lLFxyXG4gICAgICBkZXN0aW5hdGlvbjogY29uc3RhbnRzLlRBUkdFVF9TRVJWRVJfRFAsXHJcbiAgICAgIHNlcnZpY2VOYW1lOiBjb25zdGFudHMuU0VSVklDRV9OQU1FX0RQX1NFQVJDSF9FTVBMT1lFRSxcclxuICAgICAgcGFyYW1ldGVyczoge1xyXG4gICAgICAgIHE6IGVtcGxveWVlRW1haWxcclxuICAgICAgfVxyXG4gICAgfTtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdCh0aGlzLmFwaVVybCwgYm9keSwge1xyXG4gICAgICBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoe1xyXG4gICAgICAgIGF1dGhUb2tlbjogdGhpcy5hdXRoVG9rZW4sXHJcbiAgICAgICAgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWRcIlxyXG4gICAgICB9KSxcclxuICAgICAgb2JzZXJ2ZTogXCJib2R5XCJcclxuICAgIH0pLnBpcGUoXHJcbiAgICAgIG1hcCgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgIHJldHVybiByZXNwb25zZVxyXG4gICAgICB9KVxyXG4gICAgICAsIGNhdGNoRXJyb3IoKGVycjogYW55KSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXJyKVxyXG4gICAgICB9KSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFJlcXVlc3RPcHRpb25zKCkge1xyXG4gICAgY29uc3QgaXNNb2JpbGUgPSAvaVBob25lfGlQYWR8aVBvZHxBbmRyb2lkL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTtcclxuICAgIGNvbnN0IHRzID0gKG5ldyBEYXRlKCkpLnZhbHVlT2YoKS50b1N0cmluZygpO1xyXG4gICAgY29uc3QgdXNlckFnZW50ID0gbmF2aWdhdG9yLnVzZXJBZ2VudDtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh7XHJcbiAgICAgICAgYXV0aFRva2VuOiB0aGlzLmF1dGhUb2tlbixcclxuICAgICAgICAnQ29udGVudC1UeXBlJzogY29uc3RhbnRzLkhFQURFUl9DT05URU5UX1RZUEVfRk9STSxcclxuICAgICAgICAnZmVIZWFkZXInOiAne1wiaXNNb2JpbGVcIjonICsgdGhpcy5pc01vYmlsZSArICcsIFwiLGFJc01vYmlsZVwiOicgKyBpc01vYmlsZSArICcsdHM6JyArIHRzICsgJyxsb2dnZWRJblVzZXJFbWFpbDonICsgdGhpcy5sb2dnZWRJblVzZXJJZCgpICsgJyxmb3JtTmFtZTonICsgdGhpcy5jb25maWcuZm9ybU5hbWUgKyAnLHVzZXItYWdlbnQ6JyArIHVzZXJBZ2VudCArICd9J1xyXG4gICAgICB9KSxcclxuICAgICAgb2JzZXJ2ZTogJ2JvZHknXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldERyYWZ0SWQodmFsKSB7XHJcbiAgICByZXR1cm4gdmFsLnRvVXBwZXJDYXNlKCkuc3RhcnRzV2l0aCgnRFJBRlQnKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzdWJtaXRGb3JtKC4uLmFyZ3MpIHtcclxuICAgIGNvbnN0IFtzZWN0aW9uLCBhY3Rpb25dID0gYXJncztcclxuICAgIGNvbnN0IG1ldGhvZCA9IHRoaXMuZ2V0SHR0cE1ldGhvZCgpO1xyXG4gICAgbGV0IHNlY3Rpb25JZCA9IHRoaXMuYmVmb3JlVHJhbnNwaWxlU2VjdGlvbldyYXBwZXIoc2VjdGlvbikuaWQ7XHJcbiAgICBsZXQgc2VydmljZU5hbWUgPSB0aGlzLmdldFNlcnZpY2VOYW1lKGFjdGlvbik7XHJcbiAgICBsZXQgZm9ybU5hbWUgPSB0aGlzLmdldEZvcm1OYW1lKGFjdGlvbik7XHJcbiAgICBsZXQgYm9keSA9IHRoaXMuZ2V0Qm9keU9iamVjdChtZXRob2QsIHNlcnZpY2VOYW1lLCBhY3Rpb24sIGZvcm1OYW1lLCB0aGlzLnBvcHVsYXRlZFBheWxvYWQoc2VjdGlvbklkLCBzZWN0aW9uKSwgdGhpcy5jb25maWcuZm9ybUlkKTtcclxuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmdldFJlcXVlc3RPcHRpb25zKCk7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuc3VibWl0KGJvZHksIG9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRIdHRwTWV0aG9kKCkge1xyXG4gICAgcmV0dXJuICh0aGlzLmNvbmZpZy5mb3JtSWQgJiYgIXRoaXMuZ2V0RHJhZnRJZCh0aGlzLmNvbmZpZy5mb3JtSWQpKSA/IGNvbnN0YW50cy5IVFRQX01FVEhPRF9QVVQgOiBjb25zdGFudHMuSFRUUF9NRVRIT0RfUE9TVDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYmVmb3JlVHJhbnNwaWxlU2VjdGlvbldyYXBwZXIoc2VjdGlvbikge1xyXG4gICAgcmV0dXJuIHNhdmVGb3JtSG9va3MuYmVmb3JlVHJhbnNwaWxlU2VjdGlvbiA/IHNhdmVGb3JtSG9va3MuYmVmb3JlVHJhbnNwaWxlU2VjdGlvbihzZWN0aW9uKSA6IHNlY3Rpb247XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFNlcnZpY2VOYW1lKGFjdGlvbikge1xyXG4gICAgaWYgKGFjdGlvbiA9PT0gY29uc3RhbnRzLldNX0FDVElPTl9TQVZFX0NIQU5HRVMpIHtcclxuICAgICAgcmV0dXJuIGNvbnN0YW50cy5TRVJWSUNFX05BTUVfV01fRFJBRlRfRk9STVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIGNvbnN0YW50cy5TRVJWSUNFX05BTUVfV01fRk9STVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRGb3JtTmFtZShhY3Rpb24pIHtcclxuICAgIGlmIChhY3Rpb24gPT09IGNvbnN0YW50cy5XTV9BQ1RJT05fU0FWRV9DSEFOR0VTKSB7XHJcbiAgICAgIHJldHVybiAnY29tbW9uJztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmNvbmZpZy5mb3JtTmFtZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgcG9wdWxhdGVkUGF5bG9hZChzZWN0aW9uSWQsIHNlY3Rpb24pIHtcclxuICAgIGxldCBwYXlsb2FkO1xyXG4gICAgaWYgKHNlY3Rpb25JZCA9PT0gY29uc3RhbnRzLlNFQ1RJT05fSURfUkVRVUVTVF9ERVRBSUxTKSB7XHJcbiAgICAgIHBheWxvYWQgPSB7cmVxdWVzdDoge2RldGFpbHM6IHNlY3Rpb24uYm9keS5kZXRhaWxzfX07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBwYXlsb2FkID0ge3dvcmtmbG93U3RlcHM6IHt9fTtcclxuICAgICAgcGF5bG9hZC53b3JrZmxvd1N0ZXBzLmRldGFpbHMgPSBzZWN0aW9uLmJvZHkuZGV0YWlscztcclxuICAgICAgcGF5bG9hZC53b3JrZmxvd1N0ZXBzLmFjdG9yID0gdGhpcy5jdXJyZW50U3VibWl0dGVyLmFjdG9yO1xyXG4gICAgICBwYXlsb2FkLndvcmtmbG93U3RlcHMuYWN0b3IuZW1haWwgPSB0aGlzLmN1cnJlbnRBY3RvcjtcclxuICAgICAgcGF5bG9hZC53b3JrZmxvd1N0ZXBzLnN0YXR1cyA9IGNvbnN0YW50cy5TRUNUSU9OX1NUQVRVU19QRU5ESU5HO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHBheWxvYWQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEJvZHlPYmplY3QobWV0aG9kLCBzZXJ2aWNlTmFtZSwgYWN0aW9uLCBmb3JtTmFtZSwgcGF5bG9hZCwgZm9ybUlkKSB7XHJcbiAgICBsZXQgYm9keSA9IHtcclxuICAgICAgbWV0aG9kOiBtZXRob2QsXHJcbiAgICAgIGRlc3RpbmF0aW9uOiBjb25zdGFudHMuVEFSR0VUX1NFUlZFUl9XTSxcclxuICAgICAgc2VydmljZU5hbWU6IHNlcnZpY2VOYW1lLFxyXG4gICAgICBwYXJhbWV0ZXJzOiB7XHJcbiAgICAgICAgYWN0aW9uOiBhY3Rpb25cclxuICAgICAgfSxcclxuICAgICAgZm9ybU5hbWU6IGZvcm1OYW1lLFxyXG4gICAgICBib2R5OiBwYXlsb2FkLFxyXG4gICAgICBmb3JtSWQ6IGZvcm1JZCxcclxuICAgICAgcXVlcnlQYXJhbWV0ZXJzOiB7fSxcclxuICAgICAgLy8gcGF5bG9hZFxyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmNvbmZpZy5mb3JtSWQpIHtcclxuICAgICAgYm9keS5mb3JtSWQgPSB0aGlzLmNvbmZpZy5mb3JtSWQ7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCF0aGlzLmF1dGhvcml6ZWRFbWFpbCB8fCAhdGhpcy5hdXRob3JpemVkRW1haWwubGVuZ3RoIHx8IHRoaXMuYXV0aG9yaXplZEVtYWlsID09PSB0aGlzLnJlcXVlc3RlckVtYWlsKSB7XHJcbiAgICAgIGRlbGV0ZSBib2R5LnF1ZXJ5UGFyYW1ldGVycztcclxuICAgIH1cclxuXHJcbiAgICBpZiAoc2F2ZUZvcm1Ib29rcy5iZWZvcmVTZW5kUGF5bG9hZCkge1xyXG4gICAgICBib2R5LmJvZHkucGF5bG9hZCA9IHNhdmVGb3JtSG9va3MuYmVmb3JlU2VuZFBheWxvYWQoYm9keS5ib2R5LnBheWxvYWQpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBib2R5O1xyXG4gIH1cclxuXHJcblxyXG4gIHByaXZhdGUgY2FsbFBvc3QoYm9keSwgb3B0aW9ucyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBjb25zdCBsYW5ndWFnZSA9ICh3aW5kb3cgYXMgYW55KT8ud21Db25maWc/Lmxhbmd1YWdlID8gKHdpbmRvdyBhcyBhbnkpLndtQ29uZmlnLmxhbmd1YWdlIDogXCJlblwiO1xyXG4gICAgbGV0IGFwaVVybCA9IHRoaXMuY29uZmlnLnByb3h5U2VydmljZUJhc2VVcmwgKyBsYW5ndWFnZSArIHRoaXMuY29uZmlnLnByb3h5RnVsbEFkZHJlc3MgKyB0aGlzLmNvbmZpZy5wcm94eVNlcnZpY2VFeGVjdXRlO1xyXG5cclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChhcGlVcmwsIGVuY29kZVVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeShib2R5KSksIG9wdGlvbnMpLnBpcGUoXHJcbiAgICAgIG1hcCgocmVzcG9uc2VPYmplY3Q6IGFueSkgPT4gdGhpcy5zdWNjZXNzV20ocmVzcG9uc2VPYmplY3QpKSxcclxuICAgICAgY2F0Y2hFcnJvcigoaHR0cEVycm9yOiBhbnkpID0+IHRocm93RXJyb3IoaHR0cEVycm9yKSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN1Ym1pdChib2R5OiBhbnksIG9wdGlvbnM6IGFueSkge1xyXG4gICAgY29uc3QgbGFuZ3VhZ2UgPSAod2luZG93IGFzIGFueSk/LndtQ29uZmlnPy5sYW5ndWFnZSA/ICh3aW5kb3cgYXMgYW55KS53bUNvbmZpZy5sYW5ndWFnZSA6IFwiZW5cIjtcclxuICAgIGNvbnN0IGFwaVVybCA9IHRoaXMuY29uZmlnLnByb3h5U2VydmljZUJhc2VVcmwgKyBsYW5ndWFnZSArIHRoaXMuY29uZmlnLnByb3h5RnVsbEFkZHJlc3MgKyB0aGlzLmNvbmZpZy5wcm94eVNlcnZpY2VFeGVjdXRlO1xyXG5cclxuICAgIHJldHVybiBmcm9tKFxyXG4gICAgICB0aGlzLmh0dHAucG9zdChhcGlVcmwsIGVuY29kZVVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeShib2R5KSksIG9wdGlvbnMpLnRvUHJvbWlzZSgpLnRoZW4oXHJcbiAgICAgICAgKHJlc3BvbnNlT2JqZWN0OiBhbnkpID0+IHtcclxuICAgICAgICAgIGxldCBmb3JtUmVzcG9uc2UgPSByZXNwb25zZU9iamVjdC5kYXRhLmZvcm07XHJcbiAgICAgICAgICBpZiAoc2F2ZUZvcm1Ib29rcy5hZnRlclNlbmRQYXlsb2FkKSB7XHJcbiAgICAgICAgICAgIGZvcm1SZXNwb25zZSA9IHNhdmVGb3JtSG9va3MuYWZ0ZXJTZW5kUGF5bG9hZChmb3JtUmVzcG9uc2UpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgbGV0IHJlc3VsdCA9IHtcclxuICAgICAgICAgICAgaWQ6IG51bGwsXHJcbiAgICAgICAgICAgIHN0YXR1czogbnVsbCxcclxuICAgICAgICAgICAgbmV4dEFwcHJvdmVyOiB7XHJcbiAgICAgICAgICAgICAgbmFtZTogbnVsbCxcclxuICAgICAgICAgICAgICBlbWFpbDogbnVsbCxcclxuICAgICAgICAgICAgICByb2xlOiBudWxsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGNyZWF0aW9uRGF0ZTogbnVsbFxyXG4gICAgICAgICAgfTtcclxuICAgICAgICAgIHJlc3VsdC5pZCA9IGZvcm1SZXNwb25zZS5mb3JtSWQ7XHJcbiAgICAgICAgICByZXN1bHQuc3RhdHVzID0gZm9ybVJlc3BvbnNlWydmb3JtU3RhdHVzJ107XHJcbiAgICAgICAgICBpZiAoZm9ybVJlc3BvbnNlLmN1cnJlbnRBY3Rvcikge1xyXG4gICAgICAgICAgICByZXN1bHQubmV4dEFwcHJvdmVyID0ge1xyXG4gICAgICAgICAgICAgIG5hbWU6IGZvcm1SZXNwb25zZS5jdXJyZW50QWN0b3IubmFtZSxcclxuICAgICAgICAgICAgICBlbWFpbDogZm9ybVJlc3BvbnNlLmN1cnJlbnRBY3Rvci5lbWFpbCxcclxuICAgICAgICAgICAgICByb2xlOiBmb3JtUmVzcG9uc2VbJ2Zvcm1TdGVwJ11cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgcmVzdWx0LmNyZWF0aW9uRGF0ZSA9IGZvcm1SZXNwb25zZS5jcmVhdGlvbkRhdGU7XHJcbiAgICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgICAgIH0sIChodHRwRXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhyb3cgaHR0cEVycm9yO1xyXG4gICAgICAgIH1cclxuICAgICAgKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3VjY2Vzc1dtKC4uLmFyZ3MpIHtcclxuICAgIGxldCBbcGF5bG9hZF0gPSBhcmdzO1xyXG4gICAgbGV0IHdhc1NlbmRCYWNrID0gZmFsc2U7XHJcbiAgICBsZXQgcmVzdWx0ID0gbmV3IEZvcm0oXHJcbiAgICAgIGNvbnN0YW50cy5OT19WQUxVRSxcclxuICAgICAgY29uc3RhbnRzLk5PX1ZBTFVFLFxyXG4gICAgICBjb25zdGFudHMuTk9fVkFMVUUsXHJcbiAgICAgIGNvbnN0YW50cy5OT19WQUxVRSxcclxuICAgICAgY29uc3RhbnRzLk5PX1ZBTFVFLFxyXG4gICAgICBjb25zdGFudHMuTk9fVkFMVUUsXHJcbiAgICAgIGNvbnN0YW50cy5OT19WQUxVRVxyXG4gICAgKTtcclxuICAgIHRoaXMucmVxdWVzdGVyRW1haWwgPSBwYXlsb2FkLmRhdGFbJ3JlcXVlc3RlciddLmVtcGxveWVlRW1haWw7XHJcbiAgICB0aGlzLmF1dGhvcml6ZWRFbWFpbCA9IHBheWxvYWQuZGF0YVsncmVxdWVzdGVyJ10uYXV0aG9yaXplZEVtYWlsO1xyXG4gICAgLyogR2VuZXJhdGUgSGVhZGVyIE9iamVjdCAqL1xyXG4gICAgbGV0IHBheWxvYWRGb3JtRGV0YWlscyA9IHBheWxvYWQuZGF0YS5mb3JtO1xyXG4gICAgbGV0IGlzUmVhZE9ubHkgPSAocGF5bG9hZEZvcm1EZXRhaWxzLnJlYWRPbmx5LnRvVXBwZXJDYXNlKCkgPT09IGNvbnN0YW50cy5UUlVFX1NUUklORyA/IGNvbnN0YW50cy5UUlVFX0JPT0wgOiAocGF5bG9hZEZvcm1EZXRhaWxzLnJlYWRPbmx5LnRvVXBwZXJDYXNlKCkgPT09IGNvbnN0YW50cy5GQUxTRV9TVFJJTkcgPyBjb25zdGFudHMuRkFMU0VfQk9PTCA6IGNvbnN0YW50cy5OT19WQUxVRSkpXHJcbiAgICByZXN1bHQuaGVhZGVyID0gbmV3IEhlYWRlcihcclxuICAgICAgcGF5bG9hZC5kYXRhWydyZXF1ZXN0ZXInXS5mdWxsTmFtZSxcclxuICAgICAgY29uc3RhbnRzLklHQVRFX1NUQVRJQ19BU1NFVF9QUk9GSUxFX1BIT1RPX1VSTCArIHBheWxvYWQuZGF0YVsncmVxdWVzdGVyJ10uZW1wbG95ZWVFbWFpbCxcclxuICAgICAgKHBheWxvYWRGb3JtRGV0YWlscy5mb3JtSWQgPyBwYXlsb2FkRm9ybURldGFpbHMuZm9ybUlkIDogY29uc3RhbnRzLkRPTlRfU0hPVyksXHJcbiAgICAgIChwYXlsb2FkRm9ybURldGFpbHMuY3JlYXRpb25EYXRlID8gcGF5bG9hZEZvcm1EZXRhaWxzLmNyZWF0aW9uRGF0ZSA6IGNvbnN0YW50cy5ET05UX1NIT1cpLFxyXG4gICAgICBwYXlsb2FkRm9ybURldGFpbHNbJ2Zvcm1TdGF0dXMnXSxcclxuICAgICAgcGF5bG9hZEZvcm1EZXRhaWxzLmRldGFpbHNcclxuICAgICk7XHJcbiAgICAvKiBHZW5lcmF0ZSBQcm9maWxlIEluZm9ybWF0aW9uIE9iamVjdCAqL1xyXG4gICAgbGV0IHBheWxvYWRQcm9maWxlSW5mbyA9IHBheWxvYWQuZGF0YVsncmVxdWVzdGVyJ107XHJcbiAgICByZXN1bHQucHJvZmlsZUluZm9Ecm9wID0gbmV3IFByb2ZpbGVJbmZvRHJvcChcclxuICAgICAgKHBheWxvYWRQcm9maWxlSW5mb1snb25CZWhhbGZBdXRob3JpemVkJ10gPyBKU09OLnBhcnNlKHBheWxvYWRQcm9maWxlSW5mb1snb25CZWhhbGZBdXRob3JpemVkJ10pIDogbnVsbCksXHJcbiAgICAgIHBheWxvYWRQcm9maWxlSW5mb1snZW1wbG95ZWVJZCddLFxyXG4gICAgICBwYXlsb2FkUHJvZmlsZUluZm8uZW1wbG95ZWVFbWFpbCxcclxuICAgICAgcGF5bG9hZFByb2ZpbGVJbmZvLmZ1bGxOYW1lLFxyXG4gICAgICBwYXlsb2FkUHJvZmlsZUluZm8uZ2VuZXJhbERlcGFydG1lbnROYW1lLFxyXG4gICAgICBwYXlsb2FkUHJvZmlsZUluZm8uam9iUG9zaXRpb24sXHJcbiAgICAgIHBheWxvYWRQcm9maWxlSW5mb1snc2VjdG9yTmFtZSddLFxyXG4gICAgICBwYXlsb2FkUHJvZmlsZUluZm8uZGVwYXJ0bWVudE5hbWUsXHJcbiAgICAgIHBheWxvYWRQcm9maWxlSW5mby5nZW5lcmFsRGVwYXJ0bWVudENvZGUsXHJcbiAgICAgIHBheWxvYWRQcm9maWxlSW5mb1snaHVtYW5SZXNvdXJjZUxvY2F0aW9uJ10sXHJcbiAgICAgIHBheWxvYWRQcm9maWxlSW5mby5uYXRpb25hbGl0eSxcclxuICAgICAgcGF5bG9hZFByb2ZpbGVJbmZvLmJ1c2luZXNzUGhvbmUsXHJcbiAgICAgIHBheWxvYWRQcm9maWxlSW5mb1snZGlyZWN0TWFuYWdlck5hbWUnXSxcclxuICAgICAgcGF5bG9hZFByb2ZpbGVJbmZvLnNlbmlvclNlY3Rvck5hbWVcclxuICAgICk7XHJcbiAgICByZXN1bHQuc2VjdGlvbnMgPSBbXTtcclxuICAgIGxldCByZXF1ZXN0RGV0YWlsc0hhc0NvbW1lbnQgPSBmYWxzZTtcclxuICAgIGlmIChwYXlsb2FkLmRhdGEucmVxdWVzdC5kZXRhaWxzLmNvbW1lbnQpIHtcclxuICAgICAgcmVxdWVzdERldGFpbHNIYXNDb21tZW50ID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIHJlc3VsdC5zZWN0aW9ucy5wdXNoKFxyXG4gICAgICBuZXcgU2VjdGlvbihcclxuICAgICAgICBjb25zdGFudHMuU0VDVElPTl9JRF9SRVFVRVNUX0RFVEFJTFMsXHJcbiAgICAgICAgbmV3IFNlY3Rpb25IZWFkZXIoY29uc3RhbnRzLkRPTlRfU0hPVywgY29uc3RhbnRzLkRPTlRfU0hPVywgY29uc3RhbnRzLkRPTlRfU0hPVywgY29uc3RhbnRzLkRPTlRfU0hPVywgY29uc3RhbnRzLkRPTlRfU0hPVywgY29uc3RhbnRzLkRPTlRfU0hPVywgY29uc3RhbnRzLkRPTlRfU0hPVywgcmVxdWVzdERldGFpbHNIYXNDb21tZW50LCAocGF5bG9hZC5kYXRhWyd3b3JrZmxvd1N0ZXBzJ10gPyBjb25zdGFudHMuUkVBRF9PTkxZIDogaXNSZWFkT25seSkpLFxyXG4gICAgICAgIHBheWxvYWQuZGF0YS5yZXF1ZXN0XHJcbiAgICAgIClcclxuICAgICk7XHJcblxyXG4gICAgaWYgKHJlc3VsdC5oZWFkZXIuZm9ybUlkKSB7XHJcbiAgICAgIHJlc3VsdC5jb21tZW50c0Ryb3AgPSAoIXJlc3VsdC5jb21tZW50c0Ryb3AgPyBbXSA6IHJlc3VsdC5jb21tZW50c0Ryb3ApO1xyXG4gICAgICB0aGlzLmxvYWRIaXN0b3J5KHJlc3VsdC5oZWFkZXIuZm9ybUlkKS5waXBlKFxyXG4gICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpXHJcbiAgICAgICkuc3Vic2NyaWJlKFxyXG4gICAgICAgIChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzcG9uc2UpIHtcclxuICAgICAgICAgICAgcmVzcG9uc2UuaXRlbXMuZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKGl0ZW0uc2VxdWVuY2VOdW1iZXIgIT09ICcwJyAmJiBpdGVtLnByb2Nlc3NlZEJ5KSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBuYW1lID0gaXRlbS5wcm9jZXNzZWRCeVsnZmlyc3ROYW1lJ10gKyAnICcgKyBpdGVtLnByb2Nlc3NlZEJ5WydzZWNvbmRNaWRkbGVOYW1lJ10gKyAnICcgKyBpdGVtLnByb2Nlc3NlZEJ5WydmYW1pbHlOYW1lJ107XHJcbiAgICAgICAgICAgICAgICByZXN1bHQuY29tbWVudHNEcm9wLnB1c2gobmV3IENvbW1lbnRzRHJvcChcclxuICAgICAgICAgICAgICAgICAgY29uc3RhbnRzLklHQVRFX1NUQVRJQ19BU1NFVF9QUk9GSUxFX1BIT1RPX1VSTCArIGl0ZW0ucHJvY2Vzc2VkQnkuZW1haWwsXHJcbiAgICAgICAgICAgICAgICAgIG5hbWUsXHJcbiAgICAgICAgICAgICAgICAgIGl0ZW0uY29tbWVudHMsXHJcbiAgICAgICAgICAgICAgICAgIGl0ZW1bJ21vZGlmaWVkRGF0ZSddLFxyXG4gICAgICAgICAgICAgICAgICBpdGVtLmF0dGFjaG1lbnRzLFxyXG4gICAgICAgICAgICAgICAgICBpdGVtLnByb2Nlc3NlZEJ5LmpvYlxyXG4gICAgICAgICAgICAgICAgKSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICApO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBjb25zdCBpbmJveFR5cGUgPSB0aGlzLmdldEluYm94VHlwZShyZXN1bHQpO1xyXG4gICAgaWYgKHJlc3VsdC5oZWFkZXIuZm9ybUlkICYmICghdGhpcy5pc09wZW5PbkluYm94KCkpKSB7XHJcbiAgICAgIHRoaXMuZ2V0SW5ib3hJdGVtKHJlc3VsdC5oZWFkZXIuZm9ybUlkLCBpbmJveFR5cGUpLnBpcGUoXHJcbiAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZilcclxuICAgICAgKS5zdWJzY3JpYmUoXHJcbiAgICAgICAgKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChyZXNwb25zZSkge1xyXG4gICAgICAgICAgICBjb25zdCBpdGVtID0gcmVzcG9uc2UuaXRlbTtcclxuICAgICAgICAgICAgcmVzdWx0LmluYm94SXRlbSA9IG5ldyBJbmJveEl0ZW0oXHJcbiAgICAgICAgICAgICAgaXRlbVsnZmxhZ2dpbmcnXS5mbGFnUHJpb3JpdHksXHJcbiAgICAgICAgICAgICAgaXRlbVsnZmxhZ2dpbmcnXVsnaXNGbGFnZ2VkJ10sXHJcbiAgICAgICAgICAgICAgaXRlbS5mZWVkYmFja1snY2FuUmVxdWVzdEZlZWRiYWNrJ10sXHJcbiAgICAgICAgICAgICAgaXRlbS5mZWVkYmFja1snaGFzRmVlZGJhY2snXSxcclxuICAgICAgICAgICAgICBpdGVtLmZlZWRiYWNrWydpc1BlbmRpbmcnXSxcclxuICAgICAgICAgICAgICBpdGVtLmZlZWRiYWNrWydpc1JlcXVlc3RlZCddLFxyXG4gICAgICAgICAgICAgIGl0ZW0uZmVlZGJhY2tbJ2lzUmVzcG9uZGVkJ11cclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBwYXlsb2FkV29ya2Zsb3dTdGVwcyA9IHBheWxvYWQuZGF0YS53b3JrZmxvd1N0ZXBzO1xyXG4gICAgaWYgKHBheWxvYWRXb3JrZmxvd1N0ZXBzICYmIHBheWxvYWRXb3JrZmxvd1N0ZXBzLmNvbnN0cnVjdG9yID09PSBBcnJheSAmJiBwYXlsb2FkV29ya2Zsb3dTdGVwcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHBheWxvYWRXb3JrZmxvd1N0ZXBzLmZvckVhY2goKHN0ZXAsIGluZGV4KSA9PiB7XHJcbiAgICAgICAgbGV0IGN1cnJlbnRJc1JlcXVlc3RlclNlbmRCYWNrID0gSlNPTi5zdHJpbmdpZnkoc3RlcC5kZXRhaWxzKSA9PT0gSlNPTi5zdHJpbmdpZnkoe30pO1xyXG4gICAgICAgIGxldCBoYXNDb21tZW50cyA9ICghY3VycmVudElzUmVxdWVzdGVyU2VuZEJhY2sgJiYgKHN0ZXAuZGV0YWlscy5jb21tZW50IHx8IHN0ZXAuY29tbWVudCkgPyBjb25zdGFudHMuSEFTX0NPTU1FTlRTIDogY29uc3RhbnRzLk5PX0NPTU1FTlRTKTtcclxuICAgICAgICBsZXQgY3VycmVudEFjdG9yID0gKHN0ZXAuYWN0b3IuZW1haWwgPT09IHN0ZXAuYWN0b3IucmVjaXBpZW50LmVtYWlsID8gc3RlcC5hY3Rvci5yZWNpcGllbnQgOiAoc3RlcC5hY3Rvci5kZWxlZ2F0ZSA/IHN0ZXAuYWN0b3IuZGVsZWdhdGUgOiBudWxsKSlcclxuICAgICAgICBpZiAod2FzU2VuZEJhY2sgJiYgc3RlcC5hY3Rvci5yZWNpcGllbnQucm9sZSA9PT0gJ1JFUVVFU1RFUicpIHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKFwid2FzU2VuZEJhY2sgJiYgUkVRVUVTVEVSXCIpXHJcbiAgICAgICAgICByZXN1bHQuc2VjdGlvbnMgPSBbbmV3IFNlY3Rpb24oXHJcbiAgICAgICAgICAgIGNvbnN0YW50cy5TRUNUSU9OX0lEX1JFUVVFU1RfREVUQUlMUyxcclxuICAgICAgICAgICAgbmV3IFNlY3Rpb25IZWFkZXIoXHJcbiAgICAgICAgICAgICAgY29uc3RhbnRzLkRPTlRfU0hPVyxcclxuICAgICAgICAgICAgICBjb25zdGFudHMuRE9OVF9TSE9XLFxyXG4gICAgICAgICAgICAgIGNvbnN0YW50cy5ET05UX1NIT1csXHJcbiAgICAgICAgICAgICAgY29uc3RhbnRzLkRPTlRfU0hPVyxcclxuICAgICAgICAgICAgICBjb25zdGFudHMuRE9OVF9TSE9XLFxyXG4gICAgICAgICAgICAgIGNvbnN0YW50cy5ET05UX1NIT1csXHJcbiAgICAgICAgICAgICAgY29uc3RhbnRzLkRPTlRfU0hPVyxcclxuICAgICAgICAgICAgICByZXF1ZXN0RGV0YWlsc0hhc0NvbW1lbnQsXHJcbiAgICAgICAgICAgICAgKHBheWxvYWQuZGF0YS53b3JrZmxvd1N0ZXBzID8gY29uc3RhbnRzLlJFQURfT05MWSA6IGlzUmVhZE9ubHkpXHJcbiAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgIHBheWxvYWQuZGF0YS5yZXF1ZXN0XHJcbiAgICAgICAgICApXVxyXG4gICAgICAgIH0gZWxzZSBpZiAod2FzU2VuZEJhY2spIHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKFwiUG9wXCIpXHJcbiAgICAgICAgICBpZiAocmVzdWx0LnNlY3Rpb25zLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICAgICAgcmVzdWx0LnNlY3Rpb25zLnBvcCgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgd2FzU2VuZEJhY2sgPSBmYWxzZTtcclxuICAgICAgICB9XHJcblxyXG5cclxuICAgICAgICBpZiAoc3RlcC5kZXRhaWxzLmRlY2lzaW9uICYmIHN0ZXAuZGV0YWlscy5kZWNpc2lvbi5rZXkgPT09IGNvbnN0YW50cy5GT1JNX1NUQVRVU19TRU5EX0JBQ0spIHtcclxuICAgICAgICAgIHdhc1NlbmRCYWNrID0gdHJ1ZTtcclxuICAgICAgICB9IGVsc2UgaWYgKEpTT04uc3RyaW5naWZ5KHN0ZXAuZGV0YWlscykgIT09IEpTT04uc3RyaW5naWZ5KHt9KSkge1xyXG4gICAgICAgICAgcmVzdWx0LnNlY3Rpb25zLnB1c2goXHJcbiAgICAgICAgICAgIG5ldyBTZWN0aW9uKFxyXG4gICAgICAgICAgICAgIHN0ZXAuYWN0b3IucmVjaXBpZW50LnJvbGUudG9Mb3dlckNhc2UoKSArIGNvbnN0YW50cy5TRUNUSU9OX0lEX0FQUFJPVkFMX1BBUlRJQUxfTkFNRSxcclxuICAgICAgICAgICAgICBuZXcgU2VjdGlvbkhlYWRlcihcclxuICAgICAgICAgICAgICAgIChjdXJyZW50QWN0b3IgPyB0aGlzLmdldFNob3J0TmFtZShjdXJyZW50QWN0b3IubmFtZSkgOiBcIlwiKS50b1N0cmluZygpLFxyXG4gICAgICAgICAgICAgICAgc3RlcC5kYXRlLFxyXG4gICAgICAgICAgICAgICAgdGhpcy5nZXRTaG9ydE5hbWUoc3RlcC5hY3Rvci5yZWNpcGllbnQubmFtZSkudG9TdHJpbmcoKSxcclxuICAgICAgICAgICAgICAgIGNvbnN0YW50cy5JR0FURV9TVEFUSUNfQVNTRVRfUFJPRklMRV9QSE9UT19VUkwgKyBzdGVwLmFjdG9yLnJlY2lwaWVudC5lbWFpbCxcclxuICAgICAgICAgICAgICAgIChzdGVwLmFjdG9yLmRlbGVnYXRlPy5uYW1lID8gdGhpcy5nZXRTaG9ydE5hbWUoc3RlcC5hY3Rvci5kZWxlZ2F0ZS5uYW1lKSA6IFwiXCIpLnRvU3RyaW5nKCksXHJcbiAgICAgICAgICAgICAgICAoc3RlcC5hY3Rvci5kZWxlZ2F0ZT8uZW1haWwgPyBjb25zdGFudHMuSUdBVEVfU1RBVElDX0FTU0VUX1BST0ZJTEVfUEhPVE9fVVJMICsgc3RlcC5hY3Rvci5kZWxlZ2F0ZS5lbWFpbCA6IFwiXCIpLFxyXG4gICAgICAgICAgICAgICAgc3RlcC5hY3Rvci5zdGF0dXMsXHJcbiAgICAgICAgICAgICAgICBoYXNDb21tZW50cyxcclxuICAgICAgICAgICAgICAgIChpbmRleCA8IHBheWxvYWRXb3JrZmxvd1N0ZXBzLmxlbmd0aCAtIDEgPyBjb25zdGFudHMuUkVBRF9PTkxZIDogaXNSZWFkT25seSlcclxuICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICAgIHtkZXRhaWxzOiBzdGVwLmRldGFpbHMsIHByb2Nlc3NpbmdEYXRlOiBzdGVwLmRhdGV9XHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICB0aGlzLmN1cnJlbnRTdWJtaXR0ZXIgPSB7YWN0b3I6IHN0ZXAuYWN0b3IsIHJlY2lwaWVudDogc3RlcC5yZWNpcGllbnQsIGRlbGVnYXRlOiBzdGVwLmFjdG9yLmRlbGVnYXRlfTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgLyogQ3JlYXRlIExvdiBTZWN0aW9ucyAqL1xyXG4gICAgcmVzdWx0LmxvdnMgPSAocGF5bG9hZD8ubWV0YT8ubG92cyA/IHBheWxvYWQubWV0YS5sb3ZzIDogbnVsbCk7XHJcblxyXG4gICAgaWYgKHBheWxvYWQ/Lm1ldGE/Lm1lc3NhZ2VzKSB7XHJcbiAgICAgIHJlc3VsdC5tZXNzYWdlcyA9IG5ldyBNZXNzYWdlcyhcclxuICAgICAgICB7fSxcclxuICAgICAgICBbXSxcclxuICAgICAgICBbXSxcclxuICAgICAgICBbXVxyXG4gICAgICApO1xyXG4gICAgICBwYXlsb2FkLm1ldGEubWVzc2FnZXMuZm9yRWFjaCgobWVzc2FnZSkgPT4ge1xyXG4gICAgICAgIHJlc3VsdC5tZXNzYWdlcy5vcmlnaW5hbE1zZ3MucHVzaChtZXNzYWdlKTtcclxuICAgICAgICByZXN1bHQubWVzc2FnZXNbbWVzc2FnZS50eXBlXS5wdXNoKG1lc3NhZ2UubWVzc2FnZSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgcmVzdWx0LnNlY3Rpb25zW3Jlc3VsdC5zZWN0aW9ucy5sZW5ndGggLSAxXS5oZWFkZXIucmVhZE9ubHkgPSBpc1JlYWRPbmx5O1xyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBsb2FkRmlsZSguLi5hcmdzOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgY29uc3QgW2lkXSA9IGFyZ3M7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChcclxuICAgICAgYCR7dGhpcy5jb25maWcucHJveHlGdWxsQWRkcmVzc30ke3RoaXMuY29uZmlnLnByb3h5U2VydmljZUZvcm1zfSR7dGhpcy5jb25maWcuZm9ybUlkfSR7dGhpcy5jb25maWcucHJveHlTZXJ2aWNlQXR0YWNobWVudH0ke2lkfWAsXHJcbiAgICAgIHtvYnNlcnZlOiAncmVzcG9uc2UnfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBkYXRhVVJJdG9CbG9iKGRhdGFVUkk6IGFueSkge1xyXG4gICAgY29uc3QgYnl0ZVN0cmluZyA9IGF0b2IoZGF0YVVSSSk7XHJcbiAgICBjb25zdCBhcnJheUJ1ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcihieXRlU3RyaW5nLmxlbmd0aCk7XHJcbiAgICBjb25zdCBpbnQ4QXJyYXkgPSBuZXcgVWludDhBcnJheShhcnJheUJ1ZmZlcik7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGJ5dGVTdHJpbmcubGVuZ3RoOyBpKyspIHtcclxuICAgICAgaW50OEFycmF5W2ldID0gYnl0ZVN0cmluZy5jaGFyQ29kZUF0KGkpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG5ldyBCbG9iKFthcnJheUJ1ZmZlcl0sIHt0eXBlOiAnaW1hZ2UvanBlZyd9KTtcclxuICB9XHJcblxyXG4gIHNhdmVGaWxlKGZpbGVJbmZvcm1hdGlvbikge1xyXG4gICAgY29uc3QgZmlsZUJsb2IgPSB0aGlzLmRhdGFVUkl0b0Jsb2IoZmlsZUluZm9ybWF0aW9uLmZpbGVDb250ZW50cyk7XHJcbiAgICBjb25zdCBmaWxlID0gbmV3IEZpbGUoW2ZpbGVCbG9iXSwgZmlsZUluZm9ybWF0aW9uLmZpbGVOYW1lLCB7dHlwZTogZmlsZUluZm9ybWF0aW9uLm1pbWVUeXBlfSk7XHJcbiAgICBjb25zdCBibG9iVXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChmaWxlKTtcclxuICAgIGNvbnN0IGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XHJcbiAgICBsaW5rLmhyZWYgPSBibG9iVXJsO1xyXG4gICAgbGluay5kb3dubG9hZCA9IGZpbGVJbmZvcm1hdGlvbi5maWxlTmFtZTtcclxuICAgIGxpbmsuY2xpY2soKTtcclxuICAgIFVSTC5yZXZva2VPYmplY3RVUkwoYmxvYlVybCk7XHJcbiAgfVxyXG5cclxuICBzZXRGbGFnUHJpb3JpdHkoaWQ6IHN0cmluZykge1xyXG4gICAgbGV0IGJvZHkgPSB7XHJcbiAgICAgIG1ldGhvZDogY29uc3RhbnRzLkhUVFBfTUVUSE9EX1BVVCxcclxuICAgICAgZGVzdGluYXRpb246IGNvbnN0YW50cy5UQVJHRVRfU0VSVkVSX0RQLFxyXG4gICAgICBzZXJ2aWNlTmFtZTogY29uc3RhbnRzLlNFUlZJQ0VfTkFNRV9EUF9VUERBVEVfSU5CT1hfSVRFTSxcclxuICAgICAgZm9ybU5hbWU6IHRoaXMuY29uZmlnLmZvcm1OYW1lLFxyXG4gICAgICB1cmxQYXJhbWV0ZXJzOiB7XHJcbiAgICAgICAgaW5ib3hpZDogdGhpcy5jb25maWcuZm9ybUlkXHJcbiAgICAgIH0sXHJcbiAgICAgIGJvZHk6IHtcclxuICAgICAgICBmbGFnOiBpZFxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBsZXQgb3B0aW9ucyA9IHRoaXMuZ2V0UmVxdWVzdE9wdGlvbnMoKTtcclxuICAgIHJldHVybiB0aGlzLmdlbmVyYWxDYWxsQXBpKGJvZHksIGNvbnN0YW50cy5TVEFURV9NQUNISU5FX0FDVElPTl9TVUNDRVNTX0lOQk9YX0lURU0sIG9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGxvYWRIaXN0b3J5KC4uLmFyZ3MpIHtcclxuICAgIGNvbnN0IFtpZF0gPSBhcmdzO1xyXG4gICAgY29uc3QgYm9keSA9IHtcclxuICAgICAgbWV0aG9kOiBjb25zdGFudHMuSFRUUF9NRVRIT0RfR0VULFxyXG4gICAgICBkZXN0aW5hdGlvbjogY29uc3RhbnRzLlRBUkdFVF9TRVJWRVJfV00sXHJcbiAgICAgIHNlcnZpY2VOYW1lOiBjb25zdGFudHMuV09SS0ZMT1dfSVRFTVMsXHJcbiAgICAgIGZvcm1JZDogaWQgfHwgdGhpcy5jb25maWcuZm9ybUlkLFxyXG4gICAgICBmb3JtTmFtZTogXCJicG1cIixcclxuICAgIH07XHJcbiAgICBsZXQgb3B0aW9ucyA9IHRoaXMuZ2V0UmVxdWVzdE9wdGlvbnMoKTtcclxuICAgIHJldHVybiB0aGlzLmdlbmVyYWxDYWxsQXBpKGJvZHksIGNvbnN0YW50cy5TVEFURV9NQUNISU5FX0FDVElPTl9MT0FEX0hJU1RPUlksIG9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldEluYm94SXRlbSguLi5hcmdzKSB7XHJcbiAgICBjb25zdCBbaWQsIGluYm94VHlwZV0gPSBhcmdzO1xyXG4gICAgY29uc3QgYm9keSA9IHtcclxuICAgICAgZm9ybU5hbWU6IHRoaXMuY29uZmlnLmZvcm1OYW1lLFxyXG4gICAgICBtZXRob2Q6IGNvbnN0YW50cy5IVFRQX01FVEhPRF9HRVQsXHJcbiAgICAgIGRlc3RpbmF0aW9uOiBjb25zdGFudHMuVEFSR0VUX1NFUlZFUl9EUCxcclxuICAgICAgc2VydmljZU5hbWU6IGNvbnN0YW50cy5TRVJWSUNFX05BTUVfRFBfSU5CT1hfSVRFTSxcclxuICAgICAgdXJsUGFyYW1ldGVyczoge1xyXG4gICAgICAgIGluYm94aWQ6IGlkLFxyXG4gICAgICAgIGluYm94dHlwZTogaW5ib3hUeXBlXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGxldCBvcHRpb25zID0gdGhpcy5nZXRSZXF1ZXN0T3B0aW9ucygpO1xyXG4gICAgcmV0dXJuIHRoaXMuZ2VuZXJhbENhbGxBcGkoYm9keSwgY29uc3RhbnRzLlNUQVRFX01BQ0hJTkVfQUNUSU9OX0dFVF9JTkJPWF9JVEVNLCBvcHRpb25zKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBwZXJzcGVjdGl2ZUFwcHJvdmVzKGRldGFpbHMpIHtcclxuICAgIGlmICghdGhpcy5jb25maWcucHJvZHVjdGlvbikge1xyXG4gICAgICBkZXRhaWxzID0ge31cclxuICAgIH1cclxuICAgIGxldCBzZXJ2aWNlTmFtZSA9IFwiZm9ybS9cIiArIHRoaXMuY29uZmlnLmZvcm1OYW1lXHJcbiAgICBpZiAodGhpcy5jb25maWcuZm9ybUlkKSB7XHJcbiAgICAgIHNlcnZpY2VOYW1lID0gXCJmb3JtL1wiICsgdGhpcy5jb25maWcuZm9ybUlkXHJcbiAgICB9XHJcbiAgICBsZXQgYm9keSA9IHtcclxuICAgICAgbWV0aG9kOiBjb25zdGFudHMuSFRUUF9NRVRIT0RfUE9TVCxcclxuICAgICAgZGVzdGluYXRpb246IGNvbnN0YW50cy5UQVJHRVRfU0VSVkVSX1dNLFxyXG4gICAgICBzZXJ2aWNlTmFtZTogc2VydmljZU5hbWVcclxuICAgICAgLCBmb3JtTmFtZTogY29uc3RhbnRzLkFQUFJPVkVSU1xyXG4gICAgICAsIGJvZHk6IHtcclxuICAgICAgICBcInJlcXVlc3RcIjoge1xyXG4gICAgICAgICAgXCJkZXRhaWxzXCI6XHJcbiAgICAgICAgICBkZXRhaWxzXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBsZXQgb3B0aW9ucyA9IHRoaXMuZ2V0UmVxdWVzdE9wdGlvbnMoKTtcclxuICAgIHJldHVybiB0aGlzLmdlbmVyYWxDYWxsQXBpKGJvZHksIGNvbnN0YW50cy5TVEFURV9NQUNISU5FX0FDVElPTl9TVUNDRVNTX1JFU1BPTlNFLCBvcHRpb25zKTtcclxuICB9XHJcblxyXG4gIGdldEF0dGFjaG1lbnRzKGRhdGE6IGFueSwgLi4uYXJnczogYW55KSB7XHJcbiAgICBsZXQgYm9keSA9IHtcclxuICAgICAgbWV0aG9kOiBjb25zdGFudHMuSFRUUF9NRVRIT0RfUE9TVCxcclxuICAgICAgZGVzdGluYXRpb246IGNvbnN0YW50cy5UQVJHRVRfU0VSVkVSX1dNLFxyXG4gICAgICBzZXJ2aWNlTmFtZTogJ2F0dGFjaG1lbnQnXHJcbiAgICAgICwgZm9ybU5hbWU6ICdjb21tb24nXHJcbiAgICAgICwgYm9keToge1xyXG4gICAgICAgIGF0dGFjaG1lbnQ6IHtcclxuICAgICAgICAgIGZpbGVOYW1lOiB0aGlzLmNvbmZpZy5wcm9kdWN0aW9uID8gZGF0YS5maWxlTmFtZSA6ICcnLFxyXG4gICAgICAgICAgbWltZVR5cGU6IHRoaXMuY29uZmlnLnByb2R1Y3Rpb24gPyBkYXRhLm1pbWVUeXBlIDogJycsXHJcbiAgICAgICAgICBmaWxlQ29udGVudHM6IHRoaXMuY29uZmlnLnByb2R1Y3Rpb24gPyBkYXRhLmZpbGVDb250ZW50cyA6ICcnLFxyXG4gICAgICAgIH1cclxuICAgICAgICAsIGNvbW1lbnQ6IGRhdGEuYXR0YWNobWVudGNvbW1lbnRcclxuICAgICAgICAsIGRlc2NyaXB0aW9uOiBkYXRhLmZpbGVEZXNjcmlwdGlvbixcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgbGV0IG9wdGlvbnMgPSB0aGlzLmdldFJlcXVlc3RPcHRpb25zKCk7XHJcbiAgICByZXR1cm4gdGhpcy5nZW5lcmFsQ2FsbEFwaShib2R5LCBjb25zdGFudHMuU1RBVEVfTUFDSElORV9BQ1RJT05fU1VDQ0VTU19SRVNQT05TRSwgb3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICBzZWFyY2hFbXBsb3llZSguLi5hcmdzKSB7XHJcbiAgICBsZXQgW3NlYXJjaFN0cmluZ10gPSBhcmdzO1xyXG4gICAgbGV0IGJvZHkgPSB7XHJcbiAgICAgIG1ldGhvZDogY29uc3RhbnRzLkhUVFBfTUVUSE9EX0dFVCxcclxuICAgICAgZm9ybU5hbWU6IHRoaXMuY29uZmlnLmZvcm1OYW1lLFxyXG4gICAgICBkZXN0aW5hdGlvbjogY29uc3RhbnRzLlRBUkdFVF9TRVJWRVJfRFAsXHJcbiAgICAgIHNlcnZpY2VOYW1lOiBjb25zdGFudHMuU0VSVklDRV9OQU1FX0RQX1NFQVJDSF9FTVBMT1lFRSxcclxuICAgICAgcGFyYW1ldGVyczoge1xyXG4gICAgICAgIHE6IHNlYXJjaFN0cmluZyxcclxuICAgICAgICBsaW1pdDogMTBcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgbGV0IG9wdGlvbnMgPSB0aGlzLmdldFJlcXVlc3RPcHRpb25zKCk7XHJcbiAgICByZXR1cm4gdGhpcy5nZW5lcmFsQ2FsbEFwaShib2R5LCBjb25zdGFudHMuU1RBVEVfTUFDSElORV9BQ1RJT05fU1VDQ0VTU19SRVNQT05TRSwgb3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbXlSZXF1ZXN0cyhkZXRhaWxzKSB7XHJcbiAgICBsZXQgYm9keSA9IHtcclxuICAgICAgbWV0aG9kOiBjb25zdGFudHMuSFRUUF9NRVRIT0RfR0VULFxyXG4gICAgICBkZXN0aW5hdGlvbjogY29uc3RhbnRzLlRBUkdFVF9TRVJWRVJfV00sXHJcbiAgICAgIHNlcnZpY2VOYW1lOiBcImZvcm1cIiAvLywgIC8vdGhpcy5nZXRTZXJ2aWNlTmFtZSgpLFxyXG4gICAgICAsIGZvcm1OYW1lOiBcImhpc3RvcnlcIlxyXG4gICAgICAsIHF1ZXJ5UGFyYW1ldGVyczoge1xyXG4gICAgICAgIGZvcm1OYW1lOiB0aGlzLmNvbmZpZy5mb3JtTmFtZSxcclxuICAgICAgICB5ZWFyOiBkZXRhaWxzLnllYXIsXHJcbiAgICAgICAgbW9udGg6IGRldGFpbHMubW9udGgsXHJcbiAgICAgICAgZW1haWw6IHRoaXMubG9nZ2VkSW5Vc2VySWQoKVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBsZXQgb3B0aW9ucyA9IHRoaXMuZ2V0UmVxdWVzdE9wdGlvbnMoKTtcclxuICAgIHJldHVybiB0aGlzLmdlbmVyYWxDYWxsQXBpKGJvZHksIGNvbnN0YW50cy5TVEFURV9NQUNISU5FX0FDVElPTl9TVUNDRVNTX1JFU1BPTlNFLCBvcHRpb25zKTtcclxuICB9XHJcblxyXG4gIGdlbmVyYWxDYWxsQXBpKGJvZHksIHR5cGU6IHN0cmluZywgb3B0aW9ucykge1xyXG4gICAgbGV0IGFwaVVybCA9IHRoaXMuY29uZmlnLnByb3h5U2VydmljZUJhc2VVcmwgKyB0aGlzLmxhbmd1YWdlICsgdGhpcy5jb25maWcucHJveHlGdWxsQWRkcmVzcyArIHRoaXMuY29uZmlnLnByb3h5U2VydmljZUV4ZWN1dGU7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYXBpVXJsLCBlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkoYm9keSkpLCBvcHRpb25zKS5waXBlKFxyXG4gICAgICBtYXAoKHJlc3BvbnNlT2JqZWN0OiBhbnkpID0+IHtcclxuICAgICAgICByZXR1cm4gcmVzcG9uc2VPYmplY3RcclxuICAgICAgfSksXHJcbiAgICAgIGNhdGNoRXJyb3IoKGh0dHBFcnJvcjogYW55KSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoaHR0cEVycm9yKTtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbG9nZ2VkSW5Vc2VySWQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy51c2VyRGF0YVsnbG9nZ2VkSW5Vc2VyRW1haWwnXTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRTaG9ydE5hbWUobmFtZTogc3RyaW5nKSB7XHJcbiAgICBpZiAobmFtZSkge1xyXG4gICAgICBsZXQgbmFtZVRva2VucyA9IG5hbWUuc3BsaXQoJyAnKTtcclxuICAgICAgaWYgKG5hbWVUb2tlbnMubGVuZ3RoID09IDEpIHtcclxuICAgICAgICByZXR1cm4gW25hbWVUb2tlbnNbMF1dXHJcbiAgICAgIH0gZWxzZSBpZiAobmFtZVRva2Vuc1tuYW1lVG9rZW5zLmxlbmd0aCAtIDJdLnRvTG93ZXJDYXNlKCkgPT0gJ2FsJykge1xyXG4gICAgICAgIHJldHVybiBbbmFtZVRva2Vuc1swXSwgbmFtZVRva2Vuc1tuYW1lVG9rZW5zLmxlbmd0aCAtIDJdLCBuYW1lVG9rZW5zW25hbWVUb2tlbnMubGVuZ3RoIC0gMV1dLmpvaW4oJyAnKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gW25hbWVUb2tlbnNbMF0sIG5hbWVUb2tlbnNbbmFtZVRva2Vucy5sZW5ndGggLSAxXV0uam9pbignICcpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBpc01vYmlsZUFwcCgpIHtcclxuICAgIHJldHVybiAod2luZG93IGFzIGFueSkud21Db25maWcuaXNNb2JpbGU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0SW5ib3hUeXBlKHJlc3VsdCkge1xyXG4gICAgbGV0IHJ0biA9IG51bGw7XHJcbiAgICBpZiAodGhpcy5sb2dnZWRJblVzZXJJZCgpID09PSByZXN1bHQucHJvZmlsZUluZm9Ecm9wLmVtcGxveWVlRW1haWwpIHtcclxuICAgICAgcnRuID0gY29uc3RhbnRzLklOQk9YX1NUQVRVU19TRU5UO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcnRuID0gY29uc3RhbnRzLklOQk9YX1NUQVRVU19QRU5ESU5HO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJ0bjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBpc09wZW5PbkluYm94KCkge1xyXG4gICAgcmV0dXJuICh3aW5kb3cgYXMgYW55KS53bUNvbmZpZy5vdXRsb29rO1xyXG4gIH1cclxufVxyXG4iXX0=
|
package/esm2022/lib/testComponent/general-approver-section/general-approver-section.component.mjs
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { Component, CUSTOM_ELEMENTS_SCHEMA, Input, NO_ERRORS_SCHEMA } from '@angular/core';
|
|
1
|
+
import { Component, CUSTOM_ELEMENTS_SCHEMA, DestroyRef, inject, Input, NO_ERRORS_SCHEMA } from '@angular/core';
|
|
2
2
|
import { NgClass, NgForOf, NgIf } from "@angular/common";
|
|
3
3
|
import { ActionButtonsComponent } from "../../components/shared-components";
|
|
4
4
|
import { FormControl, FormGroup, ReactiveFormsModule, Validators } from "@angular/forms";
|
|
5
5
|
import { CustomSearchableComponent, InputComponent } from '../../components/shared-components';
|
|
6
6
|
import { ValidationErrorsComponent } from '../../components/shared-components/form-field/validation-errors/validation-errors.component';
|
|
7
|
+
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
7
8
|
import * as i0 from "@angular/core";
|
|
8
9
|
import * as i1 from "../../services";
|
|
9
10
|
import * as i2 from "@angular/forms";
|
|
@@ -18,6 +19,7 @@ export class GeneralApproverSectionComponent {
|
|
|
18
19
|
className = "info-section";
|
|
19
20
|
fieldsForm;
|
|
20
21
|
numbers = [...Array(100).keys()].map(i => i + 1);
|
|
22
|
+
destroyRef = inject(DestroyRef);
|
|
21
23
|
formGroup = new FormGroup({
|
|
22
24
|
name: new FormControl('', [Validators.required, Validators.maxLength(3), Validators.minLength(2)]),
|
|
23
25
|
countries: new FormControl('', Validators.required),
|
|
@@ -46,7 +48,7 @@ export class GeneralApproverSectionComponent {
|
|
|
46
48
|
});
|
|
47
49
|
};
|
|
48
50
|
checkValidityAndUpdate();
|
|
49
|
-
this.fieldsForm.valueChanges.subscribe(() => {
|
|
51
|
+
this.fieldsForm.valueChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {
|
|
50
52
|
checkValidityAndUpdate();
|
|
51
53
|
});
|
|
52
54
|
}
|
|
@@ -94,4 +96,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
|
|
|
94
96
|
}], className: [{
|
|
95
97
|
type: Input
|
|
96
98
|
}] } });
|
|
97
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhbC1hcHByb3Zlci1zZWN0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JwbS1jb3JlL3NyYy9saWIvdGVzdENvbXBvbmVudC9nZW5lcmFsLWFwcHJvdmVyLXNlY3Rpb24vZ2VuZXJhbC1hcHByb3Zlci1zZWN0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JwbS1jb3JlL3NyYy9saWIvdGVzdENvbXBvbmVudC9nZW5lcmFsLWFwcHJvdmVyLXNlY3Rpb24vZ2VuZXJhbC1hcHByb3Zlci1zZWN0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsc0JBQXNCLEVBQUUsS0FBSyxFQUFFLGdCQUFnQixFQUFTLE1BQU0sZUFBZSxDQUFDO0FBR2pHLE9BQU8sRUFBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZELE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLG9DQUFvQyxDQUFDO0FBQzFFLE9BQU8sRUFBYyxXQUFXLEVBQUUsU0FBUyxFQUFFLG1CQUFtQixFQUFFLFVBQVUsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3BHLE9BQU8sRUFBQyx5QkFBeUIsRUFBRSxjQUFjLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQztBQUM3RixPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSw2RkFBNkYsQ0FBQzs7OztBQW1CdEksTUFBTSxPQUFPLCtCQUErQjtJQWdCdkI7SUFBK0I7SUFBeUI7SUFkbEUsVUFBVSxDQUFVO0lBQ3BCLE9BQU8sQ0FBVTtJQUNqQixJQUFJLENBQU87SUFDWCxHQUFHLENBQU07SUFDVCxTQUFTLEdBQVcsY0FBYyxDQUFDO0lBQzVDLFVBQVUsQ0FBWTtJQUN0QixPQUFPLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FB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LGNBQWMsc0pBR2Qsc0JBQXNCLCtOQUN0QixtQkFBbUI7OzJGQUtWLCtCQUErQjtrQkFqQjNDLFNBQVM7K0JBQ0UsOEJBQThCLGNBRzVCLElBQUksV0FDUCxDQUFDLHNCQUFzQixFQUFFLGdCQUFnQixDQUFDLFdBQzFDO3dCQUNQLE9BQU87d0JBQ1AsY0FBYzt3QkFDZCxJQUFJO3dCQUNKLE9BQU87d0JBQ1Asc0JBQXNCO3dCQUN0QixtQkFBbUI7d0JBQ25CLHlCQUF5Qjt3QkFDekIseUJBQXlCO3FCQUMxQjsrSUFJUSxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csR0FBRztzQkFBWCxLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQSwgSW5wdXQsIE5PX0VSUk9SU19TQ0hFTUEsIE9uSW5pdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7Rm9ybSwgU2VjdGlvbn0gZnJvbSBcIi4uLy4uL2ludGVyZmFjZXNcIjtcclxuaW1wb3J0IHtBY3Rpb25TdGF0ZVNlcnZpY2UsIENvcmVJMThuU2VydmljZX0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzXCI7XHJcbmltcG9ydCB7TmdDbGFzcywgTmdGb3JPZiwgTmdJZn0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5pbXBvcnQge0FjdGlvbkJ1dHRvbnNDb21wb25lbnR9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3NoYXJlZC1jb21wb25lbnRzXCI7XHJcbmltcG9ydCB7Rm9ybUJ1aWxkZXIsIEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIFZhbGlkYXRvcnN9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQge0N1c3RvbVNlYXJjaGFibGVDb21wb25lbnQsIElucHV0Q29tcG9uZW50fSBmcm9tICcuLi8uLi9jb21wb25lbnRzL3NoYXJlZC1jb21wb25lbnRzJztcclxuaW1wb3J0IHtWYWxpZGF0aW9uRXJyb3JzQ29tcG9uZW50fSBmcm9tICcuLi8uLi9jb21wb25lbnRzL3NoYXJlZC1jb21wb25lbnRzL2Zvcm0tZmllbGQvdmFsaWRhdGlvbi1lcnJvcnMvdmFsaWRhdGlvbi1lcnJvcnMuY29tcG9uZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLWdlbmVyYWwtYXBwcm92ZXItc2VjdGlvbicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2dlbmVyYWwtYXBwcm92ZXItc2VjdGlvbi5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZ2VuZXJhbC1hcHByb3Zlci1zZWN0aW9uLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQSwgTk9fRVJST1JTX1NDSEVNQV0sXHJcbiAgaW1wb3J0czogW1xyXG4gICAgTmdDbGFzcyxcclxuICAgIElucHV0Q29tcG9uZW50LFxyXG4gICAgTmdJZixcclxuICAgIE5nRm9yT2YsXHJcbiAgICBBY3Rpb25CdXR0b25zQ29tcG9uZW50LFxyXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICAgIFZhbGlkYXRpb25FcnJvcnNDb21wb25lbnQsXHJcbiAgICBDdXN0b21TZWFyY2hhYmxlQ29tcG9uZW50XHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgR2VuZXJhbEFwcHJvdmVyU2VjdGlvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdHtcclxuXHJcbiAgQElucHV0KCkgaXNSZWFkT25seTogYm9vbGVhbjtcclxuICBASW5wdXQoKSBzZWN0aW9uOiBTZWN0aW9uO1xyXG4gIEBJbnB1dCgpIGZvcm06IEZvcm07XHJcbiAgQElucHV0KCkgbG92OiBhbnk7XHJcbiAgQElucHV0KCkgY2xhc3NOYW1lOiBzdHJpbmcgPSBcImluZm8tc2VjdGlvblwiO1xyXG4gIGZpZWxkc0Zvcm06IEZvcm1Hcm91cDtcclxuICBudW1iZXJzID0gWy4uLkFycmF5KDEwMCkua2V5cygpXS5tYXAoaSA9PiBpICsgMSk7XHJcblxyXG4gIGZvcm1Hcm91cCA9IG5ldyBGb3JtR3JvdXAoe1xyXG4gICAgbmFtZTogbmV3IEZvcm1Db250cm9sKCcnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMyksIFZhbGlkYXRvcnMubWluTGVuZ3RoKDIpXSksXHJcbiAgICBjb3VudHJpZXM6IG5ldyBGb3JtQ29udHJvbCgnJywgVmFsaWRhdG9ycy5yZXF1aXJlZCksXHJcbiAgfSk7XHJcblxyXG5cclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgaTE4bjogQ29yZUkxOG5TZXJ2aWNlLCBwcml2YXRlIGZiOiBGb3JtQnVpbGRlciwgcHJpdmF0ZSBhY3Rpb25TdGF0ZVNlcnZpY2U6IEFjdGlvblN0YXRlU2VydmljZSkge1xyXG5cclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5jcmVhdGVGb3JtKCk7XHJcbiAgfVxyXG5cclxuICBjcmVhdGVGb3JtKCkge1xyXG4gICAgbGV0IG5ld0Zvcm0gPSB7XHJcbiAgICAgIGlucHV0MTogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXVxyXG4gICAgfTtcclxuICAgIHRoaXMubG92Py5bJ2RlY2lzaW9uJ10/Lm9wdGlvbnM/LmZvckVhY2gob3B0aW9uID0+IHtcclxuICAgICAgbmV3Rm9ybVtvcHRpb24udmFsdWVdID0gWycnXTtcclxuICAgIH0pXHJcbiAgICB0aGlzLmZpZWxkc0Zvcm0gPSB0aGlzLmZiLmdyb3VwKG5ld0Zvcm0pO1xyXG5cclxuICAgIGNvbnN0IGNoZWNrVmFsaWRpdHlBbmRVcGRhdGUgPSAoKSA9PiB7XHJcbiAgICAgIHRoaXMubG92Py5bJ2RlY2lzaW9uJ10/Lm9wdGlvbnM/LmZvckVhY2gob3B0aW9uID0+IHtcclxuICAgICAgICBsZXQgaXNBY3Rpb25WYWxpZCA9IHRoaXMuY2hlY2tWYWxpZGl0eShvcHRpb24udmFsdWUpO1xyXG4gICAgICAgIHRoaXMuYWN0aW9uU3RhdGVTZXJ2aWNlLnNldEFjdGlvblZhbGlkKG9wdGlvbi52YWx1ZSwgaXNBY3Rpb25WYWxpZCk7XHJcbiAgICAgICAgdGhpcy5zZWN0aW9uLmJvZHkuZGV0YWlscyA9IHRoaXMuZmllbGRzRm9ybS52YWx1ZVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBjaGVja1ZhbGlkaXR5QW5kVXBkYXRlKCk7XHJcblxyXG4gICAgdGhpcy5maWVsZHNGb3JtLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICBjaGVja1ZhbGlkaXR5QW5kVXBkYXRlKCk7XHJcbiAgICB9KTtcclxuXHJcbiAgfVxyXG5cclxuICBjaGVja1ZhbGlkaXR5KGFjdGlvbjogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICBzd2l0Y2ggKGFjdGlvbikge1xyXG4gICAgICBjYXNlICdBUFBST1ZFJzpcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgY2FzZSAnUkVKRUNUJzpcclxuICAgICAgICByZXR1cm4gdGhpcy5maWVsZHNGb3JtLnZhbGlkO1xyXG4gICAgICBjYXNlICdTRU5EQkFDSyc6XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZmllbGRzRm9ybS52YWxpZDtcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgY3VzdG9tQ2FsbFN1Ym1pdChhY3Rpb246IHN0cmluZykge1xyXG4gICAgY29uc29sZS5sb2coJ2N1c3RvbUNhbGxTdWJtaXQnLCBhY3Rpb24pXHJcbiAgfVxyXG5cclxuICByZXNldEZvcm0oKSB7XHJcbiAgICB0aGlzLmZpZWxkc0Zvcm0ucmVzZXQoKVxyXG4gIH1cclxuXHJcbn1cclxuIiwiPGRpdlxyXG4gIFtuZ0NsYXNzXT1cInsnZm9ybS1zZWN0aW9uLWRpdmlkZSBmb3JtLXNlY3Rpb24nOiFzZWN0aW9uPy5oZWFkZXI/LnJlYWRPbmx5LCdpbmZvLXNlY3Rpb24nOnNlY3Rpb24/LmhlYWRlcj8ucmVhZE9ubHl9XCI+XHJcblxyXG4gIDxkcy1hbGVydCBjbGFzcz1cImZ1bGxcIiB0eXBlPVwid2FybmluZ1wiIGljb249XCJpbmZvXCI+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBnYXAtMlwiPlxyXG5cclxuICAgICAgUmVxdWVzdCBkZXRhaWxzIHdvcmtpbmcgZmluZVxyXG5cclxuICAgIDwvZGl2PlxyXG5cclxuICA8L2RzLWFsZXJ0PlxyXG5cclxuICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZpZWxkc0Zvcm1cIj5cclxuICAgIDxhcHAtaW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiaW5wdXQxXCI+PC9hcHAtaW5wdXQ+XHJcbiAgPC9mb3JtPlxyXG5cclxuPC9kaXY+XHJcbkBpZiAoIXNlY3Rpb24/LmhlYWRlcj8ucmVhZE9ubHkpIHtcclxuICA8ZGl2IGNsYXNzPVwibXQtNFwiPlxyXG4gICAgPGxpYi1hY3Rpb24tYnV0dG9uc1xyXG4gICAgICBbbG92T3B0aW9uc109XCJsb3Y/LlsnZGVjaXNpb24nXT8ub3B0aW9uc1wiXHJcbiAgICAgIFtsb3ZUeXBlXT1cImxvdj8uWydkZWNpc2lvbiddPy50eXBlXCJcclxuICAgICAgW3NlY3Rpb25dPVwic2VjdGlvblwiXHJcbiAgICAgIFtmb3JtXT1cImZvcm1cIlxyXG4gICAgICBbc2VjdGlvbnNdPVwiZm9ybS5zZWN0aW9uc1wiXHJcbiAgICAgIFtzaG93QXBwcm92YWxDeWNsZV09XCJ0cnVlXCJcclxuICAgICAgW2N1c3RvbUNhbGxdPVwiZmFsc2VcIlxyXG4gICAgICBbZmllbGRzRm9ybV09XCJmaWVsZHNGb3JtXCJcclxuICAgICAgKGN1c3RvbUNhbGxFbWl0KT1cImN1c3RvbUNhbGxTdWJtaXQoJGV2ZW50KVwiXHJcbiAgICAgIChyZXNldEZvcm1FbWl0KT1cInJlc2V0Rm9ybSgpXCJcclxuICAgIC8+XHJcbiAgPC9kaXY+XHJcbn1cclxuIl19
|
|
99
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhbC1hcHByb3Zlci1zZWN0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JwbS1jb3JlL3NyYy9saWIvdGVzdENvbXBvbmVudC9nZW5lcmFsLWFwcHJvdmVyLXNlY3Rpb24vZ2VuZXJhbC1hcHByb3Zlci1zZWN0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JwbS1jb3JlL3NyYy9saWIvdGVzdENvbXBvbmVudC9nZW5lcmFsLWFwcHJvdmVyLXNlY3Rpb24vZ2VuZXJhbC1hcHByb3Zlci1zZWN0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsc0JBQXNCLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsZ0JBQWdCLEVBQVMsTUFBTSxlQUFlLENBQUM7QUFHckgsT0FBTyxFQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDdkQsT0FBTyxFQUFDLHNCQUFzQixFQUFDLE1BQU0sb0NBQW9DLENBQUM7QUFDMUUsT0FBTyxFQUFjLFdBQVcsRUFBRSxTQUFTLEVBQUUsbUJBQW1CLEVBQUUsVUFBVSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEcsT0FBTyxFQUFDLHlCQUF5QixFQUFFLGNBQWMsRUFBQyxNQUFNLG9DQUFvQyxDQUFDO0FBQzdGLE9BQU8sRUFBQyx5QkFBeUIsRUFBQyxNQUFNLDZGQUE2RixDQUFDO0FBQ3RJLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7O0FBbUJoRSxNQUFNLE9BQU8sK0JBQStCO0lBa0J2QjtJQUErQjtJQUF5QjtJQWhCbEUsVUFBVSxDQUFVO0lBQ3BCLE9BQU8sQ0FBVTtJQUNqQixJQUFJLENBQU87SUFDWCxHQUFHLENBQU07SUFDVCxTQUFT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QkFBa0IsRUFBRSxNQUFNLENBQUMsQ0FBQTtJQUN6QyxDQUFDO0lBRUQsU0FBUztRQUNQLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUE7SUFDekIsQ0FBQzt1R0F6RVUsK0JBQStCOzJGQUEvQiwrQkFBK0Isb01DM0I1QyxxOEJBa0NBLG95QkRqQkksT0FBTyxvRkFDUCxjQUFjLHNKQUdkLHNCQUFzQiwrTkFDdEIsbUJBQW1COzsyRkFLViwrQkFBK0I7a0JBakIzQyxTQUFTOytCQUNFLDhCQUE4QixjQUc1QixJQUFJLFdBQ1AsQ0FBQyxzQkFBc0IsRUFBRSxnQkFBZ0IsQ0FBQyxXQUMxQzt3QkFDUCxPQUFPO3dCQUNQLGNBQWM7d0JBQ2QsSUFBSTt3QkFDSixPQUFPO3dCQUNQLHNCQUFzQjt3QkFDdEIsbUJBQW1CO3dCQUNuQix5QkFBeUI7d0JBQ3pCLHlCQUF5QjtxQkFDMUI7K0lBSVEsVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLEdBQUc7c0JBQVgsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsIERlc3Ryb3lSZWYsIGluamVjdCwgSW5wdXQsIE5PX0VSUk9SU19TQ0hFTUEsIE9uSW5pdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7Rm9ybSwgU2VjdGlvbn0gZnJvbSBcIi4uLy4uL2ludGVyZmFjZXNcIjtcclxuaW1wb3J0IHtBY3Rpb25TdGF0ZVNlcnZpY2UsIENvcmVJMThuU2VydmljZX0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzXCI7XHJcbmltcG9ydCB7TmdDbGFzcywgTmdGb3JPZiwgTmdJZn0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5pbXBvcnQge0FjdGlvbkJ1dHRvbnNDb21wb25lbnR9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3NoYXJlZC1jb21wb25lbnRzXCI7XHJcbmltcG9ydCB7Rm9ybUJ1aWxkZXIsIEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIFZhbGlkYXRvcnN9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQge0N1c3RvbVNlYXJjaGFibGVDb21wb25lbnQsIElucHV0Q29tcG9uZW50fSBmcm9tICcuLi8uLi9jb21wb25lbnRzL3NoYXJlZC1jb21wb25lbnRzJztcclxuaW1wb3J0IHtWYWxpZGF0aW9uRXJyb3JzQ29tcG9uZW50fSBmcm9tICcuLi8uLi9jb21wb25lbnRzL3NoYXJlZC1jb21wb25lbnRzL2Zvcm0tZmllbGQvdmFsaWRhdGlvbi1lcnJvcnMvdmFsaWRhdGlvbi1lcnJvcnMuY29tcG9uZW50JztcclxuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtZ2VuZXJhbC1hcHByb3Zlci1zZWN0aW9uJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZ2VuZXJhbC1hcHByb3Zlci1zZWN0aW9uLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9nZW5lcmFsLWFwcHJvdmVyLXNlY3Rpb24uY29tcG9uZW50LnNjc3MnXSxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BLCBOT19FUlJPUlNfU0NIRU1BXSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBOZ0NsYXNzLFxyXG4gICAgSW5wdXRDb21wb25lbnQsXHJcbiAgICBOZ0lmLFxyXG4gICAgTmdGb3JPZixcclxuICAgIEFjdGlvbkJ1dHRvbnNDb21wb25lbnQsXHJcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gICAgVmFsaWRhdGlvbkVycm9yc0NvbXBvbmVudCxcclxuICAgIEN1c3RvbVNlYXJjaGFibGVDb21wb25lbnRcclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBHZW5lcmFsQXBwcm92ZXJTZWN0aW9uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0e1xyXG5cclxuICBASW5wdXQoKSBpc1JlYWRPbmx5OiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIHNlY3Rpb246IFNlY3Rpb247XHJcbiAgQElucHV0KCkgZm9ybTogRm9ybTtcclxuICBASW5wdXQoKSBsb3Y6IGFueTtcclxuICBASW5wdXQoKSBjbGFzc05hbWU6IHN0cmluZyA9IFwiaW5mby1zZWN0aW9uXCI7XHJcbiAgZmllbGRzRm9ybTogRm9ybUdyb3VwO1xyXG4gIG51bWJlcnMgPSBbLi4uQXJyYXkoMTAwKS5rZXlzKCldLm1hcChpID0+IGkgKyAxKTtcclxuICBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xyXG5cclxuXHJcbiAgZm9ybUdyb3VwID0gbmV3IEZvcm1Hcm91cCh7XHJcbiAgICBuYW1lOiBuZXcgRm9ybUNvbnRyb2woJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1heExlbmd0aCgzKSwgVmFsaWRhdG9ycy5taW5MZW5ndGgoMildKSxcclxuICAgIGNvdW50cmllczogbmV3IEZvcm1Db250cm9sKCcnLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcclxuICB9KTtcclxuXHJcblxyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBpMThuOiBDb3JlSTE4blNlcnZpY2UsIHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyLCBwcml2YXRlIGFjdGlvblN0YXRlU2VydmljZTogQWN0aW9uU3RhdGVTZXJ2aWNlKSB7XHJcblxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmNyZWF0ZUZvcm0oKTtcclxuICB9XHJcblxyXG4gIGNyZWF0ZUZvcm0oKSB7XHJcbiAgICBsZXQgbmV3Rm9ybSA9IHtcclxuICAgICAgaW5wdXQxOiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdXHJcbiAgICB9O1xyXG4gICAgdGhpcy5sb3Y/LlsnZGVjaXNpb24nXT8ub3B0aW9ucz8uZm9yRWFjaChvcHRpb24gPT4ge1xyXG4gICAgICBuZXdGb3JtW29wdGlvbi52YWx1ZV0gPSBbJyddO1xyXG4gICAgfSlcclxuICAgIHRoaXMuZmllbGRzRm9ybSA9IHRoaXMuZmIuZ3JvdXAobmV3Rm9ybSk7XHJcblxyXG4gICAgY29uc3QgY2hlY2tWYWxpZGl0eUFuZFVwZGF0ZSA9ICgpID0+IHtcclxuICAgICAgdGhpcy5sb3Y/LlsnZGVjaXNpb24nXT8ub3B0aW9ucz8uZm9yRWFjaChvcHRpb24gPT4ge1xyXG4gICAgICAgIGxldCBpc0FjdGlvblZhbGlkID0gdGhpcy5jaGVja1ZhbGlkaXR5KG9wdGlvbi52YWx1ZSk7XHJcbiAgICAgICAgdGhpcy5hY3Rpb25TdGF0ZVNlcnZpY2Uuc2V0QWN0aW9uVmFsaWQob3B0aW9uLnZhbHVlLCBpc0FjdGlvblZhbGlkKTtcclxuICAgICAgICB0aGlzLnNlY3Rpb24uYm9keS5kZXRhaWxzID0gdGhpcy5maWVsZHNGb3JtLnZhbHVlXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGNoZWNrVmFsaWRpdHlBbmRVcGRhdGUoKTtcclxuXHJcbiAgICB0aGlzLmZpZWxkc0Zvcm0udmFsdWVDaGFuZ2VzLnBpcGUoXHJcbiAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpXHJcbiAgICApLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIGNoZWNrVmFsaWRpdHlBbmRVcGRhdGUoKTtcclxuICAgIH0pO1xyXG5cclxuICB9XHJcblxyXG4gIGNoZWNrVmFsaWRpdHkoYWN0aW9uOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIHN3aXRjaCAoYWN0aW9uKSB7XHJcbiAgICAgIGNhc2UgJ0FQUFJPVkUnOlxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICBjYXNlICdSRUpFQ1QnOlxyXG4gICAgICAgIHJldHVybiB0aGlzLmZpZWxkc0Zvcm0udmFsaWQ7XHJcbiAgICAgIGNhc2UgJ1NFTkRCQUNLJzpcclxuICAgICAgICByZXR1cm4gdGhpcy5maWVsZHNGb3JtLnZhbGlkO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICBjdXN0b21DYWxsU3VibWl0KGFjdGlvbjogc3RyaW5nKSB7XHJcbiAgICBjb25zb2xlLmxvZygnY3VzdG9tQ2FsbFN1Ym1pdCcsIGFjdGlvbilcclxuICB9XHJcblxyXG4gIHJlc2V0Rm9ybSgpIHtcclxuICAgIHRoaXMuZmllbGRzRm9ybS5yZXNldCgpXHJcbiAgfVxyXG5cclxufVxyXG4iLCI8ZGl2XHJcbiAgW25nQ2xhc3NdPVwieydmb3JtLXNlY3Rpb24tZGl2aWRlIGZvcm0tc2VjdGlvbic6IXNlY3Rpb24/LmhlYWRlcj8ucmVhZE9ubHksJ2luZm8tc2VjdGlvbic6c2VjdGlvbj8uaGVhZGVyPy5yZWFkT25seX1cIj5cclxuXHJcbiAgPGRzLWFsZXJ0IGNsYXNzPVwiZnVsbFwiIHR5cGU9XCJ3YXJuaW5nXCIgaWNvbj1cImluZm9cIj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGdhcC0yXCI+XHJcblxyXG4gICAgICBSZXF1ZXN0IGRldGFpbHMgd29ya2luZyBmaW5lXHJcblxyXG4gICAgPC9kaXY+XHJcblxyXG4gIDwvZHMtYWxlcnQ+XHJcblxyXG4gIDxmb3JtIFtmb3JtR3JvdXBdPVwiZmllbGRzRm9ybVwiPlxyXG4gICAgPGFwcC1pbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJpbnB1dDFcIj48L2FwcC1pbnB1dD5cclxuICA8L2Zvcm0+XHJcblxyXG48L2Rpdj5cclxuQGlmICghc2VjdGlvbj8uaGVhZGVyPy5yZWFkT25seSkge1xyXG4gIDxkaXYgY2xhc3M9XCJtdC00XCI+XHJcbiAgICA8bGliLWFjdGlvbi1idXR0b25zXHJcbiAgICAgIFtsb3ZPcHRpb25zXT1cImxvdj8uWydkZWNpc2lvbiddPy5vcHRpb25zXCJcclxuICAgICAgW2xvdlR5cGVdPVwibG92Py5bJ2RlY2lzaW9uJ10/LnR5cGVcIlxyXG4gICAgICBbc2VjdGlvbl09XCJzZWN0aW9uXCJcclxuICAgICAgW2Zvcm1dPVwiZm9ybVwiXHJcbiAgICAgIFtzZWN0aW9uc109XCJmb3JtLnNlY3Rpb25zXCJcclxuICAgICAgW3Nob3dBcHByb3ZhbEN5Y2xlXT1cInRydWVcIlxyXG4gICAgICBbY3VzdG9tQ2FsbF09XCJmYWxzZVwiXHJcbiAgICAgIFtmaWVsZHNGb3JtXT1cImZpZWxkc0Zvcm1cIlxyXG4gICAgICAoY3VzdG9tQ2FsbEVtaXQpPVwiY3VzdG9tQ2FsbFN1Ym1pdCgkZXZlbnQpXCJcclxuICAgICAgKHJlc2V0Rm9ybUVtaXQpPVwicmVzZXRGb3JtKClcIlxyXG4gICAgLz5cclxuICA8L2Rpdj5cclxufVxyXG4iXX0=
|