@hmcts/ccd-case-ui-toolkit 7.2.41-3044-javascript-void-removal → 7.2.41-remove-ld-feature-flags

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 (78) hide show
  1. package/esm2022/lib/app.config.mjs +1 -5
  2. package/esm2022/lib/components/banners/notification-banner/notification-banner.component.mjs +4 -4
  3. package/esm2022/lib/components/header/header-bar/header-bar.component.mjs +5 -5
  4. package/esm2022/lib/shared/components/case-editor/case-edit/case-edit.component.mjs +3 -3
  5. package/esm2022/lib/shared/components/case-editor/case-edit-page/case-edit-page.component.mjs +5 -5
  6. package/esm2022/lib/shared/components/case-editor/case-edit-submit/case-edit-submit.component.mjs +5 -5
  7. package/esm2022/lib/shared/components/case-editor/case-event-completion/components/case-event-completion-task-cancelled/case-event-completion-task-cancelled.component.mjs +5 -9
  8. package/esm2022/lib/shared/components/case-editor/case-event-completion/components/case-event-completion-task-reassigned/case-event-completion-task-reassigned.component.mjs +5 -9
  9. package/esm2022/lib/shared/components/case-timeline/case-timeline.component.mjs +4 -4
  10. package/esm2022/lib/shared/components/case-viewer/case-basic-access-view/case-basic-access-view.component.mjs +4 -4
  11. package/esm2022/lib/shared/components/case-viewer/case-challenged-access-request/case-challenged-access-request.component.mjs +4 -4
  12. package/esm2022/lib/shared/components/case-viewer/case-challenged-access-success/case-challenged-access-success.component.mjs +4 -9
  13. package/esm2022/lib/shared/components/case-viewer/case-event-trigger/case-event-trigger.component.mjs +3 -16
  14. package/esm2022/lib/shared/components/case-viewer/case-full-access-view/case-full-access-view.component.mjs +8 -15
  15. package/esm2022/lib/shared/components/case-viewer/case-review-specific-access-reject/case-review-specific-access-reject.component.mjs +9 -13
  16. package/esm2022/lib/shared/components/case-viewer/case-review-specific-access-request/case-review-specific-access-request.component.mjs +4 -4
  17. package/esm2022/lib/shared/components/case-viewer/case-specific-access-request/case-specific-access-request.component.mjs +4 -4
  18. package/esm2022/lib/shared/components/case-viewer/case-viewer.component.mjs +9 -10
  19. package/esm2022/lib/shared/components/case-viewer/services/event-trigger.resolver.mjs +2 -4
  20. package/esm2022/lib/shared/components/event-start/components/multiple-tasks-exist/multiple-tasks-exist.component.mjs +5 -9
  21. package/esm2022/lib/shared/components/event-start/components/no-tasks-available/no-tasks-available.component.mjs +5 -9
  22. package/esm2022/lib/shared/components/event-start/components/task-assigned/task-assigned.component.mjs +6 -10
  23. package/esm2022/lib/shared/components/event-start/components/task-conflict/task-conflict.component.mjs +3 -3
  24. package/esm2022/lib/shared/components/event-start/components/task-unassigned/task-unassigned.component.mjs +5 -9
  25. package/esm2022/lib/shared/components/event-start/event-guard/event-start.guard.mjs +3 -3
  26. package/esm2022/lib/shared/components/event-start/services/event-start-state-machine.service.mjs +6 -6
  27. package/esm2022/lib/shared/components/palette/address/write-address-field.component.mjs +4 -4
  28. package/esm2022/lib/shared/components/palette/case-file-view/case-file-view-field.component.mjs +4 -4
  29. package/esm2022/lib/shared/components/palette/case-file-view/components/case-file-view-folder-selector/case-file-view-folder-selector.component.mjs +4 -4
  30. package/esm2022/lib/shared/components/palette/case-flag/components/case-flag-summary-list/case-flag-summary-list.component.mjs +9 -9
  31. package/esm2022/lib/shared/components/palette/complex/read-complex-field-collection-table.component.mjs +4 -5
  32. package/esm2022/lib/shared/components/palette/document/read-document-field.component.mjs +7 -7
  33. package/esm2022/lib/shared/components/palette/linked-cases/components/before-you-start/before-you-start.component.mjs +6 -6
  34. package/esm2022/lib/shared/components/palette/linked-cases/components/check-your-answers/check-your-answers.component.mjs +5 -5
  35. package/esm2022/lib/shared/components/palette/linked-cases/components/linked-cases-table/linked-cases-from-table.component.mjs +12 -12
  36. package/esm2022/lib/shared/components/palette/linked-cases/components/linked-cases-table/linked-cases-to-table.component.mjs +7 -7
  37. package/esm2022/lib/shared/components/palette/linked-cases/components/no-linked-cases/no-linked-cases.component.mjs +6 -6
  38. package/esm2022/lib/shared/components/palette/linked-cases/read-linked-cases-field.component.mjs +7 -7
  39. package/esm2022/lib/shared/components/palette/organisation/write-organisation-field.component.mjs +5 -5
  40. package/esm2022/lib/shared/components/palette/query-management/components/qualifying-questions/qualifying-question-options/qualifying-question-options.component.mjs +2 -6
  41. package/esm2022/lib/shared/components/palette/query-management/components/query-check-your-answers/query-check-your-answers.component.mjs +69 -71
  42. package/esm2022/lib/shared/components/palette/query-management/components/query-confirmation/query-confirmation.component.mjs +19 -23
  43. package/esm2022/lib/shared/components/palette/query-management/components/query-details/query-details.component.mjs +5 -5
  44. package/esm2022/lib/shared/components/palette/query-management/components/query-list/query-list.component.mjs +5 -5
  45. package/esm2022/lib/shared/components/search-result/search-result.component.mjs +5 -5
  46. package/fesm2022/hmcts-ccd-case-ui-toolkit.mjs +399 -470
  47. package/fesm2022/hmcts-ccd-case-ui-toolkit.mjs.map +1 -1
  48. package/lib/app.config.d.ts +0 -2
  49. package/lib/app.config.d.ts.map +1 -1
  50. package/lib/shared/components/case-editor/case-event-completion/components/case-event-completion-task-cancelled/case-event-completion-task-cancelled.component.d.ts +0 -2
  51. package/lib/shared/components/case-editor/case-event-completion/components/case-event-completion-task-cancelled/case-event-completion-task-cancelled.component.d.ts.map +1 -1
  52. package/lib/shared/components/case-editor/case-event-completion/components/case-event-completion-task-reassigned/case-event-completion-task-reassigned.component.d.ts +0 -2
  53. package/lib/shared/components/case-editor/case-event-completion/components/case-event-completion-task-reassigned/case-event-completion-task-reassigned.component.d.ts.map +1 -1
  54. package/lib/shared/components/case-viewer/case-challenged-access-success/case-challenged-access-success.component.d.ts +0 -2
  55. package/lib/shared/components/case-viewer/case-challenged-access-success/case-challenged-access-success.component.d.ts.map +1 -1
  56. package/lib/shared/components/case-viewer/case-event-trigger/case-event-trigger.component.d.ts +0 -1
  57. package/lib/shared/components/case-viewer/case-event-trigger/case-event-trigger.component.d.ts.map +1 -1
  58. package/lib/shared/components/case-viewer/case-full-access-view/case-full-access-view.component.d.ts.map +1 -1
  59. package/lib/shared/components/case-viewer/case-review-specific-access-reject/case-review-specific-access-reject.component.d.ts +0 -2
  60. package/lib/shared/components/case-viewer/case-review-specific-access-reject/case-review-specific-access-reject.component.d.ts.map +1 -1
  61. package/lib/shared/components/case-viewer/case-viewer.component.d.ts.map +1 -1
  62. package/lib/shared/components/case-viewer/services/event-trigger.resolver.d.ts.map +1 -1
  63. package/lib/shared/components/event-start/components/multiple-tasks-exist/multiple-tasks-exist.component.d.ts +0 -2
  64. package/lib/shared/components/event-start/components/multiple-tasks-exist/multiple-tasks-exist.component.d.ts.map +1 -1
  65. package/lib/shared/components/event-start/components/no-tasks-available/no-tasks-available.component.d.ts +0 -2
  66. package/lib/shared/components/event-start/components/no-tasks-available/no-tasks-available.component.d.ts.map +1 -1
  67. package/lib/shared/components/event-start/components/task-assigned/task-assigned.component.d.ts +0 -2
  68. package/lib/shared/components/event-start/components/task-assigned/task-assigned.component.d.ts.map +1 -1
  69. package/lib/shared/components/event-start/components/task-unassigned/task-unassigned.component.d.ts +0 -2
  70. package/lib/shared/components/event-start/components/task-unassigned/task-unassigned.component.d.ts.map +1 -1
  71. package/lib/shared/components/event-start/event-guard/event-start.guard.d.ts +2 -2
  72. package/lib/shared/components/event-start/event-guard/event-start.guard.d.ts.map +1 -1
  73. package/lib/shared/components/event-start/services/event-start-state-machine.service.d.ts.map +1 -1
  74. package/lib/shared/components/palette/query-management/components/qualifying-questions/qualifying-question-options/qualifying-question-options.component.d.ts +0 -2
  75. package/lib/shared/components/palette/query-management/components/qualifying-questions/qualifying-question-options/qualifying-question-options.component.d.ts.map +1 -1
  76. package/lib/shared/components/palette/query-management/components/query-confirmation/query-confirmation.component.d.ts +0 -2
  77. package/lib/shared/components/palette/query-management/components/query-confirmation/query-confirmation.component.d.ts.map +1 -1
  78. package/package.json +1 -1
@@ -492,7 +492,7 @@ export class CaseFullAccessViewComponent {
492
492
  }
493
493
  // found tasks or hearing tab
494
494
  if (foundTab) {
495
- this.router.navigate(['cases', 'case-details', this.caseDetails.case_type.jurisdiction.id, this.caseDetails.case_type.id, this.caseDetails.case_id, foundTab.id]).then(() => {
495
+ this.router.navigate(['cases', 'case-details', this.caseDetails.case_id, foundTab.id]).then(() => {
496
496
  matTab = this.tabGroup._tabs.find((x) => x.textLabel === foundTab.label);
497
497
  // Update selectedIndex only if matTab.position is a non-zero number (positive or negative); this means the
498
498
  // matTab is not already selected (position is relative; positive = right, negative = left) or it would be 0
@@ -507,7 +507,7 @@ export class CaseFullAccessViewComponent {
507
507
  this.caseDetails.tabs.sort((aTab, bTab) => aTab.order > bTab.order ? 1 : (bTab.order > aTab.order ? -1 : 0));
508
508
  // select the first tab checking if the tab is visible
509
509
  const preSelectTab = this.findPreSelectedActiveTab();
510
- this.router.navigate(['cases', 'case-details', this.caseDetails.case_type.jurisdiction.id, this.caseDetails.case_type.id, this.caseDetails.case_id], { fragment: preSelectTab.label }).then(() => {
510
+ this.router.navigate(['cases', 'case-details', this.caseDetails.case_id], { fragment: preSelectTab.label }).then(() => {
511
511
  matTab = this.tabGroup._tabs.find((x) => x.textLabel === preSelectTab.label);
512
512
  // Update selectedIndex only if matTab.position is a non-zero number (positive or negative); this means the
513
513
  // matTab is not already selected (position is relative; positive = right, negative = left) or it would be 0
@@ -554,21 +554,14 @@ export class CaseFullAccessViewComponent {
554
554
  // Hack to get ID from tab as it's not easily achieved through Angular Material Tabs
555
555
  const tab = matTab['_viewContainerRef'];
556
556
  const id = tab.element.nativeElement.id;
557
- // cases/case-details/:jurisdiction/:caseType/:caseId/hearings
558
- // cases/case-details/:jurisdiction/:caseType/:caseId/roles-and-access
559
- this.router.navigate([
560
- 'cases',
561
- 'case-details',
562
- this.caseDetails.case_type.jurisdiction.id,
563
- this.caseDetails.case_type.id,
564
- this.caseDetails.case_id,
565
- id
566
- ], { relativeTo: this.route.root });
557
+ // cases/case-details/:caseId/hearings
558
+ // cases/case-details/:caseId/roles-and-access
559
+ this.router.navigate([id], { relativeTo: this.route });
567
560
  }
568
561
  else {
569
562
  // Routing here is based on tab label, not ideal
570
- // cases/case-details/:jurisdiction/:caseType/:caseId#tabLabel
571
- this.router.navigate(['cases', 'case-details', this.caseDetails.case_type.jurisdiction.id, this.caseDetails.case_type.id, this.caseDetails.case_id], { fragment: tabLabel });
563
+ // cases/case-details/:caseId#tabLabel
564
+ this.router.navigate(['cases', 'case-details', this.caseDetails.case_id], { fragment: tabLabel });
572
565
  }
573
566
  }
574
567
  onLinkClicked(triggerOutputEventText) {
@@ -729,4 +722,4 @@ export class CaseFullAccessViewComponent {
729
722
  args: ['tabGroup', { static: false }]
730
723
  }] }); })();
731
724
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(CaseFullAccessViewComponent, { className: "CaseFullAccessViewComponent", filePath: "lib/shared/components/case-viewer/case-full-access-view/case-full-access-view.component.ts", lineNumber: 46 }); })();
732
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS1mdWxsLWFjY2Vzcy12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9jYXNlLXZpZXdlci9jYXNlLWZ1bGwtYWNjZXNzLXZpZXcvY2FzZS1mdWxsLWFjY2Vzcy12aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9jYXNlLXZpZXdlci9jYXNlLWZ1bGwtYWNjZXNzLXZpZXcvY2FzZS1mdWxsLWFjY2Vzcy12aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQ0wsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQzVCLFNBQVMsRUFDekIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsZUFBZSxJQUFJLFNBQVMsRUFBNEMsTUFBTSxpQ0FBaUMsQ0FBQztBQUN6SCxPQUFPLEVBQTBCLGlCQUFpQixJQUFJLFdBQVcsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3pHLE9BQU8sRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFVLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV2RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEMs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RCxlQUFzQjtZQUF0QiwyQ0FBc0I7OztpRkRaNUIsMkJBQTJCO2NBTHZDLFNBQVM7MkJBQ0UsMkJBQTJCOzRqQkFZckIsUUFBUTtrQkFBdkIsS0FBSztZQUNVLGdCQUFnQjtrQkFBL0IsS0FBSztZQUNVLFdBQVc7a0JBQTFCLEtBQUs7WUFDVSxhQUFhO2tCQUE1QixLQUFLO1lBQ1UsWUFBWTtrQkFBM0IsS0FBSztZQTJCMkMsUUFBUTtrQkFBeEQsU0FBUzttQkFBQyxVQUFVLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFOztrRkF2QzdCLDJCQUEyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExvY2F0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIElucHV0LCBOZ1pvbmUsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBPbkluaXQsXG4gIFNpbXBsZUNoYW5nZXMsIFZpZXdDaGlsZCwgVmlld0NvbnRhaW5lclJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRMZWdhY3lEaWFsb2cgYXMgTWF0RGlhbG9nLCBNYXRMZWdhY3lEaWFsb2dDb25maWcgYXMgTWF0RGlhbG9nQ29uZmlnIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbGVnYWN5LWRpYWxvZyc7XG5pbXBvcnQgeyBNYXRMZWdhY3lUYWIgYXMgTWF0VGFiLCBNYXRMZWdhY3lUYWJHcm91cCBhcyBNYXRUYWJHcm91cCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2xlZ2FjeS10YWJzJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBOYXZpZ2F0aW9uRW5kLCBQYXJhbXMsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBwbGFpblRvQ2xhc3MgfSBmcm9tICdjbGFzcy10cmFuc2Zvcm1lcic7XG5pbXBvcnQgeyBScHhUcmFuc2xhdGVQaXBlIH0gZnJvbSAncnB4LXh1aS10cmFuc2xhdGlvbic7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7XG4gIE5vdGlmaWNhdGlvbkJhbm5lckNvbmZpZyxcbiAgTm90aWZpY2F0aW9uQmFubmVySGVhZGVyQ2xhc3MsXG4gIE5vdGlmaWNhdGlvbkJhbm5lclR5cGVcbn0gZnJvbSAnLi4vLi4vLi4vLi4vY29tcG9uZW50cy9iYW5uZXJzL25vdGlmaWNhdGlvbi1iYW5uZXInO1xuaW1wb3J0IHsgU2hvd0NvbmRpdGlvbiB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZXMnO1xuaW1wb3J0IHsgQWN0aXZpdHksIENhc2VGaWVsZCwgQ2FzZVRhYiwgQ2FzZVZpZXcsIENhc2VWaWV3VHJpZ2dlciwgRFJBRlRfUVVFUllfUEFSQU0sIERpc3BsYXlNb2RlLCBEcmFmdCB9IGZyb20gJy4uLy4uLy4uL2RvbWFpbic7XG5pbXBvcnQgeyBDYXNlVmlld0V2ZW50SWRzIH0gZnJvbSAnLi4vLi4vLi4vZG9tYWluL2Nhc2Utdmlldy9jYXNlLXZpZXctZXZlbnQtaWRzLmVudW0nO1xuaW1wb3J0IHtcbiAgQWN0aXZpdHlQb2xsaW5nU2VydmljZSxcbiAgQWxlcnRTZXJ2aWNlLFxuICBEcmFmdFNlcnZpY2UsXG4gIEVycm9yTm90aWZpZXJTZXJ2aWNlLFxuICBGaWVsZHNVdGlscyxcbiAgTG9hZGluZ1NlcnZpY2UsXG4gIE5hdmlnYXRpb25Ob3RpZmllclNlcnZpY2UsXG4gIE5hdmlnYXRpb25PcmlnaW4sXG4gIE9yZGVyU2VydmljZSxcbiAgU2Vzc2lvblN0b3JhZ2VTZXJ2aWNlXG59IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzJztcbmltcG9ydCB7IENvbnZlcnRIcmVmVG9Sb3V0ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY2FzZS1lZGl0b3Ivc2VydmljZXMvY29udmVydC1ocmVmLXRvLXJvdXRlci5zZXJ2aWNlJztcbmltcG9ydCB7IERlbGV0ZU9yQ2FuY2VsRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vZGlhbG9ncyc7XG5pbXBvcnQgeyBDYWxsYmFja0Vycm9yc0NvbnRleHQgfSBmcm9tICcuLi8uLi9lcnJvcic7XG5pbXBvcnQgeyBpbml0RGlhbG9nIH0gZnJvbSAnLi4vLi4vaGVscGVycyc7XG5pbXBvcnQgeyBMaW5rZWRDYXNlc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9wYWxldHRlL2xpbmtlZC1jYXNlcy9zZXJ2aWNlcyc7XG5pbXBvcnQgeyBDYXNlRmxhZ1N0YXRlU2VydmljZSB9IGZyb20gJy4uLy4uL2Nhc2UtZWRpdG9yL3NlcnZpY2VzL2Nhc2UtZmxhZy1zdGF0ZS5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY2NkLWNhc2UtZnVsbC1hY2Nlc3MtdmlldycsXG4gIHRlbXBsYXRlVXJsOiAnLi9jYXNlLWZ1bGwtYWNjZXNzLXZpZXcuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jYXNlLWZ1bGwtYWNjZXNzLXZpZXcuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBDYXNlRnVsbEFjY2Vzc1ZpZXdDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgT25DaGFuZ2VzIHtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBPUklHSU5fUVVFUllfUEFSQU0gPSAnb3JpZ2luJztcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBUUklHR0VSX1RFWFRfU1RBUlQgPSAnR28nO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFRSSUdHRVJfVEVYVF9DT05USU5VRSA9ICdJZ25vcmUgV2FybmluZyBhbmQgR28nO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFVOSUNPREVfU1BBQ0UgPSAnJTIwJztcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBFTVBUWV9TUEFDRSA9ICcgJztcbiAgcHJpdmF0ZSByZWFkb25seSBIRUFSSU5HU19UQUJfTEFCRUwgPSAnSGVhcmluZ3MnO1xuXG4gIEBJbnB1dCgpIHB1YmxpYyBoYXNQcmludCA9IHRydWU7XG4gIEBJbnB1dCgpIHB1YmxpYyBoYXNFdmVudFNlbGVjdG9yID0gdHJ1ZTtcbiAgQElucHV0KCkgcHVibGljIGNhc2VEZXRhaWxzOiBDYXNlVmlldztcbiAgQElucHV0KCkgcHVibGljIHByZXBlbmRlZFRhYnM6IENhc2VUYWJbXSA9IFtdO1xuICBASW5wdXQoKSBwdWJsaWMgYXBwZW5kZWRUYWJzOiBDYXNlVGFiW10gPSBbXTtcblxuICBwdWJsaWMgQkFOTkVSID0gRGlzcGxheU1vZGUuQkFOTkVSO1xuICBwdWJsaWMgc29ydGVkVGFiczogQ2FzZVRhYltdO1xuICBwdWJsaWMgY2FzZUZpZWxkczogQ2FzZUZpZWxkW107XG4gIHB1YmxpYyBmb3JtR3JvdXA6IEZvcm1Hcm91cDtcbiAgcHVibGljIGVycm9yOiBhbnk7XG4gIHB1YmxpYyB0cmlnZ2VyVGV4dFN0YXJ0ID0gQ2FzZUZ1bGxBY2Nlc3NWaWV3Q29tcG9uZW50LlRSSUdHRVJfVEVYVF9TVEFSVDtcbiAgcHVibGljIHRyaWdnZXJUZXh0SWdub3JlV2FybmluZ3MgPSBDYXNlRnVsbEFjY2Vzc1ZpZXdDb21wb25lbnQuVFJJR0dFUl9URVhUX0NPTlRJTlVFO1xuICBwdWJsaWMgdHJpZ2dlclRleHQ6IHN0cmluZyA9IENhc2VGdWxsQWNjZXNzVmlld0NvbXBvbmVudC5UUklHR0VSX1RFWFRfU1RBUlQ7XG4gIHB1YmxpYyBpZ25vcmVXYXJuaW5nID0gZmFsc2U7XG4gIHB1YmxpYyBhY3Rpdml0eVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBwdWJsaWMgY2FzZVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBwdWJsaWMgZXJyb3JTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgcHVibGljIGRpYWxvZ0NvbmZpZzogTWF0RGlhbG9nQ29uZmlnO1xuICBwdWJsaWMgbWVzc2FnZTogc3RyaW5nO1xuICBwdWJsaWMgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHB1YmxpYyBub3RpZmljYXRpb25CYW5uZXJDb25maWc6IE5vdGlmaWNhdGlvbkJhbm5lckNvbmZpZztcbiAgcHVibGljIHNlbGVjdGVkVGFiSW5kZXggPSAwO1xuICBwdWJsaWMgYWN0aXZlQ2FzZUZsYWdzID0gZmFsc2U7XG4gIHB1YmxpYyBjYXNlRmxhZ3NFeHRlcm5hbFVzZXIgPSBmYWxzZTtcbiAgcHJpdmF0ZSByZWFkb25seSBjYXNlRmxhZ3NSZWFkRXh0ZXJuYWxNb2RlID0gJyNBUkdVTUVOVChSRUFELEVYVEVSTkFMKSc7XG4gIHByaXZhdGUgc3ViczogU3Vic2NyaXB0aW9uW10gPSBbXTtcbiAgcHVibGljIGV2ZW50SWQ6IHN0cmluZztcbiAgcHVibGljIGlzRXZlbnRCdXR0b25DbGlja2VkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgcHVibGljIGNhbGxiYWNrRXJyb3JzU3ViamVjdDogICBPYnNlcnZhYmxlPGFueT47XG4gIEBWaWV3Q2hpbGQoJ3RhYkdyb3VwJywgeyBzdGF0aWM6IGZhbHNlIH0pIHB1YmxpYyB0YWJHcm91cDogTWF0VGFiR3JvdXA7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBuZ1pvbmU6IE5nWm9uZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbmF2aWdhdGlvbk5vdGlmaWVyU2VydmljZTogTmF2aWdhdGlvbk5vdGlmaWVyU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IG9yZGVyU2VydmljZTogT3JkZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgYWN0aXZpdHlQb2xsaW5nU2VydmljZTogQWN0aXZpdHlQb2xsaW5nU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRpYWxvZzogTWF0RGlhbG9nLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgYWxlcnRTZXJ2aWNlOiBBbGVydFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBkcmFmdFNlcnZpY2U6IERyYWZ0U2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGVycm9yTm90aWZpZXJTZXJ2aWNlOiBFcnJvck5vdGlmaWVyU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbnZlcnRIcmVmVG9Sb3V0ZXJTZXJ2aWNlOiBDb252ZXJ0SHJlZlRvUm91dGVyU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGxvY2F0aW9uOiBMb2NhdGlvbixcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNyZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSByZWFkb25seSBzZXNzaW9uU3RvcmFnZVNlcnZpY2U6IFNlc3Npb25TdG9yYWdlU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJweFRyYW5zbGF0aW9uUGlwZTogUnB4VHJhbnNsYXRlUGlwZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGxvYWRpbmdTZXJ2aWNlOiBMb2FkaW5nU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGxpbmtlZENhc2VzU2VydmljZTogTGlua2VkQ2FzZXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2FzZUZsYWdTdGF0ZVNlcnZpY2U6IENhc2VGbGFnU3RhdGVTZXJ2aWNlXG4gICkge1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuY2FsbGJhY2tFcnJvcnNTdWJqZWN0ID0gdGhpcy5lcnJvck5vdGlmaWVyU2VydmljZS5lcnJvclNvdXJjZS5waXBlKGZpbHRlcigoeCkgPT4ge1xuICAgICAgaWYgKHggJiYgeC5zdGF0dXMgIT09IDQwMSAmJiB4LnN0YXR1cyAhPT0gNDAzKSB7XG4gICAgICAgIHRoaXMuZXJyb3IgPSB4O1xuICAgICAgICB0aGlzLmlzRXZlbnRCdXR0b25DbGlja2VkID0gZmFsc2U7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0pKTtcbiAgICBcbiAgICBpbml0RGlhbG9nKCk7XG4gICAgdGhpcy5pbml0KCk7XG5cbiAgICB0aGlzLnNlc3Npb25TdG9yYWdlU2VydmljZT8ucmVtb3ZlSXRlbSgnZXZlbnRVcmwnKTtcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gdGhpcy5jb252ZXJ0SHJlZlRvUm91dGVyU2VydmljZT8uZ2V0SHJlZk1hcmtkb3duTGlua0NvbnRlbnQoKS5zdWJzY3JpYmUoKGhyZWZNYXJrZG93bkxpbmtDb250ZW50OiBzdHJpbmcpID0+IHtcbiAgICAgIC8vIGRvIG5vdCBjb252ZXJ0IHJvdXRlciB3aXRoIGluaXRpYWwgZGVmYXVsdCB2YWx1ZTsgY29udmVydCB0byByb3V0ZXIgb25seSBvbiB1cGRhdGVkIGxpbmsgY29udGVudFxuICAgICAgaWYgKGhyZWZNYXJrZG93bkxpbmtDb250ZW50ICE9PSAnRGVmYXVsdCcpIHtcbiAgICAgICAgdGhpcy5jb252ZXJ0SHJlZlRvUm91dGVyU2VydmljZS5jYWxsQW5ndWxhclJvdXRlcihocmVmTWFya2Rvd25MaW5rQ29udGVudCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAodGhpcy5hY3Rpdml0eVBvbGxpbmdTZXJ2aWNlLmlzRW5hYmxlZCAmJiAhdGhpcy5hY3Rpdml0eVN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICB0aGlzLmFjdGl2aXR5U3Vic2NyaXB0aW9uID0gdGhpcy5wb3N0Vmlld0FjdGl2aXR5KCkuc3Vic2NyaWJlKCk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLmNoZWNrUm91dGVBbmRTZXRDYXNlVmlld1RhYigpO1xuXG4gICAgLy8gQ2hlY2sgZm9yIGFjdGl2ZSBDYXNlIEZsYWdzXG4gICAgdGhpcy5hY3RpdmVDYXNlRmxhZ3MgPSB0aGlzLmhhc0FjdGl2ZUNhc2VGbGFncygpO1xuICAgIHRoaXMubGlua2VkQ2FzZXNTZXJ2aWNlLnJlc2V0TGlua2VkQ2FzZURhdGEoKTtcbiAgICB0aGlzLmNhc2VGbGFnU3RhdGVTZXJ2aWNlLnJlc2V0SW5pdGlhbENhc2VGbGFncygpO1xuICB9XG5cbiAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoY2hhbmdlcyAmJiBjaGFuZ2VzLnByZXBlbmRlZFRhYnMgJiYgIWNoYW5nZXMucHJlcGVuZGVkVGFicy5maXJzdENoYW5nZSkge1xuICAgICAgdGhpcy5pbml0KCk7XG4gICAgICB0aGlzLmNyZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB0aGlzLm9yZ2FuaXNlVGFiUG9zaXRpb24oKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaXNQcmludEVuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY2FzZURldGFpbHMuY2FzZV90eXBlLnByaW50RW5hYmxlZDtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5hY3Rpdml0eVBvbGxpbmdTZXJ2aWNlLmlzRW5hYmxlZCkge1xuICAgICAgdGhpcy51bnN1YnNjcmliZSh0aGlzLmFjdGl2aXR5U3Vic2NyaXB0aW9uKTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLnJvdXRlLnNuYXBzaG90LmRhdGEuY2FzZSkge1xuICAgICAgdGhpcy51bnN1YnNjcmliZSh0aGlzLmNhc2VTdWJzY3JpcHRpb24pO1xuICAgIH1cbiAgICB0aGlzLnVuc3Vic2NyaWJlKHRoaXMuY2FsbGJhY2tFcnJvcnNTdWJqZWN0KTtcbiAgICB0aGlzLnVuc3Vic2NyaWJlKHRoaXMuZXJyb3JTdWJzY3JpcHRpb24pO1xuICAgIHRoaXMudW5zdWJzY3JpYmUodGhpcy5zdWJzY3JpcHRpb24pO1xuICAgIHRoaXMuc3Vicy5mb3JFYWNoKHMgPT4gcy51bnN1YnNjcmliZSgpKTtcbiAgfVxuXG4gIHB1YmxpYyB1bnN1YnNjcmliZShzdWJzY3JpcHRpb246IGFueSkge1xuICAgIGlmIChzdWJzY3JpcHRpb24pIHtcbiAgICAgIHN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY2hlY2tSb3V0ZUFuZFNldENhc2VWaWV3VGFiKCk6IHZvaWQge1xuICAgIHRoaXMuc3Vicy5wdXNoKHRoaXMucm91dGVyLmV2ZW50c1xuICAgICAgLnBpcGUoZmlsdGVyKChldmVudCkgPT4gZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSlcbiAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBOYXZpZ2F0aW9uRW5kKSA9PiB7XG4gICAgICAgIGNvbnN0IHVybCA9IGV2ZW50ICYmIChldmVudCBhcyBhbnkpLnVybDtcbiAgICAgICAgaWYgKHVybCkge1xuICAgICAgICAgIGNvbnN0IHRhYlVybCA9IHVybCA/IHVybC5zcGxpdCgnIycpIDogbnVsbDtcbiAgICAgICAgICBjb25zdCB0YWIgPSB0YWJVcmwgJiYgdGFiVXJsLmxlbmd0aCA+IDEgPyB0YWJVcmxbdGFiVXJsLmxlbmd0aCAtIDFdLnJlcGxhY2VBbGwoJyUyMCcsICcgJykgOiAnJztcbiAgICAgICAgICBjb25zdCBtYXRUYWIgPSB0aGlzLnRhYkdyb3VwLl90YWJzLmZpbmQoKHgpID0+IHgudGV4dExhYmVsLnRvTG93ZXJDYXNlKCkgPT09IHRhYi50b0xvd2VyQ2FzZSgpKTtcbiAgICAgICAgICAvLyBVcGRhdGUgc2VsZWN0ZWRJbmRleCBvbmx5IGlmIG1hdFRhYi5wb3NpdGlvbiBpcyBhIG5vbi16ZXJvIG51bWJlciAocG9zaXRpdmUgb3IgbmVnYXRpdmUpOyB0aGlzIG1lYW5zIHRoZVxuICAgICAgICAgIC8vIG1hdFRhYiBpcyBub3QgYWxyZWFkeSBzZWxlY3RlZCAocG9zaXRpb24gaXMgcmVsYXRpdmU7IHBvc2l0aXZlID0gcmlnaHQsIG5lZ2F0aXZlID0gbGVmdCkgb3IgaXQgd291bGQgYmUgMFxuICAgICAgICAgIGlmIChtYXRUYWI/LnBvc2l0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLnRhYkdyb3VwLnNlbGVjdGVkSW5kZXggPSBtYXRUYWIucG9zaXRpb247XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KSk7XG4gIH1cblxuICBwdWJsaWMgcG9zdFZpZXdBY3Rpdml0eSgpOiBPYnNlcnZhYmxlPEFjdGl2aXR5W10+IHtcbiAgICByZXR1cm4gdGhpcy5hY3Rpdml0eVBvbGxpbmdTZXJ2aWNlLnBvc3RWaWV3QWN0aXZpdHkodGhpcy5jYXNlRGV0YWlscz8uY2FzZV9pZCk7XG4gIH1cblxuICBwdWJsaWMgY2xlYXJFcnJvcnNBbmRXYXJuaW5ncygpOiB2b2lkIHtcbiAgICB0aGlzLnJlc2V0RXJyb3JzKCk7XG4gICAgdGhpcy5pZ25vcmVXYXJuaW5nID0gZmFsc2U7XG4gICAgdGhpcy50cmlnZ2VyVGV4dCA9IENhc2VGdWxsQWNjZXNzVmlld0NvbXBvbmVudC5UUklHR0VSX1RFWFRfU1RBUlQ7XG4gICAgdGhpcy5pc0V2ZW50QnV0dG9uQ2xpY2tlZCA9IGZhbHNlO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGFwcGx5VHJpZ2dlcih0cmlnZ2VyOiBDYXNlVmlld1RyaWdnZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5pc0V2ZW50QnV0dG9uQ2xpY2tlZCl7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaXNFdmVudEJ1dHRvbkNsaWNrZWQgPSB0cnVlO1xuICAgIGNvbnN0IHNwaW5uZXIgPSB0aGlzLmxvYWRpbmdTZXJ2aWNlLnJlZ2lzdGVyKCk7XG4gICAgdGhpcy5sb2FkaW5nU2VydmljZS5hZGRTaGFyZWRTcGlubmVyKHNwaW5uZXIpO1xuICAgIHRoaXMuZXJyb3JOb3RpZmllclNlcnZpY2UuYW5ub3VuY2VFcnJvcihudWxsKTtcbiAgICBjb25zdCB0aGVRdWVyeVBhcmFtczogUGFyYW1zID0ge307XG5cbiAgICBpZiAodGhpcy5pZ25vcmVXYXJuaW5nKSB7XG4gICAgICB0aGVRdWVyeVBhcmFtc1snaWdub3JlV2FybmluZyddID0gdGhpcy5pZ25vcmVXYXJuaW5nO1xuICAgIH1cblxuICAgIC8vIHdlIG1heSBuZWVkIHRvIHRha2UgY2FyZSBvZiBkaWZmZXJlbnQgdHJpZ2dlcnMgaW4gdGhlIGZ1dHVyZVxuICAgIGlmICh0cmlnZ2VyLmlkID09PSBDYXNlVmlld0V2ZW50SWRzLlF1ZXJ5TWFuYWdlbWVudFJhaXNlUXVlcnkpIHtcbiAgICAgIGF3YWl0IHRoaXMucm91dGVyLm5hdmlnYXRlKFtgL3F1ZXJ5LW1hbmFnZW1lbnQvcXVlcnkvJHt0aGlzLmNhc2VEZXRhaWxzLmNhc2VfaWR9YF0pO1xuICAgICAgdGhpcy5sb2FkaW5nU2VydmljZS51bnJlZ2lzdGVyKHNwaW5uZXIpO1xuICAgIH0gZWxzZSBpZiAodHJpZ2dlci5pZCA9PT0gQ2FzZVZpZXdFdmVudElkcy5ERUxFVEUpIHtcbiAgICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oRGVsZXRlT3JDYW5jZWxEaWFsb2dDb21wb25lbnQsIHRoaXMuZGlhbG9nQ29uZmlnKTtcbiAgICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZShyZXN1bHQgPT4ge1xuICAgICAgICBpZiAocmVzdWx0ID09PSAnRGVsZXRlJykge1xuICAgICAgICAgIHRoaXMuZHJhZnRTZXJ2aWNlLmRlbGV0ZURyYWZ0KHRoaXMuY2FzZURldGFpbHMuY2FzZV9pZClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoXyA9PiB7XG4gICAgICAgICAgICAgIHRoaXMubmF2aWdhdGlvbk5vdGlmaWVyU2VydmljZS5hbm5vdW5jZU5hdmlnYXRpb24oeyBhY3Rpb246IE5hdmlnYXRpb25PcmlnaW4uRFJBRlRfREVMRVRFRCB9KTtcbiAgICAgICAgICAgIH0sIF8gPT4ge1xuICAgICAgICAgICAgICB0aGlzLm5hdmlnYXRpb25Ob3RpZmllclNlcnZpY2UuYW5ub3VuY2VOYXZpZ2F0aW9uKHsgYWN0aW9uOiBOYXZpZ2F0aW9uT3JpZ2luLkVSUk9SX0RFTEVUSU5HX0RSQUZUIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pc0RyYWZ0KCkgJiYgdHJpZ2dlci5pZCAhPT0gQ2FzZVZpZXdFdmVudElkcy5ERUxFVEUpIHtcbiAgICAgIHRoZVF1ZXJ5UGFyYW1zW0RSQUZUX1FVRVJZX1BBUkFNXSA9IHRoaXMuY2FzZURldGFpbHMuY2FzZV9pZDtcbiAgICAgIHRoZVF1ZXJ5UGFyYW1zW0Nhc2VGdWxsQWNjZXNzVmlld0NvbXBvbmVudC5PUklHSU5fUVVFUllfUEFSQU1dID0gJ3ZpZXdEcmFmdCc7XG4gICAgICB0aGlzLm5hdmlnYXRpb25Ob3RpZmllclNlcnZpY2UuYW5ub3VuY2VOYXZpZ2F0aW9uKFxuICAgICAgICB7XG4gICAgICAgICAgYWN0aW9uOiBOYXZpZ2F0aW9uT3JpZ2luLkRSQUZUX1JFU1VNRUQsXG4gICAgICAgICAgamlkOiB0aGlzLmNhc2VEZXRhaWxzLmNhc2VfdHlwZS5qdXJpc2RpY3Rpb24uaWQsXG4gICAgICAgICAgY3RpZDogdGhpcy5jYXNlRGV0YWlscy5jYXNlX3R5cGUuaWQsXG4gICAgICAgICAgZXRpZDogdHJpZ2dlci5pZCxcbiAgICAgICAgICBxdWVyeVBhcmFtczogdGhlUXVlcnlQYXJhbXNcbiAgICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubmF2aWdhdGlvbk5vdGlmaWVyU2VydmljZS5hbm5vdW5jZU5hdmlnYXRpb24oXG4gICAgICAgIHtcbiAgICAgICAgICBhY3Rpb246IE5hdmlnYXRpb25PcmlnaW4uRVZFTlRfVFJJR0dFUkVELFxuICAgICAgICAgIHF1ZXJ5UGFyYW1zOiB0aGVRdWVyeVBhcmFtcyxcbiAgICAgICAgICBldGlkOiB0cmlnZ2VyLmlkLFxuICAgICAgICAgIHJlbGF0aXZlVG86IHRoaXMucm91dGVcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGhhc1RhYnNQcmVzZW50KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNvcnRlZFRhYnMubGVuZ3RoID4gMCB8fCB0aGlzLnByZXBlbmRlZFRhYnMubGVuZ3RoID4gMCB8fCB0aGlzLmFwcGVuZGVkVGFicy5sZW5ndGggPiAwO1xuICB9XG5cbiAgcHVibGljIGNhbGxiYWNrRXJyb3JzTm90aWZ5KGNhbGxiYWNrRXJyb3JzQ29udGV4dDogQ2FsbGJhY2tFcnJvcnNDb250ZXh0KTogdm9pZCB7XG4gICAgdGhpcy5pZ25vcmVXYXJuaW5nID0gY2FsbGJhY2tFcnJvcnNDb250ZXh0Lmlnbm9yZVdhcm5pbmc7XG4gICAgdGhpcy50cmlnZ2VyVGV4dCA9IGNhbGxiYWNrRXJyb3JzQ29udGV4dC50cmlnZ2VyVGV4dDtcbiAgICB0aGlzLmV2ZW50SWQgPSBjYWxsYmFja0Vycm9yc0NvbnRleHQuZXZlbnRJZDtcbiAgfVxuXG4gIHB1YmxpYyBpc0RyYWZ0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBEcmFmdC5pc0RyYWZ0KHRoaXMuY2FzZURldGFpbHMuY2FzZV9pZCk7XG4gIH1cblxuICBwdWJsaWMgaXNUcmlnZ2VyQnV0dG9uRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICh0aGlzLmVycm9yXG4gICAgICAmJiB0aGlzLmVycm9yLmNhbGxiYWNrRXJyb3JzXG4gICAgICAmJiB0aGlzLmVycm9yLmNhbGxiYWNrRXJyb3JzLmxlbmd0aClcbiAgICAgIHx8ICh0aGlzLmVycm9yXG4gICAgICAgICYmIHRoaXMuZXJyb3IuZGV0YWlsc1xuICAgICAgICAmJiB0aGlzLmVycm9yLmRldGFpbHMuZmllbGRfZXJyb3JzXG4gICAgICAgICYmIHRoaXMuZXJyb3IuZGV0YWlscy5maWVsZF9lcnJvcnMubGVuZ3RoKTtcbiAgfVxuXG4gIHB1YmxpYyBvcmdhbmlzZVRhYlBvc2l0aW9uKCk6IHZvaWQge1xuICAgIGxldCBtYXRUYWI6IE1hdFRhYjtcbiAgICBjb25zdCB1cmwgPSB0aGlzLmxvY2F0aW9uLnBhdGgodHJ1ZSk7XG4gICAgbGV0IGhhc2hWYWx1ZSA9IHVybC5zdWJzdHJpbmcodXJsLmluZGV4T2YoJyMnKSArIDEpO1xuICAgIGlmICghdXJsLmluY2x1ZGVzKCcjJykgJiYgIXVybC5pbmNsdWRlcygncm9sZXMtYW5kLWFjY2VzcycpICYmICF1cmwuaW5jbHVkZXMoJ3Rhc2tzJykgJiYgIXVybC5pbmNsdWRlcygnaGVhcmluZ3MnKSkge1xuICAgICAgY29uc3QgcGF0aHMgPSB1cmwuc3BsaXQoJy8nKTtcbiAgICAgIC8vIGxhc3RQYXRoIGNhbiBiZSAvY2FzZUlkLCBvciB0aGUgdGFicyAvdGFza3MsIC9oZWFyaW5ncyBldGMuXG4gICAgICBjb25zdCBsYXN0UGF0aCA9IGRlY29kZVVSSUNvbXBvbmVudChwYXRoc1twYXRocy5sZW5ndGggLSAxXSk7XG4gICAgICBsZXQgZm91bmRUYWI6IENhc2VUYWIgPSBudWxsO1xuICAgICAgaWYgKCF0aGlzLnByZXBlbmRlZFRhYnMpIHtcbiAgICAgICAgdGhpcy5wcmVwZW5kZWRUYWJzID0gW107XG4gICAgICB9XG4gICAgICBjb25zdCBhZGRpdGlvbmFsVGFicyA9IFsuLi50aGlzLnByZXBlbmRlZFRhYnMsIC4uLnRoaXMuYXBwZW5kZWRUYWJzXTtcbiAgICAgIGlmIChhZGRpdGlvbmFsVGFicyAmJiBhZGRpdGlvbmFsVGFicy5sZW5ndGgpIHtcbiAgICAgICAgZm91bmRUYWIgPSBhZGRpdGlvbmFsVGFicy5maW5kKChjYXNlVGFiOiBDYXNlVGFiKSA9PiBjYXNlVGFiLmlkLnRvTG93ZXJDYXNlKCkgPT09IGxhc3RQYXRoLnRvTG93ZXJDYXNlKCkpO1xuICAgICAgfVxuICAgICAgLy8gZm91bmQgdGFza3Mgb3IgaGVhcmluZyB0YWJcbiAgICAgIGlmIChmb3VuZFRhYikge1xuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJ2Nhc2VzJywgJ2Nhc2UtZGV0YWlscycsIHRoaXMuY2FzZURldGFpbHMuY2FzZV90eXBlLmp1cmlzZGljdGlvbi5pZCwgdGhpcy5jYXNlRGV0YWlscy5jYXNlX3R5cGUuaWQsIHRoaXMuY2FzZURldGFpbHMuY2FzZV9pZCwgZm91bmRUYWIuaWRdKS50aGVuKCgpID0+IHtcbiAgICAgICAgICBtYXRUYWIgPSB0aGlzLnRhYkdyb3VwLl90YWJzLmZpbmQoKHgpID0+IHgudGV4dExhYmVsID09PSBmb3VuZFRhYi5sYWJlbCk7XG4gICAgICAgICAgLy8gVXBkYXRlIHNlbGVjdGVkSW5kZXggb25seSBpZiBtYXRUYWIucG9zaXRpb24gaXMgYSBub24temVybyBudW1iZXIgKHBvc2l0aXZlIG9yIG5lZ2F0aXZlKTsgdGhpcyBtZWFucyB0aGVcbiAgICAgICAgICAvLyBtYXRUYWIgaXMgbm90IGFscmVhZHkgc2VsZWN0ZWQgKHBvc2l0aW9uIGlzIHJlbGF0aXZlOyBwb3NpdGl2ZSA9IHJpZ2h0LCBuZWdhdGl2ZSA9IGxlZnQpIG9yIGl0IHdvdWxkIGJlIDBcbiAgICAgICAgICBpZiAobWF0VGFiPy5wb3NpdGlvbikge1xuICAgICAgICAgICAgdGhpcy50YWJHcm91cC5zZWxlY3RlZEluZGV4ID0gbWF0VGFiLnBvc2l0aW9uO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIC8vIGxhc3QgcGF0aCBpcyBjYXNlSWRcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIHNvcnQgd2l0aCB0aGUgb3JkZXIgb2YgQ0NEIHByZWRlZmluZWQgdGFic1xuICAgICAgICB0aGlzLmNhc2VEZXRhaWxzLnRhYnMuc29ydCgoYVRhYiwgYlRhYikgPT4gYVRhYi5vcmRlciA+IGJUYWIub3JkZXIgPyAxIDogKGJUYWIub3JkZXIgPiBhVGFiLm9yZGVyID8gLTEgOiAwKSk7XG4gICAgICAgIC8vIHNlbGVjdCB0aGUgZmlyc3QgdGFiIGNoZWNraW5nIGlmIHRoZSB0YWIgaXMgdmlzaWJsZVxuICAgICAgICBjb25zdCBwcmVTZWxlY3RUYWI6IENhc2VUYWIgPSB0aGlzLmZpbmRQcmVTZWxlY3RlZEFjdGl2ZVRhYigpO1xuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJ2Nhc2VzJywgJ2Nhc2UtZGV0YWlscycsIHRoaXMuY2FzZURldGFpbHMuY2FzZV90eXBlLmp1cmlzZGljdGlvbi5pZCwgdGhpcy5jYXNlRGV0YWlscy5jYXNlX3R5cGUuaWQsIHRoaXMuY2FzZURldGFpbHMuY2FzZV9pZF0sIHsgZnJhZ21lbnQ6IHByZVNlbGVjdFRhYi5sYWJlbCB9KS50aGVuKCgpID0+IHtcbiAgICAgICAgICBtYXRUYWIgPSB0aGlzLnRhYkdyb3VwLl90YWJzLmZpbmQoKHgpID0+IHgudGV4dExhYmVsID09PSBwcmVTZWxlY3RUYWIubGFiZWwpO1xuICAgICAgICAgIC8vIFVwZGF0ZSBzZWxlY3RlZEluZGV4IG9ubHkgaWYgbWF0VGFiLnBvc2l0aW9uIGlzIGEgbm9uLXplcm8gbnVtYmVyIChwb3NpdGl2ZSBvciBuZWdhdGl2ZSk7IHRoaXMgbWVhbnMgdGhlXG4gICAgICAgICAgLy8gbWF0VGFiIGlzIG5vdCBhbHJlYWR5IHNlbGVjdGVkIChwb3NpdGlvbiBpcyByZWxhdGl2ZTsgcG9zaXRpdmUgPSByaWdodCwgbmVnYXRpdmUgPSBsZWZ0KSBvciBpdCB3b3VsZCBiZSAwXG4gICAgICAgICAgaWYgKG1hdFRhYj8ucG9zaXRpb24pIHtcbiAgICAgICAgICAgIHRoaXMudGFiR3JvdXAuc2VsZWN0ZWRJbmRleCA9IG1hdFRhYi5wb3NpdGlvbjtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCByZWdFeHAgPSBuZXcgUmVnRXhwKENhc2VGdWxsQWNjZXNzVmlld0NvbXBvbmVudC5VTklDT0RFX1NQQUNFLCAnZycpO1xuICAgICAgaGFzaFZhbHVlID0gaGFzaFZhbHVlLnJlcGxhY2UocmVnRXhwLCBDYXNlRnVsbEFjY2Vzc1ZpZXdDb21wb25lbnQuRU1QVFlfU1BBQ0UpO1xuICAgICAgaWYgKGhhc2hWYWx1ZS5pbmNsdWRlcygnaGVhcmluZ3MnKSkge1xuICAgICAgICBoYXNoVmFsdWUgPSAnaGVhcmluZ3MnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGhhc2hWYWx1ZS5pbmNsdWRlcygncm9sZXMtYW5kLWFjY2VzcycpIHx8IGhhc2hWYWx1ZS5pbmNsdWRlcygndGFza3MnKSkge1xuICAgICAgICAgIGhhc2hWYWx1ZSA9IGhhc2hWYWx1ZS5pbmNsdWRlcygncm9sZXMtYW5kLWFjY2VzcycpID8gJ3JvbGVzIGFuZCBhY2Nlc3MnIDogJ3Rhc2tzJztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgbWF0VGFiID0gdGhpcy50YWJHcm91cC5fdGFicy5maW5kKCh4KSA9PlxuICAgICAgICB4LnRleHRMYWJlbC5yZXBsYWNlKENhc2VGdWxsQWNjZXNzVmlld0NvbXBvbmVudC5FTVBUWV9TUEFDRSwgJycpLnRvTG93ZXJDYXNlKCkgPT09XG4gICAgICAgIGhhc2hWYWx1ZS5yZXBsYWNlKENhc2VGdWxsQWNjZXNzVmlld0NvbXBvbmVudC5FTVBUWV9TUEFDRSwgJycpLnRvTG93ZXJDYXNlKCkpO1xuICAgICAgLy8gVXBkYXRlIHNlbGVjdGVkSW5kZXggb25seSBpZiBtYXRUYWIucG9zaXRpb24gaXMgYSBub24temVybyBudW1iZXIgKHBvc2l0aXZlIG9yIG5lZ2F0aXZlKTsgdGhpcyBtZWFucyB0aGVcbiAgICAgIC8vIG1hdFRhYiBpcyBub3QgYWxyZWFkeSBzZWxlY3RlZCAocG9zaXRpb24gaXMgcmVsYXRpdmU7IHBvc2l0aXZlID0gcmlnaHQsIG5lZ2F0aXZlID0gbGVmdCkgb3IgaXQgd291bGQgYmUgMFxuICAgICAgaWYgKG1hdFRhYj8ucG9zaXRpb24pIHtcbiAgICAgICAgdGhpcy50YWJHcm91cC5zZWxlY3RlZEluZGV4ID0gbWF0VGFiLnBvc2l0aW9uO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBmaW5kUHJlU2VsZWN0ZWRBY3RpdmVUYWIoKTogQ2FzZVRhYiB7XG4gICAgY29uc3QgdW5PcmRlcmVkVGFic0luU29ydGVkVGFicyA9IHRoaXMuY2FzZURldGFpbHMudGFic1xuICAgICAgLmZpbHRlcigodGFiKSA9PiAhdGFiLm9yZGVyICYmIHRoaXMuc29ydGVkVGFicy5zb21lKChzb3J0ZWRUYWIpID0+IHNvcnRlZFRhYi5pZCA9PT0gdGFiLmlkKSk7XG4gICAgcmV0dXJuIHVuT3JkZXJlZFRhYnNJblNvcnRlZFRhYnMubGVuZ3RoID8gdW5PcmRlcmVkVGFic0luU29ydGVkVGFic1swXSA6IHRoaXMuc29ydGVkVGFic1swXTtcbiAgfVxuXG4gIC8vIFJlZmFjdG9yZWQgdW5kZXIgRVhVSS0xMTAgdG8gYWRkcmVzcyBpbmZpbml0ZSB0YWIgbG9vcCB0byB1c2UgdGFiSW5kZXhDaGFuZ2VkIGluc3RlYWRcbiAgcHVibGljIHRhYkNoYW5nZWQodGFiSW5kZXhDaGFuZ2VkOiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCBtYXRUYWIgPSB0aGlzLnRhYkdyb3VwLl90YWJzLmZpbmQodGFiID0+IHRhYi5pc0FjdGl2ZSk7XG4gICAgY29uc3QgdGFiTGFiZWwgPSBtYXRUYWIudGV4dExhYmVsO1xuICAgIC8vIHNvcnRlZFRhYnMgYXJlIGZyYWdtZW50c1xuICAgIC8vIGFwcGVuZGVkL3ByZXBlcGVuZGVkIHRhYnMgdXNlIHJvdXRlciBuYXZpZ2F0aW9uXG4gICAgaWYgKCh0YWJJbmRleENoYW5nZWQgPD0gMSAmJiB0aGlzLnByZXBlbmRlZFRhYnMgJiYgdGhpcy5wcmVwZW5kZWRUYWJzLmxlbmd0aCkgfHxcbiAgICAgICh0aGlzLmFwcGVuZGVkVGFicz8ubGVuZ3RoICYmICh0YWJMYWJlbCA9PT0gdGhpcy5IRUFSSU5HU19UQUJfTEFCRUxcbiAgICAgICAgfHwgdGFiTGFiZWwgPT09IHRoaXMucnB4VHJhbnNsYXRpb25QaXBlLnRyYW5zZm9ybSh0aGlzLkhFQVJJTkdTX1RBQl9MQUJFTCkpKSkge1xuICAgICAgLy8gSGFjayB0byBnZXQgSUQgZnJvbSB0YWIgYXMgaXQncyBub3QgZWFzaWx5IGFjaGlldmVkIHRocm91Z2ggQW5ndWxhciBNYXRlcmlhbCBUYWJzXG4gICAgICBjb25zdCB0YWIgPSBtYXRUYWJbJ192aWV3Q29udGFpbmVyUmVmJ10gYXMgVmlld0NvbnRhaW5lclJlZjtcbiAgICAgIGNvbnN0IGlkID0gKHRhYi5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQpLmlkO1xuICAgICAgLy8gY2FzZXMvY2FzZS1kZXRhaWxzLzpqdXJpc2RpY3Rpb24vOmNhc2VUeXBlLzpjYXNlSWQvaGVhcmluZ3NcbiAgICAgIC8vIGNhc2VzL2Nhc2UtZGV0YWlscy86anVyaXNkaWN0aW9uLzpjYXNlVHlwZS86Y2FzZUlkL3JvbGVzLWFuZC1hY2Nlc3NcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcbiAgICAgICAgJ2Nhc2VzJyxcbiAgICAgICAgJ2Nhc2UtZGV0YWlscycsXG4gICAgICAgIHRoaXMuY2FzZURldGFpbHMuY2FzZV90eXBlLmp1cmlzZGljdGlvbi5pZCxcbiAgICAgICAgdGhpcy5jYXNlRGV0YWlscy5jYXNlX3R5cGUuaWQsXG4gICAgICAgIHRoaXMuY2FzZURldGFpbHMuY2FzZV9pZCxcbiAgICAgICAgaWRcbiAgICAgIF0sIHsgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZS5yb290IH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBSb3V0aW5nIGhlcmUgaXMgYmFzZWQgb24gdGFiIGxhYmVsLCBub3QgaWRlYWxcbiAgICAgIC8vIGNhc2VzL2Nhc2UtZGV0YWlscy86anVyaXNkaWN0aW9uLzpjYXNlVHlwZS86Y2FzZUlkI3RhYkxhYmVsXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJ2Nhc2VzJywgJ2Nhc2UtZGV0YWlscycsIHRoaXMuY2FzZURldGFpbHMuY2FzZV90eXBlLmp1cmlzZGljdGlvbi5pZCwgdGhpcy5jYXNlRGV0YWlscy5jYXNlX3R5cGUuaWQsIHRoaXMuY2FzZURldGFpbHMuY2FzZV9pZF0sIHsgZnJhZ21lbnQ6IHRhYkxhYmVsIH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvbkxpbmtDbGlja2VkKHRyaWdnZXJPdXRwdXRFdmVudFRleHQ6IHN0cmluZyk6IHZvaWQge1xuICAgIC8vIEdldCB0aGUgKmFic29sdXRlKiAobm90IHJlbGF0aXZlKSBpbmRleCBvZiB0aGUgdGFyZ2V0IHRhYiBhbmQgc2V0IGFzIHRoZSBhY3RpdmUgdGFiLCB1c2luZyB0aGUgc2VsZWN0ZWRJbmRleCBpbnB1dFxuICAgIC8vIG9mIG1hdC10YWItZ3JvdXAgKGJvdW5kIHRvIHNlbGVjdGVkVGFiSW5kZXgpXG4gICAgY29uc3QgdGFyZ2V0VGFiSW5kZXggPSB0aGlzLnRhYkdyb3VwLl90YWJzLnRvQXJyYXkoKS5maW5kSW5kZXgodGFiID0+IHRhYi50ZXh0TGFiZWwgPT09IHRyaWdnZXJPdXRwdXRFdmVudFRleHQpO1xuICAgIGlmICh0YXJnZXRUYWJJbmRleCA+IC0xKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkVGFiSW5kZXggPSB0YXJnZXRUYWJJbmRleDtcbiAgICAgIHRoaXMudGFiR3JvdXAuc2VsZWN0ZWRJbmRleCA9IHRhcmdldFRhYkluZGV4O1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBoYXNBY3RpdmVDYXNlRmxhZ3MoKTogYm9vbGVhbiB7XG4gICAgLy8gRGV0ZXJtaW5lIHdoaWNoIHRhYiBjb250YWlucyB0aGUgRmxhZ0xhdW5jaGVyIENhc2VGaWVsZCB0eXBlLCBmcm9tIHRoZSBDYXNlVmlldyBvYmplY3QgaW4gdGhlIHNuYXBzaG90IGRhdGFcbiAgICBjb25zdCBjYXNlRmxhZ3NUYWIgPSB0aGlzLmNhc2VEZXRhaWxzPy50YWJzXG4gICAgICA/ICh0aGlzLmNhc2VEZXRhaWxzLnRhYnMpLmZpbHRlcihcbiAgICAgICAgdGFiID0+IHRhYi5maWVsZHMgJiYgdGFiLmZpZWxkcy5zb21lKGNhc2VGaWVsZCA9PiBGaWVsZHNVdGlscy5pc0ZsYWdMYXVuY2hlckNhc2VGaWVsZChjYXNlRmllbGQpKSlbMF1cbiAgICAgIDogbnVsbDtcblxuICAgIGlmIChjYXNlRmxhZ3NUYWIpIHtcbiAgICAgIC8vIENoZWNrIHdoZXRoZXIgdGhlIEZsYWdMYXVuY2hlciBDYXNlRmllbGQgaXMgaW4gZXh0ZXJuYWwgbW9kZSBvciBub3Q7IHRoZSBub3RpZmljYXRpb24gYmFubmVyIHNob3VsZCBub3QgYmVcbiAgICAgIC8vIGRpc3BsYXllZCBmb3IgZXh0ZXJuYWwgdXNlcnNcbiAgICAgIHRoaXMuY2FzZUZsYWdzRXh0ZXJuYWxVc2VyID0gY2FzZUZsYWdzVGFiLmZpZWxkcy5maW5kKFxuICAgICAgICBjYXNlRmllbGQgPT4gRmllbGRzVXRpbHMuaXNGbGFnTGF1bmNoZXJDYXNlRmllbGQoY2FzZUZpZWxkKSkuZGlzcGxheV9jb250ZXh0X3BhcmFtZXRlciA9PT0gdGhpcy5jYXNlRmxhZ3NSZWFkRXh0ZXJuYWxNb2RlO1xuXG4gICAgICAvLyBHZXQgdGhlIGFjdGl2ZSBjYXNlIGZsYWdzIGNvdW50XG4gICAgICAvLyBDYW5ub3QgZmlsdGVyIG91dCBhbnl0aGluZyBvdGhlciB0aGFuIHRvIHJlbW92ZSB0aGUgRmxhZ0xhdW5jaGVyIENhc2VGaWVsZCBiZWNhdXNlIEZsYWdzIGZpZWxkcyBtYXkgYmVcbiAgICAgIC8vIGNvbnRhaW5lZCBpbiBvdGhlciBDYXNlRmllbGQgaW5zdGFuY2VzLCBlaXRoZXIgYXMgYSBzdWItZmllbGQgb2YgYSBDb21wbGV4IGZpZWxkLCBvciBmaWVsZHMgaW4gYSBjb2xsZWN0aW9uXG4gICAgICAvLyAob3Igc3ViLWZpZWxkcyBvZiBDb21wbGV4IGZpZWxkcyBpbiBhIGNvbGxlY3Rpb24pXG4gICAgICBjb25zdCBhY3RpdmVDYXNlRmxhZ3MgPSBjYXNlRmxhZ3NUYWIuZmllbGRzXG4gICAgICAgIC5maWx0ZXIoY2FzZUZpZWxkID0+ICFGaWVsZHNVdGlscy5pc0ZsYWdMYXVuY2hlckNhc2VGaWVsZChjYXNlRmllbGQpICYmIGNhc2VGaWVsZC52YWx1ZSlcbiAgICAgICAgLnJlZHVjZSgoYWN0aXZlLCBjYXNlRmxhZykgPT4ge1xuICAgICAgICAgIHJldHVybiBGaWVsZHNVdGlscy5jb3VudEFjdGl2ZUZsYWdzSW5DYXNlRmllbGQoYWN0aXZlLCBjYXNlRmxhZyk7XG4gICAgICAgIH0sIDApO1xuXG4gICAgICBpZiAoYWN0aXZlQ2FzZUZsYWdzID4gMCkge1xuICAgICAgICBjb25zdCBkZXNjcmlwdGlvbiA9IGFjdGl2ZUNhc2VGbGFncyA+IDFcbiAgICAgICAgICA/IGBUaGVyZSBhcmUgJHthY3RpdmVDYXNlRmxhZ3N9IGFjdGl2ZSBmbGFncyBvbiB0aGlzIGNhc2UuYCA6ICdUaGVyZSBpcyAxIGFjdGl2ZSBmbGFnIG9uIHRoaXMgY2FzZS4nO1xuICAgICAgICAvLyBJbml0aWFsaXNlIGFuZCBkaXNwbGF5IG5vdGlmaWNhdGlvbiBiYW5uZXJcbiAgICAgICAgdGhpcy5ub3RpZmljYXRpb25CYW5uZXJDb25maWcgPSB7XG4gICAgICAgICAgYmFubmVyVHlwZTogTm90aWZpY2F0aW9uQmFubmVyVHlwZS5JTkZPUk1BVElPTixcbiAgICAgICAgICBoZWFkaW5nVGV4dDogJ0ltcG9ydGFudCcsXG4gICAgICAgICAgZGVzY3JpcHRpb24sXG4gICAgICAgICAgc2hvd0xpbms6IHRydWUsXG4gICAgICAgICAgbGlua1RleHQ6ICdWaWV3IGNhc2UgZmxhZ3MnLFxuICAgICAgICAgIHRyaWdnZXJPdXRwdXRFdmVudDogdHJ1ZSxcbiAgICAgICAgICB0cmlnZ2VyT3V0cHV0RXZlbnRUZXh0OiBjYXNlRmxhZ3NUYWIubGFiZWwsXG4gICAgICAgICAgaGVhZGVyQ2xhc3M6IE5vdGlmaWNhdGlvbkJhbm5lckhlYWRlckNsYXNzLklORk9STUFUSU9OXG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB0aGF0IGEgQ2FzZUZpZWxkIGlzIHRvIGJlIGRpc3BsYXllZCB3aXRob3V0IGEgbGFiZWwsIGFzIGlzIGV4cGVjdGVkIGZvciBhbGwgQ29tcG9uZW50TGF1bmNoZXItdHlwZVxuICAgKiBmaWVsZHMuXG4gICAqIEBwYXJhbSBjYXNlRmllbGQgVGhlIGBDYXNlRmllbGRgIGluc3RhbmNlIHRvIGNoZWNrXG4gICAqIEByZXR1cm5zIGB0cnVlYCBpZiBpdCBzaG91bGQgbm90IGhhdmUgYSBsYWJlbDsgYGZhbHNlYCBvdGhlcndpc2VcbiAgICovXG4gIHB1YmxpYyBpc0ZpZWxkVG9IYXZlTm9MYWJlbChjYXNlRmllbGQ6IENhc2VGaWVsZCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBjYXNlRmllbGQuZmllbGRfdHlwZS50eXBlID09PSAnQ29tcG9uZW50TGF1bmNoZXInXG4gICAgICAmJiBjYXNlRmllbGQuZGlzcGxheV9jb250ZXh0X3BhcmFtZXRlciA9PT0gJyNBUkdVTUVOVChDYXNlRmlsZVZpZXcpJztcbiAgfVxuXG4gIHByaXZhdGUgaW5pdCgpOiB2b2lkIHtcbiAgICAvLyBDbG9uZSBhbmQgc29ydCB0YWJzIGFycmF5XG4gICAgdGhpcy5zb3J0ZWRUYWJzID0gdGhpcy5vcmRlclNlcnZpY2Uuc29ydCh0aGlzLmNhc2VEZXRhaWxzPy50YWJzKTtcbiAgICB0aGlzLmNhc2VGaWVsZHMgPSB0aGlzLmdldFRhYkZpZWxkcygpO1xuICAgIHRoaXMuc29ydGVkVGFicyA9IHRoaXMuc29ydFRhYkZpZWxkc0FuZEZpbHRlclRhYnModGhpcy5zb3J0ZWRUYWJzKTtcbiAgICB0aGlzLmZvcm1Hcm91cCA9IHRoaXMuYnVpbGRGb3JtR3JvdXAodGhpcy5jYXNlRmllbGRzKTtcbiAgICBpZiAodGhpcy5jYXNlRGV0YWlscz8udHJpZ2dlcnMgJiYgdGhpcy5lcnJvcikge1xuICAgICAgdGhpcy5yZXNldEVycm9ycygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc29ydFRhYkZpZWxkc0FuZEZpbHRlclRhYnModGFiczogQ2FzZVRhYltdKTogQ2FzZVRhYltdIHtcbiAgICByZXR1cm4gdGFicz8ubWFwKHRhYiA9PiBPYmplY3QuYXNzaWduKHt9LCB0YWIsIHsgZmllbGRzOiB0aGlzLm9yZGVyU2VydmljZS5zb3J0KHRhYi5maWVsZHMpIH0pKVxuICAgICAgLmZpbHRlcih0YWIgPT4gU2hvd0NvbmRpdGlvbi5nZXRJbnN0YW5jZSh0YWIuc2hvd19jb25kaXRpb24pLm1hdGNoQnlDb250ZXh0RmllbGRzKHRoaXMuY2FzZUZpZWxkcykpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRUYWJGaWVsZHMoKTogQ2FzZUZpZWxkW10ge1xuICAgIGNvbnN0IGNhc2VEYXRhRmllbGRzID0gdGhpcy5zb3J0ZWRUYWJzPy5yZWR1Y2UoKGFjYywgdGFiKSA9PiB7XG4gICAgICByZXR1cm4gYWNjLmNvbmNhdChwbGFpblRvQ2xhc3MoQ2FzZUZpZWxkLCB0YWIuZmllbGRzKSk7XG4gICAgfSwgW10pO1xuXG4gICAgcmV0dXJuIGNhc2VEYXRhRmllbGRzPy5jb25jYXQodGhpcy5jYXNlRGV0YWlscy5tZXRhZGF0YUZpZWxkcyk7XG4gIH1cblxuICAvKipcbiAgICogRm9yIEVVSS0zODI1OlxuICAgKiBCdWlsZHMgYSBGb3JtR3JvdXAgZnJvbSBhbGwgdGhlIENhc2VGaWVsZHMgY29udGFpbmVkIHdpdGhpbiB0aGUgdmlldy5cbiAgICogVGhpcyBGb3JtR3JvdXAgaXMgbmVjZXNzYXJ5IGZvciBldmFsdWF0aW9uIHRoZSBzaG93L2hpZGUgY29uZGl0aW9ucyBvZlxuICAgKiBmaWVsZHMgdGhhdCBhcmUgZGVwZW5kZW50IG9uIGEgZmllbGQgb25seSBhdmFpbGFibGUgb24gYSBESUZGRVJFTlQgdGFiLlxuICAgKi9cbiAgcHJpdmF0ZSBidWlsZEZvcm1Hcm91cChjYXNlRmllbGRzOiBDYXNlRmllbGRbXSk6IEZvcm1Hcm91cCB7XG4gICAgbGV0IHZhbHVlOiBvYmplY3QgPSB7fTtcbiAgICBpZiAoY2FzZUZpZWxkcykge1xuICAgICAgY2FzZUZpZWxkcy5mb3JFYWNoKGNhc2VGaWVsZCA9PiB7XG4gICAgICAgIHZhbHVlID0ge1xuICAgICAgICAgIC4uLnZhbHVlLFxuICAgICAgICAgIFtjYXNlRmllbGQuaWRdOiBjYXNlRmllbGQudmFsdWVcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IEZvcm1Hcm91cCh7IGRhdGE6IG5ldyBGb3JtQ29udHJvbCh2YWx1ZSkgfSk7XG4gIH1cblxuICBwcml2YXRlIHJlc2V0RXJyb3JzKCk6IHZvaWQge1xuICAgIHRoaXMuZXJyb3JOb3RpZmllclNlcnZpY2UuYW5ub3VuY2VFcnJvcihudWxsKTtcbiAgICB0aGlzLmFsZXJ0U2VydmljZS5jbGVhcigpO1xuICB9XG59XG4iLCI8IS0tIEdlbmVyaWMgZXJyb3IgaGVhZGluZyBhbmQgZXJyb3IgbWVzc2FnZSB0byBiZSBkaXNwbGF5ZWQgb25seSBpZiB0aGVyZSBhcmUgbm8gc3BlY2lmaWMgY2FsbGJhY2sgZXJyb3JzIG9yIHdhcm5pbmdzLCBvciBubyBlcnJvciBkZXRhaWxzIC0tPlxuPGRpdiAqbmdJZj1cImVycm9yICYmICEoZXJyb3IuY2FsbGJhY2tFcnJvcnMgfHwgZXJyb3IuY2FsbGJhY2tXYXJuaW5ncyB8fCBlcnJvci5kZXRhaWxzKVwiIGNsYXNzPVwiZXJyb3Itc3VtbWFyeVwiXG4gICAgIHJvbGU9XCJncm91cFwiIGFyaWEtbGFiZWxsZWRieT1cImVkaXQtY2FzZS1ldmVudF9lcnJvci1zdW1tYXJ5LWhlYWRpbmdcIiB0YWJpbmRleD1cIi0xXCI+XG4gIDxoMSBjbGFzcz1cImhlYWRpbmctaDEgZXJyb3Itc3VtbWFyeS1oZWFkaW5nXCIgaWQ9XCJlZGl0LWNhc2UtZXZlbnRfZXJyb3Itc3VtbWFyeS1oZWFkaW5nXCI+XG4gICAge3snU29tZXRoaW5nIHdlbnQgd3JvbmcnIHwgcnB4VHJhbnNsYXRlfX1cbiAgPC9oMT5cbiAgPGRpdiBjbGFzcz1cImdvdnVrLWVycm9yLXN1bW1hcnlfX2JvZHlcIiBpZD1cImVkaXQtY2FzZS1ldmVudF9lcnJvci1zdW1tYXJ5LWJvZHlcIj5cbiAgICA8cD57e1wiV2UncmUgd29ya2luZyB0byBmaXggdGhlIHByb2JsZW0uIFRyeSBhZ2FpbiBzaG9ydGx5LlwiIHwgcnB4VHJhbnNsYXRlfX08L3A+XG4gICAgPHA+XG4gICAgICA8YSBocmVmPVwiZ2V0LWhlbHBcIiB0YXJnZXQ9XCJfYmxhbmtcIj5cbiAgICAgICAge3tcIkNvbnRhY3QgdXNcIiB8IHJweFRyYW5zbGF0ZX19PC9hPiB7e1wiaWYgeW91J3JlIHN0aWxsIGhhdmluZyBwcm9ibGVtcy5cIiB8IHJweFRyYW5zbGF0ZX19XG4gICAgPC9wPlxuICA8L2Rpdj5cbjwvZGl2PlxuPCEtLSBDYWxsYmFjayBlcnJvciBoZWFkaW5nIGFuZCBlcnJvciBtZXNzYWdlIHRvIGJlIGRpc3BsYXllZCBpZiB0aGVyZSBhcmUgc3BlY2lmaWMgZXJyb3IgZGV0YWlscyAtLT5cbjxkaXYgKm5nSWY9XCJlcnJvciAmJiBlcnJvci5kZXRhaWxzXCIgY2xhc3M9XCJlcnJvci1zdW1tYXJ5XCIgcm9sZT1cImdyb3VwXCJcbiAgICAgYXJpYS1sYWJlbGxlZGJ5PVwiZWRpdC1jYXNlLWV2ZW50X2Vycm9yLXN1bW1hcnktaGVhZGluZ1wiIHRhYmluZGV4PVwiLTFcIj5cbiAgPGgyIGNsYXNzPVwiaGVhZGluZy1oMiBlcnJvci1zdW1tYXJ5LWhlYWRpbmdcIiBpZD1cImVkaXQtY2FzZS1ldmVudF9lcnJvci1zdW1tYXJ5LWhlYWRpbmdcIj5cbiAgICB7eydUaGUgY2FsbGJhY2sgZGF0YSBmYWlsZWQgdmFsaWRhdGlvbicgfCBycHhUcmFuc2xhdGV9fVxuICA8L2gyPlxuICA8cD57e2Vycm9yLm1lc3NhZ2UgfCBycHhUcmFuc2xhdGV9fTwvcD5cbiAgPHVsICpuZ0lmPVwiZXJyb3IuZGV0YWlscz8uZmllbGRfZXJyb3JzXCIgY2xhc3M9XCJlcnJvci1zdW1tYXJ5LWxpc3RcIj5cbiAgICA8bGkgKm5nRm9yPVwibGV0IGZpZWxkRXJyb3Igb2YgZXJyb3IuZGV0YWlscy5maWVsZF9lcnJvcnNcIj5cbiAgICAgIHt7ZmllbGRFcnJvci5tZXNzYWdlIHwgcnB4VHJhbnNsYXRlfX1cbiAgICA8L2xpPlxuICA8L3VsPlxuPC9kaXY+XG48Y2NkLWNhbGxiYWNrLWVycm9yc1xuICBbdHJpZ2dlclRleHRDb250aW51ZV09XCJ0cmlnZ2VyVGV4dFN0YXJ0XCJcbiAgW3RyaWdnZXJUZXh0SWdub3JlXT1cInRyaWdnZXJUZXh0SWdub3JlV2FybmluZ3NcIlxuICBbY2FsbGJhY2tFcnJvcnNTdWJqZWN0XT1cImNhbGxiYWNrRXJyb3JzU3ViamVjdFwiXG4gIChjYWxsYmFja0Vycm9yc0NvbnRleHQpPVwiY2FsbGJhY2tFcnJvcnNOb3RpZnkoJGV2ZW50KVwiPlxuPC9jY2QtY2FsbGJhY2stZXJyb3JzPlxuPGNjZC1hY3Rpdml0eSBbY2FzZUlkXT1cImNhc2VEZXRhaWxzLmNhc2VfaWRcIiBbZGlzcGxheU1vZGVdPVwiQkFOTkVSXCI+PC9jY2QtYWN0aXZpdHk+XG48ZGl2IGNsYXNzPVwiZ3JpZC1yb3dcIj5cbiAgPGRpdiBjbGFzcz1cImNvbHVtbi1vbmUtaGFsZlwiPlxuICAgIDxjY2QtY2FzZS1oZWFkZXIgW2Nhc2VEZXRhaWxzXT1cImNhc2VEZXRhaWxzXCI+PC9jY2QtY2FzZS1oZWFkZXI+XG4gICAgPGRpdiBjbGFzcz1cImNhc2Utdmlld2VyLWNvbnRyb2xzXCIgKm5nSWY9XCJoYXNQcmludCAmJiAhaXNEcmFmdCgpICYmIGlzUHJpbnRFbmFibGVkKClcIj5cbiAgICAgIDxhIGlkPVwiY2FzZS12aWV3ZXItY29udHJvbC1wcmludFwiIHJvdXRlckxpbms9XCJwcmludFwiIGNsYXNzPVwiYnV0dG9uIGJ1dHRvbi1zZWNvbmRhcnlcIj57eydQcmludCcgfCBycHhUcmFuc2xhdGV9fTwvYT5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgKm5nSWY9XCJoYXNFdmVudFNlbGVjdG9yXCIgY2xhc3M9XCJjb2x1bW4tb25lLWhhbGZcIj5cbiAgICA8Y2NkLWV2ZW50LXRyaWdnZXIgW2lzRGlzYWJsZWRdPVwiaXNUcmlnZ2VyQnV0dG9uRGlzYWJsZWQoKVwiIFt0cmlnZ2Vyc109XCJjYXNlRGV0YWlscy50cmlnZ2Vyc1wiXG4gICAgICAgICAgICAgICAgICAgICAgIFt0cmlnZ2VyVGV4dF09XCJ0cmlnZ2VyVGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgIFtldmVudElkXT1cImV2ZW50SWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAob25UcmlnZ2VyQ2hhbmdlKT1cImNsZWFyRXJyb3JzQW5kV2FybmluZ3MoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgIChvblRyaWdnZXJTdWJtaXQpPVwiYXBwbHlUcmlnZ2VyKCRldmVudClcIj48L2NjZC1ldmVudC10cmlnZ2VyPlxuICA8L2Rpdj5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cImdyaWQtcm93XCIgKm5nSWY9XCJhY3RpdmVDYXNlRmxhZ3MgJiYgIWNhc2VGbGFnc0V4dGVybmFsVXNlclwiPlxuICA8ZGl2IGNsYXNzPVwiY29sdW1uLWZ1bGxcIj5cbiAgICA8Y2NkLW5vdGlmaWNhdGlvbi1iYW5uZXIgW25vdGlmaWNhdGlvbkJhbm5lckNvbmZpZ109XCJub3RpZmljYXRpb25CYW5uZXJDb25maWdcIiAobGlua0NsaWNrZWQpPVwib25MaW5rQ2xpY2tlZCgkZXZlbnQpXCI+XG4gICAgPC9jY2Qtbm90aWZpY2F0aW9uLWJhbm5lcj5cbiAgPC9kaXY+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJncmlkLXJvd1wiPlxuICA8ZGl2IGNsYXNzPVwiY29sdW1uLWZ1bGxcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaGFzVGFic1ByZXNlbnQoKVwiPlxuICAgICAgPG1hdC10YWItZ3JvdXAgI3RhYkdyb3VwIGFuaW1hdGlvbkR1cmF0aW9uPVwiMG1zXCIgKHNlbGVjdGVkSW5kZXhDaGFuZ2UpPVwidGFiQ2hhbmdlZCgkZXZlbnQpXCIgW2Rpc2FibGVSaXBwbGVdPVwidHJ1ZVwiXG4gICAgICAgIFtzZWxlY3RlZEluZGV4XT1cInNlbGVjdGVkVGFiSW5kZXhcIj5cbiAgICAgICAgPG1hdC10YWIgKm5nRm9yPVwibGV0IHRhYiBvZiBwcmVwZW5kZWRUYWJzXCIgW2lkXT1cInRhYi5pZFwiIFtsYWJlbF09XCJ0YWIubGFiZWwgfCBycHhUcmFuc2xhdGVcIj5cbiAgICAgICAgPC9tYXQtdGFiPlxuICAgICAgICA8bWF0LXRhYiAqbmdGb3I9XCJsZXQgdGFiIG9mIHNvcnRlZFRhYnM7IGxldCBjdXJJZHg9aW5kZXhcIiBbaWRdPVwidGFiLmlkXCIgW2xhYmVsXT1cInRhYi5sYWJlbCB8IHJweFRyYW5zbGF0ZVwiIFthcmlhLWxhYmVsXT1cImN1cklkeCA9PT0gMCA/IHRhYi5sYWJlbCArICcsIFBsZWFzZSB1c2UgbGVmdCBhbmQgcmlnaHQgYXJyb3cga2V5cyB0byBuYXZpZ2F0ZSBjYXNlIHRhYnMnIDogJycgfCBycHhUcmFuc2xhdGVcIj5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgbWF0VGFiQ29udGVudD5cbiAgICAgICAgICAgIDx0YWJsZSBbY2xhc3NdPVwidGFiLmlkXCIgW2F0dHIuYXJpYS1sYWJlbF09XCInY2FzZSB2aWV3ZXIgdGFibGUnIHwgcnB4VHJhbnNsYXRlXCI+XG4gICAgICAgICAgICAgIDx0Ym9keT5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZmllbGQgb2YgdGFiIHwgY2NkVGFiRmllbGRzIHwgY2NkUmVhZEZpZWxkc0ZpbHRlcjpmYWxzZSA6dW5kZWZpbmVkIDp0cnVlIDogZm9ybUdyb3VwPy5jb250cm9sc1snZGF0YSddXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjY2RMYWJlbFN1YnN0aXR1dG9yIFtjYXNlRmllbGRdPVwiZmllbGRcIiBbY29udGV4dEZpZWxkc109XCJjYXNlRmllbGRzXCIgW2hpZGRlbl09XCJmaWVsZC5oaWRkZW5cIj5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cIiEoZmllbGQgfCBjY2RJc0NvbXBvdW5kKVwiPlxuICAgICAgICAgICAgICAgICAgICA8dHIgKm5nU3dpdGNoQ2FzZT1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8dGggaWQ9XCJjYXNlLXZpZXdlci1maWVsZC1sYWJlbFwiICpuZ0lmPVwiIWlzRmllbGRUb0hhdmVOb0xhYmVsKGZpZWxkKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhc2Utdmlld2VyLWxhYmVsIHRleHQtMTZcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge3tmaWVsZC5sYWJlbCB8IHJweFRyYW5zbGF0ZX19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgICAgICAgICA8dGQgW2lkXT1cIidjYXNlLXZpZXdlci1maWVsZC1yZWFkLS0nICsgZmllbGQuaWRcIiBzY29wZT1cImNvbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LTE2XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxjY2QtZmllbGQtcmVhZCBbdG9wTGV2ZWxGb3JtR3JvdXBdPVwiZm9ybUdyb3VwPy5jb250cm9sc1snZGF0YSddXCIgW2Nhc2VGaWVsZHNdPVwiY2FzZUZpZWxkc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2FzZUZpZWxkXT1cImZpZWxkXCIgW2Nhc2VSZWZlcmVuY2VdPVwiY2FzZURldGFpbHMuY2FzZV9pZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NjZC1maWVsZC1yZWFkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgIDx0ciAqbmdTd2l0Y2hDYXNlPVwiZmFsc2VcIiBjbGFzcz1cImNvbXBvdW5kLWZpZWxkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHRoIFtpZF09XCInY2FzZS12aWV3ZXItZmllbGQtcmVhZC0tJyArIGZpZWxkLmlkXCIgc2NvcGU9XCJjb2xcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC0xNlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2NkLWZpZWxkLXJlYWQgW3RvcExldmVsRm9ybUdyb3VwXT1cImZvcm1Hcm91cC5jb250cm9sc1snZGF0YSddXCIgW2Nhc2VGaWVsZHNdPVwiY2FzZUZpZWxkc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2FzZUZpZWxkXT1cImZpZWxkXCIgW2Nhc2VSZWZlcmVuY2VdPVwiY2FzZURldGFpbHMuY2FzZV9pZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NjZC1maWVsZC1yZWFkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDwvdGJvZHk+XG4gICAgICAgICAgICA8L3RhYmxlPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvbWF0LXRhYj5cbiAgICAgICAgPG1hdC10YWIgKm5nRm9yPVwibGV0IHRhYiBvZiBhcHBlbmRlZFRhYnNcIiBbaWRdPVwidGFiLmlkXCIgW2xhYmVsXT1cInRhYi5sYWJlbCB8IHJweFRyYW5zbGF0ZVwiPlxuICAgICAgICA8L21hdC10YWI+XG4gICAgICA8L21hdC10YWItZ3JvdXA+XG4gICAgICA8cm91dGVyLW91dGxldCAqbmdJZj1cIihwcmVwZW5kZWRUYWJzICYmIHByZXBlbmRlZFRhYnMubGVuZ3RoKSB8fCAoYXBwZW5kZWRUYWJzICYmIGFwcGVuZGVkVGFicy5sZW5ndGgpXCI+PC9yb3V0ZXItb3V0bGV0PlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
725
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS1mdWxsLWFjY2Vzcy12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9jYXNlLXZpZXdlci9jYXNlLWZ1bGwtYWNjZXNzLXZpZXcvY2FzZS1mdWxsLWFjY2Vzcy12aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9jYXNlLXZpZXdlci9jYXNlLWZ1bGwtYWNjZXNzLXZpZXcvY2FzZS1mdWxsLWFjY2Vzcy12aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQ0wsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQzVCLFNBQVMsRUFDekIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsZUFBZSxJQUFJLFNBQVMsRUFBNEMsTUFBTSxpQ0FBaUMsQ0FBQztBQUN6SCxPQUFPLEVBQTBCLGlCQUFpQixJQUFJLFdBQVcsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3pHLE9BQU8sRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFVLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV2RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEMsT0FBTyxFQUVMLDZCQUE2QixFQUM3QixzQkFBc0IsRUFDdkIsTUFBTSxvREFBb0QsQ0FBQztBQUM1RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDcEQsT0FBTyxFQUFZLFNBQVMsRUFBVyxRQUFRLEVBQW1CLGlCQUFpQixFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNqSSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUN0RixPQUFPLEVBQ0wsc0JBQXNCLEVBQ3RCLFlBQVksRUFDWixZQUFZLEVBQ1osb0JBQW9CLEVBQ3BCLFdBQVcsRUFDWCxjQUFjLEVBQ2QseUJBQXlCLEVBQ3pCLGdCQUFnQixFQUNoQixZQUFZLEVBQ1oscUJBQXFCLEVBQ3RCLE1BQU0sbUJBQW1CLENBQUM7QUFDM0IsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sMkRBQTJELENBQUM7QUFDdkcsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTlELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDekUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sb0RBQW9ELENBQUM7Ozs7Ozs7Ozs7Ozs7SUNuQ3hGLEFBRkYsK0JBQ3dGLGFBQ0U7SUFDdEYsWUFDRjs7SUFBQSxpQkFBSztJQUVILEFBREYsK0JBQStFLFFBQzFFO0lBQUEsWUFBeUU7O0lBQUEsaUJBQUk7SUFFOUUsQUFERix5QkFBRyxZQUNrQztJQUNqQyxhQUErQjs7SUFBQSxpQkFBSTtJQUFDLGFBQ3hDOztJQUVKLEFBREUsQUFERSxpQkFBSSxFQUNBLEVBQ0Y7O0lBVEYsZUFDRjtJQURFLDZFQUNGO0lBRUssZUFBeUU7SUFBekUsa0dBQXlFO0lBR3hFLGVBQStCO0lBQS9CLG1FQUErQjtJQUFLLGVBQ3hDO0lBRHdDLDJGQUN4Qzs7O0lBV0EsMEJBQTBEO0lBQ3hELFlBQ0Y7O0lBQUEsaUJBQUs7OztJQURILGNBQ0Y7SUFERSw0RUFDRjs7O0lBSEYsOEJBQW1FO0lBQ2pFLHNGQUEwRDtJQUc1RCxpQkFBSzs7O0lBSHdCLGNBQTZCO0lBQTdCLDJEQUE2Qjs7O0lBTDFELEFBRkYsK0JBQzJFLGFBQ2U7SUFDdEYsWUFDRjs7SUFBQSxpQkFBSztJQUNMLHlCQUFHO0lBQUEsWUFBZ0M7O0lBQUEsaUJBQUk7SUFDdkMsaUZBQW1FO0lBS3JFLGlCQUFNOzs7SUFSRixlQUNGO0lBREUsNEZBQ0Y7SUFDRyxlQUFnQztJQUFoQyxnRUFBZ0M7SUFDOUIsZUFBaUM7SUFBakMsOEZBQWlDOzs7SUFpQmxDLEFBREYsK0JBQXFGLFlBQ0U7SUFBQSxZQUEwQjs7SUFDakgsQUFEaUgsaUJBQUksRUFDL0c7O0lBRGlGLGVBQTBCO0lBQTFCLG1EQUEwQjs7OztJQUlqSCxBQURGLDhCQUFzRCw0QkFLUTtJQUF6QyxBQURBLHNOQUFtQiwrQkFBd0IsS0FBQywrTUFDekIsMkJBQW9CLEtBQUM7SUFDN0QsQUFEOEQsaUJBQW9CLEVBQzVFOzs7SUFMZSxjQUF3QztJQUV4QyxBQURBLEFBRHlDLEFBQXpDLDZEQUF3Qyx5Q0FBa0MsbUNBQy9DLDJCQUNSOzs7O0lBT3RDLEFBREYsQUFERiw4QkFBd0UsY0FDN0Msa0NBQzhGO0lBQXRDLDBOQUFlLDRCQUFxQixLQUFDO0lBR3hILEFBREUsQUFERSxpQkFBMEIsRUFDdEIsRUFDRjs7O0lBSHVCLGVBQXFEO0lBQXJELDBFQUFxRDs7O0lBUzFFLDhCQUNVOzs7O0lBRCtDLEFBQWQsOEJBQWEsNkNBQW1DOzs7SUFXM0UsQUFERiw4QkFBc0UsY0FDN0I7SUFDckMsWUFBOEI7O0lBQ2xDLEFBRGtDLGlCQUFNLEVBQ25DOzs7SUFERCxlQUE4QjtJQUE5QixvRUFBOEI7OztJQUhwQywwQkFBeUI7SUFDdkIsdUlBQXNFO0lBS3BFLEFBREYsOEJBQTZELGVBQ3JDO0lBQ3BCLHFDQUVpQjtJQUd2QixBQURFLEFBREUsaUJBQU8sRUFDSixFQUNGOzs7O0lBWCtCLGNBQWtDO0lBQWxDLDZEQUFrQztJQUloRSxjQUE0QztJQUE1Qyw2REFBNEM7SUFFNUIsZUFBaUQ7SUFDN0IsQUFBcEIsQUFEa0QsQUFBbEQsdUdBQWlELGlDQUEwQix1QkFDeEQsNkNBQXNDOzs7SUFPM0UsQUFERixBQURGLDhCQUFpRCxhQUNjLGVBQ3JDO0lBQ3BCLHFDQUVpQjtJQUd2QixBQURFLEFBREUsaUJBQU8sRUFDSixFQUNGOzs7O0lBUEMsY0FBNEM7SUFBNUMsNkRBQTRDO0lBRTVCLGVBQWdEO0lBQzVCLEFBQXBCLEFBRGlELEFBQWpELHFFQUFnRCxpQ0FBMEIsdUJBQ3ZELDZDQUFzQzs7O0lBcEJyRiw2QkFBa0k7SUFDaEksK0JBQWtHO0lBQ2hHLGlDQUFvRDs7SUFjbEQsQUFiQSxrSUFBeUIscUhBYXdCOztJQVVyRCxpQkFBTTs7Ozs7SUF6Qm1CLGNBQW1CO0lBQThCLEFBQTdCLEFBQXBCLG9DQUFtQixvQ0FBNkIsMkJBQXdCO0lBQ2pGLGNBQXFDO0lBQXJDLDBEQUFxQztJQUM1QyxlQUFrQjtJQUFsQixtQ0FBa0I7SUFhbEIsY0FBbUI7SUFBbkIsb0NBQW1COzs7SUFsQmhDLDZCQUErRTs7SUFDN0UsNkJBQU87SUFDUCx1SUFBa0k7OztJQTZCcEksQUFERSxpQkFBUSxFQUNGOzs7O0lBL0JELHdCQUFnQjs7SUFFVyxlQUFnRztJQUFoRyw4S0FBZ0c7OztJQUp0SSxtQ0FBd087OztJQUN0Tyx3SEFBMkI7SUFrQzdCLGlCQUFVOzs7O0lBbkNpRyxBQUFuQyxBQUFkLDhCQUFhLDZDQUFtQywwSUFBNkg7OztJQW9Ddk8sOEJBQ1U7Ozs7SUFEOEMsQUFBZCwrQkFBYSw4Q0FBbUM7OztJQUc1RixnQ0FBd0g7Ozs7SUE1QzFILDZCQUF1QztJQUNyQyw0Q0FDcUM7SUFEWSwwT0FBdUIseUJBQWtCLEtBQUM7SUF3Q3pGLEFBcENBLEFBRkEscUdBQTRGLHdGQUU0SSx3RkFvQzdJO0lBRTdGLGlCQUFnQjtJQUNoQixpSEFBd0c7Ozs7SUEzQ1osY0FBc0I7SUFDaEgsQUFEMEYsb0NBQXNCLDBDQUM5RTtJQUNULGVBQWdCO0lBQWhCLDhDQUFnQjtJQUVoQixjQUFlO0lBQWYsMkNBQWU7SUFvQ2YsY0FBZTtJQUFmLDZDQUFlO0lBRzFCLGNBQXNGO0lBQXRGLCtIQUFzRjs7QUR4RDVHLE1BQU0sT0FBTywyQkFBMkI7SUEwQ25CO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQTFEWixNQUFNLENBQVUsa0JBQWtCLEdBQUcsUUFBUSxDQUFDO0lBQzlDLE1BQU0sQ0FBVSxrQkFBa0IsR0FBRyxJQUFJLENBQUM7SUFDMUMsTUFBTSxDQUFVLHFCQUFxQixHQUFHLHVCQUF1QixDQUFDO0lBQ2hFLE1BQU0sQ0FBVSxhQUFhLEdBQUcsS0FBSyxDQUFDO0lBQ3RDLE1BQU0sQ0FBVSxXQUFXLEdBQUcsR0FBRyxDQUFDO0lBQ3hCLGtCQUFrQixHQUFHLFVBQVUsQ0FBQztJQUVqQyxRQUFRLEdBQUcsSUFBSSxDQUFDO0lBQ2hCLGdCQUFnQixHQUFHLElBQUksQ0FBQztJQUN4QixXQUFXLENBQVc7SUFDdEIsYUFBYSxHQUFjLEVBQUUsQ0FBQztJQUM5QixZQUFZLEdBQWMsRUFBRSxDQUFDO0lBRXRDLE1BQU0sR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDO0lBQzVCLFVBQVUsQ0FBWTtJQUN0QixVQUFVLENBQWM7SUFDeEIsU0FBUyxDQUFZO0lBQ3JCLEtBQUssQ0FBTTtJQUNYLGdCQUFnQixHQUFHLDJCQUEyQixDQUFDLGtCQUFrQixDQUFDO0lBQ2xFLHlCQUF5QixHQUFHLDJCQUEyQixDQUFDLHFCQUFxQixDQUFDO0lBQzlFLFdBQVcsR0FBVywyQkFBMkIsQ0FBQyxrQkFBa0IsQ0FBQztJQUNyRSxhQUFhLEdBQUcsS0FBSyxDQUFDO0lBQ3RCLG9CQUFvQixDQUFlO0lBQ25DLGdCQUFnQixDQUFlO0lBQy9CLGlCQUFpQixDQUFlO0lBQ2hDLFlBQVksQ0FBa0I7SUFDOUIsT0FBTyxDQUFTO0lBQ2hCLFlBQVksQ0FBZTtJQUMzQix3QkFBd0IsQ0FBMkI7SUFDbkQsZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDO0lBQ3JCLGVBQWUsR0FBRyxLQUFLLENBQUM7SUFDeEIscUJBQXFCLEdBQUcsS0FBSyxDQUFDO0lBQ3BCLHlCQUF5QixHQUFHLDBCQUEwQixDQUFDO0lBQ2hFLElBQUksR0FBbUIsRUFBRSxDQUFDO0lBQzNCLE9BQU8sQ0FBUztJQUNoQixvQkFBb0IsR0FBWSxLQUFLLENBQUM7SUFFdEMscUJBQXFCLENBQW9CO0lBQ0MsUUFBUSxDQUFjO0lBRXZFLFlBQ21CLE1BQWMsRUFDZCxLQUFxQixFQUNyQixNQUFjLEVBQ2QseUJBQW9ELEVBQ3BELFlBQTBCLEVBQzFCLHNCQUE4QyxFQUM5QyxNQUFpQixFQUNqQixZQUEwQixFQUMxQixZQUEwQixFQUMxQixvQkFBMEMsRUFDMUMsMEJBQXNELEVBQ3RELFFBQWtCLEVBQ2xCLEdBQXNCLEVBQ3RCLHFCQUE0QyxFQUM1QyxrQkFBb0MsRUFDcEMsY0FBOEIsRUFDOUIsa0JBQXNDLEVBQ3RDLG9CQUEwQztRQWpCMUMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQ3JCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCw4QkFBeUIsR0FBekIseUJBQXlCLENBQTJCO1FBQ3BELGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBd0I7UUFDOUMsV0FBTSxHQUFOLE1BQU0sQ0FBVztRQUNqQixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQix5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXNCO1FBQzFDLCtCQUEwQixHQUExQiwwQkFBMEIsQ0FBNEI7UUFDdEQsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNsQixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QiwwQkFBcUIsR0FBckIscUJBQXFCLENBQXVCO1FBQzVDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBa0I7UUFDcEMsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDdEMseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFzQjtJQUU3RCxDQUFDO0lBRU0sUUFBUTtRQUNiLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUNuRixJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLENBQUMsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDO2dCQUM5QyxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztnQkFDZixJQUFJLENBQUMsb0JBQW9CLEdBQUcsS0FBSyxDQUFDO2dCQUNsQyxPQUFPLElBQUksQ0FBQztZQUNkLENBQUM7WUFDRCxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFSixVQUFVLEVBQUUsQ0FBQztRQUNiLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUVaLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFbkQsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsMEJBQTBCLEVBQUUsMEJBQTBCLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyx1QkFBK0IsRUFBRSxFQUFFO1lBQzlILG1HQUFtRztZQUNuRyxJQUFJLHVCQUF1QixLQUFLLFNBQVMsRUFBRSxDQUFDO2dCQUMxQyxJQUFJLENBQUMsMEJBQTBCLENBQUMsaUJBQWlCLENBQUMsdUJBQXVCLENBQUMsQ0FBQztZQUM3RSxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxTQUFTLElBQUksQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztZQUN4RSxJQUFJLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRTtnQkFDakMsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2xFLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELElBQUksQ0FBQywyQkFBMkIsRUFBRSxDQUFDO1FBRW5DLDhCQUE4QjtRQUM5QixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQ2pELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBQzlDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO0lBQ3BELENBQUM7SUFFTSxXQUFXLENBQUMsT0FBc0I7UUFDdkMsSUFBSSxPQUFPLElBQUksT0FBTyxDQUFDLGFBQWEsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDM0UsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ1osSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUN6QixJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUM3QixDQUFDO0lBQ0gsQ0FBQztJQUVNLGNBQWM7UUFDbkIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUM7SUFDakQsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxJQUFJLENBQUMsc0JBQXNCLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDMUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUM5QyxDQUFDO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNuQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzFDLENBQUM7UUFDRCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQzdDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDekMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDcEMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRU0sV0FBVyxDQUFDLFlBQWlCO1FBQ2xDLElBQUksWUFBWSxFQUFFLENBQUM7WUFDakIsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQzdCLENBQUM7SUFDSCxDQUFDO0lBRU8sMkJBQTJCO1FBQ2pDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTTthQUM5QixJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLFlBQVksYUFBYSxDQUFDLENBQUM7YUFDdkQsU0FBUyxDQUFDLENBQUMsS0FBb0IsRUFBRSxFQUFFO1lBQ2xDLE1BQU0sR0FBRyxHQUFHLEtBQUssSUFBSyxLQUFhLENBQUMsR0FBRyxDQUFDO1lBQ3hDLElBQUksR0FBRyxFQUFFLENBQUM7Z0JBQ1IsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7Z0JBQzNDLE1BQU0sR0FBRyxHQUFHLE1BQU0sSUFBSSxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUNoRyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLEtBQUssR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7Z0JBQ2hHLDJHQUEyRztnQkFDM0csNEdBQTRHO2dCQUM1RyxJQUFJLE1BQU0sRUFBRSxRQUFRLEVBQUUsQ0FBQztvQkFDckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQztnQkFDaEQsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ1IsQ0FBQztJQUVNLGdCQUFnQjtRQUNyQixPQUFPLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ2pGLENBQUM7SUFFTSxzQkFBc0I7UUFDM0IsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO1FBQzNCLElBQUksQ0FBQyxXQUFXLEdBQUcsMkJBQTJCLENBQUMsa0JBQWtCLENBQUM7UUFDbEUsSUFBSSxDQUFDLG9CQUFvQixHQUFHLEtBQUssQ0FBQztJQUNwQyxDQUFDO0lBRU0sS0FBSyxDQUFDLFlBQVksQ0FBQyxPQUF3QjtRQUNoRCxJQUFJLElBQUksQ0FBQyxvQkFBb0IsRUFBQyxDQUFDO1lBQzdCLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQztRQUNqQyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQy9DLElBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDOUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM5QyxNQUFNLGNBQWMsR0FBVyxFQUFFLENBQUM7UUFFbEMsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDdkIsY0FBYyxDQUFDLGVBQWUsQ0FBQyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7UUFDdkQsQ0FBQztRQUVELCtEQUErRDtRQUMvRCxJQUFJLE9BQU8sQ0FBQyxFQUFFLEtBQUssZ0JBQWdCLENBQUMseUJBQXlCLEVBQUUsQ0FBQztZQUM5RCxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsMkJBQTJCLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3BGLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzFDLENBQUM7YUFBTSxJQUFJLE9BQU8sQ0FBQyxFQUFFLEtBQUssZ0JBQWdCLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDbEQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsNkJBQTZCLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ3JGLFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUU7Z0JBQ3pDLElBQUksTUFBTSxLQUFLLFFBQVEsRUFBRSxDQUFDO29CQUN4QixJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQzt5QkFDcEQsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFO3dCQUNiLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLE1BQU0sRUFBRSxnQkFBZ0IsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDO29CQUNoRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUU7d0JBQ0wsSUFBSSxDQUFDLHlCQUF5QixDQUFDLGtCQUFrQixDQUFDLEVBQUUsTUFBTSxFQUFFLGdCQUFnQixDQUFDLG9CQUFvQixFQUFFLENBQUMsQ0FBQztvQkFDdkcsQ0FBQyxDQUFDLENBQUM7Z0JBQ1AsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQzthQUFNLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLE9BQU8sQ0FBQyxFQUFFLEtBQUssZ0JBQWdCLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDcEUsY0FBYyxDQUFDLGlCQUFpQixDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUM7WUFDN0QsY0FBYyxDQUFDLDJCQUEyQixDQUFDLGtCQUFrQixDQUFDLEdBQUcsV0FBVyxDQUFDO1lBQzdFLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxrQkFBa0IsQ0FDL0M7Z0JBQ0UsTUFBTSxFQUFFLGdCQUFnQixDQUFDLGFBQWE7Z0JBQ3RDLEdBQUcsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsRUFBRTtnQkFDL0MsSUFBSSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLEVBQUU7Z0JBQ25DLElBQUksRUFBRSxPQUFPLENBQUMsRUFBRTtnQkFDaEIsV0FBVyxFQUFFLGNBQWM7YUFDNUIsQ0FBQyxDQUFDO1FBQ1AsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMseUJBQXlCLENBQUMsa0JBQWtCLENBQy9DO2dCQUNFLE1BQU0sRUFBRSxnQkFBZ0IsQ0FBQyxlQUFlO2dCQUN4QyxXQUFXLEVBQUUsY0FBYztnQkFDM0IsSUFBSSxFQUFFLE9BQU8sQ0FBQyxFQUFFO2dCQUNoQixVQUFVLEVBQUUsSUFBSSxDQUFDLEtBQUs7YUFDdkIsQ0FBQyxDQUFDO1FBQ1AsQ0FBQztJQUNILENBQUM7SUFFTSxjQUFjO1FBQ25CLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDckcsQ0FBQztJQUVNLG9CQUFvQixDQUFDLHFCQUE0QztRQUN0RSxJQUFJLENBQUMsYUFBYSxHQUFHLHFCQUFxQixDQUFDLGFBQWEsQ0FBQztRQUN6RCxJQUFJLENBQUMsV0FBVyxHQUFHLHFCQUFxQixDQUFDLFdBQVcsQ0FBQztRQUNyRCxJQUFJLENBQUMsT0FBTyxHQUFHLHFCQUFxQixDQUFDLE9BQU8sQ0FBQztJQUMvQyxDQUFDO0lBRU0sT0FBTztRQUNaLE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFTSx1QkFBdUI7UUFDNUIsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLO2VBQ2IsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjO2VBQ3pCLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQztlQUNqQyxDQUFDLElBQUksQ0FBQyxLQUFLO21CQUNULElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTzttQkFDbEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsWUFBWTttQkFDL0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFTSxtQkFBbUI7UUFDeEIsSUFBSSxNQUFjLENBQUM7UUFDbkIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDckMsSUFBSSxTQUFTLEdBQUcsR0FBRyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3BELElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUNuSCxNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzdCLDhEQUE4RDtZQUM5RCxNQUFNLFFBQVEsR0FBRyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzdELElBQUksUUFBUSxHQUFZLElBQUksQ0FBQztZQUM3QixJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUN4QixJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQztZQUMxQixDQUFDO1lBQ0QsTUFBTSxjQUFjLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDckUsSUFBSSxjQUFjLElBQUksY0FBYyxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUM1QyxRQUFRLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQWdCLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsV0FBVyxFQUFFLEtBQUssUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7WUFDNUcsQ0FBQztZQUNELDZCQUE2QjtZQUM3QixJQUFJLFFBQVEsRUFBRSxDQUFDO2dCQUNiLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO29CQUMvRixNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxLQUFLLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDekUsMkdBQTJHO29CQUMzRyw0R0FBNEc7b0JBQzVHLElBQUksTUFBTSxFQUFFLFFBQVEsRUFBRSxDQUFDO3dCQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDO29CQUNoRCxDQUFDO2dCQUNILENBQUMsQ0FBQyxDQUFDO2dCQUNILHNCQUFzQjtZQUN4QixDQUFDO2lCQUFNLENBQUM7Z0JBQ04sNkNBQTZDO2dCQUM3QyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUM3RyxzREFBc0Q7Z0JBQ3RELE1BQU0sWUFBWSxHQUFZLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO2dCQUM5RCxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sRUFBRSxjQUFjLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLFFBQVEsRUFBRSxZQUFZLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO29CQUNwSCxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxLQUFLLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDN0UsMkdBQTJHO29CQUMzRyw0R0FBNEc7b0JBQzVHLElBQUksTUFBTSxFQUFFLFFBQVEsRUFBRSxDQUFDO3dCQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDO29CQUNoRCxDQUFDO2dCQUNILENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztRQUNILENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBTSxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsMkJBQTJCLENBQUMsYUFBYSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQzFFLFNBQVMsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSwyQkFBMkIsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUMvRSxJQUFJLFNBQVMsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztnQkFDbkMsU0FBUyxHQUFHLFVBQVUsQ0FBQztZQUN6QixDQUFDO2lCQUFNLENBQUM7Z0JBQ04sSUFBSSxTQUFTLENBQUMsUUFBUSxDQUFDLGtCQUFrQixDQUFDLElBQUksU0FBUyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO29CQUMxRSxTQUFTLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO2dCQUNwRixDQUFDO1lBQ0gsQ0FBQztZQUNELE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUN0QyxDQUFDLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQywyQkFBMkIsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLENBQUMsV0FBVyxFQUFFO2dCQUM5RSxTQUFTLENBQUMsT0FBTyxDQUFDLDJCQUEyQixDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1lBQ2hGLDJHQUEyRztZQUMzRyw0R0FBNEc7WUFDNUcsSUFBSSxNQUFNLEVBQUUsUUFBUSxFQUFFLENBQUM7Z0JBQ3JCLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUM7WUFDaEQsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRU0sd0JBQXdCO1FBQzdCLE1BQU0seUJBQXlCLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJO2FBQ3BELE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsRUFBRSxLQUFLLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQy9GLE9BQU8seUJBQXlCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM5RixDQUFDO0lBRUQsd0ZBQXdGO0lBQ2pGLFVBQVUsQ0FBQyxlQUF1QjtRQUN2QyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDN0QsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQztRQUNsQywyQkFBMkI7UUFDM0Isa0RBQWtEO1FBQ2xELElBQUksQ0FBQyxlQUFlLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUM7WUFDM0UsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLE1BQU0sSUFBSSxDQUFDLFFBQVEsS0FBSyxJQUFJLENBQUMsa0JBQWtCO21CQUM5RCxRQUFRLEtBQUssSUFBSSxDQUFDLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNqRixvRkFBb0Y7WUFDcEYsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFxQixDQUFDO1lBQzVELE1BQU0sRUFBRSxHQUFJLEdBQUcsQ0FBQyxPQUFPLENBQUMsYUFBNkIsQ0FBQyxFQUFFLENBQUM7WUFDekQsc0NBQXNDO1lBQ3RDLDhDQUE4QztZQUM5QyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ3pELENBQUM7YUFBTSxDQUFDO1lBQ04sZ0RBQWdEO1lBQ2hELHNDQUFzQztZQUN0QyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sRUFBRSxjQUFjLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQ3BHLENBQUM7SUFDSCxDQUFDO0lBRU0sYUFBYSxDQUFDLHNCQUE4QjtRQUNqRCxxSEFBcUg7UUFDckgsK0NBQStDO1FBQy9DLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxTQUFTLEtBQUssc0JBQXNCLENBQUMsQ0FBQztRQUNoSCxJQUFJLGNBQWMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxjQUFjLENBQUM7WUFDdkMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLEdBQUcsY0FBYyxDQUFDO1FBQy9DLENBQUM7SUFDSCxDQUFDO0lBRU0sa0JBQWtCO1FBQ3ZCLDhHQUE4RztRQUM5RyxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUk7WUFDekMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQzlCLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLE1BQU0sSUFBSSxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyx1QkFBdUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3ZHLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFFVCxJQUFJLFlBQVksRUFBRSxDQUFDO1lBQ2pCLDZHQUE2RztZQUM3RywrQkFBK0I7WUFDL0IsSUFBSSxDQUFDLHFCQUFxQixHQUFHLFlBQVksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUNuRCxTQUFTLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyx1QkFBdUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLHlCQUF5QixLQUFLLElBQUksQ0FBQyx5QkFBeUIsQ0FBQztZQUU1SCxrQ0FBa0M7WUFDbEMseUdBQXlHO1lBQ3pHLDhHQUE4RztZQUM5RyxvREFBb0Q7WUFDcEQsTUFBTSxlQUFlLEdBQUcsWUFBWSxDQUFDLE1BQU07aUJBQ3hDLE1BQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsV0FBVyxDQUFDLHVCQUF1QixDQUFDLFNBQVMsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxLQUFLLENBQUM7aUJBQ3ZGLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsRUFBRTtnQkFDM0IsT0FBTyxXQUFXLENBQUMsMkJBQTJCLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQ25FLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUVSLElBQUksZUFBZSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUN4QixNQUFNLFdBQVcsR0FBRyxlQUFlLEdBQUcsQ0FBQztvQkFDckMsQ0FBQyxDQUFDLGFBQWEsZUFBZSw2QkFBNkIsQ0FBQyxDQUFDLENBQUMsc0NBQXNDLENBQUM7Z0JBQ3ZHLDZDQUE2QztnQkFDN0MsSUFBSSxDQUFDLHdCQUF3QixHQUFHO29CQUM5QixVQUFVLEVBQUUsc0JBQXNCLENBQUMsV0FBVztvQkFDOUMsV0FBVyxFQUFFLFdBQVc7b0JBQ3hCLFdBQVc7b0JBQ1gsUUFBUSxFQUFFLElBQUk7b0JBQ2QsUUFBUSxFQUFFLGlCQUFpQjtvQkFDM0Isa0JBQWtCLEVBQUUsSUFBSTtvQkFDeEIsc0JBQXNCLEVBQUUsWUFBWSxDQUFDLEtBQUs7b0JBQzFDLFdBQVcsRUFBRSw2QkFBNkIsQ0FBQyxXQUFXO2lCQUN2RCxDQUFDO2dCQUVGLE9BQU8sSUFBSSxDQUFDO1lBQ2QsQ0FBQztRQUNILENBQUM7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLG9CQUFvQixDQUFDLFNBQW9CO1FBQzlDLE9BQU8sU0FBUyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEtBQUssbUJBQW1CO2VBQ25ELFNBQVMsQ0FBQyx5QkFBeUIsS0FBSyx5QkFBeUIsQ0FBQztJQUN6RSxDQUFDO0lBRU8sSUFBSTtRQUNWLDRCQUE0QjtRQUM1QixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDakUsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDdEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsMEJBQTBCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ25FLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDdEQsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLFFBQVEsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDN0MsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3JCLENBQUM7SUFDSCxDQUFDO0lBRU8sMEJBQTBCLENBQUMsSUFBZTtRQUNoRCxPQUFPLElBQUksRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQzthQUM1RixNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztJQUN4RyxDQUFDO0lBRU8sWUFBWTtRQUNsQixNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRTtZQUMxRCxPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLFNBQVMsRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUN6RCxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFUCxPQUFPLGNBQWMsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSyxjQUFjLENBQUMsVUFBdUI7UUFDNUMsSUFBSSxLQUFLLEdBQVcsRUFBRSxDQUFDO1FBQ3ZCLElBQUksVUFBVSxFQUFFLENBQUM7WUFDZixVQUFVLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFO2dCQUM3QixLQUFLLEdBQUc7b0JBQ04sR0FBRyxLQUFLO29CQUNSLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxLQUFLO2lCQUNoQyxDQUFDO1lBQ0osQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO1FBQ0QsT0FBTyxJQUFJLFNBQVMsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLFdBQVcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVPLFdBQVc7UUFDakIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM5QyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzVCLENBQUM7cUhBcmJVLDJCQUEyQjs2REFBM0IsMkJBQTJCOzs7Ozs7WUM5QnhDLEFBZEEsOEVBQ3dGLCtEQWNiO1lBVzNFLDhDQUl5RDtZQUF2RCwySkFBeUIsZ0NBQTRCLElBQUM7WUFDeEQsaUJBQXNCO1lBQ3RCLGtDQUFtRjtZQUVqRixBQURGLDhCQUFzQixhQUNTO1lBQzNCLHFDQUErRDtZQUMvRCw0RUFBcUY7WUFHdkYsaUJBQU07WUFDTiw0RUFBc0Q7WUFPeEQsaUJBQU07WUFDTiw0RUFBd0U7WUFPdEUsQUFERiwrQkFBc0IsZUFDSztZQUN2QixpR0FBdUM7WUErQzNDLEFBREUsaUJBQU0sRUFDRjs7WUF2R0Esa0hBQWlGO1lBY2pGLGNBQTRCO1lBQTVCLHFEQUE0QjtZQWFoQyxjQUF3QztZQUV4QyxBQURBLEFBREEsMERBQXdDLG9EQUNPLG9EQUNBO1lBR25DLGNBQThCO1lBQUMsQUFBL0IsZ0RBQThCLDJCQUF1QjtZQUc5QyxlQUEyQjtZQUEzQiw2Q0FBMkI7WUFDVCxjQUFnRDtZQUFoRCw2RUFBZ0Q7WUFJL0UsY0FBc0I7WUFBdEIsMkNBQXNCO1lBUVAsY0FBK0M7WUFBL0Msd0VBQStDO1lBUW5ELGVBQXNCO1lBQXRCLDJDQUFzQjs7O2lGRFo1QiwyQkFBMkI7Y0FMdkMsU0FBUzsyQkFDRSwyQkFBMkI7NGpCQVlyQixRQUFRO2tCQUF2QixLQUFLO1lBQ1UsZ0JBQWdCO2tCQUEvQixLQUFLO1lBQ1UsV0FBVztrQkFBMUIsS0FBSztZQUNVLGFBQWE7a0JBQTVCLEtBQUs7WUFDVSxZQUFZO2tCQUEzQixLQUFLO1lBMkIyQyxRQUFRO2tCQUF4RCxTQUFTO21CQUFDLFVBQVUsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7O2tGQXZDN0IsMkJBQTJCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTG9jYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgSW5wdXQsIE5nWm9uZSwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIE9uSW5pdCxcbiAgU2ltcGxlQ2hhbmdlcywgVmlld0NoaWxkLCBWaWV3Q29udGFpbmVyUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdExlZ2FjeURpYWxvZyBhcyBNYXREaWFsb2csIE1hdExlZ2FjeURpYWxvZ0NvbmZpZyBhcyBNYXREaWFsb2dDb25maWcgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9sZWdhY3ktZGlhbG9nJztcbmltcG9ydCB7IE1hdExlZ2FjeVRhYiBhcyBNYXRUYWIsIE1hdExlZ2FjeVRhYkdyb3VwIGFzIE1hdFRhYkdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbGVnYWN5LXRhYnMnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIE5hdmlnYXRpb25FbmQsIFBhcmFtcywgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IHBsYWluVG9DbGFzcyB9IGZyb20gJ2NsYXNzLXRyYW5zZm9ybWVyJztcbmltcG9ydCB7IFJweFRyYW5zbGF0ZVBpcGUgfSBmcm9tICdycHgteHVpLXRyYW5zbGF0aW9uJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtcbiAgTm90aWZpY2F0aW9uQmFubmVyQ29uZmlnLFxuICBOb3RpZmljYXRpb25CYW5uZXJIZWFkZXJDbGFzcyxcbiAgTm90aWZpY2F0aW9uQmFubmVyVHlwZVxufSBmcm9tICcuLi8uLi8uLi8uLi9jb21wb25lbnRzL2Jhbm5lcnMvbm90aWZpY2F0aW9uLWJhbm5lcic7XG5pbXBvcnQgeyBTaG93Q29uZGl0aW9uIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlcyc7XG5pbXBvcnQgeyBBY3Rpdml0eSwgQ2FzZUZpZWxkLCBDYXNlVGFiLCBDYXNlVmlldywgQ2FzZVZpZXdUcmlnZ2VyLCBEUkFGVF9RVUVSWV9QQVJBTSwgRGlzcGxheU1vZGUsIERyYWZ0IH0gZnJvbSAnLi4vLi4vLi4vZG9tYWluJztcbmltcG9ydCB7IENhc2VWaWV3RXZlbnRJZHMgfSBmcm9tICcuLi8uLi8uLi9kb21haW4vY2FzZS12aWV3L2Nhc2Utdmlldy1ldmVudC1pZHMuZW51bSc7XG5pbXBvcnQge1xuICBBY3Rpdml0eVBvbGxpbmdTZXJ2aWNlLFxuICBBbGVydFNlcnZpY2UsXG4gIERyYWZ0U2VydmljZSxcbiAgRXJyb3JOb3RpZmllclNlcnZpY2UsXG4gIEZpZWxkc1V0aWxzLFxuICBMb2FkaW5nU2VydmljZSxcbiAgTmF2aWdhdGlvbk5vdGlmaWVyU2VydmljZSxcbiAgTmF2aWdhdGlvbk9yaWdpbixcbiAgT3JkZXJTZXJ2aWNlLFxuICBTZXNzaW9uU3RvcmFnZVNlcnZpY2Vcbn0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHsgQ29udmVydEhyZWZUb1JvdXRlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9jYXNlLWVkaXRvci9zZXJ2aWNlcy9jb252ZXJ0LWhyZWYtdG8tcm91dGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgRGVsZXRlT3JDYW5jZWxEaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi8uLi9kaWFsb2dzJztcbmltcG9ydCB7IENhbGxiYWNrRXJyb3JzQ29udGV4dCB9IGZyb20gJy4uLy4uL2Vycm9yJztcbmltcG9ydCB7IGluaXREaWFsb2cgfSBmcm9tICcuLi8uLi9oZWxwZXJzJztcbmltcG9ydCB7IExpbmtlZENhc2VzU2VydmljZSB9IGZyb20gJy4uLy4uL3BhbGV0dGUvbGlua2VkLWNhc2VzL3NlcnZpY2VzJztcbmltcG9ydCB7IENhc2VGbGFnU3RhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY2FzZS1lZGl0b3Ivc2VydmljZXMvY2FzZS1mbGFnLXN0YXRlLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjY2QtY2FzZS1mdWxsLWFjY2Vzcy12aWV3JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Nhc2UtZnVsbC1hY2Nlc3Mtdmlldy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Nhc2UtZnVsbC1hY2Nlc3Mtdmlldy5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIENhc2VGdWxsQWNjZXNzVmlld0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXMge1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IE9SSUdJTl9RVUVSWV9QQVJBTSA9ICdvcmlnaW4nO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFRSSUdHRVJfVEVYVF9TVEFSVCA9ICdHbyc7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgVFJJR0dFUl9URVhUX0NPTlRJTlVFID0gJ0lnbm9yZSBXYXJuaW5nIGFuZCBHbyc7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgVU5JQ09ERV9TUEFDRSA9ICclMjAnO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEVNUFRZX1NQQUNFID0gJyAnO1xuICBwcml2YXRlIHJlYWRvbmx5IEhFQVJJTkdTX1RBQl9MQUJFTCA9ICdIZWFyaW5ncyc7XG5cbiAgQElucHV0KCkgcHVibGljIGhhc1ByaW50ID0gdHJ1ZTtcbiAgQElucHV0KCkgcHVibGljIGhhc0V2ZW50U2VsZWN0b3IgPSB0cnVlO1xuICBASW5wdXQoKSBwdWJsaWMgY2FzZURldGFpbHM6IENhc2VWaWV3O1xuICBASW5wdXQoKSBwdWJsaWMgcHJlcGVuZGVkVGFiczogQ2FzZVRhYltdID0gW107XG4gIEBJbnB1dCgpIHB1YmxpYyBhcHBlbmRlZFRhYnM6IENhc2VUYWJbXSA9IFtdO1xuXG4gIHB1YmxpYyBCQU5ORVIgPSBEaXNwbGF5TW9kZS5CQU5ORVI7XG4gIHB1YmxpYyBzb3J0ZWRUYWJzOiBDYXNlVGFiW107XG4gIHB1YmxpYyBjYXNlRmllbGRzOiBDYXNlRmllbGRbXTtcbiAgcHVibGljIGZvcm1Hcm91cDogRm9ybUdyb3VwO1xuICBwdWJsaWMgZXJyb3I6IGFueTtcbiAgcHVibGljIHRyaWdnZXJUZXh0U3RhcnQgPSBDYXNlRnVsbEFjY2Vzc1ZpZXdDb21wb25lbnQuVFJJR0dFUl9URVhUX1NUQVJUO1xuICBwdWJsaWMgdHJpZ2dlclRleHRJZ25vcmVXYXJuaW5ncyA9IENhc2VGdWxsQWNjZXNzVmlld0NvbXBvbmVudC5UUklHR0VSX1RFWFRfQ09OVElOVUU7XG4gIHB1YmxpYyB0cmlnZ2VyVGV4dDogc3RyaW5nID0gQ2FzZUZ1bGxBY2Nlc3NWaWV3Q29tcG9uZW50LlRSSUdHRVJfVEVYVF9TVEFSVDtcbiAgcHVibGljIGlnbm9yZVdhcm5pbmcgPSBmYWxzZTtcbiAgcHVibGljIGFjdGl2aXR5U3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHB1YmxpYyBjYXNlU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHB1YmxpYyBlcnJvclN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBwdWJsaWMgZGlhbG9nQ29uZmlnOiBNYXREaWFsb2dDb25maWc7XG4gIHB1YmxpYyBtZXNzYWdlOiBzdHJpbmc7XG4gIHB1YmxpYyBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgcHVibGljIG5vdGlmaWNhdGlvbkJhbm5lckNvbmZpZzogTm90aWZpY2F0aW9uQmFubmVyQ29uZmlnO1xuICBwdWJsaWMgc2VsZWN0ZWRUYWJJbmRleCA9IDA7XG4gIHB1YmxpYyBhY3RpdmVDYXNlRmxhZ3MgPSBmYWxzZTtcbiAgcHVibGljIGNhc2VGbGFnc0V4dGVybmFsVXNlciA9IGZhbHNlO1xuICBwcml2YXRlIHJlYWRvbmx5IGNhc2VGbGFnc1JlYWRFeHRlcm5hbE1vZGUgPSAnI0FSR1VNRU5UKFJFQUQsRVhURVJOQUwpJztcbiAgcHJpdmF0ZSBzdWJzOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuICBwdWJsaWMgZXZlbnRJZDogc3RyaW5nO1xuICBwdWJsaWMgaXNFdmVudEJ1dHRvbkNsaWNrZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBwdWJsaWMgY2FsbGJhY2tFcnJvcnNTdWJqZWN0OiAgIE9ic2VydmFibGU8YW55PjtcbiAgQFZpZXdDaGlsZCgndGFiR3JvdXAnLCB7IHN0YXRpYzogZmFsc2UgfSkgcHVibGljIHRhYkdyb3VwOiBNYXRUYWJHcm91cDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IG5nWm9uZTogTmdab25lLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSByZWFkb25seSBuYXZpZ2F0aW9uTm90aWZpZXJTZXJ2aWNlOiBOYXZpZ2F0aW9uTm90aWZpZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgb3JkZXJTZXJ2aWNlOiBPcmRlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBhY3Rpdml0eVBvbGxpbmdTZXJ2aWNlOiBBY3Rpdml0eVBvbGxpbmdTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZGlhbG9nOiBNYXREaWFsb2csXG4gICAgcHJpdmF0ZSByZWFkb25seSBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRyYWZ0U2VydmljZTogRHJhZnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZXJyb3JOb3RpZmllclNlcnZpY2U6IEVycm9yTm90aWZpZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY29udmVydEhyZWZUb1JvdXRlclNlcnZpY2U6IENvbnZlcnRIcmVmVG9Sb3V0ZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbG9jYXRpb246IExvY2F0aW9uLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY3JmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIHJlYWRvbmx5IHNlc3Npb25TdG9yYWdlU2VydmljZTogU2Vzc2lvblN0b3JhZ2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcnB4VHJhbnNsYXRpb25QaXBlOiBScHhUcmFuc2xhdGVQaXBlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbG9hZGluZ1NlcnZpY2U6IExvYWRpbmdTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbGlua2VkQ2FzZXNTZXJ2aWNlOiBMaW5rZWRDYXNlc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjYXNlRmxhZ1N0YXRlU2VydmljZTogQ2FzZUZsYWdTdGF0ZVNlcnZpY2VcbiAgKSB7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5jYWxsYmFja0Vycm9yc1N1YmplY3QgPSB0aGlzLmVycm9yTm90aWZpZXJTZXJ2aWNlLmVycm9yU291cmNlLnBpcGUoZmlsdGVyKCh4KSA9PiB7XG4gICAgICBpZiAoeCAmJiB4LnN0YXR1cyAhPT0gNDAxICYmIHguc3RhdHVzICE9PSA0MDMpIHtcbiAgICAgICAgdGhpcy5lcnJvciA9IHg7XG4gICAgICAgIHRoaXMuaXNFdmVudEJ1dHRvbkNsaWNrZWQgPSBmYWxzZTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSkpO1xuICAgIFxuICAgIGluaXREaWFsb2coKTtcbiAgICB0aGlzLmluaXQoKTtcblxuICAgIHRoaXMuc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlPy5yZW1vdmVJdGVtKCdldmVudFVybCcpO1xuXG4gICAgdGhpcy5zdWJzY3JpcHRpb24gPSB0aGlzLmNvbnZlcnRIcmVmVG9Sb3V0ZXJTZXJ2aWNlPy5nZXRIcmVmTWFya2Rvd25MaW5rQ29udGVudCgpLnN1YnNjcmliZSgoaHJlZk1hcmtkb3duTGlua0NvbnRlbnQ6IHN0cmluZykgPT4ge1xuICAgICAgLy8gZG8gbm90IGNvbnZlcnQgcm91dGVyIHdpdGggaW5pdGlhbCBkZWZhdWx0IHZhbHVlOyBjb252ZXJ0IHRvIHJvdXRlciBvbmx5IG9uIHVwZGF0ZWQgbGluayBjb250ZW50XG4gICAgICBpZiAoaHJlZk1hcmtkb3duTGlua0NvbnRlbnQgIT09ICdEZWZhdWx0Jykge1xuICAgICAgICB0aGlzLmNvbnZlcnRIcmVmVG9Sb3V0ZXJTZXJ2aWNlLmNhbGxBbmd1bGFyUm91dGVyKGhyZWZNYXJrZG93bkxpbmtDb250ZW50KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmICh0aGlzLmFjdGl2aXR5UG9sbGluZ1NlcnZpY2UuaXNFbmFibGVkICYmICF0aGlzLmFjdGl2aXR5U3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgIHRoaXMuYWN0aXZpdHlTdWJzY3JpcHRpb24gPSB0aGlzLnBvc3RWaWV3QWN0aXZpdHkoKS5zdWJzY3JpYmUoKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMuY2hlY2tSb3V0ZUFuZFNldENhc2VWaWV3VGFiKCk7XG5cbiAgICAvLyBDaGVjayBmb3IgYWN0aXZlIENhc2UgRmxhZ3NcbiAgICB0aGlzLmFjdGl2ZUNhc2VGbGFncyA9IHRoaXMuaGFzQWN0aXZlQ2FzZUZsYWdzKCk7XG4gICAgdGhpcy5saW5rZWRDYXNlc1NlcnZpY2UucmVzZXRMaW5rZWRDYXNlRGF0YSgpO1xuICAgIHRoaXMuY2FzZUZsYWdTdGF0ZVNlcnZpY2UucmVzZXRJbml0aWFsQ2FzZUZsYWdzKCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmIChjaGFuZ2VzICYmIGNoYW5nZXMucHJlcGVuZGVkVGFicyAmJiAhY2hhbmdlcy5wcmVwZW5kZWRUYWJzLmZpcnN0Q2hhbmdlKSB7XG4gICAgICB0aGlzLmluaXQoKTtcbiAgICAgIHRoaXMuY3JmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIHRoaXMub3JnYW5pc2VUYWJQb3NpdGlvbigpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBpc1ByaW50RW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jYXNlRGV0YWlscy5jYXNlX3R5cGUucHJpbnRFbmFibGVkO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmFjdGl2aXR5UG9sbGluZ1NlcnZpY2UuaXNFbmFibGVkKSB7XG4gICAgICB0aGlzLnVuc3Vic2NyaWJlKHRoaXMuYWN0aXZpdHlTdWJzY3JpcHRpb24pO1xuICAgIH1cbiAgICBpZiAoIXRoaXMucm91dGUuc25hcHNob3QuZGF0YS5jYXNlKSB7XG4gICAgICB0aGlzLnVuc3Vic2NyaWJlKHRoaXMuY2FzZVN1YnNjcmlwdGlvbik7XG4gICAgfVxuICAgIHRoaXMudW5zdWJzY3JpYmUodGhpcy5jYWxsYmFja0Vycm9yc1N1YmplY3QpO1xuICAgIHRoaXMudW5zdWJzY3JpYmUodGhpcy5lcnJvclN1YnNjcmlwdGlvbik7XG4gICAgdGhpcy51bnN1YnNjcmliZSh0aGlzLnN1YnNjcmlwdGlvbik7XG4gICAgdGhpcy5zdWJzLmZvckVhY2gocyA9PiBzLnVuc3Vic2NyaWJlKCkpO1xuICB9XG5cbiAgcHVibGljIHVuc3Vic2NyaWJlKHN1YnNjcmlwdGlvbjogYW55KSB7XG4gICAgaWYgKHN1YnNjcmlwdGlvbikge1xuICAgICAgc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjaGVja1JvdXRlQW5kU2V0Q2FzZVZpZXdUYWIoKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzLnB1c2godGhpcy5yb3V0ZXIuZXZlbnRzXG4gICAgICAucGlwZShmaWx0ZXIoKGV2ZW50KSA9PiBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpKVxuICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IE5hdmlnYXRpb25FbmQpID0+IHtcbiAgICAgICAgY29uc3QgdXJsID0gZXZlbnQgJiYgKGV2ZW50IGFzIGFueSkudXJsO1xuICAgICAgICBpZiAodXJsKSB7XG4gICAgICAgICAgY29uc3QgdGFiVXJsID0gdXJsID8gdXJsLnNwbGl0KCcjJykgOiBudWxsO1xuICAgICAgICAgIGNvbnN0IHRhYiA9IHRhYlVybCAmJiB0YWJVcmwubGVuZ3RoID4gMSA/IHRhYlVybFt0YWJVcmwubGVuZ3RoIC0gMV0ucmVwbGFjZUFsbCgnJTIwJywgJyAnKSA6ICcnO1xuICAgICAgICAgIGNvbnN0IG1hdFRhYiA9IHRoaXMudGFiR3JvdXAuX3RhYnMuZmluZCgoeCkgPT4geC50ZXh0TGFiZWwudG9Mb3dlckNhc2UoKSA9PT0gdGFiLnRvTG93ZXJDYXNlKCkpO1xuICAgICAgICAgIC8vIFVwZGF0ZSBzZWxlY3RlZEluZGV4IG9ubHkgaWYgbWF0VGFiLnBvc2l0aW9uIGlzIGEgbm9uLXplcm8gbnVtYmVyIChwb3NpdGl2ZSBvciBuZWdhdGl2ZSk7IHRoaXMgbWVhbnMgdGhlXG4gICAgICAgICAgLy8gbWF0VGFiIGlzIG5vdCBhbHJlYWR5IHNlbGVjdGVkIChwb3NpdGlvbiBpcyByZWxhdGl2ZTsgcG9zaXRpdmUgPSByaWdodCwgbmVnYXRpdmUgPSBsZWZ0KSBvciBpdCB3b3VsZCBiZSAwXG4gICAgICAgICAgaWYgKG1hdFRhYj8ucG9zaXRpb24pIHtcbiAgICAgICAgICAgIHRoaXMudGFiR3JvdXAuc2VsZWN0ZWRJbmRleCA9IG1hdFRhYi5wb3NpdGlvbjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pKTtcbiAgfVxuXG4gIHB1YmxpYyBwb3N0Vmlld0FjdGl2aXR5KCk6IE9ic2VydmFibGU8QWN0aXZpdHlbXT4ge1xuICAgIHJldHVybiB0aGlzLmFjdGl2aXR5UG9sbGluZ1NlcnZpY2UucG9zdFZpZXdBY3Rpdml0eSh0aGlzLmNhc2VEZXRhaWxzPy5jYXNlX2lkKTtcbiAgfVxuXG4gIHB1YmxpYyBjbGVhckVycm9yc0FuZFdhcm5pbmdzKCk6IHZvaWQge1xuICAgIHRoaXMucmVzZXRFcnJvcnMoKTtcbiAgICB0aGlzLmlnbm9yZVdhcm5pbmcgPSBmYWxzZTtcbiAgICB0aGlzLnRyaWdnZXJUZXh0ID0gQ2FzZUZ1bGxBY2Nlc3NWaWV3Q29tcG9uZW50LlRSSUdHRVJfVEVYVF9TVEFSVDtcbiAgICB0aGlzLmlzRXZlbnRCdXR0b25DbGlja2VkID0gZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgYXBwbHlUcmlnZ2VyKHRyaWdnZXI6IENhc2VWaWV3VHJpZ2dlcik6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLmlzRXZlbnRCdXR0b25DbGlja2VkKXtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5pc0V2ZW50QnV0dG9uQ2xpY2tlZCA9IHRydWU7XG4gICAgY29uc3Qgc3Bpbm5lciA9IHRoaXMubG9hZGluZ1NlcnZpY2UucmVnaXN0ZXIoKTtcbiAgICB0aGlzLmxvYWRpbmdTZXJ2aWNlLmFkZFNoYXJlZFNwaW5uZXIoc3Bpbm5lcik7XG4gICAgdGhpcy5lcnJvck5vdGlmaWVyU2VydmljZS5hbm5vdW5jZUVycm9yKG51bGwpO1xuICAgIGNvbnN0IHRoZVF1ZXJ5UGFyYW1zOiBQYXJhbXMgPSB7fTtcblxuICAgIGlmICh0aGlzLmlnbm9yZVdhcm5pbmcpIHtcbiAgICAgIHRoZVF1ZXJ5UGFyYW1zWydpZ25vcmVXYXJuaW5nJ10gPSB0aGlzLmlnbm9yZVdhcm5pbmc7XG4gICAgfVxuXG4gICAgLy8gd2UgbWF5IG5lZWQgdG8gdGFrZSBjYXJlIG9mIGRpZmZlcmVudCB0cmlnZ2VycyBpbiB0aGUgZnV0dXJlXG4gICAgaWYgKHRyaWdnZXIuaWQgPT09IENhc2VWaWV3RXZlbnRJZHMuUXVlcnlNYW5hZ2VtZW50UmFpc2VRdWVyeSkge1xuICAgICAgYXdhaXQgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW2AvcXVlcnktbWFuYWdlbWVudC9xdWVyeS8ke3RoaXMuY2FzZURldGFpbHMuY2FzZV9pZH1gXSk7XG4gICAgICB0aGlzLmxvYWRpbmdTZXJ2aWNlLnVucmVnaXN0ZXIoc3Bpbm5lcik7XG4gICAgfSBlbHNlIGlmICh0cmlnZ2VyLmlkID09PSBDYXNlVmlld0V2ZW50SWRzLkRFTEVURSkge1xuICAgICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihEZWxldGVPckNhbmNlbERpYWxvZ0NvbXBvbmVudCwgdGhpcy5kaWFsb2dDb25maWcpO1xuICAgICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XG4gICAgICAgIGlmIChyZXN1bHQgPT09ICdEZWxldGUnKSB7XG4gICAgICAgICAgdGhpcy5kcmFmdFNlcnZpY2UuZGVsZXRlRHJhZnQodGhpcy5jYXNlRGV0YWlscy5jYXNlX2lkKVxuICAgICAgICAgICAgLnN1YnNjcmliZShfID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5uYXZpZ2F0aW9uTm90aWZpZXJTZXJ2aWNlLmFubm91bmNlTmF2aWdhdGlvbih7IGFjdGlvbjogTmF2aWdhdGlvbk9yaWdpbi5EUkFGVF9ERUxFVEVEIH0pO1xuICAgICAgICAgICAgfSwgXyA9PiB7XG4gICAgICAgICAgICAgIHRoaXMubmF2aWdhdGlvbk5vdGlmaWVyU2VydmljZS5hbm5vdW5jZU5hdmlnYXRpb24oeyBhY3Rpb246IE5hdmlnYXRpb25PcmlnaW4uRVJST1JfREVMRVRJTkdfRFJBRlQgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmlzRHJhZnQoKSAmJiB0cmlnZ2VyLmlkICE9PSBDYXNlVmlld0V2ZW50SWRzLkRFTEVURSkge1xuICAgICAgdGhlUXVlcnlQYXJhbXNbRFJBRlRfUVVFUllfUEFSQU1dID0gdGhpcy5jYXNlRGV0YWlscy5jYXNlX2lkO1xuICAgICAgdGhlUXVlcnlQYXJhbXNbQ2FzZUZ1bGxBY2Nlc3NWaWV3Q29tcG9uZW50Lk9SSUdJTl9RVUVSWV9QQVJBTV0gPSAndmlld0RyYWZ0JztcbiAgICAgIHRoaXMubmF2aWdhdGlvbk5vdGlmaWVyU2VydmljZS5hbm5vdW5jZU5hdmlnYXRpb24oXG4gICAgICAgIHtcbiAgICAgICAgICBhY3Rpb246IE5hdmlnYXRpb25PcmlnaW4uRFJBRlRfUkVTVU1FRCxcbiAgICAgICAgICBqaWQ6IHRoaXMuY2FzZURldGFpbHMuY2FzZV90eXBlLmp1cmlzZGljdGlvbi5pZCxcbiAgICAgICAgICBjdGlkOiB0aGlzLmNhc2VEZXRhaWxzLmNhc2VfdHlwZS5pZCxcbiAgICAgICAgICBldGlkOiB0cmlnZ2VyLmlkLFxuICAgICAgICAgIHF1ZXJ5UGFyYW1zOiB0aGVRdWVyeVBhcmFtc1xuICAgICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5uYXZpZ2F0aW9uTm90aWZpZXJTZXJ2aWNlLmFubm91bmNlTmF2aWdhdGlvbihcbiAgICAgICAge1xuICAgICAgICAgIGFjdGlvbjogTmF2aWdhdGlvbk9yaWdpbi5FVkVOVF9UUklHR0VSRUQsXG4gICAgICAgICAgcXVlcnlQYXJhbXM6IHRoZVF1ZXJ5UGFyYW1zLFxuICAgICAgICAgIGV0aWQ6IHRyaWdnZXIuaWQsXG4gICAgICAgICAgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZVxuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaGFzVGFic1ByZXNlbnQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc29ydGVkVGFicy5sZW5ndGggPiAwIHx8IHRoaXMucHJlcGVuZGVkVGFicy5sZW5ndGggPiAwIHx8IHRoaXMuYXBwZW5kZWRUYWJzLmxlbmd0aCA+IDA7XG4gIH1cblxuICBwdWJsaWMgY2FsbGJhY2tFcnJvcnNOb3RpZnkoY2FsbGJhY2tFcnJvcnNDb250ZXh0OiBDYWxsYmFja0Vycm9yc0NvbnRleHQpOiB2b2lkIHtcbiAgICB0aGlzLmlnbm9yZVdhcm5pbmcgPSBjYWxsYmFja0Vycm9yc0NvbnRleHQuaWdub3JlV2FybmluZztcbiAgICB0aGlzLnRyaWdnZXJUZXh0ID0gY2FsbGJhY2tFcnJvcnNDb250ZXh0LnRyaWdnZXJUZXh0O1xuICAgIHRoaXMuZXZlbnRJZCA9IGNhbGxiYWNrRXJyb3JzQ29udGV4dC5ldmVudElkO1xuICB9XG5cbiAgcHVibGljIGlzRHJhZnQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIERyYWZ0LmlzRHJhZnQodGhpcy5jYXNlRGV0YWlscy5jYXNlX2lkKTtcbiAgfVxuXG4gIHB1YmxpYyBpc1RyaWdnZXJCdXR0b25EaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKHRoaXMuZXJyb3JcbiAgICAgICYmIHRoaXMuZXJyb3IuY2FsbGJhY2tFcnJvcnNcbiAgICAgICYmIHRoaXMuZXJyb3IuY2FsbGJhY2tFcnJvcnMubGVuZ3RoKVxuICAgICAgfHwgKHRoaXMuZXJyb3JcbiAgICAgICAgJiYgdGhpcy5lcnJvci5kZXRhaWxzXG4gICAgICAgICYmIHRoaXMuZXJyb3IuZGV0YWlscy5maWVsZF9lcnJvcnNcbiAgICAgICAgJiYgdGhpcy5lcnJvci5kZXRhaWxzLmZpZWxkX2Vycm9ycy5sZW5ndGgpO1xuICB9XG5cbiAgcHVibGljIG9yZ2FuaXNlVGFiUG9zaXRpb24oKTogdm9pZCB7XG4gICAgbGV0IG1hdFRhYjogTWF0VGFiO1xuICAgIGNvbnN0IHVybCA9IHRoaXMubG9jYXRpb24ucGF0aCh0cnVlKTtcbiAgICBsZXQgaGFzaFZhbHVlID0gdXJsLnN1YnN0cmluZyh1cmwuaW5kZXhPZignIycpICsgMSk7XG4gICAgaWYgKCF1cmwuaW5jbHVkZXMoJyMnKSAmJiAhdXJsLmluY2x1ZGVzKCdyb2xlcy1hbmQtYWNjZXNzJykgJiYgIXVybC5pbmNsdWRlcygndGFza3MnKSAmJiAhdXJsLmluY2x1ZGVzKCdoZWFyaW5ncycpKSB7XG4gICAgICBjb25zdCBwYXRocyA9IHVybC5zcGxpdCgnLycpO1xuICAgICAgLy8gbGFzdFBhdGggY2FuIGJlIC9jYXNlSWQsIG9yIHRoZSB0YWJzIC90YXNrcywgL2hlYXJpbmdzIGV0Yy5cbiAgICAgIGNvbnN0IGxhc3RQYXRoID0gZGVjb2RlVVJJQ29tcG9uZW50KHBhdGhzW3BhdGhzLmxlbmd0aCAtIDFdKTtcbiAgICAgIGxldCBmb3VuZFRhYjogQ2FzZVRhYiA9IG51bGw7XG4gICAgICBpZiAoIXRoaXMucHJlcGVuZGVkVGFicykge1xuICAgICAgICB0aGlzLnByZXBlbmRlZFRhYnMgPSBbXTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGFkZGl0aW9uYWxUYWJzID0gWy4uLnRoaXMucHJlcGVuZGVkVGFicywgLi4udGhpcy5hcHBlbmRlZFRhYnNdO1xuICAgICAgaWYgKGFkZGl0aW9uYWxUYWJzICYmIGFkZGl0aW9uYWxUYWJzLmxlbmd0aCkge1xuICAgICAgICBmb3VuZFRhYiA9IGFkZGl0aW9uYWxUYWJzLmZpbmQoKGNhc2VUYWI6IENhc2VUYWIpID0+IGNhc2VUYWIuaWQudG9Mb3dlckNhc2UoKSA9PT0gbGFzdFBhdGgudG9Mb3dlckNhc2UoKSk7XG4gICAgICB9XG4gICAgICAvLyBmb3VuZCB0YXNrcyBvciBoZWFyaW5nIHRhYlxuICAgICAgaWYgKGZvdW5kVGFiKSB7XG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnY2FzZXMnLCAnY2FzZS1kZXRhaWxzJywgdGhpcy5jYXNlRGV0YWlscy5jYXNlX2lkLCBmb3VuZFRhYi5pZF0pLnRoZW4oKCkgPT4ge1xuICAgICAgICAgIG1hdFRhYiA9IHRoaXMudGFiR3JvdXAuX3RhYnMuZmluZCgoeCkgPT4geC50ZXh0TGFiZWwgPT09IGZvdW5kVGFiLmxhYmVsKTtcbiAgICAgICAgICAvLyBVcGRhdGUgc2VsZWN0ZWRJbmRleCBvbmx5IGlmIG1hdFRhYi5wb3NpdGlvbiBpcyBhIG5vbi16ZXJvIG51bWJlciAocG9zaXRpdmUgb3IgbmVnYXRpdmUpOyB0aGlzIG1lYW5zIHRoZVxuICAgICAgICAgIC8vIG1hdFRhYiBpcyBub3QgYWxyZWFkeSBzZWxlY3RlZCAocG9zaXRpb24gaXMgcmVsYXRpdmU7IHBvc2l0aXZlID0gcmlnaHQsIG5lZ2F0aXZlID0gbGVmdCkgb3IgaXQgd291bGQgYmUgMFxuICAgICAgICAgIGlmIChtYXRUYWI/LnBvc2l0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLnRhYkdyb3VwLnNlbGVjdGVkSW5kZXggPSBtYXRUYWIucG9zaXRpb247XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgLy8gbGFzdCBwYXRoIGlzIGNhc2VJZFxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gc29ydCB3aXRoIHRoZSBvcmRlciBvZiBDQ0QgcHJlZGVmaW5lZCB0YWJzXG4gICAgICAgIHRoaXMuY2FzZURldGFpbHMudGFicy5zb3J0KChhVGFiLCBiVGFiKSA9PiBhVGFiLm9yZGVyID4gYlRhYi5vcmRlciA/IDEgOiAoYlRhYi5vcmRlciA+IGFUYWIub3JkZXIgPyAtMSA6IDApKTtcbiAgICAgICAgLy8gc2VsZWN0IHRoZSBmaXJzdCB0YWIgY2hlY2tpbmcgaWYgdGhlIHRhYiBpcyB2aXNpYmxlXG4gICAgICAgIGNvbnN0IHByZVNlbGVjdFRhYjogQ2FzZVRhYiA9IHRoaXMuZmluZFByZVNlbGVjdGVkQWN0aXZlVGFiKCk7XG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnY2FzZXMnLCAnY2FzZS1kZXRhaWxzJywgdGhpcy5jYXNlRGV0YWlscy5jYXNlX2lkXSwgeyBmcmFnbWVudDogcHJlU2VsZWN0VGFiLmxhYmVsIH0pLnRoZW4oKCkgPT4ge1xuICAgICAgICAgIG1hdFRhYiA9IHRoaXMudGFiR3JvdXAuX3RhYnMuZmluZCgoeCkgPT4geC50ZXh0TGFiZWwgPT09IHByZVNlbGVjdFRhYi5sYWJlbCk7XG4gICAgICAgICAgLy8gVXBkYXRlIHNlbGVjdGVkSW5kZXggb25seSBpZiBtYXRUYWIucG9zaXRpb24gaXMgYSBub24temVybyBudW1iZXIgKHBvc2l0aXZlIG9yIG5lZ2F0aXZlKTsgdGhpcyBtZWFucyB0aGVcbiAgICAgICAgICAvLyBtYXRUYWIgaXMgbm90IGFscmVhZHkgc2VsZWN0ZWQgKHBvc2l0aW9uIGlzIHJlbGF0aXZlOyBwb3NpdGl2ZSA9IHJpZ2h0LCBuZWdhdGl2ZSA9IGxlZnQpIG9yIGl0IHdvdWxkIGJlIDBcbiAgICAgICAgICBpZiAobWF0VGFiPy5wb3NpdGlvbikge1xuICAgICAgICAgICAgdGhpcy50YWJHcm91cC5zZWxlY3RlZEluZGV4ID0gbWF0VGFiLnBvc2l0aW9uO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHJlZ0V4cCA9IG5ldyBSZWdFeHAoQ2FzZUZ1bGxBY2Nlc3NWaWV3Q29tcG9uZW50LlVOSUNPREVfU1BBQ0UsICdnJyk7XG4gICAgICBoYXNoVmFsdWUgPSBoYXNoVmFsdWUucmVwbGFjZShyZWdFeHAsIENhc2VGdWxsQWNjZXNzVmlld0NvbXBvbmVudC5FTVBUWV9TUEFDRSk7XG4gICAgICBpZiAoaGFzaFZhbHVlLmluY2x1ZGVzKCdoZWFyaW5ncycpKSB7XG4gICAgICAgIGhhc2hWYWx1ZSA9ICdoZWFyaW5ncyc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoaGFzaFZhbHVlLmluY2x1ZGVzKCdyb2xlcy1hbmQtYWNjZXNzJykgfHwgaGFzaFZhbHVlLmluY2x1ZGVzKCd0YXNrcycpKSB7XG4gICAgICAgICAgaGFzaFZhbHVlID0gaGFzaFZhbHVlLmluY2x1ZGVzKCdyb2xlcy1hbmQtYWNjZXNzJykgPyAncm9sZXMgYW5kIGFjY2VzcycgOiAndGFza3MnO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBtYXRUYWIgPSB0aGlzLnRhYkdyb3VwLl90YWJzLmZpbmQoKHgpID0+XG4gICAgICAgIHgudGV4dExhYmVsLnJlcGxhY2UoQ2FzZUZ1bGxBY2Nlc3NWaWV3Q29tcG9uZW50LkVNUFRZX1NQQUNFLCAnJykudG9Mb3dlckNhc2UoKSA9PT1cbiAgICAgICAgaGFzaFZhbHVlLnJlcGxhY2UoQ2FzZUZ1bGxBY2Nlc3NWaWV3Q29tcG9uZW50LkVNUFRZX1NQQUNFLCAnJykudG9Mb3dlckNhc2UoKSk7XG4gICAgICAvLyBVcGRhdGUgc2VsZWN0ZWRJbmRleCBvbmx5IGlmIG1hdFRhYi5wb3NpdGlvbiBpcyBhIG5vbi16ZXJvIG51bWJlciAocG9zaXRpdmUgb3IgbmVnYXRpdmUpOyB0aGlzIG1lYW5zIHRoZVxuICAgICAgLy8gbWF0VGFiIGlzIG5vdCBhbHJlYWR5IHNlbGVjdGVkIChwb3NpdGlvbiBpcyByZWxhdGl2ZTsgcG9zaXRpdmUgPSByaWdodCwgbmVnYXRpdmUgPSBsZWZ0KSBvciBpdCB3b3VsZCBiZSAwXG4gICAgICBpZiAobWF0VGFiPy5wb3NpdGlvbikge1xuICAgICAgICB0aGlzLnRhYkdyb3VwLnNlbGVjdGVkSW5kZXggPSBtYXRUYWIucG9zaXRpb247XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGZpbmRQcmVTZWxlY3RlZEFjdGl2ZVRhYigpOiBDYXNlVGFiIHtcbiAgICBjb25zdCB1bk9yZGVyZWRUYWJzSW5Tb3J0ZWRUYWJzID0gdGhpcy5jYXNlRGV0YWlscy50YWJzXG4gICAgICAuZmlsdGVyKCh0YWIpID0+ICF0YWIub3JkZXIgJiYgdGhpcy5zb3J0ZWRUYWJzLnNvbWUoKHNvcnRlZFRhYikgPT4gc29ydGVkVGFiLmlkID09PSB0YWIuaWQpKTtcbiAgICByZXR1cm4gdW5PcmRlcmVkVGFic0luU29ydGVkVGFicy5sZW5ndGggPyB1bk9yZGVyZWRUYWJzSW5Tb3J0ZWRUYWJzWzBdIDogdGhpcy5zb3J0ZWRUYWJzWzBdO1xuICB9XG5cbiAgLy8gUmVmYWN0b3JlZCB1bmRlciBFWFVJLTExMCB0byBhZGRyZXNzIGluZmluaXRlIHRhYiBsb29wIHRvIHVzZSB0YWJJbmRleENoYW5nZWQgaW5zdGVhZFxuICBwdWJsaWMgdGFiQ2hhbmdlZCh0YWJJbmRleENoYW5nZWQ6IG51bWJlcik6IHZvaWQge1xuICAgIGNvbnN0IG1hdFRhYiA9IHRoaXMudGFiR3JvdXAuX3RhYnMuZmluZCh0YWIgPT4gdGFiLmlzQWN0aXZlKTtcbiAgICBjb25zdCB0YWJMYWJlbCA9IG1hdFRhYi50ZXh0TGFiZWw7XG4gICAgLy8gc29ydGVkVGFicyBhcmUgZnJhZ21lbnRzXG4gICAgLy8gYXBwZW5kZWQvcHJlcGVwZW5kZWQgdGFicyB1c2Ugcm91dGVyIG5hdmlnYXRpb25cbiAgICBpZiAoKHRhYkluZGV4Q2hhbmdlZCA8PSAxICYmIHRoaXMucHJlcGVuZGVkVGFicyAmJiB0aGlzLnByZXBlbmRlZFRhYnMubGVuZ3RoKSB8fFxuICAgICAgKHRoaXMuYXBwZW5kZWRUYWJzPy5sZW5ndGggJiYgKHRhYkxhYmVsID09PSB0aGlzLkhFQVJJTkdTX1RBQl9MQUJFTFxuICAgICAgICB8fCB0YWJMYWJlbCA9PT0gdGhpcy5ycHhUcmFuc2xhdGlvblBpcGUudHJhbnNmb3JtKHRoaXMuSEVBUklOR1NfVEFCX0xBQkVMKSkpKSB7XG4gICAgICAvLyBIYWNrIHRvIGdldCBJRCBmcm9tIHRhYiBhcyBpdCdzIG5vdCBlYXNpbHkgYWNoaWV2ZWQgdGhyb3VnaCBBbmd1bGFyIE1hdGVyaWFsIFRhYnNcbiAgICAgIGNvbnN0IHRhYiA9IG1hdFRhYlsnX3ZpZXdDb250YWluZXJSZWYnXSBhcyBWaWV3Q29udGFpbmVyUmVmO1xuICAgICAgY29uc3QgaWQgPSAodGFiLmVsZW1lbnQubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudCkuaWQ7XG4gICAgICAvLyBjYXNlcy9jYXNlLWRldGFpbHMvOmNhc2VJZC9oZWFyaW5nc1xuICAgICAgLy8gY2FzZXMvY2FzZS1kZXRhaWxzLzpjYXNlSWQvcm9sZXMtYW5kLWFjY2Vzc1xuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW2lkXSwgeyByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBSb3V0aW5nIGhlcmUgaXMgYmFzZWQgb24gdGFiIGxhYmVsLCBub3QgaWRlYWxcbiAgICAgIC8vIGNhc2VzL2Nhc2UtZGV0YWlscy86Y2FzZUlkI3RhYkxhYmVsXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJ2Nhc2VzJywgJ2Nhc2UtZGV0YWlscycsIHRoaXMuY2FzZURldGFpbHMuY2FzZV9pZF0sIHsgZnJhZ21lbnQ6IHRhYkxhYmVsIH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvbkxpbmtDbGlja2VkKHRyaWdnZXJPdXRwdXRFdmVudFRleHQ6IHN0cmluZyk6IHZvaWQge1xuICAgIC8vIEdldCB0aGUgKmFic29sdXRlKiAobm90IHJlbGF0aXZlKSBpbmRleCBvZiB0aGUgdGFyZ2V0IHRhYiBhbmQgc2V0IGFzIHRoZSBhY3RpdmUgdGFiLCB1c2luZyB0aGUgc2VsZWN0ZWRJbmRleCBpbnB1dFxuICAgIC8vIG9mIG1hdC10YWItZ3JvdXAgKGJvdW5kIHRvIHNlbGVjdGVkVGFiSW5kZXgpXG4gICAgY29uc3QgdGFyZ2V0VGFiSW5kZXggPSB0aGlzLnRhYkdyb3VwLl90YWJzLnRvQXJyYXkoKS5maW5kSW5kZXgodGFiID0+IHRhYi50ZXh0TGFiZWwgPT09IHRyaWdnZXJPdXRwdXRFdmVudFRleHQpO1xuICAgIGlmICh0YXJnZXRUYWJJbmRleCA+IC0xKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkVGFiSW5kZXggPSB0YXJnZXRUYWJJbmRleDtcbiAgICAgIHRoaXMudGFiR3JvdXAuc2VsZWN0ZWRJbmRleCA9IHRhcmdldFRhYkluZGV4O1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBoYXNBY3RpdmVDYXNlRmxhZ3MoKTogYm9vbGVhbiB7XG4gICAgLy8gRGV0ZXJtaW5lIHdoaWNoIHRhYiBjb250YWlucyB0aGUgRmxhZ0xhdW5jaGVyIENhc2VGaWVsZCB0eXBlLCBmcm9tIHRoZSBDYXNlVmlldyBvYmplY3QgaW4gdGhlIHNuYXBzaG90IGRhdGFcbiAgICBjb25zdCBjYXNlRmxhZ3NUYWIgPSB0aGlzLmNhc2VEZXRhaWxzPy50YWJzXG4gICAgICA/ICh0aGlzLmNhc2VEZXRhaWxzLnRhYnMpLmZpbHRlcihcbiAgICAgICAgdGFiID0+IHRhYi5maWVsZHMgJiYgdGFiLmZpZWxkcy5zb21lKGNhc2VGaWVsZCA9PiBGaWVsZHNVdGlscy5pc0ZsYWdMYXVuY2hlckNhc2VGaWVsZChjYXNlRmllbGQpKSlbMF1cbiAgICAgIDogbnVsbDtcblxuICAgIGlmIChjYXNlRmxhZ3NUYWIpIHtcbiAgICAgIC8vIENoZWNrIHdoZXRoZXIgdGhlIEZsYWdMYXVuY2hlciBDYXNlRmllbGQgaXMgaW4gZXh0ZXJuYWwgbW9kZSBvciBub3Q7IHRoZSBub3RpZmljYXRpb24gYmFubmVyIHNob3VsZCBub3QgYmVcbiAgICAgIC8vIGRpc3BsYXllZCBmb3IgZXh0ZXJuYWwgdXNlcnNcbiAgICAgIHRoaXMuY2FzZUZsYWdzRXh0ZXJuYWxVc2VyID0gY2FzZUZsYWdzVGFiLmZpZWxkcy5maW5kKFxuICAgICAgICBjYXNlRmllbGQgPT4gRmllbGRzVXRpbHMuaXNGbGFnTGF1bmNoZXJDYXNlRmllbGQoY2FzZUZpZWxkKSkuZGlzcGxheV9jb250ZXh0X3BhcmFtZXRlciA9PT0gdGhpcy5jYXNlRmxhZ3NSZWFkRXh0ZXJuYWxNb2RlO1xuXG4gICAgICAvLyBHZXQgdGhlIGFjdGl2ZSBjYXNlIGZsYWdzIGNvdW50XG4gICAgICAvLyBDYW5ub3QgZmlsdGVyIG91dCBhbnl0aGluZyBvdGhlciB0aGFuIHRvIHJlbW92ZSB0aGUgRmxhZ0xhdW5jaGVyIENhc2VGaWVsZCBiZWNhdXNlIEZsYWdzIGZpZWxkcyBtYXkgYmVcbiAgICAgIC8vIGNvbnRhaW5lZCBpbiBvdGhlciBDYXNlRmllbGQgaW5zdGFuY2VzLCBlaXRoZXIgYXMgYSBzdWItZmllbGQgb2YgYSBDb21wbGV4IGZpZWxkLCBvciBmaWVsZHMgaW4gYSBjb2xsZWN0aW9uXG4gICAgICAvLyAob3Igc3ViLWZpZWxkcyBvZiBDb21wbGV4IGZpZWxkcyBpbiBhIGNvbGxlY3Rpb24pXG4gICAgICBjb25zdCBhY3RpdmVDYXNlRmxhZ3MgPSBjYXNlRmxhZ3NUYWIuZmllbGRzXG4gICAgICAgIC5maWx0ZXIoY2FzZUZpZWxkID0+ICFGaWVsZHNVdGlscy5pc0ZsYWdMYXVuY2hlckNhc2VGaWVsZChjYXNlRmllbGQpICYmIGNhc2VGaWVsZC52YWx1ZSlcbiAgICAgICAgLnJlZHVjZSgoYWN0aXZlLCBjYXNlRmxhZykgPT4ge1xuICAgICAgICAgIHJldHVybiBGaWVsZHNVdGlscy5jb3VudEFjdGl2ZUZsYWdzSW5DYXNlRmllbGQoYWN0aXZlLCBjYXNlRmxhZyk7XG4gICAgICAgIH0sIDApO1xuXG4gICAgICBpZiAoYWN0aXZlQ2FzZUZsYWdzID4gMCkge1xuICAgICAgICBjb25zdCBkZXNjcmlwdGlvbiA9IGFjdGl2ZUNhc2VGbGFncyA+IDFcbiAgICAgICAgICA/IGBUaGVyZSBhcmUgJHthY3RpdmVDYXNlRmxhZ3N9IGFjdGl2ZSBmbGFncyBvbiB0aGlzIGNhc2UuYCA6ICdUaGVyZSBpcyAxIGFjdGl2ZSBmbGFnIG9uIHRoaXMgY2FzZS4nO1xuICAgICAgICAvLyBJbml0aWFsaXNlIGFuZCBkaXNwbGF5IG5vdGlmaWNhdGlvbiBiYW5uZXJcbiAgICAgICAgdGhpcy5ub3RpZmljYXRpb25CYW5uZXJDb25maWcgPSB7XG4gICAgICAgICAgYmFubmVyVHlwZTogTm90aWZpY2F0aW9uQmFubmVyVHlwZS5JTkZPUk1BVElPTixcbiAgICAgICAgICBoZWFkaW5nVGV4dDogJ0ltcG9ydGFudCcsXG4gICAgICAgICAgZGVzY3JpcHRpb24sXG4gICAgICAgICAgc2hvd0xpbms6IHRydWUsXG4gICAgICAgICAgbGlua1RleHQ6ICdWaWV3IGNhc2UgZmxhZ3MnLFxuICAgICAgICAgIHRyaWdnZXJPdXRwdXRFdmVudDogdHJ1ZSxcbiAgICAgICAgICB0cmlnZ2VyT3V0cHV0RXZlbnRUZXh0OiBjYXNlRmxhZ3NUYWIubGFiZWwsXG4gICAgICAgICAgaGVhZGVyQ2xhc3M6IE5vdGlmaWNhdGlvbkJhbm5lckhlYWRlckNsYXNzLklORk9STUFUSU9OXG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB0aGF0IGEgQ2FzZUZpZWxkIGlzIHRvIGJlIGRpc3BsYXllZCB3aXRob3V0IGEgbGFiZWwsIGFzIGlzIGV4cGVjdGVkIGZvciBhbGwgQ29tcG9uZW50TGF1bmNoZXItdHlwZVxuICAgKiBmaWVsZHMuXG4gICAqIEBwYXJhbSBjYXNlRmllbGQgVGhlIGBDYXNlRmllbGRgIGluc3RhbmNlIHRvIGNoZWNrXG4gICAqIEByZXR1cm5zIGB0cnVlYCBpZiBpdCBzaG91bGQgbm90IGhhdmUgYSBsYWJlbDsgYGZhbHNlYCBvdGhlcndpc2VcbiAgICovXG4gIHB1YmxpYyBpc0ZpZWxkVG9IYXZlTm9MYWJlbChjYXNlRmllbGQ6IENhc2VGaWVsZCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBjYXNlRmllbGQuZmllbGRfdHlwZS50eXBlID09PSAnQ29tcG9uZW50TGF1bmNoZXInXG4gICAgICAmJiBjYXNlRmllbGQuZGlzcGxheV9jb250ZXh0X3BhcmFtZXRlciA9PT0gJyNBUkdVTUVOVChDYXNlRmlsZVZpZXcpJztcbiAgfVxuXG4gIHByaXZhdGUgaW5pdCgpOiB2b2lkIHtcbiAgICAvLyBDbG9uZSBhbmQgc29ydCB0YWJzIGFycmF5XG4gICAgdGhpcy5zb3J0ZWRUYWJzID0gdGhpcy5vcmRlclNlcnZpY2Uuc29ydCh0aGlzLmNhc2VEZXRhaWxzPy50YWJzKTtcbiAgICB0aGlzLmNhc2VGaWVsZHMgPSB0aGlzLmdldFRhYkZpZWxkcygpO1xuICAgIHRoaXMuc29ydGVkVGFicyA9IHRoaXMuc29ydFRhYkZpZWxkc0FuZEZpbHRlclRhYnModGhpcy5zb3J0ZWRUYWJzKTtcbiAgICB0aGlzLmZvcm1Hcm91cCA9IHRoaXMuYnVpbGRGb3JtR3JvdXAodGhpcy5jYXNlRmllbGRzKTtcbiAgICBpZiAodGhpcy5jYXNlRGV0YWlscz8udHJpZ2dlcnMgJiYgdGhpcy5lcnJvcikge1xuICAgICAgdGhpcy5yZXNldEVycm9ycygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc29ydFRhYkZpZWxkc0FuZEZpbHRlclRhYnModGFiczogQ2FzZVRhYltdKTogQ2FzZVRhYltdIHtcbiAgICByZXR1cm4gdGFicz8ubWFwKHRhYiA9PiBPYmplY3QuYXNzaWduKHt9LCB0YWIsIHsgZmllbGRzOiB0aGlzLm9yZGVyU2VydmljZS5zb3J0KHRhYi5maWVsZHMpIH0pKVxuICAgICAgLmZpbHRlcih0YWIgPT4gU2hvd0NvbmRpdGlvbi5nZXRJbnN0YW5jZSh0YWIuc2hvd19jb25kaXRpb24pLm1hdGNoQnlDb250ZXh0RmllbGRzKHRoaXMuY2FzZUZpZWxkcykpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRUYWJGaWVsZHMoKTogQ2FzZUZpZWxkW10ge1xuICAgIGNvbnN0IGNhc2VEYXRhRmllbGRzID0gdGhpcy5zb3J0ZWRUYWJzPy5yZWR1Y2UoKGFjYywgdGFiKSA9PiB7XG4gICAgICByZXR1cm4gYWNjLmNvbmNhdChwbGFpblRvQ2xhc3MoQ2FzZUZpZWxkLCB0YWIuZmllbGRzKSk7XG4gICAgfSwgW10pO1xuXG4gICAgcmV0dXJuIGNhc2VEYXRhRmllbGRzPy5jb25jYXQodGhpcy5jYXNlRGV0YWlscy5tZXRhZGF0YUZpZWxkcyk7XG4gIH1cblxuICAvKipcbiAgICogRm9yIEVVSS0zODI1OlxuICAgKiBCdWlsZHMgYSBGb3JtR3JvdXAgZnJvbSBhbGwgdGhlIENhc2VGaWVsZHMgY29udGFpbmVkIHdpdGhpbiB0aGUgdmlldy5cbiAgICogVGhpcyBGb3JtR3JvdXAgaXMgbmVjZXNzYXJ5IGZvciBldmFsdWF0aW9uIHRoZSBzaG93L2hpZGUgY29uZGl0aW9ucyBvZlxuICAgKiBmaWVsZHMgdGhhdCBhcmUgZGVwZW5kZW50IG9uIGEgZmllbGQgb25seSBhdmFpbGFibGUgb24gYSBESUZGRVJFTlQgdGFiLlxuICAgKi9cbiAgcHJpdmF0ZSBidWlsZEZvcm1Hcm91cChjYXNlRmllbGRzOiBDYXNlRmllbGRbXSk6IEZvcm1Hcm91cCB7XG4gICAgbGV0IHZhbHVlOiBvYmplY3QgPSB7fTtcbiAgICBpZiAoY2FzZUZpZWxkcykge1xuICAgICAgY2FzZUZpZWxkcy5mb3JFYWNoKGNhc2VGaWVsZCA9PiB7XG4gICAgICAgIHZhbHVlID0ge1xuICAgICAgICAgIC4uLnZhbHVlLFxuICAgICAgICAgIFtjYXNlRmllbGQuaWRdOiBjYXNlRmllbGQudmFsdWVcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IEZvcm1Hcm91cCh7IGRhdGE6IG5ldyBGb3JtQ29udHJvbCh2YWx1ZSkgfSk7XG4gIH1cblxuICBwcml2YXRlIHJlc2V0RXJyb3JzKCk6IHZvaWQge1xuICAgIHRoaXMuZXJyb3JOb3RpZmllclNlcnZpY2UuYW5ub3VuY2VFcnJvcihudWxsKTtcbiAgICB0aGlzLmFsZXJ0U2VydmljZS5jbGVhcigpO1xuICB9XG59XG4iLCI8IS0tIEdlbmVyaWMgZXJyb3IgaGVhZGluZyBhbmQgZXJyb3IgbWVzc2FnZSB0byBiZSBkaXNwbGF5ZWQgb25seSBpZiB0aGVyZSBhcmUgbm8gc3BlY2lmaWMgY2FsbGJhY2sgZXJyb3JzIG9yIHdhcm5pbmdzLCBvciBubyBlcnJvciBkZXRhaWxzIC0tPlxuPGRpdiAqbmdJZj1cImVycm9yICYmICEoZXJyb3IuY2FsbGJhY2tFcnJvcnMgfHwgZXJyb3IuY2FsbGJhY2tXYXJuaW5ncyB8fCBlcnJvci5kZXRhaWxzKVwiIGNsYXNzPVwiZXJyb3Itc3VtbWFyeVwiXG4gICAgIHJvbGU9XCJncm91cFwiIGFyaWEtbGFiZWxsZWRieT1cImVkaXQtY2FzZS1ldmVudF9lcnJvci1zdW1tYXJ5LWhlYWRpbmdcIiB0YWJpbmRleD1cIi0xXCI+XG4gIDxoMSBjbGFzcz1cImhlYWRpbmctaDEgZXJyb3Itc3VtbWFyeS1oZWFkaW5nXCIgaWQ9XCJlZGl0LWNhc2UtZXZlbnRfZXJyb3Itc3VtbWFyeS1oZWFkaW5nXCI+XG4gICAge3snU29tZXRoaW5nIHdlbnQgd3JvbmcnIHwgcnB4VHJhbnNsYXRlfX1cbiAgPC9oMT5cbiAgPGRpdiBjbGFzcz1cImdvdnVrLWVycm9yLXN1bW1hcnlfX2JvZHlcIiBpZD1cImVkaXQtY2FzZS1ldmVudF9lcnJvci1zdW1tYXJ5LWJvZHlcIj5cbiAgICA8cD57e1wiV2UncmUgd29ya2luZyB0byBmaXggdGhlIHByb2JsZW0uIFRyeSBhZ2FpbiBzaG9ydGx5LlwiIHwgcnB4VHJhbnNsYXRlfX08L3A+XG4gICAgPHA+XG4gICAgICA8YSBocmVmPVwiZ2V0LWhlbHBcIiB0YXJnZXQ9XCJfYmxhbmtcIj5cbiAgICAgICAge3tcIkNvbnRhY3QgdXNcIiB8IHJweFRyYW5zbGF0ZX19PC9hPiB7e1wiaWYgeW91J3JlIHN0aWxsIGhhdmluZyBwcm9ibGVtcy5cIiB8IHJweFRyYW5zbGF0ZX19XG4gICAgPC9wPlxuICA8L2Rpdj5cbjwvZGl2PlxuPCEtLSBDYWxsYmFjayBlcnJvciBoZWFkaW5nIGFuZCBlcnJvciBtZXNzYWdlIHRvIGJlIGRpc3BsYXllZCBpZiB0aGVyZSBhcmUgc3BlY2lmaWMgZXJyb3IgZGV0YWlscyAtLT5cbjxkaXYgKm5nSWY9XCJlcnJvciAmJiBlcnJvci5kZXRhaWxzXCIgY2xhc3M9XCJlcnJvci1zdW1tYXJ5XCIgcm9sZT1cImdyb3VwXCJcbiAgICAgYXJpYS1sYWJlbGxlZGJ5PVwiZWRpdC1jYXNlLWV2ZW50X2Vycm9yLXN1bW1hcnktaGVhZGluZ1wiIHRhYmluZGV4PVwiLTFcIj5cbiAgPGgyIGNsYXNzPVwiaGVhZGluZy1oMiBlcnJvci1zdW1tYXJ5LWhlYWRpbmdcIiBpZD1cImVkaXQtY2FzZS1ldmVudF9lcnJvci1zdW1tYXJ5LWhlYWRpbmdcIj5cbiAgICB7eydUaGUgY2FsbGJhY2sgZGF0YSBmYWlsZWQgdmFsaWRhdGlvbicgfCBycHhUcmFuc2xhdGV9fVxuICA8L2gyPlxuICA8cD57e2Vycm9yLm1lc3NhZ2UgfCBycHhUcmFuc2xhdGV9fTwvcD5cbiAgPHVsICpuZ0lmPVwiZXJyb3IuZGV0YWlscz8uZmllbGRfZXJyb3JzXCIgY2xhc3M9XCJlcnJvci1zdW1tYXJ5LWxpc3RcIj5cbiAgICA8bGkgKm5nRm9yPVwibGV0IGZpZWxkRXJyb3Igb2YgZXJyb3IuZGV0YWlscy5maWVsZF9lcnJvcnNcIj5cbiAgICAgIHt7ZmllbGRFcnJvci5tZXNzYWdlIHwgcnB4VHJhbnNsYXRlfX1cbiAgICA8L2xpPlxuICA8L3VsPlxuPC9kaXY+XG48Y2NkLWNhbGxiYWNrLWVycm9yc1xuICBbdHJpZ2dlclRleHRDb250aW51ZV09XCJ0cmlnZ2VyVGV4dFN0YXJ0XCJcbiAgW3RyaWdnZXJUZXh0SWdub3JlXT1cInRyaWdnZXJUZXh0SWdub3JlV2FybmluZ3NcIlxuICBbY2FsbGJhY2tFcnJvcnNTdWJqZWN0XT1cImNhbGxiYWNrRXJyb3JzU3ViamVjdFwiXG4gIChjYWxsYmFja0Vycm9yc0NvbnRleHQpPVwiY2FsbGJhY2tFcnJvcnNOb3RpZnkoJGV2ZW50KVwiPlxuPC9jY2QtY2FsbGJhY2stZXJyb3JzPlxuPGNjZC1hY3Rpdml0eSBbY2FzZUlkXT1cImNhc2VEZXRhaWxzLmNhc2VfaWRcIiBbZGlzcGxheU1vZGVdPVwiQkFOTkVSXCI+PC9jY2QtYWN0aXZpdHk+XG48ZGl2IGNsYXNzPVwiZ3JpZC1yb3dcIj5cbiAgPGRpdiBjbGFzcz1cImNvbHVtbi1vbmUtaGFsZlwiPlxuICAgIDxjY2QtY2FzZS1oZWFkZXIgW2Nhc2VEZXRhaWxzXT1cImNhc2VEZXRhaWxzXCI+PC9jY2QtY2FzZS1oZWFkZXI+XG4gICAgPGRpdiBjbGFzcz1cImNhc2Utdmlld2VyLWNvbnRyb2xzXCIgKm5nSWY9XCJoYXNQcmludCAmJiAhaXNEcmFmdCgpICYmIGlzUHJpbnRFbmFibGVkKClcIj5cbiAgICAgIDxhIGlkPVwiY2FzZS12aWV3ZXItY29udHJvbC1wcmludFwiIHJvdXRlckxpbms9XCJwcmludFwiIGNsYXNzPVwiYnV0dG9uIGJ1dHRvbi1zZWNvbmRhcnlcIj57eydQcmludCcgfCBycHhUcmFuc2xhdGV9fTwvYT5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgKm5nSWY9XCJoYXNFdmVudFNlbGVjdG9yXCIgY2xhc3M9XCJjb2x1bW4tb25lLWhhbGZcIj5cbiAgICA8Y2NkLWV2ZW50LXRyaWdnZXIgW2lzRGlzYWJsZWRdPVwiaXNUcmlnZ2VyQnV0dG9uRGlzYWJsZWQoKVwiIFt0cmlnZ2Vyc109XCJjYXNlRGV0YWlscy50cmlnZ2Vyc1wiXG4gICAgICAgICAgICAgICAgICAgICAgIFt0cmlnZ2VyVGV4dF09XCJ0cmlnZ2VyVGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgIFtldmVudElkXT1cImV2ZW50SWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAob25UcmlnZ2VyQ2hhbmdlKT1cImNsZWFyRXJyb3JzQW5kV2FybmluZ3MoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgIChvblRyaWdnZXJTdWJtaXQpPVwiYXBwbHlUcmlnZ2VyKCRldmVudClcIj48L2NjZC1ldmVudC10cmlnZ2VyPlxuICA8L2Rpdj5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cImdyaWQtcm93XCIgKm5nSWY9XCJhY3RpdmVDYXNlRmxhZ3MgJiYgIWNhc2VGbGFnc0V4dGVybmFsVXNlclwiPlxuICA8ZGl2IGNsYXNzPVwiY29sdW1uLWZ1bGxcIj5cbiAgICA8Y2NkLW5vdGlmaWNhdGlvbi1iYW5uZXIgW25vdGlmaWNhdGlvbkJhbm5lckNvbmZpZ109XCJub3RpZmljYXRpb25CYW5uZXJDb25maWdcIiAobGlua0NsaWNrZWQpPVwib25MaW5rQ2xpY2tlZCgkZXZlbnQpXCI+XG4gICAgPC9jY2Qtbm90aWZpY2F0aW9uLWJhbm5lcj5cbiAgPC9kaXY+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJncmlkLXJvd1wiPlxuICA8ZGl2IGNsYXNzPVwiY29sdW1uLWZ1bGxcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaGFzVGFic1ByZXNlbnQoKVwiPlxuICAgICAgPG1hdC10YWItZ3JvdXAgI3RhYkdyb3VwIGFuaW1hdGlvbkR1cmF0aW9uPVwiMG1zXCIgKHNlbGVjdGVkSW5kZXhDaGFuZ2UpPVwidGFiQ2hhbmdlZCgkZXZlbnQpXCIgW2Rpc2FibGVSaXBwbGVdPVwidHJ1ZVwiXG4gICAgICAgIFtzZWxlY3RlZEluZGV4XT1cInNlbGVjdGVkVGFiSW5kZXhcIj5cbiAgICAgICAgPG1hdC10YWIgKm5nRm9yPVwibGV0IHRhYiBvZiBwcmVwZW5kZWRUYWJzXCIgW2lkXT1cInRhYi5pZFwiIFtsYWJlbF09XCJ0YWIubGFiZWwgfCBycHhUcmFuc2xhdGVcIj5cbiAgICAgICAgPC9tYXQtdGFiPlxuICAgICAgICA8bWF0LXRhYiAqbmdGb3I9XCJsZXQgdGFiIG9mIHNvcnRlZFRhYnM7IGxldCBjdXJJZHg9aW5kZXhcIiBbaWRdPVwidGFiLmlkXCIgW2xhYmVsXT1cInRhYi5sYWJlbCB8IHJweFRyYW5zbGF0ZVwiIFthcmlhLWxhYmVsXT1cImN1cklkeCA9PT0gMCA/IHRhYi5sYWJlbCArICcsIFBsZWFzZSB1c2UgbGVmdCBhbmQgcmlnaHQgYXJyb3cga2V5cyB0byBuYXZpZ2F0ZSBjYXNlIHRhYnMnIDogJycgfCBycHhUcmFuc2xhdGVcIj5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgbWF0VGFiQ29udGVudD5cbiAgICAgICAgICAgIDx0YWJsZSBbY2xhc3NdPVwidGFiLmlkXCIgW2F0dHIuYXJpYS1sYWJlbF09XCInY2FzZSB2aWV3ZXIgdGFibGUnIHwgcnB4VHJhbnNsYXRlXCI+XG4gICAgICAgICAgICAgIDx0Ym9keT5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZmllbGQgb2YgdGFiIHwgY2NkVGFiRmllbGRzIHwgY2NkUmVhZEZpZWxkc0ZpbHRlcjpmYWxzZSA6dW5kZWZpbmVkIDp0cnVlIDogZm9ybUdyb3VwPy5jb250cm9sc1snZGF0YSddXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjY2RMYWJlbFN1YnN0aXR1dG9yIFtjYXNlRmllbGRdPVwiZmllbGRcIiBbY29udGV4dEZpZWxkc109XCJjYXNlRmllbGRzXCIgW2hpZGRlbl09XCJmaWVsZC5oaWRkZW5cIj5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cIiEoZmllbGQgfCBjY2RJc0NvbXBvdW5kKVwiPlxuICAgICAgICAgICAgICAgICAgICA8dHIgKm5nU3dpdGNoQ2FzZT1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8dGggaWQ9XCJjYXNlLXZpZXdlci1maWVsZC1sYWJlbFwiICpuZ0lmPVwiIWlzRmllbGRUb0hhdmVOb0xhYmVsKGZpZWxkKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhc2Utdmlld2VyLWxhYmVsIHRleHQtMTZcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge3tmaWVsZC5sYWJlbCB8IHJweFRyYW5zbGF0ZX19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgICAgICAgICA8dGQgW2lkXT1cIidjYXNlLXZpZXdlci1maWVsZC1yZWFkLS0nICsgZmllbGQuaWRcIiBzY29wZT1cImNvbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LTE2XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxjY2QtZmllbGQtcmVhZCBbdG9wTGV2ZWxGb3JtR3JvdXBdPVwiZm9ybUdyb3VwPy5jb250cm9sc1snZGF0YSddXCIgW2Nhc2VGaWVsZHNdPVwiY2FzZUZpZWxkc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2FzZUZpZWxkXT1cImZpZWxkXCIgW2Nhc2VSZWZlcmVuY2VdPVwiY2FzZURldGFpbHMuY2FzZV9pZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NjZC1maWVsZC1yZWFkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgIDx0ciAqbmdTd2l0Y2hDYXNlPVwiZmFsc2VcIiBjbGFzcz1cImNvbXBvdW5kLWZpZWxkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHRoIFtpZF09XCInY2FzZS12aWV3ZXItZmllbGQtcmVhZC0tJyArIGZpZWxkLmlkXCIgc2NvcGU9XCJjb2xcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC0xNlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2NkLWZpZWxkLXJlYWQgW3RvcExldmVsRm9ybUdyb3VwXT1cImZvcm1Hcm91cC5jb250cm9sc1snZGF0YSddXCIgW2Nhc2VGaWVsZHNdPVwiY2FzZUZpZWxkc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2FzZUZpZWxkXT1cImZpZWxkXCIgW2Nhc2VSZWZlcmVuY2VdPVwiY2FzZURldGFpbHMuY2FzZV9pZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NjZC1maWVsZC1yZWFkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDwvdGJvZHk+XG4gICAgICAgICAgICA8L3RhYmxlPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvbWF0LXRhYj5cbiAgICAgICAgPG1hdC10YWIgKm5nRm9yPVwibGV0IHRhYiBvZiBhcHBlbmRlZFRhYnNcIiBbaWRdPVwidGFiLmlkXCIgW2xhYmVsXT1cInRhYi5sYWJlbCB8IHJweFRyYW5zbGF0ZVwiPlxuICAgICAgICA8L21hdC10YWI+XG4gICAgICA8L21hdC10YWItZ3JvdXA+XG4gICAgICA8cm91dGVyLW91dGxldCAqbmdJZj1cIihwcmVwZW5kZWRUYWJzICYmIHByZXBlbmRlZFRhYnMubGVuZ3RoKSB8fCAoYXBwZW5kZWRUYWJzICYmIGFwcGVuZGVkVGFicy5sZW5ndGgpXCI+PC9yb3V0ZXItb3V0bGV0PlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -6,8 +6,6 @@ import * as i2 from "rpx-xui-translation";
6
6
  export class CaseReviewSpecificAccessRejectComponent {
7
7
  route;
8
8
  caseId;
9
- jurisdiction;
10
- caseType;
11
9
  retunToTask = 'Return to the Tasks tab for this case';
12
10
  returnToMyTask = 'Return to My tasks';
13
11
  constructor(route) {
@@ -15,11 +13,9 @@ export class CaseReviewSpecificAccessRejectComponent {
15
13
  }
16
14
  ngOnInit() {
17
15
  this.caseId = this.route.snapshot.data.case.case_id;
18
- this.jurisdiction = this.route.snapshot.data.case.case_type.jurisdiction.id;
19
- this.caseType = this.route.snapshot.data.case.case_type.id;
20
16
  }
21
17
  static ɵfac = function CaseReviewSpecificAccessRejectComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || CaseReviewSpecificAccessRejectComponent)(i0.ɵɵdirectiveInject(i1.ActivatedRoute)); };
22
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: CaseReviewSpecificAccessRejectComponent, selectors: [["case-review-specific-access-reject"]], decls: 24, vars: 19, consts: [[1, "govuk-width-container"], [1, "govuk-grid-row"], [1, "govuk-grid-column-two-thirds"], [1, "govuk-panel", "govuk-panel--confirmation"], [1, "govuk-panel__title"], [1, "govuk-heading-m"], [1, "govuk-body"], [1, "form-group", "form-group-related"], ["button", "", "href", "tasks/list", 1, "govuk-button", "govuk-!-margin-right-3"], [1, "cancel"], [3, "href"]], template: function CaseReviewSpecificAccessRejectComponent_Template(rf, ctx) { if (rf & 1) {
18
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: CaseReviewSpecificAccessRejectComponent, selectors: [["case-review-specific-access-reject"]], decls: 24, vars: 17, consts: [[1, "govuk-width-container"], [1, "govuk-grid-row"], [1, "govuk-grid-column-two-thirds"], [1, "govuk-panel", "govuk-panel--confirmation"], [1, "govuk-panel__title"], [1, "govuk-heading-m"], [1, "govuk-body"], [1, "form-group", "form-group-related"], ["button", "", "href", "tasks/list", 1, "govuk-button", "govuk-!-margin-right-3"], [1, "cancel"], [3, "href"]], template: function CaseReviewSpecificAccessRejectComponent_Template(rf, ctx) { if (rf & 1) {
23
19
  i0.ɵɵelement(0, "p");
24
20
  i0.ɵɵelementStart(1, "div", 0)(2, "div", 1)(3, "div", 2)(4, "div", 3)(5, "h1", 4);
25
21
  i0.ɵɵtext(6);
@@ -44,22 +40,22 @@ export class CaseReviewSpecificAccessRejectComponent {
44
40
  i0.ɵɵelementEnd()()();
45
41
  } if (rf & 2) {
46
42
  i0.ɵɵadvance(6);
47
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(7, 9, "Request for access denied"), "");
43
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(7, 7, "Request for access denied"), "");
48
44
  i0.ɵɵadvance(4);
49
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(11, 11, "What happens next"));
45
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(11, 9, "What happens next"));
50
46
  i0.ɵɵadvance(3);
51
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(14, 13, "The requester has been denied access to this case."), " ");
47
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(14, 11, "The requester has been denied access to this case."), " ");
52
48
  i0.ɵɵadvance(5);
53
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(19, 15, ctx.returnToMyTask));
49
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(19, 13, ctx.returnToMyTask));
54
50
  i0.ɵɵadvance(3);
55
- i0.ɵɵpropertyInterpolate3("href", "cases/case-details/", ctx.jurisdiction, "/", ctx.caseType, "/", ctx.caseId, "", i0.ɵɵsanitizeUrl);
51
+ i0.ɵɵpropertyInterpolate1("href", "cases/case-details/", ctx.caseId, "", i0.ɵɵsanitizeUrl);
56
52
  i0.ɵɵadvance();
57
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(23, 17, ctx.retunToTask));
53
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(23, 15, ctx.retunToTask));
58
54
  } }, dependencies: [i2.RpxTranslatePipe], encapsulation: 2 });
59
55
  }
60
56
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CaseReviewSpecificAccessRejectComponent, [{
61
57
  type: Component,
62
- args: [{ selector: 'case-review-specific-access-reject', template: "<p></p>\n<div class=\"govuk-width-container\">\n <div class=\"govuk-grid-row\">\n <div class=\"govuk-grid-column-two-thirds\">\n <div class=\"govuk-panel govuk-panel--confirmation\">\n <h1 class=\"govuk-panel__title\">\n {{'Request for access denied' | rpxTranslate}}<br>\n </h1>\n </div>\n <h2 class=\"govuk-heading-m\">{{'What happens next' | rpxTranslate}}</h2>\n <p class=\"govuk-body\">\n {{'The requester has been denied access to this case.' | rpxTranslate}}\n </p>\n </div>\n </div>\n <div class=\"form-group form-group-related\">\n <p>\n <a button class=\"govuk-button govuk-!-margin-right-3\" href=\"tasks/list\" >{{returnToMyTask | rpxTranslate}}</a>\n </p>\n </div>\n <p class=\"cancel\"><a href=\"cases/case-details/{{jurisdiction}}/{{caseType}}/{{caseId}}\" >{{retunToTask | rpxTranslate}}</a></p>\n</div>\n" }]
58
+ args: [{ selector: 'case-review-specific-access-reject', template: "<p></p>\n<div class=\"govuk-width-container\">\n <div class=\"govuk-grid-row\">\n <div class=\"govuk-grid-column-two-thirds\">\n <div class=\"govuk-panel govuk-panel--confirmation\">\n <h1 class=\"govuk-panel__title\">\n {{'Request for access denied' | rpxTranslate}}<br>\n </h1>\n </div>\n <h2 class=\"govuk-heading-m\">{{'What happens next' | rpxTranslate}}</h2>\n <p class=\"govuk-body\">\n {{'The requester has been denied access to this case.' | rpxTranslate}}\n </p>\n </div>\n </div>\n <div class=\"form-group form-group-related\">\n <p>\n <a button class=\"govuk-button govuk-!-margin-right-3\" href=\"tasks/list\" >{{returnToMyTask | rpxTranslate}}</a>\n </p>\n </div>\n <p class=\"cancel\"><a href=\"cases/case-details/{{caseId}}\" >{{retunToTask | rpxTranslate}}</a></p>\n</div>\n" }]
63
59
  }], () => [{ type: i1.ActivatedRoute }], null); })();
64
60
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(CaseReviewSpecificAccessRejectComponent, { className: "CaseReviewSpecificAccessRejectComponent", filePath: "lib/shared/components/case-viewer/case-review-specific-access-reject/case-review-specific-access-reject.component.ts", lineNumber: 8 }); })();
65
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS1yZXZpZXctc3BlY2lmaWMtYWNjZXNzLXJlamVjdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jY2QtY2FzZS11aS10b29sa2l0L3NyYy9saWIvc2hhcmVkL2NvbXBvbmVudHMvY2FzZS12aWV3ZXIvY2FzZS1yZXZpZXctc3BlY2lmaWMtYWNjZXNzLXJlamVjdC9jYXNlLXJldmlldy1zcGVjaWZpYy1hY2Nlc3MtcmVqZWN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9jYXNlLXZpZXdlci9jYXNlLXJldmlldy1zcGVjaWZpYy1hY2Nlc3MtcmVqZWN0L2Nhc2UtcmV2aWV3LXNwZWNpZmljLWFjY2Vzcy1yZWplY3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7QUFNakQsTUFBTSxPQUFPLHVDQUF1QztJQVFyQjtJQU50QixNQUFNLENBQVM7SUFDZixZQUFZLENBQVM7SUFDckIsUUFBUSxDQUFTO0lBQ1IsV0FBVyxHQUFHLHVDQUF1QyxDQUFDO0lBQ3RELGNBQWMsR0FBRyxvQkFBb0IsQ0FBQztJQUV0RCxZQUE2QixLQUFxQjtRQUFyQixVQUFLLEdBQUwsS0FBSyxDQUFnQjtJQUFJLENBQUM7SUFFaEQsUUFBUTtRQUNiLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDcEQsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO1FBQzVFLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO0lBQzdELENBQUM7aUlBZFUsdUNBQXVDOzZEQUF2Qyx1Q0FBdUM7WUNQcEQsb0JBQU87WUFLQyxBQURGLEFBREYsQUFERixBQURGLDhCQUFtQyxhQUNMLGFBQ2dCLGFBQ1csWUFDbEI7WUFDN0IsWUFBOEM7O1lBQUEscUJBQUk7WUFFdEQsQUFERSxpQkFBSyxFQUNEO1lBQ04sNkJBQTRCO1lBQUEsYUFBc0M7O1lBQUEsaUJBQUs7WUFDdkUsNkJBQXNCO1lBQ3BCLGFBQ0Y7O1lBRUosQUFERSxBQURFLGlCQUFJLEVBQ0EsRUFDRjtZQUdGLEFBREYsQUFERiwrQkFBMkMsU0FDdEMsWUFDd0U7WUFBQSxhQUFpQzs7WUFFOUcsQUFERSxBQUQ0RyxpQkFBSSxFQUM1RyxFQUNBO1lBQ1ksQUFBbEIsNkJBQWtCLGFBQXVFO1lBQUEsYUFBOEI7O1lBQ3pILEFBRDZILEFBQUosaUJBQUksRUFBSSxFQUMzSDs7WUFmSSxlQUE4QztZQUE5QyxpRkFBOEM7WUFHdEIsZUFBc0M7WUFBdEMsaUVBQXNDO1lBRWhFLGVBQ0Y7WUFERSw2R0FDRjtZQUt5RSxlQUFpQztZQUFqQyxnRUFBaUM7WUFHekYsZUFBa0U7WUFBbEUsb0lBQWtFO1lBQUUsY0FBOEI7WUFBOUIsNkRBQThCOzs7aUZEYjVHLHVDQUF1QztjQUpuRCxTQUFTOzJCQUNFLG9DQUFvQzs7a0ZBR25DLHVDQUF1QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Nhc2UtcmV2aWV3LXNwZWNpZmljLWFjY2Vzcy1yZWplY3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vY2FzZS1yZXZpZXctc3BlY2lmaWMtYWNjZXNzLXJlamVjdC5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgQ2FzZVJldmlld1NwZWNpZmljQWNjZXNzUmVqZWN0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICBwdWJsaWMgY2FzZUlkOiBzdHJpbmc7XG4gIHB1YmxpYyBqdXJpc2RpY3Rpb246IHN0cmluZztcbiAgcHVibGljIGNhc2VUeXBlOiBzdHJpbmc7XG4gIHB1YmxpYyByZWFkb25seSByZXR1blRvVGFzayA9ICdSZXR1cm4gdG8gdGhlIFRhc2tzIHRhYiBmb3IgdGhpcyBjYXNlJztcbiAgcHVibGljIHJlYWRvbmx5IHJldHVyblRvTXlUYXNrID0gJ1JldHVybiB0byBNeSB0YXNrcyc7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSByb3V0ZTogQWN0aXZhdGVkUm91dGUpIHsgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmNhc2VJZCA9IHRoaXMucm91dGUuc25hcHNob3QuZGF0YS5jYXNlLmNhc2VfaWQ7XG4gICAgdGhpcy5qdXJpc2RpY3Rpb24gPSB0aGlzLnJvdXRlLnNuYXBzaG90LmRhdGEuY2FzZS5jYXNlX3R5cGUuanVyaXNkaWN0aW9uLmlkO1xuICAgIHRoaXMuY2FzZVR5cGUgPSB0aGlzLnJvdXRlLnNuYXBzaG90LmRhdGEuY2FzZS5jYXNlX3R5cGUuaWQ7XG4gIH1cbn1cbiIsIjxwPjwvcD5cbjxkaXYgY2xhc3M9XCJnb3Z1ay13aWR0aC1jb250YWluZXJcIj5cbiAgPGRpdiBjbGFzcz1cImdvdnVrLWdyaWQtcm93XCI+XG4gICAgPGRpdiBjbGFzcz1cImdvdnVrLWdyaWQtY29sdW1uLXR3by10aGlyZHNcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1wYW5lbCBnb3Z1ay1wYW5lbC0tY29uZmlybWF0aW9uXCI+XG4gICAgICAgIDxoMSBjbGFzcz1cImdvdnVrLXBhbmVsX190aXRsZVwiPlxuICAgICAgICAgIHt7J1JlcXVlc3QgZm9yIGFjY2VzcyBkZW5pZWQnIHwgcnB4VHJhbnNsYXRlfX08YnI+XG4gICAgICAgIDwvaDE+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxoMiBjbGFzcz1cImdvdnVrLWhlYWRpbmctbVwiPnt7J1doYXQgaGFwcGVucyBuZXh0JyB8IHJweFRyYW5zbGF0ZX19PC9oMj5cbiAgICAgIDxwIGNsYXNzPVwiZ292dWstYm9keVwiPlxuICAgICAgICB7eydUaGUgcmVxdWVzdGVyIGhhcyBiZWVuIGRlbmllZCBhY2Nlc3MgdG8gdGhpcyBjYXNlLicgfCBycHhUcmFuc2xhdGV9fVxuICAgICAgPC9wPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgZm9ybS1ncm91cC1yZWxhdGVkXCI+XG4gICAgPHA+XG4gICAgICA8YSBidXR0b24gY2xhc3M9XCJnb3Z1ay1idXR0b24gZ292dWstIS1tYXJnaW4tcmlnaHQtM1wiIGhyZWY9XCJ0YXNrcy9saXN0XCIgPnt7cmV0dXJuVG9NeVRhc2sgfCBycHhUcmFuc2xhdGV9fTwvYT5cbiAgICA8L3A+XG4gIDwvZGl2PlxuICA8cCBjbGFzcz1cImNhbmNlbFwiPjxhIGhyZWY9XCJjYXNlcy9jYXNlLWRldGFpbHMve3tqdXJpc2RpY3Rpb259fS97e2Nhc2VUeXBlfX0ve3tjYXNlSWR9fVwiID57e3JldHVuVG9UYXNrIHwgcnB4VHJhbnNsYXRlfX08L2E+PC9wPlxuPC9kaXY+XG4iXX0=
61
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS1yZXZpZXctc3BlY2lmaWMtYWNjZXNzLXJlamVjdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jY2QtY2FzZS11aS10b29sa2l0L3NyYy9saWIvc2hhcmVkL2NvbXBvbmVudHMvY2FzZS12aWV3ZXIvY2FzZS1yZXZpZXctc3BlY2lmaWMtYWNjZXNzLXJlamVjdC9jYXNlLXJldmlldy1zcGVjaWZpYy1hY2Nlc3MtcmVqZWN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9jYXNlLXZpZXdlci9jYXNlLXJldmlldy1zcGVjaWZpYy1hY2Nlc3MtcmVqZWN0L2Nhc2UtcmV2aWV3LXNwZWNpZmljLWFjY2Vzcy1yZWplY3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7QUFNakQsTUFBTSxPQUFPLHVDQUF1QztJQU1yQjtJQUp0QixNQUFNLENBQVM7SUFDTixXQUFXLEdBQUcsdUNBQXVDLENBQUM7SUFDdEQsY0FBYyxHQUFHLG9CQUFvQixDQUFDO0lBRXRELFlBQTZCLEtBQXFCO1FBQXJCLFVBQUssR0FBTCxLQUFLLENBQWdCO0lBQUksQ0FBQztJQUVoRCxRQUFRO1FBQ2IsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0RCxDQUFDO2lJQVZVLHVDQUF1Qzs2REFBdkMsdUNBQXVDO1lDUHBELG9CQUFPO1lBS0MsQUFERixBQURGLEFBREYsQUFERiw4QkFBbUMsYUFDTCxhQUNnQixhQUNXLFlBQ2xCO1lBQzdCLFlBQThDOztZQUFBLHFCQUFJO1lBRXRELEFBREUsaUJBQUssRUFDRDtZQUNOLDZCQUE0QjtZQUFBLGFBQXNDOztZQUFBLGlCQUFLO1lBQ3ZFLDZCQUFzQjtZQUNwQixhQUNGOztZQUVKLEFBREUsQUFERSxpQkFBSSxFQUNBLEVBQ0Y7WUFHRixBQURGLEFBREYsK0JBQTJDLFNBQ3RDLFlBQ3dFO1lBQUEsYUFBaUM7O1lBRTlHLEFBREUsQUFENEcsaUJBQUksRUFDNUcsRUFDQTtZQUNZLEFBQWxCLDZCQUFrQixhQUF5QztZQUFBLGFBQThCOztZQUMzRixBQUQrRixBQUFKLGlCQUFJLEVBQUksRUFDN0Y7O1lBZkksZUFBOEM7WUFBOUMsaUZBQThDO1lBR3RCLGVBQXNDO1lBQXRDLGdFQUFzQztZQUVoRSxlQUNGO1lBREUsNkdBQ0Y7WUFLeUUsZUFBaUM7WUFBakMsZ0VBQWlDO1lBR3pGLGVBQW9DO1lBQXBDLDBGQUFvQztZQUFFLGNBQThCO1lBQTlCLDZEQUE4Qjs7O2lGRGI5RSx1Q0FBdUM7Y0FKbkQsU0FBUzsyQkFDRSxvQ0FBb0M7O2tGQUduQyx1Q0FBdUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjYXNlLXJldmlldy1zcGVjaWZpYy1hY2Nlc3MtcmVqZWN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Nhc2UtcmV2aWV3LXNwZWNpZmljLWFjY2Vzcy1yZWplY3QuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIENhc2VSZXZpZXdTcGVjaWZpY0FjY2Vzc1JlamVjdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgcHVibGljIGNhc2VJZDogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgcmV0dW5Ub1Rhc2sgPSAnUmV0dXJuIHRvIHRoZSBUYXNrcyB0YWIgZm9yIHRoaXMgY2FzZSc7XG4gIHB1YmxpYyByZWFkb25seSByZXR1cm5Ub015VGFzayA9ICdSZXR1cm4gdG8gTXkgdGFza3MnO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgcm91dGU6IEFjdGl2YXRlZFJvdXRlKSB7IH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5jYXNlSWQgPSB0aGlzLnJvdXRlLnNuYXBzaG90LmRhdGEuY2FzZS5jYXNlX2lkO1xuICB9XG59XG4iLCI8cD48L3A+XG48ZGl2IGNsYXNzPVwiZ292dWstd2lkdGgtY29udGFpbmVyXCI+XG4gIDxkaXYgY2xhc3M9XCJnb3Z1ay1ncmlkLXJvd1wiPlxuICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1ncmlkLWNvbHVtbi10d28tdGhpcmRzXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZ292dWstcGFuZWwgZ292dWstcGFuZWwtLWNvbmZpcm1hdGlvblwiPlxuICAgICAgICA8aDEgY2xhc3M9XCJnb3Z1ay1wYW5lbF9fdGl0bGVcIj5cbiAgICAgICAgICB7eydSZXF1ZXN0IGZvciBhY2Nlc3MgZGVuaWVkJyB8IHJweFRyYW5zbGF0ZX19PGJyPlxuICAgICAgICA8L2gxPlxuICAgICAgPC9kaXY+XG4gICAgICA8aDIgY2xhc3M9XCJnb3Z1ay1oZWFkaW5nLW1cIj57eydXaGF0IGhhcHBlbnMgbmV4dCcgfCBycHhUcmFuc2xhdGV9fTwvaDI+XG4gICAgICA8cCBjbGFzcz1cImdvdnVrLWJvZHlcIj5cbiAgICAgICAge3snVGhlIHJlcXVlc3RlciBoYXMgYmVlbiBkZW5pZWQgYWNjZXNzIHRvIHRoaXMgY2FzZS4nIHwgcnB4VHJhbnNsYXRlfX1cbiAgICAgIDwvcD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIGZvcm0tZ3JvdXAtcmVsYXRlZFwiPlxuICAgIDxwPlxuICAgICAgPGEgYnV0dG9uIGNsYXNzPVwiZ292dWstYnV0dG9uIGdvdnVrLSEtbWFyZ2luLXJpZ2h0LTNcIiBocmVmPVwidGFza3MvbGlzdFwiID57e3JldHVyblRvTXlUYXNrIHwgcnB4VHJhbnNsYXRlfX08L2E+XG4gICAgPC9wPlxuICA8L2Rpdj5cbiAgPHAgY2xhc3M9XCJjYW5jZWxcIj48YSBocmVmPVwiY2FzZXMvY2FzZS1kZXRhaWxzL3t7Y2FzZUlkfX1cIiA+e3tyZXR1blRvVGFzayB8IHJweFRyYW5zbGF0ZX19PC9hPjwvcD5cbjwvZGl2PlxuIl19
@@ -113,7 +113,7 @@ export class CaseReviewSpecificAccessRequestComponent {
113
113
  }
114
114
  }
115
115
  static ɵfac = function CaseReviewSpecificAccessRequestComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || CaseReviewSpecificAccessRequestComponent)(i0.ɵɵdirectiveInject(i1.FormBuilder), i0.ɵɵdirectiveInject(i2.ActivatedRoute), i0.ɵɵdirectiveInject(i2.Router), i0.ɵɵdirectiveInject(i3.AbstractAppConfig)); };
116
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: CaseReviewSpecificAccessRequestComponent, selectors: [["ccd-case-review-specific-access-request"]], decls: 77, vars: 55, consts: [[3, "error", 4, "ngIf"], [3, "submit", "formGroup"], [1, "govuk-form-group"], ["aria-describedby", "reason-hint", 1, "govuk-fieldset"], [1, "govuk-grid-column-two-thirds"], [1, "govuk-fieldset__legend", "govuk-fieldset__legend--l"], [1, "govuk-fieldset__heading"], [1, "govuk-table"], [1, "govuk-table__body"], [1, "govuk-table__row"], ["scope", "row", 1, "govuk-table__header", "leftLabel"], [1, "govuk-table__cell"], [1, "govuk-form-group", 3, "ngClass"], [1, "govuk-fieldset"], [1, "govuk-fieldset__legend", "govuk-fieldset__legend--m"], ["id", "error-message", "class", "govuk-error-message", 4, "ngIf"], [1, "govuk-radios__item"], ["id", "reason-0", "name", "radioSelected", "type", "radio", "formControlName", "radioSelected", 1, "govuk-radios__input", 3, "change", "value", "checked"], ["for", "reason-0", 1, "govuk-label", "govuk-radios__label"], ["id", "reason-1", "name", "radioSelected", "type", "radio", "formControlName", "radioSelected", 1, "govuk-radios__input", 3, "change", "value", "checked"], ["for", "reason-1", 1, "govuk-label", "govuk-radios__label"], ["id", "reason-2", "name", "radioSelected", "type", "radio", "formControlName", "radioSelected", 1, "govuk-radios__input", 3, "change", "value", "checked"], ["for", "reason-2", 1, "govuk-label", "govuk-radios__label"], [1, "govuk-button-group"], ["type", "submit", 1, "govuk-button", "govuk-!-margin-right-3"], [1, "govuk-grid-column-full", "govuk-!-padding-left-0"], ["href", "#", 1, "govuk-body", 3, "click"], [3, "error"], ["id", "error-message", 1, "govuk-error-message"]], template: function CaseReviewSpecificAccessRequestComponent_Template(rf, ctx) { if (rf & 1) {
116
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: CaseReviewSpecificAccessRequestComponent, selectors: [["ccd-case-review-specific-access-request"]], decls: 77, vars: 55, consts: [[3, "error", 4, "ngIf"], [3, "submit", "formGroup"], [1, "govuk-form-group"], ["aria-describedby", "reason-hint", 1, "govuk-fieldset"], [1, "govuk-grid-column-two-thirds"], [1, "govuk-fieldset__legend", "govuk-fieldset__legend--l"], [1, "govuk-fieldset__heading"], [1, "govuk-table"], [1, "govuk-table__body"], [1, "govuk-table__row"], ["scope", "row", 1, "govuk-table__header", "leftLabel"], [1, "govuk-table__cell"], [1, "govuk-form-group", 3, "ngClass"], [1, "govuk-fieldset"], [1, "govuk-fieldset__legend", "govuk-fieldset__legend--m"], ["id", "error-message", "class", "govuk-error-message", 4, "ngIf"], [1, "govuk-radios__item"], ["id", "reason-0", "name", "radioSelected", "type", "radio", "formControlName", "radioSelected", 1, "govuk-radios__input", 3, "change", "value", "checked"], ["for", "reason-0", 1, "govuk-label", "govuk-radios__label"], ["id", "reason-1", "name", "radioSelected", "type", "radio", "formControlName", "radioSelected", 1, "govuk-radios__input", 3, "change", "value", "checked"], ["for", "reason-1", 1, "govuk-label", "govuk-radios__label"], ["id", "reason-2", "name", "radioSelected", "type", "radio", "formControlName", "radioSelected", 1, "govuk-radios__input", 3, "change", "value", "checked"], ["for", "reason-2", 1, "govuk-label", "govuk-radios__label"], [1, "govuk-button-group"], ["type", "submit", 1, "govuk-button", "govuk-!-margin-right-3"], [1, "govuk-grid-column-full", "govuk-!-padding-left-0"], ["href", "javascript:void(0)", 1, "govuk-body", 3, "click"], [3, "error"], ["id", "error-message", 1, "govuk-error-message"]], template: function CaseReviewSpecificAccessRequestComponent_Template(rf, ctx) { if (rf & 1) {
117
117
  i0.ɵɵtemplate(0, CaseReviewSpecificAccessRequestComponent_exui_error_message_0_Template, 1, 1, "exui-error-message", 0);
118
118
  i0.ɵɵelementStart(1, "form", 1);
119
119
  i0.ɵɵlistener("submit", function CaseReviewSpecificAccessRequestComponent_Template_form_submit_1_listener() { return ctx.onSubmit(); });
@@ -194,7 +194,7 @@ export class CaseReviewSpecificAccessRequestComponent {
194
194
  i0.ɵɵpipe(71, "rpxTranslate");
195
195
  i0.ɵɵelementEnd();
196
196
  i0.ɵɵelementStart(72, "div", 25)(73, "p")(74, "a", 26);
197
- i0.ɵɵlistener("click", function CaseReviewSpecificAccessRequestComponent_Template_a_click_74_listener($event) { ctx.onCancel(); return $event.preventDefault(); });
197
+ i0.ɵɵlistener("click", function CaseReviewSpecificAccessRequestComponent_Template_a_click_74_listener() { return ctx.onCancel(); });
198
198
  i0.ɵɵtext(75);
199
199
  i0.ɵɵpipe(76, "rpxTranslate");
200
200
  i0.ɵɵelementEnd()()()()();
@@ -250,7 +250,7 @@ export class CaseReviewSpecificAccessRequestComponent {
250
250
  }
251
251
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CaseReviewSpecificAccessRequestComponent, [{
252
252
  type: Component,
253
- args: [{ selector: 'ccd-case-review-specific-access-request', template: "<exui-error-message\n *ngIf=\"formGroup.invalid && submitted\"\n [error]=\"errorMessage\">\n</exui-error-message>\n\n<form [formGroup]=\"formGroup\" (submit)=\"onSubmit()\">\n <div class=\"govuk-form-group\">\n <fieldset class=\"govuk-fieldset\" aria-describedby=\"reason-hint\">\n <div class=\"govuk-grid-column-two-thirds\">\n <p></p>\n <legend class=\"govuk-fieldset__legend govuk-fieldset__legend--l\">\n <h1 class=\"govuk-fieldset__heading\">\n {{ title | rpxTranslate }}\n </h1>\n </legend>\n <p></p>\n <table class=\"govuk-table\">\n <caption></caption>\n <tbody class=\"govuk-table__body\">\n <tr class=\"govuk-table__row\">\n <th scope=\"row\" class=\"govuk-table__header leftLabel\" >\n {{'Case name' | rpxTranslate}}\n </th>\n <td class=\"govuk-table__cell\">{{ requestAccessDetails.caseName }}</td>\n </tr>\n <tr class=\"govuk-table__row\">\n <th scope=\"row\" class=\"govuk-table__header leftLabel\" >\n {{'Case reference' | rpxTranslate}}\n </th>\n <td class=\"govuk-table__cell\">{{ requestAccessDetails.caseReference }}</td>\n </tr>\n <tr class=\"govuk-table__row\">\n <th scope=\"row\" class=\"govuk-table__header leftLabel\" >\n {{'Date submitted' | rpxTranslate}}\n </th>\n <td class=\"govuk-table__cell\">{{ requestAccessDetails.dateSubmitted }}</td>\n </tr>\n <tr class=\"govuk-table__row\">\n <th scope=\"row\" class=\"govuk-table__header leftLabel\" >\n {{'Request from' | rpxTranslate}}\n </th>\n <td class=\"govuk-table__cell\">{{ requestAccessDetails.requestFrom }}<br /></td>\n </tr>\n <tr class=\"govuk-table__row\">\n <th scope=\"row\" class=\"govuk-table__header leftLabel\" >\n {{'Reason for case access' | rpxTranslate}}\n </th>\n <td class=\"govuk-table__cell\">{{ requestAccessDetails.reasonForCaseAccess | rpxTranslate }}</td>\n </tr>\n </tbody>\n </table>\n\n <div\n class=\"govuk-form-group\"\n [ngClass]=\"{ 'form-group-error': formGroup.invalid && submitted }\">\n <fieldset class=\"govuk-fieldset\">\n <legend class=\"govuk-fieldset__legend govuk-fieldset__legend--m\">\n <h1 class=\"govuk-fieldset__heading\">\n {{ hint | rpxTranslate }}\n </h1>\n </legend>\n <div\n id=\"error-message\"\n class=\"govuk-error-message\"\n *ngIf=\"formGroup.get('radioSelected').invalid && submitted\">\n {{ errorMessage.description | rpxTranslate }}\n </div>\n <div class=\"govuk-radios__item\">\n <input\n class=\"govuk-radios__input\"\n id=\"reason-0\"\n name=\"radioSelected\"\n type=\"radio\"\n [value]=\"accessReasons[0].reason\"\n formControlName=\"radioSelected\"\n [checked]=\"accessReasons[0].checked\"\n (change)=\"onChange()\"/>\n <label class=\"govuk-label govuk-radios__label\" for=\"reason-0\">\n {{ accessReasons[0].reason | rpxTranslate }}\n </label>\n </div>\n <div class=\"govuk-radios__item\">\n <input\n class=\"govuk-radios__input\"\n id=\"reason-1\"\n name=\"radioSelected\"\n type=\"radio\"\n [value]=\"accessReasons[1].reason\"\n formControlName=\"radioSelected\"\n [checked]=\"accessReasons[1].checked\"\n (change)=\"onChange()\"/>\n <label class=\"govuk-label govuk-radios__label\" for=\"reason-1\">\n {{ accessReasons[1].reason | rpxTranslate }}\n </label>\n </div>\n <div class=\"govuk-radios__item\">\n <input\n class=\"govuk-radios__input\"\n id=\"reason-2\"\n name=\"radioSelected\"\n type=\"radio\"\n [value]=\"accessReasons[2].reason\"\n formControlName=\"radioSelected\"\n [checked]=\"accessReasons[2].checked\"\n (change)=\"onChange()\"/>\n <label class=\"govuk-label govuk-radios__label\" for=\"reason-2\">\n {{ accessReasons[2].reason | rpxTranslate }}\n </label>\n </div>\n </fieldset>\n </div>\n </div>\n </fieldset>\n </div>\n\n <div class=\"govuk-button-group\">\n <button class=\"govuk-button govuk-!-margin-right-3\" type=\"submit\">\n {{'Continue' | rpxTranslate}}\n </button>\n <div class=\"govuk-grid-column-full govuk-!-padding-left-0\">\n <p>\n <a class=\"govuk-body\" (click)=\"onCancel(); $event.preventDefault()\" href=\"#\">\n {{'Cancel' | rpxTranslate}}\n </a>\n </p>\n </div>\n </div>\n</form>\n", styles: [".left-label{width:220px}\n"] }]
253
+ args: [{ selector: 'ccd-case-review-specific-access-request', template: "<exui-error-message\n *ngIf=\"formGroup.invalid && submitted\"\n [error]=\"errorMessage\">\n</exui-error-message>\n\n<form [formGroup]=\"formGroup\" (submit)=\"onSubmit()\">\n <div class=\"govuk-form-group\">\n <fieldset class=\"govuk-fieldset\" aria-describedby=\"reason-hint\">\n <div class=\"govuk-grid-column-two-thirds\">\n <p></p>\n <legend class=\"govuk-fieldset__legend govuk-fieldset__legend--l\">\n <h1 class=\"govuk-fieldset__heading\">\n {{ title | rpxTranslate }}\n </h1>\n </legend>\n <p></p>\n <table class=\"govuk-table\">\n <caption></caption>\n <tbody class=\"govuk-table__body\">\n <tr class=\"govuk-table__row\">\n <th scope=\"row\" class=\"govuk-table__header leftLabel\" >\n {{'Case name' | rpxTranslate}}\n </th>\n <td class=\"govuk-table__cell\">{{ requestAccessDetails.caseName }}</td>\n </tr>\n <tr class=\"govuk-table__row\">\n <th scope=\"row\" class=\"govuk-table__header leftLabel\" >\n {{'Case reference' | rpxTranslate}}\n </th>\n <td class=\"govuk-table__cell\">{{ requestAccessDetails.caseReference }}</td>\n </tr>\n <tr class=\"govuk-table__row\">\n <th scope=\"row\" class=\"govuk-table__header leftLabel\" >\n {{'Date submitted' | rpxTranslate}}\n </th>\n <td class=\"govuk-table__cell\">{{ requestAccessDetails.dateSubmitted }}</td>\n </tr>\n <tr class=\"govuk-table__row\">\n <th scope=\"row\" class=\"govuk-table__header leftLabel\" >\n {{'Request from' | rpxTranslate}}\n </th>\n <td class=\"govuk-table__cell\">{{ requestAccessDetails.requestFrom }}<br /></td>\n </tr>\n <tr class=\"govuk-table__row\">\n <th scope=\"row\" class=\"govuk-table__header leftLabel\" >\n {{'Reason for case access' | rpxTranslate}}\n </th>\n <td class=\"govuk-table__cell\">{{ requestAccessDetails.reasonForCaseAccess | rpxTranslate }}</td>\n </tr>\n </tbody>\n </table>\n\n <div\n class=\"govuk-form-group\"\n [ngClass]=\"{ 'form-group-error': formGroup.invalid && submitted }\">\n <fieldset class=\"govuk-fieldset\">\n <legend class=\"govuk-fieldset__legend govuk-fieldset__legend--m\">\n <h1 class=\"govuk-fieldset__heading\">\n {{ hint | rpxTranslate }}\n </h1>\n </legend>\n <div\n id=\"error-message\"\n class=\"govuk-error-message\"\n *ngIf=\"formGroup.get('radioSelected').invalid && submitted\">\n {{ errorMessage.description | rpxTranslate }}\n </div>\n <div class=\"govuk-radios__item\">\n <input\n class=\"govuk-radios__input\"\n id=\"reason-0\"\n name=\"radioSelected\"\n type=\"radio\"\n [value]=\"accessReasons[0].reason\"\n formControlName=\"radioSelected\"\n [checked]=\"accessReasons[0].checked\"\n (change)=\"onChange()\"/>\n <label class=\"govuk-label govuk-radios__label\" for=\"reason-0\">\n {{ accessReasons[0].reason | rpxTranslate }}\n </label>\n </div>\n <div class=\"govuk-radios__item\">\n <input\n class=\"govuk-radios__input\"\n id=\"reason-1\"\n name=\"radioSelected\"\n type=\"radio\"\n [value]=\"accessReasons[1].reason\"\n formControlName=\"radioSelected\"\n [checked]=\"accessReasons[1].checked\"\n (change)=\"onChange()\"/>\n <label class=\"govuk-label govuk-radios__label\" for=\"reason-1\">\n {{ accessReasons[1].reason | rpxTranslate }}\n </label>\n </div>\n <div class=\"govuk-radios__item\">\n <input\n class=\"govuk-radios__input\"\n id=\"reason-2\"\n name=\"radioSelected\"\n type=\"radio\"\n [value]=\"accessReasons[2].reason\"\n formControlName=\"radioSelected\"\n [checked]=\"accessReasons[2].checked\"\n (change)=\"onChange()\"/>\n <label class=\"govuk-label govuk-radios__label\" for=\"reason-2\">\n {{ accessReasons[2].reason | rpxTranslate }}\n </label>\n </div>\n </fieldset>\n </div>\n </div>\n </fieldset>\n </div>\n\n <div class=\"govuk-button-group\">\n <button class=\"govuk-button govuk-!-margin-right-3\" type=\"submit\">\n {{'Continue' | rpxTranslate}}\n </button>\n <div class=\"govuk-grid-column-full govuk-!-padding-left-0\">\n <p>\n <a class=\"govuk-body\" (click)=\"onCancel()\" href=\"javascript:void(0)\">\n {{'Cancel' | rpxTranslate}}\n </a>\n </p>\n </div>\n </div>\n</form>\n", styles: [".left-label{width:220px}\n"] }]
254
254
  }], () => [{ type: i1.FormBuilder }, { type: i2.ActivatedRoute }, { type: i2.Router }, { type: i3.AbstractAppConfig }], null); })();
255
255
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(CaseReviewSpecificAccessRequestComponent, { className: "CaseReviewSpecificAccessRequestComponent", filePath: "lib/shared/components/case-viewer/case-review-specific-access-request/case-review-specific-access-request.component.ts", lineNumber: 14 }); })();
256
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS1yZXZpZXctc3BlY2lmaWMtYWNjZXNzLXJlcXVlc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL2Nhc2Utdmlld2VyL2Nhc2UtcmV2aWV3LXNwZWNpZmljLWFjY2Vzcy1yZXF1ZXN0L2Nhc2UtcmV2aWV3LXNwZWNpZmljLWFjY2Vzcy1yZXF1ZXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9jYXNlLXZpZXdlci9jYXNlLXJldmlldy1zcGVjaWZpYy1hY2Nlc3MtcmVxdWVzdC9jYXNlLXJldmlldy1zcGVjaWZpYy1hY2Nlc3MtcmVxdWVzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBYSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXpELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRTNELE9BQU8sRUFBRSxZQUFZLEVBQUUsaUNBQWlDLEVBQUUsbUNBQW1DLEVBQUUsTUFBTSxVQUFVLENBQUM7Ozs7Ozs7SUNOaEgseUNBR3FCOzs7SUFEbkIsMkNBQXNCOzs7SUEyRFosK0JBRzhEO0lBQzVELFlBQ0Y7O0lBQUEsaUJBQU07OztJQURKLGNBQ0Y7SUFERSxzRkFDRjs7QURyRFosTUFBTSxPQUFPLHdDQUF3QztJQW9CaEM7SUFDQTtJQUNBO0lBQ0E7SUFyQlosTUFBTSxD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a0JBQ29DO1lBQ2hFLGFBQ0Y7O1lBQUEsaUJBQVM7WUFHTCxBQURGLEFBREYsZ0NBQTJELFNBQ3RELGFBQzRFO1lBQXZELGdIQUFTLGNBQVUsU0FBRSx1QkFBdUIsSUFBQztZQUNqRSxhQUNGOztZQUlSLEFBREUsQUFERSxBQURFLEFBREUsaUJBQUksRUFDRixFQUNBLEVBQ0YsRUFDRDs7WUE5SEosNkRBQW9DO1lBSWpDLGNBQXVCO1lBQXZCLHlDQUF1QjtZQU9qQixlQUNGO1lBREUsaUVBQ0Y7WUFRTSxlQUNGO1lBREUsb0VBQ0Y7WUFDOEIsZUFBbUM7WUFBbkMsdURBQW1DO1lBSS9ELGVBQ0Y7WUFERSx5RUFDRjtZQUM4QixlQUF3QztZQUF4Qyw0REFBd0M7WUFJcEUsZUFDRjtZQURFLHlFQUNGO1lBQzhCLGVBQXdDO1lBQXhDLDREQUF3QztZQUlwRSxlQUNGO1lBREUsdUVBQ0Y7WUFDOEIsZUFBc0M7WUFBdEMsMERBQXNDO1lBSWxFLGVBQ0Y7WUFERSxpRkFDRjtZQUM4QixlQUE2RDtZQUE3RCwwRkFBNkQ7WUFPL0YsZUFBa0U7WUFBbEUsNkZBQWtFO1lBSTVELGVBQ0Y7WUFERSxpRUFDRjtZQUtDLGVBQXlEO1lBQXpELGtGQUF5RDtZQVN4RCxlQUFpQztZQUVqQyxBQUZBLG1EQUFpQyx5Q0FFRztZQUdwQyxlQUNGO1lBREUsb0ZBQ0Y7WUFRRSxlQUFpQztZQUVqQyxBQUZBLG1EQUFpQyx5Q0FFRztZQUdwQyxlQUNGO1lBREUsb0ZBQ0Y7WUFRRSxlQUFpQztZQUVqQyxBQUZBLG1EQUFpQyx5Q0FFRztZQUdwQyxlQUNGO1lBREUsb0ZBQ0Y7WUFVUixlQUNGO1lBREUsbUVBQ0Y7WUFJTSxlQUNGO1lBREUsaUVBQ0Y7OztpRkQ5R0ssd0NBQXdDO2NBTHBELFNBQVM7MkJBQ0UseUNBQXlDOztrRkFJeEMsd0NBQXdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQWJzdHJhY3RBcHBDb25maWcgfSBmcm9tICcuLi8uLi8uLi8uLi9hcHAuY29uZmlnJztcbmltcG9ydCB7IENhc2VWaWV3LCBFcnJvck1lc3NhZ2UsIFJldmlld1NwZWNpZmljQWNjZXNzUmVxdWVzdCB9IGZyb20gJy4uLy4uLy4uL2RvbWFpbic7XG5pbXBvcnQgeyBBY2Nlc3NSZWFzb24sIFJldmlld1NwZWNpZmljQWNjZXNzUmVxdWVzdEVycm9ycywgUmV2aWV3U3BlY2lmaWNBY2Nlc3NSZXF1ZXN0UGFnZVRleHQgfSBmcm9tICcuL21vZGVscyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NjZC1jYXNlLXJldmlldy1zcGVjaWZpYy1hY2Nlc3MtcmVxdWVzdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9jYXNlLXJldmlldy1zcGVjaWZpYy1hY2Nlc3MtcmVxdWVzdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Nhc2UtcmV2aWV3LXNwZWNpZmljLWFjY2Vzcy1yZXF1ZXN0LmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgQ2FzZVJldmlld1NwZWNpZmljQWNjZXNzUmVxdWVzdENvbXBvbmVudFxuICBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHVibGljIHN0YXRpYyBDQU5DRUxfTElOS19ERVNUSU5BVElPTiA9ICcvd29yay9teS13b3JrL2xpc3QnO1xuICBwdWJsaWMgY29sbGFwc2VkID0gZmFsc2U7XG4gIHB1YmxpYyB0aXRsZTogc3RyaW5nO1xuICBwdWJsaWMgaGludDogc3RyaW5nO1xuICBwdWJsaWMgY2FzZVJlZkxhYmVsOiBzdHJpbmc7XG4gIHB1YmxpYyBmb3JtR3JvdXA6IEZvcm1Hcm91cDtcbiAgcHVibGljIHN1Ym1pdHRlZCA9IGZhbHNlO1xuICBwdWJsaWMgZXJyb3JNZXNzYWdlOiBFcnJvck1lc3NhZ2U7XG4gIHB1YmxpYyByZWFkb25seSBhY2Nlc3NSZWFzb25zOiBEaXNwbGF5ZWRBY2Nlc3NSZWFzb25bXTtcbiAgcHVibGljIHJlcXVlc3RBY2Nlc3NEZXRhaWxzOiBSZXF1ZXN0QWNjZXNzRGV0YWlscztcbiAgcHVibGljIGNhc2VTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgcHVibGljIHVzZXJBY2Nlc3NUeXBlOiBzdHJpbmc7XG4gIHB1YmxpYyBjYXNlRGV0YWlsczogQ2FzZVZpZXc7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBnZW5lcmljRXJyb3IgPSAnVGhlcmUgaXMgYSBwcm9ibGVtJztcbiAgcHJpdmF0ZSByZWFkb25seSByYWRpb1NlbGVjdGVkQ29udHJvbE5hbWUgPSAncmFkaW9TZWxlY3RlZCc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBmYjogRm9ybUJ1aWxkZXIsXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFwcENvbmZpZzogQWJzdHJhY3RBcHBDb25maWcsXG4gICkge1xuICAgIHRoaXMuYWNjZXNzUmVhc29ucyA9IFtcbiAgICAgIHsgcmVhc29uOiBBY2Nlc3NSZWFzb24uQVBQUk9WRV9SRVFVRVNULCBjaGVja2VkOiBmYWxzZSB9LFxuICAgICAgeyByZWFzb246IEFjY2Vzc1JlYXNvbi5SRUpFQ1RfUkVRVUVTVCwgY2hlY2tlZDogZmFsc2UgfSxcbiAgICAgIHsgcmVhc29uOiBBY2Nlc3NSZWFzb24uUkVRVUVTVF9NT1JFX0lORk9STUFUSU9OLCBjaGVja2VkOiBmYWxzZSB9LFxuICAgIF07XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgLy8gVE9ETzogdGhpcyB0aWNrZXQgaXMgYmxvY2tlZCBzbyBtb2NrZWQgd2l0aCB0aG9zZSBkYXRhIHRvIGdvIHRocm91Z2gsIHRoZXkgd2lsbCBiZSByZW1vdmVkIGFuZCBpbXBsaW1lbnRlZCB3aXRoIGFjdHVhbCBkYXRhXG4gICAgLy8gd2hlbiBkZXBlbmRlbmN5IHJlc29sdmVkXG4gICAgdGhpcy5zZXRNb2NrRGF0YSgpO1xuICAgIHRoaXMudGl0bGUgPSBSZXZpZXdTcGVjaWZpY0FjY2Vzc1JlcXVlc3RQYWdlVGV4dC5USVRMRTtcbiAgICB0aGlzLmhpbnQgPSBSZXZpZXdTcGVjaWZpY0FjY2Vzc1JlcXVlc3RQYWdlVGV4dC5ISU5UO1xuICAgIHRoaXMuY2FzZVJlZkxhYmVsID0gUmV2aWV3U3BlY2lmaWNBY2Nlc3NSZXF1ZXN0UGFnZVRleHQuQ0FTRV9SRUY7XG4gICAgdGhpcy5mb3JtR3JvdXAgPSB0aGlzLmZiLmdyb3VwKHtcbiAgICAgIHJhZGlvU2VsZWN0ZWQ6IG5ldyBGb3JtQ29udHJvbChudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jYXNlU3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLmNhc2VTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25DaGFuZ2UoKTogdm9pZCB7XG4gICAgdGhpcy5zdWJtaXR0ZWQgPSBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBvblN1Ym1pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnN1Ym1pdHRlZCA9IHRydWU7XG5cbiAgICBpZiAodGhpcy5mb3JtR3JvdXAuZ2V0KHRoaXMucmFkaW9TZWxlY3RlZENvbnRyb2xOYW1lKS5pbnZhbGlkKSB7XG4gICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IHtcbiAgICAgICAgdGl0bGU6IHRoaXMuZ2VuZXJpY0Vycm9yLFxuICAgICAgICBkZXNjcmlwdGlvbjogUmV2aWV3U3BlY2lmaWNBY2Nlc3NSZXF1ZXN0RXJyb3JzLk5PX1NFTEVDVElPTixcbiAgICAgIH07XG4gICAgfVxuICAgIC8vIEluaXRpYXRlIFJldmlldyBBY2Nlc3MgUmVxdWVzdFxuICAgIGlmICh0aGlzLmZvcm1Hcm91cC52YWxpZCkge1xuICAgICAgLy8gR2V0IHRoZSBDYXNlIFJlZmVyZW5jZSAoZm9yIHdoaWNoIGFjY2VzcyBpcyBiZWluZyByZXF1ZXN0ZWQpIGZyb20gdGhlIEFjdGl2YXRlZFJvdXRlU25hcHNob3QgZGF0YVxuICAgICAgY29uc3QgY2FzZUlkID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5kYXRhLmNhc2UuY2FzZV9pZDtcbiAgICAgIGNvbnN0IHJhZGlvU2VsZWN0ZWRWYWx1ZSA9IHRoaXMuZm9ybUdyb3VwLmdldChcbiAgICAgICAgdGhpcy5yYWRpb1NlbGVjdGVkQ29udHJvbE5hbWVcbiAgICAgICkudmFsdWU7XG4gICAgICAvLyBHZXQgdGhlIGluZGV4IG9mIHRoZSBzZWxlY3RlZCBBY2Nlc3NSZWFzb24gZW51bSB2YWx1ZS4gQ2FuJ3QgdXNlIE9iamVjdC52YWx1ZXMgYmVjYXVzZSBpdCdzIG5vdCBhdmFpbGFibGUgaW5cbiAgICAgIC8vIDwgRVMyMDE3IVxuICAgICAgY29uc3QgcmVhc29uTnVtYmVyID0gT2JqZWN0LmtleXMoQWNjZXNzUmVhc29uKVxuICAgICAgICAubWFwKChlKSA9PiBBY2Nlc3NSZWFzb25bZV0pXG4gICAgICAgIC5pbmRleE9mKHJhZGlvU2VsZWN0ZWRWYWx1ZSk7XG4gICAgICAvLyByZXF1ZXN0IG1vZGVsIGNyZWF0ZWQgLCBpdCB3aWxsIGJlIHVzZWQgZm9yIHN1Ym1pc3Npb24gcGFydFxuICAgICAgY29uc3QgY2hhbGxlbmdlZEFjY2Vzc1JlcXVlc3QgPSB7XG4gICAgICAgIHJlYXNvbjogcmVhc29uTnVtYmVyLFxuICAgICAgICBjYXNlSWQsXG4gICAgICB9IGFzIFJldmlld1NwZWNpZmljQWNjZXNzUmVxdWVzdDtcbiAgICAgIGlmIChBY2Nlc3NSZWFzb24uUkVKRUNUX1JFUVVFU1QgPT09IHJhZGlvU2VsZWN0ZWRWYWx1ZSkge1xuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJ3JlamVjdGVkJ10sIHsgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25DYW5jZWwoKTogdm9pZCB7XG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybChDYXNlUmV2aWV3U3BlY2lmaWNBY2Nlc3NSZXF1ZXN0Q29tcG9uZW50LkNBTkNFTF9MSU5LX0RFU1RJTkFUSU9OKTtcbiAgfVxuXG4gIC8vIHJlbW92ZSBvbmNlIEFjY2VzcyBtYW5hZ2VtZW50IGdvZXMgbGl2ZVxuICBwdWJsaWMgc2V0TW9ja0RhdGEoKTogdm9pZCB7XG4gICAgY29uc3QgcmVxdWVzdEFjY2Vzc0RldGFpbHNNb2NrID1cbiAgICAgIHRoaXMuYXBwQ29uZmlnLmdldEFjY2Vzc01hbmFnZW1lbnRSZXF1ZXN0UmV2aWV3TW9ja01vZGVsKCk7XG5cbiAgICBpZiAocmVxdWVzdEFjY2Vzc0RldGFpbHNNb2NrLmFjdGl2ZSkge1xuICAgICAgdGhpcy5yZXF1ZXN0QWNjZXNzRGV0YWlscyA9IHJlcXVlc3RBY2Nlc3NEZXRhaWxzTW9jay5kZXRhaWxzO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIERpc3BsYXllZEFjY2Vzc1JlYXNvbiB7XG4gIHJlYXNvbjogQWNjZXNzUmVhc29uO1xuICBjaGVja2VkOiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlcXVlc3RBY2Nlc3NEZXRhaWxzIHtcbiAgY2FzZU5hbWU6IHN0cmluZztcbiAgY2FzZVJlZmVyZW5jZTogc3RyaW5nO1xuICBkYXRlU3VibWl0dGVkOiBzdHJpbmc7XG4gIHJlcXVlc3RGcm9tOiBzdHJpbmc7XG4gIHJlYXNvbkZvckNhc2VBY2Nlc3M6IHN0cmluZztcbn1cbiIsIjxleHVpLWVycm9yLW1lc3NhZ2VcbiAgKm5nSWY9XCJmb3JtR3JvdXAuaW52YWxpZCAmJiBzdWJtaXR0ZWRcIlxuICBbZXJyb3JdPVwiZXJyb3JNZXNzYWdlXCI+XG48L2V4dWktZXJyb3ItbWVzc2FnZT5cblxuPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtR3JvdXBcIiAoc3VibWl0KT1cIm9uU3VibWl0KClcIj5cbiAgPGRpdiBjbGFzcz1cImdvdnVrLWZvcm0tZ3JvdXBcIj5cbiAgICA8ZmllbGRzZXQgY2xhc3M9XCJnb3Z1ay1maWVsZHNldFwiIGFyaWEtZGVzY3JpYmVkYnk9XCJyZWFzb24taGludFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImdvdnVrLWdyaWQtY29sdW1uLXR3by10aGlyZHNcIj5cbiAgICAgICAgPHA+PC9wPlxuICAgICAgICA8bGVnZW5kIGNsYXNzPVwiZ292dWstZmllbGRzZXRfX2xlZ2VuZCBnb3Z1ay1maWVsZHNldF9fbGVnZW5kLS1sXCI+XG4gICAgICAgICAgPGgxIGNsYXNzPVwiZ292dWstZmllbGRzZXRfX2hlYWRpbmdcIj5cbiAgICAgICAgICAgIHt7IHRpdGxlIHwgcnB4VHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9oMT5cbiAgICAgICAgPC9sZWdlbmQ+XG4gICAgICAgIDxwPjwvcD5cbiAgICAgICAgPHRhYmxlIGNsYXNzPVwiZ292dWstdGFibGVcIj5cbiAgICAgICAgICA8Y2FwdGlvbj48L2NhcHRpb24+XG4gICAgICAgICAgPHRib2R5IGNsYXNzPVwiZ292dWstdGFibGVfX2JvZHlcIj5cbiAgICAgICAgICAgIDx0ciBjbGFzcz1cImdvdnVrLXRhYmxlX19yb3dcIj5cbiAgICAgICAgICAgICAgPHRoIHNjb3BlPVwicm93XCIgY2xhc3M9XCJnb3Z1ay10YWJsZV9faGVhZGVyIGxlZnRMYWJlbFwiID5cbiAgICAgICAgICAgICAgICB7eydDYXNlIG5hbWUnIHwgcnB4VHJhbnNsYXRlfX1cbiAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGxcIj57eyByZXF1ZXN0QWNjZXNzRGV0YWlscy5jYXNlTmFtZSB9fTwvdGQ+XG4gICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgPHRyIGNsYXNzPVwiZ292dWstdGFibGVfX3Jvd1wiPlxuICAgICAgICAgICAgICA8dGggc2NvcGU9XCJyb3dcIiBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkZXIgbGVmdExhYmVsXCIgPlxuICAgICAgICAgICAgICAgIHt7J0Nhc2UgcmVmZXJlbmNlJyB8IHJweFRyYW5zbGF0ZX19XG4gICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsXCI+e3sgcmVxdWVzdEFjY2Vzc0RldGFpbHMuY2FzZVJlZmVyZW5jZSB9fTwvdGQ+XG4gICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgPHRyIGNsYXNzPVwiZ292dWstdGFibGVfX3Jvd1wiPlxuICAgICAgICAgICAgICA8dGggc2NvcGU9XCJyb3dcIiBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkZXIgbGVmdExhYmVsXCIgPlxuICAgICAgICAgICAgICAgIHt7J0RhdGUgc3VibWl0dGVkJyB8IHJweFRyYW5zbGF0ZX19XG4gICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsXCI+e3sgcmVxdWVzdEFjY2Vzc0RldGFpbHMuZGF0ZVN1Ym1pdHRlZCB9fTwvdGQ+XG4gICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgPHRyIGNsYXNzPVwiZ292dWstdGFibGVfX3Jvd1wiPlxuICAgICAgICAgICAgICA8dGggc2NvcGU9XCJyb3dcIiBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkZXIgbGVmdExhYmVsXCIgPlxuICAgICAgICAgICAgICAgIHt7J1JlcXVlc3QgZnJvbScgfCBycHhUcmFuc2xhdGV9fVxuICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbFwiPnt7IHJlcXVlc3RBY2Nlc3NEZXRhaWxzLnJlcXVlc3RGcm9tIH19PGJyIC8+PC90ZD5cbiAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICA8dHIgY2xhc3M9XCJnb3Z1ay10YWJsZV9fcm93XCI+XG4gICAgICAgICAgICAgIDx0aCBzY29wZT1cInJvd1wiIGNsYXNzPVwiZ292dWstdGFibGVfX2hlYWRlciBsZWZ0TGFiZWxcIiA+XG4gICAgICAgICAgICAgICAge3snUmVhc29uIGZvciBjYXNlIGFjY2VzcycgfCBycHhUcmFuc2xhdGV9fVxuICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbFwiPnt7IHJlcXVlc3RBY2Nlc3NEZXRhaWxzLnJlYXNvbkZvckNhc2VBY2Nlc3MgfCBycHhUcmFuc2xhdGUgfX08L3RkPlxuICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICA8L3Rib2R5PlxuICAgICAgICA8L3RhYmxlPlxuXG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImdvdnVrLWZvcm0tZ3JvdXBcIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2Zvcm0tZ3JvdXAtZXJyb3InOiBmb3JtR3JvdXAuaW52YWxpZCAmJiBzdWJtaXR0ZWQgfVwiPlxuICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz1cImdvdnVrLWZpZWxkc2V0XCI+XG4gICAgICAgICAgICA8bGVnZW5kIGNsYXNzPVwiZ292dWstZmllbGRzZXRfX2xlZ2VuZCBnb3Z1ay1maWVsZHNldF9fbGVnZW5kLS1tXCI+XG4gICAgICAgICAgICAgIDxoMSBjbGFzcz1cImdvdnVrLWZpZWxkc2V0X19oZWFkaW5nXCI+XG4gICAgICAgICAgICAgICAge3sgaGludCB8IHJweFRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICA8L2gxPlxuICAgICAgICAgICAgPC9sZWdlbmQ+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGlkPVwiZXJyb3ItbWVzc2FnZVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiZ292dWstZXJyb3ItbWVzc2FnZVwiXG4gICAgICAgICAgICAgICpuZ0lmPVwiZm9ybUdyb3VwLmdldCgncmFkaW9TZWxlY3RlZCcpLmludmFsaWQgJiYgc3VibWl0dGVkXCI+XG4gICAgICAgICAgICAgIHt7IGVycm9yTWVzc2FnZS5kZXNjcmlwdGlvbiB8IHJweFRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ292dWstcmFkaW9zX19pdGVtXCI+XG4gICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZ292dWstcmFkaW9zX19pbnB1dFwiXG4gICAgICAgICAgICAgICAgaWQ9XCJyZWFzb24tMFwiXG4gICAgICAgICAgICAgICAgbmFtZT1cInJhZGlvU2VsZWN0ZWRcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJyYWRpb1wiXG4gICAgICAgICAgICAgICAgW3ZhbHVlXT1cImFjY2Vzc1JlYXNvbnNbMF0ucmVhc29uXCJcbiAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJyYWRpb1NlbGVjdGVkXCJcbiAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJhY2Nlc3NSZWFzb25zWzBdLmNoZWNrZWRcIlxuICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwib25DaGFuZ2UoKVwiLz5cbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZ292dWstbGFiZWwgZ292dWstcmFkaW9zX19sYWJlbFwiIGZvcj1cInJlYXNvbi0wXCI+XG4gICAgICAgICAgICAgICAge3sgYWNjZXNzUmVhc29uc1swXS5yZWFzb24gfCBycHhUcmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdvdnVrLXJhZGlvc19faXRlbVwiPlxuICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICBjbGFzcz1cImdvdnVrLXJhZGlvc19faW5wdXRcIlxuICAgICAgICAgICAgICAgIGlkPVwicmVhc29uLTFcIlxuICAgICAgICAgICAgICAgIG5hbWU9XCJyYWRpb1NlbGVjdGVkXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwicmFkaW9cIlxuICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJhY2Nlc3NSZWFzb25zWzFdLnJlYXNvblwiXG4gICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicmFkaW9TZWxlY3RlZFwiXG4gICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiYWNjZXNzUmVhc29uc1sxXS5jaGVja2VkXCJcbiAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uQ2hhbmdlKClcIi8+XG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImdvdnVrLWxhYmVsIGdvdnVrLXJhZGlvc19fbGFiZWxcIiBmb3I9XCJyZWFzb24tMVwiPlxuICAgICAgICAgICAgICAgIHt7IGFjY2Vzc1JlYXNvbnNbMV0ucmVhc29uIHwgcnB4VHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1yYWRpb3NfX2l0ZW1cIj5cbiAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJnb3Z1ay1yYWRpb3NfX2lucHV0XCJcbiAgICAgICAgICAgICAgICBpZD1cInJlYXNvbi0yXCJcbiAgICAgICAgICAgICAgICBuYW1lPVwicmFkaW9TZWxlY3RlZFwiXG4gICAgICAgICAgICAgICAgdHlwZT1cInJhZGlvXCJcbiAgICAgICAgICAgICAgICBbdmFsdWVdPVwiYWNjZXNzUmVhc29uc1syXS5yZWFzb25cIlxuICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInJhZGlvU2VsZWN0ZWRcIlxuICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImFjY2Vzc1JlYXNvbnNbMl0uY2hlY2tlZFwiXG4gICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvbkNoYW5nZSgpXCIvPlxuICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJnb3Z1ay1sYWJlbCBnb3Z1ay1yYWRpb3NfX2xhYmVsXCIgZm9yPVwicmVhc29uLTJcIj5cbiAgICAgICAgICAgICAgICB7eyBhY2Nlc3NSZWFzb25zWzJdLnJlYXNvbiB8IHJweFRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9maWVsZHNldD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2ZpZWxkc2V0PlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwiZ292dWstYnV0dG9uLWdyb3VwXCI+XG4gICAgPGJ1dHRvbiBjbGFzcz1cImdvdnVrLWJ1dHRvbiBnb3Z1ay0hLW1hcmdpbi1yaWdodC0zXCIgdHlwZT1cInN1Ym1pdFwiPlxuICAgICAge3snQ29udGludWUnIHwgcnB4VHJhbnNsYXRlfX1cbiAgICA8L2J1dHRvbj5cbiAgICA8ZGl2IGNsYXNzPVwiZ292dWstZ3JpZC1jb2x1bW4tZnVsbCBnb3Z1ay0hLXBhZGRpbmctbGVmdC0wXCI+XG4gICAgICA8cD5cbiAgICAgICAgPGEgY2xhc3M9XCJnb3Z1ay1ib2R5XCIgKGNsaWNrKT1cIm9uQ2FuY2VsKCk7ICRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCIgaHJlZj1cIiNcIj5cbiAgICAgICAgICB7eydDYW5jZWwnIHwgcnB4VHJhbnNsYXRlfX1cbiAgICAgICAgPC9hPlxuICAgICAgPC9wPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZm9ybT5cbiJdfQ==
256
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS1yZXZpZXctc3BlY2lmaWMtYWNjZXNzLXJlcXVlc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL2Nhc2Utdmlld2VyL2Nhc2UtcmV2aWV3LXNwZWNpZmljLWFjY2Vzcy1yZXF1ZXN0L2Nhc2UtcmV2aWV3LXNwZWNpZmljLWFjY2Vzcy1yZXF1ZXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9jYXNlLXZpZXdlci9jYXNlLXJldmlldy1zcGVjaWZpYy1hY2Nlc3MtcmVxdWVzdC9jYXNlLXJldmlldy1zcGVjaWZpYy1hY2Nlc3MtcmVxdWVzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBYSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXpELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRTNELE9BQU8sRUFBRSxZQUFZLEVBQUUsaUNBQWlDLEVBQUUsbUNBQW1DLEVBQUUsTUFBTSxVQUFVLENBQUM7Ozs7Ozs7SUNOaEgseUNBR3FCOzs7SUFEbkIsMkNBQXNCOzs7SUEyRFosK0JBRzhEO0lBQzVELFlBQ0Y7O0lBQUEsaUJBQU07OztJQURKLGNBQ0Y7SUFERSxzRkFDRjs7QURyRFosTUFBTSxPQUFPLHdDQUF3QztJQW9CaEM7SUFDQTtJQUNBO0lBQ0E7SUFyQlosTUFBTSxD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a0JBQ29DO1lBQ2hFLGFBQ0Y7O1lBQUEsaUJBQVM7WUFHTCxBQURGLEFBREYsZ0NBQTJELFNBQ3RELGFBQ29FO1lBQS9DLGlIQUFTLGNBQVUsSUFBQztZQUN4QyxhQUNGOztZQUlSLEFBREUsQUFERSxBQURFLEFBREUsaUJBQUksRUFDRixFQUNBLEVBQ0YsRUFDRDs7WUE5SEosNkRBQW9DO1lBSWpDLGNBQXVCO1lBQXZCLHlDQUF1QjtZQU9qQixlQUNGO1lBREUsaUVBQ0Y7WUFRTSxlQUNGO1lBREUsb0VBQ0Y7WUFDOEIsZUFBbUM7WUFBbkMsdURBQW1DO1lBSS9ELGVBQ0Y7WUFERSx5RUFDRjtZQUM4QixlQUF3QztZQUF4Qyw0REFBd0M7WUFJcEUsZUFDRjtZQURFLHlFQUNGO1lBQzhCLGVBQXdDO1lBQXhDLDREQUF3QztZQUlwRSxlQUNGO1lBREUsdUVBQ0Y7WUFDOEIsZUFBc0M7WUFBdEMsMERBQXNDO1lBSWxFLGVBQ0Y7WUFERSxpRkFDRjtZQUM4QixlQUE2RDtZQUE3RCwwRkFBNkQ7WUFPL0YsZUFBa0U7WUFBbEUsNkZBQWtFO1lBSTVELGVBQ0Y7WUFERSxpRUFDRjtZQUtDLGVBQXlEO1lBQXpELGtGQUF5RDtZQVN4RCxlQUFpQztZQUVqQyxBQUZBLG1EQUFpQyx5Q0FFRztZQUdwQyxlQUNGO1lBREUsb0ZBQ0Y7WUFRRSxlQUFpQztZQUVqQyxBQUZBLG1EQUFpQyx5Q0FFRztZQUdwQyxlQUNGO1lBREUsb0ZBQ0Y7WUFRRSxlQUFpQztZQUVqQyxBQUZBLG1EQUFpQyx5Q0FFRztZQUdwQyxlQUNGO1lBREUsb0ZBQ0Y7WUFVUixlQUNGO1lBREUsbUVBQ0Y7WUFJTSxlQUNGO1lBREUsaUVBQ0Y7OztpRkQ5R0ssd0NBQXdDO2NBTHBELFNBQVM7MkJBQ0UseUNBQXlDOztrRkFJeEMsd0NBQXdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQWJzdHJhY3RBcHBDb25maWcgfSBmcm9tICcuLi8uLi8uLi8uLi9hcHAuY29uZmlnJztcbmltcG9ydCB7IENhc2VWaWV3LCBFcnJvck1lc3NhZ2UsIFJldmlld1NwZWNpZmljQWNjZXNzUmVxdWVzdCB9IGZyb20gJy4uLy4uLy4uL2RvbWFpbic7XG5pbXBvcnQgeyBBY2Nlc3NSZWFzb24sIFJldmlld1NwZWNpZmljQWNjZXNzUmVxdWVzdEVycm9ycywgUmV2aWV3U3BlY2lmaWNBY2Nlc3NSZXF1ZXN0UGFnZVRleHQgfSBmcm9tICcuL21vZGVscyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NjZC1jYXNlLXJldmlldy1zcGVjaWZpYy1hY2Nlc3MtcmVxdWVzdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9jYXNlLXJldmlldy1zcGVjaWZpYy1hY2Nlc3MtcmVxdWVzdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Nhc2UtcmV2aWV3LXNwZWNpZmljLWFjY2Vzcy1yZXF1ZXN0LmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgQ2FzZVJldmlld1NwZWNpZmljQWNjZXNzUmVxdWVzdENvbXBvbmVudFxuICBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHVibGljIHN0YXRpYyBDQU5DRUxfTElOS19ERVNUSU5BVElPTiA9ICcvd29yay9teS13b3JrL2xpc3QnO1xuICBwdWJsaWMgY29sbGFwc2VkID0gZmFsc2U7XG4gIHB1YmxpYyB0aXRsZTogc3RyaW5nO1xuICBwdWJsaWMgaGludDogc3RyaW5nO1xuICBwdWJsaWMgY2FzZVJlZkxhYmVsOiBzdHJpbmc7XG4gIHB1YmxpYyBmb3JtR3JvdXA6IEZvcm1Hcm91cDtcbiAgcHVibGljIHN1Ym1pdHRlZCA9IGZhbHNlO1xuICBwdWJsaWMgZXJyb3JNZXNzYWdlOiBFcnJvck1lc3NhZ2U7XG4gIHB1YmxpYyByZWFkb25seSBhY2Nlc3NSZWFzb25zOiBEaXNwbGF5ZWRBY2Nlc3NSZWFzb25bXTtcbiAgcHVibGljIHJlcXVlc3RBY2Nlc3NEZXRhaWxzOiBSZXF1ZXN0QWNjZXNzRGV0YWlscztcbiAgcHVibGljIGNhc2VTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgcHVibGljIHVzZXJBY2Nlc3NUeXBlOiBzdHJpbmc7XG4gIHB1YmxpYyBjYXNlRGV0YWlsczogQ2FzZVZpZXc7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBnZW5lcmljRXJyb3IgPSAnVGhlcmUgaXMgYSBwcm9ibGVtJztcbiAgcHJpdmF0ZSByZWFkb25seSByYWRpb1NlbGVjdGVkQ29udHJvbE5hbWUgPSAncmFkaW9TZWxlY3RlZCc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBmYjogRm9ybUJ1aWxkZXIsXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFwcENvbmZpZzogQWJzdHJhY3RBcHBDb25maWcsXG4gICkge1xuICAgIHRoaXMuYWNjZXNzUmVhc29ucyA9IFtcbiAgICAgIHsgcmVhc29uOiBBY2Nlc3NSZWFzb24uQVBQUk9WRV9SRVFVRVNULCBjaGVja2VkOiBmYWxzZSB9LFxuICAgICAgeyByZWFzb246IEFjY2Vzc1JlYXNvbi5SRUpFQ1RfUkVRVUVTVCwgY2hlY2tlZDogZmFsc2UgfSxcbiAgICAgIHsgcmVhc29uOiBBY2Nlc3NSZWFzb24uUkVRVUVTVF9NT1JFX0lORk9STUFUSU9OLCBjaGVja2VkOiBmYWxzZSB9LFxuICAgIF07XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgLy8gVE9ETzogdGhpcyB0aWNrZXQgaXMgYmxvY2tlZCBzbyBtb2NrZWQgd2l0aCB0aG9zZSBkYXRhIHRvIGdvIHRocm91Z2gsIHRoZXkgd2lsbCBiZSByZW1vdmVkIGFuZCBpbXBsaW1lbnRlZCB3aXRoIGFjdHVhbCBkYXRhXG4gICAgLy8gd2hlbiBkZXBlbmRlbmN5IHJlc29sdmVkXG4gICAgdGhpcy5zZXRNb2NrRGF0YSgpO1xuICAgIHRoaXMudGl0bGUgPSBSZXZpZXdTcGVjaWZpY0FjY2Vzc1JlcXVlc3RQYWdlVGV4dC5USVRMRTtcbiAgICB0aGlzLmhpbnQgPSBSZXZpZXdTcGVjaWZpY0FjY2Vzc1JlcXVlc3RQYWdlVGV4dC5ISU5UO1xuICAgIHRoaXMuY2FzZVJlZkxhYmVsID0gUmV2aWV3U3BlY2lmaWNBY2Nlc3NSZXF1ZXN0UGFnZVRleHQuQ0FTRV9SRUY7XG4gICAgdGhpcy5mb3JtR3JvdXAgPSB0aGlzLmZiLmdyb3VwKHtcbiAgICAgIHJhZGlvU2VsZWN0ZWQ6IG5ldyBGb3JtQ29udHJvbChudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jYXNlU3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLmNhc2VTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25DaGFuZ2UoKTogdm9pZCB7XG4gICAgdGhpcy5zdWJtaXR0ZWQgPSBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBvblN1Ym1pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnN1Ym1pdHRlZCA9IHRydWU7XG5cbiAgICBpZiAodGhpcy5mb3JtR3JvdXAuZ2V0KHRoaXMucmFkaW9TZWxlY3RlZENvbnRyb2xOYW1lKS5pbnZhbGlkKSB7XG4gICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IHtcbiAgICAgICAgdGl0bGU6IHRoaXMuZ2VuZXJpY0Vycm9yLFxuICAgICAgICBkZXNjcmlwdGlvbjogUmV2aWV3U3BlY2lmaWNBY2Nlc3NSZXF1ZXN0RXJyb3JzLk5PX1NFTEVDVElPTixcbiAgICAgIH07XG4gICAgfVxuICAgIC8vIEluaXRpYXRlIFJldmlldyBBY2Nlc3MgUmVxdWVzdFxuICAgIGlmICh0aGlzLmZvcm1Hcm91cC52YWxpZCkge1xuICAgICAgLy8gR2V0IHRoZSBDYXNlIFJlZmVyZW5jZSAoZm9yIHdoaWNoIGFjY2VzcyBpcyBiZWluZyByZXF1ZXN0ZWQpIGZyb20gdGhlIEFjdGl2YXRlZFJvdXRlU25hcHNob3QgZGF0YVxuICAgICAgY29uc3QgY2FzZUlkID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5kYXRhLmNhc2UuY2FzZV9pZDtcbiAgICAgIGNvbnN0IHJhZGlvU2VsZWN0ZWRWYWx1ZSA9IHRoaXMuZm9ybUdyb3VwLmdldChcbiAgICAgICAgdGhpcy5yYWRpb1NlbGVjdGVkQ29udHJvbE5hbWVcbiAgICAgICkudmFsdWU7XG4gICAgICAvLyBHZXQgdGhlIGluZGV4IG9mIHRoZSBzZWxlY3RlZCBBY2Nlc3NSZWFzb24gZW51bSB2YWx1ZS4gQ2FuJ3QgdXNlIE9iamVjdC52YWx1ZXMgYmVjYXVzZSBpdCdzIG5vdCBhdmFpbGFibGUgaW5cbiAgICAgIC8vIDwgRVMyMDE3IVxuICAgICAgY29uc3QgcmVhc29uTnVtYmVyID0gT2JqZWN0LmtleXMoQWNjZXNzUmVhc29uKVxuICAgICAgICAubWFwKChlKSA9PiBBY2Nlc3NSZWFzb25bZV0pXG4gICAgICAgIC5pbmRleE9mKHJhZGlvU2VsZWN0ZWRWYWx1ZSk7XG4gICAgICAvLyByZXF1ZXN0IG1vZGVsIGNyZWF0ZWQgLCBpdCB3aWxsIGJlIHVzZWQgZm9yIHN1Ym1pc3Npb24gcGFydFxuICAgICAgY29uc3QgY2hhbGxlbmdlZEFjY2Vzc1JlcXVlc3QgPSB7XG4gICAgICAgIHJlYXNvbjogcmVhc29uTnVtYmVyLFxuICAgICAgICBjYXNlSWQsXG4gICAgICB9IGFzIFJldmlld1NwZWNpZmljQWNjZXNzUmVxdWVzdDtcbiAgICAgIGlmIChBY2Nlc3NSZWFzb24uUkVKRUNUX1JFUVVFU1QgPT09IHJhZGlvU2VsZWN0ZWRWYWx1ZSkge1xuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJ3JlamVjdGVkJ10sIHsgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25DYW5jZWwoKTogdm9pZCB7XG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybChDYXNlUmV2aWV3U3BlY2lmaWNBY2Nlc3NSZXF1ZXN0Q29tcG9uZW50LkNBTkNFTF9MSU5LX0RFU1RJTkFUSU9OKTtcbiAgfVxuXG4gIC8vIHJlbW92ZSBvbmNlIEFjY2VzcyBtYW5hZ2VtZW50IGdvZXMgbGl2ZVxuICBwdWJsaWMgc2V0TW9ja0RhdGEoKTogdm9pZCB7XG4gICAgY29uc3QgcmVxdWVzdEFjY2Vzc0RldGFpbHNNb2NrID1cbiAgICAgIHRoaXMuYXBwQ29uZmlnLmdldEFjY2Vzc01hbmFnZW1lbnRSZXF1ZXN0UmV2aWV3TW9ja01vZGVsKCk7XG5cbiAgICBpZiAocmVxdWVzdEFjY2Vzc0RldGFpbHNNb2NrLmFjdGl2ZSkge1xuICAgICAgdGhpcy5yZXF1ZXN0QWNjZXNzRGV0YWlscyA9IHJlcXVlc3RBY2Nlc3NEZXRhaWxzTW9jay5kZXRhaWxzO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIERpc3BsYXllZEFjY2Vzc1JlYXNvbiB7XG4gIHJlYXNvbjogQWNjZXNzUmVhc29uO1xuICBjaGVja2VkOiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlcXVlc3RBY2Nlc3NEZXRhaWxzIHtcbiAgY2FzZU5hbWU6IHN0cmluZztcbiAgY2FzZVJlZmVyZW5jZTogc3RyaW5nO1xuICBkYXRlU3VibWl0dGVkOiBzdHJpbmc7XG4gIHJlcXVlc3RGcm9tOiBzdHJpbmc7XG4gIHJlYXNvbkZvckNhc2VBY2Nlc3M6IHN0cmluZztcbn1cbiIsIjxleHVpLWVycm9yLW1lc3NhZ2VcbiAgKm5nSWY9XCJmb3JtR3JvdXAuaW52YWxpZCAmJiBzdWJtaXR0ZWRcIlxuICBbZXJyb3JdPVwiZXJyb3JNZXNzYWdlXCI+XG48L2V4dWktZXJyb3ItbWVzc2FnZT5cblxuPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtR3JvdXBcIiAoc3VibWl0KT1cIm9uU3VibWl0KClcIj5cbiAgPGRpdiBjbGFzcz1cImdvdnVrLWZvcm0tZ3JvdXBcIj5cbiAgICA8ZmllbGRzZXQgY2xhc3M9XCJnb3Z1ay1maWVsZHNldFwiIGFyaWEtZGVzY3JpYmVkYnk9XCJyZWFzb24taGludFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImdvdnVrLWdyaWQtY29sdW1uLXR3by10aGlyZHNcIj5cbiAgICAgICAgPHA+PC9wPlxuICAgICAgICA8bGVnZW5kIGNsYXNzPVwiZ292dWstZmllbGRzZXRfX2xlZ2VuZCBnb3Z1ay1maWVsZHNldF9fbGVnZW5kLS1sXCI+XG4gICAgICAgICAgPGgxIGNsYXNzPVwiZ292dWstZmllbGRzZXRfX2hlYWRpbmdcIj5cbiAgICAgICAgICAgIHt7IHRpdGxlIHwgcnB4VHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9oMT5cbiAgICAgICAgPC9sZWdlbmQ+XG4gICAgICAgIDxwPjwvcD5cbiAgICAgICAgPHRhYmxlIGNsYXNzPVwiZ292dWstdGFibGVcIj5cbiAgICAgICAgICA8Y2FwdGlvbj48L2NhcHRpb24+XG4gICAgICAgICAgPHRib2R5IGNsYXNzPVwiZ292dWstdGFibGVfX2JvZHlcIj5cbiAgICAgICAgICAgIDx0ciBjbGFzcz1cImdvdnVrLXRhYmxlX19yb3dcIj5cbiAgICAgICAgICAgICAgPHRoIHNjb3BlPVwicm93XCIgY2xhc3M9XCJnb3Z1ay10YWJsZV9faGVhZGVyIGxlZnRMYWJlbFwiID5cbiAgICAgICAgICAgICAgICB7eydDYXNlIG5hbWUnIHwgcnB4VHJhbnNsYXRlfX1cbiAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGxcIj57eyByZXF1ZXN0QWNjZXNzRGV0YWlscy5jYXNlTmFtZSB9fTwvdGQ+XG4gICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgPHRyIGNsYXNzPVwiZ292dWstdGFibGVfX3Jvd1wiPlxuICAgICAgICAgICAgICA8dGggc2NvcGU9XCJyb3dcIiBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkZXIgbGVmdExhYmVsXCIgPlxuICAgICAgICAgICAgICAgIHt7J0Nhc2UgcmVmZXJlbmNlJyB8IHJweFRyYW5zbGF0ZX19XG4gICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsXCI+e3sgcmVxdWVzdEFjY2Vzc0RldGFpbHMuY2FzZVJlZmVyZW5jZSB9fTwvdGQ+XG4gICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgPHRyIGNsYXNzPVwiZ292dWstdGFibGVfX3Jvd1wiPlxuICAgICAgICAgICAgICA8dGggc2NvcGU9XCJyb3dcIiBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkZXIgbGVmdExhYmVsXCIgPlxuICAgICAgICAgICAgICAgIHt7J0RhdGUgc3VibWl0dGVkJyB8IHJweFRyYW5zbGF0ZX19XG4gICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsXCI+e3sgcmVxdWVzdEFjY2Vzc0RldGFpbHMuZGF0ZVN1Ym1pdHRlZCB9fTwvdGQ+XG4gICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgPHRyIGNsYXNzPVwiZ292dWstdGFibGVfX3Jvd1wiPlxuICAgICAgICAgICAgICA8dGggc2NvcGU9XCJyb3dcIiBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkZXIgbGVmdExhYmVsXCIgPlxuICAgICAgICAgICAgICAgIHt7J1JlcXVlc3QgZnJvbScgfCBycHhUcmFuc2xhdGV9fVxuICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbFwiPnt7IHJlcXVlc3RBY2Nlc3NEZXRhaWxzLnJlcXVlc3RGcm9tIH19PGJyIC8+PC90ZD5cbiAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICA8dHIgY2xhc3M9XCJnb3Z1ay10YWJsZV9fcm93XCI+XG4gICAgICAgICAgICAgIDx0aCBzY29wZT1cInJvd1wiIGNsYXNzPVwiZ292dWstdGFibGVfX2hlYWRlciBsZWZ0TGFiZWxcIiA+XG4gICAgICAgICAgICAgICAge3snUmVhc29uIGZvciBjYXNlIGFjY2VzcycgfCBycHhUcmFuc2xhdGV9fVxuICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbFwiPnt7IHJlcXVlc3RBY2Nlc3NEZXRhaWxzLnJlYXNvbkZvckNhc2VBY2Nlc3MgfCBycHhUcmFuc2xhdGUgfX08L3RkPlxuICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICA8L3Rib2R5PlxuICAgICAgICA8L3RhYmxlPlxuXG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImdvdnVrLWZvcm0tZ3JvdXBcIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2Zvcm0tZ3JvdXAtZXJyb3InOiBmb3JtR3JvdXAuaW52YWxpZCAmJiBzdWJtaXR0ZWQgfVwiPlxuICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz1cImdvdnVrLWZpZWxkc2V0XCI+XG4gICAgICAgICAgICA8bGVnZW5kIGNsYXNzPVwiZ292dWstZmllbGRzZXRfX2xlZ2VuZCBnb3Z1ay1maWVsZHNldF9fbGVnZW5kLS1tXCI+XG4gICAgICAgICAgICAgIDxoMSBjbGFzcz1cImdvdnVrLWZpZWxkc2V0X19oZWFkaW5nXCI+XG4gICAgICAgICAgICAgICAge3sgaGludCB8IHJweFRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICA8L2gxPlxuICAgICAgICAgICAgPC9sZWdlbmQ+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGlkPVwiZXJyb3ItbWVzc2FnZVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiZ292dWstZXJyb3ItbWVzc2FnZVwiXG4gICAgICAgICAgICAgICpuZ0lmPVwiZm9ybUdyb3VwLmdldCgncmFkaW9TZWxlY3RlZCcpLmludmFsaWQgJiYgc3VibWl0dGVkXCI+XG4gICAgICAgICAgICAgIHt7IGVycm9yTWVzc2FnZS5kZXNjcmlwdGlvbiB8IHJweFRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ292dWstcmFkaW9zX19pdGVtXCI+XG4gICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZ292dWstcmFkaW9zX19pbnB1dFwiXG4gICAgICAgICAgICAgICAgaWQ9XCJyZWFzb24tMFwiXG4gICAgICAgICAgICAgICAgbmFtZT1cInJhZGlvU2VsZWN0ZWRcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJyYWRpb1wiXG4gICAgICAgICAgICAgICAgW3ZhbHVlXT1cImFjY2Vzc1JlYXNvbnNbMF0ucmVhc29uXCJcbiAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJyYWRpb1NlbGVjdGVkXCJcbiAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJhY2Nlc3NSZWFzb25zWzBdLmNoZWNrZWRcIlxuICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwib25DaGFuZ2UoKVwiLz5cbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZ292dWstbGFiZWwgZ292dWstcmFkaW9zX19sYWJlbFwiIGZvcj1cInJlYXNvbi0wXCI+XG4gICAgICAgICAgICAgICAge3sgYWNjZXNzUmVhc29uc1swXS5yZWFzb24gfCBycHhUcmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdvdnVrLXJhZGlvc19faXRlbVwiPlxuICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICBjbGFzcz1cImdvdnVrLXJhZGlvc19faW5wdXRcIlxuICAgICAgICAgICAgICAgIGlkPVwicmVhc29uLTFcIlxuICAgICAgICAgICAgICAgIG5hbWU9XCJyYWRpb1NlbGVjdGVkXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwicmFkaW9cIlxuICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJhY2Nlc3NSZWFzb25zWzFdLnJlYXNvblwiXG4gICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicmFkaW9TZWxlY3RlZFwiXG4gICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiYWNjZXNzUmVhc29uc1sxXS5jaGVja2VkXCJcbiAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uQ2hhbmdlKClcIi8+XG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImdvdnVrLWxhYmVsIGdvdnVrLXJhZGlvc19fbGFiZWxcIiBmb3I9XCJyZWFzb24tMVwiPlxuICAgICAgICAgICAgICAgIHt7IGFjY2Vzc1JlYXNvbnNbMV0ucmVhc29uIHwgcnB4VHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1yYWRpb3NfX2l0ZW1cIj5cbiAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJnb3Z1ay1yYWRpb3NfX2lucHV0XCJcbiAgICAgICAgICAgICAgICBpZD1cInJlYXNvbi0yXCJcbiAgICAgICAgICAgICAgICBuYW1lPVwicmFkaW9TZWxlY3RlZFwiXG4gICAgICAgICAgICAgICAgdHlwZT1cInJhZGlvXCJcbiAgICAgICAgICAgICAgICBbdmFsdWVdPVwiYWNjZXNzUmVhc29uc1syXS5yZWFzb25cIlxuICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInJhZGlvU2VsZWN0ZWRcIlxuICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImFjY2Vzc1JlYXNvbnNbMl0uY2hlY2tlZFwiXG4gICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvbkNoYW5nZSgpXCIvPlxuICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJnb3Z1ay1sYWJlbCBnb3Z1ay1yYWRpb3NfX2xhYmVsXCIgZm9yPVwicmVhc29uLTJcIj5cbiAgICAgICAgICAgICAgICB7eyBhY2Nlc3NSZWFzb25zWzJdLnJlYXNvbiB8IHJweFRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9maWVsZHNldD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2ZpZWxkc2V0PlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwiZ292dWstYnV0dG9uLWdyb3VwXCI+XG4gICAgPGJ1dHRvbiBjbGFzcz1cImdvdnVrLWJ1dHRvbiBnb3Z1ay0hLW1hcmdpbi1yaWdodC0zXCIgdHlwZT1cInN1Ym1pdFwiPlxuICAgICAge3snQ29udGludWUnIHwgcnB4VHJhbnNsYXRlfX1cbiAgICA8L2J1dHRvbj5cbiAgICA8ZGl2IGNsYXNzPVwiZ292dWstZ3JpZC1jb2x1bW4tZnVsbCBnb3Z1ay0hLXBhZGRpbmctbGVmdC0wXCI+XG4gICAgICA8cD5cbiAgICAgICAgPGEgY2xhc3M9XCJnb3Z1ay1ib2R5XCIgKGNsaWNrKT1cIm9uQ2FuY2VsKClcIiBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCI+XG4gICAgICAgICAge3snQ2FuY2VsJyB8IHJweFRyYW5zbGF0ZX19XG4gICAgICAgIDwvYT5cbiAgICAgIDwvcD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Zvcm0+XG4iXX0=