mis-crystal-design-system 18.0.14 → 18.0.16-test-1

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 (33) hide show
  1. package/esm2022/loader/loader.component.mjs +2 -2
  2. package/esm2022/radio-button/radio-button.component.mjs +102 -23
  3. package/esm2022/table/actions-cell/actions-cell.component.mjs +284 -0
  4. package/esm2022/table/public_api.mjs +2 -1
  5. package/esm2022/table/table.component.mjs +195 -109
  6. package/esm2022/table/table.module.mjs +17 -5
  7. package/esm2022/toast/public_api.mjs +3 -1
  8. package/esm2022/toast/toast.component.mjs +73 -16
  9. package/esm2022/toast/toast.constants.mjs +7 -0
  10. package/esm2022/toast/toast.data.service.mjs +1 -1
  11. package/esm2022/toast/toast.interface.mjs +2 -0
  12. package/esm2022/toast/toast.service.mjs +14 -7
  13. package/fesm2022/mis-crystal-design-system-loader.mjs +2 -2
  14. package/fesm2022/mis-crystal-design-system-loader.mjs.map +1 -1
  15. package/fesm2022/mis-crystal-design-system-radio-button.mjs +101 -22
  16. package/fesm2022/mis-crystal-design-system-radio-button.mjs.map +1 -1
  17. package/fesm2022/mis-crystal-design-system-table.mjs +845 -465
  18. package/fesm2022/mis-crystal-design-system-table.mjs.map +1 -1
  19. package/fesm2022/mis-crystal-design-system-toast.mjs +93 -22
  20. package/fesm2022/mis-crystal-design-system-toast.mjs.map +1 -1
  21. package/package.json +7 -7
  22. package/radio-button/radio-button.component.d.ts +18 -17
  23. package/styles/mis-old-icon-styles.scss +498 -498
  24. package/table/actions-cell/actions-cell.component.d.ts +32 -0
  25. package/table/public_api.d.ts +1 -0
  26. package/table/table.component.d.ts +37 -10
  27. package/table/table.module.d.ts +5 -4
  28. package/toast/public_api.d.ts +2 -0
  29. package/toast/toast.component.d.ts +13 -1
  30. package/toast/toast.constants.d.ts +5 -0
  31. package/toast/toast.data.service.d.ts +3 -2
  32. package/toast/toast.interface.d.ts +6 -0
  33. package/toast/toast.service.d.ts +2 -1
@@ -1,10 +1,5 @@
1
1
  import { Component, EventEmitter, Input, Output, ViewChild, ViewChildren } from "@angular/core";
2
2
  import * as i0 from "@angular/core";
3
- import * as i1 from "@angular/common";
4
- import * as i2 from "./sub-table/sub-table.component";
5
- import * as i3 from "./filter/filter.component";
6
- import * as i4 from "./custom-table-cell.directive";
7
- import * as i5 from "./sort-icons.directive";
8
3
  const _c0 = ["filter"];
9
4
  const _c1 = ["table"];
10
5
  const _c2 = ["colHeaderRef"];
@@ -18,10 +13,11 @@ const _c9 = a0 => ({ "t-col-container-hover": a0 });
18
13
  const _c10 = (a0, a1) => ({ width: "100%", cursor: a0, "justify-content": a1 });
19
14
  const _c11 = a0 => ({ color: a0 });
20
15
  const _c12 = a0 => ({ "text-ellipsis": a0 });
21
- const _c13 = () => ({ display: "flex", justifyContent: "center", alignItems: "center", padding: "16px" });
22
- const _c14 = a0 => ({ "page-active": a0 });
23
- const _c15 = () => ({ display: "flex" });
24
- const _c16 = () => ({ "margin-right": "4px" });
16
+ const _c13 = a0 => ({ "disable-actions": a0 });
17
+ const _c14 = () => ({ display: "flex", justifyContent: "center", alignItems: "center", padding: "16px" });
18
+ const _c15 = a0 => ({ "page-active": a0 });
19
+ const _c16 = () => ({ display: "flex" });
20
+ const _c17 = () => ({ "margin-right": "4px" });
25
21
  function TableComponent_mis_table_filter_1_Template(rf, ctx) { if (rf & 1) {
26
22
  const _r1 = i0.ɵɵgetCurrentView();
27
23
  i0.ɵɵelementStart(0, "mis-table-filter", 11, 1);
@@ -32,7 +28,7 @@ function TableComponent_mis_table_filter_1_Template(rf, ctx) { if (rf & 1) {
32
28
  i0.ɵɵproperty("containerStyles", ctx_r1.filterContainerStyles)("filtersData", ctx_r1.filterData);
33
29
  } }
34
30
  function TableComponent_div_5_p_2_Template(rf, ctx) { if (rf & 1) {
35
- i0.ɵɵelementStart(0, "p", 17);
31
+ i0.ɵɵelementStart(0, "p", 18);
36
32
  i0.ɵɵtext(1);
37
33
  i0.ɵɵelementEnd();
38
34
  } if (rf & 2) {
@@ -41,16 +37,16 @@ function TableComponent_div_5_p_2_Template(rf, ctx) { if (rf & 1) {
41
37
  i0.ɵɵtextInterpolate1(" ", (colHeader_r4 == null ? null : colHeader_r4.data) || " ", " ");
42
38
  } }
43
39
  function TableComponent_div_5_span_3_span_1_Template(rf, ctx) { if (rf & 1) {
44
- i0.ɵɵelement(0, "span", 22);
40
+ i0.ɵɵelement(0, "span", 23);
45
41
  } }
46
42
  function TableComponent_div_5_span_3_Template(rf, ctx) { if (rf & 1) {
47
43
  const _r5 = i0.ɵɵgetCurrentView();
48
- i0.ɵɵelementStart(0, "span", 18);
44
+ i0.ɵɵelementStart(0, "span", 19);
49
45
  i0.ɵɵlistener("click", function TableComponent_div_5_span_3_Template_span_click_0_listener($event) { i0.ɵɵrestoreView(_r5); const colHeader_r4 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(); ctx_r1.filterData = colHeader_r4.filters; ctx_r1.toggleFilter(colHeader_r4.data); return i0.ɵɵresetView($event.stopPropagation()); });
50
- i0.ɵɵtemplate(1, TableComponent_div_5_span_3_span_1_Template, 1, 0, "span", 19);
46
+ i0.ɵɵtemplate(1, TableComponent_div_5_span_3_span_1_Template, 1, 0, "span", 20);
51
47
  i0.ɵɵnamespaceSVG();
52
- i0.ɵɵelementStart(2, "svg", 20);
53
- i0.ɵɵelement(3, "path", 21);
48
+ i0.ɵɵelementStart(2, "svg", 21);
49
+ i0.ɵɵelement(3, "path", 22);
54
50
  i0.ɵɵelementEnd()();
55
51
  } if (rf & 2) {
56
52
  const colHeader_r4 = i0.ɵɵnextContext().$implicit;
@@ -60,17 +56,28 @@ function TableComponent_div_5_span_3_Template(rf, ctx) { if (rf & 1) {
60
56
  } }
61
57
  function TableComponent_div_5_span_4_Template(rf, ctx) { if (rf & 1) {
62
58
  const _r6 = i0.ɵɵgetCurrentView();
63
- i0.ɵɵelementStart(0, "span", 23);
64
- i0.ɵɵlistener("sortChange", function TableComponent_div_5_span_4_Template_span_sortChange_0_listener($event) { i0.ɵɵrestoreView(_r6); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onSortChange($event)); });
59
+ i0.ɵɵelementStart(0, "span", 24);
60
+ i0.ɵɵlistener("click", function TableComponent_div_5_span_4_Template_span_click_0_listener($event) { i0.ɵɵrestoreView(_r6); const ctx_r1 = i0.ɵɵnextContext(2); ctx_r1.toggleCheckbox(); return i0.ɵɵresetView($event.stopPropagation()); });
61
+ i0.ɵɵelement(1, "mis-checkbox", 25);
62
+ i0.ɵɵelementEnd();
63
+ } if (rf & 2) {
64
+ const ctx_r1 = i0.ɵɵnextContext(2);
65
+ i0.ɵɵadvance();
66
+ i0.ɵɵproperty("checked", ctx_r1.selectAllCheckbox);
67
+ } }
68
+ function TableComponent_div_5_span_5_Template(rf, ctx) { if (rf & 1) {
69
+ const _r7 = i0.ɵɵgetCurrentView();
70
+ i0.ɵɵelementStart(0, "span", 26);
71
+ i0.ɵɵlistener("sortChange", function TableComponent_div_5_span_5_Template_span_sortChange_0_listener($event) { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onSortChange($event)); });
65
72
  i0.ɵɵelementEnd();
66
73
  } if (rf & 2) {
67
74
  const colHeader_r4 = i0.ɵɵnextContext().$implicit;
68
75
  const ctx_r1 = i0.ɵɵnextContext();
69
76
  i0.ɵɵproperty("column", colHeader_r4)("activeSort", ctx_r1.currentSort)("activeSorts", ctx_r1.multiColumnSort)("multiColumnSort", ctx_r1.config.multiColumnSort);
70
77
  } }
71
- function TableComponent_div_5_5_ng_template_0_Template(rf, ctx) { }
72
- function TableComponent_div_5_5_Template(rf, ctx) { if (rf & 1) {
73
- i0.ɵɵtemplate(0, TableComponent_div_5_5_ng_template_0_Template, 0, 0, "ng-template", 24);
78
+ function TableComponent_div_5_6_ng_template_0_Template(rf, ctx) { }
79
+ function TableComponent_div_5_6_Template(rf, ctx) { if (rf & 1) {
80
+ i0.ɵɵtemplate(0, TableComponent_div_5_6_ng_template_0_Template, 0, 0, "ng-template", 27);
74
81
  } if (rf & 2) {
75
82
  const colHeader_r4 = i0.ɵɵnextContext().$implicit;
76
83
  i0.ɵɵproperty("customComponent", colHeader_r4 == null ? null : colHeader_r4.componentRef)("data", colHeader_r4.data);
@@ -79,85 +86,102 @@ function TableComponent_div_5_Template(rf, ctx) { if (rf & 1) {
79
86
  const _r3 = i0.ɵɵgetCurrentView();
80
87
  i0.ɵɵelementStart(0, "div", 12, 2);
81
88
  i0.ɵɵlistener("click", function TableComponent_div_5_Template_div_click_0_listener() { const colHeader_r4 = i0.ɵɵrestoreView(_r3).$implicit; return i0.ɵɵresetView((colHeader_r4 == null ? null : colHeader_r4.action) ? colHeader_r4 == null ? null : colHeader_r4.action(colHeader_r4) : null); });
82
- i0.ɵɵtemplate(2, TableComponent_div_5_p_2_Template, 2, 1, "p", 13)(3, TableComponent_div_5_span_3_Template, 4, 1, "span", 14)(4, TableComponent_div_5_span_4_Template, 1, 4, "span", 15)(5, TableComponent_div_5_5_Template, 1, 2, null, 16);
89
+ i0.ɵɵtemplate(2, TableComponent_div_5_p_2_Template, 2, 1, "p", 13)(3, TableComponent_div_5_span_3_Template, 4, 1, "span", 14)(4, TableComponent_div_5_span_4_Template, 2, 1, "span", 15)(5, TableComponent_div_5_span_5_Template, 1, 4, "span", 16)(6, TableComponent_div_5_6_Template, 1, 2, null, 17);
83
90
  i0.ɵɵelementEnd();
84
91
  } if (rf & 2) {
85
92
  const colHeader_r4 = ctx.$implicit;
86
- i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction3(5, _c5, (colHeader_r4 == null ? null : colHeader_r4.style == null ? null : colHeader_r4.style.width) || "", colHeader_r4.action ? "pointer" : "default", (colHeader_r4 == null ? null : colHeader_r4.style == null ? null : colHeader_r4.style.justifyContent) ? colHeader_r4 == null ? null : colHeader_r4.style == null ? null : colHeader_r4.style.justifyContent : colHeader_r4.type === "number" ? "flex-end" : "space-between"));
93
+ i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction3(6, _c5, (colHeader_r4 == null ? null : colHeader_r4.style == null ? null : colHeader_r4.style.width) || "", colHeader_r4.action ? "pointer" : "default", (colHeader_r4 == null ? null : colHeader_r4.style == null ? null : colHeader_r4.style.justifyContent) ? colHeader_r4 == null ? null : colHeader_r4.style == null ? null : colHeader_r4.style.justifyContent : colHeader_r4.type === "number" ? "flex-end" : "space-between"));
87
94
  i0.ɵɵadvance(2);
88
- i0.ɵɵproperty("ngIf", (colHeader_r4 == null ? null : colHeader_r4.type) !== "custom");
95
+ i0.ɵɵproperty("ngIf", (colHeader_r4 == null ? null : colHeader_r4.type) !== "custom" && (colHeader_r4 == null ? null : colHeader_r4.type) !== "checkbox");
89
96
  i0.ɵɵadvance();
90
97
  i0.ɵɵproperty("ngIf", (colHeader_r4 == null ? null : colHeader_r4.type) !== "custom" && (colHeader_r4 == null ? null : colHeader_r4.filters) && (colHeader_r4 == null ? null : colHeader_r4.filters == null ? null : colHeader_r4.filters.length) > 0);
91
98
  i0.ɵɵadvance();
99
+ i0.ɵɵproperty("ngIf", (colHeader_r4 == null ? null : colHeader_r4.type) === "checkbox");
100
+ i0.ɵɵadvance();
92
101
  i0.ɵɵproperty("ngIf", (colHeader_r4 == null ? null : colHeader_r4.isSortable) && !(colHeader_r4 == null ? null : colHeader_r4.filters));
93
102
  i0.ɵɵadvance();
94
103
  i0.ɵɵproperty("ngIf", (colHeader_r4 == null ? null : colHeader_r4.type) === "custom");
95
104
  } }
96
105
  function TableComponent_div_7_div_2_p_2_Template(rf, ctx) { if (rf & 1) {
97
- i0.ɵɵelementStart(0, "p", 32);
106
+ i0.ɵɵelementStart(0, "p", 36);
98
107
  i0.ɵɵtext(1);
99
108
  i0.ɵɵelementEnd();
100
109
  } if (rf & 2) {
101
- const ctx_r12 = i0.ɵɵnextContext();
102
- const col_r11 = ctx_r12.$implicit;
103
- const i_r12 = ctx_r12.index;
110
+ const ctx_r13 = i0.ɵɵnextContext();
111
+ const col_r12 = ctx_r13.$implicit;
112
+ const i_r13 = ctx_r13.index;
104
113
  const ctx_r1 = i0.ɵɵnextContext(2);
105
- i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(3, _c11, (ctx_r1.config == null ? null : ctx_r1.config.colConfig[i_r12] == null ? null : ctx_r1.config.colConfig[i_r12].style == null ? null : ctx_r1.config.colConfig[i_r12].style.color) ? ctx_r1.config == null ? null : ctx_r1.config.colConfig[i_r12] == null ? null : ctx_r1.config.colConfig[i_r12].style == null ? null : ctx_r1.config.colConfig[i_r12].style.color : ""))("ngClass", i0.ɵɵpureFunction1(5, _c12, !!(ctx_r1.config == null ? null : ctx_r1.config.colConfig[i_r12] == null ? null : ctx_r1.config.colConfig[i_r12].style == null ? null : ctx_r1.config.colConfig[i_r12].style.textEllipsis)));
114
+ i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(3, _c11, (ctx_r1.config == null ? null : ctx_r1.config.colConfig[i_r13] == null ? null : ctx_r1.config.colConfig[i_r13].style == null ? null : ctx_r1.config.colConfig[i_r13].style.color) ? ctx_r1.config == null ? null : ctx_r1.config.colConfig[i_r13] == null ? null : ctx_r1.config.colConfig[i_r13].style == null ? null : ctx_r1.config.colConfig[i_r13].style.color : ""))("ngClass", i0.ɵɵpureFunction1(5, _c12, !!(ctx_r1.config == null ? null : ctx_r1.config.colConfig[i_r13] == null ? null : ctx_r1.config.colConfig[i_r13].style == null ? null : ctx_r1.config.colConfig[i_r13].style.textEllipsis)));
106
115
  i0.ɵɵadvance();
107
- i0.ɵɵtextInterpolate1(" ", col_r11, " ");
116
+ i0.ɵɵtextInterpolate1(" ", col_r12, " ");
108
117
  } }
109
118
  function TableComponent_div_7_div_2_3_ng_template_0_Template(rf, ctx) { }
110
119
  function TableComponent_div_7_div_2_3_Template(rf, ctx) { if (rf & 1) {
111
- i0.ɵɵtemplate(0, TableComponent_div_7_div_2_3_ng_template_0_Template, 0, 0, "ng-template", 24);
120
+ i0.ɵɵtemplate(0, TableComponent_div_7_div_2_3_ng_template_0_Template, 0, 0, "ng-template", 27);
112
121
  } if (rf & 2) {
113
- const ctx_r12 = i0.ɵɵnextContext();
114
- const col_r11 = ctx_r12.$implicit;
115
- const i_r12 = ctx_r12.index;
122
+ const ctx_r13 = i0.ɵɵnextContext();
123
+ const col_r12 = ctx_r13.$implicit;
124
+ const i_r13 = ctx_r13.index;
116
125
  const ctx_r1 = i0.ɵɵnextContext(2);
117
- i0.ɵɵproperty("customComponent", ctx_r1.config.colConfig[i_r12].componentRef)("data", col_r11);
126
+ i0.ɵɵproperty("customComponent", ctx_r1.config.colConfig[i_r13].componentRef)("data", col_r12);
127
+ } }
128
+ function TableComponent_div_7_div_2_mis_actions_cell_4_Template(rf, ctx) { if (rf & 1) {
129
+ const _r15 = i0.ɵɵgetCurrentView();
130
+ i0.ɵɵelementStart(0, "mis-actions-cell", 37);
131
+ i0.ɵɵlistener("actionClick", function TableComponent_div_7_div_2_mis_actions_cell_4_Template_mis_actions_cell_actionClick_0_listener($event) { i0.ɵɵrestoreView(_r15); const rowIndex_r16 = i0.ɵɵnextContext(2).index; const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onActionClick($event, rowIndex_r16)); });
132
+ i0.ɵɵelementEnd();
133
+ } if (rf & 2) {
134
+ const ctx_r13 = i0.ɵɵnextContext();
135
+ const col_r12 = ctx_r13.$implicit;
136
+ const i_r13 = ctx_r13.index;
137
+ const row_r17 = i0.ɵɵnextContext().$implicit;
138
+ const ctx_r1 = i0.ɵɵnextContext();
139
+ i0.ɵɵproperty("data", col_r12)("config", ctx_r1.config.colConfig[i_r13])("isChecked", col_r12)("ngClass", i0.ɵɵpureFunction1(4, _c13, (ctx_r1.config.colConfig[i_r13] == null ? null : ctx_r1.config.colConfig[i_r13].actionType) === "checkbox" && ctx_r1.isRowDisabled(row_r17)));
118
140
  } }
119
141
  function TableComponent_div_7_div_2_Template(rf, ctx) { if (rf & 1) {
120
- const _r9 = i0.ɵɵgetCurrentView();
121
- i0.ɵɵelementStart(0, "div", 29);
122
- i0.ɵɵlistener("click", function TableComponent_div_7_div_2_Template_div_click_0_listener() { const ctx_r9 = i0.ɵɵrestoreView(_r9); const col_r11 = ctx_r9.$implicit; const i_r12 = ctx_r9.index; const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView((ctx_r1.config == null ? null : ctx_r1.config.colConfig[i_r12] == null ? null : ctx_r1.config.colConfig[i_r12].action) ? ctx_r1.config == null ? null : ctx_r1.config.colConfig[i_r12] == null ? null : ctx_r1.config.colConfig[i_r12].action(col_r11) : null); });
123
- i0.ɵɵelementStart(1, "div", 30);
124
- i0.ɵɵtemplate(2, TableComponent_div_7_div_2_p_2_Template, 2, 7, "p", 31)(3, TableComponent_div_7_div_2_3_Template, 1, 2, null, 16);
142
+ const _r10 = i0.ɵɵgetCurrentView();
143
+ i0.ɵɵelementStart(0, "div", 32);
144
+ i0.ɵɵlistener("click", function TableComponent_div_7_div_2_Template_div_click_0_listener() { const ctx_r10 = i0.ɵɵrestoreView(_r10); const col_r12 = ctx_r10.$implicit; const i_r13 = ctx_r10.index; const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView((ctx_r1.config == null ? null : ctx_r1.config.colConfig[i_r13] == null ? null : ctx_r1.config.colConfig[i_r13].action) ? ctx_r1.config == null ? null : ctx_r1.config.colConfig[i_r13] == null ? null : ctx_r1.config.colConfig[i_r13].action(col_r12) : null); });
145
+ i0.ɵɵelementStart(1, "div", 33);
146
+ i0.ɵɵtemplate(2, TableComponent_div_7_div_2_p_2_Template, 2, 7, "p", 34)(3, TableComponent_div_7_div_2_3_Template, 1, 2, null, 17)(4, TableComponent_div_7_div_2_mis_actions_cell_4_Template, 1, 6, "mis-actions-cell", 35);
125
147
  i0.ɵɵelementEnd()();
126
148
  } if (rf & 2) {
127
- const i_r12 = ctx.index;
149
+ const i_r13 = ctx.index;
128
150
  const ctx_r1 = i0.ɵɵnextContext(2);
129
- i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(7, _c8, (ctx_r1.config == null ? null : ctx_r1.config.colConfig[i_r12] == null ? null : ctx_r1.config.colConfig[i_r12].style == null ? null : ctx_r1.config.colConfig[i_r12].style.width) || (ctx_r1.config == null ? null : ctx_r1.config.colHeaderConfig[i_r12] == null ? null : ctx_r1.config.colHeaderConfig[i_r12].style == null ? null : ctx_r1.config.colHeaderConfig[i_r12].style.width) || ""))("ngClass", i0.ɵɵpureFunction1(9, _c9, ctx_r1.config.cellHover));
151
+ i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(8, _c8, (ctx_r1.config == null ? null : ctx_r1.config.colConfig[i_r13] == null ? null : ctx_r1.config.colConfig[i_r13].style == null ? null : ctx_r1.config.colConfig[i_r13].style.width) || (ctx_r1.config == null ? null : ctx_r1.config.colHeaderConfig[i_r13] == null ? null : ctx_r1.config.colHeaderConfig[i_r13].style == null ? null : ctx_r1.config.colHeaderConfig[i_r13].style.width) || ""))("ngClass", i0.ɵɵpureFunction1(10, _c9, ctx_r1.config.cellHover));
152
+ i0.ɵɵadvance();
153
+ i0.ɵɵstyleMap(ctx_r1.config.colConfig[i_r13] == null ? null : ctx_r1.config.colConfig[i_r13].style);
154
+ i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction2(12, _c10, (ctx_r1.config.colConfig[i_r13] == null ? null : ctx_r1.config.colConfig[i_r13].action) ? "pointer" : "default", (ctx_r1.config.colConfig[i_r13] == null ? null : ctx_r1.config.colConfig[i_r13].style == null ? null : ctx_r1.config.colConfig[i_r13].style.justifyContent) ? ctx_r1.config.colConfig[i_r13] == null ? null : ctx_r1.config.colConfig[i_r13].style == null ? null : ctx_r1.config.colConfig[i_r13].style.justifyContent : (ctx_r1.config.colConfig[i_r13] == null ? null : ctx_r1.config.colConfig[i_r13].type) === "number" ? "flex-end" : "space-between"));
130
155
  i0.ɵɵadvance();
131
- i0.ɵɵstyleMap(ctx_r1.config.colConfig[i_r12] == null ? null : ctx_r1.config.colConfig[i_r12].style);
132
- i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction2(11, _c10, (ctx_r1.config.colConfig[i_r12] == null ? null : ctx_r1.config.colConfig[i_r12].action) ? "pointer" : "default", (ctx_r1.config.colConfig[i_r12] == null ? null : ctx_r1.config.colConfig[i_r12].style == null ? null : ctx_r1.config.colConfig[i_r12].style.justifyContent) ? ctx_r1.config.colConfig[i_r12] == null ? null : ctx_r1.config.colConfig[i_r12].style == null ? null : ctx_r1.config.colConfig[i_r12].style.justifyContent : (ctx_r1.config.colConfig[i_r12] == null ? null : ctx_r1.config.colConfig[i_r12].type) === "number" ? "flex-end" : "space-between"));
156
+ i0.ɵɵproperty("ngIf", (ctx_r1.config.colConfig[i_r13] == null ? null : ctx_r1.config.colConfig[i_r13].type) !== "custom" && (ctx_r1.config.colConfig[i_r13] == null ? null : ctx_r1.config.colConfig[i_r13].type) !== "actions");
133
157
  i0.ɵɵadvance();
134
- i0.ɵɵproperty("ngIf", (ctx_r1.config.colConfig[i_r12] == null ? null : ctx_r1.config.colConfig[i_r12].type) !== "custom");
158
+ i0.ɵɵproperty("ngIf", (ctx_r1.config.colConfig[i_r13] == null ? null : ctx_r1.config.colConfig[i_r13].type) === "custom");
135
159
  i0.ɵɵadvance();
136
- i0.ɵɵproperty("ngIf", (ctx_r1.config.colConfig[i_r12] == null ? null : ctx_r1.config.colConfig[i_r12].type) === "custom");
160
+ i0.ɵɵproperty("ngIf", (ctx_r1.config.colConfig[i_r13] == null ? null : ctx_r1.config.colConfig[i_r13].type) === "actions");
137
161
  } }
138
162
  function TableComponent_div_7_div_3_ng_container_1_Template(rf, ctx) { if (rf & 1) {
139
163
  i0.ɵɵelementContainerStart(0);
140
- i0.ɵɵelementStart(1, "div", 34);
164
+ i0.ɵɵelementStart(1, "div", 39);
141
165
  i0.ɵɵtext(2, " Loading... ");
142
166
  i0.ɵɵelementEnd();
143
167
  i0.ɵɵelementContainerEnd();
144
168
  } if (rf & 2) {
145
169
  i0.ɵɵadvance();
146
- i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction0(1, _c13));
170
+ i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction0(1, _c14));
147
171
  } }
148
172
  function TableComponent_div_7_div_3_ng_container_2_Template(rf, ctx) { if (rf & 1) {
149
173
  i0.ɵɵelementContainerStart(0);
150
- i0.ɵɵelementStart(1, "div", 34);
174
+ i0.ɵɵelementStart(1, "div", 39);
151
175
  i0.ɵɵtext(2, " No Data Available... ");
152
176
  i0.ɵɵelementEnd();
153
177
  i0.ɵɵelementContainerEnd();
154
178
  } if (rf & 2) {
155
179
  i0.ɵɵadvance();
156
- i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction0(1, _c13));
180
+ i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction0(1, _c14));
157
181
  } }
158
182
  function TableComponent_div_7_div_3_ng_container_3_Template(rf, ctx) { if (rf & 1) {
159
183
  i0.ɵɵelementContainerStart(0);
160
- i0.ɵɵelement(1, "sub-table", 35);
184
+ i0.ɵɵelement(1, "sub-table", 40);
161
185
  i0.ɵɵelementContainerEnd();
162
186
  } if (rf & 2) {
163
187
  const ctx_r1 = i0.ɵɵnextContext(3);
@@ -165,8 +189,8 @@ function TableComponent_div_7_div_3_ng_container_3_Template(rf, ctx) { if (rf &
165
189
  i0.ɵɵproperty("config", ctx_r1.subTableconfig)("tableData", ctx_r1.subTableData);
166
190
  } }
167
191
  function TableComponent_div_7_div_3_Template(rf, ctx) { if (rf & 1) {
168
- i0.ɵɵelementStart(0, "div", 33);
169
- i0.ɵɵtemplate(1, TableComponent_div_7_div_3_ng_container_1_Template, 3, 2, "ng-container", 16)(2, TableComponent_div_7_div_3_ng_container_2_Template, 3, 2, "ng-container", 16)(3, TableComponent_div_7_div_3_ng_container_3_Template, 2, 2, "ng-container", 16);
192
+ i0.ɵɵelementStart(0, "div", 38);
193
+ i0.ɵɵtemplate(1, TableComponent_div_7_div_3_ng_container_1_Template, 3, 2, "ng-container", 17)(2, TableComponent_div_7_div_3_ng_container_2_Template, 3, 2, "ng-container", 17)(3, TableComponent_div_7_div_3_ng_container_3_Template, 2, 2, "ng-container", 17);
170
194
  i0.ɵɵelementEnd();
171
195
  } if (rf & 2) {
172
196
  const ctx_r1 = i0.ɵɵnextContext(2);
@@ -178,91 +202,107 @@ function TableComponent_div_7_div_3_Template(rf, ctx) { if (rf & 1) {
178
202
  i0.ɵɵproperty("ngIf", !ctx_r1.subTableDataLoading && ctx_r1.subTableData.length > 0);
179
203
  } }
180
204
  function TableComponent_div_7_Template(rf, ctx) { if (rf & 1) {
181
- const _r7 = i0.ɵɵgetCurrentView();
182
- i0.ɵɵelementStart(0, "div", 25)(1, "div", 26);
183
- i0.ɵɵlistener("click", function TableComponent_div_7_Template_div_click_1_listener() { const i_r8 = i0.ɵɵrestoreView(_r7).index; const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.selectRow(i_r8)); });
184
- i0.ɵɵtemplate(2, TableComponent_div_7_div_2_Template, 4, 14, "div", 27);
205
+ const _r8 = i0.ɵɵgetCurrentView();
206
+ i0.ɵɵelementStart(0, "div", 28)(1, "div", 29);
207
+ i0.ɵɵlistener("click", function TableComponent_div_7_Template_div_click_1_listener() { const i_r9 = i0.ɵɵrestoreView(_r8).index; const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.selectRow(i_r9)); });
208
+ i0.ɵɵtemplate(2, TableComponent_div_7_div_2_Template, 5, 15, "div", 30);
185
209
  i0.ɵɵelementEnd();
186
- i0.ɵɵtemplate(3, TableComponent_div_7_div_3_Template, 4, 3, "div", 28);
210
+ i0.ɵɵtemplate(3, TableComponent_div_7_div_3_Template, 4, 3, "div", 31);
187
211
  i0.ɵɵelementEnd();
188
212
  } if (rf & 2) {
189
- const row_r14 = ctx.$implicit;
190
- const i_r8 = ctx.index;
213
+ const row_r17 = ctx.$implicit;
214
+ const i_r9 = ctx.index;
191
215
  const ctx_r1 = i0.ɵɵnextContext();
192
216
  i0.ɵɵadvance();
193
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction2(4, _c6, ctx_r1.config.cellHover, i_r8 === ctx_r1.activeRowIndex))("ngStyle", i0.ɵɵpureFunction1(7, _c7, (ctx_r1.config == null ? null : ctx_r1.config.rowConfig == null ? null : ctx_r1.config.rowConfig.height) ? ctx_r1.config.rowConfig.height : "44px"));
217
+ i0.ɵɵclassProp("disabled-row", ctx_r1.isRowDisabled(row_r17));
218
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction2(6, _c6, ctx_r1.config.cellHover, ctx_r1.activeRowIndex.includes(i_r9)))("ngStyle", i0.ɵɵpureFunction1(9, _c7, (ctx_r1.config == null ? null : ctx_r1.config.rowConfig == null ? null : ctx_r1.config.rowConfig.height) ? ctx_r1.config.rowConfig.height : "44px"));
194
219
  i0.ɵɵadvance();
195
- i0.ɵɵproperty("ngForOf", row_r14);
220
+ i0.ɵɵproperty("ngForOf", row_r17);
196
221
  i0.ɵɵadvance();
197
- i0.ɵɵproperty("ngIf", (ctx_r1.config == null ? null : ctx_r1.config.canExpand) && ctx_r1.expandedIndex === i_r8);
222
+ i0.ɵɵproperty("ngIf", (ctx_r1.config == null ? null : ctx_r1.config.canExpand) && ctx_r1.expandedIndex === i_r9);
198
223
  } }
199
- function TableComponent_div_8_div_7_span_1_Template(rf, ctx) { if (rf & 1) {
200
- const _r16 = i0.ɵɵgetCurrentView();
201
- i0.ɵɵelementStart(0, "span", 46);
202
- i0.ɵɵlistener("click", function TableComponent_div_8_div_7_span_1_Template_span_click_0_listener() { i0.ɵɵrestoreView(_r16); const pageNumber_r17 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.updateSelectedPage(pageNumber_r17)); });
224
+ function TableComponent_div_8_ng_container_7_div_1_span_1_Template(rf, ctx) { if (rf & 1) {
225
+ const _r19 = i0.ɵɵgetCurrentView();
226
+ i0.ɵɵelementStart(0, "span", 51);
227
+ i0.ɵɵlistener("click", function TableComponent_div_8_ng_container_7_div_1_span_1_Template_span_click_0_listener() { i0.ɵɵrestoreView(_r19); const pageNumber_r20 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.updateSelectedPage(pageNumber_r20)); });
203
228
  i0.ɵɵtext(1);
204
229
  i0.ɵɵelementEnd();
205
230
  } if (rf & 2) {
206
- const pageNumber_r17 = i0.ɵɵnextContext().$implicit;
207
- const ctx_r1 = i0.ɵɵnextContext(2);
208
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(2, _c14, pageNumber_r17 == (ctx_r1.config.paginationConfig == null ? null : ctx_r1.config.paginationConfig.selectedPage)));
231
+ const pageNumber_r20 = i0.ɵɵnextContext().$implicit;
232
+ const ctx_r1 = i0.ɵɵnextContext(3);
233
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(2, _c15, pageNumber_r20 == (ctx_r1.config.paginationConfig == null ? null : ctx_r1.config.paginationConfig.selectedPage)));
209
234
  i0.ɵɵadvance();
210
- i0.ɵɵtextInterpolate(pageNumber_r17);
235
+ i0.ɵɵtextInterpolate(pageNumber_r20);
211
236
  } }
212
- function TableComponent_div_8_div_7_span_2_Template(rf, ctx) { if (rf & 1) {
213
- i0.ɵɵelementStart(0, "span", 47)(1, "div", 34);
214
- i0.ɵɵelement(2, "span", 48)(3, "span", 48)(4, "span", 49);
237
+ function TableComponent_div_8_ng_container_7_div_1_span_2_Template(rf, ctx) { if (rf & 1) {
238
+ i0.ɵɵelementStart(0, "span", 52)(1, "div", 39);
239
+ i0.ɵɵelement(2, "span", 53)(3, "span", 53)(4, "span", 54);
215
240
  i0.ɵɵelementEnd()();
216
241
  } if (rf & 2) {
217
242
  i0.ɵɵadvance();
218
- i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction0(3, _c15));
243
+ i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction0(3, _c16));
219
244
  i0.ɵɵadvance();
220
- i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction0(4, _c16));
245
+ i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction0(4, _c17));
221
246
  i0.ɵɵadvance();
222
- i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction0(5, _c16));
247
+ i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction0(5, _c17));
223
248
  } }
224
- function TableComponent_div_8_div_7_Template(rf, ctx) { if (rf & 1) {
249
+ function TableComponent_div_8_ng_container_7_div_1_Template(rf, ctx) { if (rf & 1) {
225
250
  i0.ɵɵelementStart(0, "div");
226
- i0.ɵɵtemplate(1, TableComponent_div_8_div_7_span_1_Template, 2, 4, "span", 44)(2, TableComponent_div_8_div_7_span_2_Template, 5, 6, "span", 45);
251
+ i0.ɵɵtemplate(1, TableComponent_div_8_ng_container_7_div_1_span_1_Template, 2, 4, "span", 49)(2, TableComponent_div_8_ng_container_7_div_1_span_2_Template, 5, 6, "span", 50);
227
252
  i0.ɵɵelementEnd();
228
253
  } if (rf & 2) {
229
- const pageNumber_r17 = ctx.$implicit;
254
+ const pageNumber_r20 = ctx.$implicit;
230
255
  i0.ɵɵadvance();
231
- i0.ɵɵproperty("ngIf", pageNumber_r17 != 0);
256
+ i0.ɵɵproperty("ngIf", pageNumber_r20 != 0);
232
257
  i0.ɵɵadvance();
233
- i0.ɵɵproperty("ngIf", pageNumber_r17 == 0);
258
+ i0.ɵɵproperty("ngIf", pageNumber_r20 == 0);
259
+ } }
260
+ function TableComponent_div_8_ng_container_7_Template(rf, ctx) { if (rf & 1) {
261
+ i0.ɵɵelementContainerStart(0);
262
+ i0.ɵɵtemplate(1, TableComponent_div_8_ng_container_7_div_1_Template, 3, 2, "div", 48);
263
+ i0.ɵɵelementContainerEnd();
264
+ } if (rf & 2) {
265
+ const ctx_r1 = i0.ɵɵnextContext(2);
266
+ i0.ɵɵadvance();
267
+ i0.ɵɵproperty("ngForOf", ctx_r1.pages);
234
268
  } }
235
269
  function TableComponent_div_8_Template(rf, ctx) { if (rf & 1) {
236
- const _r15 = i0.ɵɵgetCurrentView();
237
- i0.ɵɵelementStart(0, "div", 36)(1, "p", 37);
270
+ const _r18 = i0.ɵɵgetCurrentView();
271
+ i0.ɵɵelementStart(0, "div", 41)(1, "p", 42);
238
272
  i0.ɵɵtext(2);
239
273
  i0.ɵɵelementEnd();
240
- i0.ɵɵelementStart(3, "div", 38)(4, "span", 39);
241
- i0.ɵɵlistener("click", function TableComponent_div_8_Template_span_click_4_listener() { i0.ɵɵrestoreView(_r15); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.updateSelectedPage((ctx_r1.config.paginationConfig == null ? null : ctx_r1.config.paginationConfig.selectedPage) - 1)); });
274
+ i0.ɵɵelementStart(3, "div", 43)(4, "span", 44);
275
+ i0.ɵɵlistener("click", function TableComponent_div_8_Template_span_click_4_listener() { i0.ɵɵrestoreView(_r18); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView((ctx_r1.config.paginationConfig == null ? null : ctx_r1.config.paginationConfig.selectedPage) > 1 && ctx_r1.updateSelectedPage((ctx_r1.config.paginationConfig == null ? null : ctx_r1.config.paginationConfig.selectedPage) - 1)); });
242
276
  i0.ɵɵnamespaceSVG();
243
- i0.ɵɵelementStart(5, "svg", 40);
244
- i0.ɵɵelement(6, "path", 41);
277
+ i0.ɵɵelementStart(5, "svg", 45);
278
+ i0.ɵɵelement(6, "path", 46);
245
279
  i0.ɵɵelementEnd()();
246
- i0.ɵɵtemplate(7, TableComponent_div_8_div_7_Template, 3, 2, "div", 42);
280
+ i0.ɵɵtemplate(7, TableComponent_div_8_ng_container_7_Template, 2, 1, "ng-container", 17);
247
281
  i0.ɵɵnamespaceHTML();
248
- i0.ɵɵelementStart(8, "span", 39);
249
- i0.ɵɵlistener("click", function TableComponent_div_8_Template_span_click_8_listener() { i0.ɵɵrestoreView(_r15); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.updateSelectedPage((ctx_r1.config.paginationConfig == null ? null : ctx_r1.config.paginationConfig.selectedPage) + 1)); });
282
+ i0.ɵɵelementStart(8, "span", 44);
283
+ i0.ɵɵlistener("click", function TableComponent_div_8_Template_span_click_8_listener() { i0.ɵɵrestoreView(_r18); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView((ctx_r1.config.paginationConfig == null ? null : ctx_r1.config.paginationConfig.selectedPage) < (ctx_r1.config.paginationConfig == null ? null : ctx_r1.config.paginationConfig.noOfPages) && ctx_r1.updateSelectedPage((ctx_r1.config.paginationConfig == null ? null : ctx_r1.config.paginationConfig.selectedPage) + 1)); });
250
284
  i0.ɵɵnamespaceSVG();
251
- i0.ɵɵelementStart(9, "svg", 40);
252
- i0.ɵɵelement(10, "path", 43);
285
+ i0.ɵɵelementStart(9, "svg", 45);
286
+ i0.ɵɵelement(10, "path", 47);
253
287
  i0.ɵɵelementEnd()()()();
254
288
  } if (rf & 2) {
255
289
  const ctx_r1 = i0.ɵɵnextContext();
256
290
  i0.ɵɵadvance(2);
257
291
  i0.ɵɵtextInterpolate3(" Showing ", ((ctx_r1.config.paginationConfig == null ? null : ctx_r1.config.paginationConfig.selectedPage) - 1) * ctx_r1.config.paginationConfig.rowsPerPage + 1, "-", ((ctx_r1.config.paginationConfig == null ? null : ctx_r1.config.paginationConfig.selectedPage) - 1) * ctx_r1.config.paginationConfig.rowsPerPage + ctx_r1.tableLength, " of ", ctx_r1.config.paginationConfig.totalNoOfRows, " items ");
258
- i0.ɵɵadvance(5);
259
- i0.ɵɵproperty("ngForOf", ctx_r1.pages);
292
+ i0.ɵɵadvance(2);
293
+ i0.ɵɵclassProp("page-nav-inactive", (ctx_r1.config.paginationConfig == null ? null : ctx_r1.config.paginationConfig.selectedPage) === 1);
294
+ i0.ɵɵadvance(3);
295
+ i0.ɵɵproperty("ngIf", !(ctx_r1.config.paginationConfig == null ? null : ctx_r1.config.paginationConfig.disablePageJumping));
296
+ i0.ɵɵadvance();
297
+ i0.ɵɵclassProp("page-nav-inactive", (ctx_r1.config.paginationConfig == null ? null : ctx_r1.config.paginationConfig.selectedPage) === (ctx_r1.config.paginationConfig == null ? null : ctx_r1.config.paginationConfig.noOfPages));
260
298
  } }
261
299
  export class TableComponent {
262
300
  constructor(renderer) {
263
301
  this.renderer = renderer;
264
302
  // Initialize with -1 to indicate no row is colored at the beginning
265
- this.activeRowIndex = 0;
303
+ this.activeRowIndex = [-1];
304
+ this.hasCheckboxActions = false;
305
+ this.selectAllCheckbox = false;
266
306
  // Filter related variables
267
307
  this.showFilter = false;
268
308
  this.filterName = "";
@@ -279,13 +319,17 @@ export class TableComponent {
279
319
  this.currentSort = null;
280
320
  this.multiColumnSort = [];
281
321
  this.sortChange = new EventEmitter();
322
+ this.headerAction = new EventEmitter();
282
323
  }
283
324
  // Function to handle row click
284
325
  selectRow(index) {
285
- this.activeRowIndex = index; // Set the selected index to the clicked row's index
326
+ if (this.hasCheckboxActions)
327
+ return;
328
+ this.activeRowIndex = [index]; // Set the selected index to the clicked row's index
286
329
  !!this.config.rowConfig.action && this.config.rowConfig.action(index);
287
330
  }
288
331
  ngOnInit() {
332
+ this.hasCheckboxActions = this.config.colConfig?.some(col => col.type === "actions" && col.actionType === "checkbox");
289
333
  this.tableLength = !!this.tableData ? this.tableData.length : 0;
290
334
  this.initializeFilters();
291
335
  if (this.config.paginationConfig) {
@@ -317,7 +361,7 @@ export class TableComponent {
317
361
  }
318
362
  ngOnChanges() {
319
363
  this.tableLength = !!this.tableData ? this.tableData.length : 0;
320
- this.activeRowIndex = this.config.activeRowIndex || 0;
364
+ this.activeRowIndex = [this.config.activeRowIndex || -1];
321
365
  }
322
366
  // Filter related functions
323
367
  initializeFilters() {
@@ -384,6 +428,12 @@ export class TableComponent {
384
428
  }
385
429
  }
386
430
  updateSelectedPage(pageNumber) {
431
+ // Guard clause to prevent out-of-range updates
432
+ if (pageNumber < 1 || pageNumber > this.config.paginationConfig.noOfPages)
433
+ return;
434
+ if (this.config.colHeaderConfig?.some(col => col.type === "checkbox")) {
435
+ this.selectAllCheckbox = false;
436
+ }
387
437
  if (pageNumber < 1 || pageNumber > this.config.paginationConfig.noOfPages)
388
438
  return;
389
439
  this.config.paginationConfig.selectedPage = pageNumber;
@@ -423,11 +473,11 @@ export class TableComponent {
423
473
  const backgroundColor = colHeadersRowConfig?.style?.backgroundColor || "#FFFFFF";
424
474
  const fontSize = colHeadersRowConfig?.style?.fontSize || "14px";
425
475
  return {
426
- 'min-height': minHeight,
427
- 'border-top': borderTop,
428
- 'border-bottom': borderBottom,
429
- 'background-color': backgroundColor,
430
- 'font-size': fontSize
476
+ "min-height": minHeight,
477
+ "border-top": borderTop,
478
+ "border-bottom": borderBottom,
479
+ "background-color": backgroundColor,
480
+ "font-size": fontSize
431
481
  };
432
482
  }
433
483
  onSortChange(sortState) {
@@ -448,6 +498,40 @@ export class TableComponent {
448
498
  }
449
499
  this.sortChange.emit(sortState);
450
500
  }
501
+ getActionsCellStyle(style) {
502
+ if (!style)
503
+ return {};
504
+ const { width, ...restStyle } = style;
505
+ return restStyle;
506
+ }
507
+ onActionClick(event, rowIndex) {
508
+ if (event.isChecked) {
509
+ this.activeRowIndex.push(rowIndex);
510
+ }
511
+ else {
512
+ this.activeRowIndex = this.activeRowIndex.filter(index => index !== rowIndex);
513
+ }
514
+ }
515
+ isRowDisabled(row) {
516
+ return typeof this.config.rowConfig.disableRow === "function" ? this.config.rowConfig.disableRow(row) : false;
517
+ }
518
+ toggleCheckbox() {
519
+ this.selectAllCheckbox = !this.selectAllCheckbox;
520
+ // Find the checkbox column index (if any)
521
+ const checkboxColIndex = this.config.colHeaderConfig.findIndex(col => col.type === "checkbox");
522
+ // Only update if checkbox column exists
523
+ if (checkboxColIndex !== -1) {
524
+ this.tableData = this.tableData.map((row) => {
525
+ const updatedRow = [...row];
526
+ updatedRow[checkboxColIndex] = this.selectAllCheckbox;
527
+ return updatedRow;
528
+ });
529
+ }
530
+ this.headerAction?.emit({
531
+ type: "checkboxToggle",
532
+ payload: this.tableData
533
+ });
534
+ }
451
535
  static { this.ɵfac = function TableComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || TableComponent)(i0.ɵɵdirectiveInject(i0.Renderer2)); }; }
452
536
  static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: TableComponent, selectors: [["mis-table"]], viewQuery: function TableComponent_Query(rf, ctx) { if (rf & 1) {
453
537
  i0.ɵɵviewQuery(_c0, 5);
@@ -458,16 +542,16 @@ export class TableComponent {
458
542
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.filter = _t.first);
459
543
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.table = _t.first);
460
544
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.colHeaders = _t);
461
- } }, inputs: { config: [0, "tableConfig", "config"], subTableconfig: "subTableconfig", tableDataLoading: "tableDataLoading", expandedIndex: "expandedIndex", tableData: "tableData", subTableData: "subTableData", subTableDataLoading: "subTableDataLoading" }, outputs: { filtersUpdated: "filtersUpdated", pageSelected: "pageSelected", sortChange: "sortChange" }, features: [i0.ɵɵNgOnChangesFeature], decls: 9, vars: 15, consts: [["table", ""], ["filter", ""], ["colHeaderRef", ""], ["id", "main-container", 3, "ngStyle"], [3, "containerStyles", "filtersData", "filtersApplied", 4, "ngIf"], ["id", "table-container", 3, "ngClass"], ["id", "col-headers-container", 3, "ngStyle"], ["class", "col-header", 3, "ngStyle", "click", 4, "ngFor", "ngForOf"], ["id", "data-container"], ["class", "row-wrapper", 4, "ngFor", "ngForOf"], ["id", "pagination-container", 4, "ngIf"], [3, "filtersApplied", "containerStyles", "filtersData"], [1, "col-header", 3, "click", "ngStyle"], ["class", "col-header-text", 4, "ngIf"], ["class", "filter-icon", 3, "click", 4, "ngIf"], ["appSortIcons", "", "class", "sort-icon", 3, "column", "activeSort", "activeSorts", "multiColumnSort", "sortChange", 4, "ngIf"], [4, "ngIf"], [1, "col-header-text"], [1, "filter-icon", 3, "click"], ["id", "filter-active", 4, "ngIf"], ["fill", "none", "height", "10", "viewBox", "0 0 13 10", "width", "13", "xmlns", "http://www.w3.org/2000/svg"], ["clip-rule", "evenodd", "d", "M4.97546 10H7.64213V8H4.97546V10ZM0.308472 0V2H12.3085V0H0.308472ZM2.30847 6H10.3085V4H2.30847V6Z", "fill", "#181F33", "fill-rule", "evenodd"], ["id", "filter-active"], ["appSortIcons", "", 1, "sort-icon", 3, "sortChange", "column", "activeSort", "activeSorts", "multiColumnSort"], ["customTableCell", "", 3, "customComponent", "data"], [1, "row-wrapper"], [1, "t-row", 3, "click", "ngClass", "ngStyle"], ["class", "t-col-container", 3, "ngStyle", "ngClass", "click", 4, "ngFor", "ngForOf"], ["class", "sub-row", 4, "ngIf"], [1, "t-col-container", 3, "click", "ngStyle", "ngClass"], [1, "t-col", 3, "ngStyle"], ["class", "t-col-text", 3, "ngStyle", "ngClass", 4, "ngIf"], [1, "t-col-text", 3, "ngStyle", "ngClass"], [1, "sub-row"], [3, "ngStyle"], [3, "config", "tableData"], ["id", "pagination-container"], ["id", "pagination-text"], ["id", "pages-container"], [1, "page", 3, "click"], ["fill", "none", "height", "10", "viewBox", "0 0 7 10", "width", "7", "xmlns", "http://www.w3.org/2000/svg"], ["clip-rule", "evenodd", "d", "M0.857405 5.56295C0.855794 5.56139 0.854188 5.55982 0.852588 5.55824C0.695955 5.40408 0.617641 5.20203 0.617647 4.99998C0.617641 4.79793 0.695955 4.59588 0.852588 4.44172C0.854188 4.44014 0.855794 4.43858 0.857404 4.43702L5.13066 0.231231C5.44392 -0.0770771 5.9518 -0.0770771 6.26506 0.231231C6.57831 0.53954 6.57831 1.03941 6.26506 1.34772L2.5542 4.99998L6.26506 8.65225C6.57831 8.96055 6.57831 9.46042 6.26506 9.76873C5.9518 10.077 5.44392 10.077 5.13066 9.76873L0.857405 5.56295Z", "fill", "#181F33", "fill-rule", "evenodd"], [4, "ngFor", "ngForOf"], ["clip-rule", "evenodd", "d", "M6.1426 5.56295C6.14421 5.56139 6.14581 5.55982 6.14741 5.55824C6.30405 5.40408 6.38236 5.20203 6.38236 4.99998C6.38236 4.79793 6.30405 4.59588 6.14741 4.44172C6.14581 4.44014 6.14421 4.43858 6.1426 4.43702L1.86934 0.231231C1.55608 -0.0770771 1.0482 -0.0770771 0.734942 0.231231C0.421688 0.53954 0.421688 1.03941 0.734942 1.34772L4.4458 4.99998L0.734941 8.65225C0.421686 8.96055 0.421686 9.46042 0.734941 9.76873C1.0482 10.077 1.55608 10.077 1.86934 9.76873L6.1426 5.56295Z", "fill", "#181F33", "fill-rule", "evenodd"], ["class", "page", 3, "ngClass", "click", 4, "ngIf"], ["class", "page-seperator", 4, "ngIf"], [1, "page", 3, "click", "ngClass"], [1, "page-seperator"], [1, "dot", 3, "ngStyle"], [1, "dot"]], template: function TableComponent_Template(rf, ctx) { if (rf & 1) {
545
+ } }, inputs: { config: [0, "tableConfig", "config"], subTableconfig: "subTableconfig", tableDataLoading: "tableDataLoading", expandedIndex: "expandedIndex", tableData: "tableData", subTableData: "subTableData", subTableDataLoading: "subTableDataLoading" }, outputs: { filtersUpdated: "filtersUpdated", pageSelected: "pageSelected", sortChange: "sortChange", headerAction: "headerAction" }, features: [i0.ɵɵNgOnChangesFeature], decls: 9, vars: 15, consts: [["table", ""], ["filter", ""], ["colHeaderRef", ""], ["id", "main-container", 3, "ngStyle"], [3, "containerStyles", "filtersData", "filtersApplied", 4, "ngIf"], ["id", "table-container", 3, "ngClass"], ["id", "col-headers-container", 3, "ngStyle"], ["class", "col-header", 3, "ngStyle", "click", 4, "ngFor", "ngForOf"], ["id", "data-container"], ["class", "row-wrapper", 4, "ngFor", "ngForOf"], ["id", "pagination-container", 4, "ngIf"], [3, "filtersApplied", "containerStyles", "filtersData"], [1, "col-header", 3, "click", "ngStyle"], ["class", "col-header-text", 4, "ngIf"], ["class", "filter-icon", 3, "click", 4, "ngIf"], ["class", "checkbox-icon", 3, "click", 4, "ngIf"], ["appSortIcons", "", "class", "sort-icon", 3, "column", "activeSort", "activeSorts", "multiColumnSort", "sortChange", 4, "ngIf"], [4, "ngIf"], [1, "col-header-text"], [1, "filter-icon", 3, "click"], ["id", "filter-active", 4, "ngIf"], ["fill", "none", "height", "10", "viewBox", "0 0 13 10", "width", "13", "xmlns", "http://www.w3.org/2000/svg"], ["clip-rule", "evenodd", "d", "M4.97546 10H7.64213V8H4.97546V10ZM0.308472 0V2H12.3085V0H0.308472ZM2.30847 6H10.3085V4H2.30847V6Z", "fill", "#181F33", "fill-rule", "evenodd"], ["id", "filter-active"], [1, "checkbox-icon", 3, "click"], [3, "checked"], ["appSortIcons", "", 1, "sort-icon", 3, "sortChange", "column", "activeSort", "activeSorts", "multiColumnSort"], ["customTableCell", "", 3, "customComponent", "data"], [1, "row-wrapper"], [1, "t-row", 3, "click", "ngClass", "ngStyle"], ["class", "t-col-container", 3, "ngStyle", "ngClass", "click", 4, "ngFor", "ngForOf"], ["class", "sub-row", 4, "ngIf"], [1, "t-col-container", 3, "click", "ngStyle", "ngClass"], [1, "t-col", 3, "ngStyle"], ["class", "t-col-text", 3, "ngStyle", "ngClass", 4, "ngIf"], [3, "data", "config", "isChecked", "ngClass", "actionClick", 4, "ngIf"], [1, "t-col-text", 3, "ngStyle", "ngClass"], [3, "actionClick", "data", "config", "isChecked", "ngClass"], [1, "sub-row"], [3, "ngStyle"], [3, "config", "tableData"], ["id", "pagination-container"], ["id", "pagination-text"], ["id", "pages-container"], [1, "page", 3, "click"], ["fill", "none", "height", "10", "viewBox", "0 0 7 10", "width", "7", "xmlns", "http://www.w3.org/2000/svg"], ["clip-rule", "evenodd", "d", "M0.857405 5.56295C0.855794 5.56139 0.854188 5.55982 0.852588 5.55824C0.695955 5.40408 0.617641 5.20203 0.617647 4.99998C0.617641 4.79793 0.695955 4.59588 0.852588 4.44172C0.854188 4.44014 0.855794 4.43858 0.857404 4.43702L5.13066 0.231231C5.44392 -0.0770771 5.9518 -0.0770771 6.26506 0.231231C6.57831 0.53954 6.57831 1.03941 6.26506 1.34772L2.5542 4.99998L6.26506 8.65225C6.57831 8.96055 6.57831 9.46042 6.26506 9.76873C5.9518 10.077 5.44392 10.077 5.13066 9.76873L0.857405 5.56295Z", "fill", "#181F33", "fill-rule", "evenodd"], ["clip-rule", "evenodd", "d", "M6.1426 5.56295C6.14421 5.56139 6.14581 5.55982 6.14741 5.55824C6.30405 5.40408 6.38236 5.20203 6.38236 4.99998C6.38236 4.79793 6.30405 4.59588 6.14741 4.44172C6.14581 4.44014 6.14421 4.43858 6.1426 4.43702L1.86934 0.231231C1.55608 -0.0770771 1.0482 -0.0770771 0.734942 0.231231C0.421688 0.53954 0.421688 1.03941 0.734942 1.34772L4.4458 4.99998L0.734941 8.65225C0.421686 8.96055 0.421686 9.46042 0.734941 9.76873C1.0482 10.077 1.55608 10.077 1.86934 9.76873L6.1426 5.56295Z", "fill", "#181F33", "fill-rule", "evenodd"], [4, "ngFor", "ngForOf"], ["class", "page page-jumping-enabled", 3, "ngClass", "click", 4, "ngIf"], ["class", "page-seperator", 4, "ngIf"], [1, "page", "page-jumping-enabled", 3, "click", "ngClass"], [1, "page-seperator"], [1, "dot", 3, "ngStyle"], [1, "dot"]], template: function TableComponent_Template(rf, ctx) { if (rf & 1) {
462
546
  i0.ɵɵelementStart(0, "div", 3);
463
547
  i0.ɵɵtemplate(1, TableComponent_mis_table_filter_1_Template, 2, 2, "mis-table-filter", 4);
464
548
  i0.ɵɵelementStart(2, "div", 5, 0)(4, "div", 6);
465
- i0.ɵɵtemplate(5, TableComponent_div_5_Template, 6, 9, "div", 7);
549
+ i0.ɵɵtemplate(5, TableComponent_div_5_Template, 7, 10, "div", 7);
466
550
  i0.ɵɵelementEnd();
467
551
  i0.ɵɵelementStart(6, "div", 8);
468
- i0.ɵɵtemplate(7, TableComponent_div_7_Template, 4, 9, "div", 9);
552
+ i0.ɵɵtemplate(7, TableComponent_div_7_Template, 4, 11, "div", 9);
469
553
  i0.ɵɵelementEnd()();
470
- i0.ɵɵtemplate(8, TableComponent_div_8_Template, 11, 4, "div", 10);
554
+ i0.ɵɵtemplate(8, TableComponent_div_8_Template, 11, 8, "div", 10);
471
555
  i0.ɵɵelementEnd();
472
556
  } if (rf & 2) {
473
557
  i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction3(7, _c3, ctx.getContainerHeight(), ctx.getContainerWidth(), ctx.config.canScrollHorizontally ? "auto" : "unset"));
@@ -483,11 +567,11 @@ export class TableComponent {
483
567
  i0.ɵɵproperty("ngForOf", ctx.tableData);
484
568
  i0.ɵɵadvance();
485
569
  i0.ɵɵproperty("ngIf", (ctx.config == null ? null : ctx.config.paginationConfig) && (ctx.tableLength >= ctx.config.paginationConfig.rowsPerPage || (ctx.config.paginationConfig == null ? null : ctx.config.paginationConfig.selectedPage) !== 1));
486
- } }, dependencies: [i1.NgClass, i1.NgForOf, i1.NgIf, i1.NgStyle, i2.SubTableComponent, i3.TableFilterComponent, i4.CustomTableCellDirective, i5.SortIconsDirective], styles: ["#main-container[_ngcontent-%COMP%]{font-family:Lato,sans-serif;position:relative}.no-scrollbar[_ngcontent-%COMP%]::-webkit-scrollbar{width:0}.scrollbar[_ngcontent-%COMP%]::-webkit-scrollbar{width:8px;height:8px;border-radius:15px}.scrollbar[_ngcontent-%COMP%]::-webkit-scrollbar-thumb{background:#9aa7b4;border-radius:15px}#table-container[_ngcontent-%COMP%]{height:inherit;overflow-y:auto}.scroll-horizontally[_ngcontent-%COMP%]{height:inherit;width:fit-content;overflow-y:unset!important;overflow-x:visible}#col-headers-container[_ngcontent-%COMP%]{display:flex;align-items:center;position:sticky;background-color:#fff;width:100%;z-index:1;min-height:44px;border-bottom:1px solid #e0e0e0;top:0;left:0;right:0}.col-header[_ngcontent-%COMP%]{padding:0 16px;display:flex;align-items:center;height:100%}.col-header-text[_ngcontent-%COMP%]{font-style:normal;font-weight:700;line-height:20px;display:flex;align-items:center;letter-spacing:.2px;margin:0}.sort-icon[_ngcontent-%COMP%]{display:flex;justify-content:center;align-items:center}.filter-icon[_ngcontent-%COMP%]{margin-left:8px;padding:0 8px;position:relative;cursor:pointer}#filter-active[_ngcontent-%COMP%]{height:8px;width:8px;background:#16cbbc;border-radius:50%;position:absolute;top:4px;right:4px}.sub-row[_ngcontent-%COMP%]{height:auto;border-bottom:none}.loader[_ngcontent-%COMP%] .mat-progress-spinner circle, .mat-spinner[_ngcontent-%COMP%] circle[_ngcontent-%COMP%]{stroke:#0937b2}.t-row[_ngcontent-%COMP%]{display:flex;min-height:44px;background-color:#fff;width:100%;border-bottom:1px solid #e0e0e0}.t-row[_ngcontent-%COMP%]:hover{background-color:#e7eefd}.active-row[_ngcontent-%COMP%]{background-color:#e6f6fd}.t-col-container[_ngcontent-%COMP%]{padding:0 16px;overflow-wrap:anywhere}.t-row-hover[_ngcontent-%COMP%]:hover{background-color:#0000}.t-col-container-hover[_ngcontent-%COMP%]:hover{background-color:#e6ebf7}.t-col-container-hover[_ngcontent-%COMP%]:first-child{border-left:1px solid #e0e0e0}.t-col-container-hover[_ngcontent-%COMP%]{border-right:1px solid #e0e0e0}.t-col[_ngcontent-%COMP%]{display:flex;align-items:center;height:100%}.t-col-text[_ngcontent-%COMP%]{font-style:normal;font-weight:400;font-size:14px;line-height:20px;display:flex;align-items:center;letter-spacing:.2px;margin:0}.text-ellipsis[_ngcontent-%COMP%]{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}#pagination-container[_ngcontent-%COMP%]{display:flex;justify-content:flex-end;align-items:center;height:56px}#pagination-text[_ngcontent-%COMP%]{font-style:normal;font-weight:400;font-size:12px;line-height:18px;letter-spacing:.4px;color:#6a737d;margin:0 96px 0 0}#pages-container[_ngcontent-%COMP%]{display:flex;margin-right:32px}.page[_ngcontent-%COMP%]{display:flex;justify-content:center;align-items:center;border:1px solid #6a737d;box-sizing:border-box;border-radius:4px;width:32px;height:32px;font-size:14px;line-height:20px;letter-spacing:.2px;color:#6a737d;margin-right:8px;cursor:pointer}.page-seperator[_ngcontent-%COMP%]{display:flex;justify-content:center;align-items:center;width:32px;height:32px;margin-right:8px}.dot[_ngcontent-%COMP%]{height:3px;width:3px;border-radius:50%;background:#6a737d}.page-active[_ngcontent-%COMP%]{color:#0937b2;border:1px solid #0937b2}.sort-icon[_ngcontent-%COMP%]{display:inline-flex;align-items:center;margin-left:4px;cursor:pointer}.sort-icon[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{width:16px;height:16px;transition:opacity .2s ease}.sort-icon[_ngcontent-%COMP%] img[_ngcontent-%COMP%]:hover{opacity:.8}"] }); }
570
+ } }, styles: ["#main-container[_ngcontent-%COMP%]{font-family:Lato,sans-serif;position:relative}.no-scrollbar[_ngcontent-%COMP%]::-webkit-scrollbar{width:0}.scrollbar[_ngcontent-%COMP%]::-webkit-scrollbar{width:8px;height:8px;border-radius:15px}.scrollbar[_ngcontent-%COMP%]::-webkit-scrollbar-thumb{background:#9aa7b4;border-radius:15px}#table-container[_ngcontent-%COMP%]{height:inherit;overflow-y:auto}.scroll-horizontally[_ngcontent-%COMP%]{height:inherit;width:fit-content;overflow-y:unset!important;overflow-x:visible}#col-headers-container[_ngcontent-%COMP%]{display:flex;align-items:center;position:sticky;background-color:#fff;width:100%;z-index:1;min-height:44px;border-bottom:1px solid #e0e0e0;top:0;left:0;right:0}.col-header[_ngcontent-%COMP%]{padding:0 16px;display:flex;align-items:center;height:100%}.col-header-text[_ngcontent-%COMP%]{font-style:normal;font-weight:700;line-height:20px;display:flex;align-items:center;letter-spacing:.2px;margin:0}.sort-icon[_ngcontent-%COMP%]{display:flex;justify-content:center;align-items:center}.filter-icon[_ngcontent-%COMP%]{margin-left:8px;padding:0 8px;position:relative;cursor:pointer}#filter-active[_ngcontent-%COMP%]{height:8px;width:8px;background:#16cbbc;border-radius:50%;position:absolute;top:4px;right:4px}.sub-row[_ngcontent-%COMP%]{height:auto;border-bottom:none}.loader[_ngcontent-%COMP%] .mat-progress-spinner circle, .mat-spinner[_ngcontent-%COMP%] circle[_ngcontent-%COMP%]{stroke:#0937b2}.t-row[_ngcontent-%COMP%]{display:flex;min-height:44px;background-color:#fff;width:100%;border-bottom:1px solid #e0e0e0}.t-row[_ngcontent-%COMP%]:hover{background-color:#e7eefd}.active-row[_ngcontent-%COMP%]{background-color:#e6f6fd}.t-col-container[_ngcontent-%COMP%]{padding:0 16px;overflow-wrap:anywhere}.t-row-hover[_ngcontent-%COMP%]:hover{background-color:#0000}.t-col-container-hover[_ngcontent-%COMP%]:hover{background-color:#e6ebf7}.t-col-container-hover[_ngcontent-%COMP%]:first-child{border-left:1px solid #e0e0e0}.t-col-container-hover[_ngcontent-%COMP%]{border-right:1px solid #e0e0e0}.t-col[_ngcontent-%COMP%]{display:flex;align-items:center;height:100%}.t-col-text[_ngcontent-%COMP%]{font-style:normal;font-weight:400;font-size:14px;line-height:20px;display:flex;align-items:center;letter-spacing:.2px;margin:0}.text-ellipsis[_ngcontent-%COMP%]{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}#pagination-container[_ngcontent-%COMP%]{display:flex;justify-content:flex-end;align-items:center;height:56px}#pagination-text[_ngcontent-%COMP%]{font-style:normal;font-weight:400;font-size:12px;line-height:18px;letter-spacing:.4px;color:#6a737d;margin:0 56px 0 0}#pages-container[_ngcontent-%COMP%]{display:flex;margin-right:32px}.page[_ngcontent-%COMP%]{display:flex;justify-content:center;align-items:center;box-sizing:border-box;border-radius:4px;width:32px;height:32px;font-size:14px;line-height:20px;letter-spacing:.2px;color:#6a737d;margin-right:8px;cursor:pointer}.page.page-jumping-enabled[_ngcontent-%COMP%]{border:1px solid #6a737d}.page-seperator[_ngcontent-%COMP%]{display:flex;justify-content:center;align-items:center;width:32px;height:32px;margin-right:8px}.dot[_ngcontent-%COMP%]{height:3px;width:3px;border-radius:50%;background:#6a737d}.page-active[_ngcontent-%COMP%]{color:#0937b2;border:1px solid #0937b2}.sort-icon[_ngcontent-%COMP%]{display:inline-flex;align-items:center;margin-left:4px;cursor:pointer}.sort-icon[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{width:16px;height:16px;transition:opacity .2s ease}.sort-icon[_ngcontent-%COMP%] img[_ngcontent-%COMP%]:hover{opacity:.8}.disabled-row[_ngcontent-%COMP%] .t-col-container[_ngcontent-%COMP%]{opacity:.4;pointer-events:none}.disabled-row[_ngcontent-%COMP%] .t-col-container[_ngcontent-%COMP%]:has(mis-actions-cell){opacity:1;pointer-events:auto}.row[_ngcontent-%COMP%]{transition:background-color .2s}.row[_ngcontent-%COMP%]:hover:not(.disabled-row), .row.selected[_ngcontent-%COMP%]:not(.disabled-row){background-color:#e6f5fd}.disabled-row[_ngcontent-%COMP%] .t-col-container[_ngcontent-%COMP%]{pointer-events:none;opacity:.4}.disabled-row[_ngcontent-%COMP%] .t-col-container[_ngcontent-%COMP%]:has(mis-actions-cell){pointer-events:auto!important;opacity:1!important;color:inherit!important}mis-actions-cell.disable-actions[_ngcontent-%COMP%]{pointer-events:none;opacity:.4;filter:grayscale(.5)}.page-nav-inactive[_ngcontent-%COMP%]{pointer-events:none;opacity:.5;cursor:default}"] }); }
487
571
  }
488
572
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TableComponent, [{
489
573
  type: Component,
490
- args: [{ selector: "mis-table", template: "<div\n [ngStyle]=\"{\n height: getContainerHeight(),\n width: getContainerWidth(),\n 'overflow-x': config.canScrollHorizontally ? 'auto' : 'unset'\n }\"\n id=\"main-container\"\n>\n <mis-table-filter\n #filter\n (filtersApplied)=\"updateAppliedFilters($event)\"\n *ngIf=\"showFilter\"\n [containerStyles]=\"filterContainerStyles\"\n [filtersData]=\"filterData\"\n ></mis-table-filter>\n <div\n #table\n id=\"table-container\"\n [ngClass]=\"{ 'no-scrollbar': expandedIndex < 0, scrollbar: !(expandedIndex < 0), 'scroll-horizontally': config.canScrollHorizontally }\"\n >\n <div\n [ngStyle]=\"getColHeadersRowStyles()\"\n id=\"col-headers-container\"\n >\n <div\n #colHeaderRef\n (click)=\"colHeader?.action ? colHeader?.action(colHeader) : null\"\n *ngFor=\"let colHeader of config?.colHeaderConfig\"\n class=\"col-header\"\n [ngStyle]=\"{\n width: colHeader?.style?.width || '',\n cursor: colHeader.action ? 'pointer' : 'default',\n 'justify-content': colHeader?.style?.justifyContent\n ? colHeader?.style?.justifyContent\n : colHeader.type === 'number'\n ? 'flex-end'\n : 'space-between'\n }\"\n >\n <p *ngIf=\"colHeader?.type !== 'custom'\" class=\"col-header-text\">\n {{ colHeader?.data || \" \" }}\n </p>\n <span\n (click)=\"filterData = colHeader.filters; toggleFilter(colHeader.data); $event.stopPropagation()\"\n *ngIf=\"colHeader?.type !== 'custom' && colHeader?.filters && colHeader?.filters?.length > 0\"\n class=\"filter-icon\"\n >\n <span *ngIf=\"appliedFilters[colHeader.data]?.length > 0\" id=\"filter-active\"></span>\n <svg fill=\"none\" height=\"10\" viewBox=\"0 0 13 10\" width=\"13\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n clip-rule=\"evenodd\"\n d=\"M4.97546 10H7.64213V8H4.97546V10ZM0.308472 0V2H12.3085V0H0.308472ZM2.30847 6H10.3085V4H2.30847V6Z\"\n fill=\"#181F33\"\n fill-rule=\"evenodd\"\n />\n </svg>\n </span>\n <span *ngIf=\"colHeader?.isSortable && !colHeader?.filters\" appSortIcons\n [column]=\"colHeader\"\n [activeSort]=\"currentSort\"\n [activeSorts]=\"multiColumnSort\"\n [multiColumnSort]=\"config.multiColumnSort\"\n (sortChange)=\"onSortChange($event)\"\n class=\"sort-icon\">\n </span>\n <ng-template *ngIf=\"colHeader?.type === 'custom'\" customTableCell [customComponent]=\"colHeader?.componentRef\" [data]=\"colHeader.data\"></ng-template>\n </div>\n </div>\n <div id=\"data-container\">\n <div class=\"row-wrapper\" *ngFor=\"let row of tableData; let i = index\">\n <div\n class=\"t-row\"\n [ngClass]=\"{ 't-row-hover': config.cellHover, 'active-row': i === activeRowIndex }\"\n [ngStyle]=\"{ 'min-height': config?.rowConfig?.height ? config.rowConfig.height : '44px' }\"\n (click)=\"selectRow(i)\"\n >\n <div\n (click)=\"config?.colConfig[i]?.action ? config?.colConfig[i]?.action(col) : null\"\n *ngFor=\"let col of row; let i = index\"\n [ngStyle]=\"{\n width: config?.colConfig[i]?.style?.width || config?.colHeaderConfig[i]?.style?.width || ''\n }\"\n class=\"t-col-container\"\n [ngClass]=\"{ 't-col-container-hover': config.cellHover }\"\n >\n <div\n class=\"t-col\"\n [style]=\"config.colConfig[i]?.style\"\n [ngStyle]=\"{\n width: '100%',\n cursor: config.colConfig[i]?.action ? 'pointer' : 'default',\n 'justify-content': config.colConfig[i]?.style?.justifyContent\n ? config.colConfig[i]?.style?.justifyContent\n : config.colConfig[i]?.type === 'number'\n ? 'flex-end'\n : 'space-between'\n }\"\n >\n <p\n *ngIf=\"config.colConfig[i]?.type !== 'custom'\"\n [ngStyle]=\"{\n color: config?.colConfig[i]?.style?.color ? config?.colConfig[i]?.style?.color : ''\n }\"\n [ngClass]=\"{'text-ellipsis': !!config?.colConfig[i]?.style?.textEllipsis}\"\n class=\"t-col-text\"\n >\n {{ col }}\n </p>\n <ng-template\n *ngIf=\"config.colConfig[i]?.type === 'custom'\"\n [customComponent]=\"config.colConfig[i].componentRef\"\n [data]=\"col\"\n customTableCell\n ></ng-template>\n </div>\n </div>\n </div>\n <div *ngIf=\"config?.canExpand && expandedIndex === i\" class=\"sub-row\">\n <ng-container *ngIf=\"subTableDataLoading\">\n <div [ngStyle]=\"{\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n padding: '16px'\n }\">\n Loading...\n </div>\n </ng-container>\n \n <ng-container *ngIf=\"!subTableDataLoading && subTableData.length === 0\">\n <div [ngStyle]=\"{\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n padding: '16px'\n }\">\n No Data Available...\n </div>\n </ng-container>\n \n <ng-container *ngIf=\"!subTableDataLoading && subTableData.length > 0\">\n <sub-table [config]=\"subTableconfig\" [tableData]=\"subTableData\"></sub-table>\n </ng-container>\n </div>\n </div>\n </div>\n </div>\n <div\n *ngIf=\"config?.paginationConfig && (tableLength >= config.paginationConfig.rowsPerPage || config.paginationConfig?.selectedPage !== 1)\"\n id=\"pagination-container\"\n >\n <p id=\"pagination-text\">\n Showing\n {{ (config.paginationConfig?.selectedPage - 1) * config.paginationConfig.rowsPerPage + 1 }}-{{\n (config.paginationConfig?.selectedPage - 1) * config.paginationConfig.rowsPerPage + tableLength\n }}\n of {{ config.paginationConfig.totalNoOfRows }} items\n </p>\n <div id=\"pages-container\">\n <span (click)=\"updateSelectedPage(config.paginationConfig?.selectedPage - 1)\" class=\"page\">\n <svg fill=\"none\" height=\"10\" viewBox=\"0 0 7 10\" width=\"7\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n clip-rule=\"evenodd\"\n d=\"M0.857405 5.56295C0.855794 5.56139 0.854188 5.55982 0.852588 5.55824C0.695955 5.40408 0.617641 5.20203 0.617647 4.99998C0.617641 4.79793 0.695955 4.59588 0.852588 4.44172C0.854188 4.44014 0.855794 4.43858 0.857404 4.43702L5.13066 0.231231C5.44392 -0.0770771 5.9518 -0.0770771 6.26506 0.231231C6.57831 0.53954 6.57831 1.03941 6.26506 1.34772L2.5542 4.99998L6.26506 8.65225C6.57831 8.96055 6.57831 9.46042 6.26506 9.76873C5.9518 10.077 5.44392 10.077 5.13066 9.76873L0.857405 5.56295Z\"\n fill=\"#181F33\"\n fill-rule=\"evenodd\"\n />\n </svg>\n </span>\n <div *ngFor=\"let pageNumber of pages\">\n <span\n (click)=\"updateSelectedPage(pageNumber)\"\n *ngIf=\"pageNumber != 0\"\n [ngClass]=\"{ 'page-active': pageNumber == config.paginationConfig?.selectedPage }\"\n class=\"page\"\n >{{ pageNumber }}</span\n >\n <span *ngIf=\"pageNumber == 0\" class=\"page-seperator\">\n <div [ngStyle]=\"{ display: 'flex' }\">\n <span class=\"dot\" [ngStyle]=\"{ 'margin-right': '4px' }\"></span>\n <span class=\"dot\" [ngStyle]=\"{ 'margin-right': '4px' }\"></span>\n <span class=\"dot\"></span>\n </div> \n </span>\n </div>\n <span (click)=\"updateSelectedPage(config.paginationConfig?.selectedPage + 1)\" class=\"page\">\n <svg fill=\"none\" height=\"10\" viewBox=\"0 0 7 10\" width=\"7\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n clip-rule=\"evenodd\"\n d=\"M6.1426 5.56295C6.14421 5.56139 6.14581 5.55982 6.14741 5.55824C6.30405 5.40408 6.38236 5.20203 6.38236 4.99998C6.38236 4.79793 6.30405 4.59588 6.14741 4.44172C6.14581 4.44014 6.14421 4.43858 6.1426 4.43702L1.86934 0.231231C1.55608 -0.0770771 1.0482 -0.0770771 0.734942 0.231231C0.421688 0.53954 0.421688 1.03941 0.734942 1.34772L4.4458 4.99998L0.734941 8.65225C0.421686 8.96055 0.421686 9.46042 0.734941 9.76873C1.0482 10.077 1.55608 10.077 1.86934 9.76873L6.1426 5.56295Z\"\n fill=\"#181F33\"\n fill-rule=\"evenodd\"\n />\n </svg>\n </span>\n </div>\n </div>\n</div>\n", styles: ["#main-container{font-family:Lato,sans-serif;position:relative}.no-scrollbar::-webkit-scrollbar{width:0}.scrollbar::-webkit-scrollbar{width:8px;height:8px;border-radius:15px}.scrollbar::-webkit-scrollbar-thumb{background:#9aa7b4;border-radius:15px}#table-container{height:inherit;overflow-y:auto}.scroll-horizontally{height:inherit;width:fit-content;overflow-y:unset!important;overflow-x:visible}#col-headers-container{display:flex;align-items:center;position:sticky;background-color:#fff;width:100%;z-index:1;min-height:44px;border-bottom:1px solid #e0e0e0;top:0;left:0;right:0}.col-header{padding:0 16px;display:flex;align-items:center;height:100%}.col-header-text{font-style:normal;font-weight:700;line-height:20px;display:flex;align-items:center;letter-spacing:.2px;margin:0}.sort-icon{display:flex;justify-content:center;align-items:center}.filter-icon{margin-left:8px;padding:0 8px;position:relative;cursor:pointer}#filter-active{height:8px;width:8px;background:#16cbbc;border-radius:50%;position:absolute;top:4px;right:4px}.sub-row{height:auto;border-bottom:none}.loader ::ng-deep .mat-progress-spinner circle,.mat-spinner circle{stroke:#0937b2}.t-row{display:flex;min-height:44px;background-color:#fff;width:100%;border-bottom:1px solid #e0e0e0}.t-row:hover{background-color:#e7eefd}.active-row{background-color:#e6f6fd}.t-col-container{padding:0 16px;overflow-wrap:anywhere}.t-row-hover:hover{background-color:#0000}.t-col-container-hover:hover{background-color:#e6ebf7}.t-col-container-hover:first-child{border-left:1px solid #e0e0e0}.t-col-container-hover{border-right:1px solid #e0e0e0}.t-col{display:flex;align-items:center;height:100%}.t-col-text{font-style:normal;font-weight:400;font-size:14px;line-height:20px;display:flex;align-items:center;letter-spacing:.2px;margin:0}.text-ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}#pagination-container{display:flex;justify-content:flex-end;align-items:center;height:56px}#pagination-text{font-style:normal;font-weight:400;font-size:12px;line-height:18px;letter-spacing:.4px;color:#6a737d;margin:0 96px 0 0}#pages-container{display:flex;margin-right:32px}.page{display:flex;justify-content:center;align-items:center;border:1px solid #6a737d;box-sizing:border-box;border-radius:4px;width:32px;height:32px;font-size:14px;line-height:20px;letter-spacing:.2px;color:#6a737d;margin-right:8px;cursor:pointer}.page-seperator{display:flex;justify-content:center;align-items:center;width:32px;height:32px;margin-right:8px}.dot{height:3px;width:3px;border-radius:50%;background:#6a737d}.page-active{color:#0937b2;border:1px solid #0937b2}.sort-icon{display:inline-flex;align-items:center;margin-left:4px;cursor:pointer}.sort-icon img{width:16px;height:16px;transition:opacity .2s ease}.sort-icon img:hover{opacity:.8}\n"] }]
574
+ args: [{ selector: "mis-table", template: "<div\n [ngStyle]=\"{\n height: getContainerHeight(),\n width: getContainerWidth(),\n 'overflow-x': config.canScrollHorizontally ? 'auto' : 'unset'\n }\"\n id=\"main-container\"\n>\n <mis-table-filter\n #filter\n (filtersApplied)=\"updateAppliedFilters($event)\"\n *ngIf=\"showFilter\"\n [containerStyles]=\"filterContainerStyles\"\n [filtersData]=\"filterData\"\n ></mis-table-filter>\n <div\n #table\n id=\"table-container\"\n [ngClass]=\"{ 'no-scrollbar': expandedIndex < 0, scrollbar: !(expandedIndex < 0), 'scroll-horizontally': config.canScrollHorizontally }\"\n >\n <div\n [ngStyle]=\"getColHeadersRowStyles()\"\n id=\"col-headers-container\"\n >\n <div\n #colHeaderRef\n (click)=\"colHeader?.action ? colHeader?.action(colHeader) : null\"\n *ngFor=\"let colHeader of config?.colHeaderConfig\"\n class=\"col-header\"\n [ngStyle]=\"{\n width: colHeader?.style?.width || '',\n cursor: colHeader.action ? 'pointer' : 'default',\n 'justify-content': colHeader?.style?.justifyContent\n ? colHeader?.style?.justifyContent\n : colHeader.type === 'number'\n ? 'flex-end'\n : 'space-between'\n }\"\n >\n <p *ngIf=\"colHeader?.type !== 'custom' && colHeader?.type !== 'checkbox'\" class=\"col-header-text\">\n {{ colHeader?.data || \" \" }}\n </p>\n <span\n (click)=\"filterData = colHeader.filters; toggleFilter(colHeader.data); $event.stopPropagation()\"\n *ngIf=\"colHeader?.type !== 'custom' && colHeader?.filters && colHeader?.filters?.length > 0\"\n class=\"filter-icon\"\n >\n <span *ngIf=\"appliedFilters[colHeader.data]?.length > 0\" id=\"filter-active\"></span>\n <svg fill=\"none\" height=\"10\" viewBox=\"0 0 13 10\" width=\"13\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n clip-rule=\"evenodd\"\n d=\"M4.97546 10H7.64213V8H4.97546V10ZM0.308472 0V2H12.3085V0H0.308472ZM2.30847 6H10.3085V4H2.30847V6Z\"\n fill=\"#181F33\"\n fill-rule=\"evenodd\"\n />\n </svg>\n </span>\n <span\n (click)=\"toggleCheckbox(); $event.stopPropagation()\"\n *ngIf=\"colHeader?.type === 'checkbox'\"\n class=\"checkbox-icon\"\n >\n <mis-checkbox [checked]=\"selectAllCheckbox\"></mis-checkbox>\n </span>\n <span *ngIf=\"colHeader?.isSortable && !colHeader?.filters\" appSortIcons\n [column]=\"colHeader\"\n [activeSort]=\"currentSort\"\n [activeSorts]=\"multiColumnSort\"\n [multiColumnSort]=\"config.multiColumnSort\"\n (sortChange)=\"onSortChange($event)\"\n class=\"sort-icon\">\n </span>\n <ng-template *ngIf=\"colHeader?.type === 'custom'\" customTableCell [customComponent]=\"colHeader?.componentRef\" [data]=\"colHeader.data\"></ng-template>\n </div>\n </div>\n <div id=\"data-container\">\n <div class=\"row-wrapper\" *ngFor=\"let row of tableData; let i = index; let rowIndex = index\">\n <div\n class=\"t-row\"\n [ngClass]=\"{ 't-row-hover': config.cellHover, 'active-row': activeRowIndex.includes(i) }\"\n [ngStyle]=\"{ 'min-height': config?.rowConfig?.height ? config.rowConfig.height : '44px' }\"\n (click)=\"selectRow(i)\"\n [class.disabled-row]=\"isRowDisabled(row)\"\n >\n <div\n (click)=\"config?.colConfig[i]?.action ? config?.colConfig[i]?.action(col) : null\"\n *ngFor=\"let col of row; let i = index\"\n [ngStyle]=\"{\n width: config?.colConfig[i]?.style?.width || config?.colHeaderConfig[i]?.style?.width || ''\n }\"\n class=\"t-col-container\"\n [ngClass]=\"{ 't-col-container-hover': config.cellHover }\"\n >\n <div\n class=\"t-col\"\n [style]=\"config.colConfig[i]?.style\"\n [ngStyle]=\"{\n width: '100%',\n cursor: config.colConfig[i]?.action ? 'pointer' : 'default',\n 'justify-content': config.colConfig[i]?.style?.justifyContent\n ? config.colConfig[i]?.style?.justifyContent\n : config.colConfig[i]?.type === 'number'\n ? 'flex-end'\n : 'space-between'\n }\"\n >\n <p\n *ngIf=\"config.colConfig[i]?.type !== 'custom' && config.colConfig[i]?.type !== 'actions'\"\n [ngStyle]=\"{\n color: config?.colConfig[i]?.style?.color ? config?.colConfig[i]?.style?.color : ''\n }\"\n [ngClass]=\"{'text-ellipsis': !!config?.colConfig[i]?.style?.textEllipsis}\"\n class=\"t-col-text\"\n >\n {{ col }}\n </p>\n <ng-template\n *ngIf=\"config.colConfig[i]?.type === 'custom'\"\n [customComponent]=\"config.colConfig[i].componentRef\"\n [data]=\"col\"\n customTableCell\n ></ng-template>\n <mis-actions-cell\n *ngIf=\"config.colConfig[i]?.type === 'actions'\"\n [data]=\"col\"\n [config]=\"config.colConfig[i]\"\n [isChecked]=\"col\"\n (actionClick)=\"onActionClick($event, rowIndex)\"\n [ngClass]=\"{\n 'disable-actions': config.colConfig[i]?.actionType === 'checkbox' && isRowDisabled(row)\n }\"\n ></mis-actions-cell>\n\n </div>\n </div>\n </div>\n <div *ngIf=\"config?.canExpand && expandedIndex === i\" class=\"sub-row\">\n <ng-container *ngIf=\"subTableDataLoading\">\n <div [ngStyle]=\"{\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n padding: '16px'\n }\">\n Loading...\n </div>\n </ng-container>\n \n <ng-container *ngIf=\"!subTableDataLoading && subTableData.length === 0\">\n <div [ngStyle]=\"{\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n padding: '16px'\n }\">\n No Data Available...\n </div>\n </ng-container>\n \n <ng-container *ngIf=\"!subTableDataLoading && subTableData.length > 0\">\n <sub-table [config]=\"subTableconfig\" [tableData]=\"subTableData\"></sub-table>\n </ng-container>\n </div>\n </div>\n </div>\n </div>\n <div\n *ngIf=\"config?.paginationConfig && (tableLength >= config.paginationConfig.rowsPerPage || config.paginationConfig?.selectedPage !== 1)\"\n id=\"pagination-container\"\n >\n <p id=\"pagination-text\">\n Showing\n {{ (config.paginationConfig?.selectedPage - 1) * config.paginationConfig.rowsPerPage + 1 }}-{{\n (config.paginationConfig?.selectedPage - 1) * config.paginationConfig.rowsPerPage + tableLength\n }}\n of {{ config.paginationConfig.totalNoOfRows }} items\n </p>\n <div id=\"pages-container\">\n <span (click)=\"config.paginationConfig?.selectedPage > 1 && updateSelectedPage(config.paginationConfig?.selectedPage - 1)\" class=\"page\" [class.page-nav-inactive]=\"config.paginationConfig?.selectedPage === 1\">\n <svg fill=\"none\" height=\"10\" viewBox=\"0 0 7 10\" width=\"7\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n clip-rule=\"evenodd\"\n d=\"M0.857405 5.56295C0.855794 5.56139 0.854188 5.55982 0.852588 5.55824C0.695955 5.40408 0.617641 5.20203 0.617647 4.99998C0.617641 4.79793 0.695955 4.59588 0.852588 4.44172C0.854188 4.44014 0.855794 4.43858 0.857404 4.43702L5.13066 0.231231C5.44392 -0.0770771 5.9518 -0.0770771 6.26506 0.231231C6.57831 0.53954 6.57831 1.03941 6.26506 1.34772L2.5542 4.99998L6.26506 8.65225C6.57831 8.96055 6.57831 9.46042 6.26506 9.76873C5.9518 10.077 5.44392 10.077 5.13066 9.76873L0.857405 5.56295Z\"\n fill=\"#181F33\"\n fill-rule=\"evenodd\"\n />\n </svg>\n </span>\n <!-- Page numbers (only show if disablePageJumping is false) -->\n <ng-container *ngIf=\"!config.paginationConfig?.disablePageJumping\">\n <div *ngFor=\"let pageNumber of pages\">\n <span\n (click)=\"updateSelectedPage(pageNumber)\"\n *ngIf=\"pageNumber != 0\"\n [ngClass]=\"{ 'page-active': pageNumber == config.paginationConfig?.selectedPage }\"\n class=\"page page-jumping-enabled\"\n >{{ pageNumber }}</span>\n <span *ngIf=\"pageNumber == 0\" class=\"page-seperator\">\n <div [ngStyle]=\"{ display: 'flex' }\">\n <span class=\"dot\" [ngStyle]=\"{ 'margin-right': '4px' }\"></span>\n <span class=\"dot\" [ngStyle]=\"{ 'margin-right': '4px' }\"></span>\n <span class=\"dot\"></span>\n </div> \n </span>\n </div>\n </ng-container>\n \n <span [class.page-nav-inactive]=\"config.paginationConfig?.selectedPage === config.paginationConfig?.noOfPages\"\n (click)=\"config.paginationConfig?.selectedPage < config.paginationConfig?.noOfPages && updateSelectedPage(config.paginationConfig?.selectedPage + 1)\" class=\"page\">\n <svg fill=\"none\" height=\"10\" viewBox=\"0 0 7 10\" width=\"7\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n clip-rule=\"evenodd\"\n d=\"M6.1426 5.56295C6.14421 5.56139 6.14581 5.55982 6.14741 5.55824C6.30405 5.40408 6.38236 5.20203 6.38236 4.99998C6.38236 4.79793 6.30405 4.59588 6.14741 4.44172C6.14581 4.44014 6.14421 4.43858 6.1426 4.43702L1.86934 0.231231C1.55608 -0.0770771 1.0482 -0.0770771 0.734942 0.231231C0.421688 0.53954 0.421688 1.03941 0.734942 1.34772L4.4458 4.99998L0.734941 8.65225C0.421686 8.96055 0.421686 9.46042 0.734941 9.76873C1.0482 10.077 1.55608 10.077 1.86934 9.76873L6.1426 5.56295Z\"\n fill=\"#181F33\"\n fill-rule=\"evenodd\"\n />\n </svg>\n </span>\n </div>\n </div>\n</div>\n", styles: ["#main-container{font-family:Lato,sans-serif;position:relative}.no-scrollbar::-webkit-scrollbar{width:0}.scrollbar::-webkit-scrollbar{width:8px;height:8px;border-radius:15px}.scrollbar::-webkit-scrollbar-thumb{background:#9aa7b4;border-radius:15px}#table-container{height:inherit;overflow-y:auto}.scroll-horizontally{height:inherit;width:fit-content;overflow-y:unset!important;overflow-x:visible}#col-headers-container{display:flex;align-items:center;position:sticky;background-color:#fff;width:100%;z-index:1;min-height:44px;border-bottom:1px solid #e0e0e0;top:0;left:0;right:0}.col-header{padding:0 16px;display:flex;align-items:center;height:100%}.col-header-text{font-style:normal;font-weight:700;line-height:20px;display:flex;align-items:center;letter-spacing:.2px;margin:0}.sort-icon{display:flex;justify-content:center;align-items:center}.filter-icon{margin-left:8px;padding:0 8px;position:relative;cursor:pointer}#filter-active{height:8px;width:8px;background:#16cbbc;border-radius:50%;position:absolute;top:4px;right:4px}.sub-row{height:auto;border-bottom:none}.loader ::ng-deep .mat-progress-spinner circle,.mat-spinner circle{stroke:#0937b2}.t-row{display:flex;min-height:44px;background-color:#fff;width:100%;border-bottom:1px solid #e0e0e0}.t-row:hover{background-color:#e7eefd}.active-row{background-color:#e6f6fd}.t-col-container{padding:0 16px;overflow-wrap:anywhere}.t-row-hover:hover{background-color:#0000}.t-col-container-hover:hover{background-color:#e6ebf7}.t-col-container-hover:first-child{border-left:1px solid #e0e0e0}.t-col-container-hover{border-right:1px solid #e0e0e0}.t-col{display:flex;align-items:center;height:100%}.t-col-text{font-style:normal;font-weight:400;font-size:14px;line-height:20px;display:flex;align-items:center;letter-spacing:.2px;margin:0}.text-ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}#pagination-container{display:flex;justify-content:flex-end;align-items:center;height:56px}#pagination-text{font-style:normal;font-weight:400;font-size:12px;line-height:18px;letter-spacing:.4px;color:#6a737d;margin:0 56px 0 0}#pages-container{display:flex;margin-right:32px}.page{display:flex;justify-content:center;align-items:center;box-sizing:border-box;border-radius:4px;width:32px;height:32px;font-size:14px;line-height:20px;letter-spacing:.2px;color:#6a737d;margin-right:8px;cursor:pointer}.page.page-jumping-enabled{border:1px solid #6a737d}.page-seperator{display:flex;justify-content:center;align-items:center;width:32px;height:32px;margin-right:8px}.dot{height:3px;width:3px;border-radius:50%;background:#6a737d}.page-active{color:#0937b2;border:1px solid #0937b2}.sort-icon{display:inline-flex;align-items:center;margin-left:4px;cursor:pointer}.sort-icon img{width:16px;height:16px;transition:opacity .2s ease}.sort-icon img:hover{opacity:.8}.disabled-row .t-col-container{opacity:.4;pointer-events:none}.disabled-row .t-col-container:has(mis-actions-cell){opacity:1;pointer-events:auto}.row{transition:background-color .2s}.row:hover:not(.disabled-row),.row.selected:not(.disabled-row){background-color:#e6f5fd}.disabled-row .t-col-container{pointer-events:none;opacity:.4}.disabled-row .t-col-container:has(mis-actions-cell){pointer-events:auto!important;opacity:1!important;color:inherit!important}mis-actions-cell.disable-actions{pointer-events:none;opacity:.4;filter:grayscale(.5)}.page-nav-inactive{pointer-events:none;opacity:.5;cursor:default}\n"] }]
491
575
  }], () => [{ type: i0.Renderer2 }], { filtersUpdated: [{
492
576
  type: Output
493
577
  }], filter: [{
@@ -518,6 +602,8 @@ export class TableComponent {
518
602
  args: ["table"]
519
603
  }], sortChange: [{
520
604
  type: Output
605
+ }], headerAction: [{
606
+ type: Output
521
607
  }] }); })();
522
608
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TableComponent, { className: "TableComponent" }); })();
523
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbWlzLWNvbXBvbmVudHMvdGFibGUvdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvbWlzLWNvbXBvbmVudHMvdGFibGUvdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFHTixTQUFTLEVBQ1QsWUFBWSxFQUNiLE1BQU0sZUFBZSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQ0xyQiwrQ0FNQztJQUpDLHlOQUFrQixtQ0FBNEIsS0FBQztJQUloRCxpQkFBbUI7OztJQURsQixBQURBLDhEQUF5QyxrQ0FDZjs7O0lBMEJ0Qiw2QkFBZ0U7SUFDOUQsWUFDRjtJQUFBLGlCQUFJOzs7SUFERixjQUNGO0lBREUseUZBQ0Y7OztJQU1FLDJCQUFtRjs7OztJQUxyRixnQ0FJQztJQUhDLDRQQUF5QyxzQ0FBNEIsd0JBQUUsd0JBQXdCLEtBQUM7SUFJaEcsK0VBQTRFOztJQUM1RSwrQkFBK0Y7SUFDN0YsMkJBS0U7SUFFTixBQURFLGlCQUFNLEVBQ0Q7Ozs7SUFURSxjQUFnRDtJQUFoRCxzSUFBZ0Q7Ozs7SUFVekQsZ0NBTW9CO0lBRGxCLGdNQUFjLDJCQUFvQixLQUFDO0lBRXJDLGlCQUFPOzs7O0lBSEwsQUFEQSxBQURBLEFBREEscUNBQW9CLGtDQUNNLHVDQUNLLGtEQUNXOzs7O0lBSTlDLHdGQUFzSTs7O0lBQXhCLEFBQTVDLHlGQUEyQywyQkFBd0I7Ozs7SUF6Q3JJLGtDQWNDO0lBWkMsMlJBQTRELElBQUksS0FBQztJQXVDbkUsQUFSRSxBQWZBLEFBSEEsa0VBQWdFLDJEQU8vRCwyREFpQm1CLG9EQUVnSDtJQUN0SSxpQkFBTTs7O0lBckNKLGtkQVFFO0lBRUUsZUFBa0M7SUFBbEMs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Y0FBYztvRUFBZCxjQUFjOzs7Ozs7Ozs7O1lDdEIzQiw4QkFPQztZQUNDLHlGQU1DO1lBTUMsQUFMRixpQ0FJQyxhQUlFO1lBQ0MsK0RBY0M7WUE2QkgsaUJBQU07WUFDTiw4QkFBeUI7WUFDdkIsK0RBQXNFO1lBNkUxRSxBQURFLGlCQUFNLEVBQ0Y7WUFDTixpRUFHQztZQStDSCxpQkFBTTs7WUFwTUosNEpBSUU7WUFNQyxjQUFnQjtZQUFoQixxQ0FBZ0I7WUFPakIsY0FBdUk7WUFBdkksd0lBQXVJO1lBR3ZJLGVBQW9DO1lBQXBDLHNEQUFvQztZQU1WLGNBQTBCO1lBQTFCLGdGQUEwQjtZQTBDVCxlQUFjO1lBQWQsdUNBQWM7WUErRXhELGNBQXFJO1lBQXJJLGlQQUFxSTs7O2lGRDlIN0gsY0FBYztjQUwxQixTQUFTOzJCQUNFLFdBQVc7MENBZVgsY0FBYztrQkFBdkIsTUFBTTtZQUljLE1BQU07a0JBQTFCLFNBQVM7bUJBQUMsUUFBUTtZQUNXLFVBQVU7a0JBQXZDLFlBQVk7bUJBQUMsY0FBYztZQUtsQixZQUFZO2tCQUFyQixNQUFNO1lBRWUsTUFBTTtrQkFBM0IsS0FBSzttQkFBQyxhQUFhO1lBQ1gsY0FBYztrQkFBdEIsS0FBSztZQUNHLGdCQUFnQjtrQkFBeEIsS0FBSztZQUNHLGFBQWE7a0JBQXJCLEtBQUs7WUFDRyxTQUFTO2tCQUFqQixLQUFLO1lBQ0csWUFBWTtrQkFBcEIsS0FBSztZQUNHLG1CQUFtQjtrQkFBM0IsS0FBSztZQUNjLEtBQUs7a0JBQXhCLFNBQVM7bUJBQUMsT0FBTztZQUtSLFVBQVU7a0JBQW5CLE1BQU07O2tGQW5DSSxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBRdWVyeUxpc3QsXG4gIFJlbmRlcmVyMixcbiAgVmlld0NoaWxkLFxuICBWaWV3Q2hpbGRyZW5cbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEZpbHRlciwgVGFibGVGaWx0ZXJDb21wb25lbnQgfSBmcm9tIFwiLi9maWx0ZXIvZmlsdGVyLmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgU29ydFN0YXRlIH0gZnJvbSAnLi9zb3J0LWljb25zLmRpcmVjdGl2ZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJtaXMtdGFibGVcIixcbiAgdGVtcGxhdGVVcmw6IFwidGFibGUuY29tcG9uZW50Lmh0bWxcIixcbiAgc3R5bGVVcmxzOiBbXCJ0YWJsZS5jb21wb25lbnQuY3NzXCJdXG59KVxuZXhwb3J0IGNsYXNzIFRhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkNoYW5nZXMge1xuXG4gIC8vIEluaXRpYWxpemUgd2l0aCAtMSB0byBpbmRpY2F0ZSBubyByb3cgaXMgY29sb3JlZCBhdCB0aGUgYmVnaW5uaW5nXG4gIGFjdGl2ZVJvd0luZGV4OiBudW1iZXIgPSAwOyBcblxuICAvLyBGaWx0ZXIgcmVsYXRlZCB2YXJpYWJsZXNcbiAgc2hvd0ZpbHRlcjogYm9vbGVhbiA9IGZhbHNlO1xuICBmaWx0ZXJOYW1lOiBzdHJpbmcgPSBcIlwiO1xuICBmaWx0ZXJEYXRhOiBBcnJheTxGaWx0ZXI+ID0gW107XG4gIGZpbHRlckNvbnRhaW5lclN0eWxlczogYW55ID0ge307XG4gIGFwcGxpZWRGaWx0ZXJzOiB7IFtrZXk6IHN0cmluZ106IEFycmF5PHsgbmFtZTogc3RyaW5nOyB2YWx1ZTogc3RyaW5nIH0+IH0gPSB7fTtcbiAgQE91dHB1dCgpIGZpbHRlcnNVcGRhdGVkID0gbmV3IEV2ZW50RW1pdHRlcjx7XG4gICAgW2tleTogc3RyaW5nXTogQXJyYXk8eyBuYW1lOiBzdHJpbmc7IHZhbHVlOiBzdHJpbmcgfT47XG4gIH0+KCk7XG5cbiAgQFZpZXdDaGlsZChcImZpbHRlclwiKSBmaWx0ZXI6IFRhYmxlRmlsdGVyQ29tcG9uZW50IHwgYW55O1xuICBAVmlld0NoaWxkcmVuKFwiY29sSGVhZGVyUmVmXCIpIGNvbEhlYWRlcnM6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPiB8IGFueTtcblxuICAvLyBQYWdpbmF0aW9uIHJlbGF0ZWQgdmFyaWFibGVzXG4gIHBhZ2VzOiBBcnJheTxudW1iZXI+ID0gW107XG4gIHRhYmxlTGVuZ3RoOiBudW1iZXI7XG4gIEBPdXRwdXQoKSBwYWdlU2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcblxuICBASW5wdXQoXCJ0YWJsZUNvbmZpZ1wiKSBjb25maWc6IFRhYmxlQ29uZmlnIHwgYW55O1xuICBASW5wdXQoKSBzdWJUYWJsZWNvbmZpZzogVGFibGVDb25maWcgfCBhbnk7XG4gIEBJbnB1dCgpIHRhYmxlRGF0YUxvYWRpbmc6IGJvb2xlYW4gfCBhbnk7XG4gIEBJbnB1dCgpIGV4cGFuZGVkSW5kZXg6IG51bWJlciB8IGFueTtcbiAgQElucHV0KCkgdGFibGVEYXRhOiBBcnJheTxBcnJheTxhbnk+PiA9IFtdO1xuICBASW5wdXQoKSBzdWJUYWJsZURhdGE6IEFycmF5PEFycmF5PGFueT4+ID0gW107XG4gIEBJbnB1dCgpIHN1YlRhYmxlRGF0YUxvYWRpbmc6IGJvb2xlYW4gfCBhbnk7XG4gIEBWaWV3Q2hpbGQoXCJ0YWJsZVwiKSB0YWJsZTogRWxlbWVudFJlZiB8IGFueTtcblxuICAvLyBTb3J0aW5nIHJlbGF0ZWQgcHJvcGVydGllc1xuICBjdXJyZW50U29ydDogU29ydFN0YXRlIHwgbnVsbCA9IG51bGw7XG4gIG11bHRpQ29sdW1uU29ydDogU29ydFN0YXRlW10gPSBbXTtcbiAgQE91dHB1dCgpIHNvcnRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFNvcnRTdGF0ZT4oKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIpIHsgfVxuXG4gIC8vIEZ1bmN0aW9uIHRvIGhhbmRsZSByb3cgY2xpY2tcbiAgc2VsZWN0Um93KGluZGV4OiBudW1iZXIpIHtcbiAgICB0aGlzLmFjdGl2ZVJvd0luZGV4ID0gaW5kZXg7IC8vIFNldCB0aGUgc2VsZWN0ZWQgaW5kZXggdG8gdGhlIGNsaWNrZWQgcm93J3MgaW5kZXhcbiAgICAhIXRoaXMuY29uZmlnLnJvd0NvbmZpZy5hY3Rpb24gJiYgdGhpcy5jb25maWcucm93Q29uZmlnLmFjdGlvbihpbmRleCk7XG4gIH1cbiAgbmdPbkluaXQoKTogdm9pZCB7XG5cbiAgICB0aGlzLnRhYmxlTGVuZ3RoID0gISF0aGlzLnRhYmxlRGF0YSA/IHRoaXMudGFibGVEYXRhLmxlbmd0aCA6IDA7XG4gICAgdGhpcy5pbml0aWFsaXplRmlsdGVycygpO1xuICAgIGlmICh0aGlzLmNvbmZpZy5wYWdpbmF0aW9uQ29uZmlnKSB7XG4gICAgICB0aGlzLmluaXRpYWxpemVQYWdpbmF0aW9uKCk7XG4gICAgfVxuICAgIGlmICh0aGlzLmNvbmZpZy5jYW5TY3JvbGxIb3Jpem9udGFsbHkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5jb25maWcuY2FuU2Nyb2xsSG9yaXpvbnRhbGx5ID0gZmFsc2U7XG4gICAgfVxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBldmVudCA9PiB7XG4gICAgICBpZiAodGhpcy5maWx0ZXIpIHtcbiAgICAgICAgbGV0IGlzQ2hlY2tCb3hDbGlja2VkID0gdHJ1ZTtcbiAgICAgICAgbGV0IHRhcmdldEVsZW1lbnQgPSBldmVudC50YXJnZXQgYXMgSFRNTFNwYW5FbGVtZW50O1xuICAgICAgICBpZiAodGFyZ2V0RWxlbWVudC5jbGFzc05hbWUgPT09IFwiY2hlY2ttYXJrXCIpIHtcbiAgICAgICAgICBpc0NoZWNrQm94Q2xpY2tlZCA9IHRydWU7XG4gICAgICAgICAgdGhpcy5zaG93RmlsdGVyID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgaXNDbGlja0luc2lkZUVsZW1lbnQgPSB0aGlzLmZpbHRlci5jb250YWluZXIubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpO1xuICAgICAgICBpZiAoIWlzQ2xpY2tJbnNpZGVFbGVtZW50ICYmICFpc0NoZWNrQm94Q2xpY2tlZCkge1xuICAgICAgICAgIHRoaXMudG9nZ2xlRmlsdGVyKHRoaXMuZmlsdGVyTmFtZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgaWYgKHRoaXMuY29uZmlnLnBhZ2luYXRpb25Db25maWcpIHtcbiAgICAgIGxldCBoZWlnaHQgPSB0aGlzLmNvbmZpZy5oZWlnaHQ7XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMudGFibGUubmF0aXZlRWxlbWVudCwgXCJoZWlnaHRcIiwgaGVpZ2h0IC0gNTYgKyBcInB4XCIpO1xuICAgIH1cbiAgfVxuICBuZ09uQ2hhbmdlcygpIHtcbiAgICB0aGlzLnRhYmxlTGVuZ3RoID0gISF0aGlzLnRhYmxlRGF0YSA/IHRoaXMudGFibGVEYXRhLmxlbmd0aCA6IDA7XG4gICAgdGhpcy5hY3RpdmVSb3dJbmRleCA9IHRoaXMuY29uZmlnLmFjdGl2ZVJvd0luZGV4IHx8IDA7XG4gIH1cblxuICAvLyBGaWx0ZXIgcmVsYXRlZCBmdW5jdGlvbnNcbiAgaW5pdGlhbGl6ZUZpbHRlcnMoKSB7XG4gICAgZm9yIChsZXQgY29sSGVhZGVyIG9mIHRoaXMuY29uZmlnPy5jb2xIZWFkZXJDb25maWcpIHtcbiAgICAgIGlmIChjb2xIZWFkZXIuZmlsdGVycykge1xuICAgICAgICBsZXQgZmlsdGVycyA9IFtdO1xuICAgICAgICBmb3IgKGxldCBmaWx0ZXIgb2YgY29sSGVhZGVyLmZpbHRlcnMpIHtcbiAgICAgICAgICBpZiAoZmlsdGVyLmNoZWNrZWQpIHtcbiAgICAgICAgICAgIGZpbHRlcnMucHVzaCh7XG4gICAgICAgICAgICAgIG5hbWU6IGZpbHRlci5uYW1lLFxuICAgICAgICAgICAgICB2YWx1ZTogZmlsdGVyLnZhbHVlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGZpbHRlcnMubGVuZ3RoID4gMCkgdGhpcy5hcHBsaWVkRmlsdGVyc1tjb2xIZWFkZXIuZGF0YV0gPSBmaWx0ZXJzO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICB0b2dnbGVGaWx0ZXIoZmlsdGVyTmFtZTogc3RyaW5nKSB7XG4gICAgaWYgKCF0aGlzLnNob3dGaWx0ZXIpIHtcbiAgICAgIHRoaXMuZmlsdGVyTmFtZSA9IGZpbHRlck5hbWU7XG4gICAgICB0aGlzLnNob3dGaWx0ZXIgPSB0cnVlO1xuXG4gICAgICBsZXQgb2ZmU2V0ID0gMDtcbiAgICAgIGxldCBjb2xIZWFkZXJzUmV2ZXJzZWQgPSB0aGlzLmNvbEhlYWRlcnMudG9BcnJheSgpLnJldmVyc2UoKTtcblxuICAgICAgZm9yIChsZXQgaGVhZGVyIG9mIGNvbEhlYWRlcnNSZXZlcnNlZCkge1xuICAgICAgICBpZiAoaGVhZGVyLm5hdGl2ZUVsZW1lbnQuaW5uZXJUZXh0ID09PSBmaWx0ZXJOYW1lKSBicmVhaztcbiAgICAgICAgb2ZmU2V0ICs9IGhlYWRlci5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoO1xuICAgICAgfVxuICAgICAgdGhpcy5maWx0ZXJDb250YWluZXJTdHlsZXMgPSB7XG4gICAgICAgIHRvcDogXCI0NHB4XCIsXG4gICAgICAgIHJpZ2h0OiBvZmZTZXQgPiAwID8gb2ZmU2V0IC0gMTE2ICsgXCJweFwiIDogXCIxMnB4XCJcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZmlsdGVyTmFtZSA9IFwiXCI7XG4gICAgICB0aGlzLmZpbHRlckRhdGEgPSBbXTtcbiAgICAgIHRoaXMuc2hvd0ZpbHRlciA9IGZhbHNlO1xuICAgIH1cbiAgfVxuICB1cGRhdGVBcHBsaWVkRmlsdGVycyhhcHBsaWVkRmlsdGVyczogQXJyYXk8eyBuYW1lOiBzdHJpbmc7IHZhbHVlOiBzdHJpbmcgfT4pIHtcbiAgICBpZiAoYXBwbGllZEZpbHRlcnMubGVuZ3RoID09IDApIHtcbiAgICAgIGRlbGV0ZSB0aGlzLmFwcGxpZWRGaWx0ZXJzW3RoaXMuZmlsdGVyTmFtZV07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYXBwbGllZEZpbHRlcnNbdGhpcy5maWx0ZXJOYW1lXSA9IGFwcGxpZWRGaWx0ZXJzO1xuICAgIH1cbiAgICB0aGlzLmZpbHRlcnNVcGRhdGVkLmVtaXQoeyAuLi50aGlzLmFwcGxpZWRGaWx0ZXJzIH0pO1xuICAgIHRoaXMudG9nZ2xlRmlsdGVyKHRoaXMuZmlsdGVyTmFtZSk7XG4gIH1cblxuICAvLyBQYWdpbmF0aW9uIHJlbGF0ZWQgZnVuY3Rpb25zXG4gIGluaXRpYWxpemVQYWdpbmF0aW9uKCkge1xuICAgIGlmICh0aGlzLmNvbmZpZy5wYWdpbmF0aW9uQ29uZmlnKSB7XG4gICAgICBsZXQgbGVuID0gdGhpcy5jb25maWcucGFnaW5hdGlvbkNvbmZpZy5ub09mUGFnZXM7XG4gICAgICBpZiAobGVuIDw9IDcpIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPD0gbGVuOyBpKyspIHtcbiAgICAgICAgICB0aGlzLnBhZ2VzLnB1c2goaSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucGFnZXMgPSBbMSwgMiwgMywgNCwgMCwgbGVuXTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgdXBkYXRlU2VsZWN0ZWRQYWdlKHBhZ2VOdW1iZXI6IG51bWJlcikge1xuICAgIGlmIChwYWdlTnVtYmVyIDwgMSB8fCBwYWdlTnVtYmVyID4gdGhpcy5jb25maWcucGFnaW5hdGlvbkNvbmZpZy5ub09mUGFnZXMpIHJldHVybjtcbiAgICB0aGlzLmNvbmZpZy5wYWdpbmF0aW9uQ29uZmlnLnNlbGVjdGVkUGFnZSA9IHBhZ2VOdW1iZXI7XG4gICAgbGV0IGxlbiA9IHRoaXMuY29uZmlnLnBhZ2luYXRpb25Db25maWcubm9PZlBhZ2VzO1xuICAgIGlmIChsZW4gPiA3KSB7XG4gICAgICBpZiAocGFnZU51bWJlciAtIDIgPD0gMSkge1xuICAgICAgICB0aGlzLnBhZ2VzID0gWzEsIDIsIDMsIDQsIDAsIGxlbl07XG4gICAgICB9IGVsc2UgaWYgKHBhZ2VOdW1iZXIgLSAyID4gMSAmJiBwYWdlTnVtYmVyICsgMiA8IGxlbikge1xuICAgICAgICB0aGlzLnBhZ2VzID0gWzEsIDAsIHBhZ2VOdW1iZXIgLSAxLCBwYWdlTnVtYmVyLCBwYWdlTnVtYmVyICsgMSwgMCwgbGVuXTtcbiAgICAgIH0gZWxzZSBpZiAocGFnZU51bWJlciArIDIgPj0gbGVuKSB7XG4gICAgICAgIHRoaXMucGFnZXMgPSBbMSwgMCwgbGVuIC0gMywgbGVuIC0gMiwgbGVuIC0gMSwgbGVuXTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5wYWdlU2VsZWN0ZWQuZW1pdCh0aGlzLmNvbmZpZy5wYWdpbmF0aW9uQ29uZmlnPy5zZWxlY3RlZFBhZ2UpO1xuICB9XG5cbiAgLy8gTWFpbiBjb250YWluZXIgcmVsYXRlZCBmdW5jdGlvbnNcbiAgZ2V0Q29udGFpbmVySGVpZ2h0KCkge1xuICAgIGlmICh0aGlzLmNvbmZpZz8uaGVpZ2h0KSByZXR1cm4gdGhpcy5jb25maWcuaGVpZ2h0O1xuICAgIGVsc2UgcmV0dXJuIFwiXCI7XG4gIH1cbiAgZ2V0Q29udGFpbmVyV2lkdGgoKSB7XG4gICAgaWYgKHRoaXMuY29uZmlnPy53aWR0aCkgcmV0dXJuIHRoaXMuY29uZmlnLndpZHRoO1xuICAgIGVsc2UgcmV0dXJuIFwiXCI7XG4gIH1cblxuICAvLyBDb2x1bW4gSGVhZGVycyByZWxhdGVkIGZ1bmN0aW9uc1xuICBnZXRDb2xIZWFkZXJzUm93U3R5bGVzKCkge1xuICAgIGNvbnN0IHsgY29sSGVhZGVyc1Jvd0NvbmZpZyB9ID0gdGhpcy5jb25maWc7XG4gICAgY29uc3QgbWluSGVpZ2h0ID0gY29sSGVhZGVyc1Jvd0NvbmZpZz8uaGVpZ2h0IHx8IFwiNDRweFwiO1xuICAgIGNvbnN0IGJvcmRlclRvcCA9IGNvbEhlYWRlcnNSb3dDb25maWc/LnN0eWxlPy5ib3JkZXJUb3AgfHwgXCJcIjtcbiAgICBjb25zdCBib3JkZXJCb3R0b20gPSBjb2xIZWFkZXJzUm93Q29uZmlnPy5zdHlsZT8uYm9yZGVyQm90dG9tIHx8IFwiMXB4IHNvbGlkICNFMEUwRTBcIjtcbiAgICBjb25zdCBiYWNrZ3JvdW5kQ29sb3IgPSBjb2xIZWFkZXJzUm93Q29uZmlnPy5zdHlsZT8uYmFja2dyb3VuZENvbG9yIHx8IFwiI0ZGRkZGRlwiO1xuICAgIGNvbnN0IGZvbnRTaXplID0gY29sSGVhZGVyc1Jvd0NvbmZpZz8uc3R5bGU/LmZvbnRTaXplIHx8IFwiMTRweFwiO1xuICAgIHJldHVybiB7XG4gICAgICAnbWluLWhlaWdodCc6IG1pbkhlaWdodCxcbiAgICAgICdib3JkZXItdG9wJzogYm9yZGVyVG9wLFxuICAgICAgJ2JvcmRlci1ib3R0b20nOiBib3JkZXJCb3R0b20sXG4gICAgICAnYmFja2dyb3VuZC1jb2xvcic6IGJhY2tncm91bmRDb2xvcixcbiAgICAgICdmb250LXNpemUnOiBmb250U2l6ZVxuICAgIH07XG4gIH1cblxuICBvblNvcnRDaGFuZ2Uoc29ydFN0YXRlOiBTb3J0U3RhdGUpIHtcbiAgICB0aGlzLmN1cnJlbnRTb3J0ID0gc29ydFN0YXRlO1xuICAgIGlmICh0aGlzLmNvbmZpZy5tdWx0aUNvbHVtblNvcnQpIHtcbiAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5tdWx0aUNvbHVtblNvcnQuZmluZEluZGV4KHNvcnQgPT4gc29ydC5jb2x1bW4gPT09IHNvcnRTdGF0ZS5jb2x1bW4pO1xuICAgICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgICBpZiAoc29ydFN0YXRlLmRpcmVjdGlvbiA9PT0gbnVsbCkge1xuICAgICAgICAgIHRoaXMubXVsdGlDb2x1bW5Tb3J0LnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5tdWx0aUNvbHVtblNvcnRbaW5kZXhdID0gc29ydFN0YXRlO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHNvcnRTdGF0ZS5kaXJlY3Rpb24gIT09IG51bGwpIHtcbiAgICAgICAgdGhpcy5tdWx0aUNvbHVtblNvcnQucHVzaChzb3J0U3RhdGUpO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLnNvcnRDaGFuZ2UuZW1pdChzb3J0U3RhdGUpO1xuICB9XG5cbn1cblxuZXhwb3J0IGludGVyZmFjZSBUYWJsZUNvbmZpZyB7XG4gIGhlaWdodDogc3RyaW5nIHwgXCIxMDAlXCI7XG4gIHdpZHRoOiBzdHJpbmcgfCBcIjEwMCVcIjtcbiAgcGFnaW5hdGlvbkNvbmZpZz86IFBhZ2luYXRpb25Db25maWcgfCB1bmRlZmluZWQgfCBudWxsO1xuICBjb2xIZWFkZXJzUm93Q29uZmlnOiBSb3dDb25maWcgfCB1bmRlZmluZWQgfCBudWxsO1xuICByb3dDb25maWc6IFJvd0NvbmZpZyB8IHVuZGVmaW5lZCB8IG51bGw7XG4gIGNvbEhlYWRlckNvbmZpZzogQXJyYXk8Q29sSGVhZGVyQ29uZmlnPjtcbiAgY29sQ29uZmlnOiBBcnJheTxDb2xDb25maWc+O1xuICBjYW5FeHBhbmQ/OiBib29sZWFuO1xuICBjYW5TY3JvbGxIb3Jpem9udGFsbHk/OiBib29sZWFuO1xuICBjZWxsSG92ZXI/OiBib29sZWFuO1xuICBhY3RpdmVSb3dJbmRleD86IG51bWJlcjtcbiAgbXVsdGlDb2x1bW5Tb3J0PzogYm9vbGVhbjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgUGFnaW5hdGlvbkNvbmZpZyB7XG4gIG5vT2ZQYWdlczogbnVtYmVyO1xuICByb3dzUGVyUGFnZTogbnVtYmVyO1xuICB0b3RhbE5vT2ZSb3dzOiBudW1iZXI7XG4gIHNlbGVjdGVkUGFnZT86IG51bWJlcjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgUm93Q29uZmlnIHtcbiAgaGVpZ2h0Pzogc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbDtcbiAgc3R5bGU/OiB7fTtcbiAgYWN0aW9uPzogYW55O1xufVxuZXhwb3J0IGludGVyZmFjZSBDb2xIZWFkZXJDb25maWcge1xuICB0eXBlOiBcInRleHRcIiB8IFwibnVtYmVyXCIgfCBcImN1c3RvbVwiO1xuICBkYXRhOiBhbnk7XG4gIGNvbXBvbmVudFJlZj86IGFueTtcbiAgZmlsdGVycz86IEFycmF5PEZpbHRlcj4gfCBudWxsO1xuICBzdHlsZT86IHt9O1xuICBhY3Rpb24/OiBhbnk7XG4gIGlzU29ydGFibGU/OiBib29sZWFuO1xuICBzb3J0QXNjSWNvbj86IHN0cmluZztcbiAgc29ydERlc2NJY29uPzogc3RyaW5nO1xufVxuZXhwb3J0IGludGVyZmFjZSBDb2xDb25maWcge1xuICB0eXBlOiBcInRleHRcIiB8IFwibnVtYmVyXCIgfCBcImN1c3RvbVwiO1xuICBjb21wb25lbnRSZWY/OiBhbnk7XG4gIHN0eWxlPzoge307XG4gIGFjdGlvbj86IGFueTtcbn1cbiIsIjxkaXZcbiAgW25nU3R5bGVdPVwie1xuICAgIGhlaWdodDogZ2V0Q29udGFpbmVySGVpZ2h0KCksXG4gICAgd2lkdGg6IGdldENvbnRhaW5lcldpZHRoKCksXG4gICAgJ292ZXJmbG93LXgnOiBjb25maWcuY2FuU2Nyb2xsSG9yaXpvbnRhbGx5ID8gJ2F1dG8nIDogJ3Vuc2V0J1xuICB9XCJcbiAgaWQ9XCJtYWluLWNvbnRhaW5lclwiXG4+XG4gIDxtaXMtdGFibGUtZmlsdGVyXG4gICAgI2ZpbHRlclxuICAgIChmaWx0ZXJzQXBwbGllZCk9XCJ1cGRhdGVBcHBsaWVkRmlsdGVycygkZXZlbnQpXCJcbiAgICAqbmdJZj1cInNob3dGaWx0ZXJcIlxuICAgIFtjb250YWluZXJTdHlsZXNdPVwiZmlsdGVyQ29udGFpbmVyU3R5bGVzXCJcbiAgICBbZmlsdGVyc0RhdGFdPVwiZmlsdGVyRGF0YVwiXG4gID48L21pcy10YWJsZS1maWx0ZXI+XG4gIDxkaXZcbiAgICAjdGFibGVcbiAgICBpZD1cInRhYmxlLWNvbnRhaW5lclwiXG4gICAgW25nQ2xhc3NdPVwieyAnbm8tc2Nyb2xsYmFyJzogZXhwYW5kZWRJbmRleCA8IDAsIHNjcm9sbGJhcjogIShleHBhbmRlZEluZGV4IDwgMCksICdzY3JvbGwtaG9yaXpvbnRhbGx5JzogY29uZmlnLmNhblNjcm9sbEhvcml6b250YWxseSB9XCJcbiAgPlxuICAgIDxkaXZcbiAgICBbbmdTdHlsZV09XCJnZXRDb2xIZWFkZXJzUm93U3R5bGVzKClcIlxuICAgICAgaWQ9XCJjb2wtaGVhZGVycy1jb250YWluZXJcIlxuICAgID5cbiAgICAgIDxkaXZcbiAgICAgICAgI2NvbEhlYWRlclJlZlxuICAgICAgICAoY2xpY2spPVwiY29sSGVhZGVyPy5hY3Rpb24gPyBjb2xIZWFkZXI/LmFjdGlvbihjb2xIZWFkZXIpIDogbnVsbFwiXG4gICAgICAgICpuZ0Zvcj1cImxldCBjb2xIZWFkZXIgb2YgY29uZmlnPy5jb2xIZWFkZXJDb25maWdcIlxuICAgICAgICBjbGFzcz1cImNvbC1oZWFkZXJcIlxuICAgICAgICBbbmdTdHlsZV09XCJ7XG4gICAgICAgICAgd2lkdGg6IGNvbEhlYWRlcj8uc3R5bGU/LndpZHRoIHx8ICcnLFxuICAgICAgICAgIGN1cnNvcjogY29sSGVhZGVyLmFjdGlvbiA/ICdwb2ludGVyJyA6ICdkZWZhdWx0JyxcbiAgICAgICAgICAnanVzdGlmeS1jb250ZW50JzogY29sSGVhZGVyPy5zdHlsZT8uanVzdGlmeUNvbnRlbnRcbiAgICAgICAgICAgID8gY29sSGVhZGVyPy5zdHlsZT8uanVzdGlmeUNvbnRlbnRcbiAgICAgICAgICAgIDogY29sSGVhZGVyLnR5cGUgPT09ICdudW1iZXInXG4gICAgICAgICAgICA/ICdmbGV4LWVuZCdcbiAgICAgICAgICAgIDogJ3NwYWNlLWJldHdlZW4nXG4gICAgICAgIH1cIlxuICAgICAgPlxuICAgICAgICA8cCAqbmdJZj1cImNvbEhlYWRlcj8udHlwZSAhPT0gJ2N1c3RvbSdcIiBjbGFzcz1cImNvbC1oZWFkZXItdGV4dFwiPlxuICAgICAgICAgIHt7IGNvbEhlYWRlcj8uZGF0YSB8fCBcIiBcIiB9fVxuICAgICAgICA8L3A+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgKGNsaWNrKT1cImZpbHRlckRhdGEgPSBjb2xIZWFkZXIuZmlsdGVyczsgdG9nZ2xlRmlsdGVyKGNvbEhlYWRlci5kYXRhKTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgICAqbmdJZj1cImNvbEhlYWRlcj8udHlwZSAhPT0gJ2N1c3RvbScgJiYgY29sSGVhZGVyPy5maWx0ZXJzICYmIGNvbEhlYWRlcj8uZmlsdGVycz8ubGVuZ3RoID4gMFwiXG4gICAgICAgICAgY2xhc3M9XCJmaWx0ZXItaWNvblwiXG4gICAgICAgID5cbiAgICAgICAgICA8c3BhbiAqbmdJZj1cImFwcGxpZWRGaWx0ZXJzW2NvbEhlYWRlci5kYXRhXT8ubGVuZ3RoID4gMFwiIGlkPVwiZmlsdGVyLWFjdGl2ZVwiPjwvc3Bhbj5cbiAgICAgICAgICA8c3ZnIGZpbGw9XCJub25lXCIgaGVpZ2h0PVwiMTBcIiB2aWV3Qm94PVwiMCAwIDEzIDEwXCIgd2lkdGg9XCIxM1wiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgIGNsaXAtcnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICAgICAgICBkPVwiTTQuOTc1NDYgMTBINy42NDIxM1Y4SDQuOTc1NDZWMTBaTTAuMzA4NDcyIDBWMkgxMi4zMDg1VjBIMC4zMDg0NzJaTTIuMzA4NDcgNkgxMC4zMDg1VjRIMi4zMDg0N1Y2WlwiXG4gICAgICAgICAgICAgIGZpbGw9XCIjMTgxRjMzXCJcbiAgICAgICAgICAgICAgZmlsbC1ydWxlPVwiZXZlbm9kZFwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvc3ZnPlxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIDxzcGFuICpuZ0lmPVwiY29sSGVhZGVyPy5pc1NvcnRhYmxlICYmICFjb2xIZWFkZXI/LmZpbHRlcnNcIiBhcHBTb3J0SWNvbnNcbiAgICAgICAgICBbY29sdW1uXT1cImNvbEhlYWRlclwiXG4gICAgICAgICAgW2FjdGl2ZVNvcnRdPVwiY3VycmVudFNvcnRcIlxuICAgICAgICAgIFthY3RpdmVTb3J0c109XCJtdWx0aUNvbHVtblNvcnRcIlxuICAgICAgICAgIFttdWx0aUNvbHVtblNvcnRdPVwiY29uZmlnLm11bHRpQ29sdW1uU29ydFwiXG4gICAgICAgICAgKHNvcnRDaGFuZ2UpPVwib25Tb3J0Q2hhbmdlKCRldmVudClcIlxuICAgICAgICAgIGNsYXNzPVwic29ydC1pY29uXCI+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDxuZy10ZW1wbGF0ZSAqbmdJZj1cImNvbEhlYWRlcj8udHlwZSA9PT0gJ2N1c3RvbSdcIiBjdXN0b21UYWJsZUNlbGwgW2N1c3RvbUNvbXBvbmVudF09XCJjb2xIZWFkZXI/LmNvbXBvbmVudFJlZlwiIFtkYXRhXT1cImNvbEhlYWRlci5kYXRhXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgaWQ9XCJkYXRhLWNvbnRhaW5lclwiPlxuICAgICAgPGRpdiBjbGFzcz1cInJvdy13cmFwcGVyXCIgKm5nRm9yPVwibGV0IHJvdyBvZiB0YWJsZURhdGE7IGxldCBpID0gaW5kZXhcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwidC1yb3dcIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ3Qtcm93LWhvdmVyJzogY29uZmlnLmNlbGxIb3ZlciwgJ2FjdGl2ZS1yb3cnOiBpID09PSBhY3RpdmVSb3dJbmRleCB9XCJcbiAgICAgICAgICBbbmdTdHlsZV09XCJ7ICdtaW4taGVpZ2h0JzogY29uZmlnPy5yb3dDb25maWc/LmhlaWdodCA/IGNvbmZpZy5yb3dDb25maWcuaGVpZ2h0IDogJzQ0cHgnIH1cIlxuICAgICAgICAgIChjbGljayk9XCJzZWxlY3RSb3coaSlcIlxuICAgICAgICAgID5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAoY2xpY2spPVwiY29uZmlnPy5jb2xDb25maWdbaV0/LmFjdGlvbiA/IGNvbmZpZz8uY29sQ29uZmlnW2ldPy5hY3Rpb24oY29sKSA6IG51bGxcIlxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNvbCBvZiByb3c7IGxldCBpID0gaW5kZXhcIlxuICAgICAgICAgICAgW25nU3R5bGVdPVwie1xuICAgICAgICAgICAgICB3aWR0aDogY29uZmlnPy5jb2xDb25maWdbaV0/LnN0eWxlPy53aWR0aCB8fCBjb25maWc/LmNvbEhlYWRlckNvbmZpZ1tpXT8uc3R5bGU/LndpZHRoIHx8ICcnXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgICAgIGNsYXNzPVwidC1jb2wtY29udGFpbmVyXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ3QtY29sLWNvbnRhaW5lci1ob3Zlcic6IGNvbmZpZy5jZWxsSG92ZXIgfVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cInQtY29sXCJcbiAgICAgICAgICAgICAgW3N0eWxlXT1cImNvbmZpZy5jb2xDb25maWdbaV0/LnN0eWxlXCJcbiAgICAgICAgICAgICAgW25nU3R5bGVdPVwie1xuICAgICAgICAgICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgICAgICAgICAgY3Vyc29yOiBjb25maWcuY29sQ29uZmlnW2ldPy5hY3Rpb24gPyAncG9pbnRlcicgOiAnZGVmYXVsdCcsXG4gICAgICAgICAgICAgICAgJ2p1c3RpZnktY29udGVudCc6IGNvbmZpZy5jb2xDb25maWdbaV0/LnN0eWxlPy5qdXN0aWZ5Q29udGVudFxuICAgICAgICAgICAgICAgICAgPyBjb25maWcuY29sQ29uZmlnW2ldPy5zdHlsZT8uanVzdGlmeUNvbnRlbnRcbiAgICAgICAgICAgICAgICAgIDogY29uZmlnLmNvbENvbmZpZ1tpXT8udHlwZSA9PT0gJ251bWJlcidcbiAgICAgICAgICAgICAgICAgID8gJ2ZsZXgtZW5kJ1xuICAgICAgICAgICAgICAgICAgOiAnc3BhY2UtYmV0d2VlbidcbiAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxwXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJjb25maWcuY29sQ29uZmlnW2ldPy50eXBlICE9PSAnY3VzdG9tJ1wiXG4gICAgICAgICAgICAgICAgW25nU3R5bGVdPVwie1xuICAgICAgICAgICAgICAgICAgY29sb3I6IGNvbmZpZz8uY29sQ29uZmlnW2ldPy5zdHlsZT8uY29sb3IgPyBjb25maWc/LmNvbENvbmZpZ1tpXT8uc3R5bGU/LmNvbG9yIDogJydcbiAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J3RleHQtZWxsaXBzaXMnOiAhIWNvbmZpZz8uY29sQ29uZmlnW2ldPy5zdHlsZT8udGV4dEVsbGlwc2lzfVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ0LWNvbC10ZXh0XCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7IGNvbCB9fVxuICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICAgICpuZ0lmPVwiY29uZmlnLmNvbENvbmZpZ1tpXT8udHlwZSA9PT0gJ2N1c3RvbSdcIlxuICAgICAgICAgICAgICAgIFtjdXN0b21Db21wb25lbnRdPVwiY29uZmlnLmNvbENvbmZpZ1tpXS5jb21wb25lbnRSZWZcIlxuICAgICAgICAgICAgICAgIFtkYXRhXT1cImNvbFwiXG4gICAgICAgICAgICAgICAgY3VzdG9tVGFibGVDZWxsXG4gICAgICAgICAgICAgID48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiY29uZmlnPy5jYW5FeHBhbmQgJiYgZXhwYW5kZWRJbmRleCA9PT0gaVwiIGNsYXNzPVwic3ViLXJvd1wiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzdWJUYWJsZURhdGFMb2FkaW5nXCI+XG4gICAgICAgICAgICA8ZGl2IFtuZ1N0eWxlXT1cIntcbiAgICAgICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gICAgICAgICAgICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgICAgICAgICAgICBwYWRkaW5nOiAnMTZweCdcbiAgICAgICAgICAgIH1cIj5cbiAgICAgICAgICAgICAgTG9hZGluZy4uLlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFzdWJUYWJsZURhdGFMb2FkaW5nICYmIHN1YlRhYmxlRGF0YS5sZW5ndGggPT09IDBcIj5cbiAgICAgICAgICAgIDxkaXYgW25nU3R5bGVdPVwie1xuICAgICAgICAgICAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgICAgICAgICAgIHBhZGRpbmc6ICcxNnB4J1xuICAgICAgICAgICAgfVwiPlxuICAgICAgICAgICAgICBObyBEYXRhIEF2YWlsYWJsZS4uLlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFzdWJUYWJsZURhdGFMb2FkaW5nICYmIHN1YlRhYmxlRGF0YS5sZW5ndGggPiAwXCI+XG4gICAgICAgICAgICA8c3ViLXRhYmxlIFtjb25maWddPVwic3ViVGFibGVjb25maWdcIiBbdGFibGVEYXRhXT1cInN1YlRhYmxlRGF0YVwiPjwvc3ViLXRhYmxlPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdlxuICAgICpuZ0lmPVwiY29uZmlnPy5wYWdpbmF0aW9uQ29uZmlnICYmICh0YWJsZUxlbmd0aCA+PSBjb25maWcucGFnaW5hdGlvbkNvbmZpZy5yb3dzUGVyUGFnZSB8fCBjb25maWcucGFnaW5hdGlvbkNvbmZpZz8uc2VsZWN0ZWRQYWdlICE9PSAxKVwiXG4gICAgaWQ9XCJwYWdpbmF0aW9uLWNvbnRhaW5lclwiXG4gID5cbiAgICA8cCBpZD1cInBhZ2luYXRpb24tdGV4dFwiPlxuICAgICAgU2hvd2luZ1xuICAgICAge3sgKGNvbmZpZy5wYWdpbmF0aW9uQ29uZmlnPy5zZWxlY3RlZFBhZ2UgLSAxKSAqIGNvbmZpZy5wYWdpbmF0aW9uQ29uZmlnLnJvd3NQZXJQYWdlICsgMSB9fS17e1xuICAgICAgICAoY29uZmlnLnBhZ2luYXRpb25Db25maWc/LnNlbGVjdGVkUGFnZSAtIDEpICogY29uZmlnLnBhZ2luYXRpb25Db25maWcucm93c1BlclBhZ2UgKyB0YWJsZUxlbmd0aFxuICAgICAgfX1cbiAgICAgIG9mIHt7IGNvbmZpZy5wYWdpbmF0aW9uQ29uZmlnLnRvdGFsTm9PZlJvd3MgfX0gaXRlbXNcbiAgICA8L3A+XG4gICAgPGRpdiBpZD1cInBhZ2VzLWNvbnRhaW5lclwiPlxuICAgICAgPHNwYW4gKGNsaWNrKT1cInVwZGF0ZVNlbGVjdGVkUGFnZShjb25maWcucGFnaW5hdGlvbkNvbmZpZz8uc2VsZWN0ZWRQYWdlIC0gMSlcIiBjbGFzcz1cInBhZ2VcIj5cbiAgICAgICAgPHN2ZyBmaWxsPVwibm9uZVwiIGhlaWdodD1cIjEwXCIgdmlld0JveD1cIjAgMCA3IDEwXCIgd2lkdGg9XCI3XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICBjbGlwLXJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgICAgIGQ9XCJNMC44NTc0MDUgNS41NjI5NUMwLjg1NTc5NCA1LjU2MTM5IDAuODU0MTg4IDUuNTU5ODIgMC44NTI1ODggNS41NTgyNEMwLjY5NTk1NSA1LjQwNDA4IDAuNjE3NjQxIDUuMjAyMDMgMC42MTc2NDcgNC45OTk5OEMwLjYxNzY0MSA0Ljc5NzkzIDAuNjk1OTU1IDQuNTk1ODggMC44NTI1ODggNC40NDE3MkMwLjg1NDE4OCA0LjQ0MDE0IDAuODU1Nzk0IDQuNDM4NTggMC44NTc0MDQgNC40MzcwMkw1LjEzMDY2IDAuMjMxMjMxQzUuNDQzOTIgLTAuMDc3MDc3MSA1Ljk1MTggLTAuMDc3MDc3MSA2LjI2NTA2IDAuMjMxMjMxQzYuNTc4MzEgMC41Mzk1NCA2LjU3ODMxIDEuMDM5NDEgNi4yNjUwNiAxLjM0NzcyTDIuNTU0MiA0Ljk5OTk4TDYuMjY1MDYgOC42NTIyNUM2LjU3ODMxIDguOTYwNTUgNi41NzgzMSA5LjQ2MDQyIDYuMjY1MDYgOS43Njg3M0M1Ljk1MTggMTAuMDc3IDUuNDQzOTIgMTAuMDc3IDUuMTMwNjYgOS43Njg3M0wwLjg1NzQwNSA1LjU2Mjk1WlwiXG4gICAgICAgICAgICBmaWxsPVwiIzE4MUYzM1wiXG4gICAgICAgICAgICBmaWxsLXJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L3N2Zz5cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHBhZ2VOdW1iZXIgb2YgcGFnZXNcIj5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICAoY2xpY2spPVwidXBkYXRlU2VsZWN0ZWRQYWdlKHBhZ2VOdW1iZXIpXCJcbiAgICAgICAgICAqbmdJZj1cInBhZ2VOdW1iZXIgIT0gMFwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwieyAncGFnZS1hY3RpdmUnOiBwYWdlTnVtYmVyID09IGNvbmZpZy5wYWdpbmF0aW9uQ29uZmlnPy5zZWxlY3RlZFBhZ2UgfVwiXG4gICAgICAgICAgY2xhc3M9XCJwYWdlXCJcbiAgICAgICAgICA+e3sgcGFnZU51bWJlciB9fTwvc3BhblxuICAgICAgICA+XG4gICAgICAgIDxzcGFuICpuZ0lmPVwicGFnZU51bWJlciA9PSAwXCIgY2xhc3M9XCJwYWdlLXNlcGVyYXRvclwiPlxuICAgICAgICAgIDxkaXYgW25nU3R5bGVdPVwieyBkaXNwbGF5OiAnZmxleCcgfVwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkb3RcIiBbbmdTdHlsZV09XCJ7ICdtYXJnaW4tcmlnaHQnOiAnNHB4JyB9XCI+PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkb3RcIiBbbmdTdHlsZV09XCJ7ICdtYXJnaW4tcmlnaHQnOiAnNHB4JyB9XCI+PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkb3RcIj48L3NwYW4+XG4gICAgICAgICAgPC9kaXY+ICAgICAgICAgIFxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxzcGFuIChjbGljayk9XCJ1cGRhdGVTZWxlY3RlZFBhZ2UoY29uZmlnLnBhZ2luYXRpb25Db25maWc/LnNlbGVjdGVkUGFnZSArIDEpXCIgY2xhc3M9XCJwYWdlXCI+XG4gICAgICAgIDxzdmcgZmlsbD1cIm5vbmVcIiBoZWlnaHQ9XCIxMFwiIHZpZXdCb3g9XCIwIDAgNyAxMFwiIHdpZHRoPVwiN1wiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgY2xpcC1ydWxlPVwiZXZlbm9kZFwiXG4gICAgICAgICAgICBkPVwiTTYuMTQyNiA1LjU2Mjk1QzYuMTQ0MjEgNS41NjEzOSA2LjE0NTgxIDUuNTU5ODIgNi4xNDc0MSA1LjU1ODI0QzYuMzA0MDUgNS40MDQwOCA2LjM4MjM2IDUuMjAyMDMgNi4zODIzNiA0Ljk5OTk4QzYuMzgyMzYgNC43OTc5MyA2LjMwNDA1IDQuNTk1ODggNi4xNDc0MSA0LjQ0MTcyQzYuMTQ1ODEgNC40NDAxNCA2LjE0NDIxIDQuNDM4NTggNi4xNDI2IDQuNDM3MDJMMS44NjkzNCAwLjIzMTIzMUMxLjU1NjA4IC0wLjA3NzA3NzEgMS4wNDgyIC0wLjA3NzA3NzEgMC43MzQ5NDIgMC4yMzEyMzFDMC40MjE2ODggMC41Mzk1NCAwLjQyMTY4OCAxLjAzOTQxIDAuNzM0OTQyIDEuMzQ3NzJMNC40NDU4IDQuOTk5OThMMC43MzQ5NDEgOC42NTIyNUMwLjQyMTY4NiA4Ljk2MDU1IDAuNDIxNjg2IDkuNDYwNDIgMC43MzQ5NDEgOS43Njg3M0MxLjA0ODIgMTAuMDc3IDEuNTU2MDggMTAuMDc3IDEuODY5MzQgOS43Njg3M0w2LjE0MjYgNS41NjI5NVpcIlxuICAgICAgICAgICAgZmlsbD1cIiMxODFGMzNcIlxuICAgICAgICAgICAgZmlsbC1ydWxlPVwiZXZlbm9kZFwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9zdmc+XG4gICAgICA8L3NwYW4+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
609
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbWlzLWNvbXBvbmVudHMvdGFibGUvdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvbWlzLWNvbXBvbmVudHMvdGFibGUvdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFHTixTQUFTLEVBQ1QsWUFBWSxFQUNiLE1BQU0sZUFBZSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lDTHJCLCtDQU1DO0lBSkMseU5BQWtCLG1DQUE0QixLQUFDO0lBSWhELGlCQUFtQjs7O0lBRGxCLEFBREEsOERBQXlDLGtDQUNmOzs7SUEwQnRCLDZCQUFrRztJQUNoRyxZQUNGO0lBQUEsaUJBQUk7OztJQURGLGNBQ0Y7SUFERSx5RkFDRjs7O0lBTUUsMkJBQW1GOzs7O0lBTHJGLGdDQUlDO0lBSEMsNFBBQXlDLHNDQUE0Qix3QkFBRSx3QkFBd0IsS0FBQztJQUloRywrRUFBNEU7O0lBQzVFLCtCQUErRjtJQUM3RiwyQkFLRTtJQUVOLEFBREUsaUJBQU0sRUFDRDs7OztJQVRFLGNBQWdEO0lBQWhELHNJQUFnRDs7OztJQVV6RCxnQ0FJQztJQUhDLGdLQUFTLHVCQUFnQix3QkFBRSx3QkFBd0IsS0FBQztJQUlwRCxtQ0FBMkQ7SUFDN0QsaUJBQU87OztJQURTLGNBQTZCO0lBQTdCLGtEQUE2Qjs7OztJQUU3QyxnQ0FNb0I7SUFEbEIsZ01BQWMsMkJBQW9CLEtBQUM7SUFFckMsaUJBQU87Ozs7SUFITCxBQURBLEFBREEsQUFEQSxxQ0FBb0Isa0NBQ00sdUNBQ0ssa0RBQ1c7Ozs7SUFJOUMsd0ZBQXNJOzs7SUFBeEIsQUFBNUMseUZBQTJDLDJCQUF3Qjs7OztJQWhEckksa0NBY0M7SUFaQywyUkFBNEQsSUFBSSxL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LEtBQUs7WUFDRyxnQkFBZ0I7a0JBQXhCLEtBQUs7WUFDRyxhQUFhO2tCQUFyQixLQUFLO1lBQ0csU0FBUztrQkFBakIsS0FBSztZQUNHLFlBQVk7a0JBQXBCLEtBQUs7WUFDRyxtQkFBbUI7a0JBQTNCLEtBQUs7WUFDYyxLQUFLO2tCQUF4QixTQUFTO21CQUFDLE9BQU87WUFLUixVQUFVO2tCQUFuQixNQUFNO1lBQ0csWUFBWTtrQkFBckIsTUFBTTs7a0ZBckNJLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdCxcbiAgUmVuZGVyZXIyLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdDaGlsZHJlblxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgRmlsdGVyLCBUYWJsZUZpbHRlckNvbXBvbmVudCB9IGZyb20gXCIuL2ZpbHRlci9maWx0ZXIuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBTb3J0U3RhdGUgfSBmcm9tIFwiLi9zb3J0LWljb25zLmRpcmVjdGl2ZVwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwibWlzLXRhYmxlXCIsXG4gIHRlbXBsYXRlVXJsOiBcInRhYmxlLmNvbXBvbmVudC5odG1sXCIsXG4gIHN0eWxlVXJsczogW1widGFibGUuY29tcG9uZW50LmNzc1wiXVxufSlcbmV4cG9ydCBjbGFzcyBUYWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25DaGFuZ2VzIHtcbiAgLy8gSW5pdGlhbGl6ZSB3aXRoIC0xIHRvIGluZGljYXRlIG5vIHJvdyBpcyBjb2xvcmVkIGF0IHRoZSBiZWdpbm5pbmdcbiAgYWN0aXZlUm93SW5kZXg6IG51bWJlcltdID0gWy0xXTtcbiAgaGFzQ2hlY2tib3hBY3Rpb25zOiBib29sZWFuID0gZmFsc2U7XG4gIHNlbGVjdEFsbENoZWNrYm94OiBib29sZWFuID0gZmFsc2U7XG5cbiAgLy8gRmlsdGVyIHJlbGF0ZWQgdmFyaWFibGVzXG4gIHNob3dGaWx0ZXI6IGJvb2xlYW4gPSBmYWxzZTtcbiAgZmlsdGVyTmFtZTogc3RyaW5nID0gXCJcIjtcbiAgZmlsdGVyRGF0YTogQXJyYXk8RmlsdGVyPiA9IFtdO1xuICBmaWx0ZXJDb250YWluZXJTdHlsZXM6IGFueSA9IHt9O1xuICBhcHBsaWVkRmlsdGVyczogeyBba2V5OiBzdHJpbmddOiBBcnJheTx7IG5hbWU6IHN0cmluZzsgdmFsdWU6IHN0cmluZyB9PiB9ID0ge307XG4gIEBPdXRwdXQoKSBmaWx0ZXJzVXBkYXRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8e1xuICAgIFtrZXk6IHN0cmluZ106IEFycmF5PHsgbmFtZTogc3RyaW5nOyB2YWx1ZTogc3RyaW5nIH0+O1xuICB9PigpO1xuXG4gIEBWaWV3Q2hpbGQoXCJmaWx0ZXJcIikgZmlsdGVyOiBUYWJsZUZpbHRlckNvbXBvbmVudCB8IGFueTtcbiAgQFZpZXdDaGlsZHJlbihcImNvbEhlYWRlclJlZlwiKSBjb2xIZWFkZXJzOiBRdWVyeUxpc3Q8RWxlbWVudFJlZj4gfCBhbnk7XG5cbiAgLy8gUGFnaW5hdGlvbiByZWxhdGVkIHZhcmlhYmxlc1xuICBwYWdlczogQXJyYXk8bnVtYmVyPiA9IFtdO1xuICB0YWJsZUxlbmd0aDogbnVtYmVyO1xuICBAT3V0cHV0KCkgcGFnZVNlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgQElucHV0KFwidGFibGVDb25maWdcIikgY29uZmlnOiBUYWJsZUNvbmZpZyB8IGFueTtcbiAgQElucHV0KCkgc3ViVGFibGVjb25maWc6IFRhYmxlQ29uZmlnIHwgYW55O1xuICBASW5wdXQoKSB0YWJsZURhdGFMb2FkaW5nOiBib29sZWFuIHwgYW55O1xuICBASW5wdXQoKSBleHBhbmRlZEluZGV4OiBudW1iZXIgfCBhbnk7XG4gIEBJbnB1dCgpIHRhYmxlRGF0YTogQXJyYXk8QXJyYXk8YW55Pj4gPSBbXTtcbiAgQElucHV0KCkgc3ViVGFibGVEYXRhOiBBcnJheTxBcnJheTxhbnk+PiA9IFtdO1xuICBASW5wdXQoKSBzdWJUYWJsZURhdGFMb2FkaW5nOiBib29sZWFuIHwgYW55O1xuICBAVmlld0NoaWxkKFwidGFibGVcIikgdGFibGU6IEVsZW1lbnRSZWYgfCBhbnk7XG5cbiAgLy8gU29ydGluZyByZWxhdGVkIHByb3BlcnRpZXNcbiAgY3VycmVudFNvcnQ6IFNvcnRTdGF0ZSB8IG51bGwgPSBudWxsO1xuICBtdWx0aUNvbHVtblNvcnQ6IFNvcnRTdGF0ZVtdID0gW107XG4gIEBPdXRwdXQoKSBzb3J0Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxTb3J0U3RhdGU+KCk7XG4gIEBPdXRwdXQoKSBoZWFkZXJBY3Rpb24/ID0gbmV3IEV2ZW50RW1pdHRlcjx7IHR5cGU6IHN0cmluZzsgcGF5bG9hZD86IGFueSB9PigpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMikge31cblxuICAvLyBGdW5jdGlvbiB0byBoYW5kbGUgcm93IGNsaWNrXG4gIHNlbGVjdFJvdyhpbmRleDogbnVtYmVyKSB7XG4gICAgaWYgKHRoaXMuaGFzQ2hlY2tib3hBY3Rpb25zKSByZXR1cm47XG4gICAgdGhpcy5hY3RpdmVSb3dJbmRleCA9IFtpbmRleF07IC8vIFNldCB0aGUgc2VsZWN0ZWQgaW5kZXggdG8gdGhlIGNsaWNrZWQgcm93J3MgaW5kZXhcbiAgICAhIXRoaXMuY29uZmlnLnJvd0NvbmZpZy5hY3Rpb24gJiYgdGhpcy5jb25maWcucm93Q29uZmlnLmFjdGlvbihpbmRleCk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmhhc0NoZWNrYm94QWN0aW9ucyA9IHRoaXMuY29uZmlnLmNvbENvbmZpZz8uc29tZShjb2wgPT4gY29sLnR5cGUgPT09IFwiYWN0aW9uc1wiICYmIGNvbC5hY3Rpb25UeXBlID09PSBcImNoZWNrYm94XCIpO1xuICAgIHRoaXMudGFibGVMZW5ndGggPSAhIXRoaXMudGFibGVEYXRhID8gdGhpcy50YWJsZURhdGEubGVuZ3RoIDogMDtcbiAgICB0aGlzLmluaXRpYWxpemVGaWx0ZXJzKCk7XG4gICAgaWYgKHRoaXMuY29uZmlnLnBhZ2luYXRpb25Db25maWcpIHtcbiAgICAgIHRoaXMuaW5pdGlhbGl6ZVBhZ2luYXRpb24oKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuY29uZmlnLmNhblNjcm9sbEhvcml6b250YWxseSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmNvbmZpZy5jYW5TY3JvbGxIb3Jpem9udGFsbHkgPSBmYWxzZTtcbiAgICB9XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGV2ZW50ID0+IHtcbiAgICAgIGlmICh0aGlzLmZpbHRlcikge1xuICAgICAgICBsZXQgaXNDaGVja0JveENsaWNrZWQgPSB0cnVlO1xuICAgICAgICBsZXQgdGFyZ2V0RWxlbWVudCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MU3BhbkVsZW1lbnQ7XG4gICAgICAgIGlmICh0YXJnZXRFbGVtZW50LmNsYXNzTmFtZSA9PT0gXCJjaGVja21hcmtcIikge1xuICAgICAgICAgIGlzQ2hlY2tCb3hDbGlja2VkID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLnNob3dGaWx0ZXIgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGxldCBpc0NsaWNrSW5zaWRlRWxlbWVudCA9IHRoaXMuZmlsdGVyLmNvbnRhaW5lci5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCk7XG4gICAgICAgIGlmICghaXNDbGlja0luc2lkZUVsZW1lbnQgJiYgIWlzQ2hlY2tCb3hDbGlja2VkKSB7XG4gICAgICAgICAgdGhpcy50b2dnbGVGaWx0ZXIodGhpcy5maWx0ZXJOYW1lKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBpZiAodGhpcy5jb25maWcucGFnaW5hdGlvbkNvbmZpZykge1xuICAgICAgbGV0IGhlaWdodCA9IHRoaXMuY29uZmlnLmhlaWdodDtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy50YWJsZS5uYXRpdmVFbGVtZW50LCBcImhlaWdodFwiLCBoZWlnaHQgLSA1NiArIFwicHhcIik7XG4gICAgfVxuICB9XG4gIG5nT25DaGFuZ2VzKCkge1xuICAgIHRoaXMudGFibGVMZW5ndGggPSAhIXRoaXMudGFibGVEYXRhID8gdGhpcy50YWJsZURhdGEubGVuZ3RoIDogMDtcbiAgICB0aGlzLmFjdGl2ZVJvd0luZGV4ID0gW3RoaXMuY29uZmlnLmFjdGl2ZVJvd0luZGV4IHx8IC0xXTtcbiAgfVxuXG4gIC8vIEZpbHRlciByZWxhdGVkIGZ1bmN0aW9uc1xuICBpbml0aWFsaXplRmlsdGVycygpIHtcbiAgICBmb3IgKGxldCBjb2xIZWFkZXIgb2YgdGhpcy5jb25maWc/LmNvbEhlYWRlckNvbmZpZykge1xuICAgICAgaWYgKGNvbEhlYWRlci5maWx0ZXJzKSB7XG4gICAgICAgIGxldCBmaWx0ZXJzID0gW107XG4gICAgICAgIGZvciAobGV0IGZpbHRlciBvZiBjb2xIZWFkZXIuZmlsdGVycykge1xuICAgICAgICAgIGlmIChmaWx0ZXIuY2hlY2tlZCkge1xuICAgICAgICAgICAgZmlsdGVycy5wdXNoKHtcbiAgICAgICAgICAgICAgbmFtZTogZmlsdGVyLm5hbWUsXG4gICAgICAgICAgICAgIHZhbHVlOiBmaWx0ZXIudmFsdWVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoZmlsdGVycy5sZW5ndGggPiAwKSB0aGlzLmFwcGxpZWRGaWx0ZXJzW2NvbEhlYWRlci5kYXRhXSA9IGZpbHRlcnM7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHRvZ2dsZUZpbHRlcihmaWx0ZXJOYW1lOiBzdHJpbmcpIHtcbiAgICBpZiAoIXRoaXMuc2hvd0ZpbHRlcikge1xuICAgICAgdGhpcy5maWx0ZXJOYW1lID0gZmlsdGVyTmFtZTtcbiAgICAgIHRoaXMuc2hvd0ZpbHRlciA9IHRydWU7XG5cbiAgICAgIGxldCBvZmZTZXQgPSAwO1xuICAgICAgbGV0IGNvbEhlYWRlcnNSZXZlcnNlZCA9IHRoaXMuY29sSGVhZGVycy50b0FycmF5KCkucmV2ZXJzZSgpO1xuXG4gICAgICBmb3IgKGxldCBoZWFkZXIgb2YgY29sSGVhZGVyc1JldmVyc2VkKSB7XG4gICAgICAgIGlmIChoZWFkZXIubmF0aXZlRWxlbWVudC5pbm5lclRleHQgPT09IGZpbHRlck5hbWUpIGJyZWFrO1xuICAgICAgICBvZmZTZXQgKz0gaGVhZGVyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGg7XG4gICAgICB9XG4gICAgICB0aGlzLmZpbHRlckNvbnRhaW5lclN0eWxlcyA9IHtcbiAgICAgICAgdG9wOiBcIjQ0cHhcIixcbiAgICAgICAgcmlnaHQ6IG9mZlNldCA+IDAgPyBvZmZTZXQgLSAxMTYgKyBcInB4XCIgOiBcIjEycHhcIlxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5maWx0ZXJOYW1lID0gXCJcIjtcbiAgICAgIHRoaXMuZmlsdGVyRGF0YSA9IFtdO1xuICAgICAgdGhpcy5zaG93RmlsdGVyID0gZmFsc2U7XG4gICAgfVxuICB9XG4gIHVwZGF0ZUFwcGxpZWRGaWx0ZXJzKGFwcGxpZWRGaWx0ZXJzOiBBcnJheTx7IG5hbWU6IHN0cmluZzsgdmFsdWU6IHN0cmluZyB9Pikge1xuICAgIGlmIChhcHBsaWVkRmlsdGVycy5sZW5ndGggPT0gMCkge1xuICAgICAgZGVsZXRlIHRoaXMuYXBwbGllZEZpbHRlcnNbdGhpcy5maWx0ZXJOYW1lXTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5hcHBsaWVkRmlsdGVyc1t0aGlzLmZpbHRlck5hbWVdID0gYXBwbGllZEZpbHRlcnM7XG4gICAgfVxuICAgIHRoaXMuZmlsdGVyc1VwZGF0ZWQuZW1pdCh7IC4uLnRoaXMuYXBwbGllZEZpbHRlcnMgfSk7XG4gICAgdGhpcy50b2dnbGVGaWx0ZXIodGhpcy5maWx0ZXJOYW1lKTtcbiAgfVxuXG4gIC8vIFBhZ2luYXRpb24gcmVsYXRlZCBmdW5jdGlvbnNcbiAgaW5pdGlhbGl6ZVBhZ2luYXRpb24oKSB7XG4gICAgaWYgKHRoaXMuY29uZmlnLnBhZ2luYXRpb25Db25maWcpIHtcbiAgICAgIGxldCBsZW4gPSB0aGlzLmNvbmZpZy5wYWdpbmF0aW9uQ29uZmlnLm5vT2ZQYWdlcztcbiAgICAgIGlmIChsZW4gPD0gNykge1xuICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8PSBsZW47IGkrKykge1xuICAgICAgICAgIHRoaXMucGFnZXMucHVzaChpKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5wYWdlcyA9IFsxLCAyLCAzLCA0LCAwLCBsZW5dO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICB1cGRhdGVTZWxlY3RlZFBhZ2UocGFnZU51bWJlcjogbnVtYmVyKSB7XG4gICAgLy8gR3VhcmQgY2xhdXNlIHRvIHByZXZlbnQgb3V0LW9mLXJhbmdlIHVwZGF0ZXNcbiAgICBpZiAocGFnZU51bWJlciA8IDEgfHwgcGFnZU51bWJlciA+IHRoaXMuY29uZmlnLnBhZ2luYXRpb25Db25maWcubm9PZlBhZ2VzKSByZXR1cm47XG5cbiAgICBpZiAodGhpcy5jb25maWcuY29sSGVhZGVyQ29uZmlnPy5zb21lKGNvbCA9PiBjb2wudHlwZSA9PT0gXCJjaGVja2JveFwiKSkge1xuICAgICAgdGhpcy5zZWxlY3RBbGxDaGVja2JveCA9IGZhbHNlO1xuICAgIH1cbiAgICBpZiAocGFnZU51bWJlciA8IDEgfHwgcGFnZU51bWJlciA+IHRoaXMuY29uZmlnLnBhZ2luYXRpb25Db25maWcubm9PZlBhZ2VzKSByZXR1cm47XG4gICAgdGhpcy5jb25maWcucGFnaW5hdGlvbkNvbmZpZy5zZWxlY3RlZFBhZ2UgPSBwYWdlTnVtYmVyO1xuICAgIGxldCBsZW4gPSB0aGlzLmNvbmZpZy5wYWdpbmF0aW9uQ29uZmlnLm5vT2ZQYWdlcztcbiAgICBpZiAobGVuID4gNykge1xuICAgICAgaWYgKHBhZ2VOdW1iZXIgLSAyIDw9IDEpIHtcbiAgICAgICAgdGhpcy5wYWdlcyA9IFsxLCAyLCAzLCA0LCAwLCBsZW5dO1xuICAgICAgfSBlbHNlIGlmIChwYWdlTnVtYmVyIC0gMiA+IDEgJiYgcGFnZU51bWJlciArIDIgPCBsZW4pIHtcbiAgICAgICAgdGhpcy5wYWdlcyA9IFsxLCAwLCBwYWdlTnVtYmVyIC0gMSwgcGFnZU51bWJlciwgcGFnZU51bWJlciArIDEsIDAsIGxlbl07XG4gICAgICB9IGVsc2UgaWYgKHBhZ2VOdW1iZXIgKyAyID49IGxlbikge1xuICAgICAgICB0aGlzLnBhZ2VzID0gWzEsIDAsIGxlbiAtIDMsIGxlbiAtIDIsIGxlbiAtIDEsIGxlbl07XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMucGFnZVNlbGVjdGVkLmVtaXQodGhpcy5jb25maWcucGFnaW5hdGlvbkNvbmZpZz8uc2VsZWN0ZWRQYWdlKTtcbiAgfVxuXG4gIC8vIE1haW4gY29udGFpbmVyIHJlbGF0ZWQgZnVuY3Rpb25zXG4gIGdldENvbnRhaW5lckhlaWdodCgpIHtcbiAgICBpZiAodGhpcy5jb25maWc/LmhlaWdodCkgcmV0dXJuIHRoaXMuY29uZmlnLmhlaWdodDtcbiAgICBlbHNlIHJldHVybiBcIlwiO1xuICB9XG4gIGdldENvbnRhaW5lcldpZHRoKCkge1xuICAgIGlmICh0aGlzLmNvbmZpZz8ud2lkdGgpIHJldHVybiB0aGlzLmNvbmZpZy53aWR0aDtcbiAgICBlbHNlIHJldHVybiBcIlwiO1xuICB9XG5cbiAgLy8gQ29sdW1uIEhlYWRlcnMgcmVsYXRlZCBmdW5jdGlvbnNcbiAgZ2V0Q29sSGVhZGVyc1Jvd1N0eWxlcygpIHtcbiAgICBjb25zdCB7IGNvbEhlYWRlcnNSb3dDb25maWcgfSA9IHRoaXMuY29uZmlnO1xuICAgIGNvbnN0IG1pbkhlaWdodCA9IGNvbEhlYWRlcnNSb3dDb25maWc/LmhlaWdodCB8fCBcIjQ0cHhcIjtcbiAgICBjb25zdCBib3JkZXJUb3AgPSBjb2xIZWFkZXJzUm93Q29uZmlnPy5zdHlsZT8uYm9yZGVyVG9wIHx8IFwiXCI7XG4gICAgY29uc3QgYm9yZGVyQm90dG9tID0gY29sSGVhZGVyc1Jvd0NvbmZpZz8uc3R5bGU/LmJvcmRlckJvdHRvbSB8fCBcIjFweCBzb2xpZCAjRTBFMEUwXCI7XG4gICAgY29uc3QgYmFja2dyb3VuZENvbG9yID0gY29sSGVhZGVyc1Jvd0NvbmZpZz8uc3R5bGU/LmJhY2tncm91bmRDb2xvciB8fCBcIiNGRkZGRkZcIjtcbiAgICBjb25zdCBmb250U2l6ZSA9IGNvbEhlYWRlcnNSb3dDb25maWc/LnN0eWxlPy5mb250U2l6ZSB8fCBcIjE0cHhcIjtcbiAgICByZXR1cm4ge1xuICAgICAgXCJtaW4taGVpZ2h0XCI6IG1pbkhlaWdodCxcbiAgICAgIFwiYm9yZGVyLXRvcFwiOiBib3JkZXJUb3AsXG4gICAgICBcImJvcmRlci1ib3R0b21cIjogYm9yZGVyQm90dG9tLFxuICAgICAgXCJiYWNrZ3JvdW5kLWNvbG9yXCI6IGJhY2tncm91bmRDb2xvcixcbiAgICAgIFwiZm9udC1zaXplXCI6IGZvbnRTaXplXG4gICAgfTtcbiAgfVxuXG4gIG9uU29ydENoYW5nZShzb3J0U3RhdGU6IFNvcnRTdGF0ZSkge1xuICAgIHRoaXMuY3VycmVudFNvcnQgPSBzb3J0U3RhdGU7XG4gICAgaWYgKHRoaXMuY29uZmlnLm11bHRpQ29sdW1uU29ydCkge1xuICAgICAgY29uc3QgaW5kZXggPSB0aGlzLm11bHRpQ29sdW1uU29ydC5maW5kSW5kZXgoc29ydCA9PiBzb3J0LmNvbHVtbiA9PT0gc29ydFN0YXRlLmNvbHVtbik7XG4gICAgICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgICAgIGlmIChzb3J0U3RhdGUuZGlyZWN0aW9uID09PSBudWxsKSB7XG4gICAgICAgICAgdGhpcy5tdWx0aUNvbHVtblNvcnQuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLm11bHRpQ29sdW1uU29ydFtpbmRleF0gPSBzb3J0U3RhdGU7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoc29ydFN0YXRlLmRpcmVjdGlvbiAhPT0gbnVsbCkge1xuICAgICAgICB0aGlzLm11bHRpQ29sdW1uU29ydC5wdXNoKHNvcnRTdGF0ZSk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuc29ydENoYW5nZS5lbWl0KHNvcnRTdGF0ZSk7XG4gIH1cblxuICBnZXRBY3Rpb25zQ2VsbFN0eWxlKHN0eWxlOiBhbnkpOiBhbnkge1xuICAgIGlmICghc3R5bGUpIHJldHVybiB7fTtcbiAgICBjb25zdCB7IHdpZHRoLCAuLi5yZXN0U3R5bGUgfSA9IHN0eWxlO1xuICAgIHJldHVybiByZXN0U3R5bGU7XG4gIH1cblxuICBvbkFjdGlvbkNsaWNrKGV2ZW50OiBhbnksIHJvd0luZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQuaXNDaGVja2VkKSB7XG4gICAgICB0aGlzLmFjdGl2ZVJvd0luZGV4LnB1c2gocm93SW5kZXgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmFjdGl2ZVJvd0luZGV4ID0gdGhpcy5hY3RpdmVSb3dJbmRleC5maWx0ZXIoaW5kZXggPT4gaW5kZXggIT09IHJvd0luZGV4KTtcbiAgICB9XG4gIH1cblxuICBpc1Jvd0Rpc2FibGVkKHJvdzogYW55KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHR5cGVvZiB0aGlzLmNvbmZpZy5yb3dDb25maWcuZGlzYWJsZVJvdyA9PT0gXCJmdW5jdGlvblwiID8gdGhpcy5jb25maWcucm93Q29uZmlnLmRpc2FibGVSb3cocm93KSA6IGZhbHNlO1xuICB9XG5cbiAgdG9nZ2xlQ2hlY2tib3goKSB7XG4gICAgdGhpcy5zZWxlY3RBbGxDaGVja2JveCA9ICF0aGlzLnNlbGVjdEFsbENoZWNrYm94O1xuXG4gICAgLy8gRmluZCB0aGUgY2hlY2tib3ggY29sdW1uIGluZGV4IChpZiBhbnkpXG4gICAgY29uc3QgY2hlY2tib3hDb2xJbmRleCA9IHRoaXMuY29uZmlnLmNvbEhlYWRlckNvbmZpZy5maW5kSW5kZXgoY29sID0+IGNvbC50eXBlID09PSBcImNoZWNrYm94XCIpO1xuXG4gICAgLy8gT25seSB1cGRhdGUgaWYgY2hlY2tib3ggY29sdW1uIGV4aXN0c1xuICAgIGlmIChjaGVja2JveENvbEluZGV4ICE9PSAtMSkge1xuICAgICAgdGhpcy50YWJsZURhdGEgPSB0aGlzLnRhYmxlRGF0YS5tYXAoKHJvdzogYW55W10pID0+IHtcbiAgICAgICAgY29uc3QgdXBkYXRlZFJvdyA9IFsuLi5yb3ddO1xuICAgICAgICB1cGRhdGVkUm93W2NoZWNrYm94Q29sSW5kZXhdID0gdGhpcy5zZWxlY3RBbGxDaGVja2JveDtcbiAgICAgICAgcmV0dXJuIHVwZGF0ZWRSb3c7XG4gICAgICB9KTtcbiAgICB9XG4gICAgdGhpcy5oZWFkZXJBY3Rpb24/LmVtaXQoe1xuICAgICAgdHlwZTogXCJjaGVja2JveFRvZ2dsZVwiLFxuICAgICAgcGF5bG9hZDogdGhpcy50YWJsZURhdGFcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRhYmxlQ29uZmlnIHtcbiAgaGVpZ2h0OiBzdHJpbmcgfCBcIjEwMCVcIjtcbiAgd2lkdGg6IHN0cmluZyB8IFwiMTAwJVwiO1xuICBwYWdpbmF0aW9uQ29uZmlnPzogUGFnaW5hdGlvbkNvbmZpZyB8IHVuZGVmaW5lZCB8IG51bGw7XG4gIGNvbEhlYWRlcnNSb3dDb25maWc6IFJvd0NvbmZpZyB8IHVuZGVmaW5lZCB8IG51bGw7XG4gIHJvd0NvbmZpZzogUm93Q29uZmlnIHwgdW5kZWZpbmVkIHwgbnVsbDtcbiAgY29sSGVhZGVyQ29uZmlnOiBBcnJheTxDb2xIZWFkZXJDb25maWc+O1xuICBjb2xDb25maWc6IEFycmF5PENvbENvbmZpZz47XG4gIGNhbkV4cGFuZD86IGJvb2xlYW47XG4gIGNhblNjcm9sbEhvcml6b250YWxseT86IGJvb2xlYW47XG4gIGNlbGxIb3Zlcj86IGJvb2xlYW47XG4gIGFjdGl2ZVJvd0luZGV4PzogbnVtYmVyO1xuICBtdWx0aUNvbHVtblNvcnQ/OiBib29sZWFuO1xufVxuZXhwb3J0IGludGVyZmFjZSBQYWdpbmF0aW9uQ29uZmlnIHtcbiAgbm9PZlBhZ2VzOiBudW1iZXI7XG4gIHJvd3NQZXJQYWdlOiBudW1iZXI7XG4gIHRvdGFsTm9PZlJvd3M6IG51bWJlcjtcbiAgc2VsZWN0ZWRQYWdlPzogbnVtYmVyO1xuICBkaXNhYmxlUGFnZUp1bXBpbmc/OiBib29sZWFuO1xufVxuZXhwb3J0IGludGVyZmFjZSBSb3dDb25maWcge1xuICBoZWlnaHQ/OiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsO1xuICBzdHlsZT86IHt9O1xuICBhY3Rpb24/OiBhbnk7XG4gIGRpc2FibGVSb3c/OiAoZGF0YTogYW55KSA9PiBib29sZWFuO1xufVxuZXhwb3J0IGludGVyZmFjZSBDb2xIZWFkZXJDb25maWcge1xuICB0eXBlOiBcInRleHRcIiB8IFwibnVtYmVyXCIgfCBcImN1c3RvbVwiIHwgXCJjaGVja2JveFwiO1xuICBkYXRhOiBhbnk7XG4gIGNvbXBvbmVudFJlZj86IGFueTtcbiAgZmlsdGVycz86IEFycmF5PEZpbHRlcj4gfCBudWxsO1xuICBzdHlsZT86IHt9O1xuICBhY3Rpb24/OiBhbnk7XG4gIGlzU29ydGFibGU/OiBib29sZWFuO1xuICBzb3J0QXNjSWNvbj86IHN0cmluZztcbiAgc29ydERlc2NJY29uPzogc3RyaW5nO1xufVxuZXhwb3J0IGludGVyZmFjZSBDb2xDb25maWcge1xuICB0eXBlOiBcInRleHRcIiB8IFwibnVtYmVyXCIgfCBcImN1c3RvbVwiIHwgXCJhY3Rpb25zXCI7XG4gIGNvbXBvbmVudFJlZj86IGFueTtcbiAgc3R5bGU/OiB7fTtcbiAgYWN0aW9uPzogYW55O1xuICBhY3Rpb25JdGVtcz86IEFjdGlvbkl0ZW1bXTtcbiAgYWN0aW9uVHlwZT86IFwiaW5saW5lXCIgfCBcImRyb3Bkb3duXCIgfCBcImNoZWNrYm94XCI7IC8vIGlubGluZSBmb3IgaW5kaXZpZHVhbCBpY29ucywgZHJvcGRvd24gZm9yIG1lbnUsXG4gIG1lbnVBbGlnbj86IFwibGVmdFwiIHwgXCJyaWdodFwiO1xufVxuZXhwb3J0IGludGVyZmFjZSBBY3Rpb25JdGVtIHtcbiAgbGFiZWw6IHN0cmluZztcbiAgdmFsdWU6IHN0cmluZztcbiAgaWNvbj86IHN0cmluZztcbiAgZGlzYWJsZT86IChkYXRhOiBhbnkpID0+IGJvb2xlYW47XG4gIGFjdGlvbj86IChkYXRhOiBhbnkpID0+IHZvaWQ7XG4gIGNoaWxkcmVuPzogQWN0aW9uSXRlbVtdO1xuICBzdWJtZW51QWxpZ24/OiBcImxlZnRcIiB8IFwicmlnaHRcIjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgSW50ZXJuYWxBY3Rpb25JdGVtIGV4dGVuZHMgQWN0aW9uSXRlbSB7XG4gIHNob3dTdWJtZW51PzogYm9vbGVhbjtcbn1cbiIsIjxkaXZcbiAgW25nU3R5bGVdPVwie1xuICAgIGhlaWdodDogZ2V0Q29udGFpbmVySGVpZ2h0KCksXG4gICAgd2lkdGg6IGdldENvbnRhaW5lcldpZHRoKCksXG4gICAgJ292ZXJmbG93LXgnOiBjb25maWcuY2FuU2Nyb2xsSG9yaXpvbnRhbGx5ID8gJ2F1dG8nIDogJ3Vuc2V0J1xuICB9XCJcbiAgaWQ9XCJtYWluLWNvbnRhaW5lclwiXG4+XG4gIDxtaXMtdGFibGUtZmlsdGVyXG4gICAgI2ZpbHRlclxuICAgIChmaWx0ZXJzQXBwbGllZCk9XCJ1cGRhdGVBcHBsaWVkRmlsdGVycygkZXZlbnQpXCJcbiAgICAqbmdJZj1cInNob3dGaWx0ZXJcIlxuICAgIFtjb250YWluZXJTdHlsZXNdPVwiZmlsdGVyQ29udGFpbmVyU3R5bGVzXCJcbiAgICBbZmlsdGVyc0RhdGFdPVwiZmlsdGVyRGF0YVwiXG4gID48L21pcy10YWJsZS1maWx0ZXI+XG4gIDxkaXZcbiAgICAjdGFibGVcbiAgICBpZD1cInRhYmxlLWNvbnRhaW5lclwiXG4gICAgW25nQ2xhc3NdPVwieyAnbm8tc2Nyb2xsYmFyJzogZXhwYW5kZWRJbmRleCA8IDAsIHNjcm9sbGJhcjogIShleHBhbmRlZEluZGV4IDwgMCksICdzY3JvbGwtaG9yaXpvbnRhbGx5JzogY29uZmlnLmNhblNjcm9sbEhvcml6b250YWxseSB9XCJcbiAgPlxuICAgIDxkaXZcbiAgICBbbmdTdHlsZV09XCJnZXRDb2xIZWFkZXJzUm93U3R5bGVzKClcIlxuICAgICAgaWQ9XCJjb2wtaGVhZGVycy1jb250YWluZXJcIlxuICAgID5cbiAgICAgIDxkaXZcbiAgICAgICAgI2NvbEhlYWRlclJlZlxuICAgICAgICAoY2xpY2spPVwiY29sSGVhZGVyPy5hY3Rpb24gPyBjb2xIZWFkZXI/LmFjdGlvbihjb2xIZWFkZXIpIDogbnVsbFwiXG4gICAgICAgICpuZ0Zvcj1cImxldCBjb2xIZWFkZXIgb2YgY29uZmlnPy5jb2xIZWFkZXJDb25maWdcIlxuICAgICAgICBjbGFzcz1cImNvbC1oZWFkZXJcIlxuICAgICAgICBbbmdTdHlsZV09XCJ7XG4gICAgICAgICAgd2lkdGg6IGNvbEhlYWRlcj8uc3R5bGU/LndpZHRoIHx8ICcnLFxuICAgICAgICAgIGN1cnNvcjogY29sSGVhZGVyLmFjdGlvbiA/ICdwb2ludGVyJyA6ICdkZWZhdWx0JyxcbiAgICAgICAgICAnanVzdGlmeS1jb250ZW50JzogY29sSGVhZGVyPy5zdHlsZT8uanVzdGlmeUNvbnRlbnRcbiAgICAgICAgICAgID8gY29sSGVhZGVyPy5zdHlsZT8uanVzdGlmeUNvbnRlbnRcbiAgICAgICAgICAgIDogY29sSGVhZGVyLnR5cGUgPT09ICdudW1iZXInXG4gICAgICAgICAgICA/ICdmbGV4LWVuZCdcbiAgICAgICAgICAgIDogJ3NwYWNlLWJldHdlZW4nXG4gICAgICAgIH1cIlxuICAgICAgPlxuICAgICAgICA8cCAqbmdJZj1cImNvbEhlYWRlcj8udHlwZSAhPT0gJ2N1c3RvbScgJiYgY29sSGVhZGVyPy50eXBlICE9PSAnY2hlY2tib3gnXCIgY2xhc3M9XCJjb2wtaGVhZGVyLXRleHRcIj5cbiAgICAgICAgICB7eyBjb2xIZWFkZXI/LmRhdGEgfHwgXCIgXCIgfX1cbiAgICAgICAgPC9wPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIChjbGljayk9XCJmaWx0ZXJEYXRhID0gY29sSGVhZGVyLmZpbHRlcnM7IHRvZ2dsZUZpbHRlcihjb2xIZWFkZXIuZGF0YSk7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgKm5nSWY9XCJjb2xIZWFkZXI/LnR5cGUgIT09ICdjdXN0b20nICYmIGNvbEhlYWRlcj8uZmlsdGVycyAmJiBjb2xIZWFkZXI/LmZpbHRlcnM/Lmxlbmd0aCA+IDBcIlxuICAgICAgICAgIGNsYXNzPVwiZmlsdGVyLWljb25cIlxuICAgICAgICA+XG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCJhcHBsaWVkRmlsdGVyc1tjb2xIZWFkZXIuZGF0YV0/Lmxlbmd0aCA+IDBcIiBpZD1cImZpbHRlci1hY3RpdmVcIj48L3NwYW4+XG4gICAgICAgICAgPHN2ZyBmaWxsPVwibm9uZVwiIGhlaWdodD1cIjEwXCIgdmlld0JveD1cIjAgMCAxMyAxMFwiIHdpZHRoPVwiMTNcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICBjbGlwLXJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgICAgICAgZD1cIk00Ljk3NTQ2IDEwSDcuNjQyMTNWOEg0Ljk3NTQ2VjEwWk0wLjMwODQ3MiAwVjJIMTIuMzA4NVYwSDAuMzA4NDcyWk0yLjMwODQ3IDZIMTAuMzA4NVY0SDIuMzA4NDdWNlpcIlxuICAgICAgICAgICAgICBmaWxsPVwiIzE4MUYzM1wiXG4gICAgICAgICAgICAgIGZpbGwtcnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVDaGVja2JveCgpOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgICpuZ0lmPVwiY29sSGVhZGVyPy50eXBlID09PSAnY2hlY2tib3gnXCJcbiAgICAgICAgICBjbGFzcz1cImNoZWNrYm94LWljb25cIlxuICAgICAgICA+XG4gICAgICAgICAgPG1pcy1jaGVja2JveCBbY2hlY2tlZF09XCJzZWxlY3RBbGxDaGVja2JveFwiPjwvbWlzLWNoZWNrYm94PlxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIDxzcGFuICpuZ0lmPVwiY29sSGVhZGVyPy5pc1NvcnRhYmxlICYmICFjb2xIZWFkZXI/LmZpbHRlcnNcIiBhcHBTb3J0SWNvbnNcbiAgICAgICAgICBbY29sdW1uXT1cImNvbEhlYWRlclwiXG4gICAgICAgICAgW2FjdGl2ZVNvcnRdPVwiY3VycmVudFNvcnRcIlxuICAgICAgICAgIFthY3RpdmVTb3J0c109XCJtdWx0aUNvbHVtblNvcnRcIlxuICAgICAgICAgIFttdWx0aUNvbHVtblNvcnRdPVwiY29uZmlnLm11bHRpQ29sdW1uU29ydFwiXG4gICAgICAgICAgKHNvcnRDaGFuZ2UpPVwib25Tb3J0Q2hhbmdlKCRldmVudClcIlxuICAgICAgICAgIGNsYXNzPVwic29ydC1pY29uXCI+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDxuZy10ZW1wbGF0ZSAqbmdJZj1cImNvbEhlYWRlcj8udHlwZSA9PT0gJ2N1c3RvbSdcIiBjdXN0b21UYWJsZUNlbGwgW2N1c3RvbUNvbXBvbmVudF09XCJjb2xIZWFkZXI/LmNvbXBvbmVudFJlZlwiIFtkYXRhXT1cImNvbEhlYWRlci5kYXRhXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgaWQ9XCJkYXRhLWNvbnRhaW5lclwiPlxuICAgICAgPGRpdiBjbGFzcz1cInJvdy13cmFwcGVyXCIgKm5nRm9yPVwibGV0IHJvdyBvZiB0YWJsZURhdGE7IGxldCBpID0gaW5kZXg7IGxldCByb3dJbmRleCA9IGluZGV4XCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cInQtcm93XCJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7ICd0LXJvdy1ob3Zlcic6IGNvbmZpZy5jZWxsSG92ZXIsICdhY3RpdmUtcm93JzogYWN0aXZlUm93SW5kZXguaW5jbHVkZXMoaSkgfVwiXG4gICAgICAgICAgW25nU3R5bGVdPVwieyAnbWluLWhlaWdodCc6IGNvbmZpZz8ucm93Q29uZmlnPy5oZWlnaHQgPyBjb25maWcucm93Q29uZmlnLmhlaWdodCA6ICc0NHB4JyB9XCJcbiAgICAgICAgICAoY2xpY2spPVwic2VsZWN0Um93KGkpXCJcbiAgICAgICAgICBbY2xhc3MuZGlzYWJsZWQtcm93XT1cImlzUm93RGlzYWJsZWQocm93KVwiXG4gICAgICAgICAgPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIChjbGljayk9XCJjb25maWc/LmNvbENvbmZpZ1tpXT8uYWN0aW9uID8gY29uZmlnPy5jb2xDb25maWdbaV0/LmFjdGlvbihjb2wpIDogbnVsbFwiXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgY29sIG9mIHJvdzsgbGV0IGkgPSBpbmRleFwiXG4gICAgICAgICAgICBbbmdTdHlsZV09XCJ7XG4gICAgICAgICAgICAgIHdpZHRoOiBjb25maWc/LmNvbENvbmZpZ1tpXT8uc3R5bGU/LndpZHRoIHx8IGNvbmZpZz8uY29sSGVhZGVyQ29uZmlnW2ldPy5zdHlsZT8ud2lkdGggfHwgJydcbiAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgY2xhc3M9XCJ0LWNvbC1jb250YWluZXJcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAndC1jb2wtY29udGFpbmVyLWhvdmVyJzogY29uZmlnLmNlbGxIb3ZlciB9XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwidC1jb2xcIlxuICAgICAgICAgICAgICBbc3R5bGVdPVwiY29uZmlnLmNvbENvbmZpZ1tpXT8uc3R5bGVcIlxuICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7XG4gICAgICAgICAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgICAgICAgICBjdXJzb3I6IGNvbmZpZy5jb2xDb25maWdbaV0/LmFjdGlvbiA/ICdwb2ludGVyJyA6ICdkZWZhdWx0JyxcbiAgICAgICAgICAgICAgICAnanVzdGlmeS1jb250ZW50JzogY29uZmlnLmNvbENvbmZpZ1tpXT8uc3R5bGU/Lmp1c3RpZnlDb250ZW50XG4gICAgICAgICAgICAgICAgICA/IGNvbmZpZy5jb2xDb25maWdbaV0/LnN0eWxlPy5qdXN0aWZ5Q29udGVudFxuICAgICAgICAgICAgICAgICAgOiBjb25maWcuY29sQ29uZmlnW2ldPy50eXBlID09PSAnbnVtYmVyJ1xuICAgICAgICAgICAgICAgICAgPyAnZmxleC1lbmQnXG4gICAgICAgICAgICAgICAgICA6ICdzcGFjZS1iZXR3ZWVuJ1xuICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHBcbiAgICAgICAgICAgICAgICAqbmdJZj1cImNvbmZpZy5jb2xDb25maWdbaV0/LnR5cGUgIT09ICdjdXN0b20nICYmIGNvbmZpZy5jb2xDb25maWdbaV0/LnR5cGUgIT09ICdhY3Rpb25zJ1wiXG4gICAgICAgICAgICAgICAgW25nU3R5bGVdPVwie1xuICAgICAgICAgICAgICAgICAgY29sb3I6IGNvbmZpZz8uY29sQ29uZmlnW2ldPy5zdHlsZT8uY29sb3IgPyBjb25maWc/LmNvbENvbmZpZ1tpXT8uc3R5bGU/LmNvbG9yIDogJydcbiAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J3RleHQtZWxsaXBzaXMnOiAhIWNvbmZpZz8uY29sQ29uZmlnW2ldPy5zdHlsZT8udGV4dEVsbGlwc2lzfVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ0LWNvbC10ZXh0XCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7IGNvbCB9fVxuICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICAgICpuZ0lmPVwiY29uZmlnLmNvbENvbmZpZ1tpXT8udHlwZSA9PT0gJ2N1c3RvbSdcIlxuICAgICAgICAgICAgICAgIFtjdXN0b21Db21wb25lbnRdPVwiY29uZmlnLmNvbENvbmZpZ1tpXS5jb21wb25lbnRSZWZcIlxuICAgICAgICAgICAgICAgIFtkYXRhXT1cImNvbFwiXG4gICAgICAgICAgICAgICAgY3VzdG9tVGFibGVDZWxsXG4gICAgICAgICAgICAgID48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDxtaXMtYWN0aW9ucy1jZWxsXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbmZpZy5jb2xDb25maWdbaV0/LnR5cGUgPT09ICdhY3Rpb25zJ1wiXG4gICAgICAgICAgICAgICAgICBbZGF0YV09XCJjb2xcIlxuICAgICAgICAgICAgICAgICAgW2NvbmZpZ109XCJjb25maWcuY29sQ29uZmlnW2ldXCJcbiAgICAgICAgICAgICAgICAgIFtpc0NoZWNrZWRdPVwiY29sXCJcbiAgICAgICAgICAgICAgICAgIChhY3Rpb25DbGljayk9XCJvbkFjdGlvbkNsaWNrKCRldmVudCwgcm93SW5kZXgpXCJcbiAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAgICAgJ2Rpc2FibGUtYWN0aW9ucyc6IGNvbmZpZy5jb2xDb25maWdbaV0/LmFjdGlvblR5cGUgPT09ICdjaGVja2JveCcgJiYgaXNSb3dEaXNhYmxlZChyb3cpXG4gICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICA+PC9taXMtYWN0aW9ucy1jZWxsPlxuXG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJjb25maWc/LmNhbkV4cGFuZCAmJiBleHBhbmRlZEluZGV4ID09PSBpXCIgY2xhc3M9XCJzdWItcm93XCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInN1YlRhYmxlRGF0YUxvYWRpbmdcIj5cbiAgICAgICAgICAgIDxkaXYgW25nU3R5bGVdPVwie1xuICAgICAgICAgICAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgICAgICAgICAgIHBhZGRpbmc6ICcxNnB4J1xuICAgICAgICAgICAgfVwiPlxuICAgICAgICAgICAgICBMb2FkaW5nLi4uXG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICBcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXN1YlRhYmxlRGF0YUxvYWRpbmcgJiYgc3ViVGFibGVEYXRhLmxlbmd0aCA9PT0gMFwiPlxuICAgICAgICAgICAgPGRpdiBbbmdTdHlsZV09XCJ7XG4gICAgICAgICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInLFxuICAgICAgICAgICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgcGFkZGluZzogJzE2cHgnXG4gICAgICAgICAgICB9XCI+XG4gICAgICAgICAgICAgIE5vIERhdGEgQXZhaWxhYmxlLi4uXG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICBcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXN1YlRhYmxlRGF0YUxvYWRpbmcgJiYgc3ViVGFibGVEYXRhLmxlbmd0aCA+IDBcIj5cbiAgICAgICAgICAgIDxzdWItdGFibGUgW2NvbmZpZ109XCJzdWJUYWJsZWNvbmZpZ1wiIFt0YWJsZURhdGFdPVwic3ViVGFibGVEYXRhXCI+PC9zdWItdGFibGU+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2XG4gICAgKm5nSWY9XCJjb25maWc/LnBhZ2luYXRpb25Db25maWcgJiYgKHRhYmxlTGVuZ3RoID49IGNvbmZpZy5wYWdpbmF0aW9uQ29uZmlnLnJvd3NQZXJQYWdlIHx8IGNvbmZpZy5wYWdpbmF0aW9uQ29uZmlnPy5zZWxlY3RlZFBhZ2UgIT09IDEpXCJcbiAgICBpZD1cInBhZ2luYXRpb24tY29udGFpbmVyXCJcbiAgPlxuICAgIDxwIGlkPVwicGFnaW5hdGlvbi10ZXh0XCI+XG4gICAgICBTaG93aW5nXG4gICAgICB7eyAoY29uZmlnLnBhZ2luYXRpb25Db25maWc/LnNlbGVjdGVkUGFnZSAtIDEpICogY29uZmlnLnBhZ2luYXRpb25Db25maWcucm93c1BlclBhZ2UgKyAxIH19LXt7XG4gICAgICAgIChjb25maWcucGFnaW5hdGlvbkNvbmZpZz8uc2VsZWN0ZWRQYWdlIC0gMSkgKiBjb25maWcucGFnaW5hdGlvbkNvbmZpZy5yb3dzUGVyUGFnZSArIHRhYmxlTGVuZ3RoXG4gICAgICB9fVxuICAgICAgb2Yge3sgY29uZmlnLnBhZ2luYXRpb25Db25maWcudG90YWxOb09mUm93cyB9fSBpdGVtc1xuICAgIDwvcD5cbiAgICA8ZGl2IGlkPVwicGFnZXMtY29udGFpbmVyXCI+XG4gICAgICA8c3BhbiAgIChjbGljayk9XCJjb25maWcucGFnaW5hdGlvbkNvbmZpZz8uc2VsZWN0ZWRQYWdlID4gMSAmJiB1cGRhdGVTZWxlY3RlZFBhZ2UoY29uZmlnLnBhZ2luYXRpb25Db25maWc/LnNlbGVjdGVkUGFnZSAtIDEpXCIgY2xhc3M9XCJwYWdlXCIgW2NsYXNzLnBhZ2UtbmF2LWluYWN0aXZlXT1cImNvbmZpZy5wYWdpbmF0aW9uQ29uZmlnPy5zZWxlY3RlZFBhZ2UgPT09IDFcIj5cbiAgICAgICAgPHN2ZyBmaWxsPVwibm9uZVwiIGhlaWdodD1cIjEwXCIgdmlld0JveD1cIjAgMCA3IDEwXCIgd2lkdGg9XCI3XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICBjbGlwLXJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgICAgIGQ9XCJNMC44NTc0MDUgNS41NjI5NUMwLjg1NTc5NCA1LjU2MTM5IDAuODU0MTg4IDUuNTU5ODIgMC44NTI1ODggNS41NTgyNEMwLjY5NTk1NSA1LjQwNDA4IDAuNjE3NjQxIDUuMjAyMDMgMC42MTc2NDcgNC45OTk5OEMwLjYxNzY0MSA0Ljc5NzkzIDAuNjk1OTU1IDQuNTk1ODggMC44NTI1ODggNC40NDE3MkMwLjg1NDE4OCA0LjQ0MDE0IDAuODU1Nzk0IDQuNDM4NTggMC44NTc0MDQgNC40MzcwMkw1LjEzMDY2IDAuMjMxMjMxQzUuNDQzOTIgLTAuMDc3MDc3MSA1Ljk1MTggLTAuMDc3MDc3MSA2LjI2NTA2IDAuMjMxMjMxQzYuNTc4MzEgMC41Mzk1NCA2LjU3ODMxIDEuMDM5NDEgNi4yNjUwNiAxLjM0NzcyTDIuNTU0MiA0Ljk5OTk4TDYuMjY1MDYgOC42NTIyNUM2LjU3ODMxIDguOTYwNTUgNi41NzgzMSA5LjQ2MDQyIDYuMjY1MDYgOS43Njg3M0M1Ljk1MTggMTAuMDc3IDUuNDQzOTIgMTAuMDc3IDUuMTMwNjYgOS43Njg3M0wwLjg1NzQwNSA1LjU2Mjk1WlwiXG4gICAgICAgICAgICBmaWxsPVwiIzE4MUYzM1wiXG4gICAgICAgICAgICBmaWxsLXJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L3N2Zz5cbiAgICAgIDwvc3Bhbj5cbiAgICAgICAgPCEtLSBQYWdlIG51bWJlcnMgKG9ubHkgc2hvdyBpZiBkaXNhYmxlUGFnZUp1bXBpbmcgaXMgZmFsc2UpIC0tPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWNvbmZpZy5wYWdpbmF0aW9uQ29uZmlnPy5kaXNhYmxlUGFnZUp1bXBpbmdcIj5cbiAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBwYWdlTnVtYmVyIG9mIHBhZ2VzXCI+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAoY2xpY2spPVwidXBkYXRlU2VsZWN0ZWRQYWdlKHBhZ2VOdW1iZXIpXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJwYWdlTnVtYmVyICE9IDBcIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdwYWdlLWFjdGl2ZSc6IHBhZ2VOdW1iZXIgPT0gY29uZmlnLnBhZ2luYXRpb25Db25maWc/LnNlbGVjdGVkUGFnZSB9XCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJwYWdlIHBhZ2UtanVtcGluZy1lbmFibGVkXCJcbiAgICAgICAgICAgID57eyBwYWdlTnVtYmVyIH19PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJwYWdlTnVtYmVyID09IDBcIiBjbGFzcz1cInBhZ2Utc2VwZXJhdG9yXCI+XG4gICAgICAgICAgICAgIDxkaXYgW25nU3R5bGVdPVwieyBkaXNwbGF5OiAnZmxleCcgfVwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZG90XCIgW25nU3R5bGVdPVwieyAnbWFyZ2luLXJpZ2h0JzogJzRweCcgfVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRvdFwiIFtuZ1N0eWxlXT1cInsgJ21hcmdpbi1yaWdodCc6ICc0cHgnIH1cIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkb3RcIj48L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PiAgICAgICAgICBcbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgXG4gICAgICA8c3BhbiBbY2xhc3MucGFnZS1uYXYtaW5hY3RpdmVdPVwiY29uZmlnLnBhZ2luYXRpb25Db25maWc/LnNlbGVjdGVkUGFnZSA9PT0gY29uZmlnLnBhZ2luYXRpb25Db25maWc/Lm5vT2ZQYWdlc1wiXG4gICAgICAoY2xpY2spPVwiY29uZmlnLnBhZ2luYXRpb25Db25maWc/LnNlbGVjdGVkUGFnZSA8IGNvbmZpZy5wYWdpbmF0aW9uQ29uZmlnPy5ub09mUGFnZXMgJiYgdXBkYXRlU2VsZWN0ZWRQYWdlKGNvbmZpZy5wYWdpbmF0aW9uQ29uZmlnPy5zZWxlY3RlZFBhZ2UgKyAxKVwiIGNsYXNzPVwicGFnZVwiPlxuICAgICAgICA8c3ZnIGZpbGw9XCJub25lXCIgaGVpZ2h0PVwiMTBcIiB2aWV3Qm94PVwiMCAwIDcgMTBcIiB3aWR0aD1cIjdcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgIGNsaXAtcnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICAgICAgZD1cIk02LjE0MjYgNS41NjI5NUM2LjE0NDIxIDUuNTYxMzkgNi4xNDU4MSA1LjU1OTgyIDYuMTQ3NDEgNS41NTgyNEM2LjMwNDA1IDUuNDA0MDggNi4zODIzNiA1LjIwMjAzIDYuMzgyMzYgNC45OTk5OEM2LjM4MjM2IDQuNzk3OTMgNi4zMDQwNSA0LjU5NTg4IDYuMTQ3NDEgNC40NDE3MkM2LjE0NTgxIDQuNDQwMTQgNi4xNDQyMSA0LjQzODU4IDYuMTQyNiA0LjQzNzAyTDEuODY5MzQgMC4yMzEyMzFDMS41NTYwOCAtMC4wNzcwNzcxIDEuMDQ4MiAtMC4wNzcwNzcxIDAuNzM0OTQyIDAuMjMxMjMxQzAuNDIxNjg4IDAuNTM5NTQgMC40MjE2ODggMS4wMzk0MSAwLjczNDk0MiAxLjM0NzcyTDQuNDQ1OCA0Ljk5OTk4TDAuNzM0OTQxIDguNjUyMjVDMC40MjE2ODYgOC45NjA1NSAwLjQyMTY4NiA5LjQ2MDQyIDAuNzM0OTQxIDkuNzY4NzNDMS4wNDgyIDEwLjA3NyAxLjU1NjA4IDEwLjA3NyAxLjg2OTM0IDkuNzY4NzNMNi4xNDI2IDUuNTYyOTVaXCJcbiAgICAgICAgICAgIGZpbGw9XCIjMTgxRjMzXCJcbiAgICAgICAgICAgIGZpbGwtcnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvc3ZnPlxuICAgICAgPC9zcGFuPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19