simpo-component-library 3.2.71 → 3.2.73

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.
Files changed (26) hide show
  1. package/esm2022/lib/ecommerce/sections/address/address.component.mjs +3 -3
  2. package/esm2022/lib/ecommerce/sections/authentication-required/authentication-required.component.mjs +34 -87
  3. package/esm2022/lib/ecommerce/sections/cart/cart.component.mjs +20 -25
  4. package/esm2022/lib/ecommerce/sections/category-product/category-product.component.mjs +2 -2
  5. package/esm2022/lib/ecommerce/sections/whislist/whislist.component.mjs +3 -3
  6. package/esm2022/lib/sections/header-section/header-section.component.mjs +7 -24
  7. package/esm2022/lib/sections/registration-form/registration-form.component.mjs +3 -3
  8. package/esm2022/lib/services/rest.service.mjs +9 -8
  9. package/esm2022/lib/tokens/api-token.mjs +2 -1
  10. package/fesm2022/simpo-component-library.mjs +594 -661
  11. package/fesm2022/simpo-component-library.mjs.map +1 -1
  12. package/lib/components/input-fields/input-fields.component.d.ts +1 -1
  13. package/lib/directive/background-directive.d.ts +1 -1
  14. package/lib/directive/button-directive.directive.d.ts +1 -1
  15. package/lib/directive/color.directive.d.ts +1 -1
  16. package/lib/ecommerce/sections/authentication-required/authentication-required.component.d.ts +6 -21
  17. package/lib/ecommerce/sections/cart/cart.component.d.ts +3 -4
  18. package/lib/sections/header-section/header-section.component.d.ts +0 -1
  19. package/lib/sections/pricing-section/pricing-section.component.d.ts +1 -1
  20. package/lib/services/rest.service.d.ts +1 -2
  21. package/lib/tokens/api-token.d.ts +1 -0
  22. package/package.json +1 -1
  23. package/simpo-component-library-3.2.73.tgz +0 -0
  24. package/esm2022/lib/ecommerce/sections/authentication-required/authentication-required.model.mjs +0 -2
  25. package/lib/ecommerce/sections/authentication-required/authentication-required.model.d.ts +0 -15
  26. package/simpo-component-library-3.2.71.tgz +0 -0
@@ -205,7 +205,7 @@ export class RegistrationFormComponent extends BaseSection {
205
205
  }
206
206
  createRegistration() {
207
207
  // this.payload['returnUrl'] = `https://cmis.tejsoft.com/verify-payment/?url=true&type=REGISTRATION&bId=${this.businessId}` //production
208
- this.payload['returnUrl'] = `https://dev.cmis.tejsoft.com/verify-payment/?url=true&type=REGISTRATION&bId=${this.businessId}`; //dev
208
+ this.payload['returnUrl'] = `https://stage-portal.cmis.ac.in/verify-payment/?url=true&type=REGISTRATION&bId=${this.businessId}`; //dev
209
209
  // this.payload['returnUrl'] = `https://stage.cmis.tejsoft.com/verify-payment/?url=true&type=REGISTRATION&bId=${this.businessId}` //stage
210
210
  this.registrationSubscription = this.restService.createRegistrationForPayment(this.payload).subscribe((res) => {
211
211
  // this.snackBar.open('Registration created successfully', 'close', {duration: 2000});
@@ -219,7 +219,7 @@ export class RegistrationFormComponent extends BaseSection {
219
219
  }
220
220
  this.payload.studentFeeStructure['paymentPlanType'] = this.payload.paymentPlanType;
221
221
  // this.payload['returnUrl'] = `https://cmis.tejsoft.com/verify-payment/?url=true&type=ADMISSION&bId=${this.businessId}`; //production
222
- this.payload['returnUrl'] = `https://dev.cmis.tejsoft.com/verify-payment/?url=true&type=ADMISSION&bId=${this.businessId}`; //dev
222
+ this.payload['returnUrl'] = `https://stage-portal.cmis.ac.in/verify-payment/?url=true&type=ADMISSION&bId=${this.businessId}`; //dev
223
223
  // this.payload['returnUrl'] = `https://stage.cmis.tejsoft.com/verify-payment/?url=true&type=ADMISSION&bId=${this.businessId}`; //stage
224
224
  if (this.backupDocFile) {
225
225
  let imageData = await this.imageUploadService.uploadFileInAzure(this.backupDocFile);
@@ -427,4 +427,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImpor
427
427
  }], nextComponentColor: [{
428
428
  type: Input
429
429
  }] } });
430
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0cmF0aW9uLWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9zZWN0aW9ucy9yZWdpc3RyYXRpb24tZm9ybS9yZWdpc3RyYXRpb24tZm9ybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL3NlY3Rpb25zL3JlZ2lzdHJhdGlvbi1mb3JtL3JlZ2lzdHJhdGlvbi1mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxRQUFRLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBRTlDLE9BQU8sRUFBRSxTQUFTLEVBQWMsS0FBSyxFQUFnQyxNQUFNLGVBQWUsQ0FBQztBQUMzRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUUzRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM5RCxPQUFPLEVBQWEsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFFMUYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDekUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDM0UsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDNUUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDekYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQzdGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNuRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUNyRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDekUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDcEYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDckUsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0scURBQXFELENBQUM7QUFDdkcsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0scURBQXFELENBQUM7QUFFdkcsT0FBTyxXQUFXLE1BQU0sZ0JBQWdCLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSzdDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXNDdkQsTUFBTSxPQUFPLHlCQUEwQixTQUFRLFdBQVc7SUFReEQsWUFBb0IsV0FBd0IsRUFDbEMsUUFBcUIsRUFDckIsYUFBNkIsRUFDN0IsTUFBc0IsRUFDdkIsRUFBZ0IsRUFDaEIsa0JBQXNDO1FBRTdDLEtBQUssRUFBRSxDQUFDO1FBUFUsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDbEMsYUFBUSxHQUFSLFFBQVEsQ0FBYTtRQUNyQixrQkFBYSxHQUFiLGFBQWEsQ0FBZ0I7UUFDN0IsV0FBTSxHQUFOLE1BQU0sQ0FBZ0I7UUFDdkIsT0FBRSxHQUFGLEVBQUUsQ0FBYztRQUNoQix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBSy9DLFdBQU0sR0FBRyxNQUFNLENBQUM7UUFDaEIsWUFBTyxHQUFRO1lBQ2IsaUJBQWlCLEVBQUU7Z0JBQ2pCLElBQUksRUFBRSxZQUFZLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLFlBQVksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDO2dCQUN2RSxNQUFNLEVBQUUsWUFBWSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxZQUFZLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQzthQUM5RTtZQUNELFlBQVksRUFBRSxFQUFFO1lBQ2hCLFFBQVEsRUFBRSxFQUFFO1lBQ1osV0FBVyxFQUFFLEVBQUU7WUFDZixxQkFBcUIsRUFBRSxLQUFLO1lBQzVCLFdBQVcsRUFBRyxFQUFFO1lBQ2hCLGlCQUFpQixFQUFHLFVBQVU7U0FDL0IsQ0FBQTtRQUdELGNBQVMsR0FBUSxFQUFFLENBQUE7UUFJbkIsaUJBQVksR0FBVSxFQUFFLENBQUM7UUFDekIsZUFBVSxHQUFXLEVBQUUsQ0FBQTtRQUN2QixvQkFBZSxHQUFRLEVBQUUsQ0FBQTtRQTJUekIsc0JBQWlCLEdBQVUsRUFBRSxDQUFBO1FBQzdCLG9CQUFlLEdBQVUsRUFBRSxDQUFDO0lBblY1QixDQUFDO0lBMEJELFFBQVE7UUFDTixJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFVLEVBQUUsRUFBRTtZQUMvQyxJQUFHLEtBQUssQ0FBQyxLQUFLLENBQUM7Z0JBQ2IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7WUFFM0MsSUFBRyxLQUFLLENBQUMsS0FBSyxDQUFDO2dCQUNiLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7WUFFaEQsSUFBRyxLQUFLLENBQUMsS0FBSyxDQUFDO2dCQUNiLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBRWpDLElBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztnQkFDYixJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUU1QyxJQUFJLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztZQUVsRCxJQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7Z0JBQy9ELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztZQUNoRixDQUFDO2lCQUFNLENBQUM7Z0JBQ04sSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3RCLENBQUM7WUFFRCxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUU1QixDQUFDLENBQUMsQ0FBQTtRQUVGLHVGQUF1RjtRQUV2RixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUM7SUFDbEMsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsMkJBQTJCLEVBQUUsV0FBVyxFQUFFLENBQUM7SUFDbEQsQ0FBQztJQUVELFdBQVcsQ0FBQyxXQUFtQjtRQUM3QixNQUFNLFVBQVUsR0FBRyxRQUFRLENBQUM7WUFDMUIsYUFBYSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsV0FBVyxLQUFLLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFDLEVBQUUsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFDLENBQUM7WUFDMUwsU0FBUyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLFdBQVcsS0FBSyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxXQUFXLEtBQUssa0JBQWtCLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDO1NBQ2hPLENBQUMsQ0FBQTtRQUVGLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFXLEVBQUUsRUFBRTtZQUNuQyxJQUFJLGFBQWEsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLFdBQVcsS0FBSyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNsSSxJQUFJLFNBQVMsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQztZQUV0QyxJQUFJLENBQUMsVUFBVSxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUE7WUFFdEMsZ0NBQWdDO1lBQ2hDLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQy9CLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1lBQ2xELElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUE7WUFFMUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUMvQixLQUFJLElBQUksU0FBUyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsV0FBVyxLQUFLLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsRUFBRSxTQUFTLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxFQUFFLFVBQVUsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDO2dCQUMxSSxJQUFHLFNBQVMsQ0FBQyxTQUFTLEtBQUssZUFBZSxFQUFFLENBQUM7b0JBQzNDLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxTQUFTLENBQUMsVUFBVSxDQUFDO2dCQUNuRCxDQUFDO2dCQUNELElBQUcsU0FBUyxDQUFDLElBQUksSUFBSSxJQUFJLEVBQUUsQ0FBQztvQkFDMUIsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxTQUFTLENBQUMsVUFBVSxDQUFDO2dCQUNuRSxDQUFDO2dCQUNELElBQUksRUFBRSxHQUFHLFNBQVMsQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDLGNBQWMsQ0FBQztnQkFDeEQsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxVQUFVLENBQUM7WUFDdkQsQ0FBQztZQUVELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDckUsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7WUFFdEQsS0FBSSxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztnQkFDakQsS0FBSSxJQUFJLEtBQUssSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDO29CQUNuRCxLQUFJLElBQUksS0FBSyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQzt3QkFDN0MsSUFBRyxLQUFLLENBQUMsSUFBSSxJQUFJLElBQUksRUFBRSxDQUFDOzRCQUN0QixLQUFLLENBQUMsVUFBVSxHQUFHLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7d0JBQzNELENBQUM7NkJBQU0sQ0FBQzs0QkFDTixLQUFLLENBQUMsVUFBVSxHQUFHLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxLQUFLLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQyxDQUFDO3dCQUN6RSxDQUFDO3dCQUVELElBQUcsS0FBSyxFQUFFLElBQUksS0FBSyxPQUFPOzRCQUN4QixJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQzt3QkFFN0UsSUFBRyxLQUFLLENBQUMsUUFBUSxLQUFLLFVBQVUsRUFBRSxDQUFDOzRCQUNqQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUM7d0JBQ2xDLENBQUM7b0JBQ0gsQ0FBQztnQkFDSCxDQUFDO1lBQ0gsQ0FBQztZQUVELElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN6QixDQUFDLENBQUMsQ0FBQTtJQUVKLENBQUM7SUFFRCxXQUFXLENBQUMsU0FBZ0IsRUFBRSxTQUFjO1FBQzFDLEtBQUksSUFBSSxLQUFLLElBQUksU0FBUyxFQUFFLENBQUM7WUFDM0IsSUFBRyxLQUFLLENBQUMsSUFBSSxLQUFLLFNBQVMsRUFBQyxDQUFDO2dCQUMzQixJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ2hDLE1BQU07WUFDUixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxLQUFVO1FBQzVCLElBQUcsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2YsS0FBSSxJQUFJLFVBQVUsSUFBSSxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ2xDLElBQUcsS0FBSyxDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7b0JBQ2hELFVBQVUsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO2dCQUM1QixDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7YUFDSSxDQUFDO1lBQ0osS0FBSSxJQUFJLFVBQVUsSUFBSSxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO2dCQUNyRSxJQUFHLEtBQUssQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO29CQUMvQyxVQUFVLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztnQkFDNUIsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUdELFlBQVk7UUFDVixJQUFJLENBQUMsV0FBVyxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxXQUFXLEtBQUssa0JBQWtCLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsV0FBVyxLQUFLLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO1lBQzFPLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3BFLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3pELENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVELGtCQUFrQjtRQUNoQixNQUFNLE9BQU8sR0FBRztZQUNkLFlBQVksRUFBRSxJQUFJLENBQUMsVUFBVTtZQUM3QixRQUFRLEVBQUUsRUFBRTtZQUNaLFdBQVcsRUFBRSxFQUFFO1lBQ2YsUUFBUSxFQUFFLElBQUk7WUFDZCxXQUFXLEVBQUUsS0FBSztTQUNuQixDQUFBO1FBRUQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUU7WUFDOUQsSUFBSSxDQUFDLFlBQVksR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztRQUNwQyxDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFHRCxnQkFBZ0I7UUFDZCxJQUFJLENBQUMsMkJBQTJCLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRTtZQUM1RixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDdEIsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0lBSUQsS0FBSyxDQUFDLFVBQVU7UUFDZCxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUN2RCxJQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLE1BQU0sSUFBSSxDQUFDO1lBQ3BDLE9BQU87UUFFVCxJQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNqQixJQUFJLFNBQVMsR0FBUSxNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDcEYsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQTtRQUNyQyxDQUFDO1FBRUQsSUFBSSxDQUFDLElBQUksRUFBRSxXQUFXLEtBQUssa0JBQWtCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDckcsQ0FBQztJQUdELGtCQUFrQjtRQUNoQix3SUFBd0k7UUFDeEksSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsR0FBRywrRUFBK0UsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFBLENBQUMsS0FBSztRQUNsSSx5SUFBeUk7UUFDekksSUFBSSxDQUFDLHdCQUF3QixHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsNEJBQTRCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO1lBQ2pILHNGQUFzRjtZQUN0RixJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBQyxRQUFRLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBQyxjQUFjLEVBQUMsQ0FBQyxDQUFDO1FBQ3JGLENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVELEtBQUssQ0FBQyxlQUFlO1FBQ25CLElBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLEtBQUssTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxlQUFlLEVBQUUsTUFBTSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBQyxDQUFDO1lBQ3BILElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUM7WUFDekMsT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLENBQUMsT0FBTyxDQUFDLG1CQUFtQixDQUFDLGlCQUFpQixDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUM7UUFDbkYsc0lBQXNJO1FBQ3RJLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLEdBQUcsNEVBQTRFLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLEtBQUs7UUFDaEksdUlBQXVJO1FBRXZJLElBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3RCLElBQUksU0FBUyxHQUFRLE1BQU0sSUFBSSxDQUFDLGtCQUFrQixDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUN6RixJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFBO1FBQ3hDLENBQUM7UUFFRCxLQUFJLElBQUksUUFBUSxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN0QyxJQUFHLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDakIsSUFBSSxTQUFTLEdBQVEsTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUVwRixJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDLElBQUksQ0FDNUI7b0JBQ0UsSUFBSSxFQUFFLFFBQVEsQ0FBQyxXQUFXO29CQUMxQixHQUFHLEVBQUUsU0FBUyxDQUFDLEdBQUc7b0JBQ2xCLE9BQU8sRUFBRSxRQUFRLENBQUMsSUFBSTtvQkFDdEIsY0FBYyxFQUFFLFFBQVEsQ0FBQyxJQUFJO2lCQUM5QixDQUNGLENBQUE7WUFDSCxDQUFDO1FBQ0gsQ0FBQztRQUVELElBQUksQ0FBQyx3QkFBd0IsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLHlCQUF5QixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRTtZQUM5RyxtRkFBbUY7WUFDbkYsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEVBQUMsUUFBUSxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUMsV0FBVyxFQUFDLENBQUMsQ0FBQztRQUNsRixDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRCxxQkFBcUI7UUFDbkIsSUFBSSxTQUFTLEdBQVUsRUFBRSxDQUFDO1FBRTFCLEtBQUksSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7WUFDakQsS0FBSSxJQUFJLEtBQUssSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUVuRCxJQUFHLEtBQUssSUFBSSxnQkFBZ0IsSUFBSSxJQUFJLENBQUMsZUFBZSxJQUFJLGVBQWU7b0JBQ3JFLFNBQVM7Z0JBRVgsS0FBSSxJQUFJLEtBQUssSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7b0JBQzdDLElBQUcsS0FBSyxDQUFDLFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLElBQUksS0FBSyxDQUFDLFFBQVEsSUFBSSxVQUFVLEVBQUUsQ0FBQzt3QkFDdkUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEtBQUssQ0FBQyxVQUFVLEVBQUUsRUFBRSxPQUFPLEVBQUUsRUFBQyxRQUFRLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQzt3QkFDbEYsT0FBTyxFQUFFLENBQUM7b0JBQ1osQ0FBQztvQkFFRCxJQUFJLGFBQWEsR0FBVSxFQUFFLENBQUM7b0JBQzlCLElBQUcsS0FBSyxDQUFDLFFBQVEsS0FBSyxVQUFVLEVBQUUsQ0FBQzt3QkFDakMsYUFBYSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQzt3QkFFN0MsSUFBRyxhQUFhLENBQUMsTUFBTSxJQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsUUFBUSxFQUFDLENBQUM7NEJBQy9DLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGdCQUFnQixLQUFLLENBQUMsVUFBVSxFQUFFLEVBQUUsT0FBTyxFQUFFLEVBQUMsUUFBUSxFQUFFLElBQUksRUFBQyxDQUFDLENBQUM7NEJBQ2xGLE9BQU8sRUFBRSxDQUFDO3dCQUNaLENBQUM7b0JBQ0gsQ0FBQztvQkFFRCxTQUFTLENBQUMsSUFBSSxDQUFDO3dCQUNiLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTzt3QkFDdEIsU0FBUyxFQUFFLEtBQUssQ0FBQyxVQUFVO3dCQUMzQixVQUFVLEVBQUUsS0FBSyxDQUFDLFFBQVEsS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLGFBQWE7d0JBQzVFLFlBQVksRUFBRSxLQUFLLENBQUMsWUFBWTt3QkFDaEMsY0FBYyxFQUFFLEtBQUs7d0JBQ3JCLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVzt3QkFDOUIsYUFBYSxFQUFFLElBQUk7d0JBQ25CLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtxQkFDakIsQ0FBQyxDQUFBO2dCQUVKLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxLQUFVO1FBQ3pCLElBQUksUUFBUSxHQUFVLEVBQUUsQ0FBQztRQUV6QixJQUFHLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNmLEtBQUksSUFBSSxVQUFVLElBQUksS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUNsQyxJQUFHLFVBQVUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztvQkFDdEIsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ2xDLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQzthQUFNLENBQUM7WUFDTixLQUFJLElBQUksVUFBVSxJQUFJLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUM7Z0JBQ3JFLElBQUcsVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFDO29CQUN0QixRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDakMsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztJQUdELG9CQUFvQixDQUFDLEVBQU87UUFDMUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUV2QyxNQUFNLE1BQU0sR0FBRyxJQUFJLFVBQVUsRUFBRSxDQUFDO1FBRWhDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxRQUFhLEVBQUUsRUFBRTtZQUNoQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztRQUMvQyxDQUFDLENBQUE7UUFFRCxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQzdELENBQUM7SUFFRCxTQUFTO1FBQ1AsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxRQUFRLEdBQUcsU0FBUyxDQUFDO0lBQzVCLENBQUM7SUFBRSxpQkFBaUI7UUFDbEIsSUFBRyxDQUFDLENBQUMsSUFBSSxDQUFDLG9CQUFvQixJQUFLLElBQUksQ0FBQyxlQUFlLENBQUMsRUFBQyxDQUFDO1lBQ3hELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLHdDQUF3QyxFQUFDLE9BQU8sRUFBRSxFQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFBO1lBQ3RGLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUE7SUFDOUIsQ0FBQztJQUVELGlCQUFpQjtRQUNmLElBQUksS0FBSyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3hDLElBQUksS0FBSyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRTVDLElBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxXQUFXLEtBQUssZUFBZSxJQUFJLElBQUksQ0FBQyxXQUFXLEtBQUssVUFBVSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLElBQUssSUFBSSxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUM7WUFDMUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsd0NBQXdDLEVBQUUsT0FBTyxFQUFFLEVBQUMsUUFBUSxFQUFFLElBQUksRUFBQyxDQUFDLENBQUE7WUFDdkYsT0FBTztRQUNULENBQUM7UUFFRCxJQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsV0FBVyxLQUFLLGVBQWU7WUFDM0MsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLEtBQUssS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQzs7WUFFNUgsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFBO0lBQ3ZDLENBQUM7SUFLRCxlQUFlO1FBQ2IsSUFBRyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlO1lBQ3BELE9BQU87UUFFVCxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2hELElBQUksT0FBTyxHQUFHO1lBQ1osWUFBWSxFQUFFLElBQUksQ0FBQyxVQUFVO1lBQzdCLFdBQVcsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzVCLFNBQVMsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzFCLFFBQVEsRUFBRSxDQUFDO1lBQ1gsTUFBTSxFQUFFLENBQUM7WUFDVCxVQUFVLEVBQUUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDO1lBQ2xDLFlBQVksRUFBRSxFQUFFO1NBQ2pCLENBQUE7UUFFRCxJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRTtZQUMvRCxJQUFJLENBQUMsT0FBTyxDQUFDLG1CQUFtQixHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3BELElBQUksQ0FBQyxpQkFBaUIsR0FBSSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7WUFDekcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxpQkFBaUIsR0FBRyxFQUFFLENBQUM7WUFDeEQsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsRUFBRSxlQUFlLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztZQUMzRyxJQUFJLENBQUMsT0FBTyxDQUFDLG1CQUFtQixDQUFDLGVBQWUsR0FBRyxFQUFFLENBQUM7UUFDeEQsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsSUFBUyxFQUFFLEtBQVU7UUFDcEMsSUFBRyxLQUFLLENBQUMsVUFBVSxLQUFLLGVBQWUsRUFBRSxDQUFDO1lBQ3hDLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQ3RDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN6QixDQUFDO1FBQ0QsSUFBRyxLQUFLLENBQUMsVUFBVSxLQUFLLE9BQU8sRUFBRSxDQUFDO1lBQ2hDLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUMvQixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDekIsQ0FBQztJQUNILENBQUM7SUFFRCx5QkFBeUIsQ0FBQyxJQUFTLEVBQUUsS0FBVTtRQUM3QyxJQUFHLEtBQUssQ0FBQyxVQUFVLEtBQUssbUJBQW1CLEVBQUUsQ0FBQztZQUM1QyxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUE7UUFDbkMsQ0FBQztJQUNILENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxFQUFPO1FBQzFCLElBQUksQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUdELCtCQUErQixDQUFDLGdCQUF1QjtRQUNyRCxJQUFJLFFBQVEsR0FBUSxFQUFFLENBQUM7UUFFdkIsS0FBSSxJQUFJLFlBQVksSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO1lBQ3pDLElBQUcsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQztnQkFDNUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUMvQyxDQUFDO1lBQ0QsUUFBUSxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUM3RCxDQUFDO1FBRUQsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztJQUVELGdCQUFnQixDQUFDLGFBQW9CO1FBQ25DLElBQUksUUFBUSxHQUFRLEVBQUUsQ0FBQztRQUV2QixLQUFJLElBQUksTUFBTSxJQUFJLGFBQWEsRUFBRSxDQUFDO1lBQ2hDLElBQUcsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQztnQkFDMUIsUUFBUSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7WUFFaEMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDeEMsQ0FBQztRQUVELE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7OEdBM2FVLHlCQUF5QjtrR0FBekIseUJBQXlCLDRNQzVFdEMseWthQXdPQSx5eklEM0xJLFlBQVksaWtCQUNaLGlCQUFpQiw4QkFDakIsbUJBQW1CLDZRQUNuQixvQkFBb0IsMmRBQ3BCLGVBQWU7Z0JBRWYsV0FBVztnQkFDWCxrQkFBa0IseUZBQ2xCLG1CQUFtQiwwR0FFbkIsZUFBZSxtRkFDZix3QkFBd0Isb0hBSXhCLG1CQUFtQixtRkFHbkIsY0FBYyxnRkFFZCxnQkFBZ0Isb0ZBR2hCLGVBQWUsZ01BQ2YsZUFBZSwrdEJBQ2YsV0FBVyxzOEJBQ1gsYUFBYTs7MkZBS0oseUJBQXlCO2tCQW5DckMsU0FBUzsrQkFDRSx5QkFBeUIsY0FDdkIsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osaUJBQWlCO3dCQUNqQixtQkFBbUI7d0JBQ25CLG9CQUFvQjt3QkFDcEIsZUFBZTt3QkFDZixvQkFBb0I7d0JBQ3BCLFdBQVc7d0JBQ1gsa0JBQWtCO3dCQUNsQixtQkFBbUI7d0JBQ25CLHlCQUF5Qjt3QkFDekIsZUFBZTt3QkFDZix3QkFBd0I7d0JBQ3hCLHdCQUF3Qjt3QkFDeEIscUJBQXFCO3dCQUNyQiw4QkFBOEI7d0JBQzlCLG1CQUFtQjt3QkFDbkIsZUFBZTt3QkFDZiwwQkFBMEI7d0JBQzFCLGNBQWM7d0JBQ2QsdUJBQXVCO3dCQUN2QixnQkFBZ0I7d0JBQ2hCLGdDQUFnQzt3QkFDaEMsZ0NBQWdDO3dCQUNoQyxlQUFlO3dCQUNmLGVBQWU7d0JBQ2YsV0FBVzt3QkFDWCxhQUFhO3FCQUNkOytOQUtRLElBQUk7c0JBQVosS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcmVzdC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgZm9ya0pvaW4sIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBNYXRTbmFja0JhciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NuYWNrLWJhcic7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0R3JpZExpc3RNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9ncmlkLWxpc3QnO1xyXG5pbXBvcnQgeyBTaW1wb0VsZW1lbnRzTW9kdWxlIH0gZnJvbSAnLi4vLi4vZWxlbWVudHMvaW5kZXgnO1xyXG5pbXBvcnQgeyBCYWNrZ3JvdW5kTW9kZWwsIFN0eWxlc01vZGVsIH0gZnJvbSAnLi4vLi4vc3R5bGVzL3N0eWxlLm1vZGVsJztcclxuaW1wb3J0IHsgU2ltcG9Db21wb25lbnRNb2R1bGUgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL2luZGV4JztcclxuaW1wb3J0IHsgTWF0RGlhbG9nLCBNYXREaWFsb2dNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBTaW1wb0J1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2VsZW1lbnRzL3NpbXBvLWJ1dHRvbi9zaW1wby1idXR0b24uY29tcG9uZW50JztcclxuXHJcbmltcG9ydCB7IEFuaW1hdGlvbkRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9hbmltYXRpb24tZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgQmFja2dyb3VuZERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9iYWNrZ3JvdW5kLWRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IENvbnRlbnRGaXREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvY29udGVudC1maXQtZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgQmFubmVyQ29udGVudEZpdERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9iYW5uZXItY29udGVudC1maXQtZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgQm9yZGVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL2JvcmRlci1kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBCdXR0b25EaXJlY3RpdmVEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvYnV0dG9uLWRpcmVjdGl2ZS5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBDb2x1bW5EaXJlY3RpdmVEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvY29sdW1uLWRpcmVjdGl2ZS5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBDb250YWluZXJGaXREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvY29udGFpbmVyLWZpci5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBzaW1wb0NvbmV0ZW5BbGlnbm1lbnREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvY29udGVudC1hbGlnbm1lbnQtZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgQ29ybmVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL2Nvcm5lci1kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBTaW1wb0Zvb3RlckxheW91dERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9mb290ZXItbGF5b3V0LWRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IEhvdmVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL2hvdmVyLWVsZW1lbnQtZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgSW1hZ2VEaXJlY3RpdmVEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvaW1hZ2UtZGlyZWN0aXZlLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IE92ZXJsYXlEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvb3ZlcmxheS1kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBQb3NpdGlvbkxheW91dERpcmVjdGl2ZURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9wb3NpdGlvbi1sYXlvdXQtZGlyZWN0aXZlLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFRleHRCYWNrZ3JvdW5kRGlyZWN0aXZlRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL3RleHQtYmFja2dyb3VuZC1kaXJlY3RpdmUuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgRXZlbnRzU2VydmljZSB9IGZyb20gJy4vLi4vLi4vc2VydmljZXMvZXZlbnRzLnNlcnZpY2UnO1xyXG5pbXBvcnQgQmFzZVNlY3Rpb24gZnJvbSAnLi4vQmFzZVNlY3Rpb24nO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBUZXh0Q29udGVudE1vZGVsLCBUZXh0U2VjdGlvbk1vZGVsIH0gZnJvbSAnLi4vdGV4dC1zZWN0aW9uL3RleHQtc2VjdGlvbi5tb2RlbCc7XHJcbmltcG9ydCB7IE1hdE9wdGlvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXRTZWxlY3RNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zZWxlY3QnO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuaW1wb3J0IHsgSW1hZ2VVcGxhb2RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvaW1hZ2UtdXBsb2FkLXNlcnZpY2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IFJlZ2lzdHJhdGlvbkZvcm1Db250ZW50TW9kZWwsIFJlZ2lzdHJhdGlvbkZvcm1Nb2RlbCB9IGZyb20gJy4vcmVnaXN0cmF0aW9uRm9ybS5tb2RlbCc7XHJcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NpbXBvLXJlZ2lzdHJhdGlvbi1mb3JtJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIE1hdEdyaWRMaXN0TW9kdWxlLFxyXG4gICAgU2ltcG9FbGVtZW50c01vZHVsZSxcclxuICAgIFNpbXBvQ29tcG9uZW50TW9kdWxlLFxyXG4gICAgTWF0RGlhbG9nTW9kdWxlLFxyXG4gICAgU2ltcG9CdXR0b25Db21wb25lbnQsXHJcbiAgICAvL2RpcmVjdGl2ZVxyXG4gICAgQW5pbWF0aW9uRGlyZWN0aXZlLFxyXG4gICAgQmFja2dyb3VuZERpcmVjdGl2ZSxcclxuICAgIEJhbm5lckNvbnRlbnRGaXREaXJlY3RpdmUsXHJcbiAgICBCb3JkZXJEaXJlY3RpdmUsXHJcbiAgICBCdXR0b25EaXJlY3RpdmVEaXJlY3RpdmUsXHJcbiAgICBDb2x1bW5EaXJlY3RpdmVEaXJlY3RpdmUsXHJcbiAgICBDb250YWluZXJGaXREaXJlY3RpdmUsXHJcbiAgICBzaW1wb0NvbmV0ZW5BbGlnbm1lbnREaXJlY3RpdmUsXHJcbiAgICBDb250ZW50Rml0RGlyZWN0aXZlLFxyXG4gICAgQ29ybmVyRGlyZWN0aXZlLFxyXG4gICAgU2ltcG9Gb290ZXJMYXlvdXREaXJlY3RpdmUsXHJcbiAgICBIb3ZlckRpcmVjdGl2ZSxcclxuICAgIEltYWdlRGlyZWN0aXZlRGlyZWN0aXZlLFxyXG4gICAgT3ZlcmxheURpcmVjdGl2ZSxcclxuICAgIFBvc2l0aW9uTGF5b3V0RGlyZWN0aXZlRGlyZWN0aXZlLFxyXG4gICAgVGV4dEJhY2tncm91bmREaXJlY3RpdmVEaXJlY3RpdmUsXHJcbiAgICBNYXRPcHRpb25Nb2R1bGUsXHJcbiAgICBNYXRTZWxlY3RNb2R1bGUsXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuICAgIE1hdEljb25Nb2R1bGVcclxuICBdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9yZWdpc3RyYXRpb24tZm9ybS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL3JlZ2lzdHJhdGlvbi1mb3JtLmNvbXBvbmVudC5jc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSZWdpc3RyYXRpb25Gb3JtQ29tcG9uZW50IGV4dGVuZHMgQmFzZVNlY3Rpb24gaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveXtcclxuICBASW5wdXQoKSBkYXRhPzogUmVnaXN0cmF0aW9uRm9ybU1vZGVsO1xyXG4gIEBJbnB1dCgpIGluZGV4PyA6IG51bWJlcjtcclxuICBASW5wdXQoKSBlZGl0PyA6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgbmV4dENvbXBvbmVudENvbG9yPzogQmFja2dyb3VuZE1vZGVsO1xyXG4gIGNvbnRlbnQ6IFJlZ2lzdHJhdGlvbkZvcm1Db250ZW50TW9kZWwgfCB1bmRlZmluZWQ7XHJcbiAgc3R5bGVzOiBTdHlsZXNNb2RlbCB8IHVuZGVmaW5lZDtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZXN0U2VydmljZTogUmVzdFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHNuYWNrQmFyOiBNYXRTbmFja0JhcixcclxuICAgIHByaXZhdGUgX2V2ZW50U2VydmljZSA6IEV2ZW50c1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJvdXRlcjogQWN0aXZhdGVkUm91dGUsXHJcbiAgICBwdWJsaWMgZHM6IERvbVNhbml0aXplcixcclxuICAgIHB1YmxpYyBpbWFnZVVwbG9hZFNlcnZpY2U6IEltYWdlVXBsYW9kU2VydmljZVxyXG4gICkge1xyXG4gICAgc3VwZXIoKTtcclxuICB9XHJcblxyXG4gIE9iamVjdCA9IE9iamVjdDtcclxuICBwYXlsb2FkOiBhbnkgPSB7XHJcbiAgICBcImJ1c2luZXNzRGV0YWlsc1wiOiB7XHJcbiAgICAgIFwiaWRcIjogbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJiSWRcIikgPz8gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJidXNpbmVzc0lkXCIpLFxyXG4gICAgICBcIm5hbWVcIjogbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJiTmFtZVwiKSA/PyBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImJ1c2luZXNzTmFtZVwiKVxyXG4gICAgfSxcclxuICAgIFwiZmllbGRJdGVtc1wiOiBbXSxcclxuICAgIFwiaW1nVXJsXCI6ICcnLFxyXG4gICAgJ2RvY3VtZW50cyc6IFtdLFxyXG4gICAgXCJwYXJlbnRBdXRob3JpemF0aW9uXCI6IGZhbHNlLFxyXG4gICAgXCJiYWNrdXBEb2NcIiA6ICcnLFxyXG4gICAgXCJwYXltZW50UGxhblR5cGVcIiA6ICdBTk5VQUxMWSdcclxuICB9XHJcblxyXG4gIHNlbGVjdGVkS2V5OiBhbnk7XHJcbiAgZmllbGREYXRhOiBhbnkgPSB7fVxyXG4gIGJ1c2luZXNzSWQ6IGFueTtcclxuICBzZWxlY3RlZEdyYWRlSWQ6IGFueTtcclxuICBzZWxlY3RlZEFjYWRlbWljWWVhcjogYW55O1xyXG4gIGRvY3VtZW50TGlzdDogYW55W10gPSBbXTtcclxuICBmb3JtU3RhdHVzOiBzdHJpbmcgPSAnJ1xyXG4gIHN0dWRlbnRMaXZlV2l0aDogYW55ID0gJydcclxuICBiYWNrdXBEb2NGaWxlPzogRmlsZTtcclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLnJvdXRlci5xdWVyeVBhcmFtcy5zdWJzY3JpYmUoKHBhcmFtOiBhbnkpID0+IHtcclxuICAgICAgaWYocGFyYW1bJ2VJZCddKVxyXG4gICAgICAgIHRoaXMucGF5bG9hZFsnZW5xdWlyeUlkJ10gPSBwYXJhbVsnZUlkJ107XHJcblxyXG4gICAgICBpZihwYXJhbVsncklkJ10pXHJcbiAgICAgICAgdGhpcy5wYXlsb2FkWydyZWdpc3RyYXRpb25JZCddID0gcGFyYW1bJ3JJZCddO1xyXG5cclxuICAgICAgaWYocGFyYW1bJ2JJZCddKVxyXG4gICAgICAgIHRoaXMuYnVzaW5lc3NJZCA9IHBhcmFtWydiSWQnXTtcclxuXHJcbiAgICAgIGlmKHBhcmFtWyd0SWQnXSlcclxuICAgICAgICB0aGlzLnBheWxvYWRbJ3RlbXBsYXRlSWQnXSA9IHBhcmFtWyd0SWQnXTtcclxuXHJcbiAgICAgIHRoaXMucGF5bG9hZC5idXNpbmVzc0RldGFpbHMuaWQgPSB0aGlzLmJ1c2luZXNzSWQ7XHJcblxyXG4gICAgICBpZih0aGlzLnBheWxvYWRbJ3JlZ2lzdHJhdGlvbklkJ10gfHwgdGhpcy5wYXlsb2FkWydlbnF1aXJ5SWQnXSkge1xyXG4gICAgICAgIHRoaXMuZ2V0Rm9ybWRhdGEodGhpcy5wYXlsb2FkWydyZWdpc3RyYXRpb25JZCddIHx8IHRoaXMucGF5bG9hZFsnZW5xdWlyeUlkJ10pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuZ2V0QWxsRmllbGRzKCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuZ2V0QUxMRG9jdW1lbnRMaXN0KCk7XHJcblxyXG4gICAgfSlcclxuXHJcbiAgICAvLyB0aGlzLmJ1c2luZXNzSWQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImJJZFwiKSA/PyBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImJ1c2luZXNzSWRcIik7XHJcblxyXG4gICAgdGhpcy5jb250ZW50ID0gdGhpcy5kYXRhPy5jb250ZW50O1xyXG4gICAgdGhpcy5zdHlsZXMgPSB0aGlzLmRhdGE/LnN0eWxlcztcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy5mb3JtRmllbGRDaGFuZ2VTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBnZXRGb3JtZGF0YShhZG1pc3Npb25JZDogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBzZXJ2ZXJDYWxsID0gZm9ya0pvaW4oe1xyXG4gICAgICBhZG1pc3Npb25EYXRhOiB0aGlzLmRhdGE/LnNlY3Rpb25UeXBlID09PSAncmVnaXN0cmF0aW9uRm9ybScgPyB0aGlzLnJlc3RTZXJ2aWNlLmdldExlYWRCeUlkKGFkbWlzc2lvbklkKSA6IHRoaXMucmVzdFNlcnZpY2UuZ2V0UmVnaXN0cmF0aW9uTGlzdCh7aWQ6IGFkbWlzc2lvbklkLCBwYWdlTm86IDAsIHBhZ2VTaXplOiAxfSksXHJcbiAgICAgIGZpZWxkRGF0YTogdGhpcy5yZXN0U2VydmljZS5nZXRTZWxlY3RlZExpc3RGaWVsZHModGhpcy5idXNpbmVzc0lkLCB0aGlzLmRhdGE/LnNlY3Rpb25UeXBlID09PSAncmVnaXN0cmF0aW9uRm9ybScgPyAnUkVHSVNUUkFUSU9OJyA6ICdBRE1JU1NJT04nLCAgdGhpcy5kYXRhPy5zZWN0aW9uVHlwZSA9PT0gJ3JlZ2lzdHJhdGlvbkZvcm0nID8gJ1JFR0lTVFJBVElPTicgOiAnQURNSVNTSU9OJylcclxuICAgIH0pXHJcblxyXG4gICAgc2VydmVyQ2FsbC5zdWJzY3JpYmUoKHJlc3VsdDogYW55KSA9PiB7XHJcbiAgICAgIGxldCBhZG1pc3Npb25EYXRhID0gdGhpcy5kYXRhPy5zZWN0aW9uVHlwZSA9PT0gJ3JlZ2lzdHJhdGlvbkZvcm0nID8gcmVzdWx0LmFkbWlzc2lvbkRhdGEuZGF0YSA6IHJlc3VsdC5hZG1pc3Npb25EYXRhLmRhdGEuZGF0YVswXTtcclxuICAgICAgbGV0IGZpZWxkRGF0YSA9IHJlc3VsdC5maWVsZERhdGEuZGF0YTtcclxuXHJcbiAgICAgIHRoaXMuZm9ybVN0YXR1cyA9IGFkbWlzc2lvbkRhdGEuc3RhdHVzXHJcblxyXG4gICAgICAvLyB0aGlzLnBheWxvYWQgPSBhZG1pc3Npb25EYXRhO1xyXG4gICAgICB0aGlzLnBheWxvYWRbJ2RvY3VtZW50cyddID0gW107XHJcbiAgICAgIHRoaXMucGF5bG9hZC5idXNpbmVzc0RldGFpbHMuaWQgPSB0aGlzLmJ1c2luZXNzSWQ7XHJcbiAgICAgIHRoaXMucGF5bG9hZC5pbWdVcmwgPSBhZG1pc3Npb25EYXRhLmltZ1VybFxyXG5cclxuICAgICAgYWRtaXNzaW9uRGF0YVsnZmllbGRNYXAnXSA9IHt9O1xyXG4gICAgICBmb3IobGV0IGZpZWxkSXRlbSBvZiB0aGlzLmRhdGE/LnNlY3Rpb25UeXBlID09PSAncmVnaXN0cmF0aW9uRm9ybScgPyAoYWRtaXNzaW9uRGF0YT8uZmllbGREYXRhIHx8IFtdKSA6IChhZG1pc3Npb25EYXRhPy5maWVsZEl0ZW1zIHx8IFtdKSkge1xyXG4gICAgICAgIGlmKGZpZWxkSXRlbS5maWVsZE5hbWUgPT09ICdBY2FkZW1pYyBZZWFyJykge1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZEFjYWRlbWljWWVhciA9IGZpZWxkSXRlbS5maWVsZFZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZihmaWVsZEl0ZW0udHlwZSAhPSBudWxsKSB7XHJcbiAgICAgICAgICBhZG1pc3Npb25EYXRhWydmaWVsZE1hcCddW2ZpZWxkSXRlbS50eXBlXSA9IGZpZWxkSXRlbS5maWVsZFZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgaWQgPSBmaWVsZEl0ZW0uZmllbGROYW1lICsgZmllbGRJdGVtLmZpZWxkR3JvdXBOYW1lO1xyXG4gICAgICAgIGFkbWlzc2lvbkRhdGFbJ2ZpZWxkTWFwJ11baWRdID0gZmllbGRJdGVtLmZpZWxkVmFsdWU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuZmllbGREYXRhID0gdGhpcy5yZXN0U2VydmljZS5nZXRGaWVsZHNUb0Rpc3BsYXkoZmllbGREYXRhLmRhdGEpO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkS2V5ID0gdGhpcy5PYmplY3Qua2V5cyh0aGlzLmZpZWxkRGF0YSlbMF1cclxuXHJcbiAgICAgIGZvcihsZXQgc3RlcCBvZiB0aGlzLk9iamVjdC5rZXlzKHRoaXMuZmllbGREYXRhKSkge1xyXG4gICAgICAgIGZvcihsZXQgZ3JvdXAgb2YgT2JqZWN0LmtleXModGhpcy5maWVsZERhdGFbc3RlcF0pKSB7XHJcbiAgICAgICAgICBmb3IobGV0IGZpZWxkIG9mIHRoaXMuZmllbGREYXRhW3N0ZXBdW2dyb3VwXSkge1xyXG4gICAgICAgICAgICBpZihmaWVsZC50eXBlICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICBmaWVsZC5maWVsZFZhbHVlID0gYWRtaXNzaW9uRGF0YVsnZmllbGRNYXAnXVtmaWVsZC50eXBlXTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBmaWVsZC5maWVsZFZhbHVlID0gYWRtaXNzaW9uRGF0YVsnZmllbGRNYXAnXVtmaWVsZC5maWVsZExhYmVsICsgZ3JvdXBdO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZihmaWVsZD8udHlwZSA9PT0gJ0dSQURFJylcclxuICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUdyYWRlKGZpZWxkLnNvdXJjZURhdGFbZmllbGQuZGF0YVNvdXJjZVR5cGVdLCBmaWVsZC5maWVsZFZhbHVlKTtcclxuXHJcbiAgICAgICAgICAgIGlmKGZpZWxkLmRhdGFUeXBlID09PSAnQ0hFQ0tCT1gnKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5mb3JtYXRDaGVja0JveFZhbHVlKGZpZWxkKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5nZXRGZWVTdHJ1Y3R1cmUoKTtcclxuICAgIH0pXHJcblxyXG4gIH1cclxuXHJcbiAgdXBkYXRlR3JhZGUoZ3JhZGVMaXN0IDphbnlbXSwgZ3JhZGVOYW1lOiBhbnkpIHtcclxuICAgIGZvcihsZXQgZ3JhZGUgb2YgZ3JhZGVMaXN0KSB7XHJcbiAgICAgIGlmKGdyYWRlLm5hbWUgPT09IGdyYWRlTmFtZSl7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEdyYWRlSWQgPSBncmFkZS5pZDtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZm9ybWF0Q2hlY2tCb3hWYWx1ZShmaWVsZDogYW55KSB7XHJcbiAgICBpZihmaWVsZC52YWx1ZSkge1xyXG4gICAgICBmb3IobGV0IGZpZWxkVmFsdWUgb2YgZmllbGQudmFsdWUpIHtcclxuICAgICAgICBpZihmaWVsZC5maWVsZFZhbHVlPy5pbmNsdWRlcyhmaWVsZFZhbHVlLnZhbHVlKSkge1xyXG4gICAgICAgICAgZmllbGRWYWx1ZS5jaGVja2VkID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBmb3IobGV0IGZpZWxkVmFsdWUgb2YgZmllbGQuc291cmNlRGF0YT8uW2ZpZWxkLmRhdGFTb3VyY2VUeXBlXSB8fCBbXSkge1xyXG4gICAgICAgIGlmKGZpZWxkLmZpZWxkVmFsdWU/LmluY2x1ZGVzKGZpZWxkVmFsdWUubmFtZSkpIHtcclxuICAgICAgICAgIGZpZWxkVmFsdWUuY2hlY2tlZCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgZ2V0QWxsRmllbGRzKCkge1xyXG4gICAgdGhpcy5yZXN0U2VydmljZS5nZXRTZWxlY3RlZExpc3RGaWVsZHModGhpcy5idXNpbmVzc0lkLCB0aGlzLmRhdGE/LnNlY3Rpb25UeXBlID09PSAncmVnaXN0cmF0aW9uRm9ybScgPyAnUkVHSVNUUkFUSU9OJyA6ICdBRE1JU1NJT04nLCAgdGhpcy5kYXRhPy5zZWN0aW9uVHlwZSA9PT0gJ3JlZ2lzdHJhdGlvbkZvcm0nID8gJ1JFR0lTVFJBVElPTicgOiAnQURNSVNTSU9OJykuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLmZpZWxkRGF0YSA9IHRoaXMucmVzdFNlcnZpY2UuZ2V0RmllbGRzVG9EaXNwbGF5KHJlcy5kYXRhLmRhdGEpO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkS2V5ID0gdGhpcy5PYmplY3Qua2V5cyh0aGlzLmZpZWxkRGF0YSlbMF07XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0QUxMRG9jdW1lbnRMaXN0KCkge1xyXG4gICAgY29uc3QgcGF5bG9hZCA9IHtcclxuICAgICAgXCJidXNpbmVzc0lkXCI6IHRoaXMuYnVzaW5lc3NJZCxcclxuICAgICAgXCJzb3J0QnlcIjogXCJcIixcclxuICAgICAgXCJzb3J0T3JkZXJcIjogXCJcIixcclxuICAgICAgXCJzdGF0dXNcIjogdHJ1ZSxcclxuICAgICAgXCJpc0RlbGV0ZWRcIjogZmFsc2VcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnJlc3RTZXJ2aWNlLmdldEFsbERvY3VtZW50KHBheWxvYWQpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgdGhpcy5kb2N1bWVudExpc3QgPSByZXMuZGF0YS5kYXRhO1xyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGZvcm1GaWVsZENoYW5nZVN1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvbjtcclxuICBmb3JtRmllbGRDaGFuZ2VkKCkge1xyXG4gICAgdGhpcy5mb3JtRmllbGRDaGFuZ2VTdWJzY3JpcHRpb24gPSB0aGlzLl9ldmVudFNlcnZpY2UuZm9ybUZpZWxkQ2hhbmdlZC5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMuZ2V0QWxsRmllbGRzKCk7XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcblxyXG5cclxuICBhc3luYyBzdWJtaXRGb3JtKCkge1xyXG4gICAgdGhpcy5wYXlsb2FkLmZpZWxkSXRlbXMgPSB0aGlzLmNvbnZlcnRUb0xpc3RPZkZpZWxkcygpO1xyXG4gICAgaWYodGhpcy5wYXlsb2FkLmZpZWxkSXRlbXMubGVuZ3RoID09IDApXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICBpZih0aGlzLmZpbGVEYXRhKSB7XHJcbiAgICAgIGxldCBpbWFnZURhdGE6IGFueSA9IGF3YWl0IHRoaXMuaW1hZ2VVcGxvYWRTZXJ2aWNlLnVwbG9hZEZpbGVJbkF6dXJlKHRoaXMuZmlsZURhdGEpO1xyXG4gICAgICB0aGlzLnBheWxvYWQuaW1nVXJsID0gaW1hZ2VEYXRhLnVybFxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZGF0YT8uc2VjdGlvblR5cGUgPT09ICdyZWdpc3RyYXRpb25Gb3JtJyA/IHRoaXMuY3JlYXRlUmVnaXN0cmF0aW9uKCkgOiB0aGlzLmNyZWF0ZUFkbWlzc2lvbigpO1xyXG4gIH1cclxuXHJcbiAgcmVnaXN0cmF0aW9uU3Vic2NyaXB0aW9uPzogU3Vic2NyaXB0aW9uO1xyXG4gIGNyZWF0ZVJlZ2lzdHJhdGlvbigpIHtcclxuICAgIC8vIHRoaXMucGF5bG9hZFsncmV0dXJuVXJsJ10gPSBgaHR0cHM6Ly9jbWlzLnRlanNvZnQuY29tL3ZlcmlmeS1wYXltZW50Lz91cmw9dHJ1ZSZ0eXBlPVJFR0lTVFJBVElPTiZiSWQ9JHt0aGlzLmJ1c2luZXNzSWR9YCAvL3Byb2R1Y3Rpb25cclxuICAgIHRoaXMucGF5bG9hZFsncmV0dXJuVXJsJ10gPSBgaHR0cHM6Ly9kZXYuY21pcy50ZWpzb2Z0LmNvbS92ZXJpZnktcGF5bWVudC8/dXJsPXRydWUmdHlwZT1SRUdJU1RSQVRJT04mYklkPSR7dGhpcy5idXNpbmVzc0lkfWAgLy9kZXZcclxuICAgIC8vIHRoaXMucGF5bG9hZFsncmV0dXJuVXJsJ10gPSBgaHR0cHM6Ly9zdGFnZS5jbWlzLnRlanNvZnQuY29tL3ZlcmlmeS1wYXltZW50Lz91cmw9dHJ1ZSZ0eXBlPVJFR0lTVFJBVElPTiZiSWQ9JHt0aGlzLmJ1c2luZXNzSWR9YCAvL3N0YWdlXHJcbiAgICB0aGlzLnJlZ2lzdHJhdGlvblN1YnNjcmlwdGlvbiA9IHRoaXMucmVzdFNlcnZpY2UuY3JlYXRlUmVnaXN0cmF0aW9uRm9yUGF5bWVudCh0aGlzLnBheWxvYWQpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgLy8gdGhpcy5zbmFja0Jhci5vcGVuKCdSZWdpc3RyYXRpb24gY3JlYXRlZCBzdWNjZXNzZnVsbHknLCAnY2xvc2UnLCB7ZHVyYXRpb246IDIwMDB9KTtcclxuICAgICAgdGhpcy5fZXZlbnRTZXJ2aWNlLmNhc2hGcmVlRXZlbnQuZW1pdCh7cmVzcG9uc2U6IHJlcywgcGF5bWVudFR5cGU6J1JFR0lTVFJBVElPTid9KTtcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBhc3luYyBjcmVhdGVBZG1pc3Npb24oKSB7XHJcbiAgICBpZih0aGlzLnBheWxvYWQucGF5bWVudFBsYW5UeXBlID09PSAnVEVSTScgJiYgKHRoaXMucGF5bG9hZD8uc3R1ZGVudEZlZVN0cnVjdHVyZT8udGVybVBheW1lbnRMaXN0Py5sZW5ndGggfHwgMCkgPT0gMCl7XHJcbiAgICAgIHRoaXMuc25hY2tCYXIub3BlbignUGxlYXNlIHNlbGVjdCB0ZXJtJyk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnBheWxvYWQuc3R1ZGVudEZlZVN0cnVjdHVyZVsncGF5bWVudFBsYW5UeXBlJ10gPSB0aGlzLnBheWxvYWQucGF5bWVudFBsYW5UeXBlO1xyXG4gICAgLy8gdGhpcy5wYXlsb2FkWydyZXR1cm5VcmwnXSA9IGBodHRwczovL2NtaXMudGVqc29mdC5jb20vdmVyaWZ5LXBheW1lbnQvP3VybD10cnVlJnR5cGU9QURNSVNTSU9OJmJJZD0ke3RoaXMuYnVzaW5lc3NJZH1gOyAvL3Byb2R1Y3Rpb25cclxuICAgIHRoaXMucGF5bG9hZFsncmV0dXJuVXJsJ10gPSBgaHR0cHM6Ly9kZXYuY21pcy50ZWpzb2Z0LmNvbS92ZXJpZnktcGF5bWVudC8/dXJsPXRydWUmdHlwZT1BRE1JU1NJT04mYklkPSR7dGhpcy5idXNpbmVzc0lkfWA7IC8vZGV2XHJcbiAgICAvLyB0aGlzLnBheWxvYWRbJ3JldHVyblVybCddID0gYGh0dHBzOi8vc3RhZ2UuY21pcy50ZWpzb2Z0LmNvbS92ZXJpZnktcGF5bWVudC8/dXJsPXRydWUmdHlwZT1BRE1JU1NJT04mYklkPSR7dGhpcy5idXNpbmVzc0lkfWA7IC8vc3RhZ2VcclxuXHJcbiAgICBpZih0aGlzLmJhY2t1cERvY0ZpbGUpIHtcclxuICAgICAgbGV0IGltYWdlRGF0YTogYW55ID0gYXdhaXQgdGhpcy5pbWFnZVVwbG9hZFNlcnZpY2UudXBsb2FkRmlsZUluQXp1cmUodGhpcy5iYWNrdXBEb2NGaWxlKTtcclxuICAgICAgdGhpcy5wYXlsb2FkLmJhY2t1cERvYyA9IGltYWdlRGF0YS51cmxcclxuICAgIH1cclxuXHJcbiAgICBmb3IobGV0IGRvY3VtZW50IG9mIHRoaXMuZG9jdW1lbnRMaXN0KSB7XHJcbiAgICAgIGlmKGRvY3VtZW50LmZpbGUpIHtcclxuICAgICAgICBsZXQgaW1hZ2VEYXRhOiBhbnkgPSBhd2FpdCB0aGlzLmltYWdlVXBsb2FkU2VydmljZS51cGxvYWRGaWxlSW5BenVyZShkb2N1bWVudC5maWxlKTtcclxuXHJcbiAgICAgICAgdGhpcy5wYXlsb2FkWydkb2N1bWVudHMnXS5wdXNoKFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBuYW1lOiBkb2N1bWVudC5kaXNwbGF5VGV4dCxcclxuICAgICAgICAgICAgdXJsOiBpbWFnZURhdGEudXJsLFxyXG4gICAgICAgICAgICBkb2NUeXBlOiBkb2N1bWVudC5uYW1lLFxyXG4gICAgICAgICAgICBhdHRhY2htZW50VHlwZTogZG9jdW1lbnQudHlwZVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIClcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMucmVnaXN0cmF0aW9uU3Vic2NyaXB0aW9uID0gdGhpcy5yZXN0U2VydmljZS5jcmVhdGVQYXltZW50Rm9yQWRtaXNzaW9uKHRoaXMucGF5bG9hZCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAvLyB0aGlzLnNuYWNrQmFyLm9wZW4oJ0FkbWlzc2lvbiBjcmVhdGVkIHN1Y2Nlc3NmdWxseScsICdjbG9zZScsIHtkdXJhdGlvbjogMjAwMH0pO1xyXG4gICAgICB0aGlzLl9ldmVudFNlcnZpY2UuY2FzaEZyZWVFdmVudC5lbWl0KHtyZXNwb25zZTogcmVzLCBwYXltZW50VHlwZTonQURNSVNTSU9OJ30pO1xyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGNvbnZlcnRUb0xpc3RPZkZpZWxkcygpIHtcclxuICAgIGxldCBmaWVsZExpc3Q6IGFueVtdID0gW107XHJcblxyXG4gICAgZm9yKGxldCBzdGVwIG9mIHRoaXMuT2JqZWN0LmtleXModGhpcy5maWVsZERhdGEpKSB7XHJcbiAgICAgIGZvcihsZXQgZ3JvdXAgb2YgT2JqZWN0LmtleXModGhpcy5maWVsZERhdGFbc3RlcF0pKSB7XHJcblxyXG4gICAgICAgIGlmKGdyb3VwID09ICdCYWNrdXAgQ29udGFjdCcgJiYgdGhpcy5zdHVkZW50TGl2ZVdpdGggIT0gJ3NpbmdsZSBwYXJlbnQnKVxyXG4gICAgICAgICAgY29udGludWU7XHJcblxyXG4gICAgICAgIGZvcihsZXQgZmllbGQgb2YgdGhpcy5maWVsZERhdGFbc3RlcF1bZ3JvdXBdKSB7XHJcbiAgICAgICAgICBpZihmaWVsZC5yZXF1aXJlZCAmJiAhZmllbGQuZmllbGRWYWx1ZSAmJiBmaWVsZC5kYXRhVHlwZSAhPSAnQ0hFQ0tCT1gnKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc25hY2tCYXIub3BlbihgUGxlYXNlIGVudGVyICR7ZmllbGQuZmllbGRMYWJlbH1gLCAnY2xvc2UnLCB7ZHVyYXRpb246IDIwMDB9KTtcclxuICAgICAgICAgICAgcmV0dXJuIFtdO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGxldCBjaGVja0JveFZhbHVlOiBhbnlbXSA9IFtdO1xyXG4gICAgICAgICAgaWYoZmllbGQuZGF0YVR5cGUgPT09ICdDSEVDS0JPWCcpIHtcclxuICAgICAgICAgICAgY2hlY2tCb3hWYWx1ZSA9IHRoaXMuZ2V0Q2hlY2tCb3hWYWx1ZShmaWVsZCk7XHJcblxyXG4gICAgICAgICAgICBpZihjaGVja0JveFZhbHVlLmxlbmd0aCAgPT0gMCAmJiBmaWVsZC5yZXF1aXJlZCl7XHJcbiAgICAgICAgICAgICAgdGhpcy5zbmFja0Jhci5vcGVuKGBQbGVhc2UgZW50ZXIgJHtmaWVsZC5maWVsZExhYmVsfWAsICdjbG9zZScsIHtkdXJhdGlvbjogMjAwMH0pO1xyXG4gICAgICAgICAgICAgIHJldHVybiBbXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGZpZWxkTGlzdC5wdXNoKHtcclxuICAgICAgICAgICAgZmllbGRJZDogZmllbGQuZmllbGRJZCxcclxuICAgICAgICAgICAgZmllbGROYW1lOiBmaWVsZC5maWVsZExhYmVsLFxyXG4gICAgICAgICAgICBmaWVsZFZhbHVlOiBmaWVsZC5kYXRhVHlwZSAhPT0gJ0NIRUNLQk9YJyA/IGZpZWxkLmZpZWxkVmFsdWUgOiBjaGVja0JveFZhbHVlLFxyXG4gICAgICAgICAgICBmaWVsZEdyb3VwSWQ6IGZpZWxkLmZpZWxkR3JvdXBJZCxcclxuICAgICAgICAgICAgZmllbGRHcm91cE5hbWU6IGdyb3VwLFxyXG4gICAgICAgICAgICBmaWVsZFN0ZXBJZDogZmllbGQuZmllbGRTdGVwSWQsXHJcbiAgICAgICAgICAgIGZpZWxkU3RlcE5hbWU6IHN0ZXAsXHJcbiAgICAgICAgICAgIHR5cGU6IGZpZWxkLnR5cGVcclxuICAgICAgICAgIH0pXHJcblxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmaWVsZExpc3Q7XHJcbiAgfVxyXG5cclxuICBnZXRDaGVja0JveFZhbHVlKGZpZWxkOiBhbnkpIHtcclxuICAgIGxldCByZXNwb25zZTogYW55W10gPSBbXTtcclxuXHJcbiAgICBpZihmaWVsZC52YWx1ZSkge1xyXG4gICAgICBmb3IobGV0IGZpZWxkVmFsdWUgb2YgZmllbGQudmFsdWUpIHtcclxuICAgICAgICBpZihmaWVsZFZhbHVlLmNoZWNrZWQpIHtcclxuICAgICAgICAgIHJlc3BvbnNlLnB1c2goZmllbGRWYWx1ZS52YWx1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBmb3IobGV0IGZpZWxkVmFsdWUgb2YgZmllbGQuc291cmNlRGF0YT8uW2ZpZWxkLmRhdGFTb3VyY2VUeXBlXSB8fCBbXSkge1xyXG4gICAgICAgIGlmKGZpZWxkVmFsdWUuY2hlY2tlZCkge1xyXG4gICAgICAgICAgcmVzcG9uc2UucHVzaChmaWVsZFZhbHVlLm5hbWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiByZXNwb25zZTtcclxuICB9XHJcblxyXG4gIGZpbGVEYXRhPzogRmlsZTtcclxuICB1cGRhdGVBZG1pc3Npb25JbWFnZShldjogYW55KSB7XHJcbiAgICB0aGlzLmZpbGVEYXRhID0gZXYuc3JjRWxlbWVudC5maWxlc1swXTtcclxuXHJcbiAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xyXG5cclxuICAgIHJlYWRlci5vbmxvYWQgPSAocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLnBheWxvYWQuaW1nVXJsID0gcmVzcG9uc2UudGFyZ2V0LnJlc3VsdDtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmZpbGVEYXRhID8gcmVhZGVyLnJlYWRBc0RhdGFVUkwodGhpcy5maWxlRGF0YSkgOiBudWxsO1xyXG4gIH1cclxuXHJcbiAgZGVsZXRlSW1nKCkge1xyXG4gICAgdGhpcy5wYXlsb2FkLmltZ1VybCA9ICcnO1xyXG4gICAgdGhpcy5maWxlRGF0YSA9IHVuZGVmaW5lZDtcclxuICB9ICByZWRpcmVjdFRvUGF5bWVudCgpIHtcclxuICAgIGlmKCEodGhpcy5zZWxlY3RlZEFjYWRlbWljWWVhciAmJiAgdGhpcy5zZWxlY3RlZEdyYWRlSWQpKXtcclxuICAgICAgdGhpcy5zbmFja0Jhci5vcGVuKCdTZWxlY3RlZCBHcmFkZSBhbmQgQWNhZGVtaWMgWWVhciBmaXJzdCcsJ2Nsb3NlJywge2R1cmF0aW9uOiAyMDAwfSlcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zZWxlY3RlZEtleSA9ICdQYXltZW50J1xyXG4gIH1cclxuXHJcbiAgY29udGludWVBZG1pc3Npb24oKSB7XHJcbiAgICBsZXQgc3RlcHMgPSBPYmplY3Qua2V5cyh0aGlzLmZpZWxkRGF0YSk7XHJcbiAgICBsZXQgaW5kZXggPSBzdGVwcy5pbmRleE9mKHRoaXMuc2VsZWN0ZWRLZXkpO1xyXG5cclxuICAgIGlmKHRoaXMuZGF0YT8uc2VjdGlvblR5cGUgPT09ICdhZG1pc3Npb25Gb3JtJyAmJiB0aGlzLnNlbGVjdGVkS2V5ID09PSAnRG9jdW1lbnQnICYmICEodGhpcy5zZWxlY3RlZEFjYWRlbWljWWVhciAmJiAgdGhpcy5zZWxlY3RlZEdyYWRlSWQpKSB7XHJcbiAgICAgIHRoaXMuc25hY2tCYXIub3BlbignU2VsZWN0ZWQgR3JhZGUgYW5kIEFjYWRlbWljIFllYXIgZmlyc3QnLCAnY2xvc2UnLCB7ZHVyYXRpb246IDIwMDB9KVxyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYodGhpcy5kYXRhPy5zZWN0aW9uVHlwZSA9PT0gJ2FkbWlzc2lvbkZvcm0nKVxyXG4gICAgICB0aGlzLnNlbGVjdGVkS2V5ID0gaW5kZXggPT09IHN0ZXBzLmxlbmd0aCAtIDEgPyAnRG9jdW1lbnQnIDogdGhpcy5zZWxlY3RlZEtleSA9PT0gJ0RvY3VtZW50JyA/ICdQYXltZW50JyA6IHN0ZXBzW2luZGV4ICsgMV07XHJcbiAgICBlbHNlXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRLZXkgPSBzdGVwc1tpbmRleCArIDFdXHJcbiAgfVxyXG5cclxuICBzdWJzY3JpcHRpb25zRGF0YTogYW55W10gPSBbXVxyXG4gIHRlcm1QYXltZW50TGlzdDogYW55W10gPSBbXTtcclxuXHJcbiAgZ2V0RmVlU3RydWN0dXJlKCkge1xyXG4gICAgaWYoIXRoaXMuc2VsZWN0ZWRBY2FkZW1pY1llYXIgfHwgIXRoaXMuc2VsZWN0ZWRHcmFkZUlkKVxyXG4gICAgICByZXR1cm47XHJcblxyXG4gICAgbGV0IHllYXIgPSB0aGlzLnNlbGVjdGVkQWNhZGVtaWNZZWFyLnNwbGl0KFwiLVwiKTtcclxuICAgIGxldCBwYXlsb2FkID0ge1xyXG4gICAgICBcImJ1c2luZXNzSWRcIjogdGhpcy5idXNpbmVzc0lkLFxyXG4gICAgICBcInN0YXJ0WWVhclwiOiBOdW1iZXIoeWVhclswXSksXHJcbiAgICAgIFwiZW5kWWVhclwiOiBOdW1iZXIoeWVhclsxXSksXHJcbiAgICAgIFwicGFnZU5vXCI6IDAsXHJcbiAgICAgIFwic2l6ZVwiOiAxLFxyXG4gICAgICBcImdyYWRlSWRzXCI6IFt0aGlzLnNlbGVjdGVkR3JhZGVJZF0sXHJcbiAgICAgIFwic2VhcmNoVGV4dFwiOiBcIlwiXHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5yZXN0U2VydmljZS5nZXRGZWVTdHJ1Y3R1cmUocGF5bG9hZCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLnBheWxvYWQuc3R1ZGVudEZlZVN0cnVjdHVyZSA9IHJlcy5kYXRhLmRhdGFbMF07XHJcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9uc0RhdGEgPSAgSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLnBheWxvYWQuc3R1ZGVudEZlZVN0cnVjdHVyZS5zdWJzY3JpcHRpb25QbGFucykpO1xyXG4gICAgICB0aGlzLnBheWxvYWQuc3R1ZGVudEZlZVN0cnVjdHVyZS5zdWJzY3JpcHRpb25QbGFucyA9IFtdO1xyXG4gICAgICB0aGlzLnRlcm1QYXltZW50TGlzdCA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5wYXlsb2FkLnN0dWRlbnRGZWVTdHJ1Y3R1cmU/LnRlcm1QYXltZW50TGlzdCB8fCAnJykpO1xyXG4gICAgICB0aGlzLnBheWxvYWQuc3R1ZGVudEZlZVN0cnVjdHVyZS50ZXJtUGF5bWVudExpc3QgPSBbXTtcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBpbnB1dEZpZWxkQ2hhbmdlKGl0ZW06IGFueSwgZmllbGQ6IGFueSkge1xyXG4gICAgaWYoZmllbGQuZmllbGRMYWJlbCA9PT0gJ0FjYWRlbWljIFllYXInKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRBY2FkZW1pY1llYXIgPSBpdGVtLm5hbWU7XHJcbiAgICAgIHRoaXMuZ2V0RmVlU3RydWN0dXJlKCk7XHJcbiAgICB9XHJcbiAgICBpZihmaWVsZC5maWVsZExhYmVsID09PSAnR3JhZGUnKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRHcmFkZUlkID0gaXRlbS5pZDtcclxuICAgICAgdGhpcy5nZXRGZWVTdHJ1Y3R1cmUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG1hc3RlckRyb3Bkb3duVmFsdWVDaGFuZ2UoaXRlbTogYW55LCBmaWVsZDogYW55KSB7XHJcbiAgICBpZihmaWVsZC5maWVsZExhYmVsID09PSAnU3R1ZGVudCBsaXZlIHdpdGgnKSB7XHJcbiAgICAgIHRoaXMuc3R1ZGVudExpdmVXaXRoID0gaXRlbS52YWx1ZVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdXBsb2FkQmFja1VwRG9jdW1lbnQoZXY6IGFueSkge1xyXG4gICAgdGhpcy5iYWNrdXBEb2NGaWxlID0gZXYuc3JjRWxlbWVudC5maWxlc1swXTtcclxuICB9XHJcblxyXG5cclxuICBhcnJhbmdlU3Vic2NyaXB0aW9uRm9yQWRtaXNzaW9uKHN1YnNjcmlwdGlvbkxpc3Q6IGFueVtdKSB7XHJcbiAgICBsZXQgcmVzcG9uc2U6IGFueSA9IHt9O1xyXG5cclxuICAgIGZvcihsZXQgc3Vic2NyaXB0aW9uIG9mIHN1YnNjcmlwdGlvbkxpc3QpIHtcclxuICAgICAgaWYoIXJlc3BvbnNlW3N1YnNjcmlwdGlvbi5zdWJzY3JpcHRpb25UeXBlXSkge1xyXG4gICAgICAgIHJlc3BvbnNlW3N1YnNjcmlwdGlvbi5zdWJzY3JpcHRpb25UeXBlXSA9IFtdO1xyXG4gICAgICB9XHJcbiAgICAgIHJlc3BvbnNlW3N1YnNjcmlwdGlvbi5zdWJzY3JpcHRpb25UeXBlXS5wdXNoKHN1YnNjcmlwdGlvbik7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gIH1cclxuXHJcbiAgYXJyYW5nZUZlZUNvbmZpZyhmZWVDb25maWdMaXN0OiBhbnlbXSkge1xyXG4gICAgbGV0IHJlc3BvbnNlOiBhbnkgPSB7fTtcclxuXHJcbiAgICBmb3IobGV0IGNvbmZpZyBvZiBmZWVDb25maWdMaXN0KSB7XHJcbiAgICAgIGlmKCFyZXNwb25zZVtjb25maWcuZmVlVHlwZV0pXHJcbiAgICAgICAgcmVzcG9uc2VbY29uZmlnLmZlZVR5cGVdID0gW107XHJcblxyXG4gICAgICByZXNwb25zZVtjb25maWcuZmVlVHlwZV0ucHVzaChjb25maWcpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiByZXNwb25zZTtcclxuICB9XHJcbn1cclxuIiwiPHNlY3Rpb24gc2ltcG9Ib3ZlciAoaG92ZXJpbmcpPVwic2hvd0VkaXRUYWJzKCRldmVudClcIiBjbGFzcz1cInRvdGFsLWNvbnRhaW5lclwiPlxyXG4gIDxkaXYgW2lkXT1cImRhdGE/LmlkXCIgW3NpbXBvQmFja2dyb3VuZF09XCJzdHlsZXM/LmJhY2tncm91bmRcIj5cclxuICAgIDxkaXYgI21haW5Db250YWluZXIgY2xhc3M9XCJyb3dGbGV4XCIgW2lkXT1cImRhdGE/LmlkXCIgW3NpbXBvT3ZlcmxheV09XCJzdHlsZXM/LmJhY2tncm91bmRcIlxyXG4gICAgICBbc2ltcG9Cb3JkZXJdPVwic3R5bGVzPy5ib3JkZXJcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm1haW4tc2VjdGlvblwiXHJcbiAgICAgICAgW25nQ2xhc3NdPVwieydqdXN0aWZ5LWNvbnRlbnQtbWQtc3RhcnQnOiBzdHlsZXM/LmxheW91dD8uYWxpZ24gPT09ICdsZWZ0JyAsICdqdXN0aWZ5LWNvbnRlbnQtbWQtZW5kJzogc3R5bGVzPy5sYXlvdXQ/LmFsaWduID09PSAncmlnaHQnfVwiXHJcbiAgICAgICAgW2lkXT1cImRhdGE/LmlkXCIgW3NpbXBvTGF5b3V0XT1cInN0eWxlcz8ubGF5b3V0XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImJvZHktc2VjdGlvblwiPlxyXG4gICAgICAgICAgPGRpdiBbc2ltcG9BbmltYXRpb25dPVwic3R5bGVzPy5hbmltYXRpb25cIiBbaWRdPVwiZGF0YT8uaWRcIj5cclxuICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICA8c2ltcG8tdGV4dC1lbGVtZW50IFt0ZXh0RGF0YV09XCJjb250ZW50Py5pbnB1dFRleHQ/LlswXT8udmFsdWVcIiBbdGV4dExhYmVsXT1cImNvbnRlbnQ/LmlucHV0VGV4dD8uWzBdPy5sYWJlbFwiPjwvc2ltcG8tdGV4dC1lbGVtZW50PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBnYXAtMiBkLW1kLWZsZXggbXQtMTVcIiAqbmdJZj1cImRhdGE/LmFjdGlvbj8uZGlzcGxheVwiIFtuZ0NsYXNzXT1cIltcclxuICAgICAgICAgICAgICBzdHlsZXM/LmxheW91dD8uYWxpZ24gPT09ICdsZWZ0JyA/ICdqdXN0aWZ5LWNvbnRlbnQtbWQtc3RhcnQnIDogJycsXHJcbiAgICAgICAgICAgICAgc3R5bGVzPy5sYXlvdXQ/LmFsaWduID09PSAnY2VudGVyJyA/ICdqdXN0aWZ5LWNvbnRlbnQtbWQtY2VudGVyJyA6ICcnLFxyXG4gICAgICAgICAgICAgIHN0eWxlcz8ubGF5b3V0Py5hbGlnbiA9PT0gJ3JpZ2h0JyA/ICdqdXN0aWZ5LWNvbnRlbnQtbWQtZW5kJyA6ICcnXHJcbiAgICAgICAgICAgIF1cIj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgPC9kaXY+XHJcblxyXG4gIDxzZWN0aW9uIGNsYXNzPVwibWFpbi1zZWN0aW9uXCI+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiZm9ybVN0YXR1cyAhPSAnUkVHSVNURVJFRCcgJiYgZm9ybVN0YXR1cyAhPSAnQURNSVRURUQnXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJzdWJUYWJzX3NlY3Rpb25cIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibGlzdF90YWJzIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGtleSBvZiBPYmplY3Qua2V5cyhmaWVsZERhdGEpXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaW5nbGVfdGFiIGN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cInNlbGVjdGVkS2V5ID0ga2V5XCJcclxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJzZWxlY3RlZEtleSA9PT0ga2V5ID8gJ3NpbmdsZV90YWJfYWN0aXZlJyA6ICdzaW5nbGVfdGFiJ1wiPlxyXG4gICAgICAgICAgICAgIHt7a2V5IHwgdGl0bGVjYXNlfX1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaW5nbGVfdGFiIGN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cInNlbGVjdGVkS2V5ID0gJ0RvY3VtZW50J1wiICpuZ0lmPVwiZGF0YT8uc2VjdGlvblR5cGUgPT09ICdhZG1pc3Npb25Gb3JtJ1wiXHJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInNlbGVjdGVkS2V5ID09PSAnRG9jdW1lbnQnID8gJ3NpbmdsZV90YWJfYWN0aXZlJyA6ICdzaW5nbGVfdGFiJ1wiPlxyXG4gICAgICAgICAgICBEb2N1bWVudFxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2luZ2xlX3RhYiBjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJyZWRpcmVjdFRvUGF5bWVudCgpXCJcclxuICAgICAgICAgICAgKm5nSWY9XCJkYXRhPy5zZWN0aW9uVHlwZSA9PT0gJ2FkbWlzc2lvbkZvcm0nXCJcclxuICAgICAgICAgICAgW25nQ2xhc3NdPVwic2VsZWN0ZWRLZXkgPT09ICdQYXltZW50JyA/ICdzaW5nbGVfdGFiX2FjdGl2ZScgOiAnc2luZ2xlX3RhYidcIj5cclxuICAgICAgICAgICAgUGF5bWVudFxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cIm1haW4tY29udGVudFwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGdyb3VwIG9mIGZpZWxkRGF0YVtzZWxlY3RlZEtleV0gPyBPYmplY3Qua2V5cyhmaWVsZERhdGFbc2VsZWN0ZWRLZXldKSA6IFtdO2xldCBncm91cEluZGV4ID0gaW5kZXhcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYm9keVwiICpuZ0lmPVwiZ3JvdXAgIT09ICdCYWNrdXAgQ29udGFjdCdcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJsaXN0X3RhYnMgYmFja1RvTGVhZHMgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICB7e2dyb3VwfX1cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJncm91cEluZGV4ID09IDAgJiYgT2JqZWN0LmtleXMoZmllbGREYXRhKVswXSA9PT0gc2VsZWN0ZWRLZXlcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImltYWdlLWJveFwiICpuZ0lmPVwiIXBheWxvYWQuaW1nVXJsXCI+XHJcbiAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImR1bW15LWltYWdlXCIgc3JjPVwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYXNzZXRzL2ltYWdlcy9tYXN0ZXIvYWRkLWltYWdlLnN2Z1wiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiZmlsZUlucHV0LmNsaWNrKClcIiBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW1hZ2VfYm94XCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZjX2Jyb3dzZV9idG5cIiBpZD1cImRpc3BsYXlfYnJvd3NlX2J0blwiIChjbGljayk9XCJmaWxlSW5wdXQuY2xpY2soKVwiPkNsaWNrIHRvXHJcbiAgICAgICAgICAgICAgICAgIHVwbG9hZDwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxpbnB1dCBzdHlsZT1cImRpc3BsYXk6IG5vbmU7XCIgaWQ9XCJ2ZW5kb3JJbWFnZVwiIHR5cGU9XCJmaWxlXCIgbmFtZT1cIm15ZmlsZVwiXHJcbiAgICAgICAgICAgICAgYWNjZXB0PVwiaW1hZ2UveC1wbmcsaW1hZ2UvanBlZyxpbWFnZS9qcGdcIiAoY2hhbmdlKT1cInVwZGF0ZUFkbWlzc2lvbkltYWdlKCRldmVudClcIiBjbGFzcz1cInBjLWJ0blwiXHJcbiAgICAgICAgICAgICAgaWQ9XCJicm93c2VfY29udGFjdF9pbWFnZVwiICNmaWxlSW5wdXQgLz5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJwYXlsb2FkLmltZ1VybFwiIGNsYXNzPVwiYWRkZWRJbWdcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidXBsb2FkZWRJbWdcIj5cclxuICAgICAgICAgICAgICAgIDxpbWcgIGFsdD1cIlwiIFtzcmNdPVwiZHMuYnlwYXNzU2VjdXJpdHlUcnVzdFVybChwYXlsb2FkLmltZ1VybClcIj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW1hZ2UtYnV0dG9uc1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvblwiIChjbGljayk9XCJmaWxlSW5wdXQuY2xpY2soKVwiPlxyXG4gICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2Fzc2V0cy9pbWFnZXMvYmxvZ3MvY2hhbmdlX2ltYWdlLnN2Z1wiIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICBDaGFuZ2UgSW1hZ2VcclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbiBkZWxldGUtY2hhbmdlXCIgKGNsaWNrKT1cImRlbGV0ZUltZygpXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGVsZXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9XCIuLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2Fzc2V0cy9pbWFnZXMvYmxvZ3MvZGVsZXRlX2ltYWdlLnN2Z1wiIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXY+RGVsZXRlPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG10LTFcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00IGNvbC0xMiBtdC0xXCIgKm5nRm9yPVwibGV0IGluZm8gb2YgZmllbGREYXRhW3NlbGVjdGVkS2V5XVtncm91cF1cIj5cclxuICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiXCIgY2xhc3M9XCJsYWJlbC10ZXh0XCI+e3tpbmZvLmZpZWxkTGFiZWx9fTwvbGFiZWw+Jm5ic3A7IDxzcGFuIHN0eWxlPVwiY29sb3I6IHJlZDtcIiAqbmdJZj1cImluZm8ucmVxdWlyZWRcIj4qPC9zcGFuPiA8YnI+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImlucHV0RGF0YTsgY29udGV4dDoge2RhdGE6IGluZm99XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJib2R5XCIgKm5nSWY9XCJmaWVsZERhdGFbc2VsZWN0ZWRLZXldLmhhc093blByb3BlcnR5KCdCYWNrdXAgQ29udGFjdCcpICYmIHN0dWRlbnRMaXZlV2l0aCA9PT0gJ3NpbmdsZSBwYXJlbnQnICYmIGdyb3VwSW5kZXggPT0gMCAmJiBPYmplY3Qua2V5cyhmaWVsZERhdGEpWzBdID09PSBzZWxlY3RlZEtleVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImxpc3RfdGFicyBiYWNrVG9MZWFkcyBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgIEJhY2t1cCBDb250YWN0IChPcHRpb25hbClcclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbXQtMVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwibXRiLTE1IGNoZWNrYm94LWxhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgbmFtZT1cIlwiIGlkPVwiXCIgWyhuZ01vZGVsKV09XCJwYXlsb2FkLnBhcmVudEF1dGhvcml6YXRpb25cIj5cclxuICAgICAgICAgICAgICAgICAgSSBhdXRob3JpemUgdGhlIHNjaG9vbCB0byByZWxlYXNlIHRoZSBjaGlsZCBvbmx5IHRvIHRoZSBwYXJlbnQgbGlzdGVkIGFib3ZlXHJcbiAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNCBjb2wtMTIgbXQtMVwiICpuZ0Zvcj1cImxldCBpbmZvIG9mIGZpZWxkRGF0YVtzZWxlY3RlZEtleV1bJ0JhY2t1cCBDb250YWN0J11cIj5cclxuICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiXCIgY2xhc3M9XCJsYWJlbC10ZXh0XCI+e3tpbmZvLmZpZWxkTGFiZWx9fTwvbGFiZWw+Jm5ic3A7IDxzcGFuIHN0eWxlPVwiY29sb3I6IHJlZDtcIlxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJpbmZvLnJlcXVpcmVkXCI+Kjwvc3Bhbj4gPGJyPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpbnB1dERhdGE7IGNvbnRleHQ6IHtkYXRhOiBpbmZvfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00IGNvbC0xMiBtdC0xXCI+XHJcbiAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cIlwiIGNsYXNzPVwibGFiZWwtdGV4dFwiPlVwbG9hZCBTdXBwb3J0aW5nIERvY3VtZW50IChPcHRpb25hbCk8L2xhYmVsPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC10ZXh0IHVwbG9hZC1maWxlXCIgKGNsaWNrKT1cImJhY2tVcERvY0lucHV0LmNsaWNrKClcIj5cclxuICAgICAgICAgICAgICAgIDxwPnt7YmFja3VwRG9jRmlsZSA/ICdGaWxlIFVwbG9hZGVkJyA6ICdVcGxvYWQgRmlsZSd9fTwvcD5cclxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5jbG91ZF91cGxvYWQ8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxpbnB1dCBpZD1cInZlbmRvckltYWdlXCIgdHlwZT1cImZpbGVcIiBuYW1lPVwibXlmaWxlXCIgaGlkZGVuXHJcbiAgICAgICAgICAgICAgICBhY2NlcHQ9XCIuZG9jLC5kb2N4LGFwcGxpY2F0aW9uL21zd29yZCxhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQud29yZHByb2Nlc3NpbmdtbC5kb2N1bWVudCxpbWFnZS94LXBuZyxpbWFnZS9qcGVnLGltYWdlL2pwZywucGRmLCB2aWRlby9tcDQsdmlkZW8veC1tYXRyb3NrYSx2aWRlby94LW1zdmlkZW8sdmlkZW8vcXVpY2t0aW1lXCJcclxuICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwidXBsb2FkQmFja1VwRG9jdW1lbnQoJGV2ZW50KVwiIGNsYXNzPVwicGMtYnRuXCJcclxuICAgICAgICAgICAgICAgIGlkPVwiYnJvd3NlX2NvbnRhY3RfaW1hZ2VcIiAjYmFja1VwRG9jSW5wdXQgLz5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInBheW1lbnQtZGV0YWlsc1wiICpuZ0lmPVwic2VsZWN0ZWRLZXkgPT09ICdEb2N1bWVudCcgJiYgZGF0YT8uc2VjdGlvblR5cGUgPT09ICdhZG1pc3Npb25Gb3JtJ1wiPlxyXG4gICAgICAgICAgPHNpbXBvLWRvY3VtZW50IFtkb2N1bWVudExpc3RdPVwiZG9jdW1lbnRMaXN0XCI+PC9zaW1wby1kb2N1bWVudD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicGF5bWVudC1kZXRhaWxzXCIgKm5nSWY9XCJzZWxlY3RlZEtleSA9PT0gJ1BheW1lbnQnICYmIGRhdGE/LnNlY3Rpb25UeXBlID09PSAnYWRtaXNzaW9uRm9ybSdcIj5cclxuICAgICAgICAgIDxzaW1wby1wYXltZW50LWRldGFpbHMgW2FkbWlzc2lvbkRhdGFdPVwicGF5bG9hZFwiXHJcbiAgICAgICAgICAgIFtzdWJzY3JpcHRpb25zRGF0YV09XCJzdWJzY3JpcHRpb25zRGF0YVwiIFt0ZXJtUGF5bWVudExpc3RdPVwidGVybVBheW1lbnRMaXN0XCI+PC9zaW1wby1wYXltZW50LWRldGFpbHM+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbi1wYXJlbnRcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBidXR0b24gb2YgZGF0YT8uYWN0aW9uPy5idXR0b25zXCI+XHJcbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uXCIgKGNsaWNrKT1cInN1Ym1pdEZvcm0oKVwiIHNpbXBvQnV0dG9uRGlyZWN0aXZlIFtpZF09XCJkYXRhPy5pZCtidXR0b24uaWRcIlxyXG4gICAgICAgICAgICBbYnV0dG9uU3R5bGVdPVwiYnV0dG9uLnN0eWxlc1wiICpuZ0lmPVwiKGRhdGE/LnNlY3Rpb25UeXBlID09PSAnYWRtaXNzaW9uRm9ybScgJiYgc2VsZWN0ZWRLZXkgPT0gJ1BheW1lbnQnKSB8fFxyXG4gICAgICAgICAgICAoZGF0YT8uc2VjdGlvblR5cGUgPT09ICdyZWdpc3RyYXRpb25Gb3JtJyAmJlxyXG4gICAgICAgICAgICAgIChPYmplY3Qua2V5cyhmaWVsZERhdGEpW09iamVjdC5rZXlzKGZpZWxkRGF0YSkubGVuZ3RoIC0gMV0gPT0gc2VsZWN0ZWRLZXkpKVwiXHJcbiAgICAgICAgICAgIFtjb2xvcl09XCJkYXRhPy5zdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCI+e3tidXR0b24/LmNvbnRlbnQ/LmxhYmVsfX08L2J1dHRvbj5cclxuXHJcbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uXCIgKGNsaWNrKT1cImNvbnRpbnVlQWRtaXNzaW9uKClcIiBzaW1wb0J1dHRvbkRpcmVjdGl2ZSBbaWRdPVwiZGF0YT8uaWQrYnV0dG9uLmlkXCJcclxuICAgICAgICAgICAgW2J1dHRvblN0eWxlXT1cImJ1dHRvbi5zdHlsZXNcIiAqbmdJZj1cInNlbGVjdGVkS2V5ICE9ICdQYXltZW50JyAmJiBkYXRhPy5zZWN0aW9uVHlwZSA9PT0gJ2FkbWlzc2lvbkZvcm0nXCJcclxuICAgICAgICAgICAgW2NvbG9yXT1cImRhdGE/LnN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIj5Db250aW51ZTwvYnV0dG9uPlxyXG5cclxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidXR0b25cIiAoY2xpY2spPVwiY29udGludWVBZG1pc3Npb24oKVwiIHNpbXBvQnV0dG9uRGlyZWN0aXZlIFtpZF09XCJkYXRhPy5pZCtidXR0b24uaWRcIlxyXG4gICAgICAgICAgICBbYnV0dG9uU3R5bGVdPVwiYnV0dG9uLnN0eWxlc1wiXHJcbiAgICAgICAgICAgICpuZ0lmPVwiZGF0YT8uc2VjdGlvblR5cGUgPT09ICdyZWdpc3RyYXRpb25Gb3JtJyAmJiAoT2JqZWN0LmtleXMoZmllbGREYXRhKVtPYmplY3Qua2V5cyhmaWVsZERhdGEpLmxlbmd0aCAtIDFdICE9IHNlbGVjdGVkS2V5KVwiXHJcbiAgICAgICAgICAgIFtjb2xvcl09XCJkYXRhPy5zdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCI+Q29udGludWU8L2J1dHRvbj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiZW1wdHlUZXh0XCIgKm5nSWY9XCJmb3JtU3RhdHVzID09ICdSRUdJU1RFUkVEJyB8fCBmb3JtU3RhdHVzID09ICdBRE1JVFRFRCdcIj5cclxuICAgICAgPGltZyBbc3JjXT1cImNvbnRlbnQ/LmltYWdlPy51cmxcIiBhbHQ9XCJcIiAqbmdJZj1cImNvbnRlbnQ/LmltYWdlPy5zaG93SW1hZ2VcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImhlYWRpbmctbGFyZ2VcIiBbaW5uZXJIdG1sXT1cImNvbnRlbnQ/LmlucHV0VGV4dD8uWzFdPy52YWx1ZVwiPjwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9zZWN0aW9uPlxyXG5cclxuICA8bmctdGVtcGxhdGUgI2lucHV0RGF0YSBsZXQtZmllbGQ9XCJkYXRhXCI+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiZmllbGQuZGF0YVR5cGUgPT0gJ0lNQUdFJ1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiaW1hZ2UtYm94XCI+XHJcbiAgICAgICAgPGltZyBjbGFzcz1cImR1bW15LWltYWdlXCIgc3JjPVwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYXNzZXRzL2ltYWdlcy9tYXN0ZXIvYWRkLWltYWdlLnN2Z1wiXHJcbiAgICAgICAgICAoY2xpY2spPVwiZmlsZUlucHV0LmNsaWNrKClcIiBhbHQ9XCJcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJmY19icm93c2VfYnRuXCIgaWQ9XCJkaXNwbGF5X2Jyb3dzZV9idG5cIiAoY2xpY2spPVwiZmlsZUlucHV0LmNsaWNrKClcIj5DbGljayB0b1xyXG4gICAgICAgICAgICB1cGxvYWQ8L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8aW5wdXQgc3R5bGU9XCJkaXNwbGF5OiBub25lO1wiIGlkPVwidmVuZG9ySW1hZ2VcIiB0eXBlPVwiZmlsZVwiIG5hbWU9XCJteWZpbGVcIiBhY2NlcHQ9XCJpbWFnZS94LXBuZyxpbWFnZS9qcGVnLGltYWdlL2pwZ1wiXHJcbiAgICAgICAgKGNoYW5nZSk9XCJ1cGRhdGVBZG1pc3Npb25JbWFnZSgkZXZlbnQpXCIgY2xhc3M9XCJwYy1idG5cIiBpZD1cImJyb3dzZV9jb250YWN0X2ltYWdlXCIgI2ZpbGVJbnB1dCAvPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiZmllbGQuZGF0YVR5cGUgPT09ICdURVhUJ1wiPlxyXG4gICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImlucHV0LXRleHRcIiBbcGxhY2Vob2xkZXJdPVwiJ0VudGVyICcrZmllbGQuZmllbGRMYWJlbFwiIFsobmdNb2RlbCldPVwiZmllbGQuZmllbGRWYWx1ZVwiPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiZmllbGQuZGF0YVR5cGUgPT09ICdOVU1CRVInXCI+XHJcbiAgICAgIDxpbnB1dCB0eXBlPVwibnVtYmVyXCIgY2xhc3M9XCJpbnB1dC10ZXh0XCIgW3BsYWNlaG9sZGVyXT1cIidFbnRlciAnK2ZpZWxkLmZpZWxkTGFiZWxcIiBbKG5nTW9kZWwpXT1cImZpZWxkLmZpZWxkVmFsdWVcIj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiAqbmdJZj1cImZpZWxkLmRhdGFUeXBlID09PSAnTU9ORVknXCI+XHJcbiAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiaW5wdXQtdGV4dFwiIFtwbGFjZWhvbGRlcl09XCInRW50ZXIgJytmaWVsZC5maWVsZExhYmVsXCIgWyhuZ01vZGVsKV09XCJmaWVsZC5maWVsZFZhbHVlXCI+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgKm5nSWY9XCJmaWVsZC5kYXRhVHlwZSA9PT0gJ0RBVEUnXCI+XHJcbiAgICAgIDxpbnB1dCB0eXBlPVwiZGF0ZVwiIGNsYXNzPVwiaW5wdXQtdGV4dFwiIFsobmdNb2RlbCldPVwiZmllbGQuZmllbGRWYWx1ZVwiIFtwbGFjZWhvbGRlcl09XCInU2VsZWN0ICcrZmllbGQuZmllbGRMYWJlbFwiPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiZmllbGQuZGF0YVR5cGUgPT09ICdEUk9QRE9XTidcIiBjbGFzcz1cImFkbWlzc2lvblwiPlxyXG4gICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJpbnB1dC10ZXh0XCIgYXBwZWFyYW5jZT1cIm91dGxpbmVcIj5cclxuICAgICAgICA8bWF0LXNlbGVjdCBjbGFzcz1cImlucHV0U3R5bGVcIiBwbGFjZWhvbGRlcj1cIi0tU2VsZWN0LS1cIiBbKG5nTW9kZWwpXT1cImZpZWxkLmZpZWxkVmFsdWVcIiBbbXVsdGlwbGVdPVwiZmllbGQubXVsdGlwbGVTZWxlY3Rpb25cIj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIoZmllbGQ/LnZhbHVlPy5sZW5ndGggfHwgMCkgPiAwXCI+XHJcbiAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBpdGVtIG9mIGZpZWxkLnZhbHVlXCIgW3ZhbHVlXT1cIml0ZW0/LnZhbHVlXCIgKGNsaWNrKT1cIm1hc3RlckRyb3Bkb3duVmFsdWVDaGFuZ2UoaXRlbSwgZmllbGQpXCI+e3tpdGVtLmxhYmVsfX08L21hdC1vcHRpb24+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIoZmllbGQ/LnZhbHVlPy5sZW5ndGggfHwgMCkgPT0gMFwiPlxyXG4gICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBmaWVsZC5zb3VyY2VEYXRhW2ZpZWxkLmRhdGFTb3VyY2VUeXBlXVwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImlucHV0RmllbGRDaGFuZ2UoaXRlbSwgZmllbGQpXCIgW3ZhbHVlXT1cIml0ZW0/Lm5hbWVcIj57e2l0ZW0ubmFtZX19PC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9tYXQtc2VsZWN0PlxyXG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiZmllbGQuZGF0YVR5cGUgPT09ICdDSEVDS0JPWCdcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIihmaWVsZD8udmFsdWU/Lmxlbmd0aCB8fCAwKSA+IDBcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBtYi01XCIgKm5nRm9yPVwibGV0IGRhdGEgb2YgZmllbGQudmFsdWVcIj5cclxuICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIiB0eXBlPVwiY2hlY2tib3hcIiB2YWx1ZT1cIlwiIGlkPVwiZmxleENoZWNrQ2hlY2tlZFwiIFsobmdNb2RlbCldPVwiZGF0YS5jaGVja2VkXCI+XHJcbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCIgZm9yPVwiZmxleENoZWNrQ2hlY2tlZFwiPlxyXG4gICAgICAgICAgICB7e2RhdGEubGFiZWx9fVxyXG4gICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKGZpZWxkPy52YWx1ZT8ubGVuZ3RoIHx8IDApID09IDBcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBtYi01XCIgKm5nRm9yPVwibGV0IGRhdGEgb2YgZmllbGQuc291cmNlRGF0YVtmaWVsZC5kYXRhU291cmNlVHlwZV1cIj5cclxuICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIiB0eXBlPVwiY2hlY2tib3hcIiB2YWx1ZT1cIlwiIGlkPVwiZmxleENoZWNrQ2hlY2tlZFwiIFsobmdNb2RlbCldPVwiZGF0YS5jaGVja2VkXCI+XHJcbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCIgZm9yPVwiZmxleENoZWNrQ2hlY2tlZFwiPlxyXG4gICAgICAgICAgICB7e2RhdGEubmFtZX19XHJcbiAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcblxyXG5cclxuICA8bmctY29udGFpbmVyICpuZ0lmPVwic3R5bGVzPy5kZXZpZGVyPy5kaXNwbGF5XCI+XHJcbiAgICA8c2ltcG8tc3ZnLWRpdmlkZXIgW2RpdmlkZXJUeXBlXT1cInN0eWxlcz8uZGV2aWRlcj8uZGV2aWRlclR5cGVcIlxyXG4gICAgICBbY29sb3JdPVwibmV4dENvbXBvbmVudENvbG9yPy5jb2xvclwiPjwvc2ltcG8tc3ZnLWRpdmlkZXI+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbiAgPGRpdiBbbmdDbGFzc109XCJ7J2hvdmVyX2VmZmVjdCc6IGVkaXR9XCIgKm5nSWY9XCJzaG93RWRpdG9yc1wiPlxyXG4gICAgPHNpbXBvLWhvdmVyLWVsZW1lbnRzIFtkYXRhXT1cImRhdGFcIiBbaW5kZXhdPVwiaW5kZXhcIiBbZWRpdE9wdGlvbnNdPVwiZWRpdFwiPjwvc2ltcG8taG92ZXItZWxlbWVudHM+XHJcbiAgPC9kaXY+XHJcbjwvc2VjdGlvbj5cclxuIl19
430
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0cmF0aW9uLWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9zZWN0aW9ucy9yZWdpc3RyYXRpb24tZm9ybS9yZWdpc3RyYXRpb24tZm9ybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL3NlY3Rpb25zL3JlZ2lzdHJhdGlvbi1mb3JtL3JlZ2lzdHJhdGlvbi1mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxRQUFRLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBRTlDLE9BQU8sRUFBRSxTQUFTLEVBQWMsS0FBSyxFQUFnQyxNQUFNLGVBQWUsQ0FBQztBQUMzRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUUzRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM5RCxPQUFPLEVBQWEsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFFMUYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDekUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDM0UsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDNUUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDekYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FB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LENBQUMsTUFBTSxDQUFDLENBQUM7UUFDeEMsQ0FBQztRQUVELE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7OEdBM2FVLHlCQUF5QjtrR0FBekIseUJBQXlCLDRNQzVFdEMseWthQXdPQSx5eklEM0xJLFlBQVksaWtCQUNaLGlCQUFpQiw4QkFDakIsbUJBQW1CLDZRQUNuQixvQkFBb0IsMmRBQ3BCLGVBQWU7Z0JBRWYsV0FBVztnQkFDWCxrQkFBa0IseUZBQ2xCLG1CQUFtQiwwR0FFbkIsZUFBZSxtRkFDZix3QkFBd0Isb0hBSXhCLG1CQUFtQixtRkFHbkIsY0FBYyxnRkFFZCxnQkFBZ0Isb0ZBR2hCLGVBQWUsZ01BQ2YsZUFBZSwrdEJBQ2YsV0FBVyxzOEJBQ1gsYUFBYTs7MkZBS0oseUJBQXlCO2tCQW5DckMsU0FBUzsrQkFDRSx5QkFBeUIsY0FDdkIsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osaUJBQWlCO3dCQUNqQixtQkFBbUI7d0JBQ25CLG9CQUFvQjt3QkFDcEIsZUFBZTt3QkFDZixvQkFBb0I7d0JBQ3BCLFdBQVc7d0JBQ1gsa0JBQWtCO3dCQUNsQixtQkFBbUI7d0JBQ25CLHlCQUF5Qjt3QkFDekIsZUFBZTt3QkFDZix3QkFBd0I7d0JBQ3hCLHdCQUF3Qjt3QkFDeEIscUJBQXFCO3dCQUNyQiw4QkFBOEI7d0JBQzlCLG1CQUFtQjt3QkFDbkIsZUFBZTt3QkFDZiwwQkFBMEI7d0JBQzFCLGNBQWM7d0JBQ2QsdUJBQXVCO3dCQUN2QixnQkFBZ0I7d0JBQ2hCLGdDQUFnQzt3QkFDaEMsZ0NBQWdDO3dCQUNoQyxlQUFlO3dCQUNmLGVBQWU7d0JBQ2YsV0FBVzt3QkFDWCxhQUFhO3FCQUNkOytOQUtRLElBQUk7c0JBQVosS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcmVzdC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgZm9ya0pvaW4sIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBNYXRTbmFja0JhciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NuYWNrLWJhcic7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0R3JpZExpc3RNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9ncmlkLWxpc3QnO1xyXG5pbXBvcnQgeyBTaW1wb0VsZW1lbnRzTW9kdWxlIH0gZnJvbSAnLi4vLi4vZWxlbWVudHMvaW5kZXgnO1xyXG5pbXBvcnQgeyBCYWNrZ3JvdW5kTW9kZWwsIFN0eWxlc01vZGVsIH0gZnJvbSAnLi4vLi4vc3R5bGVzL3N0eWxlLm1vZGVsJztcclxuaW1wb3J0IHsgU2ltcG9Db21wb25lbnRNb2R1bGUgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL2luZGV4JztcclxuaW1wb3J0IHsgTWF0RGlhbG9nLCBNYXREaWFsb2dNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBTaW1wb0J1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2VsZW1lbnRzL3NpbXBvLWJ1dHRvbi9zaW1wby1idXR0b24uY29tcG9uZW50JztcclxuXHJcbmltcG9ydCB7IEFuaW1hdGlvbkRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9hbmltYXRpb24tZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgQmFja2dyb3VuZERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9iYWNrZ3JvdW5kLWRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IENvbnRlbnRGaXREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvY29udGVudC1maXQtZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgQmFubmVyQ29udGVudEZpdERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9iYW5uZXItY29udGVudC1maXQtZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgQm9yZGVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL2JvcmRlci1kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBCdXR0b25EaXJlY3RpdmVEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvYnV0dG9uLWRpcmVjdGl2ZS5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBDb2x1bW5EaXJlY3RpdmVEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvY29sdW1uLWRpcmVjdGl2ZS5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBDb250YWluZXJGaXREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvY29udGFpbmVyLWZpci5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBzaW1wb0NvbmV0ZW5BbGlnbm1lbnREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvY29udGVudC1hbGlnbm1lbnQtZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgQ29ybmVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL2Nvcm5lci1kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBTaW1wb0Zvb3RlckxheW91dERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9mb290ZXItbGF5b3V0LWRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IEhvdmVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL2hvdmVyLWVsZW1lbnQtZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgSW1hZ2VEaXJlY3RpdmVEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvaW1hZ2UtZGlyZWN0aXZlLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IE92ZXJsYXlEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvb3ZlcmxheS1kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBQb3NpdGlvbkxheW91dERpcmVjdGl2ZURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9wb3NpdGlvbi1sYXlvdXQtZGlyZWN0aXZlLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFRleHRCYWNrZ3JvdW5kRGlyZWN0aXZlRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL3RleHQtYmFja2dyb3VuZC1kaXJlY3RpdmUuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgRXZlbnRzU2VydmljZSB9IGZyb20gJy4vLi4vLi4vc2VydmljZXMvZXZlbnRzLnNlcnZpY2UnO1xyXG5pbXBvcnQgQmFzZVNlY3Rpb24gZnJvbSAnLi4vQmFzZVNlY3Rpb24nO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBUZXh0Q29udGVudE1vZGVsLCBUZXh0U2VjdGlvbk1vZGVsIH0gZnJvbSAnLi4vdGV4dC1zZWN0aW9uL3RleHQtc2VjdGlvbi5tb2RlbCc7XHJcbmltcG9ydCB7IE1hdE9wdGlvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXRTZWxlY3RNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zZWxlY3QnO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuaW1wb3J0IHsgSW1hZ2VVcGxhb2RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvaW1hZ2UtdXBsb2FkLXNlcnZpY2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IFJlZ2lzdHJhdGlvbkZvcm1Db250ZW50TW9kZWwsIFJlZ2lzdHJhdGlvbkZvcm1Nb2RlbCB9IGZyb20gJy4vcmVnaXN0cmF0aW9uRm9ybS5tb2RlbCc7XHJcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NpbXBvLXJlZ2lzdHJhdGlvbi1mb3JtJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIE1hdEdyaWRMaXN0TW9kdWxlLFxyXG4gICAgU2ltcG9FbGVtZW50c01vZHVsZSxcclxuICAgIFNpbXBvQ29tcG9uZW50TW9kdWxlLFxyXG4gICAgTWF0RGlhbG9nTW9kdWxlLFxyXG4gICAgU2ltcG9CdXR0b25Db21wb25lbnQsXHJcbiAgICAvL2RpcmVjdGl2ZVxyXG4gICAgQW5pbWF0aW9uRGlyZWN0aXZlLFxyXG4gICAgQmFja2dyb3VuZERpcmVjdGl2ZSxcclxuICAgIEJhbm5lckNvbnRlbnRGaXREaXJlY3RpdmUsXHJcbiAgICBCb3JkZXJEaXJlY3RpdmUsXHJcbiAgICBCdXR0b25EaXJlY3RpdmVEaXJlY3RpdmUsXHJcbiAgICBDb2x1bW5EaXJlY3RpdmVEaXJlY3RpdmUsXHJcbiAgICBDb250YWluZXJGaXREaXJlY3RpdmUsXHJcbiAgICBzaW1wb0NvbmV0ZW5BbGlnbm1lbnREaXJlY3RpdmUsXHJcbiAgICBDb250ZW50Rml0RGlyZWN0aXZlLFxyXG4gICAgQ29ybmVyRGlyZWN0aXZlLFxyXG4gICAgU2ltcG9Gb290ZXJMYXlvdXREaXJlY3RpdmUsXHJcbiAgICBIb3ZlckRpcmVjdGl2ZSxcclxuICAgIEltYWdlRGlyZWN0aXZlRGlyZWN0aXZlLFxyXG4gICAgT3ZlcmxheURpcmVjdGl2ZSxcclxuICAgIFBvc2l0aW9uTGF5b3V0RGlyZWN0aXZlRGlyZWN0aXZlLFxyXG4gICAgVGV4dEJhY2tncm91bmREaXJlY3RpdmVEaXJlY3RpdmUsXHJcbiAgICBNYXRPcHRpb25Nb2R1bGUsXHJcbiAgICBNYXRTZWxlY3RNb2R1bGUsXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuICAgIE1hdEljb25Nb2R1bGVcclxuICBdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9yZWdpc3RyYXRpb24tZm9ybS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL3JlZ2lzdHJhdGlvbi1mb3JtLmNvbXBvbmVudC5jc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSZWdpc3RyYXRpb25Gb3JtQ29tcG9uZW50IGV4dGVuZHMgQmFzZVNlY3Rpb24gaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveXtcclxuICBASW5wdXQoKSBkYXRhPzogUmVnaXN0cmF0aW9uRm9ybU1vZGVsO1xyXG4gIEBJbnB1dCgpIGluZGV4PyA6IG51bWJlcjtcclxuICBASW5wdXQoKSBlZGl0PyA6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgbmV4dENvbXBvbmVudENvbG9yPzogQmFja2dyb3VuZE1vZGVsO1xyXG4gIGNvbnRlbnQ6IFJlZ2lzdHJhdGlvbkZvcm1Db250ZW50TW9kZWwgfCB1bmRlZmluZWQ7XHJcbiAgc3R5bGVzOiBTdHlsZXNNb2RlbCB8IHVuZGVmaW5lZDtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZXN0U2VydmljZTogUmVzdFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHNuYWNrQmFyOiBNYXRTbmFja0JhcixcclxuICAgIHByaXZhdGUgX2V2ZW50U2VydmljZSA6IEV2ZW50c1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJvdXRlcjogQWN0aXZhdGVkUm91dGUsXHJcbiAgICBwdWJsaWMgZHM6IERvbVNhbml0aXplcixcclxuICAgIHB1YmxpYyBpbWFnZVVwbG9hZFNlcnZpY2U6IEltYWdlVXBsYW9kU2VydmljZVxyXG4gICkge1xyXG4gICAgc3VwZXIoKTtcclxuICB9XHJcblxyXG4gIE9iamVjdCA9IE9iamVjdDtcclxuICBwYXlsb2FkOiBhbnkgPSB7XHJcbiAgICBcImJ1c2luZXNzRGV0YWlsc1wiOiB7XHJcbiAgICAgIFwiaWRcIjogbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJiSWRcIikgPz8gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJidXNpbmVzc0lkXCIpLFxyXG4gICAgICBcIm5hbWVcIjogbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJiTmFtZVwiKSA/PyBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImJ1c2luZXNzTmFtZVwiKVxyXG4gICAgfSxcclxuICAgIFwiZmllbGRJdGVtc1wiOiBbXSxcclxuICAgIFwiaW1nVXJsXCI6ICcnLFxyXG4gICAgJ2RvY3VtZW50cyc6IFtdLFxyXG4gICAgXCJwYXJlbnRBdXRob3JpemF0aW9uXCI6IGZhbHNlLFxyXG4gICAgXCJiYWNrdXBEb2NcIiA6ICcnLFxyXG4gICAgXCJwYXltZW50UGxhblR5cGVcIiA6ICdBTk5VQUxMWSdcclxuICB9XHJcblxyXG4gIHNlbGVjdGVkS2V5OiBhbnk7XHJcbiAgZmllbGREYXRhOiBhbnkgPSB7fVxyXG4gIGJ1c2luZXNzSWQ6IGFueTtcclxuICBzZWxlY3RlZEdyYWRlSWQ6IGFueTtcclxuICBzZWxlY3RlZEFjYWRlbWljWWVhcjogYW55O1xyXG4gIGRvY3VtZW50TGlzdDogYW55W10gPSBbXTtcclxuICBmb3JtU3RhdHVzOiBzdHJpbmcgPSAnJ1xyXG4gIHN0dWRlbnRMaXZlV2l0aDogYW55ID0gJydcclxuICBiYWNrdXBEb2NGaWxlPzogRmlsZTtcclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLnJvdXRlci5xdWVyeVBhcmFtcy5zdWJzY3JpYmUoKHBhcmFtOiBhbnkpID0+IHtcclxuICAgICAgaWYocGFyYW1bJ2VJZCddKVxyXG4gICAgICAgIHRoaXMucGF5bG9hZFsnZW5xdWlyeUlkJ10gPSBwYXJhbVsnZUlkJ107XHJcblxyXG4gICAgICBpZihwYXJhbVsncklkJ10pXHJcbiAgICAgICAgdGhpcy5wYXlsb2FkWydyZWdpc3RyYXRpb25JZCddID0gcGFyYW1bJ3JJZCddO1xyXG5cclxuICAgICAgaWYocGFyYW1bJ2JJZCddKVxyXG4gICAgICAgIHRoaXMuYnVzaW5lc3NJZCA9IHBhcmFtWydiSWQnXTtcclxuXHJcbiAgICAgIGlmKHBhcmFtWyd0SWQnXSlcclxuICAgICAgICB0aGlzLnBheWxvYWRbJ3RlbXBsYXRlSWQnXSA9IHBhcmFtWyd0SWQnXTtcclxuXHJcbiAgICAgIHRoaXMucGF5bG9hZC5idXNpbmVzc0RldGFpbHMuaWQgPSB0aGlzLmJ1c2luZXNzSWQ7XHJcblxyXG4gICAgICBpZih0aGlzLnBheWxvYWRbJ3JlZ2lzdHJhdGlvbklkJ10gfHwgdGhpcy5wYXlsb2FkWydlbnF1aXJ5SWQnXSkge1xyXG4gICAgICAgIHRoaXMuZ2V0Rm9ybWRhdGEodGhpcy5wYXlsb2FkWydyZWdpc3RyYXRpb25JZCddIHx8IHRoaXMucGF5bG9hZFsnZW5xdWlyeUlkJ10pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuZ2V0QWxsRmllbGRzKCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuZ2V0QUxMRG9jdW1lbnRMaXN0KCk7XHJcblxyXG4gICAgfSlcclxuXHJcbiAgICAvLyB0aGlzLmJ1c2luZXNzSWQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImJJZFwiKSA/PyBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImJ1c2luZXNzSWRcIik7XHJcblxyXG4gICAgdGhpcy5jb250ZW50ID0gdGhpcy5kYXRhPy5jb250ZW50O1xyXG4gICAgdGhpcy5zdHlsZXMgPSB0aGlzLmRhdGE/LnN0eWxlcztcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy5mb3JtRmllbGRDaGFuZ2VTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBnZXRGb3JtZGF0YShhZG1pc3Npb25JZDogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBzZXJ2ZXJDYWxsID0gZm9ya0pvaW4oe1xyXG4gICAgICBhZG1pc3Npb25EYXRhOiB0aGlzLmRhdGE/LnNlY3Rpb25UeXBlID09PSAncmVnaXN0cmF0aW9uRm9ybScgPyB0aGlzLnJlc3RTZXJ2aWNlLmdldExlYWRCeUlkKGFkbWlzc2lvbklkKSA6IHRoaXMucmVzdFNlcnZpY2UuZ2V0UmVnaXN0cmF0aW9uTGlzdCh7aWQ6IGFkbWlzc2lvbklkLCBwYWdlTm86IDAsIHBhZ2VTaXplOiAxfSksXHJcbiAgICAgIGZpZWxkRGF0YTogdGhpcy5yZXN0U2VydmljZS5nZXRTZWxlY3RlZExpc3RGaWVsZHModGhpcy5idXNpbmVzc0lkLCB0aGlzLmRhdGE/LnNlY3Rpb25UeXBlID09PSAncmVnaXN0cmF0aW9uRm9ybScgPyAnUkVHSVNUUkFUSU9OJyA6ICdBRE1JU1NJT04nLCAgdGhpcy5kYXRhPy5zZWN0aW9uVHlwZSA9PT0gJ3JlZ2lzdHJhdGlvbkZvcm0nID8gJ1JFR0lTVFJBVElPTicgOiAnQURNSVNTSU9OJylcclxuICAgIH0pXHJcblxyXG4gICAgc2VydmVyQ2FsbC5zdWJzY3JpYmUoKHJlc3VsdDogYW55KSA9PiB7XHJcbiAgICAgIGxldCBhZG1pc3Npb25EYXRhID0gdGhpcy5kYXRhPy5zZWN0aW9uVHlwZSA9PT0gJ3JlZ2lzdHJhdGlvbkZvcm0nID8gcmVzdWx0LmFkbWlzc2lvbkRhdGEuZGF0YSA6IHJlc3VsdC5hZG1pc3Npb25EYXRhLmRhdGEuZGF0YVswXTtcclxuICAgICAgbGV0IGZpZWxkRGF0YSA9IHJlc3VsdC5maWVsZERhdGEuZGF0YTtcclxuXHJcbiAgICAgIHRoaXMuZm9ybVN0YXR1cyA9IGFkbWlzc2lvbkRhdGEuc3RhdHVzXHJcblxyXG4gICAgICAvLyB0aGlzLnBheWxvYWQgPSBhZG1pc3Npb25EYXRhO1xyXG4gICAgICB0aGlzLnBheWxvYWRbJ2RvY3VtZW50cyddID0gW107XHJcbiAgICAgIHRoaXMucGF5bG9hZC5idXNpbmVzc0RldGFpbHMuaWQgPSB0aGlzLmJ1c2luZXNzSWQ7XHJcbiAgICAgIHRoaXMucGF5bG9hZC5pbWdVcmwgPSBhZG1pc3Npb25EYXRhLmltZ1VybFxyXG5cclxuICAgICAgYWRtaXNzaW9uRGF0YVsnZmllbGRNYXAnXSA9IHt9O1xyXG4gICAgICBmb3IobGV0IGZpZWxkSXRlbSBvZiB0aGlzLmRhdGE/LnNlY3Rpb25UeXBlID09PSAncmVnaXN0cmF0aW9uRm9ybScgPyAoYWRtaXNzaW9uRGF0YT8uZmllbGREYXRhIHx8IFtdKSA6IChhZG1pc3Npb25EYXRhPy5maWVsZEl0ZW1zIHx8IFtdKSkge1xyXG4gICAgICAgIGlmKGZpZWxkSXRlbS5maWVsZE5hbWUgPT09ICdBY2FkZW1pYyBZZWFyJykge1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZEFjYWRlbWljWWVhciA9IGZpZWxkSXRlbS5maWVsZFZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZihmaWVsZEl0ZW0udHlwZSAhPSBudWxsKSB7XHJcbiAgICAgICAgICBhZG1pc3Npb25EYXRhWydmaWVsZE1hcCddW2ZpZWxkSXRlbS50eXBlXSA9IGZpZWxkSXRlbS5maWVsZFZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgaWQgPSBmaWVsZEl0ZW0uZmllbGROYW1lICsgZmllbGRJdGVtLmZpZWxkR3JvdXBOYW1lO1xyXG4gICAgICAgIGFkbWlzc2lvbkRhdGFbJ2ZpZWxkTWFwJ11baWRdID0gZmllbGRJdGVtLmZpZWxkVmFsdWU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuZmllbGREYXRhID0gdGhpcy5yZXN0U2VydmljZS5nZXRGaWVsZHNUb0Rpc3BsYXkoZmllbGREYXRhLmRhdGEpO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkS2V5ID0gdGhpcy5PYmplY3Qua2V5cyh0aGlzLmZpZWxkRGF0YSlbMF1cclxuXHJcbiAgICAgIGZvcihsZXQgc3RlcCBvZiB0aGlzLk9iamVjdC5rZXlzKHRoaXMuZmllbGREYXRhKSkge1xyXG4gICAgICAgIGZvcihsZXQgZ3JvdXAgb2YgT2JqZWN0LmtleXModGhpcy5maWVsZERhdGFbc3RlcF0pKSB7XHJcbiAgICAgICAgICBmb3IobGV0IGZpZWxkIG9mIHRoaXMuZmllbGREYXRhW3N0ZXBdW2dyb3VwXSkge1xyXG4gICAgICAgICAgICBpZihmaWVsZC50eXBlICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICBmaWVsZC5maWVsZFZhbHVlID0gYWRtaXNzaW9uRGF0YVsnZmllbGRNYXAnXVtmaWVsZC50eXBlXTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBmaWVsZC5maWVsZFZhbHVlID0gYWRtaXNzaW9uRGF0YVsnZmllbGRNYXAnXVtmaWVsZC5maWVsZExhYmVsICsgZ3JvdXBdO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZihmaWVsZD8udHlwZSA9PT0gJ0dSQURFJylcclxuICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUdyYWRlKGZpZWxkLnNvdXJjZURhdGFbZmllbGQuZGF0YVNvdXJjZVR5cGVdLCBmaWVsZC5maWVsZFZhbHVlKTtcclxuXHJcbiAgICAgICAgICAgIGlmKGZpZWxkLmRhdGFUeXBlID09PSAnQ0hFQ0tCT1gnKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5mb3JtYXRDaGVja0JveFZhbHVlKGZpZWxkKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5nZXRGZWVTdHJ1Y3R1cmUoKTtcclxuICAgIH0pXHJcblxyXG4gIH1cclxuXHJcbiAgdXBkYXRlR3JhZGUoZ3JhZGVMaXN0IDphbnlbXSwgZ3JhZGVOYW1lOiBhbnkpIHtcclxuICAgIGZvcihsZXQgZ3JhZGUgb2YgZ3JhZGVMaXN0KSB7XHJcbiAgICAgIGlmKGdyYWRlLm5hbWUgPT09IGdyYWRlTmFtZSl7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEdyYWRlSWQgPSBncmFkZS5pZDtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZm9ybWF0Q2hlY2tCb3hWYWx1ZShmaWVsZDogYW55KSB7XHJcbiAgICBpZihmaWVsZC52YWx1ZSkge1xyXG4gICAgICBmb3IobGV0IGZpZWxkVmFsdWUgb2YgZmllbGQudmFsdWUpIHtcclxuICAgICAgICBpZihmaWVsZC5maWVsZFZhbHVlPy5pbmNsdWRlcyhmaWVsZFZhbHVlLnZhbHVlKSkge1xyXG4gICAgICAgICAgZmllbGRWYWx1ZS5jaGVja2VkID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBmb3IobGV0IGZpZWxkVmFsdWUgb2YgZmllbGQuc291cmNlRGF0YT8uW2ZpZWxkLmRhdGFTb3VyY2VUeXBlXSB8fCBbXSkge1xyXG4gICAgICAgIGlmKGZpZWxkLmZpZWxkVmFsdWU/LmluY2x1ZGVzKGZpZWxkVmFsdWUubmFtZSkpIHtcclxuICAgICAgICAgIGZpZWxkVmFsdWUuY2hlY2tlZCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgZ2V0QWxsRmllbGRzKCkge1xyXG4gICAgdGhpcy5yZXN0U2VydmljZS5nZXRTZWxlY3RlZExpc3RGaWVsZHModGhpcy5idXNpbmVzc0lkLCB0aGlzLmRhdGE/LnNlY3Rpb25UeXBlID09PSAncmVnaXN0cmF0aW9uRm9ybScgPyAnUkVHSVNUUkFUSU9OJyA6ICdBRE1JU1NJT04nLCAgdGhpcy5kYXRhPy5zZWN0aW9uVHlwZSA9PT0gJ3JlZ2lzdHJhdGlvbkZvcm0nID8gJ1JFR0lTVFJBVElPTicgOiAnQURNSVNTSU9OJykuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLmZpZWxkRGF0YSA9IHRoaXMucmVzdFNlcnZpY2UuZ2V0RmllbGRzVG9EaXNwbGF5KHJlcy5kYXRhLmRhdGEpO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkS2V5ID0gdGhpcy5PYmplY3Qua2V5cyh0aGlzLmZpZWxkRGF0YSlbMF07XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0QUxMRG9jdW1lbnRMaXN0KCkge1xyXG4gICAgY29uc3QgcGF5bG9hZCA9IHtcclxuICAgICAgXCJidXNpbmVzc0lkXCI6IHRoaXMuYnVzaW5lc3NJZCxcclxuICAgICAgXCJzb3J0QnlcIjogXCJcIixcclxuICAgICAgXCJzb3J0T3JkZXJcIjogXCJcIixcclxuICAgICAgXCJzdGF0dXNcIjogdHJ1ZSxcclxuICAgICAgXCJpc0RlbGV0ZWRcIjogZmFsc2VcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnJlc3RTZXJ2aWNlLmdldEFsbERvY3VtZW50KHBheWxvYWQpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgdGhpcy5kb2N1bWVudExpc3QgPSByZXMuZGF0YS5kYXRhO1xyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGZvcm1GaWVsZENoYW5nZVN1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvbjtcclxuICBmb3JtRmllbGRDaGFuZ2VkKCkge1xyXG4gICAgdGhpcy5mb3JtRmllbGRDaGFuZ2VTdWJzY3JpcHRpb24gPSB0aGlzLl9ldmVudFNlcnZpY2UuZm9ybUZpZWxkQ2hhbmdlZC5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMuZ2V0QWxsRmllbGRzKCk7XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcblxyXG5cclxuICBhc3luYyBzdWJtaXRGb3JtKCkge1xyXG4gICAgdGhpcy5wYXlsb2FkLmZpZWxkSXRlbXMgPSB0aGlzLmNvbnZlcnRUb0xpc3RPZkZpZWxkcygpO1xyXG4gICAgaWYodGhpcy5wYXlsb2FkLmZpZWxkSXRlbXMubGVuZ3RoID09IDApXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICBpZih0aGlzLmZpbGVEYXRhKSB7XHJcbiAgICAgIGxldCBpbWFnZURhdGE6IGFueSA9IGF3YWl0IHRoaXMuaW1hZ2VVcGxvYWRTZXJ2aWNlLnVwbG9hZEZpbGVJbkF6dXJlKHRoaXMuZmlsZURhdGEpO1xyXG4gICAgICB0aGlzLnBheWxvYWQuaW1nVXJsID0gaW1hZ2VEYXRhLnVybFxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZGF0YT8uc2VjdGlvblR5cGUgPT09ICdyZWdpc3RyYXRpb25Gb3JtJyA/IHRoaXMuY3JlYXRlUmVnaXN0cmF0aW9uKCkgOiB0aGlzLmNyZWF0ZUFkbWlzc2lvbigpO1xyXG4gIH1cclxuXHJcbiAgcmVnaXN0cmF0aW9uU3Vic2NyaXB0aW9uPzogU3Vic2NyaXB0aW9uO1xyXG4gIGNyZWF0ZVJlZ2lzdHJhdGlvbigpIHtcclxuICAgIC8vIHRoaXMucGF5bG9hZFsncmV0dXJuVXJsJ10gPSBgaHR0cHM6Ly9jbWlzLnRlanNvZnQuY29tL3ZlcmlmeS1wYXltZW50Lz91cmw9dHJ1ZSZ0eXBlPVJFR0lTVFJBVElPTiZiSWQ9JHt0aGlzLmJ1c2luZXNzSWR9YCAvL3Byb2R1Y3Rpb25cclxuICAgIHRoaXMucGF5bG9hZFsncmV0dXJuVXJsJ10gPSBgaHR0cHM6Ly9zdGFnZS1wb3J0YWwuY21pcy5hYy5pbi92ZXJpZnktcGF5bWVudC8/dXJsPXRydWUmdHlwZT1SRUdJU1RSQVRJT04mYklkPSR7dGhpcy5idXNpbmVzc0lkfWAgLy9kZXZcclxuICAgIC8vIHRoaXMucGF5bG9hZFsncmV0dXJuVXJsJ10gPSBgaHR0cHM6Ly9zdGFnZS5jbWlzLnRlanNvZnQuY29tL3ZlcmlmeS1wYXltZW50Lz91cmw9dHJ1ZSZ0eXBlPVJFR0lTVFJBVElPTiZiSWQ9JHt0aGlzLmJ1c2luZXNzSWR9YCAvL3N0YWdlXHJcbiAgICB0aGlzLnJlZ2lzdHJhdGlvblN1YnNjcmlwdGlvbiA9IHRoaXMucmVzdFNlcnZpY2UuY3JlYXRlUmVnaXN0cmF0aW9uRm9yUGF5bWVudCh0aGlzLnBheWxvYWQpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgLy8gdGhpcy5zbmFja0Jhci5vcGVuKCdSZWdpc3RyYXRpb24gY3JlYXRlZCBzdWNjZXNzZnVsbHknLCAnY2xvc2UnLCB7ZHVyYXRpb246IDIwMDB9KTtcclxuICAgICAgdGhpcy5fZXZlbnRTZXJ2aWNlLmNhc2hGcmVlRXZlbnQuZW1pdCh7cmVzcG9uc2U6IHJlcywgcGF5bWVudFR5cGU6J1JFR0lTVFJBVElPTid9KTtcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBhc3luYyBjcmVhdGVBZG1pc3Npb24oKSB7XHJcbiAgICBpZih0aGlzLnBheWxvYWQucGF5bWVudFBsYW5UeXBlID09PSAnVEVSTScgJiYgKHRoaXMucGF5bG9hZD8uc3R1ZGVudEZlZVN0cnVjdHVyZT8udGVybVBheW1lbnRMaXN0Py5sZW5ndGggfHwgMCkgPT0gMCl7XHJcbiAgICAgIHRoaXMuc25hY2tCYXIub3BlbignUGxlYXNlIHNlbGVjdCB0ZXJtJyk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnBheWxvYWQuc3R1ZGVudEZlZVN0cnVjdHVyZVsncGF5bWVudFBsYW5UeXBlJ10gPSB0aGlzLnBheWxvYWQucGF5bWVudFBsYW5UeXBlO1xyXG4gICAgLy8gdGhpcy5wYXlsb2FkWydyZXR1cm5VcmwnXSA9IGBodHRwczovL2NtaXMudGVqc29mdC5jb20vdmVyaWZ5LXBheW1lbnQvP3VybD10cnVlJnR5cGU9QURNSVNTSU9OJmJJZD0ke3RoaXMuYnVzaW5lc3NJZH1gOyAvL3Byb2R1Y3Rpb25cclxuICAgIHRoaXMucGF5bG9hZFsncmV0dXJuVXJsJ10gPSBgaHR0cHM6Ly9zdGFnZS1wb3J0YWwuY21pcy5hYy5pbi92ZXJpZnktcGF5bWVudC8/dXJsPXRydWUmdHlwZT1BRE1JU1NJT04mYklkPSR7dGhpcy5idXNpbmVzc0lkfWA7IC8vZGV2XHJcbiAgICAvLyB0aGlzLnBheWxvYWRbJ3JldHVyblVybCddID0gYGh0dHBzOi8vc3RhZ2UuY21pcy50ZWpzb2Z0LmNvbS92ZXJpZnktcGF5bWVudC8/dXJsPXRydWUmdHlwZT1BRE1JU1NJT04mYklkPSR7dGhpcy5idXNpbmVzc0lkfWA7IC8vc3RhZ2VcclxuXHJcbiAgICBpZih0aGlzLmJhY2t1cERvY0ZpbGUpIHtcclxuICAgICAgbGV0IGltYWdlRGF0YTogYW55ID0gYXdhaXQgdGhpcy5pbWFnZVVwbG9hZFNlcnZpY2UudXBsb2FkRmlsZUluQXp1cmUodGhpcy5iYWNrdXBEb2NGaWxlKTtcclxuICAgICAgdGhpcy5wYXlsb2FkLmJhY2t1cERvYyA9IGltYWdlRGF0YS51cmxcclxuICAgIH1cclxuXHJcbiAgICBmb3IobGV0IGRvY3VtZW50IG9mIHRoaXMuZG9jdW1lbnRMaXN0KSB7XHJcbiAgICAgIGlmKGRvY3VtZW50LmZpbGUpIHtcclxuICAgICAgICBsZXQgaW1hZ2VEYXRhOiBhbnkgPSBhd2FpdCB0aGlzLmltYWdlVXBsb2FkU2VydmljZS51cGxvYWRGaWxlSW5BenVyZShkb2N1bWVudC5maWxlKTtcclxuXHJcbiAgICAgICAgdGhpcy5wYXlsb2FkWydkb2N1bWVudHMnXS5wdXNoKFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBuYW1lOiBkb2N1bWVudC5kaXNwbGF5VGV4dCxcclxuICAgICAgICAgICAgdXJsOiBpbWFnZURhdGEudXJsLFxyXG4gICAgICAgICAgICBkb2NUeXBlOiBkb2N1bWVudC5uYW1lLFxyXG4gICAgICAgICAgICBhdHRhY2htZW50VHlwZTogZG9jdW1lbnQudHlwZVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIClcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMucmVnaXN0cmF0aW9uU3Vic2NyaXB0aW9uID0gdGhpcy5yZXN0U2VydmljZS5jcmVhdGVQYXltZW50Rm9yQWRtaXNzaW9uKHRoaXMucGF5bG9hZCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAvLyB0aGlzLnNuYWNrQmFyLm9wZW4oJ0FkbWlzc2lvbiBjcmVhdGVkIHN1Y2Nlc3NmdWxseScsICdjbG9zZScsIHtkdXJhdGlvbjogMjAwMH0pO1xyXG4gICAgICB0aGlzLl9ldmVudFNlcnZpY2UuY2FzaEZyZWVFdmVudC5lbWl0KHtyZXNwb25zZTogcmVzLCBwYXltZW50VHlwZTonQURNSVNTSU9OJ30pO1xyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGNvbnZlcnRUb0xpc3RPZkZpZWxkcygpIHtcclxuICAgIGxldCBmaWVsZExpc3Q6IGFueVtdID0gW107XHJcblxyXG4gICAgZm9yKGxldCBzdGVwIG9mIHRoaXMuT2JqZWN0LmtleXModGhpcy5maWVsZERhdGEpKSB7XHJcbiAgICAgIGZvcihsZXQgZ3JvdXAgb2YgT2JqZWN0LmtleXModGhpcy5maWVsZERhdGFbc3RlcF0pKSB7XHJcblxyXG4gICAgICAgIGlmKGdyb3VwID09ICdCYWNrdXAgQ29udGFjdCcgJiYgdGhpcy5zdHVkZW50TGl2ZVdpdGggIT0gJ3NpbmdsZSBwYXJlbnQnKVxyXG4gICAgICAgICAgY29udGludWU7XHJcblxyXG4gICAgICAgIGZvcihsZXQgZmllbGQgb2YgdGhpcy5maWVsZERhdGFbc3RlcF1bZ3JvdXBdKSB7XHJcbiAgICAgICAgICBpZihmaWVsZC5yZXF1aXJlZCAmJiAhZmllbGQuZmllbGRWYWx1ZSAmJiBmaWVsZC5kYXRhVHlwZSAhPSAnQ0hFQ0tCT1gnKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc25hY2tCYXIub3BlbihgUGxlYXNlIGVudGVyICR7ZmllbGQuZmllbGRMYWJlbH1gLCAnY2xvc2UnLCB7ZHVyYXRpb246IDIwMDB9KTtcclxuICAgICAgICAgICAgcmV0dXJuIFtdO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGxldCBjaGVja0JveFZhbHVlOiBhbnlbXSA9IFtdO1xyXG4gICAgICAgICAgaWYoZmllbGQuZGF0YVR5cGUgPT09ICdDSEVDS0JPWCcpIHtcclxuICAgICAgICAgICAgY2hlY2tCb3hWYWx1ZSA9IHRoaXMuZ2V0Q2hlY2tCb3hWYWx1ZShmaWVsZCk7XHJcblxyXG4gICAgICAgICAgICBpZihjaGVja0JveFZhbHVlLmxlbmd0aCAgPT0gMCAmJiBmaWVsZC5yZXF1aXJlZCl7XHJcbiAgICAgICAgICAgICAgdGhpcy5zbmFja0Jhci5vcGVuKGBQbGVhc2UgZW50ZXIgJHtmaWVsZC5maWVsZExhYmVsfWAsICdjbG9zZScsIHtkdXJhdGlvbjogMjAwMH0pO1xyXG4gICAgICAgICAgICAgIHJldHVybiBbXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGZpZWxkTGlzdC5wdXNoKHtcclxuICAgICAgICAgICAgZmllbGRJZDogZmllbGQuZmllbGRJZCxcclxuICAgICAgICAgICAgZmllbGROYW1lOiBmaWVsZC5maWVsZExhYmVsLFxyXG4gICAgICAgICAgICBmaWVsZFZhbHVlOiBmaWVsZC5kYXRhVHlwZSAhPT0gJ0NIRUNLQk9YJyA/IGZpZWxkLmZpZWxkVmFsdWUgOiBjaGVja0JveFZhbHVlLFxyXG4gICAgICAgICAgICBmaWVsZEdyb3VwSWQ6IGZpZWxkLmZpZWxkR3JvdXBJZCxcclxuICAgICAgICAgICAgZmllbGRHcm91cE5hbWU6IGdyb3VwLFxyXG4gICAgICAgICAgICBmaWVsZFN0ZXBJZDogZmllbGQuZmllbGRTdGVwSWQsXHJcbiAgICAgICAgICAgIGZpZWxkU3RlcE5hbWU6IHN0ZXAsXHJcbiAgICAgICAgICAgIHR5cGU6IGZpZWxkLnR5cGVcclxuICAgICAgICAgIH0pXHJcblxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmaWVsZExpc3Q7XHJcbiAgfVxyXG5cclxuICBnZXRDaGVja0JveFZhbHVlKGZpZWxkOiBhbnkpIHtcclxuICAgIGxldCByZXNwb25zZTogYW55W10gPSBbXTtcclxuXHJcbiAgICBpZihmaWVsZC52YWx1ZSkge1xyXG4gICAgICBmb3IobGV0IGZpZWxkVmFsdWUgb2YgZmllbGQudmFsdWUpIHtcclxuICAgICAgICBpZihmaWVsZFZhbHVlLmNoZWNrZWQpIHtcclxuICAgICAgICAgIHJlc3BvbnNlLnB1c2goZmllbGRWYWx1ZS52YWx1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBmb3IobGV0IGZpZWxkVmFsdWUgb2YgZmllbGQuc291cmNlRGF0YT8uW2ZpZWxkLmRhdGFTb3VyY2VUeXBlXSB8fCBbXSkge1xyXG4gICAgICAgIGlmKGZpZWxkVmFsdWUuY2hlY2tlZCkge1xyXG4gICAgICAgICAgcmVzcG9uc2UucHVzaChmaWVsZFZhbHVlLm5hbWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiByZXNwb25zZTtcclxuICB9XHJcblxyXG4gIGZpbGVEYXRhPzogRmlsZTtcclxuICB1cGRhdGVBZG1pc3Npb25JbWFnZShldjogYW55KSB7XHJcbiAgICB0aGlzLmZpbGVEYXRhID0gZXYuc3JjRWxlbWVudC5maWxlc1swXTtcclxuXHJcbiAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xyXG5cclxuICAgIHJlYWRlci5vbmxvYWQgPSAocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLnBheWxvYWQuaW1nVXJsID0gcmVzcG9uc2UudGFyZ2V0LnJlc3VsdDtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmZpbGVEYXRhID8gcmVhZGVyLnJlYWRBc0RhdGFVUkwodGhpcy5maWxlRGF0YSkgOiBudWxsO1xyXG4gIH1cclxuXHJcbiAgZGVsZXRlSW1nKCkge1xyXG4gICAgdGhpcy5wYXlsb2FkLmltZ1VybCA9ICcnO1xyXG4gICAgdGhpcy5maWxlRGF0YSA9IHVuZGVmaW5lZDtcclxuICB9ICByZWRpcmVjdFRvUGF5bWVudCgpIHtcclxuICAgIGlmKCEodGhpcy5zZWxlY3RlZEFjYWRlbWljWWVhciAmJiAgdGhpcy5zZWxlY3RlZEdyYWRlSWQpKXtcclxuICAgICAgdGhpcy5zbmFja0Jhci5vcGVuKCdTZWxlY3RlZCBHcmFkZSBhbmQgQWNhZGVtaWMgWWVhciBmaXJzdCcsJ2Nsb3NlJywge2R1cmF0aW9uOiAyMDAwfSlcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zZWxlY3RlZEtleSA9ICdQYXltZW50J1xyXG4gIH1cclxuXHJcbiAgY29udGludWVBZG1pc3Npb24oKSB7XHJcbiAgICBsZXQgc3RlcHMgPSBPYmplY3Qua2V5cyh0aGlzLmZpZWxkRGF0YSk7XHJcbiAgICBsZXQgaW5kZXggPSBzdGVwcy5pbmRleE9mKHRoaXMuc2VsZWN0ZWRLZXkpO1xyXG5cclxuICAgIGlmKHRoaXMuZGF0YT8uc2VjdGlvblR5cGUgPT09ICdhZG1pc3Npb25Gb3JtJyAmJiB0aGlzLnNlbGVjdGVkS2V5ID09PSAnRG9jdW1lbnQnICYmICEodGhpcy5zZWxlY3RlZEFjYWRlbWljWWVhciAmJiAgdGhpcy5zZWxlY3RlZEdyYWRlSWQpKSB7XHJcbiAgICAgIHRoaXMuc25hY2tCYXIub3BlbignU2VsZWN0ZWQgR3JhZGUgYW5kIEFjYWRlbWljIFllYXIgZmlyc3QnLCAnY2xvc2UnLCB7ZHVyYXRpb246IDIwMDB9KVxyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYodGhpcy5kYXRhPy5zZWN0aW9uVHlwZSA9PT0gJ2FkbWlzc2lvbkZvcm0nKVxyXG4gICAgICB0aGlzLnNlbGVjdGVkS2V5ID0gaW5kZXggPT09IHN0ZXBzLmxlbmd0aCAtIDEgPyAnRG9jdW1lbnQnIDogdGhpcy5zZWxlY3RlZEtleSA9PT0gJ0RvY3VtZW50JyA/ICdQYXltZW50JyA6IHN0ZXBzW2luZGV4ICsgMV07XHJcbiAgICBlbHNlXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRLZXkgPSBzdGVwc1tpbmRleCArIDFdXHJcbiAgfVxyXG5cclxuICBzdWJzY3JpcHRpb25zRGF0YTogYW55W10gPSBbXVxyXG4gIHRlcm1QYXltZW50TGlzdDogYW55W10gPSBbXTtcclxuXHJcbiAgZ2V0RmVlU3RydWN0dXJlKCkge1xyXG4gICAgaWYoIXRoaXMuc2VsZWN0ZWRBY2FkZW1pY1llYXIgfHwgIXRoaXMuc2VsZWN0ZWRHcmFkZUlkKVxyXG4gICAgICByZXR1cm47XHJcblxyXG4gICAgbGV0IHllYXIgPSB0aGlzLnNlbGVjdGVkQWNhZGVtaWNZZWFyLnNwbGl0KFwiLVwiKTtcclxuICAgIGxldCBwYXlsb2FkID0ge1xyXG4gICAgICBcImJ1c2luZXNzSWRcIjogdGhpcy5idXNpbmVzc0lkLFxyXG4gICAgICBcInN0YXJ0WWVhclwiOiBOdW1iZXIoeWVhclswXSksXHJcbiAgICAgIFwiZW5kWWVhclwiOiBOdW1iZXIoeWVhclsxXSksXHJcbiAgICAgIFwicGFnZU5vXCI6IDAsXHJcbiAgICAgIFwic2l6ZVwiOiAxLFxyXG4gICAgICBcImdyYWRlSWRzXCI6IFt0aGlzLnNlbGVjdGVkR3JhZGVJZF0sXHJcbiAgICAgIFwic2VhcmNoVGV4dFwiOiBcIlwiXHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5yZXN0U2VydmljZS5nZXRGZWVTdHJ1Y3R1cmUocGF5bG9hZCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLnBheWxvYWQuc3R1ZGVudEZlZVN0cnVjdHVyZSA9IHJlcy5kYXRhLmRhdGFbMF07XHJcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9uc0RhdGEgPSAgSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLnBheWxvYWQuc3R1ZGVudEZlZVN0cnVjdHVyZS5zdWJzY3JpcHRpb25QbGFucykpO1xyXG4gICAgICB0aGlzLnBheWxvYWQuc3R1ZGVudEZlZVN0cnVjdHVyZS5zdWJzY3JpcHRpb25QbGFucyA9IFtdO1xyXG4gICAgICB0aGlzLnRlcm1QYXltZW50TGlzdCA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5wYXlsb2FkLnN0dWRlbnRGZWVTdHJ1Y3R1cmU/LnRlcm1QYXltZW50TGlzdCB8fCAnJykpO1xyXG4gICAgICB0aGlzLnBheWxvYWQuc3R1ZGVudEZlZVN0cnVjdHVyZS50ZXJtUGF5bWVudExpc3QgPSBbXTtcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBpbnB1dEZpZWxkQ2hhbmdlKGl0ZW06IGFueSwgZmllbGQ6IGFueSkge1xyXG4gICAgaWYoZmllbGQuZmllbGRMYWJlbCA9PT0gJ0FjYWRlbWljIFllYXInKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRBY2FkZW1pY1llYXIgPSBpdGVtLm5hbWU7XHJcbiAgICAgIHRoaXMuZ2V0RmVlU3RydWN0dXJlKCk7XHJcbiAgICB9XHJcbiAgICBpZihmaWVsZC5maWVsZExhYmVsID09PSAnR3JhZGUnKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRHcmFkZUlkID0gaXRlbS5pZDtcclxuICAgICAgdGhpcy5nZXRGZWVTdHJ1Y3R1cmUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG1hc3RlckRyb3Bkb3duVmFsdWVDaGFuZ2UoaXRlbTogYW55LCBmaWVsZDogYW55KSB7XHJcbiAgICBpZihmaWVsZC5maWVsZExhYmVsID09PSAnU3R1ZGVudCBsaXZlIHdpdGgnKSB7XHJcbiAgICAgIHRoaXMuc3R1ZGVudExpdmVXaXRoID0gaXRlbS52YWx1ZVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdXBsb2FkQmFja1VwRG9jdW1lbnQoZXY6IGFueSkge1xyXG4gICAgdGhpcy5iYWNrdXBEb2NGaWxlID0gZXYuc3JjRWxlbWVudC5maWxlc1swXTtcclxuICB9XHJcblxyXG5cclxuICBhcnJhbmdlU3Vic2NyaXB0aW9uRm9yQWRtaXNzaW9uKHN1YnNjcmlwdGlvbkxpc3Q6IGFueVtdKSB7XHJcbiAgICBsZXQgcmVzcG9uc2U6IGFueSA9IHt9O1xyXG5cclxuICAgIGZvcihsZXQgc3Vic2NyaXB0aW9uIG9mIHN1YnNjcmlwdGlvbkxpc3QpIHtcclxuICAgICAgaWYoIXJlc3BvbnNlW3N1YnNjcmlwdGlvbi5zdWJzY3JpcHRpb25UeXBlXSkge1xyXG4gICAgICAgIHJlc3BvbnNlW3N1YnNjcmlwdGlvbi5zdWJzY3JpcHRpb25UeXBlXSA9IFtdO1xyXG4gICAgICB9XHJcbiAgICAgIHJlc3BvbnNlW3N1YnNjcmlwdGlvbi5zdWJzY3JpcHRpb25UeXBlXS5wdXNoKHN1YnNjcmlwdGlvbik7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gIH1cclxuXHJcbiAgYXJyYW5nZUZlZUNvbmZpZyhmZWVDb25maWdMaXN0OiBhbnlbXSkge1xyXG4gICAgbGV0IHJlc3BvbnNlOiBhbnkgPSB7fTtcclxuXHJcbiAgICBmb3IobGV0IGNvbmZpZyBvZiBmZWVDb25maWdMaXN0KSB7XHJcbiAgICAgIGlmKCFyZXNwb25zZVtjb25maWcuZmVlVHlwZV0pXHJcbiAgICAgICAgcmVzcG9uc2VbY29uZmlnLmZlZVR5cGVdID0gW107XHJcblxyXG4gICAgICByZXNwb25zZVtjb25maWcuZmVlVHlwZV0ucHVzaChjb25maWcpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiByZXNwb25zZTtcclxuICB9XHJcbn1cclxuIiwiPHNlY3Rpb24gc2ltcG9Ib3ZlciAoaG92ZXJpbmcpPVwic2hvd0VkaXRUYWJzKCRldmVudClcIiBjbGFzcz1cInRvdGFsLWNvbnRhaW5lclwiPlxyXG4gIDxkaXYgW2lkXT1cImRhdGE/LmlkXCIgW3NpbXBvQmFja2dyb3VuZF09XCJzdHlsZXM/LmJhY2tncm91bmRcIj5cclxuICAgIDxkaXYgI21haW5Db250YWluZXIgY2xhc3M9XCJyb3dGbGV4XCIgW2lkXT1cImRhdGE/LmlkXCIgW3NpbXBvT3ZlcmxheV09XCJzdHlsZXM/LmJhY2tncm91bmRcIlxyXG4gICAgICBbc2ltcG9Cb3JkZXJdPVwic3R5bGVzPy5ib3JkZXJcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm1haW4tc2VjdGlvblwiXHJcbiAgICAgICAgW25nQ2xhc3NdPVwieydqdXN0aWZ5LWNvbnRlbnQtbWQtc3RhcnQnOiBzdHlsZXM/LmxheW91dD8uYWxpZ24gPT09ICdsZWZ0JyAsICdqdXN0aWZ5LWNvbnRlbnQtbWQtZW5kJzogc3R5bGVzPy5sYXlvdXQ/LmFsaWduID09PSAncmlnaHQnfVwiXHJcbiAgICAgICAgW2lkXT1cImRhdGE/LmlkXCIgW3NpbXBvTGF5b3V0XT1cInN0eWxlcz8ubGF5b3V0XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImJvZHktc2VjdGlvblwiPlxyXG4gICAgICAgICAgPGRpdiBbc2ltcG9BbmltYXRpb25dPVwic3R5bGVzPy5hbmltYXRpb25cIiBbaWRdPVwiZGF0YT8uaWRcIj5cclxuICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICA8c2ltcG8tdGV4dC1lbGVtZW50IFt0ZXh0RGF0YV09XCJjb250ZW50Py5pbnB1dFRleHQ/LlswXT8udmFsdWVcIiBbdGV4dExhYmVsXT1cImNvbnRlbnQ/LmlucHV0VGV4dD8uWzBdPy5sYWJlbFwiPjwvc2ltcG8tdGV4dC1lbGVtZW50PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBnYXAtMiBkLW1kLWZsZXggbXQtMTVcIiAqbmdJZj1cImRhdGE/LmFjdGlvbj8uZGlzcGxheVwiIFtuZ0NsYXNzXT1cIltcclxuICAgICAgICAgICAgICBzdHlsZXM/LmxheW91dD8uYWxpZ24gPT09ICdsZWZ0JyA/ICdqdXN0aWZ5LWNvbnRlbnQtbWQtc3RhcnQnIDogJycsXHJcbiAgICAgICAgICAgICAgc3R5bGVzPy5sYXlvdXQ/LmFsaWduID09PSAnY2VudGVyJyA/ICdqdXN0aWZ5LWNvbnRlbnQtbWQtY2VudGVyJyA6ICcnLFxyXG4gICAgICAgICAgICAgIHN0eWxlcz8ubGF5b3V0Py5hbGlnbiA9PT0gJ3JpZ2h0JyA/ICdqdXN0aWZ5LWNvbnRlbnQtbWQtZW5kJyA6ICcnXHJcbiAgICAgICAgICAgIF1cIj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgPC9kaXY+XHJcblxyXG4gIDxzZWN0aW9uIGNsYXNzPVwibWFpbi1zZWN0aW9uXCI+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiZm9ybVN0YXR1cyAhPSAnUkVHSVNURVJFRCcgJiYgZm9ybVN0YXR1cyAhPSAnQURNSVRURUQnXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJzdWJUYWJzX3NlY3Rpb25cIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibGlzdF90YWJzIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGtleSBvZiBPYmplY3Qua2V5cyhmaWVsZERhdGEpXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaW5nbGVfdGFiIGN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cInNlbGVjdGVkS2V5ID0ga2V5XCJcclxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJzZWxlY3RlZEtleSA9PT0ga2V5ID8gJ3NpbmdsZV90YWJfYWN0aXZlJyA6ICdzaW5nbGVfdGFiJ1wiPlxyXG4gICAgICAgICAgICAgIHt7a2V5IHwgdGl0bGVjYXNlfX1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaW5nbGVfdGFiIGN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cInNlbGVjdGVkS2V5ID0gJ0RvY3VtZW50J1wiICpuZ0lmPVwiZGF0YT8uc2VjdGlvblR5cGUgPT09ICdhZG1pc3Npb25Gb3JtJ1wiXHJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInNlbGVjdGVkS2V5ID09PSAnRG9jdW1lbnQnID8gJ3NpbmdsZV90YWJfYWN0aXZlJyA6ICdzaW5nbGVfdGFiJ1wiPlxyXG4gICAgICAgICAgICBEb2N1bWVudFxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2luZ2xlX3RhYiBjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJyZWRpcmVjdFRvUGF5bWVudCgpXCJcclxuICAgICAgICAgICAgKm5nSWY9XCJkYXRhPy5zZWN0aW9uVHlwZSA9PT0gJ2FkbWlzc2lvbkZvcm0nXCJcclxuICAgICAgICAgICAgW25nQ2xhc3NdPVwic2VsZWN0ZWRLZXkgPT09ICdQYXltZW50JyA/ICdzaW5nbGVfdGFiX2FjdGl2ZScgOiAnc2luZ2xlX3RhYidcIj5cclxuICAgICAgICAgICAgUGF5bWVudFxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cIm1haW4tY29udGVudFwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGdyb3VwIG9mIGZpZWxkRGF0YVtzZWxlY3RlZEtleV0gPyBPYmplY3Qua2V5cyhmaWVsZERhdGFbc2VsZWN0ZWRLZXldKSA6IFtdO2xldCBncm91cEluZGV4ID0gaW5kZXhcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYm9keVwiICpuZ0lmPVwiZ3JvdXAgIT09ICdCYWNrdXAgQ29udGFjdCdcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJsaXN0X3RhYnMgYmFja1RvTGVhZHMgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICB7e2dyb3VwfX1cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJncm91cEluZGV4ID09IDAgJiYgT2JqZWN0LmtleXMoZmllbGREYXRhKVswXSA9PT0gc2VsZWN0ZWRLZXlcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImltYWdlLWJveFwiICpuZ0lmPVwiIXBheWxvYWQuaW1nVXJsXCI+XHJcbiAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImR1bW15LWltYWdlXCIgc3JjPVwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYXNzZXRzL2ltYWdlcy9tYXN0ZXIvYWRkLWltYWdlLnN2Z1wiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiZmlsZUlucHV0LmNsaWNrKClcIiBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW1hZ2VfYm94XCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZjX2Jyb3dzZV9idG5cIiBpZD1cImRpc3BsYXlfYnJvd3NlX2J0blwiIChjbGljayk9XCJmaWxlSW5wdXQuY2xpY2soKVwiPkNsaWNrIHRvXHJcbiAgICAgICAgICAgICAgICAgIHVwbG9hZDwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxpbnB1dCBzdHlsZT1cImRpc3BsYXk6IG5vbmU7XCIgaWQ9XCJ2ZW5kb3JJbWFnZVwiIHR5cGU9XCJmaWxlXCIgbmFtZT1cIm15ZmlsZVwiXHJcbiAgICAgICAgICAgICAgYWNjZXB0PVwiaW1hZ2UveC1wbmcsaW1hZ2UvanBlZyxpbWFnZS9qcGdcIiAoY2hhbmdlKT1cInVwZGF0ZUFkbWlzc2lvbkltYWdlKCRldmVudClcIiBjbGFzcz1cInBjLWJ0blwiXHJcbiAgICAgICAgICAgICAgaWQ9XCJicm93c2VfY29udGFjdF9pbWFnZVwiICNmaWxlSW5wdXQgLz5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJwYXlsb2FkLmltZ1VybFwiIGNsYXNzPVwiYWRkZWRJbWdcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidXBsb2FkZWRJbWdcIj5cclxuICAgICAgICAgICAgICAgIDxpbWcgIGFsdD1cIlwiIFtzcmNdPVwiZHMuYnlwYXNzU2VjdXJpdHlUcnVzdFVybChwYXlsb2FkLmltZ1VybClcIj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW1hZ2UtYnV0dG9uc1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvblwiIChjbGljayk9XCJmaWxlSW5wdXQuY2xpY2soKVwiPlxyXG4gICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2Fzc2V0cy9pbWFnZXMvYmxvZ3MvY2hhbmdlX2ltYWdlLnN2Z1wiIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICBDaGFuZ2UgSW1hZ2VcclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbiBkZWxldGUtY2hhbmdlXCIgKGNsaWNrKT1cImRlbGV0ZUltZygpXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGVsZXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9XCIuLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2Fzc2V0cy9pbWFnZXMvYmxvZ3MvZGVsZXRlX2ltYWdlLnN2Z1wiIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXY+RGVsZXRlPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG10LTFcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00IGNvbC0xMiBtdC0xXCIgKm5nRm9yPVwibGV0IGluZm8gb2YgZmllbGREYXRhW3NlbGVjdGVkS2V5XVtncm91cF1cIj5cclxuICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiXCIgY2xhc3M9XCJsYWJlbC10ZXh0XCI+e3tpbmZvLmZpZWxkTGFiZWx9fTwvbGFiZWw+Jm5ic3A7IDxzcGFuIHN0eWxlPVwiY29sb3I6IHJlZDtcIiAqbmdJZj1cImluZm8ucmVxdWlyZWRcIj4qPC9zcGFuPiA8YnI+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImlucHV0RGF0YTsgY29udGV4dDoge2RhdGE6IGluZm99XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJib2R5XCIgKm5nSWY9XCJmaWVsZERhdGFbc2VsZWN0ZWRLZXldLmhhc093blByb3BlcnR5KCdCYWNrdXAgQ29udGFjdCcpICYmIHN0dWRlbnRMaXZlV2l0aCA9PT0gJ3NpbmdsZSBwYXJlbnQnICYmIGdyb3VwSW5kZXggPT0gMCAmJiBPYmplY3Qua2V5cyhmaWVsZERhdGEpWzBdID09PSBzZWxlY3RlZEtleVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImxpc3RfdGFicyBiYWNrVG9MZWFkcyBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgIEJhY2t1cCBDb250YWN0IChPcHRpb25hbClcclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbXQtMVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwibXRiLTE1IGNoZWNrYm94LWxhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgbmFtZT1cIlwiIGlkPVwiXCIgWyhuZ01vZGVsKV09XCJwYXlsb2FkLnBhcmVudEF1dGhvcml6YXRpb25cIj5cclxuICAgICAgICAgICAgICAgICAgSSBhdXRob3JpemUgdGhlIHNjaG9vbCB0byByZWxlYXNlIHRoZSBjaGlsZCBvbmx5IHRvIHRoZSBwYXJlbnQgbGlzdGVkIGFib3ZlXHJcbiAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNCBjb2wtMTIgbXQtMVwiICpuZ0Zvcj1cImxldCBpbmZvIG9mIGZpZWxkRGF0YVtzZWxlY3RlZEtleV1bJ0JhY2t1cCBDb250YWN0J11cIj5cclxuICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiXCIgY2xhc3M9XCJsYWJlbC10ZXh0XCI+e3tpbmZvLmZpZWxkTGFiZWx9fTwvbGFiZWw+Jm5ic3A7IDxzcGFuIHN0eWxlPVwiY29sb3I6IHJlZDtcIlxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJpbmZvLnJlcXVpcmVkXCI+Kjwvc3Bhbj4gPGJyPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpbnB1dERhdGE7IGNvbnRleHQ6IHtkYXRhOiBpbmZvfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00IGNvbC0xMiBtdC0xXCI+XHJcbiAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cIlwiIGNsYXNzPVwibGFiZWwtdGV4dFwiPlVwbG9hZCBTdXBwb3J0aW5nIERvY3VtZW50IChPcHRpb25hbCk8L2xhYmVsPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC10ZXh0IHVwbG9hZC1maWxlXCIgKGNsaWNrKT1cImJhY2tVcERvY0lucHV0LmNsaWNrKClcIj5cclxuICAgICAgICAgICAgICAgIDxwPnt7YmFja3VwRG9jRmlsZSA/ICdGaWxlIFVwbG9hZGVkJyA6ICdVcGxvYWQgRmlsZSd9fTwvcD5cclxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5jbG91ZF91cGxvYWQ8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxpbnB1dCBpZD1cInZlbmRvckltYWdlXCIgdHlwZT1cImZpbGVcIiBuYW1lPVwibXlmaWxlXCIgaGlkZGVuXHJcbiAgICAgICAgICAgICAgICBhY2NlcHQ9XCIuZG9jLC5kb2N4LGFwcGxpY2F0aW9uL21zd29yZCxhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQud29yZHByb2Nlc3NpbmdtbC5kb2N1bWVudCxpbWFnZS94LXBuZyxpbWFnZS9qcGVnLGltYWdlL2pwZywucGRmLCB2aWRlby9tcDQsdmlkZW8veC1tYXRyb3NrYSx2aWRlby94LW1zdmlkZW8sdmlkZW8vcXVpY2t0aW1lXCJcclxuICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwidXBsb2FkQmFja1VwRG9jdW1lbnQoJGV2ZW50KVwiIGNsYXNzPVwicGMtYnRuXCJcclxuICAgICAgICAgICAgICAgIGlkPVwiYnJvd3NlX2NvbnRhY3RfaW1hZ2VcIiAjYmFja1VwRG9jSW5wdXQgLz5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInBheW1lbnQtZGV0YWlsc1wiICpuZ0lmPVwic2VsZWN0ZWRLZXkgPT09ICdEb2N1bWVudCcgJiYgZGF0YT8uc2VjdGlvblR5cGUgPT09ICdhZG1pc3Npb25Gb3JtJ1wiPlxyXG4gICAgICAgICAgPHNpbXBvLWRvY3VtZW50IFtkb2N1bWVudExpc3RdPVwiZG9jdW1lbnRMaXN0XCI+PC9zaW1wby1kb2N1bWVudD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicGF5bWVudC1kZXRhaWxzXCIgKm5nSWY9XCJzZWxlY3RlZEtleSA9PT0gJ1BheW1lbnQnICYmIGRhdGE/LnNlY3Rpb25UeXBlID09PSAnYWRtaXNzaW9uRm9ybSdcIj5cclxuICAgICAgICAgIDxzaW1wby1wYXltZW50LWRldGFpbHMgW2FkbWlzc2lvbkRhdGFdPVwicGF5bG9hZFwiXHJcbiAgICAgICAgICAgIFtzdWJzY3JpcHRpb25zRGF0YV09XCJzdWJzY3JpcHRpb25zRGF0YVwiIFt0ZXJtUGF5bWVudExpc3RdPVwidGVybVBheW1lbnRMaXN0XCI+PC9zaW1wby1wYXltZW50LWRldGFpbHM+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbi1wYXJlbnRcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBidXR0b24gb2YgZGF0YT8uYWN0aW9uPy5idXR0b25zXCI+XHJcbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uXCIgKGNsaWNrKT1cInN1Ym1pdEZvcm0oKVwiIHNpbXBvQnV0dG9uRGlyZWN0aXZlIFtpZF09XCJkYXRhPy5pZCtidXR0b24uaWRcIlxyXG4gICAgICAgICAgICBbYnV0dG9uU3R5bGVdPVwiYnV0dG9uLnN0eWxlc1wiICpuZ0lmPVwiKGRhdGE/LnNlY3Rpb25UeXBlID09PSAnYWRtaXNzaW9uRm9ybScgJiYgc2VsZWN0ZWRLZXkgPT0gJ1BheW1lbnQnKSB8fFxyXG4gICAgICAgICAgICAoZGF0YT8uc2VjdGlvblR5cGUgPT09ICdyZWdpc3RyYXRpb25Gb3JtJyAmJlxyXG4gICAgICAgICAgICAgIChPYmplY3Qua2V5cyhmaWVsZERhdGEpW09iamVjdC5rZXlzKGZpZWxkRGF0YSkubGVuZ3RoIC0gMV0gPT0gc2VsZWN0ZWRLZXkpKVwiXHJcbiAgICAgICAgICAgIFtjb2xvcl09XCJkYXRhPy5zdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCI+e3tidXR0b24/LmNvbnRlbnQ/LmxhYmVsfX08L2J1dHRvbj5cclxuXHJcbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uXCIgKGNsaWNrKT1cImNvbnRpbnVlQWRtaXNzaW9uKClcIiBzaW1wb0J1dHRvbkRpcmVjdGl2ZSBbaWRdPVwiZGF0YT8uaWQrYnV0dG9uLmlkXCJcclxuICAgICAgICAgICAgW2J1dHRvblN0eWxlXT1cImJ1dHRvbi5zdHlsZXNcIiAqbmdJZj1cInNlbGVjdGVkS2V5ICE9ICdQYXltZW50JyAmJiBkYXRhPy5zZWN0aW9uVHlwZSA9PT0gJ2FkbWlzc2lvbkZvcm0nXCJcclxuICAgICAgICAgICAgW2NvbG9yXT1cImRhdGE/LnN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIj5Db250aW51ZTwvYnV0dG9uPlxyXG5cclxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidXR0b25cIiAoY2xpY2spPVwiY29udGludWVBZG1pc3Npb24oKVwiIHNpbXBvQnV0dG9uRGlyZWN0aXZlIFtpZF09XCJkYXRhPy5pZCtidXR0b24uaWRcIlxyXG4gICAgICAgICAgICBbYnV0dG9uU3R5bGVdPVwiYnV0dG9uLnN0eWxlc1wiXHJcbiAgICAgICAgICAgICpuZ0lmPVwiZGF0YT8uc2VjdGlvblR5cGUgPT09ICdyZWdpc3RyYXRpb25Gb3JtJyAmJiAoT2JqZWN0LmtleXMoZmllbGREYXRhKVtPYmplY3Qua2V5cyhmaWVsZERhdGEpLmxlbmd0aCAtIDFdICE9IHNlbGVjdGVkS2V5KVwiXHJcbiAgICAgICAgICAgIFtjb2xvcl09XCJkYXRhPy5zdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCI+Q29udGludWU8L2J1dHRvbj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiZW1wdHlUZXh0XCIgKm5nSWY9XCJmb3JtU3RhdHVzID09ICdSRUdJU1RFUkVEJyB8fCBmb3JtU3RhdHVzID09ICdBRE1JVFRFRCdcIj5cclxuICAgICAgPGltZyBbc3JjXT1cImNvbnRlbnQ/LmltYWdlPy51cmxcIiBhbHQ9XCJcIiAqbmdJZj1cImNvbnRlbnQ/LmltYWdlPy5zaG93SW1hZ2VcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImhlYWRpbmctbGFyZ2VcIiBbaW5uZXJIdG1sXT1cImNvbnRlbnQ/LmlucHV0VGV4dD8uWzFdPy52YWx1ZVwiPjwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9zZWN0aW9uPlxyXG5cclxuICA8bmctdGVtcGxhdGUgI2lucHV0RGF0YSBsZXQtZmllbGQ9XCJkYXRhXCI+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiZmllbGQuZGF0YVR5cGUgPT0gJ0lNQUdFJ1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiaW1hZ2UtYm94XCI+XHJcbiAgICAgICAgPGltZyBjbGFzcz1cImR1bW15LWltYWdlXCIgc3JjPVwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYXNzZXRzL2ltYWdlcy9tYXN0ZXIvYWRkLWltYWdlLnN2Z1wiXHJcbiAgICAgICAgICAoY2xpY2spPVwiZmlsZUlucHV0LmNsaWNrKClcIiBhbHQ9XCJcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJmY19icm93c2VfYnRuXCIgaWQ9XCJkaXNwbGF5X2Jyb3dzZV9idG5cIiAoY2xpY2spPVwiZmlsZUlucHV0LmNsaWNrKClcIj5DbGljayB0b1xyXG4gICAgICAgICAgICB1cGxvYWQ8L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8aW5wdXQgc3R5bGU9XCJkaXNwbGF5OiBub25lO1wiIGlkPVwidmVuZG9ySW1hZ2VcIiB0eXBlPVwiZmlsZVwiIG5hbWU9XCJteWZpbGVcIiBhY2NlcHQ9XCJpbWFnZS94LXBuZyxpbWFnZS9qcGVnLGltYWdlL2pwZ1wiXHJcbiAgICAgICAgKGNoYW5nZSk9XCJ1cGRhdGVBZG1pc3Npb25JbWFnZSgkZXZlbnQpXCIgY2xhc3M9XCJwYy1idG5cIiBpZD1cImJyb3dzZV9jb250YWN0X2ltYWdlXCIgI2ZpbGVJbnB1dCAvPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiZmllbGQuZGF0YVR5cGUgPT09ICdURVhUJ1wiPlxyXG4gICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImlucHV0LXRleHRcIiBbcGxhY2Vob2xkZXJdPVwiJ0VudGVyICcrZmllbGQuZmllbGRMYWJlbFwiIFsobmdNb2RlbCldPVwiZmllbGQuZmllbGRWYWx1ZVwiPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiZmllbGQuZGF0YVR5cGUgPT09ICdOVU1CRVInXCI+XHJcbiAgICAgIDxpbnB1dCB0eXBlPVwibnVtYmVyXCIgY2xhc3M9XCJpbnB1dC10ZXh0XCIgW3BsYWNlaG9sZGVyXT1cIidFbnRlciAnK2ZpZWxkLmZpZWxkTGFiZWxcIiBbKG5nTW9kZWwpXT1cImZpZWxkLmZpZWxkVmFsdWVcIj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiAqbmdJZj1cImZpZWxkLmRhdGFUeXBlID09PSAnTU9ORVknXCI+XHJcbiAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiaW5wdXQtdGV4dFwiIFtwbGFjZWhvbGRlcl09XCInRW50ZXIgJytmaWVsZC5maWVsZExhYmVsXCIgWyhuZ01vZGVsKV09XCJmaWVsZC5maWVsZFZhbHVlXCI+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgKm5nSWY9XCJmaWVsZC5kYXRhVHlwZSA9PT0gJ0RBVEUnXCI+XHJcbiAgICAgIDxpbnB1dCB0eXBlPVwiZGF0ZVwiIGNsYXNzPVwiaW5wdXQtdGV4dFwiIFsobmdNb2RlbCldPVwiZmllbGQuZmllbGRWYWx1ZVwiIFtwbGFjZWhvbGRlcl09XCInU2VsZWN0ICcrZmllbGQuZmllbGRMYWJlbFwiPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiZmllbGQuZGF0YVR5cGUgPT09ICdEUk9QRE9XTidcIiBjbGFzcz1cImFkbWlzc2lvblwiPlxyXG4gICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJpbnB1dC10ZXh0XCIgYXBwZWFyYW5jZT1cIm91dGxpbmVcIj5cclxuICAgICAgICA8bWF0LXNlbGVjdCBjbGFzcz1cImlucHV0U3R5bGVcIiBwbGFjZWhvbGRlcj1cIi0tU2VsZWN0LS1cIiBbKG5nTW9kZWwpXT1cImZpZWxkLmZpZWxkVmFsdWVcIiBbbXVsdGlwbGVdPVwiZmllbGQubXVsdGlwbGVTZWxlY3Rpb25cIj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIoZmllbGQ/LnZhbHVlPy5sZW5ndGggfHwgMCkgPiAwXCI+XHJcbiAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBpdGVtIG9mIGZpZWxkLnZhbHVlXCIgW3ZhbHVlXT1cIml0ZW0/LnZhbHVlXCIgKGNsaWNrKT1cIm1hc3RlckRyb3Bkb3duVmFsdWVDaGFuZ2UoaXRlbSwgZmllbGQpXCI+e3tpdGVtLmxhYmVsfX08L21hdC1vcHRpb24+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIoZmllbGQ/LnZhbHVlPy5sZW5ndGggfHwgMCkgPT0gMFwiPlxyXG4gICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBmaWVsZC5zb3VyY2VEYXRhW2ZpZWxkLmRhdGFTb3VyY2VUeXBlXVwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImlucHV0RmllbGRDaGFuZ2UoaXRlbSwgZmllbGQpXCIgW3ZhbHVlXT1cIml0ZW0/Lm5hbWVcIj57e2l0ZW0ubmFtZX19PC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9tYXQtc2VsZWN0PlxyXG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiZmllbGQuZGF0YVR5cGUgPT09ICdDSEVDS0JPWCdcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIihmaWVsZD8udmFsdWU/Lmxlbmd0aCB8fCAwKSA+IDBcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBtYi01XCIgKm5nRm9yPVwibGV0IGRhdGEgb2YgZmllbGQudmFsdWVcIj5cclxuICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIiB0eXBlPVwiY2hlY2tib3hcIiB2YWx1ZT1cIlwiIGlkPVwiZmxleENoZWNrQ2hlY2tlZFwiIFsobmdNb2RlbCldPVwiZGF0YS5jaGVja2VkXCI+XHJcbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCIgZm9yPVwiZmxleENoZWNrQ2hlY2tlZFwiPlxyXG4gICAgICAgICAgICB7e2RhdGEubGFiZWx9fVxyXG4gICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKGZpZWxkPy52YWx1ZT8ubGVuZ3RoIHx8IDApID09IDBcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBtYi01XCIgKm5nRm9yPVwibGV0IGRhdGEgb2YgZmllbGQuc291cmNlRGF0YVtmaWVsZC5kYXRhU291cmNlVHlwZV1cIj5cclxuICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIiB0eXBlPVwiY2hlY2tib3hcIiB2YWx1ZT1cIlwiIGlkPVwiZmxleENoZWNrQ2hlY2tlZFwiIFsobmdNb2RlbCldPVwiZGF0YS5jaGVja2VkXCI+XHJcbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCIgZm9yPVwiZmxleENoZWNrQ2hlY2tlZFwiPlxyXG4gICAgICAgICAgICB7e2RhdGEubmFtZX19XHJcbiAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcblxyXG5cclxuICA8bmctY29udGFpbmVyICpuZ0lmPVwic3R5bGVzPy5kZXZpZGVyPy5kaXNwbGF5XCI+XHJcbiAgICA8c2ltcG8tc3ZnLWRpdmlkZXIgW2RpdmlkZXJUeXBlXT1cInN0eWxlcz8uZGV2aWRlcj8uZGV2aWRlclR5cGVcIlxyXG4gICAgICBbY29sb3JdPVwibmV4dENvbXBvbmVudENvbG9yPy5jb2xvclwiPjwvc2ltcG8tc3ZnLWRpdmlkZXI+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbiAgPGRpdiBbbmdDbGFzc109XCJ7J2hvdmVyX2VmZmVjdCc6IGVkaXR9XCIgKm5nSWY9XCJzaG93RWRpdG9yc1wiPlxyXG4gICAgPHNpbXBvLWhvdmVyLWVsZW1lbnRzIFtkYXRhXT1cImRhdGFcIiBbaW5kZXhdPVwiaW5kZXhcIiBbZWRpdE9wdGlvbnNdPVwiZWRpdFwiPjwvc2ltcG8taG92ZXItZWxlbWVudHM+XHJcbiAgPC9kaXY+XHJcbjwvc2VjdGlvbj5cclxuIl19
@@ -2,20 +2,21 @@ import { Inject, Injectable } from "@angular/core";
2
2
  import { map } from "rxjs";
3
3
  import { Category, Product, Collection } from "../../public-api";
4
4
  import { PincodeLocation } from "../ecommerce/styles/PincodeLocation.model";
5
- import { API_URL, ECOMMERCE_URL } from '../tokens/api-token';
5
+ import { API_URL, CMIS_URL, ECOMMERCE_URL } from '../tokens/api-token';
6
6
  import * as i0 from "@angular/core";
7
7
  import * as i1 from "@angular/common/http";
8
8
  import * as i2 from "../../public-api";
9
9
  export class RestService {
10
- constructor(http, eventService, BASE_URL, ECOMMERCE_URL) {
10
+ constructor(http, eventService, BASE_URL, ECOMMERCE_URL, CMIS_URL) {
11
11
  this.http = http;
12
12
  this.eventService = eventService;
13
13
  this.BASE_URL = BASE_URL;
14
14
  this.ECOMMERCE_URL = ECOMMERCE_URL;
15
+ this.CMIS_URL = CMIS_URL;
15
16
  // private BASE_URL: string = "https://dev-api.simpo.ai/";
16
17
  // private ECOMMERCE_URL: string = "https://dev-ecommerce.simpo.ai/";
17
18
  // private CMIS_URL: string = "https://api-cmis.tejsoft.com/"; //production
18
- this.CMIS_URL = "https://dev-api.simpo.ai/"; //dev
19
+ // private CMIS_URL: string = "https://dev-api.simpo.ai/"; //dev
19
20
  // private CMIS_URL: string = "https://stageapi-cmis.tejsoft.com/"; //stage
20
21
  this.environmentTypeSubscriber = null;
21
22
  this.environmentTypeSubscriber = this.eventService.environmentType.subscribe((response) => {
@@ -46,9 +47,6 @@ export class RestService {
46
47
  getCategoriesByCollectionId(collectionId) {
47
48
  return this.http.get(this.BASE_URL + `ecommerce/inventory/category/collectionId?collectionId=${collectionId}`).pipe(map((response) => response.data?.map((category) => new Category(category))));
48
49
  }
49
- getProductBySelectedCategory(categoryId) {
50
- return this.http.get(this.BASE_URL + `ecommerce/product/${categoryId}`);
51
- }
52
50
  getProductDetails(productId = null) {
53
51
  const payload = {
54
52
  pageNo: 0,
@@ -328,7 +326,7 @@ export class RestService {
328
326
  }
329
327
  return map;
330
328
  }
331
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: RestService, deps: [{ token: i1.HttpClient }, { token: i2.EventsService }, { token: API_URL }, { token: ECOMMERCE_URL }], target: i0.ɵɵFactoryTarget.Injectable }); }
329
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: RestService, deps: [{ token: i1.HttpClient }, { token: i2.EventsService }, { token: API_URL }, { token: ECOMMERCE_URL }, { token: CMIS_URL }], target: i0.ɵɵFactoryTarget.Injectable }); }
332
330
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: RestService, providedIn: 'root' }); }
333
331
  }
334
332
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: RestService, decorators: [{
@@ -342,5 +340,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImpor
342
340
  }] }, { type: undefined, decorators: [{
343
341
  type: Inject,
344
342
  args: [ECOMMERCE_URL]
343
+ }] }, { type: undefined, decorators: [{
344
+ type: Inject,
345
+ args: [CMIS_URL]
345
346
  }] }] });
346
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9zZXJ2aWNlcy9yZXN0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLEdBQUcsRUFBd0MsTUFBTSxNQUFNLENBQUM7QUFDakUsT0FBTyxFQUFFLFFBQVEsRUFBaUIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBSWhGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7O0FBSzdELE1BQU0sT0FBTyxXQUFXO0lBU3RCLFlBQ21CLElBQWdCLEVBQ2hCLFlBQTJCLEVBQ25CLFFBQWdCLEVBQ1YsYUFBcUI7UUFIbkMsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNoQixpQkFBWSxHQUFaLFlBQVksQ0FBZTtRQUNuQixhQUFRLEdBQVIsUUFBUSxDQUFRO1FBQ1Ysa0JBQWEsR0FBYixhQUFhLENBQVE7UUFYdEQsMERBQTBEO1FBQzFELHFFQUFxRTtRQUNyRSwyRUFBMkU7UUFDbkUsYUFBUSxHQUFXLDJCQUEyQixDQUFDLENBQUMsS0FBSztRQUM3RCwyRUFBMkU7UUFDbkUsOEJBQXlCLEdBQXdCLElBQUksQ0FBQztRQVE1RCxJQUFJLENBQUMseUJBQXlCLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDeEYsSUFBSSxRQUFRLElBQUksS0FBSyxFQUFFLENBQUM7Z0JBQ3RCLElBQUksQ0FBQyxRQUFRLEdBQUcsMkJBQTJCLENBQUM7Z0JBQzVDLElBQUksQ0FBQyxhQUFhLEdBQUcsaUNBQWlDLENBQUM7WUFDekQsQ0FBQztpQkFDSSxJQUFJLFFBQVEsSUFBSSxPQUFPLEVBQUUsQ0FBQztnQkFDN0IsSUFBSSxDQUFDLGFBQWEsR0FBRyxtQ0FBbUMsQ0FBQztnQkFDekQsSUFBSSxDQUFDLFFBQVEsR0FBRyw2QkFBNkIsQ0FBQztZQUNoRCxDQUFDO2lCQUNJLENBQUM7Z0JBQ0osSUFBSSxDQUFDLFFBQVEsR0FBRywrQkFBK0IsQ0FBQztnQkFDaEQsSUFBSSxDQUFDLGFBQWEsR0FBRyxrQ0FBa0MsQ0FBQztZQUMxRCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0lBQ0QsV0FBVztRQUNULElBQUksSUFBSSxDQUFDLHlCQUF5QjtZQUNoQyxJQUFJLENBQUMseUJBQXlCLEVBQUUsV0FBVyxFQUFFLENBQUM7SUFDbEQsQ0FBQztJQUVELGtCQUFrQixDQUFDLFlBQXVDO1FBQ3hELElBQUksYUFBYSxHQUFrQixZQUFZLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ3pFLElBQUksQ0FBQyxhQUFhO1lBQ2hCLGFBQWEsR0FBRyxFQUFFLENBQUM7UUFDckIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxHQUFHLGdEQUFnRCxZQUFZLElBQUksRUFBRSxrQkFBa0IsYUFBYSxJQUFJLEVBQUUsaUJBQWlCLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBYSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQVksRUFBRSxFQUFFLENBQUMsSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDMVAsQ0FBQztJQUNELDJCQUEyQixDQUFDLFlBQW9CO1FBQzlDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRywwREFBMEQsWUFBWSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBYSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFFBQWEsRUFBRSxFQUFFLENBQUMsSUFBSSxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN00sQ0FBQztJQUVELDRCQUE0QixDQUFDLFVBQWtCO1FBQzdDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQ2xCLElBQUksQ0FBQyxRQUFRLEdBQUcscUJBQXFCLFVBQVUsRUFBRSxDQUNsRCxDQUFBO0lBQ0gsQ0FBQztJQUVELGlCQUFpQixDQUFDLFlBQTJCLElBQUk7UUFDL0MsTUFBTSxPQUFPLEdBQVE7WUFDbkIsTUFBTSxFQUFFLENBQUM7WUFDVCxRQUFRLEVBQUUsQ0FBQztZQUNYLE1BQU0sRUFBRSxTQUFTO1lBQ2pCLGFBQWEsRUFBRSxZQUFZLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQztZQUNwRCxNQUFNLEVBQUUsWUFBWSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxJQUFJO1lBQzdDLE9BQU8sRUFBRSxNQUFNO1NBQ2hCLENBQUE7UUFDRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLEdBQUcsK0JBQStCLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQWEsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBWSxFQUFFLEVBQUUsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM5SyxDQUFDO0lBQ0Qsa0JBQWtCLENBQUMsYUFBdUI7UUFDeEMsTUFBTSxPQUFPLEdBQUc7WUFDZCxHQUFHLEVBQUUsYUFBYTtTQUNuQixDQUFBO1FBQ0QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxHQUFHLHlDQUF5QyxFQUFFLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFhLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsVUFBZSxFQUFFLEVBQUUsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3TCxDQUFDO0lBRUQsZ0JBQWdCO1FBRWQsTUFBTSxVQUFVLEdBQVcsWUFBWSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxZQUFZLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNuRyxNQUFNLGFBQWEsR0FBVyxZQUFZLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMxRSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLEdBQUcsMkNBQTJDLFVBQVUsVUFBVSxhQUFhLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFhLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsUUFBYSxFQUFFLEVBQUUsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuTixDQUFDO0lBQ0QsaUJBQWlCO1FBQ2YsTUFBTSxPQUFPLEdBQVE7WUFDbkIsTUFBTSxFQUFFLENBQUM7WUFDVCxRQUFRLEVBQUUsRUFBRTtZQUNaLE9BQU8sRUFBRSxNQUFNO1lBQ2YsVUFBVSxFQUFFLFlBQVksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksWUFBWSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUM7U0FDOUUsQ0FBQTtRQUNELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxvQ0FBb0MsRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBYSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxVQUFlLEVBQUUsRUFBRSxDQUFDLElBQUksVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzdMLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxhQUF1QixFQUFFLFdBQXFCLEVBQUUsVUFBa0IsRUFBRSxRQUFnQixFQUFFLFFBQWdCLEVBQUUsTUFBYyxFQUFFLE1BQWMsRUFBRSxJQUFZO1FBQ3JLLE1BQU0sT0FBTyxHQUFRO1lBQ25CLFlBQVksRUFBRSxZQUFZLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLFlBQVksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDO1lBQy9FLGVBQWUsRUFBRSxZQUFZLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQztZQUN0RCxjQUFjLEVBQUUsYUFBYTtZQUM3QixZQUFZLEVBQUUsV0FBVztZQUN6QixZQUFZLEVBQUUsVUFBVTtZQUN4QixVQUFVLEVBQUUsUUFBUSxJQUFJLENBQUM7WUFDekIsVUFBVSxFQUFFLFFBQVEsSUFBSSxDQUFDO1lBQ3pCLFFBQVEsRUFBRSxNQUFNO1lBQ2hCLFFBQVEsRUFBRSxNQUFNO1lBQ2hCLFVBQVUsRUFBRSxJQUFJO1lBQ2hCLFFBQVEsRUFBRSxZQUFZLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUk7WUFDL0MsT0FBTyxFQUFFLE1BQU07U0FDaEIsQ0FBQTtRQUNELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRywrQkFBK0IsRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBYSxFQUFFLEVBQUU7WUFDeEcsT0FBTztnQkFDTCxLQUFLLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLO2dCQUMxQixJQUFJLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBWSxFQUFFLEVBQUUsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUN0RSxDQUFBO1FBQ0gsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNOLENBQUM7SUFDRCxzQkFBc0IsQ0FBQyxVQUFrQjtRQUN2QyxNQUFNLE9BQU8sR0FBUTtZQUNuQixZQUFZLEVBQUUsWUFBWSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxZQUFZLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQztZQUMvRSxZQUFZLEVBQUUsQ0FBQyxVQUFVLENBQUM7WUFDMUIsZUFBZSxFQUFFLFlBQVksQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDO1lBQ3RELFFBQVEsRUFBRSxDQUFDO1lBQ1gsVUFBVSxFQUFFLEVBQUU7WUFDZCxRQUFRLEVBQUUsWUFBWSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxJQUFJO1lBQy9DLE9BQU8sRUFBRSxNQUFNO1NBQ2hCLENBQUE7UUFDRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLEdBQUcsK0JBQStCLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQWEsRUFBRSxFQUFFO1lBQ3hHLE9BQU87Z0JBQ0wsS0FBSyxFQUFFLFFBQVEsQ0FBQyxLQUFLO2dCQUNyQixJQUFJLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBWSxFQUFFLEVBQUUsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUN0RSxDQUFBO1FBQ0gsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNOLENBQUM7SUFDRCx3QkFBd0IsQ0FBQyxZQUFvQjtRQUMzQyxNQUFNLE9BQU8sR0FBUTtZQUNuQixZQUFZLEVBQUUsWUFBWSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxZQUFZLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQztZQUMvRSxjQUFjLEVBQUUsQ0FBQyxZQUFZLENBQUM7WUFDOUIsZUFBZSxFQUFFLFlBQVksQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDO1lBQ3RELFFBQVEsRUFBRSxDQUFDO1lBQ1gsVUFBVSxFQUFFLEVBQUU7WUFDZCxRQUFRLEVBQUUsWUFBWSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxJQUFJO1lBQy9DLE9BQU8sRUFBRSxNQUFNO1NBQ2hCLENBQUE7UUFDRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLEdBQUcsK0JBQStCLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQWEsRUFBRSxFQUFFO1lBQ3hHLE9BQU87Z0JBQ0wsS0FBSyxFQUFFLFFBQVEsQ0FBQyxLQUFLO2dCQUNyQixJQUFJLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBWSxFQUFFLEVBQUUsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUN0RSxDQUFBO1FBQ0gsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNOLENBQUM7SUFFRCxTQUFTLENBQUMsT0FBZTtRQUN2QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEdBQUcsMkJBQTJCLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDOUUsQ0FBQztJQUNELGFBQWEsQ0FBQyxTQUFpQjtRQUM3QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLEdBQUcsMkNBQTJDLFNBQVMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3JHLENBQUM7SUFFRCxXQUFXLENBQUMsTUFBYyxFQUFFLFdBQW1CO1FBQzdDLE1BQU0sVUFBVSxHQUFXLFlBQVksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksWUFBWSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDbkcsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxHQUFHLHFDQUFxQyxNQUFNLGdCQUFnQixXQUFXLGVBQWUsVUFBVSxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDakosQ0FBQztJQUNELFNBQVMsQ0FBQyxNQUFjLEVBQUUsR0FBVyxFQUFFLFVBQXNCO1FBQzNELE1BQU0sVUFBVSxHQUFXLFlBQVksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksWUFBWSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDbkcsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxHQUFHLHNDQUFzQyxNQUFNLFFBQVEsR0FBRyxlQUFlLFVBQVUsRUFBRSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQ3ZJLENBQUM7SUFDRCxTQUFTLENBQUMsTUFBYyxFQUFFLFdBQW1CO1FBQzNDLE1BQU0sVUFBVSxHQUFXLFlBQVksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksWUFBWSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDbkcsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxHQUFHLGdDQUFnQyxNQUFNLGdCQUFnQixXQUFXLGVBQWUsVUFBVSxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDNUksQ0FBQztJQUNELHNCQUFzQixDQUFDLE1BQWM7UUFDbkMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxHQUFHLG1DQUFtQyxNQUFNLHFCQUFxQixDQUFDLENBQUM7SUFDdkcsQ0FBQztJQUNELHNCQUFzQixDQUFDLE1BQWM7UUFDbkMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxHQUFHLG1DQUFtQyxNQUFNLGNBQWMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN0RyxDQUFDO0lBRUQsV0FBVyxDQUFDLFFBQWE7UUFDdkIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxHQUFHLHNCQUFzQixFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQzFFLENBQUM7SUFDRCxZQUFZLENBQUMsTUFBYyxFQUFFLFFBQTZCO1FBQ3hELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRywrQkFBK0IsTUFBTSxhQUFhLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDckcsQ0FBQztJQUNELFVBQVUsQ0FBQyxNQUFjO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxnQ0FBZ0MsTUFBTSxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDeEYsQ0FBQztJQUNELFdBQVcsQ0FBQyxNQUFjO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxrQ0FBa0MsTUFBTSxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDekYsQ0FBQztJQUNELGNBQWMsQ0FBQyxJQUFTO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyw0QkFBNEIsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBQ0QsYUFBYSxDQUFDLE9BQVk7UUFDeEIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxHQUFHLDRCQUE0QixFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzlFLENBQUM7SUFDRCxhQUFhLENBQUMsT0FBWTtRQUN4QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLEdBQUcsNEJBQTRCLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDOUUsQ0FBQztJQUNELG1CQUFtQjtJQUVuQixDQUFDO0lBQ0Qsa0JBQWtCO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyx1QkFBdUIsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFDRCxlQUFlLENBQUMsTUFBYztRQUM1QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLEdBQUcsK0JBQStCLE1BQU0sb0JBQW9CLENBQUMsQ0FBQTtJQUNqRyxDQUFDO0lBQ0QsY0FBYyxDQUFDLE1BQWMsRUFBRSxPQUFZO1FBQ3pDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxzQ0FBc0MsTUFBTSxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDaEcsQ0FBQztJQUVELFVBQVU7SUFDVixrQkFBa0IsQ0FBQyxPQUFZO1FBQzdCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsR0FBRyxlQUFlLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDdkUsQ0FBQztJQUNELGFBQWEsQ0FBQyxPQUFlLEVBQUUsT0FBWTtRQUN6QyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEdBQUcseUNBQXlDLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3JHLENBQUM7SUFDRCxrQkFBa0IsQ0FBQyxPQUFZO1FBQzdCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsR0FBRyxnQkFBZ0IsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBQ0Qsb0JBQW9CLENBQUMsTUFBYztRQUNqQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEdBQUcsb0NBQW9DLE1BQU0sRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFhLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBWSxFQUFFLEVBQUUsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUFBLENBQUM7SUFDdEwsQ0FBQztJQUVELG9CQUFvQixDQUFDLE9BQWU7UUFDbEMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyx3Q0FBd0MsT0FBTyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBYyxFQUFFLEVBQUU7WUFDbEcsT0FBTyxJQUFJLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN4QyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ0wsQ0FBQztJQUNELGlDQUFpQyxDQUFDLE9BQWU7UUFDL0MsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxnQ0FBZ0MsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRUQsYUFBYSxDQUFDLE9BQVk7UUFDeEIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxHQUFHLG1DQUFtQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3RGLENBQUM7SUFFRCxlQUFlLENBQUMsT0FBWTtRQUMxQixNQUFNLFVBQVUsR0FBVyxZQUFZLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLFlBQVksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ25HLHNDQUFzQztRQUN0QyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLEdBQUcsb0NBQW9DLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDdEYsQ0FBQztJQUVELGNBQWMsQ0FBQyxRQUFhO1FBQzFCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxtQ0FBbUMsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUN0RixDQUFDO0lBRUQsaUJBQWlCLENBQUMsSUFBUztRQUN6QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEdBQUcscUJBQXFCLEVBQUUsSUFBSSxDQUFDLENBQUE7SUFDcEUsQ0FBQztJQUVELGNBQWMsQ0FBQyxVQUFlLEVBQUUsSUFBWSxFQUFFLElBQVk7UUFDeEQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FDbEIsSUFBSSxDQUFDLFFBQVEsR0FBRyw2Q0FBNkMsVUFBVSxTQUFTLElBQUksU0FBUyxJQUFJLEVBQUUsQ0FDcEcsQ0FBQTtJQUNILENBQUM7SUFFRCxjQUFjLENBQUMsVUFBZSxFQUFFLElBQVksRUFBRSxJQUFZO1FBQ3hELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQ2xCLElBQUksQ0FBQyxRQUFRLEdBQUcsOENBQThDLFVBQVUsU0FBUyxJQUFJLFNBQVMsSUFBSSxFQUFFLENBQ3JHLENBQUE7SUFDSCxDQUFDO0lBRUQsV0FBVyxDQUFDLFVBQWUsRUFBRSxJQUFZLEVBQUUsSUFBWSxFQUFFLFVBQWtCLEVBQUUsU0FBaUI7UUFDNUYsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FDbEIsSUFBSSxDQUFDLFFBQVEsR0FBRyw4Q0FBOEMsVUFBVSxTQUFTLElBQUksU0FBUyxJQUFJLGVBQWUsVUFBVSxjQUFjLFNBQVMsRUFBRSxDQUNySixDQUFBO0lBQ0gsQ0FBQztJQUdELGVBQWUsQ0FBQyxVQUFlLEVBQUUsSUFBVTtRQUN6QyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUNsQixJQUFJLENBQUMsUUFBUSxHQUFHLCtDQUErQyxVQUFVLFNBQVMsSUFBSSxFQUFFLENBQ3pGLENBQUE7SUFDSCxDQUFDO0lBRUQsbUJBQW1CO1FBQ2pCLE1BQU0sVUFBVSxHQUFXLFlBQVksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksWUFBWSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDbkcsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FDbEIsSUFBSSxDQUFDLFFBQVEsR0FBRyx3Q0FBd0MsVUFBVSxFQUFFLENBQ3JFLENBQUE7SUFDSCxDQUFDO0lBRUQsYUFBYSxDQUFDLFVBQWUsRUFBRSxJQUFTLEVBQUUsSUFBUyxFQUFFLFVBQWdCO1FBQ25FLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNoQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUNsQixJQUFJLENBQUMsUUFBUSxHQUFHLDZDQUE2QyxVQUFVLFNBQVMsSUFBSSxTQUFTLElBQUksRUFBRSxDQUNwRyxDQUFBO1FBQ0gsQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUNsQixJQUFJLENBQUMsUUFBUSxHQUFHLDZDQUE2QyxVQUFVLFNBQVMsSUFBSSxTQUFTLElBQUksZUFBZSxVQUFVLEVBQUUsQ0FDN0gsQ0FBQTtRQUVILENBQUM7SUFDSCxDQUFDO0lBRUQscUJBQXFCLENBQUMsVUFBZSxFQUFFLElBQVksRUFBRSxJQUFZLEVBQUUsVUFBa0IsRUFBRSxTQUFpQjtRQUN0RyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUNsQixJQUFJLENBQUMsUUFBUSxHQUFHLDJDQUEyQyxVQUFVLFNBQVMsSUFBSSxTQUFTLElBQUksZUFBZSxVQUFVLGNBQWMsU0FBUyxFQUFFLENBQ2xKLENBQUE7SUFDSCxDQUFDO0lBRUQsaUJBQWlCLENBQUMsSUFBUztRQUN6QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUNsQixJQUFJLENBQUMsUUFBUSxHQUFHLDRDQUE0QyxFQUFFLElBQUksQ0FDbkUsQ0FBQTtJQUNILENBQUM7SUFFRCxxQkFBcUIsQ0FBQyxHQUFRLEVBQUUsU0FBYyxFQUFFLFFBQWE7UUFDM0QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FDbEIsSUFBSSxDQUFDLFFBQVEsR0FBRyx5QkFBeUIsR0FBRywyQkFBMkIsU0FBUyxxQ0FBcUMsUUFBUSxFQUFFLENBQ2hJLENBQUE7SUFDSCxDQUFDO0lBRUQsa0JBQWtCLENBQUMsT0FBWTtRQUM3QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUNuQixJQUFJLENBQUMsUUFBUSxHQUFHLCtCQUErQixPQUFPLEVBQUUsU0FBUyxJQUFJLEVBQUUsRUFBRSxFQUFFLE9BQU8sQ0FDbkYsQ0FBQTtJQUNILENBQUM7SUFFRCxlQUFlLENBQUMsT0FBWTtRQUMxQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUNuQixJQUFJLENBQUMsUUFBUSxHQUFHLDZDQUE2QyxPQUFPLEVBQUUsY0FBYyxJQUFJLEVBQUUsRUFBRSxFQUFFLE9BQU8sQ0FDdEcsQ0FBQTtJQUNILENBQUM7SUFFRCx5QkFBeUIsQ0FBQyxPQUFZO1FBQ3BDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQ25CLElBQUksQ0FBQyxRQUFRLEdBQUcsb0NBQW9DLEVBQUUsT0FBTyxDQUM5RCxDQUFBO0lBQ0gsQ0FBQztJQUVELDRCQUE0QixDQUFDLE9BQVk7UUFDdkMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FDbkIsSUFBSSxDQUFDLFFBQVEsR0FBRyx1Q0FBdUMsRUFBRSxPQUFPLENBQ2pFLENBQUE7SUFDSCxDQUFDO0lBR0QsOEJBQThCLENBQUMsT0FBWTtRQUN6QyxNQUFNLFVBQVUsR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRXRELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQ2xCLElBQUksQ0FBQyxRQUFRLEdBQUcseUNBQXlDLFVBQVUsWUFBWSxPQUFPLEVBQUUsQ0FDekYsQ0FBQTtJQUNILENBQUM7SUFFRCxlQUFlLENBQUMsT0FBWTtRQUMxQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUNsQixJQUFJLENBQUMsUUFBUSxHQUFHLG1CQUFtQixFQUFFLE9BQU8sQ0FDN0MsQ0FBQTtJQUNILENBQUM7SUFFRCxjQUFjLENBQUMsT0FBWTtRQUN6QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUNsQixJQUFJLENBQUMsUUFBUSxHQUFHLGdDQUFnQyxFQUFFLE9BQU8sQ0FBQyxDQUFBO0lBQzlELENBQUM7SUFFRCxXQUFXLENBQUMsTUFBVztRQUNyQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUNsQixJQUFJLENBQUMsUUFBUSxHQUFHLDRCQUE0QixNQUFNLEVBQUUsQ0FDckQsQ0FBQTtJQUNILENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxPQUFZO1FBQzlCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQ2xCLElBQUksQ0FBQyxRQUFRLEdBQUcseUJBQXlCLEVBQUUsT0FBTyxDQUNuRCxDQUFBO0lBQ0gsQ0FBQztJQUVELHlCQUF5QjtRQUN2QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUNsQixJQUFJLENBQUMsUUFBUSxHQUFHLG9DQUFvQyxDQUNyRCxDQUFBO0lBQ0gsQ0FBQztJQUNELFdBQVc7UUFDVCxJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQztRQUN0RyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUNsQixJQUFJLENBQUMsUUFBUSxHQUFHLHFFQUFxRSxDQUN0RixDQUFBO0lBQ0gsQ0FBQztJQUVELGVBQWU7UUFDYixNQUFNLFVBQVUsR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFBO1FBQ3JELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQ2xCLElBQUksQ0FBQyxRQUFRLEdBQUcscURBQXFELFVBQVUsbUJBQW1CLENBQ25HLENBQUE7SUFDSCxDQUFDO0lBRUQsMkJBQTJCLENBQUMsWUFBaUI7UUFDM0MsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FDbkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxrQ0FBa0MsRUFDbEQsWUFBWSxDQUNiLENBQUM7SUFDSixDQUFDO0lBRUQsY0FBYyxDQUFDLE9BQVk7UUFDekIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FDbkIsSUFBSSxDQUFDLFFBQVEsR0FBRyw2Q0FBNkMsRUFBRSxPQUFPLENBQ3ZFLENBQUE7SUFDSCxDQUFDO0lBRUQsa0JBQWtCLENBQUMsVUFBaUI7UUFDbEMsSUFBSSxHQUFHLEdBQVEsRUFBRSxDQUFDO1FBRWxCLEtBQUssSUFBSSxLQUFLLElBQUksVUFBVSxFQUFFLENBQUM7WUFDN0IsS0FBSyxJQUFJLFVBQVUsSUFBSSxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBQ3hDLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVztvQkFDekIsU0FBUztnQkFFWCxJQUFJLFFBQVEsR0FBRyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUM7Z0JBQ2pGLElBQUksU0FBUyxHQUFHLFVBQVUsQ0FBQyxjQUFjLENBQUM7Z0JBRTFDLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztvQkFDbkIsR0FBRyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQztnQkFDckIsQ0FBQztnQkFDRCxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7b0JBQzlCLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUM7Z0JBQ2hDLENBQUM7Z0JBQ0QsS0FBSyxDQUFDLGFBQWEsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxXQUFXLENBQUM7Z0JBQzlDLEtBQUssQ0FBQyxjQUFjLENBQUMsR0FBRyxVQUFVLENBQUMsWUFBWSxDQUFDO2dCQUVoRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztnQkFDbkQsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUMxQyxDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQzs4R0FwYVUsV0FBVyx5RUFZWixPQUFPLGFBQ1AsYUFBYTtrSEFiWixXQUFXLGNBRlYsTUFBTTs7MkZBRVAsV0FBVztrQkFIdkIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQWFJLE1BQU07MkJBQUMsT0FBTzs7MEJBQ2QsTUFBTTsyQkFBQyxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xyXG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIE9uRGVzdHJveSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IG1hcCwgT2JzZXJ2YWJsZSwgU3Vic2NyaWJlciwgU3Vic2NyaXB0aW9uIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgQ2F0ZWdvcnksIEV2ZW50c1NlcnZpY2UsIFByb2R1Y3QsIENvbGxlY3Rpb24gfSBmcm9tIFwiLi4vLi4vcHVibGljLWFwaVwiO1xyXG5pbXBvcnQgeyBSZXZpZXcgfSBmcm9tIFwiLi4vZWNvbW1lcmNlL3N0eWxlcy9yZXZpZXcubW9kYWxcIjtcclxuaW1wb3J0IHsgRGV2aWNlSW5mbyB9IGZyb20gXCIuLi9lY29tbWVyY2Uvc3R5bGVzL3VzZXIubW9kYWxcIjtcclxuaW1wb3J0IHsgUGluQ29kZUxvY2F0aW9uSW50ZXIgfSBmcm9tIFwiLi4vZWNvbW1lcmNlL3N0eWxlcy9QaW5jb2RlTG9jYXRpb25JbnRlci5tb2RlbFwiO1xyXG5pbXBvcnQgeyBQaW5jb2RlTG9jYXRpb24gfSBmcm9tIFwiLi4vZWNvbW1lcmNlL3N0eWxlcy9QaW5jb2RlTG9jYXRpb24ubW9kZWxcIjtcclxuaW1wb3J0IHsgQVBJX1VSTCwgRUNPTU1FUkNFX1VSTCB9IGZyb20gJy4uL3Rva2Vucy9hcGktdG9rZW4nO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIFJlc3RTZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcclxuXHJcbiAgLy8gcHJpdmF0ZSBCQVNFX1VSTDogc3RyaW5nID0gXCJodHRwczovL2Rldi1hcGkuc2ltcG8uYWkvXCI7XHJcbiAgLy8gcHJpdmF0ZSBFQ09NTUVSQ0VfVVJMOiBzdHJpbmcgPSBcImh0dHBzOi8vZGV2LWVjb21tZXJjZS5zaW1wby5haS9cIjtcclxuICAvLyBwcml2YXRlIENNSVNfVVJMOiBzdHJpbmcgPSBcImh0dHBzOi8vYXBpLWNtaXMudGVqc29mdC5jb20vXCI7IC8vcHJvZHVjdGlvblxyXG4gIHByaXZhdGUgQ01JU19VUkw6IHN0cmluZyA9IFwiaHR0cHM6Ly9kZXYtYXBpLnNpbXBvLmFpL1wiOyAvL2RldlxyXG4gIC8vIHByaXZhdGUgQ01JU19VUkw6IHN0cmluZyA9IFwiaHR0cHM6Ly9zdGFnZWFwaS1jbWlzLnRlanNvZnQuY29tL1wiOyAvL3N0YWdlXHJcbiAgcHJpdmF0ZSBlbnZpcm9ubWVudFR5cGVTdWJzY3JpYmVyOiBTdWJzY3JpcHRpb24gfCBudWxsID0gbnVsbDtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGh0dHA6IEh0dHBDbGllbnQsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGV2ZW50U2VydmljZTogRXZlbnRzU2VydmljZSxcclxuICAgIEBJbmplY3QoQVBJX1VSTCkgcHJpdmF0ZSBCQVNFX1VSTDogc3RyaW5nLFxyXG4gICAgQEluamVjdChFQ09NTUVSQ0VfVVJMKSBwcml2YXRlIEVDT01NRVJDRV9VUkw6IHN0cmluZ1xyXG4gICkge1xyXG4gICAgdGhpcy5lbnZpcm9ubWVudFR5cGVTdWJzY3JpYmVyID0gdGhpcy5ldmVudFNlcnZpY2UuZW52aXJvbm1lbnRUeXBlLnN1YnNjcmliZSgocmVzcG9uc2UpID0+IHtcclxuICAgICAgaWYgKHJlc3BvbnNlID09IFwiREVWXCIpIHtcclxuICAgICAgICB0aGlzLkJBU0VfVVJMID0gXCJodHRwczovL2Rldi1hcGkuc2ltcG8uYWkvXCI7XHJcbiAgICAgICAgdGhpcy5FQ09NTUVSQ0VfVVJMID0gXCJodHRwczovL2Rldi1lY29tbWVyY2Uuc2ltcG8uYWkvXCI7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAocmVzcG9uc2UgPT0gXCJTVEFHRVwiKSB7XHJcbiAgICAgICAgdGhpcy5FQ09NTUVSQ0VfVVJMID0gXCJodHRwczovL3N0YWdlLWVjb21tZXJjZS5zaW1wby5haS9cIjtcclxuICAgICAgICB0aGlzLkJBU0VfVVJMID0gXCJodHRwczovL3N0YXRlLWFwaS5zaW1wby5haS9cIjtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGlzLkJBU0VfVVJMID0gXCJodHRwczovL2FwaS1jbWlzLnRlanNvZnQuY29tL1wiO1xyXG4gICAgICAgIHRoaXMuRUNPTU1FUkNFX1VSTCA9IFwiaHR0cHM6Ly9wcm9kLWVjb21tZXJjZS5zaW1wby5haS9cIjtcclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5lbnZpcm9ubWVudFR5cGVTdWJzY3JpYmVyKVxyXG4gICAgICB0aGlzLmVudmlyb25tZW50VHlwZVN1YnNjcmliZXI/LnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBnZXRGZWF0dXJlZFByb2R1Y3QoY29sbGVjdGlvbklkOiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsKSB7XHJcbiAgICBsZXQgc3ViSW5kdXN0cnlJZDogc3RyaW5nIHwgbnVsbCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwic3ViSW5kdXN0cnlJZFwiKTtcclxuICAgIGlmICghc3ViSW5kdXN0cnlJZClcclxuICAgICAgc3ViSW5kdXN0cnlJZCA9IFwiXCI7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLkJBU0VfVVJMICsgYGVjb21tZXJjZS9wcm9kdWN0L2NvbGxlY3Rpb24vaWQ/Y29sbGVjdGlvbklkPSR7Y29sbGVjdGlvbklkIHx8ICcnfSZzdWJJbmR1c3RyeUlkPSR7c3ViSW5kdXN0cnlJZCB8fCAnJ30maXNFbmRVc2VyPXRydWVgKS5waXBlKG1hcCgocmVzcG9uc2U6IGFueSkgPT4gcmVzcG9uc2UuZGF0YT8ubWFwKChwcm9kdWN0OiBhbnkpID0+IG5ldyBQcm9kdWN0KHByb2R1Y3QpKSkpO1xyXG4gIH1cclxuICBnZXRDYXRlZ29yaWVzQnlDb2xsZWN0aW9uSWQoY29sbGVjdGlvbklkOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuQkFTRV9VUkwgKyBgZWNvbW1lcmNlL2ludmVudG9yeS9jYXRlZ29yeS9jb2xsZWN0aW9uSWQ/Y29sbGVjdGlvbklkPSR7Y29sbGVjdGlvbklkfWApLnBpcGUobWFwKChyZXNwb25zZTogYW55KSA9PiByZXNwb25zZS5kYXRhPy5tYXAoKGNhdGVnb3J5OiBhbnkpID0+IG5ldyBDYXRlZ29yeShjYXRlZ29yeSkpKSk7XHJcbiAgfVxyXG5cclxuICBnZXRQcm9kdWN0QnlTZWxlY3RlZENhdGVnb3J5KGNhdGVnb3J5SWQ6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoXHJcbiAgICAgIHRoaXMuQkFTRV9VUkwgKyBgZWNvbW1lcmNlL3Byb2R1Y3QvJHtjYXRlZ29yeUlkfWBcclxuICAgIClcclxuICB9XHJcblxyXG4gIGdldFByb2R1Y3REZXRhaWxzKHByb2R1Y3RJZDogc3RyaW5nIHwgbnVsbCA9IG51bGwpIHtcclxuICAgIGNvbnN0IHBheWxvYWQ6IGFueSA9IHtcclxuICAgICAgcGFnZU5vOiAwLFxyXG4gICAgICBwYWdlU2l6ZTogMSxcclxuICAgICAgaXRlbUlkOiBwcm9kdWN0SWQsXHJcbiAgICAgIHN1YkluZHVzdHJ5SWQ6IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwic3ViSW5kdXN0cnlJZFwiKSxcclxuICAgICAgdXNlcklkOiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcInBlcklkXCIpID8/IG51bGwsXHJcbiAgICAgIHJlcXVlc3Q6IFwiVVNFUlwiXHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dCh0aGlzLkJBU0VfVVJMICsgYGVjb21tZXJjZS9wcm9kdWN0L2l0ZW0vc2VhcmNoYCwgcGF5bG9hZCkucGlwZShtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHJlc3BvbnNlLmRhdGEuZGF0YS5tYXAoKHByb2R1Y3Q6IGFueSkgPT4gbmV3IFByb2R1Y3QocHJvZHVjdCkpKSk7XHJcbiAgfVxyXG4gIGdldENvbGxlY3Rpb25CeUlkcyhjb2xsZWN0aW9uSWRzOiBzdHJpbmdbXSkge1xyXG4gICAgY29uc3QgcGF5bG9hZCA9IHtcclxuICAgICAgaWRzOiBjb2xsZWN0aW9uSWRzXHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dCh0aGlzLkJBU0VfVVJMICsgYGVjb21tZXJjZS9pbnZlbnRvcnkvY29sbGVjdGlvbi9saXN0L2FsbGAsIHBheWxvYWQpLnBpcGUobWFwKChyZXNwb25zZTogYW55KSA9PiByZXNwb25zZS5kYXRhPy5tYXAoKGNvbGxlY3Rpb246IGFueSkgPT4gbmV3IENvbGxlY3Rpb24oY29sbGVjdGlvbikpKSk7XHJcbiAgfVxyXG5cclxuICBnZXRBbGxDYXRlZ29yaWVzKCkge1xyXG5cclxuICAgIGNvbnN0IGJ1c2luZXNzSWQ6IHN0cmluZyA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiYklkXCIpID8/IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiYnVzaW5lc3NJZFwiKSA/PyBcIlwiO1xyXG4gICAgY29uc3Qgc3ViSW5kdXN0cnlJZDogc3RyaW5nID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJzdWJJbmR1c3RyeUlkXCIpID8/IFwiXCI7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLkJBU0VfVVJMICsgYGVjb21tZXJjZS9pbnZlbnRvcnkvZmVhdHVyZWQ/YnVzaW5lc3NJZD0ke2J1c2luZXNzSWR9JnN1YklkPSR7c3ViSW5kdXN0cnlJZH1gKS5waXBlKG1hcCgocmVzcG9uc2U6IGFueSkgPT4gcmVzcG9uc2UuZGF0YT8ubWFwKChjYXRlZ29yeTogYW55KSA9PiBuZXcgQ2F0ZWdvcnkoY2F0ZWdvcnkpKSkpO1xyXG4gIH1cclxuICBnZXRBbGxDb2xsZWN0aW9ucygpIHtcclxuICAgIGNvbnN0IHBheWxvYWQ6IGFueSA9IHtcclxuICAgICAgcGFnZU5vOiAwLFxyXG4gICAgICBwYWdlU2l6ZTogMTAsXHJcbiAgICAgIHJlcXVlc3Q6IFwiVVNFUlwiLFxyXG4gICAgICBidXNpbmVzc0lkOiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImJJZFwiKSA/PyBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImJ1c2luZXNzSWRcIilcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmh0dHAucHV0KHRoaXMuQkFTRV9VUkwgKyAnZWNvbW1lcmNlL2ludmVudG9yeS9nZXQvY29sbGVjdGlvbicsIHBheWxvYWQpLnBpcGUobWFwKChyZXNwb25zZTogYW55KSA9PiByZXNwb25zZS5kYXRhLmRhdGE/Lm1hcCgoY29sbGVjdGlvbjogYW55KSA9PiBuZXcgQ29sbGVjdGlvbihjb2xsZWN0aW9uKSkpKTtcclxuICB9XHJcblxyXG4gIGdldEZpbHRlcmVkUHJvZHVjdChjb2xsZWN0aW9uSWRzOiBzdHJpbmdbXSwgY2F0ZWdvcnlJZHM6IHN0cmluZ1tdLCBzZWFyY2hUZXh0OiBzdHJpbmcsIG1pblByaWNlOiBudW1iZXIsIG1heFByaWNlOiBudW1iZXIsIHNvcnRCeTogc3RyaW5nLCBwYWdlTm86IG51bWJlciwgc2l6ZTogbnVtYmVyKSB7XHJcbiAgICBjb25zdCBwYXlsb2FkOiBhbnkgPSB7XHJcbiAgICAgIFwiYnVzaW5lc3NJZFwiOiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImJJZFwiKSA/PyBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImJ1c2luZXNzSWRcIiksXHJcbiAgICAgIFwic3ViSW5kdXN0cnlJZFwiOiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcInN1YkluZHVzdHJ5SWRcIiksXHJcbiAgICAgIFwiY29sbGVjdGlvbklkXCI6IGNvbGxlY3Rpb25JZHMsXHJcbiAgICAgIFwiY2F0ZWdvcnlJZFwiOiBjYXRlZ29yeUlkcyxcclxuICAgICAgXCJzZWFyY2hUZXh0XCI6IHNlYXJjaFRleHQsXHJcbiAgICAgIFwibWluUHJpY2VcIjogbWluUHJpY2UgPz8gMCxcclxuICAgICAgXCJtYXhQcmljZVwiOiBtYXhQcmljZSA/PyAwLFxyXG4gICAgICBcInNvcnRCeVwiOiBzb3J0QnksXHJcbiAgICAgIFwicGFnZU5vXCI6IHBhZ2VObyxcclxuICAgICAgXCJwYWdlU2l6ZVwiOiBzaXplLFxyXG4gICAgICBcInVzZXJJZFwiOiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcInBlcklkXCIpID8/IG51bGwsXHJcbiAgICAgIHJlcXVlc3Q6IFwiVVNFUlwiXHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dCh0aGlzLkJBU0VfVVJMICsgYGVjb21tZXJjZS9wcm9kdWN0L2l0ZW0vc2VhcmNoYCwgcGF5bG9hZCkucGlwZShtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBjb3VudDogcmVzcG9uc2UuZGF0YS5jb3VudCxcclxuICAgICAgICBkYXRhOiByZXNwb25zZS5kYXRhLmRhdGE/Lm1hcCgocHJvZHVjdDogYW55KSA9PiBuZXcgUHJvZHVjdChwcm9kdWN0KSlcclxuICAgICAgfVxyXG4gICAgfSkpO1xyXG4gIH1cclxuICBnZXRQcm9kdWN0QnlDYXRlZ29yeUlkKGNhdGVnb3J5SWQ6IHN0cmluZykge1xyXG4gICAgY29uc3QgcGF5bG9hZDogYW55ID0ge1xyXG4gICAgICBcImJ1c2luZXNzSWRcIjogbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJiSWRcIikgPz8gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJidXNpbmVzc0lkXCIpLFxyXG4gICAgICBcImNhdGVnb3J5SWRcIjogW2NhdGVnb3J5SWRdLFxyXG4gICAgICBcInN1YkluZHVzdHJ5SWRcIjogbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJzdWJJbmR1c3RyeUlkXCIpLFxyXG4gICAgICBcInBhZ2VOb1wiOiAwLFxyXG4gICAgICBcInBhZ2VTaXplXCI6IDEwLFxyXG4gICAgICBcInVzZXJJZFwiOiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcInBlcklkXCIpID8/IG51bGwsXHJcbiAgICAgIHJlcXVlc3Q6IFwiVVNFUlwiXHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dCh0aGlzLkJBU0VfVVJMICsgYGVjb21tZXJjZS9wcm9kdWN0L2l0ZW0vc2VhcmNoYCwgcGF5bG9hZCkucGlwZShtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBjb3VudDogcmVzcG9uc2UuY291bnQsXHJcbiAgICAgICAgZGF0YTogcmVzcG9uc2UuZGF0YS5kYXRhPy5tYXAoKHByb2R1Y3Q6IGFueSkgPT4gbmV3IFByb2R1Y3QocHJvZHVjdCkpXHJcbiAgICAgIH1cclxuICAgIH0pKTtcclxuICB9XHJcbiAgZ2V0UHJvZHVjdEJ5Q29sbGVjdGlvbklkKGNvbGxlY3Rpb25JZDogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBwYXlsb2FkOiBhbnkgPSB7XHJcbiAgICAgIFwiYnVzaW5lc3NJZFwiOiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImJJZFwiKSA/PyBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImJ1c2luZXNzSWRcIiksXHJcbiAgICAgIFwiY29sbGVjdGlvbklkXCI6IFtjb2xsZWN0aW9uSWRdLFxyXG4gICAgICBcInN1YkluZHVzdHJ5SWRcIjogbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJzdWJJbmR1c3RyeUlkXCIpLFxyXG4gICAgICBcInBhZ2VOb1wiOiAwLFxyXG4gICAgICBcInBhZ2VTaXplXCI6IDEwLFxyXG4gICAgICBcInVzZXJJZFwiOiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcInBlcklkXCIpID8/IG51bGwsXHJcbiAgICAgIHJlcXVlc3Q6IFwiVVNFUlwiXHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dCh0aGlzLkJBU0VfVVJMICsgYGVjb21tZXJjZS9wcm9kdWN0L2l0ZW0vc2VhcmNoYCwgcGF5bG9hZCkucGlwZShtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBjb3VudDogcmVzcG9uc2UuY291bnQsXHJcbiAgICAgICAgZGF0YTogcmVzcG9uc2UuZGF0YS5kYXRhPy5tYXAoKHByb2R1Y3Q6IGFueSkgPT4gbmV3IFByb2R1Y3QocHJvZHVjdCkpXHJcbiAgICAgIH1cclxuICAgIH0pKTtcclxuICB9XHJcblxyXG4gIGFkZFJldmlldyhwYXlsb2FkOiBSZXZpZXcpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdCh0aGlzLkJBU0VfVVJMICsgYGVjb21tZXJjZS91c2VyL2FkZC9yZXZpZXdgLCBwYXlsb2FkKTtcclxuICB9XHJcbiAgZ2V0QWxsUmV2aWV3cyhwcm9kdWN0SWQ6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQodGhpcy5CQVNFX1VSTCArIGBlY29tbWVyY2UvdXNlci9maWx0ZXIvcmV2aWV3cz9wcm9kdWN0SWQ9JHtwcm9kdWN0SWR9YCwgbnVsbCk7XHJcbiAgfVxyXG5cclxuICBnZW5lcmF0ZU9UUChtb2JpbGU6IHN0cmluZywgY291bnRyeUNvZGU6IHN0cmluZykge1xyXG4gICAgY29uc3QgYnVzaW5lc3NJZDogc3RyaW5nID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJiSWRcIikgPz8gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJidXNpbmVzc0lkXCIpID8/IFwiXCI7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QodGhpcy5CQVNFX1VSTCArIGBlY29tbWVyY2UvdXNlci9vdHAvdHJpZ2dlcj9tb2JpbGU9JHttb2JpbGV9JmNvdW50cnlDb2RlPSR7Y291bnRyeUNvZGV9JmJ1c2luZXNzSWQ9JHtidXNpbmVzc0lkfWAsIG51bGwpO1xyXG4gIH1cclxuICB2ZXJpZnlPVFAobW9iaWxlOiBzdHJpbmcsIG90cDogc3RyaW5nLCBkZXZpY2VJbmZvOiBEZXZpY2VJbmZvKSB7XHJcbiAgICBjb25zdCBidXNpbmVzc0lkOiBzdHJpbmcgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImJJZFwiKSA/PyBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImJ1c2luZXNzSWRcIikgPz8gXCJcIjtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucHV0KHRoaXMuQkFTRV9VUkwgKyBgZWNvbW1lcmNlL3VzZXIvYXV0aGVudGljYXRlP21vYmlsZT0ke21vYmlsZX0mb3RwPSR7b3RwfSZidXNpbmVzc0lkPSR7YnVzaW5lc3NJZH1gLCBkZXZpY2VJbmZvKTtcclxuICB9XHJcbiAgcmVzZW5kT1RQKG1vYmlsZTogc3RyaW5nLCBjb3VudHJ5Q29kZTogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBidXNpbmVzc0lkOiBzdHJpbmcgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImJJZFwiKSA/PyBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImJ1c2luZXNzSWRcIikgPz8gXCJcIjtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdCh0aGlzLkJBU0VfVVJMICsgYGVjb21tZXJjZS91c2VyL3Jlc2VuZD9tb2JpbGU9JHttb2JpbGV9JmNvdW50cnlDb2RlPSR7Y291bnRyeUNvZGV9JmJ1c2luZXNzSWQ9JHtidXNpbmVzc0lkfWAsIG51bGwpO1xyXG4gIH1cclxuICBhcHBsaWNhYmxlRGlzY291bnRMaXN0KGNhcnRJZDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLkJBU0VfVVJMICsgYGVjb21tZXJjZS9vcmRlci9kaXNjb3VudC1jb3Vwb24vJHtjYXJ0SWR9L2FwcGxpY2FiaWxpdHkvbGlzdGApO1xyXG4gIH1cclxuICByZW1vdmVEaXNjb3VudEZyb21DYXJ0KGNhcnRJZDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dCh0aGlzLkJBU0VfVVJMICsgYGVjb21tZXJjZS9vcmRlci9kaXNjb3VudC1jb3Vwb24vJHtjYXJ0SWR9L2NhcnQvcmVtb3ZlYCwgbnVsbCk7XHJcbiAgfVxyXG5cclxuICBhZGRJdGVtVG9EQih1c2VyQ2FydDogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QodGhpcy5CQVNFX1VSTCArIGBlY29tbWVyY2Uvb3JkZXIvY2FydGAsIHVzZXJDYXJ0KTtcclxuICB9XHJcbiAgZ2V0VXNlckl0ZW1zKHVzZXJJZDogc3RyaW5nLCBjYXJ0VHlwZTogJ0NBUlQnIHwgJ1dJU0hMSVNUJykge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5CQVNFX1VSTCArIGBlY29tbWVyY2Uvb3JkZXIvY2FydD91c2VySWQ9JHt1c2VySWR9JmNhcnRUeXBlPSR7Y2FydFR5cGV9YCk7XHJcbiAgfVxyXG4gIHBsYWNlT3JkZXIoY2FydElkOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdCh0aGlzLkJBU0VfVVJMICsgYGVjb21tZXJjZS9vcmRlci9vcmRlcj9jYXJ0SWQ9JHtjYXJ0SWR9YCwgbnVsbCk7XHJcbiAgfVxyXG4gIGdldFVzZXJJbmZvKHVzZXJJZDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dCh0aGlzLkJBU0VfVVJMICsgYGVjb21tZXJjZS91c2VyL2dldC91c2VyP3VzZXJJZD0ke3VzZXJJZH1gLCBudWxsKTtcclxuICB9XHJcbiAgYWRkVXNlckFkZHJlc3ModXNlcjogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dCh0aGlzLkJBU0VfVVJMICsgYGVjb21tZXJjZS91c2VyL3VwZGF0ZS91c2VyYCwgdXNlcik7XHJcbiAgfVxyXG4gIHVwZGF0ZVByb2ZpbGUocGF5bG9hZDogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dCh0aGlzLkJBU0VfVVJMICsgYGVjb21tZXJjZS91c2VyL3VwZGF0ZS91c2VyYCwgcGF5bG9hZCk7XHJcbiAgfVxyXG4gIGdldFVzZXJPcmRlcnMocGF5bG9hZDogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dCh0aGlzLkJBU0VfVVJMICsgYGVjb21tZXJjZS9vcmRlci91c2VyL29yZGVyYCwgcGF5bG9hZCk7XHJcbiAgfVxyXG4gIHRvZ2dsZUl0ZW1DYXJ0VG9GYXYoKSB7XHJcblxyXG4gIH1cclxuICBtb3ZlV2lzaGxpc3RUb0NhcnQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLkJBU0VfVVJMICsgYGVjb21tZXJjZS91cGRhdGUvY2FydGApO1xyXG4gIH1cclxuICBnZXRVc2VyV2lzaGxpc3QodXNlcklkOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuQkFTRV9VUkwgKyBgZWNvbW1lcmNlL29yZGVyL2NhcnQ/dXNlcklkPSR7dXNlcklkfSZjYXJ0VHlwZT1XSVNITElTVGApXHJcbiAgfVxyXG4gIG1vdmVJdGVtVG9DYXJ0KHVzZXJJZDogc3RyaW5nLCBwYXlsb2FkOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucHV0KHRoaXMuQkFTRV9VUkwgKyBgZWNvbW1lcmNlL29yZGVyL3VwZGF0ZS9jYXJ0P3VzZXJJZD0ke3VzZXJJZH1gLCBwYXlsb2FkKTtcclxuICB9XHJcblxyXG4gIC8vIFBheW1lbnRcclxuICBjcmVhdGVQYXltZW50VG9rZW4ocGF5bG9hZDogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QodGhpcy5FQ09NTUVSQ0VfVVJMICsgYHBheW1lbnQvb3JkZXJgLCBwYXlsb2FkKTtcclxuICB9XHJcbiAgcmVmdW5kUGF5bWVudChvcmRlcklkOiBzdHJpbmcsIHBheWxvYWQ6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHRoaXMuQkFTRV9VUkwgKyBgZWNvbW1lcmNlL3BheW1lbnQvcmVmdW5kL2Jhbms/b3JkZXJJZD0ke29yZGVySWR9YCwgcGF5bG9hZCk7XHJcbiAgfVxyXG4gIGNoZWNrUGF5bWVudFN0YXR1cyhwYXlsb2FkOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdCh0aGlzLkVDT01NRVJDRV9VUkwgKyBgcGF5bWVudC9zdGF0dXNgLCBwYXlsb2FkKTtcclxuICB9XHJcbiAgZ2V0UmVjZW50Vmlld1Byb2R1Y3QodXNlcklkOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdCh0aGlzLkJBU0VfVVJMICsgYGVjb21tZXJjZS91c2VyL3JlY2VudFZpZXc/dXNlcklkPSR7dXNlcklkfWAsIG51bGwpLnBpcGUobWFwKChyZXNwb25zZTogYW55KSA9PiByZXNwb25zZS5kYXRhPy5tYXAoKHByb2R1Y3Q6IGFueSkgPT4gbmV3IFByb2R1Y3QocHJvZHVjdCkpKSk7O1xyXG4gIH1cclxuXHJcbiAgZ2V0TG9jYXRpb25CeVBpbkNvZGUocGluY29kZTogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChgaHR0cHM6Ly9hcGkucG9zdGFscGluY29kZS5pbi9waW5jb2RlLyR7cGluY29kZX1gKS5waXBlKG1hcCgobG9jYXRpb25zOiBhbnkpID0+IHtcclxuICAgICAgcmV0dXJuIG5ldyBQaW5jb2RlTG9jYXRpb24obG9jYXRpb25zKTtcclxuICAgIH0pKVxyXG4gIH1cclxuICBnZXRMb2NhdGlvbkJ5UGluQ29kZUludGVybmF0aW9uYWwocGluY29kZTogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChgaHR0cHM6Ly9hcGkuemlwcG9wb3RhbS51cy9pbi8ke3BpbmNvZGV9YCk7XHJcbiAgfVxyXG5cclxuICBzZW5kU2lnbnVwT1RQKHBheWxvYWQ6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHRoaXMuQkFTRV9VUkwgKyBgZWNvbW1lcmNlL3VzZXIvc2lnbnVwL290cC90cmlnZ2VyYCwgcGF5bG9hZCk7XHJcbiAgfVxyXG5cclxuICB2ZXJpZnlTaWdudXBPVFAocGF5bG9hZDogYW55KSB7XHJcbiAgICBjb25zdCBidXNpbmVzc0lkOiBzdHJpbmcgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImJJZFwiKSA/PyBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImJ1c2luZXNzSWRcIikgPz8gJyc7XHJcbiAgICAvLyBwYXlsb2FkW1wiYnVzaW5lc3NJZFwiXSA9IGJ1c2luZXNzSWQ7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dCh0aGlzLkJBU0VfVVJMICsgYGVjb21tZXJjZS91c2VyL2F1dGhlbnRpY2F0ZS9zaWdudXBgLCBwYXlsb2FkKTtcclxuICB9XHJcblxyXG4gIHNpZ25pblBhc3N3b3JkKHBhc3NEYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucHV0KHRoaXMuQkFTRV9VUkwgKyBgZWNvbW1lcmNlL3VzZXIvYXV0aGVudGljYXRlL2xvZ2luYCwgcGFzc0RhdGEpO1xyXG4gIH1cclxuXHJcbiAgY3JlYXRlQXBwb2ludG1lbnQoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QodGhpcy5CQVNFX1VSTCArIGBjcm0vYXBwb2ludG1lbnQvYWRkYCwgZGF0YSlcclxuICB9XHJcblxyXG4gIGdldEFsbFNlcnZpY2VzKGJ1c2luZXNzSWQ6IGFueSwgc2l6ZTogbnVtYmVyLCBwYWdlOiBudW1iZXIpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KFxyXG4gICAgICB0aGlzLkJBU0VfVVJMICsgYGNybS9hcHBvaW50bWVudC9jb25maWcvc2VydmljZT9idXNpbmVzc0lkPSR7YnVzaW5lc3NJZH0mc2l6ZT0ke3NpemV9JnBhZ2U9JHtwYWdlfWBcclxuICAgIClcclxuICB9XHJcblxyXG4gIGdldEFsbExvY2F0aW9uKGJ1c2luZXNzSWQ6IGFueSwgc2l6ZTogbnVtYmVyLCBwYWdlOiBudW1iZXIpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KFxyXG4gICAgICB0aGlzLkJBU0VfVVJMICsgYGNybS9hcHBvaW50bWVudC9jb25maWcvbG9jYXRpb24/YnVzaW5lc3NJZD0ke2J1c2luZXNzSWR9JnNpemU9JHtzaXplfSZwYWdlPSR7cGFnZX1gXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICBnZXRBbGxTdGFmZihidXNpbmVzc0lkOiBhbnksIHNpemU6IG51bWJlciwgcGFnZTogbnVtYmVyLCBsb2NhdGlvbklkOiBzdHJpbmcsIHNlcnZpY2VJZDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChcclxuICAgICAgdGhpcy5CQVNFX1VSTCArIGBjcm0vYXBwb2ludG1lbnQvY29uZmlnL2xvY2F0aW9uP2J1c2luZXNzSWQ9JHtidXNpbmVzc0lkfSZzaXplPSR7c2l6ZX0mcGFnZT0ke3BhZ2V9JmxvY2F0aW9uSWQ9JHtsb2NhdGlvbklkfSZzZXJ2aWNlSWQ9JHtzZXJ2aWNlSWR9YFxyXG4gICAgKVxyXG4gIH1cclxuXHJcblxyXG4gIGdldEFsbFRpbWVTbG90cyhsb2NhdGlvbklkOiBhbnksIGRhdGU6IERhdGUpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KFxyXG4gICAgICB0aGlzLkJBU0VfVVJMICsgYGNybS9hcHBvaW50bWVudC9jb25maWcvdGltZXNsb3RzP2xvY2F0aW9uSWQ9JHtsb2NhdGlvbklkfSZkYXRlPSR7ZGF0ZX1gXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICBnZXRCbG9nQnlCdXNpbmVzc0lkKCkge1xyXG4gICAgY29uc3QgYnVzaW5lc3NJZDogc3RyaW5nID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJiSWRcIikgPz8gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJidXNpbmVzc0lkXCIpID8/IFwiXCI7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChcclxuICAgICAgdGhpcy5CQVNFX1VSTCArIGBidXNpbmVzcy9ibG9nL2J5L2J1c2luZXNzP2J1c2luZXNzSWQ9JHtidXNpbmVzc0lkfWBcclxuICAgIClcclxuICB9XHJcblxyXG4gIGdldEFsbFNlcnZpY2UoYnVzaW5lc3NJZDogYW55LCBzaXplOiBhbnksIHBhZ2U6IGFueSwgbG9jYXRpb25JZD86IGFueSkge1xyXG4gICAgaWYgKCFsb2NhdGlvbklkKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KFxyXG4gICAgICAgIHRoaXMuQkFTRV9VUkwgKyBgY3JtL2FwcG9pbnRtZW50L2NvbmZpZy9zZXJ2aWNlP2J1c2luZXNzSWQ9JHtidXNpbmVzc0lkfSZzaXplPSR7c2l6ZX0mcGFnZT0ke3BhZ2V9YFxyXG4gICAgICApXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gdGhpcy5odHRwLmdldChcclxuICAgICAgICB0aGlzLkJBU0VfVVJMICsgYGNybS9hcHBvaW50bWVudC9jb25maWcvc2VydmljZT9idXNpbmVzc0lkPSR7YnVzaW5lc3NJZH0mc2l6ZT0ke3NpemV9JnBhZ2U9JHtwYWdlfSZsb2NhdGlvbklkPSR7bG9jYXRpb25JZH1gXHJcbiAgICAgIClcclxuXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRBbGxTdGFmZkJ5TG9jYXRpb24oYnVzaW5lc3NJZDogYW55LCBzaXplOiBudW1iZXIsIHBhZ2U6IG51bWJlciwgbG9jYXRpb25JZDogc3RyaW5nLCBzZXJ2aWNlSWQ6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoXHJcbiAgICAgIHRoaXMuQkFTRV9VUkwgKyBgY3JtL2FwcG9pbnRtZW50L2NvbmZpZy9zdGFmZj9idXNpbmVzc0lkPSR7YnVzaW5lc3NJZH0mc2l6ZT0ke3NpemV9JnBhZ2U9JHtwYWdlfSZsb2NhdGlvbklkPSR7bG9jYXRpb25JZH0mc2VydmljZUlkPSR7c2VydmljZUlkfWBcclxuICAgIClcclxuICB9XHJcblxyXG4gIGdldEF2YWlsYWJsZVNsb3RzKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQoXHJcbiAgICAgIHRoaXMuQkFTRV9VUkwgKyBgY3JtL2FwcG9pbnRtZW50L2NvbmZpZy9hdmFpbGFibGUvdGltZXNsb3RzYCwgZGF0YVxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgZ2V0U2VsZWN0ZWRMaXN0RmllbGRzKGJJZDogYW55LCBzaG93SW5FcnA6IGFueSwgZm9ybU5hbWU6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoXHJcbiAgICAgIHRoaXMuQ01JU19VUkwgKyBgY3JtL2ZpZWxkcz9idXNpbmVzc0lkPSR7YklkfSZzdGF0dXM9dHJ1ZSZzaG93SW5Gb3JtPSR7c2hvd0luRXJwfSZpc1BhZ2luYXRpb249ZmFsc2UmZmllbGRDYXRlZ29yeT0ke2Zvcm1OYW1lfWBcclxuICAgIClcclxuICB9XHJcblxyXG4gIGNyZWF0ZVJlZ2lzdHJhdGlvbihwYXlsb2FkOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgdGhpcy5DTUlTX1VSTCArIGBjcm0vcmVnaXN0cmF0aW9uLz9lbnF1aXJ5SWQ9JHtwYXlsb2FkPy5lbnF1aXJ5SWQgfHwgJyd9YCwgcGF5bG9hZFxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgY3JlYXRlQWRtaXNzaW9uKHBheWxvYWQ6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICB0aGlzLkNNSVNfVVJMICsgYGNybS9yZWdpc3RyYXRpb24vYWRtaXNzaW9uP3JlZ2lzdHJhdGlvbklkPSR7cGF5bG9hZD8ucmVnaXN0cmF0aW9uSWQgfHwgJyd9YCwgcGF5bG9hZFxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgY3JlYXRlUGF5bWVudEZvckFkbWlzc2lvbihwYXlsb2FkOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgdGhpcy5DTUlTX1VSTCArIGBjcm0vcmVnaXN0cmF0aW9uL2FkbWlzc2lvbi9wYXltZW50YCwgcGF5bG9hZFxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgY3JlYXRlUmVnaXN0cmF0aW9uRm9yUGF5bWVudChwYXlsb2FkOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgdGhpcy5DTUlTX1VSTCArIGBjcm0vcmVnaXN0cmF0aW9uL3JlZ2lzdHJhdGlvbi9wYXltZW50YCwgcGF5bG9hZFxyXG4gICAgKVxyXG4gIH1cclxuXHJcblxyXG4gIGdldFN1YnNjcmlwdGlvbkZvckZlZVN0cnVjdHVyZShncmFkZUlkOiBhbnkpIHtcclxuICAgIGNvbnN0IGJ1c2luZXNzSWQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnYnVzaW5lc3NJZCcpO1xyXG5cclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KFxyXG4gICAgICB0aGlzLkNNSVNfVVJMICsgYGNybS9zdWJzY3JpcHRpb24vcGxhbi9saXN0P2J1c2luZXNzSWQ9JHtidXNpbmVzc0lkfSZncmFkZUlkPSR7Z3JhZGVJZH1gXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICBnZXRGZWVTdHJ1Y3R1cmUocGF5bG9hZDogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dChcclxuICAgICAgdGhpcy5DTUlTX1VSTCArIGBjcm0vZmVlL3N0cnVjdHVyZWAsIHBheWxvYWRcclxuICAgIClcclxuICB9XHJcblxyXG4gIGdldEFsbERvY3VtZW50KHBheWxvYWQ6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQoXHJcbiAgICAgIHRoaXMuQ01JU19VUkwgKyBgY3JtL21hc3Rlci9kb2N1bWVudFR5cGUvZmlsdGVyYCwgcGF5bG9hZClcclxuICB9XHJcblxyXG4gIGdldExlYWRCeUlkKGxlYWRJZDogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChcclxuICAgICAgdGhpcy5DTUlTX1VSTCArIGBjcm0vbGVhZHMvZ2V0LW9uZT9sZWFkSWQ9JHtsZWFkSWR9YFxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgZ2V0UmVnaXN0cmF0aW9uTGlzdChwYXlsb2FkOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucHV0KFxyXG4gICAgICB0aGlzLkNNSVNfVVJMICsgYGNybS9yZWdpc3RyYXRpb24vZ2V0QWxsYCwgcGF5bG9hZFxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgZ2V0QWxsQ29tcG9uZW50Q2F0ZWdvcmllcygpe1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoXHJcbiAgICAgIHRoaXMuQkFTRV9VUkwgKyBgYWRtaW4vbWFzdGVyL3RlbXBsYXRlL2NhdGVnb3J5L2FsbGBcclxuICAgIClcclxuICB9XHJcbiAgZ2V0VGVtcGxhdGUoKSB7XHJcbiAgICBsZXQgdGVtcGxhdGVJZCA9IEpTT04ucGFyc2UoSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnYkRldGFpbHMnKSkpKT8udGVtcGxhdGVJZDtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KFxyXG4gICAgICB0aGlzLkJBU0VfVVJMICsgYGJ1c2luZXNzL3YzL3dlYnNpdGUvMWVmZDFkYTAtZTE3Yi02NWVjLWIwZmItM2I3MTNhMmQwNDg5L3BhZ2VzL2xpc3RgXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICBnZXRJbWFnZUxpYnJhcnkoKSB7XHJcbiAgICBjb25zdCBidXNpbmVzc0lkID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2J1c2luZXNzSWQnKVxyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoXHJcbiAgICAgIHRoaXMuQkFTRV9VUkwgKyBgYWRtaW4vbGlicmFyeS9pbWFnZS9saWJyYXJ5L2xpc3QvcGFnZWQ/YnVzaW5lc3NJZD0ke2J1c2luZXNzSWR9JnBhZ2VObz0wJnNpemU9MTBgXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICBzYXZlSW1hZ2VzVG9CdXNpbmVzc0xpYnJhcnkobWVkaWFSZXF1ZXN0OiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgdGhpcy5CQVNFX1VSTCArIGBhZG1pbi9saWJyYXJ5L2ltYWdlL2xpYnJhcnkvc2F2ZWAsXHJcbiAgICAgIG1lZGlhUmVxdWVzdFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHJlZ2VuZXJhdGVUZXh0KHJlcXVlc3Q6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICB0aGlzLkJBU0VfVVJMICsgYGFkbWluL2NvbnRlbnQvc3VnZ2VzdC92Mi93ZWJzaXRlL2luZGl2aWR1YWxgLCByZXF1ZXN0XHJcbiAgICApXHJcbiAgfVxyXG5cclxuICBnZXRGaWVsZHNUb0Rpc3BsYXkoZmllbGRzTGlzdDogYW55W10pIHtcclxuICAgIGxldCBtYXA6IGFueSA9IHt9O1xyXG5cclxuICAgIGZvciAobGV0IGZpZWxkIG9mIGZpZWxkc0xpc3QpIHtcclxuICAgICAgZm9yIChsZXQgZmllbGRHcm91cCBvZiBmaWVsZC5maWVsZEdyb3VwKSB7XHJcbiAgICAgICAgaWYgKCFmaWVsZEdyb3VwLmZpZWxkU3RlcElkKVxyXG4gICAgICAgICAgY29udGludWU7XHJcblxyXG4gICAgICAgIGxldCBzdGVwTmFtZSA9IGZpZWxkR3JvdXAuZmllbGRTdGVwTmFtZSA/IGZpZWxkR3JvdXAuZmllbGRTdGVwTmFtZSA6ICd1bmRlZmluZWQnO1xyXG4gICAgICAgIGxldCBncm91cE5hbWUgPSBmaWVsZEdyb3VwLmZpZWxkR3JvdXBOYW1lO1xyXG5cclxuICAgICAgICBpZiAoIW1hcFtzdGVwTmFtZV0pIHtcclxuICAgICAgICAgIG1hcFtzdGVwTmFtZV0gPSB7fTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCFtYXBbc3RlcE5hbWVdW2dyb3VwTmFtZV0pIHtcclxuICAgICAgICAgIG1hcFtzdGVwTmFtZV1bZ3JvdXBOYW1lXSA9IFtdO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmaWVsZFsnZmllbGRTdGVwSWQnXSA9IGZpZWxkR3JvdXAuZmllbGRTdGVwSWQ7XHJcbiAgICAgICAgZmllbGRbJ2ZpZWxkR3JvdXBJZCddID0gZmllbGRHcm91cC5maWVsZEdyb3VwSWQ7XHJcblxyXG4gICAgICAgIGNvbnN0IG5ld0ZpZWxkID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShmaWVsZCkpO1xyXG4gICAgICAgIG1hcFtzdGVwTmFtZV1bZ3JvdXBOYW1lXS5wdXNoKG5ld0ZpZWxkKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBtYXA7XHJcbiAgfVxyXG59XHJcbiJdfQ==
347
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9zZXJ2aWNlcy9yZXN0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLEdBQUcsRUFBd0MsTUFBTSxNQUFNLENBQUM7QUFDakUsT0FBTyxFQUFFLFFBQVEsRUFBaUIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBSWhGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxhQUFhLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7OztBQUt2RSxNQUFNLE9BQU8sV0FBVztJQVN0QixZQUNtQixJQUFnQixFQUNoQixZQUEyQixFQUNuQixRQUFnQixFQUNWLGFBQXFCLEVBQzFCLFFBQWdCO1FBSnpCLFNBQUksR0FBSixJQUFJLENBQVk7UUFDaEIsaUJBQVksR0FBWixZQUFZLENBQWU7UUFDbkIsYUFBUSxHQUFSLFFBQVEsQ0FBUTtRQUNWLGtCQUFhLEdBQWIsYUFBYSxDQUFRO1FBQzFCLGFBQVEsR0FBUixRQUFRLENBQVE7UUFaNUMsMERBQTBEO1FBQzFELHFFQUFxRTtRQUNyRSwyRUFBMkU7UUFDM0UsZ0VBQWdFO1FBQ2hFLDJFQUEyRTtRQUNuRSw4QkFBeUIsR0FBd0IsSUFBSSxDQUFDO1FBUzVELElBQUksQ0FBQyx5QkFBeUIsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUN4RixJQUFJLFFBQVEsSUFBSSxLQUFLLEVBQUUsQ0FBQztnQkFDdEIsSUFBSSxDQUFDLFFBQVEsR0FBRywyQkFBMkIsQ0FBQztnQkFDNUMsSUFBSSxDQUFDLGFBQWEsR0FBRyxpQ0FBaUMsQ0FBQztZQUN6RCxDQUFDO2lCQUNJLElBQUksUUFBUSxJQUFJLE9BQU8sRUFBRSxDQUFDO2dCQUM3QixJQUFJLENBQUMsYUFBYSxHQUFHLG1DQUFtQyxDQUFDO2dCQUN6RCxJQUFJLENBQUMsUUFBUSxHQUFHLDZCQUE2QixDQUFDO1lBQ2hELENBQUM7aUJBQ0ksQ0FBQztnQkFDSixJQUFJLENBQUMsUUFBUSxHQUFHLCtCQUErQixDQUFDO2dCQUNoRCxJQUFJLENBQUMsYUFBYSxHQUFHLGtDQUFrQyxDQUFDO1lBQzFELENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFDRCxXQUFXO1FBQ1QsSUFBSSxJQUFJLENBQUMseUJBQXlCO1lBQ2hDLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxXQUFXLEVBQUUsQ0FBQztJQUNsRCxDQUFDO0lBRUQsa0JBQWtCLENBQUMsWUFBdUM7UUFDeEQsSUFBSSxhQUFhLEdBQWtCLFlBQVksQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDekUsSUFBSSxDQUFDLGFBQWE7WUFDaEIsYUFBYSxHQUFHLEVBQUUsQ0FBQztRQUNyQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLEdBQUcsZ0RBQWdELFlBQVksSUFBSSxFQUFFLGtCQUFrQixhQUFhLElBQUksRUFBRSxpQkFBaUIsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFhLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBWSxFQUFFLEVBQUUsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMxUCxDQUFDO0lBQ0QsMkJBQTJCLENBQUMsWUFBb0I7UUFDOUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxHQUFHLDBEQUEwRCxZQUFZLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFhLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsUUFBYSxFQUFFLEVBQUUsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3TSxDQUFDO0lBQ0QsaUJBQWlCLENBQUMsWUFBMkIsSUFBSTtRQUMvQyxNQUFNLE9BQU8sR0FBUTtZQUNuQixNQUFNLEVBQUUsQ0FBQztZQUNULFFBQVEsRUFBRSxDQUFDO1lBQ1gsTUFBTSxFQUFFLFNBQVM7WUFDakIsYUFBYSxFQUFFLFlBQVksQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDO1lBQ3BELE1BQU0sRUFBRSxZQUFZLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUk7WUFDN0MsT0FBTyxFQUFFLE1BQU07U0FDaEIsQ0FBQTtRQUNELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRywrQkFBK0IsRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBYSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFZLEVBQUUsRUFBRSxDQUFDLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzlLLENBQUM7SUFDRCxrQkFBa0IsQ0FBQyxhQUF1QjtRQUN4QyxNQUFNLE9BQU8sR0FBRztZQUNkLEdBQUcsRUFBRSxhQUFhO1NBQ25CLENBQUE7UUFDRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLEdBQUcseUNBQXlDLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQWEsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxVQUFlLEVBQUUsRUFBRSxDQUFDLElBQUksVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzdMLENBQUM7SUFFRCxnQkFBZ0I7UUFFZCxNQUFNLFVBQVUsR0FBVyxZQUFZLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLFlBQVksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ25HLE1BQU0sYUFBYSxHQUFXLFlBQVksQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzFFLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRywyQ0FBMkMsVUFBVSxVQUFVLGFBQWEsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQWEsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxRQUFhLEVBQUUsRUFBRSxDQUFDLElBQUksUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25OLENBQUM7SUFDRCxpQkFBaUI7UUFDZixNQUFNLE9BQU8sR0FBUTtZQUNuQixNQUFNLEVBQUUsQ0FBQztZQUNULFFBQVEsRUFBRSxFQUFFO1lBQ1osT0FBTyxFQUFFLE1BQU07WUFDZixVQUFVLEVBQUUsWUFBWSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxZQUFZLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQztTQUM5RSxDQUFBO1FBQ0QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxHQUFHLG9DQUFvQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFhLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFVBQWUsRUFBRSxFQUFFLENBQUMsSUFBSSxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0wsQ0FBQztJQUVELGtCQUFrQixDQUFDLGFBQXVCLEVBQUUsV0FBcUIsRUFBRSxVQUFrQixFQUFFLFFBQWdCLEVBQUUsUUFBZ0IsRUFBRSxNQUFjLEVBQUUsTUFBYyxFQUFFLElBQVk7UUFDckssTUFBTSxPQUFPLEdBQVE7WUFDbkIsWUFBWSxFQUFFLFlBQVksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksWUFBWSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUM7WUFDL0UsZUFBZSxFQUFFLFlBQVksQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDO1lBQ3RELGNBQWMsRUFBRSxhQUFhO1lBQzdCLFlBQVksRUFBRSxXQUFXO1lBQ3pCLFlBQVksRUFBRSxVQUFVO1lBQ3hCLFVBQVUsRUFBRSxRQUFRLElBQUksQ0FBQztZQUN6QixVQUFVLEVBQUUsUUFBUSxJQUFJLENBQUM7WUFDekIsUUFBUSxFQUFFLE1BQU07WUFDaEIsUUFBUSxFQUFFLE1BQU07WUFDaEIsVUFBVSxFQUFFLElBQUk7WUFDaEIsUUFBUSxFQUFFLFlBQVksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSTtZQUMvQyxPQUFPLEVBQUUsTUFBTTtTQUNoQixDQUFBO1FBQ0QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxHQUFHLCtCQUErQixFQUFFLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFhLEVBQUUsRUFBRTtZQUN4RyxPQUFPO2dCQUNMLEtBQUssRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUs7Z0JBQzFCLElBQUksRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFZLEVBQUUsRUFBRSxDQUFDLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQ3RFLENBQUE7UUFDSCxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ04sQ0FBQztJQUNELHNCQUFzQixDQUFDLFVBQWtCO1FBQ3ZDLE1BQU0sT0FBTyxHQUFRO1lBQ25CLFlBQVksRUFBRSxZQUFZLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLFlBQVksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDO1lBQy9FLFlBQVksRUFBRSxDQUFDLFVBQVUsQ0FBQztZQUMxQixlQUFlLEVBQUUsWUFBWSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUM7WUFDdEQsUUFBUSxFQUFFLENBQUM7WUFDWCxVQUFVLEVBQUUsRUFBRTtZQUNkLFFBQVEsRUFBRSxZQUFZLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUk7WUFDL0MsT0FBTyxFQUFFLE1BQU07U0FDaEIsQ0FBQTtRQUNELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRywrQkFBK0IsRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBYSxFQUFFLEVBQUU7WUFDeEcsT0FBTztnQkFDTCxLQUFLLEVBQUUsUUFBUSxDQUFDLEtBQUs7Z0JBQ3JCLElBQUksRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFZLEVBQUUsRUFBRSxDQUFDLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQ3RFLENBQUE7UUFDSCxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ04sQ0FBQztJQUNELHdCQUF3QixDQUFDLFlBQW9CO1FBQzNDLE1BQU0sT0FBTyxHQUFRO1lBQ25CLFlBQVksRUFBRSxZQUFZLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLFlBQVksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDO1lBQy9FLGNBQWMsRUFBRSxDQUFDLFlBQVksQ0FBQztZQUM5QixlQUFlLEVBQUUsWUFBWSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUM7WUFDdEQsUUFBUSxFQUFFLENBQUM7WUFDWCxVQUFVLEVBQUUsRUFBRTtZQUNkLFFBQVEsRUFBRSxZQUFZLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUk7WUFDL0MsT0FBTyxFQUFFLE1BQU07U0FDaEIsQ0FBQTtRQUNELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRywrQkFBK0IsRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBYSxFQUFFLEVBQUU7WUFDeEcsT0FBTztnQkFDTCxLQUFLLEVBQUUsUUFBUSxDQUFDLEtBQUs7Z0JBQ3JCLElBQUksRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFZLEVBQUUsRUFBRSxDQUFDLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQ3RFLENBQUE7UUFDSCxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ04sQ0FBQztJQUVELFNBQVMsQ0FBQyxPQUFlO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRywyQkFBMkIsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUM5RSxDQUFDO0lBQ0QsYUFBYSxDQUFDLFNBQWlCO1FBQzdCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRywyQ0FBMkMsU0FBUyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDckcsQ0FBQztJQUVELFdBQVcsQ0FBQyxNQUFjLEVBQUUsV0FBbUI7UUFDN0MsTUFBTSxVQUFVLEdBQVcsWUFBWSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxZQUFZLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNuRyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEdBQUcscUNBQXFDLE1BQU0sZ0JBQWdCLFdBQVcsZUFBZSxVQUFVLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNqSixDQUFDO0lBQ0QsU0FBUyxDQUFDLE1BQWMsRUFBRSxHQUFXLEVBQUUsVUFBc0I7UUFDM0QsTUFBTSxVQUFVLEdBQVcsWUFBWSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxZQUFZLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNuRyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLEdBQUcsc0NBQXNDLE1BQU0sUUFBUSxHQUFHLGVBQWUsVUFBVSxFQUFFLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDdkksQ0FBQztJQUNELFNBQVMsQ0FBQyxNQUFjLEVBQUUsV0FBbUI7UUFDM0MsTUFBTSxVQUFVLEdBQVcsWUFBWSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxZQUFZLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNuRyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEdBQUcsZ0NBQWdDLE1BQU0sZ0JBQWdCLFdBQVcsZUFBZSxVQUFVLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM1SSxDQUFDO0lBQ0Qsc0JBQXNCLENBQUMsTUFBYztRQUNuQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLEdBQUcsbUNBQW1DLE1BQU0scUJBQXFCLENBQUMsQ0FBQztJQUN2RyxDQUFDO0lBQ0Qsc0JBQXNCLENBQUMsTUFBYztRQUNuQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLEdBQUcsbUNBQW1DLE1BQU0sY0FBYyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3RHLENBQUM7SUFFRCxXQUFXLENBQUMsUUFBYTtRQUN2QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEdBQUcsc0JBQXNCLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDMUUsQ0FBQztJQUNELFlBQVksQ0FBQyxNQUFjLEVBQUUsUUFBNkI7UUFDeEQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxHQUFHLCtCQUErQixNQUFNLGFBQWEsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUNyRyxDQUFDO0lBQ0QsVUFBVSxDQUFDLE1BQWM7UUFDdkIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxHQUFHLGdDQUFnQyxNQUFNLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN4RixDQUFDO0lBQ0QsV0FBVyxDQUFDLE1BQWM7UUFDeEIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxHQUFHLGtDQUFrQyxNQUFNLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN6RixDQUFDO0lBQ0QsY0FBYyxDQUFDLElBQVM7UUFDdEIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxHQUFHLDRCQUE0QixFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFDRCxhQUFhLENBQUMsT0FBWTtRQUN4QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLEdBQUcsNEJBQTRCLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDOUUsQ0FBQztJQUNELGFBQWEsQ0FBQyxPQUFZO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyw0QkFBNEIsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUM5RSxDQUFDO0lBQ0QsbUJBQW1CO0lBRW5CLENBQUM7SUFDRCxrQkFBa0I7UUFDaEIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxHQUFHLHVCQUF1QixDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUNELGVBQWUsQ0FBQyxNQUFjO1FBQzVCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRywrQkFBK0IsTUFBTSxvQkFBb0IsQ0FBQyxDQUFBO0lBQ2pHLENBQUM7SUFDRCxjQUFjLENBQUMsTUFBYyxFQUFFLE9BQVk7UUFDekMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxHQUFHLHNDQUFzQyxNQUFNLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNoRyxDQUFDO0lBRUQsVUFBVTtJQUNWLGtCQUFrQixDQUFDLE9BQVk7UUFDN0IsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxHQUFHLGVBQWUsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN2RSxDQUFDO0lBQ0QsYUFBYSxDQUFDLE9BQWUsRUFBRSxPQUFZO1FBQ3pDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyx5Q0FBeUMsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDckcsQ0FBQztJQUNELGtCQUFrQixDQUFDLE9BQVk7UUFDN0IsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxHQUFHLGdCQUFnQixFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3hFLENBQUM7SUFDRCxvQkFBb0IsQ0FBQyxNQUFjO1FBQ2pDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxvQ0FBb0MsTUFBTSxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQWEsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFZLEVBQUUsRUFBRSxDQUFDLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQUEsQ0FBQztJQUN0TCxDQUFDO0lBRUQsb0JBQW9CLENBQUMsT0FBZTtRQUNsQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLHdDQUF3QyxPQUFPLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFjLEVBQUUsRUFBRTtZQUNsRyxPQUFPLElBQUksZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3hDLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDTCxDQUFDO0lBQ0QsaUNBQWlDLENBQUMsT0FBZTtRQUMvQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGdDQUFnQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFRCxhQUFhLENBQUMsT0FBWTtRQUN4QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEdBQUcsbUNBQW1DLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDdEYsQ0FBQztJQUVELGVBQWUsQ0FBQyxPQUFZO1FBQzFCLE1BQU0sVUFBVSxHQUFXLFlBQVksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksWUFBWSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDbkcsc0NBQXNDO1FBQ3RDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxvQ0FBb0MsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN0RixDQUFDO0lBRUQsY0FBYyxDQUFDLFFBQWE7UUFDMUIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxHQUFHLG1DQUFtQyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ3RGLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxJQUFTO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxxQkFBcUIsRUFBRSxJQUFJLENBQUMsQ0FBQTtJQUNwRSxDQUFDO0lBRUQsY0FBYyxDQUFDLFVBQWUsRUFBRSxJQUFZLEVBQUUsSUFBWTtRQUN4RCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUNsQixJQUFJLENBQUMsUUFBUSxHQUFHLDZDQUE2QyxVQUFVLFNBQVMsSUFBSSxTQUFTLElBQUksRUFBRSxDQUNwRyxDQUFBO0lBQ0gsQ0FBQztJQUVELGNBQWMsQ0FBQyxVQUFlLEVBQUUsSUFBWSxFQUFFLElBQVk7UUFDeEQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FDbEIsSUFBSSxDQUFDLFFBQVEsR0FBRyw4Q0FBOEMsVUFBVSxTQUFTLElBQUksU0FBUyxJQUFJLEVBQUUsQ0FDckcsQ0FBQTtJQUNILENBQUM7SUFFRCxXQUFXLENBQUMsVUFBZSxFQUFFLElBQVksRUFBRSxJQUFZLEVBQUUsVUFBa0IsRUFBRSxTQUFpQjtRQUM1RixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUNsQixJQUFJLENBQUMsUUFBUSxHQUFHLDhDQUE4QyxVQUFVLFNBQVMsSUFBSSxTQUFTLElBQUksZUFBZSxVQUFVLGNBQWMsU0FBUyxFQUFFLENBQ3JKLENBQUE7SUFDSCxDQUFDO0lBR0QsZUFBZSxDQUFDLFVBQWUsRUFBRSxJQUFVO1FBQ3pDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQ2xCLElBQUksQ0FBQyxRQUFRLEdBQUcsK0NBQStDLFVBQVUsU0FBUyxJQUFJLEVBQUUsQ0FDekYsQ0FBQTtJQUNILENBQUM7SUFFRCxtQkFBbUI7UUFDakIsTUFBTSxVQUFVLEdBQVcsWUFBWSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxZQUFZLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNuRyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUNsQixJQUFJLENBQUMsUUFBUSxHQUFHLHdDQUF3QyxVQUFVLEVBQUUsQ0FDckUsQ0FBQTtJQUNILENBQUM7SUFFRCxhQUFhLENBQUMsVUFBZSxFQUFFLElBQVMsRUFBRSxJQUFTLEVBQUUsVUFBZ0I7UUFDbkUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2hCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQ2xCLElBQUksQ0FBQyxRQUFRLEdBQUcsNkNBQTZDLFVBQVUsU0FBUyxJQUFJLFNBQVMsSUFBSSxFQUFFLENBQ3BHLENBQUE7UUFDSCxDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQ2xCLElBQUksQ0FBQyxRQUFRLEdBQUcsNkNBQTZDLFVBQVUsU0FBUyxJQUFJLFNBQVMsSUFBSSxlQUFlLFVBQVUsRUFBRSxDQUM3SCxDQUFBO1FBRUgsQ0FBQztJQUNILENBQUM7SUFFRCxxQkFBcUIsQ0FBQyxVQUFlLEVBQUUsSUFBWSxFQUFFLElBQVksRUFBRSxVQUFrQixFQUFFLFNBQWlCO1FBQ3RHLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQ2xCLElBQUksQ0FBQyxRQUFRLEdBQUcsMkNBQTJDLFVBQVUsU0FBUyxJQUFJLFNBQVMsSUFBSSxlQUFlLFVBQVUsY0FBYyxTQUFTLEVBQUUsQ0FDbEosQ0FBQTtJQUNILENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxJQUFTO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQ2xCLElBQUksQ0FBQyxRQUFRLEdBQUcsNENBQTRDLEVBQUUsSUFBSSxDQUNuRSxDQUFBO0lBQ0gsQ0FBQztJQUVELHFCQUFxQixDQUFDLEdBQVEsRUFBRSxTQUFjLEVBQUUsUUFBYTtRQUMzRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUNsQixJQUFJLENBQUMsUUFBUSxHQUFHLHlCQUF5QixHQUFHLDJCQUEyQixTQUFTLHFDQUFxQyxRQUFRLEVBQUUsQ0FDaEksQ0FBQTtJQUNILENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxPQUFZO1FBQzdCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQ25CLElBQUksQ0FBQyxRQUFRLEdBQUcsK0JBQStCLE9BQU8sRUFBRSxTQUFTLElBQUksRUFBRSxFQUFFLEVBQUUsT0FBTyxDQUNuRixDQUFBO0lBQ0gsQ0FBQztJQUVELGVBQWUsQ0FBQyxPQUFZO1FBQzFCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQ25CLElBQUksQ0FBQyxRQUFRLEdBQUcsNkNBQTZDLE9BQU8sRUFBRSxjQUFjLElBQUksRUFBRSxFQUFFLEVBQUUsT0FBTyxDQUN0RyxDQUFBO0lBQ0gsQ0FBQztJQUVELHlCQUF5QixDQUFDLE9BQVk7UUFDcEMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FDbkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxvQ0FBb0MsRUFBRSxPQUFPLENBQzlELENBQUE7SUFDSCxDQUFDO0lBRUQsNEJBQTRCLENBQUMsT0FBWTtRQUN2QyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUNuQixJQUFJLENBQUMsUUFBUSxHQUFHLHVDQUF1QyxFQUFFLE9BQU8sQ0FDakUsQ0FBQTtJQUNILENBQUM7SUFHRCw4QkFBOEIsQ0FBQyxPQUFZO1FBQ3pDLE1BQU0sVUFBVSxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFdEQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FDbEIsSUFBSSxDQUFDLFFBQVEsR0FBRyx5Q0FBeUMsVUFBVSxZQUFZLE9BQU8sRUFBRSxDQUN6RixDQUFBO0lBQ0gsQ0FBQztJQUVELGVBQWUsQ0FBQyxPQUFZO1FBQzFCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQ2xCLElBQUksQ0FBQyxRQUFRLEdBQUcsbUJBQW1CLEVBQUUsT0FBTyxDQUM3QyxDQUFBO0lBQ0gsQ0FBQztJQUVELGNBQWMsQ0FBQyxPQUFZO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQ2xCLElBQUksQ0FBQyxRQUFRLEdBQUcsZ0NBQWdDLEVBQUUsT0FBTyxDQUFDLENBQUE7SUFDOUQsQ0FBQztJQUVELFdBQVcsQ0FBQyxNQUFXO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQ2xCLElBQUksQ0FBQyxRQUFRLEdBQUcsNEJBQTRCLE1BQU0sRUFBRSxDQUNyRCxDQUFBO0lBQ0gsQ0FBQztJQUVELG1CQUFtQixDQUFDLE9BQVk7UUFDOUIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FDbEIsSUFBSSxDQUFDLFFBQVEsR0FBRyx5QkFBeUIsRUFBRSxPQUFPLENBQ25ELENBQUE7SUFDSCxDQUFDO0lBRUQseUJBQXlCO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQ2xCLElBQUksQ0FBQyxRQUFRLEdBQUcsb0NBQW9DLENBQ3JELENBQUE7SUFDSCxDQUFDO0lBQ0QsV0FBVztRQUNULElBQUksVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDO1FBQ3RHLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQ2xCLElBQUksQ0FBQyxRQUFRLEdBQUcscUVBQXFFLENBQ3RGLENBQUE7SUFDSCxDQUFDO0lBRUQsZUFBZTtRQUNiLE1BQU0sVUFBVSxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUE7UUFDckQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FDbEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxxREFBcUQsVUFBVSxtQkFBbUIsQ0FDbkcsQ0FBQTtJQUNILENBQUM7SUFFRCwyQkFBMkIsQ0FBQyxZQUFpQjtRQUMzQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUNuQixJQUFJLENBQUMsUUFBUSxHQUFHLGtDQUFrQyxFQUNsRCxZQUFZLENBQ2IsQ0FBQztJQUNKLENBQUM7SUFFRCxjQUFjLENBQUMsT0FBWTtRQUN6QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUNuQixJQUFJLENBQUMsUUFBUSxHQUFHLDZDQUE2QyxFQUFFLE9BQU8sQ0FDdkUsQ0FBQTtJQUNILENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxVQUFpQjtRQUNsQyxJQUFJLEdBQUcsR0FBUSxFQUFFLENBQUM7UUFFbEIsS0FBSyxJQUFJLEtBQUssSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUM3QixLQUFLLElBQUksVUFBVSxJQUFJLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDeEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXO29CQUN6QixTQUFTO2dCQUVYLElBQUksUUFBUSxHQUFHLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQztnQkFDakYsSUFBSSxTQUFTLEdBQUcsVUFBVSxDQUFDLGNBQWMsQ0FBQztnQkFFMUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO29CQUNuQixHQUFHLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDO2dCQUNyQixDQUFDO2dCQUNELElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztvQkFDOUIsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztnQkFDaEMsQ0FBQztnQkFDRCxLQUFLLENBQUMsYUFBYSxDQUFDLEdBQUcsVUFBVSxDQUFDLFdBQVcsQ0FBQztnQkFDOUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxZQUFZLENBQUM7Z0JBRWhELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO2dCQUNuRCxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzFDLENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDOzhHQTlaVSxXQUFXLHlFQVlaLE9BQU8sYUFDUCxhQUFhLGFBQ2IsUUFBUTtrSEFkUCxXQUFXLGNBRlYsTUFBTTs7MkZBRVAsV0FBVztrQkFIdkIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQWFJLE1BQU07MkJBQUMsT0FBTzs7MEJBQ2QsTUFBTTsyQkFBQyxhQUFhOzswQkFDcEIsTUFBTTsyQkFBQyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xyXG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIE9uRGVzdHJveSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IG1hcCwgT2JzZXJ2YWJsZSwgU3Vic2NyaWJlciwgU3Vic2NyaXB0aW9uIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgQ2F0ZWdvcnksIEV2ZW50c1NlcnZpY2UsIFByb2R1Y3QsIENvbGxlY3Rpb24gfSBmcm9tIFwiLi4vLi4vcHVibGljLWFwaVwiO1xyXG5pbXBvcnQgeyBSZXZpZXcgfSBmcm9tIFwiLi4vZWNvbW1lcmNlL3N0eWxlcy9yZXZpZXcubW9kYWxcIjtcclxuaW1wb3J0IHsgRGV2aWNlSW5mbyB9IGZyb20gXCIuLi9lY29tbWVyY2Uvc3R5bGVzL3VzZXIubW9kYWxcIjtcclxuaW1wb3J0IHsgUGluQ29kZUxvY2F0aW9uSW50ZXIgfSBmcm9tIFwiLi4vZWNvbW1lcmNlL3N0eWxlcy9QaW5jb2RlTG9jYXRpb25JbnRlci5tb2RlbFwiO1xyXG5pbXBvcnQgeyBQaW5jb2RlTG9jYXRpb24gfSBmcm9tIFwiLi4vZWNvbW1lcmNlL3N0eWxlcy9QaW5jb2RlTG9jYXRpb24ubW9kZWxcIjtcclxuaW1wb3J0IHsgQVBJX1VSTCwgQ01JU19VUkwsIEVDT01NRVJDRV9VUkwgfSBmcm9tICcuLi90b2tlbnMvYXBpLXRva2VuJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSZXN0U2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcblxyXG4gIC8vIHByaXZhdGUgQkFTRV9VUkw6IHN0cmluZyA9IFwiaHR0cHM6Ly9kZXYtYXBpLnNpbXBvLmFpL1wiO1xyXG4gIC8vIHByaXZhdGUgRUNPTU1FUkNFX1VSTDogc3RyaW5nID0gXCJodHRwczovL2Rldi1lY29tbWVyY2Uuc2ltcG8uYWkvXCI7XHJcbiAgLy8gcHJpdmF0ZSBDTUlTX1VSTDogc3RyaW5nID0gXCJodHRwczovL2FwaS1jbWlzLnRlanNvZnQuY29tL1wiOyAvL3Byb2R1Y3Rpb25cclxuICAvLyBwcml2YXRlIENNSVNfVVJMOiBzdHJpbmcgPSBcImh0dHBzOi8vZGV2LWFwaS5zaW1wby5haS9cIjsgLy9kZXZcclxuICAvLyBwcml2YXRlIENNSVNfVVJMOiBzdHJpbmcgPSBcImh0dHBzOi8vc3RhZ2VhcGktY21pcy50ZWpzb2Z0LmNvbS9cIjsgLy9zdGFnZVxyXG4gIHByaXZhdGUgZW52aXJvbm1lbnRUeXBlU3Vic2NyaWJlcjogU3Vic2NyaXB0aW9uIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBodHRwOiBIdHRwQ2xpZW50LFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBldmVudFNlcnZpY2U6IEV2ZW50c1NlcnZpY2UsXHJcbiAgICBASW5qZWN0KEFQSV9VUkwpIHByaXZhdGUgQkFTRV9VUkw6IHN0cmluZyxcclxuICAgIEBJbmplY3QoRUNPTU1FUkNFX1VSTCkgcHJpdmF0ZSBFQ09NTUVSQ0VfVVJMOiBzdHJpbmcsXHJcbiAgICBASW5qZWN0KENNSVNfVVJMKSBwcml2YXRlIENNSVNfVVJMOiBzdHJpbmdcclxuICApIHtcclxuICAgIHRoaXMuZW52aXJvbm1lbnRUeXBlU3Vic2NyaWJlciA9IHRoaXMuZXZlbnRTZXJ2aWNlLmVudmlyb25tZW50VHlwZS5zdWJzY3JpYmUoKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgIGlmIChyZXNwb25zZSA9PSBcIkRFVlwiKSB7XHJcbiAgICAgICAgdGhpcy5CQVNFX1VSTCA9IFwiaHR0cHM6Ly9kZXYtYXBpLnNpbXBvLmFpL1wiO1xyXG4gICAgICAgIHRoaXMuRUNPTU1FUkNFX1VSTCA9IFwiaHR0cHM6Ly9kZXYtZWNvbW1lcmNlLnNpbXBvLmFpL1wiO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKHJlc3BvbnNlID09IFwiU1RBR0VcIikge1xyXG4gICAgICAgIHRoaXMuRUNPTU1FUkNFX1VSTCA9IFwiaHR0cHM6Ly9zdGFnZS1lY29tbWVyY2Uuc2ltcG8uYWkvXCI7XHJcbiAgICAgICAgdGhpcy5CQVNFX1VSTCA9IFwiaHR0cHM6Ly9zdGF0ZS1hcGkuc2ltcG8uYWkvXCI7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdGhpcy5CQVNFX1VSTCA9IFwiaHR0cHM6Ly9hcGktY21pcy50ZWpzb2Z0LmNvbS9cIjtcclxuICAgICAgICB0aGlzLkVDT01NRVJDRV9VUkwgPSBcImh0dHBzOi8vcHJvZC1lY29tbWVyY2Uuc2ltcG8uYWkvXCI7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuZW52aXJvbm1lbnRUeXBlU3Vic2NyaWJlcilcclxuICAgICAgdGhpcy5lbnZpcm9ubWVudFR5cGVTdWJzY3JpYmVyPy51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgZ2V0RmVhdHVyZWRQcm9kdWN0KGNvbGxlY3Rpb25JZDogc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbCkge1xyXG4gICAgbGV0IHN1YkluZHVzdHJ5SWQ6IHN0cmluZyB8IG51bGwgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcInN1YkluZHVzdHJ5SWRcIik7XHJcbiAgICBpZiAoIXN1YkluZHVzdHJ5SWQpXHJcbiAgICAgIHN1YkluZHVzdHJ5SWQgPSBcIlwiO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5CQVNFX1VSTCArIGBlY29tbWVyY2UvcHJvZHVjdC9jb2xsZWN0aW9uL2lkP2NvbGxlY3Rpb25JZD0ke2NvbGxlY3Rpb25JZCB8fCAnJ30mc3ViSW5kdXN0cnlJZD0ke3N1YkluZHVzdHJ5SWQgfHwgJyd9JmlzRW5kVXNlcj10cnVlYCkucGlwZShtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHJlc3BvbnNlLmRhdGE/Lm1hcCgocHJvZHVjdDogYW55KSA9PiBuZXcgUHJvZHVjdChwcm9kdWN0KSkpKTtcclxuICB9XHJcbiAgZ2V0Q2F0ZWdvcmllc0J5Q29sbGVjdGlvbklkKGNvbGxlY3Rpb25JZDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLkJBU0VfVVJMICsgYGVjb21tZXJjZS9pbnZlbnRvcnkvY2F0ZWdvcnkvY29sbGVjdGlvbklkP2NvbGxlY3Rpb25JZD0ke2NvbGxlY3Rpb25JZH1gKS5waXBlKG1hcCgocmVzcG9uc2U6IGFueSkgPT4gcmVzcG9uc2UuZGF0YT8ubWFwKChjYXRlZ29yeTogYW55KSA9PiBuZXcgQ2F0ZWdvcnkoY2F0ZWdvcnkpKSkpO1xyXG4gIH1cclxuICBnZXRQcm9kdWN0RGV0YWlscyhwcm9kdWN0SWQ6IHN0cmluZyB8IG51bGwgPSBudWxsKSB7XHJcbiAgICBjb25zdCBwYXlsb2FkOiBhbnkgPSB7XHJcbiAgICAgIHBhZ2VObzogMCxcclxuICAgICAgcGFnZVNpemU6IDEsXHJcbiAgICAgIGl0ZW1JZDogcHJvZHVjdElkLFxyXG4gICAgICBzdWJJbmR1c3RyeUlkOiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcInN1YkluZHVzdHJ5SWRcIiksXHJcbiAgICAgIHVzZXJJZDogbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJwZXJJZFwiKSA/PyBudWxsLFxyXG4gICAgICByZXF1ZXN0OiBcIlVTRVJcIlxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQodGhpcy5CQVNFX1VSTCArIGBlY29tbWVyY2UvcHJvZHVjdC9pdGVtL3NlYXJjaGAsIHBheWxvYWQpLnBpcGUobWFwKChyZXNwb25zZTogYW55KSA9PiByZXNwb25zZS5kYXRhLmRhdGEubWFwKChwcm9kdWN0OiBhbnkpID0+IG5ldyBQcm9kdWN0KHByb2R1Y3QpKSkpO1xyXG4gIH1cclxuICBnZXRDb2xsZWN0aW9uQnlJZHMoY29sbGVjdGlvbklkczogc3RyaW5nW10pIHtcclxuICAgIGNvbnN0IHBheWxvYWQgPSB7XHJcbiAgICAgIGlkczogY29sbGVjdGlvbklkc1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQodGhpcy5CQVNFX1VSTCArIGBlY29tbWVyY2UvaW52ZW50b3J5L2NvbGxlY3Rpb24vbGlzdC9hbGxgLCBwYXlsb2FkKS5waXBlKG1hcCgocmVzcG9uc2U6IGFueSkgPT4gcmVzcG9uc2UuZGF0YT8ubWFwKChjb2xsZWN0aW9uOiBhbnkpID0+IG5ldyBDb2xsZWN0aW9uKGNvbGxlY3Rpb24pKSkpO1xyXG4gIH1cclxuXHJcbiAgZ2V0QWxsQ2F0ZWdvcmllcygpIHtcclxuXHJcbiAgICBjb25zdCBidXNpbmVzc0lkOiBzdHJpbmcgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImJJZFwiKSA/PyBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImJ1c2luZXNzSWRcIikgPz8gXCJcIjtcclxuICAgIGNvbnN0IHN1YkluZHVzdHJ5SWQ6IHN0cmluZyA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwic3ViSW5kdXN0cnlJZFwiKSA/PyBcIlwiO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5CQVNFX1VSTCArIGBlY29tbWVyY2UvaW52ZW50b3J5L2ZlYXR1cmVkP2J1c2luZXNzSWQ9JHtidXNpbmVzc0lkfSZzdWJJZD0ke3N1YkluZHVzdHJ5SWR9YCkucGlwZShtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHJlc3BvbnNlLmRhdGE/Lm1hcCgoY2F0ZWdvcnk6IGFueSkgPT4gbmV3IENhdGVnb3J5KGNhdGVnb3J5KSkpKTtcclxuICB9XHJcbiAgZ2V0QWxsQ29sbGVjdGlvbnMoKSB7XHJcbiAgICBjb25zdCBwYXlsb2FkOiBhbnkgPSB7XHJcbiAgICAgIHBhZ2VObzogMCxcclxuICAgICAgcGFnZVNpemU6IDEwLFxyXG4gICAgICByZXF1ZXN0OiBcIlVTRVJcIixcclxuICAgICAgYnVzaW5lc3NJZDogbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJiSWRcIikgPz8gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJidXNpbmVzc0lkXCIpXHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dCh0aGlzLkJBU0VfVVJMICsgJ2Vjb21tZXJjZS9pbnZlbnRvcnkvZ2V0L2NvbGxlY3Rpb24nLCBwYXlsb2FkKS5waXBlKG1hcCgocmVzcG9uc2U6IGFueSkgPT4gcmVzcG9uc2UuZGF0YS5kYXRhPy5tYXAoKGNvbGxlY3Rpb246IGFueSkgPT4gbmV3IENvbGxlY3Rpb24oY29sbGVjdGlvbikpKSk7XHJcbiAgfVxyXG5cclxuICBnZXRGaWx0ZXJlZFByb2R1Y3QoY29sbGVjdGlvbklkczogc3RyaW5nW10sIGNhdGVnb3J5SWRzOiBzdHJpbmdbXSwgc2VhcmNoVGV4dDogc3RyaW5nLCBtaW5QcmljZTogbnVtYmVyLCBtYXhQcmljZTogbnVtYmVyLCBzb3J0Qnk6IHN0cmluZywgcGFnZU5vOiBudW1iZXIsIHNpemU6IG51bWJlcikge1xyXG4gICAgY29uc3QgcGF5bG9hZDogYW55ID0ge1xyXG4gICAgICBcImJ1c2luZXNzSWRcIjogbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJiSWRcIikgPz8gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJidXNpbmVzc0lkXCIpLFxyXG4gICAgICBcInN1YkluZHVzdHJ5SWRcIjogbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJzdWJJbmR1c3RyeUlkXCIpLFxyXG4gICAgICBcImNvbGxlY3Rpb25JZFwiOiBjb2xsZWN0aW9uSWRzLFxyXG4gICAgICBcImNhdGVnb3J5SWRcIjogY2F0ZWdvcnlJZHMsXHJcbiAgICAgIFwic2VhcmNoVGV4dFwiOiBzZWFyY2hUZXh0LFxyXG4gICAgICBcIm1pblByaWNlXCI6IG1pblByaWNlID8/IDAsXHJcbiAgICAgIFwibWF4UHJpY2VcIjogbWF4UHJpY2UgPz8gMCxcclxuICAgICAgXCJzb3J0QnlcIjogc29ydEJ5LFxyXG4gICAgICBcInBhZ2VOb1wiOiBwYWdlTm8sXHJcbiAgICAgIFwicGFnZVNpemVcIjogc2l6ZSxcclxuICAgICAgXCJ1c2VySWRcIjogbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJwZXJJZFwiKSA/PyBudWxsLFxyXG4gICAgICByZXF1ZXN0OiBcIlVTRVJcIlxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQodGhpcy5CQVNFX1VSTCArIGBlY29tbWVyY2UvcHJvZHVjdC9pdGVtL3NlYXJjaGAsIHBheWxvYWQpLnBpcGUobWFwKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgY291bnQ6IHJlc3BvbnNlLmRhdGEuY291bnQsXHJcbiAgICAgICAgZGF0YTogcmVzcG9uc2UuZGF0YS5kYXRhPy5tYXAoKHByb2R1Y3Q6IGFueSkgPT4gbmV3IFByb2R1Y3QocHJvZHVjdCkpXHJcbiAgICAgIH1cclxuICAgIH0pKTtcclxuICB9XHJcbiAgZ2V0UHJvZHVjdEJ5Q2F0ZWdvcnlJZChjYXRlZ29yeUlkOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IHBheWxvYWQ6IGFueSA9IHtcclxuICAgICAgXCJidXNpbmVzc0lkXCI6IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiYklkXCIpID8/IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiYnVzaW5lc3NJZFwiKSxcclxuICAgICAgXCJjYXRlZ29yeUlkXCI6IFtjYXRlZ29yeUlkXSxcclxuICAgICAgXCJzdWJJbmR1c3RyeUlkXCI6IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwic3ViSW5kdXN0cnlJZFwiKSxcclxuICAgICAgXCJwYWdlTm9cIjogMCxcclxuICAgICAgXCJwYWdlU2l6ZVwiOiAxMCxcclxuICAgICAgXCJ1c2VySWRcIjogbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJwZXJJZFwiKSA/PyBudWxsLFxyXG4gICAgICByZXF1ZXN0OiBcIlVTRVJcIlxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQodGhpcy5CQVNFX1VSTCArIGBlY29tbWVyY2UvcHJvZHVjdC9pdGVtL3NlYXJjaGAsIHBheWxvYWQpLnBpcGUobWFwKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgY291bnQ6IHJlc3BvbnNlLmNvdW50LFxyXG4gICAgICAgIGRhdGE6IHJlc3BvbnNlLmRhdGEuZGF0YT8ubWFwKChwcm9kdWN0OiBhbnkpID0+IG5ldyBQcm9kdWN0KHByb2R1Y3QpKVxyXG4gICAgICB9XHJcbiAgICB9KSk7XHJcbiAgfVxyXG4gIGdldFByb2R1Y3RCeUNvbGxlY3Rpb25JZChjb2xsZWN0aW9uSWQ6IHN0cmluZykge1xyXG4gICAgY29uc3QgcGF5bG9hZDogYW55ID0ge1xyXG4gICAgICBcImJ1c2luZXNzSWRcIjogbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJiSWRcIikgPz8gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJidXNpbmVzc0lkXCIpLFxyXG4gICAgICBcImNvbGxlY3Rpb25JZFwiOiBbY29sbGVjdGlvbklkXSxcclxuICAgICAgXCJzdWJJbmR1c3RyeUlkXCI6IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwic3ViSW5kdXN0cnlJZFwiKSxcclxuICAgICAgXCJwYWdlTm9cIjogMCxcclxuICAgICAgXCJwYWdlU2l6ZVwiOiAxMCxcclxuICAgICAgXCJ1c2VySWRcIjogbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJwZXJJZFwiKSA/PyBudWxsLFxyXG4gICAgICByZXF1ZXN0OiBcIlVTRVJcIlxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQodGhpcy5CQVNFX1VSTCArIGBlY29tbWVyY2UvcHJvZHVjdC9pdGVtL3NlYXJjaGAsIHBheWxvYWQpLnBpcGUobWFwKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgY291bnQ6IHJlc3BvbnNlLmNvdW50LFxyXG4gICAgICAgIGRhdGE6IHJlc3BvbnNlLmRhdGEuZGF0YT8ubWFwKChwcm9kdWN0OiBhbnkpID0+IG5ldyBQcm9kdWN0KHByb2R1Y3QpKVxyXG4gICAgICB9XHJcbiAgICB9KSk7XHJcbiAgfVxyXG5cclxuICBhZGRSZXZpZXcocGF5bG9hZDogUmV2aWV3KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QodGhpcy5CQVNFX1VSTCArIGBlY29tbWVyY2UvdXNlci9hZGQvcmV2aWV3YCwgcGF5bG9hZCk7XHJcbiAgfVxyXG4gIGdldEFsbFJldmlld3MocHJvZHVjdElkOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucHV0KHRoaXMuQkFTRV9VUkwgKyBgZWNvbW1lcmNlL3VzZXIvZmlsdGVyL3Jldmlld3M/cHJvZHVjdElkPSR7cHJvZHVjdElkfWAsIG51bGwpO1xyXG4gIH1cclxuXHJcbiAgZ2VuZXJhdGVPVFAobW9iaWxlOiBzdHJpbmcsIGNvdW50cnlDb2RlOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IGJ1c2luZXNzSWQ6IHN0cmluZyA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiYklkXCIpID8/IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiYnVzaW5lc3NJZFwiKSA/PyBcIlwiO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHRoaXMuQkFTRV9VUkwgKyBgZWNvbW1lcmNlL3VzZXIvb3RwL3RyaWdnZXI/bW9iaWxlPSR7bW9iaWxlfSZjb3VudHJ5Q29kZT0ke2NvdW50cnlDb2RlfSZidXNpbmVzc0lkPSR7YnVzaW5lc3NJZH1gLCBudWxsKTtcclxuICB9XHJcbiAgdmVyaWZ5T1RQKG1vYmlsZTogc3RyaW5nLCBvdHA6IHN0cmluZywgZGV2aWNlSW5mbzogRGV2aWNlSW5mbykge1xyXG4gICAgY29uc3QgYnVzaW5lc3NJZDogc3RyaW5nID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJiSWRcIikgPz8gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJidXNpbmVzc0lkXCIpID8/IFwiXCI7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dCh0aGlzLkJBU0VfVVJMICsgYGVjb21tZXJjZS91c2VyL2F1dGhlbnRpY2F0ZT9tb2JpbGU9JHttb2JpbGV9Jm90cD0ke290cH0mYnVzaW5lc3NJZD0ke2J1c2luZXNzSWR9YCwgZGV2aWNlSW5mbyk7XHJcbiAgfVxyXG4gIHJlc2VuZE9UUChtb2JpbGU6IHN0cmluZywgY291bnRyeUNvZGU6IHN0cmluZykge1xyXG4gICAgY29uc3QgYnVzaW5lc3NJZDogc3RyaW5nID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJiSWRcIikgPz8gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJidXNpbmVzc0lkXCIpID8/IFwiXCI7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QodGhpcy5CQVNFX1VSTCArIGBlY29tbWVyY2UvdXNlci9yZXNlbmQ/bW9iaWxlPSR7bW9iaWxlfSZjb3VudHJ5Q29kZT0ke2NvdW50cnlDb2RlfSZidXNpbmVzc0lkPSR7YnVzaW5lc3NJZH1gLCBudWxsKTtcclxuICB9XHJcbiAgYXBwbGljYWJsZURpc2NvdW50TGlzdChjYXJ0SWQ6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5CQVNFX1VSTCArIGBlY29tbWVyY2Uvb3JkZXIvZGlzY291bnQtY291cG9uLyR7Y2FydElkfS9hcHBsaWNhYmlsaXR5L2xpc3RgKTtcclxuICB9XHJcbiAgcmVtb3ZlRGlzY291bnRGcm9tQ2FydChjYXJ0SWQ6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQodGhpcy5CQVNFX1VSTCArIGBlY29tbWVyY2Uvb3JkZXIvZGlzY291bnQtY291cG9uLyR7Y2FydElkfS9jYXJ0L3JlbW92ZWAsIG51bGwpO1xyXG4gIH1cclxuXHJcbiAgYWRkSXRlbVRvREIodXNlckNhcnQ6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHRoaXMuQkFTRV9VUkwgKyBgZWNvbW1lcmNlL29yZGVyL2NhcnRgLCB1c2VyQ2FydCk7XHJcbiAgfVxyXG4gIGdldFVzZXJJdGVtcyh1c2VySWQ6IHN0cmluZywgY2FydFR5cGU6ICdDQVJUJyB8ICdXSVNITElTVCcpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuQkFTRV9VUkwgKyBgZWNvbW1lcmNlL29yZGVyL2NhcnQ/dXNlcklkPSR7dXNlcklkfSZjYXJ0VHlwZT0ke2NhcnRUeXBlfWApO1xyXG4gIH1cclxuICBwbGFjZU9yZGVyKGNhcnRJZDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QodGhpcy5CQVNFX1VSTCArIGBlY29tbWVyY2Uvb3JkZXIvb3JkZXI/Y2FydElkPSR7Y2FydElkfWAsIG51bGwpO1xyXG4gIH1cclxuICBnZXRVc2VySW5mbyh1c2VySWQ6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQodGhpcy5CQVNFX1VSTCArIGBlY29tbWVyY2UvdXNlci9nZXQvdXNlcj91c2VySWQ9JHt1c2VySWR9YCwgbnVsbCk7XHJcbiAgfVxyXG4gIGFkZFVzZXJBZGRyZXNzKHVzZXI6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQodGhpcy5CQVNFX1VSTCArIGBlY29tbWVyY2UvdXNlci91cGRhdGUvdXNlcmAsIHVzZXIpO1xyXG4gIH1cclxuICB1cGRhdGVQcm9maWxlKHBheWxvYWQ6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQodGhpcy5CQVNFX1VSTCArIGBlY29tbWVyY2UvdXNlci91cGRhdGUvdXNlcmAsIHBheWxvYWQpO1xyXG4gIH1cclxuICBnZXRVc2VyT3JkZXJzKHBheWxvYWQ6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQodGhpcy5CQVNFX1VSTCArIGBlY29tbWVyY2Uvb3JkZXIvdXNlci9vcmRlcmAsIHBheWxvYWQpO1xyXG4gIH1cclxuICB0b2dnbGVJdGVtQ2FydFRvRmF2KCkge1xyXG5cclxuICB9XHJcbiAgbW92ZVdpc2hsaXN0VG9DYXJ0KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5CQVNFX1VSTCArIGBlY29tbWVyY2UvdXBkYXRlL2NhcnRgKTtcclxuICB9XHJcbiAgZ2V0VXNlcldpc2hsaXN0KHVzZXJJZDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLkJBU0VfVVJMICsgYGVjb21tZXJjZS9vcmRlci9jYXJ0P3VzZXJJZD0ke3VzZXJJZH0mY2FydFR5cGU9V0lTSExJU1RgKVxyXG4gIH1cclxuICBtb3ZlSXRlbVRvQ2FydCh1c2VySWQ6IHN0cmluZywgcGF5bG9hZDogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dCh0aGlzLkJBU0VfVVJMICsgYGVjb21tZXJjZS9vcmRlci91cGRhdGUvY2FydD91c2VySWQ9JHt1c2VySWR9YCwgcGF5bG9hZCk7XHJcbiAgfVxyXG5cclxuICAvLyBQYXltZW50XHJcbiAgY3JlYXRlUGF5bWVudFRva2VuKHBheWxvYWQ6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHRoaXMuRUNPTU1FUkNFX1VSTCArIGBwYXltZW50L29yZGVyYCwgcGF5bG9hZCk7XHJcbiAgfVxyXG4gIHJlZnVuZFBheW1lbnQob3JkZXJJZDogc3RyaW5nLCBwYXlsb2FkOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdCh0aGlzLkJBU0VfVVJMICsgYGVjb21tZXJjZS9wYXltZW50L3JlZnVuZC9iYW5rP29yZGVySWQ9JHtvcmRlcklkfWAsIHBheWxvYWQpO1xyXG4gIH1cclxuICBjaGVja1BheW1lbnRTdGF0dXMocGF5bG9hZDogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QodGhpcy5FQ09NTUVSQ0VfVVJMICsgYHBheW1lbnQvc3RhdHVzYCwgcGF5bG9hZCk7XHJcbiAgfVxyXG4gIGdldFJlY2VudFZpZXdQcm9kdWN0KHVzZXJJZDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QodGhpcy5CQVNFX1VSTCArIGBlY29tbWVyY2UvdXNlci9yZWNlbnRWaWV3P3VzZXJJZD0ke3VzZXJJZH1gLCBudWxsKS5waXBlKG1hcCgocmVzcG9uc2U6IGFueSkgPT4gcmVzcG9uc2UuZGF0YT8ubWFwKChwcm9kdWN0OiBhbnkpID0+IG5ldyBQcm9kdWN0KHByb2R1Y3QpKSkpOztcclxuICB9XHJcblxyXG4gIGdldExvY2F0aW9uQnlQaW5Db2RlKHBpbmNvZGU6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoYGh0dHBzOi8vYXBpLnBvc3RhbHBpbmNvZGUuaW4vcGluY29kZS8ke3BpbmNvZGV9YCkucGlwZShtYXAoKGxvY2F0aW9uczogYW55KSA9PiB7XHJcbiAgICAgIHJldHVybiBuZXcgUGluY29kZUxvY2F0aW9uKGxvY2F0aW9ucyk7XHJcbiAgICB9KSlcclxuICB9XHJcbiAgZ2V0TG9jYXRpb25CeVBpbkNvZGVJbnRlcm5hdGlvbmFsKHBpbmNvZGU6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoYGh0dHBzOi8vYXBpLnppcHBvcG90YW0udXMvaW4vJHtwaW5jb2RlfWApO1xyXG4gIH1cclxuXHJcbiAgc2VuZFNpZ251cE9UUChwYXlsb2FkOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdCh0aGlzLkJBU0VfVVJMICsgYGVjb21tZXJjZS91c2VyL3NpZ251cC9vdHAvdHJpZ2dlcmAsIHBheWxvYWQpO1xyXG4gIH1cclxuXHJcbiAgdmVyaWZ5U2lnbnVwT1RQKHBheWxvYWQ6IGFueSkge1xyXG4gICAgY29uc3QgYnVzaW5lc3NJZDogc3RyaW5nID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJiSWRcIikgPz8gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJidXNpbmVzc0lkXCIpID8/ICcnO1xyXG4gICAgLy8gcGF5bG9hZFtcImJ1c2luZXNzSWRcIl0gPSBidXNpbmVzc0lkO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQodGhpcy5CQVNFX1VSTCArIGBlY29tbWVyY2UvdXNlci9hdXRoZW50aWNhdGUvc2lnbnVwYCwgcGF5bG9hZCk7XHJcbiAgfVxyXG5cclxuICBzaWduaW5QYXNzd29yZChwYXNzRGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dCh0aGlzLkJBU0VfVVJMICsgYGVjb21tZXJjZS91c2VyL2F1dGhlbnRpY2F0ZS9sb2dpbmAsIHBhc3NEYXRhKTtcclxuICB9XHJcblxyXG4gIGNyZWF0ZUFwcG9pbnRtZW50KGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHRoaXMuQkFTRV9VUkwgKyBgY3JtL2FwcG9pbnRtZW50L2FkZGAsIGRhdGEpXHJcbiAgfVxyXG5cclxuICBnZXRBbGxTZXJ2aWNlcyhidXNpbmVzc0lkOiBhbnksIHNpemU6IG51bWJlciwgcGFnZTogbnVtYmVyKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChcclxuICAgICAgdGhpcy5CQVNFX1VSTCArIGBjcm0vYXBwb2ludG1lbnQvY29uZmlnL3NlcnZpY2U/YnVzaW5lc3NJZD0ke2J1c2luZXNzSWR9JnNpemU9JHtzaXplfSZwYWdlPSR7cGFnZX1gXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICBnZXRBbGxMb2NhdGlvbihidXNpbmVzc0lkOiBhbnksIHNpemU6IG51bWJlciwgcGFnZTogbnVtYmVyKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChcclxuICAgICAgdGhpcy5CQVNFX1VSTCArIGBjcm0vYXBwb2ludG1lbnQvY29uZmlnL2xvY2F0aW9uP2J1c2luZXNzSWQ9JHtidXNpbmVzc0lkfSZzaXplPSR7c2l6ZX0mcGFnZT0ke3BhZ2V9YFxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgZ2V0QWxsU3RhZmYoYnVzaW5lc3NJZDogYW55LCBzaXplOiBudW1iZXIsIHBhZ2U6IG51bWJlciwgbG9jYXRpb25JZDogc3RyaW5nLCBzZXJ2aWNlSWQ6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoXHJcbiAgICAgIHRoaXMuQkFTRV9VUkwgKyBgY3JtL2FwcG9pbnRtZW50L2NvbmZpZy9sb2NhdGlvbj9idXNpbmVzc0lkPSR7YnVzaW5lc3NJZH0mc2l6ZT0ke3NpemV9JnBhZ2U9JHtwYWdlfSZsb2NhdGlvbklkPSR7bG9jYXRpb25JZH0mc2VydmljZUlkPSR7c2VydmljZUlkfWBcclxuICAgIClcclxuICB9XHJcblxyXG5cclxuICBnZXRBbGxUaW1lU2xvdHMobG9jYXRpb25JZDogYW55LCBkYXRlOiBEYXRlKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChcclxuICAgICAgdGhpcy5CQVNFX1VSTCArIGBjcm0vYXBwb2ludG1lbnQvY29uZmlnL3RpbWVzbG90cz9sb2NhdGlvbklkPSR7bG9jYXRpb25JZH0mZGF0ZT0ke2RhdGV9YFxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgZ2V0QmxvZ0J5QnVzaW5lc3NJZCgpIHtcclxuICAgIGNvbnN0IGJ1c2luZXNzSWQ6IHN0cmluZyA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiYklkXCIpID8/IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiYnVzaW5lc3NJZFwiKSA/PyBcIlwiO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoXHJcbiAgICAgIHRoaXMuQkFTRV9VUkwgKyBgYnVzaW5lc3MvYmxvZy9ieS9idXNpbmVzcz9idXNpbmVzc0lkPSR7YnVzaW5lc3NJZH1gXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICBnZXRBbGxTZXJ2aWNlKGJ1c2luZXNzSWQ6IGFueSwgc2l6ZTogYW55LCBwYWdlOiBhbnksIGxvY2F0aW9uSWQ/OiBhbnkpIHtcclxuICAgIGlmICghbG9jYXRpb25JZCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5odHRwLmdldChcclxuICAgICAgICB0aGlzLkJBU0VfVVJMICsgYGNybS9hcHBvaW50bWVudC9jb25maWcvc2VydmljZT9idXNpbmVzc0lkPSR7YnVzaW5lc3NJZH0mc2l6ZT0ke3NpemV9JnBhZ2U9JHtwYWdlfWBcclxuICAgICAgKVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoXHJcbiAgICAgICAgdGhpcy5CQVNFX1VSTCArIGBjcm0vYXBwb2ludG1lbnQvY29uZmlnL3NlcnZpY2U/YnVzaW5lc3NJZD0ke2J1c2luZXNzSWR9JnNpemU9JHtzaXplfSZwYWdlPSR7cGFnZX0mbG9jYXRpb25JZD0ke2xvY2F0aW9uSWR9YFxyXG4gICAgICApXHJcblxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0QWxsU3RhZmZCeUxvY2F0aW9uKGJ1c2luZXNzSWQ6IGFueSwgc2l6ZTogbnVtYmVyLCBwYWdlOiBudW1iZXIsIGxvY2F0aW9uSWQ6IHN0cmluZywgc2VydmljZUlkOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KFxyXG4gICAgICB0aGlzLkJBU0VfVVJMICsgYGNybS9hcHBvaW50bWVudC9jb25maWcvc3RhZmY/YnVzaW5lc3NJZD0ke2J1c2luZXNzSWR9JnNpemU9JHtzaXplfSZwYWdlPSR7cGFnZX0mbG9jYXRpb25JZD0ke2xvY2F0aW9uSWR9JnNlcnZpY2VJZD0ke3NlcnZpY2VJZH1gXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICBnZXRBdmFpbGFibGVTbG90cyhkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucHV0KFxyXG4gICAgICB0aGlzLkJBU0VfVVJMICsgYGNybS9hcHBvaW50bWVudC9jb25maWcvYXZhaWxhYmxlL3RpbWVzbG90c2AsIGRhdGFcclxuICAgIClcclxuICB9XHJcblxyXG4gIGdldFNlbGVjdGVkTGlzdEZpZWxkcyhiSWQ6IGFueSwgc2hvd0luRXJwOiBhbnksIGZvcm1OYW1lOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KFxyXG4gICAgICB0aGlzLkNNSVNfVVJMICsgYGNybS9maWVsZHM/YnVzaW5lc3NJZD0ke2JJZH0mc3RhdHVzPXRydWUmc2hvd0luRm9ybT0ke3Nob3dJbkVycH0maXNQYWdpbmF0aW9uPWZhbHNlJmZpZWxkQ2F0ZWdvcnk9JHtmb3JtTmFtZX1gXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICBjcmVhdGVSZWdpc3RyYXRpb24ocGF5bG9hZDogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIHRoaXMuQ01JU19VUkwgKyBgY3JtL3JlZ2lzdHJhdGlvbi8/ZW5xdWlyeUlkPSR7cGF5bG9hZD8uZW5xdWlyeUlkIHx8ICcnfWAsIHBheWxvYWRcclxuICAgIClcclxuICB9XHJcblxyXG4gIGNyZWF0ZUFkbWlzc2lvbihwYXlsb2FkOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgdGhpcy5DTUlTX1VSTCArIGBjcm0vcmVnaXN0cmF0aW9uL2FkbWlzc2lvbj9yZWdpc3RyYXRpb25JZD0ke3BheWxvYWQ/LnJlZ2lzdHJhdGlvbklkIHx8ICcnfWAsIHBheWxvYWRcclxuICAgIClcclxuICB9XHJcblxyXG4gIGNyZWF0ZVBheW1lbnRGb3JBZG1pc3Npb24ocGF5bG9hZDogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIHRoaXMuQ01JU19VUkwgKyBgY3JtL3JlZ2lzdHJhdGlvbi9hZG1pc3Npb24vcGF5bWVudGAsIHBheWxvYWRcclxuICAgIClcclxuICB9XHJcblxyXG4gIGNyZWF0ZVJlZ2lzdHJhdGlvbkZvclBheW1lbnQocGF5bG9hZDogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIHRoaXMuQ01JU19VUkwgKyBgY3JtL3JlZ2lzdHJhdGlvbi9yZWdpc3RyYXRpb24vcGF5bWVudGAsIHBheWxvYWRcclxuICAgIClcclxuICB9XHJcblxyXG5cclxuICBnZXRTdWJzY3JpcHRpb25Gb3JGZWVTdHJ1Y3R1cmUoZ3JhZGVJZDogYW55KSB7XHJcbiAgICBjb25zdCBidXNpbmVzc0lkID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2J1c2luZXNzSWQnKTtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChcclxuICAgICAgdGhpcy5DTUlTX1VSTCArIGBjcm0vc3Vic2NyaXB0aW9uL3BsYW4vbGlzdD9idXNpbmVzc0lkPSR7YnVzaW5lc3NJZH0mZ3JhZGVJZD0ke2dyYWRlSWR9YFxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgZ2V0RmVlU3RydWN0dXJlKHBheWxvYWQ6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQoXHJcbiAgICAgIHRoaXMuQ01JU19VUkwgKyBgY3JtL2ZlZS9zdHJ1Y3R1cmVgLCBwYXlsb2FkXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICBnZXRBbGxEb2N1bWVudChwYXlsb2FkOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucHV0KFxyXG4gICAgICB0aGlzLkNNSVNfVVJMICsgYGNybS9tYXN0ZXIvZG9jdW1lbnRUeXBlL2ZpbHRlcmAsIHBheWxvYWQpXHJcbiAgfVxyXG5cclxuICBnZXRMZWFkQnlJZChsZWFkSWQ6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoXHJcbiAgICAgIHRoaXMuQ01JU19VUkwgKyBgY3JtL2xlYWRzL2dldC1vbmU/bGVhZElkPSR7bGVhZElkfWBcclxuICAgIClcclxuICB9XHJcblxyXG4gIGdldFJlZ2lzdHJhdGlvbkxpc3QocGF5bG9hZDogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dChcclxuICAgICAgdGhpcy5DTUlTX1VSTCArIGBjcm0vcmVnaXN0cmF0aW9uL2dldEFsbGAsIHBheWxvYWRcclxuICAgIClcclxuICB9XHJcblxyXG4gIGdldEFsbENvbXBvbmVudENhdGVnb3JpZXMoKXtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KFxyXG4gICAgICB0aGlzLkJBU0VfVVJMICsgYGFkbWluL21hc3Rlci90ZW1wbGF0ZS9jYXRlZ29yeS9hbGxgXHJcbiAgICApXHJcbiAgfVxyXG4gIGdldFRlbXBsYXRlKCkge1xyXG4gICAgbGV0IHRlbXBsYXRlSWQgPSBKU09OLnBhcnNlKEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2JEZXRhaWxzJykpKSk/LnRlbXBsYXRlSWQ7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChcclxuICAgICAgdGhpcy5CQVNFX1VSTCArIGBidXNpbmVzcy92My93ZWJzaXRlLzFlZmQxZGEwLWUxN2ItNjVlYy1iMGZiLTNiNzEzYTJkMDQ4OS9wYWdlcy9saXN0YFxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgZ2V0SW1hZ2VMaWJyYXJ5KCkge1xyXG4gICAgY29uc3QgYnVzaW5lc3NJZCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdidXNpbmVzc0lkJylcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KFxyXG4gICAgICB0aGlzLkJBU0VfVVJMICsgYGFkbWluL2xpYnJhcnkvaW1hZ2UvbGlicmFyeS9saXN0L3BhZ2VkP2J1c2luZXNzSWQ9JHtidXNpbmVzc0lkfSZwYWdlTm89MCZzaXplPTEwYFxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgc2F2ZUltYWdlc1RvQnVzaW5lc3NMaWJyYXJ5KG1lZGlhUmVxdWVzdDogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIHRoaXMuQkFTRV9VUkwgKyBgYWRtaW4vbGlicmFyeS9pbWFnZS9saWJyYXJ5L3NhdmVgLFxyXG4gICAgICBtZWRpYVJlcXVlc3RcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICByZWdlbmVyYXRlVGV4dChyZXF1ZXN0OiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgdGhpcy5CQVNFX1VSTCArIGBhZG1pbi9jb250ZW50L3N1Z2dlc3QvdjIvd2Vic2l0ZS9pbmRpdmlkdWFsYCwgcmVxdWVzdFxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgZ2V0RmllbGRzVG9EaXNwbGF5KGZpZWxkc0xpc3Q6IGFueVtdKSB7XHJcbiAgICBsZXQgbWFwOiBhbnkgPSB7fTtcclxuXHJcbiAgICBmb3IgKGxldCBmaWVsZCBvZiBmaWVsZHNMaXN0KSB7XHJcbiAgICAgIGZvciAobGV0IGZpZWxkR3JvdXAgb2YgZmllbGQuZmllbGRHcm91cCkge1xyXG4gICAgICAgIGlmICghZmllbGRHcm91cC5maWVsZFN0ZXBJZClcclxuICAgICAgICAgIGNvbnRpbnVlO1xyXG5cclxuICAgICAgICBsZXQgc3RlcE5hbWUgPSBmaWVsZEdyb3VwLmZpZWxkU3RlcE5hbWUgPyBmaWVsZEdyb3VwLmZpZWxkU3RlcE5hbWUgOiAndW5kZWZpbmVkJztcclxuICAgICAgICBsZXQgZ3JvdXBOYW1lID0gZmllbGRHcm91cC5maWVsZEdyb3VwTmFtZTtcclxuXHJcbiAgICAgICAgaWYgKCFtYXBbc3RlcE5hbWVdKSB7XHJcbiAgICAgICAgICBtYXBbc3RlcE5hbWVdID0ge307XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghbWFwW3N0ZXBOYW1lXVtncm91cE5hbWVdKSB7XHJcbiAgICAgICAgICBtYXBbc3RlcE5hbWVdW2dyb3VwTmFtZV0gPSBbXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZmllbGRbJ2ZpZWxkU3RlcElkJ10gPSBmaWVsZEdyb3VwLmZpZWxkU3RlcElkO1xyXG4gICAgICAgIGZpZWxkWydmaWVsZEdyb3VwSWQnXSA9IGZpZWxkR3JvdXAuZmllbGRHcm91cElkO1xyXG5cclxuICAgICAgICBjb25zdCBuZXdGaWVsZCA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZmllbGQpKTtcclxuICAgICAgICBtYXBbc3RlcE5hbWVdW2dyb3VwTmFtZV0ucHVzaChuZXdGaWVsZCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gbWFwO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -1,4 +1,5 @@
1
1
  import { InjectionToken } from '@angular/core';
2
2
  export const API_URL = new InjectionToken('apiUrl');
3
3
  export const ECOMMERCE_URL = new InjectionToken('ecommerceURL');
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLXRva2VuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi90b2tlbnMvYXBpLXRva2VuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0MsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLElBQUksY0FBYyxDQUFTLFFBQVEsQ0FBQyxDQUFDO0FBQzVELE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxJQUFJLGNBQWMsQ0FBUyxjQUFjLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5leHBvcnQgY29uc3QgQVBJX1VSTCA9IG5ldyBJbmplY3Rpb25Ub2tlbjxzdHJpbmc+KCdhcGlVcmwnKTtcclxuZXhwb3J0IGNvbnN0IEVDT01NRVJDRV9VUkwgPSBuZXcgSW5qZWN0aW9uVG9rZW48U3RyaW5nPignZWNvbW1lcmNlVVJMJyk7XHJcbiJdfQ==
4
+ export const CMIS_URL = new InjectionToken('cmisURL');
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLXRva2VuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi90b2tlbnMvYXBpLXRva2VuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0MsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLElBQUksY0FBYyxDQUFTLFFBQVEsQ0FBQyxDQUFDO0FBQzVELE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxJQUFJLGNBQWMsQ0FBUyxjQUFjLENBQUMsQ0FBQztBQUN4RSxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsSUFBSSxjQUFjLENBQVMsU0FBUyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuZXhwb3J0IGNvbnN0IEFQSV9VUkwgPSBuZXcgSW5qZWN0aW9uVG9rZW48c3RyaW5nPignYXBpVXJsJyk7XHJcbmV4cG9ydCBjb25zdCBFQ09NTUVSQ0VfVVJMID0gbmV3IEluamVjdGlvblRva2VuPFN0cmluZz4oJ2Vjb21tZXJjZVVSTCcpO1xyXG5leHBvcnQgY29uc3QgQ01JU19VUkwgPSBuZXcgSW5qZWN0aW9uVG9rZW48U3RyaW5nPignY21pc1VSTCcpO1xyXG4iXX0=