vcomply-workflow-engine 2.6.30 → 2.6.31
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/bundles/vcomply-workflow-engine.umd.js +941 -591
- package/bundles/vcomply-workflow-engine.umd.js.map +1 -1
- package/esm2015/lib/add-multiple-responsibility/add-multiple-responsibility.component.js +92 -39
- package/esm2015/lib/add-multiple-risk/add-multiple-risk.component.js +3 -3
- package/esm2015/lib/add-multiple-risk/add-multiple-risk.component.ngfactory.js +2 -2
- package/esm2015/lib/confirmation-alert/confirmation-alert.component.js +4 -4
- package/esm2015/lib/confirmation-alert/confirmation-alert.component.ngfactory.js +11 -4
- package/esm2015/lib/formgroup/cs-checkbox-indeterminate/cs-checkbox-indeterminate.component.js +1 -1
- package/esm2015/lib/interfaces/confirmation-alert.js +1 -1
- package/esm2015/lib/log-an-issue/log-an-issue.component.js +16 -12
- package/esm2015/lib/log-an-issue/log-an-issue.component.ngfactory.js +49 -50
- package/esm2015/lib/log-an-issue/log-an-issue.component.ngsummary.json +1 -1
- package/esm2015/lib/sharedComponents/assessment-editor/services/editor.service.js +1 -1
- package/esm2015/lib/sharedComponents/assessment-editor/services/validator.service.js +6 -4
- package/esm2015/lib/sharedComponents/assessment-editor/services/validator.service.ngsummary.json +1 -1
- package/esm2015/lib/sharedComponents/bulk-responsibility-view/bulk-responsibility-view.component.js +4 -3
- package/esm2015/lib/sharedComponents/bulk-responsibility-view/bulk-responsibility-view.component.ngfactory.js +18 -17
- package/esm2015/lib/sharedComponents/floating-bar/floating-bar.component.js +8 -3
- package/esm2015/lib/sharedComponents/floating-bar/floating-bar.component.ngfactory.js +4 -3
- package/esm2015/lib/sharedComponents/floating-bar/floating-bar.component.ngsummary.json +1 -1
- package/esm2015/lib/sharedComponents/format-and-evidence/format-and-evidence.component.js +1 -1
- package/esm2015/lib/sharedComponents/frequency/frequency-annual/frequency-annual.component.js +2 -3
- package/esm2015/lib/sharedComponents/frequency/frequency-annual/frequency-annual.component.ngfactory.js +14 -15
- package/esm2015/lib/sharedComponents/frequency/frequency-annual/frequency-annual.component.ngsummary.json +1 -1
- package/esm2015/lib/sharedComponents/frequency/frequency-biannual/frequency-biannual.component.js +2 -3
- package/esm2015/lib/sharedComponents/frequency/frequency-biannual/frequency-biannual.component.ngfactory.js +14 -15
- package/esm2015/lib/sharedComponents/frequency/frequency-biannual/frequency-biannual.component.ngsummary.json +1 -1
- package/esm2015/lib/sharedComponents/frequency/frequency-container/frequency-container.component.js +2 -10
- package/esm2015/lib/sharedComponents/frequency/frequency-container/frequency-container.component.ngfactory.js +9 -9
- package/esm2015/lib/sharedComponents/frequency/frequency-container/frequency-container.component.ngsummary.json +1 -1
- package/esm2015/lib/sharedComponents/frequency/frequency-daily/frequency-daily.component.js +2 -3
- package/esm2015/lib/sharedComponents/frequency/frequency-daily/frequency-daily.component.ngfactory.js +11 -12
- package/esm2015/lib/sharedComponents/frequency/frequency-daily/frequency-daily.component.ngsummary.json +1 -1
- package/esm2015/lib/sharedComponents/frequency/frequency-monthly/frequency-monthly.component.js +2 -3
- package/esm2015/lib/sharedComponents/frequency/frequency-monthly/frequency-monthly.component.ngfactory.js +14 -15
- package/esm2015/lib/sharedComponents/frequency/frequency-monthly/frequency-monthly.component.ngsummary.json +1 -1
- package/esm2015/lib/sharedComponents/frequency/frequency-one-time/frequency-one-time.component.js +2 -3
- package/esm2015/lib/sharedComponents/frequency/frequency-one-time/frequency-one-time.component.ngfactory.js +16 -17
- package/esm2015/lib/sharedComponents/frequency/frequency-one-time/frequency-one-time.component.ngsummary.json +1 -1
- package/esm2015/lib/sharedComponents/frequency/frequency-quarterly/frequency-quarterly.component.js +2 -3
- package/esm2015/lib/sharedComponents/frequency/frequency-quarterly/frequency-quarterly.component.ngfactory.js +14 -15
- package/esm2015/lib/sharedComponents/frequency/frequency-quarterly/frequency-quarterly.component.ngsummary.json +1 -1
- package/esm2015/lib/sharedComponents/frequency/frequency-weekly/frequency-weekly.component.js +2 -3
- package/esm2015/lib/sharedComponents/frequency/frequency-weekly/frequency-weekly.component.ngfactory.js +14 -15
- package/esm2015/lib/sharedComponents/frequency/frequency-weekly/frequency-weekly.component.ngsummary.json +1 -1
- package/esm2015/lib/sharedComponents/program-listing/program-list-model.js +1 -1
- package/esm2015/lib/sharedComponents/program-listing/program-listing.component.js +303 -45
- package/esm2015/lib/sharedComponents/program-listing/program-listing.component.ngfactory.js +90 -74
- package/esm2015/lib/sharedComponents/program-listing/program-listing.component.ngsummary.json +1 -1
- package/esm2015/lib/sharedComponents/risk-classification/risk-classification.component.js +1 -1
- package/esm2015/lib/ui-kit/formgroup/cs-checkbox-indeterminate/cs-checkbox-indeterminate.component.js +1 -1
- package/esm2015/lib/workflow-assessment/import-an-assessment/import-an-assessment.component.js +1 -1
- package/esm2015/lib/workflow-assessment/workflow-assessment.component.js +1 -1
- package/esm2015/lib/workflow-compliance/workflow-compliance.component.js +231 -132
- package/esm2015/lib/workflow-compliance/workflow-compliance.component.ngfactory.js +264 -264
- package/esm2015/lib/workflow-compliance/workflow-compliance.component.ngsummary.json +1 -1
- package/esm2015/lib/workflow-engine-container/workflow-engine-container.component.js +14 -3
- package/esm2015/lib/workflow-engine-container/workflow-engine-container.component.ngfactory.js +17 -14
- package/esm2015/lib/workflow-engine-container/workflow-engine-container.component.ngsummary.json +1 -1
- package/esm2015/lib/workflow-engine.module.js +2 -6
- package/esm2015/lib/workflow-engine.module.ngfactory.js +1 -1
- package/esm2015/lib/workflow-policy/workflow-policy.component.js +1 -1
- package/esm2015/lib/workflow-program/create-program-ui/file-pill/file-pill.component.js +1 -1
- package/esm2015/lib/workflow-program/create-program-ui/form-field/form-field.component.js +1 -1
- package/esm2015/lib/workflow-program/create-program-ui/input-with-pill/input-with-pill.component.js +1 -1
- package/esm2015/lib/workflow-program/workflow-program.component.js +6 -4
- package/esm2015/lib/workflow-risk/workflow-risk.component.js +1 -1
- package/esm2015/lib/workflow-services/add-risk.service.js +7 -4
- package/esm2015/lib/workflow-services/auth.service.js +7 -4
- package/esm2015/lib/workflow-services/responsibility.service.js +14 -10
- package/esm2015/lib/workflow-services/responsibility.service.ngsummary.json +1 -1
- package/esm2015/lib/workflow-survey-form/workflow-survey-form.component.js +1 -1
- package/esm2015/vcomply-workflow-engine.js +188 -190
- package/esm2015/vcomply-workflow-engine.ngsummary.json +1 -1
- package/fesm2015/vcomply-workflow-engine.js +730 -394
- package/fesm2015/vcomply-workflow-engine.js.map +1 -1
- package/lib/interfaces/confirmation-alert.d.ts +1 -0
- package/lib/log-an-issue/log-an-issue.component.d.ts +3 -3
- package/lib/sharedComponents/assessment-editor/services/validator.service.d.ts +1 -0
- package/lib/sharedComponents/floating-bar/floating-bar.component.d.ts +2 -0
- package/lib/sharedComponents/frequency/frequency-annual/frequency-annual.component.d.ts +0 -1
- package/lib/sharedComponents/frequency/frequency-biannual/frequency-biannual.component.d.ts +0 -1
- package/lib/sharedComponents/frequency/frequency-container/frequency-container.component.d.ts +0 -1
- package/lib/sharedComponents/frequency/frequency-daily/frequency-daily.component.d.ts +0 -1
- package/lib/sharedComponents/frequency/frequency-monthly/frequency-monthly.component.d.ts +0 -1
- package/lib/sharedComponents/frequency/frequency-one-time/frequency-one-time.component.d.ts +0 -1
- package/lib/sharedComponents/frequency/frequency-quarterly/frequency-quarterly.component.d.ts +0 -1
- package/lib/sharedComponents/frequency/frequency-weekly/frequency-weekly.component.d.ts +0 -1
- package/lib/sharedComponents/program-listing/program-list-model.d.ts +2 -0
- package/lib/sharedComponents/program-listing/program-listing.component.d.ts +62 -1
- package/lib/workflow-compliance/workflow-compliance.component.d.ts +108 -13
- package/lib/workflow-engine-container/workflow-engine-container.component.d.ts +1 -0
- package/lib/workflow-services/responsibility.service.d.ts +2 -2
- package/package.json +1 -1
- package/vcomply-workflow-engine.d.ts +187 -189
- package/vcomply-workflow-engine.metadata.json +1 -1
- package/esm2015/lib/sharedComponents/system-task-selector/system-task-selector.component.js +0 -54
- package/esm2015/lib/sharedComponents/system-task-selector/system-task-selector.component.ngfactory.js +0 -75
- package/esm2015/lib/sharedComponents/system-task-selector/system-task-selector.component.ngsummary.json +0 -1
- package/esm2015/lib/sharedComponents/tab-selector/tab-selector.component.js +0 -41
- package/esm2015/lib/sharedComponents/tab-selector/tab-selector.component.ngfactory.js +0 -23
- package/esm2015/lib/sharedComponents/tab-selector/tab-selector.component.ngsummary.json +0 -1
- package/lib/sharedComponents/system-task-selector/system-task-selector.component.d.ts +0 -19
- package/lib/sharedComponents/system-task-selector/system-task-selector.component.ngfactory.d.ts +0 -1
- package/lib/sharedComponents/tab-selector/tab-selector.component.d.ts +0 -17
- package/lib/sharedComponents/tab-selector/tab-selector.component.ngfactory.d.ts +0 -1
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { Injectable } from '@angular/core';
|
|
2
|
-
import cloneDeep from 'lodash/cloneDeep';
|
|
3
2
|
import * as i0 from "@angular/core";
|
|
4
3
|
export class ValidatorService {
|
|
5
4
|
constructor() {
|
|
@@ -509,7 +508,7 @@ export class ValidatorService {
|
|
|
509
508
|
checkForSameTitle(choices) {
|
|
510
509
|
const title = choices.map((data) => data.title);
|
|
511
510
|
for (const choice of choices) {
|
|
512
|
-
const sameTitle =
|
|
511
|
+
const sameTitle = this.cloneByValue(title).filter((data) => data === choice.title);
|
|
513
512
|
if (sameTitle.length > 1) {
|
|
514
513
|
return false;
|
|
515
514
|
}
|
|
@@ -523,7 +522,7 @@ export class ValidatorService {
|
|
|
523
522
|
checkForSameTitleWithOther(questionDetails) {
|
|
524
523
|
const title = questionDetails.choices.map((data) => data.title.trim());
|
|
525
524
|
for (const choice of questionDetails.choices) {
|
|
526
|
-
const sameTitle =
|
|
525
|
+
const sameTitle = this.cloneByValue(title).filter((data) => data === choice.title.trim());
|
|
527
526
|
if (sameTitle.length > 1) {
|
|
528
527
|
return false;
|
|
529
528
|
}
|
|
@@ -535,6 +534,9 @@ export class ValidatorService {
|
|
|
535
534
|
}
|
|
536
535
|
return true;
|
|
537
536
|
}
|
|
537
|
+
cloneByValue(value) {
|
|
538
|
+
return JSON.parse(JSON.stringify(value));
|
|
539
|
+
}
|
|
538
540
|
}
|
|
539
541
|
ValidatorService.ɵprov = i0.ɵɵdefineInjectable({ factory: function ValidatorService_Factory() { return new ValidatorService(); }, token: ValidatorService, providedIn: "root" });
|
|
540
542
|
ValidatorService.decorators = [
|
|
@@ -543,4 +545,4 @@ ValidatorService.decorators = [
|
|
|
543
545
|
},] }
|
|
544
546
|
];
|
|
545
547
|
ValidatorService.ctorParameters = () => [];
|
|
546
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9yLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi9zaGFyZWRDb21wb25lbnRzL2Fzc2Vzc21lbnQtZWRpdG9yL3NlcnZpY2VzL3ZhbGlkYXRvci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxTQUFTLE1BQU0sa0JBQWtCLENBQUM7O0FBUXpDLE1BQU0sT0FBTyxnQkFBZ0I7SUFFM0I7UUFHTyx1QkFBa0IsR0FBUSxFQUFFLENBQUM7SUFEcEMsQ0FBQztJQUlELFFBQVEsQ0FBQyxRQUFrQjtRQUN6QixRQUFRLFFBQVEsQ0FBQyxJQUFJLEVBQUU7WUFDckIsS0FBSyxVQUFXLENBQUMsQ0FBQztnQkFDaEIsT0FBUSxJQUFJLENBQUMsMkJBQTJCLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDcEQ7WUFDRCxLQUFLLFVBQVcsQ0FBQyxDQUFDO2dCQUNoQixPQUFRLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUNwRDtZQUNELEtBQUssaUJBQWtCLENBQUMsQ0FBQztnQkFDdkIsT0FBUSxJQUFJLENBQUMsMkJBQTJCLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDcEQ7WUFDRCxLQUFLLFNBQVUsQ0FBQyxDQUFDO2dCQUNmLE9BQU8sSUFBSSxDQUFDLDJCQUEyQixDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQ25EO1lBQ0QsS0FBSyxhQUFhLENBQUMsQ0FBQztnQkFDbEIsT0FBUSxJQUFJLENBQUMsb0JBQW9CLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDN0M7WUFDRCxLQUFLLGtCQUFrQixDQUFDLENBQUM7Z0JBQ3ZCLE9BQVEsSUFBSSxDQUFDLHVCQUF1QixDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQ2hEO1lBQ0Qs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ZSxDQUFDLE9BQU8sRUFBRTtZQUM1QyxNQUFNLFNBQVMsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBWSxFQUFFLEVBQUUsQ0FBQyxJQUFJLEtBQUssTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQzFGLElBQUksU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7Z0JBQ3hCLE9BQU8sS0FBSyxDQUFDO2FBQ2Q7aUJBQU07Z0JBQ0wsSUFBSSxlQUFlLENBQUMsUUFBUSxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLEtBQUssZUFBZSxDQUFDLFVBQVUsRUFBRTtvQkFDbEYsT0FBTyxLQUFLLENBQUM7aUJBQ2Q7YUFDRjtTQUNGO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDOzs7O1lBamlCRixVQUFVLFNBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCBjbG9uZURlZXAgZnJvbSAnbG9kYXNoL2Nsb25lRGVlcCc7XHJcbmltcG9ydCB7IFZhbGlkYXRlU3RydWN0dXJlIH0gZnJvbSAnLi4vY29tcG9uZW50cy9lcnJvckludGVyZmFjZS92YWxpZGF0ZVN0cnVjdHVyZSc7XHJcbmltcG9ydCB7IEVycm9yIH0gZnJvbSAnLi4vY29tcG9uZW50cy9lcnJvckludGVyZmFjZS9lcnJvcic7XHJcbmltcG9ydCB7IFF1ZXN0aW9uIH0gZnJvbSAnLi4vY29tcG9uZW50cy9lcnJvckludGVyZmFjZS9xdWVzdGlvbic7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBWYWxpZGF0b3JTZXJ2aWNlIHtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcblxyXG4gIH1cclxuICBwdWJsaWMgdmFsaWRhdGVkUXVlc3Rpb25zOiBhbnkgPSB7fTtcclxuXHJcblxyXG4gIHZhbGlkYXRlKHF1ZXN0aW9uOiBRdWVzdGlvbik6IFZhbGlkYXRlU3RydWN0dXJlIHwgYW55IHtcclxuICAgIHN3aXRjaCAocXVlc3Rpb24udHlwZSkge1xyXG4gICAgICBjYXNlICdjaGVja2JveCcgOiB7XHJcbiAgICAgICAgcmV0dXJuICB0aGlzLnZhbGlkYXRlTXVsdGlWYWx1ZWRRdWVzdGlvbihxdWVzdGlvbik7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnZHJvcGRvd24nIDoge1xyXG4gICAgICAgIHJldHVybiAgdGhpcy52YWxpZGF0ZU11bHRpVmFsdWVkUXVlc3Rpb24ocXVlc3Rpb24pO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ211bHRpcGxlLWNob2ljZScgOiB7XHJcbiAgICAgICAgcmV0dXJuICB0aGlzLnZhbGlkYXRlTXVsdGlWYWx1ZWRRdWVzdGlvbihxdWVzdGlvbik7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAncmFua2luZycgOiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsaWRhdGVNdWx0aVZhbHVlZFF1ZXN0aW9uKHF1ZXN0aW9uKTtcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdjb21tZW50LWJveCc6IHtcclxuICAgICAgICByZXR1cm4gIHRoaXMudmFsaWRhdGVTaW5nbGVWYWx1ZWQocXVlc3Rpb24pO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ211bHRpcGxlLXRleHRib3gnOiB7XHJcbiAgICAgICAgcmV0dXJuICB0aGlzLnZhbGlkYXRlTXVsdGlwbGVUZXh0Qm94KHF1ZXN0aW9uKTtcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdzaW5nbGUtdGV4dGJveCc6IHtcclxuICAgICAgICByZXR1cm4gIHRoaXMudmFsaWRhdGVTaW5nbGVWYWx1ZWQocXVlc3Rpb24pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXNlICdmaWxlLXVwbG9hZCc6IHtcclxuICAgICAgICAgIHJldHVybiAgdGhpcy52YWxpZGF0ZVNpbmdsZVZhbHVlZChxdWVzdGlvbik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgIGNhc2UgJ2RhdGUtdGltZSc6IHtcclxuICAgICAgICByZXR1cm4gIHRoaXMudmFsaWRhdGVEYXRlVGltZShxdWVzdGlvbik7XHJcbiAgICAgICAgfVxyXG4gICAgICBjYXNlICdpbWFnZS1jaG9pY2UnOiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsaWRhdGVJbWFnZVVwbG9hZChxdWVzdGlvbik7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnbWF0cml4LWRyb3Bkb3duJyA6IHtcclxuICAgICAgICByZXR1cm4gdGhpcy52YWxpZGF0ZU1hdHJpeERyb3Bkb3duKHF1ZXN0aW9uKTtcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdzdGFyLXJhdGluZycgOiB7XHJcbiAgICAgICByZXR1cm4gdGhpcy52YWxpZGF0ZVN0YXJSYXRpbmcocXVlc3Rpb24pO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ3NsaWRlcicgOiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsaWRhdGVTbGlkZXIocXVlc3Rpb24pO1xyXG4gICAgICAgfVxyXG4gICAgICAgY2FzZSAncmF0aW5nLXNjYWxlJyA6IHtcclxuICAgICAgICByZXR1cm4gdGhpcy52YWxpZGF0ZVJhdGluZ1NjYWxlKHF1ZXN0aW9uKTtcclxuICAgICAgIH1cclxuXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcblxyXG4gIHZhbGlkYXRlTXVsdGlWYWx1ZWRRdWVzdGlvbihxdWVzdGlvbjphbnkpOiBWYWxpZGF0ZVN0cnVjdHVyZSAge1xyXG4gICAgLy8gcXVlc3Rpb24uZXJyb3JBcnJheSA9IHt9O1xyXG4gICAgZGVsZXRlIHF1ZXN0aW9uLmVycm9yQXJyYXk7XHJcbiAgICBjb25zdCB2YWxpZFN0YXR1cyA9IFtdO1xyXG4gICAgY29uc3QgRVJST1JfQVJSQVk6IEVycm9yID0ge307XHJcbiAgICBpZiAodGhpcy5leHRyYWN0KHF1ZXN0aW9uLnRpdGxlKS5sZW5ndGggPT09IDAgfHwgcXVlc3Rpb24/LnRpdGxlPy50cmltKCkubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIEVSUk9SX0FSUkFZLnF1ZXN0aW9uTWlzc2luZyA9IHttZXNzYWdlOiAnUGxlYXNlIGVudGVyIHRoZSBxdWVzdGlvbi4nfTtcclxuICAgICAgdmFsaWRTdGF0dXMucHVzaChmYWxzZSk7XHJcbiAgICB9XHJcbiAgICBpZiAocXVlc3Rpb24uaGFzRGVzY3JpcHRpb24gPT09IHRydWUgJiYgdGhpcy5leHRyYWN0KHF1ZXN0aW9uLmRlc2NyaXB0aW9uKS5sZW5ndGggPT09IDApIHtcclxuICAgICAgICBxdWVzdGlvbi5oYXNEZXNjcmlwdGlvbiA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgaWYgKHF1ZXN0aW9uLmhhc0NvbW1lbnRzID09PSB0cnVlICYmIHRoaXMuZXh0cmFjdChxdWVzdGlvbi5jb21tZW50cykubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgcXVlc3Rpb24uaGFzQ29tbWVudHMgPSBmYWxzZTtcclxuICAgIH1cclxuICAgIGlmIChxdWVzdGlvbi5jaG9pY2VzLmxlbmd0aCA+PSAyKSB7XHJcbiAgICAgIGlmIChxdWVzdGlvbi5jaG9pY2VzLmxlbmd0aCA9PT0gMiAmJiAodGhpcy5leHRyYWN0KHF1ZXN0aW9uLmNob2ljZXNbMF0udGl0bGUpLmxlbmd0aCA9PT0gMCB8fCB0aGlzLmV4dHJhY3QocXVlc3Rpb24uY2hvaWNlc1swXS50aXRsZSk/LnRyaW0oKT8ubGVuZ3RoID09PSAwIHx8XHJcbiAgICAgIHRoaXMuZXh0cmFjdChxdWVzdGlvbi5jaG9pY2VzWzFdLnRpdGxlKS5sZW5ndGggPT09IDAgfHx0aGlzLmV4dHJhY3QocXVlc3Rpb24uY2hvaWNlc1sxXS50aXRsZSk/LnRyaW0oKT8ubGVuZ3RoID09PSAwKSkge1xyXG4gICAgICAgIEVSUk9SX0FSUkFZLnR3b0Nob2ljZSAgPSB7bWVzc2FnZTogJ1BsZWFzZSBhZGQgYXQgbGVhc3QgdHdvIGFuc3dlciBjaG9pY2VzLid9O1xyXG4gICAgICAgIHZhbGlkU3RhdHVzLnB1c2goZmFsc2UpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHF1ZXN0aW9uLmNob2ljZXMgPVxyXG4gICAgICAgIHF1ZXN0aW9uLmNob2ljZXMuZmlsdGVyKChjaG9pY2U6YW55KSA9PiAodGhpcy5leHRyYWN0KGNob2ljZS50aXRsZSk/LnRyaW0oKT8ubGVuZ3RoICE9PSAwKSk7XHJcbiAgICAgICAgaWYgKHF1ZXN0aW9uLmNob2ljZXMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgIHF1ZXN0aW9uLmNob2ljZXMucHVzaCh7IHRpdGxlOiAnJywgdmFsdWU6IDEsIGlzU2VsZWN0ZWQ6IGZhbHNlLCByZXF1aXJlZDogMCwgaGFzSGVscGluZ0xhYmVsOiBmYWxzZSwgaGVscGluZ0xhYmVsOiAnJyB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIEVSUk9SX0FSUkFZLnR3b0Nob2ljZSAgPSB7bWVzc2FnZTogJ1BsZWFzZSBhZGQgYXQgbGVhc3QgdHdvIGFuc3dlciBjaG9pY2VzLid9O1xyXG4gICAgICB2YWxpZFN0YXR1cy5wdXNoKGZhbHNlKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIXRoaXMuY2hlY2tGb3JTYW1lVGl0bGVXaXRoT3RoZXIocXVlc3Rpb24pKSB7XHJcbiAgICAgIEVSUk9SX0FSUkFZLnNhbWVDaG9pY2UgICA9IHttZXNzYWdlOiAnVHdvIG9wdGlvbnMgY2Fubm90IGhhdmUgc2FtZSB0aXRsZS4nfTtcclxuICAgICAgdmFsaWRTdGF0dXMucHVzaChmYWxzZSk7XHJcbiAgICB9XHJcbiAgICBsZXQgdmFsaWRhdGlvblJlc3VsdDogVmFsaWRhdGVTdHJ1Y3R1cmU7XHJcbiAgICBpZiAodmFsaWRTdGF0dXMuaW5jbHVkZXMoZmFsc2UpKSB7XHJcbiAgICAgcXVlc3Rpb24uZXJyb3JBcnJheSA9IEVSUk9SX0FSUkFZO1xyXG4gICAgIHZhbGlkYXRpb25SZXN1bHQgPSB7dmFsaWQ6IGZhbHNlLCBlcnJvcjogRVJST1JfQVJSQVksIHF1ZXN0aW9ufTtcclxuICAgICByZXR1cm4gdmFsaWRhdGlvblJlc3VsdDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHZhbGlkYXRpb25SZXN1bHQgPSB7dmFsaWQ6IHRydWUsIGVycm9yOiBFUlJPUl9BUlJBWSwgcXVlc3Rpb259O1xyXG4gICAgICByZXR1cm4gdmFsaWRhdGlvblJlc3VsdDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHZhbGlkYXRlU2luZ2xlVmFsdWVkKHF1ZXN0aW9uOmFueSk6IFZhbGlkYXRlU3RydWN0dXJlICB7XHJcbiAgICBkZWxldGUgcXVlc3Rpb24uZXJyb3JBcnJheTtcclxuICAgIGNvbnN0IHZhbGlkU3RhdHVzID0gW107XHJcbiAgICBjb25zdCBFUlJPUl9BUlJBWTogRXJyb3IgPSB7fTtcclxuICAgIGlmICh0aGlzLmV4dHJhY3QocXVlc3Rpb24udGl0bGUpLmxlbmd0aCA9PT0gMCB8fCB0aGlzLmV4dHJhY3QocXVlc3Rpb24udGl0bGUpPy50cmltKCk/Lmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICBFUlJPUl9BUlJBWS5xdWVzdGlvbk1pc3NpbmcgPSB7bWVzc2FnZTogJ1BsZWFzZSBlbnRlciB0aGUgcXVlc3Rpb24uJ307XHJcbiAgICAgIHZhbGlkU3RhdHVzLnB1c2goZmFsc2UpO1xyXG4gICAgfVxyXG4gICAgaWYgKHF1ZXN0aW9uLmhhc0Rlc2NyaXB0aW9uID09PSB0cnVlICYmIHRoaXMuZXh0cmFjdChxdWVzdGlvbi5kZXNjcmlwdGlvbikubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHF1ZXN0aW9uLmhhc0Rlc2NyaXB0aW9uID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBpZiAocXVlc3Rpb24uaGFzQ29tbWVudHMgPT09IHRydWUgJiYgdGhpcy5leHRyYWN0KHF1ZXN0aW9uLmNvbW1lbnRzKS5sZW5ndGggPT09IDApIHtcclxuICAgICAgcXVlc3Rpb24uaGFzQ29tbWVudHMgPSBmYWxzZTtcclxuICAgIH1cclxuICAgIGlmKHF1ZXN0aW9uLmhhc0NoYXJhY3Rlckxlbmd0aCA9PT0gdHJ1ZSl7XHJcbiAgICAgICBpZihxdWVzdGlvbi5taW5DaGFyYWN0ZXJMZW5ndGggPiBxdWVzdGlvbi5tYXhDaGFyYWN0ZXJMZW5ndGgpe1xyXG4gICAgICAgIEVSUk9SX0FSUkFZLmNoYXJMZW5ndGggPSB7bWVzc2FnZTogJ01pbmltdW0gQ2hhcmFjdGVyIGxlbmd0aCBzaG91bGQgYmUgbGVzcyB0aGFuIG1heGltdW0uJ307XHJcbiAgICAgICAgdmFsaWRTdGF0dXMucHVzaChmYWxzZSk7XHJcbiAgICAgICB9XHJcbiAgICB9XHJcbiAgICBsZXQgdmFsaWRhdGlvblJlc3VsdDogVmFsaWRhdGVTdHJ1Y3R1cmU7XHJcbiAgICBpZiAodmFsaWRTdGF0dXMuaW5jbHVkZXMoZmFsc2UpKSB7XHJcbiAgICAgcXVlc3Rpb24uZXJyb3JBcnJheSA9IEVSUk9SX0FSUkFZO1xyXG4gICAgIHZhbGlkYXRpb25SZXN1bHQgPSB7dmFsaWQ6IGZhbHNlLCBlcnJvcjogRVJST1JfQVJSQVksIHF1ZXN0aW9ufTtcclxuICAgICByZXR1cm4gdmFsaWRhdGlvblJlc3VsdDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHZhbGlkYXRpb25SZXN1bHQgPSB7dmFsaWQ6IHRydWUsIGVycm9yOiBFUlJPUl9BUlJBWSwgcXVlc3Rpb259O1xyXG4gICAgICByZXR1cm4gdmFsaWRhdGlvblJlc3VsdDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHZhbGlkYXRlRGF0ZVRpbWUocXVlc3Rpb246YW55KTogVmFsaWRhdGVTdHJ1Y3R1cmUgIHtcclxuICAgIGRlbGV0ZSBxdWVzdGlvbi5lcnJvckFycmF5O1xyXG4gICAgY29uc3QgdmFsaWRTdGF0dXMgPSBbXTtcclxuICAgIGNvbnN0IEVSUk9SX0FSUkFZOiBFcnJvciA9IHt9O1xyXG4gICAgaWYgKHRoaXMuZXh0cmFjdChxdWVzdGlvbi50aXRsZSkubGVuZ3RoID09PSAwIHx8IHRoaXMuZXh0cmFjdChxdWVzdGlvbi50aXRsZSk/LnRyaW0oKT8ubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIEVSUk9SX0FSUkFZLnF1ZXN0aW9uTWlzc2luZyA9IHttZXNzYWdlOiAnUGxlYXNlIGVudGVyIHRoZSBxdWVzdGlvbi4nfTtcclxuICAgICAgdmFsaWRTdGF0dXMucHVzaChmYWxzZSk7XHJcblxyXG4gICAgfVxyXG4gICAgaWYgKHF1ZXN0aW9uLmhhc0Rlc2NyaXB0aW9uID09PSB0cnVlICYmIHRoaXMuZXh0cmFjdChxdWVzdGlvbi5kZXNjcmlwdGlvbikubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHF1ZXN0aW9uLmhhc0Rlc2NyaXB0aW9uID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBpZiAocXVlc3Rpb24uaGFzQ29tbWVudHMgPT09IHRydWUgJiYgdGhpcy5leHRyYWN0KHF1ZXN0aW9uLmNvbW1lbnRzKS5sZW5ndGggPT09IDApIHtcclxuICAgICAgcXVlc3Rpb24uaGFzQ29tbWVudHMgPSBmYWxzZTtcclxuICAgIH1cclxuICAgIGlmIChxdWVzdGlvbi5oYXNEYXRlID09PSB0cnVlKSB7XHJcbiAgICAgIGlmIChxdWVzdGlvbi5kYXRlICE9PSB1bmRlZmluZWQgJiYgdGhpcy5leHRyYWN0KHF1ZXN0aW9uLmRhdGUudGl0bGUpLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgIEVSUk9SX0FSUkFZLmRhdGVNaXNzaW5nID0ge21lc3NhZ2UgOiAnUGxlYXNlIGVudGVyIGEgbGFiZWwgZm9yIHRoZSBkYXRlIGZpZWxkLid9O1xyXG4gICAgICAgIHZhbGlkU3RhdHVzLnB1c2goZmFsc2UpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAocXVlc3Rpb24uaGFzVGltZSA9PT0gdHJ1ZSkge1xyXG4gICAgICBpZiAocXVlc3Rpb24udGltZSAhPT0gdW5kZWZpbmVkICYmIHRoaXMuZXh0cmFjdChxdWVzdGlvbi50aW1lLnRpdGxlKS5sZW5ndGggPT09IDApIHtcclxuICAgICAgICBFUlJPUl9BUlJBWS50aW1lTWlzc2luZyA9IHttZXNzYWdlOiAnUGxlYXNlIGVudGVyIGEgbGFiZWwgZm9yIHRoZSB0aW1lIGZpZWxkLid9IDtcclxuICAgICAgICB2YWxpZFN0YXR1cy5wdXNoKGZhbHNlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHF1ZXN0aW9uLmhhc1RpbWUgPT09IGZhbHNlICYmIHF1ZXN0aW9uLmhhc0RhdGUgPT09IGZhbHNlKSB7XHJcbiAgICAgICAgcXVlc3Rpb24uaGFzRGF0ZSA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBsZXQgdmFsaWRhdGlvblJlc3VsdDogVmFsaWRhdGVTdHJ1Y3R1cmU7XHJcbiAgICBpZiAodmFsaWRTdGF0dXMuaW5jbHVkZXMoZmFsc2UpKSB7XHJcbiAgICAgcXVlc3Rpb24uZXJyb3JBcnJheSA9IEVSUk9SX0FSUkFZO1xyXG4gICAgIHZhbGlkYXRpb25SZXN1bHQgPSB7dmFsaWQ6IGZhbHNlLCBlcnJvcjogRVJST1JfQVJSQVksIHF1ZXN0aW9ufTtcclxuICAgICByZXR1cm4gdmFsaWRhdGlvblJlc3VsdDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHZhbGlkYXRpb25SZXN1bHQgPSB7dmFsaWQ6IHRydWUsIGVycm9yOiBFUlJPUl9BUlJBWSwgcXVlc3Rpb259O1xyXG4gICAgICByZXR1cm4gdmFsaWRhdGlvblJlc3VsdDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHZhbGlkYXRlSW1hZ2VVcGxvYWQocXVlc3Rpb246YW55KTogVmFsaWRhdGVTdHJ1Y3R1cmUge1xyXG4gICAgZGVsZXRlIHF1ZXN0aW9uLmVycm9yQXJyYXk7XHJcbiAgICBjb25zdCB2YWxpZFN0YXR1cyA9IFtdO1xyXG4gICAgY29uc3QgRVJST1JfQVJSQVk6IEVycm9yID0ge307XHJcbiAgICBpZiAodGhpcy5leHRyYWN0KHF1ZXN0aW9uLnRpdGxlKS5sZW5ndGggPT09IDApIHtcclxuICAgICAgRVJST1JfQVJSQVkucXVlc3Rpb25NaXNzaW5nID0ge21lc3NhZ2U6ICdQbGVhc2UgZW50ZXIgdGhlIHF1ZXN0aW9uLid9O1xyXG4gICAgICB2YWxpZFN0YXR1cy5wdXNoKGZhbHNlKTtcclxuICAgIH1cclxuICAgIGlmIChxdWVzdGlvbi5oYXNEZXNjcmlwdGlvbiA9PT0gdHJ1ZSAmJiB0aGlzLmV4dHJhY3QocXVlc3Rpb24uZGVzY3JpcHRpb24pLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICBxdWVzdGlvbi5oYXNEZXNjcmlwdGlvbiA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgaWYgKHF1ZXN0aW9uLmhhc0NvbW1lbnRzID09PSB0cnVlICYmIHRoaXMuZXh0cmFjdChxdWVzdGlvbi5jb21tZW50cykubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHF1ZXN0aW9uLmhhc0NvbW1lbnRzID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHF1ZXN0aW9uLmNob2ljZXMubGVuZ3RoID4gMSkge1xyXG4gICAgICBpZiAocXVlc3Rpb24uY2hvaWNlcy5sZW5ndGggPT09IDIgJiYgKHRoaXMuZXh0cmFjdChxdWVzdGlvbi5jaG9pY2VzWzBdLnRpdGxlKS5sZW5ndGggPT09IDAgfHxcclxuICAgICAgdGhpcy5leHRyYWN0KHF1ZXN0aW9uLmNob2ljZXNbMV0udGl0bGUpLmxlbmd0aCA9PT0gMCB8fCBxdWVzdGlvbi5jaG9pY2VzWzFdLmltYWdlVVJMID09PSAnJ1xyXG4gICAgICB8fCBxdWVzdGlvbi5jaG9pY2VzWzBdLmltYWdlVVJMID09PSAnJykpIHtcclxuICAgICAgICBFUlJPUl9BUlJBWS50d29DaG9pY2UgID0ge21lc3NhZ2U6ICdQbGVhc2UgYWRkIGF0IGxlYXN0IHR3byBhbnN3ZXIgY2hvaWNlcy4nfTtcclxuICAgICAgICB2YWxpZFN0YXR1cy5wdXNoKGZhbHNlKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBxdWVzdGlvbi5jaG9pY2VzID1cclxuICAgICAgICBxdWVzdGlvbi5jaG9pY2VzLmZpbHRlcigoY2hvaWNlOmFueSkgPT4gdGhpcy5leHRyYWN0KGNob2ljZS50aXRsZSkubGVuZ3RoICE9PSAwKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgICBFUlJPUl9BUlJBWS50d29DaG9pY2UgID0ge21lc3NhZ2U6ICdQbGVhc2UgYWRkIGF0IGxlYXN0IHR3byBhbnN3ZXIgY2hvaWNlcy4nfTtcclxuICAgICAgICB2YWxpZFN0YXR1cy5wdXNoKGZhbHNlKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIXRoaXMuY2hlY2tGb3JTYW1lVGl0bGUocXVlc3Rpb24uY2hvaWNlcykpIHtcclxuICAgICAgRVJST1JfQVJSQVkuc2FtZUNob2ljZSAgID0ge21lc3NhZ2U6ICdUd28gb3B0aW9ucyBjYW5ub3QgaGF2ZSBzYW1lIHRpdGxlLid9O1xyXG4gICAgICB2YWxpZFN0YXR1cy5wdXNoKGZhbHNlKTtcclxuICAgIH1cclxuICAgIGxldCB2YWxpZGF0aW9uUmVzdWx0OiBWYWxpZGF0ZVN0cnVjdHVyZTtcclxuICAgIGlmICh2YWxpZFN0YXR1cy5pbmNsdWRlcyhmYWxzZSkpIHtcclxuICAgICBxdWVzdGlvbi5lcnJvckFycmF5ID0gRVJST1JfQVJSQVk7XHJcbiAgICAgdmFsaWRhdGlvblJlc3VsdCA9IHt2YWxpZDogZmFsc2UsIGVycm9yOiBFUlJPUl9BUlJBWSwgcXVlc3Rpb259O1xyXG4gICAgIHJldHVybiB2YWxpZGF0aW9uUmVzdWx0O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdmFsaWRhdGlvblJlc3VsdCA9IHt2YWxpZDogdHJ1ZSwgZXJyb3I6IEVSUk9SX0FSUkFZLCBxdWVzdGlvbn07XHJcbiAgICAgIHJldHVybiB2YWxpZGF0aW9uUmVzdWx0O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG5cclxuICB2YWxpZGF0ZU1hdHJpeERyb3Bkb3duKHF1ZXN0aW9uOmFueSk6IFZhbGlkYXRlU3RydWN0dXJlIHtcclxuICAgIGRlbGV0ZSBxdWVzdGlvbi5lcnJvckFycmF5O1xyXG4gICAgY29uc3QgdmFsaWRTdGF0dXMgPSBbXTtcclxuICAgIGNvbnN0IEVSUk9SX0FSUkFZOiBFcnJvciA9IHt9O1xyXG4gICAgaWYgKHRoaXMuZXh0cmFjdChxdWVzdGlvbi50aXRsZSkubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIEVSUk9SX0FSUkFZLnF1ZXN0aW9uTWlzc2luZyA9IHttZXNzYWdlOiAnUGxlYXNlIGVudGVyIHRoZSBxdWVzdGlvbi4nfTtcclxuICAgICAgdmFsaWRTdGF0dXMucHVzaChmYWxzZSk7XHJcbiAgICB9XHJcbiAgICBpZiAocXVlc3Rpb24uaGFzRGVzY3JpcHRpb24gPT09IHRydWUgJiYgdGhpcy5leHRyYWN0KHF1ZXN0aW9uLmRlc2NyaXB0aW9uKS5sZW5ndGggPT09IDApIHtcclxuICAgICAgcXVlc3Rpb24uaGFzRGVzY3JpcHRpb24gPSBmYWxzZTtcclxuICAgIH1cclxuICAgIGlmIChxdWVzdGlvbi5oYXNDb21tZW50cyA9PT0gdHJ1ZSAmJiB0aGlzLmV4dHJhY3QocXVlc3Rpb24uY29tbWVudHMpLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICBxdWVzdGlvbi5oYXNDb21tZW50cyA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgaWYgKHF1ZXN0aW9uLmNob2ljZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICBmb3IgKGNvbnN0IGNob2ljZSBvZiBxdWVzdGlvbi5jaG9pY2VzKSB7XHJcbiAgICAgICAgaWYgKHF1ZXN0aW9uLmNob2ljZXMubGVuZ3RoID09PSAxICYmIHRoaXMuZXh0cmFjdChjaG9pY2UudGl0bGUpLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgRVJST1JfQVJSQVkub25lUm93ICAgPSB7bWVzc2FnZTogJ1lvdSBhcmUgcmVxdWlyZWQgdG8gaGF2ZSBhdCBsZWFzdCBvbmUgcm93Lid9O1xyXG4gICAgICAgICAgdmFsaWRTdGF0dXMucHVzaChmYWxzZSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHF1ZXN0aW9uLmNob2ljZXMgPSBxdWVzdGlvbi5jaG9pY2VzLmZpbHRlcigoc2VsZWN0ZWRDaG9pY2U6YW55KSA9PiB0aGlzLmV4dHJhY3Qoc2VsZWN0ZWRDaG9pY2UudGl0bGUpLmxlbmd0aCAhPT0gMCk7XHJcbiAgICAgICAgICAgICAgICBpZiAocXVlc3Rpb24uY2hvaWNlcy5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgICAgICBxdWVzdGlvbi5jaG9pY2VzLnB1c2goIHsgdGl0bGU6ICcnLCBpc1Zpc2libGU6IHRydWUsIHZhbHVlOiAwLCBpc1NlbGVjdGVkOiBmYWxzZSwgcmVxdWlyZWQ6IDAsIGhhc0hlbHBpbmdMYWJlbDogdHJ1ZSwgaGVscGluZ0xhYmVsOiAnJyB9LCApO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgRVJST1JfQVJSQVkub25lUm93ICAgPSB7bWVzc2FnZTogJ1lvdSBhcmUgcmVxdWlyZWQgdG8gaGF2ZSBhdCBsZWFzdCBvbmUgcm93Lid9O1xyXG4gICAgICB2YWxpZFN0YXR1cy5wdXNoKGZhbHNlKTtcclxuICAgIH1cclxuICAgIGlmICghdGhpcy5jaGVja0ZvclNhbWVUaXRsZShxdWVzdGlvbi5jaG9pY2VzKSkge1xyXG4gICAgICBFUlJPUl9BUlJBWS5zYW1lQ2hvaWNlICAgPSB7bWVzc2FnZTogJ1R3byByb3dzIGNhbm5vdCBoYXZlIHNhbWUgdGl0bGUuJ307XHJcbiAgICAgIHZhbGlkU3RhdHVzLnB1c2goZmFsc2UpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChxdWVzdGlvbi5jb2x1bW5zLmxlbmd0aCA+IDApIHtcclxuICAgICAgcXVlc3Rpb24uY29sdW1ucyA9IHF1ZXN0aW9uLmNvbHVtbnMuZmlsdGVyKChzZWxlY3RlZENob2ljZTphbnkpID0+IHRoaXMuZXh0cmFjdChzZWxlY3RlZENob2ljZS50aXRsZSkubGVuZ3RoICE9PSAwKTtcclxuXHJcbiAgICAgIGZvciAoY29uc3QgY29sdW1uIG9mIHF1ZXN0aW9uLmNvbHVtbnMpIHtcclxuICAgICAgICBpZiAodGhpcy5leHRyYWN0KGNvbHVtbi50aXRsZSkubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICBFUlJPUl9BUlJBWS5vbmVDb2wgID0ge21lc3NhZ2U6ICdZb3UgYXJlIHJlcXVpcmVkIHRvIGhhdmUgYXQgbGVhc3Qgb25lIGNvbHVtbi4nfTtcclxuICAgICAgICAgIHZhbGlkU3RhdHVzLnB1c2goZmFsc2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoY29sdW1uLmNob2ljZXMubGVuZ3RoID4gMSkge1xyXG4gICAgICAgICAgZm9yIChjb25zdCBjb2x1bW5DaG9pY2Ugb2YgY29sdW1uLmNob2ljZXMpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuZXh0cmFjdChjb2x1bW5DaG9pY2UudGl0bGUpLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgICAgIHF1ZXN0aW9uLmNvbHVtbnMgPSBxdWVzdGlvbi5jb2x1bW5zLmZpbHRlcigoc2VsZWN0ZWRDaG9pY2U6YW55KSA9PlxyXG4gICAgICAgICAgICAgICAgdGhpcy5leHRyYWN0KHNlbGVjdGVkQ2hvaWNlLnRpdGxlKS5sZW5ndGggIT09IDApO1xyXG4gICAgICAgICAgICAgIC8vIEVSUk9SX0FSUkFZLnR3b0Nob2ljZSAgPSB7bWVzc2FnZTogJ1BsZWFzZSBhZGQgYXQgbGVhc3QgdHdvIGFuc3dlciBjaG9pY2VzIGZvciBlYWNoIGNvbHVtbi4nfTtcclxuICAgICAgICAgICAgICAvLyB2YWxpZFN0YXR1cy5wdXNoKGZhbHNlKTtcclxuICAgICAgICAgICAgICBjb2x1bW4uY2hvaWNlcyA9IGNvbHVtbi5jaG9pY2VzLmZpbHRlcigoc2VsZWN0ZWRDaG9pY2U6YW55KSA9PlxyXG4gICAgICAgICAgICAgICAgdGhpcy5leHRyYWN0KHNlbGVjdGVkQ2hvaWNlLnRpdGxlKS5sZW5ndGggIT09IDApO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIC8vIGNvbHVtbi5jaG9pY2VzID0gY29sdW1uLmNob2ljZXMuZmlsdGVyKHNlbGVjdGVkQ2hvaWNlID0+XHJcbiAgICAgICAgICAgICAgLy8gICB0aGlzLmV4dHJhY3Qoc2VsZWN0ZWRDaG9pY2UudGl0bGUpLmxlbmd0aCAhPT0gMCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgRVJST1JfQVJSQVkudHdvQ2hvaWNlICA9IHttZXNzYWdlOiAnUGxlYXNlIGFkZCBhdCBsZWFzdCB0d28gYW5zd2VyIGNob2ljZXMgZm9yIGVhY2ggY29sdW1uLid9O1xyXG4gICAgICAgICAgdmFsaWRTdGF0dXMucHVzaChmYWxzZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmIChxdWVzdGlvbi5jb2x1bW5zLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgcXVlc3Rpb24uY29sdW1ucy5wdXNoKCB7IHRpdGxlOiAnJywgaXNWaXNpYmxlOiB0cnVlLCB2YWx1ZTogMCwgaXNTZWxlY3RlZDogZmFsc2UsIHJlcXVpcmVkOiAwLCBoYXNIZWxwaW5nTGFiZWw6IHRydWUsIGhlbHBpbmdMYWJlbDogJycsXHJcbiAgICAgICAgY2hvaWNlczogW3sgdGl0bGU6ICcnLCBpc1Zpc2libGU6IHRydWUsIHZhbHVlOiAwLCBpc1NlbGVjdGVkOiBmYWxzZSwgcmVxdWlyZWQ6IDAsIGhhc0hlbHBpbmdMYWJlbDogdHJ1ZSwgaGVscGluZ0xhYmVsOiAnJ31dfSk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIEVSUk9SX0FSUkFZLm9uZUNvbCAgID0ge21lc3NhZ2U6ICdZb3UgYXJlIHJlcXVpcmVkIHRvIGhhdmUgYXQgbGVhc3Qgb25lIGNvbHVtbi4nfTtcclxuICAgICAgdmFsaWRTdGF0dXMucHVzaChmYWxzZSk7XHJcbiAgICB9XHJcbiAgICBpZiAoIXRoaXMuY2hlY2tGb3JTYW1lVGl0bGUocXVlc3Rpb24uY29sdW1ucykpIHtcclxuICAgICAgRVJST1JfQVJSQVkuc2FtZUNob2ljZSAgID0ge21lc3NhZ2U6ICdUd28gY29sdW1ucyBjYW5ub3QgaGF2ZSBzYW1lIHRpdGxlLid9O1xyXG4gICAgICB2YWxpZFN0YXR1cy5wdXNoKGZhbHNlKTtcclxuICAgIH1cclxuICAgIGxldCB2YWxpZGF0aW9uUmVzdWx0OiBWYWxpZGF0ZVN0cnVjdHVyZTtcclxuICAgIGlmICh2YWxpZFN0YXR1cy5pbmNsdWRlcyhmYWxzZSkpIHtcclxuICAgICBxdWVzdGlvbi5lcnJvckFycmF5ID0gRVJST1JfQVJSQVk7XHJcbiAgICAgdmFsaWRhdGlvblJlc3VsdCA9IHt2YWxpZDogZmFsc2UsIGVycm9yOiBFUlJPUl9BUlJBWSwgcXVlc3Rpb259O1xyXG4gICAgIHJldHVybiB2YWxpZGF0aW9uUmVzdWx0O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdmFsaWRhdGlvblJlc3VsdCA9IHt2YWxpZDogdHJ1ZSwgZXJyb3I6IEVSUk9SX0FSUkFZLCBxdWVzdGlvbn07XHJcbiAgICAgIHJldHVybiB2YWxpZGF0aW9uUmVzdWx0O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIHZhbGlkYXRlTXVsdGlwbGVUZXh0Qm94KHF1ZXN0aW9uOmFueSk6IFZhbGlkYXRlU3RydWN0dXJlICB7XHJcbiAgICBkZWxldGUgcXVlc3Rpb24uZXJyb3JBcnJheTtcclxuICAgIGNvbnN0IHZhbGlkU3RhdHVzID0gW107XHJcbiAgICBjb25zdCBFUlJPUl9BUlJBWTogRXJyb3IgPSB7fTtcclxuICAgIGlmICh0aGlzLmV4dHJhY3QocXVlc3Rpb24udGl0bGUpLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICBFUlJPUl9BUlJBWS5xdWVzdGlvbk1pc3NpbmcgPSB7bWVzc2FnZTogJ1BsZWFzZSBlbnRlciB0aGUgcXVlc3Rpb24uJ307XHJcbiAgICAgIHZhbGlkU3RhdHVzLnB1c2goZmFsc2UpO1xyXG4gICAgfVxyXG4gICAgaWYgKHF1ZXN0aW9uLmhhc0Rlc2NyaXB0aW9uID09PSB0cnVlICYmIHRoaXMuZXh0cmFjdChxdWVzdGlvbi5kZXNjcmlwdGlvbikubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHF1ZXN0aW9uLmhhc0Rlc2NyaXB0aW9uID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBpZiAocXVlc3Rpb24uaGFzQ29tbWVudHMgPT09IHRydWUgJiYgdGhpcy5leHRyYWN0KHF1ZXN0aW9uLmNvbW1lbnRzKS5sZW5ndGggPT09IDApIHtcclxuICAgICAgcXVlc3Rpb24uaGFzQ29tbWVudHMgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAocXVlc3Rpb24uY2hvaWNlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGlmIChxdWVzdGlvbi5jaG9pY2VzLmxlbmd0aCA9PT0gMSAmJiB0aGlzLmV4dHJhY3QocXVlc3Rpb24uY2hvaWNlc1swXS50aXRsZSkubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgRVJST1JfQVJSQVkub25lQ2hvaWNlICA9IHttZXNzYWdlOiAnUGxlYXNlIGFkZCBsYWJlbCBmb3IgdGV4dGJveC4nfTtcclxuICAgICAgICB2YWxpZFN0YXR1cy5wdXNoKGZhbHNlKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBxdWVzdGlvbi5jaG9pY2VzID1cclxuICAgICAgICBxdWVzdGlvbi5jaG9pY2VzLmZpbHRlcigoY2hvaWNlOmFueSkgPT4gdGhpcy5leHRyYWN0KGNob2ljZS50aXRsZSkubGVuZ3RoICE9PSAwKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgRVJST1JfQVJSQVkub25lQ2hvaWNlICA9IHttZXNzYWdlOiAnUGxlYXNlIGFkZCBhdCBsZWFzdCBvbmUgdGV4dGJveC4nfTtcclxuICAgICAgdmFsaWRTdGF0dXMucHVzaChmYWxzZSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCF0aGlzLmNoZWNrRm9yU2FtZVRpdGxlV2l0aE90aGVyKHF1ZXN0aW9uKSkge1xyXG4gICAgICBFUlJPUl9BUlJBWS5zYW1lQ2hvaWNlICAgPSB7bWVzc2FnZTogJ1R3byB0ZXh0Ym94ZXMgY2Fubm90IGhhdmUgc2FtZSBsYWJlbC4nfTtcclxuICAgICAgdmFsaWRTdGF0dXMucHVzaChmYWxzZSk7XHJcbiAgICB9XHJcbiAgICBsZXQgdmFsaWRhdGlvblJlc3VsdDogVmFsaWRhdGVTdHJ1Y3R1cmU7XHJcbiAgICBpZiAodmFsaWRTdGF0dXMuaW5jbHVkZXMoZmFsc2UpKSB7XHJcbiAgICAgcXVlc3Rpb24uZXJyb3JBcnJheSA9IEVSUk9SX0FSUkFZO1xyXG4gICAgIHZhbGlkYXRpb25SZXN1bHQgPSB7dmFsaWQ6IGZhbHNlLCBlcnJvcjogRVJST1JfQVJSQVksIHF1ZXN0aW9ufTtcclxuICAgICByZXR1cm4gdmFsaWRhdGlvblJlc3VsdDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHZhbGlkYXRpb25SZXN1bHQgPSB7dmFsaWQ6IHRydWUsIGVycm9yOiBFUlJPUl9BUlJBWSwgcXVlc3Rpb259O1xyXG4gICAgICByZXR1cm4gdmFsaWRhdGlvblJlc3VsdDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHZhbGlkYXRlU2xpZGVyKHF1ZXN0aW9uOmFueSk6IFZhbGlkYXRlU3RydWN0dXJlIHtcclxuICAgIGRlbGV0ZSBxdWVzdGlvbi5lcnJvckFycmF5O1xyXG4gICAgY29uc3QgdmFsaWRTdGF0dXMgPSBbXTtcclxuICAgIGNvbnN0IEVSUk9SX0FSUkFZOiBFcnJvciA9IHt9O1xyXG4gICAgY29uc3QgbWluaW11bSA9IHBhcnNlSW50KHF1ZXN0aW9uLnNjYWxlUmFuZ2VNaW4sIDEwKTtcclxuICAgIGNvbnN0IG1heGltdW0gPSBwYXJzZUludChxdWVzdGlvbi5zY2FsZVJhbmdlTWF4LCAxMCk7XHJcbiAgICBjb25zdCBzdGVwU2l6ZSA9IHF1ZXN0aW9uLnN0ZXBTaXplO1xyXG4gICAgY29uc3QgdGhyZXNob2xkID0gMDtcclxuICAgIGlmICh0aGlzLmV4dHJhY3QocXVlc3Rpb24udGl0bGUpLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICBFUlJPUl9BUlJBWS5xdWVzdGlvbk1pc3NpbmcgPSB7bWVzc2FnZTogJ1BsZWFzZSBlbnRlciB0aGUgcXVlc3Rpb24uJ307XHJcbiAgICAgIHZhbGlkU3RhdHVzLnB1c2goZmFsc2UpO1xyXG4gICAgfVxyXG4gICAgaWYgKHF1ZXN0aW9uLmhhc0Rlc2NyaXB0aW9uID09PSB0cnVlICYmIHRoaXMuZXh0cmFjdChxdWVzdGlvbi5kZXNjcmlwdGlvbikubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHF1ZXN0aW9uLmhhc0Rlc2NyaXB0aW9uID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBpZiAocXVlc3Rpb24uaGFzQ29tbWVudHMgPT09IHRydWUgJiYgdGhpcy5leHRyYWN0KHF1ZXN0aW9uLmNvbW1lbnRzKS5sZW5ndGggPT09IDApIHtcclxuICAgICAgcXVlc3Rpb24uaGFzQ29tbWVudHMgPSBmYWxzZTtcclxuICAgIH1cclxuICAgIGlmIChtaW5pbXVtID49IG1heGltdW0pIHtcclxuICAgICAgRVJST1JfQVJSQVkubWluRXJyb3IgID0ge21lc3NhZ2U6IGBQbGVhc2UgZW50ZXIgYSB2YWx1ZSBzbWFsbGVyIHRoYW4gJHttYXhpbXVtfS5gfTtcclxuICAgICAgdmFsaWRTdGF0dXMucHVzaChmYWxzZSk7XHJcbiAgICB9XHJcbiAgICBpZiAobWF4aW11bSA8PSBtaW5pbXVtKSB7XHJcbiAgICAgIEVSUk9SX0FSUkFZLm1pbkVycm9yICA9IHttZXNzYWdlOiBgUGxlYXNlIGVudGVyIGEgdmFsdWUgZ3JlYXRlciB0aGFuICR7bWF4aW11bX0uYH07XHJcbiAgICAgIHZhbGlkU3RhdHVzLnB1c2goZmFsc2UpO1xyXG4gICAgfVxyXG4gICAgaWYgKHN0ZXBTaXplID4gbWF4aW11bSkge1xyXG4gICAgICBFUlJPUl9BUlJBWS5zdGVwRXJyb3IgID0ge21lc3NhZ2U6IGBUaGUgcmFuZ2UgZm9yIHRoZSBzbGlkZXIgdmFsdWVzIGFyZSB3aXRoaW4gJHttaW5pbXVtfS0ke21heGltdW19LiBQbGVhc2Ugc2VsZWN0IGEgc3RlcCBzaXplIHdpdGhpbiB0aGlzIHJhbmdlLmB9O1xyXG4gICAgICB2YWxpZFN0YXR1cy5wdXNoKGZhbHNlKTtcclxuICAgIH1cclxuICAgIGlmIChzdGVwU2l6ZSA8PSAwKSB7XHJcbiAgICAgIEVSUk9SX0FSUkFZLnN0ZXBFcnJvciAgPSB7bWVzc2FnZTogYFBsZWFzZSBlbnRlciBhIHZhbHVlIGdyZWF0ZXIgdGhhbiAke3RocmVzaG9sZH0uYCB9O1xyXG4gICAgICB2YWxpZFN0YXR1cy5wdXNoKGZhbHNlKTtcclxuICAgIH1cclxuICAgIGxldCB2YWxpZGF0aW9uUmVzdWx0OiBWYWxpZGF0ZVN0cnVjdHVyZTtcclxuICAgIGlmICh2YWxpZFN0YXR1cy5pbmNsdWRlcyhmYWxzZSkpIHtcclxuICAgICBxdWVzdGlvbi5lcnJvckFycmF5ID0gRVJST1JfQVJSQVk7XHJcbiAgICAgdmFsaWRhdGlvblJlc3VsdCA9IHt2YWxpZDogZmFsc2UsIGVycm9yOiBFUlJPUl9BUlJBWSwgcXVlc3Rpb259O1xyXG4gICAgIHJldHVybiB2YWxpZGF0aW9uUmVzdWx0O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdmFsaWRhdGlvblJlc3VsdCA9IHt2YWxpZDogdHJ1ZSwgZXJyb3I6IEVSUk9SX0FSUkFZLCBxdWVzdGlvbn07XHJcbiAgICAgIHJldHVybiB2YWxpZGF0aW9uUmVzdWx0O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIHZhbGlkYXRlU3RhclJhdGluZyhxdWVzdGlvbjphbnkpOiBWYWxpZGF0ZVN0cnVjdHVyZSB7XHJcbiAgICBkZWxldGUgcXVlc3Rpb24uZXJyb3JBcnJheTtcclxuICAgIGNvbnN0IHZhbGlkU3RhdHVzID0gW107XHJcbiAgICBjb25zdCBFUlJPUl9BUlJBWTogRXJyb3IgPSB7fTtcclxuICAgIGlmICh0aGlzLmV4dHJhY3QocXVlc3Rpb24udGl0bGUpLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICBFUlJPUl9BUlJBWS5xdWVzdGlvbk1pc3NpbmcgPSB7bWVzc2FnZTogJ1BsZWFzZSBlbnRlciB0aGUgcXVlc3Rpb24uJ307XHJcbiAgICAgIHZhbGlkU3RhdHVzLnB1c2goZmFsc2UpO1xyXG4gICAgfVxyXG4gICAgaWYgKHF1ZXN0aW9uLmhhc0Rlc2NyaXB0aW9uID09PSB0cnVlICYmIHRoaXMuZXh0cmFjdChxdWVzdGlvbi5kZXNjcmlwdGlvbikubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHF1ZXN0aW9uLmhhc0Rlc2NyaXB0aW9uID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBpZiAocXVlc3Rpb24uaGFzQ29tbWVudHMgPT09IHRydWUgJiYgdGhpcy5leHRyYWN0KHF1ZXN0aW9uLmNvbW1lbnRzKS5sZW5ndGggPT09IDApIHtcclxuICAgICAgcXVlc3Rpb24uaGFzQ29tbWVudHMgPSBmYWxzZTtcclxuICAgIH1cclxuICAgIGlmIChxdWVzdGlvbi5oYXNSYXRpbmdMYWJlbCkge1xyXG4gICAgICBpZiAocXVlc3Rpb24ucmF0aW5nTGFiZWxUeXBlID09PSAnc2NhbGUnICYmIHF1ZXN0aW9uLnNjYWxlUmFuZ2VGcm9tID09PSAnJyAmJiBxdWVzdGlvbi5zY2FsZVJhbmdlVG8gPT09ICcnKSB7XHJcbiAgICAgICAgcXVlc3Rpb24uaGFzUmF0aW5nTGFiZWwgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgbGV0IHZhbGlkYXRpb25SZXN1bHQ6IFZhbGlkYXRlU3RydWN0dXJlO1xyXG4gICAgaWYgKHZhbGlkU3RhdHVzLmluY2x1ZGVzKGZhbHNlKSkge1xyXG4gICAgIHF1ZXN0aW9uLmVycm9yQXJyYXkgPSBFUlJPUl9BUlJBWTtcclxuICAgICB2YWxpZGF0aW9uUmVzdWx0ID0ge3ZhbGlkOiBmYWxzZSwgZXJyb3I6IEVSUk9SX0FSUkFZLCBxdWVzdGlvbn07XHJcbiAgICAgcmV0dXJuIHZhbGlkYXRpb25SZXN1bHQ7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB2YWxpZGF0aW9uUmVzdWx0ID0ge3ZhbGlkOiB0cnVlLCBlcnJvcjogRVJST1JfQVJSQVksIHF1ZXN0aW9ufTtcclxuICAgICAgcmV0dXJuIHZhbGlkYXRpb25SZXN1bHQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB2YWxpZGF0ZVJhdGluZ1NjYWxlKHF1ZXN0aW9uOmFueSk6IFZhbGlkYXRlU3RydWN0dXJlIHtcclxuICAgIGRlbGV0ZSBxdWVzdGlvbi5lcnJvckFycmF5O1xyXG4gICAgY29uc3QgdmFsaWRTdGF0dXMgPSBbXTtcclxuICAgIGNvbnN0IEVSUk9SX0FSUkFZOiBFcnJvciA9IHt9O1xyXG4gICAgaWYgKHRoaXMuZXh0cmFjdChxdWVzdGlvbi50aXRsZSkubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIEVSUk9SX0FSUkFZLnF1ZXN0aW9uTWlzc2luZyA9IHttZXNzYWdlOiAnUGxlYXNlIGVudGVyIHRoZSBxdWVzdGlvbi4nfTtcclxuICAgICAgdmFsaWRTdGF0dXMucHVzaChmYWxzZSk7XHJcbiAgICB9XHJcbiAgICBpZiAocXVlc3Rpb24uaGFzRGVzY3JpcHRpb24gPT09IHRydWUgJiYgdGhpcy5leHRyYWN0KHF1ZXN0aW9uLmRlc2NyaXB0aW9uKS5sZW5ndGggPT09IDApIHtcclxuICAgICAgcXVlc3Rpb24uaGFzRGVzY3JpcHRpb24gPSBmYWxzZTtcclxuICAgIH1cclxuICAgIGlmIChxdWVzdGlvbi5oYXNDb21tZW50cyA9PT0gdHJ1ZSAmJiB0aGlzLmV4dHJhY3QocXVlc3Rpb24uY29tbWVudHMpLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICBxdWVzdGlvbi5oYXNDb21tZW50cyA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgaWYgKHF1ZXN0aW9uLmNob2ljZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICBmb3IgKGNvbnN0IGNob2ljZSBvZiBxdWVzdGlvbi5jaG9pY2VzKSB7XHJcbiAgICAgICAgaWYgKHF1ZXN0aW9uLmNob2ljZXMubGVuZ3RoID09PSAxICYmIHRoaXMuZXh0cmFjdChjaG9pY2UudGl0bGUpLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgRVJST1JfQVJSQVkub25lUm93ICAgPSB7bWVzc2FnZTogJ1lvdSBhcmUgcmVxdWlyZWQgdG8gaGF2ZSBhdCBsZWFzdCBvbmUgcm93Lid9O1xyXG4gICAgICAgICAgdmFsaWRTdGF0dXMucHVzaChmYWxzZSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHF1ZXN0aW9uLmNob2ljZXMgPVxyXG4gICAgICAgICAgcXVlc3Rpb24uY2hvaWNlcy5maWx0ZXIoKHNlbGVjdGVkQ2hvaWNlOmFueSkgPT5cclxuICAgICAgICAgICAgdGhpcy5leHRyYWN0KHNlbGVjdGVkQ2hvaWNlLnRpdGxlKS5sZW5ndGggIT09IDApO1xyXG4gICAgICAgICAgICAgICAgaWYgKHF1ZXN0aW9uLmNob2ljZXMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgcXVlc3Rpb24uY2hvaWNlcy5wdXNoKCB7IHRpdGxlOiAnJywgaXNWaXNpYmxlOiB0cnVlLCB2YWx1ZTogMCwgaXNTZWxlY3RlZDogZmFsc2UsIHJlcXVpcmVkOiAwLCBoYXNIZWxwaW5nTGFiZWw6IHRydWUsIGhlbHBpbmdMYWJlbDogJycgfSwgKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIEVSUk9SX0FSUkFZLm9uZVJvdyAgID0ge21lc3NhZ2U6ICdZb3UgYXJlIHJlcXVpcmVkIHRvIGhhdmUgYXQgbGVhc3Qgb25lIHJvdy4nfTtcclxuICAgICAgdmFsaWRTdGF0dXMucHVzaChmYWxzZSk7XHJcbiAgICB9XHJcbiAgICBpZiAoIXRoaXMuY2hlY2tGb3JTYW1lVGl0bGUocXVlc3Rpb24uY2hvaWNlcykpIHtcclxuICAgICAgRVJST1JfQVJSQVkuc2FtZUNob2ljZSAgID0ge21lc3NhZ2U6ICdUd28gcm93cyBjYW5ub3QgaGF2ZSBzYW1lIHRpdGxlLid9O1xyXG4gICAgICB2YWxpZFN0YXR1cy5wdXNoKGZhbHNlKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAocXVlc3Rpb24uY29sdW1ucyAhPT0gdW5kZWZpbmVkICYmIHF1ZXN0aW9uLmNvbHVtbnMubGVuZ3RoID4gMCkge1xyXG4gICAgICBmb3IgKGNvbnN0IGNvbHVtbiBvZiBxdWVzdGlvbi5jb2x1bW5zKSB7XHJcbiAgICAgICAgaWYgKHF1ZXN0aW9uLmNvbHVtbnMubGVuZ3RoID09PSAxICYmIHRoaXMuZXh0cmFjdChjb2x1bW4udGl0bGUpLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgRVJST1JfQVJSQVkub25lQ29sICAgPSB7bWVzc2FnZTogJ1lvdSBhcmUgcmVxdWlyZWQgdG8gaGF2ZSBhdCBsZWFzdCBvbmUgY29sdW1uLid9O1xyXG4gICAgICAgICAgdmFsaWRTdGF0dXMucHVzaChmYWxzZSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHF1ZXN0aW9uLmNvbHVtbnMgPVxyXG4gICAgcXVlc3Rpb24uY29sdW1ucy5maWx0ZXIoKHNlbGVjdGVkQ2hvaWNlOmFueSkgPT5cclxuICAgICAgdGhpcy5leHRyYWN0KHNlbGVjdGVkQ2hvaWNlLnRpdGxlKS5sZW5ndGggIT09IDApO1xyXG4gICAgICAgICAgaWYgKHF1ZXN0aW9uLmNvbHVtbnMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgcXVlc3Rpb24uY29sdW1ucy5wdXNoKCB7IHRpdGxlOiAnJywgaXNWaXNpYmxlOiB0cnVlLCB2YWx1ZTogMCwgaXNTZWxlY3RlZDogZmFsc2UsIHJlcXVpcmVkOiAwLCBoYXNIZWxwaW5nTGFiZWw6IHRydWUsIGhlbHBpbmdMYWJlbDogJycgfSwgKTtcclxuICAgICAgfVxyXG5cclxuICB9XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIEVSUk9SX0FSUkFZLm9uZUNvbCAgID0ge21lc3NhZ2U6ICdZb3UgYXJlIHJlcXVpcmVkIHRvIGhhdmUgYXQgbGVhc3Qgb25lIGNvbHVtbi4nfTtcclxuICAgICAgdmFsaWRTdGF0dXMucHVzaChmYWxzZSk7XHJcbiAgICB9XHJcbiAgICBpZiAoIXRoaXMuY2hlY2tGb3JTYW1lVGl0bGUocXVlc3Rpb24uY29sdW1ucykpIHtcclxuICAgICAgRVJST1JfQVJSQVkuc2FtZUNob2ljZSAgID0ge21lc3NhZ2U6ICdUd28gY29sdW1ucyBjYW5ub3QgaGF2ZSBzYW1lIHRpdGxlLid9O1xyXG4gICAgICB2YWxpZFN0YXR1cy5wdXNoKGZhbHNlKTtcclxuICAgIH1cclxuICAgIGxldCB2YWxpZGF0aW9uUmVzdWx0OiBWYWxpZGF0ZVN0cnVjdHVyZTtcclxuICAgIGlmICh2YWxpZFN0YXR1cy5pbmNsdWRlcyhmYWxzZSkpIHtcclxuICAgICBxdWVzdGlvbi5lcnJvckFycmF5ID0gRVJST1JfQVJSQVk7XHJcbiAgICAgdmFsaWRhdGlvblJlc3VsdCA9IHt2YWxpZDogZmFsc2UsIGVycm9yOiBFUlJPUl9BUlJBWSwgcXVlc3Rpb259O1xyXG4gICAgIHJldHVybiB2YWxpZGF0aW9uUmVzdWx0O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdmFsaWRhdGlvblJlc3VsdCA9IHt2YWxpZDogdHJ1ZSwgZXJyb3I6IEVSUk9SX0FSUkFZLCBxdWVzdGlvbn07XHJcbiAgICAgIHJldHVybiB2YWxpZGF0aW9uUmVzdWx0O1xyXG4gICAgfVxyXG4gIH1cclxuICAvKipcclxuICAgKiBFeHRyYWN0cyB0aGUgdGV4dCBmcm9tIGEgcGFydGljdWxhciBodG1sIGNvbnRlbnRcclxuICAgKiBAcGFyYW0gcyBodG1sIGNvbnRlbnQgZnJvbSB3aGljaCB0ZXh0IG5lZWRzIHRvIGJlIGV4dHJhY3RlZFxyXG4gICAqL1xyXG4gICAgZXh0cmFjdChzOmFueSkge1xyXG4gICAgY29uc3Qgc3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcclxuICAgIHNwYW4uaW5uZXJIVE1MID0gcztcclxuICAgIHJldHVybiBzcGFuLnRleHRDb250ZW50IHx8IHNwYW4uaW5uZXJUZXh0O1xyXG4gIH1cclxuICAgLyoqXHJcbiAgICogQ2hlY2tzIGlmIHRpdGxlIG9mIHR3byBjaG9pY2VzIGlzIHNhbWUgb3Igbm90XHJcbiAgICogQHBhcmFtIGNob2ljZXMgQ2hvaWNlIGZvciB3aGljaCB0aXRsZSBzaG91bGQgYmUgY2hlY2tlZFxyXG4gICAqL1xyXG4gIGNoZWNrRm9yU2FtZVRpdGxlKGNob2ljZXM6YW55KSB7XHJcbiAgICBjb25zdCB0aXRsZSA9IGNob2ljZXMubWFwKChkYXRhOmFueSkgPT4gZGF0YS50aXRsZSk7XHJcbiAgICBmb3IgKGNvbnN0IGNob2ljZSBvZiBjaG9pY2VzKSB7XHJcbiAgICAgIGNvbnN0IHNhbWVUaXRsZSA9IGNsb25lRGVlcCh0aXRsZSkuZmlsdGVyKChkYXRhOmFueSkgPT4gZGF0YSA9PT0gY2hvaWNlLnRpdGxlKTtcclxuICAgICAgaWYgKHNhbWVUaXRsZS5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogQ2hlY2tzIGlmIHRpdGxlIG9mIHR3byBjaG9pY2VzIGlzIHNhbWUgb3Igbm90XHJcbiAgICogQHBhcmFtIGNob2ljZXMgQ2hvaWNlIGZvciB3aGljaCB0aXRsZSBzaG91bGQgYmUgY2hlY2tlZFxyXG4gICAqL1xyXG4gIGNoZWNrRm9yU2FtZVRpdGxlV2l0aE90aGVyKHF1ZXN0aW9uRGV0YWlsczogYW55KSB7XHJcbiAgICBjb25zdCB0aXRsZSA9IHF1ZXN0aW9uRGV0YWlscy5jaG9pY2VzLm1hcCgoZGF0YTogeyB0aXRsZTogc3RyaW5nOyB9KSA9PiBkYXRhLnRpdGxlLnRyaW0oKSk7XHJcbiAgICBcclxuICAgIGZvciAoY29uc3QgY2hvaWNlIG9mIHF1ZXN0aW9uRGV0YWlscy5jaG9pY2VzKSB7XHJcbiAgICAgIGNvbnN0IHNhbWVUaXRsZSA9IGNsb25lRGVlcCh0aXRsZSkuZmlsdGVyKChkYXRhOiBzdHJpbmcpID0+IGRhdGEgPT09IGNob2ljZS50aXRsZS50cmltKCkpO1xyXG4gICAgICBpZiAoc2FtZVRpdGxlLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKHF1ZXN0aW9uRGV0YWlscy5oYXNPdGhlciAmJiBjaG9pY2UudGl0bGUudHJpbSgpID09PSBxdWVzdGlvbkRldGFpbHMub3RoZXJWYWx1ZSkge1xyXG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
548
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9yLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi9zaGFyZWRDb21wb25lbnRzL2Fzc2Vzc21lbnQtZWRpdG9yL3NlcnZpY2VzL3ZhbGlkYXRvci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBUTNDLE1BQU0sT0FBTyxnQkFBZ0I7SUFFM0I7UUFHTyx1QkFBa0IsR0FBUSxFQUFFLENBQUM7SUFEcEMsQ0FBQztJQUlELFFBQVEsQ0FBQyxRQUFrQjtRQUN6QixRQUFRLFFBQVEsQ0FBQyxJQUFJLEVBQUU7WUFDckIsS0FBSyxVQUFXLENBQUMsQ0FBQztnQkFDaEIsT0FBUSxJQUFJLENBQUMsMkJBQTJCLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDcEQ7WUFDRCxLQUFLLFVBQVcsQ0FBQyxDQUFDO2dCQUNoQixPQUFRLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUNwRDtZQUNELEtBQUssaUJBQWtCLENBQUMsQ0FBQztnQkFDdkIsT0FBUSxJQUFJLENBQUMsMkJBQTJCLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDcEQ7WUFDRCxLQUFLLFNBQVUsQ0FBQyxDQUFDO2dCQUNmLE9BQU8sSUFBSSxDQUFDLDJCQUEyQixDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQ25EO1lBQ0QsS0FBSyxhQUFhLENBQUMsQ0FBQztnQkFDbEIsT0FBUSxJQUFJLENBQUMsb0JBQW9CLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDN0M7WUFDRCxLQUFLLGtCQUFrQixDQUFDLENBQUM7Z0JBQ3ZCLE9BQVEsSUFBSSxDQUFDLHVCQUF1QixDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQ2hEO1lBQ0QsS0FBSyxnQkFBZ0IsQ0FBQyxDQUFDO2dCQUNyQixPQUFRLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUMzQztZQUNELEtBQUssYUFBYSxDQUFDLENBQUM7Z0JBQ2xCLE9BQVEsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQzNDO1lBQ0wsS0FBSyxXQUFXLENBQUMsQ0FBQztnQkFDaEIsT0FBUSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDdkM7WUFDSCxLQUFLLGNBQWMsQ0FBQyxDQUFDO2dCQUNuQixPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUMzQztZQUNELEtBQUssaUJBQWtCLENBQUMsQ0FBQztnQkFDdkIsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDOUM7WUFDRCxLQUFLLGFBQWMsQ0FBQyxDQUFDO2dCQUNwQixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUN6QztZQUNELEtBQUssUUFBUyxDQUFDLENBQUM7Z0JBQ2QsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQ3JDO1lBQ0QsS0FBSyxjQUFlLENBQUMsQ0FBQztnQkFDckIsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDMUM7U0FFSDtJQUNILENBQUM7SUFJRCwyQkFBMkIsQ0FBQyxRQUFZOztRQUN0Qyw0QkFBNEI7UUFDNUIsT0FBTyxRQUFRLENBQUMsVUFBVSxDQUFDO1FBQzNCLE1BQU0sV0FBVyxHQUFHLEVBQUUsQ0FBQztRQUN2QixNQUFNLFdBQVcsR0FBVSxFQUFFLENBQUM7UUFDOUIsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLENBQUEsTUFBQSxRQUFRLGFBQVIsUUFBUSx1QkFBUixRQUFRLENBQUUsS0FBSywwQ0FBRSxJQUFJLEdBQUcsTUFBTSxNQUFLLENBQUMsRUFBRTtZQUNyRixXQUFXLENBQUMsZUFBZSxHQUFHLEVBQUMsT0FBTyxFQUFFLDRCQUE0QixFQUFDLENBQUM7WUFDdEUsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUN6QjtRQUNELElBQUksUUFBUSxDQUFDLGNBQWMsS0FBSyxJQUFJLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUNyRixRQUFRLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztTQUNuQztRQUNELElBQUksUUFBUSxDQUFDLFdBQVcsS0FBSyxJQUFJLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUMvRSxRQUFRLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztTQUNoQztRQUNELElBQUksUUFBUSxDQUFDLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFO1lBQ2hDLElBQUksUUFBUSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksQ0FBQSxNQUFBLE1BQUEsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQywwQ0FBRSxJQUFJLEVBQUUsMENBQUUsTUFBTSxNQUFLLENBQUM7Z0JBQzNKLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFHLENBQUEsTUFBQSxNQUFBLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsMENBQUUsSUFBSSxFQUFFLDBDQUFFLE1BQU0sTUFBSyxDQUFDLENBQUMsRUFBRTtnQkFDckgsV0FBVyxDQUFDLFNBQVMsR0FBSSxFQUFDLE9BQU8sRUFBRSx5Q0FBeUMsRUFBQyxDQUFDO2dCQUM5RSxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQ3pCO2lCQUFNO2dCQUNMLFFBQVEsQ0FBQyxPQUFPO29CQUNoQixRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQVUsRUFBRSxFQUFFLGVBQUMsT0FBQSxDQUFDLENBQUEsTUFBQSxNQUFBLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQywwQ0FBRSxJQUFJLEVBQUUsMENBQUUsTUFBTSxNQUFLLENBQUMsQ0FBQyxDQUFBLEVBQUEsQ0FBQyxDQUFDO2dCQUM1RixJQUFJLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtvQkFDL0IsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7aUJBQzVIO2FBQ0Y7U0FDRjthQUFNO1lBQ0wsV0FBVyxDQUFDLFNBQVMsR0FBSSxFQUFDLE9BQU8sRUFBRSx5Q0FBeUMsRUFBQyxDQUFDO1lBQzlFLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDekI7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLDBCQUEwQixDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQzlDLFdBQVcsQ0FBQyxVQUFVLEdBQUssRUFBQyxPQUFPLEVBQUUscUNBQXFDLEVBQUMsQ0FBQztZQUM1RSxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ3pCO1FBQ0QsSUFBSSxnQkFBbUMsQ0FBQztRQUN4QyxJQUFJLFdBQVcsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDaEMsUUFBUSxDQUFDLFVBQVUsR0FBRyxXQUFXLENBQUM7WUFDbEMsZ0JBQWdCLEdBQUcsRUFBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFDLENBQUM7WUFDaEUsT0FBTyxnQkFBZ0IsQ0FBQztTQUN4QjthQUFNO1lBQ0wsZ0JBQWdCLEdBQUcsRUFBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFDLENBQUM7WUFDL0QsT0FBTyxnQkFBZ0IsQ0FBQztTQUN6QjtJQUNILENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxRQUFZOztRQUMvQixPQUFPLFFBQVEsQ0FBQyxVQUFVLENBQUM7UUFDM0IsTUFBTSxXQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ3ZCLE1BQU0sV0FBVyxHQUFVLEVBQUUsQ0FBQztRQUM5QixJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksQ0FBQSxNQUFBLE1BQUEsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLDBDQUFFLElBQUksRUFBRSwwQ0FBRSxNQUFNLE1BQUssQ0FBQyxFQUFFO1lBQ25HLFdBQVcsQ0FBQyxlQUFlLEdBQUcsRUFBQyxPQUFPLEVBQUUsNEJBQTRCLEVBQUMsQ0FBQztZQUN0RSxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ3pCO1FBQ0QsSUFBSSxRQUFRLENBQUMsY0FBYyxLQUFLLElBQUksSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ3ZGLFFBQVEsQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO1NBQ2pDO1FBQ0QsSUFBSSxRQUFRLENBQUMsV0FBVyxLQUFLLElBQUksSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ2pGLFFBQVEsQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1NBQzlCO1FBQ0QsSUFBRyxRQUFRLENBQUMsa0JBQWtCLEtBQUssSUFBSSxFQUFDO1lBQ3JDLElBQUcsUUFBUSxDQUFDLGtCQUFrQixHQUFHLFFBQVEsQ0FBQyxrQkFBa0IsRUFBQztnQkFDNUQsV0FBVyxDQUFDLFVBQVUsR0FBRyxFQUFDLE9BQU8sRUFBRSx1REFBdUQsRUFBQyxDQUFDO2dCQUM1RixXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQ3hCO1NBQ0g7UUFDRCxJQUFJLGdCQUFtQyxDQUFDO1FBQ3hDLElBQUksV0FBVyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNoQyxRQUFRLENBQUMsVUFBVSxHQUFHLFdBQVcsQ0FBQztZQUNsQyxnQkFBZ0IsR0FBRyxFQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUMsQ0FBQztZQUNoRSxPQUFPLGdCQUFnQixDQUFDO1NBQ3hCO2FBQU07WUFDTCxnQkFBZ0IsR0FBRyxFQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUMsQ0FBQztZQUMvRCxPQUFPLGdCQUFnQixDQUFDO1NBQ3pCO0lBQ0gsQ0FBQztJQUVELGdCQUFnQixDQUFDLFFBQVk7O1FBQzNCLE9BQU8sUUFBUSxDQUFDLFVBQVUsQ0FBQztRQUMzQixNQUFNLFdBQVcsR0FBRyxFQUFFLENBQUM7UUFDdkIsTUFBTSxXQUFXLEdBQVUsRUFBRSxDQUFDO1FBQzlCLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxDQUFBLE1BQUEsTUFBQSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsMENBQUUsSUFBSSxFQUFFLDBDQUFFLE1BQU0sTUFBSyxDQUFDLEVBQUU7WUFDbkcsV0FBVyxDQUFDLGVBQWUsR0FBRyxFQUFDLE9BQU8sRUFBRSw0QkFBNEIsRUFBQyxDQUFDO1lBQ3RFLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FFekI7UUFDRCxJQUFJLFFBQVEsQ0FBQyxjQUFjLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDdkYsUUFBUSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7U0FDakM7UUFDRCxJQUFJLFFBQVEsQ0FBQyxXQUFXLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDakYsUUFBUSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7U0FDOUI7UUFDRCxJQUFJLFFBQVEsQ0FBQyxPQUFPLEtBQUssSUFBSSxFQUFFO1lBQzdCLElBQUksUUFBUSxDQUFDLElBQUksS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7Z0JBQ2pGLFdBQVcsQ0FBQyxXQUFXLEdBQUcsRUFBQyxPQUFPLEVBQUcsMENBQTBDLEVBQUMsQ0FBQztnQkFDakYsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUN6QjtTQUNGO1FBQ0QsSUFBSSxRQUFRLENBQUMsT0FBTyxLQUFLLElBQUksRUFBRTtZQUM3QixJQUFJLFFBQVEsQ0FBQyxJQUFJLEtBQUssU0FBUyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO2dCQUNqRixXQUFXLENBQUMsV0FBVyxHQUFHLEVBQUMsT0FBTyxFQUFFLDBDQUEwQyxFQUFDLENBQUU7Z0JBQ2pGLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDekI7U0FDRjtRQUNELElBQUksUUFBUSxDQUFDLE9BQU8sS0FBSyxLQUFLLElBQUksUUFBUSxDQUFDLE9BQU8sS0FBSyxLQUFLLEVBQUU7WUFDMUQsUUFBUSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7U0FDM0I7UUFDRCxJQUFJLGdCQUFtQyxDQUFDO1FBQ3hDLElBQUksV0FBVyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNoQyxRQUFRLENBQUMsVUFBVSxHQUFHLFdBQVcsQ0FBQztZQUNsQyxnQkFBZ0IsR0FBRyxFQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUMsQ0FBQztZQUNoRSxPQUFPLGdCQUFnQixDQUFDO1NBQ3hCO2FBQU07WUFDTCxnQkFBZ0IsR0FBRyxFQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUMsQ0FBQztZQUMvRCxPQUFPLGdCQUFnQixDQUFDO1NBQ3pCO0lBQ0gsQ0FBQztJQUVELG1CQUFtQixDQUFDLFFBQVk7UUFDOUIsT0FBTyxRQUFRLENBQUMsVUFBVSxDQUFDO1FBQzNCLE1BQU0sV0FBVyxHQUFHLEVBQUUsQ0FBQztRQUN2QixNQUFNLFdBQVcsR0FBVSxFQUFFLENBQUM7UUFDOUIsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQzdDLFdBQVcsQ0FBQyxlQUFlLEdBQUcsRUFBQyxPQUFPLEVBQUUsNEJBQTRCLEVBQUMsQ0FBQztZQUN0RSxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ3pCO1FBQ0QsSUFBSSxRQUFRLENBQUMsY0FBYyxLQUFLLElBQUksSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ3ZGLFFBQVEsQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO1NBQ2pDO1FBQ0QsSUFBSSxRQUFRLENBQUMsV0FBVyxLQUFLLElBQUksSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ2pGLFFBQVEsQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1NBQzlCO1FBRUQsSUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDL0IsSUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUM7Z0JBQzFGLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxLQUFLLEVBQUU7bUJBQ3hGLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxLQUFLLEVBQUUsQ0FBQyxFQUFFO2dCQUN2QyxXQUFXLENBQUMsU0FBUyxHQUFJLEVBQUMsT0FBTyxFQUFFLHlDQUF5QyxFQUFDLENBQUM7Z0JBQzlFLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDekI7aUJBQU07Z0JBQ0wsUUFBUSxDQUFDLE9BQU87b0JBQ2hCLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBVSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUM7YUFDbEY7U0FDRjthQUFNO1lBQ0gsV0FBVyxDQUFDLFNBQVMsR0FBSSxFQUFDLE9BQU8sRUFBRSx5Q0FBeUMsRUFBQyxDQUFDO1lBQzlFLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDM0I7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUM3QyxXQUFXLENBQUMsVUFBVSxHQUFLLEVBQUMsT0FBTyxFQUFFLHFDQUFxQyxFQUFDLENBQUM7WUFDNUUsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUN6QjtRQUNELElBQUksZ0JBQW1DLENBQUM7UUFDeEMsSUFBSSxXQUFXLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ2hDLFFBQVEsQ0FBQyxVQUFVLEdBQUcsV0FBVyxDQUFDO1lBQ2xDLGdCQUFnQixHQUFHLEVBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBQyxDQUFDO1lBQ2hFLE9BQU8sZ0JBQWdCLENBQUM7U0FDeEI7YUFBTTtZQUNMLGdCQUFnQixHQUFHLEVBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBQyxDQUFDO1lBQy9ELE9BQU8sZ0JBQWdCLENBQUM7U0FDekI7SUFDSCxDQUFDO0lBSUQsc0JBQXNCLENBQUMsUUFBWTtRQUNqQyxPQUFPLFFBQVEsQ0FBQyxVQUFVLENBQUM7UUFDM0IsTUFBTSxXQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ3ZCLE1BQU0sV0FBVyxHQUFVLEVBQUUsQ0FBQztRQUM5QixJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDN0MsV0FBVyxDQUFDLGVBQWUsR0FBRyxFQUFDLE9BQU8sRUFBRSw0QkFBNEIsRUFBQyxDQUFDO1lBQ3RFLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDekI7UUFDRCxJQUFJLFFBQVEsQ0FBQyxjQUFjLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDdkYsUUFBUSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7U0FDakM7UUFDRCxJQUFJLFFBQVEsQ0FBQyxXQUFXLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDakYsUUFBUSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7U0FDOUI7UUFDRCxJQUFJLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUMvQixLQUFLLE1BQU0sTUFBTSxJQUFJLFFBQVEsQ0FBQyxPQUFPLEVBQUU7Z0JBQ3JDLElBQUksUUFBUSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7b0JBQzVFLFdBQVcsQ0FBQyxNQUFNLEdBQUssRUFBQyxPQUFPLEVBQUUsNENBQTRDLEVBQUMsQ0FBQztvQkFDL0UsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztpQkFDekI7cUJBQU07b0JBQ0MsUUFBUSxDQUFDLE9BQU8sR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLGNBQWtCLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQztvQkFDcEgsSUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7d0JBQ3JDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLGVBQWUsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLEVBQUUsRUFBRSxDQUFHLENBQUM7cUJBQzdJO2lCQUVKO2FBQ0Y7U0FDRjthQUFNO1lBQ0wsV0FBVyxDQUFDLE1BQU0sR0FBSyxFQUFDLE9BQU8sRUFBRSw0Q0FBNEMsRUFBQyxDQUFDO1lBQy9FLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDekI7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUM3QyxXQUFXLENBQUMsVUFBVSxHQUFLLEVBQUMsT0FBTyxFQUFFLGtDQUFrQyxFQUFDLENBQUM7WUFDekUsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUN6QjtRQUVELElBQUksUUFBUSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQy9CLFFBQVEsQ0FBQyxPQUFPLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxjQUFrQixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFFcEgsS0FBSyxNQUFNLE1BQU0sSUFBSSxRQUFRLENBQUMsT0FBTyxFQUFFO2dCQUNyQyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7b0JBQzNDLFdBQVcsQ0FBQyxNQUFNLEdBQUksRUFBQyxPQUFPLEVBQUUsK0NBQStDLEVBQUMsQ0FBQztvQkFDakYsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztpQkFDekI7Z0JBQ0QsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7b0JBQzdCLEtBQUssTUFBTSxZQUFZLElBQUksTUFBTSxDQUFDLE9BQU8sRUFBRTt3QkFDekMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFOzRCQUNqRCxRQUFRLENBQUMsT0FBTyxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsY0FBa0IsRUFBRSxFQUFFLENBQ2hFLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQzs0QkFDbkQsaUdBQWlHOzRCQUNqRywyQkFBMkI7NEJBQzNCLE1BQU0sQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxjQUFrQixFQUFFLEVBQUUsQ0FDNUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDO3lCQUNwRDs2QkFBTTs0QkFDTCwyREFBMkQ7NEJBQzNELHNEQUFzRDt5QkFDdkQ7cUJBQ0Y7aUJBQ0Y7cUJBQU07b0JBQ0wsV0FBVyxDQUFDLFNBQVMsR0FBSSxFQUFDLE9BQU8sRUFBRSx5REFBeUQsRUFBQyxDQUFDO29CQUM5RixXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2lCQUN6QjthQUNGO1lBQ0QsSUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7Z0JBQy9CLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLGVBQWUsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLEVBQUU7b0JBQ3hJLE9BQU8sRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLGVBQWUsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDO2FBQy9IO1NBQ0Y7YUFBTTtZQUNMLFdBQVcsQ0FBQyxNQUFNLEdBQUssRUFBQyxPQUFPLEVBQUUsK0NBQStDLEVBQUMsQ0FBQztZQUNsRixXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ3pCO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDN0MsV0FBVyxDQUFDLFVBQVUsR0FBSyxFQUFDLE9BQU8sRUFBRSxxQ0FBcUMsRUFBQyxDQUFDO1lBQzVFLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDekI7UUFDRCxJQUFJLGdCQUFtQyxDQUFDO1FBQ3hDLElBQUksV0FBVyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNoQyxRQUFRLENBQUMsVUFBVSxHQUFHLFdBQVcsQ0FBQztZQUNsQyxnQkFBZ0IsR0FBRyxFQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUMsQ0FBQztZQUNoRSxPQUFPLGdCQUFnQixDQUFDO1NBQ3hCO2FBQU07WUFDTCxnQkFBZ0IsR0FBRyxFQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUMsQ0FBQztZQUMvRCxPQUFPLGdCQUFnQixDQUFDO1NBQ3pCO0lBQ0gsQ0FBQztJQUdELHVCQUF1QixDQUFDLFFBQVk7UUFDbEMsT0FBTyxRQUFRLENBQUMsVUFBVSxDQUFDO1FBQzNCLE1BQU0sV0FBVyxHQUFHLEVBQUUsQ0FBQztRQUN2QixNQUFNLFdBQVcsR0FBVSxFQUFFLENBQUM7UUFDOUIsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQzdDLFdBQVcsQ0FBQyxlQUFlLEdBQUcsRUFBQyxPQUFPLEVBQUUsNEJBQTRCLEVBQUMsQ0FBQztZQUN0RSxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ3pCO1FBQ0QsSUFBSSxRQUFRLENBQUMsY0FBYyxLQUFLLElBQUksSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ3ZGLFFBQVEsQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO1NBQ2pDO1FBQ0QsSUFBSSxRQUFRLENBQUMsV0FBVyxLQUFLLElBQUksSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ2pGLFFBQVEsQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1NBQzlCO1FBRUQsSUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDL0IsSUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7Z0JBQ3pGLFdBQVcsQ0FBQyxTQUFTLEdBQUksRUFBQyxPQUFPLEVBQUUsK0JBQStCLEVBQUMsQ0FBQztnQkFDcEUsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUN6QjtpQkFBTTtnQkFDTCxRQUFRLENBQUMsT0FBTztvQkFDaEIsUUFBUSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFVLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQzthQUNsRjtTQUNGO2FBQU07WUFDTCxXQUFXLENBQUMsU0FBUyxHQUFJLEVBQUMsT0FBTyxFQUFFLGtDQUFrQyxFQUFDLENBQUM7WUFDdkUsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUN6QjtRQUVELElBQUksQ0FBQyxJQUFJLENBQUMsMEJBQTBCLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDOUMsV0FBVyxDQUFDLFVBQVUsR0FBSyxFQUFDLE9BQU8sRUFBRSx1Q0FBdUMsRUFBQyxDQUFDO1lBQzlFLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDekI7UUFDRCxJQUFJLGdCQUFtQyxDQUFDO1FBQ3hDLElBQUksV0FBVyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNoQyxRQUFRLENBQUMsVUFBVSxHQUFHLFdBQVcsQ0FBQztZQUNsQyxnQkFBZ0IsR0FBRyxFQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUMsQ0FBQztZQUNoRSxPQUFPLGdCQUFnQixDQUFDO1NBQ3hCO2FBQU07WUFDTCxnQkFBZ0IsR0FBRyxFQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUMsQ0FBQztZQUMvRCxPQUFPLGdCQUFnQixDQUFDO1NBQ3pCO0lBQ0gsQ0FBQztJQUVELGNBQWMsQ0FBQyxRQUFZO1FBQ3pCLE9BQU8sUUFBUSxDQUFDLFVBQVUsQ0FBQztRQUMzQixNQUFNLFdBQVcsR0FBRyxFQUFFLENBQUM7UUFDdkIsTUFBTSxXQUFXLEdBQVUsRUFBRSxDQUFDO1FBQzlCLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsYUFBYSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3JELE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsYUFBYSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3JELE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUM7UUFDbkMsTUFBTSxTQUFTLEdBQUcsQ0FBQyxDQUFDO1FBQ3BCLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUM3QyxXQUFXLENBQUMsZUFBZSxHQUFHLEVBQUMsT0FBTyxFQUFFLDRCQUE0QixFQUFDLENBQUM7WUFDdEUsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUN6QjtRQUNELElBQUksUUFBUSxDQUFDLGNBQWMsS0FBSyxJQUFJLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUN2RixRQUFRLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztTQUNqQztRQUNELElBQUksUUFBUSxDQUFDLFdBQVcsS0FBSyxJQUFJLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUNqRixRQUFRLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztTQUM5QjtRQUNELElBQUksT0FBTyxJQUFJLE9BQU8sRUFBRTtZQUN0QixXQUFXLENBQUMsUUFBUSxHQUFJLEVBQUMsT0FBTyxFQUFFLHFDQUFxQyxPQUFPLEdBQUcsRUFBQyxDQUFDO1lBQ25GLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDekI7UUFDRCxJQUFJLE9BQU8sSUFBSSxPQUFPLEVBQUU7WUFDdEIsV0FBVyxDQUFDLFFBQVEsR0FBSSxFQUFDLE9BQU8sRUFBRSxxQ0FBcUMsT0FBTyxHQUFHLEVBQUMsQ0FBQztZQUNuRixXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ3pCO1FBQ0QsSUFBSSxRQUFRLEdBQUcsT0FBTyxFQUFFO1lBQ3RCLFdBQVcsQ0FBQyxTQUFTLEdBQUksRUFBQyxPQUFPLEVBQUUsOENBQThDLE9BQU8sSUFBSSxPQUFPLGdEQUFnRCxFQUFDLENBQUM7WUFDckosV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUN6QjtRQUNELElBQUksUUFBUSxJQUFJLENBQUMsRUFBRTtZQUNqQixXQUFXLENBQUMsU0FBUyxHQUFJLEVBQUMsT0FBTyxFQUFFLHFDQUFxQyxTQUFTLEdBQUcsRUFBRSxDQUFDO1lBQ3ZGLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDekI7UUFDRCxJQUFJLGdCQUFtQyxDQUFDO1FBQ3hDLElBQUksV0FBVyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNoQyxRQUFRLENBQUMsVUFBVSxHQUFHLFdBQVcsQ0FBQztZQUNsQyxnQkFBZ0IsR0FBRyxFQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUMsQ0FBQztZQUNoRSxPQUFPLGdCQUFnQixDQUFDO1NBQ3hCO2FBQU07WUFDTCxnQkFBZ0IsR0FBRyxFQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUMsQ0FBQztZQUMvRCxPQUFPLGdCQUFnQixDQUFDO1NBQ3pCO0lBQ0gsQ0FBQztJQUdELGtCQUFrQixDQUFDLFFBQVk7UUFDN0IsT0FBTyxRQUFRLENBQUMsVUFBVSxDQUFDO1FBQzNCLE1BQU0sV0FBVyxHQUFHLEVBQUUsQ0FBQztRQUN2QixNQUFNLFdBQVcsR0FBVSxFQUFFLENBQUM7UUFDOUIsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQzdDLFdBQVcsQ0FBQyxlQUFlLEdBQUcsRUFBQyxPQUFPLEVBQUUsNEJBQTRCLEVBQUMsQ0FBQztZQUN0RSxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ3pCO1FBQ0QsSUFBSSxRQUFRLENBQUMsY0FBYyxLQUFLLElBQUksSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ3ZGLFFBQVEsQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO1NBQ2pDO1FBQ0QsSUFBSSxRQUFRLENBQUMsV0FBVyxLQUFLLElBQUksSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ2pGLFFBQVEsQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1NBQzlCO1FBQ0QsSUFBSSxRQUFRLENBQUMsY0FBYyxFQUFFO1lBQzNCLElBQUksUUFBUSxDQUFDLGVBQWUsS0FBSyxPQUFPLElBQUksUUFBUSxDQUFDLGNBQWMsS0FBSyxFQUFFLElBQUksUUFBUSxDQUFDLFlBQVksS0FBSyxFQUFFLEVBQUU7Z0JBQzFHLFFBQVEsQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO2FBQ2pDO1NBQ0Y7UUFDRCxJQUFJLGdCQUFtQyxDQUFDO1FBQ3hDLElBQUksV0FBVyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNoQyxRQUFRLENBQUMsVUFBVSxHQUFHLFdBQVcsQ0FBQztZQUNsQyxnQkFBZ0IsR0FBRyxFQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUMsQ0FBQztZQUNoRSxPQUFPLGdCQUFnQixDQUFDO1NBQ3hCO2FBQU07WUFDTCxnQkFBZ0IsR0FBRyxFQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUMsQ0FBQztZQUMvRCxPQUFPLGdCQUFnQixDQUFDO1NBQ3pCO0lBQ0gsQ0FBQztJQUVELG1CQUFtQixDQUFDLFFBQVk7UUFDOUIsT0FBTyxRQUFRLENBQUMsVUFBVSxDQUFDO1FBQzNCLE1BQU0sV0FBVyxHQUFHLEVBQUUsQ0FBQztRQUN2QixNQUFNLFdBQVcsR0FBVSxFQUFFLENBQUM7UUFDOUIsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQzdDLFdBQVcsQ0FBQyxlQUFlLEdBQUcsRUFBQyxPQUFPLEVBQUUsNEJBQTRCLEVBQUMsQ0FBQztZQUN0RSxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ3pCO1FBQ0QsSUFBSSxRQUFRLENBQUMsY0FBYyxLQUFLLElBQUksSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ3ZGLFFBQVEsQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO1NBQ2pDO1FBQ0QsSUFBSSxRQUFRLENBQUMsV0FBVyxLQUFLLElBQUksSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ2pGLFFBQVEsQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1NBQzlCO1FBQ0QsSUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDL0IsS0FBSyxNQUFNLE1BQU0sSUFBSSxRQUFRLENBQUMsT0FBTyxFQUFFO2dCQUNyQyxJQUFJLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO29CQUM1RSxXQUFXLENBQUMsTUFBTSxHQUFLLEVBQUMsT0FBTyxFQUFFLDRDQUE0QyxFQUFDLENBQUM7b0JBQy9FLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7aUJBQ3pCO3FCQUFNO29CQUNDLFFBQVEsQ0FBQyxPQUFPO3dCQUN0QixRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLGNBQWtCLEVBQUUsRUFBRSxDQUM3QyxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUM7b0JBQzdDLElBQUksUUFBUSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO3dCQUNyQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBRSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRSxlQUFlLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxFQUFFLEVBQUUsQ0FBRyxDQUFDO3FCQUM3STtpQkFFSjthQUNGO1NBQ0Y7YUFBTTtZQUNMLFdBQVcsQ0FBQyxNQUFNLEdBQUssRUFBQyxPQUFPLEVBQUUsNENBQTRDLEVBQUMsQ0FBQztZQUMvRSxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ3pCO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDN0MsV0FBVyxDQUFDLFVBQVUsR0FBSyxFQUFDLE9BQU8sRUFBRSxrQ0FBa0MsRUFBQyxDQUFDO1lBQ3pFLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDekI7UUFFRCxJQUFJLFFBQVEsQ0FBQyxPQUFPLEtBQUssU0FBUyxJQUFJLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUNqRSxLQUFLLE1BQU0sTUFBTSxJQUFJLFFBQVEsQ0FBQyxPQUFPLEVBQUU7Z0JBQ3JDLElBQUksUUFBUSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7b0JBQzVFLFdBQVcsQ0FBQyxNQUFNLEdBQUssRUFBQyxPQUFPLEVBQUUsK0NBQStDLEVBQUMsQ0FBQztvQkFDbEYsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztpQkFDekI7cUJBQU07b0JBQ0wsUUFBUSxDQUFDLE9BQU87d0JBQ3RCLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsY0FBa0IsRUFBRSxFQUFFLENBQzdDLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQztvQkFDN0MsSUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7d0JBQ3JDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLGVBQWUsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLEVBQUUsRUFBRSxDQUFHLENBQUM7cUJBQzdJO2lCQUVKO2FBQ0k7U0FDRjthQUFNO1lBQ0wsV0FBVyxDQUFDLE1BQU0sR0FBSyxFQUFDLE9BQU8sRUFBRSwrQ0FBK0MsRUFBQyxDQUFDO1lBQ2xGLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDekI7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUM3QyxXQUFXLENBQUMsVUFBVSxHQUFLLEVBQUMsT0FBTyxFQUFFLHFDQUFxQyxFQUFDLENBQUM7WUFDNUUsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUN6QjtRQUNELElBQUksZ0JBQW1DLENBQUM7UUFDeEMsSUFBSSxXQUFXLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ2hDLFFBQVEsQ0FBQyxVQUFVLEdBQUcsV0FBVyxDQUFDO1lBQ2xDLGdCQUFnQixHQUFHLEVBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBQyxDQUFDO1lBQ2hFLE9BQU8sZ0JBQWdCLENBQUM7U0FDeEI7YUFBTTtZQUNMLGdCQUFnQixHQUFHLEVBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBQyxDQUFDO1lBQy9ELE9BQU8sZ0JBQWdCLENBQUM7U0FDekI7SUFDSCxDQUFDO0lBQ0Q7OztPQUdHO0lBQ0QsT0FBTyxDQUFDLENBQUs7UUFDYixNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzVDLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDO1FBQ25CLE9BQU8sSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQzVDLENBQUM7SUFDQTs7O01BR0U7SUFDSCxpQkFBaUIsQ0FBQyxPQUFXO1FBQzNCLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFRLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNwRCxLQUFLLE1BQU0sTUFBTSxJQUFJLE9BQU8sRUFBRTtZQUM1QixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQVEsRUFBRSxFQUFFLENBQUMsSUFBSSxLQUFLLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN2RixJQUFJLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO2dCQUN4QixPQUFPLEtBQUssQ0FBQzthQUNkO1NBQ0Y7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFDRDs7O09BR0c7SUFDSCwwQkFBMEIsQ0FBQyxlQUFvQjtRQUM3QyxNQUFNLEtBQUssR0FBRyxlQUFlLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQXdCLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUUzRixLQUFLLE1BQU0sTUFBTSxJQUFJLGVBQWUsQ0FBQyxPQUFPLEVBQUU7WUFDNUMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFZLEVBQUUsRUFBRSxDQUFDLElBQUksS0FBSyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7WUFDbEcsSUFBSSxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtnQkFDeEIsT0FBTyxLQUFLLENBQUM7YUFDZDtpQkFBTTtnQkFDTCxJQUFJLGVBQWUsQ0FBQyxRQUFRLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsS0FBSyxlQUFlLENBQUMsVUFBVSxFQUFFO29CQUNsRixPQUFPLEtBQUssQ0FBQztpQkFDZDthQUNGO1NBQ0Y7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxZQUFZLENBQUMsS0FBVTtRQUNyQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzNDLENBQUM7Ozs7WUFyaUJGLFVBQVUsU0FBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVmFsaWRhdGVTdHJ1Y3R1cmUgfSBmcm9tICcuLi9jb21wb25lbnRzL2Vycm9ySW50ZXJmYWNlL3ZhbGlkYXRlU3RydWN0dXJlJztcclxuaW1wb3J0IHsgRXJyb3IgfSBmcm9tICcuLi9jb21wb25lbnRzL2Vycm9ySW50ZXJmYWNlL2Vycm9yJztcclxuaW1wb3J0IHsgUXVlc3Rpb24gfSBmcm9tICcuLi9jb21wb25lbnRzL2Vycm9ySW50ZXJmYWNlL3F1ZXN0aW9uJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFZhbGlkYXRvclNlcnZpY2Uge1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuXHJcbiAgfVxyXG4gIHB1YmxpYyB2YWxpZGF0ZWRRdWVzdGlvbnM6IGFueSA9IHt9O1xyXG5cclxuXHJcbiAgdmFsaWRhdGUocXVlc3Rpb246IFF1ZXN0aW9uKTogVmFsaWRhdGVTdHJ1Y3R1cmUgfCBhbnkge1xyXG4gICAgc3dpdGNoIChxdWVzdGlvbi50eXBlKSB7XHJcbiAgICAgIGNhc2UgJ2NoZWNrYm94JyA6IHtcclxuICAgICAgICByZXR1cm4gIHRoaXMudmFsaWRhdGVNdWx0aVZhbHVlZFF1ZXN0aW9uKHF1ZXN0aW9uKTtcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdkcm9wZG93bicgOiB7XHJcbiAgICAgICAgcmV0dXJuICB0aGlzLnZhbGlkYXRlTXVsdGlWYWx1ZWRRdWVzdGlvbihxdWVzdGlvbik7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnbXVsdGlwbGUtY2hvaWNlJyA6IHtcclxuICAgICAgICByZXR1cm4gIHRoaXMudmFsaWRhdGVNdWx0aVZhbHVlZFF1ZXN0aW9uKHF1ZXN0aW9uKTtcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdyYW5raW5nJyA6IHtcclxuICAgICAgICByZXR1cm4gdGhpcy52YWxpZGF0ZU11bHRpVmFsdWVkUXVlc3Rpb24ocXVlc3Rpb24pO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ2NvbW1lbnQtYm94Jzoge1xyXG4gICAgICAgIHJldHVybiAgdGhpcy52YWxpZGF0ZVNpbmdsZVZhbHVlZChxdWVzdGlvbik7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnbXVsdGlwbGUtdGV4dGJveCc6IHtcclxuICAgICAgICByZXR1cm4gIHRoaXMudmFsaWRhdGVNdWx0aXBsZVRleHRCb3gocXVlc3Rpb24pO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ3NpbmdsZS10ZXh0Ym94Jzoge1xyXG4gICAgICAgIHJldHVybiAgdGhpcy52YWxpZGF0ZVNpbmdsZVZhbHVlZChxdWVzdGlvbik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhc2UgJ2ZpbGUtdXBsb2FkJzoge1xyXG4gICAgICAgICAgcmV0dXJuICB0aGlzLnZhbGlkYXRlU2luZ2xlVmFsdWVkKHF1ZXN0aW9uKTtcclxuICAgICAgICAgIH1cclxuICAgICAgY2FzZSAnZGF0ZS10aW1lJzoge1xyXG4gICAgICAgIHJldHVybiAgdGhpcy52YWxpZGF0ZURhdGVUaW1lKHF1ZXN0aW9uKTtcclxuICAgICAgICB9XHJcbiAgICAgIGNhc2UgJ2ltYWdlLWNob2ljZSc6IHtcclxuICAgICAgICByZXR1cm4gdGhpcy52YWxpZGF0ZUltYWdlVXBsb2FkKHF1ZXN0aW9uKTtcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdtYXRyaXgtZHJvcGRvd24nIDoge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnZhbGlkYXRlTWF0cml4RHJvcGRvd24ocXVlc3Rpb24pO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgJ3N0YXItcmF0aW5nJyA6IHtcclxuICAgICAgIHJldHVybiB0aGlzLnZhbGlkYXRlU3RhclJhdGluZyhxdWVzdGlvbik7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnc2xpZGVyJyA6IHtcclxuICAgICAgICByZXR1cm4gdGhpcy52YWxpZGF0ZVNsaWRlcihxdWVzdGlvbik7XHJcbiAgICAgICB9XHJcbiAgICAgICBjYXNlICdyYXRpbmctc2NhbGUnIDoge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnZhbGlkYXRlUmF0aW5nU2NhbGUocXVlc3Rpb24pO1xyXG4gICAgICAgfVxyXG5cclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuXHJcbiAgdmFsaWRhdGVNdWx0aVZhbHVlZFF1ZXN0aW9uKHF1ZXN0aW9uOmFueSk6IFZhbGlkYXRlU3RydWN0dXJlICB7XHJcbiAgICAvLyBxdWVzdGlvbi5lcnJvckFycmF5ID0ge307XHJcbiAgICBkZWxldGUgcXVlc3Rpb24uZXJyb3JBcnJheTtcclxuICAgIGNvbnN0IHZhbGlkU3RhdHVzID0gW107XHJcbiAgICBjb25zdCBFUlJPUl9BUlJBWTogRXJyb3IgPSB7fTtcclxuICAgIGlmICh0aGlzLmV4dHJhY3QocXVlc3Rpb24udGl0bGUpLmxlbmd0aCA9PT0gMCB8fCBxdWVzdGlvbj8udGl0bGU/LnRyaW0oKS5sZW5ndGggPT09IDApIHtcclxuICAgICAgRVJST1JfQVJSQVkucXVlc3Rpb25NaXNzaW5nID0ge21lc3NhZ2U6ICdQbGVhc2UgZW50ZXIgdGhlIHF1ZXN0aW9uLid9O1xyXG4gICAgICB2YWxpZFN0YXR1cy5wdXNoKGZhbHNlKTtcclxuICAgIH1cclxuICAgIGlmIChxdWVzdGlvbi5oYXNEZXNjcmlwdGlvbiA9PT0gdHJ1ZSAmJiB0aGlzLmV4dHJhY3QocXVlc3Rpb24uZGVzY3JpcHRpb24pLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgIHF1ZXN0aW9uLmhhc0Rlc2NyaXB0aW9uID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBpZiAocXVlc3Rpb24uaGFzQ29tbWVudHMgPT09IHRydWUgJiYgdGhpcy5leHRyYWN0KHF1ZXN0aW9uLmNvbW1lbnRzKS5sZW5ndGggPT09IDApIHtcclxuICAgICAgICBxdWVzdGlvbi5oYXNDb21tZW50cyA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgaWYgKHF1ZXN0aW9uLmNob2ljZXMubGVuZ3RoID49IDIpIHtcclxuICAgICAgaWYgKHF1ZXN0aW9uLmNob2ljZXMubGVuZ3RoID09PSAyICYmICh0aGlzLmV4dHJhY3QocXVlc3Rpb24uY2hvaWNlc1swXS50aXRsZSkubGVuZ3RoID09PSAwIHx8IHRoaXMuZXh0cmFjdChxdWVzdGlvbi5jaG9pY2VzWzBdLnRpdGxlKT8udHJpbSgpPy5sZW5ndGggPT09IDAgfHxcclxuICAgICAgdGhpcy5leHRyYWN0KHF1ZXN0aW9uLmNob2ljZXNbMV0udGl0bGUpLmxlbmd0aCA9PT0gMCB8fHRoaXMuZXh0cmFjdChxdWVzdGlvbi5jaG9pY2VzWzFdLnRpdGxlKT8udHJpbSgpPy5sZW5ndGggPT09IDApKSB7XHJcbiAgICAgICAgRVJST1JfQVJSQVkudHdvQ2hvaWNlICA9IHttZXNzYWdlOiAnUGxlYXNlIGFkZCBhdCBsZWFzdCB0d28gYW5zd2VyIGNob2ljZXMuJ307XHJcbiAgICAgICAgdmFsaWRTdGF0dXMucHVzaChmYWxzZSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcXVlc3Rpb24uY2hvaWNlcyA9XHJcbiAgICAgICAgcXVlc3Rpb24uY2hvaWNlcy5maWx0ZXIoKGNob2ljZTphbnkpID0+ICh0aGlzLmV4dHJhY3QoY2hvaWNlLnRpdGxlKT8udHJpbSgpPy5sZW5ndGggIT09IDApKTtcclxuICAgICAgICBpZiAocXVlc3Rpb24uY2hvaWNlcy5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgICAgcXVlc3Rpb24uY2hvaWNlcy5wdXNoKHsgdGl0bGU6ICcnLCB2YWx1ZTogMSwgaXNTZWxlY3RlZDogZmFsc2UsIHJlcXVpcmVkOiAwLCBoYXNIZWxwaW5nTGFiZWw6IGZhbHNlLCBoZWxwaW5nTGFiZWw6ICcnIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgRVJST1JfQVJSQVkudHdvQ2hvaWNlICA9IHttZXNzYWdlOiAnUGxlYXNlIGFkZCBhdCBsZWFzdCB0d28gYW5zd2VyIGNob2ljZXMuJ307XHJcbiAgICAgIHZhbGlkU3RhdHVzLnB1c2goZmFsc2UpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghdGhpcy5jaGVja0ZvclNhbWVUaXRsZVdpdGhPdGhlcihxdWVzdGlvbikpIHtcclxuICAgICAgRVJST1JfQVJSQVkuc2FtZUNob2ljZSAgID0ge21lc3NhZ2U6ICdUd28gb3B0aW9ucyBjYW5ub3QgaGF2ZSBzYW1lIHRpdGxlLid9O1xyXG4gICAgICB2YWxpZFN0YXR1cy5wdXNoKGZhbHNlKTtcclxuICAgIH1cclxuICAgIGxldCB2YWxpZGF0aW9uUmVzdWx0OiBWYWxpZGF0ZVN0cnVjdHVyZTtcclxuICAgIGlmICh2YWxpZFN0YXR1cy5pbmNsdWRlcyhmYWxzZSkpIHtcclxuICAgICBxdWVzdGlvbi5lcnJvckFycmF5ID0gRVJST1JfQVJSQVk7XHJcbiAgICAgdmFsaWRhdGlvblJlc3VsdCA9IHt2YWxpZDogZmFsc2UsIGVycm9yOiBFUlJPUl9BUlJBWSwgcXVlc3Rpb259O1xyXG4gICAgIHJldHVybiB2YWxpZGF0aW9uUmVzdWx0O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdmFsaWRhdGlvblJlc3VsdCA9IHt2YWxpZDogdHJ1ZSwgZXJyb3I6IEVSUk9SX0FSUkFZLCBxdWVzdGlvbn07XHJcbiAgICAgIHJldHVybiB2YWxpZGF0aW9uUmVzdWx0O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdmFsaWRhdGVTaW5nbGVWYWx1ZWQocXVlc3Rpb246YW55KTogVmFsaWRhdGVTdHJ1Y3R1cmUgIHtcclxuICAgIGRlbGV0ZSBxdWVzdGlvbi5lcnJvckFycmF5O1xyXG4gICAgY29uc3QgdmFsaWRTdGF0dXMgPSBbXTtcclxuICAgIGNvbnN0IEVSUk9SX0FSUkFZOiBFcnJvciA9IHt9O1xyXG4gICAgaWYgKHRoaXMuZXh0cmFjdChxdWVzdGlvbi50aXRsZSkubGVuZ3RoID09PSAwIHx8IHRoaXMuZXh0cmFjdChxdWVzdGlvbi50aXRsZSk/LnRyaW0oKT8ubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIEVSUk9SX0FSUkFZLnF1ZXN0aW9uTWlzc2luZyA9IHttZXNzYWdlOiAnUGxlYXNlIGVudGVyIHRoZSBxdWVzdGlvbi4nfTtcclxuICAgICAgdmFsaWRTdGF0dXMucHVzaChmYWxzZSk7XHJcbiAgICB9XHJcbiAgICBpZiAocXVlc3Rpb24uaGFzRGVzY3JpcHRpb24gPT09IHRydWUgJiYgdGhpcy5leHRyYWN0KHF1ZXN0aW9uLmRlc2NyaXB0aW9uKS5sZW5ndGggPT09IDApIHtcclxuICAgICAgcXVlc3Rpb24uaGFzRGVzY3JpcHRpb24gPSBmYWxzZTtcclxuICAgIH1cclxuICAgIGlmIChxdWVzdGlvbi5oYXNDb21tZW50cyA9PT0gdHJ1ZSAmJiB0aGlzLmV4dHJhY3QocXVlc3Rpb24uY29tbWVudHMpLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICBxdWVzdGlvbi5oYXNDb21tZW50cyA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgaWYocXVlc3Rpb24uaGFzQ2hhcmFjdGVyTGVuZ3RoID09PSB0cnVlKXtcclxuICAgICAgIGlmKHF1ZXN0aW9uLm1pbkNoYXJhY3Rlckxlbmd0aCA+IHF1ZXN0aW9uLm1heENoYXJhY3Rlckxlbmd0aCl7XHJcbiAgICAgICAgRVJST1JfQVJSQVkuY2hhckxlbmd0aCA9IHttZXNzYWdlOiAnTWluaW11bSBDaGFyYWN0ZXIgbGVuZ3RoIHNob3VsZCBiZSBsZXNzIHRoYW4gbWF4aW11bS4nfTtcclxuICAgICAgICB2YWxpZFN0YXR1cy5wdXNoKGZhbHNlKTtcclxuICAgICAgIH1cclxuICAgIH1cclxuICAgIGxldCB2YWxpZGF0aW9uUmVzdWx0OiBWYWxpZGF0ZVN0cnVjdHVyZTtcclxuICAgIGlmICh2YWxpZFN0YXR1cy5pbmNsdWRlcyhmYWxzZSkpIHtcclxuICAgICBxdWVzdGlvbi5lcnJvckFycmF5ID0gRVJST1JfQVJSQVk7XHJcbiAgICAgdmFsaWRhdGlvblJlc3VsdCA9IHt2YWxpZDogZmFsc2UsIGVycm9yOiBFUlJPUl9BUlJBWSwgcXVlc3Rpb259O1xyXG4gICAgIHJldHVybiB2YWxpZGF0aW9uUmVzdWx0O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdmFsaWRhdGlvblJlc3VsdCA9IHt2YWxpZDogdHJ1ZSwgZXJyb3I6IEVSUk9SX0FSUkFZLCBxdWVzdGlvbn07XHJcbiAgICAgIHJldHVybiB2YWxpZGF0aW9uUmVzdWx0O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdmFsaWRhdGVEYXRlVGltZShxdWVzdGlvbjphbnkpOiBWYWxpZGF0ZVN0cnVjdHVyZSAge1xyXG4gICAgZGVsZXRlIHF1ZXN0aW9uLmVycm9yQXJyYXk7XHJcbiAgICBjb25zdCB2YWxpZFN0YXR1cyA9IFtdO1xyXG4gICAgY29uc3QgRVJST1JfQVJSQVk6IEVycm9yID0ge307XHJcbiAgICBpZiAodGhpcy5leHRyYWN0KHF1ZXN0aW9uLnRpdGxlKS5sZW5ndGggPT09IDAgfHwgdGhpcy5leHRyYWN0KHF1ZXN0aW9uLnRpdGxlKT8udHJpbSgpPy5sZW5ndGggPT09IDApIHtcclxuICAgICAgRVJST1JfQVJSQVkucXVlc3Rpb25NaXNzaW5nID0ge21lc3NhZ2U6ICdQbGVhc2UgZW50ZXIgdGhlIHF1ZXN0aW9uLid9O1xyXG4gICAgICB2YWxpZFN0YXR1cy5wdXNoKGZhbHNlKTtcclxuXHJcbiAgICB9XHJcbiAgICBpZiAocXVlc3Rpb24uaGFzRGVzY3JpcHRpb24gPT09IHRydWUgJiYgdGhpcy5leHRyYWN0KHF1ZXN0aW9uLmRlc2NyaXB0aW9uKS5sZW5ndGggPT09IDApIHtcclxuICAgICAgcXVlc3Rpb24uaGFzRGVzY3JpcHRpb24gPSBmYWxzZTtcclxuICAgIH1cclxuICAgIGlmIChxdWVzdGlvbi5oYXNDb21tZW50cyA9PT0gdHJ1ZSAmJiB0aGlzLmV4dHJhY3QocXVlc3Rpb24uY29tbWVudHMpLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICBxdWVzdGlvbi5oYXNDb21tZW50cyA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgaWYgKHF1ZXN0aW9uLmhhc0RhdGUgPT09IHRydWUpIHtcclxuICAgICAgaWYgKHF1ZXN0aW9uLmRhdGUgIT09IHVuZGVmaW5lZCAmJiB0aGlzLmV4dHJhY3QocXVlc3Rpb24uZGF0ZS50aXRsZSkubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgRVJST1JfQVJSQVkuZGF0ZU1pc3NpbmcgPSB7bWVzc2FnZSA6ICdQbGVhc2UgZW50ZXIgYSBsYWJlbCBmb3IgdGhlIGRhdGUgZmllbGQuJ307XHJcbiAgICAgICAgdmFsaWRTdGF0dXMucHVzaChmYWxzZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChxdWVzdGlvbi5oYXNUaW1lID09PSB0cnVlKSB7XHJcbiAgICAgIGlmIChxdWVzdGlvbi50aW1lICE9PSB1bmRlZmluZWQgJiYgdGhpcy5leHRyYWN0KHF1ZXN0aW9uLnRpbWUudGl0bGUpLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgIEVSUk9SX0FSUkFZLnRpbWVNaXNzaW5nID0ge21lc3NhZ2U6ICdQbGVhc2UgZW50ZXIgYSBsYWJlbCBmb3IgdGhlIHRpbWUgZmllbGQuJ30gO1xyXG4gICAgICAgIHZhbGlkU3RhdHVzLnB1c2goZmFsc2UpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAocXVlc3Rpb24uaGFzVGltZSA9PT0gZmFsc2UgJiYgcXVlc3Rpb24uaGFzRGF0ZSA9PT0gZmFsc2UpIHtcclxuICAgICAgICBxdWVzdGlvbi5oYXNEYXRlID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIGxldCB2YWxpZGF0aW9uUmVzdWx0OiBWYWxpZGF0ZVN0cnVjdHVyZTtcclxuICAgIGlmICh2YWxpZFN0YXR1cy5pbmNsdWRlcyhmYWxzZSkpIHtcclxuICAgICBxdWVzdGlvbi5lcnJvckFycmF5ID0gRVJST1JfQVJSQVk7XHJcbiAgICAgdmFsaWRhdGlvblJlc3VsdCA9IHt2YWxpZDogZmFsc2UsIGVycm9yOiBFUlJPUl9BUlJBWSwgcXVlc3Rpb259O1xyXG4gICAgIHJldHVybiB2YWxpZGF0aW9uUmVzdWx0O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdmFsaWRhdGlvblJlc3VsdCA9IHt2YWxpZDogdHJ1ZSwgZXJyb3I6IEVSUk9SX0FSUkFZLCBxdWVzdGlvbn07XHJcbiAgICAgIHJldHVybiB2YWxpZGF0aW9uUmVzdWx0O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdmFsaWRhdGVJbWFnZVVwbG9hZChxdWVzdGlvbjphbnkpOiBWYWxpZGF0ZVN0cnVjdHVyZSB7XHJcbiAgICBkZWxldGUgcXVlc3Rpb24uZXJyb3JBcnJheTtcclxuICAgIGNvbnN0IHZhbGlkU3RhdHVzID0gW107XHJcbiAgICBjb25zdCBFUlJPUl9BUlJBWTogRXJyb3IgPSB7fTtcclxuICAgIGlmICh0aGlzLmV4dHJhY3QocXVlc3Rpb24udGl0bGUpLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICBFUlJPUl9BUlJBWS5xdWVzdGlvbk1pc3NpbmcgPSB7bWVzc2FnZTogJ1BsZWFzZSBlbnRlciB0aGUgcXVlc3Rpb24uJ307XHJcbiAgICAgIHZhbGlkU3RhdHVzLnB1c2goZmFsc2UpO1xyXG4gICAgfVxyXG4gICAgaWYgKHF1ZXN0aW9uLmhhc0Rlc2NyaXB0aW9uID09PSB0cnVlICYmIHRoaXMuZXh0cmFjdChxdWVzdGlvbi5kZXNjcmlwdGlvbikubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHF1ZXN0aW9uLmhhc0Rlc2NyaXB0aW9uID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBpZiAocXVlc3Rpb24uaGFzQ29tbWVudHMgPT09IHRydWUgJiYgdGhpcy5leHRyYWN0KHF1ZXN0aW9uLmNvbW1lbnRzKS5sZW5ndGggPT09IDApIHtcclxuICAgICAgcXVlc3Rpb24uaGFzQ29tbWVudHMgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAocXVlc3Rpb24uY2hvaWNlcy5sZW5ndGggPiAxKSB7XHJcbiAgICAgIGlmIChxdWVzdGlvbi5jaG9pY2VzLmxlbmd0aCA9PT0gMiAmJiAodGhpcy5leHRyYWN0KHF1ZXN0aW9uLmNob2ljZXNbMF0udGl0bGUpLmxlbmd0aCA9PT0gMCB8fFxyXG4gICAgICB0aGlzLmV4dHJhY3QocXVlc3Rpb24uY2hvaWNlc1sxXS50aXRsZSkubGVuZ3RoID09PSAwIHx8IHF1ZXN0aW9uLmNob2ljZXNbMV0uaW1hZ2VVUkwgPT09ICcnXHJcbiAgICAgIHx8IHF1ZXN0aW9uLmNob2ljZXNbMF0uaW1hZ2VVUkwgPT09ICcnKSkge1xyXG4gICAgICAgIEVSUk9SX0FSUkFZLnR3b0Nob2ljZSAgPSB7bWVzc2FnZTogJ1BsZWFzZSBhZGQgYXQgbGVhc3QgdHdvIGFuc3dlciBjaG9pY2VzLid9O1xyXG4gICAgICAgIHZhbGlkU3RhdHVzLnB1c2goZmFsc2UpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHF1ZXN0aW9uLmNob2ljZXMgPVxyXG4gICAgICAgIHF1ZXN0aW9uLmNob2ljZXMuZmlsdGVyKChjaG9pY2U6YW55KSA9PiB0aGlzLmV4dHJhY3QoY2hvaWNlLnRpdGxlKS5sZW5ndGggIT09IDApO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAgIEVSUk9SX0FSUkFZLnR3b0Nob2ljZSAgPSB7bWVzc2FnZTogJ1BsZWFzZSBhZGQgYXQgbGVhc3QgdHdvIGFuc3dlciBjaG9pY2VzLid9O1xyXG4gICAgICAgIHZhbGlkU3RhdHVzLnB1c2goZmFsc2UpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghdGhpcy5jaGVja0ZvclNhbWVUaXRsZShxdWVzdGlvbi5jaG9pY2VzKSkge1xyXG4gICAgICBFUlJPUl9BUlJBWS5zYW1lQ2hvaWNlICAgPSB7bWVzc2FnZTogJ1R3byBvcHRpb25zIGNhbm5vdCBoYXZlIHNhbWUgdGl0bGUuJ307XHJcbiAgICAgIHZhbGlkU3RhdHVzLnB1c2goZmFsc2UpO1xyXG4gICAgfVxyXG4gICAgbGV0IHZhbGlkYXRpb25SZXN1bHQ6IFZhbGlkYXRlU3RydWN0dXJlO1xyXG4gICAgaWYgKHZhbGlkU3RhdHVzLmluY2x1ZGVzKGZhbHNlKSkge1xyXG4gICAgIHF1ZXN0aW9uLmVycm9yQXJyYXkgPSBFUlJPUl9BUlJBWTtcclxuICAgICB2YWxpZGF0aW9uUmVzdWx0ID0ge3ZhbGlkOiBmYWxzZSwgZXJyb3I6IEVSUk9SX0FSUkFZLCBxdWVzdGlvbn07XHJcbiAgICAgcmV0dXJuIHZhbGlkYXRpb25SZXN1bHQ7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB2YWxpZGF0aW9uUmVzdWx0ID0ge3ZhbGlkOiB0cnVlLCBlcnJvcjogRVJST1JfQVJSQVksIHF1ZXN0aW9ufTtcclxuICAgICAgcmV0dXJuIHZhbGlkYXRpb25SZXN1bHQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcblxyXG4gIHZhbGlkYXRlTWF0cml4RHJvcGRvd24ocXVlc3Rpb246YW55KTogVmFsaWRhdGVTdHJ1Y3R1cmUge1xyXG4gICAgZGVsZXRlIHF1ZXN0aW9uLmVycm9yQXJyYXk7XHJcbiAgICBjb25zdCB2YWxpZFN0YXR1cyA9IFtdO1xyXG4gICAgY29uc3QgRVJST1JfQVJSQVk6IEVycm9yID0ge307XHJcbiAgICBpZiAodGhpcy5leHRyYWN0KHF1ZXN0aW9uLnRpdGxlKS5sZW5ndGggPT09IDApIHtcclxuICAgICAgRVJST1JfQVJSQVkucXVlc3Rpb25NaXNzaW5nID0ge21lc3NhZ2U6ICdQbGVhc2UgZW50ZXIgdGhlIHF1ZXN0aW9uLid9O1xyXG4gICAgICB2YWxpZFN0YXR1cy5wdXNoKGZhbHNlKTtcclxuICAgIH1cclxuICAgIGlmIChxdWVzdGlvbi5oYXNEZXNjcmlwdGlvbiA9PT0gdHJ1ZSAmJiB0aGlzLmV4dHJhY3QocXVlc3Rpb24uZGVzY3JpcHRpb24pLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICBxdWVzdGlvbi5oYXNEZXNjcmlwdGlvbiA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgaWYgKHF1ZXN0aW9uLmhhc0NvbW1lbnRzID09PSB0cnVlICYmIHRoaXMuZXh0cmFjdChxdWVzdGlvbi5jb21tZW50cykubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHF1ZXN0aW9uLmhhc0NvbW1lbnRzID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBpZiAocXVlc3Rpb24uY2hvaWNlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGZvciAoY29uc3QgY2hvaWNlIG9mIHF1ZXN0aW9uLmNob2ljZXMpIHtcclxuICAgICAgICBpZiAocXVlc3Rpb24uY2hvaWNlcy5sZW5ndGggPT09IDEgJiYgdGhpcy5leHRyYWN0KGNob2ljZS50aXRsZSkubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICBFUlJPUl9BUlJBWS5vbmVSb3cgICA9IHttZXNzYWdlOiAnWW91IGFyZSByZXF1aXJlZCB0byBoYXZlIGF0IGxlYXN0IG9uZSByb3cuJ307XHJcbiAgICAgICAgICB2YWxpZFN0YXR1cy5wdXNoKGZhbHNlKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgcXVlc3Rpb24uY2hvaWNlcyA9IHF1ZXN0aW9uLmNob2ljZXMuZmlsdGVyKChzZWxlY3RlZENob2ljZTphbnkpID0+IHRoaXMuZXh0cmFjdChzZWxlY3RlZENob2ljZS50aXRsZSkubGVuZ3RoICE9PSAwKTtcclxuICAgICAgICAgICAgICAgIGlmIChxdWVzdGlvbi5jaG9pY2VzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgICAgIHF1ZXN0aW9uLmNob2ljZXMucHVzaCggeyB0aXRsZTogJycsIGlzVmlzaWJsZTogdHJ1ZSwgdmFsdWU6IDAsIGlzU2VsZWN0ZWQ6IGZhbHNlLCByZXF1aXJlZDogMCwgaGFzSGVscGluZ0xhYmVsOiB0cnVlLCBoZWxwaW5nTGFiZWw6ICcnIH0sICk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBFUlJPUl9BUlJBWS5vbmVSb3cgICA9IHttZXNzYWdlOiAnWW91IGFyZSByZXF1aXJlZCB0byBoYXZlIGF0IGxlYXN0IG9uZSByb3cuJ307XHJcbiAgICAgIHZhbGlkU3RhdHVzLnB1c2goZmFsc2UpO1xyXG4gICAgfVxyXG4gICAgaWYgKCF0aGlzLmNoZWNrRm9yU2FtZVRpdGxlKHF1ZXN0aW9uLmNob2ljZXMpKSB7XHJcbiAgICAgIEVSUk9SX0FSUkFZLnNhbWVDaG9pY2UgICA9IHttZXNzYWdlOiAnVHdvIHJvd3MgY2Fubm90IGhhdmUgc2FtZSB0aXRsZS4nfTtcclxuICAgICAgdmFsaWRTdGF0dXMucHVzaChmYWxzZSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHF1ZXN0aW9uLmNvbHVtbnMubGVuZ3RoID4gMCkge1xyXG4gICAgICBxdWVzdGlvbi5jb2x1bW5zID0gcXVlc3Rpb24uY29sdW1ucy5maWx0ZXIoKHNlbGVjdGVkQ2hvaWNlOmFueSkgPT4gdGhpcy5leHRyYWN0KHNlbGVjdGVkQ2hvaWNlLnRpdGxlKS5sZW5ndGggIT09IDApO1xyXG5cclxuICAgICAgZm9yIChjb25zdCBjb2x1bW4gb2YgcXVlc3Rpb24uY29sdW1ucykge1xyXG4gICAgICAgIGlmICh0aGlzLmV4dHJhY3QoY29sdW1uLnRpdGxlKS5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgIEVSUk9SX0FSUkFZLm9uZUNvbCAgPSB7bWVzc2FnZTogJ1lvdSBhcmUgcmVxdWlyZWQgdG8gaGF2ZSBhdCBsZWFzdCBvbmUgY29sdW1uLid9O1xyXG4gICAgICAgICAgdmFsaWRTdGF0dXMucHVzaChmYWxzZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChjb2x1bW4uY2hvaWNlcy5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgICBmb3IgKGNvbnN0IGNvbHVtbkNob2ljZSBvZiBjb2x1bW4uY2hvaWNlcykge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5leHRyYWN0KGNvbHVtbkNob2ljZS50aXRsZSkubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgcXVlc3Rpb24uY29sdW1ucyA9IHF1ZXN0aW9uLmNvbHVtbnMuZmlsdGVyKChzZWxlY3RlZENob2ljZTphbnkpID0+XHJcbiAgICAgICAgICAgICAgICB0aGlzLmV4dHJhY3Qoc2VsZWN0ZWRDaG9pY2UudGl0bGUpLmxlbmd0aCAhPT0gMCk7XHJcbiAgICAgICAgICAgICAgLy8gRVJST1JfQVJSQVkudHdvQ2hvaWNlICA9IHttZXNzYWdlOiAnUGxlYXNlIGFkZCBhdCBsZWFzdCB0d28gYW5zd2VyIGNob2ljZXMgZm9yIGVhY2ggY29sdW1uLid9O1xyXG4gICAgICAgICAgICAgIC8vIHZhbGlkU3RhdHVzLnB1c2goZmFsc2UpO1xyXG4gICAgICAgICAgICAgIGNvbHVtbi5jaG9pY2VzID0gY29sdW1uLmNob2ljZXMuZmlsdGVyKChzZWxlY3RlZENob2ljZTphbnkpID0+XHJcbiAgICAgICAgICAgICAgICB0aGlzLmV4dHJhY3Qoc2VsZWN0ZWRDaG9pY2UudGl0bGUpLmxlbmd0aCAhPT0gMCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgLy8gY29sdW1uLmNob2ljZXMgPSBjb2x1bW4uY2hvaWNlcy5maWx0ZXIoc2VsZWN0ZWRDaG9pY2UgPT5cclxuICAgICAgICAgICAgICAvLyAgIHRoaXMuZXh0cmFjdChzZWxlY3RlZENob2ljZS50aXRsZSkubGVuZ3RoICE9PSAwKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBFUlJPUl9BUlJBWS50d29DaG9pY2UgID0ge21lc3NhZ2U6ICdQbGVhc2UgYWRkIGF0IGxlYXN0IHR3byBhbnN3ZXIgY2hvaWNlcyBmb3IgZWFjaCBjb2x1bW4uJ307XHJcbiAgICAgICAgICB2YWxpZFN0YXR1cy5wdXNoKGZhbHNlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHF1ZXN0aW9uLmNvbHVtbnMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICBxdWVzdGlvbi5jb2x1bW5zLnB1c2goIHsgdGl0bGU6ICcnLCBpc1Zpc2libGU6IHRydWUsIHZhbHVlOiAwLCBpc1NlbGVjdGVkOiBmYWxzZSwgcmVxdWlyZWQ6IDAsIGhhc0hlbHBpbmdMYWJlbDogdHJ1ZSwgaGVscGluZ0xhYmVsOiAnJyxcclxuICAgICAgICBjaG9pY2VzOiBbeyB0aXRsZTogJycsIGlzVmlzaWJsZTogdHJ1ZSwgdmFsdWU6IDAsIGlzU2VsZWN0ZWQ6IGZhbHNlLCByZXF1aXJlZDogMCwgaGFzSGVscGluZ0xhYmVsOiB0cnVlLCBoZWxwaW5nTGFiZWw6ICcnfV19KTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgRVJST1JfQVJSQVkub25lQ29sICAgPSB7bWVzc2FnZTogJ1lvdSBhcmUgcmVxdWlyZWQgdG8gaGF2ZSBhdCBsZWFzdCBvbmUgY29sdW1uLid9O1xyXG4gICAgICB2YWxpZFN0YXR1cy5wdXNoKGZhbHNlKTtcclxuICAgIH1cclxuICAgIGlmICghdGhpcy5jaGVja0ZvclNhbWVUaXRsZShxdWVzdGlvbi5jb2x1bW5zKSkge1xyXG4gICAgICBFUlJPUl9BUlJBWS5zYW1lQ2hvaWNlICAgPSB7bWVzc2FnZTogJ1R3byBjb2x1bW5zIGNhbm5vdCBoYXZlIHNhbWUgdGl0bGUuJ307XHJcbiAgICAgIHZhbGlkU3RhdHVzLnB1c2goZmFsc2UpO1xyXG4gICAgfVxyXG4gICAgbGV0IHZhbGlkYXRpb25SZXN1bHQ6IFZhbGlkYXRlU3RydWN0dXJlO1xyXG4gICAgaWYgKHZhbGlkU3RhdHVzLmluY2x1ZGVzKGZhbHNlKSkge1xyXG4gICAgIHF1ZXN0aW9uLmVycm9yQXJyYXkgPSBFUlJPUl9BUlJBWTtcclxuICAgICB2YWxpZGF0aW9uUmVzdWx0ID0ge3ZhbGlkOiBmYWxzZSwgZXJyb3I6IEVSUk9SX0FSUkFZLCBxdWVzdGlvbn07XHJcbiAgICAgcmV0dXJuIHZhbGlkYXRpb25SZXN1bHQ7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB2YWxpZGF0aW9uUmVzdWx0ID0ge3ZhbGlkOiB0cnVlLCBlcnJvcjogRVJST1JfQVJSQVksIHF1ZXN0aW9ufTtcclxuICAgICAgcmV0dXJuIHZhbGlkYXRpb25SZXN1bHQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgdmFsaWRhdGVNdWx0aXBsZVRleHRCb3gocXVlc3Rpb246YW55KTogVmFsaWRhdGVTdHJ1Y3R1cmUgIHtcclxuICAgIGRlbGV0ZSBxdWVzdGlvbi5lcnJvckFycmF5O1xyXG4gICAgY29uc3QgdmFsaWRTdGF0dXMgPSBbXTtcclxuICAgIGNvbnN0IEVSUk9SX0FSUkFZOiBFcnJvciA9IHt9O1xyXG4gICAgaWYgKHRoaXMuZXh0cmFjdChxdWVzdGlvbi50aXRsZSkubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIEVSUk9SX0FSUkFZLnF1ZXN0aW9uTWlzc2luZyA9IHttZXNzYWdlOiAnUGxlYXNlIGVudGVyIHRoZSBxdWVzdGlvbi4nfTtcclxuICAgICAgdmFsaWRTdGF0dXMucHVzaChmYWxzZSk7XHJcbiAgICB9XHJcbiAgICBpZiAocXVlc3Rpb24uaGFzRGVzY3JpcHRpb24gPT09IHRydWUgJiYgdGhpcy5leHRyYWN0KHF1ZXN0aW9uLmRlc2NyaXB0aW9uKS5sZW5ndGggPT09IDApIHtcclxuICAgICAgcXVlc3Rpb24uaGFzRGVzY3JpcHRpb24gPSBmYWxzZTtcclxuICAgIH1cclxuICAgIGlmIChxdWVzdGlvbi5oYXNDb21tZW50cyA9PT0gdHJ1ZSAmJiB0aGlzLmV4dHJhY3QocXVlc3Rpb24uY29tbWVudHMpLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICBxdWVzdGlvbi5oYXNDb21tZW50cyA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChxdWVzdGlvbi5jaG9pY2VzLmxlbmd0aCA+IDApIHtcclxuICAgICAgaWYgKHF1ZXN0aW9uLmNob2ljZXMubGVuZ3RoID09PSAxICYmIHRoaXMuZXh0cmFjdChxdWVzdGlvbi5jaG9pY2VzWzBdLnRpdGxlKS5sZW5ndGggPT09IDApIHtcclxuICAgICAgICBFUlJPUl9BUlJBWS5vbmVDaG9pY2UgID0ge21lc3NhZ2U6ICdQbGVhc2UgYWRkIGxhYmVsIGZvciB0ZXh0Ym94Lid9O1xyXG4gICAgICAgIHZhbGlkU3RhdHVzLnB1c2goZmFsc2UpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHF1ZXN0aW9uLmNob2ljZXMgPVxyXG4gICAgICAgIHF1ZXN0aW9uLmNob2ljZXMuZmlsdGVyKChjaG9pY2U6YW55KSA9PiB0aGlzLmV4dHJhY3QoY2hvaWNlLnRpdGxlKS5sZW5ndGggIT09IDApO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBFUlJPUl9BUlJBWS5vbmVDaG9pY2UgID0ge21lc3NhZ2U6ICdQbGVhc2UgYWRkIGF0IGxlYXN0IG9uZSB0ZXh0Ym94Lid9O1xyXG4gICAgICB2YWxpZFN0YXR1cy5wdXNoKGZhbHNlKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIXRoaXMuY2hlY2tGb3JTYW1lVGl0bGVXaXRoT3RoZXIocXVlc3Rpb24pKSB7XHJcbiAgICAgIEVSUk9SX0FSUkFZLnNhbWVDaG9pY2UgICA9IHttZXNzYWdlOiAnVHdvIHRleHRib3hlcyBjYW5ub3QgaGF2ZSBzYW1lIGxhYmVsLid9O1xyXG4gICAgICB2YWxpZFN0YXR1cy5wdXNoKGZhbHNlKTtcclxuICAgIH1cclxuICAgIGxldCB2YWxpZGF0aW9uUmVzdWx0OiBWYWxpZGF0ZVN0cnVjdHVyZTtcclxuICAgIGlmICh2YWxpZFN0YXR1cy5pbmNsdWRlcyhmYWxzZSkpIHtcclxuICAgICBxdWVzdGlvbi5lcnJvckFycmF5ID0gRVJST1JfQVJSQVk7XHJcbiAgICAgdmFsaWRhdGlvblJlc3VsdCA9IHt2YWxpZDogZmFsc2UsIGVycm9yOiBFUlJPUl9BUlJBWSwgcXVlc3Rpb259O1xyXG4gICAgIHJldHVybiB2YWxpZGF0aW9uUmVzdWx0O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdmFsaWRhdGlvblJlc3VsdCA9IHt2YWxpZDogdHJ1ZSwgZXJyb3I6IEVSUk9SX0FSUkFZLCBxdWVzdGlvbn07XHJcbiAgICAgIHJldHVybiB2YWxpZGF0aW9uUmVzdWx0O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdmFsaWRhdGVTbGlkZXIocXVlc3Rpb246YW55KTogVmFsaWRhdGVTdHJ1Y3R1cmUge1xyXG4gICAgZGVsZXRlIHF1ZXN0aW9uLmVycm9yQXJyYXk7XHJcbiAgICBjb25zdCB2YWxpZFN0YXR1cyA9IFtdO1xyXG4gICAgY29uc3QgRVJST1JfQVJSQVk6IEVycm9yID0ge307XHJcbiAgICBjb25zdCBtaW5pbXVtID0gcGFyc2VJbnQocXVlc3Rpb24uc2NhbGVSYW5nZU1pbiwgMTApO1xyXG4gICAgY29uc3QgbWF4aW11bSA9IHBhcnNlSW50KHF1ZXN0aW9uLnNjYWxlUmFuZ2VNYXgsIDEwKTtcclxuICAgIGNvbnN0IHN0ZXBTaXplID0gcXVlc3Rpb24uc3RlcFNpemU7XHJcbiAgICBjb25zdCB0aHJlc2hvbGQgPSAwO1xyXG4gICAgaWYgKHRoaXMuZXh0cmFjdChxdWVzdGlvbi50aXRsZSkubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIEVSUk9SX0FSUkFZLnF1ZXN0aW9uTWlzc2luZyA9IHttZXNzYWdlOiAnUGxlYXNlIGVudGVyIHRoZSBxdWVzdGlvbi4nfTtcclxuICAgICAgdmFsaWRTdGF0dXMucHVzaChmYWxzZSk7XHJcbiAgICB9XHJcbiAgICBpZiAocXVlc3Rpb24uaGFzRGVzY3JpcHRpb24gPT09IHRydWUgJiYgdGhpcy5leHRyYWN0KHF1ZXN0aW9uLmRlc2NyaXB0aW9uKS5sZW5ndGggPT09IDApIHtcclxuICAgICAgcXVlc3Rpb24uaGFzRGVzY3JpcHRpb24gPSBmYWxzZTtcclxuICAgIH1cclxuICAgIGlmIChxdWVzdGlvbi5oYXNDb21tZW50cyA9PT0gdHJ1ZSAmJiB0aGlzLmV4dHJhY3QocXVlc3Rpb24uY29tbWVudHMpLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICBxdWVzdGlvbi5oYXNDb21tZW50cyA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgaWYgKG1pbmltdW0gPj0gbWF4aW11bSkge1xyXG4gICAgICBFUlJPUl9BUlJBWS5taW5FcnJvciAgPSB7bWVzc2FnZTogYFBsZWFzZSBlbnRlciBhIHZhbHVlIHNtYWxsZXIgdGhhbiAke21heGltdW19LmB9O1xyXG4gICAgICB2YWxpZFN0YXR1cy5wdXNoKGZhbHNlKTtcclxuICAgIH1cclxuICAgIGlmIChtYXhpbXVtIDw9IG1pbmltdW0pIHtcclxuICAgICAgRVJST1JfQVJSQVkubWluRXJyb3IgID0ge21lc3NhZ2U6IGBQbGVhc2UgZW50ZXIgYSB2YWx1ZSBncmVhdGVyIHRoYW4gJHttYXhpbXVtfS5gfTtcclxuICAgICAgdmFsaWRTdGF0dXMucHVzaChmYWxzZSk7XHJcbiAgICB9XHJcbiAgICBpZiAoc3RlcFNpemUgPiBtYXhpbXVtKSB7XHJcbiAgICAgIEVSUk9SX0FSUkFZLnN0ZXBFcnJvciAgPSB7bWVzc2FnZTogYFRoZSByYW5nZSBmb3IgdGhlIHNsaWRlciB2YWx1ZXMgYXJlIHdpdGhpbiAke21pbmltdW19LSR7bWF4aW11bX0uIFBsZWFzZSBzZWxlY3QgYSBzdGVwIHNpemUgd2l0aGluIHRoaXMgcmFuZ2UuYH07XHJcbiAgICAgIHZhbGlkU3RhdHVzLnB1c2goZmFsc2UpO1xyXG4gICAgfVxyXG4gICAgaWYgKHN0ZXBTaXplIDw9IDApIHtcclxuICAgICAgRVJST1JfQVJSQVkuc3RlcEVycm9yICA9IHttZXNzYWdlOiBgUGxlYXNlIGVudGVyIGEgdmFsdWUgZ3JlYXRlciB0aGFuICR7dGhyZXNob2xkfS5gIH07XHJcbiAgICAgIHZhbGlkU3RhdHVzLnB1c2goZmFsc2UpO1xyXG4gICAgfVxyXG4gICAgbGV0IHZhbGlkYXRpb25SZXN1bHQ6IFZhbGlkYXRlU3RydWN0dXJlO1xyXG4gICAgaWYgKHZhbGlkU3RhdHVzLmluY2x1ZGVzKGZhbHNlKSkge1xyXG4gICAgIHF1ZXN0aW9uLmVycm9yQXJyYXkgPSBFUlJPUl9BUlJBWTtcclxuICAgICB2YWxpZGF0aW9uUmVzdWx0ID0ge3ZhbGlkOiBmYWxzZSwgZXJyb3I6IEVSUk9SX0FSUkFZLCBxdWVzdGlvbn07XHJcbiAgICAgcmV0dXJuIHZhbGlkYXRpb25SZXN1bHQ7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB2YWxpZGF0aW9uUmVzdWx0ID0ge3ZhbGlkOiB0cnVlLCBlcnJvcjogRVJST1JfQVJSQVksIHF1ZXN0aW9ufTtcclxuICAgICAgcmV0dXJuIHZhbGlkYXRpb25SZXN1bHQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgdmFsaWRhdGVTdGFyUmF0aW5nKHF1ZXN0aW9uOmFueSk6IFZhbGlkYXRlU3RydWN0dXJlIHtcclxuICAgIGRlbGV0ZSBxdWVzdGlvbi5lcnJvckFycmF5O1xyXG4gICAgY29uc3QgdmFsaWRTdGF0dXMgPSBbXTtcclxuICAgIGNvbnN0IEVSUk9SX0FSUkFZOiBFcnJvciA9IHt9O1xyXG4gICAgaWYgKHRoaXMuZXh0cmFjdChxdWVzdGlvbi50aXRsZSkubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIEVSUk9SX0FSUkFZLnF1ZXN0aW9uTWlzc2luZyA9IHttZXNzYWdlOiAnUGxlYXNlIGVudGVyIHRoZSBxdWVzdGlvbi4nfTtcclxuICAgICAgdmFsaWRTdGF0dXMucHVzaChmYWxzZSk7XHJcbiAgICB9XHJcbiAgICBpZiAocXVlc3Rpb24uaGFzRGVzY3JpcHRpb24gPT09IHRydWUgJiYgdGhpcy5leHRyYWN0KHF1ZXN0aW9uLmRlc2NyaXB0aW9uKS5sZW5ndGggPT09IDApIHtcclxuICAgICAgcXVlc3Rpb24uaGFzRGVzY3JpcHRpb24gPSBmYWxzZTtcclxuICAgIH1cclxuICAgIGlmIChxdWVzdGlvbi5oYXNDb21tZW50cyA9PT0gdHJ1ZSAmJiB0aGlzLmV4dHJhY3QocXVlc3Rpb24uY29tbWVudHMpLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICBxdWVzdGlvbi5oYXNDb21tZW50cyA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgaWYgKHF1ZXN0aW9uLmhhc1JhdGluZ0xhYmVsKSB7XHJcbiAgICAgIGlmIChxdWVzdGlvbi5yYXRpbmdMYWJlbFR5cGUgPT09ICdzY2FsZScgJiYgcXVlc3Rpb24uc2NhbGVSYW5nZUZyb20gPT09ICcnICYmIHF1ZXN0aW9uLnNjYWxlUmFuZ2VUbyA9PT0gJycpIHtcclxuICAgICAgICBxdWVzdGlvbi5oYXNSYXRpbmdMYWJlbCA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBsZXQgdmFsaWRhdGlvblJlc3VsdDogVmFsaWRhdGVTdHJ1Y3R1cmU7XHJcbiAgICBpZiAodmFsaWRTdGF0dXMuaW5jbHVkZXMoZmFsc2UpKSB7XHJcbiAgICAgcXVlc3Rpb24uZXJyb3JBcnJheSA9IEVSUk9SX0FSUkFZO1xyXG4gICAgIHZhbGlkYXRpb25SZXN1bHQgPSB7dmFsaWQ6IGZhbHNlLCBlcnJvcjogRVJST1JfQVJSQVksIHF1ZXN0aW9ufTtcclxuICAgICByZXR1cm4gdmFsaWRhdGlvblJlc3VsdDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHZhbGlkYXRpb25SZXN1bHQgPSB7dmFsaWQ6IHRydWUsIGVycm9yOiBFUlJPUl9BUlJBWSwgcXVlc3Rpb259O1xyXG4gICAgICByZXR1cm4gdmFsaWRhdGlvblJlc3VsdDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHZhbGlkYXRlUmF0aW5nU2NhbGUocXVlc3Rpb246YW55KTogVmFsaWRhdGVTdHJ1Y3R1cmUge1xyXG4gICAgZGVsZXRlIHF1ZXN0aW9uLmVycm9yQXJyYXk7XHJcbiAgICBjb25zdCB2YWxpZFN0YXR1cyA9IFtdO1xyXG4gICAgY29uc3QgRVJST1JfQVJSQVk6IEVycm9yID0ge307XHJcbiAgICBpZiAodGhpcy5leHRyYWN0KHF1ZXN0aW9uLnRpdGxlKS5sZW5ndGggPT09IDApIHtcclxuICAgICAgRVJST1JfQVJSQVkucXVlc3Rpb25NaXNzaW5nID0ge21lc3NhZ2U6ICdQbGVhc2UgZW50ZXIgdGhlIHF1ZXN0aW9uLid9O1xyXG4gICAgICB2YWxpZFN0YXR1cy5wdXNoKGZhbHNlKTtcclxuICAgIH1cclxuICAgIGlmIChxdWVzdGlvbi5oYXNEZXNjcmlwdGlvbiA9PT0gdHJ1ZSAmJiB0aGlzLmV4dHJhY3QocXVlc3Rpb24uZGVzY3JpcHRpb24pLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICBxdWVzdGlvbi5oYXNEZXNjcmlwdGlvbiA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgaWYgKHF1ZXN0aW9uLmhhc0NvbW1lbnRzID09PSB0cnVlICYmIHRoaXMuZXh0cmFjdChxdWVzdGlvbi5jb21tZW50cykubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHF1ZXN0aW9uLmhhc0NvbW1lbnRzID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBpZiAocXVlc3Rpb24uY2hvaWNlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGZvciAoY29uc3QgY2hvaWNlIG9mIHF1ZXN0aW9uLmNob2ljZXMpIHtcclxuICAgICAgICBpZiAocXVlc3Rpb24uY2hvaWNlcy5sZW5ndGggPT09IDEgJiYgdGhpcy5leHRyYWN0KGNob2ljZS50aXRsZSkubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICBFUlJPUl9BUlJBWS5vbmVSb3cgICA9IHttZXNzYWdlOiAnWW91IGFyZSByZXF1aXJlZCB0byBoYXZlIGF0IGxlYXN0IG9uZSByb3cuJ307XHJcbiAgICAgICAgICB2YWxpZFN0YXR1cy5wdXNoKGZhbHNlKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgcXVlc3Rpb24uY2hvaWNlcyA9XHJcbiAgICAgICAgICBxdWVzdGlvbi5jaG9pY2VzLmZpbHRlcigoc2VsZWN0ZWRDaG9pY2U6YW55KSA9PlxyXG4gICAgICAgICAgICB0aGlzLmV4dHJhY3Qoc2VsZWN0ZWRDaG9pY2UudGl0bGUpLmxlbmd0aCAhPT0gMCk7XHJcbiAgICAgICAgICAgICAgICBpZiAocXVlc3Rpb24uY2hvaWNlcy5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgICAgICBxdWVzdGlvbi5jaG9pY2VzLnB1c2goIHsgdGl0bGU6ICcnLCBpc1Zpc2libGU6IHRydWUsIHZhbHVlOiAwLCBpc1NlbGVjdGVkOiBmYWxzZSwgcmVxdWlyZWQ6IDAsIGhhc0hlbHBpbmdMYWJlbDogdHJ1ZSwgaGVscGluZ0xhYmVsOiAnJyB9LCApO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgRVJST1JfQVJSQVkub25lUm93ICAgPSB7bWVzc2FnZTogJ1lvdSBhcmUgcmVxdWlyZWQgdG8gaGF2ZSBhdCBsZWFzdCBvbmUgcm93Lid9O1xyXG4gICAgICB2YWxpZFN0YXR1cy5wdXNoKGZhbHNlKTtcclxuICAgIH1cclxuICAgIGlmICghdGhpcy5jaGVja0ZvclNhbWVUaXRsZShxdWVzdGlvbi5jaG9pY2VzKSkge1xyXG4gICAgICBFUlJPUl9BUlJBWS5zYW1lQ2hvaWNlICAgPSB7bWVzc2FnZTogJ1R3byByb3dzIGNhbm5vdCBoYXZlIHNhbWUgdGl0bGUuJ307XHJcbiAgICAgIHZhbGlkU3RhdHVzLnB1c2goZmFsc2UpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChxdWVzdGlvbi5jb2x1bW5zICE9PSB1bmRlZmluZWQgJiYgcXVlc3Rpb24uY29sdW1ucy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGZvciAoY29uc3QgY29sdW1uIG9mIHF1ZXN0aW9uLmNvbHVtbnMpIHtcclxuICAgICAgICBpZiAocXVlc3Rpb24uY29sdW1ucy5sZW5ndGggPT09IDEgJiYgdGhpcy5leHRyYWN0KGNvbHVtbi50aXRsZSkubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICBFUlJPUl9BUlJBWS5vbmVDb2wgICA9IHttZXNzYWdlOiAnWW91IGFyZSByZXF1aXJlZCB0byBoYXZlIGF0IGxlYXN0IG9uZSBjb2x1bW4uJ307XHJcbiAgICAgICAgICB2YWxpZFN0YXR1cy5wdXNoKGZhbHNlKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcXVlc3Rpb24uY29sdW1ucyA9XHJcbiAgICBxdWVzdGlvbi5jb2x1bW5zLmZpbHRlcigoc2VsZWN0ZWRDaG9pY2U6YW55KSA9PlxyXG4gICAgICB0aGlzLmV4dHJhY3Qoc2VsZWN0ZWRDaG9pY2UudGl0bGUpLmxlbmd0aCAhPT0gMCk7XHJcbiAgICAgICAgICBpZiAocXVlc3Rpb24uY29sdW1ucy5sZW5ndGggPT09IDApIHtcclxuICAgICAgICBxdWVzdGlvbi5jb2x1bW5zLnB1c2goIHsgdGl0bGU6ICcnLCBpc1Zpc2libGU6IHRydWUsIHZhbHVlOiAwLCBpc1NlbGVjdGVkOiBmYWxzZSwgcmVxdWlyZWQ6IDAsIGhhc0hlbHBpbmdMYWJlbDogdHJ1ZSwgaGVscGluZ0xhYmVsOiAnJyB9LCApO1xyXG4gICAgICB9XHJcblxyXG4gIH1cclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgRVJST1JfQVJSQVkub25lQ29sICAgPSB7bWVzc2FnZTogJ1lvdSBhcmUgcmVxdWlyZWQgdG8gaGF2ZSBhdCBsZWFzdCBvbmUgY29sdW1uLid9O1xyXG4gICAgICB2YWxpZFN0YXR1cy5wdXNoKGZhbHNlKTtcclxuICAgIH1cclxuICAgIGlmICghdGhpcy5jaGVja0ZvclNhbWVUaXRsZShxdWVzdGlvbi5jb2x1bW5zKSkge1xyXG4gICAgICBFUlJPUl9BUlJBWS5zYW1lQ2hvaWNlICAgPSB7bWVzc2FnZTogJ1R3byBjb2x1bW5zIGNhbm5vdCBoYXZlIHNhbWUgdGl0bGUuJ307XHJcbiAgICAgIHZhbGlkU3RhdHVzLnB1c2goZmFsc2UpO1xyXG4gICAgfVxyXG4gICAgbGV0IHZhbGlkYXRpb25SZXN1bHQ6IFZhbGlkYXRlU3RydWN0dXJlO1xyXG4gICAgaWYgKHZhbGlkU3RhdHVzLmluY2x1ZGVzKGZhbHNlKSkge1xyXG4gICAgIHF1ZXN0aW9uLmVycm9yQXJyYXkgPSBFUlJPUl9BUlJBWTtcclxuICAgICB2YWxpZGF0aW9uUmVzdWx0ID0ge3ZhbGlkOiBmYWxzZSwgZXJyb3I6IEVSUk9SX0FSUkFZLCBxdWVzdGlvbn07XHJcbiAgICAgcmV0dXJuIHZhbGlkYXRpb25SZXN1bHQ7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB2YWxpZGF0aW9uUmVzdWx0ID0ge3ZhbGlkOiB0cnVlLCBlcnJvcjogRVJST1JfQVJSQVksIHF1ZXN0aW9ufTtcclxuICAgICAgcmV0dXJuIHZhbGlkYXRpb25SZXN1bHQ7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEV4dHJhY3RzIHRoZSB0ZXh0IGZyb20gYSBwYXJ0aWN1bGFyIGh0bWwgY29udGVudFxyXG4gICAqIEBwYXJhbSBzIGh0bWwgY29udGVudCBmcm9tIHdoaWNoIHRleHQgbmVlZHMgdG8gYmUgZXh0cmFjdGVkXHJcbiAgICovXHJcbiAgICBleHRyYWN0KHM6YW55KSB7XHJcbiAgICBjb25zdCBzcGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xyXG4gICAgc3Bhbi5pbm5lckhUTUwgPSBzO1xyXG4gICAgcmV0dXJuIHNwYW4udGV4dENvbnRlbnQgfHwgc3Bhbi5pbm5lclRleHQ7XHJcbiAgfVxyXG4gICAvKipcclxuICAgKiBDaGVja3MgaWYgdGl0bGUgb2YgdHdvIGNob2ljZXMgaXMgc2FtZSBvciBub3RcclxuICAgKiBAcGFyYW0gY2hvaWNlcyBDaG9pY2UgZm9yIHdoaWNoIHRpdGxlIHNob3VsZCBiZSBjaGVja2VkXHJcbiAgICovXHJcbiAgY2hlY2tGb3JTYW1lVGl0bGUoY2hvaWNlczphbnkpIHtcclxuICAgIGNvbnN0IHRpdGxlID0gY2hvaWNlcy5tYXAoKGRhdGE6YW55KSA9PiBkYXRhLnRpdGxlKTtcclxuICAgIGZvciAoY29uc3QgY2hvaWNlIG9mIGNob2ljZXMpIHtcclxuICAgICAgY29uc3Qgc2FtZVRpdGxlID0gdGhpcy5jbG9uZUJ5VmFsdWUodGl0bGUpLmZpbHRlcigoZGF0YTphbnkpID0+IGRhdGEgPT09IGNob2ljZS50aXRsZSk7XHJcbiAgICAgIGlmIChzYW1lVGl0bGUubGVuZ3RoID4gMSkge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIENoZWNrcyBpZiB0aXRsZSBvZiB0d28gY2hvaWNlcyBpcyBzYW1lIG9yIG5vdFxyXG4gICAqIEBwYXJhbSBjaG9pY2VzIENob2ljZSBmb3Igd2hpY2ggdGl0bGUgc2hvdWxkIGJlIGNoZWNrZWRcclxuICAgKi9cclxuICBjaGVja0ZvclNhbWVUaXRsZVdpdGhPdGhlcihxdWVzdGlvbkRldGFpbHM6IGFueSkge1xyXG4gICAgY29uc3QgdGl0bGUgPSBxdWVzdGlvbkRldGFpbHMuY2hvaWNlcy5tYXAoKGRhdGE6IHsgdGl0bGU6IHN0cmluZzsgfSkgPT4gZGF0YS50aXRsZS50cmltKCkpO1xyXG5cclxuICAgIGZvciAoY29uc3QgY2hvaWNlIG9mIHF1ZXN0aW9uRGV0YWlscy5jaG9pY2VzKSB7XHJcbiAgICAgIGNvbnN0IHNhbWVUaXRsZSA9IHRoaXMuY2xvbmVCeVZhbHVlKHRpdGxlKS5maWx0ZXIoKGRhdGE6IHN0cmluZykgPT4gZGF0YSA9PT0gY2hvaWNlLnRpdGxlLnRyaW0oKSk7XHJcbiAgICAgIGlmIChzYW1lVGl0bGUubGVuZ3RoID4gMSkge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAocXVlc3Rpb25EZXRhaWxzLmhhc090aGVyICYmIGNob2ljZS50aXRsZS50cmltKCkgPT09IHF1ZXN0aW9uRGV0YWlscy5vdGhlclZhbHVlKSB7XHJcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIGNsb25lQnlWYWx1ZSh2YWx1ZTogYW55KSB7XHJcbiAgICByZXR1cm4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh2YWx1ZSkpO1xyXG4gIH1cclxufVxyXG4iXX0=
|
package/esm2015/lib/sharedComponents/assessment-editor/services/validator.service.ngsummary.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"moduleName":null,"summaries":[{"symbol":{"__symbol":0,"members":[]},"metadata":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor"}],"validate":[{"__symbolic":"method"}],"validateMultiValuedQuestion":[{"__symbolic":"method"}],"validateSingleValued":[{"__symbolic":"method"}],"validateDateTime":[{"__symbolic":"method"}],"validateImageUpload":[{"__symbolic":"method"}],"validateMatrixDropdown":[{"__symbolic":"method"}],"validateMultipleTextBox":[{"__symbolic":"method"}],"validateSlider":[{"__symbolic":"method"}],"validateStarRating":[{"__symbolic":"method"}],"validateRatingScale":[{"__symbolic":"method"}],"extract":[{"__symbolic":"method"}],"checkForSameTitle":[{"__symbolic":"method"}],"checkForSameTitleWithOther":[{"__symbolic":"method"}]}},"type":{"summaryKind":3,"type":{"reference":{"__symbol":0,"members":[]},"diDeps":[],"lifecycleHooks":[]}}}],"symbols":[{"__symbol":0,"name":"ValidatorService","filePath":"./validator.service"}]}
|
|
1
|
+
{"moduleName":null,"summaries":[{"symbol":{"__symbol":0,"members":[]},"metadata":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor"}],"validate":[{"__symbolic":"method"}],"validateMultiValuedQuestion":[{"__symbolic":"method"}],"validateSingleValued":[{"__symbolic":"method"}],"validateDateTime":[{"__symbolic":"method"}],"validateImageUpload":[{"__symbolic":"method"}],"validateMatrixDropdown":[{"__symbolic":"method"}],"validateMultipleTextBox":[{"__symbolic":"method"}],"validateSlider":[{"__symbolic":"method"}],"validateStarRating":[{"__symbolic":"method"}],"validateRatingScale":[{"__symbolic":"method"}],"extract":[{"__symbolic":"method"}],"checkForSameTitle":[{"__symbolic":"method"}],"checkForSameTitleWithOther":[{"__symbolic":"method"}],"cloneByValue":[{"__symbolic":"method"}]}},"type":{"summaryKind":3,"type":{"reference":{"__symbol":0,"members":[]},"diDeps":[],"lifecycleHooks":[]}}}],"symbols":[{"__symbol":0,"name":"ValidatorService","filePath":"./validator.service"}]}
|
package/esm2015/lib/sharedComponents/bulk-responsibility-view/bulk-responsibility-view.component.js
CHANGED
|
@@ -7,9 +7,10 @@ export class BulkResponsibilityViewComponent {
|
|
|
7
7
|
this.finalResponsibilities = 0;
|
|
8
8
|
}
|
|
9
9
|
ngOnChanges() {
|
|
10
|
+
var _a;
|
|
10
11
|
if (this.responsibilityBulkUpload) {
|
|
11
12
|
this.finalResponsibilities = 0;
|
|
12
|
-
this.responsibilityBulkUpload.reports.forEach((risk) => {
|
|
13
|
+
(_a = this.responsibilityBulkUpload) === null || _a === void 0 ? void 0 : _a.reports.forEach((risk) => {
|
|
13
14
|
if (risk.isValid) {
|
|
14
15
|
this.finalResponsibilities += 1;
|
|
15
16
|
}
|
|
@@ -28,7 +29,7 @@ export class BulkResponsibilityViewComponent {
|
|
|
28
29
|
BulkResponsibilityViewComponent.decorators = [
|
|
29
30
|
{ type: Component, args: [{
|
|
30
31
|
selector: 'app-bulk-responsibility-view',
|
|
31
|
-
template: "\r\n<ng-container>\r\n<div class=\"bulk-view\">\r\n <div class=\"bulk-view-head\">\r\n <h2 class=\"bulk-view-title\">\r\n {{fileName}}\r\n </h2>\r\n </div>\r\n <div class=\"bulk-view-body\">\r\n <div class=\"exel-view\">\r\n <div class=\"exel-view-row head\">\r\n <div class=\"exel-view-column sl-no\">#</div>\r\n <div class=\"exel-view-column\" *ngFor=\"let heading of responsibilityBulkUpload?.header\"\r\n [class.large]=\"heading && heading.startsWith('Inherent')\">\r\n <ng-container *ngIf=\"heading && !(heading.startsWith('Due')) && !(heading.startsWith('Oversight'))\">\r\n {{(heading.includes('*')? heading.replace('*', '') : heading)}}\r\n <span *ngIf=\"heading.includes('*')\" class=\"required\">*</span>\r\n </ng-container>\r\n <ng-container *ngIf=\"heading && heading.startsWith('Due')\">\r\n <div class=\"exel-view-row\">\r\n <div class=\"exel-view-column large\">Due Date</div>\r\n </div>\r\n <div class=\"exel-view-row multi-column\">\r\n <div class=\"exel-view-column\">Day</div>\r\n <div class=\"exel-view-column\">Month</div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"heading && heading.startsWith('Oversight')\">\r\n <div class=\"exel-view-row\">\r\n <div class=\"exel-view-column large\">Oversight </div>\r\n </div>\r\n <div class=\"exel-view-row multi-column\">\r\n <div class=\"exel-view-column\">Always Notify</div>\r\n <div class=\"exel-view-column\">Notify on Failure</div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n </div>\r\n <div class=\"exel-view-row\" *ngFor=\"let report of responsibilityBulkUpload?.reports; let i = index\">\r\n <div class=\"exel-view-column sl-no\" [class.error]=\"!report.isValid\">{{i+1}}</div>\r\n\r\n <div class=\"exel-view-column\" [class.error]=\"!report.responsibilityName\">{{report?.responsibilityName}}\r\n <i *ngIf=\"!report?.responsibilityName\" class=\"icons\"\r\n [appTooltip]=\"'Enter a name for this responsibility.'\" placement=\"bottom-right\" type=\"white\"\r\n delay=\"0\" [tooltipMandatory]=true></i>\r\n </div>\r\n <div class=\"exel-view-column\" [class.error]=\"report?.assignor && ((report?.assignor == report?.alwaysNotify) || (report?.assignor == report?.notifyOnFailure))\">\r\n {{report?.assignor}}\r\n <i *ngIf=\"((report?.assignor) && (report?.notifyOnFailure == report?.assignor||report?.alwaysNotify == report?.assignor))\"\r\n class=\"icons\"\r\n [appTooltip]=\"'The Overseer cannot also be the Assignor of this responsibility. Select another user as the Assignor.'\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true>\r\n </i>\r\n<!--\r\n <i *ngIf=\"((report?.assignor) && (report?.reviewer == report?.assignor))\"\r\n class=\"icons\"\r\n [appTooltip]=\"'The Reviewer cannot also be the Assignor of this responsibility. Select another user as the Assignor.'\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true>\r\n </i> -->\r\n </div>\r\n <div class=\"exel-view-column\" [class.error]=\"!report?.assignee || ((report?.assignee == report?.reviewer)\r\n || (report?.assignee == report?.alwaysNotify) || (report?.assignee == report?.notifyOnFailure)) || (!report?.isValidUser)\">\r\n {{report?.assignee}}\r\n\r\n <i *ngIf=\"((report?.assignee) && (report?.notifyOnFailure == report?.assignee||report?.alwaysNotify == report?.assignee))\"\r\n class=\"icons\"\r\n [appTooltip]=\"'The Overseer cannot also be the Assignee of this responsibility. Select another user as the Assignee.'\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true>\r\n </i>\r\n\r\n <i *ngIf=\"((report?.assignee) && (report?.reviewer == report?.assignee))\"\r\n class=\"icons\"\r\n [appTooltip]=\"'The Reviewer cannot also be the Assignee of this responsibility. Select another user as the Assignee.'\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true>\r\n </i>\r\n <i *ngIf=\"(!report?.assignee) || (!report?.isValidUser)\"\r\n class=\"icons\"\r\n [appTooltip]=\"'Select the user responsible for completing this responsibility. '\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true>\r\n </i>\r\n </div>\r\n <div class=\"exel-view-column\">{{report?.responsibilityCategory}}</div>\r\n <div class=\"exel-view-column\" [class.error]=\"!report.frequency\">{{report?.frequency}}\r\n <i *ngIf=\"!report?.frequency\" class=\"icons\" [appTooltip]=\"'Select a frequency for this responsibility.'\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true></i>\r\n </div>\r\n <div class=\"exel-view-column multi-column\">\r\n <div class=\"exel-view-row\">\r\n <div class=\"exel-view-column\" [class.error]=\"!report.isValidDueDate\">{{report?.day}}\r\n <i *ngIf=\"!report?.isValidDueDate\" class=\"icons\" [appTooltip]=\"'Invalid Due Date.'\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true></i>\r\n <i *ngIf=\"report?.isPastDate\" class=\"icons\" [appTooltip]=\"'This date occurs in the past. Select a future date.'\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true></i>\r\n </div>\r\n <div class=\"exel-view-column\" [class.error]=\"!report.isValidDueDate\">{{report?.month}}\r\n <i *ngIf=\"!report?.isValidDueDate\" class=\"icons\" [appTooltip]=\"'Invalid Due Date.'\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true></i>\r\n <i *ngIf=\"report?.isPastDate\" class=\"icons\" [appTooltip]=\"'This date occurs in the past. Select a future date.'\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true></i>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"exel-view-column\">{{report?.responsibilityWindow}}</div>\r\n <div class=\"exel-view-column\">{{report?.failedAfter}}</div>\r\n <div class=\"exel-view-column\">{{report?.reportClass}}</div>\r\n <div class=\"exel-view-column\">{{report?.responsibilityCenter}}</div>\r\n <div class=\"exel-view-column\"\r\n [class.error]=\"report?.reviewer && ((report?.reviewer == report?.alwaysNotify) || (report?.reviewer == report?.notifyOnFailure)\r\n || (report?.reviewer == report?.assignee) )\">\r\n {{report?.reviewer}}\r\n\r\n <i *ngIf=\"(report?.reviewer) && ((report?.reviewer == report?.alwaysNotify) || (report?.reviewer == report?.notifyOnFailure))\"\r\n class=\"icons\"\r\n [appTooltip]=\"'The Overseer cannot also be the Reviewer of this responsibility. Select another user as the Reviewer'\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true>\r\n </i>\r\n\r\n <i *ngIf=\"report?.reviewer && (report?.reviewer == report?.assignee)\" class=\"icons\"\r\n [appTooltip]=\"'The Assignee cannot also be the Reviewer of this responsibility. Select another user as the Reviewer.'\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true>\r\n </i>\r\n <!-- <i *ngIf=\"(report?.reviewer && report?.assignor)\"\r\n class=\"icons\"\r\n [appTooltip]=\"((report?.assignor)?'The Assignor cannot also be the Reviewer of this responsibility.':'You cannot be a Reviewer of this responsibility since you are the assignor. ') +'Select another user as the Reviewer'\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true>\r\n </i> -->\r\n </div>\r\n <div class=\"exel-view-column\">{{report?.reviewToBeCompletedWithin}}</div>\r\n <div class=\"exel-view-column\">{{report?.reviewWillBeFailedAfter}}</div>\r\n <div class=\"exel-view-column\">{{report?.formatForResponsibility}}</div>\r\n <div class=\"exel-view-column\">{{report?.notes}}</div>\r\n <div class=\"exel-view-column\">{{report?.documentEvidenceRequired}}</div>\r\n <div class=\"exel-view-column multi-column\">\r\n <div class=\"exel-view-row\">\r\n <div class=\"exel-view-column\" [class.error]=\"report?.alwaysNotify && ((report?.alwaysNotify == report?.reviewer)\r\n || (report?.alwaysNotify == report?.assignor) || (report?.alwaysNotify == report?.assignee) ||\r\n ((!report?.assignor)&&(report?.alwaysNotify == defaultOwner)))\">\r\n {{report?.alwaysNotify}}\r\n <i *ngIf=\"(report?.alwaysNotify) && ((report?.reviewer == report?.alwaysNotify))\"\r\n class=\"icons\"\r\n [appTooltip]=\"'The Reviewer cannot also be the Overseer of this responsibility. Select another user as the Overseer.'\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true>\r\n </i>\r\n\r\n <i *ngIf=\"report?.alwaysNotify && (report?.alwaysNotify == report?.assignee)\" class=\"icons\"\r\n [appTooltip]=\"'The Assignee cannot also be the Overseer of this responsibility. Select another user as the Overseer'\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true>\r\n </i>\r\n <i *ngIf=\"((report?.alwaysNotify && report?.assignor) && (report?.alwaysNotify == report?.assignor)) ||((report?.alwaysNotify && (!report?.assignor)) && (report?.alwaysNotify == defaultOwner))\"\r\n class=\"icons\"\r\n [appTooltip]=\"((report?.assignor)?'The Assignor cannot also be the Overseer of this responsibility. ':'You cannot be an Overseer of this responsibility since you are the Assignor. ') +'Select another user as the Overseer.'\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true>\r\n </i>\r\n </div>\r\n <div class=\"exel-view-column\" [class.error]=\"report?.notifyOnFailure && ((report?.notifyOnFailure == report?.reviewer)\r\n || (report?.notifyOnFailure == report?.assignor) || (report?.notifyOnFailure == report?.assignee) ||\r\n ((!report?.assignor)&&(report?.notifyOnFailure == defaultOwner)))\">\r\n {{report?.notifyOnFailure}}\r\n <i *ngIf=\"(report?.notifyOnFailure) && ((report?.reviewer == report?.notifyOnFailure))\"\r\n class=\"icons\"\r\n [appTooltip]=\"'The Reviewer cannot also be the Overseer of this responsibility. Select another user as the Overseer.'\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true>\r\n </i>\r\n\r\n <i *ngIf=\"report?.notifyOnFailure && (report?.notifyOnFailure == report?.assignee)\" class=\"icons\"\r\n [appTooltip]=\"'The Assignee cannot also be the Overseer of this responsibility. Select another user as the Overseer'\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true>\r\n </i>\r\n <i *ngIf=\"((report?.notifyOnFailure && report?.assignor) && (report?.notifyOnFailure == report?.assignor)) ||((report?.notifyOnFailure && (!report?.assignor)) && (report?.notifyOnFailure == defaultOwner))\"\r\n class=\"icons\"\r\n [appTooltip]=\"((report?.assignor)?'The Assignor cannot also be the Overseer of this responsibility. ':'You cannot be an Overseer of this responsibility since you are the Assignor. ') +'Select another user as the Overseer.'\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true>\r\n </i>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"exel-view-column\">{{report?.keyResponsibility}}</div>\r\n <div class=\"exel-view-column\">{{report?.objective}}</div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"bulk-view-footer\">\r\n <div class=\"left\">\r\n <p>{{finalResponsibilities}} out of {{responsibilityBulkUpload?.reports?.length}} responsibilities will be\r\n uploaded.</p>\r\n </div>\r\n <div class=\"right\">\r\n <button (click)=\"close()\">Cancel</button>\r\n <button (click)=\"submit()\" [disabled]=\"finalResponsibilities<1\" class=\"blue\">Confirm</button>\r\n </div>\r\n </div>\r\n</div>\r\n<app-loader *ngIf=\"loader\"></app-loader>\r\n\r\n</ng-container>\r\n\r\n<!-- --------------------------------------------------------------------upward is new one-------------------- -->\r\n<app-loader *ngIf=\"loader\"></app-loader>\r\n",
|
|
32
|
+
template: "\r\n<ng-container>\r\n<div class=\"bulk-view\">\r\n <div class=\"bulk-view-head\">\r\n <h2 class=\"bulk-view-title\">\r\n {{fileName}}\r\n </h2>\r\n </div>\r\n <div class=\"bulk-view-body\">\r\n <div class=\"exel-view\">\r\n <div class=\"exel-view-row head\">\r\n <div class=\"exel-view-column sl-no\">#</div>\r\n <div class=\"exel-view-column\" *ngFor=\"let heading of responsibilityBulkUpload?.header\"\r\n [class.large]=\"heading && heading.startsWith('Inherent')\">\r\n <ng-container *ngIf=\"heading && !(heading.startsWith('Due')) && !(heading.startsWith('Oversight'))\">\r\n {{(heading.includes('*')? heading.replace('*', '') : heading)}}\r\n <span *ngIf=\"heading.includes('*')\" class=\"required\">*</span>\r\n </ng-container>\r\n <ng-container *ngIf=\"heading && heading.startsWith('Due')\">\r\n <div class=\"exel-view-row\">\r\n <div class=\"exel-view-column large\">Due Date</div>\r\n </div>\r\n <div class=\"exel-view-row multi-column\">\r\n <div class=\"exel-view-column\">Day</div>\r\n <div class=\"exel-view-column\">Month</div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"heading && heading.startsWith('Oversight')\">\r\n <div class=\"exel-view-row\">\r\n <div class=\"exel-view-column large\">Oversight </div>\r\n </div>\r\n <div class=\"exel-view-row multi-column\">\r\n <div class=\"exel-view-column\">Always Notify</div>\r\n <div class=\"exel-view-column\">Notify on Failure</div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n </div>\r\n <div class=\"exel-view-row\" *ngFor=\"let report of responsibilityBulkUpload?.reports; let i = index\">\r\n <div class=\"exel-view-column sl-no\" [class.error]=\"!report.isValid\">{{i+1}}</div>\r\n\r\n <div class=\"exel-view-column\" [class.error]=\"!report.responsibilityName\">{{report?.responsibilityName}}\r\n <i *ngIf=\"!report?.responsibilityName\" class=\"icons\"\r\n [appTooltip]=\"'Enter a name for this responsibility.'\" placement=\"bottom-right\" type=\"white\"\r\n delay=\"0\" [tooltipMandatory]=true></i>\r\n </div>\r\n <div class=\"exel-view-column\" [class.error]=\"report?.assignor && ((report?.assignor == report?.alwaysNotify) || (report?.assignor == report?.notifyOnFailure))\">\r\n {{report?.assignor}}\r\n <i *ngIf=\"((report?.assignor) && (report?.notifyOnFailure == report?.assignor||report?.alwaysNotify == report?.assignor))\"\r\n class=\"icons\"\r\n [appTooltip]=\"'The Overseer cannot also be the Assignor of this responsibility. Select another user as the Assignor.'\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true>\r\n </i>\r\n<!--\r\n <i *ngIf=\"((report?.assignor) && (report?.reviewer == report?.assignor))\"\r\n class=\"icons\"\r\n [appTooltip]=\"'The Reviewer cannot also be the Assignor of this responsibility. Select another user as the Assignor.'\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true>\r\n </i> -->\r\n </div>\r\n <div class=\"exel-view-column\" [class.error]=\"!report?.assignee || ((report?.assignee == report?.reviewer)\r\n || (report?.assignee == report?.alwaysNotify) || (report?.assignee == report?.notifyOnFailure)) || (!report?.isValidUser)\">\r\n {{report?.assignee}}\r\n\r\n <i *ngIf=\"((report?.assignee) && (report?.notifyOnFailure == report?.assignee||report?.alwaysNotify == report?.assignee))\"\r\n class=\"icons\"\r\n [appTooltip]=\"'The Overseer cannot also be the Assignee of this responsibility. Select another user as the Assignee.'\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true>\r\n </i>\r\n\r\n <i *ngIf=\"((report?.assignee) && (report?.reviewer == report?.assignee))\"\r\n class=\"icons\"\r\n [appTooltip]=\"'The Reviewer cannot also be the Assignee of this responsibility. Select another user as the Assignee.'\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true>\r\n </i>\r\n <i *ngIf=\"(!report?.assignee) || (!report?.isValidUser)\"\r\n class=\"icons\"\r\n [appTooltip]=\"'Select the user responsible for completing this responsibility. '\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true>\r\n </i>\r\n </div>\r\n <div class=\"exel-view-column\" id=\"resCategory\" *ngIf=\"report?.responsibilityCategory!==null\">{{report?.responsibilityCategory}}</div>\r\n <div class=\"exel-view-column\" [class.error]=\"!report.frequency\">{{report?.frequency}}\r\n <i *ngIf=\"!report?.frequency\" class=\"icons\" [appTooltip]=\"'Select a frequency for this responsibility.'\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true></i>\r\n </div>\r\n <div class=\"exel-view-column multi-column\">\r\n <div class=\"exel-view-row\">\r\n <div class=\"exel-view-column\" [class.error]=\"!report.isValidDueDate\">{{report?.day}}\r\n <i *ngIf=\"!report?.isValidDueDate\" class=\"icons\" [appTooltip]=\"'Invalid Due Date.'\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true></i>\r\n <i *ngIf=\"report?.isPastDate\" class=\"icons\" [appTooltip]=\"'This date occurs in the past. Select a future date.'\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true></i>\r\n </div>\r\n <div class=\"exel-view-column\" [class.error]=\"!report.isValidDueDate\">{{report?.month}}\r\n <i *ngIf=\"!report?.isValidDueDate\" class=\"icons\" [appTooltip]=\"'Invalid Due Date.'\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true></i>\r\n <i *ngIf=\"report?.isPastDate\" class=\"icons\" [appTooltip]=\"'This date occurs in the past. Select a future date.'\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true></i>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"exel-view-column\">{{report?.responsibilityWindow}}</div>\r\n <div class=\"exel-view-column\">{{report?.failedAfter}}</div>\r\n <div class=\"exel-view-column\">{{report?.reportClass}}</div>\r\n <div class=\"exel-view-column\">{{report?.responsibilityCenter}}</div>\r\n <div class=\"exel-view-column\"\r\n [class.error]=\"report?.reviewer && ((report?.reviewer == report?.alwaysNotify) || (report?.reviewer == report?.notifyOnFailure)\r\n || (report?.reviewer == report?.assignee) )\">\r\n {{report?.reviewer}}\r\n\r\n <i *ngIf=\"(report?.reviewer) && ((report?.reviewer == report?.alwaysNotify) || (report?.reviewer == report?.notifyOnFailure))\"\r\n class=\"icons\"\r\n [appTooltip]=\"'The Overseer cannot also be the Reviewer of this responsibility. Select another user as the Reviewer'\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true>\r\n </i>\r\n\r\n <i *ngIf=\"report?.reviewer && (report?.reviewer == report?.assignee)\" class=\"icons\"\r\n [appTooltip]=\"'The Assignee cannot also be the Reviewer of this responsibility. Select another user as the Reviewer.'\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true>\r\n </i>\r\n <!-- <i *ngIf=\"(report?.reviewer && report?.assignor)\"\r\n class=\"icons\"\r\n [appTooltip]=\"((report?.assignor)?'The Assignor cannot also be the Reviewer of this responsibility.':'You cannot be a Reviewer of this responsibility since you are the assignor. ') +'Select another user as the Reviewer'\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true>\r\n </i> -->\r\n </div>\r\n <div class=\"exel-view-column\">{{report?.reviewToBeCompletedWithin}}</div>\r\n <div class=\"exel-view-column\">{{report?.reviewWillBeFailedAfter}}</div>\r\n <div class=\"exel-view-column\">{{report?.formatForResponsibility}}</div>\r\n <div class=\"exel-view-column\">{{report?.notes}}</div>\r\n <div class=\"exel-view-column\">{{report?.documentEvidenceRequired}}</div>\r\n <div class=\"exel-view-column multi-column\">\r\n <div class=\"exel-view-row\">\r\n <div class=\"exel-view-column\" [class.error]=\"report?.alwaysNotify && ((report?.alwaysNotify == report?.reviewer)\r\n || (report?.alwaysNotify == report?.assignor) || (report?.alwaysNotify == report?.assignee) ||\r\n ((!report?.assignor)&&(report?.alwaysNotify == defaultOwner)))\">\r\n {{report?.alwaysNotify}}\r\n <i *ngIf=\"(report?.alwaysNotify) && ((report?.reviewer == report?.alwaysNotify))\"\r\n class=\"icons\"\r\n [appTooltip]=\"'The Reviewer cannot also be the Overseer of this responsibility. Select another user as the Overseer.'\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true>\r\n </i>\r\n\r\n <i *ngIf=\"report?.alwaysNotify && (report?.alwaysNotify == report?.assignee)\" class=\"icons\"\r\n [appTooltip]=\"'The Assignee cannot also be the Overseer of this responsibility. Select another user as the Overseer'\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true>\r\n </i>\r\n <i *ngIf=\"((report?.alwaysNotify && report?.assignor) && (report?.alwaysNotify == report?.assignor)) ||((report?.alwaysNotify && (!report?.assignor)) && (report?.alwaysNotify == defaultOwner))\"\r\n class=\"icons\"\r\n [appTooltip]=\"((report?.assignor)?'The Assignor cannot also be the Overseer of this responsibility. ':'You cannot be an Overseer of this responsibility since you are the Assignor. ') +'Select another user as the Overseer.'\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true>\r\n </i>\r\n </div>\r\n <div class=\"exel-view-column\" [class.error]=\"report?.notifyOnFailure && ((report?.notifyOnFailure == report?.reviewer)\r\n || (report?.notifyOnFailure == report?.assignor) || (report?.notifyOnFailure == report?.assignee) ||\r\n ((!report?.assignor)&&(report?.notifyOnFailure == defaultOwner)))\">\r\n {{report?.notifyOnFailure}}\r\n <i *ngIf=\"(report?.notifyOnFailure) && ((report?.reviewer == report?.notifyOnFailure))\"\r\n class=\"icons\"\r\n [appTooltip]=\"'The Reviewer cannot also be the Overseer of this responsibility. Select another user as the Overseer.'\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true>\r\n </i>\r\n\r\n <i *ngIf=\"report?.notifyOnFailure && (report?.notifyOnFailure == report?.assignee)\" class=\"icons\"\r\n [appTooltip]=\"'The Assignee cannot also be the Overseer of this responsibility. Select another user as the Overseer'\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true>\r\n </i>\r\n <i *ngIf=\"((report?.notifyOnFailure && report?.assignor) && (report?.notifyOnFailure == report?.assignor)) ||((report?.notifyOnFailure && (!report?.assignor)) && (report?.notifyOnFailure == defaultOwner))\"\r\n class=\"icons\"\r\n [appTooltip]=\"((report?.assignor)?'The Assignor cannot also be the Overseer of this responsibility. ':'You cannot be an Overseer of this responsibility since you are the Assignor. ') +'Select another user as the Overseer.'\"\r\n placement=\"bottom-right\" type=\"white\" delay=\"0\" [tooltipMandatory]=true>\r\n </i>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"exel-view-column\">{{report?.keyResponsibility}}</div>\r\n <div class=\"exel-view-column\">{{report?.objective}}</div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"bulk-view-footer\">\r\n <div class=\"left\">\r\n <p>{{finalResponsibilities}} out of {{responsibilityBulkUpload?.reports?.length}} responsibilities will be\r\n uploaded.</p>\r\n </div>\r\n <div class=\"right\">\r\n <button (click)=\"close()\">Cancel</button>\r\n <button (click)=\"submit()\" [disabled]=\"finalResponsibilities<1\" class=\"blue\">Confirm</button>\r\n </div>\r\n </div>\r\n</div>\r\n<app-loader *ngIf=\"loader\"></app-loader>\r\n\r\n</ng-container>\r\n\r\n<!-- --------------------------------------------------------------------upward is new one-------------------- -->\r\n<app-loader *ngIf=\"loader\"></app-loader>\r\n",
|
|
32
33
|
styles: ["@import url(\"https://cdn.v-comply.com/design-system/css/icons/icons.css\");::-webkit-scrollbar-thumb,::-webkit-scrollbar-thumb:hover{background:#747576;border-radius:16px}::-webkit-scrollbar{height:15px}.bulk-view{position:fixed;top:0;right:0;bottom:0;left:0;z-index:11}.bulk-view-head{height:60px;padding:20px 24px;background:#161b2f;display:flex;justify-content:flex-start}.bulk-view-title{font-size:16px;line-height:20px;font-weight:400;margin:0;color:#fff}.bulk-view-body{height:calc(100vh - 110px);overflow:auto;width:100%;background:#fff}.bulk-view-body .exel-view{display:block}.bulk-view-body .exel-view-row{display:flex;width:100%}.bulk-view-body .exel-view-row.head .exel-view-column{font-weight:500;font-size:14px;min-height:26px;background:#f1f1f1;padding:0;word-break:unset}.bulk-view-body .exel-view-row.multi-column .exel-view-column{width:140px;min-width:140px}.bulk-view-body .exel-view-column{width:300px;min-width:300px;padding:0 10px;border-right:1px solid #dcdcdc;border-bottom:1px solid #dcdcdc;display:flex;align-items:center;justify-content:center;text-align:center;word-break:break-all;line-height:16px;font-size:12px;color:#161b2f;flex-wrap:wrap;position:relative}.bulk-view-body .exel-view-column i.icons{position:absolute;top:8px;right:10px;cursor:pointer;color:#d93b41}.bulk-view-body .exel-view-column.large{width:100%;min-width:auto}.bulk-view-body .exel-view-column.error{border:1px solid #eb2424!important;padding-right:24px}.bulk-view-body .exel-view-column.error+.error{border-left:none!important}.bulk-view-body .exel-view-column span.required{color:#eb2424}.bulk-view-body .exel-view-column .exel-view-row .exel-view-column{width:100%}.bulk-view-body .exel-view-column.sl-no{background:#f1f1f1;width:60px;min-width:60px;min-height:30px;font-weight:400}.bulk-view-body .exel-view-column.sl-no.error{background:#eb242424;padding-right:10px;border:none;border-bottom:1px solid #dcdcdc}.bulk-view-body .exel-view-column.multi-column{padding:0;border:none}.bulk-view-body .exel-view-column.multi-column .exel-view-row{height:100%}.bulk-view-body .exel-view-column.multi-column .exel-view-column{width:50%;min-width:50%}.bulk-view-body .exel-view-column.multi-column .exel-view-column+.exel-view-column{border-left:none}.bulk-view-footer{height:50px;box-shadow:0 0 15px rgba(30,93,210,.35);padding:10px 20px;position:fixed;width:100%;bottom:0;display:flex;align-items:center;justify-content:space-between;background:#fff}.bulk-view-footer .left p{color:#747576;font-size:13px;font-weight:500;margin:0}.bulk-view-footer .right button{font-size:12px;background:#fff;border:1px solid #dcdcdc;color:#747576;border-radius:2px;padding:8px 18px;cursor:pointer;text-transform:uppercase}.bulk-view-footer .right button+button{margin-left:4px}.bulk-view-footer .right button.blue{color:#fff;background:#1e5dd3}.bulk-view-footer .right button:disabled{background:#f1f1f1;border-color:#f1f1f1;pointer-events:none;cursor:not-allowed;color:#747576}"]
|
|
33
34
|
},] }
|
|
34
35
|
];
|
|
@@ -40,4 +41,4 @@ BulkResponsibilityViewComponent.propDecorators = {
|
|
|
40
41
|
submitResponsibilityBulkUpload: [{ type: Output }],
|
|
41
42
|
cancel: [{ type: Output }]
|
|
42
43
|
};
|
|
43
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
44
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVsay1yZXNwb25zaWJpbGl0eS12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Z4LXdvcmtmbG93LWVuZ2luZS9zcmMvbGliL3NoYXJlZENvbXBvbmVudHMvYnVsay1yZXNwb25zaWJpbGl0eS12aWV3L2J1bGstcmVzcG9uc2liaWxpdHktdmlldy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQU8vRSxNQUFNLE9BQU8sK0JBQStCO0lBTDVDO1FBVVcsV0FBTSxHQUFHLEtBQUssQ0FBQztRQUVkLG1DQUE4QixHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDcEQsV0FBTSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFFdEMsMEJBQXFCLEdBQUcsQ0FBQyxDQUFDO0lBdUI1QixDQUFDO0lBckJDLFdBQVc7O1FBQ1QsSUFBSSxJQUFJLENBQUMsd0JBQXdCLEVBQUU7WUFDakMsSUFBSSxDQUFDLHFCQUFxQixHQUFHLENBQUMsQ0FBQztZQUMvQixNQUFBLElBQUksQ0FBQyx3QkFBd0IsMENBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFO2dCQUMzRCxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7b0JBQ2hCLElBQUksQ0FBQyxxQkFBcUIsSUFBSSxDQUFDLENBQUM7aUJBQ2pDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7SUFFRCxRQUFRO0lBQ1IsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLENBQUMsOEJBQThCLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDN0MsQ0FBQztJQUVELEtBQUs7UUFDSCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3JCLENBQUM7OztZQXJDRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLDhCQUE4QjtnQkFDeEMsbW5lQUF3RDs7YUFFekQ7Ozt1Q0FHRSxLQUFLO3VCQUNMLEtBQUs7MkJBQ0wsS0FBSztxQkFDTCxLQUFLOzZDQUVMLE1BQU07cUJBQ04sTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLWJ1bGstcmVzcG9uc2liaWxpdHktdmlldycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2J1bGstcmVzcG9uc2liaWxpdHktdmlldy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vYnVsay1yZXNwb25zaWJpbGl0eS12aWV3LmNvbXBvbmVudC5sZXNzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBCdWxrUmVzcG9uc2liaWxpdHlWaWV3Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgQElucHV0KCkgcmVzcG9uc2liaWxpdHlCdWxrVXBsb2FkITogYW55O1xyXG4gIEBJbnB1dCgpIGZpbGVOYW1lITogYW55O1xyXG4gIEBJbnB1dCgpIGRlZmF1bHRPd25lciE6IGFueTtcclxuICBASW5wdXQoKSBsb2FkZXIgPSBmYWxzZTtcclxuXHJcbiAgQE91dHB1dCgpIHN1Ym1pdFJlc3BvbnNpYmlsaXR5QnVsa1VwbG9hZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgY2FuY2VsID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBmaW5hbFJlc3BvbnNpYmlsaXRpZXMgPSAwO1xyXG5cclxuICBuZ09uQ2hhbmdlcygpIHtcclxuICAgIGlmICh0aGlzLnJlc3BvbnNpYmlsaXR5QnVsa1VwbG9hZCkge1xyXG4gICAgICB0aGlzLmZpbmFsUmVzcG9uc2liaWxpdGllcyA9IDA7XHJcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlCdWxrVXBsb2FkPy5yZXBvcnRzLmZvckVhY2goKHJpc2s6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyaXNrLmlzVmFsaWQpIHtcclxuICAgICAgICAgIHRoaXMuZmluYWxSZXNwb25zaWJpbGl0aWVzICs9IDE7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gIH1cclxuXHJcbiAgc3VibWl0KCkge1xyXG4gICAgdGhpcy5zdWJtaXRSZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQuZW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgY2xvc2UoKSB7XHJcbiAgICB0aGlzLmNhbmNlbC5lbWl0KCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|