mis-crystal-design-system 18.0.25 → 18.1.0-signal-test

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 (185) hide show
  1. package/action-list/action-list.component.d.ts +17 -15
  2. package/async-search-dropdown/async-dropdown.component.d.ts +43 -61
  3. package/button/button.component.d.ts +35 -13
  4. package/button/button.directive.d.ts +10 -8
  5. package/button/button.directive.scss +13 -15
  6. package/checkbox/checkbox.component.d.ts +15 -12
  7. package/chip/chip.component.d.ts +9 -11
  8. package/datepicker_v2/models/dp-config.model.d.ts +1 -0
  9. package/datepicker_v2/tz-datepicker.directive.d.ts +15 -18
  10. package/datepicker_v2/tz-dp-container/tz-dp-container.component.d.ts +42 -21
  11. package/daterangepicker_v2/tz-daterangepicker.directive.d.ts +12 -14
  12. package/daterangepicker_v2/tz-drp-container/tz-drp-container.component.d.ts +46 -23
  13. package/drawer/drawer-body/drawer-body.component.d.ts +2 -2
  14. package/drawer/drawer.scss +1 -1
  15. package/dropdown/calculate-container-height.directive.d.ts +7 -8
  16. package/dropdown/dropdown.component.d.ts +41 -49
  17. package/dynamic-form/dynamic-form.component.d.ts +20 -16
  18. package/esm2022/action-list/action-list.component.mjs +113 -90
  19. package/esm2022/async-search-dropdown/async-dropdown.component.mjs +257 -327
  20. package/esm2022/button/button.component.mjs +56 -49
  21. package/esm2022/button/button.directive.mjs +36 -40
  22. package/esm2022/checkbox/checkbox.component.mjs +75 -70
  23. package/esm2022/chip/chip.component.mjs +20 -33
  24. package/esm2022/datepicker_v2/models/dp-config.model.mjs +1 -1
  25. package/esm2022/datepicker_v2/tz-datepicker.directive.mjs +42 -71
  26. package/esm2022/datepicker_v2/tz-dp-container/tz-dp-container.component.mjs +203 -173
  27. package/esm2022/datepicker_v2/utils/index.mjs +2 -1
  28. package/esm2022/daterangepicker_v2/tz-daterangepicker.directive.mjs +26 -51
  29. package/esm2022/daterangepicker_v2/tz-drp-container/tz-drp-container.component.mjs +283 -236
  30. package/esm2022/drawer/drawer-body/drawer-body.component.mjs +8 -7
  31. package/esm2022/dropdown/calculate-container-height.directive.mjs +25 -22
  32. package/esm2022/dropdown/dropdown.component.mjs +163 -187
  33. package/esm2022/dynamic-form/dynamic-form.component.mjs +119 -73
  34. package/esm2022/fab/fab.component.mjs +30 -34
  35. package/esm2022/filter/filter-panel/filter-panel.component.mjs +61 -59
  36. package/esm2022/input/directives/input/input.directive.mjs +22 -26
  37. package/esm2022/input/mis-input.component.mjs +42 -46
  38. package/esm2022/input-stepper/input-stepper/input-stepper.component.mjs +42 -52
  39. package/esm2022/loader/loader.component.mjs +8 -11
  40. package/esm2022/mobile-filter/mobile-filter.component.mjs +62 -62
  41. package/esm2022/modal/module-wrapper/module-wrapper.component.mjs +11 -9
  42. package/esm2022/multi-select-dropdown/multi-select-dropdown.component.mjs +235 -281
  43. package/esm2022/nested-multi-select-dropdown/nested-multi-select-dropdown.component.mjs +250 -287
  44. package/esm2022/phone-input/phone-input.component.mjs +21 -43
  45. package/esm2022/public-api.mjs +1 -1
  46. package/esm2022/radio-button/radio-button.component.mjs +15 -27
  47. package/esm2022/ske-loader/ske-loader.component.mjs +15 -29
  48. package/esm2022/slider/slider.component.mjs +23 -33
  49. package/esm2022/slider/slider.module.mjs +4 -11
  50. package/esm2022/snackbar/snackbar/snackbar.component.mjs +21 -15
  51. package/esm2022/snackbar/snackbar.service.mjs +3 -2
  52. package/esm2022/specificdatepicker/tz-sdp-container/tz-sdp-container.component.mjs +231 -344
  53. package/esm2022/specificdatepicker/tz-specificdatepicker.directive.mjs +77 -105
  54. package/esm2022/star-rating/star-rating.component.mjs +58 -72
  55. package/esm2022/switch/switch.component.mjs +34 -36
  56. package/esm2022/table/actions-cell/actions-cell.component.mjs +56 -55
  57. package/esm2022/table/custom-table-cell.directive.mjs +22 -18
  58. package/esm2022/table/filter/filter.component.mjs +60 -42
  59. package/esm2022/table/sort-icons.directive.mjs +16 -8
  60. package/esm2022/table/sub-table/sub-table.component.mjs +42 -45
  61. package/esm2022/table/table.component.mjs +182 -166
  62. package/esm2022/timepicker/timepicker.component.mjs +245 -160
  63. package/esm2022/timepicker/timepicker.directive.mjs +3 -2
  64. package/esm2022/timerangepicker/timerangepicker.component.mjs +200 -159
  65. package/esm2022/toast/toast.component.mjs +7 -8
  66. package/esm2022/toast/toast.data.service.mjs +15 -9
  67. package/esm2022/tooltip/tooltip-container/tooltip.component.mjs +12 -12
  68. package/esm2022/tooltip/tooltip.directive.mjs +4 -4
  69. package/esm2022/virtual-scroll/virtual-scroll.component.mjs +57 -59
  70. package/fab/fab.component.d.ts +12 -8
  71. package/fesm2022/mis-crystal-design-system-action-list.mjs +112 -89
  72. package/fesm2022/mis-crystal-design-system-action-list.mjs.map +1 -1
  73. package/fesm2022/mis-crystal-design-system-async-search-dropdown.mjs +254 -325
  74. package/fesm2022/mis-crystal-design-system-async-search-dropdown.mjs.map +1 -1
  75. package/fesm2022/mis-crystal-design-system-button.mjs +89 -86
  76. package/fesm2022/mis-crystal-design-system-button.mjs.map +1 -1
  77. package/fesm2022/mis-crystal-design-system-checkbox.mjs +74 -69
  78. package/fesm2022/mis-crystal-design-system-checkbox.mjs.map +1 -1
  79. package/fesm2022/mis-crystal-design-system-chip.mjs +19 -32
  80. package/fesm2022/mis-crystal-design-system-chip.mjs.map +1 -1
  81. package/fesm2022/mis-crystal-design-system-datepicker_v2.mjs +243 -241
  82. package/fesm2022/mis-crystal-design-system-datepicker_v2.mjs.map +1 -1
  83. package/fesm2022/mis-crystal-design-system-daterangepicker_v2.mjs +306 -284
  84. package/fesm2022/mis-crystal-design-system-daterangepicker_v2.mjs.map +1 -1
  85. package/fesm2022/mis-crystal-design-system-drawer.mjs +7 -6
  86. package/fesm2022/mis-crystal-design-system-drawer.mjs.map +1 -1
  87. package/fesm2022/mis-crystal-design-system-dropdown.mjs +184 -205
  88. package/fesm2022/mis-crystal-design-system-dropdown.mjs.map +1 -1
  89. package/fesm2022/mis-crystal-design-system-dynamic-form.mjs +119 -73
  90. package/fesm2022/mis-crystal-design-system-dynamic-form.mjs.map +1 -1
  91. package/fesm2022/mis-crystal-design-system-fab.mjs +29 -33
  92. package/fesm2022/mis-crystal-design-system-fab.mjs.map +1 -1
  93. package/fesm2022/mis-crystal-design-system-filter.mjs +60 -58
  94. package/fesm2022/mis-crystal-design-system-filter.mjs.map +1 -1
  95. package/fesm2022/mis-crystal-design-system-input-stepper.mjs +41 -51
  96. package/fesm2022/mis-crystal-design-system-input-stepper.mjs.map +1 -1
  97. package/fesm2022/mis-crystal-design-system-input.mjs +62 -71
  98. package/fesm2022/mis-crystal-design-system-input.mjs.map +1 -1
  99. package/fesm2022/mis-crystal-design-system-loader.mjs +7 -10
  100. package/fesm2022/mis-crystal-design-system-loader.mjs.map +1 -1
  101. package/fesm2022/mis-crystal-design-system-mobile-filter.mjs +61 -61
  102. package/fesm2022/mis-crystal-design-system-mobile-filter.mjs.map +1 -1
  103. package/fesm2022/mis-crystal-design-system-modal.mjs +10 -8
  104. package/fesm2022/mis-crystal-design-system-modal.mjs.map +1 -1
  105. package/fesm2022/mis-crystal-design-system-multi-select-dropdown.mjs +233 -279
  106. package/fesm2022/mis-crystal-design-system-multi-select-dropdown.mjs.map +1 -1
  107. package/fesm2022/mis-crystal-design-system-nested-multi-select-dropdown.mjs +249 -286
  108. package/fesm2022/mis-crystal-design-system-nested-multi-select-dropdown.mjs.map +1 -1
  109. package/fesm2022/mis-crystal-design-system-phone-input.mjs +20 -42
  110. package/fesm2022/mis-crystal-design-system-phone-input.mjs.map +1 -1
  111. package/fesm2022/mis-crystal-design-system-radio-button.mjs +14 -26
  112. package/fesm2022/mis-crystal-design-system-radio-button.mjs.map +1 -1
  113. package/fesm2022/mis-crystal-design-system-ske-loader.mjs +14 -28
  114. package/fesm2022/mis-crystal-design-system-ske-loader.mjs.map +1 -1
  115. package/fesm2022/mis-crystal-design-system-slider.mjs +25 -42
  116. package/fesm2022/mis-crystal-design-system-slider.mjs.map +1 -1
  117. package/fesm2022/mis-crystal-design-system-snackbar.mjs +22 -15
  118. package/fesm2022/mis-crystal-design-system-snackbar.mjs.map +1 -1
  119. package/fesm2022/mis-crystal-design-system-specificdatepicker.mjs +305 -446
  120. package/fesm2022/mis-crystal-design-system-specificdatepicker.mjs.map +1 -1
  121. package/fesm2022/mis-crystal-design-system-star-rating.mjs +57 -71
  122. package/fesm2022/mis-crystal-design-system-star-rating.mjs.map +1 -1
  123. package/fesm2022/mis-crystal-design-system-switch.mjs +33 -35
  124. package/fesm2022/mis-crystal-design-system-switch.mjs.map +1 -1
  125. package/fesm2022/mis-crystal-design-system-table.mjs +368 -324
  126. package/fesm2022/mis-crystal-design-system-table.mjs.map +1 -1
  127. package/fesm2022/mis-crystal-design-system-timepicker.mjs +246 -160
  128. package/fesm2022/mis-crystal-design-system-timepicker.mjs.map +1 -1
  129. package/fesm2022/mis-crystal-design-system-timerangepicker.mjs +199 -158
  130. package/fesm2022/mis-crystal-design-system-timerangepicker.mjs.map +1 -1
  131. package/fesm2022/mis-crystal-design-system-toast.mjs +19 -14
  132. package/fesm2022/mis-crystal-design-system-toast.mjs.map +1 -1
  133. package/fesm2022/mis-crystal-design-system-tooltip.mjs +14 -14
  134. package/fesm2022/mis-crystal-design-system-tooltip.mjs.map +1 -1
  135. package/fesm2022/mis-crystal-design-system-virtual-scroll.mjs +57 -59
  136. package/fesm2022/mis-crystal-design-system-virtual-scroll.mjs.map +1 -1
  137. package/fesm2022/mis-crystal-design-system.mjs.map +1 -1
  138. package/filter/filter-panel/filter-panel.component.d.ts +14 -14
  139. package/input/directives/input/input.directive.d.ts +6 -10
  140. package/input/mis-input.component.d.ts +12 -13
  141. package/input/mis-input.component.scss +18 -18
  142. package/input-stepper/input-stepper/input-stepper.component.d.ts +8 -7
  143. package/loader/loader.component.d.ts +3 -6
  144. package/mobile-filter/mobile-filter.component.d.ts +15 -15
  145. package/modal/modal.scss +1 -1
  146. package/modal/module-wrapper/module-wrapper.component.d.ts +2 -3
  147. package/multi-select-dropdown/multi-select-dropdown.component.d.ts +89 -51
  148. package/nested-multi-select-dropdown/nested-multi-select-dropdown.component.d.ts +99 -56
  149. package/package.json +17 -23
  150. package/phone-input/phone-input.component.d.ts +16 -18
  151. package/radio-button/radio-button.component.d.ts +9 -11
  152. package/ske-loader/ske-loader.component.d.ts +8 -11
  153. package/slider/slider.component.d.ts +8 -11
  154. package/slider/slider.module.d.ts +1 -2
  155. package/snackbar/snackbar/snackbar.component.d.ts +3 -3
  156. package/specificdatepicker/tz-sdp-container/tz-sdp-container.component.d.ts +35 -35
  157. package/specificdatepicker/tz-specificdatepicker.directive.d.ts +24 -28
  158. package/star-rating/star-rating.component.d.ts +18 -18
  159. package/styles/mis-color-constants.scss +0 -204
  160. package/styles/mis-icons.scss +56 -56
  161. package/styles/mis-old-icon-styles.scss +21 -21
  162. package/switch/switch.component.d.ts +8 -10
  163. package/table/actions-cell/actions-cell.component.d.ts +14 -14
  164. package/table/custom-table-cell.directive.d.ts +3 -3
  165. package/table/filter/filter.component.d.ts +9 -9
  166. package/table/sub-table/sub-table.component.d.ts +5 -5
  167. package/table/table.component.d.ts +38 -35
  168. package/timepicker/timepicker.component.d.ts +29 -28
  169. package/timerangepicker/timerangepicker.component.d.ts +36 -33
  170. package/toast/toast.data.service.d.ts +1 -1
  171. package/tooltip/tooltip-container/tooltip.component.d.ts +4 -4
  172. package/virtual-scroll/virtual-scroll.component.d.ts +8 -9
  173. package/dynamic-theme/branding.types.d.ts +0 -84
  174. package/dynamic-theme/dynamic-theme.module.d.ts +0 -9
  175. package/dynamic-theme/dynamic-theme.service.d.ts +0 -89
  176. package/dynamic-theme/index.d.ts +0 -1
  177. package/dynamic-theme/public_api.d.ts +0 -3
  178. package/esm2022/dynamic-theme/branding.types.mjs +0 -93
  179. package/esm2022/dynamic-theme/dynamic-theme.module.mjs +0 -25
  180. package/esm2022/dynamic-theme/dynamic-theme.service.mjs +0 -193
  181. package/esm2022/dynamic-theme/index.mjs +0 -2
  182. package/esm2022/dynamic-theme/mis-crystal-design-system-dynamic-theme.mjs +0 -5
  183. package/esm2022/dynamic-theme/public_api.mjs +0 -4
  184. package/fesm2022/mis-crystal-design-system-dynamic-theme.mjs +0 -313
  185. package/fesm2022/mis-crystal-design-system-dynamic-theme.mjs.map +0 -1
@@ -1,12 +1,11 @@
1
- import { ConnectionPositionPair, OverlayConfig } from "@angular/cdk/overlay";
2
- import { TemplatePortal } from "@angular/cdk/portal";
3
- import { Component, EventEmitter, Input, Output, ViewChild } from "@angular/core";
1
+ import { Component, ElementRef, ViewChild, ViewContainerRef, computed, effect, signal, inject, input, output } from '@angular/core';
2
+ import { TemplatePortal } from '@angular/cdk/portal';
3
+ import { Overlay, ConnectionPositionPair, OverlayConfig, } from '@angular/cdk/overlay';
4
4
  import * as i0 from "@angular/core";
5
- import * as i1 from "@angular/cdk/overlay";
6
- import * as i2 from "@angular/common";
7
- import * as i3 from "@angular/forms";
8
- import * as i4 from "mis-crystal-design-system/checkbox";
9
- import * as i5 from "mis-crystal-design-system/button";
5
+ import * as i1 from "@angular/common";
6
+ import * as i2 from "@angular/forms";
7
+ import * as i3 from "mis-crystal-design-system/checkbox";
8
+ import * as i4 from "mis-crystal-design-system/button";
10
9
  const _c0 = ["select"];
11
10
  const _c1 = ["popupContainer"];
12
11
  const _c2 = (a0, a1) => ({ height: a0, width: a1 });
@@ -23,7 +22,7 @@ function NestedMultiSelectDropdownComponent_p_6_Template(rf, ctx) { if (rf & 1)
23
22
  } if (rf & 2) {
24
23
  const ctx_r1 = i0.ɵɵnextContext();
25
24
  i0.ɵɵadvance();
26
- i0.ɵɵtextInterpolate1(" ", ctx_r1.selectedCount, " ");
25
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.selectedCount(), " ");
27
26
  } }
28
27
  function NestedMultiSelectDropdownComponent_ng_template_9_div_1__svg_svg_1_Template(rf, ctx) { if (rf & 1) {
29
28
  i0.ɵɵnamespaceSVG();
@@ -51,11 +50,11 @@ function NestedMultiSelectDropdownComponent_ng_template_9_div_1_Template(rf, ctx
51
50
  } if (rf & 2) {
52
51
  const ctx_r1 = i0.ɵɵnextContext(2);
53
52
  i0.ɵɵadvance();
54
- i0.ɵɵproperty("ngIf", !ctx_r1.isSearchInputFocused);
53
+ i0.ɵɵproperty("ngIf", !ctx_r1.isSearchInputFocused());
55
54
  i0.ɵɵadvance();
56
- i0.ɵɵproperty("ngModel", ctx_r1.searchInput)("ngStyle", i0.ɵɵpureFunction3(5, _c6, ctx_r1.isSearchInputFocused ? "12px" : "45px", ctx_r1.isSearchInputFocused ? "1px solid #0937B2" : "1px solid #e0e0e0", ctx_r1.isSearchInputFocused ? "45px" : "10px"))("placeholder", ctx_r1.isSearchInputFocused ? "" : "Search Keyword");
55
+ i0.ɵɵproperty("ngModel", ctx_r1.searchInput())("ngStyle", i0.ɵɵpureFunction3(5, _c6, ctx_r1.isSearchInputFocused() ? "12px" : "45px", ctx_r1.isSearchInputFocused() ? "1px solid #0937B2" : "1px solid #e0e0e0", ctx_r1.isSearchInputFocused() ? "45px" : "10px"))("placeholder", ctx_r1.isSearchInputFocused() ? "" : ctx_r1.searchInputPlaceholder());
57
56
  i0.ɵɵadvance();
58
- i0.ɵɵproperty("ngIf", ctx_r1.isSearchInputFocused);
57
+ i0.ɵɵproperty("ngIf", ctx_r1.isSearchInputFocused());
59
58
  } }
60
59
  function NestedMultiSelectDropdownComponent_ng_template_9_div_3_div_7_Template(rf, ctx) { if (rf & 1) {
61
60
  i0.ɵɵelementStart(0, "div", 31);
@@ -138,7 +137,7 @@ function NestedMultiSelectDropdownComponent_ng_template_9_div_4_Template(rf, ctx
138
137
  } if (rf & 2) {
139
138
  const ctx_r1 = i0.ɵɵnextContext(2);
140
139
  i0.ɵɵadvance();
141
- i0.ɵɵtextInterpolate1(" ", ctx_r1.searchInput === "" ? ctx_r1.noDataMessage : "No results", " ");
140
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.searchInput() === "" ? ctx_r1.noDataMessage() : "No results", " ");
142
141
  } }
143
142
  function NestedMultiSelectDropdownComponent_ng_template_9_div_5_Template(rf, ctx) { if (rf & 1) {
144
143
  const _r9 = i0.ɵɵgetCurrentView();
@@ -168,283 +167,271 @@ function NestedMultiSelectDropdownComponent_ng_template_9_Template(rf, ctx) { if
168
167
  i0.ɵɵelementEnd();
169
168
  } if (rf & 2) {
170
169
  const ctx_r1 = i0.ɵɵnextContext();
171
- i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction2(6, _c2, ctx_r1.dropdownListHeight, ctx_r1.dropdownListWidth))("ngClass", i0.ɵɵpureFunction2(9, _c5, ctx_r1.dropdownListPosition === "Left", ctx_r1.dropdownListPosition === "Right"));
170
+ i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction2(6, _c2, ctx_r1.dropdownListHeight(), ctx_r1.dropdownListWidth()))("ngClass", i0.ɵɵpureFunction2(9, _c5, ctx_r1.dropdownListPosition() === "Left", ctx_r1.dropdownListPosition() === "Right"));
172
171
  i0.ɵɵadvance();
173
- i0.ɵɵproperty("ngIf", ctx_r1.searchEnabled);
172
+ i0.ɵɵproperty("ngIf", ctx_r1.searchEnabled());
174
173
  i0.ɵɵadvance(2);
175
- i0.ɵɵproperty("ngForOf", ctx_r1.searchInput ? ctx_r1.searchData : ctx_r1.localData);
174
+ i0.ɵɵproperty("ngForOf", ctx_r1.displayData());
176
175
  i0.ɵɵadvance();
177
- i0.ɵɵproperty("ngIf", (ctx_r1.searchInput ? ctx_r1.searchData : ctx_r1.localData).length === 0);
176
+ i0.ɵɵproperty("ngIf", ctx_r1.displayData().length === 0);
178
177
  i0.ɵɵadvance();
179
- i0.ɵɵproperty("ngIf", ctx_r1.localData.length !== 0);
178
+ i0.ɵɵproperty("ngIf", ctx_r1.localData().length !== 0);
180
179
  } }
181
180
  export class NestedMultiSelectDropdownComponent {
182
- set data(values) {
183
- // tslint:disable-next-line:no-shadowed-variable
184
- this.localData = values.map(item => {
181
+ constructor() {
182
+ // Dependencies Injection
183
+ this.eRef = inject(ElementRef);
184
+ this.overlay = inject(Overlay);
185
+ this.viewContainerRef = inject(ViewContainerRef);
186
+ // Signal-based Inputs
187
+ this.data = input([]);
188
+ this.selectedItems = input([]);
189
+ this.label = input('Select');
190
+ this.height = input('');
191
+ this.width = input('');
192
+ this.dropdownListHeight = input('');
193
+ this.dropdownListWidth = input('');
194
+ this.dropdownListPosition = input('Left');
195
+ this.searchEnabled = input(true);
196
+ this.showSelectedCount = input(false);
197
+ this.noDataMessage = input('No Data');
198
+ this.searchInputPlaceholder = input('Search Keyword');
199
+ // Signal-based Output
200
+ this.onChange = output();
201
+ // Internal Signals for component state
202
+ this.isOpen = signal(false);
203
+ this.searchInput = signal('');
204
+ this.isSearchInputFocused = signal(false);
205
+ this.localData = signal([]);
206
+ /**
207
+ * Computed signal for the number of selected items.
208
+ */
209
+ this.selectedCount = computed(() => {
210
+ let count = 0;
211
+ this.localData().forEach(parent => {
212
+ parent.children.forEach(child => {
213
+ if (child.checked) {
214
+ count++;
215
+ }
216
+ });
217
+ });
218
+ return count;
219
+ });
220
+ /**
221
+ * Computed signal for data to be displayed in the dropdown.
222
+ * Filters based on search input and sorts the parents.
223
+ */
224
+ this.displayData = computed(() => {
225
+ let dataToDisplay = this.searchEnabled() && this.searchInput() ?
226
+ this.filterByValue(this.localData(), this.searchInput()) :
227
+ this.localData();
228
+ return this.sortData(dataToDisplay);
229
+ });
230
+ // Effect to initialize and update local data based on external inputs
231
+ effect(() => {
232
+ const values = this.data();
233
+ const selected = this.selectedItems();
234
+ const formattedData = this.initializeData(values, selected);
235
+ this.localData.set(formattedData);
236
+ }, { allowSignalWrites: true });
237
+ // Effect to manage overlay open/close
238
+ effect(() => {
239
+ if (this.isOpen()) {
240
+ this.openDropdown(this.popupContainer, this.selectElement?.nativeElement);
241
+ }
242
+ else {
243
+ this.overlayRef?.detach();
244
+ }
245
+ });
246
+ }
247
+ /**
248
+ * Initializes the data structure from inputs, setting checked states.
249
+ * @param data The input data array.
250
+ * @param selected The selected items from the parent.
251
+ */
252
+ initializeData(data, selected) {
253
+ if (!data)
254
+ return [];
255
+ return data.map(parent => {
256
+ const parentSelected = selected.find(s => s.value === parent.value);
257
+ const children = parent.children.map(child => ({
258
+ ...child,
259
+ checked: parentSelected?.children.some(c => c.value === child.value) ?? false
260
+ }));
185
261
  return {
186
- ...item,
187
- checked: false,
188
- children: item.children.map(a => {
189
- return {
190
- ...a,
191
- checked: false
192
- };
193
- })
262
+ ...parent,
263
+ checked: children.every(c => c.checked),
264
+ children
194
265
  };
195
266
  });
196
267
  }
197
- set selectedItems(values) {
198
- this.handlerSetLocalSelectedItems(values);
268
+ /**
269
+ * Filters the data based on search string, including children.
270
+ * @param array The data to filter.
271
+ * @param search The search string.
272
+ */
273
+ filterByValue(array, search) {
274
+ const lowerCaseSearch = search.toLowerCase();
275
+ return array.filter(parent => parent.label.toLowerCase().includes(lowerCaseSearch) ||
276
+ parent.children.some(child => child.label.toLowerCase().includes(lowerCaseSearch))).map(parent => ({
277
+ ...parent,
278
+ children: parent.children.filter(child => child.label.toLowerCase().includes(lowerCaseSearch))
279
+ }));
199
280
  }
200
- constructor(eRef, overlay, viewContainerRef) {
201
- this.eRef = eRef;
202
- this.overlay = overlay;
203
- this.viewContainerRef = viewContainerRef;
204
- this.searchInput = "";
205
- this.isOpen = false;
206
- this.localSelectedItems = [];
207
- this.localData = [];
208
- this.searchData = [];
209
- this.selectedCount = 0;
210
- this.label = "Select";
211
- this.height = "";
212
- this.width = "";
213
- this.dropdownListHeight = "";
214
- this.dropdownListWidth = "";
215
- this.dropdownListPosition = "Left";
216
- this.searchEnabled = true;
217
- this.showSelectedCount = false;
218
- this.noDataMessage = "No Data";
219
- this.onChange = new EventEmitter();
220
- this.isSearchInputFocused = false;
281
+ /**
282
+ * Sorts the parent items, placing checked parents at the top.
283
+ * @param data The data to sort.
284
+ */
285
+ sortData(data) {
286
+ const checkedParents = data.filter(a => a.checked);
287
+ const unCheckedParents = data.filter(a => !a.checked);
288
+ const sortFn = (a, b) => a.label > b.label ? 1 : -1;
289
+ return [...checkedParents.sort(sortFn), ...unCheckedParents.sort(sortFn)];
221
290
  }
222
- ngOnInit() { }
223
- handlerSetLocalSelectedItems(values) {
224
- this.localSelectedItems = values;
291
+ /**
292
+ * Toggles the dropdown's open/close state.
293
+ */
294
+ toggleDropdown() {
295
+ this.isOpen.update(current => !current);
225
296
  }
297
+ /**
298
+ * Handles focus state of the search input.
299
+ * @param isFocused
300
+ */
226
301
  searchInputFocused(isFocused) {
227
- this.isSearchInputFocused = isFocused;
302
+ this.isSearchInputFocused.set(isFocused);
228
303
  }
304
+ /**
305
+ * Clears the search input.
306
+ * @param event
307
+ */
229
308
  searchInputCanceled(event) {
230
309
  event.stopPropagation();
231
- this.searchInput = "";
232
- this.isSearchInputFocused = false;
310
+ this.searchInput.set('');
311
+ this.isSearchInputFocused.set(false);
233
312
  }
234
- toggleDropdown() {
235
- this.isOpen = !this.isOpen;
236
- if (this.isOpen) {
237
- this.handlerSetLocalSelectedItems(this.localSelectedItems);
238
- this.localData = this.formatValues(this.localData);
239
- }
240
- if (this.isOpen)
241
- this.openDropdown(this.popupContainer, this.selectElement.nativeElement);
242
- else
243
- this.onCancel();
313
+ /**
314
+ * Handles the change event from the search input.
315
+ * @param newValue
316
+ */
317
+ searchInputOnChange(newValue) {
318
+ this.searchInput.set(newValue);
319
+ }
320
+ /**
321
+ * Toggles the checked state of a specific item, handling parent-child relationships.
322
+ * @param event
323
+ * @param parent
324
+ * @param child
325
+ */
326
+ toggleSelectedItems(event, parent, child) {
327
+ event.stopPropagation();
328
+ this.localData.update(currentData => {
329
+ return currentData.map(p => {
330
+ if (p.value === parent.value) {
331
+ if (child) {
332
+ // Case 1: Toggling a child item
333
+ const updatedChildren = p.children.map(c => {
334
+ return c.value === child.value ? { ...c, checked: !c.checked } : c;
335
+ });
336
+ return {
337
+ ...p,
338
+ checked: updatedChildren.every(c => c.checked),
339
+ children: updatedChildren
340
+ };
341
+ }
342
+ else {
343
+ // Case 2: Toggling a parent item
344
+ const newCheckedState = !p.checked;
345
+ const updatedChildren = p.children.map(c => ({
346
+ ...c,
347
+ checked: newCheckedState
348
+ }));
349
+ return {
350
+ ...p,
351
+ checked: newCheckedState,
352
+ children: updatedChildren
353
+ };
354
+ }
355
+ }
356
+ return p;
357
+ });
358
+ });
244
359
  }
360
+ /**
361
+ * Emits the selected items and closes the dropdown.
362
+ */
363
+ applyFilters() {
364
+ const selected = this.localData().filter(parent => parent.checked || parent.children.some(child => child.checked)).map(parent => ({
365
+ ...parent,
366
+ children: parent.children.filter(child => child.checked)
367
+ }));
368
+ this.onChange.emit(selected);
369
+ this.onCancel();
370
+ }
371
+ /**
372
+ * Resets all selections to empty.
373
+ */
374
+ onReset() {
375
+ this.localData.update(data => data.map(parent => ({
376
+ ...parent,
377
+ checked: false,
378
+ children: parent.children.map(child => ({ ...child, checked: false }))
379
+ })));
380
+ this.onChange.emit([]);
381
+ this.onCancel();
382
+ }
383
+ /**
384
+ * Closes the dropdown and reverts any unapplied changes.
385
+ */
386
+ onCancel() {
387
+ this.isOpen.set(false);
388
+ this.searchInput.set('');
389
+ this.isSearchInputFocused.set(false);
390
+ // This is crucial for reverting unsaved changes
391
+ const selected = this.selectedItems();
392
+ const formattedData = this.initializeData(this.data(), selected);
393
+ this.localData.set(formattedData);
394
+ }
395
+ /**
396
+ * Creates and displays the overlay for the dropdown list.
397
+ * @param template
398
+ * @param origin
399
+ */
245
400
  openDropdown(template, origin) {
401
+ if (this.overlayRef?.hasAttached())
402
+ return;
246
403
  const positionsBottom = [
247
- new ConnectionPositionPair({ originX: "start", originY: "bottom" }, { overlayX: "start", overlayY: "top" }, 0, 4),
248
- new ConnectionPositionPair({ originX: "end", originY: "bottom" }, { overlayX: "end", overlayY: "top" }, 0, 4)
404
+ new ConnectionPositionPair({ originX: 'start', originY: 'bottom' }, { overlayX: 'start', overlayY: 'top' }, 0, 4),
405
+ new ConnectionPositionPair({ originX: 'end', originY: 'bottom' }, { overlayX: 'end', overlayY: 'top' }, 0, 4)
249
406
  ];
250
407
  const positionsTop = [
251
- new ConnectionPositionPair({ originX: "start", originY: "top" }, { overlayX: "start", overlayY: "bottom" }, 0, -4),
252
- new ConnectionPositionPair({ originX: "end", originY: "top" }, { overlayX: "end", overlayY: "bottom" }, 0, -4)
408
+ new ConnectionPositionPair({ originX: 'start', originY: 'top' }, { overlayX: 'start', overlayY: 'bottom' }, 0, -4),
409
+ new ConnectionPositionPair({ originX: 'end', originY: 'top' }, { overlayX: 'end', overlayY: 'bottom' }, 0, -4)
253
410
  ];
254
411
  const positionStrategy = this.overlay
255
412
  .position()
256
413
  .flexibleConnectedTo(origin)
257
414
  .withPositions([
258
- ...(this.dropdownListPosition === "Right" ? positionsBottom.reverse() : positionsBottom),
259
- ...(this.dropdownListPosition === "Right" ? positionsTop.reverse() : positionsTop)
415
+ ...(this.dropdownListPosition() === 'Right' ? positionsBottom.reverse() : positionsBottom),
416
+ ...(this.dropdownListPosition() === 'Right' ? positionsTop.reverse() : positionsTop)
260
417
  ])
261
418
  .withPush(true);
262
419
  const configs = new OverlayConfig({
263
420
  hasBackdrop: true,
264
- backdropClass: "cdk-overlay-transparent-backdrop",
421
+ backdropClass: 'cdk-overlay-transparent-backdrop',
265
422
  scrollStrategy: this.overlay.scrollStrategies.reposition(),
266
423
  positionStrategy,
267
424
  width: origin.clientWidth
268
425
  });
269
426
  this.overlayRef = this.overlay.create(configs);
270
- if (this.dropdownListWidth)
271
- this.overlayRef.updateSize({ width: this.dropdownListWidth });
272
- if (this.dropdownListHeight)
273
- this.overlayRef.updateSize({ height: this.dropdownListHeight });
427
+ if (this.dropdownListWidth())
428
+ this.overlayRef.updateSize({ width: this.dropdownListWidth() });
429
+ if (this.dropdownListHeight())
430
+ this.overlayRef.updateSize({ height: this.dropdownListHeight() });
274
431
  this.overlayRef.attach(new TemplatePortal(template, this.viewContainerRef));
275
- this.overlayRef.backdropClick().subscribe(res => {
276
- this.onCancel();
277
- });
278
- }
279
- // tslint:disable-next-line:variable-name
280
- filterByValue(array, string) {
281
- return array
282
- .filter(o => o.label.toLowerCase().includes(string.toLowerCase()) || o.children?.some(g => g?.label?.toLowerCase().includes(string.toLowerCase())))
283
- .map(v => {
284
- return {
285
- ...v,
286
- children: v?.children?.filter(l => l?.label?.toLowerCase().includes(string.toLowerCase()))
287
- };
288
- });
289
- }
290
- searchInputOnChange(newValue) {
291
- this.searchInput = newValue;
292
- if (newValue) {
293
- this.searchData = this.filterByValue(this.localData, newValue);
294
- }
295
- else {
296
- this.searchData = [];
297
- this.searchInput = "";
298
- }
299
- }
300
- formatValues(array) {
301
- const checkedValues = array
302
- .filter(a => a.checked)
303
- .sort((a, b) => (a.label > b.label ? 1 : b.label > a.label ? -1 : 0));
304
- const unCheckedValues = array
305
- .filter(a => !a.checked)
306
- .sort((a, b) => (a.label > b.label ? 1 : b.label > a.label ? -1 : 0));
307
- return [...checkedValues, ...unCheckedValues];
308
- }
309
- // tslint:disable-next-line:no-shadowed-variable
310
- toggleSelectedItems(event, item, cItem) {
311
- event.stopPropagation();
312
- if (!cItem) {
313
- if (item.checked) {
314
- this.localData = [
315
- ...this.localData.map(a => {
316
- if (a.value === item.value) {
317
- return {
318
- ...a,
319
- checked: false,
320
- // tslint:disable-next-line:no-shadowed-variable
321
- children: item.children.map(a => {
322
- return {
323
- ...a,
324
- checked: false
325
- };
326
- })
327
- };
328
- }
329
- return a;
330
- })
331
- ];
332
- }
333
- else {
334
- this.localData = [
335
- ...this.localData.map(a => {
336
- if (a.value === item.value) {
337
- return {
338
- ...a,
339
- checked: true,
340
- // tslint:disable-next-line:no-shadowed-variable
341
- children: item.children.map(a => {
342
- return {
343
- ...a,
344
- checked: true
345
- };
346
- })
347
- };
348
- }
349
- return a;
350
- })
351
- ];
352
- }
353
- }
354
- else {
355
- if (cItem.checked) {
356
- this.localData = [
357
- ...this.localData.map(a => {
358
- if (a.value === item.value) {
359
- // tslint:disable-next-line:no-shadowed-variable
360
- const children = a?.children.map(a => {
361
- if (cItem?.value === a?.value) {
362
- return {
363
- ...a,
364
- checked: false
365
- };
366
- }
367
- return a;
368
- });
369
- return {
370
- ...a,
371
- checked: children.every(q => q.checked),
372
- // tslint:disable-next-line:no-shadowed-variable
373
- children
374
- };
375
- }
376
- return a;
377
- })
378
- ];
379
- }
380
- else {
381
- this.localData = [
382
- ...this.localData.map(a => {
383
- if (a.value === item.value) {
384
- // tslint:disable-next-line:no-shadowed-variable
385
- const children = a?.children.map(a => {
386
- if (cItem?.value === a?.value) {
387
- return {
388
- ...a,
389
- checked: true
390
- };
391
- }
392
- return a;
393
- });
394
- return {
395
- ...a,
396
- checked: children.every(q => q.checked),
397
- // tslint:disable-next-line:no-shadowed-variable
398
- children
399
- };
400
- }
401
- return a;
402
- })
403
- ];
404
- }
405
- }
406
- if (this.searchEnabled) {
407
- this.searchInputOnChange(this.searchInput);
408
- }
409
- }
410
- applyFilters() {
411
- let localCount = 0;
412
- this.localData.forEach(a => a?.children?.forEach(b => {
413
- if (b.checked) {
414
- localCount += 1;
415
- }
416
- }));
417
- this.selectedCount = localCount;
418
- const w = this.localData
419
- .filter(r => !(!r.checked && !r?.children?.some(f => f?.checked)))
420
- .map(a => {
421
- return {
422
- ...a,
423
- children: a?.children?.filter(s => s.checked)
424
- };
425
- });
426
- this.onChange.emit(w);
427
- this.onCancel();
428
- }
429
- onReset() {
430
- this.isSearchInputFocused = false;
431
- for (let item of this.localData) {
432
- for (let child of item.children) {
433
- child.checked = false;
434
- }
435
- item.checked = false;
436
- }
437
- this.onChange.emit([]);
438
- this.isOpen = false;
439
- this.searchInput = "";
440
- }
441
- onCancel() {
442
- this.isSearchInputFocused = false;
443
- this.isOpen = false;
444
- this.overlayRef?.detach();
445
- this.searchInput = "";
432
+ this.overlayRef.backdropClick().subscribe(() => this.onCancel());
446
433
  }
447
- static { this.ɵfac = function NestedMultiSelectDropdownComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || NestedMultiSelectDropdownComponent)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i1.Overlay), i0.ɵɵdirectiveInject(i0.ViewContainerRef)); }; }
434
+ static { this.ɵfac = function NestedMultiSelectDropdownComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || NestedMultiSelectDropdownComponent)(); }; }
448
435
  static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: NestedMultiSelectDropdownComponent, selectors: [["mis-nested-multi-select-dropdown"]], viewQuery: function NestedMultiSelectDropdownComponent_Query(rf, ctx) { if (rf & 1) {
449
436
  i0.ɵɵviewQuery(_c0, 5);
450
437
  i0.ɵɵviewQuery(_c1, 5);
@@ -452,7 +439,7 @@ export class NestedMultiSelectDropdownComponent {
452
439
  let _t;
453
440
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.selectElement = _t.first);
454
441
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.popupContainer = _t.first);
455
- } }, inputs: { data: "data", label: "label", height: "height", width: "width", dropdownListHeight: "dropdownListHeight", dropdownListWidth: "dropdownListWidth", dropdownListPosition: "dropdownListPosition", searchEnabled: "searchEnabled", showSelectedCount: "showSelectedCount", noDataMessage: "noDataMessage", selectedItems: "selectedItems" }, outputs: { onChange: "onChange" }, decls: 11, vars: 12, consts: [["select", ""], ["popupContainer", ""], [1, "container", 3, "ngStyle"], ["tabindex", "0", 1, "dropdown", 3, "keyup.enter", "click", "ngStyle"], [1, "label"], [1, "text"], ["class", "count", 4, "ngIf"], ["width", "20", "height", "20", "viewBox", "0 0 20 20", "fill", "none", "xmlns", "http://www.w3.org/2000/svg", 1, "handle", 3, "ngStyle"], ["fill-rule", "evenodd", "clip-rule", "evenodd", "d", "M13.825 7.15845L10 10.9751L6.175 7.15845L5 8.33345L10 13.3334L15 8.33345L13.825 7.15845Z", "fill", "#181F33"], [1, "count"], [1, "popup-container", 3, "ngStyle", "ngClass"], ["class", "search-container", 4, "ngIf"], [1, "items"], ["tabindex", "0", 3, "keyup.enter", "click", 4, "ngFor", "ngForOf"], ["class", "noData", 4, "ngIf"], ["class", "actions-container", 4, "ngIf"], [1, "search-container"], ["class", "search-icon", "width", "24", "height", "24", "viewBox", "0 0 24 24", "fill", "none", "xmlns", "http://www.w3.org/2000/svg", 4, "ngIf"], [1, "search-input", 3, "ngModelChange", "focus", "ngModel", "ngStyle", "placeholder"], ["class", "cancel-icon", "width", "24", "height", "24", "viewBox", "0 0 24 24", "fill", "none", "xmlns", "http://www.w3.org/2000/svg", 3, "click", 4, "ngIf"], ["width", "24", "height", "24", "viewBox", "0 0 24 24", "fill", "none", "xmlns", "http://www.w3.org/2000/svg", 1, "search-icon"], ["fill-rule", "evenodd", "clip-rule", "evenodd", "d", "M4.21508 11.1456C4.21508 7.3179 7.33722 4.21165 11.1926 4.21165C15.048 4.21165 18.1702 7.3179 18.1702 11.1456C18.1702 12.6931 17.6599 14.1226 16.7972 15.2767L15.3685 16.7013C14.2044 17.5668 12.759 18.0796 11.1926 18.0796C7.33722 18.0796 4.21508 14.9734 4.21508 11.1456ZM15.9421 17.7835C14.6021 18.7329 12.9627 19.2913 11.1926 19.2913C6.66977 19.2913 3 15.6461 3 11.1456C3 6.64512 6.66977 3 11.1926 3C15.7155 3 19.3852 6.64512 19.3852 11.1456C19.3852 12.9371 18.8037 14.5931 17.8184 15.9375L19.8361 17.4048C20.6705 17.912 21.7554 18.6543 20.2454 20.215C18.7353 21.7756 18.0099 20.6663 17.4991 19.8364L15.9421 17.7835Z", "fill", "#6A737D"], ["width", "24", "height", "24", "viewBox", "0 0 24 24", "fill", "none", "xmlns", "http://www.w3.org/2000/svg", 1, "cancel-icon", 3, "click"], ["fill-rule", "evenodd", "clip-rule", "evenodd", "d", "M8.87446 7.32144C8.44588 6.89285 7.751 6.89285 7.32242 7.32144C6.89383 7.75002 6.89383 8.4449 7.32242 8.87349L10.4488 11.9999L7.32357 15.1252C6.89498 15.5538 6.89498 16.2486 7.32357 16.6772C7.75215 17.1058 8.44703 17.1058 8.87561 16.6772L12.0009 13.552L15.1261 16.6772C15.5547 17.1058 16.2496 17.1058 16.6781 16.6772C17.1067 16.2486 17.1067 15.5537 16.6781 15.1251L13.5529 11.9999L16.6793 8.87354C17.1079 8.44496 17.1079 7.75008 16.6793 7.3215C16.2507 6.89291 15.5558 6.89291 15.1273 7.3215L12.0009 10.4479L8.87446 7.32144Z", "fill", "#6A737D"], ["tabindex", "0", 3, "keyup.enter", "click"], [1, "item"], [1, "checkbox-container-wrapper"], [1, "checkbox-container"], [3, "checked"], ["class", "icon-container", 4, "ngIf"], ["class", "items sub", 3, "ngStyle", 4, "ngIf"], [1, "icon-container"], ["alt", "no img", 1, "icon", 3, "src"], [1, "items", "sub", 3, "ngStyle"], ["class", "item", "tabindex", "0", 3, "keyup.enter", "click", 4, "ngFor", "ngForOf"], ["tabindex", "0", 1, "item", 3, "keyup.enter", "click"], [1, "noData"], [1, "actions-container"], [3, "ngStyle"], [3, "click", "name", "type", "width"]], template: function NestedMultiSelectDropdownComponent_Template(rf, ctx) { if (rf & 1) {
442
+ } }, inputs: { data: [1, "data"], selectedItems: [1, "selectedItems"], label: [1, "label"], height: [1, "height"], width: [1, "width"], dropdownListHeight: [1, "dropdownListHeight"], dropdownListWidth: [1, "dropdownListWidth"], dropdownListPosition: [1, "dropdownListPosition"], searchEnabled: [1, "searchEnabled"], showSelectedCount: [1, "showSelectedCount"], noDataMessage: [1, "noDataMessage"], searchInputPlaceholder: [1, "searchInputPlaceholder"] }, outputs: { onChange: "onChange" }, decls: 11, vars: 12, consts: [["select", ""], ["popupContainer", ""], [1, "container", 3, "ngStyle"], ["tabindex", "0", 1, "dropdown", 3, "keyup.enter", "click", "ngStyle"], [1, "label"], [1, "text"], ["class", "count", 4, "ngIf"], ["width", "20", "height", "20", "viewBox", "0 0 20 20", "fill", "none", "xmlns", "http://www.w3.org/2000/svg", 1, "handle", 3, "ngStyle"], ["fill-rule", "evenodd", "clip-rule", "evenodd", "d", "M13.825 7.15845L10 10.9751L6.175 7.15845L5 8.33345L10 13.3334L15 8.33345L13.825 7.15845Z", "fill", "#181F33"], [1, "count"], [1, "popup-container", 3, "ngStyle", "ngClass"], ["class", "search-container", 4, "ngIf"], [1, "items"], ["tabindex", "0", 3, "keyup.enter", "click", 4, "ngFor", "ngForOf"], ["class", "noData", 4, "ngIf"], ["class", "actions-container", 4, "ngIf"], [1, "search-container"], ["class", "search-icon", "width", "24", "height", "24", "viewBox", "0 0 24 24", "fill", "none", "xmlns", "http://www.w3.org/2000/svg", 4, "ngIf"], [1, "search-input", 3, "ngModelChange", "focus", "ngModel", "ngStyle", "placeholder"], ["class", "cancel-icon", "width", "24", "height", "24", "viewBox", "0 0 24 24", "fill", "none", "xmlns", "http://www.w3.org/2000/svg", 3, "click", 4, "ngIf"], ["width", "24", "height", "24", "viewBox", "0 0 24 24", "fill", "none", "xmlns", "http://www.w3.org/2000/svg", 1, "search-icon"], ["fill-rule", "evenodd", "clip-rule", "evenodd", "d", "M4.21508 11.1456C4.21508 7.3179 7.33722 4.21165 11.1926 4.21165C15.048 4.21165 18.1702 7.3179 18.1702 11.1456C18.1702 12.6931 17.6599 14.1226 16.7972 15.2767L15.3685 16.7013C14.2044 17.5668 12.759 18.0796 11.1926 18.0796C7.33722 18.0796 4.21508 14.9734 4.21508 11.1456ZM15.9421 17.7835C14.6021 18.7329 12.9627 19.2913 11.1926 19.2913C6.66977 19.2913 3 15.6461 3 11.1456C3 6.64512 6.66977 3 11.1926 3C15.7155 3 19.3852 6.64512 19.3852 11.1456C19.3852 12.9371 18.8037 14.5931 17.8184 15.9375L19.8361 17.4048C20.6705 17.912 21.7554 18.6543 20.2454 20.215C18.7353 21.7756 18.0099 20.6663 17.4991 19.8364L15.9421 17.7835Z", "fill", "#6A737D"], ["width", "24", "height", "24", "viewBox", "0 0 24 24", "fill", "none", "xmlns", "http://www.w3.org/2000/svg", 1, "cancel-icon", 3, "click"], ["fill-rule", "evenodd", "clip-rule", "evenodd", "d", "M8.87446 7.32144C8.44588 6.89285 7.751 6.89285 7.32242 7.32144C6.89383 7.75002 6.89383 8.4449 7.32242 8.87349L10.4488 11.9999L7.32357 15.1252C6.89498 15.5538 6.89498 16.2486 7.32357 16.6772C7.75215 17.1058 8.44703 17.1058 8.87561 16.6772L12.0009 13.552L15.1261 16.6772C15.5547 17.1058 16.2496 17.1058 16.6781 16.6772C17.1067 16.2486 17.1067 15.5537 16.6781 15.1251L13.5529 11.9999L16.6793 8.87354C17.1079 8.44496 17.1079 7.75008 16.6793 7.3215C16.2507 6.89291 15.5558 6.89291 15.1273 7.3215L12.0009 10.4479L8.87446 7.32144Z", "fill", "#6A737D"], ["tabindex", "0", 3, "keyup.enter", "click"], [1, "item"], [1, "checkbox-container-wrapper"], [1, "checkbox-container"], [3, "checked"], ["class", "icon-container", 4, "ngIf"], ["class", "items sub", 3, "ngStyle", 4, "ngIf"], [1, "icon-container"], ["alt", "no img", 1, "icon", 3, "src"], [1, "items", "sub", 3, "ngStyle"], ["class", "item", "tabindex", "0", 3, "keyup.enter", "click", 4, "ngFor", "ngForOf"], ["tabindex", "0", 1, "item", 3, "keyup.enter", "click"], [1, "noData"], [1, "actions-container"], [3, "ngStyle"], [3, "click", "name", "type", "width"]], template: function NestedMultiSelectDropdownComponent_Template(rf, ctx) { if (rf & 1) {
456
443
  const _r1 = i0.ɵɵgetCurrentView();
457
444
  i0.ɵɵelementStart(0, "div", 2)(1, "div", 3, 0);
458
445
  i0.ɵɵlistener("keyup.enter", function NestedMultiSelectDropdownComponent_Template_div_keyup_enter_1_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.toggleDropdown()); })("click", function NestedMultiSelectDropdownComponent_Template_div_click_1_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.toggleDropdown()); });
@@ -467,50 +454,26 @@ export class NestedMultiSelectDropdownComponent {
467
454
  i0.ɵɵelementEnd()()();
468
455
  i0.ɵɵtemplate(9, NestedMultiSelectDropdownComponent_ng_template_9_Template, 6, 12, "ng-template", null, 1, i0.ɵɵtemplateRefExtractor);
469
456
  } if (rf & 2) {
470
- i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction2(5, _c2, ctx.height.length > 0 ? ctx.height : "", ctx.width.length > 0 ? ctx.width : ""));
457
+ i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction2(5, _c2, ctx.height().length > 0 ? ctx.height() : "", ctx.width().length > 0 ? ctx.width() : ""));
471
458
  i0.ɵɵadvance();
472
- i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(8, _c3, ctx.isOpen ? "#E6EBF7" : ""));
459
+ i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(8, _c3, ctx.isOpen() ? "#E6EBF7" : ""));
473
460
  i0.ɵɵadvance(4);
474
- i0.ɵɵtextInterpolate(ctx.label);
461
+ i0.ɵɵtextInterpolate(ctx.label());
475
462
  i0.ɵɵadvance();
476
- i0.ɵɵproperty("ngIf", ctx.showSelectedCount && ctx.selectedCount > 0);
463
+ i0.ɵɵproperty("ngIf", ctx.showSelectedCount() && ctx.selectedCount() > 0);
477
464
  i0.ɵɵadvance();
478
- i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(10, _c4, ctx.isOpen ? "rotate(180deg)" : "rotate(0deg)"));
479
- } }, dependencies: [i2.NgClass, i2.NgForOf, i2.NgIf, i2.NgStyle, i3.DefaultValueAccessor, i3.NgControlStatus, i3.NgModel, i4.CheckboxComponent, i5.ButtonComponent], styles: ["[_ngcontent-%COMP%]:root{--pmry-200: #99BAF7;--pmry-100: #CBDDFB;--pmry-500: #0937B2;--pmry-400: #3C68D0;--pmry-600: #062A99;--pmry-700: #041F80;--pmry-300: #638FE7;--pmry-800: #021567;--pmry-900: #010F55;--sec-d-purple: #40447F;--sec-maroon: #6B034E;--sec-mud-red: #B23600;--sec-orange: #ED711C;--sec-purple: #815FD5;--sec-teal: #10ADAE;--sec-yellow: #D4900C;--sec-green: #547F40;--sec-bright-green: #27D22E;--sec-dark-teal: #035F6B;--sec-chocolate: #7C2F33;--sec-rube-pink: #C13D6D;--sec-cerulean: #0087B2;--sem-error: #B00020;--sem-info: #0091FF;--sem-warning: #FF9D00;--sem-success: #38AF49;--grey-bg-1: #FAFAFA;--grey-bg: #F5F5F5;--grey-seperators: #E0E0E0;--grey-disabled: #C8CDD3;--grey-hover: #F5F7FC;--grey-pressed: #E6EBF7;--grey-row: #F5F7FC;--dec-light-yellow: #F4E7C3;--dec-light-purple: #DACFF9;--dec-light-green: #E4F5E9;--dec-light-green2: #F1FFF3;--dec-light-pink: #FAE1EA;--dec-: #F4CBC1;--dec-lt-orange: #FAEFED;--dec-light-blue: #CFECF9;--dec-row-selection: #F1FDF8;--dec-row-selection2: #F2FBFF;--dec-row-lines: #D3E1E9;--text-white: #FFFFFF;--text-muted: #6A737D;--text-black: #181F33;--MR-solid-blue2:#C8D5F6;--MR-solid-purple:#C9C3FB;--MR-solid-orange:#EEAC9F;--MR-solid-green:#ACDADA;--MR-solid-brown:#E8C8AF;--MR-solid-yellow:#FFEFC7;--MR-solid-blue:#BBE6FF;--MR-solid-pink:#FFC6F2;--tr-hover:#F0F3FA;--tr-pressed:#DAE1F3;--brand-primary: #0937B2;--brand-primary-light: #3C68D0;--brand-primary-dark: #062A99;--brand-primary-darker: #041F80;--brand-primary-lighter: #638FE7;--brand-primary-lightest: #CBDDFB;--brand-primary-hover: #F0F3FA;--brand-primary-active: #DAE1F3;--brand-secondary: #ED711C;--brand-secondary-light: #F09E65;--brand-secondary-dark: #B23600;--brand-secondary-lighter: #FFC6F2;--brand-accent: #10ADAE;--brand-accent-light: #16CBBC;--brand-accent-dark: #035F6B;--brand-accent-lighter: #ACDADA;--brand-success: #38AF49;--brand-success-light: #4CAF50;--brand-success-dark: #216531;--brand-success-lighter: #E4F5E9;--brand-success-lightest: #F1FFF3;--brand-error: #B00020;--brand-error-light: #F04E4E;--brand-error-dark: #A60060;--brand-error-lighter: #FAE1EA;--brand-error-lightest: #FDF2F2;--brand-warning: #FF9D00;--brand-warning-light: #D4900C;--brand-warning-dark: #624000;--brand-warning-lighter: #F4E7C3;--brand-warning-lightest: #FAEFED;--brand-info: #0091FF;--brand-info-light: #35A1FF;--brand-info-dark: #0087B2;--brand-info-lighter: #CFECF9;--text-primary: #181F33;--text-secondary: #6A737D;--text-tertiary: #929DAB;--text-disabled: #929DAB;--text-primary-87: rgba(24, 31, 51, .87);--text-primary-60: rgba(24, 31, 51, .6);--text-primary-38: rgba(24, 31, 51, .38);--text-primary-12: rgba(24, 31, 51, .12);--bg-primary: #FFFFFF;--bg-secondary: #FAFAFA;--bg-tertiary: #F5F5F5;--bg-overlay: rgba(0, 0, 0, .32);--bg-overlay-light: rgba(0, 0, 0, .12);--bg-overlay-lighter: rgba(0, 0, 0, .08);--bg-overlay-lightest: rgba(0, 0, 0, .04);--border-primary: #E0E0E0;--border-secondary: #D6DCE2;--border-tertiary: #C8CDD3;--border-light: #F1F4F8;--border-primary-12: rgba(0, 0, 0, .12);--border-primary-08: rgba(0, 0, 0, .08);--border-primary-06: rgba(0, 0, 0, .06);--shadow-primary: rgba(0, 0, 0, .12);--shadow-secondary: rgba(0, 0, 0, .08);--shadow-tertiary: rgba(0, 0, 0, .04);--shadow-light: rgba(0, 0, 0, .06);--status-available: #929DAB;--status-unavailable: #CCD3DA;--status-hotseat: #857BFF;--status-multiteam: #10ADAE;--status-selected: #10ADAE;--status-upcoming: #D4900C;--status-room: #38AF49;--status-room-booked: #B23600;--status-room-unavailable: #181F33;--team-color-1: #F8C52E;--team-color-2: #FA8E20;--team-color-3: #987CDD;--team-color-4: #16CBBC;--team-color-5: #E65010;--team-color-6: #A60060;--team-color-7: #ED323B;--team-color-8: #35A1FF;--team-color-9: #80D348}[_ngcontent-%COMP%]::-webkit-scrollbar{width:5px}[_ngcontent-%COMP%]::-webkit-scrollbar-thumb{background:var(--text-tertiary, #929DAB)}.container[_ngcontent-%COMP%]{position:relative;display:flex;justify-content:center;align-items:center;height:32px;width:256px;flex-wrap:wrap;font-family:Lato,sans-serif}.container[_ngcontent-%COMP%] .dropdown[_ngcontent-%COMP%]{height:inherit;border:1px solid var(--border-primary, #E0E0E0);border-radius:6px;background-color:var(--bg-primary, #FFFFFF);cursor:pointer;display:flex;justify-content:space-between;align-items:center;width:100%;padding:0 12px;overflow:hidden}.container[_ngcontent-%COMP%] .dropdown[_ngcontent-%COMP%]:hover, .container[_ngcontent-%COMP%] .dropdown[_ngcontent-%COMP%]:focus-visible{background-color:var(--brand-primary-hover, #F0F3FA);outline:none}.container[_ngcontent-%COMP%] .dropdown[_ngcontent-%COMP%] .label[_ngcontent-%COMP%]{display:flex;justify-content:flex-start;align-items:center;width:calc(100% - 32px);font-style:normal;font-weight:400;font-size:14px;line-height:20px;letter-spacing:.2px;color:var(--text-primary, #181F33)}.container[_ngcontent-%COMP%] .dropdown[_ngcontent-%COMP%] .label[_ngcontent-%COMP%] .text[_ngcontent-%COMP%]{text-overflow:ellipsis;overflow:hidden;white-space:nowrap;font-style:normal;font-weight:400;font-size:14px;line-height:20px;letter-spacing:.2px;color:var(--text-primary, #181F33)}.container[_ngcontent-%COMP%] .dropdown[_ngcontent-%COMP%] .label[_ngcontent-%COMP%] .count[_ngcontent-%COMP%]{background-color:var(--border-primary, #E0E0E0);border-radius:50%;padding:2px 7px;margin:0 0 0 8px;font-style:normal;font-weight:400;font-size:14px;line-height:20px;text-align:center;letter-spacing:.2px;color:var(--text-primary, #181F33)}.container[_ngcontent-%COMP%] .dropdown[_ngcontent-%COMP%] .handle[_ngcontent-%COMP%]{width:24px;height:24px;transition:.3s;position:absolute;right:12px;border-radius:50%;overflow:hidden}.popup-container[_ngcontent-%COMP%]{position:absolute;top:4px;width:100%;max-height:340px;padding-bottom:0;border:1px solid var(--border-primary, #E0E0E0);border-radius:8px;background-color:var(--bg-primary, #FFFFFF);box-shadow:0 12px 24px #0000001f;overflow-x:hidden;display:flex;flex-direction:column;justify-content:space-between;z-index:100}.popup-container[_ngcontent-%COMP%]::-webkit-scrollbar{width:0;height:0}.popup-container[_ngcontent-%COMP%] .search-container[_ngcontent-%COMP%]{position:relative;box-sizing:border-box;padding:8px}.popup-container[_ngcontent-%COMP%] .search-container[_ngcontent-%COMP%] .search-icon[_ngcontent-%COMP%]{position:absolute;width:24px;height:24px;top:50%;transform:translateY(-50%);left:18px;z-index:1}.popup-container[_ngcontent-%COMP%] .search-container[_ngcontent-%COMP%] .search-input[_ngcontent-%COMP%]{height:40px;width:100%;padding:12px;border:1px solid var(--border-primary, #E0E0E0);box-sizing:border-box;border-radius:8px;outline:none;caret-color:var(--brand-primary, #0937B2);font-style:normal;font-weight:400;font-size:12px;line-height:18px;display:flex;align-items:center;letter-spacing:.2px;color:var(--text-primary, #181F33)}.popup-container[_ngcontent-%COMP%] .search-container[_ngcontent-%COMP%] .cancel-icon[_ngcontent-%COMP%]{position:absolute;cursor:pointer;width:24px;height:24px;top:50%;transform:translateY(-50%);right:18px;z-index:1}.popup-container[_ngcontent-%COMP%] .items[_ngcontent-%COMP%]{padding:8px 0 8px 8px;overflow-y:scroll;height:100%}.popup-container[_ngcontent-%COMP%] .items[_ngcontent-%COMP%]::-webkit-scrollbar{width:5px;height:0}.popup-container[_ngcontent-%COMP%] .items[_ngcontent-%COMP%]::-webkit-scrollbar-thumb{background:var(--text-tertiary, #929DAB);border-radius:10px}.popup-container[_ngcontent-%COMP%] .items[_ngcontent-%COMP%] .noData[_ngcontent-%COMP%]{display:flex;justify-content:center;align-items:center;font-style:normal;font-weight:400;font-size:14px;line-height:20px;letter-spacing:.2px;color:var(--text-primary, #181F33)}.popup-container[_ngcontent-%COMP%] .items[_ngcontent-%COMP%] .item[_ngcontent-%COMP%]{cursor:pointer;display:flex;justify-content:flex-start;align-items:center;padding:8px 12px;border-radius:6px;height:auto}.popup-container[_ngcontent-%COMP%] .items[_ngcontent-%COMP%] .item[_ngcontent-%COMP%]:hover, .popup-container[_ngcontent-%COMP%] .items[_ngcontent-%COMP%] .item[_ngcontent-%COMP%]:focus-visible{background-color:var(--brand-primary-hover, #F0F3FA);outline:none}.popup-container[_ngcontent-%COMP%] .items[_ngcontent-%COMP%] .item[_ngcontent-%COMP%] .checkbox-container-wrapper[_ngcontent-%COMP%]{display:flex;justify-content:flex-start;align-items:center;width:90%}.popup-container[_ngcontent-%COMP%] .items[_ngcontent-%COMP%] .item[_ngcontent-%COMP%] .checkbox-container-wrapper[_ngcontent-%COMP%] .checkbox-container[_ngcontent-%COMP%]{display:block;position:relative;cursor:pointer;font-size:22px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.popup-container[_ngcontent-%COMP%] .items[_ngcontent-%COMP%] .item[_ngcontent-%COMP%] .checkbox-container-wrapper[_ngcontent-%COMP%] .checkbox-container[_ngcontent-%COMP%] input[_ngcontent-%COMP%]{position:absolute;opacity:0;cursor:pointer;height:0;width:0}.popup-container[_ngcontent-%COMP%] .items[_ngcontent-%COMP%] .item[_ngcontent-%COMP%] .checkbox-container-wrapper[_ngcontent-%COMP%] .checkbox-container[_ngcontent-%COMP%] input[_ngcontent-%COMP%]:checked ~ .checkmark[_ngcontent-%COMP%]:after{display:block}.popup-container[_ngcontent-%COMP%] .items[_ngcontent-%COMP%] .item[_ngcontent-%COMP%] .checkbox-container-wrapper[_ngcontent-%COMP%] .checkbox-container[_ngcontent-%COMP%] .checkmark[_ngcontent-%COMP%]{position:absolute;top:-8px;left:0;height:15px;width:15px;border-radius:4px;background-color:var(--brand-info, #0091FF);border:1px solid var(--text-secondary, #6A737D)}.popup-container[_ngcontent-%COMP%] .items[_ngcontent-%COMP%] .item[_ngcontent-%COMP%] .checkbox-container-wrapper[_ngcontent-%COMP%] .checkbox-container[_ngcontent-%COMP%] .checkmark[_ngcontent-%COMP%]:after{content:\"\";position:absolute;display:none;left:5px;top:2px;width:3px;height:6px;border:solid var(--bg-primary, #FFFFFF);border-width:0 2px 2px 0;-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.popup-container[_ngcontent-%COMP%] .items[_ngcontent-%COMP%] .item[_ngcontent-%COMP%] .checkbox-container-wrapper[_ngcontent-%COMP%] .label[_ngcontent-%COMP%]{margin:0 0 0 8px;font-style:normal;font-weight:400;font-size:14px;line-height:20px;letter-spacing:.2px;color:var(--text-primary, #181F33);text-overflow:ellipsis;overflow:hidden}.popup-container[_ngcontent-%COMP%] .items[_ngcontent-%COMP%] .item[_ngcontent-%COMP%] .icon-container[_ngcontent-%COMP%]{width:10%;display:flex;justify-content:flex-end}.popup-container[_ngcontent-%COMP%] .items[_ngcontent-%COMP%] .item[_ngcontent-%COMP%] .icon-container[_ngcontent-%COMP%] .icon[_ngcontent-%COMP%]{width:20px;height:20px}.popup-container[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%]{display:flex;justify-content:space-between;bottom:0;align-items:center;position:sticky;padding:16px;background-color:var(--bg-primary, #FFFFFF);border-top:1px solid var(--border-primary, #E0E0E0)}.popup-container[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .cancel[_ngcontent-%COMP%]{cursor:pointer;padding:10px 32px;text-align:center;font-size:16px;line-height:24px;border-radius:8px}.popup-container[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .cancel[_ngcontent-%COMP%]:hover{background:var(--bg-overlay-lightest, rgba(0, 0, 0, .04))}.popup-container[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .apply[_ngcontent-%COMP%]{cursor:pointer;padding:10px 32px;text-align:center;color:var(--bg-primary, #FFFFFF);font-size:16px;line-height:24px;background:var(--brand-primary, #0937B2);border-radius:8px}"] }); }
465
+ i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(10, _c4, ctx.isOpen() ? "rotate(180deg)" : "rotate(0deg)"));
466
+ } }, dependencies: [i1.NgClass, i1.NgForOf, i1.NgIf, i1.NgStyle, i2.DefaultValueAccessor, i2.NgControlStatus, i2.NgModel, i3.CheckboxComponent, i4.ButtonComponent], styles: ["[_ngcontent-%COMP%]::-webkit-scrollbar{width:5px}[_ngcontent-%COMP%]::-webkit-scrollbar-thumb{background:#9aa7b4}.container[_ngcontent-%COMP%]{position:relative;display:flex;justify-content:center;align-items:center;height:32px;width:256px;flex-wrap:wrap;font-family:Lato,sans-serif}.container[_ngcontent-%COMP%] .dropdown[_ngcontent-%COMP%]{height:inherit;border:1px solid #e0e0e0;border-radius:6px;background-color:#fff;cursor:pointer;display:flex;justify-content:space-between;align-items:center;width:100%;padding:0 12px;overflow:hidden}.container[_ngcontent-%COMP%] .dropdown[_ngcontent-%COMP%]:hover, .container[_ngcontent-%COMP%] .dropdown[_ngcontent-%COMP%]:focus-visible{background-color:#f5f7fc;outline:none}.container[_ngcontent-%COMP%] .dropdown[_ngcontent-%COMP%] .label[_ngcontent-%COMP%]{display:flex;justify-content:flex-start;align-items:center;width:calc(100% - 32px);font-style:normal;font-weight:400;font-size:14px;line-height:20px;letter-spacing:.2px;color:#181f33}.container[_ngcontent-%COMP%] .dropdown[_ngcontent-%COMP%] .label[_ngcontent-%COMP%] .text[_ngcontent-%COMP%]{text-overflow:ellipsis;overflow:hidden;white-space:nowrap;font-style:normal;font-weight:400;font-size:14px;line-height:20px;letter-spacing:.2px;color:#181f33}.container[_ngcontent-%COMP%] .dropdown[_ngcontent-%COMP%] .label[_ngcontent-%COMP%] .count[_ngcontent-%COMP%]{background-color:#e0e0e0;border-radius:50%;padding:2px 7px;margin:0 0 0 8px;font-style:normal;font-weight:400;font-size:14px;line-height:20px;text-align:center;letter-spacing:.2px;color:#181f33}.container[_ngcontent-%COMP%] .dropdown[_ngcontent-%COMP%] .handle[_ngcontent-%COMP%]{width:24px;height:24px;transition:.3s;position:absolute;right:12px;border-radius:50%;overflow:hidden}.popup-container[_ngcontent-%COMP%]{position:absolute;top:4px;width:100%;max-height:340px;padding-bottom:0;border:1px solid #e0e0e0;border-radius:8px;background-color:#fff;box-shadow:0 12px 24px #0000001f;overflow-x:hidden;display:flex;flex-direction:column;justify-content:space-between;z-index:100}.popup-container[_ngcontent-%COMP%]::-webkit-scrollbar{width:0;height:0}.popup-container[_ngcontent-%COMP%] .search-container[_ngcontent-%COMP%]{position:relative;box-sizing:border-box;padding:8px}.popup-container[_ngcontent-%COMP%] .search-container[_ngcontent-%COMP%] .search-icon[_ngcontent-%COMP%]{position:absolute;width:24px;height:24px;top:50%;transform:translateY(-50%);left:18px;z-index:1}.popup-container[_ngcontent-%COMP%] .search-container[_ngcontent-%COMP%] .search-input[_ngcontent-%COMP%]{height:40px;width:100%;padding:12px;border:1px solid #e0e0e0;box-sizing:border-box;border-radius:8px;outline:none;caret-color:#0937b2;font-style:normal;font-weight:400;font-size:12px;line-height:18px;display:flex;align-items:center;letter-spacing:.2px;color:#181f33}.popup-container[_ngcontent-%COMP%] .search-container[_ngcontent-%COMP%] .cancel-icon[_ngcontent-%COMP%]{position:absolute;cursor:pointer;width:24px;height:24px;top:50%;transform:translateY(-50%);right:18px;z-index:1}.popup-container[_ngcontent-%COMP%] .items[_ngcontent-%COMP%]{padding:8px 0 8px 8px;overflow-y:scroll;height:100%}.popup-container[_ngcontent-%COMP%] .items[_ngcontent-%COMP%]::-webkit-scrollbar{width:5px;height:0}.popup-container[_ngcontent-%COMP%] .items[_ngcontent-%COMP%]::-webkit-scrollbar-thumb{background:#9aa7b4;border-radius:10px}.popup-container[_ngcontent-%COMP%] .items[_ngcontent-%COMP%] .noData[_ngcontent-%COMP%]{display:flex;justify-content:center;align-items:center;font-style:normal;font-weight:400;font-size:14px;line-height:20px;letter-spacing:.2px;color:#181f33}.popup-container[_ngcontent-%COMP%] .items[_ngcontent-%COMP%] .item[_ngcontent-%COMP%]{cursor:pointer;display:flex;justify-content:flex-start;align-items:center;padding:8px 12px;border-radius:6px;height:auto}.popup-container[_ngcontent-%COMP%] .items[_ngcontent-%COMP%] .item[_ngcontent-%COMP%]:hover, .popup-container[_ngcontent-%COMP%] .items[_ngcontent-%COMP%] .item[_ngcontent-%COMP%]:focus-visible{background-color:#f5f7fc;outline:none}.popup-container[_ngcontent-%COMP%] .items[_ngcontent-%COMP%] .item[_ngcontent-%COMP%] .checkbox-container-wrapper[_ngcontent-%COMP%]{display:flex;justify-content:flex-start;align-items:center;width:90%}.popup-container[_ngcontent-%COMP%] .items[_ngcontent-%COMP%] .item[_ngcontent-%COMP%] .checkbox-container-wrapper[_ngcontent-%COMP%] .checkbox-container[_ngcontent-%COMP%]{display:block;position:relative;cursor:pointer;font-size:22px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.popup-container[_ngcontent-%COMP%] .items[_ngcontent-%COMP%] .item[_ngcontent-%COMP%] .checkbox-container-wrapper[_ngcontent-%COMP%] .checkbox-container[_ngcontent-%COMP%] input[_ngcontent-%COMP%]{position:absolute;opacity:0;cursor:pointer;height:0;width:0}.popup-container[_ngcontent-%COMP%] .items[_ngcontent-%COMP%] .item[_ngcontent-%COMP%] .checkbox-container-wrapper[_ngcontent-%COMP%] .checkbox-container[_ngcontent-%COMP%] input[_ngcontent-%COMP%]:checked ~ .checkmark[_ngcontent-%COMP%]:after{display:block}.popup-container[_ngcontent-%COMP%] .items[_ngcontent-%COMP%] .item[_ngcontent-%COMP%] .checkbox-container-wrapper[_ngcontent-%COMP%] .checkbox-container[_ngcontent-%COMP%] .checkmark[_ngcontent-%COMP%]{position:absolute;top:-8px;left:0;height:15px;width:15px;border-radius:4px;background-color:#0079f1;border:1px solid rgb(106,115,125)}.popup-container[_ngcontent-%COMP%] .items[_ngcontent-%COMP%] .item[_ngcontent-%COMP%] .checkbox-container-wrapper[_ngcontent-%COMP%] .checkbox-container[_ngcontent-%COMP%] .checkmark[_ngcontent-%COMP%]:after{content:\"\";position:absolute;display:none;left:5px;top:2px;width:3px;height:6px;border:solid white;border-width:0 2px 2px 0;-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.popup-container[_ngcontent-%COMP%] .items[_ngcontent-%COMP%] .item[_ngcontent-%COMP%] .checkbox-container-wrapper[_ngcontent-%COMP%] .label[_ngcontent-%COMP%]{margin:0 0 0 8px;font-style:normal;font-weight:400;font-size:14px;line-height:20px;letter-spacing:.2px;color:#181f33;text-overflow:ellipsis;overflow:hidden}.popup-container[_ngcontent-%COMP%] .items[_ngcontent-%COMP%] .item[_ngcontent-%COMP%] .icon-container[_ngcontent-%COMP%]{width:10%;display:flex;justify-content:flex-end}.popup-container[_ngcontent-%COMP%] .items[_ngcontent-%COMP%] .item[_ngcontent-%COMP%] .icon-container[_ngcontent-%COMP%] .icon[_ngcontent-%COMP%]{width:20px;height:20px}.popup-container[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%]{display:flex;justify-content:space-between;bottom:0;align-items:center;position:sticky;padding:16px;background-color:#fff;border-top:1px solid #e0e0e0}.popup-container[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .cancel[_ngcontent-%COMP%]{cursor:pointer;padding:10px 32px;text-align:center;font-size:16px;line-height:24px;border-radius:8px}.popup-container[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .cancel[_ngcontent-%COMP%]:hover{background:#0937b20a}.popup-container[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .apply[_ngcontent-%COMP%]{cursor:pointer;padding:10px 32px;text-align:center;color:#fff;font-size:16px;line-height:24px;background:#0937b2;border-radius:8px}"] }); }
480
467
  }
481
468
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(NestedMultiSelectDropdownComponent, [{
482
469
  type: Component,
483
- args: [{ selector: "mis-nested-multi-select-dropdown", template: "<div\n class=\"container\"\n [ngStyle]=\"{\n height: height.length > 0 ? height : '',\n width: width.length > 0 ? width : ''\n }\"\n>\n <div\n class=\"dropdown\"\n #select\n tabindex=\"0\"\n (keyup.enter)=\"toggleDropdown()\"\n (click)=\"toggleDropdown()\"\n [ngStyle]=\"{ background: isOpen ? '#E6EBF7' : '' }\"\n >\n <div class=\"label\">\n <p class=\"text\">{{ label }}</p>\n <p *ngIf=\"showSelectedCount && selectedCount > 0\" class=\"count\">\n {{ selectedCount }}\n </p>\n </div>\n <svg\n class=\"handle\"\n [ngStyle]=\"{ transform: isOpen ? 'rotate(180deg)' : 'rotate(0deg)' }\"\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M13.825 7.15845L10 10.9751L6.175 7.15845L5 8.33345L10 13.3334L15 8.33345L13.825 7.15845Z\"\n fill=\"#181F33\"\n />\n </svg>\n </div>\n</div>\n<ng-template #popupContainer>\n <div\n class=\"popup-container\"\n [ngStyle]=\"{\n height: dropdownListHeight,\n width: dropdownListWidth\n }\"\n [ngClass]=\"{\n 'position-left': dropdownListPosition === 'Left',\n 'position-right': dropdownListPosition === 'Right'\n }\"\n >\n <div *ngIf=\"searchEnabled\" class=\"search-container\">\n <svg\n *ngIf=\"!isSearchInputFocused\"\n class=\"search-icon\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M4.21508 11.1456C4.21508 7.3179 7.33722 4.21165 11.1926 4.21165C15.048 4.21165 18.1702 7.3179 18.1702 11.1456C18.1702 12.6931 17.6599 14.1226 16.7972 15.2767L15.3685 16.7013C14.2044 17.5668 12.759 18.0796 11.1926 18.0796C7.33722 18.0796 4.21508 14.9734 4.21508 11.1456ZM15.9421 17.7835C14.6021 18.7329 12.9627 19.2913 11.1926 19.2913C6.66977 19.2913 3 15.6461 3 11.1456C3 6.64512 6.66977 3 11.1926 3C15.7155 3 19.3852 6.64512 19.3852 11.1456C19.3852 12.9371 18.8037 14.5931 17.8184 15.9375L19.8361 17.4048C20.6705 17.912 21.7554 18.6543 20.2454 20.215C18.7353 21.7756 18.0099 20.6663 17.4991 19.8364L15.9421 17.7835Z\"\n fill=\"#6A737D\"\n />\n </svg>\n <input\n [ngModel]=\"searchInput\"\n [ngStyle]=\"{\n paddingLeft: isSearchInputFocused ? '12px' : '45px',\n border: isSearchInputFocused ? '1px solid #0937B2' : '1px solid #e0e0e0',\n paddingRight: isSearchInputFocused ? '45px' : '10px'\n }\"\n (ngModelChange)=\"searchInputOnChange($event)\"\n [placeholder]=\"isSearchInputFocused ? '' : 'Search Keyword'\"\n (focus)=\"searchInputFocused(true)\"\n class=\"search-input\"\n />\n <svg\n *ngIf=\"isSearchInputFocused\"\n class=\"cancel-icon\"\n (click)=\"searchInputCanceled($event)\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M8.87446 7.32144C8.44588 6.89285 7.751 6.89285 7.32242 7.32144C6.89383 7.75002 6.89383 8.4449 7.32242 8.87349L10.4488 11.9999L7.32357 15.1252C6.89498 15.5538 6.89498 16.2486 7.32357 16.6772C7.75215 17.1058 8.44703 17.1058 8.87561 16.6772L12.0009 13.552L15.1261 16.6772C15.5547 17.1058 16.2496 17.1058 16.6781 16.6772C17.1067 16.2486 17.1067 15.5537 16.6781 15.1251L13.5529 11.9999L16.6793 8.87354C17.1079 8.44496 17.1079 7.75008 16.6793 7.3215C16.2507 6.89291 15.5558 6.89291 15.1273 7.3215L12.0009 10.4479L8.87446 7.32144Z\"\n fill=\"#6A737D\"\n />\n </svg>\n </div>\n <div class=\"items\">\n <div\n tabindex=\"0\"\n (keyup.enter)=\"toggleSelectedItems($event, item)\"\n (click)=\"toggleSelectedItems($event, item)\"\n *ngFor=\"let item of searchInput ? searchData : localData\"\n >\n <div class=\"item\">\n <div class=\"checkbox-container-wrapper\">\n <div class=\"checkbox-container\">\n <mis-checkbox [checked]=\"item.checked\"></mis-checkbox>\n </div>\n <p class=\"label\">\n {{ item.label }}\n </p>\n </div>\n <div class=\"icon-container\" *ngIf=\"item.icon\">\n <img class=\"icon\" [src]=\"item.icon\" alt=\"no img\" />\n </div>\n </div>\n <div *ngIf=\"item?.children?.length > 0\" class=\"items sub\" [ngStyle]=\"{'padding-right': '0'}\">\n <div\n class=\"item\"\n tabindex=\"0\"\n (keyup.enter)=\"toggleSelectedItems($event, item, cItem)\"\n (click)=\"toggleSelectedItems($event, item, cItem)\"\n *ngFor=\"let cItem of item?.children\"\n >\n <div class=\"checkbox-container-wrapper\">\n <div class=\"checkbox-container\">\n <mis-checkbox [checked]=\"cItem.checked\"></mis-checkbox>\n </div>\n <p class=\"label\">\n {{ cItem.label }}\n </p>\n </div>\n <div class=\"icon-container\" *ngIf=\"cItem.icon\">\n <img class=\"icon\" [src]=\"cItem.icon\" alt=\"no img\" />\n </div>\n </div>\n </div>\n </div>\n <div class=\"noData\" *ngIf=\"(searchInput ? searchData : localData).length === 0\">\n {{ searchInput === \"\" ? noDataMessage : \"No results\" }}\n </div>\n </div>\n <div *ngIf=\"localData.length !== 0\" class=\"actions-container\">\n <div [ngStyle]=\"{'width': 'calc(50% - 4px)'}\">\n <mis-button [name]=\"'Reset'\" [type]=\"'Text'\" [width]=\"'100%'\" (click)=\"onReset()\"></mis-button>\n </div>\n <div [ngStyle]=\"{'width': 'calc(50% - 4px)'}\">\n <mis-button [name]=\"'Apply'\" [type]=\"'Solid'\" [width]=\"'100%'\" (click)=\"applyFilters()\"></mis-button>\n </div> \n </div>\n </div>\n</ng-template>\n", styles: [":root{--pmry-200: #99BAF7;--pmry-100: #CBDDFB;--pmry-500: #0937B2;--pmry-400: #3C68D0;--pmry-600: #062A99;--pmry-700: #041F80;--pmry-300: #638FE7;--pmry-800: #021567;--pmry-900: #010F55;--sec-d-purple: #40447F;--sec-maroon: #6B034E;--sec-mud-red: #B23600;--sec-orange: #ED711C;--sec-purple: #815FD5;--sec-teal: #10ADAE;--sec-yellow: #D4900C;--sec-green: #547F40;--sec-bright-green: #27D22E;--sec-dark-teal: #035F6B;--sec-chocolate: #7C2F33;--sec-rube-pink: #C13D6D;--sec-cerulean: #0087B2;--sem-error: #B00020;--sem-info: #0091FF;--sem-warning: #FF9D00;--sem-success: #38AF49;--grey-bg-1: #FAFAFA;--grey-bg: #F5F5F5;--grey-seperators: #E0E0E0;--grey-disabled: #C8CDD3;--grey-hover: #F5F7FC;--grey-pressed: #E6EBF7;--grey-row: #F5F7FC;--dec-light-yellow: #F4E7C3;--dec-light-purple: #DACFF9;--dec-light-green: #E4F5E9;--dec-light-green2: #F1FFF3;--dec-light-pink: #FAE1EA;--dec-: #F4CBC1;--dec-lt-orange: #FAEFED;--dec-light-blue: #CFECF9;--dec-row-selection: #F1FDF8;--dec-row-selection2: #F2FBFF;--dec-row-lines: #D3E1E9;--text-white: #FFFFFF;--text-muted: #6A737D;--text-black: #181F33;--MR-solid-blue2:#C8D5F6;--MR-solid-purple:#C9C3FB;--MR-solid-orange:#EEAC9F;--MR-solid-green:#ACDADA;--MR-solid-brown:#E8C8AF;--MR-solid-yellow:#FFEFC7;--MR-solid-blue:#BBE6FF;--MR-solid-pink:#FFC6F2;--tr-hover:#F0F3FA;--tr-pressed:#DAE1F3;--brand-primary: #0937B2;--brand-primary-light: #3C68D0;--brand-primary-dark: #062A99;--brand-primary-darker: #041F80;--brand-primary-lighter: #638FE7;--brand-primary-lightest: #CBDDFB;--brand-primary-hover: #F0F3FA;--brand-primary-active: #DAE1F3;--brand-secondary: #ED711C;--brand-secondary-light: #F09E65;--brand-secondary-dark: #B23600;--brand-secondary-lighter: #FFC6F2;--brand-accent: #10ADAE;--brand-accent-light: #16CBBC;--brand-accent-dark: #035F6B;--brand-accent-lighter: #ACDADA;--brand-success: #38AF49;--brand-success-light: #4CAF50;--brand-success-dark: #216531;--brand-success-lighter: #E4F5E9;--brand-success-lightest: #F1FFF3;--brand-error: #B00020;--brand-error-light: #F04E4E;--brand-error-dark: #A60060;--brand-error-lighter: #FAE1EA;--brand-error-lightest: #FDF2F2;--brand-warning: #FF9D00;--brand-warning-light: #D4900C;--brand-warning-dark: #624000;--brand-warning-lighter: #F4E7C3;--brand-warning-lightest: #FAEFED;--brand-info: #0091FF;--brand-info-light: #35A1FF;--brand-info-dark: #0087B2;--brand-info-lighter: #CFECF9;--text-primary: #181F33;--text-secondary: #6A737D;--text-tertiary: #929DAB;--text-disabled: #929DAB;--text-primary-87: rgba(24, 31, 51, .87);--text-primary-60: rgba(24, 31, 51, .6);--text-primary-38: rgba(24, 31, 51, .38);--text-primary-12: rgba(24, 31, 51, .12);--bg-primary: #FFFFFF;--bg-secondary: #FAFAFA;--bg-tertiary: #F5F5F5;--bg-overlay: rgba(0, 0, 0, .32);--bg-overlay-light: rgba(0, 0, 0, .12);--bg-overlay-lighter: rgba(0, 0, 0, .08);--bg-overlay-lightest: rgba(0, 0, 0, .04);--border-primary: #E0E0E0;--border-secondary: #D6DCE2;--border-tertiary: #C8CDD3;--border-light: #F1F4F8;--border-primary-12: rgba(0, 0, 0, .12);--border-primary-08: rgba(0, 0, 0, .08);--border-primary-06: rgba(0, 0, 0, .06);--shadow-primary: rgba(0, 0, 0, .12);--shadow-secondary: rgba(0, 0, 0, .08);--shadow-tertiary: rgba(0, 0, 0, .04);--shadow-light: rgba(0, 0, 0, .06);--status-available: #929DAB;--status-unavailable: #CCD3DA;--status-hotseat: #857BFF;--status-multiteam: #10ADAE;--status-selected: #10ADAE;--status-upcoming: #D4900C;--status-room: #38AF49;--status-room-booked: #B23600;--status-room-unavailable: #181F33;--team-color-1: #F8C52E;--team-color-2: #FA8E20;--team-color-3: #987CDD;--team-color-4: #16CBBC;--team-color-5: #E65010;--team-color-6: #A60060;--team-color-7: #ED323B;--team-color-8: #35A1FF;--team-color-9: #80D348}::-webkit-scrollbar{width:5px}::-webkit-scrollbar-thumb{background:var(--text-tertiary, #929DAB)}.container{position:relative;display:flex;justify-content:center;align-items:center;height:32px;width:256px;flex-wrap:wrap;font-family:Lato,sans-serif}.container .dropdown{height:inherit;border:1px solid var(--border-primary, #E0E0E0);border-radius:6px;background-color:var(--bg-primary, #FFFFFF);cursor:pointer;display:flex;justify-content:space-between;align-items:center;width:100%;padding:0 12px;overflow:hidden}.container .dropdown:hover,.container .dropdown:focus-visible{background-color:var(--brand-primary-hover, #F0F3FA);outline:none}.container .dropdown .label{display:flex;justify-content:flex-start;align-items:center;width:calc(100% - 32px);font-style:normal;font-weight:400;font-size:14px;line-height:20px;letter-spacing:.2px;color:var(--text-primary, #181F33)}.container .dropdown .label .text{text-overflow:ellipsis;overflow:hidden;white-space:nowrap;font-style:normal;font-weight:400;font-size:14px;line-height:20px;letter-spacing:.2px;color:var(--text-primary, #181F33)}.container .dropdown .label .count{background-color:var(--border-primary, #E0E0E0);border-radius:50%;padding:2px 7px;margin:0 0 0 8px;font-style:normal;font-weight:400;font-size:14px;line-height:20px;text-align:center;letter-spacing:.2px;color:var(--text-primary, #181F33)}.container .dropdown .handle{width:24px;height:24px;transition:.3s;position:absolute;right:12px;border-radius:50%;overflow:hidden}.popup-container{position:absolute;top:4px;width:100%;max-height:340px;padding-bottom:0;border:1px solid var(--border-primary, #E0E0E0);border-radius:8px;background-color:var(--bg-primary, #FFFFFF);box-shadow:0 12px 24px #0000001f;overflow-x:hidden;display:flex;flex-direction:column;justify-content:space-between;z-index:100}.popup-container::-webkit-scrollbar{width:0;height:0}.popup-container .search-container{position:relative;box-sizing:border-box;padding:8px}.popup-container .search-container .search-icon{position:absolute;width:24px;height:24px;top:50%;transform:translateY(-50%);left:18px;z-index:1}.popup-container .search-container .search-input{height:40px;width:100%;padding:12px;border:1px solid var(--border-primary, #E0E0E0);box-sizing:border-box;border-radius:8px;outline:none;caret-color:var(--brand-primary, #0937B2);font-style:normal;font-weight:400;font-size:12px;line-height:18px;display:flex;align-items:center;letter-spacing:.2px;color:var(--text-primary, #181F33)}.popup-container .search-container .cancel-icon{position:absolute;cursor:pointer;width:24px;height:24px;top:50%;transform:translateY(-50%);right:18px;z-index:1}.popup-container .items{padding:8px 0 8px 8px;overflow-y:scroll;height:100%}.popup-container .items::-webkit-scrollbar{width:5px;height:0}.popup-container .items::-webkit-scrollbar-thumb{background:var(--text-tertiary, #929DAB);border-radius:10px}.popup-container .items .noData{display:flex;justify-content:center;align-items:center;font-style:normal;font-weight:400;font-size:14px;line-height:20px;letter-spacing:.2px;color:var(--text-primary, #181F33)}.popup-container .items .item{cursor:pointer;display:flex;justify-content:flex-start;align-items:center;padding:8px 12px;border-radius:6px;height:auto}.popup-container .items .item:hover,.popup-container .items .item:focus-visible{background-color:var(--brand-primary-hover, #F0F3FA);outline:none}.popup-container .items .item .checkbox-container-wrapper{display:flex;justify-content:flex-start;align-items:center;width:90%}.popup-container .items .item .checkbox-container-wrapper .checkbox-container{display:block;position:relative;cursor:pointer;font-size:22px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.popup-container .items .item .checkbox-container-wrapper .checkbox-container input{position:absolute;opacity:0;cursor:pointer;height:0;width:0}.popup-container .items .item .checkbox-container-wrapper .checkbox-container input:checked~.checkmark:after{display:block}.popup-container .items .item .checkbox-container-wrapper .checkbox-container .checkmark{position:absolute;top:-8px;left:0;height:15px;width:15px;border-radius:4px;background-color:var(--brand-info, #0091FF);border:1px solid var(--text-secondary, #6A737D)}.popup-container .items .item .checkbox-container-wrapper .checkbox-container .checkmark:after{content:\"\";position:absolute;display:none;left:5px;top:2px;width:3px;height:6px;border:solid var(--bg-primary, #FFFFFF);border-width:0 2px 2px 0;-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.popup-container .items .item .checkbox-container-wrapper .label{margin:0 0 0 8px;font-style:normal;font-weight:400;font-size:14px;line-height:20px;letter-spacing:.2px;color:var(--text-primary, #181F33);text-overflow:ellipsis;overflow:hidden}.popup-container .items .item .icon-container{width:10%;display:flex;justify-content:flex-end}.popup-container .items .item .icon-container .icon{width:20px;height:20px}.popup-container .actions-container{display:flex;justify-content:space-between;bottom:0;align-items:center;position:sticky;padding:16px;background-color:var(--bg-primary, #FFFFFF);border-top:1px solid var(--border-primary, #E0E0E0)}.popup-container .actions-container .cancel{cursor:pointer;padding:10px 32px;text-align:center;font-size:16px;line-height:24px;border-radius:8px}.popup-container .actions-container .cancel:hover{background:var(--bg-overlay-lightest, rgba(0, 0, 0, .04))}.popup-container .actions-container .apply{cursor:pointer;padding:10px 32px;text-align:center;color:var(--bg-primary, #FFFFFF);font-size:16px;line-height:24px;background:var(--brand-primary, #0937B2);border-radius:8px}\n"] }]
484
- }], () => [{ type: i0.ElementRef }, { type: i1.Overlay }, { type: i0.ViewContainerRef }], { data: [{
485
- type: Input
486
- }], label: [{
487
- type: Input
488
- }], height: [{
489
- type: Input
490
- }], width: [{
491
- type: Input
492
- }], dropdownListHeight: [{
493
- type: Input
494
- }], dropdownListWidth: [{
495
- type: Input
496
- }], dropdownListPosition: [{
497
- type: Input
498
- }], searchEnabled: [{
499
- type: Input
500
- }], showSelectedCount: [{
501
- type: Input
502
- }], noDataMessage: [{
503
- type: Input
504
- }], selectedItems: [{
505
- type: Input
506
- }], onChange: [{
507
- type: Output
508
- }], selectElement: [{
470
+ args: [{ selector: 'mis-nested-multi-select-dropdown', template: "<div\n class=\"container\"\n [ngStyle]=\"{\n height: height().length > 0 ? height() : '',\n width: width().length > 0 ? width() : ''\n }\"\n>\n <div\n class=\"dropdown\"\n #select\n tabindex=\"0\"\n (keyup.enter)=\"toggleDropdown()\"\n (click)=\"toggleDropdown()\"\n [ngStyle]=\"{ background: isOpen() ? '#E6EBF7' : '' }\"\n >\n <div class=\"label\">\n <p class=\"text\">{{ label() }}</p>\n <p *ngIf=\"showSelectedCount() && selectedCount() > 0\" class=\"count\">\n {{ selectedCount() }}\n </p>\n </div>\n <svg\n class=\"handle\"\n [ngStyle]=\"{ transform: isOpen() ? 'rotate(180deg)' : 'rotate(0deg)' }\"\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M13.825 7.15845L10 10.9751L6.175 7.15845L5 8.33345L10 13.3334L15 8.33345L13.825 7.15845Z\"\n fill=\"#181F33\"\n />\n </svg>\n </div>\n</div>\n<ng-template #popupContainer>\n <div\n class=\"popup-container\"\n [ngStyle]=\"{\n height: dropdownListHeight(),\n width: dropdownListWidth()\n }\"\n [ngClass]=\"{\n 'position-left': dropdownListPosition() === 'Left',\n 'position-right': dropdownListPosition() === 'Right'\n }\"\n >\n <div *ngIf=\"searchEnabled()\" class=\"search-container\">\n <svg\n *ngIf=\"!isSearchInputFocused()\"\n class=\"search-icon\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M4.21508 11.1456C4.21508 7.3179 7.33722 4.21165 11.1926 4.21165C15.048 4.21165 18.1702 7.3179 18.1702 11.1456C18.1702 12.6931 17.6599 14.1226 16.7972 15.2767L15.3685 16.7013C14.2044 17.5668 12.759 18.0796 11.1926 18.0796C7.33722 18.0796 4.21508 14.9734 4.21508 11.1456ZM15.9421 17.7835C14.6021 18.7329 12.9627 19.2913 11.1926 19.2913C6.66977 19.2913 3 15.6461 3 11.1456C3 6.64512 6.66977 3 11.1926 3C15.7155 3 19.3852 6.64512 19.3852 11.1456C19.3852 12.9371 18.8037 14.5931 17.8184 15.9375L19.8361 17.4048C20.6705 17.912 21.7554 18.6543 20.2454 20.215C18.7353 21.7756 18.0099 20.6663 17.4991 19.8364L15.9421 17.7835Z\"\n fill=\"#6A737D\"\n />\n </svg>\n <input\n [ngModel]=\"searchInput()\"\n [ngStyle]=\"{\n paddingLeft: isSearchInputFocused() ? '12px' : '45px',\n border: isSearchInputFocused() ? '1px solid #0937B2' : '1px solid #e0e0e0',\n paddingRight: isSearchInputFocused() ? '45px' : '10px'\n }\"\n (ngModelChange)=\"searchInputOnChange($event)\"\n [placeholder]=\"isSearchInputFocused() ? '' : searchInputPlaceholder()\"\n (focus)=\"searchInputFocused(true)\"\n class=\"search-input\"\n />\n <svg\n *ngIf=\"isSearchInputFocused()\"\n class=\"cancel-icon\"\n (click)=\"searchInputCanceled($event)\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M8.87446 7.32144C8.44588 6.89285 7.751 6.89285 7.32242 7.32144C6.89383 7.75002 6.89383 8.4449 7.32242 8.87349L10.4488 11.9999L7.32357 15.1252C6.89498 15.5538 6.89498 16.2486 7.32357 16.6772C7.75215 17.1058 8.44703 17.1058 8.87561 16.6772L12.0009 13.552L15.1261 16.6772C15.5547 17.1058 16.2496 17.1058 16.6781 16.6772C17.1067 16.2486 17.1067 15.5537 16.6781 15.1251L13.5529 11.9999L16.6793 8.87354C17.1079 8.44496 17.1079 7.75008 16.6793 7.3215C16.2507 6.89291 15.5558 6.89291 15.1273 7.3215L12.0009 10.4479L8.87446 7.32144Z\"\n fill=\"#6A737D\"\n />\n </svg>\n </div>\n <div class=\"items\">\n <div\n tabindex=\"0\"\n (keyup.enter)=\"toggleSelectedItems($event, item)\"\n (click)=\"toggleSelectedItems($event, item)\"\n *ngFor=\"let item of displayData()\"\n >\n <div class=\"item\">\n <div class=\"checkbox-container-wrapper\">\n <div class=\"checkbox-container\">\n <mis-checkbox [checked]=\"item.checked\"></mis-checkbox>\n </div>\n <p class=\"label\">\n {{ item.label }}\n </p>\n </div>\n <div class=\"icon-container\" *ngIf=\"item.icon\">\n <img class=\"icon\" [src]=\"item.icon\" alt=\"no img\" />\n </div>\n </div>\n <div *ngIf=\"item?.children?.length > 0\" class=\"items sub\" [ngStyle]=\"{'padding-right': '0'}\">\n <div\n class=\"item\"\n tabindex=\"0\"\n (keyup.enter)=\"toggleSelectedItems($event, item, cItem)\"\n (click)=\"toggleSelectedItems($event, item, cItem)\"\n *ngFor=\"let cItem of item?.children\"\n >\n <div class=\"checkbox-container-wrapper\">\n <div class=\"checkbox-container\">\n <mis-checkbox [checked]=\"cItem.checked\"></mis-checkbox>\n </div>\n <p class=\"label\">\n {{ cItem.label }}\n </p>\n </div>\n <div class=\"icon-container\" *ngIf=\"cItem.icon\">\n <img class=\"icon\" [src]=\"cItem.icon\" alt=\"no img\" />\n </div>\n </div>\n </div>\n </div>\n <div class=\"noData\" *ngIf=\"displayData().length === 0\">\n {{ searchInput() === \"\" ? noDataMessage() : \"No results\" }}\n </div>\n </div>\n <div *ngIf=\"localData().length !== 0\" class=\"actions-container\">\n <div [ngStyle]=\"{'width': 'calc(50% - 4px)'}\">\n <mis-button [name]=\"'Reset'\" [type]=\"'Text'\" [width]=\"'100%'\" (click)=\"onReset()\"></mis-button>\n </div>\n <div [ngStyle]=\"{'width': 'calc(50% - 4px)'}\">\n <mis-button [name]=\"'Apply'\" [type]=\"'Solid'\" [width]=\"'100%'\" (click)=\"applyFilters()\"></mis-button>\n </div>\n </div>\n </div>\n</ng-template>\n\n", styles: ["::-webkit-scrollbar{width:5px}::-webkit-scrollbar-thumb{background:#9aa7b4}.container{position:relative;display:flex;justify-content:center;align-items:center;height:32px;width:256px;flex-wrap:wrap;font-family:Lato,sans-serif}.container .dropdown{height:inherit;border:1px solid #e0e0e0;border-radius:6px;background-color:#fff;cursor:pointer;display:flex;justify-content:space-between;align-items:center;width:100%;padding:0 12px;overflow:hidden}.container .dropdown:hover,.container .dropdown:focus-visible{background-color:#f5f7fc;outline:none}.container .dropdown .label{display:flex;justify-content:flex-start;align-items:center;width:calc(100% - 32px);font-style:normal;font-weight:400;font-size:14px;line-height:20px;letter-spacing:.2px;color:#181f33}.container .dropdown .label .text{text-overflow:ellipsis;overflow:hidden;white-space:nowrap;font-style:normal;font-weight:400;font-size:14px;line-height:20px;letter-spacing:.2px;color:#181f33}.container .dropdown .label .count{background-color:#e0e0e0;border-radius:50%;padding:2px 7px;margin:0 0 0 8px;font-style:normal;font-weight:400;font-size:14px;line-height:20px;text-align:center;letter-spacing:.2px;color:#181f33}.container .dropdown .handle{width:24px;height:24px;transition:.3s;position:absolute;right:12px;border-radius:50%;overflow:hidden}.popup-container{position:absolute;top:4px;width:100%;max-height:340px;padding-bottom:0;border:1px solid #e0e0e0;border-radius:8px;background-color:#fff;box-shadow:0 12px 24px #0000001f;overflow-x:hidden;display:flex;flex-direction:column;justify-content:space-between;z-index:100}.popup-container::-webkit-scrollbar{width:0;height:0}.popup-container .search-container{position:relative;box-sizing:border-box;padding:8px}.popup-container .search-container .search-icon{position:absolute;width:24px;height:24px;top:50%;transform:translateY(-50%);left:18px;z-index:1}.popup-container .search-container .search-input{height:40px;width:100%;padding:12px;border:1px solid #e0e0e0;box-sizing:border-box;border-radius:8px;outline:none;caret-color:#0937b2;font-style:normal;font-weight:400;font-size:12px;line-height:18px;display:flex;align-items:center;letter-spacing:.2px;color:#181f33}.popup-container .search-container .cancel-icon{position:absolute;cursor:pointer;width:24px;height:24px;top:50%;transform:translateY(-50%);right:18px;z-index:1}.popup-container .items{padding:8px 0 8px 8px;overflow-y:scroll;height:100%}.popup-container .items::-webkit-scrollbar{width:5px;height:0}.popup-container .items::-webkit-scrollbar-thumb{background:#9aa7b4;border-radius:10px}.popup-container .items .noData{display:flex;justify-content:center;align-items:center;font-style:normal;font-weight:400;font-size:14px;line-height:20px;letter-spacing:.2px;color:#181f33}.popup-container .items .item{cursor:pointer;display:flex;justify-content:flex-start;align-items:center;padding:8px 12px;border-radius:6px;height:auto}.popup-container .items .item:hover,.popup-container .items .item:focus-visible{background-color:#f5f7fc;outline:none}.popup-container .items .item .checkbox-container-wrapper{display:flex;justify-content:flex-start;align-items:center;width:90%}.popup-container .items .item .checkbox-container-wrapper .checkbox-container{display:block;position:relative;cursor:pointer;font-size:22px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.popup-container .items .item .checkbox-container-wrapper .checkbox-container input{position:absolute;opacity:0;cursor:pointer;height:0;width:0}.popup-container .items .item .checkbox-container-wrapper .checkbox-container input:checked~.checkmark:after{display:block}.popup-container .items .item .checkbox-container-wrapper .checkbox-container .checkmark{position:absolute;top:-8px;left:0;height:15px;width:15px;border-radius:4px;background-color:#0079f1;border:1px solid rgb(106,115,125)}.popup-container .items .item .checkbox-container-wrapper .checkbox-container .checkmark:after{content:\"\";position:absolute;display:none;left:5px;top:2px;width:3px;height:6px;border:solid white;border-width:0 2px 2px 0;-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.popup-container .items .item .checkbox-container-wrapper .label{margin:0 0 0 8px;font-style:normal;font-weight:400;font-size:14px;line-height:20px;letter-spacing:.2px;color:#181f33;text-overflow:ellipsis;overflow:hidden}.popup-container .items .item .icon-container{width:10%;display:flex;justify-content:flex-end}.popup-container .items .item .icon-container .icon{width:20px;height:20px}.popup-container .actions-container{display:flex;justify-content:space-between;bottom:0;align-items:center;position:sticky;padding:16px;background-color:#fff;border-top:1px solid #e0e0e0}.popup-container .actions-container .cancel{cursor:pointer;padding:10px 32px;text-align:center;font-size:16px;line-height:24px;border-radius:8px}.popup-container .actions-container .cancel:hover{background:#0937b20a}.popup-container .actions-container .apply{cursor:pointer;padding:10px 32px;text-align:center;color:#fff;font-size:16px;line-height:24px;background:#0937b2;border-radius:8px}\n"] }]
471
+ }], () => [], { selectElement: [{
509
472
  type: ViewChild,
510
- args: ["select", { static: false }]
473
+ args: ['select', { static: false }]
511
474
  }], popupContainer: [{
512
475
  type: ViewChild,
513
- args: ["popupContainer", { static: false }]
476
+ args: ['popupContainer', { static: false }]
514
477
  }] }); })();
515
478
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(NestedMultiSelectDropdownComponent, { className: "NestedMultiSelectDropdownComponent" }); })();
516
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmVzdGVkLW11bHRpLXNlbGVjdC1kcm9wZG93bi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9taXMtY29tcG9uZW50cy9uZXN0ZWQtbXVsdGktc2VsZWN0LWRyb3Bkb3duL25lc3RlZC1tdWx0aS1zZWxlY3QtZHJvcGRvd24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvbWlzLWNvbXBvbmVudHMvbmVzdGVkLW11bHRpLXNlbGVjdC1kcm9wZG93bi9uZXN0ZWQtbXVsdGktc2VsZWN0LWRyb3Bkb3duLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBdUIsc0JBQXNCLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEcsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxTQUFTLEVBQWMsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQWUsU0FBUyxFQUFvQixNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7SUNlL0gsNEJBQWdFO0lBQzlELFlBQ0Y7SUFBQSxpQkFBSTs7O0lBREYsY0FDRjtJQURFLHFEQUNGOzs7O0lBaUNBLCtCQVFDO0lBQ0MsMkJBS0U7SUFDSixpQkFBTTs7Ozs7SUFhTiwrQkFTQztJQU5DLDJOQUFTLGtDQUEyQixLQUFDO0lBT3JDLDJCQUtFO0lBQ0osaUJBQU07Ozs7SUE3Q1IsK0JBQW9EO0lBQ2xELDZHQVFDO0lBUUQsaUNBV0U7SUFGQSxBQUZBLGtPQUFpQixrQ0FBMkIsS0FBQywrTEFFcEMsMEJBQW1CLElBQUksQ0FBQyxLQUFDO0lBVHBDLGlCQVdFO0lBQ0YsNkdBU0M7SUFRSCxpQkFBTTs7O0lBNUNELGNBQTJCO0lBQTNCLG1EQUEyQjtJQWdCNUIsY0FBdUI7SUFPdkIsQUFOQSxBQURBLDRDQUF1Qiw4TUFLckIsb0VBRTBEO0lBSzNE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QUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7O2tGQXpDbkMsa0NBQWtDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT3ZlcmxheVJlZiwgT3ZlcmxheSwgQ29ubmVjdGlvblBvc2l0aW9uUGFpciwgT3ZlcmxheUNvbmZpZyB9IGZyb20gXCJAYW5ndWxhci9jZGsvb3ZlcmxheVwiO1xuaW1wb3J0IHsgVGVtcGxhdGVQb3J0YWwgfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL3BvcnRhbFwiO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCwgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJtaXMtbmVzdGVkLW11bHRpLXNlbGVjdC1kcm9wZG93blwiLFxuICB0ZW1wbGF0ZVVybDogXCIuL25lc3RlZC1tdWx0aS1zZWxlY3QtZHJvcGRvd24uY29tcG9uZW50Lmh0bWxcIixcbiAgc3R5bGVVcmxzOiBbXCIuL25lc3RlZC1tdWx0aS1zZWxlY3QtZHJvcGRvd24uY29tcG9uZW50LnNjc3NcIl1cbn0pXG5leHBvcnQgY2xhc3MgTmVzdGVkTXVsdGlTZWxlY3REcm9wZG93bkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHNlYXJjaElucHV0OiBzdHJpbmcgPSBcIlwiO1xuICBpc09wZW4gPSBmYWxzZTtcbiAgbG9jYWxTZWxlY3RlZEl0ZW1zOiBOZXN0ZWRNdWx0aVNlbGVjdERyb3Bkb3duSXRlbVtdID0gW107XG4gIGxvY2FsRGF0YTogTmVzdGVkTXVsdGlTZWxlY3REcm9wZG93bkl0ZW1bXSA9IFtdO1xuICBzZWFyY2hEYXRhOiBOZXN0ZWRNdWx0aVNlbGVjdERyb3Bkb3duSXRlbVtdID0gW107XG4gIHNlbGVjdGVkQ291bnQ6IG51bWJlciA9IDA7XG5cbiAgQElucHV0KCkgc2V0IGRhdGEodmFsdWVzOiBOZXN0ZWRNdWx0aVNlbGVjdERyb3Bkb3duSXRlbVtdKSB7XG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLXNoYWRvd2VkLXZhcmlhYmxlXG4gICAgdGhpcy5sb2NhbERhdGEgPSB2YWx1ZXMubWFwKGl0ZW0gPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uaXRlbSxcbiAgICAgICAgY2hlY2tlZDogZmFsc2UsXG4gICAgICAgIGNoaWxkcmVuOiBpdGVtLmNoaWxkcmVuLm1hcChhID0+IHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4uYSxcbiAgICAgICAgICAgIGNoZWNrZWQ6IGZhbHNlXG4gICAgICAgICAgfTtcbiAgICAgICAgfSlcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cbiAgQElucHV0KCkgbGFiZWw6IHN0cmluZyA9IFwiU2VsZWN0XCI7XG4gIEBJbnB1dCgpIGhlaWdodDogc3RyaW5nID0gXCJcIjtcbiAgQElucHV0KCkgd2lkdGg6IHN0cmluZyA9IFwiXCI7XG5cbiAgQElucHV0KCkgZHJvcGRvd25MaXN0SGVpZ2h0OiBzdHJpbmcgPSBcIlwiO1xuICBASW5wdXQoKSBkcm9wZG93bkxpc3RXaWR0aDogc3RyaW5nID0gXCJcIjtcbiAgQElucHV0KCkgZHJvcGRvd25MaXN0UG9zaXRpb246IFwiTGVmdFwiIHwgXCJSaWdodFwiID0gXCJMZWZ0XCI7XG5cbiAgQElucHV0KCkgc2VhcmNoRW5hYmxlZDogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgpIHNob3dTZWxlY3RlZENvdW50OiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIG5vRGF0YU1lc3NhZ2U6IHN0cmluZyA9IFwiTm8gRGF0YVwiO1xuICBASW5wdXQoKSBzZXQgc2VsZWN0ZWRJdGVtcyh2YWx1ZXM6IE5lc3RlZE11bHRpU2VsZWN0RHJvcGRvd25JdGVtW10pIHtcbiAgICB0aGlzLmhhbmRsZXJTZXRMb2NhbFNlbGVjdGVkSXRlbXModmFsdWVzKTtcbiAgfVxuXG4gIEBPdXRwdXQoKSBvbkNoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgQFZpZXdDaGlsZChcInNlbGVjdFwiLCB7IHN0YXRpYzogZmFsc2UgfSkgc2VsZWN0RWxlbWVudDogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZChcInBvcHVwQ29udGFpbmVyXCIsIHsgc3RhdGljOiBmYWxzZSB9KSBwb3B1cENvbnRhaW5lcjogVGVtcGxhdGVSZWY8RWxlbWVudD47XG4gIHByaXZhdGUgb3ZlcmxheVJlZjogT3ZlcmxheVJlZjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVSZWY6IEVsZW1lbnRSZWYsIHByaXZhdGUgb3ZlcmxheTogT3ZlcmxheSwgcHJpdmF0ZSB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmKSB7fVxuICBuZ09uSW5pdCgpIHt9XG5cbiAgaGFuZGxlclNldExvY2FsU2VsZWN0ZWRJdGVtcyh2YWx1ZXMpIHtcbiAgICB0aGlzLmxvY2FsU2VsZWN0ZWRJdGVtcyA9IHZhbHVlcztcbiAgfVxuICBpc1NlYXJjaElucHV0Rm9jdXNlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBzZWFyY2hJbnB1dEZvY3VzZWQoaXNGb2N1c2VkOiBib29sZWFuKSB7XG4gICAgdGhpcy5pc1NlYXJjaElucHV0Rm9jdXNlZCA9IGlzRm9jdXNlZDtcbiAgfVxuICBzZWFyY2hJbnB1dENhbmNlbGVkKGV2ZW50KSB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5zZWFyY2hJbnB1dCA9IFwiXCI7XG4gICAgdGhpcy5pc1NlYXJjaElucHV0Rm9jdXNlZCA9IGZhbHNlO1xuICB9XG4gIHRvZ2dsZURyb3Bkb3duKCkge1xuICAgIHRoaXMuaXNPcGVuID0gIXRoaXMuaXNPcGVuO1xuICAgIGlmICh0aGlzLmlzT3Blbikge1xuICAgICAgdGhpcy5oYW5kbGVyU2V0TG9jYWxTZWxlY3RlZEl0ZW1zKHRoaXMubG9jYWxTZWxlY3RlZEl0ZW1zKTtcbiAgICAgIHRoaXMubG9jYWxEYXRhID0gdGhpcy5mb3JtYXRWYWx1ZXModGhpcy5sb2NhbERhdGEpO1xuICAgIH1cbiAgICBpZiAodGhpcy5pc09wZW4pIHRoaXMub3BlbkRyb3Bkb3duKHRoaXMucG9wdXBDb250YWluZXIsIHRoaXMuc2VsZWN0RWxlbWVudC5uYXRpdmVFbGVtZW50KTtcbiAgICBlbHNlIHRoaXMub25DYW5jZWwoKTtcbiAgfVxuICBwcml2YXRlIG9wZW5Ecm9wZG93bih0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8RWxlbWVudD4sIG9yaWdpbjogSFRNTEVsZW1lbnQpOiB2b2lkIHtcbiAgICBjb25zdCBwb3NpdGlvbnNCb3R0b20gPSBbXG4gICAgICBuZXcgQ29ubmVjdGlvblBvc2l0aW9uUGFpcih7IG9yaWdpblg6IFwic3RhcnRcIiwgb3JpZ2luWTogXCJib3R0b21cIiB9LCB7IG92ZXJsYXlYOiBcInN0YXJ0XCIsIG92ZXJsYXlZOiBcInRvcFwiIH0sIDAsIDQpLFxuICAgICAgbmV3IENvbm5lY3Rpb25Qb3NpdGlvblBhaXIoeyBvcmlnaW5YOiBcImVuZFwiLCBvcmlnaW5ZOiBcImJvdHRvbVwiIH0sIHsgb3ZlcmxheVg6IFwiZW5kXCIsIG92ZXJsYXlZOiBcInRvcFwiIH0sIDAsIDQpXG4gICAgXTtcbiAgICBjb25zdCBwb3NpdGlvbnNUb3AgPSBbXG4gICAgICBuZXcgQ29ubmVjdGlvblBvc2l0aW9uUGFpcih7IG9yaWdpblg6IFwic3RhcnRcIiwgb3JpZ2luWTogXCJ0b3BcIiB9LCB7IG92ZXJsYXlYOiBcInN0YXJ0XCIsIG92ZXJsYXlZOiBcImJvdHRvbVwiIH0sIDAsIC00KSxcbiAgICAgIG5ldyBDb25uZWN0aW9uUG9zaXRpb25QYWlyKHsgb3JpZ2luWDogXCJlbmRcIiwgb3JpZ2luWTogXCJ0b3BcIiB9LCB7IG92ZXJsYXlYOiBcImVuZFwiLCBvdmVybGF5WTogXCJib3R0b21cIiB9LCAwLCAtNClcbiAgICBdO1xuICAgIGNvbnN0IHBvc2l0aW9uU3RyYXRlZ3kgPSB0aGlzLm92ZXJsYXlcbiAgICAgIC5wb3NpdGlvbigpXG4gICAgICAuZmxleGlibGVDb25uZWN0ZWRUbyhvcmlnaW4pXG4gICAgICAud2l0aFBvc2l0aW9ucyhbXG4gICAgICAgIC4uLih0aGlzLmRyb3Bkb3duTGlzdFBvc2l0aW9uID09PSBcIlJpZ2h0XCIgPyBwb3NpdGlvbnNCb3R0b20ucmV2ZXJzZSgpIDogcG9zaXRpb25zQm90dG9tKSxcbiAgICAgICAgLi4uKHRoaXMuZHJvcGRvd25MaXN0UG9zaXRpb24gPT09IFwiUmlnaHRcIiA/IHBvc2l0aW9uc1RvcC5yZXZlcnNlKCkgOiBwb3NpdGlvbnNUb3ApXG4gICAgICBdKVxuICAgICAgLndpdGhQdXNoKHRydWUpO1xuICAgIGNvbnN0IGNvbmZpZ3MgPSBuZXcgT3ZlcmxheUNvbmZpZyh7XG4gICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcbiAgICAgIGJhY2tkcm9wQ2xhc3M6IFwiY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BcIixcbiAgICAgIHNjcm9sbFN0cmF0ZWd5OiB0aGlzLm92ZXJsYXkuc2Nyb2xsU3RyYXRlZ2llcy5yZXBvc2l0aW9uKCksXG4gICAgICBwb3NpdGlvblN0cmF0ZWd5LFxuICAgICAgd2lkdGg6IG9yaWdpbi5jbGllbnRXaWR0aFxuICAgIH0pO1xuICAgIHRoaXMub3ZlcmxheVJlZiA9IHRoaXMub3ZlcmxheS5jcmVhdGUoY29uZmlncyk7XG4gICAgaWYgKHRoaXMuZHJvcGRvd25MaXN0V2lkdGgpIHRoaXMub3ZlcmxheVJlZi51cGRhdGVTaXplKHsgd2lkdGg6IHRoaXMuZHJvcGRvd25MaXN0V2lkdGggfSk7XG4gICAgaWYgKHRoaXMuZHJvcGRvd25MaXN0SGVpZ2h0KSB0aGlzLm92ZXJsYXlSZWYudXBkYXRlU2l6ZSh7IGhlaWdodDogdGhpcy5kcm9wZG93bkxpc3RIZWlnaHQgfSk7XG4gICAgdGhpcy5vdmVybGF5UmVmLmF0dGFjaChuZXcgVGVtcGxhdGVQb3J0YWwodGVtcGxhdGUsIHRoaXMudmlld0NvbnRhaW5lclJlZikpO1xuICAgIHRoaXMub3ZlcmxheVJlZi5iYWNrZHJvcENsaWNrKCkuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICB0aGlzLm9uQ2FuY2VsKCk7XG4gICAgfSk7XG4gIH1cbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOnZhcmlhYmxlLW5hbWVcbiAgZmlsdGVyQnlWYWx1ZShhcnJheTogTmVzdGVkTXVsdGlTZWxlY3REcm9wZG93bkl0ZW1bXSwgc3RyaW5nOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gYXJyYXlcbiAgICAgIC5maWx0ZXIoXG4gICAgICAgIG8gPT4gby5sYWJlbC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHN0cmluZy50b0xvd2VyQ2FzZSgpKSB8fCBvLmNoaWxkcmVuPy5zb21lKGcgPT4gZz8ubGFiZWw/LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc3RyaW5nLnRvTG93ZXJDYXNlKCkpKVxuICAgICAgKVxuICAgICAgLm1hcCh2ID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi52LFxuICAgICAgICAgIGNoaWxkcmVuOiB2Py5jaGlsZHJlbj8uZmlsdGVyKGwgPT4gbD8ubGFiZWw/LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc3RyaW5nLnRvTG93ZXJDYXNlKCkpKVxuICAgICAgICB9O1xuICAgICAgfSk7XG4gIH1cbiAgc2VhcmNoSW5wdXRPbkNoYW5nZShuZXdWYWx1ZSkge1xuICAgIHRoaXMuc2VhcmNoSW5wdXQgPSBuZXdWYWx1ZTtcbiAgICBpZiAobmV3VmFsdWUpIHtcbiAgICAgIHRoaXMuc2VhcmNoRGF0YSA9IHRoaXMuZmlsdGVyQnlWYWx1ZSh0aGlzLmxvY2FsRGF0YSwgbmV3VmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlYXJjaERhdGEgPSBbXTtcbiAgICAgIHRoaXMuc2VhcmNoSW5wdXQgPSBcIlwiO1xuICAgIH1cbiAgfVxuICBmb3JtYXRWYWx1ZXMoYXJyYXk6IE5lc3RlZE11bHRpU2VsZWN0RHJvcGRvd25JdGVtW10pIHtcbiAgICBjb25zdCBjaGVja2VkVmFsdWVzID0gYXJyYXlcbiAgICAgIC5maWx0ZXIoYSA9PiBhLmNoZWNrZWQpXG4gICAgICAuc29ydCgoYTogTmVzdGVkTXVsdGlTZWxlY3REcm9wZG93bkl0ZW0sIGI6IE5lc3RlZE11bHRpU2VsZWN0RHJvcGRvd25JdGVtKSA9PiAoYS5sYWJlbCA+IGIubGFiZWwgPyAxIDogYi5sYWJlbCA+IGEubGFiZWwgPyAtMSA6IDApKTtcbiAgICBjb25zdCB1bkNoZWNrZWRWYWx1ZXMgPSBhcnJheVxuICAgICAgLmZpbHRlcihhID0+ICFhLmNoZWNrZWQpXG4gICAgICAuc29ydCgoYTogTmVzdGVkTXVsdGlTZWxlY3REcm9wZG93bkl0ZW0sIGI6IE5lc3RlZE11bHRpU2VsZWN0RHJvcGRvd25JdGVtKSA9PiAoYS5sYWJlbCA+IGIubGFiZWwgPyAxIDogYi5sYWJlbCA+IGEubGFiZWwgPyAtMSA6IDApKTtcbiAgICByZXR1cm4gWy4uLmNoZWNrZWRWYWx1ZXMsIC4uLnVuQ2hlY2tlZFZhbHVlc107XG4gIH1cbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLXNoYWRvd2VkLXZhcmlhYmxlXG4gIHRvZ2dsZVNlbGVjdGVkSXRlbXMoZXZlbnQsIGl0ZW06IE5lc3RlZE11bHRpU2VsZWN0RHJvcGRvd25JdGVtLCBjSXRlbT86IGFueSkge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGlmICghY0l0ZW0pIHtcbiAgICAgIGlmIChpdGVtLmNoZWNrZWQpIHtcbiAgICAgICAgdGhpcy5sb2NhbERhdGEgPSBbXG4gICAgICAgICAgLi4udGhpcy5sb2NhbERhdGEubWFwKGEgPT4ge1xuICAgICAgICAgICAgaWYgKGEudmFsdWUgPT09IGl0ZW0udmFsdWUpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAuLi5hLFxuICAgICAgICAgICAgICAgIGNoZWNrZWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1zaGFkb3dlZC12YXJpYWJsZVxuICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBpdGVtLmNoaWxkcmVuLm1hcChhID0+IHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmEsXG4gICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gYTtcbiAgICAgICAgICB9KVxuICAgICAgICBdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5sb2NhbERhdGEgPSBbXG4gICAgICAgICAgLi4udGhpcy5sb2NhbERhdGEubWFwKGEgPT4ge1xuICAgICAgICAgICAgaWYgKGEudmFsdWUgPT09IGl0ZW0udmFsdWUpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAuLi5hLFxuICAgICAgICAgICAgICAgIGNoZWNrZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLXNoYWRvd2VkLXZhcmlhYmxlXG4gICAgICAgICAgICAgICAgY2hpbGRyZW46IGl0ZW0uY2hpbGRyZW4ubWFwKGEgPT4ge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgLi4uYSxcbiAgICAgICAgICAgICAgICAgICAgY2hlY2tlZDogdHJ1ZVxuICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGE7XG4gICAgICAgICAgfSlcbiAgICAgICAgXTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGNJdGVtLmNoZWNrZWQpIHtcbiAgICAgICAgdGhpcy5sb2NhbERhdGEgPSBbXG4gICAgICAgICAgLi4udGhpcy5sb2NhbERhdGEubWFwKGEgPT4ge1xuICAgICAgICAgICAgaWYgKGEudmFsdWUgPT09IGl0ZW0udmFsdWUpIHtcbiAgICAgICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLXNoYWRvd2VkLXZhcmlhYmxlXG4gICAgICAgICAgICAgIGNvbnN0IGNoaWxkcmVuID0gYT8uY2hpbGRyZW4ubWFwKGEgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChjSXRlbT8udmFsdWUgPT09IGE/LnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAuLi5hLFxuICAgICAgICAgICAgICAgICAgICBjaGVja2VkOiBmYWxzZVxuICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGE7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIC4uLmEsXG4gICAgICAgICAgICAgICAgY2hlY2tlZDogY2hpbGRyZW4uZXZlcnkocSA9PiBxLmNoZWNrZWQpLFxuICAgICAgICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1zaGFkb3dlZC12YXJpYWJsZVxuICAgICAgICAgICAgICAgIGNoaWxkcmVuXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gYTtcbiAgICAgICAgICB9KVxuICAgICAgICBdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5sb2NhbERhdGEgPSBbXG4gICAgICAgICAgLi4udGhpcy5sb2NhbERhdGEubWFwKGEgPT4ge1xuICAgICAgICAgICAgaWYgKGEudmFsdWUgPT09IGl0ZW0udmFsdWUpIHtcbiAgICAgICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLXNoYWRvd2VkLXZhcmlhYmxlXG4gICAgICAgICAgICAgIGNvbnN0IGNoaWxkcmVuID0gYT8uY2hpbGRyZW4ubWFwKGEgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChjSXRlbT8udmFsdWUgPT09IGE/LnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAuLi5hLFxuICAgICAgICAgICAgICAgICAgICBjaGVja2VkOiB0cnVlXG4gICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gYTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgLi4uYSxcbiAgICAgICAgICAgICAgICBjaGVja2VkOiBjaGlsZHJlbi5ldmVyeShxID0+IHEuY2hlY2tlZCksXG4gICAgICAgICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLXNoYWRvd2VkLXZhcmlhYmxlXG4gICAgICAgICAgICAgICAgY2hpbGRyZW5cbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBhO1xuICAgICAgICAgIH0pXG4gICAgICAgIF07XG4gICAgICB9XG4gICAgfVxuICAgIGlmICh0aGlzLnNlYXJjaEVuYWJsZWQpIHtcbiAgICAgIHRoaXMuc2VhcmNoSW5wdXRPbkNoYW5nZSh0aGlzLnNlYXJjaElucHV0KTtcbiAgICB9XG4gIH1cblxuICBhcHBseUZpbHRlcnMoKSB7XG4gICAgbGV0IGxvY2FsQ291bnQgPSAwO1xuICAgIHRoaXMubG9jYWxEYXRhLmZvckVhY2goYSA9PlxuICAgICAgYT8uY2hpbGRyZW4/LmZvckVhY2goYiA9PiB7XG4gICAgICAgIGlmIChiLmNoZWNrZWQpIHtcbiAgICAgICAgICBsb2NhbENvdW50ICs9IDE7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcbiAgICB0aGlzLnNlbGVjdGVkQ291bnQgPSBsb2NhbENvdW50O1xuICAgIGNvbnN0IHcgPSB0aGlzLmxvY2FsRGF0YVxuICAgICAgLmZpbHRlcihyID0+ICEoIXIuY2hlY2tlZCAmJiAhcj8uY2hpbGRyZW4/LnNvbWUoZiA9PiBmPy5jaGVja2VkKSkpXG4gICAgICAubWFwKGEgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLmEsXG4gICAgICAgICAgY2hpbGRyZW46IGE/LmNoaWxkcmVuPy5maWx0ZXIocyA9PiBzLmNoZWNrZWQpXG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgICB0aGlzLm9uQ2hhbmdlLmVtaXQodyk7XG4gICAgdGhpcy5vbkNhbmNlbCgpO1xuICB9XG4gIG9uUmVzZXQoKSB7XG4gICAgdGhpcy5pc1NlYXJjaElucHV0Rm9jdXNlZCA9IGZhbHNlO1xuICAgIGZvciAobGV0IGl0ZW0gb2YgdGhpcy5sb2NhbERhdGEpIHtcbiAgICAgIGZvciAobGV0IGNoaWxkIG9mIGl0ZW0uY2hpbGRyZW4pIHtcbiAgICAgICAgY2hpbGQuY2hlY2tlZCA9IGZhbHNlO1xuICAgICAgfVxuICAgICAgaXRlbS5jaGVja2VkID0gZmFsc2U7XG4gICAgfVxuICAgIHRoaXMub25DaGFuZ2UuZW1pdChbXSk7XG4gICAgdGhpcy5pc09wZW4gPSBmYWxzZTtcbiAgICB0aGlzLnNlYXJjaElucHV0ID0gXCJcIjtcbiAgfVxuICBvbkNhbmNlbCgpIHtcbiAgICB0aGlzLmlzU2VhcmNoSW5wdXRGb2N1c2VkID0gZmFsc2U7XG4gICAgdGhpcy5pc09wZW4gPSBmYWxzZTtcbiAgICB0aGlzLm92ZXJsYXlSZWY/LmRldGFjaCgpO1xuICAgIHRoaXMuc2VhcmNoSW5wdXQgPSBcIlwiO1xuICB9XG59XG5leHBvcnQgaW50ZXJmYWNlIE5lc3RlZE11bHRpU2VsZWN0RHJvcGRvd25JdGVtIHtcbiAgbGFiZWw6IHN0cmluZztcbiAgdmFsdWU6IHN0cmluZztcbiAgY2hlY2tlZD86IGJvb2xlYW47XG4gIGljb24/OiBzdHJpbmc7XG4gIGNoaWxkcmVuOiBBcnJheTx7XG4gICAgbGFiZWw6IHN0cmluZztcbiAgICB2YWx1ZTogc3RyaW5nO1xuICAgIGNoZWNrZWQ/OiBib29sZWFuO1xuICAgIGljb24/OiBzdHJpbmc7XG4gIH0+O1xufVxuIiwiPGRpdlxuICBjbGFzcz1cImNvbnRhaW5lclwiXG4gIFtuZ1N0eWxlXT1cIntcbiAgICBoZWlnaHQ6IGhlaWdodC5sZW5ndGggPiAwID8gaGVpZ2h0IDogJycsXG4gICAgd2lkdGg6IHdpZHRoLmxlbmd0aCA+IDAgPyB3aWR0aCA6ICcnXG4gIH1cIlxuPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJkcm9wZG93blwiXG4gICAgI3NlbGVjdFxuICAgIHRhYmluZGV4PVwiMFwiXG4gICAgKGtleXVwLmVudGVyKT1cInRvZ2dsZURyb3Bkb3duKClcIlxuICAgIChjbGljayk9XCJ0b2dnbGVEcm9wZG93bigpXCJcbiAgICBbbmdTdHlsZV09XCJ7IGJhY2tncm91bmQ6IGlzT3BlbiA/ICcjRTZFQkY3JyA6ICcnIH1cIlxuICA+XG4gICAgPGRpdiBjbGFzcz1cImxhYmVsXCI+XG4gICAgICA8cCBjbGFzcz1cInRleHRcIj57eyBsYWJlbCB9fTwvcD5cbiAgICAgIDxwICpuZ0lmPVwic2hvd1NlbGVjdGVkQ291bnQgJiYgc2VsZWN0ZWRDb3VudCA+IDBcIiBjbGFzcz1cImNvdW50XCI+XG4gICAgICAgIHt7IHNlbGVjdGVkQ291bnQgfX1cbiAgICAgIDwvcD5cbiAgICA8L2Rpdj5cbiAgICA8c3ZnXG4gICAgICBjbGFzcz1cImhhbmRsZVwiXG4gICAgICBbbmdTdHlsZV09XCJ7IHRyYW5zZm9ybTogaXNPcGVuID8gJ3JvdGF0ZSgxODBkZWcpJyA6ICdyb3RhdGUoMGRlZyknIH1cIlxuICAgICAgd2lkdGg9XCIyMFwiXG4gICAgICBoZWlnaHQ9XCIyMFwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDIwIDIwXCJcbiAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgID5cbiAgICAgIDxwYXRoXG4gICAgICAgIGZpbGwtcnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICBjbGlwLXJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgZD1cIk0xMy44MjUgNy4xNTg0NUwxMCAxMC45NzUxTDYuMTc1IDcuMTU4NDVMNSA4LjMzMzQ1TDEwIDEzLjMzMzRMMTUgOC4zMzM0NUwxMy44MjUgNy4xNTg0NVpcIlxuICAgICAgICBmaWxsPVwiIzE4MUYzM1wiXG4gICAgICAvPlxuICAgIDwvc3ZnPlxuICA8L2Rpdj5cbjwvZGl2PlxuPG5nLXRlbXBsYXRlICNwb3B1cENvbnRhaW5lcj5cbiAgPGRpdlxuICAgIGNsYXNzPVwicG9wdXAtY29udGFpbmVyXCJcbiAgICBbbmdTdHlsZV09XCJ7XG4gICAgICBoZWlnaHQ6IGRyb3Bkb3duTGlzdEhlaWdodCxcbiAgICAgIHdpZHRoOiBkcm9wZG93bkxpc3RXaWR0aFxuICAgIH1cIlxuICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICdwb3NpdGlvbi1sZWZ0JzogZHJvcGRvd25MaXN0UG9zaXRpb24gPT09ICdMZWZ0JyxcbiAgICAgICdwb3NpdGlvbi1yaWdodCc6IGRyb3Bkb3duTGlzdFBvc2l0aW9uID09PSAnUmlnaHQnXG4gICAgfVwiXG4gID5cbiAgICA8ZGl2ICpuZ0lmPVwic2VhcmNoRW5hYmxlZFwiIGNsYXNzPVwic2VhcmNoLWNvbnRhaW5lclwiPlxuICAgICAgPHN2Z1xuICAgICAgICAqbmdJZj1cIiFpc1NlYXJjaElucHV0Rm9jdXNlZFwiXG4gICAgICAgIGNsYXNzPVwic2VhcmNoLWljb25cIlxuICAgICAgICB3aWR0aD1cIjI0XCJcbiAgICAgICAgaGVpZ2h0PVwiMjRcIlxuICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgID5cbiAgICAgICAgPHBhdGhcbiAgICAgICAgICBmaWxsLXJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgICBjbGlwLXJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgICBkPVwiTTQuMjE1MDggMTEuMTQ1NkM0LjIxNTA4IDcuMzE3OSA3LjMzNzIyIDQuMjExNjUgMTEuMTkyNiA0LjIxMTY1QzE1LjA0OCA0LjIxMTY1IDE4LjE3MDIgNy4zMTc5IDE4LjE3MDIgMTEuMTQ1NkMxOC4xNzAyIDEyLjY5MzEgMTcuNjU5OSAxNC4xMjI2IDE2Ljc5NzIgMTUuMjc2N0wxNS4zNjg1IDE2LjcwMTNDMTQuMjA0NCAxNy41NjY4IDEyLjc1OSAxOC4wNzk2IDExLjE5MjYgMTguMDc5NkM3LjMzNzIyIDE4LjA3OTYgNC4yMTUwOCAxNC45NzM0IDQuMjE1MDggMTEuMTQ1NlpNMTUuOTQyMSAxNy43ODM1QzE0LjYwMjEgMTguNzMyOSAxMi45NjI3IDE5LjI5MTMgMTEuMTkyNiAxOS4yOTEzQzYuNjY5NzcgMTkuMjkxMyAzIDE1LjY0NjEgMyAxMS4xNDU2QzMgNi42NDUxMiA2LjY2OTc3IDMgMTEuMTkyNiAzQzE1LjcxNTUgMyAxOS4zODUyIDYuNjQ1MTIgMTkuMzg1MiAxMS4xNDU2QzE5LjM4NTIgMTIuOTM3MSAxOC44MDM3IDE0LjU5MzEgMTcuODE4NCAxNS45Mzc1TDE5LjgzNjEgMTcuNDA0OEMyMC42NzA1IDE3LjkxMiAyMS43NTU0IDE4LjY1NDMgMjAuMjQ1NCAyMC4yMTVDMTguNzM1MyAyMS43NzU2IDE4LjAwOTkgMjAuNjY2MyAxNy40OTkxIDE5LjgzNjRMMTUuOTQyMSAxNy43ODM1WlwiXG4gICAgICAgICAgZmlsbD1cIiM2QTczN0RcIlxuICAgICAgICAvPlxuICAgICAgPC9zdmc+XG4gICAgICA8aW5wdXRcbiAgICAgICAgW25nTW9kZWxdPVwic2VhcmNoSW5wdXRcIlxuICAgICAgICBbbmdTdHlsZV09XCJ7XG4gICAgICAgICAgcGFkZGluZ0xlZnQ6IGlzU2VhcmNoSW5wdXRGb2N1c2VkID8gJzEycHgnIDogJzQ1cHgnLFxuICAgICAgICAgIGJvcmRlcjogaXNTZWFyY2hJbnB1dEZvY3VzZWQgPyAnMXB4IHNvbGlkICMwOTM3QjInIDogJzFweCBzb2xpZCAjZTBlMGUwJyxcbiAgICAgICAgICBwYWRkaW5nUmlnaHQ6IGlzU2VhcmNoSW5wdXRGb2N1c2VkID8gJzQ1cHgnIDogJzEwcHgnXG4gICAgICAgIH1cIlxuICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJzZWFyY2hJbnB1dE9uQ2hhbmdlKCRldmVudClcIlxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwiaXNTZWFyY2hJbnB1dEZvY3VzZWQgPyAnJyA6ICdTZWFyY2ggS2V5d29yZCdcIlxuICAgICAgICAoZm9jdXMpPVwic2VhcmNoSW5wdXRGb2N1c2VkKHRydWUpXCJcbiAgICAgICAgY2xhc3M9XCJzZWFyY2gtaW5wdXRcIlxuICAgICAgLz5cbiAgICAgIDxzdmdcbiAgICAgICAgKm5nSWY9XCJpc1NlYXJjaElucHV0Rm9jdXNlZFwiXG4gICAgICAgIGNsYXNzPVwiY2FuY2VsLWljb25cIlxuICAgICAgICAoY2xpY2spPVwic2VhcmNoSW5wdXRDYW5jZWxlZCgkZXZlbnQpXCJcbiAgICAgICAgd2lkdGg9XCIyNFwiXG4gICAgICAgIGhlaWdodD1cIjI0XCJcbiAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICA+XG4gICAgICAgIDxwYXRoXG4gICAgICAgICAgZmlsbC1ydWxlPVwiZXZlbm9kZFwiXG4gICAgICAgICAgY2xpcC1ydWxlPVwiZXZlbm9kZFwiXG4gICAgICAgICAgZD1cIk04Ljg3NDQ2IDcuMzIxNDRDOC40NDU4OCA2Ljg5Mjg1IDcuNzUxIDYuODkyODUgNy4zMjI0MiA3LjMyMTQ0QzYuODkzODMgNy43NTAwMiA2Ljg5MzgzIDguNDQ0OSA3LjMyMjQyIDguODczNDlMMTAuNDQ4OCAxMS45OTk5TDcuMzIzNTcgMTUuMTI1MkM2Ljg5NDk4IDE1LjU1MzggNi44OTQ5OCAxNi4yNDg2IDcuMzIzNTcgMTYuNjc3MkM3Ljc1MjE1IDE3LjEwNTggOC40NDcwMyAxNy4xMDU4IDguODc1NjEgMTYuNjc3MkwxMi4wMDA5IDEzLjU1MkwxNS4xMjYxIDE2LjY3NzJDMTUuNTU0NyAxNy4xMDU4IDE2LjI0OTYgMTcuMTA1OCAxNi42NzgxIDE2LjY3NzJDMTcuMTA2NyAxNi4yNDg2IDE3LjEwNjcgMTUuNTUzNyAxNi42NzgxIDE1LjEyNTFMMTMuNTUyOSAxMS45OTk5TDE2LjY3OTMgOC44NzM1NEMxNy4xMDc5IDguNDQ0OTYgMTcuMTA3OSA3Ljc1MDA4IDE2LjY3OTMgNy4zMjE1QzE2LjI1MDcgNi44OTI5MSAxNS41NTU4IDYuODkyOTEgMTUuMTI3MyA3LjMyMTVMMTIuMDAwOSAxMC40NDc5TDguODc0NDYgNy4zMjE0NFpcIlxuICAgICAgICAgIGZpbGw9XCIjNkE3MzdEXCJcbiAgICAgICAgLz5cbiAgICAgIDwvc3ZnPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJpdGVtc1wiPlxuICAgICAgPGRpdlxuICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICAoa2V5dXAuZW50ZXIpPVwidG9nZ2xlU2VsZWN0ZWRJdGVtcygkZXZlbnQsIGl0ZW0pXCJcbiAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVNlbGVjdGVkSXRlbXMoJGV2ZW50LCBpdGVtKVwiXG4gICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIHNlYXJjaElucHV0ID8gc2VhcmNoRGF0YSA6IGxvY2FsRGF0YVwiXG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJpdGVtXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrYm94LWNvbnRhaW5lci13cmFwcGVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tib3gtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgIDxtaXMtY2hlY2tib3ggW2NoZWNrZWRdPVwiaXRlbS5jaGVja2VkXCI+PC9taXMtY2hlY2tib3g+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxwIGNsYXNzPVwibGFiZWxcIj5cbiAgICAgICAgICAgICAge3sgaXRlbS5sYWJlbCB9fVxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpY29uLWNvbnRhaW5lclwiICpuZ0lmPVwiaXRlbS5pY29uXCI+XG4gICAgICAgICAgICA8aW1nIGNsYXNzPVwiaWNvblwiIFtzcmNdPVwiaXRlbS5pY29uXCIgYWx0PVwibm8gaW1nXCIgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJpdGVtPy5jaGlsZHJlbj8ubGVuZ3RoID4gMFwiIGNsYXNzPVwiaXRlbXMgc3ViXCIgW25nU3R5bGVdPVwieydwYWRkaW5nLXJpZ2h0JzogJzAnfVwiPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiaXRlbVwiXG4gICAgICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICAgICAgKGtleXVwLmVudGVyKT1cInRvZ2dsZVNlbGVjdGVkSXRlbXMoJGV2ZW50LCBpdGVtLCBjSXRlbSlcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVNlbGVjdGVkSXRlbXMoJGV2ZW50LCBpdGVtLCBjSXRlbSlcIlxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNJdGVtIG9mIGl0ZW0/LmNoaWxkcmVuXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tib3gtY29udGFpbmVyLXdyYXBwZXJcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrYm94LWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgIDxtaXMtY2hlY2tib3ggW2NoZWNrZWRdPVwiY0l0ZW0uY2hlY2tlZFwiPjwvbWlzLWNoZWNrYm94PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPHAgY2xhc3M9XCJsYWJlbFwiPlxuICAgICAgICAgICAgICAgIHt7IGNJdGVtLmxhYmVsIH19XG4gICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImljb24tY29udGFpbmVyXCIgKm5nSWY9XCJjSXRlbS5pY29uXCI+XG4gICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJpY29uXCIgW3NyY109XCJjSXRlbS5pY29uXCIgYWx0PVwibm8gaW1nXCIgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cIm5vRGF0YVwiICpuZ0lmPVwiKHNlYXJjaElucHV0ID8gc2VhcmNoRGF0YSA6IGxvY2FsRGF0YSkubGVuZ3RoID09PSAwXCI+XG4gICAgICAgIHt7IHNlYXJjaElucHV0ID09PSBcIlwiID8gbm9EYXRhTWVzc2FnZSA6IFwiTm8gcmVzdWx0c1wiIH19XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2ICpuZ0lmPVwibG9jYWxEYXRhLmxlbmd0aCAhPT0gMFwiIGNsYXNzPVwiYWN0aW9ucy1jb250YWluZXJcIj5cbiAgICAgIDxkaXYgW25nU3R5bGVdPVwieyd3aWR0aCc6ICdjYWxjKDUwJSAtIDRweCknfVwiPlxuICAgICAgICA8bWlzLWJ1dHRvbiBbbmFtZV09XCInUmVzZXQnXCIgW3R5cGVdPVwiJ1RleHQnXCIgW3dpZHRoXT1cIicxMDAlJ1wiIChjbGljayk9XCJvblJlc2V0KClcIj48L21pcy1idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgW25nU3R5bGVdPVwieyd3aWR0aCc6ICdjYWxjKDUwJSAtIDRweCknfVwiPlxuICAgICAgICA8bWlzLWJ1dHRvbiBbbmFtZV09XCInQXBwbHknXCIgW3R5cGVdPVwiJ1NvbGlkJ1wiIFt3aWR0aF09XCInMTAwJSdcIiAoY2xpY2spPVwiYXBwbHlGaWx0ZXJzKClcIj48L21pcy1idXR0b24+XG4gICAgICA8L2Rpdj4gICAgICBcbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
479
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmVzdGVkLW11bHRpLXNlbGVjdC1kcm9wZG93bi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9taXMtY29tcG9uZW50cy9uZXN0ZWQtbXVsdGktc2VsZWN0LWRyb3Bkb3duL25lc3RlZC1tdWx0aS1zZWxlY3QtZHJvcGRvd24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvbWlzLWNvbXBvbmVudHMvbmVzdGVkLW11bHRpLXNlbGVjdC1kcm9wZG93bi9uZXN0ZWQtbXVsdGktc2VsZWN0LWRyb3Bkb3duLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsVUFBVSxFQUVWLFNBQVMsRUFDVCxnQkFBZ0IsRUFDaEIsUUFBUSxFQUNSLE1BQU0sRUFDTixNQUFNLEVBQ04sTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEVBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFFTCxPQUFPLEVBQ1Asc0JBQXNCLEVBQ3RCLGFBQWEsR0FDZCxNQUFNLHNCQUFzQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7O0lDRnhCLDRCQUFvRTtJQUNsRSxZQUNGO0lBQUEsaUJBQUk7OztJQURGLGNBQ0Y7SUFERSx1REFDRjs7OztJQWlDQSwrQkFRQztJQUNDLDJCQUtFO0lBQ0osaUJBQU07Ozs7O0lBYU4sK0JBU0M7SUFOQywyTkFBUyxrQ0FBMkIsS0FBQztJQU9yQywyQkFLRTtJQUNKLGlCQUFNOzs7O0lBN0NSLCtCQUFzRDtJQUNwRCw2R0FRQztJQVFELGlDQVdFO0lBRkEsQUFGQSxrT0FBaUIsa0NBQTJCLEtBQUMsK0xBRXBDLDBCQUFtQixJQUFJLENBQUMsS0FBQztJQVRwQyxpQkFXRTtJQUNGLDZHQVNDO0lBUUgsaUJBQU07OztJQTVDRCxjQUE2QjtJQUE3Qixx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QUEsWUFBYTtZQUFBLGlCQUFJO1lBQ2pDLCtFQUFvRTtZQUd0RSxpQkFBTTs7WUFDTiw4QkFRQztZQUNDLDBCQUtFO1lBR1IsQUFERSxBQURFLGlCQUFNLEVBQ0YsRUFDRjtZQUNOLHFJQUE2Qjs7WUFyQzNCLDRJQUdFO1lBUUEsY0FBcUQ7WUFBckQsbUZBQXFEO1lBR25DLGVBQWE7WUFBYixpQ0FBYTtZQUN6QixjQUFnRDtZQUFoRCx5RUFBZ0Q7WUFNcEQsY0FBdUU7WUFBdkUsdUdBQXVFOzs7aUZEZ0JoRSxrQ0FBa0M7Y0FMOUMsU0FBUzsyQkFDRSxrQ0FBa0M7b0JBaUNKLGFBQWE7a0JBQXBELFNBQVM7bUJBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtZQUNVLGNBQWM7a0JBQTdELFNBQVM7bUJBQUMsZ0JBQWdCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFOztrRkE5Qm5DLGtDQUFrQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0NvbnRhaW5lclJlZixcbiAgY29tcHV0ZWQsXG4gIGVmZmVjdCxcbiAgc2lnbmFsLFxuICBpbmplY3QsXG4gIGlucHV0LFxuICBvdXRwdXRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUZW1wbGF0ZVBvcnRhbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHtcbiAgT3ZlcmxheVJlZixcbiAgT3ZlcmxheSxcbiAgQ29ubmVjdGlvblBvc2l0aW9uUGFpcixcbiAgT3ZlcmxheUNvbmZpZyxcbn0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuXG5leHBvcnQgaW50ZXJmYWNlIE5lc3RlZE11bHRpU2VsZWN0RHJvcGRvd25JdGVtIHtcbiAgbGFiZWw6IHN0cmluZztcbiAgdmFsdWU6IHN0cmluZztcbiAgY2hlY2tlZD86IGJvb2xlYW47XG4gIGljb24/OiBzdHJpbmc7XG4gIGNoaWxkcmVuOiBBcnJheTx7XG4gICAgbGFiZWw6IHN0cmluZztcbiAgICB2YWx1ZTogc3RyaW5nO1xuICAgIGNoZWNrZWQ/OiBib29sZWFuO1xuICAgIGljb24/OiBzdHJpbmc7XG4gIH0+O1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtaXMtbmVzdGVkLW11bHRpLXNlbGVjdC1kcm9wZG93bicsXG4gIHRlbXBsYXRlVXJsOiAnLi9uZXN0ZWQtbXVsdGktc2VsZWN0LWRyb3Bkb3duLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbmVzdGVkLW11bHRpLXNlbGVjdC1kcm9wZG93bi5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIE5lc3RlZE11bHRpU2VsZWN0RHJvcGRvd25Db21wb25lbnQge1xuICAvLyBEZXBlbmRlbmNpZXMgSW5qZWN0aW9uXG4gIHByaXZhdGUgcmVhZG9ubHkgZVJlZiA9IGluamVjdChFbGVtZW50UmVmKTtcbiAgcHJpdmF0ZSByZWFkb25seSBvdmVybGF5ID0gaW5qZWN0KE92ZXJsYXkpO1xuICBwcml2YXRlIHJlYWRvbmx5IHZpZXdDb250YWluZXJSZWYgPSBpbmplY3QoVmlld0NvbnRhaW5lclJlZik7XG5cbiAgLy8gU2lnbmFsLWJhc2VkIElucHV0c1xuICBwdWJsaWMgZGF0YSA9IGlucHV0PE5lc3RlZE11bHRpU2VsZWN0RHJvcGRvd25JdGVtW10+KFtdKTtcbiAgcHVibGljIHNlbGVjdGVkSXRlbXMgPSBpbnB1dDxOZXN0ZWRNdWx0aVNlbGVjdERyb3Bkb3duSXRlbVtdPihbXSk7XG4gIHB1YmxpYyBsYWJlbCA9IGlucHV0PHN0cmluZz4oJ1NlbGVjdCcpO1xuICBwdWJsaWMgaGVpZ2h0ID0gaW5wdXQ8c3RyaW5nPignJyk7XG4gIHB1YmxpYyB3aWR0aCA9IGlucHV0PHN0cmluZz4oJycpO1xuICBwdWJsaWMgZHJvcGRvd25MaXN0SGVpZ2h0ID0gaW5wdXQ8c3RyaW5nPignJyk7XG4gIHB1YmxpYyBkcm9wZG93bkxpc3RXaWR0aCA9IGlucHV0PHN0cmluZz4oJycpO1xuICBwdWJsaWMgZHJvcGRvd25MaXN0UG9zaXRpb24gPSBpbnB1dDwnTGVmdCcgfCAnUmlnaHQnPignTGVmdCcpO1xuICBwdWJsaWMgc2VhcmNoRW5hYmxlZCA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xuICBwdWJsaWMgc2hvd1NlbGVjdGVkQ291bnQgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIHB1YmxpYyBub0RhdGFNZXNzYWdlID0gaW5wdXQ8c3RyaW5nPignTm8gRGF0YScpO1xuICBwdWJsaWMgc2VhcmNoSW5wdXRQbGFjZWhvbGRlciA9IGlucHV0PHN0cmluZz4oJ1NlYXJjaCBLZXl3b3JkJyk7XG5cbiAgLy8gU2lnbmFsLWJhc2VkIE91dHB1dFxuICBwdWJsaWMgb25DaGFuZ2UgPSBvdXRwdXQ8TmVzdGVkTXVsdGlTZWxlY3REcm9wZG93bkl0ZW1bXT4oKTtcblxuICAvLyBJbnRlcm5hbCBTaWduYWxzIGZvciBjb21wb25lbnQgc3RhdGVcbiAgcHVibGljIGlzT3BlbiA9IHNpZ25hbChmYWxzZSk7XG4gIHB1YmxpYyBzZWFyY2hJbnB1dCA9IHNpZ25hbCgnJyk7XG4gIHB1YmxpYyBpc1NlYXJjaElucHV0Rm9jdXNlZCA9IHNpZ25hbChmYWxzZSk7XG4gIHB1YmxpYyBsb2NhbERhdGEgPSBzaWduYWw8TmVzdGVkTXVsdGlTZWxlY3REcm9wZG93bkl0ZW1bXT4oW10pO1xuXG4gIEBWaWV3Q2hpbGQoJ3NlbGVjdCcsIHsgc3RhdGljOiBmYWxzZSB9KSBzZWxlY3RFbGVtZW50OiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdwb3B1cENvbnRhaW5lcicsIHsgc3RhdGljOiBmYWxzZSB9KSBwb3B1cENvbnRhaW5lcjogVGVtcGxhdGVSZWY8RWxlbWVudD47XG4gIHByaXZhdGUgb3ZlcmxheVJlZjogT3ZlcmxheVJlZjtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICAvLyBFZmZlY3QgdG8gaW5pdGlhbGl6ZSBhbmQgdXBkYXRlIGxvY2FsIGRhdGEgYmFzZWQgb24gZXh0ZXJuYWwgaW5wdXRzXG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IHZhbHVlcyA9IHRoaXMuZGF0YSgpO1xuICAgICAgY29uc3Qgc2VsZWN0ZWQgPSB0aGlzLnNlbGVjdGVkSXRlbXMoKTtcbiAgICAgIGNvbnN0IGZvcm1hdHRlZERhdGEgPSB0aGlzLmluaXRpYWxpemVEYXRhKHZhbHVlcywgc2VsZWN0ZWQpO1xuICAgICAgdGhpcy5sb2NhbERhdGEuc2V0KGZvcm1hdHRlZERhdGEpO1xuICAgIH0sIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfSk7XG5cbiAgICAvLyBFZmZlY3QgdG8gbWFuYWdlIG92ZXJsYXkgb3Blbi9jbG9zZVxuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5pc09wZW4oKSkge1xuICAgICAgICB0aGlzLm9wZW5Ecm9wZG93bih0aGlzLnBvcHVwQ29udGFpbmVyLCB0aGlzLnNlbGVjdEVsZW1lbnQ/Lm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5vdmVybGF5UmVmPy5kZXRhY2goKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICBcbiAgLyoqXG4gICAqIENvbXB1dGVkIHNpZ25hbCBmb3IgdGhlIG51bWJlciBvZiBzZWxlY3RlZCBpdGVtcy5cbiAgICovXG4gIHB1YmxpYyBzZWxlY3RlZENvdW50ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGxldCBjb3VudCA9IDA7XG4gICAgdGhpcy5sb2NhbERhdGEoKS5mb3JFYWNoKHBhcmVudCA9PiB7XG4gICAgICBwYXJlbnQuY2hpbGRyZW4uZm9yRWFjaChjaGlsZCA9PiB7XG4gICAgICAgIGlmIChjaGlsZC5jaGVja2VkKSB7XG4gICAgICAgICAgY291bnQrKztcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIGNvdW50O1xuICB9KTtcblxuICAvKipcbiAgICogQ29tcHV0ZWQgc2lnbmFsIGZvciBkYXRhIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgZHJvcGRvd24uXG4gICAqIEZpbHRlcnMgYmFzZWQgb24gc2VhcmNoIGlucHV0IGFuZCBzb3J0cyB0aGUgcGFyZW50cy5cbiAgICovXG4gIHB1YmxpYyBkaXNwbGF5RGF0YSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBsZXQgZGF0YVRvRGlzcGxheSA9IHRoaXMuc2VhcmNoRW5hYmxlZCgpICYmIHRoaXMuc2VhcmNoSW5wdXQoKSA/XG4gICAgICB0aGlzLmZpbHRlckJ5VmFsdWUodGhpcy5sb2NhbERhdGEoKSwgdGhpcy5zZWFyY2hJbnB1dCgpKSA6XG4gICAgICB0aGlzLmxvY2FsRGF0YSgpO1xuICAgICAgXG4gICAgcmV0dXJuIHRoaXMuc29ydERhdGEoZGF0YVRvRGlzcGxheSk7XG4gIH0pO1xuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplcyB0aGUgZGF0YSBzdHJ1Y3R1cmUgZnJvbSBpbnB1dHMsIHNldHRpbmcgY2hlY2tlZCBzdGF0ZXMuXG4gICAqIEBwYXJhbSBkYXRhIFRoZSBpbnB1dCBkYXRhIGFycmF5LlxuICAgKiBAcGFyYW0gc2VsZWN0ZWQgVGhlIHNlbGVjdGVkIGl0ZW1zIGZyb20gdGhlIHBhcmVudC5cbiAgICovXG4gIHByaXZhdGUgaW5pdGlhbGl6ZURhdGEoZGF0YTogTmVzdGVkTXVsdGlTZWxlY3REcm9wZG93bkl0ZW1bXSwgc2VsZWN0ZWQ6IE5lc3RlZE11bHRpU2VsZWN0RHJvcGRvd25JdGVtW10pOiBOZXN0ZWRNdWx0aVNlbGVjdERyb3Bkb3duSXRlbVtdIHtcbiAgICBpZiAoIWRhdGEpIHJldHVybiBbXTtcbiAgICBcbiAgICByZXR1cm4gZGF0YS5tYXAocGFyZW50ID0+IHtcbiAgICAgIGNvbnN0IHBhcmVudFNlbGVjdGVkID0gc2VsZWN0ZWQuZmluZChzID0+IHMudmFsdWUgPT09IHBhcmVudC52YWx1ZSk7XG4gICAgICBjb25zdCBjaGlsZHJlbiA9IHBhcmVudC5jaGlsZHJlbi5tYXAoY2hpbGQgPT4gKHtcbiAgICAgICAgLi4uY2hpbGQsXG4gICAgICAgIGNoZWNrZWQ6IHBhcmVudFNlbGVjdGVkPy5jaGlsZHJlbi5zb21lKGMgPT4gYy52YWx1ZSA9PT0gY2hpbGQudmFsdWUpID8/IGZhbHNlXG4gICAgICB9KSk7XG4gICAgICBcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnBhcmVudCxcbiAgICAgICAgY2hlY2tlZDogY2hpbGRyZW4uZXZlcnkoYyA9PiBjLmNoZWNrZWQpLFxuICAgICAgICBjaGlsZHJlblxuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaWx0ZXJzIHRoZSBkYXRhIGJhc2VkIG9uIHNlYXJjaCBzdHJpbmcsIGluY2x1ZGluZyBjaGlsZHJlbi5cbiAgICogQHBhcmFtIGFycmF5IFRoZSBkYXRhIHRvIGZpbHRlci5cbiAgICogQHBhcmFtIHNlYXJjaCBUaGUgc2VhcmNoIHN0cmluZy5cbiAgICovXG4gIHByaXZhdGUgZmlsdGVyQnlWYWx1ZShhcnJheTogTmVzdGVkTXVsdGlTZWxlY3REcm9wZG93bkl0ZW1bXSwgc2VhcmNoOiBzdHJpbmcpOiBOZXN0ZWRNdWx0aVNlbGVjdERyb3Bkb3duSXRlbVtdIHtcbiAgICBjb25zdCBsb3dlckNhc2VTZWFyY2ggPSBzZWFyY2gudG9Mb3dlckNhc2UoKTtcbiAgICBcbiAgICByZXR1cm4gYXJyYXkuZmlsdGVyKHBhcmVudCA9PlxuICAgICAgcGFyZW50LmxhYmVsLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMobG93ZXJDYXNlU2VhcmNoKSB8fFxuICAgICAgcGFyZW50LmNoaWxkcmVuLnNvbWUoY2hpbGQgPT4gY2hpbGQubGFiZWwudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhsb3dlckNhc2VTZWFyY2gpKVxuICAgICkubWFwKHBhcmVudCA9PiAoe1xuICAgICAgLi4ucGFyZW50LFxuICAgICAgY2hpbGRyZW46IHBhcmVudC5jaGlsZHJlbi5maWx0ZXIoY2hpbGQgPT4gY2hpbGQubGFiZWwudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhsb3dlckNhc2VTZWFyY2gpKVxuICAgIH0pKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTb3J0cyB0aGUgcGFyZW50IGl0ZW1zLCBwbGFjaW5nIGNoZWNrZWQgcGFyZW50cyBhdCB0aGUgdG9wLlxuICAgKiBAcGFyYW0gZGF0YSBUaGUgZGF0YSB0byBzb3J0LlxuICAgKi9cbiAgcHJpdmF0ZSBzb3J0RGF0YShkYXRhOiBOZXN0ZWRNdWx0aVNlbGVjdERyb3Bkb3duSXRlbVtdKTogTmVzdGVkTXVsdGlTZWxlY3REcm9wZG93bkl0ZW1bXSB7XG4gICAgY29uc3QgY2hlY2tlZFBhcmVudHMgPSBkYXRhLmZpbHRlcihhID0+IGEuY2hlY2tlZCk7XG4gICAgY29uc3QgdW5DaGVja2VkUGFyZW50cyA9IGRhdGEuZmlsdGVyKGEgPT4gIWEuY2hlY2tlZCk7XG4gICAgXG4gICAgY29uc3Qgc29ydEZuID0gKGE6IE5lc3RlZE11bHRpU2VsZWN0RHJvcGRvd25JdGVtLCBiOiBOZXN0ZWRNdWx0aVNlbGVjdERyb3Bkb3duSXRlbSkgPT4gYS5sYWJlbCA+IGIubGFiZWwgPyAxIDogLTE7XG4gICAgXG4gICAgcmV0dXJuIFsuLi5jaGVja2VkUGFyZW50cy5zb3J0KHNvcnRGbiksIC4uLnVuQ2hlY2tlZFBhcmVudHMuc29ydChzb3J0Rm4pXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUb2dnbGVzIHRoZSBkcm9wZG93bidzIG9wZW4vY2xvc2Ugc3RhdGUuXG4gICAqL1xuICBwdWJsaWMgdG9nZ2xlRHJvcGRvd24oKTogdm9pZCB7XG4gICAgdGhpcy5pc09wZW4udXBkYXRlKGN1cnJlbnQgPT4gIWN1cnJlbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgZm9jdXMgc3RhdGUgb2YgdGhlIHNlYXJjaCBpbnB1dC5cbiAgICogQHBhcmFtIGlzRm9jdXNlZFxuICAgKi9cbiAgcHVibGljIHNlYXJjaElucHV0Rm9jdXNlZChpc0ZvY3VzZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmlzU2VhcmNoSW5wdXRGb2N1c2VkLnNldChpc0ZvY3VzZWQpO1xuICB9XG4gIFxuICAvKipcbiAgICogQ2xlYXJzIHRoZSBzZWFyY2ggaW5wdXQuXG4gICAqIEBwYXJhbSBldmVudFxuICAgKi9cbiAgcHVibGljIHNlYXJjaElucHV0Q2FuY2VsZWQoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5zZWFyY2hJbnB1dC5zZXQoJycpO1xuICAgIHRoaXMuaXNTZWFyY2hJbnB1dEZvY3VzZWQuc2V0KGZhbHNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGVzIHRoZSBjaGFuZ2UgZXZlbnQgZnJvbSB0aGUgc2VhcmNoIGlucHV0LlxuICAgKiBAcGFyYW0gbmV3VmFsdWVcbiAgICovXG4gIHB1YmxpYyBzZWFyY2hJbnB1dE9uQ2hhbmdlKG5ld1ZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnNlYXJjaElucHV0LnNldChuZXdWYWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICogVG9nZ2xlcyB0aGUgY2hlY2tlZCBzdGF0ZSBvZiBhIHNwZWNpZmljIGl0ZW0sIGhhbmRsaW5nIHBhcmVudC1jaGlsZCByZWxhdGlvbnNoaXBzLlxuICAgKiBAcGFyYW0gZXZlbnRcbiAgICogQHBhcmFtIHBhcmVudFxuICAgKiBAcGFyYW0gY2hpbGRcbiAgICovXG4gIHB1YmxpYyB0b2dnbGVTZWxlY3RlZEl0ZW1zKGV2ZW50OiBFdmVudCwgcGFyZW50OiBOZXN0ZWRNdWx0aVNlbGVjdERyb3Bkb3duSXRlbSwgY2hpbGQ/OiBhbnkpOiB2b2lkIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgIHRoaXMubG9jYWxEYXRhLnVwZGF0ZShjdXJyZW50RGF0YSA9PiB7XG4gICAgICByZXR1cm4gY3VycmVudERhdGEubWFwKHAgPT4ge1xuICAgICAgICBpZiAocC52YWx1ZSA9PT0gcGFyZW50LnZhbHVlKSB7XG4gICAgICAgICAgaWYgKGNoaWxkKSB7XG4gICAgICAgICAgICAvLyBDYXNlIDE6IFRvZ2dsaW5nIGEgY2hpbGQgaXRlbVxuICAgICAgICAgICAgY29uc3QgdXBkYXRlZENoaWxkcmVuID0gcC5jaGlsZHJlbi5tYXAoYyA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiBjLnZhbHVlID09PSBjaGlsZC52YWx1ZSA/IHsgLi4uYywgY2hlY2tlZDogIWMuY2hlY2tlZCB9IDogYztcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgLi4ucCxcbiAgICAgICAgICAgICAgY2hlY2tlZDogdXBkYXRlZENoaWxkcmVuLmV2ZXJ5KGMgPT4gYy5jaGVja2VkKSxcbiAgICAgICAgICAgICAgY2hpbGRyZW46IHVwZGF0ZWRDaGlsZHJlblxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gQ2FzZSAyOiBUb2dnbGluZyBhIHBhcmVudCBpdGVtXG4gICAgICAgICAgICBjb25zdCBuZXdDaGVja2VkU3RhdGUgPSAhcC5jaGVja2VkO1xuICAgICAgICAgICAgY29uc3QgdXBkYXRlZENoaWxkcmVuID0gcC5jaGlsZHJlbi5tYXAoYyA9PiAoe1xuICAgICAgICAgICAgICAuLi5jLFxuICAgICAgICAgICAgICBjaGVja2VkOiBuZXdDaGVja2VkU3RhdGVcbiAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIC4uLnAsXG4gICAgICAgICAgICAgIGNoZWNrZWQ6IG5ld0NoZWNrZWRTdGF0ZSxcbiAgICAgICAgICAgICAgY2hpbGRyZW46IHVwZGF0ZWRDaGlsZHJlblxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHA7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbWl0cyB0aGUgc2VsZWN0ZWQgaXRlbXMgYW5kIGNsb3NlcyB0aGUgZHJvcGRvd24uXG4gICAqL1xuICBwdWJsaWMgYXBwbHlGaWx0ZXJzKCk6IHZvaWQge1xuICAgIGNvbnN0IHNlbGVjdGVkID0gdGhpcy5sb2NhbERhdGEoKS5maWx0ZXIocGFyZW50ID0+XG4gICAgICBwYXJlbnQuY2hlY2tlZCB8fCBwYXJlbnQuY2hpbGRyZW4uc29tZShjaGlsZCA9PiBjaGlsZC5jaGVja2VkKVxuICAgICkubWFwKHBhcmVudCA9PiAoe1xuICAgICAgLi4ucGFyZW50LFxuICAgICAgY2hpbGRyZW46IHBhcmVudC5jaGlsZHJlbi5maWx0ZXIoY2hpbGQgPT4gY2hpbGQuY2hlY2tlZClcbiAgICB9KSk7XG4gICAgXG4gICAgdGhpcy5vbkNoYW5nZS5lbWl0KHNlbGVjdGVkKTtcbiAgICB0aGlzLm9uQ2FuY2VsKCk7XG4gIH1cblxuICAvKipcbiAgICogUmVzZXRzIGFsbCBzZWxlY3Rpb25zIHRvIGVtcHR5LlxuICAgKi9cbiAgcHVibGljIG9uUmVzZXQoKTogdm9pZCB7XG4gICAgdGhpcy5sb2NhbERhdGEudXBkYXRlKGRhdGEgPT5cbiAgICAgIGRhdGEubWFwKHBhcmVudCA9PiAoe1xuICAgICAgICAuLi5wYXJlbnQsXG4gICAgICAgIGNoZWNrZWQ6IGZhbHNlLFxuICAgICAgICBjaGlsZHJlbjogcGFyZW50LmNoaWxkcmVuLm1hcChjaGlsZCA9PiAoeyAuLi5jaGlsZCwgY2hlY2tlZDogZmFsc2UgfSkpXG4gICAgICB9KSlcbiAgICApO1xuICAgIHRoaXMub25DaGFuZ2UuZW1pdChbXSk7XG4gICAgdGhpcy5vbkNhbmNlbCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIENsb3NlcyB0aGUgZHJvcGRvd24gYW5kIHJldmVydHMgYW55IHVuYXBwbGllZCBjaGFuZ2VzLlxuICAgKi9cbiAgcHVibGljIG9uQ2FuY2VsKCk6IHZvaWQge1xuICAgIHRoaXMuaXNPcGVuLnNldChmYWxzZSk7XG4gICAgdGhpcy5zZWFyY2hJbnB1dC5zZXQoJycpO1xuICAgIHRoaXMuaXNTZWFyY2hJbnB1dEZvY3VzZWQuc2V0KGZhbHNlKTtcbiAgICBcbiAgICAvLyBUaGlzIGlzIGNydWNpYWwgZm9yIHJldmVydGluZyB1bnNhdmVkIGNoYW5nZXNcbiAgICBjb25zdCBzZWxlY3RlZCA9IHRoaXMuc2VsZWN0ZWRJdGVtcygpO1xuICAgIGNvbnN0IGZvcm1hdHRlZERhdGEgPSB0aGlzLmluaXRpYWxpemVEYXRhKHRoaXMuZGF0YSgpLCBzZWxlY3RlZCk7XG4gICAgdGhpcy5sb2NhbERhdGEuc2V0KGZvcm1hdHRlZERhdGEpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW5kIGRpc3BsYXlzIHRoZSBvdmVybGF5IGZvciB0aGUgZHJvcGRvd24gbGlzdC5cbiAgICogQHBhcmFtIHRlbXBsYXRlXG4gICAqIEBwYXJhbSBvcmlnaW5cbiAgICovXG4gIHByaXZhdGUgb3BlbkRyb3Bkb3duKFxuICAgIHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxFbGVtZW50PixcbiAgICBvcmlnaW46IEhUTUxFbGVtZW50XG4gICk6IHZvaWQge1xuICAgIGlmICh0aGlzLm92ZXJsYXlSZWY/Lmhhc0F0dGFjaGVkKCkpIHJldHVybjtcbiAgICBcbiAgICBjb25zdCBwb3NpdGlvbnNCb3R0b20gPSBbXG4gICAgICBuZXcgQ29ubmVjdGlvblBvc2l0aW9uUGFpcih7IG9yaWdpblg6ICdzdGFydCcsIG9yaWdpblk6ICdib3R0b20nIH0sIHsgb3ZlcmxheVg6ICdzdGFydCcsIG92ZXJsYXlZOiAndG9wJyB9LCAwLCA0KSxcbiAgICAgIG5ldyBDb25uZWN0aW9uUG9zaXRpb25QYWlyKHsgb3JpZ2luWDogJ2VuZCcsIG9yaWdpblk6ICdib3R0b20nIH0sIHsgb3ZlcmxheVg6ICdlbmQnLCBvdmVybGF5WTogJ3RvcCcgfSwgMCwgNClcbiAgICBdO1xuICAgIGNvbnN0IHBvc2l0aW9uc1RvcCA9IFtcbiAgICAgIG5ldyBDb25uZWN0aW9uUG9zaXRpb25QYWlyKHsgb3JpZ2luWDogJ3N0YXJ0Jywgb3JpZ2luWTogJ3RvcCcgfSwgeyBvdmVybGF5WDogJ3N0YXJ0Jywgb3ZlcmxheVk6ICdib3R0b20nIH0sIDAsIC00KSxcbiAgICAgIG5ldyBDb25uZWN0aW9uUG9zaXRpb25QYWlyKHsgb3JpZ2luWDogJ2VuZCcsIG9yaWdpblk6ICd0b3AnIH0sIHsgb3ZlcmxheVg6ICdlbmQnLCBvdmVybGF5WTogJ2JvdHRvbScgfSwgMCwgLTQpXG4gICAgXTtcbiAgICBcbiAgICBjb25zdCBwb3NpdGlvblN0cmF0ZWd5ID0gdGhpcy5vdmVybGF5XG4gICAgICAucG9zaXRpb24oKVxuICAgICAgLmZsZXhpYmxlQ29ubmVjdGVkVG8ob3JpZ2luKVxuICAgICAgLndpdGhQb3NpdGlvbnMoW1xuICAgICAgICAuLi4odGhpcy5kcm9wZG93bkxpc3RQb3NpdGlvbigpID09PSAnUmlnaHQnID8gcG9zaXRpb25zQm90dG9tLnJldmVyc2UoKSA6IHBvc2l0aW9uc0JvdHRvbSksXG4gICAgICAgIC4uLih0aGlzLmRyb3Bkb3duTGlzdFBvc2l0aW9uKCkgPT09ICdSaWdodCcgPyBwb3NpdGlvbnNUb3AucmV2ZXJzZSgpIDogcG9zaXRpb25zVG9wKVxuICAgICAgXSlcbiAgICAgIC53aXRoUHVzaCh0cnVlKTtcbiAgICAgIFxuICAgIGNvbnN0IGNvbmZpZ3MgPSBuZXcgT3ZlcmxheUNvbmZpZyh7XG4gICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcbiAgICAgIGJhY2tkcm9wQ2xhc3M6ICdjZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcCcsXG4gICAgICBzY3JvbGxTdHJhdGVneTogdGhpcy5vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMucmVwb3NpdGlvbigpLFxuICAgICAgcG9zaXRpb25TdHJhdGVneSxcbiAgICAgIHdpZHRoOiBvcmlnaW4uY2xpZW50V2lkdGhcbiAgICB9KTtcbiAgICBcbiAgICB0aGlzLm92ZXJsYXlSZWYgPSB0aGlzLm92ZXJsYXkuY3JlYXRlKGNvbmZpZ3MpO1xuICAgIFxuICAgIGlmICh0aGlzLmRyb3Bkb3duTGlzdFdpZHRoKCkpIHRoaXMub3ZlcmxheVJlZi51cGRhdGVTaXplKHsgd2lkdGg6IHRoaXMuZHJvcGRvd25MaXN0V2lkdGgoKSB9KTtcbiAgICBpZiAodGhpcy5kcm9wZG93bkxpc3RIZWlnaHQoKSkgdGhpcy5vdmVybGF5UmVmLnVwZGF0ZVNpemUoeyBoZWlnaHQ6IHRoaXMuZHJvcGRvd25MaXN0SGVpZ2h0KCkgfSk7XG4gICAgXG4gICAgdGhpcy5vdmVybGF5UmVmLmF0dGFjaChuZXcgVGVtcGxhdGVQb3J0YWwodGVtcGxhdGUsIHRoaXMudmlld0NvbnRhaW5lclJlZikpO1xuICAgIHRoaXMub3ZlcmxheVJlZi5iYWNrZHJvcENsaWNrKCkuc3Vic2NyaWJlKCgpID0+IHRoaXMub25DYW5jZWwoKSk7XG4gIH1cbn1cblxuXG4iLCI8ZGl2XG4gIGNsYXNzPVwiY29udGFpbmVyXCJcbiAgW25nU3R5bGVdPVwie1xuICAgIGhlaWdodDogaGVpZ2h0KCkubGVuZ3RoID4gMCA/IGhlaWdodCgpIDogJycsXG4gICAgd2lkdGg6IHdpZHRoKCkubGVuZ3RoID4gMCA/IHdpZHRoKCkgOiAnJ1xuICB9XCJcbj5cbiAgPGRpdlxuICAgIGNsYXNzPVwiZHJvcGRvd25cIlxuICAgICNzZWxlY3RcbiAgICB0YWJpbmRleD1cIjBcIlxuICAgIChrZXl1cC5lbnRlcik9XCJ0b2dnbGVEcm9wZG93bigpXCJcbiAgICAoY2xpY2spPVwidG9nZ2xlRHJvcGRvd24oKVwiXG4gICAgW25nU3R5bGVdPVwieyBiYWNrZ3JvdW5kOiBpc09wZW4oKSA/ICcjRTZFQkY3JyA6ICcnIH1cIlxuICA+XG4gICAgPGRpdiBjbGFzcz1cImxhYmVsXCI+XG4gICAgICA8cCBjbGFzcz1cInRleHRcIj57eyBsYWJlbCgpIH19PC9wPlxuICAgICAgPHAgKm5nSWY9XCJzaG93U2VsZWN0ZWRDb3VudCgpICYmIHNlbGVjdGVkQ291bnQoKSA+IDBcIiBjbGFzcz1cImNvdW50XCI+XG4gICAgICAgIHt7IHNlbGVjdGVkQ291bnQoKSB9fVxuICAgICAgPC9wPlxuICAgIDwvZGl2PlxuICAgIDxzdmdcbiAgICAgIGNsYXNzPVwiaGFuZGxlXCJcbiAgICAgIFtuZ1N0eWxlXT1cInsgdHJhbnNmb3JtOiBpc09wZW4oKSA/ICdyb3RhdGUoMTgwZGVnKScgOiAncm90YXRlKDBkZWcpJyB9XCJcbiAgICAgIHdpZHRoPVwiMjBcIlxuICAgICAgaGVpZ2h0PVwiMjBcIlxuICAgICAgdmlld0JveD1cIjAgMCAyMCAyMFwiXG4gICAgICBmaWxsPVwibm9uZVwiXG4gICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICA+XG4gICAgICA8cGF0aFxuICAgICAgICBmaWxsLXJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgY2xpcC1ydWxlPVwiZXZlbm9kZFwiXG4gICAgICAgIGQ9XCJNMTMuODI1IDcuMTU4NDVMMTAgMTAuOTc1MUw2LjE3NSA3LjE1ODQ1TDUgOC4zMzM0NUwxMCAxMy4zMzM0TDE1IDguMzMzNDVMMTMuODI1IDcuMTU4NDVaXCJcbiAgICAgICAgZmlsbD1cIiMxODFGMzNcIlxuICAgICAgLz5cbiAgICA8L3N2Zz5cbiAgPC9kaXY+XG48L2Rpdj5cbjxuZy10ZW1wbGF0ZSAjcG9wdXBDb250YWluZXI+XG4gIDxkaXZcbiAgICBjbGFzcz1cInBvcHVwLWNvbnRhaW5lclwiXG4gICAgW25nU3R5bGVdPVwie1xuICAgICAgaGVpZ2h0OiBkcm9wZG93bkxpc3RIZWlnaHQoKSxcbiAgICAgIHdpZHRoOiBkcm9wZG93bkxpc3RXaWR0aCgpXG4gICAgfVwiXG4gICAgW25nQ2xhc3NdPVwie1xuICAgICAgJ3Bvc2l0aW9uLWxlZnQnOiBkcm9wZG93bkxpc3RQb3NpdGlvbigpID09PSAnTGVmdCcsXG4gICAgICAncG9zaXRpb24tcmlnaHQnOiBkcm9wZG93bkxpc3RQb3NpdGlvbigpID09PSAnUmlnaHQnXG4gICAgfVwiXG4gID5cbiAgICA8ZGl2ICpuZ0lmPVwic2VhcmNoRW5hYmxlZCgpXCIgY2xhc3M9XCJzZWFyY2gtY29udGFpbmVyXCI+XG4gICAgICA8c3ZnXG4gICAgICAgICpuZ0lmPVwiIWlzU2VhcmNoSW5wdXRGb2N1c2VkKClcIlxuICAgICAgICBjbGFzcz1cInNlYXJjaC1pY29uXCJcbiAgICAgICAgd2lkdGg9XCIyNFwiXG4gICAgICAgIGhlaWdodD1cIjI0XCJcbiAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICA+XG4gICAgICAgIDxwYXRoXG4gICAgICAgICAgZmlsbC1ydWxlPVwiZXZlbm9kZFwiXG4gICAgICAgICAgY2xpcC1ydWxlPVwiZXZlbm9kZFwiXG4gICAgICAgICAgZD1cIk00LjIxNTA4IDExLjE0NTZDNC4yMTUwOCA3LjMxNzkgNy4zMzcyMiA0LjIxMTY1IDExLjE5MjYgNC4yMTE2NUMxNS4wNDggNC4yMTE2NSAxOC4xNzAyIDcuMzE3OSAxOC4xNzAyIDExLjE0NTZDMTguMTcwMiAxMi42OTMxIDE3LjY1OTkgMTQuMTIyNiAxNi43OTcyIDE1LjI3NjdMMTUuMzY4NSAxNi43MDEzQzE0LjIwNDQgMTcuNTY2OCAxMi43NTkgMTguMDc5NiAxMS4xOTI2IDE4LjA3OTZDNy4zMzcyMiAxOC4wNzk2IDQuMjE1MDggMTQuOTczNCA0LjIxNTA4IDExLjE0NTZaTTE1Ljk0MjEgMTcuNzgzNUMxNC42MDIxIDE4LjczMjkgMTIuOTYyNyAxOS4yOTEzIDExLjE5MjYgMTkuMjkxM0M2LjY2OTc3IDE5LjI5MTMgMyAxNS42NDYxIDMgMTEuMTQ1NkMzIDYuNjQ1MTIgNi42Njk3NyAzIDExLjE5MjYgM0MxNS43MTU1IDMgMTkuMzg1MiA2LjY0NTEyIDE5LjM4NTIgMTEuMTQ1NkMxOS4zODUyIDEyLjkzNzEgMTguODAzNyAxNC41OTMxIDE3LjgxODQgMTUuOTM3NUwxOS44MzYxIDE3LjQwNDhDMjAuNjcwNSAxNy45MTIgMjEuNzU1NCAxOC42NTQzIDIwLjI0NTQgMjAuMjE1QzE4LjczNTMgMjEuNzc1NiAxOC4wMDk5IDIwLjY2NjMgMTcuNDk5MSAxOS44MzY0TDE1Ljk0MjEgMTcuNzgzNVpcIlxuICAgICAgICAgIGZpbGw9XCIjNkE3MzdEXCJcbiAgICAgICAgLz5cbiAgICAgIDwvc3ZnPlxuICAgICAgPGlucHV0XG4gICAgICAgIFtuZ01vZGVsXT1cInNlYXJjaElucHV0KClcIlxuICAgICAgICBbbmdTdHlsZV09XCJ7XG4gICAgICAgICAgcGFkZGluZ0xlZnQ6IGlzU2VhcmNoSW5wdXRGb2N1c2VkKCkgPyAnMTJweCcgOiAnNDVweCcsXG4gICAgICAgICAgYm9yZGVyOiBpc1NlYXJjaElucHV0Rm9jdXNlZCgpID8gJzFweCBzb2xpZCAjMDkzN0IyJyA6ICcxcHggc29saWQgI2UwZTBlMCcsXG4gICAgICAgICAgcGFkZGluZ1JpZ2h0OiBpc1NlYXJjaElucHV0Rm9jdXNlZCgpID8gJzQ1cHgnIDogJzEwcHgnXG4gICAgICAgIH1cIlxuICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJzZWFyY2hJbnB1dE9uQ2hhbmdlKCRldmVudClcIlxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwiaXNTZWFyY2hJbnB1dEZvY3VzZWQoKSA/ICcnIDogc2VhcmNoSW5wdXRQbGFjZWhvbGRlcigpXCJcbiAgICAgICAgKGZvY3VzKT1cInNlYXJjaElucHV0Rm9jdXNlZCh0cnVlKVwiXG4gICAgICAgIGNsYXNzPVwic2VhcmNoLWlucHV0XCJcbiAgICAgIC8+XG4gICAgICA8c3ZnXG4gICAgICAgICpuZ0lmPVwiaXNTZWFyY2hJbnB1dEZvY3VzZWQoKVwiXG4gICAgICAgIGNsYXNzPVwiY2FuY2VsLWljb25cIlxuICAgICAgICAoY2xpY2spPVwic2VhcmNoSW5wdXRDYW5jZWxlZCgkZXZlbnQpXCJcbiAgICAgICAgd2lkdGg9XCIyNFwiXG4gICAgICAgIGhlaWdodD1cIjI0XCJcbiAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICA+XG4gICAgICAgIDxwYXRoXG4gICAgICAgICAgZmlsbC1ydWxlPVwiZXZlbm9kZFwiXG4gICAgICAgICAgY2xpcC1ydWxlPVwiZXZlbm9kZFwiXG4gICAgICAgICAgZD1cIk04Ljg3NDQ2IDcuMzIxNDRDOC40NDU4OCA2Ljg5Mjg1IDcuNzUxIDYuODkyODUgNy4zMjI0MiA3LjMyMTQ0QzYuODkzODMgNy43NTAwMiA2Ljg5MzgzIDguNDQ0OSA3LjMyMjQyIDguODczNDlMMTAuNDQ4OCAxMS45OTk5TDcuMzIzNTcgMTUuMTI1MkM2Ljg5NDk4IDE1LjU1MzggNi44OTQ5OCAxNi4yNDg2IDcuMzIzNTcgMTYuNjc3MkM3Ljc1MjE1IDE3LjEwNTggOC40NDcwMyAxNy4xMDU4IDguODc1NjEgMTYuNjc3MkwxMi4wMDA5IDEzLjU1MkwxNS4xMjYxIDE2LjY3NzJDMTUuNTU0NyAxNy4xMDU4IDE2LjI0OTYgMTcuMTA1OCAxNi42NzgxIDE2LjY3NzJDMTcuMTA2NyAxNi4yNDg2IDE3LjEwNjcgMTUuNTUzNyAxNi42NzgxIDE1LjEyNTFMMTMuNTUyOSAxMS45OTk5TDE2LjY3OTMgOC44NzM1NEMxNy4xMDc5IDguNDQ0OTYgMTcuMTA3OSA3Ljc1MDA4IDE2LjY3OTMgNy4zMjE1QzE2LjI1MDcgNi44OTI5MSAxNS41NTU4IDYuODkyOTEgMTUuMTI3MyA3LjMyMTVMMTIuMDAwOSAxMC40NDc5TDguODc0NDYgNy4zMjE0NFpcIlxuICAgICAgICAgIGZpbGw9XCIjNkE3MzdEXCJcbiAgICAgICAgLz5cbiAgICAgIDwvc3ZnPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJpdGVtc1wiPlxuICAgICAgPGRpdlxuICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICAoa2V5dXAuZW50ZXIpPVwidG9nZ2xlU2VsZWN0ZWRJdGVtcygkZXZlbnQsIGl0ZW0pXCJcbiAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVNlbGVjdGVkSXRlbXMoJGV2ZW50LCBpdGVtKVwiXG4gICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGRpc3BsYXlEYXRhKClcIlxuICAgICAgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaXRlbVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja2JveC1jb250YWluZXItd3JhcHBlclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrYm94LWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICA8bWlzLWNoZWNrYm94IFtjaGVja2VkXT1cIml0ZW0uY2hlY2tlZFwiPjwvbWlzLWNoZWNrYm94PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8cCBjbGFzcz1cImxhYmVsXCI+XG4gICAgICAgICAgICAgIHt7IGl0ZW0ubGFiZWwgfX1cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaWNvbi1jb250YWluZXJcIiAqbmdJZj1cIml0ZW0uaWNvblwiPlxuICAgICAgICAgICAgPGltZyBjbGFzcz1cImljb25cIiBbc3JjXT1cIml0ZW0uaWNvblwiIGFsdD1cIm5vIGltZ1wiIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiaXRlbT8uY2hpbGRyZW4/Lmxlbmd0aCA+IDBcIiBjbGFzcz1cIml0ZW1zIHN1YlwiIFtuZ1N0eWxlXT1cInsncGFkZGluZy1yaWdodCc6ICcwJ31cIj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cIml0ZW1cIlxuICAgICAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJ0b2dnbGVTZWxlY3RlZEl0ZW1zKCRldmVudCwgaXRlbSwgY0l0ZW0pXCJcbiAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVTZWxlY3RlZEl0ZW1zKCRldmVudCwgaXRlbSwgY0l0ZW0pXCJcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjSXRlbSBvZiBpdGVtPy5jaGlsZHJlblwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrYm94LWNvbnRhaW5lci13cmFwcGVyXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja2JveC1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICA8bWlzLWNoZWNrYm94IFtjaGVja2VkXT1cImNJdGVtLmNoZWNrZWRcIj48L21pcy1jaGVja2JveD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxwIGNsYXNzPVwibGFiZWxcIj5cbiAgICAgICAgICAgICAgICB7eyBjSXRlbS5sYWJlbCB9fVxuICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpY29uLWNvbnRhaW5lclwiICpuZ0lmPVwiY0l0ZW0uaWNvblwiPlxuICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiaWNvblwiIFtzcmNdPVwiY0l0ZW0uaWNvblwiIGFsdD1cIm5vIGltZ1wiIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJub0RhdGFcIiAqbmdJZj1cImRpc3BsYXlEYXRhKCkubGVuZ3RoID09PSAwXCI+XG4gICAgICAgIHt7IHNlYXJjaElucHV0KCkgPT09IFwiXCIgPyBub0RhdGFNZXNzYWdlKCkgOiBcIk5vIHJlc3VsdHNcIiB9fVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdJZj1cImxvY2FsRGF0YSgpLmxlbmd0aCAhPT0gMFwiIGNsYXNzPVwiYWN0aW9ucy1jb250YWluZXJcIj5cbiAgICAgIDxkaXYgW25nU3R5bGVdPVwieyd3aWR0aCc6ICdjYWxjKDUwJSAtIDRweCknfVwiPlxuICAgICAgICA8bWlzLWJ1dHRvbiBbbmFtZV09XCInUmVzZXQnXCIgW3R5cGVdPVwiJ1RleHQnXCIgW3dpZHRoXT1cIicxMDAlJ1wiIChjbGljayk9XCJvblJlc2V0KClcIj48L21pcy1idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgW25nU3R5bGVdPVwieyd3aWR0aCc6ICdjYWxjKDUwJSAtIDRweCknfVwiPlxuICAgICAgICA8bWlzLWJ1dHRvbiBbbmFtZV09XCInQXBwbHknXCIgW3R5cGVdPVwiJ1NvbGlkJ1wiIFt3aWR0aF09XCInMTAwJSdcIiAoY2xpY2spPVwiYXBwbHlGaWx0ZXJzKClcIj48L21pcy1idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG4iXX0=