vcomply-workflow-engine 3.4.23 → 3.4.25

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 (101) hide show
  1. package/esm2020/lib/add-multiple-responsibility/add-multiple-responsibility.component.mjs +2 -4
  2. package/esm2020/lib/add-multiple-risk/add-multiple-risk.component.mjs +2 -3
  3. package/esm2020/lib/formgroup/cs-select/cs-select.component.mjs +5 -5
  4. package/esm2020/lib/formgroup/cs-switch/cs-switch.component.mjs +1 -4
  5. package/esm2020/lib/log-an-issue/log-an-issue.component.mjs +1 -11
  6. package/esm2020/lib/more-option/more-option.component.mjs +5 -6
  7. package/esm2020/lib/pipes/filter.pipe.mjs +1 -2
  8. package/esm2020/lib/pipes/search.pipe.mjs +3 -5
  9. package/esm2020/lib/sharedComponents/approval-workflow/approval-create-form/approval-create-form.component.mjs +3 -7
  10. package/esm2020/lib/sharedComponents/approval-workflow/approval-workflow-list/approval-workflow-list.component.mjs +1 -5
  11. package/esm2020/lib/sharedComponents/approval-workflow/approval-workflow.component.mjs +1 -7
  12. package/esm2020/lib/sharedComponents/assessment-editor/create-assessment-container/create-assessment-container.component.mjs +80 -36
  13. package/esm2020/lib/sharedComponents/assessment-list/assessment-list.component.mjs +27 -21
  14. package/esm2020/lib/sharedComponents/assessment-preview/preview/preview.component.mjs +7 -4
  15. package/esm2020/lib/sharedComponents/audit-category-list/audit-category-list.component.mjs +3 -4
  16. package/esm2020/lib/sharedComponents/bulk-responsibility-view/bulk-responsibility-view.component.mjs +3 -9
  17. package/esm2020/lib/sharedComponents/bulk-view/bulk-view.component.mjs +9 -7
  18. package/esm2020/lib/sharedComponents/category-multiselect/category-multi-select.component.mjs +7 -9
  19. package/esm2020/lib/sharedComponents/checkpoint/checkpoints/checkpoints.component.mjs +93 -27
  20. package/esm2020/lib/sharedComponents/checkpoint/checkpoints-questions/checkpoints-questions.component.mjs +11 -9
  21. package/esm2020/lib/sharedComponents/checkpoint-policy/checkpoints-policy-container/checkpoints-policy-container.component.mjs +13 -12
  22. package/esm2020/lib/sharedComponents/checkpoint-policy/checkpoints-policy-questions/checkpoints-policy-questions.component.mjs +28 -19
  23. package/esm2020/lib/sharedComponents/floating-bar/floating-bar.component.mjs +8 -8
  24. package/esm2020/lib/sharedComponents/format-and-evidence/format-and-evidence.component.mjs +35 -37
  25. package/esm2020/lib/sharedComponents/framework-list/parent-table/parent-table.component.mjs +7 -7
  26. package/esm2020/lib/sharedComponents/frequency/frequency-biannual/frequency-biannual.component.mjs +1 -12
  27. package/esm2020/lib/sharedComponents/frequency/frequency-container/frequency-container.component.mjs +1 -3
  28. package/esm2020/lib/sharedComponents/frequency/frequency-daily/frequency-daily.component.mjs +1 -13
  29. package/esm2020/lib/sharedComponents/frequency/frequency-due-date/frequency-due-date.component.mjs +1 -7
  30. package/esm2020/lib/sharedComponents/frequency/frequency-lifecycle/frequency-lifecycle.component.mjs +1 -26
  31. package/esm2020/lib/sharedComponents/frequency/frequency-monthly/frequency-monthly.component.mjs +1 -15
  32. package/esm2020/lib/sharedComponents/frequency/frequency-one-time/frequency-one-time.component.mjs +1 -14
  33. package/esm2020/lib/sharedComponents/frequency/frequency-ongoing/frequency-ongoing.component.mjs +14 -8
  34. package/esm2020/lib/sharedComponents/frequency/frequency-quarterly/frequency-quarterly.component.mjs +1 -13
  35. package/esm2020/lib/sharedComponents/frequency/frequency-radio-list/frequency-radio-list.component.mjs +1 -2
  36. package/esm2020/lib/sharedComponents/frequency/frequency-random/frequency-random.component.mjs +1 -18
  37. package/esm2020/lib/sharedComponents/frequency/frequency-top/frequency-top.component.mjs +2 -2
  38. package/esm2020/lib/sharedComponents/frequency/frequency-weekly/frequency-weekly.component.mjs +1 -12
  39. package/esm2020/lib/sharedComponents/frequency/frequency.service.mjs +2 -11
  40. package/esm2020/lib/sharedComponents/frequency-dialog/frequency-dialog-annual/frequency-dialog-annual.component.mjs +1 -2
  41. package/esm2020/lib/sharedComponents/frequency-dialog/frequency-dialog-biannual/frequency-dialog-biannual.component.mjs +1 -2
  42. package/esm2020/lib/sharedComponents/frequency-dialog/frequency-dialog-monthly/frequency-dialog-monthly.component.mjs +1 -2
  43. package/esm2020/lib/sharedComponents/frequency-dialog/frequency-dialog-one-time/frequency-dialog-one-time.component.mjs +1 -2
  44. package/esm2020/lib/sharedComponents/frequency-dialog/frequency-dialog-quarterly/frequency-dialog-quarterly.component.mjs +1 -2
  45. package/esm2020/lib/sharedComponents/frequency-dialog/frequency-dialog-radio-list/frequency-dialog-radio-list.component.mjs +1 -2
  46. package/esm2020/lib/sharedComponents/frequency-dialog/frequency-dialog-top/frequency-dialog-top.component.mjs +2 -2
  47. package/esm2020/lib/sharedComponents/group-users-list/group-users-list.component.mjs +1 -3
  48. package/esm2020/lib/sharedComponents/link-program/link-program/link-program.component.mjs +48 -38
  49. package/esm2020/lib/sharedComponents/link-program/restapi.service.mjs +31 -16
  50. package/esm2020/lib/sharedComponents/no-data/no-data.component.mjs +2 -4
  51. package/esm2020/lib/sharedComponents/owner-list/owner-list.component.mjs +12 -10
  52. package/esm2020/lib/sharedComponents/program-listing/program-listing.component.mjs +127 -58
  53. package/esm2020/lib/sharedComponents/radio-list-with-pagination/radio-list.component.mjs +4 -7
  54. package/esm2020/lib/sharedComponents/responsibility-centers-list/responsibility-centers-list.component.mjs +9 -7
  55. package/esm2020/lib/sharedComponents/risk-classification/risk-classification.component.mjs +11 -6
  56. package/esm2020/lib/sharedComponents/select-approvers/select-approvers.component.mjs +1 -2
  57. package/esm2020/lib/sharedComponents/users-radio-list/users-radio-list.component.mjs +2 -3
  58. package/esm2020/lib/ui-kit/formgroup/cs-switch/cs-switch.component.mjs +1 -4
  59. package/esm2020/lib/ui-kit/popover/popover-longpress.directive.mjs +1 -3
  60. package/esm2020/lib/ui-kit/popover/popover.component.mjs +26 -12
  61. package/esm2020/lib/ui-kit/tooltip/tooltip.directive.mjs +8 -5
  62. package/esm2020/lib/workflow/shared/components/attributes/attributes.component.mjs +1 -2
  63. package/esm2020/lib/workflow/shared/components/edit-mode/edit-mode.component.mjs +1 -4
  64. package/esm2020/lib/workflow/shared/components/grc-object-list/grc-object-list.component.mjs +1 -2
  65. package/esm2020/lib/workflow/shared/components/list-popup/list-popup.component.mjs +1 -4
  66. package/esm2020/lib/workflow/shared/components/table-card/table-card.component.mjs +4 -8
  67. package/esm2020/lib/workflow-assessment/import-an-assessment/import-an-assessment.component.mjs +245 -108
  68. package/esm2020/lib/workflow-assessment/workflow-assessment.component.mjs +2 -4
  69. package/esm2020/lib/workflow-compliance/workflow-compliance.component.mjs +10 -8
  70. package/esm2020/lib/workflow-engine-container/workflow-engine-container.component.mjs +1 -5
  71. package/esm2020/lib/workflow-program/create-program-ui/assessment-picker/assessment-picker.component.mjs +45 -45
  72. package/esm2020/lib/workflow-program/create-program-ui/define-framework-listing/define-framework-listing.component.mjs +43 -25
  73. package/esm2020/lib/workflow-program/create-program-ui/define-framework-listing/pipes/sub-cat-indeter.pipe.mjs +4 -4
  74. package/esm2020/lib/workflow-program/create-program-ui/floating-bar/floating-bar.component.mjs +1 -2
  75. package/esm2020/lib/workflow-program/create-program-ui/pagination/pagination/pagination.component.mjs +25 -14
  76. package/esm2020/lib/workflow-program/create-program-ui/pipes/assessment-resolver.pipe.mjs +6 -3
  77. package/esm2020/lib/workflow-program/create-program-ui/role-list/role-list.component.mjs +25 -19
  78. package/esm2020/lib/workflow-program/create-program-ui/user-group-list/user-group-list.component.mjs +1 -4
  79. package/esm2020/lib/workflow-program/workflow-program.component.mjs +232 -110
  80. package/esm2020/lib/workflow-services/add-risk.service.mjs +1 -2
  81. package/esm2020/lib/workflow-services/assessment.service.mjs +1 -5
  82. package/esm2020/lib/workflow-services/programs.service.mjs +173 -57
  83. package/fesm2015/vcomply-workflow-engine.mjs +1381 -937
  84. package/fesm2015/vcomply-workflow-engine.mjs.map +1 -1
  85. package/fesm2020/vcomply-workflow-engine.mjs +1394 -945
  86. package/fesm2020/vcomply-workflow-engine.mjs.map +1 -1
  87. package/lib/formgroup/cs-switch/cs-switch.component.d.ts +2 -3
  88. package/lib/sharedComponents/assessment-list/assessment-list.component.d.ts +4 -5
  89. package/lib/sharedComponents/bulk-responsibility-view/bulk-responsibility-view.component.d.ts +2 -3
  90. package/lib/sharedComponents/bulk-view/bulk-view.component.d.ts +2 -3
  91. package/lib/sharedComponents/frequency/frequency-lifecycle/frequency-lifecycle.component.d.ts +2 -4
  92. package/lib/sharedComponents/frequency/frequency-ongoing/frequency-ongoing.component.d.ts +1 -1
  93. package/lib/sharedComponents/link-program/restapi.service.d.ts +3 -3
  94. package/lib/sharedComponents/no-data/no-data.component.d.ts +2 -4
  95. package/lib/ui-kit/formgroup/cs-switch/cs-switch.component.d.ts +2 -3
  96. package/lib/workflow/shared/components/edit-mode/edit-mode.component.d.ts +2 -3
  97. package/lib/workflow/shared/components/list-popup/list-popup.component.d.ts +2 -3
  98. package/lib/workflow/shared/components/table-card/table-card.component.d.ts +2 -5
  99. package/lib/workflow-program/create-program-ui/assessment-picker/assessment-picker.component.d.ts +8 -9
  100. package/lib/workflow-program/create-program-ui/pagination/pagination/pagination.component.d.ts +2 -4
  101. package/package.json +1 -1
@@ -1,4 +1,4 @@
1
- import { Component, Input, Output, EventEmitter, ViewChild } from '@angular/core';
1
+ import { Component, Input, Output, EventEmitter, ViewChild, } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  import * as i1 from "../../../ui-kit/snack-bar/snack-bar.service";
4
4
  import * as i2 from "@angular/forms";
@@ -32,12 +32,11 @@ export class CheckpointsQuestionsComponent {
32
32
  radio: 'Type your question here [Radio]',
33
33
  checkbox: 'Type your question here [CheckBox]',
34
34
  date: 'Type your question here [Date]',
35
- upload: 'Type your question here [Upload]'
35
+ upload: 'Type your question here [Upload]',
36
36
  };
37
37
  this.description = '';
38
38
  }
39
- ngOnInit() {
40
- }
39
+ ngOnInit() { }
41
40
  saveDescription() {
42
41
  this.addInstruction = false;
43
42
  if (this.extractContent(this.checkpointInstruction) === '') {
@@ -48,11 +47,12 @@ export class CheckpointsQuestionsComponent {
48
47
  extractContent(s) {
49
48
  var span = document.createElement('span');
50
49
  span.innerHTML = s;
51
- return (span.textContent || span.innerText).replace(/&nbsp;/g, '').replace(/\<br\s*[\/]?>/gi, '').trim();
50
+ return (span.textContent || span.innerText)
51
+ .replace(/&nbsp;/g, '')
52
+ .replace(/\<br\s*[\/]?>/gi, '')
53
+ .trim();
52
54
  }
53
- ;
54
55
  ngOnChanges(changes) {
55
- console.log(changes, this.errorIndex);
56
56
  if (changes.errorIndex) {
57
57
  if (this.errorIndex >= 0) {
58
58
  this.activeQuestionIndex = this.errorIndex;
@@ -90,7 +90,9 @@ export class CheckpointsQuestionsComponent {
90
90
  this.removeOption.emit({ questionIndex, optionIndex, type });
91
91
  }
92
92
  deleteOnBackspace(questionIndex, optionIndex, type) {
93
- if (this.checkpointData[questionIndex].options[optionIndex].label.length < 1 && this.checkpointData[questionIndex].options.length > 1) {
93
+ if (this.checkpointData[questionIndex].options[optionIndex].label.length <
94
+ 1 &&
95
+ this.checkpointData[questionIndex].options.length > 1) {
94
96
  this.removeOption.emit({ questionIndex, optionIndex, type });
95
97
  }
96
98
  }
@@ -126,4 +128,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
126
128
  type: ViewChild,
127
129
  args: ['datePicker']
128
130
  }] } });
129
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2twb2ludHMtcXVlc3Rpb25zLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Z4LXdvcmtmbG93LWVuZ2luZS9zcmMvbGliL3NoYXJlZENvbXBvbmVudHMvY2hlY2twb2ludC9jaGVja3BvaW50cy1xdWVzdGlvbnMvY2hlY2twb2ludHMtcXVlc3Rpb25zLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Z4LXdvcmtmbG93LWVuZ2luZS9zcmMvbGliL3NoYXJlZENvbXBvbmVudHMvY2hlY2twb2ludC9jaGVja3BvaW50cy1xdWVzdGlvbnMvY2hlY2twb2ludHMtcXVlc3Rpb25zLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUF3QyxNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7Ozs7QUFTaEksTUFBTSxPQUFPLDZCQUE2QjtJQUV4QyxZQUFvQixVQUFxQixFQUFVLFFBQXlCO1FBQXhELGVBQVUsR0FBVixVQUFVLENBQVc7UUFBVSxhQUFRLEdBQVIsUUFBUSxDQUFpQjtRQUNuRSxtQkFBYyxHQUFRLEVBQUUsQ0FBQztRQUN6QixxQkFBZ0IsR0FBRyxFQUFFLENBQUM7UUFDdEIsZUFBVSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ2hCLDBCQUFxQixHQUFXLEVBQUUsQ0FBQztRQUNsQyxtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDcEMsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3BDLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNsQyxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDbkMsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ2xDLGlC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QUFDO0lBQzdELENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxhQUFxQixFQUFFLFdBQW1CLEVBQUUsSUFBWTtRQUN4RSxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBSSxDQUFDLEVBQUU7WUFDdEksSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFBQyxhQUFhLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBQyxDQUFDLENBQUM7U0FDNUQ7SUFDSCxDQUFDOzswSEExRlUsNkJBQTZCOzhHQUE3Qiw2QkFBNkIsaWxCQ1QxQyxtOGxCQTZUQTsyRkRwVGEsNkJBQTZCO2tCQUx6QyxTQUFTOytCQUNFLDJCQUEyQjsrSEFPNUIsY0FBYztzQkFBdEIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBQ0ksY0FBYztzQkFBdkIsTUFBTTtnQkFDRyxjQUFjO3NCQUF2QixNQUFNO2dCQUNHLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csaUJBQWlCO3NCQUExQixNQUFNO2dCQUNrQixVQUFVO3NCQUFsQyxTQUFTO3VCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBWaWV3Q2hpbGQsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcywgRWxlbWVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBEYXRlUGlja2VyQ29tcG9uZW50IH0gZnJvbSAnbmcyLWRhdGUtcGlja2VyJztcclxuaW1wb3J0IHsgU25hY2tCYXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vdWkta2l0L3NuYWNrLWJhci9zbmFjay1iYXIuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1jaGVja3BvaW50cy1xdWVzdGlvbnMnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jaGVja3BvaW50cy1xdWVzdGlvbnMuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2NoZWNrcG9pbnRzLXF1ZXN0aW9ucy5jb21wb25lbnQubGVzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDaGVja3BvaW50c1F1ZXN0aW9uc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlbGVtZW50UmVmOkVsZW1lbnRSZWYsIHByaXZhdGUgc25hY2tiYXI6IFNuYWNrQmFyU2VydmljZSkgeyB9XHJcbiAgQElucHV0KCkgY2hlY2twb2ludERhdGE6IGFueSA9IFtdO1xyXG4gIEBJbnB1dCgpIHF1ZXN0aW9uVHlwZUxpc3QgPSBbXTtcclxuICBASW5wdXQoKSBlcnJvckluZGV4ID0gLTE7XHJcbiAgQElucHV0KCkgY2hlY2twb2ludEluc3RydWN0aW9uIDpzdHJpbmcgPSAnJztcclxuICBAT3V0cHV0KCkgY3JlYXRlUXVlc3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGRlbGV0ZVF1ZXN0aW9uID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBjb3B5UXVlc3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGJsYW5rUXVlc3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGNyZWF0ZU9wdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgcmVtb3ZlT3B0aW9uID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSB1cGRhdGVEZXNjcmlwdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAVmlld0NoaWxkKCdkYXRlUGlja2VyJykgZGF0ZVBpY2tlciE6IERhdGVQaWNrZXJDb21wb25lbnQ7XHJcbiAgZGF0ZVBpY2tlck92ZXJsYXkgPSBmYWxzZTtcclxuICBhY3RpdmVRdWVzdGlvbkluZGV4ID0gMDtcclxuICBhZGRJbnN0cnVjdGlvbiE6IGJvb2xlYW4gO1xyXG5cclxuICBwbGFjZWhvbGRlcjogYW55ID0ge1xyXG4gICAgdGV4dGJveDogJ1R5cGUgeW91ciBxdWVzdGlvbiBoZXJlIFtUZXh0IEJveF0nLFxyXG4gICAgc2VsZWN0OiAnVHlwZSB5b3VyIHF1ZXN0aW9uIGhlcmUgW1NlbGVjdF0nLFxyXG4gICAgcmFkaW86ICdUeXBlIHlvdXIgcXVlc3Rpb24gaGVyZSBbUmFkaW9dJyxcclxuICAgIGNoZWNrYm94OiAnVHlwZSB5b3VyIHF1ZXN0aW9uIGhlcmUgW0NoZWNrQm94XScsXHJcbiAgICBkYXRlOiAnVHlwZSB5b3VyIHF1ZXN0aW9uIGhlcmUgW0RhdGVdJyxcclxuICAgIHVwbG9hZDogJ1R5cGUgeW91ciBxdWVzdGlvbiBoZXJlIFtVcGxvYWRdJ1xyXG4gIH07XHJcbiAgZGVzY3JpcHRpb246IGFueSA9ICcnO1xyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG5cclxuICB9XHJcblxyXG4gIHNhdmVEZXNjcmlwdGlvbigpe1xyXG4gICAgdGhpcy5hZGRJbnN0cnVjdGlvbiA9IGZhbHNlO1xyXG4gICAgaWYodGhpcy5leHRyYWN0Q29udGVudCh0aGlzLmNoZWNrcG9pbnRJbnN0cnVjdGlvbikgPT09ICcnKXtcclxuICAgICAgdGhpcy5jaGVja3BvaW50SW5zdHJ1Y3Rpb24gPSAnJztcclxuICAgIH1cclxuICAgIHRoaXMudXBkYXRlRGVzY3JpcHRpb24uZW1pdCh0aGlzLmNoZWNrcG9pbnRJbnN0cnVjdGlvbilcclxuICB9XHJcbiAgZXh0cmFjdENvbnRlbnQoczpzdHJpbmcpIHtcclxuICAgIHZhciBzcGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xyXG4gICAgc3Bhbi5pbm5lckhUTUwgPSBzO1xyXG4gICAgcmV0dXJuIChzcGFuLnRleHRDb250ZW50IHx8IHNwYW4uaW5uZXJUZXh0KS5yZXBsYWNlKC8mbmJzcDsvZywgJycpLnJlcGxhY2UoL1xcPGJyXFxzKltcXC9dPz4vZ2ksICcnKS50cmltKCk7XHJcbiAgfTtcclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKXtcclxuICAgIGNvbnNvbGUubG9nKGNoYW5nZXMsIHRoaXMuZXJyb3JJbmRleCk7XHJcbiAgICBpZiAoY2hhbmdlcy5lcnJvckluZGV4KXtcclxuICAgICAgaWYgKHRoaXMuZXJyb3JJbmRleCA+PSAwICl7XHJcbiAgICAgICAgdGhpcy5hY3RpdmVRdWVzdGlvbkluZGV4ID0gdGhpcy5lcnJvckluZGV4O1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIG9wZW5EYXRlUGlja2VyKCkge1xyXG4gICAgdGhpcy5kYXRlUGlja2VyLmFwaS5vcGVuKCk7XHJcbiAgICB0aGlzLmRhdGVQaWNrZXJPdmVybGF5ID0gdHJ1ZTtcclxuICB9XHJcbiAgY2xvc2VEYXRlcGlja2VyKCkge1xyXG4gICAgdGhpcy5kYXRlUGlja2VyLmFwaS5jbG9zZSgpO1xyXG4gICAgdGhpcy5kYXRlUGlja2VyT3ZlcmxheSA9IGZhbHNlO1xyXG4gIH1cclxuICBhZGRRdWVzdGlvbih0eXBlOiBhbnkpe1xyXG4gIC8vICB0aGlzLmNyZWF0ZVF1ZXN0aW9uLmVtaXQodHlwZS50eXBlKTtcclxuICAgLy8gdGhpcy5hY3RpdmVRdWVzdGlvbkluZGV4ID0gdGhpcy5jaGVja3BvaW50RGF0YS5sZW5ndGggLSAxO1xyXG4gIH1cclxuICByZW1vdmVRdWVzdGlvbihpbmRleDogbnVtYmVyKXtcclxuICAgIHRoaXMuZGVsZXRlUXVlc3Rpb24uZW1pdChpbmRleCk7XHJcbiAgICB0aGlzLmFjdGl2ZVF1ZXN0aW9uSW5kZXggPSBpbmRleCAtIDE7XHJcbiAgfVxyXG4gIGNsb25lUXVlc3Rpb24oaW5kZXg6IG51bWJlcil7XHJcbiAgICAvLyB0aGlzLmFjdGl2ZVF1ZXN0aW9uSW5kZXggPSBpbmRleCArIDE7XHJcbiAgICAvLyB0aGlzLmNvcHlRdWVzdGlvbi5lbWl0KGluZGV4KTtcclxuXHJcbiAgfVxyXG4gIGJsYW5rQ2xvbmUodHlwZTogc3RyaW5nLCBpbmRleDogbnVtYmVyKXtcclxuICAgIC8vIHRoaXMuYmxhbmtRdWVzdGlvbi5lbWl0KHt0eXBlLCBpbmRleH0pO1xyXG4gICAgLy8gdGhpcy5hY3RpdmVRdWVzdGlvbkluZGV4ID0gaW5kZXggKyAxO1xyXG4gIH1cclxuXHJcbiAgYWRkT3B0aW9uKHF1ZXN0aW9uSW5kZXg6IG51bWJlciwgb3B0aW9uSW5kZXg6IG51bWJlciwgdHlwZTogc3RyaW5nKXtcclxuICAgIC8vIHRoaXMuY3JlYXRlT3B0aW9uLmVtaXQoe3F1ZXN0aW9uSW5kZXgsIG9wdGlvbkluZGV4LCB0eXBlfSk7XHJcbiAgfVxyXG5cclxuICBkZWxldGVPcHRpb24ocXVlc3Rpb25JbmRleDogbnVtYmVyLCBvcHRpb25JbmRleDogbnVtYmVyLCB0eXBlOiBzdHJpbmcpe1xyXG4gICAgdGhpcy5yZW1vdmVPcHRpb24uZW1pdCh7cXVlc3Rpb25JbmRleCwgb3B0aW9uSW5kZXgsIHR5cGV9KTtcclxuICB9XHJcblxyXG4gIGRlbGV0ZU9uQmFja3NwYWNlKHF1ZXN0aW9uSW5kZXg6IG51bWJlciwgb3B0aW9uSW5kZXg6IG51bWJlciwgdHlwZTogc3RyaW5nKXtcclxuICAgIGlmICh0aGlzLmNoZWNrcG9pbnREYXRhW3F1ZXN0aW9uSW5kZXhdLm9wdGlvbnNbb3B0aW9uSW5kZXhdLmxhYmVsLmxlbmd0aCA8IDEgJiYgdGhpcy5jaGVja3BvaW50RGF0YVtxdWVzdGlvbkluZGV4XS5vcHRpb25zLmxlbmd0aCAgPiAxKSB7XHJcbiAgICAgIHRoaXMucmVtb3ZlT3B0aW9uLmVtaXQoe3F1ZXN0aW9uSW5kZXgsIG9wdGlvbkluZGV4LCB0eXBlfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbn1cclxuIiwiPCEtLSA8cD5jaGVja3BvaW50cy1xdWVzdGlvbnMgd29ya3MhPC9wPiAtLT5cclxuPGRpdiBjbGFzcz1cImNoZWNrcG9pbnRzLXF1ZXN0aW9uc1wiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNoZWNrcG9pbnRzLXF1ZXN0aW9ucy1ibG9ja3MgaW5zdHJ1Y3Rpb25cIlxyXG4gICAgICAgIFtjbGFzcy5maWxsZWRdPVwiY2hlY2twb2ludEluc3RydWN0aW9uLmxlbmd0aD4wICYmICFhZGRJbnN0cnVjdGlvblwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXJcIj5cclxuICAgICAgICAgICAgPGgzIGNsYXNzPVwicXVlc3Rpb25cIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY291bnRlclwiICpuZ0lmPVwiIWFkZEluc3RydWN0aW9uXCI+PGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5MzI7PC9pPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dFwiICpuZ0lmPVwiIWFkZEluc3RydWN0aW9uXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJjaGVja3BvaW50SW5zdHJ1Y3Rpb24ubGVuZ3RoPjAgPyAoY2hlY2twb2ludEluc3RydWN0aW9uIHwgZm9ybWF0SHRtbCkgOidBZGQgaW5zdHJ1Y3Rpb24nXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0XCIgKm5nSWY9XCJhZGRJbnN0cnVjdGlvbiAmJiBmYWxzZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx2Y29tcGx5LWVkaXRvciBbKG5nTW9kZWwpXT1cImNoZWNrcG9pbnRJbnN0cnVjdGlvblwiIFtlZGl0b3JDb25maWddPVwie21vZGU6ICdwcmltZScsXHJcbiAgICAgICAgICAgICAgICAgICAgY29sb3JQYWxldHRlOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgIGxpbms6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6ICdBZGQgaW5zdHJ1Y3Rpb24nLFxyXG4gICAgICAgICAgICAgICAgICAgIGJ1dHRvbk5hbWU6J1NBVkUnLCBpZDonY2hlY2twb2ludC1pbnN0cnVjdGlvbnMnfVwiIChjb21tZW50KT1cInNhdmVEZXNjcmlwdGlvbigpXCI+PC92Y29tcGx5LWVkaXRvcj5cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPC9oMz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHF1ZXN0aW9uIG9mIGNoZWNrcG9pbnREYXRhOyBsZXQgcXVlc3Rpb25JbmRleCA9IGluZGV4XCI+XHJcbiAgICAgICAgPGRpdiAgY2xhc3M9XCJjaGVja3BvaW50cy1xdWVzdGlvbnMtYmxvY2tzXCJcclxuICAgICAgICAgICAgKm5nSWY9XCJbJ3RleHRib3gnLCdkYXRlJywndXBsb2FkJ10uaW5jbHVkZXMocXVlc3Rpb24/LnR5cGUpXCJcclxuICAgICAgICAgICAgW2NsYXNzLmVycm9yXT1cImVycm9ySW5kZXggPT09IHF1ZXN0aW9uSW5kZXhcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgPGgzIGNsYXNzPVwicXVlc3Rpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNvdW50ZXJcIj57e3F1ZXN0aW9uSW5kZXgrMX19LiA8c3BhbiBjbGFzcz1cInJlcXVpcmVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwicXVlc3Rpb24ucmVxdWlyZWRcIj4qPC9zcGFuPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJ0ZXh0XCIgdHlwZT1cInRleHRcIiBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJbcXVlc3Rpb24udHlwZV1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInF1ZXN0aW9uLmxhYmVsXCIgcmVhZG9ubHk+XHJcbiAgICAgICAgICAgICAgICA8L2gzPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBjbGFzcz1cInByZXZpZXdcIiAqbmdJZj1cImFjdGl2ZVF1ZXN0aW9uSW5kZXggIT09IHF1ZXN0aW9uSW5kZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmaWxlLXVwbG9hZFwiICpuZ0lmPVwicXVlc3Rpb24udHlwZT09PSd1cGxvYWQnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiZmlsZVwiIGRpc2FibGVkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj48aSBjbGFzcz1cImljb25zXCI+JiN4ZTllZDs8L2k+IEJyb3dzZSBGaWxlPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInF1ZXN0aW9uLnR5cGUgPT09ICdkYXRlJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0ZS1waWNrZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTJkOzwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIHBsYWNlaG9sZGVyPVwiU2VsZWN0IGRhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvcGVuRGF0ZVBpY2tlcigpOyRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgZGF0ZVBpY2tlck92ZXJsYXkgPSB0cnVlO1wiIGRpc2FibGVkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRwLWRhdGUtcGlja2VyICNkYXRlUGlja2VyIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XCI+IDwvZHAtZGF0ZS1waWNrZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtb3ZlcmxheVwiIChjbGljayk9XCJjbG9zZURhdGVwaWNrZXIoKTskZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImRhdGVQaWNrZXJPdmVybGF5XCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9vdGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGVmdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxhcHAtY3MtY2hlY2tib3ggW25nVmFsdWVdPVwicXVlc3Rpb24ucmVxdWlyZWRcIiAobmdWYWx1ZUNoYW5nZSk9XCJxdWVzdGlvbi5yZXF1aXJlZCA9ICRldmVudFwiPklzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkPC9hcHAtY3MtY2hlY2tib3g+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBbYXBwVG9vbHRpcF09XCInQWRkIG5ldydcIiBwbGFjZW1lbnQ9XCJib3R0b21cIiBkZWxheT1cIjBcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYmxhbmtDbG9uZShxdWVzdGlvbi50eXBlLHF1ZXN0aW9uSW5kZXgpOyRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTkxNTs8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImRlbGV0ZVwiIFthcHBUb29sdGlwXT1cIidEZWxldGUnXCIgcGxhY2VtZW50PVwiYm90dG9tXCIgZGVsYXk9XCIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlUXVlc3Rpb24ocXVlc3Rpb25JbmRleCk7JGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTIzOzwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxidXR0b24gW2FwcFRvb2x0aXBdPVwiJ0NvcHknXCIgcGxhY2VtZW50PVwiYm90dG9tXCIgZGVsYXk9XCIwXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNsb25lUXVlc3Rpb24ocXVlc3Rpb25JbmRleCk7JGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOWI2OzwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgIGNsYXNzPVwiY2hlY2twb2ludHMtcXVlc3Rpb25zLWJsb2Nrc1wiXHJcbiAgICAgICAgICAgICpuZ0lmPVwicXVlc3Rpb24/LnR5cGUgPT09ICdyYWRpbydcIlxyXG4gICAgICAgICAgICBbY2xhc3MuZXJyb3JdPVwiZXJyb3JJbmRleCA9PT0gcXVlc3Rpb25JbmRleFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJxdWVzdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY291bnRlclwiPnt7cXVlc3Rpb25JbmRleCsxfX0uIDxzcGFuIGNsYXNzPVwicmVxdWlyZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJxdWVzdGlvbi5yZXF1aXJlZFwiPio8L3NwYW4+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cInRleHRcIiB0eXBlPVwidGV4dFwiIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlcltxdWVzdGlvbi50eXBlXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwicXVlc3Rpb24ubGFiZWxcInJlYWRvbmx5PlxyXG4gICAgICAgICAgICAgICAgPC9oMz5cclxuICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cImxpc3RcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgcXVlc3Rpb24/Lm9wdGlvbnM7IGxldCBvcEluZGV4ID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1jcy1yYWRpbyBbb25lTGluZV09XCJ0cnVlXCIgW3JlYWRvbmx5XT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImFjdGl2ZVF1ZXN0aW9uSW5kZXggPT09IHF1ZXN0aW9uSW5kZXhcIj48aW5wdXQgWyhuZ01vZGVsKV09XCJvcHRpb24ubGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpZF09XCIncmFkaW8tJyArICcnICsgcXVlc3Rpb25JbmRleCArICcnICsgb3BJbmRleFwiIHR5cGU9XCJ0ZXh0XCIgcGxhY2Vob2xkZXI9XCJPcHRpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hcHAtY3MtcmFkaW8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGJ1dHRvbiBjbGFzcz1cImNsb3NlXCIgKGNsaWNrKT1cImRlbGV0ZU9wdGlvbihxdWVzdGlvbkluZGV4LG9wSW5kZXgscXVlc3Rpb24udHlwZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJhY3RpdmVRdWVzdGlvbkluZGV4ID09PSBxdWVzdGlvbkluZGV4ICYmIHF1ZXN0aW9uPy5vcHRpb25zLmxlbmd0aCA+IDFcIj48aVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTBkOzwvaT48L2J1dHRvbj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIDxsaSAqbmdJZj1cImFjdGl2ZVF1ZXN0aW9uSW5kZXggPT09IHF1ZXN0aW9uSW5kZXggJiYgZmFsc2VcIiBjbGFzcz1cImFkZC1uZXdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1jcy1yYWRpbyBbb25lTGluZV09XCJ0cnVlXCIgW3JlYWRvbmx5XT1cInRydWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIHJlYWRvbmx5IHBsYWNlaG9sZGVyPVwiQWRkIG1vcmUgb3B0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWRkT3B0aW9uKHF1ZXN0aW9uSW5kZXgscXVlc3Rpb24/Lm9wdGlvbnM/Lmxlbmd0aC0xLHF1ZXN0aW9uLnR5cGUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYXBwLWNzLXJhZGlvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbGk+IC0tPlxyXG4gICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9vdGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGVmdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxhcHAtY3MtY2hlY2tib3ggW25nVmFsdWVdPVwicXVlc3Rpb24ucmVxdWlyZWRcIiAobmdWYWx1ZUNoYW5nZSk9XCJxdWVzdGlvbi5yZXF1aXJlZCA9ICRldmVudFwiPklzIHJlcXVpcmVkPC9hcHAtY3MtY2hlY2tib3g+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8bGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIFthcHBUb29sdGlwXT1cIidBZGQgbmV3J1wiIHBsYWNlbWVudD1cImJvdHRvbVwiIGRlbGF5PVwiMFwiIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJibGFua0Nsb25lKHF1ZXN0aW9uLnR5cGUscXVlc3Rpb25JbmRleCk7JGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTE1OzwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xpPiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImRlbGV0ZVwiIFthcHBUb29sdGlwXT1cIidEZWxldGUnXCIgcGxhY2VtZW50PVwiYm90dG9tXCIgZGVsYXk9XCIwXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZVF1ZXN0aW9uKHF1ZXN0aW9uSW5kZXgpOyRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTkyMzs8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8bGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIFthcHBUb29sdGlwXT1cIidDb3B5J1wiIHBsYWNlbWVudD1cImJvdHRvbVwiIGRlbGF5PVwiMFwiIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjbG9uZVF1ZXN0aW9uKHF1ZXN0aW9uSW5kZXgpOyRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTliNjs8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2ICBjbGFzcz1cImNoZWNrcG9pbnRzLXF1ZXN0aW9ucy1ibG9ja3NcIlxyXG4gICAgICAgICAgICAqbmdJZj1cInF1ZXN0aW9uPy50eXBlID09PSAnc2VsZWN0J1wiIFxyXG4gICAgICAgICAgICBbY2xhc3MuZXJyb3JdPVwiZXJyb3JJbmRleCA9PT0gcXVlc3Rpb25JbmRleFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJxdWVzdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY291bnRlclwiPnt7cXVlc3Rpb25JbmRleCsxfX0uIDxzcGFuIGNsYXNzPVwicmVxdWlyZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJxdWVzdGlvbi5yZXF1aXJlZFwiPio8L3NwYW4+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cInRleHRcIiB0eXBlPVwidGV4dFwiIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlcltxdWVzdGlvbi50eXBlXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwicXVlc3Rpb24ubGFiZWxcInJlYWRvbmx5PlxyXG4gICAgICAgICAgICAgICAgPC9oMz5cclxuICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cImxpc3RcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgcXVlc3Rpb24/Lm9wdGlvbnM7IGxldCBvcEluZGV4ID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1jcy1yYWRpbyBbb25lTGluZV09XCJ0cnVlXCIgcmVhZG9ubHlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJhY3RpdmVRdWVzdGlvbkluZGV4ID09PSBxdWVzdGlvbkluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgWyhuZ01vZGVsKV09XCJvcHRpb24ubGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgPVwiJ3NlbGVjdC0nICsgJycgKyBxdWVzdGlvbkluZGV4ICsgJycgKyBvcEluZGV4XCIgKGtleWRvd24uZW50ZXIpPVwiYWRkT3B0aW9uKHF1ZXN0aW9uSW5kZXgsb3BJbmRleCxxdWVzdGlvbi50eXBlKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleWRvd24uYmFja3NwYWNlKT1cImRlbGV0ZU9uQmFja3NwYWNlKHF1ZXN0aW9uSW5kZXgsb3BJbmRleCxxdWVzdGlvbi50eXBlKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lkXT1cIidzZWxlY3QtJyArICcnICsgcXVlc3Rpb25JbmRleCArICcnICsgb3BJbmRleFwiIHR5cGU9XCJ0ZXh0XCIgcGxhY2Vob2xkZXI9XCJPcHRpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hcHAtY3MtcmFkaW8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGJ1dHRvbiBjbGFzcz1cImNsb3NlXCIgKGNsaWNrKT1cImRlbGV0ZU9wdGlvbihxdWVzdGlvbkluZGV4LG9wSW5kZXgscXVlc3Rpb24udHlwZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJhY3RpdmVRdWVzdGlvbkluZGV4ID09PSBxdWVzdGlvbkluZGV4ICYmIHF1ZXN0aW9uPy5vcHRpb25zLmxlbmd0aCA+IDFcIj48aVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTBkOzwvaT48L2J1dHRvbj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuPCEtLSBcclxuICAgICAgICAgICAgICAgICAgICA8bGkgKm5nSWY9XCJhY3RpdmVRdWVzdGlvbkluZGV4ID09PSBxdWVzdGlvbkluZGV4XCIgY2xhc3M9XCJhZGQtbmV3XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtY3MtcmFkaW8gW29uZUxpbmVdPVwidHJ1ZVwiIFtyZWFkb25seV09XCJ0cnVlXCI+PGlucHV0IHJlYWRvbmx5IHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkFkZCBtb3JlIG9wdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFkZE9wdGlvbihxdWVzdGlvbkluZGV4LHF1ZXN0aW9uPy5vcHRpb25zPy5sZW5ndGgtMSxxdWVzdGlvbi50eXBlKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2FwcC1jcy1yYWRpbz5cclxuICAgICAgICAgICAgICAgICAgICA8L2xpPiAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIDxidXR0b24gKGNsaWNrKT1cImFkZE9wdGlvbihxdWVzdGlvbkluZGV4LHF1ZXN0aW9uPy5vcHRpb25zPy5sZW5ndGgscXVlc3Rpb24udHlwZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImFjdGl2ZVF1ZXN0aW9uSW5kZXggPT09IHF1ZXN0aW9uSW5kZXhcIj5BZGQgTW9yZSBPcHRpb25zPC9idXR0b24+IC0tPlxyXG4gICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9vdGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGVmdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxhcHAtY3MtY2hlY2tib3ggW25nVmFsdWVdPVwicXVlc3Rpb24ucmVxdWlyZWRcIiAobmdWYWx1ZUNoYW5nZSk9XCJxdWVzdGlvbi5yZXF1aXJlZCA9ICRldmVudFwiPklzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkPC9hcHAtY3MtY2hlY2tib3g+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8bGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIFthcHBUb29sdGlwXT1cIidBZGQgbmV3J1wiIHBsYWNlbWVudD1cImJvdHRvbVwiIGRlbGF5PVwiMFwiIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJibGFua0Nsb25lKHF1ZXN0aW9uLnR5cGUscXVlc3Rpb25JbmRleCk7JGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTE1OzwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xpPiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImRlbGV0ZVwiIFthcHBUb29sdGlwXT1cIidEZWxldGUnXCIgcGxhY2VtZW50PVwiYm90dG9tXCIgZGVsYXk9XCIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlUXVlc3Rpb24ocXVlc3Rpb25JbmRleCk7JGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTIzOzwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxsaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gW2FwcFRvb2x0aXBdPVwiJ0NvcHknXCIgcGxhY2VtZW50PVwiYm90dG9tXCIgZGVsYXk9XCIwXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNsb25lUXVlc3Rpb24ocXVlc3Rpb25JbmRleCk7JGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOWI2OzwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xpPiAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgIGNsYXNzPVwiY2hlY2twb2ludHMtcXVlc3Rpb25zLWJsb2Nrc1wiXHJcbiAgICAgICAgICAgICpuZ0lmPVwicXVlc3Rpb24/LnR5cGUgPT09ICdjaGVja2JveCdcIiBcclxuICAgICAgICAgICAgW2NsYXNzLmVycm9yXT1cImVycm9ySW5kZXggPT09IHF1ZXN0aW9uSW5kZXhcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgPGgzIGNsYXNzPVwicXVlc3Rpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNvdW50ZXJcIj57e3F1ZXN0aW9uSW5kZXgrMX19LiA8c3BhbiBjbGFzcz1cInJlcXVpcmVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwicXVlc3Rpb24ucmVxdWlyZWRcIj4qPC9zcGFuPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJ0ZXh0XCIgdHlwZT1cInRleHRcIiBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJbcXVlc3Rpb24udHlwZV1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInF1ZXN0aW9uLmxhYmVsXCJyZWFkb25seT5cclxuICAgICAgICAgICAgICAgIDwvaDM+XHJcbiAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJsaXN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgcXVlc3Rpb24/Lm9wdGlvbnM7IGxldCBvcEluZGV4ID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1jcy1jaGVja2JveCBbb25lTGluZV09XCJ0cnVlXCIgW3JlYWRvbmx5XT1cInRydWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBbKG5nTW9kZWwpXT1cIm9wdGlvbi5sYWJlbFwiIHR5cGU9XCJ0ZXh0XCIgcGxhY2Vob2xkZXI9XCJPcHRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpZF09XCInY2hlY2tib3gtJyArICcnICsgcXVlc3Rpb25JbmRleCArICcnICsgb3BJbmRleFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwiYWRkT3B0aW9uKHF1ZXN0aW9uSW5kZXgsb3BJbmRleCxxdWVzdGlvbi50eXBlKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleWRvd24uYmFja3NwYWNlKT1cImRlbGV0ZU9uQmFja3NwYWNlKHF1ZXN0aW9uSW5kZXgsb3BJbmRleCxxdWVzdGlvbi50eXBlKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2FwcC1jcy1jaGVja2JveD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8YnV0dG9uIGNsYXNzPVwiY2xvc2VcIiAoY2xpY2spPVwiZGVsZXRlT3B0aW9uKHF1ZXN0aW9uSW5kZXgsb3BJbmRleCxxdWVzdGlvbi50eXBlKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImFjdGl2ZVF1ZXN0aW9uSW5kZXggPT09IHF1ZXN0aW9uSW5kZXggJiYgcXVlc3Rpb24/Lm9wdGlvbnMubGVuZ3RoID4gMVwiPjxpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpY29uc1wiPiYjeGU5MGQ7PC9pPjwvYnV0dG9uPiAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gPGxpICpuZ0lmPVwiYWN0aXZlUXVlc3Rpb25JbmRleCA9PT0gcXVlc3Rpb25JbmRleFwiIGNsYXNzPVwiYWRkLW5ld1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YXBwLWNzLWNoZWNrYm94IFtvbmVMaW5lXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFkZE9wdGlvbihxdWVzdGlvbkluZGV4LHF1ZXN0aW9uPy5vcHRpb25zPy5sZW5ndGgtMSxxdWVzdGlvbi50eXBlKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IFtkaXNhYmxlZF09XCJ0cnVlXCIgdHlwZT1cInRleHRcIiBwbGFjZWhvbGRlcj1cIkFkZCBtb3JlIG9wdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2FwcC1jcy1jaGVja2JveD5cclxuICAgICAgICAgICAgICAgICAgICA8L2xpPiAtLT5cclxuICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvb3RlclwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxlZnRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YXBwLWNzLWNoZWNrYm94IFtuZ1ZhbHVlXT1cInF1ZXN0aW9uLnJlcXVpcmVkXCIgKG5nVmFsdWVDaGFuZ2UpPVwicXVlc3Rpb24ucmVxdWlyZWQgPSAkZXZlbnRcIj5Jc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDwvYXBwLWNzLWNoZWNrYm94PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmlnaHRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGxpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBbYXBwVG9vbHRpcF09XCInQWRkIG5ldydcIiBwbGFjZW1lbnQ9XCJib3R0b21cIiBkZWxheT1cIjBcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYmxhbmtDbG9uZShxdWVzdGlvbi50eXBlLHF1ZXN0aW9uSW5kZXgpOyRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTkxNTs8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJkZWxldGVcIiBbYXBwVG9vbHRpcF09XCInRGVsZXRlJ1wiIHBsYWNlbWVudD1cImJvdHRvbVwiIGRlbGF5PVwiMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZVF1ZXN0aW9uKHF1ZXN0aW9uSW5kZXgpOyRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTkyMzs8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8bGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIFthcHBUb29sdGlwXT1cIidDb3B5J1wiIHBsYWNlbWVudD1cImJvdHRvbVwiIGRlbGF5PVwiMFwiIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjbG9uZVF1ZXN0aW9uKHF1ZXN0aW9uSW5kZXgpOyRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTliNjs8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJjaGVja3BvaW50cy1xdWVzdGlvbnMtYmxvY2tzXCIgW2NsYXNzLmFjdGl2ZV09XCJ0cnVlXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICA8aDMgY2xhc3M9XCJxdWVzdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjb3VudGVyXCI+Mi4gPHNwYW4gY2xhc3M9XCJyZXF1aXJlZFwiPio8L3NwYW4+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwidGV4dFwiIHR5cGU9XCJ0ZXh0XCIgcGxhY2Vob2xkZXI9XCJUeXBlIHlvdXIgcXVlc3Rpb24gaGVyZSBbU2VsZWN0IEJveF1cIiB2YWx1ZT1cIkhhcyB0aGUgcHJldmlvdXMgYXVkaXQgcmVwb3J0IGJlZW4gY2xvc2VkIG91dD9cIj5cclxuICAgICAgICAgICAgPC9oMz5cclxuICAgICAgICAgICAgPHVsIGNsYXNzPVwibGlzdFwiPlxyXG4gICAgICAgICAgICAgICAgPGxpPlxyXG4gICAgICAgICAgICAgICAgICAgIDxhcHAtY3MtcmFkaW8gW29uZUxpbmVdPVwidHJ1ZVwiPjxzcGFuPlllczwvc3Bhbj48L2FwcC1jcy1yYWRpbz4gPGJ1dHRvbiBjbGFzcz1cImNsb3NlXCI+PGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5MGQ7PC9pPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaT5cclxuICAgICAgICAgICAgICAgICAgICA8YXBwLWNzLXJhZGlvIFtvbmVMaW5lXT1cInRydWVcIj48c3Bhbj5Obzwvc3Bhbj48L2FwcC1jcy1yYWRpbz48YnV0dG9uIGNsYXNzPVwiY2xvc2VcIj48aSBjbGFzcz1cImljb25zXCI+JiN4ZTkwZDs8L2k+PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpPlxyXG4gICAgICAgICAgICAgICAgICAgIDxhcHAtY3MtcmFkaW8gW29uZUxpbmVdPVwidHJ1ZVwiPjxzcGFuPk4vQTwvc3Bhbj48L2FwcC1jcy1yYWRpbz48YnV0dG9uIGNsYXNzPVwiY2xvc2VcIj48aSBjbGFzcz1cImljb25zXCI+JiN4ZTkwZDs8L2k+PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpPlxyXG4gICAgICAgICAgICAgICAgICAgIDxhcHAtY3MtcmFkaW8gW29uZUxpbmVdPVwidHJ1ZVwiPjxpbnB1dCB0eXBlPVwidGV4dFwiIHBsYWNlaG9sZGVyPVwiT3B0aW9uXCI+PC9hcHAtY3MtcmFkaW8+IDxidXR0b24gY2xhc3M9XCJjbG9zZVwiPjxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTBkOzwvaT48L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZvb3RlclwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGVmdFwiPlxyXG4gICAgICAgICAgICAgICAgPGFwcC1jcy1jaGVja2JveCBbbmdWYWx1ZV09XCJxdWVzdGlvbi5yZXF1aXJlZFwiIChuZ1ZhbHVlQ2hhbmdlKT1cInF1ZXN0aW9uLnJlcXVpcmVkID0gJGV2ZW50XCI+SXMgcmVxdWlyZWQ8L2FwcC1jcy1jaGVja2JveD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPlxyXG4gICAgICAgICAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaT48YnV0dG9uPjxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTE1OzwvaT48L2J1dHRvbj48L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaT48YnV0dG9uPjxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTIzOzwvaT48L2J1dHRvbj48L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaT48YnV0dG9uPjxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOWI2OzwvaT48L2J1dHRvbj48L2xpPlxyXG4gICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj4gLS0+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwhLS0gPGJ1dHRvbiBjbGFzcz1cImJ0bi1hZGQtbmV3XCIgdHlwZT1cImJ1dHRvblwiIGFwcFBvcG92ZXIgKGNsaWNrKT1cIm5ld0NoZWNrcG9pbnQucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwibGVmdFwiPisgQWRkIGEgbmV3XHJcbiAgICAgICAgY2hlY2twb2ludDwvYnV0dG9uPiAtLT5cclxuICAgIDwhLS0gPGFwcC1wb3BvdmVyICNuZXdDaGVja3BvaW50PlxyXG5cclxuICAgICAgICA8dWwgY2xhc3M9XCJjaGVja3BvaW50LXR5cGUtbGlzdFwiPlxyXG4gICAgICAgICAgICA8bGk+PHNwYW4gY2xhc3M9XCJjaGVja3BvaW50LXR5cGUtbGlzdC10aXRsZVwiPkFkZCBDaGVja3BvaW50czwvc3Bhbj48L2xpPlxyXG4gICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IHR5cGUgb2YgcXVlc3Rpb25UeXBlTGlzdFwiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiYWRkUXVlc3Rpb24odHlwZSlcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCIgW2lubmVySFRNTF09XCJ0eXBlLmljb25cIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7e3R5cGU/LnRleHR9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgIDwvdWw+XHJcbiAgICA8L2FwcC1wb3BvdmVyPiAtLT5cclxuPC9kaXY+XHJcbiJdfQ==
131
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2twb2ludHMtcXVlc3Rpb25zLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Z4LXdvcmtmbG93LWVuZ2luZS9zcmMvbGliL3NoYXJlZENvbXBvbmVudHMvY2hlY2twb2ludC9jaGVja3BvaW50cy1xdWVzdGlvbnMvY2hlY2twb2ludHMtcXVlc3Rpb25zLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Z4LXdvcmtmbG93LWVuZ2luZS9zcmMvbGliL3NoYXJlZENvbXBvbmVudHMvY2hlY2twb2ludC9jaGVja3BvaW50cy1xdWVzdGlvbnMvY2hlY2twb2ludHMtcXVlc3Rpb25zLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUVMLE1BQU0sRUFDTixZQUFZLEVBQ1osU0FBUyxHQUlWLE1BQU0sZUFBZSxDQUFDOzs7Ozs7Ozs7OztBQVN2QixNQUFNLE9BQU8sNkJBQTZCO0lBQ3hDLFlBQ1UsVUFBc0IsRUFDdEIsUUFBeUI7UUFEekIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixhQUFRLEdBQVIsUUFBUSxDQUFpQjtRQUUxQixtQkFBYyxHQUFRLEVBQUUsQ0FBQztRQUN6QixxQkFBZ0IsR0FBRyxFQUFFLENBQUM7UUFDdEIsZUFBVSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ2hCLDBCQUFxQixHQUFXLEVBQUUsQ0FBQztRQUNsQyxtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDcEMsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3BDLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNsQyxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDbkMsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ2xDLGlC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LElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNO1lBQ2xFLENBQUM7WUFDSCxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUNyRDtZQUNBLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1NBQzlEO0lBQ0gsQ0FBQzs7MEhBL0ZVLDZCQUE2Qjs4R0FBN0IsNkJBQTZCLGlsQkNuQjFDLG04bEJBNlRBOzJGRDFTYSw2QkFBNkI7a0JBTHpDLFNBQVM7K0JBQ0UsMkJBQTJCOytIQVM1QixjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLHFCQUFxQjtzQkFBN0IsS0FBSztnQkFDSSxjQUFjO3NCQUF2QixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU07Z0JBQ0csWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxpQkFBaUI7c0JBQTFCLE1BQU07Z0JBQ2tCLFVBQVU7c0JBQWxDLFNBQVM7dUJBQUMsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIElucHV0LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIFZpZXdDaGlsZCxcclxuICBPbkNoYW5nZXMsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBFbGVtZW50UmVmLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBEYXRlUGlja2VyQ29tcG9uZW50IH0gZnJvbSAnbmcyLWRhdGUtcGlja2VyJztcclxuaW1wb3J0IHsgU25hY2tCYXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vdWkta2l0L3NuYWNrLWJhci9zbmFjay1iYXIuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1jaGVja3BvaW50cy1xdWVzdGlvbnMnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jaGVja3BvaW50cy1xdWVzdGlvbnMuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2NoZWNrcG9pbnRzLXF1ZXN0aW9ucy5jb21wb25lbnQubGVzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ2hlY2twb2ludHNRdWVzdGlvbnNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXHJcbiAgICBwcml2YXRlIHNuYWNrYmFyOiBTbmFja0JhclNlcnZpY2VcclxuICApIHt9XHJcbiAgQElucHV0KCkgY2hlY2twb2ludERhdGE6IGFueSA9IFtdO1xyXG4gIEBJbnB1dCgpIHF1ZXN0aW9uVHlwZUxpc3QgPSBbXTtcclxuICBASW5wdXQoKSBlcnJvckluZGV4ID0gLTE7XHJcbiAgQElucHV0KCkgY2hlY2twb2ludEluc3RydWN0aW9uOiBzdHJpbmcgPSAnJztcclxuICBAT3V0cHV0KCkgY3JlYXRlUXVlc3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGRlbGV0ZVF1ZXN0aW9uID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBjb3B5UXVlc3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGJsYW5rUXVlc3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGNyZWF0ZU9wdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgcmVtb3ZlT3B0aW9uID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSB1cGRhdGVEZXNjcmlwdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAVmlld0NoaWxkKCdkYXRlUGlja2VyJykgZGF0ZVBpY2tlciE6IERhdGVQaWNrZXJDb21wb25lbnQ7XHJcbiAgZGF0ZVBpY2tlck92ZXJsYXkgPSBmYWxzZTtcclxuICBhY3RpdmVRdWVzdGlvbkluZGV4ID0gMDtcclxuICBhZGRJbnN0cnVjdGlvbiE6IGJvb2xlYW47XHJcblxyXG4gIHBsYWNlaG9sZGVyOiBhbnkgPSB7XHJcbiAgICB0ZXh0Ym94OiAnVHlwZSB5b3VyIHF1ZXN0aW9uIGhlcmUgW1RleHQgQm94XScsXHJcbiAgICBzZWxlY3Q6ICdUeXBlIHlvdXIgcXVlc3Rpb24gaGVyZSBbU2VsZWN0XScsXHJcbiAgICByYWRpbzogJ1R5cGUgeW91ciBxdWVzdGlvbiBoZXJlIFtSYWRpb10nLFxyXG4gICAgY2hlY2tib3g6ICdUeXBlIHlvdXIgcXVlc3Rpb24gaGVyZSBbQ2hlY2tCb3hdJyxcclxuICAgIGRhdGU6ICdUeXBlIHlvdXIgcXVlc3Rpb24gaGVyZSBbRGF0ZV0nLFxyXG4gICAgdXBsb2FkOiAnVHlwZSB5b3VyIHF1ZXN0aW9uIGhlcmUgW1VwbG9hZF0nLFxyXG4gIH07XHJcbiAgZGVzY3JpcHRpb246IGFueSA9ICcnO1xyXG4gIG5nT25Jbml0KCk6IHZvaWQge31cclxuXHJcbiAgc2F2ZURlc2NyaXB0aW9uKCkge1xyXG4gICAgdGhpcy5hZGRJbnN0cnVjdGlvbiA9IGZhbHNlO1xyXG4gICAgaWYgKHRoaXMuZXh0cmFjdENvbnRlbnQodGhpcy5jaGVja3BvaW50SW5zdHJ1Y3Rpb24pID09PSAnJykge1xyXG4gICAgICB0aGlzLmNoZWNrcG9pbnRJbnN0cnVjdGlvbiA9ICcnO1xyXG4gICAgfVxyXG4gICAgdGhpcy51cGRhdGVEZXNjcmlwdGlvbi5lbWl0KHRoaXMuY2hlY2twb2ludEluc3RydWN0aW9uKTtcclxuICB9XHJcbiAgZXh0cmFjdENvbnRlbnQoczogc3RyaW5nKSB7XHJcbiAgICB2YXIgc3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcclxuICAgIHNwYW4uaW5uZXJIVE1MID0gcztcclxuICAgIHJldHVybiAoc3Bhbi50ZXh0Q29udGVudCB8fCBzcGFuLmlubmVyVGV4dClcclxuICAgICAgLnJlcGxhY2UoLyZuYnNwOy9nLCAnJylcclxuICAgICAgLnJlcGxhY2UoL1xcPGJyXFxzKltcXC9dPz4vZ2ksICcnKVxyXG4gICAgICAudHJpbSgpO1xyXG4gIH1cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcbiAgICBpZiAoY2hhbmdlcy5lcnJvckluZGV4KSB7XHJcbiAgICAgIGlmICh0aGlzLmVycm9ySW5kZXggPj0gMCkge1xyXG4gICAgICAgIHRoaXMuYWN0aXZlUXVlc3Rpb25JbmRleCA9IHRoaXMuZXJyb3JJbmRleDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICBvcGVuRGF0ZVBpY2tlcigpIHtcclxuICAgIHRoaXMuZGF0ZVBpY2tlci5hcGkub3BlbigpO1xyXG4gICAgdGhpcy5kYXRlUGlja2VyT3ZlcmxheSA9IHRydWU7XHJcbiAgfVxyXG4gIGNsb3NlRGF0ZXBpY2tlcigpIHtcclxuICAgIHRoaXMuZGF0ZVBpY2tlci5hcGkuY2xvc2UoKTtcclxuICAgIHRoaXMuZGF0ZVBpY2tlck92ZXJsYXkgPSBmYWxzZTtcclxuICB9XHJcbiAgYWRkUXVlc3Rpb24odHlwZTogYW55KSB7XHJcbiAgICAvLyAgdGhpcy5jcmVhdGVRdWVzdGlvbi5lbWl0KHR5cGUudHlwZSk7XHJcbiAgICAvLyB0aGlzLmFjdGl2ZVF1ZXN0aW9uSW5kZXggPSB0aGlzLmNoZWNrcG9pbnREYXRhLmxlbmd0aCAtIDE7XHJcbiAgfVxyXG4gIHJlbW92ZVF1ZXN0aW9uKGluZGV4OiBudW1iZXIpIHtcclxuICAgIHRoaXMuZGVsZXRlUXVlc3Rpb24uZW1pdChpbmRleCk7XHJcbiAgICB0aGlzLmFjdGl2ZVF1ZXN0aW9uSW5kZXggPSBpbmRleCAtIDE7XHJcbiAgfVxyXG4gIGNsb25lUXVlc3Rpb24oaW5kZXg6IG51bWJlcikge1xyXG4gICAgLy8gdGhpcy5hY3RpdmVRdWVzdGlvbkluZGV4ID0gaW5kZXggKyAxO1xyXG4gICAgLy8gdGhpcy5jb3B5UXVlc3Rpb24uZW1pdChpbmRleCk7XHJcbiAgfVxyXG4gIGJsYW5rQ2xvbmUodHlwZTogc3RyaW5nLCBpbmRleDogbnVtYmVyKSB7XHJcbiAgICAvLyB0aGlzLmJsYW5rUXVlc3Rpb24uZW1pdCh7dHlwZSwgaW5kZXh9KTtcclxuICAgIC8vIHRoaXMuYWN0aXZlUXVlc3Rpb25JbmRleCA9IGluZGV4ICsgMTtcclxuICB9XHJcblxyXG4gIGFkZE9wdGlvbihxdWVzdGlvbkluZGV4OiBudW1iZXIsIG9wdGlvbkluZGV4OiBudW1iZXIsIHR5cGU6IHN0cmluZykge1xyXG4gICAgLy8gdGhpcy5jcmVhdGVPcHRpb24uZW1pdCh7cXVlc3Rpb25JbmRleCwgb3B0aW9uSW5kZXgsIHR5cGV9KTtcclxuICB9XHJcblxyXG4gIGRlbGV0ZU9wdGlvbihxdWVzdGlvbkluZGV4OiBudW1iZXIsIG9wdGlvbkluZGV4OiBudW1iZXIsIHR5cGU6IHN0cmluZykge1xyXG4gICAgdGhpcy5yZW1vdmVPcHRpb24uZW1pdCh7IHF1ZXN0aW9uSW5kZXgsIG9wdGlvbkluZGV4LCB0eXBlIH0pO1xyXG4gIH1cclxuXHJcbiAgZGVsZXRlT25CYWNrc3BhY2UocXVlc3Rpb25JbmRleDogbnVtYmVyLCBvcHRpb25JbmRleDogbnVtYmVyLCB0eXBlOiBzdHJpbmcpIHtcclxuICAgIGlmIChcclxuICAgICAgdGhpcy5jaGVja3BvaW50RGF0YVtxdWVzdGlvbkluZGV4XS5vcHRpb25zW29wdGlvbkluZGV4XS5sYWJlbC5sZW5ndGggPFxyXG4gICAgICAgIDEgJiZcclxuICAgICAgdGhpcy5jaGVja3BvaW50RGF0YVtxdWVzdGlvbkluZGV4XS5vcHRpb25zLmxlbmd0aCA+IDFcclxuICAgICkge1xyXG4gICAgICB0aGlzLnJlbW92ZU9wdGlvbi5lbWl0KHsgcXVlc3Rpb25JbmRleCwgb3B0aW9uSW5kZXgsIHR5cGUgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjwhLS0gPHA+Y2hlY2twb2ludHMtcXVlc3Rpb25zIHdvcmtzITwvcD4gLS0+XHJcbjxkaXYgY2xhc3M9XCJjaGVja3BvaW50cy1xdWVzdGlvbnNcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjaGVja3BvaW50cy1xdWVzdGlvbnMtYmxvY2tzIGluc3RydWN0aW9uXCJcclxuICAgICAgICBbY2xhc3MuZmlsbGVkXT1cImNoZWNrcG9pbnRJbnN0cnVjdGlvbi5sZW5ndGg+MCAmJiAhYWRkSW5zdHJ1Y3Rpb25cIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgIDxoMyBjbGFzcz1cInF1ZXN0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNvdW50ZXJcIiAqbmdJZj1cIiFhZGRJbnN0cnVjdGlvblwiPjxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTMyOzwvaT48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHRcIiAqbmdJZj1cIiFhZGRJbnN0cnVjdGlvblwiIFxyXG4gICAgICAgICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwiY2hlY2twb2ludEluc3RydWN0aW9uLmxlbmd0aD4wID8gKGNoZWNrcG9pbnRJbnN0cnVjdGlvbiB8IGZvcm1hdEh0bWwpIDonQWRkIGluc3RydWN0aW9uJ1wiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dFwiICpuZ0lmPVwiYWRkSW5zdHJ1Y3Rpb24gJiYgZmFsc2VcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dmNvbXBseS1lZGl0b3IgWyhuZ01vZGVsKV09XCJjaGVja3BvaW50SW5zdHJ1Y3Rpb25cIiBbZWRpdG9yQ29uZmlnXT1cInttb2RlOiAncHJpbWUnLFxyXG4gICAgICAgICAgICAgICAgICAgIGNvbG9yUGFsZXR0ZTogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICBsaW5rOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAnQWRkIGluc3RydWN0aW9uJyxcclxuICAgICAgICAgICAgICAgICAgICBidXR0b25OYW1lOidTQVZFJywgaWQ6J2NoZWNrcG9pbnQtaW5zdHJ1Y3Rpb25zJ31cIiAoY29tbWVudCk9XCJzYXZlRGVzY3JpcHRpb24oKVwiPjwvdmNvbXBseS1lZGl0b3I+XHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvaDM+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBxdWVzdGlvbiBvZiBjaGVja3BvaW50RGF0YTsgbGV0IHF1ZXN0aW9uSW5kZXggPSBpbmRleFwiPlxyXG4gICAgICAgIDxkaXYgIGNsYXNzPVwiY2hlY2twb2ludHMtcXVlc3Rpb25zLWJsb2Nrc1wiXHJcbiAgICAgICAgICAgICpuZ0lmPVwiWyd0ZXh0Ym94JywnZGF0ZScsJ3VwbG9hZCddLmluY2x1ZGVzKHF1ZXN0aW9uPy50eXBlKVwiXHJcbiAgICAgICAgICAgIFtjbGFzcy5lcnJvcl09XCJlcnJvckluZGV4ID09PSBxdWVzdGlvbkluZGV4XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgIDxoMyBjbGFzcz1cInF1ZXN0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjb3VudGVyXCI+e3txdWVzdGlvbkluZGV4KzF9fS4gPHNwYW4gY2xhc3M9XCJyZXF1aXJlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInF1ZXN0aW9uLnJlcXVpcmVkXCI+Kjwvc3Bhbj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwidGV4dFwiIHR5cGU9XCJ0ZXh0XCIgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyW3F1ZXN0aW9uLnR5cGVdXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJxdWVzdGlvbi5sYWJlbFwiIHJlYWRvbmx5PlxyXG4gICAgICAgICAgICAgICAgPC9oMz5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgY2xhc3M9XCJwcmV2aWV3XCIgKm5nSWY9XCJhY3RpdmVRdWVzdGlvbkluZGV4ICE9PSBxdWVzdGlvbkluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZmlsZS11cGxvYWRcIiAqbmdJZj1cInF1ZXN0aW9uLnR5cGU9PT0ndXBsb2FkJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImZpbGVcIiBkaXNhYmxlZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+PGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5ZWQ7PC9pPiBCcm93c2UgRmlsZTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJxdWVzdGlvbi50eXBlID09PSAnZGF0ZSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRhdGUtcGlja2VyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTkyZDs8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBwbGFjZWhvbGRlcj1cIlNlbGVjdCBkYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib3BlbkRhdGVQaWNrZXIoKTskZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IGRhdGVQaWNrZXJPdmVybGF5ID0gdHJ1ZTtcIiBkaXNhYmxlZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkcC1kYXRlLXBpY2tlciAjZGF0ZVBpY2tlciAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1wiPiA8L2RwLWRhdGUtcGlja2VyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LW92ZXJsYXlcIiAoY2xpY2spPVwiY2xvc2VEYXRlcGlja2VyKCk7JGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJkYXRlUGlja2VyT3ZlcmxheVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvb3RlclwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxlZnRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YXBwLWNzLWNoZWNrYm94IFtuZ1ZhbHVlXT1cInF1ZXN0aW9uLnJlcXVpcmVkXCIgKG5nVmFsdWVDaGFuZ2UpPVwicXVlc3Rpb24ucmVxdWlyZWQgPSAkZXZlbnRcIj5Jc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDwvYXBwLWNzLWNoZWNrYm94PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmlnaHRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gW2FwcFRvb2x0aXBdPVwiJ0FkZCBuZXcnXCIgcGxhY2VtZW50PVwiYm90dG9tXCIgZGVsYXk9XCIwXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImJsYW5rQ2xvbmUocXVlc3Rpb24udHlwZSxxdWVzdGlvbkluZGV4KTskZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5MTU7PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJkZWxldGVcIiBbYXBwVG9vbHRpcF09XCInRGVsZXRlJ1wiIHBsYWNlbWVudD1cImJvdHRvbVwiIGRlbGF5PVwiMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZVF1ZXN0aW9uKHF1ZXN0aW9uSW5kZXgpOyRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTkyMzs8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8YnV0dG9uIFthcHBUb29sdGlwXT1cIidDb3B5J1wiIHBsYWNlbWVudD1cImJvdHRvbVwiIGRlbGF5PVwiMFwiIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjbG9uZVF1ZXN0aW9uKHF1ZXN0aW9uSW5kZXgpOyRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTliNjs8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2ICBjbGFzcz1cImNoZWNrcG9pbnRzLXF1ZXN0aW9ucy1ibG9ja3NcIlxyXG4gICAgICAgICAgICAqbmdJZj1cInF1ZXN0aW9uPy50eXBlID09PSAncmFkaW8nXCJcclxuICAgICAgICAgICAgW2NsYXNzLmVycm9yXT1cImVycm9ySW5kZXggPT09IHF1ZXN0aW9uSW5kZXhcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgPGgzIGNsYXNzPVwicXVlc3Rpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNvdW50ZXJcIj57e3F1ZXN0aW9uSW5kZXgrMX19LiA8c3BhbiBjbGFzcz1cInJlcXVpcmVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwicXVlc3Rpb24ucmVxdWlyZWRcIj4qPC9zcGFuPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJ0ZXh0XCIgdHlwZT1cInRleHRcIiBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJbcXVlc3Rpb24udHlwZV1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInF1ZXN0aW9uLmxhYmVsXCJyZWFkb25seT5cclxuICAgICAgICAgICAgICAgIDwvaDM+XHJcbiAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJsaXN0XCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIHF1ZXN0aW9uPy5vcHRpb25zOyBsZXQgb3BJbmRleCA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtY3MtcmFkaW8gW29uZUxpbmVdPVwidHJ1ZVwiIFtyZWFkb25seV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJhY3RpdmVRdWVzdGlvbkluZGV4ID09PSBxdWVzdGlvbkluZGV4XCI+PGlucHV0IFsobmdNb2RlbCldPVwib3B0aW9uLmxhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWRdPVwiJ3JhZGlvLScgKyAnJyArIHF1ZXN0aW9uSW5kZXggKyAnJyArIG9wSW5kZXhcIiB0eXBlPVwidGV4dFwiIHBsYWNlaG9sZGVyPVwiT3B0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYXBwLWNzLXJhZGlvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxidXR0b24gY2xhc3M9XCJjbG9zZVwiIChjbGljayk9XCJkZWxldGVPcHRpb24ocXVlc3Rpb25JbmRleCxvcEluZGV4LHF1ZXN0aW9uLnR5cGUpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiYWN0aXZlUXVlc3Rpb25JbmRleCA9PT0gcXVlc3Rpb25JbmRleCAmJiBxdWVzdGlvbj8ub3B0aW9ucy5sZW5ndGggPiAxXCI+PGlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zXCI+JiN4ZTkwZDs8L2k+PC9idXR0b24+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSA8bGkgKm5nSWY9XCJhY3RpdmVRdWVzdGlvbkluZGV4ID09PSBxdWVzdGlvbkluZGV4ICYmIGZhbHNlXCIgY2xhc3M9XCJhZGQtbmV3XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtY3MtcmFkaW8gW29uZUxpbmVdPVwidHJ1ZVwiIFtyZWFkb25seV09XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiByZWFkb25seSBwbGFjZWhvbGRlcj1cIkFkZCBtb3JlIG9wdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFkZE9wdGlvbihxdWVzdGlvbkluZGV4LHF1ZXN0aW9uPy5vcHRpb25zPy5sZW5ndGgtMSxxdWVzdGlvbi50eXBlKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2FwcC1jcy1yYWRpbz5cclxuICAgICAgICAgICAgICAgICAgICA8L2xpPiAtLT5cclxuICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvb3RlclwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxlZnRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YXBwLWNzLWNoZWNrYm94IFtuZ1ZhbHVlXT1cInF1ZXN0aW9uLnJlcXVpcmVkXCIgKG5nVmFsdWVDaGFuZ2UpPVwicXVlc3Rpb24ucmVxdWlyZWQgPSAkZXZlbnRcIj5JcyByZXF1aXJlZDwvYXBwLWNzLWNoZWNrYm94PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmlnaHRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGxpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBbYXBwVG9vbHRpcF09XCInQWRkIG5ldydcIiBwbGFjZW1lbnQ9XCJib3R0b21cIiBkZWxheT1cIjBcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYmxhbmtDbG9uZShxdWVzdGlvbi50eXBlLHF1ZXN0aW9uSW5kZXgpOyRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTkxNTs8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJkZWxldGVcIiBbYXBwVG9vbHRpcF09XCInRGVsZXRlJ1wiIHBsYWNlbWVudD1cImJvdHRvbVwiIGRlbGF5PVwiMFwiIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmVRdWVzdGlvbihxdWVzdGlvbkluZGV4KTskZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5MjM7PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGxpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBbYXBwVG9vbHRpcF09XCInQ29weSdcIiBwbGFjZW1lbnQ9XCJib3R0b21cIiBkZWxheT1cIjBcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2xvbmVRdWVzdGlvbihxdWVzdGlvbkluZGV4KTskZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5YjY7PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiAgY2xhc3M9XCJjaGVja3BvaW50cy1xdWVzdGlvbnMtYmxvY2tzXCJcclxuICAgICAgICAgICAgKm5nSWY9XCJxdWVzdGlvbj8udHlwZSA9PT0gJ3NlbGVjdCdcIiBcclxuICAgICAgICAgICAgW2NsYXNzLmVycm9yXT1cImVycm9ySW5kZXggPT09IHF1ZXN0aW9uSW5kZXhcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgPGgzIGNsYXNzPVwicXVlc3Rpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNvdW50ZXJcIj57e3F1ZXN0aW9uSW5kZXgrMX19LiA8c3BhbiBjbGFzcz1cInJlcXVpcmVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwicXVlc3Rpb24ucmVxdWlyZWRcIj4qPC9zcGFuPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJ0ZXh0XCIgdHlwZT1cInRleHRcIiBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJbcXVlc3Rpb24udHlwZV1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInF1ZXN0aW9uLmxhYmVsXCJyZWFkb25seT5cclxuICAgICAgICAgICAgICAgIDwvaDM+XHJcbiAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJsaXN0XCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIHF1ZXN0aW9uPy5vcHRpb25zOyBsZXQgb3BJbmRleCA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtY3MtcmFkaW8gW29uZUxpbmVdPVwidHJ1ZVwiIHJlYWRvbmx5XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiYWN0aXZlUXVlc3Rpb25JbmRleCA9PT0gcXVlc3Rpb25JbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IFsobmdNb2RlbCldPVwib3B0aW9uLmxhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lID1cIidzZWxlY3QtJyArICcnICsgcXVlc3Rpb25JbmRleCArICcnICsgb3BJbmRleFwiIChrZXlkb3duLmVudGVyKT1cImFkZE9wdGlvbihxdWVzdGlvbkluZGV4LG9wSW5kZXgscXVlc3Rpb24udHlwZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXlkb3duLmJhY2tzcGFjZSk9XCJkZWxldGVPbkJhY2tzcGFjZShxdWVzdGlvbkluZGV4LG9wSW5kZXgscXVlc3Rpb24udHlwZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpZF09XCInc2VsZWN0LScgKyAnJyArIHF1ZXN0aW9uSW5kZXggKyAnJyArIG9wSW5kZXhcIiB0eXBlPVwidGV4dFwiIHBsYWNlaG9sZGVyPVwiT3B0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYXBwLWNzLXJhZGlvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxidXR0b24gY2xhc3M9XCJjbG9zZVwiIChjbGljayk9XCJkZWxldGVPcHRpb24ocXVlc3Rpb25JbmRleCxvcEluZGV4LHF1ZXN0aW9uLnR5cGUpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiYWN0aXZlUXVlc3Rpb25JbmRleCA9PT0gcXVlc3Rpb25JbmRleCAmJiBxdWVzdGlvbj8ub3B0aW9ucy5sZW5ndGggPiAxXCI+PGlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zXCI+JiN4ZTkwZDs8L2k+PC9idXR0b24+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbjwhLS0gXHJcbiAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0lmPVwiYWN0aXZlUXVlc3Rpb25JbmRleCA9PT0gcXVlc3Rpb25JbmRleFwiIGNsYXNzPVwiYWRkLW5ld1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YXBwLWNzLXJhZGlvIFtvbmVMaW5lXT1cInRydWVcIiBbcmVhZG9ubHldPVwidHJ1ZVwiPjxpbnB1dCByZWFkb25seSB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJBZGQgbW9yZSBvcHRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhZGRPcHRpb24ocXVlc3Rpb25JbmRleCxxdWVzdGlvbj8ub3B0aW9ucz8ubGVuZ3RoLTEscXVlc3Rpb24udHlwZSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hcHAtY3MtcmFkaW8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9saT4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSA8YnV0dG9uIChjbGljayk9XCJhZGRPcHRpb24ocXVlc3Rpb25JbmRleCxxdWVzdGlvbj8ub3B0aW9ucz8ubGVuZ3RoLHF1ZXN0aW9uLnR5cGUpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJhY3RpdmVRdWVzdGlvbkluZGV4ID09PSBxdWVzdGlvbkluZGV4XCI+QWRkIE1vcmUgT3B0aW9uczwvYnV0dG9uPiAtLT5cclxuICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvb3RlclwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxlZnRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YXBwLWNzLWNoZWNrYm94IFtuZ1ZhbHVlXT1cInF1ZXN0aW9uLnJlcXVpcmVkXCIgKG5nVmFsdWVDaGFuZ2UpPVwicXVlc3Rpb24ucmVxdWlyZWQgPSAkZXZlbnRcIj5Jc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDwvYXBwLWNzLWNoZWNrYm94PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmlnaHRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGxpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBbYXBwVG9vbHRpcF09XCInQWRkIG5ldydcIiBwbGFjZW1lbnQ9XCJib3R0b21cIiBkZWxheT1cIjBcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYmxhbmtDbG9uZShxdWVzdGlvbi50eXBlLHF1ZXN0aW9uSW5kZXgpOyRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTkxNTs8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJkZWxldGVcIiBbYXBwVG9vbHRpcF09XCInRGVsZXRlJ1wiIHBsYWNlbWVudD1cImJvdHRvbVwiIGRlbGF5PVwiMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZVF1ZXN0aW9uKHF1ZXN0aW9uSW5kZXgpOyRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTkyMzs8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8bGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIFthcHBUb29sdGlwXT1cIidDb3B5J1wiIHBsYWNlbWVudD1cImJvdHRvbVwiIGRlbGF5PVwiMFwiIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjbG9uZVF1ZXN0aW9uKHF1ZXN0aW9uSW5kZXgpOyRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTliNjs8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2ICBjbGFzcz1cImNoZWNrcG9pbnRzLXF1ZXN0aW9ucy1ibG9ja3NcIlxyXG4gICAgICAgICAgICAqbmdJZj1cInF1ZXN0aW9uPy50eXBlID09PSAnY2hlY2tib3gnXCIgXHJcbiAgICAgICAgICAgIFtjbGFzcy5lcnJvcl09XCJlcnJvckluZGV4ID09PSBxdWVzdGlvbkluZGV4XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgIDxoMyBjbGFzcz1cInF1ZXN0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjb3VudGVyXCI+e3txdWVzdGlvbkluZGV4KzF9fS4gPHNwYW4gY2xhc3M9XCJyZXF1aXJlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInF1ZXN0aW9uLnJlcXVpcmVkXCI+Kjwvc3Bhbj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwidGV4dFwiIHR5cGU9XCJ0ZXh0XCIgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyW3F1ZXN0aW9uLnR5cGVdXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJxdWVzdGlvbi5sYWJlbFwicmVhZG9ubHk+XHJcbiAgICAgICAgICAgICAgICA8L2gzPlxyXG4gICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwibGlzdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIHF1ZXN0aW9uPy5vcHRpb25zOyBsZXQgb3BJbmRleCA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtY3MtY2hlY2tib3ggW29uZUxpbmVdPVwidHJ1ZVwiIFtyZWFkb25seV09XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgWyhuZ01vZGVsKV09XCJvcHRpb24ubGFiZWxcIiB0eXBlPVwidGV4dFwiIHBsYWNlaG9sZGVyPVwiT3B0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWRdPVwiJ2NoZWNrYm94LScgKyAnJyArIHF1ZXN0aW9uSW5kZXggKyAnJyArIG9wSW5kZXhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cImFkZE9wdGlvbihxdWVzdGlvbkluZGV4LG9wSW5kZXgscXVlc3Rpb24udHlwZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXlkb3duLmJhY2tzcGFjZSk9XCJkZWxldGVPbkJhY2tzcGFjZShxdWVzdGlvbkluZGV4LG9wSW5kZXgscXVlc3Rpb24udHlwZSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hcHAtY3MtY2hlY2tib3g+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGJ1dHRvbiBjbGFzcz1cImNsb3NlXCIgKGNsaWNrKT1cImRlbGV0ZU9wdGlvbihxdWVzdGlvbkluZGV4LG9wSW5kZXgscXVlc3Rpb24udHlwZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJhY3RpdmVRdWVzdGlvbkluZGV4ID09PSBxdWVzdGlvbkluZGV4ICYmIHF1ZXN0aW9uPy5vcHRpb25zLmxlbmd0aCA+IDFcIj48aVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTBkOzwvaT48L2J1dHRvbj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIDxsaSAqbmdJZj1cImFjdGl2ZVF1ZXN0aW9uSW5kZXggPT09IHF1ZXN0aW9uSW5kZXhcIiBjbGFzcz1cImFkZC1uZXdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1jcy1jaGVja2JveCBbb25lTGluZV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhZGRPcHRpb24ocXVlc3Rpb25JbmRleCxxdWVzdGlvbj8ub3B0aW9ucz8ubGVuZ3RoLTEscXVlc3Rpb24udHlwZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInRydWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBbZGlzYWJsZWRdPVwidHJ1ZVwiIHR5cGU9XCJ0ZXh0XCIgcGxhY2Vob2xkZXI9XCJBZGQgbW9yZSBvcHRpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hcHAtY3MtY2hlY2tib3g+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9saT4gLS0+XHJcbiAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb290ZXJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsZWZ0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGFwcC1jcy1jaGVja2JveCBbbmdWYWx1ZV09XCJxdWVzdGlvbi5yZXF1aXJlZFwiIChuZ1ZhbHVlQ2hhbmdlKT1cInF1ZXN0aW9uLnJlcXVpcmVkID0gJGV2ZW50XCI+SXNcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ8L2FwcC1jcy1jaGVja2JveD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxsaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gW2FwcFRvb2x0aXBdPVwiJ0FkZCBuZXcnXCIgcGxhY2VtZW50PVwiYm90dG9tXCIgZGVsYXk9XCIwXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImJsYW5rQ2xvbmUocXVlc3Rpb24udHlwZSxxdWVzdGlvbkluZGV4KTskZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5MTU7PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZGVsZXRlXCIgW2FwcFRvb2x0aXBdPVwiJ0RlbGV0ZSdcIiBwbGFjZW1lbnQ9XCJib3R0b21cIiBkZWxheT1cIjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmVRdWVzdGlvbihxdWVzdGlvbkluZGV4KTskZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5MjM7PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGxpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBbYXBwVG9vbHRpcF09XCInQ29weSdcIiBwbGFjZW1lbnQ9XCJib3R0b21cIiBkZWxheT1cIjBcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2xvbmVRdWVzdGlvbihxdWVzdGlvbkluZGV4KTskZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5YjY7PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiY2hlY2twb2ludHMtcXVlc3Rpb25zLWJsb2Nrc1wiIFtjbGFzcy5hY3RpdmVdPVwidHJ1ZVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXJcIj5cclxuICAgICAgICAgICAgPGgzIGNsYXNzPVwicXVlc3Rpb25cIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY291bnRlclwiPjIuIDxzcGFuIGNsYXNzPVwicmVxdWlyZWRcIj4qPC9zcGFuPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cInRleHRcIiB0eXBlPVwidGV4dFwiIHBsYWNlaG9sZGVyPVwiVHlwZSB5b3VyIHF1ZXN0aW9uIGhlcmUgW1NlbGVjdCBCb3hdXCIgdmFsdWU9XCJIYXMgdGhlIHByZXZpb3VzIGF1ZGl0IHJlcG9ydCBiZWVuIGNsb3NlZCBvdXQ/XCI+XHJcbiAgICAgICAgICAgIDwvaDM+XHJcbiAgICAgICAgICAgIDx1bCBjbGFzcz1cImxpc3RcIj5cclxuICAgICAgICAgICAgICAgIDxsaT5cclxuICAgICAgICAgICAgICAgICAgICA8YXBwLWNzLXJhZGlvIFtvbmVMaW5lXT1cInRydWVcIj48c3Bhbj5ZZXM8L3NwYW4+PC9hcHAtY3MtcmFkaW8+IDxidXR0b24gY2xhc3M9XCJjbG9zZVwiPjxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTBkOzwvaT48L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGk+XHJcbiAgICAgICAgICAgICAgICAgICAgPGFwcC1jcy1yYWRpbyBbb25lTGluZV09XCJ0cnVlXCI+PHNwYW4+Tm88L3NwYW4+PC9hcHAtY3MtcmFkaW8+PGJ1dHRvbiBjbGFzcz1cImNsb3NlXCI+PGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5MGQ7PC9pPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaT5cclxuICAgICAgICAgICAgICAgICAgICA8YXBwLWNzLXJhZGlvIFtvbmVMaW5lXT1cInRydWVcIj48c3Bhbj5OL0E8L3NwYW4+PC9hcHAtY3MtcmFkaW8+PGJ1dHRvbiBjbGFzcz1cImNsb3NlXCI+PGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5MGQ7PC9pPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaT5cclxuICAgICAgICAgICAgICAgICAgICA8YXBwLWNzLXJhZGlvIFtvbmVMaW5lXT1cInRydWVcIj48aW5wdXQgdHlwZT1cInRleHRcIiBwbGFjZWhvbGRlcj1cIk9wdGlvblwiPjwvYXBwLWNzLXJhZGlvPiA8YnV0dG9uIGNsYXNzPVwiY2xvc2VcIj48aSBjbGFzcz1cImljb25zXCI+JiN4ZTkwZDs8L2k+PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb290ZXJcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxlZnRcIj5cclxuICAgICAgICAgICAgICAgIDxhcHAtY3MtY2hlY2tib3ggW25nVmFsdWVdPVwicXVlc3Rpb24ucmVxdWlyZWRcIiAobmdWYWx1ZUNoYW5nZSk9XCJxdWVzdGlvbi5yZXF1aXJlZCA9ICRldmVudFwiPklzIHJlcXVpcmVkPC9hcHAtY3MtY2hlY2tib3g+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmlnaHRcIj5cclxuICAgICAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgICAgICA8bGk+PGJ1dHRvbj48aSBjbGFzcz1cImljb25zXCI+JiN4ZTkxNTs8L2k+PC9idXR0b24+PC9saT5cclxuICAgICAgICAgICAgICAgICAgICA8bGk+PGJ1dHRvbj48aSBjbGFzcz1cImljb25zXCI+JiN4ZTkyMzs8L2k+PC9idXR0b24+PC9saT5cclxuICAgICAgICAgICAgICAgICAgICA8bGk+PGJ1dHRvbj48aSBjbGFzcz1cImljb25zXCI+JiN4ZTliNjs8L2k+PC9idXR0b24+PC9saT5cclxuICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+IC0tPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8IS0tIDxidXR0b24gY2xhc3M9XCJidG4tYWRkLW5ld1wiIHR5cGU9XCJidXR0b25cIiBhcHBQb3BvdmVyIChjbGljayk9XCJuZXdDaGVja3BvaW50LnBvcG92ZXIoKVwiIHBsYWNlbWVudD1cImxlZnRcIj4rIEFkZCBhIG5ld1xyXG4gICAgICAgIGNoZWNrcG9pbnQ8L2J1dHRvbj4gLS0+XHJcbiAgICA8IS0tIDxhcHAtcG9wb3ZlciAjbmV3Q2hlY2twb2ludD5cclxuXHJcbiAgICAgICAgPHVsIGNsYXNzPVwiY2hlY2twb2ludC10eXBlLWxpc3RcIj5cclxuICAgICAgICAgICAgPGxpPjxzcGFuIGNsYXNzPVwiY2hlY2twb2ludC10eXBlLWxpc3QtdGl0bGVcIj5BZGQgQ2hlY2twb2ludHM8L3NwYW4+PC9saT5cclxuICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCB0eXBlIG9mIHF1ZXN0aW9uVHlwZUxpc3RcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cImFkZFF1ZXN0aW9uKHR5cGUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiIFtpbm5lckhUTUxdPVwidHlwZS5pY29uXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3t0eXBlPy50ZXh0fX1cclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9saT5cclxuICAgICAgICA8L3VsPlxyXG4gICAgPC9hcHAtcG9wb3Zlcj4gLS0+XHJcbjwvZGl2PlxyXG4iXX0=
@@ -1,5 +1,5 @@
1
1
  import cloneDeep from 'lodash-es/cloneDeep';
2
- import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
2
+ import { Component, EventEmitter, Input, Output, ViewChild, } from '@angular/core';
3
3
  import * as i0 from "@angular/core";
4
4
  import * as i1 from "./../../../ui-kit/snack-bar/snack-bar.service";
5
5
  import * as i2 from "../checkpoints-policy-questions/checkpoints-policy-questions.component";
@@ -16,14 +16,13 @@ export class CheckpointsPolicyContainerComponent {
16
16
  ngOnInit() {
17
17
  this.checkpointData = cloneDeep(this.checkpointData);
18
18
  if (this.checkpointData.length === 0) {
19
- this.checkpointData = [{
20
- "ranswer": "",
21
- "question": "",
22
- "answers": [
23
- "",
24
- ""
25
- ]
26
- }];
19
+ this.checkpointData = [
20
+ {
21
+ ranswer: '',
22
+ question: '',
23
+ answers: ['', ''],
24
+ },
25
+ ];
27
26
  }
28
27
  setTimeout(() => {
29
28
  this.animation = false;
@@ -42,7 +41,6 @@ export class CheckpointsPolicyContainerComponent {
42
41
  delete element._id;
43
42
  }
44
43
  });
45
- console.log(this.requiredPoint, this.checkpointData);
46
44
  if (this.requiredPoint > this.checkpointData.length) {
47
45
  this.snackbarService.show(`The points required to attest this policy cannot exceed ${this.checkpointData.length}.`);
48
46
  }
@@ -51,7 +49,10 @@ export class CheckpointsPolicyContainerComponent {
51
49
  this.snackbarService.show(`The points required to attest this policy cannot be 0`);
52
50
  }
53
51
  else {
54
- this.saveCheckPoint.emit({ requiredPoint: this.requiredPoint, checkpointDetails: this.checkpointData });
52
+ this.saveCheckPoint.emit({
53
+ requiredPoint: this.requiredPoint,
54
+ checkpointDetails: this.checkpointData,
55
+ });
55
56
  }
56
57
  }
57
58
  }
@@ -73,4 +74,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
73
74
  }], checkpointData: [{
74
75
  type: Input
75
76
  }] } });
76
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2twb2ludHMtcG9saWN5LWNvbnRhaW5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi9zaGFyZWRDb21wb25lbnRzL2NoZWNrcG9pbnQtcG9saWN5L2NoZWNrcG9pbnRzLXBvbGljeS1jb250YWluZXIvY2hlY2twb2ludHMtcG9saWN5LWNvbnRhaW5lci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi9zaGFyZWRDb21wb25lbnRzL2NoZWNrcG9pbnQtcG9saWN5L2NoZWNrcG9pbnRzLXBvbGljeS1jb250YWluZXIvY2hlY2twb2ludHMtcG9saWN5LWNvbnRhaW5lci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFRLFNBQVMsTUFBTyxxQkFBcUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7QUFRMUYsTUFBTSxPQUFPLG1DQUFtQztJQUU5QyxZQUFvQixlQUFnQztRQUFoQyxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFEcEQsY0FBUyxHQUFHLElBQUksQ0FBQztRQUVQLG9CQUFlLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNyQyxtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFFckMsa0JBQWEsR0FBRyxDQUFDLENBQUM7UUFDbEIsbUJBQWMsR0FBUSxFQUFFLENBQUM7SUFMc0IsQ0FBQztJQU96RCxRQUFRO1FBQ04sSUFBSSxDQUFDLGNBQWMsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3JELElBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ25DLElBQUksQ0FBQyxjQUFjLEdBQUcsQ0FBQztvQkFDckIsU0FBUyxFQUFFLEVBQUU7b0JBQ2IsVUFBVSxFQUFFLEVBQUU7b0JBQ2QsU0FBUyxFQUFFO3dCQUNULEVBQUU7d0JBQ0YsRUFBRTtxQkFDSDtpQkFDRixDQUFDLENBQUE7U0FDSDtRQUNELFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUN6QixDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDUixJQUFHLElBQUksQ0FBQyxhQUFhLEtBQUssQ0FBQyxFQUFDO1lBQzFCLElBQUksQ0FBQyxhQUFhLEdBQUcsQ0FBQyxDQUFDO1NBQ3hCO0lBQ0gsQ0FBQztJQUdELElBQUk7UUFDSCxJQUFJLENBQUMsbUNBQW1DLENBQUMsY0FBYyxFQUFFLENBQUE7SUFDMUQsQ0FBQztJQUNELGFBQWEsQ0FBQyxLQUFTO1FBQ3BCLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO1FBQzVCLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBVyxFQUFFLEVBQUU7WUFDM0MsSUFBRyxPQUFPLEVBQUUsR0FBRyxFQUFDO2dCQUNkLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQzthQUNwQjtRQUVGLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUNyRCxJQUFHLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUM7WUFDL0MsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsMkRBQTJELElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQTtTQUN0SDthQUFJO1lBQ0gsSUFBRyxJQUFJLENBQUMsYUFBYSxHQUFHLENBQUMsRUFBQztnQkFDekIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsdURBQXVELENBQUMsQ0FBQTthQUNsRjtpQkFBSTtnQkFDSixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFFLGlCQUFpQixFQUFHLElBQUksQ0FBQyxjQUFjLEVBQUMsQ0FBQyxDQUFDO2FBQ3ZHO1NBRUY7SUFFSixDQUFDOztnSUFyRFUsbUNBQW1DO29IQUFuQyxtQ0FBbUMsNFdDVmhELGcwQ0FrQ0E7MkZEeEJhLG1DQUFtQztrQkFML0MsU0FBUzsrQkFDRSxrQ0FBa0M7c0dBT2xDLGVBQWU7c0JBQXhCLE1BQU07Z0JBQ0csY0FBYztzQkFBdkIsTUFBTTtnQkFDb0MsbUNBQW1DO3NCQUE3RSxTQUFTO3VCQUFDLFlBQVksRUFBQyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBQ2hDLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNuYWNrQmFyU2VydmljZSB9IGZyb20gJy4vLi4vLi4vLi4vdWkta2l0L3NuYWNrLWJhci9zbmFjay1iYXIuc2VydmljZSc7XHJcbmltcG9ydCAgY2xvbmVEZWVwICBmcm9tICdsb2Rhc2gtZXMvY2xvbmVEZWVwJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENoZWNrcG9pbnRzUG9saWN5UXVlc3Rpb25zQ29tcG9uZW50IH0gZnJvbSAnLi4vY2hlY2twb2ludHMtcG9saWN5LXF1ZXN0aW9ucy9jaGVja3BvaW50cy1wb2xpY3ktcXVlc3Rpb25zLmNvbXBvbmVudCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1jaGVja3BvaW50cy1wb2xpY3ktY29udGFpbmVyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vY2hlY2twb2ludHMtcG9saWN5LWNvbnRhaW5lci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vY2hlY2twb2ludHMtcG9saWN5LWNvbnRhaW5lci5jb21wb25lbnQubGVzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDaGVja3BvaW50c1BvbGljeUNvbnRhaW5lckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgYW5pbWF0aW9uID0gdHJ1ZTtcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHNuYWNrYmFyU2VydmljZTogU25hY2tCYXJTZXJ2aWNlKSB7IH1cclxuICBAT3V0cHV0KCkgY2xvc2VDaGVja1BvaW50ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBzYXZlQ2hlY2tQb2ludCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAVmlld0NoaWxkKCdjaGVja3BvaW50Jyx7IHN0YXRpYzogZmFsc2UgfSkgQ2hlY2twb2ludHNQb2xpY3lRdWVzdGlvbnNDb21wb25lbnQhOiBDaGVja3BvaW50c1BvbGljeVF1ZXN0aW9uc0NvbXBvbmVudDtcclxuICBASW5wdXQoKSByZXF1aXJlZFBvaW50ID0gMDtcclxuICBASW5wdXQoKSBjaGVja3BvaW50RGF0YTogYW55ID0gW107XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5jaGVja3BvaW50RGF0YSA9IGNsb25lRGVlcCh0aGlzLmNoZWNrcG9pbnREYXRhKTtcclxuICAgIGlmKHRoaXMuY2hlY2twb2ludERhdGEubGVuZ3RoID09PSAwICl7XHJcbiAgICAgIHRoaXMuY2hlY2twb2ludERhdGEgPSBbe1xyXG4gICAgICAgIFwicmFuc3dlclwiOiBcIlwiLFxyXG4gICAgICAgIFwicXVlc3Rpb25cIjogXCJcIixcclxuICAgICAgICBcImFuc3dlcnNcIjogW1xyXG4gICAgICAgICAgXCJcIixcclxuICAgICAgICAgIFwiXCJcclxuICAgICAgICBdXHJcbiAgICAgIH1dXHJcbiAgICB9XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5hbmltYXRpb24gPSBmYWxzZTtcclxuICAgIH0sIDUwMCk7XHJcbiAgICBpZih0aGlzLnJlcXVpcmVkUG9pbnQgPT09IDApe1xyXG4gICAgICB0aGlzLnJlcXVpcmVkUG9pbnQgPSAxO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIG5leHQoKXtcclxuICAgdGhpcy5DaGVja3BvaW50c1BvbGljeVF1ZXN0aW9uc0NvbXBvbmVudC5zYXZlQ2hlY2tQb2ludCgpXHJcbiAgfVxyXG4gIHNhdmVRdWVzdGlvbnMoZXZlbnQ6YW55KXtcclxuICAgICB0aGlzLmNoZWNrcG9pbnREYXRhID0gZXZlbnQ7XHJcbiAgICAgdGhpcy5jaGVja3BvaW50RGF0YS5mb3JFYWNoKChlbGVtZW50OmFueSkgPT4ge1xyXG4gICAgICBpZihlbGVtZW50Py5faWQpe1xyXG4gICAgICAgIGRlbGV0ZSBlbGVtZW50Ll9pZDtcclxuICAgICAgfVxyXG5cclxuICAgICB9KTtcclxuICAgICBjb25zb2xlLmxvZyh0aGlzLnJlcXVpcmVkUG9pbnQsIHRoaXMuY2hlY2twb2ludERhdGEpO1xyXG4gICAgIGlmKHRoaXMucmVxdWlyZWRQb2ludCA+IHRoaXMuY2hlY2twb2ludERhdGEubGVuZ3RoKXtcclxuICAgICAgICAgdGhpcy5zbmFja2JhclNlcnZpY2Uuc2hvdyhgVGhlIHBvaW50cyByZXF1aXJlZCB0byBhdHRlc3QgdGhpcyBwb2xpY3kgY2Fubm90IGV4Y2VlZCAke3RoaXMuY2hlY2twb2ludERhdGEubGVuZ3RofS5gKVxyXG4gICAgIH1lbHNle1xyXG4gICAgICAgaWYodGhpcy5yZXF1aXJlZFBvaW50IDwgMSl7XHJcbiAgICAgICAgdGhpcy5zbmFja2JhclNlcnZpY2Uuc2hvdyhgVGhlIHBvaW50cyByZXF1aXJlZCB0byBhdHRlc3QgdGhpcyBwb2xpY3kgY2Fubm90IGJlIDBgKVxyXG4gICAgICAgfWVsc2V7XHJcbiAgICAgICAgdGhpcy5zYXZlQ2hlY2tQb2ludC5lbWl0KHtyZXF1aXJlZFBvaW50OiB0aGlzLnJlcXVpcmVkUG9pbnQsIGNoZWNrcG9pbnREZXRhaWxzIDogdGhpcy5jaGVja3BvaW50RGF0YX0pO1xyXG4gICAgICAgfVxyXG5cclxuICAgICB9XHJcblxyXG4gIH1cclxufVxyXG4iLCI8IS0tIDxwPmNoZWNrcG9pbnRzIHdvcmtzITwvcD4gLS0+XHJcbjxkaXYgY2xhc3M9XCJjaGVja3BvaW50c1wiIFtjbGFzcy5hbmltYXRlXT1cImFuaW1hdGlvblwiPlxyXG4gIDxkaXZcclxuICAgIGNsYXNzPVwiY2hlY2twb2ludHMtaGVhZCB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktYmV0d2VlbiB2eC1wbC00IHZ4LXByLTRcIlxyXG4gID5cclxuICAgIDxkaXYgY2xhc3M9XCJ2eC1mcy0xNCB2eC1mdy01MDAgdngtbGFiZWwtdHh0XCI+QWRkIFF1ZXN0aW9uczwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJjaGVja3BvaW50cy1ib2R5XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2hlY2twb2ludHMtYm9keS1pbm5lciB2eC1tYi00XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjaGVja3BvaW50cy1ib2R5LWluc2lkZVwiPlxyXG4gICAgICAgIDwhLS0gPGFwcC1jaGVja3BvaW50cy1saXN0PjwvYXBwLWNoZWNrcG9pbnRzLWxpc3Q+IC0tPlxyXG4gICAgICAgIDxhcHAtY2hlY2twb2ludHMtcG9saWN5LXF1ZXN0aW9uc1xyXG4gICAgICAgICAgWyhyZXF1aXJlZFBvaW50KV09XCJyZXF1aXJlZFBvaW50XCJcclxuICAgICAgICAgIChjaGFuZ2VNYXgpPVwicmVxdWlyZWRQb2ludCA9ICRldmVudFwiXHJcbiAgICAgICAgICAjY2hlY2twb2ludFxyXG4gICAgICAgICAgW2NoZWNrcG9pbnREZXRhaWxzXT1cImNoZWNrcG9pbnREYXRhXCJcclxuICAgICAgICAgIChzYXZlVmFsaWRRdWVzdGlvbnMpPVwic2F2ZVF1ZXN0aW9ucygkZXZlbnQpXCJcclxuICAgICAgICA+PC9hcHAtY2hlY2twb2ludHMtcG9saWN5LXF1ZXN0aW9ucz5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiY2hlY2twb2ludHMtZm9vdGVyXCI+XHJcbiAgICAgIDxhcHAtY2hlY2twb2ludC1mbG9hdGluZy1iYXJcclxuICAgICAgICBbaXNQb2xpY3lDaGVja3BvaW50XT1cInRydWVcIlxyXG4gICAgICAgIChjbG9zZUxpc3QpPVwiY2xvc2VDaGVja1BvaW50LmVtaXQoKVwiXHJcbiAgICAgICAgW3BsdXJhbFRleHRdPVwiJ1F1ZXN0aW9ucyBzZWxlY3RlZCdcIlxyXG4gICAgICAgIFtzaW5ndWxhclRleHRdPVwiJ1F1ZXN0aW9uIHNlbGVjdGVkJ1wiXHJcbiAgICAgICAgKHNhdmVMaXN0KT1cIm5leHQoKVwiXHJcbiAgICAgICAgWyhyZXF1aXJlZFBvaW50KV09XCJyZXF1aXJlZFBvaW50XCJcclxuICAgICAgICBbY291bnRdPVwiY2hlY2twb2ludERhdGE/Lmxlbmd0aFwiXHJcbiAgICAgID48L2FwcC1jaGVja3BvaW50LWZsb2F0aW5nLWJhcj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
77
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2twb2ludHMtcG9saWN5LWNvbnRhaW5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi9zaGFyZWRDb21wb25lbnRzL2NoZWNrcG9pbnQtcG9saWN5L2NoZWNrcG9pbnRzLXBvbGljeS1jb250YWluZXIvY2hlY2twb2ludHMtcG9saWN5LWNvbnRhaW5lci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi9zaGFyZWRDb21wb25lbnRzL2NoZWNrcG9pbnQtcG9saWN5L2NoZWNrcG9pbnRzLXBvbGljeS1jb250YWluZXIvY2hlY2twb2ludHMtcG9saWN5LWNvbnRhaW5lci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLFNBQVMsTUFBTSxxQkFBcUIsQ0FBQztBQUM1QyxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUNOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQzs7Ozs7QUFRdkIsTUFBTSxPQUFPLG1DQUFtQztJQUU5QyxZQUFvQixlQUFnQztRQUFoQyxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFEcEQsY0FBUyxHQUFHLElBQUksQ0FBQztRQUVQLG9CQUFlLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNyQyxtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFHckMsa0JBQWEsR0FBRyxDQUFDLENBQUM7UUFDbEIsbUJBQWMsR0FBUSxFQUFFLENBQUM7SUFOcUIsQ0FBQztJQVF4RCxRQUFRO1FBQ04sSUFBSSxDQUFDLGNBQWMsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3JELElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ3BDLElBQUksQ0FBQyxjQUFjLEdBQUc7Z0JBQ3BCO29CQUNFLE9BQU8sRUFBRSxFQUFFO29CQUNYLFFBQVEsRUFBRSxFQUFFO29CQUNaLE9BQU8sRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUM7aUJBQ2xCO2FBQ0YsQ0FBQztTQUNIO1FBQ0QsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNSLElBQUksSUFBSSxDQUFDLGFBQWEsS0FBSyxDQUFDLEVBQUU7WUFDNUIsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLENBQUM7U0FDeEI7SUFDSCxDQUFDO0lBRUQsSUFBSTtRQUNGLElBQUksQ0FBQyxtQ0FBbUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUM1RCxDQUFDO0lBQ0QsYUFBYSxDQUFDLEtBQVU7UUFDdEIsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7UUFDNUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFZLEVBQUUsRUFBRTtZQUMzQyxJQUFJLE9BQU8sRUFBRSxHQUFHLEVBQUU7Z0JBQ2hCLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQzthQUNwQjtRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFO1lBQ25ELElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUN2QiwyREFBMkQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEdBQUcsQ0FDekYsQ0FBQztTQUNIO2FBQU07WUFDTCxJQUFJLElBQUksQ0FBQyxhQUFhLEdBQUcsQ0FBQyxFQUFFO2dCQUMxQixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FDdkIsdURBQXVELENBQ3hELENBQUM7YUFDSDtpQkFBTTtnQkFDTCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQztvQkFDdkIsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhO29CQUNqQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsY0FBYztpQkFDdkMsQ0FBQyxDQUFDO2FBQ0o7U0FDRjtJQUNILENBQUM7O2dJQXZEVSxtQ0FBbUM7b0hBQW5DLG1DQUFtQyw0V0NqQmhELGcwQ0FrQ0E7MkZEakJhLG1DQUFtQztrQkFML0MsU0FBUzsrQkFDRSxrQ0FBa0M7c0dBT2xDLGVBQWU7c0JBQXhCLE1BQU07Z0JBQ0csY0FBYztzQkFBdkIsTUFBTTtnQkFFUCxtQ0FBbUM7c0JBRGxDLFNBQVM7dUJBQUMsWUFBWSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFFakMsYUFBYTtzQkFBckIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU25hY2tCYXJTZXJ2aWNlIH0gZnJvbSAnLi8uLi8uLi8uLi91aS1raXQvc25hY2stYmFyL3NuYWNrLWJhci5zZXJ2aWNlJztcclxuaW1wb3J0IGNsb25lRGVlcCBmcm9tICdsb2Rhc2gtZXMvY2xvbmVEZWVwJztcclxuaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIElucHV0LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgVmlld0NoaWxkLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDaGVja3BvaW50c1BvbGljeVF1ZXN0aW9uc0NvbXBvbmVudCB9IGZyb20gJy4uL2NoZWNrcG9pbnRzLXBvbGljeS1xdWVzdGlvbnMvY2hlY2twb2ludHMtcG9saWN5LXF1ZXN0aW9ucy5jb21wb25lbnQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtY2hlY2twb2ludHMtcG9saWN5LWNvbnRhaW5lcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NoZWNrcG9pbnRzLXBvbGljeS1jb250YWluZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2NoZWNrcG9pbnRzLXBvbGljeS1jb250YWluZXIuY29tcG9uZW50Lmxlc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIENoZWNrcG9pbnRzUG9saWN5Q29udGFpbmVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBhbmltYXRpb24gPSB0cnVlO1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc25hY2tiYXJTZXJ2aWNlOiBTbmFja0JhclNlcnZpY2UpIHt9XHJcbiAgQE91dHB1dCgpIGNsb3NlQ2hlY2tQb2ludCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgc2F2ZUNoZWNrUG9pbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQFZpZXdDaGlsZCgnY2hlY2twb2ludCcsIHsgc3RhdGljOiBmYWxzZSB9KVxyXG4gIENoZWNrcG9pbnRzUG9saWN5UXVlc3Rpb25zQ29tcG9uZW50ITogQ2hlY2twb2ludHNQb2xpY3lRdWVzdGlvbnNDb21wb25lbnQ7XHJcbiAgQElucHV0KCkgcmVxdWlyZWRQb2ludCA9IDA7XHJcbiAgQElucHV0KCkgY2hlY2twb2ludERhdGE6IGFueSA9IFtdO1xyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuY2hlY2twb2ludERhdGEgPSBjbG9uZURlZXAodGhpcy5jaGVja3BvaW50RGF0YSk7XHJcbiAgICBpZiAodGhpcy5jaGVja3BvaW50RGF0YS5sZW5ndGggPT09IDApIHtcclxuICAgICAgdGhpcy5jaGVja3BvaW50RGF0YSA9IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICByYW5zd2VyOiAnJyxcclxuICAgICAgICAgIHF1ZXN0aW9uOiAnJyxcclxuICAgICAgICAgIGFuc3dlcnM6IFsnJywgJyddLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIF07XHJcbiAgICB9XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5hbmltYXRpb24gPSBmYWxzZTtcclxuICAgIH0sIDUwMCk7XHJcbiAgICBpZiAodGhpcy5yZXF1aXJlZFBvaW50ID09PSAwKSB7XHJcbiAgICAgIHRoaXMucmVxdWlyZWRQb2ludCA9IDE7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZXh0KCkge1xyXG4gICAgdGhpcy5DaGVja3BvaW50c1BvbGljeVF1ZXN0aW9uc0NvbXBvbmVudC5zYXZlQ2hlY2tQb2ludCgpO1xyXG4gIH1cclxuICBzYXZlUXVlc3Rpb25zKGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMuY2hlY2twb2ludERhdGEgPSBldmVudDtcclxuICAgIHRoaXMuY2hlY2twb2ludERhdGEuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgIGlmIChlbGVtZW50Py5faWQpIHtcclxuICAgICAgICBkZWxldGUgZWxlbWVudC5faWQ7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgaWYgKHRoaXMucmVxdWlyZWRQb2ludCA+IHRoaXMuY2hlY2twb2ludERhdGEubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMuc25hY2tiYXJTZXJ2aWNlLnNob3coXHJcbiAgICAgICAgYFRoZSBwb2ludHMgcmVxdWlyZWQgdG8gYXR0ZXN0IHRoaXMgcG9saWN5IGNhbm5vdCBleGNlZWQgJHt0aGlzLmNoZWNrcG9pbnREYXRhLmxlbmd0aH0uYFxyXG4gICAgICApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMucmVxdWlyZWRQb2ludCA8IDEpIHtcclxuICAgICAgICB0aGlzLnNuYWNrYmFyU2VydmljZS5zaG93KFxyXG4gICAgICAgICAgYFRoZSBwb2ludHMgcmVxdWlyZWQgdG8gYXR0ZXN0IHRoaXMgcG9saWN5IGNhbm5vdCBiZSAwYFxyXG4gICAgICAgICk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zYXZlQ2hlY2tQb2ludC5lbWl0KHtcclxuICAgICAgICAgIHJlcXVpcmVkUG9pbnQ6IHRoaXMucmVxdWlyZWRQb2ludCxcclxuICAgICAgICAgIGNoZWNrcG9pbnREZXRhaWxzOiB0aGlzLmNoZWNrcG9pbnREYXRhLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjwhLS0gPHA+Y2hlY2twb2ludHMgd29ya3MhPC9wPiAtLT5cclxuPGRpdiBjbGFzcz1cImNoZWNrcG9pbnRzXCIgW2NsYXNzLmFuaW1hdGVdPVwiYW5pbWF0aW9uXCI+XHJcbiAgPGRpdlxyXG4gICAgY2xhc3M9XCJjaGVja3BvaW50cy1oZWFkIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1iZXR3ZWVuIHZ4LXBsLTQgdngtcHItNFwiXHJcbiAgPlxyXG4gICAgPGRpdiBjbGFzcz1cInZ4LWZzLTE0IHZ4LWZ3LTUwMCB2eC1sYWJlbC10eHRcIj5BZGQgUXVlc3Rpb25zPC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cImNoZWNrcG9pbnRzLWJvZHlcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjaGVja3BvaW50cy1ib2R5LWlubmVyIHZ4LW1iLTRcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNoZWNrcG9pbnRzLWJvZHktaW5zaWRlXCI+XHJcbiAgICAgICAgPCEtLSA8YXBwLWNoZWNrcG9pbnRzLWxpc3Q+PC9hcHAtY2hlY2twb2ludHMtbGlzdD4gLS0+XHJcbiAgICAgICAgPGFwcC1jaGVja3BvaW50cy1wb2xpY3ktcXVlc3Rpb25zXHJcbiAgICAgICAgICBbKHJlcXVpcmVkUG9pbnQpXT1cInJlcXVpcmVkUG9pbnRcIlxyXG4gICAgICAgICAgKGNoYW5nZU1heCk9XCJyZXF1aXJlZFBvaW50ID0gJGV2ZW50XCJcclxuICAgICAgICAgICNjaGVja3BvaW50XHJcbiAgICAgICAgICBbY2hlY2twb2ludERldGFpbHNdPVwiY2hlY2twb2ludERhdGFcIlxyXG4gICAgICAgICAgKHNhdmVWYWxpZFF1ZXN0aW9ucyk9XCJzYXZlUXVlc3Rpb25zKCRldmVudClcIlxyXG4gICAgICAgID48L2FwcC1jaGVja3BvaW50cy1wb2xpY3ktcXVlc3Rpb25zPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJjaGVja3BvaW50cy1mb290ZXJcIj5cclxuICAgICAgPGFwcC1jaGVja3BvaW50LWZsb2F0aW5nLWJhclxyXG4gICAgICAgIFtpc1BvbGljeUNoZWNrcG9pbnRdPVwidHJ1ZVwiXHJcbiAgICAgICAgKGNsb3NlTGlzdCk9XCJjbG9zZUNoZWNrUG9pbnQuZW1pdCgpXCJcclxuICAgICAgICBbcGx1cmFsVGV4dF09XCInUXVlc3Rpb25zIHNlbGVjdGVkJ1wiXHJcbiAgICAgICAgW3Npbmd1bGFyVGV4dF09XCInUXVlc3Rpb24gc2VsZWN0ZWQnXCJcclxuICAgICAgICAoc2F2ZUxpc3QpPVwibmV4dCgpXCJcclxuICAgICAgICBbKHJlcXVpcmVkUG9pbnQpXT1cInJlcXVpcmVkUG9pbnRcIlxyXG4gICAgICAgIFtjb3VudF09XCJjaGVja3BvaW50RGF0YT8ubGVuZ3RoXCJcclxuICAgICAgPjwvYXBwLWNoZWNrcG9pbnQtZmxvYXRpbmctYmFyPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
@@ -30,8 +30,7 @@ export class CheckpointsPolicyQuestionsComponent {
30
30
  });
31
31
  }
32
32
  }
33
- ngOnInit() {
34
- }
33
+ ngOnInit() { }
35
34
  /**
36
35
  * Changes active question index
37
36
  * @param index
@@ -48,9 +47,7 @@ export class CheckpointsPolicyQuestionsComponent {
48
47
  const QUESTION = {
49
48
  ranswer: '',
50
49
  question: '',
51
- answers: [
52
- '', ''
53
- ]
50
+ answers: ['', ''],
54
51
  };
55
52
  this.checkPointQuestions.splice(index + 1, 0, QUESTION);
56
53
  }
@@ -64,10 +61,9 @@ export class CheckpointsPolicyQuestionsComponent {
64
61
  }
65
62
  deleteOption(questionIndex, optionIndex) {
66
63
  this.checkPointQuestions[questionIndex].answers.splice(optionIndex, 1);
67
- this.focusAnOption(questionIndex, (optionIndex - 1));
64
+ this.focusAnOption(questionIndex, optionIndex - 1);
68
65
  }
69
66
  focusAnOption(questionIndex, optionIndex) {
70
- console.log("focus", questionIndex, optionIndex);
71
67
  setTimeout(() => {
72
68
  const EL = document.getElementById('option' + '-' + questionIndex + '' + optionIndex);
73
69
  if (EL) {
@@ -76,7 +72,9 @@ export class CheckpointsPolicyQuestionsComponent {
76
72
  }, 10);
77
73
  }
78
74
  deleteOnBackspace(questionIndex, optionIndex) {
79
- if (this.checkPointQuestions[questionIndex].answers?.length > 2 && this.checkPointQuestions[questionIndex].answers[optionIndex].trim().length === 0) {
75
+ if (this.checkPointQuestions[questionIndex].answers?.length > 2 &&
76
+ this.checkPointQuestions[questionIndex].answers[optionIndex].trim()
77
+ .length === 0) {
80
78
  this.deleteOption(questionIndex, optionIndex);
81
79
  }
82
80
  }
@@ -86,9 +84,7 @@ export class CheckpointsPolicyQuestionsComponent {
86
84
  const QUESTION = {
87
85
  ranswer: '',
88
86
  question: '',
89
- answers: [
90
- '', ''
91
- ]
87
+ answers: ['', ''],
92
88
  };
93
89
  this.checkPointQuestions.push(QUESTION);
94
90
  this.requiredPoint = 1;
@@ -98,7 +94,8 @@ export class CheckpointsPolicyQuestionsComponent {
98
94
  }
99
95
  selectRightAnswer(evt, index, answerIndex) {
100
96
  if (evt) {
101
- this.checkPointQuestions[index].ranswer = this.checkPointQuestions[index][answerIndex];
97
+ this.checkPointQuestions[index].ranswer =
98
+ this.checkPointQuestions[index][answerIndex];
102
99
  this.rightAnswerIndex[index] = answerIndex;
103
100
  this.reValidate(index);
104
101
  }
@@ -124,31 +121,43 @@ export class CheckpointsPolicyQuestionsComponent {
124
121
  this.errorTracker = [];
125
122
  await this.checkPointQuestions.forEach((element, index) => {
126
123
  if (element.question.trim().length === 0) {
127
- this.errorTracker[index] = { type: 'QUESTION', message: 'Please add a question.' };
124
+ this.errorTracker[index] = {
125
+ type: 'QUESTION',
126
+ message: 'Please add a question.',
127
+ };
128
128
  }
129
129
  else {
130
130
  if (element.answers.length >= 2) {
131
131
  if (this.isOptionValid(element.answers) === false) {
132
- this.errorTracker[index] = { type: 'OPTION', message: 'You need to complete all the answer options.' };
132
+ this.errorTracker[index] = {
133
+ type: 'OPTION',
134
+ message: 'You need to complete all the answer options.',
135
+ };
133
136
  }
134
137
  else {
135
138
  if (this.checkDuplicate(element?.answers) === true) {
136
- this.errorTracker[index] = { type: 'OPTION', message: 'Two options cannot have same title.' };
139
+ this.errorTracker[index] = {
140
+ type: 'OPTION',
141
+ message: 'Two options cannot have same title.',
142
+ };
137
143
  }
138
144
  else {
139
145
  if (element?.ranswer?.length === 0) {
140
- this.errorTracker[index] = { type: 'OPTION', message: 'Select the correct answer choice for this question.' };
146
+ this.errorTracker[index] = {
147
+ type: 'OPTION',
148
+ message: 'Select the correct answer choice for this question.',
149
+ };
141
150
  }
142
151
  }
143
152
  }
144
153
  }
145
154
  }
146
155
  });
147
- console.log(this.checkPointQuestions);
148
156
  return this.errorTracker.length > 0 ? false : true;
149
157
  }
150
158
  isOptionValid(options) {
151
- if (options.length === options.filter((ele) => ele.trim().length > 0).length) {
159
+ if (options.length ===
160
+ options.filter((ele) => ele.trim().length > 0).length) {
152
161
  return true;
153
162
  }
154
163
  else {
@@ -185,4 +194,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
185
194
  }], saveValidQuestions: [{
186
195
  type: Output
187
196
  }] } });
188
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2twb2ludHMtcG9saWN5LXF1ZXN0aW9ucy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi9zaGFyZWRDb21wb25lbnRzL2NoZWNrcG9pbnQtcG9saWN5L2NoZWNrcG9pbnRzLXBvbGljeS1xdWVzdGlvbnMvY2hlY2twb2ludHMtcG9saWN5LXF1ZXN0aW9ucy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi9zaGFyZWRDb21wb25lbnRzL2NoZWNrcG9pbnQtcG9saWN5L2NoZWNrcG9pbnRzLXBvbGljeS1xdWVzdGlvbnMvY2hlY2twb2ludHMtcG9saWN5LXF1ZXN0aW9ucy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7Ozs7O0FBUS9FLE1BQU0sT0FBTyxtQ0FBbUM7SUFrQjlDO1FBakJBLHdCQUFtQixHQUFRLEVBQUUsQ0FBQztRQUNwQixjQUFTLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNoQyxrQkFBYSxHQUFHLENBQUMsQ0FBQztRQUNqQix3QkFBbUIsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBWXpDLHVCQUFrQixHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDbEQsd0JBQW1CLEdBQUcsQ0FBQyxDQUFFO1FBTXpCLGlCQUFZLEdBQU8sRUFBRSxDQUFDO1FBQ3RCLHFCQUFnQixHQUFRLEVBQUUsQ0FBQztJQU5YLENBQUM7SUFiakIsSUFBYSxpQkFBaUIsQ0FBQyxLQUFTO1FBQ25DLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxLQUFLLENBQUM7UUFDakMsSUFBRyxJQUFJLENB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QUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFDO1lBQzlFLE9BQU8sSUFBSSxDQUFDO1NBQ2I7YUFBSTtZQUNILE9BQU8sS0FBSyxDQUFDO1NBQ2Q7SUFDSCxDQUFDO0lBQ0QsY0FBYyxDQUFDLEdBQVE7UUFDckIsSUFBSSxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ25CLG1DQUFtQztRQUNuQyxNQUFNLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN2QixvQ0FBb0M7UUFDcEMsSUFBRyxHQUFHLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxJQUFJLEVBQUM7WUFDdEIsTUFBTSxHQUFHLElBQUksQ0FBQztTQUNoQjtRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxTQUFTLENBQUMsS0FBVSxFQUFFLElBQVM7UUFDN0IsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDOztnSUF6S1ksbUNBQW1DO29IQUFuQyxtQ0FBbUMsdVJDUmhELDB5TkFnR0E7MkZEeEZhLG1DQUFtQztrQkFML0MsU0FBUzsrQkFDRSxrQ0FBa0M7MEVBTWxDLFNBQVM7c0JBQWxCLE1BQU07Z0JBQ0UsYUFBYTtzQkFBckIsS0FBSztnQkFDSSxtQkFBbUI7c0JBQTVCLE1BQU07Z0JBQ00saUJBQWlCO3NCQUE3QixLQUFLO2dCQVdJLGtCQUFrQjtzQkFBM0IsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1jaGVja3BvaW50cy1wb2xpY3ktcXVlc3Rpb25zJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vY2hlY2twb2ludHMtcG9saWN5LXF1ZXN0aW9ucy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vY2hlY2twb2ludHMtcG9saWN5LXF1ZXN0aW9ucy5jb21wb25lbnQubGVzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDaGVja3BvaW50c1BvbGljeVF1ZXN0aW9uc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgY2hlY2tQb2ludFF1ZXN0aW9ucyA6YW55ID0gW107XHJcbiAgQE91dHB1dCgpIGNoYW5nZU1heCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBASW5wdXQoKSByZXF1aXJlZFBvaW50ID0gMDtcclxuICBAT3V0cHV0KCkgcmVxdWlyZWRQb2ludENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBASW5wdXQoKSBzZXQgY2hlY2twb2ludERldGFpbHModmFsdWU6YW55KXtcclxuICAgICAgIHRoaXMuY2hlY2tQb2ludFF1ZXN0aW9ucyA9IHZhbHVlO1xyXG4gICAgICAgaWYodGhpcy5jaGVja1BvaW50UXVlc3Rpb25zLmxlbmd0aCl7XHJcbiAgICAgICAgIHRoaXMuY2hlY2tQb2ludFF1ZXN0aW9ucy5mb3JFYWNoKChlbGVtZW50OmFueSxpbmRleDpudW1iZXIpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgYW5zd2VySW5kZXggPSBlbGVtZW50Py5hbnN3ZXJzLmluZGV4T2YoZWxlbWVudD8ucmFuc3dlcik7XHJcbiAgICAgICAgICAgIGlmKGFuc3dlckluZGV4ID4gLTEgJiYgZWxlbWVudC5yYW5zd2VyLnRyaW0oKS5sZW5ndGggPiAwKXtcclxuICAgICAgICAgICAgICB0aGlzLnJpZ2h0QW5zd2VySW5kZXhbaW5kZXhdPWFuc3dlckluZGV4O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgIH0pO1xyXG4gICAgICAgfVxyXG4gIH1cclxuICBAT3V0cHV0KCkgc2F2ZVZhbGlkUXVlc3Rpb25zID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIGFjdGl2ZVF1ZXN0aW9uSW5kZXggPSAwIDtcclxuICBjb25zdHJ1Y3RvcigpIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICB9XHJcblxyXG4gIGVycm9yVHJhY2tlcjphbnkgPSBbXTtcclxuICByaWdodEFuc3dlckluZGV4IDphbnkgPSBbXTtcclxuXHJcbi8qKlxyXG4gKiBDaGFuZ2VzIGFjdGl2ZSBxdWVzdGlvbiBpbmRleFxyXG4gKiBAcGFyYW0gaW5kZXhcclxuICovXHJcbmNoYW5nZUFjdGl2ZVF1ZXN0aW9uKGluZGV4Om51bWJlcil7XHJcbiAgICAgdGhpcy5hY3RpdmVRdWVzdGlvbkluZGV4ID0gaW5kZXg7XHJcbiAgfVxyXG5cclxuY2xvbmVRdWVzdGlvbihpbmRleDogYW55LCBpc0JsYW5rID86Ym9vbGVhbil7XHJcbiAgaWYoaXNCbGFuayA9PT0gZmFsc2Upe1xyXG4gICAgY29uc3QgQ09QWV9BUlIgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuY2hlY2tQb2ludFF1ZXN0aW9uc1tpbmRleF0pKTtcclxuICAgIHRoaXMuY2hlY2tQb2ludFF1ZXN0aW9ucy5zcGxpY2UoaW5kZXggKyAxLCAwLCBDT1BZX0FSUik7XHJcbiAgfVxyXG4gIGlmKGlzQmxhbmsgPT09IHRydWUpe1xyXG4gICAgY29uc3QgUVVFU1RJT04gPSB7XHJcbiAgICAgIHJhbnN3ZXIgOiAnJyxcclxuICAgICAgcXVlc3Rpb24gOiAnJyxcclxuICAgICAgYW5zd2VycyA6IFtcclxuICAgICAgICAnJywnJ1xyXG5cclxuICAgICAgXVxyXG4gICAgfVxyXG4gICAgdGhpcy5jaGVja1BvaW50UXVlc3Rpb25zLnNwbGljZShpbmRleCArIDEsIDAsIFFVRVNUSU9OKTtcclxuXHJcbiAgfVxyXG4gIHRoaXMuY2hhbmdlQWN0aXZlUXVlc3Rpb24oaW5kZXgrMSk7XHJcbiAgdGhpcy5yZXF1aXJlZFBvaW50Q2hhbmdlLmVtaXQodGhpcy5yZXF1aXJlZFBvaW50ICsxKVxyXG4gIC8vdGhpcy5jaGFuZ2VNYXguZW1pdCh0aGlzLmNoZWNrUG9pbnRRdWVzdGlvbnMubGVuZ3RoKVxyXG59XHJcblxyXG5hZGRPcHRpb24ocXVlc3Rpb25JbmRleDpudW1iZXIsIG9wdGlvbkluZGV4IDpudW1iZXIpe1xyXG4gIHRoaXMuY2hlY2tQb2ludFF1ZXN0aW9uc1txdWVzdGlvbkluZGV4XS5hbnN3ZXJzLnNwbGljZShvcHRpb25JbmRleCArIDEsIDAsICcnKTtcclxuICB0aGlzLmZvY3VzQW5PcHRpb24ocXVlc3Rpb25JbmRleCwgb3B0aW9uSW5kZXggKyAxKVxyXG59XHJcbmRlbGV0ZU9wdGlvbihxdWVzdGlvbkluZGV4Om51bWJlciwgb3B0aW9uSW5kZXggOm51bWJlcil7XHJcbiAgdGhpcy5jaGVja1BvaW50UXVlc3Rpb25zW3F1ZXN0aW9uSW5kZXhdLmFuc3dlcnMuc3BsaWNlKG9wdGlvbkluZGV4LCAxKTtcclxuICB0aGlzLmZvY3VzQW5PcHRpb24ocXVlc3Rpb25JbmRleCwgKG9wdGlvbkluZGV4IC0gMSkpXHJcbn1cclxuXHJcbmZvY3VzQW5PcHRpb24ocXVlc3Rpb25JbmRleDpudW1iZXIsIG9wdGlvbkluZGV4IDpudW1iZXIpe1xyXG4gIGNvbnNvbGUubG9nKFwiZm9jdXNcIixxdWVzdGlvbkluZGV4LG9wdGlvbkluZGV4KVxyXG4gIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgY29uc3QgRUw6IGFueSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdvcHRpb24nICsgJy0nICsgcXVlc3Rpb25JbmRleCArICcnICsgb3B0aW9uSW5kZXgpO1xyXG4gICAgaWYgKEVMKSB7IEVMLmZvY3VzKCk7IH1cclxuICB9LCAxMCk7XHJcbn1cclxuXHJcbmRlbGV0ZU9uQmFja3NwYWNlKHF1ZXN0aW9uSW5kZXg6bnVtYmVyLCBvcHRpb25JbmRleCA6bnVtYmVyKXtcclxuICBpZih0aGlzLmNoZWNrUG9pbnRRdWVzdGlvbnNbcXVlc3Rpb25JbmRleF0uYW5zd2Vycz8ubGVuZ3RoID4gMiAmJiAgdGhpcy5jaGVja1BvaW50UXVlc3Rpb25zW3F1ZXN0aW9uSW5kZXhdLmFuc3dlcnNbb3B0aW9uSW5kZXhdLnRyaW0oKS5sZW5ndGggPT09IDAgKXtcclxuICAgIHRoaXMuZGVsZXRlT3B0aW9uKHF1ZXN0aW9uSW5kZXgsb3B0aW9uSW5kZXgpO1xyXG4gIH1cclxufVxyXG5kZWxldGVRdWVzdGlvbihxdWVzdGlvbkluZGV4Om51bWJlcil7XHJcbiAgdGhpcy5jaGVja1BvaW50UXVlc3Rpb25zLnNwbGljZShxdWVzdGlvbkluZGV4LCAxKTtcclxuICBpZih0aGlzLmNoZWNrUG9pbnRRdWVzdGlvbnMubGVuZ3RoID09PSAwICl7XHJcbiAgICBjb25zdCBRVUVTVElPTiA9IHtcclxuICAgICAgcmFuc3dlciA6ICcnLFxyXG4gICAgICBxdWVzdGlvbiA6ICcnLFxyXG4gICAgICBhbnN3ZXJzIDogW1xyXG4gICAgICAgICcnLCcnXHJcbiAgICAgIF1cclxuICAgIH1cclxuICAgIHRoaXMuY2hlY2tQb2ludFF1ZXN0aW9ucy5wdXNoKFFVRVNUSU9OKTtcclxuICAgIHRoaXMucmVxdWlyZWRQb2ludCA9IDE7XHJcbiAgfVxyXG4gIC8vdGhpcy5jaGFuZ2VNYXguZW1pdCh0aGlzLmNoZWNrUG9pbnRRdWVzdGlvbnMubGVuZ3RoKVxyXG4gIHRoaXMucmVxdWlyZWRQb2ludENoYW5nZS5lbWl0KHRoaXMucmVxdWlyZWRQb2ludCAtIDEpXHJcbn1cclxuc2VsZWN0UmlnaHRBbnN3ZXIoZXZ0OmFueSwgaW5kZXg6IG51bWJlcixhbnN3ZXJJbmRleDpzdHJpbmcpe1xyXG4gIGlmKGV2dCl7XHJcbiAgICB0aGlzLmNoZWNrUG9pbnRRdWVzdGlvbnNbaW5kZXhdLnJhbnN3ZXIgPSAgdGhpcy5jaGVja1BvaW50UXVlc3Rpb25zW2luZGV4XVthbnN3ZXJJbmRleF07XHJcbiAgICB0aGlzLnJpZ2h0QW5zd2VySW5kZXhbaW5kZXhdID0gYW5zd2VySW5kZXg7XHJcbiAgICB0aGlzLnJlVmFsaWRhdGUoaW5kZXgpO1xyXG4gIH1cclxufVxyXG5cclxucmVWYWxpZGF0ZShxdWVzdGlvbkluZGV4Om51bWJlcil7XHJcbiAgaWYodGhpcy5lcnJvclRyYWNrZXJbcXVlc3Rpb25JbmRleF0pe1xyXG4gICAgdGhpcy52YWxpZGF0ZUZvcm0oKTtcclxuICB9XHJcbn1cclxuXHJcblxyXG5cclxuYXN5bmMgc2F2ZUNoZWNrUG9pbnQoKXtcclxuICBjb25zdCB2YWxpZFN0YXR1cyA9IGF3YWl0IHRoaXMudmFsaWRhdGVGb3JtKCk7XHJcbiAgaWYodmFsaWRTdGF0dXMpe1xyXG4gICAgdGhpcy5zYXZlVmFsaWRRdWVzdGlvbnMuZW1pdCh0aGlzLmNoZWNrUG9pbnRRdWVzdGlvbnMpO1xyXG4gIH1cclxufVxyXG5cclxubWFwUmlnaHRBbnN3ZXJzKCl7XHJcbiAgdGhpcy5jaGVja1BvaW50UXVlc3Rpb25zLmZvckVhY2goKGVsZW1lbnQ6YW55LGluZGV4Om51bWJlcikgPT4ge1xyXG4gICAgZWxlbWVudC5yYW5zd2VyID0gIGVsZW1lbnQuYW5zd2Vyc1t0aGlzLnJpZ2h0QW5zd2VySW5kZXhbaW5kZXhdXSA/PycnO1xyXG4gIH0pO1xyXG59XHJcbmFzeW5jIHZhbGlkYXRlRm9ybSgpe1xyXG4gIGF3YWl0IHRoaXMubWFwUmlnaHRBbnN3ZXJzKClcclxuICB0aGlzLmVycm9yVHJhY2tlciA9IFtdO1xyXG4gIGF3YWl0IHRoaXMuY2hlY2tQb2ludFF1ZXN0aW9ucy5mb3JFYWNoKChlbGVtZW50OmFueSxpbmRleDpudW1iZXIpID0+IHtcclxuICAgIGlmKGVsZW1lbnQucXVlc3Rpb24udHJpbSgpLmxlbmd0aCA9PT0gMCl7XHJcbiAgICAgIHRoaXMuZXJyb3JUcmFja2VyW2luZGV4XSA9IHt0eXBlIDonUVVFU1RJT04nLG1lc3NhZ2U6ICdQbGVhc2UgYWRkIGEgcXVlc3Rpb24uJ31cclxuICAgIH1lbHNle1xyXG4gICAgICAgaWYoZWxlbWVudC5hbnN3ZXJzLmxlbmd0aCAgPj0gIDIgKXtcclxuICAgICAgICAgICBpZih0aGlzLmlzT3B0aW9uVmFsaWQoZWxlbWVudC5hbnN3ZXJzKSA9PT0gZmFsc2Upe1xyXG4gICAgICAgICAgICB0aGlzLmVycm9yVHJhY2tlcltpbmRleF0gPSB7dHlwZSA6J09QVElPTicsbWVzc2FnZTogJ1lvdSBuZWVkIHRvIGNvbXBsZXRlIGFsbCB0aGUgYW5zd2VyIG9wdGlvbnMuJ307XHJcblxyXG4gICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgaWYodGhpcy5jaGVja0R1cGxpY2F0ZShlbGVtZW50Py5hbnN3ZXJzKSA9PT0gdHJ1ZSl7XHJcbiAgICAgICAgICAgICAgdGhpcy5lcnJvclRyYWNrZXJbaW5kZXhdID0ge3R5cGUgOidPUFRJT04nLG1lc3NhZ2U6ICdUd28gb3B0aW9ucyBjYW5ub3QgaGF2ZSBzYW1lIHRpdGxlLid9XHJcbiAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICAgICBpZihlbGVtZW50Py5yYW5zd2VyPy5sZW5ndGggPT09IDApe1xyXG4gICAgICAgICAgICAgICAgdGhpcy5lcnJvclRyYWNrZXJbaW5kZXhdID0ge3R5cGUgOidPUFRJT04nLG1lc3NhZ2U6ICdTZWxlY3QgdGhlIGNvcnJlY3QgYW5zd2VyIGNob2ljZSBmb3IgdGhpcyBxdWVzdGlvbi4nfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgIH1cclxuICAgICAgICAgICB9XHJcbiAgICAgICB9XHJcbiAgICB9XHJcbiAgfSk7XHJcbiAgY29uc29sZS5sb2codGhpcy5jaGVja1BvaW50UXVlc3Rpb25zKTtcclxuICByZXR1cm4gdGhpcy5lcnJvclRyYWNrZXIubGVuZ3RoID4gMCA/IGZhbHNlIDogdHJ1ZVxyXG59XHJcbmlzT3B0aW9uVmFsaWQob3B0aW9uczphbnkpe1xyXG4gIGlmKG9wdGlvbnMubGVuZ3RoID09PSBvcHRpb25zLmZpbHRlcigoZWxlOmFueSkgPT4gZWxlLnRyaW0oKS5sZW5ndGggPiAwKS5sZW5ndGgpe1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfWVsc2V7XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG59XHJcbmNoZWNrRHVwbGljYXRlKGFyciA6YW55ICkge1xyXG4gIGxldCByZXN1bHQgPSBmYWxzZTtcclxuICAvLyBjcmVhdGUgYSBTZXQgd2l0aCBhcnJheSBlbGVtZW50c1xyXG4gIGNvbnN0IHMgPSBuZXcgU2V0KGFycik7XHJcbiAgLy8gY29tcGFyZSB0aGUgc2l6ZSBvZiBhcnJheSBhbmQgU2V0XHJcbiAgaWYoYXJyLmxlbmd0aCAhPT0gcy5zaXplKXtcclxuICAgICByZXN1bHQgPSB0cnVlO1xyXG4gIH1cclxuICByZXR1cm4gcmVzdWx0O1xyXG59XHJcblxyXG50cmFja0J5Rm4oaW5kZXg6IGFueSwgaXRlbTogYW55KSB7XHJcbiAgcmV0dXJuIGluZGV4O1xyXG59XHJcblxyXG5cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiY2hlY2twb2ludHMtcG9saWN5LXF1ZXN0aW9uc1wiPlxyXG4gICAgPCEtLSA8ZGl2IGNsYXNzPVwiY2hlY2twb2ludHMtcXVlc3Rpb25zLWJsb2NrcyBpbnN0cnVjdGlvblwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXJcIj5cclxuICAgICAgICAgICAgPGgzIGNsYXNzPVwicXVlc3Rpb25cIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY291bnRlclwiPjxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTMyOzwvaT48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHRcIj5BZGQgaW5zdHJ1Y3Rpb248L3NwYW4+XHJcbiAgICAgICAgICAgIDwvaDM+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj4gLS0+XHJcbiAgICA8IS0tIDxzbWFsbD5cclxuICAgICAgPHByZT5cclxuICAgICAgICB7e2NoZWNrUG9pbnRRdWVzdGlvbnMgfGpzb259fVxyXG4gICAgICA8L3ByZT5cclxuICAgIDwvc21hbGw+IC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cImNoZWNrcG9pbnRzLXBvbGljeS1xdWVzdGlvbnMtdG9wIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1iZXR3ZWVuIHZ4LXBiLTIgdngtbWItMlwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidngtZnMtMTEgdngtZnctNTAwIHZ4LWxhYmVsLXR4dCB2eC10dC11cHBlcmNhc2UgdngtbXItMVwiPlRPVEFMIFBPSU5UUzwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2eC1mcy0xMSB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIj4oRWFjaCBxdWVzdGlvbiBjYXJyaWVzIDEgcG9pbnQpPC9zcGFuPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicXVlc3Rpb24tY291bnQgdngtZnMtMTIgdngtcGFyYWdyYXBoLXR4dCB2eC1wbC0xIHZ4LXByLTEgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlclwiPnt7Y2hlY2tQb2ludFF1ZXN0aW9ucy5sZW5ndGh9fTwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidngtZnMtMTEgdngtZnctNTAwIHZ4LWxhYmVsLXR4dCB2eC10dC11cHBlcmNhc2VcIj5QT0lOVFMgUkVRVUlSRUQgVE8gQVRURVNUOiA8c3BhbiBjbGFzcz1cInZ4LWZzLTE0IHZ4LXR4dC1yZWRcIj4qPC9zcGFuPjwvc3Bhbj5cclxuICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyBpbmZvIHZ4LWZzLTEyIHZ4LXR4dC1ibHVlIHZ4LW1sLTJcIiBhcHBQb3BvdmVyIChjbGljayk9XCJwb2xpY3lQYXNzaW5nLnBvcG92ZXIoKVwiIHBsYWNlbWVudD1cInJpZ2h0XCI+JiN4ZTkxZjs8L2k+XHJcbiAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImF0dGVzdElucHV0XCIgIHR5cGU9XCJudW1iZXJcIiBbKG5nTW9kZWwpXT1cInJlcXVpcmVkUG9pbnRcIiBbbWF4XT1cImNoZWNrUG9pbnRRdWVzdGlvbnMubGVuZ3RoXCIgICBvbmtleWRvd249XCJyZXR1cm4gZXZlbnQua2V5Q29kZSAhPT0gMTkwXCIgbWluPVwiMFwiXHJcbiAgICAgICAgICAgIG9uaW5wdXQ9XCJ0aGlzLnZhbHVlID0gTWF0aC5hYnModGhpcy52YWx1ZSk7XCIgKG5nTW9kZWxDaGFuZ2UpPVwicmVxdWlyZWRQb2ludENoYW5nZS5lbWl0KHJlcXVpcmVkUG9pbnQpXCIvPlxyXG4gICAgICAgICAgICA8YXBwLXBvcG92ZXIgI3BvbGljeVBhc3NpbmcgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImluZm9Qb3B1cFwiPlxyXG4gICAgICAgICAgICAgICAgIEV2ZXJ5IGNvcnJlY3QgYW5zd2VyIGNob2ljZSBjYXJyaWVzIDEgcG9pbnQuIFlvdSBjYW4gc3BlY2lmeSB0aGUgdG90YWwgbnVtYmVyIG9mIHF1ZXN0aW9ucyB0aGF0IHRoZSByZWFkZXIgbXVzdCBhbnN3ZXIgY29ycmVjdGx5IGluIG9yZGVyIHRvIGF0dGVzdCB0aGUgcG9saWN5LlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvYXBwLXBvcG92ZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHF1ZXN0aW9uVmFsdWUgb2YgY2hlY2tQb2ludFF1ZXN0aW9uczsgbGV0IHF1ZXN0aW9uSW5kZXggPSBpbmRleFwiPlxyXG4gICAgICA8IS0tIFtjbGFzcy5lcnJvcl09XCJxdWVzdGlvbkluZGV4ID09PSAwXCIgLS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrcG9pbnRzLXBvbGljeS1xdWVzdGlvbnMtYmxvY2tzXCIgW2FwcFNjcm9sbEluVmlld109XCJhY3RpdmVRdWVzdGlvbkluZGV4ID09PSBxdWVzdGlvbkluZGV4XCIgICBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZVF1ZXN0aW9uSW5kZXggPT09IHF1ZXN0aW9uSW5kZXhcIiAoY2xpY2spPVwiY2hhbmdlQWN0aXZlUXVlc3Rpb24ocXVlc3Rpb25JbmRleClcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgPGgzIGNsYXNzPVwicXVlc3Rpb25cIiA+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjb3VudGVyXCI+e3txdWVzdGlvbkluZGV4ICsgMX19LlxyXG4gICAgICAgICAgICAgICAgICAgICAgPCEtLSA8c3BhbiBjbGFzcz1cInJlcXVpcmVkXCI+Kjwvc3Bhbj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCBbYXBwQ29uZGl0aW9uYWxGb2N1c109XCJhY3RpdmVRdWVzdGlvbkluZGV4ID09PSBxdWVzdGlvbkluZGV4XCIgWyhuZ01vZGVsKV09XCJxdWVzdGlvblZhbHVlLnF1ZXN0aW9uXCIgY2xhc3M9XCJ0ZXh0XCIgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlR5cGUgeW91ciBxdWVzdGlvbiBoZXJlXCIgKG5nTW9kZWxDaGFuZ2UpPVwicmVWYWxpZGF0ZShxdWVzdGlvbkluZGV4KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPC9oMz5cclxuICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiICpuZ0lmPVwiZXJyb3JUcmFja2VyW3F1ZXN0aW9uSW5kZXhdPy50eXBlID09PSAnUVVFU1RJT04nXCI+e3tlcnJvclRyYWNrZXJbcXVlc3Rpb25JbmRleF0/Lm1lc3NhZ2V9fTwvcD5cclxuICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cImxpc3RcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgcXVlc3Rpb25WYWx1ZS5hbnN3ZXJzOyBsZXQgb3B0aW9uSW5kZXggPSBpbmRleDt0cmFja0J5OnRyYWNrQnlGblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YXBwLWNzLXJhZGlvICBbcmVhZG9ubHldPVwib3B0aW9uPy50cmltKCk/Lmxlbmd0aCA9PT0gMFwiIFtuYW1lXT1cIidvcHRpb24tJyArICcnICsgcXVlc3Rpb25JbmRleCArICcnICsgb3B0aW9uSW5kZXhcIiBbY2hlY2tlZF09XCJyaWdodEFuc3dlckluZGV4W3F1ZXN0aW9uSW5kZXhdID09PSBvcHRpb25JbmRleCA/IHRydWUgIDpmYWxzZSBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2hlY2tlZEV2ZW50KT1cInNlbGVjdFJpZ2h0QW5zd2VyKCRldmVudCxxdWVzdGlvbkluZGV4LG9wdGlvbkluZGV4KVwiIFtvbmVMaW5lXT1cInRydWVcIiBbaWRdPVwib3B0aW9uSW5kZXggKyAnd2VlJ1wiID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgIFtpZF09XCInb3B0aW9uLScgKyAnJyArIHF1ZXN0aW9uSW5kZXggKyAnJyArIG9wdGlvbkluZGV4XCIgKG5nTW9kZWxDaGFuZ2UpPVwicmVWYWxpZGF0ZShxdWVzdGlvbkluZGV4KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwiYWRkT3B0aW9uKHF1ZXN0aW9uSW5kZXgsb3B0aW9uSW5kZXgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bi5iYWNrc3BhY2UpPVwiZGVsZXRlT25CYWNrc3BhY2UocXVlc3Rpb25JbmRleCxvcHRpb25JbmRleClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiT3B0aW9uXCIgWyhuZ01vZGVsKV09XCJxdWVzdGlvblZhbHVlLmFuc3dlcnNbb3B0aW9uSW5kZXhdXCIgdHlwZT1cInRleHRcIiBwbGFjZWhvbGRlcj1cIk9wdGlvblwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYXBwLWNzLXJhZGlvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwicXVlc3Rpb25WYWx1ZT8uYW5zd2Vycz8ubGVuZ3RoID4gMiAmJiBhY3RpdmVRdWVzdGlvbkluZGV4ID09PSBxdWVzdGlvbkluZGV4XCIgKGNsaWNrKT1cImRlbGV0ZU9wdGlvbihxdWVzdGlvbkluZGV4LG9wdGlvbkluZGV4KVwiIGNsYXNzPVwiY2xvc2VcIiA+PGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5MGQ7PC9pPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cImFkZC1uZXdcIiAqbmdJZj1cImFjdGl2ZVF1ZXN0aW9uSW5kZXggPT09IHF1ZXN0aW9uSW5kZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1jcy1yYWRpbyBbb25lTGluZV09XCJ0cnVlXCIgW3JlYWRvbmx5XT1cInRydWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIHJlYWRvbmx5IHBsYWNlaG9sZGVyPVwiQWRkIG1vcmUgb3B0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWRkT3B0aW9uKHF1ZXN0aW9uSW5kZXgscXVlc3Rpb25WYWx1ZT8uYW5zd2Vycz8ubGVuZ3RoLTEpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYXBwLWNzLXJhZGlvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJlcnJvci1tZXNzYWdlXCIgKm5nSWY9XCJlcnJvclRyYWNrZXJbcXVlc3Rpb25JbmRleF0/LnR5cGUgPT09ICdPUFRJT04nXCI+e3tlcnJvclRyYWNrZXJbcXVlc3Rpb25JbmRleF0/Lm1lc3NhZ2V9fTwvcD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9vdGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGVmdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gPGFwcC1jcy1jaGVja2JveD5JcyByZXF1aXJlZDwvYXBwLWNzLWNoZWNrYm94PiAtLT5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJjbG9uZVF1ZXN0aW9uKHF1ZXN0aW9uSW5kZXgsdHJ1ZSk7JGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1wiIFthcHBUb29sdGlwXT1cIidBZGQgbmV3J1wiIHBsYWNlbWVudD1cImJvdHRvbVwiIGRlbGF5PVwiMFwiIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTkxNTs8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAgKGNsaWNrKT1cImRlbGV0ZVF1ZXN0aW9uKHF1ZXN0aW9uSW5kZXgpXCIgY2xhc3M9XCJkZWxldGVcIiBbYXBwVG9vbHRpcF09XCInRGVsZXRlJ1wiIHBsYWNlbWVudD1cImJvdHRvbVwiIGRlbGF5PVwiMFwiIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTkyMzs8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiY2xvbmVRdWVzdGlvbihxdWVzdGlvbkluZGV4LGZhbHNlKTskZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XCIgW2FwcFRvb2x0aXBdPVwiJ0NvcHknXCIgcGxhY2VtZW50PVwiYm90dG9tXCIgZGVsYXk9XCIwXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOWI2OzwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDxidXR0b24gY2xhc3M9XCJidG4tYWRkLW5ldyB2eC1mcy0xMSB2eC1mdy02MDAgdngtdHh0LWJsdWUgdngtdHQtdXBwZXJjYXNlIHZ4LXAtMCB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyXCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJjbG9uZVF1ZXN0aW9uKGNoZWNrUG9pbnRRdWVzdGlvbnMubGVuZ3RoIC0xLHRydWUpOyRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcIj4rIEFERCBBIE5FVyBRVUVTVElPTjwvYnV0dG9uPlxyXG48L2Rpdj5cclxuIl19
197
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2twb2ludHMtcG9saWN5LXF1ZXN0aW9ucy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi9zaGFyZWRDb21wb25lbnRzL2NoZWNrcG9pbnQtcG9saWN5L2NoZWNrcG9pbnRzLXBvbGljeS1xdWVzdGlvbnMvY2hlY2twb2ludHMtcG9saWN5LXF1ZXN0aW9ucy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi9zaGFyZWRDb21wb25lbnRzL2NoZWNrcG9pbnQtcG9saWN5L2NoZWNrcG9pbnRzLXBvbGljeS1xdWVzdGlvbnMvY2hlY2twb2ludHMtcG9saWN5LXF1ZXN0aW9ucy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7Ozs7O0FBTy9FLE1BQU0sT0FBTyxtQ0FBbUM7SUFrQjlDO1FBakJBLHdCQUFtQixHQUFRLEVBQUUsQ0FBQztRQUNwQixjQUFTLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNoQyxrQkFBYSxHQUFHLENBQUMsQ0FBQztRQUNqQix3QkFBbUIsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBWXpDLHVCQUFrQixHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDbEQsd0JBQW1CLEdBQUcsQ0FBQyxDQUFDO1FBS3hCLGlCQUFZLEdBQVEsRUFBRSxDQUFDO1FBQ3ZCLHFCQUFnQixHQUFRLEVBQUUsQ0FBQztJQUxaLENBQUM7SUFiaEIsSUFBYSxpQkFBaUIsQ0FBQyxLQUFVO1FBQ3ZDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxLQUFLLENBQUM7UUFDakMsSUFBSSxJQUFJLENB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LENBQUM7U0FDZDtJQUNILENBQUM7SUFDRCxjQUFjLENBQUMsR0FBUTtRQUNyQixJQUFJLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDbkIsbUNBQW1DO1FBQ25DLE1BQU0sQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZCLG9DQUFvQztRQUNwQyxJQUFJLEdBQUcsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLElBQUksRUFBRTtZQUN6QixNQUFNLEdBQUcsSUFBSSxDQUFDO1NBQ2Y7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRUQsU0FBUyxDQUFDLEtBQVUsRUFBRSxJQUFTO1FBQzdCLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQzs7Z0lBM0xVLG1DQUFtQztvSEFBbkMsbUNBQW1DLHVSQ1BoRCwweU5BZ0dBOzJGRHpGYSxtQ0FBbUM7a0JBTC9DLFNBQVM7K0JBQ0Usa0NBQWtDOzBFQU1sQyxTQUFTO3NCQUFsQixNQUFNO2dCQUNFLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0ksbUJBQW1CO3NCQUE1QixNQUFNO2dCQUNNLGlCQUFpQjtzQkFBN0IsS0FBSztnQkFXSSxrQkFBa0I7c0JBQTNCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1jaGVja3BvaW50cy1wb2xpY3ktcXVlc3Rpb25zJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vY2hlY2twb2ludHMtcG9saWN5LXF1ZXN0aW9ucy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vY2hlY2twb2ludHMtcG9saWN5LXF1ZXN0aW9ucy5jb21wb25lbnQubGVzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ2hlY2twb2ludHNQb2xpY3lRdWVzdGlvbnNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIGNoZWNrUG9pbnRRdWVzdGlvbnM6IGFueSA9IFtdO1xyXG4gIEBPdXRwdXQoKSBjaGFuZ2VNYXggPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQElucHV0KCkgcmVxdWlyZWRQb2ludCA9IDA7XHJcbiAgQE91dHB1dCgpIHJlcXVpcmVkUG9pbnRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQElucHV0KCkgc2V0IGNoZWNrcG9pbnREZXRhaWxzKHZhbHVlOiBhbnkpIHtcclxuICAgIHRoaXMuY2hlY2tQb2ludFF1ZXN0aW9ucyA9IHZhbHVlO1xyXG4gICAgaWYgKHRoaXMuY2hlY2tQb2ludFF1ZXN0aW9ucy5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5jaGVja1BvaW50UXVlc3Rpb25zLmZvckVhY2goKGVsZW1lbnQ6IGFueSwgaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICAgIGNvbnN0IGFuc3dlckluZGV4ID0gZWxlbWVudD8uYW5zd2Vycy5pbmRleE9mKGVsZW1lbnQ/LnJhbnN3ZXIpO1xyXG4gICAgICAgIGlmIChhbnN3ZXJJbmRleCA+IC0xICYmIGVsZW1lbnQucmFuc3dlci50cmltKCkubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgdGhpcy5yaWdodEFuc3dlckluZGV4W2luZGV4XSA9IGFuc3dlckluZGV4O1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIEBPdXRwdXQoKSBzYXZlVmFsaWRRdWVzdGlvbnMgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgYWN0aXZlUXVlc3Rpb25JbmRleCA9IDA7XHJcbiAgY29uc3RydWN0b3IoKSB7fVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHt9XHJcblxyXG4gIGVycm9yVHJhY2tlcjogYW55ID0gW107XHJcbiAgcmlnaHRBbnN3ZXJJbmRleDogYW55ID0gW107XHJcblxyXG4gIC8qKlxyXG4gICAqIENoYW5nZXMgYWN0aXZlIHF1ZXN0aW9uIGluZGV4XHJcbiAgICogQHBhcmFtIGluZGV4XHJcbiAgICovXHJcbiAgY2hhbmdlQWN0aXZlUXVlc3Rpb24oaW5kZXg6IG51bWJlcikge1xyXG4gICAgdGhpcy5hY3RpdmVRdWVzdGlvbkluZGV4ID0gaW5kZXg7XHJcbiAgfVxyXG5cclxuICBjbG9uZVF1ZXN0aW9uKGluZGV4OiBhbnksIGlzQmxhbms/OiBib29sZWFuKSB7XHJcbiAgICBpZiAoaXNCbGFuayA9PT0gZmFsc2UpIHtcclxuICAgICAgY29uc3QgQ09QWV9BUlIgPSBKU09OLnBhcnNlKFxyXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KHRoaXMuY2hlY2tQb2ludFF1ZXN0aW9uc1tpbmRleF0pXHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMuY2hlY2tQb2ludFF1ZXN0aW9ucy5zcGxpY2UoaW5kZXggKyAxLCAwLCBDT1BZX0FSUik7XHJcbiAgICB9XHJcbiAgICBpZiAoaXNCbGFuayA9PT0gdHJ1ZSkge1xyXG4gICAgICBjb25zdCBRVUVTVElPTiA9IHtcclxuICAgICAgICByYW5zd2VyOiAnJyxcclxuICAgICAgICBxdWVzdGlvbjogJycsXHJcbiAgICAgICAgYW5zd2VyczogWycnLCAnJ10sXHJcbiAgICAgIH07XHJcbiAgICAgIHRoaXMuY2hlY2tQb2ludFF1ZXN0aW9ucy5zcGxpY2UoaW5kZXggKyAxLCAwLCBRVUVTVElPTik7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNoYW5nZUFjdGl2ZVF1ZXN0aW9uKGluZGV4ICsgMSk7XHJcbiAgICB0aGlzLnJlcXVpcmVkUG9pbnRDaGFuZ2UuZW1pdCh0aGlzLnJlcXVpcmVkUG9pbnQgKyAxKTtcclxuICAgIC8vdGhpcy5jaGFuZ2VNYXguZW1pdCh0aGlzLmNoZWNrUG9pbnRRdWVzdGlvbnMubGVuZ3RoKVxyXG4gIH1cclxuXHJcbiAgYWRkT3B0aW9uKHF1ZXN0aW9uSW5kZXg6IG51bWJlciwgb3B0aW9uSW5kZXg6IG51bWJlcikge1xyXG4gICAgdGhpcy5jaGVja1BvaW50UXVlc3Rpb25zW3F1ZXN0aW9uSW5kZXhdLmFuc3dlcnMuc3BsaWNlKFxyXG4gICAgICBvcHRpb25JbmRleCArIDEsXHJcbiAgICAgIDAsXHJcbiAgICAgICcnXHJcbiAgICApO1xyXG4gICAgdGhpcy5mb2N1c0FuT3B0aW9uKHF1ZXN0aW9uSW5kZXgsIG9wdGlvbkluZGV4ICsgMSk7XHJcbiAgfVxyXG4gIGRlbGV0ZU9wdGlvbihxdWVzdGlvbkluZGV4OiBudW1iZXIsIG9wdGlvbkluZGV4OiBudW1iZXIpIHtcclxuICAgIHRoaXMuY2hlY2tQb2ludFF1ZXN0aW9uc1txdWVzdGlvbkluZGV4XS5hbnN3ZXJzLnNwbGljZShvcHRpb25JbmRleCwgMSk7XHJcbiAgICB0aGlzLmZvY3VzQW5PcHRpb24ocXVlc3Rpb25JbmRleCwgb3B0aW9uSW5kZXggLSAxKTtcclxuICB9XHJcblxyXG4gIGZvY3VzQW5PcHRpb24ocXVlc3Rpb25JbmRleDogbnVtYmVyLCBvcHRpb25JbmRleDogbnVtYmVyKSB7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgY29uc3QgRUw6IGFueSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFxyXG4gICAgICAgICdvcHRpb24nICsgJy0nICsgcXVlc3Rpb25JbmRleCArICcnICsgb3B0aW9uSW5kZXhcclxuICAgICAgKTtcclxuICAgICAgaWYgKEVMKSB7XHJcbiAgICAgICAgRUwuZm9jdXMoKTtcclxuICAgICAgfVxyXG4gICAgfSwgMTApO1xyXG4gIH1cclxuXHJcbiAgZGVsZXRlT25CYWNrc3BhY2UocXVlc3Rpb25JbmRleDogbnVtYmVyLCBvcHRpb25JbmRleDogbnVtYmVyKSB7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuY2hlY2tQb2ludFF1ZXN0aW9uc1txdWVzdGlvbkluZGV4XS5hbnN3ZXJzPy5sZW5ndGggPiAyICYmXHJcbiAgICAgIHRoaXMuY2hlY2tQb2ludFF1ZXN0aW9uc1txdWVzdGlvbkluZGV4XS5hbnN3ZXJzW29wdGlvbkluZGV4XS50cmltKClcclxuICAgICAgICAubGVuZ3RoID09PSAwXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5kZWxldGVPcHRpb24ocXVlc3Rpb25JbmRleCwgb3B0aW9uSW5kZXgpO1xyXG4gICAgfVxyXG4gIH1cclxuICBkZWxldGVRdWVzdGlvbihxdWVzdGlvbkluZGV4OiBudW1iZXIpIHtcclxuICAgIHRoaXMuY2hlY2tQb2ludFF1ZXN0aW9ucy5zcGxpY2UocXVlc3Rpb25JbmRleCwgMSk7XHJcbiAgICBpZiAodGhpcy5jaGVja1BvaW50UXVlc3Rpb25zLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICBjb25zdCBRVUVTVElPTiA9IHtcclxuICAgICAgICByYW5zd2VyOiAnJyxcclxuICAgICAgICBxdWVzdGlvbjogJycsXHJcbiAgICAgICAgYW5zd2VyczogWycnLCAnJ10sXHJcbiAgICAgIH07XHJcbiAgICAgIHRoaXMuY2hlY2tQb2ludFF1ZXN0aW9ucy5wdXNoKFFVRVNUSU9OKTtcclxuICAgICAgdGhpcy5yZXF1aXJlZFBvaW50ID0gMTtcclxuICAgIH1cclxuICAgIC8vdGhpcy5jaGFuZ2VNYXguZW1pdCh0aGlzLmNoZWNrUG9pbnRRdWVzdGlvbnMubGVuZ3RoKVxyXG4gICAgdGhpcy5yZXF1aXJlZFBvaW50Q2hhbmdlLmVtaXQodGhpcy5yZXF1aXJlZFBvaW50IC0gMSk7XHJcbiAgfVxyXG4gIHNlbGVjdFJpZ2h0QW5zd2VyKGV2dDogYW55LCBpbmRleDogbnVtYmVyLCBhbnN3ZXJJbmRleDogc3RyaW5nKSB7XHJcbiAgICBpZiAoZXZ0KSB7XHJcbiAgICAgIHRoaXMuY2hlY2tQb2ludFF1ZXN0aW9uc1tpbmRleF0ucmFuc3dlciA9XHJcbiAgICAgICAgdGhpcy5jaGVja1BvaW50UXVlc3Rpb25zW2luZGV4XVthbnN3ZXJJbmRleF07XHJcbiAgICAgIHRoaXMucmlnaHRBbnN3ZXJJbmRleFtpbmRleF0gPSBhbnN3ZXJJbmRleDtcclxuICAgICAgdGhpcy5yZVZhbGlkYXRlKGluZGV4KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlVmFsaWRhdGUocXVlc3Rpb25JbmRleDogbnVtYmVyKSB7XHJcbiAgICBpZiAodGhpcy5lcnJvclRyYWNrZXJbcXVlc3Rpb25JbmRleF0pIHtcclxuICAgICAgdGhpcy52YWxpZGF0ZUZvcm0oKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFzeW5jIHNhdmVDaGVja1BvaW50KCkge1xyXG4gICAgY29uc3QgdmFsaWRTdGF0dXMgPSBhd2FpdCB0aGlzLnZhbGlkYXRlRm9ybSgpO1xyXG4gICAgaWYgKHZhbGlkU3RhdHVzKSB7XHJcbiAgICAgIHRoaXMuc2F2ZVZhbGlkUXVlc3Rpb25zLmVtaXQodGhpcy5jaGVja1BvaW50UXVlc3Rpb25zKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG1hcFJpZ2h0QW5zd2VycygpIHtcclxuICAgIHRoaXMuY2hlY2tQb2ludFF1ZXN0aW9ucy5mb3JFYWNoKChlbGVtZW50OiBhbnksIGluZGV4OiBudW1iZXIpID0+IHtcclxuICAgICAgZWxlbWVudC5yYW5zd2VyID0gZWxlbWVudC5hbnN3ZXJzW3RoaXMucmlnaHRBbnN3ZXJJbmRleFtpbmRleF1dID8/ICcnO1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGFzeW5jIHZhbGlkYXRlRm9ybSgpIHtcclxuICAgIGF3YWl0IHRoaXMubWFwUmlnaHRBbnN3ZXJzKCk7XHJcbiAgICB0aGlzLmVycm9yVHJhY2tlciA9IFtdO1xyXG4gICAgYXdhaXQgdGhpcy5jaGVja1BvaW50UXVlc3Rpb25zLmZvckVhY2goKGVsZW1lbnQ6IGFueSwgaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICBpZiAoZWxlbWVudC5xdWVzdGlvbi50cmltKCkubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgdGhpcy5lcnJvclRyYWNrZXJbaW5kZXhdID0ge1xyXG4gICAgICAgICAgdHlwZTogJ1FVRVNUSU9OJyxcclxuICAgICAgICAgIG1lc3NhZ2U6ICdQbGVhc2UgYWRkIGEgcXVlc3Rpb24uJyxcclxuICAgICAgICB9O1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmIChlbGVtZW50LmFuc3dlcnMubGVuZ3RoID49IDIpIHtcclxuICAgICAgICAgIGlmICh0aGlzLmlzT3B0aW9uVmFsaWQoZWxlbWVudC5hbnN3ZXJzKSA9PT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgdGhpcy5lcnJvclRyYWNrZXJbaW5kZXhdID0ge1xyXG4gICAgICAgICAgICAgIHR5cGU6ICdPUFRJT04nLFxyXG4gICAgICAgICAgICAgIG1lc3NhZ2U6ICdZb3UgbmVlZCB0byBjb21wbGV0ZSBhbGwgdGhlIGFuc3dlciBvcHRpb25zLicsXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5jaGVja0R1cGxpY2F0ZShlbGVtZW50Py5hbnN3ZXJzKSA9PT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICAgIHRoaXMuZXJyb3JUcmFja2VyW2luZGV4XSA9IHtcclxuICAgICAgICAgICAgICAgIHR5cGU6ICdPUFRJT04nLFxyXG4gICAgICAgICAgICAgICAgbWVzc2FnZTogJ1R3byBvcHRpb25zIGNhbm5vdCBoYXZlIHNhbWUgdGl0bGUuJyxcclxuICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIGlmIChlbGVtZW50Py5yYW5zd2VyPy5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZXJyb3JUcmFja2VyW2luZGV4XSA9IHtcclxuICAgICAgICAgICAgICAgICAgdHlwZTogJ09QVElPTicsXHJcbiAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6XHJcbiAgICAgICAgICAgICAgICAgICAgJ1NlbGVjdCB0aGUgY29ycmVjdCBhbnN3ZXIgY2hvaWNlIGZvciB0aGlzIHF1ZXN0aW9uLicsXHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gdGhpcy5lcnJvclRyYWNrZXIubGVuZ3RoID4gMCA/IGZhbHNlIDogdHJ1ZTtcclxuICB9XHJcbiAgaXNPcHRpb25WYWxpZChvcHRpb25zOiBhbnkpIHtcclxuICAgIGlmIChcclxuICAgICAgb3B0aW9ucy5sZW5ndGggPT09XHJcbiAgICAgIG9wdGlvbnMuZmlsdGVyKChlbGU6IGFueSkgPT4gZWxlLnRyaW0oKS5sZW5ndGggPiAwKS5sZW5ndGhcclxuICAgICkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcbiAgY2hlY2tEdXBsaWNhdGUoYXJyOiBhbnkpIHtcclxuICAgIGxldCByZXN1bHQgPSBmYWxzZTtcclxuICAgIC8vIGNyZWF0ZSBhIFNldCB3aXRoIGFycmF5IGVsZW1lbnRzXHJcbiAgICBjb25zdCBzID0gbmV3IFNldChhcnIpO1xyXG4gICAgLy8gY29tcGFyZSB0aGUgc2l6ZSBvZiBhcnJheSBhbmQgU2V0XHJcbiAgICBpZiAoYXJyLmxlbmd0aCAhPT0gcy5zaXplKSB7XHJcbiAgICAgIHJlc3VsdCA9IHRydWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgdHJhY2tCeUZuKGluZGV4OiBhbnksIGl0ZW06IGFueSkge1xyXG4gICAgcmV0dXJuIGluZGV4O1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiY2hlY2twb2ludHMtcG9saWN5LXF1ZXN0aW9uc1wiPlxyXG4gICAgPCEtLSA8ZGl2IGNsYXNzPVwiY2hlY2twb2ludHMtcXVlc3Rpb25zLWJsb2NrcyBpbnN0cnVjdGlvblwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXJcIj5cclxuICAgICAgICAgICAgPGgzIGNsYXNzPVwicXVlc3Rpb25cIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY291bnRlclwiPjxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTMyOzwvaT48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHRcIj5BZGQgaW5zdHJ1Y3Rpb248L3NwYW4+XHJcbiAgICAgICAgICAgIDwvaDM+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj4gLS0+XHJcbiAgICA8IS0tIDxzbWFsbD5cclxuICAgICAgPHByZT5cclxuICAgICAgICB7e2NoZWNrUG9pbnRRdWVzdGlvbnMgfGpzb259fVxyXG4gICAgICA8L3ByZT5cclxuICAgIDwvc21hbGw+IC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cImNoZWNrcG9pbnRzLXBvbGljeS1xdWVzdGlvbnMtdG9wIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1iZXR3ZWVuIHZ4LXBiLTIgdngtbWItMlwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidngtZnMtMTEgdngtZnctNTAwIHZ4LWxhYmVsLXR4dCB2eC10dC11cHBlcmNhc2UgdngtbXItMVwiPlRPVEFMIFBPSU5UUzwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2eC1mcy0xMSB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIj4oRWFjaCBxdWVzdGlvbiBjYXJyaWVzIDEgcG9pbnQpPC9zcGFuPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicXVlc3Rpb24tY291bnQgdngtZnMtMTIgdngtcGFyYWdyYXBoLXR4dCB2eC1wbC0xIHZ4LXByLTEgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlclwiPnt7Y2hlY2tQb2ludFF1ZXN0aW9ucy5sZW5ndGh9fTwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidngtZnMtMTEgdngtZnctNTAwIHZ4LWxhYmVsLXR4dCB2eC10dC11cHBlcmNhc2VcIj5QT0lOVFMgUkVRVUlSRUQgVE8gQVRURVNUOiA8c3BhbiBjbGFzcz1cInZ4LWZzLTE0IHZ4LXR4dC1yZWRcIj4qPC9zcGFuPjwvc3Bhbj5cclxuICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyBpbmZvIHZ4LWZzLTEyIHZ4LXR4dC1ibHVlIHZ4LW1sLTJcIiBhcHBQb3BvdmVyIChjbGljayk9XCJwb2xpY3lQYXNzaW5nLnBvcG92ZXIoKVwiIHBsYWNlbWVudD1cInJpZ2h0XCI+JiN4ZTkxZjs8L2k+XHJcbiAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImF0dGVzdElucHV0XCIgIHR5cGU9XCJudW1iZXJcIiBbKG5nTW9kZWwpXT1cInJlcXVpcmVkUG9pbnRcIiBbbWF4XT1cImNoZWNrUG9pbnRRdWVzdGlvbnMubGVuZ3RoXCIgICBvbmtleWRvd249XCJyZXR1cm4gZXZlbnQua2V5Q29kZSAhPT0gMTkwXCIgbWluPVwiMFwiXHJcbiAgICAgICAgICAgIG9uaW5wdXQ9XCJ0aGlzLnZhbHVlID0gTWF0aC5hYnModGhpcy52YWx1ZSk7XCIgKG5nTW9kZWxDaGFuZ2UpPVwicmVxdWlyZWRQb2ludENoYW5nZS5lbWl0KHJlcXVpcmVkUG9pbnQpXCIvPlxyXG4gICAgICAgICAgICA8YXBwLXBvcG92ZXIgI3BvbGljeVBhc3NpbmcgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImluZm9Qb3B1cFwiPlxyXG4gICAgICAgICAgICAgICAgIEV2ZXJ5IGNvcnJlY3QgYW5zd2VyIGNob2ljZSBjYXJyaWVzIDEgcG9pbnQuIFlvdSBjYW4gc3BlY2lmeSB0aGUgdG90YWwgbnVtYmVyIG9mIHF1ZXN0aW9ucyB0aGF0IHRoZSByZWFkZXIgbXVzdCBhbnN3ZXIgY29ycmVjdGx5IGluIG9yZGVyIHRvIGF0dGVzdCB0aGUgcG9saWN5LlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvYXBwLXBvcG92ZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHF1ZXN0aW9uVmFsdWUgb2YgY2hlY2tQb2ludFF1ZXN0aW9uczsgbGV0IHF1ZXN0aW9uSW5kZXggPSBpbmRleFwiPlxyXG4gICAgICA8IS0tIFtjbGFzcy5lcnJvcl09XCJxdWVzdGlvbkluZGV4ID09PSAwXCIgLS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrcG9pbnRzLXBvbGljeS1xdWVzdGlvbnMtYmxvY2tzXCIgW2FwcFNjcm9sbEluVmlld109XCJhY3RpdmVRdWVzdGlvbkluZGV4ID09PSBxdWVzdGlvbkluZGV4XCIgICBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZVF1ZXN0aW9uSW5kZXggPT09IHF1ZXN0aW9uSW5kZXhcIiAoY2xpY2spPVwiY2hhbmdlQWN0aXZlUXVlc3Rpb24ocXVlc3Rpb25JbmRleClcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgPGgzIGNsYXNzPVwicXVlc3Rpb25cIiA+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjb3VudGVyXCI+e3txdWVzdGlvbkluZGV4ICsgMX19LlxyXG4gICAgICAgICAgICAgICAgICAgICAgPCEtLSA8c3BhbiBjbGFzcz1cInJlcXVpcmVkXCI+Kjwvc3Bhbj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCBbYXBwQ29uZGl0aW9uYWxGb2N1c109XCJhY3RpdmVRdWVzdGlvbkluZGV4ID09PSBxdWVzdGlvbkluZGV4XCIgWyhuZ01vZGVsKV09XCJxdWVzdGlvblZhbHVlLnF1ZXN0aW9uXCIgY2xhc3M9XCJ0ZXh0XCIgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlR5cGUgeW91ciBxdWVzdGlvbiBoZXJlXCIgKG5nTW9kZWxDaGFuZ2UpPVwicmVWYWxpZGF0ZShxdWVzdGlvbkluZGV4KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPC9oMz5cclxuICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiICpuZ0lmPVwiZXJyb3JUcmFja2VyW3F1ZXN0aW9uSW5kZXhdPy50eXBlID09PSAnUVVFU1RJT04nXCI+e3tlcnJvclRyYWNrZXJbcXVlc3Rpb25JbmRleF0/Lm1lc3NhZ2V9fTwvcD5cclxuICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cImxpc3RcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgcXVlc3Rpb25WYWx1ZS5hbnN3ZXJzOyBsZXQgb3B0aW9uSW5kZXggPSBpbmRleDt0cmFja0J5OnRyYWNrQnlGblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YXBwLWNzLXJhZGlvICBbcmVhZG9ubHldPVwib3B0aW9uPy50cmltKCk/Lmxlbmd0aCA9PT0gMFwiIFtuYW1lXT1cIidvcHRpb24tJyArICcnICsgcXVlc3Rpb25JbmRleCArICcnICsgb3B0aW9uSW5kZXhcIiBbY2hlY2tlZF09XCJyaWdodEFuc3dlckluZGV4W3F1ZXN0aW9uSW5kZXhdID09PSBvcHRpb25JbmRleCA/IHRydWUgIDpmYWxzZSBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2hlY2tlZEV2ZW50KT1cInNlbGVjdFJpZ2h0QW5zd2VyKCRldmVudCxxdWVzdGlvbkluZGV4LG9wdGlvbkluZGV4KVwiIFtvbmVMaW5lXT1cInRydWVcIiBbaWRdPVwib3B0aW9uSW5kZXggKyAnd2VlJ1wiID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgIFtpZF09XCInb3B0aW9uLScgKyAnJyArIHF1ZXN0aW9uSW5kZXggKyAnJyArIG9wdGlvbkluZGV4XCIgKG5nTW9kZWxDaGFuZ2UpPVwicmVWYWxpZGF0ZShxdWVzdGlvbkluZGV4KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwiYWRkT3B0aW9uKHF1ZXN0aW9uSW5kZXgsb3B0aW9uSW5kZXgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bi5iYWNrc3BhY2UpPVwiZGVsZXRlT25CYWNrc3BhY2UocXVlc3Rpb25JbmRleCxvcHRpb25JbmRleClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiT3B0aW9uXCIgWyhuZ01vZGVsKV09XCJxdWVzdGlvblZhbHVlLmFuc3dlcnNbb3B0aW9uSW5kZXhdXCIgdHlwZT1cInRleHRcIiBwbGFjZWhvbGRlcj1cIk9wdGlvblwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYXBwLWNzLXJhZGlvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwicXVlc3Rpb25WYWx1ZT8uYW5zd2Vycz8ubGVuZ3RoID4gMiAmJiBhY3RpdmVRdWVzdGlvbkluZGV4ID09PSBxdWVzdGlvbkluZGV4XCIgKGNsaWNrKT1cImRlbGV0ZU9wdGlvbihxdWVzdGlvbkluZGV4LG9wdGlvbkluZGV4KVwiIGNsYXNzPVwiY2xvc2VcIiA+PGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5MGQ7PC9pPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cImFkZC1uZXdcIiAqbmdJZj1cImFjdGl2ZVF1ZXN0aW9uSW5kZXggPT09IHF1ZXN0aW9uSW5kZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1jcy1yYWRpbyBbb25lTGluZV09XCJ0cnVlXCIgW3JlYWRvbmx5XT1cInRydWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIHJlYWRvbmx5IHBsYWNlaG9sZGVyPVwiQWRkIG1vcmUgb3B0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWRkT3B0aW9uKHF1ZXN0aW9uSW5kZXgscXVlc3Rpb25WYWx1ZT8uYW5zd2Vycz8ubGVuZ3RoLTEpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYXBwLWNzLXJhZGlvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJlcnJvci1tZXNzYWdlXCIgKm5nSWY9XCJlcnJvclRyYWNrZXJbcXVlc3Rpb25JbmRleF0/LnR5cGUgPT09ICdPUFRJT04nXCI+e3tlcnJvclRyYWNrZXJbcXVlc3Rpb25JbmRleF0/Lm1lc3NhZ2V9fTwvcD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9vdGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGVmdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gPGFwcC1jcy1jaGVja2JveD5JcyByZXF1aXJlZDwvYXBwLWNzLWNoZWNrYm94PiAtLT5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJjbG9uZVF1ZXN0aW9uKHF1ZXN0aW9uSW5kZXgsdHJ1ZSk7JGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1wiIFthcHBUb29sdGlwXT1cIidBZGQgbmV3J1wiIHBsYWNlbWVudD1cImJvdHRvbVwiIGRlbGF5PVwiMFwiIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTkxNTs8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAgKGNsaWNrKT1cImRlbGV0ZVF1ZXN0aW9uKHF1ZXN0aW9uSW5kZXgpXCIgY2xhc3M9XCJkZWxldGVcIiBbYXBwVG9vbHRpcF09XCInRGVsZXRlJ1wiIHBsYWNlbWVudD1cImJvdHRvbVwiIGRlbGF5PVwiMFwiIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTkyMzs8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiY2xvbmVRdWVzdGlvbihxdWVzdGlvbkluZGV4LGZhbHNlKTskZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XCIgW2FwcFRvb2x0aXBdPVwiJ0NvcHknXCIgcGxhY2VtZW50PVwiYm90dG9tXCIgZGVsYXk9XCIwXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOWI2OzwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDxidXR0b24gY2xhc3M9XCJidG4tYWRkLW5ldyB2eC1mcy0xMSB2eC1mdy02MDAgdngtdHh0LWJsdWUgdngtdHQtdXBwZXJjYXNlIHZ4LXAtMCB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyXCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJjbG9uZVF1ZXN0aW9uKGNoZWNrUG9pbnRRdWVzdGlvbnMubGVuZ3RoIC0xLHRydWUpOyRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcIj4rIEFERCBBIE5FVyBRVUVTVElPTjwvYnV0dG9uPlxyXG48L2Rpdj5cclxuIl19