@piserve-tech/form-submission 1.3.320 → 1.3.322

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.
@@ -331,6 +331,9 @@ export class DropDownFieldsComponent {
331
331
  answer: this.question.answer,
332
332
  maxPossibleScore: this.maxPossibleScore,
333
333
  });
334
+ if (this.selectionType === 'SINGLE' && this.selectedValue.length > 0) {
335
+ this.search('');
336
+ }
334
337
  const answers = Array.isArray(this.question.answer) ? this.question.answer : [];
335
338
  const parsedAnswers = answers.map((ans) => ans.split('|')[1]);
336
339
  this.whenClauseService.setQuestionAnswer(this.question.id, parsedAnswers);
@@ -585,4 +588,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
585
588
  }], disableEdit: [{
586
589
  type: Input
587
590
  }] } });
588
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcC1kb3duLWZpZWxkcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mb3JtLXN1Ym1pc3Npb24vc3JjL2Zvcm0tZmllbGRzL2Ryb3AtZG93bi1maWVsZHMvZHJvcC1kb3duLWZpZWxkcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mb3JtLXN1Ym1pc3Npb24vc3JjL2Zvcm0tZmllbGRzL2Ryb3AtZG93bi1maWVsZHMvZHJvcC1kb3duLWZpZWxkcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBRUwsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDOzs7Ozs7Ozs7O0FBbUJ2QixNQUFNLE9BQU8sdUJBQXVCO0lBbUNsQyxZQUNVLFdBQXdCLEVBQ3hCLEdBQXNCLEVBQ3RCLGlCQUFvQyxFQUNwQyxPQUE4QixFQUM5QixnQkFBeUMsRUFDekMsaUJBQW1DLEVBQ25DLGtCQUFxQztRQU5yQyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3BDLFlBQU8sR0FBUCxPQUFPLENBQXVCO1FBQzlCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBeUI7UUFDekMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFrQjtRQUNuQyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW1CO1FBekN0QyxhQUFRLEdBQVEsRUFBRSxDQUFDO1FBQ25CLFdBQU0sR0FBWSxLQUFLLENBQUM7UUFDeEIsV0FBTSxHQUFZLEtBQUssQ0FBQztRQUV2QixpQkFBWSxHQUFHLElBQUksWUFBWSxFQUdyQyxDQUFDO1FBRUwsVUFBSyxHQUFXLENBQUMsQ0FBQztRQUNsQixhQUFRLEdBQVksS0FBSyxDQUFDO1FBQzFCLFNBQUksR0FBVyxFQUFFLENBQUM7UUFDbEIsa0JBQWEsR0FBVyxFQUFFLENBQUM7UUFDM0IscUJBQWdCLEdBQVcsQ0FBQyxDQUFDO1FBQzdCLHFCQUFnQixHQUFXLENBQUMsQ0FBQztRQUM3QixlQUFVLEdBQVcsRUFBRSxDQUFDO1FBQ3hCLGdCQUFXLEdBQVcsRUFBRSxDQUFDO1FBQ3pCLGtCQUFhLEdBQW1CLEVBQUUsQ0FBQztRQUNuQyxvQkFBZSxHQUFtQixFQUFFLENBQUM7UUFDckMsYUFBUSxHQUFRLEVBQUUsQ0FBQztRQUNuQixRQUFHLEdBQVEsRUFBRSxDQUFDO1FBQ2QsZ0JBQVcsR0FBUSxFQUFFLENBQUM7UUFDdEIsa0JBQWEsR0FBVSxFQUFFLENBQUM7UUFFMUIsc0JBQWlCLEdBQVcsRUFBRSxDQUFDO1FBQ3ZCLGNBQVMsR0FBVyxFQUFFLENBQUM7UUFDL0IsZ0JBQVcsR0FBWSxJQUFJLENBQUM7UUFFNUIsbUJBQWMsR0FBVSxFQUFFLENBQUM7UUFDM0IsZ0JBQVcsR0FBVyxDQUFDLENBQUM7UUFDeEIsZUFBVSxHQUFXLEVBQUUsQ0FBQztRQUN4QixpQkFBWSxHQUFXLENBQUMsQ0FBQztRQUNoQixnQkFBVyxHQUFZLEtBQUssQ0FBQztJQVVuQyxDQUFDO0lBRUosUUFBUTtRQUNOLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRUQsYUFBYSxDQUFDLFFBQWE7UUFDekIsSUFBSSxDQUFDLGFBQWEsR0FBRyxRQUFRLENBQUM7UUFDOUIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxhQUFhO1FBQ1gsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQztRQUNqQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7UUFDL0IsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDO1FBQ3hFLElBQUksQ0FBQyxnQkFBZ0I7WUFDbkIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDO1FBQ3hELElBQUksQ0FBQyxnQkFBZ0I7WUFDbkIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDO1FBQ3hELElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQztRQUU5RCxxQ0FBcUM7UUFDckMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDL0QsSUFBSSxJQUFJLENBQUMsVUFBVSxLQUFLLEtBQUssRUFBRTtnQkFDN0IsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDO2dCQUNoRCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDeEQsMkZBQTJGO2dCQUMzRixNQUFNLGFBQWEsR0FDakIsSUFBSSxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxLQUFLLFlBQVksQ0FBQztvQkFDbEUsSUFBSSxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxLQUFLLFdBQVcsQ0FBQyxDQUFDO2dCQUVwRSxJQUFJLGFBQWEsRUFBRTtvQkFDakIseUNBQXlDO29CQUN6QyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQVcsRUFBRSxFQUFFO3dCQUM3RCxNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO3dCQUM3QixPQUFPLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDaEQsQ0FBQyxDQUFDLENBQUM7aUJBQ0o7YUFDRjtpQkFFSyxJQUFJLElBQUksQ0FBQyxVQUFVLEtBQUssVUFBVSxFQUFFO2dCQUN4QyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQVcsRUFBRSxFQUFFO29CQUM3RCxNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUM3QixPQUFPLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDaEQsQ0FBQyxDQUFDLENBQUE7YUFBQztZQUFBLENBQUM7U0FDUDtRQUdELHdDQUF3QztRQUN4QyxRQUFRLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDdkIsS0FBSyxRQUFRO2dCQUNYLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQ3JFLENBQUMsTUFBeUIsRUFBRSxFQUFFLENBQUMsQ0FBQztvQkFDOUIsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLO29CQUNuQixLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUs7b0JBQ25CLEtBQUssRUFBRSxFQUFFO2lCQUNWLENBQUMsQ0FDSCxDQUFDO2dCQUNGLElBQUksQ0FBQyxlQUFlLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztnQkFDL0MsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRTtvQkFDeEIsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7aUJBQy9CO2dCQUNELE1BQU07WUFFUixLQUFLLFFBQVE7Z0JBQ1gsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDO2dCQUNoRSxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztnQkFDM0IsTUFBTTtZQUVSLEtBQUssVUFBVTtnQkFDYixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUM7Z0JBQzFELElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO2dCQUM3QixNQUFNO1lBRVIsS0FBSyxLQUFLO2dCQUNSLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7b0JBQ25ELElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQztvQkFDaEQsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7aUJBQ3pEO2dCQUNELElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO2dCQUN4QixNQUFNO1lBRVI7Z0JBQ0UsT0FBTyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDekQ7UUFFRCxrQkFBa0I7UUFDbEIsSUFDRSxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxPQUFPO1lBQ2pDLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQy9DO1lBQ0EsSUFBSSxDQUFDLGdCQUFnQjtnQkFDbkIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLDhCQUE4QixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN0RSxJQUFJLENBQUMsUUFBUSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztTQUN4RDtJQUNILENBQUM7SUFFRCxzQkFBc0I7UUFFcEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFXLEVBQUUsRUFBRTtZQUN6QyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFNLEVBQUUsRUFBRTtnQkFDckQsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDbEMsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtvQkFDdEIsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUN2QixNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ3ZCLE9BQU8sS0FBSyxJQUFJLE1BQU0sQ0FBQyxLQUFLLElBQUksS0FBSyxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUM7aUJBQ3ZEO3FCQUFNO29CQUNMLE9BQU8sS0FBSyxDQUFDO2lCQUNkO1lBQ0gsQ0FBQyxDQUFDLENBQUM7WUFDSCxJQUFJLE9BQU8sRUFBRTtnQkFDWCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FDL0MsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEtBQUssTUFBTSxDQUFDLEtBQUssQ0FDM0MsQ0FBQztnQkFFRixJQUFJLENBQUMsYUFBYSxFQUFFO29CQUNsQixJQUFJLENBQUMsYUFBYSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLE1BQU0sQ0FBQyxDQUFDO2lCQUN0RDtnQkFFRyxVQUFVLENBQUMsR0FBRyxFQUFFO29CQUNkLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztvQkFDaEYsTUFBTSxhQUFhLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQU8sRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUNsRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUMsYUFBYSxFQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNoRixDQUFDLENBQUMsQ0FBQzthQUNKO1lBQ0QsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRTtnQkFDckQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUN2QztRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsdUJBQXVCLENBQUMsUUFBYSxFQUFDLGlCQUF3QixFQUFFO1FBQzlELE9BQU87WUFDTCxTQUFTLEVBQUUsUUFBUSxDQUFDLFNBQVM7WUFDN0IsVUFBVSxFQUFFLFFBQVEsQ0FBQyxVQUFVO1lBQy9CLFVBQVUsRUFBRSxRQUFRLENBQUMsVUFBVTtZQUMvQixZQUFZLEVBQUUsUUFBUSxFQUFFLFlBQVk7WUFDcEMsY0FBYyxFQUFFLGNBQWM7WUFDOUIsUUFBUSxFQUFFLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBYSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUNsRCxLQUFLLEVBQUUsUUFBUSxDQUFDLEtBQUs7Z0JBQ3JCLFdBQVcsRUFBRSxRQUFRLEVBQUUsV0FBVztnQkFDbEMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxTQUFTO2dCQUM3QixLQUFLLEVBQUUsUUFBUSxDQUFDLFVBQVU7Z0JBQzFCLGVBQWUsRUFBRSxRQUFRLENBQUMsZUFBZTthQUMxQyxDQUFDLENBQUM7U0FDSixDQUFDO0lBQ0osQ0FBQztJQUVELHFCQUFxQixDQUFDLGVBQW9CLEVBQUU7UUFDM0MsTUFBTSxLQUFLLEdBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBUyxFQUFFLEVBQUU7WUFDckQsTUFBTSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3BDLE9BQU87Z0JBQ0wsS0FBSztnQkFDTCxLQUFLO2FBQ04sQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFBO1FBQ0EsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBQyxLQUFLLENBQUMsQ0FBQztRQUM5RSxJQUFJLENBQUMsV0FBVyxDQUFDLHFCQUFxQixDQUFDLG1CQUFtQixFQUFDLElBQUksQ0FBQyxXQUFXLEVBQUMsSUFBSSxDQUFDLFVBQVUsRUFBQyxZQUFZLEVBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUN0SCxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQ1gsSUFBSSxRQUFRLENBQUMsT0FBTyxFQUFFO2dCQUNwQixJQUFJLENBQUMsWUFBWSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDO2dCQUMvQyxNQUFNLFVBQVUsR0FDZCxRQUFRLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLENBQzNCLENBQUMsSUFBc0MsRUFBRSxFQUFFLENBQUMsQ0FBQztvQkFDM0MsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO29CQUNqQixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7aUJBQ2xCLENBQUMsQ0FDSCxJQUFJLEVBQUUsQ0FBQztnQkFDVixJQUFJLElBQUksQ0FBQyxXQUFXLEtBQUssQ0FBQyxFQUFFO29CQUMxQixJQUFJLENBQUMsYUFBYSxHQUFHLENBQUMsR0FBRyxVQUFVLENBQUMsQ0FBQztpQkFDdEM7cUJBQ0k7b0JBQ0gsSUFBSSxDQUFDLGFBQWEsR0FBRzt3QkFDbkIsR0FBRyxJQUFJLENBQUMsYUFBYTt3QkFDckIsR0FBRyxVQUFVO3FCQUNkLENBQUM7aUJBQ0g7Z0JBR0QsSUFBSSxDQUFDLGVBQWUsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO2dCQUUvQyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFO29CQUN4QixJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztpQkFDL0I7YUFDRjtpQkFBTTtnQkFDTCxPQUFPLENBQUMsS0FBSyxDQUFDLG9DQUFvQyxFQUFFLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUN2RTtZQUNELElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDM0IsQ0FBQyxFQUNELENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDUixPQUFPLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUNwQyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQzNCLENBQUMsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELG1CQUFtQjtRQUNqQixJQUFJLENBQUMsV0FBVyxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxTQUFTLENBQzlELENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDWCxJQUFJLENBQUMsYUFBYSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FDN0MsQ0FBQyxJQUFzQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUMzQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7Z0JBQ2pCLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSzthQUNsQixDQUFDLENBQ0gsQ0FBQztZQUNGLElBQUksQ0FBQyxlQUFlLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUMvQyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFO2dCQUN4QixJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQzthQUMvQjtRQUNILENBQUMsRUFDRCxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ1IsT0FBTyxDQUFDLEtBQUssQ0FBQyxhQUFhLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDdEMsQ0FBQyxDQUNGLENBQUM7SUFDSixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsU0FBa0IsS0FBSyxFQUFFLFNBQWtCLEtBQUs7UUFDL0QsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3ZELElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxJQUFJLE1BQU0sRUFBRTtZQUMvQixzRUFBc0U7WUFDdEUsT0FBTztTQUNSO1FBQ0QsTUFBTSxZQUFZLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUV4RCxJQUFJLE1BQU0sRUFBRTtZQUNWLElBQUksU0FBUyxDQUFDLE1BQU0sRUFBRTtnQkFDcEIsU0FBUyxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FDeEMsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLEtBQUssaUJBQWlCLENBQ2hELENBQUM7YUFDSDtZQUNELElBQUksU0FBUyxDQUFDLE9BQU8sRUFBRTtnQkFDckIsU0FBUyxDQUFDLE9BQU8sR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FDMUMsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLEtBQUssaUJBQWlCLENBQ2hELENBQUM7YUFDSDtTQUNGO1FBRUQsSUFBSSxDQUFDLFdBQVc7YUFDYix3QkFBd0IsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQzthQUN4RCxTQUFTLENBQ1IsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUNYLElBQUksSUFBSSxDQUFDO1lBQ1QsSUFBSSxTQUFTLENBQUMsV0FBVyxFQUFFO2dCQUN6QixJQUFJLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUM7YUFDaEU7aUJBQU07Z0JBQ0wsSUFBSSxHQUFHLFFBQVEsQ0FBQzthQUNqQjtZQUVELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRTtnQkFDeEMsSUFDRSxTQUFTLENBQUMsWUFBWTtvQkFDdEIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDO29CQUNyQyxTQUFTLENBQUMsWUFBWSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQ2pDO29CQUNBLElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQztvQkFDZixTQUFTLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQWUsRUFBRSxFQUFFO3dCQUNqRCxPQUFPLEdBQUcsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO3dCQUN6QixJQUFJLFlBQVksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUU7NEJBQ2xDLEtBQUssSUFBSSxPQUFPLENBQUM7eUJBQ2xCOzZCQUFNOzRCQUNMLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLFNBQVMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssSUFBSSxFQUFFO2dDQUN6RCxLQUFLLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFDLEdBQUcsQ0FBQzs2QkFDNUI7eUJBQ0Y7b0JBQ0gsQ0FBQyxDQUFDLENBQUM7b0JBQ0gsT0FBTzt3QkFDTCxLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7d0JBQ3hDLEtBQUssRUFBRSxLQUFLO3FCQUNiLENBQUM7aUJBQ0g7cUJBQU07b0JBQ0wsT0FBTzt3QkFDTCxLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7d0JBQ3hDLEtBQUssRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztxQkFDekMsQ0FBQztpQkFDSDtZQUNILENBQUMsQ0FBQyxDQUFDO1lBRUgsSUFBSSxNQUFNLEVBQUU7Z0JBQ1YsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxHQUFHLFVBQVUsQ0FBQyxDQUFDO2FBQzdEO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxhQUFhLEdBQUcsVUFBVSxDQUFDO2FBQ2pDO1lBQ0QsSUFBSSxDQUFDLGVBQWUsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBRS9DLDZDQUE2QztZQUM3QyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRTtnQkFDdEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7YUFDMUI7WUFFRCxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsTUFBTSxFQUFFO2dCQUM5QyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQzthQUMvQjtRQUNILENBQUMsRUFDRCxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ1IsT0FBTyxDQUFDLEtBQUssQ0FBQyxhQUFhLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDdEMsQ0FBQyxDQUNGLENBQUM7SUFDTixDQUFDO0lBRUQsaUJBQWlCLENBQUMsSUFBUyxFQUFFLElBQVk7UUFDdkMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDdkUsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFXO1FBQ3JCLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO1FBRTNCLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUN4QyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FDeEMsQ0FBQztRQUNGLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLFdBQVcsQ0FBQztRQUNuQyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsd0JBQXdCLENBQ2hFLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUNwQixJQUFJLENBQUMsUUFBUSxDQUNkLENBQUM7UUFDRixJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssR0FBRyxXQUFXLEVBQUUsTUFBTSxDQUFDO1FBRTFDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFDOUIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEVBQUUsQ0FBQztRQUM1QixJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ25ELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7WUFDN0IsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQztZQUMzRCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsNkJBQTZCLENBQUM7WUFDdkQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1lBQ2pDLElBQUksQ0FBQyxRQUFRLENBQUMsaUJBQWlCLEdBQUcsNkJBQTZCLENBQUM7U0FDakU7YUFBTSxJQUNMLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxnQkFBZ0I7WUFDakQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUNqRDtZQUNBLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUM7WUFDM0QsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztZQUM3QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsb0NBQW9DLElBQUksQ0FBQyxnQkFBZ0IsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUNoSCxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7WUFDakMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsR0FBRyxvQ0FBb0MsSUFBSSxDQUFDLGdCQUFnQixNQUFNLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1NBQzFIO2FBQU07WUFDTCxJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDO1lBQzNELElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztTQUNqQztRQUNELElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUU7WUFDN0IsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUN2QztRQUNELElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDO1lBQ3JCLE1BQU0sRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU07WUFDNUIsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLGdCQUFnQjtTQUN4QyxDQUFDLENBQUM7UUFDSCxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDaEYsTUFBTSxhQUFhLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQU8sRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2xFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBQyxhQUFhLENBQUMsQ0FBQztRQUN6RSxJQUFJLENBQUMsa0JBQWtCLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztJQUN2RCxDQUFDO0lBRUQsaUJBQWlCLENBQUMsUUFBYTtRQUM3QixJQUFJLFFBQVEsQ0FBQyxXQUFXLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLEVBQUU7WUFDL0QsUUFBUSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxVQUFlLEVBQUUsRUFBRTtnQkFDL0MsSUFBSSxJQUFJLENBQUMsYUFBYSxJQUFJLFFBQVEsRUFBRTtvQkFDbEMsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUU7d0JBQ2xDLFVBQVUsQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDO3dCQUN4QixJQUFJLENBQUMsdUJBQXVCLENBQUMsVUFBVSxDQUFDLENBQUM7cUJBQzFDO3lCQUFNO3dCQUNMLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDO3dCQUNuRCxJQUNFLElBQUksQ0FBQyxpQkFBaUIsQ0FDcEIsYUFBYSxFQUNiLFVBQVUsQ0FBQyxTQUFTLEVBQ3BCLFVBQVUsQ0FBQyxVQUFVLENBQ3RCLEVBQ0Q7NEJBQ0EsVUFBVSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7eUJBQzdCOzZCQUFNOzRCQUNMLFVBQVUsQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDOzRCQUM3QixJQUFJLENBQUMsdUJBQXVCLENBQUMsVUFBVSxDQUFDLENBQUM7eUJBQzFDO3FCQUNGO2lCQUNGO3FCQUFNLElBQUksSUFBSSxDQUFDLGFBQWEsS0FBSyxVQUFVLEVBQUU7b0JBQzVDLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFO3dCQUNsQyxVQUFVLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQzt3QkFDeEIsSUFBSSxDQUFDLHVCQUF1QixDQUFDLFVBQVUsQ0FBQyxDQUFDO3FCQUMxQzt5QkFBTTt3QkFDTCxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FDM0MsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQzFCLENBQUM7d0JBQ0YsSUFDRSxJQUFJLENBQUMseUJBQXlCLENBQzVCLGNBQWMsRUFDZCxVQUFVLENBQUMsU0FBUyxFQUNwQixVQUFVLENBQUMsVUFBVSxDQUN0QixFQUNEOzRCQUNBLFVBQVUsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO3lCQUM3Qjs2QkFBTTs0QkFDTCxVQUFVLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQzs0QkFDN0IsSUFBSSxDQUFDLHVCQUF1QixDQUFDLFVBQVUsQ0FBQyxDQUFDO3lCQUMxQztxQkFDRjtpQkFDRjtZQUNILENBQUMsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDO0lBRUQsdUJBQXVCLENBQUMsS0FBVTtRQUNoQyxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUk7WUFBRSxPQUFPO1FBRWxDLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUU7WUFDOUIsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRTtnQkFDN0IsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztnQkFFN0IsSUFBSSxJQUFJLENBQUMsVUFBVSxLQUFLLFVBQVUsSUFBSSxPQUFPLEVBQUU7b0JBQzdDLDBCQUEwQjtvQkFDMUIsSUFBSSxRQUFRLElBQUksT0FBTyxFQUFFO3dCQUN2QixPQUFPLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQztxQkFDckI7b0JBRUQsdUNBQXVDO29CQUN2QyxJQUFJLE9BQU8sQ0FBQyxXQUFXLElBQUksT0FBTyxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO3dCQUN6RCxPQUFPLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQWUsRUFBRSxFQUFFOzRCQUM5QyxJQUFJLENBQUMsdUJBQXVCLENBQUMsVUFBVSxDQUFDLENBQUM7d0JBQzNDLENBQUMsQ0FBQyxDQUFDO3FCQUNKO2lCQUNGO2dCQUVELElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxTQUFTLElBQUksT0FBTyxJQUFJLE9BQU8sQ0FBQyxJQUFJLEVBQUU7b0JBQzVELHNEQUFzRDtvQkFDdEQsSUFBSSxDQUFDLHVCQUF1QixDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO2lCQUN0RDtZQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsaUJBQWlCLENBQUMsTUFBVyxFQUFFLFNBQWlCLEVBQUUsVUFBZTtRQUMvRCxNQUFNLGdCQUFnQixHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDO1lBQ2hELENBQUMsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDdkQsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUM3QixNQUFNLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7WUFDNUIsQ0FBQyxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUN6QyxDQUFDLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3pCLFFBQVEsU0FBUyxFQUFFO1lBQ2pCLEtBQUssSUFBSTtnQkFDUCxPQUFPLE1BQU0sSUFBSSxVQUFVLENBQUM7WUFDOUIsS0FBSyxHQUFHO2dCQUNOLE9BQU8sTUFBTSxJQUFJLFVBQVUsQ0FBQztZQUM5QixLQUFLLElBQUk7Z0JBQ1AsT0FBTyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDM0MsS0FBSyxRQUFRO2dCQUNYLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDNUM7Z0JBQ0UsT0FBTyxLQUFLLENBQUM7U0FDaEI7SUFDSCxDQUFDO0lBRUQseUJBQXlCLENBQ3ZCLE9BQVksRUFDWixTQUFpQixFQUNqQixVQUFlO1FBRWYsTUFBTSxnQkFBZ0IsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQztZQUNoRCxDQUFDLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3pDLENBQUMsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDMUIsT0FBTyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDO1lBQzlCLENBQUMsQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDaEQsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUMxQixRQUFRLFNBQVMsRUFBRTtZQUNqQixLQUFLLElBQUk7Z0JBQ1AsT0FBTyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBVyxFQUFFLEVBQUUsQ0FBQyxNQUFNLElBQUksZ0JBQWdCLENBQUMsQ0FBQztZQUNwRSxLQUFLLEdBQUc7Z0JBQ04sT0FBTyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBVyxFQUFFLEVBQUUsQ0FBQyxNQUFNLElBQUksZ0JBQWdCLENBQUMsQ0FBQztZQUNuRSxLQUFLLElBQUk7Z0JBQ1AsT0FBTyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBVyxFQUFFLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztZQUMxRSxLQUFLLFFBQVE7Z0JBQ1gsT0FBTyxPQUFPLENBQUMsS0FBSyxDQUNsQixDQUFDLE1BQVcsRUFBRSxFQUFFLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQ3BELENBQUM7WUFDSjtnQkFDRSxPQUFPLEtBQUssQ0FBQztTQUNoQjtJQUNILENBQUM7SUFFRCxnQkFBZ0IsQ0FDZCxPQUFnQixFQUNoQixVQUFrQix3QkFBd0I7UUFFMUMsSUFBSSxPQUFPLEVBQUU7WUFDWCxJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDO1NBQzVEO2FBQU07WUFDTCxnRUFBZ0U7U0FDakU7SUFDSCxDQUFDO0lBRU8sY0FBYztRQUNwQixPQUFPLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLE1BQU07WUFDL0IsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLGVBQWUsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRTtZQUMvQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFRCxJQUFJLFNBQVM7UUFDWCxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDO0lBQ3pFLENBQUM7SUFFRCxJQUFJLFlBQVk7UUFDZCxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUM7SUFDdkUsQ0FBQztJQUVPLGFBQWEsQ0FBQyxTQUFjO1FBQ2xDLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxHQUFVLEVBQUUsRUFBRSxDQUN0QyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQztZQUNsQixHQUFHLENBQUMsSUFBSSxDQUNOLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FDUCxJQUFJLEVBQUUsV0FBVyxLQUFLLFlBQVk7Z0JBQ2xDLElBQUksRUFBRSxXQUFXLEtBQUssV0FBVyxDQUNwQyxDQUFDO1FBRUosT0FBTyxDQUNMLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUM7WUFDbkMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQztZQUNsQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLENBQzFDLENBQUM7SUFDSixDQUFDO0lBRUQsaUJBQWlCLENBQUMsS0FBVTtRQUMxQixNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO1FBQzdCLElBQ0UsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsWUFBWSxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUM7WUFDbEQsT0FBTyxDQUFDLFlBQVk7WUFDdEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsbUNBQW1DO1VBQ2hFO1lBQ0EsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1NBQ3JCO2FBSUksSUFBSSxJQUFJLENBQUMsVUFBVSxLQUFLLFVBQVUsSUFBSSxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUM7WUFDOUUsSUFBSSxDQUFDLFdBQVcsSUFBRyxDQUFDLENBQUM7WUFDckIsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7U0FDOUI7SUFDSCxDQUFDO0lBRU8sWUFBWTtRQUNsQixJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVc7WUFBRSxPQUFPO1FBQzlCLDREQUE0RDtRQUM1RCxNQUFNLGlCQUFpQixHQUFHLENBQUMsR0FBVSxFQUFFLEVBQUU7WUFDdkMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDO2dCQUFFLE9BQU87WUFDaEMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO2dCQUNuQixJQUFJLElBQUksQ0FBQyxXQUFXLEtBQUssWUFBWSxFQUFFO29CQUNyQyxJQUFJLFdBQVcsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsSUFBSSxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7b0JBQ3ZELElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7aUJBQ2hEO1lBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUM7UUFFRixpQkFBaUIsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3BDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbkMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUUxQyxpQ0FBaUM7UUFDakMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRCxNQUFNLENBQUMsVUFBa0I7UUFDdkIsSUFBSSxJQUFJLENBQUMsVUFBVSxLQUFJLFVBQVUsRUFBQztZQUNoQyxJQUFJLENBQUMsV0FBVyxHQUFFLENBQUMsQ0FBQztZQUNwQixJQUFJLENBQUMscUJBQXFCLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7U0FDL0M7YUFDSSxJQUFJLElBQUksQ0FBQyxVQUFVLEtBQUssS0FBSyxFQUFFO1lBQ2xDLGtCQUFrQjtZQUNsQixJQUFJLFVBQVUsSUFBSSxVQUFVLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFO2dCQUMxQyxNQUFNLFdBQVcsR0FBRyxVQUFVLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQzdDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUMxRCxNQUFNLENBQUMsS0FBSyxFQUFFLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FDbEQsQ0FBQzthQUNIO2lCQUFNO2dCQUNMLDRDQUE0QztnQkFDNUMsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO2FBQ2hEO1NBQ0Y7YUFDSTtZQUNILGdCQUFnQjtZQUNoQixJQUFJLFVBQVUsSUFBSSxVQUFVLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFO2dCQUMxQyx5REFBeUQ7Z0JBQ3pELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQzthQUM1QztpQkFBTTtnQkFDTCxpRUFBaUU7Z0JBQ2pFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLENBQUMsQ0FBQzthQUM3QjtZQUVELG1CQUFtQjtZQUNuQixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztZQUN4QixzQkFBc0I7WUFDdEIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztTQUNwQztJQUNILENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxVQUFrQjtRQUNuQyw4REFBOEQ7UUFDOUQsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7UUFFeEQsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRTtZQUNwQixJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFNLEVBQUUsRUFBRTtnQkFDakMsSUFBSSxDQUFDLENBQUMsV0FBVyxLQUFLLGVBQWUsRUFBRTtvQkFDckMsQ0FBQyxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7aUJBQzNCO1lBQ0gsQ0FBQyxDQUFDLENBQUM7U0FDSjtRQUVELElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUU7WUFDckIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBTSxFQUFFLEVBQUU7Z0JBQ2xDLElBQUksQ0FBQyxDQUFDLFdBQVcsS0FBSyxlQUFlLEVBQUU7b0JBQ3JDLENBQUMsQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO2lCQUMzQjtZQUNILENBQUMsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQzlCLElBQUksQ0FBQyxTQUFTLEdBQUcsWUFBWSxJQUFJLENBQUMsZUFBZSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLENBQUM7U0FDekU7YUFBTTtZQUNMLElBQUksQ0FBQyxTQUFTLEdBQUcsWUFBWSxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxDQUFDO1NBQ2pEO1FBRUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzdDLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsaUJBQWlCLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUM3QyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ2xCLElBQUksQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQ2hEO0lBQ0gsQ0FBQzsrR0FqcUJVLHVCQUF1QjttR0FBdkIsdUJBQXVCLDZPQzFCcEMscTNGQTZFQTs7NEZEbkRhLHVCQUF1QjtrQkFMbkMsU0FBUzsrQkFDRSxzQkFBc0I7NlNBS3ZCLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNJLFlBQVk7c0JBQXJCLE1BQU07Z0JBNEJFLFdBQVc7c0JBQW5CLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMb2dpYyB9IGZyb20gJy4vLi4vLi4vbW9kZWxzL2xvZ2ljLm1vZGVsJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE91dHB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2Zvcm0uc2VydmljZSc7XG5pbXBvcnQgeyBFbGVtZW50VHJhY2tlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9lbGVtZW50LXRyYWNrZXIuc2VydmljZSc7XG5pbXBvcnQgeyBWYWxpZGF0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3ZhbGlkYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBTY29yZUNhbGN1bGF0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3Njb3JlLnNlcnZpY2UnO1xuaW1wb3J0IHsgV2hlbkNsYXVzZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy93aGVuQ2xhdXNlLnNlcnZpY2UnO1xuaW1wb3J0IHsgSGlkZGVuRmllbGRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvaGlkZGVuLWZpZWxkLnNlcnZpY2UnO1xuXG5pbnRlcmZhY2UgRHJvcERvd25EYXRhIHtcbiAgdmFsdWU6IHN0cmluZztcbiAgbGFiZWw6IHN0cmluZztcbiAgaW1hZ2U6IHN0cmluZztcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLWRyb3AtZG93bi1maWVsZHMnLFxuICB0ZW1wbGF0ZVVybDogJy4vZHJvcC1kb3duLWZpZWxkcy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Ryb3AtZG93bi1maWVsZHMuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgRHJvcERvd25GaWVsZHNDb21wb25lbnQge1xuICBASW5wdXQoKSBxdWVzdGlvbjogYW55ID0ge307XG4gIEBJbnB1dCgpIGluTGluZTogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBpbkNhcmQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgc3VibWlzc2lvbkluZGV4ITogbnVtYmVyO1xuICBAT3V0cHV0KCkgYW5zd2VyQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjx7XG4gICAgYW5zd2VyOiBhbnk7XG4gICAgbWF4UG9zc2libGVTY29yZT86IG51bWJlcjtcbiAgfT4oKTtcblxuICBjb3VudDogbnVtYmVyID0gMDtcbiAgcmVxdWlyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaGludDogc3RyaW5nID0gJyc7XG4gIHNlbGVjdGlvblR5cGU6IHN0cmluZyA9ICcnO1xuICBtaW5pbXVtU2VsZWN0aW9uOiBudW1iZXIgPSAwO1xuICBtYXhpbXVtU2VsZWN0aW9uOiBudW1iZXIgPSAwO1xuICBvcHRpb25UeXBlOiBzdHJpbmcgPSAnJztcbiAgbG9va3VwVGFibGU6IHN0cmluZyA9ICcnO1xuICBjdXN0b21PcHRpb25zOiBEcm9wRG93bkRhdGFbXSA9IFtdO1xuICBvcmlnaW5hbE9wdGlvbnM6IERyb3BEb3duRGF0YVtdID0gW107XG4gIGRhdGFiYXNlOiBhbnkgPSB7fTtcbiAgYXBpOiBhbnkgPSB7fTtcbiAgb3JpZ2luYWxBcGk6IGFueSA9IHt9O1xuICBzZWxlY3RlZFZhbHVlOiBhbnlbXSA9IFtdO1xuICB2YWxpZGF0aW9uRmFpbGVkITogYm9vbGVhbjtcbiAgdmFsaWRhdGlvbk1lc3NhZ2U6IHN0cmluZyA9ICcnO1xuICBwcml2YXRlIGVsZW1lbnRJZDogc3RyaW5nID0gJyc7XG4gIGhhc01vcmVEYXRhOiBib29sZWFuID0gdHJ1ZTtcbiAgbWF4UG9zc2libGVTY29yZT86IG51bWJlcjtcbiAgc2VsZWN0ZWRWYWx1ZXM6IGFueVtdID0gW107XG4gIGRiUGFnZUluZGV4OiBudW1iZXIgPSAwO1xuICBkYlBhZ2VTaXplOiBudW1iZXIgPSAxMDtcbiAgZGJUb3RhbFBhZ2VzOiBudW1iZXIgPSAwO1xuICBASW5wdXQoKSBkaXNhYmxlRWRpdDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZm9ybVNlcnZpY2U6IEZvcm1TZXJ2aWNlLFxuICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIHZhbGlkYXRpb25TZXJ2aWNlOiBWYWxpZGF0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIHRyYWNrZXI6IEVsZW1lbnRUcmFja2VyU2VydmljZSxcbiAgICBwcml2YXRlIHNjb3JlQ2FsY1NlcnZpY2U6IFNjb3JlQ2FsY3VsYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgd2hlbkNsYXVzZVNlcnZpY2U6V2hlbkNsYXVzZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBoaWRkZW5GaWVsZFNlcnZpY2U6SGlkZGVuRmllbGRTZXJ2aWNlXG4gICkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnZhbHVlQXNzaWduZWQoKTtcbiAgfVxuXG4gIG9uVmFsdWVDaGFuZ2UobmV3VmFsdWU6IGFueSkge1xuICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZSA9IG5ld1ZhbHVlO1xuICAgIHRoaXMuc2VsZWN0SXRlbXMoKTtcbiAgfVxuXG4gIHZhbHVlQXNzaWduZWQoKSB7XG4gICAgdGhpcy5jb3VudCA9IHRoaXMucXVlc3Rpb24uY291bnQ7XG4gICAgdGhpcy5yZXF1aXJlZCA9IHRoaXMucXVlc3Rpb24ucmVxdWlyZWQ7XG4gICAgdGhpcy5oaW50ID0gdGhpcy5xdWVzdGlvbi5oaW50O1xuICAgIHRoaXMuc2VsZWN0aW9uVHlwZSA9IHRoaXMucXVlc3Rpb24uZm9ybUVsZW1lbnQuYXBwZWFyYW5jZS5zZWxlY3Rpb25UeXBlO1xuICAgIHRoaXMubWluaW11bVNlbGVjdGlvbiA9XG4gICAgICB0aGlzLnF1ZXN0aW9uLmZvcm1FbGVtZW50LnZhbGlkYXRpb24ubWluaW11bVNlbGVjdGlvbjtcbiAgICB0aGlzLm1heGltdW1TZWxlY3Rpb24gPVxuICAgICAgdGhpcy5xdWVzdGlvbi5mb3JtRWxlbWVudC52YWxpZGF0aW9uLm1heGltdW1TZWxlY3Rpb247XG4gICAgdGhpcy5vcHRpb25UeXBlID0gdGhpcy5xdWVzdGlvbi5mb3JtRWxlbWVudC5vcHRpb24ub3B0aW9uVHlwZTtcblxuICAgIC8vIC0tLSBDaGVjayBpZiBhbnN3ZXIgaXMgcHJlc2VudCAtLS1cbiAgICBpZiAodGhpcy5xdWVzdGlvbi5hbnN3ZXIgJiYgQXJyYXkuaXNBcnJheSh0aGlzLnF1ZXN0aW9uLmFuc3dlcikpIHtcbiAgICAgIGlmICh0aGlzLm9wdGlvblR5cGUgPT09ICdBUEknKSB7XG4gICAgICAgIHRoaXMuYXBpID0gdGhpcy5xdWVzdGlvbi5mb3JtRWxlbWVudC5vcHRpb24uYXBpO1xuICAgICAgICB0aGlzLm9yaWdpbmFsQXBpID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmFwaSkpO1xuICAgICAgICAvLyDinIUgQ2hlY2sgaWYgcGFnaW5hdGlvbiBpcyBlbmFibGVkIChwYWdlSW5kZXggKyBwYWdlU2l6ZSBleGlzdCBpbiBwYXJhbXMgd2l0aCB2YWx1ZVNvdXJjZSlcbiAgICAgICAgY29uc3QgaGFzUGFnaW5hdGlvbiA9XG4gICAgICAgICAgdGhpcy5hcGk/LnBhcmFtcz8uc29tZSgocDogYW55KSA9PiBwLnZhbHVlU291cmNlID09PSAnUEFHRV9JTkRFWCcpICYmXG4gICAgICAgICAgdGhpcy5hcGk/LnBhcmFtcz8uc29tZSgocDogYW55KSA9PiBwLnZhbHVlU291cmNlID09PSAnUEFHRV9TSVpFJyk7XG5cbiAgICAgICAgaWYgKGhhc1BhZ2luYXRpb24pIHtcbiAgICAgICAgICAvLyDinIUgUG9wdWxhdGUgc2VsZWN0ZWQgdmFsdWVzIGZyb20gYW5zd2VyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlcyA9IHRoaXMucXVlc3Rpb24uYW5zd2VyLm1hcCgoYW5zOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHBhcnRzID0gYW5zLnNwbGl0KCd8Jyk7XG4gICAgICAgICAgICByZXR1cm4gcGFydHMubGVuZ3RoID4gMSA/IHBhcnRzWzFdIDogcGFydHNbMF07XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgIGVsc2UgaWYgKHRoaXMub3B0aW9uVHlwZSA9PT0gJ0RBVEFCQVNFJykge1xuICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWVzID0gdGhpcy5xdWVzdGlvbi5hbnN3ZXIubWFwKChhbnM6IHN0cmluZykgPT4ge1xuICAgICAgICAgIGNvbnN0IHBhcnRzID0gYW5zLnNwbGl0KCd8Jyk7XG4gICAgICAgICAgcmV0dXJuIHBhcnRzLmxlbmd0aCA+IDEgPyBwYXJ0c1sxXSA6IHBhcnRzWzBdO1xuICAgICAgICB9KX07XG4gICAgfVxuXG5cbiAgICAvLyAtLS0gSGFuZGxlIGRpZmZlcmVudCBvcHRpb24gdHlwZXMgLS0tXG4gICAgc3dpdGNoICh0aGlzLm9wdGlvblR5cGUpIHtcbiAgICAgIGNhc2UgJ09QVElPTic6XG4gICAgICAgIHRoaXMuY3VzdG9tT3B0aW9ucyA9IHRoaXMucXVlc3Rpb24uZm9ybUVsZW1lbnQub3B0aW9uLmN1c3RvbU9wdGlvbnMubWFwKFxuICAgICAgICAgIChvcHRpb246IHsgdmFsdWU6IHN0cmluZyB9KSA9PiAoe1xuICAgICAgICAgICAgbGFiZWw6IG9wdGlvbi52YWx1ZSxcbiAgICAgICAgICAgIHZhbHVlOiBvcHRpb24udmFsdWUsXG4gICAgICAgICAgICBpbWFnZTogJycsXG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5vcmlnaW5hbE9wdGlvbnMgPSBbLi4udGhpcy5jdXN0b21PcHRpb25zXTtcbiAgICAgICAgaWYgKHRoaXMucXVlc3Rpb24uYW5zd2VyKSB7XG4gICAgICAgICAgdGhpcy5pbml0aWFsaXplQ3VzdG9tT3B0aW9uKCk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ0xPT0tVUCc6XG4gICAgICAgIHRoaXMubG9va3VwVGFibGUgPSB0aGlzLnF1ZXN0aW9uLmZvcm1FbGVtZW50Lm9wdGlvbi5sb29rdXBUYWJsZTtcbiAgICAgICAgdGhpcy5mZXRjaERhdGFGcm9tTG9va3VwKCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdEQVRBQkFTRSc6XG4gICAgICAgIHRoaXMuZGF0YWJhc2UgPSB0aGlzLnF1ZXN0aW9uLmZvcm1FbGVtZW50Lm9wdGlvbi5kYXRhYmFzZTtcbiAgICAgICAgdGhpcy5mZXRjaERhdGFGcm9tRGF0YWJhc2UoKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ0FQSSc6XG4gICAgICAgIGlmICghdGhpcy5hcGkgfHwgT2JqZWN0LmtleXModGhpcy5hcGkpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIHRoaXMuYXBpID0gdGhpcy5xdWVzdGlvbi5mb3JtRWxlbWVudC5vcHRpb24uYXBpO1xuICAgICAgICAgIHRoaXMub3JpZ2luYWxBcGkgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuYXBpKSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5mZXRjaERhdGFGcm9tQVBJKCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBjb25zb2xlLndhcm4oJ1Vua25vd24gb3B0aW9uIHR5cGU6JywgdGhpcy5vcHRpb25UeXBlKTtcbiAgICB9XG5cbiAgICAvLyAtLS0gU2NvcmluZyAtLS1cbiAgICBpZiAoXG4gICAgICB0aGlzLnF1ZXN0aW9uLmZvcm1FbGVtZW50LnNjb3JpbmcgJiZcbiAgICAgIHRoaXMucXVlc3Rpb24uZm9ybUVsZW1lbnQuc2NvcmluZy5lbmFibGVTY29yaW5nXG4gICAgKSB7XG4gICAgICB0aGlzLm1heFBvc3NpYmxlU2NvcmUgPVxuICAgICAgICB0aGlzLnNjb3JlQ2FsY1NlcnZpY2UuZ2V0TWF4UG9zc2libGVTY29yZUZvclF1ZXN0aW9uKHRoaXMucXVlc3Rpb24pO1xuICAgICAgdGhpcy5xdWVzdGlvbi5tYXhQb3NzaWJsZVNjb3JlID0gdGhpcy5tYXhQb3NzaWJsZVNjb3JlO1xuICAgIH1cbiAgfVxuXG4gIGluaXRpYWxpemVDdXN0b21PcHRpb24oKSB7XG5cbiAgICB0aGlzLmN1c3RvbU9wdGlvbnMuZm9yRWFjaCgob3B0aW9uOiBhbnkpID0+IHtcbiAgICAgIGNvbnN0IGlzTWF0Y2ggPSB0aGlzLnF1ZXN0aW9uPy5hbnN3ZXI/LnNvbWUoKGE6IGFueSkgPT4ge1xuICAgICAgICBjb25zdCBwYXJ0cyA9IGEudHJpbSgpLnNwbGl0KCd8Jyk7XG4gICAgICAgIGlmIChwYXJ0cy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgICBjb25zdCBsYWJlbCA9IHBhcnRzWzBdO1xuICAgICAgICAgIGNvbnN0IHZhbHVlID0gcGFydHNbMV07XG4gICAgICAgICAgcmV0dXJuIHZhbHVlID09IG9wdGlvbi52YWx1ZSAmJiBsYWJlbCA9PSBvcHRpb24ubGFiZWw7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIGlmIChpc01hdGNoKSB7XG4gICAgICAgIGNvbnN0IGFscmVhZHlFeGlzdHMgPSB0aGlzLnNlbGVjdGVkVmFsdWUuc29tZShcbiAgICAgIChpdGVtOiBhbnkpID0+IGl0ZW0udmFsdWUgPT09IG9wdGlvbi52YWx1ZVxuICAgICk7XG5cbiAgICBpZiAoIWFscmVhZHlFeGlzdHMpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZSA9IFsuLi50aGlzLnNlbGVjdGVkVmFsdWUsIG9wdGlvbl07XG4gICAgfVxuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGFuc3dlcnMgPSBBcnJheS5pc0FycmF5KHRoaXMucXVlc3Rpb24uYW5zd2VyKSA/IHRoaXMucXVlc3Rpb24uYW5zd2VyIDogW107XG4gICAgICAgICAgY29uc3QgcGFyc2VkQW5zd2VycyA9IGFuc3dlcnMubWFwKChhbnM6YW55KSA9PiBhbnMuc3BsaXQoJ3wnKVsxXSk7XG4gICAgICAgICAgdGhpcy53aGVuQ2xhdXNlU2VydmljZS5zZXRRdWVzdGlvbkFuc3dlcih0aGlzLnF1ZXN0aW9uLmlkLHBhcnNlZEFuc3dlcnMsdHJ1ZSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMucXVlc3Rpb24uY2hpbGRMb2dpY3MgJiYgdGhpcy5xdWVzdGlvbi5hbnN3ZXIpIHtcbiAgICAgICAgdGhpcy51cGRhdGVDaGlsZExvZ2ljcyh0aGlzLnF1ZXN0aW9uKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHRyYW5zZm9ybURhdGFiYXNlT2JqZWN0KGRhdGFiYXNlOiBhbnksc2VsZWN0ZWRWYWx1ZXM6c3RyaW5nW109W10pIHtcbiAgICByZXR1cm4ge1xuICAgICAgdGFibGVOYW1lOiBkYXRhYmFzZS50YWJsZU5hbWUsXG4gICAgICB2YWx1ZUZpZWxkOiBkYXRhYmFzZS52YWx1ZUZpZWxkLFxuICAgICAgbGFiZWxGaWVsZDogZGF0YWJhc2UubGFiZWxGaWVsZCxcbiAgICAgIGxhYmVsUGF0dGVybjogZGF0YWJhc2U/LmxhYmVsUGF0dGVybixcbiAgICAgIHNlbGVjdGVkVmFsdWVzOiBzZWxlY3RlZFZhbHVlcyxcbiAgICAgIGNyaXRlcmlhOiBkYXRhYmFzZS5jcml0ZXJpYS5tYXAoKGNyaXRlcmlhOiBhbnkpID0+ICh7XG4gICAgICAgIGZpZWxkOiBjcml0ZXJpYS5maWVsZCxcbiAgICAgICAgdmFsdWVTb3VyY2U6IGNyaXRlcmlhPy52YWx1ZVNvdXJjZSxcbiAgICAgICAgY29uZGl0aW9uOiBjcml0ZXJpYS5jb25kaXRpb24sXG4gICAgICAgIHZhbHVlOiBjcml0ZXJpYS5pbnB1dFZhbHVlLFxuICAgICAgICBsb2dpY2FsT3BlcmF0b3I6IGNyaXRlcmlhLmxvZ2ljYWxPcGVyYXRvcixcbiAgICAgIH0pKSxcbiAgICB9O1xuICB9XG5cbiAgZmV0Y2hEYXRhRnJvbURhdGFiYXNlKHNlYXJjaFN0cmluZzpzdHJpbmc9JycpIHtcbiAgIGNvbnN0IHZhbHVlPSB0aGlzLnF1ZXN0aW9uPy5hbnN3ZXI/Lm1hcCgoYTogc3RyaW5nKSA9PiB7XG4gICAgY29uc3QgW2xhYmVsLCB2YWx1ZV0gPSBhLnNwbGl0KCd8Jyk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGxhYmVsLFxuICAgICAgdmFsdWVcbiAgICB9O1xuICB9KVxuICAgIGNvbnN0IHRyYW5zZm9ybWVkRGF0YWJhc2UgPSB0aGlzLnRyYW5zZm9ybURhdGFiYXNlT2JqZWN0KHRoaXMuZGF0YWJhc2UsdmFsdWUpO1xuICAgIHRoaXMuZm9ybVNlcnZpY2UuZmV0Y2hEYXRhRnJvbURhdGFiYXNlKHRyYW5zZm9ybWVkRGF0YWJhc2UsdGhpcy5kYlBhZ2VJbmRleCx0aGlzLmRiUGFnZVNpemUsc2VhcmNoU3RyaW5nLHRydWUpLnN1YnNjcmliZShcbiAgICAgIChyZXNwb25zZSkgPT4ge1xuICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2Vzcykge1xuICAgICAgICAgIHRoaXMuZGJUb3RhbFBhZ2VzID0gcmVzcG9uc2UucmVzdWx0LnRvdGFsUGFnZXM7XG4gICAgICAgICAgY29uc3QgbmV3T3B0aW9ucyA9XG4gICAgICAgICAgICByZXNwb25zZS5yZXN1bHQ/LmNvbnRlbnQ/Lm1hcChcbiAgICAgICAgICAgICAgKGl0ZW06IHsgdmFsdWU6IHN0cmluZzsgbGFiZWw6IHN0cmluZyB9KSA9PiAoe1xuICAgICAgICAgICAgICAgIHZhbHVlOiBpdGVtLnZhbHVlLFxuICAgICAgICAgICAgICAgIGxhYmVsOiBpdGVtLmxhYmVsLFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKSB8fCBbXTtcbiAgICAgICAgICBpZiAodGhpcy5kYlBhZ2VJbmRleCA9PT0gMCkge1xuICAgICAgICAgICAgdGhpcy5jdXN0b21PcHRpb25zID0gWy4uLm5ld09wdGlvbnNdO1xuICAgICAgICAgIH1cbiAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY3VzdG9tT3B0aW9ucyA9IFtcbiAgICAgICAgICAgICAgLi4udGhpcy5jdXN0b21PcHRpb25zLFxuICAgICAgICAgICAgICAuLi5uZXdPcHRpb25zLFxuICAgICAgICAgICAgXTtcbiAgICAgICAgICB9XG5cblxuICAgICAgICAgIHRoaXMub3JpZ2luYWxPcHRpb25zID0gWy4uLnRoaXMuY3VzdG9tT3B0aW9uc107XG5cbiAgICAgICAgICBpZiAodGhpcy5xdWVzdGlvbi5hbnN3ZXIpIHtcbiAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZUN1c3RvbU9wdGlvbigpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBmZXRjaGluZyBkYXRhIGZyb20gZGF0YWJhc2U6JywgcmVzcG9uc2UubWVzc2FnZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfSxcbiAgICAgIChlcnJvcikgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdIVFRQIEVycm9yOicsIGVycm9yKTtcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBmZXRjaERhdGFGcm9tTG9va3VwKCkge1xuICAgIHRoaXMuZm9ybVNlcnZpY2UuZmV0Y2hEYXRhRnJvbUxvb2t1cCh0aGlzLmxvb2t1cFRhYmxlKS5zdWJzY3JpYmUoXG4gICAgICAocmVzcG9uc2UpID0+IHtcbiAgICAgICAgdGhpcy5jdXN0b21PcHRpb25zID0gcmVzcG9uc2UucmVzdWx0LnZhbHVlcy5tYXAoXG4gICAgICAgICAgKGl0ZW06IHsgdmFsdWU6IHN0cmluZzsgbGFiZWw6IHN0cmluZyB9KSA9PiAoe1xuICAgICAgICAgICAgdmFsdWU6IGl0ZW0udmFsdWUsXG4gICAgICAgICAgICBsYWJlbDogaXRlbS5sYWJlbCxcbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgICB0aGlzLm9yaWdpbmFsT3B0aW9ucyA9IFsuLi50aGlzLmN1c3RvbU9wdGlvbnNdO1xuICAgICAgICBpZiAodGhpcy5xdWVzdGlvbi5hbnN3ZXIpIHtcbiAgICAgICAgICB0aGlzLmluaXRpYWxpemVDdXN0b21PcHRpb24oKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIChlcnJvcikgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdIVFRQIEVycm9yOicsIGVycm9yKTtcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgZmV0Y2hEYXRhRnJvbUFQSShhcHBlbmQ6IGJvb2xlYW4gPSBmYWxzZSwgc2VhcmNoOiBib29sZWFuID0gZmFsc2UpIHtcbiAgICBjb25zdCBhcGlDb25maWcgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuYXBpKSk7XG4gICAgaWYgKCF0aGlzLmhhc01vcmVEYXRhICYmIGFwcGVuZCkge1xuICAgICAgLy8gSWYgbm8gbW9yZSBkYXRhIGZyb20gbGFzdCBjYWxsIGFuZCB0aGlzIGlzIGFuIGFwcGVuZCBjYWxsLCBza2lwIEFQSVxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBhbGxvd2VkQ2hhcnMgPSBbJy4nLCAnLCcsICctJywgJ18nLCAnKCcsICcpJywgJyddO1xuXG4gICAgaWYgKHNlYXJjaCkge1xuICAgICAgaWYgKGFwaUNvbmZpZy5wYXJhbXMpIHtcbiAgICAgICAgYXBpQ29uZmlnLnBhcmFtcyA9IGFwaUNvbmZpZy5wYXJhbXMuZmlsdGVyKFxuICAgICAgICAgIChwOiBhbnkpID0+IHAudmFsdWVTb3VyY2UgIT09ICdTRUxFQ1RFRF9WQUxVRVMnXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBpZiAoYXBpQ29uZmlnLmhlYWRlcnMpIHtcbiAgICAgICAgYXBpQ29uZmlnLmhlYWRlcnMgPSBhcGlDb25maWcuaGVhZGVycy5maWx0ZXIoXG4gICAgICAgICAgKGg6IGFueSkgPT4gaC52YWx1ZVNvdXJjZSAhPT0gJ1NFTEVDVEVEX1ZBTFVFUydcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmZvcm1TZXJ2aWNlXG4gICAgICAuZmV0Y2hEYXRhRnJvbUV4dGVybmFsQVBJKGFwaUNvbmZpZywgdGhpcy5zZWxlY3RlZFZhbHVlcylcbiAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgIChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgIGxldCBkYXRhO1xuICAgICAgICAgIGlmIChhcGlDb25maWcucGF0aFRvVmFsdWUpIHtcbiAgICAgICAgICAgIGRhdGEgPSB0aGlzLmV4dHJhY3REYXRhQnlQYXRoKHJlc3BvbnNlLCBhcGlDb25maWcucGF0aFRvVmFsdWUpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBkYXRhID0gcmVzcG9uc2U7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgbmV3T3B0aW9ucyA9IGRhdGEubWFwKChpdGVtOiBhbnkpID0+IHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgYXBpQ29uZmlnLmxhYmVsUGF0dGVybiAmJlxuICAgICAgICAgICAgICBBcnJheS5pc0FycmF5KGFwaUNvbmZpZy5sYWJlbFBhdHRlcm4pICYmXG4gICAgICAgICAgICAgIGFwaUNvbmZpZy5sYWJlbFBhdHRlcm4ubGVuZ3RoID4gMFxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIGxldCBsYWJlbCA9ICcnO1xuICAgICAgICAgICAgICBhcGlDb25maWcubGFiZWxQYXR0ZXJuLmZvckVhY2goKHBhdHRlcm46IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgICAgIHBhdHRlcm4gPSBwYXR0ZXJuLnRyaW0oKTtcbiAgICAgICAgICAgICAgICBpZiAoYWxsb3dlZENoYXJzLmluY2x1ZGVzKHBhdHRlcm4pKSB7XG4gICAgICAgICAgICAgICAgICBsYWJlbCArPSBwYXR0ZXJuO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICBpZiAoaXRlbVtwYXR0ZXJuXSAhPT0gdW5kZWZpbmVkICYmIGl0ZW1bcGF0dGVybl0gIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgbGFiZWwgKz0gaXRlbVtwYXR0ZXJuXSsnICc7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogaXRlbVthcGlDb25maWcudmFsdWVGaWVsZC50cmltKCldLFxuICAgICAgICAgICAgICAgIGxhYmVsOiBsYWJlbCxcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdmFsdWU6IGl0ZW1bYXBpQ29uZmlnLnZhbHVlRmllbGQudHJpbSgpXSxcbiAgICAgICAgICAgICAgICBsYWJlbDogaXRlbVthcGlDb25maWcubGFiZWxGaWVsZC50cmltKCldLFxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgaWYgKGFwcGVuZCkge1xuICAgICAgICAgICAgdGhpcy5jdXN0b21PcHRpb25zID0gWy4uLnRoaXMuY3VzdG9tT3B0aW9ucywgLi4ubmV3T3B0aW9uc107XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY3VzdG9tT3B0aW9ucyA9IG5ld09wdGlvbnM7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMub3JpZ2luYWxPcHRpb25zID0gWy4uLnRoaXMuY3VzdG9tT3B0aW9uc107XG5cbiAgICAgICAgICAvLyBJZiBubyBuZXcgZGF0YSByZXR1cm5lZCwgbWFyayBhcyBsYXN0IHBhZ2VcbiAgICAgICAgICBpZiAoIW5ld09wdGlvbnMubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLmhhc01vcmVEYXRhID0gZmFsc2U7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHRoaXMucXVlc3Rpb24uYW5zd2VyICYmICFhcHBlbmQgJiYgIXNlYXJjaCkge1xuICAgICAgICAgICAgdGhpcy5pbml0aWFsaXplQ3VzdG9tT3B0aW9uKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICAoZXJyb3IpID0+IHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdIVFRQIEVycm9yOicsIGVycm9yKTtcbiAgICAgICAgfVxuICAgICAgKTtcbiAgfVxuXG4gIGV4dHJhY3REYXRhQnlQYXRoKGRhdGE6IGFueSwgcGF0aDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHBhdGguc3BsaXQoJy4nKS5yZWR1Y2UoKGFjYywgcGFydCkgPT4gYWNjICYmIGFjY1twYXJ0XSwgZGF0YSk7XG4gIH1cblxuICBzZWxlY3RJdGVtcyhldmVudD86IGFueSkge1xuICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZSA9IGV2ZW50O1xuXG4gICAgY29uc3QgdmFsdWVzQXJyYXkgPSB0aGlzLnNlbGVjdGVkVmFsdWUubWFwKFxuICAgICAgKGl0ZW0pID0+IGAke2l0ZW0ubGFiZWx9fCR7aXRlbS52YWx1ZX1gXG4gICAgKTtcbiAgICB0aGlzLnF1ZXN0aW9uLmFuc3dlciA9IHZhbHVlc0FycmF5O1xuICAgIGNvbnN0IHNjb3JlUmVzdWx0ID0gdGhpcy5zY29yZUNhbGNTZXJ2aWNlLmNhbGN1bGF0ZVNjb3JlRnJvbUFuc3dlcihcbiAgICAgIHRoaXMucXVlc3Rpb24uYW5zd2VyLFxuICAgICAgdGhpcy5xdWVzdGlvblxuICAgICk7XG4gICAgdGhpcy5xdWVzdGlvbi5zY29yZSA9IHNjb3JlUmVzdWx0Py5zY29yZXM7XG5cbiAgICB0aGlzLnZhbGlkYXRpb25GYWlsZWQgPSBmYWxzZTtcbiAgICB0aGlzLnZhbGlkYXRpb25NZXNzYWdlID0gJyc7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRWYWx1ZS5sZW5ndGggPT0gMCAmJiB0aGlzLnJlcXVpcmVkKSB7XG4gICAgICB0aGlzLnZhbGlkYXRpb25GYWlsZWQgPSB0cnVlO1xuICAgICAgdGhpcy52YWxpZGF0aW9uU2VydmljZS5jbGVhckludmFsaWQodGhpcy5idWlsZEVsZW1lbnRJZCgpKTtcbiAgICAgIHRoaXMudmFsaWRhdGlvbk1lc3NhZ2UgPSBgVGhpcyBpcyBhIHJlcXVpcmVkIHF1ZXN0aW9uYDtcbiAgICAgIHRoaXMucXVlc3Rpb24udmFsaWRhdGlvbiA9IGZhbHNlO1xuICAgICAgdGhpcy5xdWVzdGlvbi52YWxpZGF0aW9uTWVzc2FnZSA9IGBUaGlzIGlzIGEgcmVxdWlyZWQgcXVlc3Rpb25gO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICB0aGlzLnNlbGVjdGVkVmFsdWUubGVuZ3RoIDwgdGhpcy5taW5pbXVtU2VsZWN0aW9uIHx8XG4gICAgICB0aGlzLnNlbGVjdGVkVmFsdWUubGVuZ3RoID4gdGhpcy5tYXhpbXVtU2VsZWN0aW9uXG4gICAgKSB7XG4gICAgICB0aGlzLnZhbGlkYXRpb25TZXJ2aWNlLmNsZWFySW52YWxpZCh0aGlzLmJ1aWxkRWxlbWVudElkKCkpO1xuICAgICAgdGhpcy52YWxpZGF0aW9uRmFpbGVkID0gdHJ1ZTtcbiAgICAgIHRoaXMudmFsaWRhdGlvbk1lc3NhZ2UgPSBgc2VsZWN0ZWQgb3B0aW9ucyBtdXN0IGJlIGJldHdlZW4gJHt0aGlzLm1pbmltdW1TZWxlY3Rpb259ICYgJHt0aGlzLm1heGltdW1TZWxlY3Rpb259YDtcbiAgICAgIHRoaXMucXVlc3Rpb24udmFsaWRhdGlvbiA9IGZhbHNlO1xuICAgICAgdGhpcy5xdWVzdGlvbi52YWxpZGF0aW9uTWVzc2FnZSA9IGBzZWxlY3RlZCBvcHRpb25zIG11c3QgYmUgYmV0d2VlbiAke3RoaXMubWluaW11bVNlbGVjdGlvbn0gJiAke3RoaXMubWF4aW11bVNlbGVjdGlvbn1gO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnZhbGlkYXRpb25TZXJ2aWNlLmNsZWFySW52YWxpZCh0aGlzLmJ1aWxkRWxlbWVudElkKCkpO1xuICAgICAgdGhpcy5xdWVzdGlvbi52YWxpZGF0aW9uID0gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKHRoaXMucXVlc3Rpb24uY2hpbGRMb2dpY3MpIHtcbiAgICAgIHRoaXMudXBkYXRlQ2hpbGRMb2dpY3ModGhpcy5xdWVzdGlvbik7XG4gICAgfVxuICAgIHRoaXMuYW5zd2VyQ2hhbmdlLmVtaXQoe1xuICAgICAgYW5zd2VyOiB0aGlzLnF1ZXN0aW9uLmFuc3dlcixcbiAgICAgIG1heFBvc3NpYmxlU2NvcmU6IHRoaXMubWF4UG9zc2libGVTY29yZSxcbiAgICB9KTtcbiAgICBjb25zdCBhbnN3ZXJzID0gQXJyYXkuaXNBcnJheSh0aGlzLnF1ZXN0aW9uLmFuc3dlcikgPyB0aGlzLnF1ZXN0aW9uLmFuc3dlciA6IFtdO1xuICAgIGNvbnN0IHBhcnNlZEFuc3dlcnMgPSBhbnN3ZXJzLm1hcCgoYW5zOmFueSkgPT4gYW5zLnNwbGl0KCd8JylbMV0pO1xuICAgIHRoaXMud2hlbkNsYXVzZVNlcnZpY2Uuc2V0UXVlc3Rpb25BbnN3ZXIodGhpcy5xdWVzdGlvbi5pZCxwYXJzZWRBbnN3ZXJzKTtcbiAgICB0aGlzLmhpZGRlbkZpZWxkU2VydmljZS51cGRhdGVIaWRkZW5GaWVsZHNPbkNoYW5nZSgpO1xuICB9XG5cbiAgdXBkYXRlQ2hpbGRMb2dpY3MocXVlc3Rpb246IGFueSkge1xuICAgIGlmIChxdWVzdGlvbi5jaGlsZExvZ2ljcyAmJiBBcnJheS5pc0FycmF5KHF1ZXN0aW9uLmNoaWxkTG9naWNzKSkge1xuICAgICAgcXVlc3Rpb24uY2hpbGRMb2dpY3MuZm9yRWFjaCgoY2hpbGRMb2dpYzogYW55KSA9PiB7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGlvblR5cGUgPT0gJ1NJTkdMRScpIHtcbiAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZFZhbHVlLmxlbmd0aCA9PSAwKSB7XG4gICAgICAgICAgICBjaGlsZExvZ2ljLnNob3cgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuY2xlYXJBbnN3ZXJzUmVjdXJzaXZlbHkoY2hpbGRMb2dpYyk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkVmFsdWUgPSB0aGlzLnNlbGVjdGVkVmFsdWVbMF0/LmxhYmVsO1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICB0aGlzLmV2YWx1YXRlQ29uZGl0aW9uKFxuICAgICAgICAgICAgICAgIHNlbGVjdGVkVmFsdWUsXG4gICAgICAgICAgICAgICAgY2hpbGRMb2dpYy5jb25kaXRpb24sXG4gICAgICAgICAgICAgICAgY2hpbGRMb2dpYy5pbnB1dFZhbHVlXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICBjaGlsZExvZ2ljLnNob3dMb2dpYyA9IHRydWU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBjaGlsZExvZ2ljLnNob3dMb2dpYyA9IGZhbHNlO1xuICAgICAgICAgICAgICB0aGlzLmNsZWFyQW5zd2Vyc1JlY3Vyc2l2ZWx5KGNoaWxkTG9naWMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNlbGVjdGlvblR5cGUgPT09ICdNVUxUSVBMRScpIHtcbiAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZFZhbHVlLmxlbmd0aCA9PSAwKSB7XG4gICAgICAgICAgICBjaGlsZExvZ2ljLnNob3cgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuY2xlYXJBbnN3ZXJzUmVjdXJzaXZlbHkoY2hpbGRMb2dpYyk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkVmFsdWVzID0gdGhpcy5zZWxlY3RlZFZhbHVlLm1hcChcbiAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT4gaXRlbS5sYWJlbFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgdGhpcy5ldmFsdWF0ZU11bHRpcGxlQ29uZGl0aW9uKFxuICAgICAgICAgICAgICAgIHNlbGVjdGVkVmFsdWVzLFxuICAgICAgICAgICAgICAgIGNoaWxkTG9naWMuY29uZGl0aW9uLFxuICAgICAgICAgICAgICAgIGNoaWxkTG9naWMuaW5wdXRWYWx1ZVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgY2hpbGRMb2dpYy5zaG93TG9naWMgPSB0cnVlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgY2hpbGRMb2dpYy5zaG93TG9naWMgPSBmYWxzZTtcbiAgICAgICAgICAgICAgdGhpcy5jbGVhckFuc3dlcnNSZWN1cnNpdmVseShjaGlsZExvZ2ljKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGNsZWFyQW5zd2Vyc1JlY3Vyc2l2ZWx5KGxvZ2ljOiBhbnkpIHtcbiAgICBpZiAoIWxvZ2ljIHx8ICFsb2dpYy5yb3dzKSByZXR1cm47XG5cbiAgICBsb2dpYy5yb3dzLmZvckVhY2goKHJvdzogYW55KSA9PiB7XG4gICAgICByb3cuZ3JpZC5mb3JFYWNoKChpdGVtOiBhbnkpID0+IHtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IGl0ZW0uZWxlbWVudDtcblxuICAgICAgICBpZiAoaXRlbS5lbnRpdHlUeXBlID09PSAnUVVFU1RJT04nICYmIGVsZW1lbnQpIHtcbiAgICAgICAgICAvLyBDbGVhciBhbnN3ZXIgaWYgcHJlc2VudFxuICAgICAgICAgIGlmICgnYW5zd2VyJyBpbiBlbGVtZW50KSB7XG4gICAgICAgICAgICBlbGVtZW50LmFuc3dlciA9ICcnO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIFJlY3Vyc2l2ZWx5IGNsZWFyIGNoaWxkTG9naWNzIGlmIGFueVxuICAgICAgICAgIGlmIChlbGVtZW50LmNoaWxkTG9naWNzICYmIGVsZW1lbnQuY2hpbGRMb2dpY3MubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgZWxlbWVudC5jaGlsZExvZ2ljcy5mb3JFYWNoKChjaGlsZExvZ2ljOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5jbGVhckFuc3dlcnNSZWN1cnNpdmVseShjaGlsZExvZ2ljKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpdGVtLmVudGl0eVR5cGUgPT09ICdTVUJGT1JNJyAmJiBlbGVtZW50ICYmIGVsZW1lbnQucm93cykge1xuICAgICAgICAgIC8vIFNVQkZPUk0gY29udGFpbnMgaXRzIG93biByb3dzIHN0cnVjdHVyZSBsaWtlIGEgZm9ybVxuICAgICAgICAgIHRoaXMuY2xlYXJBbnN3ZXJzUmVjdXJzaXZlbHkoeyByb3dzOiBlbGVtZW50LnJvd3MgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgZXZhbHVhdGVDb25kaXRpb24oYW5zd2VyOiBhbnksIGNvbmRpdGlvbjogc3RyaW5nLCBpbnB1dFZhbHVlOiBhbnkpOiBib29sZWFuIHtcbiAgICBjb25zdCBzdHJpbmdJbnB1dFZhbHVlID0gQXJyYXkuaXNBcnJheShpbnB1dFZhbHVlKVxuICAgICAgPyBpbnB1dFZhbHVlLm1hcCgodmFsKSA9PiB2YWwudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpKVxuICAgICAgOiBpbnB1dFZhbHVlLnRvTG93ZXJDYXNlKCk7XG4gICAgYW5zd2VyID0gQXJyYXkuaXNBcnJheShhbnN3ZXIpXG4gICAgICA/IGFuc3dlcj8ubWFwKChhbnMpID0+IGFucy50b0xvd2VyQ2FzZSgpKVxuICAgICAgOiBhbnN3ZXIudG9Mb3dlckNhc2UoKTtcbiAgICBzd2l0Y2ggKGNvbmRpdGlvbikge1xuICAgICAgY2FzZSAnIT0nOlxuICAgICAgICByZXR1cm4gYW5zd2VyICE9IGlucHV0VmFsdWU7XG4gICAgICBjYXNlICc9JzpcbiAgICAgICAgcmV0dXJuIGFuc3dlciA9PSBpbnB1dFZhbHVlO1xuICAgICAgY2FzZSAnSU4nOlxuICAgICAgICByZXR1cm4gc3RyaW5nSW5wdXRWYWx1ZS5pbmNsdWRlcyhhbnN3ZXIpO1xuICAgICAgY2FzZSAnTk9UIElOJzpcbiAgICAgICAgcmV0dXJuICFzdHJpbmdJbnB1dFZhbHVlLmluY2x1ZGVzKGFuc3dlcik7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgZXZhbHVhdGVNdWx0aXBsZUNvbmRpdGlvbihcbiAgICBhbnN3ZXJzOiBhbnksXG4gICAgY29uZGl0aW9uOiBzdHJpbmcsXG4gICAgaW5wdXRWYWx1ZTogYW55XG4gICk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHN0cmluZ0lucHV0VmFsdWUgPSBBcnJheS5pc0FycmF5KGlucHV0VmFsdWUpXG4gICAgICA/IGlucHV0VmFsdWUubWFwKCh2YWwpID0+IHZhbC50b1N0cmluZygpKVxuICAgICAgOiBpbnB1dFZhbHVlLnRvU3RyaW5nKCk7XG4gICAgYW5zd2VycyA9IEFycmF5LmlzQXJyYXkoYW5zd2VycylcbiAgICAgID8gYW5zd2Vycz8ubWFwKChhbnN3ZXIpID0+IGFuc3dlci50b0xvd2VyQ2FzZSgpKVxuICAgICAgOiBhbnN3ZXJzLnRvTG93ZXJDYXNlKCk7XG4gICAgc3dpdGNoIChjb25kaXRpb24pIHtcbiAgICAgIGNhc2UgJyE9JzpcbiAgICAgICAgcmV0dXJuIGFuc3dlcnMuZXZlcnkoKGFuc3dlcjogYW55KSA9PiBhbnN3ZXIgIT0gc3RyaW5nSW5wdXRWYWx1ZSk7XG4gICAgICBjYXNlICc9JzpcbiAgICAgICAgcmV0dXJuIGFuc3dlcnMuc29tZSgoYW5zd2VyOiBhbnkpID0+IGFuc3dlciA9PSBzdHJpbmdJbnB1dFZhbHVlKTtcbiAgICAgIGNhc2UgJ0lOJzpcbiAgICAgICAgcmV0dXJuIGFuc3dlcnMuc29tZSgoYW5zd2VyOiBhbnkpID0+IHN0cmluZ0lucHV0VmFsdWUuaW5jbHVkZXMoYW5zd2VyKSk7XG4gICAgICBjYXNlICdOT1QgSU4nOlxuICAgICAgICByZXR1cm4gYW5zd2Vycy5ldmVyeShcbiAgICAgICAgICAoYW5zd2VyOiBhbnkpID0+ICFzdHJpbmdJbnB1dFZhbHVlLmluY2x1ZGVzKGFuc3dlcilcbiAgICAgICAgKTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVWYWxpZGF0aW9uKFxuICAgIGlzVmFsaWQ6IGJvb2xlYW4sXG4gICAgbWVzc2FnZTogc3RyaW5nID0gJ1RoaXMgZmllbGQgaXMgcmVxdWlyZWQnXG4gICkge1xuICAgIGlmIChpc1ZhbGlkKSB7XG4gICAgICB0aGlzLnZhbGlkYXRpb25TZXJ2aWNlLmNsZWFySW52YWxpZCh0aGlzLmJ1aWxkRWxlbWVudElkKCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyB0aGlzLnZhbGlkYXRpb25TZXJ2aWNlLnNldEludmFsaWQodGhpcy5xdWVzdGlvbi5pZCwgbWVzc2FnZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBidWlsZEVsZW1lbnRJZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmluTGluZSB8fCB0aGlzLmluQ2FyZFxuICAgICAgPyBgJHt0aGlzLnN1Ym1pc3Npb25JbmRleH0tJHt0aGlzLnF1ZXN0aW9uLmlkfWBcbiAgICAgIDogYCR7dGhpcy5xdWVzdGlvbi5pZH1gO1xuICB9XG5cbiAgZ2V0IGlzSW52YWxpZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLnZhbGlkYXRpb25TZXJ2aWNlLmdldEVycm9yTWVzc2FnZSh0aGlzLmJ1aWxkRWxlbWVudElkKCkpO1xuICB9XG5cbiAgZ2V0IGVycm9yTWVzc2FnZSgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy52YWxpZGF0aW9uU2VydmljZS5nZXRFcnJvck1lc3NhZ2UodGhpcy5idWlsZEVsZW1lbnRJZCgpKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFzUGFnaW5hdGlvbihhcGlDb25maWc6IGFueSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGNoZWNrVmFsdWVTb3VyY2UgPSAoYXJyOiBhbnlbXSkgPT5cbiAgICAgIEFycmF5LmlzQXJyYXkoYXJyKSAmJlxuICAgICAgYXJyLnNvbWUoXG4gICAgICAgIChpdGVtKSA9PlxuICAgICAgICAgIGl0ZW0/LnZhbHVlU291cmNlID09PSAnUEFHRV9JTkRFWCcgfHxcbiAgICAgICAgICBpdGVtPy52YWx1ZVNvdXJjZSA9PT0gJ1BBR0VfU0laRSdcbiAgICAgICk7XG5cbiAgICByZXR1cm4gKFxuICAgICAgY2hlY2tWYWx1ZVNvdXJjZShhcGlDb25maWcuaGVhZGVycykgfHxcbiAgICAgIGNoZWNrVmFsdWVTb3VyY2UoYXBpQ29uZmlnLnBhcmFtcykgfHxcbiAgICAgIGNoZWNrVmFsdWVTb3VyY2UoYXBpQ29uZmlnLnBhdGhWYXJpYWJsZXMpXG4gICAgKTtcbiAgfVxuXG4gIGdldE5leHRTZXRPZkl0ZW1zKGV2ZW50OiBhbnkpIHtcbiAgICBjb25zdCBlbGVtZW50ID0gZXZlbnQudGFyZ2V0O1xuICAgIGlmIChcbiAgICAgIE1hdGguZmxvb3IoZWxlbWVudC5zY3JvbGxIZWlnaHQgLSBlbGVtZW50LnNjcm9sbFRvcCkgPD1cbiAgICAgICAgZWxlbWVudC5jbGllbnRIZWlnaHQgJiZcbiAgICAgIHRoaXMuaGFzUGFnaW5hdGlvbih0aGlzLmFwaSkgLy8gT25seSBpZiBwYWdpbmF0aW9uIGlzIGNvbmZpZ3VyZWRcbiAgICApIHtcbiAgICAgIHRoaXMubG9hZE5leHRQYWdlKCk7XG4gICAgfVxuXG5cblxuICAgIGVsc2UgaWYoIHRoaXMub3B0aW9uVHlwZSA9PT0gJ0RBVEFCQVNFJyAmJiB0aGlzLmRiUGFnZUluZGV4IDwgdGhpcy5kYlRvdGFsUGFnZXMpe1xuICAgICAgdGhpcy5kYlBhZ2VJbmRleCArPTE7XG4gICAgICB0aGlzLmZldGNoRGF0YUZyb21EYXRhYmFzZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbG9hZE5leHRQYWdlKCkge1xuICAgIGlmICghdGhpcy5oYXNNb3JlRGF0YSkgcmV0dXJuO1xuICAgIC8vIEZpbmQgdGhlIFBBR0VfSU5ERVggcGFyYW0vaGVhZGVyL3BhdGhWYXIgYW5kIGluY3JlbWVudCBpdFxuICAgIGNvbnN0IHVwZGF0ZVZhbHVlU291cmNlID0gKGFycjogYW55W10pID0+IHtcbiAgICAgIGlmICghQXJyYXkuaXNBcnJheShhcnIpKSByZXR1cm47XG4gICAgICBhcnIuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICBpZiAoaXRlbS52YWx1ZVNvdXJjZSA9PT0gJ1BBR0VfSU5ERVgnKSB7XG4gICAgICAgICAgbGV0IGN1cnJlbnRQYWdlID0gcGFyc2VJbnQoaXRlbS5pbnB1dFZhbHVlIHx8ICcwJywgMTApO1xuICAgICAgICAgIGl0ZW0uaW5wdXRWYWx1ZSA9IChjdXJyZW50UGFnZSArIDEpLnRvU3RyaW5nKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH07XG5cbiAgICB1cGRhdGVWYWx1ZVNvdXJjZSh0aGlzLmFwaS5oZWFkZXJzKTtcbiAgICB1cGRhdGVWYWx1ZVNvdXJjZSh0aGlzLmFwaS5wYXJhbXMpO1xuICAgIHVwZGF0ZVZhbHVlU291cmNlKHRoaXMuYXBpLnBhdGhWYXJpYWJsZXMpO1xuXG4gICAgLy8gQ2FsbCB5b3VyIGZldGNoIGZ1bmN0aW9uIGFnYWluXG4gICAgdGhpcy5mZXRjaERhdGFGcm9tQVBJKHRydWUpO1xuICB9XG5cbiAgc2VhcmNoKHNlYXJjaFRlcm06IHN0cmluZykge1xuICAgIGlmKCB0aGlzLm9wdGlvblR5cGUgPT09J0RBVEFCQVNFJyl7XG4gICAgICB0aGlzLmRiUGFnZUluZGV4ID0wO1xuICAgICAgdGhpcy5mZXRjaERhdGFGcm9tRGF0YWJhc2Uoc2VhcmNoVGVybS50cmltKCkpO1xuICAgIH1cbiAgICBlbHNlIGlmICh0aGlzLm9wdGlvblR5cGUgIT09ICdBUEknKSB7XG4gICAgICAvLyDwn5S5IExvY2FsIHNlYXJjaFxuICAgICAgaWYgKHNlYXJjaFRlcm0gJiYgc2VhcmNoVGVybS50cmltKCkgIT09ICcnKSB7XG4gICAgICAgIGNvbnN0IGxvd2VyU2VhcmNoID0gc2VhcmNoVGVybS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICB0aGlzLmN1c3RvbU9wdGlvbnMgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5maWx0ZXIoKG9wdGlvbikgPT5cbiAgICAgICAgICBvcHRpb24ubGFiZWw/LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMobG93ZXJTZWFyY2gpXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBSZXNldCB0byBmdWxsIGxpc3Qgd2hlbiBzZWFyY2ggaXMgY2xlYXJlZFxuICAgICAgICB0aGlzLmN1c3RvbU9wdGlvbnMgPSBbLi4udGhpcy5vcmlnaW5hbE9wdGlvbnNdO1xuICAgICAgfVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIC8vIPCflLkgQVBJIHNlYXJjaFxuICAgICAgaWYgKHNlYXJjaFRlcm0gJiYgc2VhcmNoVGVybS50cmltKCkgIT09ICcnKSB7XG4gICAgICAgIC8vIEluamVjdCBzZWFyY2ggdGVybSBpbnRvIEFQSSBjb25maWcgKGhlYWRlcnMgb3IgcGFyYW1zKVxuICAgICAgICB0aGlzLmluamVjdFNlYXJjaFN0cmluZyhzZWFyY2hUZXJtLnRyaW0oKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyDwn5S5IENsZWFyIHRoZSBzZWFyY2ggc3RyaW5nIGZyb20gQVBJIGNvbmZpZyB3aGVuIGlucHV0IGlzIGVtcHR5XG4gICAgICAgIHRoaXMuaW5qZWN0U2VhcmNoU3RyaW5nKCcnKTtcbiAgICAgIH1cblxuICAgICAgLy8gUmVzZXQgcGFnaW5hdGlvblxuICAgICAgdGhpcy5oYXNNb3JlRGF0YSA9IHRydWU7XG4gICAgICAvLyBGZXRjaCBmcmVzaCByZXN1bHRzXG4gICAgICB0aGlzLmZldGNoRGF0YUZyb21BUEkoZmFsc2UsIHRydWUpO1xuICAgIH1cbiAgfVxuXG4gIGluamVjdFNlYXJjaFN0cmluZyhzZWFyY2hUZXJtOiBzdHJpbmcpIHtcbiAgICAvLyBBbHdheXMgd29yayBvbiBhIGZyZXNoIGNvcHksIGRvbuKAmXQgbXV0YXRlIHRoaXMuYXBpIGRpcmVjdGx5XG4gICAgdGhpcy5hcGkgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMub3JpZ2luYWxBcGkpKTtcblxuICAgIGlmICh0aGlzLmFwaT8ucGFyYW1zKSB7XG4gICAgICB0aGlzLmFwaS5wYXJhbXMuZm9yRWFjaCgocDogYW55KSA9PiB7XG4gICAgICAgIGlmIChwLnZhbHVlU291cmNlID09PSAnU0VBUkNIX1NUUklORycpIHtcbiAgICAgICAgICBwLmlucHV0VmFsdWUgPSBzZWFyY2hUZXJtO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5hcGk/LmhlYWRlcnMpIHtcbiAgICAgIHRoaXMuYXBpLmhlYWRlcnMuZm9yRWFjaCgoaDogYW55KSA9PiB7XG4gICAgICAgIGlmIChoLnZhbHVlU291cmNlID09PSAnU0VBUkNIX1NUUklORycpIHtcbiAgICAgICAgICBoLmlucHV0VmFsdWUgPSBzZWFyY2hUZXJtO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgaWYgKHRoaXMuaW5MaW5lIHx8IHRoaXMuaW5DYXJkKSB7XG4gICAgICB0aGlzLmVsZW1lbnRJZCA9IGBxdWVzdGlvbi0ke3RoaXMuc3VibWlzc2lvbkluZGV4fS0ke3RoaXMucXVlc3Rpb24uaWR9YDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5lbGVtZW50SWQgPSBgcXVlc3Rpb24tJHt0aGlzLnF1ZXN0aW9uLmlkfWA7XG4gICAgfVxuXG4gICAgdGhpcy50cmFja2VyLnJlZ2lzdGVyRWxlbWVudCh0aGlzLmVsZW1lbnRJZCk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLndoZW5DbGF1c2VTZXJ2aWNlLm1hcmtMb2FkQ29tcGxldGVkKCk7XG4gICAgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy5lbGVtZW50SWQpIHtcbiAgICAgIHRoaXMudHJhY2tlci51bnJlZ2lzdGVyRWxlbWVudCh0aGlzLmVsZW1lbnRJZCk7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2XG4gIFtuZ0NsYXNzXT1cInsgJ21iLTQnOiAhaW5MaW5lIH1cIlxuICBjbGFzcz1cInB4LTNcIlxuICBbaWRdPVwiKGluTGluZSB8fCBpbkNhcmQpID8gJ3F1ZXN0aW9uLScgKyBzdWJtaXNzaW9uSW5kZXggKyAnLScgKyBxdWVzdGlvbi5pZCA6ICdxdWVzdGlvbi0nICsgcXVlc3Rpb24uaWRcIlxuICBbYXR0ci5uYW1lXT1cInF1ZXN0aW9uLnRlc3RFbGVtZW50TmFtZVwiXG4+XG4gIDxkaXYgY2xhc3M9XCJpbnB1dC13cmFwcGVyIG1iLTJcIiAqbmdJZj1cIiFpbkxpbmVcIj5cbiAgICA8ZGl2ICpuZ0lmPVwicXVlc3Rpb24ucXVlc3Rpb25OdW1iZXJcIiBbaW5uZXJIVE1MXT1cInF1ZXN0aW9uLnF1ZXN0aW9uTnVtYmVyXCI+PC9kaXY+XG4gICAgPHNwYW4gKm5nSWY9XCJxdWVzdGlvbi5xdWVzdGlvbk51bWJlclwiIGNsYXNzPVwic3BhY2VcIj48L3NwYW4+IDxsYWJlbD57eyBxdWVzdGlvbi5xdWVzdGlvbiB9fTwvbGFiZWxcbiAgICA+Jm5ic3A7XG4gICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWRhbmdlclwiICpuZ0lmPVwicXVlc3Rpb24/LnJlcXVpcmVkXCI+Kjwvc3Bhbj5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cInN2Zy13cmFwcGVyIG1iLTIgaGludEljb25cIlxuICAgICAgW2F0dHIuZGF0YS10aXRsZV09XCJoaW50XCJcbiAgICAgICpuZ0lmPVwiaGludFwiXG4gICAgPlxuICAgICAgPHN2Z1xuICAgICAgICBjbGFzcz1cImhpbnRTdmdcIlxuICAgICAgICB2aWV3Qm94PVwiMCAwIDMwIDMwXCJcbiAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICA+XG4gICAgICAgIDxwYXRoXG4gICAgICAgICAgZmlsbC1ydWxlPVwiZXZlbm9kZFwiXG4gICAgICAgICAgY2xpcC1ydWxlPVwiZXZlbm9kZFwiXG4gICAgICAgICAgZD1cIk0xNSAyNi4yNVYyNi4yNUM4Ljc4NjI1IDI2LjI1IDMuNzUgMjEuMjEzOCAzLjc1IDE1VjE1QzMuNzUgOC43ODYyNSA4Ljc4NjI1IDMuNzUgMTUgMy43NVYzLjc1QzIxLjIxMzggMy43NSAyNi4yNSA4Ljc4NjI1IDI2LjI1IDE1VjE1QzI2LjI1IDIxLjIxMzggMjEuMjEzOCAyNi4yNSAxNSAyNi4yNVpcIlxuICAgICAgICAgIHN0cm9rZT1cIiMzMjMyMzJcIlxuICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuNVwiXG4gICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIlxuICAgICAgICAvPlxuICAgICAgICA8cGF0aFxuICAgICAgICAgIGQ9XCJNMTUgMTYuNTYyM1YxNi4yNDk4QzE1IDE1LjIyODUgMTUuNjMxMiAxNC42NzQ4IDE2LjI2MzcgMTQuMjQ5OEMxNi44ODEyIDEzLjgzMzUgMTcuNSAxMy4yOTEgMTcuNSAxMi4yOTFDMTcuNSAxMC45MDk4IDE2LjM4MTMgOS43OTEwMiAxNSA5Ljc5MTAyQzEzLjYxODcgOS43OTEwMiAxMi41IDEwLjkwOTggMTIuNSAxMi4yOTFcIlxuICAgICAgICAgIHN0cm9rZT1cIiMzMjMyMzJcIlxuICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuNVwiXG4gICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIlxuICAgICAgICAvPlxuICAgICAgICA8cGF0aFxuICAgICAgICAgIGQ9XCJNMTQuOTk4OCAyMEMxNC44MjYzIDIwIDE0LjY4NjMgMjAuMTQgMTQuNjg3NSAyMC4zMTI1QzE0LjY4NzUgMjAuNDg1IDE0LjgyNzUgMjAuNjI1IDE1IDIwLjYyNUMxNS4xNzI1IDIwLjYyNSAxNS4zMTI1IDIwLjQ4NSAxNS4zMTI1IDIwLjMxMjVDMTUuMzEyNSAyMC4xNCAxNS4xNzI1IDIwIDE0Ljk5ODggMjBcIlxuICAgICAgICAgIHN0cm9rZT1cIiMzMjMyMzJcIlxuICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuNVwiXG4gICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIlxuICAgICAgICAvPlxuICAgICAgPC9zdmc+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8IS0tIDxsaWItZHJvcGRvd25cbiAgICBbaXRlbXNdPVwiY3VzdG9tT3B0aW9uc1wiXG4gICAgW211bHRpcGxlXT1cInNlbGVjdGlvblR5cGUgPT09ICdTSU5HTEUnID8gZmFsc2UgOiB0cnVlXCJcbiAgICAoY2xpY2spPVwic2VsZWN0SXRlbXMoKVwiXG4gICAgWyhzZWxlY3RlZEl0ZW1zKV09XCJzZWxlY3RlZFZhbHVlXCJcbiAgPjwvbGliLWRyb3Bkb3duPiAtLT5cblxuICA8bGliLWRyb3Bkb3duXG4gICAgW3BsYWNlaG9sZGVyXT1cIidzZWxlY3QnXCJcbiAgICBbaXRlbXNdPVwiY3VzdG9tT3B0aW9uc1wiXG4gICAgW211bHRpcGxlXT1cInNlbGVjdGlvblR5cGUgPT09ICdTSU5HTEUnID8gZmFsc2UgOiB0cnVlXCJcbiAgICBbZGlzYWJsZV09XCJkaXNhYmxlRWRpdFwiXG4gICAgKHNlbGVjdGVkSXRlbXNDaGFuZ2UpPVwic2VsZWN0SXRlbXMoJGV2ZW50KVwiXG4gICAgWyhzZWxlY3RlZEl0ZW1zKV09XCJzZWxlY3RlZFZhbHVlXCJcbiAgICAob25Ecm9wZG93blNjcm9sbCk9XCJnZXROZXh0U2V0T2ZJdGVtcygkZXZlbnQpXCJcbiAgICAob25TZWFyY2gpPVwic2VhcmNoKCRldmVudClcIlxuICA+PC9saWItZHJvcGRvd24+XG5cbiAgPCEtLSAob25Ecm9wZG93blNjcm9sbCk9XCJnZXROZXh0U2V0T2ZJdGVtcygkZXZlbnQpXCJcbiAgKG9uU2VhcmNoKT1cInNlYXJjaCgkZXZlbnQpXCIgLS0+XG4gIDxkaXZcbiAgICAqbmdJZj1cImlzSW52YWxpZCAmJiAoIWluTGluZSB8fCBzZWxlY3RlZFZhbHVlLmxlbmd0aCA9PT0gMClcIlxuICAgIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiXG4gID5cbiAgICB7eyBlcnJvck1lc3NhZ2UgfX1cbiAgPC9kaXY+XG4gIDxkaXYgKm5nSWY9XCJ2YWxpZGF0aW9uRmFpbGVkICYmICFpc0ludmFsaWRcIiBjbGFzcz1cInRleHQtZGFuZ2VyIGVycm9yLW1lc3NhZ2UgbWItMlwiPlxuICAgIHt7IHZhbGlkYXRpb25NZXNzYWdlIH19XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
591
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcC1kb3duLWZpZWxkcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mb3JtLXN1Ym1pc3Npb24vc3JjL2Zvcm0tZmllbGRzL2Ryb3AtZG93bi1maWVsZHMvZHJvcC1kb3duLWZpZWxkcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mb3JtLXN1Ym1pc3Npb24vc3JjL2Zvcm0tZmllbGRzL2Ryb3AtZG93bi1maWVsZHMvZHJvcC1kb3duLWZpZWxkcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBRUwsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDOzs7Ozs7Ozs7O0FBbUJ2QixNQUFNLE9BQU8sdUJBQXVCO0lBbUNsQyxZQUNVLFdBQXdCLEVBQ3hCLEdBQXNCLEVBQ3RCLGlCQUFvQyxFQUNwQyxPQUE4QixFQUM5QixnQkFBeUMsRUFDekMsaUJBQW1DLEVBQ25DLGtCQUFxQztRQU5yQyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3BDLFlBQU8sR0FBUCxPQUFPLENBQXVCO1FBQzlCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBeUI7UUFDekMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFrQjtRQUNuQyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW1CO1FBekN0QyxhQUFRLEdBQVEsRUFBRSxDQUFDO1FBQ25CLFdBQU0sR0FBWSxLQUFLLENBQUM7UUFDeEIsV0FBTSxHQUFZLEtBQUssQ0FBQztRQUV2QixpQkFBWSxHQUFHLElBQUksWUFBWSxFQUdyQyxDQUFDO1FBRUwsVUFBSyxHQUFXLENBQUMsQ0FBQztRQUNsQixhQUFRLEdBQVksS0FBSyxDQUFDO1FBQzFCLFNBQUks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QUF1Qiw2T0MxQnBDLHEzRkE2RUE7OzRGRG5EYSx1QkFBdUI7a0JBTG5DLFNBQVM7K0JBQ0Usc0JBQXNCOzZTQUt2QixRQUFRO3NCQUFoQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDSSxZQUFZO3NCQUFyQixNQUFNO2dCQTRCRSxXQUFXO3NCQUFuQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTG9naWMgfSBmcm9tICcuLy4uLy4uL21vZGVscy9sb2dpYy5tb2RlbCc7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPdXRwdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9mb3JtLnNlcnZpY2UnO1xuaW1wb3J0IHsgRWxlbWVudFRyYWNrZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZWxlbWVudC10cmFja2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgVmFsaWRhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy92YWxpZGF0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2NvcmVDYWxjdWxhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9zY29yZS5zZXJ2aWNlJztcbmltcG9ydCB7IFdoZW5DbGF1c2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvd2hlbkNsYXVzZS5zZXJ2aWNlJztcbmltcG9ydCB7IEhpZGRlbkZpZWxkU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2hpZGRlbi1maWVsZC5zZXJ2aWNlJztcblxuaW50ZXJmYWNlIERyb3BEb3duRGF0YSB7XG4gIHZhbHVlOiBzdHJpbmc7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIGltYWdlOiBzdHJpbmc7XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1kcm9wLWRvd24tZmllbGRzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Ryb3AtZG93bi1maWVsZHMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kcm9wLWRvd24tZmllbGRzLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIERyb3BEb3duRmllbGRzQ29tcG9uZW50IHtcbiAgQElucHV0KCkgcXVlc3Rpb246IGFueSA9IHt9O1xuICBASW5wdXQoKSBpbkxpbmU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgaW5DYXJkOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIHN1Ym1pc3Npb25JbmRleCE6IG51bWJlcjtcbiAgQE91dHB1dCgpIGFuc3dlckNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8e1xuICAgIGFuc3dlcjogYW55O1xuICAgIG1heFBvc3NpYmxlU2NvcmU/OiBudW1iZXI7XG4gIH0+KCk7XG5cbiAgY291bnQ6IG51bWJlciA9IDA7XG4gIHJlcXVpcmVkOiBib29sZWFuID0gZmFsc2U7XG4gIGhpbnQ6IHN0cmluZyA9ICcnO1xuICBzZWxlY3Rpb25UeXBlOiBzdHJpbmcgPSAnJztcbiAgbWluaW11bVNlbGVjdGlvbjogbnVtYmVyID0gMDtcbiAgbWF4aW11bVNlbGVjdGlvbjogbnVtYmVyID0gMDtcbiAgb3B0aW9uVHlwZTogc3RyaW5nID0gJyc7XG4gIGxvb2t1cFRhYmxlOiBzdHJpbmcgPSAnJztcbiAgY3VzdG9tT3B0aW9uczogRHJvcERvd25EYXRhW10gPSBbXTtcbiAgb3JpZ2luYWxPcHRpb25zOiBEcm9wRG93bkRhdGFbXSA9IFtdO1xuICBkYXRhYmFzZTogYW55ID0ge307XG4gIGFwaTogYW55ID0ge307XG4gIG9yaWdpbmFsQXBpOiBhbnkgPSB7fTtcbiAgc2VsZWN0ZWRWYWx1ZTogYW55W10gPSBbXTtcbiAgdmFsaWRhdGlvbkZhaWxlZCE6IGJvb2xlYW47XG4gIHZhbGlkYXRpb25NZXNzYWdlOiBzdHJpbmcgPSAnJztcbiAgcHJpdmF0ZSBlbGVtZW50SWQ6IHN0cmluZyA9ICcnO1xuICBoYXNNb3JlRGF0YTogYm9vbGVhbiA9IHRydWU7XG4gIG1heFBvc3NpYmxlU2NvcmU/OiBudW1iZXI7XG4gIHNlbGVjdGVkVmFsdWVzOiBhbnlbXSA9IFtdO1xuICBkYlBhZ2VJbmRleDogbnVtYmVyID0gMDtcbiAgZGJQYWdlU2l6ZTogbnVtYmVyID0gMTA7XG4gIGRiVG90YWxQYWdlczogbnVtYmVyID0gMDtcbiAgQElucHV0KCkgZGlzYWJsZUVkaXQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGZvcm1TZXJ2aWNlOiBGb3JtU2VydmljZSxcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSB2YWxpZGF0aW9uU2VydmljZTogVmFsaWRhdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0cmFja2VyOiBFbGVtZW50VHJhY2tlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzY29yZUNhbGNTZXJ2aWNlOiBTY29yZUNhbGN1bGF0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIHdoZW5DbGF1c2VTZXJ2aWNlOldoZW5DbGF1c2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgaGlkZGVuRmllbGRTZXJ2aWNlOkhpZGRlbkZpZWxkU2VydmljZVxuICApIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy52YWx1ZUFzc2lnbmVkKCk7XG4gIH1cblxuICBvblZhbHVlQ2hhbmdlKG5ld1ZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLnNlbGVjdGVkVmFsdWUgPSBuZXdWYWx1ZTtcbiAgICB0aGlzLnNlbGVjdEl0ZW1zKCk7XG4gIH1cblxuICB2YWx1ZUFzc2lnbmVkKCkge1xuICAgIHRoaXMuY291bnQgPSB0aGlzLnF1ZXN0aW9uLmNvdW50O1xuICAgIHRoaXMucmVxdWlyZWQgPSB0aGlzLnF1ZXN0aW9uLnJlcXVpcmVkO1xuICAgIHRoaXMuaGludCA9IHRoaXMucXVlc3Rpb24uaGludDtcbiAgICB0aGlzLnNlbGVjdGlvblR5cGUgPSB0aGlzLnF1ZXN0aW9uLmZvcm1FbGVtZW50LmFwcGVhcmFuY2Uuc2VsZWN0aW9uVHlwZTtcbiAgICB0aGlzLm1pbmltdW1TZWxlY3Rpb24gPVxuICAgICAgdGhpcy5xdWVzdGlvbi5mb3JtRWxlbWVudC52YWxpZGF0aW9uLm1pbmltdW1TZWxlY3Rpb247XG4gICAgdGhpcy5tYXhpbXVtU2VsZWN0aW9uID1cbiAgICAgIHRoaXMucXVlc3Rpb24uZm9ybUVsZW1lbnQudmFsaWRhdGlvbi5tYXhpbXVtU2VsZWN0aW9uO1xuICAgIHRoaXMub3B0aW9uVHlwZSA9IHRoaXMucXVlc3Rpb24uZm9ybUVsZW1lbnQub3B0aW9uLm9wdGlvblR5cGU7XG5cbiAgICAvLyAtLS0gQ2hlY2sgaWYgYW5zd2VyIGlzIHByZXNlbnQgLS0tXG4gICAgaWYgKHRoaXMucXVlc3Rpb24uYW5zd2VyICYmIEFycmF5LmlzQXJyYXkodGhpcy5xdWVzdGlvbi5hbnN3ZXIpKSB7XG4gICAgICBpZiAodGhpcy5vcHRpb25UeXBlID09PSAnQVBJJykge1xuICAgICAgICB0aGlzLmFwaSA9IHRoaXMucXVlc3Rpb24uZm9ybUVsZW1lbnQub3B0aW9uLmFwaTtcbiAgICAgICAgdGhpcy5vcmlnaW5hbEFwaSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5hcGkpKTtcbiAgICAgICAgLy8g4pyFIENoZWNrIGlmIHBhZ2luYXRpb24gaXMgZW5hYmxlZCAocGFnZUluZGV4ICsgcGFnZVNpemUgZXhpc3QgaW4gcGFyYW1zIHdpdGggdmFsdWVTb3VyY2UpXG4gICAgICAgIGNvbnN0IGhhc1BhZ2luYXRpb24gPVxuICAgICAgICAgIHRoaXMuYXBpPy5wYXJhbXM/LnNvbWUoKHA6IGFueSkgPT4gcC52YWx1ZVNvdXJjZSA9PT0gJ1BBR0VfSU5ERVgnKSAmJlxuICAgICAgICAgIHRoaXMuYXBpPy5wYXJhbXM/LnNvbWUoKHA6IGFueSkgPT4gcC52YWx1ZVNvdXJjZSA9PT0gJ1BBR0VfU0laRScpO1xuXG4gICAgICAgIGlmIChoYXNQYWdpbmF0aW9uKSB7XG4gICAgICAgICAgLy8g4pyFIFBvcHVsYXRlIHNlbGVjdGVkIHZhbHVlcyBmcm9tIGFuc3dlclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZXMgPSB0aGlzLnF1ZXN0aW9uLmFuc3dlci5tYXAoKGFuczogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBwYXJ0cyA9IGFucy5zcGxpdCgnfCcpO1xuICAgICAgICAgICAgcmV0dXJuIHBhcnRzLmxlbmd0aCA+IDEgPyBwYXJ0c1sxXSA6IHBhcnRzWzBdO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgICBlbHNlIGlmICh0aGlzLm9wdGlvblR5cGUgPT09ICdEQVRBQkFTRScpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlcyA9IHRoaXMucXVlc3Rpb24uYW5zd2VyLm1hcCgoYW5zOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICBjb25zdCBwYXJ0cyA9IGFucy5zcGxpdCgnfCcpO1xuICAgICAgICAgIHJldHVybiBwYXJ0cy5sZW5ndGggPiAxID8gcGFydHNbMV0gOiBwYXJ0c1swXTtcbiAgICAgICAgfSl9O1xuICAgIH1cblxuXG4gICAgLy8gLS0tIEhhbmRsZSBkaWZmZXJlbnQgb3B0aW9uIHR5cGVzIC0tLVxuICAgIHN3aXRjaCAodGhpcy5vcHRpb25UeXBlKSB7XG4gICAgICBjYXNlICdPUFRJT04nOlxuICAgICAgICB0aGlzLmN1c3RvbU9wdGlvbnMgPSB0aGlzLnF1ZXN0aW9uLmZvcm1FbGVtZW50Lm9wdGlvbi5jdXN0b21PcHRpb25zLm1hcChcbiAgICAgICAgICAob3B0aW9uOiB7IHZhbHVlOiBzdHJpbmcgfSkgPT4gKHtcbiAgICAgICAgICAgIGxhYmVsOiBvcHRpb24udmFsdWUsXG4gICAgICAgICAgICB2YWx1ZTogb3B0aW9uLnZhbHVlLFxuICAgICAgICAgICAgaW1hZ2U6ICcnLFxuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMub3JpZ2luYWxPcHRpb25zID0gWy4uLnRoaXMuY3VzdG9tT3B0aW9uc107XG4gICAgICAgIGlmICh0aGlzLnF1ZXN0aW9uLmFuc3dlcikge1xuICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZUN1c3RvbU9wdGlvbigpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdMT09LVVAnOlxuICAgICAgICB0aGlzLmxvb2t1cFRhYmxlID0gdGhpcy5xdWVzdGlvbi5mb3JtRWxlbWVudC5vcHRpb24ubG9va3VwVGFibGU7XG4gICAgICAgIHRoaXMuZmV0Y2hEYXRhRnJvbUxvb2t1cCgpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnREFUQUJBU0UnOlxuICAgICAgICB0aGlzLmRhdGFiYXNlID0gdGhpcy5xdWVzdGlvbi5mb3JtRWxlbWVudC5vcHRpb24uZGF0YWJhc2U7XG4gICAgICAgIHRoaXMuZmV0Y2hEYXRhRnJvbURhdGFiYXNlKCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdBUEknOlxuICAgICAgICBpZiAoIXRoaXMuYXBpIHx8IE9iamVjdC5rZXlzKHRoaXMuYXBpKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICB0aGlzLmFwaSA9IHRoaXMucXVlc3Rpb24uZm9ybUVsZW1lbnQub3B0aW9uLmFwaTtcbiAgICAgICAgICB0aGlzLm9yaWdpbmFsQXBpID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmFwaSkpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZmV0Y2hEYXRhRnJvbUFQSSgpO1xuICAgICAgICBicmVhaztcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgY29uc29sZS53YXJuKCdVbmtub3duIG9wdGlvbiB0eXBlOicsIHRoaXMub3B0aW9uVHlwZSk7XG4gICAgfVxuXG4gICAgLy8gLS0tIFNjb3JpbmcgLS0tXG4gICAgaWYgKFxuICAgICAgdGhpcy5xdWVzdGlvbi5mb3JtRWxlbWVudC5zY29yaW5nICYmXG4gICAgICB0aGlzLnF1ZXN0aW9uLmZvcm1FbGVtZW50LnNjb3JpbmcuZW5hYmxlU2NvcmluZ1xuICAgICkge1xuICAgICAgdGhpcy5tYXhQb3NzaWJsZVNjb3JlID1cbiAgICAgICAgdGhpcy5zY29yZUNhbGNTZXJ2aWNlLmdldE1heFBvc3NpYmxlU2NvcmVGb3JRdWVzdGlvbih0aGlzLnF1ZXN0aW9uKTtcbiAgICAgIHRoaXMucXVlc3Rpb24ubWF4UG9zc2libGVTY29yZSA9IHRoaXMubWF4UG9zc2libGVTY29yZTtcbiAgICB9XG4gIH1cblxuICBpbml0aWFsaXplQ3VzdG9tT3B0aW9uKCkge1xuXG4gICAgdGhpcy5jdXN0b21PcHRpb25zLmZvckVhY2goKG9wdGlvbjogYW55KSA9PiB7XG4gICAgICBjb25zdCBpc01hdGNoID0gdGhpcy5xdWVzdGlvbj8uYW5zd2VyPy5zb21lKChhOiBhbnkpID0+IHtcbiAgICAgICAgY29uc3QgcGFydHMgPSBhLnRyaW0oKS5zcGxpdCgnfCcpO1xuICAgICAgICBpZiAocGFydHMubGVuZ3RoID09PSAyKSB7XG4gICAgICAgICAgY29uc3QgbGFiZWwgPSBwYXJ0c1swXTtcbiAgICAgICAgICBjb25zdCB2YWx1ZSA9IHBhcnRzWzFdO1xuICAgICAgICAgIHJldHVybiB2YWx1ZSA9PSBvcHRpb24udmFsdWUgJiYgbGFiZWwgPT0gb3B0aW9uLmxhYmVsO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBpZiAoaXNNYXRjaCkge1xuICAgICAgICBjb25zdCBhbHJlYWR5RXhpc3RzID0gdGhpcy5zZWxlY3RlZFZhbHVlLnNvbWUoXG4gICAgICAoaXRlbTogYW55KSA9PiBpdGVtLnZhbHVlID09PSBvcHRpb24udmFsdWVcbiAgICApO1xuXG4gICAgaWYgKCFhbHJlYWR5RXhpc3RzKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkVmFsdWUgPSBbLi4udGhpcy5zZWxlY3RlZFZhbHVlLCBvcHRpb25dO1xuICAgIH1cblxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICBjb25zdCBhbnN3ZXJzID0gQXJyYXkuaXNBcnJheSh0aGlzLnF1ZXN0aW9uLmFuc3dlcikgPyB0aGlzLnF1ZXN0aW9uLmFuc3dlciA6IFtdO1xuICAgICAgICAgIGNvbnN0IHBhcnNlZEFuc3dlcnMgPSBhbnN3ZXJzLm1hcCgoYW5zOmFueSkgPT4gYW5zLnNwbGl0KCd8JylbMV0pO1xuICAgICAgICAgIHRoaXMud2hlbkNsYXVzZVNlcnZpY2Uuc2V0UXVlc3Rpb25BbnN3ZXIodGhpcy5xdWVzdGlvbi5pZCxwYXJzZWRBbnN3ZXJzLHRydWUpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLnF1ZXN0aW9uLmNoaWxkTG9naWNzICYmIHRoaXMucXVlc3Rpb24uYW5zd2VyKSB7XG4gICAgICAgIHRoaXMudXBkYXRlQ2hpbGRMb2dpY3ModGhpcy5xdWVzdGlvbik7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICB0cmFuc2Zvcm1EYXRhYmFzZU9iamVjdChkYXRhYmFzZTogYW55LHNlbGVjdGVkVmFsdWVzOnN0cmluZ1tdPVtdKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRhYmxlTmFtZTogZGF0YWJhc2UudGFibGVOYW1lLFxuICAgICAgdmFsdWVGaWVsZDogZGF0YWJhc2UudmFsdWVGaWVsZCxcbiAgICAgIGxhYmVsRmllbGQ6IGRhdGFiYXNlLmxhYmVsRmllbGQsXG4gICAgICBsYWJlbFBhdHRlcm46IGRhdGFiYXNlPy5sYWJlbFBhdHRlcm4sXG4gICAgICBzZWxlY3RlZFZhbHVlczogc2VsZWN0ZWRWYWx1ZXMsXG4gICAgICBjcml0ZXJpYTogZGF0YWJhc2UuY3JpdGVyaWEubWFwKChjcml0ZXJpYTogYW55KSA9PiAoe1xuICAgICAgICBmaWVsZDogY3JpdGVyaWEuZmllbGQsXG4gICAgICAgIHZhbHVlU291cmNlOiBjcml0ZXJpYT8udmFsdWVTb3VyY2UsXG4gICAgICAgIGNvbmRpdGlvbjogY3JpdGVyaWEuY29uZGl0aW9uLFxuICAgICAgICB2YWx1ZTogY3JpdGVyaWEuaW5wdXRWYWx1ZSxcbiAgICAgICAgbG9naWNhbE9wZXJhdG9yOiBjcml0ZXJpYS5sb2dpY2FsT3BlcmF0b3IsXG4gICAgICB9KSksXG4gICAgfTtcbiAgfVxuXG4gIGZldGNoRGF0YUZyb21EYXRhYmFzZShzZWFyY2hTdHJpbmc6c3RyaW5nPScnKSB7XG4gICBjb25zdCB2YWx1ZT0gdGhpcy5xdWVzdGlvbj8uYW5zd2VyPy5tYXAoKGE6IHN0cmluZykgPT4ge1xuICAgIGNvbnN0IFtsYWJlbCwgdmFsdWVdID0gYS5zcGxpdCgnfCcpO1xuICAgIHJldHVybiB7XG4gICAgICBsYWJlbCxcbiAgICAgIHZhbHVlXG4gICAgfTtcbiAgfSlcbiAgICBjb25zdCB0cmFuc2Zvcm1lZERhdGFiYXNlID0gdGhpcy50cmFuc2Zvcm1EYXRhYmFzZU9iamVjdCh0aGlzLmRhdGFiYXNlLHZhbHVlKTtcbiAgICB0aGlzLmZvcm1TZXJ2aWNlLmZldGNoRGF0YUZyb21EYXRhYmFzZSh0cmFuc2Zvcm1lZERhdGFiYXNlLHRoaXMuZGJQYWdlSW5kZXgsdGhpcy5kYlBhZ2VTaXplLHNlYXJjaFN0cmluZyx0cnVlKS5zdWJzY3JpYmUoXG4gICAgICAocmVzcG9uc2UpID0+IHtcbiAgICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MpIHtcbiAgICAgICAgICB0aGlzLmRiVG90YWxQYWdlcyA9IHJlc3BvbnNlLnJlc3VsdC50b3RhbFBhZ2VzO1xuICAgICAgICAgIGNvbnN0IG5ld09wdGlvbnMgPVxuICAgICAgICAgICAgcmVzcG9uc2UucmVzdWx0Py5jb250ZW50Py5tYXAoXG4gICAgICAgICAgICAgIChpdGVtOiB7IHZhbHVlOiBzdHJpbmc7IGxhYmVsOiBzdHJpbmcgfSkgPT4gKHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogaXRlbS52YWx1ZSxcbiAgICAgICAgICAgICAgICBsYWJlbDogaXRlbS5sYWJlbCxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICkgfHwgW107XG4gICAgICAgICAgaWYgKHRoaXMuZGJQYWdlSW5kZXggPT09IDApIHtcbiAgICAgICAgICAgIHRoaXMuY3VzdG9tT3B0aW9ucyA9IFsuLi5uZXdPcHRpb25zXTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmN1c3RvbU9wdGlvbnMgPSBbXG4gICAgICAgICAgICAgIC4uLnRoaXMuY3VzdG9tT3B0aW9ucyxcbiAgICAgICAgICAgICAgLi4ubmV3T3B0aW9ucyxcbiAgICAgICAgICAgIF07XG4gICAgICAgICAgfVxuXG5cbiAgICAgICAgICB0aGlzLm9yaWdpbmFsT3B0aW9ucyA9IFsuLi50aGlzLmN1c3RvbU9wdGlvbnNdO1xuXG4gICAgICAgICAgaWYgKHRoaXMucXVlc3Rpb24uYW5zd2VyKSB7XG4gICAgICAgICAgICB0aGlzLmluaXRpYWxpemVDdXN0b21PcHRpb24oKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZmV0Y2hpbmcgZGF0YSBmcm9tIGRhdGFiYXNlOicsIHJlc3BvbnNlLm1lc3NhZ2UpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH0sXG4gICAgICAoZXJyb3IpID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcignSFRUUCBFcnJvcjonLCBlcnJvcik7XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgZmV0Y2hEYXRhRnJvbUxvb2t1cCgpIHtcbiAgICB0aGlzLmZvcm1TZXJ2aWNlLmZldGNoRGF0YUZyb21Mb29rdXAodGhpcy5sb29rdXBUYWJsZSkuc3Vic2NyaWJlKFxuICAgICAgKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgIHRoaXMuY3VzdG9tT3B0aW9ucyA9IHJlc3BvbnNlLnJlc3VsdC52YWx1ZXMubWFwKFxuICAgICAgICAgIChpdGVtOiB7IHZhbHVlOiBzdHJpbmc7IGxhYmVsOiBzdHJpbmcgfSkgPT4gKHtcbiAgICAgICAgICAgIHZhbHVlOiBpdGVtLnZhbHVlLFxuICAgICAgICAgICAgbGFiZWw6IGl0ZW0ubGFiZWwsXG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5vcmlnaW5hbE9wdGlvbnMgPSBbLi4udGhpcy5jdXN0b21PcHRpb25zXTtcbiAgICAgICAgaWYgKHRoaXMucXVlc3Rpb24uYW5zd2VyKSB7XG4gICAgICAgICAgdGhpcy5pbml0aWFsaXplQ3VzdG9tT3B0aW9uKCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICAoZXJyb3IpID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcignSFRUUCBFcnJvcjonLCBlcnJvcik7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIGZldGNoRGF0YUZyb21BUEkoYXBwZW5kOiBib29sZWFuID0gZmFsc2UsIHNlYXJjaDogYm9vbGVhbiA9IGZhbHNlKSB7XG4gICAgY29uc3QgYXBpQ29uZmlnID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmFwaSkpO1xuICAgIGlmICghdGhpcy5oYXNNb3JlRGF0YSAmJiBhcHBlbmQpIHtcbiAgICAgIC8vIElmIG5vIG1vcmUgZGF0YSBmcm9tIGxhc3QgY2FsbCBhbmQgdGhpcyBpcyBhbiBhcHBlbmQgY2FsbCwgc2tpcCBBUElcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgYWxsb3dlZENoYXJzID0gWycuJywgJywnLCAnLScsICdfJywgJygnLCAnKScsICcnXTtcblxuICAgIGlmIChzZWFyY2gpIHtcbiAgICAgIGlmIChhcGlDb25maWcucGFyYW1zKSB7XG4gICAgICAgIGFwaUNvbmZpZy5wYXJhbXMgPSBhcGlDb25maWcucGFyYW1zLmZpbHRlcihcbiAgICAgICAgICAocDogYW55KSA9PiBwLnZhbHVlU291cmNlICE9PSAnU0VMRUNURURfVkFMVUVTJ1xuICAgICAgICApO1xuICAgICAgfVxuICAgICAgaWYgKGFwaUNvbmZpZy5oZWFkZXJzKSB7XG4gICAgICAgIGFwaUNvbmZpZy5oZWFkZXJzID0gYXBpQ29uZmlnLmhlYWRlcnMuZmlsdGVyKFxuICAgICAgICAgIChoOiBhbnkpID0+IGgudmFsdWVTb3VyY2UgIT09ICdTRUxFQ1RFRF9WQUxVRVMnXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5mb3JtU2VydmljZVxuICAgICAgLmZldGNoRGF0YUZyb21FeHRlcm5hbEFQSShhcGlDb25maWcsIHRoaXMuc2VsZWN0ZWRWYWx1ZXMpXG4gICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICBsZXQgZGF0YTtcbiAgICAgICAgICBpZiAoYXBpQ29uZmlnLnBhdGhUb1ZhbHVlKSB7XG4gICAgICAgICAgICBkYXRhID0gdGhpcy5leHRyYWN0RGF0YUJ5UGF0aChyZXNwb25zZSwgYXBpQ29uZmlnLnBhdGhUb1ZhbHVlKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZGF0YSA9IHJlc3BvbnNlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IG5ld09wdGlvbnMgPSBkYXRhLm1hcCgoaXRlbTogYW55KSA9PiB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIGFwaUNvbmZpZy5sYWJlbFBhdHRlcm4gJiZcbiAgICAgICAgICAgICAgQXJyYXkuaXNBcnJheShhcGlDb25maWcubGFiZWxQYXR0ZXJuKSAmJlxuICAgICAgICAgICAgICBhcGlDb25maWcubGFiZWxQYXR0ZXJuLmxlbmd0aCA+IDBcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICBsZXQgbGFiZWwgPSAnJztcbiAgICAgICAgICAgICAgYXBpQ29uZmlnLmxhYmVsUGF0dGVybi5mb3JFYWNoKChwYXR0ZXJuOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgICAgICBwYXR0ZXJuID0gcGF0dGVybi50cmltKCk7XG4gICAgICAgICAgICAgICAgaWYgKGFsbG93ZWRDaGFycy5pbmNsdWRlcyhwYXR0ZXJuKSkge1xuICAgICAgICAgICAgICAgICAgbGFiZWwgKz0gcGF0dGVybjtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgaWYgKGl0ZW1bcGF0dGVybl0gIT09IHVuZGVmaW5lZCAmJiBpdGVtW3BhdHRlcm5dICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIGxhYmVsICs9IGl0ZW1bcGF0dGVybl0rJyAnO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdmFsdWU6IGl0ZW1bYXBpQ29uZmlnLnZhbHVlRmllbGQudHJpbSgpXSxcbiAgICAgICAgICAgICAgICBsYWJlbDogbGFiZWwsXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHZhbHVlOiBpdGVtW2FwaUNvbmZpZy52YWx1ZUZpZWxkLnRyaW0oKV0sXG4gICAgICAgICAgICAgICAgbGFiZWw6IGl0ZW1bYXBpQ29uZmlnLmxhYmVsRmllbGQudHJpbSgpXSxcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIGlmIChhcHBlbmQpIHtcbiAgICAgICAgICAgIHRoaXMuY3VzdG9tT3B0aW9ucyA9IFsuLi50aGlzLmN1c3RvbU9wdGlvbnMsIC4uLm5ld09wdGlvbnNdO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmN1c3RvbU9wdGlvbnMgPSBuZXdPcHRpb25zO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLm9yaWdpbmFsT3B0aW9ucyA9IFsuLi50aGlzLmN1c3RvbU9wdGlvbnNdO1xuXG4gICAgICAgICAgLy8gSWYgbm8gbmV3IGRhdGEgcmV0dXJuZWQsIG1hcmsgYXMgbGFzdCBwYWdlXG4gICAgICAgICAgaWYgKCFuZXdPcHRpb25zLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5oYXNNb3JlRGF0YSA9IGZhbHNlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICh0aGlzLnF1ZXN0aW9uLmFuc3dlciAmJiAhYXBwZW5kICYmICFzZWFyY2gpIHtcbiAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZUN1c3RvbU9wdGlvbigpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgKGVycm9yKSA9PiB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignSFRUUCBFcnJvcjonLCBlcnJvcik7XG4gICAgICAgIH1cbiAgICAgICk7XG4gIH1cblxuICBleHRyYWN0RGF0YUJ5UGF0aChkYXRhOiBhbnksIHBhdGg6IHN0cmluZykge1xuICAgIHJldHVybiBwYXRoLnNwbGl0KCcuJykucmVkdWNlKChhY2MsIHBhcnQpID0+IGFjYyAmJiBhY2NbcGFydF0sIGRhdGEpO1xuICB9XG5cbiAgc2VsZWN0SXRlbXMoZXZlbnQ/OiBhbnkpIHtcbiAgICB0aGlzLnNlbGVjdGVkVmFsdWUgPSBldmVudDtcblxuICAgIGNvbnN0IHZhbHVlc0FycmF5ID0gdGhpcy5zZWxlY3RlZFZhbHVlLm1hcChcbiAgICAgIChpdGVtKSA9PiBgJHtpdGVtLmxhYmVsfXwke2l0ZW0udmFsdWV9YFxuICAgICk7XG4gICAgdGhpcy5xdWVzdGlvbi5hbnN3ZXIgPSB2YWx1ZXNBcnJheTtcbiAgICBjb25zdCBzY29yZVJlc3VsdCA9IHRoaXMuc2NvcmVDYWxjU2VydmljZS5jYWxjdWxhdGVTY29yZUZyb21BbnN3ZXIoXG4gICAgICB0aGlzLnF1ZXN0aW9uLmFuc3dlcixcbiAgICAgIHRoaXMucXVlc3Rpb25cbiAgICApO1xuICAgIHRoaXMucXVlc3Rpb24uc2NvcmUgPSBzY29yZVJlc3VsdD8uc2NvcmVzO1xuXG4gICAgdGhpcy52YWxpZGF0aW9uRmFpbGVkID0gZmFsc2U7XG4gICAgdGhpcy52YWxpZGF0aW9uTWVzc2FnZSA9ICcnO1xuICAgIGlmICh0aGlzLnNlbGVjdGVkVmFsdWUubGVuZ3RoID09IDAgJiYgdGhpcy5yZXF1aXJlZCkge1xuICAgICAgdGhpcy52YWxpZGF0aW9uRmFpbGVkID0gdHJ1ZTtcbiAgICAgIHRoaXMudmFsaWRhdGlvblNlcnZpY2UuY2xlYXJJbnZhbGlkKHRoaXMuYnVpbGRFbGVtZW50SWQoKSk7XG4gICAgICB0aGlzLnZhbGlkYXRpb25NZXNzYWdlID0gYFRoaXMgaXMgYSByZXF1aXJlZCBxdWVzdGlvbmA7XG4gICAgICB0aGlzLnF1ZXN0aW9uLnZhbGlkYXRpb24gPSBmYWxzZTtcbiAgICAgIHRoaXMucXVlc3Rpb24udmFsaWRhdGlvbk1lc3NhZ2UgPSBgVGhpcyBpcyBhIHJlcXVpcmVkIHF1ZXN0aW9uYDtcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlLmxlbmd0aCA8IHRoaXMubWluaW11bVNlbGVjdGlvbiB8fFxuICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlLmxlbmd0aCA+IHRoaXMubWF4aW11bVNlbGVjdGlvblxuICAgICkge1xuICAgICAgdGhpcy52YWxpZGF0aW9uU2VydmljZS5jbGVhckludmFsaWQodGhpcy5idWlsZEVsZW1lbnRJZCgpKTtcbiAgICAgIHRoaXMudmFsaWRhdGlvbkZhaWxlZCA9IHRydWU7XG4gICAgICB0aGlzLnZhbGlkYXRpb25NZXNzYWdlID0gYHNlbGVjdGVkIG9wdGlvbnMgbXVzdCBiZSBiZXR3ZWVuICR7dGhpcy5taW5pbXVtU2VsZWN0aW9ufSAmICR7dGhpcy5tYXhpbXVtU2VsZWN0aW9ufWA7XG4gICAgICB0aGlzLnF1ZXN0aW9uLnZhbGlkYXRpb24gPSBmYWxzZTtcbiAgICAgIHRoaXMucXVlc3Rpb24udmFsaWRhdGlvbk1lc3NhZ2UgPSBgc2VsZWN0ZWQgb3B0aW9ucyBtdXN0IGJlIGJldHdlZW4gJHt0aGlzLm1pbmltdW1TZWxlY3Rpb259ICYgJHt0aGlzLm1heGltdW1TZWxlY3Rpb259YDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy52YWxpZGF0aW9uU2VydmljZS5jbGVhckludmFsaWQodGhpcy5idWlsZEVsZW1lbnRJZCgpKTtcbiAgICAgIHRoaXMucXVlc3Rpb24udmFsaWRhdGlvbiA9IHRydWU7XG4gICAgfVxuICAgIGlmICh0aGlzLnF1ZXN0aW9uLmNoaWxkTG9naWNzKSB7XG4gICAgICB0aGlzLnVwZGF0ZUNoaWxkTG9naWNzKHRoaXMucXVlc3Rpb24pO1xuICAgIH1cbiAgICB0aGlzLmFuc3dlckNoYW5nZS5lbWl0KHtcbiAgICAgIGFuc3dlcjogdGhpcy5xdWVzdGlvbi5hbnN3ZXIsXG4gICAgICBtYXhQb3NzaWJsZVNjb3JlOiB0aGlzLm1heFBvc3NpYmxlU2NvcmUsXG4gICAgfSk7XG4gICAgaWYodGhpcy5zZWxlY3Rpb25UeXBlID09PSAnU0lOR0xFJyAmJiB0aGlzLnNlbGVjdGVkVmFsdWUubGVuZ3RoID4gMCl7XG4gICAgICB0aGlzLnNlYXJjaCgnJyk7XG4gICAgfVxuICAgIGNvbnN0IGFuc3dlcnMgPSBBcnJheS5pc0FycmF5KHRoaXMucXVlc3Rpb24uYW5zd2VyKSA/IHRoaXMucXVlc3Rpb24uYW5zd2VyIDogW107XG4gICAgY29uc3QgcGFyc2VkQW5zd2VycyA9IGFuc3dlcnMubWFwKChhbnM6YW55KSA9PiBhbnMuc3BsaXQoJ3wnKVsxXSk7XG4gICAgdGhpcy53aGVuQ2xhdXNlU2VydmljZS5zZXRRdWVzdGlvbkFuc3dlcih0aGlzLnF1ZXN0aW9uLmlkLHBhcnNlZEFuc3dlcnMpO1xuICAgIHRoaXMuaGlkZGVuRmllbGRTZXJ2aWNlLnVwZGF0ZUhpZGRlbkZpZWxkc09uQ2hhbmdlKCk7XG4gIH1cblxuICB1cGRhdGVDaGlsZExvZ2ljcyhxdWVzdGlvbjogYW55KSB7XG4gICAgaWYgKHF1ZXN0aW9uLmNoaWxkTG9naWNzICYmIEFycmF5LmlzQXJyYXkocXVlc3Rpb24uY2hpbGRMb2dpY3MpKSB7XG4gICAgICBxdWVzdGlvbi5jaGlsZExvZ2ljcy5mb3JFYWNoKChjaGlsZExvZ2ljOiBhbnkpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0aW9uVHlwZSA9PSAnU0lOR0xFJykge1xuICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkVmFsdWUubGVuZ3RoID09IDApIHtcbiAgICAgICAgICAgIGNoaWxkTG9naWMuc2hvdyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5jbGVhckFuc3dlcnNSZWN1cnNpdmVseShjaGlsZExvZ2ljKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRWYWx1ZSA9IHRoaXMuc2VsZWN0ZWRWYWx1ZVswXT8ubGFiZWw7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIHRoaXMuZXZhbHVhdGVDb25kaXRpb24oXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRWYWx1ZSxcbiAgICAgICAgICAgICAgICBjaGlsZExvZ2ljLmNvbmRpdGlvbixcbiAgICAgICAgICAgICAgICBjaGlsZExvZ2ljLmlucHV0VmFsdWVcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIGNoaWxkTG9naWMuc2hvd0xvZ2ljID0gdHJ1ZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGNoaWxkTG9naWMuc2hvd0xvZ2ljID0gZmFsc2U7XG4gICAgICAgICAgICAgIHRoaXMuY2xlYXJBbnN3ZXJzUmVjdXJzaXZlbHkoY2hpbGRMb2dpYyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc2VsZWN0aW9uVHlwZSA9PT0gJ01VTFRJUExFJykge1xuICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkVmFsdWUubGVuZ3RoID09IDApIHtcbiAgICAgICAgICAgIGNoaWxkTG9naWMuc2hvdyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5jbGVhckFuc3dlcnNSZWN1cnNpdmVseShjaGlsZExvZ2ljKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRWYWx1ZXMgPSB0aGlzLnNlbGVjdGVkVmFsdWUubWFwKFxuICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PiBpdGVtLmxhYmVsXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICB0aGlzLmV2YWx1YXRlTXVsdGlwbGVDb25kaXRpb24oXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRWYWx1ZXMsXG4gICAgICAgICAgICAgICAgY2hpbGRMb2dpYy5jb25kaXRpb24sXG4gICAgICAgICAgICAgICAgY2hpbGRMb2dpYy5pbnB1dFZhbHVlXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICBjaGlsZExvZ2ljLnNob3dMb2dpYyA9IHRydWU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBjaGlsZExvZ2ljLnNob3dMb2dpYyA9IGZhbHNlO1xuICAgICAgICAgICAgICB0aGlzLmNsZWFyQW5zd2Vyc1JlY3Vyc2l2ZWx5KGNoaWxkTG9naWMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgY2xlYXJBbnN3ZXJzUmVjdXJzaXZlbHkobG9naWM6IGFueSkge1xuICAgIGlmICghbG9naWMgfHwgIWxvZ2ljLnJvd3MpIHJldHVybjtcblxuICAgIGxvZ2ljLnJvd3MuZm9yRWFjaCgocm93OiBhbnkpID0+IHtcbiAgICAgIHJvdy5ncmlkLmZvckVhY2goKGl0ZW06IGFueSkgPT4ge1xuICAgICAgICBjb25zdCBlbGVtZW50ID0gaXRlbS5lbGVtZW50O1xuXG4gICAgICAgIGlmIChpdGVtLmVudGl0eVR5cGUgPT09ICdRVUVTVElPTicgJiYgZWxlbWVudCkge1xuICAgICAgICAgIC8vIENsZWFyIGFuc3dlciBpZiBwcmVzZW50XG4gICAgICAgICAgaWYgKCdhbnN3ZXInIGluIGVsZW1lbnQpIHtcbiAgICAgICAgICAgIGVsZW1lbnQuYW5zd2VyID0gJyc7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gUmVjdXJzaXZlbHkgY2xlYXIgY2hpbGRMb2dpY3MgaWYgYW55XG4gICAgICAgICAgaWYgKGVsZW1lbnQuY2hpbGRMb2dpY3MgJiYgZWxlbWVudC5jaGlsZExvZ2ljcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBlbGVtZW50LmNoaWxkTG9naWNzLmZvckVhY2goKGNoaWxkTG9naWM6IGFueSkgPT4ge1xuICAgICAgICAgICAgICB0aGlzLmNsZWFyQW5zd2Vyc1JlY3Vyc2l2ZWx5KGNoaWxkTG9naWMpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGl0ZW0uZW50aXR5VHlwZSA9PT0gJ1NVQkZPUk0nICYmIGVsZW1lbnQgJiYgZWxlbWVudC5yb3dzKSB7XG4gICAgICAgICAgLy8gU1VCRk9STSBjb250YWlucyBpdHMgb3duIHJvd3Mgc3RydWN0dXJlIGxpa2UgYSBmb3JtXG4gICAgICAgICAgdGhpcy5jbGVhckFuc3dlcnNSZWN1cnNpdmVseSh7IHJvd3M6IGVsZW1lbnQucm93cyB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBldmFsdWF0ZUNvbmRpdGlvbihhbnN3ZXI6IGFueSwgY29uZGl0aW9uOiBzdHJpbmcsIGlucHV0VmFsdWU6IGFueSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHN0cmluZ0lucHV0VmFsdWUgPSBBcnJheS5pc0FycmF5KGlucHV0VmFsdWUpXG4gICAgICA/IGlucHV0VmFsdWUubWFwKCh2YWwpID0+IHZhbC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkpXG4gICAgICA6IGlucHV0VmFsdWUudG9Mb3dlckNhc2UoKTtcbiAgICBhbnN3ZXIgPSBBcnJheS5pc0FycmF5KGFuc3dlcilcbiAgICAgID8gYW5zd2VyPy5tYXAoKGFucykgPT4gYW5zLnRvTG93ZXJDYXNlKCkpXG4gICAgICA6IGFuc3dlci50b0xvd2VyQ2FzZSgpO1xuICAgIHN3aXRjaCAoY29uZGl0aW9uKSB7XG4gICAgICBjYXNlICchPSc6XG4gICAgICAgIHJldHVybiBhbnN3ZXIgIT0gaW5wdXRWYWx1ZTtcbiAgICAgIGNhc2UgJz0nOlxuICAgICAgICByZXR1cm4gYW5zd2VyID09IGlucHV0VmFsdWU7XG4gICAgICBjYXNlICdJTic6XG4gICAgICAgIHJldHVybiBzdHJpbmdJbnB1dFZhbHVlLmluY2x1ZGVzKGFuc3dlcik7XG4gICAgICBjYXNlICdOT1QgSU4nOlxuICAgICAgICByZXR1cm4gIXN0cmluZ0lucHV0VmFsdWUuaW5jbHVkZXMoYW5zd2VyKTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBldmFsdWF0ZU11bHRpcGxlQ29uZGl0aW9uKFxuICAgIGFuc3dlcnM6IGFueSxcbiAgICBjb25kaXRpb246IHN0cmluZyxcbiAgICBpbnB1dFZhbHVlOiBhbnlcbiAgKTogYm9vbGVhbiB7XG4gICAgY29uc3Qgc3RyaW5nSW5wdXRWYWx1ZSA9IEFycmF5LmlzQXJyYXkoaW5wdXRWYWx1ZSlcbiAgICAgID8gaW5wdXRWYWx1ZS5tYXAoKHZhbCkgPT4gdmFsLnRvU3RyaW5nKCkpXG4gICAgICA6IGlucHV0VmFsdWUudG9TdHJpbmcoKTtcbiAgICBhbnN3ZXJzID0gQXJyYXkuaXNBcnJheShhbnN3ZXJzKVxuICAgICAgPyBhbnN3ZXJzPy5tYXAoKGFuc3dlcikgPT4gYW5zd2VyLnRvTG93ZXJDYXNlKCkpXG4gICAgICA6IGFuc3dlcnMudG9Mb3dlckNhc2UoKTtcbiAgICBzd2l0Y2ggKGNvbmRpdGlvbikge1xuICAgICAgY2FzZSAnIT0nOlxuICAgICAgICByZXR1cm4gYW5zd2Vycy5ldmVyeSgoYW5zd2VyOiBhbnkpID0+IGFuc3dlciAhPSBzdHJpbmdJbnB1dFZhbHVlKTtcbiAgICAgIGNhc2UgJz0nOlxuICAgICAgICByZXR1cm4gYW5zd2Vycy5zb21lKChhbnN3ZXI6IGFueSkgPT4gYW5zd2VyID09IHN0cmluZ0lucHV0VmFsdWUpO1xuICAgICAgY2FzZSAnSU4nOlxuICAgICAgICByZXR1cm4gYW5zd2Vycy5zb21lKChhbnN3ZXI6IGFueSkgPT4gc3RyaW5nSW5wdXRWYWx1ZS5pbmNsdWRlcyhhbnN3ZXIpKTtcbiAgICAgIGNhc2UgJ05PVCBJTic6XG4gICAgICAgIHJldHVybiBhbnN3ZXJzLmV2ZXJ5KFxuICAgICAgICAgIChhbnN3ZXI6IGFueSkgPT4gIXN0cmluZ0lucHV0VmFsdWUuaW5jbHVkZXMoYW5zd2VyKVxuICAgICAgICApO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZVZhbGlkYXRpb24oXG4gICAgaXNWYWxpZDogYm9vbGVhbixcbiAgICBtZXNzYWdlOiBzdHJpbmcgPSAnVGhpcyBmaWVsZCBpcyByZXF1aXJlZCdcbiAgKSB7XG4gICAgaWYgKGlzVmFsaWQpIHtcbiAgICAgIHRoaXMudmFsaWRhdGlvblNlcnZpY2UuY2xlYXJJbnZhbGlkKHRoaXMuYnVpbGRFbGVtZW50SWQoKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHRoaXMudmFsaWRhdGlvblNlcnZpY2Uuc2V0SW52YWxpZCh0aGlzLnF1ZXN0aW9uLmlkLCBtZXNzYWdlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkRWxlbWVudElkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuaW5MaW5lIHx8IHRoaXMuaW5DYXJkXG4gICAgICA/IGAke3RoaXMuc3VibWlzc2lvbkluZGV4fS0ke3RoaXMucXVlc3Rpb24uaWR9YFxuICAgICAgOiBgJHt0aGlzLnF1ZXN0aW9uLmlkfWA7XG4gIH1cblxuICBnZXQgaXNJbnZhbGlkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMudmFsaWRhdGlvblNlcnZpY2UuZ2V0RXJyb3JNZXNzYWdlKHRoaXMuYnVpbGRFbGVtZW50SWQoKSk7XG4gIH1cblxuICBnZXQgZXJyb3JNZXNzYWdlKCk6IHN0cmluZyB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLnZhbGlkYXRpb25TZXJ2aWNlLmdldEVycm9yTWVzc2FnZSh0aGlzLmJ1aWxkRWxlbWVudElkKCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYXNQYWdpbmF0aW9uKGFwaUNvbmZpZzogYW55KTogYm9vbGVhbiB7XG4gICAgY29uc3QgY2hlY2tWYWx1ZVNvdXJjZSA9IChhcnI6IGFueVtdKSA9PlxuICAgICAgQXJyYXkuaXNBcnJheShhcnIpICYmXG4gICAgICBhcnIuc29tZShcbiAgICAgICAgKGl0ZW0pID0+XG4gICAgICAgICAgaXRlbT8udmFsdWVTb3VyY2UgPT09ICdQQUdFX0lOREVYJyB8fFxuICAgICAgICAgIGl0ZW0/LnZhbHVlU291cmNlID09PSAnUEFHRV9TSVpFJ1xuICAgICAgKTtcblxuICAgIHJldHVybiAoXG4gICAgICBjaGVja1ZhbHVlU291cmNlKGFwaUNvbmZpZy5oZWFkZXJzKSB8fFxuICAgICAgY2hlY2tWYWx1ZVNvdXJjZShhcGlDb25maWcucGFyYW1zKSB8fFxuICAgICAgY2hlY2tWYWx1ZVNvdXJjZShhcGlDb25maWcucGF0aFZhcmlhYmxlcylcbiAgICApO1xuICB9XG5cbiAgZ2V0TmV4dFNldE9mSXRlbXMoZXZlbnQ6IGFueSkge1xuICAgIGNvbnN0IGVsZW1lbnQgPSBldmVudC50YXJnZXQ7XG4gICAgaWYgKFxuICAgICAgTWF0aC5mbG9vcihlbGVtZW50LnNjcm9sbEhlaWdodCAtIGVsZW1lbnQuc2Nyb2xsVG9wKSA8PVxuICAgICAgICBlbGVtZW50LmNsaWVudEhlaWdodCAmJlxuICAgICAgdGhpcy5oYXNQYWdpbmF0aW9uKHRoaXMuYXBpKSAvLyBPbmx5IGlmIHBhZ2luYXRpb24gaXMgY29uZmlndXJlZFxuICAgICkge1xuICAgICAgdGhpcy5sb2FkTmV4dFBhZ2UoKTtcbiAgICB9XG5cblxuXG4gICAgZWxzZSBpZiggdGhpcy5vcHRpb25UeXBlID09PSAnREFUQUJBU0UnICYmIHRoaXMuZGJQYWdlSW5kZXggPCB0aGlzLmRiVG90YWxQYWdlcyl7XG4gICAgICB0aGlzLmRiUGFnZUluZGV4ICs9MTtcbiAgICAgIHRoaXMuZmV0Y2hEYXRhRnJvbURhdGFiYXNlKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBsb2FkTmV4dFBhZ2UoKSB7XG4gICAgaWYgKCF0aGlzLmhhc01vcmVEYXRhKSByZXR1cm47XG4gICAgLy8gRmluZCB0aGUgUEFHRV9JTkRFWCBwYXJhbS9oZWFkZXIvcGF0aFZhciBhbmQgaW5jcmVtZW50IGl0XG4gICAgY29uc3QgdXBkYXRlVmFsdWVTb3VyY2UgPSAoYXJyOiBhbnlbXSkgPT4ge1xuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGFycikpIHJldHVybjtcbiAgICAgIGFyci5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgIGlmIChpdGVtLnZhbHVlU291cmNlID09PSAnUEFHRV9JTkRFWCcpIHtcbiAgICAgICAgICBsZXQgY3VycmVudFBhZ2UgPSBwYXJzZUludChpdGVtLmlucHV0VmFsdWUgfHwgJzAnLCAxMCk7XG4gICAgICAgICAgaXRlbS5pbnB1dFZhbHVlID0gKGN1cnJlbnRQYWdlICsgMSkudG9TdHJpbmcoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfTtcblxuICAgIHVwZGF0ZVZhbHVlU291cmNlKHRoaXMuYXBpLmhlYWRlcnMpO1xuICAgIHVwZGF0ZVZhbHVlU291cmNlKHRoaXMuYXBpLnBhcmFtcyk7XG4gICAgdXBkYXRlVmFsdWVTb3VyY2UodGhpcy5hcGkucGF0aFZhcmlhYmxlcyk7XG5cbiAgICAvLyBDYWxsIHlvdXIgZmV0Y2ggZnVuY3Rpb24gYWdhaW5cbiAgICB0aGlzLmZldGNoRGF0YUZyb21BUEkodHJ1ZSk7XG4gIH1cblxuICBzZWFyY2goc2VhcmNoVGVybTogc3RyaW5nKSB7XG4gICAgaWYoIHRoaXMub3B0aW9uVHlwZSA9PT0nREFUQUJBU0UnKXtcbiAgICAgIHRoaXMuZGJQYWdlSW5kZXggPTA7XG4gICAgICB0aGlzLmZldGNoRGF0YUZyb21EYXRhYmFzZShzZWFyY2hUZXJtLnRyaW0oKSk7XG4gICAgfVxuICAgIGVsc2UgaWYgKHRoaXMub3B0aW9uVHlwZSAhPT0gJ0FQSScpIHtcbiAgICAgIC8vIPCflLkgTG9jYWwgc2VhcmNoXG4gICAgICBpZiAoc2VhcmNoVGVybSAmJiBzZWFyY2hUZXJtLnRyaW0oKSAhPT0gJycpIHtcbiAgICAgICAgY29uc3QgbG93ZXJTZWFyY2ggPSBzZWFyY2hUZXJtLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIHRoaXMuY3VzdG9tT3B0aW9ucyA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmZpbHRlcigob3B0aW9uKSA9PlxuICAgICAgICAgIG9wdGlvbi5sYWJlbD8udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhsb3dlclNlYXJjaClcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFJlc2V0IHRvIGZ1bGwgbGlzdCB3aGVuIHNlYXJjaCBpcyBjbGVhcmVkXG4gICAgICAgIHRoaXMuY3VzdG9tT3B0aW9ucyA9IFsuLi50aGlzLm9yaWdpbmFsT3B0aW9uc107XG4gICAgICB9XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgLy8g8J+UuSBBUEkgc2VhcmNoXG4gICAgICBpZiAoc2VhcmNoVGVybSAmJiBzZWFyY2hUZXJtLnRyaW0oKSAhPT0gJycpIHtcbiAgICAgICAgLy8gSW5qZWN0IHNlYXJjaCB0ZXJtIGludG8gQVBJIGNvbmZpZyAoaGVhZGVycyBvciBwYXJhbXMpXG4gICAgICAgIHRoaXMuaW5qZWN0U2VhcmNoU3RyaW5nKHNlYXJjaFRlcm0udHJpbSgpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIPCflLkgQ2xlYXIgdGhlIHNlYXJjaCBzdHJpbmcgZnJvbSBBUEkgY29uZmlnIHdoZW4gaW5wdXQgaXMgZW1wdHlcbiAgICAgICAgdGhpcy5pbmplY3RTZWFyY2hTdHJpbmcoJycpO1xuICAgICAgfVxuXG4gICAgICAvLyBSZXNldCBwYWdpbmF0aW9uXG4gICAgICB0aGlzLmhhc01vcmVEYXRhID0gdHJ1ZTtcbiAgICAgIC8vIEZldGNoIGZyZXNoIHJlc3VsdHNcbiAgICAgIHRoaXMuZmV0Y2hEYXRhRnJvbUFQSShmYWxzZSwgdHJ1ZSk7XG4gICAgfVxuICB9XG5cbiAgaW5qZWN0U2VhcmNoU3RyaW5nKHNlYXJjaFRlcm06IHN0cmluZykge1xuICAgIC8vIEFsd2F5cyB3b3JrIG9uIGEgZnJlc2ggY29weSwgZG9u4oCZdCBtdXRhdGUgdGhpcy5hcGkgZGlyZWN0bHlcbiAgICB0aGlzLmFwaSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5vcmlnaW5hbEFwaSkpO1xuXG4gICAgaWYgKHRoaXMuYXBpPy5wYXJhbXMpIHtcbiAgICAgIHRoaXMuYXBpLnBhcmFtcy5mb3JFYWNoKChwOiBhbnkpID0+IHtcbiAgICAgICAgaWYgKHAudmFsdWVTb3VyY2UgPT09ICdTRUFSQ0hfU1RSSU5HJykge1xuICAgICAgICAgIHAuaW5wdXRWYWx1ZSA9IHNlYXJjaFRlcm07XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmFwaT8uaGVhZGVycykge1xuICAgICAgdGhpcy5hcGkuaGVhZGVycy5mb3JFYWNoKChoOiBhbnkpID0+IHtcbiAgICAgICAgaWYgKGgudmFsdWVTb3VyY2UgPT09ICdTRUFSQ0hfU1RSSU5HJykge1xuICAgICAgICAgIGguaW5wdXRWYWx1ZSA9IHNlYXJjaFRlcm07XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBpZiAodGhpcy5pbkxpbmUgfHwgdGhpcy5pbkNhcmQpIHtcbiAgICAgIHRoaXMuZWxlbWVudElkID0gYHF1ZXN0aW9uLSR7dGhpcy5zdWJtaXNzaW9uSW5kZXh9LSR7dGhpcy5xdWVzdGlvbi5pZH1gO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmVsZW1lbnRJZCA9IGBxdWVzdGlvbi0ke3RoaXMucXVlc3Rpb24uaWR9YDtcbiAgICB9XG5cbiAgICB0aGlzLnRyYWNrZXIucmVnaXN0ZXJFbGVtZW50KHRoaXMuZWxlbWVudElkKTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMud2hlbkNsYXVzZVNlcnZpY2UubWFya0xvYWRDb21wbGV0ZWQoKTtcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIGlmICh0aGlzLmVsZW1lbnRJZCkge1xuICAgICAgdGhpcy50cmFja2VyLnVucmVnaXN0ZXJFbGVtZW50KHRoaXMuZWxlbWVudElkKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXZcbiAgW25nQ2xhc3NdPVwieyAnbWItNCc6ICFpbkxpbmUgfVwiXG4gIGNsYXNzPVwicHgtM1wiXG4gIFtpZF09XCIoaW5MaW5lIHx8IGluQ2FyZCkgPyAncXVlc3Rpb24tJyArIHN1Ym1pc3Npb25JbmRleCArICctJyArIHF1ZXN0aW9uLmlkIDogJ3F1ZXN0aW9uLScgKyBxdWVzdGlvbi5pZFwiXG4gIFthdHRyLm5hbWVdPVwicXVlc3Rpb24udGVzdEVsZW1lbnROYW1lXCJcbj5cbiAgPGRpdiBjbGFzcz1cImlucHV0LXdyYXBwZXIgbWItMlwiICpuZ0lmPVwiIWluTGluZVwiPlxuICAgIDxkaXYgKm5nSWY9XCJxdWVzdGlvbi5xdWVzdGlvbk51bWJlclwiIFtpbm5lckhUTUxdPVwicXVlc3Rpb24ucXVlc3Rpb25OdW1iZXJcIj48L2Rpdj5cbiAgICA8c3BhbiAqbmdJZj1cInF1ZXN0aW9uLnF1ZXN0aW9uTnVtYmVyXCIgY2xhc3M9XCJzcGFjZVwiPjwvc3Bhbj4gPGxhYmVsPnt7IHF1ZXN0aW9uLnF1ZXN0aW9uIH19PC9sYWJlbFxuICAgID4mbmJzcDtcbiAgICA8c3BhbiBjbGFzcz1cInRleHQtZGFuZ2VyXCIgKm5nSWY9XCJxdWVzdGlvbj8ucmVxdWlyZWRcIj4qPC9zcGFuPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwic3ZnLXdyYXBwZXIgbWItMiBoaW50SWNvblwiXG4gICAgICBbYXR0ci5kYXRhLXRpdGxlXT1cImhpbnRcIlxuICAgICAgKm5nSWY9XCJoaW50XCJcbiAgICA+XG4gICAgICA8c3ZnXG4gICAgICAgIGNsYXNzPVwiaGludFN2Z1wiXG4gICAgICAgIHZpZXdCb3g9XCIwIDAgMzAgMzBcIlxuICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgID5cbiAgICAgICAgPHBhdGhcbiAgICAgICAgICBmaWxsLXJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgICBjbGlwLXJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgICBkPVwiTTE1IDI2LjI1VjI2LjI1QzguNzg2MjUgMjYuMjUgMy43NSAyMS4yMTM4IDMuNzUgMTVWMTVDMy43NSA4Ljc4NjI1IDguNzg2MjUgMy43NSAxNSAzLjc1VjMuNzVDMjEuMjEzOCAzLjc1IDI2LjI1IDguNzg2MjUgMjYuMjUgMTVWMTVDMjYuMjUgMjEuMjEzOCAyMS4yMTM4IDI2LjI1IDE1IDI2LjI1WlwiXG4gICAgICAgICAgc3Ryb2tlPVwiIzMyMzIzMlwiXG4gICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS41XCJcbiAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiXG4gICAgICAgIC8+XG4gICAgICAgIDxwYXRoXG4gICAgICAgICAgZD1cIk0xNSAxNi41NjIzVjE2LjI0OThDMTUgMTUuMjI4NSAxNS42MzEyIDE0LjY3NDggMTYuMjYzNyAxNC4yNDk4QzE2Ljg4MTIgMTMuODMzNSAxNy41IDEzLjI5MSAxNy41IDEyLjI5MUMxNy41IDEwLjkwOTggMTYuMzgxMyA5Ljc5MTAyIDE1IDkuNzkxMDJDMTMuNjE4NyA5Ljc5MTAyIDEyLjUgMTAuOTA5OCAxMi41IDEyLjI5MVwiXG4gICAgICAgICAgc3Ryb2tlPVwiIzMyMzIzMlwiXG4gICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS41XCJcbiAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiXG4gICAgICAgIC8+XG4gICAgICAgIDxwYXRoXG4gICAgICAgICAgZD1cIk0xNC45OTg4IDIwQzE0LjgyNjMgMjAgMTQuNjg2MyAyMC4xNCAxNC42ODc1IDIwLjMxMjVDMTQuNjg3NSAyMC40ODUgMTQuODI3NSAyMC42MjUgMTUgMjAuNjI1QzE1LjE3MjUgMjAuNjI1IDE1LjMxMjUgMjAuNDg1IDE1LjMxMjUgMjAuMzEyNUMxNS4zMTI1IDIwLjE0IDE1LjE3MjUgMjAgMTQuOTk4OCAyMFwiXG4gICAgICAgICAgc3Ryb2tlPVwiIzMyMzIzMlwiXG4gICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS41XCJcbiAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiXG4gICAgICAgIC8+XG4gICAgICA8L3N2Zz5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDwhLS0gPGxpYi1kcm9wZG93blxuICAgIFtpdGVtc109XCJjdXN0b21PcHRpb25zXCJcbiAgICBbbXVsdGlwbGVdPVwic2VsZWN0aW9uVHlwZSA9PT0gJ1NJTkdMRScgPyBmYWxzZSA6IHRydWVcIlxuICAgIChjbGljayk9XCJzZWxlY3RJdGVtcygpXCJcbiAgICBbKHNlbGVjdGVkSXRlbXMpXT1cInNlbGVjdGVkVmFsdWVcIlxuICA+PC9saWItZHJvcGRvd24+IC0tPlxuXG4gIDxsaWItZHJvcGRvd25cbiAgICBbcGxhY2Vob2xkZXJdPVwiJ3NlbGVjdCdcIlxuICAgIFtpdGVtc109XCJjdXN0b21PcHRpb25zXCJcbiAgICBbbXVsdGlwbGVdPVwic2VsZWN0aW9uVHlwZSA9PT0gJ1NJTkdMRScgPyBmYWxzZSA6IHRydWVcIlxuICAgIFtkaXNhYmxlXT1cImRpc2FibGVFZGl0XCJcbiAgICAoc2VsZWN0ZWRJdGVtc0NoYW5nZSk9XCJzZWxlY3RJdGVtcygkZXZlbnQpXCJcbiAgICBbKHNlbGVjdGVkSXRlbXMpXT1cInNlbGVjdGVkVmFsdWVcIlxuICAgIChvbkRyb3Bkb3duU2Nyb2xsKT1cImdldE5leHRTZXRPZkl0ZW1zKCRldmVudClcIlxuICAgIChvblNlYXJjaCk9XCJzZWFyY2goJGV2ZW50KVwiXG4gID48L2xpYi1kcm9wZG93bj5cblxuICA8IS0tIChvbkRyb3Bkb3duU2Nyb2xsKT1cImdldE5leHRTZXRPZkl0ZW1zKCRldmVudClcIlxuICAob25TZWFyY2gpPVwic2VhcmNoKCRldmVudClcIiAtLT5cbiAgPGRpdlxuICAgICpuZ0lmPVwiaXNJbnZhbGlkICYmICghaW5MaW5lIHx8IHNlbGVjdGVkVmFsdWUubGVuZ3RoID09PSAwKVwiXG4gICAgY2xhc3M9XCJlcnJvci1tZXNzYWdlXCJcbiAgPlxuICAgIHt7IGVycm9yTWVzc2FnZSB9fVxuICA8L2Rpdj5cbiAgPGRpdiAqbmdJZj1cInZhbGlkYXRpb25GYWlsZWQgJiYgIWlzSW52YWxpZFwiIGNsYXNzPVwidGV4dC1kYW5nZXIgZXJyb3ItbWVzc2FnZSBtYi0yXCI+XG4gICAge3sgdmFsaWRhdGlvbk1lc3NhZ2UgfX1cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -3383,6 +3383,9 @@ class DropDownFieldsComponent {
3383
3383
  answer: this.question.answer,
3384
3384
  maxPossibleScore: this.maxPossibleScore,
3385
3385
  });
3386
+ if (this.selectionType === 'SINGLE' && this.selectedValue.length > 0) {
3387
+ this.search('');
3388
+ }
3386
3389
  const answers = Array.isArray(this.question.answer) ? this.question.answer : [];
3387
3390
  const parsedAnswers = answers.map((ans) => ans.split('|')[1]);
3388
3391
  this.whenClauseService.setQuestionAnswer(this.question.id, parsedAnswers);