@po-ui/ng-components 6.10.0 → 6.12.0

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 (71) hide show
  1. package/esm2020/lib/components/po-button/po-button-base.component.mjs +64 -14
  2. package/esm2020/lib/components/po-button/po-button-type.enum.mjs +10 -0
  3. package/esm2020/lib/components/po-button/po-button.component.mjs +4 -4
  4. package/esm2020/lib/components/po-dynamic/po-dynamic-field.interface.mjs +1 -1
  5. package/esm2020/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-fields/po-dynamic-form-fields-base.component.mjs +12 -2
  6. package/esm2020/lib/components/po-dynamic/po-dynamic-view/po-dynamic-view-base.component.mjs +12 -2
  7. package/esm2020/lib/components/po-dynamic/po-dynamic.util.mjs +18 -11
  8. package/esm2020/lib/components/po-field/index.mjs +2 -1
  9. package/esm2020/lib/components/po-field/po-checkbox/po-checkbox.module.mjs +20 -0
  10. package/esm2020/lib/components/po-field/po-combo/po-combo-base.component.mjs +2 -1
  11. package/esm2020/lib/components/po-field/po-field.module.mjs +15 -13
  12. package/esm2020/lib/components/po-field/po-upload/po-upload.component.mjs +3 -3
  13. package/esm2020/lib/components/po-list-view/po-list-view.component.mjs +4 -4
  14. package/esm2020/lib/components/po-menu/po-menu-base.component.mjs +46 -6
  15. package/esm2020/lib/components/po-menu/po-menu.component.mjs +5 -5
  16. package/esm2020/lib/components/po-modal/po-modal-footer/po-modal-footer.component.mjs +2 -2
  17. package/esm2020/lib/components/po-modal/po-modal.component.mjs +6 -6
  18. package/esm2020/lib/components/po-page/po-page-default/po-page-default.component.mjs +3 -3
  19. package/esm2020/lib/components/po-page/po-page-detail/po-page-detail.component.mjs +7 -7
  20. package/esm2020/lib/components/po-page/po-page-edit/po-page-edit.component.mjs +6 -6
  21. package/esm2020/lib/components/po-page/po-page-list/po-page-list.component.mjs +3 -3
  22. package/esm2020/lib/components/po-table/po-table-base.component.mjs +6 -2
  23. package/esm2020/lib/components/po-table/po-table-column-manager/po-table-column-manager.component.mjs +19 -5
  24. package/esm2020/lib/components/po-table/po-table-detail/po-table-detail.component.mjs +40 -40
  25. package/esm2020/lib/components/po-table/po-table.component.mjs +441 -438
  26. package/esm2020/lib/components/po-table/po-table.module.mjs +12 -4
  27. package/esm2020/lib/services/po-notification/po-notification-base.service.mjs +6 -4
  28. package/esm2020/lib/services/po-notification/po-notification.interface.mjs +1 -1
  29. package/esm2020/lib/services/po-notification/po-notification.module.mjs +6 -4
  30. package/esm2020/lib/services/po-notification/po-notification.service.mjs +3 -2
  31. package/esm2020/lib/services/po-notification/po-toaster/po-toaster.component.mjs +49 -32
  32. package/esm2020/lib/services/po-notification/po-toaster/po-toaster.literals.mjs +15 -0
  33. package/fesm2015/po-ui-ng-components.mjs +1078 -886
  34. package/fesm2015/po-ui-ng-components.mjs.map +1 -1
  35. package/fesm2020/po-ui-ng-components.mjs +1070 -871
  36. package/fesm2020/po-ui-ng-components.mjs.map +1 -1
  37. package/lib/components/po-button/po-button-base.component.d.ts +40 -9
  38. package/lib/components/po-button/po-button-type.enum.d.ts +8 -0
  39. package/lib/components/po-dynamic/po-dynamic-field.interface.d.ts +44 -0
  40. package/lib/components/po-dynamic/po-dynamic-view/po-dynamic-view-base.component.d.ts +5 -0
  41. package/lib/components/po-dynamic/po-dynamic.util.d.ts +1 -1
  42. package/lib/components/po-field/index.d.ts +1 -0
  43. package/lib/components/po-field/po-checkbox/po-checkbox.module.d.ts +9 -0
  44. package/lib/components/po-field/po-field.module.d.ts +54 -54
  45. package/lib/components/po-menu/po-menu-base.component.d.ts +19 -1
  46. package/lib/components/po-modal/po-modal-footer/po-modal-footer.component.d.ts +1 -1
  47. package/lib/components/po-modal/po-modal.component.d.ts +1 -1
  48. package/lib/components/po-table/po-table-base.component.d.ts +2 -0
  49. package/lib/components/po-table/po-table-column-manager/po-table-column-manager.component.d.ts +3 -0
  50. package/lib/components/po-table/po-table.component.d.ts +2 -0
  51. package/lib/components/po-table/po-table.module.d.ts +14 -12
  52. package/lib/services/po-notification/po-notification-base.service.d.ts +4 -2
  53. package/lib/services/po-notification/po-notification.interface.d.ts +5 -1
  54. package/lib/services/po-notification/po-notification.module.d.ts +3 -1
  55. package/lib/services/po-notification/po-toaster/po-toaster.component.d.ts +5 -1
  56. package/lib/services/po-notification/po-toaster/po-toaster.literals.d.ts +14 -0
  57. package/package.json +4 -4
  58. package/po-ui-ng-components-6.12.0.tgz +0 -0
  59. package/schematics/ng-add/index.js +1 -1
  60. package/schematics/ng-add/index.spec.js +5 -5
  61. package/schematics/ng-generate/po-page-default/index.spec.js +12 -12
  62. package/schematics/ng-generate/po-page-detail/index.spec.js +12 -12
  63. package/schematics/ng-generate/po-page-edit/index.spec.js +12 -12
  64. package/schematics/ng-generate/po-page-list/index.spec.js +12 -12
  65. package/schematics/ng-generate/sidemenu/index.spec.js +4 -4
  66. package/schematics/ng-update/v2/index.js +1 -1
  67. package/schematics/ng-update/v3/index.js +1 -1
  68. package/schematics/ng-update/v4/index.js +1 -1
  69. package/schematics/ng-update/v5/index.js +1 -1
  70. package/schematics/ng-update/v6/index.js +1 -1
  71. package/po-ui-ng-components-6.10.0.tgz +0 -0
@@ -16,26 +16,30 @@ import * as i6 from "../po-container/po-container.component";
16
16
  import * as i7 from "../po-loading/po-loading.component";
17
17
  import * as i8 from "./po-table-subtitle-footer/po-table-subtitle-footer.component";
18
18
  import * as i9 from "../po-button/po-button.component";
19
- import * as i10 from "../../directives/po-tooltip/po-tooltip.directive";
20
- import * as i11 from "./po-table-column-link/po-table-column-link.component";
21
- import * as i12 from "./po-table-column-icon/po-table-column-icon.component";
22
- import * as i13 from "./po-table-subtitle-circle/po-table-subtitle-circle.component";
23
- import * as i14 from "./po-table-column-label/po-table-column-label.component";
24
- import * as i15 from "./po-table-detail/po-table-detail.component";
25
- import * as i16 from "../po-popup/po-popup.component";
26
- import * as i17 from "../po-icon/po-icon.component";
27
- import * as i18 from "./po-table-column-manager/po-table-column-manager.component";
28
- import * as i19 from "../../pipes/po-time/po-time.pipe";
19
+ import * as i10 from "../po-field/po-checkbox/po-checkbox.component";
20
+ import * as i11 from "@angular/forms";
21
+ import * as i12 from "../../directives/po-tooltip/po-tooltip.directive";
22
+ import * as i13 from "@angular/cdk/scrolling";
23
+ import * as i14 from "./po-table-column-link/po-table-column-link.component";
24
+ import * as i15 from "./po-table-column-icon/po-table-column-icon.component";
25
+ import * as i16 from "./po-table-subtitle-circle/po-table-subtitle-circle.component";
26
+ import * as i17 from "./po-table-column-label/po-table-column-label.component";
27
+ import * as i18 from "./po-table-detail/po-table-detail.component";
28
+ import * as i19 from "../po-popup/po-popup.component";
29
+ import * as i20 from "../po-icon/po-icon.component";
30
+ import * as i21 from "./po-table-column-manager/po-table-column-manager.component";
31
+ import * as i22 from "../../pipes/po-time/po-time.pipe";
29
32
  const _c0 = ["noColumnsHeader"];
30
33
  const _c1 = ["popup"];
31
34
  const _c2 = ["tableFooter"];
32
35
  const _c3 = ["tableWrapper"];
33
36
  const _c4 = ["poTableTbody"];
34
37
  const _c5 = ["poTableThead"];
35
- const _c6 = ["columnManagerTarget"];
36
- const _c7 = ["actionsIconElement"];
37
- const _c8 = ["actionsElement"];
38
- const _c9 = ["headersTable"];
38
+ const _c6 = ["poTableTbodyVirtual"];
39
+ const _c7 = ["columnManagerTarget"];
40
+ const _c8 = ["actionsIconElement"];
41
+ const _c9 = ["actionsElement"];
42
+ const _c10 = ["headersTable"];
39
43
  function PoTableComponent_po_container_0_ng_container_1_Template(rf, ctx) { if (rf & 1) {
40
44
  i0.ɵɵelementContainer(0);
41
45
  } }
@@ -66,23 +70,21 @@ function PoTableComponent_ng_template_1_div_5_ng_container_6_Template(rf, ctx) {
66
70
  i0.ɵɵelementContainer(0);
67
71
  } }
68
72
  function PoTableComponent_ng_template_1_div_5_Template(rf, ctx) { if (rf & 1) {
69
- const _r37 = i0.ɵɵgetCurrentView();
70
73
  i0.ɵɵelementStart(0, "div", 27)(1, "div", 28, 29);
71
74
  i0.ɵɵtemplate(3, PoTableComponent_ng_template_1_div_5_ng_container_3_Template, 1, 0, "ng-container", 17);
72
75
  i0.ɵɵelementEnd();
73
76
  i0.ɵɵelementStart(4, "div", 30, 31);
74
- i0.ɵɵlistener("scroll", function PoTableComponent_ng_template_1_div_5_Template_div_scroll_4_listener() { i0.ɵɵrestoreView(_r37); const ctx_r36 = i0.ɵɵnextContext(2); return ctx_r36.syncronizeHorizontalScroll(); });
75
- i0.ɵɵtemplate(6, PoTableComponent_ng_template_1_div_5_ng_container_6_Template, 1, 0, "ng-container", 17);
77
+ i0.ɵɵtemplate(6, PoTableComponent_ng_template_1_div_5_ng_container_6_Template, 1, 0, "ng-container", 32);
76
78
  i0.ɵɵelementEnd()();
77
79
  } if (rf & 2) {
78
80
  const ctx_r29 = i0.ɵɵnextContext(2);
79
81
  const _r4 = i0.ɵɵreference(5);
80
82
  const _r6 = i0.ɵɵreference(7);
81
- i0.ɵɵstyleProp("height", ctx_r29.heightTableContainer, "px");
83
+ const _r8 = i0.ɵɵreference(9);
82
84
  i0.ɵɵadvance(3);
83
85
  i0.ɵɵproperty("ngTemplateOutlet", _r4);
84
86
  i0.ɵɵadvance(3);
85
- i0.ɵɵproperty("ngTemplateOutlet", _r6);
87
+ i0.ɵɵproperty("ngIf", ctx_r29.height)("ngIfThen", _r6)("ngIfElse", _r8);
86
88
  } }
87
89
  function PoTableComponent_ng_template_1_div_6_ng_container_1_Template(rf, ctx) { if (rf & 1) {
88
90
  i0.ɵɵelementContainer(0);
@@ -99,17 +101,17 @@ function PoTableComponent_ng_template_1_div_6_Template(rf, ctx) { if (rf & 1) {
99
101
  } }
100
102
  function PoTableComponent_ng_template_1_div_7_ng_container_1_Template(rf, ctx) { if (rf & 1) {
101
103
  i0.ɵɵelementContainerStart(0);
102
- i0.ɵɵelement(1, "po-table-subtitle-footer", 34);
104
+ i0.ɵɵelement(1, "po-table-subtitle-footer", 35);
103
105
  i0.ɵɵelementContainerEnd();
104
106
  } if (rf & 2) {
105
- const column_r40 = ctx.$implicit;
106
- const ctx_r39 = i0.ɵɵnextContext(3);
107
+ const column_r38 = ctx.$implicit;
108
+ const ctx_r37 = i0.ɵɵnextContext(3);
107
109
  i0.ɵɵadvance(1);
108
- i0.ɵɵproperty("p-literals", ctx_r39.literals)("p-subtitles", column_r40.subtitles);
110
+ i0.ɵɵproperty("p-literals", ctx_r37.literals)("p-subtitles", column_r38.subtitles);
109
111
  } }
110
112
  function PoTableComponent_ng_template_1_div_7_Template(rf, ctx) { if (rf & 1) {
111
- i0.ɵɵelementStart(0, "div", 32);
112
- i0.ɵɵtemplate(1, PoTableComponent_ng_template_1_div_7_ng_container_1_Template, 2, 2, "ng-container", 33);
113
+ i0.ɵɵelementStart(0, "div", 33);
114
+ i0.ɵɵtemplate(1, PoTableComponent_ng_template_1_div_7_ng_container_1_Template, 2, 2, "ng-container", 34);
113
115
  i0.ɵɵelementEnd();
114
116
  } if (rf & 2) {
115
117
  const ctx_r31 = i0.ɵɵnextContext(2);
@@ -140,9 +142,9 @@ function PoTableComponent_ng_template_1_Template(rf, ctx) { if (rf & 1) {
140
142
  i0.ɵɵproperty("ngIf", ctx_r2.hasFooter);
141
143
  } }
142
144
  function PoTableComponent_div_3_Template(rf, ctx) { if (rf & 1) {
143
- const _r43 = i0.ɵɵgetCurrentView();
144
- i0.ɵɵelementStart(0, "div", 35, 36)(2, "po-button", 37);
145
- i0.ɵɵlistener("p-click", function PoTableComponent_div_3_Template_po_button_p_click_2_listener() { i0.ɵɵrestoreView(_r43); const ctx_r42 = i0.ɵɵnextContext(); return ctx_r42.onShowMore(); });
145
+ const _r41 = i0.ɵɵgetCurrentView();
146
+ i0.ɵɵelementStart(0, "div", 36, 37)(2, "po-button", 38);
147
+ i0.ɵɵlistener("p-click", function PoTableComponent_div_3_Template_po_button_p_click_2_listener() { i0.ɵɵrestoreView(_r41); const ctx_r40 = i0.ɵɵnextContext(); return ctx_r40.onShowMore(); });
146
148
  i0.ɵɵelementEnd()();
147
149
  } if (rf & 2) {
148
150
  const ctx_r3 = i0.ɵɵnextContext();
@@ -150,111 +152,105 @@ function PoTableComponent_div_3_Template(rf, ctx) { if (rf & 1) {
150
152
  i0.ɵɵadvance(2);
151
153
  i0.ɵɵproperty("p-disabled", ctx_r3.showMoreDisabled)("p-label", ctx_r3.literals.loadMoreData)("p-loading", ctx_r3.loadingShowMore);
152
154
  } }
153
- function PoTableComponent_ng_template_4_th_3_input_2_Template(rf, ctx) { if (rf & 1) {
154
- i0.ɵɵelement(0, "input", 49);
155
- } if (rf & 2) {
156
- const ctx_r52 = i0.ɵɵnextContext(3);
157
- i0.ɵɵclassProp("po-table-checkbox-checked", ctx_r52.selectAll)("po-table-checkbox-indeterminate", ctx_r52.selectAll === null);
158
- } }
159
- function PoTableComponent_ng_template_4_th_3_label_3_Template(rf, ctx) { if (rf & 1) {
160
- const _r55 = i0.ɵɵgetCurrentView();
161
- i0.ɵɵelementStart(0, "label", 50);
162
- i0.ɵɵlistener("click", function PoTableComponent_ng_template_4_th_3_label_3_Template_label_click_0_listener() { i0.ɵɵrestoreView(_r55); const ctx_r54 = i0.ɵɵnextContext(3); return ctx_r54.selectAllRows(); });
155
+ function PoTableComponent_ng_template_4_th_3_po_checkbox_2_Template(rf, ctx) { if (rf & 1) {
156
+ const _r52 = i0.ɵɵgetCurrentView();
157
+ i0.ɵɵelementStart(0, "po-checkbox", 49);
158
+ i0.ɵɵlistener("click", function PoTableComponent_ng_template_4_th_3_po_checkbox_2_Template_po_checkbox_click_0_listener() { i0.ɵɵrestoreView(_r52); const ctx_r51 = i0.ɵɵnextContext(3); return ctx_r51.selectAllRows(); })("p-change", function PoTableComponent_ng_template_4_th_3_po_checkbox_2_Template_po_checkbox_p_change_0_listener() { i0.ɵɵrestoreView(_r52); const ctx_r53 = i0.ɵɵnextContext(3); return ctx_r53.selectAllRows(); })("ngModelChange", function PoTableComponent_ng_template_4_th_3_po_checkbox_2_Template_po_checkbox_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r52); const ctx_r54 = i0.ɵɵnextContext(3); return ctx_r54.selectAll = $event; });
163
159
  i0.ɵɵelementEnd();
160
+ } if (rf & 2) {
161
+ const ctx_r50 = i0.ɵɵnextContext(3);
162
+ i0.ɵɵproperty("ngModel", ctx_r50.selectAll);
164
163
  } }
165
164
  function PoTableComponent_ng_template_4_th_3_Template(rf, ctx) { if (rf & 1) {
166
- i0.ɵɵelementStart(0, "th", 46)(1, "div");
167
- i0.ɵɵtemplate(2, PoTableComponent_ng_template_4_th_3_input_2_Template, 1, 4, "input", 47);
168
- i0.ɵɵtemplate(3, PoTableComponent_ng_template_4_th_3_label_3_Template, 1, 0, "label", 48);
165
+ i0.ɵɵelementStart(0, "th", 47)(1, "div");
166
+ i0.ɵɵtemplate(2, PoTableComponent_ng_template_4_th_3_po_checkbox_2_Template, 1, 1, "po-checkbox", 48);
169
167
  i0.ɵɵelementEnd()();
170
168
  } if (rf & 2) {
171
- const ctx_r44 = i0.ɵɵnextContext(2);
172
- i0.ɵɵadvance(1);
173
- i0.ɵɵclassProp("po-table-header-fixed-inner", ctx_r44.height);
169
+ const ctx_r42 = i0.ɵɵnextContext(2);
174
170
  i0.ɵɵadvance(1);
175
- i0.ɵɵproperty("ngIf", !ctx_r44.hideSelectAll);
171
+ i0.ɵɵclassProp("po-table-header-fixed-inner", ctx_r42.height);
176
172
  i0.ɵɵadvance(1);
177
- i0.ɵɵproperty("ngIf", !ctx_r44.hideSelectAll);
173
+ i0.ɵɵproperty("ngIf", !ctx_r42.hideSelectAll);
178
174
  } }
179
175
  function PoTableComponent_ng_template_4_th_4_Template(rf, ctx) { if (rf & 1) {
180
- i0.ɵɵelement(0, "th", 51);
176
+ i0.ɵɵelement(0, "th", 50);
181
177
  } }
182
178
  function PoTableComponent_ng_template_4_th_5_Template(rf, ctx) { if (rf & 1) {
183
179
  i0.ɵɵelement(0, "th");
184
180
  } if (rf & 2) {
185
- const ctx_r46 = i0.ɵɵnextContext(2);
186
- i0.ɵɵclassProp("po-table-header-master-detail", !ctx_r46.isSingleAction)("po-table-header-single-action", ctx_r46.isSingleAction);
181
+ const ctx_r44 = i0.ɵɵnextContext(2);
182
+ i0.ɵɵclassProp("po-table-header-master-detail", !ctx_r44.isSingleAction)("po-table-header-single-action", ctx_r44.isSingleAction);
187
183
  } }
188
184
  function PoTableComponent_ng_template_4_th_6_ng_container_2_Template(rf, ctx) { if (rf & 1) {
189
185
  i0.ɵɵelementContainer(0);
190
186
  } }
191
187
  function PoTableComponent_ng_template_4_th_6_Template(rf, ctx) { if (rf & 1) {
192
- i0.ɵɵelementStart(0, "th", 52, 53);
193
- i0.ɵɵtemplate(2, PoTableComponent_ng_template_4_th_6_ng_container_2_Template, 1, 0, "ng-container", 54);
188
+ i0.ɵɵelementStart(0, "th", 51, 52);
189
+ i0.ɵɵtemplate(2, PoTableComponent_ng_template_4_th_6_ng_container_2_Template, 1, 0, "ng-container", 32);
194
190
  i0.ɵɵelementEnd();
195
191
  } if (rf & 2) {
196
- const ctx_r47 = i0.ɵɵnextContext(2);
192
+ const ctx_r45 = i0.ɵɵnextContext(2);
197
193
  const _r19 = i0.ɵɵreference(21);
198
194
  const _r21 = i0.ɵɵreference(23);
199
195
  i0.ɵɵadvance(2);
200
- i0.ɵɵproperty("ngIf", ctx_r47.height)("ngIfThen", _r19)("ngIfElse", _r21);
196
+ i0.ɵɵproperty("ngIf", ctx_r45.height)("ngIfThen", _r19)("ngIfElse", _r21);
201
197
  } }
202
198
  function PoTableComponent_ng_template_4_th_7_ng_container_3_Template(rf, ctx) { if (rf & 1) {
203
199
  i0.ɵɵelementContainer(0);
204
200
  } }
205
- const _c10 = function (a0) { return { $implicit: a0 }; };
201
+ const _c11 = function (a0) { return { $implicit: a0 }; };
206
202
  function PoTableComponent_ng_template_4_th_7_Template(rf, ctx) { if (rf & 1) {
207
- const _r63 = i0.ɵɵgetCurrentView();
208
- i0.ɵɵelementStart(0, "th", 55, 56);
209
- i0.ɵɵlistener("click", function PoTableComponent_ng_template_4_th_7_Template_th_click_0_listener() { const restoredCtx = i0.ɵɵrestoreView(_r63); const column_r58 = restoredCtx.$implicit; const ctx_r62 = i0.ɵɵnextContext(2); return ctx_r62.sortColumn(column_r58); });
210
- i0.ɵɵelementStart(2, "div", 57);
211
- i0.ɵɵtemplate(3, PoTableComponent_ng_template_4_th_7_ng_container_3_Template, 1, 0, "ng-container", 58);
203
+ const _r62 = i0.ɵɵgetCurrentView();
204
+ i0.ɵɵelementStart(0, "th", 53, 54);
205
+ i0.ɵɵlistener("click", function PoTableComponent_ng_template_4_th_7_Template_th_click_0_listener() { const restoredCtx = i0.ɵɵrestoreView(_r62); const column_r57 = restoredCtx.$implicit; const ctx_r61 = i0.ɵɵnextContext(2); return ctx_r61.sortColumn(column_r57); });
206
+ i0.ɵɵelementStart(2, "div", 55);
207
+ i0.ɵɵtemplate(3, PoTableComponent_ng_template_4_th_7_ng_container_3_Template, 1, 0, "ng-container", 56);
212
208
  i0.ɵɵelementEnd()();
213
209
  } if (rf & 2) {
214
- const column_r58 = ctx.$implicit;
215
- const ctx_r48 = i0.ɵɵnextContext(2);
210
+ const column_r57 = ctx.$implicit;
211
+ const ctx_r46 = i0.ɵɵnextContext(2);
216
212
  const _r17 = i0.ɵɵreference(19);
217
- i0.ɵɵstyleProp("width", column_r58.width)("max-width", column_r58.width)("min-width", column_r58.width);
218
- i0.ɵɵclassProp("po-clickable", ctx_r48.sort && column_r58.sortable !== false || ctx_r48.hasService)("po-table-header-subtitle", column_r58.type === "subtitle");
213
+ i0.ɵɵstyleProp("width", column_r57.width)("max-width", column_r57.width)("min-width", column_r57.width);
214
+ i0.ɵɵclassProp("po-clickable", ctx_r46.sort && column_r57.sortable !== false || ctx_r46.hasService)("po-table-header-subtitle", column_r57.type === "subtitle");
219
215
  i0.ɵɵadvance(2);
220
- i0.ɵɵclassProp("po-table-header-fixed-inner", ctx_r48.height)("po-table-header-flex-right", column_r58.type === "currency" || column_r58.type === "number")("po-table-header-flex-center", column_r58.type === "subtitle");
216
+ i0.ɵɵclassProp("po-table-header-fixed-inner", ctx_r46.height)("po-table-header-flex-right", column_r57.type === "currency" || column_r57.type === "number")("po-table-header-flex-center", column_r57.type === "subtitle");
221
217
  i0.ɵɵadvance(1);
222
- i0.ɵɵproperty("ngTemplateOutlet", _r17)("ngTemplateOutletContext", i0.ɵɵpureFunction1(18, _c10, column_r58));
218
+ i0.ɵɵproperty("ngTemplateOutlet", _r17)("ngTemplateOutletContext", i0.ɵɵpureFunction1(18, _c11, column_r57));
223
219
  } }
224
220
  function PoTableComponent_ng_template_4_th_8_Template(rf, ctx) { if (rf & 1) {
225
- i0.ɵɵelement(0, "th", 51);
221
+ i0.ɵɵelement(0, "th", 50);
226
222
  } }
227
223
  function PoTableComponent_ng_template_4_th_9_Template(rf, ctx) { if (rf & 1) {
228
224
  i0.ɵɵelement(0, "th");
229
225
  } if (rf & 2) {
230
- const ctx_r50 = i0.ɵɵnextContext(2);
231
- i0.ɵɵclassProp("po-table-header-single-action", ctx_r50.isSingleAction)("po-table-header-actions", !ctx_r50.isSingleAction);
226
+ const ctx_r48 = i0.ɵɵnextContext(2);
227
+ i0.ɵɵclassProp("po-table-header-single-action", ctx_r48.isSingleAction)("po-table-header-actions", !ctx_r48.isSingleAction);
232
228
  } }
233
229
  function PoTableComponent_ng_template_4_th_10_Template(rf, ctx) { if (rf & 1) {
234
- const _r67 = i0.ɵɵgetCurrentView();
235
- i0.ɵɵelementStart(0, "th", null, 59)(2, "div")(3, "button", 60, 61);
236
- i0.ɵɵlistener("click", function PoTableComponent_ng_template_4_th_10_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r67); const ctx_r66 = i0.ɵɵnextContext(2); return ctx_r66.onOpenColumnManager(); });
230
+ const _r66 = i0.ɵɵgetCurrentView();
231
+ i0.ɵɵelementStart(0, "th", null, 57)(2, "div")(3, "button", 58, 59);
232
+ i0.ɵɵlistener("click", function PoTableComponent_ng_template_4_th_10_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r66); const ctx_r65 = i0.ɵɵnextContext(2); return ctx_r65.onOpenColumnManager(); });
237
233
  i0.ɵɵelementEnd()()();
238
234
  } if (rf & 2) {
239
- const _r64 = i0.ɵɵreference(1);
240
- const ctx_r51 = i0.ɵɵnextContext(2);
241
- i0.ɵɵclassProp("po-table-header-column-manager", !ctx_r51.isSingleAction || !ctx_r51.actionRight)("po-table-header-column-manager-border", !ctx_r51.height && ctx_r51.container)("po-table-header-single-action", ctx_r51.isSingleAction && ctx_r51.actionRight);
235
+ const _r63 = i0.ɵɵreference(1);
236
+ const ctx_r49 = i0.ɵɵnextContext(2);
237
+ i0.ɵɵclassProp("po-table-header-column-manager", !ctx_r49.isSingleAction || !ctx_r49.actionRight)("po-table-header-column-manager-border", !ctx_r49.height && ctx_r49.container)("po-table-header-single-action", ctx_r49.isSingleAction && ctx_r49.actionRight);
242
238
  i0.ɵɵadvance(2);
243
- i0.ɵɵstyleProp("width", ctx_r51.height && ctx_r51.visibleActions.length ? _r64.offsetWidth : undefined, "px");
244
- i0.ɵɵclassProp("po-table-header-column-manager-border", ctx_r51.height && ctx_r51.container)("po-table-header-column-manager-fixed-inner", ctx_r51.height);
239
+ i0.ɵɵstyleProp("width", ctx_r49.height && ctx_r49.visibleActions.length ? _r63.offsetWidth : undefined, "px");
240
+ i0.ɵɵclassProp("po-table-header-column-manager-border", ctx_r49.height && ctx_r49.container)("po-table-header-column-manager-fixed-inner", ctx_r49.height);
245
241
  i0.ɵɵadvance(1);
246
- i0.ɵɵproperty("p-tooltip", ctx_r51.literals.columnsManager);
242
+ i0.ɵɵproperty("p-tooltip", ctx_r49.literals.columnsManager);
247
243
  } }
248
244
  function PoTableComponent_ng_template_4_Template(rf, ctx) { if (rf & 1) {
249
- i0.ɵɵelementStart(0, "table", 38)(1, "thead")(2, "tr");
250
- i0.ɵɵtemplate(3, PoTableComponent_ng_template_4_th_3_Template, 4, 4, "th", 39);
251
- i0.ɵɵtemplate(4, PoTableComponent_ng_template_4_th_4_Template, 1, 0, "th", 40);
252
- i0.ɵɵtemplate(5, PoTableComponent_ng_template_4_th_5_Template, 1, 4, "th", 41);
253
- i0.ɵɵtemplate(6, PoTableComponent_ng_template_4_th_6_Template, 3, 3, "th", 42);
254
- i0.ɵɵtemplate(7, PoTableComponent_ng_template_4_th_7_Template, 4, 20, "th", 43);
255
- i0.ɵɵtemplate(8, PoTableComponent_ng_template_4_th_8_Template, 1, 0, "th", 40);
256
- i0.ɵɵtemplate(9, PoTableComponent_ng_template_4_th_9_Template, 1, 4, "th", 44);
257
- i0.ɵɵtemplate(10, PoTableComponent_ng_template_4_th_10_Template, 5, 13, "th", 45);
245
+ i0.ɵɵelementStart(0, "table", 39)(1, "thead")(2, "tr");
246
+ i0.ɵɵtemplate(3, PoTableComponent_ng_template_4_th_3_Template, 3, 3, "th", 40);
247
+ i0.ɵɵtemplate(4, PoTableComponent_ng_template_4_th_4_Template, 1, 0, "th", 41);
248
+ i0.ɵɵtemplate(5, PoTableComponent_ng_template_4_th_5_Template, 1, 4, "th", 42);
249
+ i0.ɵɵtemplate(6, PoTableComponent_ng_template_4_th_6_Template, 3, 3, "th", 43);
250
+ i0.ɵɵtemplate(7, PoTableComponent_ng_template_4_th_7_Template, 4, 20, "th", 44);
251
+ i0.ɵɵtemplate(8, PoTableComponent_ng_template_4_th_8_Template, 1, 0, "th", 41);
252
+ i0.ɵɵtemplate(9, PoTableComponent_ng_template_4_th_9_Template, 1, 4, "th", 45);
253
+ i0.ɵɵtemplate(10, PoTableComponent_ng_template_4_th_10_Template, 5, 13, "th", 46);
258
254
  i0.ɵɵelementEnd()()();
259
255
  } if (rf & 2) {
260
256
  const ctx_r5 = i0.ɵɵnextContext();
@@ -278,7 +274,7 @@ function PoTableComponent_ng_template_4_Template(rf, ctx) { if (rf & 1) {
278
274
  i0.ɵɵadvance(1);
279
275
  i0.ɵɵproperty("ngIf", ctx_r5.hasValidColumns && !ctx_r5.hideColumnsManager);
280
276
  } }
281
- function PoTableComponent_ng_template_6_tbody_1_Template(rf, ctx) { if (rf & 1) {
277
+ function PoTableComponent_ng_template_6_tbody_3_Template(rf, ctx) { if (rf & 1) {
282
278
  i0.ɵɵelementStart(0, "tbody", 63)(1, "tr", 64)(2, "td", 65)(3, "span");
283
279
  i0.ɵɵtext(4);
284
280
  i0.ɵɵelementEnd()()()();
@@ -289,12 +285,12 @@ function PoTableComponent_ng_template_6_tbody_1_Template(rf, ctx) { if (rf & 1)
289
285
  i0.ɵɵadvance(2);
290
286
  i0.ɵɵtextInterpolate1(" ", ctx_r68.literals.noData, " ");
291
287
  } }
292
- function PoTableComponent_ng_template_6_ng_container_2_tbody_1_td_2_ng_container_1_Template(rf, ctx) { if (rf & 1) {
288
+ function PoTableComponent_ng_template_6_ng_container_4_tbody_1_td_2_ng_container_1_Template(rf, ctx) { if (rf & 1) {
293
289
  i0.ɵɵelementContainer(0);
294
290
  } }
295
- function PoTableComponent_ng_template_6_ng_container_2_tbody_1_td_2_Template(rf, ctx) { if (rf & 1) {
296
- i0.ɵɵelementStart(0, "td", 46);
297
- i0.ɵɵtemplate(1, PoTableComponent_ng_template_6_ng_container_2_tbody_1_td_2_ng_container_1_Template, 1, 0, "ng-container", 58);
291
+ function PoTableComponent_ng_template_6_ng_container_4_tbody_1_td_2_Template(rf, ctx) { if (rf & 1) {
292
+ i0.ɵɵelementStart(0, "td", 47);
293
+ i0.ɵɵtemplate(1, PoTableComponent_ng_template_6_ng_container_4_tbody_1_td_2_ng_container_1_Template, 1, 0, "ng-container", 56);
298
294
  i0.ɵɵelementEnd();
299
295
  } if (rf & 2) {
300
296
  const row_r71 = i0.ɵɵnextContext().$implicit;
@@ -302,15 +298,15 @@ function PoTableComponent_ng_template_6_ng_container_2_tbody_1_td_2_Template(rf,
302
298
  const _r13 = i0.ɵɵreference(15);
303
299
  const _r15 = i0.ɵɵreference(17);
304
300
  i0.ɵɵadvance(1);
305
- i0.ɵɵproperty("ngTemplateOutlet", ctx_r73.singleSelect ? _r13 : _r15)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c10, row_r71));
301
+ i0.ɵɵproperty("ngTemplateOutlet", ctx_r73.singleSelect ? _r13 : _r15)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c11, row_r71));
306
302
  } }
307
- function PoTableComponent_ng_template_6_ng_container_2_tbody_1_td_3_ng_template_1_Template(rf, ctx) { }
308
- const _c11 = function (a0, a1) { return { row: a0, rowIndex: a1 }; };
309
- function PoTableComponent_ng_template_6_ng_container_2_tbody_1_td_3_Template(rf, ctx) { if (rf & 1) {
303
+ function PoTableComponent_ng_template_6_ng_container_4_tbody_1_td_3_ng_template_1_Template(rf, ctx) { }
304
+ const _c12 = function (a0, a1) { return { row: a0, rowIndex: a1 }; };
305
+ function PoTableComponent_ng_template_6_ng_container_4_tbody_1_td_3_Template(rf, ctx) { if (rf & 1) {
310
306
  const _r89 = i0.ɵɵgetCurrentView();
311
307
  i0.ɵɵelementStart(0, "td", 71);
312
- i0.ɵɵlistener("click", function PoTableComponent_ng_template_6_ng_container_2_tbody_1_td_3_Template_td_click_0_listener() { i0.ɵɵrestoreView(_r89); const row_r71 = i0.ɵɵnextContext().$implicit; const ctx_r87 = i0.ɵɵnextContext(3); return ctx_r87.toggleDetail(row_r71); });
313
- i0.ɵɵtemplate(1, PoTableComponent_ng_template_6_ng_container_2_tbody_1_td_3_ng_template_1_Template, 0, 0, "ng-template", 72);
308
+ i0.ɵɵlistener("click", function PoTableComponent_ng_template_6_ng_container_4_tbody_1_td_3_Template_td_click_0_listener() { i0.ɵɵrestoreView(_r89); const row_r71 = i0.ɵɵnextContext().$implicit; const ctx_r87 = i0.ɵɵnextContext(3); return ctx_r87.toggleDetail(row_r71); });
309
+ i0.ɵɵtemplate(1, PoTableComponent_ng_template_6_ng_container_4_tbody_1_td_3_ng_template_1_Template, 0, 0, "ng-template", 72);
314
310
  i0.ɵɵelementEnd();
315
311
  } if (rf & 2) {
316
312
  const ctx_r90 = i0.ɵɵnextContext();
@@ -319,25 +315,25 @@ function PoTableComponent_ng_template_6_ng_container_2_tbody_1_td_3_Template(rf,
319
315
  i0.ɵɵnextContext(3);
320
316
  const _r11 = i0.ɵɵreference(13);
321
317
  i0.ɵɵadvance(1);
322
- i0.ɵɵproperty("ngTemplateOutlet", _r11)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c11, row_r71, rowIndex_r72));
318
+ i0.ɵɵproperty("ngTemplateOutlet", _r11)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c12, row_r71, rowIndex_r72));
323
319
  } }
324
- function PoTableComponent_ng_template_6_ng_container_2_tbody_1_4_ng_template_0_Template(rf, ctx) { }
325
- function PoTableComponent_ng_template_6_ng_container_2_tbody_1_4_Template(rf, ctx) { if (rf & 1) {
326
- i0.ɵɵtemplate(0, PoTableComponent_ng_template_6_ng_container_2_tbody_1_4_ng_template_0_Template, 0, 0, "ng-template", 72);
320
+ function PoTableComponent_ng_template_6_ng_container_4_tbody_1_4_ng_template_0_Template(rf, ctx) { }
321
+ function PoTableComponent_ng_template_6_ng_container_4_tbody_1_4_Template(rf, ctx) { if (rf & 1) {
322
+ i0.ɵɵtemplate(0, PoTableComponent_ng_template_6_ng_container_4_tbody_1_4_ng_template_0_Template, 0, 0, "ng-template", 72);
327
323
  } if (rf & 2) {
328
324
  const ctx_r92 = i0.ɵɵnextContext();
329
325
  const row_r71 = ctx_r92.$implicit;
330
326
  const rowIndex_r72 = ctx_r92.index;
331
327
  i0.ɵɵnextContext(3);
332
328
  const _r23 = i0.ɵɵreference(25);
333
- i0.ɵɵproperty("ngTemplateOutlet", _r23)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c11, row_r71, rowIndex_r72));
329
+ i0.ɵɵproperty("ngTemplateOutlet", _r23)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c12, row_r71, rowIndex_r72));
334
330
  } }
335
- function PoTableComponent_ng_template_6_ng_container_2_tbody_1_td_5_ng_template_1_Template(rf, ctx) { }
336
- function PoTableComponent_ng_template_6_ng_container_2_tbody_1_td_5_Template(rf, ctx) { if (rf & 1) {
331
+ function PoTableComponent_ng_template_6_ng_container_4_tbody_1_td_5_ng_template_1_Template(rf, ctx) { }
332
+ function PoTableComponent_ng_template_6_ng_container_4_tbody_1_td_5_Template(rf, ctx) { if (rf & 1) {
337
333
  const _r96 = i0.ɵɵgetCurrentView();
338
334
  i0.ɵɵelementStart(0, "td", 71);
339
- i0.ɵɵlistener("click", function PoTableComponent_ng_template_6_ng_container_2_tbody_1_td_5_Template_td_click_0_listener() { i0.ɵɵrestoreView(_r96); const row_r71 = i0.ɵɵnextContext().$implicit; const ctx_r94 = i0.ɵɵnextContext(3); return ctx_r94.toggleDetail(row_r71); });
340
- i0.ɵɵtemplate(1, PoTableComponent_ng_template_6_ng_container_2_tbody_1_td_5_ng_template_1_Template, 0, 0, "ng-template", 72);
335
+ i0.ɵɵlistener("click", function PoTableComponent_ng_template_6_ng_container_4_tbody_1_td_5_Template_td_click_0_listener() { i0.ɵɵrestoreView(_r96); const row_r71 = i0.ɵɵnextContext().$implicit; const ctx_r94 = i0.ɵɵnextContext(3); return ctx_r94.toggleDetail(row_r71); });
336
+ i0.ɵɵtemplate(1, PoTableComponent_ng_template_6_ng_container_4_tbody_1_td_5_ng_template_1_Template, 0, 0, "ng-template", 72);
341
337
  i0.ɵɵelementEnd();
342
338
  } if (rf & 2) {
343
339
  const ctx_r97 = i0.ɵɵnextContext();
@@ -346,38 +342,38 @@ function PoTableComponent_ng_template_6_ng_container_2_tbody_1_td_5_Template(rf,
346
342
  i0.ɵɵnextContext(3);
347
343
  const _r11 = i0.ɵɵreference(13);
348
344
  i0.ɵɵadvance(1);
349
- i0.ɵɵproperty("ngTemplateOutlet", _r11)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c11, row_r71, rowIndex_r72));
345
+ i0.ɵɵproperty("ngTemplateOutlet", _r11)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c12, row_r71, rowIndex_r72));
350
346
  } }
351
- function PoTableComponent_ng_template_6_ng_container_2_tbody_1_td_6_span_2_ng_container_1_Template(rf, ctx) { if (rf & 1) {
347
+ function PoTableComponent_ng_template_6_ng_container_4_tbody_1_td_6_span_2_ng_container_1_Template(rf, ctx) { if (rf & 1) {
352
348
  i0.ɵɵelementContainer(0);
353
349
  } }
354
- function PoTableComponent_ng_template_6_ng_container_2_tbody_1_td_6_span_2_Template(rf, ctx) { if (rf & 1) {
350
+ function PoTableComponent_ng_template_6_ng_container_4_tbody_1_td_6_span_2_Template(rf, ctx) { if (rf & 1) {
355
351
  i0.ɵɵelementStart(0, "span");
356
- i0.ɵɵtemplate(1, PoTableComponent_ng_template_6_ng_container_2_tbody_1_td_6_span_2_ng_container_1_Template, 1, 0, "ng-container", 58);
352
+ i0.ɵɵtemplate(1, PoTableComponent_ng_template_6_ng_container_4_tbody_1_td_6_span_2_ng_container_1_Template, 1, 0, "ng-container", 56);
357
353
  i0.ɵɵelementEnd();
358
354
  } if (rf & 2) {
359
355
  const column_r98 = i0.ɵɵnextContext().$implicit;
360
356
  const row_r71 = i0.ɵɵnextContext().$implicit;
361
357
  const ctx_r100 = i0.ɵɵnextContext(3);
362
358
  i0.ɵɵadvance(1);
363
- i0.ɵɵproperty("ngTemplateOutlet", ctx_r100.getTemplate(column_r98))("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c10, ctx_r100.getCellData(row_r71, column_r98)));
359
+ i0.ɵɵproperty("ngTemplateOutlet", ctx_r100.getTemplate(column_r98))("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c11, ctx_r100.getCellData(row_r71, column_r98)));
364
360
  } }
365
- function PoTableComponent_ng_template_6_ng_container_2_tbody_1_td_6_span_3_ng_container_1_Template(rf, ctx) { if (rf & 1) {
361
+ function PoTableComponent_ng_template_6_ng_container_4_tbody_1_td_6_span_3_ng_container_1_Template(rf, ctx) { if (rf & 1) {
366
362
  i0.ɵɵelementContainer(0);
367
363
  } }
368
- const _c12 = function (a0, a1) { return { row: a0, column: a1 }; };
369
- function PoTableComponent_ng_template_6_ng_container_2_tbody_1_td_6_span_3_Template(rf, ctx) { if (rf & 1) {
364
+ const _c13 = function (a0, a1) { return { row: a0, column: a1 }; };
365
+ function PoTableComponent_ng_template_6_ng_container_4_tbody_1_td_6_span_3_Template(rf, ctx) { if (rf & 1) {
370
366
  i0.ɵɵelementStart(0, "span");
371
- i0.ɵɵtemplate(1, PoTableComponent_ng_template_6_ng_container_2_tbody_1_td_6_span_3_ng_container_1_Template, 1, 0, "ng-container", 58);
367
+ i0.ɵɵtemplate(1, PoTableComponent_ng_template_6_ng_container_4_tbody_1_td_6_span_3_ng_container_1_Template, 1, 0, "ng-container", 56);
372
368
  i0.ɵɵelementEnd();
373
369
  } if (rf & 2) {
374
370
  const column_r98 = i0.ɵɵnextContext().$implicit;
375
371
  const row_r71 = i0.ɵɵnextContext().$implicit;
376
372
  const ctx_r101 = i0.ɵɵnextContext(3);
377
373
  i0.ɵɵadvance(1);
378
- i0.ɵɵproperty("ngTemplateOutlet", ctx_r101.tableCellTemplate == null ? null : ctx_r101.tableCellTemplate.templateRef)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c12, row_r71, column_r98));
374
+ i0.ɵɵproperty("ngTemplateOutlet", ctx_r101.tableCellTemplate == null ? null : ctx_r101.tableCellTemplate.templateRef)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c13, row_r71, column_r98));
379
375
  } }
380
- function PoTableComponent_ng_template_6_ng_container_2_tbody_1_td_6_span_4_Template(rf, ctx) { if (rf & 1) {
376
+ function PoTableComponent_ng_template_6_ng_container_4_tbody_1_td_6_span_4_Template(rf, ctx) { if (rf & 1) {
381
377
  i0.ɵɵelementStart(0, "span");
382
378
  i0.ɵɵtext(1);
383
379
  i0.ɵɵelementEnd();
@@ -388,7 +384,7 @@ function PoTableComponent_ng_template_6_ng_container_2_tbody_1_td_6_span_4_Templ
388
384
  i0.ɵɵadvance(1);
389
385
  i0.ɵɵtextInterpolate1(" ", ctx_r102.getBooleanLabel(ctx_r102.getCellData(row_r71, column_r98), column_r98), " ");
390
386
  } }
391
- function PoTableComponent_ng_template_6_ng_container_2_tbody_1_td_6_span_5_Template(rf, ctx) { if (rf & 1) {
387
+ function PoTableComponent_ng_template_6_ng_container_4_tbody_1_td_6_span_5_Template(rf, ctx) { if (rf & 1) {
392
388
  i0.ɵɵelementStart(0, "span");
393
389
  i0.ɵɵtext(1);
394
390
  i0.ɵɵpipe(2, "currency");
@@ -400,7 +396,7 @@ function PoTableComponent_ng_template_6_ng_container_2_tbody_1_td_6_span_5_Templ
400
396
  i0.ɵɵadvance(1);
401
397
  i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind4(2, 1, ctx_r103.getCellData(row_r71, column_r98), column_r98.format, "symbol", "1.2-2"), " ");
402
398
  } }
403
- function PoTableComponent_ng_template_6_ng_container_2_tbody_1_td_6_span_6_Template(rf, ctx) { if (rf & 1) {
399
+ function PoTableComponent_ng_template_6_ng_container_4_tbody_1_td_6_span_6_Template(rf, ctx) { if (rf & 1) {
404
400
  i0.ɵɵelementStart(0, "span");
405
401
  i0.ɵɵtext(1);
406
402
  i0.ɵɵpipe(2, "date");
@@ -412,7 +408,7 @@ function PoTableComponent_ng_template_6_ng_container_2_tbody_1_td_6_span_6_Templ
412
408
  i0.ɵɵadvance(1);
413
409
  i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(2, 1, ctx_r104.getCellData(row_r71, column_r98), column_r98.format || "dd/MM/yyyy"), " ");
414
410
  } }
415
- function PoTableComponent_ng_template_6_ng_container_2_tbody_1_td_6_span_7_Template(rf, ctx) { if (rf & 1) {
411
+ function PoTableComponent_ng_template_6_ng_container_4_tbody_1_td_6_span_7_Template(rf, ctx) { if (rf & 1) {
416
412
  i0.ɵɵelementStart(0, "span");
417
413
  i0.ɵɵtext(1);
418
414
  i0.ɵɵpipe(2, "po_time");
@@ -424,7 +420,7 @@ function PoTableComponent_ng_template_6_ng_container_2_tbody_1_td_6_span_7_Templ
424
420
  i0.ɵɵadvance(1);
425
421
  i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(2, 1, ctx_r105.getCellData(row_r71, column_r98), column_r98.format || "HH:mm:ss.ffffff"), " ");
426
422
  } }
427
- function PoTableComponent_ng_template_6_ng_container_2_tbody_1_td_6_span_8_Template(rf, ctx) { if (rf & 1) {
423
+ function PoTableComponent_ng_template_6_ng_container_4_tbody_1_td_6_span_8_Template(rf, ctx) { if (rf & 1) {
428
424
  i0.ɵɵelementStart(0, "span");
429
425
  i0.ɵɵtext(1);
430
426
  i0.ɵɵpipe(2, "date");
@@ -436,7 +432,7 @@ function PoTableComponent_ng_template_6_ng_container_2_tbody_1_td_6_span_8_Templ
436
432
  i0.ɵɵadvance(1);
437
433
  i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(2, 1, ctx_r106.getCellData(row_r71, column_r98), column_r98.format || "dd/MM/yyyy HH:mm:ss"), " ");
438
434
  } }
439
- function PoTableComponent_ng_template_6_ng_container_2_tbody_1_td_6_span_9_Template(rf, ctx) { if (rf & 1) {
435
+ function PoTableComponent_ng_template_6_ng_container_4_tbody_1_td_6_span_9_Template(rf, ctx) { if (rf & 1) {
440
436
  i0.ɵɵelementStart(0, "span");
441
437
  i0.ɵɵtext(1);
442
438
  i0.ɵɵelementEnd();
@@ -447,10 +443,10 @@ function PoTableComponent_ng_template_6_ng_container_2_tbody_1_td_6_span_9_Templ
447
443
  i0.ɵɵadvance(1);
448
444
  i0.ɵɵtextInterpolate1(" ", ctx_r107.formatNumber(ctx_r107.getCellData(row_r71, column_r98), column_r98.format), " ");
449
445
  } }
450
- function PoTableComponent_ng_template_6_ng_container_2_tbody_1_td_6_po_table_column_link_10_Template(rf, ctx) { if (rf & 1) {
446
+ function PoTableComponent_ng_template_6_ng_container_4_tbody_1_td_6_po_table_column_link_10_Template(rf, ctx) { if (rf & 1) {
451
447
  const _r133 = i0.ɵɵgetCurrentView();
452
448
  i0.ɵɵelementStart(0, "po-table-column-link", 79);
453
- i0.ɵɵlistener("click", function PoTableComponent_ng_template_6_ng_container_2_tbody_1_td_6_po_table_column_link_10_Template_po_table_column_link_click_0_listener($event) { i0.ɵɵrestoreView(_r133); const column_r98 = i0.ɵɵnextContext().$implicit; const row_r71 = i0.ɵɵnextContext().$implicit; const ctx_r131 = i0.ɵɵnextContext(3); return ctx_r131.onClickLink($event, row_r71, column_r98); });
449
+ i0.ɵɵlistener("click", function PoTableComponent_ng_template_6_ng_container_4_tbody_1_td_6_po_table_column_link_10_Template_po_table_column_link_click_0_listener($event) { i0.ɵɵrestoreView(_r133); const column_r98 = i0.ɵɵnextContext().$implicit; const row_r71 = i0.ɵɵnextContext().$implicit; const ctx_r131 = i0.ɵɵnextContext(3); return ctx_r131.onClickLink($event, row_r71, column_r98); });
454
450
  i0.ɵɵelementEnd();
455
451
  } if (rf & 2) {
456
452
  const column_r98 = i0.ɵɵnextContext().$implicit;
@@ -458,7 +454,7 @@ function PoTableComponent_ng_template_6_ng_container_2_tbody_1_td_6_po_table_col
458
454
  const ctx_r108 = i0.ɵɵnextContext(3);
459
455
  i0.ɵɵproperty("p-action", column_r98.action)("p-disabled", ctx_r108.checkDisabled(row_r71, column_r98))("p-link", row_r71[column_r98.link])("p-row", row_r71)("p-value", ctx_r108.getCellData(row_r71, column_r98));
460
456
  } }
461
- function PoTableComponent_ng_template_6_ng_container_2_tbody_1_td_6_po_table_column_icon_11_Template(rf, ctx) { if (rf & 1) {
457
+ function PoTableComponent_ng_template_6_ng_container_4_tbody_1_td_6_po_table_column_icon_11_Template(rf, ctx) { if (rf & 1) {
462
458
  i0.ɵɵelement(0, "po-table-column-icon", 80);
463
459
  } if (rf & 2) {
464
460
  const column_r98 = i0.ɵɵnextContext().$implicit;
@@ -466,7 +462,7 @@ function PoTableComponent_ng_template_6_ng_container_2_tbody_1_td_6_po_table_col
466
462
  const ctx_r109 = i0.ɵɵnextContext(3);
467
463
  i0.ɵɵproperty("p-column", column_r98)("p-icons", ctx_r109.getColumnIcons(row_r71, column_r98))("p-row", row_r71);
468
464
  } }
469
- function PoTableComponent_ng_template_6_ng_container_2_tbody_1_td_6_span_12_Template(rf, ctx) { if (rf & 1) {
465
+ function PoTableComponent_ng_template_6_ng_container_4_tbody_1_td_6_span_12_Template(rf, ctx) { if (rf & 1) {
470
466
  i0.ɵɵelementStart(0, "span");
471
467
  i0.ɵɵelement(1, "po-table-subtitle-circle", 81);
472
468
  i0.ɵɵelementEnd();
@@ -477,7 +473,7 @@ function PoTableComponent_ng_template_6_ng_container_2_tbody_1_td_6_span_12_Temp
477
473
  i0.ɵɵadvance(1);
478
474
  i0.ɵɵproperty("p-subtitle", ctx_r110.getSubtitleColumn(row_r71, column_r98));
479
475
  } }
480
- function PoTableComponent_ng_template_6_ng_container_2_tbody_1_td_6_span_13_Template(rf, ctx) { if (rf & 1) {
476
+ function PoTableComponent_ng_template_6_ng_container_4_tbody_1_td_6_span_13_Template(rf, ctx) { if (rf & 1) {
481
477
  i0.ɵɵelementStart(0, "span");
482
478
  i0.ɵɵelement(1, "po-table-column-label", 82);
483
479
  i0.ɵɵelementEnd();
@@ -488,7 +484,7 @@ function PoTableComponent_ng_template_6_ng_container_2_tbody_1_td_6_span_13_Temp
488
484
  i0.ɵɵadvance(1);
489
485
  i0.ɵɵproperty("p-value", ctx_r111.getColumnLabel(row_r71, column_r98));
490
486
  } }
491
- function PoTableComponent_ng_template_6_ng_container_2_tbody_1_td_6_span_14_Template(rf, ctx) { if (rf & 1) {
487
+ function PoTableComponent_ng_template_6_ng_container_4_tbody_1_td_6_span_14_Template(rf, ctx) { if (rf & 1) {
492
488
  i0.ɵɵelementStart(0, "span");
493
489
  i0.ɵɵtext(1);
494
490
  i0.ɵɵelementEnd();
@@ -499,25 +495,25 @@ function PoTableComponent_ng_template_6_ng_container_2_tbody_1_td_6_span_14_Temp
499
495
  i0.ɵɵadvance(1);
500
496
  i0.ɵɵtextInterpolate(ctx_r112.getCellData(row_r71, column_r98));
501
497
  } }
502
- function PoTableComponent_ng_template_6_ng_container_2_tbody_1_td_6_Template(rf, ctx) { if (rf & 1) {
498
+ function PoTableComponent_ng_template_6_ng_container_4_tbody_1_td_6_Template(rf, ctx) { if (rf & 1) {
503
499
  const _r146 = i0.ɵɵgetCurrentView();
504
500
  i0.ɵɵelementStart(0, "td", 73);
505
- i0.ɵɵlistener("click", function PoTableComponent_ng_template_6_ng_container_2_tbody_1_td_6_Template_td_click_0_listener() { i0.ɵɵrestoreView(_r146); const row_r71 = i0.ɵɵnextContext().$implicit; const ctx_r145 = i0.ɵɵnextContext(3); return ctx_r145.selectable ? ctx_r145.selectRow(row_r71) : "javascript:;"; });
501
+ i0.ɵɵlistener("click", function PoTableComponent_ng_template_6_ng_container_4_tbody_1_td_6_Template_td_click_0_listener() { i0.ɵɵrestoreView(_r146); const row_r71 = i0.ɵɵnextContext().$implicit; const ctx_r145 = i0.ɵɵnextContext(3); return ctx_r145.selectable ? ctx_r145.selectRow(row_r71) : "javascript:;"; });
506
502
  i0.ɵɵelementStart(1, "div", 74);
507
- i0.ɵɵlistener("mouseenter", function PoTableComponent_ng_template_6_ng_container_2_tbody_1_td_6_Template_div_mouseenter_1_listener($event) { const restoredCtx = i0.ɵɵrestoreView(_r146); const column_r98 = restoredCtx.$implicit; const row_r71 = i0.ɵɵnextContext().$implicit; const ctx_r148 = i0.ɵɵnextContext(3); return ctx_r148.tooltipMouseEnter($event, column_r98, row_r71); })("mouseleave", function PoTableComponent_ng_template_6_ng_container_2_tbody_1_td_6_Template_div_mouseleave_1_listener() { i0.ɵɵrestoreView(_r146); const ctx_r150 = i0.ɵɵnextContext(4); return ctx_r150.tooltipMouseLeave(); });
508
- i0.ɵɵtemplate(2, PoTableComponent_ng_template_6_ng_container_2_tbody_1_td_6_span_2_Template, 2, 4, "span", 75);
509
- i0.ɵɵtemplate(3, PoTableComponent_ng_template_6_ng_container_2_tbody_1_td_6_span_3_Template, 2, 5, "span", 75);
510
- i0.ɵɵtemplate(4, PoTableComponent_ng_template_6_ng_container_2_tbody_1_td_6_span_4_Template, 2, 1, "span", 75);
511
- i0.ɵɵtemplate(5, PoTableComponent_ng_template_6_ng_container_2_tbody_1_td_6_span_5_Template, 3, 6, "span", 75);
512
- i0.ɵɵtemplate(6, PoTableComponent_ng_template_6_ng_container_2_tbody_1_td_6_span_6_Template, 3, 4, "span", 75);
513
- i0.ɵɵtemplate(7, PoTableComponent_ng_template_6_ng_container_2_tbody_1_td_6_span_7_Template, 3, 4, "span", 75);
514
- i0.ɵɵtemplate(8, PoTableComponent_ng_template_6_ng_container_2_tbody_1_td_6_span_8_Template, 3, 4, "span", 75);
515
- i0.ɵɵtemplate(9, PoTableComponent_ng_template_6_ng_container_2_tbody_1_td_6_span_9_Template, 2, 1, "span", 75);
516
- i0.ɵɵtemplate(10, PoTableComponent_ng_template_6_ng_container_2_tbody_1_td_6_po_table_column_link_10_Template, 1, 5, "po-table-column-link", 76);
517
- i0.ɵɵtemplate(11, PoTableComponent_ng_template_6_ng_container_2_tbody_1_td_6_po_table_column_icon_11_Template, 1, 3, "po-table-column-icon", 77);
518
- i0.ɵɵtemplate(12, PoTableComponent_ng_template_6_ng_container_2_tbody_1_td_6_span_12_Template, 2, 1, "span", 75);
519
- i0.ɵɵtemplate(13, PoTableComponent_ng_template_6_ng_container_2_tbody_1_td_6_span_13_Template, 2, 1, "span", 75);
520
- i0.ɵɵtemplate(14, PoTableComponent_ng_template_6_ng_container_2_tbody_1_td_6_span_14_Template, 2, 1, "span", 78);
503
+ i0.ɵɵlistener("mouseenter", function PoTableComponent_ng_template_6_ng_container_4_tbody_1_td_6_Template_div_mouseenter_1_listener($event) { const restoredCtx = i0.ɵɵrestoreView(_r146); const column_r98 = restoredCtx.$implicit; const row_r71 = i0.ɵɵnextContext().$implicit; const ctx_r148 = i0.ɵɵnextContext(3); return ctx_r148.tooltipMouseEnter($event, column_r98, row_r71); })("mouseleave", function PoTableComponent_ng_template_6_ng_container_4_tbody_1_td_6_Template_div_mouseleave_1_listener() { i0.ɵɵrestoreView(_r146); const ctx_r150 = i0.ɵɵnextContext(4); return ctx_r150.tooltipMouseLeave(); });
504
+ i0.ɵɵtemplate(2, PoTableComponent_ng_template_6_ng_container_4_tbody_1_td_6_span_2_Template, 2, 4, "span", 75);
505
+ i0.ɵɵtemplate(3, PoTableComponent_ng_template_6_ng_container_4_tbody_1_td_6_span_3_Template, 2, 5, "span", 75);
506
+ i0.ɵɵtemplate(4, PoTableComponent_ng_template_6_ng_container_4_tbody_1_td_6_span_4_Template, 2, 1, "span", 75);
507
+ i0.ɵɵtemplate(5, PoTableComponent_ng_template_6_ng_container_4_tbody_1_td_6_span_5_Template, 3, 6, "span", 75);
508
+ i0.ɵɵtemplate(6, PoTableComponent_ng_template_6_ng_container_4_tbody_1_td_6_span_6_Template, 3, 4, "span", 75);
509
+ i0.ɵɵtemplate(7, PoTableComponent_ng_template_6_ng_container_4_tbody_1_td_6_span_7_Template, 3, 4, "span", 75);
510
+ i0.ɵɵtemplate(8, PoTableComponent_ng_template_6_ng_container_4_tbody_1_td_6_span_8_Template, 3, 4, "span", 75);
511
+ i0.ɵɵtemplate(9, PoTableComponent_ng_template_6_ng_container_4_tbody_1_td_6_span_9_Template, 2, 1, "span", 75);
512
+ i0.ɵɵtemplate(10, PoTableComponent_ng_template_6_ng_container_4_tbody_1_td_6_po_table_column_link_10_Template, 1, 5, "po-table-column-link", 76);
513
+ i0.ɵɵtemplate(11, PoTableComponent_ng_template_6_ng_container_4_tbody_1_td_6_po_table_column_icon_11_Template, 1, 3, "po-table-column-icon", 77);
514
+ i0.ɵɵtemplate(12, PoTableComponent_ng_template_6_ng_container_4_tbody_1_td_6_span_12_Template, 2, 1, "span", 75);
515
+ i0.ɵɵtemplate(13, PoTableComponent_ng_template_6_ng_container_4_tbody_1_td_6_span_13_Template, 2, 1, "span", 75);
516
+ i0.ɵɵtemplate(14, PoTableComponent_ng_template_6_ng_container_4_tbody_1_td_6_span_14_Template, 2, 1, "span", 78);
521
517
  i0.ɵɵelementEnd()();
522
518
  } if (rf & 2) {
523
519
  const column_r98 = ctx.$implicit;
@@ -555,12 +551,12 @@ function PoTableComponent_ng_template_6_ng_container_2_tbody_1_td_6_Template(rf,
555
551
  i0.ɵɵadvance(1);
556
552
  i0.ɵɵproperty("ngSwitchCase", "label");
557
553
  } }
558
- function PoTableComponent_ng_template_6_ng_container_2_tbody_1_td_7_ng_template_1_Template(rf, ctx) { }
559
- function PoTableComponent_ng_template_6_ng_container_2_tbody_1_td_7_Template(rf, ctx) { if (rf & 1) {
554
+ function PoTableComponent_ng_template_6_ng_container_4_tbody_1_td_7_ng_template_1_Template(rf, ctx) { }
555
+ function PoTableComponent_ng_template_6_ng_container_4_tbody_1_td_7_Template(rf, ctx) { if (rf & 1) {
560
556
  const _r155 = i0.ɵɵgetCurrentView();
561
557
  i0.ɵɵelementStart(0, "td", 71);
562
- i0.ɵɵlistener("click", function PoTableComponent_ng_template_6_ng_container_2_tbody_1_td_7_Template_td_click_0_listener() { i0.ɵɵrestoreView(_r155); const row_r71 = i0.ɵɵnextContext().$implicit; const ctx_r153 = i0.ɵɵnextContext(3); return ctx_r153.toggleDetail(row_r71); });
563
- i0.ɵɵtemplate(1, PoTableComponent_ng_template_6_ng_container_2_tbody_1_td_7_ng_template_1_Template, 0, 0, "ng-template", 72);
558
+ i0.ɵɵlistener("click", function PoTableComponent_ng_template_6_ng_container_4_tbody_1_td_7_Template_td_click_0_listener() { i0.ɵɵrestoreView(_r155); const row_r71 = i0.ɵɵnextContext().$implicit; const ctx_r153 = i0.ɵɵnextContext(3); return ctx_r153.toggleDetail(row_r71); });
559
+ i0.ɵɵtemplate(1, PoTableComponent_ng_template_6_ng_container_4_tbody_1_td_7_ng_template_1_Template, 0, 0, "ng-template", 72);
564
560
  i0.ɵɵelementEnd();
565
561
  } if (rf & 2) {
566
562
  const ctx_r156 = i0.ɵɵnextContext();
@@ -569,32 +565,32 @@ function PoTableComponent_ng_template_6_ng_container_2_tbody_1_td_7_Template(rf,
569
565
  i0.ɵɵnextContext(3);
570
566
  const _r11 = i0.ɵɵreference(13);
571
567
  i0.ɵɵadvance(1);
572
- i0.ɵɵproperty("ngTemplateOutlet", _r11)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c11, row_r71, rowIndex_r72));
568
+ i0.ɵɵproperty("ngTemplateOutlet", _r11)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c12, row_r71, rowIndex_r72));
573
569
  } }
574
- function PoTableComponent_ng_template_6_ng_container_2_tbody_1_8_ng_template_0_Template(rf, ctx) { }
575
- function PoTableComponent_ng_template_6_ng_container_2_tbody_1_8_Template(rf, ctx) { if (rf & 1) {
576
- i0.ɵɵtemplate(0, PoTableComponent_ng_template_6_ng_container_2_tbody_1_8_ng_template_0_Template, 0, 0, "ng-template", 72);
570
+ function PoTableComponent_ng_template_6_ng_container_4_tbody_1_8_ng_template_0_Template(rf, ctx) { }
571
+ function PoTableComponent_ng_template_6_ng_container_4_tbody_1_8_Template(rf, ctx) { if (rf & 1) {
572
+ i0.ɵɵtemplate(0, PoTableComponent_ng_template_6_ng_container_4_tbody_1_8_ng_template_0_Template, 0, 0, "ng-template", 72);
577
573
  } if (rf & 2) {
578
574
  const ctx_r158 = i0.ɵɵnextContext();
579
575
  const row_r71 = ctx_r158.$implicit;
580
576
  const rowIndex_r72 = ctx_r158.index;
581
577
  i0.ɵɵnextContext(3);
582
578
  const _r23 = i0.ɵɵreference(25);
583
- i0.ɵɵproperty("ngTemplateOutlet", _r23)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c11, row_r71, rowIndex_r72));
579
+ i0.ɵɵproperty("ngTemplateOutlet", _r23)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c12, row_r71, rowIndex_r72));
584
580
  } }
585
- function PoTableComponent_ng_template_6_ng_container_2_tbody_1_ng_container_9_Template(rf, ctx) { if (rf & 1) {
581
+ function PoTableComponent_ng_template_6_ng_container_4_tbody_1_ng_container_9_Template(rf, ctx) { if (rf & 1) {
586
582
  i0.ɵɵelementContainerStart(0);
587
583
  i0.ɵɵelement(1, "td", 83);
588
584
  i0.ɵɵelementContainerEnd();
589
585
  } }
590
- function PoTableComponent_ng_template_6_ng_container_2_tbody_1_td_10_Template(rf, ctx) { if (rf & 1) {
586
+ function PoTableComponent_ng_template_6_ng_container_4_tbody_1_td_10_Template(rf, ctx) { if (rf & 1) {
591
587
  i0.ɵɵelement(0, "td", 84);
592
588
  } }
593
- function PoTableComponent_ng_template_6_ng_container_2_tbody_1_tr_11_ng_template_2_Template(rf, ctx) { }
594
- const _c13 = function (a0, a1) { return { $implicit: a0, rowIndex: a1 }; };
595
- function PoTableComponent_ng_template_6_ng_container_2_tbody_1_tr_11_Template(rf, ctx) { if (rf & 1) {
589
+ function PoTableComponent_ng_template_6_ng_container_4_tbody_1_tr_11_ng_template_2_Template(rf, ctx) { }
590
+ const _c14 = function (a0, a1) { return { $implicit: a0, rowIndex: a1 }; };
591
+ function PoTableComponent_ng_template_6_ng_container_4_tbody_1_tr_11_Template(rf, ctx) { if (rf & 1) {
596
592
  i0.ɵɵelementStart(0, "tr")(1, "td", 85);
597
- i0.ɵɵtemplate(2, PoTableComponent_ng_template_6_ng_container_2_tbody_1_tr_11_ng_template_2_Template, 0, 0, "ng-template", 72);
593
+ i0.ɵɵtemplate(2, PoTableComponent_ng_template_6_ng_container_4_tbody_1_tr_11_ng_template_2_Template, 0, 0, "ng-template", 72);
598
594
  i0.ɵɵelementEnd()();
599
595
  } if (rf & 2) {
600
596
  const ctx_r160 = i0.ɵɵnextContext();
@@ -604,12 +600,12 @@ function PoTableComponent_ng_template_6_ng_container_2_tbody_1_tr_11_Template(rf
604
600
  i0.ɵɵadvance(1);
605
601
  i0.ɵɵproperty("colSpan", ctx_r82.columnCountForMasterDetail);
606
602
  i0.ɵɵadvance(1);
607
- i0.ɵɵproperty("ngTemplateOutlet", ctx_r82.tableRowTemplate.templateRef)("ngTemplateOutletContext", i0.ɵɵpureFunction2(3, _c13, row_r71, rowIndex_r72));
603
+ i0.ɵɵproperty("ngTemplateOutlet", ctx_r82.tableRowTemplate.templateRef)("ngTemplateOutletContext", i0.ɵɵpureFunction2(3, _c14, row_r71, rowIndex_r72));
608
604
  } }
609
- function PoTableComponent_ng_template_6_ng_container_2_tbody_1_tr_12_Template(rf, ctx) { if (rf & 1) {
605
+ function PoTableComponent_ng_template_6_ng_container_4_tbody_1_tr_12_Template(rf, ctx) { if (rf & 1) {
610
606
  const _r162 = i0.ɵɵgetCurrentView();
611
607
  i0.ɵɵelementStart(0, "tr")(1, "td", 86)(2, "po-table-detail", 87);
612
- i0.ɵɵlistener("p-select-row", function PoTableComponent_ng_template_6_ng_container_2_tbody_1_tr_12_Template_po_table_detail_p_select_row_2_listener($event) { i0.ɵɵrestoreView(_r162); const ctx_r161 = i0.ɵɵnextContext(4); return ctx_r161.selectDetailRow($event); });
608
+ i0.ɵɵlistener("p-select-row", function PoTableComponent_ng_template_6_ng_container_4_tbody_1_tr_12_Template_po_table_detail_p_select_row_2_listener($event) { i0.ɵɵrestoreView(_r162); const ctx_r161 = i0.ɵɵnextContext(4); return ctx_r161.selectDetailRow($event); });
613
609
  i0.ɵɵelementEnd()()();
614
610
  } if (rf & 2) {
615
611
  const row_r71 = i0.ɵɵnextContext().$implicit;
@@ -619,20 +615,20 @@ function PoTableComponent_ng_template_6_ng_container_2_tbody_1_tr_12_Template(rf
619
615
  i0.ɵɵadvance(1);
620
616
  i0.ɵɵproperty("p-selectable", ctx_r83.selectable && !ctx_r83.detailHideSelect)("p-detail", ctx_r83.columnMasterDetail.detail)("p-items", row_r71[ctx_r83.nameColumnDetail]);
621
617
  } }
622
- function PoTableComponent_ng_template_6_ng_container_2_tbody_1_Template(rf, ctx) { if (rf & 1) {
618
+ function PoTableComponent_ng_template_6_ng_container_4_tbody_1_Template(rf, ctx) { if (rf & 1) {
623
619
  i0.ɵɵelementStart(0, "tbody", 63)(1, "tr", 67);
624
- i0.ɵɵtemplate(2, PoTableComponent_ng_template_6_ng_container_2_tbody_1_td_2_Template, 2, 4, "td", 39);
625
- i0.ɵɵtemplate(3, PoTableComponent_ng_template_6_ng_container_2_tbody_1_td_3_Template, 2, 5, "td", 68);
626
- i0.ɵɵtemplate(4, PoTableComponent_ng_template_6_ng_container_2_tbody_1_4_Template, 1, 5, null, 23);
627
- i0.ɵɵtemplate(5, PoTableComponent_ng_template_6_ng_container_2_tbody_1_td_5_Template, 2, 5, "td", 68);
628
- i0.ɵɵtemplate(6, PoTableComponent_ng_template_6_ng_container_2_tbody_1_td_6_Template, 15, 33, "td", 69);
629
- i0.ɵɵtemplate(7, PoTableComponent_ng_template_6_ng_container_2_tbody_1_td_7_Template, 2, 5, "td", 68);
630
- i0.ɵɵtemplate(8, PoTableComponent_ng_template_6_ng_container_2_tbody_1_8_Template, 1, 5, null, 23);
631
- i0.ɵɵtemplate(9, PoTableComponent_ng_template_6_ng_container_2_tbody_1_ng_container_9_Template, 2, 0, "ng-container", 23);
632
- i0.ɵɵtemplate(10, PoTableComponent_ng_template_6_ng_container_2_tbody_1_td_10_Template, 1, 0, "td", 70);
620
+ i0.ɵɵtemplate(2, PoTableComponent_ng_template_6_ng_container_4_tbody_1_td_2_Template, 2, 4, "td", 40);
621
+ i0.ɵɵtemplate(3, PoTableComponent_ng_template_6_ng_container_4_tbody_1_td_3_Template, 2, 5, "td", 68);
622
+ i0.ɵɵtemplate(4, PoTableComponent_ng_template_6_ng_container_4_tbody_1_4_Template, 1, 5, null, 23);
623
+ i0.ɵɵtemplate(5, PoTableComponent_ng_template_6_ng_container_4_tbody_1_td_5_Template, 2, 5, "td", 68);
624
+ i0.ɵɵtemplate(6, PoTableComponent_ng_template_6_ng_container_4_tbody_1_td_6_Template, 15, 33, "td", 69);
625
+ i0.ɵɵtemplate(7, PoTableComponent_ng_template_6_ng_container_4_tbody_1_td_7_Template, 2, 5, "td", 68);
626
+ i0.ɵɵtemplate(8, PoTableComponent_ng_template_6_ng_container_4_tbody_1_8_Template, 1, 5, null, 23);
627
+ i0.ɵɵtemplate(9, PoTableComponent_ng_template_6_ng_container_4_tbody_1_ng_container_9_Template, 2, 0, "ng-container", 23);
628
+ i0.ɵɵtemplate(10, PoTableComponent_ng_template_6_ng_container_4_tbody_1_td_10_Template, 1, 0, "td", 70);
633
629
  i0.ɵɵelementEnd();
634
- i0.ɵɵtemplate(11, PoTableComponent_ng_template_6_ng_container_2_tbody_1_tr_11_Template, 3, 6, "tr", 23);
635
- i0.ɵɵtemplate(12, PoTableComponent_ng_template_6_ng_container_2_tbody_1_tr_12_Template, 3, 4, "tr", 23);
630
+ i0.ɵɵtemplate(11, PoTableComponent_ng_template_6_ng_container_4_tbody_1_tr_11_Template, 3, 6, "tr", 23);
631
+ i0.ɵɵtemplate(12, PoTableComponent_ng_template_6_ng_container_4_tbody_1_tr_12_Template, 3, 4, "tr", 23);
636
632
  i0.ɵɵelementEnd();
637
633
  } if (rf & 2) {
638
634
  const row_r71 = ctx.$implicit;
@@ -663,229 +659,229 @@ function PoTableComponent_ng_template_6_ng_container_2_tbody_1_Template(rf, ctx)
663
659
  i0.ɵɵadvance(1);
664
660
  i0.ɵɵproperty("ngIf", ctx_r70.hasMainColumns && ctx_r70.isShowMasterDetail(row_r71));
665
661
  } }
666
- function PoTableComponent_ng_template_6_ng_container_2_Template(rf, ctx) { if (rf & 1) {
662
+ function PoTableComponent_ng_template_6_ng_container_4_Template(rf, ctx) { if (rf & 1) {
667
663
  i0.ɵɵelementContainerStart(0);
668
- i0.ɵɵtemplate(1, PoTableComponent_ng_template_6_ng_container_2_tbody_1_Template, 13, 14, "tbody", 66);
664
+ i0.ɵɵtemplate(1, PoTableComponent_ng_template_6_ng_container_4_tbody_1_Template, 13, 14, "tbody", 66);
669
665
  i0.ɵɵelementContainerEnd();
670
666
  } if (rf & 2) {
671
667
  const ctx_r69 = i0.ɵɵnextContext(2);
672
668
  i0.ɵɵadvance(1);
673
- i0.ɵɵproperty("ngForOf", ctx_r69.items)("ngForTrackBy", ctx_r69.trackBy);
669
+ i0.ɵɵproperty("cdkVirtualForOf", ctx_r69.items)("cdkVirtualForTrackBy", ctx_r69.trackBy);
674
670
  } }
675
671
  function PoTableComponent_ng_template_6_Template(rf, ctx) { if (rf & 1) {
676
- i0.ɵɵelementStart(0, "table", 38);
677
- i0.ɵɵtemplate(1, PoTableComponent_ng_template_6_tbody_1_Template, 5, 2, "tbody", 62);
678
- i0.ɵɵtemplate(2, PoTableComponent_ng_template_6_ng_container_2_Template, 2, 2, "ng-container", 23);
679
- i0.ɵɵelementEnd();
672
+ const _r165 = i0.ɵɵgetCurrentView();
673
+ i0.ɵɵelementStart(0, "cdk-virtual-scroll-viewport", 60, 61);
674
+ i0.ɵɵlistener("scroll", function PoTableComponent_ng_template_6_Template_cdk_virtual_scroll_viewport_scroll_0_listener() { i0.ɵɵrestoreView(_r165); const ctx_r164 = i0.ɵɵnextContext(); return ctx_r164.syncronizeHorizontalScroll(); });
675
+ i0.ɵɵelementStart(2, "table", 39);
676
+ i0.ɵɵtemplate(3, PoTableComponent_ng_template_6_tbody_3_Template, 5, 2, "tbody", 62);
677
+ i0.ɵɵtemplate(4, PoTableComponent_ng_template_6_ng_container_4_Template, 2, 2, "ng-container", 23);
678
+ i0.ɵɵelementEnd()();
680
679
  } if (rf & 2) {
681
680
  const ctx_r7 = i0.ɵɵnextContext();
681
+ i0.ɵɵstyleProp("height", ctx_r7.heightTableContainer, "px");
682
+ i0.ɵɵproperty("itemSize", ctx_r7.itemSize)("minBufferPx", ctx_r7.height < 100 ? 100 : ctx_r7.height)("maxBufferPx", ctx_r7.height < 200 ? 200 : ctx_r7.height);
683
+ i0.ɵɵadvance(2);
682
684
  i0.ɵɵclassProp("po-table-striped", ctx_r7.striped)("po-table-layout-fixed", ctx_r7.hideTextOverflow);
683
685
  i0.ɵɵadvance(1);
684
686
  i0.ɵɵproperty("ngIf", !ctx_r7.hasItems || !ctx_r7.hasMainColumns);
685
687
  i0.ɵɵadvance(1);
686
688
  i0.ɵɵproperty("ngIf", ctx_r7.hasMainColumns);
687
689
  } }
688
- function PoTableComponent_ng_template_8_th_3_input_2_Template(rf, ctx) { if (rf & 1) {
689
- i0.ɵɵelement(0, "input", 49);
690
- } if (rf & 2) {
691
- const ctx_r174 = i0.ɵɵnextContext(3);
692
- i0.ɵɵclassProp("po-table-checkbox-checked", ctx_r174.selectAll)("po-table-checkbox-indeterminate", ctx_r174.selectAll === null);
693
- } }
694
- function PoTableComponent_ng_template_8_th_3_label_3_Template(rf, ctx) { if (rf & 1) {
695
- const _r177 = i0.ɵɵgetCurrentView();
696
- i0.ɵɵelementStart(0, "label", 50);
697
- i0.ɵɵlistener("click", function PoTableComponent_ng_template_8_th_3_label_3_Template_label_click_0_listener() { i0.ɵɵrestoreView(_r177); const ctx_r176 = i0.ɵɵnextContext(3); return ctx_r176.selectAllRows(); });
690
+ function PoTableComponent_ng_template_8_th_3_po_checkbox_2_Template(rf, ctx) { if (rf & 1) {
691
+ const _r178 = i0.ɵɵgetCurrentView();
692
+ i0.ɵɵelementStart(0, "po-checkbox", 49);
693
+ i0.ɵɵlistener("click", function PoTableComponent_ng_template_8_th_3_po_checkbox_2_Template_po_checkbox_click_0_listener() { i0.ɵɵrestoreView(_r178); const ctx_r177 = i0.ɵɵnextContext(3); return ctx_r177.selectAllRows(); })("p-change", function PoTableComponent_ng_template_8_th_3_po_checkbox_2_Template_po_checkbox_p_change_0_listener() { i0.ɵɵrestoreView(_r178); const ctx_r179 = i0.ɵɵnextContext(3); return ctx_r179.selectAllRows(); })("ngModelChange", function PoTableComponent_ng_template_8_th_3_po_checkbox_2_Template_po_checkbox_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r178); const ctx_r180 = i0.ɵɵnextContext(3); return ctx_r180.selectAll = $event; });
698
694
  i0.ɵɵelementEnd();
695
+ } if (rf & 2) {
696
+ const ctx_r176 = i0.ɵɵnextContext(3);
697
+ i0.ɵɵproperty("ngModel", ctx_r176.selectAll);
699
698
  } }
700
699
  function PoTableComponent_ng_template_8_th_3_Template(rf, ctx) { if (rf & 1) {
701
- i0.ɵɵelementStart(0, "th", 46)(1, "div");
702
- i0.ɵɵtemplate(2, PoTableComponent_ng_template_8_th_3_input_2_Template, 1, 4, "input", 47);
703
- i0.ɵɵtemplate(3, PoTableComponent_ng_template_8_th_3_label_3_Template, 1, 0, "label", 48);
700
+ i0.ɵɵelementStart(0, "th", 47)(1, "div");
701
+ i0.ɵɵtemplate(2, PoTableComponent_ng_template_8_th_3_po_checkbox_2_Template, 1, 1, "po-checkbox", 48);
704
702
  i0.ɵɵelementEnd()();
705
703
  } if (rf & 2) {
706
- const ctx_r164 = i0.ɵɵnextContext(2);
707
- i0.ɵɵadvance(1);
708
- i0.ɵɵclassProp("po-table-header-fixed-inner", ctx_r164.height);
704
+ const ctx_r166 = i0.ɵɵnextContext(2);
709
705
  i0.ɵɵadvance(1);
710
- i0.ɵɵproperty("ngIf", !ctx_r164.hideSelectAll);
706
+ i0.ɵɵclassProp("po-table-header-fixed-inner", ctx_r166.height);
711
707
  i0.ɵɵadvance(1);
712
- i0.ɵɵproperty("ngIf", !ctx_r164.hideSelectAll);
708
+ i0.ɵɵproperty("ngIf", !ctx_r166.hideSelectAll);
713
709
  } }
714
710
  function PoTableComponent_ng_template_8_th_4_Template(rf, ctx) { if (rf & 1) {
715
- i0.ɵɵelement(0, "th", 51);
711
+ i0.ɵɵelement(0, "th", 50);
716
712
  } }
717
713
  function PoTableComponent_ng_template_8_th_5_Template(rf, ctx) { if (rf & 1) {
718
714
  i0.ɵɵelement(0, "th");
719
715
  } if (rf & 2) {
720
- const ctx_r166 = i0.ɵɵnextContext(2);
721
- i0.ɵɵclassProp("po-table-header-master-detail", !ctx_r166.isSingleAction)("po-table-header-single-action", ctx_r166.isSingleAction);
716
+ const ctx_r168 = i0.ɵɵnextContext(2);
717
+ i0.ɵɵclassProp("po-table-header-master-detail", !ctx_r168.isSingleAction)("po-table-header-single-action", ctx_r168.isSingleAction);
722
718
  } }
723
719
  function PoTableComponent_ng_template_8_th_6_ng_container_2_Template(rf, ctx) { if (rf & 1) {
724
720
  i0.ɵɵelementContainer(0);
725
721
  } }
726
722
  function PoTableComponent_ng_template_8_th_6_Template(rf, ctx) { if (rf & 1) {
727
- i0.ɵɵelementStart(0, "th", 52, 53);
728
- i0.ɵɵtemplate(2, PoTableComponent_ng_template_8_th_6_ng_container_2_Template, 1, 0, "ng-container", 54);
723
+ i0.ɵɵelementStart(0, "th", 51, 52);
724
+ i0.ɵɵtemplate(2, PoTableComponent_ng_template_8_th_6_ng_container_2_Template, 1, 0, "ng-container", 32);
729
725
  i0.ɵɵelementEnd();
730
726
  } if (rf & 2) {
731
- const ctx_r167 = i0.ɵɵnextContext(2);
727
+ const ctx_r169 = i0.ɵɵnextContext(2);
732
728
  const _r19 = i0.ɵɵreference(21);
733
729
  const _r21 = i0.ɵɵreference(23);
734
730
  i0.ɵɵadvance(2);
735
- i0.ɵɵproperty("ngIf", ctx_r167.height)("ngIfThen", _r19)("ngIfElse", _r21);
731
+ i0.ɵɵproperty("ngIf", ctx_r169.height)("ngIfThen", _r19)("ngIfElse", _r21);
736
732
  } }
737
733
  function PoTableComponent_ng_template_8_th_7_ng_container_3_Template(rf, ctx) { if (rf & 1) {
738
734
  i0.ɵɵelementContainer(0);
739
735
  } }
740
736
  function PoTableComponent_ng_template_8_th_7_Template(rf, ctx) { if (rf & 1) {
741
- const _r185 = i0.ɵɵgetCurrentView();
742
- i0.ɵɵelementStart(0, "th", 55, 56);
743
- i0.ɵɵlistener("click", function PoTableComponent_ng_template_8_th_7_Template_th_click_0_listener() { const restoredCtx = i0.ɵɵrestoreView(_r185); const column_r180 = restoredCtx.$implicit; const ctx_r184 = i0.ɵɵnextContext(2); return ctx_r184.sortColumn(column_r180); });
744
- i0.ɵɵelementStart(2, "div", 57);
745
- i0.ɵɵtemplate(3, PoTableComponent_ng_template_8_th_7_ng_container_3_Template, 1, 0, "ng-container", 58);
737
+ const _r188 = i0.ɵɵgetCurrentView();
738
+ i0.ɵɵelementStart(0, "th", 53, 54);
739
+ i0.ɵɵlistener("click", function PoTableComponent_ng_template_8_th_7_Template_th_click_0_listener() { const restoredCtx = i0.ɵɵrestoreView(_r188); const column_r183 = restoredCtx.$implicit; const ctx_r187 = i0.ɵɵnextContext(2); return ctx_r187.sortColumn(column_r183); });
740
+ i0.ɵɵelementStart(2, "div", 55);
741
+ i0.ɵɵtemplate(3, PoTableComponent_ng_template_8_th_7_ng_container_3_Template, 1, 0, "ng-container", 56);
746
742
  i0.ɵɵelementEnd()();
747
743
  } if (rf & 2) {
748
- const column_r180 = ctx.$implicit;
749
- const ctx_r168 = i0.ɵɵnextContext(2);
744
+ const column_r183 = ctx.$implicit;
745
+ const ctx_r170 = i0.ɵɵnextContext(2);
750
746
  const _r17 = i0.ɵɵreference(19);
751
- i0.ɵɵstyleProp("width", column_r180.width)("max-width", column_r180.width)("min-width", column_r180.width);
752
- i0.ɵɵclassProp("po-clickable", ctx_r168.sort && column_r180.sortable !== false || ctx_r168.hasService)("po-table-header-subtitle", column_r180.type === "subtitle");
747
+ i0.ɵɵstyleProp("width", column_r183.width)("max-width", column_r183.width)("min-width", column_r183.width);
748
+ i0.ɵɵclassProp("po-clickable", ctx_r170.sort && column_r183.sortable !== false || ctx_r170.hasService)("po-table-header-subtitle", column_r183.type === "subtitle");
753
749
  i0.ɵɵadvance(2);
754
- i0.ɵɵclassProp("po-table-header-fixed-inner", ctx_r168.height)("po-table-header-flex-right", column_r180.type === "currency" || column_r180.type === "number")("po-table-header-flex-center", column_r180.type === "subtitle");
750
+ i0.ɵɵclassProp("po-table-header-fixed-inner", ctx_r170.height)("po-table-header-flex-right", column_r183.type === "currency" || column_r183.type === "number")("po-table-header-flex-center", column_r183.type === "subtitle");
755
751
  i0.ɵɵadvance(1);
756
- i0.ɵɵproperty("ngTemplateOutlet", _r17)("ngTemplateOutletContext", i0.ɵɵpureFunction1(18, _c10, column_r180));
752
+ i0.ɵɵproperty("ngTemplateOutlet", _r17)("ngTemplateOutletContext", i0.ɵɵpureFunction1(18, _c11, column_r183));
757
753
  } }
758
754
  function PoTableComponent_ng_template_8_th_8_Template(rf, ctx) { if (rf & 1) {
759
- i0.ɵɵelement(0, "th", 51);
755
+ i0.ɵɵelement(0, "th", 50);
760
756
  } }
761
757
  function PoTableComponent_ng_template_8_th_9_Template(rf, ctx) { if (rf & 1) {
762
758
  i0.ɵɵelement(0, "th");
763
759
  } if (rf & 2) {
764
- const ctx_r170 = i0.ɵɵnextContext(2);
765
- i0.ɵɵclassProp("po-table-header-single-action", ctx_r170.isSingleAction)("po-table-header-actions", !ctx_r170.isSingleAction);
760
+ const ctx_r172 = i0.ɵɵnextContext(2);
761
+ i0.ɵɵclassProp("po-table-header-single-action", ctx_r172.isSingleAction)("po-table-header-actions", !ctx_r172.isSingleAction);
766
762
  } }
767
763
  function PoTableComponent_ng_template_8_th_10_Template(rf, ctx) { if (rf & 1) {
768
- const _r189 = i0.ɵɵgetCurrentView();
769
- i0.ɵɵelementStart(0, "th", null, 59)(2, "div")(3, "button", 60, 61);
770
- i0.ɵɵlistener("click", function PoTableComponent_ng_template_8_th_10_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r189); const ctx_r188 = i0.ɵɵnextContext(2); return ctx_r188.onOpenColumnManager(); });
764
+ const _r192 = i0.ɵɵgetCurrentView();
765
+ i0.ɵɵelementStart(0, "th", null, 57)(2, "div")(3, "button", 58, 59);
766
+ i0.ɵɵlistener("click", function PoTableComponent_ng_template_8_th_10_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r192); const ctx_r191 = i0.ɵɵnextContext(2); return ctx_r191.onOpenColumnManager(); });
771
767
  i0.ɵɵelementEnd()()();
772
768
  } if (rf & 2) {
773
- const _r186 = i0.ɵɵreference(1);
774
- const ctx_r171 = i0.ɵɵnextContext(2);
775
- i0.ɵɵclassProp("po-table-header-column-manager", !ctx_r171.isSingleAction || !ctx_r171.actionRight)("po-table-header-column-manager-border", !ctx_r171.height && ctx_r171.container)("po-table-header-single-action", ctx_r171.isSingleAction && ctx_r171.actionRight);
769
+ const _r189 = i0.ɵɵreference(1);
770
+ const ctx_r173 = i0.ɵɵnextContext(2);
771
+ i0.ɵɵclassProp("po-table-header-column-manager", !ctx_r173.isSingleAction || !ctx_r173.actionRight)("po-table-header-column-manager-border", !ctx_r173.height && ctx_r173.container)("po-table-header-single-action", ctx_r173.isSingleAction && ctx_r173.actionRight);
776
772
  i0.ɵɵadvance(2);
777
- i0.ɵɵstyleProp("width", ctx_r171.height && ctx_r171.visibleActions.length ? _r186.offsetWidth : undefined, "px");
778
- i0.ɵɵclassProp("po-table-header-column-manager-border", ctx_r171.height && ctx_r171.container)("po-table-header-column-manager-fixed-inner", ctx_r171.height);
773
+ i0.ɵɵstyleProp("width", ctx_r173.height && ctx_r173.visibleActions.length ? _r189.offsetWidth : undefined, "px");
774
+ i0.ɵɵclassProp("po-table-header-column-manager-border", ctx_r173.height && ctx_r173.container)("po-table-header-column-manager-fixed-inner", ctx_r173.height);
779
775
  i0.ɵɵadvance(1);
780
- i0.ɵɵproperty("p-tooltip", ctx_r171.literals.columnsManager);
776
+ i0.ɵɵproperty("p-tooltip", ctx_r173.literals.columnsManager);
781
777
  } }
782
778
  function PoTableComponent_ng_template_8_tbody_11_Template(rf, ctx) { if (rf & 1) {
783
779
  i0.ɵɵelementStart(0, "tbody", 63)(1, "tr", 64)(2, "td", 65)(3, "span");
784
780
  i0.ɵɵtext(4);
785
781
  i0.ɵɵelementEnd()()()();
786
782
  } if (rf & 2) {
787
- const ctx_r172 = i0.ɵɵnextContext(2);
783
+ const ctx_r174 = i0.ɵɵnextContext(2);
788
784
  i0.ɵɵadvance(2);
789
- i0.ɵɵproperty("colSpan", ctx_r172.columnCount);
785
+ i0.ɵɵproperty("colSpan", ctx_r174.columnCount);
790
786
  i0.ɵɵadvance(2);
791
- i0.ɵɵtextInterpolate1(" ", ctx_r172.literals.noData, " ");
787
+ i0.ɵɵtextInterpolate1(" ", ctx_r174.literals.noData, " ");
792
788
  } }
793
789
  function PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_2_ng_container_1_Template(rf, ctx) { if (rf & 1) {
794
790
  i0.ɵɵelementContainer(0);
795
791
  } }
796
792
  function PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_2_Template(rf, ctx) { if (rf & 1) {
797
- i0.ɵɵelementStart(0, "td", 46);
798
- i0.ɵɵtemplate(1, PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_2_ng_container_1_Template, 1, 0, "ng-container", 58);
793
+ i0.ɵɵelementStart(0, "td", 47);
794
+ i0.ɵɵtemplate(1, PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_2_ng_container_1_Template, 1, 0, "ng-container", 56);
799
795
  i0.ɵɵelementEnd();
800
796
  } if (rf & 2) {
801
- const row_r191 = i0.ɵɵnextContext().$implicit;
802
- const ctx_r193 = i0.ɵɵnextContext(3);
797
+ const row_r194 = i0.ɵɵnextContext().$implicit;
798
+ const ctx_r196 = i0.ɵɵnextContext(3);
803
799
  const _r13 = i0.ɵɵreference(15);
804
800
  const _r15 = i0.ɵɵreference(17);
805
801
  i0.ɵɵadvance(1);
806
- i0.ɵɵproperty("ngTemplateOutlet", ctx_r193.singleSelect ? _r13 : _r15)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c10, row_r191));
802
+ i0.ɵɵproperty("ngTemplateOutlet", ctx_r196.singleSelect ? _r13 : _r15)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c11, row_r194));
807
803
  } }
808
804
  function PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_3_ng_template_1_Template(rf, ctx) { }
809
805
  function PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_3_Template(rf, ctx) { if (rf & 1) {
810
- const _r209 = i0.ɵɵgetCurrentView();
806
+ const _r212 = i0.ɵɵgetCurrentView();
811
807
  i0.ɵɵelementStart(0, "td", 71);
812
- i0.ɵɵlistener("click", function PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_3_Template_td_click_0_listener() { i0.ɵɵrestoreView(_r209); const row_r191 = i0.ɵɵnextContext().$implicit; const ctx_r207 = i0.ɵɵnextContext(3); return ctx_r207.toggleDetail(row_r191); });
808
+ i0.ɵɵlistener("click", function PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_3_Template_td_click_0_listener() { i0.ɵɵrestoreView(_r212); const row_r194 = i0.ɵɵnextContext().$implicit; const ctx_r210 = i0.ɵɵnextContext(3); return ctx_r210.toggleDetail(row_r194); });
813
809
  i0.ɵɵtemplate(1, PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_3_ng_template_1_Template, 0, 0, "ng-template", 72);
814
810
  i0.ɵɵelementEnd();
815
811
  } if (rf & 2) {
816
- const ctx_r210 = i0.ɵɵnextContext();
817
- const row_r191 = ctx_r210.$implicit;
818
- const rowIndex_r192 = ctx_r210.index;
812
+ const ctx_r213 = i0.ɵɵnextContext();
813
+ const row_r194 = ctx_r213.$implicit;
814
+ const rowIndex_r195 = ctx_r213.index;
819
815
  i0.ɵɵnextContext(3);
820
816
  const _r11 = i0.ɵɵreference(13);
821
817
  i0.ɵɵadvance(1);
822
- i0.ɵɵproperty("ngTemplateOutlet", _r11)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c11, row_r191, rowIndex_r192));
818
+ i0.ɵɵproperty("ngTemplateOutlet", _r11)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c12, row_r194, rowIndex_r195));
823
819
  } }
824
820
  function PoTableComponent_ng_template_8_ng_container_12_tbody_1_4_ng_template_0_Template(rf, ctx) { }
825
821
  function PoTableComponent_ng_template_8_ng_container_12_tbody_1_4_Template(rf, ctx) { if (rf & 1) {
826
822
  i0.ɵɵtemplate(0, PoTableComponent_ng_template_8_ng_container_12_tbody_1_4_ng_template_0_Template, 0, 0, "ng-template", 72);
827
823
  } if (rf & 2) {
828
- const ctx_r212 = i0.ɵɵnextContext();
829
- const row_r191 = ctx_r212.$implicit;
830
- const rowIndex_r192 = ctx_r212.index;
824
+ const ctx_r215 = i0.ɵɵnextContext();
825
+ const row_r194 = ctx_r215.$implicit;
826
+ const rowIndex_r195 = ctx_r215.index;
831
827
  i0.ɵɵnextContext(3);
832
828
  const _r23 = i0.ɵɵreference(25);
833
- i0.ɵɵproperty("ngTemplateOutlet", _r23)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c11, row_r191, rowIndex_r192));
829
+ i0.ɵɵproperty("ngTemplateOutlet", _r23)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c12, row_r194, rowIndex_r195));
834
830
  } }
835
831
  function PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_5_ng_template_1_Template(rf, ctx) { }
836
832
  function PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_5_Template(rf, ctx) { if (rf & 1) {
837
- const _r216 = i0.ɵɵgetCurrentView();
833
+ const _r219 = i0.ɵɵgetCurrentView();
838
834
  i0.ɵɵelementStart(0, "td", 71);
839
- i0.ɵɵlistener("click", function PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_5_Template_td_click_0_listener() { i0.ɵɵrestoreView(_r216); const row_r191 = i0.ɵɵnextContext().$implicit; const ctx_r214 = i0.ɵɵnextContext(3); return ctx_r214.toggleDetail(row_r191); });
835
+ i0.ɵɵlistener("click", function PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_5_Template_td_click_0_listener() { i0.ɵɵrestoreView(_r219); const row_r194 = i0.ɵɵnextContext().$implicit; const ctx_r217 = i0.ɵɵnextContext(3); return ctx_r217.toggleDetail(row_r194); });
840
836
  i0.ɵɵtemplate(1, PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_5_ng_template_1_Template, 0, 0, "ng-template", 72);
841
837
  i0.ɵɵelementEnd();
842
838
  } if (rf & 2) {
843
- const ctx_r217 = i0.ɵɵnextContext();
844
- const row_r191 = ctx_r217.$implicit;
845
- const rowIndex_r192 = ctx_r217.index;
839
+ const ctx_r220 = i0.ɵɵnextContext();
840
+ const row_r194 = ctx_r220.$implicit;
841
+ const rowIndex_r195 = ctx_r220.index;
846
842
  i0.ɵɵnextContext(3);
847
843
  const _r11 = i0.ɵɵreference(13);
848
844
  i0.ɵɵadvance(1);
849
- i0.ɵɵproperty("ngTemplateOutlet", _r11)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c11, row_r191, rowIndex_r192));
845
+ i0.ɵɵproperty("ngTemplateOutlet", _r11)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c12, row_r194, rowIndex_r195));
850
846
  } }
851
847
  function PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_6_span_2_ng_container_1_Template(rf, ctx) { if (rf & 1) {
852
848
  i0.ɵɵelementContainer(0);
853
849
  } }
854
850
  function PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_6_span_2_Template(rf, ctx) { if (rf & 1) {
855
851
  i0.ɵɵelementStart(0, "span");
856
- i0.ɵɵtemplate(1, PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_6_span_2_ng_container_1_Template, 1, 0, "ng-container", 58);
852
+ i0.ɵɵtemplate(1, PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_6_span_2_ng_container_1_Template, 1, 0, "ng-container", 56);
857
853
  i0.ɵɵelementEnd();
858
854
  } if (rf & 2) {
859
- const column_r218 = i0.ɵɵnextContext().$implicit;
860
- const row_r191 = i0.ɵɵnextContext().$implicit;
861
- const ctx_r220 = i0.ɵɵnextContext(3);
855
+ const column_r221 = i0.ɵɵnextContext().$implicit;
856
+ const row_r194 = i0.ɵɵnextContext().$implicit;
857
+ const ctx_r223 = i0.ɵɵnextContext(3);
862
858
  i0.ɵɵadvance(1);
863
- i0.ɵɵproperty("ngTemplateOutlet", ctx_r220.getTemplate(column_r218))("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c10, ctx_r220.getCellData(row_r191, column_r218)));
859
+ i0.ɵɵproperty("ngTemplateOutlet", ctx_r223.getTemplate(column_r221))("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c11, ctx_r223.getCellData(row_r194, column_r221)));
864
860
  } }
865
861
  function PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_6_span_3_ng_container_1_Template(rf, ctx) { if (rf & 1) {
866
862
  i0.ɵɵelementContainer(0);
867
863
  } }
868
864
  function PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_6_span_3_Template(rf, ctx) { if (rf & 1) {
869
865
  i0.ɵɵelementStart(0, "span");
870
- i0.ɵɵtemplate(1, PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_6_span_3_ng_container_1_Template, 1, 0, "ng-container", 58);
866
+ i0.ɵɵtemplate(1, PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_6_span_3_ng_container_1_Template, 1, 0, "ng-container", 56);
871
867
  i0.ɵɵelementEnd();
872
868
  } if (rf & 2) {
873
- const column_r218 = i0.ɵɵnextContext().$implicit;
874
- const row_r191 = i0.ɵɵnextContext().$implicit;
875
- const ctx_r221 = i0.ɵɵnextContext(3);
869
+ const column_r221 = i0.ɵɵnextContext().$implicit;
870
+ const row_r194 = i0.ɵɵnextContext().$implicit;
871
+ const ctx_r224 = i0.ɵɵnextContext(3);
876
872
  i0.ɵɵadvance(1);
877
- i0.ɵɵproperty("ngTemplateOutlet", ctx_r221.tableCellTemplate == null ? null : ctx_r221.tableCellTemplate.templateRef)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c12, row_r191, column_r218));
873
+ i0.ɵɵproperty("ngTemplateOutlet", ctx_r224.tableCellTemplate == null ? null : ctx_r224.tableCellTemplate.templateRef)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c13, row_r194, column_r221));
878
874
  } }
879
875
  function PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_6_span_4_Template(rf, ctx) { if (rf & 1) {
880
876
  i0.ɵɵelementStart(0, "span");
881
877
  i0.ɵɵtext(1);
882
878
  i0.ɵɵelementEnd();
883
879
  } if (rf & 2) {
884
- const column_r218 = i0.ɵɵnextContext().$implicit;
885
- const row_r191 = i0.ɵɵnextContext().$implicit;
886
- const ctx_r222 = i0.ɵɵnextContext(3);
880
+ const column_r221 = i0.ɵɵnextContext().$implicit;
881
+ const row_r194 = i0.ɵɵnextContext().$implicit;
882
+ const ctx_r225 = i0.ɵɵnextContext(3);
887
883
  i0.ɵɵadvance(1);
888
- i0.ɵɵtextInterpolate1(" ", ctx_r222.getBooleanLabel(ctx_r222.getCellData(row_r191, column_r218), column_r218), " ");
884
+ i0.ɵɵtextInterpolate1(" ", ctx_r225.getBooleanLabel(ctx_r225.getCellData(row_r194, column_r221), column_r221), " ");
889
885
  } }
890
886
  function PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_6_span_5_Template(rf, ctx) { if (rf & 1) {
891
887
  i0.ɵɵelementStart(0, "span");
@@ -893,11 +889,11 @@ function PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_6_span_5_Temp
893
889
  i0.ɵɵpipe(2, "currency");
894
890
  i0.ɵɵelementEnd();
895
891
  } if (rf & 2) {
896
- const column_r218 = i0.ɵɵnextContext().$implicit;
897
- const row_r191 = i0.ɵɵnextContext().$implicit;
898
- const ctx_r223 = i0.ɵɵnextContext(3);
892
+ const column_r221 = i0.ɵɵnextContext().$implicit;
893
+ const row_r194 = i0.ɵɵnextContext().$implicit;
894
+ const ctx_r226 = i0.ɵɵnextContext(3);
899
895
  i0.ɵɵadvance(1);
900
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind4(2, 1, ctx_r223.getCellData(row_r191, column_r218), column_r218.format, "symbol", "1.2-2"), " ");
896
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind4(2, 1, ctx_r226.getCellData(row_r194, column_r221), column_r221.format, "symbol", "1.2-2"), " ");
901
897
  } }
902
898
  function PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_6_span_6_Template(rf, ctx) { if (rf & 1) {
903
899
  i0.ɵɵelementStart(0, "span");
@@ -905,11 +901,11 @@ function PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_6_span_6_Temp
905
901
  i0.ɵɵpipe(2, "date");
906
902
  i0.ɵɵelementEnd();
907
903
  } if (rf & 2) {
908
- const column_r218 = i0.ɵɵnextContext().$implicit;
909
- const row_r191 = i0.ɵɵnextContext().$implicit;
910
- const ctx_r224 = i0.ɵɵnextContext(3);
904
+ const column_r221 = i0.ɵɵnextContext().$implicit;
905
+ const row_r194 = i0.ɵɵnextContext().$implicit;
906
+ const ctx_r227 = i0.ɵɵnextContext(3);
911
907
  i0.ɵɵadvance(1);
912
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(2, 1, ctx_r224.getCellData(row_r191, column_r218), column_r218.format || "dd/MM/yyyy"), " ");
908
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(2, 1, ctx_r227.getCellData(row_r194, column_r221), column_r221.format || "dd/MM/yyyy"), " ");
913
909
  } }
914
910
  function PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_6_span_7_Template(rf, ctx) { if (rf & 1) {
915
911
  i0.ɵɵelementStart(0, "span");
@@ -917,11 +913,11 @@ function PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_6_span_7_Temp
917
913
  i0.ɵɵpipe(2, "po_time");
918
914
  i0.ɵɵelementEnd();
919
915
  } if (rf & 2) {
920
- const column_r218 = i0.ɵɵnextContext().$implicit;
921
- const row_r191 = i0.ɵɵnextContext().$implicit;
922
- const ctx_r225 = i0.ɵɵnextContext(3);
916
+ const column_r221 = i0.ɵɵnextContext().$implicit;
917
+ const row_r194 = i0.ɵɵnextContext().$implicit;
918
+ const ctx_r228 = i0.ɵɵnextContext(3);
923
919
  i0.ɵɵadvance(1);
924
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(2, 1, ctx_r225.getCellData(row_r191, column_r218), column_r218.format || "HH:mm:ss.ffffff"), " ");
920
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(2, 1, ctx_r228.getCellData(row_r194, column_r221), column_r221.format || "HH:mm:ss.ffffff"), " ");
925
921
  } }
926
922
  function PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_6_span_8_Template(rf, ctx) { if (rf & 1) {
927
923
  i0.ɵɵelementStart(0, "span");
@@ -929,81 +925,81 @@ function PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_6_span_8_Temp
929
925
  i0.ɵɵpipe(2, "date");
930
926
  i0.ɵɵelementEnd();
931
927
  } if (rf & 2) {
932
- const column_r218 = i0.ɵɵnextContext().$implicit;
933
- const row_r191 = i0.ɵɵnextContext().$implicit;
934
- const ctx_r226 = i0.ɵɵnextContext(3);
928
+ const column_r221 = i0.ɵɵnextContext().$implicit;
929
+ const row_r194 = i0.ɵɵnextContext().$implicit;
930
+ const ctx_r229 = i0.ɵɵnextContext(3);
935
931
  i0.ɵɵadvance(1);
936
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(2, 1, ctx_r226.getCellData(row_r191, column_r218), column_r218.format || "dd/MM/yyyy HH:mm:ss"), " ");
932
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(2, 1, ctx_r229.getCellData(row_r194, column_r221), column_r221.format || "dd/MM/yyyy HH:mm:ss"), " ");
937
933
  } }
938
934
  function PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_6_span_9_Template(rf, ctx) { if (rf & 1) {
939
935
  i0.ɵɵelementStart(0, "span");
940
936
  i0.ɵɵtext(1);
941
937
  i0.ɵɵelementEnd();
942
938
  } if (rf & 2) {
943
- const column_r218 = i0.ɵɵnextContext().$implicit;
944
- const row_r191 = i0.ɵɵnextContext().$implicit;
945
- const ctx_r227 = i0.ɵɵnextContext(3);
939
+ const column_r221 = i0.ɵɵnextContext().$implicit;
940
+ const row_r194 = i0.ɵɵnextContext().$implicit;
941
+ const ctx_r230 = i0.ɵɵnextContext(3);
946
942
  i0.ɵɵadvance(1);
947
- i0.ɵɵtextInterpolate1(" ", ctx_r227.formatNumber(ctx_r227.getCellData(row_r191, column_r218), column_r218.format), " ");
943
+ i0.ɵɵtextInterpolate1(" ", ctx_r230.formatNumber(ctx_r230.getCellData(row_r194, column_r221), column_r221.format), " ");
948
944
  } }
949
945
  function PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_6_po_table_column_link_10_Template(rf, ctx) { if (rf & 1) {
950
- const _r253 = i0.ɵɵgetCurrentView();
946
+ const _r256 = i0.ɵɵgetCurrentView();
951
947
  i0.ɵɵelementStart(0, "po-table-column-link", 79);
952
- i0.ɵɵlistener("click", function PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_6_po_table_column_link_10_Template_po_table_column_link_click_0_listener($event) { i0.ɵɵrestoreView(_r253); const column_r218 = i0.ɵɵnextContext().$implicit; const row_r191 = i0.ɵɵnextContext().$implicit; const ctx_r251 = i0.ɵɵnextContext(3); return ctx_r251.onClickLink($event, row_r191, column_r218); });
948
+ i0.ɵɵlistener("click", function PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_6_po_table_column_link_10_Template_po_table_column_link_click_0_listener($event) { i0.ɵɵrestoreView(_r256); const column_r221 = i0.ɵɵnextContext().$implicit; const row_r194 = i0.ɵɵnextContext().$implicit; const ctx_r254 = i0.ɵɵnextContext(3); return ctx_r254.onClickLink($event, row_r194, column_r221); });
953
949
  i0.ɵɵelementEnd();
954
950
  } if (rf & 2) {
955
- const column_r218 = i0.ɵɵnextContext().$implicit;
956
- const row_r191 = i0.ɵɵnextContext().$implicit;
957
- const ctx_r228 = i0.ɵɵnextContext(3);
958
- i0.ɵɵproperty("p-action", column_r218.action)("p-disabled", ctx_r228.checkDisabled(row_r191, column_r218))("p-link", row_r191[column_r218.link])("p-row", row_r191)("p-value", ctx_r228.getCellData(row_r191, column_r218));
951
+ const column_r221 = i0.ɵɵnextContext().$implicit;
952
+ const row_r194 = i0.ɵɵnextContext().$implicit;
953
+ const ctx_r231 = i0.ɵɵnextContext(3);
954
+ i0.ɵɵproperty("p-action", column_r221.action)("p-disabled", ctx_r231.checkDisabled(row_r194, column_r221))("p-link", row_r194[column_r221.link])("p-row", row_r194)("p-value", ctx_r231.getCellData(row_r194, column_r221));
959
955
  } }
960
956
  function PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_6_po_table_column_icon_11_Template(rf, ctx) { if (rf & 1) {
961
957
  i0.ɵɵelement(0, "po-table-column-icon", 80);
962
958
  } if (rf & 2) {
963
- const column_r218 = i0.ɵɵnextContext().$implicit;
964
- const row_r191 = i0.ɵɵnextContext().$implicit;
965
- const ctx_r229 = i0.ɵɵnextContext(3);
966
- i0.ɵɵproperty("p-column", column_r218)("p-icons", ctx_r229.getColumnIcons(row_r191, column_r218))("p-row", row_r191);
959
+ const column_r221 = i0.ɵɵnextContext().$implicit;
960
+ const row_r194 = i0.ɵɵnextContext().$implicit;
961
+ const ctx_r232 = i0.ɵɵnextContext(3);
962
+ i0.ɵɵproperty("p-column", column_r221)("p-icons", ctx_r232.getColumnIcons(row_r194, column_r221))("p-row", row_r194);
967
963
  } }
968
964
  function PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_6_span_12_Template(rf, ctx) { if (rf & 1) {
969
965
  i0.ɵɵelementStart(0, "span");
970
966
  i0.ɵɵelement(1, "po-table-subtitle-circle", 81);
971
967
  i0.ɵɵelementEnd();
972
968
  } if (rf & 2) {
973
- const column_r218 = i0.ɵɵnextContext().$implicit;
974
- const row_r191 = i0.ɵɵnextContext().$implicit;
975
- const ctx_r230 = i0.ɵɵnextContext(3);
969
+ const column_r221 = i0.ɵɵnextContext().$implicit;
970
+ const row_r194 = i0.ɵɵnextContext().$implicit;
971
+ const ctx_r233 = i0.ɵɵnextContext(3);
976
972
  i0.ɵɵadvance(1);
977
- i0.ɵɵproperty("p-subtitle", ctx_r230.getSubtitleColumn(row_r191, column_r218));
973
+ i0.ɵɵproperty("p-subtitle", ctx_r233.getSubtitleColumn(row_r194, column_r221));
978
974
  } }
979
975
  function PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_6_span_13_Template(rf, ctx) { if (rf & 1) {
980
976
  i0.ɵɵelementStart(0, "span");
981
977
  i0.ɵɵelement(1, "po-table-column-label", 82);
982
978
  i0.ɵɵelementEnd();
983
979
  } if (rf & 2) {
984
- const column_r218 = i0.ɵɵnextContext().$implicit;
985
- const row_r191 = i0.ɵɵnextContext().$implicit;
986
- const ctx_r231 = i0.ɵɵnextContext(3);
980
+ const column_r221 = i0.ɵɵnextContext().$implicit;
981
+ const row_r194 = i0.ɵɵnextContext().$implicit;
982
+ const ctx_r234 = i0.ɵɵnextContext(3);
987
983
  i0.ɵɵadvance(1);
988
- i0.ɵɵproperty("p-value", ctx_r231.getColumnLabel(row_r191, column_r218));
984
+ i0.ɵɵproperty("p-value", ctx_r234.getColumnLabel(row_r194, column_r221));
989
985
  } }
990
986
  function PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_6_span_14_Template(rf, ctx) { if (rf & 1) {
991
987
  i0.ɵɵelementStart(0, "span");
992
988
  i0.ɵɵtext(1);
993
989
  i0.ɵɵelementEnd();
994
990
  } if (rf & 2) {
995
- const column_r218 = i0.ɵɵnextContext().$implicit;
996
- const row_r191 = i0.ɵɵnextContext().$implicit;
997
- const ctx_r232 = i0.ɵɵnextContext(3);
991
+ const column_r221 = i0.ɵɵnextContext().$implicit;
992
+ const row_r194 = i0.ɵɵnextContext().$implicit;
993
+ const ctx_r235 = i0.ɵɵnextContext(3);
998
994
  i0.ɵɵadvance(1);
999
- i0.ɵɵtextInterpolate(ctx_r232.getCellData(row_r191, column_r218));
995
+ i0.ɵɵtextInterpolate(ctx_r235.getCellData(row_r194, column_r221));
1000
996
  } }
1001
997
  function PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_6_Template(rf, ctx) { if (rf & 1) {
1002
- const _r266 = i0.ɵɵgetCurrentView();
998
+ const _r269 = i0.ɵɵgetCurrentView();
1003
999
  i0.ɵɵelementStart(0, "td", 73);
1004
- i0.ɵɵlistener("click", function PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_6_Template_td_click_0_listener() { i0.ɵɵrestoreView(_r266); const row_r191 = i0.ɵɵnextContext().$implicit; const ctx_r265 = i0.ɵɵnextContext(3); return ctx_r265.selectable ? ctx_r265.selectRow(row_r191) : "javascript:;"; });
1000
+ i0.ɵɵlistener("click", function PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_6_Template_td_click_0_listener() { i0.ɵɵrestoreView(_r269); const row_r194 = i0.ɵɵnextContext().$implicit; const ctx_r268 = i0.ɵɵnextContext(3); return ctx_r268.selectable ? ctx_r268.selectRow(row_r194) : "javascript:;"; });
1005
1001
  i0.ɵɵelementStart(1, "div", 74);
1006
- i0.ɵɵlistener("mouseenter", function PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_6_Template_div_mouseenter_1_listener($event) { const restoredCtx = i0.ɵɵrestoreView(_r266); const column_r218 = restoredCtx.$implicit; const row_r191 = i0.ɵɵnextContext().$implicit; const ctx_r268 = i0.ɵɵnextContext(3); return ctx_r268.tooltipMouseEnter($event, column_r218, row_r191); })("mouseleave", function PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_6_Template_div_mouseleave_1_listener() { i0.ɵɵrestoreView(_r266); const ctx_r270 = i0.ɵɵnextContext(4); return ctx_r270.tooltipMouseLeave(); });
1002
+ i0.ɵɵlistener("mouseenter", function PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_6_Template_div_mouseenter_1_listener($event) { const restoredCtx = i0.ɵɵrestoreView(_r269); const column_r221 = restoredCtx.$implicit; const row_r194 = i0.ɵɵnextContext().$implicit; const ctx_r271 = i0.ɵɵnextContext(3); return ctx_r271.tooltipMouseEnter($event, column_r221, row_r194); })("mouseleave", function PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_6_Template_div_mouseleave_1_listener() { i0.ɵɵrestoreView(_r269); const ctx_r273 = i0.ɵɵnextContext(4); return ctx_r273.tooltipMouseLeave(); });
1007
1003
  i0.ɵɵtemplate(2, PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_6_span_2_Template, 2, 4, "span", 75);
1008
1004
  i0.ɵɵtemplate(3, PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_6_span_3_Template, 2, 5, "span", 75);
1009
1005
  i0.ɵɵtemplate(4, PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_6_span_4_Template, 2, 1, "span", 75);
@@ -1019,15 +1015,15 @@ function PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_6_Template(rf
1019
1015
  i0.ɵɵtemplate(14, PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_6_span_14_Template, 2, 1, "span", 78);
1020
1016
  i0.ɵɵelementEnd()();
1021
1017
  } if (rf & 2) {
1022
- const column_r218 = ctx.$implicit;
1023
- const row_r191 = i0.ɵɵnextContext().$implicit;
1024
- const ctx_r197 = i0.ɵɵnextContext(3);
1025
- i0.ɵɵstyleProp("width", column_r218.width)("max-width", column_r218.width)("min-width", column_r218.width);
1026
- i0.ɵɵclassProp("po-table-column", column_r218.type !== "icon")("po-table-column-right", column_r218.type === "currency" || column_r218.type === "number")("po-table-column-center", column_r218.type === "subtitle")("po-table-column-icons", column_r218.type === "icon");
1027
- i0.ɵɵproperty("ngClass", ctx_r197.getClassColor(row_r191, column_r218));
1018
+ const column_r221 = ctx.$implicit;
1019
+ const row_r194 = i0.ɵɵnextContext().$implicit;
1020
+ const ctx_r200 = i0.ɵɵnextContext(3);
1021
+ i0.ɵɵstyleProp("width", column_r221.width)("max-width", column_r221.width)("min-width", column_r221.width);
1022
+ i0.ɵɵclassProp("po-table-column", column_r221.type !== "icon")("po-table-column-right", column_r221.type === "currency" || column_r221.type === "number")("po-table-column-center", column_r221.type === "subtitle")("po-table-column-icons", column_r221.type === "icon");
1023
+ i0.ɵɵproperty("ngClass", ctx_r200.getClassColor(row_r194, column_r221));
1028
1024
  i0.ɵɵadvance(1);
1029
- i0.ɵɵclassProp("po-table-body-ellipsis", ctx_r197.hideTextOverflow);
1030
- i0.ɵɵproperty("ngSwitch", column_r218.type)("p-tooltip", ctx_r197.tooltipText);
1025
+ i0.ɵɵclassProp("po-table-body-ellipsis", ctx_r200.hideTextOverflow);
1026
+ i0.ɵɵproperty("ngSwitch", column_r221.type)("p-tooltip", ctx_r200.tooltipText);
1031
1027
  i0.ɵɵadvance(1);
1032
1028
  i0.ɵɵproperty("ngSwitchCase", "columnTemplate");
1033
1029
  i0.ɵɵadvance(1);
@@ -1055,34 +1051,34 @@ function PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_6_Template(rf
1055
1051
  } }
1056
1052
  function PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_7_ng_template_1_Template(rf, ctx) { }
1057
1053
  function PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_7_Template(rf, ctx) { if (rf & 1) {
1058
- const _r275 = i0.ɵɵgetCurrentView();
1054
+ const _r278 = i0.ɵɵgetCurrentView();
1059
1055
  i0.ɵɵelementStart(0, "td", 71);
1060
- i0.ɵɵlistener("click", function PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_7_Template_td_click_0_listener() { i0.ɵɵrestoreView(_r275); const row_r191 = i0.ɵɵnextContext().$implicit; const ctx_r273 = i0.ɵɵnextContext(3); return ctx_r273.toggleDetail(row_r191); });
1056
+ i0.ɵɵlistener("click", function PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_7_Template_td_click_0_listener() { i0.ɵɵrestoreView(_r278); const row_r194 = i0.ɵɵnextContext().$implicit; const ctx_r276 = i0.ɵɵnextContext(3); return ctx_r276.toggleDetail(row_r194); });
1061
1057
  i0.ɵɵtemplate(1, PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_7_ng_template_1_Template, 0, 0, "ng-template", 72);
1062
1058
  i0.ɵɵelementEnd();
1063
1059
  } if (rf & 2) {
1064
- const ctx_r276 = i0.ɵɵnextContext();
1065
- const row_r191 = ctx_r276.$implicit;
1066
- const rowIndex_r192 = ctx_r276.index;
1060
+ const ctx_r279 = i0.ɵɵnextContext();
1061
+ const row_r194 = ctx_r279.$implicit;
1062
+ const rowIndex_r195 = ctx_r279.index;
1067
1063
  i0.ɵɵnextContext(3);
1068
1064
  const _r11 = i0.ɵɵreference(13);
1069
1065
  i0.ɵɵadvance(1);
1070
- i0.ɵɵproperty("ngTemplateOutlet", _r11)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c11, row_r191, rowIndex_r192));
1066
+ i0.ɵɵproperty("ngTemplateOutlet", _r11)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c12, row_r194, rowIndex_r195));
1071
1067
  } }
1072
1068
  function PoTableComponent_ng_template_8_ng_container_12_tbody_1_8_ng_template_0_Template(rf, ctx) { }
1073
1069
  function PoTableComponent_ng_template_8_ng_container_12_tbody_1_8_Template(rf, ctx) { if (rf & 1) {
1074
1070
  i0.ɵɵtemplate(0, PoTableComponent_ng_template_8_ng_container_12_tbody_1_8_ng_template_0_Template, 0, 0, "ng-template", 72);
1075
1071
  } if (rf & 2) {
1076
- const ctx_r278 = i0.ɵɵnextContext();
1077
- const row_r191 = ctx_r278.$implicit;
1078
- const rowIndex_r192 = ctx_r278.index;
1072
+ const ctx_r281 = i0.ɵɵnextContext();
1073
+ const row_r194 = ctx_r281.$implicit;
1074
+ const rowIndex_r195 = ctx_r281.index;
1079
1075
  i0.ɵɵnextContext(3);
1080
1076
  const _r23 = i0.ɵɵreference(25);
1081
- i0.ɵɵproperty("ngTemplateOutlet", _r23)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c11, row_r191, rowIndex_r192));
1077
+ i0.ɵɵproperty("ngTemplateOutlet", _r23)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c12, row_r194, rowIndex_r195));
1082
1078
  } }
1083
1079
  function PoTableComponent_ng_template_8_ng_container_12_tbody_1_ng_container_9_Template(rf, ctx) { if (rf & 1) {
1084
1080
  i0.ɵɵelementContainerStart(0);
1085
- i0.ɵɵelement(1, "td", 88);
1081
+ i0.ɵɵelement(1, "td", 89);
1086
1082
  i0.ɵɵelementContainerEnd();
1087
1083
  } }
1088
1084
  function PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_10_Template(rf, ctx) { if (rf & 1) {
@@ -1094,31 +1090,31 @@ function PoTableComponent_ng_template_8_ng_container_12_tbody_1_tr_11_Template(r
1094
1090
  i0.ɵɵtemplate(2, PoTableComponent_ng_template_8_ng_container_12_tbody_1_tr_11_ng_template_2_Template, 0, 0, "ng-template", 72);
1095
1091
  i0.ɵɵelementEnd()();
1096
1092
  } if (rf & 2) {
1097
- const ctx_r280 = i0.ɵɵnextContext();
1098
- const row_r191 = ctx_r280.$implicit;
1099
- const rowIndex_r192 = ctx_r280.index;
1100
- const ctx_r202 = i0.ɵɵnextContext(3);
1093
+ const ctx_r283 = i0.ɵɵnextContext();
1094
+ const row_r194 = ctx_r283.$implicit;
1095
+ const rowIndex_r195 = ctx_r283.index;
1096
+ const ctx_r205 = i0.ɵɵnextContext(3);
1101
1097
  i0.ɵɵadvance(1);
1102
- i0.ɵɵproperty("colSpan", ctx_r202.columnCountForMasterDetail);
1098
+ i0.ɵɵproperty("colSpan", ctx_r205.columnCountForMasterDetail);
1103
1099
  i0.ɵɵadvance(1);
1104
- i0.ɵɵproperty("ngTemplateOutlet", ctx_r202.tableRowTemplate.templateRef)("ngTemplateOutletContext", i0.ɵɵpureFunction2(3, _c13, row_r191, rowIndex_r192));
1100
+ i0.ɵɵproperty("ngTemplateOutlet", ctx_r205.tableRowTemplate.templateRef)("ngTemplateOutletContext", i0.ɵɵpureFunction2(3, _c14, row_r194, rowIndex_r195));
1105
1101
  } }
1106
1102
  function PoTableComponent_ng_template_8_ng_container_12_tbody_1_tr_12_Template(rf, ctx) { if (rf & 1) {
1107
- const _r282 = i0.ɵɵgetCurrentView();
1103
+ const _r285 = i0.ɵɵgetCurrentView();
1108
1104
  i0.ɵɵelementStart(0, "tr")(1, "td", 86)(2, "po-table-detail", 87);
1109
- i0.ɵɵlistener("p-select-row", function PoTableComponent_ng_template_8_ng_container_12_tbody_1_tr_12_Template_po_table_detail_p_select_row_2_listener($event) { i0.ɵɵrestoreView(_r282); const ctx_r281 = i0.ɵɵnextContext(4); return ctx_r281.selectDetailRow($event); });
1105
+ i0.ɵɵlistener("p-select-row", function PoTableComponent_ng_template_8_ng_container_12_tbody_1_tr_12_Template_po_table_detail_p_select_row_2_listener($event) { i0.ɵɵrestoreView(_r285); const ctx_r284 = i0.ɵɵnextContext(4); return ctx_r284.selectDetailRow($event); });
1110
1106
  i0.ɵɵelementEnd()()();
1111
1107
  } if (rf & 2) {
1112
- const row_r191 = i0.ɵɵnextContext().$implicit;
1113
- const ctx_r203 = i0.ɵɵnextContext(3);
1108
+ const row_r194 = i0.ɵɵnextContext().$implicit;
1109
+ const ctx_r206 = i0.ɵɵnextContext(3);
1114
1110
  i0.ɵɵadvance(1);
1115
- i0.ɵɵproperty("colSpan", ctx_r203.columnCountForMasterDetail);
1111
+ i0.ɵɵproperty("colSpan", ctx_r206.columnCountForMasterDetail);
1116
1112
  i0.ɵɵadvance(1);
1117
- i0.ɵɵproperty("p-selectable", ctx_r203.selectable && !ctx_r203.detailHideSelect)("p-detail", ctx_r203.columnMasterDetail.detail)("p-items", row_r191[ctx_r203.nameColumnDetail]);
1113
+ i0.ɵɵproperty("p-selectable", ctx_r206.selectable && !ctx_r206.detailHideSelect)("p-detail", ctx_r206.columnMasterDetail.detail)("p-items", row_r194[ctx_r206.nameColumnDetail]);
1118
1114
  } }
1119
1115
  function PoTableComponent_ng_template_8_ng_container_12_tbody_1_Template(rf, ctx) { if (rf & 1) {
1120
1116
  i0.ɵɵelementStart(0, "tbody", 63)(1, "tr", 67);
1121
- i0.ɵɵtemplate(2, PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_2_Template, 2, 4, "td", 39);
1117
+ i0.ɵɵtemplate(2, PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_2_Template, 2, 4, "td", 40);
1122
1118
  i0.ɵɵtemplate(3, PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_3_Template, 2, 5, "td", 68);
1123
1119
  i0.ɵɵtemplate(4, PoTableComponent_ng_template_8_ng_container_12_tbody_1_4_Template, 1, 5, null, 23);
1124
1120
  i0.ɵɵtemplate(5, PoTableComponent_ng_template_8_ng_container_12_tbody_1_td_5_Template, 2, 5, "td", 68);
@@ -1132,53 +1128,53 @@ function PoTableComponent_ng_template_8_ng_container_12_tbody_1_Template(rf, ctx
1132
1128
  i0.ɵɵtemplate(12, PoTableComponent_ng_template_8_ng_container_12_tbody_1_tr_12_Template, 3, 4, "tr", 23);
1133
1129
  i0.ɵɵelementEnd();
1134
1130
  } if (rf & 2) {
1135
- const row_r191 = ctx.$implicit;
1136
- const rowIndex_r192 = ctx.index;
1137
- const ctx_r190 = i0.ɵɵnextContext(3);
1131
+ const row_r194 = ctx.$implicit;
1132
+ const rowIndex_r195 = ctx.index;
1133
+ const ctx_r193 = i0.ɵɵnextContext(3);
1138
1134
  i0.ɵɵadvance(1);
1139
- i0.ɵɵclassProp("po-table-row-active", row_r191.$selected || row_r191.$selected === null && ctx_r190.selectable);
1135
+ i0.ɵɵclassProp("po-table-row-active", row_r194.$selected || row_r194.$selected === null && ctx_r193.selectable);
1140
1136
  i0.ɵɵadvance(1);
1141
- i0.ɵɵproperty("ngIf", ctx_r190.selectable);
1137
+ i0.ɵɵproperty("ngIf", ctx_r193.selectable);
1142
1138
  i0.ɵɵadvance(1);
1143
- i0.ɵɵproperty("ngIf", ctx_r190.columnMasterDetail && !ctx_r190.hideDetail && !ctx_r190.hasRowTemplate);
1139
+ i0.ɵɵproperty("ngIf", ctx_r193.columnMasterDetail && !ctx_r193.hideDetail && !ctx_r193.hasRowTemplate);
1144
1140
  i0.ɵɵadvance(1);
1145
- i0.ɵɵproperty("ngIf", !ctx_r190.actionRight && (ctx_r190.visibleActions.length > 1 || ctx_r190.isSingleAction));
1141
+ i0.ɵɵproperty("ngIf", !ctx_r193.actionRight && (ctx_r193.visibleActions.length > 1 || ctx_r193.isSingleAction));
1146
1142
  i0.ɵɵadvance(1);
1147
- i0.ɵɵproperty("ngIf", ctx_r190.hasRowTemplate && !ctx_r190.hasRowTemplateWithArrowDirectionRight);
1143
+ i0.ɵɵproperty("ngIf", ctx_r193.hasRowTemplate && !ctx_r193.hasRowTemplateWithArrowDirectionRight);
1148
1144
  i0.ɵɵadvance(1);
1149
- i0.ɵɵproperty("ngForOf", ctx_r190.mainColumns)("ngForTrackBy", ctx_r190.trackBy);
1145
+ i0.ɵɵproperty("ngForOf", ctx_r193.mainColumns)("ngForTrackBy", ctx_r193.trackBy);
1150
1146
  i0.ɵɵadvance(1);
1151
- i0.ɵɵproperty("ngIf", ctx_r190.hasRowTemplateWithArrowDirectionRight);
1147
+ i0.ɵɵproperty("ngIf", ctx_r193.hasRowTemplateWithArrowDirectionRight);
1152
1148
  i0.ɵɵadvance(1);
1153
- i0.ɵɵproperty("ngIf", ctx_r190.actionRight);
1149
+ i0.ɵɵproperty("ngIf", ctx_r193.actionRight);
1154
1150
  i0.ɵɵadvance(1);
1155
- i0.ɵɵproperty("ngIf", !ctx_r190.actionRight && (ctx_r190.visibleActions.length > 1 || ctx_r190.isSingleAction) && !ctx_r190.hideColumnsManager);
1151
+ i0.ɵɵproperty("ngIf", !ctx_r193.actionRight && (ctx_r193.visibleActions.length > 1 || ctx_r193.isSingleAction) && !ctx_r193.hideColumnsManager);
1156
1152
  i0.ɵɵadvance(1);
1157
- i0.ɵɵproperty("ngIf", !ctx_r190.hasVisibleActions && !ctx_r190.hideColumnsManager && !ctx_r190.hasRowTemplateWithArrowDirectionRight);
1153
+ i0.ɵɵproperty("ngIf", !ctx_r193.hasVisibleActions && !ctx_r193.hideColumnsManager && !ctx_r193.hasRowTemplateWithArrowDirectionRight);
1158
1154
  i0.ɵɵadvance(1);
1159
- i0.ɵɵproperty("ngIf", ctx_r190.hasMainColumns && ctx_r190.hasRowTemplate && row_r191.$showDetail && ctx_r190.isShowRowTemplate(row_r191, rowIndex_r192));
1155
+ i0.ɵɵproperty("ngIf", ctx_r193.hasMainColumns && ctx_r193.hasRowTemplate && row_r194.$showDetail && ctx_r193.isShowRowTemplate(row_r194, rowIndex_r195));
1160
1156
  i0.ɵɵadvance(1);
1161
- i0.ɵɵproperty("ngIf", ctx_r190.hasMainColumns && ctx_r190.isShowMasterDetail(row_r191));
1157
+ i0.ɵɵproperty("ngIf", ctx_r193.hasMainColumns && ctx_r193.isShowMasterDetail(row_r194));
1162
1158
  } }
1163
1159
  function PoTableComponent_ng_template_8_ng_container_12_Template(rf, ctx) { if (rf & 1) {
1164
1160
  i0.ɵɵelementContainerStart(0);
1165
- i0.ɵɵtemplate(1, PoTableComponent_ng_template_8_ng_container_12_tbody_1_Template, 13, 14, "tbody", 66);
1161
+ i0.ɵɵtemplate(1, PoTableComponent_ng_template_8_ng_container_12_tbody_1_Template, 13, 14, "tbody", 88);
1166
1162
  i0.ɵɵelementContainerEnd();
1167
1163
  } if (rf & 2) {
1168
- const ctx_r173 = i0.ɵɵnextContext(2);
1164
+ const ctx_r175 = i0.ɵɵnextContext(2);
1169
1165
  i0.ɵɵadvance(1);
1170
- i0.ɵɵproperty("ngForOf", ctx_r173.items)("ngForTrackBy", ctx_r173.trackBy);
1166
+ i0.ɵɵproperty("ngForOf", ctx_r175.items)("ngForTrackBy", ctx_r175.trackBy);
1171
1167
  } }
1172
1168
  function PoTableComponent_ng_template_8_Template(rf, ctx) { if (rf & 1) {
1173
- i0.ɵɵelementStart(0, "table", 38)(1, "thead")(2, "tr");
1174
- i0.ɵɵtemplate(3, PoTableComponent_ng_template_8_th_3_Template, 4, 4, "th", 39);
1175
- i0.ɵɵtemplate(4, PoTableComponent_ng_template_8_th_4_Template, 1, 0, "th", 40);
1176
- i0.ɵɵtemplate(5, PoTableComponent_ng_template_8_th_5_Template, 1, 4, "th", 41);
1177
- i0.ɵɵtemplate(6, PoTableComponent_ng_template_8_th_6_Template, 3, 3, "th", 42);
1178
- i0.ɵɵtemplate(7, PoTableComponent_ng_template_8_th_7_Template, 4, 20, "th", 43);
1179
- i0.ɵɵtemplate(8, PoTableComponent_ng_template_8_th_8_Template, 1, 0, "th", 40);
1180
- i0.ɵɵtemplate(9, PoTableComponent_ng_template_8_th_9_Template, 1, 4, "th", 44);
1181
- i0.ɵɵtemplate(10, PoTableComponent_ng_template_8_th_10_Template, 5, 13, "th", 45);
1169
+ i0.ɵɵelementStart(0, "table", 39)(1, "thead")(2, "tr");
1170
+ i0.ɵɵtemplate(3, PoTableComponent_ng_template_8_th_3_Template, 3, 3, "th", 40);
1171
+ i0.ɵɵtemplate(4, PoTableComponent_ng_template_8_th_4_Template, 1, 0, "th", 41);
1172
+ i0.ɵɵtemplate(5, PoTableComponent_ng_template_8_th_5_Template, 1, 4, "th", 42);
1173
+ i0.ɵɵtemplate(6, PoTableComponent_ng_template_8_th_6_Template, 3, 3, "th", 43);
1174
+ i0.ɵɵtemplate(7, PoTableComponent_ng_template_8_th_7_Template, 4, 20, "th", 44);
1175
+ i0.ɵɵtemplate(8, PoTableComponent_ng_template_8_th_8_Template, 1, 0, "th", 41);
1176
+ i0.ɵɵtemplate(9, PoTableComponent_ng_template_8_th_9_Template, 1, 4, "th", 45);
1177
+ i0.ɵɵtemplate(10, PoTableComponent_ng_template_8_th_10_Template, 5, 13, "th", 46);
1182
1178
  i0.ɵɵelementEnd()();
1183
1179
  i0.ɵɵtemplate(11, PoTableComponent_ng_template_8_tbody_11_Template, 5, 2, "tbody", 62);
1184
1180
  i0.ɵɵtemplate(12, PoTableComponent_ng_template_8_ng_container_12_Template, 2, 2, "ng-container", 23);
@@ -1210,65 +1206,64 @@ function PoTableComponent_ng_template_8_Template(rf, ctx) { if (rf & 1) {
1210
1206
  i0.ɵɵproperty("ngIf", ctx_r9.hasMainColumns);
1211
1207
  } }
1212
1208
  function PoTableComponent_ng_template_12_span_0_Template(rf, ctx) { if (rf & 1) {
1213
- i0.ɵɵelement(0, "span", 90);
1209
+ i0.ɵɵelement(0, "span", 91);
1214
1210
  } if (rf & 2) {
1215
- const row_r284 = i0.ɵɵnextContext().row;
1216
- i0.ɵɵclassProp("po-icon-arrow-up", row_r284.$showDetail)("po-icon-arrow-down", !row_r284.$showDetail);
1211
+ const row_r287 = i0.ɵɵnextContext().row;
1212
+ i0.ɵɵclassProp("po-icon-arrow-up", row_r287.$showDetail)("po-icon-arrow-down", !row_r287.$showDetail);
1217
1213
  } }
1218
1214
  function PoTableComponent_ng_template_12_Template(rf, ctx) { if (rf & 1) {
1219
- i0.ɵɵtemplate(0, PoTableComponent_ng_template_12_span_0_Template, 1, 4, "span", 89);
1215
+ i0.ɵɵtemplate(0, PoTableComponent_ng_template_12_span_0_Template, 1, 4, "span", 90);
1220
1216
  } if (rf & 2) {
1221
- const row_r284 = ctx.row;
1222
- const rowIndex_r285 = ctx.rowIndex;
1217
+ const row_r287 = ctx.row;
1218
+ const rowIndex_r288 = ctx.rowIndex;
1223
1219
  const ctx_r12 = i0.ɵɵnextContext();
1224
- i0.ɵɵproperty("ngIf", ctx_r12.containsMasterDetail(row_r284) && !ctx_r12.hasRowTemplate || ctx_r12.isShowRowTemplate(row_r284, rowIndex_r285) && ctx_r12.hasRowTemplate);
1220
+ i0.ɵɵproperty("ngIf", ctx_r12.containsMasterDetail(row_r287) && !ctx_r12.hasRowTemplate || ctx_r12.isShowRowTemplate(row_r287, rowIndex_r288) && ctx_r12.hasRowTemplate);
1225
1221
  } }
1226
1222
  function PoTableComponent_ng_template_14_Template(rf, ctx) { if (rf & 1) {
1227
- const _r290 = i0.ɵɵgetCurrentView();
1228
- i0.ɵɵelement(0, "input", 91);
1229
- i0.ɵɵelementStart(1, "label", 92);
1230
- i0.ɵɵlistener("click", function PoTableComponent_ng_template_14_Template_label_click_1_listener() { const restoredCtx = i0.ɵɵrestoreView(_r290); const row_r288 = restoredCtx.$implicit; const ctx_r289 = i0.ɵɵnextContext(); return ctx_r289.selectable ? ctx_r289.selectRow(row_r288) : "javascript:;"; });
1223
+ const _r293 = i0.ɵɵgetCurrentView();
1224
+ i0.ɵɵelement(0, "input", 92);
1225
+ i0.ɵɵelementStart(1, "label", 93);
1226
+ i0.ɵɵlistener("click", function PoTableComponent_ng_template_14_Template_label_click_1_listener() { const restoredCtx = i0.ɵɵrestoreView(_r293); const row_r291 = restoredCtx.$implicit; const ctx_r292 = i0.ɵɵnextContext(); return ctx_r292.selectable ? ctx_r292.selectRow(row_r291) : "javascript:;"; });
1231
1227
  i0.ɵɵelementEnd();
1232
1228
  } if (rf & 2) {
1233
- const row_r288 = ctx.$implicit;
1234
- i0.ɵɵclassProp("po-table-radio-checked", row_r288.$selected);
1229
+ const row_r291 = ctx.$implicit;
1230
+ i0.ɵɵclassProp("po-table-radio-checked", row_r291.$selected);
1235
1231
  } }
1236
1232
  function PoTableComponent_ng_template_16_Template(rf, ctx) { if (rf & 1) {
1237
- const _r293 = i0.ɵɵgetCurrentView();
1238
- i0.ɵɵelement(0, "input", 49);
1239
- i0.ɵɵelementStart(1, "label", 50);
1240
- i0.ɵɵlistener("click", function PoTableComponent_ng_template_16_Template_label_click_1_listener() { const restoredCtx = i0.ɵɵrestoreView(_r293); const row_r291 = restoredCtx.$implicit; const ctx_r292 = i0.ɵɵnextContext(); return ctx_r292.selectable ? ctx_r292.selectRow(row_r291) : "javascript:;"; });
1233
+ const _r296 = i0.ɵɵgetCurrentView();
1234
+ i0.ɵɵelementStart(0, "po-checkbox", 94);
1235
+ i0.ɵɵlistener("p-change", function PoTableComponent_ng_template_16_Template_po_checkbox_p_change_0_listener() { const restoredCtx = i0.ɵɵrestoreView(_r296); const row_r294 = restoredCtx.$implicit; const ctx_r295 = i0.ɵɵnextContext(); return ctx_r295.selectable ? ctx_r295.selectRow(row_r294) : "javascript:;"; })("ngModelChange", function PoTableComponent_ng_template_16_Template_po_checkbox_ngModelChange_0_listener($event) { const restoredCtx = i0.ɵɵrestoreView(_r296); const row_r294 = restoredCtx.$implicit; return row_r294.$selected = $event; })("click", function PoTableComponent_ng_template_16_Template_po_checkbox_click_0_listener() { const restoredCtx = i0.ɵɵrestoreView(_r296); const row_r294 = restoredCtx.$implicit; const ctx_r298 = i0.ɵɵnextContext(); return ctx_r298.selectable ? ctx_r298.selectRow(row_r294) : "javascript:;"; });
1241
1236
  i0.ɵɵelementEnd();
1242
1237
  } if (rf & 2) {
1243
- const row_r291 = ctx.$implicit;
1244
- i0.ɵɵclassProp("po-table-checkbox-checked", row_r291.$selected);
1238
+ const row_r294 = ctx.$implicit;
1239
+ i0.ɵɵproperty("ngModel", row_r294.$selected);
1245
1240
  } }
1246
1241
  function PoTableComponent_ng_template_18_span_4_Template(rf, ctx) { if (rf & 1) {
1247
1242
  i0.ɵɵelement(0, "span");
1248
1243
  } if (rf & 2) {
1249
- const column_r294 = i0.ɵɵnextContext().$implicit;
1250
- const ctx_r296 = i0.ɵɵnextContext();
1251
- i0.ɵɵclassProp("po-table-header-icon-unselected", (ctx_r296.sortedColumn == null ? null : ctx_r296.sortedColumn.property) !== column_r294)("po-table-header-icon-descending", (ctx_r296.sortedColumn == null ? null : ctx_r296.sortedColumn.property) === column_r294 && ctx_r296.sortedColumn.ascending)("po-table-header-icon-ascending", (ctx_r296.sortedColumn == null ? null : ctx_r296.sortedColumn.property) === column_r294 && !ctx_r296.sortedColumn.ascending);
1244
+ const column_r299 = i0.ɵɵnextContext().$implicit;
1245
+ const ctx_r301 = i0.ɵɵnextContext();
1246
+ i0.ɵɵclassProp("po-table-header-icon-unselected", (ctx_r301.sortedColumn == null ? null : ctx_r301.sortedColumn.property) !== column_r299)("po-table-header-icon-descending", (ctx_r301.sortedColumn == null ? null : ctx_r301.sortedColumn.property) === column_r299 && ctx_r301.sortedColumn.ascending)("po-table-header-icon-ascending", (ctx_r301.sortedColumn == null ? null : ctx_r301.sortedColumn.property) === column_r299 && !ctx_r301.sortedColumn.ascending);
1252
1247
  } }
1253
1248
  function PoTableComponent_ng_template_18_Template(rf, ctx) { if (rf & 1) {
1254
- const _r299 = i0.ɵɵgetCurrentView();
1255
- i0.ɵɵelementStart(0, "span", 93, 94);
1256
- i0.ɵɵlistener("mouseenter", function PoTableComponent_ng_template_18_Template_span_mouseenter_0_listener($event) { i0.ɵɵrestoreView(_r299); const ctx_r298 = i0.ɵɵnextContext(); return ctx_r298.tooltipMouseEnter($event); })("mouseleave", function PoTableComponent_ng_template_18_Template_span_mouseleave_0_listener() { i0.ɵɵrestoreView(_r299); const ctx_r300 = i0.ɵɵnextContext(); return ctx_r300.tooltipMouseLeave(); });
1249
+ const _r304 = i0.ɵɵgetCurrentView();
1250
+ i0.ɵɵelementStart(0, "span", 95, 96);
1251
+ i0.ɵɵlistener("mouseenter", function PoTableComponent_ng_template_18_Template_span_mouseenter_0_listener($event) { i0.ɵɵrestoreView(_r304); const ctx_r303 = i0.ɵɵnextContext(); return ctx_r303.tooltipMouseEnter($event); })("mouseleave", function PoTableComponent_ng_template_18_Template_span_mouseleave_0_listener() { i0.ɵɵrestoreView(_r304); const ctx_r305 = i0.ɵɵnextContext(); return ctx_r305.tooltipMouseLeave(); });
1257
1252
  i0.ɵɵtext(2);
1258
1253
  i0.ɵɵpipe(3, "titlecase");
1259
1254
  i0.ɵɵelementEnd();
1260
- i0.ɵɵtemplate(4, PoTableComponent_ng_template_18_span_4_Template, 1, 6, "span", 95);
1255
+ i0.ɵɵtemplate(4, PoTableComponent_ng_template_18_span_4_Template, 1, 6, "span", 97);
1261
1256
  } if (rf & 2) {
1262
- const column_r294 = ctx.$implicit;
1257
+ const column_r299 = ctx.$implicit;
1263
1258
  const ctx_r18 = i0.ɵɵnextContext();
1264
1259
  i0.ɵɵproperty("p-tooltip", ctx_r18.tooltipText);
1265
1260
  i0.ɵɵadvance(2);
1266
- i0.ɵɵtextInterpolate1(" ", column_r294.label || i0.ɵɵpipeBind1(3, 3, column_r294.property), " ");
1261
+ i0.ɵɵtextInterpolate1(" ", column_r299.label || i0.ɵɵpipeBind1(3, 3, column_r299.property), " ");
1267
1262
  i0.ɵɵadvance(2);
1268
- i0.ɵɵproperty("ngIf", ctx_r18.sort && column_r294.sortable !== false);
1263
+ i0.ɵɵproperty("ngIf", ctx_r18.sort && column_r299.sortable !== false);
1269
1264
  } }
1270
1265
  function PoTableComponent_ng_template_20_Template(rf, ctx) { if (rf & 1) {
1271
- i0.ɵɵelementStart(0, "div", 96);
1266
+ i0.ɵɵelementStart(0, "div", 98);
1272
1267
  i0.ɵɵtext(1);
1273
1268
  i0.ɵɵelementEnd();
1274
1269
  } if (rf & 2) {
@@ -1284,45 +1279,45 @@ function PoTableComponent_ng_template_22_Template(rf, ctx) { if (rf & 1) {
1284
1279
  i0.ɵɵtextInterpolate1(" ", ctx_r22.hasValidColumns ? ctx_r22.literals.noVisibleColumn : ctx_r22.literals.noColumns, "\n");
1285
1280
  } }
1286
1281
  function PoTableComponent_ng_template_24_td_0_div_1_po_icon_1_Template(rf, ctx) { if (rf & 1) {
1287
- i0.ɵɵelement(0, "po-icon", 103);
1282
+ i0.ɵɵelement(0, "po-icon", 105);
1288
1283
  } if (rf & 2) {
1289
- const ctx_r306 = i0.ɵɵnextContext(4);
1290
- i0.ɵɵproperty("p-icon", ctx_r306.firstAction.icon);
1284
+ const ctx_r311 = i0.ɵɵnextContext(4);
1285
+ i0.ɵɵproperty("p-icon", ctx_r311.firstAction.icon);
1291
1286
  } }
1292
1287
  function PoTableComponent_ng_template_24_td_0_div_1_Template(rf, ctx) { if (rf & 1) {
1293
- const _r309 = i0.ɵɵgetCurrentView();
1294
- i0.ɵɵelementStart(0, "div", 101);
1295
- i0.ɵɵlistener("click", function PoTableComponent_ng_template_24_td_0_div_1_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r309); const row_r301 = i0.ɵɵnextContext(2).row; const ctx_r307 = i0.ɵɵnextContext(); return ctx_r307.executeTableAction(row_r301, ctx_r307.firstAction); });
1296
- i0.ɵɵtemplate(1, PoTableComponent_ng_template_24_td_0_div_1_po_icon_1_Template, 1, 1, "po-icon", 102);
1288
+ const _r314 = i0.ɵɵgetCurrentView();
1289
+ i0.ɵɵelementStart(0, "div", 103);
1290
+ i0.ɵɵlistener("click", function PoTableComponent_ng_template_24_td_0_div_1_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r314); const row_r306 = i0.ɵɵnextContext(2).row; const ctx_r312 = i0.ɵɵnextContext(); return ctx_r312.executeTableAction(row_r306, ctx_r312.firstAction); });
1291
+ i0.ɵɵtemplate(1, PoTableComponent_ng_template_24_td_0_div_1_po_icon_1_Template, 1, 1, "po-icon", 104);
1297
1292
  i0.ɵɵtext(2);
1298
1293
  i0.ɵɵelementEnd();
1299
1294
  } if (rf & 2) {
1300
- const row_r301 = i0.ɵɵnextContext(2).row;
1301
- const ctx_r305 = i0.ɵɵnextContext();
1302
- i0.ɵɵclassProp("po-table-action-disabled", ctx_r305.firstAction.disabled ? ctx_r305.validateTableAction(row_r301, ctx_r305.firstAction) : false);
1295
+ const row_r306 = i0.ɵɵnextContext(2).row;
1296
+ const ctx_r310 = i0.ɵɵnextContext();
1297
+ i0.ɵɵclassProp("po-table-action-disabled", ctx_r310.firstAction.disabled ? ctx_r310.validateTableAction(row_r306, ctx_r310.firstAction) : false);
1303
1298
  i0.ɵɵadvance(1);
1304
- i0.ɵɵproperty("ngIf", ctx_r305.firstAction.icon);
1299
+ i0.ɵɵproperty("ngIf", ctx_r310.firstAction.icon);
1305
1300
  i0.ɵɵadvance(1);
1306
- i0.ɵɵtextInterpolate1(" ", ctx_r305.firstAction.label, " ");
1301
+ i0.ɵɵtextInterpolate1(" ", ctx_r310.firstAction.label, " ");
1307
1302
  } }
1308
1303
  function PoTableComponent_ng_template_24_td_0_Template(rf, ctx) { if (rf & 1) {
1309
- i0.ɵɵelementStart(0, "td", 99);
1310
- i0.ɵɵtemplate(1, PoTableComponent_ng_template_24_td_0_div_1_Template, 3, 4, "div", 100);
1304
+ i0.ɵɵelementStart(0, "td", 101);
1305
+ i0.ɵɵtemplate(1, PoTableComponent_ng_template_24_td_0_div_1_Template, 3, 4, "div", 102);
1311
1306
  i0.ɵɵelementEnd();
1312
1307
  } if (rf & 2) {
1313
- const ctx_r303 = i0.ɵɵnextContext(2);
1308
+ const ctx_r308 = i0.ɵɵnextContext(2);
1314
1309
  i0.ɵɵadvance(1);
1315
- i0.ɵɵproperty("ngIf", ctx_r303.firstAction.visible !== false);
1310
+ i0.ɵɵproperty("ngIf", ctx_r308.firstAction.visible !== false);
1316
1311
  } }
1317
1312
  function PoTableComponent_ng_template_24_td_1_Template(rf, ctx) { if (rf & 1) {
1318
- const _r314 = i0.ɵɵgetCurrentView();
1319
- i0.ɵɵelementStart(0, "td", 104)(1, "span", 105, 106);
1320
- i0.ɵɵlistener("click", function PoTableComponent_ng_template_24_td_1_Template_span_click_1_listener() { i0.ɵɵrestoreView(_r314); const _r311 = i0.ɵɵreference(2); const row_r301 = i0.ɵɵnextContext().row; const ctx_r312 = i0.ɵɵnextContext(); return ctx_r312.togglePopup(row_r301, _r311); });
1313
+ const _r319 = i0.ɵɵgetCurrentView();
1314
+ i0.ɵɵelementStart(0, "td", 106)(1, "span", 107, 108);
1315
+ i0.ɵɵlistener("click", function PoTableComponent_ng_template_24_td_1_Template_span_click_1_listener() { i0.ɵɵrestoreView(_r319); const _r316 = i0.ɵɵreference(2); const row_r306 = i0.ɵɵnextContext().row; const ctx_r317 = i0.ɵɵnextContext(); return ctx_r317.togglePopup(row_r306, _r316); });
1321
1316
  i0.ɵɵelementEnd()();
1322
1317
  } }
1323
1318
  function PoTableComponent_ng_template_24_Template(rf, ctx) { if (rf & 1) {
1324
- i0.ɵɵtemplate(0, PoTableComponent_ng_template_24_td_0_Template, 2, 1, "td", 97);
1325
- i0.ɵɵtemplate(1, PoTableComponent_ng_template_24_td_1_Template, 3, 0, "td", 98);
1319
+ i0.ɵɵtemplate(0, PoTableComponent_ng_template_24_td_0_Template, 2, 1, "td", 99);
1320
+ i0.ɵɵtemplate(1, PoTableComponent_ng_template_24_td_1_Template, 3, 0, "td", 100);
1326
1321
  } if (rf & 2) {
1327
1322
  const ctx_r24 = i0.ɵɵnextContext();
1328
1323
  i0.ɵɵproperty("ngIf", ctx_r24.isSingleAction);
@@ -1330,9 +1325,9 @@ function PoTableComponent_ng_template_24_Template(rf, ctx) { if (rf & 1) {
1330
1325
  i0.ɵɵproperty("ngIf", ctx_r24.visibleActions.length > 1);
1331
1326
  } }
1332
1327
  function PoTableComponent_po_table_column_manager_26_Template(rf, ctx) { if (rf & 1) {
1333
- const _r316 = i0.ɵɵgetCurrentView();
1334
- i0.ɵɵelementStart(0, "po-table-column-manager", 107);
1335
- i0.ɵɵlistener("p-visible-columns-change", function PoTableComponent_po_table_column_manager_26_Template_po_table_column_manager_p_visible_columns_change_0_listener($event) { i0.ɵɵrestoreView(_r316); const ctx_r315 = i0.ɵɵnextContext(); return ctx_r315.onVisibleColumnsChange($event); })("p-change-visible-columns", function PoTableComponent_po_table_column_manager_26_Template_po_table_column_manager_p_change_visible_columns_0_listener($event) { i0.ɵɵrestoreView(_r316); const ctx_r317 = i0.ɵɵnextContext(); return ctx_r317.onChangeVisibleColumns($event); })("p-initial-columns", function PoTableComponent_po_table_column_manager_26_Template_po_table_column_manager_p_initial_columns_0_listener($event) { i0.ɵɵrestoreView(_r316); const ctx_r318 = i0.ɵɵnextContext(); return ctx_r318.onColumnRestoreManager($event); });
1328
+ const _r321 = i0.ɵɵgetCurrentView();
1329
+ i0.ɵɵelementStart(0, "po-table-column-manager", 109);
1330
+ i0.ɵɵlistener("p-visible-columns-change", function PoTableComponent_po_table_column_manager_26_Template_po_table_column_manager_p_visible_columns_change_0_listener($event) { i0.ɵɵrestoreView(_r321); const ctx_r320 = i0.ɵɵnextContext(); return ctx_r320.onVisibleColumnsChange($event); })("p-change-visible-columns", function PoTableComponent_po_table_column_manager_26_Template_po_table_column_manager_p_change_visible_columns_0_listener($event) { i0.ɵɵrestoreView(_r321); const ctx_r322 = i0.ɵɵnextContext(); return ctx_r322.onChangeVisibleColumns($event); })("p-initial-columns", function PoTableComponent_po_table_column_manager_26_Template_po_table_column_manager_p_initial_columns_0_listener($event) { i0.ɵɵrestoreView(_r321); const ctx_r323 = i0.ɵɵnextContext(); return ctx_r323.onColumnRestoreManager($event); });
1336
1331
  i0.ɵɵelementEnd();
1337
1332
  } if (rf & 2) {
1338
1333
  const ctx_r25 = i0.ɵɵnextContext();
@@ -1475,6 +1470,7 @@ export class PoTableComponent extends PoTableBaseComponent {
1475
1470
  this.checkInfiniteScroll();
1476
1471
  this.visibleElement = true;
1477
1472
  }
1473
+ document.body.offsetWidth > 1366 ? (this.itemSize = 44) : (this.itemSize = 32);
1478
1474
  }
1479
1475
  ngOnDestroy() {
1480
1476
  this.removeListeners();
@@ -1731,7 +1727,7 @@ export class PoTableComponent extends PoTableBaseComponent {
1731
1727
  return template.templateRef;
1732
1728
  }
1733
1729
  syncronizeHorizontalScroll() {
1734
- this.poTableThead.nativeElement.scrollLeft = this.poTableTbody.nativeElement.scrollLeft;
1730
+ this.poTableThead.nativeElement.scrollLeft = this.poTableTbodyVirtual.nativeElement.scrollLeft;
1735
1731
  }
1736
1732
  calculateHeightTableContainer(height) {
1737
1733
  const value = parseFloat(height);
@@ -1749,11 +1745,12 @@ export class PoTableComponent extends PoTableBaseComponent {
1749
1745
  }
1750
1746
  });
1751
1747
  }
1748
+ this.changeDetector.detectChanges();
1752
1749
  });
1753
1750
  }
1754
1751
  checkInfiniteScroll() {
1755
1752
  if (this.hasInfiniteScroll()) {
1756
- if (this.poTableTbody.nativeElement.scrollHeight > this.height) {
1753
+ if (this.poTableTbodyVirtual.nativeElement.scrollHeight >= this.height) {
1757
1754
  this.includeInfiniteScroll();
1758
1755
  }
1759
1756
  else {
@@ -1800,11 +1797,12 @@ export class PoTableComponent extends PoTableBaseComponent {
1800
1797
  this.hasItems &&
1801
1798
  !this.subscriptionScrollEvent &&
1802
1799
  this.height &&
1803
- this.poTableTbody.nativeElement.scrollHeight);
1800
+ this.poTableTbodyVirtual.nativeElement.scrollHeight);
1804
1801
  }
1805
1802
  includeInfiniteScroll() {
1806
- this.scrollEvent$ = this.defaultService.scrollListener(this.poTableTbody.nativeElement);
1803
+ this.scrollEvent$ = this.defaultService.scrollListener(this.poTableTbodyVirtual.nativeElement);
1807
1804
  this.subscriptionScrollEvent = this.scrollEvent$.subscribe(event => this.showMoreInfiniteScroll(event));
1805
+ this.changeDetector.detectChanges();
1808
1806
  }
1809
1807
  mergeCustomIcons(rowIcons, customIcons) {
1810
1808
  const mergedIcons = [];
@@ -1871,10 +1869,11 @@ PoTableComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PoTableCom
1871
1869
  i0.ɵɵviewQuery(_c3, 5, ElementRef);
1872
1870
  i0.ɵɵviewQuery(_c4, 5, ElementRef);
1873
1871
  i0.ɵɵviewQuery(_c5, 5, ElementRef);
1874
- i0.ɵɵviewQuery(_c6, 5);
1875
- i0.ɵɵviewQuery(_c7, 5, ElementRef);
1872
+ i0.ɵɵviewQuery(_c6, 5, ElementRef);
1873
+ i0.ɵɵviewQuery(_c7, 5);
1876
1874
  i0.ɵɵviewQuery(_c8, 5, ElementRef);
1877
- i0.ɵɵviewQuery(_c9, 5);
1875
+ i0.ɵɵviewQuery(_c9, 5, ElementRef);
1876
+ i0.ɵɵviewQuery(_c10, 5);
1878
1877
  } if (rf & 2) {
1879
1878
  let _t;
1880
1879
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.noColumnsHeader = _t.first);
@@ -1883,21 +1882,22 @@ PoTableComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PoTableCom
1883
1882
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.tableWrapperElement = _t.first);
1884
1883
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.poTableTbody = _t.first);
1885
1884
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.poTableThead = _t.first);
1885
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.poTableTbodyVirtual = _t.first);
1886
1886
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.columnManagerTarget = _t.first);
1887
1887
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.actionsIconElement = _t);
1888
1888
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.actionsElement = _t);
1889
1889
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.headersTable = _t);
1890
- } }, features: [i0.ɵɵProvidersFeature([PoDateService]), i0.ɵɵInheritDefinitionFeature], decls: 27, vars: 6, consts: [["p-no-padding", "", 3, "p-no-shadow", 4, "ngIf", "ngIfElse"], ["tableContainerTemplate", ""], ["class", "po-row po-table-footer-show-more", 3, "po-invisible", 4, "ngIf"], ["tableHeaderTemplate", ""], ["tableBodyTemplate", ""], ["tableTemplate", ""], [3, "p-actions", "p-target"], ["popup", ""], ["poTableColumnDetail", ""], ["inputRadio", ""], ["inputCheckbox", ""], ["contentHeaderTemplate", ""], ["noColumnsWithHeight", ""], ["noColumnsWithoutHeight", ""], ["ActionsColumnTemplate", ""], [3, "p-columns", "p-max-columns", "p-target", "p-last-visible-columns-selected", "p-columns-default", "p-visible-columns-change", "p-change-visible-columns", "p-initial-columns", 4, "ngIf"], ["p-no-padding", "", 3, "p-no-shadow"], [4, "ngTemplateOutlet"], ["class", "po-table-overlay", 4, "ngIf"], [1, "po-table-main-container"], [1, "po-table-wrapper"], ["tableWrapper", ""], ["class", "po-table-container", 3, "height", 4, "ngIf"], [4, "ngIf"], ["class", "po-table-footer", 4, "ngIf"], [1, "po-table-overlay"], [1, "po-table-overlay-content", 3, "p-text"], [1, "po-table-container"], [1, "po-table-header-fixed", "po-table-header"], ["poTableThead", ""], [1, "po-table-container-fixed-inner", 3, "scroll"], ["poTableTbody", ""], [1, "po-table-footer"], [4, "ngFor", "ngForOf", "ngForTrackBy"], [3, "p-literals", "p-subtitles"], [1, "po-row", "po-table-footer-show-more"], ["tableFooter", ""], [1, "po-offset-xl-4", "po-offset-lg-4", "po-offset-md-3", "po-lg-4", "po-md-6", 3, "p-disabled", "p-label", "p-loading", "p-click"], [1, "po-table"], ["class", "po-table-column-selectable", 4, "ngIf"], ["class", "po-table-header-column po-table-header-master-detail", 4, "ngIf"], [3, "po-table-header-master-detail", "po-table-header-single-action", 4, "ngIf"], ["class", "po-table-header-column po-text-center", 4, "ngIf"], ["class", "po-table-header-ellipsis", 3, "width", "max-width", "min-width", "po-clickable", "po-table-header-subtitle", "click", 4, "ngFor", "ngForOf", "ngForTrackBy"], [3, "po-table-header-single-action", "po-table-header-actions", 4, "ngIf"], [3, "po-table-header-column-manager", "po-table-header-column-manager-border", "po-table-header-single-action", 4, "ngIf"], [1, "po-table-column-selectable"], ["type", "checkbox", "class", "po-table-checkbox", 3, "po-table-checkbox-checked", "po-table-checkbox-indeterminate", 4, "ngIf"], ["class", "po-table-checkbox-label po-clickable", 3, "click", 4, "ngIf"], ["type", "checkbox", 1, "po-table-checkbox"], [1, "po-table-checkbox-label", "po-clickable", 3, "click"], [1, "po-table-header-column", "po-table-header-master-detail"], [1, "po-table-header-column", "po-text-center"], ["noColumnsHeader", ""], [4, "ngIf", "ngIfThen", "ngIfElse"], [1, "po-table-header-ellipsis", 3, "click"], ["headersTable", ""], [1, "po-table-header-flex"], [4, "ngTemplateOutlet", "ngTemplateOutletContext"], ["columnManager", ""], ["p-tooltip-position", "left", 1, "po-table-header-column-manager-button", "po-icon", "po-icon-settings", "po-clickable", 3, "p-tooltip", "click"], ["columnManagerTarget", ""], ["class", "po-table-group-row", 4, "ngIf"], [1, "po-table-group-row"], [1, "po-table-row", "po-table-row-no-data"], [1, "po-table-no-data", "po-text-center", 3, "colSpan"], ["class", "po-table-group-row", 4, "ngFor", "ngForOf", "ngForTrackBy"], [1, "po-table-row"], ["class", "po-table-column-detail-toggle", 3, "click", 4, "ngIf"], [3, "width", "max-width", "min-width", "po-table-column", "po-table-column-right", "po-table-column-center", "po-table-column-icons", "ngClass", "click", 4, "ngFor", "ngForOf", "ngForTrackBy"], ["class", "po-table-column", 4, "ngIf"], [1, "po-table-column-detail-toggle", 3, "click"], [3, "ngTemplateOutlet", "ngTemplateOutletContext"], [3, "ngClass", "click"], [1, "po-table-column-cell", "notranslate", 3, "ngSwitch", "p-tooltip", "mouseenter", "mouseleave"], [4, "ngSwitchCase"], [3, "p-action", "p-disabled", "p-link", "p-row", "p-value", "click", 4, "ngSwitchCase"], [3, "p-column", "p-icons", "p-row", 4, "ngSwitchCase"], [4, "ngSwitchDefault"], [3, "p-action", "p-disabled", "p-link", "p-row", "p-value", "click"], [3, "p-column", "p-icons", "p-row"], [3, "p-subtitle"], [3, "p-value"], [1, "po-table-column", "po-table-column-empty"], [1, "po-table-column"], [1, "po-table-row-template-container", 3, "colSpan"], [1, "po-table-column-detail", 3, "colSpan"], [3, "p-selectable", "p-detail", "p-items", "p-select-row"], [1, "po-table-row-no-data", "po-table-column-empty"], ["class", "po-icon po-clickable", 3, "po-icon-arrow-up", "po-icon-arrow-down", 4, "ngIf"], [1, "po-icon", "po-clickable"], ["type", "radio", 1, "po-table-radio"], [1, "po-table-radio-label", "po-clickable", 3, "click"], [1, "po-table-header-ellipsis", 3, "p-tooltip", "mouseenter", "mouseleave"], ["columnHeader", ""], [3, "po-table-header-icon-unselected", "po-table-header-icon-descending", "po-table-header-icon-ascending", 4, "ngIf"], [1, "po-table-header-fixed-inner"], ["class", "po-table-column po-table-column-single-action", 4, "ngIf"], ["class", "po-table-column-actions", 4, "ngIf"], [1, "po-table-column", "po-table-column-single-action"], ["class", "po-table-single-action po-clickable", 3, "po-table-action-disabled", "click", 4, "ngIf"], [1, "po-table-single-action", "po-clickable", 3, "click"], ["class", "po-table-single-action-content", 3, "p-icon", 4, "ngIf"], [1, "po-table-single-action-content", 3, "p-icon"], [1, "po-table-column-actions"], [1, "po-icon", "po-icon-more", "po-clickable", 3, "click"], ["popupTarget", ""], [3, "p-columns", "p-max-columns", "p-target", "p-last-visible-columns-selected", "p-columns-default", "p-visible-columns-change", "p-change-visible-columns", "p-initial-columns"]], template: function PoTableComponent_Template(rf, ctx) { if (rf & 1) {
1890
+ } }, features: [i0.ɵɵProvidersFeature([PoDateService]), i0.ɵɵInheritDefinitionFeature], decls: 27, vars: 6, consts: [["p-no-padding", "", 3, "p-no-shadow", 4, "ngIf", "ngIfElse"], ["tableContainerTemplate", ""], ["class", "po-row po-table-footer-show-more", 3, "po-invisible", 4, "ngIf"], ["tableHeaderTemplate", ""], ["tableBodyTemplate", ""], ["tableTemplate", ""], [3, "p-actions", "p-target"], ["popup", ""], ["poTableColumnDetail", ""], ["inputRadio", ""], ["inputCheckbox", ""], ["contentHeaderTemplate", ""], ["noColumnsWithHeight", ""], ["noColumnsWithoutHeight", ""], ["ActionsColumnTemplate", ""], [3, "p-columns", "p-max-columns", "p-target", "p-last-visible-columns-selected", "p-columns-default", "p-visible-columns-change", "p-change-visible-columns", "p-initial-columns", 4, "ngIf"], ["p-no-padding", "", 3, "p-no-shadow"], [4, "ngTemplateOutlet"], ["class", "po-table-overlay", 4, "ngIf"], [1, "po-table-main-container"], [1, "po-table-wrapper"], ["tableWrapper", ""], ["class", "po-table-container", 4, "ngIf"], [4, "ngIf"], ["class", "po-table-footer", 4, "ngIf"], [1, "po-table-overlay"], [1, "po-table-overlay-content", 3, "p-text"], [1, "po-table-container"], [1, "po-table-header-fixed", "po-table-header"], ["poTableThead", ""], [1, "po-table-container-fixed-inner"], ["poTableTbody", ""], [4, "ngIf", "ngIfThen", "ngIfElse"], [1, "po-table-footer"], [4, "ngFor", "ngForOf", "ngForTrackBy"], [3, "p-literals", "p-subtitles"], [1, "po-row", "po-table-footer-show-more"], ["tableFooter", ""], [1, "po-offset-xl-4", "po-offset-lg-4", "po-offset-md-3", "po-lg-4", "po-md-6", 3, "p-disabled", "p-label", "p-loading", "p-click"], [1, "po-table"], ["class", "po-table-column-selectable", 4, "ngIf"], ["class", "po-table-header-column po-table-header-master-detail", 4, "ngIf"], [3, "po-table-header-master-detail", "po-table-header-single-action", 4, "ngIf"], ["class", "po-table-header-column po-text-center", 4, "ngIf"], ["class", "po-table-header-ellipsis", 3, "width", "max-width", "min-width", "po-clickable", "po-table-header-subtitle", "click", 4, "ngFor", "ngForOf", "ngForTrackBy"], [3, "po-table-header-single-action", "po-table-header-actions", 4, "ngIf"], [3, "po-table-header-column-manager", "po-table-header-column-manager-border", "po-table-header-single-action", 4, "ngIf"], [1, "po-table-column-selectable"], ["name", "selectAll", 3, "ngModel", "click", "p-change", "ngModelChange", 4, "ngIf"], ["name", "selectAll", 3, "ngModel", "click", "p-change", "ngModelChange"], [1, "po-table-header-column", "po-table-header-master-detail"], [1, "po-table-header-column", "po-text-center"], ["noColumnsHeader", ""], [1, "po-table-header-ellipsis", 3, "click"], ["headersTable", ""], [1, "po-table-header-flex"], [4, "ngTemplateOutlet", "ngTemplateOutletContext"], ["columnManager", ""], ["p-tooltip-position", "left", 1, "po-table-header-column-manager-button", "po-icon", "po-icon-settings", "po-clickable", 3, "p-tooltip", "click"], ["columnManagerTarget", ""], [3, "itemSize", "minBufferPx", "maxBufferPx", "scroll"], ["poTableTbodyVirtual", ""], ["class", "po-table-group-row", 4, "ngIf"], [1, "po-table-group-row"], [1, "po-table-row", "po-table-row-no-data"], [1, "po-table-no-data", "po-text-center", 3, "colSpan"], ["class", "po-table-group-row", 4, "cdkVirtualFor", "cdkVirtualForOf", "cdkVirtualForTrackBy"], [1, "po-table-row"], ["class", "po-table-column-detail-toggle", 3, "click", 4, "ngIf"], [3, "width", "max-width", "min-width", "po-table-column", "po-table-column-right", "po-table-column-center", "po-table-column-icons", "ngClass", "click", 4, "ngFor", "ngForOf", "ngForTrackBy"], ["class", "po-table-column", 4, "ngIf"], [1, "po-table-column-detail-toggle", 3, "click"], [3, "ngTemplateOutlet", "ngTemplateOutletContext"], [3, "ngClass", "click"], [1, "po-table-column-cell", "notranslate", 3, "ngSwitch", "p-tooltip", "mouseenter", "mouseleave"], [4, "ngSwitchCase"], [3, "p-action", "p-disabled", "p-link", "p-row", "p-value", "click", 4, "ngSwitchCase"], [3, "p-column", "p-icons", "p-row", 4, "ngSwitchCase"], [4, "ngSwitchDefault"], [3, "p-action", "p-disabled", "p-link", "p-row", "p-value", "click"], [3, "p-column", "p-icons", "p-row"], [3, "p-subtitle"], [3, "p-value"], [1, "po-table-column", "po-table-column-empty"], [1, "po-table-column"], [1, "po-table-row-template-container", 3, "colSpan"], [1, "po-table-column-detail", 3, "colSpan"], [3, "p-selectable", "p-detail", "p-items", "p-select-row"], ["class", "po-table-group-row", 4, "ngFor", "ngForOf", "ngForTrackBy"], [1, "po-table-row-no-data", "po-table-column-empty"], ["class", "po-icon po-clickable", 3, "po-icon-arrow-up", "po-icon-arrow-down", 4, "ngIf"], [1, "po-icon", "po-clickable"], ["type", "radio", 1, "po-table-radio"], [1, "po-table-radio-label", "po-clickable", 3, "click"], ["name", "checkbox", 3, "ngModel", "p-change", "ngModelChange", "click"], [1, "po-table-header-ellipsis", 3, "p-tooltip", "mouseenter", "mouseleave"], ["columnHeader", ""], [3, "po-table-header-icon-unselected", "po-table-header-icon-descending", "po-table-header-icon-ascending", 4, "ngIf"], [1, "po-table-header-fixed-inner"], ["class", "po-table-column po-table-column-single-action", 4, "ngIf"], ["class", "po-table-column-actions", 4, "ngIf"], [1, "po-table-column", "po-table-column-single-action"], ["class", "po-table-single-action po-clickable", 3, "po-table-action-disabled", "click", 4, "ngIf"], [1, "po-table-single-action", "po-clickable", 3, "click"], ["class", "po-table-single-action-content", 3, "p-icon", 4, "ngIf"], [1, "po-table-single-action-content", 3, "p-icon"], [1, "po-table-column-actions"], [1, "po-icon", "po-icon-more", "po-clickable", 3, "click"], ["popupTarget", ""], [3, "p-columns", "p-max-columns", "p-target", "p-last-visible-columns-selected", "p-columns-default", "p-visible-columns-change", "p-change-visible-columns", "p-initial-columns"]], template: function PoTableComponent_Template(rf, ctx) { if (rf & 1) {
1891
1891
  i0.ɵɵtemplate(0, PoTableComponent_po_container_0_Template, 2, 2, "po-container", 0);
1892
1892
  i0.ɵɵtemplate(1, PoTableComponent_ng_template_1_Template, 8, 10, "ng-template", null, 1, i0.ɵɵtemplateRefExtractor);
1893
1893
  i0.ɵɵtemplate(3, PoTableComponent_div_3_Template, 3, 5, "div", 2);
1894
1894
  i0.ɵɵtemplate(4, PoTableComponent_ng_template_4_Template, 11, 15, "ng-template", null, 3, i0.ɵɵtemplateRefExtractor);
1895
- i0.ɵɵtemplate(6, PoTableComponent_ng_template_6_Template, 3, 6, "ng-template", null, 4, i0.ɵɵtemplateRefExtractor);
1895
+ i0.ɵɵtemplate(6, PoTableComponent_ng_template_6_Template, 5, 11, "ng-template", null, 4, i0.ɵɵtemplateRefExtractor);
1896
1896
  i0.ɵɵtemplate(8, PoTableComponent_ng_template_8_Template, 13, 17, "ng-template", null, 5, i0.ɵɵtemplateRefExtractor);
1897
1897
  i0.ɵɵelement(10, "po-popup", 6, 7);
1898
1898
  i0.ɵɵtemplate(12, PoTableComponent_ng_template_12_Template, 1, 1, "ng-template", null, 8, i0.ɵɵtemplateRefExtractor);
1899
1899
  i0.ɵɵtemplate(14, PoTableComponent_ng_template_14_Template, 2, 2, "ng-template", null, 9, i0.ɵɵtemplateRefExtractor);
1900
- i0.ɵɵtemplate(16, PoTableComponent_ng_template_16_Template, 2, 2, "ng-template", null, 10, i0.ɵɵtemplateRefExtractor);
1900
+ i0.ɵɵtemplate(16, PoTableComponent_ng_template_16_Template, 1, 1, "ng-template", null, 10, i0.ɵɵtemplateRefExtractor);
1901
1901
  i0.ɵɵtemplate(18, PoTableComponent_ng_template_18_Template, 5, 5, "ng-template", null, 11, i0.ɵɵtemplateRefExtractor);
1902
1902
  i0.ɵɵtemplate(20, PoTableComponent_ng_template_20_Template, 2, 3, "ng-template", null, 12, i0.ɵɵtemplateRefExtractor);
1903
1903
  i0.ɵɵtemplate(22, PoTableComponent_ng_template_22_Template, 1, 1, "ng-template", null, 13, i0.ɵɵtemplateRefExtractor);
@@ -1912,10 +1912,10 @@ PoTableComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PoTableCom
1912
1912
  i0.ɵɵproperty("p-actions", ctx.actions)("p-target", ctx.popupTarget);
1913
1913
  i0.ɵɵadvance(16);
1914
1914
  i0.ɵɵproperty("ngIf", !ctx.hideColumnsManager);
1915
- } }, directives: [i3.NgIf, i6.PoContainerComponent, i3.NgTemplateOutlet, i7.PoLoadingComponent, i3.NgForOf, i8.PoTableSubtitleFooterComponent, i9.PoButtonComponent, i10.PoTooltipDirective, i3.NgClass, i3.NgSwitch, i3.NgSwitchCase, i11.PoTableColumnLinkComponent, i12.PoTableColumnIconComponent, i13.PoTableSubtitleCircleComponent, i14.PoTableColumnLabelComponent, i3.NgSwitchDefault, i15.PoTableDetailComponent, i16.PoPopupComponent, i17.PoIconComponent, i18.PoTableColumnManagerComponent], pipes: [i3.CurrencyPipe, i3.DatePipe, i19.PoTimePipe, i3.TitleCasePipe], encapsulation: 2 });
1915
+ } }, directives: [i3.NgIf, i6.PoContainerComponent, i3.NgTemplateOutlet, i7.PoLoadingComponent, i3.NgForOf, i8.PoTableSubtitleFooterComponent, i9.PoButtonComponent, i10.PoCheckboxComponent, i11.NgControlStatus, i11.NgModel, i12.PoTooltipDirective, i13.CdkVirtualScrollViewport, i13.CdkFixedSizeVirtualScroll, i13.CdkVirtualForOf, i3.NgClass, i3.NgSwitch, i3.NgSwitchCase, i14.PoTableColumnLinkComponent, i15.PoTableColumnIconComponent, i16.PoTableSubtitleCircleComponent, i17.PoTableColumnLabelComponent, i3.NgSwitchDefault, i18.PoTableDetailComponent, i19.PoPopupComponent, i20.PoIconComponent, i21.PoTableColumnManagerComponent], pipes: [i3.CurrencyPipe, i3.DatePipe, i22.PoTimePipe, i3.TitleCasePipe], encapsulation: 2 });
1916
1916
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PoTableComponent, [{
1917
1917
  type: Component,
1918
- args: [{ selector: 'po-table', providers: [PoDateService], template: "<po-container *ngIf=\"container; else tableContainerTemplate\" p-no-padding [p-no-shadow]=\"container === 'border'\">\n <ng-container *ngTemplateOutlet=\"tableContainerTemplate\"></ng-container>\n</po-container>\n\n<ng-template #tableContainerTemplate>\n <div [class.po-table-container-relative]=\"loading\">\n <div *ngIf=\"loading\" class=\"po-table-overlay\">\n <po-loading class=\"po-table-overlay-content\" [p-text]=\"literals.loadingData\"></po-loading>\n </div>\n\n <div class=\"po-table-main-container\">\n <div\n #tableWrapper\n class=\"po-table-wrapper\"\n [class.po-table-header-fixed-columns-pixels]=\"allColumnsWidthPixels\"\n [style.opacity]=\"tableOpacity\"\n >\n <div *ngIf=\"height\" class=\"po-table-container\" [style.height.px]=\"heightTableContainer\">\n <div #poTableThead class=\"po-table-header-fixed po-table-header\">\n <ng-container *ngTemplateOutlet=\"tableHeaderTemplate\"></ng-container>\n </div>\n <div #poTableTbody class=\"po-table-container-fixed-inner\" (scroll)=\"syncronizeHorizontalScroll()\">\n <ng-container *ngTemplateOutlet=\"tableBodyTemplate\"></ng-container>\n </div>\n </div>\n\n <div *ngIf=\"!height\">\n <ng-container *ngTemplateOutlet=\"tableTemplate\"></ng-container>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"po-table-footer\" *ngIf=\"hasFooter\">\n <ng-container *ngFor=\"let column of subtitleColumns; trackBy: trackBy\">\n <po-table-subtitle-footer [p-literals]=\"literals\" [p-subtitles]=\"column.subtitles\"> </po-table-subtitle-footer>\n </ng-container>\n </div>\n</ng-template>\n\n<div\n *ngIf=\"!infiniteScroll\"\n class=\"po-row po-table-footer-show-more\"\n [class.po-invisible]=\"showMore.observers.length === 0 && !hasService\"\n #tableFooter\n>\n <po-button\n class=\"po-offset-xl-4 po-offset-lg-4 po-offset-md-3 po-lg-4 po-md-6\"\n [p-disabled]=\"showMoreDisabled\"\n [p-label]=\"literals.loadMoreData\"\n [p-loading]=\"loadingShowMore\"\n (p-click)=\"onShowMore()\"\n >\n </po-button>\n</div>\n\n<ng-template #tableHeaderTemplate>\n <table class=\"po-table\" [class.po-table-striped]=\"striped\" [class.po-table-layout-fixed]=\"hideTextOverflow\">\n <thead>\n <tr [class.po-table-header]=\"!height\">\n <th *ngIf=\"hasSelectableColumn\" class=\"po-table-column-selectable\">\n <div [class.po-table-header-fixed-inner]=\"height\">\n <input\n *ngIf=\"!hideSelectAll\"\n type=\"checkbox\"\n class=\"po-table-checkbox\"\n [class.po-table-checkbox-checked]=\"selectAll\"\n [class.po-table-checkbox-indeterminate]=\"selectAll === null\"\n />\n <label *ngIf=\"!hideSelectAll\" class=\"po-table-checkbox-label po-clickable\" (click)=\"selectAllRows()\">\n </label>\n </div>\n </th>\n\n <th\n *ngIf=\"(hasMasterDetailColumn || hasRowTemplate) && !hasRowTemplateWithArrowDirectionRight\"\n class=\"po-table-header-column po-table-header-master-detail\"\n ></th>\n\n <!-- Coluna criada para caso as a\u00E7\u00F5es fiquem no lado esquerdo -->\n <th\n *ngIf=\"!actionRight && (visibleActions.length > 1 || isSingleAction)\"\n [class.po-table-header-master-detail]=\"!isSingleAction\"\n [class.po-table-header-single-action]=\"isSingleAction\"\n ></th>\n\n <th *ngIf=\"!hasMainColumns\" #noColumnsHeader class=\"po-table-header-column po-text-center\">\n <ng-container *ngIf=\"height; then noColumnsWithHeight; else noColumnsWithoutHeight\"> </ng-container>\n </th>\n\n <th\n *ngFor=\"let column of mainColumns; let i = index; trackBy: trackBy\"\n #headersTable\n class=\"po-table-header-ellipsis\"\n [style.width]=\"column.width\"\n [style.max-width]=\"column.width\"\n [style.min-width]=\"column.width\"\n [class.po-clickable]=\"(sort && column.sortable !== false) || hasService\"\n [class.po-table-header-subtitle]=\"column.type === 'subtitle'\"\n (click)=\"sortColumn(column)\"\n >\n <div\n class=\"po-table-header-flex\"\n [class.po-table-header-fixed-inner]=\"height\"\n [class.po-table-header-flex-right]=\"column.type === 'currency' || column.type === 'number'\"\n [class.po-table-header-flex-center]=\"column.type === 'subtitle'\"\n >\n <ng-container *ngTemplateOutlet=\"contentHeaderTemplate; context: { $implicit: column }\"> </ng-container>\n </div>\n </th>\n\n <th\n *ngIf=\"hasRowTemplateWithArrowDirectionRight && (hasVisibleActions || hideColumnsManager)\"\n class=\"po-table-header-column po-table-header-master-detail\"\n ></th>\n\n <th\n *ngIf=\"hasVisibleActions && hideColumnsManager && actionRight\"\n [class.po-table-header-single-action]=\"isSingleAction\"\n [class.po-table-header-actions]=\"!isSingleAction\"\n ></th>\n\n <th\n #columnManager\n *ngIf=\"hasValidColumns && !hideColumnsManager\"\n [class.po-table-header-column-manager]=\"!isSingleAction || !actionRight\"\n [class.po-table-header-column-manager-border]=\"!height && container\"\n [class.po-table-header-single-action]=\"isSingleAction && actionRight\"\n >\n <div\n [class.po-table-header-column-manager-border]=\"height && container\"\n [class.po-table-header-column-manager-fixed-inner]=\"height\"\n [style.width.px]=\"height && visibleActions.length ? columnManager.offsetWidth : undefined\"\n >\n <button\n #columnManagerTarget\n class=\"po-table-header-column-manager-button po-icon po-icon-settings po-clickable\"\n p-tooltip-position=\"left\"\n [p-tooltip]=\"literals.columnsManager\"\n (click)=\"onOpenColumnManager()\"\n ></button>\n </div>\n </th>\n </tr>\n </thead>\n </table>\n</ng-template>\n\n<ng-template #tableBodyTemplate>\n <table class=\"po-table\" [class.po-table-striped]=\"striped\" [class.po-table-layout-fixed]=\"hideTextOverflow\">\n <tbody class=\"po-table-group-row\" *ngIf=\"!hasItems || !hasMainColumns\">\n <tr class=\"po-table-row po-table-row-no-data\">\n <td [colSpan]=\"columnCount\" class=\"po-table-no-data po-text-center\">\n <span> {{ literals.noData }} </span>\n </td>\n </tr>\n </tbody>\n\n <ng-container *ngIf=\"hasMainColumns\">\n <tbody class=\"po-table-group-row\" *ngFor=\"let row of items; let rowIndex = index; trackBy: trackBy\">\n <tr class=\"po-table-row\" [class.po-table-row-active]=\"row.$selected || (row.$selected === null && selectable)\">\n <td *ngIf=\"selectable\" class=\"po-table-column-selectable\">\n <ng-container *ngTemplateOutlet=\"singleSelect ? inputRadio : inputCheckbox; context: { $implicit: row }\">\n </ng-container>\n </td>\n\n <!-- Valida se a origem do detail \u00E9 pelo input do po-table -->\n <td\n *ngIf=\"columnMasterDetail && !hideDetail && !hasRowTemplate\"\n class=\"po-table-column-detail-toggle\"\n (click)=\"toggleDetail(row)\"\n >\n <ng-template\n [ngTemplateOutlet]=\"poTableColumnDetail\"\n [ngTemplateOutletContext]=\"{ row: row, rowIndex: rowIndex }\"\n >\n </ng-template>\n </td>\n\n <!-- Coluna com as a\u00E7\u00F5es na esquerda (padr\u00E3o)-->\n <ng-template\n *ngIf=\"!actionRight && (visibleActions.length > 1 || isSingleAction)\"\n [ngTemplateOutlet]=\"ActionsColumnTemplate\"\n [ngTemplateOutletContext]=\"{ row: row, rowIndex: rowIndex }\"\n >\n </ng-template>\n\n <!-- Valida se a origem do detail \u00E9 pela diretiva -->\n <td\n *ngIf=\"hasRowTemplate && !hasRowTemplateWithArrowDirectionRight\"\n class=\"po-table-column-detail-toggle\"\n (click)=\"toggleDetail(row)\"\n >\n <ng-template\n [ngTemplateOutlet]=\"poTableColumnDetail\"\n [ngTemplateOutletContext]=\"{ row: row, rowIndex: rowIndex }\"\n >\n </ng-template>\n </td>\n\n <td\n *ngFor=\"let column of mainColumns; let columnIndex = index; trackBy: trackBy\"\n [style.width]=\"column.width\"\n [style.max-width]=\"column.width\"\n [style.min-width]=\"column.width\"\n [class.po-table-column]=\"column.type !== 'icon'\"\n [class.po-table-column-right]=\"column.type === 'currency' || column.type === 'number'\"\n [class.po-table-column-center]=\"column.type === 'subtitle'\"\n [class.po-table-column-icons]=\"column.type === 'icon'\"\n [ngClass]=\"getClassColor(row, column)\"\n (click)=\"selectable ? selectRow(row) : 'javascript:;'\"\n >\n <div\n class=\"po-table-column-cell notranslate\"\n [class.po-table-body-ellipsis]=\"hideTextOverflow\"\n [ngSwitch]=\"column.type\"\n [p-tooltip]=\"tooltipText\"\n [style.width.px]=\"noColumnsHeader?.nativeElement.parentElement?.offsetWidth\"\n (mouseenter)=\"tooltipMouseEnter($event, column, row)\"\n (mouseleave)=\"tooltipMouseLeave()\"\n >\n <span *ngSwitchCase=\"'columnTemplate'\">\n <ng-container *ngTemplateOutlet=\"getTemplate(column); context: { $implicit: getCellData(row, column) }\">\n </ng-container>\n </span>\n\n <span *ngSwitchCase=\"'cellTemplate'\">\n <ng-container *ngTemplateOutlet=\"tableCellTemplate?.templateRef; context: { row: row, column: column }\">\n </ng-container>\n </span>\n\n <span *ngSwitchCase=\"'boolean'\">\n {{ getBooleanLabel(getCellData(row, column), column) }}\n </span>\n\n <span *ngSwitchCase=\"'currency'\">\n {{ getCellData(row, column) | currency: column.format:'symbol':'1.2-2' }}\n </span>\n\n <span *ngSwitchCase=\"'date'\">\n {{ getCellData(row, column) | date: column.format || 'dd/MM/yyyy' }}\n </span>\n\n <span *ngSwitchCase=\"'time'\">\n {{ getCellData(row, column) | po_time: column.format || 'HH:mm:ss.ffffff' }}\n </span>\n\n <span *ngSwitchCase=\"'dateTime'\">\n {{ getCellData(row, column) | date: column.format || 'dd/MM/yyyy HH:mm:ss' }}\n </span>\n\n <span *ngSwitchCase=\"'number'\">\n {{ formatNumber(getCellData(row, column), column.format) }}\n </span>\n\n <po-table-column-link\n *ngSwitchCase=\"'link'\"\n [p-action]=\"column.action\"\n [p-disabled]=\"checkDisabled(row, column)\"\n [p-link]=\"row[column.link]\"\n [p-row]=\"row\"\n [p-value]=\"getCellData(row, column)\"\n (click)=\"onClickLink($event, row, column)\"\n >\n </po-table-column-link>\n\n <po-table-column-icon\n *ngSwitchCase=\"'icon'\"\n [p-column]=\"column\"\n [p-icons]=\"getColumnIcons(row, column)\"\n [p-row]=\"row\"\n >\n </po-table-column-icon>\n\n <span *ngSwitchCase=\"'subtitle'\">\n <po-table-subtitle-circle [p-subtitle]=\"getSubtitleColumn(row, column)\"></po-table-subtitle-circle>\n </span>\n <span *ngSwitchCase=\"'label'\">\n <po-table-column-label [p-value]=\"getColumnLabel(row, column)\"> </po-table-column-label>\n </span>\n <span *ngSwitchDefault>{{ getCellData(row, column) }}</span>\n </div>\n </td>\n\n <td\n *ngIf=\"hasRowTemplateWithArrowDirectionRight\"\n class=\"po-table-column-detail-toggle\"\n (click)=\"toggleDetail(row)\"\n >\n <ng-template\n [ngTemplateOutlet]=\"poTableColumnDetail\"\n [ngTemplateOutletContext]=\"{ row: row, rowIndex: rowIndex }\"\n >\n </ng-template>\n </td>\n\n <!-- Coluna de a\u00E7oes na direita -->\n <ng-template\n *ngIf=\"actionRight\"\n [ngTemplateOutlet]=\"ActionsColumnTemplate\"\n [ngTemplateOutletContext]=\"{ row: row, rowIndex: rowIndex }\"\n >\n </ng-template>\n\n <!-- Coluna para n\u00E3o ficar em branco nas linhas de gerenciamento -->\n <ng-container *ngIf=\"!actionRight && (visibleActions.length > 1 || isSingleAction) && !hideColumnsManager\">\n <td class=\"po-table-column po-table-column-empty\"></td>\n </ng-container>\n\n <!-- Column Manager -->\n <td\n *ngIf=\"!hasVisibleActions && !hideColumnsManager && !hasRowTemplateWithArrowDirectionRight\"\n class=\"po-table-column\"\n ></td>\n </tr>\n\n <tr *ngIf=\"hasMainColumns && hasRowTemplate && row.$showDetail && isShowRowTemplate(row, rowIndex)\">\n <td class=\"po-table-row-template-container\" [colSpan]=\"columnCountForMasterDetail\">\n <ng-template\n [ngTemplateOutlet]=\"tableRowTemplate.templateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: row, rowIndex: rowIndex }\"\n >\n </ng-template>\n </td>\n </tr>\n\n <tr *ngIf=\"hasMainColumns && isShowMasterDetail(row)\">\n <td class=\"po-table-column-detail\" [colSpan]=\"columnCountForMasterDetail\">\n <po-table-detail\n [p-selectable]=\"selectable && !detailHideSelect\"\n [p-detail]=\"columnMasterDetail.detail\"\n [p-items]=\"row[nameColumnDetail]\"\n (p-select-row)=\"selectDetailRow($event)\"\n >\n </po-table-detail>\n </td>\n </tr>\n </tbody>\n </ng-container>\n </table>\n</ng-template>\n\n<ng-template #tableTemplate>\n <table class=\"po-table\" [class.po-table-striped]=\"striped\" [class.po-table-layout-fixed]=\"hideTextOverflow\">\n <thead>\n <tr [class.po-table-header]=\"!height\">\n <th *ngIf=\"hasSelectableColumn\" class=\"po-table-column-selectable\">\n <div [class.po-table-header-fixed-inner]=\"height\">\n <input\n *ngIf=\"!hideSelectAll\"\n type=\"checkbox\"\n class=\"po-table-checkbox\"\n [class.po-table-checkbox-checked]=\"selectAll\"\n [class.po-table-checkbox-indeterminate]=\"selectAll === null\"\n />\n <label *ngIf=\"!hideSelectAll\" class=\"po-table-checkbox-label po-clickable\" (click)=\"selectAllRows()\">\n </label>\n </div>\n </th>\n\n <th\n *ngIf=\"(hasMasterDetailColumn || hasRowTemplate) && !hasRowTemplateWithArrowDirectionRight\"\n class=\"po-table-header-column po-table-header-master-detail\"\n ></th>\n\n <!-- Coluna criada para caso as a\u00E7\u00F5es fiquem no lado esquerdo -->\n <th\n *ngIf=\"!actionRight && (visibleActions.length > 1 || isSingleAction)\"\n [class.po-table-header-master-detail]=\"!isSingleAction\"\n [class.po-table-header-single-action]=\"isSingleAction\"\n ></th>\n\n <th *ngIf=\"!hasMainColumns\" #noColumnsHeader class=\"po-table-header-column po-text-center\">\n <ng-container *ngIf=\"height; then noColumnsWithHeight; else noColumnsWithoutHeight\"> </ng-container>\n </th>\n\n <th\n *ngFor=\"let column of mainColumns; let i = index; trackBy: trackBy\"\n #headersTable\n class=\"po-table-header-ellipsis\"\n [style.width]=\"column.width\"\n [style.max-width]=\"column.width\"\n [style.min-width]=\"column.width\"\n [class.po-clickable]=\"(sort && column.sortable !== false) || hasService\"\n [class.po-table-header-subtitle]=\"column.type === 'subtitle'\"\n (click)=\"sortColumn(column)\"\n >\n <div\n class=\"po-table-header-flex\"\n [class.po-table-header-fixed-inner]=\"height\"\n [class.po-table-header-flex-right]=\"column.type === 'currency' || column.type === 'number'\"\n [class.po-table-header-flex-center]=\"column.type === 'subtitle'\"\n >\n <ng-container *ngTemplateOutlet=\"contentHeaderTemplate; context: { $implicit: column }\"> </ng-container>\n </div>\n </th>\n\n <th\n *ngIf=\"hasRowTemplateWithArrowDirectionRight && (hasVisibleActions || hideColumnsManager)\"\n class=\"po-table-header-column po-table-header-master-detail\"\n ></th>\n\n <th\n *ngIf=\"hasVisibleActions && hideColumnsManager && actionRight\"\n [class.po-table-header-single-action]=\"isSingleAction\"\n [class.po-table-header-actions]=\"!isSingleAction\"\n ></th>\n\n <th\n #columnManager\n *ngIf=\"hasValidColumns && !hideColumnsManager\"\n [class.po-table-header-column-manager]=\"!isSingleAction || !actionRight\"\n [class.po-table-header-column-manager-border]=\"!height && container\"\n [class.po-table-header-single-action]=\"isSingleAction && actionRight\"\n >\n <div\n [class.po-table-header-column-manager-border]=\"height && container\"\n [class.po-table-header-column-manager-fixed-inner]=\"height\"\n [style.width.px]=\"height && visibleActions.length ? columnManager.offsetWidth : undefined\"\n >\n <button\n #columnManagerTarget\n class=\"po-table-header-column-manager-button po-icon po-icon-settings po-clickable\"\n p-tooltip-position=\"left\"\n [p-tooltip]=\"literals.columnsManager\"\n (click)=\"onOpenColumnManager()\"\n ></button>\n </div>\n </th>\n </tr>\n </thead>\n\n <tbody class=\"po-table-group-row\" *ngIf=\"!hasItems || !hasMainColumns\">\n <tr class=\"po-table-row po-table-row-no-data\">\n <td [colSpan]=\"columnCount\" class=\"po-table-no-data po-text-center\">\n <span> {{ literals.noData }} </span>\n </td>\n </tr>\n </tbody>\n\n <ng-container *ngIf=\"hasMainColumns\">\n <tbody class=\"po-table-group-row\" *ngFor=\"let row of items; let rowIndex = index; trackBy: trackBy\">\n <tr class=\"po-table-row\" [class.po-table-row-active]=\"row.$selected || (row.$selected === null && selectable)\">\n <td *ngIf=\"selectable\" class=\"po-table-column-selectable\">\n <ng-container *ngTemplateOutlet=\"singleSelect ? inputRadio : inputCheckbox; context: { $implicit: row }\">\n </ng-container>\n </td>\n\n <!-- Valida se a origem do detail \u00E9 pelo input do po-table -->\n <td\n *ngIf=\"columnMasterDetail && !hideDetail && !hasRowTemplate\"\n class=\"po-table-column-detail-toggle\"\n (click)=\"toggleDetail(row)\"\n >\n <ng-template\n [ngTemplateOutlet]=\"poTableColumnDetail\"\n [ngTemplateOutletContext]=\"{ row: row, rowIndex: rowIndex }\"\n >\n </ng-template>\n </td>\n\n <!-- Coluna com as a\u00E7\u00F5es na esquerda (padr\u00E3o)-->\n <ng-template\n *ngIf=\"!actionRight && (visibleActions.length > 1 || isSingleAction)\"\n [ngTemplateOutlet]=\"ActionsColumnTemplate\"\n [ngTemplateOutletContext]=\"{ row: row, rowIndex: rowIndex }\"\n >\n </ng-template>\n\n <!-- Valida se a origem do detail \u00E9 pela diretiva -->\n <td\n *ngIf=\"hasRowTemplate && !hasRowTemplateWithArrowDirectionRight\"\n class=\"po-table-column-detail-toggle\"\n (click)=\"toggleDetail(row)\"\n >\n <ng-template\n [ngTemplateOutlet]=\"poTableColumnDetail\"\n [ngTemplateOutletContext]=\"{ row: row, rowIndex: rowIndex }\"\n >\n </ng-template>\n </td>\n\n <td\n *ngFor=\"let column of mainColumns; let columnIndex = index; trackBy: trackBy\"\n [style.width]=\"column.width\"\n [style.max-width]=\"column.width\"\n [style.min-width]=\"column.width\"\n [class.po-table-column]=\"column.type !== 'icon'\"\n [class.po-table-column-right]=\"column.type === 'currency' || column.type === 'number'\"\n [class.po-table-column-center]=\"column.type === 'subtitle'\"\n [class.po-table-column-icons]=\"column.type === 'icon'\"\n [ngClass]=\"getClassColor(row, column)\"\n (click)=\"selectable ? selectRow(row) : 'javascript:;'\"\n >\n <div\n class=\"po-table-column-cell notranslate\"\n [class.po-table-body-ellipsis]=\"hideTextOverflow\"\n [ngSwitch]=\"column.type\"\n [p-tooltip]=\"tooltipText\"\n (mouseenter)=\"tooltipMouseEnter($event, column, row)\"\n (mouseleave)=\"tooltipMouseLeave()\"\n >\n <span *ngSwitchCase=\"'columnTemplate'\">\n <ng-container *ngTemplateOutlet=\"getTemplate(column); context: { $implicit: getCellData(row, column) }\">\n </ng-container>\n </span>\n\n <span *ngSwitchCase=\"'cellTemplate'\">\n <ng-container *ngTemplateOutlet=\"tableCellTemplate?.templateRef; context: { row: row, column: column }\">\n </ng-container>\n </span>\n\n <span *ngSwitchCase=\"'boolean'\">\n {{ getBooleanLabel(getCellData(row, column), column) }}\n </span>\n\n <span *ngSwitchCase=\"'currency'\">\n {{ getCellData(row, column) | currency: column.format:'symbol':'1.2-2' }}\n </span>\n\n <span *ngSwitchCase=\"'date'\">\n {{ getCellData(row, column) | date: column.format || 'dd/MM/yyyy' }}\n </span>\n\n <span *ngSwitchCase=\"'time'\">\n {{ getCellData(row, column) | po_time: column.format || 'HH:mm:ss.ffffff' }}\n </span>\n\n <span *ngSwitchCase=\"'dateTime'\">\n {{ getCellData(row, column) | date: column.format || 'dd/MM/yyyy HH:mm:ss' }}\n </span>\n\n <span *ngSwitchCase=\"'number'\">\n {{ formatNumber(getCellData(row, column), column.format) }}\n </span>\n\n <po-table-column-link\n *ngSwitchCase=\"'link'\"\n [p-action]=\"column.action\"\n [p-disabled]=\"checkDisabled(row, column)\"\n [p-link]=\"row[column.link]\"\n [p-row]=\"row\"\n [p-value]=\"getCellData(row, column)\"\n (click)=\"onClickLink($event, row, column)\"\n >\n </po-table-column-link>\n\n <po-table-column-icon\n *ngSwitchCase=\"'icon'\"\n [p-column]=\"column\"\n [p-icons]=\"getColumnIcons(row, column)\"\n [p-row]=\"row\"\n >\n </po-table-column-icon>\n\n <span *ngSwitchCase=\"'subtitle'\">\n <po-table-subtitle-circle [p-subtitle]=\"getSubtitleColumn(row, column)\"></po-table-subtitle-circle>\n </span>\n <span *ngSwitchCase=\"'label'\">\n <po-table-column-label [p-value]=\"getColumnLabel(row, column)\"> </po-table-column-label>\n </span>\n <span *ngSwitchDefault>{{ getCellData(row, column) }}</span>\n </div>\n </td>\n\n <td\n *ngIf=\"hasRowTemplateWithArrowDirectionRight\"\n class=\"po-table-column-detail-toggle\"\n (click)=\"toggleDetail(row)\"\n >\n <ng-template\n [ngTemplateOutlet]=\"poTableColumnDetail\"\n [ngTemplateOutletContext]=\"{ row: row, rowIndex: rowIndex }\"\n >\n </ng-template>\n </td>\n\n <!-- Coluna de a\u00E7oes na direita -->\n <ng-template\n *ngIf=\"actionRight\"\n [ngTemplateOutlet]=\"ActionsColumnTemplate\"\n [ngTemplateOutletContext]=\"{ row: row, rowIndex: rowIndex }\"\n >\n </ng-template>\n\n <!-- Coluna para n\u00E3o ficar em branco nas linhas de gerenciamento -->\n <ng-container *ngIf=\"!actionRight && (visibleActions.length > 1 || isSingleAction) && !hideColumnsManager\">\n <td class=\"po-table-row-no-data po-table-column-empty\"></td>\n </ng-container>\n\n <!-- Column Manager -->\n <td\n *ngIf=\"!hasVisibleActions && !hideColumnsManager && !hasRowTemplateWithArrowDirectionRight\"\n class=\"po-table-column\"\n ></td>\n </tr>\n\n <tr *ngIf=\"hasMainColumns && hasRowTemplate && row.$showDetail && isShowRowTemplate(row, rowIndex)\">\n <td class=\"po-table-row-template-container\" [colSpan]=\"columnCountForMasterDetail\">\n <ng-template\n [ngTemplateOutlet]=\"tableRowTemplate.templateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: row, rowIndex: rowIndex }\"\n >\n </ng-template>\n </td>\n </tr>\n\n <tr *ngIf=\"hasMainColumns && isShowMasterDetail(row)\">\n <td class=\"po-table-column-detail\" [colSpan]=\"columnCountForMasterDetail\">\n <po-table-detail\n [p-selectable]=\"selectable && !detailHideSelect\"\n [p-detail]=\"columnMasterDetail.detail\"\n [p-items]=\"row[nameColumnDetail]\"\n (p-select-row)=\"selectDetailRow($event)\"\n >\n </po-table-detail>\n </td>\n </tr>\n </tbody>\n </ng-container>\n </table>\n</ng-template>\n\n<po-popup #popup [p-actions]=\"actions\" [p-target]=\"popupTarget\"> </po-popup>\n\n<ng-template #poTableColumnDetail let-row=\"row\" let-rowIndex=\"rowIndex\">\n <span\n *ngIf=\"(containsMasterDetail(row) && !hasRowTemplate) || (isShowRowTemplate(row, rowIndex) && hasRowTemplate)\"\n class=\"po-icon po-clickable\"\n [class.po-icon-arrow-up]=\"row.$showDetail\"\n [class.po-icon-arrow-down]=\"!row.$showDetail\"\n >\n </span>\n</ng-template>\n\n<ng-template #inputRadio let-row>\n <input type=\"radio\" class=\"po-table-radio\" [class.po-table-radio-checked]=\"row.$selected\" />\n <label class=\"po-table-radio-label po-clickable\" (click)=\"selectable ? selectRow(row) : 'javascript:;'\"></label>\n</ng-template>\n\n<ng-template #inputCheckbox let-row>\n <input type=\"checkbox\" class=\"po-table-checkbox\" [class.po-table-checkbox-checked]=\"row.$selected\" />\n <label class=\"po-table-checkbox-label po-clickable\" (click)=\"selectable ? selectRow(row) : 'javascript:;'\"></label>\n</ng-template>\n\n<ng-template #contentHeaderTemplate let-column>\n <span\n #columnHeader\n class=\"po-table-header-ellipsis\"\n [p-tooltip]=\"tooltipText\"\n (mouseenter)=\"tooltipMouseEnter($event)\"\n (mouseleave)=\"tooltipMouseLeave()\"\n >\n {{ column.label || (column.property | titlecase) }}\n </span>\n <span\n *ngIf=\"sort && column.sortable !== false\"\n [class.po-table-header-icon-unselected]=\"sortedColumn?.property !== column\"\n [class.po-table-header-icon-descending]=\"sortedColumn?.property === column && sortedColumn.ascending\"\n [class.po-table-header-icon-ascending]=\"sortedColumn?.property === column && !sortedColumn.ascending\"\n >\n </span>\n</ng-template>\n\n<ng-template #noColumnsWithHeight>\n <div class=\"po-table-header-fixed-inner\" [style.width.px]=\"noColumnsHeader?.nativeElement.offsetWidth\">\n {{ hasValidColumns ? literals.noVisibleColumn : literals.noColumns }}\n </div>\n</ng-template>\n\n<ng-template #noColumnsWithoutHeight>\n {{ hasValidColumns ? literals.noVisibleColumn : literals.noColumns }}\n</ng-template>\n\n<!-- Template de a\u00E7\u00F5es -->\n<ng-template #ActionsColumnTemplate let-row=\"row\" let-rowIndex=\"rowIndex\">\n <td *ngIf=\"isSingleAction\" class=\"po-table-column po-table-column-single-action\">\n <div\n *ngIf=\"firstAction.visible !== false\"\n class=\"po-table-single-action po-clickable\"\n [class.po-table-action-disabled]=\"firstAction.disabled ? validateTableAction(row, firstAction) : false\"\n (click)=\"executeTableAction(row, firstAction)\"\n >\n <po-icon *ngIf=\"firstAction.icon\" class=\"po-table-single-action-content\" [p-icon]=\"firstAction.icon\"></po-icon>\n {{ firstAction.label }}\n </div>\n </td>\n\n <td *ngIf=\"visibleActions.length > 1\" class=\"po-table-column-actions\">\n <span #popupTarget class=\"po-icon po-icon-more po-clickable\" (click)=\"togglePopup(row, popupTarget)\"></span>\n </td>\n</ng-template>\n\n<po-table-column-manager\n *ngIf=\"!hideColumnsManager\"\n [p-columns]=\"columns\"\n [p-max-columns]=\"maxColumns\"\n [p-target]=\"columnManagerTarget\"\n [p-last-visible-columns-selected]=\"lastVisibleColumnsSelected\"\n (p-visible-columns-change)=\"onVisibleColumnsChange($event)\"\n (p-change-visible-columns)=\"onChangeVisibleColumns($event)\"\n [p-columns-default]=\"initialColumns\"\n (p-initial-columns)=\"onColumnRestoreManager($event)\"\n>\n</po-table-column-manager>\n" }]
1918
+ args: [{ selector: 'po-table', providers: [PoDateService], template: "<po-container *ngIf=\"container; else tableContainerTemplate\" p-no-padding [p-no-shadow]=\"container === 'border'\">\n <ng-container *ngTemplateOutlet=\"tableContainerTemplate\"></ng-container>\n</po-container>\n\n<ng-template #tableContainerTemplate>\n <div [class.po-table-container-relative]=\"loading\">\n <div *ngIf=\"loading\" class=\"po-table-overlay\">\n <po-loading class=\"po-table-overlay-content\" [p-text]=\"literals.loadingData\"></po-loading>\n </div>\n\n <div class=\"po-table-main-container\">\n <div\n #tableWrapper\n class=\"po-table-wrapper\"\n [class.po-table-header-fixed-columns-pixels]=\"allColumnsWidthPixels\"\n [style.opacity]=\"tableOpacity\"\n >\n <div *ngIf=\"height\" class=\"po-table-container\">\n <div #poTableThead class=\"po-table-header-fixed po-table-header\">\n <ng-container *ngTemplateOutlet=\"tableHeaderTemplate\"></ng-container>\n </div>\n\n <div #poTableTbody class=\"po-table-container-fixed-inner\">\n <ng-container *ngIf=\"height; then tableBodyTemplate; else tableTemplate\"></ng-container>\n </div>\n </div>\n\n <div *ngIf=\"!height\">\n <ng-container *ngTemplateOutlet=\"tableTemplate\"></ng-container>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"po-table-footer\" *ngIf=\"hasFooter\">\n <ng-container *ngFor=\"let column of subtitleColumns; trackBy: trackBy\">\n <po-table-subtitle-footer [p-literals]=\"literals\" [p-subtitles]=\"column.subtitles\"> </po-table-subtitle-footer>\n </ng-container>\n </div>\n</ng-template>\n\n<div\n *ngIf=\"!infiniteScroll\"\n class=\"po-row po-table-footer-show-more\"\n [class.po-invisible]=\"showMore.observers.length === 0 && !hasService\"\n #tableFooter\n>\n <po-button\n class=\"po-offset-xl-4 po-offset-lg-4 po-offset-md-3 po-lg-4 po-md-6\"\n [p-disabled]=\"showMoreDisabled\"\n [p-label]=\"literals.loadMoreData\"\n [p-loading]=\"loadingShowMore\"\n (p-click)=\"onShowMore()\"\n >\n </po-button>\n</div>\n\n<ng-template #tableHeaderTemplate>\n <table class=\"po-table\" [class.po-table-striped]=\"striped\" [class.po-table-layout-fixed]=\"hideTextOverflow\">\n <thead>\n <tr [class.po-table-header]=\"!height\">\n <th *ngIf=\"hasSelectableColumn\" class=\"po-table-column-selectable\">\n <div [class.po-table-header-fixed-inner]=\"height\">\n <po-checkbox\n name=\"selectAll\"\n *ngIf=\"!hideSelectAll\"\n (click)=\"selectAllRows()\"\n (p-change)=\"selectAllRows()\"\n [(ngModel)]=\"selectAll\"\n ></po-checkbox>\n </div>\n </th>\n\n <th\n *ngIf=\"(hasMasterDetailColumn || hasRowTemplate) && !hasRowTemplateWithArrowDirectionRight\"\n class=\"po-table-header-column po-table-header-master-detail\"\n ></th>\n\n <!-- Coluna criada para caso as a\u00E7\u00F5es fiquem no lado esquerdo -->\n <th\n *ngIf=\"!actionRight && (visibleActions.length > 1 || isSingleAction)\"\n [class.po-table-header-master-detail]=\"!isSingleAction\"\n [class.po-table-header-single-action]=\"isSingleAction\"\n ></th>\n\n <th *ngIf=\"!hasMainColumns\" #noColumnsHeader class=\"po-table-header-column po-text-center\">\n <ng-container *ngIf=\"height; then noColumnsWithHeight; else noColumnsWithoutHeight\"> </ng-container>\n </th>\n\n <th\n *ngFor=\"let column of mainColumns; let i = index; trackBy: trackBy\"\n #headersTable\n class=\"po-table-header-ellipsis\"\n [style.width]=\"column.width\"\n [style.max-width]=\"column.width\"\n [style.min-width]=\"column.width\"\n [class.po-clickable]=\"(sort && column.sortable !== false) || hasService\"\n [class.po-table-header-subtitle]=\"column.type === 'subtitle'\"\n (click)=\"sortColumn(column)\"\n >\n <div\n class=\"po-table-header-flex\"\n [class.po-table-header-fixed-inner]=\"height\"\n [class.po-table-header-flex-right]=\"column.type === 'currency' || column.type === 'number'\"\n [class.po-table-header-flex-center]=\"column.type === 'subtitle'\"\n >\n <ng-container *ngTemplateOutlet=\"contentHeaderTemplate; context: { $implicit: column }\"> </ng-container>\n </div>\n </th>\n\n <th\n *ngIf=\"hasRowTemplateWithArrowDirectionRight && (hasVisibleActions || hideColumnsManager)\"\n class=\"po-table-header-column po-table-header-master-detail\"\n ></th>\n\n <th\n *ngIf=\"hasVisibleActions && hideColumnsManager && actionRight\"\n [class.po-table-header-single-action]=\"isSingleAction\"\n [class.po-table-header-actions]=\"!isSingleAction\"\n ></th>\n\n <th\n #columnManager\n *ngIf=\"hasValidColumns && !hideColumnsManager\"\n [class.po-table-header-column-manager]=\"!isSingleAction || !actionRight\"\n [class.po-table-header-column-manager-border]=\"!height && container\"\n [class.po-table-header-single-action]=\"isSingleAction && actionRight\"\n >\n <div\n [class.po-table-header-column-manager-border]=\"height && container\"\n [class.po-table-header-column-manager-fixed-inner]=\"height\"\n [style.width.px]=\"height && visibleActions.length ? columnManager.offsetWidth : undefined\"\n >\n <button\n #columnManagerTarget\n class=\"po-table-header-column-manager-button po-icon po-icon-settings po-clickable\"\n p-tooltip-position=\"left\"\n [p-tooltip]=\"literals.columnsManager\"\n (click)=\"onOpenColumnManager()\"\n ></button>\n </div>\n </th>\n </tr>\n </thead>\n </table>\n</ng-template>\n\n<!-- s\u00F3 virtual -->\n<ng-template #tableBodyTemplate>\n <cdk-virtual-scroll-viewport\n #poTableTbodyVirtual\n [itemSize]=\"itemSize\"\n [style.height.px]=\"heightTableContainer\"\n [minBufferPx]=\"height < 100 ? 100 : height\"\n [maxBufferPx]=\"height < 200 ? 200 : height\"\n (scroll)=\"syncronizeHorizontalScroll()\"\n >\n <table class=\"po-table\" [class.po-table-striped]=\"striped\" [class.po-table-layout-fixed]=\"hideTextOverflow\">\n <tbody class=\"po-table-group-row\" *ngIf=\"!hasItems || !hasMainColumns\">\n <tr class=\"po-table-row po-table-row-no-data\">\n <td [colSpan]=\"columnCount\" class=\"po-table-no-data po-text-center\">\n <span> {{ literals.noData }} </span>\n </td>\n </tr>\n </tbody>\n <ng-container *ngIf=\"hasMainColumns\">\n <tbody class=\"po-table-group-row\" *cdkVirtualFor=\"let row of items; let rowIndex = index; trackBy: trackBy\">\n <tr\n class=\"po-table-row\"\n [class.po-table-row-active]=\"row.$selected || (row.$selected === null && selectable)\"\n >\n <td *ngIf=\"selectable\" class=\"po-table-column-selectable\">\n <ng-container *ngTemplateOutlet=\"singleSelect ? inputRadio : inputCheckbox; context: { $implicit: row }\">\n </ng-container>\n </td>\n\n <!-- Valida se a origem do detail \u00E9 pelo input do po-table -->\n <td\n *ngIf=\"columnMasterDetail && !hideDetail && !hasRowTemplate\"\n class=\"po-table-column-detail-toggle\"\n (click)=\"toggleDetail(row)\"\n >\n <ng-template\n [ngTemplateOutlet]=\"poTableColumnDetail\"\n [ngTemplateOutletContext]=\"{ row: row, rowIndex: rowIndex }\"\n >\n </ng-template>\n </td>\n\n <!-- Coluna com as a\u00E7\u00F5es na esquerda (padr\u00E3o)-->\n <ng-template\n *ngIf=\"!actionRight && (visibleActions.length > 1 || isSingleAction)\"\n [ngTemplateOutlet]=\"ActionsColumnTemplate\"\n [ngTemplateOutletContext]=\"{ row: row, rowIndex: rowIndex }\"\n >\n </ng-template>\n\n <!-- Valida se a origem do detail \u00E9 pela diretiva -->\n <td\n *ngIf=\"hasRowTemplate && !hasRowTemplateWithArrowDirectionRight\"\n class=\"po-table-column-detail-toggle\"\n (click)=\"toggleDetail(row)\"\n >\n <ng-template\n [ngTemplateOutlet]=\"poTableColumnDetail\"\n [ngTemplateOutletContext]=\"{ row: row, rowIndex: rowIndex }\"\n >\n </ng-template>\n </td>\n\n <td\n *ngFor=\"let column of mainColumns; let columnIndex = index; trackBy: trackBy\"\n [style.width]=\"column.width\"\n [style.max-width]=\"column.width\"\n [style.min-width]=\"column.width\"\n [class.po-table-column]=\"column.type !== 'icon'\"\n [class.po-table-column-right]=\"column.type === 'currency' || column.type === 'number'\"\n [class.po-table-column-center]=\"column.type === 'subtitle'\"\n [class.po-table-column-icons]=\"column.type === 'icon'\"\n [ngClass]=\"getClassColor(row, column)\"\n (click)=\"selectable ? selectRow(row) : 'javascript:;'\"\n >\n <div\n class=\"po-table-column-cell notranslate\"\n [class.po-table-body-ellipsis]=\"hideTextOverflow\"\n [ngSwitch]=\"column.type\"\n [p-tooltip]=\"tooltipText\"\n [style.width.px]=\"noColumnsHeader?.nativeElement.parentElement?.offsetWidth\"\n (mouseenter)=\"tooltipMouseEnter($event, column, row)\"\n (mouseleave)=\"tooltipMouseLeave()\"\n >\n <span *ngSwitchCase=\"'columnTemplate'\">\n <ng-container\n *ngTemplateOutlet=\"getTemplate(column); context: { $implicit: getCellData(row, column) }\"\n >\n </ng-container>\n </span>\n\n <span *ngSwitchCase=\"'cellTemplate'\">\n <ng-container\n *ngTemplateOutlet=\"tableCellTemplate?.templateRef; context: { row: row, column: column }\"\n >\n </ng-container>\n </span>\n\n <span *ngSwitchCase=\"'boolean'\">\n {{ getBooleanLabel(getCellData(row, column), column) }}\n </span>\n\n <span *ngSwitchCase=\"'currency'\">\n {{ getCellData(row, column) | currency: column.format:'symbol':'1.2-2' }}\n </span>\n\n <span *ngSwitchCase=\"'date'\">\n {{ getCellData(row, column) | date: column.format || 'dd/MM/yyyy' }}\n </span>\n\n <span *ngSwitchCase=\"'time'\">\n {{ getCellData(row, column) | po_time: column.format || 'HH:mm:ss.ffffff' }}\n </span>\n\n <span *ngSwitchCase=\"'dateTime'\">\n {{ getCellData(row, column) | date: column.format || 'dd/MM/yyyy HH:mm:ss' }}\n </span>\n\n <span *ngSwitchCase=\"'number'\">\n {{ formatNumber(getCellData(row, column), column.format) }}\n </span>\n\n <po-table-column-link\n *ngSwitchCase=\"'link'\"\n [p-action]=\"column.action\"\n [p-disabled]=\"checkDisabled(row, column)\"\n [p-link]=\"row[column.link]\"\n [p-row]=\"row\"\n [p-value]=\"getCellData(row, column)\"\n (click)=\"onClickLink($event, row, column)\"\n >\n </po-table-column-link>\n\n <po-table-column-icon\n *ngSwitchCase=\"'icon'\"\n [p-column]=\"column\"\n [p-icons]=\"getColumnIcons(row, column)\"\n [p-row]=\"row\"\n >\n </po-table-column-icon>\n\n <span *ngSwitchCase=\"'subtitle'\">\n <po-table-subtitle-circle [p-subtitle]=\"getSubtitleColumn(row, column)\"></po-table-subtitle-circle>\n </span>\n <span *ngSwitchCase=\"'label'\">\n <po-table-column-label [p-value]=\"getColumnLabel(row, column)\"> </po-table-column-label>\n </span>\n <span *ngSwitchDefault>{{ getCellData(row, column) }}</span>\n </div>\n </td>\n\n <td\n *ngIf=\"hasRowTemplateWithArrowDirectionRight\"\n class=\"po-table-column-detail-toggle\"\n (click)=\"toggleDetail(row)\"\n >\n <ng-template\n [ngTemplateOutlet]=\"poTableColumnDetail\"\n [ngTemplateOutletContext]=\"{ row: row, rowIndex: rowIndex }\"\n >\n </ng-template>\n </td>\n\n <!-- Coluna de a\u00E7oes na direita -->\n <ng-template\n *ngIf=\"actionRight\"\n [ngTemplateOutlet]=\"ActionsColumnTemplate\"\n [ngTemplateOutletContext]=\"{ row: row, rowIndex: rowIndex }\"\n >\n </ng-template>\n\n <!-- Coluna para n\u00E3o ficar em branco nas linhas de gerenciamento -->\n <ng-container *ngIf=\"!actionRight && (visibleActions.length > 1 || isSingleAction) && !hideColumnsManager\">\n <td class=\"po-table-column po-table-column-empty\"></td>\n </ng-container>\n\n <!-- Column Manager -->\n <td\n *ngIf=\"!hasVisibleActions && !hideColumnsManager && !hasRowTemplateWithArrowDirectionRight\"\n class=\"po-table-column\"\n ></td>\n </tr>\n\n <tr *ngIf=\"hasMainColumns && hasRowTemplate && row.$showDetail && isShowRowTemplate(row, rowIndex)\">\n <td class=\"po-table-row-template-container\" [colSpan]=\"columnCountForMasterDetail\">\n <ng-template\n [ngTemplateOutlet]=\"tableRowTemplate.templateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: row, rowIndex: rowIndex }\"\n >\n </ng-template>\n </td>\n </tr>\n\n <tr *ngIf=\"hasMainColumns && isShowMasterDetail(row)\">\n <td class=\"po-table-column-detail\" [colSpan]=\"columnCountForMasterDetail\">\n <po-table-detail\n [p-selectable]=\"selectable && !detailHideSelect\"\n [p-detail]=\"columnMasterDetail.detail\"\n [p-items]=\"row[nameColumnDetail]\"\n (p-select-row)=\"selectDetailRow($event)\"\n >\n </po-table-detail>\n </td>\n </tr>\n </tbody>\n </ng-container>\n </table>\n </cdk-virtual-scroll-viewport>\n</ng-template>\n\n<ng-template #tableTemplate>\n <table class=\"po-table\" [class.po-table-striped]=\"striped\" [class.po-table-layout-fixed]=\"hideTextOverflow\">\n <thead>\n <tr [class.po-table-header]=\"!height\">\n <th *ngIf=\"hasSelectableColumn\" class=\"po-table-column-selectable\">\n <div [class.po-table-header-fixed-inner]=\"height\">\n <po-checkbox\n name=\"selectAll\"\n *ngIf=\"!hideSelectAll\"\n (click)=\"selectAllRows()\"\n (p-change)=\"selectAllRows()\"\n [(ngModel)]=\"selectAll\"\n ></po-checkbox>\n </div>\n </th>\n\n <th\n *ngIf=\"(hasMasterDetailColumn || hasRowTemplate) && !hasRowTemplateWithArrowDirectionRight\"\n class=\"po-table-header-column po-table-header-master-detail\"\n ></th>\n\n <!-- Coluna criada para caso as a\u00E7\u00F5es fiquem no lado esquerdo -->\n <th\n *ngIf=\"!actionRight && (visibleActions.length > 1 || isSingleAction)\"\n [class.po-table-header-master-detail]=\"!isSingleAction\"\n [class.po-table-header-single-action]=\"isSingleAction\"\n ></th>\n\n <th *ngIf=\"!hasMainColumns\" #noColumnsHeader class=\"po-table-header-column po-text-center\">\n <ng-container *ngIf=\"height; then noColumnsWithHeight; else noColumnsWithoutHeight\"> </ng-container>\n </th>\n\n <th\n *ngFor=\"let column of mainColumns; let i = index; trackBy: trackBy\"\n #headersTable\n class=\"po-table-header-ellipsis\"\n [style.width]=\"column.width\"\n [style.max-width]=\"column.width\"\n [style.min-width]=\"column.width\"\n [class.po-clickable]=\"(sort && column.sortable !== false) || hasService\"\n [class.po-table-header-subtitle]=\"column.type === 'subtitle'\"\n (click)=\"sortColumn(column)\"\n >\n <div\n class=\"po-table-header-flex\"\n [class.po-table-header-fixed-inner]=\"height\"\n [class.po-table-header-flex-right]=\"column.type === 'currency' || column.type === 'number'\"\n [class.po-table-header-flex-center]=\"column.type === 'subtitle'\"\n >\n <ng-container *ngTemplateOutlet=\"contentHeaderTemplate; context: { $implicit: column }\"> </ng-container>\n </div>\n </th>\n\n <th\n *ngIf=\"hasRowTemplateWithArrowDirectionRight && (hasVisibleActions || hideColumnsManager)\"\n class=\"po-table-header-column po-table-header-master-detail\"\n ></th>\n\n <th\n *ngIf=\"hasVisibleActions && hideColumnsManager && actionRight\"\n [class.po-table-header-single-action]=\"isSingleAction\"\n [class.po-table-header-actions]=\"!isSingleAction\"\n ></th>\n\n <th\n #columnManager\n *ngIf=\"hasValidColumns && !hideColumnsManager\"\n [class.po-table-header-column-manager]=\"!isSingleAction || !actionRight\"\n [class.po-table-header-column-manager-border]=\"!height && container\"\n [class.po-table-header-single-action]=\"isSingleAction && actionRight\"\n >\n <div\n [class.po-table-header-column-manager-border]=\"height && container\"\n [class.po-table-header-column-manager-fixed-inner]=\"height\"\n [style.width.px]=\"height && visibleActions.length ? columnManager.offsetWidth : undefined\"\n >\n <button\n #columnManagerTarget\n class=\"po-table-header-column-manager-button po-icon po-icon-settings po-clickable\"\n p-tooltip-position=\"left\"\n [p-tooltip]=\"literals.columnsManager\"\n (click)=\"onOpenColumnManager()\"\n ></button>\n </div>\n </th>\n </tr>\n </thead>\n\n <tbody class=\"po-table-group-row\" *ngIf=\"!hasItems || !hasMainColumns\">\n <tr class=\"po-table-row po-table-row-no-data\">\n <td [colSpan]=\"columnCount\" class=\"po-table-no-data po-text-center\">\n <span> {{ literals.noData }} </span>\n </td>\n </tr>\n </tbody>\n\n <ng-container *ngIf=\"hasMainColumns\">\n <tbody class=\"po-table-group-row\" *ngFor=\"let row of items; let rowIndex = index; trackBy: trackBy\">\n <tr class=\"po-table-row\" [class.po-table-row-active]=\"row.$selected || (row.$selected === null && selectable)\">\n <td *ngIf=\"selectable\" class=\"po-table-column-selectable\">\n <ng-container *ngTemplateOutlet=\"singleSelect ? inputRadio : inputCheckbox; context: { $implicit: row }\">\n </ng-container>\n </td>\n\n <!-- Valida se a origem do detail \u00E9 pelo input do po-table -->\n <td\n *ngIf=\"columnMasterDetail && !hideDetail && !hasRowTemplate\"\n class=\"po-table-column-detail-toggle\"\n (click)=\"toggleDetail(row)\"\n >\n <ng-template\n [ngTemplateOutlet]=\"poTableColumnDetail\"\n [ngTemplateOutletContext]=\"{ row: row, rowIndex: rowIndex }\"\n >\n </ng-template>\n </td>\n\n <!-- Coluna com as a\u00E7\u00F5es na esquerda (padr\u00E3o)-->\n <ng-template\n *ngIf=\"!actionRight && (visibleActions.length > 1 || isSingleAction)\"\n [ngTemplateOutlet]=\"ActionsColumnTemplate\"\n [ngTemplateOutletContext]=\"{ row: row, rowIndex: rowIndex }\"\n >\n </ng-template>\n\n <!-- Valida se a origem do detail \u00E9 pela diretiva -->\n <td\n *ngIf=\"hasRowTemplate && !hasRowTemplateWithArrowDirectionRight\"\n class=\"po-table-column-detail-toggle\"\n (click)=\"toggleDetail(row)\"\n >\n <ng-template\n [ngTemplateOutlet]=\"poTableColumnDetail\"\n [ngTemplateOutletContext]=\"{ row: row, rowIndex: rowIndex }\"\n >\n </ng-template>\n </td>\n\n <td\n *ngFor=\"let column of mainColumns; let columnIndex = index; trackBy: trackBy\"\n [style.width]=\"column.width\"\n [style.max-width]=\"column.width\"\n [style.min-width]=\"column.width\"\n [class.po-table-column]=\"column.type !== 'icon'\"\n [class.po-table-column-right]=\"column.type === 'currency' || column.type === 'number'\"\n [class.po-table-column-center]=\"column.type === 'subtitle'\"\n [class.po-table-column-icons]=\"column.type === 'icon'\"\n [ngClass]=\"getClassColor(row, column)\"\n (click)=\"selectable ? selectRow(row) : 'javascript:;'\"\n >\n <div\n class=\"po-table-column-cell notranslate\"\n [class.po-table-body-ellipsis]=\"hideTextOverflow\"\n [ngSwitch]=\"column.type\"\n [p-tooltip]=\"tooltipText\"\n (mouseenter)=\"tooltipMouseEnter($event, column, row)\"\n (mouseleave)=\"tooltipMouseLeave()\"\n >\n <span *ngSwitchCase=\"'columnTemplate'\">\n <ng-container *ngTemplateOutlet=\"getTemplate(column); context: { $implicit: getCellData(row, column) }\">\n </ng-container>\n </span>\n\n <span *ngSwitchCase=\"'cellTemplate'\">\n <ng-container *ngTemplateOutlet=\"tableCellTemplate?.templateRef; context: { row: row, column: column }\">\n </ng-container>\n </span>\n\n <span *ngSwitchCase=\"'boolean'\">\n {{ getBooleanLabel(getCellData(row, column), column) }}\n </span>\n\n <span *ngSwitchCase=\"'currency'\">\n {{ getCellData(row, column) | currency: column.format:'symbol':'1.2-2' }}\n </span>\n\n <span *ngSwitchCase=\"'date'\">\n {{ getCellData(row, column) | date: column.format || 'dd/MM/yyyy' }}\n </span>\n\n <span *ngSwitchCase=\"'time'\">\n {{ getCellData(row, column) | po_time: column.format || 'HH:mm:ss.ffffff' }}\n </span>\n\n <span *ngSwitchCase=\"'dateTime'\">\n {{ getCellData(row, column) | date: column.format || 'dd/MM/yyyy HH:mm:ss' }}\n </span>\n\n <span *ngSwitchCase=\"'number'\">\n {{ formatNumber(getCellData(row, column), column.format) }}\n </span>\n\n <po-table-column-link\n *ngSwitchCase=\"'link'\"\n [p-action]=\"column.action\"\n [p-disabled]=\"checkDisabled(row, column)\"\n [p-link]=\"row[column.link]\"\n [p-row]=\"row\"\n [p-value]=\"getCellData(row, column)\"\n (click)=\"onClickLink($event, row, column)\"\n >\n </po-table-column-link>\n\n <po-table-column-icon\n *ngSwitchCase=\"'icon'\"\n [p-column]=\"column\"\n [p-icons]=\"getColumnIcons(row, column)\"\n [p-row]=\"row\"\n >\n </po-table-column-icon>\n\n <span *ngSwitchCase=\"'subtitle'\">\n <po-table-subtitle-circle [p-subtitle]=\"getSubtitleColumn(row, column)\"></po-table-subtitle-circle>\n </span>\n <span *ngSwitchCase=\"'label'\">\n <po-table-column-label [p-value]=\"getColumnLabel(row, column)\"> </po-table-column-label>\n </span>\n <span *ngSwitchDefault>{{ getCellData(row, column) }}</span>\n </div>\n </td>\n\n <td\n *ngIf=\"hasRowTemplateWithArrowDirectionRight\"\n class=\"po-table-column-detail-toggle\"\n (click)=\"toggleDetail(row)\"\n >\n <ng-template\n [ngTemplateOutlet]=\"poTableColumnDetail\"\n [ngTemplateOutletContext]=\"{ row: row, rowIndex: rowIndex }\"\n >\n </ng-template>\n </td>\n\n <!-- Coluna de a\u00E7oes na direita -->\n <ng-template\n *ngIf=\"actionRight\"\n [ngTemplateOutlet]=\"ActionsColumnTemplate\"\n [ngTemplateOutletContext]=\"{ row: row, rowIndex: rowIndex }\"\n >\n </ng-template>\n\n <!-- Coluna para n\u00E3o ficar em branco nas linhas de gerenciamento -->\n <ng-container *ngIf=\"!actionRight && (visibleActions.length > 1 || isSingleAction) && !hideColumnsManager\">\n <td class=\"po-table-row-no-data po-table-column-empty\"></td>\n </ng-container>\n\n <!-- Column Manager -->\n <td\n *ngIf=\"!hasVisibleActions && !hideColumnsManager && !hasRowTemplateWithArrowDirectionRight\"\n class=\"po-table-column\"\n ></td>\n </tr>\n\n <tr *ngIf=\"hasMainColumns && hasRowTemplate && row.$showDetail && isShowRowTemplate(row, rowIndex)\">\n <td class=\"po-table-row-template-container\" [colSpan]=\"columnCountForMasterDetail\">\n <ng-template\n [ngTemplateOutlet]=\"tableRowTemplate.templateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: row, rowIndex: rowIndex }\"\n >\n </ng-template>\n </td>\n </tr>\n\n <tr *ngIf=\"hasMainColumns && isShowMasterDetail(row)\">\n <td class=\"po-table-column-detail\" [colSpan]=\"columnCountForMasterDetail\">\n <po-table-detail\n [p-selectable]=\"selectable && !detailHideSelect\"\n [p-detail]=\"columnMasterDetail.detail\"\n [p-items]=\"row[nameColumnDetail]\"\n (p-select-row)=\"selectDetailRow($event)\"\n >\n </po-table-detail>\n </td>\n </tr>\n </tbody>\n </ng-container>\n </table>\n</ng-template>\n\n<po-popup #popup [p-actions]=\"actions\" [p-target]=\"popupTarget\"> </po-popup>\n\n<ng-template #poTableColumnDetail let-row=\"row\" let-rowIndex=\"rowIndex\">\n <span\n *ngIf=\"(containsMasterDetail(row) && !hasRowTemplate) || (isShowRowTemplate(row, rowIndex) && hasRowTemplate)\"\n class=\"po-icon po-clickable\"\n [class.po-icon-arrow-up]=\"row.$showDetail\"\n [class.po-icon-arrow-down]=\"!row.$showDetail\"\n >\n </span>\n</ng-template>\n\n<ng-template #inputRadio let-row>\n <input type=\"radio\" class=\"po-table-radio\" [class.po-table-radio-checked]=\"row.$selected\" />\n <label class=\"po-table-radio-label po-clickable\" (click)=\"selectable ? selectRow(row) : 'javascript:;'\"></label>\n</ng-template>\n\n<ng-template #inputCheckbox let-row>\n <po-checkbox\n name=\"checkbox\"\n (p-change)=\"selectable ? selectRow(row) : 'javascript:;'\"\n [(ngModel)]=\"row.$selected\"\n (click)=\"selectable ? selectRow(row) : 'javascript:;'\"\n ></po-checkbox>\n</ng-template>\n\n<ng-template #contentHeaderTemplate let-column>\n <span\n #columnHeader\n class=\"po-table-header-ellipsis\"\n [p-tooltip]=\"tooltipText\"\n (mouseenter)=\"tooltipMouseEnter($event)\"\n (mouseleave)=\"tooltipMouseLeave()\"\n >\n {{ column.label || (column.property | titlecase) }}\n </span>\n <span\n *ngIf=\"sort && column.sortable !== false\"\n [class.po-table-header-icon-unselected]=\"sortedColumn?.property !== column\"\n [class.po-table-header-icon-descending]=\"sortedColumn?.property === column && sortedColumn.ascending\"\n [class.po-table-header-icon-ascending]=\"sortedColumn?.property === column && !sortedColumn.ascending\"\n >\n </span>\n</ng-template>\n\n<ng-template #noColumnsWithHeight>\n <div class=\"po-table-header-fixed-inner\" [style.width.px]=\"noColumnsHeader?.nativeElement.offsetWidth\">\n {{ hasValidColumns ? literals.noVisibleColumn : literals.noColumns }}\n </div>\n</ng-template>\n\n<ng-template #noColumnsWithoutHeight>\n {{ hasValidColumns ? literals.noVisibleColumn : literals.noColumns }}\n</ng-template>\n\n<!-- Template de a\u00E7\u00F5es -->\n<ng-template #ActionsColumnTemplate let-row=\"row\" let-rowIndex=\"rowIndex\">\n <td *ngIf=\"isSingleAction\" class=\"po-table-column po-table-column-single-action\">\n <div\n *ngIf=\"firstAction.visible !== false\"\n class=\"po-table-single-action po-clickable\"\n [class.po-table-action-disabled]=\"firstAction.disabled ? validateTableAction(row, firstAction) : false\"\n (click)=\"executeTableAction(row, firstAction)\"\n >\n <po-icon *ngIf=\"firstAction.icon\" class=\"po-table-single-action-content\" [p-icon]=\"firstAction.icon\"></po-icon>\n {{ firstAction.label }}\n </div>\n </td>\n\n <td *ngIf=\"visibleActions.length > 1\" class=\"po-table-column-actions\">\n <span #popupTarget class=\"po-icon po-icon-more po-clickable\" (click)=\"togglePopup(row, popupTarget)\"></span>\n </td>\n</ng-template>\n\n<po-table-column-manager\n *ngIf=\"!hideColumnsManager\"\n [p-columns]=\"columns\"\n [p-max-columns]=\"maxColumns\"\n [p-target]=\"columnManagerTarget\"\n [p-last-visible-columns-selected]=\"lastVisibleColumnsSelected\"\n (p-visible-columns-change)=\"onVisibleColumnsChange($event)\"\n (p-change-visible-columns)=\"onChangeVisibleColumns($event)\"\n [p-columns-default]=\"initialColumns\"\n (p-initial-columns)=\"onColumnRestoreManager($event)\"\n>\n</po-table-column-manager>\n" }]
1919
1919
  }], function () { return [{ type: i1.PoDateService }, { type: i0.IterableDiffers }, { type: i0.Renderer2 }, { type: i2.PoLanguageService }, { type: i0.ChangeDetectorRef }, { type: i3.DecimalPipe }, { type: i4.Router }, { type: i5.PoTableService }]; }, { tableRowTemplate: [{
1920
1920
  type: ContentChild,
1921
1921
  args: [PoTableRowTemplateDirective, { static: true }]
@@ -1943,6 +1943,9 @@ PoTableComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PoTableCom
1943
1943
  }], poTableThead: [{
1944
1944
  type: ViewChild,
1945
1945
  args: ['poTableThead', { read: ElementRef, static: false }]
1946
+ }], poTableTbodyVirtual: [{
1947
+ type: ViewChild,
1948
+ args: ['poTableTbodyVirtual', { read: ElementRef, static: false }]
1946
1949
  }], actionsIconElement: [{
1947
1950
  type: ViewChildren,
1948
1951
  args: ['actionsIconElement', { read: ElementRef }]
@@ -1956,4 +1959,4 @@ PoTableComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PoTableCom
1956
1959
  type: ViewChild,
1957
1960
  args: ['columnManagerTarget']
1958
1961
  }] }); })();
1959
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tdGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9jb21wb25lbnRzL3BvLXRhYmxlL3BvLXRhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby10YWJsZS9wby10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBR0wsU0FBUyxFQUNULFlBQVksRUFFWixVQUFVLEVBS1YsU0FBUyxFQUNULFlBQVksRUFFWixlQUFlLEVBRWhCLE1BQU0sZUFBZSxDQUFDO0FBSXZCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUt2RSxPQUFPLEVBQUUsb0JBQW9CLEVBQW1CLE1BQU0sMkJBQTJCLENBQUM7QUFHbEYsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0seURBQXlELENBQUM7QUFFdEcsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sMkRBQTJELENBQUM7QUFDekcsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sK0RBQStELENBQUM7QUFDL0csT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sb0RBQW9ELENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lDakNwRyx3QkFBd0U7OztJQUQxRSx3Q0FBaUg7SUFDL0csbUdBQXdFO0lBQzFFLGlCQUFlOzs7O0lBRjJELDJEQUFzQztJQUMvRixlQUF3QztJQUF4QyxzQ0FBd0M7OztJQUtyRCwrQkFBOEM7SUFDNUMsaUNBQTBGO0lBQzVGLGlCQUFNOzs7SUFEeUMsZUFBK0I7SUFBL0IscURBQStCOzs7SUFZdEUsd0JBQXFFOzs7SUFHckUsd0JBQW1FOzs7O0lBTHZFLCtC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O2tCQUFwRSxlQUFlO21CQUFDLDhCQUE4QjtZQUVLLGVBQWU7a0JBQWxFLFNBQVM7bUJBQUMsaUJBQWlCLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO1lBQzlCLGdCQUFnQjtrQkFBbkMsU0FBUzttQkFBQyxPQUFPO1lBQzZDLGtCQUFrQjtrQkFBaEYsU0FBUzttQkFBQyxhQUFhLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7WUFDRyxtQkFBbUI7a0JBQWxGLFNBQVM7bUJBQUMsY0FBYyxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO1lBQ0UsWUFBWTtrQkFBM0UsU0FBUzttQkFBQyxjQUFjLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7WUFDRSxZQUFZO2tCQUEzRSxTQUFTO21CQUFDLGNBQWMsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtZQUVKLGtCQUFrQjtrQkFBM0UsWUFBWTttQkFBQyxvQkFBb0IsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7WUFDRixjQUFjO2tCQUFuRSxZQUFZO21CQUFDLGdCQUFnQixFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtZQUN0QixZQUFZO2tCQUF6QyxZQUFZO21CQUFDLGNBQWM7WUFvQlUsbUJBQW1CO2tCQUF4RCxTQUFTO21CQUFDLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUsIFN1YnNjcmliZXIsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkLFxuICBEb0NoZWNrLFxuICBFbGVtZW50UmVmLFxuICBJdGVyYWJsZURpZmZlcnMsXG4gIE9uRGVzdHJveSxcbiAgUXVlcnlMaXN0LFxuICBSZW5kZXJlcjIsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0NoaWxkcmVuLFxuICBWaWV3Q29udGFpbmVyUmVmLFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIFRlbXBsYXRlUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGVjaW1hbFBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuaW1wb3J0IHsgY29udmVydFRvQm9vbGVhbiB9IGZyb20gJy4uLy4uL3V0aWxzL3V0aWwnO1xuaW1wb3J0IHsgUG9EYXRlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3BvLWRhdGUvcG8tZGF0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IFBvTGFuZ3VhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcG8tbGFuZ3VhZ2UvcG8tbGFuZ3VhZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBQb1BvcHVwQ29tcG9uZW50IH0gZnJvbSAnLi4vcG8tcG9wdXAvcG8tcG9wdXAuY29tcG9uZW50JztcblxuaW1wb3J0IHsgUG9UYWJsZUFjdGlvbiB9IGZyb20gJy4vaW50ZXJmYWNlcy9wby10YWJsZS1hY3Rpb24uaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvVGFibGVCYXNlQ29tcG9uZW50LCBRdWVyeVBhcmFtc1R5cGUgfSBmcm9tICcuL3BvLXRhYmxlLWJhc2UuY29tcG9uZW50JztcbmltcG9ydCB7IFBvVGFibGVDb2x1bW4gfSBmcm9tICcuL2ludGVyZmFjZXMvcG8tdGFibGUtY29sdW1uLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQb1RhYmxlQ29sdW1uTGFiZWwgfSBmcm9tICcuL3BvLXRhYmxlLWNvbHVtbi1sYWJlbC9wby10YWJsZS1jb2x1bW4tbGFiZWwuaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvVGFibGVSb3dUZW1wbGF0ZURpcmVjdGl2ZSB9IGZyb20gJy4vcG8tdGFibGUtcm93LXRlbXBsYXRlL3BvLXRhYmxlLXJvdy10ZW1wbGF0ZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgUG9UYWJsZVN1YnRpdGxlQ29sdW1uIH0gZnJvbSAnLi9wby10YWJsZS1zdWJ0aXRsZS1mb290ZXIvcG8tdGFibGUtc3VidGl0bGUtY29sdW1uLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQb1RhYmxlQ2VsbFRlbXBsYXRlRGlyZWN0aXZlIH0gZnJvbSAnLi9wby10YWJsZS1jZWxsLXRlbXBsYXRlL3BvLXRhYmxlLWNlbGwtdGVtcGxhdGUuZGlyZWN0aXZlJztcbmltcG9ydCB7IFBvVGFibGVDb2x1bW5UZW1wbGF0ZURpcmVjdGl2ZSB9IGZyb20gJy4vcG8tdGFibGUtY29sdW1uLXRlbXBsYXRlL3BvLXRhYmxlLWNvbHVtbi10ZW1wbGF0ZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgUG9UYWJsZVJvd1RlbXBsYXRlQXJyb3dEaXJlY3Rpb24gfSBmcm9tICcuL2VudW1zL3BvLXRhYmxlLXJvdy10ZW1wbGF0ZS1hcnJvdy1kaXJlY3Rpb24uZW51bSc7XG5pbXBvcnQgeyBQb1RhYmxlU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvcG8tdGFibGUuc2VydmljZSc7XG5cbi8qKlxuICogQGRvY3NFeHRlbmRzIFBvVGFibGVCYXNlQ29tcG9uZW50XG4gKlxuICogQGV4YW1wbGVcbiAqXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tdGFibGUtYmFzaWNcIiB0aXRsZT1cIlBPIFRhYmxlIEJhc2ljXCI+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS1iYXNpYy9zYW1wbGUtcG8tdGFibGUtYmFzaWMuY29tcG9uZW50LnRzXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXRhYmxlLWJhc2ljL3NhbXBsZS1wby10YWJsZS1iYXNpYy5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLXRhYmxlLWxhYnNcIiB0aXRsZT1cIlBPIFRhYmxlIExhYnNcIj5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXRhYmxlLWxhYnMvc2FtcGxlLXBvLXRhYmxlLWxhYnMuY29tcG9uZW50LnRzXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXRhYmxlLWxhYnMvc2FtcGxlLXBvLXRhYmxlLWxhYnMuY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tdGFibGUtbGFicy9zYW1wbGUtcG8tdGFibGUtbGFicy5jb21wb25lbnQuZTJlLXNwZWMudHNcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tdGFibGUtbGFicy9zYW1wbGUtcG8tdGFibGUtbGFicy5jb21wb25lbnQucG8udHNcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tdGFibGUtbGFicy9zYW1wbGUtcG8tdGFibGUtbGFicy5zZXJ2aWNlLnRzXCI+IDwvZmlsZT5cbiAqIDwvZXhhbXBsZT5cbiAqXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tdGFibGUtd2l0aC1hcGlcIiB0aXRsZT1cIlBPIFRhYmxlIHVzaW5nIEFQSVwiPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tdGFibGUtd2l0aC1hcGkvc2FtcGxlLXBvLXRhYmxlLXdpdGgtYXBpLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS13aXRoLWFwaS9zYW1wbGUtcG8tdGFibGUtd2l0aC1hcGkuY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby10YWJsZS10cmFuc3BvcnRcIiB0aXRsZT1cIlBPIFRhYmxlIC0gVHJhbnNwb3J0XCI+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS10cmFuc3BvcnQvc2FtcGxlLXBvLXRhYmxlLXRyYW5zcG9ydC5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tdGFibGUtdHJhbnNwb3J0L3NhbXBsZS1wby10YWJsZS10cmFuc3BvcnQuY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tdGFibGUtdHJhbnNwb3J0L3NhbXBsZS1wby10YWJsZS10cmFuc3BvcnQuc2VydmljZS50c1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLXRhYmxlLWFpcmZhcmVcIiB0aXRsZT1cIlBPIFRhYmxlIC0gQWlyZmFyZVwiPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tdGFibGUtYWlyZmFyZS9zYW1wbGUtcG8tdGFibGUtYWlyZmFyZS5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tdGFibGUtYWlyZmFyZS9zYW1wbGUtcG8tdGFibGUtYWlyZmFyZS5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS1haXJmYXJlL3NhbXBsZS1wby10YWJsZS1haXJmYXJlLnNlcnZpY2UudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby10YWJsZS1jb21wb25lbnRzXCIgdGl0bGU9XCJQTyBUYWJsZSAtIFBvIEZpZWxkIENvbXBvbmVudHNcIj5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXRhYmxlLWNvbXBvbmVudHMvc2FtcGxlLXBvLXRhYmxlLWNvbXBvbmVudHMuY29tcG9uZW50LnRzXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXRhYmxlLWNvbXBvbmVudHMvc2FtcGxlLXBvLXRhYmxlLWNvbXBvbmVudHMuZW51bS50c1wiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS1jb21wb25lbnRzL3NhbXBsZS1wby10YWJsZS1jb21wb25lbnRzLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXRhYmxlLWNvbXBvbmVudHMvc2FtcGxlLXBvLXRhYmxlLWNvbXBvbmVudHMuc2VydmljZS50c1wiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS1jb21wb25lbnRzL3NhbXBsZS1wby10YWJsZS1jb21wb25lbnRzLmNvbXBvbmVudC5jc3NcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICpcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncG8tdGFibGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vcG8tdGFibGUuY29tcG9uZW50Lmh0bWwnLFxuICBwcm92aWRlcnM6IFtQb0RhdGVTZXJ2aWNlXVxufSlcbmV4cG9ydCBjbGFzcyBQb1RhYmxlQ29tcG9uZW50IGV4dGVuZHMgUG9UYWJsZUJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBEb0NoZWNrLCBPbkRlc3Ryb3kge1xuICBAQ29udGVudENoaWxkKFBvVGFibGVSb3dUZW1wbGF0ZURpcmVjdGl2ZSwgeyBzdGF0aWM6IHRydWUgfSkgdGFibGVSb3dUZW1wbGF0ZTogUG9UYWJsZVJvd1RlbXBsYXRlRGlyZWN0aXZlO1xuICBAQ29udGVudENoaWxkKFBvVGFibGVDZWxsVGVtcGxhdGVEaXJlY3RpdmUpIHRhYmxlQ2VsbFRlbXBsYXRlOiBQb1RhYmxlQ2VsbFRlbXBsYXRlRGlyZWN0aXZlO1xuXG4gIEBDb250ZW50Q2hpbGRyZW4oUG9UYWJsZUNvbHVtblRlbXBsYXRlRGlyZWN0aXZlKSB0YWJsZUNvbHVtblRlbXBsYXRlczogUXVlcnlMaXN0PFBvVGFibGVDb2x1bW5UZW1wbGF0ZURpcmVjdGl2ZT47XG5cbiAgQFZpZXdDaGlsZCgnbm9Db2x1bW5zSGVhZGVyJywgeyByZWFkOiBFbGVtZW50UmVmIH0pIG5vQ29sdW1uc0hlYWRlcjtcbiAgQFZpZXdDaGlsZCgncG9wdXAnKSBwb1BvcHVwQ29tcG9uZW50OiBQb1BvcHVwQ29tcG9uZW50O1xuICBAVmlld0NoaWxkKCd0YWJsZUZvb3RlcicsIHsgcmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiBmYWxzZSB9KSB0YWJsZUZvb3RlckVsZW1lbnQ7XG4gIEBWaWV3Q2hpbGQoJ3RhYmxlV3JhcHBlcicsIHsgcmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiBmYWxzZSB9KSB0YWJsZVdyYXBwZXJFbGVtZW50O1xuICBAVmlld0NoaWxkKCdwb1RhYmxlVGJvZHknLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogZmFsc2UgfSkgcG9UYWJsZVRib2R5O1xuICBAVmlld0NoaWxkKCdwb1RhYmxlVGhlYWQnLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogZmFsc2UgfSkgcG9UYWJsZVRoZWFkO1xuXG4gIEBWaWV3Q2hpbGRyZW4oJ2FjdGlvbnNJY29uRWxlbWVudCcsIHsgcmVhZDogRWxlbWVudFJlZiB9KSBhY3Rpb25zSWNvbkVsZW1lbnQ6IFF1ZXJ5TGlzdDxhbnk+O1xuICBAVmlld0NoaWxkcmVuKCdhY3Rpb25zRWxlbWVudCcsIHsgcmVhZDogRWxlbWVudFJlZiB9KSBhY3Rpb25zRWxlbWVudDogUXVlcnlMaXN0PGFueT47XG4gIEBWaWV3Q2hpbGRyZW4oJ2hlYWRlcnNUYWJsZScpIGhlYWRlcnNUYWJsZTogUXVlcnlMaXN0PGFueT47XG5cbiAgaGVpZ2h0VGFibGVDb250YWluZXI6IG51bWJlcjtcbiAgcG9wdXBUYXJnZXQ7XG4gIHRhYmxlT3BhY2l0eTogbnVtYmVyID0gMDtcbiAgdG9vbHRpcFRleHQ6IHN0cmluZztcbiAgbGFzdFZpc2libGVDb2x1bW5zU2VsZWN0ZWQ6IEFycmF5PFBvVGFibGVDb2x1bW4+O1xuXG4gIHByaXZhdGUgX2NvbHVtbk1hbmFnZXJUYXJnZXQ6IEVsZW1lbnRSZWY7XG4gIHByaXZhdGUgZGlmZmVyO1xuICBwcml2YXRlIGZvb3RlckhlaWdodDtcbiAgcHJpdmF0ZSBpbml0aWFsaXplZCA9IGZhbHNlO1xuICBwcml2YXRlIHRpbWVvdXRSZXNpemU7XG4gIHByaXZhdGUgdmlzaWJsZUVsZW1lbnQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBzY3JvbGxFdmVudCQ6IE9ic2VydmFibGU8YW55PjtcbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb25TY3JvbGxFdmVudDogU3Vic2NyaXB0aW9uO1xuXG4gIHByaXZhdGUgY2xpY2tMaXN0ZW5lcjogKCkgPT4gdm9pZDtcbiAgcHJpdmF0ZSByZXNpemVMaXN0ZW5lcjogKCkgPT4gdm9pZDtcblxuICBAVmlld0NoaWxkKCdjb2x1bW5NYW5hZ2VyVGFyZ2V0Jykgc2V0IGNvbHVtbk1hbmFnZXJUYXJnZXQodmFsdWU6IEVsZW1lbnRSZWYpIHtcbiAgICB0aGlzLl9jb2x1bW5NYW5hZ2VyVGFyZ2V0ID0gdmFsdWU7XG5cbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIGdldCBjb2x1bW5NYW5hZ2VyVGFyZ2V0KCkge1xuICAgIHJldHVybiB0aGlzLl9jb2x1bW5NYW5hZ2VyVGFyZ2V0O1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcG9EYXRlOiBQb0RhdGVTZXJ2aWNlLFxuICAgIGRpZmZlcnM6IEl0ZXJhYmxlRGlmZmVycyxcbiAgICByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIHBvTGFuZ3VhZ2VTZXJ2aWNlOiBQb0xhbmd1YWdlU2VydmljZSxcbiAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIGRlY2ltYWxQaXBlOiBEZWNpbWFsUGlwZSxcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgZGVmYXVsdFNlcnZpY2U6IFBvVGFibGVTZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKHBvRGF0ZSwgcG9MYW5ndWFnZVNlcnZpY2UsIGRlZmF1bHRTZXJ2aWNlKTtcblxuICAgIHRoaXMuZGlmZmVyID0gZGlmZmVycy5maW5kKFtdKS5jcmVhdGUobnVsbCk7XG5cbiAgICAvLyBUT0RPOiAjNTU1MCBhbyByZW1vdmVyIGVzdGUgbGlzdGVuZXIsIG5vIHBvcnRhbCwgcXVhbmRvIGFzIGNvbHVuYXMgZm9yZW0gZml4YXMgbsOjbyBzb2ZyZW1cbiAgICAvLyBhbHRlcmHDp8OjbyBkZSBsYXJndXJhLCBwb2lzIG8gbmdEb0NoZWNrIG7Do28gw6kgZXhlY3V0YWRvLlxuICAgIHRoaXMuY2xpY2tMaXN0ZW5lciA9IHJlbmRlcmVyLmxpc3RlbignZG9jdW1lbnQnLCAnY2xpY2snLCAoKSA9PiB7fSk7XG5cbiAgICB0aGlzLnJlc2l6ZUxpc3RlbmVyID0gcmVuZGVyZXIubGlzdGVuKCd3aW5kb3cnLCAncmVzaXplJywgKGV2ZW50OiBhbnkpID0+IHtcbiAgICAgIHRoaXMuZGVib3VuY2VSZXNpemUoKTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldCBoYXNSb3dUZW1wbGF0ZVdpdGhBcnJvd0RpcmVjdGlvblJpZ2h0KCkge1xuICAgIHJldHVybiB0aGlzLnRhYmxlUm93VGVtcGxhdGU/LnRhYmxlUm93VGVtcGxhdGVBcnJvd0RpcmVjdGlvbiA9PT0gUG9UYWJsZVJvd1RlbXBsYXRlQXJyb3dEaXJlY3Rpb24uUmlnaHQ7XG4gIH1cblxuICBnZXQgY29sdW1uQ291bnQoKSB7XG4gICAgY29uc3QgY29sdW1uQ291bnQgPVxuICAgICAgdGhpcy5tYWluQ29sdW1ucy5sZW5ndGggK1xuICAgICAgKHRoaXMuYWN0aW9ucy5sZW5ndGggPiAwID8gMSA6IDApICtcbiAgICAgICh0aGlzLnNlbGVjdGFibGUgPyAxIDogMCkgK1xuICAgICAgKCF0aGlzLmhpZGVEZXRhaWwgJiYgdGhpcy5jb2x1bW5NYXN0ZXJEZXRhaWwgIT09IHVuZGVmaW5lZCA/IDEgOiAwKTtcblxuICAgIHJldHVybiBjb2x1bW5Db3VudCB8fCAxO1xuICB9XG5cbiAgZ2V0IGNvbHVtbkNvdW50Rm9yTWFzdGVyRGV0YWlsKCkge1xuICAgIC8vIGNhc28gdGl2ZXIgYcOnw7VlcyBzZXLDoSB1dGlsaXphZG8gYSBzdWEgY29sdW5hIHBhcmEgZXhpYmlyIG8gY29sdW1uTWFuYWdlclxuICAgIGNvbnN0IGNvbHVtbk1hbmFnZXIgPSB0aGlzLmFjdGlvbnMubGVuZ3RoID8gMCA6IDE7XG5cbiAgICByZXR1cm4gdGhpcy5tYWluQ29sdW1ucy5sZW5ndGggKyAxICsgKHRoaXMuYWN0aW9ucy5sZW5ndGggPiAwID8gMSA6IDApICsgKHRoaXMuc2VsZWN0YWJsZSA/IDEgOiAwKSArIGNvbHVtbk1hbmFnZXI7XG4gIH1cblxuICBnZXQgZGV0YWlsSGlkZVNlbGVjdCgpIHtcbiAgICBjb25zdCBtYXN0ZXJEZXRhaWwgPSB0aGlzLmNvbHVtbk1hc3RlckRldGFpbDtcbiAgICByZXR1cm4gbWFzdGVyRGV0YWlsICYmIG1hc3RlckRldGFpbC5kZXRhaWwgPyBtYXN0ZXJEZXRhaWwuZGV0YWlsLmhpZGVTZWxlY3QgOiBmYWxzZTtcbiAgfVxuXG4gIGdldCBoYXNWaXNpYmxlQWN0aW9ucygpIHtcbiAgICByZXR1cm4gISF0aGlzLnZpc2libGVBY3Rpb25zLmxlbmd0aDtcbiAgfVxuXG4gIGdldCBmaXJzdEFjdGlvbigpOiBQb1RhYmxlQWN0aW9uIHtcbiAgICByZXR1cm4gdGhpcy52aXNpYmxlQWN0aW9ucyAmJiB0aGlzLnZpc2libGVBY3Rpb25zWzBdO1xuICB9XG5cbiAgZ2V0IGhhc0Zvb3RlcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXNJdGVtcyAmJiB0aGlzLmhhc1Zpc2libGVTdWJ0aXRsZUNvbHVtbnM7XG4gIH1cblxuICBnZXQgaGFzTWFzdGVyRGV0YWlsQ29sdW1uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLmhhc01haW5Db2x1bW5zICYmIHRoaXMuaGFzSXRlbXMgJiYgIXRoaXMuaGlkZURldGFpbCAmJiAhISh0aGlzLmNvbHVtbk1hc3RlckRldGFpbCB8fCB0aGlzLmhhc1Jvd1RlbXBsYXRlKVxuICAgICk7XG4gIH1cblxuICBnZXQgaGFzUm93VGVtcGxhdGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy50YWJsZVJvd1RlbXBsYXRlO1xuICB9XG5cbiAgZ2V0IGhhc1NlbGVjdGFibGVDb2x1bW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0YWJsZSAmJiB0aGlzLmhhc0l0ZW1zICYmIHRoaXMuaGFzTWFpbkNvbHVtbnM7XG4gIH1cblxuICBnZXQgaGFzVmFsaWRDb2x1bW5zKCkge1xuICAgIHJldHVybiAhIXRoaXMudmFsaWRDb2x1bW5zLmxlbmd0aDtcbiAgfVxuXG4gIGdldCBoYXNWaXNpYmxlU3VidGl0bGVDb2x1bW5zKCkge1xuICAgIHJldHVybiB0aGlzLnN1YnRpdGxlQ29sdW1ucy5zb21lKGNvbHVtbiA9PiBjb2x1bW4udmlzaWJsZSAhPT0gZmFsc2UpO1xuICB9XG5cbiAgZ2V0IGlzU2luZ2xlQWN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLnZpc2libGVBY3Rpb25zLmxlbmd0aCA9PT0gMTtcbiAgfVxuXG4gIGdldCB2aXNpYmxlQWN0aW9ucygpIHtcbiAgICByZXR1cm4gdGhpcy5hY3Rpb25zICYmIHRoaXMuYWN0aW9ucy5maWx0ZXIoYWN0aW9uID0+IGFjdGlvbiAmJiBhY3Rpb24udmlzaWJsZSAhPT0gZmFsc2UpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMuaW5pdGlhbGl6ZWQgPSB0cnVlO1xuICB9XG5cbiAgc2hvd01vcmVJbmZpbml0ZVNjcm9sbCh7IHRhcmdldCB9KTogdm9pZCB7XG4gICAgY29uc3Qgc2Nyb2xsUG9zaXRpb24gPSB0YXJnZXQub2Zmc2V0SGVpZ2h0ICsgdGFyZ2V0LnNjcm9sbFRvcDtcbiAgICBpZiAoIXRoaXMuc2hvd01vcmVEaXNhYmxlZCAmJiBzY3JvbGxQb3NpdGlvbiA+PSB0YXJnZXQuc2Nyb2xsSGVpZ2h0ICogKHRoaXMuaW5maW5pdGVTY3JvbGxEaXN0YW5jZSAvIDExMCkpIHtcbiAgICAgIHRoaXMub25TaG93TW9yZSgpO1xuICAgIH1cbiAgfVxuXG4gIG5nRG9DaGVjaygpIHtcbiAgICB0aGlzLmNoZWNrQ2hhbmdlc0l0ZW1zKCk7XG4gICAgdGhpcy52ZXJpZnlDYWxjdWxhdGVIZWlnaHRUYWJsZUNvbnRhaW5lcigpO1xuICAgIC8vIFBlcm1pdGUgcXVlIG9zIGNhYmXDp2FsaG9zIHNlamFtIGNhbGN1bGFkb3MgbmEgcHJpbWVpcmEgdmV6IHF1ZSBvIGNvbXBvbmVudGUgdG9ybmEtc2Ugdmlzw612ZWwsXG4gICAgLy8gZXZpdGFuZG8gY29tIGlzc28sIHByb2JsZW1hcyBjb20gVGFicyBvdSBEaXZzIHF1ZSBpbmljaWVtIGVzY29uZGlkYXMuXG4gICAgaWYgKHRoaXMudGFibGVXcmFwcGVyRWxlbWVudD8ubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aCAmJiAhdGhpcy52aXNpYmxlRWxlbWVudCAmJiB0aGlzLmluaXRpYWxpemVkKSB7XG4gICAgICB0aGlzLmRlYm91bmNlUmVzaXplKCk7XG4gICAgICB0aGlzLmNoZWNrSW5maW5pdGVTY3JvbGwoKTtcbiAgICAgIHRoaXMudmlzaWJsZUVsZW1lbnQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMucmVtb3ZlTGlzdGVuZXJzKCk7XG4gIH1cblxuICAvKipcbiAgICogTcOpdG9kbyByZXNwb25zw6F2ZWwgcG9yIHJlYWxpemFyIGJ1c2NhIG5vIHNlcnZpw6dvIGRlIGRhZG9zIHBvZGVuZG8gaW5mb3JtYXIgZmlsdHJvcyBlIGNvbSBvIHJldG9ybm8sIGF0dWFsaXphIGEgdGFiZWxhLlxuICAgKlxuICAgKiBDYXNvIG7Do28gc2VqYSBpbmZvcm1hZG8gcGFyw6JtZXRybywgbmFkYSBzZXLDoSBhZGljaW9uYWRvIGFvIEdFVCwgY29uZm9ybWUgYWJhaXhvOlxuICAgKiBgYGBcbiAgICogdXJsICsgP3BhZ2U9MSZwYWdlU2l6ZT0xMFxuICAgKiBgYGBcbiAgICogPiBPYnM6IG9zIHBhcsOibWV0cm9zIGBwYWdlYCBlIGBwYWdlU2l6ZWAgc2VtcHJlIHNlcsOjbyBjaGFtYWRvcyBpbmRlcGVuZGVudGUgZGUgc2VyIGVudmlhZG9zIG91dHJvcyBwYXLDom1ldHJvcy5cbiAgICpcbiAgICogQ2FzbyBzZWphbSBpbmZvcm1hZG9zIG9zIHBhcsOibWV0cm9zIGB7IG5hbWU6ICdKT0hOJywgYWdlOiAnMjMnIH1gLCB0b2RvcyBzZXLDo28gYWRpY2lvbmFkb3MgYW8gR0VULCBjb25mb3JtZSBhYmFpeG86XG4gICAqIGBgYFxuICAgKiB1cmwgKyA/cGFnZT0xJnBhZ2VTaXplPTEwJm5hbWU9Sk9ITiZhZ2U9MjNcbiAgICogYGBgXG4gICAqXG4gICAqIEBwYXJhbSB7IHsga2V5OiB2YWx1ZSB9IH0gcXVlcnlQYXJhbXMgRm9ybWF0byBkbyBvYmpldG8gYSBzZXIgZW52aWFkby5cbiAgICogPiBQb2RlIHNlciB1dGlsaXphZGEgcXVhbHF1ZXIgc3RyaW5nIGNvbW8ga2V5LCBlIHF1YWxxdWVyIHN0cmluZyBvdSBudW1iZXIgY29tbyB2YWx1ZS5cbiAgICovXG4gIGFwcGx5RmlsdGVycyhxdWVyeVBhcmFtcz86IHsgW2tleTogc3RyaW5nXTogUXVlcnlQYXJhbXNUeXBlIH0pIHtcbiAgICB0aGlzLnBhZ2UgPSAxO1xuICAgIHRoaXMuaW5pdGlhbGl6ZURhdGEocXVlcnlQYXJhbXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIE3DqXRvZG8gcXVlIGNvbGFwc2EgdW1hIGxpbmhhIGNvbSBkZXRhbGhlIHF1YW5kbyBleGVjdXRhZGEuXG4gICAqXG4gICAqIEBwYXJhbSB7IG51bWJlciB9IHJvd0luZGV4IMONbmRpY2UgZGEgbGluaGEgcXVlIHNlcsOhIGNvbGFwc2FkYS5cbiAgICogPiBBbyByZW9yZGVuYXIgb3MgZGFkb3MgZGEgdGFiZWxhLCBvIHZhbG9yIGNvbnRpZG8gbmVzdGUgw61uZGljZSBzZXLDoSBhbHRlcmFkbyBjb25mb3JtZSBhIG9yZGVuYcOnw6NvLlxuICAgKi9cbiAgY29sbGFwc2Uocm93SW5kZXg6IG51bWJlcikge1xuICAgIHRoaXMuc2V0U2hvd0RldGFpbChyb3dJbmRleCwgZmFsc2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIE3DqXRvZG8gcXVlIGV4cGFuZGUgdW1hIGxpbmhhIGNvbSBkZXRhbGhlIHF1YW5kbyBleGVjdXRhZGEuXG4gICAqXG4gICAqIEBwYXJhbSB7IG51bWJlciB9IHJvd0luZGV4IMONbmRpY2UgZGEgbGluaGEgcXVlIHNlcsOhIGV4cGFuZGlkYS5cbiAgICogPiBBbyByZW9yZGVuYXIgb3MgZGFkb3MgZGEgdGFiZWxhLCBvIHZhbG9yIGNvbnRpZG8gbmVzdGUgw61uZGljZSBzZXLDoSBhbHRlcmFkbyBjb25mb3JtZSBhIG9yZGVuYcOnw6NvLlxuICAgKi9cbiAgZXhwYW5kKHJvd0luZGV4OiBudW1iZXIpIHtcbiAgICB0aGlzLnNldFNob3dEZXRhaWwocm93SW5kZXgsIHRydWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldG9ybmEgYXMgbGluaGFzIGRvIGBwby10YWJsZWAgcXVlIGVzdMOjbyBzZWxlY2lvbmFkYXMuXG4gICAqL1xuICBnZXRTZWxlY3RlZFJvd3MoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXRlbXMuZmlsdGVyKGl0ZW0gPT4gaXRlbS4kc2VsZWN0ZWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldG9ybmEgYXMgbGluaGFzIGRvIGBwby10YWJsZWAgcXVlIG7Do28gZXN0w6NvIHNlbGVjaW9uYWRhcy5cbiAgICovXG4gIGdldFVuc2VsZWN0ZWRSb3dzKCkge1xuICAgIHJldHVybiB0aGlzLml0ZW1zLmZpbHRlcihpdGVtID0+ICFpdGVtLiRzZWxlY3RlZCk7XG4gIH1cblxuICAvKipcbiAgICogRGVzbWFyY2EgYXMgbGluaGFzIHF1ZSBlc3TDo28gc2VsZWNpb25hZGFzLlxuICAgKi9cbiAgdW5zZWxlY3RSb3dzKCkge1xuICAgIGNvbnN0IGNvbHVtbkRldGFpbCA9IHRoaXMubmFtZUNvbHVtbkRldGFpbDtcblxuICAgIHRoaXMuaXRlbXMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgIGNvbnN0IGRldGFpbEl0ZW1zID0gY29sdW1uRGV0YWlsID8gaXRlbVtjb2x1bW5EZXRhaWxdIDogbnVsbDtcblxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZGV0YWlsSXRlbXMpKSB7XG4gICAgICAgIGRldGFpbEl0ZW1zLmZvckVhY2goZGV0YWlsSXRlbSA9PiB7XG4gICAgICAgICAgZGV0YWlsSXRlbS4kc2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGl0ZW0uJHNlbGVjdGVkID0gZmFsc2U7XG4gICAgfSk7XG5cbiAgICB0aGlzLnNlbGVjdEFsbCA9IGZhbHNlO1xuICB9XG5cbiAgY2hlY2tEaXNhYmxlZChyb3csIGNvbHVtbjogUG9UYWJsZUNvbHVtbikge1xuICAgIHJldHVybiBjb2x1bW4uZGlzYWJsZWQgPyBjb2x1bW4uZGlzYWJsZWQocm93KSA6IGZhbHNlO1xuICB9XG5cbiAgY29udGFpbnNNYXN0ZXJEZXRhaWwocm93KSB7XG4gICAgcmV0dXJuIHJvd1t0aGlzLm5hbWVDb2x1bW5EZXRhaWxdICYmIHJvd1t0aGlzLm5hbWVDb2x1bW5EZXRhaWxdLmxlbmd0aDtcbiAgfVxuXG4gIGV4ZWN1dGVUYWJsZUFjdGlvbihyb3c6IGFueSwgdGFibGVBY3Rpb246IGFueSkge1xuICAgIGlmICghcm93LmRpc2FibGVkICYmICF0aGlzLnZhbGlkYXRlVGFibGVBY3Rpb24ocm93LCB0YWJsZUFjdGlvbikpIHtcbiAgICAgIHRhYmxlQWN0aW9uLmFjdGlvbihyb3cpO1xuICAgICAgdGhpcy50b2dnbGVSb3dBY3Rpb24ocm93KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRGVzbWFyY2EgdW1hIGxpbmhhIHF1ZSBlc3TDoSBzZWxlY2lvbmFkYS5cbiAgICovXG4gIHVuc2VsZWN0Um93SXRlbShpdGVtZm46IHsgW2tleTogc3RyaW5nXTogYW55IH0gfCAoKGl0ZW0pID0+IGJvb2xlYW4pKSB7XG4gICAgdGhpcy50b2dnbGVTZWxlY3QoaXRlbWZuLCBmYWxzZSk7XG5cbiAgICBpZiAodGhpcy5pdGVtcy5ldmVyeShpdGVtID0+ICFpdGVtLiRzZWxlY3RlZCkpIHtcbiAgICAgIHRoaXMuc2VsZWN0QWxsID0gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0QWxsID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2VsZWNpb25hIHVtYSBsaW5oYSBkbyAncG8tdGFibGUnLlxuICAgKi9cbiAgc2VsZWN0Um93SXRlbShpdGVtZm46IHsgW2tleTogc3RyaW5nXTogYW55IH0gfCAoKGl0ZW0pID0+IGJvb2xlYW4pKSB7XG4gICAgdGhpcy50b2dnbGVTZWxlY3QoaXRlbWZuLCB0cnVlKTtcblxuICAgIGlmICh0aGlzLml0ZW1zLmV2ZXJ5KGl0ZW0gPT4gaXRlbS4kc2VsZWN0ZWQpKSB7XG4gICAgICB0aGlzLnNlbGVjdEFsbCA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0QWxsID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICBmb3JtYXROdW1iZXIodmFsdWU6IGFueSwgZm9ybWF0OiBzdHJpbmcpIHtcbiAgICBpZiAoIWZvcm1hdCkge1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmRlY2ltYWxQaXBlLnRyYW5zZm9ybSh2YWx1ZSwgZm9ybWF0KTtcbiAgfVxuXG4gIGdldENlbGxEYXRhKHJvdzogYW55LCBjb2x1bW46IFBvVGFibGVDb2x1bW4pOiBhbnkge1xuICAgIGNvbnN0IGFycmF5UHJvcGVydHkgPSBjb2x1bW4ucHJvcGVydHkuc3BsaXQoJy4nKTtcbiAgICBpZiAoYXJyYXlQcm9wZXJ0eS5sZW5ndGggPiAxKSB7XG4gICAgICBjb25zdCBuZXN0ZWRQcm9wZXJ0aWVzID0gYXJyYXlQcm9wZXJ0eTtcbiAgICAgIGxldCB2YWx1ZTogYW55ID0gcm93O1xuICAgICAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBuZXN0ZWRQcm9wZXJ0aWVzKSB7XG4gICAgICAgIHZhbHVlID0gdmFsdWVbcHJvcGVydHldIHx8IHZhbHVlW3Byb3BlcnR5XSA9PT0gMCA/IHZhbHVlW3Byb3BlcnR5XSA6ICcnO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gcm93W2NvbHVtbi5wcm9wZXJ0eV07XG4gICAgfVxuICB9XG5cbiAgZ2V0Qm9vbGVhbkxhYmVsKHJvd1ZhbHVlOiBhbnksIGNvbHVtbkJvb2xlYW46IFBvVGFibGVDb2x1bW4pOiBzdHJpbmcge1xuICAgIGlmIChyb3dWYWx1ZSB8fCByb3dWYWx1ZSA9PT0gZmFsc2UgfHwgcm93VmFsdWUgPT09IDApIHtcbiAgICAgIHJvd1ZhbHVlID0gY29udmVydFRvQm9vbGVhbihyb3dWYWx1ZSk7XG5cbiAgICAgIGlmIChjb2x1bW5Cb29sZWFuLmJvb2xlYW4pIHtcbiAgICAgICAgcmV0dXJuIHJvd1ZhbHVlID8gY29sdW1uQm9vbGVhbi5ib29sZWFuLnRydWVMYWJlbCB8fCAnU2ltJyA6IGNvbHVtbkJvb2xlYW4uYm9vbGVhbi5mYWxzZUxhYmVsIHx8ICdOw6NvJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiByb3dWYWx1ZSA/ICdTaW0nIDogJ07Do28nO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByb3dWYWx1ZTtcbiAgfVxuXG4gIGdldENvbHVtbkljb25zKHJvdzogYW55LCBjb2x1bW46IFBvVGFibGVDb2x1bW4pIHtcbiAgICBjb25zdCByb3dJY29ucyA9IHRoaXMuZ2V0Q2VsbERhdGEocm93LCBjb2x1bW4pO1xuXG4gICAgaWYgKGNvbHVtbi5pY29ucykge1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkocm93SWNvbnMpKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1lcmdlQ3VzdG9tSWNvbnMocm93SWNvbnMsIGNvbHVtbi5pY29ucyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdGhpcy5maW5kQ3VzdG9tSWNvbihyb3dJY29ucywgY29sdW1uKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcm93SWNvbnM7XG4gIH1cblxuICBnZXRDb2x1bW5MYWJlbChyb3c6IGFueSwgY29sdW1uTGFiZWw6IFBvVGFibGVDb2x1bW4pOiBQb1RhYmxlQ29sdW1uTGFiZWwge1xuICAgIHJldHVybiBjb2x1bW5MYWJlbC5sYWJlbHMuZmluZChsYWJlbEl0ZW0gPT4gdGhpcy5nZXRDZWxsRGF0YShyb3csIGNvbHVtbkxhYmVsKSA9PT0gbGFiZWxJdGVtLnZhbHVlKTtcbiAgfVxuXG4gIGdldFN1YnRpdGxlQ29sdW1uKHJvdzogYW55LCBzdWJ0aXRsZUNvbHVtbjogUG9UYWJsZUNvbHVtbik6IFBvVGFibGVTdWJ0aXRsZUNvbHVtbiB7XG4gICAgcmV0dXJuIHN1YnRpdGxlQ29sdW1uLnN1YnRpdGxlcy5maW5kKHN1YnRpdGxlSXRlbSA9PiB0aGlzLmdldENlbGxEYXRhKHJvdywgc3VidGl0bGVDb2x1bW4pID09PSBzdWJ0aXRsZUl0ZW0udmFsdWUpO1xuICB9XG5cbiAgaXNTaG93TWFzdGVyRGV0YWlsKHJvdykge1xuICAgIHJldHVybiAoXG4gICAgICAhdGhpcy5oaWRlRGV0YWlsICYmXG4gICAgICB0aGlzLm5hbWVDb2x1bW5EZXRhaWwgJiZcbiAgICAgIHJvdy4kc2hvd0RldGFpbCAmJlxuICAgICAgdGhpcy5jb250YWluc01hc3RlckRldGFpbChyb3cpICYmXG4gICAgICAhdGhpcy5oYXNSb3dUZW1wbGF0ZVxuICAgICk7XG4gIH1cblxuICBpc1Nob3dSb3dUZW1wbGF0ZShyb3csIGluZGV4OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy50YWJsZVJvd1RlbXBsYXRlICYmIHRoaXMudGFibGVSb3dUZW1wbGF0ZS5wb1RhYmxlUm93VGVtcGxhdGVTaG93KSB7XG4gICAgICByZXR1cm4gdGhpcy50YWJsZVJvd1RlbXBsYXRlLnBvVGFibGVSb3dUZW1wbGF0ZVNob3cocm93LCBpbmRleCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBvbkNsaWNrTGluayhldmVudCwgcm93LCBjb2x1bW46IFBvVGFibGVDb2x1bW4pIHtcbiAgICBpZiAoIXRoaXMuY2hlY2tEaXNhYmxlZChyb3csIGNvbHVtbikpIHtcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH1cbiAgfVxuXG4gIG9uQ2hhbmdlVmlzaWJsZUNvbHVtbnMoY29sdW1uczogQXJyYXk8c3RyaW5nPikge1xuICAgIHRoaXMuY2hhbmdlVmlzaWJsZUNvbHVtbnMuZW1pdChjb2x1bW5zKTtcbiAgfVxuXG4gIG9uQ29sdW1uUmVzdG9yZU1hbmFnZXIodmFsdWU6IEFycmF5PFN0cmluZz4pIHtcbiAgICB0aGlzLmNvbHVtblJlc3RvcmVNYW5hZ2VyLmVtaXQodmFsdWUpO1xuICB9XG5cbiAgb25WaXNpYmxlQ29sdW1uc0NoYW5nZShjb2x1bW5zOiBBcnJheTxQb1RhYmxlQ29sdW1uPikge1xuICAgIHRoaXMuY29sdW1ucyA9IGNvbHVtbnM7XG5cbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHRvb2x0aXBNb3VzZUVudGVyKGV2ZW50OiBhbnksIGNvbHVtbj86IFBvVGFibGVDb2x1bW4sIHJvdz86IGFueSkge1xuICAgIHRoaXMudG9vbHRpcFRleHQgPSB1bmRlZmluZWQ7XG5cbiAgICBpZiAodGhpcy5oaWRlVGV4dE92ZXJmbG93ICYmIGV2ZW50LnRhcmdldC5vZmZzZXRXaWR0aCA8IGV2ZW50LnRhcmdldC5zY3JvbGxXaWR0aCAmJiBldmVudC50YXJnZXQuaW5uZXJUZXh0LnRyaW0oKSkge1xuICAgICAgcmV0dXJuICh0aGlzLnRvb2x0aXBUZXh0ID0gZXZlbnQudGFyZ2V0LmlubmVyVGV4dCk7XG4gICAgfVxuXG4gICAgaWYgKGNvbHVtbikge1xuICAgICAgdGhpcy5jaGVja2luZ0lmQ29sdW1uSGFzVG9vbHRpcChjb2x1bW4sIHJvdyk7XG4gICAgfVxuICB9XG5cbiAgdG9vbHRpcE1vdXNlTGVhdmUoKSB7XG4gICAgdGhpcy50b29sdGlwVGV4dCA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHRvZ2dsZVBvcHVwKHJvdywgdGFyZ2V0UmVmKSB7XG4gICAgdGhpcy5wb3B1cFRhcmdldCA9IHRhcmdldFJlZjtcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcblxuICAgIHRoaXMucG9Qb3B1cENvbXBvbmVudC50b2dnbGUocm93KTtcbiAgfVxuXG4gIHRyYWNrQnkoaW5kZXg6IG51bWJlcikge1xuICAgIHJldHVybiBpbmRleDtcbiAgfVxuXG4gIHZhbGlkYXRlVGFibGVBY3Rpb24ocm93OiBhbnksIHRhYmxlQWN0aW9uOiBhbnkpIHtcbiAgICBpZiAodHlwZW9mIHRhYmxlQWN0aW9uLmRpc2FibGVkID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXR1cm4gdGFibGVBY3Rpb24uZGlzYWJsZWQocm93KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRhYmxlQWN0aW9uLmRpc2FibGVkO1xuICAgIH1cbiAgfVxuXG4gIG9uT3BlbkNvbHVtbk1hbmFnZXIoKSB7XG4gICAgdGhpcy5sYXN0VmlzaWJsZUNvbHVtbnNTZWxlY3RlZCA9IFsuLi50aGlzLmNvbHVtbnNdO1xuICB9XG5cbiAgLyoqXG4gICAqIE3DqXRvZG8gcXVlIHJlbW92ZSB1bSBpdGVtIGRhIHRhYmVsYS5cbiAgICpcbiAgICogQHBhcmFtIHsgbnVtYmVyIHwgeyBrZXk6IHZhbHVlIH0gfSBpdGVtIMONbmRpY2UgZGEgbGluaGEgb3UgbyBpdGVtIHF1ZSBzZXLDoSByZW1vdmlkby5cbiAgICogPiBBbyByZW1vdmVyIG8gaXRlbSwgYSBsaW5oYSBxdWUgbyByZXByZXNlbnRhIHNlcsOhIGV4Y2x1w61kYSBkYSB0YWJlbGEuXG4gICAqL1xuICByZW1vdmVJdGVtKGl0ZW06IG51bWJlciB8IHsgW2tleTogc3RyaW5nXTogYW55IH0pIHtcbiAgICBpZiAoaXRlbSBpbnN0YW5jZW9mIE9iamVjdCkge1xuICAgICAgdGhpcy5pdGVtcyA9IHRoaXMuaXRlbXMuZmlsdGVyKGZpbHRlckl0ZW0gPT4gZmlsdGVySXRlbSAhPT0gaXRlbSk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgaXRlbSA9PT0gJ251bWJlcicpIHtcbiAgICAgIGNvbnN0IGluZGV4OiBudW1iZXIgPSBpdGVtO1xuICAgICAgdGhpcy5pdGVtcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBNw6l0b2RvIHF1ZSBhdHVhbGl6YSB1bSBpdGVtIGRhIHRhYmVsYS5cbiAgICpcbiAgICogQHBhcmFtIHsgbnVtYmVyIHwgeyBrZXk6IHZhbHVlIH0gfSBpdGVtIMONbmRpY2UgZGEgbGluaGEgb3UgbyBpdGVtIHF1ZSBzZXLDoSBhdHVhbGl6YWRvLlxuICAgKiBAcGFyYW0geyB7IGtleTogdmFsdWUgfSB9IHVwZGF0ZWRJdGVtIEl0ZW0gcXVlIGZvaSBhdHVhbGl6YWRvLlxuICAgKiA+IEFvIGF0dWFsaXphciBvIGl0ZW0sIGEgaW5mb3JtYcOnw6NvIHNlcsOhIGFsdGVyYWRhIG5hIHRhYmVsYS5cbiAgICovXG4gIHVwZGF0ZUl0ZW0oaXRlbTogbnVtYmVyIHwgeyBba2V5OiBzdHJpbmddOiBhbnkgfSwgdXBkYXRlZEl0ZW06IHsgW2tleTogc3RyaW5nXTogYW55IH0pIHtcbiAgICBpZiAodHlwZW9mIGl0ZW0gPT09ICdudW1iZXInKSB7XG4gICAgICB0aGlzLml0ZW1zLnNwbGljZShpdGVtLCAxLCB1cGRhdGVkSXRlbSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5pdGVtcy5maW5kSW5kZXgoaW5kZXhJdGVtID0+IGluZGV4SXRlbSA9PT0gaXRlbSk7XG4gICAgICB0aGlzLml0ZW1zLnNwbGljZShpbmRleCwgMSwgdXBkYXRlZEl0ZW0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXRUZW1wbGF0ZShjb2x1bW46IFBvVGFibGVDb2x1bW4pOiBUZW1wbGF0ZVJlZjxhbnk+IHtcbiAgICBjb25zdCB0ZW1wbGF0ZTogUG9UYWJsZUNvbHVtblRlbXBsYXRlRGlyZWN0aXZlID0gdGhpcy50YWJsZUNvbHVtblRlbXBsYXRlcy5maW5kKFxuICAgICAgdGFibGVDb2x1bW5UZW1wbGF0ZSA9PiB0YWJsZUNvbHVtblRlbXBsYXRlLnRhcmdldFByb3BlcnR5ID09PSBjb2x1bW4ucHJvcGVydHlcbiAgICApO1xuICAgIGlmICghdGVtcGxhdGUpIHtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgYE7Do28gZm9pIHBvc3PDrXZlbCBlbmNvbnRyYXIgbyB0ZW1wbGF0ZSBwYXJhIGEgY29sdW5hOiAke2NvbHVtbi5wcm9wZXJ0eX0sIHBvciBnZW50aWxlemEgaW5mb3JtZSBhIHByb3ByaWVkYWRlIFtwLXByb3BlcnR5XWBcbiAgICAgICk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIHRlbXBsYXRlLnRlbXBsYXRlUmVmO1xuICB9XG5cbiAgcHVibGljIHN5bmNyb25pemVIb3Jpem9udGFsU2Nyb2xsKCk6IHZvaWQge1xuICAgIHRoaXMucG9UYWJsZVRoZWFkLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsTGVmdCA9IHRoaXMucG9UYWJsZVRib2R5Lm5hdGl2ZUVsZW1lbnQuc2Nyb2xsTGVmdDtcbiAgfVxuXG4gIHByb3RlY3RlZCBjYWxjdWxhdGVIZWlnaHRUYWJsZUNvbnRhaW5lcihoZWlnaHQpIHtcbiAgICBjb25zdCB2YWx1ZSA9IHBhcnNlRmxvYXQoaGVpZ2h0KTtcbiAgICB0aGlzLmhlaWdodFRhYmxlQ29udGFpbmVyID0gdmFsdWUgPyB2YWx1ZSAtIHRoaXMuZ2V0SGVpZ2h0VGFibGVGb290ZXIoKSA6IHVuZGVmaW5lZDtcbiAgICB0aGlzLnNldFRhYmxlT3BhY2l0eSgxKTtcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjYWxjdWxhdGVXaWR0aEhlYWRlcnMoKSB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5oZWlnaHQpIHtcbiAgICAgICAgdGhpcy5oZWFkZXJzVGFibGUuZm9yRWFjaChoZWFkZXIgPT4ge1xuICAgICAgICAgIGNvbnN0IGRpdkhlYWRlciA9IGhlYWRlci5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5wby10YWJsZS1oZWFkZXItZml4ZWQtaW5uZXInKTtcbiAgICAgICAgICBpZiAoZGl2SGVhZGVyKSB7XG4gICAgICAgICAgICBkaXZIZWFkZXIuc3R5bGUud2lkdGggPSBgJHtoZWFkZXIubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aH1weGA7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjaGVja0luZmluaXRlU2Nyb2xsKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmhhc0luZmluaXRlU2Nyb2xsKCkpIHtcbiAgICAgIGlmICh0aGlzLnBvVGFibGVUYm9keS5uYXRpdmVFbGVtZW50LnNjcm9sbEhlaWdodCA+IHRoaXMuaGVpZ2h0KSB7XG4gICAgICAgIHRoaXMuaW5jbHVkZUluZmluaXRlU2Nyb2xsKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmluZmluaXRlU2Nyb2xsID0gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGVja0NoYW5nZXNJdGVtcygpIHtcbiAgICBjb25zdCBjaGFuZ2VzSXRlbXMgPSB0aGlzLmRpZmZlci5kaWZmKHRoaXMuaXRlbXMpO1xuXG4gICAgaWYgKGNoYW5nZXNJdGVtcyAmJiB0aGlzLnNlbGVjdEFsbCkge1xuICAgICAgdGhpcy5zZWxlY3RBbGwgPSBudWxsO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2VzSXRlbXMgJiYgIXRoaXMuaGFzQ29sdW1ucyAmJiB0aGlzLmhhc0l0ZW1zKSB7XG4gICAgICB0aGlzLmNvbHVtbnMgPSB0aGlzLmdldERlZmF1bHRDb2x1bW5zKHRoaXMuaXRlbXNbMF0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY2hlY2tpbmdJZkNvbHVtbkhhc1Rvb2x0aXAoY29sdW1uLCByb3cpIHtcbiAgICBpZiAoY29sdW1uLnR5cGUgPT09ICdsaW5rJyAmJiBjb2x1bW4udG9vbHRpcCAmJiAhdGhpcy5jaGVja0Rpc2FibGVkKHJvdywgY29sdW1uKSkge1xuICAgICAgcmV0dXJuICh0aGlzLnRvb2x0aXBUZXh0ID0gY29sdW1uLnRvb2x0aXApO1xuICAgIH1cblxuICAgIGlmIChjb2x1bW4udHlwZSA9PT0gJ2xhYmVsJykge1xuICAgICAgY29uc3QgY29sdW1uTGFiZWwgPSB0aGlzLmdldENvbHVtbkxhYmVsKHJvdywgY29sdW1uKTtcbiAgICAgIHJldHVybiAodGhpcy50b29sdGlwVGV4dCA9IGNvbHVtbkxhYmVsPy50b29sdGlwKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGRlYm91bmNlUmVzaXplKCkge1xuICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVvdXRSZXNpemUpO1xuICAgIHRoaXMudGltZW91dFJlc2l6ZSA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5jYWxjdWxhdGVXaWR0aEhlYWRlcnMoKTtcblxuICAgICAgLy8gc2hvdyB0aGUgdGFibGVcbiAgICAgIHRoaXMuc2V0VGFibGVPcGFjaXR5KDEpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBmaW5kQ3VzdG9tSWNvbihyb3dJY29ucywgY29sdW1uOiBQb1RhYmxlQ29sdW1uKSB7XG4gICAgY29uc3QgY3VzdG9tSWNvbiA9IGNvbHVtbi5pY29ucy5maW5kKGljb24gPT4gcm93SWNvbnMgPT09IGljb24udmFsdWUpO1xuICAgIHJldHVybiBjdXN0b21JY29uID8gW2N1c3RvbUljb25dIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRIZWlnaHRUYWJsZUZvb3RlcigpIHtcbiAgICByZXR1cm4gdGhpcy50YWJsZUZvb3RlckVsZW1lbnQgPyB0aGlzLnRhYmxlRm9vdGVyRWxlbWVudC5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodCA6IDA7XG4gIH1cblxuICBwcml2YXRlIGhhc0luZmluaXRlU2Nyb2xsKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLmluZmluaXRlU2Nyb2xsICYmXG4gICAgICB0aGlzLmhhc0l0ZW1zICYmXG4gICAgICAhdGhpcy5zdWJzY3JpcHRpb25TY3JvbGxFdmVudCAmJlxuICAgICAgdGhpcy5oZWlnaHQgJiZcbiAgICAgIHRoaXMucG9UYWJsZVRib2R5Lm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSGVpZ2h0XG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5jbHVkZUluZmluaXRlU2Nyb2xsKCk6IHZvaWQge1xuICAgIHRoaXMuc2Nyb2xsRXZlbnQkID0gdGhpcy5kZWZhdWx0U2VydmljZS5zY3JvbGxMaXN0ZW5lcih0aGlzLnBvVGFibGVUYm9keS5uYXRpdmVFbGVtZW50KTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvblNjcm9sbEV2ZW50ID0gdGhpcy5zY3JvbGxFdmVudCQuc3Vic2NyaWJlKGV2ZW50ID0+IHRoaXMuc2hvd01vcmVJbmZpbml0ZVNjcm9sbChldmVudCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBtZXJnZUN1c3RvbUljb25zKHJvd0ljb25zOiBBcnJheTxzdHJpbmc+LCBjdXN0b21JY29uczogQXJyYXk8YW55Pikge1xuICAgIGNvbnN0IG1lcmdlZEljb25zID0gW107XG5cbiAgICByb3dJY29ucy5mb3JFYWNoKGNvbHVtblZhbHVlID0+IHtcbiAgICAgIGNvbnN0IGZvdW5kQ3VzdG9tSWNvbiA9IGN1c3RvbUljb25zLmZpbmQoXG4gICAgICAgIGN1c3RvbUljb24gPT4gY29sdW1uVmFsdWUgPT09IGN1c3RvbUljb24uaWNvbiB8fCBjb2x1bW5WYWx1ZSA9PT0gY3VzdG9tSWNvbi52YWx1ZVxuICAgICAgKTtcbiAgICAgIGZvdW5kQ3VzdG9tSWNvbiA/IG1lcmdlZEljb25zLnB1c2goZm91bmRDdXN0b21JY29uKSA6IG1lcmdlZEljb25zLnB1c2goY29sdW1uVmFsdWUpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIG1lcmdlZEljb25zO1xuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVMaXN0ZW5lcnMoKSB7XG4gICAgaWYgKHRoaXMucmVzaXplTGlzdGVuZXIpIHtcbiAgICAgIHRoaXMucmVzaXplTGlzdGVuZXIoKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jbGlja0xpc3RlbmVyKSB7XG4gICAgICB0aGlzLmNsaWNrTGlzdGVuZXIoKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5zdWJzY3JpcHRpb25TY3JvbGxFdmVudCkge1xuICAgICAgdGhpcy5zdWJzY3JpcHRpb25TY3JvbGxFdmVudC51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0VGFibGVPcGFjaXR5KHZhbHVlOiBudW1iZXIpIHtcbiAgICB0aGlzLnRhYmxlT3BhY2l0eSA9IHZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSB2ZXJpZnlDaGFuZ2VIZWlnaHRJbkZvb3RlcigpIHtcbiAgICByZXR1cm4gdGhpcy5mb290ZXJIZWlnaHQgIT09IHRoaXMuZ2V0SGVpZ2h0VGFibGVGb290ZXIoKTtcbiAgfVxuXG4gIHByaXZhdGUgdmVyaWZ5Q2FsY3VsYXRlSGVpZ2h0VGFibGVDb250YWluZXIoKSB7XG4gICAgaWYgKHRoaXMuaGVpZ2h0ICYmIHRoaXMudmVyaWZ5Q2hhbmdlSGVpZ2h0SW5Gb290ZXIoKSkge1xuICAgICAgdGhpcy5mb290ZXJIZWlnaHQgPSB0aGlzLmdldEhlaWdodFRhYmxlRm9vdGVyKCk7XG4gICAgICB0aGlzLmNhbGN1bGF0ZUhlaWdodFRhYmxlQ29udGFpbmVyKHRoaXMuaGVpZ2h0KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHRvZ2dsZVNlbGVjdChjb21wYXJlLCBzZWxlY3RWYWx1ZTogYm9vbGVhbikge1xuICAgIGlmICh0eXBlb2YgY29tcGFyZSAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhpcy5pdGVtcy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICBpZiAoaXRlbSA9PT0gY29tcGFyZSkge1xuICAgICAgICAgIGl0ZW0uJHNlbGVjdGVkID0gc2VsZWN0VmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLml0ZW1zLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgIGlmIChjb21wYXJlKGl0ZW0pKSB7XG4gICAgICAgICAgaXRlbS4kc2VsZWN0ZWQgPSBzZWxlY3RWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG4iLCI8cG8tY29udGFpbmVyICpuZ0lmPVwiY29udGFpbmVyOyBlbHNlIHRhYmxlQ29udGFpbmVyVGVtcGxhdGVcIiBwLW5vLXBhZGRpbmcgW3Atbm8tc2hhZG93XT1cImNvbnRhaW5lciA9PT0gJ2JvcmRlcidcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRhYmxlQ29udGFpbmVyVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbjwvcG8tY29udGFpbmVyPlxuXG48bmctdGVtcGxhdGUgI3RhYmxlQ29udGFpbmVyVGVtcGxhdGU+XG4gIDxkaXYgW2NsYXNzLnBvLXRhYmxlLWNvbnRhaW5lci1yZWxhdGl2ZV09XCJsb2FkaW5nXCI+XG4gICAgPGRpdiAqbmdJZj1cImxvYWRpbmdcIiBjbGFzcz1cInBvLXRhYmxlLW92ZXJsYXlcIj5cbiAgICAgIDxwby1sb2FkaW5nIGNsYXNzPVwicG8tdGFibGUtb3ZlcmxheS1jb250ZW50XCIgW3AtdGV4dF09XCJsaXRlcmFscy5sb2FkaW5nRGF0YVwiPjwvcG8tbG9hZGluZz5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJwby10YWJsZS1tYWluLWNvbnRhaW5lclwiPlxuICAgICAgPGRpdlxuICAgICAgICAjdGFibGVXcmFwcGVyXG4gICAgICAgIGNsYXNzPVwicG8tdGFibGUtd3JhcHBlclwiXG4gICAgICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItZml4ZWQtY29sdW1ucy1waXhlbHNdPVwiYWxsQ29sdW1uc1dpZHRoUGl4ZWxzXCJcbiAgICAgICAgW3N0eWxlLm9wYWNpdHldPVwidGFibGVPcGFjaXR5XCJcbiAgICAgID5cbiAgICAgICAgPGRpdiAqbmdJZj1cImhlaWdodFwiIGNsYXNzPVwicG8tdGFibGUtY29udGFpbmVyXCIgW3N0eWxlLmhlaWdodC5weF09XCJoZWlnaHRUYWJsZUNvbnRhaW5lclwiPlxuICAgICAgICAgIDxkaXYgI3BvVGFibGVUaGVhZCBjbGFzcz1cInBvLXRhYmxlLWhlYWRlci1maXhlZCBwby10YWJsZS1oZWFkZXJcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0YWJsZUhlYWRlclRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiAjcG9UYWJsZVRib2R5IGNsYXNzPVwicG8tdGFibGUtY29udGFpbmVyLWZpeGVkLWlubmVyXCIgKHNjcm9sbCk9XCJzeW5jcm9uaXplSG9yaXpvbnRhbFNjcm9sbCgpXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGFibGVCb2R5VGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiAqbmdJZj1cIiFoZWlnaHRcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGFibGVUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwicG8tdGFibGUtZm9vdGVyXCIgKm5nSWY9XCJoYXNGb290ZXJcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjb2x1bW4gb2Ygc3VidGl0bGVDb2x1bW5zOyB0cmFja0J5OiB0cmFja0J5XCI+XG4gICAgICA8cG8tdGFibGUtc3VidGl0bGUtZm9vdGVyIFtwLWxpdGVyYWxzXT1cImxpdGVyYWxzXCIgW3Atc3VidGl0bGVzXT1cImNvbHVtbi5zdWJ0aXRsZXNcIj4gPC9wby10YWJsZS1zdWJ0aXRsZS1mb290ZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPGRpdlxuICAqbmdJZj1cIiFpbmZpbml0ZVNjcm9sbFwiXG4gIGNsYXNzPVwicG8tcm93IHBvLXRhYmxlLWZvb3Rlci1zaG93LW1vcmVcIlxuICBbY2xhc3MucG8taW52aXNpYmxlXT1cInNob3dNb3JlLm9ic2VydmVycy5sZW5ndGggPT09IDAgJiYgIWhhc1NlcnZpY2VcIlxuICAjdGFibGVGb290ZXJcbj5cbiAgPHBvLWJ1dHRvblxuICAgIGNsYXNzPVwicG8tb2Zmc2V0LXhsLTQgcG8tb2Zmc2V0LWxnLTQgcG8tb2Zmc2V0LW1kLTMgcG8tbGctNCBwby1tZC02XCJcbiAgICBbcC1kaXNhYmxlZF09XCJzaG93TW9yZURpc2FibGVkXCJcbiAgICBbcC1sYWJlbF09XCJsaXRlcmFscy5sb2FkTW9yZURhdGFcIlxuICAgIFtwLWxvYWRpbmddPVwibG9hZGluZ1Nob3dNb3JlXCJcbiAgICAocC1jbGljayk9XCJvblNob3dNb3JlKClcIlxuICA+XG4gIDwvcG8tYnV0dG9uPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjdGFibGVIZWFkZXJUZW1wbGF0ZT5cbiAgPHRhYmxlIGNsYXNzPVwicG8tdGFibGVcIiBbY2xhc3MucG8tdGFibGUtc3RyaXBlZF09XCJzdHJpcGVkXCIgW2NsYXNzLnBvLXRhYmxlLWxheW91dC1maXhlZF09XCJoaWRlVGV4dE92ZXJmbG93XCI+XG4gICAgPHRoZWFkPlxuICAgICAgPHRyIFtjbGFzcy5wby10YWJsZS1oZWFkZXJdPVwiIWhlaWdodFwiPlxuICAgICAgICA8dGggKm5nSWY9XCJoYXNTZWxlY3RhYmxlQ29sdW1uXCIgY2xhc3M9XCJwby10YWJsZS1jb2x1bW4tc2VsZWN0YWJsZVwiPlxuICAgICAgICAgIDxkaXYgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1maXhlZC1pbm5lcl09XCJoZWlnaHRcIj5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAqbmdJZj1cIiFoaWRlU2VsZWN0QWxsXCJcbiAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJwby10YWJsZS1jaGVja2JveFwiXG4gICAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1jaGVja2JveC1jaGVja2VkXT1cInNlbGVjdEFsbFwiXG4gICAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1jaGVja2JveC1pbmRldGVybWluYXRlXT1cInNlbGVjdEFsbCA9PT0gbnVsbFwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGxhYmVsICpuZ0lmPVwiIWhpZGVTZWxlY3RBbGxcIiBjbGFzcz1cInBvLXRhYmxlLWNoZWNrYm94LWxhYmVsIHBvLWNsaWNrYWJsZVwiIChjbGljayk9XCJzZWxlY3RBbGxSb3dzKClcIj5cbiAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvdGg+XG5cbiAgICAgICAgPHRoXG4gICAgICAgICAgKm5nSWY9XCIoaGFzTWFzdGVyRGV0YWlsQ29sdW1uIHx8IGhhc1Jvd1RlbXBsYXRlKSAmJiAhaGFzUm93VGVtcGxhdGVXaXRoQXJyb3dEaXJlY3Rpb25SaWdodFwiXG4gICAgICAgICAgY2xhc3M9XCJwby10YWJsZS1oZWFkZXItY29sdW1uIHBvLXRhYmxlLWhlYWRlci1tYXN0ZXItZGV0YWlsXCJcbiAgICAgICAgPjwvdGg+XG5cbiAgICAgICAgPCEtLSBDb2x1bmEgY3JpYWRhIHBhcmEgY2FzbyBhcyBhw6fDtWVzIGZpcXVlbSBubyBsYWRvIGVzcXVlcmRvIC0tPlxuICAgICAgICA8dGhcbiAgICAgICAgICAqbmdJZj1cIiFhY3Rpb25SaWdodCAmJiAodmlzaWJsZUFjdGlvbnMubGVuZ3RoID4gMSB8fCBpc1NpbmdsZUFjdGlvbilcIlxuICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItbWFzdGVyLWRldGFpbF09XCIhaXNTaW5nbGVBY3Rpb25cIlxuICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItc2luZ2xlLWFjdGlvbl09XCJpc1NpbmdsZUFjdGlvblwiXG4gICAgICAgID48L3RoPlxuXG4gICAgICAgIDx0aCAqbmdJZj1cIiFoYXNNYWluQ29sdW1uc1wiICNub0NvbHVtbnNIZWFkZXIgY2xhc3M9XCJwby10YWJsZS1oZWFkZXItY29sdW1uIHBvLXRleHQtY2VudGVyXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhlaWdodDsgdGhlbiBub0NvbHVtbnNXaXRoSGVpZ2h0OyBlbHNlIG5vQ29sdW1uc1dpdGhvdXRIZWlnaHRcIj4gPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvdGg+XG5cbiAgICAgICAgPHRoXG4gICAgICAgICAgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiBtYWluQ29sdW1uczsgbGV0IGkgPSBpbmRleDsgdHJhY2tCeTogdHJhY2tCeVwiXG4gICAgICAgICAgI2hlYWRlcnNUYWJsZVxuICAgICAgICAgIGNsYXNzPVwicG8tdGFibGUtaGVhZGVyLWVsbGlwc2lzXCJcbiAgICAgICAgICBbc3R5bGUud2lkdGhdPVwiY29sdW1uLndpZHRoXCJcbiAgICAgICAgICBbc3R5bGUubWF4LXdpZHRoXT1cImNvbHVtbi53aWR0aFwiXG4gICAgICAgICAgW3N0eWxlLm1pbi13aWR0aF09XCJjb2x1bW4ud2lkdGhcIlxuICAgICAgICAgIFtjbGFzcy5wby1jbGlja2FibGVdPVwiKHNvcnQgJiYgY29sdW1uLnNvcnRhYmxlICE9PSBmYWxzZSkgfHwgaGFzU2VydmljZVwiXG4gICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1zdWJ0aXRsZV09XCJjb2x1bW4udHlwZSA9PT0gJ3N1YnRpdGxlJ1wiXG4gICAgICAgICAgKGNsaWNrKT1cInNvcnRDb2x1bW4oY29sdW1uKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cInBvLXRhYmxlLWhlYWRlci1mbGV4XCJcbiAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItZml4ZWQtaW5uZXJdPVwiaGVpZ2h0XCJcbiAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItZmxleC1yaWdodF09XCJjb2x1bW4udHlwZSA9PT0gJ2N1cnJlbmN5JyB8fCBjb2x1bW4udHlwZSA9PT0gJ251bWJlcidcIlxuICAgICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1mbGV4LWNlbnRlcl09XCJjb2x1bW4udHlwZSA9PT0gJ3N1YnRpdGxlJ1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbnRlbnRIZWFkZXJUZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IGNvbHVtbiB9XCI+IDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3RoPlxuXG4gICAgICAgIDx0aFxuICAgICAgICAgICpuZ0lmPVwiaGFzUm93VGVtcGxhdGVXaXRoQXJyb3dEaXJlY3Rpb25SaWdodCAmJiAoaGFzVmlzaWJsZUFjdGlvbnMgfHwgaGlkZUNvbHVtbnNNYW5hZ2VyKVwiXG4gICAgICAgICAgY2xhc3M9XCJwby10YWJsZS1oZWFkZXItY29sdW1uIHBvLXRhYmxlLWhlYWRlci1tYXN0ZXItZGV0YWlsXCJcbiAgICAgICAgPjwvdGg+XG5cbiAgICAgICAgPHRoXG4gICAgICAgICAgKm5nSWY9XCJoYXNWaXNpYmxlQWN0aW9ucyAmJiBoaWRlQ29sdW1uc01hbmFnZXIgJiYgYWN0aW9uUmlnaHRcIlxuICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItc2luZ2xlLWFjdGlvbl09XCJpc1NpbmdsZUFjdGlvblwiXG4gICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1hY3Rpb25zXT1cIiFpc1NpbmdsZUFjdGlvblwiXG4gICAgICAgID48L3RoPlxuXG4gICAgICAgIDx0aFxuICAgICAgICAgICNjb2x1bW5NYW5hZ2VyXG4gICAgICAgICAgKm5nSWY9XCJoYXNWYWxpZENvbHVtbnMgJiYgIWhpZGVDb2x1bW5zTWFuYWdlclwiXG4gICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1jb2x1bW4tbWFuYWdlcl09XCIhaXNTaW5nbGVBY3Rpb24gfHwgIWFjdGlvblJpZ2h0XCJcbiAgICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLWNvbHVtbi1tYW5hZ2VyLWJvcmRlcl09XCIhaGVpZ2h0ICYmIGNvbnRhaW5lclwiXG4gICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1zaW5nbGUtYWN0aW9uXT1cImlzU2luZ2xlQWN0aW9uICYmIGFjdGlvblJpZ2h0XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItY29sdW1uLW1hbmFnZXItYm9yZGVyXT1cImhlaWdodCAmJiBjb250YWluZXJcIlxuICAgICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1jb2x1bW4tbWFuYWdlci1maXhlZC1pbm5lcl09XCJoZWlnaHRcIlxuICAgICAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cImhlaWdodCAmJiB2aXNpYmxlQWN0aW9ucy5sZW5ndGggPyBjb2x1bW5NYW5hZ2VyLm9mZnNldFdpZHRoIDogdW5kZWZpbmVkXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICNjb2x1bW5NYW5hZ2VyVGFyZ2V0XG4gICAgICAgICAgICAgIGNsYXNzPVwicG8tdGFibGUtaGVhZGVyLWNvbHVtbi1tYW5hZ2VyLWJ1dHRvbiBwby1pY29uIHBvLWljb24tc2V0dGluZ3MgcG8tY2xpY2thYmxlXCJcbiAgICAgICAgICAgICAgcC10b29sdGlwLXBvc2l0aW9uPVwibGVmdFwiXG4gICAgICAgICAgICAgIFtwLXRvb2x0aXBdPVwibGl0ZXJhbHMuY29sdW1uc01hbmFnZXJcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwib25PcGVuQ29sdW1uTWFuYWdlcigpXCJcbiAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC90aD5cbiAgICAgIDwvdHI+XG4gICAgPC90aGVhZD5cbiAgPC90YWJsZT5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjdGFibGVCb2R5VGVtcGxhdGU+XG4gIDx0YWJsZSBjbGFzcz1cInBvLXRhYmxlXCIgW2NsYXNzLnBvLXRhYmxlLXN0cmlwZWRdPVwic3RyaXBlZFwiIFtjbGFzcy5wby10YWJsZS1sYXlvdXQtZml4ZWRdPVwiaGlkZVRleHRPdmVyZmxvd1wiPlxuICAgIDx0Ym9keSBjbGFzcz1cInBvLXRhYmxlLWdyb3VwLXJvd1wiICpuZ0lmPVwiIWhhc0l0ZW1zIHx8ICFoYXNNYWluQ29sdW1uc1wiPlxuICAgICAgPHRyIGNsYXNzPVwicG8tdGFibGUtcm93IHBvLXRhYmxlLXJvdy1uby1kYXRhXCI+XG4gICAgICAgIDx0ZCBbY29sU3Bhbl09XCJjb2x1bW5Db3VudFwiIGNsYXNzPVwicG8tdGFibGUtbm8tZGF0YSBwby10ZXh0LWNlbnRlclwiPlxuICAgICAgICAgIDxzcGFuPiB7eyBsaXRlcmFscy5ub0RhdGEgfX0gPC9zcGFuPlxuICAgICAgICA8L3RkPlxuICAgICAgPC90cj5cbiAgICA8L3Rib2R5PlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhhc01haW5Db2x1bW5zXCI+XG4gICAgICA8dGJvZHkgY2xhc3M9XCJwby10YWJsZS1ncm91cC1yb3dcIiAqbmdGb3I9XCJsZXQgcm93IG9mIGl0ZW1zOyBsZXQgcm93SW5kZXggPSBpbmRleDsgdHJhY2tCeTogdHJhY2tCeVwiPlxuICAgICAgICA8dHIgY2xhc3M9XCJwby10YWJsZS1yb3dcIiBbY2xhc3MucG8tdGFibGUtcm93LWFjdGl2ZV09XCJyb3cuJHNlbGVjdGVkIHx8IChyb3cuJHNlbGVjdGVkID09PSBudWxsICYmIHNlbGVjdGFibGUpXCI+XG4gICAgICAgICAgPHRkICpuZ0lmPVwic2VsZWN0YWJsZVwiIGNsYXNzPVwicG8tdGFibGUtY29sdW1uLXNlbGVjdGFibGVcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzaW5nbGVTZWxlY3QgPyBpbnB1dFJhZGlvIDogaW5wdXRDaGVja2JveDsgY29udGV4dDogeyAkaW1wbGljaXQ6IHJvdyB9XCI+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L3RkPlxuXG4gICAgICAgICAgPCEtLSBWYWxpZGEgc2UgYSBvcmlnZW0gZG8gZGV0YWlsIMOpIHBlbG8gaW5wdXQgZG8gcG8tdGFibGUgLS0+XG4gICAgICAgICAgPHRkXG4gICAgICAgICAgICAqbmdJZj1cImNvbHVtbk1hc3RlckRldGFpbCAmJiAhaGlkZURldGFpbCAmJiAhaGFzUm93VGVtcGxhdGVcIlxuICAgICAgICAgICAgY2xhc3M9XCJwby10YWJsZS1jb2x1bW4tZGV0YWlsLXRvZ2dsZVwiXG4gICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlRGV0YWlsKHJvdylcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJwb1RhYmxlQ29sdW1uRGV0YWlsXCJcbiAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgcm93OiByb3csIHJvd0luZGV4OiByb3dJbmRleCB9XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC90ZD5cblxuICAgICAgICAgIDwhLS0gQ29sdW5hIGNvbSBhcyBhw6fDtWVzIG5hIGVzcXVlcmRhIChwYWRyw6NvKS0tPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgKm5nSWY9XCIhYWN0aW9uUmlnaHQgJiYgKHZpc2libGVBY3Rpb25zLmxlbmd0aCA+IDEgfHwgaXNTaW5nbGVBY3Rpb24pXCJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIkFjdGlvbnNDb2x1bW5UZW1wbGF0ZVwiXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyByb3c6IHJvdywgcm93SW5kZXg6IHJvd0luZGV4IH1cIlxuICAgICAgICAgID5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICAgICAgPCEtLSBWYWxpZGEgc2UgYSBvcmlnZW0gZG8gZGV0YWlsIMOpIHBlbGEgZGlyZXRpdmEgLS0+XG4gICAgICAgICAgPHRkXG4gICAgICAgICAgICAqbmdJZj1cImhhc1Jvd1RlbXBsYXRlICYmICFoYXNSb3dUZW1wbGF0ZVdpdGhBcnJvd0RpcmVjdGlvblJpZ2h0XCJcbiAgICAgICAgICAgIGNsYXNzPVwicG8tdGFibGUtY29sdW1uLWRldGFpbC10b2dnbGVcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZURldGFpbChyb3cpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwicG9UYWJsZUNvbHVtbkRldGFpbFwiXG4gICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IHJvdzogcm93LCByb3dJbmRleDogcm93SW5kZXggfVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvdGQ+XG5cbiAgICAgICAgICA8dGRcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgbWFpbkNvbHVtbnM7IGxldCBjb2x1bW5JbmRleCA9IGluZGV4OyB0cmFja0J5OiB0cmFja0J5XCJcbiAgICAgICAgICAgIFtzdHlsZS53aWR0aF09XCJjb2x1bW4ud2lkdGhcIlxuICAgICAgICAgICAgW3N0eWxlLm1heC13aWR0aF09XCJjb2x1bW4ud2lkdGhcIlxuICAgICAgICAgICAgW3N0eWxlLm1pbi13aWR0aF09XCJjb2x1bW4ud2lkdGhcIlxuICAgICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWNvbHVtbl09XCJjb2x1bW4udHlwZSAhPT0gJ2ljb24nXCJcbiAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1jb2x1bW4tcmlnaHRdPVwiY29sdW1uLnR5cGUgPT09ICdjdXJyZW5jeScgfHwgY29sdW1uLnR5cGUgPT09ICdudW1iZXInXCJcbiAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1jb2x1bW4tY2VudGVyXT1cImNvbHVtbi50eXBlID09PSAnc3VidGl0bGUnXCJcbiAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1jb2x1bW4taWNvbnNdPVwiY29sdW1uLnR5cGUgPT09ICdpY29uJ1wiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJnZXRDbGFzc0NvbG9yKHJvdywgY29sdW1uKVwiXG4gICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0YWJsZSA/IHNlbGVjdFJvdyhyb3cpIDogJ2phdmFzY3JpcHQ6OydcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJwby10YWJsZS1jb2x1bW4tY2VsbCBub3RyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1ib2R5LWVsbGlwc2lzXT1cImhpZGVUZXh0T3ZlcmZsb3dcIlxuICAgICAgICAgICAgICBbbmdTd2l0Y2hdPVwiY29sdW1uLnR5cGVcIlxuICAgICAgICAgICAgICBbcC10b29sdGlwXT1cInRvb2x0aXBUZXh0XCJcbiAgICAgICAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cIm5vQ29sdW1uc0hlYWRlcj8ubmF0aXZlRWxlbWVudC5wYXJlbnRFbGVtZW50Py5vZmZzZXRXaWR0aFwiXG4gICAgICAgICAgICAgIChtb3VzZWVudGVyKT1cInRvb2x0aXBNb3VzZUVudGVyKCRldmVudCwgY29sdW1uLCByb3cpXCJcbiAgICAgICAgICAgICAgKG1vdXNlbGVhdmUpPVwidG9vbHRpcE1vdXNlTGVhdmUoKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInY29sdW1uVGVtcGxhdGUnXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImdldFRlbXBsYXRlKGNvbHVtbik7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBnZXRDZWxsRGF0YShyb3csIGNvbHVtbikgfVwiPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidjZWxsVGVtcGxhdGUnXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRhYmxlQ2VsbFRlbXBsYXRlPy50ZW1wbGF0ZVJlZjsgY29udGV4dDogeyByb3c6IHJvdywgY29sdW1uOiBjb2x1bW4gfVwiPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidib29sZWFuJ1wiPlxuICAgICAgICAgICAgICAgIHt7IGdldEJvb2xlYW5MYWJlbChnZXRDZWxsRGF0YShyb3csIGNvbHVtbiksIGNvbHVtbikgfX1cbiAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInY3VycmVuY3knXCI+XG4gICAgICAgICAgICAgICAge3sgZ2V0Q2VsbERhdGEocm93LCBjb2x1bW4pIHwgY3VycmVuY3k6IGNvbHVtbi5mb3JtYXQ6J3N5bWJvbCc6JzEuMi0yJyB9fVxuICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidkYXRlJ1wiPlxuICAgICAgICAgICAgICAgIHt7IGdldENlbGxEYXRhKHJvdywgY29sdW1uKSB8IGRhdGU6IGNvbHVtbi5mb3JtYXQgfHwgJ2RkL01NL3l5eXknIH19XG4gICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ3RpbWUnXCI+XG4gICAgICAgICAgICAgICAge3sgZ2V0Q2VsbERhdGEocm93LCBjb2x1bW4pIHwgcG9fdGltZTogY29sdW1uLmZvcm1hdCB8fCAnSEg6bW06c3MuZmZmZmZmJyB9fVxuICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidkYXRlVGltZSdcIj5cbiAgICAgICAgICAgICAgICB7eyBnZXRDZWxsRGF0YShyb3csIGNvbHVtbikgfCBkYXRlOiBjb2x1bW4uZm9ybWF0IHx8ICdkZC9NTS95eXl5IEhIOm1tOnNzJyB9fVxuICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidudW1iZXInXCI+XG4gICAgICAgICAgICAgICAge3sgZm9ybWF0TnVtYmVyKGdldENlbGxEYXRhKHJvdywgY29sdW1uKSwgY29sdW1uLmZvcm1hdCkgfX1cbiAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgIDxwby10YWJsZS1jb2x1bW4tbGlua1xuICAgICAgICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCInbGluaydcIlxuICAgICAgICAgICAgICAgIFtwLWFjdGlvbl09XCJjb2x1bW4uYWN0aW9uXCJcbiAgICAgICAgICAgICAgICBbcC1kaXNhYmxlZF09XCJjaGVja0Rpc2FibGVkKHJvdywgY29sdW1uKVwiXG4gICAgICAgICAgICAgICAgW3AtbGlua109XCJyb3dbY29sdW1uLmxpbmtdXCJcbiAgICAgICAgICAgICAgICBbcC1yb3ddPVwicm93XCJcbiAgICAgICAgICAgICAgICBbcC12YWx1ZV09XCJnZXRDZWxsRGF0YShyb3csIGNvbHVtbilcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkNsaWNrTGluaygkZXZlbnQsIHJvdywgY29sdW1uKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPC9wby10YWJsZS1jb2x1bW4tbGluaz5cblxuICAgICAgICAgICAgICA8cG8tdGFibGUtY29sdW1uLWljb25cbiAgICAgICAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ2ljb24nXCJcbiAgICAgICAgICAgICAgICBbcC1jb2x1bW5dPVwiY29sdW1uXCJcbiAgICAgICAgICAgICAgICBbcC1pY29uc109XCJnZXRDb2x1bW5JY29ucyhyb3csIGNvbHVtbilcIlxuICAgICAgICAgICAgICAgIFtwLXJvd109XCJyb3dcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDwvcG8tdGFibGUtY29sdW1uLWljb24+XG5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidzdWJ0aXRsZSdcIj5cbiAgICAgICAgICAgICAgICA8cG8tdGFibGUtc3VidGl0bGUtY2lyY2xlIFtwLXN1YnRpdGxlXT1cImdldFN1YnRpdGxlQ29sdW1uKHJvdywgY29sdW1uKVwiPjwvcG8tdGFibGUtc3VidGl0bGUtY2lyY2xlPlxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInbGFiZWwnXCI+XG4gICAgICAgICAgICAgICAgPHBvLXRhYmxlLWNvbHVtbi1sYWJlbCBbcC12YWx1ZV09XCJnZXRDb2x1bW5MYWJlbChyb3csIGNvbHVtbilcIj4gPC9wby10YWJsZS1jb2x1bW4tbGFiZWw+XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoRGVmYXVsdD57eyBnZXRDZWxsRGF0YShyb3csIGNvbHVtbikgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L3RkPlxuXG4gICAgICAgICAgPHRkXG4gICAgICAgICAgICAqbmdJZj1cImhhc1Jvd1RlbXBsYXRlV2l0aEFycm93RGlyZWN0aW9uUmlnaHRcIlxuICAgICAgICAgICAgY2xhc3M9XCJwby10YWJsZS1jb2x1bW4tZGV0YWlsLXRvZ2dsZVwiXG4gICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlRGV0YWlsKHJvdylcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJwb1RhYmxlQ29sdW1uRGV0YWlsXCJcbiAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgcm93OiByb3csIHJvd0luZGV4OiByb3dJbmRleCB9XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC90ZD5cblxuICAgICAgICAgIDwhLS0gQ29sdW5hIGRlIGHDp29lcyBuYSBkaXJlaXRhIC0tPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgKm5nSWY9XCJhY3Rpb25SaWdodFwiXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJBY3Rpb25zQ29sdW1uVGVtcGxhdGVcIlxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgcm93OiByb3csIHJvd0luZGV4OiByb3dJbmRleCB9XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICAgIDwhLS0gQ29sdW5hIHBhcmEgbsOjbyBmaWNhciBlbSBicmFuY28gbmFzIGxpbmhhcyBkZSBnZXJlbmNpYW1lbnRvIC0tPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhYWN0aW9uUmlnaHQgJiYgKHZpc2libGVBY3Rpb25zLmxlbmd0aCA+IDEgfHwgaXNTaW5nbGVBY3Rpb24pICYmICFoaWRlQ29sdW1uc01hbmFnZXJcIj5cbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cInBvLXRhYmxlLWNvbHVtbiBwby10YWJsZS1jb2x1bW4tZW1wdHlcIj48L3RkPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgPCEtLSBDb2x1bW4gTWFuYWdlciAtLT5cbiAgICAgICAgICA8dGRcbiAgICAgICAgICAgICpuZ0lmPVwiIWhhc1Zpc2libGVBY3Rpb25zICYmICFoaWRlQ29sdW1uc01hbmFnZXIgJiYgIWhhc1Jvd1RlbXBsYXRlV2l0aEFycm93RGlyZWN0aW9uUmlnaHRcIlxuICAgICAgICAgICAgY2xhc3M9XCJwby10YWJsZS1jb2x1bW5cIlxuICAgICAgICAgID48L3RkPlxuICAgICAgICA8L3RyPlxuXG4gICAgICAgIDx0ciAqbmdJZj1cImhhc01haW5Db2x1bW5zICYmIGhhc1Jvd1RlbXBsYXRlICYmIHJvdy4kc2hvd0RldGFpbCAmJiBpc1Nob3dSb3dUZW1wbGF0ZShyb3csIHJvd0luZGV4KVwiPlxuICAgICAgICAgIDx0ZCBjbGFzcz1cInBvLXRhYmxlLXJvdy10ZW1wbGF0ZS1jb250YWluZXJcIiBbY29sU3Bhbl09XCJjb2x1bW5Db3VudEZvck1hc3RlckRldGFpbFwiPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRhYmxlUm93VGVtcGxhdGUudGVtcGxhdGVSZWZcIlxuICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IHJvdywgcm93SW5kZXg6IHJvd0luZGV4IH1cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8L3RkPlxuICAgICAgICA8L3RyPlxuXG4gICAgICAgIDx0ciAqbmdJZj1cImhhc01haW5Db2x1bW5zICYmIGlzU2hvd01hc3RlckRldGFpbChyb3cpXCI+XG4gICAgICAgICAgPHRkIGNsYXNzPVwicG8tdGFibGUtY29sdW1uLWRldGFpbFwiIFtjb2xTcGFuXT1cImNvbHVtbkNvdW50Rm9yTWFzdGVyRGV0YWlsXCI+XG4gICAgICAgICAgICA8cG8tdGFibGUtZGV0YWlsXG4gICAgICAgICAgICAgIFtwLXNlbGVjdGFibGVdPVwic2VsZWN0YWJsZSAmJiAhZGV0YWlsSGlkZVNlbGVjdFwiXG4gICAgICAgICAgICAgIFtwLWRldGFpbF09XCJjb2x1bW5NYXN0ZXJEZXRhaWwuZGV0YWlsXCJcbiAgICAgICAgICAgICAgW3AtaXRlbXNdPVwicm93W25hbWVDb2x1bW5EZXRhaWxdXCJcbiAgICAgICAgICAgICAgKHAtc2VsZWN0LXJvdyk9XCJzZWxlY3REZXRhaWxSb3coJGV2ZW50KVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8L3BvLXRhYmxlLWRldGFpbD5cbiAgICAgICAgICA8L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgPC90Ym9keT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC90YWJsZT5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjdGFibGVUZW1wbGF0ZT5cbiAgPHRhYmxlIGNsYXNzPVwicG8tdGFibGVcIiBbY2xhc3MucG8tdGFibGUtc3RyaXBlZF09XCJzdHJpcGVkXCIgW2NsYXNzLnBvLXRhYmxlLWxheW91dC1maXhlZF09XCJoaWRlVGV4dE92ZXJmbG93XCI+XG4gICAgPHRoZWFkPlxuICAgICAgPHRyIFtjbGFzcy5wby10YWJsZS1oZWFkZXJdPVwiIWhlaWdodFwiPlxuICAgICAgICA8dGggKm5nSWY9XCJoYXNTZWxlY3RhYmxlQ29sdW1uXCIgY2xhc3M9XCJwby10YWJsZS1jb2x1bW4tc2VsZWN0YWJsZVwiPlxuICAgICAgICAgIDxkaXYgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1maXhlZC1pbm5lcl09XCJoZWlnaHRcIj5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAqbmdJZj1cIiFoaWRlU2VsZWN0QWxsXCJcbiAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJwby10YWJsZS1jaGVja2JveFwiXG4gICAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1jaGVja2JveC1jaGVja2VkXT1cInNlbGVjdEFsbFwiXG4gICAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1jaGVja2JveC1pbmRldGVybWluYXRlXT1cInNlbGVjdEFsbCA9PT0gbnVsbFwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGxhYmVsICpuZ0lmPVwiIWhpZGVTZWxlY3RBbGxcIiBjbGFzcz1cInBvLXRhYmxlLWNoZWNrYm94LWxhYmVsIHBvLWNsaWNrYWJsZVwiIChjbGljayk9XCJzZWxlY3RBbGxSb3dzKClcIj5cbiAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvdGg+XG5cbiAgICAgICAgPHRoXG4gICAgICAgICAgKm5nSWY9XCIoaGFzTWFzdGVyRGV0YWlsQ29sdW1uIHx8IGhhc1Jvd1RlbXBsYXRlKSAmJiAhaGFzUm93VGVtcGxhdGVXaXRoQXJyb3dEaXJlY3Rpb25SaWdodFwiXG4gICAgICAgICAgY2xhc3M9XCJwby10YWJsZS1oZWFkZXItY29sdW1uIHBvLXRhYmxlLWhlYWRlci1tYXN0ZXItZGV0YWlsXCJcbiAgICAgICAgPjwvdGg+XG5cbiAgICAgICAgPCEtLSBDb2x1bmEgY3JpYWRhIHBhcmEgY2FzbyBhcyBhw6fDtWVzIGZpcXVlbSBubyBsYWRvIGVzcXVlcmRvIC0tPlxuICAgICAgICA8dGhcbiAgICAgICAgICAqbmdJZj1cIiFhY3Rpb25SaWdodCAmJiAodmlzaWJsZUFjdGlvbnMubGVuZ3RoID4gMSB8fCBpc1NpbmdsZUFjdGlvbilcIlxuICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItbWFzdGVyLWRldGFpbF09XCIhaXNTaW5nbGVBY3Rpb25cIlxuICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItc2luZ2xlLWFjdGlvbl09XCJpc1NpbmdsZUFjdGlvblwiXG4gICAgICAgID48L3RoPlxuXG4gICAgICAgIDx0aCAqbmdJZj1cIiFoYXNNYWluQ29sdW1uc1wiICNub0NvbHVtbnNIZWFkZXIgY2xhc3M9XCJwby10YWJsZS1oZWFkZXItY29sdW1uIHBvLXRleHQtY2VudGVyXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhlaWdodDsgdGhlbiBub0NvbHVtbnNXaXRoSGVpZ2h0OyBlbHNlIG5vQ29sdW1uc1dpdGhvdXRIZWlnaHRcIj4gPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvdGg+XG5cbiAgICAgICAgPHRoXG4gICAgICAgICAgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiBtYWluQ29sdW1uczsgbGV0IGkgPSBpbmRleDsgdHJhY2tCeTogdHJhY2tCeVwiXG4gICAgICAgICAgI2hlYWRlcnNUYWJsZVxuICAgICAgICAgIGNsYXNzPVwicG8tdGFibGUtaGVhZGVyLWVsbGlwc2lzXCJcbiAgICAgICAgICBbc3R5bGUud2lkdGhdPVwiY29sdW1uLndpZHRoXCJcbiAgICAgICAgICBbc3R5bGUubWF4LXdpZHRoXT1cImNvbHVtbi53aWR0aFwiXG4gICAgICAgICAgW3N0eWxlLm1pbi13aWR0aF09XCJjb2x1bW4ud2lkdGhcIlxuICAgICAgICAgIFtjbGFzcy5wby1jbGlja2FibGVdPVwiKHNvcnQgJiYgY29sdW1uLnNvcnRhYmxlICE9PSBmYWxzZSkgfHwgaGFzU2VydmljZVwiXG4gICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1zdWJ0aXRsZV09XCJjb2x1bW4udHlwZSA9PT0gJ3N1YnRpdGxlJ1wiXG4gICAgICAgICAgKGNsaWNrKT1cInNvcnRDb2x1bW4oY29sdW1uKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cInBvLXRhYmxlLWhlYWRlci1mbGV4XCJcbiAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItZml4ZWQtaW5uZXJdPVwiaGVpZ2h0XCJcbiAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItZmxleC1yaWdodF09XCJjb2x1bW4udHlwZSA9PT0gJ2N1cnJlbmN5JyB8fCBjb2x1bW4udHlwZSA9PT0gJ251bWJlcidcIlxuICAgICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1mbGV4LWNlbnRlcl09XCJjb2x1bW4udHlwZSA9PT0gJ3N1YnRpdGxlJ1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbnRlbnRIZWFkZXJUZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IGNvbHVtbiB9XCI+IDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3RoPlxuXG4gICAgICAgIDx0aFxuICAgICAgICAgICpuZ0lmPVwiaGFzUm93VGVtcGxhdGVXaXRoQXJyb3dEaXJlY3Rpb25SaWdodCAmJiAoaGFzVmlzaWJsZUFjdGlvbnMgfHwgaGlkZUNvbHVtbnNNYW5hZ2VyKVwiXG4gICAgICAgICAgY2xhc3M9XCJwby10YWJsZS1oZWFkZXItY29sdW1uIHBvLXRhYmxlLWhlYWRlci1tYXN0ZXItZGV0YWlsXCJcbiAgICAgICAgPjwvdGg+XG5cbiAgICAgICAgPHRoXG4gICAgICAgICAgKm5nSWY9XCJoYXNWaXNpYmxlQWN0aW9ucyAmJiBoaWRlQ29sdW1uc01hbmFnZXIgJiYgYWN0aW9uUmlnaHRcIlxuICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItc2luZ2xlLWFjdGlvbl09XCJpc1NpbmdsZUFjdGlvblwiXG4gICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1hY3Rpb25zXT1cIiFpc1NpbmdsZUFjdGlvblwiXG4gICAgICAgID48L3RoPlxuXG4gICAgICAgIDx0aFxuICAgICAgICAgICNjb2x1bW5NYW5hZ2VyXG4gICAgICAgICAgKm5nSWY9XCJoYXNWYWxpZENvbHVtbnMgJiYgIWhpZGVDb2x1bW5zTWFuYWdlclwiXG4gICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1jb2x1bW4tbWFuYWdlcl09XCIhaXNTaW5nbGVBY3Rpb24gfHwgIWFjdGlvblJpZ2h0XCJcbiAgICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLWNvbHVtbi1tYW5hZ2VyLWJvcmRlcl09XCIhaGVpZ2h0ICYmIGNvbnRhaW5lclwiXG4gICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1zaW5nbGUtYWN0aW9uXT1cImlzU2luZ2xlQWN0aW9uICYmIGFjdGlvblJpZ2h0XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItY29sdW1uLW1hbmFnZXItYm9yZGVyXT1cImhlaWdodCAmJiBjb250YWluZXJcIlxuICAgICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1jb2x1bW4tbWFuYWdlci1maXhlZC1pbm5lcl09XCJoZWlnaHRcIlxuICAgICAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cImhlaWdodCAmJiB2aXNpYmxlQWN0aW9ucy5sZW5ndGggPyBjb2x1bW5NYW5hZ2VyLm9mZnNldFdpZHRoIDogdW5kZWZpbmVkXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICNjb2x1bW5NYW5hZ2VyVGFyZ2V0XG4gICAgICAgICAgICAgIGNsYXNzPVwicG8tdGFibGUtaGVhZGVyLWNvbHVtbi1tYW5hZ2VyLWJ1dHRvbiBwby1pY29uIHBvLWljb24tc2V0dGluZ3MgcG8tY2xpY2thYmxlXCJcbiAgICAgICAgICAgICAgcC10b29sdGlwLXBvc2l0aW9uPVwibGVmdFwiXG4gICAgICAgICAgICAgIFtwLXRvb2x0aXBdPVwibGl0ZXJhbHMuY29sdW1uc01hbmFnZXJcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwib25PcGVuQ29sdW1uTWFuYWdlcigpXCJcbiAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC90aD5cbiAgICAgIDwvdHI+XG4gICAgPC90aGVhZD5cblxuICAgIDx0Ym9keSBjbGFzcz1cInBvLXRhYmxlLWdyb3VwLXJvd1wiICpuZ0lmPVwiIWhhc0l0ZW1zIHx8ICFoYXNNYWluQ29sdW1uc1wiPlxuICAgICAgPHRyIGNsYXNzPVwicG8tdGFibGUtcm93IHBvLXRhYmxlLXJvdy1uby1kYXRhXCI+XG4gICAgICAgIDx0ZCBbY29sU3Bhbl09XCJjb2x1bW5Db3VudFwiIGNsYXNzPVwicG8tdGFibGUtbm8tZGF0YSBwby10ZXh0LWNlbnRlclwiPlxuICAgICAgICAgIDxzcGFuPiB7eyBsaXRlcmFscy5ub0RhdGEgfX0gPC9zcGFuPlxuICAgICAgICA8L3RkPlxuICAgICAgPC90cj5cbiAgICA8L3Rib2R5PlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhhc01haW5Db2x1bW5zXCI+XG4gICAgICA8dGJvZHkgY2xhc3M9XCJwby10YWJsZS1ncm91cC1yb3dcIiAqbmdGb3I9XCJsZXQgcm93IG9mIGl0ZW1zOyBsZXQgcm93SW5kZXggPSBpbmRleDsgdHJhY2tCeTogdHJhY2tCeVwiPlxuICAgICAgICA8dHIgY2xhc3M9XCJwby10YWJsZS1yb3dcIiBbY2xhc3MucG8tdGFibGUtcm93LWFjdGl2ZV09XCJyb3cuJHNlbGVjdGVkIHx8IChyb3cuJHNlbGVjdGVkID09PSBudWxsICYmIHNlbGVjdGFibGUpXCI+XG4gICAgICAgICAgPHRkICpuZ0lmPVwic2VsZWN0YWJsZVwiIGNsYXNzPVwicG8tdGFibGUtY29sdW1uLXNlbGVjdGFibGVcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzaW5nbGVTZWxlY3QgPyBpbnB1dFJhZGlvIDogaW5wdXRDaGVja2JveDsgY29udGV4dDogeyAkaW1wbGljaXQ6IHJvdyB9XCI+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L3RkPlxuXG4gICAgICAgICAgPCEtLSBWYWxpZGEgc2UgYSBvcmlnZW0gZG8gZGV0YWlsIMOpIHBlbG8gaW5wdXQgZG8gcG8tdGFibGUgLS0+XG4gICAgICAgICAgPHRkXG4gICAgICAgICAgICAqbmdJZj1cImNvbHVtbk1hc3RlckRldGFpbCAmJiAhaGlkZURldGFpbCAmJiAhaGFzUm93VGVtcGxhdGVcIlxuICAgICAgICAgICAgY2xhc3M9XCJwby10YWJsZS1jb2x1bW4tZGV0YWlsLXRvZ2dsZVwiXG4gICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlRGV0YWlsKHJvdylcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJwb1RhYmxlQ29sdW1uRGV0YWlsXCJcbiAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgcm93OiByb3csIHJvd0luZGV4OiByb3dJbmRleCB9XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC90ZD5cblxuICAgICAgICAgIDwhLS0gQ29sdW5hIGNvbSBhcyBhw6fDtWVzIG5hIGVzcXVlcmRhIChwYWRyw6NvKS0tPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgKm5nSWY9XCIhYWN0aW9uUmlnaHQgJiYgKHZpc2libGVBY3Rpb25zLmxlbmd0aCA+IDEgfHwgaXNTaW5nbGVBY3Rpb24pXCJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIkFjdGlvbnNDb2x1bW5UZW1wbGF0ZVwiXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyByb3c6IHJvdywgcm93SW5kZXg6IHJvd0luZGV4IH1cIlxuICAgICAgICAgID5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICAgICAgPCEtLSBWYWxpZGEgc2UgYSBvcmlnZW0gZG8gZGV0YWlsIMOpIHBlbGEgZGlyZXRpdmEgLS0+XG4gICAgICAgICAgPHRkXG4gICAgICAgICAgICAqbmdJZj1cImhhc1Jvd1RlbXBsYXRlICYmICFoYXNSb3dUZW1wbGF0ZVdpdGhBcnJvd0RpcmVjdGlvblJpZ2h0XCJcbiAgICAgICAgICAgIGNsYXNzPVwicG8tdGFibGUtY29sdW1uLWRldGFpbC10b2dnbGVcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZURldGFpbChyb3cpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwicG9UYWJsZUNvbHVtbkRldGFpbFwiXG4gICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IHJvdzogcm93LCByb3dJbmRleDogcm93SW5kZXggfVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvdGQ+XG5cbiAgICAgICAgICA8dGRcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgbWFpbkNvbHVtbnM7IGxldCBjb2x1bW5JbmRleCA9IGluZGV4OyB0cmFja0J5OiB0cmFja0J5XCJcbiAgICAgICAgICAgIFtzdHlsZS53aWR0aF09XCJjb2x1bW4ud2lkdGhcIlxuICAgICAgICAgICAgW3N0eWxlLm1heC13aWR0aF09XCJjb2x1bW4ud2lkdGhcIlxuICAgICAgICAgICAgW3N0eWxlLm1pbi13aWR0aF09XCJjb2x1bW4ud2lkdGhcIlxuICAgICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWNvbHVtbl09XCJjb2x1bW4udHlwZSAhPT0gJ2ljb24nXCJcbiAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1jb2x1bW4tcmlnaHRdPVwiY29sdW1uLnR5cGUgPT09ICdjdXJyZW5jeScgfHwgY29sdW1uLnR5cGUgPT09ICdudW1iZXInXCJcbiAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1jb2x1bW4tY2VudGVyXT1cImNvbHVtbi50eXBlID09PSAnc3VidGl0bGUnXCJcbiAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1jb2x1bW4taWNvbnNdPVwiY29sdW1uLnR5cGUgPT09ICdpY29uJ1wiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJnZXRDbGFzc0NvbG9yKHJvdywgY29sdW1uKVwiXG4gICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0YWJsZSA/IHNlbGVjdFJvdyhyb3cpIDogJ2phdmFzY3JpcHQ6OydcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJwby10YWJsZS1jb2x1bW4tY2VsbCBub3RyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1ib2R5LWVsbGlwc2lzXT1cImhpZGVUZXh0T3ZlcmZsb3dcIlxuICAgICAgICAgICAgICBbbmdTd2l0Y2hdPVwiY29sdW1uLnR5cGVcIlxuICAgICAgICAgICAgICBbcC10b29sdGlwXT1cInRvb2x0aXBUZXh0XCJcbiAgICAgICAgICAgICAgKG1vdXNlZW50ZXIpPVwidG9vbHRpcE1vdXNlRW50ZXIoJGV2ZW50LCBjb2x1bW4sIHJvdylcIlxuICAgICAgICAgICAgICAobW91c2VsZWF2ZSk9XCJ0b29sdGlwTW91c2VMZWF2ZSgpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidjb2x1bW5UZW1wbGF0ZSdcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZ2V0VGVtcGxhdGUoY29sdW1uKTsgY29udGV4dDogeyAkaW1wbGljaXQ6IGdldENlbGxEYXRhKHJvdywgY29sdW1uKSB9XCI+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ2NlbGxUZW1wbGF0ZSdcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGFibGVDZWxsVGVtcGxhdGU/LnRlbXBsYXRlUmVmOyBjb250ZXh0OiB7IHJvdzogcm93LCBjb2x1bW46IGNvbHVtbiB9XCI+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ2Jvb2xlYW4nXCI+XG4gICAgICAgICAgICAgICAge3sgZ2V0Qm9vbGVhbkxhYmVsKGdldENlbGxEYXRhKHJvdywgY29sdW1uKSwgY29sdW1uKSB9fVxuICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidjdXJyZW5jeSdcIj5cbiAgICAgICAgICAgICAgICB7eyBnZXRDZWxsRGF0YShyb3csIGNvbHVtbikgfCBjdXJyZW5jeTogY29sdW1uLmZvcm1hdDonc3ltYm9sJzonMS4yLTInIH19XG4gICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ2RhdGUnXCI+XG4gICAgICAgICAgICAgICAge3sgZ2V0Q2VsbERhdGEocm93LCBjb2x1bW4pIHwgZGF0ZTogY29sdW1uLmZvcm1hdCB8fCAnZGQvTU0veXl5eScgfX1cbiAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCIndGltZSdcIj5cbiAgICAgICAgICAgICAgICB7eyBnZXRDZWxsRGF0YShyb3csIGNvbHVtbikgfCBwb190aW1lOiBjb2x1bW4uZm9ybWF0IHx8ICdISDptbTpzcy5mZmZmZmYnIH19XG4gICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ2RhdGVUaW1lJ1wiPlxuICAgICAgICAgICAgICAgIHt7IGdldENlbGxEYXRhKHJvdywgY29sdW1uKSB8IGRhdGU6IGNvbHVtbi5mb3JtYXQgfHwgJ2RkL01NL3l5eXkgSEg6bW06c3MnIH19XG4gICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ251bWJlcidcIj5cbiAgICAgICAgICAgICAgICB7eyBmb3JtYXROdW1iZXIoZ2V0Q2VsbERhdGEocm93LCBjb2x1bW4pLCBjb2x1bW4uZm9ybWF0KSB9fVxuICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgPHBvLXRhYmxlLWNvbHVtbi1saW5rXG4gICAgICAgICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidsaW5rJ1wiXG4gICAgICAgICAgICAgICAgW3AtYWN0aW9uXT1cImNvbHVtbi5hY3Rpb25cIlxuICAgICAgICAgICAgICAgIFtwLWRpc2FibGVkXT1cImNoZWNrRGlzYWJsZWQocm93LCBjb2x1bW4pXCJcbiAgICAgICAgICAgICAgICBbcC1saW5rXT1cInJvd1tjb2x1bW4ubGlua11cIlxuICAgICAgICAgICAgICAgIFtwLXJvd109XCJyb3dcIlxuICAgICAgICAgICAgICAgIFtwLXZhbHVlXT1cImdldENlbGxEYXRhKHJvdywgY29sdW1uKVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uQ2xpY2tMaW5rKCRldmVudCwgcm93LCBjb2x1bW4pXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8L3BvLXRhYmxlLWNvbHVtbi1saW5rPlxuXG4gICAgICAgICAgICAgIDxwby10YWJsZS1jb2x1bW4taWNvblxuICAgICAgICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCInaWNvbidcIlxuICAgICAgICAgICAgICAgIFtwLWNvbHVtbl09XCJjb2x1bW5cIlxuICAgICAgICAgICAgICAgIFtwLWljb25zXT1cImdldENvbHVtbkljb25zKHJvdywgY29sdW1uKVwiXG4gICAgICAgICAgICAgICAgW3Atcm93XT1cInJvd1wiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPC9wby10YWJsZS1jb2x1bW4taWNvbj5cblxuICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ3N1YnRpdGxlJ1wiPlxuICAgICAgICAgICAgICAgIDxwby10YWJsZS1zdWJ0aXRsZS1jaXJjbGUgW3Atc3VidGl0bGVdPVwiZ2V0U3VidGl0bGVDb2x1bW4ocm93LCBjb2x1bW4pXCI+PC9wby10YWJsZS1zdWJ0aXRsZS1jaXJjbGU+XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidsYWJlbCdcIj5cbiAgICAgICAgICAgICAgICA8cG8tdGFibGUtY29sdW1uLWxhYmVsIFtwLXZhbHVlXT1cImdldENvbHVtbkxhYmVsKHJvdywgY29sdW1uKVwiPiA8L3BvLXRhYmxlLWNvbHVtbi1sYWJlbD5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hEZWZhdWx0Pnt7IGdldENlbGxEYXRhKHJvdywgY29sdW1uKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvdGQ+XG5cbiAgICAgICAgICA8dGRcbiAgICAgICAgICAgICpuZ0lmPVwiaGFzUm93VGVtcGxhdGVXaXRoQXJyb3dEaXJlY3Rpb25SaWdodFwiXG4gICAgICAgICAgICBjbGFzcz1cInBvLXRhYmxlLWNvbHVtbi1kZXRhaWwtdG9nZ2xlXCJcbiAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVEZXRhaWwocm93KVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInBvVGFibGVDb2x1bW5EZXRhaWxcIlxuICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyByb3c6IHJvdywgcm93SW5kZXg6IHJvd0luZGV4IH1cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8L3RkPlxuXG4gICAgICAgICAgPCEtLSBDb2x1bmEgZGUgYcOnb2VzIG5hIGRpcmVpdGEgLS0+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAqbmdJZj1cImFjdGlvblJpZ2h0XCJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIkFjdGlvbnNDb2x1bW5UZW1wbGF0ZVwiXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyByb3c6IHJvdywgcm93SW5kZXg6IHJvd0luZGV4IH1cIlxuICAgICAgICAgID5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICAgICAgPCEtLSBDb2x1bmEgcGFyYSBuw6NvIGZpY2FyIGVtIGJyYW5jbyBuYXMgbGluaGFzIGRlIGdlcmVuY2lhbWVudG8gLS0+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFhY3Rpb25SaWdodCAmJiAodmlzaWJsZUFjdGlvbnMubGVuZ3RoID4gMSB8fCBpc1NpbmdsZUFjdGlvbikgJiYgIWhpZGVDb2x1bW5zTWFuYWdlclwiPlxuICAgICAgICAgICAgPHRkIGNsYXNzPVwicG8tdGFibGUtcm93LW5vLWRhdGEgcG8tdGFibGUtY29sdW1uLWVtcHR5XCI+PC90ZD5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgIDwhLS0gQ29sdW1uIE1hbmFnZXIgLS0+XG4gICAgICAgICAgPHRkXG4gICAgICAgICAgICAqbmdJZj1cIiFoYXNWaXNpYmxlQWN0aW9ucyAmJiAhaGlkZUNvbHVtbnNNYW5hZ2VyICYmICFoYXNSb3dUZW1wbGF0ZVdpdGhBcnJvd0RpcmVjdGlvblJpZ2h0XCJcbiAgICAgICAgICAgIGNsYXNzPVwicG8tdGFibGUtY29sdW1uXCJcbiAgICAgICAgICA+PC90ZD5cbiAgICAgICAgPC90cj5cblxuICAgICAgICA8dHIgKm5nSWY9XCJoYXNNYWluQ29sdW1ucyAmJiBoYXNSb3dUZW1wbGF0ZSAmJiByb3cuJHNob3dEZXRhaWwgJiYgaXNTaG93Um93VGVtcGxhdGUocm93LCByb3dJbmRleClcIj5cbiAgICAgICAgICA8dGQgY2xhc3M9XCJwby10YWJsZS1yb3ctdGVtcGxhdGUtY29udGFpbmVyXCIgW2NvbFNwYW5dPVwiY29sdW1uQ291bnRGb3JNYXN0ZXJEZXRhaWxcIj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJ0YWJsZVJvd1RlbXBsYXRlLnRlbXBsYXRlUmVmXCJcbiAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiByb3csIHJvd0luZGV4OiByb3dJbmRleCB9XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC90ZD5cbiAgICAgICAgPC90cj5cblxuICAgICAgICA8dHIgKm5nSWY9XCJoYXNNYWluQ29sdW1ucyAmJiBpc1Nob3dNYXN0ZXJEZXRhaWwocm93KVwiPlxuICAgICAgICAgIDx0ZCBjbGFzcz1cInBvLXRhYmxlLWNvbHVtbi1kZXRhaWxcIiBbY29sU3Bhbl09XCJjb2x1bW5Db3VudEZvck1hc3RlckRldGFpbFwiPlxuICAgICAgICAgICAgPHBvLXRhYmxlLWRldGFpbFxuICAgICAgICAgICAgICBbcC1zZWxlY3RhYmxlXT1cInNlbGVjdGFibGUgJiYgIWRldGFpbEhpZGVTZWxlY3RcIlxuICAgICAgICAgICAgICBbcC1kZXRhaWxdPVwiY29sdW1uTWFzdGVyRGV0YWlsLmRldGFpbFwiXG4gICAgICAgICAgICAgIFtwLWl0ZW1zXT1cInJvd1tuYW1lQ29sdW1uRGV0YWlsXVwiXG4gICAgICAgICAgICAgIChwLXNlbGVjdC1yb3cpPVwic2VsZWN0RGV0YWlsUm93KCRldmVudClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9wby10YWJsZS1kZXRhaWw+XG4gICAgICAgICAgPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgIDwvdGJvZHk+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvdGFibGU+XG48L25nLXRlbXBsYXRlPlxuXG48cG8tcG9wdXAgI3BvcHVwIFtwLWFjdGlvbnNdPVwiYWN0aW9uc1wiIFtwLXRhcmdldF09XCJwb3B1cFRhcmdldFwiPiA8L3BvLXBvcHVwPlxuXG48bmctdGVtcGxhdGUgI3BvVGFibGVDb2x1bW5EZXRhaWwgbGV0LXJvdz1cInJvd1wiIGxldC1yb3dJbmRleD1cInJvd0luZGV4XCI+XG4gIDxzcGFuXG4gICAgKm5nSWY9XCIoY29udGFpbnNNYXN0ZXJEZXRhaWwocm93KSAmJiAhaGFzUm93VGVtcGxhdGUpIHx8IChpc1Nob3dSb3dUZW1wbGF0ZShyb3csIHJvd0luZGV4KSAmJiBoYXNSb3dUZW1wbGF0ZSlcIlxuICAgIGNsYXNzPVwicG8taWNvbiBwby1jbGlja2FibGVcIlxuICAgIFtjbGFzcy5wby1pY29uLWFycm93LXVwXT1cInJvdy4kc2hvd0RldGFpbFwiXG4gICAgW2NsYXNzLnBvLWljb24tYXJyb3ctZG93bl09XCIhcm93LiRzaG93RGV0YWlsXCJcbiAgPlxuICA8L3NwYW4+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2lucHV0UmFkaW8gbGV0LXJvdz5cbiAgPGlucHV0IHR5cGU9XCJyYWRpb1wiIGNsYXNzPVwicG8tdGFibGUtcmFkaW9cIiBbY2xhc3MucG8tdGFibGUtcmFkaW8tY2hlY2tlZF09XCJyb3cuJHNlbGVjdGVkXCIgLz5cbiAgPGxhYmVsIGNsYXNzPVwicG8tdGFibGUtcmFkaW8tbGFiZWwgcG8tY2xpY2thYmxlXCIgKGNsaWNrKT1cInNlbGVjdGFibGUgPyBzZWxlY3RSb3cocm93KSA6ICdqYXZhc2NyaXB0OjsnXCI+PC9sYWJlbD5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjaW5wdXRDaGVja2JveCBsZXQtcm93PlxuICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgY2xhc3M9XCJwby10YWJsZS1jaGVja2JveFwiIFtjbGFzcy5wby10YWJsZS1jaGVja2JveC1jaGVja2VkXT1cInJvdy4kc2VsZWN0ZWRcIiAvPlxuICA8bGFiZWwgY2xhc3M9XCJwby10YWJsZS1jaGVja2JveC1sYWJlbCBwby1jbGlja2FibGVcIiAoY2xpY2spPVwic2VsZWN0YWJsZSA/IHNlbGVjdFJvdyhyb3cpIDogJ2phdmFzY3JpcHQ6OydcIj48L2xhYmVsPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNjb250ZW50SGVhZGVyVGVtcGxhdGUgbGV0LWNvbHVtbj5cbiAgPHNwYW5cbiAgICAjY29sdW1uSGVhZGVyXG4gICAgY2xhc3M9XCJwby10YWJsZS1oZWFkZXItZWxsaXBzaXNcIlxuICAgIFtwLXRvb2x0aXBdPVwidG9vbHRpcFRleHRcIlxuICAgIChtb3VzZWVudGVyKT1cInRvb2x0aXBNb3VzZUVudGVyKCRldmVudClcIlxuICAgIChtb3VzZWxlYXZlKT1cInRvb2x0aXBNb3VzZUxlYXZlKClcIlxuICA+XG4gICAge3sgY29sdW1uLmxhYmVsIHx8IChjb2x1bW4ucHJvcGVydHkgfCB0aXRsZWNhc2UpIH19XG4gIDwvc3Bhbj5cbiAgPHNwYW5cbiAgICAqbmdJZj1cInNvcnQgJiYgY29sdW1uLnNvcnRhYmxlICE9PSBmYWxzZVwiXG4gICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1pY29uLXVuc2VsZWN0ZWRdPVwic29ydGVkQ29sdW1uPy5wcm9wZXJ0eSAhPT0gY29sdW1uXCJcbiAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLWljb24tZGVzY2VuZGluZ109XCJzb3J0ZWRDb2x1bW4/LnByb3BlcnR5ID09PSBjb2x1bW4gJiYgc29ydGVkQ29sdW1uLmFzY2VuZGluZ1wiXG4gICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1pY29uLWFzY2VuZGluZ109XCJzb3J0ZWRDb2x1bW4/LnByb3BlcnR5ID09PSBjb2x1bW4gJiYgIXNvcnRlZENvbHVtbi5hc2NlbmRpbmdcIlxuICA+XG4gIDwvc3Bhbj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjbm9Db2x1bW5zV2l0aEhlaWdodD5cbiAgPGRpdiBjbGFzcz1cInBvLXRhYmxlLWhlYWRlci1maXhlZC1pbm5lclwiIFtzdHlsZS53aWR0aC5weF09XCJub0NvbHVtbnNIZWFkZXI/Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGhcIj5cbiAgICB7eyBoYXNWYWxpZENvbHVtbnMgPyBsaXRlcmFscy5ub1Zpc2libGVDb2x1bW4gOiBsaXRlcmFscy5ub0NvbHVtbnMgfX1cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI25vQ29sdW1uc1dpdGhvdXRIZWlnaHQ+XG4gIHt7IGhhc1ZhbGlkQ29sdW1ucyA/IGxpdGVyYWxzLm5vVmlzaWJsZUNvbHVtbiA6IGxpdGVyYWxzLm5vQ29sdW1ucyB9fVxuPC9uZy10ZW1wbGF0ZT5cblxuPCEtLSBUZW1wbGF0ZSBkZSBhw6fDtWVzIC0tPlxuPG5nLXRlbXBsYXRlICNBY3Rpb25zQ29sdW1uVGVtcGxhdGUgbGV0LXJvdz1cInJvd1wiIGxldC1yb3dJbmRleD1cInJvd0luZGV4XCI+XG4gIDx0ZCAqbmdJZj1cImlzU2luZ2xlQWN0aW9uXCIgY2xhc3M9XCJwby10YWJsZS1jb2x1bW4gcG8tdGFibGUtY29sdW1uLXNpbmdsZS1hY3Rpb25cIj5cbiAgICA8ZGl2XG4gICAgICAqbmdJZj1cImZpcnN0QWN0aW9uLnZpc2libGUgIT09IGZhbHNlXCJcbiAgICAgIGNsYXNzPVwicG8tdGFibGUtc2luZ2xlLWFjdGlvbiBwby1jbGlja2FibGVcIlxuICAgICAgW2NsYXNzLnBvLXRhYmxlLWFjdGlvbi1kaXNhYmxlZF09XCJmaXJzdEFjdGlvbi5kaXNhYmxlZCA/IHZhbGlkYXRlVGFibGVBY3Rpb24ocm93LCBmaXJzdEFjdGlvbikgOiBmYWxzZVwiXG4gICAgICAoY2xpY2spPVwiZXhlY3V0ZVRhYmxlQWN0aW9uKHJvdywgZmlyc3RBY3Rpb24pXCJcbiAgICA+XG4gICAgICA8cG8taWNvbiAqbmdJZj1cImZpcnN0QWN0aW9uLmljb25cIiBjbGFzcz1cInBvLXRhYmxlLXNpbmdsZS1hY3Rpb24tY29udGVudFwiIFtwLWljb25dPVwiZmlyc3RBY3Rpb24uaWNvblwiPjwvcG8taWNvbj5cbiAgICAgIHt7IGZpcnN0QWN0aW9uLmxhYmVsIH19XG4gICAgPC9kaXY+XG4gIDwvdGQ+XG5cbiAgPHRkICpuZ0lmPVwidmlzaWJsZUFjdGlvbnMubGVuZ3RoID4gMVwiIGNsYXNzPVwicG8tdGFibGUtY29sdW1uLWFjdGlvbnNcIj5cbiAgICA8c3BhbiAjcG9wdXBUYXJnZXQgY2xhc3M9XCJwby1pY29uIHBvLWljb24tbW9yZSBwby1jbGlja2FibGVcIiAoY2xpY2spPVwidG9nZ2xlUG9wdXAocm93LCBwb3B1cFRhcmdldClcIj48L3NwYW4+XG4gIDwvdGQ+XG48L25nLXRlbXBsYXRlPlxuXG48cG8tdGFibGUtY29sdW1uLW1hbmFnZXJcbiAgKm5nSWY9XCIhaGlkZUNvbHVtbnNNYW5hZ2VyXCJcbiAgW3AtY29sdW1uc109XCJjb2x1bW5zXCJcbiAgW3AtbWF4LWNvbHVtbnNdPVwibWF4Q29sdW1uc1wiXG4gIFtwLXRhcmdldF09XCJjb2x1bW5NYW5hZ2VyVGFyZ2V0XCJcbiAgW3AtbGFzdC12aXNpYmxlLWNvbHVtbnMtc2VsZWN0ZWRdPVwibGFzdFZpc2libGVDb2x1bW5zU2VsZWN0ZWRcIlxuICAocC12aXNpYmxlLWNvbHVtbnMtY2hhbmdlKT1cIm9uVmlzaWJsZUNvbHVtbnNDaGFuZ2UoJGV2ZW50KVwiXG4gIChwLWNoYW5nZS12aXNpYmxlLWNvbHVtbnMpPVwib25DaGFuZ2VWaXNpYmxlQ29sdW1ucygkZXZlbnQpXCJcbiAgW3AtY29sdW1ucy1kZWZhdWx0XT1cImluaXRpYWxDb2x1bW5zXCJcbiAgKHAtaW5pdGlhbC1jb2x1bW5zKT1cIm9uQ29sdW1uUmVzdG9yZU1hbmFnZXIoJGV2ZW50KVwiXG4+XG48L3BvLXRhYmxlLWNvbHVtbi1tYW5hZ2VyPlxuIl19
1962
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tdGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9jb21wb25lbnRzL3BvLXRhYmxlL3BvLXRhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby10YWJsZS9wby10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBR0wsU0FBUyxFQUNULFlBQVksRUFFWixVQUFVLEVBS1YsU0FBUyxFQUNULFlBQVksRUFFWixlQUFlLEVBRWhCLE1BQU0sZUFBZSxDQUFDO0FBSXZCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUt2RSxPQUFPLEVBQUUsb0JBQW9CLEVBQW1CLE1BQU0sMkJBQTJCLENBQUM7QUFHbEYsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0seURBQXlELENBQUM7QUFFdEcsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sMkRBQTJELENBQUM7QUFDekcsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sK0RBQStELENBQUM7QUFDL0csT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sb0RBQW9ELENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQ2pDcEcsd0JBQXdFOzs7SUFEMUUsd0NBQWlIO0lBQy9HLG1HQUF3RTtJQUMxRSxpQkFBZTs7OztJQUYyRCwyREFBc0M7SUFDL0YsZUFBd0M7SUFBeEMsc0NBQXdDOzs7SUFLckQsK0JBQThDO0lBQzVDLGlDQUEwRjtJQUM1RixpQkFBTTs7O0lBRHlDLGVBQStCO0lBQS9CLHFEQUErQjs7O0lBWXRFLHdCQUFxRTs7O0lBSXJFLHdCQUF3Rjs7O0lBTjVG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RSxZQUFZO21CQUFDLGdCQUFnQixFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtZQUN0QixZQUFZO2tCQUF6QyxZQUFZO21CQUFDLGNBQWM7WUFxQlUsbUJBQW1CO2tCQUF4RCxTQUFTO21CQUFDLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUsIFN1YnNjcmliZXIsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkLFxuICBEb0NoZWNrLFxuICBFbGVtZW50UmVmLFxuICBJdGVyYWJsZURpZmZlcnMsXG4gIE9uRGVzdHJveSxcbiAgUXVlcnlMaXN0LFxuICBSZW5kZXJlcjIsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0NoaWxkcmVuLFxuICBWaWV3Q29udGFpbmVyUmVmLFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIFRlbXBsYXRlUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGVjaW1hbFBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuaW1wb3J0IHsgY29udmVydFRvQm9vbGVhbiB9IGZyb20gJy4uLy4uL3V0aWxzL3V0aWwnO1xuaW1wb3J0IHsgUG9EYXRlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3BvLWRhdGUvcG8tZGF0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IFBvTGFuZ3VhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcG8tbGFuZ3VhZ2UvcG8tbGFuZ3VhZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBQb1BvcHVwQ29tcG9uZW50IH0gZnJvbSAnLi4vcG8tcG9wdXAvcG8tcG9wdXAuY29tcG9uZW50JztcblxuaW1wb3J0IHsgUG9UYWJsZUFjdGlvbiB9IGZyb20gJy4vaW50ZXJmYWNlcy9wby10YWJsZS1hY3Rpb24uaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvVGFibGVCYXNlQ29tcG9uZW50LCBRdWVyeVBhcmFtc1R5cGUgfSBmcm9tICcuL3BvLXRhYmxlLWJhc2UuY29tcG9uZW50JztcbmltcG9ydCB7IFBvVGFibGVDb2x1bW4gfSBmcm9tICcuL2ludGVyZmFjZXMvcG8tdGFibGUtY29sdW1uLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQb1RhYmxlQ29sdW1uTGFiZWwgfSBmcm9tICcuL3BvLXRhYmxlLWNvbHVtbi1sYWJlbC9wby10YWJsZS1jb2x1bW4tbGFiZWwuaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvVGFibGVSb3dUZW1wbGF0ZURpcmVjdGl2ZSB9IGZyb20gJy4vcG8tdGFibGUtcm93LXRlbXBsYXRlL3BvLXRhYmxlLXJvdy10ZW1wbGF0ZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgUG9UYWJsZVN1YnRpdGxlQ29sdW1uIH0gZnJvbSAnLi9wby10YWJsZS1zdWJ0aXRsZS1mb290ZXIvcG8tdGFibGUtc3VidGl0bGUtY29sdW1uLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQb1RhYmxlQ2VsbFRlbXBsYXRlRGlyZWN0aXZlIH0gZnJvbSAnLi9wby10YWJsZS1jZWxsLXRlbXBsYXRlL3BvLXRhYmxlLWNlbGwtdGVtcGxhdGUuZGlyZWN0aXZlJztcbmltcG9ydCB7IFBvVGFibGVDb2x1bW5UZW1wbGF0ZURpcmVjdGl2ZSB9IGZyb20gJy4vcG8tdGFibGUtY29sdW1uLXRlbXBsYXRlL3BvLXRhYmxlLWNvbHVtbi10ZW1wbGF0ZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgUG9UYWJsZVJvd1RlbXBsYXRlQXJyb3dEaXJlY3Rpb24gfSBmcm9tICcuL2VudW1zL3BvLXRhYmxlLXJvdy10ZW1wbGF0ZS1hcnJvdy1kaXJlY3Rpb24uZW51bSc7XG5pbXBvcnQgeyBQb1RhYmxlU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvcG8tdGFibGUuc2VydmljZSc7XG5cbi8qKlxuICogQGRvY3NFeHRlbmRzIFBvVGFibGVCYXNlQ29tcG9uZW50XG4gKlxuICogQGV4YW1wbGVcbiAqXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tdGFibGUtYmFzaWNcIiB0aXRsZT1cIlBPIFRhYmxlIEJhc2ljXCI+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS1iYXNpYy9zYW1wbGUtcG8tdGFibGUtYmFzaWMuY29tcG9uZW50LnRzXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXRhYmxlLWJhc2ljL3NhbXBsZS1wby10YWJsZS1iYXNpYy5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLXRhYmxlLWxhYnNcIiB0aXRsZT1cIlBPIFRhYmxlIExhYnNcIj5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXRhYmxlLWxhYnMvc2FtcGxlLXBvLXRhYmxlLWxhYnMuY29tcG9uZW50LnRzXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXRhYmxlLWxhYnMvc2FtcGxlLXBvLXRhYmxlLWxhYnMuY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tdGFibGUtbGFicy9zYW1wbGUtcG8tdGFibGUtbGFicy5jb21wb25lbnQuZTJlLXNwZWMudHNcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tdGFibGUtbGFicy9zYW1wbGUtcG8tdGFibGUtbGFicy5jb21wb25lbnQucG8udHNcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tdGFibGUtbGFicy9zYW1wbGUtcG8tdGFibGUtbGFicy5zZXJ2aWNlLnRzXCI+IDwvZmlsZT5cbiAqIDwvZXhhbXBsZT5cbiAqXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tdGFibGUtd2l0aC1hcGlcIiB0aXRsZT1cIlBPIFRhYmxlIHVzaW5nIEFQSVwiPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tdGFibGUtd2l0aC1hcGkvc2FtcGxlLXBvLXRhYmxlLXdpdGgtYXBpLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS13aXRoLWFwaS9zYW1wbGUtcG8tdGFibGUtd2l0aC1hcGkuY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby10YWJsZS10cmFuc3BvcnRcIiB0aXRsZT1cIlBPIFRhYmxlIC0gVHJhbnNwb3J0XCI+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS10cmFuc3BvcnQvc2FtcGxlLXBvLXRhYmxlLXRyYW5zcG9ydC5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tdGFibGUtdHJhbnNwb3J0L3NhbXBsZS1wby10YWJsZS10cmFuc3BvcnQuY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tdGFibGUtdHJhbnNwb3J0L3NhbXBsZS1wby10YWJsZS10cmFuc3BvcnQuc2VydmljZS50c1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLXRhYmxlLWFpcmZhcmVcIiB0aXRsZT1cIlBPIFRhYmxlIC0gQWlyZmFyZVwiPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tdGFibGUtYWlyZmFyZS9zYW1wbGUtcG8tdGFibGUtYWlyZmFyZS5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tdGFibGUtYWlyZmFyZS9zYW1wbGUtcG8tdGFibGUtYWlyZmFyZS5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS1haXJmYXJlL3NhbXBsZS1wby10YWJsZS1haXJmYXJlLnNlcnZpY2UudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby10YWJsZS1jb21wb25lbnRzXCIgdGl0bGU9XCJQTyBUYWJsZSAtIFBvIEZpZWxkIENvbXBvbmVudHNcIj5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXRhYmxlLWNvbXBvbmVudHMvc2FtcGxlLXBvLXRhYmxlLWNvbXBvbmVudHMuY29tcG9uZW50LnRzXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXRhYmxlLWNvbXBvbmVudHMvc2FtcGxlLXBvLXRhYmxlLWNvbXBvbmVudHMuZW51bS50c1wiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS1jb21wb25lbnRzL3NhbXBsZS1wby10YWJsZS1jb21wb25lbnRzLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXRhYmxlLWNvbXBvbmVudHMvc2FtcGxlLXBvLXRhYmxlLWNvbXBvbmVudHMuc2VydmljZS50c1wiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby10YWJsZS1jb21wb25lbnRzL3NhbXBsZS1wby10YWJsZS1jb21wb25lbnRzLmNvbXBvbmVudC5jc3NcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICpcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncG8tdGFibGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vcG8tdGFibGUuY29tcG9uZW50Lmh0bWwnLFxuICBwcm92aWRlcnM6IFtQb0RhdGVTZXJ2aWNlXVxufSlcbmV4cG9ydCBjbGFzcyBQb1RhYmxlQ29tcG9uZW50IGV4dGVuZHMgUG9UYWJsZUJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBEb0NoZWNrLCBPbkRlc3Ryb3kge1xuICBAQ29udGVudENoaWxkKFBvVGFibGVSb3dUZW1wbGF0ZURpcmVjdGl2ZSwgeyBzdGF0aWM6IHRydWUgfSkgdGFibGVSb3dUZW1wbGF0ZTogUG9UYWJsZVJvd1RlbXBsYXRlRGlyZWN0aXZlO1xuICBAQ29udGVudENoaWxkKFBvVGFibGVDZWxsVGVtcGxhdGVEaXJlY3RpdmUpIHRhYmxlQ2VsbFRlbXBsYXRlOiBQb1RhYmxlQ2VsbFRlbXBsYXRlRGlyZWN0aXZlO1xuXG4gIEBDb250ZW50Q2hpbGRyZW4oUG9UYWJsZUNvbHVtblRlbXBsYXRlRGlyZWN0aXZlKSB0YWJsZUNvbHVtblRlbXBsYXRlczogUXVlcnlMaXN0PFBvVGFibGVDb2x1bW5UZW1wbGF0ZURpcmVjdGl2ZT47XG5cbiAgQFZpZXdDaGlsZCgnbm9Db2x1bW5zSGVhZGVyJywgeyByZWFkOiBFbGVtZW50UmVmIH0pIG5vQ29sdW1uc0hlYWRlcjtcbiAgQFZpZXdDaGlsZCgncG9wdXAnKSBwb1BvcHVwQ29tcG9uZW50OiBQb1BvcHVwQ29tcG9uZW50O1xuICBAVmlld0NoaWxkKCd0YWJsZUZvb3RlcicsIHsgcmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiBmYWxzZSB9KSB0YWJsZUZvb3RlckVsZW1lbnQ7XG4gIEBWaWV3Q2hpbGQoJ3RhYmxlV3JhcHBlcicsIHsgcmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiBmYWxzZSB9KSB0YWJsZVdyYXBwZXJFbGVtZW50O1xuICBAVmlld0NoaWxkKCdwb1RhYmxlVGJvZHknLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogZmFsc2UgfSkgcG9UYWJsZVRib2R5O1xuICBAVmlld0NoaWxkKCdwb1RhYmxlVGhlYWQnLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogZmFsc2UgfSkgcG9UYWJsZVRoZWFkO1xuICBAVmlld0NoaWxkKCdwb1RhYmxlVGJvZHlWaXJ0dWFsJywgeyByZWFkOiBFbGVtZW50UmVmLCBzdGF0aWM6IGZhbHNlIH0pIHBvVGFibGVUYm9keVZpcnR1YWw7XG5cbiAgQFZpZXdDaGlsZHJlbignYWN0aW9uc0ljb25FbGVtZW50JywgeyByZWFkOiBFbGVtZW50UmVmIH0pIGFjdGlvbnNJY29uRWxlbWVudDogUXVlcnlMaXN0PGFueT47XG4gIEBWaWV3Q2hpbGRyZW4oJ2FjdGlvbnNFbGVtZW50JywgeyByZWFkOiBFbGVtZW50UmVmIH0pIGFjdGlvbnNFbGVtZW50OiBRdWVyeUxpc3Q8YW55PjtcbiAgQFZpZXdDaGlsZHJlbignaGVhZGVyc1RhYmxlJykgaGVhZGVyc1RhYmxlOiBRdWVyeUxpc3Q8YW55PjtcblxuICBoZWlnaHRUYWJsZUNvbnRhaW5lcjogbnVtYmVyO1xuICBwb3B1cFRhcmdldDtcbiAgdGFibGVPcGFjaXR5OiBudW1iZXIgPSAwO1xuICB0b29sdGlwVGV4dDogc3RyaW5nO1xuICBpdGVtU2l6ZTogbnVtYmVyO1xuICBsYXN0VmlzaWJsZUNvbHVtbnNTZWxlY3RlZDogQXJyYXk8UG9UYWJsZUNvbHVtbj47XG5cbiAgcHJpdmF0ZSBfY29sdW1uTWFuYWdlclRhcmdldDogRWxlbWVudFJlZjtcbiAgcHJpdmF0ZSBkaWZmZXI7XG4gIHByaXZhdGUgZm9vdGVySGVpZ2h0O1xuICBwcml2YXRlIGluaXRpYWxpemVkID0gZmFsc2U7XG4gIHByaXZhdGUgdGltZW91dFJlc2l6ZTtcbiAgcHJpdmF0ZSB2aXNpYmxlRWxlbWVudCA9IGZhbHNlO1xuICBwcml2YXRlIHNjcm9sbEV2ZW50JDogT2JzZXJ2YWJsZTxhbnk+O1xuICBwcml2YXRlIHN1YnNjcmlwdGlvblNjcm9sbEV2ZW50OiBTdWJzY3JpcHRpb247XG5cbiAgcHJpdmF0ZSBjbGlja0xpc3RlbmVyOiAoKSA9PiB2b2lkO1xuICBwcml2YXRlIHJlc2l6ZUxpc3RlbmVyOiAoKSA9PiB2b2lkO1xuXG4gIEBWaWV3Q2hpbGQoJ2NvbHVtbk1hbmFnZXJUYXJnZXQnKSBzZXQgY29sdW1uTWFuYWdlclRhcmdldCh2YWx1ZTogRWxlbWVudFJlZikge1xuICAgIHRoaXMuX2NvbHVtbk1hbmFnZXJUYXJnZXQgPSB2YWx1ZTtcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIGdldCBjb2x1bW5NYW5hZ2VyVGFyZ2V0KCkge1xuICAgIHJldHVybiB0aGlzLl9jb2x1bW5NYW5hZ2VyVGFyZ2V0O1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcG9EYXRlOiBQb0RhdGVTZXJ2aWNlLFxuICAgIGRpZmZlcnM6IEl0ZXJhYmxlRGlmZmVycyxcbiAgICByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIHBvTGFuZ3VhZ2VTZXJ2aWNlOiBQb0xhbmd1YWdlU2VydmljZSxcbiAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIGRlY2ltYWxQaXBlOiBEZWNpbWFsUGlwZSxcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgZGVmYXVsdFNlcnZpY2U6IFBvVGFibGVTZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKHBvRGF0ZSwgcG9MYW5ndWFnZVNlcnZpY2UsIGRlZmF1bHRTZXJ2aWNlKTtcblxuICAgIHRoaXMuZGlmZmVyID0gZGlmZmVycy5maW5kKFtdKS5jcmVhdGUobnVsbCk7XG5cbiAgICAvLyBUT0RPOiAjNTU1MCBhbyByZW1vdmVyIGVzdGUgbGlzdGVuZXIsIG5vIHBvcnRhbCwgcXVhbmRvIGFzIGNvbHVuYXMgZm9yZW0gZml4YXMgbsOjbyBzb2ZyZW1cbiAgICAvLyBhbHRlcmHDp8OjbyBkZSBsYXJndXJhLCBwb2lzIG8gbmdEb0NoZWNrIG7Do28gw6kgZXhlY3V0YWRvLlxuICAgIHRoaXMuY2xpY2tMaXN0ZW5lciA9IHJlbmRlcmVyLmxpc3RlbignZG9jdW1lbnQnLCAnY2xpY2snLCAoKSA9PiB7fSk7XG5cbiAgICB0aGlzLnJlc2l6ZUxpc3RlbmVyID0gcmVuZGVyZXIubGlzdGVuKCd3aW5kb3cnLCAncmVzaXplJywgKGV2ZW50OiBhbnkpID0+IHtcbiAgICAgIHRoaXMuZGVib3VuY2VSZXNpemUoKTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldCBoYXNSb3dUZW1wbGF0ZVdpdGhBcnJvd0RpcmVjdGlvblJpZ2h0KCkge1xuICAgIHJldHVybiB0aGlzLnRhYmxlUm93VGVtcGxhdGU/LnRhYmxlUm93VGVtcGxhdGVBcnJvd0RpcmVjdGlvbiA9PT0gUG9UYWJsZVJvd1RlbXBsYXRlQXJyb3dEaXJlY3Rpb24uUmlnaHQ7XG4gIH1cblxuICBnZXQgY29sdW1uQ291bnQoKSB7XG4gICAgY29uc3QgY29sdW1uQ291bnQgPVxuICAgICAgdGhpcy5tYWluQ29sdW1ucy5sZW5ndGggK1xuICAgICAgKHRoaXMuYWN0aW9ucy5sZW5ndGggPiAwID8gMSA6IDApICtcbiAgICAgICh0aGlzLnNlbGVjdGFibGUgPyAxIDogMCkgK1xuICAgICAgKCF0aGlzLmhpZGVEZXRhaWwgJiYgdGhpcy5jb2x1bW5NYXN0ZXJEZXRhaWwgIT09IHVuZGVmaW5lZCA/IDEgOiAwKTtcblxuICAgIHJldHVybiBjb2x1bW5Db3VudCB8fCAxO1xuICB9XG5cbiAgZ2V0IGNvbHVtbkNvdW50Rm9yTWFzdGVyRGV0YWlsKCkge1xuICAgIC8vIGNhc28gdGl2ZXIgYcOnw7VlcyBzZXLDoSB1dGlsaXphZG8gYSBzdWEgY29sdW5hIHBhcmEgZXhpYmlyIG8gY29sdW1uTWFuYWdlclxuICAgIGNvbnN0IGNvbHVtbk1hbmFnZXIgPSB0aGlzLmFjdGlvbnMubGVuZ3RoID8gMCA6IDE7XG5cbiAgICByZXR1cm4gdGhpcy5tYWluQ29sdW1ucy5sZW5ndGggKyAxICsgKHRoaXMuYWN0aW9ucy5sZW5ndGggPiAwID8gMSA6IDApICsgKHRoaXMuc2VsZWN0YWJsZSA/IDEgOiAwKSArIGNvbHVtbk1hbmFnZXI7XG4gIH1cblxuICBnZXQgZGV0YWlsSGlkZVNlbGVjdCgpIHtcbiAgICBjb25zdCBtYXN0ZXJEZXRhaWwgPSB0aGlzLmNvbHVtbk1hc3RlckRldGFpbDtcbiAgICByZXR1cm4gbWFzdGVyRGV0YWlsICYmIG1hc3RlckRldGFpbC5kZXRhaWwgPyBtYXN0ZXJEZXRhaWwuZGV0YWlsLmhpZGVTZWxlY3QgOiBmYWxzZTtcbiAgfVxuXG4gIGdldCBoYXNWaXNpYmxlQWN0aW9ucygpIHtcbiAgICByZXR1cm4gISF0aGlzLnZpc2libGVBY3Rpb25zLmxlbmd0aDtcbiAgfVxuXG4gIGdldCBmaXJzdEFjdGlvbigpOiBQb1RhYmxlQWN0aW9uIHtcbiAgICByZXR1cm4gdGhpcy52aXNpYmxlQWN0aW9ucyAmJiB0aGlzLnZpc2libGVBY3Rpb25zWzBdO1xuICB9XG5cbiAgZ2V0IGhhc0Zvb3RlcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXNJdGVtcyAmJiB0aGlzLmhhc1Zpc2libGVTdWJ0aXRsZUNvbHVtbnM7XG4gIH1cblxuICBnZXQgaGFzTWFzdGVyRGV0YWlsQ29sdW1uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLmhhc01haW5Db2x1bW5zICYmIHRoaXMuaGFzSXRlbXMgJiYgIXRoaXMuaGlkZURldGFpbCAmJiAhISh0aGlzLmNvbHVtbk1hc3RlckRldGFpbCB8fCB0aGlzLmhhc1Jvd1RlbXBsYXRlKVxuICAgICk7XG4gIH1cblxuICBnZXQgaGFzUm93VGVtcGxhdGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy50YWJsZVJvd1RlbXBsYXRlO1xuICB9XG5cbiAgZ2V0IGhhc1NlbGVjdGFibGVDb2x1bW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0YWJsZSAmJiB0aGlzLmhhc0l0ZW1zICYmIHRoaXMuaGFzTWFpbkNvbHVtbnM7XG4gIH1cblxuICBnZXQgaGFzVmFsaWRDb2x1bW5zKCkge1xuICAgIHJldHVybiAhIXRoaXMudmFsaWRDb2x1bW5zLmxlbmd0aDtcbiAgfVxuXG4gIGdldCBoYXNWaXNpYmxlU3VidGl0bGVDb2x1bW5zKCkge1xuICAgIHJldHVybiB0aGlzLnN1YnRpdGxlQ29sdW1ucy5zb21lKGNvbHVtbiA9PiBjb2x1bW4udmlzaWJsZSAhPT0gZmFsc2UpO1xuICB9XG5cbiAgZ2V0IGlzU2luZ2xlQWN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLnZpc2libGVBY3Rpb25zLmxlbmd0aCA9PT0gMTtcbiAgfVxuXG4gIGdldCB2aXNpYmxlQWN0aW9ucygpIHtcbiAgICByZXR1cm4gdGhpcy5hY3Rpb25zICYmIHRoaXMuYWN0aW9ucy5maWx0ZXIoYWN0aW9uID0+IGFjdGlvbiAmJiBhY3Rpb24udmlzaWJsZSAhPT0gZmFsc2UpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMuaW5pdGlhbGl6ZWQgPSB0cnVlO1xuICB9XG5cbiAgc2hvd01vcmVJbmZpbml0ZVNjcm9sbCh7IHRhcmdldCB9KTogdm9pZCB7XG4gICAgY29uc3Qgc2Nyb2xsUG9zaXRpb24gPSB0YXJnZXQub2Zmc2V0SGVpZ2h0ICsgdGFyZ2V0LnNjcm9sbFRvcDtcbiAgICBpZiAoIXRoaXMuc2hvd01vcmVEaXNhYmxlZCAmJiBzY3JvbGxQb3NpdGlvbiA+PSB0YXJnZXQuc2Nyb2xsSGVpZ2h0ICogKHRoaXMuaW5maW5pdGVTY3JvbGxEaXN0YW5jZSAvIDExMCkpIHtcbiAgICAgIHRoaXMub25TaG93TW9yZSgpO1xuICAgIH1cbiAgfVxuXG4gIG5nRG9DaGVjaygpIHtcbiAgICB0aGlzLmNoZWNrQ2hhbmdlc0l0ZW1zKCk7XG4gICAgdGhpcy52ZXJpZnlDYWxjdWxhdGVIZWlnaHRUYWJsZUNvbnRhaW5lcigpO1xuICAgIC8vIFBlcm1pdGUgcXVlIG9zIGNhYmXDp2FsaG9zIHNlamFtIGNhbGN1bGFkb3MgbmEgcHJpbWVpcmEgdmV6IHF1ZSBvIGNvbXBvbmVudGUgdG9ybmEtc2Ugdmlzw612ZWwsXG4gICAgLy8gZXZpdGFuZG8gY29tIGlzc28sIHByb2JsZW1hcyBjb20gVGFicyBvdSBEaXZzIHF1ZSBpbmljaWVtIGVzY29uZGlkYXMuXG4gICAgaWYgKHRoaXMudGFibGVXcmFwcGVyRWxlbWVudD8ubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aCAmJiAhdGhpcy52aXNpYmxlRWxlbWVudCAmJiB0aGlzLmluaXRpYWxpemVkKSB7XG4gICAgICB0aGlzLmRlYm91bmNlUmVzaXplKCk7XG4gICAgICB0aGlzLmNoZWNrSW5maW5pdGVTY3JvbGwoKTtcbiAgICAgIHRoaXMudmlzaWJsZUVsZW1lbnQgPSB0cnVlO1xuICAgIH1cbiAgICBkb2N1bWVudC5ib2R5Lm9mZnNldFdpZHRoID4gMTM2NiA/ICh0aGlzLml0ZW1TaXplID0gNDQpIDogKHRoaXMuaXRlbVNpemUgPSAzMik7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnJlbW92ZUxpc3RlbmVycygpO1xuICB9XG5cbiAgLyoqXG4gICAqIE3DqXRvZG8gcmVzcG9uc8OhdmVsIHBvciByZWFsaXphciBidXNjYSBubyBzZXJ2acOnbyBkZSBkYWRvcyBwb2RlbmRvIGluZm9ybWFyIGZpbHRyb3MgZSBjb20gbyByZXRvcm5vLCBhdHVhbGl6YSBhIHRhYmVsYS5cbiAgICpcbiAgICogQ2FzbyBuw6NvIHNlamEgaW5mb3JtYWRvIHBhcsOibWV0cm8sIG5hZGEgc2Vyw6EgYWRpY2lvbmFkbyBhbyBHRVQsIGNvbmZvcm1lIGFiYWl4bzpcbiAgICogYGBgXG4gICAqIHVybCArID9wYWdlPTEmcGFnZVNpemU9MTBcbiAgICogYGBgXG4gICAqID4gT2JzOiBvcyBwYXLDom1ldHJvcyBgcGFnZWAgZSBgcGFnZVNpemVgIHNlbXByZSBzZXLDo28gY2hhbWFkb3MgaW5kZXBlbmRlbnRlIGRlIHNlciBlbnZpYWRvcyBvdXRyb3MgcGFyw6JtZXRyb3MuXG4gICAqXG4gICAqIENhc28gc2VqYW0gaW5mb3JtYWRvcyBvcyBwYXLDom1ldHJvcyBgeyBuYW1lOiAnSk9ITicsIGFnZTogJzIzJyB9YCwgdG9kb3Mgc2Vyw6NvIGFkaWNpb25hZG9zIGFvIEdFVCwgY29uZm9ybWUgYWJhaXhvOlxuICAgKiBgYGBcbiAgICogdXJsICsgP3BhZ2U9MSZwYWdlU2l6ZT0xMCZuYW1lPUpPSE4mYWdlPTIzXG4gICAqIGBgYFxuICAgKlxuICAgKiBAcGFyYW0geyB7IGtleTogdmFsdWUgfSB9IHF1ZXJ5UGFyYW1zIEZvcm1hdG8gZG8gb2JqZXRvIGEgc2VyIGVudmlhZG8uXG4gICAqID4gUG9kZSBzZXIgdXRpbGl6YWRhIHF1YWxxdWVyIHN0cmluZyBjb21vIGtleSwgZSBxdWFscXVlciBzdHJpbmcgb3UgbnVtYmVyIGNvbW8gdmFsdWUuXG4gICAqL1xuICBhcHBseUZpbHRlcnMocXVlcnlQYXJhbXM/OiB7IFtrZXk6IHN0cmluZ106IFF1ZXJ5UGFyYW1zVHlwZSB9KSB7XG4gICAgdGhpcy5wYWdlID0gMTtcbiAgICB0aGlzLmluaXRpYWxpemVEYXRhKHF1ZXJ5UGFyYW1zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNw6l0b2RvIHF1ZSBjb2xhcHNhIHVtYSBsaW5oYSBjb20gZGV0YWxoZSBxdWFuZG8gZXhlY3V0YWRhLlxuICAgKlxuICAgKiBAcGFyYW0geyBudW1iZXIgfSByb3dJbmRleCDDjW5kaWNlIGRhIGxpbmhhIHF1ZSBzZXLDoSBjb2xhcHNhZGEuXG4gICAqID4gQW8gcmVvcmRlbmFyIG9zIGRhZG9zIGRhIHRhYmVsYSwgbyB2YWxvciBjb250aWRvIG5lc3RlIMOtbmRpY2Ugc2Vyw6EgYWx0ZXJhZG8gY29uZm9ybWUgYSBvcmRlbmHDp8Ojby5cbiAgICovXG4gIGNvbGxhcHNlKHJvd0luZGV4OiBudW1iZXIpIHtcbiAgICB0aGlzLnNldFNob3dEZXRhaWwocm93SW5kZXgsIGZhbHNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNw6l0b2RvIHF1ZSBleHBhbmRlIHVtYSBsaW5oYSBjb20gZGV0YWxoZSBxdWFuZG8gZXhlY3V0YWRhLlxuICAgKlxuICAgKiBAcGFyYW0geyBudW1iZXIgfSByb3dJbmRleCDDjW5kaWNlIGRhIGxpbmhhIHF1ZSBzZXLDoSBleHBhbmRpZGEuXG4gICAqID4gQW8gcmVvcmRlbmFyIG9zIGRhZG9zIGRhIHRhYmVsYSwgbyB2YWxvciBjb250aWRvIG5lc3RlIMOtbmRpY2Ugc2Vyw6EgYWx0ZXJhZG8gY29uZm9ybWUgYSBvcmRlbmHDp8Ojby5cbiAgICovXG4gIGV4cGFuZChyb3dJbmRleDogbnVtYmVyKSB7XG4gICAgdGhpcy5zZXRTaG93RGV0YWlsKHJvd0luZGV4LCB0cnVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRvcm5hIGFzIGxpbmhhcyBkbyBgcG8tdGFibGVgIHF1ZSBlc3TDo28gc2VsZWNpb25hZGFzLlxuICAgKi9cbiAgZ2V0U2VsZWN0ZWRSb3dzKCkge1xuICAgIHJldHVybiB0aGlzLml0ZW1zLmZpbHRlcihpdGVtID0+IGl0ZW0uJHNlbGVjdGVkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRvcm5hIGFzIGxpbmhhcyBkbyBgcG8tdGFibGVgIHF1ZSBuw6NvIGVzdMOjbyBzZWxlY2lvbmFkYXMuXG4gICAqL1xuICBnZXRVbnNlbGVjdGVkUm93cygpIHtcbiAgICByZXR1cm4gdGhpcy5pdGVtcy5maWx0ZXIoaXRlbSA9PiAhaXRlbS4kc2VsZWN0ZWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIERlc21hcmNhIGFzIGxpbmhhcyBxdWUgZXN0w6NvIHNlbGVjaW9uYWRhcy5cbiAgICovXG4gIHVuc2VsZWN0Um93cygpIHtcbiAgICBjb25zdCBjb2x1bW5EZXRhaWwgPSB0aGlzLm5hbWVDb2x1bW5EZXRhaWw7XG5cbiAgICB0aGlzLml0ZW1zLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICBjb25zdCBkZXRhaWxJdGVtcyA9IGNvbHVtbkRldGFpbCA/IGl0ZW1bY29sdW1uRGV0YWlsXSA6IG51bGw7XG5cbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGRldGFpbEl0ZW1zKSkge1xuICAgICAgICBkZXRhaWxJdGVtcy5mb3JFYWNoKGRldGFpbEl0ZW0gPT4ge1xuICAgICAgICAgIGRldGFpbEl0ZW0uJHNlbGVjdGVkID0gZmFsc2U7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBpdGVtLiRzZWxlY3RlZCA9IGZhbHNlO1xuICAgIH0pO1xuXG4gICAgdGhpcy5zZWxlY3RBbGwgPSBmYWxzZTtcbiAgfVxuXG4gIGNoZWNrRGlzYWJsZWQocm93LCBjb2x1bW46IFBvVGFibGVDb2x1bW4pIHtcbiAgICByZXR1cm4gY29sdW1uLmRpc2FibGVkID8gY29sdW1uLmRpc2FibGVkKHJvdykgOiBmYWxzZTtcbiAgfVxuXG4gIGNvbnRhaW5zTWFzdGVyRGV0YWlsKHJvdykge1xuICAgIHJldHVybiByb3dbdGhpcy5uYW1lQ29sdW1uRGV0YWlsXSAmJiByb3dbdGhpcy5uYW1lQ29sdW1uRGV0YWlsXS5sZW5ndGg7XG4gIH1cblxuICBleGVjdXRlVGFibGVBY3Rpb24ocm93OiBhbnksIHRhYmxlQWN0aW9uOiBhbnkpIHtcbiAgICBpZiAoIXJvdy5kaXNhYmxlZCAmJiAhdGhpcy52YWxpZGF0ZVRhYmxlQWN0aW9uKHJvdywgdGFibGVBY3Rpb24pKSB7XG4gICAgICB0YWJsZUFjdGlvbi5hY3Rpb24ocm93KTtcbiAgICAgIHRoaXMudG9nZ2xlUm93QWN0aW9uKHJvdyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIERlc21hcmNhIHVtYSBsaW5oYSBxdWUgZXN0w6Egc2VsZWNpb25hZGEuXG4gICAqL1xuICB1bnNlbGVjdFJvd0l0ZW0oaXRlbWZuOiB7IFtrZXk6IHN0cmluZ106IGFueSB9IHwgKChpdGVtKSA9PiBib29sZWFuKSkge1xuICAgIHRoaXMudG9nZ2xlU2VsZWN0KGl0ZW1mbiwgZmFsc2UpO1xuXG4gICAgaWYgKHRoaXMuaXRlbXMuZXZlcnkoaXRlbSA9PiAhaXRlbS4kc2VsZWN0ZWQpKSB7XG4gICAgICB0aGlzLnNlbGVjdEFsbCA9IGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdEFsbCA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNlbGVjaW9uYSB1bWEgbGluaGEgZG8gJ3BvLXRhYmxlJy5cbiAgICovXG4gIHNlbGVjdFJvd0l0ZW0oaXRlbWZuOiB7IFtrZXk6IHN0cmluZ106IGFueSB9IHwgKChpdGVtKSA9PiBib29sZWFuKSkge1xuICAgIHRoaXMudG9nZ2xlU2VsZWN0KGl0ZW1mbiwgdHJ1ZSk7XG5cbiAgICBpZiAodGhpcy5pdGVtcy5ldmVyeShpdGVtID0+IGl0ZW0uJHNlbGVjdGVkKSkge1xuICAgICAgdGhpcy5zZWxlY3RBbGwgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdEFsbCA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgZm9ybWF0TnVtYmVyKHZhbHVlOiBhbnksIGZvcm1hdDogc3RyaW5nKSB7XG4gICAgaWYgKCFmb3JtYXQpIHtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5kZWNpbWFsUGlwZS50cmFuc2Zvcm0odmFsdWUsIGZvcm1hdCk7XG4gIH1cblxuICBnZXRDZWxsRGF0YShyb3c6IGFueSwgY29sdW1uOiBQb1RhYmxlQ29sdW1uKTogYW55IHtcbiAgICBjb25zdCBhcnJheVByb3BlcnR5ID0gY29sdW1uLnByb3BlcnR5LnNwbGl0KCcuJyk7XG4gICAgaWYgKGFycmF5UHJvcGVydHkubGVuZ3RoID4gMSkge1xuICAgICAgY29uc3QgbmVzdGVkUHJvcGVydGllcyA9IGFycmF5UHJvcGVydHk7XG4gICAgICBsZXQgdmFsdWU6IGFueSA9IHJvdztcbiAgICAgIGZvciAoY29uc3QgcHJvcGVydHkgb2YgbmVzdGVkUHJvcGVydGllcykge1xuICAgICAgICB2YWx1ZSA9IHZhbHVlW3Byb3BlcnR5XSB8fCB2YWx1ZVtwcm9wZXJ0eV0gPT09IDAgPyB2YWx1ZVtwcm9wZXJ0eV0gOiAnJztcbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHJvd1tjb2x1bW4ucHJvcGVydHldO1xuICAgIH1cbiAgfVxuXG4gIGdldEJvb2xlYW5MYWJlbChyb3dWYWx1ZTogYW55LCBjb2x1bW5Cb29sZWFuOiBQb1RhYmxlQ29sdW1uKTogc3RyaW5nIHtcbiAgICBpZiAocm93VmFsdWUgfHwgcm93VmFsdWUgPT09IGZhbHNlIHx8IHJvd1ZhbHVlID09PSAwKSB7XG4gICAgICByb3dWYWx1ZSA9IGNvbnZlcnRUb0Jvb2xlYW4ocm93VmFsdWUpO1xuXG4gICAgICBpZiAoY29sdW1uQm9vbGVhbi5ib29sZWFuKSB7XG4gICAgICAgIHJldHVybiByb3dWYWx1ZSA/IGNvbHVtbkJvb2xlYW4uYm9vbGVhbi50cnVlTGFiZWwgfHwgJ1NpbScgOiBjb2x1bW5Cb29sZWFuLmJvb2xlYW4uZmFsc2VMYWJlbCB8fCAnTsOjbyc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gcm93VmFsdWUgPyAnU2ltJyA6ICdOw6NvJztcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcm93VmFsdWU7XG4gIH1cblxuICBnZXRDb2x1bW5JY29ucyhyb3c6IGFueSwgY29sdW1uOiBQb1RhYmxlQ29sdW1uKSB7XG4gICAgY29uc3Qgcm93SWNvbnMgPSB0aGlzLmdldENlbGxEYXRhKHJvdywgY29sdW1uKTtcblxuICAgIGlmIChjb2x1bW4uaWNvbnMpIHtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHJvd0ljb25zKSkge1xuICAgICAgICByZXR1cm4gdGhpcy5tZXJnZUN1c3RvbUljb25zKHJvd0ljb25zLCBjb2x1bW4uaWNvbnMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmluZEN1c3RvbUljb24ocm93SWNvbnMsIGNvbHVtbik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJvd0ljb25zO1xuICB9XG5cbiAgZ2V0Q29sdW1uTGFiZWwocm93OiBhbnksIGNvbHVtbkxhYmVsOiBQb1RhYmxlQ29sdW1uKTogUG9UYWJsZUNvbHVtbkxhYmVsIHtcbiAgICByZXR1cm4gY29sdW1uTGFiZWwubGFiZWxzLmZpbmQobGFiZWxJdGVtID0+IHRoaXMuZ2V0Q2VsbERhdGEocm93LCBjb2x1bW5MYWJlbCkgPT09IGxhYmVsSXRlbS52YWx1ZSk7XG4gIH1cblxuICBnZXRTdWJ0aXRsZUNvbHVtbihyb3c6IGFueSwgc3VidGl0bGVDb2x1bW46IFBvVGFibGVDb2x1bW4pOiBQb1RhYmxlU3VidGl0bGVDb2x1bW4ge1xuICAgIHJldHVybiBzdWJ0aXRsZUNvbHVtbi5zdWJ0aXRsZXMuZmluZChzdWJ0aXRsZUl0ZW0gPT4gdGhpcy5nZXRDZWxsRGF0YShyb3csIHN1YnRpdGxlQ29sdW1uKSA9PT0gc3VidGl0bGVJdGVtLnZhbHVlKTtcbiAgfVxuXG4gIGlzU2hvd01hc3RlckRldGFpbChyb3cpIHtcbiAgICByZXR1cm4gKFxuICAgICAgIXRoaXMuaGlkZURldGFpbCAmJlxuICAgICAgdGhpcy5uYW1lQ29sdW1uRGV0YWlsICYmXG4gICAgICByb3cuJHNob3dEZXRhaWwgJiZcbiAgICAgIHRoaXMuY29udGFpbnNNYXN0ZXJEZXRhaWwocm93KSAmJlxuICAgICAgIXRoaXMuaGFzUm93VGVtcGxhdGVcbiAgICApO1xuICB9XG5cbiAgaXNTaG93Um93VGVtcGxhdGUocm93LCBpbmRleDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMudGFibGVSb3dUZW1wbGF0ZSAmJiB0aGlzLnRhYmxlUm93VGVtcGxhdGUucG9UYWJsZVJvd1RlbXBsYXRlU2hvdykge1xuICAgICAgcmV0dXJuIHRoaXMudGFibGVSb3dUZW1wbGF0ZS5wb1RhYmxlUm93VGVtcGxhdGVTaG93KHJvdywgaW5kZXgpO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgb25DbGlja0xpbmsoZXZlbnQsIHJvdywgY29sdW1uOiBQb1RhYmxlQ29sdW1uKSB7XG4gICAgaWYgKCF0aGlzLmNoZWNrRGlzYWJsZWQocm93LCBjb2x1bW4pKSB7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG4gIH1cblxuICBvbkNoYW5nZVZpc2libGVDb2x1bW5zKGNvbHVtbnM6IEFycmF5PHN0cmluZz4pIHtcbiAgICB0aGlzLmNoYW5nZVZpc2libGVDb2x1bW5zLmVtaXQoY29sdW1ucyk7XG4gIH1cblxuICBvbkNvbHVtblJlc3RvcmVNYW5hZ2VyKHZhbHVlOiBBcnJheTxTdHJpbmc+KSB7XG4gICAgdGhpcy5jb2x1bW5SZXN0b3JlTWFuYWdlci5lbWl0KHZhbHVlKTtcbiAgfVxuXG4gIG9uVmlzaWJsZUNvbHVtbnNDaGFuZ2UoY29sdW1uczogQXJyYXk8UG9UYWJsZUNvbHVtbj4pIHtcbiAgICB0aGlzLmNvbHVtbnMgPSBjb2x1bW5zO1xuXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICB0b29sdGlwTW91c2VFbnRlcihldmVudDogYW55LCBjb2x1bW4/OiBQb1RhYmxlQ29sdW1uLCByb3c/OiBhbnkpIHtcbiAgICB0aGlzLnRvb2x0aXBUZXh0ID0gdW5kZWZpbmVkO1xuXG4gICAgaWYgKHRoaXMuaGlkZVRleHRPdmVyZmxvdyAmJiBldmVudC50YXJnZXQub2Zmc2V0V2lkdGggPCBldmVudC50YXJnZXQuc2Nyb2xsV2lkdGggJiYgZXZlbnQudGFyZ2V0LmlubmVyVGV4dC50cmltKCkpIHtcbiAgICAgIHJldHVybiAodGhpcy50b29sdGlwVGV4dCA9IGV2ZW50LnRhcmdldC5pbm5lclRleHQpO1xuICAgIH1cblxuICAgIGlmIChjb2x1bW4pIHtcbiAgICAgIHRoaXMuY2hlY2tpbmdJZkNvbHVtbkhhc1Rvb2x0aXAoY29sdW1uLCByb3cpO1xuICAgIH1cbiAgfVxuXG4gIHRvb2x0aXBNb3VzZUxlYXZlKCkge1xuICAgIHRoaXMudG9vbHRpcFRleHQgPSB1bmRlZmluZWQ7XG4gIH1cblxuICB0b2dnbGVQb3B1cChyb3csIHRhcmdldFJlZikge1xuICAgIHRoaXMucG9wdXBUYXJnZXQgPSB0YXJnZXRSZWY7XG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICB0aGlzLnBvUG9wdXBDb21wb25lbnQudG9nZ2xlKHJvdyk7XG4gIH1cblxuICB0cmFja0J5KGluZGV4OiBudW1iZXIpIHtcbiAgICByZXR1cm4gaW5kZXg7XG4gIH1cblxuICB2YWxpZGF0ZVRhYmxlQWN0aW9uKHJvdzogYW55LCB0YWJsZUFjdGlvbjogYW55KSB7XG4gICAgaWYgKHR5cGVvZiB0YWJsZUFjdGlvbi5kaXNhYmxlZCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIHRhYmxlQWN0aW9uLmRpc2FibGVkKHJvdyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0YWJsZUFjdGlvbi5kaXNhYmxlZDtcbiAgICB9XG4gIH1cblxuICBvbk9wZW5Db2x1bW5NYW5hZ2VyKCkge1xuICAgIHRoaXMubGFzdFZpc2libGVDb2x1bW5zU2VsZWN0ZWQgPSBbLi4udGhpcy5jb2x1bW5zXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNw6l0b2RvIHF1ZSByZW1vdmUgdW0gaXRlbSBkYSB0YWJlbGEuXG4gICAqXG4gICAqIEBwYXJhbSB7IG51bWJlciB8IHsga2V5OiB2YWx1ZSB9IH0gaXRlbSDDjW5kaWNlIGRhIGxpbmhhIG91IG8gaXRlbSBxdWUgc2Vyw6EgcmVtb3ZpZG8uXG4gICAqID4gQW8gcmVtb3ZlciBvIGl0ZW0sIGEgbGluaGEgcXVlIG8gcmVwcmVzZW50YSBzZXLDoSBleGNsdcOtZGEgZGEgdGFiZWxhLlxuICAgKi9cbiAgcmVtb3ZlSXRlbShpdGVtOiBudW1iZXIgfCB7IFtrZXk6IHN0cmluZ106IGFueSB9KSB7XG4gICAgaWYgKGl0ZW0gaW5zdGFuY2VvZiBPYmplY3QpIHtcbiAgICAgIHRoaXMuaXRlbXMgPSB0aGlzLml0ZW1zLmZpbHRlcihmaWx0ZXJJdGVtID0+IGZpbHRlckl0ZW0gIT09IGl0ZW0pO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIGl0ZW0gPT09ICdudW1iZXInKSB7XG4gICAgICBjb25zdCBpbmRleDogbnVtYmVyID0gaXRlbTtcbiAgICAgIHRoaXMuaXRlbXMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTcOpdG9kbyBxdWUgYXR1YWxpemEgdW0gaXRlbSBkYSB0YWJlbGEuXG4gICAqXG4gICAqIEBwYXJhbSB7IG51bWJlciB8IHsga2V5OiB2YWx1ZSB9IH0gaXRlbSDDjW5kaWNlIGRhIGxpbmhhIG91IG8gaXRlbSBxdWUgc2Vyw6EgYXR1YWxpemFkby5cbiAgICogQHBhcmFtIHsgeyBrZXk6IHZhbHVlIH0gfSB1cGRhdGVkSXRlbSBJdGVtIHF1ZSBmb2kgYXR1YWxpemFkby5cbiAgICogPiBBbyBhdHVhbGl6YXIgbyBpdGVtLCBhIGluZm9ybWHDp8OjbyBzZXLDoSBhbHRlcmFkYSBuYSB0YWJlbGEuXG4gICAqL1xuICB1cGRhdGVJdGVtKGl0ZW06IG51bWJlciB8IHsgW2tleTogc3RyaW5nXTogYW55IH0sIHVwZGF0ZWRJdGVtOiB7IFtrZXk6IHN0cmluZ106IGFueSB9KSB7XG4gICAgaWYgKHR5cGVvZiBpdGVtID09PSAnbnVtYmVyJykge1xuICAgICAgdGhpcy5pdGVtcy5zcGxpY2UoaXRlbSwgMSwgdXBkYXRlZEl0ZW0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBpbmRleCA9IHRoaXMuaXRlbXMuZmluZEluZGV4KGluZGV4SXRlbSA9PiBpbmRleEl0ZW0gPT09IGl0ZW0pO1xuICAgICAgdGhpcy5pdGVtcy5zcGxpY2UoaW5kZXgsIDEsIHVwZGF0ZWRJdGVtKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0VGVtcGxhdGUoY29sdW1uOiBQb1RhYmxlQ29sdW1uKTogVGVtcGxhdGVSZWY8YW55PiB7XG4gICAgY29uc3QgdGVtcGxhdGU6IFBvVGFibGVDb2x1bW5UZW1wbGF0ZURpcmVjdGl2ZSA9IHRoaXMudGFibGVDb2x1bW5UZW1wbGF0ZXMuZmluZChcbiAgICAgIHRhYmxlQ29sdW1uVGVtcGxhdGUgPT4gdGFibGVDb2x1bW5UZW1wbGF0ZS50YXJnZXRQcm9wZXJ0eSA9PT0gY29sdW1uLnByb3BlcnR5XG4gICAgKTtcbiAgICBpZiAoIXRlbXBsYXRlKSB7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIGBOw6NvIGZvaSBwb3Nzw612ZWwgZW5jb250cmFyIG8gdGVtcGxhdGUgcGFyYSBhIGNvbHVuYTogJHtjb2x1bW4ucHJvcGVydHl9LCBwb3IgZ2VudGlsZXphIGluZm9ybWUgYSBwcm9wcmllZGFkZSBbcC1wcm9wZXJ0eV1gXG4gICAgICApO1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiB0ZW1wbGF0ZS50ZW1wbGF0ZVJlZjtcbiAgfVxuXG4gIHB1YmxpYyBzeW5jcm9uaXplSG9yaXpvbnRhbFNjcm9sbCgpOiB2b2lkIHtcbiAgICB0aGlzLnBvVGFibGVUaGVhZC5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQgPSB0aGlzLnBvVGFibGVUYm9keVZpcnR1YWwubmF0aXZlRWxlbWVudC5zY3JvbGxMZWZ0O1xuICB9XG5cbiAgcHJvdGVjdGVkIGNhbGN1bGF0ZUhlaWdodFRhYmxlQ29udGFpbmVyKGhlaWdodCkge1xuICAgIGNvbnN0IHZhbHVlID0gcGFyc2VGbG9hdChoZWlnaHQpO1xuICAgIHRoaXMuaGVpZ2h0VGFibGVDb250YWluZXIgPSB2YWx1ZSA/IHZhbHVlIC0gdGhpcy5nZXRIZWlnaHRUYWJsZUZvb3RlcigpIDogdW5kZWZpbmVkO1xuICAgIHRoaXMuc2V0VGFibGVPcGFjaXR5KDEpO1xuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNhbGN1bGF0ZVdpZHRoSGVhZGVycygpIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICh0aGlzLmhlaWdodCkge1xuICAgICAgICB0aGlzLmhlYWRlcnNUYWJsZS5mb3JFYWNoKGhlYWRlciA9PiB7XG4gICAgICAgICAgY29uc3QgZGl2SGVhZGVyID0gaGVhZGVyLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLnBvLXRhYmxlLWhlYWRlci1maXhlZC1pbm5lcicpO1xuICAgICAgICAgIGlmIChkaXZIZWFkZXIpIHtcbiAgICAgICAgICAgIGRpdkhlYWRlci5zdHlsZS53aWR0aCA9IGAke2hlYWRlci5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRofXB4YDtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgY2hlY2tJbmZpbml0ZVNjcm9sbCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5oYXNJbmZpbml0ZVNjcm9sbCgpKSB7XG4gICAgICBpZiAodGhpcy5wb1RhYmxlVGJvZHlWaXJ0dWFsLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSGVpZ2h0ID49IHRoaXMuaGVpZ2h0KSB7XG4gICAgICAgIHRoaXMuaW5jbHVkZUluZmluaXRlU2Nyb2xsKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmluZmluaXRlU2Nyb2xsID0gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGVja0NoYW5nZXNJdGVtcygpIHtcbiAgICBjb25zdCBjaGFuZ2VzSXRlbXMgPSB0aGlzLmRpZmZlci5kaWZmKHRoaXMuaXRlbXMpO1xuXG4gICAgaWYgKGNoYW5nZXNJdGVtcyAmJiB0aGlzLnNlbGVjdEFsbCkge1xuICAgICAgdGhpcy5zZWxlY3RBbGwgPSBudWxsO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2VzSXRlbXMgJiYgIXRoaXMuaGFzQ29sdW1ucyAmJiB0aGlzLmhhc0l0ZW1zKSB7XG4gICAgICB0aGlzLmNvbHVtbnMgPSB0aGlzLmdldERlZmF1bHRDb2x1bW5zKHRoaXMuaXRlbXNbMF0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY2hlY2tpbmdJZkNvbHVtbkhhc1Rvb2x0aXAoY29sdW1uLCByb3cpIHtcbiAgICBpZiAoY29sdW1uLnR5cGUgPT09ICdsaW5rJyAmJiBjb2x1bW4udG9vbHRpcCAmJiAhdGhpcy5jaGVja0Rpc2FibGVkKHJvdywgY29sdW1uKSkge1xuICAgICAgcmV0dXJuICh0aGlzLnRvb2x0aXBUZXh0ID0gY29sdW1uLnRvb2x0aXApO1xuICAgIH1cblxuICAgIGlmIChjb2x1bW4udHlwZSA9PT0gJ2xhYmVsJykge1xuICAgICAgY29uc3QgY29sdW1uTGFiZWwgPSB0aGlzLmdldENvbHVtbkxhYmVsKHJvdywgY29sdW1uKTtcbiAgICAgIHJldHVybiAodGhpcy50b29sdGlwVGV4dCA9IGNvbHVtbkxhYmVsPy50b29sdGlwKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGRlYm91bmNlUmVzaXplKCkge1xuICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVvdXRSZXNpemUpO1xuICAgIHRoaXMudGltZW91dFJlc2l6ZSA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5jYWxjdWxhdGVXaWR0aEhlYWRlcnMoKTtcblxuICAgICAgLy8gc2hvdyB0aGUgdGFibGVcbiAgICAgIHRoaXMuc2V0VGFibGVPcGFjaXR5KDEpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBmaW5kQ3VzdG9tSWNvbihyb3dJY29ucywgY29sdW1uOiBQb1RhYmxlQ29sdW1uKSB7XG4gICAgY29uc3QgY3VzdG9tSWNvbiA9IGNvbHVtbi5pY29ucy5maW5kKGljb24gPT4gcm93SWNvbnMgPT09IGljb24udmFsdWUpO1xuICAgIHJldHVybiBjdXN0b21JY29uID8gW2N1c3RvbUljb25dIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRIZWlnaHRUYWJsZUZvb3RlcigpIHtcbiAgICByZXR1cm4gdGhpcy50YWJsZUZvb3RlckVsZW1lbnQgPyB0aGlzLnRhYmxlRm9vdGVyRWxlbWVudC5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodCA6IDA7XG4gIH1cblxuICBwcml2YXRlIGhhc0luZmluaXRlU2Nyb2xsKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLmluZmluaXRlU2Nyb2xsICYmXG4gICAgICB0aGlzLmhhc0l0ZW1zICYmXG4gICAgICAhdGhpcy5zdWJzY3JpcHRpb25TY3JvbGxFdmVudCAmJlxuICAgICAgdGhpcy5oZWlnaHQgJiZcbiAgICAgIHRoaXMucG9UYWJsZVRib2R5VmlydHVhbC5uYXRpdmVFbGVtZW50LnNjcm9sbEhlaWdodFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGluY2x1ZGVJbmZpbml0ZVNjcm9sbCgpOiB2b2lkIHtcbiAgICB0aGlzLnNjcm9sbEV2ZW50JCA9IHRoaXMuZGVmYXVsdFNlcnZpY2Uuc2Nyb2xsTGlzdGVuZXIodGhpcy5wb1RhYmxlVGJvZHlWaXJ0dWFsLm5hdGl2ZUVsZW1lbnQpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uU2Nyb2xsRXZlbnQgPSB0aGlzLnNjcm9sbEV2ZW50JC5zdWJzY3JpYmUoZXZlbnQgPT4gdGhpcy5zaG93TW9yZUluZmluaXRlU2Nyb2xsKGV2ZW50KSk7XG5cbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHByaXZhdGUgbWVyZ2VDdXN0b21JY29ucyhyb3dJY29uczogQXJyYXk8c3RyaW5nPiwgY3VzdG9tSWNvbnM6IEFycmF5PGFueT4pIHtcbiAgICBjb25zdCBtZXJnZWRJY29ucyA9IFtdO1xuXG4gICAgcm93SWNvbnMuZm9yRWFjaChjb2x1bW5WYWx1ZSA9PiB7XG4gICAgICBjb25zdCBmb3VuZEN1c3RvbUljb24gPSBjdXN0b21JY29ucy5maW5kKFxuICAgICAgICBjdXN0b21JY29uID0+IGNvbHVtblZhbHVlID09PSBjdXN0b21JY29uLmljb24gfHwgY29sdW1uVmFsdWUgPT09IGN1c3RvbUljb24udmFsdWVcbiAgICAgICk7XG4gICAgICBmb3VuZEN1c3RvbUljb24gPyBtZXJnZWRJY29ucy5wdXNoKGZvdW5kQ3VzdG9tSWNvbikgOiBtZXJnZWRJY29ucy5wdXNoKGNvbHVtblZhbHVlKTtcbiAgICB9KTtcblxuICAgIHJldHVybiBtZXJnZWRJY29ucztcbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlTGlzdGVuZXJzKCkge1xuICAgIGlmICh0aGlzLnJlc2l6ZUxpc3RlbmVyKSB7XG4gICAgICB0aGlzLnJlc2l6ZUxpc3RlbmVyKCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY2xpY2tMaXN0ZW5lcikge1xuICAgICAgdGhpcy5jbGlja0xpc3RlbmVyKCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc3Vic2NyaXB0aW9uU2Nyb2xsRXZlbnQpIHtcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9uU2Nyb2xsRXZlbnQudW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldFRhYmxlT3BhY2l0eSh2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy50YWJsZU9wYWNpdHkgPSB2YWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgdmVyaWZ5Q2hhbmdlSGVpZ2h0SW5Gb290ZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuZm9vdGVySGVpZ2h0ICE9PSB0aGlzLmdldEhlaWdodFRhYmxlRm9vdGVyKCk7XG4gIH1cblxuICBwcml2YXRlIHZlcmlmeUNhbGN1bGF0ZUhlaWdodFRhYmxlQ29udGFpbmVyKCkge1xuICAgIGlmICh0aGlzLmhlaWdodCAmJiB0aGlzLnZlcmlmeUNoYW5nZUhlaWdodEluRm9vdGVyKCkpIHtcbiAgICAgIHRoaXMuZm9vdGVySGVpZ2h0ID0gdGhpcy5nZXRIZWlnaHRUYWJsZUZvb3RlcigpO1xuICAgICAgdGhpcy5jYWxjdWxhdGVIZWlnaHRUYWJsZUNvbnRhaW5lcih0aGlzLmhlaWdodCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB0b2dnbGVTZWxlY3QoY29tcGFyZSwgc2VsZWN0VmFsdWU6IGJvb2xlYW4pIHtcbiAgICBpZiAodHlwZW9mIGNvbXBhcmUgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHRoaXMuaXRlbXMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgaWYgKGl0ZW0gPT09IGNvbXBhcmUpIHtcbiAgICAgICAgICBpdGVtLiRzZWxlY3RlZCA9IHNlbGVjdFZhbHVlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pdGVtcy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICBpZiAoY29tcGFyZShpdGVtKSkge1xuICAgICAgICAgIGl0ZW0uJHNlbGVjdGVkID0gc2VsZWN0VmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuIiwiPHBvLWNvbnRhaW5lciAqbmdJZj1cImNvbnRhaW5lcjsgZWxzZSB0YWJsZUNvbnRhaW5lclRlbXBsYXRlXCIgcC1uby1wYWRkaW5nIFtwLW5vLXNoYWRvd109XCJjb250YWluZXIgPT09ICdib3JkZXInXCI+XG4gIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0YWJsZUNvbnRhaW5lclRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG48L3BvLWNvbnRhaW5lcj5cblxuPG5nLXRlbXBsYXRlICN0YWJsZUNvbnRhaW5lclRlbXBsYXRlPlxuICA8ZGl2IFtjbGFzcy5wby10YWJsZS1jb250YWluZXItcmVsYXRpdmVdPVwibG9hZGluZ1wiPlxuICAgIDxkaXYgKm5nSWY9XCJsb2FkaW5nXCIgY2xhc3M9XCJwby10YWJsZS1vdmVybGF5XCI+XG4gICAgICA8cG8tbG9hZGluZyBjbGFzcz1cInBvLXRhYmxlLW92ZXJsYXktY29udGVudFwiIFtwLXRleHRdPVwibGl0ZXJhbHMubG9hZGluZ0RhdGFcIj48L3BvLWxvYWRpbmc+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwicG8tdGFibGUtbWFpbi1jb250YWluZXJcIj5cbiAgICAgIDxkaXZcbiAgICAgICAgI3RhYmxlV3JhcHBlclxuICAgICAgICBjbGFzcz1cInBvLXRhYmxlLXdyYXBwZXJcIlxuICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLWZpeGVkLWNvbHVtbnMtcGl4ZWxzXT1cImFsbENvbHVtbnNXaWR0aFBpeGVsc1wiXG4gICAgICAgIFtzdHlsZS5vcGFjaXR5XT1cInRhYmxlT3BhY2l0eVwiXG4gICAgICA+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJoZWlnaHRcIiBjbGFzcz1cInBvLXRhYmxlLWNvbnRhaW5lclwiPlxuICAgICAgICAgIDxkaXYgI3BvVGFibGVUaGVhZCBjbGFzcz1cInBvLXRhYmxlLWhlYWRlci1maXhlZCBwby10YWJsZS1oZWFkZXJcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0YWJsZUhlYWRlclRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2ICNwb1RhYmxlVGJvZHkgY2xhc3M9XCJwby10YWJsZS1jb250YWluZXItZml4ZWQtaW5uZXJcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJoZWlnaHQ7IHRoZW4gdGFibGVCb2R5VGVtcGxhdGU7IGVsc2UgdGFibGVUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2ICpuZ0lmPVwiIWhlaWdodFwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0YWJsZVRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJwby10YWJsZS1mb290ZXJcIiAqbmdJZj1cImhhc0Zvb3RlclwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiBzdWJ0aXRsZUNvbHVtbnM7IHRyYWNrQnk6IHRyYWNrQnlcIj5cbiAgICAgIDxwby10YWJsZS1zdWJ0aXRsZS1mb290ZXIgW3AtbGl0ZXJhbHNdPVwibGl0ZXJhbHNcIiBbcC1zdWJ0aXRsZXNdPVwiY29sdW1uLnN1YnRpdGxlc1wiPiA8L3BvLXRhYmxlLXN1YnRpdGxlLWZvb3Rlcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48ZGl2XG4gICpuZ0lmPVwiIWluZmluaXRlU2Nyb2xsXCJcbiAgY2xhc3M9XCJwby1yb3cgcG8tdGFibGUtZm9vdGVyLXNob3ctbW9yZVwiXG4gIFtjbGFzcy5wby1pbnZpc2libGVdPVwic2hvd01vcmUub2JzZXJ2ZXJzLmxlbmd0aCA9PT0gMCAmJiAhaGFzU2VydmljZVwiXG4gICN0YWJsZUZvb3RlclxuPlxuICA8cG8tYnV0dG9uXG4gICAgY2xhc3M9XCJwby1vZmZzZXQteGwtNCBwby1vZmZzZXQtbGctNCBwby1vZmZzZXQtbWQtMyBwby1sZy00IHBvLW1kLTZcIlxuICAgIFtwLWRpc2FibGVkXT1cInNob3dNb3JlRGlzYWJsZWRcIlxuICAgIFtwLWxhYmVsXT1cImxpdGVyYWxzLmxvYWRNb3JlRGF0YVwiXG4gICAgW3AtbG9hZGluZ109XCJsb2FkaW5nU2hvd01vcmVcIlxuICAgIChwLWNsaWNrKT1cIm9uU2hvd01vcmUoKVwiXG4gID5cbiAgPC9wby1idXR0b24+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICN0YWJsZUhlYWRlclRlbXBsYXRlPlxuICA8dGFibGUgY2xhc3M9XCJwby10YWJsZVwiIFtjbGFzcy5wby10YWJsZS1zdHJpcGVkXT1cInN0cmlwZWRcIiBbY2xhc3MucG8tdGFibGUtbGF5b3V0LWZpeGVkXT1cImhpZGVUZXh0T3ZlcmZsb3dcIj5cbiAgICA8dGhlYWQ+XG4gICAgICA8dHIgW2NsYXNzLnBvLXRhYmxlLWhlYWRlcl09XCIhaGVpZ2h0XCI+XG4gICAgICAgIDx0aCAqbmdJZj1cImhhc1NlbGVjdGFibGVDb2x1bW5cIiBjbGFzcz1cInBvLXRhYmxlLWNvbHVtbi1zZWxlY3RhYmxlXCI+XG4gICAgICAgICAgPGRpdiBbY2xhc3MucG8tdGFibGUtaGVhZGVyLWZpeGVkLWlubmVyXT1cImhlaWdodFwiPlxuICAgICAgICAgICAgPHBvLWNoZWNrYm94XG4gICAgICAgICAgICAgIG5hbWU9XCJzZWxlY3RBbGxcIlxuICAgICAgICAgICAgICAqbmdJZj1cIiFoaWRlU2VsZWN0QWxsXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdEFsbFJvd3MoKVwiXG4gICAgICAgICAgICAgIChwLWNoYW5nZSk9XCJzZWxlY3RBbGxSb3dzKClcIlxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlbGVjdEFsbFwiXG4gICAgICAgICAgICA+PC9wby1jaGVja2JveD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC90aD5cblxuICAgICAgICA8dGhcbiAgICAgICAgICAqbmdJZj1cIihoYXNNYXN0ZXJEZXRhaWxDb2x1bW4gfHwgaGFzUm93VGVtcGxhdGUpICYmICFoYXNSb3dUZW1wbGF0ZVdpdGhBcnJvd0RpcmVjdGlvblJpZ2h0XCJcbiAgICAgICAgICBjbGFzcz1cInBvLXRhYmxlLWhlYWRlci1jb2x1bW4gcG8tdGFibGUtaGVhZGVyLW1hc3Rlci1kZXRhaWxcIlxuICAgICAgICA+PC90aD5cblxuICAgICAgICA8IS0tIENvbHVuYSBjcmlhZGEgcGFyYSBjYXNvIGFzIGHDp8O1ZXMgZmlxdWVtIG5vIGxhZG8gZXNxdWVyZG8gLS0+XG4gICAgICAgIDx0aFxuICAgICAgICAgICpuZ0lmPVwiIWFjdGlvblJpZ2h0ICYmICh2aXNpYmxlQWN0aW9ucy5sZW5ndGggPiAxIHx8IGlzU2luZ2xlQWN0aW9uKVwiXG4gICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1tYXN0ZXItZGV0YWlsXT1cIiFpc1NpbmdsZUFjdGlvblwiXG4gICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1zaW5nbGUtYWN0aW9uXT1cImlzU2luZ2xlQWN0aW9uXCJcbiAgICAgICAgPjwvdGg+XG5cbiAgICAgICAgPHRoICpuZ0lmPVwiIWhhc01haW5Db2x1bW5zXCIgI25vQ29sdW1uc0hlYWRlciBjbGFzcz1cInBvLXRhYmxlLWhlYWRlci1jb2x1bW4gcG8tdGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaGVpZ2h0OyB0aGVuIG5vQ29sdW1uc1dpdGhIZWlnaHQ7IGVsc2Ugbm9Db2x1bW5zV2l0aG91dEhlaWdodFwiPiA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC90aD5cblxuICAgICAgICA8dGhcbiAgICAgICAgICAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIG1haW5Db2x1bW5zOyBsZXQgaSA9IGluZGV4OyB0cmFja0J5OiB0cmFja0J5XCJcbiAgICAgICAgICAjaGVhZGVyc1RhYmxlXG4gICAgICAgICAgY2xhc3M9XCJwby10YWJsZS1oZWFkZXItZWxsaXBzaXNcIlxuICAgICAgICAgIFtzdHlsZS53aWR0aF09XCJjb2x1bW4ud2lkdGhcIlxuICAgICAgICAgIFtzdHlsZS5tYXgtd2lkdGhdPVwiY29sdW1uLndpZHRoXCJcbiAgICAgICAgICBbc3R5bGUubWluLXdpZHRoXT1cImNvbHVtbi53aWR0aFwiXG4gICAgICAgICAgW2NsYXNzLnBvLWNsaWNrYWJsZV09XCIoc29ydCAmJiBjb2x1bW4uc29ydGFibGUgIT09IGZhbHNlKSB8fCBoYXNTZXJ2aWNlXCJcbiAgICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLXN1YnRpdGxlXT1cImNvbHVtbi50eXBlID09PSAnc3VidGl0bGUnXCJcbiAgICAgICAgICAoY2xpY2spPVwic29ydENvbHVtbihjb2x1bW4pXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwicG8tdGFibGUtaGVhZGVyLWZsZXhcIlxuICAgICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1maXhlZC1pbm5lcl09XCJoZWlnaHRcIlxuICAgICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1mbGV4LXJpZ2h0XT1cImNvbHVtbi50eXBlID09PSAnY3VycmVuY3knIHx8IGNvbHVtbi50eXBlID09PSAnbnVtYmVyJ1wiXG4gICAgICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLWZsZXgtY2VudGVyXT1cImNvbHVtbi50eXBlID09PSAnc3VidGl0bGUnXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29udGVudEhlYWRlclRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogY29sdW1uIH1cIj4gPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvdGg+XG5cbiAgICAgICAgPHRoXG4gICAgICAgICAgKm5nSWY9XCJoYXNSb3dUZW1wbGF0ZVdpdGhBcnJvd0RpcmVjdGlvblJpZ2h0ICYmIChoYXNWaXNpYmxlQWN0aW9ucyB8fCBoaWRlQ29sdW1uc01hbmFnZXIpXCJcbiAgICAgICAgICBjbGFzcz1cInBvLXRhYmxlLWhlYWRlci1jb2x1bW4gcG8tdGFibGUtaGVhZGVyLW1hc3Rlci1kZXRhaWxcIlxuICAgICAgICA+PC90aD5cblxuICAgICAgICA8dGhcbiAgICAgICAgICAqbmdJZj1cImhhc1Zpc2libGVBY3Rpb25zICYmIGhpZGVDb2x1bW5zTWFuYWdlciAmJiBhY3Rpb25SaWdodFwiXG4gICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1zaW5nbGUtYWN0aW9uXT1cImlzU2luZ2xlQWN0aW9uXCJcbiAgICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLWFjdGlvbnNdPVwiIWlzU2luZ2xlQWN0aW9uXCJcbiAgICAgICAgPjwvdGg+XG5cbiAgICAgICAgPHRoXG4gICAgICAgICAgI2NvbHVtbk1hbmFnZXJcbiAgICAgICAgICAqbmdJZj1cImhhc1ZhbGlkQ29sdW1ucyAmJiAhaGlkZUNvbHVtbnNNYW5hZ2VyXCJcbiAgICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLWNvbHVtbi1tYW5hZ2VyXT1cIiFpc1NpbmdsZUFjdGlvbiB8fCAhYWN0aW9uUmlnaHRcIlxuICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItY29sdW1uLW1hbmFnZXItYm9yZGVyXT1cIiFoZWlnaHQgJiYgY29udGFpbmVyXCJcbiAgICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLXNpbmdsZS1hY3Rpb25dPVwiaXNTaW5nbGVBY3Rpb24gJiYgYWN0aW9uUmlnaHRcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1jb2x1bW4tbWFuYWdlci1ib3JkZXJdPVwiaGVpZ2h0ICYmIGNvbnRhaW5lclwiXG4gICAgICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLWNvbHVtbi1tYW5hZ2VyLWZpeGVkLWlubmVyXT1cImhlaWdodFwiXG4gICAgICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwiaGVpZ2h0ICYmIHZpc2libGVBY3Rpb25zLmxlbmd0aCA/IGNvbHVtbk1hbmFnZXIub2Zmc2V0V2lkdGggOiB1bmRlZmluZWRcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgI2NvbHVtbk1hbmFnZXJUYXJnZXRcbiAgICAgICAgICAgICAgY2xhc3M9XCJwby10YWJsZS1oZWFkZXItY29sdW1uLW1hbmFnZXItYnV0dG9uIHBvLWljb24gcG8taWNvbi1zZXR0aW5ncyBwby1jbGlja2FibGVcIlxuICAgICAgICAgICAgICBwLXRvb2x0aXAtcG9zaXRpb249XCJsZWZ0XCJcbiAgICAgICAgICAgICAgW3AtdG9vbHRpcF09XCJsaXRlcmFscy5jb2x1bW5zTWFuYWdlclwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJvbk9wZW5Db2x1bW5NYW5hZ2VyKClcIlxuICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3RoPlxuICAgICAgPC90cj5cbiAgICA8L3RoZWFkPlxuICA8L3RhYmxlPlxuPC9uZy10ZW1wbGF0ZT5cblxuPCEtLSBzw7MgdmlydHVhbCAtLT5cbjxuZy10ZW1wbGF0ZSAjdGFibGVCb2R5VGVtcGxhdGU+XG4gIDxjZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnRcbiAgICAjcG9UYWJsZVRib2R5VmlydHVhbFxuICAgIFtpdGVtU2l6ZV09XCJpdGVtU2l6ZVwiXG4gICAgW3N0eWxlLmhlaWdodC5weF09XCJoZWlnaHRUYWJsZUNvbnRhaW5lclwiXG4gICAgW21pbkJ1ZmZlclB4XT1cImhlaWdodCA8IDEwMCA/IDEwMCA6IGhlaWdodFwiXG4gICAgW21heEJ1ZmZlclB4XT1cImhlaWdodCA8IDIwMCA/IDIwMCA6IGhlaWdodFwiXG4gICAgKHNjcm9sbCk9XCJzeW5jcm9uaXplSG9yaXpvbnRhbFNjcm9sbCgpXCJcbiAgPlxuICAgIDx0YWJsZSBjbGFzcz1cInBvLXRhYmxlXCIgW2NsYXNzLnBvLXRhYmxlLXN0cmlwZWRdPVwic3RyaXBlZFwiIFtjbGFzcy5wby10YWJsZS1sYXlvdXQtZml4ZWRdPVwiaGlkZVRleHRPdmVyZmxvd1wiPlxuICAgICAgPHRib2R5IGNsYXNzPVwicG8tdGFibGUtZ3JvdXAtcm93XCIgKm5nSWY9XCIhaGFzSXRlbXMgfHwgIWhhc01haW5Db2x1bW5zXCI+XG4gICAgICAgIDx0ciBjbGFzcz1cInBvLXRhYmxlLXJvdyBwby10YWJsZS1yb3ctbm8tZGF0YVwiPlxuICAgICAgICAgIDx0ZCBbY29sU3Bhbl09XCJjb2x1bW5Db3VudFwiIGNsYXNzPVwicG8tdGFibGUtbm8tZGF0YSBwby10ZXh0LWNlbnRlclwiPlxuICAgICAgICAgICAgPHNwYW4+IHt7IGxpdGVyYWxzLm5vRGF0YSB9fSA8L3NwYW4+XG4gICAgICAgICAgPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgIDwvdGJvZHk+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaGFzTWFpbkNvbHVtbnNcIj5cbiAgICAgICAgPHRib2R5IGNsYXNzPVwicG8tdGFibGUtZ3JvdXAtcm93XCIgKmNka1ZpcnR1YWxGb3I9XCJsZXQgcm93IG9mIGl0ZW1zOyBsZXQgcm93SW5kZXggPSBpbmRleDsgdHJhY2tCeTogdHJhY2tCeVwiPlxuICAgICAgICAgIDx0clxuICAgICAgICAgICAgY2xhc3M9XCJwby10YWJsZS1yb3dcIlxuICAgICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLXJvdy1hY3RpdmVdPVwicm93LiRzZWxlY3RlZCB8fCAocm93LiRzZWxlY3RlZCA9PT0gbnVsbCAmJiBzZWxlY3RhYmxlKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHRkICpuZ0lmPVwic2VsZWN0YWJsZVwiIGNsYXNzPVwicG8tdGFibGUtY29sdW1uLXNlbGVjdGFibGVcIj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInNpbmdsZVNlbGVjdCA/IGlucHV0UmFkaW8gOiBpbnB1dENoZWNrYm94OyBjb250ZXh0OiB7ICRpbXBsaWNpdDogcm93IH1cIj5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L3RkPlxuXG4gICAgICAgICAgICA8IS0tIFZhbGlkYSBzZSBhIG9yaWdlbSBkbyBkZXRhaWwgw6kgcGVsbyBpbnB1dCBkbyBwby10YWJsZSAtLT5cbiAgICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgICAqbmdJZj1cImNvbHVtbk1hc3RlckRldGFpbCAmJiAhaGlkZURldGFpbCAmJiAhaGFzUm93VGVtcGxhdGVcIlxuICAgICAgICAgICAgICBjbGFzcz1cInBvLXRhYmxlLWNvbHVtbi1kZXRhaWwtdG9nZ2xlXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZURldGFpbChyb3cpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwicG9UYWJsZUNvbHVtbkRldGFpbFwiXG4gICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgcm93OiByb3csIHJvd0luZGV4OiByb3dJbmRleCB9XCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC90ZD5cblxuICAgICAgICAgICAgPCEtLSBDb2x1bmEgY29tIGFzIGHDp8O1ZXMgbmEgZXNxdWVyZGEgKHBhZHLDo28pLS0+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgKm5nSWY9XCIhYWN0aW9uUmlnaHQgJiYgKHZpc2libGVBY3Rpb25zLmxlbmd0aCA+IDEgfHwgaXNTaW5nbGVBY3Rpb24pXCJcbiAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiQWN0aW9uc0NvbHVtblRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgcm93OiByb3csIHJvd0luZGV4OiByb3dJbmRleCB9XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgICAgICAgIDwhLS0gVmFsaWRhIHNlIGEgb3JpZ2VtIGRvIGRldGFpbCDDqSBwZWxhIGRpcmV0aXZhIC0tPlxuICAgICAgICAgICAgPHRkXG4gICAgICAgICAgICAgICpuZ0lmPVwiaGFzUm93VGVtcGxhdGUgJiYgIWhhc1Jvd1RlbXBsYXRlV2l0aEFycm93RGlyZWN0aW9uUmlnaHRcIlxuICAgICAgICAgICAgICBjbGFzcz1cInBvLXRhYmxlLWNvbHVtbi1kZXRhaWwtdG9nZ2xlXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZURldGFpbChyb3cpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwicG9UYWJsZUNvbHVtbkRldGFpbFwiXG4gICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgcm93OiByb3csIHJvd0luZGV4OiByb3dJbmRleCB9XCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC90ZD5cblxuICAgICAgICAgICAgPHRkXG4gICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgbWFpbkNvbHVtbnM7IGxldCBjb2x1bW5JbmRleCA9IGluZGV4OyB0cmFja0J5OiB0cmFja0J5XCJcbiAgICAgICAgICAgICAgW3N0eWxlLndpZHRoXT1cImNvbHVtbi53aWR0aFwiXG4gICAgICAgICAgICAgIFtzdHlsZS5tYXgtd2lkdGhdPVwiY29sdW1uLndpZHRoXCJcbiAgICAgICAgICAgICAgW3N0eWxlLm1pbi13aWR0aF09XCJjb2x1bW4ud2lkdGhcIlxuICAgICAgICAgICAgICBbY2xhc3MucG8tdGFibGUtY29sdW1uXT1cImNvbHVtbi50eXBlICE9PSAnaWNvbidcIlxuICAgICAgICAgICAgICBbY2xhc3MucG8tdGFibGUtY29sdW1uLXJpZ2h0XT1cImNvbHVtbi50eXBlID09PSAnY3VycmVuY3knIHx8IGNvbHVtbi50eXBlID09PSAnbnVtYmVyJ1wiXG4gICAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1jb2x1bW4tY2VudGVyXT1cImNvbHVtbi50eXBlID09PSAnc3VidGl0bGUnXCJcbiAgICAgICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWNvbHVtbi1pY29uc109XCJjb2x1bW4udHlwZSA9PT0gJ2ljb24nXCJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiZ2V0Q2xhc3NDb2xvcihyb3csIGNvbHVtbilcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0YWJsZSA/IHNlbGVjdFJvdyhyb3cpIDogJ2phdmFzY3JpcHQ6OydcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJwby10YWJsZS1jb2x1bW4tY2VsbCBub3RyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWJvZHktZWxsaXBzaXNdPVwiaGlkZVRleHRPdmVyZmxvd1wiXG4gICAgICAgICAgICAgICAgW25nU3dpdGNoXT1cImNvbHVtbi50eXBlXCJcbiAgICAgICAgICAgICAgICBbcC10b29sdGlwXT1cInRvb2x0aXBUZXh0XCJcbiAgICAgICAgICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwibm9Db2x1bW5zSGVhZGVyPy5uYXRpdmVFbGVtZW50LnBhcmVudEVsZW1lbnQ/Lm9mZnNldFdpZHRoXCJcbiAgICAgICAgICAgICAgICAobW91c2VlbnRlcik9XCJ0b29sdGlwTW91c2VFbnRlcigkZXZlbnQsIGNvbHVtbiwgcm93KVwiXG4gICAgICAgICAgICAgICAgKG1vdXNlbGVhdmUpPVwidG9vbHRpcE1vdXNlTGVhdmUoKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ2NvbHVtblRlbXBsYXRlJ1wiPlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImdldFRlbXBsYXRlKGNvbHVtbik7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBnZXRDZWxsRGF0YShyb3csIGNvbHVtbikgfVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ2NlbGxUZW1wbGF0ZSdcIj5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0YWJsZUNlbGxUZW1wbGF0ZT8udGVtcGxhdGVSZWY7IGNvbnRleHQ6IHsgcm93OiByb3csIGNvbHVtbjogY29sdW1uIH1cIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidib29sZWFuJ1wiPlxuICAgICAgICAgICAgICAgICAge3sgZ2V0Qm9vbGVhbkxhYmVsKGdldENlbGxEYXRhKHJvdywgY29sdW1uKSwgY29sdW1uKSB9fVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInY3VycmVuY3knXCI+XG4gICAgICAgICAgICAgICAgICB7eyBnZXRDZWxsRGF0YShyb3csIGNvbHVtbikgfCBjdXJyZW5jeTogY29sdW1uLmZvcm1hdDonc3ltYm9sJzonMS4yLTInIH19XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidkYXRlJ1wiPlxuICAgICAgICAgICAgICAgICAge3sgZ2V0Q2VsbERhdGEocm93LCBjb2x1bW4pIHwgZGF0ZTogY29sdW1uLmZvcm1hdCB8fCAnZGQvTU0veXl5eScgfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ3RpbWUnXCI+XG4gICAgICAgICAgICAgICAgICB7eyBnZXRDZWxsRGF0YShyb3csIGNvbHVtbikgfCBwb190aW1lOiBjb2x1bW4uZm9ybWF0IHx8ICdISDptbTpzcy5mZmZmZmYnIH19XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidkYXRlVGltZSdcIj5cbiAgICAgICAgICAgICAgICAgIHt7IGdldENlbGxEYXRhKHJvdywgY29sdW1uKSB8IGRhdGU6IGNvbHVtbi5mb3JtYXQgfHwgJ2RkL01NL3l5eXkgSEg6bW06c3MnIH19XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidudW1iZXInXCI+XG4gICAgICAgICAgICAgICAgICB7eyBmb3JtYXROdW1iZXIoZ2V0Q2VsbERhdGEocm93LCBjb2x1bW4pLCBjb2x1bW4uZm9ybWF0KSB9fVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICAgIDxwby10YWJsZS1jb2x1bW4tbGlua1xuICAgICAgICAgICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidsaW5rJ1wiXG4gICAgICAgICAgICAgICAgICBbcC1hY3Rpb25dPVwiY29sdW1uLmFjdGlvblwiXG4gICAgICAgICAgICAgICAgICBbcC1kaXNhYmxlZF09XCJjaGVja0Rpc2FibGVkKHJvdywgY29sdW1uKVwiXG4gICAgICAgICAgICAgICAgICBbcC1saW5rXT1cInJvd1tjb2x1bW4ubGlua11cIlxuICAgICAgICAgICAgICAgICAgW3Atcm93XT1cInJvd1wiXG4gICAgICAgICAgICAgICAgICBbcC12YWx1ZV09XCJnZXRDZWxsRGF0YShyb3csIGNvbHVtbilcIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uQ2xpY2tMaW5rKCRldmVudCwgcm93LCBjb2x1bW4pXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPC9wby10YWJsZS1jb2x1bW4tbGluaz5cblxuICAgICAgICAgICAgICAgIDxwby10YWJsZS1jb2x1bW4taWNvblxuICAgICAgICAgICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidpY29uJ1wiXG4gICAgICAgICAgICAgICAgICBbcC1jb2x1bW5dPVwiY29sdW1uXCJcbiAgICAgICAgICAgICAgICAgIFtwLWljb25zXT1cImdldENvbHVtbkljb25zKHJvdywgY29sdW1uKVwiXG4gICAgICAgICAgICAgICAgICBbcC1yb3ddPVwicm93XCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPC9wby10YWJsZS1jb2x1bW4taWNvbj5cblxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInc3VidGl0bGUnXCI+XG4gICAgICAgICAgICAgICAgICA8cG8tdGFibGUtc3VidGl0bGUtY2lyY2xlIFtwLXN1YnRpdGxlXT1cImdldFN1YnRpdGxlQ29sdW1uKHJvdywgY29sdW1uKVwiPjwvcG8tdGFibGUtc3VidGl0bGUtY2lyY2xlPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ2xhYmVsJ1wiPlxuICAgICAgICAgICAgICAgICAgPHBvLXRhYmxlLWNvbHVtbi1sYWJlbCBbcC12YWx1ZV09XCJnZXRDb2x1bW5MYWJlbChyb3csIGNvbHVtbilcIj4gPC9wby10YWJsZS1jb2x1bW4tbGFiZWw+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaERlZmF1bHQ+e3sgZ2V0Q2VsbERhdGEocm93LCBjb2x1bW4pIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvdGQ+XG5cbiAgICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgICAqbmdJZj1cImhhc1Jvd1RlbXBsYXRlV2l0aEFycm93RGlyZWN0aW9uUmlnaHRcIlxuICAgICAgICAgICAgICBjbGFzcz1cInBvLXRhYmxlLWNvbHVtbi1kZXRhaWwtdG9nZ2xlXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZURldGFpbChyb3cpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwicG9UYWJsZUNvbHVtbkRldGFpbFwiXG4gICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgcm93OiByb3csIHJvd0luZGV4OiByb3dJbmRleCB9XCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC90ZD5cblxuICAgICAgICAgICAgPCEtLSBDb2x1bmEgZGUgYcOnb2VzIG5hIGRpcmVpdGEgLS0+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgKm5nSWY9XCJhY3Rpb25SaWdodFwiXG4gICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIkFjdGlvbnNDb2x1bW5UZW1wbGF0ZVwiXG4gICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IHJvdzogcm93LCByb3dJbmRleDogcm93SW5kZXggfVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICAgICAgICA8IS0tIENvbHVuYSBwYXJhIG7Do28gZmljYXIgZW0gYnJhbmNvIG5hcyBsaW5oYXMgZGUgZ2VyZW5jaWFtZW50byAtLT5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhYWN0aW9uUmlnaHQgJiYgKHZpc2libGVBY3Rpb25zLmxlbmd0aCA+IDEgfHwgaXNTaW5nbGVBY3Rpb24pICYmICFoaWRlQ29sdW1uc01hbmFnZXJcIj5cbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwicG8tdGFibGUtY29sdW1uIHBvLXRhYmxlLWNvbHVtbi1lbXB0eVwiPjwvdGQ+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgPCEtLSBDb2x1bW4gTWFuYWdlciAtLT5cbiAgICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgICAqbmdJZj1cIiFoYXNWaXNpYmxlQWN0aW9ucyAmJiAhaGlkZUNvbHVtbnNNYW5hZ2VyICYmICFoYXNSb3dUZW1wbGF0ZVdpdGhBcnJvd0RpcmVjdGlvblJpZ2h0XCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJwby10YWJsZS1jb2x1bW5cIlxuICAgICAgICAgICAgPjwvdGQ+XG4gICAgICAgICAgPC90cj5cblxuICAgICAgICAgIDx0ciAqbmdJZj1cImhhc01haW5Db2x1bW5zICYmIGhhc1Jvd1RlbXBsYXRlICYmIHJvdy4kc2hvd0RldGFpbCAmJiBpc1Nob3dSb3dUZW1wbGF0ZShyb3csIHJvd0luZGV4KVwiPlxuICAgICAgICAgICAgPHRkIGNsYXNzPVwicG8tdGFibGUtcm93LXRlbXBsYXRlLWNvbnRhaW5lclwiIFtjb2xTcGFuXT1cImNvbHVtbkNvdW50Rm9yTWFzdGVyRGV0YWlsXCI+XG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRhYmxlUm93VGVtcGxhdGUudGVtcGxhdGVSZWZcIlxuICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogcm93LCByb3dJbmRleDogcm93SW5kZXggfVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgPC90cj5cblxuICAgICAgICAgIDx0ciAqbmdJZj1cImhhc01haW5Db2x1bW5zICYmIGlzU2hvd01hc3RlckRldGFpbChyb3cpXCI+XG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJwby10YWJsZS1jb2x1bW4tZGV0YWlsXCIgW2NvbFNwYW5dPVwiY29sdW1uQ291bnRGb3JNYXN0ZXJEZXRhaWxcIj5cbiAgICAgICAgICAgICAgPHBvLXRhYmxlLWRldGFpbFxuICAgICAgICAgICAgICAgIFtwLXNlbGVjdGFibGVdPVwic2VsZWN0YWJsZSAmJiAhZGV0YWlsSGlkZVNlbGVjdFwiXG4gICAgICAgICAgICAgICAgW3AtZGV0YWlsXT1cImNvbHVtbk1hc3RlckRldGFpbC5kZXRhaWxcIlxuICAgICAgICAgICAgICAgIFtwLWl0ZW1zXT1cInJvd1tuYW1lQ29sdW1uRGV0YWlsXVwiXG4gICAgICAgICAgICAgICAgKHAtc2VsZWN0LXJvdyk9XCJzZWxlY3REZXRhaWxSb3coJGV2ZW50KVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPC9wby10YWJsZS1kZXRhaWw+XG4gICAgICAgICAgICA8L3RkPlxuICAgICAgICAgIDwvdHI+XG4gICAgICAgIDwvdGJvZHk+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L3RhYmxlPlxuICA8L2Nkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydD5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjdGFibGVUZW1wbGF0ZT5cbiAgPHRhYmxlIGNsYXNzPVwicG8tdGFibGVcIiBbY2xhc3MucG8tdGFibGUtc3RyaXBlZF09XCJzdHJpcGVkXCIgW2NsYXNzLnBvLXRhYmxlLWxheW91dC1maXhlZF09XCJoaWRlVGV4dE92ZXJmbG93XCI+XG4gICAgPHRoZWFkPlxuICAgICAgPHRyIFtjbGFzcy5wby10YWJsZS1oZWFkZXJdPVwiIWhlaWdodFwiPlxuICAgICAgICA8dGggKm5nSWY9XCJoYXNTZWxlY3RhYmxlQ29sdW1uXCIgY2xhc3M9XCJwby10YWJsZS1jb2x1bW4tc2VsZWN0YWJsZVwiPlxuICAgICAgICAgIDxkaXYgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1maXhlZC1pbm5lcl09XCJoZWlnaHRcIj5cbiAgICAgICAgICAgIDxwby1jaGVja2JveFxuICAgICAgICAgICAgICBuYW1lPVwic2VsZWN0QWxsXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCIhaGlkZVNlbGVjdEFsbFwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RBbGxSb3dzKClcIlxuICAgICAgICAgICAgICAocC1jaGFuZ2UpPVwic2VsZWN0QWxsUm93cygpXCJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWxlY3RBbGxcIlxuICAgICAgICAgICAgPjwvcG8tY2hlY2tib3g+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvdGg+XG5cbiAgICAgICAgPHRoXG4gICAgICAgICAgKm5nSWY9XCIoaGFzTWFzdGVyRGV0YWlsQ29sdW1uIHx8IGhhc1Jvd1RlbXBsYXRlKSAmJiAhaGFzUm93VGVtcGxhdGVXaXRoQXJyb3dEaXJlY3Rpb25SaWdodFwiXG4gICAgICAgICAgY2xhc3M9XCJwby10YWJsZS1oZWFkZXItY29sdW1uIHBvLXRhYmxlLWhlYWRlci1tYXN0ZXItZGV0YWlsXCJcbiAgICAgICAgPjwvdGg+XG5cbiAgICAgICAgPCEtLSBDb2x1bmEgY3JpYWRhIHBhcmEgY2FzbyBhcyBhw6fDtWVzIGZpcXVlbSBubyBsYWRvIGVzcXVlcmRvIC0tPlxuICAgICAgICA8dGhcbiAgICAgICAgICAqbmdJZj1cIiFhY3Rpb25SaWdodCAmJiAodmlzaWJsZUFjdGlvbnMubGVuZ3RoID4gMSB8fCBpc1NpbmdsZUFjdGlvbilcIlxuICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItbWFzdGVyLWRldGFpbF09XCIhaXNTaW5nbGVBY3Rpb25cIlxuICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItc2luZ2xlLWFjdGlvbl09XCJpc1NpbmdsZUFjdGlvblwiXG4gICAgICAgID48L3RoPlxuXG4gICAgICAgIDx0aCAqbmdJZj1cIiFoYXNNYWluQ29sdW1uc1wiICNub0NvbHVtbnNIZWFkZXIgY2xhc3M9XCJwby10YWJsZS1oZWFkZXItY29sdW1uIHBvLXRleHQtY2VudGVyXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhlaWdodDsgdGhlbiBub0NvbHVtbnNXaXRoSGVpZ2h0OyBlbHNlIG5vQ29sdW1uc1dpdGhvdXRIZWlnaHRcIj4gPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvdGg+XG5cbiAgICAgICAgPHRoXG4gICAgICAgICAgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiBtYWluQ29sdW1uczsgbGV0IGkgPSBpbmRleDsgdHJhY2tCeTogdHJhY2tCeVwiXG4gICAgICAgICAgI2hlYWRlcnNUYWJsZVxuICAgICAgICAgIGNsYXNzPVwicG8tdGFibGUtaGVhZGVyLWVsbGlwc2lzXCJcbiAgICAgICAgICBbc3R5bGUud2lkdGhdPVwiY29sdW1uLndpZHRoXCJcbiAgICAgICAgICBbc3R5bGUubWF4LXdpZHRoXT1cImNvbHVtbi53aWR0aFwiXG4gICAgICAgICAgW3N0eWxlLm1pbi13aWR0aF09XCJjb2x1bW4ud2lkdGhcIlxuICAgICAgICAgIFtjbGFzcy5wby1jbGlja2FibGVdPVwiKHNvcnQgJiYgY29sdW1uLnNvcnRhYmxlICE9PSBmYWxzZSkgfHwgaGFzU2VydmljZVwiXG4gICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1zdWJ0aXRsZV09XCJjb2x1bW4udHlwZSA9PT0gJ3N1YnRpdGxlJ1wiXG4gICAgICAgICAgKGNsaWNrKT1cInNvcnRDb2x1bW4oY29sdW1uKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cInBvLXRhYmxlLWhlYWRlci1mbGV4XCJcbiAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItZml4ZWQtaW5uZXJdPVwiaGVpZ2h0XCJcbiAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItZmxleC1yaWdodF09XCJjb2x1bW4udHlwZSA9PT0gJ2N1cnJlbmN5JyB8fCBjb2x1bW4udHlwZSA9PT0gJ251bWJlcidcIlxuICAgICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1mbGV4LWNlbnRlcl09XCJjb2x1bW4udHlwZSA9PT0gJ3N1YnRpdGxlJ1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbnRlbnRIZWFkZXJUZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IGNvbHVtbiB9XCI+IDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3RoPlxuXG4gICAgICAgIDx0aFxuICAgICAgICAgICpuZ0lmPVwiaGFzUm93VGVtcGxhdGVXaXRoQXJyb3dEaXJlY3Rpb25SaWdodCAmJiAoaGFzVmlzaWJsZUFjdGlvbnMgfHwgaGlkZUNvbHVtbnNNYW5hZ2VyKVwiXG4gICAgICAgICAgY2xhc3M9XCJwby10YWJsZS1oZWFkZXItY29sdW1uIHBvLXRhYmxlLWhlYWRlci1tYXN0ZXItZGV0YWlsXCJcbiAgICAgICAgPjwvdGg+XG5cbiAgICAgICAgPHRoXG4gICAgICAgICAgKm5nSWY9XCJoYXNWaXNpYmxlQWN0aW9ucyAmJiBoaWRlQ29sdW1uc01hbmFnZXIgJiYgYWN0aW9uUmlnaHRcIlxuICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItc2luZ2xlLWFjdGlvbl09XCJpc1NpbmdsZUFjdGlvblwiXG4gICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1hY3Rpb25zXT1cIiFpc1NpbmdsZUFjdGlvblwiXG4gICAgICAgID48L3RoPlxuXG4gICAgICAgIDx0aFxuICAgICAgICAgICNjb2x1bW5NYW5hZ2VyXG4gICAgICAgICAgKm5nSWY9XCJoYXNWYWxpZENvbHVtbnMgJiYgIWhpZGVDb2x1bW5zTWFuYWdlclwiXG4gICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1jb2x1bW4tbWFuYWdlcl09XCIhaXNTaW5nbGVBY3Rpb24gfHwgIWFjdGlvblJpZ2h0XCJcbiAgICAgICAgICBbY2xhc3MucG8tdGFibGUtaGVhZGVyLWNvbHVtbi1tYW5hZ2VyLWJvcmRlcl09XCIhaGVpZ2h0ICYmIGNvbnRhaW5lclwiXG4gICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1zaW5nbGUtYWN0aW9uXT1cImlzU2luZ2xlQWN0aW9uICYmIGFjdGlvblJpZ2h0XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItY29sdW1uLW1hbmFnZXItYm9yZGVyXT1cImhlaWdodCAmJiBjb250YWluZXJcIlxuICAgICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1jb2x1bW4tbWFuYWdlci1maXhlZC1pbm5lcl09XCJoZWlnaHRcIlxuICAgICAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cImhlaWdodCAmJiB2aXNpYmxlQWN0aW9ucy5sZW5ndGggPyBjb2x1bW5NYW5hZ2VyLm9mZnNldFdpZHRoIDogdW5kZWZpbmVkXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICNjb2x1bW5NYW5hZ2VyVGFyZ2V0XG4gICAgICAgICAgICAgIGNsYXNzPVwicG8tdGFibGUtaGVhZGVyLWNvbHVtbi1tYW5hZ2VyLWJ1dHRvbiBwby1pY29uIHBvLWljb24tc2V0dGluZ3MgcG8tY2xpY2thYmxlXCJcbiAgICAgICAgICAgICAgcC10b29sdGlwLXBvc2l0aW9uPVwibGVmdFwiXG4gICAgICAgICAgICAgIFtwLXRvb2x0aXBdPVwibGl0ZXJhbHMuY29sdW1uc01hbmFnZXJcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwib25PcGVuQ29sdW1uTWFuYWdlcigpXCJcbiAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC90aD5cbiAgICAgIDwvdHI+XG4gICAgPC90aGVhZD5cblxuICAgIDx0Ym9keSBjbGFzcz1cInBvLXRhYmxlLWdyb3VwLXJvd1wiICpuZ0lmPVwiIWhhc0l0ZW1zIHx8ICFoYXNNYWluQ29sdW1uc1wiPlxuICAgICAgPHRyIGNsYXNzPVwicG8tdGFibGUtcm93IHBvLXRhYmxlLXJvdy1uby1kYXRhXCI+XG4gICAgICAgIDx0ZCBbY29sU3Bhbl09XCJjb2x1bW5Db3VudFwiIGNsYXNzPVwicG8tdGFibGUtbm8tZGF0YSBwby10ZXh0LWNlbnRlclwiPlxuICAgICAgICAgIDxzcGFuPiB7eyBsaXRlcmFscy5ub0RhdGEgfX0gPC9zcGFuPlxuICAgICAgICA8L3RkPlxuICAgICAgPC90cj5cbiAgICA8L3Rib2R5PlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhhc01haW5Db2x1bW5zXCI+XG4gICAgICA8dGJvZHkgY2xhc3M9XCJwby10YWJsZS1ncm91cC1yb3dcIiAqbmdGb3I9XCJsZXQgcm93IG9mIGl0ZW1zOyBsZXQgcm93SW5kZXggPSBpbmRleDsgdHJhY2tCeTogdHJhY2tCeVwiPlxuICAgICAgICA8dHIgY2xhc3M9XCJwby10YWJsZS1yb3dcIiBbY2xhc3MucG8tdGFibGUtcm93LWFjdGl2ZV09XCJyb3cuJHNlbGVjdGVkIHx8IChyb3cuJHNlbGVjdGVkID09PSBudWxsICYmIHNlbGVjdGFibGUpXCI+XG4gICAgICAgICAgPHRkICpuZ0lmPVwic2VsZWN0YWJsZVwiIGNsYXNzPVwicG8tdGFibGUtY29sdW1uLXNlbGVjdGFibGVcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzaW5nbGVTZWxlY3QgPyBpbnB1dFJhZGlvIDogaW5wdXRDaGVja2JveDsgY29udGV4dDogeyAkaW1wbGljaXQ6IHJvdyB9XCI+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L3RkPlxuXG4gICAgICAgICAgPCEtLSBWYWxpZGEgc2UgYSBvcmlnZW0gZG8gZGV0YWlsIMOpIHBlbG8gaW5wdXQgZG8gcG8tdGFibGUgLS0+XG4gICAgICAgICAgPHRkXG4gICAgICAgICAgICAqbmdJZj1cImNvbHVtbk1hc3RlckRldGFpbCAmJiAhaGlkZURldGFpbCAmJiAhaGFzUm93VGVtcGxhdGVcIlxuICAgICAgICAgICAgY2xhc3M9XCJwby10YWJsZS1jb2x1bW4tZGV0YWlsLXRvZ2dsZVwiXG4gICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlRGV0YWlsKHJvdylcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJwb1RhYmxlQ29sdW1uRGV0YWlsXCJcbiAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgcm93OiByb3csIHJvd0luZGV4OiByb3dJbmRleCB9XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC90ZD5cblxuICAgICAgICAgIDwhLS0gQ29sdW5hIGNvbSBhcyBhw6fDtWVzIG5hIGVzcXVlcmRhIChwYWRyw6NvKS0tPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgKm5nSWY9XCIhYWN0aW9uUmlnaHQgJiYgKHZpc2libGVBY3Rpb25zLmxlbmd0aCA+IDEgfHwgaXNTaW5nbGVBY3Rpb24pXCJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIkFjdGlvbnNDb2x1bW5UZW1wbGF0ZVwiXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyByb3c6IHJvdywgcm93SW5kZXg6IHJvd0luZGV4IH1cIlxuICAgICAgICAgID5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICAgICAgPCEtLSBWYWxpZGEgc2UgYSBvcmlnZW0gZG8gZGV0YWlsIMOpIHBlbGEgZGlyZXRpdmEgLS0+XG4gICAgICAgICAgPHRkXG4gICAgICAgICAgICAqbmdJZj1cImhhc1Jvd1RlbXBsYXRlICYmICFoYXNSb3dUZW1wbGF0ZVdpdGhBcnJvd0RpcmVjdGlvblJpZ2h0XCJcbiAgICAgICAgICAgIGNsYXNzPVwicG8tdGFibGUtY29sdW1uLWRldGFpbC10b2dnbGVcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZURldGFpbChyb3cpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwicG9UYWJsZUNvbHVtbkRldGFpbFwiXG4gICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IHJvdzogcm93LCByb3dJbmRleDogcm93SW5kZXggfVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvdGQ+XG5cbiAgICAgICAgICA8dGRcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgbWFpbkNvbHVtbnM7IGxldCBjb2x1bW5JbmRleCA9IGluZGV4OyB0cmFja0J5OiB0cmFja0J5XCJcbiAgICAgICAgICAgIFtzdHlsZS53aWR0aF09XCJjb2x1bW4ud2lkdGhcIlxuICAgICAgICAgICAgW3N0eWxlLm1heC13aWR0aF09XCJjb2x1bW4ud2lkdGhcIlxuICAgICAgICAgICAgW3N0eWxlLm1pbi13aWR0aF09XCJjb2x1bW4ud2lkdGhcIlxuICAgICAgICAgICAgW2NsYXNzLnBvLXRhYmxlLWNvbHVtbl09XCJjb2x1bW4udHlwZSAhPT0gJ2ljb24nXCJcbiAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1jb2x1bW4tcmlnaHRdPVwiY29sdW1uLnR5cGUgPT09ICdjdXJyZW5jeScgfHwgY29sdW1uLnR5cGUgPT09ICdudW1iZXInXCJcbiAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1jb2x1bW4tY2VudGVyXT1cImNvbHVtbi50eXBlID09PSAnc3VidGl0bGUnXCJcbiAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1jb2x1bW4taWNvbnNdPVwiY29sdW1uLnR5cGUgPT09ICdpY29uJ1wiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJnZXRDbGFzc0NvbG9yKHJvdywgY29sdW1uKVwiXG4gICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0YWJsZSA/IHNlbGVjdFJvdyhyb3cpIDogJ2phdmFzY3JpcHQ6OydcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJwby10YWJsZS1jb2x1bW4tY2VsbCBub3RyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgIFtjbGFzcy5wby10YWJsZS1ib2R5LWVsbGlwc2lzXT1cImhpZGVUZXh0T3ZlcmZsb3dcIlxuICAgICAgICAgICAgICBbbmdTd2l0Y2hdPVwiY29sdW1uLnR5cGVcIlxuICAgICAgICAgICAgICBbcC10b29sdGlwXT1cInRvb2x0aXBUZXh0XCJcbiAgICAgICAgICAgICAgKG1vdXNlZW50ZXIpPVwidG9vbHRpcE1vdXNlRW50ZXIoJGV2ZW50LCBjb2x1bW4sIHJvdylcIlxuICAgICAgICAgICAgICAobW91c2VsZWF2ZSk9XCJ0b29sdGlwTW91c2VMZWF2ZSgpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidjb2x1bW5UZW1wbGF0ZSdcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZ2V0VGVtcGxhdGUoY29sdW1uKTsgY29udGV4dDogeyAkaW1wbGljaXQ6IGdldENlbGxEYXRhKHJvdywgY29sdW1uKSB9XCI+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ2NlbGxUZW1wbGF0ZSdcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGFibGVDZWxsVGVtcGxhdGU/LnRlbXBsYXRlUmVmOyBjb250ZXh0OiB7IHJvdzogcm93LCBjb2x1bW46IGNvbHVtbiB9XCI+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ2Jvb2xlYW4nXCI+XG4gICAgICAgICAgICAgICAge3sgZ2V0Qm9vbGVhbkxhYmVsKGdldENlbGxEYXRhKHJvdywgY29sdW1uKSwgY29sdW1uKSB9fVxuICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidjdXJyZW5jeSdcIj5cbiAgICAgICAgICAgICAgICB7eyBnZXRDZWxsRGF0YShyb3csIGNvbHVtbikgfCBjdXJyZW5jeTogY29sdW1uLmZvcm1hdDonc3ltYm9sJzonMS4yLTInIH19XG4gICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ2RhdGUnXCI+XG4gICAgICAgICAgICAgICAge3sgZ2V0Q2VsbERhdGEocm93LCBjb2x1bW4pIHwgZGF0ZTogY29sdW1uLmZvcm1hdCB8fCAnZGQvTU0veXl5eScgfX1cbiAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCIndGltZSdcIj5cbiAgICAgICAgICAgICAgICB7eyBnZXRDZWxsRGF0YShyb3csIGNvbHVtbikgfCBwb190aW1lOiBjb2x1bW4uZm9ybWF0IHx8ICdISDptbTpzcy5mZmZmZmYnIH19XG4gICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ2RhdGVUaW1lJ1wiPlxuICAgICAgICAgICAgICAgIHt7IGdldENlbGxEYXRhKHJvdywgY29sdW1uKSB8IGRhdGU6IGNvbHVtbi5mb3JtYXQgfHwgJ2RkL01NL3l5eXkgSEg6bW06c3MnIH19XG4gICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ251bWJlcidcIj5cbiAgICAgICAgICAgICAgICB7eyBmb3JtYXROdW1iZXIoZ2V0Q2VsbERhdGEocm93LCBjb2x1bW4pLCBjb2x1bW4uZm9ybWF0KSB9fVxuICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgPHBvLXRhYmxlLWNvbHVtbi1saW5rXG4gICAgICAgICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidsaW5rJ1wiXG4gICAgICAgICAgICAgICAgW3AtYWN0aW9uXT1cImNvbHVtbi5hY3Rpb25cIlxuICAgICAgICAgICAgICAgIFtwLWRpc2FibGVkXT1cImNoZWNrRGlzYWJsZWQocm93LCBjb2x1bW4pXCJcbiAgICAgICAgICAgICAgICBbcC1saW5rXT1cInJvd1tjb2x1bW4ubGlua11cIlxuICAgICAgICAgICAgICAgIFtwLXJvd109XCJyb3dcIlxuICAgICAgICAgICAgICAgIFtwLXZhbHVlXT1cImdldENlbGxEYXRhKHJvdywgY29sdW1uKVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uQ2xpY2tMaW5rKCRldmVudCwgcm93LCBjb2x1bW4pXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8L3BvLXRhYmxlLWNvbHVtbi1saW5rPlxuXG4gICAgICAgICAgICAgIDxwby10YWJsZS1jb2x1bW4taWNvblxuICAgICAgICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCInaWNvbidcIlxuICAgICAgICAgICAgICAgIFtwLWNvbHVtbl09XCJjb2x1bW5cIlxuICAgICAgICAgICAgICAgIFtwLWljb25zXT1cImdldENvbHVtbkljb25zKHJvdywgY29sdW1uKVwiXG4gICAgICAgICAgICAgICAgW3Atcm93XT1cInJvd1wiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPC9wby10YWJsZS1jb2x1bW4taWNvbj5cblxuICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ3N1YnRpdGxlJ1wiPlxuICAgICAgICAgICAgICAgIDxwby10YWJsZS1zdWJ0aXRsZS1jaXJjbGUgW3Atc3VidGl0bGVdPVwiZ2V0U3VidGl0bGVDb2x1bW4ocm93LCBjb2x1bW4pXCI+PC9wby10YWJsZS1zdWJ0aXRsZS1jaXJjbGU+XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidsYWJlbCdcIj5cbiAgICAgICAgICAgICAgICA8cG8tdGFibGUtY29sdW1uLWxhYmVsIFtwLXZhbHVlXT1cImdldENvbHVtbkxhYmVsKHJvdywgY29sdW1uKVwiPiA8L3BvLXRhYmxlLWNvbHVtbi1sYWJlbD5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hEZWZhdWx0Pnt7IGdldENlbGxEYXRhKHJvdywgY29sdW1uKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvdGQ+XG5cbiAgICAgICAgICA8dGRcbiAgICAgICAgICAgICpuZ0lmPVwiaGFzUm93VGVtcGxhdGVXaXRoQXJyb3dEaXJlY3Rpb25SaWdodFwiXG4gICAgICAgICAgICBjbGFzcz1cInBvLXRhYmxlLWNvbHVtbi1kZXRhaWwtdG9nZ2xlXCJcbiAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVEZXRhaWwocm93KVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInBvVGFibGVDb2x1bW5EZXRhaWxcIlxuICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyByb3c6IHJvdywgcm93SW5kZXg6IHJvd0luZGV4IH1cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8L3RkPlxuXG4gICAgICAgICAgPCEtLSBDb2x1bmEgZGUgYcOnb2VzIG5hIGRpcmVpdGEgLS0+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAqbmdJZj1cImFjdGlvblJpZ2h0XCJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIkFjdGlvbnNDb2x1bW5UZW1wbGF0ZVwiXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyByb3c6IHJvdywgcm93SW5kZXg6IHJvd0luZGV4IH1cIlxuICAgICAgICAgID5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICAgICAgPCEtLSBDb2x1bmEgcGFyYSBuw6NvIGZpY2FyIGVtIGJyYW5jbyBuYXMgbGluaGFzIGRlIGdlcmVuY2lhbWVudG8gLS0+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFhY3Rpb25SaWdodCAmJiAodmlzaWJsZUFjdGlvbnMubGVuZ3RoID4gMSB8fCBpc1NpbmdsZUFjdGlvbikgJiYgIWhpZGVDb2x1bW5zTWFuYWdlclwiPlxuICAgICAgICAgICAgPHRkIGNsYXNzPVwicG8tdGFibGUtcm93LW5vLWRhdGEgcG8tdGFibGUtY29sdW1uLWVtcHR5XCI+PC90ZD5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgIDwhLS0gQ29sdW1uIE1hbmFnZXIgLS0+XG4gICAgICAgICAgPHRkXG4gICAgICAgICAgICAqbmdJZj1cIiFoYXNWaXNpYmxlQWN0aW9ucyAmJiAhaGlkZUNvbHVtbnNNYW5hZ2VyICYmICFoYXNSb3dUZW1wbGF0ZVdpdGhBcnJvd0RpcmVjdGlvblJpZ2h0XCJcbiAgICAgICAgICAgIGNsYXNzPVwicG8tdGFibGUtY29sdW1uXCJcbiAgICAgICAgICA+PC90ZD5cbiAgICAgICAgPC90cj5cblxuICAgICAgICA8dHIgKm5nSWY9XCJoYXNNYWluQ29sdW1ucyAmJiBoYXNSb3dUZW1wbGF0ZSAmJiByb3cuJHNob3dEZXRhaWwgJiYgaXNTaG93Um93VGVtcGxhdGUocm93LCByb3dJbmRleClcIj5cbiAgICAgICAgICA8dGQgY2xhc3M9XCJwby10YWJsZS1yb3ctdGVtcGxhdGUtY29udGFpbmVyXCIgW2NvbFNwYW5dPVwiY29sdW1uQ291bnRGb3JNYXN0ZXJEZXRhaWxcIj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJ0YWJsZVJvd1RlbXBsYXRlLnRlbXBsYXRlUmVmXCJcbiAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiByb3csIHJvd0luZGV4OiByb3dJbmRleCB9XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC90ZD5cbiAgICAgICAgPC90cj5cblxuICAgICAgICA8dHIgKm5nSWY9XCJoYXNNYWluQ29sdW1ucyAmJiBpc1Nob3dNYXN0ZXJEZXRhaWwocm93KVwiPlxuICAgICAgICAgIDx0ZCBjbGFzcz1cInBvLXRhYmxlLWNvbHVtbi1kZXRhaWxcIiBbY29sU3Bhbl09XCJjb2x1bW5Db3VudEZvck1hc3RlckRldGFpbFwiPlxuICAgICAgICAgICAgPHBvLXRhYmxlLWRldGFpbFxuICAgICAgICAgICAgICBbcC1zZWxlY3RhYmxlXT1cInNlbGVjdGFibGUgJiYgIWRldGFpbEhpZGVTZWxlY3RcIlxuICAgICAgICAgICAgICBbcC1kZXRhaWxdPVwiY29sdW1uTWFzdGVyRGV0YWlsLmRldGFpbFwiXG4gICAgICAgICAgICAgIFtwLWl0ZW1zXT1cInJvd1tuYW1lQ29sdW1uRGV0YWlsXVwiXG4gICAgICAgICAgICAgIChwLXNlbGVjdC1yb3cpPVwic2VsZWN0RGV0YWlsUm93KCRldmVudClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9wby10YWJsZS1kZXRhaWw+XG4gICAgICAgICAgPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgIDwvdGJvZHk+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvdGFibGU+XG48L25nLXRlbXBsYXRlPlxuXG48cG8tcG9wdXAgI3BvcHVwIFtwLWFjdGlvbnNdPVwiYWN0aW9uc1wiIFtwLXRhcmdldF09XCJwb3B1cFRhcmdldFwiPiA8L3BvLXBvcHVwPlxuXG48bmctdGVtcGxhdGUgI3BvVGFibGVDb2x1bW5EZXRhaWwgbGV0LXJvdz1cInJvd1wiIGxldC1yb3dJbmRleD1cInJvd0luZGV4XCI+XG4gIDxzcGFuXG4gICAgKm5nSWY9XCIoY29udGFpbnNNYXN0ZXJEZXRhaWwocm93KSAmJiAhaGFzUm93VGVtcGxhdGUpIHx8IChpc1Nob3dSb3dUZW1wbGF0ZShyb3csIHJvd0luZGV4KSAmJiBoYXNSb3dUZW1wbGF0ZSlcIlxuICAgIGNsYXNzPVwicG8taWNvbiBwby1jbGlja2FibGVcIlxuICAgIFtjbGFzcy5wby1pY29uLWFycm93LXVwXT1cInJvdy4kc2hvd0RldGFpbFwiXG4gICAgW2NsYXNzLnBvLWljb24tYXJyb3ctZG93bl09XCIhcm93LiRzaG93RGV0YWlsXCJcbiAgPlxuICA8L3NwYW4+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2lucHV0UmFkaW8gbGV0LXJvdz5cbiAgPGlucHV0IHR5cGU9XCJyYWRpb1wiIGNsYXNzPVwicG8tdGFibGUtcmFkaW9cIiBbY2xhc3MucG8tdGFibGUtcmFkaW8tY2hlY2tlZF09XCJyb3cuJHNlbGVjdGVkXCIgLz5cbiAgPGxhYmVsIGNsYXNzPVwicG8tdGFibGUtcmFkaW8tbGFiZWwgcG8tY2xpY2thYmxlXCIgKGNsaWNrKT1cInNlbGVjdGFibGUgPyBzZWxlY3RSb3cocm93KSA6ICdqYXZhc2NyaXB0OjsnXCI+PC9sYWJlbD5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjaW5wdXRDaGVja2JveCBsZXQtcm93PlxuICA8cG8tY2hlY2tib3hcbiAgICBuYW1lPVwiY2hlY2tib3hcIlxuICAgIChwLWNoYW5nZSk9XCJzZWxlY3RhYmxlID8gc2VsZWN0Um93KHJvdykgOiAnamF2YXNjcmlwdDo7J1wiXG4gICAgWyhuZ01vZGVsKV09XCJyb3cuJHNlbGVjdGVkXCJcbiAgICAoY2xpY2spPVwic2VsZWN0YWJsZSA/IHNlbGVjdFJvdyhyb3cpIDogJ2phdmFzY3JpcHQ6OydcIlxuICA+PC9wby1jaGVja2JveD5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjY29udGVudEhlYWRlclRlbXBsYXRlIGxldC1jb2x1bW4+XG4gIDxzcGFuXG4gICAgI2NvbHVtbkhlYWRlclxuICAgIGNsYXNzPVwicG8tdGFibGUtaGVhZGVyLWVsbGlwc2lzXCJcbiAgICBbcC10b29sdGlwXT1cInRvb2x0aXBUZXh0XCJcbiAgICAobW91c2VlbnRlcik9XCJ0b29sdGlwTW91c2VFbnRlcigkZXZlbnQpXCJcbiAgICAobW91c2VsZWF2ZSk9XCJ0b29sdGlwTW91c2VMZWF2ZSgpXCJcbiAgPlxuICAgIHt7IGNvbHVtbi5sYWJlbCB8fCAoY29sdW1uLnByb3BlcnR5IHwgdGl0bGVjYXNlKSB9fVxuICA8L3NwYW4+XG4gIDxzcGFuXG4gICAgKm5nSWY9XCJzb3J0ICYmIGNvbHVtbi5zb3J0YWJsZSAhPT0gZmFsc2VcIlxuICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItaWNvbi11bnNlbGVjdGVkXT1cInNvcnRlZENvbHVtbj8ucHJvcGVydHkgIT09IGNvbHVtblwiXG4gICAgW2NsYXNzLnBvLXRhYmxlLWhlYWRlci1pY29uLWRlc2NlbmRpbmddPVwic29ydGVkQ29sdW1uPy5wcm9wZXJ0eSA9PT0gY29sdW1uICYmIHNvcnRlZENvbHVtbi5hc2NlbmRpbmdcIlxuICAgIFtjbGFzcy5wby10YWJsZS1oZWFkZXItaWNvbi1hc2NlbmRpbmddPVwic29ydGVkQ29sdW1uPy5wcm9wZXJ0eSA9PT0gY29sdW1uICYmICFzb3J0ZWRDb2x1bW4uYXNjZW5kaW5nXCJcbiAgPlxuICA8L3NwYW4+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI25vQ29sdW1uc1dpdGhIZWlnaHQ+XG4gIDxkaXYgY2xhc3M9XCJwby10YWJsZS1oZWFkZXItZml4ZWQtaW5uZXJcIiBbc3R5bGUud2lkdGgucHhdPVwibm9Db2x1bW5zSGVhZGVyPy5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoXCI+XG4gICAge3sgaGFzVmFsaWRDb2x1bW5zID8gbGl0ZXJhbHMubm9WaXNpYmxlQ29sdW1uIDogbGl0ZXJhbHMubm9Db2x1bW5zIH19XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNub0NvbHVtbnNXaXRob3V0SGVpZ2h0PlxuICB7eyBoYXNWYWxpZENvbHVtbnMgPyBsaXRlcmFscy5ub1Zpc2libGVDb2x1bW4gOiBsaXRlcmFscy5ub0NvbHVtbnMgfX1cbjwvbmctdGVtcGxhdGU+XG5cbjwhLS0gVGVtcGxhdGUgZGUgYcOnw7VlcyAtLT5cbjxuZy10ZW1wbGF0ZSAjQWN0aW9uc0NvbHVtblRlbXBsYXRlIGxldC1yb3c9XCJyb3dcIiBsZXQtcm93SW5kZXg9XCJyb3dJbmRleFwiPlxuICA8dGQgKm5nSWY9XCJpc1NpbmdsZUFjdGlvblwiIGNsYXNzPVwicG8tdGFibGUtY29sdW1uIHBvLXRhYmxlLWNvbHVtbi1zaW5nbGUtYWN0aW9uXCI+XG4gICAgPGRpdlxuICAgICAgKm5nSWY9XCJmaXJzdEFjdGlvbi52aXNpYmxlICE9PSBmYWxzZVwiXG4gICAgICBjbGFzcz1cInBvLXRhYmxlLXNpbmdsZS1hY3Rpb24gcG8tY2xpY2thYmxlXCJcbiAgICAgIFtjbGFzcy5wby10YWJsZS1hY3Rpb24tZGlzYWJsZWRdPVwiZmlyc3RBY3Rpb24uZGlzYWJsZWQgPyB2YWxpZGF0ZVRhYmxlQWN0aW9uKHJvdywgZmlyc3RBY3Rpb24pIDogZmFsc2VcIlxuICAgICAgKGNsaWNrKT1cImV4ZWN1dGVUYWJsZUFjdGlvbihyb3csIGZpcnN0QWN0aW9uKVwiXG4gICAgPlxuICAgICAgPHBvLWljb24gKm5nSWY9XCJmaXJzdEFjdGlvbi5pY29uXCIgY2xhc3M9XCJwby10YWJsZS1zaW5nbGUtYWN0aW9uLWNvbnRlbnRcIiBbcC1pY29uXT1cImZpcnN0QWN0aW9uLmljb25cIj48L3BvLWljb24+XG4gICAgICB7eyBmaXJzdEFjdGlvbi5sYWJlbCB9fVxuICAgIDwvZGl2PlxuICA8L3RkPlxuXG4gIDx0ZCAqbmdJZj1cInZpc2libGVBY3Rpb25zLmxlbmd0aCA+IDFcIiBjbGFzcz1cInBvLXRhYmxlLWNvbHVtbi1hY3Rpb25zXCI+XG4gICAgPHNwYW4gI3BvcHVwVGFyZ2V0IGNsYXNzPVwicG8taWNvbiBwby1pY29uLW1vcmUgcG8tY2xpY2thYmxlXCIgKGNsaWNrKT1cInRvZ2dsZVBvcHVwKHJvdywgcG9wdXBUYXJnZXQpXCI+PC9zcGFuPlxuICA8L3RkPlxuPC9uZy10ZW1wbGF0ZT5cblxuPHBvLXRhYmxlLWNvbHVtbi1tYW5hZ2VyXG4gICpuZ0lmPVwiIWhpZGVDb2x1bW5zTWFuYWdlclwiXG4gIFtwLWNvbHVtbnNdPVwiY29sdW1uc1wiXG4gIFtwLW1heC1jb2x1bW5zXT1cIm1heENvbHVtbnNcIlxuICBbcC10YXJnZXRdPVwiY29sdW1uTWFuYWdlclRhcmdldFwiXG4gIFtwLWxhc3QtdmlzaWJsZS1jb2x1bW5zLXNlbGVjdGVkXT1cImxhc3RWaXNpYmxlQ29sdW1uc1NlbGVjdGVkXCJcbiAgKHAtdmlzaWJsZS1jb2x1bW5zLWNoYW5nZSk9XCJvblZpc2libGVDb2x1bW5zQ2hhbmdlKCRldmVudClcIlxuICAocC1jaGFuZ2UtdmlzaWJsZS1jb2x1bW5zKT1cIm9uQ2hhbmdlVmlzaWJsZUNvbHVtbnMoJGV2ZW50KVwiXG4gIFtwLWNvbHVtbnMtZGVmYXVsdF09XCJpbml0aWFsQ29sdW1uc1wiXG4gIChwLWluaXRpYWwtY29sdW1ucyk9XCJvbkNvbHVtblJlc3RvcmVNYW5hZ2VyKCRldmVudClcIlxuPlxuPC9wby10YWJsZS1jb2x1bW4tbWFuYWdlcj5cbiJdfQ==