@hmcts/ccpay-web-component 6.2.7-beta03 → 6.2.7-beta1

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.
@@ -87,7 +87,7 @@ export class ReportsComponent {
87
87
  }
88
88
  downloadReport() {
89
89
  this.isDownLoadButtondisabled = true;
90
- const dataLossRptDefault = [{ loss_resp: '', payment_asset_dcn: '', env_ref: '', env_item: '', resp_service_id: '', resp_service_name: '', date_banked: '', bgc_batch: '', payment_method: '', amount: '' }], unProcessedRptDefault = [{ resp_service_id: '', resp_service_name: '', exception_ref: '', ccd_ref: '', date_banked: '', bgc_batch: '', payment_asset_dcn: '', env_ref: '', env_item: '', payment_method: '', amount: '' }], processedUnallocated = [{ resp_service_id: '', resp_service_name: '', allocation_status: '', receiving_office: '', allocation_reason: '', ccd_exception_ref: '', ccd_case_ref: '', payment_asset_dcn: '', env_ref: '', env_item: '', date_banked: '', bgc_batch: '', payment_method: '', amount: '', updated_by: '' }], shortFallsRptDefault = [{ resp_service_id: '', resp_service_name: '', surplus_shortfall: '', balance: '', payment_amount: '', ccd_case_reference: '', ccd_exception_reference: '', processed_date: '', reason: '', explanation: '', user_name: '' }], selectedReportName = this.reportsForm.get('selectedreport').value, selectedStartDate = this.tranformDate(this.reportsForm.get('startDate').value), selectedEndDate = this.tranformDate(this.reportsForm.get('endDate').value);
90
+ const dataLossRptDefault = [{ loss_resp: '', payment_asset_dcn: '', env_ref: '', env_item: '', resp_service_id: '', resp_service_name: '', date_banked: '', bgc_batch: '', payment_method: '', amount: '' }], unProcessedRptDefault = [{ resp_service_id: '', resp_service_name: '', exception_ref: '', ccd_ref: '', date_banked: '', bgc_batch: '', payment_asset_dcn: '', env_ref: '', env_item: '', payment_method: '', amount: '' }], processedUnallocated = [{ resp_service_id: '', resp_service_name: '', allocation_status: '', receiving_office: '', allocation_reason: '', ccd_exception_ref: '', ccd_case_ref: '', payment_asset_dcn: '', env_ref: '', env_item: '', date_banked: '', bgc_batch: '', payment_method: '', amount: '', updated_by: '' }], shortFallsRptDefault = [{ resp_service_id: '', resp_service_name: '', surplus_shortfall: '', balance: '', payment_amount: '', ccd_case_reference: '', ccd_exception_reference: '', processed_date: '', reason: '', explanation: '', user_name: '' }], telephonyPaymentsRptDefault = [{ service_name: '', ccd_Reference: '', payment_reference: '', fee_code: '', payment_date: '', amount: '', payment_status: '' }], paymentFailureRptDefault = [{ payment_reference: '', ccd_reference: '', document_control_number: '', org_id: '', service_name: '', failure_reference: '', failure_reason: '', disputed_amount: '', event_name: '', event_date: '', representment_status: '', representment_date: '', refund_reference: '', refund_amount: '', refund_date: '' }], selectedReportName = this.reportsForm.get('selectedreport').value, selectedStartDate = this.tranformDate(this.reportsForm.get('startDate').value), selectedEndDate = this.tranformDate(this.reportsForm.get('endDate').value);
91
91
  if (selectedReportName === 'PROCESSED_UNALLOCATED' || selectedReportName === 'SURPLUS_AND_SHORTFALL') {
92
92
  this.paymentViewService.downloadSelectedReport(selectedReportName, selectedStartDate, selectedEndDate).subscribe(response => {
93
93
  this.errorMessage = this.errorHandlerService.getServerErrorMessage(false, false, '');
@@ -160,6 +160,9 @@ export class ReportsComponent {
160
160
  }
161
161
  }
162
162
  }
163
+ else {
164
+ res.data = paymentFailureRptDefault;
165
+ }
163
166
  this.isDownLoadButtondisabled = false;
164
167
  this.xlFileService.exportAsExcelFile(res['data'], this.getFileName(this.reportsForm.get('selectedreport').value, selectedStartDate, selectedEndDate));
165
168
  }, (error) => {
@@ -187,6 +190,9 @@ export class ReportsComponent {
187
190
  }
188
191
  }
189
192
  }
193
+ else {
194
+ res.data = telephonyPaymentsRptDefault;
195
+ }
190
196
  this.isDownLoadButtondisabled = false;
191
197
  this.xlFileService.exportAsExcelFile(res['data'], this.getFileName(this.reportsForm.get('selectedreport').value, selectedStartDate, selectedEndDate));
192
198
  }, (error) => {
@@ -328,4 +334,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImpor
328
334
  type: Input,
329
335
  args: ['ISPAYMENTSTATUSENABLED']
330
336
  }] } });
331
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0cy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wYXltZW50LWxpYi9zcmMvbGliL2NvbXBvbmVudHMvcmVwb3J0cy9yZXBvcnRzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3BheW1lbnQtbGliL3NyYy9saWIvY29tcG9uZW50cy9yZXBvcnRzL3JlcG9ydHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQW9DLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRixPQUFPLEVBQUUsV0FBVyxFQUFhLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUc3QyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxrRUFBa0UsQ0FBQztBQUM3RyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUNsRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUN0RixPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sd0NBQXdDLENBQUM7Ozs7Ozs7OztBQVNyRSxNQUFNLE9BQU8sZ0JBQWdCO0lBaUJqQjtJQUNBO0lBQ0E7SUFDQTtJQUN1QjtJQUN2QjtJQXJCdUIsc0JBQXNCLEdBQVksSUFBSSxDQUFDO0lBQ3hFLEdBQUcsR0FBRyxZQUFZLENBQUM7SUFDbkIsR0FBRyxHQUFHLE9BQU8sQ0FBQztJQUNkLFdBQVcsQ0FBWTtJQUN2QixTQUFTLENBQVM7SUFDbEIsT0FBTyxDQUFTO0lBQ2hCLFlBQVksQ0FBUztJQUNyQixhQUFhLENBQVM7SUFDdEIsd0JBQXdCLEdBQVcsS0FBSyxDQUFDO0lBQ3pDLHlCQUF5QixHQUFZLEtBQUssQ0FBQztJQUMzQyxnQkFB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RyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO3dCQUN6QyxJQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLFNBQVMsRUFBRSxDQUFDOzRCQUNyRCxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLG1CQUFtQixDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsQ0FBQzs0QkFDN0UsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUMsRUFBRSxDQUFDLENBQUM7d0JBQ2pGLENBQUM7d0JBQ0QsSUFBRyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssU0FBUyxFQUFFLENBQUM7NEJBQzFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7d0JBQ2hGLENBQUM7d0JBQ0QsSUFBRyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssU0FBUyxFQUFFLENBQUM7NEJBQzNDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNB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LEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN6RixDQUFDO0lBRUQsbUJBQW1CLENBQUMsR0FBRztRQUNyQixPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUN6RCxDQUFDO3VHQXJVVSxnQkFBZ0Isc0pBcUJqQixhQUFhOzJGQXJCWixnQkFBZ0IsbUhDakI3Qixpbk1Bb0hBOzsyRkRuR2EsZ0JBQWdCO2tCQUw1QixTQUFTOytCQUNFLGVBQWU7OzBCQXlCdEIsTUFBTTsyQkFBQyxhQUFhOzBFQXBCVSxzQkFBc0I7c0JBQXRELEtBQUs7dUJBQUMsd0JBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0LCBmb3J3YXJkUmVmLCBpc1N0YW5kYWxvbmUsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBmb3JtYXREYXRlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuaW1wb3J0IHR5cGUgeyBQYXltZW50TGliQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vcGF5bWVudC1saWIuY29tcG9uZW50JztcbmltcG9ydCB7SVBheW1lbnRHcm91cH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9JUGF5bWVudEdyb3VwJztcbmltcG9ydCB7IEJ1bGtTY2FuaW5nUGF5bWVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9idWxrLXNjYW5pbmctcGF5bWVudC9idWxrLXNjYW5pbmctcGF5bWVudC5zZXJ2aWNlJztcbmltcG9ydCB7IEVycm9ySGFuZGxlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9zaGFyZWQvZXJyb3ItaGFuZGxlci5zZXJ2aWNlJztcbmltcG9ydCB7IFBheW1lbnRWaWV3U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3BheW1lbnQtdmlldy9wYXltZW50LXZpZXcuc2VydmljZSc7XG5pbXBvcnQge1hsRmlsZVNlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3hsLWZpbGUveGwtZmlsZS5zZXJ2aWNlJztcbmltcG9ydCB7IEZpbmRWYWx1ZVN1YnNjcmliZXIgfSBmcm9tICdyeGpzL2ludGVybmFsL29wZXJhdG9ycy9maW5kJztcbnR5cGUgUGF5bWVudExpYkFsaWFzID0gUGF5bWVudExpYkNvbXBvbmVudDtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY2NwYXktcmVwb3J0cycsXG4gIHRlbXBsYXRlVXJsOiAnLi9yZXBvcnRzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcmVwb3J0cy5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFJlcG9ydHNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoJ0lTUEFZTUVOVFNUQVRVU0VOQUJMRUQnKSBJU1BBWU1FTlRTVEFUVVNFTkFCTEVEOiBib29sZWFuID0gdHJ1ZTtcbiAgZm10ID0gJ2RkL01NL3l5eXknO1xuICBsb2MgPSAnZW4tVVMnO1xuICByZXBvcnRzRm9ybTogRm9ybUdyb3VwO1xuICBzdGFydERhdGU6IHN0cmluZztcbiAgZW5kRGF0ZTogc3RyaW5nO1xuICBlcnJvck1lYWFnc2U6IHN0cmluZztcbiAgY2NkQ2FzZU51bWJlcjogc3RyaW5nO1xuICBpc0Rvd25Mb2FkQnV0dG9uZGlzYWJsZWQ6Qm9vbGVhbiA9IGZhbHNlO1xuICBpc1N0YXJ0RGF0ZUxlc3RoYW5FbmREYXRlOiBCb29sZWFuID0gZmFsc2U7XG4gIGlzRGF0ZUJldHduTW9udGg6IEJvb2xlYW4gPSBmYWxzZTtcbiAgaXNEYXRlUmFuZ2VCZXRuV2VlazogQm9vbGVhbiA9IGZhbHNlO1xuICBlcnJvck1lc3NhZ2UgPSBudWxsO1xuICBwYXltZW50R3JvdXBzOiBJUGF5bWVudEdyb3VwW10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHhsRmlsZVNlcnZpY2U6IFhsRmlsZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBlcnJvckhhbmRsZXJTZXJ2aWNlOiBFcnJvckhhbmRsZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLFxuICAgIHByaXZhdGUgYnVsa1NjYW5pbmdQYXltZW50U2VydmljZTogQnVsa1NjYW5pbmdQYXltZW50U2VydmljZSxcbiAgICBASW5qZWN0KCdQQVlNRU5UX0xJQicpIHByaXZhdGUgcGF5bWVudExpYkNvbXBvbmVudDogUGF5bWVudExpYkFsaWFzLFxuICAgIHByaXZhdGUgcGF5bWVudFZpZXdTZXJ2aWNlOiBQYXltZW50Vmlld1NlcnZpY2UpIHsgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gdGhpcy5lcnJvckhhbmRsZXJTZXJ2aWNlLmdldFNlcnZlckVycm9yTWVzc2FnZShmYWxzZSwgZmFsc2UsICcnKTtcbiAgICB0aGlzLmZyb21WYWxpZGF0aW9uKCk7XG4gICB9XG5cbiAgZ2V0VG9kYXkoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gbmV3IERhdGUoKS50b0lTT1N0cmluZygpLnNwbGl0KCdUJylbMF07XG4gfVxuXG4gZ2V0U2VsZWN0ZWRGcm9tRGF0ZSgpOiB2b2lkIHtcbiB0aGlzLnZhbGlkYXRlRGF0ZXModGhpcy5yZXBvcnRzRm9ybS5nZXQoJ3NlbGVjdGVkcmVwb3J0JykudmFsdWUpO1xuIH1cblxuIHZhbGlkYXRlRGF0ZXMocmVwb3J0TmFtZSl7XG4gIGNvbnN0IHNlbGVjdGVkU3RhcnREYXRlID0gdGhpcy50cmFuZm9ybURhdGUodGhpcy5yZXBvcnRzRm9ybS5nZXQoJ3N0YXJ0RGF0ZScpLnZhbHVlKSxcbiAgICBzZWxlY3RlZEVuZERhdGUgPSB0aGlzLnRyYW5mb3JtRGF0ZSh0aGlzLnJlcG9ydHNGb3JtLmdldCgnZW5kRGF0ZScpLnZhbHVlKTtcbiAgY29uc3QgaXNEYXRlUmFuZ2VNb3JlVGhhbldlZWsgPSAoPGFueT5uZXcgRGF0ZShzZWxlY3RlZFN0YXJ0RGF0ZSkgLSA8YW55Pm5ldyBEYXRlKHNlbGVjdGVkRW5kRGF0ZSkpLygxMDAwICogMzYwMCAqIC0yNCkgPiA3O1xuICBjb25zdCBpc0RhdGVSYW5nZU1vcmVUaGFuTW9udGggPSAoPGFueT5uZXcgRGF0ZShzZWxlY3RlZFN0YXJ0RGF0ZSkgLSA8YW55Pm5ldyBEYXRlKHNlbGVjdGVkRW5kRGF0ZSkpLygxMDAwICogMzYwMCAqIC0yNCkgPiAzMDtcbiAgaWYobmV3IERhdGUoc2VsZWN0ZWRTdGFydERhdGUpID4gbmV3IERhdGUoc2VsZWN0ZWRFbmREYXRlKSAmJiBzZWxlY3RlZEVuZERhdGUgIT09ICcnKXtcbiAgICB0aGlzLnJlcG9ydHNGb3JtLmdldCgnc3RhcnREYXRlJykuc2V0VmFsdWUoJycpO1xuICAgIHRoaXMuaXNEYXRlUmFuZ2VCZXRuV2VlayA9IGZhbHNlO1xuICAgIHRoaXMuaXNEYXRlQmV0d25Nb250aCA9IGZhbHNlO1xuICAgIHRoaXMuaXNTdGFydERhdGVMZXN0aGFuRW5kRGF0ZSA9IHRydWU7XG4gIH0gZWxzZSBpZihyZXBvcnROYW1lICYmIHJlcG9ydE5hbWUgPT09J1NVUlBMVVNfQU5EX1NIT1JURkFMTCcgJiYgaXNEYXRlUmFuZ2VNb3JlVGhhbldlZWsgKSB7XG4gICAgdGhpcy5pc0RhdGVSYW5nZUJldG5XZWVrID0gdHJ1ZTtcbiAgICB0aGlzLmlzRGF0ZUJldHduTW9udGggPSBmYWxzZTtcbiAgICB0aGlzLmlzU3RhcnREYXRlTGVzdGhhbkVuZERhdGUgPSBmYWxzZTtcbiAgfSBlbHNlIGlmKHJlcG9ydE5hbWUgJiYgKHJlcG9ydE5hbWUgPT09J1BBWU1FTlRfRkFJTFVSRV9FVkVOVCd8fCByZXBvcnROYW1lID09PVwiVEVMRVBIT05ZX1BBWU1FTlRTXCIpICYmIGlzRGF0ZVJhbmdlTW9yZVRoYW5Nb250aCApIHtcbiAgICB0aGlzLmlzRGF0ZVJhbmdlQmV0bldlZWsgPSBmYWxzZTtcbiAgICB0aGlzLmlzRGF0ZUJldHduTW9udGggPSB0cnVlO1xuICAgIHRoaXMuaXNTdGFydERhdGVMZXN0aGFuRW5kRGF0ZSA9IGZhbHNlO1xuICB9IGVsc2Uge1xuICAgIHRoaXMuaXNEYXRlQmV0d25Nb250aCA9IGZhbHNlO1xuICAgIHRoaXMuaXNEYXRlUmFuZ2VCZXRuV2VlayA9IGZhbHNlO1xuICAgIHRoaXMuaXNTdGFydERhdGVMZXN0aGFuRW5kRGF0ZSA9IGZhbHNlO1xuICB9XG5cbiB9XG5cbiAgZnJvbVZhbGlkYXRpb24oKSB7XG4gICAgdGhpcy5yZXBvcnRzRm9ybSA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgc2VsZWN0ZWRyZXBvcnQ6IG5ldyBGb3JtQ29udHJvbCgnJykgLFxuICAgICAgc3RhcnREYXRlOiBuZXcgRm9ybUNvbnRyb2woJycpLFxuICAgICAgZW5kRGF0ZTogbmV3IEZvcm1Db250cm9sKCcnKVxuICAgIH0pO1xufVxuXG5kb3dubG9hZFJlcG9ydCgpe1xuICB0aGlzLmlzRG93bkxvYWRCdXR0b25kaXNhYmxlZCA9IHRydWU7XG4gIGNvbnN0IGRhdGFMb3NzUnB0RGVmYXVsdCA9IFt7bG9zc19yZXNwOicnLHBheW1lbnRfYXNzZXRfZGNuOicnLGVudl9yZWY6JycsZW52X2l0ZW06JycscmVzcF9zZXJ2aWNlX2lkOicnLHJlc3Bfc2VydmljZV9uYW1lOicnLGRhdGVfYmFua2VkOicnLGJnY19iYXRjaDonJyxwYXltZW50X21ldGhvZDonJyxhbW91bnQ6Jyd9XSxcbiAgICB1blByb2Nlc3NlZFJwdERlZmF1bHQgPSBbe3Jlc3Bfc2VydmljZV9pZDonJyxyZXNwX3NlcnZpY2VfbmFtZTonJyxleGNlcHRpb25fcmVmOicnLGNjZF9yZWY6JycsZGF0ZV9iYW5rZWQ6JycsYmdjX2JhdGNoOicnLHBheW1lbnRfYXNzZXRfZGNuOicnLGVudl9yZWY6JycsZW52X2l0ZW06JycscGF5bWVudF9tZXRob2Q6JycsYW1vdW50OicnfV0sXG4gICAgcHJvY2Vzc2VkVW5hbGxvY2F0ZWQgPVt7cmVzcF9zZXJ2aWNlX2lkOicnLHJlc3Bfc2VydmljZV9uYW1lOicnLGFsbG9jYXRpb25fc3RhdHVzOicnLHJlY2VpdmluZ19vZmZpY2U6JycsYWxsb2NhdGlvbl9yZWFzb246JycsY2NkX2V4Y2VwdGlvbl9yZWY6JycsY2NkX2Nhc2VfcmVmOicnLHBheW1lbnRfYXNzZXRfZGNuOicnLGVudl9yZWY6JycsZW52X2l0ZW06JycsZGF0ZV9iYW5rZWQ6JycsYmdjX2JhdGNoOicnLHBheW1lbnRfbWV0aG9kOicnLGFtb3VudDonJyx1cGRhdGVkX2J5OicnfV0sXG4gICAgc2hvcnRGYWxsc1JwdERlZmF1bHQgPSBbe3Jlc3Bfc2VydmljZV9pZDonJyxyZXNwX3NlcnZpY2VfbmFtZTonJyxzdXJwbHVzX3Nob3J0ZmFsbDonJyxiYWxhbmNlOicnLHBheW1lbnRfYW1vdW50OicnLGNjZF9jYXNlX3JlZmVyZW5jZTonJyxjY2RfZXhjZXB0aW9uX3JlZmVyZW5jZTonJyxwcm9jZXNzZWRfZGF0ZTonJywgcmVhc29uOicnLCBleHBsYW5hdGlvbjonJywgdXNlcl9uYW1lOicnfV0sXG4gICAgc2VsZWN0ZWRSZXBvcnROYW1lID0gdGhpcy5yZXBvcnRzRm9ybS5nZXQoJ3NlbGVjdGVkcmVwb3J0JykudmFsdWUsXG4gICAgc2VsZWN0ZWRTdGFydERhdGUgPSB0aGlzLnRyYW5mb3JtRGF0ZSh0aGlzLnJlcG9ydHNGb3JtLmdldCgnc3RhcnREYXRlJykudmFsdWUpLFxuICAgIHNlbGVjdGVkRW5kRGF0ZSA9IHRoaXMudHJhbmZvcm1EYXRlKHRoaXMucmVwb3J0c0Zvcm0uZ2V0KCdlbmREYXRlJykudmFsdWUpO1xuXG4gICAgaWYoc2VsZWN0ZWRSZXBvcnROYW1lID09PSAnUFJPQ0VTU0VEX1VOQUxMT0NBVEVEJyB8fCBzZWxlY3RlZFJlcG9ydE5hbWUgPT09ICdTVVJQTFVTX0FORF9TSE9SVEZBTEwnICl7XG4gICAgICB0aGlzLnBheW1lbnRWaWV3U2VydmljZS5kb3dubG9hZFNlbGVjdGVkUmVwb3J0KHNlbGVjdGVkUmVwb3J0TmFtZSxzZWxlY3RlZFN0YXJ0RGF0ZSxzZWxlY3RlZEVuZERhdGUpLnN1YnNjcmliZShcbiAgICAgICAgcmVzcG9uc2UgPT4gIHtcbiAgICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IHRoaXMuZXJyb3JIYW5kbGVyU2VydmljZS5nZXRTZXJ2ZXJFcnJvck1lc3NhZ2UoZmFsc2UsIGZhbHNlLCAnJyk7XG4gICAgICAgICAgY29uc3QgcmVzdWx0ID0gSlNPTi5wYXJzZShyZXNwb25zZSk7XG4gICAgICAgICAgbGV0IHJlcz0ge2RhdGE6IHRoaXMuYXBwbHlEYXRlRm9ybWF0KHJlc3VsdCl9O1xuICAgICAgICAgIGlmKHJlc1snZGF0YSddLmxlbmd0aCA9PT0gMCAmJiBzZWxlY3RlZFJlcG9ydE5hbWUgPT09ICdQUk9DRVNTRURfVU5BTExPQ0FURUQnICl7XG4gICAgICAgICAgICByZXMuZGF0YT0gcHJvY2Vzc2VkVW5hbGxvY2F0ZWQ7XG4gICAgICAgICAgfSBlbHNlIGlmKHJlc1snZGF0YSddLmxlbmd0aCA9PT0gMCAmJiBzZWxlY3RlZFJlcG9ydE5hbWUgPT09ICdTVVJQTFVTX0FORF9TSE9SVEZBTEwnICkge1xuICAgICAgICAgICAgcmVzLmRhdGE9IHNob3J0RmFsbHNScHREZWZhdWx0O1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZihyZXN1bHRbJ2RhdGEnXS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBmb3IoIHZhciBpPTA7IGk8IHJlc1snZGF0YSddLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgIGlmKHJlc1snZGF0YSddW2ldW1wicGF5bWVudF9hc3NldF9kY25cIl0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHJlc1snZGF0YSddW2ldWydlbnZfcmVmJ10gPSByZXNbJ2RhdGEnXVtpXVtcInBheW1lbnRfYXNzZXRfZGNuXCJdLnN1YnN0cigwLDEzKTtcbiAgICAgICAgICAgICAgICByZXNbJ2RhdGEnXVtpXVsnZW52X2l0ZW0nXSA9IHJlc1snZGF0YSddW2ldW1wicGF5bWVudF9hc3NldF9kY25cIl0uc3Vic3RyKDEzLDIxKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZihyZXNbJ2RhdGEnXVtpXVtcImFtb3VudFwiXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgcmVzWydkYXRhJ11baV1bJ2Ftb3VudCddID0gdGhpcy5jb252ZXJ0VG9GbG9hdFZhbHVlKHJlc1snZGF0YSddW2ldWydhbW91bnQnXSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYocmVzWydkYXRhJ11baV1bXCJiYWxhbmNlXCJdICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICByZXNbJ2RhdGEnXVtpXVsnYmFsYW5jZSddID0gdGhpcy5jb252ZXJ0VG9GbG9hdFZhbHVlKHJlc1snZGF0YSddW2ldW1wiYmFsYW5jZVwiXSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgbGV0IE9wID0gcmVzWydkYXRhJ11baV1bXCJzdXJwbHVzX3Nob3J0ZmFsbFwiXTtcbiAgICAgICAgICAgICAgaWYoT3AgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHJlc1snZGF0YSddW2ldWydzdXJwbHVzX3Nob3J0ZmFsbCddID0gT3AgPT1cIlN1cnBsdXNcIiA/IFwiT3ZlciBwYXltZW50XCI6XCJVbmRlciBwYXltZW50XCI7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYocmVzWydkYXRhJ11baV1bXCJwYXltZW50X2Ftb3VudFwiXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgcmVzWydkYXRhJ11baV1bJ3BheW1lbnRfYW1vdW50J10gPSB0aGlzLmNvbnZlcnRUb0Zsb2F0VmFsdWUocmVzWydkYXRhJ11baV1bJ3BheW1lbnRfYW1vdW50J10pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuaXNEb3duTG9hZEJ1dHRvbmRpc2FibGVkID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy54bEZpbGVTZXJ2aWNlLmV4cG9ydEFzRXhjZWxGaWxlKHJlc1snZGF0YSddLCB0aGlzLmdldEZpbGVOYW1lKHRoaXMucmVwb3J0c0Zvcm0uZ2V0KCdzZWxlY3RlZHJlcG9ydCcpLnZhbHVlLCBzZWxlY3RlZFN0YXJ0RGF0ZSwgc2VsZWN0ZWRFbmREYXRlKSk7XG4gICAgICAgIH0sXG4gICAgICAgIChlcnJvcjogYW55KSA9PiB7XG4gICAgICAgICAgdGhpcy5pc0Rvd25Mb2FkQnV0dG9uZGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IHRoaXMuZXJyb3JIYW5kbGVyU2VydmljZS5nZXRTZXJ2ZXJFcnJvck1lc3NhZ2UodHJ1ZSwgZmFsc2UsICcnKTtcbiAgICAgICAgfSlcblxuICAgIH0gZWxzZSBpZihzZWxlY3RlZFJlcG9ydE5hbWUgPT09ICdQQVlNRU5UX0ZBSUxVUkVfRVZFTlQnKSB7XG5cbiAgICAgIHRoaXMucGF5bWVudFZpZXdTZXJ2aWNlLmRvd25sb2FkRmFpbHVyZVJlcG9ydChzZWxlY3RlZFN0YXJ0RGF0ZSxzZWxlY3RlZEVuZERhdGUpLnN1YnNjcmliZShcbiAgICAgICAgcmVzcG9uc2UgPT4gIHtcbiAgICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IHRoaXMuZXJyb3JIYW5kbGVyU2VydmljZS5nZXRTZXJ2ZXJFcnJvck1lc3NhZ2UoZmFsc2UsIGZhbHNlLCAnJyk7XG4gICAgICAgICAgY29uc3QgcmVzdWx0ID0ge2RhdGE6IEpTT04ucGFyc2UocmVzcG9uc2UpWydwYXltZW50X2ZhaWx1cmVfcmVwb3J0X2xpc3QnXX07XG4gICAgICAgICAgbGV0IHJlcyA9IHtkYXRhOiB0aGlzLmFwcGx5RGF0ZUZvcm1hdChyZXN1bHQpfTtcbiAgICAgICAgICBpZiAocmVzdWx0WydkYXRhJ10ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgZm9yICggdmFyIGk9MDsgaTwgcmVzWydkYXRhJ10ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgaWYgKHJlc1snZGF0YSddW2ldW1wiZGlzcHV0ZWRfYW1vdW50XCJdICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICByZXNbJ2RhdGEnXVtpXVsnZGlzcHV0ZWRfYW1vdW50J10gPSB0aGlzLmNvbnZlcnRUb0Zsb2F0VmFsdWUocmVzWydkYXRhJ11baV1bXCJkaXNwdXRlZF9hbW91bnRcIl0pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmIChyZXNbJ2RhdGEnXVtpXVtcInJlcHJlc2VudG1lbnRfc3RhdHVzXCJdICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICByZXNbJ2RhdGEnXVtpXVsncmVwcmVzZW50bWVudF9zdGF0dXMnXSA9IHJlc1snZGF0YSddW2ldW1wicmVwcmVzZW50bWVudF9zdGF0dXNcIl0udG9Mb3dlckNhc2UoKSA9PT0gJ3llcycgPyAnU3VjY2VzcycgOiAnRmFpbHVyZSc7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKHJlc1snZGF0YSddW2ldWydyZXByZXNlbnRtZW50X3N0YXR1cyddID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICByZXNbJ2RhdGEnXVtpXVsncmVwcmVzZW50bWVudF9zdGF0dXMnXSA9ICdObyByZXByZXNlbnRtZW50IHJlY2VpdmVkJztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAocmVzWydkYXRhJ11baV1bJ3JlcHJlc2VudG1lbnRfZGF0ZSddID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICByZXNbJ2RhdGEnXVtpXVsncmVwcmVzZW50bWVudF9kYXRlJ10gPSAnTi9BJztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAocmVzWydkYXRhJ11baV1bJ3JlZnVuZF9yZWZlcmVuY2UnXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgcmVzWydkYXRhJ11baV1bJ3JlZnVuZF9yZWZlcmVuY2UnXSA9ICdObyByZWZ1bmQgYXZhaWxhYmxlJztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAocmVzWydkYXRhJ11baV1bJ3JlZnVuZF9hbW91bnQnXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgcmVzWydkYXRhJ11baV1bJ3JlZnVuZF9hbW91bnQnXSA9ICdOL0EnO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmIChyZXNbJ2RhdGEnXVtpXVsncmVmdW5kX2RhdGUnXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgcmVzWydkYXRhJ11baV1bJ3JlZnVuZF9kYXRlJ10gPSAnTi9BJztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAocmVzWydkYXRhJ11baV1bJ2RvY3VtZW50X2NvbnRyb2xfbnVtYmVyJ10gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHJlc1snZGF0YSddW2ldWydkb2N1bWVudF9jb250cm9sX251bWJlciddID0gJ04vQSc7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5pc0Rvd25Mb2FkQnV0dG9uZGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLnhsRmlsZVNlcnZpY2UuZXhwb3J0QXNFeGNlbEZpbGUocmVzWydkYXRhJ10sIHRoaXMuZ2V0RmlsZU5hbWUodGhpcy5yZXBvcnRzRm9ybS5nZXQoJ3NlbGVjdGVkcmVwb3J0JykudmFsdWUsIHNlbGVjdGVkU3RhcnREYXRlLCBzZWxlY3RlZEVuZERhdGUgKSk7XG5cbiAgICAgICAgfSxcbiAgICAgICAgKGVycm9yOiBhbnkpID0+IHtcbiAgICAgICAgICB0aGlzLmlzRG93bkxvYWRCdXR0b25kaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgICAgIGNvbnN0IGVycm9yQ29udGVudCA9IGVycm9yLnJlcGxhY2UoL1teYS16QS1aIF0vZywgJycpLnRyaW0oKTtcbiAgICAgICAgICBjb25zdCBzdGF0dXNDb2RlID0gZXJyb3IucmVwbGFjZSgvW15hLXpBLVowLTkgXS9nLCAnJykudHJpbSgpLnNwbGl0KCcgJylbMF07XG4gICAgICAgICAgaWYoc3RhdHVzQ29kZSA9PT0gJzQwNCcpIHtcbiAgICAgICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gdGhpcy5lcnJvckhhbmRsZXJTZXJ2aWNlLmdldFNlcnZlckVycm9yTWVzc2FnZSh0cnVlLCB0cnVlLCBlcnJvckNvbnRlbnQpO1xuICAgICAgICAgIH1lbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gdGhpcy5lcnJvckhhbmRsZXJTZXJ2aWNlLmdldFNlcnZlckVycm9yTWVzc2FnZSh0cnVlLCBmYWxzZSwgJycpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcblxuICAgIH0gZWxzZSBpZihzZWxlY3RlZFJlcG9ydE5hbWUgPT09ICdURUxFUEhPTllfUEFZTUVOVFMnKSB7XG5cbiAgICAgICAgICAgIHRoaXMucGF5bWVudFZpZXdTZXJ2aWNlLmRvd25sb2FkVGVsZXBob255UGF5bWVudHNSZXBvcnQoc2VsZWN0ZWRTdGFydERhdGUsc2VsZWN0ZWRFbmREYXRlKS5zdWJzY3JpYmUoXG4gICAgICAgICAgICAgIHJlc3BvbnNlID0+ICB7XG4gICAgICAgICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSB0aGlzLmVycm9ySGFuZGxlclNlcnZpY2UuZ2V0U2VydmVyRXJyb3JNZXNzYWdlKGZhbHNlLCBmYWxzZSwgJycpO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0ge2RhdGE6IEpTT04ucGFyc2UocmVzcG9uc2UpWyd0ZWxlcGhvbnlfcGF5bWVudHNfcmVwb3J0X2xpc3QnXX07XG4gICAgICAgICAgICAgICAgbGV0IHJlcz0ge2RhdGE6IHRoaXMuYXBwbHlEYXRlRm9ybWF0KHJlc3VsdCl9O1xuICAgICAgICAgICAgICAgIC8vcmVzLmRhdGE9IHRlbGVwaG9ueVBheW1lbnRzUnB0RGVmYXVsdDtcbiAgICAgICAgICAgICAgICBpZihyZXN1bHRbJ2RhdGEnXS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgZm9yKCB2YXIgaT0wOyBpPCByZXNbJ2RhdGEnXS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICAgaWYocmVzWydkYXRhJ11baV1bXCJBbW91bnRcIl0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzWydkYXRhJ11baV1bJ0Ftb3VudCddID0gdGhpcy5jb252ZXJ0VG9GbG9hdFZhbHVlKHJlc1snZGF0YSddW2ldWydBbW91bnQnXSk7XG4gICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuaXNEb3duTG9hZEJ1dHRvbmRpc2FibGVkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy54bEZpbGVTZXJ2aWNlLmV4cG9ydEFzRXhjZWxGaWxlKHJlc1snZGF0YSddLCB0aGlzLmdldEZpbGVOYW1lKHRoaXMucmVwb3J0c0Zvcm0uZ2V0KCdzZWxlY3RlZHJlcG9ydCcpLnZhbHVlLCBzZWxlY3RlZFN0YXJ0RGF0ZSwgc2VsZWN0ZWRFbmREYXRlICkpO1xuXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIChlcnJvcjogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5pc0Rvd25Mb2FkQnV0dG9uZGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBjb25zdCBlcnJvckNvbnRlbnQgPSBlcnJvci5yZXBsYWNlKC9bXmEtekEtWiBdL2csICcnKS50cmltKCk7XG4gICAgICAgICAgICAgICAgY29uc3Qgc3RhdHVzQ29kZSA9IGVycm9yLnJlcGxhY2UoL1teYS16QS1aMC05IF0vZywgJycpLnRyaW0oKS5zcGxpdCgnICcpWzBdO1xuICAgICAgICAgICAgICAgIGlmKHN0YXR1c0NvZGUgPT09ICc0MDQnKSB7XG4gICAgICAgICAgICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IHRoaXMuZXJyb3JIYW5kbGVyU2VydmljZS5nZXRTZXJ2ZXJFcnJvck1lc3NhZ2UodHJ1ZSwgdHJ1ZSwgZXJyb3JDb250ZW50KTtcbiAgICAgICAgICAgICAgICB9ZWxzZSB7XG4gICAgICAgICAgICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IHRoaXMuZXJyb3JIYW5kbGVyU2VydmljZS5nZXRTZXJ2ZXJFcnJvck1lc3NhZ2UodHJ1ZSwgZmFsc2UsICcnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5idWxrU2NhbmluZ1BheW1lbnRTZXJ2aWNlLmRvd25sb2FkU2VsZWN0ZWRSZXBvcnQoc2VsZWN0ZWRSZXBvcnROYW1lLHNlbGVjdGVkU3RhcnREYXRlLHNlbGVjdGVkRW5kRGF0ZSkuc3Vic2NyaWJlKFxuICAgICAgICByZXNwb25zZSA9PiAge1xuICAgICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gdGhpcy5lcnJvckhhbmRsZXJTZXJ2aWNlLmdldFNlcnZlckVycm9yTWVzc2FnZShmYWxzZSwgZmFsc2UsICcnKTtcbiAgICAgICAgICBjb25zdCByZXN1bHQgPSBKU09OLnBhcnNlKHJlc3BvbnNlKTtcbiAgICAgICAgICBsZXQgcmVzID0ge2RhdGE6IHRoaXMuYXBwbHlEYXRlRm9ybWF0KHJlc3VsdCl9O1xuICAgICAgICAgIGlmKHJlc1snZGF0YSddLmxlbmd0aCA9PT0gMCAmJiBzZWxlY3RlZFJlcG9ydE5hbWUgPT09ICdEQVRBX0xPU1MnICl7XG4gICAgICAgICAgICByZXMuZGF0YT0gZGF0YUxvc3NScHREZWZhdWx0O1xuICAgICAgICAgIH0gZWxzZSBpZihyZXNbJ2RhdGEnXS5sZW5ndGggPT09IDAgJiYgc2VsZWN0ZWRSZXBvcnROYW1lID09PSAnVU5QUk9DRVNTRUQnKXtcbiAgICAgICAgICAgIHJlcy5kYXRhID0gdW5Qcm9jZXNzZWRScHREZWZhdWx0O1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZihyZXN1bHRbJ2RhdGEnXS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgZm9yKCB2YXIgaT0wOyBpPCByZXNbJ2RhdGEnXS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYocmVzWydkYXRhJ11baV1bXCJhbW91bnRcIl0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICByZXNbJ2RhdGEnXVtpXVsnYW1vdW50J10gPSB0aGlzLmNvbnZlcnRUb0Zsb2F0VmFsdWUocmVzWydkYXRhJ11baV1bJ2Ftb3VudCddKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmKHJlc1snZGF0YSddW2ldW1wicGF5bWVudF9hc3NldF9kY25cIl0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmVzWydkYXRhJ11baV1bJ2Vudl9yZWYnXSA9IHJlc1snZGF0YSddW2ldW1wicGF5bWVudF9hc3NldF9kY25cIl0uc3Vic3RyKDAsMTMpO1xuICAgICAgICAgICAgcmVzWydkYXRhJ11baV1bJ2Vudl9pdGVtJ10gPSByZXNbJ2RhdGEnXVtpXVtcInBheW1lbnRfYXNzZXRfZGNuXCJdLnN1YnN0cigxMywyMSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgICB0aGlzLmlzRG93bkxvYWRCdXR0b25kaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMueGxGaWxlU2VydmljZS5leHBvcnRBc0V4Y2VsRmlsZShyZXNbJ2RhdGEnXSwgdGhpcy5nZXRGaWxlTmFtZSh0aGlzLnJlcG9ydHNGb3JtLmdldCgnc2VsZWN0ZWRyZXBvcnQnKS52YWx1ZSwgc2VsZWN0ZWRTdGFydERhdGUsIHNlbGVjdGVkRW5kRGF0ZSApKTtcbiAgICAgICAgfSxcbiAgICAgICAgKGVycm9yOiBhbnkpID0+IHtcbiAgICAgICAgICB0aGlzLmlzRG93bkxvYWRCdXR0b25kaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gdGhpcy5lcnJvckhhbmRsZXJTZXJ2aWNlLmdldFNlcnZlckVycm9yTWVzc2FnZSh0cnVlLCBmYWxzZSwgJycpO1xuICAgICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIGdldEZpbGVOYW1lKHNlbGVjdGVkT3B0aW9uOiBzdHJpbmcsIHN0YXJ0RGF0ZTogc3RyaW5nLCBlbmREYXRlOiBzdHJpbmcgKSB7XG4gICAgY29uc3QgbG9jID0gJ2VuLVVTJyxcbiAgICAgIHN0RHQgPSBmb3JtYXREYXRlKHN0YXJ0RGF0ZSwgJ2RkTU15eScsIGxvYyksXG4gICAgICBlbkR0ID0gZm9ybWF0RGF0ZShlbmREYXRlLCAnZGRNTXl5JywgbG9jKSxcbiAgICAgIG5vdyA9IG5ldyBEYXRlKCksXG4gICAgICBjdXJyZW50RGF0ZSA9IGZvcm1hdERhdGUobm93LCAnZGRNTXl5JywgbG9jKSxcbiAgICAgIHRpbWVzdGFtcCA9IGAke2N1cnJlbnREYXRlfV8ke3RoaXMuZ2V0VHdvZGlnaXQobm93LmdldEhvdXJzKCkpfSR7dGhpcy5nZXRUd29kaWdpdChub3cuZ2V0TWludXRlcygpKX0ke3RoaXMuZ2V0VHdvZGlnaXQobm93LmdldFNlY29uZHMoKSl9YCxcbiAgICAgIHNlbGVjdGVkT3B0aW9uVHh0ID0gdGhpcy5nZXRDYW1lbENhc2VTdHJpbmcoc2VsZWN0ZWRPcHRpb24pO1xuXG4gICAgICByZXR1cm4gc2VsZWN0ZWRPcHRpb25UeHQrJ18nK3N0RHQrJ19Ub18nK2VuRHQrJ19SdW5fJysgdGltZXN0YW1wO1xuICB9XG4gIHRyYW5mb3JtRGF0ZShzdHJEYXRlOiBzdHJpbmcpIHtcbiAgICBsZXQgcmVzdWx0ID0gJyc7XG4gICAgaWYgKHN0ckRhdGUpIHtcbiAgICAgIGxldCBwYXJ0cyA9IHN0ckRhdGUuc3BsaXQoJy0nKTtcbiAgICAgIHJlc3VsdCA9IGAke3BhcnRzWzFdfS8ke3BhcnRzWzJdfS8ke3BhcnRzWzBdfWA7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbiAgZ2V0VHdvZGlnaXQoaW5wdXQ6IG51bWJlcil7XG4gICAgcmV0dXJuIChcIjBcIiArIGlucHV0KS5zbGljZSgtMik7XG4gIH1cbiAgZ2V0Q2FtZWxDYXNlU3RyaW5nKHNlbGVjdGVkT3B0aW9uKSB7XG4gICAgbGV0IHJlc3VsdDtcbiAgICBzd2l0Y2goc2VsZWN0ZWRPcHRpb24pIHtcbiAgICAgIGNhc2UgJ1VOUFJPQ0VTU0VEJzoge1xuICAgICAgICByZXN1bHQgPSAnVW5wcm9jZXNzZWQnO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ0RBVEFfTE9TUyc6IHtcbiAgICAgICAgcmVzdWx0ID0gJ0RhdGFfTG9zcyc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnUFJPQ0VTU0VEX1VOQUxMT0NBVEVEJzoge1xuICAgICAgICByZXN1bHQgPSAnUHJvY2Vzc2VkX1VuYWxsb2NhdGVkJztcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdTVVJQTFVTX0FORF9TSE9SVEZBTEwnOiB7XG4gICAgICAgIHJlc3VsdCA9ICdPdmVyIFBheW1lbnRfVW5kZXIgUGF5bWVudCc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnUEFZTUVOVF9GQUlMVVJFX0VWRU5UJzoge1xuICAgICAgICByZXN1bHQgPSAnUGF5bWVudCBmYWlsdXJlIGV2ZW50JztcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdURUxFUEhPTllfUEFZTUVOVFMnOiB7XG4gICAgICAgICAgICAgIHJlc3VsdCA9ICdUZWxlcGhvbnkgUGF5bWVudHMnO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgcmVzdWx0ID0gc2VsZWN0ZWRPcHRpb247XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgfVxuICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuICBhcHBseURhdGVGb3JtYXQocmVzKSB7XG4gICAgcmV0dXJuIHJlc1snZGF0YSddLm1hcCh2YWx1ZSA9PiB7XG4gICAgICBpZiAodmFsdWVbJ2RhdGVfYmFua2VkJ10pIHtcbiAgICAgICAgdmFsdWVbJ2RhdGVfYmFua2VkJ10gPSBmb3JtYXREYXRlKHZhbHVlWydkYXRlX2JhbmtlZCddLCB0aGlzLmZtdCwgdGhpcy5sb2MpO1xuICAgICAgfVxuICAgICAgaWYgKHZhbHVlWydldmVudF9kYXRlJ10gJiYgdmFsdWVbJ2V2ZW50X2RhdGUnXS5pbmRleE9mKCcsJykgPT09IC0xKSB7XG4gICAgICAgIHZhbHVlWydldmVudF9kYXRlJ10gPSBmb3JtYXREYXRlKHZhbHVlWydldmVudF9kYXRlJ10sIHRoaXMuZm10LCB0aGlzLmxvYyk7XG4gICAgICB9IGVsc2UgaWYgKHZhbHVlWydldmVudF9kYXRlJ10gJiYgdmFsdWVbJ2V2ZW50X2RhdGUnXS5pbmRleE9mKCcsJykgIT09IC0xKSB7XG4gICAgICAgIHZhbHVlWydldmVudF9kYXRlJ10gPSB0aGlzLm11bHRpRGF0ZUZvcm1hdGVyKHZhbHVlWydldmVudF9kYXRlJ10pXG4gICAgICB9XG5cbiAgICAgIGlmICh2YWx1ZVsncmVwcmVzZW50bWVudF9kYXRlJ10gJiYgdmFsdWVbJ3JlcHJlc2VudG1lbnRfZGF0ZSddLmluZGV4T2YoJywnKSA9PT0gLTEpIHtcbiAgICAgICAgdmFsdWVbJ3JlcHJlc2VudG1lbnRfZGF0ZSddID0gZm9ybWF0RGF0ZSh2YWx1ZVsncmVwcmVzZW50bWVudF9kYXRlJ10sIHRoaXMuZm10LCB0aGlzLmxvYyk7XG4gICAgICB9IGVsc2UgaWYgKHZhbHVlWydyZXByZXNlbnRtZW50X2RhdGUnXSAmJiB2YWx1ZVsncmVwcmVzZW50bWVudF9kYXRlJ10uaW5kZXhPZignLCcpICE9PSAtMSkge1xuICAgICAgICB2YWx1ZVsncmVwcmVzZW50bWVudF9kYXRlJ10gPSB0aGlzLm11bHRpRGF0ZUZvcm1hdGVyKHZhbHVlWydyZXByZXNlbnRtZW50X2RhdGUnXSlcbiAgICAgIH1cblxuICAgICAgaWYgKHZhbHVlWydyZWZ1bmRfZGF0ZSddICYmIHZhbHVlWydyZWZ1bmRfZGF0ZSddLmluZGV4T2YoJywnKSA9PT0gLTEpIHtcbiAgICAgICAgdmFsdWVbJ3JlZnVuZF9kYXRlJ10gPSBmb3JtYXREYXRlKHZhbHVlWydyZWZ1bmRfZGF0ZSddLCB0aGlzLmZtdCwgdGhpcy5sb2MpO1xuICAgICAgfSBlbHNlIGlmICh2YWx1ZVsncmVmdW5kX2RhdGUnXSAmJiB2YWx1ZVsncmVmdW5kX2RhdGUnXS5pbmRleE9mKCcsJykgIT09IC0xKSB7XG4gICAgICAgIHZhbHVlWydyZWZ1bmRfZGF0ZSddID0gdGhpcy5tdWx0aURhdGVGb3JtYXRlcih2YWx1ZVsncmVmdW5kX2RhdGUnXSlcbiAgICAgIH1cblxuICAgICAgaWYgKHZhbHVlWydQYXltZW50IERhdGUnXSkge1xuICAgICAgICAgICAgICB2YWx1ZVsnUGF5bWVudCBEYXRlJ10gPSBmb3JtYXREYXRlKHZhbHVlWydQYXltZW50IERhdGUnXSwgdGhpcy5mbXQsIHRoaXMubG9jKTtcbiAgICAgICAgICAgIH1cbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9KTtcbiAgfVxuICBtdWx0aURhdGVGb3JtYXRlcihkYXRlU3RyKSB7XG4gICByZXR1cm4gZGF0ZVN0ci5zcGxpdCgnLCcpLm1hcCgoZGF0ZSkgPT4gZm9ybWF0RGF0ZShkYXRlLCB0aGlzLmZtdCwgdGhpcy5sb2MpKS5qb2luKCcsJyk7XG4gIH1cblxuICBjb252ZXJ0VG9GbG9hdFZhbHVlKGFtdCkge1xuICAgIHJldHVybiBhbXQgPyBOdW1iZXIucGFyc2VGbG9hdChhbXQpLnRvRml4ZWQoMik6ICcwLjAwJztcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImhlYWRlclwiPlxuICAgICAgPGlucHV0ICNteUlucHV0IHR5cGU9J2hpZGRlbicgY2xhc3M9J2lGcmFtZURyaXZlbkltYWdlVmFsdWUnIHZhbHVlPSdSRVBPUlRTJz5cbiAgICAgIDxjY3BheS1lcnJvci1iYW5uZXIgKm5nSWY9XCJlcnJvck1lc3NhZ2Uuc2hvd0Vycm9yXCIgW2Vycm9yTWVzc2FnZV09XCJlcnJvck1lc3NhZ2VcIj48L2NjcGF5LWVycm9yLWJhbm5lcj5cbiAgICAgIDxsZWdlbmQgY2xhc3M9XCJnb3Z1ay1maWVsZHNldF9fbGVnZW5kLS14bFwiPlxuICAgICAgICAgPGgxIGNsYXNzPVwiZ292dWstZmllbGRzZXRfX2hlYWRpbmdcIj4gQ2hvb3NlIHRoZSByZXBvcnQgdHlwZSBhbmQgZGF0ZSByYW5nZTwvaDE+XG4gICAgICA8L2xlZ2VuZD5cbjwvZGl2PlxuPGZvcm0gW2Zvcm1Hcm91cF09XCJyZXBvcnRzRm9ybVwiPlxuICAgICA8ZGl2ICBjbGFzcz1cImdvdnVrLWZvcm0tZ3JvdXBcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImdvdnVrLXJhZGlvcyBnb3Z1ay1yYWRpb3MtLWNvbmRpdGlvbmFsXCIgZGF0YS1tb2R1bGU9XCJnb3Z1ay1yYWRpb3NcIj5cbiAgICAgICAgICA8ZGl2ICBjbGFzcz1cImdvdnVrLXJhZGlvc19faXRlbVwiPlxuICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgcmVxdWlyZWRcbiAgICAgICAgICAgICAgaWQ9XCJEYXRhTG9zc1wiXG4gICAgICAgICAgICAgIGNsYXNzPVwiZ292dWstcmFkaW9zX19pbnB1dFwiXG4gICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInNlbGVjdGVkcmVwb3J0XCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInZhbGlkYXRlRGF0ZXMoJ0RBVEFfTE9TUycpXCJcbiAgICAgICAgICAgICAgbmFtZT1cInNlbGVjdGVkcmVwb3J0XCJcbiAgICAgICAgICAgICAgdHlwZT1cInJhZGlvXCJcbiAgICAgICAgICAgICAgdmFsdWU9XCJEQVRBX0xPU1NcIlxuICAgICAgICAgICAgICAgZGF0YS1hcmlhLWNvbnRyb2xzPVwiRGF0YUxvc3NcIi8+XG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImdvdnVrLWxhYmVsIGdvdnVrLXJhZGlvc19fbGFiZWwgZ292dWstbGFiZWwtLW1cIiBmb3I9XCJEYXRhTG9zc1wiPkRhdGEgbG9zczwvbGFiZWw+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZm9ybS1oaW50XCI+TWlzc2luZyB0cmFuc2FjdGlvbnMgd2hlcmUgZGF0YSBoYXMgYmVlbiByZWNlaXZlZCBmcm9tIG9ubHkgZWl0aGVyIG9mIEV4ZWxhIG9yIEJ1bGsgc2Nhbjwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgPGRpdiBjbGFzcz1cImdvdnVrLXJhZGlvc19faXRlbVwiPlxuICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgaWQ9XCJVbnByb2Nlc3NlZFRyYW5zYWN0aW9uc1wiXG4gICAgICAgICAgICAgIGNsYXNzPVwiZ292dWstcmFkaW9zX19pbnB1dFwiXG4gICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInNlbGVjdGVkcmVwb3J0XCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInZhbGlkYXRlRGF0ZXMoJ1VOUFJPQ0VTU0VEJylcIlxuICAgICAgICAgICAgICBuYW1lPVwic2VsZWN0ZWRyZXBvcnRcIlxuICAgICAgICAgICAgICB0eXBlPVwicmFkaW9cIlxuICAgICAgICAgICAgICB2YWx1ZT1cIlVOUFJPQ0VTU0VEXCJcbiAgICAgICAgICAgICAgZGF0YS1hcmlhLWNvbnRyb2xzPVwiVW5wcm9jZXNzZWRUcmFuc2FjdGlvbnNcIi8+XG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImdvdnVrLWxhYmVsIGdvdnVrLXJhZGlvc19fbGFiZWwgZ292dWstbGFiZWwtLW1cIiBmb3I9XCJVbnByb2Nlc3NlZFRyYW5zYWN0aW9uc1wiPlVucHJvY2Vzc2VkIHRyYW5zYWN0aW9uczwvbGFiZWw+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZm9ybS1oaW50XCI+VHJhbnNhY3Rpb24gcmVjb3JkcyB0aGF0IGFyZSBzdGlsbCB1bnByb2Nlc3NlZCBieSBzdGFmZi48L3NwYW4+XG4gICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgPGRpdiBjbGFzcz1cImdvdnVrLXJhZGlvc19faXRlbVwiPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICBpZD1cIlByb2Nlc3NlZFVuYWxsb2NhdGVkXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZ292dWstcmFkaW9zX19pbnB1dFwiXG4gICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJzZWxlY3RlZHJlcG9ydFwiXG4gICAgICAgICAgICBuYW1lPVwic2VsZWN0ZWRyZXBvcnRcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInZhbGlkYXRlRGF0ZXMoJ1BST0NFU1NFRF9VTkFMTE9DQVRFRCcpXCJcbiAgICAgICAgICAgIHR5cGU9XCJyYWRpb1wiXG4gICAgICAgICAgICB2YWx1ZT1cIlBST0NFU1NFRF9VTkFMTE9DQVRFRFwiXG4gICAgICAgICAgICBkYXRhLWFyaWEtY29udHJvbHM9XCJQcm9jZXNzZWRVbmFsbG9jYXRlZFwiLz5cbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImdvdnVrLWxhYmVsIGdvdnVrLXJhZGlvc19fbGFiZWwgZ292dWstbGFiZWwtLW1cIiBmb3I9XCJQcm9jZXNzZWRVbmFsbG9jYXRlZFwiPlByb2Nlc3NlZCB1bmFsbG9jYXRlZDwvbGFiZWw+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZvcm0taGludFwiPlBheW1lbnRzIHRoYXQgYXJlIG1hcmtlZCBhcyDigJhVbmlkZW50aWZpZWTigJkgb3Ig4oCYVHJhbnNmZXJyZWTigJkgKFVuc29saWNpdGVkIHJlcXVlc3RzKTwvc3Bhbj5cbiAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICA8ZGl2IGNsYXNzPVwiZ292dWstcmFkaW9zX19pdGVtXCI+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIGlkPVwiU2hvcnRmYWxsc2FuZFN1cnBsdXNcIlxuICAgICAgICAgICAgY2xhc3M9XCJnb3Z1ay1yYWRpb3NfX2lucHV0XCJcbiAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInNlbGVjdGVkcmVwb3J0XCJcbiAgICAgICAgICAgIG5hbWU9XCJzZWxlY3RlZHJlcG9ydFwiXG4gICAgICAgICAgICAoY2xpY2spPVwidmFsaWRhdGVEYXRlcygnU1VSUExVU19BTkRfU0hPUlRGQUxMJylcIlxuICAgICAgICAgICAgdHlwZT1cInJhZGlvXCJcbiAgICAgICAgICAgIHZhbHVlPVwiU1VSUExVU19BTkRfU0hPUlRGQUxMXCJcbiAgICAgICAgICAgIGRhdGEtYXJpYS1jb250cm9scz1cIlNob3J0ZmFsbHNhbmRTdXJwbHVzXCIvPlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZ292dWstbGFiZWwgZ292dWstcmFkaW9zX19sYWJlbCBnb3Z1ay1sYWJlbC0tbVwiIGZvcj1cIlNob3J0ZmFsbHNhbmRTdXJwbHVzXCI+VW5kZXIgcGF5bWVudCBhbmQgT3ZlciBwYXltZW50PC9sYWJlbD5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZm9ybS1oaW50XCI+UmVxdWVzdHMgd2hlcmUgYmFsYW5jZXMgYXJlIG1hcmtlZCBhcyBVbmRlciBwYXltZW50L092ZXIgcGF5bWVudCBmdXJ0aGVyIGNhc2UgbWFuYWdlbWVudC5cbiAgICAgICAgICAgICAgIEUuZzogUmVmdW5kIGFwcHJvdmFsLCBDdXN0b21lciBjb250YWN0PC9zcGFuPlxuICAgICAgICAgPC9kaXY+XG4gICAgICAgICA8ZGl2IGNsYXNzPVwiZ292dWstcmFkaW9zX19pdGVtXCI+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIGlkPVwiUGF5bWVudEZhaWx1cmVFdmVudFwiXG4gICAgICAgICAgICBjbGFzcz1cImdvdnVrLXJhZGlvc19faW5wdXRcIlxuICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwic2VsZWN0ZWRyZXBvcnRcIlxuICAgICAgICAgICAgbmFtZT1cInNlbGVjdGVkcmVwb3J0XCJcbiAgICAgICAgICAgIChjbGljayk9XCJ2YWxpZGF0ZURhdGVzKCdQQVlNRU5UX0ZBSUxVUkVfRVZFTlQnKVwiXG4gICAgICAgICAgICB0eXBlPVwicmFkaW9cIlxuICAgICAgICAgICAgdmFsdWU9XCJQQVlNRU5UX0ZBSUxVUkVfRVZFTlRcIlxuICAgICAgICAgICAgZGF0YS1hcmlhLWNvbnRyb2xzPVwiUGF5bWVudEZhaWx1cmVFdmVudFwiLz5cbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImdvdnVrLWxhYmVsIGdvdnVrLXJhZGlvc19fbGFiZWwgZ292dWstbGFiZWwtLW1cIiBmb3I9XCJQYXltZW50RmFpbHVyZUV2ZW50XCI+UGF5bWVudCBmYWlsdXJlIGV2ZW50PC9sYWJlbD5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZm9ybS1oaW50XCI+RmFpbGVkIHBheW1lbnQgdHJhbnNhY3Rpb24gZGV0YWlsczwvc3Bhbj5cbiAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1yYWRpb3NfX2l0ZW1cIj5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICBpZD1cIlRlbGVwaG9ueVBheW1lbnRzXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJnb3Z1ay1yYWRpb3NfX2lucHV0XCJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwic2VsZWN0ZWRyZXBvcnRcIlxuICAgICAgICAgICAgICBuYW1lPVwic2VsZWN0ZWRyZXBvcnRcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwidmFsaWRhdGVEYXRlcygnVEVMRVBIT05ZX1BBWU1FTlRTJylcIlxuICAgICAgICAgICAgICB0eXBlPVwicmFkaW9cIlxuICAgICAgICAgICAgICB2YWx1ZT1cIlRFTEVQSE9OWV9QQVlNRU5UU1wiXG4gICAgICAgICAgICAgIGRhdGEtYXJpYS1jb250cm9scz1cIlRlbGVwaG9ueVBheW1lbnRzXCIvPlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZ292dWstbGFiZWwgZ292dWstcmFkaW9zX19sYWJlbCBnb3Z1ay1sYWJlbC0tbVwiIGZvcj1cIlRlbGVwaG9ueVBheW1lbnRzXCI+VGVsZXBob255IFBheW1lbnRzPC9sYWJlbD5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZm9ybS1oaW50XCI+QWxsIFRlbGVwaG9ueSBQYXltZW50czwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICA8L2Rpdj5cbiAgICAgPC9kaXY+XG4gICAgIDxkaXYgIGNsYXNzPVwiZ292dWstZm9ybS1ncm91cFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImRhdGVmcm9tXCI+XG4gICAgICA8bGFiZWwgY2xhc3M9XCJnb3Z1ay1sYWJlbCBnb3Z1ay1yYWRpb3NfX2xhYmVsIGdvdnVrLWxhYmVsLS1tXCIgZm9yPVwiZGF0ZS1mcm9tXCI+RGF0ZSBmcm9tPC9sYWJlbD5cbiAgICAgIDxpbnB1dCAoY2hhbmdlKT1cImdldFNlbGVjdGVkRnJvbURhdGUoKVwiIFttYXhdPVwiZ2V0VG9kYXkoKVwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgaWQ9XCJkYXRlLWZyb21cIiBuYW1lPVwiZGF0ZS1mcm9tXCIgdHlwZT1cImRhdGVcIiAgZm9ybUNvbnRyb2xOYW1lPVwic3RhcnREYXRlXCIgcmVxdWlyZWQvPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJkYXRldG9cIj5cbiAgICAgIDxsYWJlbCBjbGFzcz1cImdvdnVrLWxhYmVsIGdvdnVrLXJhZGlvc19fbGFiZWwgZ292dWstbGFiZWwtLW1cIiBmb3I9XCJkYXRlLXRvXCI+RGF0ZSB0bzwvbGFiZWw+XG4gICAgICA8aW5wdXQgKGNoYW5nZSk9XCJnZXRTZWxlY3RlZEZyb21EYXRlKClcIiBbbWF4XT1cImdldFRvZGF5KClcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGlkPVwiZGF0ZS10b1wiIG5hbWU9XCJzZWFyY2hcIiB0eXBlPVwiZGF0ZVwiIGZvcm1Db250cm9sTmFtZT1cImVuZERhdGVcIiByZXF1aXJlZC8+XG4gICAgICA8L2Rpdj5cbiAgICAgPC9kaXY+XG4gICA8cCBjbGFzcz1cImlubGluZS1lcnJvci1tZXNzYWdlXCIgKm5nSWY9XCJpc1N0YXJ0RGF0ZUxlc3RoYW5FbmREYXRlIHx8IGlzRGF0ZVJhbmdlQmV0bldlZWsgfHwgaXNEYXRlQmV0d25Nb250aFwiPlxuICAgICAgPHNwYW4gKm5nSWY9XCJpc1N0YXJ0RGF0ZUxlc3RoYW5FbmREYXRlXCI+UGxlYXNlIHNlbGVjdCAnRGF0ZSBGcm9tJyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJ0RhdGUgVG8nPC9zcGFuPlxuICAgICAgPHNwYW4gKm5nSWY9XCJpc0RhdGVSYW5nZUJldG5XZWVrXCI+IFBsZWFzZSBzZWxlY3QgdGhlIGRhdGUgcmFuZ2UgYmV0d2VlbiA3IGRheXM8L3NwYW4+XG4gICAgICA8c3BhbiAqbmdJZj1cImlzRGF0ZUJldHduTW9udGhcIj4gUGxlYXNlIHNlbGVjdCB0aGUgZGF0ZSByYW5nZSBiZXR3ZWVuIDMwIGRheXM8L3NwYW4+XG4gICA8L3A+XG4gICAgPGRpdiBjbGFzcz1cImJ0bnN1Ym1pdFwiPlxuICAgICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiAoY2xpY2spPVwiZG93bmxvYWRSZXBvcnQoKVwiIGNsYXNzPVwiYnV0dG9uXCIgW2Rpc2FibGVkXT1cIiFyZXBvcnRzRm9ybS52YWxpZCB8fCBpc0Rvd25Mb2FkQnV0dG9uZGlzYWJsZWQgfHwgaXNTdGFydERhdGVMZXN0aGFuRW5kRGF0ZSB8fCBpc0RhdGVSYW5nZUJldG5XZWVrIHx8IGlzRGF0ZUJldHduTW9udGhcIj5Eb3dubG9hZCByZXBvcnQ8L2J1dHRvbj5cbiAgIDwvZGl2PlxuIDwvZm9ybT5cblxuIl19
337
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0cy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wYXltZW50LWxpYi9zcmMvbGliL2NvbXBvbmVudHMvcmVwb3J0cy9yZXBvcnRzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3BheW1lbnQtbGliL3NyYy9saWIvY29tcG9uZW50cy9yZXBvcnRzL3JlcG9ydHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQW9DLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRixPQUFPLEVBQUUsV0FBVyxFQUFhLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUc3QyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxrRUFBa0UsQ0FBQztBQUM3RyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUNsRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUN0RixPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sd0NBQXdDLENBQUM7Ozs7Ozs7OztBQVNyRSxNQUFNLE9BQU8sZ0JBQWdCO0lBaUJqQjtJQUNBO0lBQ0E7SUFDQTtJQUN1QjtJQUN2QjtJQXJCdUIsc0JBQXNCLEdBQVksSUFBSSxDQUFDO0lBQ3hFLEdBQUcsR0FBRyxZQUFZLENBQUM7SUFDbkIsR0FBRyxHQUFHLE9BQU8sQ0FBQztJQUNkLFdBQVcsQ0FBWTtJQUN2QixTQUFTLENBQVM7SUFDbEIsT0FBTyxDQUFTO0lBQ2hCLFlBQVksQ0FBUztJQUNyQixhQUFhLENBQVM7SUFDdEIsd0JBQXdCLEdBQVcsS0FBSyxDQUFDO0lBQ3pDLHlCQUF5QixHQUFZLEtBQUssQ0FBQztJQUMzQyxnQkFB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QyxDQUFDLENBQUEsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUN6RCxDQUFDO3VHQTVVVSxnQkFBZ0Isc0pBcUJqQixhQUFhOzJGQXJCWixnQkFBZ0IsbUhDakI3Qixpbk1Bb0hBOzsyRkRuR2EsZ0JBQWdCO2tCQUw1QixTQUFTOytCQUNFLGVBQWU7OzBCQXlCdEIsTUFBTTsyQkFBQyxhQUFhOzBFQXBCVSxzQkFBc0I7c0JBQXRELEtBQUs7dUJBQUMsd0JBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0LCBmb3J3YXJkUmVmLCBpc1N0YW5kYWxvbmUsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBmb3JtYXREYXRlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuaW1wb3J0IHR5cGUgeyBQYXltZW50TGliQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vcGF5bWVudC1saWIuY29tcG9uZW50JztcbmltcG9ydCB7SVBheW1lbnRHcm91cH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9JUGF5bWVudEdyb3VwJztcbmltcG9ydCB7IEJ1bGtTY2FuaW5nUGF5bWVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9idWxrLXNjYW5pbmctcGF5bWVudC9idWxrLXNjYW5pbmctcGF5bWVudC5zZXJ2aWNlJztcbmltcG9ydCB7IEVycm9ySGFuZGxlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9zaGFyZWQvZXJyb3ItaGFuZGxlci5zZXJ2aWNlJztcbmltcG9ydCB7IFBheW1lbnRWaWV3U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3BheW1lbnQtdmlldy9wYXltZW50LXZpZXcuc2VydmljZSc7XG5pbXBvcnQge1hsRmlsZVNlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3hsLWZpbGUveGwtZmlsZS5zZXJ2aWNlJztcbmltcG9ydCB7IEZpbmRWYWx1ZVN1YnNjcmliZXIgfSBmcm9tICdyeGpzL2ludGVybmFsL29wZXJhdG9ycy9maW5kJztcbnR5cGUgUGF5bWVudExpYkFsaWFzID0gUGF5bWVudExpYkNvbXBvbmVudDtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY2NwYXktcmVwb3J0cycsXG4gIHRlbXBsYXRlVXJsOiAnLi9yZXBvcnRzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcmVwb3J0cy5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFJlcG9ydHNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoJ0lTUEFZTUVOVFNUQVRVU0VOQUJMRUQnKSBJU1BBWU1FTlRTVEFUVVNFTkFCTEVEOiBib29sZWFuID0gdHJ1ZTtcbiAgZm10ID0gJ2RkL01NL3l5eXknO1xuICBsb2MgPSAnZW4tVVMnO1xuICByZXBvcnRzRm9ybTogRm9ybUdyb3VwO1xuICBzdGFydERhdGU6IHN0cmluZztcbiAgZW5kRGF0ZTogc3RyaW5nO1xuICBlcnJvck1lYWFnc2U6IHN0cmluZztcbiAgY2NkQ2FzZU51bWJlcjogc3RyaW5nO1xuICBpc0Rvd25Mb2FkQnV0dG9uZGlzYWJsZWQ6Qm9vbGVhbiA9IGZhbHNlO1xuICBpc1N0YXJ0RGF0ZUxlc3RoYW5FbmREYXRlOiBCb29sZWFuID0gZmFsc2U7XG4gIGlzRGF0ZUJldHduTW9udGg6IEJvb2xlYW4gPSBmYWxzZTtcbiAgaXNEYXRlUmFuZ2VCZXRuV2VlazogQm9vbGVhbiA9IGZhbHNlO1xuICBlcnJvck1lc3NhZ2UgPSBudWxsO1xuICBwYXltZW50R3JvdXBzOiBJUGF5bWVudEdyb3VwW10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHhsRmlsZVNlcnZpY2U6IFhsRmlsZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBlcnJvckhhbmRsZXJTZXJ2aWNlOiBFcnJvckhhbmRsZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLFxuICAgIHByaXZhdGUgYnVsa1NjYW5pbmdQYXltZW50U2VydmljZTogQnVsa1NjYW5pbmdQYXltZW50U2VydmljZSxcbiAgICBASW5qZWN0KCdQQVlNRU5UX0xJQicpIHByaXZhdGUgcGF5bWVudExpYkNvbXBvbmVudDogUGF5bWVudExpYkFsaWFzLFxuICAgIHByaXZhdGUgcGF5bWVudFZpZXdTZXJ2aWNlOiBQYXltZW50Vmlld1NlcnZpY2UpIHsgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gdGhpcy5lcnJvckhhbmRsZXJTZXJ2aWNlLmdldFNlcnZlckVycm9yTWVzc2FnZShmYWxzZSwgZmFsc2UsICcnKTtcbiAgICB0aGlzLmZyb21WYWxpZGF0aW9uKCk7XG4gICB9XG5cbiAgZ2V0VG9kYXkoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gbmV3IERhdGUoKS50b0lTT1N0cmluZygpLnNwbGl0KCdUJylbMF07XG4gfVxuXG4gZ2V0U2VsZWN0ZWRGcm9tRGF0ZSgpOiB2b2lkIHtcbiB0aGlzLnZhbGlkYXRlRGF0ZXModGhpcy5yZXBvcnRzRm9ybS5nZXQoJ3NlbGVjdGVkcmVwb3J0JykudmFsdWUpO1xuIH1cblxuIHZhbGlkYXRlRGF0ZXMocmVwb3J0TmFtZSl7XG4gIGNvbnN0IHNlbGVjdGVkU3RhcnREYXRlID0gdGhpcy50cmFuZm9ybURhdGUodGhpcy5yZXBvcnRzRm9ybS5nZXQoJ3N0YXJ0RGF0ZScpLnZhbHVlKSxcbiAgICBzZWxlY3RlZEVuZERhdGUgPSB0aGlzLnRyYW5mb3JtRGF0ZSh0aGlzLnJlcG9ydHNGb3JtLmdldCgnZW5kRGF0ZScpLnZhbHVlKTtcbiAgY29uc3QgaXNEYXRlUmFuZ2VNb3JlVGhhbldlZWsgPSAoPGFueT5uZXcgRGF0ZShzZWxlY3RlZFN0YXJ0RGF0ZSkgLSA8YW55Pm5ldyBEYXRlKHNlbGVjdGVkRW5kRGF0ZSkpLygxMDAwICogMzYwMCAqIC0yNCkgPiA3O1xuICBjb25zdCBpc0RhdGVSYW5nZU1vcmVUaGFuTW9udGggPSAoPGFueT5uZXcgRGF0ZShzZWxlY3RlZFN0YXJ0RGF0ZSkgLSA8YW55Pm5ldyBEYXRlKHNlbGVjdGVkRW5kRGF0ZSkpLygxMDAwICogMzYwMCAqIC0yNCkgPiAzMDtcbiAgaWYobmV3IERhdGUoc2VsZWN0ZWRTdGFydERhdGUpID4gbmV3IERhdGUoc2VsZWN0ZWRFbmREYXRlKSAmJiBzZWxlY3RlZEVuZERhdGUgIT09ICcnKXtcbiAgICB0aGlzLnJlcG9ydHNGb3JtLmdldCgnc3RhcnREYXRlJykuc2V0VmFsdWUoJycpO1xuICAgIHRoaXMuaXNEYXRlUmFuZ2VCZXRuV2VlayA9IGZhbHNlO1xuICAgIHRoaXMuaXNEYXRlQmV0d25Nb250aCA9IGZhbHNlO1xuICAgIHRoaXMuaXNTdGFydERhdGVMZXN0aGFuRW5kRGF0ZSA9IHRydWU7XG4gIH0gZWxzZSBpZihyZXBvcnROYW1lICYmIHJlcG9ydE5hbWUgPT09J1NVUlBMVVNfQU5EX1NIT1JURkFMTCcgJiYgaXNEYXRlUmFuZ2VNb3JlVGhhbldlZWsgKSB7XG4gICAgdGhpcy5pc0RhdGVSYW5nZUJldG5XZWVrID0gdHJ1ZTtcbiAgICB0aGlzLmlzRGF0ZUJldHduTW9udGggPSBmYWxzZTtcbiAgICB0aGlzLmlzU3RhcnREYXRlTGVzdGhhbkVuZERhdGUgPSBmYWxzZTtcbiAgfSBlbHNlIGlmKHJlcG9ydE5hbWUgJiYgKHJlcG9ydE5hbWUgPT09J1BBWU1FTlRfRkFJTFVSRV9FVkVOVCd8fCByZXBvcnROYW1lID09PVwiVEVMRVBIT05ZX1BBWU1FTlRTXCIpICYmIGlzRGF0ZVJhbmdlTW9yZVRoYW5Nb250aCApIHtcbiAgICB0aGlzLmlzRGF0ZVJhbmdlQmV0bldlZWsgPSBmYWxzZTtcbiAgICB0aGlzLmlzRGF0ZUJldHduTW9udGggPSB0cnVlO1xuICAgIHRoaXMuaXNTdGFydERhdGVMZXN0aGFuRW5kRGF0ZSA9IGZhbHNlO1xuICB9IGVsc2Uge1xuICAgIHRoaXMuaXNEYXRlQmV0d25Nb250aCA9IGZhbHNlO1xuICAgIHRoaXMuaXNEYXRlUmFuZ2VCZXRuV2VlayA9IGZhbHNlO1xuICAgIHRoaXMuaXNTdGFydERhdGVMZXN0aGFuRW5kRGF0ZSA9IGZhbHNlO1xuICB9XG5cbiB9XG5cbiAgZnJvbVZhbGlkYXRpb24oKSB7XG4gICAgdGhpcy5yZXBvcnRzRm9ybSA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgc2VsZWN0ZWRyZXBvcnQ6IG5ldyBGb3JtQ29udHJvbCgnJykgLFxuICAgICAgc3RhcnREYXRlOiBuZXcgRm9ybUNvbnRyb2woJycpLFxuICAgICAgZW5kRGF0ZTogbmV3IEZvcm1Db250cm9sKCcnKVxuICAgIH0pO1xufVxuXG5kb3dubG9hZFJlcG9ydCgpe1xuICB0aGlzLmlzRG93bkxvYWRCdXR0b25kaXNhYmxlZCA9IHRydWU7XG4gIGNvbnN0IGRhdGFMb3NzUnB0RGVmYXVsdCA9IFt7bG9zc19yZXNwOicnLHBheW1lbnRfYXNzZXRfZGNuOicnLGVudl9yZWY6JycsZW52X2l0ZW06JycscmVzcF9zZXJ2aWNlX2lkOicnLHJlc3Bfc2VydmljZV9uYW1lOicnLGRhdGVfYmFua2VkOicnLGJnY19iYXRjaDonJyxwYXltZW50X21ldGhvZDonJyxhbW91bnQ6Jyd9XSxcbiAgICB1blByb2Nlc3NlZFJwdERlZmF1bHQgPSBbe3Jlc3Bfc2VydmljZV9pZDonJyxyZXNwX3NlcnZpY2VfbmFtZTonJyxleGNlcHRpb25fcmVmOicnLGNjZF9yZWY6JycsZGF0ZV9iYW5rZWQ6JycsYmdjX2JhdGNoOicnLHBheW1lbnRfYXNzZXRfZGNuOicnLGVudl9yZWY6JycsZW52X2l0ZW06JycscGF5bWVudF9tZXRob2Q6JycsYW1vdW50OicnfV0sXG4gICAgcHJvY2Vzc2VkVW5hbGxvY2F0ZWQgPVt7cmVzcF9zZXJ2aWNlX2lkOicnLHJlc3Bfc2VydmljZV9uYW1lOicnLGFsbG9jYXRpb25fc3RhdHVzOicnLHJlY2VpdmluZ19vZmZpY2U6JycsYWxsb2NhdGlvbl9yZWFzb246JycsY2NkX2V4Y2VwdGlvbl9yZWY6JycsY2NkX2Nhc2VfcmVmOicnLHBheW1lbnRfYXNzZXRfZGNuOicnLGVudl9yZWY6JycsZW52X2l0ZW06JycsZGF0ZV9iYW5rZWQ6JycsYmdjX2JhdGNoOicnLHBheW1lbnRfbWV0aG9kOicnLGFtb3VudDonJyx1cGRhdGVkX2J5OicnfV0sXG4gICAgc2hvcnRGYWxsc1JwdERlZmF1bHQgPSBbe3Jlc3Bfc2VydmljZV9pZDonJyxyZXNwX3NlcnZpY2VfbmFtZTonJyxzdXJwbHVzX3Nob3J0ZmFsbDonJyxiYWxhbmNlOicnLHBheW1lbnRfYW1vdW50OicnLGNjZF9jYXNlX3JlZmVyZW5jZTonJyxjY2RfZXhjZXB0aW9uX3JlZmVyZW5jZTonJyxwcm9jZXNzZWRfZGF0ZTonJywgcmVhc29uOicnLCBleHBsYW5hdGlvbjonJywgdXNlcl9uYW1lOicnfV0sXG4gICAgdGVsZXBob255UGF5bWVudHNScHREZWZhdWx0ID0gW3tzZXJ2aWNlX25hbWU6JycsY2NkX1JlZmVyZW5jZTonJyxwYXltZW50X3JlZmVyZW5jZTonJyxmZWVfY29kZTonJyxwYXltZW50X2RhdGU6JycsYW1vdW50OicnLCBwYXltZW50X3N0YXR1czonJ31dLFxuICAgIHBheW1lbnRGYWlsdXJlUnB0RGVmYXVsdCA9IFt7cGF5bWVudF9yZWZlcmVuY2U6JycsY2NkX3JlZmVyZW5jZTonJyxkb2N1bWVudF9jb250cm9sX251bWJlcjonJyxvcmdfaWQ6Jycsc2VydmljZV9uYW1lOicnLGZhaWx1cmVfcmVmZXJlbmNlOicnLGZhaWx1cmVfcmVhc29uOicnLGRpc3B1dGVkX2Ftb3VudDonJyxldmVudF9uYW1lOicnLGV2ZW50X2RhdGU6JycscmVwcmVzZW50bWVudF9zdGF0dXM6JycscmVwcmVzZW50bWVudF9kYXRlOicnLHJlZnVuZF9yZWZlcmVuY2U6JycscmVmdW5kX2Ftb3VudDonJyxyZWZ1bmRfZGF0ZTonJ31dLFxuICAgIHNlbGVjdGVkUmVwb3J0TmFtZSA9IHRoaXMucmVwb3J0c0Zvcm0uZ2V0KCdzZWxlY3RlZHJlcG9ydCcpLnZhbHVlLFxuICAgIHNlbGVjdGVkU3RhcnREYXRlID0gdGhpcy50cmFuZm9ybURhdGUodGhpcy5yZXBvcnRzRm9ybS5nZXQoJ3N0YXJ0RGF0ZScpLnZhbHVlKSxcbiAgICBzZWxlY3RlZEVuZERhdGUgPSB0aGlzLnRyYW5mb3JtRGF0ZSh0aGlzLnJlcG9ydHNGb3JtLmdldCgnZW5kRGF0ZScpLnZhbHVlKTtcblxuICAgIGlmKHNlbGVjdGVkUmVwb3J0TmFtZSA9PT0gJ1BST0NFU1NFRF9VTkFMTE9DQVRFRCcgfHwgc2VsZWN0ZWRSZXBvcnROYW1lID09PSAnU1VSUExVU19BTkRfU0hPUlRGQUxMJyApe1xuICAgICAgdGhpcy5wYXltZW50Vmlld1NlcnZpY2UuZG93bmxvYWRTZWxlY3RlZFJlcG9ydChzZWxlY3RlZFJlcG9ydE5hbWUsc2VsZWN0ZWRTdGFydERhdGUsc2VsZWN0ZWRFbmREYXRlKS5zdWJzY3JpYmUoXG4gICAgICAgIHJlc3BvbnNlID0+ICB7XG4gICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSB0aGlzLmVycm9ySGFuZGxlclNlcnZpY2UuZ2V0U2VydmVyRXJyb3JNZXNzYWdlKGZhbHNlLCBmYWxzZSwgJycpO1xuICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IEpTT04ucGFyc2UocmVzcG9uc2UpO1xuICAgICAgICAgIGxldCByZXM9IHtkYXRhOiB0aGlzLmFwcGx5RGF0ZUZvcm1hdChyZXN1bHQpfTtcbiAgICAgICAgICBpZihyZXNbJ2RhdGEnXS5sZW5ndGggPT09IDAgJiYgc2VsZWN0ZWRSZXBvcnROYW1lID09PSAnUFJPQ0VTU0VEX1VOQUxMT0NBVEVEJyApe1xuICAgICAgICAgICAgcmVzLmRhdGE9IHByb2Nlc3NlZFVuYWxsb2NhdGVkO1xuICAgICAgICAgIH0gZWxzZSBpZihyZXNbJ2RhdGEnXS5sZW5ndGggPT09IDAgJiYgc2VsZWN0ZWRSZXBvcnROYW1lID09PSAnU1VSUExVU19BTkRfU0hPUlRGQUxMJyApIHtcbiAgICAgICAgICAgIHJlcy5kYXRhPSBzaG9ydEZhbGxzUnB0RGVmYXVsdDtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYocmVzdWx0WydkYXRhJ10ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgZm9yKCB2YXIgaT0wOyBpPCByZXNbJ2RhdGEnXS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICBpZihyZXNbJ2RhdGEnXVtpXVtcInBheW1lbnRfYXNzZXRfZGNuXCJdICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICByZXNbJ2RhdGEnXVtpXVsnZW52X3JlZiddID0gcmVzWydkYXRhJ11baV1bXCJwYXltZW50X2Fzc2V0X2RjblwiXS5zdWJzdHIoMCwxMyk7XG4gICAgICAgICAgICAgICAgcmVzWydkYXRhJ11baV1bJ2Vudl9pdGVtJ10gPSByZXNbJ2RhdGEnXVtpXVtcInBheW1lbnRfYXNzZXRfZGNuXCJdLnN1YnN0cigxMywyMSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYocmVzWydkYXRhJ11baV1bXCJhbW91bnRcIl0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHJlc1snZGF0YSddW2ldWydhbW91bnQnXSA9IHRoaXMuY29udmVydFRvRmxvYXRWYWx1ZShyZXNbJ2RhdGEnXVtpXVsnYW1vdW50J10pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmKHJlc1snZGF0YSddW2ldW1wiYmFsYW5jZVwiXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgcmVzWydkYXRhJ11baV1bJ2JhbGFuY2UnXSA9IHRoaXMuY29udmVydFRvRmxvYXRWYWx1ZShyZXNbJ2RhdGEnXVtpXVtcImJhbGFuY2VcIl0pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGxldCBPcCA9IHJlc1snZGF0YSddW2ldW1wic3VycGx1c19zaG9ydGZhbGxcIl07XG4gICAgICAgICAgICAgIGlmKE9wICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICByZXNbJ2RhdGEnXVtpXVsnc3VycGx1c19zaG9ydGZhbGwnXSA9IE9wID09XCJTdXJwbHVzXCIgPyBcIk92ZXIgcGF5bWVudFwiOlwiVW5kZXIgcGF5bWVudFwiO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmKHJlc1snZGF0YSddW2ldW1wicGF5bWVudF9hbW91bnRcIl0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHJlc1snZGF0YSddW2ldWydwYXltZW50X2Ftb3VudCddID0gdGhpcy5jb252ZXJ0VG9GbG9hdFZhbHVlKHJlc1snZGF0YSddW2ldWydwYXltZW50X2Ftb3VudCddKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmlzRG93bkxvYWRCdXR0b25kaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMueGxGaWxlU2VydmljZS5leHBvcnRBc0V4Y2VsRmlsZShyZXNbJ2RhdGEnXSwgdGhpcy5nZXRGaWxlTmFtZSh0aGlzLnJlcG9ydHNGb3JtLmdldCgnc2VsZWN0ZWRyZXBvcnQnKS52YWx1ZSwgc2VsZWN0ZWRTdGFydERhdGUsIHNlbGVjdGVkRW5kRGF0ZSkpO1xuICAgICAgICB9LFxuICAgICAgICAoZXJyb3I6IGFueSkgPT4ge1xuICAgICAgICAgIHRoaXMuaXNEb3duTG9hZEJ1dHRvbmRpc2FibGVkID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSB0aGlzLmVycm9ySGFuZGxlclNlcnZpY2UuZ2V0U2VydmVyRXJyb3JNZXNzYWdlKHRydWUsIGZhbHNlLCAnJyk7XG4gICAgICAgIH0pXG5cbiAgICB9IGVsc2UgaWYoc2VsZWN0ZWRSZXBvcnROYW1lID09PSAnUEFZTUVOVF9GQUlMVVJFX0VWRU5UJykge1xuXG4gICAgICB0aGlzLnBheW1lbnRWaWV3U2VydmljZS5kb3dubG9hZEZhaWx1cmVSZXBvcnQoc2VsZWN0ZWRTdGFydERhdGUsc2VsZWN0ZWRFbmREYXRlKS5zdWJzY3JpYmUoXG4gICAgICAgIHJlc3BvbnNlID0+ICB7XG4gICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSB0aGlzLmVycm9ySGFuZGxlclNlcnZpY2UuZ2V0U2VydmVyRXJyb3JNZXNzYWdlKGZhbHNlLCBmYWxzZSwgJycpO1xuICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHtkYXRhOiBKU09OLnBhcnNlKHJlc3BvbnNlKVsncGF5bWVudF9mYWlsdXJlX3JlcG9ydF9saXN0J119O1xuICAgICAgICAgIGxldCByZXMgPSB7ZGF0YTogdGhpcy5hcHBseURhdGVGb3JtYXQocmVzdWx0KX07XG4gICAgICAgICAgaWYgKHJlc3VsdFsnZGF0YSddLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGZvciAoIHZhciBpPTA7IGk8IHJlc1snZGF0YSddLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgIGlmIChyZXNbJ2RhdGEnXVtpXVtcImRpc3B1dGVkX2Ftb3VudFwiXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgcmVzWydkYXRhJ11baV1bJ2Rpc3B1dGVkX2Ftb3VudCddID0gdGhpcy5jb252ZXJ0VG9GbG9hdFZhbHVlKHJlc1snZGF0YSddW2ldW1wiZGlzcHV0ZWRfYW1vdW50XCJdKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAocmVzWydkYXRhJ11baV1bXCJyZXByZXNlbnRtZW50X3N0YXR1c1wiXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgcmVzWydkYXRhJ11baV1bJ3JlcHJlc2VudG1lbnRfc3RhdHVzJ10gPSByZXNbJ2RhdGEnXVtpXVtcInJlcHJlc2VudG1lbnRfc3RhdHVzXCJdLnRvTG93ZXJDYXNlKCkgPT09ICd5ZXMnID8gJ1N1Y2Nlc3MnIDogJ0ZhaWx1cmUnO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmIChyZXNbJ2RhdGEnXVtpXVsncmVwcmVzZW50bWVudF9zdGF0dXMnXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgcmVzWydkYXRhJ11baV1bJ3JlcHJlc2VudG1lbnRfc3RhdHVzJ10gPSAnTm8gcmVwcmVzZW50bWVudCByZWNlaXZlZCc7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKHJlc1snZGF0YSddW2ldWydyZXByZXNlbnRtZW50X2RhdGUnXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgcmVzWydkYXRhJ11baV1bJ3JlcHJlc2VudG1lbnRfZGF0ZSddID0gJ04vQSc7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKHJlc1snZGF0YSddW2ldWydyZWZ1bmRfcmVmZXJlbmNlJ10gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHJlc1snZGF0YSddW2ldWydyZWZ1bmRfcmVmZXJlbmNlJ10gPSAnTm8gcmVmdW5kIGF2YWlsYWJsZSc7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKHJlc1snZGF0YSddW2ldWydyZWZ1bmRfYW1vdW50J10gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHJlc1snZGF0YSddW2ldWydyZWZ1bmRfYW1vdW50J10gPSAnTi9BJztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAocmVzWydkYXRhJ11baV1bJ3JlZnVuZF9kYXRlJ10gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHJlc1snZGF0YSddW2ldWydyZWZ1bmRfZGF0ZSddID0gJ04vQSc7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKHJlc1snZGF0YSddW2ldWydkb2N1bWVudF9jb250cm9sX251bWJlciddID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICByZXNbJ2RhdGEnXVtpXVsnZG9jdW1lbnRfY29udHJvbF9udW1iZXInXSA9ICdOL0EnO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGVsc2V7XG4gICAgICAgICAgICByZXMuZGF0YSA9IHBheW1lbnRGYWlsdXJlUnB0RGVmYXVsdDtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5pc0Rvd25Mb2FkQnV0dG9uZGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLnhsRmlsZVNlcnZpY2UuZXhwb3J0QXNFeGNlbEZpbGUocmVzWydkYXRhJ10sIHRoaXMuZ2V0RmlsZU5hbWUodGhpcy5yZXBvcnRzRm9ybS5nZXQoJ3NlbGVjdGVkcmVwb3J0JykudmFsdWUsIHNlbGVjdGVkU3RhcnREYXRlLCBzZWxlY3RlZEVuZERhdGUgKSk7XG5cbiAgICAgICAgfSxcbiAgICAgICAgKGVycm9yOiBhbnkpID0+IHtcbiAgICAgICAgICB0aGlzLmlzRG93bkxvYWRCdXR0b25kaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgICAgIGNvbnN0IGVycm9yQ29udGVudCA9IGVycm9yLnJlcGxhY2UoL1teYS16QS1aIF0vZywgJycpLnRyaW0oKTtcbiAgICAgICAgICBjb25zdCBzdGF0dXNDb2RlID0gZXJyb3IucmVwbGFjZSgvW15hLXpBLVowLTkgXS9nLCAnJykudHJpbSgpLnNwbGl0KCcgJylbMF07XG4gICAgICAgICAgaWYoc3RhdHVzQ29kZSA9PT0gJzQwNCcpIHtcbiAgICAgICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gdGhpcy5lcnJvckhhbmRsZXJTZXJ2aWNlLmdldFNlcnZlckVycm9yTWVzc2FnZSh0cnVlLCB0cnVlLCBlcnJvckNvbnRlbnQpO1xuICAgICAgICAgIH1lbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gdGhpcy5lcnJvckhhbmRsZXJTZXJ2aWNlLmdldFNlcnZlckVycm9yTWVzc2FnZSh0cnVlLCBmYWxzZSwgJycpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcblxuICAgIH0gZWxzZSBpZihzZWxlY3RlZFJlcG9ydE5hbWUgPT09ICdURUxFUEhPTllfUEFZTUVOVFMnKSB7XG5cbiAgICAgICAgICAgIHRoaXMucGF5bWVudFZpZXdTZXJ2aWNlLmRvd25sb2FkVGVsZXBob255UGF5bWVudHNSZXBvcnQoc2VsZWN0ZWRTdGFydERhdGUsc2VsZWN0ZWRFbmREYXRlKS5zdWJzY3JpYmUoXG4gICAgICAgICAgICAgIHJlc3BvbnNlID0+ICB7XG4gICAgICAgICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSB0aGlzLmVycm9ySGFuZGxlclNlcnZpY2UuZ2V0U2VydmVyRXJyb3JNZXNzYWdlKGZhbHNlLCBmYWxzZSwgJycpO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0ge2RhdGE6IEpTT04ucGFyc2UocmVzcG9uc2UpWyd0ZWxlcGhvbnlfcGF5bWVudHNfcmVwb3J0X2xpc3QnXX07XG4gICAgICAgICAgICAgICAgbGV0IHJlcz0ge2RhdGE6IHRoaXMuYXBwbHlEYXRlRm9ybWF0KHJlc3VsdCl9O1xuICAgICAgICAgICAgICAgIC8vcmVzLmRhdGE9IHRlbGVwaG9ueVBheW1lbnRzUnB0RGVmYXVsdDtcbiAgICAgICAgICAgICAgICBpZihyZXN1bHRbJ2RhdGEnXS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgZm9yKCB2YXIgaT0wOyBpPCByZXNbJ2RhdGEnXS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICAgaWYocmVzWydkYXRhJ11baV1bXCJBbW91bnRcIl0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzWydkYXRhJ11baV1bJ0Ftb3VudCddID0gdGhpcy5jb252ZXJ0VG9GbG9hdFZhbHVlKHJlc1snZGF0YSddW2ldWydBbW91bnQnXSk7XG4gICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICAgICAgICByZXMuZGF0YSA9IHRlbGVwaG9ueVBheW1lbnRzUnB0RGVmYXVsdDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5pc0Rvd25Mb2FkQnV0dG9uZGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLnhsRmlsZVNlcnZpY2UuZXhwb3J0QXNFeGNlbEZpbGUocmVzWydkYXRhJ10sIHRoaXMuZ2V0RmlsZU5hbWUodGhpcy5yZXBvcnRzRm9ybS5nZXQoJ3NlbGVjdGVkcmVwb3J0JykudmFsdWUsIHNlbGVjdGVkU3RhcnREYXRlLCBzZWxlY3RlZEVuZERhdGUgKSk7XG5cbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgKGVycm9yOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmlzRG93bkxvYWRCdXR0b25kaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGNvbnN0IGVycm9yQ29udGVudCA9IGVycm9yLnJlcGxhY2UoL1teYS16QS1aIF0vZywgJycpLnRyaW0oKTtcbiAgICAgICAgICAgICAgICBjb25zdCBzdGF0dXNDb2RlID0gZXJyb3IucmVwbGFjZSgvW15hLXpBLVowLTkgXS9nLCAnJykudHJpbSgpLnNwbGl0KCcgJylbMF07XG4gICAgICAgICAgICAgICAgaWYoc3RhdHVzQ29kZSA9PT0gJzQwNCcpIHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gdGhpcy5lcnJvckhhbmRsZXJTZXJ2aWNlLmdldFNlcnZlckVycm9yTWVzc2FnZSh0cnVlLCB0cnVlLCBlcnJvckNvbnRlbnQpO1xuICAgICAgICAgICAgICAgIH1lbHNlIHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gdGhpcy5lcnJvckhhbmRsZXJTZXJ2aWNlLmdldFNlcnZlckVycm9yTWVzc2FnZSh0cnVlLCBmYWxzZSwgJycpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSlcblxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmJ1bGtTY2FuaW5nUGF5bWVudFNlcnZpY2UuZG93bmxvYWRTZWxlY3RlZFJlcG9ydChzZWxlY3RlZFJlcG9ydE5hbWUsc2VsZWN0ZWRTdGFydERhdGUsc2VsZWN0ZWRFbmREYXRlKS5zdWJzY3JpYmUoXG4gICAgICAgIHJlc3BvbnNlID0+ICB7XG4gICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSB0aGlzLmVycm9ySGFuZGxlclNlcnZpY2UuZ2V0U2VydmVyRXJyb3JNZXNzYWdlKGZhbHNlLCBmYWxzZSwgJycpO1xuICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IEpTT04ucGFyc2UocmVzcG9uc2UpO1xuICAgICAgICAgIGxldCByZXMgPSB7ZGF0YTogdGhpcy5hcHBseURhdGVGb3JtYXQocmVzdWx0KX07XG4gICAgICAgICAgaWYocmVzWydkYXRhJ10ubGVuZ3RoID09PSAwICYmIHNlbGVjdGVkUmVwb3J0TmFtZSA9PT0gJ0RBVEFfTE9TUycgKXtcbiAgICAgICAgICAgIHJlcy5kYXRhPSBkYXRhTG9zc1JwdERlZmF1bHQ7XG4gICAgICAgICAgfSBlbHNlIGlmKHJlc1snZGF0YSddLmxlbmd0aCA9PT0gMCAmJiBzZWxlY3RlZFJlcG9ydE5hbWUgPT09ICdVTlBST0NFU1NFRCcpe1xuICAgICAgICAgICAgcmVzLmRhdGEgPSB1blByb2Nlc3NlZFJwdERlZmF1bHQ7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmKHJlc3VsdFsnZGF0YSddLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBmb3IoIHZhciBpPTA7IGk8IHJlc1snZGF0YSddLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZihyZXNbJ2RhdGEnXVtpXVtcImFtb3VudFwiXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgIHJlc1snZGF0YSddW2ldWydhbW91bnQnXSA9IHRoaXMuY29udmVydFRvRmxvYXRWYWx1ZShyZXNbJ2RhdGEnXVtpXVsnYW1vdW50J10pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYocmVzWydkYXRhJ11baV1bXCJwYXltZW50X2Fzc2V0X2RjblwiXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXNbJ2RhdGEnXVtpXVsnZW52X3JlZiddID0gcmVzWydkYXRhJ11baV1bXCJwYXltZW50X2Fzc2V0X2RjblwiXS5zdWJzdHIoMCwxMyk7XG4gICAgICAgICAgICByZXNbJ2RhdGEnXVtpXVsnZW52X2l0ZW0nXSA9IHJlc1snZGF0YSddW2ldW1wicGF5bWVudF9hc3NldF9kY25cIl0uc3Vic3RyKDEzLDIxKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAgIHRoaXMuaXNEb3duTG9hZEJ1dHRvbmRpc2FibGVkID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy54bEZpbGVTZXJ2aWNlLmV4cG9ydEFzRXhjZWxGaWxlKHJlc1snZGF0YSddLCB0aGlzLmdldEZpbGVOYW1lKHRoaXMucmVwb3J0c0Zvcm0uZ2V0KCdzZWxlY3RlZHJlcG9ydCcpLnZhbHVlLCBzZWxlY3RlZFN0YXJ0RGF0ZSwgc2VsZWN0ZWRFbmREYXRlICkpO1xuICAgICAgICB9LFxuICAgICAgICAoZXJyb3I6IGFueSkgPT4ge1xuICAgICAgICAgIHRoaXMuaXNEb3duTG9hZEJ1dHRvbmRpc2FibGVkID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSB0aGlzLmVycm9ySGFuZGxlclNlcnZpY2UuZ2V0U2VydmVyRXJyb3JNZXNzYWdlKHRydWUsIGZhbHNlLCAnJyk7XG4gICAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgZ2V0RmlsZU5hbWUoc2VsZWN0ZWRPcHRpb246IHN0cmluZywgc3RhcnREYXRlOiBzdHJpbmcsIGVuZERhdGU6IHN0cmluZyApIHtcbiAgICBjb25zdCBsb2MgPSAnZW4tVVMnLFxuICAgICAgc3REdCA9IGZvcm1hdERhdGUoc3RhcnREYXRlLCAnZGRNTXl5JywgbG9jKSxcbiAgICAgIGVuRHQgPSBmb3JtYXREYXRlKGVuZERhdGUsICdkZE1NeXknLCBsb2MpLFxuICAgICAgbm93ID0gbmV3IERhdGUoKSxcbiAgICAgIGN1cnJlbnREYXRlID0gZm9ybWF0RGF0ZShub3csICdkZE1NeXknLCBsb2MpLFxuICAgICAgdGltZXN0YW1wID0gYCR7Y3VycmVudERhdGV9XyR7dGhpcy5nZXRUd29kaWdpdChub3cuZ2V0SG91cnMoKSl9JHt0aGlzLmdldFR3b2RpZ2l0KG5vdy5nZXRNaW51dGVzKCkpfSR7dGhpcy5nZXRUd29kaWdpdChub3cuZ2V0U2Vjb25kcygpKX1gLFxuICAgICAgc2VsZWN0ZWRPcHRpb25UeHQgPSB0aGlzLmdldENhbWVsQ2FzZVN0cmluZyhzZWxlY3RlZE9wdGlvbik7XG5cbiAgICAgIHJldHVybiBzZWxlY3RlZE9wdGlvblR4dCsnXycrc3REdCsnX1RvXycrZW5EdCsnX1J1bl8nKyB0aW1lc3RhbXA7XG4gIH1cbiAgdHJhbmZvcm1EYXRlKHN0ckRhdGU6IHN0cmluZykge1xuICAgIGxldCByZXN1bHQgPSAnJztcbiAgICBpZiAoc3RyRGF0ZSkge1xuICAgICAgbGV0IHBhcnRzID0gc3RyRGF0ZS5zcGxpdCgnLScpO1xuICAgICAgcmVzdWx0ID0gYCR7cGFydHNbMV19LyR7cGFydHNbMl19LyR7cGFydHNbMF19YDtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuICBnZXRUd29kaWdpdChpbnB1dDogbnVtYmVyKXtcbiAgICByZXR1cm4gKFwiMFwiICsgaW5wdXQpLnNsaWNlKC0yKTtcbiAgfVxuICBnZXRDYW1lbENhc2VTdHJpbmcoc2VsZWN0ZWRPcHRpb24pIHtcbiAgICBsZXQgcmVzdWx0O1xuICAgIHN3aXRjaChzZWxlY3RlZE9wdGlvbikge1xuICAgICAgY2FzZSAnVU5QUk9DRVNTRUQnOiB7XG4gICAgICAgIHJlc3VsdCA9ICdVbnByb2Nlc3NlZCc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnREFUQV9MT1NTJzoge1xuICAgICAgICByZXN1bHQgPSAnRGF0YV9Mb3NzJztcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdQUk9DRVNTRURfVU5BTExPQ0FURUQnOiB7XG4gICAgICAgIHJlc3VsdCA9ICdQcm9jZXNzZWRfVW5hbGxvY2F0ZWQnO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ1NVUlBMVVNfQU5EX1NIT1JURkFMTCc6IHtcbiAgICAgICAgcmVzdWx0ID0gJ092ZXIgUGF5bWVudF9VbmRlciBQYXltZW50JztcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdQQVlNRU5UX0ZBSUxVUkVfRVZFTlQnOiB7XG4gICAgICAgIHJlc3VsdCA9ICdQYXltZW50IGZhaWx1cmUgZXZlbnQnO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ1RFTEVQSE9OWV9QQVlNRU5UUyc6IHtcbiAgICAgICAgICAgICAgcmVzdWx0ID0gJ1RlbGVwaG9ueSBQYXltZW50cyc7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgZGVmYXVsdDoge1xuICAgICAgICByZXN1bHQgPSBzZWxlY3RlZE9wdGlvbjtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICB9XG4gICByZXR1cm4gcmVzdWx0O1xuICB9XG4gIGFwcGx5RGF0ZUZvcm1hdChyZXMpIHtcbiAgICByZXR1cm4gcmVzWydkYXRhJ10ubWFwKHZhbHVlID0+IHtcbiAgICAgIGlmICh2YWx1ZVsnZGF0ZV9iYW5rZWQnXSkge1xuICAgICAgICB2YWx1ZVsnZGF0ZV9iYW5rZWQnXSA9IGZvcm1hdERhdGUodmFsdWVbJ2RhdGVfYmFua2VkJ10sIHRoaXMuZm10LCB0aGlzLmxvYyk7XG4gICAgICB9XG4gICAgICBpZiAodmFsdWVbJ2V2ZW50X2RhdGUnXSAmJiB2YWx1ZVsnZXZlbnRfZGF0ZSddLmluZGV4T2YoJywnKSA9PT0gLTEpIHtcbiAgICAgICAgdmFsdWVbJ2V2ZW50X2RhdGUnXSA9IGZvcm1hdERhdGUodmFsdWVbJ2V2ZW50X2RhdGUnXSwgdGhpcy5mbXQsIHRoaXMubG9jKTtcbiAgICAgIH0gZWxzZSBpZiAodmFsdWVbJ2V2ZW50X2RhdGUnXSAmJiB2YWx1ZVsnZXZlbnRfZGF0ZSddLmluZGV4T2YoJywnKSAhPT0gLTEpIHtcbiAgICAgICAgdmFsdWVbJ2V2ZW50X2RhdGUnXSA9IHRoaXMubXVsdGlEYXRlRm9ybWF0ZXIodmFsdWVbJ2V2ZW50X2RhdGUnXSlcbiAgICAgIH1cblxuICAgICAgaWYgKHZhbHVlWydyZXByZXNlbnRtZW50X2RhdGUnXSAmJiB2YWx1ZVsncmVwcmVzZW50bWVudF9kYXRlJ10uaW5kZXhPZignLCcpID09PSAtMSkge1xuICAgICAgICB2YWx1ZVsncmVwcmVzZW50bWVudF9kYXRlJ10gPSBmb3JtYXREYXRlKHZhbHVlWydyZXByZXNlbnRtZW50X2RhdGUnXSwgdGhpcy5mbXQsIHRoaXMubG9jKTtcbiAgICAgIH0gZWxzZSBpZiAodmFsdWVbJ3JlcHJlc2VudG1lbnRfZGF0ZSddICYmIHZhbHVlWydyZXByZXNlbnRtZW50X2RhdGUnXS5pbmRleE9mKCcsJykgIT09IC0xKSB7XG4gICAgICAgIHZhbHVlWydyZXByZXNlbnRtZW50X2RhdGUnXSA9IHRoaXMubXVsdGlEYXRlRm9ybWF0ZXIodmFsdWVbJ3JlcHJlc2VudG1lbnRfZGF0ZSddKVxuICAgICAgfVxuXG4gICAgICBpZiAodmFsdWVbJ3JlZnVuZF9kYXRlJ10gJiYgdmFsdWVbJ3JlZnVuZF9kYXRlJ10uaW5kZXhPZignLCcpID09PSAtMSkge1xuICAgICAgICB2YWx1ZVsncmVmdW5kX2RhdGUnXSA9IGZvcm1hdERhdGUodmFsdWVbJ3JlZnVuZF9kYXRlJ10sIHRoaXMuZm10LCB0aGlzLmxvYyk7XG4gICAgICB9IGVsc2UgaWYgKHZhbHVlWydyZWZ1bmRfZGF0ZSddICYmIHZhbHVlWydyZWZ1bmRfZGF0ZSddLmluZGV4T2YoJywnKSAhPT0gLTEpIHtcbiAgICAgICAgdmFsdWVbJ3JlZnVuZF9kYXRlJ10gPSB0aGlzLm11bHRpRGF0ZUZvcm1hdGVyKHZhbHVlWydyZWZ1bmRfZGF0ZSddKVxuICAgICAgfVxuXG4gICAgICBpZiAodmFsdWVbJ1BheW1lbnQgRGF0ZSddKSB7XG4gICAgICAgICAgICAgIHZhbHVlWydQYXltZW50IERhdGUnXSA9IGZvcm1hdERhdGUodmFsdWVbJ1BheW1lbnQgRGF0ZSddLCB0aGlzLmZtdCwgdGhpcy5sb2MpO1xuICAgICAgICAgICAgfVxuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH0pO1xuICB9XG4gIG11bHRpRGF0ZUZvcm1hdGVyKGRhdGVTdHIpIHtcbiAgIHJldHVybiBkYXRlU3RyLnNwbGl0KCcsJykubWFwKChkYXRlKSA9PiBmb3JtYXREYXRlKGRhdGUsIHRoaXMuZm10LCB0aGlzLmxvYykpLmpvaW4oJywnKTtcbiAgfVxuXG4gIGNvbnZlcnRUb0Zsb2F0VmFsdWUoYW10KSB7XG4gICAgcmV0dXJuIGFtdCA/IE51bWJlci5wYXJzZUZsb2F0KGFtdCkudG9GaXhlZCgyKTogJzAuMDAnO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiaGVhZGVyXCI+XG4gICAgICA8aW5wdXQgI215SW5wdXQgdHlwZT0naGlkZGVuJyBjbGFzcz0naUZyYW1lRHJpdmVuSW1hZ2VWYWx1ZScgdmFsdWU9J1JFUE9SVFMnPlxuICAgICAgPGNjcGF5LWVycm9yLWJhbm5lciAqbmdJZj1cImVycm9yTWVzc2FnZS5zaG93RXJyb3JcIiBbZXJyb3JNZXNzYWdlXT1cImVycm9yTWVzc2FnZVwiPjwvY2NwYXktZXJyb3ItYmFubmVyPlxuICAgICAgPGxlZ2VuZCBjbGFzcz1cImdvdnVrLWZpZWxkc2V0X19sZWdlbmQtLXhsXCI+XG4gICAgICAgICA8aDEgY2xhc3M9XCJnb3Z1ay1maWVsZHNldF9faGVhZGluZ1wiPiBDaG9vc2UgdGhlIHJlcG9ydCB0eXBlIGFuZCBkYXRlIHJhbmdlPC9oMT5cbiAgICAgIDwvbGVnZW5kPlxuPC9kaXY+XG48Zm9ybSBbZm9ybUdyb3VwXT1cInJlcG9ydHNGb3JtXCI+XG4gICAgIDxkaXYgIGNsYXNzPVwiZ292dWstZm9ybS1ncm91cFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZ292dWstcmFkaW9zIGdvdnVrLXJhZGlvcy0tY29uZGl0aW9uYWxcIiBkYXRhLW1vZHVsZT1cImdvdnVrLXJhZGlvc1wiPlxuICAgICAgICAgIDxkaXYgIGNsYXNzPVwiZ292dWstcmFkaW9zX19pdGVtXCI+XG4gICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgICAgICBpZD1cIkRhdGFMb3NzXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJnb3Z1ay1yYWRpb3NfX2lucHV0XCJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwic2VsZWN0ZWRyZXBvcnRcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwidmFsaWRhdGVEYXRlcygnREFUQV9MT1NTJylcIlxuICAgICAgICAgICAgICBuYW1lPVwic2VsZWN0ZWRyZXBvcnRcIlxuICAgICAgICAgICAgICB0eXBlPVwicmFkaW9cIlxuICAgICAgICAgICAgICB2YWx1ZT1cIkRBVEFfTE9TU1wiXG4gICAgICAgICAgICAgICBkYXRhLWFyaWEtY29udHJvbHM9XCJEYXRhTG9zc1wiLz5cbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZ292dWstbGFiZWwgZ292dWstcmFkaW9zX19sYWJlbCBnb3Z1ay1sYWJlbC0tbVwiIGZvcj1cIkRhdGFMb3NzXCI+RGF0YSBsb3NzPC9sYWJlbD5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmb3JtLWhpbnRcIj5NaXNzaW5nIHRyYW5zYWN0aW9ucyB3aGVyZSBkYXRhIGhhcyBiZWVuIHJlY2VpdmVkIGZyb20gb25seSBlaXRoZXIgb2YgRXhlbGEgb3IgQnVsayBzY2FuPC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICA8ZGl2IGNsYXNzPVwiZ292dWstcmFkaW9zX19pdGVtXCI+XG4gICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICBpZD1cIlVucHJvY2Vzc2VkVHJhbnNhY3Rpb25zXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJnb3Z1ay1yYWRpb3NfX2lucHV0XCJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwic2VsZWN0ZWRyZXBvcnRcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwidmFsaWRhdGVEYXRlcygnVU5QUk9DRVNTRUQnKVwiXG4gICAgICAgICAgICAgIG5hbWU9XCJzZWxlY3RlZHJlcG9ydFwiXG4gICAgICAgICAgICAgIHR5cGU9XCJyYWRpb1wiXG4gICAgICAgICAgICAgIHZhbHVlPVwiVU5QUk9DRVNTRURcIlxuICAgICAgICAgICAgICBkYXRhLWFyaWEtY29udHJvbHM9XCJVbnByb2Nlc3NlZFRyYW5zYWN0aW9uc1wiLz5cbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZ292dWstbGFiZWwgZ292dWstcmFkaW9zX19sYWJlbCBnb3Z1ay1sYWJlbC0tbVwiIGZvcj1cIlVucHJvY2Vzc2VkVHJhbnNhY3Rpb25zXCI+VW5wcm9jZXNzZWQgdHJhbnNhY3Rpb25zPC9sYWJlbD5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmb3JtLWhpbnRcIj5UcmFuc2FjdGlvbiByZWNvcmRzIHRoYXQgYXJlIHN0aWxsIHVucHJvY2Vzc2VkIGJ5IHN0YWZmLjwvc3Bhbj5cbiAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICA8ZGl2IGNsYXNzPVwiZ292dWstcmFkaW9zX19pdGVtXCI+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIGlkPVwiUHJvY2Vzc2VkVW5hbGxvY2F0ZWRcIlxuICAgICAgICAgICAgY2xhc3M9XCJnb3Z1ay1yYWRpb3NfX2lucHV0XCJcbiAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInNlbGVjdGVkcmVwb3J0XCJcbiAgICAgICAgICAgIG5hbWU9XCJzZWxlY3RlZHJlcG9ydFwiXG4gICAgICAgICAgICAoY2xpY2spPVwidmFsaWRhdGVEYXRlcygnUFJPQ0VTU0VEX1VOQUxMT0NBVEVEJylcIlxuICAgICAgICAgICAgdHlwZT1cInJhZGlvXCJcbiAgICAgICAgICAgIHZhbHVlPVwiUFJPQ0VTU0VEX1VOQUxMT0NBVEVEXCJcbiAgICAgICAgICAgIGRhdGEtYXJpYS1jb250cm9scz1cIlByb2Nlc3NlZFVuYWxsb2NhdGVkXCIvPlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZ292dWstbGFiZWwgZ292dWstcmFkaW9zX19sYWJlbCBnb3Z1ay1sYWJlbC0tbVwiIGZvcj1cIlByb2Nlc3NlZFVuYWxsb2NhdGVkXCI+UHJvY2Vzc2VkIHVuYWxsb2NhdGVkPC9sYWJlbD5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZm9ybS1oaW50XCI+UGF5bWVudHMgdGhhdCBhcmUgbWFya2VkIGFzIOKAmFVuaWRlbnRpZmllZOKAmSBvciDigJhUcmFuc2ZlcnJlZOKAmSAoVW5zb2xpY2l0ZWQgcmVxdWVzdHMpPC9zcGFuPlxuICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1yYWRpb3NfX2l0ZW1cIj5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgaWQ9XCJTaG9ydGZhbGxzYW5kU3VycGx1c1wiXG4gICAgICAgICAgICBjbGFzcz1cImdvdnVrLXJhZGlvc19faW5wdXRcIlxuICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwic2VsZWN0ZWRyZXBvcnRcIlxuICAgICAgICAgICAgbmFtZT1cInNlbGVjdGVkcmVwb3J0XCJcbiAgICAgICAgICAgIChjbGljayk9XCJ2YWxpZGF0ZURhdGVzKCdTVVJQTFVTX0FORF9TSE9SVEZBTEwnKVwiXG4gICAgICAgICAgICB0eXBlPVwicmFkaW9cIlxuICAgICAgICAgICAgdmFsdWU9XCJTVVJQTFVTX0FORF9TSE9SVEZBTExcIlxuICAgICAgICAgICAgZGF0YS1hcmlhLWNvbnRyb2xzPVwiU2hvcnRmYWxsc2FuZFN1cnBsdXNcIi8+XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJnb3Z1ay1sYWJlbCBnb3Z1ay1yYWRpb3NfX2xhYmVsIGdvdnVrLWxhYmVsLS1tXCIgZm9yPVwiU2hvcnRmYWxsc2FuZFN1cnBsdXNcIj5VbmRlciBwYXltZW50IGFuZCBPdmVyIHBheW1lbnQ8L2xhYmVsPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmb3JtLWhpbnRcIj5SZXF1ZXN0cyB3aGVyZSBiYWxhbmNlcyBhcmUgbWFya2VkIGFzIFVuZGVyIHBheW1lbnQvT3ZlciBwYXltZW50IGZ1cnRoZXIgY2FzZSBtYW5hZ2VtZW50LlxuICAgICAgICAgICAgICAgRS5nOiBSZWZ1bmQgYXBwcm92YWwsIEN1c3RvbWVyIGNvbnRhY3Q8L3NwYW4+XG4gICAgICAgICA8L2Rpdj5cbiAgICAgICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1yYWRpb3NfX2l0ZW1cIj5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgaWQ9XCJQYXltZW50RmFpbHVyZUV2ZW50XCJcbiAgICAgICAgICAgIGNsYXNzPVwiZ292dWstcmFkaW9zX19pbnB1dFwiXG4gICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJzZWxlY3RlZHJlcG9ydFwiXG4gICAgICAgICAgICBuYW1lPVwic2VsZWN0ZWRyZXBvcnRcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInZhbGlkYXRlRGF0ZXMoJ1BBWU1FTlRfRkFJTFVSRV9FVkVOVCcpXCJcbiAgICAgICAgICAgIHR5cGU9XCJyYWRpb1wiXG4gICAgICAgICAgICB2YWx1ZT1cIlBBWU1FTlRfRkFJTFVSRV9FVkVOVFwiXG4gICAgICAgICAgICBkYXRhLWFyaWEtY29udHJvbHM9XCJQYXltZW50RmFpbHVyZUV2ZW50XCIvPlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZ292dWstbGFiZWwgZ292dWstcmFkaW9zX19sYWJlbCBnb3Z1ay1sYWJlbC0tbVwiIGZvcj1cIlBheW1lbnRGYWlsdXJlRXZlbnRcIj5QYXltZW50IGZhaWx1cmUgZXZlbnQ8L2xhYmVsPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmb3JtLWhpbnRcIj5GYWlsZWQgcGF5bWVudCB0cmFuc2FjdGlvbiBkZXRhaWxzPC9zcGFuPlxuICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImdvdnVrLXJhZGlvc19faXRlbVwiPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIGlkPVwiVGVsZXBob255UGF5bWVudHNcIlxuICAgICAgICAgICAgICBjbGFzcz1cImdvdnVrLXJhZGlvc19faW5wdXRcIlxuICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJzZWxlY3RlZHJlcG9ydFwiXG4gICAgICAgICAgICAgIG5hbWU9XCJzZWxlY3RlZHJlcG9ydFwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJ2YWxpZGF0ZURhdGVzKCdURUxFUEhPTllfUEFZTUVOVFMnKVwiXG4gICAgICAgICAgICAgIHR5cGU9XCJyYWRpb1wiXG4gICAgICAgICAgICAgIHZhbHVlPVwiVEVMRVBIT05ZX1BBWU1FTlRTXCJcbiAgICAgICAgICAgICAgZGF0YS1hcmlhLWNvbnRyb2xzPVwiVGVsZXBob255UGF5bWVudHNcIi8+XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJnb3Z1ay1sYWJlbCBnb3Z1ay1yYWRpb3NfX2xhYmVsIGdvdnVrLWxhYmVsLS1tXCIgZm9yPVwiVGVsZXBob255UGF5bWVudHNcIj5UZWxlcGhvbnkgUGF5bWVudHM8L2xhYmVsPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmb3JtLWhpbnRcIj5BbGwgVGVsZXBob255IFBheW1lbnRzPC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgIDwvZGl2PlxuICAgICA8L2Rpdj5cbiAgICAgPGRpdiAgY2xhc3M9XCJnb3Z1ay1mb3JtLWdyb3VwXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZGF0ZWZyb21cIj5cbiAgICAgIDxsYWJlbCBjbGFzcz1cImdvdnVrLWxhYmVsIGdvdnVrLXJhZGlvc19fbGFiZWwgZ292dWstbGFiZWwtLW1cIiBmb3I9XCJkYXRlLWZyb21cIj5EYXRlIGZyb208L2xhYmVsPlxuICAgICAgPGlucHV0IChjaGFuZ2UpPVwiZ2V0U2VsZWN0ZWRGcm9tRGF0ZSgpXCIgW21heF09XCJnZXRUb2RheSgpXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBpZD1cImRhdGUtZnJvbVwiIG5hbWU9XCJkYXRlLWZyb21cIiB0eXBlPVwiZGF0ZVwiICBmb3JtQ29udHJvbE5hbWU9XCJzdGFydERhdGVcIiByZXF1aXJlZC8+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cImRhdGV0b1wiPlxuICAgICAgPGxhYmVsIGNsYXNzPVwiZ292dWstbGFiZWwgZ292dWstcmFkaW9zX19sYWJlbCBnb3Z1ay1sYWJlbC0tbVwiIGZvcj1cImRhdGUtdG9cIj5EYXRlIHRvPC9sYWJlbD5cbiAgICAgIDxpbnB1dCAoY2hhbmdlKT1cImdldFNlbGVjdGVkRnJvbURhdGUoKVwiIFttYXhdPVwiZ2V0VG9kYXkoKVwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgaWQ9XCJkYXRlLXRvXCIgbmFtZT1cInNlYXJjaFwiIHR5cGU9XCJkYXRlXCIgZm9ybUNvbnRyb2xOYW1lPVwiZW5kRGF0ZVwiIHJlcXVpcmVkLz5cbiAgICAgIDwvZGl2PlxuICAgICA8L2Rpdj5cbiAgIDxwIGNsYXNzPVwiaW5saW5lLWVycm9yLW1lc3NhZ2VcIiAqbmdJZj1cImlzU3RhcnREYXRlTGVzdGhhbkVuZERhdGUgfHwgaXNEYXRlUmFuZ2VCZXRuV2VlayB8fCBpc0RhdGVCZXR3bk1vbnRoXCI+XG4gICAgICA8c3BhbiAqbmdJZj1cImlzU3RhcnREYXRlTGVzdGhhbkVuZERhdGVcIj5QbGVhc2Ugc2VsZWN0ICdEYXRlIEZyb20nIGxlc3MgdGhhbiBvciBlcXVhbCB0byAnRGF0ZSBUbyc8L3NwYW4+XG4gICAgICA8c3BhbiAqbmdJZj1cImlzRGF0ZVJhbmdlQmV0bldlZWtcIj4gUGxlYXNlIHNlbGVjdCB0aGUgZGF0ZSByYW5nZSBiZXR3ZWVuIDcgZGF5czwvc3Bhbj5cbiAgICAgIDxzcGFuICpuZ0lmPVwiaXNEYXRlQmV0d25Nb250aFwiPiBQbGVhc2Ugc2VsZWN0IHRoZSBkYXRlIHJhbmdlIGJldHdlZW4gMzAgZGF5czwvc3Bhbj5cbiAgIDwvcD5cbiAgICA8ZGl2IGNsYXNzPVwiYnRuc3VibWl0XCI+XG4gICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIChjbGljayk9XCJkb3dubG9hZFJlcG9ydCgpXCIgY2xhc3M9XCJidXR0b25cIiBbZGlzYWJsZWRdPVwiIXJlcG9ydHNGb3JtLnZhbGlkIHx8IGlzRG93bkxvYWRCdXR0b25kaXNhYmxlZCB8fCBpc1N0YXJ0RGF0ZUxlc3RoYW5FbmREYXRlIHx8IGlzRGF0ZVJhbmdlQmV0bldlZWsgfHwgaXNEYXRlQmV0d25Nb250aFwiPkRvd25sb2FkIHJlcG9ydDwvYnV0dG9uPlxuICAgPC9kaXY+XG4gPC9mb3JtPlxuXG4iXX0=
@@ -1,4 +1,4 @@
1
- import { ChangeDetectorRef, Component, Input, forwardRef } from '@angular/core';
1
+ import { ChangeDetectorRef, Component, forwardRef, Input } from '@angular/core';
2
2
  import { PaymentLibService } from './payment-lib.service';
3
3
  import { OrderslistService } from './services/orderslist.service';
4
4
  import * as i0 from "@angular/core";
@@ -125,6 +125,92 @@ export class PaymentLibComponent {
125
125
  this.isFromPayBubble = true;
126
126
  }
127
127
  }
128
+ /**
129
+ * Adds a remission to the payment group using data from the provided form group.
130
+ *
131
+ * This method checks if the `paymentGroup` is not null before attempting to add the remission.
132
+ * If the `paymentGroup` exists, a new remission is created using the values from the provided
133
+ * form group (`currentRemissionFormGroup`), and it is pushed into the `remissions` array of the payment group.
134
+ *
135
+ * @param {AddRetroRemissionRequest} currentRemissionFormGroup - The form group containing remission data
136
+ * (e.g., `hwf_amount`, `hwf_reference`).
137
+ */
138
+ addRemission(currentRemissionFormGroup) {
139
+ if (this.paymentGroup != null) {
140
+ const remission = {
141
+ remission_reference: null,
142
+ hwf_reference: currentRemissionFormGroup.hwf_reference,
143
+ hwf_amount: currentRemissionFormGroup.hwf_amount,
144
+ beneficiary_name: null,
145
+ ccd_case_number: null,
146
+ fee_code: null,
147
+ date_created: null,
148
+ fee_id: null,
149
+ issue_refund_add_refund_add_remission: false,
150
+ add_refund: false,
151
+ overall_balance: currentRemissionFormGroup.hwf_amount,
152
+ acollection_of_fess: true
153
+ };
154
+ this.paymentGroup.remissions.push(remission);
155
+ }
156
+ }
157
+ /**
158
+ * This method is used to set the paymentGroup for the add remission journey.
159
+ * @param updatedPaymentGroup this is an updated paymentGroup version.
160
+ */
161
+ addPaymentGroup(updatedPaymentGroup) {
162
+ if (this.paymentGroup == null) {
163
+ this.paymentGroup = updatedPaymentGroup;
164
+ }
165
+ }
166
+ /**
167
+ * Calculates the total remission amount for the current payment group.
168
+ *
169
+ * This method checks if the payment group contains any remissions and, if so,
170
+ * sums up the `hwf_amount` of all remissions using the `reduce()` method.
171
+ * If no remissions are found, it returns a default value of 0.
172
+ *
173
+ * @returns {number} The total remission amount, or 0 if no remissions are present.
174
+ */
175
+ getTotalRemission() {
176
+ let remissionTotal = 0;
177
+ if (this.paymentGroup.remissions) {
178
+ remissionTotal = this.paymentGroup.remissions.reduce((totalRemission, remission) => totalRemission + remission.hwf_amount, 0);
179
+ }
180
+ return remissionTotal;
181
+ }
182
+ /**
183
+ * Calculates the total fee amount for the current payment group.
184
+ *
185
+ * This method checks if the payment group contains any fees and, if so,
186
+ * sums up the `calculated_amount` of all fees using the `reduce()` method.
187
+ * If no fees are found, it returns a default value of 0.
188
+ *
189
+ * @returns {number} The total fee amount, or 0 if no fees are present.
190
+ */
191
+ getTotalFees() {
192
+ let feesTotal = 0;
193
+ if (this.paymentGroup.fees) {
194
+ feesTotal = this.paymentGroup.fees.reduce((totalFees, fee) => totalFees + fee.calculated_amount, 0);
195
+ }
196
+ return feesTotal;
197
+ }
198
+ /**
199
+ * Calculates the total payment amount for the current payment group.
200
+ *
201
+ * This method checks if the payment group contains any payments and, if so,
202
+ * sums up the `amount` of all payments using the `reduce()` method.
203
+ * If no payments are found, it returns a default value of 0.
204
+ *
205
+ * @returns {number} The total payment amount, or 0 if no payments are present.
206
+ */
207
+ getTotalPayments() {
208
+ let paymentsTotal = 0;
209
+ if (this.paymentGroup.payments) {
210
+ paymentsTotal = this.paymentGroup.payments.reduce((totalFees, payment) => totalFees + payment.amount, 0);
211
+ }
212
+ return paymentsTotal;
213
+ }
128
214
  // Refunds libs section.
129
215
  /**
130
216
  * This function is used to find out if the current refunds list are in progress for the fee passed as parameter
@@ -314,4 +400,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImpor
314
400
  type: Input,
315
401
  args: ['isFromServiceRequestPage']
316
402
  }] } });
317
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF5bWVudC1saWIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvcGF5bWVudC1saWIvc3JjL2xpYi9wYXltZW50LWxpYi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTFELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7OztBQWtEbEUsTUFBTSxPQUFPLG1CQUFtQjtJQWtFVjtJQUNWO0lBQ0E7SUFuRVMsUUFBUSxDQUFTO0lBQ1IsaUJBQWlCLENBQVM7SUFDM0IsZ0JBQWdCLENBQVM7SUFDcEIscUJBQXFCLENBQVM7SUFDL0Isb0JBQW9CLENBQVM7SUFDbEMsZUFBZSxDQUFTO0lBQzFCLGFBQWEsQ0FBUztJQUNyQixjQUFjLENBQVM7SUFDakMsSUFBSSxDQUFTO0lBQ04sV0FBVyxDQUFTO0lBQ2QsaUJBQWlCLENBQVU7SUFDakMsV0FBVyxDQUFVO0lBQ2xCLGNBQWMsQ0FBUztJQUMzQixVQUFVLENBQVM7SUFDZCxlQUFlLENBQVM7SUFDN0IsVUFBVSxDQUFVO0lBQ3BCLFVBQVUsQ0FBVTtJQUNyQixTQUFTLENBQVU7SUFDcEIsUUFBUSxDQUFTO0lBQ0gsc0JBQXNCLENBQVU7SUFDL0MsT0FBTyxDQUFVO0lBQ2QsVUFBVSxDQUFTO0lBQ3ZCLE1BQU0sQ0FBUztJQUNKLGlCQUFpQixDQUFRO0lBQ3pCLGlCQUFpQixDQUFTO0lBQ25CLHdCQUF3QixDQUFVO0lBRXJFLGFBQWEsQ0FBUztJQUN0QixZQUFZLENBQVM7SUFDckIsMkJBQTJCLEdBQVcsSUFBSSxDQUFDO0lBQzNDLHFCQUFxQixDQUFTO0lBQzlCLGdCQUFn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S0FBSzt1QkFBQyxZQUFZO2dCQUNPLGVBQWU7c0JBQXhDLEtBQUs7dUJBQUMsaUJBQWlCO2dCQUNILFVBQVU7c0JBQTlCLEtBQUs7dUJBQUMsWUFBWTtnQkFDRSxVQUFVO3NCQUE5QixLQUFLO3VCQUFDLFlBQVk7Z0JBQ0MsU0FBUztzQkFBNUIsS0FBSzt1QkFBQyxXQUFXO2dCQUNDLFFBQVE7c0JBQTFCLEtBQUs7dUJBQUMsVUFBVTtnQkFDZ0Isc0JBQXNCO3NCQUF0RCxLQUFLO3VCQUFDLHdCQUF3QjtnQkFDYixPQUFPO3NCQUF4QixLQUFLO3VCQUFDLFNBQVM7Z0JBQ0ssVUFBVTtzQkFBOUIsS0FBSzt1QkFBQyxZQUFZO2dCQUNGLE1BQU07c0JBQXRCLEtBQUs7dUJBQUMsUUFBUTtnQkFDYSxpQkFBaUI7c0JBQTVDLEtBQUs7dUJBQUMsbUJBQW1CO2dCQUNFLGlCQUFpQjtzQkFBNUMsS0FBSzt1QkFBQyxtQkFBbUI7Z0JBQ1Msd0JBQXdCO3NCQUExRCxLQUFLO3VCQUFDLDBCQUEwQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIElucHV0LCBPbkluaXQsIGZvcndhcmRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFBheW1lbnRMaWJTZXJ2aWNlIH0gZnJvbSAnLi9wYXltZW50LWxpYi5zZXJ2aWNlJztcbmltcG9ydCB7IElCU1BheW1lbnRzIH0gZnJvbSAnLi9pbnRlcmZhY2VzL0lCU1BheW1lbnRzJztcbmltcG9ydCB7IE9yZGVyc2xpc3RTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9vcmRlcnNsaXN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgSVBheW1lbnQgfSBmcm9tICcuL2ludGVyZmFjZXMvSVBheW1lbnQnO1xuaW1wb3J0IHsgUGF5bWVudFZpZXdDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcGF5bWVudC12aWV3L3BheW1lbnQtdmlldy5jb21wb25lbnQnO1xuaW1wb3J0IHtJUGF5bWVudEdyb3VwfSBmcm9tIFwiLi9pbnRlcmZhY2VzL0lQYXltZW50R3JvdXBcIjtcbmltcG9ydCB7SVJlZnVuZExpc3R9IGZyb20gXCIuL2ludGVyZmFjZXMvSVJlZnVuZExpc3RcIjtcbmltcG9ydCB7SUZlZX0gZnJvbSBcIi4vaW50ZXJmYWNlcy9JRmVlXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NjcGF5LXBheW1lbnQtbGliJyxcbiAgdGVtcGxhdGU6IGBcbiAgPGNjcGF5LXJlZnVuZC1saXN0IFtVU0VSSURdPVwiVVNFUklEXCIgW0xPR0dFRElOVVNFUlJPTEVTXT1cIkxPR0dFRElOVVNFUlJPTEVTXCIgW0xPR0dFRElOVVNFUkVNQUlMXT1cIkxPR0dFRElOVVNFUkVNQUlMXCIgKm5nSWY9XCJ2aWV3TmFtZSA9PT0gJ3JlZnVuZC1saXN0J1wiPjwvY2NwYXktcmVmdW5kLWxpc3Q+XG4gICAgPGNjcGF5LXBheW1lbnQtbGlzdCAqbmdJZj1cInZpZXdOYW1lID09PSAncGF5bWVudC1saXN0J1wiPjwvY2NwYXktcGF5bWVudC1saXN0PlxuICAgIDxjY3BheS1yZWZ1bmQtc3RhdHVzXG4gICAgW0xPR0dFRElOVVNFUlJPTEVTXT1cIkxPR0dFRElOVVNFUlJPTEVTXCJcbiAgICBbQVBJX1JPT1RdPVwiQVBJX1JPT1RcIlxuICAgICpuZ0lmPVwidmlld05hbWUgPT09ICdyZWZ1bmRzdGF0dXNsaXN0J1wiPiA8L2NjcGF5LXJlZnVuZC1zdGF0dXMgPlxuICAgIDxjY3BheS1wYXltZW50LXZpZXcgW0xPR0dFRElOVVNFUlJPTEVTXT1cIkxPR0dFRElOVVNFUlJPTEVTXCIgKm5nSWY9XCJ2aWV3TmFtZSA9PT0gJ3BheW1lbnQtdmlldydcIlxuICAgIFtpc1R1cm5PZmZdPVwiSVNUVVJOT0ZGXCIgW2lzVGFrZVBheW1lbnRdPVwiVEFLRVBBWU1FTlRcIiAgW2Nhc2VUeXBlXT1cIkNBU0VUWVBFXCJcbiAgICBbSVNQQVlNRU5UU1RBVFVTRU5BQkxFRF0gPSBcIklTUEFZTUVOVFNUQVRVU0VOQUJMRURcIlxuICAgID48L2NjcGF5LXBheW1lbnQtdmlldz5cblxuICAgIDxjY3BheS1wcm9jZXNzLXJlZnVuZCAqbmdJZj1cInZpZXdOYW1lID09PSAncHJvY2Vzcy1yZWZ1bmQnXCJcbiAgICBbcmVmdW5kUmVmZXJlbmNlXT1cInJlZnVuZFJlZmVyZW5jZVwiXG4gICAgW3JlZnVuZGxpc3Rzb3VyY2VdPVwicmVmdW5kbGlzdHNvdXJjZVwiXG4gICAgPjwvY2NwYXktcHJvY2Vzcy1yZWZ1bmQ+XG4gICAgPGNjcGF5LXBiYS1wYXltZW50ICpuZ0lmPVwidmlld05hbWUgPT09ICdwYmEtcGF5bWVudCdcIlxuICAgIFtwYmFQYXlPcmRlclJlZl09XCJwYmFQYXlPcmRlclJlZlwiXG4gICAgPjwvY2NwYXktcGJhLXBheW1lbnQ+XG4gICAgPGNjcGF5LWNhc2UtdHJhbnNhY3Rpb25zIFtpc1Rha2VQYXltZW50XT1cImlzVGFrZVBheW1lbnRcIiBbaXNGcm9tU2VydmljZVJlcXVlc3RQYWdlXT1cImlzRnJvbVNlcnZpY2VSZXF1ZXN0UGFnZVwiIFtMT0dHRURJTlVTRVJST0xFU109XCJMT0dHRURJTlVTRVJST0xFU1wiICpuZ0lmPVwidmlld05hbWUgPT09ICdjYXNlLXRyYW5zYWN0aW9ucydcIj48L2NjcGF5LWNhc2UtdHJhbnNhY3Rpb25zPlxuICAgIDxhcHAtbWFyay11bmlkZW50aWZpZWQtcGF5bWVudCAqbmdJZj1cInZpZXdOYW1lID09PSAndW5pZGVudGlmaWVkUGFnZSdcIlxuICAgIFtjYXNlVHlwZV09XCJDQVNFVFlQRVwiPjwvYXBwLW1hcmstdW5pZGVudGlmaWVkLXBheW1lbnQ+XG4gICAgPGFwcC1tYXJrLXVuc29saWNpdGVkLXBheW1lbnQgKm5nSWY9XCJ2aWV3TmFtZSA9PT0gJ3Vuc29saWNpdGVkUGFnZSdcIlxuICAgIFtjYXNlVHlwZV09XCJDQVNFVFlQRVwiPjwvYXBwLW1hcmstdW5zb2xpY2l0ZWQtcGF5bWVudD5cbiAgICA8YXBwLWFsbG9jYXRlLXBheW1lbnRzICpuZ0lmPVwidmlld05hbWUgPT09ICdhbGxvY2F0ZS1wYXltZW50cydcIlxuICAgIFtpc1R1cm5PZmZdPVwiSVNUVVJOT0ZGXCJcbiAgICBbY2FzZVR5cGVdPVwiQ0FTRVRZUEVcIlxuICAgID48L2FwcC1hbGxvY2F0ZS1wYXltZW50cz5cbiAgICA8Y2NwYXktZmVlLXN1bW1hcnkgKm5nSWY9XCJ2aWV3TmFtZSA9PT0gJ2ZlZS1zdW1tYXJ5J1wiXG4gICAgICBbY2NkQ2FzZU51bWJlcl09XCJDQ0RfQ0FTRV9OVU1CRVJcIlxuICAgICAgW3BheW1lbnRHcm91cFJlZl09XCJwYXltZW50R3JvdXBSZWZlcmVuY2VcIlxuICAgICAgW2lzVHVybk9mZl09XCJJU1RVUk5PRkZcIlxuICAgICAgW2Nhc2VUeXBlXT1cIkNBU0VUWVBFXCJcbiAgICAgID48L2NjcGF5LWZlZS1zdW1tYXJ5PlxuICAgIDxjY3BheS1yZXBvcnRzICpuZ0lmPVwidmlld05hbWUgPT09ICdyZXBvcnRzJ1wiXG4gICAgW0lTUEFZTUVOVFNUQVRVU0VOQUJMRURdID0gXCJJU1BBWU1FTlRTVEFUVVNFTkFCTEVEXCJcbiAgICA+PC9jY3BheS1yZXBvcnRzPlxuICAgIGAsXG4gIHByb3ZpZGVyczogW3sgcHJvdmlkZTogJ1BBWU1FTlRfTElCJywgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gUGF5bWVudExpYkNvbXBvbmVudCkgfV1cbn0pXG5cbmV4cG9ydCBjbGFzcyBQYXltZW50TGliQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCdBUElfUk9PVCcpIEFQSV9ST09UOiBzdHJpbmc7XG4gIEBJbnB1dCgnQlVMS1NDQU5fQVBJX1JPT1QnKSBCVUxLU0NBTl9BUElfUk9PVDogc3RyaW5nO1xuICBASW5wdXQoJ1JFRlVORFNfQVBJX1JPT1QnKSBSRUZVTkRTX0FQSV9ST09UOiBzdHJpbmc7XG4gIEBJbnB1dCgnTk9USUZJQ0FUSU9OX0FQSV9ST09UJykgTk9USUZJQ0FUSU9OX0FQSV9ST09UOiBzdHJpbmc7XG4gIEBJbnB1dCgnQ0FSRFBBWU1FTlRSRVRVUk5VUkwnKSBDQVJEUEFZTUVOVFJFVFVSTlVSTDogc3RyaW5nO1xuICBASW5wdXQoJ0NDRF9DQVNFX05VTUJFUicpIENDRF9DQVNFX05VTUJFUjogc3RyaW5nO1xuICBASW5wdXQoJ0VYQ19SRUZFUkVOQ0UnKSBFWENfUkVGRVJFTkNFOiBzdHJpbmc7XG4gIEBJbnB1dCgnUEFZTUVOVF9NRVRIT0QnKSBQQVlNRU5UX01FVEhPRDogc3RyaW5nO1xuICBASW5wdXQoJ1ZJRVcnKSBWSUVXOiBzdHJpbmc7XG4gIEBJbnB1dCgnVklFV1NFUlZJQ0UnKSBWSUVXU0VSVklDRTogc3RyaW5nO1xuICBASW5wdXQoJ1BBWU1FTlRfR1JPVVBfUkVGJykgUEFZTUVOVF9HUk9VUF9SRUY/OiBzdHJpbmc7XG4gIEBJbnB1dCgnVEFLRVBBWU1FTlQnKSBUQUtFUEFZTUVOVDogYm9vbGVhbjtcbiAgQElucHV0KCdTRVJWSUNFUkVRVUVTVCcpIFNFUlZJQ0VSRVFVRVNUOiBzdHJpbmc7XG4gIEBJbnB1dCgnRENOX05VTUJFUicpIERDTl9OVU1CRVI6IHN0cmluZztcbiAgQElucHV0KCdTRUxFQ1RFRF9PUFRJT04nKSBTRUxFQ1RFRF9PUFRJT046IHN0cmluZztcbiAgQElucHV0KCdJU0JTRU5BQkxFJykgSVNCU0VOQUJMRTogQm9vbGVhbjtcbiAgQElucHV0KCdJU1NGRU5BQkxFJykgSVNTRkVOQUJMRTogYm9vbGVhbjtcbiAgQElucHV0KCdJU1RVUk5PRkYnKSBJU1RVUk5PRkY6IGJvb2xlYW47XG4gIEBJbnB1dCgnQ0FTRVRZUEUnKSBDQVNFVFlQRTogc3RyaW5nO1xuICBASW5wdXQoJ0lTUEFZTUVOVFNUQVRVU0VOQUJMRUQnKSBJU1BBWU1FTlRTVEFUVVNFTkFCTEVEOiBib29sZWFuO1xuICBASW5wdXQoJ3Jvb3RVcmwnKSByb290VXJsOiBib29sZWFuO1xuICBASW5wdXQoJ1JFRlVORExJU1QnKSBSRUZVTkRMSVNUOiBzdHJpbmc7XG4gIEBJbnB1dCgnVVNFUklEJykgVVNFUklEOiBzdHJpbmc7XG4gIEBJbnB1dCgnTE9HR0VESU5VU0VSUk9MRVMnKSBMT0dHRURJTlVTRVJST0xFUzogYW55W107XG4gIEBJbnB1dCgnTE9HR0VESU5VU0VSRU1BSUwnKSBMT0dHRURJTlVTRVJFTUFJTDogc3RyaW5nO1xuICBASW5wdXQoJ2lzRnJvbVNlcnZpY2VSZXF1ZXN0UGFnZScpIGlzRnJvbVNlcnZpY2VSZXF1ZXN0UGFnZTogYm9vbGVhbjtcblxuICBwYXltZW50TWV0aG9kOiBzdHJpbmc7XG4gIGJzcGF5bWVudGRjbjogc3RyaW5nO1xuICB1blByb2Nlc3NlZFBheW1lbnRTZXJ2aWNlSWQ6IHN0cmluZyA9IG51bGw7XG4gIHBheW1lbnRHcm91cFJlZmVyZW5jZTogc3RyaW5nO1xuICBwYXltZW50UmVmZXJlbmNlOiBzdHJpbmc7XG4gIHJlZnVuZFJlZmVyZW5jZTogc3RyaW5nO1xuICBpc0Zyb21QYXlCdWJibGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcmVmdW5kbGlzdHNvdXJjZTogYW55O1xuICB2aWV3TmFtZTogc3RyaW5nO1xuICBpc1R1cm5PZmY6IGJvb2xlYW47XG4gIGNhc2VUeXBlOiBzdHJpbmc7XG4gIHVuUHJvY2Vzc2VkUGF5bWVudDogSUJTUGF5bWVudHMgPSBudWxsO1xuICBpc1JlZnVuZFN0YXR1c1ZpZXc6IGJvb2xlYW47XG4gIGlzUmVkaXJlY3RGcm9tQ2FzZVRyYW5zYWN0aW9uUGFnZTogc3RyaW5nO1xuICBpc0NhbGxGcm9tUmVmdW5kTGlzdDogYm9vbGVhbjtcbiAgaXNGcm9tUmVmdW5kU3RhdHVzUGFnZTogYm9vbGVhbjtcbiAgaXNjYW5jZWxDbGlja2VkOiBib29sZWFuO1xuICBpc0Zyb21QYXltZW50RGV0YWlsUGFnZTogYm9vbGVhbjtcbiAgcGJhUGF5T3JkZXJSZWY6IElQYXltZW50O1xuICBpc1Rha2VQYXltZW50OiBib29sZWFuO1xuXG4gIG9yZGVyRGV0YWlsOiBhbnlbXTtcbiAgb3JkZXJSZWY6IHN0cmluZztcbiAgb3JkZXJTdGF0dXM6IHN0cmluZztcbiAgb3JkZXJQYXJ0eTogc3RyaW5nO1xuICBvcmRlckNyZWF0ZWQ6IERhdGU7XG4gIG9yZGVyQ0NERXZlbnQ6IHN0cmluZztcbiAgc2VydmljZVJlcXVlc3RWYWx1ZTogc3RyaW5nO1xuICBvcmRlckFkZEJ0bkVuYWJsZTogYm9vbGVhbjtcbiAgb3JkZXJGZWVzVG90YWw6IG51bWJlciA9IDAuMDA7XG4gIG9yZGVyUmVtaXNzaW9uVG90YWw6IG51bWJlciA9IDAuMDA7XG4gIG9yZGVyVG90YWxQYXltZW50czogbnVtYmVyID0gMC4wMDtcbiAgb3JkZXJQZW5kaW5nUGF5bWVudHM6IG51bWJlciA9IDAuMDA7XG5cbiAgcGF5bWVudEdyb3VwOklQYXltZW50R3JvdXBcbiAgb3ZlclBheW1lbnRBbW91bnQ6IG51bWJlciA9IDAuMDA7XG4gIHJlZnVuZHM6IElSZWZ1bmRMaXN0W107XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBwYXltZW50TGliU2VydmljZTogUGF5bWVudExpYlNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBPcmRlcnNsaXN0U2VydmljZTogT3JkZXJzbGlzdFNlcnZpY2UpIHsgfVxuICBuZ0FmdGVyQ29udGVudENoZWNrZWQoKTogdm9pZCB7XG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuXG4gIG5nT25Jbml0KCkge1xuXG4gICAgdGhpcy5wYXltZW50TGliU2VydmljZS5zZXRBcGlSb290VXJsKHRoaXMuQVBJX1JPT1QpO1xuICAgIHRoaXMucGF5bWVudExpYlNlcnZpY2Uuc2V0QnVsa1NjYW5BcGlSb290VXJsKHRoaXMuQlVMS1NDQU5fQVBJX1JPT1QpO1xuICAgIHRoaXMucGF5bWVudExpYlNlcnZpY2Uuc2V0UmVmdW5kbmRzQXBpUm9vdFVybCh0aGlzLlJFRlVORFNfQVBJX1JPT1QpO1xuICAgIHRoaXMucGF5bWVudExpYlNlcnZpY2Uuc2V0Tm90aWNhdGlvbkFwaVJvb3RVcmwodGhpcy5OT1RJRklDQVRJT05fQVBJX1JPT1QpO1xuICAgIHRoaXMucGF5bWVudExpYlNlcnZpY2Uuc2V0Q2FyZFBheW1lbnRSZXR1cm5VcmwodGhpcy5DQVJEUEFZTUVOVFJFVFVSTlVSTCk7XG5cbiAgICBpZiAodGhpcy5MT0dHRURJTlVTRVJST0xFUy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLk9yZGVyc2xpc3RTZXJ2aWNlLnNldFVzZXJSb2xlc0xpc3QodGhpcy5MT0dHRURJTlVTRVJST0xFUyk7XG4gICAgfVxuICAgIGlmICh0aGlzLlBBWU1FTlRfR1JPVVBfUkVGKSB7XG4gICAgICB0aGlzLnBheW1lbnRHcm91cFJlZmVyZW5jZSA9IHRoaXMuUEFZTUVOVF9HUk9VUF9SRUY7XG4gICAgfVxuICAgIGlmICh0aGlzLkRDTl9OVU1CRVIpIHtcbiAgICAgIHRoaXMuYnNwYXltZW50ZGNuID0gdGhpcy5EQ05fTlVNQkVSO1xuICAgIH1cbiAgICBpZiAodGhpcy5SRUZVTkRMSVNUID09PSBcInRydWVcIikge1xuICAgICAgdGhpcy5WSUVXID0gJ3JlZnVuZC1saXN0JztcbiAgICAgIHRoaXMudmlld05hbWUgPSB0aGlzLlZJRVc7XG4gICAgfVxuICAgIGlmICh0aGlzLlZJRVcgPT09ICdmZWUtc3VtbWFyeScpIHtcbiAgICAgIHRoaXMudmlld05hbWUgPSAnZmVlLXN1bW1hcnknO1xuICAgIH0gZWxzZSBpZiAodGhpcy5WSUVXICE9PSAncmVwb3J0cycgJiYgdGhpcy5WSUVXICE9PSAncmVmdW5kLWxpc3QnKSB7XG4gICAgICB0aGlzLnZpZXdOYW1lID0gJ2Nhc2UtdHJhbnNhY3Rpb25zJztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy52aWV3TmFtZSA9IHRoaXMuVklFVztcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pc1Rha2VQYXltZW50KSB7XG4gICAgICB0aGlzLlRBS0VQQVlNRU5UID0gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKHRoaXMuQVBJX1JPT1QgPT0gJ2FwaS9wYXltZW50LWhpc3RvcnknKSB7XG4gICAgICB0aGlzLmlzRnJvbVBheUJ1YmJsZSA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgLy8gUmVmdW5kcyBsaWJzIHNlY3Rpb24uXG5cblxuICAvKipcbiAgICogVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGZpbmQgb3V0IGlmIHRoZSBjdXJyZW50IHJlZnVuZHMgbGlzdCBhcmUgaW4gcHJvZ3Jlc3MgZm9yIHRoZSBmZWUgcGFzc2VkIGFzIHBhcmFtZXRlclxuICAgKiBAcGFyYW0gZmVlIHRoaXMgaXMgdGhlIGZlZSB1c2VkIHRvIGZpbmQgb3V0IGlmIHRoZSByZWZ1bmRzIGFyZSBpbiBwcm9ncmVzcy5cbiAgICovXG4gIGlzVGhlQ3VycmVudFJlZnVuZEluUHJvY2Vzc0ZvclRoaXNGZWUoZmVlOiBJRmVlKTogYm9vbGVhbntcbiAgICAvLyBObyByZWZ1bmRzXG4gICAgaWYgKHRoaXMucmVmdW5kcyA9PSBudWxsIHx8IHRoaXMucmVmdW5kcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuICF0aGlzLmlzVGhlQ3VycmVudFJlZnVuZFJlamVjdGVkRm9yVGhlRmVlKGZlZS5pZC50b1N0cmluZygpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gZmluZCBvdXQgaWYgaW4gY3VycmVudCBsaXN0IG9mIHJlZnVuZHMgYWxsIHJlZnVuZHMgaGFzIGJlZW4gcmVqZWN0ZWRcbiAgICogZm9yIHRoZSBmZWUgcGFzc2VkIGFzIHBhcmFtZXRlci5cbiAgICogQHBhcmFtIGZlZUNvZGUgdGhpcyBpcyB0aGUgZmVlIGNvZGUgdXNlZCB0byBmaW5kIG91dCBhbGwgcmVmdW5kcyByZWplY3RlZCByZWZ1bmRzLlxuICAgKi9cbiAgaXNUaGVDdXJyZW50UmVmdW5kUmVqZWN0ZWRGb3JUaGVGZWUoZmVlQ29kZTogc3RyaW5nKTogYm9vbGVhbiB7XG5cbiAgICBsZXQgcmVmdW5kc0J5RmVlID0gdGhpcy5yZWZ1bmRzLmZpbHRlcihyZWZ1bmQgPT4gcmVmdW5kLmZlZV9pZHMgPT09IGZlZUNvZGUpO1xuICAgIGxldCByZWZ1bmRzQnlGZWVBbmRSZWplY3RlZCA9IHRoaXMucmVmdW5kcy5maWx0ZXIocmVmdW5kID0+IHJlZnVuZC5yZWZ1bmRfc3RhdHVzLm5hbWUgPT09ICdSZWplY3RlZCcpO1xuXG4gICAgLy8gUmVmdW5kcyA+IDAgIGFuZCBvdmVyUGF5bWVudCAtLT4gcmVmdW5kcyBpbiBwcm9jZXNzIG9yIFJlamVjdGVkLlxuICAgIGlmIChyZWZ1bmRzQnlGZWUubGVuZ3RoID09PSByZWZ1bmRzQnlGZWVBbmRSZWplY3RlZC5sZW5ndGgpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuXG59XG4iXX0=
403
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF5bWVudC1saWIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvcGF5bWVudC1saWIvc3JjL2xpYi9wYXltZW50LWxpYi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFTLE1BQU0sZUFBZSxDQUFDO0FBQ3RGLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBRXhELE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLCtCQUErQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7OztBQW1EaEUsTUFBTSxPQUFPLG1CQUFtQjtJQWtFVjtJQUNWO0lBQ0E7SUFuRVMsUUFBUSxDQUFTO0lBQ1IsaUJBQWlCLENBQVM7SUFDM0IsZ0JBQWdCLENBQVM7SUFDcEIscUJBQXFCLENBQVM7SUFDL0Isb0JBQW9CLENBQVM7SUFDbEMsZUFBZSxDQUFTO0lBQzFCLGFBQWEsQ0FBUztJQUNyQixjQUFjLENBQVM7SUFDakMsSUFBSSxDQUFTO0lBQ04sV0FBVyxDQUFTO0lBQ2QsaUJBQWlCLENBQVU7SUFDakMsV0FBVyxDQUFVO0lBQ2xCLGNBQWMsQ0FBUztJQUMzQixVQUFVLENBQVM7SUFDZCxlQUFlLENBQVM7SUFDN0IsVUFBVSxDQUFVO0lBQ3BCLFVBQVUsQ0FBVTtJQUNyQixTQUFTLENBQVU7SUFDcEIsUUFBUSxDQUFTO0lBQ0gsc0JBQXNCLENBQVU7SUFDL0MsT0FBTyxDQUFVO0lBQ2QsVUFBVSxDQUFTO0lBQ3ZCLE1BQU0sQ0FBUztJQUNKLGlCQUFpQixDQUFRO0lBQ3pCLGlCQUFpQixDQUFTO0lBQ25CLHdCQUF3QixDQUFVO0lBRXJFLGFBQWEsQ0FBUztJQUN0QixZQUFZLENBQVM7SUFDckIsMkJBQTJCLEdBQVcsSUFBSSxDQUFDO0lBQzNDLHFCQUFxQixDQUFTO0lBQzlCLGdCQUFn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QkFBdEIsS0FBSzt1QkFBQyxRQUFRO2dCQUNhLGlCQUFpQjtzQkFBNUMsS0FBSzt1QkFBQyxtQkFBbUI7Z0JBQ0UsaUJBQWlCO3NCQUE1QyxLQUFLO3VCQUFDLG1CQUFtQjtnQkFDUyx3QkFBd0I7c0JBQTFELEtBQUs7dUJBQUMsMEJBQTBCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBmb3J3YXJkUmVmLCBJbnB1dCwgT25Jbml0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7UGF5bWVudExpYlNlcnZpY2V9IGZyb20gJy4vcGF5bWVudC1saWIuc2VydmljZSc7XG5pbXBvcnQge0lCU1BheW1lbnRzfSBmcm9tICcuL2ludGVyZmFjZXMvSUJTUGF5bWVudHMnO1xuaW1wb3J0IHtPcmRlcnNsaXN0U2VydmljZX0gZnJvbSAnLi9zZXJ2aWNlcy9vcmRlcnNsaXN0LnNlcnZpY2UnO1xuaW1wb3J0IHtJUGF5bWVudH0gZnJvbSAnLi9pbnRlcmZhY2VzL0lQYXltZW50JztcbmltcG9ydCB7SVBheW1lbnRHcm91cH0gZnJvbSBcIi4vaW50ZXJmYWNlcy9JUGF5bWVudEdyb3VwXCI7XG5pbXBvcnQge0lSZWZ1bmRMaXN0fSBmcm9tIFwiLi9pbnRlcmZhY2VzL0lSZWZ1bmRMaXN0XCI7XG5pbXBvcnQge0lGZWV9IGZyb20gXCIuL2ludGVyZmFjZXMvSUZlZVwiO1xuaW1wb3J0IHtJUmVtaXNzaW9ufSBmcm9tIFwiLi9pbnRlcmZhY2VzL0lSZW1pc3Npb25cIjtcbmltcG9ydCB7QWRkUmV0cm9SZW1pc3Npb25SZXF1ZXN0fSBmcm9tIFwiLi9pbnRlcmZhY2VzL0FkZFJldHJvUmVtaXNzaW9uUmVxdWVzdFwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjY3BheS1wYXltZW50LWxpYicsXG4gIHRlbXBsYXRlOiBgXG4gIDxjY3BheS1yZWZ1bmQtbGlzdCBbVVNFUklEXT1cIlVTRVJJRFwiIFtMT0dHRURJTlVTRVJST0xFU109XCJMT0dHRURJTlVTRVJST0xFU1wiIFtMT0dHRURJTlVTRVJFTUFJTF09XCJMT0dHRURJTlVTRVJFTUFJTFwiICpuZ0lmPVwidmlld05hbWUgPT09ICdyZWZ1bmQtbGlzdCdcIj48L2NjcGF5LXJlZnVuZC1saXN0PlxuICAgIDxjY3BheS1wYXltZW50LWxpc3QgKm5nSWY9XCJ2aWV3TmFtZSA9PT0gJ3BheW1lbnQtbGlzdCdcIj48L2NjcGF5LXBheW1lbnQtbGlzdD5cbiAgICA8Y2NwYXktcmVmdW5kLXN0YXR1c1xuICAgIFtMT0dHRURJTlVTRVJST0xFU109XCJMT0dHRURJTlVTRVJST0xFU1wiXG4gICAgW0FQSV9ST09UXT1cIkFQSV9ST09UXCJcbiAgICAqbmdJZj1cInZpZXdOYW1lID09PSAncmVmdW5kc3RhdHVzbGlzdCdcIj4gPC9jY3BheS1yZWZ1bmQtc3RhdHVzID5cbiAgICA8Y2NwYXktcGF5bWVudC12aWV3IFtMT0dHRURJTlVTRVJST0xFU109XCJMT0dHRURJTlVTRVJST0xFU1wiICpuZ0lmPVwidmlld05hbWUgPT09ICdwYXltZW50LXZpZXcnXCJcbiAgICBbaXNUdXJuT2ZmXT1cIklTVFVSTk9GRlwiIFtpc1Rha2VQYXltZW50XT1cIlRBS0VQQVlNRU5UXCIgIFtjYXNlVHlwZV09XCJDQVNFVFlQRVwiXG4gICAgW0lTUEFZTUVOVFNUQVRVU0VOQUJMRURdID0gXCJJU1BBWU1FTlRTVEFUVVNFTkFCTEVEXCJcbiAgICA+PC9jY3BheS1wYXltZW50LXZpZXc+XG5cbiAgICA8Y2NwYXktcHJvY2Vzcy1yZWZ1bmQgKm5nSWY9XCJ2aWV3TmFtZSA9PT0gJ3Byb2Nlc3MtcmVmdW5kJ1wiXG4gICAgW3JlZnVuZFJlZmVyZW5jZV09XCJyZWZ1bmRSZWZlcmVuY2VcIlxuICAgIFtyZWZ1bmRsaXN0c291cmNlXT1cInJlZnVuZGxpc3Rzb3VyY2VcIlxuICAgID48L2NjcGF5LXByb2Nlc3MtcmVmdW5kPlxuICAgIDxjY3BheS1wYmEtcGF5bWVudCAqbmdJZj1cInZpZXdOYW1lID09PSAncGJhLXBheW1lbnQnXCJcbiAgICBbcGJhUGF5T3JkZXJSZWZdPVwicGJhUGF5T3JkZXJSZWZcIlxuICAgID48L2NjcGF5LXBiYS1wYXltZW50PlxuICAgIDxjY3BheS1jYXNlLXRyYW5zYWN0aW9ucyBbaXNUYWtlUGF5bWVudF09XCJpc1Rha2VQYXltZW50XCIgW2lzRnJvbVNlcnZpY2VSZXF1ZXN0UGFnZV09XCJpc0Zyb21TZXJ2aWNlUmVxdWVzdFBhZ2VcIiBbTE9HR0VESU5VU0VSUk9MRVNdPVwiTE9HR0VESU5VU0VSUk9MRVNcIiAqbmdJZj1cInZpZXdOYW1lID09PSAnY2FzZS10cmFuc2FjdGlvbnMnXCI+PC9jY3BheS1jYXNlLXRyYW5zYWN0aW9ucz5cbiAgICA8YXBwLW1hcmstdW5pZGVudGlmaWVkLXBheW1lbnQgKm5nSWY9XCJ2aWV3TmFtZSA9PT0gJ3VuaWRlbnRpZmllZFBhZ2UnXCJcbiAgICBbY2FzZVR5cGVdPVwiQ0FTRVRZUEVcIj48L2FwcC1tYXJrLXVuaWRlbnRpZmllZC1wYXltZW50PlxuICAgIDxhcHAtbWFyay11bnNvbGljaXRlZC1wYXltZW50ICpuZ0lmPVwidmlld05hbWUgPT09ICd1bnNvbGljaXRlZFBhZ2UnXCJcbiAgICBbY2FzZVR5cGVdPVwiQ0FTRVRZUEVcIj48L2FwcC1tYXJrLXVuc29saWNpdGVkLXBheW1lbnQ+XG4gICAgPGFwcC1hbGxvY2F0ZS1wYXltZW50cyAqbmdJZj1cInZpZXdOYW1lID09PSAnYWxsb2NhdGUtcGF5bWVudHMnXCJcbiAgICBbaXNUdXJuT2ZmXT1cIklTVFVSTk9GRlwiXG4gICAgW2Nhc2VUeXBlXT1cIkNBU0VUWVBFXCJcbiAgICA+PC9hcHAtYWxsb2NhdGUtcGF5bWVudHM+XG4gICAgPGNjcGF5LWZlZS1zdW1tYXJ5ICpuZ0lmPVwidmlld05hbWUgPT09ICdmZWUtc3VtbWFyeSdcIlxuICAgICAgW2NjZENhc2VOdW1iZXJdPVwiQ0NEX0NBU0VfTlVNQkVSXCJcbiAgICAgIFtwYXltZW50R3JvdXBSZWZdPVwicGF5bWVudEdyb3VwUmVmZXJlbmNlXCJcbiAgICAgIFtpc1R1cm5PZmZdPVwiSVNUVVJOT0ZGXCJcbiAgICAgIFtjYXNlVHlwZV09XCJDQVNFVFlQRVwiXG4gICAgICA+PC9jY3BheS1mZWUtc3VtbWFyeT5cbiAgICA8Y2NwYXktcmVwb3J0cyAqbmdJZj1cInZpZXdOYW1lID09PSAncmVwb3J0cydcIlxuICAgIFtJU1BBWU1FTlRTVEFUVVNFTkFCTEVEXSA9IFwiSVNQQVlNRU5UU1RBVFVTRU5BQkxFRFwiXG4gICAgPjwvY2NwYXktcmVwb3J0cz5cbiAgICBgLFxuICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6ICdQQVlNRU5UX0xJQicsIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFBheW1lbnRMaWJDb21wb25lbnQpIH1dXG59KVxuXG5leHBvcnQgY2xhc3MgUGF5bWVudExpYkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgnQVBJX1JPT1QnKSBBUElfUk9PVDogc3RyaW5nO1xuICBASW5wdXQoJ0JVTEtTQ0FOX0FQSV9ST09UJykgQlVMS1NDQU5fQVBJX1JPT1Q6IHN0cmluZztcbiAgQElucHV0KCdSRUZVTkRTX0FQSV9ST09UJykgUkVGVU5EU19BUElfUk9PVDogc3RyaW5nO1xuICBASW5wdXQoJ05PVElGSUNBVElPTl9BUElfUk9PVCcpIE5PVElGSUNBVElPTl9BUElfUk9PVDogc3RyaW5nO1xuICBASW5wdXQoJ0NBUkRQQVlNRU5UUkVUVVJOVVJMJykgQ0FSRFBBWU1FTlRSRVRVUk5VUkw6IHN0cmluZztcbiAgQElucHV0KCdDQ0RfQ0FTRV9OVU1CRVInKSBDQ0RfQ0FTRV9OVU1CRVI6IHN0cmluZztcbiAgQElucHV0KCdFWENfUkVGRVJFTkNFJykgRVhDX1JFRkVSRU5DRTogc3RyaW5nO1xuICBASW5wdXQoJ1BBWU1FTlRfTUVUSE9EJykgUEFZTUVOVF9NRVRIT0Q6IHN0cmluZztcbiAgQElucHV0KCdWSUVXJykgVklFVzogc3RyaW5nO1xuICBASW5wdXQoJ1ZJRVdTRVJWSUNFJykgVklFV1NFUlZJQ0U6IHN0cmluZztcbiAgQElucHV0KCdQQVlNRU5UX0dST1VQX1JFRicpIFBBWU1FTlRfR1JPVVBfUkVGPzogc3RyaW5nO1xuICBASW5wdXQoJ1RBS0VQQVlNRU5UJykgVEFLRVBBWU1FTlQ6IGJvb2xlYW47XG4gIEBJbnB1dCgnU0VSVklDRVJFUVVFU1QnKSBTRVJWSUNFUkVRVUVTVDogc3RyaW5nO1xuICBASW5wdXQoJ0RDTl9OVU1CRVInKSBEQ05fTlVNQkVSOiBzdHJpbmc7XG4gIEBJbnB1dCgnU0VMRUNURURfT1BUSU9OJykgU0VMRUNURURfT1BUSU9OOiBzdHJpbmc7XG4gIEBJbnB1dCgnSVNCU0VOQUJMRScpIElTQlNFTkFCTEU6IEJvb2xlYW47XG4gIEBJbnB1dCgnSVNTRkVOQUJMRScpIElTU0ZFTkFCTEU6IGJvb2xlYW47XG4gIEBJbnB1dCgnSVNUVVJOT0ZGJykgSVNUVVJOT0ZGOiBib29sZWFuO1xuICBASW5wdXQoJ0NBU0VUWVBFJykgQ0FTRVRZUEU6IHN0cmluZztcbiAgQElucHV0KCdJU1BBWU1FTlRTVEFUVVNFTkFCTEVEJykgSVNQQVlNRU5UU1RBVFVTRU5BQkxFRDogYm9vbGVhbjtcbiAgQElucHV0KCdyb290VXJsJykgcm9vdFVybDogYm9vbGVhbjtcbiAgQElucHV0KCdSRUZVTkRMSVNUJykgUkVGVU5ETElTVDogc3RyaW5nO1xuICBASW5wdXQoJ1VTRVJJRCcpIFVTRVJJRDogc3RyaW5nO1xuICBASW5wdXQoJ0xPR0dFRElOVVNFUlJPTEVTJykgTE9HR0VESU5VU0VSUk9MRVM6IGFueVtdO1xuICBASW5wdXQoJ0xPR0dFRElOVVNFUkVNQUlMJykgTE9HR0VESU5VU0VSRU1BSUw6IHN0cmluZztcbiAgQElucHV0KCdpc0Zyb21TZXJ2aWNlUmVxdWVzdFBhZ2UnKSBpc0Zyb21TZXJ2aWNlUmVxdWVzdFBhZ2U6IGJvb2xlYW47XG5cbiAgcGF5bWVudE1ldGhvZDogc3RyaW5nO1xuICBic3BheW1lbnRkY246IHN0cmluZztcbiAgdW5Qcm9jZXNzZWRQYXltZW50U2VydmljZUlkOiBzdHJpbmcgPSBudWxsO1xuICBwYXltZW50R3JvdXBSZWZlcmVuY2U6IHN0cmluZztcbiAgcGF5bWVudFJlZmVyZW5jZTogc3RyaW5nO1xuICByZWZ1bmRSZWZlcmVuY2U6IHN0cmluZztcbiAgaXNGcm9tUGF5QnViYmxlOiBib29sZWFuID0gZmFsc2U7XG4gIHJlZnVuZGxpc3Rzb3VyY2U6IGFueTtcbiAgdmlld05hbWU6IHN0cmluZztcbiAgaXNUdXJuT2ZmOiBib29sZWFuO1xuICBjYXNlVHlwZTogc3RyaW5nO1xuICB1blByb2Nlc3NlZFBheW1lbnQ6IElCU1BheW1lbnRzID0gbnVsbDtcbiAgaXNSZWZ1bmRTdGF0dXNWaWV3OiBib29sZWFuO1xuICBpc1JlZGlyZWN0RnJvbUNhc2VUcmFuc2FjdGlvblBhZ2U6IHN0cmluZztcbiAgaXNDYWxsRnJvbVJlZnVuZExpc3Q6IGJvb2xlYW47XG4gIGlzRnJvbVJlZnVuZFN0YXR1c1BhZ2U6IGJvb2xlYW47XG4gIGlzY2FuY2VsQ2xpY2tlZDogYm9vbGVhbjtcbiAgaXNGcm9tUGF5bWVudERldGFpbFBhZ2U6IGJvb2xlYW47XG4gIHBiYVBheU9yZGVyUmVmOiBJUGF5bWVudDtcbiAgaXNUYWtlUGF5bWVudDogYm9vbGVhbjtcblxuICBvcmRlckRldGFpbDogYW55W107XG4gIG9yZGVyUmVmOiBzdHJpbmc7XG4gIG9yZGVyU3RhdHVzOiBzdHJpbmc7XG4gIG9yZGVyUGFydHk6IHN0cmluZztcbiAgb3JkZXJDcmVhdGVkOiBEYXRlO1xuICBvcmRlckNDREV2ZW50OiBzdHJpbmc7XG4gIHNlcnZpY2VSZXF1ZXN0VmFsdWU6IHN0cmluZztcbiAgb3JkZXJBZGRCdG5FbmFibGU6IGJvb2xlYW47XG4gIG9yZGVyRmVlc1RvdGFsOiBudW1iZXIgPSAwLjAwO1xuICBvcmRlclJlbWlzc2lvblRvdGFsOiBudW1iZXIgPSAwLjAwO1xuICBvcmRlclRvdGFsUGF5bWVudHM6IG51bWJlciA9IDAuMDA7XG4gIG9yZGVyUGVuZGluZ1BheW1lbnRzOiBudW1iZXIgPSAwLjAwO1xuXG4gIHBheW1lbnRHcm91cDpJUGF5bWVudEdyb3VwXG4gIG92ZXJQYXltZW50QW1vdW50OiBudW1iZXIgPSAwLjAwO1xuICByZWZ1bmRzOiBJUmVmdW5kTGlzdFtdO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcGF5bWVudExpYlNlcnZpY2U6IFBheW1lbnRMaWJTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgT3JkZXJzbGlzdFNlcnZpY2U6IE9yZGVyc2xpc3RTZXJ2aWNlKSB7IH1cbiAgbmdBZnRlckNvbnRlbnRDaGVja2VkKCk6IHZvaWQge1xuICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cblxuICBuZ09uSW5pdCgpIHtcblxuICAgIHRoaXMucGF5bWVudExpYlNlcnZpY2Uuc2V0QXBpUm9vdFVybCh0aGlzLkFQSV9ST09UKTtcbiAgICB0aGlzLnBheW1lbnRMaWJTZXJ2aWNlLnNldEJ1bGtTY2FuQXBpUm9vdFVybCh0aGlzLkJVTEtTQ0FOX0FQSV9ST09UKTtcbiAgICB0aGlzLnBheW1lbnRMaWJTZXJ2aWNlLnNldFJlZnVuZG5kc0FwaVJvb3RVcmwodGhpcy5SRUZVTkRTX0FQSV9ST09UKTtcbiAgICB0aGlzLnBheW1lbnRMaWJTZXJ2aWNlLnNldE5vdGljYXRpb25BcGlSb290VXJsKHRoaXMuTk9USUZJQ0FUSU9OX0FQSV9ST09UKTtcbiAgICB0aGlzLnBheW1lbnRMaWJTZXJ2aWNlLnNldENhcmRQYXltZW50UmV0dXJuVXJsKHRoaXMuQ0FSRFBBWU1FTlRSRVRVUk5VUkwpO1xuXG4gICAgaWYgKHRoaXMuTE9HR0VESU5VU0VSUk9MRVMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5PcmRlcnNsaXN0U2VydmljZS5zZXRVc2VyUm9sZXNMaXN0KHRoaXMuTE9HR0VESU5VU0VSUk9MRVMpO1xuICAgIH1cbiAgICBpZiAodGhpcy5QQVlNRU5UX0dST1VQX1JFRikge1xuICAgICAgdGhpcy5wYXltZW50R3JvdXBSZWZlcmVuY2UgPSB0aGlzLlBBWU1FTlRfR1JPVVBfUkVGO1xuICAgIH1cbiAgICBpZiAodGhpcy5EQ05fTlVNQkVSKSB7XG4gICAgICB0aGlzLmJzcGF5bWVudGRjbiA9IHRoaXMuRENOX05VTUJFUjtcbiAgICB9XG4gICAgaWYgKHRoaXMuUkVGVU5ETElTVCA9PT0gXCJ0cnVlXCIpIHtcbiAgICAgIHRoaXMuVklFVyA9ICdyZWZ1bmQtbGlzdCc7XG4gICAgICB0aGlzLnZpZXdOYW1lID0gdGhpcy5WSUVXO1xuICAgIH1cbiAgICBpZiAodGhpcy5WSUVXID09PSAnZmVlLXN1bW1hcnknKSB7XG4gICAgICB0aGlzLnZpZXdOYW1lID0gJ2ZlZS1zdW1tYXJ5JztcbiAgICB9IGVsc2UgaWYgKHRoaXMuVklFVyAhPT0gJ3JlcG9ydHMnICYmIHRoaXMuVklFVyAhPT0gJ3JlZnVuZC1saXN0Jykge1xuICAgICAgdGhpcy52aWV3TmFtZSA9ICdjYXNlLXRyYW5zYWN0aW9ucyc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudmlld05hbWUgPSB0aGlzLlZJRVc7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNUYWtlUGF5bWVudCkge1xuICAgICAgdGhpcy5UQUtFUEFZTUVOVCA9IHRydWU7XG4gICAgfVxuICAgIGlmICh0aGlzLkFQSV9ST09UID09ICdhcGkvcGF5bWVudC1oaXN0b3J5Jykge1xuICAgICAgdGhpcy5pc0Zyb21QYXlCdWJibGUgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG5cbiAgLyoqXG4gICAqIEFkZHMgYSByZW1pc3Npb24gdG8gdGhlIHBheW1lbnQgZ3JvdXAgdXNpbmcgZGF0YSBmcm9tIHRoZSBwcm92aWRlZCBmb3JtIGdyb3VwLlxuICAgKlxuICAgKiBUaGlzIG1ldGhvZCBjaGVja3MgaWYgdGhlIGBwYXltZW50R3JvdXBgIGlzIG5vdCBudWxsIGJlZm9yZSBhdHRlbXB0aW5nIHRvIGFkZCB0aGUgcmVtaXNzaW9uLlxuICAgKiBJZiB0aGUgYHBheW1lbnRHcm91cGAgZXhpc3RzLCBhIG5ldyByZW1pc3Npb24gaXMgY3JlYXRlZCB1c2luZyB0aGUgdmFsdWVzIGZyb20gdGhlIHByb3ZpZGVkXG4gICAqIGZvcm0gZ3JvdXAgKGBjdXJyZW50UmVtaXNzaW9uRm9ybUdyb3VwYCksIGFuZCBpdCBpcyBwdXNoZWQgaW50byB0aGUgYHJlbWlzc2lvbnNgIGFycmF5IG9mIHRoZSBwYXltZW50IGdyb3VwLlxuICAgKlxuICAgKiBAcGFyYW0ge0FkZFJldHJvUmVtaXNzaW9uUmVxdWVzdH0gY3VycmVudFJlbWlzc2lvbkZvcm1Hcm91cCAtIFRoZSBmb3JtIGdyb3VwIGNvbnRhaW5pbmcgcmVtaXNzaW9uIGRhdGFcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZS5nLiwgYGh3Zl9hbW91bnRgLCBgaHdmX3JlZmVyZW5jZWApLlxuICAgKi9cbiAgYWRkUmVtaXNzaW9uKGN1cnJlbnRSZW1pc3Npb25Gb3JtR3JvdXA6IEFkZFJldHJvUmVtaXNzaW9uUmVxdWVzdCkge1xuXG4gICAgaWYgKHRoaXMucGF5bWVudEdyb3VwICE9IG51bGwpIHtcblxuICAgICAgY29uc3QgcmVtaXNzaW9uOiBJUmVtaXNzaW9uID0ge1xuXG4gICAgICAgIHJlbWlzc2lvbl9yZWZlcmVuY2U6IG51bGwsXG4gICAgICAgIGh3Zl9yZWZlcmVuY2U6IGN1cnJlbnRSZW1pc3Npb25Gb3JtR3JvdXAuaHdmX3JlZmVyZW5jZSxcbiAgICAgICAgaHdmX2Ftb3VudDogY3VycmVudFJlbWlzc2lvbkZvcm1Hcm91cC5od2ZfYW1vdW50LFxuICAgICAgICBiZW5lZmljaWFyeV9uYW1lOiBudWxsLFxuICAgICAgICBjY2RfY2FzZV9udW1iZXI6IG51bGwsXG4gICAgICAgIGZlZV9jb2RlOiBudWxsLFxuICAgICAgICBkYXRlX2NyZWF0ZWQ6IG51bGwsXG4gICAgICAgIGZlZV9pZDogbnVsbCxcbiAgICAgICAgaXNzdWVfcmVmdW5kX2FkZF9yZWZ1bmRfYWRkX3JlbWlzc2lvbjogZmFsc2UsXG4gICAgICAgIGFkZF9yZWZ1bmQ6IGZhbHNlLFxuICAgICAgICBvdmVyYWxsX2JhbGFuY2U6Y3VycmVudFJlbWlzc2lvbkZvcm1Hcm91cC5od2ZfYW1vdW50LFxuICAgICAgICBhY29sbGVjdGlvbl9vZl9mZXNzOiB0cnVlXG4gICAgICB9O1xuICAgICAgdGhpcy5wYXltZW50R3JvdXAucmVtaXNzaW9ucy5wdXNoKHJlbWlzc2lvbik7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgbWV0aG9kIGlzIHVzZWQgdG8gc2V0IHRoZSBwYXltZW50R3JvdXAgZm9yIHRoZSBhZGQgcmVtaXNzaW9uIGpvdXJuZXkuXG4gICAqIEBwYXJhbSB1cGRhdGVkUGF5bWVudEdyb3VwIHRoaXMgaXMgYW4gdXBkYXRlZCBwYXltZW50R3JvdXAgdmVyc2lvbi5cbiAgICovXG4gIGFkZFBheW1lbnRHcm91cCh1cGRhdGVkUGF5bWVudEdyb3VwOklQYXltZW50R3JvdXApe1xuICAgIGlmICh0aGlzLnBheW1lbnRHcm91cCA9PSBudWxsKXtcbiAgICAgICAgdGhpcy5wYXltZW50R3JvdXAgPSB1cGRhdGVkUGF5bWVudEdyb3VwO1xuICAgIH1cbiAgfVxuXG5cbiAgLyoqXG4gICAqIENhbGN1bGF0ZXMgdGhlIHRvdGFsIHJlbWlzc2lvbiBhbW91bnQgZm9yIHRoZSBjdXJyZW50IHBheW1lbnQgZ3JvdXAuXG4gICAqXG4gICAqIFRoaXMgbWV0aG9kIGNoZWNrcyBpZiB0aGUgcGF5bWVudCBncm91cCBjb250YWlucyBhbnkgcmVtaXNzaW9ucyBhbmQsIGlmIHNvLFxuICAgKiBzdW1zIHVwIHRoZSBgaHdmX2Ftb3VudGAgb2YgYWxsIHJlbWlzc2lvbnMgdXNpbmcgdGhlIGByZWR1Y2UoKWAgbWV0aG9kLlxuICAgKiBJZiBubyByZW1pc3Npb25zIGFyZSBmb3VuZCwgaXQgcmV0dXJucyBhIGRlZmF1bHQgdmFsdWUgb2YgMC5cbiAgICpcbiAgICogQHJldHVybnMge251bWJlcn0gVGhlIHRvdGFsIHJlbWlzc2lvbiBhbW91bnQsIG9yIDAgaWYgbm8gcmVtaXNzaW9ucyBhcmUgcHJlc2VudC5cbiAgICovXG5cbiAgZ2V0VG90YWxSZW1pc3Npb24oKTogbnVtYmVyIHtcbiAgICBsZXQgcmVtaXNzaW9uVG90YWwgPSAwO1xuICAgIGlmICh0aGlzLnBheW1lbnRHcm91cC5yZW1pc3Npb25zKSB7XG4gICAgICByZW1pc3Npb25Ub3RhbCA9IHRoaXMucGF5bWVudEdyb3VwLnJlbWlzc2lvbnMucmVkdWNlKCh0b3RhbFJlbWlzc2lvbiwgcmVtaXNzaW9uKSA9PiB0b3RhbFJlbWlzc2lvbiArIHJlbWlzc2lvbi5od2ZfYW1vdW50LCAwKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlbWlzc2lvblRvdGFsO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGN1bGF0ZXMgdGhlIHRvdGFsIGZlZSBhbW91bnQgZm9yIHRoZSBjdXJyZW50IHBheW1lbnQgZ3JvdXAuXG4gICAqXG4gICAqIFRoaXMgbWV0aG9kIGNoZWNrcyBpZiB0aGUgcGF5bWVudCBncm91cCBjb250YWlucyBhbnkgZmVlcyBhbmQsIGlmIHNvLFxuICAgKiBzdW1zIHVwIHRoZSBgY2FsY3VsYXRlZF9hbW91bnRgIG9mIGFsbCBmZWVzIHVzaW5nIHRoZSBgcmVkdWNlKClgIG1ldGhvZC5cbiAgICogSWYgbm8gZmVlcyBhcmUgZm91bmQsIGl0IHJldHVybnMgYSBkZWZhdWx0IHZhbHVlIG9mIDAuXG4gICAqXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9IFRoZSB0b3RhbCBmZWUgYW1vdW50LCBvciAwIGlmIG5vIGZlZXMgYXJlIHByZXNlbnQuXG4gICAqL1xuICBnZXRUb3RhbEZlZXMoKTogbnVtYmVyIHtcbiAgICBsZXQgZmVlc1RvdGFsID0gMDtcbiAgICBpZiAodGhpcy5wYXltZW50R3JvdXAuZmVlcykge1xuICAgICAgZmVlc1RvdGFsID0gdGhpcy5wYXltZW50R3JvdXAuZmVlcy5yZWR1Y2UoKHRvdGFsRmVlcywgZmVlKSA9PiB0b3RhbEZlZXMgKyBmZWUuY2FsY3VsYXRlZF9hbW91bnQsIDApO1xuICAgIH1cbiAgICByZXR1cm4gZmVlc1RvdGFsO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGN1bGF0ZXMgdGhlIHRvdGFsIHBheW1lbnQgYW1vdW50IGZvciB0aGUgY3VycmVudCBwYXltZW50IGdyb3VwLlxuICAgKlxuICAgKiBUaGlzIG1ldGhvZCBjaGVja3MgaWYgdGhlIHBheW1lbnQgZ3JvdXAgY29udGFpbnMgYW55IHBheW1lbnRzIGFuZCwgaWYgc28sXG4gICAqIHN1bXMgdXAgdGhlIGBhbW91bnRgIG9mIGFsbCBwYXltZW50cyB1c2luZyB0aGUgYHJlZHVjZSgpYCBtZXRob2QuXG4gICAqIElmIG5vIHBheW1lbnRzIGFyZSBmb3VuZCwgaXQgcmV0dXJucyBhIGRlZmF1bHQgdmFsdWUgb2YgMC5cbiAgICpcbiAgICogQHJldHVybnMge251bWJlcn0gVGhlIHRvdGFsIHBheW1lbnQgYW1vdW50LCBvciAwIGlmIG5vIHBheW1lbnRzIGFyZSBwcmVzZW50LlxuICAgKi9cbiAgZ2V0VG90YWxQYXltZW50cygpOiBudW1iZXIge1xuICAgIGxldCBwYXltZW50c1RvdGFsID0gMDtcbiAgICBpZiAodGhpcy5wYXltZW50R3JvdXAucGF5bWVudHMpIHtcbiAgICAgIHBheW1lbnRzVG90YWwgPSB0aGlzLnBheW1lbnRHcm91cC5wYXltZW50cy5yZWR1Y2UoKHRvdGFsRmVlcywgcGF5bWVudCkgPT4gdG90YWxGZWVzICsgcGF5bWVudC5hbW91bnQsIDApO1xuICAgIH1cbiAgICByZXR1cm4gcGF5bWVudHNUb3RhbDtcbiAgfVxuXG5cbiAgLy8gUmVmdW5kcyBsaWJzIHNlY3Rpb24uXG5cbiAgLyoqXG4gICAqIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBmaW5kIG91dCBpZiB0aGUgY3VycmVudCByZWZ1bmRzIGxpc3QgYXJlIGluIHByb2dyZXNzIGZvciB0aGUgZmVlIHBhc3NlZCBhcyBwYXJhbWV0ZXJcbiAgICogQHBhcmFtIGZlZSB0aGlzIGlzIHRoZSBmZWUgdXNlZCB0byBmaW5kIG91dCBpZiB0aGUgcmVmdW5kcyBhcmUgaW4gcHJvZ3Jlc3MuXG4gICAqL1xuICBpc1RoZUN1cnJlbnRSZWZ1bmRJblByb2Nlc3NGb3JUaGlzRmVlKGZlZTogSUZlZSk6IGJvb2xlYW57XG4gICAgLy8gTm8gcmVmdW5kc1xuICAgIGlmICh0aGlzLnJlZnVuZHMgPT0gbnVsbCB8fCB0aGlzLnJlZnVuZHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiAhdGhpcy5pc1RoZUN1cnJlbnRSZWZ1bmRSZWplY3RlZEZvclRoZUZlZShmZWUuaWQudG9TdHJpbmcoKSk7XG4gIH1cblxuICAvKipcbiAgICogVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGZpbmQgb3V0IGlmIGluIGN1cnJlbnQgbGlzdCBvZiByZWZ1bmRzIGFsbCByZWZ1bmRzIGhhcyBiZWVuIHJlamVjdGVkXG4gICAqIGZvciB0aGUgZmVlIHBhc3NlZCBhcyBwYXJhbWV0ZXIuXG4gICAqIEBwYXJhbSBmZWVDb2RlIHRoaXMgaXMgdGhlIGZlZSBjb2RlIHVzZWQgdG8gZmluZCBvdXQgYWxsIHJlZnVuZHMgcmVqZWN0ZWQgcmVmdW5kcy5cbiAgICovXG4gIGlzVGhlQ3VycmVudFJlZnVuZFJlamVjdGVkRm9yVGhlRmVlKGZlZUNvZGU6IHN0cmluZyk6IGJvb2xlYW4ge1xuXG4gICAgbGV0IHJlZnVuZHNCeUZlZSA9IHRoaXMucmVmdW5kcy5maWx0ZXIocmVmdW5kID0+IHJlZnVuZC5mZWVfaWRzID09PSBmZWVDb2RlKTtcbiAgICBsZXQgcmVmdW5kc0J5RmVlQW5kUmVqZWN0ZWQgPSB0aGlzLnJlZnVuZHMuZmlsdGVyKHJlZnVuZCA9PiByZWZ1bmQucmVmdW5kX3N0YXR1cy5uYW1lID09PSAnUmVqZWN0ZWQnKTtcblxuICAgIC8vIFJlZnVuZHMgPiAwICBhbmQgb3ZlclBheW1lbnQgLS0+IHJlZnVuZHMgaW4gcHJvY2VzcyBvciBSZWplY3RlZC5cbiAgICBpZiAocmVmdW5kc0J5RmVlLmxlbmd0aCA9PT0gcmVmdW5kc0J5RmVlQW5kUmVqZWN0ZWQubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbn1cblxuXG5cbiJdfQ==