tango-app-ui-analyse-trax 4.0.63 → 4.0.65

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 (35) hide show
  1. package/esm2022/lib/components/add-checklist/add-checklist.component.mjs +38 -19
  2. package/esm2022/lib/components/add-checklist/checklist-popup/checklist-popup.component.mjs +4 -1
  3. package/esm2022/lib/components/audit-v2/audit-v2-access.mjs +5 -5
  4. package/esm2022/lib/components/audit-v2/dashboard/audit-v2-dashboard.component.mjs +31 -10
  5. package/esm2022/lib/components/audit-v2/detail/audit-v2-detail.component.mjs +9 -5
  6. package/esm2022/lib/components/audit-v2/flags/flag-detail/audit-v2-flag-detail.component.mjs +3 -2
  7. package/esm2022/lib/components/audit-v2/gallery/audit-v2-gallery.component.mjs +113 -16
  8. package/esm2022/lib/components/audit-v2/question-editor/bulk-upload/audit-v2-bulk-upload.component.mjs +6 -10
  9. package/esm2022/lib/components/audit-v2/reports/audit-v2-reports.component.mjs +14 -5
  10. package/esm2022/lib/components/dashboard/dashboard.component.mjs +132 -56
  11. package/esm2022/lib/components/eye-test-audit/eye-test/eye-test.component.mjs +3 -3
  12. package/esm2022/lib/components/flags-new/flags-new.component.mjs +205 -35
  13. package/esm2022/lib/components/flags-new/flags-new.interface.mjs +1 -1
  14. package/esm2022/lib/components/gallery/gallery.component.mjs +2 -2
  15. package/esm2022/lib/components/tango-analyse-trax/tango-analyse-trax.component.mjs +3 -3
  16. package/esm2022/lib/components/task/task.component.mjs +3 -3
  17. package/esm2022/lib/services/trax.service.mjs +5 -1
  18. package/fesm2022/{tango-app-ui-analyse-trax-audit-v2.module-CiThEwex.mjs → tango-app-ui-analyse-trax-audit-v2.module-CZPe-gKT.mjs} +176 -48
  19. package/fesm2022/tango-app-ui-analyse-trax-audit-v2.module-CZPe-gKT.mjs.map +1 -0
  20. package/fesm2022/{tango-app-ui-analyse-trax-tango-app-ui-analyse-trax--6pqnpcP.mjs → tango-app-ui-analyse-trax-tango-app-ui-analyse-trax-CN8ZTzNR.mjs} +388 -116
  21. package/fesm2022/tango-app-ui-analyse-trax-tango-app-ui-analyse-trax-CN8ZTzNR.mjs.map +1 -0
  22. package/fesm2022/tango-app-ui-analyse-trax.mjs +1 -1
  23. package/lib/components/add-checklist/add-checklist.component.d.ts +1 -0
  24. package/lib/components/audit-v2/audit-v2-access.d.ts +1 -1
  25. package/lib/components/audit-v2/dashboard/audit-v2-dashboard.component.d.ts +11 -0
  26. package/lib/components/audit-v2/detail/audit-v2-detail.component.d.ts +2 -0
  27. package/lib/components/audit-v2/gallery/audit-v2-gallery.component.d.ts +41 -7
  28. package/lib/components/audit-v2/reports/audit-v2-reports.component.d.ts +4 -0
  29. package/lib/components/dashboard/dashboard.component.d.ts +25 -0
  30. package/lib/components/flags-new/flags-new.component.d.ts +34 -0
  31. package/lib/components/flags-new/flags-new.interface.d.ts +3 -1
  32. package/lib/services/trax.service.d.ts +2 -0
  33. package/package.json +1 -1
  34. package/fesm2022/tango-app-ui-analyse-trax-audit-v2.module-CiThEwex.mjs.map +0 -1
  35. package/fesm2022/tango-app-ui-analyse-trax-tango-app-ui-analyse-trax--6pqnpcP.mjs.map +0 -1
@@ -146,6 +146,7 @@ export class ChecklistPopupComponent {
146
146
  "Capture Image/Video as Answer": "image/video",
147
147
  Time: "time",
148
148
  Dropdown: "dropdown",
149
+ "GPS Location": "gps",
149
150
  };
150
151
  let secDetails = data.reduce((acc, ele) => {
151
152
  let sectionName = ele["Section Name"]?.toString()?.trim().toLowerCase();
@@ -485,6 +486,8 @@ export class ChecklistPopupComponent {
485
486
  return answer;
486
487
  break;
487
488
  case "time":
489
+ // GPS has no options either; the device captures latitude/longitude as the answer.
490
+ case "gps":
488
491
  answer = [
489
492
  {
490
493
  answer: "",
@@ -619,4 +622,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
619
622
  type: ViewChild,
620
623
  args: ["file1"]
621
624
  }] } });
622
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tsaXN0LXBvcHVwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLWFuYWx5c2UtdHJheC9zcmMvbGliL2NvbXBvbmVudHMvYWRkLWNoZWNrbGlzdC9jaGVja2xpc3QtcG9wdXAvY2hlY2tsaXN0LXBvcHVwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLWFuYWx5c2UtdHJheC9zcmMvbGliL2NvbXBvbmVudHMvYWRkLWNoZWNrbGlzdC9jaGVja2xpc3QtcG9wdXAvY2hlY2tsaXN0LXBvcHVwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBbUUsTUFBTSxlQUFlLENBQUM7QUFHN0gsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUM7QUFFN0IsT0FBTyxFQUFFLFNBQVMsRUFBQyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHekMsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7Ozs7OztBQUUzRSxxSEFBcUg7QUFDckgsa0dBQWtHO0FBQ2xHLE1BQU0sbUJBQW1CLEdBQUcsaUNBQWlDLENBQUM7QUFPOUQsTUFBTSxPQUFPLHVCQUF1QjtJQXdCeEI7SUFDQTtJQUNBO0lBQ0E7SUFDRDtJQUNDO0lBQ0E7SUE3QlYsYUFBYSxDQUFZO0lBQ2hCLFFBQVEsQ0FBUztJQUNqQixJQUFJLENBQVM7SUFDYixhQUFhLENBQU07SUFDRSxlQUFlLENBQU07SUFDaEMsU0FBUyxDQUFjO0lBQ3RCLFVBQVUsQ0FBYztJQUU1QyxRQUFRLENBQU07SUFDZCxRQUFRLENBQU07SUFDZCxjQUFjLEdBQVE7UUFDcEI7WUFDRSxJQUFJLEVBQUUsV0FBVztZQUNqQixhQUFhLEVBQUUsQ0FBQztZQUNoQixTQUFTLEVBQUUsRUFBRTtTQUNkO0tBQ0YsQ0FBQztJQUNNLE1BQU0sR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO0lBQy9CLFNBQVMsR0FBUSxFQUFFLENBQUM7SUFDcEIsVUFBVSxDQUFNO0lBQ2hCLEtBQUssR0FBRyxLQUFLLENBQUM7SUFFZCxZQUNVLEVBQWUsRUFDZixLQUFtQixFQUNuQixVQUF1QixFQUN2QixNQUFjLEVBQ2YsU0FBeUIsRUFDeEIsTUFBZ0IsRUFDaEIsRUFBcUI7UUFOckIsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQUNmLFVBQUssR0FBTCxLQUFLLENBQWM7UUFDbkIsZUFBVSxHQUFWLFVBQVUsQ0FBYTtRQUN2QixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2YsY0FBUyxHQUFULFNBQVMsQ0FBZ0I7UUFDeEIsV0FBTSxHQUFOLE1BQU0sQ0FBVTtRQUNoQixPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQUU3QixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO1lBQ2pDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUNWLFdBQVcsRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUNqQixJQUFJLEVBQUUsQ0FBQyxZQUFZLENBQUM7U0FDckIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksUUFBUSxFQUFFO1lBQ3pCLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUNsRDtJQUNILENBQUM7SUFFRCxJQUFJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQztJQUN2QyxDQUFDO0lBRUQsVUFBVSxDQUFDLElBQVk7UUFDckIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRCxjQUFjLENBQUMsS0FBVTtRQUN2QixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUN2QixJQUFJLENBQUMsY0FBYyxHQUFHLEVBQUUsQ0FBQztRQUN6QixNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNuQyxNQUFNLE1BQU0sR0FBK0IsS0FBSyxDQUFDLE1BQU0sQ0FBQztRQUN4RCxJQUFJLFdBQVcsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQy9ELElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDaEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsaUNBQWlDLENBQUMsQ0FBQztTQUM3RDtRQUNELElBQUksV0FBVyxFQUFFO1lBQ2YsTUFBTSxNQUFNLEdBQWUsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUM1QyxNQUFNLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzNDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFNLEVBQUUsRUFBRTtnQkFDekIsTUFBTSxJQUFJLEdBQVcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7Z0JBQ3JDLE1BQU0sRUFBRSxHQUFrQixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO2dCQUM5RCxNQUFNLE1BQU0sR0FBVyxFQUFFLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN4QyxNQUFNLEVBQUUsR0FBbUIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDN0MsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ3hELElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFO29CQUNoQixJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO2lCQUN4RDtnQkFDRCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztnQkFDdEIsSUFBSSxLQUFLLEdBQVEsRUFBRSxDQUFDO2dCQUNwQixJQUFJLFlBQVksR0FBUSxFQUFFLENBQUM7Z0JBQzNCLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBUSxFQUFFLEtBQWEsRUFBRSxFQUFFO29CQUNqRCxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsY0FBYyxDQUFDLEVBQUUsUUFBUSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUU7d0JBQzlDLEtBQUssQ0FBQyxJQUFJLENBQUMsMkJBQTJCLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO3FCQUNwRDtvQkFDRCxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLEVBQUUsUUFBUSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUU7d0JBQzFDLEtBQUssQ0FBQyxJQUFJLENBQUMsNEJBQTRCLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO3FCQUNyRDtvQkFDRCxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsYUFBYSxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUU7d0JBQ2pDLEtBQUssQ0FBQyxJQUFJLENBQUMsMEJBQTBCLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO3FCQUNuRDtvQkFDRCxJQUNFLEdBQUcsRUFBRSxDQUFDLGFBQWEsQ0FBQyxFQUFFLElBQUksRUFBRTt3QkFDNUI7NEJBQ0Usd0JBQXdCOzRCQUN4QiwwQkFBMEI7NEJBQzFCLFVBQVU7eUJBQ1gsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsYUFBYSxDQUFDLENBQUM7d0JBQ2hDLENBQUMsR0FBRyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxRQUFRLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFDNUM7d0JBQ0EsS0FBSyxDQUFDLElBQUksQ0FBQyw2QkFBNkIsS0FBSyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7cUJBQ3REO29CQUVELElBQUksS0FBSyxHQUNQLEdBQUcsRUFBRSxDQUFDLGNBQWMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRTt3QkFDdkQsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLEVBQUUsUUFBUSxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUM7b0JBQ3RELElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFO3dCQUNqQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO3FCQUMxQjt5QkFBTTt3QkFDTCxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLEVBQUUsSUFBSSxFQUFFLHlCQUF5QixDQUFDLENBQUM7cUJBQ25FO2dCQUNILENBQUMsQ0FBQyxDQUFDO2dCQUNILElBQUksS0FBSyxDQUFDLE1BQU0sRUFBRTtvQkFDaEIsTUFBTSxZQUFZLEdBQUc7d0JBQ25CLFdBQVcsRUFBRSxLQUFLO3dCQUNsQixRQUFRLEVBQUUsMC9CQUEwL0I7d0JBQ3BnQyxLQUFLLEVBQUUsa0JBQWtCO3dCQUN6QixPQUFPLEVBQUUsd0RBQXdEO3dCQUNqRSxVQUFVLEVBQUUsT0FBTzt3QkFDbkIsS0FBSyxFQUFFLEtBQUs7cUJBQ2IsQ0FBQztvQkFDRixJQUFJLENBQUMsVUFBVSxHQUFHLFlBQVksQ0FBQztvQkFDL0IsT0FBTztpQkFDUjtnQkFDRCxJQUFJLGFBQWEsR0FBRyxDQUFDLENBQUM7Z0JBQ3RCLElBQUksVUFBVSxHQUFRO29CQUNwQixvQkFBb0IsRUFBRSxhQUFhO29CQUNuQyxjQUFjLEVBQUUsUUFBUTtvQkFDeEIsd0JBQXdCLEVBQUUsc0JBQXNCO29CQUNoRCwwQkFBMEIsRUFBRSx3QkFBd0I7b0JBQ3BELGdDQUFnQyxFQUFFLGtCQUFrQjtvQkFDcEQseUJBQXlCLEVBQUUsT0FBTztvQkFDbEMseUJBQXlCLEVBQUUsT0FBTztvQkFDbEMsd0JBQXdCLEVBQUUsZUFBZTtvQkFDekMsSUFBSSxFQUFFLE1BQU07b0JBQ1osY0FBYyxFQUFFLGFBQWE7b0JBQzdCLCtCQUErQixFQUFFLGFBQWE7b0JBQzlDLElBQUksRUFBRSxNQUFNO29CQUNaLFFBQVEsRUFBRSxVQUFVO2lCQUNyQixDQUFDO2dCQUNGLElBQUksVUFBVSxHQUFRLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFRLEVBQUUsR0FBUSxFQUFFLEVBQUU7b0JBQ3ZELElBQUksV0FBVyxHQUFHLEdBQUcsQ0FBQyxjQUFjLENBQUMsRUFBRSxRQUFRLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztvQkFDeEUsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBQyxFQUFFO3dCQUN2QixhQUFhLEVBQUUsQ0FBQzt3QkFDaEIsR0FBRyxDQUFDLEdBQUcsV0FBVyxFQUFFLENBQUMsR0FBRzs0QkFDdEIsSUFBSSxFQUFFLEdBQUcsQ0FBQyxjQUFjLENBQUMsRUFBRSxRQUFRLEVBQUUsRUFBRSxJQUFJLEVBQUU7NEJBQzdDLGFBQWEsRUFBRSxhQUFhOzRCQUM1QixTQUFTLEVBQUU7Z0NBQ1Q7b0NBQ0UsR0FBRyxFQUFFLENBQUM7b0NBQ04sS0FBSyxFQUFFLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxRQUFRLEVBQUUsRUFBRSxJQUFJLEVBQUU7b0NBQzFDLFFBQVEsRUFBRSxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsUUFBUSxFQUFFLEVBQUUsSUFBSSxFQUFFO29DQUM3QyxVQUFVLEVBQUUsVUFBVSxDQUFDLEdBQUcsR0FBRyxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUM7b0NBQy9DLE9BQU8sRUFBRSxJQUFJLENBQUMsVUFBVSxDQUN0QixVQUFVLENBQUMsR0FBRyxHQUFHLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxFQUNuQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FDdEI7b0NBQ0QsS0FBSyxFQUFFLEtBQUs7b0NBQ1osWUFBWSxFQUFFLEtBQUs7b0NBQ25CLHNCQUFzQixFQUFFLEtBQUs7b0NBQzdCLFFBQVEsRUFBRSxLQUFLO29DQUNmLDJCQUEyQixFQUFFLEVBQUU7b0NBQy9CLHNCQUFzQixFQUFFLEVBQUU7b0NBQzFCLGFBQWEsRUFBRSxFQUFFO29DQUNqQixZQUFZLEVBQUUsS0FBSztvQ0FDbkIsZ0JBQWdCLEVBQUUsRUFBRTtvQ0FDcEIsYUFBYSxFQUFFLEtBQUs7b0NBQ3BCLFVBQVUsRUFBRSxLQUFLO29DQUNqQixlQUFlLEVBQUUsTUFBTTtvQ0FDdkIsWUFBWSxFQUFFLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLFFBQVEsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUU7b0NBQ2hFLGtGQUFrRjtvQ0FDbEYsR0FBRyxDQUFDLFVBQVUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLEtBQUssZUFBZSxDQUFDLENBQUMsQ0FBQyxFQUFFLG9CQUFvQixFQUFFLDhCQUE4QixFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztpQ0FDN0g7NkJBQ0Y7eUJBQ0YsQ0FBQztxQkFDSDt5QkFBTTt3QkFDTCxHQUFHLENBQUMsR0FBRyxXQUFXLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUM7NEJBQ25DLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxXQUFXLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQzs0QkFDL0MsS0FBSyxFQUFFLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxRQUFRLEVBQUUsRUFBRSxJQUFJLEVBQUU7NEJBQzFDLFFBQVEsRUFBRSxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsUUFBUSxFQUFFLEVBQUUsSUFBSSxFQUFFOzRCQUM3QyxVQUFVLEVBQUUsVUFBVSxDQUFDLEdBQUcsR0FBRyxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUM7NEJBQy9DLE9BQU8sRUFBRSxJQUFJLENBQUMsVUFBVSxDQUN0QixVQUFVLENBQUMsR0FBRyxHQUFHLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxFQUNuQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FDdEI7NEJBQ0QsS0FBSyxFQUFFLEtBQUs7NEJBQ1osWUFBWSxFQUFFLEtBQUs7NEJBQ25CLHNCQUFzQixFQUFFLEtBQUs7NEJBQzdCLFFBQVEsRUFBRSxLQUFLOzRCQUNmLDJCQUEyQixFQUFFLEVBQUU7NEJBQy9CLHNCQUFzQixFQUFFLEVBQUU7NEJBQzFCLGFBQWEsRUFBRSxFQUFFOzRCQUNqQixZQUFZLEVBQUUsS0FBSzs0QkFDbkIsZ0JBQWdCLEVBQUUsRUFBRTs0QkFDcEIsYUFBYSxFQUFFLEtBQUs7NEJBQ3BCLFVBQVUsRUFBRSxLQUFLOzRCQUNqQixlQUFlLEVBQUUsTUFBTTs0QkFDdkIsWUFBWSxFQUFFLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLFFBQVEsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUU7NEJBQ2hFLEdBQUcsQ0FBQyxVQUFVLENBQUMsR0FBRyxHQUFHLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxLQUFLLGVBQWUsQ0FBQyxDQUFDLENBQUMsRUFBRSxvQkFBb0IsRUFBRSw4QkFBOEIsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7eUJBQzdILENBQUMsQ0FBQztxQkFDSjtvQkFDRCxPQUFPLEdBQUcsQ0FBQztnQkFDYixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ1AsSUFBSSxDQUFDLGNBQWMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2dCQUNoRCxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7b0JBQ2xCLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7aUJBQ3pDO2dCQUNELElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtvQkFDbkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztpQkFDMUM7WUFDSCxDQUFDLENBQUM7U0FDSDtRQUVELElBQUksSUFBSSxFQUFFO1lBQ1IsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQzFCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxDQUFDO1NBQzlDO0lBQ0gsQ0FBQztJQUVELFVBQVUsQ0FBQyxLQUFVO1FBQ25CLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQVU7UUFDZixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFFdkIsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFekMsSUFBSSxJQUFJLEVBQUU7WUFDUixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDMUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUM7U0FDOUM7SUFDSCxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNsQixJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1NBQ3pDO1FBQ0QsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ25CLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7U0FDMUM7UUFDRCxJQUFJLEdBQUcsR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLCtCQUErQixDQUFDLENBQUM7UUFDbkUsR0FBRyxFQUFFLEtBQUssRUFBRSxDQUFDO1FBQ2IsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUU7WUFDbEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsMkJBQTJCLENBQUMsQ0FBQztZQUN0RCxPQUFPO1NBQ1I7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxNQUFNLEVBQUU7WUFDakQsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsNEJBQTRCLENBQUMsQ0FBQztZQUN2RCxPQUFPO1NBQ1I7UUFDRCxJQUFJLE1BQU0sR0FBRztZQUNYLGFBQWEsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFO1lBQ3BELG9CQUFvQixFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxJQUFJLEVBQUU7WUFDbEUsUUFBUSxFQUFFLElBQUksQ0FBQyxjQUFjO1lBQzdCLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtZQUN2QixVQUFVLEVBQUUsTUFBTTtTQUNuQixDQUFDO1FBQ0YsSUFBSSxDQUFDLFVBQVU7YUFDWixlQUFlLENBQUMsTUFBTSxDQUFDO2FBQ3ZCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQzVCLFNBQVMsQ0FDUixDQUFDLEdBQVEsRUFBRSxFQUFFO1lBQ1gsSUFBSSxHQUFHLEVBQUU7Z0JBQ1AsSUFBSSxHQUFHLEVBQUUsSUFBSSxJQUFJLEdBQUcsRUFBRTtvQkFDcEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztvQkFDN0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQ3ZCLDRDQUE0QyxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUNuRSxDQUFDO29CQUNGLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLENBQUM7aUJBQzFCO3FCQUFNO29CQUNMLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLDZCQUE2QixDQUFDLENBQUM7aUJBQ3pEO2FBQ0Y7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsNkJBQTZCLENBQUMsQ0FBQzthQUN6RDtRQUNILENBQUMsRUFDRCxDQUFDLEtBQVUsRUFBRSxFQUFFO1lBQ2IsSUFBSSxHQUFHLEdBQ0wsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsT0FBTztnQkFDNUIsMENBQTBDLENBQUM7WUFDN0MsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDaEMsQ0FBQyxDQUNGLENBQUM7SUFDTixDQUFDO0lBRUQsVUFBVSxDQUFDLElBQVksRUFBRSxPQUFlO1FBQ3RDLElBQUksTUFBTSxHQUFRLEVBQUUsQ0FBQztRQUVyQixRQUFRLElBQUksRUFBRTtZQUNaLEtBQUssUUFBUTtnQkFDWCxNQUFNLEdBQUc7b0JBQ1A7d0JBQ0UsTUFBTSxFQUFFLEtBQUs7d0JBQ2Isa0JBQWtCLEVBQUUsQ0FBQzt3QkFDckIsT0FBTyxFQUFFLEtBQUs7d0JBQ2QsVUFBVSxFQUFFLEtBQUs7d0JBQ2pCLGNBQWMsRUFBRSxlQUFlO3dCQUMvQixjQUFjLEVBQUUsQ0FBQzt3QkFDakIsVUFBVSxFQUFFLEtBQUs7d0JBQ2pCLGNBQWMsRUFBRSxFQUFFO3dCQUNsQixLQUFLLEVBQUUsS0FBSzt3QkFDWixzQkFBc0IsRUFBRSxLQUFLO3dCQUM3QixlQUFlLEVBQUUsQ0FBQztxQkFDbkI7b0JBQ0Q7d0JBQ0UsTUFBTSxFQUFFLElBQUk7d0JBQ1osa0JBQWtCLEVBQUUsQ0FBQzt3QkFDckIsT0FBTyxFQUFFLEtBQUs7d0JBQ2QsVUFBVSxFQUFFLEtBQUs7d0JBQ2pCLGNBQWMsRUFBRSxlQUFlO3dCQUMvQixjQUFjLEVBQUUsQ0FBQzt3QkFDakIsVUFBVSxFQUFFLEtBQUs7d0JBQ2pCLGNBQWMsRUFBRSxFQUFFO3dCQUNsQixLQUFLLEVBQUUsS0FBSzt3QkFDWixzQkFBc0IsRUFBRSxLQUFLO3dCQUM3QixlQUFlLEVBQUUsQ0FBQztxQkFDbkI7aUJBQ0YsQ0FBQztnQkFDRixPQUFPLE1BQU0sQ0FBQztnQkFDZCxNQUFNO1lBQ1IsS0FBSyxhQUFhO2dCQUNoQixNQUFNLEdBQUc7b0JBQ1A7d0JBQ0UsTUFBTSxFQUFFLEVBQUU7d0JBQ1YsT0FBTyxFQUFFLEtBQUs7d0JBQ2QsVUFBVSxFQUFFLEtBQUs7d0JBQ2pCLGNBQWMsRUFBRSxFQUFFO3dCQUNsQixnQkFBZ0IsRUFBRSxFQUFFO3dCQUNwQixjQUFjLEVBQUUsRUFBRTt3QkFDbEIsVUFBVSxFQUFFLEtBQUs7d0JBQ2pCLGNBQWMsRUFBRSxDQUFDO3dCQUNqQixjQUFjLEVBQUUsRUFBRTt3QkFDbEIsZUFBZSxFQUFFLE1BQU07cUJBQ3hCO2lCQUNGLENBQUM7Z0JBQ0YsT0FBTyxNQUFNLENBQUM7Z0JBQ2QsTUFBTTtZQUNSLEtBQUssc0JBQXNCO2dCQUN6QixNQUFNLEdBQUcsRUFBRSxDQUFDO2dCQUNaLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUU7b0JBQ3RDLElBQUksR0FBRyxDQUFDLElBQUksRUFBRSxFQUFFO3dCQUNkLE1BQU0sQ0FBQyxJQUFJLENBQUM7NEJBQ1YsTUFBTSxFQUFFLEdBQUc7NEJBQ1gsT0FBTyxFQUFFLEtBQUs7NEJBQ2QsVUFBVSxFQUFFLEtBQUs7NEJBQ2pCLGNBQWMsRUFBRSxlQUFlOzRCQUMvQixjQUFjLEVBQUUsQ0FBQzs0QkFDakIsVUFBVSxFQUFFLEtBQUs7NEJBQ2pCLGNBQWMsRUFBRSxFQUFFOzRCQUNsQixLQUFLLEVBQUUsS0FBSzs0QkFDWixzQkFBc0IsRUFBRSxLQUFLOzRCQUM3QixjQUFjLEVBQUUsRUFBRTs0QkFDbEIsZUFBZSxFQUFFLENBQUM7eUJBQ25CLENBQUMsQ0FBQztxQkFDSjtnQkFDSCxDQUFDLENBQUMsQ0FBQztnQkFDSCxPQUFPLE1BQU0sQ0FBQztnQkFDZCxNQUFNO1lBQ1IsS0FBSyx3QkFBd0I7Z0JBQzNCLE1BQU0sR0FBRyxFQUFFLENBQUM7Z0JBQ1osT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRTtvQkFDdEMsSUFBSSxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUU7d0JBQ2YsTUFBTSxDQUFDLElBQUksQ0FBQzs0QkFDVixNQUFNLEVBQUUsR0FBRzs0QkFDWCxPQUFPLEVBQUUsS0FBSzs0QkFDZCxVQUFVLEVBQUUsS0FBSzs0QkFDakIsY0FBYyxFQUFFLGVBQWU7NEJBQy9CLGNBQWMsRUFBRSxDQUFDOzRCQUNqQixVQUFVLEVBQUUsS0FBSzs0QkFDakIsY0FBYyxFQUFFLEVBQUU7NEJBQ2xCLEtBQUssRUFBRSxLQUFLOzRCQUNaLHNCQUFzQixFQUFFLEtBQUs7NEJBQzdCLGNBQWMsRUFBRSxFQUFFOzRCQUNsQixlQUFlLEVBQUUsQ0FBQzt5QkFDbkIsQ0FBQyxDQUFDO3FCQUNKO2dCQUNILENBQUMsQ0FBQyxDQUFDO2dCQUNILE9BQU8sTUFBTSxDQUFDO2dCQUNkLE1BQU07WUFDUixLQUFLLGtCQUFrQjtnQkFDckIsTUFBTSxHQUFHO29CQUNQO3dCQUNFLE1BQU0sRUFBRSxFQUFFO3dCQUNWLE9BQU8sRUFBRSxLQUFLO3dCQUNkLFVBQVUsRUFBRSxLQUFLO3dCQUNqQixjQUFjLEVBQUUsRUFBRTt3QkFDbEIsZ0JBQWdCLEVBQUUsRUFBRTt3QkFDcEIsY0FBYyxFQUFFLEVBQUU7d0JBQ2xCLFVBQVUsRUFBRSxLQUFLO3dCQUNqQixjQUFjLEVBQUUsQ0FBQzt3QkFDakIsY0FBYyxFQUFFLEVBQUU7cUJBQ25CO2lCQUNGLENBQUM7Z0JBQ0YsT0FBTyxNQUFNLENBQUM7Z0JBQ2QsTUFBTTtZQUNSLEtBQUssT0FBTztnQkFDVixNQUFNLEdBQUc7b0JBQ1A7d0JBQ0UsTUFBTSxFQUFFLEVBQUU7d0JBQ1YsT0FBTyxFQUFFLEtBQUs7d0JBQ2QsVUFBVSxFQUFFLEtBQUs7d0JBQ2pCLGNBQWMsRUFBRSxFQUFFO3dCQUNsQixnQkFBZ0IsRUFBRSxFQUFFO3dCQUNwQixjQUFjLEVBQUUsRUFBRTt3QkFDbEIsVUFBVSxFQUFFLEtBQUs7d0JBQ2pCLGNBQWMsRUFBRSxDQUFDO3dCQUNqQixjQUFjLEVBQUUsRUFBRTt3QkFDbEIsWUFBWSxFQUFFLENBQUM7d0JBQ2YsZUFBZSxFQUFFLENBQUM7cUJBQ25CO2lCQUNGLENBQUM7Z0JBQ0YsT0FBTyxNQUFNLENBQUM7Z0JBQ2QsTUFBTTtZQUNSLEtBQUssT0FBTztnQkFDVixNQUFNLEdBQUc7b0JBQ1A7d0JBQ0UsTUFBTSxFQUFFLEVBQUU7d0JBQ1YsT0FBTyxFQUFFLEtBQUs7d0JBQ2QsVUFBVSxFQUFFLEtBQUs7d0JBQ2pCLGNBQWMsRUFBRSxFQUFFO3dCQUNsQixnQkFBZ0IsRUFBRSxFQUFFO3dCQUNwQixjQUFjLEVBQUUsRUFBRTt3QkFDbEIsVUFBVSxFQUFFLEtBQUs7d0JBQ2pCLGNBQWMsRUFBRSxDQUFDO3dCQUNqQixjQUFjLEVBQUUsRUFBRTtxQkFDbkI7aUJBQ0YsQ0FBQztnQkFDRixPQUFPLE1BQU0sQ0FBQztnQkFDZCxNQUFNO1lBQ1IsS0FBSyxlQUFlO2dCQUNsQixNQUFNLEdBQUc7b0JBQ1A7d0JBQ0UsTUFBTSxFQUFFLEVBQUU7d0JBQ1YsT0FBTyxFQUFFLEtBQUs7d0JBQ2QsVUFBVSxFQUFFLEtBQUs7d0JBQ2pCLGNBQWMsRUFBRSxFQUFFO3dCQUNsQixnQkFBZ0IsRUFBRSxFQUFFO3dCQUNwQixjQUFjLEVBQUUsRUFBRTt3QkFDbEIsVUFBVSxFQUFFLEtBQUs7d0JBQ2pCLGNBQWMsRUFBRSxDQUFDO3dCQUNqQixjQUFjLEVBQUUsRUFBRTt3QkFDbEIsZUFBZSxFQUFFLE1BQU07cUJBQ3hCO2lCQUNGLENBQUM7Z0JBQ0YsT0FBTyxNQUFNLENBQUM7Z0JBQ2QsTUFBTTtZQUNSLEtBQUssTUFBTTtnQkFDVCxNQUFNLEdBQUc7b0JBQ1A7d0JBQ0UsTUFBTSxFQUFFLEVBQUU7d0JBQ1YsT0FBTyxFQUFFLEtBQUs7d0JBQ2QsVUFBVSxFQUFFLEtBQUs7d0JBQ2pCLGNBQWMsRUFBRSxFQUFFO3dCQUNsQixnQkFBZ0IsRUFBRSxFQUFFO3dCQUNwQixjQUFjLEVBQUUsRUFBRTt3QkFDbEIsVUFBVSxFQUFFLEtBQUs7d0JBQ2pCLGNBQWMsRUFBRSxDQUFDO3dCQUNqQixjQUFjLEVBQUUsRUFBRTt3QkFDbEIsWUFBWSxFQUFFLEtBQUs7d0JBQ25CLFNBQVMsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQzt3QkFDNUMsT0FBTyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDO3dCQUMxQyxZQUFZLEVBQUUsQ0FBQzt3QkFDZixlQUFlLEVBQUUsQ0FBQztxQkFDbkI7aUJBQ0YsQ0FBQztnQkFDRixPQUFPLE1BQU0sQ0FBQztnQkFDZCxNQUFNO1lBQ1IsS0FBSyxhQUFhO2dCQUNoQixNQUFNLEdBQUc7b0JBQ1A7d0JBQ0UsTUFBTSxFQUFFLEVBQUU7d0JBQ1YsT0FBTyxFQUFFLEtBQUs7d0JBQ2QsVUFBVSxFQUFFLEtBQUs7d0JBQ2pCLGNBQWMsRUFBRSxFQUFFO3dCQUNsQixnQkFBZ0IsRUFBRSxFQUFFO3dCQUNwQixjQUFjLEVBQUUsRUFBRTt3QkFDbEIsVUFBVSxFQUFFLEtBQUs7d0JBQ2pCLGNBQWMsRUFBRSxDQUFDO3dCQUNqQixVQUFVLEVBQUUsQ0FBQzt3QkFDYixRQUFRLEVBQUUsR0FBRzt3QkFDYixjQUFjLEVBQUUsRUFBRTt3QkFDbEIsVUFBVSxFQUFFLFFBQVE7d0JBQ3BCLFFBQVEsRUFBRSxDQUFDO3dCQUNYLFFBQVEsRUFBRSxHQUFHO3dCQUNiLFlBQVksRUFBRSxDQUFDO3dCQUNmLGVBQWUsRUFBRSxDQUFDO3FCQUNuQjtpQkFDRixDQUFDO2dCQUNGLE9BQU8sTUFBTSxDQUFDO2dCQUNkLE1BQU07WUFDUixLQUFLLE1BQU07Z0JBQ1QsTUFBTSxHQUFHO29CQUNQO3dCQUNFLE1BQU0sRUFBRSxFQUFFO3dCQUNWLE9BQU8sRUFBRSxLQUFLO3dCQUNkLFVBQVUsRUFBRSxLQUFLO3dCQUNqQixjQUFjLEVBQUUsRUFBRTt3QkFDbEIsZ0JBQWdCLEVBQUUsRUFBRTt3QkFDcEIsY0FBYyxFQUFFLEVBQUU7d0JBQ2xCLFVBQVUsRUFBRSxLQUFLO3dCQUNqQixjQUFjLEVBQUUsQ0FBQzt3QkFDakIsY0FBYyxFQUFFLEVBQUU7cUJBQ25CO2lCQUNGLENBQUM7Z0JBQ0YsT0FBTyxNQUFNLENBQUM7Z0JBQ2QsTUFBTTtZQUNSLEtBQUssYUFBYTtnQkFDaEIsTUFBTSxHQUFHO29CQUNQO3dCQUNFLE1BQU0sRUFBRSxFQUFFO3dCQUNWLE9BQU8sRUFBRSxLQUFLO3dCQUNkLFVBQVUsRUFBRSxLQUFLO3dCQUNqQixjQUFjLEVBQUUsRUFBRTt3QkFDbEIsZ0JBQWdCLEVBQUUsRUFBRTt3QkFDcEIsY0FBYyxFQUFFLEVBQUU7d0JBQ2xCLFVBQVUsRUFBRSxLQUFLO3dCQUNqQixjQUFjLEVBQUUsQ0FBQzt3QkFDakIsY0FBYyxFQUFFLEVBQUU7d0JBQ2xCLEtBQUssRUFBRSxLQUFLO3dCQUNaLFVBQVUsRUFBRSxDQUFDO3dCQUNiLFVBQVUsRUFBRSxDQUFDO3FCQUNkO2lCQUNGLENBQUM7Z0JBQ0YsT0FBTyxNQUFNLENBQUM7Z0JBQ2QsTUFBTTtZQUNSLEtBQUssVUFBVTtnQkFDYixNQUFNLEdBQUcsRUFBRSxDQUFDO2dCQUNaLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUU7b0JBQ3RDLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFO3dCQUNmLE1BQU0sQ0FBQyxJQUFJLENBQUM7NEJBQ1YsTUFBTSxFQUFFLEdBQUc7NEJBQ1gsT0FBTyxFQUFFLEtBQUs7NEJBQ2QsVUFBVSxFQUFFLEtBQUs7NEJBQ2pCLGNBQWMsRUFBRSxlQUFlOzRCQUMvQixjQUFjLEVBQUUsQ0FBQzs0QkFDakIsVUFBVSxFQUFFLEtBQUs7NEJBQ2pCLGNBQWMsRUFBRSxFQUFFOzRCQUNsQixLQUFLLEVBQUUsS0FBSzs0QkFDWixzQkFBc0IsRUFBRSxLQUFLOzRCQUM3QixjQUFjLEVBQUUsRUFBRTs0QkFDbEIsZUFBZSxFQUFFLENBQUM7eUJBQ25CLENBQUMsQ0FBQztxQkFDSjtnQkFDSCxDQUFDLENBQUMsQ0FBQztnQkFDSCxPQUFPLE1BQU0sQ0FBQztnQkFDZCxNQUFNO1lBQ1I7Z0JBQ0UsT0FBTyxFQUFFLENBQUM7U0FDYjtJQUNILENBQUM7SUFFRCxnQkFBZ0I7UUFDZCxJQUFJLENBQUMsVUFBVTthQUNaLGdCQUFnQixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDO2FBQ2hELElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQzVCLFNBQVMsQ0FDUixDQUFDLEdBQVEsRUFBRSxFQUFFO1lBQ1gsSUFBSSxHQUFHLEVBQUU7Z0JBQ1AsSUFBSSxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsR0FBRyxFQUFFLG9CQUFvQixDQUFDLENBQUM7YUFDNUQ7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsOEJBQThCLENBQUMsQ0FBQzthQUMxRDtRQUNILENBQUMsRUFDRCxDQUFDLEtBQVUsRUFBRSxFQUFFO1lBQ2IsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsOEJBQThCLENBQUMsQ0FBQztRQUMzRCxDQUFDLENBQ0YsQ0FBQztJQUNOLENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxFQUFFO1lBQ3JDLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLDJCQUEyQixDQUFDLENBQUM7WUFDdEQsT0FBTztTQUNSO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFO1lBQzFCLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLDRCQUE0QixDQUFDLENBQUM7WUFDdkQsT0FBTztTQUNSO1FBQ0QsSUFBSSxNQUFNLEdBQUc7WUFDWCxhQUFhLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLEVBQUUsSUFBSSxFQUFFO1lBQ3ZELG9CQUFvQixFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsb0JBQW9CLEVBQUUsSUFBSSxFQUFFO1lBQ3JFLFFBQVEsRUFBRSxJQUFJLENBQUMsY0FBYztZQUM3QixRQUFRLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRO1lBQ3JDLFVBQVUsRUFBRSxNQUFNO1NBQ25CLENBQUM7UUFDRixJQUFJLENBQUMsVUFBVTthQUNaLGtCQUFrQixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxFQUFFLE1BQU0sQ0FBQzthQUMxRCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQzthQUM1QixTQUFTLENBQ1IsQ0FBQyxHQUFRLEVBQUUsRUFBRTtZQUNYLElBQUksR0FBRyxFQUFFO2dCQUNQLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxHQUFHLEVBQUU7b0JBQ3BCLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO29CQUMvQixJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO2lCQUM5RDtxQkFBTTtvQkFDTCxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO2lCQUN6RDthQUNGO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLDZCQUE2QixDQUFDLENBQUM7YUFDekQ7UUFDSCxDQUFDLEVBQ0QsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNSLElBQUksR0FBRyxHQUNMLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE9BQU87Z0JBQzVCLDBDQUEwQyxDQUFDO1lBQzdDLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2hDLENBQUMsQ0FDRixDQUFDO0lBQ04sQ0FBQzt3R0FsbUJVLHVCQUF1Qjs0RkFBdkIsdUJBQXVCLHlhQ3BCcEMsZzBZQThNTTs7NEZEMUxPLHVCQUF1QjtrQkFMbkMsU0FBUzsrQkFDRSxxQkFBcUI7OE9BTXRCLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ3dCLGVBQWU7c0JBQTVDLFNBQVM7dUJBQUMsaUJBQWlCO2dCQUNULFNBQVM7c0JBQTNCLFNBQVM7dUJBQUMsTUFBTTtnQkFDRyxVQUFVO3NCQUE3QixTQUFTO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBWaWV3Q2hpbGQsIEVsZW1lbnRSZWYsIENoYW5nZURldGVjdG9yUmVmLCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMsIE9uSW5pdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gJ3RhbmdvLWFwcC11aS1zaGFyZWQnO1xyXG5pbXBvcnQgKiBhcyBYTFNYIGZyb20gJ3hsc3gnO1xyXG5pbXBvcnQgeyBUcmF4U2VydmljZSB9IGZyb20gXCIuLi8uLi8uLi9zZXJ2aWNlcy90cmF4LnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgdGFrZVVudGlsLFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgTmdiQWN0aXZlTW9kYWwsIE5nYk1vZGFsIH0gZnJvbSBcIkBuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwXCI7XHJcbmltcG9ydCBkYXlqcyBmcm9tICdkYXlqcyc7XHJcbmltcG9ydCB7IERFRkFVTFRfSU1BR0VfREVTQ1JJUFRJT05fTU9ERSB9IGZyb20gJy4uL2ltYWdlLWRlc2NyaXB0aW9uLW1vZGUnO1xyXG5cclxuLy8gT3B0aW9uYWwgY29sdW1uIEMgKG5leHQgdG8gUXVlc3Rpb24pIG9mIHRoZSBidWxrIHVwbG9hZCB0ZW1wbGF0ZSAoc3RhdGljIGNyZWF0ZSB0ZW1wbGF0ZSArIC90cmF4L2V4cG9ydFF1ZXN0aW9ucyk7XHJcbi8vIHNhdmVkIGFzIHFkZXNjcmlwdGlvbi4gQ29sdW1ucyBhcmUgcmVhZCBieSBoZWFkZXIgbmFtZSwgc28gb2xkZXIgZmlsZXMgd2l0aG91dCBpdCBzdGlsbCB1cGxvYWQuXHJcbmNvbnN0IFFERVNDUklQVElPTl9DT0xVTU4gPSAnUXVlc3Rpb24gRGVzY3JpcHRpb24gKE9wdGlvbmFsKSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJsaWItY2hlY2tsaXN0LXBvcHVwXCIsXHJcbiAgdGVtcGxhdGVVcmw6IFwiLi9jaGVja2xpc3QtcG9wdXAuY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybDogXCIuL2NoZWNrbGlzdC1wb3B1cC5jb21wb25lbnQuc2Nzc1wiLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ2hlY2tsaXN0UG9wdXBDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIGNoZWNrbGlzdEZvcm06IEZvcm1Hcm91cDtcclxuICBASW5wdXQoKSBjbGllbnRJZDogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHR5cGU6IHN0cmluZztcclxuICBASW5wdXQoKSBjaGVja2xpc3REYXRhOiBhbnk7XHJcbiAgQFZpZXdDaGlsZChcImFmdGVyVmFsaWRhdGlvblwiKSBhZnRlclZhbGlkYXRpb246IGFueTtcclxuICBAVmlld0NoaWxkKFwiZmlsZVwiKSBmaWxlSW5wdXQhOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoXCJmaWxlMVwiKSBmaWxlSW5wdXQxITogRWxlbWVudFJlZjtcclxuXHJcbiAgZmlsZU5hbWU6IGFueTtcclxuICBmaWxlU2l6ZTogYW55O1xyXG4gIHNlY3Rpb25EZXRhaWxzOiBhbnkgPSBbXHJcbiAgICB7XHJcbiAgICAgIG5hbWU6IFwiU2VjdGlvbiAxXCIsXHJcbiAgICAgIHNlY3Rpb25OdW1iZXI6IDEsXHJcbiAgICAgIHF1ZXN0aW9uczogW10sXHJcbiAgICB9LFxyXG4gIF07XHJcbiAgcHJpdmF0ZSBkZXRhY2ggPSBuZXcgU3ViamVjdCgpO1xyXG4gIGV4Y2VsRGF0YTogYW55ID0gW107XHJcbiAgZXhjZWxFcnJvcjogYW55O1xyXG4gIGRheWpzID0gZGF5anM7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIsXHJcbiAgICBwcml2YXRlIHRvYXN0OiBUb2FzdFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHNvcFNlcnZpY2U6IFRyYXhTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcclxuICAgIHB1YmxpYyBkaWFsb2dSZWY6IE5nYkFjdGl2ZU1vZGFsLFxyXG4gICAgcHJpdmF0ZSBkaWFsb2c6IE5nYk1vZGFsLFxyXG4gICAgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgKSB7XHJcbiAgICB0aGlzLmNoZWNrbGlzdEZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcclxuICAgICAgbmFtZTogW1wiXCJdLFxyXG4gICAgICBkZXNjcmlwdGlvbjogW1wiXCJdLFxyXG4gICAgICBtb2RlOiBbXCJpbmRpdmlkdWFsXCJdLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnR5cGUgIT0gXCJjcmVhdGVcIikge1xyXG4gICAgICB0aGlzLmNoZWNrbGlzdEZvcm0uZ2V0KFwibW9kZVwiKT8uc2V0VmFsdWUoXCJidWxrXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IG1vZGUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5jaGVja2xpc3RGb3JtLnZhbHVlLm1vZGU7XHJcbiAgfVxyXG5cclxuICBzZWxlY3RNb2RlKG1vZGU6IHN0cmluZykge1xyXG4gICAgdGhpcy5jaGVja2xpc3RGb3JtLnBhdGNoVmFsdWUoeyBtb2RlIH0pO1xyXG4gIH1cclxuXHJcbiAgb25GaWxlU2VsZWN0ZWQoZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy5leGNlbERhdGEgPSBbXTtcclxuICAgIHRoaXMuZXhjZWxFcnJvciA9IG51bGw7XHJcbiAgICB0aGlzLnNlY3Rpb25EZXRhaWxzID0gW107XHJcbiAgICBjb25zdCBmaWxlID0gZXZlbnQudGFyZ2V0LmZpbGVzWzBdO1xyXG4gICAgY29uc3QgdGFyZ2V0OiBEYXRhVHJhbnNmZXIgPSA8RGF0YVRyYW5zZmVyPmV2ZW50LnRhcmdldDtcclxuICAgIGxldCBpc0V4Y2VsRmlsZSA9ICEhdGFyZ2V0LmZpbGVzWzBdLm5hbWUubWF0Y2goLygueGxzfC54bHN4KS8pO1xyXG4gICAgaWYgKCFpc0V4Y2VsRmlsZSkge1xyXG4gICAgICB0aGlzLnRvYXN0LmdldEVycm9yVG9hc3QoXCJQbGVhc2UgVXBsb2FkIGEgdmFsaWQgeGxzeCBmaWxlXCIpO1xyXG4gICAgfVxyXG4gICAgaWYgKGlzRXhjZWxGaWxlKSB7XHJcbiAgICAgIGNvbnN0IHJlYWRlcjogRmlsZVJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XHJcbiAgICAgIHJlYWRlci5yZWFkQXNCaW5hcnlTdHJpbmcodGFyZ2V0LmZpbGVzWzBdKTtcclxuICAgICAgcmVhZGVyLm9ubG9hZCA9IChlOiBhbnkpID0+IHtcclxuICAgICAgICBjb25zdCBic3RyOiBzdHJpbmcgPSBlLnRhcmdldC5yZXN1bHQ7XHJcbiAgICAgICAgY29uc3Qgd2I6IFhMU1guV29ya0Jvb2sgPSBYTFNYLnJlYWQoYnN0ciwgeyB0eXBlOiBcImJpbmFyeVwiIH0pO1xyXG4gICAgICAgIGNvbnN0IHdzbmFtZTogc3RyaW5nID0gd2IuU2hlZXROYW1lc1swXTtcclxuICAgICAgICBjb25zdCB3czogWExTWC5Xb3JrU2hlZXQgPSB3Yi5TaGVldHNbd3NuYW1lXTtcclxuICAgICAgICBsZXQgZGF0YSA9IFhMU1gudXRpbHMuc2hlZXRfdG9fanNvbih3cywgeyBkZWZ2YWw6IFwiXCIgfSk7XHJcbiAgICAgICAgaWYgKCFkYXRhLmxlbmd0aCkge1xyXG4gICAgICAgICAgdGhpcy50b2FzdC5nZXRFcnJvclRvYXN0KFwiUGxlYXNlIHVwbG9hZCBhIHZhbGlkIGZpbGVcIik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZXhjZWxEYXRhID0gZGF0YTtcclxuICAgICAgICBsZXQgZXJyb3I6IGFueSA9IFtdO1xyXG4gICAgICAgIGxldCBxdWVzdGlvbkxpc3Q6IGFueSA9IFtdO1xyXG4gICAgICAgIHRoaXMuZXhjZWxEYXRhLmZvckVhY2goKGVsZTogYW55LCBpbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgICBpZiAoIWVsZT8uW1wiU2VjdGlvbiBOYW1lXCJdPy50b1N0cmluZygpPy50cmltKCkpIHtcclxuICAgICAgICAgICAgZXJyb3IucHVzaChgSW52YWxpZCBTZWN0aW9uIE5hbWUgLSBBJHtpbmRleCArIDJ9YCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoIWVsZT8uW1wiUXVlc3Rpb25cIl0/LnRvU3RyaW5nKCk/LnRyaW0oKSkge1xyXG4gICAgICAgICAgICBlcnJvci5wdXNoKGBJbnZhbGlkIFF1ZXN0aW9uIE5hbWUgLSBCJHtpbmRleCArIDJ9YCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoIWVsZT8uW1wiQW5zd2VyIFR5cGVcIl0/LnRyaW0oKSkge1xyXG4gICAgICAgICAgICBlcnJvci5wdXNoKGBJbnZhbGlkIEFuc3dlciBUeXBlIC0gRCR7aW5kZXggKyAyfWApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICBlbGU/LltcIkFuc3dlciBUeXBlXCJdPy50cmltKCkgJiZcclxuICAgICAgICAgICAgW1xyXG4gICAgICAgICAgICAgIFwiTXVsdGlwbGUgQ2hvaWNlIFNpbmdsZVwiLFxyXG4gICAgICAgICAgICAgIFwiTXVsdGlwbGUgQ2hvaWNlIE11bHRpcGxlXCIsXHJcbiAgICAgICAgICAgICAgXCJEcm9wZG93blwiLFxyXG4gICAgICAgICAgICBdLmluY2x1ZGVzKGVsZT8uW1wiQW5zd2VyIFR5cGVcIl0pICYmXHJcbiAgICAgICAgICAgICFlbGU/LltcIkFuc3dlciBPcHRpb25zXCJdPy50b1N0cmluZygpPy50cmltKClcclxuICAgICAgICAgICkge1xyXG4gICAgICAgICAgICBlcnJvci5wdXNoKGBJbnZhbGlkIEFuc3dlciBPcHRpb25zIC0gRSR7aW5kZXggKyAyfWApO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGxldCBxTmFtZTogc3RyaW5nID1cclxuICAgICAgICAgICAgZWxlPy5bXCJTZWN0aW9uIE5hbWVcIl0/LnRvU3RyaW5nKCk/LnRyaW0oKS50b0xvd2VyQ2FzZSgpICtcclxuICAgICAgICAgICAgZWxlPy5bXCJRdWVzdGlvblwiXT8udG9TdHJpbmcoKT8udHJpbSgpLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgICAgICBpZiAoIXF1ZXN0aW9uTGlzdC5pbmNsdWRlcyhxTmFtZSkpIHtcclxuICAgICAgICAgICAgcXVlc3Rpb25MaXN0LnB1c2gocU5hbWUpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgZXJyb3IucHVzaChgJHtlbGU/LltcIlF1ZXN0aW9uXCJdPy50cmltKCl9IHF1ZXN0aW9uIGlzIER1cGxpY2F0ZWRgKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICBpZiAoZXJyb3IubGVuZ3RoKSB7XHJcbiAgICAgICAgICBjb25zdCBwb3B1cGNvbnRlbnQgPSB7XHJcbiAgICAgICAgICAgIGRpc3BsYXlwcm9wOiBmYWxzZSxcclxuICAgICAgICAgICAgaW1hZ2VzcmM6IGA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjU2XCIgaGVpZ2h0PVwiNTZcIiB2aWV3Qm94PVwiMCAwIDU2IDU2XCIgZmlsbD1cIm5vbmVcIj48cmVjdCB4PVwiNFwiIHk9XCI0XCIgd2lkdGg9XCI0OFwiIGhlaWdodD1cIjQ4XCIgcng9XCIyNFwiIGZpbGw9XCIjRkVGMEM3XCIvPjxwYXRoIGQ9XCJNMjcuOTk5OCAyNC4wMDEyVjI4LjAwMTJNMjcuOTk5OCAzMi4wMDEySDI4LjAwOThNMjYuMjg5OCAxOC44NjEyTDE3LjgxOTggMzMuMDAxMkMxNy42NDUxIDMzLjMwMzYgMTcuNTUyNyAzMy42NDY1IDE3LjU1MTggMzMuOTk1N0MxNy41NTA4IDM0LjM0NDkgMTcuNjQxMyAzNC42ODgzIDE3LjgxNDIgMzQuOTkxN0MxNy45ODcxIDM1LjI5NTEgMTguMjM2NSAzNS41NDc5IDE4LjUzNzUgMzUuNzI1QzE4LjgzODUgMzUuOTAyMSAxOS4xODA2IDM1Ljk5NzMgMTkuNTI5OCAzNi4wMDEySDM2LjQ2OThDMzYuODE5IDM1Ljk5NzMgMzcuMTYxMSAzNS45MDIxIDM3LjQ2MjEgMzUuNzI1QzM3Ljc2MzEgMzUuNTQ3OSAzOC4wMTI0IDM1LjI5NTEgMzguMTg1NCAzNC45OTE3QzM4LjM1ODMgMzQuNjg4MyAzOC40NDg4IDM0LjM0NDkgMzguNDQ3OCAzMy45OTU3QzM4LjQ0NjggMzMuNjQ2NSAzOC4zNTQ0IDMzLjMwMzYgMzguMTc5OCAzMy4wMDEyTDI5LjcwOTggMTguODYxMkMyOS41MzE1IDE4LjU2NzMgMjkuMjgwNSAxOC4zMjQzIDI4Ljk4MSAxOC4xNTU3QzI4LjY4MTQgMTcuOTg3IDI4LjM0MzUgMTcuODk4NCAyNy45OTk4IDE3Ljg5ODRDMjcuNjU2IDE3Ljg5ODQgMjcuMzE4MSAxNy45ODcgMjcuMDE4NiAxOC4xNTU3QzI2LjcxOTEgMTguMzI0MyAyNi40NjggMTguNTY3MyAyNi4yODk4IDE4Ljg2MTJaXCIgc3Ryb2tlPVwiI0RDNjgwM1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PHJlY3QgeD1cIjRcIiB5PVwiNFwiIHdpZHRoPVwiNDhcIiBoZWlnaHQ9XCI0OFwiIHJ4PVwiMjRcIiBzdHJva2U9XCIjRkZGQUVCXCIgc3Ryb2tlLXdpZHRoPVwiOFwiLz48L3N2Zz5gLFxyXG4gICAgICAgICAgICB0aXRsZTogYEludmFsaWQgZGV0YWlscyFgLFxyXG4gICAgICAgICAgICBjb250ZW50OiBgUGxlYXNlIHByb3ZpZGUgY29ycmVjdCBhbmQgY29tcGxldGUgc3RvcmUgaW5mb3JtYXRpb24uYCxcclxuICAgICAgICAgICAgYnV0dG9udHlwZTogXCJlcnJvclwiLFxyXG4gICAgICAgICAgICBlcnJvcjogZXJyb3IsXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgICAgdGhpcy5leGNlbEVycm9yID0gcG9wdXBjb250ZW50O1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgc2VjdGlvbk51bWJlciA9IDA7XHJcbiAgICAgICAgbGV0IGFuc3dlclR5cGU6IGFueSA9IHtcclxuICAgICAgICAgIFwiRGVzY3JpcHRpdmUgQW5zd2VyXCI6IFwiZGVzY3JpcHRpdmVcIixcclxuICAgICAgICAgIFwiQS9CIFF1ZXN0aW9uXCI6IFwieWVzL25vXCIsXHJcbiAgICAgICAgICBcIk11bHRpcGxlIENob2ljZSBTaW5nbGVcIjogXCJtdWx0aXBsZWNob2ljZXNpbmdsZVwiLFxyXG4gICAgICAgICAgXCJNdWx0aXBsZSBDaG9pY2UgTXVsdGlwbGVcIjogXCJtdWx0aXBsZWNob2ljZW11bHRpcGxlXCIsXHJcbiAgICAgICAgICBcIkNhcHR1cmUgSW1hZ2Ugd2l0aCBEZXNjcmlwdGlvblwiOiBcImRlc2NyaXB0aXZlSW1hZ2VcIixcclxuICAgICAgICAgIFwiQ2FwdHVyZSBJbWFnZSBhcyBhbnN3ZXJcIjogXCJpbWFnZVwiLFxyXG4gICAgICAgICAgXCJDYXB0dXJlIHZpZGVvIGFzIGFuc3dlclwiOiBcInZpZGVvXCIsXHJcbiAgICAgICAgICBcIkNhcHR1cmUgTXVsdGlwbGUgSW1hZ2VcIjogXCJtdWx0aXBsZUltYWdlXCIsXHJcbiAgICAgICAgICBEYXRlOiBcImRhdGVcIixcclxuICAgICAgICAgIFwiTGluZWFyIFNjYWxlXCI6IFwibGluZWFyc2NhbGVcIixcclxuICAgICAgICAgIFwiQ2FwdHVyZSBJbWFnZS9WaWRlbyBhcyBBbnN3ZXJcIjogXCJpbWFnZS92aWRlb1wiLFxyXG4gICAgICAgICAgVGltZTogXCJ0aW1lXCIsXHJcbiAgICAgICAgICBEcm9wZG93bjogXCJkcm9wZG93blwiLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgbGV0IHNlY0RldGFpbHM6IGFueSA9IGRhdGEucmVkdWNlKChhY2M6IGFueSwgZWxlOiBhbnkpID0+IHtcclxuICAgICAgICAgIGxldCBzZWN0aW9uTmFtZSA9IGVsZVtcIlNlY3Rpb24gTmFtZVwiXT8udG9TdHJpbmcoKT8udHJpbSgpLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgICAgICBpZiAoIWFjYz8uW3NlY3Rpb25OYW1lXSkge1xyXG4gICAgICAgICAgICBzZWN0aW9uTnVtYmVyKys7XHJcbiAgICAgICAgICAgIGFjY1tgJHtzZWN0aW9uTmFtZX1gXSA9IHtcclxuICAgICAgICAgICAgICBuYW1lOiBlbGVbXCJTZWN0aW9uIE5hbWVcIl0/LnRvU3RyaW5nKCk/LnRyaW0oKSxcclxuICAgICAgICAgICAgICBzZWN0aW9uTnVtYmVyOiBzZWN0aW9uTnVtYmVyLFxyXG4gICAgICAgICAgICAgIHF1ZXN0aW9uczogW1xyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICBxbm86IDEsXHJcbiAgICAgICAgICAgICAgICAgIHFuYW1lOiBlbGVbXCJRdWVzdGlvblwiXT8udG9TdHJpbmcoKT8udHJpbSgpLFxyXG4gICAgICAgICAgICAgICAgICBvbGRRbmFtZTogZWxlW1wiUXVlc3Rpb25cIl0/LnRvU3RyaW5nKCk/LnRyaW0oKSxcclxuICAgICAgICAgICAgICAgICAgYW5zd2VyVHlwZTogYW5zd2VyVHlwZVtgJHtlbGVbXCJBbnN3ZXIgVHlwZVwiXX1gXSxcclxuICAgICAgICAgICAgICAgICAgYW5zd2VyczogdGhpcy5maW5kQW5zd2VyKFxyXG4gICAgICAgICAgICAgICAgICAgIGFuc3dlclR5cGVbYCR7ZWxlW1wiQW5zd2VyIFR5cGVcIl19YF0sXHJcbiAgICAgICAgICAgICAgICAgICAgZWxlW1wiQW5zd2VyIE9wdGlvbnNcIl0sXHJcbiAgICAgICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgICAgICAgIHJ1bkFJOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgcnVuQUlEZWZhdWx0OiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgYWxsb3dVcGxvYWRmcm9tR2FsbGVyeTogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgIGxpbmtUeXBlOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgbXVsdGlRdWVzdGlvblJlZmVyZW5jZUltYWdlOiBbXSxcclxuICAgICAgICAgICAgICAgICAgcXVlc3Rpb25SZWZlcmVuY2VJbWFnZTogXCJcIixcclxuICAgICAgICAgICAgICAgICAgcnVuQUlGZWF0dXJlczogW10sXHJcbiAgICAgICAgICAgICAgICAgIGRpc2FibGVSdW5BSTogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgIHJ1bkFJRGVzY3JpcHRpb246IFwiXCIsXHJcbiAgICAgICAgICAgICAgICAgIGFsbG93TXVsdGlwbGU6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICBjb21wbGlhbmNlOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpdmV0eXBlOiBcInRleHRcIixcclxuICAgICAgICAgICAgICAgICAgcWRlc2NyaXB0aW9uOiBlbGVbUURFU0NSSVBUSU9OX0NPTFVNTl0/LnRvU3RyaW5nKCk/LnRyaW0oKSB8fCBcIlwiLFxyXG4gICAgICAgICAgICAgICAgICAvLyBJbXBvcnRlZCBxdWVzdGlvbnMgYXJlIG5ldywgc28gbXVsdGktaW1hZ2Ugb25lcyBnZXQgdGhlIGJ1aWxkZXIncyBkZWZhdWx0IG1vZGUuXHJcbiAgICAgICAgICAgICAgICAgIC4uLihhbnN3ZXJUeXBlW2Ake2VsZVtcIkFuc3dlciBUeXBlXCJdfWBdID09PSBcIm11bHRpcGxlSW1hZ2VcIiA/IHsgaW1hZ2VEZXNjcmlwdGlvbk1vZGU6IERFRkFVTFRfSU1BR0VfREVTQ1JJUFRJT05fTU9ERSB9IDoge30pLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgYWNjW2Ake3NlY3Rpb25OYW1lfWBdLnF1ZXN0aW9ucy5wdXNoKHtcclxuICAgICAgICAgICAgICBxbm86IGFjY1tgJHtzZWN0aW9uTmFtZX1gXS5xdWVzdGlvbnMubGVuZ3RoICsgMSxcclxuICAgICAgICAgICAgICBxbmFtZTogZWxlW1wiUXVlc3Rpb25cIl0/LnRvU3RyaW5nKCk/LnRyaW0oKSxcclxuICAgICAgICAgICAgICBvbGRRbmFtZTogZWxlW1wiUXVlc3Rpb25cIl0/LnRvU3RyaW5nKCk/LnRyaW0oKSxcclxuICAgICAgICAgICAgICBhbnN3ZXJUeXBlOiBhbnN3ZXJUeXBlW2Ake2VsZVtcIkFuc3dlciBUeXBlXCJdfWBdLFxyXG4gICAgICAgICAgICAgIGFuc3dlcnM6IHRoaXMuZmluZEFuc3dlcihcclxuICAgICAgICAgICAgICAgIGFuc3dlclR5cGVbYCR7ZWxlW1wiQW5zd2VyIFR5cGVcIl19YF0sXHJcbiAgICAgICAgICAgICAgICBlbGVbXCJBbnN3ZXIgT3B0aW9uc1wiXSxcclxuICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICAgIHJ1bkFJOiBmYWxzZSxcclxuICAgICAgICAgICAgICBydW5BSURlZmF1bHQ6IGZhbHNlLFxyXG4gICAgICAgICAgICAgIGFsbG93VXBsb2FkZnJvbUdhbGxlcnk6IGZhbHNlLFxyXG4gICAgICAgICAgICAgIGxpbmtUeXBlOiBmYWxzZSxcclxuICAgICAgICAgICAgICBtdWx0aVF1ZXN0aW9uUmVmZXJlbmNlSW1hZ2U6IFtdLFxyXG4gICAgICAgICAgICAgIHF1ZXN0aW9uUmVmZXJlbmNlSW1hZ2U6IFwiXCIsXHJcbiAgICAgICAgICAgICAgcnVuQUlGZWF0dXJlczogW10sXHJcbiAgICAgICAgICAgICAgZGlzYWJsZVJ1bkFJOiBmYWxzZSxcclxuICAgICAgICAgICAgICBydW5BSURlc2NyaXB0aW9uOiBcIlwiLFxyXG4gICAgICAgICAgICAgIGFsbG93TXVsdGlwbGU6IGZhbHNlLFxyXG4gICAgICAgICAgICAgIGNvbXBsaWFuY2U6IGZhbHNlLFxyXG4gICAgICAgICAgICAgIGRlc2NyaXB0aXZldHlwZTogXCJ0ZXh0XCIsXHJcbiAgICAgICAgICAgICAgcWRlc2NyaXB0aW9uOiBlbGVbUURFU0NSSVBUSU9OX0NPTFVNTl0/LnRvU3RyaW5nKCk/LnRyaW0oKSB8fCBcIlwiLFxyXG4gICAgICAgICAgICAgIC4uLihhbnN3ZXJUeXBlW2Ake2VsZVtcIkFuc3dlciBUeXBlXCJdfWBdID09PSBcIm11bHRpcGxlSW1hZ2VcIiA/IHsgaW1hZ2VEZXNjcmlwdGlvbk1vZGU6IERFRkFVTFRfSU1BR0VfREVTQ1JJUFRJT05fTU9ERSB9IDoge30pLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHJldHVybiBhY2M7XHJcbiAgICAgICAgfSwge30pO1xyXG4gICAgICAgIHRoaXMuc2VjdGlvbkRldGFpbHMgPSBPYmplY3QudmFsdWVzKHNlY0RldGFpbHMpO1xyXG4gICAgICAgIGlmICh0aGlzLmZpbGVJbnB1dCkge1xyXG4gICAgICAgICAgdGhpcy5maWxlSW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9IFwiXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLmZpbGVJbnB1dDEpIHtcclxuICAgICAgICAgIHRoaXMuZmlsZUlucHV0MS5uYXRpdmVFbGVtZW50LnZhbHVlID0gXCJcIjtcclxuICAgICAgICB9XHJcbiAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGZpbGUpIHtcclxuICAgICAgdGhpcy5maWxlTmFtZSA9IGZpbGUubmFtZTtcclxuICAgICAgdGhpcy5maWxlU2l6ZSA9IE1hdGgucm91bmQoZmlsZS5zaXplIC8gMTAyNCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkRyYWdPdmVyKGV2ZW50OiBhbnkpIHtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgfVxyXG5cclxuICBvbkRyb3AoZXZlbnQ6IGFueSkge1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuXHJcbiAgICBjb25zdCBmaWxlID0gZXZlbnQuZGF0YVRyYW5zZmVyLmZpbGVzWzBdO1xyXG5cclxuICAgIGlmIChmaWxlKSB7XHJcbiAgICAgIHRoaXMuZmlsZU5hbWUgPSBmaWxlLm5hbWU7XHJcbiAgICAgIHRoaXMuZmlsZVNpemUgPSBNYXRoLnJvdW5kKGZpbGUuc2l6ZSAvIDEwMjQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgUmV1cGxvYWQoKSB7XHJcbiAgICBpZiAodGhpcy5maWxlSW5wdXQpIHtcclxuICAgICAgdGhpcy5maWxlSW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9IFwiXCI7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5maWxlSW5wdXQxKSB7XHJcbiAgICAgIHRoaXMuZmlsZUlucHV0MS5uYXRpdmVFbGVtZW50LnZhbHVlID0gXCJcIjtcclxuICAgIH1cclxuICAgIGxldCBlbGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImt0X2FjY291bnRfdGVhbV9zaXplX3NlbGVjdF8yXCIpO1xyXG4gICAgZWxlPy5jbGljaygpO1xyXG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBjcmVhdGVDaGVja2xpc3QoKSB7XHJcbiAgICBpZiAoIXRoaXMuY2hlY2tsaXN0Rm9ybS52YWx1ZS5uYW1lKSB7XHJcbiAgICAgIHRoaXMudG9hc3QuZ2V0RXJyb3JUb2FzdChcIkNoZWNrbGlzdCBOYW1lIGlzIG1pc3NpbmdcIik7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmICghdGhpcy5leGNlbERhdGEubGVuZ3RoICYmIHRoaXMubW9kZSA9PSBcImJ1bGtcIikge1xyXG4gICAgICB0aGlzLnRvYXN0LmdldEVycm9yVG9hc3QoXCJQbGVhc2UgdXBsb2FkIGEgdmFsaWQgZmlsZVwiKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgbGV0IHBhcmFtcyA9IHtcclxuICAgICAgY2hlY2tsaXN0TmFtZTogdGhpcy5jaGVja2xpc3RGb3JtLnZhbHVlLm5hbWU/LnRyaW0oKSxcclxuICAgICAgY2hlY2tsaXN0RGVzY3JpcHRpb246IHRoaXMuY2hlY2tsaXN0Rm9ybS52YWx1ZS5kZXNjcmlwdGlvbj8udHJpbSgpLFxyXG4gICAgICBzZWN0aW9uczogdGhpcy5zZWN0aW9uRGV0YWlscyxcclxuICAgICAgY2xpZW50SWQ6IHRoaXMuY2xpZW50SWQsXHJcbiAgICAgIHN1Ym1pdFR5cGU6IFwic2F2ZVwiLFxyXG4gICAgfTtcclxuICAgIHRoaXMuc29wU2VydmljZVxyXG4gICAgICAuY3JlYXRlQ2hlY2tsaXN0KHBhcmFtcylcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGV0YWNoKSlcclxuICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChyZXMpIHtcclxuICAgICAgICAgICAgaWYgKHJlcz8uY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgICAgICB0aGlzLnRvYXN0LmdldFN1Y2Nlc3NUb2FzdChcIkNoZWNrbGlzdCBjcmVhdGVkIHN1Y2Nlc3NmdWxseVwiKTtcclxuICAgICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKFxyXG4gICAgICAgICAgICAgICAgYC9tYW5hZ2UvdHJheC9jcmVhdGVDaGVja2xpc3Q/Y2hlY2tsaXN0SWQ9JHtyZXMuZGF0YS5jaGVja2xpc3RJZH1gLFxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgdGhpcy5kaWFsb2dSZWYuZGlzbWlzcygpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMudG9hc3QuZ2V0RXJyb3JUb2FzdChcIlVuYWJsZSB0byBjcmVhdGUgY2hlY2tsaXN0IVwiKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy50b2FzdC5nZXRFcnJvclRvYXN0KFwiVW5hYmxlIHRvIGNyZWF0ZSBjaGVja2xpc3QhXCIpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgKGVycm9yOiBhbnkpID0+IHtcclxuICAgICAgICAgIGxldCBlcnIgPVxyXG4gICAgICAgICAgICBlcnJvcj8uZXJyb3I/LmVycm9yPy5tZXNzYWdlIHx8XHJcbiAgICAgICAgICAgIFwiVW5hYmxlIHRvIGNyZWF0ZSBjaGVja2xpc3QhU2VydmVyIEVycm9yIVwiO1xyXG4gICAgICAgICAgdGhpcy50b2FzdC5nZXRFcnJvclRvYXN0KGVycik7XHJcbiAgICAgICAgfSxcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIGZpbmRBbnN3ZXIodHlwZTogc3RyaW5nLCBvcHRpb25zOiBzdHJpbmcpIHtcclxuICAgIGxldCBhbnN3ZXI6IGFueSA9IFtdO1xyXG5cclxuICAgIHN3aXRjaCAodHlwZSkge1xyXG4gICAgICBjYXNlIFwieWVzL25vXCI6XHJcbiAgICAgICAgYW5zd2VyID0gW1xyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBhbnN3ZXI6IFwiWWVzXCIsXHJcbiAgICAgICAgICAgIGFuc3dlcm9wdGlvbk51bWJlcjogMSxcclxuICAgICAgICAgICAgc29wRmxhZzogZmFsc2UsXHJcbiAgICAgICAgICAgIHZhbGlkYXRpb246IGZhbHNlLFxyXG4gICAgICAgICAgICB2YWxpZGF0aW9uVHlwZTogXCJDYXB0dXJlIEltYWdlXCIsXHJcbiAgICAgICAgICAgIGxpbmtlZFF1ZXN0aW9uOiAwLFxyXG4gICAgICAgICAgICBzaG93TGlua2VkOiBmYWxzZSxcclxuICAgICAgICAgICAgcmVmZXJlbmNlSW1hZ2U6IFwiXCIsXHJcbiAgICAgICAgICAgIHJ1bkFJOiBmYWxzZSxcclxuICAgICAgICAgICAgYWxsb3dVcGxvYWRmcm9tR2FsbGVyeTogZmFsc2UsXHJcbiAgICAgICAgICAgIGNvbXBsaWFuY2VTY29yZTogMCxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIGFuc3dlcjogXCJOb1wiLFxyXG4gICAgICAgICAgICBhbnN3ZXJvcHRpb25OdW1iZXI6IDIsXHJcbiAgICAgICAgICAgIHNvcEZsYWc6IGZhbHNlLFxyXG4gICAgICAgICAgICB2YWxpZGF0aW9uOiBmYWxzZSxcclxuICAgICAgICAgICAgdmFsaWRhdGlvblR5cGU6IFwiQ2FwdHVyZSBJbWFnZVwiLFxyXG4gICAgICAgICAgICBsaW5rZWRRdWVzdGlvbjogMCxcclxuICAgICAgICAgICAgc2hvd0xpbmtlZDogZmFsc2UsXHJcbiAgICAgICAgICAgIHJlZmVyZW5jZUltYWdlOiBcIlwiLFxyXG4gICAgICAgICAgICBydW5BSTogZmFsc2UsXHJcbiAgICAgICAgICAgIGFsbG93VXBsb2FkZnJvbUdhbGxlcnk6IGZhbHNlLFxyXG4gICAgICAgICAgICBjb21wbGlhbmNlU2NvcmU6IDAsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIF07XHJcbiAgICAgICAgcmV0dXJuIGFuc3dlcjtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBcImRlc2NyaXB0aXZlXCI6XHJcbiAgICAgICAgYW5zd2VyID0gW1xyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBhbnN3ZXI6IFwiXCIsXHJcbiAgICAgICAgICAgIHNvcEZsYWc6IGZhbHNlLFxyXG4gICAgICAgICAgICB2YWxpZGF0aW9uOiBmYWxzZSxcclxuICAgICAgICAgICAgdmFsaWRhdGlvblR5cGU6IFwiXCIsXHJcbiAgICAgICAgICAgIHZhbGlkYXRpb25BbnN3ZXI6IFwiXCIsXHJcbiAgICAgICAgICAgIHJlZmVyZW5jZUltYWdlOiBbXSxcclxuICAgICAgICAgICAgc2hvd0xpbmtlZDogZmFsc2UsXHJcbiAgICAgICAgICAgIGxpbmtlZFF1ZXN0aW9uOiAwLFxyXG4gICAgICAgICAgICBuZXN0ZWRRdWVzdGlvbjogW10sXHJcbiAgICAgICAgICAgIGRlc2NyaXB0aXZldHlwZTogXCJ0ZXh0XCIsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIF07XHJcbiAgICAgICAgcmV0dXJuIGFuc3dlcjtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBcIm11bHRpcGxlY2hvaWNlc2luZ2xlXCI6XHJcbiAgICAgICAgYW5zd2VyID0gW107XHJcbiAgICAgICAgb3B0aW9ucy5zcGxpdChcIixcIikuZm9yRWFjaCgoZWxlOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChlbGUudHJpbSgpKSB7XHJcbiAgICAgICAgICAgIGFuc3dlci5wdXNoKHtcclxuICAgICAgICAgICAgICBhbnN3ZXI6IGVsZSxcclxuICAgICAgICAgICAgICBzb3BGbGFnOiBmYWxzZSxcclxuICAgICAgICAgICAgICB2YWxpZGF0aW9uOiBmYWxzZSxcclxuICAgICAgICAgICAgICB2YWxpZGF0aW9uVHlwZTogXCJDYXB0dXJlIEltYWdlXCIsXHJcbiAgICAgICAgICAgICAgbGlua2VkUXVlc3Rpb246IDAsXHJcbiAgICAgICAgICAgICAgc2hvd0xpbmtlZDogZmFsc2UsXHJcbiAgICAgICAgICAgICAgcmVmZXJlbmNlSW1hZ2U6IFtdLFxyXG4gICAgICAgICAgICAgIHJ1bkFJOiBmYWxzZSxcclxuICAgICAgICAgICAgICBhbGxvd1VwbG9hZGZyb21HYWxsZXJ5OiBmYWxzZSxcclxuICAgICAgICAgICAgICBuZXN0ZWRRdWVzdGlvbjogW10sXHJcbiAgICAgICAgICAgICAgY29tcGxpYW5jZVNjb3JlOiAwLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gYW5zd2VyO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFwibXVsdGlwbGVjaG9pY2VtdWx0aXBsZVwiOlxyXG4gICAgICAgIGFuc3dlciA9IFtdO1xyXG4gICAgICAgIG9wdGlvbnMuc3BsaXQoXCIsXCIpLmZvckVhY2goKGVsZTogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAoZWxlPy50cmltKCkpIHtcclxuICAgICAgICAgICAgYW5zd2VyLnB1c2goe1xyXG4gICAgICAgICAgICAgIGFuc3dlcjogZWxlLFxyXG4gICAgICAgICAgICAgIHNvcEZsYWc6IGZhbHNlLFxyXG4gICAgICAgICAgICAgIHZhbGlkYXRpb246IGZhbHNlLFxyXG4gICAgICAgICAgICAgIHZhbGlkYXRpb25UeXBlOiBcIkNhcHR1cmUgSW1hZ2VcIixcclxuICAgICAgICAgICAgICBsaW5rZWRRdWVzdGlvbjogMCxcclxuICAgICAgICAgICAgICBzaG93TGlua2VkOiBmYWxzZSxcclxuICAgICAgICAgICAgICByZWZlcmVuY2VJbWFnZTogW10sXHJcbiAgICAgICAgICAgICAgcnVuQUk6IGZhbHNlLFxyXG4gICAgICAgICAgICAgIGFsbG93VXBsb2FkZnJvbUdhbGxlcnk6IGZhbHNlLFxyXG4gICAgICAgICAgICAgIG5lc3RlZFF1ZXN0aW9uOiBbXSxcclxuICAgICAgICAgICAgICBjb21wbGlhbmNlU2NvcmU6IDAsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiBhbnN3ZXI7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgXCJkZXNjcmlwdGl2ZUltYWdlXCI6XHJcbiAgICAgICAgYW5zd2VyID0gW1xyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBhbnN3ZXI6IFwiXCIsXHJcbiAgICAgICAgICAgIHNvcEZsYWc6IGZhbHNlLFxyXG4gICAgICAgICAgICB2YWxpZGF0aW9uOiBmYWxzZSxcclxuICAgICAgICAgICAgdmFsaWRhdGlvblR5cGU6IFwiXCIsXHJcbiAgICAgICAgICAgIHZhbGlkYXRpb25BbnN3ZXI6IFwiXCIsXHJcbiAgICAgICAgICAgIHJlZmVyZW5jZUltYWdlOiBbXSxcclxuICAgICAgICAgICAgc2hvd0xpbmtlZDogZmFsc2UsXHJcbiAgICAgICAgICAgIGxpbmtlZFF1ZXN0aW9uOiAwLFxyXG4gICAgICAgICAgICBuZXN0ZWRRdWVzdGlvbjogW10sXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIF07XHJcbiAgICAgICAgcmV0dXJuIGFuc3dlcjtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBcImltYWdlXCI6XHJcbiAgICAgICAgYW5zd2VyID0gW1xyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBhbnN3ZXI6IFwiXCIsXHJcbiAgICAgICAgICAgIHNvcEZsYWc6IGZhbHNlLFxyXG4gICAgICAgICAgICB2YWxpZGF0aW9uOiBmYWxzZSxcclxuICAgICAgICAgICAgdmFsaWRhdGlvblR5cGU6IFwiXCIsXHJcbiAgICAgICAgICAgIHZhbGlkYXRpb25BbnN3ZXI6IFwiXCIsXHJcbiAgICAgICAgICAgIHJlZmVyZW5jZUltYWdlOiBbXSxcclxuICAgICAgICAgICAgc2hvd0xpbmtlZDogZmFsc2UsXHJcbiAgICAgICAgICAgIGxpbmtlZFF1ZXN0aW9uOiAwLFxyXG4gICAgICAgICAgICBuZXN0ZWRRdWVzdGlvbjogW10sXHJcbiAgICAgICAgICAgIG1hdGNoZWRDb3VudDogMCxcclxuICAgICAgICAgICAgbm90TWF0Y2hlZENvdW50OiAwLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICBdO1xyXG4gICAgICAgIHJldHVybiBhbnN3ZXI7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgXCJ2aWRlb1wiOlxyXG4gICAgICAgIGFuc3dlciA9IFtcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgYW5zd2VyOiBcIlwiLFxyXG4gICAgICAgICAgICBzb3BGbGFnOiBmYWxzZSxcclxuICAgICAgICAgICAgdmFsaWRhdGlvbjogZmFsc2UsXHJcbiAgICAgICAgICAgIHZhbGlkYXRpb25UeXBlOiBcIlwiLFxyXG4gICAgICAgICAgICB2YWxpZGF0aW9uQW5zd2VyOiBcIlwiLFxyXG4gICAgICAgICAgICByZWZlcmVuY2VJbWFnZTogW10sXHJcbiAgICAgICAgICAgIHNob3dMaW5rZWQ6IGZhbHNlLFxyXG4gICAgICAgICAgICBsaW5rZWRRdWVzdGlvbjogMCxcclxuICAgICAgICAgICAgbmVzdGVkUXVlc3Rpb246IFtdLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICBdO1xyXG4gICAgICAgIHJldHVybiBhbnN3ZXI7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgXCJtdWx0aXBsZUltYWdlXCI6XHJcbiAgICAgICAgYW5zd2VyID0gW1xyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBhbnN3ZXI6IFwiXCIsXHJcbiAgICAgICAgICAgIHNvcEZsYWc6IGZhbHNlLFxyXG4gICAgICAgICAgICB2YWxpZGF0aW9uOiBmYWxzZSxcclxuICAgICAgICAgICAgdmFsaWRhdGlvblR5cGU6IFwiXCIsXHJcbiAgICAgICAgICAgIHZhbGlkYXRpb25BbnN3ZXI6IFwiXCIsXHJcbiAgICAgICAgICAgIHJlZmVyZW5jZUltYWdlOiBbXSxcclxuICAgICAgICAgICAgc2hvd0xpbmtlZDogZmFsc2UsXHJcbiAgICAgICAgICAgIGxpbmtlZFF1ZXN0aW9uOiAwLFxyXG4gICAgICAgICAgICBuZXN0ZWRRdWVzdGlvbjogW10sXHJcbiAgICAgICAgICAgIGRlc2NyaXB0aXZldHlwZTogXCJ0ZXh0XCIsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIF07XHJcbiAgICAgICAgcmV0dXJuIGFuc3dlcjtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBcImRhdGVcIjpcclxuICAgICAgICBhbnN3ZXIgPSBbXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIGFuc3dlcjogXCJcIixcclxuICAgICAgICAgICAgc29wRmxhZzogZmFsc2UsXHJcbiAgICAgICAgICAgIHZhbGlkYXRpb246IGZhbHNlLFxyXG4gICAgICAgICAgICB2YWxpZGF0aW9uVHlwZTogXCJcIixcclxuICAgICAgICAgICAgdmFsaWRhdGlvbkFuc3dlcjogXCJcIixcclxuICAgICAgICAgICAgcmVmZXJlbmNlSW1hZ2U6IFtdLFxyXG4gICAgICAgICAgICBzaG93TGlua2VkOiBmYWxzZSxcclxuICAgICAgICAgICAgbGlua2VkUXVlc3Rpb246IDAsXHJcbiAgICAgICAgICAgIG5lc3RlZFF1ZXN0aW9uOiBbXSxcclxuICAgICAgICAgICAgaGlzdG9yaWNEYXRlOiBmYWxzZSxcclxuICAgICAgICAgICAgc3RhcnREYXRlOiB0aGlzLmRheWpzKCkuZm9ybWF0KFwiREQtTU0tWVlZWVwiKSxcclxuICAgICAgICAgICAgZW5kRGF0ZTogdGhpcy5kYXlqcygpLmZvcm1hdChcIkRELU1NLVlZWVlcIiksXHJcbiAgICAgICAgICAgIG1hdGNoZWRDb3VudDogMCxcclxuICAgICAgICAgICAgbm90TWF0Y2hlZENvdW50OiAwLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICBdO1xyXG4gICAgICAgIHJldHVybiBhbnN3ZXI7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgXCJsaW5lYXJzY2FsZVwiOlxyXG4gICAgICAgIGFuc3dlciA9IFtcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgYW5zd2VyOiBcIlwiLFxyXG4gICAgICAgICAgICBzb3BGbGFnOiBmYWxzZSxcclxuICAgICAgICAgICAgdmFsaWRhdGlvbjogZmFsc2UsXHJcbiAgICAgICAgICAgIHZhbGlkYXRpb25UeXBlOiBcIlwiLFxyXG4gICAgICAgICAgICB2YWxpZGF0aW9uQW5zd2VyOiBcIlwiLFxyXG4gICAgICAgICAgICByZWZlcmVuY2VJbWFnZTogW10sXHJcbiAgICAgICAgICAgIHNob3dMaW5rZWQ6IGZhbHNlLFxyXG4gICAgICAgICAgICBsaW5rZWRRdWVzdGlvbjogMCxcclxuICAgICAgICAgICAgcmFuZ2VTdGFydDogMCxcclxuICAgICAgICAgICAgcmFuZ2VFbmQ6IDEwMCxcclxuICAgICAgICAgICAgbmVzdGVkUXVlc3Rpb246IFtdLFxyXG4gICAgICAgICAgICBsaW5lYXJUeXBlOiBcIm51bWJlclwiLFxyXG4gICAgICAgICAgICBtaW5WYWx1ZTogMCxcclxuICAgICAgICAgICAgbWF4VmFsdWU6IDEwMCxcclxuICAgICAgICAgICAgbWF0Y2hlZENvdW50OiAwLFxyXG4gICAgICAgICAgICBub3RNYXRjaGVkQ291bnQ6IDAsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIF07XHJcbiAgICAgICAgcmV0dXJuIGFuc3dlcjtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBcInRpbWVcIjpcclxuICAgICAgICBhbnN3ZXIgPSBbXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIGFuc3dlcjogXCJcIixcclxuICAgICAgICAgICAgc29wRmxhZzogZmFsc2UsXHJcbiAgICAgICAgICAgIHZhbGlkYXRpb246IGZhbHNlLFxyXG4gICAgICAgICAgICB2YWxpZGF0aW9uVHlwZTogXCJcIixcclxuICAgICAgICAgICAgdmFsaWRhdGlvbkFuc3dlcjogXCJcIixcclxuICAgICAgICAgICAgcmVmZXJlbmNlSW1hZ2U6IFtdLFxyXG4gICAgICAgICAgICBzaG93TGlua2VkOiBmYWxzZSxcclxuICAgICAgICAgICAgbGlua2VkUXVlc3Rpb246IDAsXHJcbiAgICAgICAgICAgIG5lc3RlZFF1ZXN0aW9uOiBbXSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgXTtcclxuICAgICAgICByZXR1cm4gYW5zd2VyO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFwiaW1hZ2UvdmlkZW9cIjpcclxuICAgICAgICBhbnN3ZXIgPSBbXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIGFuc3dlcjogXCJcIixcclxuICAgICAgICAgICAgc29wRmxhZzogZmFsc2UsXHJcbiAgICAgICAgICAgIHZhbGlkYXRpb246IGZhbHNlLFxyXG4gICAgICAgICAgICB2YWxpZGF0aW9uVHlwZTogXCJcIixcclxuICAgICAgICAgICAgdmFsaWRhdGlvbkFuc3dlcjogXCJcIixcclxuICAgICAgICAgICAgcmVmZXJlbmNlSW1hZ2U6IFtdLFxyXG4gICAgICAgICAgICBzaG93TGlua2VkOiBmYWxzZSxcclxuICAgICAgICAgICAgbGlua2VkUXVlc3Rpb246IDAsXHJcbiAgICAgICAgICAgIG5lc3RlZFF1ZXN0aW9uOiBbXSxcclxuICAgICAgICAgICAgbGltaXQ6IGZhbHNlLFxyXG4gICAgICAgICAgICB2aWRlb0xpbWl0OiAwLFxyXG4gICAgICAgICAgICBpbWFnZUxpbWl0OiAwLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICBdO1xyXG4gICAgICAgIHJldHVybiBhbnN3ZXI7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgXCJkcm9wZG93blwiOlxyXG4gICAgICAgIGFuc3dlciA9IFtdO1xyXG4gICAgICAgIG9wdGlvbnMuc3BsaXQoXCIsXCIpLmZvckVhY2goKGVsZTogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAoZWxlPy50cmltKCkpIHtcclxuICAgICAgICAgICAgYW5zd2VyLnB1c2goe1xyXG4gICAgICAgICAgICAgIGFuc3dlcjogZWxlLFxyXG4gICAgICAgICAgICAgIHNvcEZsYWc6IGZhbHNlLFxyXG4gICAgICAgICAgICAgIHZhbGlkYXRpb246IGZhbHNlLFxyXG4gICAgICAgICAgICAgIHZhbGlkYXRpb25UeXBlOiBcIkNhcHR1cmUgSW1hZ2VcIixcclxuICAgICAgICAgICAgICBsaW5rZWRRdWVzdGlvbjogMCxcclxuICAgICAgICAgICAgICBzaG93TGlua2VkOiBmYWxzZSxcclxuICAgICAgICAgICAgICByZWZlcmVuY2VJbWFnZTogW10sXHJcbiAgICAgICAgICAgICAgcnVuQUk6IGZhbHNlLFxyXG4gICAgICAgICAgICAgIGFsbG93VXBsb2FkZnJvbUdhbGxlcnk6IGZhbHNlLFxyXG4gICAgICAgICAgICAgIG5lc3RlZFF1ZXN0aW9uOiBbXSxcclxuICAgICAgICAgICAgICBjb21wbGlhbmNlU2NvcmU6IDAsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiBhbnN3ZXI7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuIFtdO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZG93bmxvYWRUZW1wbGF0ZSgpIHtcclxuICAgIHRoaXMuc29wU2VydmljZVxyXG4gICAgICAuZG93bmxvYWRRdWVzdGlvbih0aGlzLmNoZWNrbGlzdERhdGEuY2hlY2tsaXN0SWQpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRldGFjaCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoXHJcbiAgICAgICAgKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc29wU2VydmljZS5zYXZlQXNFeGNlbEZpbGUocmVzLCBcIkNoZWNrbGlzdCBRdWVzdGlvblwiKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMudG9hc3QuZ2V0RXJyb3JUb2FzdChcIlVuYWJsZSB0byBkb3dubG9hZCB0ZW1wbGF0ZSFcIik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICAoZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy50b2FzdC5nZXRFcnJvclRvYXN0KFwiVW5hYmxlIHRvIGRvd25sb2FkIHRlbXBsYXRlIVwiKTtcclxuICAgICAgICB9LFxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlQ2hlY2tsaXN0KCkge1xyXG4gICAgaWYgKCF0aGlzLmNoZWNrbGlzdERhdGEuY2hlY2tMaXN0TmFtZSkge1xyXG4gICAgICB0aGlzLnRvYXN0LmdldEVycm9yVG9hc3QoXCJDaGVja2xpc3QgTmFtZSBpcyBtaXNzaW5nXCIpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAoIXRoaXMuZXhjZWxEYXRhLmxlbmd0aCkge1xyXG4gICAgICB0aGlzLnRvYXN0LmdldEVycm9yVG9hc3QoXCJQbGVhc2UgdXBsb2FkIGEgdmFsaWQgZmlsZVwiKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgbGV0IHBhcmFtcyA9IHtcclxuICAgICAgY2hlY2tsaXN0TmFtZTogdGhpcy5jaGVja2xpc3REYXRhLmNoZWNrTGlzdE5hbWU/LnRyaW0oKSxcclxuICAgICAgY2hlY2tsaXN0RGVzY3JpcHRpb246IHRoaXMuY2hlY2tsaXN0RGF0YS5jaGVja0xpc3REZXNjcmlwdGlvbj8udHJpbSgpLFxyXG4gICAgICBzZWN0aW9uczogdGhpcy5zZWN0aW9uRGV0YWlscyxcclxuICAgICAgY2xpZW50SWQ6IHRoaXMuY2hlY2tsaXN0RGF0YS5jbGllbnRJZCxcclxuICAgICAgc3VibWl0VHlwZTogXCJzYXZlXCIsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5zb3BTZXJ2aWNlXHJcbiAgICAgIC5nZXRVcGRhdGVDaGVja2xpc3QodGhpcy5jaGVja2xpc3REYXRhLmNoZWNrbGlzdElkLCBwYXJhbXMpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRldGFjaCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoXHJcbiAgICAgICAgKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzKSB7XHJcbiAgICAgICAgICAgIGlmIChyZXM/LmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoXCJyZWxvYWRcIik7XHJcbiAgICAgICAgICAgICAgdGhpcy50b2FzdC5nZXRTdWNjZXNzVG9hc3QoXCJDaGVja2xpc3QgdXBkYXRlZCBzdWNjZXNzZnVsbHlcIik7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy50b2FzdC5nZXRFcnJvclRvYXN0KFwiVW5hYmxlIHRvIHVwZGF0ZSBjaGVja2xpc3QhXCIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnRvYXN0LmdldEVycm9yVG9hc3QoXCJVbmFibGUgdG8gdXBkYXRlIGNoZWNrbGlzdCFcIik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICAoZXJyb3IpID0+IHtcclxuICAgICAgICAgIGxldCBlcnIgPVxyXG4gICAgICAgICAgICBlcnJvcj8uZXJyb3I/LmVycm9yPy5tZXNzYWdlIHx8XHJcbiAgICAgICAgICAgIFwiVW5hYmxlIHRvIHVwZGF0ZSBjaGVja2xpc3QhU2VydmVyIEVycm9yIVwiO1xyXG4gICAgICAgICAgdGhpcy50b2FzdC5nZXRFcnJvclRvYXN0KGVycik7XHJcbiAgICAgICAgfSxcclxuICAgICAgKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImNoZWNrbGlzdC1jYXJkXCI+XHJcblxyXG4gIDwhLS0gSGVhZGVyIC0tPlxyXG4gICA8ZGl2ICpuZ0lmPVwiIWV4Y2VsRGF0YS5sZW5ndGhcIj5cclxuICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIG1iLTNcIj5cclxuICAgICAgICAgPGRpdiBjbGFzcz1cInRpdGxlLWljb24gbWUtMlwiPlxyXG4gICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCI1NlwiIGhlaWdodD1cIjU2XCIgdmlld0JveD1cIjAgMCA1NiA1NlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjRcIiB5PVwiNFwiIHdpZHRoPVwiNDhcIiBoZWlnaHQ9XCI0OFwiIHJ4PVwiMjRcIiBmaWxsPVwiI0RBRjFGRlwiLz5cclxuICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiNFwiIHk9XCI0XCIgd2lkdGg9XCI0OFwiIGhlaWdodD1cIjQ4XCIgcng9XCIyNFwiIHN0cm9rZT1cIiNFQUY4RkZcIiBzdHJva2Utd2lkdGg9XCI4XCIvPlxyXG4gICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMjggMjFWMzVNMjEgMjhIMzVcIiBzdHJva2U9XCIjMDA5QkYzXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cclxuICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTAgdGl0bGVUZXh0XCI+e3t0eXBlID09ICdjcmVhdGUnID8gJ0NyZWF0ZSBDaGVja2xpc3QnIDogJ0J1bGsgVXBsb2FkJ319PC9kaXY+XHJcbiAgICAgICA8L2Rpdj5cclxuICAgICBcclxuICAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiY2hlY2tsaXN0Rm9ybVwiPlxyXG4gICAgIFxyXG4gICAgICAgICA8IS0tIENoZWNrbGlzdCBOYW1lIC0tPlxyXG4gICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiICpuZ0lmPVwidHlwZSA9PSAnY3JlYXRlJ1wiPlxyXG4gICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIj5DaGVja2xpc3QgTmFtZTwvbGFiZWw+XHJcbiAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBmb3JtQ29udHJvbE5hbWU9XCJuYW1lXCI+XHJcbiAgICAgICAgIDwvZGl2PlxyXG4gICAgIFxyXG4gICAgICAgICA8IS0tIERlc2NyaXB0aW9uIC0tPlxyXG4gICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiICpuZ0lmPVwidHlwZSA9PSAnY3JlYXRlJ1wiPlxyXG4gICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIj5EZXNjcmlwdGlvbjwvbGFiZWw+XHJcbiAgICAgICAgICAgPHRleHRhcmVhIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgcm93cz1cIjNcIiBmb3JtQ29udHJvbE5hbWU9XCJkZXNjcmlwdGlvblwiPjwvdGV4dGFyZWE+XHJcbiAgICAgICAgIDwvZGl2PlxyXG4gICAgIFxyXG4gICAgICAgICA8IS0tIE1vZGUgU2VsZWN0aW9uIC0tPlxyXG4gICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGctMiBteS0zXCIgKm5nSWY9XCJ0eXBlID09ICdjcmVhdGUnXCI+XHJcbiAgICAgXHJcbiAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgIGNsYXNzPVwib3B0aW9uLWJveFwiXHJcbiAgICAgICAgICAgICAgIFtjbGFzcy5vcHRpb24tYWN0aXZlXT1cIm1vZGU9PT0naW5kaXZpZHVhbCdcIlxyXG4gICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0TW9kZSgnaW5kaXZpZHVhbCcpXCI+XHJcbiAgICAgXHJcbiAgICAgICAgICAgICAgIDxzcGFuPkFkZCBxdWVzdGlvbnMgaW5kaXZpZHVhbGx5PC9zcGFuPlxyXG4gICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInJhZGlvXCIgdmFsdWU9XCJpbmRpdmlkdWFsXCIgZm9ybUNvbnRyb2xOYW1lPVwibW9kZVwiIHN0eWxlPVwid2lkdGg6MTVweDtoZWlnaHQ6MTVweFwiPlxyXG4gICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgXHJcbiAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgIGNsYXNzPVwib3B0aW9uLWJveFwiXHJcbiAgICAgICAgICAgICAgIFtjbGFzcy5vcHRpb24tYWN0aXZlXT1cIm1vZGU9PT0nYnVsaydcIlxyXG4gICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0TW9kZSgnYnVsaycpXCI+XHJcbiAgICAgXHJcbiAgICAgICAgICAgICAgIDxzcGFuPkFkZCBxdWVzdGlvbnMgaW4gYnVsazwvc3Bhbj5cclxuICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJyYWRpb1wiIHZhbHVlPVwiYnVsa1wiIGZvcm1Db250cm9sTmFtZT1cIm1vZGVcIiBzdHlsZT1cIndpZHRoOjE1cHg7aGVpZ2h0OjE1cHhcIj5cclxuICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgIDwvZGl2PlxyXG4gICAgIFxyXG4gICAgICAgICA8L2Rpdj5cclxuICAgICBcclxuICAgICAgICAgPCEtLSBCdWxrIFVwbG9hZCBTZWN0aW9uIC0tPlxyXG4gICAgICAgICA8ZGl2ICpuZ0lmPVwibW9kZSA9PT0gJ2J1bGsnXCIgY2xhc3M9XCJidWxrVGV4dFwiPlxyXG4gICAgIFxyXG4gICAgICAgICAgIDxkaXYgY2xhc3M9XCJteS01XCI+XHJcbiAgICAgXHJcbiAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItMlwiPjEuIFVzZSB0aGUgdGVtcGxhdGUgdG8gdXBsb2FkIG11bHRpcGxlIHF1ZXN0aW9ucyBhdCBvbmNlPC9kaXY+XHJcbiAgICAgXHJcbiAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItMlwiPlxyXG4gICAgICAgICAgICAgICAyLiBEb3dubG9hZCB0aGUgdGVtcGxhdGUgaGVyZSAtXHJcbiAgICAgICAgICAgICAgIEBpZih0eXBlID09ICdjcmVhdGUnKSB7XHJcbiAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cImRvd25sb2FkLWxpbmtcIiBocmVmPVwiL2Fzc2V0cy9maWxlcy9jaGVja2xpc3RRdWVzdGlvbi54bHN4XCIgZG93bmxvYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTdcIiBoZWlnaHQ9XCIxN1wiIHZpZXdCb3g9XCIwIDAgMTcgMTdcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xNS44MzU5IDEwLjgzNTlWMTQuMTY5M0MxNS44MzU5IDE0LjYxMTMgMTUuNjYwMyAxNS4wMzUyIDE1LjM0NzggMTUuMzQ3OEMxNS4wMzUyIDE1LjY2MDMgMTQuNjExMyAxNS44MzU5IDE0LjE2OTMgMTUuODM1OUgyLjUwMjZDMi4wNjA1OCAxNS44MzU5IDEuNjM2NjUgMTUuNjYwMyAxLjMyNDA5IDE1LjM0NzhDMS4wMTE1MyAxNS4wMzUyIDAuODM1OTM4IDE0LjYxMTMgMC44MzU5MzggMTQuMTY5M1YxMC44MzU5TTQuMTY5MjcgNi42NjkyN0w4LjMzNTk0IDEwLjgzNTlNOC4zMzU5NCAxMC44MzU5TDEyLjUwMjYgNi42NjkyN004LjMzNTk0IDEwLjgzNTlWMC44MzU5MzhcIiBzdHJva2U9XCIjMDA5QkYzXCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgPC9zdmc+IERvd25sb2FkIFRlbXBsYXRlXHJcbiAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgQGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZG93bmxvYWQtbGlua1wiIChjbGljayk9XCJkb3dubG9hZFRlbXBsYXRlKClcIj5cclxuICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE3XCIgaGVpZ2h0PVwiMTdcIiB2aWV3Qm94PVwiMCAwIDE3IDE3XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xNS44MzU5IDEwLjgzNTlWMTQuMTY5M0MxNS44MzU5IDE0LjYxMTMgMTUuNjYwMyAxNS4wMzUyIDE1LjM0NzggMTUuMzQ3OEMxNS4wMzUyIDE1LjY2MDMgMTQuNjExMyAxNS44MzU5IDE0LjE2OTMgMTUuODM1OUgyLjUwMjZDMi4wNjA1OCAxNS44MzU5IDEuNjM2NjUgMTUuNjYwMyAxLjMyNDA5IDE1LjM0NzhDMS4wMTE1MyAxNS4wMzUyIDAuODM1OTM4IDE0LjYxMTMgMC44MzU5MzggMTQuMTY5M1YxMC44MzU5TTQuMTY5MjcgNi42NjkyN0w4LjMzNTk0IDEwLjgzNTlNOC4zMzU5NCAxMC44MzU5TDEyLjUwMjYgNi42NjkyN004LjMzNTk0IDEwLjgzNTlWMC44MzU5MzhcIiBzdHJva2U9XCIjMDA5QkYzXCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cclxuICAgICAgICAgICAgICAgICA8L3N2Zz4gRG93bmxvYWQgVGVtcGxhdGVcclxuICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgIFxyXG4gICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTJcIj4zLiBBZGQgeW91ciBkYXRhIHRvIHRoZSB0ZW1wbGF0ZTwvZGl2PlxyXG4gICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTJcIj40LiBVcGxvYWQgaXQgZm9yIHByb2Nlc3Npbmc8L2Rpdj5cclxuICAgICBcclxuICAgICAgICAgICA8L2Rpdj5cclxuICAgICBcclxuICAgICAgICAgICA8IS0tIFVwbG9hZCBBcmVhIC0tPlxyXG4gICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1cGxvYWQtYm94IGN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cImZpbGVJbnB1dC5jbGljaygpXCI+XHJcbiAgICAgXHJcbiAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidXBsb2FkLWljb24gbWItMlwiPlxyXG4gICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiNDZcIiBoZWlnaHQ9XCI0NlwiIHZpZXdCb3g9XCIwIDAgNDYgNDZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiM1wiIHk9XCIzXCIgd2lkdGg9XCI0MFwiIGhlaWdodD1cIjQwXCIgcng9XCIyMFwiIGZpbGw9XCIjREFGMUZGXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiM1wiIHk9XCIzXCIgd2lkdGg9XCI0MFwiIGhlaWdodD1cIjQwXCIgcng9XCIyMFwiIHN0cm9rZT1cIiNFQUY4RkZcIiBzdHJva2Utd2lkdGg9XCI2XCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzE5MDM0XzY2OTk2KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTI2LjMzMjYgMjYuMzMxM0wyMi45OTkyIDIyLjk5OE0yMi45OTkyIDIyLjk5OEwxOS42NjU5IDI2LjMzMTNNMjIuOTk5MiAyMi45OThWMzAuNDk4TTI5Ljk5MDkgMjguMzIzQzMwLjgwMzcgMjcuODc5OCAzMS40NDU4IDI3LjE3ODcgMzEuODE1OCAyNi4zMzAxQzMyLjE4NTggMjUuNDgxNiAzMi4yNjI3IDI0LjUzNCAzMi4wMzQ0IDIzLjYzNjlDMzEuODA2MSAyMi43Mzk3IDMxLjI4NTUgMjEuOTQ0MiAzMC41NTQ4IDIxLjM3NThDMjkuODI0MSAyMC44MDc0IDI4LjkyNSAyMC40OTg2IDI3Ljk5OTIgMjAuNDk4SDI2Ljk0OTJDMjYuNjk3IDE5LjUyMjMgMjYuMjI2OSAxOC42MTY2IDI1LjU3NDIgMTcuODQ4OEMyNC45MjE1IDE3LjA4MSAyNC4xMDMzIDE2LjQ3MTIgMjMuMTgxIDE2LjA2NTFDMjIuMjU4NyAxNS42NTkxIDIxLjI1NjQgMTUuNDY3NCAyMC4yNDkzIDE1LjUwNDVDMTkuMjQyMyAxNS41NDE2IDE4LjI1NjggMTUuODA2NSAxNy4zNjY5IDE2LjI3OTNDMTYuNDc3IDE2Ljc1MjEgMTUuNzA1OCAxNy40MjA1IDE1LjExMTQgMTguMjM0M0MxNC41MTcgMTkuMDQ4IDE0LjExNDggMTkuOTg1OSAxMy45MzUxIDIwLjk3NzRDMTMuNzU1MyAyMS45NjkgMTMuODAyNyAyMi45ODg0IDE0LjA3MzYgMjMuOTU5QzE0LjM0NDUgMjQuOTI5NiAxNC44MzE5IDI1LjgyNjIgMTUuNDk5MiAyNi41ODEzXCIgc3Ryb2tlPVwiIzAwOUJGM1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzE5MDM0XzY2OTk2XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIGZpbGw9XCJ3aGl0ZVwiIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgxMyAxMylcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgIFxyXG4gICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtcHJpbWFyeSBmdy1zZW1pYm9sZCB1cGxvYWRUZXh0XCI+Q2xpY2sgVG8gVXBsb2FkPC9kaXY+XHJcbiAgICAgXHJcbiAgICAgICAgICAgICA8IS0tIEhpZGRlbiBGaWxlIElucHV0IC0tPlxyXG4gICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICAgI2ZpbGVJbnB1dFxyXG4gICAgICAgICAgICAgICAgIHR5cGU9XCJmaWxlXCJcclxuICAgICAgICAgICAgICAgICBoaWRkZW5cclxuICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uRmlsZVNlbGVjdGVkKCRldmVudClcIlxyXG4gICAgICAgICAgICAgPlxyXG4gICAgIFxyXG4gICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgXHJcbiAgICAgICAgICAgPCEtLSBVcGxvYWRlZCBGaWxlIC0tPlxyXG4gICAgICAgICAgIDxkaXYgKm5nSWY9XCJmaWxlTmFtZVwiIGNsYXNzPVwidXBsb2FkLWZpbGVcIj5cclxuICAgICBcclxuICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIzNlwiIGhlaWdodD1cIjM2XCIgdmlld0JveD1cIjAgMCAzNiAzNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCIyXCIgeT1cIjJcIiB3aWR0aD1cIjMyXCIgaGVpZ2h0PVwiMzJcIiByeD1cIjE2XCIgZmlsbD1cIiNEQUYxRkZcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCIyXCIgeT1cIjJcIiB3aWR0aD1cIjMyXCIgaGVpZ2h0PVwiMzJcIiByeD1cIjE2XCIgc3Ryb2tlPVwiI0VBRjhGRlwiIHN0cm9rZS13aWR0aD1cIjRcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTguNjY4IDExLjMzNTlIMTQuMDAxM0MxMy42NDc3IDExLjMzNTkgMTMuMzA4NSAxMS40NzY0IDEzLjA1ODUgMTEuNzI2NUMxMi44MDg0IDExLjk3NjUgMTIuNjY4IDEyLjMxNTYgMTIuNjY4IDEyLjY2OTNWMjMuMzM1OUMxMi42NjggMjMuNjg5NiAxMi44MDg0IDI0LjAyODcgMTMuMDU4NSAyNC4yNzg3QzEzLjMwODUgMjQuNTI4OCAxMy42NDc3IDI0LjY2OTMgMTQuMDAxMyAyNC42NjkzSDIyLjAwMTNDMjIuMzU0OSAyNC42NjkzIDIyLjY5NDEgMjQuNTI4OCAyMi45NDQxIDI0LjI3ODdDMjMuMTk0MiAyNC4wMjg3IDIzLjMzNDYgMjMuNjg5NiAyMy4zMzQ2IDIzLjMzNTlWMTYuMDAyNk0xOC42NjggMTEuMzM1OUwyMy4zMzQ2IDE2LjAwMjZNMTguNjY4IDExLjMzNTlWMTYuMDAyNkgyMy4zMzQ2XCIgc3Ryb2tlPVwiIzAwQTNGRlwiIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgXHJcbiAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gYWxpZ24taXRlbXMtc3RhcnQgbXMtNVwiPlxyXG4gICAgICAgICAgICAgICAgIDxkaXY+e3tmaWxlTmFtZX19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1Y2Nlc3NUZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICB7e2ZpbGVTaXplfX0gS0Ig4oCTIFVwbG9hZGVkXHJcbiAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgXHJcbiAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjMyXCIgaGVpZ2h0PVwiMzJcIiB2aWV3Qm94PVwiMCAwIDMyIDMyXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTI5LjMzNDYgMTQuNzcwNVYxNS45OTcyQzI5LjMzMyAxOC44NzI0IDI4LjQwMiAyMS42NzAxIDI2LjY4MDQgMjMuOTczQzI0Ljk1ODkgMjYuMjc1OCAyMi41MzkgMjcuOTYwNSAxOS43ODE4IDI4Ljc3NTdDMTcuMDI0NSAyOS41OTEgMTQuMDc3NiAyOS40OTMxIDExLjM4MDYgMjguNDk2N0M4LjY4MzU0IDI3LjUwMDIgNi4zODA4NCAyNS42NTg3IDQuODE1OTIgMjMuMjQ2NkMzLjI1MDk5IDIwLjgzNDYgMi41MDc2OSAxNy45ODEzIDIuNjk2ODcgMTUuMTEyM0MyLjg4NjA1IDEyLjI0MzMgMy45OTc1OCA5LjUxMjMyIDUuODY1NjggNy4zMjY2NUM3LjczMzc3IDUuMTQwOTcgMTAuMjU4MyAzLjYxNzcyIDEzLjA2MjkgMi45ODQwOEMxNS44Njc0IDIuMzUwNDMgMTguODAxNyAyLjY0MDMzIDIxLjQyOCAzLjgxMDU1TTI5LjMzNDYgNS4zMzA1NUwxNi4wMDEzIDE4LjY3NzJMMTIuMDAxMyAxNC42NzcyXCIgc3Ryb2tlPVwiIzEyQjc2QVwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICBcclxuICAgICAgICAgICA8L2Rpdj5cclxuICAgICBcclxuICAgICAgICAgPC9kaXY+XHJcbiAgICAgXHJcbiAgICAgICAgIDwhLS0gQnV0dG9ucyAtLT5cclxuICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kIG10LTRcIj5cclxuICAgICBcclxuICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tbGlnaHQgbWUtMlwiIChjbGljayk9XCJkaWFsb2dSZWYuY2xvc2UoKVwiPlxyXG4gICAgICAgICAgICAgQ2FuY2VsXHJcbiAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgXHJcbiAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiIChjbGljayk9XCJ0eXBlID09ICdjcmVhdGUnID8gY3JlYXRlQ2hlY2tsaXN0KCkgOiB1cGRhdGVDaGVja2xpc3QoKVwiPlxyXG4gICAgICAgICAgICAgUHJvY2VlZFxyXG4gICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgIFxyXG4gICAgICAgICA8L2Rpdj5cclxuICAgICBcclxuICAgICAgIDwvZm9ybT5cclxuICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cImJvcmRlci0wIHZhbGlkYXRlQm94XCIgKm5nSWY9XCJleGNlbERhdGEubGVuZ3RoXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIGJvcmRlci0wIG10LTBcIj5cclxuICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRpdGxlIG10LTNcIj48c3BhbiBjbGFzcz1cImNvbmZpZy1oZWFkaW5nIGZ3LXNlbWlib2xkIHctYXV0b1wiPkFzc2lnbiBTdG9yZXM8L3NwYW4+PC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBwdC0wXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBvcHVwLWNhcmQgcm91bmRlZC0zIHAtMyBmbGV4LWNvbHVtbiBoLTgwcHhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmdy1zZW1pYm9sZCBjb25maWctaGVhZGluZyB3LTEwMFwiPnt7ZXhjZWxEYXRhPy5sZW5ndGh9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZ3LXNlbWlib2xkIHN1YnRpdGxlIG10LTFcIj5Ub3RhbCBSZWNvcmRzPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBvcHVwLWNhcmQgcm91bmRlZC0zIHAtMyBmbGV4LWNvbHVtbiBoLTgwcHhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZ3LXNlbWlib2xkIGNvbmZpZy1oZWFkaW5nIHctMTAwXCI+e3tleGNlbERhdGE/Lmxlbmd0aH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmdy1zZW1pYm9sZCBzdWJ0aXRsZSBtdC0xXCI+Um93cyBwcm9jZXNzZWQ8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3B1cC1jYXJkIHJvdW5kZWQtMyBwLTMgZmxleC1jb2x1bW4gaC04MHB4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW25nQ2xhc3NdPVwiZXhjZWxFcnJvciA/ICdlcnJvci1oZWFkaW5nJzonJ1wiIGNsYXNzPVwiZnctc2VtaWJvbGQgY29uZmlnLWhlYWRpbmcgdy0xMDBcIj57e2V4Y2VsRXJyb3I/LmVycm9yPy5sZW5ndGggfHwgMH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW25nQ2xhc3NdPVwiZXhjZWxFcnJvciA/ICdleGNlbC1lcnJvcic6JydcIiBjbGFzcz1cImZ3LXNlbWlib2xkIHN1YnRpdGxlIG10LTFcIj5FcnJvcjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFleGNlbEVycm9yXCIgY2xhc3M9XCJ0YWJsZS1oZWFkZXIgbXQtNVwiIHN0eWxlPVwiZm9udC13ZWlnaHQ6IDQwMDtcIj5cclxuICAgICAgICAgICAgICAgIDxkaXY+WW91J3JlIGFib3V0IHRvIGFzc2lnbiB7e2V4Y2VsRGF0YT8ubGVuZ3RofX0gc3RvcmVzIHRvIHRoZSBjaGVja2xpc3QuIEFyZSB5b3Ugc3VyZSB3YW50IHRvIHByb2NlZWQ/PC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZXhjZWxFcnJvclwiIGNsYXNzPVwiZmxleC1jb2x1bW4gbXQtNVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbmZpZy1oZWFkaW5nIGZ3LWJvbGRcIj5JbnZhbGlkIERldGFpbHMgITwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1YnRpdGxlIG10LTVcIj5QbGVhc2UgcHJvdmlkZSBjb3JyZWN0IGFuZCBjb21wbGV0ZSBsYXlvdXQgaW5mb3JtYXRpb24uPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC01IHctMTAwIHJvdW5kZWQtMyBib3JkZXItZXJyb3IgbXQtNSBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgZXJyb3Igb2YgZXhjZWxFcnJvcj8uZXJyb3I7IGxldCBpID0gaW5kZXg7IGxldCBsYXN0ID0gbGFzdFwiIFtuZ0NsYXNzXT1cIiFsYXN0ID8gJ21iLTInIDogJydcIiBjbGFzcz1cInRleHQtZXJyb3JcIj57e2kgKyAxfX0pIHt7ZXJyb3J9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGlucHV0IHN0eWxlPVwidmlzaWJpbGl0eTogaGlkZGVuO1wiICNmaWxlSW5wdXQxIHR5cGU9XCJmaWxlXCIgaWQ9XCJrdF9hY2NvdW50X3RlYW1fc2l6ZV9zZWxlY3RfMlwiIChjaGFuZ2UpPVwib25GaWxlU2VsZWN0ZWQoJGV2ZW50KVwiIC8+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kIG10LTRcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLWxpZ2h0IG1lLTJcIiAoY2xpY2spPVwiZGlhbG9nUmVmLmRpc21pc3MoKVwiPkNhbmNlbDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiICpuZ0lmPVwiIWV4Y2VsRXJyb3JcIiAoY2xpY2spPVwidHlwZSA9PSAnY3JlYXRlJyA/IGNyZWF0ZUNoZWNrbGlzdCgpIDogdXBkYXRlQ2hlY2tsaXN0KClcIj5cclxuICAgICAgICBQcm9jZWVkXHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiICpuZ0lmPVwiZXhjZWxFcnJvclwiIGNsYXNzPVwiYnRuIHB5LTMgbXMtMyBidG4tZGFuZ2VyXCIgKGNsaWNrKT1cIlJldXBsb2FkKCk7XCI+UmV1cGxvYWQ8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuPC9kaXY+Il19
625
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tsaXN0LXBvcHVwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLWFuYWx5c2UtdHJheC9zcmMvbGliL2NvbXBvbmVudHMvYWRkLWNoZWNrbGlzdC9jaGVja2xpc3QtcG9wdXAvY2hlY2tsaXN0LXBvcHVwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLWFuYWx5c2UtdHJheC9zcmMvbGliL2NvbXBvbmVudHMvYWRkLWNoZWNrbGlzdC9jaGVja2xpc3QtcG9wdXAvY2hlY2tsaXN0LXBvcHVwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBbUUsTUFBTSxlQUFlLENBQUM7QUFHN0gsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUM7QUFFN0IsT0FBTyxFQUFFLFNBQVMsRUFBQyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHekMsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7Ozs7OztBQUUzRSxxSEFBcUg7QUFDckgsa0dBQWtHO0FBQ2xHLE1BQU0sbUJBQW1CLEdBQUcsaUNBQWlDLENBQUM7QUFPOUQsTUFBTSxPQUFPLHVCQUF1QjtJQXdCeEI7SUFDQTtJQUNBO0lBQ0E7SUFDRDtJQUNDO0lBQ0E7SUE3QlYsYUFBYSxDQUFZO0lBQ2hCLFFBQVEsQ0FBUztJQUNqQixJQUFJLENBQVM7SUFDYixhQUFhLENBQU07SUFDRSxlQUFlLENBQU07SUFDaEMsU0FBUyxDQUFjO0lBQ3RCLFVBQVUsQ0FBYztJQUU1QyxRQUFRLENBQU07SUFDZCxRQUFRLENBQU07SUFDZCxjQUFjLEdBQVE7UUFDcEI7WUFDRSxJQUFJLEVBQUUsV0FBVztZQUNq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Q0FBQyxHQUFHLENBQUMsQ0FBQztRQUNoQyxDQUFDLENBQ0YsQ0FBQztJQUNOLENBQUM7d0dBcm1CVSx1QkFBdUI7NEZBQXZCLHVCQUF1Qix5YUNwQnBDLGcwWUE4TU07OzRGRDFMTyx1QkFBdUI7a0JBTG5DLFNBQVM7K0JBQ0UscUJBQXFCOzhPQU10QixRQUFRO3NCQUFoQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUN3QixlQUFlO3NCQUE1QyxTQUFTO3VCQUFDLGlCQUFpQjtnQkFDVCxTQUFTO3NCQUEzQixTQUFTO3VCQUFDLE1BQU07Z0JBQ0csVUFBVTtzQkFBN0IsU0FBUzt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgVmlld0NoaWxkLCBFbGVtZW50UmVmLCBDaGFuZ2VEZXRlY3RvclJlZiwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzLCBPbkluaXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tICd0YW5nby1hcHAtdWktc2hhcmVkJztcclxuaW1wb3J0ICogYXMgWExTWCBmcm9tICd4bHN4JztcclxuaW1wb3J0IHsgVHJheFNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vLi4vc2VydmljZXMvdHJheC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IHRha2VVbnRpbCxTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IE5nYkFjdGl2ZU1vZGFsLCBOZ2JNb2RhbCB9IGZyb20gXCJAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcFwiO1xyXG5pbXBvcnQgZGF5anMgZnJvbSAnZGF5anMnO1xyXG5pbXBvcnQgeyBERUZBVUxUX0lNQUdFX0RFU0NSSVBUSU9OX01PREUgfSBmcm9tICcuLi9pbWFnZS1kZXNjcmlwdGlvbi1tb2RlJztcclxuXHJcbi8vIE9wdGlvbmFsIGNvbHVtbiBDIChuZXh0IHRvIFF1ZXN0aW9uKSBvZiB0aGUgYnVsayB1cGxvYWQgdGVtcGxhdGUgKHN0YXRpYyBjcmVhdGUgdGVtcGxhdGUgKyAvdHJheC9leHBvcnRRdWVzdGlvbnMpO1xyXG4vLyBzYXZlZCBhcyBxZGVzY3JpcHRpb24uIENvbHVtbnMgYXJlIHJlYWQgYnkgaGVhZGVyIG5hbWUsIHNvIG9sZGVyIGZpbGVzIHdpdGhvdXQgaXQgc3RpbGwgdXBsb2FkLlxyXG5jb25zdCBRREVTQ1JJUFRJT05fQ09MVU1OID0gJ1F1ZXN0aW9uIERlc2NyaXB0aW9uIChPcHRpb25hbCknO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwibGliLWNoZWNrbGlzdC1wb3B1cFwiLFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4vY2hlY2tsaXN0LXBvcHVwLmNvbXBvbmVudC5odG1sXCIsXHJcbiAgc3R5bGVVcmw6IFwiLi9jaGVja2xpc3QtcG9wdXAuY29tcG9uZW50LnNjc3NcIixcclxufSlcclxuZXhwb3J0IGNsYXNzIENoZWNrbGlzdFBvcHVwQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBjaGVja2xpc3RGb3JtOiBGb3JtR3JvdXA7XHJcbiAgQElucHV0KCkgY2xpZW50SWQ6IHN0cmluZztcclxuICBASW5wdXQoKSB0eXBlOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgY2hlY2tsaXN0RGF0YTogYW55O1xyXG4gIEBWaWV3Q2hpbGQoXCJhZnRlclZhbGlkYXRpb25cIikgYWZ0ZXJWYWxpZGF0aW9uOiBhbnk7XHJcbiAgQFZpZXdDaGlsZChcImZpbGVcIikgZmlsZUlucHV0ITogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKFwiZmlsZTFcIikgZmlsZUlucHV0MSE6IEVsZW1lbnRSZWY7XHJcblxyXG4gIGZpbGVOYW1lOiBhbnk7XHJcbiAgZmlsZVNpemU6IGFueTtcclxuICBzZWN0aW9uRGV0YWlsczogYW55ID0gW1xyXG4gICAge1xyXG4gICAgICBuYW1lOiBcIlNlY3Rpb24gMVwiLFxyXG4gICAgICBzZWN0aW9uTnVtYmVyOiAxLFxyXG4gICAgICBxdWVzdGlvbnM6IFtdLFxyXG4gICAgfSxcclxuICBdO1xyXG4gIHByaXZhdGUgZGV0YWNoID0gbmV3IFN1YmplY3QoKTtcclxuICBleGNlbERhdGE6IGFueSA9IFtdO1xyXG4gIGV4Y2VsRXJyb3I6IGFueTtcclxuICBkYXlqcyA9IGRheWpzO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyLFxyXG4gICAgcHJpdmF0ZSB0b2FzdDogVG9hc3RTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBzb3BTZXJ2aWNlOiBUcmF4U2VydmljZSxcclxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwdWJsaWMgZGlhbG9nUmVmOiBOZ2JBY3RpdmVNb2RhbCxcclxuICAgIHByaXZhdGUgZGlhbG9nOiBOZ2JNb2RhbCxcclxuICAgIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICkge1xyXG4gICAgdGhpcy5jaGVja2xpc3RGb3JtID0gdGhpcy5mYi5ncm91cCh7XHJcbiAgICAgIG5hbWU6IFtcIlwiXSxcclxuICAgICAgZGVzY3JpcHRpb246IFtcIlwiXSxcclxuICAgICAgbW9kZTogW1wiaW5kaXZpZHVhbFwiXSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy50eXBlICE9IFwiY3JlYXRlXCIpIHtcclxuICAgICAgdGhpcy5jaGVja2xpc3RGb3JtLmdldChcIm1vZGVcIik/LnNldFZhbHVlKFwiYnVsa1wiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCBtb2RlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuY2hlY2tsaXN0Rm9ybS52YWx1ZS5tb2RlO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0TW9kZShtb2RlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuY2hlY2tsaXN0Rm9ybS5wYXRjaFZhbHVlKHsgbW9kZSB9KTtcclxuICB9XHJcblxyXG4gIG9uRmlsZVNlbGVjdGVkKGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMuZXhjZWxEYXRhID0gW107XHJcbiAgICB0aGlzLmV4Y2VsRXJyb3IgPSBudWxsO1xyXG4gICAgdGhpcy5zZWN0aW9uRGV0YWlscyA9IFtdO1xyXG4gICAgY29uc3QgZmlsZSA9IGV2ZW50LnRhcmdldC5maWxlc1swXTtcclxuICAgIGNvbnN0IHRhcmdldDogRGF0YVRyYW5zZmVyID0gPERhdGFUcmFuc2Zlcj5ldmVudC50YXJnZXQ7XHJcbiAgICBsZXQgaXNFeGNlbEZpbGUgPSAhIXRhcmdldC5maWxlc1swXS5uYW1lLm1hdGNoKC8oLnhsc3wueGxzeCkvKTtcclxuICAgIGlmICghaXNFeGNlbEZpbGUpIHtcclxuICAgICAgdGhpcy50b2FzdC5nZXRFcnJvclRvYXN0KFwiUGxlYXNlIFVwbG9hZCBhIHZhbGlkIHhsc3ggZmlsZVwiKTtcclxuICAgIH1cclxuICAgIGlmIChpc0V4Y2VsRmlsZSkge1xyXG4gICAgICBjb25zdCByZWFkZXI6IEZpbGVSZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xyXG4gICAgICByZWFkZXIucmVhZEFzQmluYXJ5U3RyaW5nKHRhcmdldC5maWxlc1swXSk7XHJcbiAgICAgIHJlYWRlci5vbmxvYWQgPSAoZTogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc3QgYnN0cjogc3RyaW5nID0gZS50YXJnZXQucmVzdWx0O1xyXG4gICAgICAgIGNvbnN0IHdiOiBYTFNYLldvcmtCb29rID0gWExTWC5yZWFkKGJzdHIsIHsgdHlwZTogXCJiaW5hcnlcIiB9KTtcclxuICAgICAgICBjb25zdCB3c25hbWU6IHN0cmluZyA9IHdiLlNoZWV0TmFtZXNbMF07XHJcbiAgICAgICAgY29uc3Qgd3M6IFhMU1guV29ya1NoZWV0ID0gd2IuU2hlZXRzW3dzbmFtZV07XHJcbiAgICAgICAgbGV0IGRhdGEgPSBYTFNYLnV0aWxzLnNoZWV0X3RvX2pzb24od3MsIHsgZGVmdmFsOiBcIlwiIH0pO1xyXG4gICAgICAgIGlmICghZGF0YS5sZW5ndGgpIHtcclxuICAgICAgICAgIHRoaXMudG9hc3QuZ2V0RXJyb3JUb2FzdChcIlBsZWFzZSB1cGxvYWQgYSB2YWxpZCBmaWxlXCIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmV4Y2VsRGF0YSA9IGRhdGE7XHJcbiAgICAgICAgbGV0IGVycm9yOiBhbnkgPSBbXTtcclxuICAgICAgICBsZXQgcXVlc3Rpb25MaXN0OiBhbnkgPSBbXTtcclxuICAgICAgICB0aGlzLmV4Y2VsRGF0YS5mb3JFYWNoKChlbGU6IGFueSwgaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICAgICAgaWYgKCFlbGU/LltcIlNlY3Rpb24gTmFtZVwiXT8udG9TdHJpbmcoKT8udHJpbSgpKSB7XHJcbiAgICAgICAgICAgIGVycm9yLnB1c2goYEludmFsaWQgU2VjdGlvbiBOYW1lIC0gQSR7aW5kZXggKyAyfWApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKCFlbGU/LltcIlF1ZXN0aW9uXCJdPy50b1N0cmluZygpPy50cmltKCkpIHtcclxuICAgICAgICAgICAgZXJyb3IucHVzaChgSW52YWxpZCBRdWVzdGlvbiBOYW1lIC0gQiR7aW5kZXggKyAyfWApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKCFlbGU/LltcIkFuc3dlciBUeXBlXCJdPy50cmltKCkpIHtcclxuICAgICAgICAgICAgZXJyb3IucHVzaChgSW52YWxpZCBBbnN3ZXIgVHlwZSAtIEQke2luZGV4ICsgMn1gKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgZWxlPy5bXCJBbnN3ZXIgVHlwZVwiXT8udHJpbSgpICYmXHJcbiAgICAgICAgICAgIFtcclxuICAgICAgICAgICAgICBcIk11bHRpcGxlIENob2ljZSBTaW5nbGVcIixcclxuICAgICAgICAgICAgICBcIk11bHRpcGxlIENob2ljZSBNdWx0aXBsZVwiLFxyXG4gICAgICAgICAgICAgIFwiRHJvcGRvd25cIixcclxuICAgICAgICAgICAgXS5pbmNsdWRlcyhlbGU/LltcIkFuc3dlciBUeXBlXCJdKSAmJlxyXG4gICAgICAgICAgICAhZWxlPy5bXCJBbnN3ZXIgT3B0aW9uc1wiXT8udG9TdHJpbmcoKT8udHJpbSgpXHJcbiAgICAgICAgICApIHtcclxuICAgICAgICAgICAgZXJyb3IucHVzaChgSW52YWxpZCBBbnN3ZXIgT3B0aW9ucyAtIEUke2luZGV4ICsgMn1gKTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBsZXQgcU5hbWU6IHN0cmluZyA9XHJcbiAgICAgICAgICAgIGVsZT8uW1wiU2VjdGlvbiBOYW1lXCJdPy50b1N0cmluZygpPy50cmltKCkudG9Mb3dlckNhc2UoKSArXHJcbiAgICAgICAgICAgIGVsZT8uW1wiUXVlc3Rpb25cIl0/LnRvU3RyaW5nKCk/LnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICAgICAgaWYgKCFxdWVzdGlvbkxpc3QuaW5jbHVkZXMocU5hbWUpKSB7XHJcbiAgICAgICAgICAgIHF1ZXN0aW9uTGlzdC5wdXNoKHFOYW1lKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGVycm9yLnB1c2goYCR7ZWxlPy5bXCJRdWVzdGlvblwiXT8udHJpbSgpfSBxdWVzdGlvbiBpcyBEdXBsaWNhdGVkYCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgaWYgKGVycm9yLmxlbmd0aCkge1xyXG4gICAgICAgICAgY29uc3QgcG9wdXBjb250ZW50ID0ge1xyXG4gICAgICAgICAgICBkaXNwbGF5cHJvcDogZmFsc2UsXHJcbiAgICAgICAgICAgIGltYWdlc3JjOiBgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCI1NlwiIGhlaWdodD1cIjU2XCIgdmlld0JveD1cIjAgMCA1NiA1NlwiIGZpbGw9XCJub25lXCI+PHJlY3QgeD1cIjRcIiB5PVwiNFwiIHdpZHRoPVwiNDhcIiBoZWlnaHQ9XCI0OFwiIHJ4PVwiMjRcIiBmaWxsPVwiI0ZFRjBDN1wiLz48cGF0aCBkPVwiTTI3Ljk5OTggMjQuMDAxMlYyOC4wMDEyTTI3Ljk5OTggMzIuMDAxMkgyOC4wMDk4TTI2LjI4OTggMTguODYxMkwxNy44MTk4IDMzLjAwMTJDMTcuNjQ1MSAzMy4zMDM2IDE3LjU1MjcgMzMuNjQ2NSAxNy41NTE4IDMzLjk5NTdDMTcuNTUwOCAzNC4zNDQ5IDE3LjY0MTMgMzQuNjg4MyAxNy44MTQyIDM0Ljk5MTdDMTcuOTg3MSAzNS4yOTUxIDE4LjIzNjUgMzUuNTQ3OSAxOC41Mzc1IDM1LjcyNUMxOC44Mzg1IDM1LjkwMjEgMTkuMTgwNiAzNS45OTczIDE5LjUyOTggMzYuMDAxMkgzNi40Njk4QzM2LjgxOSAzNS45OTczIDM3LjE2MTEgMzUuOTAyMSAzNy40NjIxIDM1LjcyNUMzNy43NjMxIDM1LjU0NzkgMzguMDEyNCAzNS4yOTUxIDM4LjE4NTQgMzQuOTkxN0MzOC4zNTgzIDM0LjY4ODMgMzguNDQ4OCAzNC4zNDQ5IDM4LjQ0NzggMzMuOTk1N0MzOC40NDY4IDMzLjY0NjUgMzguMzU0NCAzMy4zMDM2IDM4LjE3OTggMzMuMDAxMkwyOS43MDk4IDE4Ljg2MTJDMjkuNTMxNSAxOC41NjczIDI5LjI4MDUgMTguMzI0MyAyOC45ODEgMTguMTU1N0MyOC42ODE0IDE3Ljk4NyAyOC4zNDM1IDE3Ljg5ODQgMjcuOTk5OCAxNy44OTg0QzI3LjY1NiAxNy44OTg0IDI3LjMxODEgMTcuOTg3IDI3LjAxODYgMTguMTU1N0MyNi43MTkxIDE4LjMyNDMgMjYuNDY4IDE4LjU2NzMgMjYuMjg5OCAxOC44NjEyWlwiIHN0cm9rZT1cIiNEQzY4MDNcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjxyZWN0IHg9XCI0XCIgeT1cIjRcIiB3aWR0aD1cIjQ4XCIgaGVpZ2h0PVwiNDhcIiByeD1cIjI0XCIgc3Ryb2tlPVwiI0ZGRkFFQlwiIHN0cm9rZS13aWR0aD1cIjhcIi8+PC9zdmc+YCxcclxuICAgICAgICAgICAgdGl0bGU6IGBJbnZhbGlkIGRldGFpbHMhYCxcclxuICAgICAgICAgICAgY29udGVudDogYFBsZWFzZSBwcm92aWRlIGNvcnJlY3QgYW5kIGNvbXBsZXRlIHN0b3JlIGluZm9ybWF0aW9uLmAsXHJcbiAgICAgICAgICAgIGJ1dHRvbnR5cGU6IFwiZXJyb3JcIixcclxuICAgICAgICAgICAgZXJyb3I6IGVycm9yLFxyXG4gICAgICAgICAgfTtcclxuICAgICAgICAgIHRoaXMuZXhjZWxFcnJvciA9IHBvcHVwY29udGVudDtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IHNlY3Rpb25OdW1iZXIgPSAwO1xyXG4gICAgICAgIGxldCBhbnN3ZXJUeXBlOiBhbnkgPSB7XHJcbiAgICAgICAgICBcIkRlc2NyaXB0aXZlIEFuc3dlclwiOiBcImRlc2NyaXB0aXZlXCIsXHJcbiAgICAgICAgICBcIkEvQiBRdWVzdGlvblwiOiBcInllcy9ub1wiLFxyXG4gICAgICAgICAgXCJNdWx0aXBsZSBDaG9pY2UgU2luZ2xlXCI6IFwibXVsdGlwbGVjaG9pY2VzaW5nbGVcIixcclxuICAgICAgICAgIFwiTXVsdGlwbGUgQ2hvaWNlIE11bHRpcGxlXCI6IFwibXVsdGlwbGVjaG9pY2VtdWx0aXBsZVwiLFxyXG4gICAgICAgICAgXCJDYXB0dXJlIEltYWdlIHdpdGggRGVzY3JpcHRpb25cIjogXCJkZXNjcmlwdGl2ZUltYWdlXCIsXHJcbiAgICAgICAgICBcIkNhcHR1cmUgSW1hZ2UgYXMgYW5zd2VyXCI6IFwiaW1hZ2VcIixcclxuICAgICAgICAgIFwiQ2FwdHVyZSB2aWRlbyBhcyBhbnN3ZXJcIjogXCJ2aWRlb1wiLFxyXG4gICAgICAgICAgXCJDYXB0dXJlIE11bHRpcGxlIEltYWdlXCI6IFwibXVsdGlwbGVJbWFnZVwiLFxyXG4gICAgICAgICAgRGF0ZTogXCJkYXRlXCIsXHJcbiAgICAgICAgICBcIkxpbmVhciBTY2FsZVwiOiBcImxpbmVhcnNjYWxlXCIsXHJcbiAgICAgICAgICBcIkNhcHR1cmUgSW1hZ2UvVmlkZW8gYXMgQW5zd2VyXCI6IFwiaW1hZ2UvdmlkZW9cIixcclxuICAgICAgICAgIFRpbWU6IFwidGltZVwiLFxyXG4gICAgICAgICAgRHJvcGRvd246IFwiZHJvcGRvd25cIixcclxuICAgICAgICAgIFwiR1BTIExvY2F0aW9uXCI6IFwiZ3BzXCIsXHJcbiAgICAgICAgfTtcclxuICAgICAgICBsZXQgc2VjRGV0YWlsczogYW55ID0gZGF0YS5yZWR1Y2UoKGFjYzogYW55LCBlbGU6IGFueSkgPT4ge1xyXG4gICAgICAgICAgbGV0IHNlY3Rpb25OYW1lID0gZWxlW1wiU2VjdGlvbiBOYW1lXCJdPy50b1N0cmluZygpPy50cmltKCkudG9Mb3dlckNhc2UoKTtcclxuICAgICAgICAgIGlmICghYWNjPy5bc2VjdGlvbk5hbWVdKSB7XHJcbiAgICAgICAgICAgIHNlY3Rpb25OdW1iZXIrKztcclxuICAgICAgICAgICAgYWNjW2Ake3NlY3Rpb25OYW1lfWBdID0ge1xyXG4gICAgICAgICAgICAgIG5hbWU6IGVsZVtcIlNlY3Rpb24gTmFtZVwiXT8udG9TdHJpbmcoKT8udHJpbSgpLFxyXG4gICAgICAgICAgICAgIHNlY3Rpb25OdW1iZXI6IHNlY3Rpb25OdW1iZXIsXHJcbiAgICAgICAgICAgICAgcXVlc3Rpb25zOiBbXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgIHFubzogMSxcclxuICAgICAgICAgICAgICAgICAgcW5hbWU6IGVsZVtcIlF1ZXN0aW9uXCJdPy50b1N0cmluZygpPy50cmltKCksXHJcbiAgICAgICAgICAgICAgICAgIG9sZFFuYW1lOiBlbGVbXCJRdWVzdGlvblwiXT8udG9TdHJpbmcoKT8udHJpbSgpLFxyXG4gICAgICAgICAgICAgICAgICBhbnN3ZXJUeXBlOiBhbnN3ZXJUeXBlW2Ake2VsZVtcIkFuc3dlciBUeXBlXCJdfWBdLFxyXG4gICAgICAgICAgICAgICAgICBhbnN3ZXJzOiB0aGlzLmZpbmRBbnN3ZXIoXHJcbiAgICAgICAgICAgICAgICAgICAgYW5zd2VyVHlwZVtgJHtlbGVbXCJBbnN3ZXIgVHlwZVwiXX1gXSxcclxuICAgICAgICAgICAgICAgICAgICBlbGVbXCJBbnN3ZXIgT3B0aW9uc1wiXSxcclxuICAgICAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgICAgICAgcnVuQUk6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICBydW5BSURlZmF1bHQ6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICBhbGxvd1VwbG9hZGZyb21HYWxsZXJ5OiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgbGlua1R5cGU6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICBtdWx0aVF1ZXN0aW9uUmVmZXJlbmNlSW1hZ2U6IFtdLFxyXG4gICAgICAgICAgICAgICAgICBxdWVzdGlvblJlZmVyZW5jZUltYWdlOiBcIlwiLFxyXG4gICAgICAgICAgICAgICAgICBydW5BSUZlYXR1cmVzOiBbXSxcclxuICAgICAgICAgICAgICAgICAgZGlzYWJsZVJ1bkFJOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgcnVuQUlEZXNjcmlwdGlvbjogXCJcIixcclxuICAgICAgICAgICAgICAgICAgYWxsb3dNdWx0aXBsZTogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgIGNvbXBsaWFuY2U6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICBkZXNjcmlwdGl2ZXR5cGU6IFwidGV4dFwiLFxyXG4gICAgICAgICAgICAgICAgICBxZGVzY3JpcHRpb246IGVsZVtRREVTQ1JJUFRJT05fQ09MVU1OXT8udG9TdHJpbmcoKT8udHJpbSgpIHx8IFwiXCIsXHJcbiAgICAgICAgICAgICAgICAgIC8vIEltcG9ydGVkIHF1ZXN0aW9ucyBhcmUgbmV3LCBzbyBtdWx0aS1pbWFnZSBvbmVzIGdldCB0aGUgYnVpbGRlcidzIGRlZmF1bHQgbW9kZS5cclxuICAgICAgICAgICAgICAgICAgLi4uKGFuc3dlclR5cGVbYCR7ZWxlW1wiQW5zd2VyIFR5cGVcIl19YF0gPT09IFwibXVsdGlwbGVJbWFnZVwiID8geyBpbWFnZURlc2NyaXB0aW9uTW9kZTogREVGQVVMVF9JTUFHRV9ERVNDUklQVElPTl9NT0RFIH0gOiB7fSksXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBhY2NbYCR7c2VjdGlvbk5hbWV9YF0ucXVlc3Rpb25zLnB1c2goe1xyXG4gICAgICAgICAgICAgIHFubzogYWNjW2Ake3NlY3Rpb25OYW1lfWBdLnF1ZXN0aW9ucy5sZW5ndGggKyAxLFxyXG4gICAgICAgICAgICAgIHFuYW1lOiBlbGVbXCJRdWVzdGlvblwiXT8udG9TdHJpbmcoKT8udHJpbSgpLFxyXG4gICAgICAgICAgICAgIG9sZFFuYW1lOiBlbGVbXCJRdWVzdGlvblwiXT8udG9TdHJpbmcoKT8udHJpbSgpLFxyXG4gICAgICAgICAgICAgIGFuc3dlclR5cGU6IGFuc3dlclR5cGVbYCR7ZWxlW1wiQW5zd2VyIFR5cGVcIl19YF0sXHJcbiAgICAgICAgICAgICAgYW5zd2VyczogdGhpcy5maW5kQW5zd2VyKFxyXG4gICAgICAgICAgICAgICAgYW5zd2VyVHlwZVtgJHtlbGVbXCJBbnN3ZXIgVHlwZVwiXX1gXSxcclxuICAgICAgICAgICAgICAgIGVsZVtcIkFuc3dlciBPcHRpb25zXCJdLFxyXG4gICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgICAgcnVuQUk6IGZhbHNlLFxyXG4gICAgICAgICAgICAgIHJ1bkFJRGVmYXVsdDogZmFsc2UsXHJcbiAgICAgICAgICAgICAgYWxsb3dVcGxvYWRmcm9tR2FsbGVyeTogZmFsc2UsXHJcbiAgICAgICAgICAgICAgbGlua1R5cGU6IGZhbHNlLFxyXG4gICAgICAgICAgICAgIG11bHRpUXVlc3Rpb25SZWZlcmVuY2VJbWFnZTogW10sXHJcbiAgICAgICAgICAgICAgcXVlc3Rpb25SZWZlcmVuY2VJbWFnZTogXCJcIixcclxuICAgICAgICAgICAgICBydW5BSUZlYXR1cmVzOiBbXSxcclxuICAgICAgICAgICAgICBkaXNhYmxlUnVuQUk6IGZhbHNlLFxyXG4gICAgICAgICAgICAgIHJ1bkFJRGVzY3JpcHRpb246IFwiXCIsXHJcbiAgICAgICAgICAgICAgYWxsb3dNdWx0aXBsZTogZmFsc2UsXHJcbiAgICAgICAgICAgICAgY29tcGxpYW5jZTogZmFsc2UsXHJcbiAgICAgICAgICAgICAgZGVzY3JpcHRpdmV0eXBlOiBcInRleHRcIixcclxuICAgICAgICAgICAgICBxZGVzY3JpcHRpb246IGVsZVtRREVTQ1JJUFRJT05fQ09MVU1OXT8udG9TdHJpbmcoKT8udHJpbSgpIHx8IFwiXCIsXHJcbiAgICAgICAgICAgICAgLi4uKGFuc3dlclR5cGVbYCR7ZWxlW1wiQW5zd2VyIFR5cGVcIl19YF0gPT09IFwibXVsdGlwbGVJbWFnZVwiID8geyBpbWFnZURlc2NyaXB0aW9uTW9kZTogREVGQVVMVF9JTUFHRV9ERVNDUklQVElPTl9NT0RFIH0gOiB7fSksXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgcmV0dXJuIGFjYztcclxuICAgICAgICB9LCB7fSk7XHJcbiAgICAgICAgdGhpcy5zZWN0aW9uRGV0YWlscyA9IE9iamVjdC52YWx1ZXMoc2VjRGV0YWlscyk7XHJcbiAgICAgICAgaWYgKHRoaXMuZmlsZUlucHV0KSB7XHJcbiAgICAgICAgICB0aGlzLmZpbGVJbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlID0gXCJcIjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMuZmlsZUlucHV0MSkge1xyXG4gICAgICAgICAgdGhpcy5maWxlSW5wdXQxLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSBcIlwiO1xyXG4gICAgICAgIH1cclxuICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoZmlsZSkge1xyXG4gICAgICB0aGlzLmZpbGVOYW1lID0gZmlsZS5uYW1lO1xyXG4gICAgICB0aGlzLmZpbGVTaXplID0gTWF0aC5yb3VuZChmaWxlLnNpemUgLyAxMDI0KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uRHJhZ092ZXIoZXZlbnQ6IGFueSkge1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICB9XHJcblxyXG4gIG9uRHJvcChldmVudDogYW55KSB7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG5cclxuICAgIGNvbnN0IGZpbGUgPSBldmVudC5kYXRhVHJhbnNmZXIuZmlsZXNbMF07XHJcblxyXG4gICAgaWYgKGZpbGUpIHtcclxuICAgICAgdGhpcy5maWxlTmFtZSA9IGZpbGUubmFtZTtcclxuICAgICAgdGhpcy5maWxlU2l6ZSA9IE1hdGgucm91bmQoZmlsZS5zaXplIC8gMTAyNCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBSZXVwbG9hZCgpIHtcclxuICAgIGlmICh0aGlzLmZpbGVJbnB1dCkge1xyXG4gICAgICB0aGlzLmZpbGVJbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlID0gXCJcIjtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmZpbGVJbnB1dDEpIHtcclxuICAgICAgdGhpcy5maWxlSW5wdXQxLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSBcIlwiO1xyXG4gICAgfVxyXG4gICAgbGV0IGVsZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwia3RfYWNjb3VudF90ZWFtX3NpemVfc2VsZWN0XzJcIik7XHJcbiAgICBlbGU/LmNsaWNrKCk7XHJcbiAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIGNyZWF0ZUNoZWNrbGlzdCgpIHtcclxuICAgIGlmICghdGhpcy5jaGVja2xpc3RGb3JtLnZhbHVlLm5hbWUpIHtcclxuICAgICAgdGhpcy50b2FzdC5nZXRFcnJvclRvYXN0KFwiQ2hlY2tsaXN0IE5hbWUgaXMgbWlzc2luZ1wiKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKCF0aGlzLmV4Y2VsRGF0YS5sZW5ndGggJiYgdGhpcy5tb2RlID09IFwiYnVsa1wiKSB7XHJcbiAgICAgIHRoaXMudG9hc3QuZ2V0RXJyb3JUb2FzdChcIlBsZWFzZSB1cGxvYWQgYSB2YWxpZCBmaWxlXCIpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBsZXQgcGFyYW1zID0ge1xyXG4gICAgICBjaGVja2xpc3ROYW1lOiB0aGlzLmNoZWNrbGlzdEZvcm0udmFsdWUubmFtZT8udHJpbSgpLFxyXG4gICAgICBjaGVja2xpc3REZXNjcmlwdGlvbjogdGhpcy5jaGVja2xpc3RGb3JtLnZhbHVlLmRlc2NyaXB0aW9uPy50cmltKCksXHJcbiAgICAgIHNlY3Rpb25zOiB0aGlzLnNlY3Rpb25EZXRhaWxzLFxyXG4gICAgICBjbGllbnRJZDogdGhpcy5jbGllbnRJZCxcclxuICAgICAgc3VibWl0VHlwZTogXCJzYXZlXCIsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5zb3BTZXJ2aWNlXHJcbiAgICAgIC5jcmVhdGVDaGVja2xpc3QocGFyYW1zKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXRhY2gpKVxyXG4gICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgIChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlcykge1xyXG4gICAgICAgICAgICBpZiAocmVzPy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgICAgICAgIHRoaXMudG9hc3QuZ2V0U3VjY2Vzc1RvYXN0KFwiQ2hlY2tsaXN0IGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5XCIpO1xyXG4gICAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoXHJcbiAgICAgICAgICAgICAgICBgL21hbmFnZS90cmF4L2NyZWF0ZUNoZWNrbGlzdD9jaGVja2xpc3RJZD0ke3Jlcy5kYXRhLmNoZWNrbGlzdElkfWAsXHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICB0aGlzLmRpYWxvZ1JlZi5kaXNtaXNzKCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy50b2FzdC5nZXRFcnJvclRvYXN0KFwiVW5hYmxlIHRvIGNyZWF0ZSBjaGVja2xpc3QhXCIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnRvYXN0LmdldEVycm9yVG9hc3QoXCJVbmFibGUgdG8gY3JlYXRlIGNoZWNrbGlzdCFcIik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICAoZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICAgICAgbGV0IGVyciA9XHJcbiAgICAgICAgICAgIGVycm9yPy5lcnJvcj8uZXJyb3I/Lm1lc3NhZ2UgfHxcclxuICAgICAgICAgICAgXCJVbmFibGUgdG8gY3JlYXRlIGNoZWNrbGlzdCFTZXJ2ZXIgRXJyb3IhXCI7XHJcbiAgICAgICAgICB0aGlzLnRvYXN0LmdldEVycm9yVG9hc3QoZXJyKTtcclxuICAgICAgICB9LFxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgZmluZEFuc3dlcih0eXBlOiBzdHJpbmcsIG9wdGlvbnM6IHN0cmluZykge1xyXG4gICAgbGV0IGFuc3dlcjogYW55ID0gW107XHJcblxyXG4gICAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICAgIGNhc2UgXCJ5ZXMvbm9cIjpcclxuICAgICAgICBhbnN3ZXIgPSBbXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIGFuc3dlcjogXCJZZXNcIixcclxuICAgICAgICAgICAgYW5zd2Vyb3B0aW9uTnVtYmVyOiAxLFxyXG4gICAgICAgICAgICBzb3BGbGFnOiBmYWxzZSxcclxuICAgICAgICAgICAgdmFsaWRhdGlvbjogZmFsc2UsXHJcbiAgICAgICAgICAgIHZhbGlkYXRpb25UeXBlOiBcIkNhcHR1cmUgSW1hZ2VcIixcclxuICAgICAgICAgICAgbGlua2VkUXVlc3Rpb246IDAsXHJcbiAgICAgICAgICAgIHNob3dMaW5rZWQ6IGZhbHNlLFxyXG4gICAgICAgICAgICByZWZlcmVuY2VJbWFnZTogXCJcIixcclxuICAgICAgICAgICAgcnVuQUk6IGZhbHNlLFxyXG4gICAgICAgICAgICBhbGxvd1VwbG9hZGZyb21HYWxsZXJ5OiBmYWxzZSxcclxuICAgICAgICAgICAgY29tcGxpYW5jZVNjb3JlOiAwLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgYW5zd2VyOiBcIk5vXCIsXHJcbiAgICAgICAgICAgIGFuc3dlcm9wdGlvbk51bWJlcjogMixcclxuICAgICAgICAgICAgc29wRmxhZzogZmFsc2UsXHJcbiAgICAgICAgICAgIHZhbGlkYXRpb246IGZhbHNlLFxyXG4gICAgICAgICAgICB2YWxpZGF0aW9uVHlwZTogXCJDYXB0dXJlIEltYWdlXCIsXHJcbiAgICAgICAgICAgIGxpbmtlZFF1ZXN0aW9uOiAwLFxyXG4gICAgICAgICAgICBzaG93TGlua2VkOiBmYWxzZSxcclxuICAgICAgICAgICAgcmVmZXJlbmNlSW1hZ2U6IFwiXCIsXHJcbiAgICAgICAgICAgIHJ1bkFJOiBmYWxzZSxcclxuICAgICAgICAgICAgYWxsb3dVcGxvYWRmcm9tR2FsbGVyeTogZmFsc2UsXHJcbiAgICAgICAgICAgIGNvbXBsaWFuY2VTY29yZTogMCxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgXTtcclxuICAgICAgICByZXR1cm4gYW5zd2VyO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFwiZGVzY3JpcHRpdmVcIjpcclxuICAgICAgICBhbnN3ZXIgPSBbXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIGFuc3dlcjogXCJcIixcclxuICAgICAgICAgICAgc29wRmxhZzogZmFsc2UsXHJcbiAgICAgICAgICAgIHZhbGlkYXRpb246IGZhbHNlLFxyXG4gICAgICAgICAgICB2YWxpZGF0aW9uVHlwZTogXCJcIixcclxuICAgICAgICAgICAgdmFsaWRhdGlvbkFuc3dlcjogXCJcIixcclxuICAgICAgICAgICAgcmVmZXJlbmNlSW1hZ2U6IFtdLFxyXG4gICAgICAgICAgICBzaG93TGlua2VkOiBmYWxzZSxcclxuICAgICAgICAgICAgbGlua2VkUXVlc3Rpb246IDAsXHJcbiAgICAgICAgICAgIG5lc3RlZFF1ZXN0aW9uOiBbXSxcclxuICAgICAgICAgICAgZGVzY3JpcHRpdmV0eXBlOiBcInRleHRcIixcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgXTtcclxuICAgICAgICByZXR1cm4gYW5zd2VyO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFwibXVsdGlwbGVjaG9pY2VzaW5nbGVcIjpcclxuICAgICAgICBhbnN3ZXIgPSBbXTtcclxuICAgICAgICBvcHRpb25zLnNwbGl0KFwiLFwiKS5mb3JFYWNoKChlbGU6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGVsZS50cmltKCkpIHtcclxuICAgICAgICAgICAgYW5zd2VyLnB1c2goe1xyXG4gICAgICAgICAgICAgIGFuc3dlcjogZWxlLFxyXG4gICAgICAgICAgICAgIHNvcEZsYWc6IGZhbHNlLFxyXG4gICAgICAgICAgICAgIHZhbGlkYXRpb246IGZhbHNlLFxyXG4gICAgICAgICAgICAgIHZhbGlkYXRpb25UeXBlOiBcIkNhcHR1cmUgSW1hZ2VcIixcclxuICAgICAgICAgICAgICBsaW5rZWRRdWVzdGlvbjogMCxcclxuICAgICAgICAgICAgICBzaG93TGlua2VkOiBmYWxzZSxcclxuICAgICAgICAgICAgICByZWZlcmVuY2VJbWFnZTogW10sXHJcbiAgICAgICAgICAgICAgcnVuQUk6IGZhbHNlLFxyXG4gICAgICAgICAgICAgIGFsbG93VXBsb2FkZnJvbUdhbGxlcnk6IGZhbHNlLFxyXG4gICAgICAgICAgICAgIG5lc3RlZFF1ZXN0aW9uOiBbXSxcclxuICAgICAgICAgICAgICBjb21wbGlhbmNlU2NvcmU6IDAsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiBhbnN3ZXI7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgXCJtdWx0aXBsZWNob2ljZW11bHRpcGxlXCI6XHJcbiAgICAgICAgYW5zd2VyID0gW107XHJcbiAgICAgICAgb3B0aW9ucy5zcGxpdChcIixcIikuZm9yRWFjaCgoZWxlOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChlbGU/LnRyaW0oKSkge1xyXG4gICAgICAgICAgICBhbnN3ZXIucHVzaCh7XHJcbiAgICAgICAgICAgICAgYW5zd2VyOiBlbGUsXHJcbiAgICAgICAgICAgICAgc29wRmxhZzogZmFsc2UsXHJcbiAgICAgICAgICAgICAgdmFsaWRhdGlvbjogZmFsc2UsXHJcbiAgICAgICAgICAgICAgdmFsaWRhdGlvblR5cGU6IFwiQ2FwdHVyZSBJbWFnZVwiLFxyXG4gICAgICAgICAgICAgIGxpbmtlZFF1ZXN0aW9uOiAwLFxyXG4gICAgICAgICAgICAgIHNob3dMaW5rZWQ6IGZhbHNlLFxyXG4gICAgICAgICAgICAgIHJlZmVyZW5jZUltYWdlOiBbXSxcclxuICAgICAgICAgICAgICBydW5BSTogZmFsc2UsXHJcbiAgICAgICAgICAgICAgYWxsb3dVcGxvYWRmcm9tR2FsbGVyeTogZmFsc2UsXHJcbiAgICAgICAgICAgICAgbmVzdGVkUXVlc3Rpb246IFtdLFxyXG4gICAgICAgICAgICAgIGNvbXBsaWFuY2VTY29yZTogMCxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIGFuc3dlcjtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBcImRlc2NyaXB0aXZlSW1hZ2VcIjpcclxuICAgICAgICBhbnN3ZXIgPSBbXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIGFuc3dlcjogXCJcIixcclxuICAgICAgICAgICAgc29wRmxhZzogZmFsc2UsXHJcbiAgICAgICAgICAgIHZhbGlkYXRpb246IGZhbHNlLFxyXG4gICAgICAgICAgICB2YWxpZGF0aW9uVHlwZTogXCJcIixcclxuICAgICAgICAgICAgdmFsaWRhdGlvbkFuc3dlcjogXCJcIixcclxuICAgICAgICAgICAgcmVmZXJlbmNlSW1hZ2U6IFtdLFxyXG4gICAgICAgICAgICBzaG93TGlua2VkOiBmYWxzZSxcclxuICAgICAgICAgICAgbGlua2VkUXVlc3Rpb246IDAsXHJcbiAgICAgICAgICAgIG5lc3RlZFF1ZXN0aW9uOiBbXSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgXTtcclxuICAgICAgICByZXR1cm4gYW5zd2VyO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFwiaW1hZ2VcIjpcclxuICAgICAgICBhbnN3ZXIgPSBbXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIGFuc3dlcjogXCJcIixcclxuICAgICAgICAgICAgc29wRmxhZzogZmFsc2UsXHJcbiAgICAgICAgICAgIHZhbGlkYXRpb246IGZhbHNlLFxyXG4gICAgICAgICAgICB2YWxpZGF0aW9uVHlwZTogXCJcIixcclxuICAgICAgICAgICAgdmFsaWRhdGlvbkFuc3dlcjogXCJcIixcclxuICAgICAgICAgICAgcmVmZXJlbmNlSW1hZ2U6IFtdLFxyXG4gICAgICAgICAgICBzaG93TGlua2VkOiBmYWxzZSxcclxuICAgICAgICAgICAgbGlua2VkUXVlc3Rpb246IDAsXHJcbiAgICAgICAgICAgIG5lc3RlZFF1ZXN0aW9uOiBbXSxcclxuICAgICAgICAgICAgbWF0Y2hlZENvdW50OiAwLFxyXG4gICAgICAgICAgICBub3RNYXRjaGVkQ291bnQ6IDAsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIF07XHJcbiAgICAgICAgcmV0dXJuIGFuc3dlcjtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBcInZpZGVvXCI6XHJcbiAgICAgICAgYW5zd2VyID0gW1xyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBhbnN3ZXI6IFwiXCIsXHJcbiAgICAgICAgICAgIHNvcEZsYWc6IGZhbHNlLFxyXG4gICAgICAgICAgICB2YWxpZGF0aW9uOiBmYWxzZSxcclxuICAgICAgICAgICAgdmFsaWRhdGlvblR5cGU6IFwiXCIsXHJcbiAgICAgICAgICAgIHZhbGlkYXRpb25BbnN3ZXI6IFwiXCIsXHJcbiAgICAgICAgICAgIHJlZmVyZW5jZUltYWdlOiBbXSxcclxuICAgICAgICAgICAgc2hvd0xpbmtlZDogZmFsc2UsXHJcbiAgICAgICAgICAgIGxpbmtlZFF1ZXN0aW9uOiAwLFxyXG4gICAgICAgICAgICBuZXN0ZWRRdWVzdGlvbjogW10sXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIF07XHJcbiAgICAgICAgcmV0dXJuIGFuc3dlcjtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBcIm11bHRpcGxlSW1hZ2VcIjpcclxuICAgICAgICBhbnN3ZXIgPSBbXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIGFuc3dlcjogXCJcIixcclxuICAgICAgICAgICAgc29wRmxhZzogZmFsc2UsXHJcbiAgICAgICAgICAgIHZhbGlkYXRpb246IGZhbHNlLFxyXG4gICAgICAgICAgICB2YWxpZGF0aW9uVHlwZTogXCJcIixcclxuICAgICAgICAgICAgdmFsaWRhdGlvbkFuc3dlcjogXCJcIixcclxuICAgICAgICAgICAgcmVmZXJlbmNlSW1hZ2U6IFtdLFxyXG4gICAgICAgICAgICBzaG93TGlua2VkOiBmYWxzZSxcclxuICAgICAgICAgICAgbGlua2VkUXVlc3Rpb246IDAsXHJcbiAgICAgICAgICAgIG5lc3RlZFF1ZXN0aW9uOiBbXSxcclxuICAgICAgICAgICAgZGVzY3JpcHRpdmV0eXBlOiBcInRleHRcIixcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgXTtcclxuICAgICAgICByZXR1cm4gYW5zd2VyO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFwiZGF0ZVwiOlxyXG4gICAgICAgIGFuc3dlciA9IFtcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgYW5zd2VyOiBcIlwiLFxyXG4gICAgICAgICAgICBzb3BGbGFnOiBmYWxzZSxcclxuICAgICAgICAgICAgdmFsaWRhdGlvbjogZmFsc2UsXHJcbiAgICAgICAgICAgIHZhbGlkYXRpb25UeXBlOiBcIlwiLFxyXG4gICAgICAgICAgICB2YWxpZGF0aW9uQW5zd2VyOiBcIlwiLFxyXG4gICAgICAgICAgICByZWZlcmVuY2VJbWFnZTogW10sXHJcbiAgICAgICAgICAgIHNob3dMaW5rZWQ6IGZhbHNlLFxyXG4gICAgICAgICAgICBsaW5rZWRRdWVzdGlvbjogMCxcclxuICAgICAgICAgICAgbmVzdGVkUXVlc3Rpb246IFtdLFxyXG4gICAgICAgICAgICBoaXN0b3JpY0RhdGU6IGZhbHNlLFxyXG4gICAgICAgICAgICBzdGFydERhdGU6IHRoaXMuZGF5anMoKS5mb3JtYXQoXCJERC1NTS1ZWVlZXCIpLFxyXG4gICAgICAgICAgICBlbmREYXRlOiB0aGlzLmRheWpzKCkuZm9ybWF0KFwiREQtTU0tWVlZWVwiKSxcclxuICAgICAgICAgICAgbWF0Y2hlZENvdW50OiAwLFxyXG4gICAgICAgICAgICBub3RNYXRjaGVkQ291bnQ6IDAsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIF07XHJcbiAgICAgICAgcmV0dXJuIGFuc3dlcjtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBcImxpbmVhcnNjYWxlXCI6XHJcbiAgICAgICAgYW5zd2VyID0gW1xyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBhbnN3ZXI6IFwiXCIsXHJcbiAgICAgICAgICAgIHNvcEZsYWc6IGZhbHNlLFxyXG4gICAgICAgICAgICB2YWxpZGF0aW9uOiBmYWxzZSxcclxuICAgICAgICAgICAgdmFsaWRhdGlvblR5cGU6IFwiXCIsXHJcbiAgICAgICAgICAgIHZhbGlkYXRpb25BbnN3ZXI6IFwiXCIsXHJcbiAgICAgICAgICAgIHJlZmVyZW5jZUltYWdlOiBbXSxcclxuICAgICAgICAgICAgc2hvd0xpbmtlZDogZmFsc2UsXHJcbiAgICAgICAgICAgIGxpbmtlZFF1ZXN0aW9uOiAwLFxyXG4gICAgICAgICAgICByYW5nZVN0YXJ0OiAwLFxyXG4gICAgICAgICAgICByYW5nZUVuZDogMTAwLFxyXG4gICAgICAgICAgICBuZXN0ZWRRdWVzdGlvbjogW10sXHJcbiAgICAgICAgICAgIGxpbmVhclR5cGU6IFwibnVtYmVyXCIsXHJcbiAgICAgICAgICAgIG1pblZhbHVlOiAwLFxyXG4gICAgICAgICAgICBtYXhWYWx1ZTogMTAwLFxyXG4gICAgICAgICAgICBtYXRjaGVkQ291bnQ6IDAsXHJcbiAgICAgICAgICAgIG5vdE1hdGNoZWRDb3VudDogMCxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgXTtcclxuICAgICAgICByZXR1cm4gYW5zd2VyO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFwidGltZVwiOlxyXG4gICAgICAvLyBHUFMgaGFzIG5vIG9wdGlvbnMgZWl0aGVyOyB0aGUgZGV2aWNlIGNhcHR1cmVzIGxhdGl0dWRlL2xvbmdpdHVkZSBhcyB0aGUgYW5zd2VyLlxyXG4gICAgICBjYXNlIFwiZ3BzXCI6XHJcbiAgICAgICAgYW5zd2VyID0gW1xyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBhbnN3ZXI6IFwiXCIsXHJcbiAgICAgICAgICAgIHNvcEZsYWc6IGZhbHNlLFxyXG4gICAgICAgICAgICB2YWxpZGF0aW9uOiBmYWxzZSxcclxuICAgICAgICAgICAgdmFsaWRhdGlvblR5cGU6IFwiXCIsXHJcbiAgICAgICAgICAgIHZhbGlkYXRpb25BbnN3ZXI6IFwiXCIsXHJcbiAgICAgICAgICAgIHJlZmVyZW5jZUltYWdlOiBbXSxcclxuICAgICAgICAgICAgc2hvd0xpbmtlZDogZmFsc2UsXHJcbiAgICAgICAgICAgIGxpbmtlZFF1ZXN0aW9uOiAwLFxyXG4gICAgICAgICAgICBuZXN0ZWRRdWVzdGlvbjogW10sXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIF07XHJcbiAgICAgICAgcmV0dXJuIGFuc3dlcjtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBcImltYWdlL3ZpZGVvXCI6XHJcbiAgICAgICAgYW5zd2VyID0gW1xyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBhbnN3ZXI6IFwiXCIsXHJcbiAgICAgICAgICAgIHNvcEZsYWc6IGZhbHNlLFxyXG4gICAgICAgICAgICB2YWxpZGF0aW9uOiBmYWxzZSxcclxuICAgICAgICAgICAgdmFsaWRhdGlvblR5cGU6IFwiXCIsXHJcbiAgICAgICAgICAgIHZhbGlkYXRpb25BbnN3ZXI6IFwiXCIsXHJcbiAgICAgICAgICAgIHJlZmVyZW5jZUltYWdlOiBbXSxcclxuICAgICAgICAgICAgc2hvd0xpbmtlZDogZmFsc2UsXHJcbiAgICAgICAgICAgIGxpbmtlZFF1ZXN0aW9uOiAwLFxyXG4gICAgICAgICAgICBuZXN0ZWRRdWVzdGlvbjogW10sXHJcbiAgICAgICAgICAgIGxpbWl0OiBmYWxzZSxcclxuICAgICAgICAgICAgdmlkZW9MaW1pdDogMCxcclxuICAgICAgICAgICAgaW1hZ2VMaW1pdDogMCxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgXTtcclxuICAgICAgICByZXR1cm4gYW5zd2VyO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFwiZHJvcGRvd25cIjpcclxuICAgICAgICBhbnN3ZXIgPSBbXTtcclxuICAgICAgICBvcHRpb25zLnNwbGl0KFwiLFwiKS5mb3JFYWNoKChlbGU6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGVsZT8udHJpbSgpKSB7XHJcbiAgICAgICAgICAgIGFuc3dlci5wdXNoKHtcclxuICAgICAgICAgICAgICBhbnN3ZXI6IGVsZSxcclxuICAgICAgICAgICAgICBzb3BGbGFnOiBmYWxzZSxcclxuICAgICAgICAgICAgICB2YWxpZGF0aW9uOiBmYWxzZSxcclxuICAgICAgICAgICAgICB2YWxpZGF0aW9uVHlwZTogXCJDYXB0dXJlIEltYWdlXCIsXHJcbiAgICAgICAgICAgICAgbGlua2VkUXVlc3Rpb246IDAsXHJcbiAgICAgICAgICAgICAgc2hvd0xpbmtlZDogZmFsc2UsXHJcbiAgICAgICAgICAgICAgcmVmZXJlbmNlSW1hZ2U6IFtdLFxyXG4gICAgICAgICAgICAgIHJ1bkFJOiBmYWxzZSxcclxuICAgICAgICAgICAgICBhbGxvd1VwbG9hZGZyb21HYWxsZXJ5OiBmYWxzZSxcclxuICAgICAgICAgICAgICBuZXN0ZWRRdWVzdGlvbjogW10sXHJcbiAgICAgICAgICAgICAgY29tcGxpYW5jZVNjb3JlOiAwLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gYW5zd2VyO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiBbXTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGRvd25sb2FkVGVtcGxhdGUoKSB7XHJcbiAgICB0aGlzLnNvcFNlcnZpY2VcclxuICAgICAgLmRvd25sb2FkUXVlc3Rpb24odGhpcy5jaGVja2xpc3REYXRhLmNoZWNrbGlzdElkKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXRhY2gpKVxyXG4gICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgIChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlcykge1xyXG4gICAgICAgICAgICB0aGlzLnNvcFNlcnZpY2Uuc2F2ZUFzRXhjZWxGaWxlKHJlcywgXCJDaGVja2xpc3QgUXVlc3Rpb25cIik7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnRvYXN0LmdldEVycm9yVG9hc3QoXCJVbmFibGUgdG8gZG93bmxvYWQgdGVtcGxhdGUhXCIpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgKGVycm9yOiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMudG9hc3QuZ2V0RXJyb3JUb2FzdChcIlVuYWJsZSB0byBkb3dubG9hZCB0ZW1wbGF0ZSFcIik7XHJcbiAgICAgICAgfSxcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZUNoZWNrbGlzdCgpIHtcclxuICAgIGlmICghdGhpcy5jaGVja2xpc3REYXRhLmNoZWNrTGlzdE5hbWUpIHtcclxuICAgICAgdGhpcy50b2FzdC5nZXRFcnJvclRvYXN0KFwiQ2hlY2tsaXN0IE5hbWUgaXMgbWlzc2luZ1wiKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKCF0aGlzLmV4Y2VsRGF0YS5sZW5ndGgpIHtcclxuICAgICAgdGhpcy50b2FzdC5nZXRFcnJvclRvYXN0KFwiUGxlYXNlIHVwbG9hZCBhIHZhbGlkIGZpbGVcIik7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGxldCBwYXJhbXMgPSB7XHJcbiAgICAgIGNoZWNrbGlzdE5hbWU6IHRoaXMuY2hlY2tsaXN0RGF0YS5jaGVja0xpc3ROYW1lPy50cmltKCksXHJcbiAgICAgIGNoZWNrbGlzdERlc2NyaXB0aW9uOiB0aGlzLmNoZWNrbGlzdERhdGEuY2hlY2tMaXN0RGVzY3JpcHRpb24/LnRyaW0oKSxcclxuICAgICAgc2VjdGlvbnM6IHRoaXMuc2VjdGlvbkRldGFpbHMsXHJcbiAgICAgIGNsaWVudElkOiB0aGlzLmNoZWNrbGlzdERhdGEuY2xpZW50SWQsXHJcbiAgICAgIHN1Ym1pdFR5cGU6IFwic2F2ZVwiLFxyXG4gICAgfTtcclxuICAgIHRoaXMuc29wU2VydmljZVxyXG4gICAgICAuZ2V0VXBkYXRlQ2hlY2tsaXN0KHRoaXMuY2hlY2tsaXN0RGF0YS5jaGVja2xpc3RJZCwgcGFyYW1zKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXRhY2gpKVxyXG4gICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgIChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlcykge1xyXG4gICAgICAgICAgICBpZiAocmVzPy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKFwicmVsb2FkXCIpO1xyXG4gICAgICAgICAgICAgIHRoaXMudG9hc3QuZ2V0U3VjY2Vzc1RvYXN0KFwiQ2hlY2tsaXN0IHVwZGF0ZWQgc3VjY2Vzc2Z1bGx5XCIpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMudG9hc3QuZ2V0RXJyb3JUb2FzdChcIlVuYWJsZSB0byB1cGRhdGUgY2hlY2tsaXN0IVwiKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy50b2FzdC5nZXRFcnJvclRvYXN0KFwiVW5hYmxlIHRvIHVwZGF0ZSBjaGVja2xpc3QhXCIpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICBsZXQgZXJyID1cclxuICAgICAgICAgICAgZXJyb3I/LmVycm9yPy5lcnJvcj8ubWVzc2FnZSB8fFxyXG4gICAgICAgICAgICBcIlVuYWJsZSB0byB1cGRhdGUgY2hlY2tsaXN0IVNlcnZlciBFcnJvciFcIjtcclxuICAgICAgICAgIHRoaXMudG9hc3QuZ2V0RXJyb3JUb2FzdChlcnIpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJjaGVja2xpc3QtY2FyZFwiPlxyXG5cclxuICA8IS0tIEhlYWRlciAtLT5cclxuICAgPGRpdiAqbmdJZj1cIiFleGNlbERhdGEubGVuZ3RoXCI+XHJcbiAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtYi0zXCI+XHJcbiAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZS1pY29uIG1lLTJcIj5cclxuICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiNTZcIiBoZWlnaHQ9XCI1NlwiIHZpZXdCb3g9XCIwIDAgNTYgNTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgIDxyZWN0IHg9XCI0XCIgeT1cIjRcIiB3aWR0aD1cIjQ4XCIgaGVpZ2h0PVwiNDhcIiByeD1cIjI0XCIgZmlsbD1cIiNEQUYxRkZcIi8+XHJcbiAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjRcIiB5PVwiNFwiIHdpZHRoPVwiNDhcIiBoZWlnaHQ9XCI0OFwiIHJ4PVwiMjRcIiBzdHJva2U9XCIjRUFGOEZGXCIgc3Ryb2tlLXdpZHRoPVwiOFwiLz5cclxuICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTI4IDIxVjM1TTIxIDI4SDM1XCIgc3Ryb2tlPVwiIzAwOUJGM1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0wIHRpdGxlVGV4dFwiPnt7dHlwZSA9PSAnY3JlYXRlJyA/ICdDcmVhdGUgQ2hlY2tsaXN0JyA6ICdCdWxrIFVwbG9hZCd9fTwvZGl2PlxyXG4gICAgICAgPC9kaXY+XHJcbiAgICAgXHJcbiAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImNoZWNrbGlzdEZvcm1cIj5cclxuICAgICBcclxuICAgICAgICAgPCEtLSBDaGVja2xpc3QgTmFtZSAtLT5cclxuICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIiAqbmdJZj1cInR5cGUgPT0gJ2NyZWF0ZSdcIj5cclxuICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCI+Q2hlY2tsaXN0IE5hbWU8L2xhYmVsPlxyXG4gICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgZm9ybUNvbnRyb2xOYW1lPVwibmFtZVwiPlxyXG4gICAgICAgICA8L2Rpdj5cclxuICAgICBcclxuICAgICAgICAgPCEtLSBEZXNjcmlwdGlvbiAtLT5cclxuICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIiAqbmdJZj1cInR5cGUgPT0gJ2NyZWF0ZSdcIj5cclxuICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCI+RGVzY3JpcHRpb248L2xhYmVsPlxyXG4gICAgICAgICAgIDx0ZXh0YXJlYSBjbGFzcz1cImZvcm0tY29udHJvbFwiIHJvd3M9XCIzXCIgZm9ybUNvbnRyb2xOYW1lPVwiZGVzY3JpcHRpb25cIj48L3RleHRhcmVhPlxyXG4gICAgICAgICA8L2Rpdj5cclxuICAgICBcclxuICAgICAgICAgPCEtLSBNb2RlIFNlbGVjdGlvbiAtLT5cclxuICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBnLTIgbXktM1wiICpuZ0lmPVwidHlwZSA9PSAnY3JlYXRlJ1wiPlxyXG4gICAgIFxyXG4gICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICBjbGFzcz1cIm9wdGlvbi1ib3hcIlxyXG4gICAgICAgICAgICAgICBbY2xhc3Mub3B0aW9uLWFjdGl2ZV09XCJtb2RlPT09J2luZGl2aWR1YWwnXCJcclxuICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdE1vZGUoJ2luZGl2aWR1YWwnKVwiPlxyXG4gICAgIFxyXG4gICAgICAgICAgICAgICA8c3Bhbj5BZGQgcXVlc3Rpb25zIGluZGl2aWR1YWxseTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJyYWRpb1wiIHZhbHVlPVwiaW5kaXZpZHVhbFwiIGZvcm1Db250cm9sTmFtZT1cIm1vZGVcIiBzdHlsZT1cIndpZHRoOjE1cHg7aGVpZ2h0OjE1cHhcIj5cclxuICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgIDwvZGl2PlxyXG4gICAgIFxyXG4gICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICBjbGFzcz1cIm9wdGlvbi1ib3hcIlxyXG4gICAgICAgICAgICAgICBbY2xhc3Mub3B0aW9uLWFjdGl2ZV09XCJtb2RlPT09J2J1bGsnXCJcclxuICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdE1vZGUoJ2J1bGsnKVwiPlxyXG4gICAgIFxyXG4gICAgICAgICAgICAgICA8c3Bhbj5BZGQgcXVlc3Rpb25zIGluIGJ1bGs8L3NwYW4+XHJcbiAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwicmFkaW9cIiB2YWx1ZT1cImJ1bGtcIiBmb3JtQ29udHJvbE5hbWU9XCJtb2RlXCIgc3R5bGU9XCJ3aWR0aDoxNXB4O2hlaWdodDoxNXB4XCI+XHJcbiAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICA8L2Rpdj5cclxuICAgICBcclxuICAgICAgICAgPC9kaXY+XHJcbiAgICAgXHJcbiAgICAgICAgIDwhLS0gQnVsayBVcGxvYWQgU2VjdGlvbiAtLT5cclxuICAgICAgICAgPGRpdiAqbmdJZj1cIm1vZGUgPT09ICdidWxrJ1wiIGNsYXNzPVwiYnVsa1RleHRcIj5cclxuICAgICBcclxuICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXktNVwiPlxyXG4gICAgIFxyXG4gICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTJcIj4xLiBVc2UgdGhlIHRlbXBsYXRlIHRvIHVwbG9hZCBtdWx0aXBsZSBxdWVzdGlvbnMgYXQgb25jZTwvZGl2PlxyXG4gICAgIFxyXG4gICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTJcIj5cclxuICAgICAgICAgICAgICAgMi4gRG93bmxvYWQgdGhlIHRlbXBsYXRlIGhlcmUgLVxyXG4gICAgICAgICAgICAgICBAaWYodHlwZSA9PSAnY3JlYXRlJykge1xyXG4gICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJkb3dubG9hZC1saW5rXCIgaHJlZj1cIi9hc3NldHMvZmlsZXMvY2hlY2tsaXN0UXVlc3Rpb24ueGxzeFwiIGRvd25sb2FkPlxyXG4gICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE3XCIgaGVpZ2h0PVwiMTdcIiB2aWV3Qm94PVwiMCAwIDE3IDE3XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTUuODM1OSAxMC44MzU5VjE0LjE2OTNDMTUuODM1OSAxNC42MTEzIDE1LjY2MDMgMTUuMDM1MiAxNS4zNDc4IDE1LjM0NzhDMTUuMDM1MiAxNS42NjAzIDE0LjYxMTMgMTUuODM1OSAxNC4xNjkzIDE1LjgzNTlIMi41MDI2QzIuMDYwNTggMTUuODM1OSAxLjYzNjY1IDE1LjY2MDMgMS4zMjQwOSAxNS4zNDc4QzEuMDExNTMgMTUuMDM1MiAwLjgzNTkzOCAxNC42MTEzIDAuODM1OTM4IDE0LjE2OTNWMTAuODM1OU00LjE2OTI3IDYuNjY5MjdMOC4zMzU5NCAxMC44MzU5TTguMzM1OTQgMTAuODM1OUwxMi41MDI2IDYuNjY5MjdNOC4zMzU5NCAxMC44MzU5VjAuODM1OTM4XCIgc3Ryb2tlPVwiIzAwOUJGM1wiIHN0cm9rZS13aWR0aD1cIjEuNjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPiBEb3dubG9hZCBUZW1wbGF0ZVxyXG4gICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgIEBlbHNlIHtcclxuICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRvd25sb2FkLWxpbmtcIiAoY2xpY2spPVwiZG93bmxvYWRUZW1wbGF0ZSgpXCI+XHJcbiAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxN1wiIGhlaWdodD1cIjE3XCIgdmlld0JveD1cIjAgMCAxNyAxN1wiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTUuODM1OSAxMC44MzU5VjE0LjE2OTNDMTUuODM1OSAxNC42MTEzIDE1LjY2MDMgMTUuMDM1MiAxNS4zNDc4IDE1LjM0NzhDMTUuMDM1MiAxNS42NjAzIDE0LjYxMTMgMTUuODM1OSAxNC4xNjkzIDE1LjgzNTlIMi41MDI2QzIuMDYwNTggMTUuODM1OSAxLjYzNjY1IDE1LjY2MDMgMS4zMjQwOSAxNS4zNDc4QzEuMDExNTMgMTUuMDM1MiAwLjgzNTkzOCAxNC42MTEzIDAuODM1OTM4IDE0LjE2OTNWMTAuODM1OU00LjE2OTI3IDYuNjY5MjdMOC4zMzU5NCAxMC44MzU5TTguMzM1OTQgMTAuODM1OUwxMi41MDI2IDYuNjY5MjdNOC4zMzU5NCAxMC44MzU5VjAuODM1OTM4XCIgc3Ryb2tlPVwiIzAwOUJGM1wiIHN0cm9rZS13aWR0aD1cIjEuNjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgICAgICAgICAgICAgPC9zdmc+IERvd25sb2FkIFRlbXBsYXRlXHJcbiAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICBcclxuICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0yXCI+My4gQWRkIHlvdXIgZGF0YSB0byB0aGUgdGVtcGxhdGU8L2Rpdj5cclxuICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0yXCI+NC4gVXBsb2FkIGl0IGZvciBwcm9jZXNzaW5nPC9kaXY+XHJcbiAgICAgXHJcbiAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgXHJcbiAgICAgICAgICAgPCEtLSBVcGxvYWQgQXJlYSAtLT5cclxuICAgICAgICAgICA8ZGl2IGNsYXNzPVwidXBsb2FkLWJveCBjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJmaWxlSW5wdXQuY2xpY2soKVwiPlxyXG4gICAgIFxyXG4gICAgICAgICAgICAgPGRpdiBjbGFzcz1cInVwbG9hZC1pY29uIG1iLTJcIj5cclxuICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjQ2XCIgaGVpZ2h0PVwiNDZcIiB2aWV3Qm94PVwiMCAwIDQ2IDQ2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjNcIiB5PVwiM1wiIHdpZHRoPVwiNDBcIiBoZWlnaHQ9XCI0MFwiIHJ4PVwiMjBcIiBmaWxsPVwiI0RBRjFGRlwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjNcIiB5PVwiM1wiIHdpZHRoPVwiNDBcIiBoZWlnaHQ9XCI0MFwiIHJ4PVwiMjBcIiBzdHJva2U9XCIjRUFGOEZGXCIgc3Ryb2tlLXdpZHRoPVwiNlwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8xOTAzNF82Njk5NilcIj5cclxuICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0yNi4zMzI2IDI2LjMzMTNMMjIuOTk5MiAyMi45OThNMjIuOTk5MiAyMi45OThMMTkuNjY1OSAyNi4zMzEzTTIyLjk5OTIgMjIuOTk4VjMwLjQ5OE0yOS45OTA5IDI4LjMyM0MzMC44MDM3IDI3Ljg3OTggMzEuNDQ1OCAyNy4xNzg3IDMxLjgxNTggMjYuMzMwMUMzMi4xODU4IDI1LjQ4MTYgMzIuMjYyNyAyNC41MzQgMzIuMDM0NCAyMy42MzY5QzMxLjgwNjEgMjIuNzM5NyAzMS4yODU1IDIxLjk0NDIgMzAuNTU0OCAyMS4zNzU4QzI5LjgyNDEgMjAuODA3NCAyOC45MjUgMjAuNDk4NiAyNy45OTkyIDIwLjQ5OEgyNi45NDkyQzI2LjY5NyAxOS41MjIzIDI2LjIyNjkgMTguNjE2NiAyNS41NzQyIDE3Ljg0ODhDMjQuOTIxNSAxNy4wODEgMjQuMTAzMyAxNi40NzEyIDIzLjE4MSAxNi4wNjUxQzIyLjI1ODcgMTUuNjU5MSAyMS4yNTY0IDE1LjQ2NzQgMjAuMjQ5MyAxNS41MDQ1QzE5LjI0MjMgMTUuNTQxNiAxOC4yNTY4IDE1LjgwNjUgMTcuMzY2OSAxNi4yNzkzQzE2LjQ3NyAxNi43NTIxIDE1LjcwNTggMTcuNDIwNSAxNS4xMTE0IDE4LjIzNDNDMTQuNTE3IDE5LjA0OCAxNC4xMTQ4IDE5Ljk4NTkgMTMuOTM1MSAyMC45Nzc0QzEzLjc1NTMgMjEuOTY5IDEzLjgwMjcgMjIuOTg4NCAxNC4wNzM2IDIzLjk1OUMxNC4zNDQ1IDI0LjkyOTYgMTQuODMxOSAyNS44MjYyIDE1LjQ5OTIgMjYuNTgxM1wiIHN0cm9rZT1cIiMwMDlCRjNcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8xOTAzNF82Njk5NlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMTMgMTMpXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICBcclxuICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXByaW1hcnkgZnctc2VtaWJvbGQgdXBsb2FkVGV4dFwiPkNsaWNrIFRvIFVwbG9hZDwvZGl2PlxyXG4gICAgIFxyXG4gICAgICAgICAgICAgPCEtLSBIaWRkZW4gRmlsZSBJbnB1dCAtLT5cclxuICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgICNmaWxlSW5wdXRcclxuICAgICAgICAgICAgICAgICB0eXBlPVwiZmlsZVwiXHJcbiAgICAgICAgICAgICAgICAgaGlkZGVuXHJcbiAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvbkZpbGVTZWxlY3RlZCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgID5cclxuICAgICBcclxuICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgIFxyXG4gICAgICAgICAgIDwhLS0gVXBsb2FkZWQgRmlsZSAtLT5cclxuICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZmlsZU5hbWVcIiBjbGFzcz1cInVwbG9hZC1maWxlXCI+XHJcbiAgICAgXHJcbiAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMzZcIiBoZWlnaHQ9XCIzNlwiIHZpZXdCb3g9XCIwIDAgMzYgMzZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiMlwiIHk9XCIyXCIgd2lkdGg9XCIzMlwiIGhlaWdodD1cIjMyXCIgcng9XCIxNlwiIGZpbGw9XCIjREFGMUZGXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiMlwiIHk9XCIyXCIgd2lkdGg9XCIzMlwiIGhlaWdodD1cIjMyXCIgcng9XCIxNlwiIHN0cm9rZT1cIiNFQUY4RkZcIiBzdHJva2Utd2lkdGg9XCI0XCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE4LjY2OCAxMS4zMzU5SDE0LjAwMTNDMTMuNjQ3NyAxMS4zMzU5IDEzLjMwODUgMTEuNDc2NCAxMy4wNTg1IDExLjcyNjVDMTIuODA4NCAxMS45NzY1IDEyLjY2OCAxMi4zMTU2IDEyLjY2OCAxMi42NjkzVjIzLjMzNTlDMTIuNjY4IDIzLjY4OTYgMTIuODA4NCAyNC4wMjg3IDEzLjA1ODUgMjQuMjc4N0MxMy4zMDg1IDI0LjUyODggMTMuNjQ3NyAyNC42NjkzIDE0LjAwMTMgMjQuNjY5M0gyMi4wMDEzQzIyLjM1NDkgMjQuNjY5MyAyMi42OTQxIDI0LjUyODggMjIuOTQ0MSAyNC4yNzg3QzIzLjE5NDIgMjQuMDI4NyAyMy4zMzQ2IDIzLjY4OTYgMjMuMzM0NiAyMy4zMzU5VjE2LjAwMjZNMTguNjY4IDExLjMzNTlMMjMuMzM0NiAxNi4wMDI2TTE4LjY2OCAxMS4zMzU5VjE2LjAwMjZIMjMuMzM0NlwiIHN0cm9rZT1cIiMwMEEzRkZcIiBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgIFxyXG4gICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGFsaWduLWl0ZW1zLXN0YXJ0IG1zLTVcIj5cclxuICAgICAgICAgICAgICAgICA8ZGl2Pnt7ZmlsZU5hbWV9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWNjZXNzVGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAge3tmaWxlU2l6ZX19IEtCIOKAkyBVcGxvYWRlZFxyXG4gICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgIFxyXG4gICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIzMlwiIGhlaWdodD1cIjMyXCIgdmlld0JveD1cIjAgMCAzMiAzMlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0yOS4zMzQ2IDE0Ljc3MDVWMTUuOTk3MkMyOS4zMzMgMTguODcyNCAyOC40MDIgMjEuNjcwMSAyNi42ODA0IDIzLjk3M0MyNC45NTg5IDI2LjI3NTggMjIuNTM5IDI3Ljk2MDUgMTkuNzgxOCAyOC43NzU3QzE3LjAyNDUgMjkuNTkxIDE0LjA3NzYgMjkuNDkzMSAxMS4zODA2IDI4LjQ5NjdDOC42ODM1NCAyNy41MDAyIDYuMzgwODQgMjUuNjU4NyA0LjgxNTkyIDIzLjI0NjZDMy4yNTA5OSAyMC44MzQ2IDIuNTA3NjkgMTcuOTgxMyAyLjY5Njg3IDE1LjExMjNDMi44ODYwNSAxMi4yNDMzIDMuOTk3NTggOS41MTIzMiA1Ljg2NTY4IDcuMzI2NjVDNy43MzM3NyA1LjE0MDk3IDEwLjI1ODMgMy42MTc3MiAxMy4wNjI5IDIuOTg0MDhDMTUuODY3NCAyLjM1MDQzIDE4LjgwMTcgMi42NDAzMyAyMS40MjggMy44MTA1NU0yOS4zMzQ2IDUuMzMwNTVMMTYuMDAxMyAxOC42NzcyTDEyLjAwMTMgMTQuNjc3MlwiIHN0cm9rZT1cIiMxMkI3NkFcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgXHJcbiAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgXHJcbiAgICAgICAgIDwvZGl2PlxyXG4gICAgIFxyXG4gICAgICAgICA8IS0tIEJ1dHRvbnMgLS0+XHJcbiAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZCBtdC00XCI+XHJcbiAgICAgXHJcbiAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLWxpZ2h0IG1lLTJcIiAoY2xpY2spPVwiZGlhbG9nUmVmLmNsb3NlKClcIj5cclxuICAgICAgICAgICAgIENhbmNlbFxyXG4gICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgIFxyXG4gICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIiAoY2xpY2spPVwidHlwZSA9PSAnY3JlYXRlJyA/IGNyZWF0ZUNoZWNrbGlzdCgpIDogdXBkYXRlQ2hlY2tsaXN0KClcIj5cclxuICAgICAgICAgICAgIFByb2NlZWRcclxuICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICBcclxuICAgICAgICAgPC9kaXY+XHJcbiAgICAgXHJcbiAgICAgICA8L2Zvcm0+XHJcbiAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJib3JkZXItMCB2YWxpZGF0ZUJveFwiICpuZ0lmPVwiZXhjZWxEYXRhLmxlbmd0aFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBib3JkZXItMCBtdC0wXCI+XHJcbiAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10aXRsZSBtdC0zXCI+PHNwYW4gY2xhc3M9XCJjb25maWctaGVhZGluZyBmdy1zZW1pYm9sZCB3LWF1dG9cIj5Bc3NpZ24gU3RvcmVzPC9zcGFuPjwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcHQtMFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTRcIj5cclxuICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3B1cC1jYXJkIHJvdW5kZWQtMyBwLTMgZmxleC1jb2x1bW4gaC04MHB4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnctc2VtaWJvbGQgY29uZmlnLWhlYWRpbmcgdy0xMDBcIj57e2V4Y2VsRGF0YT8ubGVuZ3RofX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmdy1zZW1pYm9sZCBzdWJ0aXRsZSBtdC0xXCI+VG90YWwgUmVjb3JkczwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3B1cC1jYXJkIHJvdW5kZWQtMyBwLTMgZmxleC1jb2x1bW4gaC04MHB4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmdy1zZW1pYm9sZCBjb25maWctaGVhZGluZyB3LTEwMFwiPnt7ZXhjZWxEYXRhPy5sZW5ndGh9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnctc2VtaWJvbGQgc3VidGl0bGUgbXQtMVwiPlJvd3MgcHJvY2Vzc2VkPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicG9wdXAtY2FyZCByb3VuZGVkLTMgcC0zIGZsZXgtY29sdW1uIGgtODBweFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cImV4Y2VsRXJyb3IgPyAnZXJyb3ItaGVhZGluZyc6JydcIiBjbGFzcz1cImZ3LXNlbWlib2xkIGNvbmZpZy1oZWFkaW5nIHctMTAwXCI+e3tleGNlbEVycm9yPy5lcnJvcj8ubGVuZ3RoIHx8IDB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cImV4Y2VsRXJyb3IgPyAnZXhjZWwtZXJyb3InOicnXCIgY2xhc3M9XCJmdy1zZW1pYm9sZCBzdWJ0aXRsZSBtdC0xXCI+RXJyb3I8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhZXhjZWxFcnJvclwiIGNsYXNzPVwidGFibGUtaGVhZGVyIG10LTVcIiBzdHlsZT1cImZvbnQtd2VpZ2h0OiA0MDA7XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2PllvdSdyZSBhYm91dCB0byBhc3NpZ24ge3tleGNlbERhdGE/Lmxlbmd0aH19IHN0b3JlcyB0byB0aGUgY2hlY2tsaXN0LiBBcmUgeW91IHN1cmUgd2FudCB0byBwcm9jZWVkPzwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cImV4Y2VsRXJyb3JcIiBjbGFzcz1cImZsZXgtY29sdW1uIG10LTVcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb25maWctaGVhZGluZyBmdy1ib2xkXCI+SW52YWxpZCBEZXRhaWxzICE8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWJ0aXRsZSBtdC01XCI+UGxlYXNlIHByb3ZpZGUgY29ycmVjdCBhbmQgY29tcGxldGUgbGF5b3V0IGluZm9ybWF0aW9uLjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtNSB3LTEwMCByb3VuZGVkLTMgYm9yZGVyLWVycm9yIG10LTUgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGVycm9yIG9mIGV4Y2VsRXJyb3I/LmVycm9yOyBsZXQgaSA9IGluZGV4OyBsZXQgbGFzdCA9IGxhc3RcIiBbbmdDbGFzc109XCIhbGFzdCA/ICdtYi0yJyA6ICcnXCIgY2xhc3M9XCJ0ZXh0LWVycm9yXCI+e3tpICsgMX19KSB7e2Vycm9yfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxpbnB1dCBzdHlsZT1cInZpc2liaWxpdHk6IGhpZGRlbjtcIiAjZmlsZUlucHV0MSB0eXBlPVwiZmlsZVwiIGlkPVwia3RfYWNjb3VudF90ZWFtX3NpemVfc2VsZWN0XzJcIiAoY2hhbmdlKT1cIm9uRmlsZVNlbGVjdGVkKCRldmVudClcIiAvPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIFxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZCBtdC00XCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1saWdodCBtZS0yXCIgKGNsaWNrKT1cImRpYWxvZ1JlZi5kaXNtaXNzKClcIj5DYW5jZWw8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIiAqbmdJZj1cIiFleGNlbEVycm9yXCIgKGNsaWNrKT1cInR5cGUgPT0gJ2NyZWF0ZScgPyBjcmVhdGVDaGVja2xpc3QoKSA6IHVwZGF0ZUNoZWNrbGlzdCgpXCI+XHJcbiAgICAgICAgUHJvY2VlZFxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAqbmdJZj1cImV4Y2VsRXJyb3JcIiBjbGFzcz1cImJ0biBweS0zIG1zLTMgYnRuLWRhbmdlclwiIChjbGljayk9XCJSZXVwbG9hZCgpO1wiPlJldXBsb2FkPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbjwvZGl2PiJdfQ==
@@ -42,7 +42,7 @@ export function auditAccess(gs) {
42
42
  })));
43
43
  }
44
44
  /**
45
- * Whether the Audit menu / Schedule Info is shown. A Tango user or client superadmin always sees both. A client user sees a
45
+ * Whether the Audit menu / Schedule Info is shown. A Tango user always sees both. A client user (superadmin included) sees a
46
46
  * module when its Add or Edit key is true (TangoTrax_<module>_isAdd / _isEdit, from Manage Users); without those keys
47
47
  * (a user saved before the Audit / Schedules rows, on an API that does not fill them in yet) the Checklist keys decide.
48
48
  */
@@ -72,10 +72,10 @@ function storedUserType() {
72
72
  }
73
73
  }
74
74
  /**
75
- * Users who always get the whole Audit menu: Tango (internal) users, and a client's superadmin (Manage Users shows no
76
- * permission table for a superadmin, so their Audit rows cannot be set). Client admins and users follow their rows.
75
+ * Users who always get the whole Audit menu: Tango (internal) users only. Every client user, superadmin included,
76
+ * follows their Audit rows.
77
77
  */
78
78
  function fullAuditAccess(p) {
79
- return p?.userType === 'tango' || p?.role === 'superadmin';
79
+ return p?.userType === 'tango';
80
80
  }
81
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaXQtdjItYWNjZXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tYW5hbHlzZS10cmF4L3NyYy9saWIvY29tcG9uZW50cy9hdWRpdC12Mi9hdWRpdC12Mi1hY2Nlc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQWtDdkMsZ0hBQWdIO0FBQ2hILE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBeUM7SUFDOUQsRUFBRSxHQUFHLEVBQUUsb0JBQW9CLEVBQUUsSUFBSSxFQUFFLGNBQWMsRUFBRTtJQUNuRCxFQUFFLEdBQUcsRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFO0lBQzdDLEVBQUUsR0FBRyxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFO0lBQ3JDLEVBQUUsR0FBRyxFQUFFLGVBQWUsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFO0lBQ3pDLEVBQUUsR0FBRyxFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFO0lBQ3ZDLEVBQUUsR0FBRyxFQUFFLGVBQWUsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFO0NBQzFDLENBQUM7QUFFRjs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLFdBQVcsQ0FBQyxDQUFNO0lBQ2hDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxFQUFFO1FBQUUsT0FBTyxFQUFFLENBQUM7S0FBRTtJQUNuRCxJQUFJLGVBQWUsQ0FBQyxDQUFDLENBQUMsRUFBRTtRQUFFLE9BQU8sVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUFFO0lBQy9ELE9BQU8sVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRTtRQUMzQixNQUFN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QUM5RTtJQUFDLE1BQU07UUFDTixPQUFPLEVBQUUsQ0FBQztLQUNYO0FBQ0gsQ0FBQztBQUVEOzs7R0FHRztBQUNILFNBQVMsZUFBZSxDQUFDLENBQU07SUFDN0IsT0FBTyxDQUFDLEVBQUUsUUFBUSxLQUFLLE9BQU8sSUFBSSxDQUFDLEVBQUUsSUFBSSxLQUFLLFlBQVksQ0FBQztBQUM3RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSwgbWFwIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEdsb2JhbFN0YXRlU2VydmljZSB9IGZyb20gJ3RhbmdvLWFwcC11aS1nbG9iYWwnO1xyXG5cclxuLyoqXHJcbiAqIFdoYXQgdGhlIHNpZ25lZC1pbiB1c2VyIG1heSBkbyBpbiB0aGUgQXVkaXQgbWVudSwgZnJvbSBNYW5hZ2UgVXNlcnMgLT4gVGFuZ28gVHJheDogQXVkaXQgKGF1ZGl0cykgYW5kIFNjaGVkdWxlc1xyXG4gKiAoTWFuYWdlIC0+IFNjaGVkdWxlcyksIHRoZSBzYW1lIHBlcm1pc3Npb25zIHRoZSAvdHJheC9hdWRpdC8qIHJvdXRlcyBjaGVjay4gQSB1c2VyIHNhdmVkIGJlZm9yZSB0aG9zZSB0d28gcm93c1xyXG4gKiBleGlzdGVkIGhhcyBuZWl0aGVyLCBzbyBDaGVja2xpc3QgZGVjaWRlcyBmb3IgdGhlbSwgYXMgaXQgZGlkIGJlZm9yZSAoYW5kIGFzIHRoZSBBUEkgZmFsbHMgYmFjaykuXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIEF1ZGl0QWNjZXNzIHtcclxuICAvKiogVGhlIHNpZ25lZC1pbiB1c2VyJ3MgcGVybWlzc2lvbnMgaGF2ZSBhcnJpdmVkIChncy51c2VyQWNjZXNzIHN0YXJ0cyBudWxsKTogdmlldyBjaGVja3Mgb25seSBhY3QgYWZ0ZXIgdGhpcy4gKi9cclxuICBsb2FkZWQ/OiBib29sZWFuO1xyXG4gIC8qKiBUYW5nb1RyYXgvQXVkaXQgYWRkIG9yIGVkaXQ6IHRoZSBBdWRpdCBtZW51IGlzIHNob3duIGFuZCBvcGVucyAoc2lkZWJhciBUYW5nbyBUcmF4IC0+IEF1ZGl0KS4gKi9cclxuICBjYW5WaWV3PzogYm9vbGVhbjtcclxuICAvKiogVGFuZ29UcmF4L1NjaGVkdWxlcyBhZGQgb3IgZWRpdDogTWFuYWdlIC0+IFNjaGVkdWxlIEluZm8gaXMgc2hvd24uICovXHJcbiAgY2FuVmlld1NjaGVkdWxlPzogYm9vbGVhbjtcclxuICAvKiogVGFuZ29UcmF4L0F1ZGl0IGFkZCAoZWxzZSBDaGVja2xpc3QpOiBjcmVhdGUgLyBkdXBsaWNhdGUgYXVkaXRzLiAqL1xyXG4gIGNhbkFkZDogYm9vbGVhbjtcclxuICAvKiogVGFuZ29UcmF4L0F1ZGl0IGVkaXQgKGVsc2UgQ2hlY2tsaXN0KTogZWRpdCwgY29uZmlndXJlLCBwdWJsaXNoLCBkZWxldGUsIGFwcHJvdmUsIHJldmlldy4gKi9cclxuICBjYW5FZGl0OiBib29sZWFuO1xyXG4gIC8qKiBUYW5nb1RyYXgvU2NoZWR1bGVzIGFkZCAoZWxzZSBDaGVja2xpc3QpOiBDcmVhdGUgc2NoZWR1bGUsIFNjaGVkdWxlLCBEdXBsaWNhdGUgc2NoZWR1bGUuICovXHJcbiAgY2FuQWRkU2NoZWR1bGU/OiBib29sZWFuO1xyXG4gIC8qKiBUYW5nb1RyYXgvU2NoZWR1bGVzIGVkaXQgKGVsc2UgQ2hlY2tsaXN0KTogZWRpdCwgcHVibGlzaCwgZGVsZXRlIHNjaGVkdWxlcy4gKi9cclxuICBjYW5FZGl0U2NoZWR1bGU/OiBib29sZWFuO1xyXG4gIC8qKiBUYW5nb1RyYXgvdGFzayBhZGQ6IE1hbmFnZSAtPiBUYXNrIFwiQ3JlYXRlIFRhc2tcIiAodjEgbWFuYWdlLXRhc2spLiAqL1xyXG4gIGNhbkFkZFRhc2s/OiBib29sZWFuO1xyXG4gIC8qKiBUYW5nb1RyYXgvdGFzayBlZGl0OiB0YXNrIHZpZXcgLyBjb25maWd1cmUgLyBkdXBsaWNhdGUgLyBkZWxldGUgLyBwdWJsaXNoICh2MSBtYW5hZ2UtdGFzayksIENyZWF0ZSBUYXNrIGZyb21cclxuICAgKiAgYSBzdWJtaXR0ZWQgYW5zd2VyIGFuZCBSZWRvIG9mIGEgdGFzaydzIHF1ZXN0aW9uICh2MSBnYWxsZXJ5KS4gKi9cclxuICBjYW5FZGl0VGFzaz86IGJvb2xlYW47XHJcbiAgLyoqIEEgVGFuZ28gKGludGVybmFsKSB1c2VyOiB0aGUgdjEgZ2FsbGVyeSdzIFJlZG8gLyBDcmVhdGUgVGFzayBhcmUgZm9yIGNsaWVudCB1c2VycyBvbmx5LiAqL1xyXG4gIGlzVGFuZ28/OiBib29sZWFuO1xyXG4gIC8qKiBBdWRpdCB0YWIgcGF0aHMgKCdhY3Rpb25jZW50ZXInLCAnZGFzaGJvYXJkJywgLi4uKSB0aGUgdXNlciBtYXkgb3BlbiwgaW4gbWVudSBvcmRlciAoc2VlIGF1ZGl0VGFic09uKS4gKi9cclxuICB0YWJzPzogc3RyaW5nW107XHJcbn1cclxuXHJcbi8qKiBUaGUgQXVkaXQgbWVudSB0YWJzOiByb3V0ZSBwYXRoIHVuZGVyIC9tYW5hZ2UvdHJheC9hdWRpdC12MiBhbmQgdGhlIE1hbmFnZSBVc2VycyByb3cgKFRhbmdvVHJheF88a2V5Pl8qKS4gKi9cclxuZXhwb3J0IGNvbnN0IEFVRElUX1RBQlM6IEFycmF5PHsga2V5OiBzdHJpbmc7IHBhdGg6IHN0cmluZyB9PiA9IFtcclxuICB7IGtleTogJ0F1ZGl0X0FjdGlvbkNlbnRlcicsIHBhdGg6ICdhY3Rpb25jZW50ZXInIH0sXHJcbiAgeyBrZXk6ICdBdWRpdF9EYXNoYm9hcmQnLCBwYXRoOiAnZGFzaGJvYXJkJyB9LFxyXG4gIHsga2V5OiAnQXVkaXRfRmxhZ3MnLCBwYXRoOiAnZmxhZ3MnIH0sXHJcbiAgeyBrZXk6ICdBdWRpdF9HYWxsZXJ5JywgcGF0aDogJ2dhbGxlcnknIH0sXHJcbiAgeyBrZXk6ICdBdWRpdF9NYW5hZ2UnLCBwYXRoOiAnbWFuYWdlJyB9LFxyXG4gIHsga2V5OiAnQXVkaXRfUmVwb3J0cycsIHBhdGg6ICdyZXBvcnRzJyB9XHJcbl07XHJcblxyXG4vKipcclxuICogQXVkaXQgdGFicyB0aGUgdXNlciBtYXkgb3BlbiwgZnJvbSBNYW5hZ2UgVXNlcnMg4oC6IFRhbmdvIFRyYXgg4oC6IEF1ZGl0J3MgdGFiIHJvd3MgKFRhbmdvVHJheF9BdWRpdF88VGFiPl9pc0FkZCAvXHJcbiAqIF9pc0VkaXQ7IEFkZCBvciBFZGl0IHNob3dzIHRoZSB0YWIpLiBBIFRhbmdvIHVzZXIgc2VlcyBldmVyeSB0YWI7IGEgdXNlciBzYXZlZCBiZWZvcmUgdGhlIHRhYiByb3dzIGV4aXN0ZWQgKG5vIHRhYlxyXG4gKiBrZXlzKSBrZWVwcyBldmVyeSB0YWIgd2hpbGUgQXVkaXQgaXMgb24uIFNhbWUgcnVsZSBhcyB0aGUgaGVhZGVyIHRhYnMgKHRhbmdvLWFwcC1zaGFyZWQgYXVkaXQtdGFiLWFjY2Vzcy50cykuXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gYXVkaXRUYWJzT24ocDogYW55KTogc3RyaW5nW10ge1xyXG4gIGlmICghcCB8fCAhdHJheE1vZHVsZU9uKHAsICdBdWRpdCcpKSB7IHJldHVybiBbXTsgfVxyXG4gIGlmIChmdWxsQXVkaXRBY2Nlc3MocCkpIHsgcmV0dXJuIEFVRElUX1RBQlMubWFwKHQgPT4gdC5wYXRoKTsgfVxyXG4gIHJldHVybiBBVURJVF9UQUJTLmZpbHRlcih0ID0+IHtcclxuICAgIGNvbnN0IGFkZCA9IHBbJ1RhbmdvVHJheF8nICsgdC5rZXkgKyAnX2lzQWRkJ107XHJcbiAgICBjb25zdCBlZGl0ID0gcFsnVGFuZ29UcmF4XycgKyB0LmtleSArICdfaXNFZGl0J107XHJcbiAgICByZXR1cm4gYWRkID09PSB1bmRlZmluZWQgJiYgZWRpdCA9PT0gdW5kZWZpbmVkID8gdHJ1ZSA6ICEhYWRkIHx8ICEhZWRpdDtcclxuICB9KS5tYXAodCA9PiB0LnBhdGgpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gYXVkaXRBY2Nlc3MoZ3M6IEdsb2JhbFN0YXRlU2VydmljZSk6IE9ic2VydmFibGU8QXVkaXRBY2Nlc3M+IHtcclxuICByZXR1cm4gZ3MudXNlckFjY2Vzcy5waXBlKG1hcCgocDogYW55KSA9PiAoe1xyXG4gICAgbG9hZGVkOiAhIXAsXHJcbiAgICBjYW5WaWV3OiB0cmF4TW9kdWxlT24ocCwgJ0F1ZGl0JyksXHJcbiAgICBjYW5WaWV3U2NoZWR1bGU6IHRyYXhNb2R1bGVPbihwLCAnU2NoZWR1bGVzJyksXHJcbiAgICBjYW5BZGQ6ICEhKHA/LlRhbmdvVHJheF9BdWRpdF9pc0FkZCA/PyBwPy5UYW5nb1RyYXhfY2hlY2tsaXN0X2lzQWRkKSxcclxuICAgIGNhbkVkaXQ6ICEhKHA/LlRhbmdvVHJheF9BdWRpdF9pc0VkaXQgPz8gcD8uVGFuZ29UcmF4X2NoZWNrbGlzdF9pc0VkaXQpLFxyXG4gICAgY2FuQWRkU2NoZWR1bGU6ICEhKHA/LlRhbmdvVHJheF9TY2hlZHVsZXNfaXNBZGQgPz8gcD8uVGFuZ29UcmF4X2NoZWNrbGlzdF9pc0FkZCksXHJcbiAgICBjYW5FZGl0U2NoZWR1bGU6ICEhKHA/LlRhbmdvVHJheF9TY2hlZHVsZXNfaXNFZGl0ID8/IHA/LlRhbmdvVHJheF9jaGVja2xpc3RfaXNFZGl0KSxcclxuICAgIGNhbkFkZFRhc2s6ICEhcD8uVGFuZ29UcmF4X1Rhc2tfaXNBZGQsXHJcbiAgICBjYW5FZGl0VGFzazogISFwPy5UYW5nb1RyYXhfVGFza19pc0VkaXQsXHJcbiAgICBpc1RhbmdvOiAocD8udXNlclR5cGUgfHwgc3RvcmVkVXNlclR5cGUoKSkgPT09ICd0YW5nbycsXHJcbiAgICB0YWJzOiBhdWRpdFRhYnNPbihwKSxcclxuICB9KSkpO1xyXG59XHJcblxyXG4vKipcclxuICogV2hldGhlciB0aGUgQXVkaXQgbWVudSAvIFNjaGVkdWxlIEluZm8gaXMgc2hvd24uIEEgVGFuZ28gdXNlciBvciBjbGllbnQgc3VwZXJhZG1pbiBhbHdheXMgc2VlcyBib3RoLiBBIGNsaWVudCB1c2VyIHNlZXMgYVxyXG4gKiBtb2R1bGUgd2hlbiBpdHMgQWRkIG9yIEVkaXQga2V5IGlzIHRydWUgKFRhbmdvVHJheF88bW9kdWxlPl9pc0FkZCAvIF9pc0VkaXQsIGZyb20gTWFuYWdlIFVzZXJzKTsgd2l0aG91dCB0aG9zZSBrZXlzXHJcbiAqIChhIHVzZXIgc2F2ZWQgYmVmb3JlIHRoZSBBdWRpdCAvIFNjaGVkdWxlcyByb3dzLCBvbiBhbiBBUEkgdGhhdCBkb2VzIG5vdCBmaWxsIHRoZW0gaW4geWV0KSB0aGUgQ2hlY2tsaXN0IGtleXMgZGVjaWRlLlxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIHRyYXhNb2R1bGVPbihwOiBhbnksIG1vZHVsZTogJ0F1ZGl0JyB8ICdTY2hlZHVsZXMnKTogYm9vbGVhbiB7XHJcbiAgaWYgKCFwKSB7IHJldHVybiBmYWxzZTsgfVxyXG4gIGlmIChmdWxsQXVkaXRBY2Nlc3MocCkpIHsgcmV0dXJuIHRydWU7IH1cclxuICBjb25zdCBhZGQgPSBwWydUYW5nb1RyYXhfJyArIG1vZHVsZSArICdfaXNBZGQnXTtcclxuICBjb25zdCBlZGl0ID0gcFsnVGFuZ29UcmF4XycgKyBtb2R1bGUgKyAnX2lzRWRpdCddO1xyXG4gIGlmIChhZGQgIT09IHVuZGVmaW5lZCB8fCBlZGl0ICE9PSB1bmRlZmluZWQpIHsgcmV0dXJuICEhYWRkIHx8ICEhZWRpdDsgfVxyXG4gIGNvbnN0IGNBZGQgPSBwLlRhbmdvVHJheF9jaGVja2xpc3RfaXNBZGQ7XHJcbiAgY29uc3QgY0VkaXQgPSBwLlRhbmdvVHJheF9jaGVja2xpc3RfaXNFZGl0O1xyXG4gIHJldHVybiAhIWNBZGQgfHwgISFjRWRpdDtcclxufVxyXG5cclxuLyoqIHVzZXJUeXBlIG9mIHRoZSBzaWduZWQtaW4gdXNlciAobG9jYWxTdG9yYWdlIHVzZXItaW5mbywgYXMgdGhlIHF1ZXN0aW9uIGVkaXRvciByZWFkcyBpdCk7ICcnIHdoZW4gdW5rbm93bi4gKi9cclxuZnVuY3Rpb24gc3RvcmVkVXNlclR5cGUoKTogc3RyaW5nIHtcclxuICB0cnkge1xyXG4gICAgcmV0dXJuIEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3VzZXItaW5mbycpIHx8ICd7fScpPy51c2VyVHlwZSB8fCAnJztcclxuICB9IGNhdGNoIHtcclxuICAgIHJldHVybiAnJztcclxuICB9XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBVc2VycyB3aG8gYWx3YXlzIGdldCB0aGUgd2hvbGUgQXVkaXQgbWVudTogVGFuZ28gKGludGVybmFsKSB1c2VycywgYW5kIGEgY2xpZW50J3Mgc3VwZXJhZG1pbiAoTWFuYWdlIFVzZXJzIHNob3dzIG5vXHJcbiAqIHBlcm1pc3Npb24gdGFibGUgZm9yIGEgc3VwZXJhZG1pbiwgc28gdGhlaXIgQXVkaXQgcm93cyBjYW5ub3QgYmUgc2V0KS4gQ2xpZW50IGFkbWlucyBhbmQgdXNlcnMgZm9sbG93IHRoZWlyIHJvd3MuXHJcbiAqL1xyXG5mdW5jdGlvbiBmdWxsQXVkaXRBY2Nlc3MocDogYW55KTogYm9vbGVhbiB7XHJcbiAgcmV0dXJuIHA/LnVzZXJUeXBlID09PSAndGFuZ28nIHx8IHA/LnJvbGUgPT09ICdzdXBlcmFkbWluJztcclxufVxyXG4iXX0=
81
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaXQtdjItYWNjZXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tYW5hbHlzZS10cmF4L3NyYy9saWIvY29tcG9uZW50cy9hdWRpdC12Mi9hdWRpdC12Mi1hY2Nlc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQWtDdkMsZ0hBQWdIO0FBQ2hILE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBeUM7SUFDOUQsRUFBRSxHQUFHLEVBQUUsb0JBQW9CLEVBQUUsSUFBSSxFQUFFLGNBQWMsRUFBRTtJQUNuRCxFQUFFLEdBQUcsRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFO0lBQzdDLEVBQUUsR0FBRyxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFO0lBQ3JDLEVBQUUsR0FBRyxFQUFFLGVBQWUsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFO0lBQ3pDLEVBQUUsR0FBRyxFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFO0lBQ3ZDLEVBQUUsR0FBRyxFQUFFLGVBQWUsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFO0NBQzFDLENBQUM7QUFFRjs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLFdBQVcsQ0FBQyxDQUFNO0lBQ2hDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxFQUFFO1FBQUUsT0FBTyxFQUFFLENBQUM7S0FBRTtJQUNuRCxJQUFJLGVBQWUsQ0FBQyxDQUFDLENBQUMsRUFBRTtRQUFFLE9BQU8sVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUFFO0lBQy9ELE9BQU8sVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRTtRQUMzQixNQUFN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QUM5RTtJQUFDLE1BQU07UUFDTixPQUFPLEVBQUUsQ0FBQztLQUNYO0FBQ0gsQ0FBQztBQUVEOzs7R0FHRztBQUNILFNBQVMsZUFBZSxDQUFDLENBQU07SUFDN0IsT0FBTyxDQUFDLEVBQUUsUUFBUSxLQUFLLE9BQU8sQ0FBQztBQUNqQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSwgbWFwIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEdsb2JhbFN0YXRlU2VydmljZSB9IGZyb20gJ3RhbmdvLWFwcC11aS1nbG9iYWwnO1xyXG5cclxuLyoqXHJcbiAqIFdoYXQgdGhlIHNpZ25lZC1pbiB1c2VyIG1heSBkbyBpbiB0aGUgQXVkaXQgbWVudSwgZnJvbSBNYW5hZ2UgVXNlcnMgLT4gVGFuZ28gVHJheDogQXVkaXQgKGF1ZGl0cykgYW5kIFNjaGVkdWxlc1xyXG4gKiAoTWFuYWdlIC0+IFNjaGVkdWxlcyksIHRoZSBzYW1lIHBlcm1pc3Npb25zIHRoZSAvdHJheC9hdWRpdC8qIHJvdXRlcyBjaGVjay4gQSB1c2VyIHNhdmVkIGJlZm9yZSB0aG9zZSB0d28gcm93c1xyXG4gKiBleGlzdGVkIGhhcyBuZWl0aGVyLCBzbyBDaGVja2xpc3QgZGVjaWRlcyBmb3IgdGhlbSwgYXMgaXQgZGlkIGJlZm9yZSAoYW5kIGFzIHRoZSBBUEkgZmFsbHMgYmFjaykuXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIEF1ZGl0QWNjZXNzIHtcclxuICAvKiogVGhlIHNpZ25lZC1pbiB1c2VyJ3MgcGVybWlzc2lvbnMgaGF2ZSBhcnJpdmVkIChncy51c2VyQWNjZXNzIHN0YXJ0cyBudWxsKTogdmlldyBjaGVja3Mgb25seSBhY3QgYWZ0ZXIgdGhpcy4gKi9cclxuICBsb2FkZWQ/OiBib29sZWFuO1xyXG4gIC8qKiBUYW5nb1RyYXgvQXVkaXQgYWRkIG9yIGVkaXQ6IHRoZSBBdWRpdCBtZW51IGlzIHNob3duIGFuZCBvcGVucyAoc2lkZWJhciBUYW5nbyBUcmF4IC0+IEF1ZGl0KS4gKi9cclxuICBjYW5WaWV3PzogYm9vbGVhbjtcclxuICAvKiogVGFuZ29UcmF4L1NjaGVkdWxlcyBhZGQgb3IgZWRpdDogTWFuYWdlIC0+IFNjaGVkdWxlIEluZm8gaXMgc2hvd24uICovXHJcbiAgY2FuVmlld1NjaGVkdWxlPzogYm9vbGVhbjtcclxuICAvKiogVGFuZ29UcmF4L0F1ZGl0IGFkZCAoZWxzZSBDaGVja2xpc3QpOiBjcmVhdGUgLyBkdXBsaWNhdGUgYXVkaXRzLiAqL1xyXG4gIGNhbkFkZDogYm9vbGVhbjtcclxuICAvKiogVGFuZ29UcmF4L0F1ZGl0IGVkaXQgKGVsc2UgQ2hlY2tsaXN0KTogZWRpdCwgY29uZmlndXJlLCBwdWJsaXNoLCBkZWxldGUsIGFwcHJvdmUsIHJldmlldy4gKi9cclxuICBjYW5FZGl0OiBib29sZWFuO1xyXG4gIC8qKiBUYW5nb1RyYXgvU2NoZWR1bGVzIGFkZCAoZWxzZSBDaGVja2xpc3QpOiBDcmVhdGUgc2NoZWR1bGUsIFNjaGVkdWxlLCBEdXBsaWNhdGUgc2NoZWR1bGUuICovXHJcbiAgY2FuQWRkU2NoZWR1bGU/OiBib29sZWFuO1xyXG4gIC8qKiBUYW5nb1RyYXgvU2NoZWR1bGVzIGVkaXQgKGVsc2UgQ2hlY2tsaXN0KTogZWRpdCwgcHVibGlzaCwgZGVsZXRlIHNjaGVkdWxlcy4gKi9cclxuICBjYW5FZGl0U2NoZWR1bGU/OiBib29sZWFuO1xyXG4gIC8qKiBUYW5nb1RyYXgvdGFzayBhZGQ6IE1hbmFnZSAtPiBUYXNrIFwiQ3JlYXRlIFRhc2tcIiAodjEgbWFuYWdlLXRhc2spLiAqL1xyXG4gIGNhbkFkZFRhc2s/OiBib29sZWFuO1xyXG4gIC8qKiBUYW5nb1RyYXgvdGFzayBlZGl0OiB0YXNrIHZpZXcgLyBjb25maWd1cmUgLyBkdXBsaWNhdGUgLyBkZWxldGUgLyBwdWJsaXNoICh2MSBtYW5hZ2UtdGFzayksIENyZWF0ZSBUYXNrIGZyb21cclxuICAgKiAgYSBzdWJtaXR0ZWQgYW5zd2VyIGFuZCBSZWRvIG9mIGEgdGFzaydzIHF1ZXN0aW9uICh2MSBnYWxsZXJ5KS4gKi9cclxuICBjYW5FZGl0VGFzaz86IGJvb2xlYW47XHJcbiAgLyoqIEEgVGFuZ28gKGludGVybmFsKSB1c2VyOiB0aGUgdjEgZ2FsbGVyeSdzIFJlZG8gLyBDcmVhdGUgVGFzayBhcmUgZm9yIGNsaWVudCB1c2VycyBvbmx5LiAqL1xyXG4gIGlzVGFuZ28/OiBib29sZWFuO1xyXG4gIC8qKiBBdWRpdCB0YWIgcGF0aHMgKCdhY3Rpb25jZW50ZXInLCAnZGFzaGJvYXJkJywgLi4uKSB0aGUgdXNlciBtYXkgb3BlbiwgaW4gbWVudSBvcmRlciAoc2VlIGF1ZGl0VGFic09uKS4gKi9cclxuICB0YWJzPzogc3RyaW5nW107XHJcbn1cclxuXHJcbi8qKiBUaGUgQXVkaXQgbWVudSB0YWJzOiByb3V0ZSBwYXRoIHVuZGVyIC9tYW5hZ2UvdHJheC9hdWRpdC12MiBhbmQgdGhlIE1hbmFnZSBVc2VycyByb3cgKFRhbmdvVHJheF88a2V5Pl8qKS4gKi9cclxuZXhwb3J0IGNvbnN0IEFVRElUX1RBQlM6IEFycmF5PHsga2V5OiBzdHJpbmc7IHBhdGg6IHN0cmluZyB9PiA9IFtcclxuICB7IGtleTogJ0F1ZGl0X0FjdGlvbkNlbnRlcicsIHBhdGg6ICdhY3Rpb25jZW50ZXInIH0sXHJcbiAgeyBrZXk6ICdBdWRpdF9EYXNoYm9hcmQnLCBwYXRoOiAnZGFzaGJvYXJkJyB9LFxyXG4gIHsga2V5OiAnQXVkaXRfRmxhZ3MnLCBwYXRoOiAnZmxhZ3MnIH0sXHJcbiAgeyBrZXk6ICdBdWRpdF9HYWxsZXJ5JywgcGF0aDogJ2dhbGxlcnknIH0sXHJcbiAgeyBrZXk6ICdBdWRpdF9NYW5hZ2UnLCBwYXRoOiAnbWFuYWdlJyB9LFxyXG4gIHsga2V5OiAnQXVkaXRfUmVwb3J0cycsIHBhdGg6ICdyZXBvcnRzJyB9XHJcbl07XHJcblxyXG4vKipcclxuICogQXVkaXQgdGFicyB0aGUgdXNlciBtYXkgb3BlbiwgZnJvbSBNYW5hZ2UgVXNlcnMg4oC6IFRhbmdvIFRyYXgg4oC6IEF1ZGl0J3MgdGFiIHJvd3MgKFRhbmdvVHJheF9BdWRpdF88VGFiPl9pc0FkZCAvXHJcbiAqIF9pc0VkaXQ7IEFkZCBvciBFZGl0IHNob3dzIHRoZSB0YWIpLiBBIFRhbmdvIHVzZXIgc2VlcyBldmVyeSB0YWI7IGEgdXNlciBzYXZlZCBiZWZvcmUgdGhlIHRhYiByb3dzIGV4aXN0ZWQgKG5vIHRhYlxyXG4gKiBrZXlzKSBrZWVwcyBldmVyeSB0YWIgd2hpbGUgQXVkaXQgaXMgb24uIFNhbWUgcnVsZSBhcyB0aGUgaGVhZGVyIHRhYnMgKHRhbmdvLWFwcC1zaGFyZWQgYXVkaXQtdGFiLWFjY2Vzcy50cykuXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gYXVkaXRUYWJzT24ocDogYW55KTogc3RyaW5nW10ge1xyXG4gIGlmICghcCB8fCAhdHJheE1vZHVsZU9uKHAsICdBdWRpdCcpKSB7IHJldHVybiBbXTsgfVxyXG4gIGlmIChmdWxsQXVkaXRBY2Nlc3MocCkpIHsgcmV0dXJuIEFVRElUX1RBQlMubWFwKHQgPT4gdC5wYXRoKTsgfVxyXG4gIHJldHVybiBBVURJVF9UQUJTLmZpbHRlcih0ID0+IHtcclxuICAgIGNvbnN0IGFkZCA9IHBbJ1RhbmdvVHJheF8nICsgdC5rZXkgKyAnX2lzQWRkJ107XHJcbiAgICBjb25zdCBlZGl0ID0gcFsnVGFuZ29UcmF4XycgKyB0LmtleSArICdfaXNFZGl0J107XHJcbiAgICByZXR1cm4gYWRkID09PSB1bmRlZmluZWQgJiYgZWRpdCA9PT0gdW5kZWZpbmVkID8gdHJ1ZSA6ICEhYWRkIHx8ICEhZWRpdDtcclxuICB9KS5tYXAodCA9PiB0LnBhdGgpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gYXVkaXRBY2Nlc3MoZ3M6IEdsb2JhbFN0YXRlU2VydmljZSk6IE9ic2VydmFibGU8QXVkaXRBY2Nlc3M+IHtcclxuICByZXR1cm4gZ3MudXNlckFjY2Vzcy5waXBlKG1hcCgocDogYW55KSA9PiAoe1xyXG4gICAgbG9hZGVkOiAhIXAsXHJcbiAgICBjYW5WaWV3OiB0cmF4TW9kdWxlT24ocCwgJ0F1ZGl0JyksXHJcbiAgICBjYW5WaWV3U2NoZWR1bGU6IHRyYXhNb2R1bGVPbihwLCAnU2NoZWR1bGVzJyksXHJcbiAgICBjYW5BZGQ6ICEhKHA/LlRhbmdvVHJheF9BdWRpdF9pc0FkZCA/PyBwPy5UYW5nb1RyYXhfY2hlY2tsaXN0X2lzQWRkKSxcclxuICAgIGNhbkVkaXQ6ICEhKHA/LlRhbmdvVHJheF9BdWRpdF9pc0VkaXQgPz8gcD8uVGFuZ29UcmF4X2NoZWNrbGlzdF9pc0VkaXQpLFxyXG4gICAgY2FuQWRkU2NoZWR1bGU6ICEhKHA/LlRhbmdvVHJheF9TY2hlZHVsZXNfaXNBZGQgPz8gcD8uVGFuZ29UcmF4X2NoZWNrbGlzdF9pc0FkZCksXHJcbiAgICBjYW5FZGl0U2NoZWR1bGU6ICEhKHA/LlRhbmdvVHJheF9TY2hlZHVsZXNfaXNFZGl0ID8/IHA/LlRhbmdvVHJheF9jaGVja2xpc3RfaXNFZGl0KSxcclxuICAgIGNhbkFkZFRhc2s6ICEhcD8uVGFuZ29UcmF4X1Rhc2tfaXNBZGQsXHJcbiAgICBjYW5FZGl0VGFzazogISFwPy5UYW5nb1RyYXhfVGFza19pc0VkaXQsXHJcbiAgICBpc1RhbmdvOiAocD8udXNlclR5cGUgfHwgc3RvcmVkVXNlclR5cGUoKSkgPT09ICd0YW5nbycsXHJcbiAgICB0YWJzOiBhdWRpdFRhYnNPbihwKSxcclxuICB9KSkpO1xyXG59XHJcblxyXG4vKipcclxuICogV2hldGhlciB0aGUgQXVkaXQgbWVudSAvIFNjaGVkdWxlIEluZm8gaXMgc2hvd24uIEEgVGFuZ28gdXNlciBhbHdheXMgc2VlcyBib3RoLiBBIGNsaWVudCB1c2VyIChzdXBlcmFkbWluIGluY2x1ZGVkKSBzZWVzIGFcclxuICogbW9kdWxlIHdoZW4gaXRzIEFkZCBvciBFZGl0IGtleSBpcyB0cnVlIChUYW5nb1RyYXhfPG1vZHVsZT5faXNBZGQgLyBfaXNFZGl0LCBmcm9tIE1hbmFnZSBVc2Vycyk7IHdpdGhvdXQgdGhvc2Uga2V5c1xyXG4gKiAoYSB1c2VyIHNhdmVkIGJlZm9yZSB0aGUgQXVkaXQgLyBTY2hlZHVsZXMgcm93cywgb24gYW4gQVBJIHRoYXQgZG9lcyBub3QgZmlsbCB0aGVtIGluIHlldCkgdGhlIENoZWNrbGlzdCBrZXlzIGRlY2lkZS5cclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiB0cmF4TW9kdWxlT24ocDogYW55LCBtb2R1bGU6ICdBdWRpdCcgfCAnU2NoZWR1bGVzJyk6IGJvb2xlYW4ge1xyXG4gIGlmICghcCkgeyByZXR1cm4gZmFsc2U7IH1cclxuICBpZiAoZnVsbEF1ZGl0QWNjZXNzKHApKSB7IHJldHVybiB0cnVlOyB9XHJcbiAgY29uc3QgYWRkID0gcFsnVGFuZ29UcmF4XycgKyBtb2R1bGUgKyAnX2lzQWRkJ107XHJcbiAgY29uc3QgZWRpdCA9IHBbJ1RhbmdvVHJheF8nICsgbW9kdWxlICsgJ19pc0VkaXQnXTtcclxuICBpZiAoYWRkICE9PSB1bmRlZmluZWQgfHwgZWRpdCAhPT0gdW5kZWZpbmVkKSB7IHJldHVybiAhIWFkZCB8fCAhIWVkaXQ7IH1cclxuICBjb25zdCBjQWRkID0gcC5UYW5nb1RyYXhfY2hlY2tsaXN0X2lzQWRkO1xyXG4gIGNvbnN0IGNFZGl0ID0gcC5UYW5nb1RyYXhfY2hlY2tsaXN0X2lzRWRpdDtcclxuICByZXR1cm4gISFjQWRkIHx8ICEhY0VkaXQ7XHJcbn1cclxuXHJcbi8qKiB1c2VyVHlwZSBvZiB0aGUgc2lnbmVkLWluIHVzZXIgKGxvY2FsU3RvcmFnZSB1c2VyLWluZm8sIGFzIHRoZSBxdWVzdGlvbiBlZGl0b3IgcmVhZHMgaXQpOyAnJyB3aGVuIHVua25vd24uICovXHJcbmZ1bmN0aW9uIHN0b3JlZFVzZXJUeXBlKCk6IHN0cmluZyB7XHJcbiAgdHJ5IHtcclxuICAgIHJldHVybiBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCd1c2VyLWluZm8nKSB8fCAne30nKT8udXNlclR5cGUgfHwgJyc7XHJcbiAgfSBjYXRjaCB7XHJcbiAgICByZXR1cm4gJyc7XHJcbiAgfVxyXG59XHJcblxyXG4vKipcclxuICogVXNlcnMgd2hvIGFsd2F5cyBnZXQgdGhlIHdob2xlIEF1ZGl0IG1lbnU6IFRhbmdvIChpbnRlcm5hbCkgdXNlcnMgb25seS4gRXZlcnkgY2xpZW50IHVzZXIsIHN1cGVyYWRtaW4gaW5jbHVkZWQsXHJcbiAqIGZvbGxvd3MgdGhlaXIgQXVkaXQgcm93cy5cclxuICovXHJcbmZ1bmN0aW9uIGZ1bGxBdWRpdEFjY2VzcyhwOiBhbnkpOiBib29sZWFuIHtcclxuICByZXR1cm4gcD8udXNlclR5cGUgPT09ICd0YW5nbyc7XHJcbn1cclxuIl19