@hmcts/ccd-case-ui-toolkit 7.1.3-query-management → 7.1.5-query-management

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 (59) hide show
  1. package/esm2022/lib/shared/components/case-editor/case-edit/case-edit.component.mjs +60 -22
  2. package/esm2022/lib/shared/components/case-editor/case-editor.module.mjs +1 -1
  3. package/esm2022/lib/shared/components/case-editor/case-event-completion/case-event-completion.component.mjs +40 -28
  4. package/esm2022/lib/shared/components/case-editor/case-event-completion/components/case-event-completion-task-cancelled/case-event-completion-task-cancelled.component.mjs +18 -17
  5. package/esm2022/lib/shared/components/case-editor/case-event-completion/components/case-event-completion-task-reassigned/case-event-completion-task-reassigned.component.mjs +27 -37
  6. package/esm2022/lib/shared/components/case-editor/domain/event-completion-state-machine-context.model.mjs +1 -1
  7. package/esm2022/lib/shared/components/case-editor/domain/event-completion-task-states.model.mjs +6 -0
  8. package/esm2022/lib/shared/components/case-editor/services/event-completion-state-machine.service.mjs +12 -6
  9. package/esm2022/lib/shared/components/case-editor/services/work-allocation.service.mjs +1 -1
  10. package/esm2022/lib/shared/components/event-start/event-guard/event-start.guard.mjs +40 -7
  11. package/esm2022/lib/shared/components/event-start/resolvers/event-tasks-resolver.service.mjs +11 -4
  12. package/esm2022/lib/shared/components/event-start/services/event-start-state-machine.service.mjs +15 -1
  13. package/esm2022/lib/shared/components/palette/case-file-view/case-file-view-field.component.mjs +8 -7
  14. package/esm2022/lib/shared/components/palette/palette.module.mjs +6 -2
  15. package/esm2022/lib/shared/components/palette/query-management/components/query-check-your-answers/query-check-your-answers.component.mjs +169 -145
  16. package/esm2022/lib/shared/components/palette/query-management/components/query-details/query-details.component.mjs +2 -2
  17. package/esm2022/lib/shared/components/palette/query-management/components/query-write/query-write-raise-query/query-write-raise-query.component.mjs +2 -2
  18. package/esm2022/lib/shared/components/palette/query-management/read-query-management-field.component.mjs +6 -6
  19. package/esm2022/lib/shared/components/palette/query-management/utils/query-management.utils.mjs +7 -10
  20. package/esm2022/lib/shared/domain/work-allocation/Task.mjs +1 -1
  21. package/esm2022/lib/shared/domain/work-allocation/task-response.model.mjs +1 -1
  22. package/fesm2022/hmcts-ccd-case-ui-toolkit.mjs +449 -317
  23. package/fesm2022/hmcts-ccd-case-ui-toolkit.mjs.map +1 -1
  24. package/lib/shared/components/case-editor/case-edit/case-edit.component.d.ts +5 -2
  25. package/lib/shared/components/case-editor/case-edit/case-edit.component.d.ts.map +1 -1
  26. package/lib/shared/components/case-editor/case-editor.module.d.ts.map +1 -1
  27. package/lib/shared/components/case-editor/case-event-completion/case-event-completion.component.d.ts +5 -3
  28. package/lib/shared/components/case-editor/case-event-completion/case-event-completion.component.d.ts.map +1 -1
  29. package/lib/shared/components/case-editor/case-event-completion/components/case-event-completion-task-cancelled/case-event-completion-task-cancelled.component.d.ts +7 -5
  30. package/lib/shared/components/case-editor/case-event-completion/components/case-event-completion-task-cancelled/case-event-completion-task-cancelled.component.d.ts.map +1 -1
  31. package/lib/shared/components/case-editor/case-event-completion/components/case-event-completion-task-reassigned/case-event-completion-task-reassigned.component.d.ts +7 -11
  32. package/lib/shared/components/case-editor/case-event-completion/components/case-event-completion-task-reassigned/case-event-completion-task-reassigned.component.d.ts.map +1 -1
  33. package/lib/shared/components/case-editor/domain/event-completion-state-machine-context.model.d.ts +1 -1
  34. package/lib/shared/components/case-editor/domain/event-completion-state-machine-context.model.d.ts.map +1 -1
  35. package/lib/shared/components/case-editor/domain/event-completion-task-states.model.d.ts +5 -0
  36. package/lib/shared/components/case-editor/domain/event-completion-task-states.model.d.ts.map +1 -0
  37. package/lib/shared/components/case-editor/services/event-completion-state-machine.service.d.ts.map +1 -1
  38. package/lib/shared/components/case-editor/services/work-allocation.service.d.ts +2 -2
  39. package/lib/shared/components/case-editor/services/work-allocation.service.d.ts.map +1 -1
  40. package/lib/shared/components/event-start/event-guard/event-start.guard.d.ts +3 -1
  41. package/lib/shared/components/event-start/event-guard/event-start.guard.d.ts.map +1 -1
  42. package/lib/shared/components/event-start/resolvers/event-tasks-resolver.service.d.ts +3 -1
  43. package/lib/shared/components/event-start/resolvers/event-tasks-resolver.service.d.ts.map +1 -1
  44. package/lib/shared/components/event-start/services/event-start-state-machine.service.d.ts.map +1 -1
  45. package/lib/shared/components/palette/case-file-view/case-file-view-field.component.d.ts +1 -0
  46. package/lib/shared/components/palette/case-file-view/case-file-view-field.component.d.ts.map +1 -1
  47. package/lib/shared/components/palette/query-management/components/query-check-your-answers/query-check-your-answers.component.d.ts +10 -8
  48. package/lib/shared/components/palette/query-management/components/query-check-your-answers/query-check-your-answers.component.d.ts.map +1 -1
  49. package/lib/shared/components/palette/query-management/components/query-write/query-write-raise-query/query-write-raise-query.component.d.ts.map +1 -1
  50. package/lib/shared/components/palette/query-management/utils/query-management.utils.d.ts +1 -1
  51. package/lib/shared/components/palette/query-management/utils/query-management.utils.d.ts.map +1 -1
  52. package/lib/shared/domain/work-allocation/Task.d.ts +10 -1
  53. package/lib/shared/domain/work-allocation/Task.d.ts.map +1 -1
  54. package/lib/shared/domain/work-allocation/task-response.model.d.ts +1 -1
  55. package/lib/shared/domain/work-allocation/task-response.model.d.ts.map +1 -1
  56. package/package.json +1 -1
  57. package/esm2022/lib/shared/components/case-editor/domain/event-completion-portal-types.model.mjs +0 -6
  58. package/lib/shared/components/case-editor/domain/event-completion-portal-types.model.d.ts +0 -5
  59. package/lib/shared/components/case-editor/domain/event-completion-portal-types.model.d.ts.map +0 -1
@@ -1,18 +1,46 @@
1
1
  import { Component, EventEmitter, Input, Output } from '@angular/core';
2
2
  import { FormGroup } from '@angular/forms';
3
3
  import { ActivatedRoute, Router } from '@angular/router';
4
- import { switchMap, take } from 'rxjs/operators';
4
+ import { take } from 'rxjs/operators';
5
+ import { CaseEventTrigger } from '../../../../../../../lib/shared/domain';
5
6
  import { SessionStorageService } from '../../../../../services';
6
- import { CaseNotifier, CasesService, WorkAllocationService } from '../../../../case-editor/services';
7
+ import { CaseNotifier, CasesService, EventTriggerService, WorkAllocationService } from '../../../../case-editor/services';
7
8
  import { QueryCreateContext, QueryListItem } from '../../models';
8
9
  import { QueryManagementUtils } from '../../utils/query-management.utils';
9
10
  import * as i0 from "@angular/core";
10
11
  import * as i1 from "@angular/router";
11
12
  import * as i2 from "../../../../case-editor/services";
12
13
  import * as i3 from "../../../../../services";
13
- function QueryCheckYourAnswersComponent_ng_container_2_Template(rf, ctx) { if (rf & 1) {
14
+ function QueryCheckYourAnswersComponent_div_2_li_6_Template(rf, ctx) { if (rf & 1) {
15
+ i0.ɵɵelementStart(0, "li")(1, "a", 26);
16
+ i0.ɵɵtext(2);
17
+ i0.ɵɵpipe(3, "rpxTranslate");
18
+ i0.ɵɵelementEnd()();
19
+ } if (rf & 2) {
20
+ const errorMessage_r2 = ctx.$implicit;
21
+ i0.ɵɵadvance();
22
+ i0.ɵɵproperty("id", "error-" + errorMessage_r2.fieldId);
23
+ i0.ɵɵadvance();
24
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(3, 2, errorMessage_r2.description));
25
+ } }
26
+ function QueryCheckYourAnswersComponent_div_2_Template(rf, ctx) { if (rf & 1) {
27
+ i0.ɵɵelementStart(0, "div", 21)(1, "h2", 22);
28
+ i0.ɵɵtext(2);
29
+ i0.ɵɵpipe(3, "rpxTranslate");
30
+ i0.ɵɵelementEnd();
31
+ i0.ɵɵelementStart(4, "div", 23)(5, "ul", 24);
32
+ i0.ɵɵtemplate(6, QueryCheckYourAnswersComponent_div_2_li_6_Template, 4, 4, "li", 25);
33
+ i0.ɵɵelementEnd()()();
34
+ } if (rf & 2) {
35
+ const ctx_r2 = i0.ɵɵnextContext();
36
+ i0.ɵɵadvance(2);
37
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(3, 2, "There is a problem"), " ");
38
+ i0.ɵɵadvance(4);
39
+ i0.ɵɵproperty("ngForOf", ctx_r2.errorMessages);
40
+ } }
41
+ function QueryCheckYourAnswersComponent_ng_container_3_Template(rf, ctx) { if (rf & 1) {
14
42
  i0.ɵɵelementContainerStart(0);
15
- i0.ɵɵelementStart(1, "div", 20);
43
+ i0.ɵɵelementStart(1, "div", 27);
16
44
  i0.ɵɵtext(2);
17
45
  i0.ɵɵpipe(3, "rpxTranslate");
18
46
  i0.ɵɵelementEnd();
@@ -21,7 +49,7 @@ function QueryCheckYourAnswersComponent_ng_container_2_Template(rf, ctx) { if (r
21
49
  i0.ɵɵadvance(2);
22
50
  i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(3, 1, "Raise a query"));
23
51
  } }
24
- function QueryCheckYourAnswersComponent_ng_container_4_Template(rf, ctx) { if (rf & 1) {
52
+ function QueryCheckYourAnswersComponent_ng_container_5_Template(rf, ctx) { if (rf & 1) {
25
53
  i0.ɵɵelementContainerStart(0);
26
54
  i0.ɵɵtext(1);
27
55
  i0.ɵɵpipe(2, "rpxTranslate");
@@ -30,16 +58,16 @@ function QueryCheckYourAnswersComponent_ng_container_4_Template(rf, ctx) { if (r
30
58
  i0.ɵɵadvance();
31
59
  i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 1, "Review query response details"), " ");
32
60
  } }
33
- function QueryCheckYourAnswersComponent_ng_template_5_Template(rf, ctx) { if (rf & 1) {
61
+ function QueryCheckYourAnswersComponent_ng_template_6_Template(rf, ctx) { if (rf & 1) {
34
62
  i0.ɵɵtext(0);
35
63
  i0.ɵɵpipe(1, "rpxTranslate");
36
64
  } if (rf & 2) {
37
65
  i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(1, 1, "Review query details"), " ");
38
66
  } }
39
- function QueryCheckYourAnswersComponent_dl_9_a_8_Template(rf, ctx) { if (rf & 1) {
40
- const _r2 = i0.ɵɵgetCurrentView();
41
- i0.ɵɵelementStart(0, "a", 14);
42
- i0.ɵɵlistener("click", function QueryCheckYourAnswersComponent_dl_9_a_8_Template_a_click_0_listener() { i0.ɵɵrestoreView(_r2); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.goBack()); });
67
+ function QueryCheckYourAnswersComponent_dl_10_a_8_Template(rf, ctx) { if (rf & 1) {
68
+ const _r4 = i0.ɵɵgetCurrentView();
69
+ i0.ɵɵelementStart(0, "a", 15);
70
+ i0.ɵɵlistener("click", function QueryCheckYourAnswersComponent_dl_10_a_8_Template_a_click_0_listener() { i0.ɵɵrestoreView(_r4); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.goBack()); });
43
71
  i0.ɵɵtext(1);
44
72
  i0.ɵɵpipe(2, "rpxTranslate");
45
73
  i0.ɵɵelementEnd();
@@ -47,16 +75,16 @@ function QueryCheckYourAnswersComponent_dl_9_a_8_Template(rf, ctx) { if (rf & 1)
47
75
  i0.ɵɵadvance();
48
76
  i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 1, "Change"), " ");
49
77
  } }
50
- function QueryCheckYourAnswersComponent_dl_9_Template(rf, ctx) { if (rf & 1) {
51
- i0.ɵɵelementStart(0, "dl", 9)(1, "div", 10)(2, "dt", 11);
78
+ function QueryCheckYourAnswersComponent_dl_10_Template(rf, ctx) { if (rf & 1) {
79
+ i0.ɵɵelementStart(0, "dl", 10)(1, "div", 11)(2, "dt", 12);
52
80
  i0.ɵɵtext(3);
53
81
  i0.ɵɵpipe(4, "rpxTranslate");
54
82
  i0.ɵɵelementEnd();
55
- i0.ɵɵelementStart(5, "dd", 12);
83
+ i0.ɵɵelementStart(5, "dd", 13);
56
84
  i0.ɵɵtext(6);
57
85
  i0.ɵɵelementEnd();
58
- i0.ɵɵelementStart(7, "dd", 13);
59
- i0.ɵɵtemplate(8, QueryCheckYourAnswersComponent_dl_9_a_8_Template, 3, 3, "a", 21);
86
+ i0.ɵɵelementStart(7, "dd", 14);
87
+ i0.ɵɵtemplate(8, QueryCheckYourAnswersComponent_dl_10_a_8_Template, 3, 3, "a", 28);
60
88
  i0.ɵɵelementEnd()()();
61
89
  } if (rf & 2) {
62
90
  let tmp_3_0;
@@ -68,7 +96,7 @@ function QueryCheckYourAnswersComponent_dl_9_Template(rf, ctx) { if (rf & 1) {
68
96
  i0.ɵɵadvance(2);
69
97
  i0.ɵɵproperty("ngIf", ctx_r2.queryCreateContext === ctx_r2.queryCreateContextEnum.NEW_QUERY);
70
98
  } }
71
- function QueryCheckYourAnswersComponent_dl_21_ng_container_6_Template(rf, ctx) { if (rf & 1) {
99
+ function QueryCheckYourAnswersComponent_dl_22_ng_container_6_Template(rf, ctx) { if (rf & 1) {
72
100
  i0.ɵɵelementContainerStart(0);
73
101
  i0.ɵɵtext(1);
74
102
  i0.ɵɵpipe(2, "rpxTranslate");
@@ -77,24 +105,24 @@ function QueryCheckYourAnswersComponent_dl_21_ng_container_6_Template(rf, ctx) {
77
105
  i0.ɵɵadvance();
78
106
  i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind3(2, 1, "Is the query hearing related?", null, "Yes"), " ");
79
107
  } }
80
- function QueryCheckYourAnswersComponent_dl_21_ng_template_7_Template(rf, ctx) { if (rf & 1) {
108
+ function QueryCheckYourAnswersComponent_dl_22_ng_template_7_Template(rf, ctx) { if (rf & 1) {
81
109
  i0.ɵɵtext(0);
82
110
  i0.ɵɵpipe(1, "rpxTranslate");
83
111
  } if (rf & 2) {
84
112
  i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind3(1, 1, "Is the query hearing related?", null, "No"), " ");
85
113
  } }
86
- function QueryCheckYourAnswersComponent_dl_21_div_13_Template(rf, ctx) { if (rf & 1) {
87
- const _r5 = i0.ɵɵgetCurrentView();
88
- i0.ɵɵelementStart(0, "div", 10)(1, "dt", 11);
114
+ function QueryCheckYourAnswersComponent_dl_22_div_13_Template(rf, ctx) { if (rf & 1) {
115
+ const _r6 = i0.ɵɵgetCurrentView();
116
+ i0.ɵɵelementStart(0, "div", 11)(1, "dt", 12);
89
117
  i0.ɵɵtext(2);
90
118
  i0.ɵɵpipe(3, "rpxTranslate");
91
119
  i0.ɵɵelementEnd();
92
- i0.ɵɵelementStart(4, "dd", 12);
120
+ i0.ɵɵelementStart(4, "dd", 13);
93
121
  i0.ɵɵtext(5);
94
122
  i0.ɵɵpipe(6, "date");
95
123
  i0.ɵɵelementEnd();
96
- i0.ɵɵelementStart(7, "dd", 13)(8, "a", 14);
97
- i0.ɵɵlistener("click", function QueryCheckYourAnswersComponent_dl_21_div_13_Template_a_click_8_listener() { i0.ɵɵrestoreView(_r5); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.goBack()); });
124
+ i0.ɵɵelementStart(7, "dd", 14)(8, "a", 15);
125
+ i0.ɵɵlistener("click", function QueryCheckYourAnswersComponent_dl_22_div_13_Template_a_click_8_listener() { i0.ɵɵrestoreView(_r6); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.goBack()); });
98
126
  i0.ɵɵtext(9);
99
127
  i0.ɵɵpipe(10, "rpxTranslate");
100
128
  i0.ɵɵelementEnd()()();
@@ -108,38 +136,38 @@ function QueryCheckYourAnswersComponent_dl_21_div_13_Template(rf, ctx) { if (rf
108
136
  i0.ɵɵadvance(4);
109
137
  i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(10, 8, "Change"), " ");
110
138
  } }
111
- function QueryCheckYourAnswersComponent_dl_21_Template(rf, ctx) { if (rf & 1) {
112
- const _r4 = i0.ɵɵgetCurrentView();
113
- i0.ɵɵelementStart(0, "dl", 9)(1, "div", 10)(2, "dt", 11);
139
+ function QueryCheckYourAnswersComponent_dl_22_Template(rf, ctx) { if (rf & 1) {
140
+ const _r5 = i0.ɵɵgetCurrentView();
141
+ i0.ɵɵelementStart(0, "dl", 10)(1, "div", 11)(2, "dt", 12);
114
142
  i0.ɵɵtext(3);
115
143
  i0.ɵɵpipe(4, "rpxTranslate");
116
144
  i0.ɵɵelementEnd();
117
- i0.ɵɵelementStart(5, "dd", 12);
118
- i0.ɵɵtemplate(6, QueryCheckYourAnswersComponent_dl_21_ng_container_6_Template, 3, 5, "ng-container", 6)(7, QueryCheckYourAnswersComponent_dl_21_ng_template_7_Template, 2, 5, "ng-template", null, 1, i0.ɵɵtemplateRefExtractor);
145
+ i0.ɵɵelementStart(5, "dd", 13);
146
+ i0.ɵɵtemplate(6, QueryCheckYourAnswersComponent_dl_22_ng_container_6_Template, 3, 5, "ng-container", 7)(7, QueryCheckYourAnswersComponent_dl_22_ng_template_7_Template, 2, 5, "ng-template", null, 1, i0.ɵɵtemplateRefExtractor);
119
147
  i0.ɵɵelementEnd();
120
- i0.ɵɵelementStart(9, "dd", 13)(10, "a", 14);
121
- i0.ɵɵlistener("click", function QueryCheckYourAnswersComponent_dl_21_Template_a_click_10_listener() { i0.ɵɵrestoreView(_r4); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.goBack()); });
148
+ i0.ɵɵelementStart(9, "dd", 14)(10, "a", 15);
149
+ i0.ɵɵlistener("click", function QueryCheckYourAnswersComponent_dl_22_Template_a_click_10_listener() { i0.ɵɵrestoreView(_r5); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.goBack()); });
122
150
  i0.ɵɵtext(11);
123
151
  i0.ɵɵpipe(12, "rpxTranslate");
124
152
  i0.ɵɵelementEnd()()();
125
- i0.ɵɵtemplate(13, QueryCheckYourAnswersComponent_dl_21_div_13_Template, 11, 10, "div", 22);
153
+ i0.ɵɵtemplate(13, QueryCheckYourAnswersComponent_dl_22_div_13_Template, 11, 10, "div", 29);
126
154
  i0.ɵɵelementEnd();
127
155
  } if (rf & 2) {
128
156
  let tmp_4_0;
129
157
  let tmp_7_0;
130
- const isHearingRelatedFalse_r6 = i0.ɵɵreference(8);
158
+ const isHearingRelatedFalse_r7 = i0.ɵɵreference(8);
131
159
  const ctx_r2 = i0.ɵɵnextContext();
132
160
  i0.ɵɵadvance(3);
133
161
  i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(4, 5, "Is the query hearing related?"), " ");
134
162
  i0.ɵɵadvance(3);
135
- i0.ɵɵproperty("ngIf", ((tmp_4_0 = ctx_r2.formGroup.get("isHearingRelated")) == null ? null : tmp_4_0.value) === true)("ngIfElse", isHearingRelatedFalse_r6);
163
+ i0.ɵɵproperty("ngIf", ((tmp_4_0 = ctx_r2.formGroup.get("isHearingRelated")) == null ? null : tmp_4_0.value) === true)("ngIfElse", isHearingRelatedFalse_r7);
136
164
  i0.ɵɵadvance(5);
137
165
  i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(12, 7, "Change"), " ");
138
166
  i0.ɵɵadvance(2);
139
167
  i0.ɵɵproperty("ngIf", (tmp_7_0 = ctx_r2.formGroup.get("isHearingRelated")) == null ? null : tmp_7_0.value);
140
168
  } }
141
- function QueryCheckYourAnswersComponent_ccd_query_attachments_read_28_Template(rf, ctx) { if (rf & 1) {
142
- i0.ɵɵelement(0, "ccd-query-attachments-read", 23);
169
+ function QueryCheckYourAnswersComponent_ccd_query_attachments_read_29_Template(rf, ctx) { if (rf & 1) {
170
+ i0.ɵɵelement(0, "ccd-query-attachments-read", 30);
143
171
  } if (rf & 2) {
144
172
  const ctx_r2 = i0.ɵɵnextContext();
145
173
  i0.ɵɵproperty("attachments", ctx_r2.formGroup.get("attachments").value);
@@ -151,6 +179,7 @@ export class QueryCheckYourAnswersComponent {
151
179
  caseNotifier;
152
180
  workAllocationService;
153
181
  sessionStorageService;
182
+ eventTriggerService;
154
183
  RAISE_A_QUERY_EVENT_TRIGGER_ID = 'queryManagementRaiseQuery';
155
184
  RESPOND_TO_QUERY_EVENT_TRIGGER_ID = 'queryManagementRespondQuery';
156
185
  CASE_QUERIES_COLLECTION_ID = 'CaseQueriesCollection';
@@ -158,75 +187,72 @@ export class QueryCheckYourAnswersComponent {
158
187
  formGroup;
159
188
  queryItem;
160
189
  queryCreateContext;
190
+ eventData = null;
161
191
  backClicked = new EventEmitter();
162
192
  querySubmitted = new EventEmitter();
163
193
  caseViewTrigger;
164
194
  caseDetails;
165
195
  queryId;
166
- getEventTrigger$;
167
196
  createEventSubscription;
168
- searchTasksSubsciption;
197
+ searchTasksSubscription;
169
198
  queryCreateContextEnum = QueryCreateContext;
170
199
  eventCompletionParams;
171
- caseId;
172
200
  caseQueriesCollections;
173
201
  fieldId;
174
- constructor(route, router, casesService, caseNotifier, workAllocationService, sessionStorageService) {
202
+ errorMessages = [];
203
+ constructor(route, router, casesService, caseNotifier, workAllocationService, sessionStorageService, eventTriggerService) {
175
204
  this.route = route;
176
205
  this.router = router;
177
206
  this.casesService = casesService;
178
207
  this.caseNotifier = caseNotifier;
179
208
  this.workAllocationService = workAllocationService;
180
209
  this.sessionStorageService = sessionStorageService;
210
+ this.eventTriggerService = eventTriggerService;
181
211
  }
182
212
  ngOnInit() {
183
213
  this.queryId = this.route.snapshot.params.qid;
184
214
  this.caseNotifier.caseView.pipe(take(1)).subscribe((caseDetails) => {
185
215
  this.caseDetails = caseDetails;
186
- if (this.queryCreateContext !== QueryCreateContext.RESPOND) {
187
- // Find raise a query event trigger from the list, will be used when submitting the query
188
- this.caseViewTrigger = this.caseDetails.triggers.find((trigger) => trigger.id === this.RAISE_A_QUERY_EVENT_TRIGGER_ID);
189
- // Initialise getEventTrigger observable, will be used when submitting the query
190
- this.getEventTrigger$ = this.casesService.getEventTrigger(undefined, this.RAISE_A_QUERY_EVENT_TRIGGER_ID, this.caseDetails.case_id);
191
- }
192
- else {
193
- // Raise a query and Follow-up query uses the same event trigger id
194
- // Find raise a query event trigger from the list, will be used when submitting the query
195
- this.caseViewTrigger = this.caseDetails.triggers.find((trigger) => trigger.id === this.RESPOND_TO_QUERY_EVENT_TRIGGER_ID);
196
- // Initialise getEventTrigger observable, will be used when submitting the query
197
- this.getEventTrigger$ = this.casesService.getEventTrigger(undefined, this.RESPOND_TO_QUERY_EVENT_TRIGGER_ID, this.caseDetails.case_id);
198
- }
216
+ // Find the appropriate event trigger based on the queryCreateContext
217
+ this.caseViewTrigger = this.caseDetails.triggers.find((trigger) => this.queryCreateContext !== QueryCreateContext.RESPOND
218
+ // If the context is not 'RESPOND', find the trigger with the ID for raising a query
219
+ ? trigger.id === this.RAISE_A_QUERY_EVENT_TRIGGER_ID
220
+ // If the context is 'RESPOND', find the trigger with the ID for responding to a query
221
+ : trigger.id === this.RESPOND_TO_QUERY_EVENT_TRIGGER_ID);
199
222
  });
200
- this.isCaseQueriesClollectionDataPresent();
223
+ this.setCaseQueriesCollectionData();
201
224
  }
202
225
  ngOnDestroy() {
203
226
  this.createEventSubscription?.unsubscribe();
204
- this.searchTasksSubsciption?.unsubscribe();
227
+ this.searchTasksSubscription?.unsubscribe();
205
228
  }
206
229
  goBack() {
207
230
  this.backClicked.emit(true);
208
231
  }
209
232
  submit() {
210
- // Generate case queries collection data for submission
233
+ // Check if fieldId is null or undefined
234
+ if (!this.fieldId) {
235
+ console.error('Error: Field ID is missing. Cannot proceed with submission.');
236
+ this.errorMessages = [
237
+ {
238
+ title: 'Error',
239
+ description: 'Something unexpected happened. please try again later.',
240
+ fieldId: 'field-id'
241
+ }
242
+ ];
243
+ return;
244
+ }
211
245
  const data = this.generateCaseQueriesCollectionData();
212
- // Actual submission of query
213
- this.createEventSubscription = this.getEventTrigger$.pipe(switchMap((caseEventTrigger) => {
214
- // Setup CaseEventData
215
- const caseEventData = {
216
- data,
217
- event: {
218
- id: this.caseViewTrigger.id,
219
- summary: '',
220
- description: this.caseViewTrigger.description
221
- },
222
- event_token: caseEventTrigger.event_token,
223
- ignore_warning: false
224
- };
225
- // Complete event
226
- return this.casesService.createEvent(this.caseDetails, caseEventData);
227
- })).subscribe(
228
- // Successful response
229
- () => {
246
+ this.createEventSubscription = this.casesService.createEvent(this.caseDetails, {
247
+ data,
248
+ event: {
249
+ id: this.caseViewTrigger?.id,
250
+ summary: '',
251
+ description: this.caseViewTrigger?.description
252
+ },
253
+ event_token: this.eventData?.event_token,
254
+ ignore_warning: false
255
+ }).subscribe(() => {
230
256
  // Search and complete task
231
257
  this.searchAndCompleteTask();
232
258
  // Emit query submitted event
@@ -238,22 +264,19 @@ export class QueryCheckYourAnswersComponent {
238
264
  searchAndCompleteTask() {
239
265
  // Search Task
240
266
  const searchParameter = { ccdId: this.caseDetails.case_id };
241
- this.searchTasksSubsciption = this.workAllocationService.searchTasks(searchParameter)
267
+ this.searchTasksSubscription = this.workAllocationService.searchTasks(searchParameter)
242
268
  .subscribe((response) => {
243
269
  // Filter task by query id
244
- const filteredtask = response.tasks?.find((task) => {
245
- return Object.values(task.additional_properties).some((value) => {
246
- if (value === this.queryId) {
247
- return task;
248
- }
249
- });
250
- });
270
+ const filteredTask = response.tasks?.find((task) => Object.values(task.additional_properties).some((value) => value === this.queryId));
251
271
  // Trigger event completion
252
272
  this.eventCompletionParams = {
253
273
  caseId: this.caseDetails.case_id,
254
274
  eventId: this.RESPOND_TO_QUERY_EVENT_TRIGGER_ID,
255
- task: filteredtask
275
+ task: filteredTask
256
276
  };
277
+ }, (error) => {
278
+ console.error('Error in searchTasksSubscription:', error);
279
+ // Handle error appropriately
257
280
  });
258
281
  }
259
282
  generateCaseQueriesCollectionData() {
@@ -266,11 +289,9 @@ export class QueryCheckYourAnswersComponent {
266
289
  console.error('Error: Field ID for CaseQueriesCollection not found. Cannot proceed with data generation.');
267
290
  this.router.navigate(['/', 'service-down']);
268
291
  }
269
- // Dynamically determine the field ID
270
- const dynamicFieldId = this.fieldId;
271
292
  // Base data structure for the query with dynamic property name
272
293
  const newQueryData = {
273
- [dynamicFieldId]: {
294
+ [this.fieldId]: {
274
295
  partyName: '', // Not returned by CCD
275
296
  roleOnCase: '', // Not returned by CCD
276
297
  caseMessages: [
@@ -282,18 +303,17 @@ export class QueryCheckYourAnswersComponent {
282
303
  }
283
304
  };
284
305
  // If caseQueriesCollections is not empty, append its data
285
- if (this.caseQueriesCollections && this.caseQueriesCollections.length > 0) {
286
- newQueryData[dynamicFieldId].caseMessages.push(...this.caseQueriesCollections.map((collection) => collection.caseMessages).flat());
306
+ if (this.caseQueriesCollections?.length) {
307
+ newQueryData[this.fieldId].caseMessages.push(...this.caseQueriesCollections.flatMap((collection) => collection.caseMessages));
287
308
  }
288
309
  return newQueryData;
289
310
  }
290
- isCaseQueriesClollectionDataPresent() {
291
- if (this.route.snapshot?.data?.case?.tabs) {
292
- this.caseQueriesCollections = this.route.snapshot.data.case.tabs
293
- .filter((tab) => tab?.fields?.some((caseField) => caseField.field_type.id === this.CASE_QUERIES_COLLECTION_ID && caseField.field_type.type === this.FIELD_TYPE_COMPLEX))[0]?.fields?.reduce((acc, caseField) => {
311
+ setCaseQueriesCollectionData() {
312
+ if (this.eventData?.case_fields?.length) {
313
+ this.caseQueriesCollections = this.eventData.case_fields.reduce((acc, caseField) => {
294
314
  // Extract the ID based on conditions, updating this.fieldId dynamically
295
- this.extractIdBasedOnConditions(caseField);
296
- const extractedCaseQueriesFromCaseField = QueryManagementUtils.extractCaseQueriesFromCaseField(caseField, caseField.id);
315
+ this.extractCaseQueryId(caseField);
316
+ const extractedCaseQueriesFromCaseField = QueryManagementUtils.extractCaseQueriesFromCaseField(caseField);
297
317
  if (extractedCaseQueriesFromCaseField && typeof extractedCaseQueriesFromCaseField === 'object') {
298
318
  acc.push(extractedCaseQueriesFromCaseField);
299
319
  }
@@ -301,7 +321,7 @@ export class QueryCheckYourAnswersComponent {
301
321
  }, []);
302
322
  }
303
323
  }
304
- extractIdBasedOnConditions(data) {
324
+ extractCaseQueryId(data) {
305
325
  // Check if field_type.id is 'CaseQueriesCollection' and field_type.type is 'Complex'
306
326
  if (data.field_type.id === this.CASE_QUERIES_COLLECTION_ID &&
307
327
  data.field_type.type === this.FIELD_TYPE_COMPLEX) {
@@ -309,100 +329,104 @@ export class QueryCheckYourAnswersComponent {
309
329
  this.fieldId = data.id; // Store the ID for use in generating newQueryData
310
330
  }
311
331
  }
312
- static ɵfac = function QueryCheckYourAnswersComponent_Factory(t) { return new (t || QueryCheckYourAnswersComponent)(i0.ɵɵdirectiveInject(i1.ActivatedRoute), i0.ɵɵdirectiveInject(i1.Router), i0.ɵɵdirectiveInject(i2.CasesService), i0.ɵɵdirectiveInject(i2.CaseNotifier), i0.ɵɵdirectiveInject(i2.WorkAllocationService), i0.ɵɵdirectiveInject(i3.SessionStorageService)); };
313
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: QueryCheckYourAnswersComponent, selectors: [["ccd-query-check-your-answers"]], inputs: { formGroup: "formGroup", queryItem: "queryItem", queryCreateContext: "queryCreateContext" }, outputs: { backClicked: "backClicked", querySubmitted: "querySubmitted" }, decls: 42, vars: 26, consts: [["defaultCheckYourAnswersTitle", ""], ["isHearingRelatedFalse", ""], [1, "govuk-grid-row"], [1, "govuk-grid-column-two-thirds-from-desktop"], [4, "ngIf"], [1, "govuk-heading-l"], [4, "ngIf", "ngIfElse"], [1, "govuk-!-margin-bottom-4"], ["class", "govuk-summary-list govuk-!-margin-bottom-0", 4, "ngIf"], [1, "govuk-summary-list", "govuk-!-margin-bottom-0"], [1, "govuk-summary-list__row"], [1, "govuk-summary-list__key"], [1, "govuk-summary-list__value"], [1, "govuk-summary-list__actions"], ["href", "javascript:void(0)", 1, "govuk-link", 3, "click"], [1, "govuk-summary-list__value", "govuk-summary-list__value--documentAttached"], [3, "attachments", 4, "ngIf"], ["data-module", "govuk-button", 1, "govuk-button", "govuk-button--secondary", "govuk-!-margin-right-3", 3, "click"], ["data-module", "govuk-button", 1, "govuk-button", 3, "click"], [3, "eventCompletionParams"], [1, "govuk-caption-l"], ["href", "javascript:void(0)", "class", "govuk-link", 3, "click", 4, "ngIf"], ["class", "govuk-summary-list__row", 4, "ngIf"], [3, "attachments"]], template: function QueryCheckYourAnswersComponent_Template(rf, ctx) { if (rf & 1) {
332
+ static ɵfac = function QueryCheckYourAnswersComponent_Factory(t) { return new (t || QueryCheckYourAnswersComponent)(i0.ɵɵdirectiveInject(i1.ActivatedRoute), i0.ɵɵdirectiveInject(i1.Router), i0.ɵɵdirectiveInject(i2.CasesService), i0.ɵɵdirectiveInject(i2.CaseNotifier), i0.ɵɵdirectiveInject(i2.WorkAllocationService), i0.ɵɵdirectiveInject(i3.SessionStorageService), i0.ɵɵdirectiveInject(i2.EventTriggerService)); };
333
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: QueryCheckYourAnswersComponent, selectors: [["ccd-query-check-your-answers"]], inputs: { formGroup: "formGroup", queryItem: "queryItem", queryCreateContext: "queryCreateContext", eventData: "eventData" }, outputs: { backClicked: "backClicked", querySubmitted: "querySubmitted" }, decls: 43, vars: 27, consts: [["defaultCheckYourAnswersTitle", ""], ["isHearingRelatedFalse", ""], [1, "govuk-grid-row"], [1, "govuk-grid-column-two-thirds-from-desktop"], ["class", "govuk-error-summary", "aria-labelledby", "error-summary-title", "role", "alert", "tabindex", "-1", "data-module", "govuk-error-summary", 4, "ngIf"], [4, "ngIf"], [1, "govuk-heading-l"], [4, "ngIf", "ngIfElse"], [1, "govuk-!-margin-bottom-4"], ["class", "govuk-summary-list govuk-!-margin-bottom-0", 4, "ngIf"], [1, "govuk-summary-list", "govuk-!-margin-bottom-0"], [1, "govuk-summary-list__row"], [1, "govuk-summary-list__key"], [1, "govuk-summary-list__value"], [1, "govuk-summary-list__actions"], ["href", "javascript:void(0)", 1, "govuk-link", 3, "click"], [1, "govuk-summary-list__value", "govuk-summary-list__value--documentAttached"], [3, "attachments", 4, "ngIf"], ["data-module", "govuk-button", 1, "govuk-button", "govuk-button--secondary", "govuk-!-margin-right-3", 3, "click"], ["data-module", "govuk-button", 1, "govuk-button", 3, "click"], [3, "eventCompletionParams"], ["aria-labelledby", "error-summary-title", "role", "alert", "tabindex", "-1", "data-module", "govuk-error-summary", 1, "govuk-error-summary"], ["id", "error-summary-title", 1, "govuk-error-summary__title"], [1, "govuk-error-summary__body"], [1, "govuk-list", "govuk-error-summary__list"], [4, "ngFor", "ngForOf"], ["href", "javascript:void(0)", 1, "validation-error", 3, "id"], [1, "govuk-caption-l"], ["href", "javascript:void(0)", "class", "govuk-link", 3, "click", 4, "ngIf"], ["class", "govuk-summary-list__row", 4, "ngIf"], [3, "attachments"]], template: function QueryCheckYourAnswersComponent_Template(rf, ctx) { if (rf & 1) {
314
334
  const _r1 = i0.ɵɵgetCurrentView();
315
335
  i0.ɵɵelementStart(0, "div", 2)(1, "div", 3);
316
- i0.ɵɵtemplate(2, QueryCheckYourAnswersComponent_ng_container_2_Template, 4, 3, "ng-container", 4);
317
- i0.ɵɵelementStart(3, "h1", 5);
318
- i0.ɵɵtemplate(4, QueryCheckYourAnswersComponent_ng_container_4_Template, 3, 3, "ng-container", 6)(5, QueryCheckYourAnswersComponent_ng_template_5_Template, 2, 3, "ng-template", null, 0, i0.ɵɵtemplateRefExtractor);
336
+ i0.ɵɵtemplate(2, QueryCheckYourAnswersComponent_div_2_Template, 7, 4, "div", 4)(3, QueryCheckYourAnswersComponent_ng_container_3_Template, 4, 3, "ng-container", 5);
337
+ i0.ɵɵelementStart(4, "h1", 6);
338
+ i0.ɵɵtemplate(5, QueryCheckYourAnswersComponent_ng_container_5_Template, 3, 3, "ng-container", 7)(6, QueryCheckYourAnswersComponent_ng_template_6_Template, 2, 3, "ng-template", null, 0, i0.ɵɵtemplateRefExtractor);
319
339
  i0.ɵɵelementEnd();
320
- i0.ɵɵelementStart(7, "div", 7);
321
- i0.ɵɵelement(8, "ccd-query-case-details-header");
340
+ i0.ɵɵelementStart(8, "div", 8);
341
+ i0.ɵɵelement(9, "ccd-query-case-details-header");
322
342
  i0.ɵɵelementEnd();
323
- i0.ɵɵtemplate(9, QueryCheckYourAnswersComponent_dl_9_Template, 9, 5, "dl", 8);
324
- i0.ɵɵelementStart(10, "dl", 9)(11, "div", 10)(12, "dt", 11);
325
- i0.ɵɵtext(13);
326
- i0.ɵɵpipe(14, "rpxTranslate");
343
+ i0.ɵɵtemplate(10, QueryCheckYourAnswersComponent_dl_10_Template, 9, 5, "dl", 9);
344
+ i0.ɵɵelementStart(11, "dl", 10)(12, "div", 11)(13, "dt", 12);
345
+ i0.ɵɵtext(14);
346
+ i0.ɵɵpipe(15, "rpxTranslate");
327
347
  i0.ɵɵelementEnd();
328
- i0.ɵɵelementStart(15, "dd", 12);
329
- i0.ɵɵtext(16);
348
+ i0.ɵɵelementStart(16, "dd", 13);
349
+ i0.ɵɵtext(17);
330
350
  i0.ɵɵelementEnd();
331
- i0.ɵɵelementStart(17, "dd", 13)(18, "a", 14);
332
- i0.ɵɵlistener("click", function QueryCheckYourAnswersComponent_Template_a_click_18_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.goBack()); });
333
- i0.ɵɵtext(19);
334
- i0.ɵɵpipe(20, "rpxTranslate");
351
+ i0.ɵɵelementStart(18, "dd", 14)(19, "a", 15);
352
+ i0.ɵɵlistener("click", function QueryCheckYourAnswersComponent_Template_a_click_19_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.goBack()); });
353
+ i0.ɵɵtext(20);
354
+ i0.ɵɵpipe(21, "rpxTranslate");
335
355
  i0.ɵɵelementEnd()()()();
336
- i0.ɵɵtemplate(21, QueryCheckYourAnswersComponent_dl_21_Template, 14, 9, "dl", 8);
337
- i0.ɵɵelementStart(22, "dl", 9)(23, "div", 10)(24, "dt", 11);
338
- i0.ɵɵtext(25);
339
- i0.ɵɵpipe(26, "rpxTranslate");
356
+ i0.ɵɵtemplate(22, QueryCheckYourAnswersComponent_dl_22_Template, 14, 9, "dl", 9);
357
+ i0.ɵɵelementStart(23, "dl", 10)(24, "div", 11)(25, "dt", 12);
358
+ i0.ɵɵtext(26);
359
+ i0.ɵɵpipe(27, "rpxTranslate");
340
360
  i0.ɵɵelementEnd();
341
- i0.ɵɵelementStart(27, "dd", 15);
342
- i0.ɵɵtemplate(28, QueryCheckYourAnswersComponent_ccd_query_attachments_read_28_Template, 1, 1, "ccd-query-attachments-read", 16);
361
+ i0.ɵɵelementStart(28, "dd", 16);
362
+ i0.ɵɵtemplate(29, QueryCheckYourAnswersComponent_ccd_query_attachments_read_29_Template, 1, 1, "ccd-query-attachments-read", 17);
343
363
  i0.ɵɵelementEnd();
344
- i0.ɵɵelementStart(29, "dd", 13)(30, "a", 14);
345
- i0.ɵɵlistener("click", function QueryCheckYourAnswersComponent_Template_a_click_30_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.goBack()); });
346
- i0.ɵɵtext(31);
347
- i0.ɵɵpipe(32, "rpxTranslate");
364
+ i0.ɵɵelementStart(30, "dd", 14)(31, "a", 15);
365
+ i0.ɵɵlistener("click", function QueryCheckYourAnswersComponent_Template_a_click_31_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.goBack()); });
366
+ i0.ɵɵtext(32);
367
+ i0.ɵɵpipe(33, "rpxTranslate");
348
368
  i0.ɵɵelementEnd()()()();
349
- i0.ɵɵelement(33, "br");
350
- i0.ɵɵelementStart(34, "div")(35, "button", 17);
351
- i0.ɵɵlistener("click", function QueryCheckYourAnswersComponent_Template_button_click_35_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.goBack()); });
352
- i0.ɵɵtext(36);
353
- i0.ɵɵpipe(37, "rpxTranslate");
369
+ i0.ɵɵelement(34, "br");
370
+ i0.ɵɵelementStart(35, "div")(36, "button", 18);
371
+ i0.ɵɵlistener("click", function QueryCheckYourAnswersComponent_Template_button_click_36_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.goBack()); });
372
+ i0.ɵɵtext(37);
373
+ i0.ɵɵpipe(38, "rpxTranslate");
354
374
  i0.ɵɵelementEnd();
355
- i0.ɵɵelementStart(38, "button", 18);
356
- i0.ɵɵlistener("click", function QueryCheckYourAnswersComponent_Template_button_click_38_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.submit()); });
357
- i0.ɵɵtext(39);
358
- i0.ɵɵpipe(40, "rpxTranslate");
375
+ i0.ɵɵelementStart(39, "button", 19);
376
+ i0.ɵɵlistener("click", function QueryCheckYourAnswersComponent_Template_button_click_39_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.submit()); });
377
+ i0.ɵɵtext(40);
378
+ i0.ɵɵpipe(41, "rpxTranslate");
359
379
  i0.ɵɵelementEnd()()();
360
- i0.ɵɵelement(41, "ccd-query-event-completion", 19);
380
+ i0.ɵɵelement(42, "ccd-query-event-completion", 20);
361
381
  i0.ɵɵelementEnd();
362
382
  } if (rf & 2) {
363
- let tmp_6_0;
364
- const defaultCheckYourAnswersTitle_r7 = i0.ɵɵreference(6);
383
+ let tmp_7_0;
384
+ const defaultCheckYourAnswersTitle_r8 = i0.ɵɵreference(7);
365
385
  i0.ɵɵadvance(2);
386
+ i0.ɵɵproperty("ngIf", ctx.errorMessages.length > 0);
387
+ i0.ɵɵadvance();
366
388
  i0.ɵɵproperty("ngIf", ctx.queryCreateContext === ctx.queryCreateContextEnum.NEW_QUERY);
367
389
  i0.ɵɵadvance(2);
368
- i0.ɵɵproperty("ngIf", ctx.queryCreateContext === ctx.queryCreateContextEnum.RESPOND)("ngIfElse", defaultCheckYourAnswersTitle_r7);
390
+ i0.ɵɵproperty("ngIf", ctx.queryCreateContext === ctx.queryCreateContextEnum.RESPOND)("ngIfElse", defaultCheckYourAnswersTitle_r8);
369
391
  i0.ɵɵadvance(5);
370
392
  i0.ɵɵproperty("ngIf", ctx.queryCreateContext !== ctx.queryCreateContextEnum.FOLLOWUP);
371
393
  i0.ɵɵadvance(4);
372
- i0.ɵɵtextInterpolate1(" ", ctx.queryCreateContext === ctx.queryCreateContextEnum.RESPOND ? "Response detail" : i0.ɵɵpipeBind1(14, 14, "Query detail"), " ");
394
+ i0.ɵɵtextInterpolate1(" ", ctx.queryCreateContext === ctx.queryCreateContextEnum.RESPOND ? "Response detail" : i0.ɵɵpipeBind1(15, 15, "Query detail"), " ");
373
395
  i0.ɵɵadvance(3);
374
- i0.ɵɵtextInterpolate1(" ", (tmp_6_0 = ctx.formGroup.get("body")) == null ? null : tmp_6_0.value, " ");
396
+ i0.ɵɵtextInterpolate1(" ", (tmp_7_0 = ctx.formGroup.get("body")) == null ? null : tmp_7_0.value, " ");
375
397
  i0.ɵɵadvance(3);
376
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(20, 16, "Change"), " ");
398
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(21, 17, "Change"), " ");
377
399
  i0.ɵɵadvance(2);
378
400
  i0.ɵɵproperty("ngIf", ctx.queryCreateContext === ctx.queryCreateContextEnum.NEW_QUERY);
379
401
  i0.ɵɵadvance(4);
380
- i0.ɵɵtextInterpolate1(" ", ctx.queryCreateContext === ctx.queryCreateContextEnum.NEW_QUERY ? "Upload a file to the query" : i0.ɵɵpipeBind1(26, 18, "Document attached"), " ");
402
+ i0.ɵɵtextInterpolate1(" ", ctx.queryCreateContext === ctx.queryCreateContextEnum.NEW_QUERY ? "Upload a file to the query" : i0.ɵɵpipeBind1(27, 19, "Document attached"), " ");
381
403
  i0.ɵɵadvance(3);
382
404
  i0.ɵɵproperty("ngIf", ctx.formGroup.get("attachments").value);
383
405
  i0.ɵɵadvance(3);
384
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(32, 20, "Change"), " ");
406
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(33, 21, "Change"), " ");
385
407
  i0.ɵɵadvance(5);
386
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(37, 22, "Previous"), " ");
408
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(38, 23, "Previous"), " ");
387
409
  i0.ɵɵadvance(3);
388
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(40, 24, "Submit"), " ");
410
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(41, 25, "Submit"), " ");
389
411
  i0.ɵɵadvance(2);
390
412
  i0.ɵɵproperty("eventCompletionParams", ctx.eventCompletionParams);
391
413
  } }, styles: [".govuk-summary-list__value--documentAttached[_ngcontent-%COMP%]{vertical-align:middle}"] });
392
414
  }
393
415
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(QueryCheckYourAnswersComponent, [{
394
416
  type: Component,
395
- args: [{ selector: 'ccd-query-check-your-answers', template: "<div class=\"govuk-grid-row\">\n <div class=\"govuk-grid-column-two-thirds-from-desktop\">\n <ng-container *ngIf=\"queryCreateContext === queryCreateContextEnum.NEW_QUERY\">\n <div class=\"govuk-caption-l\">{{ 'Raise a query' | rpxTranslate }}</div>\n </ng-container>\n\n <h1 class=\"govuk-heading-l\">\n <ng-container *ngIf=\"queryCreateContext === queryCreateContextEnum.RESPOND; else defaultCheckYourAnswersTitle\">\n {{ 'Review query response details' | rpxTranslate }}\n </ng-container>\n\n <ng-template #defaultCheckYourAnswersTitle>\n {{ 'Review query details' | rpxTranslate }}\n </ng-template>\n </h1>\n <div class=\"govuk-!-margin-bottom-4\">\n <ccd-query-case-details-header></ccd-query-case-details-header>\n </div>\n\n <dl *ngIf=\"queryCreateContext !== queryCreateContextEnum.FOLLOWUP\" class=\"govuk-summary-list govuk-!-margin-bottom-0\">\n <div class=\"govuk-summary-list__row\">\n <dt class=\"govuk-summary-list__key\">\n {{ queryCreateContext === queryCreateContextEnum.RESPOND ? 'Submitted query' : 'Query subject' | rpxTranslate }}\n </dt>\n <dd class=\"govuk-summary-list__value\">\n {{ queryCreateContext === queryCreateContextEnum.RESPOND ? queryItem.subject : formGroup.get('subject')?.value }}\n </dd>\n <dd class=\"govuk-summary-list__actions\">\n <a *ngIf=\"queryCreateContext === queryCreateContextEnum.NEW_QUERY\" \n href=\"javascript:void(0)\" class=\"govuk-link\" (click)=\"goBack()\">\n {{ 'Change' | rpxTranslate }}\n </a>\n </dd>\n </div>\n </dl>\n\n <dl class=\"govuk-summary-list govuk-!-margin-bottom-0\">\n <div class=\"govuk-summary-list__row\">\n <dt class=\"govuk-summary-list__key\">\n {{ queryCreateContext === queryCreateContextEnum.RESPOND ? 'Response detail' : 'Query detail' | rpxTranslate }}\n </dt>\n <dd class=\"govuk-summary-list__value\">\n {{ formGroup.get('body')?.value }}\n </dd>\n <dd class=\"govuk-summary-list__actions\">\n <a href=\"javascript:void(0)\" class=\"govuk-link\" (click)=\"goBack()\">\n {{ 'Change' | rpxTranslate }}\n </a>\n </dd>\n </div>\n </dl>\n\n <dl *ngIf=\"queryCreateContext === queryCreateContextEnum.NEW_QUERY\" class=\"govuk-summary-list govuk-!-margin-bottom-0\">\n <div class=\"govuk-summary-list__row\">\n <dt class=\"govuk-summary-list__key\">\n {{ 'Is the query hearing related?' | rpxTranslate }}\n </dt>\n <dd class=\"govuk-summary-list__value\">\n <ng-container *ngIf=\"formGroup.get('isHearingRelated')?.value === true; else isHearingRelatedFalse\">\n {{ 'Is the query hearing related?' | rpxTranslate: null : 'Yes' }}\n </ng-container>\n <ng-template #isHearingRelatedFalse>\n {{ 'Is the query hearing related?' | rpxTranslate: null : 'No' }}\n </ng-template>\n </dd>\n <dd class=\"govuk-summary-list__actions\">\n <a href=\"javascript:void(0)\" class=\"govuk-link\" (click)=\"goBack()\">\n {{ 'Change' | rpxTranslate }}\n </a>\n </dd>\n </div>\n\n <div *ngIf=\"formGroup.get('isHearingRelated')?.value\" class=\"govuk-summary-list__row\">\n <dt class=\"govuk-summary-list__key\">\n {{ queryCreateContext === queryCreateContextEnum.NEW_QUERY\n ? 'What is the date of the hearing?'\n : 'What is the date of the hearing your query is related to?' | rpxTranslate }}\n </dt>\n <dd class=\"govuk-summary-list__value\">\n {{ formGroup.get('hearingDate')?.value | date: 'dd MMM yyyy' }}\n </dd>\n <dd class=\"govuk-summary-list__actions\">\n <a href=\"javascript:void(0)\" class=\"govuk-link\" (click)=\"goBack()\">\n {{ 'Change' | rpxTranslate }}\n </a>\n </dd>\n </div>\n </dl>\n\n <dl class=\"govuk-summary-list govuk-!-margin-bottom-0\">\n <div class=\"govuk-summary-list__row\">\n <dt class=\"govuk-summary-list__key\">\n {{ queryCreateContext === queryCreateContextEnum.NEW_QUERY ? 'Upload a file to the query' : 'Document attached' | rpxTranslate }}\n </dt>\n <dd class=\"govuk-summary-list__value govuk-summary-list__value--documentAttached\">\n <ccd-query-attachments-read\n *ngIf=\"this.formGroup.get('attachments').value\"\n [attachments]=\"this.formGroup.get('attachments').value\"\n >\n </ccd-query-attachments-read>\n </dd>\n <dd class=\"govuk-summary-list__actions\">\n <a href=\"javascript:void(0)\" class=\"govuk-link\" (click)=\"goBack()\">\n {{ 'Change' | rpxTranslate }}\n </a>\n </dd>\n </div>\n </dl>\n\n <br>\n\n <div>\n <button class=\"govuk-button govuk-button--secondary govuk-!-margin-right-3\" data-module=\"govuk-button\"\n (click)=\"goBack()\">\n {{ 'Previous' | rpxTranslate }}\n </button>\n <button class=\"govuk-button\" data-module=\"govuk-button\" (click)=\"submit()\">\n {{ 'Submit' | rpxTranslate }}\n </button>\n </div>\n </div>\n\n <ccd-query-event-completion [eventCompletionParams]=\"eventCompletionParams\"> \n </ccd-query-event-completion>\n</div>\n", styles: [".govuk-summary-list__value--documentAttached{vertical-align:middle}\n"] }]
396
- }], () => [{ type: i1.ActivatedRoute }, { type: i1.Router }, { type: i2.CasesService }, { type: i2.CaseNotifier }, { type: i2.WorkAllocationService }, { type: i3.SessionStorageService }], { formGroup: [{
417
+ args: [{ selector: 'ccd-query-check-your-answers', template: "<div class=\"govuk-grid-row\">\n <div class=\"govuk-grid-column-two-thirds-from-desktop\">\n <!-- Error message summary -->\n <div *ngIf=\"errorMessages.length > 0\" class=\"govuk-error-summary\"\n aria-labelledby=\"error-summary-title\" role=\"alert\" tabindex=\"-1\"\n data-module=\"govuk-error-summary\">\n <h2 class=\"govuk-error-summary__title\" id=\"error-summary-title\">\n {{ 'There is a problem' | rpxTranslate }}\n </h2>\n <div class=\"govuk-error-summary__body\">\n <ul class=\"govuk-list govuk-error-summary__list\">\n <li *ngFor=\"let errorMessage of errorMessages\">\n <a [id]=\"'error-' + errorMessage.fieldId\" href=\"javascript:void(0)\"\n class=\"validation-error\">{{ errorMessage.description | rpxTranslate }}</a>\n </li>\n </ul>\n </div>\n </div>\n\n <ng-container *ngIf=\"queryCreateContext === queryCreateContextEnum.NEW_QUERY\">\n <div class=\"govuk-caption-l\">{{ 'Raise a query' | rpxTranslate }}</div>\n </ng-container>\n\n <h1 class=\"govuk-heading-l\">\n <ng-container *ngIf=\"queryCreateContext === queryCreateContextEnum.RESPOND; else defaultCheckYourAnswersTitle\">\n {{ 'Review query response details' | rpxTranslate }}\n </ng-container>\n\n <ng-template #defaultCheckYourAnswersTitle>\n {{ 'Review query details' | rpxTranslate }}\n </ng-template>\n </h1>\n <div class=\"govuk-!-margin-bottom-4\">\n <ccd-query-case-details-header></ccd-query-case-details-header>\n </div>\n\n <dl *ngIf=\"queryCreateContext !== queryCreateContextEnum.FOLLOWUP\" class=\"govuk-summary-list govuk-!-margin-bottom-0\">\n <div class=\"govuk-summary-list__row\">\n <dt class=\"govuk-summary-list__key\">\n {{ queryCreateContext === queryCreateContextEnum.RESPOND ? 'Submitted query' : 'Query subject' | rpxTranslate }}\n </dt>\n <dd class=\"govuk-summary-list__value\">\n {{ queryCreateContext === queryCreateContextEnum.RESPOND ? queryItem.subject : formGroup.get('subject')?.value }}\n </dd>\n <dd class=\"govuk-summary-list__actions\">\n <a *ngIf=\"queryCreateContext === queryCreateContextEnum.NEW_QUERY\" \n href=\"javascript:void(0)\" class=\"govuk-link\" (click)=\"goBack()\">\n {{ 'Change' | rpxTranslate }}\n </a>\n </dd>\n </div>\n </dl>\n\n <dl class=\"govuk-summary-list govuk-!-margin-bottom-0\">\n <div class=\"govuk-summary-list__row\">\n <dt class=\"govuk-summary-list__key\">\n {{ queryCreateContext === queryCreateContextEnum.RESPOND ? 'Response detail' : 'Query detail' | rpxTranslate }}\n </dt>\n <dd class=\"govuk-summary-list__value\">\n {{ formGroup.get('body')?.value }}\n </dd>\n <dd class=\"govuk-summary-list__actions\">\n <a href=\"javascript:void(0)\" class=\"govuk-link\" (click)=\"goBack()\">\n {{ 'Change' | rpxTranslate }}\n </a>\n </dd>\n </div>\n </dl>\n\n <dl *ngIf=\"queryCreateContext === queryCreateContextEnum.NEW_QUERY\" class=\"govuk-summary-list govuk-!-margin-bottom-0\">\n <div class=\"govuk-summary-list__row\">\n <dt class=\"govuk-summary-list__key\">\n {{ 'Is the query hearing related?' | rpxTranslate }}\n </dt>\n <dd class=\"govuk-summary-list__value\">\n <ng-container *ngIf=\"formGroup.get('isHearingRelated')?.value === true; else isHearingRelatedFalse\">\n {{ 'Is the query hearing related?' | rpxTranslate: null : 'Yes' }}\n </ng-container>\n <ng-template #isHearingRelatedFalse>\n {{ 'Is the query hearing related?' | rpxTranslate: null : 'No' }}\n </ng-template>\n </dd>\n <dd class=\"govuk-summary-list__actions\">\n <a href=\"javascript:void(0)\" class=\"govuk-link\" (click)=\"goBack()\">\n {{ 'Change' | rpxTranslate }}\n </a>\n </dd>\n </div>\n\n <div *ngIf=\"formGroup.get('isHearingRelated')?.value\" class=\"govuk-summary-list__row\">\n <dt class=\"govuk-summary-list__key\">\n {{ queryCreateContext === queryCreateContextEnum.NEW_QUERY\n ? 'What is the date of the hearing?'\n : 'What is the date of the hearing your query is related to?' | rpxTranslate }}\n </dt>\n <dd class=\"govuk-summary-list__value\">\n {{ formGroup.get('hearingDate')?.value | date: 'dd MMM yyyy' }}\n </dd>\n <dd class=\"govuk-summary-list__actions\">\n <a href=\"javascript:void(0)\" class=\"govuk-link\" (click)=\"goBack()\">\n {{ 'Change' | rpxTranslate }}\n </a>\n </dd>\n </div>\n </dl>\n\n <dl class=\"govuk-summary-list govuk-!-margin-bottom-0\">\n <div class=\"govuk-summary-list__row\">\n <dt class=\"govuk-summary-list__key\">\n {{ queryCreateContext === queryCreateContextEnum.NEW_QUERY ? 'Upload a file to the query' : 'Document attached' | rpxTranslate }}\n </dt>\n <dd class=\"govuk-summary-list__value govuk-summary-list__value--documentAttached\">\n <ccd-query-attachments-read\n *ngIf=\"this.formGroup.get('attachments').value\"\n [attachments]=\"this.formGroup.get('attachments').value\"\n >\n </ccd-query-attachments-read>\n </dd>\n <dd class=\"govuk-summary-list__actions\">\n <a href=\"javascript:void(0)\" class=\"govuk-link\" (click)=\"goBack()\">\n {{ 'Change' | rpxTranslate }}\n </a>\n </dd>\n </div>\n </dl>\n\n <br>\n\n <div>\n <button class=\"govuk-button govuk-button--secondary govuk-!-margin-right-3\" data-module=\"govuk-button\"\n (click)=\"goBack()\">\n {{ 'Previous' | rpxTranslate }}\n </button>\n <button class=\"govuk-button\" data-module=\"govuk-button\" (click)=\"submit()\">\n {{ 'Submit' | rpxTranslate }}\n </button>\n </div>\n </div>\n\n <ccd-query-event-completion [eventCompletionParams]=\"eventCompletionParams\"> \n </ccd-query-event-completion>\n</div>\n", styles: [".govuk-summary-list__value--documentAttached{vertical-align:middle}\n"] }]
418
+ }], () => [{ type: i1.ActivatedRoute }, { type: i1.Router }, { type: i2.CasesService }, { type: i2.CaseNotifier }, { type: i2.WorkAllocationService }, { type: i3.SessionStorageService }, { type: i2.EventTriggerService }], { formGroup: [{
397
419
  type: Input
398
420
  }], queryItem: [{
399
421
  type: Input
400
422
  }], queryCreateContext: [{
401
423
  type: Input
424
+ }], eventData: [{
425
+ type: Input
402
426
  }], backClicked: [{
403
427
  type: Output
404
428
  }], querySubmitted: [{
405
429
  type: Output
406
430
  }] }); })();
407
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(QueryCheckYourAnswersComponent, { className: "QueryCheckYourAnswersComponent", filePath: "lib/shared/components/palette/query-management/components/query-check-your-answers/query-check-your-answers.component.ts", lineNumber: 24 }); })();
408
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktY2hlY2steW91ci1hbnN3ZXJzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9wYWxldHRlL3F1ZXJ5LW1hbmFnZW1lbnQvY29tcG9uZW50cy9xdWVyeS1jaGVjay15b3VyLWFuc3dlcnMvcXVlcnktY2hlY2steW91ci1hbnN3ZXJzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9wYWxldHRlL3F1ZXJ5LW1hbmFnZW1lbnQvY29tcG9uZW50cy9xdWVyeS1jaGVjay15b3VyLWFuc3dlcnMvcXVlcnktY2hlY2steW91ci1hbnN3ZXJzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXpELE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFTakQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFaEUsT0FBTyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNyRyxPQUFPLEVBQWtELGtCQUFrQixFQUFFLGFBQWEsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNqSCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFB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TCxzQkFBSTtZQUdGLEFBREYsNEJBQUssa0JBRWtCO1lBQW5CLGtKQUFTLFlBQVEsS0FBQztZQUNsQixhQUNGOztZQUFBLGlCQUFTO1lBQ1QsbUNBQTJFO1lBQW5CLGtKQUFTLFlBQVEsS0FBQztZQUN4RSxhQUNGOztZQUVKLEFBREUsQUFERSxpQkFBUyxFQUNMLEVBQ0Y7WUFFTixrREFDNkI7WUFDL0IsaUJBQU07Ozs7WUExSGEsZUFBNkQ7WUFBN0Qsc0ZBQTZEO1lBSzNELGVBQTZEO1lBQUEsQUFBN0Qsb0ZBQTZELDZDQUFpQztZQVkxRyxlQUE0RDtZQUE1RCxxRkFBNEQ7WUFvQjNELGVBQ0Y7WUFERSwySkFDRjtZQUVFLGVBQ0Y7WUFERSxxR0FDRjtZQUdJLGVBQ0Y7WUFERSxpRUFDRjtZQUtELGVBQTZEO1lBQTdELHNGQUE2RDtZQXdDNUQsZUFDRjtZQURFLDZLQUNGO1lBR0ssZUFBNkM7WUFBN0MsNkRBQTZDO1lBTzlDLGVBQ0Y7WUFERSxpRUFDRjtZQVVGLGVBQ0Y7WUFERSxtRUFDRjtZQUVFLGVBQ0Y7WUFERSxpRUFDRjtZQUl3QixlQUErQztZQUEvQyxpRUFBK0M7OztpRkRuR2hFLDhCQUE4QjtjQUwxQyxTQUFTOzJCQUNFLDhCQUE4QjtrTUFXeEIsU0FBUztrQkFBeEIsS0FBSztZQUNVLFNBQVM7a0JBQXhCLEtBQUs7WUFDVSxrQkFBa0I7a0JBQWpDLEtBQUs7WUFDVyxXQUFXO2tCQUEzQixNQUFNO1lBQ1UsY0FBYztrQkFBOUIsTUFBTTs7a0ZBWEksOEJBQThCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgc3dpdGNoTWFwLCB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtcbiAgQ2FzZUV2ZW50RGF0YSxcbiAgQ2FzZUV2ZW50VHJpZ2dlcixcbiAgQ2FzZVRhYixcbiAgQ2FzZVZpZXcsXG4gIENhc2VWaWV3VHJpZ2dlcixcbiAgVGFza1NlYXJjaFBhcmFtZXRlclxufSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvc2hhcmVkL2RvbWFpbic7XG5pbXBvcnQgeyBTZXNzaW9uU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9zZXJ2aWNlcyc7XG5pbXBvcnQgeyBFdmVudENvbXBsZXRpb25QYXJhbXMgfSBmcm9tICcuLi8uLi8uLi8uLi9jYXNlLWVkaXRvci9kb21haW4vZXZlbnQtY29tcGxldGlvbi1wYXJhbXMubW9kZWwnO1xuaW1wb3J0IHsgQ2FzZU5vdGlmaWVyLCBDYXNlc1NlcnZpY2UsIFdvcmtBbGxvY2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL2Nhc2UtZWRpdG9yL3NlcnZpY2VzJztcbmltcG9ydCB7IENhc2VRdWVyaWVzQ29sbGVjdGlvbiwgUW1DYXNlUXVlcmllc0NvbGxlY3Rpb24sIFF1ZXJ5Q3JlYXRlQ29udGV4dCwgUXVlcnlMaXN0SXRlbSB9IGZyb20gJy4uLy4uL21vZGVscyc7XG5pbXBvcnQgeyBRdWVyeU1hbmFnZW1lbnRVdGlscyB9IGZyb20gJy4uLy4uL3V0aWxzL3F1ZXJ5LW1hbmFnZW1lbnQudXRpbHMnO1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY2NkLXF1ZXJ5LWNoZWNrLXlvdXItYW5zd2VycycsXG4gIHRlbXBsYXRlVXJsOiAnLi9xdWVyeS1jaGVjay15b3VyLWFuc3dlcnMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9xdWVyeS1jaGVjay15b3VyLWFuc3dlcnMuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBRdWVyeUNoZWNrWW91ckFuc3dlcnNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgUkFJU0VfQV9RVUVSWV9FVkVOVF9UUklHR0VSX0lEID0gJ3F1ZXJ5TWFuYWdlbWVudFJhaXNlUXVlcnknO1xuICBwcml2YXRlIHJlYWRvbmx5IFJFU1BPTkRfVE9fUVVFUllfRVZFTlRfVFJJR0dFUl9JRCA9ICdxdWVyeU1hbmFnZW1lbnRSZXNwb25kUXVlcnknO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgQ0FTRV9RVUVSSUVTX0NPTExFQ1RJT05fSUQgPSAnQ2FzZVF1ZXJpZXNDb2xsZWN0aW9uJztcbiAgcHVibGljIHJlYWRvbmx5IEZJRUxEX1RZUEVfQ09NUExFWCA9ICdDb21wbGV4JztcblxuICBASW5wdXQoKSBwdWJsaWMgZm9ybUdyb3VwOiBGb3JtR3JvdXA7XG4gIEBJbnB1dCgpIHB1YmxpYyBxdWVyeUl0ZW06IFF1ZXJ5TGlzdEl0ZW07XG4gIEBJbnB1dCgpIHB1YmxpYyBxdWVyeUNyZWF0ZUNvbnRleHQ6IFF1ZXJ5Q3JlYXRlQ29udGV4dDtcbiAgQE91dHB1dCgpIHB1YmxpYyBiYWNrQ2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgQE91dHB1dCgpIHB1YmxpYyBxdWVyeVN1Ym1pdHRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICBwcml2YXRlIGNhc2VWaWV3VHJpZ2dlcjogQ2FzZVZpZXdUcmlnZ2VyO1xuICBwcml2YXRlIGNhc2VEZXRhaWxzOiBDYXNlVmlldztcbiAgcHJpdmF0ZSBxdWVyeUlkOiBzdHJpbmc7XG4gIHByaXZhdGUgZ2V0RXZlbnRUcmlnZ2VyJDogT2JzZXJ2YWJsZTxDYXNlRXZlbnRUcmlnZ2VyPjtcbiAgcHJpdmF0ZSBjcmVhdGVFdmVudFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBwcml2YXRlIHNlYXJjaFRhc2tzU3Vic2NpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICBwdWJsaWMgcXVlcnlDcmVhdGVDb250ZXh0RW51bSA9IFF1ZXJ5Q3JlYXRlQ29udGV4dDtcbiAgcHVibGljIGV2ZW50Q29tcGxldGlvblBhcmFtczogRXZlbnRDb21wbGV0aW9uUGFyYW1zO1xuICBwcml2YXRlIGNhc2VJZDogc3RyaW5nO1xuXG4gIHB1YmxpYyBjYXNlUXVlcmllc0NvbGxlY3Rpb25zOiBDYXNlUXVlcmllc0NvbGxlY3Rpb25bXTtcbiAgcHVibGljIGZpZWxkSWQ6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2FzZXNTZXJ2aWNlOiBDYXNlc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjYXNlTm90aWZpZXI6IENhc2VOb3RpZmllcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IHdvcmtBbGxvY2F0aW9uU2VydmljZTogV29ya0FsbG9jYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlOiBTZXNzaW9uU3RvcmFnZVNlcnZpY2UpIHtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnF1ZXJ5SWQgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtcy5xaWQ7XG4gICAgdGhpcy5jYXNlTm90aWZpZXIuY2FzZVZpZXcucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKGNhc2VEZXRhaWxzKSA9PiB7XG4gICAgICB0aGlzLmNhc2VEZXRhaWxzID0gY2FzZURldGFpbHM7XG4gICAgICBpZiAodGhpcy5xdWVyeUNyZWF0ZUNvbnRleHQgIT09IFF1ZXJ5Q3JlYXRlQ29udGV4dC5SRVNQT05EKSB7XG4gICAgICAgIC8vIEZpbmQgcmFpc2UgYSBxdWVyeSBldmVudCB0cmlnZ2VyIGZyb20gdGhlIGxpc3QsIHdpbGwgYmUgdXNlZCB3aGVuIHN1Ym1pdHRpbmcgdGhlIHF1ZXJ5XG4gICAgICAgIHRoaXMuY2FzZVZpZXdUcmlnZ2VyID0gdGhpcy5jYXNlRGV0YWlscy50cmlnZ2Vycy5maW5kKCh0cmlnZ2VyKSA9PiB0cmlnZ2VyLmlkID09PSB0aGlzLlJBSVNFX0FfUVVFUllfRVZFTlRfVFJJR0dFUl9JRCk7XG4gICAgICAgIC8vIEluaXRpYWxpc2UgZ2V0RXZlbnRUcmlnZ2VyIG9ic2VydmFibGUsIHdpbGwgYmUgdXNlZCB3aGVuIHN1Ym1pdHRpbmcgdGhlIHF1ZXJ5XG4gICAgICAgIHRoaXMuZ2V0RXZlbnRUcmlnZ2VyJCA9IHRoaXMuY2FzZXNTZXJ2aWNlLmdldEV2ZW50VHJpZ2dlcih1bmRlZmluZWQsIHRoaXMuUkFJU0VfQV9RVUVSWV9FVkVOVF9UUklHR0VSX0lELCB0aGlzLmNhc2VEZXRhaWxzLmNhc2VfaWQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gUmFpc2UgYSBxdWVyeSBhbmQgRm9sbG93LXVwIHF1ZXJ5IHVzZXMgdGhlIHNhbWUgZXZlbnQgdHJpZ2dlciBpZFxuICAgICAgICAvLyBGaW5kIHJhaXNlIGEgcXVlcnkgZXZlbnQgdHJpZ2dlciBmcm9tIHRoZSBsaXN0LCB3aWxsIGJlIHVzZWQgd2hlbiBzdWJtaXR0aW5nIHRoZSBxdWVyeVxuICAgICAgICB0aGlzLmNhc2VWaWV3VHJpZ2dlciA9IHRoaXMuY2FzZURldGFpbHMudHJpZ2dlcnMuZmluZCgodHJpZ2dlcikgPT4gdHJpZ2dlci5pZCA9PT0gdGhpcy5SRVNQT05EX1RPX1FVRVJZX0VWRU5UX1RSSUdHRVJfSUQpO1xuICAgICAgICAvLyBJbml0aWFsaXNlIGdldEV2ZW50VHJpZ2dlciBvYnNlcnZhYmxlLCB3aWxsIGJlIHVzZWQgd2hlbiBzdWJtaXR0aW5nIHRoZSBxdWVyeVxuICAgICAgICB0aGlzLmdldEV2ZW50VHJpZ2dlciQgPSB0aGlzLmNhc2VzU2VydmljZS5nZXRFdmVudFRyaWdnZXIodW5kZWZpbmVkLCB0aGlzLlJFU1BPTkRfVE9fUVVFUllfRVZFTlRfVFJJR0dFUl9JRCwgdGhpcy5jYXNlRGV0YWlscy5jYXNlX2lkKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLmlzQ2FzZVF1ZXJpZXNDbG9sbGVjdGlvbkRhdGFQcmVzZW50KCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5jcmVhdGVFdmVudFN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLnNlYXJjaFRhc2tzU3Vic2NpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwdWJsaWMgZ29CYWNrKCk6IHZvaWQge1xuICAgIHRoaXMuYmFja0NsaWNrZWQuZW1pdCh0cnVlKTtcbiAgfVxuXG4gIHB1YmxpYyBzdWJtaXQoKTogdm9pZCB7XG4gICAgLy8gR2VuZXJhdGUgY2FzZSBxdWVyaWVzIGNvbGxlY3Rpb24gZGF0YSBmb3Igc3VibWlzc2lvblxuICAgIGNvbnN0IGRhdGEgPSB0aGlzLmdlbmVyYXRlQ2FzZVF1ZXJpZXNDb2xsZWN0aW9uRGF0YSgpO1xuICAgIC8vIEFjdHVhbCBzdWJtaXNzaW9uIG9mIHF1ZXJ5XG4gICAgdGhpcy5jcmVhdGVFdmVudFN1YnNjcmlwdGlvbiA9IHRoaXMuZ2V0RXZlbnRUcmlnZ2VyJC5waXBlKFxuICAgICAgc3dpdGNoTWFwKChjYXNlRXZlbnRUcmlnZ2VyOiBDYXNlRXZlbnRUcmlnZ2VyKSA9PiB7XG4gICAgICAgIC8vIFNldHVwIENhc2VFdmVudERhdGFcbiAgICAgICAgY29uc3QgY2FzZUV2ZW50RGF0YTogQ2FzZUV2ZW50RGF0YSA9IHtcbiAgICAgICAgICBkYXRhLFxuICAgICAgICAgIGV2ZW50OiB7XG4gICAgICAgICAgICBpZDogdGhpcy5jYXNlVmlld1RyaWdnZXIuaWQsXG4gICAgICAgICAgICBzdW1tYXJ5OiAnJyxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiB0aGlzLmNhc2VWaWV3VHJpZ2dlci5kZXNjcmlwdGlvblxuICAgICAgICAgIH0sXG4gICAgICAgICAgZXZlbnRfdG9rZW46IGNhc2VFdmVudFRyaWdnZXIuZXZlbnRfdG9rZW4sXG4gICAgICAgICAgaWdub3JlX3dhcm5pbmc6IGZhbHNlXG4gICAgICAgIH07XG4gICAgICAgIC8vIENvbXBsZXRlIGV2ZW50XG4gICAgICAgIHJldHVybiB0aGlzLmNhc2VzU2VydmljZS5jcmVhdGVFdmVudCh0aGlzLmNhc2VEZXRhaWxzLCBjYXNlRXZlbnREYXRhKTtcbiAgICAgIH0pXG4gICAgKS5zdWJzY3JpYmUoXG4gICAgICAvLyBTdWNjZXNzZnVsIHJlc3BvbnNlXG4gICAgICAoKSA9PiB7XG4gICAgICAgIC8vIFNlYXJjaCBhbmQgY29tcGxldGUgdGFza1xuICAgICAgICB0aGlzLnNlYXJjaEFuZENvbXBsZXRlVGFzaygpO1xuICAgICAgICAvLyBFbWl0IHF1ZXJ5IHN1Ym1pdHRlZCBldmVudFxuICAgICAgICB0aGlzLnF1ZXJ5U3VibWl0dGVkLmVtaXQodHJ1ZSk7XG4gICAgICB9LFxuICAgICAgLy8gRXJyb3JcbiAgICAgICgpID0+IHRoaXMucm91dGVyLm5hdmlnYXRlKFsnLycsICdzZXJ2aWNlLWRvd24nXSlcbiAgICApO1xuICB9XG5cbiAgcHVibGljIHNlYXJjaEFuZENvbXBsZXRlVGFzaygpOiB2b2lkIHtcbiAgICAvLyBTZWFyY2ggVGFza1xuICAgIGNvbnN0IHNlYXJjaFBhcmFtZXRlciA9IHsgY2NkSWQ6IHRoaXMuY2FzZURldGFpbHMuY2FzZV9pZCB9IGFzIFRhc2tTZWFyY2hQYXJhbWV0ZXI7XG4gICAgdGhpcy5zZWFyY2hUYXNrc1N1YnNjaXB0aW9uID0gdGhpcy53b3JrQWxsb2NhdGlvblNlcnZpY2Uuc2VhcmNoVGFza3Moc2VhcmNoUGFyYW1ldGVyKVxuICAgICAgLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICAvLyBGaWx0ZXIgdGFzayBieSBxdWVyeSBpZFxuICAgICAgICBjb25zdCBmaWx0ZXJlZHRhc2sgPSByZXNwb25zZS50YXNrcz8uZmluZCgodGFzaykgPT4ge1xuICAgICAgICAgIHJldHVybiBPYmplY3QudmFsdWVzKHRhc2suYWRkaXRpb25hbF9wcm9wZXJ0aWVzKS5zb21lKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgaWYgKHZhbHVlID09PSB0aGlzLnF1ZXJ5SWQpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRhc2s7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICAvLyBUcmlnZ2VyIGV2ZW50IGNvbXBsZXRpb25cbiAgICAgICAgdGhpcy5ldmVudENvbXBsZXRpb25QYXJhbXMgPSB7XG4gICAgICAgICAgY2FzZUlkOiB0aGlzLmNhc2VEZXRhaWxzLmNhc2VfaWQsXG4gICAgICAgICAgZXZlbnRJZDogdGhpcy5SRVNQT05EX1RPX1FVRVJZX0VWRU5UX1RSSUdHRVJfSUQsXG4gICAgICAgICAgdGFzazogZmlsdGVyZWR0YXNrXG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2VuZXJhdGVDYXNlUXVlcmllc0NvbGxlY3Rpb25EYXRhKCk6IFFtQ2FzZVF1ZXJpZXNDb2xsZWN0aW9uIHtcbiAgICBjb25zdCBjdXJyZW50VXNlckRldGFpbHMgPSBKU09OLnBhcnNlKHRoaXMuc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlLmdldEl0ZW0oJ3VzZXJEZXRhaWxzJykpO1xuXG4gICAgY29uc3QgY2FzZU1lc3NhZ2UgPSB0aGlzLnF1ZXJ5Q3JlYXRlQ29udGV4dCA9PT0gUXVlcnlDcmVhdGVDb250ZXh0Lk5FV19RVUVSWVxuICAgICAgPyBRdWVyeU1hbmFnZW1lbnRVdGlscy5nZXROZXdRdWVyeURhdGEodGhpcy5mb3JtR3JvdXAsIGN1cnJlbnRVc2VyRGV0YWlscylcbiAgICAgIDogUXVlcnlNYW5hZ2VtZW50VXRpbHMuZ2V0UmVzcG9uZE9yRm9sbG93dXBRdWVyeURhdGEodGhpcy5mb3JtR3JvdXAsIHRoaXMucXVlcnlJdGVtLCBjdXJyZW50VXNlckRldGFpbHMpO1xuXG4gICAgLy8gQ2hlY2sgaWYgdGhlIGZpZWxkIElEIGhhcyBiZWVuIHNldCBkeW5hbWljYWxseVxuICAgIGlmICghdGhpcy5maWVsZElkKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdFcnJvcjogRmllbGQgSUQgZm9yIENhc2VRdWVyaWVzQ29sbGVjdGlvbiBub3QgZm91bmQuIENhbm5vdCBwcm9jZWVkIHdpdGggZGF0YSBnZW5lcmF0aW9uLicpO1xuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvJywgJ3NlcnZpY2UtZG93biddKTtcbiAgICB9XG5cbiAgICAvLyBEeW5hbWljYWxseSBkZXRlcm1pbmUgdGhlIGZpZWxkIElEXG4gICAgY29uc3QgZHluYW1pY0ZpZWxkSWQgPSB0aGlzLmZpZWxkSWQ7XG5cbiAgICAvLyBCYXNlIGRhdGEgc3RydWN0dXJlIGZvciB0aGUgcXVlcnkgd2l0aCBkeW5hbWljIHByb3BlcnR5IG5hbWVcbiAgICBjb25zdCBuZXdRdWVyeURhdGE6IFFtQ2FzZVF1ZXJpZXNDb2xsZWN0aW9uID0ge1xuICAgICAgW2R5bmFtaWNGaWVsZElkXToge1xuICAgICAgICBwYXJ0eU5hbWU6ICcnLCAvLyBOb3QgcmV0dXJuZWQgYnkgQ0NEXG4gICAgICAgIHJvbGVPbkNhc2U6ICcnLCAvLyBOb3QgcmV0dXJuZWQgYnkgQ0NEXG4gICAgICAgIGNhc2VNZXNzYWdlczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGlkOiBudWxsLFxuICAgICAgICAgICAgdmFsdWU6IGNhc2VNZXNzYWdlXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9XG4gICAgfTtcblxuICAgIC8vIElmIGNhc2VRdWVyaWVzQ29sbGVjdGlvbnMgaXMgbm90IGVtcHR5LCBhcHBlbmQgaXRzIGRhdGFcbiAgICBpZiAodGhpcy5jYXNlUXVlcmllc0NvbGxlY3Rpb25zICYmIHRoaXMuY2FzZVF1ZXJpZXNDb2xsZWN0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICBuZXdRdWVyeURhdGFbZHluYW1pY0ZpZWxkSWRdLmNhc2VNZXNzYWdlcy5wdXNoKFxuICAgICAgICAuLi50aGlzLmNhc2VRdWVyaWVzQ29sbGVjdGlvbnMubWFwKChjb2xsZWN0aW9uKSA9PiBjb2xsZWN0aW9uLmNhc2VNZXNzYWdlcykuZmxhdCgpXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gbmV3UXVlcnlEYXRhO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0Nhc2VRdWVyaWVzQ2xvbGxlY3Rpb25EYXRhUHJlc2VudCgpIHtcbiAgICBpZiAodGhpcy5yb3V0ZS5zbmFwc2hvdD8uZGF0YT8uY2FzZT8udGFicykge1xuICAgICAgdGhpcy5jYXNlUXVlcmllc0NvbGxlY3Rpb25zID0gKHRoaXMucm91dGUuc25hcHNob3QuZGF0YS5jYXNlLnRhYnMgYXMgQ2FzZVRhYltdKVxuICAgICAgICAuZmlsdGVyKCh0YWIpID0+IHRhYj8uZmllbGRzPy5zb21lKFxuICAgICAgICAgIChjYXNlRmllbGQpID0+IGNhc2VGaWVsZC5maWVsZF90eXBlLmlkID09PSB0aGlzLkNBU0VfUVVFUklFU19DT0xMRUNUSU9OX0lEICYmIGNhc2VGaWVsZC5maWVsZF90eXBlLnR5cGUgPT09IHRoaXMuRklFTERfVFlQRV9DT01QTEVYKSlcbiAgICAgICAgWzBdPy5maWVsZHM/LnJlZHVjZSgoYWNjLCBjYXNlRmllbGQpID0+IHtcbiAgICAgICAgICAvLyBFeHRyYWN0IHRoZSBJRCBiYXNlZCBvbiBjb25kaXRpb25zLCB1cGRhdGluZyB0aGlzLmZpZWxkSWQgZHluYW1pY2FsbHlcbiAgICAgICAgICB0aGlzLmV4dHJhY3RJZEJhc2VkT25Db25kaXRpb25zKGNhc2VGaWVsZCk7XG5cbiAgICAgICAgICBjb25zdCBleHRyYWN0ZWRDYXNlUXVlcmllc0Zyb21DYXNlRmllbGQgPSBRdWVyeU1hbmFnZW1lbnRVdGlscy5leHRyYWN0Q2FzZVF1ZXJpZXNGcm9tQ2FzZUZpZWxkKGNhc2VGaWVsZCwgY2FzZUZpZWxkLmlkKTtcblxuICAgICAgICAgIGlmIChleHRyYWN0ZWRDYXNlUXVlcmllc0Zyb21DYXNlRmllbGQgJiYgdHlwZW9mIGV4dHJhY3RlZENhc2VRdWVyaWVzRnJvbUNhc2VGaWVsZCA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgIGFjYy5wdXNoKGV4dHJhY3RlZENhc2VRdWVyaWVzRnJvbUNhc2VGaWVsZCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgIH0sIFtdKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGV4dHJhY3RJZEJhc2VkT25Db25kaXRpb25zKGRhdGEpIHtcbiAgICAvLyBDaGVjayBpZiBmaWVsZF90eXBlLmlkIGlzICdDYXNlUXVlcmllc0NvbGxlY3Rpb24nIGFuZCBmaWVsZF90eXBlLnR5cGUgaXMgJ0NvbXBsZXgnXG4gICAgaWYgKFxuICAgICAgZGF0YS5maWVsZF90eXBlLmlkID09PSB0aGlzLkNBU0VfUVVFUklFU19DT0xMRUNUSU9OX0lEICYmXG4gICAgICBkYXRhLmZpZWxkX3R5cGUudHlwZSA9PT0gdGhpcy5GSUVMRF9UWVBFX0NPTVBMRVhcbiAgICApIHtcbiAgICAgIC8vIFNldCB0aGUgZmllbGQgSUQgZHluYW1pY2FsbHkgYmFzZWQgb24gdGhlIGV4dHJhY3RlZCBkYXRhXG4gICAgICB0aGlzLmZpZWxkSWQgPSBkYXRhLmlkOyAvLyBTdG9yZSB0aGUgSUQgZm9yIHVzZSBpbiBnZW5lcmF0aW5nIG5ld1F1ZXJ5RGF0YVxuICAgIH1cbiAgfVxufVxuXG4iLCI8ZGl2IGNsYXNzPVwiZ292dWstZ3JpZC1yb3dcIj5cbiAgPGRpdiBjbGFzcz1cImdvdnVrLWdyaWQtY29sdW1uLXR3by10aGlyZHMtZnJvbS1kZXNrdG9wXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInF1ZXJ5Q3JlYXRlQ29udGV4dCA9PT0gcXVlcnlDcmVhdGVDb250ZXh0RW51bS5ORVdfUVVFUllcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1jYXB0aW9uLWxcIj57eyAnUmFpc2UgYSBxdWVyeScgfCBycHhUcmFuc2xhdGUgfX08L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxoMSBjbGFzcz1cImdvdnVrLWhlYWRpbmctbFwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInF1ZXJ5Q3JlYXRlQ29udGV4dCA9PT0gcXVlcnlDcmVhdGVDb250ZXh0RW51bS5SRVNQT05EOyBlbHNlIGRlZmF1bHRDaGVja1lvdXJBbnN3ZXJzVGl0bGVcIj5cbiAgICAgICAge3sgJ1JldmlldyBxdWVyeSByZXNwb25zZSBkZXRhaWxzJyB8IHJweFRyYW5zbGF0ZSB9fVxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdENoZWNrWW91ckFuc3dlcnNUaXRsZT5cbiAgICAgICAge3sgJ1JldmlldyBxdWVyeSBkZXRhaWxzJyB8IHJweFRyYW5zbGF0ZSB9fVxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2gxPlxuICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay0hLW1hcmdpbi1ib3R0b20tNFwiPlxuICAgICAgPGNjZC1xdWVyeS1jYXNlLWRldGFpbHMtaGVhZGVyPjwvY2NkLXF1ZXJ5LWNhc2UtZGV0YWlscy1oZWFkZXI+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGwgKm5nSWY9XCJxdWVyeUNyZWF0ZUNvbnRleHQgIT09IHF1ZXJ5Q3JlYXRlQ29udGV4dEVudW0uRk9MTE9XVVBcIiBjbGFzcz1cImdvdnVrLXN1bW1hcnktbGlzdCBnb3Z1ay0hLW1hcmdpbi1ib3R0b20tMFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImdvdnVrLXN1bW1hcnktbGlzdF9fcm93XCI+XG4gICAgICAgIDxkdCBjbGFzcz1cImdvdnVrLXN1bW1hcnktbGlzdF9fa2V5XCI+XG4gICAgICAgICAge3sgcXVlcnlDcmVhdGVDb250ZXh0ID09PSBxdWVyeUNyZWF0ZUNvbnRleHRFbnVtLlJFU1BPTkQgPyAnU3VibWl0dGVkIHF1ZXJ5JyA6ICdRdWVyeSBzdWJqZWN0JyB8IHJweFRyYW5zbGF0ZSB9fVxuICAgICAgICA8L2R0PlxuICAgICAgICA8ZGQgY2xhc3M9XCJnb3Z1ay1zdW1tYXJ5LWxpc3RfX3ZhbHVlXCI+XG4gICAgICAgICAge3sgcXVlcnlDcmVhdGVDb250ZXh0ID09PSBxdWVyeUNyZWF0ZUNvbnRleHRFbnVtLlJFU1BPTkQgPyBxdWVyeUl0ZW0uc3ViamVjdCA6IGZvcm1Hcm91cC5nZXQoJ3N1YmplY3QnKT8udmFsdWUgfX1cbiAgICAgICAgPC9kZD5cbiAgICAgICAgPGRkIGNsYXNzPVwiZ292dWstc3VtbWFyeS1saXN0X19hY3Rpb25zXCI+XG4gICAgICAgICAgPGEgICpuZ0lmPVwicXVlcnlDcmVhdGVDb250ZXh0ID09PSBxdWVyeUNyZWF0ZUNvbnRleHRFbnVtLk5FV19RVUVSWVwiIFxuICAgICAgICAgICAgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiIGNsYXNzPVwiZ292dWstbGlua1wiIChjbGljayk9XCJnb0JhY2soKVwiPlxuICAgICAgICAgICAge3sgJ0NoYW5nZScgfCBycHhUcmFuc2xhdGUgfX1cbiAgICAgICAgICA8L2E+XG4gICAgICAgIDwvZGQ+XG4gICAgICA8L2Rpdj5cbiAgICA8L2RsPlxuXG4gICAgPGRsIGNsYXNzPVwiZ292dWstc3VtbWFyeS1saXN0IGdvdnVrLSEtbWFyZ2luLWJvdHRvbS0wXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZ292dWstc3VtbWFyeS1saXN0X19yb3dcIj5cbiAgICAgICAgPGR0IGNsYXNzPVwiZ292dWstc3VtbWFyeS1saXN0X19rZXlcIj5cbiAgICAgICAgICB7eyBxdWVyeUNyZWF0ZUNvbnRleHQgPT09IHF1ZXJ5Q3JlYXRlQ29udGV4dEVudW0uUkVTUE9ORCA/ICdSZXNwb25zZSBkZXRhaWwnIDogJ1F1ZXJ5IGRldGFpbCcgfCBycHhUcmFuc2xhdGUgfX1cbiAgICAgICAgPC9kdD5cbiAgICAgICAgPGRkIGNsYXNzPVwiZ292dWstc3VtbWFyeS1saXN0X192YWx1ZVwiPlxuICAgICAgICAgIHt7IGZvcm1Hcm91cC5nZXQoJ2JvZHknKT8udmFsdWUgfX1cbiAgICAgICAgPC9kZD5cbiAgICAgICAgPGRkIGNsYXNzPVwiZ292dWstc3VtbWFyeS1saXN0X19hY3Rpb25zXCI+XG4gICAgICAgICAgPGEgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiIGNsYXNzPVwiZ292dWstbGlua1wiIChjbGljayk9XCJnb0JhY2soKVwiPlxuICAgICAgICAgICAge3sgJ0NoYW5nZScgfCBycHhUcmFuc2xhdGUgfX1cbiAgICAgICAgICA8L2E+XG4gICAgICAgIDwvZGQ+XG4gICAgICA8L2Rpdj5cbiAgICA8L2RsPlxuXG4gICAgPGRsICpuZ0lmPVwicXVlcnlDcmVhdGVDb250ZXh0ID09PSBxdWVyeUNyZWF0ZUNvbnRleHRFbnVtLk5FV19RVUVSWVwiIGNsYXNzPVwiZ292dWstc3VtbWFyeS1saXN0IGdvdnVrLSEtbWFyZ2luLWJvdHRvbS0wXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZ292dWstc3VtbWFyeS1saXN0X19yb3dcIj5cbiAgICAgICAgPGR0IGNsYXNzPVwiZ292dWstc3VtbWFyeS1saXN0X19rZXlcIj5cbiAgICAgICAgICB7eyAnSXMgdGhlIHF1ZXJ5IGhlYXJpbmcgcmVsYXRlZD8nIHwgcnB4VHJhbnNsYXRlIH19XG4gICAgICAgIDwvZHQ+XG4gICAgICAgIDxkZCBjbGFzcz1cImdvdnVrLXN1bW1hcnktbGlzdF9fdmFsdWVcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZm9ybUdyb3VwLmdldCgnaXNIZWFyaW5nUmVsYXRlZCcpPy52YWx1ZSA9PT0gdHJ1ZTsgZWxzZSBpc0hlYXJpbmdSZWxhdGVkRmFsc2VcIj5cbiAgICAgICAgICAgIHt7ICdJcyB0aGUgcXVlcnkgaGVhcmluZyByZWxhdGVkPycgfCBycHhUcmFuc2xhdGU6IG51bGwgOiAnWWVzJyB9fVxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjaXNIZWFyaW5nUmVsYXRlZEZhbHNlPlxuICAgICAgICAgICAge3sgJ0lzIHRoZSBxdWVyeSBoZWFyaW5nIHJlbGF0ZWQ/JyB8IHJweFRyYW5zbGF0ZTogbnVsbCA6ICdObycgfX1cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L2RkPlxuICAgICAgICA8ZGQgY2xhc3M9XCJnb3Z1ay1zdW1tYXJ5LWxpc3RfX2FjdGlvbnNcIj5cbiAgICAgICAgICA8YSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCIgY2xhc3M9XCJnb3Z1ay1saW5rXCIgKGNsaWNrKT1cImdvQmFjaygpXCI+XG4gICAgICAgICAgICB7eyAnQ2hhbmdlJyB8IHJweFRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvYT5cbiAgICAgICAgPC9kZD5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2ICpuZ0lmPVwiZm9ybUdyb3VwLmdldCgnaXNIZWFyaW5nUmVsYXRlZCcpPy52YWx1ZVwiIGNsYXNzPVwiZ292dWstc3VtbWFyeS1saXN0X19yb3dcIj5cbiAgICAgICAgPGR0IGNsYXNzPVwiZ292dWstc3VtbWFyeS1saXN0X19rZXlcIj5cbiAgICAgICAgICB7eyBxdWVyeUNyZWF0ZUNvbnRleHQgPT09IHF1ZXJ5Q3JlYXRlQ29udGV4dEVudW0uTkVXX1FVRVJZXG4gICAgICAgICAgICA/ICdXaGF0IGlzIHRoZSBkYXRlIG9mIHRoZSBoZWFyaW5nPydcbiAgICAgICAgICAgIDogJ1doYXQgaXMgdGhlIGRhdGUgb2YgdGhlIGhlYXJpbmcgeW91ciBxdWVyeSBpcyByZWxhdGVkIHRvPycgfCBycHhUcmFuc2xhdGUgfX1cbiAgICAgICAgPC9kdD5cbiAgICAgICAgPGRkIGNsYXNzPVwiZ292dWstc3VtbWFyeS1saXN0X192YWx1ZVwiPlxuICAgICAgICAgIHt7IGZvcm1Hcm91cC5nZXQoJ2hlYXJpbmdEYXRlJyk/LnZhbHVlIHwgZGF0ZTogJ2RkIE1NTSB5eXl5JyB9fVxuICAgICAgICA8L2RkPlxuICAgICAgICA8ZGQgY2xhc3M9XCJnb3Z1ay1zdW1tYXJ5LWxpc3RfX2FjdGlvbnNcIj5cbiAgICAgICAgICA8YSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCIgY2xhc3M9XCJnb3Z1ay1saW5rXCIgKGNsaWNrKT1cImdvQmFjaygpXCI+XG4gICAgICAgICAgICB7eyAnQ2hhbmdlJyB8IHJweFRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvYT5cbiAgICAgICAgPC9kZD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGw+XG5cbiAgICA8ZGwgY2xhc3M9XCJnb3Z1ay1zdW1tYXJ5LWxpc3QgZ292dWstIS1tYXJnaW4tYm90dG9tLTBcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1zdW1tYXJ5LWxpc3RfX3Jvd1wiPlxuICAgICAgICA8ZHQgY2xhc3M9XCJnb3Z1ay1zdW1tYXJ5LWxpc3RfX2tleVwiPlxuICAgICAgICAgIHt7IHF1ZXJ5Q3JlYXRlQ29udGV4dCA9PT0gcXVlcnlDcmVhdGVDb250ZXh0RW51bS5ORVdfUVVFUlkgPyAnVXBsb2FkIGEgZmlsZSB0byB0aGUgcXVlcnknIDogJ0RvY3VtZW50IGF0dGFjaGVkJyB8IHJweFRyYW5zbGF0ZSB9fVxuICAgICAgICA8L2R0PlxuICAgICAgICA8ZGQgY2xhc3M9XCJnb3Z1ay1zdW1tYXJ5LWxpc3RfX3ZhbHVlIGdvdnVrLXN1bW1hcnktbGlzdF9fdmFsdWUtLWRvY3VtZW50QXR0YWNoZWRcIj5cbiAgICAgICAgICA8Y2NkLXF1ZXJ5LWF0dGFjaG1lbnRzLXJlYWRcbiAgICAgICAgICAgICpuZ0lmPVwidGhpcy5mb3JtR3JvdXAuZ2V0KCdhdHRhY2htZW50cycpLnZhbHVlXCJcbiAgICAgICAgICAgIFthdHRhY2htZW50c109XCJ0aGlzLmZvcm1Hcm91cC5nZXQoJ2F0dGFjaG1lbnRzJykudmFsdWVcIlxuICAgICAgICAgID5cbiAgICAgICAgICA8L2NjZC1xdWVyeS1hdHRhY2htZW50cy1yZWFkPlxuICAgICAgICA8L2RkPlxuICAgICAgICA8ZGQgY2xhc3M9XCJnb3Z1ay1zdW1tYXJ5LWxpc3RfX2FjdGlvbnNcIj5cbiAgICAgICAgICA8YSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCIgY2xhc3M9XCJnb3Z1ay1saW5rXCIgKGNsaWNrKT1cImdvQmFjaygpXCI+XG4gICAgICAgICAgICB7eyAnQ2hhbmdlJyB8IHJweFRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvYT5cbiAgICAgICAgPC9kZD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGw+XG5cbiAgICA8YnI+XG5cbiAgICA8ZGl2PlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImdvdnVrLWJ1dHRvbiBnb3Z1ay1idXR0b24tLXNlY29uZGFyeSBnb3Z1ay0hLW1hcmdpbi1yaWdodC0zXCIgZGF0YS1tb2R1bGU9XCJnb3Z1ay1idXR0b25cIlxuICAgICAgICAoY2xpY2spPVwiZ29CYWNrKClcIj5cbiAgICAgICAge3sgJ1ByZXZpb3VzJyB8IHJweFRyYW5zbGF0ZSB9fVxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwiZ292dWstYnV0dG9uXCIgZGF0YS1tb2R1bGU9XCJnb3Z1ay1idXR0b25cIiAoY2xpY2spPVwic3VibWl0KClcIj5cbiAgICAgICAge3sgJ1N1Ym1pdCcgfCBycHhUcmFuc2xhdGUgfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8Y2NkLXF1ZXJ5LWV2ZW50LWNvbXBsZXRpb24gW2V2ZW50Q29tcGxldGlvblBhcmFtc109XCJldmVudENvbXBsZXRpb25QYXJhbXNcIj4gICAgXG4gIDwvY2NkLXF1ZXJ5LWV2ZW50LWNvbXBsZXRpb24+XG48L2Rpdj5cbiJdfQ==
431
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(QueryCheckYourAnswersComponent, { className: "QueryCheckYourAnswersComponent", filePath: "lib/shared/components/palette/query-management/components/query-check-your-answers/query-check-your-answers.component.ts", lineNumber: 23 }); })();
432
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktY2hlY2steW91ci1hbnN3ZXJzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9wYWxldHRlL3F1ZXJ5LW1hbmFnZW1lbnQvY29tcG9uZW50cy9xdWVyeS1jaGVjay15b3VyLWFuc3dlcnMvcXVlcnktY2hlY2steW91ci1hbnN3ZXJzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9wYWxldHRlL3F1ZXJ5LW1hbmFnZW1lbnQvY29tcG9uZW50cy9xdWVyeS1jaGVjay15b3VyLWFuc3dlcnMvcXVlcnktY2hlY2steW91ci1hbnN3ZXJzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXpELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0QyxPQUFPLEVBQ0wsZ0JBQWdCLEVBS2pCLE1BQU0sd0NBQXdDLENBQUM7QUFDaEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFaEUsT0FBTyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsbUJBQW1CLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUMxSCxPQUFPLEVBQWtELGtCQUFrQixFQUFFLGFBQWEsRUFB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Q0Y7WUFERSxxR0FDRjtZQUdJLGVBQ0Y7WUFERSxpRUFDRjtZQUtELGVBQTZEO1lBQTdELHNGQUE2RDtZQXdDNUQsZUFDRjtZQURFLDZLQUNGO1lBR0ssZUFBNkM7WUFBN0MsNkRBQTZDO1lBTzlDLGVBQ0Y7WUFERSxpRUFDRjtZQVVGLGVBQ0Y7WUFERSxtRUFDRjtZQUVFLGVBQ0Y7WUFERSxpRUFDRjtZQUl3QixlQUErQztZQUEvQyxpRUFBK0M7OztpRkRySGhFLDhCQUE4QjtjQUwxQyxTQUFTOzJCQUNFLDhCQUE4QjtvT0FXeEIsU0FBUztrQkFBeEIsS0FBSztZQUNVLFNBQVM7a0JBQXhCLEtBQUs7WUFDVSxrQkFBa0I7a0JBQWpDLEtBQUs7WUFDVSxTQUFTO2tCQUF4QixLQUFLO1lBQ1csV0FBVztrQkFBM0IsTUFBTTtZQUNVLGNBQWM7a0JBQTlCLE1BQU07O2tGQVpJLDhCQUE4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1xuICBDYXNlRXZlbnRUcmlnZ2VyLFxuICBDYXNlVmlldyxcbiAgQ2FzZVZpZXdUcmlnZ2VyLFxuICBFcnJvck1lc3NhZ2UsXG4gIFRhc2tTZWFyY2hQYXJhbWV0ZXJcbn0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGliL3NoYXJlZC9kb21haW4nO1xuaW1wb3J0IHsgU2Vzc2lvblN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHsgRXZlbnRDb21wbGV0aW9uUGFyYW1zIH0gZnJvbSAnLi4vLi4vLi4vLi4vY2FzZS1lZGl0b3IvZG9tYWluL2V2ZW50LWNvbXBsZXRpb24tcGFyYW1zLm1vZGVsJztcbmltcG9ydCB7IENhc2VOb3RpZmllciwgQ2FzZXNTZXJ2aWNlLCBFdmVudFRyaWdnZXJTZXJ2aWNlLCBXb3JrQWxsb2NhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9jYXNlLWVkaXRvci9zZXJ2aWNlcyc7XG5pbXBvcnQgeyBDYXNlUXVlcmllc0NvbGxlY3Rpb24sIFFtQ2FzZVF1ZXJpZXNDb2xsZWN0aW9uLCBRdWVyeUNyZWF0ZUNvbnRleHQsIFF1ZXJ5TGlzdEl0ZW0gfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHsgUXVlcnlNYW5hZ2VtZW50VXRpbHMgfSBmcm9tICcuLi8uLi91dGlscy9xdWVyeS1tYW5hZ2VtZW50LnV0aWxzJztcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NjZC1xdWVyeS1jaGVjay15b3VyLWFuc3dlcnMnLFxuICB0ZW1wbGF0ZVVybDogJy4vcXVlcnktY2hlY2steW91ci1hbnN3ZXJzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcXVlcnktY2hlY2steW91ci1hbnN3ZXJzLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgUXVlcnlDaGVja1lvdXJBbnN3ZXJzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIHJlYWRvbmx5IFJBSVNFX0FfUVVFUllfRVZFTlRfVFJJR0dFUl9JRCA9ICdxdWVyeU1hbmFnZW1lbnRSYWlzZVF1ZXJ5JztcbiAgcHJpdmF0ZSByZWFkb25seSBSRVNQT05EX1RPX1FVRVJZX0VWRU5UX1RSSUdHRVJfSUQgPSAncXVlcnlNYW5hZ2VtZW50UmVzcG9uZFF1ZXJ5JztcblxuICBwcml2YXRlIHJlYWRvbmx5IENBU0VfUVVFUklFU19DT0xMRUNUSU9OX0lEID0gJ0Nhc2VRdWVyaWVzQ29sbGVjdGlvbic7XG4gIHB1YmxpYyByZWFkb25seSBGSUVMRF9UWVBFX0NPTVBMRVggPSAnQ29tcGxleCc7XG5cbiAgQElucHV0KCkgcHVibGljIGZvcm1Hcm91cDogRm9ybUdyb3VwO1xuICBASW5wdXQoKSBwdWJsaWMgcXVlcnlJdGVtOiBRdWVyeUxpc3RJdGVtO1xuICBASW5wdXQoKSBwdWJsaWMgcXVlcnlDcmVhdGVDb250ZXh0OiBRdWVyeUNyZWF0ZUNvbnRleHQ7XG4gIEBJbnB1dCgpIHB1YmxpYyBldmVudERhdGE6IENhc2VFdmVudFRyaWdnZXIgfCBudWxsID0gbnVsbDtcbiAgQE91dHB1dCgpIHB1YmxpYyBiYWNrQ2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgQE91dHB1dCgpIHB1YmxpYyBxdWVyeVN1Ym1pdHRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICBwcml2YXRlIGNhc2VWaWV3VHJpZ2dlcjogQ2FzZVZpZXdUcmlnZ2VyO1xuICBwcml2YXRlIGNhc2VEZXRhaWxzOiBDYXNlVmlldztcbiAgcHJpdmF0ZSBxdWVyeUlkOiBzdHJpbmc7XG4gIHByaXZhdGUgY3JlYXRlRXZlbnRTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSBzZWFyY2hUYXNrc1N1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gIHB1YmxpYyBxdWVyeUNyZWF0ZUNvbnRleHRFbnVtID0gUXVlcnlDcmVhdGVDb250ZXh0O1xuICBwdWJsaWMgZXZlbnRDb21wbGV0aW9uUGFyYW1zOiBFdmVudENvbXBsZXRpb25QYXJhbXM7XG4gIHB1YmxpYyBjYXNlUXVlcmllc0NvbGxlY3Rpb25zOiBDYXNlUXVlcmllc0NvbGxlY3Rpb25bXTtcbiAgcHVibGljIGZpZWxkSWQ6IHN0cmluZztcblxuICBwdWJsaWMgZXJyb3JNZXNzYWdlczogRXJyb3JNZXNzYWdlW10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2FzZXNTZXJ2aWNlOiBDYXNlc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjYXNlTm90aWZpZXI6IENhc2VOb3RpZmllcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IHdvcmtBbGxvY2F0aW9uU2VydmljZTogV29ya0FsbG9jYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlOiBTZXNzaW9uU3RvcmFnZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBldmVudFRyaWdnZXJTZXJ2aWNlOiBFdmVudFRyaWdnZXJTZXJ2aWNlXG4gICkge31cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5xdWVyeUlkID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbXMucWlkO1xuICAgIHRoaXMuY2FzZU5vdGlmaWVyLmNhc2VWaWV3LnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKChjYXNlRGV0YWlscykgPT4ge1xuICAgICAgdGhpcy5jYXNlRGV0YWlscyA9IGNhc2VEZXRhaWxzO1xuXG4gICAgICAvLyBGaW5kIHRoZSBhcHByb3ByaWF0ZSBldmVudCB0cmlnZ2VyIGJhc2VkIG9uIHRoZSBxdWVyeUNyZWF0ZUNvbnRleHRcbiAgICAgIHRoaXMuY2FzZVZpZXdUcmlnZ2VyID0gdGhpcy5jYXNlRGV0YWlscy50cmlnZ2Vycy5maW5kKCh0cmlnZ2VyKSA9PlxuICAgICAgICB0aGlzLnF1ZXJ5Q3JlYXRlQ29udGV4dCAhPT0gUXVlcnlDcmVhdGVDb250ZXh0LlJFU1BPTkRcbiAgICAgICAgLy8gSWYgdGhlIGNvbnRleHQgaXMgbm90ICdSRVNQT05EJywgZmluZCB0aGUgdHJpZ2dlciB3aXRoIHRoZSBJRCBmb3IgcmFpc2luZyBhIHF1ZXJ5XG4gICAgICAgICAgPyB0cmlnZ2VyLmlkID09PSB0aGlzLlJBSVNFX0FfUVVFUllfRVZFTlRfVFJJR0dFUl9JRFxuICAgICAgICAvLyBJZiB0aGUgY29udGV4dCBpcyAnUkVTUE9ORCcsIGZpbmQgdGhlIHRyaWdnZXIgd2l0aCB0aGUgSUQgZm9yIHJlc3BvbmRpbmcgdG8gYSBxdWVyeVxuICAgICAgICAgIDogdHJpZ2dlci5pZCA9PT0gdGhpcy5SRVNQT05EX1RPX1FVRVJZX0VWRU5UX1RSSUdHRVJfSURcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICB0aGlzLnNldENhc2VRdWVyaWVzQ29sbGVjdGlvbkRhdGEoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmNyZWF0ZUV2ZW50U3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuc2VhcmNoVGFza3NTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwdWJsaWMgZ29CYWNrKCk6IHZvaWQge1xuICAgIHRoaXMuYmFja0NsaWNrZWQuZW1pdCh0cnVlKTtcbiAgfVxuXG4gIHB1YmxpYyBzdWJtaXQoKTogdm9pZCB7XG4gICAgLy8gQ2hlY2sgaWYgZmllbGRJZCBpcyBudWxsIG9yIHVuZGVmaW5lZFxuICAgIGlmICghdGhpcy5maWVsZElkKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdFcnJvcjogRmllbGQgSUQgaXMgbWlzc2luZy4gQ2Fubm90IHByb2NlZWQgd2l0aCBzdWJtaXNzaW9uLicpO1xuICAgICAgdGhpcy5lcnJvck1lc3NhZ2VzID0gW1xuICAgICAgICB7XG4gICAgICAgICAgdGl0bGU6ICdFcnJvcicsXG4gICAgICAgICAgZGVzY3JpcHRpb246ICdTb21ldGhpbmcgdW5leHBlY3RlZCBoYXBwZW5lZC4gcGxlYXNlIHRyeSBhZ2FpbiBsYXRlci4nLFxuICAgICAgICAgIGZpZWxkSWQ6ICdmaWVsZC1pZCdcbiAgICAgICAgfVxuICAgICAgXTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBkYXRhID0gdGhpcy5nZW5lcmF0ZUNhc2VRdWVyaWVzQ29sbGVjdGlvbkRhdGEoKTtcbiAgICB0aGlzLmNyZWF0ZUV2ZW50U3Vic2NyaXB0aW9uID0gdGhpcy5jYXNlc1NlcnZpY2UuY3JlYXRlRXZlbnQodGhpcy5jYXNlRGV0YWlscywge1xuICAgICAgZGF0YSxcbiAgICAgIGV2ZW50OiB7XG4gICAgICAgIGlkOiB0aGlzLmNhc2VWaWV3VHJpZ2dlcj8uaWQsXG4gICAgICAgIHN1bW1hcnk6ICcnLFxuICAgICAgICBkZXNjcmlwdGlvbjogdGhpcy5jYXNlVmlld1RyaWdnZXI/LmRlc2NyaXB0aW9uXG4gICAgICB9LFxuICAgICAgZXZlbnRfdG9rZW46IHRoaXMuZXZlbnREYXRhPy5ldmVudF90b2tlbixcbiAgICAgIGlnbm9yZV93YXJuaW5nOiBmYWxzZVxuICAgIH0pLnN1YnNjcmliZShcbiAgICAgICgpID0+IHtcbiAgICAgICAgLy8gU2VhcmNoIGFuZCBjb21wbGV0ZSB0YXNrXG4gICAgICAgIHRoaXMuc2VhcmNoQW5kQ29tcGxldGVUYXNrKCk7XG4gICAgICAgIC8vIEVtaXQgcXVlcnkgc3VibWl0dGVkIGV2ZW50XG4gICAgICAgIHRoaXMucXVlcnlTdWJtaXR0ZWQuZW1pdCh0cnVlKTtcbiAgICAgIH0sXG4gICAgICAvLyBFcnJvclxuICAgICAgKCkgPT4gdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvJywgJ3NlcnZpY2UtZG93biddKVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgc2VhcmNoQW5kQ29tcGxldGVUYXNrKCk6IHZvaWQge1xuICAgIC8vIFNlYXJjaCBUYXNrXG4gICAgY29uc3Qgc2VhcmNoUGFyYW1ldGVyID0geyBjY2RJZDogdGhpcy5jYXNlRGV0YWlscy5jYXNlX2lkIH0gYXMgVGFza1NlYXJjaFBhcmFtZXRlcjtcbiAgICB0aGlzLnNlYXJjaFRhc2tzU3Vic2NyaXB0aW9uID0gdGhpcy53b3JrQWxsb2NhdGlvblNlcnZpY2Uuc2VhcmNoVGFza3Moc2VhcmNoUGFyYW1ldGVyKVxuICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgICAvLyBGaWx0ZXIgdGFzayBieSBxdWVyeSBpZFxuICAgICAgICAgIGNvbnN0IGZpbHRlcmVkVGFzayA9IHJlc3BvbnNlLnRhc2tzPy5maW5kKCh0YXNrKSA9PlxuICAgICAgICAgICAgT2JqZWN0LnZhbHVlcyh0YXNrLmFkZGl0aW9uYWxfcHJvcGVydGllcykuc29tZSgodmFsdWUpID0+IHZhbHVlID09PSB0aGlzLnF1ZXJ5SWQpXG4gICAgICAgICAgKTtcbiAgICAgICAgICAvLyBUcmlnZ2VyIGV2ZW50IGNvbXBsZXRpb25cbiAgICAgICAgICB0aGlzLmV2ZW50Q29tcGxldGlvblBhcmFtcyA9IHtcbiAgICAgICAgICAgIGNhc2VJZDogdGhpcy5jYXNlRGV0YWlscy5jYXNlX2lkLFxuICAgICAgICAgICAgZXZlbnRJZDogdGhpcy5SRVNQT05EX1RPX1FVRVJZX0VWRU5UX1RSSUdHRVJfSUQsXG4gICAgICAgICAgICB0YXNrOiBmaWx0ZXJlZFRhc2tcbiAgICAgICAgICB9O1xuICAgICAgICB9LFxuICAgICAgICAoZXJyb3IpID0+IHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBpbiBzZWFyY2hUYXNrc1N1YnNjcmlwdGlvbjonLCBlcnJvcik7XG4gICAgICAgICAgLy8gSGFuZGxlIGVycm9yIGFwcHJvcHJpYXRlbHlcbiAgICAgICAgfVxuICAgICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2VuZXJhdGVDYXNlUXVlcmllc0NvbGxlY3Rpb25EYXRhKCk6IFFtQ2FzZVF1ZXJpZXNDb2xsZWN0aW9uIHtcbiAgICBjb25zdCBjdXJyZW50VXNlckRldGFpbHMgPSBKU09OLnBhcnNlKHRoaXMuc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlLmdldEl0ZW0oJ3VzZXJEZXRhaWxzJykpO1xuXG4gICAgY29uc3QgY2FzZU1lc3NhZ2UgPSB0aGlzLnF1ZXJ5Q3JlYXRlQ29udGV4dCA9PT0gUXVlcnlDcmVhdGVDb250ZXh0Lk5FV19RVUVSWVxuICAgICAgPyBRdWVyeU1hbmFnZW1lbnRVdGlscy5nZXROZXdRdWVyeURhdGEodGhpcy5mb3JtR3JvdXAsIGN1cnJlbnRVc2VyRGV0YWlscylcbiAgICAgIDogUXVlcnlNYW5hZ2VtZW50VXRpbHMuZ2V0UmVzcG9uZE9yRm9sbG93dXBRdWVyeURhdGEodGhpcy5mb3JtR3JvdXAsIHRoaXMucXVlcnlJdGVtLCBjdXJyZW50VXNlckRldGFpbHMpO1xuXG4gICAgLy8gQ2hlY2sgaWYgdGhlIGZpZWxkIElEIGhhcyBiZWVuIHNldCBkeW5hbWljYWxseVxuICAgIGlmICghdGhpcy5maWVsZElkKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdFcnJvcjogRmllbGQgSUQgZm9yIENhc2VRdWVyaWVzQ29sbGVjdGlvbiBub3QgZm91bmQuIENhbm5vdCBwcm9jZWVkIHdpdGggZGF0YSBnZW5lcmF0aW9uLicpO1xuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvJywgJ3NlcnZpY2UtZG93biddKTtcbiAgICB9XG5cbiAgICAvLyBCYXNlIGRhdGEgc3RydWN0dXJlIGZvciB0aGUgcXVlcnkgd2l0aCBkeW5hbWljIHByb3BlcnR5IG5hbWVcbiAgICBjb25zdCBuZXdRdWVyeURhdGE6IFFtQ2FzZVF1ZXJpZXNDb2xsZWN0aW9uID0ge1xuICAgICAgW3RoaXMuZmllbGRJZF06IHtcbiAgICAgICAgcGFydHlOYW1lOiAnJywgLy8gTm90IHJldHVybmVkIGJ5IENDRFxuICAgICAgICByb2xlT25DYXNlOiAnJywgLy8gTm90IHJldHVybmVkIGJ5IENDRFxuICAgICAgICBjYXNlTWVzc2FnZXM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBpZDogbnVsbCxcbiAgICAgICAgICAgIHZhbHVlOiBjYXNlTWVzc2FnZVxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfVxuICAgIH07XG5cbiAgICAvLyBJZiBjYXNlUXVlcmllc0NvbGxlY3Rpb25zIGlzIG5vdCBlbXB0eSwgYXBwZW5kIGl0cyBkYXRhXG4gICAgaWYgKHRoaXMuY2FzZVF1ZXJpZXNDb2xsZWN0aW9ucz8ubGVuZ3RoKSB7XG4gICAgICBuZXdRdWVyeURhdGFbdGhpcy5maWVsZElkXS5jYXNlTWVzc2FnZXMucHVzaChcbiAgICAgICAgLi4udGhpcy5jYXNlUXVlcmllc0NvbGxlY3Rpb25zLmZsYXRNYXAoKGNvbGxlY3Rpb24pID0+IGNvbGxlY3Rpb24uY2FzZU1lc3NhZ2VzKVxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ld1F1ZXJ5RGF0YTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRDYXNlUXVlcmllc0NvbGxlY3Rpb25EYXRhKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmV2ZW50RGF0YT8uY2FzZV9maWVsZHM/Lmxlbmd0aCkge1xuICAgICAgdGhpcy5jYXNlUXVlcmllc0NvbGxlY3Rpb25zID0gdGhpcy5ldmVudERhdGEuY2FzZV9maWVsZHMucmVkdWNlKChhY2MsIGNhc2VGaWVsZCkgPT4ge1xuICAgICAgICAvLyBFeHRyYWN0IHRoZSBJRCBiYXNlZCBvbiBjb25kaXRpb25zLCB1cGRhdGluZyB0aGlzLmZpZWxkSWQgZHluYW1pY2FsbHlcblxuICAgICAgICB0aGlzLmV4dHJhY3RDYXNlUXVlcnlJZChjYXNlRmllbGQpO1xuICAgICAgICBjb25zdCBleHRyYWN0ZWRDYXNlUXVlcmllc0Zyb21DYXNlRmllbGQgPSBRdWVyeU1hbmFnZW1lbnRVdGlscy5leHRyYWN0Q2FzZVF1ZXJpZXNGcm9tQ2FzZUZpZWxkKGNhc2VGaWVsZCk7XG4gICAgICAgIGlmIChleHRyYWN0ZWRDYXNlUXVlcmllc0Zyb21DYXNlRmllbGQgJiYgdHlwZW9mIGV4dHJhY3RlZENhc2VRdWVyaWVzRnJvbUNhc2VGaWVsZCA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICBhY2MucHVzaChleHRyYWN0ZWRDYXNlUXVlcmllc0Zyb21DYXNlRmllbGQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhY2M7XG4gICAgICB9LCBbXSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBleHRyYWN0Q2FzZVF1ZXJ5SWQoZGF0YSk6IHZvaWQge1xuICAgIC8vIENoZWNrIGlmIGZpZWxkX3R5cGUuaWQgaXMgJ0Nhc2VRdWVyaWVzQ29sbGVjdGlvbicgYW5kIGZpZWxkX3R5cGUudHlwZSBpcyAnQ29tcGxleCdcbiAgICBpZiAoXG4gICAgICBkYXRhLmZpZWxkX3R5cGUuaWQgPT09IHRoaXMuQ0FTRV9RVUVSSUVTX0NPTExFQ1RJT05fSUQgJiZcbiAgICAgIGRhdGEuZmllbGRfdHlwZS50eXBlID09PSB0aGlzLkZJRUxEX1RZUEVfQ09NUExFWFxuICAgICkge1xuICAgICAgLy8gU2V0IHRoZSBmaWVsZCBJRCBkeW5hbWljYWxseSBiYXNlZCBvbiB0aGUgZXh0cmFjdGVkIGRhdGFcbiAgICAgIHRoaXMuZmllbGRJZCA9IGRhdGEuaWQ7IC8vIFN0b3JlIHRoZSBJRCBmb3IgdXNlIGluIGdlbmVyYXRpbmcgbmV3UXVlcnlEYXRhXG4gICAgfVxuICB9XG59XG5cbiIsIjxkaXYgY2xhc3M9XCJnb3Z1ay1ncmlkLXJvd1wiPlxuICA8ZGl2IGNsYXNzPVwiZ292dWstZ3JpZC1jb2x1bW4tdHdvLXRoaXJkcy1mcm9tLWRlc2t0b3BcIj5cbiAgICA8IS0tIEVycm9yIG1lc3NhZ2Ugc3VtbWFyeSAtLT5cbiAgICA8ZGl2ICpuZ0lmPVwiZXJyb3JNZXNzYWdlcy5sZW5ndGggPiAwXCIgY2xhc3M9XCJnb3Z1ay1lcnJvci1zdW1tYXJ5XCJcbiAgICAgIGFyaWEtbGFiZWxsZWRieT1cImVycm9yLXN1bW1hcnktdGl0bGVcIiByb2xlPVwiYWxlcnRcIiB0YWJpbmRleD1cIi0xXCJcbiAgICAgIGRhdGEtbW9kdWxlPVwiZ292dWstZXJyb3Itc3VtbWFyeVwiPlxuICAgICA8aDIgY2xhc3M9XCJnb3Z1ay1lcnJvci1zdW1tYXJ5X190aXRsZVwiIGlkPVwiZXJyb3Itc3VtbWFyeS10aXRsZVwiPlxuICAgICAgIHt7ICdUaGVyZSBpcyBhIHByb2JsZW0nIHwgcnB4VHJhbnNsYXRlIH19XG4gICAgIDwvaDI+XG4gICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1lcnJvci1zdW1tYXJ5X19ib2R5XCI+XG4gICAgICAgPHVsIGNsYXNzPVwiZ292dWstbGlzdCBnb3Z1ay1lcnJvci1zdW1tYXJ5X19saXN0XCI+XG4gICAgICAgICA8bGkgKm5nRm9yPVwibGV0IGVycm9yTWVzc2FnZSBvZiBlcnJvck1lc3NhZ2VzXCI+XG4gICAgICAgICAgIDxhIFtpZF09XCInZXJyb3ItJyArIGVycm9yTWVzc2FnZS5maWVsZElkXCIgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiXG4gICAgICAgICAgICAgY2xhc3M9XCJ2YWxpZGF0aW9uLWVycm9yXCI+e3sgZXJyb3JNZXNzYWdlLmRlc2NyaXB0aW9uIHwgcnB4VHJhbnNsYXRlIH19PC9hPlxuICAgICAgICAgPC9saT5cbiAgICAgICA8L3VsPlxuICAgICA8L2Rpdj5cbiAgIDwvZGl2PlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInF1ZXJ5Q3JlYXRlQ29udGV4dCA9PT0gcXVlcnlDcmVhdGVDb250ZXh0RW51bS5ORVdfUVVFUllcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1jYXB0aW9uLWxcIj57eyAnUmFpc2UgYSBxdWVyeScgfCBycHhUcmFuc2xhdGUgfX08L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxoMSBjbGFzcz1cImdvdnVrLWhlYWRpbmctbFwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInF1ZXJ5Q3JlYXRlQ29udGV4dCA9PT0gcXVlcnlDcmVhdGVDb250ZXh0RW51bS5SRVNQT05EOyBlbHNlIGRlZmF1bHRDaGVja1lvdXJBbnN3ZXJzVGl0bGVcIj5cbiAgICAgICAge3sgJ1JldmlldyBxdWVyeSByZXNwb25zZSBkZXRhaWxzJyB8IHJweFRyYW5zbGF0ZSB9fVxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdENoZWNrWW91ckFuc3dlcnNUaXRsZT5cbiAgICAgICAge3sgJ1JldmlldyBxdWVyeSBkZXRhaWxzJyB8IHJweFRyYW5zbGF0ZSB9fVxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2gxPlxuICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay0hLW1hcmdpbi1ib3R0b20tNFwiPlxuICAgICAgPGNjZC1xdWVyeS1jYXNlLWRldGFpbHMtaGVhZGVyPjwvY2NkLXF1ZXJ5LWNhc2UtZGV0YWlscy1oZWFkZXI+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGwgKm5nSWY9XCJxdWVyeUNyZWF0ZUNvbnRleHQgIT09IHF1ZXJ5Q3JlYXRlQ29udGV4dEVudW0uRk9MTE9XVVBcIiBjbGFzcz1cImdvdnVrLXN1bW1hcnktbGlzdCBnb3Z1ay0hLW1hcmdpbi1ib3R0b20tMFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImdvdnVrLXN1bW1hcnktbGlzdF9fcm93XCI+XG4gICAgICAgIDxkdCBjbGFzcz1cImdvdnVrLXN1bW1hcnktbGlzdF9fa2V5XCI+XG4gICAgICAgICAge3sgcXVlcnlDcmVhdGVDb250ZXh0ID09PSBxdWVyeUNyZWF0ZUNvbnRleHRFbnVtLlJFU1BPTkQgPyAnU3VibWl0dGVkIHF1ZXJ5JyA6ICdRdWVyeSBzdWJqZWN0JyB8IHJweFRyYW5zbGF0ZSB9fVxuICAgICAgICA8L2R0PlxuICAgICAgICA8ZGQgY2xhc3M9XCJnb3Z1ay1zdW1tYXJ5LWxpc3RfX3ZhbHVlXCI+XG4gICAgICAgICAge3sgcXVlcnlDcmVhdGVDb250ZXh0ID09PSBxdWVyeUNyZWF0ZUNvbnRleHRFbnVtLlJFU1BPTkQgPyBxdWVyeUl0ZW0uc3ViamVjdCA6IGZvcm1Hcm91cC5nZXQoJ3N1YmplY3QnKT8udmFsdWUgfX1cbiAgICAgICAgPC9kZD5cbiAgICAgICAgPGRkIGNsYXNzPVwiZ292dWstc3VtbWFyeS1saXN0X19hY3Rpb25zXCI+XG4gICAgICAgICAgPGEgICpuZ0lmPVwicXVlcnlDcmVhdGVDb250ZXh0ID09PSBxdWVyeUNyZWF0ZUNvbnRleHRFbnVtLk5FV19RVUVSWVwiIFxuICAgICAgICAgICAgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiIGNsYXNzPVwiZ292dWstbGlua1wiIChjbGljayk9XCJnb0JhY2soKVwiPlxuICAgICAgICAgICAge3sgJ0NoYW5nZScgfCBycHhUcmFuc2xhdGUgfX1cbiAgICAgICAgICA8L2E+XG4gICAgICAgIDwvZGQ+XG4gICAgICA8L2Rpdj5cbiAgICA8L2RsPlxuXG4gICAgPGRsIGNsYXNzPVwiZ292dWstc3VtbWFyeS1saXN0IGdvdnVrLSEtbWFyZ2luLWJvdHRvbS0wXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZ292dWstc3VtbWFyeS1saXN0X19yb3dcIj5cbiAgICAgICAgPGR0IGNsYXNzPVwiZ292dWstc3VtbWFyeS1saXN0X19rZXlcIj5cbiAgICAgICAgICB7eyBxdWVyeUNyZWF0ZUNvbnRleHQgPT09IHF1ZXJ5Q3JlYXRlQ29udGV4dEVudW0uUkVTUE9ORCA/ICdSZXNwb25zZSBkZXRhaWwnIDogJ1F1ZXJ5IGRldGFpbCcgfCBycHhUcmFuc2xhdGUgfX1cbiAgICAgICAgPC9kdD5cbiAgICAgICAgPGRkIGNsYXNzPVwiZ292dWstc3VtbWFyeS1saXN0X192YWx1ZVwiPlxuICAgICAgICAgIHt7IGZvcm1Hcm91cC5nZXQoJ2JvZHknKT8udmFsdWUgfX1cbiAgICAgICAgPC9kZD5cbiAgICAgICAgPGRkIGNsYXNzPVwiZ292dWstc3VtbWFyeS1saXN0X19hY3Rpb25zXCI+XG4gICAgICAgICAgPGEgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiIGNsYXNzPVwiZ292dWstbGlua1wiIChjbGljayk9XCJnb0JhY2soKVwiPlxuICAgICAgICAgICAge3sgJ0NoYW5nZScgfCBycHhUcmFuc2xhdGUgfX1cbiAgICAgICAgICA8L2E+XG4gICAgICAgIDwvZGQ+XG4gICAgICA8L2Rpdj5cbiAgICA8L2RsPlxuXG4gICAgPGRsICpuZ0lmPVwicXVlcnlDcmVhdGVDb250ZXh0ID09PSBxdWVyeUNyZWF0ZUNvbnRleHRFbnVtLk5FV19RVUVSWVwiIGNsYXNzPVwiZ292dWstc3VtbWFyeS1saXN0IGdvdnVrLSEtbWFyZ2luLWJvdHRvbS0wXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZ292dWstc3VtbWFyeS1saXN0X19yb3dcIj5cbiAgICAgICAgPGR0IGNsYXNzPVwiZ292dWstc3VtbWFyeS1saXN0X19rZXlcIj5cbiAgICAgICAgICB7eyAnSXMgdGhlIHF1ZXJ5IGhlYXJpbmcgcmVsYXRlZD8nIHwgcnB4VHJhbnNsYXRlIH19XG4gICAgICAgIDwvZHQ+XG4gICAgICAgIDxkZCBjbGFzcz1cImdvdnVrLXN1bW1hcnktbGlzdF9fdmFsdWVcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZm9ybUdyb3VwLmdldCgnaXNIZWFyaW5nUmVsYXRlZCcpPy52YWx1ZSA9PT0gdHJ1ZTsgZWxzZSBpc0hlYXJpbmdSZWxhdGVkRmFsc2VcIj5cbiAgICAgICAgICAgIHt7ICdJcyB0aGUgcXVlcnkgaGVhcmluZyByZWxhdGVkPycgfCBycHhUcmFuc2xhdGU6IG51bGwgOiAnWWVzJyB9fVxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjaXNIZWFyaW5nUmVsYXRlZEZhbHNlPlxuICAgICAgICAgICAge3sgJ0lzIHRoZSBxdWVyeSBoZWFyaW5nIHJlbGF0ZWQ/JyB8IHJweFRyYW5zbGF0ZTogbnVsbCA6ICdObycgfX1cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L2RkPlxuICAgICAgICA8ZGQgY2xhc3M9XCJnb3Z1ay1zdW1tYXJ5LWxpc3RfX2FjdGlvbnNcIj5cbiAgICAgICAgICA8YSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCIgY2xhc3M9XCJnb3Z1ay1saW5rXCIgKGNsaWNrKT1cImdvQmFjaygpXCI+XG4gICAgICAgICAgICB7eyAnQ2hhbmdlJyB8IHJweFRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvYT5cbiAgICAgICAgPC9kZD5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2ICpuZ0lmPVwiZm9ybUdyb3VwLmdldCgnaXNIZWFyaW5nUmVsYXRlZCcpPy52YWx1ZVwiIGNsYXNzPVwiZ292dWstc3VtbWFyeS1saXN0X19yb3dcIj5cbiAgICAgICAgPGR0IGNsYXNzPVwiZ292dWstc3VtbWFyeS1saXN0X19rZXlcIj5cbiAgICAgICAgICB7eyBxdWVyeUNyZWF0ZUNvbnRleHQgPT09IHF1ZXJ5Q3JlYXRlQ29udGV4dEVudW0uTkVXX1FVRVJZXG4gICAgICAgICAgICA/ICdXaGF0IGlzIHRoZSBkYXRlIG9mIHRoZSBoZWFyaW5nPydcbiAgICAgICAgICAgIDogJ1doYXQgaXMgdGhlIGRhdGUgb2YgdGhlIGhlYXJpbmcgeW91ciBxdWVyeSBpcyByZWxhdGVkIHRvPycgfCBycHhUcmFuc2xhdGUgfX1cbiAgICAgICAgPC9kdD5cbiAgICAgICAgPGRkIGNsYXNzPVwiZ292dWstc3VtbWFyeS1saXN0X192YWx1ZVwiPlxuICAgICAgICAgIHt7IGZvcm1Hcm91cC5nZXQoJ2hlYXJpbmdEYXRlJyk/LnZhbHVlIHwgZGF0ZTogJ2RkIE1NTSB5eXl5JyB9fVxuICAgICAgICA8L2RkPlxuICAgICAgICA8ZGQgY2xhc3M9XCJnb3Z1ay1zdW1tYXJ5LWxpc3RfX2FjdGlvbnNcIj5cbiAgICAgICAgICA8YSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCIgY2xhc3M9XCJnb3Z1ay1saW5rXCIgKGNsaWNrKT1cImdvQmFjaygpXCI+XG4gICAgICAgICAgICB7eyAnQ2hhbmdlJyB8IHJweFRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvYT5cbiAgICAgICAgPC9kZD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGw+XG5cbiAgICA8ZGwgY2xhc3M9XCJnb3Z1ay1zdW1tYXJ5LWxpc3QgZ292dWstIS1tYXJnaW4tYm90dG9tLTBcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1zdW1tYXJ5LWxpc3RfX3Jvd1wiPlxuICAgICAgICA8ZHQgY2xhc3M9XCJnb3Z1ay1zdW1tYXJ5LWxpc3RfX2tleVwiPlxuICAgICAgICAgIHt7IHF1ZXJ5Q3JlYXRlQ29udGV4dCA9PT0gcXVlcnlDcmVhdGVDb250ZXh0RW51bS5ORVdfUVVFUlkgPyAnVXBsb2FkIGEgZmlsZSB0byB0aGUgcXVlcnknIDogJ0RvY3VtZW50IGF0dGFjaGVkJyB8IHJweFRyYW5zbGF0ZSB9fVxuICAgICAgICA8L2R0PlxuICAgICAgICA8ZGQgY2xhc3M9XCJnb3Z1ay1zdW1tYXJ5LWxpc3RfX3ZhbHVlIGdvdnVrLXN1bW1hcnktbGlzdF9fdmFsdWUtLWRvY3VtZW50QXR0YWNoZWRcIj5cbiAgICAgICAgICA8Y2NkLXF1ZXJ5LWF0dGFjaG1lbnRzLXJlYWRcbiAgICAgICAgICAgICpuZ0lmPVwidGhpcy5mb3JtR3JvdXAuZ2V0KCdhdHRhY2htZW50cycpLnZhbHVlXCJcbiAgICAgICAgICAgIFthdHRhY2htZW50c109XCJ0aGlzLmZvcm1Hcm91cC5nZXQoJ2F0dGFjaG1lbnRzJykudmFsdWVcIlxuICAgICAgICAgID5cbiAgICAgICAgICA8L2NjZC1xdWVyeS1hdHRhY2htZW50cy1yZWFkPlxuICAgICAgICA8L2RkPlxuICAgICAgICA8ZGQgY2xhc3M9XCJnb3Z1ay1zdW1tYXJ5LWxpc3RfX2FjdGlvbnNcIj5cbiAgICAgICAgICA8YSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCIgY2xhc3M9XCJnb3Z1ay1saW5rXCIgKGNsaWNrKT1cImdvQmFjaygpXCI+XG4gICAgICAgICAgICB7eyAnQ2hhbmdlJyB8IHJweFRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvYT5cbiAgICAgICAgPC9kZD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGw+XG5cbiAgICA8YnI+XG5cbiAgICA8ZGl2PlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImdvdnVrLWJ1dHRvbiBnb3Z1ay1idXR0b24tLXNlY29uZGFyeSBnb3Z1ay0hLW1hcmdpbi1yaWdodC0zXCIgZGF0YS1tb2R1bGU9XCJnb3Z1ay1idXR0b25cIlxuICAgICAgICAoY2xpY2spPVwiZ29CYWNrKClcIj5cbiAgICAgICAge3sgJ1ByZXZpb3VzJyB8IHJweFRyYW5zbGF0ZSB9fVxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwiZ292dWstYnV0dG9uXCIgZGF0YS1tb2R1bGU9XCJnb3Z1ay1idXR0b25cIiAoY2xpY2spPVwic3VibWl0KClcIj5cbiAgICAgICAge3sgJ1N1Ym1pdCcgfCBycHhUcmFuc2xhdGUgfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8Y2NkLXF1ZXJ5LWV2ZW50LWNvbXBsZXRpb24gW2V2ZW50Q29tcGxldGlvblBhcmFtc109XCJldmVudENvbXBsZXRpb25QYXJhbXNcIj4gICAgXG4gIDwvY2NkLXF1ZXJ5LWV2ZW50LWNvbXBsZXRpb24+XG48L2Rpdj5cbiJdfQ==