@ksremp/ngx-ksremp-app-lib 1.0.4 → 1.0.5

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 (72) hide show
  1. package/esm2022/lib/annimations/app-animations.mjs +1 -1
  2. package/esm2022/lib/components/captcha/captcha.component.mjs +6 -6
  3. package/esm2022/lib/components/card/card.component.mjs +1 -1
  4. package/esm2022/lib/components/content/content.component.mjs +1 -1
  5. package/esm2022/lib/components/error/error.component.mjs +1 -1
  6. package/esm2022/lib/components/file-download/file-download.component.mjs +1 -1
  7. package/esm2022/lib/components/file-uploader/file-uploader.component.mjs +1 -1
  8. package/esm2022/lib/components/help/help.component.mjs +1 -1
  9. package/esm2022/lib/components/idle-detector/idle-detector.component.mjs +1 -1
  10. package/esm2022/lib/components/info/info.component.mjs +1 -1
  11. package/esm2022/lib/components/maintenance-detector/maintenance-detector.component.mjs +1 -1
  12. package/esm2022/lib/components/mask/mask.component.mjs +1 -1
  13. package/esm2022/lib/components/money-expect/money-expect.component.mjs +1 -1
  14. package/esm2022/lib/components/msg/msg.component.mjs +1 -1
  15. package/esm2022/lib/components/news/news.component.mjs +1 -1
  16. package/esm2022/lib/components/overlay-info/overlay-info.component.mjs +1 -1
  17. package/esm2022/lib/components/page/page.component.mjs +1 -1
  18. package/esm2022/lib/components/questionnaire/FbConstants.mjs +1 -1
  19. package/esm2022/lib/components/questionnaire/dynamic-form-question.component.mjs +1 -2
  20. package/esm2022/lib/components/questionnaire/question-base.mjs +1 -1
  21. package/esm2022/lib/components/questionnaire/question.service.mjs +1 -1
  22. package/esm2022/lib/components/read-more/read-more.component.mjs +6 -6
  23. package/esm2022/lib/components/select/select.component.mjs +1 -1
  24. package/esm2022/lib/components/ssn/ssn.component.mjs +1 -1
  25. package/esm2022/lib/components/test/test.component.mjs +1 -1
  26. package/esm2022/lib/directives/auto-focus/auto-focus.directive.mjs +1 -1
  27. package/esm2022/lib/directives/caps-lock.directive.mjs +1 -1
  28. package/esm2022/lib/directives/required-roles/required-roles.directive.mjs +1 -1
  29. package/esm2022/lib/enums/EmailStatusEnum.mjs +1 -1
  30. package/esm2022/lib/interceptors/error-interceptor/http-error-interceptor.mjs +1 -1
  31. package/esm2022/lib/models/ErrorModel.mjs +1 -1
  32. package/esm2022/lib/models/FileModel.mjs +1 -1
  33. package/esm2022/lib/models/NotificationModel.mjs +1 -1
  34. package/esm2022/lib/models/TrendModel.mjs +1 -1
  35. package/esm2022/lib/models/UserDetailsModel.mjs +1 -1
  36. package/esm2022/lib/models/claimant/ClaimantModel.mjs +1 -1
  37. package/esm2022/lib/models/claimant/JobResultsData.mjs +1 -1
  38. package/esm2022/lib/models/claimant/MatchingJobs.mjs +1 -1
  39. package/esm2022/lib/models/claimant/ResetPasswordModel.mjs +1 -1
  40. package/esm2022/lib/models/questionnaire/KeyValueModel.mjs +1 -1
  41. package/esm2022/lib/ngx-reusa-app-lib.component.mjs +5 -5
  42. package/esm2022/lib/ngx-reusa-app-lib.service.mjs +1 -1
  43. package/esm2022/lib/pages/common/accessibility-policy/accessibility-policy.page.mjs +1 -1
  44. package/esm2022/lib/pages/common/change-password/change-password.page.mjs +1 -1
  45. package/esm2022/lib/pages/common/landing2/landing2.component.mjs +1 -1
  46. package/esm2022/lib/pages/common/not-found/not-found.page.mjs +1 -1
  47. package/esm2022/lib/pages/common/privacy-disclaimer/privacy-disclaimer.page.mjs +1 -1
  48. package/esm2022/lib/pages/common/security-policy/security-policy.page.mjs +1 -1
  49. package/esm2022/lib/pages/common/unauthorized/unauthorized.page.mjs +1 -1
  50. package/esm2022/lib/pages/popovers/my-notifications/my-notifications.page.mjs +1 -1
  51. package/esm2022/lib/pages/popovers/my-profile/my-profile.page.mjs +1 -1
  52. package/esm2022/lib/pages/popovers/user-search/user-search.component.mjs +1 -1
  53. package/esm2022/lib/pipes/filter.pipe.mjs +1 -1
  54. package/esm2022/lib/pipes/mask/mask.email.pipe.mjs +1 -1
  55. package/esm2022/lib/pipes/proper-case/proper-case.pipe.mjs +1 -1
  56. package/esm2022/lib/pipes/trust-html/trust-html.pipe.mjs +1 -1
  57. package/esm2022/lib/services/base-service.mjs +1 -1
  58. package/esm2022/lib/services/captcha/captcha.service.mjs +1 -1
  59. package/esm2022/lib/services/chatbot/script.const.mjs +1 -1
  60. package/esm2022/lib/services/claimant/claimant.service.mjs +1 -1
  61. package/esm2022/lib/services/dms-service/dms.service.mjs +1 -1
  62. package/esm2022/lib/services/fpjs/fingerprint.service.mjs +1 -1
  63. package/esm2022/lib/services/google-analytics/google-analytics.service.mjs +1 -1
  64. package/esm2022/lib/services/idle/idle.service.mjs +1 -1
  65. package/esm2022/lib/services/maintenance/maintenance.service.mjs +1 -1
  66. package/esm2022/lib/services/notification/notification.service.mjs +1 -1
  67. package/esm2022/lib/services/tour/tour.service.mjs +1 -1
  68. package/fesm2022/ksremp-ngx-ksremp-app-lib.mjs +14 -15
  69. package/fesm2022/ksremp-ngx-ksremp-app-lib.mjs.map +1 -1
  70. package/lib/components/questionnaire/dynamic-form-question.component.d.ts +1 -1
  71. package/lib/components/questionnaire/dynamic-form-question.component.d.ts.map +1 -1
  72. package/package.json +2 -1
@@ -1424,7 +1424,6 @@ export class DynamicFormQuestionComponent {
1424
1424
  this.partEmpModel = new PartialEmploymentModel();
1425
1425
  this.isOtpModalEnabled = false;
1426
1426
  this.isReturningUser = false;
1427
- this.wcEmployerValidationMsg = 'The last day worked reported on your claim falls within this week, you must select "yes" for "Did you perform any work during the week?"';
1428
1427
  this.minDateDOB = new Date(this.toDayDate.getFullYear() - 100, this.toDayDate.getMonth(), this.toDayDate.getDate());
1429
1428
  this.maxDateDOB = new Date(this.toDayDate.getFullYear() - 10, this.toDayDate.getMonth(), this.toDayDate.getDate());
1430
1429
  }
@@ -2524,4 +2523,4 @@ export class DynamicFormQuestionComponent {
2524
2523
  args: ['pCalendar']
2525
2524
  }] }); })();
2526
2525
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(DynamicFormQuestionComponent, { className: "DynamicFormQuestionComponent", filePath: "lib\\components\\questionnaire\\dynamic-form-question.component.ts", lineNumber: 60 }); })();
2527
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1mb3JtLXF1ZXN0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZXVzYS1hcHAtbGliL3NyYy9saWIvY29tcG9uZW50cy9xdWVzdGlvbm5haXJlL2R5bmFtaWMtZm9ybS1xdWVzdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcmV1c2EtYXBwLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvcXVlc3Rpb25uYWlyZS9keW5hbWljLWZvcm0tcXVlc3Rpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBaUIsdUJBQXVCLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUF3QixTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBUWxMLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQVU3RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUl2RSxPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQ1pyRSxzQ0FBa0g7SUFBbkIsZ05BQVMsZUFBQSxnQkFBUSxDQUFBLElBQUM7SUFDL0csWUFDRjtJQUFBLGlCQUFhOzs7SUFEWCxlQUNGO0lBREUsMkRBQ0Y7Ozs7SUFFQSxzQ0FBaUg7SUFBbkIsZ05BQVMsZUFBQSxnQkFBUSxDQUFBLElBQUM7SUFDOUcsWUFDRjtJQUFBLGlCQUFhOzs7SUFEWCxlQUNGO0lBREUsNERBQ0Y7OztJQU5BLHFIQUVhLHdHQUFBOzs7SUFGYyxpREFBd0I7SUFJeEIsZUFBeUI7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QUE5QixLQUFLO1lBQ0csWUFBWTtrQkFBcEIsS0FBSztZQUNHLGdCQUFnQjtrQkFBeEIsS0FBSztZQUVJLG9CQUFvQjtrQkFBN0IsTUFBTTtZQXdDZ0IsUUFBUTtrQkFBOUIsU0FBUzttQkFBQyxVQUFVO1lBQ0ksU0FBUztrQkFBakMsWUFBWTttQkFBQyxTQUFTO1lBQ00sY0FBYztrQkFBMUMsU0FBUzttQkFBQyxnQkFBZ0I7WUFDSCxTQUFTO2tCQUFoQyxTQUFTO21CQUFDLFdBQVc7O2tGQW5EWCw0QkFBNEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgUXVlcnlMaXN0LCBSZW5kZXJlcjIsIFZpZXdDaGlsZCwgVmlld0NoaWxkcmVuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgVW50eXBlZEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgTmF2Q29udHJvbGxlciB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5pbXBvcnQgeyBFbGVtZW50c01vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3F1ZXN0aW9ubmFpcmUvRWxlbWVudHNNb2RlbCc7XHJcbmltcG9ydCB7IEtleVZhbHVlTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvcXVlc3Rpb25uYWlyZS9LZXlWYWx1ZU1vZGVsJztcclxuaW1wb3J0IHsgU2VydmljZUFjdGlvblJlc3BvbnNlTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvcXVlc3Rpb25uYWlyZS9TZXJ2aWNlQWN0aW9uUmVzcG9uc2VNb2RlbCc7XHJcbmltcG9ydCB7IFZhbGlkYXRpb25Nb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9xdWVzdGlvbm5haXJlL1ZhbGlkYXRpb25Nb2RlbCc7XHJcbmltcG9ydCB7IExvZ2dlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9sb2dnZXIvbG9nZ2VyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBWYWxpZGF0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3F1ZXN0aW9ubmFpcmUvdmFsaWRhdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVXRpbFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy91dGlsL3V0aWwuc2VydmljZSc7XHJcbmltcG9ydCB7IENob2ljZXMsIFF1ZXN0aW9uQ29udHJvbFNlcnZpY2UgfSBmcm9tICcuL3F1ZXN0aW9uLWNvbnRyb2wuc2VydmljZSc7XHJcbmltcG9ydCB7IFF1ZXN0aW9uU2VydmljZSB9IGZyb20gJy4vcXVlc3Rpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IExvYWRlck1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3F1ZXN0aW9ubmFpcmUvTG9hZGVyTW9kZWwnO1xyXG5pbXBvcnQgeyBBZGRyZXNzQ29tcG9uZW50IH0gZnJvbSAnLi4vYWRkcmVzcy9hZGRyZXNzLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEJhbmtEZXRhaWxzQ29tcG9uZW50IH0gZnJvbSAnLi4vYmFuay1kZXRhaWxzL2JhbmstZGV0YWlscy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBFbXBsb3llckRldGFpbFNlYXJjaFJlc3VsdCB9IGZyb20gJy4uLy4uL21vZGVscy9xdWVzdGlvbm5haXJlL0VtcGxveWVyRGV0YWlsU2VhcmNoUmVzdWx0JztcclxuaW1wb3J0IHsgcm93RXhwYW5zaW9uVHJpZ2dlciB9IGZyb20gJy4uLy4uL2FubmltYXRpb25zL2FwcC1hbmltYXRpb25zJztcclxuaW1wb3J0IHsgV2Vla2x5Q2VydEVtcGxveWVyR3JpZENvbXBvbmVudCB9IGZyb20gJy4uL3dlZWtseS1jZXJ0LWVtcGxveWVyLWdyaWQvd2Vla2x5LWNlcnQtZW1wbG95ZXItZ3JpZC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDbGFpbWFudFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jbGFpbWFudC1zZXJ2aWNlL2NsYWltYW50LnNlcnZpY2UnO1xyXG5pbXBvcnQge1dlZWtseUNlcnRTZXJ2aWNlVjJ9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3dlZWtseS1jZXJ0L3dlZWtseS1jZXJ0LXYyLnNlcnZpY2UnO1xyXG5pbXBvcnQge1BhcnRpYWxFbXBsb3ltZW50TW9kZWx9IGZyb20gJy4uLy4uL21vZGVscy9QYXJ0aWFsRW1wbG95bWVudE1vZGVsJztcclxuaW1wb3J0IHsgTG9naW5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbG9naW4vbG9naW4uc2VydmljZSc7XHJcblxyXG5pbnRlcmZhY2UgVmFsdWVDaGFuZ2VDb21wb25lbnRNb2RlbCB7XHJcbiAgb3JpZ2luYWxWYWx1ZUNvbnRyb2w6IHN0cmluZztcclxuICBmb3JtQ29udHJvbFRvVXBkYXRlOiBzdHJpbmc7XHJcbn1cclxuXHJcbmludGVyZmFjZSBFbXBsb3llckFkZHJlc3NVcGRhdGVNb2RlbCB7XHJcbiAgYWRkcmVzc0Zvcm1Db250cm9sTmFtZTogc3RyaW5nO1xyXG4gIGVtcGxveWVySWRGb3JtQ29udHJvbE5hbWU6IHN0cmluZztcclxufVxyXG5cclxuaW50ZXJmYWNlIE1pbk1heERhdGVNb2RlbCB7XHJcbiAgbWluRGF0ZUtleTogc3RyaW5nO1xyXG4gIG1heERhdGVLZXk6IHN0cmluZztcclxufVxyXG5cclxuaW50ZXJmYWNlIE1pbk1heFZhbHVlTW9kZWwge1xyXG4gIG1pblZhbHVlOiBzdHJpbmc7XHJcbiAgbWF4VmFsdWU6IHN0cmluZztcclxufVxyXG5cclxuaW50ZXJmYWNlIExpbmtDb21wb25lbnRNb2RlbCB7XHJcbiAgdXJpOiBzdHJpbmc7XHJcbiAgZXh0ZXJuYWxVcmw6IHN0cmluZztcclxuICB0ZXh0OiBzdHJpbmc7XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLXF1ZXN0aW9uJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZHluYW1pYy1mb3JtLXF1ZXN0aW9uLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9keW5hbWljLWZvcm0tcXVlc3Rpb24uY29tcG9uZW50LnNjc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LkRlZmF1bHQsXHJcbiAgYW5pbWF0aW9uczogW3Jvd0V4cGFuc2lvblRyaWdnZXJdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRHluYW1pY0Zvcm1RdWVzdGlvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XHJcbiAgQElucHV0KCkgcXVlc3Rpb246IEVsZW1lbnRzTW9kZWw7XHJcbiAgQElucHV0KCkgZm9ybTogVW50eXBlZEZvcm1Hcm91cDtcclxuICBASW5wdXQoKSBpbmRleE51bWJlcjogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIGZvclNjcmVlblF1ZXN0aW9ubmFpcmU6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgZHluYW1pY1BhcmFtOiBhbnk7XHJcbiAgQElucHV0KCkgcG90ZW50aWFsSXNzdWVJZDogbnVtYmVyO1xyXG5cclxuICBAT3V0cHV0KCkgb25EeW5hbWljUGFyYW1VcGRhdGU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBmaWx0ZXJSZXN1bHQ6IGFueVtdO1xyXG4gIG1pbkRhdGU6IERhdGU7XHJcbiAgbGVnYWxBY2NlcHRlZDogYm9vbGVhbiA9IG51bGw7XHJcbiAgbWF4RGF0ZTogRGF0ZTtcclxuICBpbmRleDogbnVtYmVyID0gMTtcclxuICByZXR1cm5Nb2RlbCA9IG5ldyBWYWxpZGF0aW9uTW9kZWwoKTtcclxuICBkaXNwbGF5UG9zaXRpb246IGJvb2xlYW47XHJcbiAgcG9zaXRpb246IHN0cmluZztcclxuICBwb3BVcEhlYWRlcjogc3RyaW5nO1xyXG4gIHBvcFVwVGV4dDogc3RyaW5nO1xyXG4gIHBvcFVwWWVzQWN0aW9uTGFiZWw6IHN0cmluZztcclxuICBwb3BVcE5vQWN0aW9uTGFiZWw6IHN0cmluZztcclxuICBtYXNrQ2xhc3MgPSB0cnVlO1xyXG4gIHNob3dNaW5EYXRlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgc2hvd01heERhdGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBtaW5WYWx1ZSA9IG51bGw7XHJcbiAgbWF4VmFsdWUgPSBudWxsO1xyXG4gIHRvRGF5RGF0ZSA9IG5ldyBEYXRlKCk7XHJcbiAgY3VycmVudGZsb3drZXk6IHN0cmluZztcclxuICByZWdpc3RlckNsYWltYW50RmxhZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHBob25lVmVyaWZpZWQ6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIGlzRmllbGREaXNhYmxlZDogYm9vbGVhbiA9IHRydWU7XHJcbiAgcGFydEVtcE1vZGVsID0gbmV3IFBhcnRpYWxFbXBsb3ltZW50TW9kZWwoKTtcclxuICBpc090cE1vZGFsRW5hYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBpc1JldHVybmluZ1VzZXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuICB3Y0VtcGxveWVyVmFsaWRhdGlvbk1zZzogc3RyaW5nID0gJ1RoZSBsYXN0IGRheSB3b3JrZWQgcmVwb3J0ZWQgb24geW91ciBjbGFpbSBmYWxscyB3aXRoaW4gdGhpcyB3ZWVrLCB5b3UgbXVzdCBzZWxlY3QgXCJ5ZXNcIiBmb3IgXCJEaWQgeW91IHBlcmZvcm0gYW55IHdvcmsgZHVyaW5nIHRoZSB3ZWVrP1wiJztcclxuXHJcbiAgbWluRGF0ZURPQjogRGF0ZSA9IG5ldyBEYXRlKFxyXG4gICAgdGhpcy50b0RheURhdGUuZ2V0RnVsbFllYXIoKSAtIDEwMCxcclxuICAgIHRoaXMudG9EYXlEYXRlLmdldE1vbnRoKCksXHJcbiAgICB0aGlzLnRvRGF5RGF0ZS5nZXREYXRlKClcclxuICApO1xyXG4gIG1heERhdGVET0I6IERhdGUgPSBuZXcgRGF0ZShcclxuICAgIHRoaXMudG9EYXlEYXRlLmdldEZ1bGxZZWFyKCkgLSAxMCxcclxuICAgIHRoaXMudG9EYXlEYXRlLmdldE1vbnRoKCksXHJcbiAgICB0aGlzLnRvRGF5RGF0ZS5nZXREYXRlKClcclxuICApO1xyXG5cclxuICBAVmlld0NoaWxkKCdiYW5rZHRscycpIGJhbmtkdGxzOiBCYW5rRGV0YWlsc0NvbXBvbmVudDtcclxuICBAVmlld0NoaWxkcmVuKCdhZGRyZXNzJykgYWRkcmVzc2VzOiBRdWVyeUxpc3Q8QWRkcmVzc0NvbXBvbmVudD47XHJcbiAgQFZpZXdDaGlsZCgnd2NFbXBsb3llckdyaWQnKSB3Y0VtcGxveWVyR3JpZDogV2Vla2x5Q2VydEVtcGxveWVyR3JpZENvbXBvbmVudDtcclxuICBAVmlld0NoaWxkKCdwQ2FsZW5kYXInKSBwQ2FsZW5kYXI6IEVsZW1lbnRSZWY7XHJcblxyXG4gIGxpbmtDb21wb25lbnREYXRhOiBMaW5rQ29tcG9uZW50TW9kZWw7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBxY3M6IFF1ZXN0aW9uQ29udHJvbFNlcnZpY2UsXHJcbiAgICBwdWJsaWMgc2VydmljZTogUXVlc3Rpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgICBwdWJsaWMgdmFsaWRhdGlvblNlcnZpY2U6IFZhbGlkYXRpb25TZXJ2aWNlLFxyXG4gICAgcHVibGljIHV0aWw6IFV0aWxTZXJ2aWNlLFxyXG4gICAgcHVibGljIG5hdkNvbnRyb2xsZXI6IE5hdkNvbnRyb2xsZXIsXHJcbiAgICBwcml2YXRlIGxvZ2dlcjogTG9nZ2VyU2VydmljZSxcclxuICAgIHB1YmxpYyBjbGFpbWFudFNlcnZpY2U6IENsYWltYW50U2VydmljZSxcclxuICAgIHB1YmxpYyB3ZWVrbHljZXJ0U2VydmljZTogV2Vla2x5Q2VydFNlcnZpY2VWMixcclxuICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZixcclxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcclxuICAgIHByaXZhdGUgbHM6IExvZ2luU2VydmljZVxyXG4gICkge31cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMucENhbGVuZGFyKSB7XHJcbiAgICAgIHRoaXMubW9kaWZ5Q2FsZW5kYXJBdHRyaWJ1dGVzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB2aXNpYmxlSWYoc3RyRXhwOiBzdHJpbmcsIGVsZW1lbnROYW1lOiBzdHJpbmcpIHtcclxuICAgIGlmICghc3RyRXhwKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBpc1Zpc2libGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIGlmIChzdHJFeHAuaW5jbHVkZXMoJyYmJykpIHtcclxuICAgICAgbGV0IGV4cHI6IHN0cmluZ1tdID0gc3RyRXhwLnNwbGl0KCcmJicpO1xyXG4gICAgICBpc1Zpc2libGUgPVxyXG4gICAgICAgIHRoaXMuY2FsY3VsYXRlT3BlcmFuZFZhbHVlKGV4cHJbMF0pICYmXHJcbiAgICAgICAgdGhpcy5jYWxjdWxhdGVPcGVyYW5kVmFsdWUoZXhwclsxXSk7XHJcbiAgICAgIGlmIChleHByLmxlbmd0aCA+PSAzKSB7XHJcbiAgICAgICAgaXNWaXNpYmxlID0gaXNWaXNpYmxlICYmIHRoaXMuY2FsY3VsYXRlT3BlcmFuZFZhbHVlKGV4cHJbMl0pO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChleHByLmxlbmd0aCA+PSA0KSB7XHJcbiAgICAgICAgaXNWaXNpYmxlID0gaXNWaXNpYmxlICYmIHRoaXMuY2FsY3VsYXRlT3BlcmFuZFZhbHVlKGV4cHJbM10pO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChleHByLmxlbmd0aCA9PSA1KSB7XHJcbiAgICAgICAgaXNWaXNpYmxlID0gaXNWaXNpYmxlICYmIHRoaXMuY2FsY3VsYXRlT3BlcmFuZFZhbHVlKGV4cHJbNF0pO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChleHByLmxlbmd0aCA+IDUpIHtcclxuICAgICAgICB0aHJvdyBcIkFwcFZhbGlkYXRvcnMgOiBNb3JlIHRoYW4gNSAnJiYnIGV4cHJlc3Npb25zIGFyZSBub3Qgc3VwcG9ydGVkLlwiO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoc3RyRXhwLmluY2x1ZGVzKCd8fCcpKSB7XHJcbiAgICAgIGxldCBleHByOiBzdHJpbmdbXSA9IHN0ckV4cC5zcGxpdCgnfHwnKTtcclxuICAgICAgaXNWaXNpYmxlID1cclxuICAgICAgICB0aGlzLmNhbGN1bGF0ZU9wZXJhbmRWYWx1ZShleHByWzBdKSB8fFxyXG4gICAgICAgIHRoaXMuY2FsY3VsYXRlT3BlcmFuZFZhbHVlKGV4cHJbMV0pO1xyXG4gICAgICBpZiAoZXhwci5sZW5ndGggPj0gMykge1xyXG4gICAgICAgIGlzVmlzaWJsZSA9IGlzVmlzaWJsZSB8fCB0aGlzLmNhbGN1bGF0ZU9wZXJhbmRWYWx1ZShleHByWzJdKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoZXhwci5sZW5ndGggPj0gNCkge1xyXG4gICAgICAgIGlzVmlzaWJsZSA9IGlzVmlzaWJsZSB8fCB0aGlzLmNhbGN1bGF0ZU9wZXJhbmRWYWx1ZShleHByWzNdKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoZXhwci5sZW5ndGggPT0gNSkge1xyXG4gICAgICAgIGlzVmlzaWJsZSA9IGlzVmlzaWJsZSB8fCB0aGlzLmNhbGN1bGF0ZU9wZXJhbmRWYWx1ZShleHByWzRdKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoZXhwci5sZW5ndGggPiA1KSB7XHJcbiAgICAgICAgdGhyb3cgXCJBcHBWYWxpZGF0b3JzIDogTW9yZSB0aGFuIDUgJ3x8JyBleHByZXNzaW9ucyBhcmUgbm90IHN1cHBvcnRlZC5cIjtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmIChpc1Zpc2libGUpIHtcclxuICAgICAgcmV0dXJuIGlzVmlzaWJsZTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnNldEZvcm1Db250cm9sVmFsdWUoZWxlbWVudE5hbWUsIG51bGwpO1xyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgY2FsY3VsYXRlT3BlcmFuZFZhbHVlKHN0ckV4cDogc3RyaW5nKSB7XHJcbiAgICB2YXIgc3BsaXRBcnJheTogc3RyaW5nW107XHJcbiAgICBsZXQgaXNEb2VzTm90RXF1YWw6IGJvb2xlYW47XHJcbiAgICBsZXQgaW5kZXg6IG51bWJlciA9IHN0ckV4cC5pbmRleE9mKCchPScpO1xyXG4gICAgaWYgKGluZGV4ID09PSAtMSkge1xyXG4gICAgICBzcGxpdEFycmF5ID0gc3RyRXhwLnNwbGl0KCc9PScpO1xyXG4gICAgICBpc0RvZXNOb3RFcXVhbCA9IGZhbHNlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgc3BsaXRBcnJheSA9IHN0ckV4cC5zcGxpdCgnIT0nKTtcclxuICAgICAgaXNEb2VzTm90RXF1YWwgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgbGV0IG9wZXJhbmQxOiBzdHJpbmcgPSBzcGxpdEFycmF5WzBdO1xyXG4gICAgbGV0IG9wZXJhbmQyOiBzdHJpbmcgPSBzcGxpdEFycmF5WzFdO1xyXG4gICAgb3BlcmFuZDEgPSBvcGVyYW5kMS5yZXBsYWNlKCd7JywgJycpLnJlcGxhY2UoJ30nLCAnJykudHJpbSgpOyAvL2NsYWltYW50UHJpb3JQYXkxMDIgZGlmZm1haWxhZGRyZXNzMzE1XHJcbiAgICBvcGVyYW5kMiA9IG9wZXJhbmQyLnJlcGxhY2UoJ3snLCAnJykucmVwbGFjZSgnfScsICcnKS50cmltKCk7IC8vbnVsbFxyXG4gICAgaWYgKHRoaXMuZm9ybS5jb250cm9sc1tvcGVyYW5kMV0pIHtcclxuICAgICAgdmFyIHZhbHVlT2ZDbnJ0cmxUb0NoZWNrO1xyXG5cclxuICAgICAgaWYgKFxyXG4gICAgICAgIHRoaXMuZm9ybS5jb250cm9sc1tvcGVyYW5kMV0udmFsdWUgJiZcclxuICAgICAgICB0eXBlb2YgdGhpcy5mb3JtLmNvbnRyb2xzW29wZXJhbmQxXS52YWx1ZSA9PT0gJ3N0cmluZydcclxuICAgICAgKSB7XHJcbiAgICAgICAgdmFsdWVPZkNucnRybFRvQ2hlY2sgPSB0aGlzLmZvcm0uY29udHJvbHNbb3BlcmFuZDFdLnZhbHVlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoXHJcbiAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzW29wZXJhbmQxXS52YWx1ZSAmJlxyXG4gICAgICAgIHR5cGVvZiB0aGlzLmZvcm0uY29udHJvbHNbb3BlcmFuZDFdLnZhbHVlICE9ICdzdHJpbmcnXHJcbiAgICAgICkge1xyXG4gICAgICAgIHZhbHVlT2ZDbnJ0cmxUb0NoZWNrID0gdGhpcy5mb3JtLmNvbnRyb2xzW29wZXJhbmQxXS52YWx1ZVsndmFsdWUnXTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKG9wZXJhbmQyID09PSAnbnVsbCcgJiYgaXNEb2VzTm90RXF1YWwgJiYgdmFsdWVPZkNucnRybFRvQ2hlY2spIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgICBpZiAob3BlcmFuZDIgPT09ICdudWxsJyAmJiAhaXNEb2VzTm90RXF1YWwgJiYgIXZhbHVlT2ZDbnJ0cmxUb0NoZWNrKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH1cclxuICAgICAgb3BlcmFuZDIgPSBvcGVyYW5kMi5yZXBsYWNlKFwiJ1wiLCAnJykucmVwbGFjZShcIidcIiwgJycpLnRyaW0oKTsgLy9udWxsXHJcblxyXG4gICAgICBpZiAoXHJcbiAgICAgICAgb3BlcmFuZDIgIT0gJ251bGwnICYmXHJcbiAgICAgICAgIWlzRG9lc05vdEVxdWFsICYmXHJcbiAgICAgICAgdmFsdWVPZkNucnRybFRvQ2hlY2sgPT09IG9wZXJhbmQyXHJcbiAgICAgICkge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoXHJcbiAgICAgICAgb3BlcmFuZDIgIT0gJ251bGwnICYmXHJcbiAgICAgICAgaXNEb2VzTm90RXF1YWwgJiZcclxuICAgICAgICB2YWx1ZU9mQ25ydHJsVG9DaGVjayAhPSBvcGVyYW5kMlxyXG4gICAgICApIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICAvLyAgIHRoaXMubG9nZ2VyLmRlYnVnKCdpcyBEeW5hbWljRm9ybVF1ZXN0aW9uQ29tcG9uZW50IG5nT25Jbml0IGNhbGxlZCcsIHRoaXMucXVlc3Rpb24pXHJcbiAgICB0aGlzLmdldFBhcnRpYWxFbXBsb3ltZW50SW5mbygpO1xyXG4gICAgdGhpcy5maWx0ZXJSZXN1bHQgPSB0aGlzLnF1ZXN0aW9uLmNob2ljZXM7XHJcbiAgICB0aGlzLnNldE1pbk1heERhdGUoKTtcclxuICAgIHRoaXMuc2V0TWluTWF4VmFsdWUoKTtcclxuICAgIHRoaXMuc2V0RGVmYXVsdFZhbHVlKCk7XHJcbiAgICB0aGlzLnNldExpbmtDb21wb25lbnREYXRhKCk7XHJcbiAgICBsZXQgY3VycmVudFFlcyA9IHRoaXMuc2VydmljZS5zZWFyY2hCcy5nZXRWYWx1ZSgpO1xyXG4gICAgdGhpcy5jdXJyZW50Zmxvd2tleSA9IGN1cnJlbnRRZXMuZmxvd0tleTtcclxuICAgIGlmKChsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnZGlzYWJsZUZpZWxkc09uU2lnbnVwJykgPT09ICd0cnVlJykgJiYgbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJmbG93S2V5XCIpID09ICczNDUnKXtcclxuICAgICAgdGhpcy5kaXNhYmxlRmllbGRzKCk7XHJcbiAgICB9XHJcbiAgICBpZihsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImxhbmd1YWdlXCIpID09PSBcImVzXCIpe1xyXG4gICAgICB0aGlzLndjRW1wbG95ZXJWYWxpZGF0aW9uTXNnID0gJ0VsIMO6bHRpbW8gZMOtYSB0cmFiYWphZG8gcXVlIGZpZ3VyYSBlbiBzdSBzb2xpY2l0dWQgY29ycmVzcG9uZGUgYSBlc3RhIHNlbWFuYTsgcG9yIGxvIHRhbnRvLCBkZWJlIHNlbGVjY2lvbmFyIFwic8OtXCIgZW4gbGEgcHJlZ3VudGEgXCLCv1JlYWxpesOzIGFsZ8O6biB0cmFiYWpvIGR1cmFudGUgbGEgc2VtYW5hP1wiJztcclxuICAgIH1lbHNlIHtcclxuICAgICAgdGhpcy53Y0VtcGxveWVyVmFsaWRhdGlvbk1zZyA9ICdUaGUgbGFzdCBkYXkgd29ya2VkIHJlcG9ydGVkIG9uIHlvdXIgY2xhaW0gZmFsbHMgd2l0aGluIHRoaXMgd2VlaywgeW91IG11c3Qgc2VsZWN0IFwieWVzXCIgZm9yIFwiRGlkIHlvdSBwZXJmb3JtIGFueSB3b3JrIGR1cmluZyB0aGUgd2Vlaz9cIic7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGNoZWNrRmxvd0tleSgpIHtcclxuICAgIGlmICh0aGlzLmN1cnJlbnRmbG93a2V5ID09PSAncmVnaXN0ZXItY2xhaW1hbnQnKSB7XHJcbiAgICAgIC8vY29uc29sZS5pbmZvKFwiY3VycmVudGZsb3drZXkgXCIsdGhpcy5jdXJyZW50Zmxvd2tleSlcclxuICAgICAgcmV0dXJuICh0aGlzLnJlZ2lzdGVyQ2xhaW1hbnRGbGFnID0gdHJ1ZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gdGhpcy5yZWdpc3RlckNsYWltYW50RmxhZztcclxuICAgIH1cclxuICB9XHJcbiAgLy8gcGhvbmVOdW1iZXJWZXJpZmllZCgpOiBib29sZWFue1xyXG4gIC8vICAgcmV0dXJuIHRoaXMucGhvbmVWZXJpZmllZCxcclxuICAvLyB9XHJcblxyXG4gIGRpc2FibGVGaWVsZHMoKSB7XHJcbiAgICBpZiAodGhpcy5jaGVja0Zsb3dLZXkoKSkge1xyXG4gICAgICB0aGlzLmZvcm0uZ2V0KCdwaG9uZScpLmRpc2FibGUoKTtcclxuICAgICAgdGhpcy5mb3JtLmdldCgnZW1haWwnKS5kaXNhYmxlKCk7XHJcbiAgICAgIHRoaXMuZm9ybS5nZXQoJ3VzZXJuYW1lJykuZGlzYWJsZSgpO1xyXG4gICAgICB0aGlzLmZvcm0uZ2V0KCdwYXNzd29yZCcpLmRpc2FibGUoKTtcclxuICAgICAgdGhpcy5mb3JtLmdldCgnY29uZmlybVBhc3N3b3JkJykuZGlzYWJsZSgpO1xyXG4gICAgICB0aGlzLmZvcm0uZ2V0KCdzZWNRdWVzMScpLmRpc2FibGUoKTtcclxuICAgICAgdGhpcy5mb3JtLmdldCgnc2VjQW5zMScpLmRpc2FibGUoKTtcclxuICAgICAgdGhpcy5mb3JtLmdldCgnc2VjUXVlczInKS5kaXNhYmxlKCk7XHJcbiAgICAgIHRoaXMuZm9ybS5nZXQoJ3NlY0FuczInKS5kaXNhYmxlKCk7XHJcbiAgICAgIHRoaXMuZm9ybS5nZXQoJ3NlY1F1ZXMzJykuZGlzYWJsZSgpO1xyXG4gICAgICB0aGlzLmZvcm0uZ2V0KCdzZWNBbnMzJykuZGlzYWJsZSgpO1xyXG4gICAgICB0aGlzLmZvcm0uZ2V0KCdyZXNBZHJlc3MnKS5kaXNhYmxlKCk7XHJcbiAgICAgIHRoaXMuZm9ybS5nZXQoJ2RpZmZtYWlsYWRkcmVzcycpLmRpc2FibGUoKTtcclxuICAgICAgLy90aGlzLmZvcm0uZ2V0KCdtYWlsYWRkcmVzcycpLmRpc2FibGUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGVuYWJsZUZpZWxkcygpIHtcclxuICAgIHRoaXMuZm9ybS5nZXQoJ2VtYWlsJykuZW5hYmxlKCk7XHJcbiAgICB0aGlzLmZvcm0uZ2V0KCd1c2VybmFtZScpLmVuYWJsZSgpO1xyXG4gICAgdGhpcy5mb3JtLmdldCgncGFzc3dvcmQnKS5lbmFibGUoKTtcclxuICAgIHRoaXMuZm9ybS5nZXQoJ2NvbmZpcm1QYXNzd29yZCcpLmVuYWJsZSgpO1xyXG4gICAgdGhpcy5mb3JtLmdldCgnc2VjUXVlczEnKS5lbmFibGUoKTtcclxuICAgIHRoaXMuZm9ybS5nZXQoJ3NlY0FuczEnKS5lbmFibGUoKTtcclxuICAgIHRoaXMuZm9ybS5nZXQoJ3NlY1F1ZXMyJykuZW5hYmxlKCk7XHJcbiAgICB0aGlzLmZvcm0uZ2V0KCdzZWNBbnMyJykuZW5hYmxlKCk7XHJcbiAgICB0aGlzLmZvcm0uZ2V0KCdzZWNRdWVzMycpLmVuYWJsZSgpO1xyXG4gICAgdGhpcy5mb3JtLmdldCgnc2VjQW5zMycpLmVuYWJsZSgpO1xyXG4gICAgdGhpcy5mb3JtLmdldCgncmVzQWRyZXNzJykuZW5hYmxlKCk7XHJcbiAgICB0aGlzLmZvcm0uZ2V0KCdkaWZmbWFpbGFkZHJlc3MnKS5lbmFibGUoKTtcclxuICAgIC8vdGhpcy5mb3JtLmdldCgnbWFpbGFkZHJlc3MnKS5lbmFibGUoKTtcclxuICB9XHJcblxyXG4gIGNoZWNrSWZVc2VyRXhpc3QoKSB7XHJcbiAgICAvLyBjb25zb2xlLmluZm8oXCJkb2IgXCIsIHRoaXMuZm9ybS5nZXQoXCJkb2JcIikudmFsdWUpO1xyXG4gICAgaWYgKFxyXG4gICAgICAhdGhpcy5mb3JtLmdldCgnc3NuJykudmFsdWUgJiZcclxuICAgICAgIXRoaXMuZm9ybS5nZXQoJ2RvYicpLnZhbHVlICYmXHJcbiAgICAgICF0aGlzLmNoZWNrRmxvd0tleSgpXHJcbiAgICApIHtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGxldCBzc25mcm9tdXNlciA9IHRoaXMuZm9ybS5nZXQoJ3NzbicpLnZhbHVlO1xyXG4gICAgICBsZXQgZGF0ZU9mYmlydGggPSB0aGlzLmZvcm0uZ2V0KCdkb2InKS52YWx1ZTtcclxuICAgICAgLy9jb25zb2xlLmluZm8oXCJ0ZXN0IHdpdGggc3NuZnJvbXVzZXIgXCIsIHNzbmZyb211c2VyKTtcclxuICAgICAgbGV0IGZvcm1hdGVkRCA9IGRhdGVPZmJpcnRoLnJlcGxhY2UoL1xcLy9nLFwiLVwiKTtcclxuICAgICAgaWYoZGF0ZU9mYmlydGggIT0gbnVsbCAmJiBzc25mcm9tdXNlciAhPSBudWxsKXtcclxuICAgICAgICB0aGlzLmNsYWltYW50U2VydmljZS5jaGVja0lmVXNlckFscmVhZHlFeGlzdChzc25mcm9tdXNlcixmb3JtYXRlZEQpLnN1YnNjcmliZShcclxuICAgICAgICAgICh4KSA9PiB7XHJcbiAgICAgICAgICAgIGlmKHghPW51bGwpe1xyXG4gICAgICAgICAgICAgIHRoaXMuZGlzYWJsZUZpZWxkcygpO1xyXG4gICAgICAgICAgICAgIHRoaXMuZm9ybS5nZXQoJ3Bob25lJykuc2V0VmFsdWUoeC50b1N0cmluZygpKTtcclxuICAgICAgICAgICAgICBpZiAod2luZG93W1wiZW52XCJdW1wiZW52aXJvbm1lbnRcIl0gPT09IFwia3Nwcm9kXCIpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5nZXQoJ3Bob25lJykuZGlzYWJsZSgpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAvKipEZWxldGUgdGhlIGVsc2UgYmxvY2sgYWZ0ZXIgdGhlIHdvcmtzaGFyZSB0ZXN0aW5nIGlzIGRvbmUgKi9cclxuICAgICAgICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtLmdldCgncGhvbmUnKS5kaXNhYmxlKCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMuZGlzYWJsZUZpZWxkcygpO1xyXG4gICAgICAgICAgICAgIHRoaXMuZm9ybS5nZXQoJ3Bob25lJykuZW5hYmxlKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICAoZXJyKSA9PiB7IFxyXG4gICAgICAgICAgICBpZihlcnIuZXJyb3JDb2RlPT09XCI0MDRcIil7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgIHRoaXMudXRpbC5oaWRlTG9hZGVyKCk7XHJcbiAgICAgICAgICAgIHRoaXMudXRpbC5lcnJvckhhbmRsZXIoZXJyKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgICBcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldFBhcnRpYWxFbXBsb3ltZW50SW5mbygpIHtcclxuICAgIGlmICh0aGlzLnF1ZXN0aW9uLm5hbWUgPT09ICd3b3JrUGVyZm9ybWVkJykge1xyXG4gICAgICB0aGlzLndlZWtseWNlcnRTZXJ2aWNlXHJcbiAgICAgICAgLmdldFBhcnRpYWxFbXBsb3ltZW50KClcclxuICAgICAgICAuc3Vic2NyaWJlKChyZXM6IFBhcnRpYWxFbXBsb3ltZW50TW9kZWwpID0+IHtcclxuICAgICAgICAgIGlmIChyZXMucGFydGlhbEVtcGxveW1lbnRGbGFnID09PSAnMScpIHtcclxuICAgICAgICAgICAgdGhpcy5mb3JtLnZhbHVlW3RoaXMucXVlc3Rpb24ubmFtZV0gPSAnWSc7XHJcbiAgICAgICAgICAgIHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLnF1ZXN0aW9uLm5hbWVdLmFkZFZhbGlkYXRvcnMoXHJcbiAgICAgICAgICAgICAgKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRyb2wudmFsdWUgIT09ICdZJyA/IHsgd2NFbXBsb3llclZhbGlkYXRpb246IHRydWUgfSA6IG51bGw7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0TGlua0NvbXBvbmVudERhdGEoKSB7XHJcbiAgICBpZiAodGhpcy5xdWVzdGlvbi5jb21wb25lbnROYW1lID09ICdhcHAtbGluaycpIHtcclxuICAgICAgdGhpcy5saW5rQ29tcG9uZW50RGF0YSA9IHRoaXMucXVlc3Rpb24uY29tcG9uZW50RGF0YVxyXG4gICAgICAgID8gSlNPTi5wYXJzZSh0aGlzLnF1ZXN0aW9uLmNvbXBvbmVudERhdGEpXHJcbiAgICAgICAgOiBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2hvd0xhYmVsRm9yQ3VzdG9tQ29tcG9uZW50KCkge1xyXG4gICAgbGV0IHBhcnNlZERhdGEgPSB0aGlzLnF1ZXN0aW9uLmNvbXBvbmVudERhdGFcclxuICAgICAgPyBKU09OLnBhcnNlKHRoaXMucXVlc3Rpb24uY29tcG9uZW50RGF0YSlcclxuICAgICAgOiBudWxsO1xyXG4gICAgcmV0dXJuIHBhcnNlZERhdGE/LnNob3dMYWJlbCA9PSAnWSc7XHJcbiAgfVxyXG5cclxuICBzZXRNaW5NYXhWYWx1ZSgpIHtcclxuICAgIGlmIChcclxuICAgICAgdGhpcy5xdWVzdGlvbi50eXBlID09PSAnbnVtYmVyJyB8fFxyXG4gICAgICB0aGlzLnF1ZXN0aW9uLnR5cGUgPT09ICdkZWNpbWFsJyB8fFxyXG4gICAgICB0aGlzLnF1ZXN0aW9uLnR5cGUgPT09ICdjdXJyZW5jeSdcclxuICAgICkge1xyXG4gICAgICBsZXQgbWluTWF4TW9kZWw6IE1pbk1heFZhbHVlTW9kZWwgPSB0aGlzLnF1ZXN0aW9uLmNvbXBvbmVudERhdGFcclxuICAgICAgICA/IEpTT04ucGFyc2UodGhpcy5xdWVzdGlvbi5jb21wb25lbnREYXRhKVxyXG4gICAgICAgIDogbnVsbDtcclxuICAgICAgaWYgKG1pbk1heE1vZGVsKSB7XHJcbiAgICAgICAgaWYgKG1pbk1heE1vZGVsLm1pblZhbHVlKSB7XHJcbiAgICAgICAgICB0aGlzLm1pblZhbHVlID0gbWluTWF4TW9kZWwubWluVmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChtaW5NYXhNb2RlbC5tYXhWYWx1ZSkge1xyXG4gICAgICAgICAgdGhpcy5tYXhWYWx1ZSA9IG1pbk1heE1vZGVsLm1heFZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0TWluTWF4RGF0ZSgpIHtcclxuICAgIGlmICh0aGlzLnF1ZXN0aW9uLmlucHV0VHlwZSA9PT0gJ2RhdGUnKSB7XHJcbiAgICAgIGxldCBtaW5NYXhNb2RlbDogTWluTWF4RGF0ZU1vZGVsID0gdGhpcy5xdWVzdGlvbi5jb21wb25lbnREYXRhXHJcbiAgICAgICAgPyBKU09OLnBhcnNlKHRoaXMucXVlc3Rpb24uY29tcG9uZW50RGF0YSlcclxuICAgICAgICA6IG51bGw7XHJcbiAgICAgIGlmIChtaW5NYXhNb2RlbCAmJiAobWluTWF4TW9kZWwubWF4RGF0ZUtleSB8fCBtaW5NYXhNb2RlbC5taW5EYXRlS2V5KSkge1xyXG4gICAgICAgIGlmICh0aGlzLmR5bmFtaWNQYXJhbVttaW5NYXhNb2RlbC5taW5EYXRlS2V5XSkge1xyXG4gICAgICAgICAgdGhpcy5wYXJzZURhdGUodGhpcy5keW5hbWljUGFyYW1bbWluTWF4TW9kZWwubWluRGF0ZUtleV0sICdtaW4nKTtcclxuICAgICAgICAgIHRoaXMuc2hvd01pbkRhdGUgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5keW5hbWljUGFyYW1bbWluTWF4TW9kZWwubWF4RGF0ZUtleV0pIHtcclxuICAgICAgICAgIHRoaXMucGFyc2VEYXRlKHRoaXMuZHluYW1pY1BhcmFtW21pbk1heE1vZGVsLm1heERhdGVLZXldLCAnbWF4Jyk7XHJcbiAgICAgICAgICB0aGlzLnNob3dNYXhEYXRlID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKHRoaXMucXVlc3Rpb24ubWluKSB7XHJcbiAgICAgICAgICB0aGlzLnBhcnNlRGF0ZSh0aGlzLnF1ZXN0aW9uLm1pbiwgJ21pbicpO1xyXG4gICAgICAgICAgdGhpcy5zaG93TWluRGF0ZSA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLnF1ZXN0aW9uLm1heCkge1xyXG4gICAgICAgICAgdGhpcy5wYXJzZURhdGUodGhpcy5xdWVzdGlvbi5tYXgsICdtYXgnKTtcclxuICAgICAgICAgIHRoaXMuc2hvd01heERhdGUgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICBwYXJzZURhdGUoc3RyRGF0ZTogc3RyaW5nLCB0eXBlOiBzdHJpbmcpOiBEYXRlIHtcclxuICAgIGlmIChzdHJEYXRlICYmIHR5cGUgPT09ICdtYXgnKSB7XHJcbiAgICAgIHZhciBzcGxpdEFycmF5ID0gc3RyRGF0ZS5zcGxpdCgnLScpO1xyXG4gICAgICB0aGlzLm1heERhdGUgPSBuZXcgRGF0ZSgpO1xyXG4gICAgICB0aGlzLm1heERhdGUuc2V0TW9udGgoTnVtYmVyKHNwbGl0QXJyYXlbMF0pIC0gMSk7XHJcbiAgICAgIHRoaXMubWF4RGF0ZS5zZXRGdWxsWWVhcihOdW1iZXIoc3BsaXRBcnJheVsyXSkpO1xyXG4gICAgICB0aGlzLm1heERhdGUuc2V0RGF0ZShOdW1iZXIoc3BsaXRBcnJheVsxXSkpO1xyXG4gICAgICByZXR1cm4gdGhpcy5tYXhEYXRlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChzdHJEYXRlICYmIHR5cGUgPT09ICdtaW4nKSB7XHJcbiAgICAgIHZhciBzcGxpdEFycmF5ID0gc3RyRGF0ZS5zcGxpdCgnLScpO1xyXG4gICAgICB0aGlzLm1pbkRhdGUgPSBuZXcgRGF0ZSgpO1xyXG4gICAgICB0aGlzLm1pbkRhdGUuc2V0TW9udGgoTnVtYmVyKHNwbGl0QXJyYXlbMF0pIC0gMSk7XHJcbiAgICAgIHRoaXMubWluRGF0ZS5zZXRGdWxsWWVhcihOdW1iZXIoc3BsaXRBcnJheVsyXSkpO1xyXG4gICAgICB0aGlzLm1pbkRhdGUuc2V0RGF0ZShOdW1iZXIoc3BsaXRBcnJheVsxXSkpO1xyXG4gICAgICByZXR1cm4gdGhpcy5taW5EYXRlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0U3R5bGUoaW5kZW50OiBudW1iZXIpOiBvYmplY3Qge1xyXG4gICAgbGV0IHBhZGRpbmcgPSBpbmRlbnQgPD0gMSA/ICcwIHB4JyA6IGluZGVudCAqIDEwICsgJ3B4JztcclxuXHJcbiAgICBsZXQgc3R5bGVPYmogPSB7XHJcbiAgICAgICdwYWRkaW5nLWxlZnQnOiBwYWRkaW5nLFxyXG4gICAgfTtcclxuXHJcbiAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihzdHlsZU9iaik7XHJcbiAgfVxyXG5cclxuICBzZXRNYXJnaW4obWFyZ2luOiBudW1iZXIpOiBvYmplY3Qge1xyXG4gICAgbGV0IG1hciA9IG1hcmdpbiArICdweCc7XHJcbiAgICBsZXQgc3R5bGVPYmogPSB7XHJcbiAgICAgICdtYXJnaW4tcmlnaHQnOiBtYXIsXHJcbiAgICB9O1xyXG5cclxuICAgIHJldHVybiBPYmplY3QuYXNzaWduKHN0eWxlT2JqKTtcclxuICB9XHJcblxyXG4gIGdldCBpc1ZhbGlkKCkge1xyXG4gICAgbGV0IG1lc3NhZ2U6IHN0cmluZyA9ICcnO1xyXG4gICAgbGV0IHF1ZXN0aW9uVHlwZTogc3RyaW5nID0gdGhpcy5xdWVzdGlvbi50eXBlO1xyXG4gICAgaWYgKFxyXG4gICAgICAnaHRtbCcgPT09IHF1ZXN0aW9uVHlwZSB8fFxyXG4gICAgICAnbGFiZWwnID09PSBxdWVzdGlvblR5cGUgfHxcclxuICAgICAgJ3NpbXBsZUxhYmVsJyA9PT0gcXVlc3Rpb25UeXBlIHx8XHJcbiAgICAgICdkaXNwbGF5dGV4dGFzbGFiZWwnID09PSBxdWVzdGlvblR5cGUgfHxcclxuICAgICAgKCdidXR0b24nID09PSBxdWVzdGlvblR5cGUgJiZcclxuICAgICAgICAhdGhpcy5xdWVzdGlvbi52YWxpZGF0b3JzICYmXHJcbiAgICAgICAgdGhpcy5xdWVzdGlvbi5jb21wb25lbnROYW1lICE9ICdhcHAtc2lnbi1zc24nICYmXHJcbiAgICAgICAgdGhpcy5xdWVzdGlvbi5jb21wb25lbnROYW1lICE9ICdhcHAtbGluaycpIHx8XHJcbiAgICAgICdsYWJlbC13aXRoLW92ZXJsYXknID09PSBxdWVzdGlvblR5cGVcclxuICAgICkge1xyXG4gICAgICByZXR1cm4gJyc7XHJcbiAgICB9XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMucXVlc3Rpb24gJiZcclxuICAgICAgdGhpcy5xdWVzdGlvbi5uYW1lICYmXHJcbiAgICAgIHRoaXMuZm9ybSAmJlxyXG4gICAgICB0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5uYW1lXS5lcnJvcnM/LnJlcXVpcmVkICYmXHJcbiAgICAgICh0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5uYW1lXS5kaXJ0eSB8fFxyXG4gICAgICAgIHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLnF1ZXN0aW9uLm5hbWVdLnRvdWNoZWQpXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMucXVlc3Rpb24ubmFtZV0ubWFya0FzRGlydHkoKTtcclxuICAgICAgcmV0dXJuIHRoaXMucXVlc3Rpb24ucmVxdWlyZWRFcnJvclRleHQ7XHJcbiAgICB9XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMucXVlc3Rpb24gJiZcclxuICAgICAgdGhpcy5xdWVzdGlvbi5uYW1lICYmXHJcbiAgICAgIHRoaXMuZm9ybSAmJlxyXG4gICAgICB0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5uYW1lXS5lcnJvcnM/Lm1heGxlbmd0aCAmJlxyXG4gICAgICAodGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMucXVlc3Rpb24ubmFtZV0uZGlydHkgfHxcclxuICAgICAgICB0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5uYW1lXS50b3VjaGVkKVxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdlcnJvcnM/Lm1heExlbmd0aCcsIHRoaXMucXVlc3Rpb24pO1xyXG4gICAgICB0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5uYW1lXS5tYXJrQXNEaXJ0eSgpO1xyXG4gICAgICBpZiAodGhpcy5xdWVzdGlvbi5kZXNjcmlwdGlvbikge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnF1ZXN0aW9uLmRlc2NyaXB0aW9uO1xyXG4gICAgICB9XHJcbiAgICAgIGxldCB2YWxpZGF0b3JMaXN0ID0gdGhpcy5xdWVzdGlvbi52YWxpZGF0b3JzO1xyXG4gICAgICB2YXIga2VlcEdvaW5nID0gdHJ1ZTtcclxuICAgICAgdmFsaWRhdG9yTGlzdC5mb3JFYWNoKCh2YWxpZGF0b3IpID0+IHtcclxuICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygndmFsaWRhdG9yLnR5cGUgJywgdmFsaWRhdG9yLnR5cGUpO1xyXG4gICAgICAgIGlmIChrZWVwR29pbmcpIHtcclxuICAgICAgICAgIGlmICh2YWxpZGF0b3IudHlwZSA9PT0gJ3RleHQnICYmIHZhbGlkYXRvci5tYXhMZW5ndGgpIHtcclxuICAgICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoJ3ZhbGlkYXRvci50ZXh0ICcsIHZhbGlkYXRvci50ZXh0KTtcclxuICAgICAgICAgICAgbWVzc2FnZSA9IHZhbGlkYXRvci50ZXh0O1xyXG4gICAgICAgICAgICBrZWVwR29pbmcgPSBmYWxzZTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIG1lc3NhZ2UgPSAnJztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm4gbWVzc2FnZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMucXVlc3Rpb24gJiZcclxuICAgICAgdGhpcy5xdWVzdGlvbi5uYW1lICYmXHJcbiAgICAgIHRoaXMuZm9ybSAmJlxyXG4gICAgICB0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5uYW1lXS5lcnJvcnM/LnBhdHRlcm4gJiZcclxuICAgICAgKHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLnF1ZXN0aW9uLm5hbWVdLmRpcnR5IHx8XHJcbiAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMucXVlc3Rpb24ubmFtZV0udG91Y2hlZClcclxuICAgICkge1xyXG4gICAgICAvLyB0aGlzLmxvZ2dlci5kZWJ1ZygnZXJyb3JzPy5wYXR0ZXJuJyx0aGlzLnF1ZXN0aW9uKVxyXG4gICAgICBsZXQgdmFsaWRhdG9yTGlzdCA9IHRoaXMucXVlc3Rpb24udmFsaWRhdG9ycztcclxuICAgICAgdmFyIGtlZXBHb2luZyA9IHRydWU7XHJcblxyXG4gICAgICB2YWxpZGF0b3JMaXN0LmZvckVhY2goKHZhbGlkYXRvcikgPT4ge1xyXG4gICAgICAgIC8vIHRoaXMubG9nZ2VyLmRlYnVnKCd2YWxpZGF0b3IudHlwZSAnLCB2YWxpZGF0b3IudHlwZSlcclxuICAgICAgICBpZiAoa2VlcEdvaW5nKSB7XHJcbiAgICAgICAgICBpZiAodmFsaWRhdG9yLnR5cGUgPT09ICdyZWdleCcpIHtcclxuICAgICAgICAgICAgLy8gdGhpcy5sb2dnZXIuZGVidWcoJ3ZhbGlkYXRvci50ZXh0ICcsIHZhbGlkYXRvci50ZXh0KVxyXG4gICAgICAgICAgICBtZXNzYWdlID0gdmFsaWRhdG9yLnRleHQ7XHJcbiAgICAgICAgICAgIHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLnF1ZXN0aW9uLm5hbWVdLm1hcmtBc0RpcnR5KCk7XHJcbiAgICAgICAgICAgIGtlZXBHb2luZyA9IGZhbHNlO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgbWVzc2FnZSA9ICcnO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybiBtZXNzYWdlO1xyXG4gICAgfVxyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLnF1ZXN0aW9uICYmXHJcbiAgICAgIHRoaXMucXVlc3Rpb24ubmFtZSAmJlxyXG4gICAgICB0aGlzLmZvcm0gJiZcclxuICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMucXVlc3Rpb24ubmFtZV0uZXJyb3JzPy5kYXRlQ29tcGFyaXNpb24gJiZcclxuICAgICAgKHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLnF1ZXN0aW9uLm5hbWVdLmRpcnR5IHx8XHJcbiAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMucXVlc3Rpb24ubmFtZV0udG91Y2hlZClcclxuICAgICkge1xyXG4gICAgICBsZXQgdmFsaWRhdG9yTGlzdCA9IHRoaXMucXVlc3Rpb24udmFsaWRhdG9ycztcclxuICAgICAgdmFyIGtlZXBHb2luZyA9IHRydWU7XHJcbiAgICAgIGxldCBtZXNzYWdlOiBzdHJpbmcgPSAnJztcclxuICAgICAgdmFsaWRhdG9yTGlzdC5mb3JFYWNoKCh2YWxpZGF0b3IpID0+IHtcclxuICAgICAgICBpZiAoa2VlcEdvaW5nKSB7XHJcbiAgICAgICAgICAvLyAgIHRoaXMubG9nZ2VyLmRlYnVnKCd2YWxpZGF0b3IudHlwZS5taW5sZW5ndGggJywgdmFsaWRhdG9yLnR5cGUpXHJcbiAgICAgICAgICBpZiAodmFsaWRhdG9yLnR5cGUgPT09ICdleHByZXNzaW9uJykge1xyXG4gICAgICAgICAgICAvLyAgdGhpcy5sb2dnZXIuZGVidWcoJ3ZhbGlkYXRvci50ZXh0ICcsIHZhbGlkYXRvci50ZXh0KVxyXG4gICAgICAgICAgICBtZXNzYWdlID0gdmFsaWRhdG9yLnRleHQ7XHJcbiAgICAgICAgICAgIGtlZXBHb2luZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5uYW1lXS5tYXJrQXNEaXJ0eSgpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgbWVzc2FnZSA9ICcnO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybiBtZXNzYWdlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChcclxuICAgICAgdGhpcy5xdWVzdGlvbiAmJlxyXG4gICAgICB0aGlzLnF1ZXN0aW9uLm5hbWUgJiZcclxuICAgICAgdGhpcy5mb3JtICYmXHJcbiAgICAgIHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLnF1ZXN0aW9uLm5hbWVdLmVycm9ycz8ubWlubGVuZ3RoICYmXHJcbiAgICAgICh0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5uYW1lXS5kaXJ0eSB8fFxyXG4gICAgICAgIHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLnF1ZXN0aW9uLm5hbWVdLnRvdWNoZWQpXHJcbiAgICApIHtcclxuICAgICAgbGV0IHZhbGlkYXRvckxpc3QgPSB0aGlzLnF1ZXN0aW9uLnZhbGlkYXRvcnM7XHJcbiAgICAgIHZhciBrZWVwR29pbmcgPSB0cnVlO1xyXG4gICAgICBsZXQgbWVzc2FnZTogc3RyaW5nID0gJyc7XHJcbiAgICAgIHZhbGlkYXRvckxpc3QuZm9yRWFjaCgodmFsaWRhdG9yKSA9PiB7XHJcbiAgICAgICAgaWYgKGtlZXBHb2luZykge1xyXG4gICAgICAgICAgLy9jb25zb2xlLmxvZygndmFsaWRhdG9yLnR5cGUubWlubGVuZ3RoICcsIHZhbGlkYXRvci50eXBlKVxyXG4gICAgICAgICAgaWYgKHZhbGlkYXRvci50eXBlID09PSAndGV4dCcpIHtcclxuICAgICAgICAgICAgLy9jb25zb2xlLmxvZygndmFsaWRhdG9yLnRleHQgJywgdmFsaWRhdG9yLnRleHQpXHJcbiAgICAgICAgICAgIG1lc3NhZ2UgPSB2YWxpZGF0b3IudGV4dDtcclxuICAgICAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMucXVlc3Rpb24ubmFtZV0ubWFya0FzRGlydHkoKTtcclxuICAgICAgICAgICAga2VlcEdvaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBtZXNzYWdlID0gJyc7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgcmV0dXJuIG1lc3NhZ2U7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLnF1ZXN0aW9uICYmXHJcbiAgICAgIHRoaXMucXVlc3Rpb24ubmFtZSAmJlxyXG4gICAgICB0aGlzLmZvcm0gJiZcclxuICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMucXVlc3Rpb24ubmFtZV0uZXJyb3JzPy5wYXNzd29yZENvbXBhcmlzaW9uICYmXHJcbiAgICAgICh0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5uYW1lXS5kaXJ0eSB8fFxyXG4gICAgICAgIHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLnF1ZXN0aW9uLm5hbWVdLnRvdWNoZWQpXHJcbiAgICApIHtcclxuICAgICAgbGV0IHZhbGlkYXRvckxpc3QgPSB0aGlzLnF1ZXN0aW9uLnZhbGlkYXRvcnM7XHJcbiAgICAgIHZhciBrZWVwR29pbmcgPSB0cnVlO1xyXG4gICAgICBsZXQgbWVzc2FnZTogc3RyaW5nID0gJyc7XHJcbiAgICAgIHZhbGlkYXRvckxpc3QuZm9yRWFjaCgodmFsaWRhdG9yKSA9PiB7XHJcbiAgICAgICAgaWYgKGtlZXBHb2luZykge1xyXG4gICAgICAgICAgLy8gICBjb25zb2xlLmxvZygndmFsaWRhdG9yLnR5cGUubWlubGVuZ3RoICcsIHZhbGlkYXRvci50eXBlKVxyXG4gICAgICAgICAgaWYgKHZhbGlkYXRvci50eXBlID09PSAnZXhwcmVzc2lvbicpIHtcclxuICAgICAgICAgICAgLy8gIGNvbnNvbGUubG9nKCd2YWxpZGF0b3IudGV4dCAnLCB2YWxpZGF0b3IudGV4dClcclxuICAgICAgICAgICAgbWVzc2FnZSA9IHZhbGlkYXRvci50ZXh0O1xyXG4gICAgICAgICAgICB0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5uYW1lXS5tYXJrQXNEaXJ0eSgpO1xyXG4gICAgICAgICAgICBrZWVwR29pbmcgPSBmYWxzZTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIG1lc3NhZ2UgPSAnJztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm4gbWVzc2FnZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMucXVlc3Rpb24gJiZcclxuICAgICAgdGhpcy5xdWVzdGlvbi5uYW1lICYmXHJcbiAgICAgIHRoaXMuZm9ybSAmJlxyXG4gICAgICB0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5uYW1lXS5lcnJvcnM/LnJlcXVpcmVkSWYgJiZcclxuICAgICAgKHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLnF1ZXN0aW9uLm5hbWVdLmRpcnR5IHx8XHJcbiAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMucXVlc3Rpb24ubmFtZV0udG91Y2hlZClcclxuICAgICkge1xyXG4gICAgICB0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5uYW1lXS5tYXJrQXNEaXJ0eSgpO1xyXG4gICAgICByZXR1cm4gdGhpcy5nZXRSZXF1aXJlZFZhbGlkYXRpb25NZXNzYWdlKCk7ICAgICAgXHJcbiAgICB9XHJcblxyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLnF1ZXN0aW9uICYmXHJcbiAgICAgIHRoaXMucXVlc3Rpb24ubmFtZSAmJlxyXG4gICAgICB0aGlzLmZvcm0gJiZcclxuICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMucXVlc3Rpb24ubmFtZV0uZXJyb3JzPy5icEVtcGxyRmxhZyAmJlxyXG4gICAgICB0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5uYW1lXS5kaXJ0eSAmJlxyXG4gICAgICB0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5uYW1lXS50b3VjaGVkXHJcbiAgICApIHtcclxuICAgICAgdmFyIGtlZXBHb2luZyA9IHRydWU7XHJcbiAgICAgIGxldCBtZXNzYWdlOiBzdHJpbmc7XHJcbiAgICAgIGlmKGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwibGFuZ3VhZ2VcIikgPT09IFwiZXNcIil7XHJcbiAgICAgICAgbWVzc2FnZSA9ICdDb25maXJtYXIgbyBlbGltaW5hciBjYWRhIGVtcGxlYWRvcihlcykgcGFyYSBjb250aW51YXInO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIG1lc3NhZ2UgPSAnQ29uZmlybSBvciBEZWxldGUgZWFjaCBlbXBsb3llcihzKSB0byBjb250aW51ZSc7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMucXVlc3Rpb24ubmFtZV0ubWFya0FzRGlydHkoKTtcclxuICAgICAgcmV0dXJuIG1lc3NhZ2U7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLnF1ZXN0aW9uICYmXHJcbiAgICAgIHRoaXMucXVlc3Rpb24ubmFtZSAmJlxyXG4gICAgICB0aGlzLmZvcm0gJiZcclxuICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMucXVlc3Rpb24ubmFtZV0uZXJyb3JzXHJcbiAgICAgICAgPy5zaW1wbGVDaGVja0JveFZhbGlkYXRpb25GbGFnICYmXHJcbiAgICAgICh0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5uYW1lXS5kaXJ0eSB8fFxyXG4gICAgICAgIHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLnF1ZXN0aW9uLm5hbWVdLnRvdWNoZWQpXHJcbiAgICApIHtcclxuICAgICAgdmFyIGtlZXBHb2luZyA9IHRydWU7XHJcbiAgICAgIHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLnF1ZXN0aW9uLm5hbWVdLm1hcmtBc0RpcnR5KCk7XHJcbiAgICAgIHJldHVybiB0aGlzLmdldFJlcXVpcmVkVmFsaWRhdGlvbk1lc3NhZ2UoKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMucXVlc3Rpb24gJiZcclxuICAgICAgdGhpcy5xdWVzdGlvbi5uYW1lICYmXHJcbiAgICAgIHRoaXMuZm9ybSAmJlxyXG4gICAgICB0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5uYW1lXS5lcnJvcnM/LmNwYXRjaHZhbGlkYXRpb25GbGFnICYmXHJcbiAgICAgICh0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5uYW1lXS5kaXJ0eSB8fFxyXG4gICAgICAgIHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLnF1ZXN0aW9uLm5hbWVdLnRvdWNoZWQpXHJcbiAgICApIHtcclxuICAgICAgdmFyIGtlZXBHb2luZyA9IHRydWU7XHJcbiAgICAgIHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLnF1ZXN0aW9uLm5hbWVdLm1hcmtBc0RpcnR5KCk7XHJcbiAgICAgIHJldHVybiB0aGlzLmdldFJlcXVpcmVkVmFsaWRhdGlvbk1lc3NhZ2UoKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMucXVlc3Rpb24gJiZcclxuICAgICAgdGhpcy5xdWVzdGlvbi5uYW1lICYmXHJcbiAgICAgIHRoaXMuZm9ybSAmJlxyXG4gICAgICB0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5uYW1lXS5lcnJvcnM/LnVwbG9hZHZhbGlkYXRpb25GbGFnICYmXHJcbiAgICAgICh0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5uYW1lXS5kaXJ0eSB8fFxyXG4gICAgICAgIHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLnF1ZXN0aW9uLm5hbWVdLnRvdWNoZWQpXHJcbiAgICApIHtcclxuICAgICAgdmFyIGtlZXBHb2luZyA9IHRydWU7XHJcbiAgICAgIHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLnF1ZXN0aW9uLm5hbWVdLm1hcmtBc0RpcnR5KCk7XHJcbiAgICAgIHJldHVybiB0aGlzLmdldFJlcXVpcmVkVmFsaWRhdGlvbk1lc3NhZ2UoKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMucXVlc3Rpb24gJiZcclxuICAgICAgdGhpcy5xdWVzdGlvbi5uYW1lICYmXHJcbiAgICAgIHRoaXMuZm9ybSAmJlxyXG4gICAgICB0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5uYW1lXS5lcnJvcnM/LmJwRW1wbHJMZW5ndGhGbGFnICYmXHJcbiAgICAgICh0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5uYW1lXS5kaXJ0eSB8fFxyXG4gICAgICAgIHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLnF1ZXN0aW9uLm5hbWVdLnRvdWNoZWQpXHJcbiAgICApIHtcclxuICAgICAgdmFyIGtlZXBHb2luZyA9IHRydWU7XHJcbiAgICAgIGxldCBtZXNzYWdlOiBzdHJpbmcgPSAnQWRkIHByZXZpb3VzIGVtcGxveW1lbnQgZGV0YWlscyc7XHJcbiAgICAgIHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLnF1ZXN0aW9uLm5hbWVdLm1hcmtBc0RpcnR5KCk7XHJcbiAgICAgIHJldHVybiBtZXNzYWdlO1xyXG4gICAgfVxyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLnF1ZXN0aW9uICYmXHJcbiAgICAgIHRoaXMucXVlc3Rpb24ubmFtZSAmJlxyXG4gICAgICB0aGlzLmZvcm0gJiZcclxuICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMucXVlc3Rpb24ubmFtZV0uZXJyb3JzPy5hZGRyZXNzVmFsaWRhdGlvbkZsYWcgJiZcclxuICAgICAgKHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLnF1ZXN0aW9uLm5hbWVdLmRpcnR5IHx8XHJcbiAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMucXVlc3Rpb24ubmFtZV0udG91Y2hlZClcclxuICAgICkge1xyXG4gICAgICB2YXIga2VlcEdvaW5nID0gdHJ1ZTtcclxuICAgICAgLy9sZXQgbWVzc2FnZTogc3RyaW5nID0gXCJQbGVhc2UgcHJvdmlkZSB2YWxpZCBhZGRyZXNzLlwiO1xyXG4gICAgICB0aGlzLmFkZHJlc3Nlcy5mb3JFYWNoKChhZGRyZXNzKSA9PiBhZGRyZXNzLnN1Ym1pdCgpKTtcclxuICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMucXVlc3Rpb24ubmFtZV0ubWFya0FzRGlydHkoKTtcclxuICAgICAgcmV0dXJuIG1lc3NhZ2U7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLnF1ZXN0aW9uICYmXHJcbiAgICAgIHRoaXMucXVlc3Rpb24ubmFtZSAmJlxyXG4gICAgICB0aGlzLmZvcm0gJiZcclxuICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMucXVlc3Rpb24ubmFtZV0uZXJyb3JzXHJcbiAgICAgICAgPy5iYW5rRGV0YWlsc1ZhbGlkYXRpb25GbGFnICYmXHJcbiAgICAgICh0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5uYW1lXS5kaXJ0eSB8fFxyXG4gICAgICAgIHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLnF1ZXN0aW9uLm5hbWVdLnRvdWNoZWQpXHJcbiAgICApIHtcclxuICAgICAgdmFyIGtlZXBHb2luZyA9IHRydWU7XHJcbiAgICAgIC8vbGV0IG1lc3NhZ2U6IHN0cmluZyA9IFwiUGxlYXNlIHByb3ZpZGUgdmFsaWQgYmFuayBkZXRhaWxzLlwiO1xyXG4gICAgICB0aGlzLmJhbmtkdGxzPy5zdWJtaXQoKTtcclxuICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMucXVlc3Rpb24ubmFtZV0ubWFya0FzRGlydHkoKTtcclxuICAgICAgcmV0dXJuIG1lc3NhZ2U7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLnF1ZXN0aW9uICYmXHJcbiAgICAgIHRoaXMucXVlc3Rpb24ubmFtZSAmJlxyXG4gICAgICB0aGlzLmZvcm0gJiZcclxuICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMucXVlc3Rpb24ubmFtZV0uZXJyb3JzPy53Y0VtcGxveWVyVmFsaWRhdGlvbiAmJlxyXG4gICAgICB0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5uYW1lXS5kaXJ0eSAmJlxyXG4gICAgICB0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5uYW1lXS50b3VjaGVkXHJcbiAgICApIHtcclxuICAgICAgdmFyIGtlZXBHb2luZyA9IHRydWU7XHJcbiAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5uYW1lXTtcclxuICAgICAgY29uc3QgZXJyb3IgPSBjb250cm9sLmVycm9yczsgICAgICBcclxuICAgICAgdGhpcy53Y0VtcGxveWVyR3JpZD8uc3VibWl0KCk7XHJcbiAgICAgIGNvbnRyb2wubWFya0FzRGlydHkoKTtcclxuXHJcbiAgICAgIGlmKGVycm9yPy53Y0VtcGxveWVyVmFsaWRhdGlvbikge1xyXG4gICAgICAgIG1lc3NhZ2UgPSB0aGlzLndjRW1wbG95ZXJWYWxpZGF0aW9uTXNnO1xyXG4gICAgICAgIHJldHVybiBtZXNzYWdlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZihlcnJvcj8ucmVxdWlyZWQpIHtcclxuICAgICAgICBtZXNzYWdlID0gXCJyZXF1aXJlZFwiO1xyXG4gICAgICByZXR1cm4gbWVzc2FnZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmIChcclxuICAgICAgdGhpcy5xdWVzdGlvbiAmJlxyXG4gICAgICB0aGlzLnF1ZXN0aW9uLm5hbWUgJiZcclxuICAgICAgdGhpcy5mb3JtICYmXHJcbiAgICAgIHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLnF1ZXN0aW9uLm5hbWVdLmVycm9ycz8ubm90RXF1YWxzICYmXHJcbiAgICAgICh0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5uYW1lXS5kaXJ0eSB8fFxyXG4gICAgICAgIHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLnF1ZXN0aW9uLm5hbWVdLnRvdWNoZWQpXHJcbiAgICApIHtcclxuICAgICAgbGV0IHZhbGlkYXRvckxpc3QgPSB0aGlzLnF1ZXN0aW9uLnZhbGlkYXRvcnM7XHJcbiAgICAgIHZhciBrZWVwR29pbmcgPSB0cnVlO1xyXG4gICAgICBsZXQgbWVzc2FnZTogc3RyaW5nID0gJyc7XHJcbiAgICAgIHZhbGlkYXRvckxpc3QuZm9yRWFjaCgodmFsaWRhdG9yKSA9PiB7XHJcbiAgICAgICAgaWYgKGtlZXBHb2luZykge1xyXG4gICAgICAgICAgaWYgKHZhbGlkYXRvci50eXBlID09PSAnY3VzdG9tdmFsaWRhdGlvbicpIHtcclxuICAgICAgICAgICAgbWVzc2FnZSA9IHZhbGlkYXRvci50ZXh0O1xyXG4gICAgICAgICAgICB0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5uYW1lXS5tYXJrQXNEaXJ0eSgpO1xyXG4gICAgICAgICAgICBrZWVwR29pbmcgPSBmYWxzZTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIG1lc3NhZ2UgPSAnJztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgdmFyIGtlZXBHb2luZyA9IHRydWU7XHJcbiAgICAgIHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLnF1ZXN0aW9uLm5hbWVdLm1hcmtBc0RpcnR5KCk7XHJcbiAgICAgIHJldHVybiBtZXNzYWdlO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIHRoaXMubG9nZ2VyLmRlYnVnKCdtZXNzYWdlIGZyb20gcGFuZWwgb3V0ZXItLSAnLG1lc3NhZ2UpO1xyXG4gICAgcmV0dXJuIG1lc3NhZ2U7XHJcbiAgfVxyXG5cclxuICBvbkFjY2VwdGVkKGFncmVlZDogYm9vbGVhbikge1xyXG4gICAgLy9jb25zb2xlLmxvZygnb25BY2NlcHRlZCBjYWxsZWQnLGFncmVlZCk7XHJcbiAgICB0aGlzLmxlZ2FsQWNjZXB0ZWQgPSBhZ3JlZWQ7XHJcbiAgfVxyXG5cclxuICBvbkNvbXBsZXRlUmVxdWFsaWZ5KHJlcXVhbGlmeURhdGE6IFVudHlwZWRGb3JtR3JvdXApIHtcclxuICAgIC8vY29uc29sZS5sb2coXCJvbkNvbXBsZXRlUmVxdWFsaWZ5XCIsIHJlcXVhbGlmeURhdGEpO1xyXG4gIH1cclxuXHJcbiAgb25Nb2RlbERpc3BsYXkobW9kZWxEaXNwbGF5OiBib29sZWFuKSB7XHJcbiAgICAvL2NvbnNvbGUubG9nKCdtb2RlbERpc3BsYXkgY2FsbGVkJyxtb2RlbERpc3BsYXkpO1xyXG4gIH1cclxuXHJcbiAgZ2VuZXJhdGVPdHBGb3JOZXdVc2VyQ3JlYXRpb24oZXZlbnQsIGZvcm0pIHtcclxuICAgIGlmIChmb3JtLmNvbnRyb2xzLnBob25lLnZhbHVlID09IG51bGwgfHwgZm9ybS52YWx1ZS52ZXJpZmljYXRpb24gPT0gbnVsbCkge1xyXG4gICAgICB0aGlzLmlzT3RwTW9kYWxFbmFibGVkID0gZmFsc2U7XHJcbiAgICAgIGNvbnNvbGUubG9nKFwiRmllbGRzIGFyZSBudWxsLlwiKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgLy8gUmVtb3ZlIG5vbi1udW1lcmljIGNoYXJhY3RlcnNcclxuICAgLy8gbGV0IHZhbGlkUGhvbmUgPSBmb3JtLnZhbHVlLnBob25lLnJlcGxhY2UoL1xcRC9nLCAnJyk7XHJcbiAgICBsZXQgdmFsaWRQaG9uZSA9IGZvcm0uY29udHJvbHMucGhvbmUudmFsdWUucmVwbGFjZUFsbChcIi1cIixcIlwiKS5yZXBsYWNlQWxsKFwiIFwiLFwiXCIpO1xyXG4gICAgICBcclxuICAgIC8vIENvdW50IGRpZ2l0c1xyXG4gICAgbGV0IHBob25lTGVuZ3RoID0gdmFsaWRQaG9uZS5sZW5ndGg7XHJcbiAgICBjb25zb2xlLmxvZyhcIlBob25lIG51bWJlciBsZW5ndGhcIiwgcGhvbmVMZW5ndGgpO1xyXG4gICAgaWYgKHBob25lTGVuZ3RoICE9IDEwKSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKFwiUGhvbmUgbnVtYmVyIG11c3QgYmUgb2YgbGVuZ3RoIDEwXCIpXHJcbiAgICAgIFxyXG4gICAgICByZXR1cm47IFxyXG4gICAgfVxyXG4gICAgdGhpcy5sc1xyXG4gICAgICAuZ2VuZXJhdGVPdHBGb3JOZXdVc2VyQ3JlYXRpb24oZm9ybS5jb250cm9scy5waG9uZS52YWx1ZSwgZXZlbnQub3B0aW9uLnZhbHVlKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzOiBzdHJpbmcpID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKCdBY2Nlc3MgY29kZSBzZW50IHN1Y2Nlc3NmdWxseS4nKTtcclxuICAgICAgICAgIHRoaXMuaXNPdHBNb2RhbEVuYWJsZWQgPSB0cnVlO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnIpID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKCdDb3VsZCBub3QgZ2VuZXJhdGUgdGhlIGF1dGhlbnRpY2F0aW9uIE9UUCBjb2RlLicpO1xyXG4gICAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pOyBcclxuICB9XHJcblxyXG4gIG9uUmFkaW9PcHRpb25DbGljayhldmVudCwgZWxlbWVudDogRWxlbWVudHNNb2RlbCkge1xyXG4gICAgaWYoZWxlbWVudD8ubmFtZSA9PT0gXCJkaWZmbWFpbGFkZHJlc3NcIiAmJiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImZsb3dLZXlcIikgPT0gJzM0NScpe1xyXG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnZGlzYWJsZUZpZWxkc09uU2lnbnVwJywgJ2ZhbHNlJyk7XHJcbiAgICB9XHJcbiAgICBsZXQgcXVlcnkgPSBldmVudC5xdWVyeTtcclxuICAgIGlmIChlbGVtZW50LnNlcnZpY2VUeXBlICYmIGVsZW1lbnQuc2VydmljZVR5cGUgPT09ICdGRVRDSCcpIHtcclxuICAgICAgbGV0IHNlcnZpY2VDYWxsVHlwZSA9IGVsZW1lbnQuc2VydmljZUNhbGxUeXBlO1xyXG4gICAgICBsZXQgc2VydmljZU5hbWU6IHN0cmluZyA9IGVsZW1lbnQuc2VydmljZU5hbWU7XHJcbiAgICAgIGNvbnN0IG9wdGlvbnMgPSBldmVudC5vcHRpb24udmFsdWVcclxuICAgICAgICA/IHsgcGFyYW1zOiBuZXcgSHR0cFBhcmFtcygpLnNldCgnc2VsZWN0aW9uJywgZXZlbnQub3B0aW9uLnZhbHVlKSB9XHJcbiAgICAgICAgOiB7fTtcclxuICAgICAgaWYgKHNlcnZpY2VDYWxsVHlwZSA9PT0gJ0dFVCcpIHtcclxuICAgICAgICB0aGlzLnV0aWwuc2hvd0xvYWRlcigpO1xyXG4gICAgICAgIHRoaXMudmFsaWRhdGlvblNlcnZpY2UuZ2V0KGAke3NlcnZpY2VOYW1lfWAsIG9wdGlvbnMpLnN1YnNjcmliZShcclxuICAgICAgICAgIChyZXMpID0+IHtcclxuICAgICAgICAgICAgbGV0IHZhbHVlczogU2VydmljZUFjdGlvblJlc3BvbnNlTW9kZWwgPSByZXM7XHJcbiAgICAgICAgICAgIGlmICh2YWx1ZXMuc3VjY2VzcyA9PSB0cnVlKSB7XHJcbiAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZyh2YWx1ZXMuc2VydmljZUNhbGxWYWx1ZXMuc2VydmljZVR5cGUpO1xyXG4gICAgICAgICAgICAgIC8vY29uc29sZS5sb2codmFsdWVzLnNlcnZpY2VDYWxsVmFsdWVzKTtcclxuICAgICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICB2YWx1ZXMuc2VydmljZUNhbGxWYWx1ZXMgJiZcclxuICAgICAgICAgICAgICAgIHZhbHVlcy5zZXJ2aWNlQ2FsbFZhbHVlcy5zZXJ2aWNlVHlwZSAmJlxyXG4gICAgICAgICAgICAgICAgdmFsdWVzLnNlcnZpY2VDYWxsVmFsdWVzLnNlcnZpY2VUeXBlID09PSAnRkVUQ0gnXHJcbiAgICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgc2VydmljZUNhbGxUeXBlSW5UcnVlID1cclxuICAgICAgICAgICAgICAgICAgdmFsdWVzLnNlcnZpY2VDYWxsVmFsdWVzLnNlcnZpY2VDYWxsVHlwZTtcclxuICAgICAgICAgICAgICAgIGxldCBzZXJ2aWNlTmFtZUluVHJ1ZTogc3RyaW5nID1cclxuICAgICAgICAgICAgICAgICAgdmFsdWVzLnNlcnZpY2VDYWxsVmFsdWVzLnNlcnZpY2VOYW1lO1xyXG4gICAgICAgICAgICAgICAgaWYgKHNlcnZpY2VDYWxsVHlwZUluVHJ1ZSA9PT0gJ0dFVCcpIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy51dGlsLnNob3dMb2FkZXIoKTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9uU2VydmljZS5nZXQoYCR7c2VydmljZU5hbWVJblRydWV9YCkuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgICAgICAgICAgIChyZXNwKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBsZXQgbG9hZGVyTW9kZWw6IExvYWRlck1vZGVsID0gcmVzcDtcclxuICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwiIHZhbHVlIGZyb20gbG9hZGVyID0gXCIsIGxvYWRlck1vZGVsKTtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0Rm9ybVZhbHVlcyhsb2FkZXJNb2RlbC5kYXRhKTtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXRpbC5oaWRlTG9hZGVyKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAoZXJycCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy51dGlsLmhpZGVMb2FkZXIoKTtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5jb250cm9sc1tlbGVtZW50Lm5hbWVdPy5yZXNldCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzW1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50Lm5hbWVcclxuICAgICAgICAgICAgICAgICAgICAgIF0/LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXRpbC5lcnJvckhhbmRsZXIoZXJycCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB0aGlzLnV0aWwuaGlkZUxvYWRlcigpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgKGVycikgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnV0aWwuaGlkZUxvYWRlcigpO1xyXG4gICAgICAgICAgICB0aGlzLmZvcm0uY29udHJvbHNbZWxlbWVudC5uYW1lXT8ucmVzZXQoKTtcclxuICAgICAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzW2VsZW1lbnQubmFtZV0/LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgICAgICAgICAgdGhpcy51dGlsLmVycm9ySGFuZGxlcihlcnIpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldEZvcm1WYWx1ZXMoZGF0YSkge1xyXG4gICAgT2JqZWN0LmtleXMoZGF0YSkuZm9yRWFjaCgoa2V5KSA9PiB7XHJcbiAgICAgIGxldCB2YWx1ZVRvU2V0ID0gZGF0YVtrZXldO1xyXG4gICAgICB0aGlzLnNldFZhbHVlSW5Gb3JtQ29udHJvbChrZXksIHZhbHVlVG9TZXQpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBzZXRWYWx1ZUluRm9ybUNvbnRyb2wobmFtZSwgdmFsdWUpIHtcclxuICAgIGxldCBjb250cm9sID0gdGhpcy5mb3JtLmNvbnRyb2xzW25hbWVdO1xyXG4gICAgaWYgKGNvbnRyb2wpIHtcclxuICAgICAgY29udHJvbC5wYXRjaFZhbHVlKHZhbHVlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ05vIGZvcm0gY29udHJvbCBwcmVzZW50IHdpdGggbmFtZSAnLCBuYW1lKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGZpbHRlclZhbHVlKGV2ZW50LCBlbGVtZW50OiBFbGVtZW50c01vZGVsKSB7XHJcbiAgICAvLyB0aGlzLmxvZ2dlci5kZWJ1ZygnY2hvaWNlcy0tJyxjaG9pY2VzKTtcclxuXHJcbiAgICBsZXQgY2hvaWNlczogYW55W10gPSBbXTtcclxuXHJcbiAgICBsZXQgZmlsdGVyZWQ6IGFueVtdID0gW107XHJcbiAgICBsZXQgcXVlcnkgPSBldmVudC5xdWVyeTtcclxuXHJcbiAgICBpZiAoZWxlbWVudC5zZXJ2aWNlVHlwZSAmJiBlbGVtZW50LnNlcnZpY2VUeXBlID09PSAnRkVUQ0gnKSB7XHJcbiAgICAgIGxldCBzZXJ2aWNlQ2FsbFBhcmFtID0gZWxlbWVudC5zZXJ2aWNlQ2FsbFBhcmFtOyAvL3NzbjMyMCxsc3RuYW1lMzIwXHJcbiAgICAgIGxldCBzZXJ2aWNlQ2FsbFR5cGUgPSBlbGVtZW50LnNlcnZpY2VDYWxsVHlwZTsgLy9cIkdFVFwiXHJcbiAgICAgIGxldCBzZXJ2aWNlTmFtZTogc3RyaW5nID0gZWxlbWVudC5zZXJ2aWNlTmFtZTsgLy8vc2VjdXJpdHktc2VydmljZS92YWxpZGF0ZVNTTi9cclxuICAgICAgbGV0IHNlcnZpY2VVcGRhdGVQYXJhbSA9IGVsZW1lbnQuc2VydmljZVVwZGF0ZVBhcmFtO1xyXG5cclxuICAgICAgaWYgKHNlcnZpY2VDYWxsVHlwZSA9PT0gJ0dFVCcpIHtcclxuICAgICAgICAvLyB0aGlzLmxvZ2dlci5kZWJ1ZygnSW5zaWRlIEdFVCcpO1xyXG4gICAgICAgIHRoaXMudmFsaWRhdGlvblNlcnZpY2UuZ2V0KGAke3NlcnZpY2VOYW1lfWApLnN1YnNjcmliZShcclxuICAgICAgICAgIChyZXMpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoJ3Jlcy0tJywgcmVzLCAnIC0gcmVzWzBdLmxlbmd0aCAtJywgcmVzKTtcclxuICAgICAgICAgICAgY2hvaWNlcy5wdXNoKHJlcyk7XHJcbiAgICAgICAgICAgIGxldCBxdWVyeSA9IGV2ZW50LnF1ZXJ5O1xyXG4gICAgICAgICAgICAvL2xldCBmaWx0ZXJlZDogYW55W10gPSBbXTtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjaG9pY2VzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgbGV0IGNob2ljZSA9IGNob2ljZXNbaV07XHJcbiAgICAgICAgICAgICAgLy90aGlzLmxvZ2dlci5kZWJ1ZygnY2hvaWNlIC0gJywgY2hvaWNlLCAnY2hvaWNlLnRleHQtLScsIGNob2ljZS50ZXh0LCAncXVlcnkudG9Mb3dlckNhc2UoKScsIHF1ZXJ5Py50b0xvd2VyQ2FzZSgpKTtcclxuICAgICAgICAgICAgICAvL2lmIChjaG9pY2UudGV4dC50b0xvd2VyQ2FzZSgpLmluZGV4T2YocXVlcnkudG9Mb3dlckNhc2UoKSkgPT0gMCkge1xyXG4gICAgICAgICAgICAgIGZpbHRlcmVkLnB1c2goY2hvaWNlWzBdKTtcclxuICAgICAgICAgICAgICAvL31cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLmZpbHRlclJlc3VsdCA9IGZpbHRlcmVkO1xyXG4gICAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygndGhpcy5maWx0ZXJSZXN1bHQxMjMtLScsIHRoaXMuZmlsdGVyUmVzdWx0KTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICAoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMudXRpbC5oaWRlTG9hZGVyKCk7XHJcbiAgICAgICAgICAgIHRoaXMudXRpbC5lcnJvckhhbmRsZXIoZXJyKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjaG9pY2VzID0gZWxlbWVudC5jaG9pY2VzO1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNob2ljZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBsZXQgY291bnRyeSA9IGNob2ljZXNbaV07XHJcbiAgICAgICAgLy9pZiAoY291bnRyeS50ZXh0LnRvTG93ZXJDYXNlKCkuaW5kZXhPZihxdWVyeS50b0xvd2VyQ2FzZSgpKSA9PSAwKSB7XHJcbiAgICAgICAgZmlsdGVyZWQucHVzaChjb3VudHJ5KTtcclxuICAgICAgICAvL31cclxuICAgICAgfVxyXG4gICAgICB0aGlzLmZpbHRlclJlc3VsdCA9IGZpbHRlcmVkO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25TZWxlY3QoZXZlbnQsIGNudHJsTmFtZTogc3RyaW5nKSB7fVxyXG5cclxuICAvL1RoaXMgc2hvdWQgYmUgc2ltaWxpcmEgdG8gbWV0aG9kIHByZXNlbnQgaW4gcGFuZWxcclxuICB2YWxpZGF0ZShlbGVtZW50OiBFbGVtZW50c01vZGVsKSB7XHJcbiAgICBpZiAoIWVsZW1lbnQuc2VydmljZU5hbWUpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBzZXJ2aWNlVHlwZSA9IGVsZW1lbnQuc2VydmljZVR5cGU7XHJcbiAgICBpZiAoZWxlbWVudC5zZXJ2aWNlVHlwZSA9PT0gJ0ZFVENIJykge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IHNlcnZpY2VDYWxsUGFyYW0gPSBlbGVtZW50LnNlcnZpY2VDYWxsUGFyYW07IC8vc3NuMzIwLGxzdG5hbWUzMjBcclxuICAgIGxldCBzZXJ2aWNlQ2FsbFR5cGUgPSBlbGVtZW50LnNlcnZpY2VDYWxsVHlwZTsgLy9cIkdFVFwiXHJcbiAgICBsZXQgc2VydmljZU5hbWU6IHN0cmluZyA9IGVsZW1lbnQuc2VydmljZU5hbWU7IC8vL3NlY3VyaXR5LXNlcnZpY2UvdmFsaWRhdGVTU04vXHJcbiAgICBsZXQgc2VydmljZVVwZGF0ZVBhcmFtID0gZWxlbWVudC5zZXJ2aWNlVXBkYXRlUGFyYW07XHJcbiAgICBsZXQgYWxsVmFsdWVQcmVzZW50OiBCb29sZWFuID0gdHJ1ZTtcclxuICAgIC8vICB0aGlzLmxvZ2dlci5kZWJ1Zygnc2VydmljZUNhbGxQYXJhbScsc2VydmljZUNhbGxQYXJhbSk7XHJcbiAgICBpZiAoc2VydmljZUNhbGxQYXJhbSkge1xyXG4gICAgICB2YXIgc3BsaXR0ZWQgPSBzZXJ2aWNlQ2FsbFBhcmFtLnNwbGl0KCcsJyk7XHJcbiAgICAgIGxldCB2YWx1ZUFycjogc3RyaW5nW10gPSBbXTtcclxuICAgICAgbGV0IHBhcmFtQXJyOiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNwbGl0dGVkLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgLy91c2UgaSBpbnN0ZWFkIG9mIDAgZG9iMzIwXHJcbiAgICAgICAgLy8gdGhpcy5sb2dnZXIuZGVidWcoJ2RvYjMyMCcsdGhpcy5mb3JtLmNvbnRyb2xzWydkb2IzMjAnXS52YWx1ZSk7XHJcbiAgICAgICAgaWYgKHRoaXMuZm9ybS5jb250cm9sc1tzcGxpdHRlZFtpXV0udmFsdWUpIHtcclxuICAgICAgICAgIHBhcmFtQXJyLnB1c2goc3BsaXR0ZWRbaV0pO1xyXG4gICAgICAgICAgdmFsdWVBcnIucHVzaCh0aGlzLmZvcm0uY29udHJvbHNbc3BsaXR0ZWRbaV1dLnZhbHVlKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgYWxsVmFsdWVQcmVzZW50ID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIC8vIHRoaXMubG9nZ2VyLmRlYnVnKCd2YWx1ZUFycjEyJywgdmFsdWVBcnIsICdwYXJhbUFycjExICcsIHBhcmFtQXJyLCAnIGVsZW1lbnQnLCBlbGVtZW50KTtcclxuXHJcbiAgICAgIHZhciBtb2RlbDogVmFsaWRhdGlvbk1vZGVsID0ge307XHJcbiAgICAgIG1vZGVsLnBhcmFtTmFtZSA9IHBhcmFtQXJyO1xyXG4gICAgICBtb2RlbC5wYXJhbVZhbHVlID0gdmFsdWVBcnI7XHJcbiAgICAgIC8vIHJldHVybiB0aGlzLnBvc3QoYHF1ZXN0aW9ubmFpcmUvc2NyZWVuLXF1ZXN0aW9ubmFpcmVgLCBxdWVzdGlvbm5haXJlRGF0YSk7XHJcbiAgICAgIGlmIChhbGxWYWx1ZVByZXNlbnQpIHtcclxuICAgICAgICBpZiAoc2VydmljZUNhbGxUeXBlID09PSAnUE9TVCcpIHtcclxuICAgICAgICAgIC8vIHRoaXMubG9nZ2VyLmRlYnVnKCdJbnNpZGUgR0VUJyk7XHJcbiAgICAgICAgICB0aGlzLnZhbGlkYXRpb25TZXJ2aWNlLnBvc3QoYCR7c2VydmljZU5hbWV9YCwgbW9kZWwpLnN1YnNjcmliZShcclxuICAgICAgICAgICAgKHJlcykgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMucmV0dXJuTW9kZWwgPSByZXM7XHJcbiAgICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICAgdGhpcy5yZXR1cm5Nb2RlbC5yZXR1cm5UeXBlICYmXHJcbiAgICAgICAgICAgICAgICB0aGlzLnJldHVybk1vZGVsLnJldHVyblR5cGUgPT09ICdQT1BVUCdcclxuICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZGlzcGxheVBvc2l0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMucG9zaXRpb24gPSAndG9wJztcclxuICAgICAgICAgICAgICAgIHRoaXMucG9wVXBIZWFkZXIgPSB0aGlzLnJldHVybk1vZGVsLnBvcFVwSGVhZGVyO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wb3BVcFRleHQgPSB0aGlzLnJldHVybk1vZGVsLnBvcFVwVGV4dDtcclxuICAgICAgICAgICAgICAgIHRoaXMucG9wVXBZZXNBY3Rpb25MYWJlbCA9IHRoaXMucmV0dXJuTW9kZWwucG9wVXBZZXNCdXR0b25MYWJlbDtcclxuICAgICAgICAgICAgICAgIHRoaXMucG9wVXBOb0FjdGlvbkxhYmVsID0gdGhpcy5yZXR1cm5Nb2RlbC5wb3BVcE5vQnV0dG9uTGFiZWw7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKCd0aGlzLnJldHVybk1vZGVsICcsIHRoaXMucmV0dXJuTW9kZWwpO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy51dGlsLmhpZGVMb2FkZXIoKTtcclxuICAgICAgICAgICAgICB0aGlzLnV0aWwuZXJyb3JIYW5kbGVyKGVycik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIGJsdXJET0IoZWxlbWVudDogRWxlbWVudHNNb2RlbCkge1xyXG4gICAgdGhpcy52YWxpZGF0ZShlbGVtZW50KTtcclxuICAgIHRoaXMuY2hlY2tJZlVzZXJFeGlzdCgpO1xyXG4gIH1cclxuICBhY2NlcHQoKSB7XHJcbiAgICBjb25zb2xlLmxvZygnYWNjZXB0IGNhbGxlZDEyMycsIHRoaXMucmV0dXJuTW9kZWwuaWRlbnRpZmllcik7XHJcbiAgICBsZXQgcGFyYW1BcnJheTogUGFyYW1zW10gPSBbXTtcclxuICAgIGlmICh0aGlzLnJldHVybk1vZGVsLmlkZW50aWZpZXIpIHtcclxuICAgICAgbGV0IG1vZGVsQXJyOiBLZXlWYWx1ZU1vZGVsW10gPSB0aGlzLnJldHVybk1vZGVsLmlkZW50aWZpZXI7XHJcbiAgICAgIGZvciAodmFyIHZhbCBvZiBtb2RlbEFycikge1xyXG4gICAgICAgIHBhcmFtQXJyYXkucHVzaCh7IFt2YWwua2V5XTogdmFsLnZhbHVlIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IHBhcmFtcyA9IHBhcmFtQXJyYXkucmVkdWNlKChhcnJPYmosIGl0ZW0pID0+XHJcbiAgICAgICAgT2JqZWN0LmFzc2lnbihhcnJPYmosIGl0ZW0sIHt9KVxyXG4gICAgICApO1xyXG4gICAgICAvL3RoaXMudXRpbC5vcGVuUGFnZUJ5Q29udGV4dFJvb3RXaXRoRGF0YSh0aGlzLmdldENvbnRleHRSb290KCksIHRoaXMucmV0dXJuTW9kZWwueWVzQWN0aW9uLCBwYXJhbXMsIHRoaXMubmF2Q29udHJvbGxlcilcclxuICAgICAgdGhpcy5uYXZDb250cm9sbGVyLm5hdmlnYXRlUm9vdCh0aGlzLnJldHVybk1vZGVsLnllc0FjdGlvbiwge1xyXG4gICAgICAgIHF1ZXJ5UGFyYW1zOiBwYXJhbXMsXHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMucmV0dXJuTW9kZWwueWVzQWN0aW9uICYmXHJcbiAgICAgIHRoaXMucmV0dXJuTW9kZWwueWVzQWN0aW9uLnN1YnN0cmluZygwLCA0KSAhPSAnL2NwLydcclxuICAgICkge1xyXG4gICAgICB0aGlzLm5hdkNvbnRyb2xsZXIubmF2aWdhdGVSb290KFt0aGlzLnJldHVybk1vZGVsLnllc0FjdGlvbl0pO1xyXG4gICAgICB0aGlzLmRpc3BsYXlQb3NpdGlvbiA9IGZhbHNlO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB3aW5kb3cub3Blbihsb2NhdGlvbi5vcmlnaW4gKyB0aGlzLnJldHVybk1vZGVsLnllc0FjdGlvbiwgJ19zZWxmJyk7XHJcbiAgICB9XHJcbiAgICB0aGlzLm5hdkNvbnRyb2xsZXIubmF2aWdhdGVSb290KFt0aGlzLnJldHVybk1vZGVsLnllc0FjdGlvbl0pO1xyXG4gIH1cclxuXHJcbiAgcmVqZWN0KCkge1xyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLnJldHVybk1vZGVsLm5vQWN0aW9uICYmXHJcbiAgICAgIHRoaXMucmV0dXJuTW9kZWwubm9BY3Rpb24uc3Vic3RyaW5nKDAsIDQpICE9ICcvY3AvJ1xyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMubmF2Q29udHJvbGxlci5uYXZpZ2F0ZVJvb3QoW3RoaXMucmV0dXJuTW9kZWwubm9BY3Rpb25dKTtcclxuICAgICAgdGhpcy5kaXNwbGF5UG9zaXRpb24gPSBmYWxzZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHdpbmRvdy5vcGVuKGxvY2F0aW9uLm9yaWdpbiArIHRoaXMucmV0dXJuTW9kZWwubm9BY3Rpb24sICdfc2VsZicpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0Q29udGV4dFJvb3QoKSB7XHJcbiAgICByZXR1cm4gd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lLnN1YnN0cmluZyhcclxuICAgICAgMCxcclxuICAgICAgd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lLmluZGV4T2YoJy8nLCAyKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHVwbG9hZEZpbGUoZXY6IGFueSkge31cclxuXHJcbiAgZ2V0VHJhbnNsYXRpb24oa2V5OiBzdHJpbmcsIGR5bmFtaWNQYXJhbTogYW55KSB7XHJcbiAgICBpZiAoIWR5bmFtaWNQYXJhbSkge1xyXG4gICAgICByZXR1cm4ga2V5O1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBkeW5hbWljT2JqID0ge307XHJcblxyXG4gICAgbGV0IHBhcmFtOiBLZXlWYWx1ZU1vZGVsO1xyXG4gICAgbGV0IHBhcmFtczogS2V5VmFsdWVNb2RlbFtdO1xyXG5cclxuICAgIGlmIChBcnJheS5pc0FycmF5KGR5bmFtaWNQYXJhbSkpIHtcclxuICAgICAgcGFyYW1zID0gZHluYW1pY1BhcmFtO1xyXG4gICAgICBwYXJhbXMuZm9yRWFjaCgocHJtKSA9PiB7XHJcbiAgICAgICAgZHluYW1pY09ialtwcm0ua2V5XSA9IHBybS52YWx1ZTtcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBwYXJhbSA9IGR5bmFtaWNQYXJhbTtcclxuICAgICAgZHluYW1pY09ialtwYXJhbS5rZXldID0gcGFyYW0udmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy50cmFuc2xhdGUudXNlKCdlbicpO1xyXG4gICAgbGV0IHRyYW5zbGF0ZWRTdHJpbmc6IFN0cmluZyA9ICcnO1xyXG4gICAgdGhpcy50cmFuc2xhdGUuc2V0KGtleSwga2V5KTtcclxuICAgIHRyYW5zbGF0ZWRTdHJpbmcgPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGtleSwgT2JqZWN0LmFzc2lnbihkeW5hbWljT2JqKSk7XHJcbiAgICByZXR1cm4gdHJhbnNsYXRlZFN0cmluZztcclxuICB9XHJcblxyXG4gIGdldFRleHQob2JqZWN0KSB7XHJcbiAgICByZXR1cm4gb2JqZWN0Py50ZXh0ID8gb2JqZWN0Py50ZXh0IDogb2JqZWN0O1xyXG4gIH1cclxuXHJcbiAgdW5tYXNrKGV2ZW50KSB7XHJcbiAgICB0aGlzLm1hc2tDbGFzcyA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgbWFzayhldmVudCkge1xyXG4gICAgdGhpcy5tYXNrQ2xhc3MgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgZGF0ZUlucHV0KGV2ZW50KSB7XHJcbiAgICBsZXQgY3VycmVudFZhbHVlOiBzdHJpbmcgPSBldmVudC5zcmNFbGVtZW50LnZhbHVlO1xyXG4gICAgaWYgKGN1cnJlbnRWYWx1ZSkge1xyXG4gICAgICBpZiAoY3VycmVudFZhbHVlLmxlbmd0aCA9PSAyICYmIGN1cnJlbnRWYWx1ZS5jaGFyQXQoMikgIT0gJy8nKSB7XHJcbiAgICAgICAgZXZlbnQudGFyZ2V0LnZhbHVlID0gY3VycmVudFZhbHVlICsgJy8nO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChjdXJyZW50VmFsdWUubGVuZ3RoID09IDUgJiYgY3VycmVudFZhbHVlLmNoYXJBdCg1KSAhPSAnLycpIHtcclxuICAgICAgICBldmVudC50YXJnZXQudmFsdWUgPSBjdXJyZW50VmFsdWUgKyAnLyc7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNoZWNrRm9yVmFsdWVDaGFuZ2UoZXZlbnQpIHtcclxuICAgIGlmICh0aGlzLnF1ZXN0aW9uLmNvbXBvbmVudERhdGEpIHtcclxuICAgICAgbGV0IGNvbXBEYXRhOiBWYWx1ZUNoYW5nZUNvbXBvbmVudE1vZGVsID0gSlNPTi5wYXJzZShcclxuICAgICAgICB0aGlzLnF1ZXN0aW9uLmNvbXBvbmVudERhdGFcclxuICAgICAgKTtcclxuICAgICAgbGV0IGN1cnJlbnRWYWx1ZSA9IGV2ZW50LnRhcmdldC52YWx1ZTtcclxuICAgICAgbGV0IG9yaWdpbmFsVmFsdWUgPSB0aGlzLmZvcm0uZ2V0KGNvbXBEYXRhLm9yaWdpbmFsVmFsdWVDb250cm9sKT8udmFsdWU7XHJcbiAgICAgIGxldCBmb3JtQ29udHJvbFRvVXBkYXRlOiBBYnN0cmFjdENvbnRyb2wgPSB0aGlzLmZvcm0uZ2V0KFxyXG4gICAgICAgIGNvbXBEYXRhLmZvcm1Db250cm9sVG9VcGRhdGVcclxuICAgICAgKTtcclxuICAgICAgZm9ybUNvbnRyb2xUb1VwZGF0ZS5wYXRjaFZhbHVlKCdOJyk7XHJcbiAgICAgIGZvcm1Db250cm9sVG9VcGRhdGUudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgICB0aGlzLmZvcm0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgICB0aGlzLmR5bmFtaWNQYXJhbSA9IHRoaXMuZHluYW1pY1BhcmFtID8gdGhpcy5keW5hbWljUGFyYW0gOiBbXTtcclxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy5keW5hbWljUGFyYW0pKSB7XHJcbiAgICAgICAgdGhpcy5keW5hbWljUGFyYW0ucHVzaCh7XHJcbiAgICAgICAgICBrZXk6IHRoaXMucXVlc3Rpb24ubmFtZSxcclxuICAgICAgICAgIHZhbHVlOiBjdXJyZW50VmFsdWUsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5keW5hbWljUGFyYW1bdGhpcy5xdWVzdGlvbi5uYW1lXSA9IGN1cnJlbnRWYWx1ZTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoY3VycmVudFZhbHVlICE9IG9yaWdpbmFsVmFsdWUpIHtcclxuICAgICAgICBmb3JtQ29udHJvbFRvVXBkYXRlLnBhdGNoVmFsdWUoJ1knKTtcclxuICAgICAgICB0aGlzLm9uRHluYW1pY1BhcmFtVXBkYXRlLmVtaXQodGhpcy5keW5hbWljUGFyYW0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGZvcm1Db250cm9sVG9VcGRhdGUucGF0Y2hWYWx1ZSgnTicpO1xyXG4gICAgICB9XHJcbiAgICAgIGZvcm1Db250cm9sVG9VcGRhdGUudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0RW1wbG95ZXIoZW1wbG95ZXI6IEVtcGxveWVyRGV0YWlsU2VhcmNoUmVzdWx0KSB7XHJcbiAgICBpZiAodGhpcy5xdWVzdGlvbi5jb21wb25lbnREYXRhKSB7XHJcbiAgICAgIGxldCBjb21wRGF0YTogRW1wbG95ZXJBZGRyZXNzVXBkYXRlTW9kZWwgPSBKU09OLnBhcnNlKFxyXG4gICAgICAgIHRoaXMucXVlc3Rpb24uY29tcG9uZW50RGF0YVxyXG4gICAgICApO1xyXG4gICAgICBsZXQgYWRkcmVzc0ZjOiBBYnN0cmFjdENvbnRyb2wgPSB0aGlzLmZvcm0uZ2V0KFxyXG4gICAgICAgIGNvbXBEYXRhLmFkZHJlc3NGb3JtQ29udHJvbE5hbWVcclxuICAgICAgKTtcclxuICAgICAgbGV0IGVtcElkRmM6IEFic3RyYWN0Q29udHJvbCA9IHRoaXMuZm9ybS5nZXQoXHJcbiAgICAgICAgY29tcERhdGEuZW1wbG95ZXJJZEZvcm1Db250cm9sTmFtZVxyXG4gICAgICApO1xyXG4gICAgICBlbXBJZEZjLnNldFZhbHVlKGVtcGxveWVyLmVtcGxveWVySWQgPyBlbXBsb3llci5lbXBsb3llcklkIDogJy0xJyk7XHJcbiAgICAgIGFkZHJlc3NGYy5zZXRWYWx1ZSh7XHJcbiAgICAgICAgY291bnRyeTogZW1wbG95ZXIuY291bnRyeSxcclxuICAgICAgICBjaXR5OiBlbXBsb3llci5jaXR5LFxyXG4gICAgICAgIHppcDogZW1wbG95ZXIuemlwLFxyXG4gICAgICAgIHN0cmVldEFkZHJlc3M6IGVtcGxveWVyLmFkZHJlc3NEaXNwbGF5VmFsLFxyXG4gICAgICAgIHN0YXRlOiBlbXBsb3llci5zdGF0ZSxcclxuICAgICAgICBvcHRpb25hbEFkZHJlc3M6IG51bGwsXHJcbiAgICAgICAgY291bnR5OiBudWxsLFxyXG4gICAgICAgIHRvd246IG51bGwsXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVzZXRFbXBsb3llcigpIHtcclxuICAgIGlmICh0aGlzLnF1ZXN0aW9uLmNvbXBvbmVudERhdGEpIHtcclxuICAgICAgbGV0IGNvbXBEYXRhOiBFbXBsb3llckFkZHJlc3NVcGRhdGVNb2RlbCA9IEpTT04ucGFyc2UoXHJcbiAgICAgICAgdGhpcy5xdWVzdGlvbi5jb21wb25lbnREYXRhXHJcbiAgICAgICk7XHJcbiAgICAgIGxldCBhZGRyZXNzRmM6IEFic3RyYWN0Q29udHJvbCA9IHRoaXMuZm9ybS5nZXQoXHJcbiAgICAgICAgY29tcERhdGEuYWRkcmVzc0Zvcm1Db250cm9sTmFtZVxyXG4gICAgICApO1xyXG4gICAgICBsZXQgZW1wSWRGYzogQWJzdHJhY3RDb250cm9sID0gdGhpcy5mb3JtLmdldChcclxuICAgICAgICBjb21wRGF0YS5lbXBsb3llcklkRm9ybUNvbnRyb2xOYW1lXHJcbiAgICAgICk7XHJcbiAgICAgIGVtcElkRmMuc2V0VmFsdWUoJy0xJyk7XHJcbiAgICAgIGFkZHJlc3NGYy5zZXRWYWx1ZSh7XHJcbiAgICAgICAgY291bnRyeTogbnVsbCxcclxuICAgICAgICBjaXR5OiBudWxsLFxyXG4gICAgICAgIHppcDogbnVsbCxcclxuICAgICAgICBzdHJlZXRBZGRyZXNzOiBudWxsLFxyXG4gICAgICAgIHN0YXRlOiBudWxsLFxyXG4gICAgICAgIG9wdGlvbmFsQWRkcmVzczogbnVsbCxcclxuICAgICAgICBjb3VudHk6IG51bGwsXHJcbiAgICAgICAgdG93bjogbnVsbCxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRGb3JtQ29udHJvbFZhbHVlKGVsZW1lbnROYW1lLCBlbGVtZW50VmFsdWUpIHtcclxuICAgIGlmICh0aGlzLmZvcm0uY29udHJvbHNbZWxlbWVudE5hbWVdKSB7XHJcbiAgICAgIHRoaXMuZm9ybS5jb250cm9sc1tlbGVtZW50TmFtZV0ucGF0Y2hWYWx1ZShlbGVtZW50VmFsdWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0RGVmYXVsdFZhbHVlKCkge1xyXG4gICAgaWYgKHRoaXMucXVlc3Rpb24uZGVmYXVsdFZhbHVlKSB7XHJcbiAgICAgIGxldCB2YWx1ZSA9IHRoaXMucXVlc3Rpb24uZGVmYXVsdFZhbHVlO1xyXG4gICAgICBpZiAodGhpcy5xdWVzdGlvbi50eXBlID09ICdkcm9wZG93bicpIHtcclxuICAgICAgICBjb25zdCBjaG9pY2U6IHN0cmluZyA9IHRoaXMucXVlc3Rpb24uZGVmYXVsdFZhbHVlO1xyXG4gICAgICAgIHZhciBqc29uT2JqZWN0OiBDaG9pY2VzID0gSlNPTi5wYXJzZShjaG9pY2UpO1xyXG4gICAgICAgIHRoaXMuc2V0Rm9ybUNvbnRyb2xWYWx1ZShcclxuICAgICAgICAgIHRoaXMucXVlc3Rpb24ubmFtZSxcclxuICAgICAgICAgIHRoaXMucXVlc3Rpb24uY2hvaWNlcy5maWx0ZXIoKGMpID0+IGMudmFsdWUgPT0ganNvbk9iamVjdC52YWx1ZSlbMF1cclxuICAgICAgICApO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc2V0Rm9ybUNvbnRyb2xWYWx1ZSh0aGlzLnF1ZXN0aW9uLm5hbWUsIHZhbHVlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbW9kaWZ5Q2FsZW5kYXJBdHRyaWJ1dGVzKCkge1xyXG4gICAgY29uc3QgaW5wdXRFbGVtZW50ID0gdGhpcy5wQ2FsZW5kYXIubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKFxyXG4gICAgICAncC1jYWxlbmRhciBbYXJpYS1jb250cm9sc10nXHJcbiAgICApO1xyXG4gICAgaW5wdXRFbGVtZW50LmZvckVhY2goKGVsZW1lbnQ6IEhUTUxJbnB1dEVsZW1lbnQpID0+IHtcclxuICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUoZWxlbWVudCwgJ2FyaWEtY29udHJvbHMnLCB0aGlzLnF1ZXN0aW9uLm5hbWUpO1xyXG4gICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZShlbGVtZW50LCAnYXJpYS1leHBhbmRlZCcsICdmYWxzZScpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRSZXF1aXJlZFZhbGlkYXRpb25NZXNzYWdlKCl7XHJcbiAgICBpZihsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImxhbmd1YWdlXCIpID09PSBcImVzXCIpe1xyXG4gICAgICByZXR1cm4gJ3JlcXVlcmlkbyc7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gJ3JlcXVpcmVkJztcclxuICAgIH1cclxuICB9XHJcbn0iLCI8ZGl2IFtmb3JtR3JvdXBdPVwiZm9ybVwiIFtpZF09XCIncXVlc3Rpb24tZGl2LScgKyBxdWVzdGlvbi5uYW1lXCI+XHJcbiAgPHAtZGlhbG9nICpuZ0lmPVwiZGlzcGxheVBvc2l0aW9uXCIgWyh2aXNpYmxlKV09XCJkaXNwbGF5UG9zaXRpb25cIiBbcG9zaXRpb25dPVwicG9zaXRpb25cIlxyXG4gICAgW21vZGFsXT1cInRydWVcIiBbYnJlYWtwb2ludHNdPVwieycxMjAwcHgnOiAnNjYwcHgnLCAnOTkycHgnOiAnNjYwcHgnLCAnNzY4cHgnOiAnNjYwcHgnLCAnNTc2cHgnOiAnMTAwdncnfVwiIFtzdHlsZV09XCJ7d2lkdGg6ICc0NXZ3J31cIlxyXG4gICAgW2Jhc2VaSW5kZXhdPVwiNTAwMFwiIFtkcmFnZ2FibGVdPVwiZmFsc2VcIiBbcmVzaXphYmxlXT1cImZhbHNlXCIgYXBwZW5kVG89XCJib2R5XCIgY2xvc2VPbkVzY2FwZT1cImZhbHNlXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJxdWVzdGlvbi50aXRsZVwiPlxyXG5cclxuICAgIDxoNCBjbGFzcz1cImhlYWRpbmcgaW9uLXBhZGRpbmctbGVmdFwiPlxyXG4gICAgICB7e3BvcFVwSGVhZGVyfX1cclxuICAgIDwvaDQ+XHJcbiAgICA8cD57e3BvcFVwVGV4dH19XHJcbiAgICA8L3A+XHJcbiAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiZm9vdGVyXCI+XHJcbiAgICAgIDxpb24tYnV0dG9uIHNoYXBlPVwicm91bmRcIiAqbmdJZj1cInBvcFVwTm9BY3Rpb25MYWJlbFwiIHNpemU9XCJzbWFsbFwiIHR5cGU9XCJzdWJtaXRcIiBmaWxsPVwib3V0bGluZVwiIChjbGljayk9XCJyZWplY3QoKVwiPlxyXG4gICAgICAgIHt7cG9wVXBOb0FjdGlvbkxhYmVsfX1cclxuICAgICAgPC9pb24tYnV0dG9uPlxyXG5cclxuICAgICAgPGlvbi1idXR0b24gc2hhcGU9XCJyb3VuZFwiICpuZ0lmPVwicG9wVXBZZXNBY3Rpb25MYWJlbFwiIHNpemU9XCJzbWFsbFwiIHR5cGU9XCJzdWJtaXRcIiBmaWxsPVwic29saWRcIiAoY2xpY2spPVwiYWNjZXB0KClcIj5cclxuICAgICAgICB7e3BvcFVwWWVzQWN0aW9uTGFiZWx9fVxyXG4gICAgICA8L2lvbi1idXR0b24+XHJcblxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICA8L3AtZGlhbG9nPlxyXG4gIDxkaXYgW25nU3R5bGVdPVwic2V0U3R5bGUocXVlc3Rpb24uaW5kZW50KVwiICpuZ0lmPVwiIWZvclNjcmVlblF1ZXN0aW9ubmFpcmVcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5cclxuICAgIDxsYWJlbCBbYXR0ci5mb3JdPVwicXVlc3Rpb24ubmFtZVwiICpuZ0lmPVwicXVlc3Rpb24uaW5kZW50PT09MSAmJiBxdWVzdGlvbi50eXBlIT0naHRtbCcgJiYgcXVlc3Rpb24udHlwZSE9J2hpZGRlbicgJiYgcXVlc3Rpb24udHlwZSE9J2xhYmVsJ1wiPlxyXG4gICAgICA8c3BhbiBbaW5uZXJIdG1sXT1cInF1ZXN0aW9uLnRpdGxlIHwgZHluYW1pY1RyYW5zbGF0ZTpkeW5hbWljUGFyYW0gfCB0cnVzdEh0bWxcIj48L3NwYW4+XHJcbiAgICA8L2xhYmVsPlxyXG4gIDwvZGl2PlxyXG5cclxuICA8ZGl2IFtuZ1N0eWxlXT1cInNldFN0eWxlKHF1ZXN0aW9uLmluZGVudClcIiBjbGFzcz1cImZvcm0tbGFiZWxcIlxyXG4gICAgKm5nSWY9XCJmb3JTY3JlZW5RdWVzdGlvbm5haXJlICYmIHF1ZXN0aW9uLmluZGVudD09PTEgJiYgcXVlc3Rpb24udHlwZSE9J2h0bWwnICYmIHF1ZXN0aW9uLnR5cGUhPSdoaWRkZW4nICYmIHF1ZXN0aW9uLmRlc2NyaXB0aW9uICYmIHF1ZXN0aW9uLnR5cGUhPSdzaW1wbGVjaGVja2JveCcgJiYgcXVlc3Rpb24udHlwZSE9J2xhYmVsJyAmJiBxdWVzdGlvbi50eXBlIT0nbGFiZWwtd2l0aC1vdmVybGF5J1wiPlxyXG4gICAgPGxhYmVsIFthdHRyLmZvcl09XCJxdWVzdGlvbi5uYW1lXCI+XHJcbiAgICA8c3BhbiBbaW5uZXJIdG1sXT1cInF1ZXN0aW9uLnRpdGxlIHwgZHluYW1pY1RyYW5zbGF0ZTpkeW5hbWljUGFyYW0gfCB0cnVzdEh0bWxcIj48L3NwYW4+XHJcbiAgPC9sYWJlbD5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdiBbbmdTdHlsZV09XCJzZXRTdHlsZShxdWVzdGlvbi5pbmRlbnQpXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCJcclxuICAgICpuZ0lmPVwiZm9yU2NyZWVuUXVlc3Rpb25uYWlyZSAmJiBxdWVzdGlvbi5jdXN0b21UYWcgJiYgKHF1ZXN0aW9uLmN1c3RvbVRhZyE9J2NvbXBvbmVudCcgfHwgKHF1ZXN0aW9uLmN1c3RvbVRhZz09J2NvbXBvbmVudCcgJiYgc2hvd0xhYmVsRm9yQ3VzdG9tQ29tcG9uZW50KCkpKSAmJiBxdWVzdGlvbi5pbmRlbnQ9PT0xICYmIHF1ZXN0aW9uLnR5cGUhPSdodG1sJyAmJiBxdWVzdGlvbi50eXBlIT0naGlkZGVuJyAmJiAhcXVlc3Rpb24uZGVzY3JpcHRpb24gJiYgcXVlc3Rpb24udHlwZSE9J2xhYmVsJyAmJiBxdWVzdGlvbi50eXBlIT0nc2ltcGxlY2hlY2tib3gnXCI+XHJcbiAgICA8bGFiZWwgW2F0dHIuZm9yXT1cInF1ZXN0aW9uLm5hbWVcIj5cclxuICAgIDxzcGFuIFtpbm5lckh0bWxdPVwicXVlc3Rpb24udGl0bGUgfCBkeW5hbWljVHJhbnNsYXRlOmR5bmFtaWNQYXJhbSB8IHRydXN0SHRtbFwiPjwvc3Bhbj5cclxuICA8L2xhYmVsPlxyXG4gIDwvZGl2PlxyXG5cclxuICA8ZGl2IFtuZ1N0eWxlXT1cInNldFN0eWxlKHF1ZXN0aW9uLmluZGVudClcIiBjbGFzcz1cImZvcm0tbGFiZWxcIlxyXG4gICAgKm5nSWY9XCJmb3JTY3JlZW5RdWVzdGlvbm5haXJlICYmICFxdWVzdGlvbi5jdXN0b21UYWcgICYmIHF1ZXN0aW9uLmluZGVudD09PTEgJiYgcXVlc3Rpb24udHlwZSE9J2h0bWwnICYmIHF1ZXN0aW9uLnR5cGUhPSdoaWRkZW4nICYmICFxdWVzdGlvbi5kZXNjcmlwdGlvbiAmJiBxdWVzdGlvbi50eXBlIT0nc2ltcGxlY2hlY2tib3gnICYmIHF1ZXN0aW9uLnR5cGUhPSdsYWJlbCcgJiYgcXVlc3Rpb24udHlwZSE9J2xhYmVsLXdpdGgtb3ZlcmxheSdcIj5cclxuICAgIDxsYWJlbCBbYXR0ci5mb3JdPVwicXVlc3Rpb24ubmFtZVwiPlxyXG4gICAgPHNwYW4gW2lubmVySHRtbF09XCJxdWVzdGlvbi50aXRsZSB8IGR5bmFtaWNUcmFuc2xhdGU6ZHluYW1pY1BhcmFtIHwgdHJ1c3RIdG1sXCI+PC9zcGFuPlxyXG4gIDwvbGFiZWw+XHJcbiAgPC9kaXY+XHJcblxyXG5cclxuXHJcbiAgPGRpdiAqbmdJZj1cInF1ZXN0aW9uLmN1c3RvbVRhZyAmJiBxdWVzdGlvbi5jdXN0b21UYWc9PT0nY29tcG9uZW50JyAmJiBxdWVzdGlvbi50eXBlIT0naHRtbCcgJiYgIXF1ZXN0aW9uLmRlc2NyaXB0aW9uXCI+XHJcbiAgICA8YXBwLWVtcGxveWVyLWdyaWQgW2Zvcm1Db250cm9sTmFtZV09XCJxdWVzdGlvbi5uYW1lXCIgW2Zvcm1dPVwiZm9ybVwiIFtkeW5hbWljUGFyYW1dPVwiZHluYW1pY1BhcmFtXCJcclxuICAgICAgKm5nSWY9XCJxdWVzdGlvbi5jb21wb25lbnROYW1lPT09J2FwcC1lbXBsb3llci1ncmlkJ1wiIChtb2RlbERpc3BsYXkpPVwib25Nb2RlbERpc3BsYXkoJGV2ZW50KVwiPjwvYXBwLWVtcGxveWVyLWdyaWQ+XHJcbiAgICA8YXBwLWxlZ2FsLWRpc2NsYWltYXIgKm5nSWY9XCJxdWVzdGlvbi5jb21wb25lbnROYW1lPT09J2FwcC1sZWdhbC1kaXNjbGFpbWFyJ1wiXHJcbiAgICAgIFtjb21wb25lbnREYXRhXT1cInF1ZXN0aW9uLmNvbXBvbmVudERhdGFcIiAoYWNjZXB0ZWQpPVwib25BY2NlcHRlZCgkZXZlbnQpXCIgW3F1ZXN0aW9uXT1cInF1ZXN0aW9uXCIgW2Zvcm1dPVwiZm9ybVwiPlxyXG4gICAgPC9hcHAtbGVnYWwtZGlzY2xhaW1hcj5cclxuICAgIDxtb25leS1leHBlY3QgKm5nSWY9XCJxdWVzdGlvbi5jb21wb25lbnROYW1lPT09J21vbmV5LWV4cGVjdCdcIj48L21vbmV5LWV4cGVjdD5cclxuICAgIDxhcHAtY2FwdGNoYSBbZm9ybUNvbnRyb2xOYW1lXT1cInF1ZXN0aW9uLm5hbWVcIiAqbmdJZj1cInF1ZXN0aW9uLmNvbXBvbmVudE5hbWU9PT0nYXBwLWNhcHRjaGEnXCI+PC9hcHAtY2FwdGNoYT5cclxuXHJcbiAgICA8YXBwLWZpbGUtdXBsb2FkZXIgW2Zvcm1Db250cm9sTmFtZV09XCJxdWVzdGlvbi5uYW1lXCIgKm5nSWY9XCJxdWVzdGlvbi5jb21wb25lbnROYW1lPT09J2FwcC1maWxlLXVwbG9hZGVyJ1wiPlxyXG4gICAgPC9hcHAtZmlsZS11cGxvYWRlcj5cclxuICAgIDxhcHAtYWRkcmVzcyBbZm9ybUNvbnRyb2xOYW1lXT1cInF1ZXN0aW9uLm5hbWVcIiBbZnJvbVBvcHVwXT1cImZhbHNlXCIgW2NvdW50eVJlcXVpcmVkXT1cInF1ZXN0aW9uLmNvdW50eVJlcXVpcmVkXCJcclxuICAgICAgKm5nSWY9XCJxdWVzdGlvbi5jb21wb25lbnROYW1lPT09J2FwcC1hZGRyZXNzJ1wiICNhZGRyZXNzIFtpbnB1dElkXT1cInF1ZXN0aW9uLm5hbWVcIj4gPC9hcHAtYWRkcmVzcz5cclxuICAgIDxhcHAtYmFuay1kZXRhaWxzIFtmb3JtQ29udHJvbE5hbWVdPVwicXVlc3Rpb24ubmFtZVwiICpuZ0lmPVwicXVlc3Rpb24uY29tcG9uZW50TmFtZT09PSdhcHAtYmFuay1kZXRhaWxzJ1wiICNiYW5rZHRscz5cclxuICAgIDwvYXBwLWJhbmstZGV0YWlscz5cclxuICAgIDxhcHAtcmVxdWFsaWZ5LWxpZnQtcHJldmlvdXMtaXNzdWVzICpuZ0lmPVwicXVlc3Rpb24uY29tcG9uZW50TmFtZT09PSdhcHAtcmVxdWFsaWZ5LWxpZnQtcHJldmlvdXMtaXNzdWVzJ1wiXHJcbiAgICBbZm9ybUNvbnRyb2xOYW1lXT1cInF1ZXN0aW9uLm5hbWVcIiBbY29tcG9uZW50RGF0YV09XCJxdWVzdGlvbi5jb21wb25lbnREYXRhXCIgW2Zvcm1dPVwiZm9ybVwiID5cclxuICAgIDwvYXBwLXJlcXVhbGlmeS1saWZ0LXByZXZpb3VzLWlzc3Vlcz4gXHJcbiAgICA8YXBwLWRlcGVuZGVudC1ncmlkIFtmb3JtQ29udHJvbE5hbWVdPVwicXVlc3Rpb24ubmFtZVwiICpuZ0lmPVwicXVlc3Rpb24uY29tcG9uZW50TmFtZT09PSdhcHAtZGVwZW5kZW50LWdyaWQnXCI+PC9hcHAtZGVwZW5kZW50LWdyaWQ+XHJcbiAgICA8YXBwLXdlZWtseS1jZXJ0LWVtcGxveWVyLWdyaWQgI3djRW1wbG95ZXJHcmlkIFtkeW5hbWljUGFyYW1dPVwiZHluYW1pY1BhcmFtXCIgW2Zvcm1Db250cm9sTmFtZV09XCJxdWVzdGlvbi5uYW1lXCIgKm5nSWY9XCJxdWVzdGlvbi5jb21wb25lbnROYW1lPT09J2FwcC13ZWVrbHktY2VydC1lbXBsb3llci1ncmlkJ1wiPjwvYXBwLXdlZWtseS1jZXJ0LWVtcGxveWVyLWdyaWQ+XHJcbiAgICA8YXBwLXNlYXJjaC1lbXBsb3llciBbZm9ybUNvbnRyb2xOYW1lXT1cInF1ZXN0aW9uLm5hbWVcIiBlbXBUeXBlPVwiUkVHXCIgKG9uRm91bmQpPVwic2V0RW1wbG95ZXIoJGV2ZW50KVwiIFxyXG4gICAgKG9uRW1wdHkpPVwicmVzZXRFbXBsb3llcigpXCIgKm5nSWY9XCJxdWVzdGlvbi5jb21wb25lbnROYW1lPT09J2FwcC1zZWFyY2gtZW1wbG95ZXInXCI+PC9hcHAtc2VhcmNoLWVtcGxveWVyPlxyXG4gICAgPGFwcC1hZGQtcGFydGljaXBhbnQgW2Zvcm1Db250cm9sTmFtZV09XCJxdWVzdGlvbi5uYW1lXCIgKm5nSWY9XCJxdWVzdGlvbi5jb21wb25lbnROYW1lPT09J2FwcC1hZGQtcGFydGljaXBhbnQnXCI+IDwvYXBwLWFkZC1wYXJ0aWNpcGFudD5cclxuICAgIDxhcHAtYWRkLXBheW1lbnQgW3BvdGVudGlhbElzc3VlSWRdPVwicG90ZW50aWFsSXNzdWVJZFwiIFtmb3JtQ29udHJvbE5hbWVdPVwicXVlc3Rpb24ubmFtZVwiICpuZ0lmPVwicXVlc3Rpb24uY29tcG9uZW50TmFtZT09PSdhcHAtYWRkLXBheW1lbnQnXCI+PC9hcHAtYWRkLXBheW1lbnQ+XHJcbiAgICA8YXBwLWxpbmsgW2lzUmVxdWlyZWRdPVwicXVlc3Rpb24uaXNSZXF1aXJlZFwiIFtmb3JtQ29udHJvbE5hbWVdPVwicXVlc3Rpb24ubmFtZVwiICpuZ0lmPVwicXVlc3Rpb24uY29tcG9uZW50TmFtZT09PSdhcHAtbGluaydcIiBbdGV4dF09XCJsaW5rQ29tcG9uZW50RGF0YT8udGV4dFwiIFt1cmldPVwibGlua0NvbXBvbmVudERhdGE/LnVyaVwiIFtleHRlcm5hbFVybF09XCJsaW5rQ29tcG9uZW50RGF0YT8uZXh0ZXJuYWxVcmxcIj48L2FwcC1saW5rPlxyXG4gICAgPGFwcC1zaWduLXNzbiBbaXNSZXF1aXJlZF09XCJxdWVzdGlvbi5pc1JlcXVpcmVkXCIgW2Zvcm1Db250cm9sTmFtZV09XCJxdWVzdGlvbi5uYW1lXCIgKm5nSWY9XCJxdWVzdGlvbi5jb21wb25lbnROYW1lPT09J2FwcC1zaWduLXNzbidcIiBbaW5wdXRJZF09XCJxdWVzdGlvbi5uYW1lXCI+PC9hcHAtc2lnbi1zc24+XHJcbiAgICA8YXBwLWpvYi10aXRsZSBbY29udHJvbF09XCJmb3JtLmNvbnRyb2xzW3F1ZXN0aW9uLm5hbWVdXCIgICpuZ0lmPVwicXVlc3Rpb24uY29tcG9uZW50TmFtZT09PSdhcHAtam9iLXRpdGxlJ1wiICNqb2JUaXRsZT4gPC9hcHAtam9iLXRpdGxlPlxyXG4gIDwvZGl2PlxyXG5cclxuICA8ZGl2ICpuZ0lmPVwicXVlc3Rpb24uaW5kZW50IT0xICYmIHF1ZXN0aW9uLnR5cGUhPSdodG1sJyAmJiBxdWVzdGlvbi50eXBlIT0nbGFiZWwnICYmIHF1ZXN0aW9uLnR5cGUhPSdoaWRkZW4nXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCIgW25nU3R5bGVdPVwic2V0U3R5bGUocXVlc3Rpb24uaW5kZW50KVwiPlxyXG4gICAgPHNwYW4gW2lubmVySHRtbF09XCJxdWVzdGlvbi50aXRsZSB8IGR5bmFtaWNUcmFuc2xhdGU6ZHluYW1pY1BhcmFtIHwgdHJ1c3RIdG1sXCI+PC9zcGFuPlxyXG4gIDwvZGl2PlxyXG5cclxuICA8ZGl2ICpuZ0lmPVwicXVlc3Rpb24udHlwZT09PSdodG1sJ1wiIHN0eWxlPVwiZGlzcGxheTogZmxleDtcIj5cclxuICAgIDxkaXYgIFtpbm5lckhUTUxdPVwicXVlc3Rpb24uaHRtbCB8IGR5bmFtaWNUcmFuc2xhdGU6ZHluYW1pY1BhcmFtIHwgdHJ1c3RIdG1sXCJcclxuICAgICAgc3R5bGU9XCJjb2xvcjp2YXIoLS1pb24tY29sb3ItbWVkaXVtLWdyYXkpOyBwYWRkaW5nLXRvcDogMjBweDtcIiBjbGFzcz1cImhlYWRpbmdcIj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiAqbmdJZj1cInF1ZXN0aW9uLmRlc2NyaXB0aW9uXCIgc3R5bGU9XCJwYWRkaW5nLWxlZnQ6IDhweDsgcGFkZGluZy10b3A6MTNweFwiPlxyXG4gICAgICA8YXBwLW92ZXJsYXktaW5mbyBbb3ZlcmxheVRleHRdPVwicXVlc3Rpb24uZGVzY3JpcHRpb24gfCBkeW5hbWljVHJhbnNsYXRlOmR5bmFtaWNQYXJhbVwiPjwvYXBwLW92ZXJsYXktaW5mbz5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIFxyXG4gIDxkaXYgW25nU3dpdGNoXT1cInF1ZXN0aW9uLnR5cGVcIj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIid0ZXh0J1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyXCIgc3R5bGU9XCJkaXNwbGF5OiBmbGV4O1wiPlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJxdWVzdGlvbi5pbnB1dFR5cGUgJiYgcXVlc3Rpb24uaW5wdXRUeXBlPT09J2RhdGUnICYmIHF1ZXN0aW9uLm5hbWUgJiYgcXVlc3Rpb24ubmFtZSE9J2RvYidcIj5cclxuICAgICAgICAgIDxkaXYgW25nU3R5bGVdPVwic2V0U3R5bGUocXVlc3Rpb24uaW5kZW50KVwiICNwQ2FsZW5kYXI+XHJcbiAgICAgICAgICAgIDxwLWNhbGVuZGFyIFtmb3JtQ29udHJvbE5hbWVdPVwicXVlc3Rpb24ubmFtZVwiIFtpbnB1dElkXT1cInF1ZXN0aW9uLm5hbWVcIiBbbW9udGhOYXZpZ2F0b3JdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgW3llYXJOYXZpZ2F0b3JdPVwidHJ1ZVwiIHllYXJSYW5nZT1cIjE5MDE6MjA5OVwiIFtzaG93SWNvbl09XCJ0cnVlXCIgW21pbkRhdGVdPVwic2hvd01pbkRhdGUgPyBtaW5EYXRlIDogbnVsbFwiXHJcbiAgICAgICAgICAgICAgW21heERhdGVdPVwic2hvd01heERhdGUgPyBtYXhEYXRlIDogbnVsbFwiIGRhdGVGb3JtYXQ9XCJtbS9kZC95eVwiIGFwcGVuZFRvPVwiYm9keVwiIGRhdGFUeXBlPVwic3RyaW5nXCJcclxuICAgICAgICAgICAgICAob25CbHVyKT1cInZhbGlkYXRlKHF1ZXN0aW9uKVwiIChvblNlbGVjdCk9XCJ2YWxpZGF0ZShxdWVzdGlvbilcIiBwbGFjZWhvbGRlcj1cIm1tL2RkL3l5eXlcIiBbc2hvd09uRm9jdXNdPVwiZmFsc2VcIiBcclxuICAgICAgICAgICAgICAob25JbnB1dCk9XCJkYXRlSW5wdXQoJGV2ZW50KVwiIFtpY29uQXJpYUxhYmVsXT1cInF1ZXN0aW9uLnRpdGxlXCI+XHJcbiAgICAgICAgICAgIDwvcC1jYWxlbmRhcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwicXVlc3Rpb24uaW5wdXRUeXBlICYmIHF1ZXN0aW9uLmlucHV0VHlwZT09PSdkYXRlJyAmJiBxdWVzdGlvbi5uYW1lICYmIHF1ZXN0aW9uLm5hbWU9PT0nZG9iJ1wiPlxyXG4gICAgICAgICAgPGRpdiBbbmdTdHlsZV09XCJzZXRTdHlsZShxdWVzdGlvbi5pbmRlbnQpXCIgI3BDYWxlbmRhcj5cclxuICAgICAgICAgICAgPHAtY2FsZW5kYXIgW2Zvcm1Db250cm9sTmFtZV09XCJxdWVzdGlvbi5uYW1lXCIgW2lucHV0SWRdPVwicXVlc3Rpb24ubmFtZVwiIFttb250aE5hdmlnYXRvcl09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICBbeWVhck5hdmlnYXRvcl09XCJ0cnVlXCIgeWVhclJhbmdlPVwiMTkwMToyMDUwXCIgW3Nob3dJY29uXT1cInRydWVcIiBbbWluRGF0ZV09XCJtaW5EYXRlRE9CXCJcclxuICAgICAgICAgICAgICBbbWF4RGF0ZV09XCJtYXhEYXRlRE9CXCIgZGF0ZUZvcm1hdD1cIm1tL2RkL3l5XCIgYXBwZW5kVG89XCJib2R5XCIgZGF0YVR5cGU9XCJzdHJpbmdcIlxyXG4gICAgICAgICAgICAgIChvbkJsdXIpPVwiYmx1ckRPQihxdWVzdGlvbilcIiAob25TZWxlY3QpPVwidmFsaWRhdGUocXVlc3Rpb24pXCIgcGxhY2Vob2xkZXI9XCJtbS9kZC95eXl5XCIgW3Nob3dPbkZvY3VzXT1cImZhbHNlXCIgXHJcbiAgICAgICAgICAgICAgKG9uSW5wdXQpPVwiZGF0ZUlucHV0KCRldmVudClcIiBbaWNvbkFyaWFMYWJlbF09XCJxdWVzdGlvbi50aXRsZVwiPlxyXG4gICAgICAgICAgICA8L3AtY2FsZW5kYXI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICBcclxuXHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgKm5nSWY9XCJxdWVzdGlvbi5pbnB1dFR5cGUgJiYgcXVlc3Rpb24uaW5wdXRUeXBlPT09J3RleHQnICYmIHF1ZXN0aW9uLmN1c3RvbVRhZyAmJiBxdWVzdGlvbi5jdXN0b21UYWc9PT0nc3NuJ1wiXHJcbiAgICAgICAgICBbbmdTdHlsZV09XCJzZXRTdHlsZShxdWVzdGlvbi5pbmRlbnQpXCI+XHJcbiAgICAgICAgICA8cC1pbnB1dE1hc2sgYXV0b2NvbXBsZXRlPVwib2ZmXCIgIFtjbGFzcy5oaWRlLWNvbnRlbnRdPVwibWFza0NsYXNzXCIgbWFzaz1cIjk5OS05OS05OTk5XCIgW2lucHV0SWRdPVwicXVlc3Rpb24ubmFtZVwiIFtmb3JtQ29udHJvbE5hbWVdPVwicXVlc3Rpb24ubmFtZVwiXHJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiOTk5LTk5LTk5OTlcIiAob25Db21wbGV0ZSk9XCJ2YWxpZGF0ZShxdWVzdGlvbilcIiAob25Gb2N1cyk9XCJ1bm1hc2soJGV2ZW50KVwiIChvbkJsdXIpPVwibWFzaygkZXZlbnQpXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJxdWVzdGlvbi50aXRsZVwiPlxyXG4gICAgICAgICAgPC9wLWlucHV0TWFzaz5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgKm5nSWY9XCJxdWVzdGlvbi5pbnB1dFR5cGUgJiYgcXVlc3Rpb24uaW5wdXRUeXBlPT09J3RleHQnICYmIHF1ZXN0aW9uLmN1c3RvbVRhZyAmJiBxdWVzdGlvbi5jdXN0b21UYWc9PT0nZWFuJ1wiXHJcbiAgICAgICAgICBbbmdTdHlsZV09XCJzZXRTdHlsZShxdWVzdGlvbi5pbmRlbnQpXCI+XHJcbiAgICAgICAgICA8cC1pbnB1dE1hc2sgYXV0b2NvbXBsZXRlPVwib2ZmXCIgIG1hc2s9XCI5OS05OTk5OS05LTk5XCIgW2lucHV0SWRdPVwicXVlc3Rpb24ubmFtZVwiIFtmb3JtQ29udHJvbE5hbWVdPVwicXVlc3Rpb24ubmFtZVwiXHJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiOTktOTk5OTktOS05OVwiIFt2YWx1ZV09XCI4MS0wMDU4Ni0wLTAxXCIgKG9uQ29tcGxldGUpPVwidmFsaWRhdGUocXVlc3Rpb24pXCI+XHJcbiAgICAgICAgICA8L3AtaW5wdXRNYXNrPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAqbmdJZj1cInF1ZXN0aW9uLmlucHV0VHlwZSAmJiBxdWVzdGlvbi5pbnB1dFR5cGU9PT0ndGV4dCcgJiYgcXVlc3Rpb24uY3VzdG9tVGFnICYmIHF1ZXN0aW9uLmN1c3RvbVRhZz09PSdkdWVhbXQnXCJcclxuICAgICAgICAgIFtuZ1N0eWxlXT1cInNldFN0eWxlKHF1ZXN0aW9uLmluZGVudClcIj5cclxuICAgICAgICAgIDxwLWlucHV0TnVtYmVyIFtpbnB1dElkXT1cInF1ZXN0aW9uLm5hbWVcIiBbZm9ybUNvbnRyb2xOYW1lXT1cInF1ZXN0aW9uLm5hbWVcIiBtb2RlPVwiZGVjaW1hbFwiIGxvY2FsZT1cImVuLVVTXCJcclxuICAgICAgICAgICAgW21pbkZyYWN0aW9uRGlnaXRzXT1cIjJcIiBbYXJpYUxhYmVsXT1cInF1ZXN0aW9uLnRpdGxlXCI+PC9wLWlucHV0TnVtYmVyPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuXHJcblxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgICpuZ0lmPVwicXVlc3Rpb24uaW5wdXRUeXBlICYmIHF1ZXN0aW9uLmlucHV0VHlwZT09PSd0ZXh0JyAmJiAoIXF1ZXN0aW9uLmN1c3RvbVRhZyAgfHwgIHF1ZXN0aW9uLmN1c3RvbVRhZz09PSdPcHRpb25hbCcpICYmICFxdWVzdGlvbi5pc1JlcXVpcmVkXCJcclxuICAgICAgICAgIFtuZ1N0eWxlXT1cInNldFN0eWxlKHF1ZXN0aW9uLmluZGVudClcIj5cclxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiICpuZ0lmPVwicXVlc3Rpb24uc2l6ZSAmJiBxdWVzdGlvbi5tYXhMZW5ndGhcIlxyXG4gICAgICAgICAgICBbbWF4TGVuZ3RoXT1cInF1ZXN0aW9uLm1heExlbmd0aFwiIHBsYWNlaG9sZGVyPSd7e1wiY29tbW9uLm9wdGlvbmFsXCIgfCB0cmFuc2xhdGV9fScgW2lkXT1cInF1ZXN0aW9uLm5hbWVcIiBwSW5wdXRUZXh0XHJcbiAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwicXVlc3Rpb24ubmFtZVwiIFthdHRyLmFyaWEtbGFiZWxdPVwicXVlc3Rpb24udGl0bGVcIi8+XHJcbiAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiAqbmdJZj1cInF1ZXN0aW9uLnNpemUgJiYgIXF1ZXN0aW9uLm1heExlbmd0aFwiICBwbGFjZWhvbGRlcj0ne3tcImNvbW1vbi5vcHRpb25hbFwiIHwgdHJhbnNsYXRlfX0nXHJcbiAgICAgICAgICAgIFtpZF09XCJxdWVzdGlvbi5uYW1lXCIgcElucHV0VGV4dCBbZm9ybUNvbnRyb2xOYW1lXT1cInF1ZXN0aW9uLm5hbWVcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInF1ZXN0aW9uLnRpdGxlXCIvPlxyXG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgKm5nSWY9XCIhcXVlc3Rpb24uc2l6ZSAmJiBxdWVzdGlvbi5tYXhMZW5ndGhcIiBbbWF4TGVuZ3RoXT1cInF1ZXN0aW9uLm1heExlbmd0aFwiXHJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPSd7e1wiY29tbW9uLm9wdGlvbmFsXCIgfCB0cmFuc2xhdGV9fScgW2lkXT1cInF1ZXN0aW9uLm5hbWVcIiBwSW5wdXRUZXh0IFtmb3JtQ29udHJvbE5hbWVdPVwicXVlc3Rpb24ubmFtZVwiIC8+XHJcbiAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiAqbmdJZj1cIiFxdWVzdGlvbi5zaXplICYmICFxdWVzdGlvbi5tYXhMZW5ndGhcIiBbaWRdPVwicXVlc3Rpb24ubmFtZVwiIHBJbnB1dFRleHRcclxuICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJxdWVzdGlvbi5uYW1lXCIgcGxhY2Vob2xkZXI9J3t7XCJjb21tb24ub3B0aW9uYWxcIiB8IHRyYW5zbGF0ZX19JyBbYXR0ci5hcmlhLWxhYmVsXT1cInF1ZXN0aW9uLnRpdGxlXCIvPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8IS0tVXNlciBOYW1lLS0+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cInF1ZXN0aW9uLmlucHV0VHlwZSAmJiBxdWVzdGlvbi5pbnB1dFR5cGU9PT0ndGV4dCcgJiYgIXF1ZXN0aW9uLmN1c3RvbVRhZyAmJiBxdWVzdGlvbi5pc1JlcXVpcmVkICAmJiAhY2hlY2tGbG93S2V5KClcIlxyXG4gICAgICAgICAgW25nU3R5bGVdPVwic2V0U3R5bGUocXVlc3Rpb24uaW5kZW50KVwiPlxyXG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgKm5nSWY9XCJxdWVzdGlvbi5zaXplICYmIHF1ZXN0aW9uLm1heExlbmd0aFwiIFxyXG4gICAgICAgICAgICBbbWF4TGVuZ3RoXT1cInF1ZXN0aW9uLm1heExlbmd0aFwiIFtpZF09XCJxdWVzdGlvbi5uYW1lXCIgcElucHV0VGV4dCBbZm9ybUNvbnRyb2xOYW1lXT1cInF1ZXN0aW9uLm5hbWVcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInF1ZXN0aW9uLnRpdGxlXCIgXHJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJxdWVzdGlvbi5wbGFjZWhvbGRlciA/IHF1ZXN0aW9uLnBsYWNlaG9sZGVyIDogJydcIi8+XHJcbiAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiAqbmdJZj1cInF1ZXN0aW9uLnNpemUgJiYgIXF1ZXN0aW9uLm1heExlbmd0aFwiICBbaWRdPVwicXVlc3Rpb24ubmFtZVwiXHJcbiAgICAgICAgICAgIHBJbnB1dFRleHQgW2Zvcm1Db250cm9sTmFtZV09XCJxdWVzdGlvbi5uYW1lXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJxdWVzdGlvbi50aXRsZVwiIFtwbGFjZWhvbGRlcl09XCJxdWVzdGlvbi5wbGFjZWhvbGRlciA/IHF1ZXN0aW9uLnBsYWNlaG9sZGVyIDogJydcIi8+XHJcbiAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiAqbmdJZj1cIiFxdWVzdGlvbi5zaXplICYmIHF1ZXN0aW9uLm1heExlbmd0aFwiIFttYXhMZW5ndGhdPVwicXVlc3Rpb24ubWF4TGVuZ3RoXCJcclxuICAgICAgICAgICAgW2lkXT1cInF1ZXN0aW9uLm5hbWVcIiBwSW5wdXRUZXh0IFtmb3JtQ29udHJvbE5hbWVdPVwicXVlc3Rpb24ubmFtZVwiIFthdHRyLmFyaWEtbGFiZWxdPVwicXVlc3Rpb24udGl0bGVcIiBbcGxhY2Vob2xkZXJdPVwicXVlc3Rpb24ucGxhY2Vob2xkZXIgPyBxdWVzdGlvbi5wbGFjZWhvbGRlciA6ICcnXCIvPlxyXG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgKm5nSWY9XCIhcXVlc3Rpb24uc2l6ZSAmJiAhcXVlc3Rpb24ubWF4TGVuZ3RoXCIgW2lkXT1cInF1ZXN0aW9uLm5hbWVcIiBwSW5wdXRUZXh0XHJcbiAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwicXVlc3Rpb24ubmFtZVwiIFthdHRyLmFyaWEtbGFiZWxdPVwicXVlc3Rpb24udGl0bGVcIiBbcGxhY2Vob2xkZXJdPVwicXVlc3Rpb24ucGxhY2Vob2xkZXIgPyBxdWVzdGlvbi5wbGFjZWhvbGRlciA6ICcnXCIvPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIFxyXG5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwicXVlc3Rpb24uaW5wdXRUeXBlICYmIHF1ZXN0aW9uLmlucHV0VHlwZT09PSd0ZXh0JyAmJiAhcXVlc3Rpb24uY3VzdG9tVGFnICYmIHF1ZXN0aW9uLmlzUmVxdWlyZWQgJiYgY2hlY2tGbG93S2V5KClcIlxyXG4gICAgICAgIFtuZ1N0eWxlXT1cInNldFN0eWxlKHF1ZXN0aW9uLmluZGVudClcIj5cclxuICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiAqbmdJZj1cInF1ZXN0aW9uLnNpemUgJiYgcXVlc3Rpb24ubWF4TGVuZ3RoXCIgXHJcbiAgICAgICAgICBbbWF4TGVuZ3RoXT1cInF1ZXN0aW9uLm1heExlbmd0aFwiIFtpZF09XCJxdWVzdGlvbi5uYW1lXCIgcElucHV0VGV4dCBbZm9ybUNvbnRyb2xOYW1lXT1cInF1ZXN0aW9uLm5hbWVcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInF1ZXN0aW9uLnRpdGxlXCIgW2Rpc2FibGVkXT1cIiFwaG9uZVZlcmlmaWVkXCIgW2F1dG9jb21wbGV0ZV09XCJxdWVzdGlvbj8ubmFtZS5pbmNsdWRlcygnc2VjQW5zJyk/J29mZic6ICdvbidcIi8+XHJcbiAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgKm5nSWY9XCJxdWVzdGlvbi5zaXplICYmICFxdWVzdGlvbi5tYXhMZW5ndGhcIiAgW2lkXT1cInF1ZXN0aW9uLm5hbWVcIlxyXG4gICAgICAgICAgcElucHV0VGV4dCBbZm9ybUNvbnRyb2xOYW1lXT1cInF1ZXN0aW9uLm5hbWVcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInF1ZXN0aW9uLnRpdGxlXCIgW2Rpc2FibGVkXT1cIiFwaG9uZVZlcmlmaWVkXCIvPlxyXG4gICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiICpuZ0lmPVwiIXF1ZXN0aW9uLnNpemUgJiYgcXVlc3Rpb24ubWF4TGVuZ3RoXCIgW21heExlbmd0aF09XCJxdWVzdGlvbi5tYXhMZW5ndGhcIlxyXG4gICAgICAgICAgW2lkXT1cInF1ZXN0aW9uLm5hbWVcIiBwSW5wdXRUZXh0IFtmb3JtQ29udHJvbE5hbWVdPVwicXVlc3Rpb24ubmFtZVwiIFthdHRyLmFyaWEtbGFiZWxdPVwicXVlc3Rpb24udGl0bGVcIiBbZGlzYWJsZWRdPVwiIXBob25lVmVyaWZpZWRcIi8+XHJcbiAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgKm5nSWY9XCIhcXVlc3Rpb24uc2l6ZSAmJiAhcXVlc3Rpb24ubWF4TGVuZ3RoXCIgW2lkXT1cInF1ZXN0aW9uLm5hbWVcIiAgcElucHV0VGV4dFxyXG4gICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJxdWVzdGlvbi5uYW1lXCIgIFthdHRyLmFyaWEtbGFiZWxdPVwicXVlc3Rpb24udGl0bGVcIiBbZGlzYWJsZWRdPVwiIXBob25lVmVyaWZpZWRcIi8+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBcclxuICAgICAgICAgICpuZ0lmPVwicXVlc3Rpb24uaW5wdXRUeXBlICAmJiBxdWVzdGlvbi5pbnB1dFR5cGU9PT0ndGV4dCdcclxuICAgICAgICAgICAgICAgICAgJiYgcXVlc3Rpb24uY3VzdG9tVGFnICAmJiBxdWVzdGlvbi5jdXN0b21UYWcuaW5jbHVkZXMoJ2ZpcnN0TmFtZScpICYmIGNoZWNrRmxvd0tleSgpIFwiPlxyXG4gICAgICAgICAgPGRpdiBbbmdTdHlsZV09XCJzZXRTdHlsZShxdWVzdGlvbi5pbmRlbnQpXCI+XHJcbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIFttYXhMZW5ndGhdPVwicXVlc3Rpb24ubWF4TGVuZ3RoXCIgW2lkXT1cInF1ZXN0aW9uLm5hbWVcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInF1ZXN0aW9uLnRpdGxlXCIgcElucHV0VGV4dCBbZm9ybUNvbnRyb2xOYW1lXT1cInF1ZXN0aW9uLm5hbWVcIiAgW2F0dHIuYXJpYS1sYWJlbF09XCJxdWVzdGlvbi50aXRsZVwiLz5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgXHJcbiAgICAgICAgKm5nSWY9XCJxdWVzdGlvbi5pbnB1dFR5cGUgICYmIHF1ZXN0aW9uLmlucHV0VHlwZT09PSd0ZXh0J1xyXG4gICAgICAgICAgICAgICAgJiYgcXVlc3Rpb24uY3VzdG9tVGFnICAmJiBxdWVzdGlvbi5jdXN0b21UYWcuaW5jbHVkZXMoJ2xhc3ROYW1lJykgJiYgY2hlY2tGbG93S2V5KCkgXCI+XHJcbiAgICAgICAgPGRpdiBbbmdTdHlsZV09XCJzZXRTdHlsZShxdWVzdGlvbi5pbmRlbnQpXCI+XHJcbiAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiAgW21heExlbmd0aF09XCJxdWVzdGlvbi5tYXhMZW5ndGhcIiBbaWRdPVwicXVlc3Rpb24ubmFtZVwiIFthdHRyLmFyaWEtbGFiZWxdPVwicXVlc3Rpb24udGl0bGVcIiBwSW5wdXRUZXh0IFtmb3JtQ29udHJvbE5hbWVdPVwicXVlc3Rpb24ubmFtZVwiICBbYXR0ci5hcmlhLWxhYmVsXT1cInF1ZXN0aW9uLnRpdGxlXCIvPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiAqbmdJZj1cIiFxdWVzdGlvbi5pbnB1dFR5cGUgJiYgcXVlc3Rpb24uY3VzdG9tVGFnICYmICAhcXVlc3Rpb24uY3VzdG9tVGFnLmluY2x1ZGVzKCdwaG9uZScpXCJcclxuICAgICAgICAgIFtuZ1N0eWxlXT1cInsncGFkZGluZy1sZWZ0LnB4JzogcXVlc3Rpb24uaW5kZW50KjEwfVwiIFtuZ1N0eWxlXT1cInNldFN0eWxlKHF1ZXN0aW9uLmluZGVudClcIj5cclxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIFtpZF09XCJxdWVzdGlvbi5uYW1lXCIgcElucHV0VGV4dCBbZm9ybUNvbnRyb2xOYW1lXT1cInF1ZXN0aW9uLm5hbWVcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInF1ZXN0aW9uLnRpdGxlXCIgW3BsYWNlaG9sZGVyXT1cInF1ZXN0aW9uLnBsYWNlaG9sZGVyID8gcXVlc3Rpb24ucGxhY2Vob2xkZXIgOiAnJ1wiLz5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcblxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJxdWVzdGlvbi5jdXN0b21UYWcgJiYgcXVlc3Rpb24uY3VzdG9tVGFnLmluY2x1ZGVzKCdwaG9uZScpICAmJiAhY2hlY2tGbG93S2V5KClcIj5cclxuICAgICAgICAgIDxwLWlucHV0TWFzayBhdXRvY29tcGxldGU9XCJvZmZcIiAgbWFzaz1cIjk5OS05OTktOTk5OVwiIFtpbnB1dElkXT1cInF1ZXN0aW9uLm5hbWVcIiBbZm9ybUNvbnRyb2xOYW1lXT1cInF1ZXN0aW9uLm5hbWVcIiBcclxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInF1ZXN0aW9uLmlzUmVxdWlyZWQgPyAnOTk5LTk5OS05OTk5JyA6ICgnY29tbW9uLm9wdGlvbmFsJyB8IHRyYW5zbGF0ZSlcIlxyXG4gICAgICAgICAgICAqbmdJZj1cInF1ZXN0aW9uLmlucHV0VHlwZSAmJiBxdWVzdGlvbi5pbnB1dFR5cGU9PT0ndGV4dCdcIiAob25CbHVyKT1cImNoZWNrRm9yVmFsdWVDaGFuZ2UoJGV2ZW50KVwiIFthdHRyLmFyaWEtbGFiZWxdPVwicXVlc3Rpb24udGl0bGVcIj5cclxuICAgICAgICAgIDwvcC1pbnB1dE1hc2s+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cInF1ZXN0aW9uLmN1c3RvbVRhZyAmJiBxdWVzdGlvbi5jdXN0b21UYWcuaW5jbHVkZXMoJ3Bob25lJykgJiYgY2hlY2tGbG93S2V5KClcIj5cclxuICAgICAgICAgIDxwLWlucHV0TWFzayBhdXRvY29tcGxldGU9XCJvZmZcIiAgbWFzaz1cIjk5OSA5OTktOTk5OVwiIFtpbnB1dElkXT1cInF1ZXN0aW9uLm5hbWVcIiBbZm9ybUNvbnRyb2xOYW1lXT1cInF1ZXN0aW9uLm5hbWVcIiBcclxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInF1ZXN0aW9uLmlzUmVxdWlyZWQgPyAnOTk5IDk5OS05OTk5JyA6ICgnY29tbW9uLm9wdGlvbmFsJyB8IHRyYW5zbGF0ZSlcIlxyXG4gICAgICAgICAgICAqbmdJZj1cInF1ZXN0aW9uLmlucHV0VHlwZSAmJiBxdWVzdGlvbi5pbnB1dFR5cGU9PT0ndGV4dCdcIiAob25CbHVyKT1cImNoZWNrRm9yVmFsdWVDaGFuZ2UoJGV2ZW50KVwiIFthdHRyLmFyaWEtbGFiZWxdPVwicXVlc3Rpb24udGl0bGVcIj5cclxuICAgICAgICAgIDwvcC1pbnB1dE1hc2s+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgXHJcbiAgICAgICAgPGRpdiAqbmdJZj1cInF1ZXN0aW9uLmN1c3RvbVRhZyAmJiBxdWVzdGlvbi5jdXN0b21UYWcuaW5jbHVkZXMoJ3Bhc3N3b3JkJylcIj5cclxuICAgICAgICAgIDxwLXBhc3N3b3JkIFtpbnB1dElkXT1cInF1ZXN0aW9uLm5hbWVcIiBbZm9ybUNvbnRyb2xOYW1lXT1cInF1ZXN0aW9uLm5hbWVcIiBbdG9nZ2xlTWFza109XCJ0cnVlXCIgW21heExlbmd0aF09XCJxdWVzdGlvbi5tYXhMZW5ndGhcIiB3ZWFrTGFiZWw9J3t7XCJjb21tb24ucGFzc3dvcmQud2Vha1wiIHwgdHJhbnNsYXRlfX0nXHJcbiAgICAgICAgICBwcm9tcHRMYWJlbD0gJ3t7XCJjb21tb24uZW50ZXIucGFzc3dvcmRcIiB8IHRyYW5zbGF0ZX19JyBtZWRpdW1MYWJlbD0ne3tcImNvbW1vbi5wYXNzd29yZC53ZWFrXCIgfCB0cmFuc2xhdGV9fScgc3Ryb25nTGFiZWw9J3t7XCJjb21tb24ucGFzc3dvcmQuc3Ryb25nXCIgfCB0cmFuc2xhdGV9fScgc3Ryb25nUmVnZXg9XCJeKD89LipbYS16XSkoPz0uKltBLVpdKSg/PS4qWzAtOV0pKD89Lns4LH0pKD89LipbX0AqJCEjLl0pXCIgW2FyaWFMYWJlbF09XCJxdWVzdGlvbi50aXRsZVwiPlxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJmb290ZXJcIj5cclxuICAgICAgICAgICAgICA8cC1kaXZpZGVyPjwvcC1kaXZpZGVyPlxyXG4gICAgICAgICAgICAgIDxwIGNsYXNzPVwibXQtMVwiIHN0eWxlPVwiZm9udC1zaXplOiBzbWFsbDtcIj57e1wiY29tbW9uLnBhc3N3b3JkLm11c3QuaW5jbHVkZVwiIHwgdHJhbnNsYXRlfX08L3A+XHJcbiAgICAgICAgICAgICAgPHVsIHN0eWxlPVwibGluZS1oZWlnaHQ6IDEuMjVcIj5cclxuICAgICAgICAgICAgICAgICAgPGxpIHN0eWxlPVwibWFyZ2luLWxlZnQ6IC0yNXB4OyBmb250LXNpemU6IHNtYWxsO1wiPnt7XCJjb21tb24ucGFzc3dvcmQub25lLnVwcGVyY2FzZVwiIHwgdHJhbnNsYXRlfX08L2xpPlxyXG4gICAgICAgICAgICAgICAgICA8bGkgc3R5bGU9XCJtYXJnaW4tbGVmdDogLTI1cHg7IGZvbnQtc2l6ZTogc21hbGw7XCI+e3tcImNvbW1vbi5wYXNzd29yZC5vbmUubG93ZXJjYXNlXCIgfCB0cmFuc2xhdGV9fTwvbGk+XHJcbiAgICAgICAgICAgICAgICAgIDxsaSBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAtMjVweDsgZm9udC1zaXplOiBzbWFsbDtcIj57e1wiY29tbW9uLnBhc3N3b3JkLm9uZS5udW1iZXJcIiB8IHRyYW5zbGF0ZX19PC9saT5cclxuICAgICAgICAgICAgICAgICAgPGxpIHN0eWxlPVwibWFyZ2luLWxlZnQ6IC0yNXB4OyBmb250LXNpemU6IHNtYWxsO1wiPnt7XCJjb21tb24ucGFzc3dvcmQudHdvLm1lbnRpb25lZC5jaGFyXCIgfCB0cmFuc2xhdGV9fSA8Yj5fICYjNjQ7ICogJCAhICMgLjwvYj48L2xpPlxyXG4gICAgICAgICAgICAgICAgICA8bGkgc3R5bGU9XCJtYXJnaW4tbGVmdDogLTI1cHg7IGZvbnQtc2l6ZTogc21hbGw7XCI+e3tcImNvbW1vbi5wYXNzd29yZC5mb3J0ZWVuLmNoYXJzXCIgfCB0cmFuc2xhdGV9fTwvbGk+XHJcbiAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICA8cC1kaXZpZGVyPjwvcC1kaXZpZGVyPlxyXG4gICAgICAgICAgICAgIDxwIGNsYXNzPVwibXQtMVwiIHN0eWxlPVwiZm9udC1zaXplOiBzbWFsbDtcIj57e1wiY29tbW9uLnBhc3N3b3JkLnN1Z2dlc3Rpb24uaGVhZGVyXCIgfCB0cmFuc2xhdGV9fTwvcD5cclxuICAgICAgICAgICAgICA8dWwgc3R5bGU9XCJsaW5lLWhlaWdodDogMS4yNVwiPlxyXG4gICAgICAgICAgICAgICAgPGxpIHN0eWxlPVwibWFyZ2luLWxlZnQ6IC0yNXB4OyBmb250LXNpemU6IHNtYWxsO1wiPnt7XCJjb21tb24ucGFzc3dvcmQuc3VnZ2VzdGlvbi5uYW1lLmVtYWlsLnBob25lXCIgfCB0cmFuc2xhdGV9fTwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGkgc3R5bGU9XCJtYXJnaW4tbGVmdDogLTI1cHg7IGZvbnQtc2l6ZTogc21hbGw7XCI+e3tcImNvbW1vbi5wYXNzd29yZC5zdWdnZXN0aW9uLmtpZC5wYXJ0bmVyLnBldFwiIHwgdHJhbnNsYXRlfX08L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpIHN0eWxlPVwibWFyZ2luLWxlZnQ6IC0yNXB4OyBmb250LXNpemU6IHNtYWxsO1wiPnt7XCJjb21tb24ucGFzc3dvcmQuc3VnZ2VzdGlvbi5uYW1lLm9yLnVzZXJpZFwiIHwgdHJhbnNsYXRlfX08L2xpPlxyXG4gICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgPC9wLXBhc3N3b3JkPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwicXVlc3Rpb24uY3VzdG9tVGFnICYmIHF1ZXN0aW9uLmN1c3RvbVRhZy5pbmNsdWRlcygnZmlsZXVwbG9hZCcpXCI+XHJcbiAgICAgICAgICA8YXBwLWZpbGUtdXBsb2FkZXIgW2FsbG93ZWRGaWxlVHlwZV09XCJxdWVzdGlvbi5hbGxvd2VkRmlsZVR5cGVcIiBbZm9ybUNvbnRyb2xOYW1lXT1cInF1ZXN0aW9uLm5hbWVcIlxyXG4gICAgICAgICAgICBbbWF4U2l6ZUluTUJdPVwicXVlc3Rpb24uc2l6ZUluTUJcIiBbbXVsdGlwbGVdPVwicXVlc3Rpb24ubXVsdGlwbGVcIiBbbm9PZkZpbGVzVG9VcGxvYWRdPVwicXVlc3Rpb24ubm9PRkZpbGVzXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJxdWVzdGlvbi50aXRsZVwiPlxyXG4gICAgICAgICAgPC9hcHAtZmlsZS11cGxvYWRlcj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPCEtLUVtYWlsIEFkZHJlc3MtLT5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAqbmdJZj1cInF1ZXN0aW9uLmlucHV0VHlwZSAgJiYgcXVlc3Rpb24uaW5wdXRUeXBlPT09J3RleHQnXHJcbiAgICAgICAgICAgICAgICAgICYmIHF1ZXN0aW9uLmN1c3RvbVRhZyAgJiYgKHF1ZXN0aW9uLmN1c3RvbVRhZyE9J3NzbicgJiYgcXVlc3Rpb24uY3VzdG9tVGFnIT0nT3B0aW9uYWwnICYmIHF1ZXN0aW9uLmN1c3RvbVRhZyE9J2ZpbGV1cGxvYWQnICBcclxuICAgICAgICAgICAgICAgICAgJiYgcXVlc3Rpb24uY3VzdG9tVGFnIT0ncGhvbmUnICYmIHF1ZXN0aW9uLmN1c3RvbVRhZyE9J2ZpcnN0TmFtZScgJiYgcXVlc3Rpb24uY3VzdG9tVGFnIT0nbGFzdE5hbWUnICAmJiBxdWVzdGlvbi5jdXN0b21UYWchPSdlYW4nICAmJiBxdWVzdGlvbi5jdXN0b21UYWchPSdkdWVhbXQnICYmIHF1ZXN0aW9uLmN1c3RvbVRhZyE9J3Bhc3N3b3JkJykgJiYgY2hlY2tGbG93S2V5KClcIj5cclxuICAgICAgICAgIDxkaXYgW25nU3R5bGVdPVwic2V0U3R5bGUocXVlc3Rpb24uaW5kZW50KVwiPlxyXG4gICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBbaWRdPVwicXVlc3Rpb24ubmFtZVwiIFthdHRyLmFyaWEtbGFiZWxdPVwicXVlc3Rpb24udGl0bGVcIiBwSW5wdXRUZXh0IFtmb3JtQ29udHJvbE5hbWVdPVwicXVlc3Rpb24ubmFtZVwiIFtkaXNhYmxlZF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgKGJsdXIpPVwiY2hlY2tGb3JWYWx1ZUNoYW5nZSgkZXZlbnQpXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJxdWVzdGlvbi50aXRsZVwiIFtwbGFjZWhvbGRlcl09XCJxdWVzdGlvbi5wbGFjZWhvbGRlciA/IHF1ZXN0aW9uLnBsYWNlaG9sZGVyIDogJydcIi8+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgPGRpdiBcclxuICAgICAgICAgICAgKm5nSWY9XCJxdWVzdGlvbi5pbnB1dFR5cGUgICYmIHF1ZXN0aW9uLmlucHV0VHlwZT09PSd0ZXh0J1xyXG4gICAgICAgICAgICAgICAgICAgICYmIHF1ZXN0aW9uLmN1c3RvbVRhZyAgJiYgKHF1ZXN0aW9uLmN1c3RvbVRhZyE9J3NzbicgJiYgcXVlc3Rpb24uY3VzdG9tVGFnIT0nT3B0aW9uYWwnICYmIHF1ZXN0aW9uLmN1c3RvbVRhZyE9J2ZpbGV1cGxvYWQnICBcclxuICAgICAgICAgICAgICAgICAgICAmJiBxdWVzdGlvbi5jdXN0b21UYWchPSdwaG9uZScgICYmIHF1ZXN0aW9uLmN1c3RvbVRhZyE9J2VhbicgICYmIHF1ZXN0aW9uLmN1c3RvbVRhZyE9J2R1ZWFtdCcgJiYgcXVlc3Rpb24uY3VzdG9tVGFnIT0ncGFzc3dvcmQnKSAmJiAhY2hlY2tGbG93S2V5KClcIj5cclxuICAgICAgICAgICAgPGRpdiBbbmdTdHlsZV09XCJzZXRTdHlsZShxdWVzdGlvbi5pbmRlbnQpXCI+XHJcbiAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgW2lkXT1cInF1ZXN0aW9uLm5hbWVcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInF1ZXN0aW9uLnRpdGxlXCIgcElucHV0VGV4dCBbZm9ybUNvbnRyb2xOYW1lXT1cInF1ZXN0aW9uLm5hbWVcIiAoYmx1cik9XCJjaGVja0ZvclZhbHVlQ2hhbmdlKCRldmVudClcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInF1ZXN0aW9uLnRpdGxlXCIvPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiIXF1ZXN0aW9uLmlucHV0VHlwZSAmJiAhcXVlc3Rpb24uY3VzdG9tVGFnXCIgW25nU3R5bGVdPVwic2V0U3R5bGUocXVlc3Rpb24uaW5kZW50KVwiPlxyXG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgW2lkXT1cInF1ZXN0aW9uLm5hbWVcIiAqbmdJZj1cInF1ZXN0aW9uLnNpemVcIiAgcElucHV0VGV4dFxyXG4gICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cInF1ZXN0aW9uLm5hbWVcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInF1ZXN0aW9uLnRpdGxlXCIgW3BsYWNlaG9sZGVyXT1cInF1ZXN0aW9uLnBsYWNlaG9sZGVyID8gcXVlc3Rpb24ucGxhY2Vob2xkZXIgOiAnJ1wiLz5cclxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIFtpZF09XCJxdWVzdGlvbi5uYW1lXCIgKm5nSWY9XCIhcXVlc3Rpb24uc2l6ZVwiIHBJbnB1dFRleHQgW2Zvcm1Db250cm9sTmFtZV09XCJxdWVzdGlvbi5uYW1lXCIgXHJcbiAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInF1ZXN0aW9uLnRpdGxlXCIgW3BsYWNlaG9sZGVyXT1cInF1ZXN0aW9uLnBsYWNlaG9sZGVyID8gcXVlc3Rpb24ucGxhY2Vob2xkZXIgOiAnJ1wiLz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8IS0tIDwvaW9uLWNvbD5cclxuICAgIDxpb24tY29sIHNpemU9XCIxXCIgKm5nSWY9XCJxdWVzdGlvbi5kZXNjcmlwdGlvblwiIHN0eWxlPVwicGFkZGluZy10b3A6IDEycHhcIj5cclxuICAgICAgPGFwcC1vdmVybGF5LWluZm8gW292ZXJsYXlUZXh0XT1cInF1ZXN0aW9uLmRlc2NyaXB0aW9uIHwgZHluYW1pY1RyYW5zbGF0ZTpkeW5hbWljUGFyYW1cIj48L2FwcC1vdmVybGF5LWluZm8+XHJcbiAgICA8L2lvbi1jb2w+XHJcbiAgPC9pb24tcm93PiAtLT5cclxuICAgICAgICA8ZGl2IHN0eWxlPVwiZmxleC1ncm93OiAxO1wiICpuZ0lmPVwicXVlc3Rpb24uZGVzY3JpcHRpb25cIiBzdHlsZT1cInBhZGRpbmctbGVmdDogOHB4OyBwYWRkaW5nLXRvcDozcHhcIj5cclxuICAgICAgICAgIDxhcHAtb3ZlcmxheS1pbmZvIFtvdmVybGF5VGV4dF09XCJxdWVzdGlvbi5kZXNjcmlwdGlvbiB8IGR5bmFtaWNUcmFuc2xhdGU6ZHluYW1pY1BhcmFtXCI+PC9hcHAtb3ZlcmxheS1pbmZvPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidjb21tZW50J1wiPlxyXG4gICAgICA8ZGl2IFtuZ1N0eWxlXT1cInNldFN0eWxlKHF1ZXN0aW9uLmluZGVudClcIiAqbmdJZj1cInF1ZXN0aW9uLm1heExlbmd0aFwiPlxyXG4gICAgICAgIDx0ZXh0YXJlYSBbaWRdPVwicXVlc3Rpb24ubmFtZVwiIGF1dG9SZXNpemU9XCJ0cnVlXCIgW2Zvcm1Db250cm9sTmFtZV09XCJxdWVzdGlvbi5uYW1lXCJcclxuICAgICAgICAgIFttYXhMZW5ndGhdPVwicXVlc3Rpb24ubWF4TGVuZ3RoXCIgW3Jvd3NdPVwiM1wiIFtjb2xzXT1cIjM1XCIgW2F0dHIuYXJpYS1sYWJlbF09XCJxdWVzdGlvbi50aXRsZVwiXHJcbiAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicXVlc3Rpb24ucGxhY2Vob2xkZXIgPyBxdWVzdGlvbi5wbGFjZWhvbGRlciA6ICcnXCI+PC90ZXh0YXJlYT5cclxuICAgICAgICA8ZGl2PlxyXG5cclxuICAgICAgICAgIDxzbWFsbCBzdHlsZUNsYXNzPVwicC1kLWJsb2NrXCIgKm5nSWY9XCJxdWVzdGlvbi5kZXNjcmlwdGlvblwiPnt7cXVlc3Rpb24uZGVzY3JpcHRpb259fTwvc21hbGw+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBbbmdTdHlsZV09XCJzZXRTdHlsZShxdWVzdGlvbi5pbmRlbnQpXCIgKm5nSWY9XCIhcXVlc3Rpb24ubWF4TGVuZ3RoXCI+XHJcbiAgICAgICAgPHRleHRhcmVhIFtpZF09XCJxdWVzdGlvbi5uYW1lXCIgYXV0b1Jlc2l6ZT1cInRydWVcIiBbZm9ybUNvbnRyb2xOYW1lXT1cInF1ZXN0aW9uLm5hbWVcIiBbcm93c109XCIzXCJcclxuICAgICAgICAgIFtjb2xzXT1cIjM1XCIgW2F0dHIuYXJpYS1sYWJlbF09XCJxdWVzdGlvbi50aXRsZVwiIFtwbGFjZWhvbGRlcl09XCJxdWVzdGlvbi5wbGFjZWhvbGRlciA/IHF1ZXN0aW9uLnBsYWNlaG9sZGVyIDogJydcIj48L3RleHRhcmVhPlxyXG4gICAgICAgIDxkaXY+XHJcblxyXG4gICAgICAgICAgPHNtYWxsIHN0eWxlQ2xhc3M9XCJwLWQtYmxvY2tcIiAqbmdJZj1cInF1ZXN0aW9uLmRlc2NyaXB0aW9uXCI+e3txdWVzdGlvbi5kZXNjcmlwdGlvbn19PC9zbWFsbD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcblxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2Ryb3Bkb3duJ1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyXCIgc3R5bGU9XCJkaXNwbGF5OiBmbGV4O1wiPlxyXG4gICAgICAgIDxkaXYgW25nU3R5bGVdPVwic2V0U3R5bGUocXVlc3Rpb24uaW5kZW50KVwiPlxyXG4gICAgICAgICAgPHAtYXV0b0NvbXBsZXRlICpuZ0lmPVwiZmFsc2VcIiBbZm9ybUNvbnRyb2xOYW1lXT1cInF1ZXN0aW9uLm5hbWVcIiBbc3VnZ2VzdGlvbnNdPVwiZmlsdGVyUmVzdWx0XCIgYXBwZW5kVG89XCJib2R5XCJcclxuICAgICAgICAgICAgKGNvbXBsZXRlTWV0aG9kKT1cImZpbHRlclZhbHVlKCRldmVudCxxdWVzdGlvbilcIiBmaWVsZD1cInRleHRcIiBbZHJvcGRvd25dPVwidHJ1ZVwiIG1pbkxlbmd0aD1cIjFcIlxyXG4gICAgICAgICAgICBbZm9yY2VTZWxlY3Rpb25dPVwidHJ1ZVwiIChvblNlbGVjdCk9XCJvblNlbGVjdCgkZXZlbnQscXVlc3Rpb24ubmFtZSlcIiBbY29tcGxldGVPbkZvY3VzXT1cInRydWVcIj5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGxldC12YWx1ZSBwVGVtcGxhdGU9XCJpdGVtXCI+XHJcbiAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgIDxkaXY+e3t2YWx1ZS50ZXh0fX08L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgIDwvcC1hdXRvQ29tcGxldGU+XHJcbiAgICAgICAgICA8YXBwLWRyb3Bkb3duIFtvcHRpb25zXT1cImZpbHRlclJlc3VsdFwiIFtmb3JtQ29udHJvbE5hbWVdPVwicXVlc3Rpb24ubmFtZVwiIG9wdGlvbkxhYmVsPVwidGV4dFwiIGFwcGVuZFRvPVwiYm9keVwiXHJcbiAgICAgICAgICAob25DaGFuZ2UpPVwib25TZWxlY3QoJGV2ZW50LHF1ZXN0aW9uLm5hbWUpXCIgW2F1dG9EaXNwbGF5Rmlyc3RdPVwiZmFsc2VcIiAob25DbGljayk9XCJmaWx0ZXJWYWx1ZSgkZXZlbnQscXVlc3Rpb24pXCIgW2lucHV0SWRdPVwicXVlc3Rpb24ubmFtZVwiXHJcbiAgICAgICAgICBbYXJpYUxhYmVsXT1cInF1ZXN0aW9uLnRpdGxlXCI+PC9hcHAtZHJvcGRvd24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBzdHlsZT1cImZsZXgtZ3JvdzogMTtcIiAqbmdJZj1cInF1ZXN0aW9uLmRlc2NyaXB0aW9uXCIgc3R5bGU9XCJwYWRkaW5nLWxlZnQ6IDhweDsgcGFkZGluZy10b3A6M3B4XCI+XHJcbiAgICAgICAgICA8YXBwLW92ZXJsYXktaW5mbyBbb3ZlcmxheVRleHRdPVwicXVlc3Rpb24uZGVzY3JpcHRpb24gfCBkeW5hbWljVHJhbnNsYXRlOmR5bmFtaWNQYXJhbVwiPjwvYXBwLW92ZXJsYXktaW5mbz5cclxuXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ3JhZGlvZ3JvdXAnXCI+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyXCI+ICAgICAgICBcclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGFyZWQtcm93XCIgKm5nSWY9XCJxdWVzdGlvbi5uYW1lICYmIHF1ZXN0aW9uLm5hbWUhPSd2ZXJpZmljYXRpb24nXCI+XHJcbiAgICAgICAgICAgIDxkaXYgW25nU3R5bGVdPVwic2V0U3R5bGUocXVlc3Rpb24uaW5kZW50KVwiPlxyXG4gICAgICAgICAgICAgIDxwLXNlbGVjdEJ1dHRvbiB1bnNlbGVjdGFibGU9XCJ0cnVlXCIgW29wdGlvbnNdPVwicXVlc3Rpb24uY2hvaWNlc1wiIFtmb3JtQ29udHJvbE5hbWVdPVwicXVlc3Rpb24ubmFtZVwiIG9wdGlvbkxhYmVsPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgICBvcHRpb25WYWx1ZT1cInZhbHVlXCIgKG9uT3B0aW9uQ2xpY2spPVwib25SYWRpb09wdGlvbkNsaWNrKCRldmVudCxxdWVzdGlvbilcIj48L3Atc2VsZWN0QnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInF1ZXN0aW9uLmRlc2NyaXB0aW9uXCIgPlxyXG4gICAgICAgICAgICAgIDxhcHAtb3ZlcmxheS1pbmZvIFtvdmVybGF5VGV4dF09XCJxdWVzdGlvbi5kZXNjcmlwdGlvbiB8IGR5bmFtaWNUcmFuc2xhdGU6ZHluYW1pY1BhcmFtXCI+PC9hcHAtb3ZlcmxheS1pbmZvPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIFxyXG4gICAgICAgICAgPGRpdiAqbmdJZj1cInF1ZXN0aW9uLm5hbWUgJiYgcXVlc3Rpb24ubmFtZT09PSd2ZXJpZmljYXRpb24nXCI+XHJcbiAgICAgICAgICAgIDxkaXYgW25nU3R5bGVdPVwic2V0U3R5bGUocXVlc3Rpb24uaW5kZW50KVwiPlxyXG4gICAgICAgICAgICAgIDxwLXNlbGVjdEJ1dHRvbiBbb3B0aW9uc109XCJxdWVzdGlvbi5jaG9pY2VzXCIgW2Zvcm1Db250cm9sTmFtZV09XCJxdWVzdGlvbi5uYW1lXCIgb3B0aW9uTGFiZWw9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgIG9wdGlvblZhbHVlPVwidmFsdWVcIiAob25PcHRpb25DbGljayk9XCJnZW5lcmF0ZU90cEZvck5ld1VzZXJDcmVhdGlvbigkZXZlbnQsZm9ybSlcIj48L3Atc2VsZWN0QnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGFwcC1tZmEyICpuZ0lmPVwiaXNPdHBNb2RhbEVuYWJsZWRcIiBbZGlzcGxheV09XCJpc090cE1vZGFsRW5hYmxlZFwiIFtyZXR1cm5pbmdVc2VyXT1cImlzUmV0dXJuaW5nVXNlclwiIFsoZm9ybSldPVwiZm9ybVwiIChzdWNjZXNzKT1cImVuYWJsZUZpZWxkcygpXCI+PC9hcHAtbWZhMj5cclxuICAgICAgICAgICAgPGRpdiBzdHlsZT1cImZsZXgtZ3JvdzogMTtcIiAqbmdJZj1cInF1ZXN0aW9uLmRlc2NyaXB0aW9uXCIgc3R5bGU9XCJwYWRkaW5nLWxlZnQ6IDhweDsgcGFkZGluZy10b3A6M3B4XCI+XHJcbiAgICAgICAgICAgICAgPGFwcC1vdmVybGF5LWluZm8gW292ZXJsYXlUZXh0XT1cInF1ZXN0aW9uLmRlc2NyaXB0aW9uIHwgZHluYW1pY1RyYW5zbGF0ZTpkeW5hbWljUGFyYW1cIj48L2FwcC1vdmVybGF5LWluZm8+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcblxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ251bWJlcidcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lclwiIHN0eWxlPVwiZGlzcGxheTogZmxleDtcIj5cclxuICAgICAgICA8ZGl2IFtuZ1N0eWxlXT1cInNldFN0eWxlKHF1ZXN0aW9uLmluZGVudClcIj5cclxuICAgICAgICAgIDxwLWlucHV0TnVtYmVyIGZvcm1Db250cm9sTmFtZT1cInt7cXVlc3Rpb24ubmFtZX19XCIgbW9kZT1cImRlY2ltYWxcIiBbaW5wdXRJZF09XCJxdWVzdGlvbi5uYW1lXCIgW3VzZUdyb3VwaW5nXT1cImZhbHNlXCJcclxuICAgICAgICAgIFttaW5dPVwibWluVmFsdWVcIiBbbWF4XT1cIm1heFZhbHVlXCJcclxuICAgICAgICAgIFtzaXplXT1cInF1ZXN0aW9uLnNpemUgPyBxdWVzdGlvbi5zaXplIDogbnVsbFwiIFttYXhsZW5ndGhdPVwicXVlc3Rpb24ubWF4TGVuZ3RoID8gcXVlc3Rpb24ubWF4TGVuZ3RoIDogbnVsbFwiIFthcmlhTGFiZWxdPVwicXVlc3Rpb24udGl0bGVcIlxyXG4gICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInF1ZXN0aW9uLnBsYWNlaG9sZGVyID8gcXVlc3Rpb24ucGxhY2Vob2xkZXIgOiAnJ1wiPjwvcC1pbnB1dE51bWJlcj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IHN0eWxlPVwiZmxleC1ncm93OiAxO1wiICpuZ0lmPVwicXVlc3Rpb24uZGVzY3JpcHRpb25cIiBzdHlsZT1cInBhZGRpbmctbGVmdDogOHB4OyBwYWRkaW5nLXRvcDozcHhcIj5cclxuICAgICAgICAgIDxhcHAtb3ZlcmxheS1pbmZvIFtvdmVybGF5VGV4dF09XCJxdWVzdGlvbi5kZXNjcmlwdGlvbiB8IGR5bmFtaWNUcmFuc2xhdGU6ZHluYW1pY1BhcmFtXCI+PC9hcHAtb3ZlcmxheS1pbmZvPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidkZWNpbWFsJ1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyXCIgc3R5bGU9XCJkaXNwbGF5OiBmbGV4O1wiPlxyXG4gICAgICAgIDxkaXYgW25nU3R5bGVdPVwic2V0U3R5bGUocXVlc3Rpb24uaW5kZW50KVwiPlxyXG4gICAgICAgICAgPHAtaW5wdXROdW1iZXIgZm9ybUNvbnRyb2xOYW1lPVwie3txdWVzdGlvbi5uYW1lfX1cIiBtb2RlPVwiZGVjaW1hbFwiIFtpbnB1dElkXT1cInF1ZXN0aW9uLm5hbWVcIiBbdXNlR3JvdXBpbmddPVwiZmFsc2VcIiBcclxuICAgICAgICAgIFttaW5GcmFjdGlvbkRpZ2l0c109XCIyXCIgW21heEZyYWN0aW9uRGlnaXRzXT1cIjJcIiBbbWluXT1cIm1pblZhbHVlXCIgXHJcbiAgICAgICAgICBbbWF4XT1cIm1heFZhbHVlXCIgW3NpemVdPVwicXVlc3Rpb24uc2l6ZSA/IHF1ZXN0aW9uLnNpemUgOiBudWxsXCIgIFttYXhsZW5ndGhdPVwicXVlc3Rpb24ubWF4TGVuZ3RoID8gcXVlc3Rpb24ubWF4TGVuZ3RoIDogbnVsbFwiIFthcmlhTGFiZWxdPVwicXVlc3Rpb24udGl0bGVcIlxyXG4gICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInF1ZXN0aW9uLnBsYWNlaG9sZGVyID8gcXVlc3Rpb24ucGxhY2Vob2xkZXIgOiAnJ1wiPjwvcC1pbnB1dE51bWJlcj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IHN0eWxlPVwiZmxleC1ncm93OiAxO1wiICpuZ0lmPVwicXVlc3Rpb24uZGVzY3JpcHRpb25cIiBzdHlsZT1cInBhZGRpbmctbGVmdDogOHB4OyBwYWRkaW5nLXRvcDozcHhcIj5cclxuICAgICAgICAgIDxhcHAtb3ZlcmxheS1pbmZvIFtvdmVybGF5VGV4dF09XCJxdWVzdGlvbi5kZXNjcmlwdGlvbiB8IGR5bmFtaWNUcmFuc2xhdGU6ZHluYW1pY1BhcmFtXCI+PC9hcHAtb3ZlcmxheS1pbmZvPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidjdXJyZW5jeSdcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lclwiIHN0eWxlPVwiZGlzcGxheTogZmxleDtcIj5cclxuICAgICAgICA8ZGl2IFtuZ1N0eWxlXT1cInNldFN0eWxlKHF1ZXN0aW9uLmluZGVudClcIj5cclxuICAgICAgICAgIDxwLWlucHV0TnVtYmVyIGZvcm1Db250cm9sTmFtZT1cInt7cXVlc3Rpb24ubmFtZX19XCIgbW9kZT1cImN1cnJlbmN5XCIgW2lucHV0SWRdPVwicXVlc3Rpb24ubmFtZVwiIFt1c2VHcm91cGluZ109XCJmYWxzZVwiIFxyXG4gICAgICAgICAgW21pbkZyYWN0aW9uRGlnaXRzXT1cIjJcIiBbbWF4RnJhY3Rpb25EaWdpdHNdPVwiMlwiIGN1cnJlbmN5PVwiVVNEXCIgW21pbl09XCJtaW5WYWx1ZVwiIFxyXG4gICAgICAgICAgW21heF09XCJtYXhWYWx1ZVwiIFtzaXplXT1cInF1ZXN0aW9uLnNpemUgPyBxdWVzdGlvbi5zaXplIDogbnVsbFwiICBbbWF4bGVuZ3RoXT1cInF1ZXN0aW9uLm1heExlbmd0aCA/IHF1ZXN0aW9uLm1heExlbmd0aCA6IG51bGxcIiBcclxuICAgICAgICAgIFthcmlhTGFiZWxdPVwicXVlc3Rpb24udGl0bGVcIiBbcGxhY2Vob2xkZXJdPVwicXVlc3Rpb24ucGxhY2Vob2xkZXIgPyBxdWVzdGlvbi5wbGFjZWhvbGRlciA6ICcnXCI+PC9wLWlucHV0TnVtYmVyPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgc3R5bGU9XCJmbGV4LWdyb3c6IDE7XCIgKm5nSWY9XCJxdWVzdGlvbi5kZXNjcmlwdGlvblwiIHN0eWxlPVwicGFkZGluZy1sZWZ0OiA4cHg7IHBhZGRpbmctdG9wOjNweFwiPlxyXG4gICAgICAgICAgPGFwcC1vdmVybGF5LWluZm8gW292ZXJsYXlUZXh0XT1cInF1ZXN0aW9uLmRlc2NyaXB0aW9uIHwgZHluYW1pY1RyYW5zbGF0ZTpkeW5hbWljUGFyYW1cIj48L2FwcC1vdmVybGF5LWluZm8+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2NoZWNrYm94J1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyXCIgc3R5bGU9XCJkaXNwbGF5OiBmbGV4O1wiPlxyXG4gICAgICAgIDxkaXYgW25nU3R5bGVdPVwic2V0U3R5bGUocXVlc3Rpb24uaW5kZW50KVwiIGNsYXNzPVwiZm9ybWdyb3VwLWlubGluZVwiPlxyXG4gICAgICAgICAgICA8cC1jaGVja2JveCBbbmFtZV09XCJxdWVzdGlvbi5uYW1lICsgJy1ncm91cCdcIiBbdmFsdWVdPVwiY2hvaWNlLnZhbHVlXCIgXHJcbiAgICAgICAgICAgICAgW2xhYmVsXT1cImNob2ljZS50ZXh0XCIgKm5nRm9yPVwibGV0IGNob2ljZSBvZiBxdWVzdGlvbi5jaG9pY2VzXCIgW2Zvcm1Db250cm9sXT1cImZvcm0uY29udHJvbHNbcXVlc3Rpb24ubmFtZV1cIlxyXG4gICAgICAgICAgICAgIHN0eWxlQ2xhc3M9XCJhcHAtcC1jaGVja2JveFwiIFtpbnB1dElkXT1cInF1ZXN0aW9uLm5hbWUgKyAnLScgKyBjaG9pY2UudmFsdWVcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInF1ZXN0aW9uLnRpdGxlXCI+PC9wLWNoZWNrYm94PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgc3R5bGU9XCJmbGV4LWdyb3c6IDE7XCIgKm5nSWY9XCJxdWVzdGlvbi5kZXNjcmlwdGlvblwiIHN0eWxlPVwicGFkZGluZy1sZWZ0OiA4cHg7IHBhZGRpbmctdG9wOjNweFwiPlxyXG4gICAgICAgICAgPGFwcC1vdmVybGF5LWluZm8gW292ZXJsYXlUZXh0XT1cInF1ZXN0aW9uLmRlc2NyaXB0aW9uIHwgZHluYW1pY1RyYW5zbGF0ZTpkeW5hbWljUGFyYW1cIj48L2FwcC1vdmVybGF5LWluZm8+XHJcblxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidtdWx0aWNoZWNrYm94J1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyXCIgc3R5bGU9XCJkaXNwbGF5OiBmbGV4O1wiPlxyXG4gICAgICAgIDxkaXYgW25nU3R5bGVdPVwic2V0U3R5bGUocXVlc3Rpb24uaW5kZW50KVwiPlxyXG4gICAgICAgICAgICA8cC1jaGVja2JveCBbbmFtZV09XCJxdWVzdGlvbi5uYW1lICsgJy1ncm91cCdcIiBbdmFsdWVdPVwiY2hvaWNlLnZhbHVlXCIgXHJcbiAgICAgICAgICAgICAgW2xhYmVsXT1cImNob2ljZS50ZXh0XCIgKm5nRm9yPVwibGV0IGNob2ljZSBvZiBxdWVzdGlvbi5jaG9pY2VzXCIgW2Zvcm1Db250cm9sXT1cImZvcm0uY29udHJvbHNbcXVlc3Rpb24ubmFtZV1cIlxyXG4gICAgICAgICAgICAgIHN0eWxlQ2xhc3M9XCJhcHAtcC1jaGVja2JveFwiIFtpbnB1dElkXT1cInF1ZXN0aW9uLm5hbWUgKyAnLScgKyBjaG9pY2UudmFsdWVcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInF1ZXN0aW9uLnRpdGxlXCI+PC9wLWNoZWNrYm94PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgc3R5bGU9XCJmbGV4LWdyb3c6IDE7XCIgKm5nSWY9XCJxdWVzdGlvbi5kZXNjcmlwdGlvblwiIHN0eWxlPVwicGFkZGluZy1sZWZ0OiA4cHg7IHBhZGRpbmctdG9wOjNweFwiPlxyXG4gICAgICAgICAgPGFwcC1vdmVybGF5LWluZm8gW292ZXJsYXlUZXh0XT1cInF1ZXN0aW9uLmRlc2NyaXB0aW9uIHwgZHluYW1pY1RyYW5zbGF0ZTpkeW5hbWljUGFyYW1cIj48L2FwcC1vdmVybGF5LWluZm8+XHJcblxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidzaW5nbGVzZWxlY3RjaGVja2JveCdcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lclwiIHN0eWxlPVwiZGlzcGxheTogZmxleDtcIj5cclxuICAgICAgICA8ZGl2IFtuZ1N0eWxlXT1cInNldFN0eWxlKHF1ZXN0aW9uLmluZGVudClcIj5cclxuICAgICAgICAgIDxwLXNlbGVjdEJ1dHRvbiB1bnNlbGVjdGFibGU9XCJ0cnVlXCIgW29wdGlvbnNdPVwicXVlc3Rpb24uY2hvaWNlc1wiIFtmb3JtQ29udHJvbE5hbWVdPVwicXVlc3Rpb24ubmFtZVwiIFttdWx0aXBsZV09ZmFsc2VcclxuICAgICAgICAgICAgb3B0aW9uTGFiZWw9XCJ0ZXh0XCIgb3B0aW9uVmFsdWU9XCJ2YWx1ZVwiIFthdHRyLmFyaWEtbGFiZWxdPVwicXVlc3Rpb24udGl0bGVcIj48L3Atc2VsZWN0QnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgc3R5bGU9XCJmbGV4LWdyb3c6IDE7XCIgKm5nSWY9XCJxdWVzdGlvbi5kZXNjcmlwdGlvblwiIHN0eWxlPVwicGFkZGluZy1sZWZ0OiA4cHg7IHBhZGRpbmctdG9wOjNweFwiPlxyXG4gICAgICAgICAgPGFwcC1vdmVybGF5LWluZm8gW292ZXJsYXlUZXh0XT1cInF1ZXN0aW9uLmRlc2NyaXB0aW9uIHwgZHluYW1pY1RyYW5zbGF0ZTpkeW5hbWljUGFyYW1cIj48L2FwcC1vdmVybGF5LWluZm8+XHJcblxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidzaW1wbGVjaGVja2JveCdcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lclwiIHN0eWxlPVwiZGlzcGxheTogZmxleDtcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGQtY2hlY2tib3hcIj5cclxuICAgICAgICAgIDxwLWNoZWNrYm94IGJpbmFyeT1cInRydWVcIiBpbnB1dElkPVwiYmluYXJ5XCIgW2Zvcm1Db250cm9sTmFtZV09XCJxdWVzdGlvbi5uYW1lXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJxdWVzdGlvbi50aXRsZVwiPjwvcC1jaGVja2JveD5cclxuICAgICAgICAgIDxsYWJlbCBmb3I9XCJiaW5hcnlcIj57e3F1ZXN0aW9uLnRpdGxlfX08L2xhYmVsPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgc3R5bGU9XCJmbGV4LWdyb3c6IDE7XCIgKm5nSWY9XCJxdWVzdGlvbi5kZXNjcmlwdGlvblwiIHN0eWxlPVwicGFkZGluZy1sZWZ0OiA4cHg7IHBhZGRpbmctdG9wOiAzcHhcIj5cclxuICAgICAgICAgIDxhcHAtb3ZlcmxheS1pbmZvIFtvdmVybGF5VGV4dF09XCJxdWVzdGlvbi5kZXNjcmlwdGlvbiB8IGR5bmFtaWNUcmFuc2xhdGU6ZHluYW1pY1BhcmFtXCI+PC9hcHAtb3ZlcmxheS1pbmZvPlxyXG5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInZGlzcGxheXRleHRhc2xhYmVsJ1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyXCIgc3R5bGU9XCJkaXNwbGF5OiBmbGV4O1wiPlxyXG4gICAgICAgIDxsYWJlbD57e2dldFRleHQoZm9ybS5jb250cm9sc1txdWVzdGlvbi5uYW1lXS52YWx1ZSl9fTwvbGFiZWw+XHJcbiAgICAgICAgPGlucHV0IHR5cGU9XCJoaWRkZW5cIiBbZm9ybUNvbnRyb2xOYW1lXT1cInF1ZXN0aW9uLm5hbWVcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInF1ZXN0aW9uLnRpdGxlXCIvPlxyXG4gICAgICAgIDxkaXYgc3R5bGU9XCJmbGV4LWdyb3c6IDE7XCIgKm5nSWY9XCJxdWVzdGlvbi5kZXNjcmlwdGlvblwiIHN0eWxlPVwicGFkZGluZy1sZWZ0OiAycHhcIj5cclxuICAgICAgICAgIDxhcHAtb3ZlcmxheS1pbmZvIFtvdmVybGF5VGV4dF09XCJxdWVzdGlvbi5kZXNjcmlwdGlvbiB8IGR5bmFtaWNUcmFuc2xhdGU6ZHluYW1pY1BhcmFtXCI+PC9hcHAtb3ZlcmxheS1pbmZvPlxyXG5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInbGFiZWwnXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXJcIiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7XCI+XHJcbiAgICAgICAgPGxhYmVsPnt7cXVlc3Rpb24udGl0bGV9fTwvbGFiZWw+XHJcbiAgICAgICAgPGRpdiBzdHlsZT1cImZsZXgtZ3JvdzogMTtcIiAqbmdJZj1cInF1ZXN0aW9uLmRlc2NyaXB0aW9uXCIgc3R5bGU9XCJwYWRkaW5nLWxlZnQ6IDJweFwiPlxyXG4gICAgICAgICAgPGFwcC1vdmVybGF5LWluZm8gW292ZXJsYXlUZXh0XT1cInF1ZXN0aW9uLmRlc2NyaXB0aW9uIHwgZHluYW1pY1RyYW5zbGF0ZTpkeW5hbWljUGFyYW1cIj48L2FwcC1vdmVybGF5LWluZm8+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInbGFiZWwtd2l0aC1vdmVybGF5J1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyXCIgc3R5bGU9XCJkaXNwbGF5OiBmbGV4O1wiPlxyXG4gICAgICAgIDxhcHAtb3ZlcmxheS1pbmZvIFtkaXNwbGF5VGV4dF09XCJxdWVzdGlvbi50aXRsZVwiICBbb3ZlcmxheVRleHRdPVwicXVlc3Rpb24uZGVzY3JpcHRpb24gfCBkeW5hbWljVHJhbnNsYXRlOmR5bmFtaWNQYXJhbVwiIFtkaXNwbGF5QXNMYWJlbF09XCJ0cnVlXCI+PC9hcHAtb3ZlcmxheS1pbmZvPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2xhYmVsLXdpdGgtbGluaydcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lclwiIHN0eWxlPVwiZGlzcGxheTogZmxleDtcIj5cclxuICAgICAgICA8YXBwLW92ZXJsYXktaW5mbyBbZGlzcGxheVRleHRdPVwicXVlc3Rpb24udGl0bGVcIiBbZm9ybUNvbnRyb2xOYW1lXT1cInF1ZXN0aW9uLm5hbWVcIiBbb3ZlcmxheVRleHRdPVwicXVlc3Rpb24uZGVzY3JpcHRpb24gfCBkeW5hbWljVHJhbnNsYXRlOmR5bmFtaWNQYXJhbVwiIFtsYWJlbFdpdGhMaW5rXT1cInRydWVcIj48L2FwcC1vdmVybGF5LWluZm8+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInbGFiZWwtd2l0aC1wb3B1cCdcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lclwiIHN0eWxlPVwiZGlzcGxheTogZmxleDtcIj5cclxuICAgICAgICA8YXBwLW92ZXJsYXktaW5mbyBbZGlzcGxheVRleHRdPVwicXVlc3Rpb24udGl0bGVcIiBbZm9ybUNvbnRyb2xOYW1lXT1cInF1ZXN0aW9uLm5hbWVcIiBbbGFiZWxXaXRoUG9wdXBdPVwicXVlc3Rpb24uZGVzY3JpcHRpb24gfCBkeW5hbWljVHJhbnNsYXRlOmR5bmFtaWNQYXJhbVwiIFtsYWJlbFdpdGhMaW5rXT1cInRydWVcIj48L2FwcC1vdmVybGF5LWluZm8+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICBcclxuICAgIDxuZy1jb250YWluZXIgY2xhc3M9XCJyZXNwb25zaXZlXCIgKm5nU3dpdGNoQ2FzZT1cIidwYW5lbCdcIj5cclxuICAgICAgPGlvbi1yb3c+XHJcbiAgICAgICAgPGlvbi1jb2w+XHJcbiAgICAgICAgICA8aW9uLXJvdz5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZWxlbWVudCBvZiBxdWVzdGlvbi5lbGVtZW50c1wiPlxyXG4gICAgICAgICAgICAgIDxpb24tY29sICpuZ0lmPVwiZWxlbWVudC5jb2xFbGVtZW50PT09J0NPTDEnICYmIHZpc2libGVJZihlbGVtZW50LnZpc2libGVJZixlbGVtZW50Lm5hbWUpXCJcclxuICAgICAgICAgICAgICAgIFtzaXplWGxdPVwiZWxlbWVudC5zaXplWExcIiBbc2l6ZUxnXT1cImVsZW1lbnQuc2l6ZUxHXCIgW3NpemVNZF09XCJlbGVtZW50LnNpemVNRFwiXHJcbiAgICAgICAgICAgICAgICBbb2Zmc2V0TWRdPVwiZWxlbWVudC5vZmZTZXRNRFwiIGNsYXNzPVwiY29sLWZpdC1jb250ZW50XCI+XHJcbiAgICAgICAgICAgICAgICA8YXBwLXF1ZXN0aW9uIFtxdWVzdGlvbl09XCJlbGVtZW50XCIgW2Zvcm1dPVwiZm9ybVwiIFtmb3JTY3JlZW5RdWVzdGlvbm5haXJlXT1cImZvclNjcmVlblF1ZXN0aW9ubmFpcmVcIj5cclxuICAgICAgICAgICAgICAgIDwvYXBwLXF1ZXN0aW9uPlxyXG4gICAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L2lvbi1yb3c+XHJcbiAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgIDxpb24tY29sPlxyXG4gICAgICAgICAgPGlvbi1yb3c+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGVsZW1lbnQgb2YgcXVlc3Rpb24uZWxlbWVudHNcIj5cclxuICAgICAgICAgICAgICA8aW9uLWNvbCAqbmdJZj1cImVsZW1lbnQuY29sRWxlbWVudD09PSdDT0wyJyAmJiB2aXNpYmxlSWYoZWxlbWVudC52aXNpYmxlSWYsZWxlbWVudC5uYW1lKVwiXHJcbiAgICAgICAgICAgICAgICBbc2l6ZVhsXT1cImVsZW1lbnQuc2l6ZVhMXCIgW3NpemVMZ109XCJlbGVtZW50LnNpemVMR1wiIFtzaXplTWRdPVwiZWxlbWVudC5zaXplTURcIlxyXG4gICAgICAgICAgICAgICAgW29mZnNldE1kXT1cImVsZW1lbnQub2ZmU2V0TURcIj5cclxuICAgICAgICAgICAgICAgIDxhcHAtcXVlc3Rpb24gW3F1ZXN0aW9uXT1cImVsZW1lbnRcIiBbZm9ybV09XCJmb3JtXCIgW2ZvclNjcmVlblF1ZXN0aW9ubmFpcmVdPVwiZm9yU2NyZWVuUXVlc3Rpb25uYWlyZVwiPlxyXG4gICAgICAgICAgICAgICAgPC9hcHAtcXVlc3Rpb24+XHJcbiAgICAgICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvaW9uLXJvdz5cclxuICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgIDwvaW9uLXJvdz5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgW25nU3R5bGVdPVwic2V0U3R5bGUocXVlc3Rpb24uaW5kZW50KVwiICpuZ0lmPVwicXVlc3Rpb24udHlwZSE9J3BhbmVsJ1wiPlxyXG4gICAgPHNtYWxsIGNsYXNzPVwicC1lcnJvclwiICpuZ0lmPVwiaXNWYWxpZCE9JydcIiBbQHJvd0V4cGFuc2lvblRyaWdnZXJdPVwiJ2FjdGl2ZSdcIj57e2lzVmFsaWQgfCBkeW5hbWljVHJhbnNsYXRlOmR5bmFtaWNQYXJhbX19PC9zbWFsbD5cclxuICA8L2Rpdj5cclxuPC9kaXY+Il19
2526
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1mb3JtLXF1ZXN0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZXVzYS1hcHAtbGliL3NyYy9saWIvY29tcG9uZW50cy9xdWVzdGlvbm5haXJlL2R5bmFtaWMtZm9ybS1xdWVzdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcmV1c2EtYXBwLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvcXVlc3Rpb25uYWlyZS9keW5hbWljLWZvcm0tcXVlc3Rpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBaUIsdUJBQXVCLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUF3QixTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBUWxMLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQVU3RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUl2RSxPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQ1pyRSxzQ0FBa0g7SUFBbkIsZ05BQVMsZUFBQSxnQkFBUSxDQUFBLElBQUM7SUFDL0csWUFDRjtJQUFBLGlCQUFhOzs7SUFEWCxlQUNGO0lBREUsMkRBQ0Y7Ozs7SUFFQSxzQ0FBaUg7SUFBbkIsZ05BQVMsZUFBQSxnQkFBUSxDQUFBLElBQUM7SUFDOUcsWUFDRjtJQUFBLGlCQUFhOzs7SUFEWCxlQUNGO0lBREUsNERBQ0Y7OztJQU5BLHFIQUVhLHdHQUFBOzs7SUFGYyxpREFBd0I7SUFJeEIsZUFBeUI7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SztZQUNHLGdCQUFnQjtrQkFBeEIsS0FBSztZQUVJLG9CQUFvQjtrQkFBN0IsTUFBTTtZQXdDZ0IsUUFBUTtrQkFBOUIsU0FBUzttQkFBQyxVQUFVO1lBQ0ksU0FBUztrQkFBakMsWUFBWTttQkFBQyxTQUFTO1lBQ00sY0FBYztrQkFBMUMsU0FBUzttQkFBQyxnQkFBZ0I7WUFDSCxTQUFTO2tCQUFoQyxTQUFTO21CQUFDLFdBQVc7O2tGQW5EWCw0QkFBNEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgUXVlcnlMaXN0LCBSZW5kZXJlcjIsIFZpZXdDaGlsZCwgVmlld0NoaWxkcmVuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgVW50eXBlZEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgTmF2Q29udHJvbGxlciB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5pbXBvcnQgeyBFbGVtZW50c01vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3F1ZXN0aW9ubmFpcmUvRWxlbWVudHNNb2RlbCc7XHJcbmltcG9ydCB7IEtleVZhbHVlTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvcXVlc3Rpb25uYWlyZS9LZXlWYWx1ZU1vZGVsJztcclxuaW1wb3J0IHsgU2VydmljZUFjdGlvblJlc3BvbnNlTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvcXVlc3Rpb25uYWlyZS9TZXJ2aWNlQWN0aW9uUmVzcG9uc2VNb2RlbCc7XHJcbmltcG9ydCB7IFZhbGlkYXRpb25Nb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9xdWVzdGlvbm5haXJlL1ZhbGlkYXRpb25Nb2RlbCc7XHJcbmltcG9ydCB7IExvZ2dlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9sb2dnZXIvbG9nZ2VyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBWYWxpZGF0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3F1ZXN0aW9ubmFpcmUvdmFsaWRhdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVXRpbFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy91dGlsL3V0aWwuc2VydmljZSc7XHJcbmltcG9ydCB7IENob2ljZXMsIFF1ZXN0aW9uQ29udHJvbFNlcnZpY2UgfSBmcm9tICcuL3F1ZXN0aW9uLWNvbnRyb2wuc2VydmljZSc7XHJcbmltcG9ydCB7IFF1ZXN0aW9uU2VydmljZSB9IGZyb20gJy4vcXVlc3Rpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IExvYWRlck1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3F1ZXN0aW9ubmFpcmUvTG9hZGVyTW9kZWwnO1xyXG5pbXBvcnQgeyBBZGRyZXNzQ29tcG9uZW50IH0gZnJvbSAnLi4vYWRkcmVzcy9hZGRyZXNzLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEJhbmtEZXRhaWxzQ29tcG9uZW50IH0gZnJvbSAnLi4vYmFuay1kZXRhaWxzL2JhbmstZGV0YWlscy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBFbXBsb3llckRldGFpbFNlYXJjaFJlc3VsdCB9IGZyb20gJy4uLy4uL21vZGVscy9xdWVzdGlvbm5haXJlL0VtcGxveWVyRGV0YWlsU2VhcmNoUmVzdWx0JztcclxuaW1wb3J0IHsgcm93RXhwYW5zaW9uVHJpZ2dlciB9IGZyb20gJy4uLy4uL2FubmltYXRpb25zL2FwcC1hbmltYXRpb25zJztcclxuaW1wb3J0IHsgV2Vla2x5Q2VydEVtcGxveWVyR3JpZENvbXBvbmVudCB9IGZyb20gJy4uL3dlZWtseS1jZXJ0LWVtcGxveWVyLWdyaWQvd2Vla2x5LWNlcnQtZW1wbG95ZXItZ3JpZC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDbGFpbWFudFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jbGFpbWFudC1zZXJ2aWNlL2NsYWltYW50LnNlcnZpY2UnO1xyXG5pbXBvcnQge1dlZWtseUNlcnRTZXJ2aWNlVjJ9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3dlZWtseS1jZXJ0L3dlZWtseS1jZXJ0LXYyLnNlcnZpY2UnO1xyXG5pbXBvcnQge1BhcnRpYWxFbXBsb3ltZW50TW9kZWx9IGZyb20gJy4uLy4uL21vZGVscy9QYXJ0aWFsRW1wbG95bWVudE1vZGVsJztcclxuaW1wb3J0IHsgTG9naW5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbG9naW4vbG9naW4uc2VydmljZSc7XHJcblxyXG5pbnRlcmZhY2UgVmFsdWVDaGFuZ2VDb21wb25lbnRNb2RlbCB7XHJcbiAgb3JpZ2luYWxWYWx1ZUNvbnRyb2w6IHN0cmluZztcclxuICBmb3JtQ29udHJvbFRvVXBkYXRlOiBzdHJpbmc7XHJcbn1cclxuXHJcbmludGVyZmFjZSBFbXBsb3llckFkZHJlc3NVcGRhdGVNb2RlbCB7XHJcbiAgYWRkcmVzc0Zvcm1Db250cm9sTmFtZTogc3RyaW5nO1xyXG4gIGVtcGxveWVySWRGb3JtQ29udHJvbE5hbWU6IHN0cmluZztcclxufVxyXG5cclxuaW50ZXJmYWNlIE1pbk1heERhdGVNb2RlbCB7XHJcbiAgbWluRGF0ZUtleTogc3RyaW5nO1xyXG4gIG1heERhdGVLZXk6IHN0cmluZztcclxufVxyXG5cclxuaW50ZXJmYWNlIE1pbk1heFZhbHVlTW9kZWwge1xyXG4gIG1pblZhbHVlOiBzdHJpbmc7XHJcbiAgbWF4VmFsdWU6IHN0cmluZztcclxufVxyXG5cclxuaW50ZXJmYWNlIExpbmtDb21wb25lbnRNb2RlbCB7XHJcbiAgdXJpOiBzdHJpbmc7XHJcbiAgZXh0ZXJuYWxVcmw6IHN0cmluZztcclxuICB0ZXh0OiBzdHJpbmc7XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLXF1ZXN0aW9uJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZHluYW1pYy1mb3JtLXF1ZXN0aW9uLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9keW5hbWljLWZvcm0tcXVlc3Rpb24uY29tcG9uZW50LnNjc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LkRlZmF1bHQsXHJcbiAgYW5pbWF0aW9uczogW3Jvd0V4cGFuc2lvblRyaWdnZXJdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRHluYW1pY0Zvcm1RdWVzdGlvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XHJcbiAgQElucHV0KCkgcXVlc3Rpb246IEVsZW1lbnRzTW9kZWw7XHJcbiAgQElucHV0KCkgZm9ybTogVW50eXBlZEZvcm1Hcm91cDtcclxuICBASW5wdXQoKSBpbmRleE51bWJlcjogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIGZvclNjcmVlblF1ZXN0aW9ubmFpcmU6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgZHluYW1pY1BhcmFtOiBhbnk7XHJcbiAgQElucHV0KCkgcG90ZW50aWFsSXNzdWVJZDogbnVtYmVyO1xyXG5cclxuICBAT3V0cHV0KCkgb25EeW5hbWljUGFyYW1VcGRhdGU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBmaWx0ZXJSZXN1bHQ6IGFueVtdO1xyXG4gIG1pbkRhdGU6IERhdGU7XHJcbiAgbGVnYWxBY2NlcHRlZDogYm9vbGVhbiA9IG51bGw7XHJcbiAgbWF4RGF0ZTogRGF0ZTtcclxuICBpbmRleDogbnVtYmVyID0gMTtcclxuICByZXR1cm5Nb2RlbCA9IG5ldyBWYWxpZGF0aW9uTW9kZWwoKTtcclxuICBkaXNwbGF5UG9zaXRpb246IGJvb2xlYW47XHJcbiAgcG9zaXRpb246IHN0cmluZztcclxuICBwb3BVcEhlYWRlcjogc3RyaW5nO1xyXG4gIHBvcFVwVGV4dDogc3RyaW5nO1xyXG4gIHBvcFVwWWVzQWN0aW9uTGFiZWw6IHN0cmluZztcclxuICBwb3BVcE5vQWN0aW9uTGFiZWw6IHN0cmluZztcclxuICBtYXNrQ2xhc3MgPSB0cnVlO1xyXG4gIHNob3dNaW5EYXRlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgc2hvd01heERhdGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBtaW5WYWx1ZSA9IG51bGw7XHJcbiAgbWF4VmFsdWUgPSBudWxsO1xyXG4gIHRvRGF5RGF0ZSA9IG5ldyBEYXRlKCk7XHJcbiAgY3VycmVudGZsb3drZXk6IHN0cmluZztcclxuICByZWdpc3RlckNsYWltYW50RmxhZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHBob25lVmVyaWZpZWQ6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIGlzRmllbGREaXNhYmxlZDogYm9vbGVhbiA9IHRydWU7XHJcbiAgcGFydEVtcE1vZGVsID0gbmV3IFBhcnRpYWxFbXBsb3ltZW50TW9kZWwoKTtcclxuICBpc090cE1vZGFsRW5hYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBpc1JldHVybmluZ1VzZXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuICB3Y0VtcGxveWVyVmFsaWRhdGlvbk1zZzogc3RyaW5nO1xyXG5cclxuICBtaW5EYXRlRE9COiBEYXRlID0gbmV3IERhdGUoXHJcbiAgICB0aGlzLnRvRGF5RGF0ZS5nZXRGdWxsWWVhcigpIC0gMTAwLFxyXG4gICAgdGhpcy50b0RheURhdGUuZ2V0TW9udGgoKSxcclxuICAgIHRoaXMudG9EYXlEYXRlLmdldERhdGUoKVxyXG4gICk7XHJcbiAgbWF4RGF0ZURPQjogRGF0ZSA9IG5ldyBEYXRlKFxyXG4gICAgdGhpcy50b0RheURhdGUuZ2V0RnVsbFllYXIoKSAtIDEwLFxyXG4gICAgdGhpcy50b0RheURhdGUuZ2V0TW9udGgoKSxcclxuICAgIHRoaXMudG9EYXlEYXRlLmdldERhdGUoKVxyXG4gICk7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2JhbmtkdGxzJykgYmFua2R0bHM6IEJhbmtEZXRhaWxzQ29tcG9uZW50O1xyXG4gIEBWaWV3Q2hpbGRyZW4oJ2FkZHJlc3MnKSBhZGRyZXNzZXM6IFF1ZXJ5TGlzdDxBZGRyZXNzQ29tcG9uZW50PjtcclxuICBAVmlld0NoaWxkKCd3Y0VtcGxveWVyR3JpZCcpIHdjRW1wbG95ZXJHcmlkOiBXZWVrbHlDZXJ0RW1wbG95ZXJHcmlkQ29tcG9uZW50O1xyXG4gIEBWaWV3Q2hpbGQoJ3BDYWxlbmRhcicpIHBDYWxlbmRhcjogRWxlbWVudFJlZjtcclxuXHJcbiAgbGlua0NvbXBvbmVudERhdGE6IExpbmtDb21wb25lbnRNb2RlbDtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHFjczogUXVlc3Rpb25Db250cm9sU2VydmljZSxcclxuICAgIHB1YmxpYyBzZXJ2aWNlOiBRdWVzdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcclxuICAgIHB1YmxpYyB2YWxpZGF0aW9uU2VydmljZTogVmFsaWRhdGlvblNlcnZpY2UsXHJcbiAgICBwdWJsaWMgdXRpbDogVXRpbFNlcnZpY2UsXHJcbiAgICBwdWJsaWMgbmF2Q29udHJvbGxlcjogTmF2Q29udHJvbGxlcixcclxuICAgIHByaXZhdGUgbG9nZ2VyOiBMb2dnZXJTZXJ2aWNlLFxyXG4gICAgcHVibGljIGNsYWltYW50U2VydmljZTogQ2xhaW1hbnRTZXJ2aWNlLFxyXG4gICAgcHVibGljIHdlZWtseWNlcnRTZXJ2aWNlOiBXZWVrbHlDZXJ0U2VydmljZVYyLFxyXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxyXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxyXG4gICAgcHJpdmF0ZSBsczogTG9naW5TZXJ2aWNlXHJcbiAgKSB7fVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5wQ2FsZW5kYXIpIHtcclxuICAgICAgdGhpcy5tb2RpZnlDYWxlbmRhckF0dHJpYnV0ZXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHZpc2libGVJZihzdHJFeHA6IHN0cmluZywgZWxlbWVudE5hbWU6IHN0cmluZykge1xyXG4gICAgaWYgKCFzdHJFeHApIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IGlzVmlzaWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgaWYgKHN0ckV4cC5pbmNsdWRlcygnJiYnKSkge1xyXG4gICAgICBsZXQgZXhwcjogc3RyaW5nW10gPSBzdHJFeHAuc3BsaXQoJyYmJyk7XHJcbiAgICAgIGlzVmlzaWJsZSA9XHJcbiAgICAgICAgdGhpcy5jYWxjdWxhdGVPcGVyYW5kVmFsdWUoZXhwclswXSkgJiZcclxuICAgICAgICB0aGlzLmNhbGN1bGF0ZU9wZXJhbmRWYWx1ZShleHByWzFdKTtcclxuICAgICAgaWYgKGV4cHIubGVuZ3RoID49IDMpIHtcclxuICAgICAgICBpc1Zpc2libGUgPSBpc1Zpc2libGUgJiYgdGhpcy5jYWxjdWxhdGVPcGVyYW5kVmFsdWUoZXhwclsyXSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGV4cHIubGVuZ3RoID49IDQpIHtcclxuICAgICAgICBpc1Zpc2libGUgPSBpc1Zpc2libGUgJiYgdGhpcy5jYWxjdWxhdGVPcGVyYW5kVmFsdWUoZXhwclszXSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGV4cHIubGVuZ3RoID09IDUpIHtcclxuICAgICAgICBpc1Zpc2libGUgPSBpc1Zpc2libGUgJiYgdGhpcy5jYWxjdWxhdGVPcGVyYW5kVmFsdWUoZXhwcls0XSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGV4cHIubGVuZ3RoID4gNSkge1xyXG4gICAgICAgIHRocm93IFwiQXBwVmFsaWRhdG9ycyA6IE1vcmUgdGhhbiA1ICcmJicgZXhwcmVzc2lvbnMgYXJlIG5vdCBzdXBwb3J0ZWQuXCI7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChzdHJFeHAuaW5jbHVkZXMoJ3x8JykpIHtcclxuICAgICAgbGV0IGV4cHI6IHN0cmluZ1tdID0gc3RyRXhwLnNwbGl0KCd8fCcpO1xyXG4gICAgICBpc1Zpc2libGUgPVxyXG4gICAgICAgIHRoaXMuY2FsY3VsYXRlT3BlcmFuZFZhbHVlKGV4cHJbMF0pIHx8XHJcbiAgICAgICAgdGhpcy5jYWxjdWxhdGVPcGVyYW5kVmFsdWUoZXhwclsxXSk7XHJcbiAgICAgIGlmIChleHByLmxlbmd0aCA+PSAzKSB7XHJcbiAgICAgICAgaXNWaXNpYmxlID0gaXNWaXNpYmxlIHx8IHRoaXMuY2FsY3VsYXRlT3BlcmFuZFZhbHVlKGV4cHJbMl0pO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChleHByLmxlbmd0aCA+PSA0KSB7XHJcbiAgICAgICAgaXNWaXNpYmxlID0gaXNWaXNpYmxlIHx8IHRoaXMuY2FsY3VsYXRlT3BlcmFuZFZhbHVlKGV4cHJbM10pO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChleHByLmxlbmd0aCA9PSA1KSB7XHJcbiAgICAgICAgaXNWaXNpYmxlID0gaXNWaXNpYmxlIHx8IHRoaXMuY2FsY3VsYXRlT3BlcmFuZFZhbHVlKGV4cHJbNF0pO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChleHByLmxlbmd0aCA+IDUpIHtcclxuICAgICAgICB0aHJvdyBcIkFwcFZhbGlkYXRvcnMgOiBNb3JlIHRoYW4gNSAnfHwnIGV4cHJlc3Npb25zIGFyZSBub3Qgc3VwcG9ydGVkLlwiO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGlzVmlzaWJsZSkge1xyXG4gICAgICByZXR1cm4gaXNWaXNpYmxlO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc2V0Rm9ybUNvbnRyb2xWYWx1ZShlbGVtZW50TmFtZSwgbnVsbCk7XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBjYWxjdWxhdGVPcGVyYW5kVmFsdWUoc3RyRXhwOiBzdHJpbmcpIHtcclxuICAgIHZhciBzcGxpdEFycmF5OiBzdHJpbmdbXTtcclxuICAgIGxldCBpc0RvZXNOb3RFcXVhbDogYm9vbGVhbjtcclxuICAgIGxldCBpbmRleDogbnVtYmVyID0gc3RyRXhwLmluZGV4T2YoJyE9Jyk7XHJcbiAgICBpZiAoaW5kZXggPT09IC0xKSB7XHJcbiAgICAgIHNwbGl0QXJyYXkgPSBzdHJFeHAuc3BsaXQoJz09Jyk7XHJcbiAgICAgIGlzRG9lc05vdEVxdWFsID0gZmFsc2U7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBzcGxpdEFycmF5ID0gc3RyRXhwLnNwbGl0KCchPScpO1xyXG4gICAgICBpc0RvZXNOb3RFcXVhbCA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBsZXQgb3BlcmFuZDE6IHN0cmluZyA9IHNwbGl0QXJyYXlbMF07XHJcbiAgICBsZXQgb3BlcmFuZDI6IHN0cmluZyA9IHNwbGl0QXJyYXlbMV07XHJcbiAgICBvcGVyYW5kMSA9IG9wZXJhbmQxLnJlcGxhY2UoJ3snLCAnJykucmVwbGFjZSgnfScsICcnKS50cmltKCk7IC8vY2xhaW1hbnRQcmlvclBheTEwMiBkaWZmbWFpbGFkZHJlc3MzMTVcclxuICAgIG9wZXJhbmQyID0gb3BlcmFuZDIucmVwbGFjZSgneycsICcnKS5yZXBsYWNlKCd9JywgJycpLnRyaW0oKTsgLy9udWxsXHJcbiAgICBpZiAodGhpcy5mb3JtLmNvbnRyb2xzW29wZXJhbmQxXSkge1xyXG4gICAgICB2YXIgdmFsdWVPZkNucnRybFRvQ2hlY2s7XHJcblxyXG4gICAgICBpZiAoXHJcbiAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzW29wZXJhbmQxXS52YWx1ZSAmJlxyXG4gICAgICAgIHR5cGVvZiB0aGlzLmZvcm0uY29udHJvbHNbb3BlcmFuZDFdLnZhbHVlID09PSAnc3RyaW5nJ1xyXG4gICAgICApIHtcclxuICAgICAgICB2YWx1ZU9mQ25ydHJsVG9DaGVjayA9IHRoaXMuZm9ybS5jb250cm9sc1tvcGVyYW5kMV0udmFsdWU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChcclxuICAgICAgICB0aGlzLmZvcm0uY29udHJvbHNbb3BlcmFuZDFdLnZhbHVlICYmXHJcbiAgICAgICAgdHlwZW9mIHRoaXMuZm9ybS5jb250cm9sc1tvcGVyYW5kMV0udmFsdWUgIT0gJ3N0cmluZydcclxuICAgICAgKSB7XHJcbiAgICAgICAgdmFsdWVPZkNucnRybFRvQ2hlY2sgPSB0aGlzLmZvcm0uY29udHJvbHNbb3BlcmFuZDFdLnZhbHVlWyd2YWx1ZSddO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAob3BlcmFuZDIgPT09ICdudWxsJyAmJiBpc0RvZXNOb3RFcXVhbCAmJiB2YWx1ZU9mQ25ydHJsVG9DaGVjaykge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChvcGVyYW5kMiA9PT0gJ251bGwnICYmICFpc0RvZXNOb3RFcXVhbCAmJiAhdmFsdWVPZkNucnRybFRvQ2hlY2spIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgICBvcGVyYW5kMiA9IG9wZXJhbmQyLnJlcGxhY2UoXCInXCIsICcnKS5yZXBsYWNlKFwiJ1wiLCAnJykudHJpbSgpOyAvL251bGxcclxuXHJcbiAgICAgIGlmIChcclxuICAgICAgICBvcGVyYW5kMiAhPSAnbnVsbCcgJiZcclxuICAgICAgICAhaXNEb2VzTm90RXF1YWwgJiZcclxuICAgICAgICB2YWx1ZU9mQ25ydHJsVG9DaGVjayA9PT0gb3BlcmFuZDJcclxuICAgICAgKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChcclxuICAgICAgICBvcGVyYW5kMiAhPSAnbnVsbCcgJiZcclxuICAgICAgICBpc0RvZXNOb3RFcXVhbCAmJlxyXG4gICAgICAgIHZhbHVlT2ZDbnJ0cmxUb0NoZWNrICE9IG9wZXJhbmQyXHJcbiAgICAgICkge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIC8vICAgdGhpcy5sb2dnZXIuZGVidWcoJ2lzIER5bmFtaWNGb3JtUXVlc3Rpb25Db21wb25lbnQgbmdPbkluaXQgY2FsbGVkJywgdGhpcy5xdWVzdGlvbilcclxuICAgIHRoaXMuZ2V0UGFydGlhbEVtcGxveW1lbnRJbmZvKCk7XHJcbiAgICB0aGlzLmZpbHRlclJlc3VsdCA9IHRoaXMucXVlc3Rpb24uY2hvaWNlcztcclxuICAgIHRoaXMuc2V0TWluTWF4RGF0ZSgpO1xyXG4gICAgdGhpcy5zZXRNaW5NYXhWYWx1ZSgpO1xyXG4gICAgdGhpcy5zZXREZWZhdWx0VmFsdWUoKTtcclxuICAgIHRoaXMuc2V0TGlua0NvbXBvbmVudERhdGEoKTtcclxuICAgIGxldCBjdXJyZW50UWVzID0gdGhpcy5zZXJ2aWNlLnNlYXJjaEJzLmdldFZhbHVlKCk7XHJcbiAgICB0aGlzLmN1cnJlbnRmbG93a2V5ID0gY3VycmVudFFlcy5mbG93S2V5O1xyXG4gICAgaWYoKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdkaXNhYmxlRmllbGRzT25TaWdudXAnKSA9PT0gJ3RydWUnKSAmJiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImZsb3dLZXlcIikgPT0gJzM0NScpe1xyXG4gICAgICB0aGlzLmRpc2FibGVGaWVsZHMoKTtcclxuICAgIH1cclxuICAgIGlmKGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwibGFuZ3VhZ2VcIikgPT09IFwiZXNcIil7XHJcbiAgICAgIHRoaXMud2NFbXBsb3llclZhbGlkYXRpb25Nc2cgPSAnRWwgw7psdGltbyBkw61hIHRyYWJhamFkbyBxdWUgZmlndXJhIGVuIHN1IHNvbGljaXR1ZCBjb3JyZXNwb25kZSBhIGVzdGEgc2VtYW5hOyBwb3IgbG8gdGFudG8sIGRlYmUgc2VsZWNjaW9uYXIgXCJzw61cIiBlbiBsYSBwcmVndW50YSBcIsK/UmVhbGl6w7MgYWxnw7puIHRyYWJham8gZHVyYW50ZSBsYSBzZW1hbmE/XCInO1xyXG4gICAgfWVsc2Uge1xyXG4gICAgICB0aGlzLndjRW1wbG95ZXJWYWxpZGF0aW9uTXNnID0gJ1RoZSBsYXN0IGRheSB3b3JrZWQgcmVwb3J0ZWQgb24geW91ciBjbGFpbSBmYWxscyB3aXRoaW4gdGhpcyB3ZWVrLCB5b3UgbXVzdCBzZWxlY3QgXCJ5ZXNcIiBmb3IgXCJEaWQgeW91IHBlcmZvcm0gYW55IHdvcmsgZHVyaW5nIHRoZSB3ZWVrP1wiJztcclxuICAgIH1cclxuICB9XHJcbiAgY2hlY2tGbG93S2V5KCkge1xyXG4gICAgaWYgKHRoaXMuY3VycmVudGZsb3drZXkgPT09ICdyZWdpc3Rlci1jbGFpbWFudCcpIHtcclxuICAgICAgLy9jb25zb2xlLmluZm8oXCJjdXJyZW50Zmxvd2tleSBcIix0aGlzLmN1cnJlbnRmbG93a2V5KVxyXG4gICAgICByZXR1cm4gKHRoaXMucmVnaXN0ZXJDbGFpbWFudEZsYWcgPSB0cnVlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnJlZ2lzdGVyQ2xhaW1hbnRGbGFnO1xyXG4gICAgfVxyXG4gIH1cclxuICAvLyBwaG9uZU51bWJlclZlcmlmaWVkKCk6IGJvb2xlYW57XHJcbiAgLy8gICByZXR1cm4gdGhpcy5waG9uZVZlcmlmaWVkLFxyXG4gIC8vIH1cclxuXHJcbiAgZGlzYWJsZUZpZWxkcygpIHtcclxuICAgIGlmICh0aGlzLmNoZWNrRmxvd0tleSgpKSB7XHJcbiAgICAgIHRoaXMuZm9ybS5nZXQoJ3Bob25lJykuZGlzYWJsZSgpO1xyXG4gICAgICB0aGlzLmZvcm0uZ2V0KCdlbWFpbCcpLmRpc2FibGUoKTtcclxuICAgICAgdGhpcy5mb3JtLmdldCgndXNlcm5hbWUnKS5kaXNhYmxlKCk7XHJcbiAgICAgIHRoaXMuZm9ybS5nZXQoJ3Bhc3N3b3JkJykuZGlzYWJsZSgpO1xyXG4gICAgICB0aGlzLmZvcm0uZ2V0KCdjb25maXJtUGFzc3dvcmQnKS5kaXNhYmxlKCk7XHJcbiAgICAgIHRoaXMuZm9ybS5nZXQoJ3NlY1F1ZXMxJykuZGlzYWJsZSgpO1xyXG4gICAgICB0aGlzLmZvcm0uZ2V0KCdzZWNBbnMxJykuZGlzYWJsZSgpO1xyXG4gICAgICB0aGlzLmZvcm0uZ2V0KCdzZWNRdWVzMicpLmRpc2FibGUoKTtcclxuICAgICAgdGhpcy5mb3JtLmdldCgnc2VjQW5zMicpLmRpc2FibGUoKTtcclxuICAgICAgdGhpcy5mb3JtLmdldCgnc2VjUXVlczMnKS5kaXNhYmxlKCk7XHJcbiAgICAgIHRoaXMuZm9ybS5nZXQoJ3NlY0FuczMnKS5kaXNhYmxlKCk7XHJcbiAgICAgIHRoaXMuZm9ybS5nZXQoJ3Jlc0FkcmVzcycpLmRpc2FibGUoKTtcclxuICAgICAgdGhpcy5mb3JtLmdldCgnZGlmZm1haWxhZGRyZXNzJykuZGlzYWJsZSgpO1xyXG4gICAgICAvL3RoaXMuZm9ybS5nZXQoJ21haWxhZGRyZXNzJykuZGlzYWJsZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZW5hYmxlRmllbGRzKCkge1xyXG4gICAgdGhpcy5mb3JtLmdldCgnZW1haWwnKS5lbmFibGUoKTtcclxuICAgIHRoaXMuZm9ybS5nZXQoJ3VzZXJuYW1lJykuZW5hYmxlKCk7XHJcbiAgICB0aGlzLmZvcm0uZ2V0KCdwYXNzd29yZCcpLmVuYWJsZSgpO1xyXG4gICAgdGhpcy5mb3JtLmdldCgnY29uZmlybVBhc3N3b3JkJykuZW5hYmxlKCk7XHJcbiAgICB0aGlzLmZvcm0uZ2V0KCdzZWNRdWVzMScpLmVuYWJsZSgpO1xyXG4gICAgdGhpcy5mb3JtLmdldCgnc2VjQW5zMScpLmVuYWJsZSgpO1xyXG4gICAgdGhpcy5mb3JtLmdldCgnc2VjUXVlczInKS5lbmFibGUoKTtcclxuICAgIHRoaXMuZm9ybS5nZXQoJ3NlY0FuczInKS5lbmFibGUoKTtcclxuICAgIHRoaXMuZm9ybS5nZXQoJ3NlY1F1ZXMzJykuZW5hYmxlKCk7XHJcbiAgICB0aGlzLmZvcm0uZ2V0KCdzZWNBbnMzJykuZW5hYmxlKCk7XHJcbiAgICB0aGlzLmZvcm0uZ2V0KCdyZXNBZHJlc3MnKS5lbmFibGUoKTtcclxuICAgIHRoaXMuZm9ybS5nZXQoJ2RpZmZtYWlsYWRkcmVzcycpLmVuYWJsZSgpO1xyXG4gICAgLy90aGlzLmZvcm0uZ2V0KCdtYWlsYWRkcmVzcycpLmVuYWJsZSgpO1xyXG4gIH1cclxuXHJcbiAgY2hlY2tJZlVzZXJFeGlzdCgpIHtcclxuICAgIC8vIGNvbnNvbGUuaW5mbyhcImRvYiBcIiwgdGhpcy5mb3JtLmdldChcImRvYlwiKS52YWx1ZSk7XHJcbiAgICBpZiAoXHJcbiAgICAgICF0aGlzLmZvcm0uZ2V0KCdzc24nKS52YWx1ZSAmJlxyXG4gICAgICAhdGhpcy5mb3JtLmdldCgnZG9iJykudmFsdWUgJiZcclxuICAgICAgIXRoaXMuY2hlY2tGbG93S2V5KClcclxuICAgICkge1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbGV0IHNzbmZyb211c2VyID0gdGhpcy5mb3JtLmdldCgnc3NuJykudmFsdWU7XHJcbiAgICAgIGxldCBkYXRlT2ZiaXJ0aCA9IHRoaXMuZm9ybS5nZXQoJ2RvYicpLnZhbHVlO1xyXG4gICAgICAvL2NvbnNvbGUuaW5mbyhcInRlc3Qgd2l0aCBzc25mcm9tdXNlciBcIiwgc3NuZnJvbXVzZXIpO1xyXG4gICAgICBsZXQgZm9ybWF0ZWREID0gZGF0ZU9mYmlydGgucmVwbGFjZSgvXFwvL2csXCItXCIpO1xyXG4gICAgICBpZihkYXRlT2ZiaXJ0aCAhPSBudWxsICYmIHNzbmZyb211c2VyICE9IG51bGwpe1xyXG4gICAgICAgIHRoaXMuY2xhaW1hbnRTZXJ2aWNlLmNoZWNrSWZVc2VyQWxyZWFkeUV4aXN0KHNzbmZyb211c2VyLGZvcm1hdGVkRCkuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgKHgpID0+IHtcclxuICAgICAgICAgICAgaWYoeCE9bnVsbCl7XHJcbiAgICAgICAgICAgICAgdGhpcy5kaXNhYmxlRmllbGRzKCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5mb3JtLmdldCgncGhvbmUnKS5zZXRWYWx1ZSh4LnRvU3RyaW5nKCkpO1xyXG4gICAgICAgICAgICAgIGlmICh3aW5kb3dbXCJlbnZcIl1bXCJlbnZpcm9ubWVudFwiXSA9PT0gXCJrc3Byb2RcIikge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtLmdldCgncGhvbmUnKS5kaXNhYmxlKCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIC8qKkRlbGV0ZSB0aGUgZWxzZSBibG9jayBhZnRlciB0aGUgd29ya3NoYXJlIHRlc3RpbmcgaXMgZG9uZSAqL1xyXG4gICAgICAgICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm0uZ2V0KCdwaG9uZScpLmRpc2FibGUoKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5kaXNhYmxlRmllbGRzKCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5mb3JtLmdldCgncGhvbmUnKS5lbmFibGUoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIChlcnIpID0+IHsgXHJcbiAgICAgICAgICAgIGlmKGVyci5lcnJvckNvZGU9PT1cIjQwNFwiKXtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgdGhpcy51dGlsLmhpZGVMb2FkZXIoKTtcclxuICAgICAgICAgICAgdGhpcy51dGlsLmVycm9ySGFuZGxlcihlcnIpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgIH1cclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICAgIFxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0UGFydGlhbEVtcGxveW1lbnRJbmZvKCkge1xyXG4gICAgaWYgKHRoaXMucXVlc3Rpb24ubmFtZSA9PT0gJ3dvcmtQZXJmb3JtZWQnKSB7XHJcbiAgICAgIHRoaXMud2Vla2x5Y2VydFNlcnZpY2VcclxuICAgICAgICAuZ2V0UGFydGlhbEVtcGxveW1lbnQoKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKHJlczogUGFydGlhbEVtcGxveW1lbnRNb2RlbCkgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlcy5wYXJ0aWFsRW1wbG95bWVudEZsYWcgPT09ICcxJykge1xyXG4gICAgICAgICAgICB0aGlzLmZvcm0udmFsdWVbdGhpcy5xdWVzdGlvbi5uYW1lXSA9ICdZJztcclxuICAgICAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMucXVlc3Rpb24ubmFtZV0uYWRkVmFsaWRhdG9ycyhcclxuICAgICAgICAgICAgICAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY29udHJvbC52YWx1ZSAhPT0gJ1knID8geyB3Y0VtcGxveWVyVmFsaWRhdGlvbjogdHJ1ZSB9IDogbnVsbDtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRMaW5rQ29tcG9uZW50RGF0YSgpIHtcclxuICAgIGlmICh0aGlzLnF1ZXN0aW9uLmNvbXBvbmVudE5hbWUgPT0gJ2FwcC1saW5rJykge1xyXG4gICAgICB0aGlzLmxpbmtDb21wb25lbnREYXRhID0gdGhpcy5xdWVzdGlvbi5jb21wb25lbnREYXRhXHJcbiAgICAgICAgPyBKU09OLnBhcnNlKHRoaXMucXVlc3Rpb24uY29tcG9uZW50RGF0YSlcclxuICAgICAgICA6IG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzaG93TGFiZWxGb3JDdXN0b21Db21wb25lbnQoKSB7XHJcbiAgICBsZXQgcGFyc2VkRGF0YSA9IHRoaXMucXVlc3Rpb24uY29tcG9uZW50RGF0YVxyXG4gICAgICA/IEpTT04ucGFyc2UodGhpcy5xdWVzdGlvbi5jb21wb25lbnREYXRhKVxyXG4gICAgICA6IG51bGw7XHJcbiAgICByZXR1cm4gcGFyc2VkRGF0YT8uc2hvd0xhYmVsID09ICdZJztcclxuICB9XHJcblxyXG4gIHNldE1pbk1heFZhbHVlKCkge1xyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLnF1ZXN0aW9uLnR5cGUgPT09ICdudW1iZXInIHx8XHJcbiAgICAgIHRoaXMucXVlc3Rpb24udHlwZSA9PT0gJ2RlY2ltYWwnIHx8XHJcbiAgICAgIHRoaXMucXVlc3Rpb24udHlwZSA9PT0gJ2N1cnJlbmN5J1xyXG4gICAgKSB7XHJcbiAgICAgIGxldCBtaW5NYXhNb2RlbDogTWluTWF4VmFsdWVNb2RlbCA9IHRoaXMucXVlc3Rpb24uY29tcG9uZW50RGF0YVxyXG4gICAgICAgID8gSlNPTi5wYXJzZSh0aGlzLnF1ZXN0aW9uLmNvbXBvbmVudERhdGEpXHJcbiAgICAgICAgOiBudWxsO1xyXG4gICAgICBpZiAobWluTWF4TW9kZWwpIHtcclxuICAgICAgICBpZiAobWluTWF4TW9kZWwubWluVmFsdWUpIHtcclxuICAgICAgICAgIHRoaXMubWluVmFsdWUgPSBtaW5NYXhNb2RlbC5taW5WYWx1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG1pbk1heE1vZGVsLm1heFZhbHVlKSB7XHJcbiAgICAgICAgICB0aGlzLm1heFZhbHVlID0gbWluTWF4TW9kZWwubWF4VmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRNaW5NYXhEYXRlKCkge1xyXG4gICAgaWYgKHRoaXMucXVlc3Rpb24uaW5wdXRUeXBlID09PSAnZGF0ZScpIHtcclxuICAgICAgbGV0IG1pbk1heE1vZGVsOiBNaW5NYXhEYXRlTW9kZWwgPSB0aGlzLnF1ZXN0aW9uLmNvbXBvbmVudERhdGFcclxuICAgICAgICA/IEpTT04ucGFyc2UodGhpcy5xdWVzdGlvbi5jb21wb25lbnREYXRhKVxyXG4gICAgICAgIDogbnVsbDtcclxuICAgICAgaWYgKG1pbk1heE1vZGVsICYmIChtaW5NYXhNb2RlbC5tYXhEYXRlS2V5IHx8IG1pbk1heE1vZGVsLm1pbkRhdGVLZXkpKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZHluYW1pY1BhcmFtW21pbk1heE1vZGVsLm1pbkRhdGVLZXldKSB7XHJcbiAgICAgICAgICB0aGlzLnBhcnNlRGF0ZSh0aGlzLmR5bmFtaWNQYXJhbVttaW5NYXhNb2RlbC5taW5EYXRlS2V5XSwgJ21pbicpO1xyXG4gICAgICAgICAgdGhpcy5zaG93TWluRGF0ZSA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLmR5bmFtaWNQYXJhbVttaW5NYXhNb2RlbC5tYXhEYXRlS2V5XSkge1xyXG4gICAgICAgICAgdGhpcy5wYXJzZURhdGUodGhpcy5keW5hbWljUGFyYW1bbWluTWF4TW9kZWwubWF4RGF0ZUtleV0sICdtYXgnKTtcclxuICAgICAgICAgIHRoaXMuc2hvd01heERhdGUgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAodGhpcy5xdWVzdGlvbi5taW4pIHtcclxuICAgICAgICAgIHRoaXMucGFyc2VEYXRlKHRoaXMucXVlc3Rpb24ubWluLCAnbWluJyk7XHJcbiAgICAgICAgICB0aGlzLnNob3dNaW5EYXRlID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMucXVlc3Rpb24ubWF4KSB7XHJcbiAgICAgICAgICB0aGlzLnBhcnNlRGF0ZSh0aGlzLnF1ZXN0aW9uLm1heCwgJ21heCcpO1xyXG4gICAgICAgICAgdGhpcy5zaG93TWF4RGF0ZSA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIHBhcnNlRGF0ZShzdHJEYXRlOiBzdHJpbmcsIHR5cGU6IHN0cmluZyk6IERhdGUge1xyXG4gICAgaWYgKHN0ckRhdGUgJiYgdHlwZSA9PT0gJ21heCcpIHtcclxuICAgICAgdmFyIHNwbGl0QXJyYXkgPSBzdHJEYXRlLnNwbGl0KCctJyk7XHJcbiAgICAgIHRoaXMubWF4RGF0ZSA9IG5ldyBEYXRlKCk7XHJcbiAgICAgIHRoaXMubWF4RGF0ZS5zZXRNb250aChOdW1iZXIoc3BsaXRBcnJheVswXSkgLSAxKTtcclxuICAgICAgdGhpcy5tYXhEYXRlLnNldEZ1bGxZZWFyKE51bWJlcihzcGxpdEFycmF5WzJdKSk7XHJcbiAgICAgIHRoaXMubWF4RGF0ZS5zZXREYXRlKE51bWJlcihzcGxpdEFycmF5WzFdKSk7XHJcbiAgICAgIHJldHVybiB0aGlzLm1heERhdGU7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHN0ckRhdGUgJiYgdHlwZSA9PT0gJ21pbicpIHtcclxuICAgICAgdmFyIHNwbGl0QXJyYXkgPSBzdHJEYXRlLnNwbGl0KCctJyk7XHJcbiAgICAgIHRoaXMubWluRGF0ZSA9IG5ldyBEYXRlKCk7XHJcbiAgICAgIHRoaXMubWluRGF0ZS5zZXRNb250aChOdW1iZXIoc3BsaXRBcnJheVswXSkgLSAxKTtcclxuICAgICAgdGhpcy5taW5EYXRlLnNldEZ1bGxZZWFyKE51bWJlcihzcGxpdEFycmF5WzJdKSk7XHJcbiAgICAgIHRoaXMubWluRGF0ZS5zZXREYXRlKE51bWJlcihzcGxpdEFycmF5WzFdKSk7XHJcbiAgICAgIHJldHVybiB0aGlzLm1pbkRhdGU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRTdHlsZShpbmRlbnQ6IG51bWJlcik6IG9iamVjdCB7XHJcbiAgICBsZXQgcGFkZGluZyA9IGluZGVudCA8PSAxID8gJzAgcHgnIDogaW5kZW50ICogMTAgKyAncHgnO1xyXG5cclxuICAgIGxldCBzdHlsZU9iaiA9IHtcclxuICAgICAgJ3BhZGRpbmctbGVmdCc6IHBhZGRpbmcsXHJcbiAgICB9O1xyXG5cclxuICAgIHJldHVybiBPYmplY3QuYXNzaWduKHN0eWxlT2JqKTtcclxuICB9XHJcblxyXG4gIHNldE1hcmdpbihtYXJnaW46IG51bWJlcik6IG9iamVjdCB7XHJcbiAgICBsZXQgbWFyID0gbWFyZ2luICsgJ3B4JztcclxuICAgIGxldCBzdHlsZU9iaiA9IHtcclxuICAgICAgJ21hcmdpbi1yaWdodCc6IG1hcixcclxuICAgIH07XHJcblxyXG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oc3R5bGVPYmopO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGlzVmFsaWQoKSB7XHJcbiAgICBsZXQgbWVzc2FnZTogc3RyaW5nID0gJyc7XHJcbiAgICBsZXQgcXVlc3Rpb25UeXBlOiBzdHJpbmcgPSB0aGlzLnF1ZXN0aW9uLnR5cGU7XHJcbiAgICBpZiAoXHJcbiAgICAgICdodG1sJyA9PT0gcXVlc3Rpb25UeXBlIHx8XHJcbiAgICAgICdsYWJlbCcgPT09IHF1ZXN0aW9uVHlwZSB8fFxyXG4gICAgICAnc2ltcGxlTGFiZWwnID09PSBxdWVzdGlvblR5cGUgfHxcclxuICAgICAgJ2Rpc3BsYXl0ZXh0YXNsYWJlbCcgPT09IHF1ZXN0aW9uVHlwZSB8fFxyXG4gICAgICAoJ2J1dHRvbicgPT09IHF1ZXN0aW9uVHlwZSAmJlxyXG4gICAgICAgICF0aGlzLnF1ZXN0aW9uLnZhbGlkYXRvcnMgJiZcclxuICAgICAgICB0aGlzLnF1ZXN0aW9uLmNvbXBvbmVudE5hbWUgIT0gJ2FwcC1zaWduLXNzbicgJiZcclxuICAgICAgICB0aGlzLnF1ZXN0aW9uLmNvbXBvbmVudE5hbWUgIT0gJ2FwcC1saW5rJykgfHxcclxuICAgICAgJ2xhYmVsLXdpdGgtb3ZlcmxheScgPT09IHF1ZXN0aW9uVHlwZVxyXG4gICAgKSB7XHJcbiAgICAgIHJldHVybiAnJztcclxuICAgIH1cclxuICAgIGlmIChcclxuICAgICAgdGhpcy5xdWVzdGlvbiAmJlxyXG4gICAgICB0aGlzLnF1ZXN0aW9uLm5hbWUgJiZcclxuICAgICAgdGhpcy5mb3JtICYmXHJcbiAgICAgIHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLnF1ZXN0aW9uLm5hbWVdLmVycm9ycz8ucmVxdWlyZWQgJiZcclxuICAgICAgKHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLnF1ZXN0aW9uLm5hbWVdLmRpcnR5IHx8XHJcbiAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMucXVlc3Rpb24ubmFtZV0udG91Y2hlZClcclxuICAgICkge1xyXG4gICAgICB0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5uYW1lXS5tYXJrQXNEaXJ0eSgpO1xyXG4gICAgICByZXR1cm4gdGhpcy5xdWVzdGlvbi5yZXF1aXJlZEVycm9yVGV4dDtcclxuICAgIH1cclxuICAgIGlmIChcclxuICAgICAgdGhpcy5xdWVzdGlvbiAmJlxyXG4gICAgICB0aGlzLnF1ZXN0aW9uLm5hbWUgJiZcclxuICAgICAgdGhpcy5mb3JtICYmXHJcbiAgICAgIHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLnF1ZXN0aW9uLm5hbWVdLmVycm9ycz8ubWF4bGVuZ3RoICYmXHJcbiAgICAgICh0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5uYW1lXS5kaXJ0eSB8fFxyXG4gICAgICAgIHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLnF1ZXN0aW9uLm5hbWVdLnRvdWNoZWQpXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5sb2dnZXIuZGVidWcoJ2Vycm9ycz8ubWF4TGVuZ3RoJywgdGhpcy5xdWVzdGlvbik7XHJcbiAgICAgIHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLnF1ZXN0aW9uLm5hbWVdLm1hcmtBc0RpcnR5KCk7XHJcbiAgICAgIGlmICh0aGlzLnF1ZXN0aW9uLmRlc2NyaXB0aW9uKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucXVlc3Rpb24uZGVzY3JpcHRpb247XHJcbiAgICAgIH1cclxuICAgICAgbGV0IHZhbGlkYXRvckxpc3QgPSB0aGlzLnF1ZXN0aW9uLnZhbGlkYXRvcnM7XHJcbiAgICAgIHZhciBrZWVwR29pbmcgPSB0cnVlO1xyXG4gICAgICB2YWxpZGF0b3JMaXN0LmZvckVhY2goKHZhbGlkYXRvcikgPT4ge1xyXG4gICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKCd2YWxpZGF0b3IudHlwZSAnLCB2YWxpZGF0b3IudHlwZSk7XHJcbiAgICAgICAgaWYgKGtlZXBHb2luZykge1xyXG4gICAgICAgICAgaWYgKHZhbGlkYXRvci50eXBlID09PSAndGV4dCcgJiYgdmFsaWRhdG9yLm1heExlbmd0aCkge1xyXG4gICAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygndmFsaWRhdG9yLnRleHQgJywgdmFsaWRhdG9yLnRleHQpO1xyXG4gICAgICAgICAgICBtZXNzYWdlID0gdmFsaWRhdG9yLnRleHQ7XHJcbiAgICAgICAgICAgIGtlZXBHb2luZyA9IGZhbHNlO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgbWVzc2FnZSA9ICcnO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybiBtZXNzYWdlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChcclxuICAgICAgdGhpcy5xdWVzdGlvbiAmJlxyXG4gICAgICB0aGlzLnF1ZXN0aW9uLm5hbWUgJiZcclxuICAgICAgdGhpcy5mb3JtICYmXHJcbiAgICAgIHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLnF1ZXN0aW9uLm5hbWVdLmVycm9ycz8ucGF0dGVybiAmJlxyXG4gICAgICAodGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMucXVlc3Rpb24ubmFtZV0uZGlydHkgfHxcclxuICAgICAgICB0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5uYW1lXS50b3VjaGVkKVxyXG4gICAgKSB7XHJcbiAgICAgIC8vIHRoaXMubG9nZ2VyLmRlYnVnKCdlcnJvcnM/LnBhdHRlcm4nLHRoaXMucXVlc3Rpb24pXHJcbiAgICAgIGxldCB2YWxpZGF0b3JMaXN0ID0gdGhpcy5xdWVzdGlvbi52YWxpZGF0b3JzO1xyXG4gICAgICB2YXIga2VlcEdvaW5nID0gdHJ1ZTtcclxuXHJcbiAgICAgIHZhbGlkYXRvckxpc3QuZm9yRWFjaCgodmFsaWRhdG9yKSA9PiB7XHJcbiAgICAgICAgLy8gdGhpcy5sb2dnZXIuZGVidWcoJ3ZhbGlkYXRvci50eXBlICcsIHZhbGlkYXRvci50eXBlKVxyXG4gICAgICAgIGlmIChrZWVwR29pbmcpIHtcclxuICAgICAgICAgIGlmICh2YWxpZGF0b3IudHlwZSA9PT0gJ3JlZ2V4Jykge1xyXG4gICAgICAgICAgICAvLyB0aGlzLmxvZ2dlci5kZWJ1ZygndmFsaWRhdG9yLnRleHQgJywgdmFsaWRhdG9yLnRleHQpXHJcbiAgICAgICAgICAgIG1lc3NhZ2UgPSB2YWxpZGF0b3IudGV4dDtcclxuICAgICAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMucXVlc3Rpb24ubmFtZV0ubWFya0FzRGlydHkoKTtcclxuICAgICAgICAgICAga2VlcEdvaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBtZXNzYWdlID0gJyc7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgcmV0dXJuIG1lc3NhZ2U7XHJcbiAgICB9XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMucXVlc3Rpb24gJiZcclxuICAgICAgdGhpcy5xdWVzdGlvbi5uYW1lICYmXHJcbiAgICAgIHRoaXMuZm9ybSAmJlxyXG4gICAgICB0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5uYW1lXS5lcnJvcnM/LmRhdGVDb21wYXJpc2lvbiAmJlxyXG4gICAgICAodGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMucXVlc3Rpb24ubmFtZV0uZGlydHkgfHxcclxuICAgICAgICB0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5uYW1lXS50b3VjaGVkKVxyXG4gICAgKSB7XHJcbiAgICAgIGxldCB2YWxpZGF0b3JMaXN0ID0gdGhpcy5xdWVzdGlvbi52YWxpZGF0b3JzO1xyXG4gICAgICB2YXIga2VlcEdvaW5nID0gdHJ1ZTtcclxuICAgICAgbGV0IG1lc3NhZ2U6IHN0cmluZyA9ICcnO1xyXG4gICAgICB2YWxpZGF0b3JMaXN0LmZvckVhY2goKHZhbGlkYXRvcikgPT4ge1xyXG4gICAgICAgIGlmIChrZWVwR29pbmcpIHtcclxuICAgICAgICAgIC8vICAgdGhpcy5sb2dnZXIuZGVidWcoJ3ZhbGlkYXRvci50eXBlLm1pbmxlbmd0aCAnLCB2YWxpZGF0b3IudHlwZSlcclxuICAgICAgICAgIGlmICh2YWxpZGF0b3IudHlwZSA9PT0gJ2V4cHJlc3Npb24nKSB7XHJcbiAgICAgICAgICAgIC8vICB0aGlzLmxvZ2dlci5kZWJ1ZygndmFsaWRhdG9yLnRleHQgJywgdmFsaWRhdG9yLnRleHQpXHJcbiAgICAgICAgICAgIG1lc3NhZ2UgPSB2YWxpZGF0b3IudGV4dDtcclxuICAgICAgICAgICAga2VlcEdvaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLnF1ZXN0aW9uLm5hbWVdLm1hcmtBc0RpcnR5KCk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBtZXNzYWdlID0gJyc7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgcmV0dXJuIG1lc3NhZ2U7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLnF1ZXN0aW9uICYmXHJcbiAgICAgIHRoaXMucXVlc3Rpb24ubmFtZSAmJlxyXG4gICAgICB0aGlzLmZvcm0gJiZcclxuICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMucXVlc3Rpb24ubmFtZV0uZXJyb3JzPy5taW5sZW5ndGggJiZcclxuICAgICAgKHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLnF1ZXN0aW9uLm5hbWVdLmRpcnR5IHx8XHJcbiAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMucXVlc3Rpb24ubmFtZV0udG91Y2hlZClcclxuICAgICkge1xyXG4gICAgICBsZXQgdmFsaWRhdG9yTGlzdCA9IHRoaXMucXVlc3Rpb24udmFsaWRhdG9ycztcclxuICAgICAgdmFyIGtlZXBHb2luZyA9IHRydWU7XHJcbiAgICAgIGxldCBtZXNzYWdlOiBzdHJpbmcgPSAnJztcclxuICAgICAgdmFsaWRhdG9yTGlzdC5mb3JFYWNoKCh2YWxpZGF0b3IpID0+IHtcclxuICAgICAgICBpZiAoa2VlcEdvaW5nKSB7XHJcbiAgICAgICAgICAvL2NvbnNvbGUubG9nKCd2YWxpZGF0b3IudHlwZS5taW5sZW5ndGggJywgdmFsaWRhdG9yLnR5cGUpXHJcbiAgICAgICAgICBpZiAodmFsaWRhdG9yLnR5cGUgPT09ICd0ZXh0Jykge1xyXG4gICAgICAgICAgICAvL2NvbnNvbGUubG9nKCd2YWxpZGF0b3IudGV4dCAnLCB2YWxpZGF0b3IudGV4dClcclxuICAgICAgICAgICAgbWVzc2FnZSA9IHZhbGlkYXRvci50ZXh0O1xyXG4gICAgICAgICAgICB0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5uYW1lXS5tYXJrQXNEaXJ0eSgpO1xyXG4gICAgICAgICAgICBrZWVwR29pbmcgPSBmYWxzZTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIG1lc3NhZ2UgPSAnJztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm4gbWVzc2FnZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMucXVlc3Rpb24gJiZcclxuICAgICAgdGhpcy5xdWVzdGlvbi5uYW1lICYmXHJcbiAgICAgIHRoaXMuZm9ybSAmJlxyXG4gICAgICB0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5uYW1lXS5lcnJvcnM/LnBhc3N3b3JkQ29tcGFyaXNpb24gJiZcclxuICAgICAgKHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLnF1ZXN0aW9uLm5hbWVdLmRpcnR5IHx8XHJcbiAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMucXVlc3Rpb24ubmFtZV0udG91Y2hlZClcclxuICAgICkge1xyXG4gICAgICBsZXQgdmFsaWRhdG9yTGlzdCA9IHRoaXMucXVlc3Rpb24udmFsaWRhdG9ycztcclxuICAgICAgdmFyIGtlZXBHb2luZyA9IHRydWU7XHJcbiAgICAgIGxldCBtZXNzYWdlOiBzdHJpbmcgPSAnJztcclxuICAgICAgdmFsaWRhdG9yTGlzdC5mb3JFYWNoKCh2YWxpZGF0b3IpID0+IHtcclxuICAgICAgICBpZiAoa2VlcEdvaW5nKSB7XHJcbiAgICAgICAgICAvLyAgIGNvbnNvbGUubG9nKCd2YWxpZGF0b3IudHlwZS5taW5sZW5ndGggJywgdmFsaWRhdG9yLnR5cGUpXHJcbiAgICAgICAgICBpZiAodmFsaWRhdG9yLnR5cGUgPT09ICdleHByZXNzaW9uJykge1xyXG4gICAgICAgICAgICAvLyAgY29uc29sZS5sb2coJ3ZhbGlkYXRvci50ZXh0ICcsIHZhbGlkYXRvci50ZXh0KVxyXG4gICAgICAgICAgICBtZXNzYWdlID0gdmFsaWRhdG9yLnRleHQ7XHJcbiAgICAgICAgICAgIHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLnF1ZXN0aW9uLm5hbWVdLm1hcmtBc0RpcnR5KCk7XHJcbiAgICAgICAgICAgIGtlZXBHb2luZyA9IGZhbHNlO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgbWVzc2FnZSA9ICcnO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybiBtZXNzYWdlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChcclxuICAgICAgdGhpcy5xdWVzdGlvbiAmJlxyXG4gICAgICB0aGlzLnF1ZXN0aW9uLm5hbWUgJiZcclxuICAgICAgdGhpcy5mb3JtICYmXHJcbiAgICAgIHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLnF1ZXN0aW9uLm5hbWVdLmVycm9ycz8ucmVxdWlyZWRJZiAmJlxyXG4gICAgICAodGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMucXVlc3Rpb24ubmFtZV0uZGlydHkgfHxcclxuICAgICAgICB0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5uYW1lXS50b3VjaGVkKVxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLnF1ZXN0aW9uLm5hbWVdLm1hcmtBc0RpcnR5KCk7XHJcbiAgICAgIHJldHVybiB0aGlzLmdldFJlcXVpcmVkVmFsaWRhdGlvbk1lc3NhZ2UoKTsgICAgICBcclxuICAgIH1cclxuXHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMucXVlc3Rpb24gJiZcclxuICAgICAgdGhpcy5xdWVzdGlvbi5uYW1lICYmXHJcbiAgICAgIHRoaXMuZm9ybSAmJlxyXG4gICAgICB0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5uYW1lXS5lcnJvcnM/LmJwRW1wbHJGbGFnICYmXHJcbiAgICAgIHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLnF1ZXN0aW9uLm5hbWVdLmRpcnR5ICYmXHJcbiAgICAgIHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLnF1ZXN0aW9uLm5hbWVdLnRvdWNoZWRcclxuICAgICkge1xyXG4gICAgICB2YXIga2VlcEdvaW5nID0gdHJ1ZTtcclxuICAgICAgbGV0IG1lc3NhZ2U6IHN0cmluZztcclxuICAgICAgaWYobG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJsYW5ndWFnZVwiKSA9PT0gXCJlc1wiKXtcclxuICAgICAgICBtZXNzYWdlID0gJ0NvbmZpcm1hciBvIGVsaW1pbmFyIGNhZGEgZW1wbGVhZG9yKGVzKSBwYXJhIGNvbnRpbnVhcic7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgbWVzc2FnZSA9ICdDb25maXJtIG9yIERlbGV0ZSBlYWNoIGVtcGxveWVyKHMpIHRvIGNvbnRpbnVlJztcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5uYW1lXS5tYXJrQXNEaXJ0eSgpO1xyXG4gICAgICByZXR1cm4gbWVzc2FnZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMucXVlc3Rpb24gJiZcclxuICAgICAgdGhpcy5xdWVzdGlvbi5uYW1lICYmXHJcbiAgICAgIHRoaXMuZm9ybSAmJlxyXG4gICAgICB0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5uYW1lXS5lcnJvcnNcclxuICAgICAgICA/LnNpbXBsZUNoZWNrQm94VmFsaWRhdGlvbkZsYWcgJiZcclxuICAgICAgKHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLnF1ZXN0aW9uLm5hbWVdLmRpcnR5IHx8XHJcbiAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMucXVlc3Rpb24ubmFtZV0udG91Y2hlZClcclxuICAgICkge1xyXG4gICAgICB2YXIga2VlcEdvaW5nID0gdHJ1ZTtcclxuICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMucXVlc3Rpb24ubmFtZV0ubWFya0FzRGlydHkoKTtcclxuICAgICAgcmV0dXJuIHRoaXMuZ2V0UmVxdWlyZWRWYWxpZGF0aW9uTWVzc2FnZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChcclxuICAgICAgdGhpcy5xdWVzdGlvbiAmJlxyXG4gICAgICB0aGlzLnF1ZXN0aW9uLm5hbWUgJiZcclxuICAgICAgdGhpcy5mb3JtICYmXHJcbiAgICAgIHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLnF1ZXN0aW9uLm5hbWVdLmVycm9ycz8uY3BhdGNodmFsaWRhdGlvbkZsYWcgJiZcclxuICAgICAgKHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLnF1ZXN0aW9uLm5hbWVdLmRpcnR5IHx8XHJcbiAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMucXVlc3Rpb24ubmFtZV0udG91Y2hlZClcclxuICAgICkge1xyXG4gICAgICB2YXIga2VlcEdvaW5nID0gdHJ1ZTtcclxuICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMucXVlc3Rpb24ubmFtZV0ubWFya0FzRGlydHkoKTtcclxuICAgICAgcmV0dXJuIHRoaXMuZ2V0UmVxdWlyZWRWYWxpZGF0aW9uTWVzc2FnZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChcclxuICAgICAgdGhpcy5xdWVzdGlvbiAmJlxyXG4gICAgICB0aGlzLnF1ZXN0aW9uLm5hbWUgJiZcclxuICAgICAgdGhpcy5mb3JtICYmXHJcbiAgICAgIHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLnF1ZXN0aW9uLm5hbWVdLmVycm9ycz8udXBsb2FkdmFsaWRhdGlvbkZsYWcgJiZcclxuICAgICAgKHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLnF1ZXN0aW9uLm5hbWVdLmRpcnR5IHx8XHJcbiAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMucXVlc3Rpb24ubmFtZV0udG91Y2hlZClcclxuICAgICkge1xyXG4gICAgICB2YXIga2VlcEdvaW5nID0gdHJ1ZTtcclxuICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMucXVlc3Rpb24ubmFtZV0ubWFya0FzRGlydHkoKTtcclxuICAgICAgcmV0dXJuIHRoaXMuZ2V0UmVxdWlyZWRWYWxpZGF0aW9uTWVzc2FnZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChcclxuICAgICAgdGhpcy5xdWVzdGlvbiAmJlxyXG4gICAgICB0aGlzLnF1ZXN0aW9uLm5hbWUgJiZcclxuICAgICAgdGhpcy5mb3JtICYmXHJcbiAgICAgIHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLnF1ZXN0aW9uLm5hbWVdLmVycm9ycz8uYnBFbXBsckxlbmd0aEZsYWcgJiZcclxuICAgICAgKHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLnF1ZXN0aW9uLm5hbWVdLmRpcnR5IHx8XHJcbiAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMucXVlc3Rpb24ubmFtZV0udG91Y2hlZClcclxuICAgICkge1xyXG4gICAgICB2YXIga2VlcEdvaW5nID0gdHJ1ZTtcclxuICAgICAgbGV0IG1lc3NhZ2U6IHN0cmluZyA9ICdBZGQgcHJldmlvdXMgZW1wbG95bWVudCBkZXRhaWxzJztcclxuICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMucXVlc3Rpb24ubmFtZV0ubWFya0FzRGlydHkoKTtcclxuICAgICAgcmV0dXJuIG1lc3NhZ2U7XHJcbiAgICB9XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMucXVlc3Rpb24gJiZcclxuICAgICAgdGhpcy5xdWVzdGlvbi5uYW1lICYmXHJcbiAgICAgIHRoaXMuZm9ybSAmJlxyXG4gICAgICB0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5uYW1lXS5lcnJvcnM/LmFkZHJlc3NWYWxpZGF0aW9uRmxhZyAmJlxyXG4gICAgICAodGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMucXVlc3Rpb24ubmFtZV0uZGlydHkgfHxcclxuICAgICAgICB0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5uYW1lXS50b3VjaGVkKVxyXG4gICAgKSB7XHJcbiAgICAgIHZhciBrZWVwR29pbmcgPSB0cnVlO1xyXG4gICAgICAvL2xldCBtZXNzYWdlOiBzdHJpbmcgPSBcIlBsZWFzZSBwcm92aWRlIHZhbGlkIGFkZHJlc3MuXCI7XHJcbiAgICAgIHRoaXMuYWRkcmVzc2VzLmZvckVhY2goKGFkZHJlc3MpID0+IGFkZHJlc3Muc3VibWl0KCkpO1xyXG4gICAgICB0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5uYW1lXS5tYXJrQXNEaXJ0eSgpO1xyXG4gICAgICByZXR1cm4gbWVzc2FnZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMucXVlc3Rpb24gJiZcclxuICAgICAgdGhpcy5xdWVzdGlvbi5uYW1lICYmXHJcbiAgICAgIHRoaXMuZm9ybSAmJlxyXG4gICAgICB0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5uYW1lXS5lcnJvcnNcclxuICAgICAgICA/LmJhbmtEZXRhaWxzVmFsaWRhdGlvbkZsYWcgJiZcclxuICAgICAgKHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLnF1ZXN0aW9uLm5hbWVdLmRpcnR5IHx8XHJcbiAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMucXVlc3Rpb24ubmFtZV0udG91Y2hlZClcclxuICAgICkge1xyXG4gICAgICB2YXIga2VlcEdvaW5nID0gdHJ1ZTtcclxuICAgICAgLy9sZXQgbWVzc2FnZTogc3RyaW5nID0gXCJQbGVhc2UgcHJvdmlkZSB2YWxpZCBiYW5rIGRldGFpbHMuXCI7XHJcbiAgICAgIHRoaXMuYmFua2R0bHM/LnN1Ym1pdCgpO1xyXG4gICAgICB0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5uYW1lXS5tYXJrQXNEaXJ0eSgpO1xyXG4gICAgICByZXR1cm4gbWVzc2FnZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMucXVlc3Rpb24gJiZcclxuICAgICAgdGhpcy5xdWVzdGlvbi5uYW1lICYmXHJcbiAgICAgIHRoaXMuZm9ybSAmJlxyXG4gICAgICB0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5xdWVzdGlvbi5uYW1lXS5lcnJvcnM/LndjRW1wbG95ZXJWYWxpZGF0aW9uICYmXHJcbiAgICAgIHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLnF1ZXN0aW9uLm5hbWVdLmRpcnR5ICYmXHJcbiAgICAgIHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLnF1ZXN0aW9uLm5hbWVdLnRvdWNoZWRcclxuICAgICkge1xyXG4gICAgICB2YXIga2VlcEdvaW5nID0gdHJ1ZTtcclxuICAgICAgY29uc3QgY29udHJvbCA9IHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLnF1ZXN0aW9uLm5hbWVdO1xyXG4gICAgICBjb25zdCBlcnJvciA9IGNvbnRyb2wuZXJyb3JzOyAgICAgIFxyXG4gICAgICB0aGlzLndjRW1wbG95ZXJHcmlkPy5zdWJtaXQoKTtcclxuICAgICAgY29udHJvbC5tYXJrQXNEaXJ0eSgpO1xyXG5cclxuICAgICAgaWYoZXJyb3I/LndjRW1wbG95ZXJWYWxpZGF0aW9uKSB7XHJcbiAgICAgICAgbWVzc2FnZSA9IHRoaXMud2NFbXBsb3llclZhbGlkYXRpb25Nc2c7XHJcbiAgICAgICAgcmV0dXJuIG1lc3NhZ2U7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmKGVycm9yPy5yZXF1aXJlZCkge1xyXG4gICAgICAgIG1lc3NhZ2UgPSBcInJlcXVpcmVkXCI7XHJcbiAgICAgIHJldHVybiBtZXNzYWdlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLnF1ZXN0aW9uICYmXHJcbiAgICAgIHRoaXMucXVlc3Rpb24ubmFtZSAmJlxyXG4gICAgICB0aGlzLmZvcm0gJiZcclxuICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMucXVlc3Rpb24ubmFtZV0uZXJyb3JzPy5ub3RFcXVhbHMgJiZcclxuICAgICAgKHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLnF1ZXN0aW9uLm5hbWVdLmRpcnR5IHx8XHJcbiAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMucXVlc3Rpb24ubmFtZV0udG91Y2hlZClcclxuICAgICkge1xyXG4gICAgICBsZXQgdmFsaWRhdG9yTGlzdCA9IHRoaXMucXVlc3Rpb24udmFsaWRhdG9ycztcclxuICAgICAgdmFyIGtlZXBHb2luZyA9IHRydWU7XHJcbiAgICAgIGxldCBtZXNzYWdlOiBzdHJpbmcgPSAnJztcclxuICAgICAgdmFsaWRhdG9yTGlzdC5mb3JFYWNoKCh2YWxpZGF0b3IpID0+IHtcclxuICAgICAgICBpZiAoa2VlcEdvaW5nKSB7XHJcbiAgICAgICAgICBpZiAodmFsaWRhdG9yLnR5cGUgPT09ICdjdXN0b212YWxpZGF0aW9uJykge1xyXG4gICAgICAgICAgICBtZXNzYWdlID0gdmFsaWRhdG9yLnRleHQ7XHJcbiAgICAgICAgICAgIHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLnF1ZXN0aW9uLm5hbWVdLm1hcmtBc0RpcnR5KCk7XHJcbiAgICAgICAgICAgIGtlZXBHb2luZyA9IGZhbHNlO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgbWVzc2FnZSA9ICcnO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcblxyXG4gICAgICB2YXIga2VlcEdvaW5nID0gdHJ1ZTtcclxuICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMucXVlc3Rpb24ubmFtZV0ubWFya0FzRGlydHkoKTtcclxuICAgICAgcmV0dXJuIG1lc3NhZ2U7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gdGhpcy5sb2dnZXIuZGVidWcoJ21lc3NhZ2UgZnJvbSBwYW5lbCBvdXRlci0tICcsbWVzc2FnZSk7XHJcbiAgICByZXR1cm4gbWVzc2FnZTtcclxuICB9XHJcblxyXG4gIG9uQWNjZXB0ZWQoYWdyZWVkOiBib29sZWFuKSB7XHJcbiAgICAvL2NvbnNvbGUubG9nKCdvbkFjY2VwdGVkIGNhbGxlZCcsYWdyZWVkKTtcclxuICAgIHRoaXMubGVnYWxBY2NlcHRlZCA9IGFncmVlZDtcclxuICB9XHJcblxyXG4gIG9uQ29tcGxldGVSZXF1YWxpZnkocmVxdWFsaWZ5RGF0YTogVW50eXBlZEZvcm1Hcm91cCkge1xyXG4gICAgLy9jb25zb2xlLmxvZyhcIm9uQ29tcGxldGVSZXF1YWxpZnlcIiwgcmVxdWFsaWZ5RGF0YSk7XHJcbiAgfVxyXG5cclxuICBvbk1vZGVsRGlzcGxheShtb2RlbERpc3BsYXk6IGJvb2xlYW4pIHtcclxuICAgIC8vY29uc29sZS5sb2coJ21vZGVsRGlzcGxheSBjYWxsZWQnLG1vZGVsRGlzcGxheSk7XHJcbiAgfVxyXG5cclxuICBnZW5lcmF0ZU90cEZvck5ld1VzZXJDcmVhdGlvbihldmVudCwgZm9ybSkge1xyXG4gICAgaWYgKGZvcm0uY29udHJvbHMucGhvbmUudmFsdWUgPT0gbnVsbCB8fCBmb3JtLnZhbHVlLnZlcmlmaWNhdGlvbiA9PSBudWxsKSB7XHJcbiAgICAgIHRoaXMuaXNPdHBNb2RhbEVuYWJsZWQgPSBmYWxzZTtcclxuICAgICAgY29uc29sZS5sb2coXCJGaWVsZHMgYXJlIG51bGwuXCIpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICAvLyBSZW1vdmUgbm9uLW51bWVyaWMgY2hhcmFjdGVyc1xyXG4gICAvLyBsZXQgdmFsaWRQaG9uZSA9IGZvcm0udmFsdWUucGhvbmUucmVwbGFjZSgvXFxEL2csICcnKTtcclxuICAgIGxldCB2YWxpZFBob25lID0gZm9ybS5jb250cm9scy5waG9uZS52YWx1ZS5yZXBsYWNlQWxsKFwiLVwiLFwiXCIpLnJlcGxhY2VBbGwoXCIgXCIsXCJcIik7XHJcbiAgICAgIFxyXG4gICAgLy8gQ291bnQgZGlnaXRzXHJcbiAgICBsZXQgcGhvbmVMZW5ndGggPSB2YWxpZFBob25lLmxlbmd0aDtcclxuICAgIGNvbnNvbGUubG9nKFwiUGhvbmUgbnVtYmVyIGxlbmd0aFwiLCBwaG9uZUxlbmd0aCk7XHJcbiAgICBpZiAocGhvbmVMZW5ndGggIT0gMTApIHtcclxuICAgICAgY29uc29sZS5sb2coXCJQaG9uZSBudW1iZXIgbXVzdCBiZSBvZiBsZW5ndGggMTBcIilcclxuICAgICAgXHJcbiAgICAgIHJldHVybjsgXHJcbiAgICB9XHJcbiAgICB0aGlzLmxzXHJcbiAgICAgIC5nZW5lcmF0ZU90cEZvck5ld1VzZXJDcmVhdGlvbihmb3JtLmNvbnRyb2xzLnBob25lLnZhbHVlLCBldmVudC5vcHRpb24udmFsdWUpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXM6IHN0cmluZykgPT4ge1xyXG4gICAgICAgICAgY29uc29sZS5sb2coJ0FjY2VzcyBjb2RlIHNlbnQgc3VjY2Vzc2Z1bGx5LicpO1xyXG4gICAgICAgICAgdGhpcy5pc090cE1vZGFsRW5hYmxlZCA9IHRydWU7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKGVycikgPT4ge1xyXG4gICAgICAgICAgY29uc29sZS5sb2coJ0NvdWxkIG5vdCBnZW5lcmF0ZSB0aGUgYXV0aGVudGljYXRpb24gT1RQIGNvZGUuJyk7XHJcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7IFxyXG4gIH1cclxuXHJcbiAgb25SYWRpb09wdGlvbkNsaWNrKGV2ZW50LCBlbGVtZW50OiBFbGVtZW50c01vZGVsKSB7XHJcbiAgICBpZihlbGVtZW50Py5uYW1lID09PSBcImRpZmZtYWlsYWRkcmVzc1wiICYmIGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiZmxvd0tleVwiKSA9PSAnMzQ1Jyl7XHJcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdkaXNhYmxlRmllbGRzT25TaWdudXAnLCAnZmFsc2UnKTtcclxuICAgIH1cclxuICAgIGxldCBxdWVyeSA9IGV2ZW50LnF1ZXJ5O1xyXG4gICAgaWYgKGVsZW1lbnQuc2VydmljZVR5cGUgJiYgZWxlbWVudC5zZXJ2aWNlVHlwZSA9PT0gJ0ZFVENIJykge1xyXG4gICAgICBsZXQgc2VydmljZUNhbGxUeXBlID0gZWxlbWVudC5zZXJ2aWNlQ2FsbFR5cGU7XHJcbiAgICAgIGxldCBzZXJ2aWNlTmFtZTogc3RyaW5nID0gZWxlbWVudC5zZXJ2aWNlTmFtZTtcclxuICAgICAgY29uc3Qgb3B0aW9ucyA9IGV2ZW50Lm9wdGlvbi52YWx1ZVxyXG4gICAgICAgID8geyBwYXJhbXM6IG5ldyBIdHRwUGFyYW1zKCkuc2V0KCdzZWxlY3Rpb24nLCBldmVudC5vcHRpb24udmFsdWUpIH1cclxuICAgICAgICA6IHt9O1xyXG4gICAgICBpZiAoc2VydmljZUNhbGxUeXBlID09PSAnR0VUJykge1xyXG4gICAgICAgIHRoaXMudXRpbC5zaG93TG9hZGVyKCk7XHJcbiAgICAgICAgdGhpcy52YWxpZGF0aW9uU2VydmljZS5nZXQoYCR7c2VydmljZU5hbWV9YCwgb3B0aW9ucykuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgKHJlcykgPT4ge1xyXG4gICAgICAgICAgICBsZXQgdmFsdWVzOiBTZXJ2aWNlQWN0aW9uUmVzcG9uc2VNb2RlbCA9IHJlcztcclxuICAgICAgICAgICAgaWYgKHZhbHVlcy5zdWNjZXNzID09IHRydWUpIHtcclxuICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKHZhbHVlcy5zZXJ2aWNlQ2FsbFZhbHVlcy5zZXJ2aWNlVHlwZSk7XHJcbiAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZyh2YWx1ZXMuc2VydmljZUNhbGxWYWx1ZXMpO1xyXG4gICAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgIHZhbHVlcy5zZXJ2aWNlQ2FsbFZhbHVlcyAmJlxyXG4gICAgICAgICAgICAgICAgdmFsdWVzLnNlcnZpY2VDYWxsVmFsdWVzLnNlcnZpY2VUeXBlICYmXHJcbiAgICAgICAgICAgICAgICB2YWx1ZXMuc2VydmljZUNhbGxWYWx1ZXMuc2VydmljZVR5cGUgPT09ICdGRVRDSCdcclxuICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgIGxldCBzZXJ2aWNlQ2FsbFR5cGVJblRydWUgPVxyXG4gICAgICAgICAgICAgICAgICB2YWx1ZXMuc2VydmljZUNhbGxWYWx1ZXMuc2VydmljZUNhbGxUeXBlO1xyXG4gICAgICAgICAgICAgICAgbGV0IHNlcnZpY2VOYW1lSW5UcnVlOiBzdHJpbmcgPVxyXG4gICAgICAgICAgICAgICAgICB2YWx1ZXMuc2VydmljZUNhbGxWYWx1ZXMuc2VydmljZU5hbWU7XHJcbiAgICAgICAgICAgICAgICBpZiAoc2VydmljZUNhbGxUeXBlSW5UcnVlID09PSAnR0VUJykge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnV0aWwuc2hvd0xvYWRlcigpO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRpb25TZXJ2aWNlLmdldChgJHtzZXJ2aWNlTmFtZUluVHJ1ZX1gKS5zdWJzY3JpYmUoXHJcbiAgICAgICAgICAgICAgICAgICAgKHJlc3ApID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgIGxldCBsb2FkZXJNb2RlbDogTG9hZGVyTW9kZWwgPSByZXNwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCIgdmFsdWUgZnJvbSBsb2FkZXIgPSBcIiwgbG9hZGVyTW9kZWwpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRGb3JtVmFsdWVzKGxvYWRlck1vZGVsLmRhdGEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy51dGlsLmhpZGVMb2FkZXIoKTtcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIChlcnJwKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnV0aWwuaGlkZUxvYWRlcigpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzW2VsZW1lbnQubmFtZV0/LnJlc2V0KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0uY29udHJvbHNbXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQubmFtZVxyXG4gICAgICAgICAgICAgICAgICAgICAgXT8udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy51dGlsLmVycm9ySGFuZGxlcihlcnJwKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIHRoaXMudXRpbC5oaWRlTG9hZGVyKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICAoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMudXRpbC5oaWRlTG9hZGVyKCk7XHJcbiAgICAgICAgICAgIHRoaXMuZm9ybS5jb250cm9sc1tlbGVtZW50Lm5hbWVdPy5yZXNldCgpO1xyXG4gICAgICAgICAgICB0aGlzLmZvcm0uY29udHJvbHNbZWxlbWVudC5uYW1lXT8udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgICAgICAgICB0aGlzLnV0aWwuZXJyb3JIYW5kbGVyKGVycik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0Rm9ybVZhbHVlcyhkYXRhKSB7XHJcbiAgICBPYmplY3Qua2V5cyhkYXRhKS5mb3JFYWNoKChrZXkpID0+IHtcclxuICAgICAgbGV0IHZhbHVlVG9TZXQgPSBkYXRhW2tleV07XHJcbiAgICAgIHRoaXMuc2V0VmFsdWVJbkZvcm1Db250cm9sKGtleSwgdmFsdWVUb1NldCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHNldFZhbHVlSW5Gb3JtQ29udHJvbChuYW1lLCB2YWx1ZSkge1xyXG4gICAgbGV0IGNvbnRyb2wgPSB0aGlzLmZvcm0uY29udHJvbHNbbmFtZV07XHJcbiAgICBpZiAoY29udHJvbCkge1xyXG4gICAgICBjb250cm9sLnBhdGNoVmFsdWUodmFsdWUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc29sZS5lcnJvcignTm8gZm9ybSBjb250cm9sIHByZXNlbnQgd2l0aCBuYW1lICcsIG5hbWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZmlsdGVyVmFsdWUoZXZlbnQsIGVsZW1lbnQ6IEVsZW1lbnRzTW9kZWwpIHtcclxuICAgIC8vIHRoaXMubG9nZ2VyLmRlYnVnKCdjaG9pY2VzLS0nLGNob2ljZXMpO1xyXG5cclxuICAgIGxldCBjaG9pY2VzOiBhbnlbXSA9IFtdO1xyXG5cclxuICAgIGxldCBmaWx0ZXJlZDogYW55W10gPSBbXTtcclxuICAgIGxldCBxdWVyeSA9IGV2ZW50LnF1ZXJ5O1xyXG5cclxuICAgIGlmIChlbGVtZW50LnNlcnZpY2VUeXBlICYmIGVsZW1lbnQuc2VydmljZVR5cGUgPT09ICdGRVRDSCcpIHtcclxuICAgICAgbGV0IHNlcnZpY2VDYWxsUGFyYW0gPSBlbGVtZW50LnNlcnZpY2VDYWxsUGFyYW07IC8vc3NuMzIwLGxzdG5hbWUzMjBcclxuICAgICAgbGV0IHNlcnZpY2VDYWxsVHlwZSA9IGVsZW1lbnQuc2VydmljZUNhbGxUeXBlOyAvL1wiR0VUXCJcclxuICAgICAgbGV0IHNlcnZpY2VOYW1lOiBzdHJpbmcgPSBlbGVtZW50LnNlcnZpY2VOYW1lOyAvLy9zZWN1cml0eS1zZXJ2aWNlL3ZhbGlkYXRlU1NOL1xyXG4gICAgICBsZXQgc2VydmljZVVwZGF0ZVBhcmFtID0gZWxlbWVudC5zZXJ2aWNlVXBkYXRlUGFyYW07XHJcblxyXG4gICAgICBpZiAoc2VydmljZUNhbGxUeXBlID09PSAnR0VUJykge1xyXG4gICAgICAgIC8vIHRoaXMubG9nZ2VyLmRlYnVnKCdJbnNpZGUgR0VUJyk7XHJcbiAgICAgICAgdGhpcy52YWxpZGF0aW9uU2VydmljZS5nZXQoYCR7c2VydmljZU5hbWV9YCkuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgKHJlcykgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygncmVzLS0nLCByZXMsICcgLSByZXNbMF0ubGVuZ3RoIC0nLCByZXMpO1xyXG4gICAgICAgICAgICBjaG9pY2VzLnB1c2gocmVzKTtcclxuICAgICAgICAgICAgbGV0IHF1ZXJ5ID0gZXZlbnQucXVlcnk7XHJcbiAgICAgICAgICAgIC8vbGV0IGZpbHRlcmVkOiBhbnlbXSA9IFtdO1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNob2ljZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICBsZXQgY2hvaWNlID0gY2hvaWNlc1tpXTtcclxuICAgICAgICAgICAgICAvL3RoaXMubG9nZ2VyLmRlYnVnKCdjaG9pY2UgLSAnLCBjaG9pY2UsICdjaG9pY2UudGV4dC0tJywgY2hvaWNlLnRleHQsICdxdWVyeS50b0xvd2VyQ2FzZSgpJywgcXVlcnk/LnRvTG93ZXJDYXNlKCkpO1xyXG4gICAgICAgICAgICAgIC8vaWYgKGNob2ljZS50ZXh0LnRvTG93ZXJDYXNlKCkuaW5kZXhPZihxdWVyeS50b0xvd2VyQ2FzZSgpKSA9PSAwKSB7XHJcbiAgICAgICAgICAgICAgZmlsdGVyZWQucHVzaChjaG9pY2VbMF0pO1xyXG4gICAgICAgICAgICAgIC8vfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyUmVzdWx0ID0gZmlsdGVyZWQ7XHJcbiAgICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKCd0aGlzLmZpbHRlclJlc3VsdDEyMy0tJywgdGhpcy5maWx0ZXJSZXN1bHQpO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIChlcnIpID0+IHtcclxuICAgICAgICAgICAgdGhpcy51dGlsLmhpZGVMb2FkZXIoKTtcclxuICAgICAgICAgICAgdGhpcy51dGlsLmVycm9ySGFuZGxlcihlcnIpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNob2ljZXMgPSBlbGVtZW50LmNob2ljZXM7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY2hvaWNlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGxldCBjb3VudHJ5ID0gY2hvaWNlc1tpXTtcclxuICAgICAgICAvL2lmIChjb3VudHJ5LnRleHQudG9Mb3dlckNhc2UoKS5pbmRleE9mKHF1ZXJ5LnRvTG93ZXJDYXNlKCkpID09IDApIHtcclxuICAgICAgICBmaWx0ZXJlZC5wdXNoKGNvdW50cnkpO1xyXG4gICAgICAgIC8vfVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZmlsdGVyUmVzdWx0ID0gZmlsdGVyZWQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvblNlbGVjdChldmVudCwgY250cmxOYW1lOiBzdHJpbmcpIHt9XHJcblxyXG4gIC8vVGhpcyBzaG91ZCBiZSBzaW1pbGlyYSB0byBtZXRob2QgcHJlc2VudCBpbiBwYW5lbFxyXG4gIHZhbGlkYXRlKGVsZW1lbnQ6IEVsZW1lbnRzTW9kZWwpIHtcclxuICAgIGlmICghZWxlbWVudC5zZXJ2aWNlTmFtZSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IHNlcnZpY2VUeXBlID0gZWxlbWVudC5zZXJ2aWNlVHlwZTtcclxuICAgIGlmIChlbGVtZW50LnNlcnZpY2VUeXBlID09PSAnRkVUQ0gnKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgc2VydmljZUNhbGxQYXJhbSA9IGVsZW1lbnQuc2VydmljZUNhbGxQYXJhbTsgLy9zc24zMjAsbHN0bmFtZTMyMFxyXG4gICAgbGV0IHNlcnZpY2VDYWxsVHlwZSA9IGVsZW1lbnQuc2VydmljZUNhbGxUeXBlOyAvL1wiR0VUXCJcclxuICAgIGxldCBzZXJ2aWNlTmFtZTogc3RyaW5nID0gZWxlbWVudC5zZXJ2aWNlTmFtZTsgLy8vc2VjdXJpdHktc2VydmljZS92YWxpZGF0ZVNTTi9cclxuICAgIGxldCBzZXJ2aWNlVXBkYXRlUGFyYW0gPSBlbGVtZW50LnNlcnZpY2VVcGRhdGVQYXJhbTtcclxuICAgIGxldCBhbGxWYWx1ZVByZXNlbnQ6IEJvb2xlYW4gPSB0cnVlO1xyXG4gICAgLy8gIHRoaXMubG9nZ2VyLmRlYnVnKCdzZXJ2aWNlQ2FsbFBhcmFtJyxzZXJ2aWNlQ2FsbFBhcmFtKTtcclxuICAgIGlmIChzZXJ2aWNlQ2FsbFBhcmFtKSB7XHJcbiAgICAgIHZhciBzcGxpdHRlZCA9IHNlcnZpY2VDYWxsUGFyYW0uc3BsaXQoJywnKTtcclxuICAgICAgbGV0IHZhbHVlQXJyOiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgICBsZXQgcGFyYW1BcnI6IHN0cmluZ1tdID0gW107XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3BsaXR0ZWQubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAvL3VzZSBpIGluc3RlYWQgb2YgMCBkb2IzMjBcclxuICAgICAgICAvLyB0aGlzLmxvZ2dlci5kZWJ1ZygnZG9iMzIwJyx0aGlzLmZvcm0uY29udHJvbHNbJ2RvYjMyMCddLnZhbHVlKTtcclxuICAgICAgICBpZiAodGhpcy5mb3JtLmNvbnRyb2xzW3NwbGl0dGVkW2ldXS52YWx1ZSkge1xyXG4gICAgICAgICAgcGFyYW1BcnIucHVzaChzcGxpdHRlZFtpXSk7XHJcbiAgICAgICAgICB2YWx1ZUFyci5wdXNoKHRoaXMuZm9ybS5jb250cm9sc1tzcGxpdHRlZFtpXV0udmFsdWUpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBhbGxWYWx1ZVByZXNlbnQgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgLy8gdGhpcy5sb2dnZXIuZGVidWcoJ3ZhbHVlQXJyMTInLCB2YWx1ZUFyciwgJ3BhcmFtQXJyMTEgJywgcGFyYW1BcnIsICcgZWxlbWVudCcsIGVsZW1lbnQpO1xyXG5cclxuICAgICAgdmFyIG1vZGVsOiBWYWxpZGF0aW9uTW9kZWwgPSB7fTtcclxuICAgICAgbW9kZWwucGFyYW1OYW1lID0gcGFyYW1BcnI7XHJcbiAgICAgIG1vZGVsLnBhcmFtVmFsdWUgPSB2YWx1ZUFycjtcclxuICAgICAgLy8gcmV0dXJuIHRoaXMucG9zdChgcXVlc3Rpb25uYWlyZS9zY3JlZW4tcXVlc3Rpb25uYWlyZWAsIHF1ZXN0aW9ubmFpcmVEYXRhKTtcclxuICAgICAgaWYgKGFsbFZhbHVlUHJlc2VudCkge1xyXG4gICAgICAgIGlmIChzZXJ2aWNlQ2FsbFR5cGUgPT09ICdQT1NUJykge1xyXG4gICAgICAgICAgLy8gdGhpcy5sb2dnZXIuZGVidWcoJ0luc2lkZSBHRVQnKTtcclxuICAgICAgICAgIHRoaXMudmFsaWRhdGlvblNlcnZpY2UucG9zdChgJHtzZXJ2aWNlTmFtZX1gLCBtb2RlbCkuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgICAocmVzKSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5yZXR1cm5Nb2RlbCA9IHJlcztcclxuICAgICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICB0aGlzLnJldHVybk1vZGVsLnJldHVyblR5cGUgJiZcclxuICAgICAgICAgICAgICAgIHRoaXMucmV0dXJuTW9kZWwucmV0dXJuVHlwZSA9PT0gJ1BPUFVQJ1xyXG4gICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5kaXNwbGF5UG9zaXRpb24gPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wb3NpdGlvbiA9ICd0b3AnO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wb3BVcEhlYWRlciA9IHRoaXMucmV0dXJuTW9kZWwucG9wVXBIZWFkZXI7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnBvcFVwVGV4dCA9IHRoaXMucmV0dXJuTW9kZWwucG9wVXBUZXh0O1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wb3BVcFllc0FjdGlvbkxhYmVsID0gdGhpcy5yZXR1cm5Nb2RlbC5wb3BVcFllc0J1dHRvbkxhYmVsO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wb3BVcE5vQWN0aW9uTGFiZWwgPSB0aGlzLnJldHVybk1vZGVsLnBvcFVwTm9CdXR0b25MYWJlbDtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoJ3RoaXMucmV0dXJuTW9kZWwgJywgdGhpcy5yZXR1cm5Nb2RlbCk7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIChlcnIpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLnV0aWwuaGlkZUxvYWRlcigpO1xyXG4gICAgICAgICAgICAgIHRoaXMudXRpbC5lcnJvckhhbmRsZXIoZXJyKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgYmx1ckRPQihlbGVtZW50OiBFbGVtZW50c01vZGVsKSB7XHJcbiAgICB0aGlzLnZhbGlkYXRlKGVsZW1lbnQpO1xyXG4gICAgdGhpcy5jaGVja0lmVXNlckV4aXN0KCk7XHJcbiAgfVxyXG4gIGFjY2VwdCgpIHtcclxuICAgIGNvbnNvbGUubG9nKCdhY2NlcHQgY2FsbGVkMTIzJywgdGhpcy5yZXR1cm5Nb2RlbC5pZGVudGlmaWVyKTtcclxuICAgIGxldCBwYXJhbUFycmF5OiBQYXJhbXNbXSA9IFtdO1xyXG4gICAgaWYgKHRoaXMucmV0dXJuTW9kZWwuaWRlbnRpZmllcikge1xyXG4gICAgICBsZXQgbW9kZWxBcnI6IEtleVZhbHVlTW9kZWxbXSA9IHRoaXMucmV0dXJuTW9kZWwuaWRlbnRpZmllcjtcclxuICAgICAgZm9yICh2YXIgdmFsIG9mIG1vZGVsQXJyKSB7XHJcbiAgICAgICAgcGFyYW1BcnJheS5wdXNoKHsgW3ZhbC5rZXldOiB2YWwudmFsdWUgfSk7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgcGFyYW1zID0gcGFyYW1BcnJheS5yZWR1Y2UoKGFyck9iaiwgaXRlbSkgPT5cclxuICAgICAgICBPYmplY3QuYXNzaWduKGFyck9iaiwgaXRlbSwge30pXHJcbiAgICAgICk7XHJcbiAgICAgIC8vdGhpcy51dGlsLm9wZW5QYWdlQnlDb250ZXh0Um9vdFdpdGhEYXRhKHRoaXMuZ2V0Q29udGV4dFJvb3QoKSwgdGhpcy5yZXR1cm5Nb2RlbC55ZXNBY3Rpb24sIHBhcmFtcywgdGhpcy5uYXZDb250cm9sbGVyKVxyXG4gICAgICB0aGlzLm5hdkNvbnRyb2xsZXIubmF2aWdhdGVSb290KHRoaXMucmV0dXJuTW9kZWwueWVzQWN0aW9uLCB7XHJcbiAgICAgICAgcXVlcnlQYXJhbXM6IHBhcmFtcyxcclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmIChcclxuICAgICAgdGhpcy5yZXR1cm5Nb2RlbC55ZXNBY3Rpb24gJiZcclxuICAgICAgdGhpcy5yZXR1cm5Nb2RlbC55ZXNBY3Rpb24uc3Vic3RyaW5nKDAsIDQpICE9ICcvY3AvJ1xyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMubmF2Q29udHJvbGxlci5uYXZpZ2F0ZVJvb3QoW3RoaXMucmV0dXJuTW9kZWwueWVzQWN0aW9uXSk7XHJcbiAgICAgIHRoaXMuZGlzcGxheVBvc2l0aW9uID0gZmFsc2U7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHdpbmRvdy5vcGVuKGxvY2F0aW9uLm9yaWdpbiArIHRoaXMucmV0dXJuTW9kZWwueWVzQWN0aW9uLCAnX3NlbGYnKTtcclxuICAgIH1cclxuICAgIHRoaXMubmF2Q29udHJvbGxlci5uYXZpZ2F0ZVJvb3QoW3RoaXMucmV0dXJuTW9kZWwueWVzQWN0aW9uXSk7XHJcbiAgfVxyXG5cclxuICByZWplY3QoKSB7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMucmV0dXJuTW9kZWwubm9BY3Rpb24gJiZcclxuICAgICAgdGhpcy5yZXR1cm5Nb2RlbC5ub0FjdGlvbi5zdWJzdHJpbmcoMCwgNCkgIT0gJy9jcC8nXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5uYXZDb250cm9sbGVyLm5hdmlnYXRlUm9vdChbdGhpcy5yZXR1cm5Nb2RlbC5ub0FjdGlvbl0pO1xyXG4gICAgICB0aGlzLmRpc3BsYXlQb3NpdGlvbiA9IGZhbHNlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgd2luZG93Lm9wZW4obG9jYXRpb24ub3JpZ2luICsgdGhpcy5yZXR1cm5Nb2RlbC5ub0FjdGlvbiwgJ19zZWxmJyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRDb250ZXh0Um9vdCgpIHtcclxuICAgIHJldHVybiB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUuc3Vic3RyaW5nKFxyXG4gICAgICAwLFxyXG4gICAgICB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUuaW5kZXhPZignLycsIDIpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgdXBsb2FkRmlsZShldjogYW55KSB7fVxyXG5cclxuICBnZXRUcmFuc2xhdGlvbihrZXk6IHN0cmluZywgZHluYW1pY1BhcmFtOiBhbnkpIHtcclxuICAgIGlmICghZHluYW1pY1BhcmFtKSB7XHJcbiAgICAgIHJldHVybiBrZXk7XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IGR5bmFtaWNPYmogPSB7fTtcclxuXHJcbiAgICBsZXQgcGFyYW06IEtleVZhbHVlTW9kZWw7XHJcbiAgICBsZXQgcGFyYW1zOiBLZXlWYWx1ZU1vZGVsW107XHJcblxyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZHluYW1pY1BhcmFtKSkge1xyXG4gICAgICBwYXJhbXMgPSBkeW5hbWljUGFyYW07XHJcbiAgICAgIHBhcmFtcy5mb3JFYWNoKChwcm0pID0+IHtcclxuICAgICAgICBkeW5hbWljT2JqW3BybS5rZXldID0gcHJtLnZhbHVlO1xyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHBhcmFtID0gZHluYW1pY1BhcmFtO1xyXG4gICAgICBkeW5hbWljT2JqW3BhcmFtLmtleV0gPSBwYXJhbS52YWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnRyYW5zbGF0ZS51c2UoJ2VuJyk7XHJcbiAgICBsZXQgdHJhbnNsYXRlZFN0cmluZzogU3RyaW5nID0gJyc7XHJcbiAgICB0aGlzLnRyYW5zbGF0ZS5zZXQoa2V5LCBrZXkpO1xyXG4gICAgdHJhbnNsYXRlZFN0cmluZyA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoa2V5LCBPYmplY3QuYXNzaWduKGR5bmFtaWNPYmopKTtcclxuICAgIHJldHVybiB0cmFuc2xhdGVkU3RyaW5nO1xyXG4gIH1cclxuXHJcbiAgZ2V0VGV4dChvYmplY3QpIHtcclxuICAgIHJldHVybiBvYmplY3Q/LnRleHQgPyBvYmplY3Q/LnRleHQgOiBvYmplY3Q7XHJcbiAgfVxyXG5cclxuICB1bm1hc2soZXZlbnQpIHtcclxuICAgIHRoaXMubWFza0NsYXNzID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBtYXNrKGV2ZW50KSB7XHJcbiAgICB0aGlzLm1hc2tDbGFzcyA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBkYXRlSW5wdXQoZXZlbnQpIHtcclxuICAgIGxldCBjdXJyZW50VmFsdWU6IHN0cmluZyA9IGV2ZW50LnNyY0VsZW1lbnQudmFsdWU7XHJcbiAgICBpZiAoY3VycmVudFZhbHVlKSB7XHJcbiAgICAgIGlmIChjdXJyZW50VmFsdWUubGVuZ3RoID09IDIgJiYgY3VycmVudFZhbHVlLmNoYXJBdCgyKSAhPSAnLycpIHtcclxuICAgICAgICBldmVudC50YXJnZXQudmFsdWUgPSBjdXJyZW50VmFsdWUgKyAnLyc7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGN1cnJlbnRWYWx1ZS5sZW5ndGggPT0gNSAmJiBjdXJyZW50VmFsdWUuY2hhckF0KDUpICE9ICcvJykge1xyXG4gICAgICAgIGV2ZW50LnRhcmdldC52YWx1ZSA9IGN1cnJlbnRWYWx1ZSArICcvJztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2hlY2tGb3JWYWx1ZUNoYW5nZShldmVudCkge1xyXG4gICAgaWYgKHRoaXMucXVlc3Rpb24uY29tcG9uZW50RGF0YSkge1xyXG4gICAgICBsZXQgY29tcERhdGE6IFZhbHVlQ2hhbmdlQ29tcG9uZW50TW9kZWwgPSBKU09OLnBhcnNlKFxyXG4gICAgICAgIHRoaXMucXVlc3Rpb24uY29tcG9uZW50RGF0YVxyXG4gICAgICApO1xyXG4gICAgICBsZXQgY3VycmVudFZhbHVlID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xyXG4gICAgICBsZXQgb3JpZ2luYWxWYWx1ZSA9IHRoaXMuZm9ybS5nZXQoY29tcERhdGEub3JpZ2luYWxWYWx1ZUNvbnRyb2wpPy52YWx1ZTtcclxuICAgICAgbGV0IGZvcm1Db250cm9sVG9VcGRhdGU6IEFic3RyYWN0Q29udHJvbCA9IHRoaXMuZm9ybS5nZXQoXHJcbiAgICAgICAgY29tcERhdGEuZm9ybUNvbnRyb2xUb1VwZGF0ZVxyXG4gICAgICApO1xyXG4gICAgICBmb3JtQ29udHJvbFRvVXBkYXRlLnBhdGNoVmFsdWUoJ04nKTtcclxuICAgICAgZm9ybUNvbnRyb2xUb1VwZGF0ZS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICAgIHRoaXMuZm9ybS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICAgIHRoaXMuZHluYW1pY1BhcmFtID0gdGhpcy5keW5hbWljUGFyYW0gPyB0aGlzLmR5bmFtaWNQYXJhbSA6IFtdO1xyXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLmR5bmFtaWNQYXJhbSkpIHtcclxuICAgICAgICB0aGlzLmR5bmFtaWNQYXJhbS5wdXNoKHtcclxuICAgICAgICAgIGtleTogdGhpcy5xdWVzdGlvbi5uYW1lLFxyXG4gICAgICAgICAgdmFsdWU6IGN1cnJlbnRWYWx1ZSxcclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmR5bmFtaWNQYXJhbVt0aGlzLnF1ZXN0aW9uLm5hbWVdID0gY3VycmVudFZhbHVlO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChjdXJyZW50VmFsdWUgIT0gb3JpZ2luYWxWYWx1ZSkge1xyXG4gICAgICAgIGZvcm1Db250cm9sVG9VcGRhdGUucGF0Y2hWYWx1ZSgnWScpO1xyXG4gICAgICAgIHRoaXMub25EeW5hbWljUGFyYW1VcGRhdGUuZW1pdCh0aGlzLmR5bmFtaWNQYXJhbSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgZm9ybUNvbnRyb2xUb1VwZGF0ZS5wYXRjaFZhbHVlKCdOJyk7XHJcbiAgICAgIH1cclxuICAgICAgZm9ybUNvbnRyb2xUb1VwZGF0ZS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRFbXBsb3llcihlbXBsb3llcjogRW1wbG95ZXJEZXRhaWxTZWFyY2hSZXN1bHQpIHtcclxuICAgIGlmICh0aGlzLnF1ZXN0aW9uLmNvbXBvbmVudERhdGEpIHtcclxuICAgICAgbGV0IGNvbXBEYXRhOiBFbXBsb3llckFkZHJlc3NVcGRhdGVNb2RlbCA9IEpTT04ucGFyc2UoXHJcbiAgICAgICAgdGhpcy5xdWVzdGlvbi5jb21wb25lbnREYXRhXHJcbiAgICAgICk7XHJcbiAgICAgIGxldCBhZGRyZXNzRmM6IEFic3RyYWN0Q29udHJvbCA9IHRoaXMuZm9ybS5nZXQoXHJcbiAgICAgICAgY29tcERhdGEuYWRkcmVzc0Zvcm1Db250cm9sTmFtZVxyXG4gICAgICApO1xyXG4gICAgICBsZXQgZW1wSWRGYzogQWJzdHJhY3RDb250cm9sID0gdGhpcy5mb3JtLmdldChcclxuICAgICAgICBjb21wRGF0YS5lbXBsb3llcklkRm9ybUNvbnRyb2xOYW1lXHJcbiAgICAgICk7XHJcbiAgICAgIGVtcElkRmMuc2V0VmFsdWUoZW1wbG95ZXIuZW1wbG95ZXJJZCA/IGVtcGxveWVyLmVtcGxveWVySWQgOiAnLTEnKTtcclxuICAgICAgYWRkcmVzc0ZjLnNldFZhbHVlKHtcclxuICAgICAgICBjb3VudHJ5OiBlbXBsb3llci5jb3VudHJ5LFxyXG4gICAgICAgIGNpdHk6IGVtcGxveWVyLmNpdHksXHJcbiAgICAgICAgemlwOiBlbXBsb3llci56aXAsXHJcbiAgICAgICAgc3RyZWV0QWRkcmVzczogZW1wbG95ZXIuYWRkcmVzc0Rpc3BsYXlWYWwsXHJcbiAgICAgICAgc3RhdGU6IGVtcGxveWVyLnN0YXRlLFxyXG4gICAgICAgIG9wdGlvbmFsQWRkcmVzczogbnVsbCxcclxuICAgICAgICBjb3VudHk6IG51bGwsXHJcbiAgICAgICAgdG93bjogbnVsbCxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZXNldEVtcGxveWVyKCkge1xyXG4gICAgaWYgKHRoaXMucXVlc3Rpb24uY29tcG9uZW50RGF0YSkge1xyXG4gICAgICBsZXQgY29tcERhdGE6IEVtcGxveWVyQWRkcmVzc1VwZGF0ZU1vZGVsID0gSlNPTi5wYXJzZShcclxuICAgICAgICB0aGlzLnF1ZXN0aW9uLmNvbXBvbmVudERhdGFcclxuICAgICAgKTtcclxuICAgICAgbGV0IGFkZHJlc3NGYzogQWJzdHJhY3RDb250cm9sID0gdGhpcy5mb3JtLmdldChcclxuICAgICAgICBjb21wRGF0YS5hZGRyZXNzRm9ybUNvbnRyb2xOYW1lXHJcbiAgICAgICk7XHJcbiAgICAgIGxldCBlbXBJZEZjOiBBYnN0cmFjdENvbnRyb2wgPSB0aGlzLmZvcm0uZ2V0KFxyXG4gICAgICAgIGNvbXBEYXRhLmVtcGxveWVySWRGb3JtQ29udHJvbE5hbWVcclxuICAgICAgKTtcclxuICAgICAgZW1wSWRGYy5zZXRWYWx1ZSgnLTEnKTtcclxuICAgICAgYWRkcmVzc0ZjLnNldFZhbHVlKHtcclxuICAgICAgICBjb3VudHJ5OiBudWxsLFxyXG4gICAgICAgIGNpdHk6IG51bGwsXHJcbiAgICAgICAgemlwOiBudWxsLFxyXG4gICAgICAgIHN0cmVldEFkZHJlc3M6IG51bGwsXHJcbiAgICAgICAgc3RhdGU6IG51bGwsXHJcbiAgICAgICAgb3B0aW9uYWxBZGRyZXNzOiBudWxsLFxyXG4gICAgICAgIGNvdW50eTogbnVsbCxcclxuICAgICAgICB0b3duOiBudWxsLFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldEZvcm1Db250cm9sVmFsdWUoZWxlbWVudE5hbWUsIGVsZW1lbnRWYWx1ZSkge1xyXG4gICAgaWYgKHRoaXMuZm9ybS5jb250cm9sc1tlbGVtZW50TmFtZV0pIHtcclxuICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzW2VsZW1lbnROYW1lXS5wYXRjaFZhbHVlKGVsZW1lbnRWYWx1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXREZWZhdWx0VmFsdWUoKSB7XHJcbiAgICBpZiAodGhpcy5xdWVzdGlvbi5kZWZhdWx0VmFsdWUpIHtcclxuICAgICAgbGV0IHZhbHVlID0gdGhpcy5xdWVzdGlvbi5kZWZhdWx0VmFsdWU7XHJcbiAgICAgIGlmICh0aGlzLnF1ZXN0aW9uLnR5cGUgPT0gJ2Ryb3Bkb3duJykge1xyXG4gICAgICAgIGNvbnN0IGNob2ljZTogc3RyaW5nID0gdGhpcy5xdWVzdGlvbi5kZWZhdWx0VmFsdWU7XHJcbiAgICAgICAgdmFyIGpzb25PYmplY3Q6IENob2ljZXMgPSBKU09OLnBhcnNlKGNob2ljZSk7XHJcbiAgICAgICAgdGhpcy5zZXRGb3JtQ29udHJvbFZhbHVlKFxyXG4gICAgICAgICAgdGhpcy5xdWVzdGlvbi5uYW1lLFxyXG4gICAgICAgICAgdGhpcy5xdWVzdGlvbi5jaG9pY2VzLmZpbHRlcigoYykgPT4gYy52YWx1ZSA9PSBqc29uT2JqZWN0LnZhbHVlKVswXVxyXG4gICAgICAgICk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zZXRGb3JtQ29udHJvbFZhbHVlKHRoaXMucXVlc3Rpb24ubmFtZSwgdmFsdWUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBtb2RpZnlDYWxlbmRhckF0dHJpYnV0ZXMoKSB7XHJcbiAgICBjb25zdCBpbnB1dEVsZW1lbnQgPSB0aGlzLnBDYWxlbmRhci5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXHJcbiAgICAgICdwLWNhbGVuZGFyIFthcmlhLWNvbnRyb2xzXSdcclxuICAgICk7XHJcbiAgICBpbnB1dEVsZW1lbnQuZm9yRWFjaCgoZWxlbWVudDogSFRNTElucHV0RWxlbWVudCkgPT4ge1xyXG4gICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZShlbGVtZW50LCAnYXJpYS1jb250cm9scycsIHRoaXMucXVlc3Rpb24ubmFtZSk7XHJcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKGVsZW1lbnQsICdhcmlhLWV4cGFuZGVkJywgJ2ZhbHNlJyk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldFJlcXVpcmVkVmFsaWRhdGlvbk1lc3NhZ2UoKXtcclxuICAgIGlmKGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwibGFuZ3VhZ2VcIikgPT09IFwiZXNcIil7XHJcbiAgICAgIHJldHVybiAncmVxdWVyaWRvJztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiAncmVxdWlyZWQnO1xyXG4gICAgfVxyXG4gIH1cclxufSIsIjxkaXYgW2Zvcm1Hcm91cF09XCJmb3JtXCIgW2lkXT1cIidxdWVzdGlvbi1kaXYtJyArIHF1ZXN0aW9uLm5hbWVcIj5cclxuICA8cC1kaWFsb2cgKm5nSWY9XCJkaXNwbGF5UG9zaXRpb25cIiBbKHZpc2libGUpXT1cImRpc3BsYXlQb3NpdGlvblwiIFtwb3NpdGlvbl09XCJwb3NpdGlvblwiXHJcbiAgICBbbW9kYWxdPVwidHJ1ZVwiIFticmVha3BvaW50c109XCJ7JzEyMDBweCc6ICc2NjBweCcsICc5OTJweCc6ICc2NjBweCcsICc3NjhweCc6ICc2NjBweCcsICc1NzZweCc6ICcxMDB2dyd9XCIgW3N0eWxlXT1cInt3aWR0aDogJzQ1dncnfVwiXHJcbiAgICBbYmFzZVpJbmRleF09XCI1MDAwXCIgW2RyYWdnYWJsZV09XCJmYWxzZVwiIFtyZXNpemFibGVdPVwiZmFsc2VcIiBhcHBlbmRUbz1cImJvZHlcIiBjbG9zZU9uRXNjYXBlPVwiZmFsc2VcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInF1ZXN0aW9uLnRpdGxlXCI+XHJcblxyXG4gICAgPGg0IGNsYXNzPVwiaGVhZGluZyBpb24tcGFkZGluZy1sZWZ0XCI+XHJcbiAgICAgIHt7cG9wVXBIZWFkZXJ9fVxyXG4gICAgPC9oND5cclxuICAgIDxwPnt7cG9wVXBUZXh0fX1cclxuICAgIDwvcD5cclxuICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJmb290ZXJcIj5cclxuICAgICAgPGlvbi1idXR0b24gc2hhcGU9XCJyb3VuZFwiICpuZ0lmPVwicG9wVXBOb0FjdGlvbkxhYmVsXCIgc2l6ZT1cInNtYWxsXCIgdHlwZT1cInN1Ym1pdFwiIGZpbGw9XCJvdXRsaW5lXCIgKGNsaWNrKT1cInJlamVjdCgpXCI+XHJcbiAgICAgICAge3twb3BVcE5vQWN0aW9uTGFiZWx9fVxyXG4gICAgICA8L2lvbi1idXR0b24+XHJcblxyXG4gICAgICA8aW9uLWJ1dHRvbiBzaGFwZT1cInJvdW5kXCIgKm5nSWY9XCJwb3BVcFllc0FjdGlvbkxhYmVsXCIgc2l6ZT1cInNtYWxsXCIgdHlwZT1cInN1Ym1pdFwiIGZpbGw9XCJzb2xpZFwiIChjbGljayk9XCJhY2NlcHQoKVwiPlxyXG4gICAgICAgIHt7cG9wVXBZZXNBY3Rpb25MYWJlbH19XHJcbiAgICAgIDwvaW9uLWJ1dHRvbj5cclxuXHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gIDwvcC1kaWFsb2c+XHJcbiAgPGRpdiBbbmdTdHlsZV09XCJzZXRTdHlsZShxdWVzdGlvbi5pbmRlbnQpXCIgKm5nSWY9XCIhZm9yU2NyZWVuUXVlc3Rpb25uYWlyZVwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPlxyXG4gICAgPGxhYmVsIFthdHRyLmZvcl09XCJxdWVzdGlvbi5uYW1lXCIgKm5nSWY9XCJxdWVzdGlvbi5pbmRlbnQ9PT0xICYmIHF1ZXN0aW9uLnR5cGUhPSdodG1sJyAmJiBxdWVzdGlvbi50eXBlIT0naGlkZGVuJyAmJiBxdWVzdGlvbi50eXBlIT0nbGFiZWwnXCI+XHJcbiAgICAgIDxzcGFuIFtpbm5lckh0bWxdPVwicXVlc3Rpb24udGl0bGUgfCBkeW5hbWljVHJhbnNsYXRlOmR5bmFtaWNQYXJhbSB8IHRydXN0SHRtbFwiPjwvc3Bhbj5cclxuICAgIDwvbGFiZWw+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXYgW25nU3R5bGVdPVwic2V0U3R5bGUocXVlc3Rpb24uaW5kZW50KVwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiXHJcbiAgICAqbmdJZj1cImZvclNjcmVlblF1ZXN0aW9ubmFpcmUgJiYgcXVlc3Rpb24uaW5kZW50PT09MSAmJiBxdWVzdGlvbi50eXBlIT0naHRtbCcgJiYgcXVlc3Rpb24udHlwZSE9J2hpZGRlbicgJiYgcXVlc3Rpb24uZGVzY3JpcHRpb24gJiYgcXVlc3Rpb24udHlwZSE9J3NpbXBsZWNoZWNrYm94JyAmJiBxdWVzdGlvbi50eXBlIT0nbGFiZWwnICYmIHF1ZXN0aW9uLnR5cGUhPSdsYWJlbC13aXRoLW92ZXJsYXknXCI+XHJcbiAgICA8bGFiZWwgW2F0dHIuZm9yXT1cInF1ZXN0aW9uLm5hbWVcIj5cclxuICAgIDxzcGFuIFtpbm5lckh0bWxdPVwicXVlc3Rpb24udGl0bGUgfCBkeW5hbWljVHJhbnNsYXRlOmR5bmFtaWNQYXJhbSB8IHRydXN0SHRtbFwiPjwvc3Bhbj5cclxuICA8L2xhYmVsPlxyXG4gIDwvZGl2PlxyXG5cclxuICA8ZGl2IFtuZ1N0eWxlXT1cInNldFN0eWxlKHF1ZXN0aW9uLmluZGVudClcIiBjbGFzcz1cImZvcm0tbGFiZWxcIlxyXG4gICAgKm5nSWY9XCJmb3JTY3JlZW5RdWVzdGlvbm5haXJlICYmIHF1ZXN0aW9uLmN1c3RvbVRhZyAmJiAocXVlc3Rpb24uY3VzdG9tVGFnIT0nY29tcG9uZW50JyB8fCAocXVlc3Rpb24uY3VzdG9tVGFnPT0nY29tcG9uZW50JyAmJiBzaG93TGFiZWxGb3JDdXN0b21Db21wb25lbnQoKSkpICYmIHF1ZXN0aW9uLmluZGVudD09PTEgJiYgcXVlc3Rpb24udHlwZSE9J2h0bWwnICYmIHF1ZXN0aW9uLnR5cGUhPSdoaWRkZW4nICYmICFxdWVzdGlvbi5kZXNjcmlwdGlvbiAmJiBxdWVzdGlvbi50eXBlIT0nbGFiZWwnICYmIHF1ZXN0aW9uLnR5cGUhPSdzaW1wbGVjaGVja2JveCdcIj5cclxuICAgIDxsYWJlbCBbYXR0ci5mb3JdPVwicXVlc3Rpb24ubmFtZVwiPlxyXG4gICAgPHNwYW4gW2lubmVySHRtbF09XCJxdWVzdGlvbi50aXRsZSB8IGR5bmFtaWNUcmFuc2xhdGU6ZHluYW1pY1BhcmFtIHwgdHJ1c3RIdG1sXCI+PC9zcGFuPlxyXG4gIDwvbGFiZWw+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXYgW25nU3R5bGVdPVwic2V0U3R5bGUocXVlc3Rpb24uaW5kZW50KVwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiXHJcbiAgICAqbmdJZj1cImZvclNjcmVlblF1ZXN0aW9ubmFpcmUgJiYgIXF1ZXN0aW9uLmN1c3RvbVRhZyAgJiYgcXVlc3Rpb24uaW5kZW50PT09MSAmJiBxdWVzdGlvbi50eXBlIT0naHRtbCcgJiYgcXVlc3Rpb24udHlwZSE9J2hpZGRlbicgJiYgIXF1ZXN0aW9uLmRlc2NyaXB0aW9uICYmIHF1ZXN0aW9uLnR5cGUhPSdzaW1wbGVjaGVja2JveCcgJiYgcXVlc3Rpb24udHlwZSE9J2xhYmVsJyAmJiBxdWVzdGlvbi50eXBlIT0nbGFiZWwtd2l0aC1vdmVybGF5J1wiPlxyXG4gICAgPGxhYmVsIFthdHRyLmZvcl09XCJxdWVzdGlvbi5uYW1lXCI+XHJcbiAgICA8c3BhbiBbaW5uZXJIdG1sXT1cInF1ZXN0aW9uLnRpdGxlIHwgZHluYW1pY1RyYW5zbGF0ZTpkeW5hbWljUGFyYW0gfCB0cnVzdEh0bWxcIj48L3NwYW4+XHJcbiAgPC9sYWJlbD5cclxuICA8L2Rpdj5cclxuXHJcblxyXG5cclxuICA8ZGl2ICpuZ0lmPVwicXVlc3Rpb24uY3VzdG9tVGFnICYmIHF1ZXN0aW9uLmN1c3RvbVRhZz09PSdjb21wb25lbnQnICYmIHF1ZXN0aW9uLnR5cGUhPSdodG1sJyAmJiAhcXVlc3Rpb24uZGVzY3JpcHRpb25cIj5cclxuICAgIDxhcHAtZW1wbG95ZXItZ3JpZCBbZm9ybUNvbnRyb2xOYW1lXT1cInF1ZXN0aW9uLm5hbWVcIiBbZm9ybV09XCJmb3JtXCIgW2R5bmFtaWNQYXJhbV09XCJkeW5hbWljUGFyYW1cIlxyXG4gICAgICAqbmdJZj1cInF1ZXN0aW9uLmNvbXBvbmVudE5hbWU9PT0nYXBwLWVtcGxveWVyLWdyaWQnXCIgKG1vZGVsRGlzcGxheSk9XCJvbk1vZGVsRGlzcGxheSgkZXZlbnQpXCI+PC9hcHAtZW1wbG95ZXItZ3JpZD5cclxuICAgIDxhcHAtbGVnYWwtZGlzY2xhaW1hciAqbmdJZj1cInF1ZXN0aW9uLmNvbXBvbmVudE5hbWU9PT0nYXBwLWxlZ2FsLWRpc2NsYWltYXInXCJcclxuICAgICAgW2NvbXBvbmVudERhdGFdPVwicXVlc3Rpb24uY29tcG9uZW50RGF0YVwiIChhY2NlcHRlZCk9XCJvbkFjY2VwdGVkKCRldmVudClcIiBbcXVlc3Rpb25dPVwicXVlc3Rpb25cIiBbZm9ybV09XCJmb3JtXCI+XHJcbiAgICA8L2FwcC1sZWdhbC1kaXNjbGFpbWFyPlxyXG4gICAgPG1vbmV5LWV4cGVjdCAqbmdJZj1cInF1ZXN0aW9uLmNvbXBvbmVudE5hbWU9PT0nbW9uZXktZXhwZWN0J1wiPjwvbW9uZXktZXhwZWN0PlxyXG4gICAgPGFwcC1jYXB0Y2hhIFtmb3JtQ29udHJvbE5hbWVdPVwicXVlc3Rpb24ubmFtZVwiICpuZ0lmPVwicXVlc3Rpb24uY29tcG9uZW50TmFtZT09PSdhcHAtY2FwdGNoYSdcIj48L2FwcC1jYXB0Y2hhPlxyXG5cclxuICAgIDxhcHAtZmlsZS11cGxvYWRlciBbZm9ybUNvbnRyb2xOYW1lXT1cInF1ZXN0aW9uLm5hbWVcIiAqbmdJZj1cInF1ZXN0aW9uLmNvbXBvbmVudE5hbWU9PT0nYXBwLWZpbGUtdXBsb2FkZXInXCI+XHJcbiAgICA8L2FwcC1maWxlLXVwbG9hZGVyPlxyXG4gICAgPGFwcC1hZGRyZXNzIFtmb3JtQ29udHJvbE5hbWVdPVwicXVlc3Rpb24ubmFtZVwiIFtmcm9tUG9wdXBdPVwiZmFsc2VcIiBbY291bnR5UmVxdWlyZWRdPVwicXVlc3Rpb24uY291bnR5UmVxdWlyZWRcIlxyXG4gICAgICAqbmdJZj1cInF1ZXN0aW9uLmNvbXBvbmVudE5hbWU9PT0nYXBwLWFkZHJlc3MnXCIgI2FkZHJlc3MgW2lucHV0SWRdPVwicXVlc3Rpb24ubmFtZVwiPiA8L2FwcC1hZGRyZXNzPlxyXG4gICAgPGFwcC1iYW5rLWRldGFpbHMgW2Zvcm1Db250cm9sTmFtZV09XCJxdWVzdGlvbi5uYW1lXCIgKm5nSWY9XCJxdWVzdGlvbi5jb21wb25lbnROYW1lPT09J2FwcC1iYW5rLWRldGFpbHMnXCIgI2JhbmtkdGxzPlxyXG4gICAgPC9hcHAtYmFuay1kZXRhaWxzPlxyXG4gICAgPGFwcC1yZXF1YWxpZnktbGlmdC1wcmV2aW91cy1pc3N1ZXMgKm5nSWY9XCJxdWVzdGlvbi5jb21wb25lbnROYW1lPT09J2FwcC1yZXF1YWxpZnktbGlmdC1wcmV2aW91cy1pc3N1ZXMnXCJcclxuICAgIFtmb3JtQ29udHJvbE5hbWVdPVwicXVlc3Rpb24ubmFtZVwiIFtjb21wb25lbnREYXRhXT1cInF1ZXN0aW9uLmNvbXBvbmVudERhdGFcIiBbZm9ybV09XCJmb3JtXCIgPlxyXG4gICAgPC9hcHAtcmVxdWFsaWZ5LWxpZnQtcHJldmlvdXMtaXNzdWVzPiBcclxuICAgIDxhcHAtZGVwZW5kZW50LWdyaWQgW2Zvcm1Db250cm9sTmFtZV09XCJxdWVzdGlvbi5uYW1lXCIgKm5nSWY9XCJxdWVzdGlvbi5jb21wb25lbnROYW1lPT09J2FwcC1kZXBlbmRlbnQtZ3JpZCdcIj48L2FwcC1kZXBlbmRlbnQtZ3JpZD5cclxuICAgIDxhcHAtd2Vla2x5LWNlcnQtZW1wbG95ZXItZ3JpZCAjd2NFbXBsb3llckdyaWQgW2R5bmFtaWNQYXJhbV09XCJkeW5hbWljUGFyYW1cIiBbZm9ybUNvbnRyb2xOYW1lXT1cInF1ZXN0aW9uLm5hbWVcIiAqbmdJZj1cInF1ZXN0aW9uLmNvbXBvbmVudE5hbWU9PT0nYXBwLXdlZWtseS1jZXJ0LWVtcGxveWVyLWdyaWQnXCI+PC9hcHAtd2Vla2x5LWNlcnQtZW1wbG95ZXItZ3JpZD5cclxuICAgIDxhcHAtc2VhcmNoLWVtcGxveWVyIFtmb3JtQ29udHJvbE5hbWVdPVwicXVlc3Rpb24ubmFtZVwiIGVtcFR5cGU9XCJSRUdcIiAob25Gb3VuZCk9XCJzZXRFbXBsb3llcigkZXZlbnQpXCIgXHJcbiAgICAob25FbXB0eSk9XCJyZXNldEVtcGxveWVyKClcIiAqbmdJZj1cInF1ZXN0aW9uLmNvbXBvbmVudE5hbWU9PT0nYXBwLXNlYXJjaC1lbXBsb3llcidcIj48L2FwcC1zZWFyY2gtZW1wbG95ZXI+XHJcbiAgICA8YXBwLWFkZC1wYXJ0aWNpcGFudCBbZm9ybUNvbnRyb2xOYW1lXT1cInF1ZXN0aW9uLm5hbWVcIiAqbmdJZj1cInF1ZXN0aW9uLmNvbXBvbmVudE5hbWU9PT0nYXBwLWFkZC1wYXJ0aWNpcGFudCdcIj4gPC9hcHAtYWRkLXBhcnRpY2lwYW50PlxyXG4gICAgPGFwcC1hZGQtcGF5bWVudCBbcG90ZW50aWFsSXNzdWVJZF09XCJwb3RlbnRpYWxJc3N1ZUlkXCIgW2Zvcm1Db250cm9sTmFtZV09XCJxdWVzdGlvbi5uYW1lXCIgKm5nSWY9XCJxdWVzdGlvbi5jb21wb25lbnROYW1lPT09J2FwcC1hZGQtcGF5bWVudCdcIj48L2FwcC1hZGQtcGF5bWVudD5cclxuICAgIDxhcHAtbGluayBbaXNSZXF1aXJlZF09XCJxdWVzdGlvbi5pc1JlcXVpcmVkXCIgW2Zvcm1Db250cm9sTmFtZV09XCJxdWVzdGlvbi5uYW1lXCIgKm5nSWY9XCJxdWVzdGlvbi5jb21wb25lbnROYW1lPT09J2FwcC1saW5rJ1wiIFt0ZXh0XT1cImxpbmtDb21wb25lbnREYXRhPy50ZXh0XCIgW3VyaV09XCJsaW5rQ29tcG9uZW50RGF0YT8udXJpXCIgW2V4dGVybmFsVXJsXT1cImxpbmtDb21wb25lbnREYXRhPy5leHRlcm5hbFVybFwiPjwvYXBwLWxpbms+XHJcbiAgICA8YXBwLXNpZ24tc3NuIFtpc1JlcXVpcmVkXT1cInF1ZXN0aW9uLmlzUmVxdWlyZWRcIiBbZm9ybUNvbnRyb2xOYW1lXT1cInF1ZXN0aW9uLm5hbWVcIiAqbmdJZj1cInF1ZXN0aW9uLmNvbXBvbmVudE5hbWU9PT0nYXBwLXNpZ24tc3NuJ1wiIFtpbnB1dElkXT1cInF1ZXN0aW9uLm5hbWVcIj48L2FwcC1zaWduLXNzbj5cclxuICAgIDxhcHAtam9iLXRpdGxlIFtjb250cm9sXT1cImZvcm0uY29udHJvbHNbcXVlc3Rpb24ubmFtZV1cIiAgKm5nSWY9XCJxdWVzdGlvbi5jb21wb25lbnROYW1lPT09J2FwcC1qb2ItdGl0bGUnXCIgI2pvYlRpdGxlPiA8L2FwcC1qb2ItdGl0bGU+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXYgKm5nSWY9XCJxdWVzdGlvbi5pbmRlbnQhPTEgJiYgcXVlc3Rpb24udHlwZSE9J2h0bWwnICYmIHF1ZXN0aW9uLnR5cGUhPSdsYWJlbCcgJiYgcXVlc3Rpb24udHlwZSE9J2hpZGRlbidcIiBjbGFzcz1cImZvcm0tbGFiZWxcIiBbbmdTdHlsZV09XCJzZXRTdHlsZShxdWVzdGlvbi5pbmRlbnQpXCI+XHJcbiAgICA8c3BhbiBbaW5uZXJIdG1sXT1cInF1ZXN0aW9uLnRpdGxlIHwgZHluYW1pY1RyYW5zbGF0ZTpkeW5hbWljUGFyYW0gfCB0cnVzdEh0bWxcIj48L3NwYW4+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXYgKm5nSWY9XCJxdWVzdGlvbi50eXBlPT09J2h0bWwnXCIgc3R5bGU9XCJkaXNwbGF5OiBmbGV4O1wiPlxyXG4gICAgPGRpdiAgW2lubmVySFRNTF09XCJxdWVzdGlvbi5odG1sIHwgZHluYW1pY1RyYW5zbGF0ZTpkeW5hbWljUGFyYW0gfCB0cnVzdEh0bWxcIlxyXG4gICAgICBzdHlsZT1cImNvbG9yOnZhcigtLWlvbi1jb2xvci1tZWRpdW0tZ3JheSk7IHBhZGRpbmctdG9wOiAyMHB4O1wiIGNsYXNzPVwiaGVhZGluZ1wiPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2ICpuZ0lmPVwicXVlc3Rpb24uZGVzY3JpcHRpb25cIiBzdHlsZT1cInBhZGRpbmctbGVmdDogOHB4OyBwYWRkaW5nLXRvcDoxM3B4XCI+XHJcbiAgICAgIDxhcHAtb3ZlcmxheS1pbmZvIFtvdmVybGF5VGV4dF09XCJxdWVzdGlvbi5kZXNjcmlwdGlvbiB8IGR5bmFtaWNUcmFuc2xhdGU6ZHluYW1pY1BhcmFtXCI+PC9hcHAtb3ZlcmxheS1pbmZvPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgXHJcbiAgPGRpdiBbbmdTd2l0Y2hdPVwicXVlc3Rpb24udHlwZVwiPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ3RleHQnXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXJcIiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7XCI+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cInF1ZXN0aW9uLmlucHV0VHlwZSAmJiBxdWVzdGlvbi5pbnB1dFR5cGU9PT0nZGF0ZScgJiYgcXVlc3Rpb24ubmFtZSAmJiBxdWVzdGlvbi5uYW1lIT0nZG9iJ1wiPlxyXG4gICAgICAgICAgPGRpdiBbbmdTdHlsZV09XCJzZXRTdHlsZShxdWVzdGlvbi5pbmRlbnQpXCIgI3BDYWxlbmRhcj5cclxuICAgICAgICAgICAgPHAtY2FsZW5kYXIgW2Zvcm1Db250cm9sTmFtZV09XCJxdWVzdGlvbi5uYW1lXCIgW2lucHV0SWRdPVwicXVlc3Rpb24ubmFtZVwiIFttb250aE5hdmlnYXRvcl09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICBbeWVhck5hdmlnYXRvcl09XCJ0cnVlXCIgeWVhclJhbmdlPVwiMTkwMToyMDk5XCIgW3Nob3dJY29uXT1cInRydWVcIiBbbWluRGF0ZV09XCJzaG93TWluRGF0ZSA/IG1pbkRhdGUgOiBudWxsXCJcclxuICAgICAgICAgICAgICBbbWF4RGF0ZV09XCJzaG93TWF4RGF0ZSA/IG1heERhdGUgOiBudWxsXCIgZGF0ZUZvcm1hdD1cIm1tL2RkL3l5XCIgYXBwZW5kVG89XCJib2R5XCIgZGF0YVR5cGU9XCJzdHJpbmdcIlxyXG4gICAgICAgICAgICAgIChvbkJsdXIpPVwidmFsaWRhdGUocXVlc3Rpb24pXCIgKG9uU2VsZWN0KT1cInZhbGlkYXRlKHF1ZXN0aW9uKVwiIHBsYWNlaG9sZGVyPVwibW0vZGQveXl5eVwiIFtzaG93T25Gb2N1c109XCJmYWxzZVwiIFxyXG4gICAgICAgICAgICAgIChvbklucHV0KT1cImRhdGVJbnB1dCgkZXZlbnQpXCIgW2ljb25BcmlhTGFiZWxdPVwicXVlc3Rpb24udGl0bGVcIj5cclxuICAgICAgICAgICAgPC9wLWNhbGVuZGFyPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJxdWVzdGlvbi5pbnB1dFR5cGUgJiYgcXVlc3Rpb24uaW5wdXRUeXBlPT09J2RhdGUnICYmIHF1ZXN0aW9uLm5hbWUgJiYgcXVlc3Rpb24ubmFtZT09PSdkb2InXCI+XHJcbiAgICAgICAgICA8ZGl2IFtuZ1N0eWxlXT1cInNldFN0eWxlKHF1ZXN0aW9uLmluZGVudClcIiAjcENhbGVuZGFyPlxyXG4gICAgICAgICAgICA8cC1jYWxlbmRhciBbZm9ybUNvbnRyb2xOYW1lXT1cInF1ZXN0aW9uLm5hbWVcIiBbaW5wdXRJZF09XCJxdWVzdGlvbi5uYW1lXCIgW21vbnRoTmF2aWdhdG9yXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgIFt5ZWFyTmF2aWdhdG9yXT1cInRydWVcIiB5ZWFyUmFuZ2U9XCIxOTAxOjIwNTBcIiBbc2hvd0ljb25dPVwidHJ1ZVwiIFttaW5EYXRlXT1cIm1pbkRhdGVET0JcIlxyXG4gICAgICAgICAgICAgIFttYXhEYXRlXT1cIm1heERhdGVET0JcIiBkYXRlRm9ybWF0PVwibW0vZGQveXlcIiBhcHBlbmRUbz1cImJvZHlcIiBkYXRhVHlwZT1cInN0cmluZ1wiXHJcbiAgICAgICAgICAgICAgKG9uQmx1cik9XCJibHVyRE9CKHF1ZXN0aW9uKVwiIChvblNlbGVjdCk9XCJ2YWxpZGF0ZShxdWVzdGlvbilcIiBwbGFjZWhvbGRlcj1cIm1tL2RkL3l5eXlcIiBbc2hvd09uRm9jdXNdPVwiZmFsc2VcIiBcclxuICAgICAgICAgICAgICAob25JbnB1dCk9XCJkYXRlSW5wdXQoJGV2ZW50KVwiIFtpY29uQXJpYUxhYmVsXT1cInF1ZXN0aW9uLnRpdGxlXCI+XHJcbiAgICAgICAgICAgIDwvcC1jYWxlbmRhcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIFxyXG5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAqbmdJZj1cInF1ZXN0aW9uLmlucHV0VHlwZSAmJiBxdWVzdGlvbi5pbnB1dFR5cGU9PT0ndGV4dCcgJiYgcXVlc3Rpb24uY3VzdG9tVGFnICYmIHF1ZXN0aW9uLmN1c3RvbVRhZz09PSdzc24nXCJcclxuICAgICAgICAgIFtuZ1N0eWxlXT1cInNldFN0eWxlKHF1ZXN0aW9uLmluZGVudClcIj5cclxuICAgICAgICAgIDxwLWlucHV0TWFzayBhdXRvY29tcGxldGU9XCJvZmZcIiAgW2NsYXNzLmhpZGUtY29udGVudF09XCJtYXNrQ2xhc3NcIiBtYXNrPVwiOTk5LTk5LTk5OTlcIiBbaW5wdXRJZF09XCJxdWVzdGlvbi5uYW1lXCIgW2Zvcm1Db250cm9sTmFtZV09XCJxdWVzdGlvbi5uYW1lXCJcclxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCI5OTktOTktOTk5OVwiIChvbkNvbXBsZXRlKT1cInZhbGlkYXRlKHF1ZXN0aW9uKVwiIChvbkZvY3VzKT1cInVubWFzaygkZXZlbnQpXCIgKG9uQmx1cik9XCJtYXNrKCRldmVudClcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInF1ZXN0aW9uLnRpdGxlXCI+XHJcbiAgICAgICAgICA8L3AtaW5wdXRNYXNrPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAqbmdJZj1cInF1ZXN0aW9uLmlucHV0VHlwZSAmJiBxdWVzdGlvbi5pbnB1dFR5cGU9PT0ndGV4dCcgJiYgcXVlc3Rpb24uY3VzdG9tVGFnICYmIHF1ZXN0aW9uLmN1c3RvbVRhZz09PSdlYW4nXCJcclxuICAgICAgICAgIFtuZ1N0eWxlXT1cInNldFN0eWxlKHF1ZXN0aW9uLmluZGVudClcIj5cclxuICAgICAgICAgIDxwLWlucHV0TWFzayBhdXRvY29tcGxldGU9XCJvZmZcIiAgbWFzaz1cIjk5LTk5OTk5LTktOTlcIiBbaW5wdXRJZF09XCJxdWVzdGlvbi5uYW1lXCIgW2Zvcm1Db250cm9sTmFtZV09XCJxdWVzdGlvbi5uYW1lXCJcclxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCI5OS05OTk5OS05LTk5XCIgW3ZhbHVlXT1cIjgxLTAwNTg2LTAtMDFcIiAob25Db21wbGV0ZSk9XCJ2YWxpZGF0ZShxdWVzdGlvbilcIj5cclxuICAgICAgICAgIDwvcC1pbnB1dE1hc2s+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgICpuZ0lmPVwicXVlc3Rpb24uaW5wdXRUeXBlICYmIHF1ZXN0aW9uLmlucHV0VHlwZT09PSd0ZXh0JyAmJiBxdWVzdGlvbi5jdXN0b21UYWcgJiYgcXVlc3Rpb24uY3VzdG9tVGFnPT09J2R1ZWFtdCdcIlxyXG4gICAgICAgICAgW25nU3R5bGVdPVwic2V0U3R5bGUocXVlc3Rpb24uaW5kZW50KVwiPlxyXG4gICAgICAgICAgPHAtaW5wdXROdW1iZXIgW2lucHV0SWRdPVwicXVlc3Rpb24ubmFtZVwiIFtmb3JtQ29udHJvbE5hbWVdPVwicXVlc3Rpb24ubmFtZVwiIG1vZGU9XCJkZWNpbWFsXCIgbG9jYWxlPVwiZW4tVVNcIlxyXG4gICAgICAgICAgICBbbWluRnJhY3Rpb25EaWdpdHNdPVwiMlwiIFthcmlhTGFiZWxdPVwicXVlc3Rpb24udGl0bGVcIj48L3AtaW5wdXROdW1iZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG5cclxuXHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgKm5nSWY9XCJxdWVzdGlvbi5pbnB1dFR5cGUgJiYgcXVlc3Rpb24uaW5wdXRUeXBlPT09J3RleHQnICYmICghcXVlc3Rpb24uY3VzdG9tVGFnICB8fCAgcXVlc3Rpb24uY3VzdG9tVGFnPT09J09wdGlvbmFsJykgJiYgIXF1ZXN0aW9uLmlzUmVxdWlyZWRcIlxyXG4gICAgICAgICAgW25nU3R5bGVdPVwic2V0U3R5bGUocXVlc3Rpb24uaW5kZW50KVwiPlxyXG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgKm5nSWY9XCJxdWVzdGlvbi5zaXplICYmIHF1ZXN0aW9uLm1heExlbmd0aFwiXHJcbiAgICAgICAgICAgIFttYXhMZW5ndGhdPVwicXVlc3Rpb24ubWF4TGVuZ3RoXCIgcGxhY2Vob2xkZXI9J3t7XCJjb21tb24ub3B0aW9uYWxcIiB8IHRyYW5zbGF0ZX19JyBbaWRdPVwicXVlc3Rpb24ubmFtZVwiIHBJbnB1dFRleHRcclxuICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJxdWVzdGlvbi5uYW1lXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJxdWVzdGlvbi50aXRsZVwiLz5cclxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiICpuZ0lmPVwicXVlc3Rpb24uc2l6ZSAmJiAhcXVlc3Rpb24ubWF4TGVuZ3RoXCIgIHBsYWNlaG9sZGVyPSd7e1wiY29tbW9uLm9wdGlvbmFsXCIgfCB0cmFuc2xhdGV9fSdcclxuICAgICAgICAgICAgW2lkXT1cInF1ZXN0aW9uLm5hbWVcIiBwSW5wdXRUZXh0IFtmb3JtQ29udHJvbE5hbWVdPVwicXVlc3Rpb24ubmFtZVwiIFthdHRyLmFyaWEtbGFiZWxdPVwicXVlc3Rpb24udGl0bGVcIi8+XHJcbiAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiAqbmdJZj1cIiFxdWVzdGlvbi5zaXplICYmIHF1ZXN0aW9uLm1heExlbmd0aFwiIFttYXhMZW5ndGhdPVwicXVlc3Rpb24ubWF4TGVuZ3RoXCJcclxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9J3t7XCJjb21tb24ub3B0aW9uYWxcIiB8IHRyYW5zbGF0ZX19JyBbaWRdPVwicXVlc3Rpb24ubmFtZVwiIHBJbnB1dFRleHQgW2Zvcm1Db250cm9sTmFtZV09XCJxdWVzdGlvbi5uYW1lXCIgLz5cclxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiICpuZ0lmPVwiIXF1ZXN0aW9uLnNpemUgJiYgIXF1ZXN0aW9uLm1heExlbmd0aFwiIFtpZF09XCJxdWVzdGlvbi5uYW1lXCIgcElucHV0VGV4dFxyXG4gICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cInF1ZXN0aW9uLm5hbWVcIiBwbGFjZWhvbGRlcj0ne3tcImNvbW1vbi5vcHRpb25hbFwiIHwgdHJhbnNsYXRlfX0nIFthdHRyLmFyaWEtbGFiZWxdPVwicXVlc3Rpb24udGl0bGVcIi8+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDwhLS1Vc2VyIE5hbWUtLT5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwicXVlc3Rpb24uaW5wdXRUeXBlICYmIHF1ZXN0aW9uLmlucHV0VHlwZT09PSd0ZXh0JyAmJiAhcXVlc3Rpb24uY3VzdG9tVGFnICYmIHF1ZXN0aW9uLmlzUmVxdWlyZWQgICYmICFjaGVja0Zsb3dLZXkoKVwiXHJcbiAgICAgICAgICBbbmdTdHlsZV09XCJzZXRTdHlsZShxdWVzdGlvbi5pbmRlbnQpXCI+XHJcbiAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiAqbmdJZj1cInF1ZXN0aW9uLnNpemUgJiYgcXVlc3Rpb24ubWF4TGVuZ3RoXCIgXHJcbiAgICAgICAgICAgIFttYXhMZW5ndGhdPVwicXVlc3Rpb24ubWF4TGVuZ3RoXCIgW2lkXT1cInF1ZXN0aW9uLm5hbWVcIiBwSW5wdXRUZXh0IFtmb3JtQ29udHJvbE5hbWVdPVwicXVlc3Rpb24ubmFtZVwiIFthdHRyLmFyaWEtbGFiZWxdPVwicXVlc3Rpb24udGl0bGVcIiBcclxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInF1ZXN0aW9uLnBsYWNlaG9sZGVyID8gcXVlc3Rpb24ucGxhY2Vob2xkZXIgOiAnJ1wiLz5cclxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiICpuZ0lmPVwicXVlc3Rpb24uc2l6ZSAmJiAhcXVlc3Rpb24ubWF4TGVuZ3RoXCIgIFtpZF09XCJxdWVzdGlvbi5uYW1lXCJcclxuICAgICAgICAgICAgcElucHV0VGV4dCBbZm9ybUNvbnRyb2xOYW1lXT1cInF1ZXN0aW9uLm5hbWVcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInF1ZXN0aW9uLnRpdGxlXCIgW3BsYWNlaG9sZGVyXT1cInF1ZXN0aW9uLnBsYWNlaG9sZGVyID8gcXVlc3Rpb24ucGxhY2Vob2xkZXIgOiAnJ1wiLz5cclxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiICpuZ0lmPVwiIXF1ZXN0aW9uLnNpemUgJiYgcXVlc3Rpb24ubWF4TGVuZ3RoXCIgW21heExlbmd0aF09XCJxdWVzdGlvbi5tYXhMZW5ndGhcIlxyXG4gICAgICAgICAgICBbaWRdPVwicXVlc3Rpb24ubmFtZVwiIHBJbnB1dFRleHQgW2Zvcm1Db250cm9sTmFtZV09XCJxdWVzdGlvbi5uYW1lXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJxdWVzdGlvbi50aXRsZVwiIFtwbGFjZWhvbGRlcl09XCJxdWVzdGlvbi5wbGFjZWhvbGRlciA/IHF1ZXN0aW9uLnBsYWNlaG9sZGVyIDogJydcIi8+XHJcbiAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiAqbmdJZj1cIiFxdWVzdGlvbi5zaXplICYmICFxdWVzdGlvbi5tYXhMZW5ndGhcIiBbaWRdPVwicXVlc3Rpb24ubmFtZVwiIHBJbnB1dFRleHRcclxuICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJxdWVzdGlvbi5uYW1lXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJxdWVzdGlvbi50aXRsZVwiIFtwbGFjZWhvbGRlcl09XCJxdWVzdGlvbi5wbGFjZWhvbGRlciA/IHF1ZXN0aW9uLnBsYWNlaG9sZGVyIDogJydcIi8+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgXHJcblxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJxdWVzdGlvbi5pbnB1dFR5cGUgJiYgcXVlc3Rpb24uaW5wdXRUeXBlPT09J3RleHQnICYmICFxdWVzdGlvbi5jdXN0b21UYWcgJiYgcXVlc3Rpb24uaXNSZXF1aXJlZCAmJiBjaGVja0Zsb3dLZXkoKVwiXHJcbiAgICAgICAgW25nU3R5bGVdPVwic2V0U3R5bGUocXVlc3Rpb24uaW5kZW50KVwiPlxyXG4gICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiICpuZ0lmPVwicXVlc3Rpb24uc2l6ZSAmJiBxdWVzdGlvbi5tYXhMZW5ndGhcIiBcclxuICAgICAgICAgIFttYXhMZW5ndGhdPVwicXVlc3Rpb24ubWF4TGVuZ3RoXCIgW2lkXT1cInF1ZXN0aW9uLm5hbWVcIiBwSW5wdXRUZXh0IFtmb3JtQ29udHJvbE5hbWVdPVwicXVlc3Rpb24ubmFtZVwiIFthdHRyLmFyaWEtbGFiZWxdPVwicXVlc3Rpb24udGl0bGVcIiBbZGlzYWJsZWRdPVwiIXBob25lVmVyaWZpZWRcIiBbYXV0b2NvbXBsZXRlXT1cInF1ZXN0aW9uPy5uYW1lLmluY2x1ZGVzKCdzZWNBbnMnKT8nb2ZmJzogJ29uJ1wiLz5cclxuICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiAqbmdJZj1cInF1ZXN0aW9uLnNpemUgJiYgIXF1ZXN0aW9uLm1heExlbmd0aFwiICBbaWRdPVwicXVlc3Rpb24ubmFtZVwiXHJcbiAgICAgICAgICBwSW5wdXRUZXh0IFtmb3JtQ29udHJvbE5hbWVdPVwicXVlc3Rpb24ubmFtZVwiIFthdHRyLmFyaWEtbGFiZWxdPVwicXVlc3Rpb24udGl0bGVcIiBbZGlzYWJsZWRdPVwiIXBob25lVmVyaWZpZWRcIi8+XHJcbiAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgKm5nSWY9XCIhcXVlc3Rpb24uc2l6ZSAmJiBxdWVzdGlvbi5tYXhMZW5ndGhcIiBbbWF4TGVuZ3RoXT1cInF1ZXN0aW9uLm1heExlbmd0aFwiXHJcbiAgICAgICAgICBbaWRdPVwicXVlc3Rpb24ubmFtZVwiIHBJbnB1dFRleHQgW2Zvcm1Db250cm9sTmFtZV09XCJxdWVzdGlvbi5uYW1lXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJxdWVzdGlvbi50aXRsZVwiIFtkaXNhYmxlZF09XCIhcGhvbmVWZXJpZmllZFwiLz5cclxuICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiAqbmdJZj1cIiFxdWVzdGlvbi5zaXplICYmICFxdWVzdGlvbi5tYXhMZW5ndGhcIiBbaWRdPVwicXVlc3Rpb24ubmFtZVwiICBwSW5wdXRUZXh0XHJcbiAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cInF1ZXN0aW9uLm5hbWVcIiAgW2F0dHIuYXJpYS1sYWJlbF09XCJxdWVzdGlvbi50aXRsZVwiIFtkaXNhYmxlZF09XCIhcGhvbmVWZXJpZmllZFwiLz5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IFxyXG4gICAgICAgICAgKm5nSWY9XCJxdWVzdGlvbi5pbnB1dFR5cGUgICYmIHF1ZXN0aW9uLmlucHV0VHlwZT09PSd0ZXh0J1xyXG4gICAgICAgICAgICAgICAgICAmJiBxdWVzdGlvbi5jdXN0b21UYWcgICYmIHF1ZXN0aW9uLmN1c3RvbVRhZy5pbmNsdWRlcygnZmlyc3ROYW1lJykgJiYgY2hlY2tGbG93S2V5KCkgXCI+XHJcbiAgICAgICAgICA8ZGl2IFtuZ1N0eWxlXT1cInNldFN0eWxlKHF1ZXN0aW9uLmluZGVudClcIj5cclxuICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgW21heExlbmd0aF09XCJxdWVzdGlvbi5tYXhMZW5ndGhcIiBbaWRdPVwicXVlc3Rpb24ubmFtZVwiIFthdHRyLmFyaWEtbGFiZWxdPVwicXVlc3Rpb24udGl0bGVcIiBwSW5wdXRUZXh0IFtmb3JtQ29udHJvbE5hbWVdPVwicXVlc3Rpb24ubmFtZVwiICBbYXR0ci5hcmlhLWxhYmVsXT1cInF1ZXN0aW9uLnRpdGxlXCIvPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBcclxuICAgICAgICAqbmdJZj1cInF1ZXN0aW9uLmlucHV0VHlwZSAgJiYgcXVlc3Rpb24uaW5wdXRUeXBlPT09J3RleHQnXHJcbiAgICAgICAgICAgICAgICAmJiBxdWVzdGlvbi5jdXN0b21UYWcgICYmIHF1ZXN0aW9uLmN1c3RvbVRhZy5pbmNsdWRlcygnbGFzdE5hbWUnKSAmJiBjaGVja0Zsb3dLZXkoKSBcIj5cclxuICAgICAgICA8ZGl2IFtuZ1N0eWxlXT1cInNldFN0eWxlKHF1ZXN0aW9uLmluZGVudClcIj5cclxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiICBbbWF4TGVuZ3RoXT1cInF1ZXN0aW9uLm1heExlbmd0aFwiIFtpZF09XCJxdWVzdGlvbi5uYW1lXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJxdWVzdGlvbi50aXRsZVwiIHBJbnB1dFRleHQgW2Zvcm1Db250cm9sTmFtZV09XCJxdWVzdGlvbi5uYW1lXCIgIFthdHRyLmFyaWEtbGFiZWxdPVwicXVlc3Rpb24udGl0bGVcIi8+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiIXF1ZXN0aW9uLmlucHV0VHlwZSAmJiBxdWVzdGlvbi5jdXN0b21UYWcgJiYgICFxdWVzdGlvbi5jdXN0b21UYWcuaW5jbHVkZXMoJ3Bob25lJylcIlxyXG4gICAgICAgICAgW25nU3R5bGVdPVwieydwYWRkaW5nLWxlZnQucHgnOiBxdWVzdGlvbi5pbmRlbnQqMTB9XCIgW25nU3R5bGVdPVwic2V0U3R5bGUocXVlc3Rpb24uaW5kZW50KVwiPlxyXG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgW2lkXT1cInF1ZXN0aW9uLm5hbWVcIiBwSW5wdXRUZXh0IFtmb3JtQ29udHJvbE5hbWVdPVwicXVlc3Rpb24ubmFtZVwiIFthdHRyLmFyaWEtbGFiZWxdPVwicXVlc3Rpb24udGl0bGVcIiBbcGxhY2Vob2xkZXJdPVwicXVlc3Rpb24ucGxhY2Vob2xkZXIgPyBxdWVzdGlvbi5wbGFjZWhvbGRlciA6ICcnXCIvPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICAgICAgPGRpdiAqbmdJZj1cInF1ZXN0aW9uLmN1c3RvbVRhZyAmJiBxdWVzdGlvbi5jdXN0b21UYWcuaW5jbHVkZXMoJ3Bob25lJykgICYmICFjaGVja0Zsb3dLZXkoKVwiPlxyXG4gICAgICAgICAgPHAtaW5wdXRNYXNrIGF1dG9jb21wbGV0ZT1cIm9mZlwiICBtYXNrPVwiOTk5LTk5OS05OTk5XCIgW2lucHV0SWRdPVwicXVlc3Rpb24ubmFtZVwiIFtmb3JtQ29udHJvbE5hbWVdPVwicXVlc3Rpb24ubmFtZVwiIFxyXG4gICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicXVlc3Rpb24uaXNSZXF1aXJlZCA/ICc5OTktOTk5LTk5OTknIDogKCdjb21tb24ub3B0aW9uYWwnIHwgdHJhbnNsYXRlKVwiXHJcbiAgICAgICAgICAgICpuZ0lmPVwicXVlc3Rpb24uaW5wdXRUeXBlICYmIHF1ZXN0aW9uLmlucHV0VHlwZT09PSd0ZXh0J1wiIChvbkJsdXIpPVwiY2hlY2tGb3JWYWx1ZUNoYW5nZSgkZXZlbnQpXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJxdWVzdGlvbi50aXRsZVwiPlxyXG4gICAgICAgICAgPC9wLWlucHV0TWFzaz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwicXVlc3Rpb24uY3VzdG9tVGFnICYmIHF1ZXN0aW9uLmN1c3RvbVRhZy5pbmNsdWRlcygncGhvbmUnKSAmJiBjaGVja0Zsb3dLZXkoKVwiPlxyXG4gICAgICAgICAgPHAtaW5wdXRNYXNrIGF1dG9jb21wbGV0ZT1cIm9mZlwiICBtYXNrPVwiOTk5IDk5OS05OTk5XCIgW2lucHV0SWRdPVwicXVlc3Rpb24ubmFtZVwiIFtmb3JtQ29udHJvbE5hbWVdPVwicXVlc3Rpb24ubmFtZVwiIFxyXG4gICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicXVlc3Rpb24uaXNSZXF1aXJlZCA/ICc5OTkgOTk5LTk5OTknIDogKCdjb21tb24ub3B0aW9uYWwnIHwgdHJhbnNsYXRlKVwiXHJcbiAgICAgICAgICAgICpuZ0lmPVwicXVlc3Rpb24uaW5wdXRUeXBlICYmIHF1ZXN0aW9uLmlucHV0VHlwZT09PSd0ZXh0J1wiIChvbkJsdXIpPVwiY2hlY2tGb3JWYWx1ZUNoYW5nZSgkZXZlbnQpXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJxdWVzdGlvbi50aXRsZVwiPlxyXG4gICAgICAgICAgPC9wLWlucHV0TWFzaz5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICBcclxuICAgICAgICA8ZGl2ICpuZ0lmPVwicXVlc3Rpb24uY3VzdG9tVGFnICYmIHF1ZXN0aW9uLmN1c3RvbVRhZy5pbmNsdWRlcygncGFzc3dvcmQnKVwiPlxyXG4gICAgICAgICAgPHAtcGFzc3dvcmQgW2lucHV0SWRdPVwicXVlc3Rpb24ubmFtZVwiIFtmb3JtQ29udHJvbE5hbWVdPVwicXVlc3Rpb24ubmFtZVwiIFt0b2dnbGVNYXNrXT1cInRydWVcIiBbbWF4TGVuZ3RoXT1cInF1ZXN0aW9uLm1heExlbmd0aFwiIHdlYWtMYWJlbD0ne3tcImNvbW1vbi5wYXNzd29yZC53ZWFrXCIgfCB0cmFuc2xhdGV9fSdcclxuICAgICAgICAgIHByb21wdExhYmVsPSAne3tcImNvbW1vbi5lbnRlci5wYXNzd29yZFwiIHwgdHJhbnNsYXRlfX0nIG1lZGl1bUxhYmVsPSd7e1wiY29tbW9uLnBhc3N3b3JkLndlYWtcIiB8IHRyYW5zbGF0ZX19JyBzdHJvbmdMYWJlbD0ne3tcImNvbW1vbi5wYXNzd29yZC5zdHJvbmdcIiB8IHRyYW5zbGF0ZX19JyBzdHJvbmdSZWdleD1cIl4oPz0uKlthLXpdKSg/PS4qW0EtWl0pKD89LipbMC05XSkoPz0uezgsfSkoPz0uKltfQCokISMuXSlcIiBbYXJpYUxhYmVsXT1cInF1ZXN0aW9uLnRpdGxlXCI+XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImZvb3RlclwiPlxyXG4gICAgICAgICAgICAgIDxwLWRpdmlkZXI+PC9wLWRpdmlkZXI+XHJcbiAgICAgICAgICAgICAgPHAgY2xhc3M9XCJtdC0xXCIgc3R5bGU9XCJmb250LXNpemU6IHNtYWxsO1wiPnt7XCJjb21tb24ucGFzc3dvcmQubXVzdC5pbmNsdWRlXCIgfCB0cmFuc2xhdGV9fTwvcD5cclxuICAgICAgICAgICAgICA8dWwgc3R5bGU9XCJsaW5lLWhlaWdodDogMS4yNVwiPlxyXG4gICAgICAgICAgICAgICAgICA8bGkgc3R5bGU9XCJtYXJnaW4tbGVmdDogLTI1cHg7IGZvbnQtc2l6ZTogc21hbGw7XCI+e3tcImNvbW1vbi5wYXNzd29yZC5vbmUudXBwZXJjYXNlXCIgfCB0cmFuc2xhdGV9fTwvbGk+XHJcbiAgICAgICAgICAgICAgICAgIDxsaSBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAtMjVweDsgZm9udC1zaXplOiBzbWFsbDtcIj57e1wiY29tbW9uLnBhc3N3b3JkLm9uZS5sb3dlcmNhc2VcIiB8IHRyYW5zbGF0ZX19PC9saT5cclxuICAgICAgICAgICAgICAgICAgPGxpIHN0eWxlPVwibWFyZ2luLWxlZnQ6IC0yNXB4OyBmb250LXNpemU6IHNtYWxsO1wiPnt7XCJjb21tb24ucGFzc3dvcmQub25lLm51bWJlclwiIHwgdHJhbnNsYXRlfX08L2xpPlxyXG4gICAgICAgICAgICAgICAgICA8bGkgc3R5bGU9XCJtYXJnaW4tbGVmdDogLTI1cHg7IGZvbnQtc2l6ZTogc21hbGw7XCI+e3tcImNvbW1vbi5wYXNzd29yZC50d28ubWVudGlvbmVkLmNoYXJcIiB8IHRyYW5zbGF0ZX19IDxiPl8gJiM2NDsgKiAkICEgIyAuPC9iPjwvbGk+XHJcbiAgICAgICAgICAgICAgICAgIDxsaSBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAtMjVweDsgZm9udC1zaXplOiBzbWFsbDtcIj57e1wiY29tbW9uLnBhc3N3b3JkLmZvcnRlZW4uY2hhcnNcIiB8IHRyYW5zbGF0ZX19PC9saT5cclxuICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgIDxwLWRpdmlkZXI+PC9wLWRpdmlkZXI+XHJcbiAgICAgICAgICAgICAgPHAgY2xhc3M9XCJtdC0xXCIgc3R5bGU9XCJmb250LXNpemU6IHNtYWxsO1wiPnt7XCJjb21tb24ucGFzc3dvcmQuc3VnZ2VzdGlvbi5oZWFkZXJcIiB8IHRyYW5zbGF0ZX19PC9wPlxyXG4gICAgICAgICAgICAgIDx1bCBzdHlsZT1cImxpbmUtaGVpZ2h0OiAxLjI1XCI+XHJcbiAgICAgICAgICAgICAgICA8bGkgc3R5bGU9XCJtYXJnaW4tbGVmdDogLTI1cHg7IGZvbnQtc2l6ZTogc21hbGw7XCI+e3tcImNvbW1vbi5wYXNzd29yZC5zdWdnZXN0aW9uLm5hbWUuZW1haWwucGhvbmVcIiB8IHRyYW5zbGF0ZX19PC9saT5cclxuICAgICAgICAgICAgICAgIDxsaSBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAtMjVweDsgZm9udC1zaXplOiBzbWFsbDtcIj57e1wiY29tbW9uLnBhc3N3b3JkLnN1Z2dlc3Rpb24ua2lkLnBhcnRuZXIucGV0XCIgfCB0cmFuc2xhdGV9fTwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGkgc3R5bGU9XCJtYXJnaW4tbGVmdDogLTI1cHg7IGZvbnQtc2l6ZTogc21hbGw7XCI+e3tcImNvbW1vbi5wYXNzd29yZC5zdWdnZXN0aW9uLm5hbWUub3IudXNlcmlkXCIgfCB0cmFuc2xhdGV9fTwvbGk+XHJcbiAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICA8L3AtcGFzc3dvcmQ+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJxdWVzdGlvbi5jdXN0b21UYWcgJiYgcXVlc3Rpb24uY3VzdG9tVGFnLmluY2x1ZGVzKCdmaWxldXBsb2FkJylcIj5cclxuICAgICAgICAgIDxhcHAtZmlsZS11cGxvYWRlciBbYWxsb3dlZEZpbGVUeXBlXT1cInF1ZXN0aW9uLmFsbG93ZWRGaWxlVHlwZVwiIFtmb3JtQ29udHJvbE5hbWVdPVwicXVlc3Rpb24ubmFtZVwiXHJcbiAgICAgICAgICAgIFttYXhTaXplSW5NQl09XCJxdWVzdGlvbi5zaXplSW5NQlwiIFttdWx0aXBsZV09XCJxdWVzdGlvbi5tdWx0aXBsZVwiIFtub09mRmlsZXNUb1VwbG9hZF09XCJxdWVzdGlvbi5ub09GRmlsZXNcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInF1ZXN0aW9uLnRpdGxlXCI+XHJcbiAgICAgICAgICA8L2FwcC1maWxlLXVwbG9hZGVyPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8IS0tRW1haWwgQWRkcmVzcy0tPlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgICpuZ0lmPVwicXVlc3Rpb24uaW5wdXRUeXBlICAmJiBxdWVzdGlvbi5pbnB1dFR5cGU9PT0ndGV4dCdcclxuICAgICAgICAgICAgICAgICAgJiYgcXVlc3Rpb24uY3VzdG9tVGFnICAmJiAocXVlc3Rpb24uY3VzdG9tVGFnIT0nc3NuJyAmJiBxdWVzdGlvbi5jdXN0b21UYWchPSdPcHRpb25hbCcgJiYgcXVlc3Rpb24uY3VzdG9tVGFnIT0nZmlsZXVwbG9hZCcgIFxyXG4gICAgICAgICAgICAgICAgICAmJiBxdWVzdGlvbi5jdXN0b21UYWchPSdwaG9uZScgJiYgcXVlc3Rpb24uY3VzdG9tVGFnIT0nZmlyc3ROYW1lJyAmJiBxdWVzdGlvbi5jdXN0b21UYWchPSdsYXN0TmFtZScgICYmIHF1ZXN0aW9uLmN1c3RvbVRhZyE9J2VhbicgICYmIHF1ZXN0aW9uLmN1c3RvbVRhZyE9J2R1ZWFtdCcgJiYgcXVlc3Rpb24uY3VzdG9tVGFnIT0ncGFzc3dvcmQnKSAmJiBjaGVja0Zsb3dLZXkoKVwiPlxyXG4gICAgICAgICAgPGRpdiBbbmdTdHlsZV09XCJzZXRTdHlsZShxdWVzdGlvbi5pbmRlbnQpXCI+XHJcbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIFtpZF09XCJxdWVzdGlvbi5uYW1lXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJxdWVzdGlvbi50aXRsZVwiIHBJbnB1dFRleHQgW2Zvcm1Db250cm9sTmFtZV09XCJxdWVzdGlvbi5uYW1lXCIgW2Rpc2FibGVkXT1cInRydWVcIlxyXG4gICAgICAgICAgICAoYmx1cik9XCJjaGVja0ZvclZhbHVlQ2hhbmdlKCRldmVudClcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInF1ZXN0aW9uLnRpdGxlXCIgW3BsYWNlaG9sZGVyXT1cInF1ZXN0aW9uLnBsYWNlaG9sZGVyID8gcXVlc3Rpb24ucGxhY2Vob2xkZXIgOiAnJ1wiLz5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXY+XHJcbiAgICAgICAgICA8ZGl2IFxyXG4gICAgICAgICAgICAqbmdJZj1cInF1ZXN0aW9uLmlucHV0VHlwZSAgJiYgcXVlc3Rpb24uaW5wdXRUeXBlPT09J3RleHQnXHJcbiAgICAgICAgICAgICAgICAgICAgJiYgcXVlc3Rpb24uY3VzdG9tVGFnICAmJiAocXVlc3Rpb24uY3VzdG9tVGFnIT0nc3NuJyAmJiBxdWVzdGlvbi5jdXN0b21UYWchPSdPcHRpb25hbCcgJiYgcXVlc3Rpb24uY3VzdG9tVGFnIT0nZmlsZXVwbG9hZCcgIFxyXG4gICAgICAgICAgICAgICAgICAgICYmIHF1ZXN0aW9uLmN1c3RvbVRhZyE9J3Bob25lJyAgJiYgcXVlc3Rpb24uY3VzdG9tVGFnIT0nZWFuJyAgJiYgcXVlc3Rpb24uY3VzdG9tVGFnIT0nZHVlYW10JyAmJiBxdWVzdGlvbi5jdXN0b21UYWchPSdwYXNzd29yZCcpICYmICFjaGVja0Zsb3dLZXkoKVwiPlxyXG4gICAgICAgICAgICA8ZGl2IFtuZ1N0eWxlXT1cInNldFN0eWxlKHF1ZXN0aW9uLmluZGVudClcIj5cclxuICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBbaWRdPVwicXVlc3Rpb24ubmFtZVwiIFthdHRyLmFyaWEtbGFiZWxdPVwicXVlc3Rpb24udGl0bGVcIiBwSW5wdXRUZXh0IFtmb3JtQ29udHJvbE5hbWVdPVwicXVlc3Rpb24ubmFtZVwiIChibHVyKT1cImNoZWNrRm9yVmFsdWVDaGFuZ2UoJGV2ZW50KVwiIFthdHRyLmFyaWEtbGFiZWxdPVwicXVlc3Rpb24udGl0bGVcIi8+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCIhcXVlc3Rpb24uaW5wdXRUeXBlICYmICFxdWVzdGlvbi5jdXN0b21UYWdcIiBbbmdTdHlsZV09XCJzZXRTdHlsZShxdWVzdGlvbi5pbmRlbnQpXCI+XHJcbiAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBbaWRdPVwicXVlc3Rpb24ubmFtZVwiICpuZ0lmPVwicXVlc3Rpb24uc2l6ZVwiICBwSW5wdXRUZXh0XHJcbiAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwicXVlc3Rpb24ubmFtZVwiIFthdHRyLmFyaWEtbGFiZWxdPVwicXVlc3Rpb24udGl0bGVcIiBbcGxhY2Vob2xkZXJdPVwicXVlc3Rpb24ucGxhY2Vob2xkZXIgPyBxdWVzdGlvbi5wbGFjZWhvbGRlciA6ICcnXCIvPlxyXG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgW2lkXT1cInF1ZXN0aW9uLm5hbWVcIiAqbmdJZj1cIiFxdWVzdGlvbi5zaXplXCIgcElucHV0VGV4dCBbZm9ybUNvbnRyb2xOYW1lXT1cInF1ZXN0aW9uLm5hbWVcIiBcclxuICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwicXVlc3Rpb24udGl0bGVcIiBbcGxhY2Vob2xkZXJdPVwicXVlc3Rpb24ucGxhY2Vob2xkZXIgPyBxdWVzdGlvbi5wbGFjZWhvbGRlciA6ICcnXCIvPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwhLS0gPC9pb24tY29sPlxyXG4gICAgPGlvbi1jb2wgc2l6ZT1cIjFcIiAqbmdJZj1cInF1ZXN0aW9uLmRlc2NyaXB0aW9uXCIgc3R5bGU9XCJwYWRkaW5nLXRvcDogMTJweFwiPlxyXG4gICAgICA8YXBwLW92ZXJsYXktaW5mbyBbb3ZlcmxheVRleHRdPVwicXVlc3Rpb24uZGVzY3JpcHRpb24gfCBkeW5hbWljVHJhbnNsYXRlOmR5bmFtaWNQYXJhbVwiPjwvYXBwLW92ZXJsYXktaW5mbz5cclxuICAgIDwvaW9uLWNvbD5cclxuICA8L2lvbi1yb3c+IC0tPlxyXG4gICAgICAgIDxkaXYgc3R5bGU9XCJmbGV4LWdyb3c6IDE7XCIgKm5nSWY9XCJxdWVzdGlvbi5kZXNjcmlwdGlvblwiIHN0eWxlPVwicGFkZGluZy1sZWZ0OiA4cHg7IHBhZGRpbmctdG9wOjNweFwiPlxyXG4gICAgICAgICAgPGFwcC1vdmVybGF5LWluZm8gW292ZXJsYXlUZXh0XT1cInF1ZXN0aW9uLmRlc2NyaXB0aW9uIHwgZHluYW1pY1RyYW5zbGF0ZTpkeW5hbWljUGFyYW1cIj48L2FwcC1vdmVybGF5LWluZm8+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2NvbW1lbnQnXCI+XHJcbiAgICAgIDxkaXYgW25nU3R5bGVdPVwic2V0U3R5bGUocXVlc3Rpb24uaW5kZW50KVwiICpuZ0lmPVwicXVlc3Rpb24ubWF4TGVuZ3RoXCI+XHJcbiAgICAgICAgPHRleHRhcmVhIFtpZF09XCJxdWVzdGlvbi5uYW1lXCIgYXV0b1Jlc2l6ZT1cInRydWVcIiBbZm9ybUNvbnRyb2xOYW1lXT1cInF1ZXN0aW9uLm5hbWVcIlxyXG4gICAgICAgICAgW21heExlbmd0aF09XCJxdWVzdGlvbi5tYXhMZW5ndGhcIiBbcm93c109XCIzXCIgW2NvbHNdPVwiMzVcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInF1ZXN0aW9uLnRpdGxlXCJcclxuICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJxdWVzdGlvbi5wbGFjZWhvbGRlciA/IHF1ZXN0aW9uLnBsYWNlaG9sZGVyIDogJydcIj48L3RleHRhcmVhPlxyXG4gICAgICAgIDxkaXY+XHJcblxyXG4gICAgICAgICAgPHNtYWxsIHN0eWxlQ2xhc3M9XCJwLWQtYmxvY2tcIiAqbmdJZj1cInF1ZXN0aW9uLmRlc2NyaXB0aW9uXCI+e3txdWVzdGlvbi5kZXNjcmlwdGlvbn19PC9zbWFsbD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IFtuZ1N0eWxlXT1cInNldFN0eWxlKHF1ZXN0aW9uLmluZGVudClcIiAqbmdJZj1cIiFxdWVzdGlvbi5tYXhMZW5ndGhcIj5cclxuICAgICAgICA8dGV4dGFyZWEgW2lkXT1cInF1ZXN0aW9uLm5hbWVcIiBhdXRvUmVzaXplPVwidHJ1ZVwiIFtmb3JtQ29udHJvbE5hbWVdPVwicXVlc3Rpb24ubmFtZVwiIFtyb3dzXT1cIjNcIlxyXG4gICAgICAgICAgW2NvbHNdPVwiMzVcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInF1ZXN0aW9uLnRpdGxlXCIgW3BsYWNlaG9sZGVyXT1cInF1ZXN0aW9uLnBsYWNlaG9sZGVyID8gcXVlc3Rpb24ucGxhY2Vob2xkZXIgOiAnJ1wiPjwvdGV4dGFyZWE+XHJcbiAgICAgICAgPGRpdj5cclxuXHJcbiAgICAgICAgICA8c21hbGwgc3R5bGVDbGFzcz1cInAtZC1ibG9ja1wiICpuZ0lmPVwicXVlc3Rpb24uZGVzY3JpcHRpb25cIj57e3F1ZXN0aW9uLmRlc2NyaXB0aW9ufX08L3NtYWxsPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuXHJcbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInZHJvcGRvd24nXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXJcIiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7XCI+XHJcbiAgICAgICAgPGRpdiBbbmdTdHlsZV09XCJzZXRTdHlsZShxdWVzdGlvbi5pbmRlbnQpXCI+XHJcbiAgICAgICAgICA8cC1hdXRvQ29tcGxldGUgKm5nSWY9XCJmYWxzZVwiIFtmb3JtQ29udHJvbE5hbWVdPVwicXVlc3Rpb24ubmFtZVwiIFtzdWdnZXN0aW9uc109XCJmaWx0ZXJSZXN1bHRcIiBhcHBlbmRUbz1cImJvZHlcIlxyXG4gICAgICAgICAgICAoY29tcGxldGVNZXRob2QpPVwiZmlsdGVyVmFsdWUoJGV2ZW50LHF1ZXN0aW9uKVwiIGZpZWxkPVwidGV4dFwiIFtkcm9wZG93bl09XCJ0cnVlXCIgbWluTGVuZ3RoPVwiMVwiXHJcbiAgICAgICAgICAgIFtmb3JjZVNlbGVjdGlvbl09XCJ0cnVlXCIgKG9uU2VsZWN0KT1cIm9uU2VsZWN0KCRldmVudCxxdWVzdGlvbi5uYW1lKVwiIFtjb21wbGV0ZU9uRm9jdXNdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgbGV0LXZhbHVlIHBUZW1wbGF0ZT1cIml0ZW1cIj5cclxuICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdj57e3ZhbHVlLnRleHR9fTwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgPC9wLWF1dG9Db21wbGV0ZT5cclxuICAgICAgICAgIDxhcHAtZHJvcGRvd24gW29wdGlvbnNdPVwiZmlsdGVyUmVzdWx0XCIgW2Zvcm1Db250cm9sTmFtZV09XCJxdWVzdGlvbi5uYW1lXCIgb3B0aW9uTGFiZWw9XCJ0ZXh0XCIgYXBwZW5kVG89XCJib2R5XCJcclxuICAgICAgICAgIChvbkNoYW5nZSk9XCJvblNlbGVjdCgkZXZlbnQscXVlc3Rpb24ubmFtZSlcIiBbYXV0b0Rpc3BsYXlGaXJzdF09XCJmYWxzZVwiIChvbkNsaWNrKT1cImZpbHRlclZhbHVlKCRldmVudCxxdWVzdGlvbilcIiBbaW5wdXRJZF09XCJxdWVzdGlvbi5uYW1lXCJcclxuICAgICAgICAgIFthcmlhTGFiZWxdPVwicXVlc3Rpb24udGl0bGVcIj48L2FwcC1kcm9wZG93bj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IHN0eWxlPVwiZmxleC1ncm93OiAxO1wiICpuZ0lmPVwicXVlc3Rpb24uZGVzY3JpcHRpb25cIiBzdHlsZT1cInBhZGRpbmctbGVmdDogOHB4OyBwYWRkaW5nLXRvcDozcHhcIj5cclxuICAgICAgICAgIDxhcHAtb3ZlcmxheS1pbmZvIFtvdmVybGF5VGV4dF09XCJxdWVzdGlvbi5kZXNjcmlwdGlvbiB8IGR5bmFtaWNUcmFuc2xhdGU6ZHluYW1pY1BhcmFtXCI+PC9hcHAtb3ZlcmxheS1pbmZvPlxyXG5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCIncmFkaW9ncm91cCdcIj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXJcIj4gICAgICAgIFxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNoYXJlZC1yb3dcIiAqbmdJZj1cInF1ZXN0aW9uLm5hbWUgJiYgcXVlc3Rpb24ubmFtZSE9J3ZlcmlmaWNhdGlvbidcIj5cclxuICAgICAgICAgICAgPGRpdiBbbmdTdHlsZV09XCJzZXRTdHlsZShxdWVzdGlvbi5pbmRlbnQpXCI+XHJcbiAgICAgICAgICAgICAgPHAtc2VsZWN0QnV0dG9uIHVuc2VsZWN0YWJsZT1cInRydWVcIiBbb3B0aW9uc109XCJxdWVzdGlvbi5jaG9pY2VzXCIgW2Zvcm1Db250cm9sTmFtZV09XCJxdWVzdGlvbi5uYW1lXCIgb3B0aW9uTGFiZWw9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgIG9wdGlvblZhbHVlPVwidmFsdWVcIiAob25PcHRpb25DbGljayk9XCJvblJhZGlvT3B0aW9uQ2xpY2soJGV2ZW50LHF1ZXN0aW9uKVwiPjwvcC1zZWxlY3RCdXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicXVlc3Rpb24uZGVzY3JpcHRpb25cIiA+XHJcbiAgICAgICAgICAgICAgPGFwcC1vdmVybGF5LWluZm8gW292ZXJsYXlUZXh0XT1cInF1ZXN0aW9uLmRlc2NyaXB0aW9uIHwgZHluYW1pY1RyYW5zbGF0ZTpkeW5hbWljUGFyYW1cIj48L2FwcC1vdmVybGF5LWluZm8+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgXHJcbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwicXVlc3Rpb24ubmFtZSAmJiBxdWVzdGlvbi5uYW1lPT09J3ZlcmlmaWNhdGlvbidcIj5cclxuICAgICAgICAgICAgPGRpdiBbbmdTdHlsZV09XCJzZXRTdHlsZShxdWVzdGlvbi5pbmRlbnQpXCI+XHJcbiAgICAgICAgICAgICAgPHAtc2VsZWN0QnV0dG9uIFtvcHRpb25zXT1cInF1ZXN0aW9uLmNob2ljZXNcIiBbZm9ybUNvbnRyb2xOYW1lXT1cInF1ZXN0aW9uLm5hbWVcIiBvcHRpb25MYWJlbD1cInRleHRcIlxyXG4gICAgICAgICAgICAgICAgb3B0aW9uVmFsdWU9XCJ2YWx1ZVwiIChvbk9wdGlvbkNsaWNrKT1cImdlbmVyYXRlT3RwRm9yTmV3VXNlckNyZWF0aW9uKCRldmVudCxmb3JtKVwiPjwvcC1zZWxlY3RCdXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8YXBwLW1mYTIgKm5nSWY9XCJpc090cE1vZGFsRW5hYmxlZFwiIFtkaXNwbGF5XT1cImlzT3RwTW9kYWxFbmFibGVkXCIgW3JldHVybmluZ1VzZXJdPVwiaXNSZXR1cm5pbmdVc2VyXCIgWyhmb3JtKV09XCJmb3JtXCIgKHN1Y2Nlc3MpPVwiZW5hYmxlRmllbGRzKClcIj48L2FwcC1tZmEyPlxyXG4gICAgICAgICAgICA8ZGl2IHN0eWxlPVwiZmxleC1ncm93OiAxO1wiICpuZ0lmPVwicXVlc3Rpb24uZGVzY3JpcHRpb25cIiBzdHlsZT1cInBhZGRpbmctbGVmdDogOHB4OyBwYWRkaW5nLXRvcDozcHhcIj5cclxuICAgICAgICAgICAgICA8YXBwLW92ZXJsYXktaW5mbyBbb3ZlcmxheVRleHRdPVwicXVlc3Rpb24uZGVzY3JpcHRpb24gfCBkeW5hbWljVHJhbnNsYXRlOmR5bmFtaWNQYXJhbVwiPjwvYXBwLW92ZXJsYXktaW5mbz5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInbnVtYmVyJ1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyXCIgc3R5bGU9XCJkaXNwbGF5OiBmbGV4O1wiPlxyXG4gICAgICAgIDxkaXYgW25nU3R5bGVdPVwic2V0U3R5bGUocXVlc3Rpb24uaW5kZW50KVwiPlxyXG4gICAgICAgICAgPHAtaW5wdXROdW1iZXIgZm9ybUNvbnRyb2xOYW1lPVwie3txdWVzdGlvbi5uYW1lfX1cIiBtb2RlPVwiZGVjaW1hbFwiIFtpbnB1dElkXT1cInF1ZXN0aW9uLm5hbWVcIiBbdXNlR3JvdXBpbmddPVwiZmFsc2VcIlxyXG4gICAgICAgICAgW21pbl09XCJtaW5WYWx1ZVwiIFttYXhdPVwibWF4VmFsdWVcIlxyXG4gICAgICAgICAgW3NpemVdPVwicXVlc3Rpb24uc2l6ZSA/IHF1ZXN0aW9uLnNpemUgOiBudWxsXCIgW21heGxlbmd0aF09XCJxdWVzdGlvbi5tYXhMZW5ndGggPyBxdWVzdGlvbi5tYXhMZW5ndGggOiBudWxsXCIgW2FyaWFMYWJlbF09XCJxdWVzdGlvbi50aXRsZVwiXHJcbiAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicXVlc3Rpb24ucGxhY2Vob2xkZXIgPyBxdWVzdGlvbi5wbGFjZWhvbGRlciA6ICcnXCI+PC9wLWlucHV0TnVtYmVyPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgc3R5bGU9XCJmbGV4LWdyb3c6IDE7XCIgKm5nSWY9XCJxdWVzdGlvbi5kZXNjcmlwdGlvblwiIHN0eWxlPVwicGFkZGluZy1sZWZ0OiA4cHg7IHBhZGRpbmctdG9wOjNweFwiPlxyXG4gICAgICAgICAgPGFwcC1vdmVybGF5LWluZm8gW292ZXJsYXlUZXh0XT1cInF1ZXN0aW9uLmRlc2NyaXB0aW9uIHwgZHluYW1pY1RyYW5zbGF0ZTpkeW5hbWljUGFyYW1cIj48L2FwcC1vdmVybGF5LWluZm8+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2RlY2ltYWwnXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXJcIiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7XCI+XHJcbiAgICAgICAgPGRpdiBbbmdTdHlsZV09XCJzZXRTdHlsZShxdWVzdGlvbi5pbmRlbnQpXCI+XHJcbiAgICAgICAgICA8cC1pbnB1dE51bWJlciBmb3JtQ29udHJvbE5hbWU9XCJ7e3F1ZXN0aW9uLm5hbWV9fVwiIG1vZGU9XCJkZWNpbWFsXCIgW2lucHV0SWRdPVwicXVlc3Rpb24ubmFtZVwiIFt1c2VHcm91cGluZ109XCJmYWxzZVwiIFxyXG4gICAgICAgICAgW21pbkZyYWN0aW9uRGlnaXRzXT1cIjJcIiBbbWF4RnJhY3Rpb25EaWdpdHNdPVwiMlwiIFttaW5dPVwibWluVmFsdWVcIiBcclxuICAgICAgICAgIFttYXhdPVwibWF4VmFsdWVcIiBbc2l6ZV09XCJxdWVzdGlvbi5zaXplID8gcXVlc3Rpb24uc2l6ZSA6IG51bGxcIiAgW21heGxlbmd0aF09XCJxdWVzdGlvbi5tYXhMZW5ndGggPyBxdWVzdGlvbi5tYXhMZW5ndGggOiBudWxsXCIgW2FyaWFMYWJlbF09XCJxdWVzdGlvbi50aXRsZVwiXHJcbiAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicXVlc3Rpb24ucGxhY2Vob2xkZXIgPyBxdWVzdGlvbi5wbGFjZWhvbGRlciA6ICcnXCI+PC9wLWlucHV0TnVtYmVyPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgc3R5bGU9XCJmbGV4LWdyb3c6IDE7XCIgKm5nSWY9XCJxdWVzdGlvbi5kZXNjcmlwdGlvblwiIHN0eWxlPVwicGFkZGluZy1sZWZ0OiA4cHg7IHBhZGRpbmctdG9wOjNweFwiPlxyXG4gICAgICAgICAgPGFwcC1vdmVybGF5LWluZm8gW292ZXJsYXlUZXh0XT1cInF1ZXN0aW9uLmRlc2NyaXB0aW9uIHwgZHluYW1pY1RyYW5zbGF0ZTpkeW5hbWljUGFyYW1cIj48L2FwcC1vdmVybGF5LWluZm8+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2N1cnJlbmN5J1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyXCIgc3R5bGU9XCJkaXNwbGF5OiBmbGV4O1wiPlxyXG4gICAgICAgIDxkaXYgW25nU3R5bGVdPVwic2V0U3R5bGUocXVlc3Rpb24uaW5kZW50KVwiPlxyXG4gICAgICAgICAgPHAtaW5wdXROdW1iZXIgZm9ybUNvbnRyb2xOYW1lPVwie3txdWVzdGlvbi5uYW1lfX1cIiBtb2RlPVwiY3VycmVuY3lcIiBbaW5wdXRJZF09XCJxdWVzdGlvbi5uYW1lXCIgW3VzZUdyb3VwaW5nXT1cImZhbHNlXCIgXHJcbiAgICAgICAgICBbbWluRnJhY3Rpb25EaWdpdHNdPVwiMlwiIFttYXhGcmFjdGlvbkRpZ2l0c109XCIyXCIgY3VycmVuY3k9XCJVU0RcIiBbbWluXT1cIm1pblZhbHVlXCIgXHJcbiAgICAgICAgICBbbWF4XT1cIm1heFZhbHVlXCIgW3NpemVdPVwicXVlc3Rpb24uc2l6ZSA/IHF1ZXN0aW9uLnNpemUgOiBudWxsXCIgIFttYXhsZW5ndGhdPVwicXVlc3Rpb24ubWF4TGVuZ3RoID8gcXVlc3Rpb24ubWF4TGVuZ3RoIDogbnVsbFwiIFxyXG4gICAgICAgICAgW2FyaWFMYWJlbF09XCJxdWVzdGlvbi50aXRsZVwiIFtwbGFjZWhvbGRlcl09XCJxdWVzdGlvbi5wbGFjZWhvbGRlciA/IHF1ZXN0aW9uLnBsYWNlaG9sZGVyIDogJydcIj48L3AtaW5wdXROdW1iZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBzdHlsZT1cImZsZXgtZ3JvdzogMTtcIiAqbmdJZj1cInF1ZXN0aW9uLmRlc2NyaXB0aW9uXCIgc3R5bGU9XCJwYWRkaW5nLWxlZnQ6IDhweDsgcGFkZGluZy10b3A6M3B4XCI+XHJcbiAgICAgICAgICA8YXBwLW92ZXJsYXktaW5mbyBbb3ZlcmxheVRleHRdPVwicXVlc3Rpb24uZGVzY3JpcHRpb24gfCBkeW5hbWljVHJhbnNsYXRlOmR5bmFtaWNQYXJhbVwiPjwvYXBwLW92ZXJsYXktaW5mbz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInY2hlY2tib3gnXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXJcIiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7XCI+XHJcbiAgICAgICAgPGRpdiBbbmdTdHlsZV09XCJzZXRTdHlsZShxdWVzdGlvbi5pbmRlbnQpXCIgY2xhc3M9XCJmb3JtZ3JvdXAtaW5saW5lXCI+XHJcbiAgICAgICAgICAgIDxwLWNoZWNrYm94IFtuYW1lXT1cInF1ZXN0aW9uLm5hbWUgKyAnLWdyb3VwJ1wiIFt2YWx1ZV09XCJjaG9pY2UudmFsdWVcIiBcclxuICAgICAgICAgICAgICBbbGFiZWxdPVwiY2hvaWNlLnRleHRcIiAqbmdGb3I9XCJsZXQgY2hvaWNlIG9mIHF1ZXN0aW9uLmNob2ljZXNcIiBbZm9ybUNvbnRyb2xdPVwiZm9ybS5jb250cm9sc1txdWVzdGlvbi5uYW1lXVwiXHJcbiAgICAgICAgICAgICAgc3R5bGVDbGFzcz1cImFwcC1wLWNoZWNrYm94XCIgW2lucHV0SWRdPVwicXVlc3Rpb24ubmFtZSArICctJyArIGNob2ljZS52YWx1ZVwiIFthdHRyLmFyaWEtbGFiZWxdPVwicXVlc3Rpb24udGl0bGVcIj48L3AtY2hlY2tib3g+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBzdHlsZT1cImZsZXgtZ3JvdzogMTtcIiAqbmdJZj1cInF1ZXN0aW9uLmRlc2NyaXB0aW9uXCIgc3R5bGU9XCJwYWRkaW5nLWxlZnQ6IDhweDsgcGFkZGluZy10b3A6M3B4XCI+XHJcbiAgICAgICAgICA8YXBwLW92ZXJsYXktaW5mbyBbb3ZlcmxheVRleHRdPVwicXVlc3Rpb24uZGVzY3JpcHRpb24gfCBkeW5hbWljVHJhbnNsYXRlOmR5bmFtaWNQYXJhbVwiPjwvYXBwLW92ZXJsYXktaW5mbz5cclxuXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ211bHRpY2hlY2tib3gnXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXJcIiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7XCI+XHJcbiAgICAgICAgPGRpdiBbbmdTdHlsZV09XCJzZXRTdHlsZShxdWVzdGlvbi5pbmRlbnQpXCI+XHJcbiAgICAgICAgICAgIDxwLWNoZWNrYm94IFtuYW1lXT1cInF1ZXN0aW9uLm5hbWUgKyAnLWdyb3VwJ1wiIFt2YWx1ZV09XCJjaG9pY2UudmFsdWVcIiBcclxuICAgICAgICAgICAgICBbbGFiZWxdPVwiY2hvaWNlLnRleHRcIiAqbmdGb3I9XCJsZXQgY2hvaWNlIG9mIHF1ZXN0aW9uLmNob2ljZXNcIiBbZm9ybUNvbnRyb2xdPVwiZm9ybS5jb250cm9sc1txdWVzdGlvbi5uYW1lXVwiXHJcbiAgICAgICAgICAgICAgc3R5bGVDbGFzcz1cImFwcC1wLWNoZWNrYm94XCIgW2lucHV0SWRdPVwicXVlc3Rpb24ubmFtZSArICctJyArIGNob2ljZS52YWx1ZVwiIFthdHRyLmFyaWEtbGFiZWxdPVwicXVlc3Rpb24udGl0bGVcIj48L3AtY2hlY2tib3g+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBzdHlsZT1cImZsZXgtZ3JvdzogMTtcIiAqbmdJZj1cInF1ZXN0aW9uLmRlc2NyaXB0aW9uXCIgc3R5bGU9XCJwYWRkaW5nLWxlZnQ6IDhweDsgcGFkZGluZy10b3A6M3B4XCI+XHJcbiAgICAgICAgICA8YXBwLW92ZXJsYXktaW5mbyBbb3ZlcmxheVRleHRdPVwicXVlc3Rpb24uZGVzY3JpcHRpb24gfCBkeW5hbWljVHJhbnNsYXRlOmR5bmFtaWNQYXJhbVwiPjwvYXBwLW92ZXJsYXktaW5mbz5cclxuXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ3NpbmdsZXNlbGVjdGNoZWNrYm94J1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyXCIgc3R5bGU9XCJkaXNwbGF5OiBmbGV4O1wiPlxyXG4gICAgICAgIDxkaXYgW25nU3R5bGVdPVwic2V0U3R5bGUocXVlc3Rpb24uaW5kZW50KVwiPlxyXG4gICAgICAgICAgPHAtc2VsZWN0QnV0dG9uIHVuc2VsZWN0YWJsZT1cInRydWVcIiBbb3B0aW9uc109XCJxdWVzdGlvbi5jaG9pY2VzXCIgW2Zvcm1Db250cm9sTmFtZV09XCJxdWVzdGlvbi5uYW1lXCIgW211bHRpcGxlXT1mYWxzZVxyXG4gICAgICAgICAgICBvcHRpb25MYWJlbD1cInRleHRcIiBvcHRpb25WYWx1ZT1cInZhbHVlXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJxdWVzdGlvbi50aXRsZVwiPjwvcC1zZWxlY3RCdXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBzdHlsZT1cImZsZXgtZ3JvdzogMTtcIiAqbmdJZj1cInF1ZXN0aW9uLmRlc2NyaXB0aW9uXCIgc3R5bGU9XCJwYWRkaW5nLWxlZnQ6IDhweDsgcGFkZGluZy10b3A6M3B4XCI+XHJcbiAgICAgICAgICA8YXBwLW92ZXJsYXktaW5mbyBbb3ZlcmxheVRleHRdPVwicXVlc3Rpb24uZGVzY3JpcHRpb24gfCBkeW5hbWljVHJhbnNsYXRlOmR5bmFtaWNQYXJhbVwiPjwvYXBwLW92ZXJsYXktaW5mbz5cclxuXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ3NpbXBsZWNoZWNrYm94J1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyXCIgc3R5bGU9XCJkaXNwbGF5OiBmbGV4O1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZC1jaGVja2JveFwiPlxyXG4gICAgICAgICAgPHAtY2hlY2tib3ggYmluYXJ5PVwidHJ1ZVwiIGlucHV0SWQ9XCJiaW5hcnlcIiBbZm9ybUNvbnRyb2xOYW1lXT1cInF1ZXN0aW9uLm5hbWVcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInF1ZXN0aW9uLnRpdGxlXCI+PC9wLWNoZWNrYm94PlxyXG4gICAgICAgICAgPGxhYmVsIGZvcj1cImJpbmFyeVwiPnt7cXVlc3Rpb24udGl0bGV9fTwvbGFiZWw+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBzdHlsZT1cImZsZXgtZ3JvdzogMTtcIiAqbmdJZj1cInF1ZXN0aW9uLmRlc2NyaXB0aW9uXCIgc3R5bGU9XCJwYWRkaW5nLWxlZnQ6IDhweDsgcGFkZGluZy10b3A6IDNweFwiPlxyXG4gICAgICAgICAgPGFwcC1vdmVybGF5LWluZm8gW292ZXJsYXlUZXh0XT1cInF1ZXN0aW9uLmRlc2NyaXB0aW9uIHwgZHluYW1pY1RyYW5zbGF0ZTpkeW5hbWljUGFyYW1cIj48L2FwcC1vdmVybGF5LWluZm8+XHJcblxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidkaXNwbGF5dGV4dGFzbGFiZWwnXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXJcIiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7XCI+XHJcbiAgICAgICAgPGxhYmVsPnt7Z2V0VGV4dChmb3JtLmNvbnRyb2xzW3F1ZXN0aW9uLm5hbWVdLnZhbHVlKX19PC9sYWJlbD5cclxuICAgICAgICA8aW5wdXQgdHlwZT1cImhpZGRlblwiIFtmb3JtQ29udHJvbE5hbWVdPVwicXVlc3Rpb24ubmFtZVwiIFthdHRyLmFyaWEtbGFiZWxdPVwicXVlc3Rpb24udGl0bGVcIi8+XHJcbiAgICAgICAgPGRpdiBzdHlsZT1cImZsZXgtZ3JvdzogMTtcIiAqbmdJZj1cInF1ZXN0aW9uLmRlc2NyaXB0aW9uXCIgc3R5bGU9XCJwYWRkaW5nLWxlZnQ6IDJweFwiPlxyXG4gICAgICAgICAgPGFwcC1vdmVybGF5LWluZm8gW292ZXJsYXlUZXh0XT1cInF1ZXN0aW9uLmRlc2NyaXB0aW9uIHwgZHluYW1pY1RyYW5zbGF0ZTpkeW5hbWljUGFyYW1cIj48L2FwcC1vdmVybGF5LWluZm8+XHJcblxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidsYWJlbCdcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lclwiIHN0eWxlPVwiZGlzcGxheTogZmxleDtcIj5cclxuICAgICAgICA8bGFiZWw+e3txdWVzdGlvbi50aXRsZX19PC9sYWJlbD5cclxuICAgICAgICA8ZGl2IHN0eWxlPVwiZmxleC1ncm93OiAxO1wiICpuZ0lmPVwicXVlc3Rpb24uZGVzY3JpcHRpb25cIiBzdHlsZT1cInBhZGRpbmctbGVmdDogMnB4XCI+XHJcbiAgICAgICAgICA8YXBwLW92ZXJsYXktaW5mbyBbb3ZlcmxheVRleHRdPVwicXVlc3Rpb24uZGVzY3JpcHRpb24gfCBkeW5hbWljVHJhbnNsYXRlOmR5bmFtaWNQYXJhbVwiPjwvYXBwLW92ZXJsYXktaW5mbz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidsYWJlbC13aXRoLW92ZXJsYXknXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXJcIiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7XCI+XHJcbiAgICAgICAgPGFwcC1vdmVybGF5LWluZm8gW2Rpc3BsYXlUZXh0XT1cInF1ZXN0aW9uLnRpdGxlXCIgIFtvdmVybGF5VGV4dF09XCJxdWVzdGlvbi5kZXNjcmlwdGlvbiB8IGR5bmFtaWNUcmFuc2xhdGU6ZHluYW1pY1BhcmFtXCIgW2Rpc3BsYXlBc0xhYmVsXT1cInRydWVcIj48L2FwcC1vdmVybGF5LWluZm8+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInbGFiZWwtd2l0aC1saW5rJ1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyXCIgc3R5bGU9XCJkaXNwbGF5OiBmbGV4O1wiPlxyXG4gICAgICAgIDxhcHAtb3ZlcmxheS1pbmZvIFtkaXNwbGF5VGV4dF09XCJxdWVzdGlvbi50aXRsZVwiIFtmb3JtQ29udHJvbE5hbWVdPVwicXVlc3Rpb24ubmFtZVwiIFtvdmVybGF5VGV4dF09XCJxdWVzdGlvbi5kZXNjcmlwdGlvbiB8IGR5bmFtaWNUcmFuc2xhdGU6ZHluYW1pY1BhcmFtXCIgW2xhYmVsV2l0aExpbmtdPVwidHJ1ZVwiPjwvYXBwLW92ZXJsYXktaW5mbz5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidsYWJlbC13aXRoLXBvcHVwJ1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyXCIgc3R5bGU9XCJkaXNwbGF5OiBmbGV4O1wiPlxyXG4gICAgICAgIDxhcHAtb3ZlcmxheS1pbmZvIFtkaXNwbGF5VGV4dF09XCJxdWVzdGlvbi50aXRsZVwiIFtmb3JtQ29udHJvbE5hbWVdPVwicXVlc3Rpb24ubmFtZVwiIFtsYWJlbFdpdGhQb3B1cF09XCJxdWVzdGlvbi5kZXNjcmlwdGlvbiB8IGR5bmFtaWNUcmFuc2xhdGU6ZHluYW1pY1BhcmFtXCIgW2xhYmVsV2l0aExpbmtdPVwidHJ1ZVwiPjwvYXBwLW92ZXJsYXktaW5mbz5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIFxyXG4gICAgPG5nLWNvbnRhaW5lciBjbGFzcz1cInJlc3BvbnNpdmVcIiAqbmdTd2l0Y2hDYXNlPVwiJ3BhbmVsJ1wiPlxyXG4gICAgICA8aW9uLXJvdz5cclxuICAgICAgICA8aW9uLWNvbD5cclxuICAgICAgICAgIDxpb24tcm93PlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBlbGVtZW50IG9mIHF1ZXN0aW9uLmVsZW1lbnRzXCI+XHJcbiAgICAgICAgICAgICAgPGlvbi1jb2wgKm5nSWY9XCJlbGVtZW50LmNvbEVsZW1lbnQ9PT0nQ09MMScgJiYgdmlzaWJsZUlmKGVsZW1lbnQudmlzaWJsZUlmLGVsZW1lbnQubmFtZSlcIlxyXG4gICAgICAgICAgICAgICAgW3NpemVYbF09XCJlbGVtZW50LnNpemVYTFwiIFtzaXplTGddPVwiZWxlbWVudC5zaXplTEdcIiBbc2l6ZU1kXT1cImVsZW1lbnQuc2l6ZU1EXCJcclxuICAgICAgICAgICAgICAgIFtvZmZzZXRNZF09XCJlbGVtZW50Lm9mZlNldE1EXCIgY2xhc3M9XCJjb2wtZml0LWNvbnRlbnRcIj5cclxuICAgICAgICAgICAgICAgIDxhcHAtcXVlc3Rpb24gW3F1ZXN0aW9uXT1cImVsZW1lbnRcIiBbZm9ybV09XCJmb3JtXCIgW2ZvclNjcmVlblF1ZXN0aW9ubmFpcmVdPVwiZm9yU2NyZWVuUXVlc3Rpb25uYWlyZVwiPlxyXG4gICAgICAgICAgICAgICAgPC9hcHAtcXVlc3Rpb24+XHJcbiAgICAgICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvaW9uLXJvdz5cclxuICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgPGlvbi1jb2w+XHJcbiAgICAgICAgICA8aW9uLXJvdz5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZWxlbWVudCBvZiBxdWVzdGlvbi5lbGVtZW50c1wiPlxyXG4gICAgICAgICAgICAgIDxpb24tY29sICpuZ0lmPVwiZWxlbWVudC5jb2xFbGVtZW50PT09J0NPTDInICYmIHZpc2libGVJZihlbGVtZW50LnZpc2libGVJZixlbGVtZW50Lm5hbWUpXCJcclxuICAgICAgICAgICAgICAgIFtzaXplWGxdPVwiZWxlbWVudC5zaXplWExcIiBbc2l6ZUxnXT1cImVsZW1lbnQuc2l6ZUxHXCIgW3NpemVNZF09XCJlbGVtZW50LnNpemVNRFwiXHJcbiAgICAgICAgICAgICAgICBbb2Zmc2V0TWRdPVwiZWxlbWVudC5vZmZTZXRNRFwiPlxyXG4gICAgICAgICAgICAgICAgPGFwcC1xdWVzdGlvbiBbcXVlc3Rpb25dPVwiZWxlbWVudFwiIFtmb3JtXT1cImZvcm1cIiBbZm9yU2NyZWVuUXVlc3Rpb25uYWlyZV09XCJmb3JTY3JlZW5RdWVzdGlvbm5haXJlXCI+XHJcbiAgICAgICAgICAgICAgICA8L2FwcC1xdWVzdGlvbj5cclxuICAgICAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPC9pb24tcm93PlxyXG4gICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgPC9pb24tcm93PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBbbmdTdHlsZV09XCJzZXRTdHlsZShxdWVzdGlvbi5pbmRlbnQpXCIgKm5nSWY9XCJxdWVzdGlvbi50eXBlIT0ncGFuZWwnXCI+XHJcbiAgICA8c21hbGwgY2xhc3M9XCJwLWVycm9yXCIgKm5nSWY9XCJpc1ZhbGlkIT0nJ1wiIFtAcm93RXhwYW5zaW9uVHJpZ2dlcl09XCInYWN0aXZlJ1wiPnt7aXNWYWxpZCB8IGR5bmFtaWNUcmFuc2xhdGU6ZHluYW1pY1BhcmFtfX08L3NtYWxsPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj4iXX0=