vcomply-workflow-engine 6.0.51 → 6.0.53

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 (120) hide show
  1. package/esm2022/lib/add-multiple-responsibility-container/add-multiple-responsibility-container.component.mjs +2 -2
  2. package/esm2022/lib/add-multiple-risk/add-multiple-risk.component.mjs +2 -2
  3. package/esm2022/lib/constants/assets.constants.mjs +57 -0
  4. package/esm2022/lib/constants/link-responsibility.constants.mjs +2 -2
  5. package/esm2022/lib/interfaces/responsibilty.interface.mjs +1 -1
  6. package/esm2022/lib/log-an-issue/log-an-issue.component.mjs +2 -2
  7. package/esm2022/lib/more-option/more-option.component.mjs +49 -6
  8. package/esm2022/lib/report-a-case/components/assignee/assignee.component.mjs +2 -2
  9. package/esm2022/lib/report-a-case/components/case-assignees/case-assignees.component.mjs +2 -2
  10. package/esm2022/lib/report-a-case/components/case-category/case-category.component.mjs +2 -2
  11. package/esm2022/lib/report-a-case/components/case-details/case-details.component.mjs +2 -2
  12. package/esm2022/lib/report-a-case/components/case-owners/case-owners.component.mjs +2 -2
  13. package/esm2022/lib/report-a-case/components/case-priority/case-priority.component.mjs +2 -2
  14. package/esm2022/lib/report-a-case/components/case-resolution-deadline/case-resolution-deadline.component.mjs +2 -2
  15. package/esm2022/lib/report-a-case/components/case-type-dropdown/case-dropdown.component.mjs +2 -2
  16. package/esm2022/lib/report-a-case/components/due-date/due-date.component.mjs +2 -2
  17. package/esm2022/lib/report-a-case/components/field-holder/field-holder.component.mjs +2 -2
  18. package/esm2022/lib/report-a-case/components/linked assessment/linked-assessment.component.mjs +2 -2
  19. package/esm2022/lib/report-a-case/components/linked-responsibilities/linked-responsibilities.component.mjs +2 -2
  20. package/esm2022/lib/report-a-case/components/rc-details/rc-details.component.mjs +2 -2
  21. package/esm2022/lib/report-a-case/components/report-date/report-date.component.mjs +2 -2
  22. package/esm2022/lib/report-a-case/workflow-case/workflow-case.component.mjs +2 -2
  23. package/esm2022/lib/services/report-case-permission.service.mjs +3 -5
  24. package/esm2022/lib/sharedComponents/approval-workflow/approval-create-form/approval-create-form.component.mjs +2 -2
  25. package/esm2022/lib/sharedComponents/assessment-editor/components/build/image-choice/image-choice.component.mjs +2 -2
  26. package/esm2022/lib/sharedComponents/assessment-editor/components/build/thank-you/thank-you.component.mjs +2 -2
  27. package/esm2022/lib/sharedComponents/assessment-editor/components/build/welcome/welcome.component.mjs +2 -2
  28. package/esm2022/lib/sharedComponents/assessment-editor/components/logic/logic.component.mjs +2 -2
  29. package/esm2022/lib/sharedComponents/assessment-editor/components/logic-questions/logic-image-choice/logic-image-choice.component.mjs +2 -2
  30. package/esm2022/lib/sharedComponents/assessment-editor/components/preview/thank-you/thank-you.component.mjs +2 -2
  31. package/esm2022/lib/sharedComponents/assessment-editor/components/preview/welcome/welcome.component.mjs +2 -2
  32. package/esm2022/lib/sharedComponents/assessment-editor/components/welcome-thankyou/welcome-thankyou.component.mjs +2 -2
  33. package/esm2022/lib/sharedComponents/assessment-list/assessment-list.component.mjs +2 -2
  34. package/esm2022/lib/sharedComponents/audit-category-list/audit-category-list.component.mjs +2 -2
  35. package/esm2022/lib/sharedComponents/category-list/category-list.component.mjs +2 -2
  36. package/esm2022/lib/sharedComponents/category-list-selection/category-list-selection/category-list-selection.component.mjs +2 -2
  37. package/esm2022/lib/sharedComponents/category-multiselect/category-multi-select.component.mjs +2 -2
  38. package/esm2022/lib/sharedComponents/checkbox-list/checkbox-list.component.mjs +2 -2
  39. package/esm2022/lib/sharedComponents/format-and-evidence/format-and-evidence.component.mjs +2 -2
  40. package/esm2022/lib/sharedComponents/framework-list/framework-list.component.mjs +2 -2
  41. package/esm2022/lib/sharedComponents/frequency/frequency-annual/frequency-annual.component.mjs +1 -5
  42. package/esm2022/lib/sharedComponents/frequency/frequency-biannual/frequency-biannual.component.mjs +1 -5
  43. package/esm2022/lib/sharedComponents/frequency/frequency-daily/frequency-daily.component.mjs +1 -2
  44. package/esm2022/lib/sharedComponents/frequency/frequency-monthly/frequency-monthly.component.mjs +2 -6
  45. package/esm2022/lib/sharedComponents/frequency/frequency-one-time/frequency-one-time.component.mjs +1 -2
  46. package/esm2022/lib/sharedComponents/frequency/frequency-ongoing/frequency-ongoing.component.mjs +1 -3
  47. package/esm2022/lib/sharedComponents/frequency/frequency-quarterly/frequency-quarterly.component.mjs +1 -5
  48. package/esm2022/lib/sharedComponents/frequency/frequency-random/frequency-random.component.mjs +1 -3
  49. package/esm2022/lib/sharedComponents/frequency/frequency-responsibility-list/frequency-responsibility-list.component.mjs +2 -2
  50. package/esm2022/lib/sharedComponents/frequency/frequency-weekly/frequency-weekly.component.mjs +2 -4
  51. package/esm2022/lib/sharedComponents/frequency/frequency.service.mjs +1 -185
  52. package/esm2022/lib/sharedComponents/group-users-list/group-users-list.component.mjs +4 -4
  53. package/esm2022/lib/sharedComponents/link-program/link-program/link-program.component.mjs +2 -2
  54. package/esm2022/lib/sharedComponents/owner-list/owner-list.component.mjs +2 -2
  55. package/esm2022/lib/sharedComponents/policy-access/policy-access.component.mjs +2 -2
  56. package/esm2022/lib/sharedComponents/policy-template/constants/template.constant.mjs +2 -2
  57. package/esm2022/lib/sharedComponents/program-listing/program-listing.component.mjs +2 -2
  58. package/esm2022/lib/sharedComponents/radio-list/radio-list.component.mjs +2 -2
  59. package/esm2022/lib/sharedComponents/radio-list-with-pagination/radio-list.component.mjs +2 -2
  60. package/esm2022/lib/sharedComponents/responsibility-centers-list/responsibility-centers-list.component.mjs +2 -2
  61. package/esm2022/lib/sharedComponents/responsibility-risk-selector/responsibility-risk-selector.component.mjs +2 -2
  62. package/esm2022/lib/sharedComponents/review-frequency/review-frequency.component.mjs +2 -2
  63. package/esm2022/lib/sharedComponents/roles-list/roles-list.component.mjs +2 -2
  64. package/esm2022/lib/sharedComponents/select-approvers/select-approvers.component.mjs +2 -2
  65. package/esm2022/lib/sharedComponents/users-radio-list/users-radio-list.component.mjs +2 -2
  66. package/esm2022/lib/ui-kit/pagination/pagination/pagination.component.mjs +2 -2
  67. package/esm2022/lib/workflow/shared/components/attributes/attributes-checkbox/attributes-checkbox.component.mjs +2 -2
  68. package/esm2022/lib/workflow/shared/constants/cdn-link.constant.mjs +2 -2
  69. package/esm2022/lib/workflow-assessment/import-an-assessment/import-an-assessment.component.mjs +2 -2
  70. package/esm2022/lib/workflow-assessment/workflow-assessment.component.mjs +2 -2
  71. package/esm2022/lib/workflow-compliance/workflow-compliance.component.mjs +133 -275
  72. package/esm2022/lib/workflow-engine-container/workflow-engine-container.component.mjs +3 -5
  73. package/esm2022/lib/workflow-engine.module.mjs +6 -13
  74. package/esm2022/lib/workflow-policy/workflow-policy.component.mjs +2 -2
  75. package/esm2022/lib/workflow-program/create-program-ui/assessment-picker/assessment-picker.component.mjs +2 -2
  76. package/esm2022/lib/workflow-program/create-program-ui/define-framework-listing/define-framework-listing.component.mjs +2 -2
  77. package/esm2022/lib/workflow-program/create-program-ui/pagination/pagination/pagination.component.mjs +2 -2
  78. package/esm2022/lib/workflow-program/create-program-ui/role-list/role-list.component.mjs +2 -2
  79. package/esm2022/lib/workflow-program/create-program-ui/user-group-list/user-group-list.component.mjs +2 -2
  80. package/esm2022/lib/workflow-program/workflow-program.component.mjs +241 -84
  81. package/esm2022/lib/workflow-risk/workflow-risk.component.mjs +2 -2
  82. package/esm2022/lib/workflow-services/programs.service.mjs +112 -28
  83. package/esm2022/lib/workflow-services/responsibility.service.mjs +9 -9
  84. package/esm2022/lib/workflow-survey-form/workflow-survey-form.component.mjs +2 -2
  85. package/fesm2022/vcomply-workflow-engine.mjs +598 -1130
  86. package/fesm2022/vcomply-workflow-engine.mjs.map +1 -1
  87. package/lib/interfaces/responsibilty.interface.d.ts +1 -1
  88. package/lib/services/report-case-permission.service.d.ts +1 -3
  89. package/lib/sharedComponents/frequency/frequency.service.d.ts +0 -30
  90. package/lib/workflow-compliance/workflow-compliance.component.d.ts +4 -29
  91. package/lib/workflow-engine-container/workflow-engine-container.component.d.ts +1 -2
  92. package/lib/workflow-engine.module.d.ts +40 -42
  93. package/lib/workflow-program/workflow-program.component.d.ts +4 -6
  94. package/lib/workflow-risk/workflow-risk.component.d.ts +1 -1
  95. package/lib/workflow-services/programs.service.d.ts +53 -13
  96. package/package.json +1 -1
  97. package/esm2022/lib/constants/assessts.constants.mjs +0 -57
  98. package/esm2022/lib/constants/mock.mjs +0 -130
  99. package/esm2022/lib/interfaces/frequency.interface.mjs +0 -2
  100. package/esm2022/lib/sharedComponents/list-container/list-container.component.mjs +0 -52
  101. package/esm2022/lib/sharedComponents/program-list/constant.mjs +0 -16
  102. package/esm2022/lib/sharedComponents/program-list/interfaces/data-source.interface.mjs +0 -2
  103. package/esm2022/lib/sharedComponents/program-list/interfaces/list-item.interface.mjs +0 -2
  104. package/esm2022/lib/sharedComponents/program-list/pipes/check-selected-items.pipes.mjs +0 -20
  105. package/esm2022/lib/sharedComponents/program-list/program-list/program-list.component.mjs +0 -171
  106. package/esm2022/lib/sharedComponents/program-list/program-list.module.mjs +0 -43
  107. package/esm2022/lib/sharedComponents/program-list/services/list-utils.service.mjs +0 -27
  108. package/esm2022/lib/sharedComponents/program-list/services/program-list-api.service.mjs +0 -32
  109. package/lib/constants/mock.d.ts +0 -15
  110. package/lib/interfaces/frequency.interface.d.ts +0 -37
  111. package/lib/sharedComponents/list-container/list-container.component.d.ts +0 -9
  112. package/lib/sharedComponents/program-list/constant.d.ts +0 -9
  113. package/lib/sharedComponents/program-list/interfaces/data-source.interface.d.ts +0 -4
  114. package/lib/sharedComponents/program-list/interfaces/list-item.interface.d.ts +0 -5
  115. package/lib/sharedComponents/program-list/pipes/check-selected-items.pipes.d.ts +0 -7
  116. package/lib/sharedComponents/program-list/program-list/program-list.component.d.ts +0 -46
  117. package/lib/sharedComponents/program-list/program-list.module.d.ts +0 -13
  118. package/lib/sharedComponents/program-list/services/list-utils.service.d.ts +0 -7
  119. package/lib/sharedComponents/program-list/services/program-list-api.service.d.ts +0 -14
  120. /package/lib/constants/{assessts.constants.d.ts → assets.constants.d.ts} +0 -0
@@ -1,6 +1,6 @@
1
1
  import { Component, EventEmitter, Input, Output } from '@angular/core';
2
2
  import * as XLSX from 'xlsx';
3
- import { ASSETS } from '../constants/assessts.constants';
3
+ import { ASSETS } from '../constants/assets.constants';
4
4
  import * as i0 from "@angular/core";
5
5
  import * as i1 from "../workflow-services/add-risk.service";
6
6
  import * as i2 from "../workflow-services/auth.service";
@@ -213,4 +213,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
213
213
  }], orgDetails: [{
214
214
  type: Input
215
215
  }] } });
216
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLW11bHRpcGxlLXJlc3BvbnNpYmlsaXR5LWNvbnRhaW5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi9hZGQtbXVsdGlwbGUtcmVzcG9uc2liaWxpdHktY29udGFpbmVyL2FkZC1tdWx0aXBsZS1yZXNwb25zaWJpbGl0eS1jb250YWluZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvYWRkLW11bHRpcGxlLXJlc3BvbnNpYmlsaXR5LWNvbnRhaW5lci9hZGQtbXVsdGlwbGUtcmVzcG9uc2liaWxpdHktY29udGFpbmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0UsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUM7QUFJN0IsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlDQUFpQyxDQUFDOzs7Ozs7Ozs7OztBQVd6RCxNQUFNLE9BQU8sMkNBQTJDO0lBeUJ0RCxZQUNVLFdBQTJCLEVBQzNCLFdBQXdCLEVBQ3hCLGlCQUFvQztRQUZwQyxnQkFBVyxHQUFYLFdBQVcsQ0FBZ0I7UUFDM0IsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQTNCOUMsV0FBTSxHQUFHLE1BQU0sQ0FBQztRQUNoQixtQkFBYyxHQUFXLGlCQUFpQixDQUFDO1FBQzNDLHFCQUFnQixHQUFXLGlCQUFpQixDQUFDO1FBQzdDLG9CQUFlLEdBQUcsQ0FBQyxDQUFDO1FBRXBCLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFFbkIsYUFBUSxHQUFHLEVBQUUsQ0FBQztRQUNkLDRCQUF1QixH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LENBQUM7UUFDckMsSUFBSSxDQUFDLHNCQUFzQixHQUFHLEtBQUssQ0FBQztRQUNwQyxJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztJQUN0QixDQUFDOytHQTVOVSwyQ0FBMkM7bUdBQTNDLDJDQUEyQyx3TENqQnhELHcrTkF3TEE7OzRGRHZLYSwyQ0FBMkM7a0JBUnZELFNBQVM7K0JBQ0UsMkNBQTJDOytKQTJCM0MsYUFBYTtzQkFBdEIsTUFBTTtnQkFDRSxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFkZFJpc2tTZXJ2aWNlIH0gZnJvbSAnLi4vd29ya2Zsb3ctc2VydmljZXMvYWRkLXJpc2suc2VydmljZSc7XG5pbXBvcnQgKiBhcyBYTFNYIGZyb20gJ3hsc3gnO1xuaW1wb3J0IHsgY2xvbmVEZWVwIH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vd29ya2Zsb3ctc2VydmljZXMvYXV0aC5zZXJ2aWNlJztcbmltcG9ydCB7IEJ1bGtVcGxvYWRTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvYnVsay11cGxvYWQuc2VydmljZSc7XG5pbXBvcnQgeyBBU1NFVFMgfSBmcm9tICcuLi9jb25zdGFudHMvYXNzZXNzdHMuY29uc3RhbnRzJztcbnR5cGUgQU9BID0gYW55W11bXTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLWFkZC1tdWx0aXBsZS1yZXNwb25zaWJpbGl0eS1jb250YWluZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vYWRkLW11bHRpcGxlLXJlc3BvbnNpYmlsaXR5LWNvbnRhaW5lci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogW1xuICAgICcuL2FkZC1tdWx0aXBsZS1yZXNwb25zaWJpbGl0eS1jb250YWluZXIuY29tcG9uZW50Lmxlc3MnLFxuICAgICcuLi9mb3Jtcy5sZXNzJyxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQWRkTXVsdGlwbGVSZXNwb25zaWJpbGl0eUNvbnRhaW5lckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEFTU0VUUyA9IEFTU0VUUztcbiAgZG93bmxvYWRTdGF0dXM6IHN0cmluZyA9ICdOT1RfRE9XTkxPQURJTkcnO1xuICBkb3dubG9hZFN0YXR1c1YyOiBzdHJpbmcgPSAnTk9UX0RPV05MT0FESU5HJztcbiAgZG93bmxvYWRQZXJjZW50ID0gMDtcbiAgZmlsZVZhbHVlOiBhbnk7XG4gIHNob3dTbWlsZXkgPSBmYWxzZTtcbiAgcmVzcG9uc2liaWxpdHlEYXRhITogYW55O1xuICBmaWxlTmFtZSA9ICcnO1xuICBzaW5nbGVUYWJSZXNwb25zaWJpbGl0eTogYm9vbGVhbiA9IGZhbHNlO1xuICBtdWx0aVRhYlJlc3BvbnNpYmlsaXR5OiBib29sZWFuID0gZmFsc2U7XG4gIGlzRmlsZUVtcHR5ID0gZmFsc2U7XG4gIGlzV3JvbmdGaWxlID0gZmFsc2U7XG4gIGlzV3JvbmdGb3JtYXQgPSBmYWxzZTtcbiAgZXJyb3JNZXNzYWdlID0gJyBpbnZhbGlkIGZpbGUgZXJyb3InO1xuICBtZW1iZXJfb2JqX2lkID0gJyc7XG4gIGJ1bGtVcGxvYWRGbGFnITogYm9vbGVhbjtcbiAgZGVwbG95ZWREYXRlOiBudW1iZXIgPSAxNjc3MTUwODc1O1xuICBtZW1iZXJJZDogYW55ID0gJyc7XG5cbiAgQE91dHB1dCgpIGNsb3NlV29ya2Zsb3cgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBJbnB1dCgpIGZlYXR1cmUhOiBhbnk7XG4gIEBJbnB1dCgpIG9yZ0RldGFpbHMhOiBhbnk7XG4gIGlzUmVzcG9uc2liaWxpdHlTaW1wbGlmaWVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByaXNrU2VydmljZTogQWRkUmlza1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBidWxrVXBsb2FkU2VydmljZTogQnVsa1VwbG9hZFNlcnZpY2VcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMubWVtYmVyX29ial9pZCA9IHRoaXMuYXV0aFNlcnZpY2UuZ2V0VXNlckRldGFpbHMoKS5faWQ7XG4gICAgdGhpcy5tZW1iZXJJZCA9IHRoaXMuYXV0aFNlcnZpY2UuZ2V0VXNlckRldGFpbHMoKT8udXNlcj8uaWQ7XG4gICAgdGhpcy5idWxrVXBsb2FkRmxhZyA9IHRoaXMuZmVhdHVyZS5pc0ZlYXR1cmVFbmFibGVkKFxuICAgICAgJ2ZmX2J1bGtfcmVzcG9uc2liaWxpdHknXG4gICAgKTtcbiAgICB0aGlzLmlzUmVzcG9uc2liaWxpdHlTaW1wbGlmaWVkID0gdGhpcy5mZWF0dXJlLmlzRmVhdHVyZUVuYWJsZWQoXG4gICAgICAnZmZfcmVzcG9uc2liaWxpdHlfc2ltcGxpZmljYXRpb24nXG4gICAgKTtcbiAgfVxuXG4gIGRvd25sb2FkVGVtcGxhdGUodmVyc2lvbj86IGFueSkge1xuICAgIHZlcnNpb24gIT09ICd2MidcbiAgICAgID8gKHRoaXMuZG93bmxvYWRTdGF0dXMgPSAnRE9XTkxPQURJTkcnKVxuICAgICAgOiAodGhpcy5kb3dubG9hZFN0YXR1c1YyID0gJ0RPV05MT0FESU5HJyk7XG4gICAgdGhpcy5kb3dubG9hZFBlcmNlbnQgPSAwO1xuICAgIGNvbnN0IGRvd25sb2FkRGF0ZSA9IG5ldyBEYXRlKCkudG9EYXRlU3RyaW5nKCkuc3BsaXQoJyAnKTtcbiAgICBjb25zdCBmaWxlTmFtZSA9IGBFbnRydXN0IFJlc3BvbnNpYmlsaXRpZXMtJHtkb3dubG9hZERhdGVbMl19LSR7ZG93bmxvYWREYXRlWzFdfS0ke2Rvd25sb2FkRGF0ZVszXX0ueGxzeGA7XG5cbiAgICB0aGlzLnJpc2tTZXJ2aWNlLmRvd25sb2FkUmVzcG9uc2liaWxpdHlUZW1wbGF0ZSh2ZXJzaW9uKS5zdWJzY3JpYmUoXG4gICAgICAoZGF0YTogYW55KSA9PiB7XG4gICAgICAgIGlmIChkYXRhLmxvYWRlZCkge1xuICAgICAgICAgIHRoaXMuZG93bmxvYWRQZXJjZW50ID0gMTAwICogKGRhdGEubG9hZGVkIC8gZGF0YS50b3RhbCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRhdGEuYm9keSkge1xuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZG93bmxvYWRTdGF0dXMgPSB0aGlzLnJpc2tTZXJ2aWNlLmRvd25Mb2FkRmlsZShcbiAgICAgICAgICAgICAgZGF0YS5ib2R5LFxuICAgICAgICAgICAgICAnYXBwbGljYXRpb24veGxzeCcsXG4gICAgICAgICAgICAgIGZpbGVOYW1lXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdmVyc2lvbiAhPT0gJ3YyJ1xuICAgICAgICAgICAgICA/ICh0aGlzLmRvd25sb2FkU3RhdHVzID0gZG93bmxvYWRTdGF0dXMpXG4gICAgICAgICAgICAgIDogKHRoaXMuZG93bmxvYWRTdGF0dXNWMiA9IGRvd25sb2FkU3RhdHVzKTtcbiAgICAgICAgICB9LCAxNTAwKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIChlcnJvcikgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgICAgdmVyc2lvbiAhPT0gJ3YyJ1xuICAgICAgICAgID8gKHRoaXMuZG93bmxvYWRTdGF0dXMgPSAnRE9XTkxPQURFRCcpXG4gICAgICAgICAgOiAodGhpcy5kb3dubG9hZFN0YXR1c1YyID0gJ0RPV05MT0FERUQnKTtcbiAgICAgICAgLy8gdGhpcy5kb3dubG9hZFN0YXR1cyA9ICdET1dOTE9BREVEJztcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgdXBsb2FkZWRGaWxlRGF0YSE6IGFueTtcblxuICB1cGxvYWRlZEZpbGUoZXZlbnQ6IGFueSkge1xuICAgIHRyeSB7XG4gICAgICB0aGlzLmlzRmlsZUVtcHR5ID0gZmFsc2U7XG4gICAgICB0aGlzLmlzV3JvbmdGaWxlID0gZmFsc2U7XG4gICAgICB0aGlzLmlzV3JvbmdGb3JtYXQgPSBmYWxzZTtcbiAgICAgIGxldCBpc0VtcHR5ID0gZmFsc2U7XG4gICAgICBsZXQgaXNDb3JyZWN0RmlsZSA9IHRydWU7XG4gICAgICBsZXQgcmVzcG9uc2liaWxpdHlCdWxrVXBsb2FkID0ge1xuICAgICAgICBoZWFkZXI6IFtdLFxuICAgICAgICByZXBvcnRzOiBbXSxcbiAgICAgIH07XG4gICAgICBsZXQgdGVtcGxhdGVJbmZvID0ge1xuICAgICAgICBjYXRlZ29yeUxpc3Q6IFtdLFxuICAgICAgICByY0xpc3Q6IFtdLFxuICAgICAgICBhc3NpZ25vcnNMaXN0OiBbXSxcbiAgICAgICAgYXNzaWduZWVzTGlzdDogW10sXG4gICAgICAgIG1lbWJlcklkOiAnJyxcbiAgICAgIH07XG4gICAgICB0aGlzLmZpbGVOYW1lID0gZXZlbnQudGFyZ2V0LmZpbGVzWzBdLm5hbWU7XG4gICAgICAvLyB0aGlzLnVwbG9hZGVkRmlsZXMucHVzaChldmVudC50YXJnZXQuZmlsZXMpO1xuICAgICAgdGhpcy51cGxvYWRlZEZpbGVEYXRhID0gZXZlbnQ7XG4gICAgICBjb25zdCB0YXJnZXQ6IERhdGFUcmFuc2ZlciA9IGV2ZW50LnRhcmdldCBhcyBEYXRhVHJhbnNmZXI7XG4gICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IGN1cmx5XG4gICAgICBpZiAodGFyZ2V0LmZpbGVzLmxlbmd0aCAhPT0gMSlcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgdXNlIG11bHRpcGxlIGZpbGVzJyk7XG4gICAgICBjb25zdCByZWFkZXI6IEZpbGVSZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuICAgICAgcmVhZGVyLm9ubG9hZCA9IChlOiBhbnkpID0+IHtcbiAgICAgICAgY29uc3QgYnN0cjogc3RyaW5nID0gZS50YXJnZXQucmVzdWx0O1xuICAgICAgICBjb25zdCB3YjogWExTWC5Xb3JrQm9vayA9IFhMU1gucmVhZChic3RyLCB7IHR5cGU6ICdiaW5hcnknIH0pO1xuICAgICAgICBsZXQgc2hlZXREYXRhID0gJyc7XG4gICAgICAgIGxldCBtZW1iZXJBcnJheTogYW55W10gPSBbXTtcbiAgICAgICAgaWYgKHdiPy5TaGVldE5hbWVzPy5sZW5ndGggPiAyKSB7XG4gICAgICAgICAgY29uc3Qgc2hlZXREYXRhID0gd2IuU2hlZXROYW1lc1s0XTtcbiAgICAgICAgICBjb25zdCB0ZW1wRGF0YTogWExTWC5Xb3JrU2hlZXQgPSB3Yi5TaGVldHNbc2hlZXREYXRhXTtcbiAgICAgICAgICBjb25zdCB0RGF0YSA9IFhMU1gudXRpbHMuc2hlZXRfdG9fanNvbih0ZW1wRGF0YSwge1xuICAgICAgICAgICAgaGVhZGVyOiAxLFxuICAgICAgICAgIH0pIGFzIEFPQTtcbiAgICAgICAgICBjb25zdCB0ZW1wTGlzdCA9IHREYXRhLmZpbHRlcihcbiAgICAgICAgICAgIChkYXRhRWxlbWVudDogYW55KSA9PiBkYXRhRWxlbWVudC5sZW5ndGggPiAwXG4gICAgICAgICAgKTtcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRlbXBMaXN0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoIXRlbXBMaXN0W2ldWzNdKSB7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbWVtYmVyQXJyYXkucHVzaCh0ZW1wTGlzdFtpXVszXSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IGV4Y2VsU2hlZXROYW1lMSA9IHdiLlNoZWV0TmFtZXNbMV07XG4gICAgICAgICAgY29uc3QgZXhjZWxEYXRhMTogWExTWC5Xb3JrU2hlZXQgPSB3Yi5TaGVldHNbZXhjZWxTaGVldE5hbWUxXTtcbiAgICAgICAgICBjb25zdCBleGNlbFNoZWV0TmFtZTIgPSB3Yi5TaGVldE5hbWVzWzJdO1xuICAgICAgICAgIGNvbnN0IGV4Y2VsRGF0YTI6IFhMU1guV29ya1NoZWV0ID0gd2IuU2hlZXRzW2V4Y2VsU2hlZXROYW1lMl07XG4gICAgICAgICAgY29uc3QgZXhjZWxTaGVldE5hbWUzID0gd2IuU2hlZXROYW1lc1szXTtcbiAgICAgICAgICBjb25zdCBleGNlbERhdGEzOiBYTFNYLldvcmtTaGVldCA9IHdiLlNoZWV0c1tleGNlbFNoZWV0TmFtZTNdO1xuICAgICAgICAgIGlzRW1wdHkgPVxuICAgICAgICAgICAgdGhpcy5idWxrVXBsb2FkU2VydmljZS5oYXNEYXRhSW5MaXN0KGV4Y2VsRGF0YTEsIDcpICYmXG4gICAgICAgICAgICB0aGlzLmJ1bGtVcGxvYWRTZXJ2aWNlLmhhc0RhdGFJbkxpc3QoZXhjZWxEYXRhMiwgNykgJiZcbiAgICAgICAgICAgIHRoaXMuYnVsa1VwbG9hZFNlcnZpY2UuaGFzRGF0YUluTGlzdChleGNlbERhdGEzLCA3KTtcbiAgICAgICAgICBpc0NvcnJlY3RGaWxlID1cbiAgICAgICAgICAgIHRoaXMuYnVsa1VwbG9hZFNlcnZpY2UuY2hlY2tDb3JyZWN0RmlsZShleGNlbERhdGExLCAyKSB8fFxuICAgICAgICAgICAgdGhpcy5idWxrVXBsb2FkU2VydmljZS5jaGVja0NvcnJlY3RGaWxlKGV4Y2VsRGF0YTIsIDIpIHx8XG4gICAgICAgICAgICB0aGlzLmJ1bGtVcGxvYWRTZXJ2aWNlLmNoZWNrQ29ycmVjdEZpbGUoZXhjZWxEYXRhMywgMik7XG4gICAgICAgICAgdGVtcGxhdGVJbmZvLm1lbWJlcklkID0gdGVtcExpc3RbMF1bMThdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IHNoZWV0RGF0YSA9IHdiLlNoZWV0TmFtZXNbMV07XG4gICAgICAgICAgY29uc3QgdGVtcERhdGE6IFhMU1guV29ya1NoZWV0ID0gd2IuU2hlZXRzW3NoZWV0RGF0YV07XG4gICAgICAgICAgY29uc3QgdERhdGEgPSBYTFNYLnV0aWxzLnNoZWV0X3RvX2pzb24odGVtcERhdGEsIHtcbiAgICAgICAgICAgIGhlYWRlcjogMSxcbiAgICAgICAgICB9KSBhcyBBT0E7XG4gICAgICAgICAgY29uc3QgdGVtcExpc3QgPSB0RGF0YS5maWx0ZXIoXG4gICAgICAgICAgICAoZGF0YUVsZW1lbnQ6IGFueSkgPT4gZGF0YUVsZW1lbnQubGVuZ3RoID4gMFxuICAgICAgICAgICk7XG5cbiAgICAgICAgICBjb25zdCBleGNlbFNoZWV0TmFtZSA9IHdiLlNoZWV0TmFtZXNbMF07XG4gICAgICAgICAgY29uc3QgZXhjZWxEYXRhOiBYTFNYLldvcmtTaGVldCA9IHdiLlNoZWV0c1tleGNlbFNoZWV0TmFtZV07XG4gICAgICAgICAgaXNFbXB0eSA9IHRoaXMuYnVsa1VwbG9hZFNlcnZpY2UuaGFzRGF0YUluTGlzdChleGNlbERhdGEsIDIpO1xuICAgICAgICAgIGlzQ29ycmVjdEZpbGUgPSB0aGlzLmJ1bGtVcGxvYWRTZXJ2aWNlLmNoZWNrQ29ycmVjdEZpbGUoZXhjZWxEYXRhLCAwKTtcbiAgICAgICAgICB0ZW1wbGF0ZUluZm8ubWVtYmVySWQgPSB0ZW1wTGlzdFswXVsyNV07XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5maWxlTmFtZS5zdWJzdHIoLTUpICE9PSAnLnhsc3gnKSB7XG4gICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPVxuICAgICAgICAgICAgJ1RoZSBpbmNvcnJlY3QgZmlsZSBoYXMgYmVlbiB1cGxvYWRlZC4gUGxlYXNlIHVwbG9hZCB0aGUgdGVtcGxhdGUgd2hpY2ggeW91IGRvd25sb2FkZWQgZnJvbSBoZXJlLicgK1xuICAgICAgICAgICAgJyBSRVRSWSc7XG4gICAgICAgICAgdGhpcy5pc1dyb25nRmlsZSA9IHRydWU7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChcbiAgICAgICAgICB0aGlzLm1lbWJlcl9vYmpfaWQgIT0gdGVtcGxhdGVJbmZvLm1lbWJlcklkIHx8XG4gICAgICAgICAgIW1lbWJlckFycmF5LmluY2x1ZGVzKHRoaXMubWVtYmVySWQpXG4gICAgICAgICkge1xuICAgICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID1cbiAgICAgICAgICAgICdUaGUgaW5jb3JyZWN0IGZpbGUgaGFzIGJlZW4gdXBsb2FkZWQuIFBsZWFzZSB1cGxvYWQgdGhlIHRlbXBsYXRlIHdoaWNoIHlvdSBkb3dubG9hZGVkIGZyb20gaGVyZS4nICtcbiAgICAgICAgICAgICcgUkVUUlknO1xuICAgICAgICAgIHRoaXMuaXNXcm9uZ0ZpbGUgPSB0cnVlO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNFbXB0eSkge1xuICAgICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID1cbiAgICAgICAgICAgICdZb3UgaGF2ZSB1cGxvYWRlZCBhIGJsYW5rIHRlbXBsYXRlLiBQbGVhc2UgYWRkIGRldGFpbHMgZm9yIGFsbCBtYW5kYXRvcnkgZmllbGRzLiBSRVRSWSc7XG4gICAgICAgICAgdGhpcy5pc0ZpbGVFbXB0eSA9IHRydWU7XG4gICAgICAgICAgdGhpcy5pc1dyb25nRmlsZSA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuaXNXcm9uZ0Zvcm1hdCA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuZmlsZVZhbHVlID0gJyc7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICghaXNDb3JyZWN0RmlsZSkge1xuICAgICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID1cbiAgICAgICAgICAgICdUaGUgaW5jb3JyZWN0IGZpbGUgaGFzIGJlZW4gdXBsb2FkZWQuIFBsZWFzZSB1cGxvYWQgdGhlIHRlbXBsYXRlIHdoaWNoIHlvdSBkb3dubG9hZGVkIGZyb20gaGVyZS4nICtcbiAgICAgICAgICAgICcgUkVUUlknO1xuICAgICAgICAgIHRoaXMuaXNXcm9uZ0ZpbGUgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLmlzV3JvbmdGb3JtYXQgPSB0cnVlO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAod2I/LlNoZWV0TmFtZXM/Lmxlbmd0aCA+IDIpIHtcbiAgICAgICAgICB0aGlzLm11bHRpVGFiUmVzcG9uc2liaWxpdHkgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuc2luZ2xlVGFiUmVzcG9uc2liaWxpdHkgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgcmVhZGVyLnJlYWRBc0JpbmFyeVN0cmluZyh0YXJnZXQuZmlsZXNbMF0pO1xuICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICB9XG4gIH1cblxuICBjbG9zZVNtaWxleShldmVudDogYW55KSB7XG4gICAgdGhpcy5zaG93U21pbGV5ID0gZmFsc2U7XG4gICAgdGhpcy5jbG9zZVdvcmtmbG93LmVtaXQoeyBldnQ6IHRoaXMucmVzcG9uc2liaWxpdHlEYXRhLCBjb25maXJtOiBmYWxzZSB9KTtcbiAgfVxuXG4gIHRyaWdnZXJCcm93c2VGaWxlKCkge1xuICAgIGNvbnN0IGdldEZpbGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZmlsZUlucHV0Jyk7XG4gICAgaWYgKGdldEZpbGUpIHtcbiAgICAgIGdldEZpbGUuY2xpY2soKTtcbiAgICB9XG4gIH1cblxuICBjbG9zZUFkZE11bHRpcGxlUmVzcG9uc2liaWxpdHkoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuc2luZ2xlVGFiUmVzcG9uc2liaWxpdHkgPSBmYWxzZTtcbiAgICB0aGlzLm11bHRpVGFiUmVzcG9uc2liaWxpdHkgPSBmYWxzZTtcbiAgICB0aGlzLmZpbGVWYWx1ZSA9ICcnO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiYWRkLW11bHRpcGxlLXJpc2tcIiBbYXR0ci5pZF09XCInc2Nyb2xsUmVmZXJlbmNlJ1wiPlxuICA8IS0tIG1haW4gY29udGFpbmVyIHN0YXJ0cyBoZXJlIC0tPlxuICA8ZGl2IGNsYXNzPVwiYWRkLW11bHRpcGxlLXJpc2stYm9keVwiPlxuICAgIDxkaXYgY2xhc3M9XCJhZGQtbXVsdGlwbGUtcmlzay1jb250YWluZXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJpbWFnZVwiPlxuICAgICAgICA8aW1nIFtzcmNdPVwiQVNTRVRTLnNwcmVhZHNoZWV0X211bHRpcGxlX2NhdGVnb3J5XCIgYWx0PVwiXCIgLz5cbiAgICAgIDwvZGl2PlxuICAgICAgPGg0PllvdSBjYW4gZW50cnVzdCBtdWx0aXBsZSByZXNwb25zaWJpbGl0aWVzIGluIGp1c3QgdHdvIGVhc3kgc3RlcHM6PC9oND5cbiAgICAgIDx1bCBjbGFzcz1cImxpc3RcIj5cbiAgICAgICAgPGxpPkRvd25sb2FkIHRoZSB0ZW1wbGF0ZSBhbmQgZmlsbCBpbiB0aGUgZGV0YWlscy48L2xpPlxuICAgICAgICA8bGk+VXBsb2FkIHRoZSAueGxzeCBmaWxlIGFuZCB5b3XigJlyZSBnb29kIHRvIGdvITwvbGk+XG4gICAgICA8L3VsPlxuXG4gICAgICA8IS0tIGJvdGggb2xkIGFuZCBuZXcgdGVtcGxhdGUgLS0+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiZG93bmxvYWQtYnRuXCJcbiAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICBmZWF0dXJlLmlzRmVhdHVyZUVuYWJsZWQoJ2ZmX2JvdGhfYnVsa19yZXNwb25zaWJpbGl0eScpICYmXG4gICAgICAgICAgIWZlYXR1cmUuaXNGZWF0dXJlRW5hYmxlZCgnZmZfYnVsa19yZXNwb25zaWJpbGl0eScpICYmXG4gICAgICAgICAgb3JnRGV0YWlscz8uZG9jX3V0YyA8IGRlcGxveWVkRGF0ZVxuICAgICAgICBcIlxuICAgICAgPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgY2xhc3M9XCJkb3dubG9hZFwiXG4gICAgICAgICAgKm5nSWY9XCJkb3dubG9hZFN0YXR1cyA9PT0gJ05PVF9ET1dOTE9BRElORydcIlxuICAgICAgICAgIChjbGljayk9XCJkb3dubG9hZFRlbXBsYXRlKClcIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICA+XG4gICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5MWI7PC9pPiBEb3dubG9hZCBFeGlzdGluZyBUZW1wbGF0ZVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGRpdiAqbmdJZj1cImRvd25sb2FkU3RhdHVzID09PSAnRE9XTkxPQURJTkcnXCIgY2xhc3M9XCJidWxrLWJ0bi1wcm9ncmVzc1wiPlxuICAgICAgICAgIERvd25sb2FkIGluIFByb2dyZXNzXG4gICAgICAgICAgPGFwcC1saW5lLWxvYWRlciBbbG9hZGVySGVpZ2h0XT1cIicyJ1wiPjwvYXBwLWxpbmUtbG9hZGVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPCEtLSA8ZGl2ICpuZ0lmPVwiZG93bmxvYWRTdGF0dXMgPT09ICdET1dOTE9BREVEJ1wiIGNsYXNzPVwiYnVsay1idG4tcHJvZ3Jlc3MgY29tcGxldGVcIj48aSBjbGFzcz1cImljb25zXCI+JiN4ZTkxYzs8L2k+RG93bmxvYWQgQ29tcGxldGUgLSZuYnNwOzxidXR0b24gKGNsaWNrKT1cImRvd25sb2FkVGVtcGxhdGUoKVwiPlJldHJ5IERvd25sb2FkPC9idXR0b24+PC9kaXY+IC0tPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZG93bmxvYWRTdGF0dXMgPT09ICdET1dOTE9BREVEJ1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJidWxrLWJ0bi1wcm9ncmVzc1wiPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5MWM7PC9pPkRvd25sb2FkIENvbXBsZXRlXG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImJ1bGstYnRuLWFnYWluXCI+XG4gICAgICAgICAgICBJcyB0aGUgZmlsZSBub3QgZG93bmxvYWRlZD9cbiAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cImRvd25sb2FkVGVtcGxhdGUoKVwiPlJldHJ5IERvd25sb2FkPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJvckRpdlwiPk9SPC9kaXY+XG5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGNsYXNzPVwiZG93bmxvYWRcIlxuICAgICAgICAgICpuZ0lmPVwiZG93bmxvYWRTdGF0dXNWMiA9PT0gJ05PVF9ET1dOTE9BRElORydcIlxuICAgICAgICAgIChjbGljayk9XCJkb3dubG9hZFRlbXBsYXRlKCd2MicpXCJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTFiOzwvaT4gRG93bmxvYWQgTmV3IFRlbXBsYXRlXG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgKm5nSWY9XCJkb3dubG9hZFN0YXR1c1YyID09PSAnRE9XTkxPQURJTkcnXCJcbiAgICAgICAgICBjbGFzcz1cImJ1bGstYnRuLXByb2dyZXNzXCJcbiAgICAgICAgPlxuICAgICAgICAgIERvd25sb2FkIGluIFByb2dyZXNzXG4gICAgICAgICAgPGFwcC1saW5lLWxvYWRlciBbbG9hZGVySGVpZ2h0XT1cIicyJ1wiPjwvYXBwLWxpbmUtbG9hZGVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPCEtLSA8ZGl2ICpuZ0lmPVwiZG93bmxvYWRTdGF0dXNWMiA9PT0gJ0RPV05MT0FERUQnXCIgY2xhc3M9XCJidWxrLWJ0bi1wcm9ncmVzcyBjb21wbGV0ZVwiPjxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTFjOzwvaT5Eb3dubG9hZCBDb21wbGV0ZSAtJm5ic3A7PGJ1dHRvbiAoY2xpY2spPVwiZG93bmxvYWRUZW1wbGF0ZSgndjInKVwiPlJldHJ5IERvd25sb2FkPC9idXR0b24+PC9kaXY+IC0tPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZG93bmxvYWRTdGF0dXNWMiA9PT0gJ0RPV05MT0FERUQnXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImJ1bGstYnRuLXByb2dyZXNzXCI+XG4gICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTkxYzs8L2k+RG93bmxvYWQgQ29tcGxldGVcbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnVsay1idG4tYWdhaW5cIj5cbiAgICAgICAgICAgIElzIHRoZSBmaWxlIG5vdCBkb3dubG9hZGVkP1xuICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiZG93bmxvYWRUZW1wbGF0ZSgndjInKVwiPlJldHJ5IERvd25sb2FkPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDwhLS0gb25seSBmb3IgbmV3IHRlbXBsYXRlIC0tPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImRvd25sb2FkLWJ0blwiXG4gICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgKGZlYXR1cmUuaXNGZWF0dXJlRW5hYmxlZCgnZmZfYnVsa19yZXNwb25zaWJpbGl0eScpICYmXG4gICAgICAgICAgICAhZmVhdHVyZS5pc0ZlYXR1cmVFbmFibGVkKCdmZl9ib3RoX2J1bGtfcmVzcG9uc2liaWxpdHknKSkgfHxcbiAgICAgICAgICAoZmVhdHVyZS5pc0ZlYXR1cmVFbmFibGVkKCdmZl9idWxrX3Jlc3BvbnNpYmlsaXR5JykgJiZcbiAgICAgICAgICAgIGZlYXR1cmUuaXNGZWF0dXJlRW5hYmxlZCgnZmZfYm90aF9idWxrX3Jlc3BvbnNpYmlsaXR5JykpIHx8XG4gICAgICAgICAgb3JnRGV0YWlscz8uZG9jX3V0YyA+IGRlcGxveWVkRGF0ZVxuICAgICAgICBcIlxuICAgICAgPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgY2xhc3M9XCJkb3dubG9hZFwiXG4gICAgICAgICAgKm5nSWY9XCJkb3dubG9hZFN0YXR1c1YyID09PSAnTk9UX0RPV05MT0FESU5HJ1wiXG4gICAgICAgICAgKGNsaWNrKT1cImRvd25sb2FkVGVtcGxhdGUoJ3YyJylcIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICA+XG4gICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5MWI7PC9pPiBEb3dubG9hZCBUZW1wbGF0ZVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICpuZ0lmPVwiZG93bmxvYWRTdGF0dXNWMiA9PT0gJ0RPV05MT0FESU5HJ1wiXG4gICAgICAgICAgY2xhc3M9XCJidWxrLWJ0bi1wcm9ncmVzc1wiXG4gICAgICAgID5cbiAgICAgICAgICBEb3dubG9hZCBpbiBQcm9ncmVzc1xuICAgICAgICAgIDxhcHAtbGluZS1sb2FkZXIgW2xvYWRlckhlaWdodF09XCInMidcIj48L2FwcC1saW5lLWxvYWRlcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDwhLS0gPGRpdiAqbmdJZj1cImRvd25sb2FkU3RhdHVzVjIgPT09ICdET1dOTE9BREVEJ1wiIGNsYXNzPVwiYnVsay1idG4tcHJvZ3Jlc3MgY29tcGxldGVcIj48aSBjbGFzcz1cImljb25zXCI+JiN4ZTkxYzs8L2k+RG93bmxvYWQgQ29tcGxldGUgLSZuYnNwOzxidXR0b24gKGNsaWNrKT1cImRvd25sb2FkVGVtcGxhdGUoJ3YyJylcIj5SZXRyeSBEb3dubG9hZDwvYnV0dG9uPjwvZGl2PiAtLT5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRvd25sb2FkU3RhdHVzVjIgPT09ICdET1dOTE9BREVEJ1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJidWxrLWJ0bi1wcm9ncmVzc1wiPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5MWM7PC9pPkRvd25sb2FkIENvbXBsZXRlXG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImJ1bGstYnRuLWFnYWluXCI+XG4gICAgICAgICAgICBJcyB0aGUgZmlsZSBub3QgZG93bmxvYWRlZD9cbiAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cImRvd25sb2FkVGVtcGxhdGUoJ3YyJylcIj5SZXRyeSBEb3dubG9hZDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8IS0tIG9ubHkgZm9yIG9sZCB0ZW1wbGF0ZSAtLT5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJkb3dubG9hZC1idG5cIlxuICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICFmZWF0dXJlLmlzRmVhdHVyZUVuYWJsZWQoJ2ZmX2J1bGtfcmVzcG9uc2liaWxpdHknKSAmJlxuICAgICAgICAgICFmZWF0dXJlLmlzRmVhdHVyZUVuYWJsZWQoJ2ZmX2JvdGhfYnVsa19yZXNwb25zaWJpbGl0eScpXG4gICAgICAgIFwiXG4gICAgICA+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBjbGFzcz1cImRvd25sb2FkXCJcbiAgICAgICAgICAqbmdJZj1cImRvd25sb2FkU3RhdHVzID09PSAnTk9UX0RPV05MT0FESU5HJ1wiXG4gICAgICAgICAgKGNsaWNrKT1cImRvd25sb2FkVGVtcGxhdGUoKVwiXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgID5cbiAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTkxYjs8L2k+IERvd25sb2FkIFRlbXBsYXRlXG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYnVsay1idG4tcHJvZ3Jlc3NcIiAqbmdJZj1cImRvd25sb2FkU3RhdHVzID09PSAnRE9XTkxPQURJTkcnXCI+XG4gICAgICAgICAgRG93bmxvYWQgaW4gUHJvZ3Jlc3NcbiAgICAgICAgICA8YXBwLWxpbmUtbG9hZGVyIFtsb2FkZXJIZWlnaHRdPVwiJzInXCI+PC9hcHAtbGluZS1sb2FkZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZG93bmxvYWRTdGF0dXMgPT09ICdET1dOTE9BREVEJ1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJidWxrLWJ0bi1wcm9ncmVzc1wiPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5MWM7PC9pPkRvd25sb2FkIENvbXBsZXRlXG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImJ1bGstYnRuLWFnYWluXCI+XG4gICAgICAgICAgICBJcyB0aGUgZmlsZSBub3QgZG93bmxvYWRlZD9cbiAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cImRvd25sb2FkVGVtcGxhdGUoKVwiPlJldHJ5IERvd25sb2FkPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgICA8cFxuICAgICAgICBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIlxuICAgICAgICAqbmdJZj1cImlzV3JvbmdGaWxlIHx8IGlzV3JvbmdGb3JtYXQgfHwgaXNGaWxlRW1wdHlcIlxuICAgICAgPlxuICAgICAgICB7eyBlcnJvck1lc3NhZ2UgfX1cbiAgICAgIDwvcD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPGlucHV0XG4gIHR5cGU9XCJmaWxlXCJcbiAgWyhuZ01vZGVsKV09XCJmaWxlVmFsdWVcIlxuICBpZD1cImZpbGVJbnB1dFwiXG4gIGNsYXNzPVwiaGlkZGVuLWlucHV0XCJcbiAgYWNjZXB0PVwiLnhsc3hcIlxuICAoY2hhbmdlKT1cInVwbG9hZGVkRmlsZSgkZXZlbnQpXCJcbiAgbXVsdGlwbGVcbi8+XG48YXBwLXNtaWxleS1kaWFsb2ctaW5saW5lXG4gICpuZ0lmPVwic2hvd1NtaWxleVwiXG4gIFttZXNzYWdlXT1cInNtaWxleU1lc3NhZ2VcIlxuICBbYWN0aW9uQnV0dG9uc109XCJhY3Rpb25CdXR0b25zXCJcbiAgKGFjdGlvbik9XCJhY3Rpb24oJGV2ZW50KVwiXG4gIChjbG9zZVNtaWxleSk9XCJjbG9zZVNtaWxleSgkZXZlbnQpXCJcbj48L2FwcC1zbWlsZXktZGlhbG9nLWlubGluZT5cblxuPGFwcC1hZGQtbXVsdGlwbGUtcmVzcG9uc2liaWxpdHlcbiAgKm5nSWY9XCJzaW5nbGVUYWJSZXNwb25zaWJpbGl0eVwiXG4gIFt1cGxvYWRlZEZpbGVdPVwidXBsb2FkZWRGaWxlRGF0YVwiXG4gIChjbG9zZUFkZE11bHRpcGxlUmVzcG9uc2liaWxpdHkpPVwiY2xvc2VBZGRNdWx0aXBsZVJlc3BvbnNpYmlsaXR5KCRldmVudClcIlxuICBbZmVhdHVyZWZsYWddPVwiaXNSZXNwb25zaWJpbGl0eVNpbXBsaWZpZWRcIlxuICBbZmVhdHVyZV09XCJmZWF0dXJlXCJcbj48L2FwcC1hZGQtbXVsdGlwbGUtcmVzcG9uc2liaWxpdHk+XG48bGliLWFkZC1tdWx0aXBsZS1yZXNwb25zaWJpbGl0eS13aXRoLXRhYlxuICAqbmdJZj1cIm11bHRpVGFiUmVzcG9uc2liaWxpdHlcIlxuICBbb3JnRGV0YWlsc109XCJvcmdEZXRhaWxzXCJcbiAgW3VwbG9hZGVkRmlsZV09XCJ1cGxvYWRlZEZpbGVEYXRhXCJcbiAgKGNsb3NlQWRkTXVsdGlwbGVSZXNwb25zaWJpbGl0eSk9XCJjbG9zZUFkZE11bHRpcGxlUmVzcG9uc2liaWxpdHkoJGV2ZW50KVwiXG4gIFtmZWF0dXJlZmxhZ109XCJpc1Jlc3BvbnNpYmlsaXR5U2ltcGxpZmllZFwiXG4gIFtmZWF0dXJlXT1cImZlYXR1cmVcIlxuPjwvbGliLWFkZC1tdWx0aXBsZS1yZXNwb25zaWJpbGl0eS13aXRoLXRhYj5cbiJdfQ==
216
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLW11bHRpcGxlLXJlc3BvbnNpYmlsaXR5LWNvbnRhaW5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi9hZGQtbXVsdGlwbGUtcmVzcG9uc2liaWxpdHktY29udGFpbmVyL2FkZC1tdWx0aXBsZS1yZXNwb25zaWJpbGl0eS1jb250YWluZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvYWRkLW11bHRpcGxlLXJlc3BvbnNpYmlsaXR5LWNvbnRhaW5lci9hZGQtbXVsdGlwbGUtcmVzcG9uc2liaWxpdHktY29udGFpbmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0UsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUM7QUFJN0IsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLCtCQUErQixDQUFDOzs7Ozs7Ozs7OztBQVd2RCxNQUFNLE9BQU8sMkNBQTJDO0lBeUJ0RCxZQUNVLFdBQTJCLEVBQzNCLFdBQXdCLEVBQ3hCLGlCQUFvQztRQUZwQyxnQkFBVyxHQUFYLFdBQVcsQ0FBZ0I7UUFDM0IsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQTNCOUMsV0FBTSxHQUFHLE1BQU0sQ0FBQztRQUNoQixtQkFBYyxHQUFXLGlCQUFpQixDQUFDO1FBQzNDLHFCQUFnQixHQUFXLGlCQUFpQixDQUFDO1FBQzdDLG9CQUFlLEdBQUcsQ0FBQyxDQUFDO1FBRXBCLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFFbkIsYUFBUSxHQUFHLEVBQUUsQ0FBQztRQUNkLDRCQUF1QixH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LENBQUM7UUFDckMsSUFBSSxDQUFDLHNCQUFzQixHQUFHLEtBQUssQ0FBQztRQUNwQyxJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztJQUN0QixDQUFDOytHQTVOVSwyQ0FBMkM7bUdBQTNDLDJDQUEyQyx3TENqQnhELHcrTkF3TEE7OzRGRHZLYSwyQ0FBMkM7a0JBUnZELFNBQVM7K0JBQ0UsMkNBQTJDOytKQTJCM0MsYUFBYTtzQkFBdEIsTUFBTTtnQkFDRSxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFkZFJpc2tTZXJ2aWNlIH0gZnJvbSAnLi4vd29ya2Zsb3ctc2VydmljZXMvYWRkLXJpc2suc2VydmljZSc7XG5pbXBvcnQgKiBhcyBYTFNYIGZyb20gJ3hsc3gnO1xuaW1wb3J0IHsgY2xvbmVEZWVwIH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vd29ya2Zsb3ctc2VydmljZXMvYXV0aC5zZXJ2aWNlJztcbmltcG9ydCB7IEJ1bGtVcGxvYWRTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvYnVsay11cGxvYWQuc2VydmljZSc7XG5pbXBvcnQgeyBBU1NFVFMgfSBmcm9tICcuLi9jb25zdGFudHMvYXNzZXRzLmNvbnN0YW50cyc7XG50eXBlIEFPQSA9IGFueVtdW107XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1hZGQtbXVsdGlwbGUtcmVzcG9uc2liaWxpdHktY29udGFpbmVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2FkZC1tdWx0aXBsZS1yZXNwb25zaWJpbGl0eS1jb250YWluZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFtcbiAgICAnLi9hZGQtbXVsdGlwbGUtcmVzcG9uc2liaWxpdHktY29udGFpbmVyLmNvbXBvbmVudC5sZXNzJyxcbiAgICAnLi4vZm9ybXMubGVzcycsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEFkZE11bHRpcGxlUmVzcG9uc2liaWxpdHlDb250YWluZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBBU1NFVFMgPSBBU1NFVFM7XG4gIGRvd25sb2FkU3RhdHVzOiBzdHJpbmcgPSAnTk9UX0RPV05MT0FESU5HJztcbiAgZG93bmxvYWRTdGF0dXNWMjogc3RyaW5nID0gJ05PVF9ET1dOTE9BRElORyc7XG4gIGRvd25sb2FkUGVyY2VudCA9IDA7XG4gIGZpbGVWYWx1ZTogYW55O1xuICBzaG93U21pbGV5ID0gZmFsc2U7XG4gIHJlc3BvbnNpYmlsaXR5RGF0YSE6IGFueTtcbiAgZmlsZU5hbWUgPSAnJztcbiAgc2luZ2xlVGFiUmVzcG9uc2liaWxpdHk6IGJvb2xlYW4gPSBmYWxzZTtcbiAgbXVsdGlUYWJSZXNwb25zaWJpbGl0eTogYm9vbGVhbiA9IGZhbHNlO1xuICBpc0ZpbGVFbXB0eSA9IGZhbHNlO1xuICBpc1dyb25nRmlsZSA9IGZhbHNlO1xuICBpc1dyb25nRm9ybWF0ID0gZmFsc2U7XG4gIGVycm9yTWVzc2FnZSA9ICcgaW52YWxpZCBmaWxlIGVycm9yJztcbiAgbWVtYmVyX29ial9pZCA9ICcnO1xuICBidWxrVXBsb2FkRmxhZyE6IGJvb2xlYW47XG4gIGRlcGxveWVkRGF0ZTogbnVtYmVyID0gMTY3NzE1MDg3NTtcbiAgbWVtYmVySWQ6IGFueSA9ICcnO1xuXG4gIEBPdXRwdXQoKSBjbG9zZVdvcmtmbG93ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBASW5wdXQoKSBmZWF0dXJlITogYW55O1xuICBASW5wdXQoKSBvcmdEZXRhaWxzITogYW55O1xuICBpc1Jlc3BvbnNpYmlsaXR5U2ltcGxpZmllZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmlza1NlcnZpY2U6IEFkZFJpc2tTZXJ2aWNlLFxuICAgIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLFxuICAgIHByaXZhdGUgYnVsa1VwbG9hZFNlcnZpY2U6IEJ1bGtVcGxvYWRTZXJ2aWNlXG4gICkgeyB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5tZW1iZXJfb2JqX2lkID0gdGhpcy5hdXRoU2VydmljZS5nZXRVc2VyRGV0YWlscygpLl9pZDtcbiAgICB0aGlzLm1lbWJlcklkID0gdGhpcy5hdXRoU2VydmljZS5nZXRVc2VyRGV0YWlscygpPy51c2VyPy5pZDtcbiAgICB0aGlzLmJ1bGtVcGxvYWRGbGFnID0gdGhpcy5mZWF0dXJlLmlzRmVhdHVyZUVuYWJsZWQoXG4gICAgICAnZmZfYnVsa19yZXNwb25zaWJpbGl0eSdcbiAgICApO1xuICAgIHRoaXMuaXNSZXNwb25zaWJpbGl0eVNpbXBsaWZpZWQgPSB0aGlzLmZlYXR1cmUuaXNGZWF0dXJlRW5hYmxlZChcbiAgICAgICdmZl9yZXNwb25zaWJpbGl0eV9zaW1wbGlmaWNhdGlvbidcbiAgICApO1xuICB9XG5cbiAgZG93bmxvYWRUZW1wbGF0ZSh2ZXJzaW9uPzogYW55KSB7XG4gICAgdmVyc2lvbiAhPT0gJ3YyJ1xuICAgICAgPyAodGhpcy5kb3dubG9hZFN0YXR1cyA9ICdET1dOTE9BRElORycpXG4gICAgICA6ICh0aGlzLmRvd25sb2FkU3RhdHVzVjIgPSAnRE9XTkxPQURJTkcnKTtcbiAgICB0aGlzLmRvd25sb2FkUGVyY2VudCA9IDA7XG4gICAgY29uc3QgZG93bmxvYWREYXRlID0gbmV3IERhdGUoKS50b0RhdGVTdHJpbmcoKS5zcGxpdCgnICcpO1xuICAgIGNvbnN0IGZpbGVOYW1lID0gYEVudHJ1c3QgUmVzcG9uc2liaWxpdGllcy0ke2Rvd25sb2FkRGF0ZVsyXX0tJHtkb3dubG9hZERhdGVbMV19LSR7ZG93bmxvYWREYXRlWzNdfS54bHN4YDtcblxuICAgIHRoaXMucmlza1NlcnZpY2UuZG93bmxvYWRSZXNwb25zaWJpbGl0eVRlbXBsYXRlKHZlcnNpb24pLnN1YnNjcmliZShcbiAgICAgIChkYXRhOiBhbnkpID0+IHtcbiAgICAgICAgaWYgKGRhdGEubG9hZGVkKSB7XG4gICAgICAgICAgdGhpcy5kb3dubG9hZFBlcmNlbnQgPSAxMDAgKiAoZGF0YS5sb2FkZWQgLyBkYXRhLnRvdGFsKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZGF0YS5ib2R5KSB7XG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBkb3dubG9hZFN0YXR1cyA9IHRoaXMucmlza1NlcnZpY2UuZG93bkxvYWRGaWxlKFxuICAgICAgICAgICAgICBkYXRhLmJvZHksXG4gICAgICAgICAgICAgICdhcHBsaWNhdGlvbi94bHN4JyxcbiAgICAgICAgICAgICAgZmlsZU5hbWVcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB2ZXJzaW9uICE9PSAndjInXG4gICAgICAgICAgICAgID8gKHRoaXMuZG93bmxvYWRTdGF0dXMgPSBkb3dubG9hZFN0YXR1cylcbiAgICAgICAgICAgICAgOiAodGhpcy5kb3dubG9hZFN0YXR1c1YyID0gZG93bmxvYWRTdGF0dXMpO1xuICAgICAgICAgIH0sIDE1MDApO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgKGVycm9yKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgICAgICB2ZXJzaW9uICE9PSAndjInXG4gICAgICAgICAgPyAodGhpcy5kb3dubG9hZFN0YXR1cyA9ICdET1dOTE9BREVEJylcbiAgICAgICAgICA6ICh0aGlzLmRvd25sb2FkU3RhdHVzVjIgPSAnRE9XTkxPQURFRCcpO1xuICAgICAgICAvLyB0aGlzLmRvd25sb2FkU3RhdHVzID0gJ0RPV05MT0FERUQnO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICB1cGxvYWRlZEZpbGVEYXRhITogYW55O1xuXG4gIHVwbG9hZGVkRmlsZShldmVudDogYW55KSB7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuaXNGaWxlRW1wdHkgPSBmYWxzZTtcbiAgICAgIHRoaXMuaXNXcm9uZ0ZpbGUgPSBmYWxzZTtcbiAgICAgIHRoaXMuaXNXcm9uZ0Zvcm1hdCA9IGZhbHNlO1xuICAgICAgbGV0IGlzRW1wdHkgPSBmYWxzZTtcbiAgICAgIGxldCBpc0NvcnJlY3RGaWxlID0gdHJ1ZTtcbiAgICAgIGxldCByZXNwb25zaWJpbGl0eUJ1bGtVcGxvYWQgPSB7XG4gICAgICAgIGhlYWRlcjogW10sXG4gICAgICAgIHJlcG9ydHM6IFtdLFxuICAgICAgfTtcbiAgICAgIGxldCB0ZW1wbGF0ZUluZm8gPSB7XG4gICAgICAgIGNhdGVnb3J5TGlzdDogW10sXG4gICAgICAgIHJjTGlzdDogW10sXG4gICAgICAgIGFzc2lnbm9yc0xpc3Q6IFtdLFxuICAgICAgICBhc3NpZ25lZXNMaXN0OiBbXSxcbiAgICAgICAgbWVtYmVySWQ6ICcnLFxuICAgICAgfTtcbiAgICAgIHRoaXMuZmlsZU5hbWUgPSBldmVudC50YXJnZXQuZmlsZXNbMF0ubmFtZTtcbiAgICAgIC8vIHRoaXMudXBsb2FkZWRGaWxlcy5wdXNoKGV2ZW50LnRhcmdldC5maWxlcyk7XG4gICAgICB0aGlzLnVwbG9hZGVkRmlsZURhdGEgPSBldmVudDtcbiAgICAgIGNvbnN0IHRhcmdldDogRGF0YVRyYW5zZmVyID0gZXZlbnQudGFyZ2V0IGFzIERhdGFUcmFuc2ZlcjtcbiAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogY3VybHlcbiAgICAgIGlmICh0YXJnZXQuZmlsZXMubGVuZ3RoICE9PSAxKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCB1c2UgbXVsdGlwbGUgZmlsZXMnKTtcbiAgICAgIGNvbnN0IHJlYWRlcjogRmlsZVJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgICByZWFkZXIub25sb2FkID0gKGU6IGFueSkgPT4ge1xuICAgICAgICBjb25zdCBic3RyOiBzdHJpbmcgPSBlLnRhcmdldC5yZXN1bHQ7XG4gICAgICAgIGNvbnN0IHdiOiBYTFNYLldvcmtCb29rID0gWExTWC5yZWFkKGJzdHIsIHsgdHlwZTogJ2JpbmFyeScgfSk7XG4gICAgICAgIGxldCBzaGVldERhdGEgPSAnJztcbiAgICAgICAgbGV0IG1lbWJlckFycmF5OiBhbnlbXSA9IFtdO1xuICAgICAgICBpZiAod2I/LlNoZWV0TmFtZXM/Lmxlbmd0aCA+IDIpIHtcbiAgICAgICAgICBjb25zdCBzaGVldERhdGEgPSB3Yi5TaGVldE5hbWVzWzRdO1xuICAgICAgICAgIGNvbnN0IHRlbXBEYXRhOiBYTFNYLldvcmtTaGVldCA9IHdiLlNoZWV0c1tzaGVldERhdGFdO1xuICAgICAgICAgIGNvbnN0IHREYXRhID0gWExTWC51dGlscy5zaGVldF90b19qc29uKHRlbXBEYXRhLCB7XG4gICAgICAgICAgICBoZWFkZXI6IDEsXG4gICAgICAgICAgfSkgYXMgQU9BO1xuICAgICAgICAgIGNvbnN0IHRlbXBMaXN0ID0gdERhdGEuZmlsdGVyKFxuICAgICAgICAgICAgKGRhdGFFbGVtZW50OiBhbnkpID0+IGRhdGFFbGVtZW50Lmxlbmd0aCA+IDBcbiAgICAgICAgICApO1xuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGVtcExpc3QubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmICghdGVtcExpc3RbaV1bM10pIHtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBtZW1iZXJBcnJheS5wdXNoKHRlbXBMaXN0W2ldWzNdKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgZXhjZWxTaGVldE5hbWUxID0gd2IuU2hlZXROYW1lc1sxXTtcbiAgICAgICAgICBjb25zdCBleGNlbERhdGExOiBYTFNYLldvcmtTaGVldCA9IHdiLlNoZWV0c1tleGNlbFNoZWV0TmFtZTFdO1xuICAgICAgICAgIGNvbnN0IGV4Y2VsU2hlZXROYW1lMiA9IHdiLlNoZWV0TmFtZXNbMl07XG4gICAgICAgICAgY29uc3QgZXhjZWxEYXRhMjogWExTWC5Xb3JrU2hlZXQgPSB3Yi5TaGVldHNbZXhjZWxTaGVldE5hbWUyXTtcbiAgICAgICAgICBjb25zdCBleGNlbFNoZWV0TmFtZTMgPSB3Yi5TaGVldE5hbWVzWzNdO1xuICAgICAgICAgIGNvbnN0IGV4Y2VsRGF0YTM6IFhMU1guV29ya1NoZWV0ID0gd2IuU2hlZXRzW2V4Y2VsU2hlZXROYW1lM107XG4gICAgICAgICAgaXNFbXB0eSA9XG4gICAgICAgICAgICB0aGlzLmJ1bGtVcGxvYWRTZXJ2aWNlLmhhc0RhdGFJbkxpc3QoZXhjZWxEYXRhMSwgNykgJiZcbiAgICAgICAgICAgIHRoaXMuYnVsa1VwbG9hZFNlcnZpY2UuaGFzRGF0YUluTGlzdChleGNlbERhdGEyLCA3KSAmJlxuICAgICAgICAgICAgdGhpcy5idWxrVXBsb2FkU2VydmljZS5oYXNEYXRhSW5MaXN0KGV4Y2VsRGF0YTMsIDcpO1xuICAgICAgICAgIGlzQ29ycmVjdEZpbGUgPVxuICAgICAgICAgICAgdGhpcy5idWxrVXBsb2FkU2VydmljZS5jaGVja0NvcnJlY3RGaWxlKGV4Y2VsRGF0YTEsIDIpIHx8XG4gICAgICAgICAgICB0aGlzLmJ1bGtVcGxvYWRTZXJ2aWNlLmNoZWNrQ29ycmVjdEZpbGUoZXhjZWxEYXRhMiwgMikgfHxcbiAgICAgICAgICAgIHRoaXMuYnVsa1VwbG9hZFNlcnZpY2UuY2hlY2tDb3JyZWN0RmlsZShleGNlbERhdGEzLCAyKTtcbiAgICAgICAgICB0ZW1wbGF0ZUluZm8ubWVtYmVySWQgPSB0ZW1wTGlzdFswXVsxOF07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3Qgc2hlZXREYXRhID0gd2IuU2hlZXROYW1lc1sxXTtcbiAgICAgICAgICBjb25zdCB0ZW1wRGF0YTogWExTWC5Xb3JrU2hlZXQgPSB3Yi5TaGVldHNbc2hlZXREYXRhXTtcbiAgICAgICAgICBjb25zdCB0RGF0YSA9IFhMU1gudXRpbHMuc2hlZXRfdG9fanNvbih0ZW1wRGF0YSwge1xuICAgICAgICAgICAgaGVhZGVyOiAxLFxuICAgICAgICAgIH0pIGFzIEFPQTtcbiAgICAgICAgICBjb25zdCB0ZW1wTGlzdCA9IHREYXRhLmZpbHRlcihcbiAgICAgICAgICAgIChkYXRhRWxlbWVudDogYW55KSA9PiBkYXRhRWxlbWVudC5sZW5ndGggPiAwXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIGNvbnN0IGV4Y2VsU2hlZXROYW1lID0gd2IuU2hlZXROYW1lc1swXTtcbiAgICAgICAgICBjb25zdCBleGNlbERhdGE6IFhMU1guV29ya1NoZWV0ID0gd2IuU2hlZXRzW2V4Y2VsU2hlZXROYW1lXTtcbiAgICAgICAgICBpc0VtcHR5ID0gdGhpcy5idWxrVXBsb2FkU2VydmljZS5oYXNEYXRhSW5MaXN0KGV4Y2VsRGF0YSwgMik7XG4gICAgICAgICAgaXNDb3JyZWN0RmlsZSA9IHRoaXMuYnVsa1VwbG9hZFNlcnZpY2UuY2hlY2tDb3JyZWN0RmlsZShleGNlbERhdGEsIDApO1xuICAgICAgICAgIHRlbXBsYXRlSW5mby5tZW1iZXJJZCA9IHRlbXBMaXN0WzBdWzI1XTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmZpbGVOYW1lLnN1YnN0cigtNSkgIT09ICcueGxzeCcpIHtcbiAgICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSA9XG4gICAgICAgICAgICAnVGhlIGluY29ycmVjdCBmaWxlIGhhcyBiZWVuIHVwbG9hZGVkLiBQbGVhc2UgdXBsb2FkIHRoZSB0ZW1wbGF0ZSB3aGljaCB5b3UgZG93bmxvYWRlZCBmcm9tIGhlcmUuJyArXG4gICAgICAgICAgICAnIFJFVFJZJztcbiAgICAgICAgICB0aGlzLmlzV3JvbmdGaWxlID0gdHJ1ZTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFxuICAgICAgICAgIHRoaXMubWVtYmVyX29ial9pZCAhPSB0ZW1wbGF0ZUluZm8ubWVtYmVySWQgfHxcbiAgICAgICAgICAhbWVtYmVyQXJyYXkuaW5jbHVkZXModGhpcy5tZW1iZXJJZClcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPVxuICAgICAgICAgICAgJ1RoZSBpbmNvcnJlY3QgZmlsZSBoYXMgYmVlbiB1cGxvYWRlZC4gUGxlYXNlIHVwbG9hZCB0aGUgdGVtcGxhdGUgd2hpY2ggeW91IGRvd25sb2FkZWQgZnJvbSBoZXJlLicgK1xuICAgICAgICAgICAgJyBSRVRSWSc7XG4gICAgICAgICAgdGhpcy5pc1dyb25nRmlsZSA9IHRydWU7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc0VtcHR5KSB7XG4gICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPVxuICAgICAgICAgICAgJ1lvdSBoYXZlIHVwbG9hZGVkIGEgYmxhbmsgdGVtcGxhdGUuIFBsZWFzZSBhZGQgZGV0YWlscyBmb3IgYWxsIG1hbmRhdG9yeSBmaWVsZHMuIFJFVFJZJztcbiAgICAgICAgICB0aGlzLmlzRmlsZUVtcHR5ID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLmlzV3JvbmdGaWxlID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5pc1dyb25nRm9ybWF0ID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5maWxlVmFsdWUgPSAnJztcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpc0NvcnJlY3RGaWxlKSB7XG4gICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPVxuICAgICAgICAgICAgJ1RoZSBpbmNvcnJlY3QgZmlsZSBoYXMgYmVlbiB1cGxvYWRlZC4gUGxlYXNlIHVwbG9hZCB0aGUgdGVtcGxhdGUgd2hpY2ggeW91IGRvd25sb2FkZWQgZnJvbSBoZXJlLicgK1xuICAgICAgICAgICAgJyBSRVRSWSc7XG4gICAgICAgICAgdGhpcy5pc1dyb25nRmlsZSA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuaXNXcm9uZ0Zvcm1hdCA9IHRydWU7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICh3Yj8uU2hlZXROYW1lcz8ubGVuZ3RoID4gMikge1xuICAgICAgICAgIHRoaXMubXVsdGlUYWJSZXNwb25zaWJpbGl0eSA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5zaW5nbGVUYWJSZXNwb25zaWJpbGl0eSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICByZWFkZXIucmVhZEFzQmluYXJ5U3RyaW5nKHRhcmdldC5maWxlc1swXSk7XG4gICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgIH1cbiAgfVxuXG4gIGNsb3NlU21pbGV5KGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLnNob3dTbWlsZXkgPSBmYWxzZTtcbiAgICB0aGlzLmNsb3NlV29ya2Zsb3cuZW1pdCh7IGV2dDogdGhpcy5yZXNwb25zaWJpbGl0eURhdGEsIGNvbmZpcm06IGZhbHNlIH0pO1xuICB9XG5cbiAgdHJpZ2dlckJyb3dzZUZpbGUoKSB7XG4gICAgY29uc3QgZ2V0RmlsZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmaWxlSW5wdXQnKTtcbiAgICBpZiAoZ2V0RmlsZSkge1xuICAgICAgZ2V0RmlsZS5jbGljaygpO1xuICAgIH1cbiAgfVxuXG4gIGNsb3NlQWRkTXVsdGlwbGVSZXNwb25zaWJpbGl0eShldmVudDogYW55KSB7XG4gICAgdGhpcy5zaW5nbGVUYWJSZXNwb25zaWJpbGl0eSA9IGZhbHNlO1xuICAgIHRoaXMubXVsdGlUYWJSZXNwb25zaWJpbGl0eSA9IGZhbHNlO1xuICAgIHRoaXMuZmlsZVZhbHVlID0gJyc7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJhZGQtbXVsdGlwbGUtcmlza1wiIFthdHRyLmlkXT1cIidzY3JvbGxSZWZlcmVuY2UnXCI+XG4gIDwhLS0gbWFpbiBjb250YWluZXIgc3RhcnRzIGhlcmUgLS0+XG4gIDxkaXYgY2xhc3M9XCJhZGQtbXVsdGlwbGUtcmlzay1ib2R5XCI+XG4gICAgPGRpdiBjbGFzcz1cImFkZC1tdWx0aXBsZS1yaXNrLWNvbnRhaW5lclwiPlxuICAgICAgPGRpdiBjbGFzcz1cImltYWdlXCI+XG4gICAgICAgIDxpbWcgW3NyY109XCJBU1NFVFMuc3ByZWFkc2hlZXRfbXVsdGlwbGVfY2F0ZWdvcnlcIiBhbHQ9XCJcIiAvPlxuICAgICAgPC9kaXY+XG4gICAgICA8aDQ+WW91IGNhbiBlbnRydXN0IG11bHRpcGxlIHJlc3BvbnNpYmlsaXRpZXMgaW4ganVzdCB0d28gZWFzeSBzdGVwczo8L2g0PlxuICAgICAgPHVsIGNsYXNzPVwibGlzdFwiPlxuICAgICAgICA8bGk+RG93bmxvYWQgdGhlIHRlbXBsYXRlIGFuZCBmaWxsIGluIHRoZSBkZXRhaWxzLjwvbGk+XG4gICAgICAgIDxsaT5VcGxvYWQgdGhlIC54bHN4IGZpbGUgYW5kIHlvdeKAmXJlIGdvb2QgdG8gZ28hPC9saT5cbiAgICAgIDwvdWw+XG5cbiAgICAgIDwhLS0gYm90aCBvbGQgYW5kIG5ldyB0ZW1wbGF0ZSAtLT5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJkb3dubG9hZC1idG5cIlxuICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgIGZlYXR1cmUuaXNGZWF0dXJlRW5hYmxlZCgnZmZfYm90aF9idWxrX3Jlc3BvbnNpYmlsaXR5JykgJiZcbiAgICAgICAgICAhZmVhdHVyZS5pc0ZlYXR1cmVFbmFibGVkKCdmZl9idWxrX3Jlc3BvbnNpYmlsaXR5JykgJiZcbiAgICAgICAgICBvcmdEZXRhaWxzPy5kb2NfdXRjIDwgZGVwbG95ZWREYXRlXG4gICAgICAgIFwiXG4gICAgICA+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBjbGFzcz1cImRvd25sb2FkXCJcbiAgICAgICAgICAqbmdJZj1cImRvd25sb2FkU3RhdHVzID09PSAnTk9UX0RPV05MT0FESU5HJ1wiXG4gICAgICAgICAgKGNsaWNrKT1cImRvd25sb2FkVGVtcGxhdGUoKVwiXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgID5cbiAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTkxYjs8L2k+IERvd25sb2FkIEV4aXN0aW5nIFRlbXBsYXRlXG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiZG93bmxvYWRTdGF0dXMgPT09ICdET1dOTE9BRElORydcIiBjbGFzcz1cImJ1bGstYnRuLXByb2dyZXNzXCI+XG4gICAgICAgICAgRG93bmxvYWQgaW4gUHJvZ3Jlc3NcbiAgICAgICAgICA8YXBwLWxpbmUtbG9hZGVyIFtsb2FkZXJIZWlnaHRdPVwiJzInXCI+PC9hcHAtbGluZS1sb2FkZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8IS0tIDxkaXYgKm5nSWY9XCJkb3dubG9hZFN0YXR1cyA9PT0gJ0RPV05MT0FERUQnXCIgY2xhc3M9XCJidWxrLWJ0bi1wcm9ncmVzcyBjb21wbGV0ZVwiPjxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTFjOzwvaT5Eb3dubG9hZCBDb21wbGV0ZSAtJm5ic3A7PGJ1dHRvbiAoY2xpY2spPVwiZG93bmxvYWRUZW1wbGF0ZSgpXCI+UmV0cnkgRG93bmxvYWQ8L2J1dHRvbj48L2Rpdj4gLS0+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkb3dubG9hZFN0YXR1cyA9PT0gJ0RPV05MT0FERUQnXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImJ1bGstYnRuLXByb2dyZXNzXCI+XG4gICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTkxYzs8L2k+RG93bmxvYWQgQ29tcGxldGVcbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnVsay1idG4tYWdhaW5cIj5cbiAgICAgICAgICAgIElzIHRoZSBmaWxlIG5vdCBkb3dubG9hZGVkP1xuICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiZG93bmxvYWRUZW1wbGF0ZSgpXCI+UmV0cnkgRG93bmxvYWQ8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm9yRGl2XCI+T1I8L2Rpdj5cblxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgY2xhc3M9XCJkb3dubG9hZFwiXG4gICAgICAgICAgKm5nSWY9XCJkb3dubG9hZFN0YXR1c1YyID09PSAnTk9UX0RPV05MT0FESU5HJ1wiXG4gICAgICAgICAgKGNsaWNrKT1cImRvd25sb2FkVGVtcGxhdGUoJ3YyJylcIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICA+XG4gICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5MWI7PC9pPiBEb3dubG9hZCBOZXcgVGVtcGxhdGVcbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAqbmdJZj1cImRvd25sb2FkU3RhdHVzVjIgPT09ICdET1dOTE9BRElORydcIlxuICAgICAgICAgIGNsYXNzPVwiYnVsay1idG4tcHJvZ3Jlc3NcIlxuICAgICAgICA+XG4gICAgICAgICAgRG93bmxvYWQgaW4gUHJvZ3Jlc3NcbiAgICAgICAgICA8YXBwLWxpbmUtbG9hZGVyIFtsb2FkZXJIZWlnaHRdPVwiJzInXCI+PC9hcHAtbGluZS1sb2FkZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8IS0tIDxkaXYgKm5nSWY9XCJkb3dubG9hZFN0YXR1c1YyID09PSAnRE9XTkxPQURFRCdcIiBjbGFzcz1cImJ1bGstYnRuLXByb2dyZXNzIGNvbXBsZXRlXCI+PGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5MWM7PC9pPkRvd25sb2FkIENvbXBsZXRlIC0mbmJzcDs8YnV0dG9uIChjbGljayk9XCJkb3dubG9hZFRlbXBsYXRlKCd2MicpXCI+UmV0cnkgRG93bmxvYWQ8L2J1dHRvbj48L2Rpdj4gLS0+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkb3dubG9hZFN0YXR1c1YyID09PSAnRE9XTkxPQURFRCdcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnVsay1idG4tcHJvZ3Jlc3NcIj5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTFjOzwvaT5Eb3dubG9hZCBDb21wbGV0ZVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJidWxrLWJ0bi1hZ2FpblwiPlxuICAgICAgICAgICAgSXMgdGhlIGZpbGUgbm90IGRvd25sb2FkZWQ/XG4gICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJkb3dubG9hZFRlbXBsYXRlKCd2MicpXCI+UmV0cnkgRG93bmxvYWQ8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBvbmx5IGZvciBuZXcgdGVtcGxhdGUgLS0+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiZG93bmxvYWQtYnRuXCJcbiAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAoZmVhdHVyZS5pc0ZlYXR1cmVFbmFibGVkKCdmZl9idWxrX3Jlc3BvbnNpYmlsaXR5JykgJiZcbiAgICAgICAgICAgICFmZWF0dXJlLmlzRmVhdHVyZUVuYWJsZWQoJ2ZmX2JvdGhfYnVsa19yZXNwb25zaWJpbGl0eScpKSB8fFxuICAgICAgICAgIChmZWF0dXJlLmlzRmVhdHVyZUVuYWJsZWQoJ2ZmX2J1bGtfcmVzcG9uc2liaWxpdHknKSAmJlxuICAgICAgICAgICAgZmVhdHVyZS5pc0ZlYXR1cmVFbmFibGVkKCdmZl9ib3RoX2J1bGtfcmVzcG9uc2liaWxpdHknKSkgfHxcbiAgICAgICAgICBvcmdEZXRhaWxzPy5kb2NfdXRjID4gZGVwbG95ZWREYXRlXG4gICAgICAgIFwiXG4gICAgICA+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBjbGFzcz1cImRvd25sb2FkXCJcbiAgICAgICAgICAqbmdJZj1cImRvd25sb2FkU3RhdHVzVjIgPT09ICdOT1RfRE9XTkxPQURJTkcnXCJcbiAgICAgICAgICAoY2xpY2spPVwiZG93bmxvYWRUZW1wbGF0ZSgndjInKVwiXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgID5cbiAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTkxYjs8L2k+IERvd25sb2FkIFRlbXBsYXRlXG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgKm5nSWY9XCJkb3dubG9hZFN0YXR1c1YyID09PSAnRE9XTkxPQURJTkcnXCJcbiAgICAgICAgICBjbGFzcz1cImJ1bGstYnRuLXByb2dyZXNzXCJcbiAgICAgICAgPlxuICAgICAgICAgIERvd25sb2FkIGluIFByb2dyZXNzXG4gICAgICAgICAgPGFwcC1saW5lLWxvYWRlciBbbG9hZGVySGVpZ2h0XT1cIicyJ1wiPjwvYXBwLWxpbmUtbG9hZGVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPCEtLSA8ZGl2ICpuZ0lmPVwiZG93bmxvYWRTdGF0dXNWMiA9PT0gJ0RPV05MT0FERUQnXCIgY2xhc3M9XCJidWxrLWJ0bi1wcm9ncmVzcyBjb21wbGV0ZVwiPjxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTFjOzwvaT5Eb3dubG9hZCBDb21wbGV0ZSAtJm5ic3A7PGJ1dHRvbiAoY2xpY2spPVwiZG93bmxvYWRUZW1wbGF0ZSgndjInKVwiPlJldHJ5IERvd25sb2FkPC9idXR0b24+PC9kaXY+IC0tPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZG93bmxvYWRTdGF0dXNWMiA9PT0gJ0RPV05MT0FERUQnXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImJ1bGstYnRuLXByb2dyZXNzXCI+XG4gICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTkxYzs8L2k+RG93bmxvYWQgQ29tcGxldGVcbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnVsay1idG4tYWdhaW5cIj5cbiAgICAgICAgICAgIElzIHRoZSBmaWxlIG5vdCBkb3dubG9hZGVkP1xuICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiZG93bmxvYWRUZW1wbGF0ZSgndjInKVwiPlJldHJ5IERvd25sb2FkPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDwhLS0gb25seSBmb3Igb2xkIHRlbXBsYXRlIC0tPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImRvd25sb2FkLWJ0blwiXG4gICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgIWZlYXR1cmUuaXNGZWF0dXJlRW5hYmxlZCgnZmZfYnVsa19yZXNwb25zaWJpbGl0eScpICYmXG4gICAgICAgICAgIWZlYXR1cmUuaXNGZWF0dXJlRW5hYmxlZCgnZmZfYm90aF9idWxrX3Jlc3BvbnNpYmlsaXR5JylcbiAgICAgICAgXCJcbiAgICAgID5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGNsYXNzPVwiZG93bmxvYWRcIlxuICAgICAgICAgICpuZ0lmPVwiZG93bmxvYWRTdGF0dXMgPT09ICdOT1RfRE9XTkxPQURJTkcnXCJcbiAgICAgICAgICAoY2xpY2spPVwiZG93bmxvYWRUZW1wbGF0ZSgpXCJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTFiOzwvaT4gRG93bmxvYWQgVGVtcGxhdGVcbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJidWxrLWJ0bi1wcm9ncmVzc1wiICpuZ0lmPVwiZG93bmxvYWRTdGF0dXMgPT09ICdET1dOTE9BRElORydcIj5cbiAgICAgICAgICBEb3dubG9hZCBpbiBQcm9ncmVzc1xuICAgICAgICAgIDxhcHAtbGluZS1sb2FkZXIgW2xvYWRlckhlaWdodF09XCInMidcIj48L2FwcC1saW5lLWxvYWRlcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkb3dubG9hZFN0YXR1cyA9PT0gJ0RPV05MT0FERUQnXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImJ1bGstYnRuLXByb2dyZXNzXCI+XG4gICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTkxYzs8L2k+RG93bmxvYWQgQ29tcGxldGVcbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnVsay1idG4tYWdhaW5cIj5cbiAgICAgICAgICAgIElzIHRoZSBmaWxlIG5vdCBkb3dubG9hZGVkP1xuICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiZG93bmxvYWRUZW1wbGF0ZSgpXCI+UmV0cnkgRG93bmxvYWQ8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxwXG4gICAgICAgIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiXG4gICAgICAgICpuZ0lmPVwiaXNXcm9uZ0ZpbGUgfHwgaXNXcm9uZ0Zvcm1hdCB8fCBpc0ZpbGVFbXB0eVwiXG4gICAgICA+XG4gICAgICAgIHt7IGVycm9yTWVzc2FnZSB9fVxuICAgICAgPC9wPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48aW5wdXRcbiAgdHlwZT1cImZpbGVcIlxuICBbKG5nTW9kZWwpXT1cImZpbGVWYWx1ZVwiXG4gIGlkPVwiZmlsZUlucHV0XCJcbiAgY2xhc3M9XCJoaWRkZW4taW5wdXRcIlxuICBhY2NlcHQ9XCIueGxzeFwiXG4gIChjaGFuZ2UpPVwidXBsb2FkZWRGaWxlKCRldmVudClcIlxuICBtdWx0aXBsZVxuLz5cbjxhcHAtc21pbGV5LWRpYWxvZy1pbmxpbmVcbiAgKm5nSWY9XCJzaG93U21pbGV5XCJcbiAgW21lc3NhZ2VdPVwic21pbGV5TWVzc2FnZVwiXG4gIFthY3Rpb25CdXR0b25zXT1cImFjdGlvbkJ1dHRvbnNcIlxuICAoYWN0aW9uKT1cImFjdGlvbigkZXZlbnQpXCJcbiAgKGNsb3NlU21pbGV5KT1cImNsb3NlU21pbGV5KCRldmVudClcIlxuPjwvYXBwLXNtaWxleS1kaWFsb2ctaW5saW5lPlxuXG48YXBwLWFkZC1tdWx0aXBsZS1yZXNwb25zaWJpbGl0eVxuICAqbmdJZj1cInNpbmdsZVRhYlJlc3BvbnNpYmlsaXR5XCJcbiAgW3VwbG9hZGVkRmlsZV09XCJ1cGxvYWRlZEZpbGVEYXRhXCJcbiAgKGNsb3NlQWRkTXVsdGlwbGVSZXNwb25zaWJpbGl0eSk9XCJjbG9zZUFkZE11bHRpcGxlUmVzcG9uc2liaWxpdHkoJGV2ZW50KVwiXG4gIFtmZWF0dXJlZmxhZ109XCJpc1Jlc3BvbnNpYmlsaXR5U2ltcGxpZmllZFwiXG4gIFtmZWF0dXJlXT1cImZlYXR1cmVcIlxuPjwvYXBwLWFkZC1tdWx0aXBsZS1yZXNwb25zaWJpbGl0eT5cbjxsaWItYWRkLW11bHRpcGxlLXJlc3BvbnNpYmlsaXR5LXdpdGgtdGFiXG4gICpuZ0lmPVwibXVsdGlUYWJSZXNwb25zaWJpbGl0eVwiXG4gIFtvcmdEZXRhaWxzXT1cIm9yZ0RldGFpbHNcIlxuICBbdXBsb2FkZWRGaWxlXT1cInVwbG9hZGVkRmlsZURhdGFcIlxuICAoY2xvc2VBZGRNdWx0aXBsZVJlc3BvbnNpYmlsaXR5KT1cImNsb3NlQWRkTXVsdGlwbGVSZXNwb25zaWJpbGl0eSgkZXZlbnQpXCJcbiAgW2ZlYXR1cmVmbGFnXT1cImlzUmVzcG9uc2liaWxpdHlTaW1wbGlmaWVkXCJcbiAgW2ZlYXR1cmVdPVwiZmVhdHVyZVwiXG4+PC9saWItYWRkLW11bHRpcGxlLXJlc3BvbnNpYmlsaXR5LXdpdGgtdGFiPlxuIl19
@@ -2,7 +2,7 @@ import { Component, Input, Output, EventEmitter, } from '@angular/core';
2
2
  import { cloneDeep } from 'lodash';
3
3
  import * as XLSX from 'xlsx';
4
4
  import moment from 'moment/moment';
5
- import { ASSETS } from '../constants/assessts.constants';
5
+ import { ASSETS } from '../constants/assets.constants';
6
6
  import * as i0 from "@angular/core";
7
7
  import * as i1 from "../workflow-services/add-risk.service";
8
8
  import * as i2 from "../workflow-services/auth.service";
@@ -847,4 +847,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
847
847
  }], disconnectRefresh: [{
848
848
  type: Output
849
849
  }] } });
850
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLW11bHRpcGxlLXJpc2suY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvYWRkLW11bHRpcGxlLXJpc2svYWRkLW11bHRpcGxlLXJpc2suY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvYWRkLW11bHRpcGxlLXJpc2svYWRkLW11bHRpcGxlLXJpc2suY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksR0FLYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ25DLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBTTdCLE9BQU8sTUFBTSxNQUFNLGVBQWUsQ0FBQztBQUVuQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUNBQWlDLENBQUM7Ozs7Ozs7Ozs7Ozs7O0FBUXpELE1BQU0sT0FBTyx3QkFBd0I7SUE2Rm5DLFlBQ1UsV0FBMkIsRUFDM0IsV0FBd0IsRUFDeEIsUUFBeUIsRUFDekIsZ0JBQXNDLEVBQ3RDLGFBQTRCO1FBSjVCLGdCQUFXLEdBQVgsV0FBVyxDQUFnQjtRQUMzQixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixhQUFRLEdBQVIsUUFBUSxDQUFpQjtRQUN6QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQXNCO1FBQ3RDLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBakd0QyxXQUFNLEdBQUcsTUFBTSxDQUFDO1FBRU4sa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ25DLG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNwQyxrQkFBYSxHQUFHLElBQUksWUFB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LElBQUksQ0FBQyxZQUFZLEVBQUU7d0JBQ3ZDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxhQUFhLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFOzRCQUM3QyxNQUFNLE9BQU8sR0FBRyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7NEJBQ2pDLE1BQU0sS0FBSyxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQzs0QkFDN0IsSUFBSSxPQUFPLElBQUksS0FBSyxFQUFFO2dDQUNwQixNQUFNLEdBQUcsR0FBRztvQ0FDVixPQUFPLEVBQUUsT0FBTztvQ0FDaEIsS0FBSyxFQUFFLEtBQUs7aUNBQ2IsQ0FBQztnQ0FDRixJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7NkJBQ3JDO3lCQUNGO3FCQUNGO2lCQUNGO2FBQ0Y7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7K0dBaDdCVSx3QkFBd0I7bUdBQXhCLHdCQUF3Qix5UUMzQnJDLGtnSkFrSUE7OzRGRHZHYSx3QkFBd0I7a0JBTHBDLFNBQVM7K0JBQ0UsdUJBQXVCOzROQU14QixPQUFPO3NCQUFmLEtBQUs7Z0JBQ0ksYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxjQUFjO3NCQUF2QixNQUFNO2dCQUNHLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0csaUJBQWlCO3NCQUExQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBFdmVudEVtaXR0ZXIsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIE9uQ2hhbmdlcyxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIE9uSW5pdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBjbG9uZURlZXAgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0ICogYXMgWExTWCBmcm9tICd4bHN4JztcbmltcG9ydCB7IENhdGVnb3J5TGlzdCB9IGZyb20gJy4uL2ludGVyZmFjZXMvY2F0ZWdvcnlMaXN0JztcbmltcG9ydCB7IFNuYWNrQmFyU2VydmljZSB9IGZyb20gJy4uL3VpLWtpdC9zbmFjay1iYXIvc25hY2stYmFyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQWRkUmlza1NlcnZpY2UgfSBmcm9tICcuLi93b3JrZmxvdy1zZXJ2aWNlcy9hZGQtcmlzay5zZXJ2aWNlJztcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vd29ya2Zsb3ctc2VydmljZXMvYXV0aC5zZXJ2aWNlJztcbmltcG9ydCB7IEZyZXF1ZW5jeUJ1bGtTZXJ2aWNlIH0gZnJvbSAnLi4vd29ya2Zsb3ctc2VydmljZXMvZnJlcXVlbmN5LnNlcnZpY2UnO1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQvbW9tZW50JztcbmltcG9ydCB7IElmcmFtZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9pZnJhbWUuc2VydmljZSc7XG5pbXBvcnQgeyBBU1NFVFMgfSBmcm9tICcuLi9jb25zdGFudHMvYXNzZXNzdHMuY29uc3RhbnRzJztcblxudHlwZSBBT0EgPSBhbnlbXVtdO1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWFkZC1tdWx0aXBsZS1yaXNrJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2FkZC1tdWx0aXBsZS1yaXNrLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYWRkLW11bHRpcGxlLXJpc2suY29tcG9uZW50Lmxlc3MnLCAnLi4vZm9ybXMubGVzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBBZGRNdWx0aXBsZVJpc2tDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIEFTU0VUUyA9IEFTU0VUUztcbiAgQElucHV0KCkgZmVhdHVyZTogYW55O1xuICBAT3V0cHV0KCkgcGlja2VyQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIHBvcHVsYXRlT3B0aW9uID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgY2xvc2VXb3JrZmxvdyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIGRpc2Nvbm5lY3RSZWZyZXNoID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBjYXRlZ29yeUxpc3Q6IENhdGVnb3J5TGlzdCA9IHtcbiAgICBzdHJhdGVnaWM6IHtcbiAgICAgIG5hbWU6ICdTVFJBVEVHSUMnLFxuICAgICAgZGF0YTogW10sXG4gICAgfSxcbiAgICBvcGVyYXRpb25hbDoge1xuICAgICAgbmFtZTogJ09QRVJBVElPTkFMJyxcbiAgICAgIGRhdGE6IFtdLFxuICAgIH0sXG4gICAgY29tcGxpYW5jZToge1xuICAgICAgbmFtZTogJ0NPTVBMSUFOQ0UnLFxuICAgICAgZGF0YTogW10sXG4gICAgfSxcbiAgICBvdGhlcnM6IHtcbiAgICAgIG5hbWU6ICdPVEhFUlMnLFxuICAgICAgZGF0YTogW10sXG4gICAgfSxcbiAgfTtcblxuICBjYXRlZ29yeTogYW55ID0ge1xuICAgIHR5cGU6ICdzdHJhdGVnaWMnLFxuICAgIHNlbGVjdGVkQ2F0ZWdvcnk6ICcnLFxuICB9O1xuXG4gIHJpc2tCdWxrVXBsb2FkOiBhbnkgPSB7XG4gICAgaGVhZGVyOiBbXSxcbiAgICB3ZWlnaHRGYWN0b3JzOiBbXSxcbiAgICByaXNrczogW10sXG4gIH07XG5cbiAgdGVtcGxhdGVJbmZvOiBhbnkgPSB7XG4gICAgbWVtYmVySWQ6ICcnLFxuICAgIGNhdGVnb3J5SWQ6ICcnLFxuICAgIG93bmVyTGlzdDogW10sXG4gICAgcmNMaXN0OiBbXSxcbiAgICBncmNMaXN0OiBbXSxcbiAgICBtaXRpZ2F0aW9uTGlzdDogW10sXG4gICAgbGlrZWxpaG9vZDogW10sXG4gICAgaW1wYWN0OiBbXSxcbiAgICB2ZWxvY2l0eTogW10sXG4gICAgdnVsbmVyYWJpbGl0eTogW10sXG4gIH07XG5cbiAgaXNMb2FkZXIgPSBmYWxzZTtcbiAgc2hvd0NhdGVnb3J5TGlzdCA9IGZhbHNlO1xuICB0ZW1wbGF0ZURvd25sb2FkZWQgPSBmYWxzZTtcbiAgZG93bmxvYWRJblByb2dyZXNzID0gZmFsc2U7XG4gIGxvYWRlciA9IGZhbHNlO1xuICBzZXR0aW5nc0luZm8hOiBhbnk7XG4gIGlzRmlsZUVtcHR5ID0gZmFsc2U7XG4gIGlzV3JvbmdGaWxlID0gZmFsc2U7XG4gIGlzV3JvbmdGb3JtYXQgPSBmYWxzZTtcbiAgZmlsZU5hbWU6IGFueTtcbiAgZGF0YTogYW55O1xuICBhc3Nlc3NtZW50RGVhZExpbmU6IGFueTtcbiAgc2hvd0V4Y2VsID0gZmFsc2U7XG4gIGZpbGVWYWx1ZTogYW55O1xuICBtZW1iZXJJZCA9IDA7XG4gIG9yZ2FuaXphdGlvbklkID0gMDtcbiAgZXJyb3JNZXNzYWdlID0gJyBpbnZhbGlkIGZpbGUgZXJyb3InO1xuICBkb3dubG9hZFN0YXR1czogc3RyaW5nID0gJ05PVF9ET1dOTE9BRElORyc7XG4gIGRvd25sb2FkUGVyY2VudCA9IDA7XG4gIGZmTGlua2VkR3JjT2JqZWN0czogYm9vbGVhbiA9IGZhbHNlO1xuICBzZWxlY3RlZFJjSWQ6IG51bWJlciA9IDA7XG4gIHNlbGVjdGVkUmNOYW1lOiBzdHJpbmcgPSAnJztcbiAgc2VsZWN0ZWRHcmNOYW1lOiBzdHJpbmcgPSAnJztcbiAgY29sdW1uV2lzZURhdGE6IGFueSA9IFtdO1xuXG4gIHNtaWxleU1lc3NhZ2UgPSBgWW91J3JlIEFsbCBTZXQhIFdlJ3JlIHVwbG9hZGluZyB0aGUgcmlza3MuIFRoZSByaXNrIG93bmVycyB3aWxsIGJlIG5vdGlmaWVkIG9uY2UgdGhlIHJpc2tzIGhhdmUgYmVlbiB1cGxvYWRlZC5gO1xuICBhY3Rpb25CdXR0b25zID0gW1xuICAgIHsgYnV0dG9uVGV4dDogJ0FkZCBNb3JlIFJpc2tzJywgY2xhc3M6ICd3aGl0ZS1idG4nLCBpZDogJ2FkZE1vcmUnIH0sXG4gICAgeyBidXR0b25UZXh0OiAnVmlldyBSaXNrJywgY2xhc3M6ICdibHVlLWJ0bicsIGlkOiAndmlld1Jpc2tzJyB9LFxuICBdO1xuICBzaG93U21pbGV5ID0gZmFsc2U7XG4gIG1lbWJlcl9vYmpfaWQgPSAnJztcbiAgZGVmYXVsdE93bmVyID0gJyc7XG4gIHJpc2tEYXRhITogYW55O1xuICBmcmVxdWVuY3lUeXBlID0gW1xuICAgICd3ZWVrbHknLFxuICAgICdtb250aGx5JyxcbiAgICAncXVhcnRlcmx5JyxcbiAgICAnYmlhbm51YWwnLFxuICAgICdhbm51YWwnLFxuICAgICdvbmUgdGltZScsXG4gIF07XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByaXNrU2VydmljZTogQWRkUmlza1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzbmFja0JhcjogU25hY2tCYXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgZnJlcXVlbmN5U2VydmljZTogRnJlcXVlbmN5QnVsa1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBpZnJhbWVTZXJ2aWNlOiBJZnJhbWVTZXJ2aWNlXG4gICkge31cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7fVxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnBpY2tlckNoYW5nZWQuZW1pdChmYWxzZSk7XG4gICAgdGhpcy5nZXRTZXR0aW5nc0luZm8oKTtcblxuICAgIHRoaXMub3JnYW5pemF0aW9uSWQgPSB0aGlzLmF1dGhTZXJ2aWNlLmdldE9yZ2FuaXphdGlvbklkKCk7XG4gICAgdGhpcy5tZW1iZXJJZCA9IHRoaXMuYXV0aFNlcnZpY2UuZ2V0TWVtYmVySWQoKTtcbiAgICB0aGlzLm1lbWJlcl9vYmpfaWQgPSB0aGlzLmF1dGhTZXJ2aWNlLmdldFVzZXJEZXRhaWxzKCkuX2lkO1xuICAgIHRoaXMuc2V0RmVhdHVyZUZsYWcoKTtcbiAgfVxuICBnZXRDYXRlZ29yeUxpc3QoKSB7XG4gICAgdGhpcy5zaG93Q2F0ZWdvcnlMaXN0ID0gdHJ1ZTtcbiAgICB0aGlzLnBpY2tlckNoYW5nZWQuZW1pdCh0cnVlKTtcbiAgICB0aGlzLmlzTG9hZGVyID0gdHJ1ZTtcbiAgICB0aGlzLnJpc2tTZXJ2aWNlLmdldENhdGVnb3J5TGlzdCgpLnN1YnNjcmliZShcbiAgICAgIChyZXM6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmlzTG9hZGVyID0gZmFsc2U7XG4gICAgICAgIHRoaXMuY2F0ZWdvcnlMaXN0LnN0cmF0ZWdpYy5kYXRhID0gcmVzLnN0cmF0ZWdpY19hcnI7XG4gICAgICAgIHRoaXMuY2F0ZWdvcnlMaXN0Lm9wZXJhdGlvbmFsLmRhdGEgPSByZXMub3BlcmF0aW9uYWxfYXJyO1xuICAgICAgICB0aGlzLmNhdGVnb3J5TGlzdC5jb21wbGlhbmNlLmRhdGEgPSByZXMuY29tcGxpYW5jZV9hcnI7XG4gICAgICAgIHRoaXMuY2F0ZWdvcnlMaXN0Lm90aGVycy5kYXRhID0gcmVzLm90aGVyc19hcnI7XG4gICAgICB9LFxuICAgICAgKGVycikgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICAgIHRoaXMuaXNMb2FkZXIgPSBmYWxzZTtcbiAgICAgIH1cbiAgICApO1xuICB9XG4gIHNhdmVTZWxlY3RlZENhdGVnb3J5KGNhdGVnb3J5OiBhbnkpIHtcbiAgICBpZiAoXG4gICAgICB0aGlzLmNhdGVnb3J5Py5zZWxlY3RlZENhdGVnb3J5Py5jYXRlZ29yeV9pZCAhPVxuICAgICAgY2F0ZWdvcnk/LnNlbGVjdGVkQ2F0ZWdvcnk/LmNhdGVnb3J5X2lkXG4gICAgKSB7XG4gICAgICB0aGlzLmRvd25sb2FkU3RhdHVzID0gJ05PVF9ET1dOTE9BRElORyc7XG4gICAgfVxuICAgIHRoaXMuc2hvd0NhdGVnb3J5TGlzdCA9IGZhbHNlO1xuICAgIHRoaXMuY2F0ZWdvcnkgPSBjYXRlZ29yeTtcbiAgICBjb25zdCByZWZlcmVuY2UgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjc2Nyb2xsUmVmZXJlbmNlJyk7XG4gICAgaWYgKHJlZmVyZW5jZSkge1xuICAgICAgcmVmZXJlbmNlLnNjcm9sbEludG9WaWV3KHsgYmVoYXZpb3I6ICdzbW9vdGgnLCBibG9jazogJ2NlbnRlcicgfSk7XG4gICAgfVxuICAgIHRoaXMucmVzZXQoKTtcbiAgfVxuICByZW1vdmVDYXRlZ29yeSgpIHtcbiAgICB0aGlzLmNhdGVnb3J5ID0ge1xuICAgICAgdHlwZTogJ3N0cmF0ZWdpYycsXG4gICAgICBzZWxlY3RlZENhdGVnb3J5OiAnJyxcbiAgICB9O1xuICAgIHRoaXMucmVzZXQoKTtcbiAgfVxuICBnZXRTZXR0aW5nc0luZm8oKSB7XG4gICAgdGhpcy5yaXNrU2VydmljZS5nZXRSaXNrU2V0dGluZ0RldGFpbHMoKS5zdWJzY3JpYmUoXG4gICAgICAocmVzKSA9PiB7XG4gICAgICAgIHRoaXMuc2V0dGluZ3NJbmZvID0gcmVzO1xuICAgICAgfSxcbiAgICAgIChlcnIpID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgICAgfVxuICAgICk7XG4gIH1cbiAgdHJpZ2dlckJyb3dzZUZpbGUoKSB7XG4gICAgY29uc3QgZ2V0RmlsZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmaWxlSW5wdXQnKTtcbiAgICBpZiAoZ2V0RmlsZSkge1xuICAgICAgZ2V0RmlsZS5jbGljaygpO1xuICAgIH1cbiAgfVxuXG4gIHVwbG9hZGVkRmlsZShldmVudDogYW55KSB7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMucmlza0J1bGtVcGxvYWQgPSB7XG4gICAgICAgIGhlYWRlcjogW10sXG4gICAgICAgIHdlaWdodEZhY3RvcnM6IFtdLFxuICAgICAgICByaXNrczogW10sXG4gICAgICB9O1xuICAgICAgdGhpcy50ZW1wbGF0ZUluZm8gPSB7XG4gICAgICAgIG1lbWJlcklkOiAnJyxcbiAgICAgICAgY2F0ZWdvcnlJZDogJycsXG4gICAgICAgIG93bmVyTGlzdDogW10sXG4gICAgICAgIHJjTGlzdDogW10sXG4gICAgICAgIGdyY0xpc3Q6IFtdLFxuICAgICAgICBtaXRpZ2F0aW9uTGlzdDogW10sXG4gICAgICAgIGxpa2VsaWhvb2Q6IFtdLFxuICAgICAgICBpbXBhY3Q6IFtdLFxuICAgICAgICB2ZWxvY2l0eTogW10sXG4gICAgICAgIHZ1bG5lcmFiaWxpdHk6IFtdLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IHJlZmVyZW5jZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNzY3JvbGxSZWZlcmVuY2UnKTtcbiAgICAgIGlmIChyZWZlcmVuY2UpIHtcbiAgICAgICAgcmVmZXJlbmNlLnNjcm9sbEludG9WaWV3KHsgYmVoYXZpb3I6ICdzbW9vdGgnLCBibG9jazogJ2NlbnRlcicgfSk7XG4gICAgICB9XG4gICAgICB0aGlzLmlzRmlsZUVtcHR5ID0gZmFsc2U7XG4gICAgICB0aGlzLmlzV3JvbmdGaWxlID0gZmFsc2U7XG4gICAgICB0aGlzLmlzV3JvbmdGb3JtYXQgPSBmYWxzZTtcbiAgICAgIHRoaXMuZmlsZU5hbWUgPSBldmVudC50YXJnZXQuZmlsZXNbMF0ubmFtZTtcblxuICAgICAgY29uc3QgdGFyZ2V0OiBEYXRhVHJhbnNmZXIgPSBldmVudC50YXJnZXQgYXMgRGF0YVRyYW5zZmVyO1xuICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBjdXJseVxuICAgICAgaWYgKHRhcmdldC5maWxlcy5sZW5ndGggIT09IDEpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IHVzZSBtdWx0aXBsZSBmaWxlcycpO1xuICAgICAgY29uc3QgcmVhZGVyOiBGaWxlUmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcbiAgICAgIHJlYWRlci5vbmxvYWQgPSAoZTogYW55KSA9PiB7XG4gICAgICAgIGNvbnN0IGJzdHI6IHN0cmluZyA9IGUudGFyZ2V0LnJlc3VsdDtcbiAgICAgICAgY29uc3Qgd2I6IFhMU1guV29ya0Jvb2sgPSBYTFNYLnJlYWQoYnN0ciwgeyB0eXBlOiAnYmluYXJ5JyB9KTtcbiAgICAgICAgY29uc3Qgd3NuYW1lOiBzdHJpbmcgPSB3Yi5TaGVldE5hbWVzWzBdO1xuICAgICAgICBjb25zdCB3c25hbWUxOiBzdHJpbmcgPSB3Yi5TaGVldE5hbWVzWzFdO1xuXG4gICAgICAgIGNvbnN0IHdzOiBYTFNYLldvcmtTaGVldCA9IHdiLlNoZWV0c1t3c25hbWVdO1xuICAgICAgICBjb25zdCB0ZW1wRGF0YTogWExTWC5Xb3JrU2hlZXQgPSB3Yi5TaGVldHNbd3NuYW1lMV07XG5cbiAgICAgICAgdGhpcy5kYXRhID0gWExTWC51dGlscy5zaGVldF90b19qc29uKHdzLCB7XG4gICAgICAgICAgaGVhZGVyOiAxLFxuICAgICAgICB9KSBhcyBBT0E7XG5cbiAgICAgICAgY29uc3QgdERhdGEgPSBYTFNYLnV0aWxzLnNoZWV0X3RvX2pzb24odGVtcERhdGEsIHsgaGVhZGVyOiAxIH0pIGFzIEFPQTtcbiAgICAgICAgY29uc3QgdGVtcExpc3QgPSB0RGF0YS5maWx0ZXIoXG4gICAgICAgICAgKGRhdGFFbGVtZW50OiBhbnkpID0+IGRhdGFFbGVtZW50Lmxlbmd0aCA+IDBcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLmNvbHVtbldpc2VEYXRhID0gdGhpcy5nZXRDb2x1bW5XaXNlRGF0YSh0RGF0YSk7XG4gICAgICAgIHRoaXMudGVtcGxhdGVJbmZvLm1lbWJlcklkID0gdGVtcExpc3RbMF1bMjddO1xuICAgICAgICB0aGlzLnRlbXBsYXRlSW5mby5jYXRlZ29yeUlkID0gdGVtcExpc3RbMF1bMjZdO1xuICAgICAgICB0aGlzLnJpc2tCdWxrVXBsb2FkLmhlYWRlciA9IGNsb25lRGVlcChcbiAgICAgICAgICB0aGlzLmRhdGFbNF0uZmlsdGVyKChkYXRhRWxlbWVudDogYW55KSA9PiBkYXRhRWxlbWVudC5sZW5ndGggPiAwKVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMucmlza0J1bGtVcGxvYWQud2VpZ2h0RmFjdG9ycyA9IGNsb25lRGVlcChcbiAgICAgICAgICB0aGlzLmRhdGFbNV0uZmlsdGVyKCh3ZWlnaHRGYWN0b3I6IGFueSkgPT4gd2VpZ2h0RmFjdG9yLmxlbmd0aCA+IDApXG4gICAgICAgICk7XG5cbiAgICAgICAgdGVtcExpc3QuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xuICAgICAgICAgIGlmIChlbGVtZW50WzhdKSB7XG4gICAgICAgICAgICBjb25zdCBtZW1iZXIgPSB7XG4gICAgICAgICAgICAgIG5hbWU6IGVsZW1lbnRbOF0sXG4gICAgICAgICAgICAgIG1lbWJlcl9pZDogZWxlbWVudFs5XSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICB0aGlzLnRlbXBsYXRlSW5mby5vd25lckxpc3QucHVzaChtZW1iZXIpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoZWxlbWVudFsyXSkge1xuICAgICAgICAgICAgY29uc3QgbWl0aWdhdGlvbiA9IHtcbiAgICAgICAgICAgICAgbWl0aWdhdGlvbk5hbWU6IGVsZW1lbnRbMl0sXG4gICAgICAgICAgICAgIG1pdGlnYXRpb25faWQ6IGVsZW1lbnRbM10sXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdGhpcy50ZW1wbGF0ZUluZm8ubWl0aWdhdGlvbkxpc3QucHVzaChtaXRpZ2F0aW9uKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGVsZW1lbnRbNl0pIHtcbiAgICAgICAgICAgIGNvbnN0IHJjID0ge1xuICAgICAgICAgICAgICByY05hbWU6IGVsZW1lbnRbNl0sXG4gICAgICAgICAgICAgIHJjX2lkOiBlbGVtZW50WzddLFxuICAgICAgICAgICAgICBvd25lcl9pZHM6IGVsZW1lbnRbMTFdLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHRoaXMudGVtcGxhdGVJbmZvLnJjTGlzdC5wdXNoKHJjKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoZWxlbWVudFsxMl0pIHtcbiAgICAgICAgICAgIHRoaXMudGVtcGxhdGVJbmZvPy5saWtlbGlob29kLnB1c2goZWxlbWVudFsxMl0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoZWxlbWVudFsxM10pIHtcbiAgICAgICAgICAgIHRoaXMudGVtcGxhdGVJbmZvPy5pbXBhY3QucHVzaChlbGVtZW50WzEzXSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIHRoaXMucmlza0J1bGtVcGxvYWQ/LndlaWdodEZhY3RvcnM/LmluY2x1ZGVzKCdWZWxvY2l0eScpICYmXG4gICAgICAgICAgICBlbGVtZW50WzE0XVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy50ZW1wbGF0ZUluZm8udmVsb2NpdHkucHVzaChlbGVtZW50WzE0XSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIHRoaXMucmlza0J1bGtVcGxvYWQ/LndlaWdodEZhY3RvcnM/LmluY2x1ZGVzKCdWdWxuZXJhYmlsaXR5JykgJiZcbiAgICAgICAgICAgIGVsZW1lbnRbMTVdXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLnRlbXBsYXRlSW5mby52dWxuZXJhYmlsaXR5LnB1c2goZWxlbWVudFsxNV0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKHRoaXMuZmlsZU5hbWUuc3Vic3RyKC01KSAhPT0gJy54bHN4Jykge1xuICAgICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID1cbiAgICAgICAgICAgICdUaGUgaW5jb3JyZWN0IGZpbGUgaGFzIGJlZW4gdXBsb2FkZWQuIFBsZWFzZSB1cGxvYWQgdGhlIHRlbXBsYXRlIGZpbGUgZm9yIFJpc2sgQ2F0ZWdvcnk6JyArXG4gICAgICAgICAgICB0aGlzLmNhdGVnb3J5LnNlbGVjdGVkQ2F0ZWdvcnkuY2F0ZWdvcnlfbmFtZSArXG4gICAgICAgICAgICAnIFJFVFJZJztcblxuICAgICAgICAgIHRoaXMuaXNXcm9uZ0ZpbGUgPSB0cnVlO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChcbiAgICAgICAgICB0aGlzLnJpc2tCdWxrVXBsb2FkLmhlYWRlclswXSAhPT1cbiAgICAgICAgICAnV2hhdCByaXNrIHdvdWxkIHlvdSBsaWtlIHRvIG1hbmFnZT8qJ1xuICAgICAgICApIHtcbiAgICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSA9XG4gICAgICAgICAgICAnVGhlIGluY29ycmVjdCBmaWxlIGhhcyBiZWVuIHVwbG9hZGVkLiBQbGVhc2UgdXBsb2FkIHRoZSB0ZW1wbGF0ZSBmaWxlIGZvciBSaXNrIENhdGVnb3J5OicgK1xuICAgICAgICAgICAgdGhpcy5jYXRlZ29yeS5zZWxlY3RlZENhdGVnb3J5LmNhdGVnb3J5X25hbWUgK1xuICAgICAgICAgICAgJyBSRVRSWSc7XG5cbiAgICAgICAgICB0aGlzLmlzV3JvbmdGaWxlID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5pc1dyb25nRm9ybWF0ID0gdHJ1ZTtcblxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmRhdGEgPSB0aGlzLmRhdGE/LnNsaWNlKDcpO1xuICAgICAgICBjb25zdCBkZWZhdWx0T3duZXIgPSB0aGlzLnRlbXBsYXRlSW5mbz8ub3duZXJMaXN0Py5maW5kSW5kZXgoXG4gICAgICAgICAgKGVsZTogYW55KSA9PiBlbGU/Lm1lbWJlcl9pZCA9PSB0aGlzLm1lbWJlcklkXG4gICAgICAgICk7XG4gICAgICAgIGlmIChkZWZhdWx0T3duZXIgIT0gLTEpIHtcbiAgICAgICAgICB0aGlzLmRlZmF1bHRPd25lciA9IHRoaXMudGVtcGxhdGVJbmZvLm93bmVyTGlzdFtkZWZhdWx0T3duZXJdLm5hbWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPVxuICAgICAgICAgICAgJ1RoZSBpbmNvcnJlY3QgZmlsZSBoYXMgYmVlbiB1cGxvYWRlZC4gUGxlYXNlIHVwbG9hZCB0aGUgdGVtcGxhdGUgZmlsZSBmb3IgUmlzayBDYXRlZ29yeTonICtcbiAgICAgICAgICAgIHRoaXMuY2F0ZWdvcnkuc2VsZWN0ZWRDYXRlZ29yeS5jYXRlZ29yeV9uYW1lICtcbiAgICAgICAgICAgICcgUkVUUlknO1xuICAgICAgICAgIHRoaXMuaXNXcm9uZ0ZpbGUgPSB0cnVlO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChcbiAgICAgICAgICB0aGlzLm1lbWJlcl9vYmpfaWQgIT0gdGhpcy50ZW1wbGF0ZUluZm8ubWVtYmVySWQgfHxcbiAgICAgICAgICB0aGlzLmNhdGVnb3J5LnNlbGVjdGVkQ2F0ZWdvcnkuX2lkICE9IHRoaXMudGVtcGxhdGVJbmZvLmNhdGVnb3J5SWRcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPVxuICAgICAgICAgICAgJ1RoZSBpbmNvcnJlY3QgZmlsZSBoYXMgYmVlbiB1cGxvYWRlZC4gUGxlYXNlIHVwbG9hZCB0aGUgdGVtcGxhdGUgZmlsZSBmb3IgUmlzayBDYXRlZ29yeTonICtcbiAgICAgICAgICAgIHRoaXMuY2F0ZWdvcnkuc2VsZWN0ZWRDYXRlZ29yeS5jYXRlZ29yeV9uYW1lICtcbiAgICAgICAgICAgICcgUkVUUlknO1xuXG4gICAgICAgICAgdGhpcy5pc1dyb25nRmlsZSA9IHRydWU7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaXNFbXB0eSA9IHRoaXMuY2hlY2tFbXB0eUZpbGUoKTtcbiAgICAgICAgaWYgKGlzRW1wdHkpIHtcbiAgICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSA9XG4gICAgICAgICAgICAnWW91IGhhdmUgdXBsb2FkZWQgYSBibGFuayB0ZW1wbGF0ZS4gUGxlYXNlIGFkZCBkZXRhaWxzIGZvciBhbGwgbWFuZGF0b3J5IGZpZWxkcy4gUkVUUlknO1xuICAgICAgICAgIHRoaXMuaXNGaWxlRW1wdHkgPSB0cnVlO1xuICAgICAgICAgIHRoaXMuaXNXcm9uZ0ZpbGUgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLmlzV3JvbmdGb3JtYXQgPSBmYWxzZTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKHRoaXMucmlza0J1bGtVcGxvYWQuaGVhZGVyWzZdID09PSAnUmlzayBBc3Nlc3NtZW50IERlYWRsaW5lKicpIHtcbiAgICAgICAgICAgIHRoaXMuYXNzZXNzbWVudERlYWRMaW5lID0gdHJ1ZTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5hc3Nlc3NtZW50RGVhZExpbmUgPSBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5pc0ZpbGVFbXB0eSA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuaXNXcm9uZ0ZpbGUgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLmlzV3JvbmdGb3JtYXQgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLmZpbGVWYWx1ZSA9ICcnO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJpc2tEYXRhID0gdGhpcy5kYXRhLmZpbHRlcihcbiAgICAgICAgICAoZGF0YUVsZW1lbnQ6IGFueSkgPT4gZGF0YUVsZW1lbnQubGVuZ3RoID4gMFxuICAgICAgICApO1xuXG4gICAgICAgIHJpc2tEYXRhLmZvckVhY2goKHJpc2s6IGFueSwgaW5kZXg6IGFueSkgPT4ge1xuICAgICAgICAgIC8vIGNvbnN0IG9iajogYW55ID0ge1xuICAgICAgICAgIC8vICAgcmlza05hbWU6IHJpc2tbMF0gPz8gJycsXG4gICAgICAgICAgLy8gICBkZXNjcmlwdGlvbjogcmlza1sxXSA/PyAnJyxcbiAgICAgICAgICAvLyAgIHJjTmFtZTogcmlza1syXSA/PyAnJyxcbiAgICAgICAgICAvLyAgIG93bmVyOiByaXNrWzNdID8/ICcnLFxuICAgICAgICAgIC8vICAgbWl0aWdhdGlvblByaW9yaXR5OiByaXNrWzRdID8/ICcnLFxuICAgICAgICAgIC8vICAgb3ZlcnNlZXI6IHJpc2tbNV0gPz8gJycsXG4gICAgICAgICAgLy8gICBpc1ZhbGlkOiB0aGlzLmNoZWNrVmFsaWRpdHkocmlzayksXG4gICAgICAgICAgLy8gfVxuXG4gICAgICAgICAgLy8gaWYgKHRoaXMuYXNzZXNzbWVudERlYWRMaW5lKSB7XG4gICAgICAgICAgLy8gICBvYmouYXNzZXNzbWVudERlYWRMaW5lID0gcmlza1s2XSA/PyAnJztcbiAgICAgICAgICAvLyAgIG9iai5saWtlbGlob29kID0gcmlza1s3XSA/PyAnJztcbiAgICAgICAgICAvLyAgIG9iai5pbXBhY3QgPSByaXNrWzhdID8/ICcnO1xuICAgICAgICAgIC8vICAgaWYgKHRoaXMucmlza0J1bGtVcGxvYWQud2VpZ2h0RmFjdG9ycy5sZW5ndGggPT0gMykge1xuICAgICAgICAgIC8vICAgICBvYmoudmVsb2NpdHkgPSByaXNrWzldID8/ICcnO1xuICAgICAgICAgIC8vICAgfVxuICAgICAgICAgIC8vICAgaWYgKHRoaXMucmlza0J1bGtVcGxvYWQud2VpZ2h0RmFjdG9ycy5sZW5ndGggPT0gNCkge1xuICAgICAgICAgIC8vICAgICBvYmoudmVsb2NpdHkgPSByaXNrWzldID8/ICcnO1xuICAgICAgICAgIC8vICAgICBvYmoudnVsbmVyYWJpbGl0eSA9IHJpc2tbMTBdID8/ICcnO1xuICAgICAgICAgIC8vICAgfVxuICAgICAgICAgIC8vICAgY29uc3QgY3VzdG9tVGFnczogYW55ID0gW107XG5cbiAgICAgICAgICAvLyAgIHRoaXMuY2F0ZWdvcnkuc2VsZWN0ZWRDYXRlZ29yeS5jdXN0b21fdGFnLmZvckVhY2goKHRhZzogYW55LCBpbmRleDogYW55KSA9PiB7XG4gICAgICAgICAgLy8gICAgIGlmICh0YWcpIHtcbiAgICAgICAgICAvLyAgICAgICBjb25zdCBjVGFnID0ge1xuICAgICAgICAgIC8vICAgICAgICAgY3VzdG9tX3RhZ192YWx1ZTogcmlza1s3ICsgdGhpcy5yaXNrQnVsa1VwbG9hZC53ZWlnaHRGYWN0b3JzLmxlbmd0aCArIGluZGV4XSA/PyAnJyxcbiAgICAgICAgICAvLyAgICAgICAgIGN1c3RvbV90YWdfbmFtZTogdGFnLnRhZ05hbWVcbiAgICAgICAgICAvLyAgICAgICB9O1xuICAgICAgICAgIC8vICAgICAgIGN1c3RvbVRhZ3MucHVzaChjVGFnKTtcbiAgICAgICAgICAvLyAgICAgfVxuICAgICAgICAgIC8vICAgfSk7XG4gICAgICAgICAgLy8gICBvYmouY3VzdG9tVGFnID0gY3VzdG9tVGFncztcbiAgICAgICAgICAvLyB9IGVsc2Uge1xuICAgICAgICAgIC8vICAgb2JqLmxpa2VsaWhvb2QgPSByaXNrWzZdID8/ICcnO1xuICAgICAgICAgIC8vICAgb2JqLmltcGFjdCA9IHJpc2tbN10gPz8gJyc7XG5cbiAgICAgICAgICAvLyAgIGlmICh0aGlzLnJpc2tCdWxrVXBsb2FkLndlaWdodEZhY3RvcnMubGVuZ3RoID09IDMpIHtcbiAgICAgICAgICAvLyAgICAgb2JqLnZlbG9jaXR5ID0gcmlza1s4XSA/PyAnJztcbiAgICAgICAgICAvLyAgIH1cbiAgICAgICAgICAvLyAgIGlmICh0aGlzLnJpc2tCdWxrVXBsb2FkLndlaWdodEZhY3RvcnMubGVuZ3RoID09IDQpIHtcbiAgICAgICAgICAvLyAgICAgb2JqLnZlbG9jaXR5ID0gcmlza1s4XSA/PyAnJztcbiAgICAgICAgICAvLyAgICAgb2JqLnZ1bG5lcmFiaWxpdHkgPSByaXNrWzldID8/ICcnO1xuICAgICAgICAgIC8vICAgfVxuICAgICAgICAgIC8vICAgY29uc3QgY3VzdG9tVGFnczogYW55ID0gW107XG4gICAgICAgICAgLy8gICB0aGlzLmNhdGVnb3J5LnNlbGVjdGVkQ2F0ZWdvcnkuY3VzdG9tX3RhZy5mb3JFYWNoKCh0YWc6IGFueSwgaW5kZXg6IGFueSkgPT4ge1xuICAgICAgICAgIC8vICAgICBpZiAodGFnKSB7XG4gICAgICAgICAgLy8gICAgICAgY29uc3QgY1RhZyA9IHtcbiAgICAgICAgICAvLyAgICAgICAgIGN1c3RvbV90YWdfdmFsdWU6IHJpc2tbNiArIHRoaXMucmlza0J1bGtVcGxvYWQud2VpZ2h0RmFjdG9ycy5sZW5ndGggKyBpbmRleF0gPz8gJycsXG4gICAgICAgICAgLy8gICAgICAgICBjdXN0b21fdGFnX25hbWU6IHRhZy50YWdOYW1lXG4gICAgICAgICAgLy8gICAgICAgfTtcbiAgICAgICAgICAvLyAgICAgICBjdXN0b21UYWdzLnB1c2goY1RhZyk7XG4gICAgICAgICAgLy8gICAgIH1cbiAgICAgICAgICAvLyAgIH0pO1xuICAgICAgICAgIC8vICAgb2JqLmN1c3RvbVRhZyA9IGN1c3RvbVRhZ3M7XG4gICAgICAgICAgLy8gfVxuICAgICAgICAgIGxldCBvYmogPSB0aGlzLnNldFJpc2tEZXRhaWxzKHJpc2spO1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIG9iaj8ubGlrZWxpaG9vZCAmJlxuICAgICAgICAgICAgIXRoaXMudGVtcGxhdGVJbmZvPy5saWtlbGlob29kLmluY2x1ZGVzKG9iaj8ubGlrZWxpaG9vZClcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIG9iai5pc1ZhbGlkID0gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChvYmo/LmltcGFjdCAmJiAhdGhpcy50ZW1wbGF0ZUluZm8/LmltcGFjdC5pbmNsdWRlcyhvYmo/LmltcGFjdCkpIHtcbiAgICAgICAgICAgIG9iai5pc1ZhbGlkID0gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIG9iaj8udmVsb2NpdHkgJiZcbiAgICAgICAgICAgICF0aGlzLnRlbXBsYXRlSW5mbz8udmVsb2NpdHkuaW5jbHVkZXMob2JqPy52ZWxvY2l0eSlcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIG9iai5pc1ZhbGlkID0gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIG9iaj8udnVsbmVyYWJpbGl0eSAmJlxuICAgICAgICAgICAgIXRoaXMudGVtcGxhdGVJbmZvPy52dWxuZXJhYmlsaXR5LmluY2x1ZGVzKG9iaj8udnVsbmVyYWJpbGl0eSlcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIG9iai5pc1ZhbGlkID0gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICAgIG9iai5pc0dyY05vdFZhbGlkID0gdGhpcy52YWxpZGF0ZUdyY09iamVjdEZvclJjKFxuICAgICAgICAgICAgb2JqLnJjTmFtZSxcbiAgICAgICAgICAgIG9iai5saW5rZWRHcmNPYmplY3RcbiAgICAgICAgICApO1xuICAgICAgICAgIGlmIChvYmouaXNHcmNOb3RWYWxpZCkge1xuICAgICAgICAgICAgb2JqLmlzVmFsaWQgPSBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5yaXNrQnVsa1VwbG9hZC5yaXNrcy5wdXNoKG9iaik7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmdldEdyY0xpc3QoKTtcbiAgICAgICAgdGhpcy5pc0ZpbGVFbXB0eSA9IGZhbHNlO1xuICAgICAgICB0aGlzLmlzV3JvbmdGaWxlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuaXNXcm9uZ0Zvcm1hdCA9IGZhbHNlO1xuICAgICAgICB0aGlzLnNob3dFeGNlbCA9IHRydWU7XG4gICAgICB9O1xuICAgICAgcmVhZGVyLnJlYWRBc0JpbmFyeVN0cmluZyh0YXJnZXQ/LmZpbGVzWzBdKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgIH1cbiAgfVxuXG4gIGNoZWNrRW1wdHlGaWxlKCkge1xuICAgIGxldCBpc0VtcHR5ID0gZmFsc2U7XG4gICAgdGhpcy5kYXRhID0gdGhpcy5kYXRhLmZpbHRlcigoZGF0YUVsZW1lbnQ6IGFueSkgPT4gZGF0YUVsZW1lbnQubGVuZ3RoID4gMCk7XG4gICAgaWYgKHRoaXMuZGF0YS5sZW5ndGggPCAxKSB7XG4gICAgICBpc0VtcHR5ID0gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGlzRW1wdHk7XG4gIH1cblxuICBjaGVja1ZhbGlkaXR5KHJpc2s6IGFueSkge1xuICAgIGNvbnN0IHJlID0gLyZuYnNwO3w8YnI+L2c7XG4gICAgbGV0IHRyaW1tZWROYW1lID0gcmlza1swXSA/IHJpc2tbMF0udG9TdHJpbmcoKS5yZXBsYWNlKHJlLCAnJykudHJpbSgpIDogJyc7XG4gICAgdHJpbW1lZE5hbWUgPSB0cmltbWVkTmFtZS5yZXBsYWNlKC8gICsvZywgJyAnKTtcbiAgICAvLyB8fCAodGhpcy5hc3Nlc3NtZW50RGVhZExpbmUgJiYgKCFyaXNrWzZdKSlcbiAgICBpZiAoXG4gICAgICAhdHJpbW1lZE5hbWUgfHxcbiAgICAgIChyaXNrWzNdICYmIHJpc2tbM10gPT0gcmlza1s3XSkgfHxcbiAgICAgICghcmlza1szXSAmJiB0aGlzLmRlZmF1bHRPd25lciA9PSByaXNrWzddKSB8fFxuICAgICAgIXJpc2tbMl0gfHxcbiAgICAgICF0aGlzLmZyZXF1ZW5jeVR5cGU/LmluY2x1ZGVzKHJpc2tbNV0/LnRvTG93ZXJDYXNlKCkpXG4gICAgKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIGRvd25sb2FkVGVtcGxhdGUoKSB7XG4gICAgdGhpcy5kb3dubG9hZFN0YXR1cyA9ICdET1dOTE9BRElORyc7XG4gICAgdGhpcy5kb3dubG9hZFBlcmNlbnQgPSAwO1xuICAgIGNvbnN0IHRvZGF5ID0gbmV3IERhdGUoKS50b0lTT1N0cmluZygpLnNwbGl0KCdUJyk7XG4gICAgY29uc3QgZG93bmxvYWREYXRlID0gdG9kYXlbMF07XG4gICAgY29uc3QgZmlsZU5hbWUgPVxuICAgICAgJ1ZDb21wbHkgLSBSaXNrIE1vZHVsZSAtIEFkZCBNdWx0aXBsZSBSaXNrcyAtICcgK1xuICAgICAgdGhpcy5jYXRlZ29yeT8uc2VsZWN0ZWRDYXRlZ29yeT8uY2F0ZWdvcnlfbmFtZSArXG4gICAgICAnIC0gJyArXG4gICAgICBkb3dubG9hZERhdGUgK1xuICAgICAgJy54bHN4JztcblxuICAgIHRoaXMucmlza1NlcnZpY2VcbiAgICAgIC5kb3dubG9hZFRlbXBsYXRlKHRoaXMuY2F0ZWdvcnkuc2VsZWN0ZWRDYXRlZ29yeS5faWQpXG4gICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAoZGF0YTogYW55KSA9PiB7XG4gICAgICAgICAgaWYgKGRhdGEubG9hZGVkKSB7XG4gICAgICAgICAgICB0aGlzLmRvd25sb2FkUGVyY2VudCA9IDEwMCAqIChkYXRhLmxvYWRlZCAvIGRhdGEudG90YWwpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoZGF0YS5ib2R5KSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5kb3dubG9hZFN0YXR1cyA9IHRoaXMucmlza1NlcnZpY2UuZG93bkxvYWRGaWxlKFxuICAgICAgICAgICAgICAgIGRhdGEuYm9keSxcbiAgICAgICAgICAgICAgICAnYXBwbGljYXRpb24veGxzeCcsXG4gICAgICAgICAgICAgICAgZmlsZU5hbWVcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0sIDE1MDApO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgKGVycm9yKSA9PiB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICAgICAgdGhpcy5kb3dubG9hZFN0YXR1cyA9ICdET1dOTE9BREVEJztcbiAgICAgICAgfVxuICAgICAgKTtcbiAgfVxuXG4gIHN1Ym1pdFJpc2tCdWxrVXBsb2FkKGNvbXBsZXRlQXNzZXNzbWVudDogYW55KSB7XG4gICAgdGhpcy5sb2FkZXIgPSB0cnVlO1xuICAgIGNvbnN0IHBheWxvYWQ6IGFueSA9IFtdO1xuICAgIHRoaXMucmlza0J1bGtVcGxvYWQucmlza3MuZm9yRWFjaCgocmlzazogYW55KSA9PiB7XG4gICAgICBsZXQgZnJlcXVlbmN5VmFsdWUgPSAnJztcbiAgICAgIGlmIChyaXNrPy5mcmVxdWVuY3kudG9Mb3dlckNhc2UoKSA9PT0gJ29uZSB0aW1lJykge1xuICAgICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoKTtcbiAgICAgICAgZGF0ZS5zZXREYXRlKGRhdGUuZ2V0RGF0ZSgpICsgMSk7XG4gICAgICAgIGZyZXF1ZW5jeVZhbHVlID1cbiAgICAgICAgICAnMH4nICtcbiAgICAgICAgICAnJyArXG4gICAgICAgICAgZGF0ZS5nZXRGdWxsWWVhcigpICtcbiAgICAgICAgICAnficgK1xuICAgICAgICAgIChkYXRlLmdldE1vbnRoKCkgKyAxKSArXG4gICAgICAgICAgJ34nICtcbiAgICAgICAgICBkYXRlLmdldERhdGUoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZyZXF1ZW5jeVZhbHVlID0gdGhpcy5mcmVxdWVuY3lTZXJ2aWNlLnNob3J0SGFuZF9mcmVxQ2FsKFxuICAgICAgICAgIHJpc2s/LmZyZXF1ZW5jeVxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBpZiAocmlzay5pc1ZhbGlkKSB7XG4gICAgICAgIGNvbnN0IG9iaiA9IHtcbiAgICAgICAgICB0aXRsZTogcmlzaz8ucmlza05hbWUsXG4gICAgICAgICAgZGVzY3JpcHRpb246IHJpc2s/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgIGNhdGVnb3J5X2N1c3RvbV90YWc6IHJpc2s/LmN1c3RvbVRhZyxcbiAgICAgICAgICBhc3Nlc3NtZW50X2RlYWRsaW5lX2VuYWJsZTpcbiAgICAgICAgICAgIHRoaXMuc2V0dGluZ3NJbmZvPy5hc3Nlc3NtZW50X2RlYWRsaW5lX2VuYWJsZSxcbiAgICAgICAgICBvd25lcjogcmlzaz8ub3duZXJcbiAgICAgICAgICAgID8gdGhpcy5yZXR1cm5JZHMocmlzaz8ub3duZXIsICdvd25lcicpXG4gICAgICAgICAgICA6IHRoaXMucmV0dXJuSWRzKHRoaXMuZGVmYXVsdE93bmVyLCAnb3duZXInKSxcbiAgICAgICAgICByaXNrX293bmVyOiByaXNrPy5yaXNrT3duZXIsXG4gICAgICAgICAgY2F0ZWdvcnk6IHRoaXMuY2F0ZWdvcnk/LnNlbGVjdGVkQ2F0ZWdvcnk/LmNhdGVnb3J5X2lkXG4gICAgICAgICAgICA/IFt0aGlzLmNhdGVnb3J5Py5zZWxlY3RlZENhdGVnb3J5Py5jYXRlZ29yeV9pZF1cbiAgICAgICAgICAgIDogW10sXG4gICAgICAgICAgbWFuYWdlX292ZXJzaWdodDogdGhpcy5yZXR1cm5JZHMocmlzaz8ub3ZlcnNlZXIsICdvdmVyc2VlcicpLFxuICAgICAgICAgIHJjX2lkOiB0aGlzLnJldHVybklkcyhyaXNrPy5yY05hbWUsICdyY19pZCcpLFxuICAgICAgICAgIGhlYWRfaWRzOiB0aGlzLnJldHVybklkcyhyaXNrPy5yY05hbWUsICdyY19vd25lcl9pZHMnKSwgLy8yIHRvIGJlIGFyYXlcbiAgICAgICAgICBsaW5rZWRfR1JDX2lkczogdGhpcy5mZkxpbmtlZEdyY09iamVjdHNcbiAgICAgICAgICAgID8gdGhpcy5yZXR1cm5JZHMocmlzaz8ubGlua2VkR3JjT2JqZWN0LCAnZ3JjX2lkJylcbiAgICAgICAgICAgIDogW10sXG4gICAgICAgICAgcmF0aW5nX2FycjogW1xuICAgICAgICAgICAgcmlzaz8ubGlrZWxpaG9vZCA/IHJpc2s/Lmxpa2VsaWhvb2Quc3BsaXQoJyAtICcpWzFdIDogMCxcbiAgICAgICAgICAgIHJpc2s/LmltcGFjdCA/IHJpc2s/LmltcGFjdC5zcGxpdCgnIC0gJylbMV0gOiAwLFxuICAgICAgICAgICAgcmlzaz8udmVsb2NpdHkgPyByaXNrPy52ZWxvY2l0eS5zcGxpdCgnIC0gJylbMV0gOiAwLFxuICAgICAgICAgICAgcmlzaz8udnVsbmVyYWJpbGl0eSA/IHJpc2s/LnZ1bG5lcmFiaWxpdHkuc3BsaXQoJyAtICcpWzFdIDogMCxcbiAgICAgICAgICBdLFxuICAgICAgICAgIG1lbWJlcl9pZDogdGhpcy5tZW1iZXJJZCxcbiAgICAgICAgICBvcmdhbmlzYXRpb25faWQ6IHRoaXMub3JnYW5pemF0aW9uSWQsXG4gICAgICAgICAgcmlza19wcm9ncmVzc19mbGFnOiAxLFxuICAgICAgICAgIElmQXNzZXNzbWVudERvbmU6IDAsXG4gICAgICAgICAgd29ya3Nob3BfaWQ6ICcnLFxuICAgICAgICAgIGNvbXBsZXRlX2Fzc2Vzc21lbnQ6IGNvbXBsZXRlQXNzZXNzbWVudCA/IDEgOiAwLFxuICAgICAgICAgIG1pdGlnYXRpb246IHRoaXMucmV0dXJuSWRzKHJpc2s/Lm1pdGlnYXRpb25Qcmlvcml0eSwgJ21pdGlnYXRpb24nKSwgLy8zIHdyb25nXG4gICAgICAgICAgd2VpZ2h0YWdlX2VuYWJsZTogdGhpcy5zZXR0aW5nc0luZm8/LndlaWdodGFnZV9lbmFibGUsXG4gICAgICAgICAgdHJlYXRtZW50X3R5cGU6IHRoaXMuc2V0dGluZ3NJbmZvPy50cmVhdG1lbnRfY3JpdGVyaWEsXG4gICAgICAgICAgd2VpZ2h0YWdlX2RldGFpbHM6IHRoaXMuc2V0dGluZ3NJbmZvPy53ZWlnaHRhZ2VfZGV0YWlscyxcbiAgICAgICAgICB3ZWlnaHRhZ2Vfc2V0X2J5OiB0aGlzLnNldHRpbmdzSW5mbz8ud2VpZ2h0YWdlX3NldF9ieSxcbiAgICAgICAgICB3ZWlnaHRhZ2Vfc3RyOiBbXG4gICAgICAgICAgICB0aGlzLnNldHRpbmdzSW5mbz8ud2VpZ2h0YWdlX2RldGFpbHM/LmltcGFjdC52YWx1ZSxcbiAgICAgICAgICAgIHRoaXMuc2V0dGluZ3NJbmZvPy53ZWlnaHRhZ2VfZGV0YWlscz8ubGlrZWxpaG9vZC52YWx1ZSxcbiAgICAgICAgICAgIHRoaXMuc2V0dGluZ3NJbmZvPy53ZWlnaHRhZ2VfZGV0YWlscz8udmVsb2NpdHkudmFsdWUsXG4gICAgICAgICAgICB0aGlzLnNldHRpbmdzSW5mbz8ud2VpZ2h0YWdlX2RldGFpbHM/LnZ1bG5lcmFiaWxpdHkudmFsdWUsXG4gICAgICAgICAgXSxcbiAgICAgICAgICAvLyBhc3Nlc3NtZW50X2RlYWRsaW5lX3NldF9ieTogdGhpcy5zZXR0aW5nc0luZm8/LmFzc2Vzc21lbnRfZGVhZGxpbmVfc2V0X2J5LCAvL2NoZWNrMSBub3QgYXBwZWFyaW5nXG4gICAgICAgICAgYXNzZXNzbWVudF9kZWFkbGluZV9zZXRfYnk6XG4gICAgICAgICAgICB0aGlzLnNldHRpbmdzSW5mbz8uYXNzZXNzbWVudF9kZWFkbGluZV9zZXRfYnkgPz8gdGhpcy5tZW1iZXJJZCwgLy9jaGVjazEgbm90IGFwcGVhcmluZ1xuICAgICAgICAgIGFzc2Vzc21lbnRfZGVhZGxpbmVfZGF5czogdGhpcy5zZXR0aW5nc0luZm9cbiAgICAgICAgICAgID8uYXNzZXNzbWVudF9kZWFkbGluZV9lbmFibGVcbiAgICAgICAgICAgID8gdGhpcy5zZXR0aW5nc0luZm8/LmFzc2Vzc21lbnRfZGVhZGxpbmVfZGF5c1xuICAgICAgICAgICAgOiByaXNrPy5hc3Nlc3NtZW50RGVhZExpbmUsXG4gICAgICAgICAgZnJlcXVlbmN5X2RldGFpbHM6IHtcbiAgICAgICAgICAgIGZyZXF1ZW5jeTogZnJlcXVlbmN5VmFsdWUsXG4gICAgICAgICAgICBzdGFydGVkX2F0OlxuICAgICAgICAgICAgICB0aGlzLmNoYW5nZVRpbWVab25lKG5ldyBEYXRlKCkpID8/IG1vbWVudCgpLmZvcm1hdCgnWVlZWS1NTS1ERCcpLFxuICAgICAgICAgICAgZnJlcXVlbmN5X3RpbWU6ICcxMTowMCBwbScsXG4gICAgICAgICAgICByZW1pbmRfYmVmb3JlX2RheXM6IHJpc2s/LmVtYWlsUmVtaW5kZXJcbiAgICAgICAgICAgICAgPyByaXNrPy5lbWFpbFJlbWluZGVyXG4gICAgICAgICAgICAgIDogdGhpcy5zZXREZWZhdWx0RW1haWxSZW1pbmRlclZhbHVlKHJpc2s/LmZyZXF1ZW5jeSksXG4gICAgICAgICAgfSxcbiAgICAgICAgICByaXNrX2xhYmVsOiB0aGlzLnNldFJpc2tMYWJlbChyaXNrPy5yaXNrTGFiZWwpLFxuICAgICAgICAgIG1pdGlnYXRpb25fcGxhbl9yZWNvbW1lbmRhdGlvbjogcmlzaz8ubWl0aWdhdGlvblBsYW5zID8/ICcnLFxuICAgICAgICAgIHNhbWVSaXNrUmF0aW5nc0ZvckFsbFJDOiByaXNrPy5hcHBseVNhbWVSaXNrUmF0aW5nID8/ICdObycsXG4gICAgICAgIH07XG4gICAgICAgIHBheWxvYWQucHVzaChvYmopO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMucmlza1NlcnZpY2UuYWRkQnVsa1Jpc2socGF5bG9hZCkuc3Vic2NyaWJlKFxuICAgICAgKHJlczogYW55KSA9PiB7XG4gICAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc2hvd0V4Y2VsID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc2hvd1NtaWxleSA9IHRydWU7XG4gICAgICAgIHRoaXMucmlza0RhdGEgPSByZXM7XG4gICAgICB9LFxuICAgICAgKGVycikgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc2hvd0V4Y2VsID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc25hY2tCYXIuc2hvdyhcbiAgICAgICAgICAnT09QUyEgU29tZXRoaW5nIHdlbnQgd3JvbmcgYW5kIHRoZSBwYWdlIGNvdWxkIG5vdCBiZSBsb2FkZWQuIENvdWxkIHlvdSBwbGVhc2UgdHJ5IG9uZSBtb3JlIHRpbWU/JyxcbiAgICAgICAgICAnYWxlcnQnXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIHJldHVybklkcyhpdGVtOiBhbnksIGtleTogc3RyaW5nKSB7XG4gICAgc3dpdGNoIChrZXkpIHtcbiAgICAgIGNhc2UgJ3JjX2lkJzpcbiAgICAgICAgY29uc3QgcmNJZDogYW55ID0gW107XG4gICAgICAgIHRoaXMudGVtcGxhdGVJbmZvLnJjTGlzdC5mb3JFYWNoKChyY19lbGVtZW50OiBhbnkpID0+IHtcbiAgICAgICAgICBpZiAocmNfZWxlbWVudC5yY05hbWUgPT0gaXRlbSkge1xuICAgICAgICAgICAgcmNJZC5wdXNoKHJjX2VsZW1lbnQucmNfaWQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiByY0lkO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3JjX293bmVyX2lkcyc6XG4gICAgICAgIGxldCBvd25lcl9pZHM6IGFueSA9IFtdO1xuICAgICAgICB0aGlzLnRlbXBsYXRlSW5mby5yY0xpc3QuZm9yRWFjaCgoaGVhZGVySWRzOiBhbnkpID0+IHtcbiAgICAgICAgICBpZiAoaGVhZGVySWRzLnJjTmFtZSA9PSBpdGVtICYmIGhlYWRlcklkcy5vd25lcl9pZHMpIHtcbiAgICAgICAgICAgIG93bmVyX2lkcyA9IGhlYWRlcklkcy5vd25lcl9pZHMuaW5jbHVkZXMoJywnKVxuICAgICAgICAgICAgICA/IGhlYWRlcklkcy5vd25lcl9pZHMuc3BsaXQoJywnKS5tYXAoTnVtYmVyKVxuICAgICAgICAgICAgICA6IFtOdW1iZXIoaGVhZGVySWRzLm93bmVyX2lkcyldO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBvd25lcl9pZHM7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnb3duZXInOlxuICAgICAgICBjb25zdCBvd25lcklkOiBhbnkgPSBbXTtcbiAgICAgICAgdGhpcy50ZW1wbGF0ZUluZm8ub3duZXJMaXN0LmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xuICAgICAgICAgIGlmIChlbGVtZW50Lm5hbWUgPT0gaXRlbSkge1xuICAgICAgICAgICAgb3duZXJJZC5wdXNoKGVsZW1lbnQubWVtYmVyX2lkKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gb3duZXJJZDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdvdmVyc2Vlcic6XG4gICAgICAgIGNvbnN0IG92ZXJzZWVySWQ6IGFueSA9IFtdO1xuICAgICAgICB0aGlzLnRlbXBsYXRlSW5mby5vd25lckxpc3QuZm9yRWFjaCgob3NfZWxlbWVudDogYW55KSA9PiB7XG4gICAgICAgICAgaWYgKG9zX2VsZW1lbnQubmFtZSA9PSBpdGVtKSB7XG4gICAgICAgICAgICBvdmVyc2VlcklkLnB1c2gob3NfZWxlbWVudC5tZW1iZXJfaWQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBvdmVyc2VlcklkO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnbWl0aWdhdGlvbic6XG4gICAgICAgIGxldCBtaXRpZ2F0aW9uSWQ6IGFueSA9IDA7XG4gICAgICAgIHRoaXMudGVtcGxhdGVJbmZvLm1pdGlnYXRpb25MaXN0LmZvckVhY2goKG1pdGlnYXRpb246IGFueSkgPT4ge1xuICAgICAgICAgIGlmIChtaXRpZ2F0aW9uLm1pdGlnYXRpb25OYW1lID09IGl0ZW0pIHtcbiAgICAgICAgICAgIG1pdGlnYXRpb25JZCA9IG1pdGlnYXRpb24ubWl0aWdhdGlvbl9pZDtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gbWl0aWdhdGlvbklkO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnZ3JjX2lkJzpcbiAgICAgICAgY29uc3QgZ3JjSWQ6IGFueSA9IFtdO1xuICAgICAgICBjb25zdCBncmNFbGVtZW50ID0gdGhpcy50ZW1wbGF0ZUluZm8uZ3JjTGlzdC5maW5kKFxuICAgICAgICAgIChncmNfZWxlbWVudDogYW55KSA9PiBncmNfZWxlbWVudC5ncmNOYW1lID09PSBpdGVtXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiBncmNFbGVtZW50ID8gW2dyY0VsZW1lbnQuZ3JjSWRdIDogW107XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHJlc2V0KCkge1xuICAgIHRoaXMucmlza0J1bGtVcGxvYWQgPSB7XG4gICAgICBoZWFkZXI6IFtdLFxuICAgICAgd2VpZ2h0RmFjdG9yczogW10sXG4gICAgICByaXNrczogW10sXG4gICAgfTtcblxuICAgIHRoaXMudGVtcGxhdGVJbmZvID0ge1xuICAgICAgbWVtYmVySWQ6ICcnLFxuICAgICAgY2F0ZWdvcnlJZDogJycsXG4gICAgICBvd25lckxpc3Q6IFtdLFxuICAgICAgcmNMaXN0OiBbXSxcbiAgICAgIG1pdGlnYXRpb25MaXN0OiBbXSxcbiAgICAgIGdyY0xpc3Q6IFtdLFxuICAgIH07XG5cbiAgICB0aGlzLmlzRmlsZUVtcHR5ID0gZmFsc2U7XG4gICAgdGhpcy5pc1dyb25nRmlsZSA9IGZhbHNlO1xuICAgIHRoaXMuaXNXcm9uZ0Zvcm1hdCA9IGZhbHNlO1xuICAgIHRoaXMuZmlsZU5hbWUgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5kYXRhID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuYXNzZXNzbWVudERlYWRMaW5lID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuc2hvd0V4Y2VsID0gZmFsc2U7XG4gICAgdGhpcy5zaG93U21pbGV5ID0gZmFsc2U7XG4gIH1cbiAgYWN0aW9uKGV2ZW50OiBzdHJpbmcpIHtcbiAgICBzd2l0Y2ggKGV2ZW50KSB7XG4gICAgICBjYXNlICdhZGRNb3JlJzpcbiAgICAgICAgdGhpcy5jYXRlZ29yeSA9IHtcbiAgICAgICAgICB0eXBlOiAnc3RyYXRlZ2ljJyxcbiAgICAgICAgICBzZWxlY3RlZENhdGVnb3J5OiAnJyxcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5kb3dubG9hZFN0YXR1cyA9ICdOT1RfRE9XTkxPQURJTkcnO1xuICAgICAgICB0aGlzLnJlc2V0KCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAndmlld1Jpc2tzJzpcbiAgICAgICAgdGhpcy52aWV3Umlza3MoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgY2xvc2VTbWlsZXkoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuc2hvd1NtaWxleSA9IGZhbHNlO1xuICAgIHRoaXMuY2xvc2VXb3JrZmxvdy5lbWl0KHsgZXZ0OiB0aGlzLnJpc2tEYXRhLCBjb25maXJtOiBmYWxzZSB9KTtcbiAgfVxuXG4gIHZpZXdSaXNrcygpOiB2b2lkIHtcbiAgICB0aGlzLmRpc2Nvbm5lY3RSZWZyZXNoLmVtaXQoZmFsc2UpO1xuICAgIGxldCB1cmw6IHN0cmluZztcbiAgICBpZiAod2luZG93LmxvY2F0aW9uLmhvc3Quc3RhcnRzV2l0aCgnbG9jYWxob3N0JykpIHtcbiAgICAgIHVybCA9ICdodHRwOi8vJyArIHdpbmRvdy5sb2NhdGlvbi5ob3N0O1xuICAgIH0gZWxzZSB7XG4gICAgICB1cmwgPSAnaHR0cHM6Ly8nICsgd2luZG93LmxvY2F0aW9uLmhvc3Q7XG4gICAgfVxuICAgIGlmICh3aW5kb3cubG9jYXRpb24uaG9zdC5zdGFydHNXaXRoKCdsb2NhbGhvc3QnKSkge1xuICAgICAgdXJsICs9ICcvcmlzay1yZWdpc3Rlcic7XG4gICAgfSBlbHNlIHtcbiAgICAgIHVybCArPSAnL3Jpc2svcmlzay1yZWdpc3Rlcic7XG4gICAgfVxuICAgIHRoaXMuaWZyYW1lU2VydmljZS5yZWRpcmVjdElmSW5JZnJhbWUodXJsLCB0cnVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJdCB0YWtlcyBhbiBhcnJheSBvZiBzdHJpbmdzIGFuZCByZXR1cm5zIGFuIG9iamVjdCB3aXRoIHRoZSBhcnJheSB2YWx1ZXMgYXMgcHJvcGVydGllcy5cbiAgICogPC9jb2RlPlxuICAgKiBAcGFyYW0ge2FueX0gcmlzayAtIGFueSA9IFtcbiAgICogQHJldHVybnMgW1xuICAgKiAgIHtcbiAgICogICAgIFwicmlza05hbWVcIjogXCJcIixcbiAgICogICAgIFwiZGVzY3JpcHRpb25cIjogXCJcIixcbiAgICogICAgIFwicmNOYW1lXCI6IFwiXCIsXG4gICAqICAgICBcIm93bmVyXCI6IFwiXCIsXG4gICAqICAgICBcImZyZXF1ZW5jeVwiOiBcIlwiLFxuICAgKiAgICAgXCJlbWFpbFJlbWluZGVyXCI6IFwiXCIsXG4gICAqICAgICBcIm92ZXJzZWVyXCI6IFwiXCIsXG4gICAqICAgICBcImlzVmFsaWRcIjogZmFsc2UsXG4gICAqICAgICBcIm1pdGlnYXRpb25Qcmlvcml0eVwiOiBcIlwiLFxuICAgKi9cbiAgc2V0Umlza0RldGFpbHMocmlzazogYW55KSB7XG4gICAgbGV0IG9iajogYW55O1xuICAgIG9iaiA9IHtcbiAgICAgIHJpc2tOYW1lOiByaXNrWzBdID8/ICcnLFxuICAgICAgZGVzY3JpcHRpb246IHJpc2tbMV0gPz8gJycsXG4gICAgICByY05hbWU6IHJpc2tbMl0gPz8gJycsXG4gICAgICBvd25lcjogcmlza1szXSA/PyAnJyxcbiAgICAgIHJpc2tPd25lcjogcmlza1s0XSA/PyAnJyxcbiAgICAgIGZyZXF1ZW5jeTogcmlza1s1XSA/PyAnJyxcbiAgICAgIGVtYWlsUmVtaW5kZXI6IHJpc2tbNl0sXG4gICAgICBvdmVyc2Vlcjogcmlza1s3XSA/PyAnJyxcbiAgICAgIGlzVmFsaWQ6IHRoaXMuY2hlY2tWYWxpZGl0eShyaXNrKSxcbiAgICAgIGlzR3JjTm90VmFsaWQ6IHRoaXMudmFsaWRhdGVHcmNPYmplY3RGb3JSYyhcbiAgICAgICAgdGhpcy5zZWxlY3RlZFJjTmFtZSxcbiAgICAgICAgdGhpcy5zZWxlY3RlZEdyY05hbWVcbiAgICAgICksXG4gICAgfTtcbiAgICBsZXQgaW5kZXggPSA4O1xuICAgIGlmIChcbiAgICAgIHRoaXMucmlza0J1bGtVcGxvYWQ/LmhlYWRlcj8uaW5jbHVkZXMoJ1JlY29tbWVuZGVkIE1pdGlnYXRpb24gUHJpb3JpdHknKVxuICAgICkge1xuICAgICAgb2JqWydtaXRpZ2F0aW9uUHJpb3JpdHknXSA9IHJpc2tbaW5kZXhdID8/ICcnO1xuICAgICAgaW5kZXgrKztcbiAgICB9XG4gICAgb2JqWydtaXRpZ2F0aW9uUGxhbnMnXSA9IHJpc2tbaW5kZXhdID8/ICcnO1xuICAgIGluZGV4Kys7XG4gICAgb2JqWydyaXNrTGFiZWwnXSA9IHJpc2tbaW5kZXhdID8/ICcnO1xuICAgIGluZGV4Kys7XG4gICAgb2JqWydsaWtlbGlob29kJ10gPSByaXNrW2luZGV4XSA/PyAnJztcbiAgICBpbmRleCsrO1xuICAgIG9ialsnaW1wYWN0J10gPSByaXNrW2luZGV4XSA/PyAnJztcbiAgICBpbmRleCsrO1xuICAgIGlmICh0aGlzLnJpc2tCdWxrVXBsb2FkPy53ZWlnaHRGYWN0b3JzPy5pbmNsdWRlcygnVmVsb2NpdHknKSkge1xuICAgICAgb2JqWyd2ZWxvY2l0eSddID0gcmlza1tpbmRleF0gPz8gJyc7XG4gICAgICBpbmRleCsrO1xuICAgIH1cbiAgICBpZiAodGhpcy5yaXNrQnVsa1VwbG9hZD8ud2VpZ2h0RmFjdG9ycz8uaW5jbHVkZXMoJ1Z1bG5lcmFiaWxpdHknKSkge1xuICAgICAgb2JqWyd2dWxuZXJhYmlsaXR5J10gPSByaXNrW2luZGV4XSA/PyAnJztcbiAgICAgIGluZGV4Kys7XG4gICAgfVxuICAgIGlmIChcbiAgICAgIHRoaXMucmlza0J1bGtVcGxvYWQ/LmhlYWRlcj8uaW5jbHVkZXMoXG4gICAgICAgICdEbyB5b3Ugd2FudCB0byBhcHBseSB0aGUgc2FtZSByaXNrIHJhdGluZ3MgZm9yIGFsbCBSZXNwb25zaWJpbGl0eSBDZW50ZXJzPydcbiAgICAgIClcbiAgICApIHtcbiAgICAgIG9ialsnYXBwbHlTYW1lUmlza1JhdGluZyddID0gcmlza1tpbmRleF0gPz8gJyc7XG4gICAgICBpbmRleCsrO1xuICAgIH1cbiAgICBpZiAodGhpcy5yaXNrQnVsa1VwbG9hZD8uaGVhZGVyPy5pbmNsdWRlcygnTGlua2VkIEdSQyBPYmplY3QocyknKSkge1xuICAgICAgb2JqWydsaW5rZWRHcmNPYmplY3QnXSA9IHJpc2tbaW5kZXhdID8/ICcnO1xuICAgICAgaW5kZXgrKztcbiAgICB9XG4gICAgY29uc3QgY3VzdG9tVGFnczogYW55ID0gW107XG4gICAgdGhpcy5jYXRlZ29yeT8uc2VsZWN0ZWRDYXRlZ29yeT8uY3VzdG9tX3RhZz8uZm9yRWFjaCgodGFnOiBhbnksIGk6IGFueSkgPT4ge1xuICAgICAgaWYgKHRhZykge1xuICAgICAgICBjb25zdCBjVGFnID0ge1xuICAgICAgICAgIGN1c3RvbV90YWdfdmFsdWU6IHJpc2tbaW5kZXggKyBpXSA/PyAnJyxcbiAgICAgICAgICBjdXN0b21fdGFnX25hbWU6IHRhZy50YWdOYW1lLFxuICAgICAgICB9O1xuICAgICAgICBjdXN0b21UYWdzLnB1c2goY1RhZyk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgb2JqWydjdXN0b21UYWcnXSA9IGN1c3RvbVRhZ3M7XG4gICAgb2JqWydpc1ZhbGlkRnJlcXVlbmN5J10gPSB0aGlzLmZyZXF1ZW5jeVR5cGU/LmluY2x1ZGVzKFxuICAgICAgb2JqPy5mcmVxdWVuY3k/LnRvTG93ZXJDYXNlKClcbiAgICApO1xuICAgIHJldHVybiBvYmo7XG4gIH1cblxuICAvKipcbiAgICogSWYgdGhlIGZyZXF1ZW5jeVR5cGUgaXMgd2Vla2x5LCByZXR1cm4gMiwgaWYgaXQncyBtb250aGx5LCByZXR1cm4gNywgaWYgaXQncyBxdWFydGVybHksIHJldHVybiA3LFxuICAgKiBpZiBpdCdzIGJpYW5udWFsLCByZXR1cm4gMzAsIGlmIGl0J3MgYW5udWFsLCByZXR1cm4gMzAsIGlmIGl0J3Mgb25lIHRpbWUsIHJldHVybiAxNSwgb3RoZXJ3aXNlXG4gICAqIHJldHVybiAwLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW2ZyZXF1ZW5jeVR5cGVdIC0gc3RyaW5nIC0gdGhlIGZyZXF1ZW5jeSB0eXBlIG9mIHRoZSByZW1pbmRlclxuICAgKiBAcmV0dXJucyBUaGUgcmV0dXJuIHZhbHVlIGlzIHRoZSBudW1iZXIgb2YgZGF5cyBiZWZvcmUgdGhlIGV2ZW50IHRoYXQgdGhlIHJlbWluZGVyIHNob3VsZCBiZSBzZW50LlxuICAgKi9cbiAgc2V0RGVmYXVsdEVtYWlsUmVtaW5kZXJWYWx1ZShmcmVxdWVuY3lUeXBlPzogc3RyaW5nKTogYW55IHtcbiAgICBzd2l0Y2ggKGZyZXF1ZW5jeVR5cGU/LnRvTG93ZXJDYXNlKCkpIHtcbiAgICAgIGNhc2UgJ3dlZWtseSc6XG4gICAgICAgIHJldHVybiAyO1xuICAgICAgY2FzZSAnbW9udGhseSc6XG4gICAgICAgIHJldHVybiA3O1xuICAgICAgY2FzZSAncXVhcnRlcmx5JzpcbiAgICAgICAgcmV0dXJuIDc7XG4gICAgICBjYXNlICdiaWFubnVhbCc6XG4gICAgICAgIHJldHVybiAzMDtcbiAgICAgIGNhc2UgJ2FubnVhbCc6XG4gICAgICAgIHJldHVybiAzMDtcbiAgICAgIGNhc2UgJ29uZSB0aW1lJzpcbiAgICAgICAgcmV0dXJuIDE1O1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIElmIHRoZSBsYWJlbCBpcyAnbmV3IHJpc2snLCByZXR1cm4gMSwgaWYgdGhlIGxhYmVsIGlzICdlbWVyZ2luZy9yYXBpZGx5IGNoYW5naW5nIHJpc2tzJywgcmV0dXJuIDIsXG4gICAqIG90aGVyd2lzZSByZXR1cm4gMVxuICAgKiBAcGFyYW0ge3N0cmluZ30gW2xhYmVsXSAtIHRoZSBsYWJlbCBvZiB0aGUgcmlza1xuICAgKiBAcmV0dXJucyBUaGUgcmV0dXJuIHZhbHVlIGlzIHRoZSB2YWx1ZSBvZiB0aGUgbGFzdCBleHByZXNzaW9uIGluIHRoZSBmdW5jdGlvbi5cbiAgICovXG4gIHNldFJpc2tMYWJlbChsYWJlbD86IHN0cmluZykge1xuICAgIHN3aXRjaCAobGFiZWw/LnRvTG93ZXJDYXNlKCkpIHtcbiAgICAgIGNhc2UgJ25ld2x5IGlkZW50aWZpZWQgcmlza3MnOlxuICAgICAgICByZXR1cm4gMTtcbiAgICAgIGNhc2UgJ3JhcGlkbHkgY2hhbmdpbmcgcmlza3MnOlxuICAgICAgICByZXR1cm4gMjtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBcIklmIHRoZSBkYXRlIGlzIGEgbnVtYmVyLCBjb252ZXJ0IGl0IHRvIGEgZGF0ZSBvYmplY3QsIHRoZW4gY3JlYXRlIGEgbmV3IGRhdGUgb2JqZWN0IHdpdGggdGhlXG4gICAqIHRpbWV6b25lIHNldCB0byB0aGUgdXNlcidzIHRpbWV6b25lLCB0aGVuIHJldHVybiB0aGUgZGF0ZSBpbiB0aGUgZm9ybWF0IFlZWVktTU0tREQuXCJcbiAgICogPC9jb2RlPlxuICAgKiBAcGFyYW0ge2FueX0gZGF0ZSAtIGFueSAtIHRoZSBkYXRlIHlvdSB3YW50IHRvIGNoYW5nZSB0aGUgdGltZXpvbmUgb2ZcbiAgICogQHJldHVybnMgVGhlIGRhdGUgaXMgYmVpbmcgcmV0dXJuZWQgaW4gdGhlIHRpbWV6b25lIG9mIHRoZSB1c2VyLlxuICAgKi9cbiAgY2hhbmdlVGltZVpvbmUoZGF0ZTogYW55KSB7XG4gICAgaWYgKHR5cGVvZiBkYXRlID09PSAnbnVtYmVyJykge1xuICAgICAgZGF0ZSA9IG5ldyBEYXRlKGRhdGUpO1xuICAgIH1cbiAgICBjb25zdCBpbnZEYXRlID0gbmV3IERhdGUoXG4gICAgICBkYXRlLnRvTG9jYWxlU3RyaW5nKCdlbi1VUycsIHtcbiAgICAgICAgdGltZVpvbmU6IHRoaXMuYXV0aFNlcnZpY2UudXNlckRldGFpbHM/LnRpbWV6b25lLFxuICAgICAgfSlcbiAgICApO1xuICAgIHJldHVybiBtb21lbnQoaW52RGF0ZSkuZm9ybWF0KCdZWVlZLU1NLUREJyk7XG4gIH1cblxuICBzZXRGZWF0dXJlRmxhZygpIHtcbiAgICB0aGlzLmZmTGlua2VkR3JjT2JqZWN0cyA9IHRoaXMuZmVhdHVyZS5pc0ZlYXR1cmVFbmFibGVkKCdmZl9ncmNfdjEnKTtcbiAgfVxuXG4gIGdldENvbHVtbldpc2VEYXRhID0gKGRhdGE6IGFueVtdW10pOiBhbnlbXVtdID0+IHtcbiAgICByZXR1cm4gZGF0YVswXS5tYXAoKF8sIGNvbEluZGV4KSA9PiBkYXRhLm1hcCgocm93KSA9PiByb3dbY29sSW5kZXhdKSk7XG4gIH07XG5cbiAgdmFsaWRhdGVHcmNPYmplY3RGb3JSYyhzZWxlY3RlZFJjOiBzdHJpbmcsIHNlbGVjdGVkR3JjOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBmb3IgKFxuICAgICAgbGV0IGNvbEluZGV4ID0gMjk7XG4gICAgICBjb2xJbmRleCA8IHRoaXMuY29sdW1uV2lzZURhdGEubGVuZ3RoO1xuICAgICAgY29sSW5kZXggKz0gMlxuICAgICkge1xuICAgICAgY29uc3QgcmNOYW1lc0NvbHVtbiA9IHRoaXMuY29sdW1uV2lzZURhdGFbY29sSW5kZXhdO1xuXG4gICAgICBpZiAocmNOYW1lc0NvbHVtblswXSA9PT0gc2VsZWN0ZWRSYykge1xuICAgICAgICByZXR1cm4gIXJjTmFtZXNDb2x1bW5cbiAgICAgICAgICAuc2xpY2UoMSlcbiAgICAgICAgICAuc29tZSgoZ3JjOiBhbnkpID0+IGdyYyA9PT0gc2VsZWN0ZWRHcmMgfHwgIXNlbGVjdGVkR3JjKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgZ2V0R3JjTGlzdCgpIHtcbiAgICB0aGlzLnJpc2tCdWxrVXBsb2FkPy5yaXNrcy5mb3JFYWNoKChyaXNrOiBhbnkpID0+IHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRHcmNOYW1lID0gcmlzaz8ubGlua2VkR3JjT2JqZWN0O1xuICAgICAgdGhpcy5zZWxlY3RlZFJjTmFtZSA9IHJpc2s/LnJjTmFtZTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRSY0lkID0gdGhpcy5yZXR1cm5JZHMocmlzay5yY05hbWUsICdyY19pZCcpO1xuXG4gICAgICBpZiAodGhpcy5zZWxlY3RlZFJjSWQpIHtcbiAgICAgICAgZm9yIChcbiAgICAgICAgICBsZXQgY29sSW5kZXggPSAyOTtcbiAgICAgICAgICBjb2xJbmRleCA8IHRoaXMuY29sdW1uV2lzZURhdGEubGVuZ3RoO1xuICAgICAgICAgIGNvbEluZGV4ICs9IDJcbiAgICAgICAgKSB7XG4gICAgICAgICAgY29uc3QgcmNOYW1lc0NvbHVtbiA9IHRoaXMuY29sdW1uV2lzZURhdGFbY29sSW5kZXhdO1xuICAgICAgICAgIGNvbnN0IHJjSWRzQ29sdW1uID0gdGhpcy5jb2x1bW5XaXNlRGF0YVtjb2xJbmRleCArIDFdO1xuICAgICAgICAgIGlmIChyY0lkc0NvbHVtblswXSA9PSB0aGlzLnNlbGVjdGVkUmNJZCkge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCByY05hbWVzQ29sdW1uLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGdyY05hbWUgPSByY05hbWVzQ29sdW1uW2ldO1xuICAgICAgICAgICAgICBjb25zdCBncmNJZCA9IHJjSWRzQ29sdW1uW2ldO1xuICAgICAgICAgICAgICBpZiAoZ3JjTmFtZSAmJiBncmNJZCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGdyYyA9IHtcbiAgICAgICAgICAgICAgICAgIGdyY05hbWU6IGdyY05hbWUsXG4gICAgICAgICAgICAgICAgICBncmNJZDogZ3JjSWQsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB0aGlzLnRlbXBsYXRlSW5mby5ncmNMaXN0LnB1c2goZ3JjKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiYWRkLW11bHRpcGxlLXJpc2tcIj5cbiAgPCEtLSBtYWluIGNvbnRhaW5lciBzdGFydHMgaGVyZSAtLT5cbiAgPGRpdiBjbGFzcz1cImFkZC1tdWx0aXBsZS1yaXNrLWJvZHlcIiBbY2xhc3MuZGlzYWJsZWRdPVwic2hvd0NhdGVnb3J5TGlzdFwiPlxuICAgIDxkaXYgY2xhc3M9XCJhZGQtbXVsdGlwbGUtcmlzay1jb250YWluZXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJpbWFnZVwiPlxuICAgICAgICA8aW1nIFtzcmNdPVwiQVNTRVRTLnNwcmVhZHNoZWV0X211bHRpcGxlX2NhdGVnb3J5XCIgYWx0PVwiXCIgLz5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8aDQgaWQ9XCJtdWx0aXBsZVJpc2tcIj5cbiAgICAgICAgWW91IGNhbiBhZGQgbXVsdGlwbGUgcmlzayBpbiBqdXN0IHRocmVlIGVhc3kgc3RlcHNcbiAgICAgIDwvaDQ+XG4gICAgICA8dWwgY2xhc3M9XCJsaXN0XCI+XG4gICAgICAgIDxsaT5TZWxlY3QgYSBSaXNrIENhdGVnb3J5LjwvbGk+XG4gICAgICAgIDxsaT5Eb3dubG9hZCB0aGUgdGVtcGxhdGUgYW5kIGZpbGwgaW4gdGhlIGRldGFpbHMuPC9saT5cbiAgICAgICAgPGxpPlVwbG9hZCB0aGUgLnhsc3ggZmlsZSBhbmQgeW91J3JlIGdvb2QgdG8gZ28hPC9saT5cbiAgICAgIDwvdWw+XG4gICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cFwiIFthdHRyLmlkXT1cIidzY3JvbGxSZWZlcmVuY2UnXCI+XG4gICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIlxuICAgICAgICAgID5SaXNrIENhdGVnb3J5IDxzcGFuIGNsYXNzPVwicmVxdWlyZWRcIj4qPC9zcGFuPjwvbGFiZWxcbiAgICAgICAgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0XCIgKm5nSWY9XCIhY2F0ZWdvcnkuc2VsZWN0ZWRDYXRlZ29yeVwiPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImdldENhdGVnb3J5TGlzdCgpXCJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VsZWN0IFJpc2sgQ2F0ZWdvcnlcIlxuICAgICAgICAgICAgcmVhZG9ubHlcbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdGVkXCIgKm5nSWY9XCJjYXRlZ29yeS5zZWxlY3RlZENhdGVnb3J5XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIj5cbiAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZUNhdGVnb3J5KClcIlxuICAgICAgICAgICAgICA+JiN4ZTlhZTs8L2lcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCJcbiAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiY2F0ZWdvcnk/LnNlbGVjdGVkQ2F0ZWdvcnk/LmNhdGVnb3J5X25hbWVcIlxuICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXG4gICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgPnt7IGNhdGVnb3J5Py5zZWxlY3RlZENhdGVnb3J5Py5jYXRlZ29yeV9uYW1lIH19PC9zcGFuXG4gICAgICAgICAgICA+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJjaGlwLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiIChjbGljayk9XCJyZW1vdmVDYXRlZ29yeSgpXCI+JiN4ZTkwZDs8L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3tjYXRlZ29yeT8uc2VsZWN0ZWRDYXRlZ29yeT8uY2F0ZWdvcnlfbmFtZX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgY2xhc3M9XCJlZGl0XCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgKGNsaWNrKT1cInNob3dDYXRlZ29yeUxpc3QgPSB0cnVlOyBwaWNrZXJDaGFuZ2VkLmVtaXQodHJ1ZSlcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOWJhOzwvaT4gRWRpdFxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNhdGVnb3J5Py5zZWxlY3RlZENhdGVnb3J5XCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAqbmdJZj1cImRvd25sb2FkU3RhdHVzID09PSAnTk9UX0RPV05MT0FESU5HJ1wiXG4gICAgICAgICAgY2xhc3M9XCJkb3dubG9hZFwiXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgKGNsaWNrKT1cImRvd25sb2FkVGVtcGxhdGUoKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTkxYjs8L2k+IERvd25sb2FkIFRlbXBsYXRlXG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYnVsay1idG4tcHJvZ3Jlc3NcIiAqbmdJZj1cImRvd25sb2FkU3RhdHVzID09PSAnRE9XTkxPQURJTkcnXCI+XG4gICAgICAgICAgRG93bmxvYWQgaW4gUHJvZ3Jlc3NcbiAgICAgICAgICA8YXBwLWxpbmUtbG9hZGVyIFtsb2FkZXJIZWlnaHRdPVwiJzInXCI+PC9hcHAtbGluZS1sb2FkZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZG93bmxvYWRTdGF0dXMgPT09ICdET1dOTE9BREVEJ1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJidWxrLWJ0bi1wcm9ncmVzc1wiPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5MWM7PC9pPkRvd25sb2FkIENvbXBsZXRlXG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImJ1bGstYnRuLWFnYWluXCI+XG4gICAgICAgICAgICBJcyB0aGUgZmlsZSBub3QgZG93bmxvYWRlZD9cbiAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cImRvd25sb2FkVGVtcGxhdGUoKVwiPlJldHJ5IERvd25sb2FkPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8cFxuICAgICAgICBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIlxuICAgICAgICAqbmdJZj1cImlzV3JvbmdGaWxlIHx8IGlzV3JvbmdGb3JtYXQgfHwgaXNGaWxlRW1wdHlcIlxuICAgICAgPlxuICAgICAgICB7eyBlcnJvck1lc3NhZ2UgfX1cbiAgICAgIDwvcD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbjxhcHAtY2F0ZWdvcnktbGlzdFxuICAqbmdJZj1cInNob3dDYXRlZ29yeUxpc3RcIlxuICBbY2F0ZWdvcnlMaXN0XT1cImNhdGVnb3J5TGlzdFwiXG4gIFtzZWxlY3RlZENhdGVnb3J5XT1cImNhdGVnb3J5XCJcbiAgKHNhdmVTZWxlY3RlZENhdGVnb3J5KT1cIlxuICAgIHNhdmVTZWxlY3RlZENhdGVnb3J5KCRldmVudCk7IHBpY2tlckNoYW5nZWQuZW1pdChmYWxzZSlcbiAgXCJcbiAgKGNsb3NlQ2F0ZWdvcmllc0xpc3QpPVwic2hvd0NhdGVnb3J5TGlzdCA9IGZhbHNlOyBwaWNrZXJDaGFuZ2VkLmVtaXQoZmFsc2UpXCJcbiAgW2xvYWRlZF09XCIhaXNMb2FkZXJcIlxuPlxuPC9hcHAtY2F0ZWdvcnktbGlzdD5cbjxhcHAtYnVsay12aWV3XG4gICpuZ0lmPVwic2hvd0V4Y2VsXCJcbiAgW3Jpc2tCdWxrVXBsb2FkXT1cInJpc2tCdWxrVXBsb2FkXCJcbiAgW3RlbXBsYXRlSW5mb109XCJ0ZW1wbGF0ZUluZm9cIlxuICBbZGVmYXVsdE93bmVyXT1cImRlZmF1bHRPd25lclwiXG4gIFtmaWxlTmFtZV09XCJmaWxlTmFtZVwiXG4gIFtsb2FkZXJdPVwibG9hZGVyXCJcbiAgW2Fzc2Vzc21lbnREYXlzRW5hYmxlXT1cImFzc2Vzc21lbnREZWFkTGluZVwiXG4gIChzdWJtaXRSaXNrQnVsa1VwbG9hZCk9XCJzdWJtaXRSaXNrQnVsa1VwbG9hZCgkZXZlbnQpXCJcbiAgKGNhbmNlbCk9XCJyZXNldCgpXCJcbiAgW2ZmTGlua2VkR3JjT2JqZWN0c109XCJmZkxpbmtlZEdyY09iamVjdHNcIlxuPjwvYXBwLWJ1bGstdmlldz5cblxuPGlucHV0XG4gIHR5cGU9XCJmaWxlXCJcbiAgWyhuZ01vZGVsKV09XCJmaWxlVmFsdWVcIlxuICBpZD1cImZpbGVJbnB1dFwiXG4gIGNsYXNzPVwiaGlkZGVuLWlucHV0XCJcbiAgKGNoYW5nZSk9XCJ1cGxvYWRlZEZpbGUoJGV2ZW50KVwiXG4vPlxuPGFwcC1zbWlsZXktZGlhbG9nLWlubGluZVxuICAqbmdJZj1cInNob3dTbWlsZXlcIlxuICBbbWVzc2FnZV09XCJzbWlsZXlNZXNzYWdlXCJcbiAgW2FjdGlvbkJ1dHRvbnNdPVwiYWN0aW9uQnV0dG9uc1wiXG4gIChhY3Rpb24pPVwiYWN0aW9uKCRldmVudClcIlxuICAoY2xvc2VTbWlsZXkpPVwiY2xvc2VTbWlsZXkoJGV2ZW50KVwiXG4+PC9hcHAtc21pbGV5LWRpYWxvZy1pbmxpbmU+XG4iXX0=
850
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLW11bHRpcGxlLXJpc2suY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvYWRkLW11bHRpcGxlLXJpc2svYWRkLW11bHRpcGxlLXJpc2suY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvYWRkLW11bHRpcGxlLXJpc2svYWRkLW11bHRpcGxlLXJpc2suY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksR0FLYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ25DLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBTTdCLE9BQU8sTUFBTSxNQUFNLGVBQWUsQ0FBQztBQUVuQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sK0JBQStCLENBQUM7Ozs7Ozs7Ozs7Ozs7O0FBUXZELE1BQU0sT0FBTyx3QkFBd0I7SUE2Rm5DLFlBQ1UsV0FBMkIsRUFDM0IsV0FBd0IsRUFDeEIsUUFBeUIsRUFDekIsZ0JBQXNDLEVBQ3RDLGFBQTRCO1FBSjVCLGdCQUFXLEdBQVgsV0FBVyxDQUFnQjtRQUMzQixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixhQUFRLEdBQVIsUUFBUSxDQUFpQjtRQUN6QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQXNCO1FBQ3RDLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBakd0QyxXQUFNLEdBQUcsTUFBTSxDQUFDO1FBRU4sa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ25DLG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNwQyxrQkFBYSxHQUFHLElBQUksWUFB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LElBQUksQ0FBQyxZQUFZLEVBQUU7d0JBQ3ZDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxhQUFhLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFOzRCQUM3QyxNQUFNLE9BQU8sR0FBRyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7NEJBQ2pDLE1BQU0sS0FBSyxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQzs0QkFDN0IsSUFBSSxPQUFPLElBQUksS0FBSyxFQUFFO2dDQUNwQixNQUFNLEdBQUcsR0FBRztvQ0FDVixPQUFPLEVBQUUsT0FBTztvQ0FDaEIsS0FBSyxFQUFFLEtBQUs7aUNBQ2IsQ0FBQztnQ0FDRixJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7NkJBQ3JDO3lCQUNGO3FCQUNGO2lCQUNGO2FBQ0Y7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7K0dBaDdCVSx3QkFBd0I7bUdBQXhCLHdCQUF3Qix5UUMzQnJDLGtnSkFrSUE7OzRGRHZHYSx3QkFBd0I7a0JBTHBDLFNBQVM7K0JBQ0UsdUJBQXVCOzROQU14QixPQUFPO3NCQUFmLEtBQUs7Z0JBQ0ksYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxjQUFjO3NCQUF2QixNQUFNO2dCQUNHLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0csaUJBQWlCO3NCQUExQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBFdmVudEVtaXR0ZXIsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIE9uQ2hhbmdlcyxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIE9uSW5pdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBjbG9uZURlZXAgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0ICogYXMgWExTWCBmcm9tICd4bHN4JztcbmltcG9ydCB7IENhdGVnb3J5TGlzdCB9IGZyb20gJy4uL2ludGVyZmFjZXMvY2F0ZWdvcnlMaXN0JztcbmltcG9ydCB7IFNuYWNrQmFyU2VydmljZSB9IGZyb20gJy4uL3VpLWtpdC9zbmFjay1iYXIvc25hY2stYmFyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQWRkUmlza1NlcnZpY2UgfSBmcm9tICcuLi93b3JrZmxvdy1zZXJ2aWNlcy9hZGQtcmlzay5zZXJ2aWNlJztcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vd29ya2Zsb3ctc2VydmljZXMvYXV0aC5zZXJ2aWNlJztcbmltcG9ydCB7IEZyZXF1ZW5jeUJ1bGtTZXJ2aWNlIH0gZnJvbSAnLi4vd29ya2Zsb3ctc2VydmljZXMvZnJlcXVlbmN5LnNlcnZpY2UnO1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQvbW9tZW50JztcbmltcG9ydCB7IElmcmFtZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9pZnJhbWUuc2VydmljZSc7XG5pbXBvcnQgeyBBU1NFVFMgfSBmcm9tICcuLi9jb25zdGFudHMvYXNzZXRzLmNvbnN0YW50cyc7XG5cbnR5cGUgQU9BID0gYW55W11bXTtcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1hZGQtbXVsdGlwbGUtcmlzaycsXG4gIHRlbXBsYXRlVXJsOiAnLi9hZGQtbXVsdGlwbGUtcmlzay5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2FkZC1tdWx0aXBsZS1yaXNrLmNvbXBvbmVudC5sZXNzJywgJy4uL2Zvcm1zLmxlc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgQWRkTXVsdGlwbGVSaXNrQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICBBU1NFVFMgPSBBU1NFVFM7XG4gIEBJbnB1dCgpIGZlYXR1cmU6IGFueTtcbiAgQE91dHB1dCgpIHBpY2tlckNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBwb3B1bGF0ZU9wdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIGNsb3NlV29ya2Zsb3cgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBkaXNjb25uZWN0UmVmcmVzaCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgY2F0ZWdvcnlMaXN0OiBDYXRlZ29yeUxpc3QgPSB7XG4gICAgc3RyYXRlZ2ljOiB7XG4gICAgICBuYW1lOiAnU1RSQVRFR0lDJyxcbiAgICAgIGRhdGE6IFtdLFxuICAgIH0sXG4gICAgb3BlcmF0aW9uYWw6IHtcbiAgICAgIG5hbWU6ICdPUEVSQVRJT05BTCcsXG4gICAgICBkYXRhOiBbXSxcbiAgICB9LFxuICAgIGNvbXBsaWFuY2U6IHtcbiAgICAgIG5hbWU6ICdDT01QTElBTkNFJyxcbiAgICAgIGRhdGE6IFtdLFxuICAgIH0sXG4gICAgb3RoZXJzOiB7XG4gICAgICBuYW1lOiAnT1RIRVJTJyxcbiAgICAgIGRhdGE6IFtdLFxuICAgIH0sXG4gIH07XG5cbiAgY2F0ZWdvcnk6IGFueSA9IHtcbiAgICB0eXBlOiAnc3RyYXRlZ2ljJyxcbiAgICBzZWxlY3RlZENhdGVnb3J5OiAnJyxcbiAgfTtcblxuICByaXNrQnVsa1VwbG9hZDogYW55ID0ge1xuICAgIGhlYWRlcjogW10sXG4gICAgd2VpZ2h0RmFjdG9yczogW10sXG4gICAgcmlza3M6IFtdLFxuICB9O1xuXG4gIHRlbXBsYXRlSW5mbzogYW55ID0ge1xuICAgIG1lbWJlcklkOiAnJyxcbiAgICBjYXRlZ29yeUlkOiAnJyxcbiAgICBvd25lckxpc3Q6IFtdLFxuICAgIHJjTGlzdDogW10sXG4gICAgZ3JjTGlzdDogW10sXG4gICAgbWl0aWdhdGlvbkxpc3Q6IFtdLFxuICAgIGxpa2VsaWhvb2Q6IFtdLFxuICAgIGltcGFjdDogW10sXG4gICAgdmVsb2NpdHk6IFtdLFxuICAgIHZ1bG5lcmFiaWxpdHk6IFtdLFxuICB9O1xuXG4gIGlzTG9hZGVyID0gZmFsc2U7XG4gIHNob3dDYXRlZ29yeUxpc3QgPSBmYWxzZTtcbiAgdGVtcGxhdGVEb3dubG9hZGVkID0gZmFsc2U7XG4gIGRvd25sb2FkSW5Qcm9ncmVzcyA9IGZhbHNlO1xuICBsb2FkZXIgPSBmYWxzZTtcbiAgc2V0dGluZ3NJbmZvITogYW55O1xuICBpc0ZpbGVFbXB0eSA9IGZhbHNlO1xuICBpc1dyb25nRmlsZSA9IGZhbHNlO1xuICBpc1dyb25nRm9ybWF0ID0gZmFsc2U7XG4gIGZpbGVOYW1lOiBhbnk7XG4gIGRhdGE6IGFueTtcbiAgYXNzZXNzbWVudERlYWRMaW5lOiBhbnk7XG4gIHNob3dFeGNlbCA9IGZhbHNlO1xuICBmaWxlVmFsdWU6IGFueTtcbiAgbWVtYmVySWQgPSAwO1xuICBvcmdhbml6YXRpb25JZCA9IDA7XG4gIGVycm9yTWVzc2FnZSA9ICcgaW52YWxpZCBmaWxlIGVycm9yJztcbiAgZG93bmxvYWRTdGF0dXM6IHN0cmluZyA9ICdOT1RfRE9XTkxPQURJTkcnO1xuICBkb3dubG9hZFBlcmNlbnQgPSAwO1xuICBmZkxpbmtlZEdyY09iamVjdHM6IGJvb2xlYW4gPSBmYWxzZTtcbiAgc2VsZWN0ZWRSY0lkOiBudW1iZXIgPSAwO1xuICBzZWxlY3RlZFJjTmFtZTogc3RyaW5nID0gJyc7XG4gIHNlbGVjdGVkR3JjTmFtZTogc3RyaW5nID0gJyc7XG4gIGNvbHVtbldpc2VEYXRhOiBhbnkgPSBbXTtcblxuICBzbWlsZXlNZXNzYWdlID0gYFlvdSdyZSBBbGwgU2V0ISBXZSdyZSB1cGxvYWRpbmcgdGhlIHJpc2tzLiBUaGUgcmlzayBvd25lcnMgd2lsbCBiZSBub3RpZmllZCBvbmNlIHRoZSByaXNrcyBoYXZlIGJlZW4gdXBsb2FkZWQuYDtcbiAgYWN0aW9uQnV0dG9ucyA9IFtcbiAgICB7IGJ1dHRvblRleHQ6ICdBZGQgTW9yZSBSaXNrcycsIGNsYXNzOiAnd2hpdGUtYnRuJywgaWQ6ICdhZGRNb3JlJyB9LFxuICAgIHsgYnV0dG9uVGV4dDogJ1ZpZXcgUmlzaycsIGNsYXNzOiAnYmx1ZS1idG4nLCBpZDogJ3ZpZXdSaXNrcycgfSxcbiAgXTtcbiAgc2hvd1NtaWxleSA9IGZhbHNlO1xuICBtZW1iZXJfb2JqX2lkID0gJyc7XG4gIGRlZmF1bHRPd25lciA9ICcnO1xuICByaXNrRGF0YSE6IGFueTtcbiAgZnJlcXVlbmN5VHlwZSA9IFtcbiAgICAnd2Vla2x5JyxcbiAgICAnbW9udGhseScsXG4gICAgJ3F1YXJ0ZXJseScsXG4gICAgJ2JpYW5udWFsJyxcbiAgICAnYW5udWFsJyxcbiAgICAnb25lIHRpbWUnLFxuICBdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmlza1NlcnZpY2U6IEFkZFJpc2tTZXJ2aWNlLFxuICAgIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLFxuICAgIHByaXZhdGUgc25hY2tCYXI6IFNuYWNrQmFyU2VydmljZSxcbiAgICBwcml2YXRlIGZyZXF1ZW5jeVNlcnZpY2U6IEZyZXF1ZW5jeUJ1bGtTZXJ2aWNlLFxuICAgIHByaXZhdGUgaWZyYW1lU2VydmljZTogSWZyYW1lU2VydmljZVxuICApIHsgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHsgfVxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnBpY2tlckNoYW5nZWQuZW1pdChmYWxzZSk7XG4gICAgdGhpcy5nZXRTZXR0aW5nc0luZm8oKTtcblxuICAgIHRoaXMub3JnYW5pemF0aW9uSWQgPSB0aGlzLmF1dGhTZXJ2aWNlLmdldE9yZ2FuaXphdGlvbklkKCk7XG4gICAgdGhpcy5tZW1iZXJJZCA9IHRoaXMuYXV0aFNlcnZpY2UuZ2V0TWVtYmVySWQoKTtcbiAgICB0aGlzLm1lbWJlcl9vYmpfaWQgPSB0aGlzLmF1dGhTZXJ2aWNlLmdldFVzZXJEZXRhaWxzKCkuX2lkO1xuICAgIHRoaXMuc2V0RmVhdHVyZUZsYWcoKTtcbiAgfVxuICBnZXRDYXRlZ29yeUxpc3QoKSB7XG4gICAgdGhpcy5zaG93Q2F0ZWdvcnlMaXN0ID0gdHJ1ZTtcbiAgICB0aGlzLnBpY2tlckNoYW5nZWQuZW1pdCh0cnVlKTtcbiAgICB0aGlzLmlzTG9hZGVyID0gdHJ1ZTtcbiAgICB0aGlzLnJpc2tTZXJ2aWNlLmdldENhdGVnb3J5TGlzdCgpLnN1YnNjcmliZShcbiAgICAgIChyZXM6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmlzTG9hZGVyID0gZmFsc2U7XG4gICAgICAgIHRoaXMuY2F0ZWdvcnlMaXN0LnN0cmF0ZWdpYy5kYXRhID0gcmVzLnN0cmF0ZWdpY19hcnI7XG4gICAgICAgIHRoaXMuY2F0ZWdvcnlMaXN0Lm9wZXJhdGlvbmFsLmRhdGEgPSByZXMub3BlcmF0aW9uYWxfYXJyO1xuICAgICAgICB0aGlzLmNhdGVnb3J5TGlzdC5jb21wbGlhbmNlLmRhdGEgPSByZXMuY29tcGxpYW5jZV9hcnI7XG4gICAgICAgIHRoaXMuY2F0ZWdvcnlMaXN0Lm90aGVycy5kYXRhID0gcmVzLm90aGVyc19hcnI7XG4gICAgICB9LFxuICAgICAgKGVycikgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICAgIHRoaXMuaXNMb2FkZXIgPSBmYWxzZTtcbiAgICAgIH1cbiAgICApO1xuICB9XG4gIHNhdmVTZWxlY3RlZENhdGVnb3J5KGNhdGVnb3J5OiBhbnkpIHtcbiAgICBpZiAoXG4gICAgICB0aGlzLmNhdGVnb3J5Py5zZWxlY3RlZENhdGVnb3J5Py5jYXRlZ29yeV9pZCAhPVxuICAgICAgY2F0ZWdvcnk/LnNlbGVjdGVkQ2F0ZWdvcnk/LmNhdGVnb3J5X2lkXG4gICAgKSB7XG4gICAgICB0aGlzLmRvd25sb2FkU3RhdHVzID0gJ05PVF9ET1dOTE9BRElORyc7XG4gICAgfVxuICAgIHRoaXMuc2hvd0NhdGVnb3J5TGlzdCA9IGZhbHNlO1xuICAgIHRoaXMuY2F0ZWdvcnkgPSBjYXRlZ29yeTtcbiAgICBjb25zdCByZWZlcmVuY2UgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjc2Nyb2xsUmVmZXJlbmNlJyk7XG4gICAgaWYgKHJlZmVyZW5jZSkge1xuICAgICAgcmVmZXJlbmNlLnNjcm9sbEludG9WaWV3KHsgYmVoYXZpb3I6ICdzbW9vdGgnLCBibG9jazogJ2NlbnRlcicgfSk7XG4gICAgfVxuICAgIHRoaXMucmVzZXQoKTtcbiAgfVxuICByZW1vdmVDYXRlZ29yeSgpIHtcbiAgICB0aGlzLmNhdGVnb3J5ID0ge1xuICAgICAgdHlwZTogJ3N0cmF0ZWdpYycsXG4gICAgICBzZWxlY3RlZENhdGVnb3J5OiAnJyxcbiAgICB9O1xuICAgIHRoaXMucmVzZXQoKTtcbiAgfVxuICBnZXRTZXR0aW5nc0luZm8oKSB7XG4gICAgdGhpcy5yaXNrU2VydmljZS5nZXRSaXNrU2V0dGluZ0RldGFpbHMoKS5zdWJzY3JpYmUoXG4gICAgICAocmVzKSA9PiB7XG4gICAgICAgIHRoaXMuc2V0dGluZ3NJbmZvID0gcmVzO1xuICAgICAgfSxcbiAgICAgIChlcnIpID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgICAgfVxuICAgICk7XG4gIH1cbiAgdHJpZ2dlckJyb3dzZUZpbGUoKSB7XG4gICAgY29uc3QgZ2V0RmlsZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmaWxlSW5wdXQnKTtcbiAgICBpZiAoZ2V0RmlsZSkge1xuICAgICAgZ2V0RmlsZS5jbGljaygpO1xuICAgIH1cbiAgfVxuXG4gIHVwbG9hZGVkRmlsZShldmVudDogYW55KSB7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMucmlza0J1bGtVcGxvYWQgPSB7XG4gICAgICAgIGhlYWRlcjogW10sXG4gICAgICAgIHdlaWdodEZhY3RvcnM6IFtdLFxuICAgICAgICByaXNrczogW10sXG4gICAgICB9O1xuICAgICAgdGhpcy50ZW1wbGF0ZUluZm8gPSB7XG4gICAgICAgIG1lbWJlcklkOiAnJyxcbiAgICAgICAgY2F0ZWdvcnlJZDogJycsXG4gICAgICAgIG93bmVyTGlzdDogW10sXG4gICAgICAgIHJjTGlzdDogW10sXG4gICAgICAgIGdyY0xpc3Q6IFtdLFxuICAgICAgICBtaXRpZ2F0aW9uTGlzdDogW10sXG4gICAgICAgIGxpa2VsaWhvb2Q6IFtdLFxuICAgICAgICBpbXBhY3Q6IFtdLFxuICAgICAgICB2ZWxvY2l0eTogW10sXG4gICAgICAgIHZ1bG5lcmFiaWxpdHk6IFtdLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IHJlZmVyZW5jZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNzY3JvbGxSZWZlcmVuY2UnKTtcbiAgICAgIGlmIChyZWZlcmVuY2UpIHtcbiAgICAgICAgcmVmZXJlbmNlLnNjcm9sbEludG9WaWV3KHsgYmVoYXZpb3I6ICdzbW9vdGgnLCBibG9jazogJ2NlbnRlcicgfSk7XG4gICAgICB9XG4gICAgICB0aGlzLmlzRmlsZUVtcHR5ID0gZmFsc2U7XG4gICAgICB0aGlzLmlzV3JvbmdGaWxlID0gZmFsc2U7XG4gICAgICB0aGlzLmlzV3JvbmdGb3JtYXQgPSBmYWxzZTtcbiAgICAgIHRoaXMuZmlsZU5hbWUgPSBldmVudC50YXJnZXQuZmlsZXNbMF0ubmFtZTtcblxuICAgICAgY29uc3QgdGFyZ2V0OiBEYXRhVHJhbnNmZXIgPSBldmVudC50YXJnZXQgYXMgRGF0YVRyYW5zZmVyO1xuICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBjdXJseVxuICAgICAgaWYgKHRhcmdldC5maWxlcy5sZW5ndGggIT09IDEpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IHVzZSBtdWx0aXBsZSBmaWxlcycpO1xuICAgICAgY29uc3QgcmVhZGVyOiBGaWxlUmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcbiAgICAgIHJlYWRlci5vbmxvYWQgPSAoZTogYW55KSA9PiB7XG4gICAgICAgIGNvbnN0IGJzdHI6IHN0cmluZyA9IGUudGFyZ2V0LnJlc3VsdDtcbiAgICAgICAgY29uc3Qgd2I6IFhMU1guV29ya0Jvb2sgPSBYTFNYLnJlYWQoYnN0ciwgeyB0eXBlOiAnYmluYXJ5JyB9KTtcbiAgICAgICAgY29uc3Qgd3NuYW1lOiBzdHJpbmcgPSB3Yi5TaGVldE5hbWVzWzBdO1xuICAgICAgICBjb25zdCB3c25hbWUxOiBzdHJpbmcgPSB3Yi5TaGVldE5hbWVzWzFdO1xuXG4gICAgICAgIGNvbnN0IHdzOiBYTFNYLldvcmtTaGVldCA9IHdiLlNoZWV0c1t3c25hbWVdO1xuICAgICAgICBjb25zdCB0ZW1wRGF0YTogWExTWC5Xb3JrU2hlZXQgPSB3Yi5TaGVldHNbd3NuYW1lMV07XG5cbiAgICAgICAgdGhpcy5kYXRhID0gWExTWC51dGlscy5zaGVldF90b19qc29uKHdzLCB7XG4gICAgICAgICAgaGVhZGVyOiAxLFxuICAgICAgICB9KSBhcyBBT0E7XG5cbiAgICAgICAgY29uc3QgdERhdGEgPSBYTFNYLnV0aWxzLnNoZWV0X3RvX2pzb24odGVtcERhdGEsIHsgaGVhZGVyOiAxIH0pIGFzIEFPQTtcbiAgICAgICAgY29uc3QgdGVtcExpc3QgPSB0RGF0YS5maWx0ZXIoXG4gICAgICAgICAgKGRhdGFFbGVtZW50OiBhbnkpID0+IGRhdGFFbGVtZW50Lmxlbmd0aCA+IDBcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLmNvbHVtbldpc2VEYXRhID0gdGhpcy5nZXRDb2x1bW5XaXNlRGF0YSh0RGF0YSk7XG4gICAgICAgIHRoaXMudGVtcGxhdGVJbmZvLm1lbWJlcklkID0gdGVtcExpc3RbMF1bMjddO1xuICAgICAgICB0aGlzLnRlbXBsYXRlSW5mby5jYXRlZ29yeUlkID0gdGVtcExpc3RbMF1bMjZdO1xuICAgICAgICB0aGlzLnJpc2tCdWxrVXBsb2FkLmhlYWRlciA9IGNsb25lRGVlcChcbiAgICAgICAgICB0aGlzLmRhdGFbNF0uZmlsdGVyKChkYXRhRWxlbWVudDogYW55KSA9PiBkYXRhRWxlbWVudC5sZW5ndGggPiAwKVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMucmlza0J1bGtVcGxvYWQud2VpZ2h0RmFjdG9ycyA9IGNsb25lRGVlcChcbiAgICAgICAgICB0aGlzLmRhdGFbNV0uZmlsdGVyKCh3ZWlnaHRGYWN0b3I6IGFueSkgPT4gd2VpZ2h0RmFjdG9yLmxlbmd0aCA+IDApXG4gICAgICAgICk7XG5cbiAgICAgICAgdGVtcExpc3QuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xuICAgICAgICAgIGlmIChlbGVtZW50WzhdKSB7XG4gICAgICAgICAgICBjb25zdCBtZW1iZXIgPSB7XG4gICAgICAgICAgICAgIG5hbWU6IGVsZW1lbnRbOF0sXG4gICAgICAgICAgICAgIG1lbWJlcl9pZDogZWxlbWVudFs5XSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICB0aGlzLnRlbXBsYXRlSW5mby5vd25lckxpc3QucHVzaChtZW1iZXIpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoZWxlbWVudFsyXSkge1xuICAgICAgICAgICAgY29uc3QgbWl0aWdhdGlvbiA9IHtcbiAgICAgICAgICAgICAgbWl0aWdhdGlvbk5hbWU6IGVsZW1lbnRbMl0sXG4gICAgICAgICAgICAgIG1pdGlnYXRpb25faWQ6IGVsZW1lbnRbM10sXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdGhpcy50ZW1wbGF0ZUluZm8ubWl0aWdhdGlvbkxpc3QucHVzaChtaXRpZ2F0aW9uKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGVsZW1lbnRbNl0pIHtcbiAgICAgICAgICAgIGNvbnN0IHJjID0ge1xuICAgICAgICAgICAgICByY05hbWU6IGVsZW1lbnRbNl0sXG4gICAgICAgICAgICAgIHJjX2lkOiBlbGVtZW50WzddLFxuICAgICAgICAgICAgICBvd25lcl9pZHM6IGVsZW1lbnRbMTFdLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHRoaXMudGVtcGxhdGVJbmZvLnJjTGlzdC5wdXNoKHJjKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoZWxlbWVudFsxMl0pIHtcbiAgICAgICAgICAgIHRoaXMudGVtcGxhdGVJbmZvPy5saWtlbGlob29kLnB1c2goZWxlbWVudFsxMl0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoZWxlbWVudFsxM10pIHtcbiAgICAgICAgICAgIHRoaXMudGVtcGxhdGVJbmZvPy5pbXBhY3QucHVzaChlbGVtZW50WzEzXSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIHRoaXMucmlza0J1bGtVcGxvYWQ/LndlaWdodEZhY3RvcnM/LmluY2x1ZGVzKCdWZWxvY2l0eScpICYmXG4gICAgICAgICAgICBlbGVtZW50WzE0XVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy50ZW1wbGF0ZUluZm8udmVsb2NpdHkucHVzaChlbGVtZW50WzE0XSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIHRoaXMucmlza0J1bGtVcGxvYWQ/LndlaWdodEZhY3RvcnM/LmluY2x1ZGVzKCdWdWxuZXJhYmlsaXR5JykgJiZcbiAgICAgICAgICAgIGVsZW1lbnRbMTVdXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLnRlbXBsYXRlSW5mby52dWxuZXJhYmlsaXR5LnB1c2goZWxlbWVudFsxNV0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKHRoaXMuZmlsZU5hbWUuc3Vic3RyKC01KSAhPT0gJy54bHN4Jykge1xuICAgICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID1cbiAgICAgICAgICAgICdUaGUgaW5jb3JyZWN0IGZpbGUgaGFzIGJlZW4gdXBsb2FkZWQuIFBsZWFzZSB1cGxvYWQgdGhlIHRlbXBsYXRlIGZpbGUgZm9yIFJpc2sgQ2F0ZWdvcnk6JyArXG4gICAgICAgICAgICB0aGlzLmNhdGVnb3J5LnNlbGVjdGVkQ2F0ZWdvcnkuY2F0ZWdvcnlfbmFtZSArXG4gICAgICAgICAgICAnIFJFVFJZJztcblxuICAgICAgICAgIHRoaXMuaXNXcm9uZ0ZpbGUgPSB0cnVlO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChcbiAgICAgICAgICB0aGlzLnJpc2tCdWxrVXBsb2FkLmhlYWRlclswXSAhPT1cbiAgICAgICAgICAnV2hhdCByaXNrIHdvdWxkIHlvdSBsaWtlIHRvIG1hbmFnZT8qJ1xuICAgICAgICApIHtcbiAgICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSA9XG4gICAgICAgICAgICAnVGhlIGluY29ycmVjdCBmaWxlIGhhcyBiZWVuIHVwbG9hZGVkLiBQbGVhc2UgdXBsb2FkIHRoZSB0ZW1wbGF0ZSBmaWxlIGZvciBSaXNrIENhdGVnb3J5OicgK1xuICAgICAgICAgICAgdGhpcy5jYXRlZ29yeS5zZWxlY3RlZENhdGVnb3J5LmNhdGVnb3J5X25hbWUgK1xuICAgICAgICAgICAgJyBSRVRSWSc7XG5cbiAgICAgICAgICB0aGlzLmlzV3JvbmdGaWxlID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5pc1dyb25nRm9ybWF0ID0gdHJ1ZTtcblxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmRhdGEgPSB0aGlzLmRhdGE/LnNsaWNlKDcpO1xuICAgICAgICBjb25zdCBkZWZhdWx0T3duZXIgPSB0aGlzLnRlbXBsYXRlSW5mbz8ub3duZXJMaXN0Py5maW5kSW5kZXgoXG4gICAgICAgICAgKGVsZTogYW55KSA9PiBlbGU/Lm1lbWJlcl9pZCA9PSB0aGlzLm1lbWJlcklkXG4gICAgICAgICk7XG4gICAgICAgIGlmIChkZWZhdWx0T3duZXIgIT0gLTEpIHtcbiAgICAgICAgICB0aGlzLmRlZmF1bHRPd25lciA9IHRoaXMudGVtcGxhdGVJbmZvLm93bmVyTGlzdFtkZWZhdWx0T3duZXJdLm5hbWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPVxuICAgICAgICAgICAgJ1RoZSBpbmNvcnJlY3QgZmlsZSBoYXMgYmVlbiB1cGxvYWRlZC4gUGxlYXNlIHVwbG9hZCB0aGUgdGVtcGxhdGUgZmlsZSBmb3IgUmlzayBDYXRlZ29yeTonICtcbiAgICAgICAgICAgIHRoaXMuY2F0ZWdvcnkuc2VsZWN0ZWRDYXRlZ29yeS5jYXRlZ29yeV9uYW1lICtcbiAgICAgICAgICAgICcgUkVUUlknO1xuICAgICAgICAgIHRoaXMuaXNXcm9uZ0ZpbGUgPSB0cnVlO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChcbiAgICAgICAgICB0aGlzLm1lbWJlcl9vYmpfaWQgIT0gdGhpcy50ZW1wbGF0ZUluZm8ubWVtYmVySWQgfHxcbiAgICAgICAgICB0aGlzLmNhdGVnb3J5LnNlbGVjdGVkQ2F0ZWdvcnkuX2lkICE9IHRoaXMudGVtcGxhdGVJbmZvLmNhdGVnb3J5SWRcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPVxuICAgICAgICAgICAgJ1RoZSBpbmNvcnJlY3QgZmlsZSBoYXMgYmVlbiB1cGxvYWRlZC4gUGxlYXNlIHVwbG9hZCB0aGUgdGVtcGxhdGUgZmlsZSBmb3IgUmlzayBDYXRlZ29yeTonICtcbiAgICAgICAgICAgIHRoaXMuY2F0ZWdvcnkuc2VsZWN0ZWRDYXRlZ29yeS5jYXRlZ29yeV9uYW1lICtcbiAgICAgICAgICAgICcgUkVUUlknO1xuXG4gICAgICAgICAgdGhpcy5pc1dyb25nRmlsZSA9IHRydWU7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaXNFbXB0eSA9IHRoaXMuY2hlY2tFbXB0eUZpbGUoKTtcbiAgICAgICAgaWYgKGlzRW1wdHkpIHtcbiAgICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSA9XG4gICAgICAgICAgICAnWW91IGhhdmUgdXBsb2FkZWQgYSBibGFuayB0ZW1wbGF0ZS4gUGxlYXNlIGFkZCBkZXRhaWxzIGZvciBhbGwgbWFuZGF0b3J5IGZpZWxkcy4gUkVUUlknO1xuICAgICAgICAgIHRoaXMuaXNGaWxlRW1wdHkgPSB0cnVlO1xuICAgICAgICAgIHRoaXMuaXNXcm9uZ0ZpbGUgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLmlzV3JvbmdGb3JtYXQgPSBmYWxzZTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKHRoaXMucmlza0J1bGtVcGxvYWQuaGVhZGVyWzZdID09PSAnUmlzayBBc3Nlc3NtZW50IERlYWRsaW5lKicpIHtcbiAgICAgICAgICAgIHRoaXMuYXNzZXNzbWVudERlYWRMaW5lID0gdHJ1ZTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5hc3Nlc3NtZW50RGVhZExpbmUgPSBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5pc0ZpbGVFbXB0eSA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuaXNXcm9uZ0ZpbGUgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLmlzV3JvbmdGb3JtYXQgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLmZpbGVWYWx1ZSA9ICcnO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJpc2tEYXRhID0gdGhpcy5kYXRhLmZpbHRlcihcbiAgICAgICAgICAoZGF0YUVsZW1lbnQ6IGFueSkgPT4gZGF0YUVsZW1lbnQubGVuZ3RoID4gMFxuICAgICAgICApO1xuXG4gICAgICAgIHJpc2tEYXRhLmZvckVhY2goKHJpc2s6IGFueSwgaW5kZXg6IGFueSkgPT4ge1xuICAgICAgICAgIC8vIGNvbnN0IG9iajogYW55ID0ge1xuICAgICAgICAgIC8vICAgcmlza05hbWU6IHJpc2tbMF0gPz8gJycsXG4gICAgICAgICAgLy8gICBkZXNjcmlwdGlvbjogcmlza1sxXSA/PyAnJyxcbiAgICAgICAgICAvLyAgIHJjTmFtZTogcmlza1syXSA/PyAnJyxcbiAgICAgICAgICAvLyAgIG93bmVyOiByaXNrWzNdID8/ICcnLFxuICAgICAgICAgIC8vICAgbWl0aWdhdGlvblByaW9yaXR5OiByaXNrWzRdID8/ICcnLFxuICAgICAgICAgIC8vICAgb3ZlcnNlZXI6IHJpc2tbNV0gPz8gJycsXG4gICAgICAgICAgLy8gICBpc1ZhbGlkOiB0aGlzLmNoZWNrVmFsaWRpdHkocmlzayksXG4gICAgICAgICAgLy8gfVxuXG4gICAgICAgICAgLy8gaWYgKHRoaXMuYXNzZXNzbWVudERlYWRMaW5lKSB7XG4gICAgICAgICAgLy8gICBvYmouYXNzZXNzbWVudERlYWRMaW5lID0gcmlza1s2XSA/PyAnJztcbiAgICAgICAgICAvLyAgIG9iai5saWtlbGlob29kID0gcmlza1s3XSA/PyAnJztcbiAgICAgICAgICAvLyAgIG9iai5pbXBhY3QgPSByaXNrWzhdID8/ICcnO1xuICAgICAgICAgIC8vICAgaWYgKHRoaXMucmlza0J1bGtVcGxvYWQud2VpZ2h0RmFjdG9ycy5sZW5ndGggPT0gMykge1xuICAgICAgICAgIC8vICAgICBvYmoudmVsb2NpdHkgPSByaXNrWzldID8/ICcnO1xuICAgICAgICAgIC8vICAgfVxuICAgICAgICAgIC8vICAgaWYgKHRoaXMucmlza0J1bGtVcGxvYWQud2VpZ2h0RmFjdG9ycy5sZW5ndGggPT0gNCkge1xuICAgICAgICAgIC8vICAgICBvYmoudmVsb2NpdHkgPSByaXNrWzldID8/ICcnO1xuICAgICAgICAgIC8vICAgICBvYmoudnVsbmVyYWJpbGl0eSA9IHJpc2tbMTBdID8/ICcnO1xuICAgICAgICAgIC8vICAgfVxuICAgICAgICAgIC8vICAgY29uc3QgY3VzdG9tVGFnczogYW55ID0gW107XG5cbiAgICAgICAgICAvLyAgIHRoaXMuY2F0ZWdvcnkuc2VsZWN0ZWRDYXRlZ29yeS5jdXN0b21fdGFnLmZvckVhY2goKHRhZzogYW55LCBpbmRleDogYW55KSA9PiB7XG4gICAgICAgICAgLy8gICAgIGlmICh0YWcpIHtcbiAgICAgICAgICAvLyAgICAgICBjb25zdCBjVGFnID0ge1xuICAgICAgICAgIC8vICAgICAgICAgY3VzdG9tX3RhZ192YWx1ZTogcmlza1s3ICsgdGhpcy5yaXNrQnVsa1VwbG9hZC53ZWlnaHRGYWN0b3JzLmxlbmd0aCArIGluZGV4XSA/PyAnJyxcbiAgICAgICAgICAvLyAgICAgICAgIGN1c3RvbV90YWdfbmFtZTogdGFnLnRhZ05hbWVcbiAgICAgICAgICAvLyAgICAgICB9O1xuICAgICAgICAgIC8vICAgICAgIGN1c3RvbVRhZ3MucHVzaChjVGFnKTtcbiAgICAgICAgICAvLyAgICAgfVxuICAgICAgICAgIC8vICAgfSk7XG4gICAgICAgICAgLy8gICBvYmouY3VzdG9tVGFnID0gY3VzdG9tVGFncztcbiAgICAgICAgICAvLyB9IGVsc2Uge1xuICAgICAgICAgIC8vICAgb2JqLmxpa2VsaWhvb2QgPSByaXNrWzZdID8/ICcnO1xuICAgICAgICAgIC8vICAgb2JqLmltcGFjdCA9IHJpc2tbN10gPz8gJyc7XG5cbiAgICAgICAgICAvLyAgIGlmICh0aGlzLnJpc2tCdWxrVXBsb2FkLndlaWdodEZhY3RvcnMubGVuZ3RoID09IDMpIHtcbiAgICAgICAgICAvLyAgICAgb2JqLnZlbG9jaXR5ID0gcmlza1s4XSA/PyAnJztcbiAgICAgICAgICAvLyAgIH1cbiAgICAgICAgICAvLyAgIGlmICh0aGlzLnJpc2tCdWxrVXBsb2FkLndlaWdodEZhY3RvcnMubGVuZ3RoID09IDQpIHtcbiAgICAgICAgICAvLyAgICAgb2JqLnZlbG9jaXR5ID0gcmlza1s4XSA/PyAnJztcbiAgICAgICAgICAvLyAgICAgb2JqLnZ1bG5lcmFiaWxpdHkgPSByaXNrWzldID8/ICcnO1xuICAgICAgICAgIC8vICAgfVxuICAgICAgICAgIC8vICAgY29uc3QgY3VzdG9tVGFnczogYW55ID0gW107XG4gICAgICAgICAgLy8gICB0aGlzLmNhdGVnb3J5LnNlbGVjdGVkQ2F0ZWdvcnkuY3VzdG9tX3RhZy5mb3JFYWNoKCh0YWc6IGFueSwgaW5kZXg6IGFueSkgPT4ge1xuICAgICAgICAgIC8vICAgICBpZiAodGFnKSB7XG4gICAgICAgICAgLy8gICAgICAgY29uc3QgY1RhZyA9IHtcbiAgICAgICAgICAvLyAgICAgICAgIGN1c3RvbV90YWdfdmFsdWU6IHJpc2tbNiArIHRoaXMucmlza0J1bGtVcGxvYWQud2VpZ2h0RmFjdG9ycy5sZW5ndGggKyBpbmRleF0gPz8gJycsXG4gICAgICAgICAgLy8gICAgICAgICBjdXN0b21fdGFnX25hbWU6IHRhZy50YWdOYW1lXG4gICAgICAgICAgLy8gICAgICAgfTtcbiAgICAgICAgICAvLyAgICAgICBjdXN0b21UYWdzLnB1c2goY1RhZyk7XG4gICAgICAgICAgLy8gICAgIH1cbiAgICAgICAgICAvLyAgIH0pO1xuICAgICAgICAgIC8vICAgb2JqLmN1c3RvbVRhZyA9IGN1c3RvbVRhZ3M7XG4gICAgICAgICAgLy8gfVxuICAgICAgICAgIGxldCBvYmogPSB0aGlzLnNldFJpc2tEZXRhaWxzKHJpc2spO1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIG9iaj8ubGlrZWxpaG9vZCAmJlxuICAgICAgICAgICAgIXRoaXMudGVtcGxhdGVJbmZvPy5saWtlbGlob29kLmluY2x1ZGVzKG9iaj8ubGlrZWxpaG9vZClcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIG9iai5pc1ZhbGlkID0gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChvYmo/LmltcGFjdCAmJiAhdGhpcy50ZW1wbGF0ZUluZm8/LmltcGFjdC5pbmNsdWRlcyhvYmo/LmltcGFjdCkpIHtcbiAgICAgICAgICAgIG9iai5pc1ZhbGlkID0gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIG9iaj8udmVsb2NpdHkgJiZcbiAgICAgICAgICAgICF0aGlzLnRlbXBsYXRlSW5mbz8udmVsb2NpdHkuaW5jbHVkZXMob2JqPy52ZWxvY2l0eSlcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIG9iai5pc1ZhbGlkID0gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIG9iaj8udnVsbmVyYWJpbGl0eSAmJlxuICAgICAgICAgICAgIXRoaXMudGVtcGxhdGVJbmZvPy52dWxuZXJhYmlsaXR5LmluY2x1ZGVzKG9iaj8udnVsbmVyYWJpbGl0eSlcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIG9iai5pc1ZhbGlkID0gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICAgIG9iai5pc0dyY05vdFZhbGlkID0gdGhpcy52YWxpZGF0ZUdyY09iamVjdEZvclJjKFxuICAgICAgICAgICAgb2JqLnJjTmFtZSxcbiAgICAgICAgICAgIG9iai5saW5rZWRHcmNPYmplY3RcbiAgICAgICAgICApO1xuICAgICAgICAgIGlmIChvYmouaXNHcmNOb3RWYWxpZCkge1xuICAgICAgICAgICAgb2JqLmlzVmFsaWQgPSBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5yaXNrQnVsa1VwbG9hZC5yaXNrcy5wdXNoKG9iaik7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmdldEdyY0xpc3QoKTtcbiAgICAgICAgdGhpcy5pc0ZpbGVFbXB0eSA9IGZhbHNlO1xuICAgICAgICB0aGlzLmlzV3JvbmdGaWxlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuaXNXcm9uZ0Zvcm1hdCA9IGZhbHNlO1xuICAgICAgICB0aGlzLnNob3dFeGNlbCA9IHRydWU7XG4gICAgICB9O1xuICAgICAgcmVhZGVyLnJlYWRBc0JpbmFyeVN0cmluZyh0YXJnZXQ/LmZpbGVzWzBdKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgIH1cbiAgfVxuXG4gIGNoZWNrRW1wdHlGaWxlKCkge1xuICAgIGxldCBpc0VtcHR5ID0gZmFsc2U7XG4gICAgdGhpcy5kYXRhID0gdGhpcy5kYXRhLmZpbHRlcigoZGF0YUVsZW1lbnQ6IGFueSkgPT4gZGF0YUVsZW1lbnQubGVuZ3RoID4gMCk7XG4gICAgaWYgKHRoaXMuZGF0YS5sZW5ndGggPCAxKSB7XG4gICAgICBpc0VtcHR5ID0gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGlzRW1wdHk7XG4gIH1cblxuICBjaGVja1ZhbGlkaXR5KHJpc2s6IGFueSkge1xuICAgIGNvbnN0IHJlID0gLyZuYnNwO3w8YnI+L2c7XG4gICAgbGV0IHRyaW1tZWROYW1lID0gcmlza1swXSA/IHJpc2tbMF0udG9TdHJpbmcoKS5yZXBsYWNlKHJlLCAnJykudHJpbSgpIDogJyc7XG4gICAgdHJpbW1lZE5hbWUgPSB0cmltbWVkTmFtZS5yZXBsYWNlKC8gICsvZywgJyAnKTtcbiAgICAvLyB8fCAodGhpcy5hc3Nlc3NtZW50RGVhZExpbmUgJiYgKCFyaXNrWzZdKSlcbiAgICBpZiAoXG4gICAgICAhdHJpbW1lZE5hbWUgfHxcbiAgICAgIChyaXNrWzNdICYmIHJpc2tbM10gPT0gcmlza1s3XSkgfHxcbiAgICAgICghcmlza1szXSAmJiB0aGlzLmRlZmF1bHRPd25lciA9PSByaXNrWzddKSB8fFxuICAgICAgIXJpc2tbMl0gfHxcbiAgICAgICF0aGlzLmZyZXF1ZW5jeVR5cGU/LmluY2x1ZGVzKHJpc2tbNV0/LnRvTG93ZXJDYXNlKCkpXG4gICAgKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIGRvd25sb2FkVGVtcGxhdGUoKSB7XG4gICAgdGhpcy5kb3dubG9hZFN0YXR1cyA9ICdET1dOTE9BRElORyc7XG4gICAgdGhpcy5kb3dubG9hZFBlcmNlbnQgPSAwO1xuICAgIGNvbnN0IHRvZGF5ID0gbmV3IERhdGUoKS50b0lTT1N0cmluZygpLnNwbGl0KCdUJyk7XG4gICAgY29uc3QgZG93bmxvYWREYXRlID0gdG9kYXlbMF07XG4gICAgY29uc3QgZmlsZU5hbWUgPVxuICAgICAgJ1ZDb21wbHkgLSBSaXNrIE1vZHVsZSAtIEFkZCBNdWx0aXBsZSBSaXNrcyAtICcgK1xuICAgICAgdGhpcy5jYXRlZ29yeT8uc2VsZWN0ZWRDYXRlZ29yeT8uY2F0ZWdvcnlfbmFtZSArXG4gICAgICAnIC0gJyArXG4gICAgICBkb3dubG9hZERhdGUgK1xuICAgICAgJy54bHN4JztcblxuICAgIHRoaXMucmlza1NlcnZpY2VcbiAgICAgIC5kb3dubG9hZFRlbXBsYXRlKHRoaXMuY2F0ZWdvcnkuc2VsZWN0ZWRDYXRlZ29yeS5faWQpXG4gICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAoZGF0YTogYW55KSA9PiB7XG4gICAgICAgICAgaWYgKGRhdGEubG9hZGVkKSB7XG4gICAgICAgICAgICB0aGlzLmRvd25sb2FkUGVyY2VudCA9IDEwMCAqIChkYXRhLmxvYWRlZCAvIGRhdGEudG90YWwpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoZGF0YS5ib2R5KSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5kb3dubG9hZFN0YXR1cyA9IHRoaXMucmlza1NlcnZpY2UuZG93bkxvYWRGaWxlKFxuICAgICAgICAgICAgICAgIGRhdGEuYm9keSxcbiAgICAgICAgICAgICAgICAnYXBwbGljYXRpb24veGxzeCcsXG4gICAgICAgICAgICAgICAgZmlsZU5hbWVcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0sIDE1MDApO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgKGVycm9yKSA9PiB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICAgICAgdGhpcy5kb3dubG9hZFN0YXR1cyA9ICdET1dOTE9BREVEJztcbiAgICAgICAgfVxuICAgICAgKTtcbiAgfVxuXG4gIHN1Ym1pdFJpc2tCdWxrVXBsb2FkKGNvbXBsZXRlQXNzZXNzbWVudDogYW55KSB7XG4gICAgdGhpcy5sb2FkZXIgPSB0cnVlO1xuICAgIGNvbnN0IHBheWxvYWQ6IGFueSA9IFtdO1xuICAgIHRoaXMucmlza0J1bGtVcGxvYWQucmlza3MuZm9yRWFjaCgocmlzazogYW55KSA9PiB7XG4gICAgICBsZXQgZnJlcXVlbmN5VmFsdWUgPSAnJztcbiAgICAgIGlmIChyaXNrPy5mcmVxdWVuY3kudG9Mb3dlckNhc2UoKSA9PT0gJ29uZSB0aW1lJykge1xuICAgICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoKTtcbiAgICAgICAgZGF0ZS5zZXREYXRlKGRhdGUuZ2V0RGF0ZSgpICsgMSk7XG4gICAgICAgIGZyZXF1ZW5jeVZhbHVlID1cbiAgICAgICAgICAnMH4nICtcbiAgICAgICAgICAnJyArXG4gICAgICAgICAgZGF0ZS5nZXRGdWxsWWVhcigpICtcbiAgICAgICAgICAnficgK1xuICAgICAgICAgIChkYXRlLmdldE1vbnRoKCkgKyAxKSArXG4gICAgICAgICAgJ34nICtcbiAgICAgICAgICBkYXRlLmdldERhdGUoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZyZXF1ZW5jeVZhbHVlID0gdGhpcy5mcmVxdWVuY3lTZXJ2aWNlLnNob3J0SGFuZF9mcmVxQ2FsKFxuICAgICAgICAgIHJpc2s/LmZyZXF1ZW5jeVxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBpZiAocmlzay5pc1ZhbGlkKSB7XG4gICAgICAgIGNvbnN0IG9iaiA9IHtcbiAgICAgICAgICB0aXRsZTogcmlzaz8ucmlza05hbWUsXG4gICAgICAgICAgZGVzY3JpcHRpb246IHJpc2s/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgIGNhdGVnb3J5X2N1c3RvbV90YWc6IHJpc2s/LmN1c3RvbVRhZyxcbiAgICAgICAgICBhc3Nlc3NtZW50X2RlYWRsaW5lX2VuYWJsZTpcbiAgICAgICAgICAgIHRoaXMuc2V0dGluZ3NJbmZvPy5hc3Nlc3NtZW50X2RlYWRsaW5lX2VuYWJsZSxcbiAgICAgICAgICBvd25lcjogcmlzaz8ub3duZXJcbiAgICAgICAgICAgID8gdGhpcy5yZXR1cm5JZHMocmlzaz8ub3duZXIsICdvd25lcicpXG4gICAgICAgICAgICA6IHRoaXMucmV0dXJuSWRzKHRoaXMuZGVmYXVsdE93bmVyLCAnb3duZXInKSxcbiAgICAgICAgICByaXNrX293bmVyOiByaXNrPy5yaXNrT3duZXIsXG4gICAgICAgICAgY2F0ZWdvcnk6IHRoaXMuY2F0ZWdvcnk/LnNlbGVjdGVkQ2F0ZWdvcnk/LmNhdGVnb3J5X2lkXG4gICAgICAgICAgICA/IFt0aGlzLmNhdGVnb3J5Py5zZWxlY3RlZENhdGVnb3J5Py5jYXRlZ29yeV9pZF1cbiAgICAgICAgICAgIDogW10sXG4gICAgICAgICAgbWFuYWdlX292ZXJzaWdodDogdGhpcy5yZXR1cm5JZHMocmlzaz8ub3ZlcnNlZXIsICdvdmVyc2VlcicpLFxuICAgICAgICAgIHJjX2lkOiB0aGlzLnJldHVybklkcyhyaXNrPy5yY05hbWUsICdyY19pZCcpLFxuICAgICAgICAgIGhlYWRfaWRzOiB0aGlzLnJldHVybklkcyhyaXNrPy5yY05hbWUsICdyY19vd25lcl9pZHMnKSwgLy8yIHRvIGJlIGFyYXlcbiAgICAgICAgICBsaW5rZWRfR1JDX2lkczogdGhpcy5mZkxpbmtlZEdyY09iamVjdHNcbiAgICAgICAgICAgID8gdGhpcy5yZXR1cm5JZHMocmlzaz8ubGlua2VkR3JjT2JqZWN0LCAnZ3JjX2lkJylcbiAgICAgICAgICAgIDogW10sXG4gICAgICAgICAgcmF0aW5nX2FycjogW1xuICAgICAgICAgICAgcmlzaz8ubGlrZWxpaG9vZCA/IHJpc2s/Lmxpa2VsaWhvb2Quc3BsaXQoJyAtICcpWzFdIDogMCxcbiAgICAgICAgICAgIHJpc2s/LmltcGFjdCA/IHJpc2s/LmltcGFjdC5zcGxpdCgnIC0gJylbMV0gOiAwLFxuICAgICAgICAgICAgcmlzaz8udmVsb2NpdHkgPyByaXNrPy52ZWxvY2l0eS5zcGxpdCgnIC0gJylbMV0gOiAwLFxuICAgICAgICAgICAgcmlzaz8udnVsbmVyYWJpbGl0eSA/IHJpc2s/LnZ1bG5lcmFiaWxpdHkuc3BsaXQoJyAtICcpWzFdIDogMCxcbiAgICAgICAgICBdLFxuICAgICAgICAgIG1lbWJlcl9pZDogdGhpcy5tZW1iZXJJZCxcbiAgICAgICAgICBvcmdhbmlzYXRpb25faWQ6IHRoaXMub3JnYW5pemF0aW9uSWQsXG4gICAgICAgICAgcmlza19wcm9ncmVzc19mbGFnOiAxLFxuICAgICAgICAgIElmQXNzZXNzbWVudERvbmU6IDAsXG4gICAgICAgICAgd29ya3Nob3BfaWQ6ICcnLFxuICAgICAgICAgIGNvbXBsZXRlX2Fzc2Vzc21lbnQ6IGNvbXBsZXRlQXNzZXNzbWVudCA/IDEgOiAwLFxuICAgICAgICAgIG1pdGlnYXRpb246IHRoaXMucmV0dXJuSWRzKHJpc2s/Lm1pdGlnYXRpb25Qcmlvcml0eSwgJ21pdGlnYXRpb24nKSwgLy8zIHdyb25nXG4gICAgICAgICAgd2VpZ2h0YWdlX2VuYWJsZTogdGhpcy5zZXR0aW5nc0luZm8/LndlaWdodGFnZV9lbmFibGUsXG4gICAgICAgICAgdHJlYXRtZW50X3R5cGU6IHRoaXMuc2V0dGluZ3NJbmZvPy50cmVhdG1lbnRfY3JpdGVyaWEsXG4gICAgICAgICAgd2VpZ2h0YWdlX2RldGFpbHM6IHRoaXMuc2V0dGluZ3NJbmZvPy53ZWlnaHRhZ2VfZGV0YWlscyxcbiAgICAgICAgICB3ZWlnaHRhZ2Vfc2V0X2J5OiB0aGlzLnNldHRpbmdzSW5mbz8ud2VpZ2h0YWdlX3NldF9ieSxcbiAgICAgICAgICB3ZWlnaHRhZ2Vfc3RyOiBbXG4gICAgICAgICAgICB0aGlzLnNldHRpbmdzSW5mbz8ud2VpZ2h0YWdlX2RldGFpbHM/LmltcGFjdC52YWx1ZSxcbiAgICAgICAgICAgIHRoaXMuc2V0dGluZ3NJbmZvPy53ZWlnaHRhZ2VfZGV0YWlscz8ubGlrZWxpaG9vZC52YWx1ZSxcbiAgICAgICAgICAgIHRoaXMuc2V0dGluZ3NJbmZvPy53ZWlnaHRhZ2VfZGV0YWlscz8udmVsb2NpdHkudmFsdWUsXG4gICAgICAgICAgICB0aGlzLnNldHRpbmdzSW5mbz8ud2VpZ2h0YWdlX2RldGFpbHM/LnZ1bG5lcmFiaWxpdHkudmFsdWUsXG4gICAgICAgICAgXSxcbiAgICAgICAgICAvLyBhc3Nlc3NtZW50X2RlYWRsaW5lX3NldF9ieTogdGhpcy5zZXR0aW5nc0luZm8/LmFzc2Vzc21lbnRfZGVhZGxpbmVfc2V0X2J5LCAvL2NoZWNrMSBub3QgYXBwZWFyaW5nXG4gICAgICAgICAgYXNzZXNzbWVudF9kZWFkbGluZV9zZXRfYnk6XG4gICAgICAgICAgICB0aGlzLnNldHRpbmdzSW5mbz8uYXNzZXNzbWVudF9kZWFkbGluZV9zZXRfYnkgPz8gdGhpcy5tZW1iZXJJZCwgLy9jaGVjazEgbm90IGFwcGVhcmluZ1xuICAgICAgICAgIGFzc2Vzc21lbnRfZGVhZGxpbmVfZGF5czogdGhpcy5zZXR0aW5nc0luZm9cbiAgICAgICAgICAgID8uYXNzZXNzbWVudF9kZWFkbGluZV9lbmFibGVcbiAgICAgICAgICAgID8gdGhpcy5zZXR0aW5nc0luZm8/LmFzc2Vzc21lbnRfZGVhZGxpbmVfZGF5c1xuICAgICAgICAgICAgOiByaXNrPy5hc3Nlc3NtZW50RGVhZExpbmUsXG4gICAgICAgICAgZnJlcXVlbmN5X2RldGFpbHM6IHtcbiAgICAgICAgICAgIGZyZXF1ZW5jeTogZnJlcXVlbmN5VmFsdWUsXG4gICAgICAgICAgICBzdGFydGVkX2F0OlxuICAgICAgICAgICAgICB0aGlzLmNoYW5nZVRpbWVab25lKG5ldyBEYXRlKCkpID8/IG1vbWVudCgpLmZvcm1hdCgnWVlZWS1NTS1ERCcpLFxuICAgICAgICAgICAgZnJlcXVlbmN5X3RpbWU6ICcxMTowMCBwbScsXG4gICAgICAgICAgICByZW1pbmRfYmVmb3JlX2RheXM6IHJpc2s/LmVtYWlsUmVtaW5kZXJcbiAgICAgICAgICAgICAgPyByaXNrPy5lbWFpbFJlbWluZGVyXG4gICAgICAgICAgICAgIDogdGhpcy5zZXREZWZhdWx0RW1haWxSZW1pbmRlclZhbHVlKHJpc2s/LmZyZXF1ZW5jeSksXG4gICAgICAgICAgfSxcbiAgICAgICAgICByaXNrX2xhYmVsOiB0aGlzLnNldFJpc2tMYWJlbChyaXNrPy5yaXNrTGFiZWwpLFxuICAgICAgICAgIG1pdGlnYXRpb25fcGxhbl9yZWNvbW1lbmRhdGlvbjogcmlzaz8ubWl0aWdhdGlvblBsYW5zID8/ICcnLFxuICAgICAgICAgIHNhbWVSaXNrUmF0aW5nc0ZvckFsbFJDOiByaXNrPy5hcHBseVNhbWVSaXNrUmF0aW5nID8/ICdObycsXG4gICAgICAgIH07XG4gICAgICAgIHBheWxvYWQucHVzaChvYmopO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMucmlza1NlcnZpY2UuYWRkQnVsa1Jpc2socGF5bG9hZCkuc3Vic2NyaWJlKFxuICAgICAgKHJlczogYW55KSA9PiB7XG4gICAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc2hvd0V4Y2VsID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc2hvd1NtaWxleSA9IHRydWU7XG4gICAgICAgIHRoaXMucmlza0RhdGEgPSByZXM7XG4gICAgICB9LFxuICAgICAgKGVycikgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc2hvd0V4Y2VsID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc25hY2tCYXIuc2hvdyhcbiAgICAgICAgICAnT09QUyEgU29tZXRoaW5nIHdlbnQgd3JvbmcgYW5kIHRoZSBwYWdlIGNvdWxkIG5vdCBiZSBsb2FkZWQuIENvdWxkIHlvdSBwbGVhc2UgdHJ5IG9uZSBtb3JlIHRpbWU/JyxcbiAgICAgICAgICAnYWxlcnQnXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIHJldHVybklkcyhpdGVtOiBhbnksIGtleTogc3RyaW5nKSB7XG4gICAgc3dpdGNoIChrZXkpIHtcbiAgICAgIGNhc2UgJ3JjX2lkJzpcbiAgICAgICAgY29uc3QgcmNJZDogYW55ID0gW107XG4gICAgICAgIHRoaXMudGVtcGxhdGVJbmZvLnJjTGlzdC5mb3JFYWNoKChyY19lbGVtZW50OiBhbnkpID0+IHtcbiAgICAgICAgICBpZiAocmNfZWxlbWVudC5yY05hbWUgPT0gaXRlbSkge1xuICAgICAgICAgICAgcmNJZC5wdXNoKHJjX2VsZW1lbnQucmNfaWQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiByY0lkO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3JjX293bmVyX2lkcyc6XG4gICAgICAgIGxldCBvd25lcl9pZHM6IGFueSA9IFtdO1xuICAgICAgICB0aGlzLnRlbXBsYXRlSW5mby5yY0xpc3QuZm9yRWFjaCgoaGVhZGVySWRzOiBhbnkpID0+IHtcbiAgICAgICAgICBpZiAoaGVhZGVySWRzLnJjTmFtZSA9PSBpdGVtICYmIGhlYWRlcklkcy5vd25lcl9pZHMpIHtcbiAgICAgICAgICAgIG93bmVyX2lkcyA9IGhlYWRlcklkcy5vd25lcl9pZHMuaW5jbHVkZXMoJywnKVxuICAgICAgICAgICAgICA/IGhlYWRlcklkcy5vd25lcl9pZHMuc3BsaXQoJywnKS5tYXAoTnVtYmVyKVxuICAgICAgICAgICAgICA6IFtOdW1iZXIoaGVhZGVySWRzLm93bmVyX2lkcyldO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBvd25lcl9pZHM7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnb3duZXInOlxuICAgICAgICBjb25zdCBvd25lcklkOiBhbnkgPSBbXTtcbiAgICAgICAgdGhpcy50ZW1wbGF0ZUluZm8ub3duZXJMaXN0LmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xuICAgICAgICAgIGlmIChlbGVtZW50Lm5hbWUgPT0gaXRlbSkge1xuICAgICAgICAgICAgb3duZXJJZC5wdXNoKGVsZW1lbnQubWVtYmVyX2lkKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gb3duZXJJZDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdvdmVyc2Vlcic6XG4gICAgICAgIGNvbnN0IG92ZXJzZWVySWQ6IGFueSA9IFtdO1xuICAgICAgICB0aGlzLnRlbXBsYXRlSW5mby5vd25lckxpc3QuZm9yRWFjaCgob3NfZWxlbWVudDogYW55KSA9PiB7XG4gICAgICAgICAgaWYgKG9zX2VsZW1lbnQubmFtZSA9PSBpdGVtKSB7XG4gICAgICAgICAgICBvdmVyc2VlcklkLnB1c2gob3NfZWxlbWVudC5tZW1iZXJfaWQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBvdmVyc2VlcklkO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnbWl0aWdhdGlvbic6XG4gICAgICAgIGxldCBtaXRpZ2F0aW9uSWQ6IGFueSA9IDA7XG4gICAgICAgIHRoaXMudGVtcGxhdGVJbmZvLm1pdGlnYXRpb25MaXN0LmZvckVhY2goKG1pdGlnYXRpb246IGFueSkgPT4ge1xuICAgICAgICAgIGlmIChtaXRpZ2F0aW9uLm1pdGlnYXRpb25OYW1lID09IGl0ZW0pIHtcbiAgICAgICAgICAgIG1pdGlnYXRpb25JZCA9IG1pdGlnYXRpb24ubWl0aWdhdGlvbl9pZDtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gbWl0aWdhdGlvbklkO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnZ3JjX2lkJzpcbiAgICAgICAgY29uc3QgZ3JjSWQ6IGFueSA9IFtdO1xuICAgICAgICBjb25zdCBncmNFbGVtZW50ID0gdGhpcy50ZW1wbGF0ZUluZm8uZ3JjTGlzdC5maW5kKFxuICAgICAgICAgIChncmNfZWxlbWVudDogYW55KSA9PiBncmNfZWxlbWVudC5ncmNOYW1lID09PSBpdGVtXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiBncmNFbGVtZW50ID8gW2dyY0VsZW1lbnQuZ3JjSWRdIDogW107XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHJlc2V0KCkge1xuICAgIHRoaXMucmlza0J1bGtVcGxvYWQgPSB7XG4gICAgICBoZWFkZXI6IFtdLFxuICAgICAgd2VpZ2h0RmFjdG9yczogW10sXG4gICAgICByaXNrczogW10sXG4gICAgfTtcblxuICAgIHRoaXMudGVtcGxhdGVJbmZvID0ge1xuICAgICAgbWVtYmVySWQ6ICcnLFxuICAgICAgY2F0ZWdvcnlJZDogJycsXG4gICAgICBvd25lckxpc3Q6IFtdLFxuICAgICAgcmNMaXN0OiBbXSxcbiAgICAgIG1pdGlnYXRpb25MaXN0OiBbXSxcbiAgICAgIGdyY0xpc3Q6IFtdLFxuICAgIH07XG5cbiAgICB0aGlzLmlzRmlsZUVtcHR5ID0gZmFsc2U7XG4gICAgdGhpcy5pc1dyb25nRmlsZSA9IGZhbHNlO1xuICAgIHRoaXMuaXNXcm9uZ0Zvcm1hdCA9IGZhbHNlO1xuICAgIHRoaXMuZmlsZU5hbWUgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5kYXRhID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuYXNzZXNzbWVudERlYWRMaW5lID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuc2hvd0V4Y2VsID0gZmFsc2U7XG4gICAgdGhpcy5zaG93U21pbGV5ID0gZmFsc2U7XG4gIH1cbiAgYWN0aW9uKGV2ZW50OiBzdHJpbmcpIHtcbiAgICBzd2l0Y2ggKGV2ZW50KSB7XG4gICAgICBjYXNlICdhZGRNb3JlJzpcbiAgICAgICAgdGhpcy5jYXRlZ29yeSA9IHtcbiAgICAgICAgICB0eXBlOiAnc3RyYXRlZ2ljJyxcbiAgICAgICAgICBzZWxlY3RlZENhdGVnb3J5OiAnJyxcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5kb3dubG9hZFN0YXR1cyA9ICdOT1RfRE9XTkxPQURJTkcnO1xuICAgICAgICB0aGlzLnJlc2V0KCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAndmlld1Jpc2tzJzpcbiAgICAgICAgdGhpcy52aWV3Umlza3MoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgY2xvc2VTbWlsZXkoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuc2hvd1NtaWxleSA9IGZhbHNlO1xuICAgIHRoaXMuY2xvc2VXb3JrZmxvdy5lbWl0KHsgZXZ0OiB0aGlzLnJpc2tEYXRhLCBjb25maXJtOiBmYWxzZSB9KTtcbiAgfVxuXG4gIHZpZXdSaXNrcygpOiB2b2lkIHtcbiAgICB0aGlzLmRpc2Nvbm5lY3RSZWZyZXNoLmVtaXQoZmFsc2UpO1xuICAgIGxldCB1cmw6IHN0cmluZztcbiAgICBpZiAod2luZG93LmxvY2F0aW9uLmhvc3Quc3RhcnRzV2l0aCgnbG9jYWxob3N0JykpIHtcbiAgICAgIHVybCA9ICdodHRwOi8vJyArIHdpbmRvdy5sb2NhdGlvbi5ob3N0O1xuICAgIH0gZWxzZSB7XG4gICAgICB1cmwgPSAnaHR0cHM6Ly8nICsgd2luZG93LmxvY2F0aW9uLmhvc3Q7XG4gICAgfVxuICAgIGlmICh3aW5kb3cubG9jYXRpb24uaG9zdC5zdGFydHNXaXRoKCdsb2NhbGhvc3QnKSkge1xuICAgICAgdXJsICs9ICcvcmlzay1yZWdpc3Rlcic7XG4gICAgfSBlbHNlIHtcbiAgICAgIHVybCArPSAnL3Jpc2svcmlzay1yZWdpc3Rlcic7XG4gICAgfVxuICAgIHRoaXMuaWZyYW1lU2VydmljZS5yZWRpcmVjdElmSW5JZnJhbWUodXJsLCB0cnVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJdCB0YWtlcyBhbiBhcnJheSBvZiBzdHJpbmdzIGFuZCByZXR1cm5zIGFuIG9iamVjdCB3aXRoIHRoZSBhcnJheSB2YWx1ZXMgYXMgcHJvcGVydGllcy5cbiAgICogPC9jb2RlPlxuICAgKiBAcGFyYW0ge2FueX0gcmlzayAtIGFueSA9IFtcbiAgICogQHJldHVybnMgW1xuICAgKiAgIHtcbiAgICogICAgIFwicmlza05hbWVcIjogXCJcIixcbiAgICogICAgIFwiZGVzY3JpcHRpb25cIjogXCJcIixcbiAgICogICAgIFwicmNOYW1lXCI6IFwiXCIsXG4gICAqICAgICBcIm93bmVyXCI6IFwiXCIsXG4gICAqICAgICBcImZyZXF1ZW5jeVwiOiBcIlwiLFxuICAgKiAgICAgXCJlbWFpbFJlbWluZGVyXCI6IFwiXCIsXG4gICAqICAgICBcIm92ZXJzZWVyXCI6IFwiXCIsXG4gICAqICAgICBcImlzVmFsaWRcIjogZmFsc2UsXG4gICAqICAgICBcIm1pdGlnYXRpb25Qcmlvcml0eVwiOiBcIlwiLFxuICAgKi9cbiAgc2V0Umlza0RldGFpbHMocmlzazogYW55KSB7XG4gICAgbGV0IG9iajogYW55O1xuICAgIG9iaiA9IHtcbiAgICAgIHJpc2tOYW1lOiByaXNrWzBdID8/ICcnLFxuICAgICAgZGVzY3JpcHRpb246IHJpc2tbMV0gPz8gJycsXG4gICAgICByY05hbWU6IHJpc2tbMl0gPz8gJycsXG4gICAgICBvd25lcjogcmlza1szXSA/PyAnJyxcbiAgICAgIHJpc2tPd25lcjogcmlza1s0XSA/PyAnJyxcbiAgICAgIGZyZXF1ZW5jeTogcmlza1s1XSA/PyAnJyxcbiAgICAgIGVtYWlsUmVtaW5kZXI6IHJpc2tbNl0sXG4gICAgICBvdmVyc2Vlcjogcmlza1s3XSA/PyAnJyxcbiAgICAgIGlzVmFsaWQ6IHRoaXMuY2hlY2tWYWxpZGl0eShyaXNrKSxcbiAgICAgIGlzR3JjTm90VmFsaWQ6IHRoaXMudmFsaWRhdGVHcmNPYmplY3RGb3JSYyhcbiAgICAgICAgdGhpcy5zZWxlY3RlZFJjTmFtZSxcbiAgICAgICAgdGhpcy5zZWxlY3RlZEdyY05hbWVcbiAgICAgICksXG4gICAgfTtcbiAgICBsZXQgaW5kZXggPSA4O1xuICAgIGlmIChcbiAgICAgIHRoaXMucmlza0J1bGtVcGxvYWQ/LmhlYWRlcj8uaW5jbHVkZXMoJ1JlY29tbWVuZGVkIE1pdGlnYXRpb24gUHJpb3JpdHknKVxuICAgICkge1xuICAgICAgb2JqWydtaXRpZ2F0aW9uUHJpb3JpdHknXSA9IHJpc2tbaW5kZXhdID8/ICcnO1xuICAgICAgaW5kZXgrKztcbiAgICB9XG4gICAgb2JqWydtaXRpZ2F0aW9uUGxhbnMnXSA9IHJpc2tbaW5kZXhdID8/ICcnO1xuICAgIGluZGV4Kys7XG4gICAgb2JqWydyaXNrTGFiZWwnXSA9IHJpc2tbaW5kZXhdID8/ICcnO1xuICAgIGluZGV4Kys7XG4gICAgb2JqWydsaWtlbGlob29kJ10gPSByaXNrW2luZGV4XSA/PyAnJztcbiAgICBpbmRleCsrO1xuICAgIG9ialsnaW1wYWN0J10gPSByaXNrW2luZGV4XSA/PyAnJztcbiAgICBpbmRleCsrO1xuICAgIGlmICh0aGlzLnJpc2tCdWxrVXBsb2FkPy53ZWlnaHRGYWN0b3JzPy5pbmNsdWRlcygnVmVsb2NpdHknKSkge1xuICAgICAgb2JqWyd2ZWxvY2l0eSddID0gcmlza1tpbmRleF0gPz8gJyc7XG4gICAgICBpbmRleCsrO1xuICAgIH1cbiAgICBpZiAodGhpcy5yaXNrQnVsa1VwbG9hZD8ud2VpZ2h0RmFjdG9ycz8uaW5jbHVkZXMoJ1Z1bG5lcmFiaWxpdHknKSkge1xuICAgICAgb2JqWyd2dWxuZXJhYmlsaXR5J10gPSByaXNrW2luZGV4XSA/PyAnJztcbiAgICAgIGluZGV4Kys7XG4gICAgfVxuICAgIGlmIChcbiAgICAgIHRoaXMucmlza0J1bGtVcGxvYWQ/LmhlYWRlcj8uaW5jbHVkZXMoXG4gICAgICAgICdEbyB5b3Ugd2FudCB0byBhcHBseSB0aGUgc2FtZSByaXNrIHJhdGluZ3MgZm9yIGFsbCBSZXNwb25zaWJpbGl0eSBDZW50ZXJzPydcbiAgICAgIClcbiAgICApIHtcbiAgICAgIG9ialsnYXBwbHlTYW1lUmlza1JhdGluZyddID0gcmlza1tpbmRleF0gPz8gJyc7XG4gICAgICBpbmRleCsrO1xuICAgIH1cbiAgICBpZiAodGhpcy5yaXNrQnVsa1VwbG9hZD8uaGVhZGVyPy5pbmNsdWRlcygnTGlua2VkIEdSQyBPYmplY3QocyknKSkge1xuICAgICAgb2JqWydsaW5rZWRHcmNPYmplY3QnXSA9IHJpc2tbaW5kZXhdID8/ICcnO1xuICAgICAgaW5kZXgrKztcbiAgICB9XG4gICAgY29uc3QgY3VzdG9tVGFnczogYW55ID0gW107XG4gICAgdGhpcy5jYXRlZ29yeT8uc2VsZWN0ZWRDYXRlZ29yeT8uY3VzdG9tX3RhZz8uZm9yRWFjaCgodGFnOiBhbnksIGk6IGFueSkgPT4ge1xuICAgICAgaWYgKHRhZykge1xuICAgICAgICBjb25zdCBjVGFnID0ge1xuICAgICAgICAgIGN1c3RvbV90YWdfdmFsdWU6IHJpc2tbaW5kZXggKyBpXSA/PyAnJyxcbiAgICAgICAgICBjdXN0b21fdGFnX25hbWU6IHRhZy50YWdOYW1lLFxuICAgICAgICB9O1xuICAgICAgICBjdXN0b21UYWdzLnB1c2goY1RhZyk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgb2JqWydjdXN0b21UYWcnXSA9IGN1c3RvbVRhZ3M7XG4gICAgb2JqWydpc1ZhbGlkRnJlcXVlbmN5J10gPSB0aGlzLmZyZXF1ZW5jeVR5cGU/LmluY2x1ZGVzKFxuICAgICAgb2JqPy5mcmVxdWVuY3k/LnRvTG93ZXJDYXNlKClcbiAgICApO1xuICAgIHJldHVybiBvYmo7XG4gIH1cblxuICAvKipcbiAgICogSWYgdGhlIGZyZXF1ZW5jeVR5cGUgaXMgd2Vla2x5LCByZXR1cm4gMiwgaWYgaXQncyBtb250aGx5LCByZXR1cm4gNywgaWYgaXQncyBxdWFydGVybHksIHJldHVybiA3LFxuICAgKiBpZiBpdCdzIGJpYW5udWFsLCByZXR1cm4gMzAsIGlmIGl0J3MgYW5udWFsLCByZXR1cm4gMzAsIGlmIGl0J3Mgb25lIHRpbWUsIHJldHVybiAxNSwgb3RoZXJ3aXNlXG4gICAqIHJldHVybiAwLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW2ZyZXF1ZW5jeVR5cGVdIC0gc3RyaW5nIC0gdGhlIGZyZXF1ZW5jeSB0eXBlIG9mIHRoZSByZW1pbmRlclxuICAgKiBAcmV0dXJucyBUaGUgcmV0dXJuIHZhbHVlIGlzIHRoZSBudW1iZXIgb2YgZGF5cyBiZWZvcmUgdGhlIGV2ZW50IHRoYXQgdGhlIHJlbWluZGVyIHNob3VsZCBiZSBzZW50LlxuICAgKi9cbiAgc2V0RGVmYXVsdEVtYWlsUmVtaW5kZXJWYWx1ZShmcmVxdWVuY3lUeXBlPzogc3RyaW5nKTogYW55IHtcbiAgICBzd2l0Y2ggKGZyZXF1ZW5jeVR5cGU/LnRvTG93ZXJDYXNlKCkpIHtcbiAgICAgIGNhc2UgJ3dlZWtseSc6XG4gICAgICAgIHJldHVybiAyO1xuICAgICAgY2FzZSAnbW9udGhseSc6XG4gICAgICAgIHJldHVybiA3O1xuICAgICAgY2FzZSAncXVhcnRlcmx5JzpcbiAgICAgICAgcmV0dXJuIDc7XG4gICAgICBjYXNlICdiaWFubnVhbCc6XG4gICAgICAgIHJldHVybiAzMDtcbiAgICAgIGNhc2UgJ2FubnVhbCc6XG4gICAgICAgIHJldHVybiAzMDtcbiAgICAgIGNhc2UgJ29uZSB0aW1lJzpcbiAgICAgICAgcmV0dXJuIDE1O1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIElmIHRoZSBsYWJlbCBpcyAnbmV3IHJpc2snLCByZXR1cm4gMSwgaWYgdGhlIGxhYmVsIGlzICdlbWVyZ2luZy9yYXBpZGx5IGNoYW5naW5nIHJpc2tzJywgcmV0dXJuIDIsXG4gICAqIG90aGVyd2lzZSByZXR1cm4gMVxuICAgKiBAcGFyYW0ge3N0cmluZ30gW2xhYmVsXSAtIHRoZSBsYWJlbCBvZiB0aGUgcmlza1xuICAgKiBAcmV0dXJucyBUaGUgcmV0dXJuIHZhbHVlIGlzIHRoZSB2YWx1ZSBvZiB0aGUgbGFzdCBleHByZXNzaW9uIGluIHRoZSBmdW5jdGlvbi5cbiAgICovXG4gIHNldFJpc2tMYWJlbChsYWJlbD86IHN0cmluZykge1xuICAgIHN3aXRjaCAobGFiZWw/LnRvTG93ZXJDYXNlKCkpIHtcbiAgICAgIGNhc2UgJ25ld2x5IGlkZW50aWZpZWQgcmlza3MnOlxuICAgICAgICByZXR1cm4gMTtcbiAgICAgIGNhc2UgJ3JhcGlkbHkgY2hhbmdpbmcgcmlza3MnOlxuICAgICAgICByZXR1cm4gMjtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBcIklmIHRoZSBkYXRlIGlzIGEgbnVtYmVyLCBjb252ZXJ0IGl0IHRvIGEgZGF0ZSBvYmplY3QsIHRoZW4gY3JlYXRlIGEgbmV3IGRhdGUgb2JqZWN0IHdpdGggdGhlXG4gICAqIHRpbWV6b25lIHNldCB0byB0aGUgdXNlcidzIHRpbWV6b25lLCB0aGVuIHJldHVybiB0aGUgZGF0ZSBpbiB0aGUgZm9ybWF0IFlZWVktTU0tREQuXCJcbiAgICogPC9jb2RlPlxuICAgKiBAcGFyYW0ge2FueX0gZGF0ZSAtIGFueSAtIHRoZSBkYXRlIHlvdSB3YW50IHRvIGNoYW5nZSB0aGUgdGltZXpvbmUgb2ZcbiAgICogQHJldHVybnMgVGhlIGRhdGUgaXMgYmVpbmcgcmV0dXJuZWQgaW4gdGhlIHRpbWV6b25lIG9mIHRoZSB1c2VyLlxuICAgKi9cbiAgY2hhbmdlVGltZVpvbmUoZGF0ZTogYW55KSB7XG4gICAgaWYgKHR5cGVvZiBkYXRlID09PSAnbnVtYmVyJykge1xuICAgICAgZGF0ZSA9IG5ldyBEYXRlKGRhdGUpO1xuICAgIH1cbiAgICBjb25zdCBpbnZEYXRlID0gbmV3IERhdGUoXG4gICAgICBkYXRlLnRvTG9jYWxlU3RyaW5nKCdlbi1VUycsIHtcbiAgICAgICAgdGltZVpvbmU6IHRoaXMuYXV0aFNlcnZpY2UudXNlckRldGFpbHM/LnRpbWV6b25lLFxuICAgICAgfSlcbiAgICApO1xuICAgIHJldHVybiBtb21lbnQoaW52RGF0ZSkuZm9ybWF0KCdZWVlZLU1NLUREJyk7XG4gIH1cblxuICBzZXRGZWF0dXJlRmxhZygpIHtcbiAgICB0aGlzLmZmTGlua2VkR3JjT2JqZWN0cyA9IHRoaXMuZmVhdHVyZS5pc0ZlYXR1cmVFbmFibGVkKCdmZl9ncmNfdjEnKTtcbiAgfVxuXG4gIGdldENvbHVtbldpc2VEYXRhID0gKGRhdGE6IGFueVtdW10pOiBhbnlbXVtdID0+IHtcbiAgICByZXR1cm4gZGF0YVswXS5tYXAoKF8sIGNvbEluZGV4KSA9PiBkYXRhLm1hcCgocm93KSA9PiByb3dbY29sSW5kZXhdKSk7XG4gIH07XG5cbiAgdmFsaWRhdGVHcmNPYmplY3RGb3JSYyhzZWxlY3RlZFJjOiBzdHJpbmcsIHNlbGVjdGVkR3JjOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBmb3IgKFxuICAgICAgbGV0IGNvbEluZGV4ID0gMjk7XG4gICAgICBjb2xJbmRleCA8IHRoaXMuY29sdW1uV2lzZURhdGEubGVuZ3RoO1xuICAgICAgY29sSW5kZXggKz0gMlxuICAgICkge1xuICAgICAgY29uc3QgcmNOYW1lc0NvbHVtbiA9IHRoaXMuY29sdW1uV2lzZURhdGFbY29sSW5kZXhdO1xuXG4gICAgICBpZiAocmNOYW1lc0NvbHVtblswXSA9PT0gc2VsZWN0ZWRSYykge1xuICAgICAgICByZXR1cm4gIXJjTmFtZXNDb2x1bW5cbiAgICAgICAgICAuc2xpY2UoMSlcbiAgICAgICAgICAuc29tZSgoZ3JjOiBhbnkpID0+IGdyYyA9PT0gc2VsZWN0ZWRHcmMgfHwgIXNlbGVjdGVkR3JjKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgZ2V0R3JjTGlzdCgpIHtcbiAgICB0aGlzLnJpc2tCdWxrVXBsb2FkPy5yaXNrcy5mb3JFYWNoKChyaXNrOiBhbnkpID0+IHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRHcmNOYW1lID0gcmlzaz8ubGlua2VkR3JjT2JqZWN0O1xuICAgICAgdGhpcy5zZWxlY3RlZFJjTmFtZSA9IHJpc2s/LnJjTmFtZTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRSY0lkID0gdGhpcy5yZXR1cm5JZHMocmlzay5yY05hbWUsICdyY19pZCcpO1xuXG4gICAgICBpZiAodGhpcy5zZWxlY3RlZFJjSWQpIHtcbiAgICAgICAgZm9yIChcbiAgICAgICAgICBsZXQgY29sSW5kZXggPSAyOTtcbiAgICAgICAgICBjb2xJbmRleCA8IHRoaXMuY29sdW1uV2lzZURhdGEubGVuZ3RoO1xuICAgICAgICAgIGNvbEluZGV4ICs9IDJcbiAgICAgICAgKSB7XG4gICAgICAgICAgY29uc3QgcmNOYW1lc0NvbHVtbiA9IHRoaXMuY29sdW1uV2lzZURhdGFbY29sSW5kZXhdO1xuICAgICAgICAgIGNvbnN0IHJjSWRzQ29sdW1uID0gdGhpcy5jb2x1bW5XaXNlRGF0YVtjb2xJbmRleCArIDFdO1xuICAgICAgICAgIGlmIChyY0lkc0NvbHVtblswXSA9PSB0aGlzLnNlbGVjdGVkUmNJZCkge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCByY05hbWVzQ29sdW1uLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGdyY05hbWUgPSByY05hbWVzQ29sdW1uW2ldO1xuICAgICAgICAgICAgICBjb25zdCBncmNJZCA9IHJjSWRzQ29sdW1uW2ldO1xuICAgICAgICAgICAgICBpZiAoZ3JjTmFtZSAmJiBncmNJZCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGdyYyA9IHtcbiAgICAgICAgICAgICAgICAgIGdyY05hbWU6IGdyY05hbWUsXG4gICAgICAgICAgICAgICAgICBncmNJZDogZ3JjSWQsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB0aGlzLnRlbXBsYXRlSW5mby5ncmNMaXN0LnB1c2goZ3JjKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiYWRkLW11bHRpcGxlLXJpc2tcIj5cbiAgPCEtLSBtYWluIGNvbnRhaW5lciBzdGFydHMgaGVyZSAtLT5cbiAgPGRpdiBjbGFzcz1cImFkZC1tdWx0aXBsZS1yaXNrLWJvZHlcIiBbY2xhc3MuZGlzYWJsZWRdPVwic2hvd0NhdGVnb3J5TGlzdFwiPlxuICAgIDxkaXYgY2xhc3M9XCJhZGQtbXVsdGlwbGUtcmlzay1jb250YWluZXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJpbWFnZVwiPlxuICAgICAgICA8aW1nIFtzcmNdPVwiQVNTRVRTLnNwcmVhZHNoZWV0X211bHRpcGxlX2NhdGVnb3J5XCIgYWx0PVwiXCIgLz5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8aDQgaWQ9XCJtdWx0aXBsZVJpc2tcIj5cbiAgICAgICAgWW91IGNhbiBhZGQgbXVsdGlwbGUgcmlzayBpbiBqdXN0IHRocmVlIGVhc3kgc3RlcHNcbiAgICAgIDwvaDQ+XG4gICAgICA8dWwgY2xhc3M9XCJsaXN0XCI+XG4gICAgICAgIDxsaT5TZWxlY3QgYSBSaXNrIENhdGVnb3J5LjwvbGk+XG4gICAgICAgIDxsaT5Eb3dubG9hZCB0aGUgdGVtcGxhdGUgYW5kIGZpbGwgaW4gdGhlIGRldGFpbHMuPC9saT5cbiAgICAgICAgPGxpPlVwbG9hZCB0aGUgLnhsc3ggZmlsZSBhbmQgeW91J3JlIGdvb2QgdG8gZ28hPC9saT5cbiAgICAgIDwvdWw+XG4gICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cFwiIFthdHRyLmlkXT1cIidzY3JvbGxSZWZlcmVuY2UnXCI+XG4gICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIlxuICAgICAgICAgID5SaXNrIENhdGVnb3J5IDxzcGFuIGNsYXNzPVwicmVxdWlyZWRcIj4qPC9zcGFuPjwvbGFiZWxcbiAgICAgICAgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0XCIgKm5nSWY9XCIhY2F0ZWdvcnkuc2VsZWN0ZWRDYXRlZ29yeVwiPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImdldENhdGVnb3J5TGlzdCgpXCJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VsZWN0IFJpc2sgQ2F0ZWdvcnlcIlxuICAgICAgICAgICAgcmVhZG9ubHlcbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdGVkXCIgKm5nSWY9XCJjYXRlZ29yeS5zZWxlY3RlZENhdGVnb3J5XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIj5cbiAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZUNhdGVnb3J5KClcIlxuICAgICAgICAgICAgICA+JiN4ZTlhZTs8L2lcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCJcbiAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiY2F0ZWdvcnk/LnNlbGVjdGVkQ2F0ZWdvcnk/LmNhdGVnb3J5X25hbWVcIlxuICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXG4gICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgPnt7IGNhdGVnb3J5Py5zZWxlY3RlZENhdGVnb3J5Py5jYXRlZ29yeV9uYW1lIH19PC9zcGFuXG4gICAgICAgICAgICA+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJjaGlwLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiIChjbGljayk9XCJyZW1vdmVDYXRlZ29yeSgpXCI+JiN4ZTkwZDs8L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3tjYXRlZ29yeT8uc2VsZWN0ZWRDYXRlZ29yeT8uY2F0ZWdvcnlfbmFtZX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgY2xhc3M9XCJlZGl0XCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgKGNsaWNrKT1cInNob3dDYXRlZ29yeUxpc3QgPSB0cnVlOyBwaWNrZXJDaGFuZ2VkLmVtaXQodHJ1ZSlcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOWJhOzwvaT4gRWRpdFxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNhdGVnb3J5Py5zZWxlY3RlZENhdGVnb3J5XCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAqbmdJZj1cImRvd25sb2FkU3RhdHVzID09PSAnTk9UX0RPV05MT0FESU5HJ1wiXG4gICAgICAgICAgY2xhc3M9XCJkb3dubG9hZFwiXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgKGNsaWNrKT1cImRvd25sb2FkVGVtcGxhdGUoKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTkxYjs8L2k+IERvd25sb2FkIFRlbXBsYXRlXG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYnVsay1idG4tcHJvZ3Jlc3NcIiAqbmdJZj1cImRvd25sb2FkU3RhdHVzID09PSAnRE9XTkxPQURJTkcnXCI+XG4gICAgICAgICAgRG93bmxvYWQgaW4gUHJvZ3Jlc3NcbiAgICAgICAgICA8YXBwLWxpbmUtbG9hZGVyIFtsb2FkZXJIZWlnaHRdPVwiJzInXCI+PC9hcHAtbGluZS1sb2FkZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZG93bmxvYWRTdGF0dXMgPT09ICdET1dOTE9BREVEJ1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJidWxrLWJ0bi1wcm9ncmVzc1wiPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5MWM7PC9pPkRvd25sb2FkIENvbXBsZXRlXG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImJ1bGstYnRuLWFnYWluXCI+XG4gICAgICAgICAgICBJcyB0aGUgZmlsZSBub3QgZG93bmxvYWRlZD9cbiAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cImRvd25sb2FkVGVtcGxhdGUoKVwiPlJldHJ5IERvd25sb2FkPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8cFxuICAgICAgICBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIlxuICAgICAgICAqbmdJZj1cImlzV3JvbmdGaWxlIHx8IGlzV3JvbmdGb3JtYXQgfHwgaXNGaWxlRW1wdHlcIlxuICAgICAgPlxuICAgICAgICB7eyBlcnJvck1lc3NhZ2UgfX1cbiAgICAgIDwvcD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbjxhcHAtY2F0ZWdvcnktbGlzdFxuICAqbmdJZj1cInNob3dDYXRlZ29yeUxpc3RcIlxuICBbY2F0ZWdvcnlMaXN0XT1cImNhdGVnb3J5TGlzdFwiXG4gIFtzZWxlY3RlZENhdGVnb3J5XT1cImNhdGVnb3J5XCJcbiAgKHNhdmVTZWxlY3RlZENhdGVnb3J5KT1cIlxuICAgIHNhdmVTZWxlY3RlZENhdGVnb3J5KCRldmVudCk7IHBpY2tlckNoYW5nZWQuZW1pdChmYWxzZSlcbiAgXCJcbiAgKGNsb3NlQ2F0ZWdvcmllc0xpc3QpPVwic2hvd0NhdGVnb3J5TGlzdCA9IGZhbHNlOyBwaWNrZXJDaGFuZ2VkLmVtaXQoZmFsc2UpXCJcbiAgW2xvYWRlZF09XCIhaXNMb2FkZXJcIlxuPlxuPC9hcHAtY2F0ZWdvcnktbGlzdD5cbjxhcHAtYnVsay12aWV3XG4gICpuZ0lmPVwic2hvd0V4Y2VsXCJcbiAgW3Jpc2tCdWxrVXBsb2FkXT1cInJpc2tCdWxrVXBsb2FkXCJcbiAgW3RlbXBsYXRlSW5mb109XCJ0ZW1wbGF0ZUluZm9cIlxuICBbZGVmYXVsdE93bmVyXT1cImRlZmF1bHRPd25lclwiXG4gIFtmaWxlTmFtZV09XCJmaWxlTmFtZVwiXG4gIFtsb2FkZXJdPVwibG9hZGVyXCJcbiAgW2Fzc2Vzc21lbnREYXlzRW5hYmxlXT1cImFzc2Vzc21lbnREZWFkTGluZVwiXG4gIChzdWJtaXRSaXNrQnVsa1VwbG9hZCk9XCJzdWJtaXRSaXNrQnVsa1VwbG9hZCgkZXZlbnQpXCJcbiAgKGNhbmNlbCk9XCJyZXNldCgpXCJcbiAgW2ZmTGlua2VkR3JjT2JqZWN0c109XCJmZkxpbmtlZEdyY09iamVjdHNcIlxuPjwvYXBwLWJ1bGstdmlldz5cblxuPGlucHV0XG4gIHR5cGU9XCJmaWxlXCJcbiAgWyhuZ01vZGVsKV09XCJmaWxlVmFsdWVcIlxuICBpZD1cImZpbGVJbnB1dFwiXG4gIGNsYXNzPVwiaGlkZGVuLWlucHV0XCJcbiAgKGNoYW5nZSk9XCJ1cGxvYWRlZEZpbGUoJGV2ZW50KVwiXG4vPlxuPGFwcC1zbWlsZXktZGlhbG9nLWlubGluZVxuICAqbmdJZj1cInNob3dTbWlsZXlcIlxuICBbbWVzc2FnZV09XCJzbWlsZXlNZXNzYWdlXCJcbiAgW2FjdGlvbkJ1dHRvbnNdPVwiYWN0aW9uQnV0dG9uc1wiXG4gIChhY3Rpb24pPVwiYWN0aW9uKCRldmVudClcIlxuICAoY2xvc2VTbWlsZXkpPVwiY2xvc2VTbWlsZXkoJGV2ZW50KVwiXG4+PC9hcHAtc21pbGV5LWRpYWxvZy1pbmxpbmU+XG4iXX0=