@piserve-tech/form-submission 1.3.270 → 1.3.271
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/form-submission.component.mjs +10 -8
- package/esm2022/question/sub-form/sub-form.component.mjs +8 -5
- package/fesm2022/piserve-tech-form-submission.mjs +16 -11
- package/fesm2022/piserve-tech-form-submission.mjs.map +1 -1
- package/package.json +1 -1
- package/question/sub-form/sub-form.component.d.ts +1 -0
|
@@ -20,7 +20,15 @@ export class FormSubmissionComponent {
|
|
|
20
20
|
}
|
|
21
21
|
ngOnChanges(changes) {
|
|
22
22
|
if (changes['formData']) {
|
|
23
|
-
|
|
23
|
+
const newFormData = changes['formData'].currentValue;
|
|
24
|
+
this.dataService.setHeader(newFormData?.headers);
|
|
25
|
+
// 🔹 Add your duplicateSubmission logic here
|
|
26
|
+
if (newFormData?.duplicateSubmission) {
|
|
27
|
+
this.dataService.setSubformData({
|
|
28
|
+
moduleName: newFormData.moduleName,
|
|
29
|
+
duplicateSubmission: newFormData.duplicateSubmission,
|
|
30
|
+
});
|
|
31
|
+
}
|
|
24
32
|
}
|
|
25
33
|
if (changes['triggerFormSave'] && changes['triggerFormSave'].currentValue) {
|
|
26
34
|
const action = changes['triggerFormSave'].currentValue;
|
|
@@ -35,12 +43,6 @@ export class FormSubmissionComponent {
|
|
|
35
43
|
ngOnInit() {
|
|
36
44
|
this.dataService.setApiUrl(this.formData.apiurl);
|
|
37
45
|
this.dataService.setHeader(this.formData.headers);
|
|
38
|
-
if (this.formData.duplicateSubmission) {
|
|
39
|
-
this.dataService.setSubformData({
|
|
40
|
-
moduleName: this.formData.moduleName,
|
|
41
|
-
duplicateSubmission: this.formData.duplicateSubmission
|
|
42
|
-
});
|
|
43
|
-
}
|
|
44
46
|
this.dataService.header$.subscribe((data) => {
|
|
45
47
|
this.header = data;
|
|
46
48
|
this.setHtmlDirection(this.header.acceptedLanguage);
|
|
@@ -89,4 +91,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
89
91
|
type: ViewChild,
|
|
90
92
|
args: [SubmitFormComponent]
|
|
91
93
|
}] } });
|
|
92
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
94
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1zdWJtaXNzaW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2Zvcm0tc3VibWlzc2lvbi9zcmMvbGliL2Zvcm0tc3VibWlzc2lvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9mb3JtLXN1Ym1pc3Npb24vc3JjL2xpYi9mb3JtLXN1Ym1pc3Npb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQWlCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVqSCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNEQUFzRCxDQUFDOzs7O0FBUzNGLE1BQU0sT0FBTyx1QkFBdUI7SUFjbEMsWUFBb0IsV0FBd0IsRUFBNEIsUUFBa0I7UUFBdEUsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFBNEIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQWJqRixhQUFRLEdBQVEsRUFBRSxDQUFDO1FBQ25CLFNBQUksR0FBWSxLQUFLLENBQUM7UUFDdEIsbUJBQWMsR0FBWSxLQUFLLENBQUMsQ0FBQywyQ0FBMkM7UUFDNUUsaUJBQVksR0FBVyxFQUFFLENBQUM7UUFDekIsZUFBVSxHQUF5QixJQUFJLFlBQVksRUFBVSxDQUFDO1FBQzlELGNBQVMsR0FBMEIsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUNoRSxvQkFBZSxHQUFrQixJQUFJLENBQUM7UUFLL0Msc0JBQWlCLEdBQVksS0FBSyxDQUFDO0lBRTJELENBQUM7SUFFL0YsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQ3ZCLE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxZQUFZLENBQUM7WUFFckQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBRWpELDZDQUE2QztZQUM3QyxJQUFJLFdBQVcsRUFBRSxtQkFBbUIsRUFBRTtnQkFDcEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUM7b0JBQzlCLFVBQVUsRUFBRSxXQUFXLENBQUMsVUFBVTtvQkFDbEMsbUJBQW1CLEVBQUUsV0FBVyxDQUFDLG1CQUFtQjtpQkFDckQsQ0FBQyxDQUFDO2FBQ0o7U0FDRjtRQUVELElBQUksT0FBTyxDQUFDLGlCQUFpQixDQUFDLElBQUksT0FBTyxDQUFDLGlCQUFpQixDQUFDLENBQUMsWUFBWSxFQUFFO1lBQ3pFLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLFlBQVksQ0FBQztZQUV2RCxJQUFJLE1BQU0sS0FBSyxRQUFRLEVBQUU7Z0JBQ3ZCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7YUFDL0I7WUFFRCxJQUFJLElBQUksQ0FBQyxtQkFBbUIsRUFBRTtnQkFDNUIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFVBQVUsRUFBRSxDQUFDO2FBQ3ZDO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDakQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVsRCxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUMxQyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztZQUNuQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3RELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGdCQUFnQixDQUFDLFFBQWdCO1FBQy9CLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFvQixDQUFDO1FBRWpGLElBQUksUUFBUSxLQUFLLEtBQUssSUFBSSxRQUFRLEtBQUssSUFBSSxFQUFFO1lBQzNDLFdBQVcsQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO1NBQ25DO2FBQU07WUFDTCxXQUFXLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztTQUNuQztRQUVELE9BQU8sQ0FBQyxHQUFHLEdBQUcsV0FBVyxDQUFDLGFBQWEsQ0FBQztJQUMxQyxDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQVU7UUFDZixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsS0FBVTtRQUN6QixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM1QixDQUFDOytHQXhFVSx1QkFBdUIsNkNBY29CLFFBQVE7bUdBZG5ELHVCQUF1QixrVUFRdkIsbUJBQW1CLHFFQ3JCaEMsbWJBWUE7OzRGRENhLHVCQUF1QjtrQkFObkMsU0FBUzsrQkFDRSxvQkFBb0I7OzBCQW1CaUIsTUFBTTsyQkFBQyxRQUFROzRDQWJyRCxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0ksVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxTQUFTO3NCQUFsQixNQUFNO2dCQUNFLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQzBCLG1CQUFtQjtzQkFBbEQsU0FBUzt1QkFBQyxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5qZWN0LCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGF0YVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9kYXRhLnNlcnZpY2UnO1xuaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgZW52aXJvbm1lbnQgfSBmcm9tICcuLi9lbnZpcm9ubWVudC9lbnZpcm9ubWVudCc7XG5pbXBvcnQgeyBTdWJtaXRGb3JtQ29tcG9uZW50IH0gZnJvbSAnLi4vZm9ybS1zdWJtaXNzaW9uL3N1Ym1pdC1mb3JtL3N1Ym1pdC1mb3JtLmNvbXBvbmVudCc7XG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLWZvcm1TdWJtaXNzaW9uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Zvcm0tc3VibWlzc2lvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Zvcm0tc3VibWlzc2lvbi5jb21wb25lbnQuc2NzcyddLFxufSlcblxuZXhwb3J0IGNsYXNzIEZvcm1TdWJtaXNzaW9uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgZm9ybURhdGE6IGFueSA9IHt9O1xuICBASW5wdXQoKSBlZGl0OiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIHNraXBWYWxpZGF0aW9uOiBib29sZWFuID0gZmFsc2U7IC8vIE5ldyBpbnB1dCB0byBjb250cm9sIHZhbGlkYXRpb24gc2tpcHBpbmdcbiAgQElucHV0KCkgc3VibWlzc2lvbklkOiBzdHJpbmcgPSAnJztcbiAgQE91dHB1dCgpIHN1Ym1pdEZvcm06IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIEBPdXRwdXQoKSBhcGlDYWxsZWQ6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgQElucHV0KCkgdHJpZ2dlckZvcm1TYXZlOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgQFZpZXdDaGlsZChTdWJtaXRGb3JtQ29tcG9uZW50KSBzdWJtaXRGb3JtQ29tcG9uZW50ITogU3VibWl0Rm9ybUNvbXBvbmVudDtcblxuICBoZWFkZXI6YW55O1xuICBhY2NlcHRlZExhbmd1YWdlITogc3RyaW5nO1xuICBpc0FjdGlvblRyaWdnZXJlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZGF0YVNlcnZpY2U6IERhdGFTZXJ2aWNlLCBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIGRvY3VtZW50OiBEb2N1bWVudCkgeyB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWydmb3JtRGF0YSddKSB7XG4gICAgICBjb25zdCBuZXdGb3JtRGF0YSA9IGNoYW5nZXNbJ2Zvcm1EYXRhJ10uY3VycmVudFZhbHVlO1xuICBcbiAgICAgIHRoaXMuZGF0YVNlcnZpY2Uuc2V0SGVhZGVyKG5ld0Zvcm1EYXRhPy5oZWFkZXJzKTtcbiAgXG4gICAgICAvLyDwn5S5IEFkZCB5b3VyIGR1cGxpY2F0ZVN1Ym1pc3Npb24gbG9naWMgaGVyZVxuICAgICAgaWYgKG5ld0Zvcm1EYXRhPy5kdXBsaWNhdGVTdWJtaXNzaW9uKSB7XG4gICAgICAgIHRoaXMuZGF0YVNlcnZpY2Uuc2V0U3ViZm9ybURhdGEoe1xuICAgICAgICAgIG1vZHVsZU5hbWU6IG5ld0Zvcm1EYXRhLm1vZHVsZU5hbWUsXG4gICAgICAgICAgZHVwbGljYXRlU3VibWlzc2lvbjogbmV3Rm9ybURhdGEuZHVwbGljYXRlU3VibWlzc2lvbixcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZXNbJ3RyaWdnZXJGb3JtU2F2ZSddICYmIGNoYW5nZXNbJ3RyaWdnZXJGb3JtU2F2ZSddLmN1cnJlbnRWYWx1ZSkge1xuICAgICAgY29uc3QgYWN0aW9uID0gY2hhbmdlc1sndHJpZ2dlckZvcm1TYXZlJ10uY3VycmVudFZhbHVlO1xuXG4gICAgICBpZiAoYWN0aW9uID09PSAnc3VibWl0Jykge1xuICAgICAgICB0aGlzLmlzQWN0aW9uVHJpZ2dlcmVkID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuc3VibWl0Rm9ybUNvbXBvbmVudCkge1xuICAgICAgICB0aGlzLnN1Ym1pdEZvcm1Db21wb25lbnQuc3VibWl0Rm9ybSgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuZGF0YVNlcnZpY2Uuc2V0QXBpVXJsKHRoaXMuZm9ybURhdGEuYXBpdXJsKTtcbiAgICB0aGlzLmRhdGFTZXJ2aWNlLnNldEhlYWRlcih0aGlzLmZvcm1EYXRhLmhlYWRlcnMpO1xuXG4gICAgdGhpcy5kYXRhU2VydmljZS5oZWFkZXIkLnN1YnNjcmliZSgoZGF0YSkgPT4ge1xuICAgICAgdGhpcy5oZWFkZXIgPSBkYXRhO1xuICAgICAgdGhpcy5zZXRIdG1sRGlyZWN0aW9uKHRoaXMuaGVhZGVyLmFjY2VwdGVkTGFuZ3VhZ2UpO1xuICAgIH0pO1xuICB9XG5cbiAgc2V0SHRtbERpcmVjdGlvbihsYW5ndWFnZTogc3RyaW5nKSB7XG4gICAgY29uc3QgaHRtbFRhZyA9IHRoaXMuZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2h0bWwnKVswXSBhcyBIVE1MSHRtbEVsZW1lbnQ7XG5cbiAgICBpZiAobGFuZ3VhZ2UgPT09ICdhcmEnIHx8IGxhbmd1YWdlID09PSAnYXInKSB7XG4gICAgICBlbnZpcm9ubWVudC5odG1sRGlyZWN0aW9uID0gJ3J0bCc7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVudmlyb25tZW50Lmh0bWxEaXJlY3Rpb24gPSAnbHRyJztcbiAgICB9XG5cbiAgICBodG1sVGFnLmRpciA9IGVudmlyb25tZW50Lmh0bWxEaXJlY3Rpb247XG4gIH1cblxuICBzdWJtaXQoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuc3VibWl0Rm9ybS5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIGdldEZvcm1BcGlDYWxsZWQoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuYXBpQ2FsbGVkLmVtaXQodHJ1ZSk7XG4gIH1cbn1cbiIsIjxsaWItc3VibWl0LWZvcm1cbiAgW21vZHVsZU5hbWVdPVwiZm9ybURhdGEubW9kdWxlTmFtZVwiXG4gIFtzdWJtaXNzaW9uSWRdPVwic3VibWlzc2lvbklkXCJcbiAgW2VkaXRdPVwiZWRpdFwiXG4gIFthY2NlcHRlZExhbmd1YWdlXSA9IFwiZm9ybURhdGEuaGVhZGVycy5hY2NlcHRlZExhbmd1YWdlXCJcbiAgW3NraXBNYXJnaW5dPVwiZm9ybURhdGEuc2tpcE1hcmdpblwiXG4gIFtza2lwVmFsaWRhdGlvbl09XCJza2lwVmFsaWRhdGlvblwiXG4gIFtpc0FjdGlvblRyaWdnZXJlZF09XCJpc0FjdGlvblRyaWdnZXJlZFwiXG4gIFtuYXZpZ2F0ZVRvXT1cImZvcm1EYXRhLm5hdmlnYXRlVG9cIlxuICAoc3VibWl0KT1cInN1Ym1pdCgkZXZlbnQpXCJcbiAoYXBpQ2FsbGVkKT1cImdldEZvcm1BcGlDYWxsZWQoJGV2ZW50KVwiXG4+PC9saWItc3VibWl0LWZvcm0+XG4iXX0=
|
|
@@ -59,12 +59,10 @@ export class SubFormComponent {
|
|
|
59
59
|
this.previousSubmissions = [];
|
|
60
60
|
this.dataService.subform$.subscribe((data) => {
|
|
61
61
|
this.subformData = data;
|
|
62
|
+
this.loadPreviousSubmissions();
|
|
62
63
|
});
|
|
63
64
|
}
|
|
64
|
-
|
|
65
|
-
this.allowCopy = this.subForm.property?.allowCopy;
|
|
66
|
-
this.allowDelete = this.subForm.property?.allowDelete;
|
|
67
|
-
this.copySubFormdata = this.subForm?.copySubformMeta;
|
|
65
|
+
loadPreviousSubmissions() {
|
|
68
66
|
if (this.subformData && Object.keys(this.subformData).length > 0 && !this.edit) {
|
|
69
67
|
this.formService.getSubformSubmissions(this.subformData)?.subscribe({
|
|
70
68
|
next: (response) => {
|
|
@@ -80,6 +78,11 @@ export class SubFormComponent {
|
|
|
80
78
|
error: (error) => { }
|
|
81
79
|
});
|
|
82
80
|
}
|
|
81
|
+
}
|
|
82
|
+
ngOnInit() {
|
|
83
|
+
this.allowCopy = this.subForm.property?.allowCopy;
|
|
84
|
+
this.allowDelete = this.subForm.property?.allowDelete;
|
|
85
|
+
this.copySubFormdata = this.subForm?.copySubformMeta;
|
|
83
86
|
if (this.subForm.property.subFormStructure == 'single') {
|
|
84
87
|
this.bindAnswersToFormElements();
|
|
85
88
|
this.loadComponent();
|
|
@@ -285,4 +288,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
285
288
|
}], pages: [{
|
|
286
289
|
type: Input
|
|
287
290
|
}] } });
|
|
288
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ViLWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZm9ybS1zdWJtaXNzaW9uL3NyYy9xdWVzdGlvbi9zdWItZm9ybS9zdWItZm9ybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mb3JtLXN1Ym1pc3Npb24vc3JjL3F1ZXN0aW9uL3N1Yi1mb3JtL3N1Yi1mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLFFBQVEsRUFDUixLQUFLLEVBRUwsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ3BGLE9BQU8sRUFBYSxlQUFlLEVBQWdCLE1BQU0sMEJBQTBCLENBQUM7QUFHcEYsT0FBTyxFQUFFLEVBQUUsSUFBSSxNQUFNLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFVcEMsTUFBTSxPQUFPLGdCQUFnQjtJQXNCM0IsWUFDVSxrQkFBcUMsRUFDdEMsTUFBaUIsRUFDaEIsV0FBd0IsRUFDeEIsV0FBdUIsRUFDdkIsaUJBQW1DO1FBSm5DLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBbUI7UUFDdEMsV0FBTSxHQUFOLE1BQU0sQ0FBVztRQUNoQixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQUN2QixzQkFBaUIsR0FBakIsaUJBQWlCLENBQWtCO1FBMUJwQyxZQUFPLEdBQVEsRUFBRSxDQUFDO1FBQ2xCLFNBQUksR0FBWSxLQUFLLENBQUM7UUFDckIsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQ3pDLHFCQUFnQixHQUFXLEVBQUUsQ0FBQztRQUM5QixVQUFLLEdBQVUsRUFBRSxD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QW1QQTs7NEZEM05hLGdCQUFnQjtrQkFMNUIsU0FBUzsrQkFDRSxjQUFjO3FOQUtmLE9BQU87c0JBQWYsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0ksYUFBYTtzQkFBdEIsTUFBTTtnQkFDRSxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIEluamVjdG9yLFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3ViZm9ybUNvcHlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvc3ViZm9ybS1jb3B5LnNlcnZpY2UnO1xuaW1wb3J0IHsgTmdiTW9kYWwgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XG5pbXBvcnQgeyBDb25maXJtRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vY29uZmlybS1kaWFsb2cvY29uZmlybS1kaWFsb2cuY29tcG9uZW50JztcbmltcG9ydCB7IE1hdERpYWxvZywgTWF0RGlhbG9nQ29uZmlnLCBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgU3VibWlzc2lvbiB9IGZyb20gJy4uLy4uL21vZGVscy9zdWJtaXNzaW9uLm1vZGVsJztcbmltcG9ydCB7IEFuc3dlciB9IGZyb20gJy4uLy4uL21vZGVscy9hbnN3ZXIubW9kZWwnO1xuaW1wb3J0IHsgdjQgYXMgdXVpZHY0IH0gZnJvbSAndXVpZCc7XG5pbXBvcnQgeyBEYXRhU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2RhdGEuc2VydmljZSc7XG5pbXBvcnQgeyBGb3JtU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2Zvcm0uc2VydmljZSc7XG5pbXBvcnQgeyBXaGVuQ2xhdXNlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3doZW5DbGF1c2Uuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1zdWItZm9ybScsXG4gIHRlbXBsYXRlVXJsOiAnLi9zdWItZm9ybS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3N1Yi1mb3JtLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFN1YkZvcm1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBzdWJGb3JtOiBhbnkgPSB7fTtcbiAgQElucHV0KCkgZWRpdDogYm9vbGVhbiA9IGZhbHNlO1xuICBAT3V0cHV0KCkgc3ViRm9ybUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBASW5wdXQoKSBhY2NlcHRlZExhbmd1YWdlOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgcGFnZXM6IGFueVtdID0gW107XG4gIGRlY29kZWREZXNjcmlwdGlvbjogc3RyaW5nID0gJyc7XG4gIGdyaWQ6IGFueTtcbiAgc3RhdGUhOiBzdHJpbmc7XG4gIGNoaWxkTG9naWNDYWNoZTogeyBba2V5OiBzdHJpbmddOiB7IGNvbXBvbmVudDogUHJvbWlzZTxhbnk+LCBpbmplY3RvcjogSW5qZWN0b3IgfSB9ID0ge307XG4gIGNvbXBvbmVudFRvTG9hZDogYW55O1xuICBpbmplY3RvciE6IEluamVjdG9yO1xuICBjb3B5U3ViRm9ybWRhdGE6YW55O1xuICBzdWJmb3JtRGVzY3JpcHRpb246c3RyaW5nID0gJyc7XG4gIHN1YmZvcm1UaXRsZTogc3RyaW5nPSAnJztcbiAgZWRpdG9yOiBhbnk7XG4gIGFsbG93Q29weTogYm9vbGVhbiA9IGZhbHNlO1xuICBhbGxvd0RlbGV0ZTogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIGRpYWxvZ1JlZj86IE1hdERpYWxvZ1JlZjxDb25maXJtRGlhbG9nQ29tcG9uZW50PjtcbiAgc3ViZm9ybURhdGE6YW55O1xuICBwcmV2aW91c1N1Ym1pc3Npb25zOmFueVtdPVtdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgc3ViZm9ybUNvcHlTZXJ2aWNlOlN1YmZvcm1Db3B5U2VydmljZSxcbiAgICBwdWJsaWMgZGlhbG9nOiBNYXREaWFsb2csXG4gICAgcHJpdmF0ZSBkYXRhU2VydmljZTogRGF0YVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBmb3JtU2VydmljZTpGb3JtU2VydmljZSxcbiAgICBwcml2YXRlIHdoZW5DbGF1c2VTZXJ2aWNlOldoZW5DbGF1c2VTZXJ2aWNlXG4gICl7XG4gICAgdGhpcy5kYXRhU2VydmljZS5zdWJmb3JtJC5zdWJzY3JpYmUoKGRhdGEpPT57XG4gICAgICB0aGlzLnN1YmZvcm1EYXRhID0gZGF0YTsgICAgICBcbiAgICB9KVxuICB9XG5cbiAgbmdPbkluaXQoKSB7ICAgIFxuICAgIHRoaXMuYWxsb3dDb3B5ID0gdGhpcy5zdWJGb3JtLnByb3BlcnR5Py5hbGxvd0NvcHk7XG4gICAgdGhpcy5hbGxvd0RlbGV0ZSA9IHRoaXMuc3ViRm9ybS5wcm9wZXJ0eT8uYWxsb3dEZWxldGU7XG4gICAgdGhpcy5jb3B5U3ViRm9ybWRhdGEgPSB0aGlzLnN1YkZvcm0/LmNvcHlTdWJmb3JtTWV0YTtcbiAgICBcbiAgICBpZiAodGhpcy5zdWJmb3JtRGF0YSAmJiBPYmplY3Qua2V5cyh0aGlzLnN1YmZvcm1EYXRhKS5sZW5ndGggPiAwICYmICF0aGlzLmVkaXQpIHtcbiAgICAgIHRoaXMuZm9ybVNlcnZpY2UuZ2V0U3ViZm9ybVN1Ym1pc3Npb25zKHRoaXMuc3ViZm9ybURhdGEpPy5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OihyZXNwb25zZTphbnkpPT57XG4gICAgICAgICAgdGhpcy5wcmV2aW91c1N1Ym1pc3Npb25zID0gcmVzcG9uc2U7XG4gICAgICAgICAgaWYodGhpcy5zdWJGb3JtLnRpdGxlID09IHRoaXMuc3ViZm9ybURhdGE/LmR1cGxpY2F0ZVN1Ym1pc3Npb24/LnRhcmdldFN1YkZvcm0peyAgICAgIFxuICAgICAgICAgICAgY29uc3QgbG9hZGVkU3VibWlzc2lvbnMgPSB0aGlzLmNyZWF0ZVN1Ym1pc3Npb25zRnJvbUFwaSh0aGlzLnByZXZpb3VzU3VibWlzc2lvbnMsdGhpcy5zdWJGb3JtKTtcbiAgICAgICAgICAgIHRoaXMuc3ViRm9ybSA9IHtcbiAgICAgICAgICAgICAgLi4udGhpcy5zdWJGb3JtLFxuICAgICAgICAgICAgICBzdWJtaXNzaW9uczogbG9hZGVkU3VibWlzc2lvbnNcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBlcnJvcjooZXJyb3I6YW55KT0+e31cbiAgICAgIH0pXG4gICAgfVxuICAgIGlmICh0aGlzLnN1YkZvcm0ucHJvcGVydHkuc3ViRm9ybVN0cnVjdHVyZSA9PSAnc2luZ2xlJykge1xuICAgICAgdGhpcy5iaW5kQW5zd2Vyc1RvRm9ybUVsZW1lbnRzKCk7XG4gICAgICB0aGlzLmxvYWRDb21wb25lbnQoKTtcbiAgICAgIHRoaXMud2hlbkNsYXVzZVNlcnZpY2UuYWRkR3JpZHNGcm9tU3ViZm9ybSh0aGlzLnN1YkZvcm0pO1xuICAgIH1cbiAgfVxuXG4gIGVkaXRvckNyZWF0ZWQoZWRpdG9ySW5zdGFuY2U6IGFueSkge1xuICAgIHRoaXMuZWRpdG9yID0gZWRpdG9ySW5zdGFuY2U7XG4gIH1cbiAgXG4gIC8vIGdldENvbXBvbmVudEZvckNoaWxkTG9naWNzKGdyaWQ6IGFueSwgc3RhdGU6IHN0cmluZywgYW5zd2VyOiBhbnkpOiB7IGNvbXBvbmVudDogUHJvbWlzZTxhbnk+LCBpbmplY3RvcjogSW5qZWN0b3IgfSB7XG4gIC8vICAgY29uc3Qga2V5ID0gSlNPTi5zdHJpbmdpZnkoe2dyaWQsIHN0YXRlfSk7IC8vIG9yIHVzZSBoYXNoXG4gIC8vICAgaWYgKCF0aGlzLmNoaWxkTG9naWNDYWNoZVtrZXldKSB7XG4gIC8vICAgICBjb25zdCBjb21wb25lbnQgPSB0aGlzLmxvYWRGb3JtRWxlbWVudHNDb21wb25lbnQoKTtcbiAgLy8gICAgIGNvbnN0IGluamVjdG9yID0gdGhpcy5jcmVhdGVJbmplY3RvcihncmlkLCBzdGF0ZSwgYW5zd2VyKTtcbiAgLy8gICAgIHRoaXMuY2hpbGRMb2dpY0NhY2hlW2tleV0gPSB7IGNvbXBvbmVudCwgaW5qZWN0b3IgfTtcbiAgLy8gICB9XG4gIC8vICAgcmV0dXJuIHRoaXMuY2hpbGRMb2dpY0NhY2hlW2tleV07XG4gIC8vIH1cblxuICBwcml2YXRlIGFzeW5jIGxvYWRDb21wb25lbnQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5jb21wb25lbnRUb0xvYWQgPSBhd2FpdCB0aGlzLmxvYWRGb3JtRWxlbWVudHNDb21wb25lbnQoKTtcbiAgICB0aGlzLmluamVjdG9yID0gdGhpcy5jcmVhdGVJbmplY3RvcigpO1xuICB9XG4gIFxuICBwcml2YXRlIGFzeW5jIGxvYWRGb3JtRWxlbWVudHNDb21wb25lbnQoKSB7XG4gICAgY29uc3QgeyBGb3JtRWxlbWVudHNDb21wb25lbnQgfSA9IGF3YWl0IGltcG9ydCgnLi4vZm9ybS1lbGVtZW50cy9mb3JtLWVsZW1lbnRzLmNvbXBvbmVudCcpO1xuICAgIHJldHVybiBGb3JtRWxlbWVudHNDb21wb25lbnQ7ICAgIFxuICB9XG5cbiAgY3JlYXRlSW5qZWN0b3IoKTogSW5qZWN0b3Ige1xuICAgIHJldHVybiBJbmplY3Rvci5jcmVhdGUoe1xuICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHsgcHJvdmlkZTogJ2dyaWQnLCB1c2VWYWx1ZTogdGhpcy5ncmlkPy5lbGVtZW50LmNoaWxkTG9naWNzICB9LFxuICAgICAgICB7IHByb3ZpZGU6ICdzdGF0ZScsIHVzZVZhbHVlOiAnY2hpbGQnIH0sXG4gICAgICBdLFxuICAgIH0pO1xuICB9XG5cbiAgZGVjb2RlSHRtbChodG1sOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IHRleHRBcmVhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGV4dGFyZWEnKTtcbiAgICB0ZXh0QXJlYS5pbm5lckhUTUwgPSBodG1sO1xuICAgIHJldHVybiB0ZXh0QXJlYS52YWx1ZTtcbiAgfVxuXG4gIGJpbmRBbnN3ZXJzVG9Gb3JtRWxlbWVudHMoKSB7XG4gICAgY29uc3QgYmluZEFuc3dlcnMgPSAoZm9ybUVsZW1lbnRzOiBhbnlbXSwgc3VibWlzc2lvbnM6IGFueVtdKSA9PiB7XG4gICAgICBmb3JtRWxlbWVudHM/LmZvckVhY2goKGdyaWRzOiBhbnkpID0+IHtcbiAgICAgICAgZ3JpZHM/LmdyaWQ/LmZvckVhY2goXG4gICAgICAgICAgKGZvcm1FbGVtZW50OiB7IGVudGl0eVR5cGU6IHN0cmluZzsgZWxlbWVudDogYW55IH0pID0+IHtcbiAgICAgICAgICAgIGlmIChmb3JtRWxlbWVudC5lbnRpdHlUeXBlID09PSAnUVVFU1RJT04nKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHN1Ym1pc3Npb24gPSBzdWJtaXNzaW9ucy5maW5kKChzdWI6IHsgYW5zd2VyczogYW55W10gfSkgPT5cbiAgICAgICAgICAgICAgICBzdWIuYW5zd2Vycy5zb21lKFxuICAgICAgICAgICAgICAgICAgKGFuczogeyBxdWVzdGlvbklkOiBhbnkgfSkgPT5cbiAgICAgICAgICAgICAgICAgICAgYW5zLnF1ZXN0aW9uSWQgPT09IGZvcm1FbGVtZW50LmVsZW1lbnQuaWRcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgaWYgKHN1Ym1pc3Npb24pIHtcbiAgICAgICAgICAgICAgICBjb25zdCBhbnN3ZXIgPSBzdWJtaXNzaW9uLmFuc3dlcnMuZmluZChcbiAgICAgICAgICAgICAgICAgIChhbnM6IHsgcXVlc3Rpb25JZDogYW55IH0pID0+XG4gICAgICAgICAgICAgICAgICAgIGFucy5xdWVzdGlvbklkID09PSBmb3JtRWxlbWVudC5lbGVtZW50LmlkXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBpZiAoYW5zd2VyKSB7XG4gICAgICAgICAgICAgICAgICBmb3JtRWxlbWVudC5lbGVtZW50LmFuc3dlciA9IGFuc3dlci5hbnN3ZXI7XG4gICAgICAgICAgICAgICAgICBmb3JtRWxlbWVudC5lbGVtZW50LmFuc3dlcklkID0gYW5zd2VyLmFuc3dlcklkO1xuICAgICAgICAgICAgICAgICAgZm9ybUVsZW1lbnQuZWxlbWVudC52YWxpZGF0aW9uID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgIGZvcm1FbGVtZW50LmVsZW1lbnQuYXR0YWNobWVudHMgPSBhbnN3ZXIuYXR0YWNobWVudHM7XG4gICAgICAgICAgICAgICAgICBmb3JtRWxlbWVudC5lbGVtZW50LmFtb3VudEluV29yZHMgPSBhbnN3ZXIuYW1vdW50SW5Xb3JkcztcbiAgICAgICAgICAgICAgICAgIHRoaXMuc3ViRm9ybS5zdWJtaXNzaW9uSWQgPSBzdWJtaXNzaW9uLnN1Ym1pc3Npb25JZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAoZm9ybUVsZW1lbnQuZWxlbWVudC5jaGlsZExvZ2ljcykge1xuICAgICAgICAgICAgICAgIGZvcm1FbGVtZW50LmVsZW1lbnQuY2hpbGRMb2dpY3MuZm9yRWFjaChcbiAgICAgICAgICAgICAgICAgIChjaGlsZExvZ2ljOiB7IHJvd3M6IGFueVtdIH0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgYmluZEFuc3dlcnMoY2hpbGRMb2dpYy5yb3dzLCBzdWJtaXNzaW9ucyk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICAgIH0pO1xuICAgIH07XG5cbiAgICBpZiAodGhpcy5zdWJGb3JtICYmIHRoaXMuc3ViRm9ybS5yb3dzICYmIHRoaXMuc3ViRm9ybS5zdWJtaXNzaW9ucykge1xuICAgICAgYmluZEFuc3dlcnModGhpcy5zdWJGb3JtLnJvd3MsIHRoaXMuc3ViRm9ybS5zdWJtaXNzaW9ucyk7XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlU3ViRm9ybVdpdGhTdWJtaXNzaW9ucyhldmVudDogYW55KSB7XG4gICAgdGhpcy5zdWJGb3JtID0gZXZlbnQ7XG4gICAgdGhpcy5zdWJGb3JtQ2hhbmdlLmVtaXQodGhpcy5zdWJGb3JtKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnN1YkZvcm0uZGVzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMuZGVjb2RlZERlc2NyaXB0aW9uID0gdGhpcy5kZWNvZGVIdG1sKHRoaXMuc3ViRm9ybS5kZXNjcmlwdGlvbik7XG4gICAgfVxuICB9XG5cbiAgY29weVN1YmZvcm0oKSB7XG4gICAgY29uc3QgeyB1cGRhdGVkUGFnZXMgfSA9IHRoaXMuc3ViZm9ybUNvcHlTZXJ2aWNlLmNvcHlTdWJmb3JtKHRoaXMuc3ViRm9ybSwgdGhpcy5wYWdlcyk7XG4gIFxuICAgIHRoaXMucGFnZXMgPSB1cGRhdGVkUGFnZXM7XG4gICAgLy8gRW1pdCB1cGRhdGVkIHBhZ2VzIG9yIHN1YkZvcm1DaGFuZ2UgaWYgbmVlZGVkXG4gIFxuICAgIC8vIE9wdGlvbmFsbHkgcGFzcyBtZXRhIHRvIHBhcmVudCBpZiBuZWVkZWRcbiAgICAvLyB0aGlzLmNvcHlNZXRhLmVtaXQoY29weVN1YkZvcm1NZXRhKTtcbiAgfVxuICBcblxuICB1cGRhdGVTdWJmb3JtRGF0YShldmVudDogYW55LCBzdWJmb3JtSWQ6IHN0cmluZywgZmllbGQ6ICd0aXRsZScgfCAnZGVzY3JpcHRpb24nKSB7ICAgIFxuICAgIGlmKHRoaXMuY29weVN1YkZvcm1kYXRhLmlkID09IHN1YmZvcm1JZCl7XG4gICAgICB0aGlzLmNvcHlTdWJGb3JtZGF0YVtmaWVsZF0gPSBldmVudDtcbiAgICB9XG4gIH1cblxuICBkZWxldGVDb3B5U3ViZm9ybShzdWJmb3JtSWQ6IHN0cmluZykge1xuICAgIGNvbnN0IGRpYWxvZ0NvbmZpZyA9IG5ldyBNYXREaWFsb2dDb25maWcoKTtcbiAgICBkaWFsb2dDb25maWcuZGF0YSA9IHtcbiAgICAgIG1lc3NhZ2VIZWFkZXI6IFwiQXJlIHlvdSBzdXJlP1wiLFxuICAgICAgbWVzc2FnZTogXCJEbyB5b3Ugd2FudCB0byBkZWxldGUgdGhpcyBzdWJmb3JtP1wiXG4gICAgfTtcbiAgICBkaWFsb2dDb25maWcuaGFzQmFja2Ryb3AgPSB0cnVlO1xuICAgIGRpYWxvZ0NvbmZpZy5kaXNhYmxlQ2xvc2UgPSB0cnVlO1xuICBcbiAgICB0aGlzLmRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oQ29uZmlybURpYWxvZ0NvbXBvbmVudCwgZGlhbG9nQ29uZmlnKTtcbiAgXG4gICAgdGhpcy5kaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKHJlc3VsdDogYW55KSA9PiB7XG4gICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgIC8vIDEuIFJlbW92ZSB0aGUgY29waWVkIHN1YmZvcm0gZnJvbSB0aGUgcGFnZXNcbiAgICAgICAgZm9yIChjb25zdCBwYWdlIG9mIHRoaXMucGFnZXMpIHtcbiAgICAgICAgICBjb25zdCByb3dJbmRleCA9IHBhZ2Uucm93cy5maW5kSW5kZXgoKHJvdzogYW55KSA9PlxuICAgICAgICAgICAgcm93LmdyaWQuc29tZSgoZ3JpZDogYW55KSA9PlxuICAgICAgICAgICAgICBncmlkLmVudGl0eVR5cGUgPT09ICdTVUJGT1JNJyAmJlxuICAgICAgICAgICAgICBncmlkLmVsZW1lbnQ/LmlkID09PSBzdWJmb3JtSWQgJiZcbiAgICAgICAgICAgICAgZ3JpZC5lbGVtZW50Py5jb3BpZWRcbiAgICAgICAgICAgIClcbiAgICAgICAgICApO1xuICBcbiAgICAgICAgICBpZiAocm93SW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgICBwYWdlLnJvd3Muc3BsaWNlKHJvd0luZGV4LCAxKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICBcbiAgICAgICAgLy8gMi4gUmVtb3ZlIHRoaXMgc3ViZm9ybUlkIGZyb20gYW55IHN1YmZvcm0ncyBjb3BpZWRGb3JtcyBhcnJheVxuICAgICAgICBmb3IgKGNvbnN0IHBhZ2Ugb2YgdGhpcy5wYWdlcykge1xuICAgICAgICAgIGZvciAoY29uc3Qgcm93IG9mIHBhZ2Uucm93cykge1xuICAgICAgICAgICAgZm9yIChjb25zdCBncmlkIG9mIHJvdy5ncmlkKSB7XG4gICAgICAgICAgICAgIGlmIChncmlkLmVudGl0eVR5cGUgPT09ICdTVUJGT1JNJyAmJiBncmlkLmVsZW1lbnQ/LmNvcGllZEZvcm1zKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaW5kZXggPSBncmlkLmVsZW1lbnQuY29waWVkRm9ybXMuaW5kZXhPZihzdWJmb3JtSWQpO1xuICAgICAgICAgICAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgIGdyaWQuZWxlbWVudC5jb3BpZWRGb3Jtcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgXG4gIGRlbGV0ZU1haW5TdWJmb3JtKHN1YmZvcm1JZDogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgZGlhbG9nQ29uZmlnID0gbmV3IE1hdERpYWxvZ0NvbmZpZygpO1xuICAgIGRpYWxvZ0NvbmZpZy5kYXRhID0ge1xuICAgICAgbWVzc2FnZUhlYWRlcjogXCJBcmUgeW91IHN1cmU/XCIsXG4gICAgICBtZXNzYWdlOiBcIkRvIHlvdSB3YW50IHRvIGRlbGV0ZSB0aGlzIHN1YmZvcm0/XCJcbiAgICB9O1xuICAgIGRpYWxvZ0NvbmZpZy5oYXNCYWNrZHJvcCA9IHRydWU7XG4gICAgZGlhbG9nQ29uZmlnLmRpc2FibGVDbG9zZSA9IHRydWU7XG4gIFxuICAgIHRoaXMuZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihDb25maXJtRGlhbG9nQ29tcG9uZW50LCBkaWFsb2dDb25maWcpO1xuICBcbiAgICB0aGlzLmRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgocmVzdWx0OiBhbnkpID0+IHtcbiAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgZm9yIChjb25zdCBwYWdlIG9mIHRoaXMucGFnZXMpIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IHJvdyBvZiBwYWdlLnJvd3MpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZ3JpZEl0ZW0gb2Ygcm93LmdyaWQpIHtcbiAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIGdyaWRJdGVtLmVudGl0eVR5cGUgPT09ICdTVUJGT1JNJyAmJlxuICAgICAgICAgICAgICAgIGdyaWRJdGVtLmVsZW1lbnQ/LmlkID09PSBzdWJmb3JtSWRcbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgZ3JpZEl0ZW0uZWxlbWVudC5kZWxldGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICByZXR1cm47IC8vIHN0b3AgYWZ0ZXIgdGhlIGZpcnN0IG1hdGNoXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZVN1Ym1pc3Npb25zRnJvbUFwaShhcGlTdWJtaXNzaW9uczogYW55W10sIHN1YmZvcm06IGFueSk6IFN1Ym1pc3Npb25bXSB7XG4gICAgcmV0dXJuIGFwaVN1Ym1pc3Npb25zLm1hcChhcGlTdWJtaXNzaW9uID0+IHtcbiAgICAgIGNvbnN0IGFuc3dlcnM6IEFuc3dlcltdID0gW107XG4gIFxuICAgICAgc3ViZm9ybS5yb3dzLmZvckVhY2goKHJvdzogYW55KSA9PiB7XG4gICAgICAgIHJvdy5ncmlkLmZvckVhY2goKGdyaWRJdGVtOiBhbnkpID0+IHtcbiAgICAgICAgICBpZiAoZ3JpZEl0ZW0uZW50aXR5VHlwZSA9PT0gXCJRVUVTVElPTlwiKSB7XG4gICAgICAgICAgICBjb25zdCBlbGVtZW50ID0gZ3JpZEl0ZW0uZWxlbWVudDtcbiAgICAgICAgICAgIGNvbnN0IHF1ZXN0aW9uS2V5ID0gZWxlbWVudC5xdWVzdGlvbjsgLy8gXCJxMVwiLCBcInEyXCIsIC4uLlxuICBcbiAgICAgICAgICAgIC8vIENoZWNrIGlmIEFQSSBzdWJtaXNzaW9uIGhhcyB0aGlzIHF1ZXN0aW9uXG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIGFwaVN1Ym1pc3Npb24uYW5zd2VycyAmJlxuICAgICAgICAgICAgICBhcGlTdWJtaXNzaW9uLmFuc3dlcnMuaGFzT3duUHJvcGVydHkocXVlc3Rpb25LZXkpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgY29uc3QgYW5zd2VyVmFsdWUgPSBhcGlTdWJtaXNzaW9uLmFuc3dlcnNbcXVlc3Rpb25LZXldO1xuICBcbiAgICAgICAgICAgICAgYW5zd2Vycy5wdXNoKHtcbiAgICAgICAgICAgICAgICBxdWVzdGlvbklkOiBlbGVtZW50LmlkLFxuICAgICAgICAgICAgICAgIGFuc3dlcjogYW5zd2VyVmFsdWVcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICBcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHN1Ym1pc3Npb25JZDogdXVpZHY0KCksXG4gICAgICAgIHNvdXJjZVN1Ym1pc3Npb25JZDogYXBpU3VibWlzc2lvbi5zdWJtaXNzaW9uSWQsIFxuICAgICAgICBhbnN3ZXJzLFxuICAgICAgICBjb25maWd1cmF0aW9uOiB7XG4gICAgICAgICAgaXNEZWZhdWx0OiBmYWxzZSxcbiAgICAgICAgICBhbGxvd0RlbGV0ZTogdHJ1ZVxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH0pO1xuICB9XG4gIFxuICBcbiAgXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRpYWxvZ1JlZikge1xuICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoKTtcbiAgICB9XG4gIH1cbiAgXG4gIFxufVxuIiwiPGRpdlxuICBjbGFzcz1cIm91dGVyLWNvbnRhaW5lciBtYi00IHB4LTNcIlxuICBbaWRdPVwiJ3F1ZXN0aW9uLScgKyBzdWJGb3JtLmlkXCJcbiAgW2F0dHIubmFtZV09XCJzdWJGb3JtLnRlc3RFbGVtZW50TmFtZVwiXG4gICpuZ0lmPVwiIXN1YkZvcm0uZGVsZXRlZFwiXG4+XG4gIDxkaXYgY2xhc3M9XCJib2R5IHB5LTEgcHgtMVwiPlxuICAgIDxkaXYgY2xhc3M9XCJ0YWItY29udGVudCBwdC00IHBiLTMgcHgtM1wiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFzdWJGb3JtLmNvcGllZDsgZWxzZSBjb3B5U3ViZm9ybUNvbnRhaW5lclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic3ViZm9ybS1oZWFkZXJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0YS1jb250YWluZXJcIj5cbiAgICAgICAgICAgIDxwIGNsYXNzPVwic2VjdGlvblRpdGxlXCI+e3sgc3ViRm9ybS50aXRsZSB9fTwvcD5cbiAgICAgICAgICAgIDxwIFtpbm5lckhUTUxdPVwiZGVjb2RlZERlc2NyaXB0aW9uXCIgY2xhc3M9XCJkZXNjcmlwdGlvblwiPjwvcD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGdhcC0zXCI+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwiZmluYWxTY29yZVwiXG4gICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBzIG9mIHN1YkZvcm0uc2NvcmVzXCJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgIGdvb2RTY29yZTogcy5zY29yZVR5cGUgPT09ICdHT09EX1NDT1JFJyxcbiAgICAgICAgICAgICAgICBiYWRTY29yZTogcy5zY29yZVR5cGUgPT09ICdCQURfU0NPUkUnXG4gICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNjb3JlVGl0bGVcIj5TY29yZTwvc3Bhbj5cbiAgICAgICAgICAgICAgPHAgY2xhc3M9XCJtYi0wXCI+e3sgcy5zY29yZSB9fTwvcD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImljb24tY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICBzcmM9XCJhc3NldHMvaWNvbnMvY29weS1pY29uLnN2Z1wiXG4gICAgICAgICAgICAgICAgYWx0PVwiY29weS1pY29uXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiY29weVN1YmZvcm0oKVwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJhbGxvd0NvcHlcIlxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgc3JjPVwiYXNzZXRzL2ljb25zL2RlbGV0ZS1pY29uLnN2Z1wiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJkZWxldGUtaWNvbiBtcy0zXCJcbiAgICAgICAgICAgICAgICBhbHQ9XCJkZWxldGUgaWNvblwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImRlbGV0ZU1haW5TdWJmb3JtKHN1YkZvcm0uaWQpXCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImFsbG93RGVsZXRlXCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLXRlbXBsYXRlICNjb3B5U3ViZm9ybUNvbnRhaW5lcj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kIGdhcC00XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZpbmFsU2NvcmVcIiAqbmdJZj1cInN1YkZvcm0uc2NvcmVcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2NvcmVUaXRsZVwiPlNjb3JlPC9zcGFuPlxuICAgICAgICAgICAgPHAgY2xhc3M9XCJtYi0wXCI+e3sgc3ViRm9ybS5zY29yZSB9fTwvcD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaWNvbi1jb250YWluZXJcIiAoY2xpY2spPVwiZGVsZXRlQ29weVN1YmZvcm0oc3ViRm9ybS5pZClcIj5cbiAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgc3JjPVwiYXNzZXRzL2ljb25zL2RlbGV0ZS1pY29uLnN2Z1wiXG4gICAgICAgICAgICAgIGNsYXNzPVwiZGVsZXRlLWljb25cIlxuICAgICAgICAgICAgICBhbHQ9XCJkZWxldGUgaWNvblwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvcHktc3ViZm9ybS1jb250YWluZXIgbWItM1wiPlxuICAgICAgICAgIDxwPlRpdGxlPC9wPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzdWJmb3JtVGl0bGVcIlxuICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwidXBkYXRlU3ViZm9ybURhdGEoJGV2ZW50LCBzdWJGb3JtLmlkLCAndGl0bGUnKVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgICA8cCBjbGFzcz1cIm10LTNcIj5EZXNjcmlwdGlvbjwvcD5cbiAgICAgICAgICA8cXVpbGwtZWRpdG9yXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cInN1YmZvcm1EZXNjcmlwdGlvblwiXG4gICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJcbiAgICAgICAgICAgICAgdXBkYXRlU3ViZm9ybURhdGEoJGV2ZW50LCBzdWJGb3JtLmlkLCAnZGVzY3JpcHRpb24nKVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIChvbkVkaXRvckNyZWF0ZWQpPVwiZWRpdG9yQ3JlYXRlZCgkZXZlbnQpXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZWRpdG9yXCJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiXCJcbiAgICAgICAgICA+PC9xdWlsbC1lZGl0b3I+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgPGRpdiAqbmdJZj1cInN1YkZvcm0ucHJvcGVydHkuc3ViRm9ybVN0cnVjdHVyZSA9PSAnbXVsdGlwbGUnXCI+XG4gICAgICAgIDxsaWItbXVsdGlwbGUtc3ViZm9ybVxuICAgICAgICAgICpuZ0lmPVwic3ViRm9ybS5wcm9wZXJ0eS5zdWJGb3JtVHlwZSA9PT0gJ3RhYmxlJ1wiXG4gICAgICAgICAgW3N1YkZvcm1dPVwic3ViRm9ybVwiXG4gICAgICAgICAgKHN1YkZvcm1DaGFuZ2UpPVwidXBkYXRlU3ViRm9ybVdpdGhTdWJtaXNzaW9ucygkZXZlbnQpXCJcbiAgICAgICAgICBbYWNjZXB0ZWRMYW5ndWFnZV09XCJhY2NlcHRlZExhbmd1YWdlXCJcbiAgICAgICAgPjwvbGliLW11bHRpcGxlLXN1YmZvcm0+XG5cbiAgICAgICAgPGxpYi1pbmxpbmUtbXVsdGlwbGUtc3ViZm9ybVxuICAgICAgICAgICpuZ0lmPVwic3ViRm9ybS5wcm9wZXJ0eS5zdWJGb3JtVHlwZSA9PT0gJ2lubGluZSdcIlxuICAgICAgICAgIFtzdWJGb3JtXT1cInN1YkZvcm1cIlxuICAgICAgICAgIChzdWJGb3JtQ2hhbmdlKT1cInVwZGF0ZVN1YkZvcm1XaXRoU3VibWlzc2lvbnMoJGV2ZW50KVwiXG4gICAgICAgICAgW2FjY2VwdGVkTGFuZ3VhZ2VdPVwiYWNjZXB0ZWRMYW5ndWFnZVwiXG4gICAgICAgID48L2xpYi1pbmxpbmUtbXVsdGlwbGUtc3ViZm9ybT5cbiAgICAgICAgPGxpYi1jYXJkLXN1YmZvcm1cbiAgICAgICAgICAqbmdJZj1cInN1YkZvcm0ucHJvcGVydHkuc3ViRm9ybVR5cGUgPT09ICdjYXJkJ1wiXG4gICAgICAgICAgW3N1YkZvcm1dPVwic3ViRm9ybVwiXG4gICAgICAgICAgW2FjY2VwdGVkTGFuZ3VhZ2VdPVwiYWNjZXB0ZWRMYW5ndWFnZVwiXG4gICAgICAgICAgKHN1YkZvcm1DaGFuZ2UpPVwidXBkYXRlU3ViRm9ybVdpdGhTdWJtaXNzaW9ucygkZXZlbnQpXCJcbiAgICAgICAgICBbZWRpdF09XCJlZGl0XCJcbiAgICAgICAgPjwvbGliLWNhcmQtc3ViZm9ybT5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiAqbmdJZj1cInN1YkZvcm0ucHJvcGVydHkuc3ViRm9ybVN0cnVjdHVyZSA9PSAnc2luZ2xlJ1wiPlxuICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCByb3cgb2Ygc3ViRm9ybS5yb3dzXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgZ3JpZCBvZiByb3cuZ3JpZFwiXG4gICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsgJ3dpZHRoLiUnOiBncmlkLmVsZW1lbnQuY291bnQgKiAoMTAwIC8gMTIpIH1cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZ3JpZC5lbnRpdHlUeXBlID09PSAnUVVFU1RJT04nICYmIGdyaWQuc2hvd1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgW25nU3dpdGNoXT1cImdyaWQuZWxlbWVudC5mb3JtRWxlbWVudC5lbGVtZW50VHlwZVwiPlxuICAgICAgICAgICAgICAgICAgPGxpYi1jaGVjay1ib3gtZmllbGRzXG4gICAgICAgICAgICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCInQ0hFQ0tfQk9YJ1wiXG4gICAgICAgICAgICAgICAgICAgIFtxdWVzdGlvbl09XCJncmlkLmVsZW1lbnRcIlxuICAgICAgICAgICAgICAgICAgPjwvbGliLWNoZWNrLWJveC1maWVsZHM+XG4gICAgICAgICAgICAgICAgICA8bGliLWRhdGUtdGltZS1maWVsZHNcbiAgICAgICAgICAgICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidEQVRFX1RJTUUnXCJcbiAgICAgICAgICAgICAgICAgICAgW3F1ZXN0aW9uXT1cImdyaWQuZWxlbWVudFwiXG4gICAgICAgICAgICAgICAgICA+PC9saWItZGF0ZS10aW1lLWZpZWxkcz5cbiAgICAgICAgICAgICAgICAgIDxsaWItZHJvcC1kb3duLWZpZWxkc1xuICAgICAgICAgICAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ0RST1BfRE9XTidcIlxuICAgICAgICAgICAgICAgICAgICBbcXVlc3Rpb25dPVwiZ3JpZC5lbGVtZW50XCJcbiAgICAgICAgICAgICAgICAgID48L2xpYi1kcm9wLWRvd24tZmllbGRzPlxuICAgICAgICAgICAgICAgICAgPGxpYi1maWxlLXBpY2tlci1maWVsZHNcbiAgICAgICAgICAgICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidGSUxFX1BJQ0tFUidcIlxuICAgICAgICAgICAgICAgICAgICBbcXVlc3Rpb25dPVwiZ3JpZC5lbGVtZW50XCJcbiAgICAgICAgICAgICAgICAgID48L2xpYi1maWxlLXBpY2tlci1maWVsZHM+XG4gICAgICAgICAgICAgICAgICA8bGliLWxvY2F0aW9uLWZpZWxkc1xuICAgICAgICAgICAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ0xPQ0FUSU9OJ1wiXG4gICAgICAgICAgICAgICAgICAgIFtxdWVzdGlvbl09XCJncmlkLmVsZW1lbnRcIlxuICAgICAgICAgICAgICAgICAgPjwvbGliLWxvY2F0aW9uLWZpZWxkcz5cbiAgICAgICAgICAgICAgICAgIDxsaWItbWFpbC1maWVsZHNcbiAgICAgICAgICAgICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidFTUFJTCdcIlxuICAgICAgICAgICAgICAgICAgICBbcXVlc3Rpb25dPVwiZ3JpZC5lbGVtZW50XCJcbiAgICAgICAgICAgICAgICAgID48L2xpYi1tYWlsLWZpZWxkcz5cbiAgICAgICAgICAgICAgICAgIDxsaWItbW9iaWxlLWZpZWxkc1xuICAgICAgICAgICAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ01PQklMRSdcIlxuICAgICAgICAgICAgICAgICAgICBbcXVlc3Rpb25dPVwiZ3JpZC5lbGVtZW50XCJcbiAgICAgICAgICAgICAgICAgID48L2xpYi1tb2JpbGUtZmllbGRzPlxuICAgICAgICAgICAgICAgICAgPGxpYi1udW1iZXItZmllbGRzXG4gICAgICAgICAgICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCInTlVNQkVSJ1wiXG4gICAgICAgICAgICAgICAgICAgIFtxdWVzdGlvbl09XCJncmlkLmVsZW1lbnRcIlxuICAgICAgICAgICAgICAgICAgICBbcm93SWRdPVwiJzAnXCJcbiAgICAgICAgICAgICAgICAgID48L2xpYi1udW1iZXItZmllbGRzPlxuICAgICAgICAgICAgICAgICAgPGxpYi1wYXNzd29yZC1maWVsZHNcbiAgICAgICAgICAgICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidQQVNTV09SRCdcIlxuICAgICAgICAgICAgICAgICAgICBbcXVlc3Rpb25dPVwiZ3JpZC5lbGVtZW50XCJcbiAgICAgICAgICAgICAgICAgID48L2xpYi1wYXNzd29yZC1maWVsZHM+XG4gICAgICAgICAgICAgICAgICA8bGliLXJhZGlvLWJ1dHRvbi1maWVsZHNcbiAgICAgICAgICAgICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidSQURJT19CVVRUT04nXCJcbiAgICAgICAgICAgICAgICAgICAgW3F1ZXN0aW9uXT1cImdyaWQuZWxlbWVudFwiXG4gICAgICAgICAgICAgICAgICA+PC9saWItcmFkaW8tYnV0dG9uLWZpZWxkcz5cbiAgICAgICAgICAgICAgICAgIDxsaWItcmljaC10ZXh0LWVkaXRvci1maWVsZHNcbiAgICAgICAgICAgICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidSSUNIX1RFWFRfRURJVE9SJ1wiXG4gICAgICAgICAgICAgICAgICAgIFtxdWVzdGlvbl09XCJncmlkLmVsZW1lbnRcIlxuICAgICAgICAgICAgICAgICAgPjwvbGliLXJpY2gtdGV4dC1lZGl0b3ItZmllbGRzPlxuICAgICAgICAgICAgICAgICAgPGxpYi1zZWxlY3Rpb24tbWF0cml4LWZpZWxkc1xuICAgICAgICAgICAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ1NFTEVDVElPTl9NQVRSSVgnXCJcbiAgICAgICAgICAgICAgICAgICAgW3F1ZXN0aW9uXT1cImdyaWQuZWxlbWVudFwiXG4gICAgICAgICAgICAgICAgICAgIFthY2NlcHRlZExhbmd1YWdlXT1cImFjY2VwdGVkTGFuZ3VhZ2VcIlxuICAgICAgICAgICAgICAgICAgPjwvbGliLXNlbGVjdGlvbi1tYXRyaXgtZmllbGRzPlxuICAgICAgICAgICAgICAgICAgPGxpYi1zaWduYXR1cmUtZmllbGRzXG4gICAgICAgICAgICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCInU0lHTkFUVVJFJ1wiXG4gICAgICAgICAgICAgICAgICAgIFtxdWVzdGlvbl09XCJncmlkLmVsZW1lbnRcIlxuICAgICAgICAgICAgICAgICAgPjwvbGliLXNpZ25hdHVyZS1maWVsZHM+XG4gICAgICAgICAgICAgICAgICA8bGliLXNsaWRlci1maWVsZHNcbiAgICAgICAgICAgICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidTTElERVInXCJcbiAgICAgICAgICAgICAgICAgICAgW3F1ZXN0aW9uXT1cImdyaWQuZWxlbWVudFwiXG4gICAgICAgICAgICAgICAgICA+PC9saWItc2xpZGVyLWZpZWxkcz5cbiAgICAgICAgICAgICAgICAgIDxsaWItdGVybXMtYW5kLWNvbmRpdGlvbi1maWVsZHNcbiAgICAgICAgICAgICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidURVJNU19BTkRfQ09ORElUSU9OJ1wiXG4gICAgICAgICAgICAgICAgICAgIFtxdWVzdGlvbl09XCJncmlkLmVsZW1lbnRcIlxuICAgICAgICAgICAgICAgICAgPjwvbGliLXRlcm1zLWFuZC1jb25kaXRpb24tZmllbGRzPlxuICAgICAgICAgICAgICAgICAgPGxpYi10ZXh0LWFyZWEtZmllbGRzXG4gICAgICAgICAgICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCInVEVYVF9BUkVBJ1wiXG4gICAgICAgICAgICAgICAgICAgIFtxdWVzdGlvbl09XCJncmlkLmVsZW1lbnRcIlxuICAgICAgICAgICAgICAgICAgPjwvbGliLXRleHQtYXJlYS1maWVsZHM+XG4gICAgICAgICAgICAgICAgICA8bGliLXRleHQtZmllbGRzXG4gICAgICAgICAgICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCInVEVYVF9CT1gnXCJcbiAgICAgICAgICAgICAgICAgICAgW3F1ZXN0aW9uXT1cImdyaWQuZWxlbWVudFwiXG4gICAgICAgICAgICAgICAgICA+PC9saWItdGV4dC1maWVsZHM+XG4gICAgICAgICAgICAgICAgICA8bGliLXRvZ2dsZS1zd2l0Y2gtZmllbGRzXG4gICAgICAgICAgICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCInVE9HR0xFX1NXSVRDSCdcIlxuICAgICAgICAgICAgICAgICAgICBbcXVlc3Rpb25dPVwiZ3JpZC5lbGVtZW50XCJcbiAgICAgICAgICAgICAgICAgICAgW2FjY2VwdGVkTGFuZ3VhZ2VdPVwiYWNjZXB0ZWRMYW5ndWFnZVwiXG4gICAgICAgICAgICAgICAgICA+PC9saWItdG9nZ2xlLXN3aXRjaC1maWVsZHM+XG4gICAgICAgICAgICAgICAgICA8bGliLXVybC1maWVsZHNcbiAgICAgICAgICAgICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidVUkwnXCJcbiAgICAgICAgICAgICAgICAgICAgW3F1ZXN0aW9uXT1cImdyaWQuZWxlbWVudFwiXG4gICAgICAgICAgICAgICAgICA+PC9saWItdXJsLWZpZWxkcz5cbiAgICAgICAgICAgICAgICAgIDxsaWItY3VycmVuY3ktZmllbGRzXG4gICAgICAgICAgICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCInQ1VSUkVOQ1knXCJcbiAgICAgICAgICAgICAgICAgICAgW3F1ZXN0aW9uXT1cImdyaWQuZWxlbWVudFwiXG4gICAgICAgICAgICAgICAgICA+PC9saWItY3VycmVuY3ktZmllbGRzPlxuICAgICAgICAgICAgICAgICAgPGxpYi1hZ2dyZWdhdGUtZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidBR0dSRUdBVEVfRlVOQ1RJT04nXCJcbiAgICAgICAgICAgICAgICAgICAgW3F1ZXN0aW9uXT1cImdyaWQuZWxlbWVudFwiXG4gICAgICAgICAgICAgICAgICAgIFtyb3dJZF09XCInMCdcIlxuICAgICAgICAgICAgICAgICAgPjwvbGliLWFnZ3JlZ2F0ZS1mdW5jdGlvbj5cbiAgICAgICAgICAgICAgICAgIDxsaWItaGlkZGVuLWZpZWxkXG4gICAgICAgICAgICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCInSElEREVOX0ZJRUxEJ1wiXG4gICAgICAgICAgICAgICAgICAgIFtxdWVzdGlvbl09XCJncmlkLmVsZW1lbnRcIlxuICAgICAgICAgICAgICAgICAgPjwvbGliLWhpZGRlbi1maWVsZD5cbiAgICAgICAgICAgICAgICAgIDxsaWItaWZyYW1lLWZpZWxkc1xuICAgICAgICAgICAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ0lGUkFNRV9XSURHRVQnXCJcbiAgICAgICAgICAgICAgICAgICAgW3F1ZXN0aW9uXT1cImdyaWQuZWxlbWVudFwiXG4gICAgICAgICAgICAgICAgICA+PC9saWItaWZyYW1lLWZpZWxkcz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDwhLS0gPG5nLWNvbnRhaW5lciAqbmdJZj1cImdyaWQuZWxlbWVudC5jaGlsZExvZ2ljc1wiPlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImdldENvbXBvbmVudEZvckNoaWxkTG9naWNzKGdyaWQuZWxlbWVudC5jaGlsZExvZ2ljcywgJ2NoaWxkJywgZ3JpZC5lbGVtZW50LmFuc3dlcikgYXMgb3V0bGV0XCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nQ29tcG9uZW50T3V0bGV0PVwib3V0bGV0LmNvbXBvbmVudCB8IGFzeW5jOyBpbmplY3Rvcjogb3V0bGV0LmluamVjdG9yXCI+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+IC0tPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJncmlkPy5lbGVtZW50Py5jaGlsZExvZ2ljc1wiPlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbXBvbmVudFRvTG9hZFwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgKm5nQ29tcG9uZW50T3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRUb0xvYWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBpbnB1dHM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZDogZ3JpZD8uZWxlbWVudD8uY2hpbGRMb2dpY3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFuc3dlcjogZ3JpZD8uZWxlbWVudD8uYW5zd2VyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZTogJ2NoaWxkJ1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZ3JpZC5lbnRpdHlUeXBlID09PSAnU0VDVElPTicgJiYgZ3JpZC5zaG93XCI+XG4gICAgICAgICAgICAgICAgPGxpYi1zZWN0aW9uLWZpZWxkc1xuICAgICAgICAgICAgICAgICAgW3NlY3Rpb25dPVwiZ3JpZC5lbGVtZW50XCJcbiAgICAgICAgICAgICAgICA+PC9saWItc2VjdGlvbi1maWVsZHM+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
291
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ViLWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZm9ybS1zdWJtaXNzaW9uL3NyYy9xdWVzdGlvbi9zdWItZm9ybS9zdWItZm9ybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mb3JtLXN1Ym1pc3Npb24vc3JjL3F1ZXN0aW9uL3N1Yi1mb3JtL3N1Yi1mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLFFBQVEsRUFDUixLQUFLLEVBRUwsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ3BGLE9BQU8sRUFBYSxlQUFlLEVBQWdCLE1BQU0sMEJBQTBCLENBQUM7QUFHcEYsT0FBTyxFQUFFLEVBQUUsSUFBSSxNQUFNLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFVcEMsTUFBTSxPQUFPLGdCQUFnQjtJQXNCM0IsWUFDVSxrQkFBcUMsRUFDdEMsTUFBaUIsRUFDaEIsV0FBd0IsRUFDeEIsV0FBdUIsRUFDdkIsaUJBQW1DO1FBSm5DLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBbUI7UUFDdEMsV0FBTSxHQUFOLE1BQU0sQ0FBVztRQUNoQixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQUN2QixzQkFBaUIsR0FBakIsaUJBQWlCLENBQWtCO1FBMUJwQyxZQUFPLEdBQVEsRUFBRSxDQUFDO1FBQ2xCLFNBQUksR0FBWSxLQUFLLENBQUM7UUFDckIsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQ3pDLHFCQUFnQixHQUFXLEVBQUUsQ0FBQztRQUM5QixVQUFLLEdBQVUsRUFBRSxD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O1NBQ3hCO0lBQ0gsQ0FBQzsrR0E1U1UsZ0JBQWdCO21HQUFoQixnQkFBZ0IsME5DeEI3QixtOVRBbVBBOzs0RkQzTmEsZ0JBQWdCO2tCQUw1QixTQUFTOytCQUNFLGNBQWM7cU5BS2YsT0FBTztzQkFBZixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDSSxhQUFhO3NCQUF0QixNQUFNO2dCQUNFLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5qZWN0b3IsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJmb3JtQ29weVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9zdWJmb3JtLWNvcHkuc2VydmljZSc7XG5pbXBvcnQgeyBOZ2JNb2RhbCB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcbmltcG9ydCB7IENvbmZpcm1EaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi9jb25maXJtLWRpYWxvZy9jb25maXJtLWRpYWxvZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgTWF0RGlhbG9nLCBNYXREaWFsb2dDb25maWcsIE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBTdWJtaXNzaW9uIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3N1Ym1pc3Npb24ubW9kZWwnO1xuaW1wb3J0IHsgQW5zd2VyIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2Fuc3dlci5tb2RlbCc7XG5pbXBvcnQgeyB2NCBhcyB1dWlkdjQgfSBmcm9tICd1dWlkJztcbmltcG9ydCB7IERhdGFTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZGF0YS5zZXJ2aWNlJztcbmltcG9ydCB7IEZvcm1TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZm9ybS5zZXJ2aWNlJztcbmltcG9ydCB7IFdoZW5DbGF1c2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvd2hlbkNsYXVzZS5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLXN1Yi1mb3JtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3N1Yi1mb3JtLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc3ViLWZvcm0uY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgU3ViRm9ybUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIHN1YkZvcm06IGFueSA9IHt9O1xuICBASW5wdXQoKSBlZGl0OiBib29sZWFuID0gZmFsc2U7XG4gIEBPdXRwdXQoKSBzdWJGb3JtQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBJbnB1dCgpIGFjY2VwdGVkTGFuZ3VhZ2U6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBwYWdlczogYW55W10gPSBbXTtcbiAgZGVjb2RlZERlc2NyaXB0aW9uOiBzdHJpbmcgPSAnJztcbiAgZ3JpZDogYW55O1xuICBzdGF0ZSE6IHN0cmluZztcbiAgY2hpbGRMb2dpY0NhY2hlOiB7IFtrZXk6IHN0cmluZ106IHsgY29tcG9uZW50OiBQcm9taXNlPGFueT4sIGluamVjdG9yOiBJbmplY3RvciB9IH0gPSB7fTtcbiAgY29tcG9uZW50VG9Mb2FkOiBhbnk7XG4gIGluamVjdG9yITogSW5qZWN0b3I7XG4gIGNvcHlTdWJGb3JtZGF0YTphbnk7XG4gIHN1YmZvcm1EZXNjcmlwdGlvbjpzdHJpbmcgPSAnJztcbiAgc3ViZm9ybVRpdGxlOiBzdHJpbmc9ICcnO1xuICBlZGl0b3I6IGFueTtcbiAgYWxsb3dDb3B5OiBib29sZWFuID0gZmFsc2U7XG4gIGFsbG93RGVsZXRlOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgZGlhbG9nUmVmPzogTWF0RGlhbG9nUmVmPENvbmZpcm1EaWFsb2dDb21wb25lbnQ+O1xuICBzdWJmb3JtRGF0YTphbnk7XG4gIHByZXZpb3VzU3VibWlzc2lvbnM6YW55W109W107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBzdWJmb3JtQ29weVNlcnZpY2U6U3ViZm9ybUNvcHlTZXJ2aWNlLFxuICAgIHB1YmxpYyBkaWFsb2c6IE1hdERpYWxvZyxcbiAgICBwcml2YXRlIGRhdGFTZXJ2aWNlOiBEYXRhU2VydmljZSxcbiAgICBwcml2YXRlIGZvcm1TZXJ2aWNlOkZvcm1TZXJ2aWNlLFxuICAgIHByaXZhdGUgd2hlbkNsYXVzZVNlcnZpY2U6V2hlbkNsYXVzZVNlcnZpY2VcbiAgKXtcbiAgICB0aGlzLmRhdGFTZXJ2aWNlLnN1YmZvcm0kLnN1YnNjcmliZSgoZGF0YSk9PntcbiAgICAgIHRoaXMuc3ViZm9ybURhdGEgPSBkYXRhO1xuICAgICAgdGhpcy5sb2FkUHJldmlvdXNTdWJtaXNzaW9ucygpOyAgICAgIFxuICAgIH0pXG4gIH1cblxuICBsb2FkUHJldmlvdXNTdWJtaXNzaW9ucygpe1xuICAgIGlmICh0aGlzLnN1YmZvcm1EYXRhICYmIE9iamVjdC5rZXlzKHRoaXMuc3ViZm9ybURhdGEpLmxlbmd0aCA+IDAgJiYgIXRoaXMuZWRpdCkge1xuICAgICAgdGhpcy5mb3JtU2VydmljZS5nZXRTdWJmb3JtU3VibWlzc2lvbnModGhpcy5zdWJmb3JtRGF0YSk/LnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6KHJlc3BvbnNlOmFueSk9PntcbiAgICAgICAgICB0aGlzLnByZXZpb3VzU3VibWlzc2lvbnMgPSByZXNwb25zZTtcbiAgICAgICAgICBpZih0aGlzLnN1YkZvcm0udGl0bGUgPT0gdGhpcy5zdWJmb3JtRGF0YT8uZHVwbGljYXRlU3VibWlzc2lvbj8udGFyZ2V0U3ViRm9ybSl7ICAgICAgXG4gICAgICAgICAgICBjb25zdCBsb2FkZWRTdWJtaXNzaW9ucyA9IHRoaXMuY3JlYXRlU3VibWlzc2lvbnNGcm9tQXBpKHRoaXMucHJldmlvdXNTdWJtaXNzaW9ucyx0aGlzLnN1YkZvcm0pO1xuICAgICAgICAgICAgdGhpcy5zdWJGb3JtID0ge1xuICAgICAgICAgICAgICAuLi50aGlzLnN1YkZvcm0sXG4gICAgICAgICAgICAgIHN1Ym1pc3Npb25zOiBsb2FkZWRTdWJtaXNzaW9uc1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOihlcnJvcjphbnkpPT57fVxuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpIHsgICAgXG4gICAgdGhpcy5hbGxvd0NvcHkgPSB0aGlzLnN1YkZvcm0ucHJvcGVydHk/LmFsbG93Q29weTtcbiAgICB0aGlzLmFsbG93RGVsZXRlID0gdGhpcy5zdWJGb3JtLnByb3BlcnR5Py5hbGxvd0RlbGV0ZTtcbiAgICB0aGlzLmNvcHlTdWJGb3JtZGF0YSA9IHRoaXMuc3ViRm9ybT8uY29weVN1YmZvcm1NZXRhO1xuICAgIFxuICAgIFxuICAgIGlmICh0aGlzLnN1YkZvcm0ucHJvcGVydHkuc3ViRm9ybVN0cnVjdHVyZSA9PSAnc2luZ2xlJykge1xuICAgICAgdGhpcy5iaW5kQW5zd2Vyc1RvRm9ybUVsZW1lbnRzKCk7XG4gICAgICB0aGlzLmxvYWRDb21wb25lbnQoKTtcbiAgICAgIHRoaXMud2hlbkNsYXVzZVNlcnZpY2UuYWRkR3JpZHNGcm9tU3ViZm9ybSh0aGlzLnN1YkZvcm0pO1xuICAgIH1cbiAgfVxuXG4gIGVkaXRvckNyZWF0ZWQoZWRpdG9ySW5zdGFuY2U6IGFueSkge1xuICAgIHRoaXMuZWRpdG9yID0gZWRpdG9ySW5zdGFuY2U7XG4gIH1cbiAgXG4gIC8vIGdldENvbXBvbmVudEZvckNoaWxkTG9naWNzKGdyaWQ6IGFueSwgc3RhdGU6IHN0cmluZywgYW5zd2VyOiBhbnkpOiB7IGNvbXBvbmVudDogUHJvbWlzZTxhbnk+LCBpbmplY3RvcjogSW5qZWN0b3IgfSB7XG4gIC8vICAgY29uc3Qga2V5ID0gSlNPTi5zdHJpbmdpZnkoe2dyaWQsIHN0YXRlfSk7IC8vIG9yIHVzZSBoYXNoXG4gIC8vICAgaWYgKCF0aGlzLmNoaWxkTG9naWNDYWNoZVtrZXldKSB7XG4gIC8vICAgICBjb25zdCBjb21wb25lbnQgPSB0aGlzLmxvYWRGb3JtRWxlbWVudHNDb21wb25lbnQoKTtcbiAgLy8gICAgIGNvbnN0IGluamVjdG9yID0gdGhpcy5jcmVhdGVJbmplY3RvcihncmlkLCBzdGF0ZSwgYW5zd2VyKTtcbiAgLy8gICAgIHRoaXMuY2hpbGRMb2dpY0NhY2hlW2tleV0gPSB7IGNvbXBvbmVudCwgaW5qZWN0b3IgfTtcbiAgLy8gICB9XG4gIC8vICAgcmV0dXJuIHRoaXMuY2hpbGRMb2dpY0NhY2hlW2tleV07XG4gIC8vIH1cblxuICBwcml2YXRlIGFzeW5jIGxvYWRDb21wb25lbnQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5jb21wb25lbnRUb0xvYWQgPSBhd2FpdCB0aGlzLmxvYWRGb3JtRWxlbWVudHNDb21wb25lbnQoKTtcbiAgICB0aGlzLmluamVjdG9yID0gdGhpcy5jcmVhdGVJbmplY3RvcigpO1xuICB9XG4gIFxuICBwcml2YXRlIGFzeW5jIGxvYWRGb3JtRWxlbWVudHNDb21wb25lbnQoKSB7XG4gICAgY29uc3QgeyBGb3JtRWxlbWVudHNDb21wb25lbnQgfSA9IGF3YWl0IGltcG9ydCgnLi4vZm9ybS1lbGVtZW50cy9mb3JtLWVsZW1lbnRzLmNvbXBvbmVudCcpO1xuICAgIHJldHVybiBGb3JtRWxlbWVudHNDb21wb25lbnQ7ICAgIFxuICB9XG5cbiAgY3JlYXRlSW5qZWN0b3IoKTogSW5qZWN0b3Ige1xuICAgIHJldHVybiBJbmplY3Rvci5jcmVhdGUoe1xuICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHsgcHJvdmlkZTogJ2dyaWQnLCB1c2VWYWx1ZTogdGhpcy5ncmlkPy5lbGVtZW50LmNoaWxkTG9naWNzICB9LFxuICAgICAgICB7IHByb3ZpZGU6ICdzdGF0ZScsIHVzZVZhbHVlOiAnY2hpbGQnIH0sXG4gICAgICBdLFxuICAgIH0pO1xuICB9XG5cbiAgZGVjb2RlSHRtbChodG1sOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IHRleHRBcmVhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGV4dGFyZWEnKTtcbiAgICB0ZXh0QXJlYS5pbm5lckhUTUwgPSBodG1sO1xuICAgIHJldHVybiB0ZXh0QXJlYS52YWx1ZTtcbiAgfVxuXG4gIGJpbmRBbnN3ZXJzVG9Gb3JtRWxlbWVudHMoKSB7XG4gICAgY29uc3QgYmluZEFuc3dlcnMgPSAoZm9ybUVsZW1lbnRzOiBhbnlbXSwgc3VibWlzc2lvbnM6IGFueVtdKSA9PiB7XG4gICAgICBmb3JtRWxlbWVudHM/LmZvckVhY2goKGdyaWRzOiBhbnkpID0+IHtcbiAgICAgICAgZ3JpZHM/LmdyaWQ/LmZvckVhY2goXG4gICAgICAgICAgKGZvcm1FbGVtZW50OiB7IGVudGl0eVR5cGU6IHN0cmluZzsgZWxlbWVudDogYW55IH0pID0+IHtcbiAgICAgICAgICAgIGlmIChmb3JtRWxlbWVudC5lbnRpdHlUeXBlID09PSAnUVVFU1RJT04nKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHN1Ym1pc3Npb24gPSBzdWJtaXNzaW9ucy5maW5kKChzdWI6IHsgYW5zd2VyczogYW55W10gfSkgPT5cbiAgICAgICAgICAgICAgICBzdWIuYW5zd2Vycy5zb21lKFxuICAgICAgICAgICAgICAgICAgKGFuczogeyBxdWVzdGlvbklkOiBhbnkgfSkgPT5cbiAgICAgICAgICAgICAgICAgICAgYW5zLnF1ZXN0aW9uSWQgPT09IGZvcm1FbGVtZW50LmVsZW1lbnQuaWRcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgaWYgKHN1Ym1pc3Npb24pIHtcbiAgICAgICAgICAgICAgICBjb25zdCBhbnN3ZXIgPSBzdWJtaXNzaW9uLmFuc3dlcnMuZmluZChcbiAgICAgICAgICAgICAgICAgIChhbnM6IHsgcXVlc3Rpb25JZDogYW55IH0pID0+XG4gICAgICAgICAgICAgICAgICAgIGFucy5xdWVzdGlvbklkID09PSBmb3JtRWxlbWVudC5lbGVtZW50LmlkXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBpZiAoYW5zd2VyKSB7XG4gICAgICAgICAgICAgICAgICBmb3JtRWxlbWVudC5lbGVtZW50LmFuc3dlciA9IGFuc3dlci5hbnN3ZXI7XG4gICAgICAgICAgICAgICAgICBmb3JtRWxlbWVudC5lbGVtZW50LmFuc3dlcklkID0gYW5zd2VyLmFuc3dlcklkO1xuICAgICAgICAgICAgICAgICAgZm9ybUVsZW1lbnQuZWxlbWVudC52YWxpZGF0aW9uID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgIGZvcm1FbGVtZW50LmVsZW1lbnQuYXR0YWNobWVudHMgPSBhbnN3ZXIuYXR0YWNobWVudHM7XG4gICAgICAgICAgICAgICAgICBmb3JtRWxlbWVudC5lbGVtZW50LmFtb3VudEluV29yZHMgPSBhbnN3ZXIuYW1vdW50SW5Xb3JkcztcbiAgICAgICAgICAgICAgICAgIHRoaXMuc3ViRm9ybS5zdWJtaXNzaW9uSWQgPSBzdWJtaXNzaW9uLnN1Ym1pc3Npb25JZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAoZm9ybUVsZW1lbnQuZWxlbWVudC5jaGlsZExvZ2ljcykge1xuICAgICAgICAgICAgICAgIGZvcm1FbGVtZW50LmVsZW1lbnQuY2hpbGRMb2dpY3MuZm9yRWFjaChcbiAgICAgICAgICAgICAgICAgIChjaGlsZExvZ2ljOiB7IHJvd3M6IGFueVtdIH0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgYmluZEFuc3dlcnMoY2hpbGRMb2dpYy5yb3dzLCBzdWJtaXNzaW9ucyk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICAgIH0pO1xuICAgIH07XG5cbiAgICBpZiAodGhpcy5zdWJGb3JtICYmIHRoaXMuc3ViRm9ybS5yb3dzICYmIHRoaXMuc3ViRm9ybS5zdWJtaXNzaW9ucykge1xuICAgICAgYmluZEFuc3dlcnModGhpcy5zdWJGb3JtLnJvd3MsIHRoaXMuc3ViRm9ybS5zdWJtaXNzaW9ucyk7XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlU3ViRm9ybVdpdGhTdWJtaXNzaW9ucyhldmVudDogYW55KSB7XG4gICAgdGhpcy5zdWJGb3JtID0gZXZlbnQ7XG4gICAgdGhpcy5zdWJGb3JtQ2hhbmdlLmVtaXQodGhpcy5zdWJGb3JtKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnN1YkZvcm0uZGVzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMuZGVjb2RlZERlc2NyaXB0aW9uID0gdGhpcy5kZWNvZGVIdG1sKHRoaXMuc3ViRm9ybS5kZXNjcmlwdGlvbik7XG4gICAgfVxuICB9XG5cbiAgY29weVN1YmZvcm0oKSB7XG4gICAgY29uc3QgeyB1cGRhdGVkUGFnZXMgfSA9IHRoaXMuc3ViZm9ybUNvcHlTZXJ2aWNlLmNvcHlTdWJmb3JtKHRoaXMuc3ViRm9ybSwgdGhpcy5wYWdlcyk7XG4gIFxuICAgIHRoaXMucGFnZXMgPSB1cGRhdGVkUGFnZXM7XG4gICAgLy8gRW1pdCB1cGRhdGVkIHBhZ2VzIG9yIHN1YkZvcm1DaGFuZ2UgaWYgbmVlZGVkXG4gIFxuICAgIC8vIE9wdGlvbmFsbHkgcGFzcyBtZXRhIHRvIHBhcmVudCBpZiBuZWVkZWRcbiAgICAvLyB0aGlzLmNvcHlNZXRhLmVtaXQoY29weVN1YkZvcm1NZXRhKTtcbiAgfVxuICBcblxuICB1cGRhdGVTdWJmb3JtRGF0YShldmVudDogYW55LCBzdWJmb3JtSWQ6IHN0cmluZywgZmllbGQ6ICd0aXRsZScgfCAnZGVzY3JpcHRpb24nKSB7ICAgIFxuICAgIGlmKHRoaXMuY29weVN1YkZvcm1kYXRhLmlkID09IHN1YmZvcm1JZCl7XG4gICAgICB0aGlzLmNvcHlTdWJGb3JtZGF0YVtmaWVsZF0gPSBldmVudDtcbiAgICB9XG4gIH1cblxuICBkZWxldGVDb3B5U3ViZm9ybShzdWJmb3JtSWQ6IHN0cmluZykge1xuICAgIGNvbnN0IGRpYWxvZ0NvbmZpZyA9IG5ldyBNYXREaWFsb2dDb25maWcoKTtcbiAgICBkaWFsb2dDb25maWcuZGF0YSA9IHtcbiAgICAgIG1lc3NhZ2VIZWFkZXI6IFwiQXJlIHlvdSBzdXJlP1wiLFxuICAgICAgbWVzc2FnZTogXCJEbyB5b3Ugd2FudCB0byBkZWxldGUgdGhpcyBzdWJmb3JtP1wiXG4gICAgfTtcbiAgICBkaWFsb2dDb25maWcuaGFzQmFja2Ryb3AgPSB0cnVlO1xuICAgIGRpYWxvZ0NvbmZpZy5kaXNhYmxlQ2xvc2UgPSB0cnVlO1xuICBcbiAgICB0aGlzLmRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oQ29uZmlybURpYWxvZ0NvbXBvbmVudCwgZGlhbG9nQ29uZmlnKTtcbiAgXG4gICAgdGhpcy5kaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKHJlc3VsdDogYW55KSA9PiB7XG4gICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgIC8vIDEuIFJlbW92ZSB0aGUgY29waWVkIHN1YmZvcm0gZnJvbSB0aGUgcGFnZXNcbiAgICAgICAgZm9yIChjb25zdCBwYWdlIG9mIHRoaXMucGFnZXMpIHtcbiAgICAgICAgICBjb25zdCByb3dJbmRleCA9IHBhZ2Uucm93cy5maW5kSW5kZXgoKHJvdzogYW55KSA9PlxuICAgICAgICAgICAgcm93LmdyaWQuc29tZSgoZ3JpZDogYW55KSA9PlxuICAgICAgICAgICAgICBncmlkLmVudGl0eVR5cGUgPT09ICdTVUJGT1JNJyAmJlxuICAgICAgICAgICAgICBncmlkLmVsZW1lbnQ/LmlkID09PSBzdWJmb3JtSWQgJiZcbiAgICAgICAgICAgICAgZ3JpZC5lbGVtZW50Py5jb3BpZWRcbiAgICAgICAgICAgIClcbiAgICAgICAgICApO1xuICBcbiAgICAgICAgICBpZiAocm93SW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgICBwYWdlLnJvd3Muc3BsaWNlKHJvd0luZGV4LCAxKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICBcbiAgICAgICAgLy8gMi4gUmVtb3ZlIHRoaXMgc3ViZm9ybUlkIGZyb20gYW55IHN1YmZvcm0ncyBjb3BpZWRGb3JtcyBhcnJheVxuICAgICAgICBmb3IgKGNvbnN0IHBhZ2Ugb2YgdGhpcy5wYWdlcykge1xuICAgICAgICAgIGZvciAoY29uc3Qgcm93IG9mIHBhZ2Uucm93cykge1xuICAgICAgICAgICAgZm9yIChjb25zdCBncmlkIG9mIHJvdy5ncmlkKSB7XG4gICAgICAgICAgICAgIGlmIChncmlkLmVudGl0eVR5cGUgPT09ICdTVUJGT1JNJyAmJiBncmlkLmVsZW1lbnQ/LmNvcGllZEZvcm1zKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaW5kZXggPSBncmlkLmVsZW1lbnQuY29waWVkRm9ybXMuaW5kZXhPZihzdWJmb3JtSWQpO1xuICAgICAgICAgICAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgIGdyaWQuZWxlbWVudC5jb3BpZWRGb3Jtcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgXG4gIGRlbGV0ZU1haW5TdWJmb3JtKHN1YmZvcm1JZDogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgZGlhbG9nQ29uZmlnID0gbmV3IE1hdERpYWxvZ0NvbmZpZygpO1xuICAgIGRpYWxvZ0NvbmZpZy5kYXRhID0ge1xuICAgICAgbWVzc2FnZUhlYWRlcjogXCJBcmUgeW91IHN1cmU/XCIsXG4gICAgICBtZXNzYWdlOiBcIkRvIHlvdSB3YW50IHRvIGRlbGV0ZSB0aGlzIHN1YmZvcm0/XCJcbiAgICB9O1xuICAgIGRpYWxvZ0NvbmZpZy5oYXNCYWNrZHJvcCA9IHRydWU7XG4gICAgZGlhbG9nQ29uZmlnLmRpc2FibGVDbG9zZSA9IHRydWU7XG4gIFxuICAgIHRoaXMuZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihDb25maXJtRGlhbG9nQ29tcG9uZW50LCBkaWFsb2dDb25maWcpO1xuICBcbiAgICB0aGlzLmRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgocmVzdWx0OiBhbnkpID0+IHtcbiAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgZm9yIChjb25zdCBwYWdlIG9mIHRoaXMucGFnZXMpIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IHJvdyBvZiBwYWdlLnJvd3MpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZ3JpZEl0ZW0gb2Ygcm93LmdyaWQpIHtcbiAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIGdyaWRJdGVtLmVudGl0eVR5cGUgPT09ICdTVUJGT1JNJyAmJlxuICAgICAgICAgICAgICAgIGdyaWRJdGVtLmVsZW1lbnQ/LmlkID09PSBzdWJmb3JtSWRcbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgZ3JpZEl0ZW0uZWxlbWVudC5kZWxldGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICByZXR1cm47IC8vIHN0b3AgYWZ0ZXIgdGhlIGZpcnN0IG1hdGNoXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZVN1Ym1pc3Npb25zRnJvbUFwaShhcGlTdWJtaXNzaW9uczogYW55W10sIHN1YmZvcm06IGFueSk6IFN1Ym1pc3Npb25bXSB7XG4gICAgcmV0dXJuIGFwaVN1Ym1pc3Npb25zLm1hcChhcGlTdWJtaXNzaW9uID0+IHtcbiAgICAgIGNvbnN0IGFuc3dlcnM6IEFuc3dlcltdID0gW107XG4gIFxuICAgICAgc3ViZm9ybS5yb3dzLmZvckVhY2goKHJvdzogYW55KSA9PiB7XG4gICAgICAgIHJvdy5ncmlkLmZvckVhY2goKGdyaWRJdGVtOiBhbnkpID0+IHtcbiAgICAgICAgICBpZiAoZ3JpZEl0ZW0uZW50aXR5VHlwZSA9PT0gXCJRVUVTVElPTlwiKSB7XG4gICAgICAgICAgICBjb25zdCBlbGVtZW50ID0gZ3JpZEl0ZW0uZWxlbWVudDtcbiAgICAgICAgICAgIGNvbnN0IHF1ZXN0aW9uS2V5ID0gZWxlbWVudC5xdWVzdGlvbjsgLy8gXCJxMVwiLCBcInEyXCIsIC4uLlxuICBcbiAgICAgICAgICAgIC8vIENoZWNrIGlmIEFQSSBzdWJtaXNzaW9uIGhhcyB0aGlzIHF1ZXN0aW9uXG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIGFwaVN1Ym1pc3Npb24uYW5zd2VycyAmJlxuICAgICAgICAgICAgICBhcGlTdWJtaXNzaW9uLmFuc3dlcnMuaGFzT3duUHJvcGVydHkocXVlc3Rpb25LZXkpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgY29uc3QgYW5zd2VyVmFsdWUgPSBhcGlTdWJtaXNzaW9uLmFuc3dlcnNbcXVlc3Rpb25LZXldO1xuICBcbiAgICAgICAgICAgICAgYW5zd2Vycy5wdXNoKHtcbiAgICAgICAgICAgICAgICBxdWVzdGlvbklkOiBlbGVtZW50LmlkLFxuICAgICAgICAgICAgICAgIGFuc3dlcjogYW5zd2VyVmFsdWVcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICBcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHN1Ym1pc3Npb25JZDogdXVpZHY0KCksXG4gICAgICAgIHNvdXJjZVN1Ym1pc3Npb25JZDogYXBpU3VibWlzc2lvbi5zdWJtaXNzaW9uSWQsIFxuICAgICAgICBhbnN3ZXJzLFxuICAgICAgICBjb25maWd1cmF0aW9uOiB7XG4gICAgICAgICAgaXNEZWZhdWx0OiBmYWxzZSxcbiAgICAgICAgICBhbGxvd0RlbGV0ZTogdHJ1ZVxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH0pO1xuICB9XG4gIFxuICBcbiAgXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRpYWxvZ1JlZikge1xuICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoKTtcbiAgICB9XG4gIH1cbiAgXG4gIFxufVxuIiwiPGRpdlxuICBjbGFzcz1cIm91dGVyLWNvbnRhaW5lciBtYi00IHB4LTNcIlxuICBbaWRdPVwiJ3F1ZXN0aW9uLScgKyBzdWJGb3JtLmlkXCJcbiAgW2F0dHIubmFtZV09XCJzdWJGb3JtLnRlc3RFbGVtZW50TmFtZVwiXG4gICpuZ0lmPVwiIXN1YkZvcm0uZGVsZXRlZFwiXG4+XG4gIDxkaXYgY2xhc3M9XCJib2R5IHB5LTEgcHgtMVwiPlxuICAgIDxkaXYgY2xhc3M9XCJ0YWItY29udGVudCBwdC00IHBiLTMgcHgtM1wiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFzdWJGb3JtLmNvcGllZDsgZWxzZSBjb3B5U3ViZm9ybUNvbnRhaW5lclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic3ViZm9ybS1oZWFkZXJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0YS1jb250YWluZXJcIj5cbiAgICAgICAgICAgIDxwIGNsYXNzPVwic2VjdGlvblRpdGxlXCI+e3sgc3ViRm9ybS50aXRsZSB9fTwvcD5cbiAgICAgICAgICAgIDxwIFtpbm5lckhUTUxdPVwiZGVjb2RlZERlc2NyaXB0aW9uXCIgY2xhc3M9XCJkZXNjcmlwdGlvblwiPjwvcD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGdhcC0zXCI+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwiZmluYWxTY29yZVwiXG4gICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBzIG9mIHN1YkZvcm0uc2NvcmVzXCJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgIGdvb2RTY29yZTogcy5zY29yZVR5cGUgPT09ICdHT09EX1NDT1JFJyxcbiAgICAgICAgICAgICAgICBiYWRTY29yZTogcy5zY29yZVR5cGUgPT09ICdCQURfU0NPUkUnXG4gICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNjb3JlVGl0bGVcIj5TY29yZTwvc3Bhbj5cbiAgICAgICAgICAgICAgPHAgY2xhc3M9XCJtYi0wXCI+e3sgcy5zY29yZSB9fTwvcD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImljb24tY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICBzcmM9XCJhc3NldHMvaWNvbnMvY29weS1pY29uLnN2Z1wiXG4gICAgICAgICAgICAgICAgYWx0PVwiY29weS1pY29uXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiY29weVN1YmZvcm0oKVwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJhbGxvd0NvcHlcIlxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgc3JjPVwiYXNzZXRzL2ljb25zL2RlbGV0ZS1pY29uLnN2Z1wiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJkZWxldGUtaWNvbiBtcy0zXCJcbiAgICAgICAgICAgICAgICBhbHQ9XCJkZWxldGUgaWNvblwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImRlbGV0ZU1haW5TdWJmb3JtKHN1YkZvcm0uaWQpXCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImFsbG93RGVsZXRlXCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLXRlbXBsYXRlICNjb3B5U3ViZm9ybUNvbnRhaW5lcj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kIGdhcC00XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZpbmFsU2NvcmVcIiAqbmdJZj1cInN1YkZvcm0uc2NvcmVcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2NvcmVUaXRsZVwiPlNjb3JlPC9zcGFuPlxuICAgICAgICAgICAgPHAgY2xhc3M9XCJtYi0wXCI+e3sgc3ViRm9ybS5zY29yZSB9fTwvcD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaWNvbi1jb250YWluZXJcIiAoY2xpY2spPVwiZGVsZXRlQ29weVN1YmZvcm0oc3ViRm9ybS5pZClcIj5cbiAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgc3JjPVwiYXNzZXRzL2ljb25zL2RlbGV0ZS1pY29uLnN2Z1wiXG4gICAgICAgICAgICAgIGNsYXNzPVwiZGVsZXRlLWljb25cIlxuICAgICAgICAgICAgICBhbHQ9XCJkZWxldGUgaWNvblwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvcHktc3ViZm9ybS1jb250YWluZXIgbWItM1wiPlxuICAgICAgICAgIDxwPlRpdGxlPC9wPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzdWJmb3JtVGl0bGVcIlxuICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwidXBkYXRlU3ViZm9ybURhdGEoJGV2ZW50LCBzdWJGb3JtLmlkLCAndGl0bGUnKVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgICA8cCBjbGFzcz1cIm10LTNcIj5EZXNjcmlwdGlvbjwvcD5cbiAgICAgICAgICA8cXVpbGwtZWRpdG9yXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cInN1YmZvcm1EZXNjcmlwdGlvblwiXG4gICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJcbiAgICAgICAgICAgICAgdXBkYXRlU3ViZm9ybURhdGEoJGV2ZW50LCBzdWJGb3JtLmlkLCAnZGVzY3JpcHRpb24nKVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIChvbkVkaXRvckNyZWF0ZWQpPVwiZWRpdG9yQ3JlYXRlZCgkZXZlbnQpXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZWRpdG9yXCJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiXCJcbiAgICAgICAgICA+PC9xdWlsbC1lZGl0b3I+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgPGRpdiAqbmdJZj1cInN1YkZvcm0ucHJvcGVydHkuc3ViRm9ybVN0cnVjdHVyZSA9PSAnbXVsdGlwbGUnXCI+XG4gICAgICAgIDxsaWItbXVsdGlwbGUtc3ViZm9ybVxuICAgICAgICAgICpuZ0lmPVwic3ViRm9ybS5wcm9wZXJ0eS5zdWJGb3JtVHlwZSA9PT0gJ3RhYmxlJ1wiXG4gICAgICAgICAgW3N1YkZvcm1dPVwic3ViRm9ybVwiXG4gICAgICAgICAgKHN1YkZvcm1DaGFuZ2UpPVwidXBkYXRlU3ViRm9ybVdpdGhTdWJtaXNzaW9ucygkZXZlbnQpXCJcbiAgICAgICAgICBbYWNjZXB0ZWRMYW5ndWFnZV09XCJhY2NlcHRlZExhbmd1YWdlXCJcbiAgICAgICAgPjwvbGliLW11bHRpcGxlLXN1YmZvcm0+XG5cbiAgICAgICAgPGxpYi1pbmxpbmUtbXVsdGlwbGUtc3ViZm9ybVxuICAgICAgICAgICpuZ0lmPVwic3ViRm9ybS5wcm9wZXJ0eS5zdWJGb3JtVHlwZSA9PT0gJ2lubGluZSdcIlxuICAgICAgICAgIFtzdWJGb3JtXT1cInN1YkZvcm1cIlxuICAgICAgICAgIChzdWJGb3JtQ2hhbmdlKT1cInVwZGF0ZVN1YkZvcm1XaXRoU3VibWlzc2lvbnMoJGV2ZW50KVwiXG4gICAgICAgICAgW2FjY2VwdGVkTGFuZ3VhZ2VdPVwiYWNjZXB0ZWRMYW5ndWFnZVwiXG4gICAgICAgID48L2xpYi1pbmxpbmUtbXVsdGlwbGUtc3ViZm9ybT5cbiAgICAgICAgPGxpYi1jYXJkLXN1YmZvcm1cbiAgICAgICAgICAqbmdJZj1cInN1YkZvcm0ucHJvcGVydHkuc3ViRm9ybVR5cGUgPT09ICdjYXJkJ1wiXG4gICAgICAgICAgW3N1YkZvcm1dPVwic3ViRm9ybVwiXG4gICAgICAgICAgW2FjY2VwdGVkTGFuZ3VhZ2VdPVwiYWNjZXB0ZWRMYW5ndWFnZVwiXG4gICAgICAgICAgKHN1YkZvcm1DaGFuZ2UpPVwidXBkYXRlU3ViRm9ybVdpdGhTdWJtaXNzaW9ucygkZXZlbnQpXCJcbiAgICAgICAgICBbZWRpdF09XCJlZGl0XCJcbiAgICAgICAgPjwvbGliLWNhcmQtc3ViZm9ybT5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiAqbmdJZj1cInN1YkZvcm0ucHJvcGVydHkuc3ViRm9ybVN0cnVjdHVyZSA9PSAnc2luZ2xlJ1wiPlxuICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCByb3cgb2Ygc3ViRm9ybS5yb3dzXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgZ3JpZCBvZiByb3cuZ3JpZFwiXG4gICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsgJ3dpZHRoLiUnOiBncmlkLmVsZW1lbnQuY291bnQgKiAoMTAwIC8gMTIpIH1cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZ3JpZC5lbnRpdHlUeXBlID09PSAnUVVFU1RJT04nICYmIGdyaWQuc2hvd1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgW25nU3dpdGNoXT1cImdyaWQuZWxlbWVudC5mb3JtRWxlbWVudC5lbGVtZW50VHlwZVwiPlxuICAgICAgICAgICAgICAgICAgPGxpYi1jaGVjay1ib3gtZmllbGRzXG4gICAgICAgICAgICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCInQ0hFQ0tfQk9YJ1wiXG4gICAgICAgICAgICAgICAgICAgIFtxdWVzdGlvbl09XCJncmlkLmVsZW1lbnRcIlxuICAgICAgICAgICAgICAgICAgPjwvbGliLWNoZWNrLWJveC1maWVsZHM+XG4gICAgICAgICAgICAgICAgICA8bGliLWRhdGUtdGltZS1maWVsZHNcbiAgICAgICAgICAgICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidEQVRFX1RJTUUnXCJcbiAgICAgICAgICAgICAgICAgICAgW3F1ZXN0aW9uXT1cImdyaWQuZWxlbWVudFwiXG4gICAgICAgICAgICAgICAgICA+PC9saWItZGF0ZS10aW1lLWZpZWxkcz5cbiAgICAgICAgICAgICAgICAgIDxsaWItZHJvcC1kb3duLWZpZWxkc1xuICAgICAgICAgICAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ0RST1BfRE9XTidcIlxuICAgICAgICAgICAgICAgICAgICBbcXVlc3Rpb25dPVwiZ3JpZC5lbGVtZW50XCJcbiAgICAgICAgICAgICAgICAgID48L2xpYi1kcm9wLWRvd24tZmllbGRzPlxuICAgICAgICAgICAgICAgICAgPGxpYi1maWxlLXBpY2tlci1maWVsZHNcbiAgICAgICAgICAgICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidGSUxFX1BJQ0tFUidcIlxuICAgICAgICAgICAgICAgICAgICBbcXVlc3Rpb25dPVwiZ3JpZC5lbGVtZW50XCJcbiAgICAgICAgICAgICAgICAgID48L2xpYi1maWxlLXBpY2tlci1maWVsZHM+XG4gICAgICAgICAgICAgICAgICA8bGliLWxvY2F0aW9uLWZpZWxkc1xuICAgICAgICAgICAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ0xPQ0FUSU9OJ1wiXG4gICAgICAgICAgICAgICAgICAgIFtxdWVzdGlvbl09XCJncmlkLmVsZW1lbnRcIlxuICAgICAgICAgICAgICAgICAgPjwvbGliLWxvY2F0aW9uLWZpZWxkcz5cbiAgICAgICAgICAgICAgICAgIDxsaWItbWFpbC1maWVsZHNcbiAgICAgICAgICAgICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidFTUFJTCdcIlxuICAgICAgICAgICAgICAgICAgICBbcXVlc3Rpb25dPVwiZ3JpZC5lbGVtZW50XCJcbiAgICAgICAgICAgICAgICAgID48L2xpYi1tYWlsLWZpZWxkcz5cbiAgICAgICAgICAgICAgICAgIDxsaWItbW9iaWxlLWZpZWxkc1xuICAgICAgICAgICAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ01PQklMRSdcIlxuICAgICAgICAgICAgICAgICAgICBbcXVlc3Rpb25dPVwiZ3JpZC5lbGVtZW50XCJcbiAgICAgICAgICAgICAgICAgID48L2xpYi1tb2JpbGUtZmllbGRzPlxuICAgICAgICAgICAgICAgICAgPGxpYi1udW1iZXItZmllbGRzXG4gICAgICAgICAgICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCInTlVNQkVSJ1wiXG4gICAgICAgICAgICAgICAgICAgIFtxdWVzdGlvbl09XCJncmlkLmVsZW1lbnRcIlxuICAgICAgICAgICAgICAgICAgICBbcm93SWRdPVwiJzAnXCJcbiAgICAgICAgICAgICAgICAgID48L2xpYi1udW1iZXItZmllbGRzPlxuICAgICAgICAgICAgICAgICAgPGxpYi1wYXNzd29yZC1maWVsZHNcbiAgICAgICAgICAgICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidQQVNTV09SRCdcIlxuICAgICAgICAgICAgICAgICAgICBbcXVlc3Rpb25dPVwiZ3JpZC5lbGVtZW50XCJcbiAgICAgICAgICAgICAgICAgID48L2xpYi1wYXNzd29yZC1maWVsZHM+XG4gICAgICAgICAgICAgICAgICA8bGliLXJhZGlvLWJ1dHRvbi1maWVsZHNcbiAgICAgICAgICAgICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidSQURJT19CVVRUT04nXCJcbiAgICAgICAgICAgICAgICAgICAgW3F1ZXN0aW9uXT1cImdyaWQuZWxlbWVudFwiXG4gICAgICAgICAgICAgICAgICA+PC9saWItcmFkaW8tYnV0dG9uLWZpZWxkcz5cbiAgICAgICAgICAgICAgICAgIDxsaWItcmljaC10ZXh0LWVkaXRvci1maWVsZHNcbiAgICAgICAgICAgICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidSSUNIX1RFWFRfRURJVE9SJ1wiXG4gICAgICAgICAgICAgICAgICAgIFtxdWVzdGlvbl09XCJncmlkLmVsZW1lbnRcIlxuICAgICAgICAgICAgICAgICAgPjwvbGliLXJpY2gtdGV4dC1lZGl0b3ItZmllbGRzPlxuICAgICAgICAgICAgICAgICAgPGxpYi1zZWxlY3Rpb24tbWF0cml4LWZpZWxkc1xuICAgICAgICAgICAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ1NFTEVDVElPTl9NQVRSSVgnXCJcbiAgICAgICAgICAgICAgICAgICAgW3F1ZXN0aW9uXT1cImdyaWQuZWxlbWVudFwiXG4gICAgICAgICAgICAgICAgICAgIFthY2NlcHRlZExhbmd1YWdlXT1cImFjY2VwdGVkTGFuZ3VhZ2VcIlxuICAgICAgICAgICAgICAgICAgPjwvbGliLXNlbGVjdGlvbi1tYXRyaXgtZmllbGRzPlxuICAgICAgICAgICAgICAgICAgPGxpYi1zaWduYXR1cmUtZmllbGRzXG4gICAgICAgICAgICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCInU0lHTkFUVVJFJ1wiXG4gICAgICAgICAgICAgICAgICAgIFtxdWVzdGlvbl09XCJncmlkLmVsZW1lbnRcIlxuICAgICAgICAgICAgICAgICAgPjwvbGliLXNpZ25hdHVyZS1maWVsZHM+XG4gICAgICAgICAgICAgICAgICA8bGliLXNsaWRlci1maWVsZHNcbiAgICAgICAgICAgICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidTTElERVInXCJcbiAgICAgICAgICAgICAgICAgICAgW3F1ZXN0aW9uXT1cImdyaWQuZWxlbWVudFwiXG4gICAgICAgICAgICAgICAgICA+PC9saWItc2xpZGVyLWZpZWxkcz5cbiAgICAgICAgICAgICAgICAgIDxsaWItdGVybXMtYW5kLWNvbmRpdGlvbi1maWVsZHNcbiAgICAgICAgICAgICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidURVJNU19BTkRfQ09ORElUSU9OJ1wiXG4gICAgICAgICAgICAgICAgICAgIFtxdWVzdGlvbl09XCJncmlkLmVsZW1lbnRcIlxuICAgICAgICAgICAgICAgICAgPjwvbGliLXRlcm1zLWFuZC1jb25kaXRpb24tZmllbGRzPlxuICAgICAgICAgICAgICAgICAgPGxpYi10ZXh0LWFyZWEtZmllbGRzXG4gICAgICAgICAgICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCInVEVYVF9BUkVBJ1wiXG4gICAgICAgICAgICAgICAgICAgIFtxdWVzdGlvbl09XCJncmlkLmVsZW1lbnRcIlxuICAgICAgICAgICAgICAgICAgPjwvbGliLXRleHQtYXJlYS1maWVsZHM+XG4gICAgICAgICAgICAgICAgICA8bGliLXRleHQtZmllbGRzXG4gICAgICAgICAgICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCInVEVYVF9CT1gnXCJcbiAgICAgICAgICAgICAgICAgICAgW3F1ZXN0aW9uXT1cImdyaWQuZWxlbWVudFwiXG4gICAgICAgICAgICAgICAgICA+PC9saWItdGV4dC1maWVsZHM+XG4gICAgICAgICAgICAgICAgICA8bGliLXRvZ2dsZS1zd2l0Y2gtZmllbGRzXG4gICAgICAgICAgICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCInVE9HR0xFX1NXSVRDSCdcIlxuICAgICAgICAgICAgICAgICAgICBbcXVlc3Rpb25dPVwiZ3JpZC5lbGVtZW50XCJcbiAgICAgICAgICAgICAgICAgICAgW2FjY2VwdGVkTGFuZ3VhZ2VdPVwiYWNjZXB0ZWRMYW5ndWFnZVwiXG4gICAgICAgICAgICAgICAgICA+PC9saWItdG9nZ2xlLXN3aXRjaC1maWVsZHM+XG4gICAgICAgICAgICAgICAgICA8bGliLXVybC1maWVsZHNcbiAgICAgICAgICAgICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidVUkwnXCJcbiAgICAgICAgICAgICAgICAgICAgW3F1ZXN0aW9uXT1cImdyaWQuZWxlbWVudFwiXG4gICAgICAgICAgICAgICAgICA+PC9saWItdXJsLWZpZWxkcz5cbiAgICAgICAgICAgICAgICAgIDxsaWItY3VycmVuY3ktZmllbGRzXG4gICAgICAgICAgICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCInQ1VSUkVOQ1knXCJcbiAgICAgICAgICAgICAgICAgICAgW3F1ZXN0aW9uXT1cImdyaWQuZWxlbWVudFwiXG4gICAgICAgICAgICAgICAgICA+PC9saWItY3VycmVuY3ktZmllbGRzPlxuICAgICAgICAgICAgICAgICAgPGxpYi1hZ2dyZWdhdGUtZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidBR0dSRUdBVEVfRlVOQ1RJT04nXCJcbiAgICAgICAgICAgICAgICAgICAgW3F1ZXN0aW9uXT1cImdyaWQuZWxlbWVudFwiXG4gICAgICAgICAgICAgICAgICAgIFtyb3dJZF09XCInMCdcIlxuICAgICAgICAgICAgICAgICAgPjwvbGliLWFnZ3JlZ2F0ZS1mdW5jdGlvbj5cbiAgICAgICAgICAgICAgICAgIDxsaWItaGlkZGVuLWZpZWxkXG4gICAgICAgICAgICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCInSElEREVOX0ZJRUxEJ1wiXG4gICAgICAgICAgICAgICAgICAgIFtxdWVzdGlvbl09XCJncmlkLmVsZW1lbnRcIlxuICAgICAgICAgICAgICAgICAgPjwvbGliLWhpZGRlbi1maWVsZD5cbiAgICAgICAgICAgICAgICAgIDxsaWItaWZyYW1lLWZpZWxkc1xuICAgICAgICAgICAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ0lGUkFNRV9XSURHRVQnXCJcbiAgICAgICAgICAgICAgICAgICAgW3F1ZXN0aW9uXT1cImdyaWQuZWxlbWVudFwiXG4gICAgICAgICAgICAgICAgICA+PC9saWItaWZyYW1lLWZpZWxkcz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDwhLS0gPG5nLWNvbnRhaW5lciAqbmdJZj1cImdyaWQuZWxlbWVudC5jaGlsZExvZ2ljc1wiPlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImdldENvbXBvbmVudEZvckNoaWxkTG9naWNzKGdyaWQuZWxlbWVudC5jaGlsZExvZ2ljcywgJ2NoaWxkJywgZ3JpZC5lbGVtZW50LmFuc3dlcikgYXMgb3V0bGV0XCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nQ29tcG9uZW50T3V0bGV0PVwib3V0bGV0LmNvbXBvbmVudCB8IGFzeW5jOyBpbmplY3Rvcjogb3V0bGV0LmluamVjdG9yXCI+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+IC0tPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJncmlkPy5lbGVtZW50Py5jaGlsZExvZ2ljc1wiPlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbXBvbmVudFRvTG9hZFwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgKm5nQ29tcG9uZW50T3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRUb0xvYWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBpbnB1dHM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZDogZ3JpZD8uZWxlbWVudD8uY2hpbGRMb2dpY3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFuc3dlcjogZ3JpZD8uZWxlbWVudD8uYW5zd2VyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZTogJ2NoaWxkJ1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZ3JpZC5lbnRpdHlUeXBlID09PSAnU0VDVElPTicgJiYgZ3JpZC5zaG93XCI+XG4gICAgICAgICAgICAgICAgPGxpYi1zZWN0aW9uLWZpZWxkc1xuICAgICAgICAgICAgICAgICAgW3NlY3Rpb25dPVwiZ3JpZC5lbGVtZW50XCJcbiAgICAgICAgICAgICAgICA+PC9saWItc2VjdGlvbi1maWVsZHM+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
@@ -8215,12 +8215,10 @@ class SubFormComponent {
|
|
|
8215
8215
|
this.previousSubmissions = [];
|
|
8216
8216
|
this.dataService.subform$.subscribe((data) => {
|
|
8217
8217
|
this.subformData = data;
|
|
8218
|
+
this.loadPreviousSubmissions();
|
|
8218
8219
|
});
|
|
8219
8220
|
}
|
|
8220
|
-
|
|
8221
|
-
this.allowCopy = this.subForm.property?.allowCopy;
|
|
8222
|
-
this.allowDelete = this.subForm.property?.allowDelete;
|
|
8223
|
-
this.copySubFormdata = this.subForm?.copySubformMeta;
|
|
8221
|
+
loadPreviousSubmissions() {
|
|
8224
8222
|
if (this.subformData && Object.keys(this.subformData).length > 0 && !this.edit) {
|
|
8225
8223
|
this.formService.getSubformSubmissions(this.subformData)?.subscribe({
|
|
8226
8224
|
next: (response) => {
|
|
@@ -8236,6 +8234,11 @@ class SubFormComponent {
|
|
|
8236
8234
|
error: (error) => { }
|
|
8237
8235
|
});
|
|
8238
8236
|
}
|
|
8237
|
+
}
|
|
8238
|
+
ngOnInit() {
|
|
8239
|
+
this.allowCopy = this.subForm.property?.allowCopy;
|
|
8240
|
+
this.allowDelete = this.subForm.property?.allowDelete;
|
|
8241
|
+
this.copySubFormdata = this.subForm?.copySubformMeta;
|
|
8239
8242
|
if (this.subForm.property.subFormStructure == 'single') {
|
|
8240
8243
|
this.bindAnswersToFormElements();
|
|
8241
8244
|
this.loadComponent();
|
|
@@ -10585,7 +10588,15 @@ class FormSubmissionComponent {
|
|
|
10585
10588
|
}
|
|
10586
10589
|
ngOnChanges(changes) {
|
|
10587
10590
|
if (changes['formData']) {
|
|
10588
|
-
|
|
10591
|
+
const newFormData = changes['formData'].currentValue;
|
|
10592
|
+
this.dataService.setHeader(newFormData?.headers);
|
|
10593
|
+
// 🔹 Add your duplicateSubmission logic here
|
|
10594
|
+
if (newFormData?.duplicateSubmission) {
|
|
10595
|
+
this.dataService.setSubformData({
|
|
10596
|
+
moduleName: newFormData.moduleName,
|
|
10597
|
+
duplicateSubmission: newFormData.duplicateSubmission,
|
|
10598
|
+
});
|
|
10599
|
+
}
|
|
10589
10600
|
}
|
|
10590
10601
|
if (changes['triggerFormSave'] && changes['triggerFormSave'].currentValue) {
|
|
10591
10602
|
const action = changes['triggerFormSave'].currentValue;
|
|
@@ -10600,12 +10611,6 @@ class FormSubmissionComponent {
|
|
|
10600
10611
|
ngOnInit() {
|
|
10601
10612
|
this.dataService.setApiUrl(this.formData.apiurl);
|
|
10602
10613
|
this.dataService.setHeader(this.formData.headers);
|
|
10603
|
-
if (this.formData.duplicateSubmission) {
|
|
10604
|
-
this.dataService.setSubformData({
|
|
10605
|
-
moduleName: this.formData.moduleName,
|
|
10606
|
-
duplicateSubmission: this.formData.duplicateSubmission
|
|
10607
|
-
});
|
|
10608
|
-
}
|
|
10609
10614
|
this.dataService.header$.subscribe((data) => {
|
|
10610
10615
|
this.header = data;
|
|
10611
10616
|
this.setHtmlDirection(this.header.acceptedLanguage);
|