@ieeesa-npm/presentation 0.33.0 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (228) hide show
  1. package/esm2022/lib/assets/constants.json +13 -561
  2. package/esm2022/lib/components/autocomplete/autocomplete.component.mjs +28 -60
  3. package/esm2022/lib/components/checkbox/checkbox.component.mjs +16 -77
  4. package/esm2022/lib/components/date-picker/date-picker.component.mjs +10 -27
  5. package/esm2022/lib/components/date-picker-header/date-picker-header.component.mjs +11 -6
  6. package/esm2022/lib/components/dynamic-form/dynamic-form.component.mjs +14 -275
  7. package/esm2022/lib/components/form-error/form-error.component.mjs +6 -6
  8. package/esm2022/lib/components/input/input.component.mjs +13 -34
  9. package/esm2022/lib/components/notification/notification.component.mjs +6 -18
  10. package/esm2022/lib/components/radio/radio.component.mjs +6 -12
  11. package/esm2022/lib/components/search/search.component.mjs +10 -62
  12. package/esm2022/lib/components/select/select.component.mjs +9 -32
  13. package/esm2022/lib/components/text-area/text-area.component.mjs +7 -65
  14. package/esm2022/lib/date-formats.mjs +2 -2
  15. package/esm2022/lib/directives/dynamic-form-field/dynamic-form-field.directive.mjs +5 -206
  16. package/esm2022/lib/models/checkbox-option.model.mjs +2 -0
  17. package/esm2022/lib/models/confirmation-modal-data.model.mjs +2 -0
  18. package/esm2022/lib/models/date-picker.model.mjs +1 -1
  19. package/esm2022/lib/models/field-config.model.mjs +1 -1
  20. package/esm2022/lib/models/footer-config.model.mjs +1 -1
  21. package/esm2022/lib/models/form-control-types.model.mjs +9 -9
  22. package/esm2022/lib/models/header-config.model.mjs +1 -1
  23. package/esm2022/lib/models/navigation-menu.model.mjs +1 -1
  24. package/esm2022/lib/models/select-option.model.mjs +2 -0
  25. package/esm2022/lib/models/toggle-button.model.mjs +1 -1
  26. package/esm2022/lib/presentation.module.mjs +5 -5
  27. package/esm2022/lib/services/datepicker.service.mjs +4 -4
  28. package/esm2022/lib/services/form-utility.service.mjs +5 -17
  29. package/esm2022/public-api.mjs +17 -97
  30. package/fesm2022/ieeesa-npm-presentation.mjs +599 -7589
  31. package/fesm2022/ieeesa-npm-presentation.mjs.map +1 -1
  32. package/lib/components/autocomplete/autocomplete.component.d.ts +13 -27
  33. package/lib/components/checkbox/checkbox.component.d.ts +6 -32
  34. package/lib/components/date-picker/date-picker.component.d.ts +2 -11
  35. package/lib/components/dynamic-form/dynamic-form.component.d.ts +11 -157
  36. package/lib/components/input/input.component.d.ts +2 -9
  37. package/lib/components/notification/notification.component.d.ts +1 -4
  38. package/lib/components/radio/radio.component.d.ts +1 -3
  39. package/lib/components/search/search.component.d.ts +4 -13
  40. package/lib/components/select/select.component.d.ts +2 -5
  41. package/lib/components/text-area/text-area.component.d.ts +2 -24
  42. package/lib/directives/dynamic-form-field/dynamic-form-field.directive.d.ts +3 -36
  43. package/lib/models/checkbox-option.model.d.ts +6 -0
  44. package/lib/models/confirmation-modal-data.model.d.ts +5 -0
  45. package/lib/models/date-picker.model.d.ts +0 -3
  46. package/lib/models/field-config.model.d.ts +2 -54
  47. package/lib/models/footer-config.model.d.ts +0 -1
  48. package/lib/models/form-control-types.model.d.ts +1 -8
  49. package/lib/models/header-config.model.d.ts +0 -6
  50. package/lib/models/navigation-menu.model.d.ts +1 -1
  51. package/lib/models/select-option.model.d.ts +5 -0
  52. package/lib/models/toggle-button.model.d.ts +0 -4
  53. package/lib/services/form-utility.service.d.ts +1 -1
  54. package/package.json +2 -4
  55. package/public-api.d.ts +16 -95
  56. package/src/lib/assets/constants.json +13 -561
  57. package/esm2022/lib/components/accordion/accordion.component.mjs +0 -61
  58. package/esm2022/lib/components/add-form-group/add-form-group.component.mjs +0 -34
  59. package/esm2022/lib/components/breadcrumb/breadcrumb.component.mjs +0 -129
  60. package/esm2022/lib/components/card/card.component.mjs +0 -74
  61. package/esm2022/lib/components/chips/chips.component.mjs +0 -162
  62. package/esm2022/lib/components/color-picker/color-picker.component.mjs +0 -314
  63. package/esm2022/lib/components/data-table/data-table.component.mjs +0 -781
  64. package/esm2022/lib/components/export-format-popover/export-format-popover.component.mjs +0 -75
  65. package/esm2022/lib/components/export-success-dialog/export-success-dialog.component.mjs +0 -39
  66. package/esm2022/lib/components/file-download/file-download.component.mjs +0 -176
  67. package/esm2022/lib/components/file-upload/file-upload.component.mjs +0 -474
  68. package/esm2022/lib/components/filter/filter.component.mjs +0 -302
  69. package/esm2022/lib/components/filter-popover/filter-popover.component.mjs +0 -198
  70. package/esm2022/lib/components/footer/footer.component.mjs +0 -55
  71. package/esm2022/lib/components/form-support-text/form-support-text.component.mjs +0 -63
  72. package/esm2022/lib/components/header/header.component.mjs +0 -193
  73. package/esm2022/lib/components/icon-button/icon-button.component.mjs +0 -38
  74. package/esm2022/lib/components/image-preview/image-preview.component.mjs +0 -30
  75. package/esm2022/lib/components/inactive-tenant/inactive-tenant.component.mjs +0 -44
  76. package/esm2022/lib/components/legend/legend.component.mjs +0 -37
  77. package/esm2022/lib/components/list/list.component.mjs +0 -199
  78. package/esm2022/lib/components/loader/loader.component.mjs +0 -22
  79. package/esm2022/lib/components/menu/menu.component.mjs +0 -75
  80. package/esm2022/lib/components/modal/modal.component.mjs +0 -166
  81. package/esm2022/lib/components/modal-confirmation/modal-confirmation.component.mjs +0 -45
  82. package/esm2022/lib/components/modal-info/modal-info.component.mjs +0 -41
  83. package/esm2022/lib/components/multi-select-autocomplete/multi-select-autocomplete.component.mjs +0 -321
  84. package/esm2022/lib/components/navigation-menu/navigation-menu.component.mjs +0 -89
  85. package/esm2022/lib/components/policy-confirmation-dialog/policy-confirmation-dialog.component.mjs +0 -81
  86. package/esm2022/lib/components/rich-text-editor/rich-text-editor.component.mjs +0 -214
  87. package/esm2022/lib/components/slide-toggle/slide-toggle.component.mjs +0 -98
  88. package/esm2022/lib/components/stepper/stepper.component.mjs +0 -69
  89. package/esm2022/lib/components/tabs/tabs.component.mjs +0 -210
  90. package/esm2022/lib/components/tile/tile.component.mjs +0 -70
  91. package/esm2022/lib/components/time-picker/time-picker.component.mjs +0 -59
  92. package/esm2022/lib/components/toggle-button/toggle-button.component.mjs +0 -76
  93. package/esm2022/lib/components/welcome/welcome.component.mjs +0 -85
  94. package/esm2022/lib/directives/file-upload/file-upload.directive.mjs +0 -85
  95. package/esm2022/lib/directives/focus-invalid-form-field/focus-invalid-form-field.directive.mjs +0 -34
  96. package/esm2022/lib/directives/observe-dom-change/observe-dom-change.directive.mjs +0 -54
  97. package/esm2022/lib/directives/set-background/set-background.directive.mjs +0 -53
  98. package/esm2022/lib/directives/text-truncated/text-truncated.directive.mjs +0 -72
  99. package/esm2022/lib/models/accordion-info.model.mjs +0 -14
  100. package/esm2022/lib/models/align-browsed-files.model.mjs +0 -7
  101. package/esm2022/lib/models/allowed-file-types.model.mjs +0 -8
  102. package/esm2022/lib/models/app-config-info.model.mjs +0 -2
  103. package/esm2022/lib/models/breadcrumb.model.mjs +0 -2
  104. package/esm2022/lib/models/button-type.model.mjs +0 -7
  105. package/esm2022/lib/models/card-button.model.mjs +0 -2
  106. package/esm2022/lib/models/card-info.model.mjs +0 -2
  107. package/esm2022/lib/models/chip-option.model.mjs +0 -21
  108. package/esm2022/lib/models/color-format.model.mjs +0 -13
  109. package/esm2022/lib/models/custom-properties.model.mjs +0 -14
  110. package/esm2022/lib/models/download-file.model.mjs +0 -2
  111. package/esm2022/lib/models/event-emit-type.model.mjs +0 -2
  112. package/esm2022/lib/models/export-format-popover.model.mjs +0 -10
  113. package/esm2022/lib/models/export-success-dialog.model.mjs +0 -2
  114. package/esm2022/lib/models/file-download-config.model.mjs +0 -2
  115. package/esm2022/lib/models/file-info.model.mjs +0 -2
  116. package/esm2022/lib/models/file-upload-payload-model.mjs +0 -2
  117. package/esm2022/lib/models/file-upload-presigned-url-res.model.mjs +0 -2
  118. package/esm2022/lib/models/file-upload-response.model.mjs +0 -2
  119. package/esm2022/lib/models/file-upload-status.model.mjs +0 -2
  120. package/esm2022/lib/models/filter-popover.model.mjs +0 -2
  121. package/esm2022/lib/models/filters-options.model.mjs +0 -2
  122. package/esm2022/lib/models/inactive-tenant.model.mjs +0 -2
  123. package/esm2022/lib/models/input-field-type.model.mjs +0 -8
  124. package/esm2022/lib/models/legend.model.mjs +0 -2
  125. package/esm2022/lib/models/link-type.model.mjs +0 -6
  126. package/esm2022/lib/models/list-item.model.mjs +0 -2
  127. package/esm2022/lib/models/menu.model.mjs +0 -2
  128. package/esm2022/lib/models/paginator-config.model.mjs +0 -2
  129. package/esm2022/lib/models/policy-confirmation-dialog.model.mjs +0 -2
  130. package/esm2022/lib/models/profile-menu.model.mjs +0 -8
  131. package/esm2022/lib/models/select-opened-state.model.mjs +0 -2
  132. package/esm2022/lib/models/selected-date.model.mjs +0 -2
  133. package/esm2022/lib/models/selected-time.model.mjs +0 -2
  134. package/esm2022/lib/models/slide-toggle-options.model.mjs +0 -2
  135. package/esm2022/lib/models/tab.model.mjs +0 -2
  136. package/esm2022/lib/models/table-actions.model.mjs +0 -2
  137. package/esm2022/lib/models/table-column-menu-info.model.mjs +0 -2
  138. package/esm2022/lib/models/table-schema.model.mjs +0 -20
  139. package/esm2022/lib/models/tile.model.mjs +0 -2
  140. package/esm2022/lib/pipes/safe.pipe.mjs +0 -44
  141. package/esm2022/lib/services/break-point-observer.service.mjs +0 -36
  142. package/esm2022/lib/services/file-upload.service.mjs +0 -378
  143. package/lib/components/accordion/accordion.component.d.ts +0 -30
  144. package/lib/components/add-form-group/add-form-group.component.d.ts +0 -19
  145. package/lib/components/breadcrumb/breadcrumb.component.d.ts +0 -61
  146. package/lib/components/card/card.component.d.ts +0 -39
  147. package/lib/components/chips/chips.component.d.ts +0 -374
  148. package/lib/components/color-picker/color-picker.component.d.ts +0 -88
  149. package/lib/components/data-table/data-table.component.d.ts +0 -326
  150. package/lib/components/export-format-popover/export-format-popover.component.d.ts +0 -45
  151. package/lib/components/export-success-dialog/export-success-dialog.component.d.ts +0 -24
  152. package/lib/components/file-download/file-download.component.d.ts +0 -383
  153. package/lib/components/file-upload/file-upload.component.d.ts +0 -522
  154. package/lib/components/filter/filter.component.d.ts +0 -113
  155. package/lib/components/filter-popover/filter-popover.component.d.ts +0 -84
  156. package/lib/components/footer/footer.component.d.ts +0 -37
  157. package/lib/components/form-support-text/form-support-text.component.d.ts +0 -32
  158. package/lib/components/header/header.component.d.ts +0 -86
  159. package/lib/components/icon-button/icon-button.component.d.ts +0 -21
  160. package/lib/components/image-preview/image-preview.component.d.ts +0 -11
  161. package/lib/components/inactive-tenant/inactive-tenant.component.d.ts +0 -21
  162. package/lib/components/legend/legend.component.d.ts +0 -13
  163. package/lib/components/list/list.component.d.ts +0 -95
  164. package/lib/components/loader/loader.component.d.ts +0 -7
  165. package/lib/components/menu/menu.component.d.ts +0 -36
  166. package/lib/components/modal/modal.component.d.ts +0 -75
  167. package/lib/components/modal-confirmation/modal-confirmation.component.d.ts +0 -24
  168. package/lib/components/modal-info/modal-info.component.d.ts +0 -23
  169. package/lib/components/multi-select-autocomplete/multi-select-autocomplete.component.d.ts +0 -130
  170. package/lib/components/navigation-menu/navigation-menu.component.d.ts +0 -45
  171. package/lib/components/policy-confirmation-dialog/policy-confirmation-dialog.component.d.ts +0 -46
  172. package/lib/components/rich-text-editor/rich-text-editor.component.d.ts +0 -75
  173. package/lib/components/slide-toggle/slide-toggle.component.d.ts +0 -45
  174. package/lib/components/stepper/stepper.component.d.ts +0 -46
  175. package/lib/components/tabs/tabs.component.d.ts +0 -86
  176. package/lib/components/tile/tile.component.d.ts +0 -39
  177. package/lib/components/time-picker/time-picker.component.d.ts +0 -20
  178. package/lib/components/toggle-button/toggle-button.component.d.ts +0 -51
  179. package/lib/components/welcome/welcome.component.d.ts +0 -41
  180. package/lib/directives/file-upload/file-upload.directive.d.ts +0 -42
  181. package/lib/directives/focus-invalid-form-field/focus-invalid-form-field.directive.d.ts +0 -18
  182. package/lib/directives/observe-dom-change/observe-dom-change.directive.d.ts +0 -23
  183. package/lib/directives/set-background/set-background.directive.d.ts +0 -28
  184. package/lib/directives/text-truncated/text-truncated.directive.d.ts +0 -30
  185. package/lib/models/accordion-info.model.d.ts +0 -12
  186. package/lib/models/align-browsed-files.model.d.ts +0 -4
  187. package/lib/models/allowed-file-types.model.d.ts +0 -5
  188. package/lib/models/app-config-info.model.d.ts +0 -16
  189. package/lib/models/breadcrumb.model.d.ts +0 -6
  190. package/lib/models/button-type.model.d.ts +0 -4
  191. package/lib/models/card-button.model.d.ts +0 -6
  192. package/lib/models/card-info.model.d.ts +0 -8
  193. package/lib/models/chip-option.model.d.ts +0 -25
  194. package/lib/models/color-format.model.d.ts +0 -13
  195. package/lib/models/custom-properties.model.d.ts +0 -11
  196. package/lib/models/download-file.model.d.ts +0 -4
  197. package/lib/models/event-emit-type.model.d.ts +0 -5
  198. package/lib/models/export-format-popover.model.d.ts +0 -15
  199. package/lib/models/export-success-dialog.model.d.ts +0 -8
  200. package/lib/models/file-download-config.model.d.ts +0 -9
  201. package/lib/models/file-info.model.d.ts +0 -12
  202. package/lib/models/file-upload-payload-model.d.ts +0 -10
  203. package/lib/models/file-upload-presigned-url-res.model.d.ts +0 -35
  204. package/lib/models/file-upload-response.model.d.ts +0 -13
  205. package/lib/models/file-upload-status.model.d.ts +0 -8
  206. package/lib/models/filter-popover.model.d.ts +0 -24
  207. package/lib/models/filters-options.model.d.ts +0 -4
  208. package/lib/models/inactive-tenant.model.d.ts +0 -5
  209. package/lib/models/input-field-type.model.d.ts +0 -5
  210. package/lib/models/legend.model.d.ts +0 -6
  211. package/lib/models/link-type.model.d.ts +0 -3
  212. package/lib/models/list-item.model.d.ts +0 -24
  213. package/lib/models/menu.model.d.ts +0 -9
  214. package/lib/models/paginator-config.model.d.ts +0 -5
  215. package/lib/models/policy-confirmation-dialog.model.d.ts +0 -13
  216. package/lib/models/profile-menu.model.d.ts +0 -4
  217. package/lib/models/select-opened-state.model.d.ts +0 -4
  218. package/lib/models/selected-date.model.d.ts +0 -4
  219. package/lib/models/selected-time.model.d.ts +0 -4
  220. package/lib/models/slide-toggle-options.model.d.ts +0 -6
  221. package/lib/models/tab.model.d.ts +0 -6
  222. package/lib/models/table-actions.model.d.ts +0 -8
  223. package/lib/models/table-column-menu-info.model.d.ts +0 -6
  224. package/lib/models/table-schema.model.d.ts +0 -32
  225. package/lib/models/tile.model.d.ts +0 -12
  226. package/lib/pipes/safe.pipe.d.ts +0 -16
  227. package/lib/services/break-point-observer.service.d.ts +0 -21
  228. package/lib/services/file-upload.service.d.ts +0 -462
@@ -1,321 +0,0 @@
1
- import { COMMA, ENTER } from '@angular/cdk/keycodes';
2
- import { Component, EventEmitter, Input, Output, ViewChild, ViewEncapsulation, } from '@angular/core';
3
- import { CommonModule } from '@angular/common';
4
- import { MatAutocompleteModule, MAT_AUTOCOMPLETE_DEFAULT_OPTIONS, } from '@angular/material/autocomplete';
5
- import { ReactiveFormsModule } from '@angular/forms';
6
- import { MatButtonModule } from '@angular/material/button';
7
- import { MatCheckboxModule } from '@angular/material/checkbox';
8
- import { MatOptionModule } from '@angular/material/core';
9
- import { MatIconModule } from '@angular/material/icon';
10
- import { MatInputModule } from '@angular/material/input';
11
- import { Subject, fromEvent } from 'rxjs';
12
- import { map, takeUntil, filter, debounceTime } from 'rxjs/operators';
13
- import * as autocompleteConstInfo from '../../assets/constants.json';
14
- import { MatChipsModule } from '@angular/material/chips';
15
- import { FormControlType } from '../../models/form-control-types.model';
16
- import { FormErrorComponent } from '../form-error/form-error.component';
17
- import { FormSupportTextComponent } from '../form-support-text/form-support-text.component';
18
- import { MatTooltipModule } from '@angular/material/tooltip';
19
- import { TextTruncatedDirective } from '../../directives/text-truncated/text-truncated.directive';
20
- import * as i0 from "@angular/core";
21
- import * as i1 from "../../services/form-utility.service";
22
- import * as i2 from "@angular/common";
23
- import * as i3 from "@angular/forms";
24
- import * as i4 from "@angular/material/core";
25
- import * as i5 from "@angular/material/autocomplete";
26
- import * as i6 from "@angular/material/input";
27
- import * as i7 from "@angular/material/form-field";
28
- import * as i8 from "@angular/material/button";
29
- import * as i9 from "@angular/material/checkbox";
30
- import * as i10 from "@angular/material/chips";
31
- import * as i11 from "@angular/material/tooltip";
32
- /**
33
- * MultiSelectAutocompleteComponent allows to search the option(s) from the list and select the option(s) from the autocomplete search results.
34
- * @class MultiSelectAutocompleteComponent
35
- * @implements {OnInit}
36
- * @implements {FormField}
37
- * @implements {OnDestroy}
38
- * @implements {AfterViewInit}
39
- */
40
- export class MultiSelectAutocompleteComponent {
41
- /**
42
- * Sets the options for multi select autocomplete.
43
- * @memberof MultiSelectAutocompleteComponent
44
- */
45
- set multiSelectAutoCompleteOptions(value) {
46
- this.autoCompleteOptionList = value;
47
- }
48
- /**
49
- * Returns the autocomplete options list.
50
- * @readonly
51
- * @type {AutoCompleteOption[]}
52
- * @memberof MultiSelectAutocompleteComponent
53
- */
54
- get multiSelectAutoCompleteOptions() {
55
- return this.autoCompleteOptionList;
56
- }
57
- // eslint-disable-next-line no-unused-vars, no-empty-function
58
- constructor(
59
- // eslint-disable-next-line no-unused-vars
60
- formUtilityService,
61
- // eslint-disable-next-line no-unused-vars
62
- changeDetectorRef // eslint-disable-next-line no-empty-function
63
- ) {
64
- this.formUtilityService = formUtilityService;
65
- this.changeDetectorRef = changeDetectorRef;
66
- this.separatorKeysCodes = [ENTER, COMMA];
67
- this.selectedOptions = [];
68
- this.multiSelectAutoCompleteSearchValue = new EventEmitter();
69
- this.multiSelectAutoCompleteClearSearchValue = new EventEmitter();
70
- this.multiSelectAutoCompleteOptionsSelected = new EventEmitter();
71
- this.destroy$ = new Subject();
72
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
73
- this.autocompleteConstInfo = autocompleteConstInfo;
74
- this.removeIconURL = this.autocompleteConstInfo?.multiSelectAutoComplete?.icons?.remove;
75
- this.clearAllIconURL = this.autocompleteConstInfo?.multiSelectAutoComplete?.icons?.clearAll;
76
- this.clearAll = this.autocompleteConstInfo?.multiSelectAutoComplete?.label.clearAll;
77
- }
78
- /**
79
- * Implementation of ngOnInit lifecycle hook method to initialize components instance properties.
80
- * @memberof MultiSelectAutocompleteComponent
81
- */
82
- ngOnInit() {
83
- this.config =
84
- this.config ??
85
- this.formUtilityService.getFormFieldConfig('multiSelectAutocomplete', FormControlType.AUTO_COMPLETE);
86
- this.group =
87
- this.group ??
88
- this.formUtilityService.getFormGroup('multiSelectAutocomplete');
89
- this.multiSelectAutoCompleteOptions =
90
- this.config?.multiSelectAutoCompleteOptions ??
91
- this.multiSelectAutoCompleteOptions;
92
- if (this.config?.value)
93
- this.selectedOptions = this.config?.value;
94
- }
95
- /**
96
- * Initialize the form control change event once the form control is ready on ngAfterViewInit by calling onValueChanges method.
97
- * @memberof MultiSelectAutocompleteComponent
98
- */
99
- ngAfterViewInit() {
100
- if (this.selectedOptions?.length)
101
- this.group?.get(this.config?.controlName)?.setErrors(null);
102
- this.onValueChanges();
103
- this.changeDetectorRef.detectChanges();
104
- }
105
- /**
106
- * Emits an multiSelectAutoCompleteSearchValue change event when the value is changed and value is greater than minCharToSearch or equal to zero.
107
- * @memberof MultiSelectAutocompleteComponent
108
- */
109
- onValueChanges() {
110
- fromEvent(this.multiSelectAutoComplete?.nativeElement, 'keyup')
111
- .pipe(takeUntil(this.destroy$),
112
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
113
- map((event) => event?.target?.value), filter(
114
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
115
- (res) => res?.length <
116
- this.autocompleteConstInfo?.autocomplete?.minCharToSearch &&
117
- res?.length !== 0), debounceTime(this.autocompleteConstInfo?.autocomplete?.debounceTime))
118
- .subscribe((text) => {
119
- if (text === '')
120
- this.handleFieldError();
121
- this.multiSelectAutoCompleteClearSearchValue.emit(text);
122
- });
123
- this.group?.controls[this.config?.controlName]?.valueChanges
124
- .pipe(takeUntil(this.destroy$), filter(
125
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
126
- (res) => res?.length >=
127
- this.autocompleteConstInfo?.autocomplete?.minCharToSearch ||
128
- res?.length === 0), debounceTime(this.autocompleteConstInfo?.autocomplete?.debounceTime))
129
- .subscribe((text) => {
130
- this.multiSelectAutoCompleteSearchValue.emit(text);
131
- if (text === '')
132
- this.handleFieldError();
133
- });
134
- }
135
- /**
136
- * Handles field error by setting the appropriate form control errors.
137
- * @memberof MultiSelectAutocompleteComponent
138
- */
139
- handleFieldError() {
140
- this.group?.controls[this.config?.controlName]?.setValue(this.selectedOptions);
141
- if (this.selectedOptions?.length) {
142
- this.group?.get(this.config?.controlName)?.setErrors({
143
- required: false,
144
- });
145
- }
146
- }
147
- /**
148
- * Adds a newly entered option to the selectedOptions array.
149
- * @param {*} event -The event containing the input and value.
150
- * @memberof MultiSelectAutocompleteComponent
151
- */
152
- add(event) {
153
- if (this.autoCompleteOptionList.length)
154
- return;
155
- const control = this.group?.get(this.config?.controlName);
156
- const input = event?.chipInput?.inputElement;
157
- const value = (event?.value || '').trim();
158
- if (value.length === 0)
159
- return;
160
- const minLength = control?.errors?.['minlength']?.requiredLength;
161
- const maxLength = control?.errors?.['maxlength']?.requiredLength;
162
- if ((value.length >= minLength && value.length <= maxLength) ||
163
- (minLength === undefined && maxLength === undefined)) {
164
- this.selectedOptions.push({ id: '', name: value });
165
- if (input)
166
- input.value = '';
167
- this.formatSelectedOption(this.selectedOptions);
168
- }
169
- }
170
- /**
171
- * Removes a selected option from the selectedOptions array.
172
- * @param {SelectOption} removedOption -The option to remove.
173
- * @memberof MultiSelectAutocompleteComponent
174
- */
175
- onOptionRemoved(removedOption) {
176
- const index = this.selectedOptions?.findIndex((option) => option.id === removedOption.id);
177
- if (index >= 0) {
178
- this.selectedOptions?.splice(index, 1);
179
- }
180
- if (this.selectedOptions?.length === 0) {
181
- this.group.value[this.config?.controlName] = '';
182
- this.group?.controls[this.config?.controlName].setValue('');
183
- this.selectedOptions = [];
184
- this.autoCompleteOptionList = [];
185
- this.handleFieldError();
186
- }
187
- this.formatSelectedOption(this.selectedOptions);
188
- }
189
- /**
190
- * Handles the selection of an autocomplete option.
191
- * @param {AutoCompleteOption} option -The selected autocomplete option.
192
- * @return {AutoCompleteOption}
193
- * @memberof MultiSelectAutocompleteComponent
194
- */
195
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
196
- onChange(option) {
197
- const value = option?.value;
198
- if (this.isCheckboxSelected(value)) {
199
- this.onOptionRemoved(value);
200
- }
201
- else {
202
- this.selectedOptions.push(value);
203
- }
204
- this.formatSelectedOption(this.selectedOptions);
205
- requestAnimationFrame(() => {
206
- this.multiSelectAutoComplete?.nativeElement.focus();
207
- });
208
- return value;
209
- }
210
- /**
211
- * Formats the selected options and emits the multiSelectAutoCompleteOptionSelected event.
212
- * @param {SelectOption[]} selectedOptions -Array of selected options.
213
- * @memberof MultiSelectAutocompleteComponent
214
- */
215
- formatSelectedOption(selectedOptions) {
216
- const formattedOptions = selectedOptions?.map((option) => {
217
- return {
218
- id: option.id,
219
- name: option.name,
220
- };
221
- });
222
- this.multiSelectAutoCompleteOptionsSelected?.emit(formattedOptions);
223
- }
224
- /**
225
- * Displays the name of the option
226
- * @param {AutoCompleteOption} option
227
- * @return {*} {string}
228
- * @memberof MultiSelectAutocompleteComponent
229
- */
230
- displayOptionName(option) {
231
- return option?.name ? option.name : '';
232
- }
233
- /**
234
- * Tracks the option by its index or id.
235
- * @param {number} index
236
- * @param {SelectOption} option
237
- * @return {*} {(number | string)}
238
- * @memberof MultiSelectAutocompleteComponent
239
- */
240
- trackByFn(index, option) {
241
- return option.id;
242
- }
243
- /**
244
- * Checks if the checkbox is selected.
245
- * @param {AutoCompleteOption} option
246
- * @return {*} {boolean}
247
- * @memberof MultiSelectAutocompleteComponent
248
- */
249
- isCheckboxSelected(option) {
250
- return this.selectedOptions?.some((item) => item.id === option.id);
251
- }
252
- /**
253
- * Clears all selected options.
254
- * @memberof MultiSelectAutocompleteComponent
255
- */
256
- clearSelections() {
257
- this.group.value[this.config?.controlName] = '';
258
- this.group?.controls[this.config?.controlName].setValue('');
259
- this.selectedOptions = [];
260
- this.autoCompleteOptionList = [];
261
- this.formatSelectedOption(this.selectedOptions);
262
- this.handleFieldError();
263
- }
264
- /**
265
- * Implementation of ngOnDestroy lifecycle hook method to unsubscribe the open observable subscriptions.
266
- * @memberof MultiSelectAutocompleteComponent
267
- */
268
- ngOnDestroy() {
269
- this.destroy$.next(true);
270
- this.destroy$.unsubscribe();
271
- }
272
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MultiSelectAutocompleteComponent, deps: [{ token: i1.FormUtilityService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
273
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: MultiSelectAutocompleteComponent, isStandalone: true, selector: "ieeesa-multi-select-autocomplete", inputs: { multiSelectAutoCompleteOptions: "multiSelectAutoCompleteOptions" }, outputs: { multiSelectAutoCompleteSearchValue: "multiSelectAutoCompleteSearchValue", multiSelectAutoCompleteClearSearchValue: "multiSelectAutoCompleteClearSearchValue", multiSelectAutoCompleteOptionsSelected: "multiSelectAutoCompleteOptionsSelected" }, providers: [
274
- {
275
- provide: MAT_AUTOCOMPLETE_DEFAULT_OPTIONS,
276
- useValue: {
277
- overlayPanelClass: 'ieeesa-multi-select-autocomplete-overlay-panel',
278
- },
279
- },
280
- ], viewQueries: [{ propertyName: "multiSelectAutoComplete", first: true, predicate: ["multiSelectAutoComplete"], descendants: true }, { propertyName: "matACTrigger", first: true, predicate: ["autocompleteTrigger"], descendants: true }], ngImport: i0, template: "<div\r\n class=\"ieeesa-multi-select-autocomplete\"\r\n [formGroup]=\"group\"\r\n *ngIf=\"group\"\r\n [ngClass]=\"\r\n config.isLabelAlignedLeft\r\n ? 'ieeesa-multi-select-autocomplete-field__label-left'\r\n : 'ieeesa-multi-select-autocomplete-field__label-top'\r\n \"\r\n>\r\n <mat-label class=\"ieeesa-body-sm-14 ieeesa-multi-select-autocomplete__label\"\r\n >{{ config.label }}</mat-label\r\n >\r\n <mat-form-field\r\n class=\"ieeesa-multi-select-autocomplete__mat-form-field\"\r\n appearance=\"outline\"\r\n >\r\n <mat-chip-grid\r\n #chipGrid\r\n [attr.aria-label]=\"autocompleteConstInfo?.multiSelectAutoComplete?.ariaLabel?.selectedOptions\"\r\n >\r\n <mat-chip-row\r\n *ngFor=\"let option of selectedOptions; trackBy: trackByFn\"\r\n [attr.aria-label]=\"option?.name\"\r\n [removable]=\"true\"\r\n (removed)=\"onOptionRemoved(option)\"\r\n >\r\n <p\r\n ieeesaTextTruncated\r\n [matTooltip]=\"option.name\"\r\n class=\"ieeesa-label-lg-bold-16 m-0\"\r\n >\r\n {{ option.name }}\r\n </p>\r\n <button\r\n matChipRemove\r\n [attr.aria-label]=\"autocompleteConstInfo?.multiSelectAutoComplete?.ariaLabel?.removeOption + option.name\"\r\n >\r\n <svg class=\"ieeesa-chip__svg-avatar\" matChipAvatar>\r\n <use [attr.xlink:href]=\"removeIconURL\"></use>\r\n </svg>\r\n </button>\r\n </mat-chip-row>\r\n </mat-chip-grid>\r\n <input\r\n matInput\r\n class=\"ieeesa-multi-select-autocomplete__input ieeesa-title-sm-16\"\r\n [matAutocomplete]=\"matAutocomplete\"\r\n [placeholder]=\"config.placeholder ?? ''\"\r\n [formControlName]=\"config.controlName\"\r\n [name]=\"config.controlName\"\r\n [attr.aria-label]=\"config.ariaLabel\"\r\n [aria-describedby]=\"config.ariaDescribedById ?? ''\"\r\n #multiSelectAutoComplete\r\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\"\r\n (matChipInputTokenEnd)=\"add($event)\"\r\n [matChipInputFor]=\"chipGrid\"\r\n />\r\n <mat-autocomplete\r\n #matAutocomplete=\"matAutocomplete\"\r\n (optionSelected)=\"onChange($event.option)\"\r\n [displayWith]=\"displayOptionName\"\r\n class=\"ieeesa-multi-select-autocomplete__autocomplete-list\"\r\n >\r\n <mat-option\r\n *ngFor=\"let option of autoCompleteOptionList; trackBy: trackByFn\"\r\n [value]=\"option\"\r\n >\r\n <mat-checkbox color=\"primary\" [checked]=\"isCheckboxSelected(option)\">\r\n </mat-checkbox>\r\n {{ option.name }}\r\n </mat-option>\r\n </mat-autocomplete>\r\n <button\r\n type=\"button\"\r\n matSuffix\r\n mat-icon-button\r\n [matTooltip]=\"clearAll\"\r\n [attr.aria-label]=\"autocompleteConstInfo.ariaLabel.clear\"\r\n *ngIf=\"selectedOptions.length > 0\"\r\n (click)=\"clearSelections()\"\r\n >\r\n <svg class=\"ieeesa-multi-select-autocomplete__svg-clear-all\">\r\n <use [attr.xlink:href]=\"clearAllIconURL\"></use>\r\n </svg>\r\n </button>\r\n </mat-form-field>\r\n <ieeesa-form-error [formGroup]=\"group\" [config]=\"config\"> </ieeesa-form-error>\r\n <ieeesa-form-support-text\r\n [formGroup]=\"group\"\r\n [config]=\"config\"\r\n ></ieeesa-form-support-text>\r\n</div>\r\n", styles: [".ieeesa-subtitle{text-align:left;font-family:Calibri Regular;font-size:1.5625rem;letter-spacing:0;color:#000;opacity:1}.ieeesa-body{text-align:left;font-family:Calibri Regular;font-size:1.25rem;letter-spacing:0;color:#000;opacity:1}.ieeesa-display-lg-57{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:3.5625rem;line-height:64px;color:#000;letter-spacing:0}.ieeesa-display-md-45{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.813rem;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-md-47{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.9375rem;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-sm-38{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.375rem;line-height:44px;color:#000;letter-spacing:0}.ieeesa-headline-lg-32{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2rem;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-lg-34{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.125rem;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-md-30{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.875rem;line-height:36px;color:#000;letter-spacing:0}.ieeesa-headline-sm-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5rem;line-height:32px;color:#00629b;letter-spacing:0}.ieeesa-headline-sm-26{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.625rem;line-height:32px;color:#000;letter-spacing:0}.ieeesa-title-lg-bold-24{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.5rem;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-lg-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5rem;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-md-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.009375em}.ieeesa-title-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-title-sm-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-btn-label-lg-bold-16{font-family:Calibri Regular;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#00629b;letter-spacing:.00625em}.ieeesa-label-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-label-sm-13{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.8125rem;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-18{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:20px;color:#1c1b1f;letter-spacing:.015625em}.ieeesa-body-md-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.015625em}.ieeesa-body-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-body-sm-12{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.75rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-body-color-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:18px;color:#49454f;letter-spacing:.025em}.ieeesa-body-sm-bold-14{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-title-inter-lg-bold-24{font-family:Inter Bold;font-style:normal;font-weight:700;font-size:1.5rem;line-height:29px;color:#000;letter-spacing:0}.mat-mdc-button.mat-mdc-button-base.mat-primary-button,.mat-mdc-button.mat-mdc-button-base.mat-secondary-button,.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button,.mat-mdc-button.mat-mdc-button-base.mat-text-button{min-width:103px;width:auto;min-height:40px;height:auto;border-radius:3px;text-align:center;padding:.625em 1.5em;border:none;font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.mat-mdc-button.mat-mdc-button-base>.mat-icon{margin-right:11px}.mat-mdc-button.mat-mdc-button-base.mat-primary-button{background-color:#00629b;color:#fff}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:focus{background:#1f75a7}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:hover{background-color:#003e65}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:active{background-color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:disabled{background-color:#1c1b1f1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button{color:#fff;background:#a7a8aa;box-shadow:0 1px 2px #0000004d,0 2px 6px 2px #00000026}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:hover{background:#a7a8aa}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:focus{background:#f0f5f9}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:active{background:#1d192b1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:disabled{background:#1c1b1f1f;color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button{background-color:#fff;border:1px solid #00629b;color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:hover{background-color:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:focus{background-color:#f0f5f9}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:active{background:#6750a41f}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:disabled{border:1px solid rgba(28,27,31,.12);color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-text-button{color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-text-button:hover,.mat-mdc-button.mat-mdc-button-base.mat-text-button:active{background:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-text-button:disabled{color:#1c1b1f;opacity:.38}.ieeesa-text-button{color:#cac4d0;background:none;border:none}.ieeesa-view-more-or-less-button{border:none;background:none;text-decoration:underline;color:#00629b}.flex-align-center{display:flex;align-items:center;justify-content:center}.mat-button-toggle-checked{background-color:#a7a8aa}.mat-button-toggle-checked .mat-button-toggle-label-content:before{font-family:\"Font Awesome 5 Free\";font-weight:900;content:\"\\f00c\";padding-right:.5625em}.mat-button-toggle-group .mat-button-toggle-label-content{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#1c1b1f;letter-spacing:.00625em}.no-bg-color-btn{color:#00629b;border-radius:3px;border:1px solid #00629b;min-height:40px;height:auto}@media (max-width: 768px){.mat-button-toggle-group .mat-button-toggle-label-content{max-width:8ch;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;position:relative}}.cdk-overlay-pane .mat-mdc-tooltip .mdc-tooltip__surface{color:#525252;padding:6px 12px;font-family:Calibri Regular;font-size:1rem;border:1px solid #cac4d0;background:#fff;box-shadow:0 4px 8px #00000040;max-width:unset!important}.cdk-overlay-pane .mat-mdc-option .mdc-list-item__primary-text{font-family:Calibri Regular!important}.cdk-overlay-pane.ieeesa-modal-confirm-dialog,.cdk-overlay-pane.ieeesa-modal-dialog,.cdk-overlay-pane.ieeesa-alert-dialog{width:100%;min-width:312px}.mat-mdc-form-field{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:24px;color:#49454f;letter-spacing:.03125em}.ieeesa-cancel-modal-confirm-dialog{width:25vw!important}.ieeesa-cancel-modal-confirm-dialog .ieeesa-confirmation{padding:1.5em 1.5em 1em}.ieeesa-cancel-modal-confirm-dialog .ieeesa-confirmation .mat-mdc-dialog-content{text-align:center;padding:0 0 1em!important}.mat-mdc-button,.mat-mdc-outlined-button{--mat-mdc-button-persistent-ripple-color: unset}@media (max-width: 768px){.ieeesa-cancel-modal-confirm-dialog{width:90vw!important}}.ieeesa-wrapper-border{border:1px solid #b2b7be;border-top:none;padding:1.5em;border-radius:0 0 4px 4px}.ieeesa-multi-select-autocomplete__mat-form-field{width:100%}.ieeesa-multi-select-autocomplete__label-left{display:flex}.ieeesa-multi-select-autocomplete__label-top{display:block}.ieeesa-multi-select-autocomplete__svg-clear-all{height:24px!important;width:24px!important;color:#878b8f}.ieeesa-multi-select-autocomplete__label{color:#49454f!important;font-size:.75rem!important}.ieeesa-multi-select-autocomplete__input::placeholder{color:#63666a!important;font-size:1rem!important}.ieeesa-multi-select-autocomplete__input{position:relative;z-index:1}.ieeesa-multi-select-autocomplete .mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-text-field__input{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:24px;color:#1c1b1f;letter-spacing:.03125em}.ieeesa-multi-select-autocomplete .mdc-notched-outline__leading,.ieeesa-multi-select-autocomplete .mdc-notched-outline__trailing,.ieeesa-multi-select-autocomplete .mdc-notched-outline__notch{border:unset;border-bottom:1px solid #878b8f;background:#fff!important;border-top:1px solid #878b8f;border-right:1px solid #878b8f;border-left:1px solid #878b8f;border-radius:4px;border-color:#878b8f!important}.ieeesa-multi-select-autocomplete .mdc-notched-outline__leading{border-right:unset}.ieeesa-multi-select-autocomplete .mdc-notched-outline__trailing{border-left:unset}.ieeesa-multi-select-autocomplete .mat-focused .mdc-notched-outline__leading,.ieeesa-multi-select-autocomplete .mat-focused .mdc-notched-outline__trailing,.ieeesa-multi-select-autocomplete .mat-focused .mdc-notched-outline__notch{border:unset;border-bottom:2px solid #00629b}.ieeesa-multi-select-autocomplete .mat-mdc-form-field-subscript-wrapper{display:none}.ieeesa-multi-select-autocomplete .mat-mdc-form-field{min-height:52px;width:-webkit-fill-available;width:-moz-available}.ieeesa-multi-select-autocomplete .mat-mdc-text-field-wrapper{height:auto;min-width:210px;width:auto}.ieeesa-multi-select-autocomplete .mat-mdc-form-field-focus-overlay{background:#fff}.ieeesa-multi-select-autocomplete:has(.mdc-text-field--focused) .ieeesa-multi-select-autocomplete__label{color:#00629b!important}.ieeesa-multi-select-autocomplete:has(.mdc-text-field--focused) .mdc-notched-outline__leading,.ieeesa-multi-select-autocomplete:has(.mdc-text-field--focused) .mdc-notched-outline__trailing,.ieeesa-multi-select-autocomplete:has(.mdc-text-field--focused) .mdc-notched-outline__notch{border:unset;border-bottom:2px solid #00629b;border-color:#00629b!important}.ieeesa-multi-select-autocomplete:has(.mdc-text-field--focused) .mdc-notched-outline__trailing,.ieeesa-multi-select-autocomplete:has(.mdc-text-field--focused) .mdc-notched-outline__leading{border-top:2px solid #00629b}.ieeesa-multi-select-autocomplete:has(.mdc-text-field--focused) .mdc-notched-outline__trailing{border-right:2px solid #00629b}.ieeesa-multi-select-autocomplete:has(.mdc-text-field--focused) .mdc-notched-outline__leading{border-left:2px solid #00629b}.ieeesa-multi-select-autocomplete:has(.mdc-text-field--invalid) .ieeesa-multi-select-autocomplete__label{color:#ba0c2f!important}.ieeesa-multi-select-autocomplete:has(.mdc-text-field--invalid) .mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.ieeesa-multi-select-autocomplete:has(.mdc-text-field--invalid) .mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing,.ieeesa-multi-select-autocomplete:has(.mdc-text-field--invalid) .mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__notch{border-width:2px}.ieeesa-multi-select-autocomplete:has(.mdc-text-field--invalid) .mdc-notched-outline__leading,.ieeesa-multi-select-autocomplete:has(.mdc-text-field--invalid) .mdc-notched-outline__trailing,.ieeesa-multi-select-autocomplete:has(.mdc-text-field--invalid) .mdc-notched-outline__notch{border:unset;border-bottom:2px solid #ba0c2f;border-color:#ba0c2f!important}.ieeesa-multi-select-autocomplete:has(.mdc-text-field--invalid) .mdc-notched-outline__trailing,.ieeesa-multi-select-autocomplete:has(.mdc-text-field--invalid) .mdc-notched-outline__leading{border-top:2px solid #ba0c2f}.ieeesa-multi-select-autocomplete:has(.mdc-text-field--invalid) .mdc-notched-outline__trailing{border-right:2px solid #ba0c2f}.ieeesa-multi-select-autocomplete:has(.mdc-text-field--invalid) .mdc-notched-outline__leading{border-left:2px solid #ba0c2f}.ieeesa-multi-select-autocomplete:has(.mdc-text-field--invalid) .ieeesa-label-lg-bold-16{color:#49454f}.ieeesa-multi-select-autocomplete .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mat-mdc-form-field-infix{padding:10px 0!important;width:80%}.ieeesa-multi-select-autocomplete .mat-mdc-form-field-icon-suffix{width:20%;display:flex;justify-content:flex-end}.ieeesa-multi-select-autocomplete .mdc-evolution-chip-set{min-height:5px;position:relative;z-index:1}.ieeesa-multi-select-autocomplete .mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled){padding:10px 0 10px 10px;border-radius:.25em;border:1px solid #79747e;background-color:linear-gradient(0deg,rgba(0,98,155,.05) 0%,rgba(0,98,155,.05) 100%),#fffbfe!important;--mdc-chip-elevated-container-color: $ieeesa-chips-background;max-width:100%}.ieeesa-multi-select-autocomplete .mdc-evolution-chip__icon--primary{color:#000!important;height:18px;width:18px}.ieeesa-multi-select-autocomplete .mdc-evolution-chip__graphic.mat-mdc-chip-graphic{display:none}.ieeesa-multi-select-autocomplete .mat-mdc-chip-action-label .ieeesa-label-lg-bold-16{color:#49454f;max-width:200px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.ieeesa-multi-select-autocomplete .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary{display:flex;justify-content:flex-start}@media (max-width: 767px){.ieeesa-multi-select-autocomplete .mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled){width:100%}.ieeesa-multi-select-autocomplete .mat-mdc-chip-action-label .ieeesa-label-lg-bold-16{max-width:120px}}.ieeesa-multi-select-autocomplete-overlay-panel .mdc-list-item{color:#000;font-family:Calibri Regular;font-size:1rem}.ieeesa-multi-select-autocomplete-overlay-panel .mat-primary .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after{display:none}.ieeesa-multi-select-autocomplete-overlay-panel .mdc-checkbox .mdc-checkbox__native-control:enabled:checked~.mdc-checkbox__background{background-color:#00629b;border-color:#00629b}.ieeesa-multi-select-autocomplete-overlay-panel .mat-mdc-option.mdc-list-item--selected:not(.mdc-list-item--disabled) .mdc-list-item__primary-text{color:#00629b}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: FormErrorComponent, selector: "ieeesa-form-error", inputs: ["formGroup", "config", "submitResponse"] }, { kind: "component", type: FormSupportTextComponent, selector: "ieeesa-form-support-text", inputs: ["formGroup", "config"], outputs: ["supportTextLinkClick"] }, { kind: "ngmodule", type: MatOptionModule }, { kind: "component", type: i4.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "ngmodule", type: MatAutocompleteModule }, { kind: "component", type: i5.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple", "hideSingleSelectionIndicator"], exportAs: ["matAutocomplete"] }, { kind: "directive", type: i5.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i6.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i7.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i7.MatLabel, selector: "mat-label" }, { kind: "directive", type: i7.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i8.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i9.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "ngmodule", type: MatChipsModule }, { kind: "directive", type: i10.MatChipAvatar, selector: "mat-chip-avatar, [matChipAvatar]" }, { kind: "component", type: i10.MatChipGrid, selector: "mat-chip-grid", inputs: ["tabIndex", "disabled", "placeholder", "required", "value", "errorStateMatcher"], outputs: ["change", "valueChange"] }, { kind: "directive", type: i10.MatChipInput, selector: "input[matChipInputFor]", inputs: ["matChipInputFor", "matChipInputAddOnBlur", "matChipInputSeparatorKeyCodes", "placeholder", "id", "disabled"], outputs: ["matChipInputTokenEnd"], exportAs: ["matChipInput", "matChipInputFor"] }, { kind: "directive", type: i10.MatChipRemove, selector: "[matChipRemove]" }, { kind: "component", type: i10.MatChipRow, selector: "mat-chip-row, [mat-chip-row], mat-basic-chip-row, [mat-basic-chip-row]", inputs: ["color", "disabled", "disableRipple", "tabIndex", "editable"], outputs: ["edited"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i11.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "directive", type: TextTruncatedDirective, selector: "[matTooltip][ieeesaTextTruncated]", inputs: ["elementClassNameToAddTooltip"] }], encapsulation: i0.ViewEncapsulation.None }); }
281
- }
282
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MultiSelectAutocompleteComponent, decorators: [{
283
- type: Component,
284
- args: [{ selector: 'ieeesa-multi-select-autocomplete', standalone: true, imports: [
285
- CommonModule,
286
- ReactiveFormsModule,
287
- FormErrorComponent,
288
- FormSupportTextComponent,
289
- MatOptionModule,
290
- MatAutocompleteModule,
291
- MatInputModule,
292
- MatIconModule,
293
- MatButtonModule,
294
- MatCheckboxModule,
295
- MatChipsModule,
296
- MatTooltipModule,
297
- TextTruncatedDirective,
298
- ], providers: [
299
- {
300
- provide: MAT_AUTOCOMPLETE_DEFAULT_OPTIONS,
301
- useValue: {
302
- overlayPanelClass: 'ieeesa-multi-select-autocomplete-overlay-panel',
303
- },
304
- },
305
- ], encapsulation: ViewEncapsulation.None, template: "<div\r\n class=\"ieeesa-multi-select-autocomplete\"\r\n [formGroup]=\"group\"\r\n *ngIf=\"group\"\r\n [ngClass]=\"\r\n config.isLabelAlignedLeft\r\n ? 'ieeesa-multi-select-autocomplete-field__label-left'\r\n : 'ieeesa-multi-select-autocomplete-field__label-top'\r\n \"\r\n>\r\n <mat-label class=\"ieeesa-body-sm-14 ieeesa-multi-select-autocomplete__label\"\r\n >{{ config.label }}</mat-label\r\n >\r\n <mat-form-field\r\n class=\"ieeesa-multi-select-autocomplete__mat-form-field\"\r\n appearance=\"outline\"\r\n >\r\n <mat-chip-grid\r\n #chipGrid\r\n [attr.aria-label]=\"autocompleteConstInfo?.multiSelectAutoComplete?.ariaLabel?.selectedOptions\"\r\n >\r\n <mat-chip-row\r\n *ngFor=\"let option of selectedOptions; trackBy: trackByFn\"\r\n [attr.aria-label]=\"option?.name\"\r\n [removable]=\"true\"\r\n (removed)=\"onOptionRemoved(option)\"\r\n >\r\n <p\r\n ieeesaTextTruncated\r\n [matTooltip]=\"option.name\"\r\n class=\"ieeesa-label-lg-bold-16 m-0\"\r\n >\r\n {{ option.name }}\r\n </p>\r\n <button\r\n matChipRemove\r\n [attr.aria-label]=\"autocompleteConstInfo?.multiSelectAutoComplete?.ariaLabel?.removeOption + option.name\"\r\n >\r\n <svg class=\"ieeesa-chip__svg-avatar\" matChipAvatar>\r\n <use [attr.xlink:href]=\"removeIconURL\"></use>\r\n </svg>\r\n </button>\r\n </mat-chip-row>\r\n </mat-chip-grid>\r\n <input\r\n matInput\r\n class=\"ieeesa-multi-select-autocomplete__input ieeesa-title-sm-16\"\r\n [matAutocomplete]=\"matAutocomplete\"\r\n [placeholder]=\"config.placeholder ?? ''\"\r\n [formControlName]=\"config.controlName\"\r\n [name]=\"config.controlName\"\r\n [attr.aria-label]=\"config.ariaLabel\"\r\n [aria-describedby]=\"config.ariaDescribedById ?? ''\"\r\n #multiSelectAutoComplete\r\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\"\r\n (matChipInputTokenEnd)=\"add($event)\"\r\n [matChipInputFor]=\"chipGrid\"\r\n />\r\n <mat-autocomplete\r\n #matAutocomplete=\"matAutocomplete\"\r\n (optionSelected)=\"onChange($event.option)\"\r\n [displayWith]=\"displayOptionName\"\r\n class=\"ieeesa-multi-select-autocomplete__autocomplete-list\"\r\n >\r\n <mat-option\r\n *ngFor=\"let option of autoCompleteOptionList; trackBy: trackByFn\"\r\n [value]=\"option\"\r\n >\r\n <mat-checkbox color=\"primary\" [checked]=\"isCheckboxSelected(option)\">\r\n </mat-checkbox>\r\n {{ option.name }}\r\n </mat-option>\r\n </mat-autocomplete>\r\n <button\r\n type=\"button\"\r\n matSuffix\r\n mat-icon-button\r\n [matTooltip]=\"clearAll\"\r\n [attr.aria-label]=\"autocompleteConstInfo.ariaLabel.clear\"\r\n *ngIf=\"selectedOptions.length > 0\"\r\n (click)=\"clearSelections()\"\r\n >\r\n <svg class=\"ieeesa-multi-select-autocomplete__svg-clear-all\">\r\n <use [attr.xlink:href]=\"clearAllIconURL\"></use>\r\n </svg>\r\n </button>\r\n </mat-form-field>\r\n <ieeesa-form-error [formGroup]=\"group\" [config]=\"config\"> </ieeesa-form-error>\r\n <ieeesa-form-support-text\r\n [formGroup]=\"group\"\r\n [config]=\"config\"\r\n ></ieeesa-form-support-text>\r\n</div>\r\n", styles: [".ieeesa-subtitle{text-align:left;font-family:Calibri Regular;font-size:1.5625rem;letter-spacing:0;color:#000;opacity:1}.ieeesa-body{text-align:left;font-family:Calibri Regular;font-size:1.25rem;letter-spacing:0;color:#000;opacity:1}.ieeesa-display-lg-57{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:3.5625rem;line-height:64px;color:#000;letter-spacing:0}.ieeesa-display-md-45{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.813rem;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-md-47{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.9375rem;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-sm-38{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.375rem;line-height:44px;color:#000;letter-spacing:0}.ieeesa-headline-lg-32{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2rem;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-lg-34{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.125rem;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-md-30{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.875rem;line-height:36px;color:#000;letter-spacing:0}.ieeesa-headline-sm-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5rem;line-height:32px;color:#00629b;letter-spacing:0}.ieeesa-headline-sm-26{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.625rem;line-height:32px;color:#000;letter-spacing:0}.ieeesa-title-lg-bold-24{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.5rem;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-lg-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5rem;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-md-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.009375em}.ieeesa-title-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-title-sm-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-btn-label-lg-bold-16{font-family:Calibri Regular;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#00629b;letter-spacing:.00625em}.ieeesa-label-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-label-sm-13{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.8125rem;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-18{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:20px;color:#1c1b1f;letter-spacing:.015625em}.ieeesa-body-md-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.015625em}.ieeesa-body-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-body-sm-12{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.75rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-body-color-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:18px;color:#49454f;letter-spacing:.025em}.ieeesa-body-sm-bold-14{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-title-inter-lg-bold-24{font-family:Inter Bold;font-style:normal;font-weight:700;font-size:1.5rem;line-height:29px;color:#000;letter-spacing:0}.mat-mdc-button.mat-mdc-button-base.mat-primary-button,.mat-mdc-button.mat-mdc-button-base.mat-secondary-button,.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button,.mat-mdc-button.mat-mdc-button-base.mat-text-button{min-width:103px;width:auto;min-height:40px;height:auto;border-radius:3px;text-align:center;padding:.625em 1.5em;border:none;font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.mat-mdc-button.mat-mdc-button-base>.mat-icon{margin-right:11px}.mat-mdc-button.mat-mdc-button-base.mat-primary-button{background-color:#00629b;color:#fff}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:focus{background:#1f75a7}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:hover{background-color:#003e65}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:active{background-color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:disabled{background-color:#1c1b1f1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button{color:#fff;background:#a7a8aa;box-shadow:0 1px 2px #0000004d,0 2px 6px 2px #00000026}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:hover{background:#a7a8aa}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:focus{background:#f0f5f9}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:active{background:#1d192b1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:disabled{background:#1c1b1f1f;color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button{background-color:#fff;border:1px solid #00629b;color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:hover{background-color:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:focus{background-color:#f0f5f9}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:active{background:#6750a41f}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:disabled{border:1px solid rgba(28,27,31,.12);color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-text-button{color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-text-button:hover,.mat-mdc-button.mat-mdc-button-base.mat-text-button:active{background:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-text-button:disabled{color:#1c1b1f;opacity:.38}.ieeesa-text-button{color:#cac4d0;background:none;border:none}.ieeesa-view-more-or-less-button{border:none;background:none;text-decoration:underline;color:#00629b}.flex-align-center{display:flex;align-items:center;justify-content:center}.mat-button-toggle-checked{background-color:#a7a8aa}.mat-button-toggle-checked .mat-button-toggle-label-content:before{font-family:\"Font Awesome 5 Free\";font-weight:900;content:\"\\f00c\";padding-right:.5625em}.mat-button-toggle-group .mat-button-toggle-label-content{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#1c1b1f;letter-spacing:.00625em}.no-bg-color-btn{color:#00629b;border-radius:3px;border:1px solid #00629b;min-height:40px;height:auto}@media (max-width: 768px){.mat-button-toggle-group .mat-button-toggle-label-content{max-width:8ch;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;position:relative}}.cdk-overlay-pane .mat-mdc-tooltip .mdc-tooltip__surface{color:#525252;padding:6px 12px;font-family:Calibri Regular;font-size:1rem;border:1px solid #cac4d0;background:#fff;box-shadow:0 4px 8px #00000040;max-width:unset!important}.cdk-overlay-pane .mat-mdc-option .mdc-list-item__primary-text{font-family:Calibri Regular!important}.cdk-overlay-pane.ieeesa-modal-confirm-dialog,.cdk-overlay-pane.ieeesa-modal-dialog,.cdk-overlay-pane.ieeesa-alert-dialog{width:100%;min-width:312px}.mat-mdc-form-field{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:24px;color:#49454f;letter-spacing:.03125em}.ieeesa-cancel-modal-confirm-dialog{width:25vw!important}.ieeesa-cancel-modal-confirm-dialog .ieeesa-confirmation{padding:1.5em 1.5em 1em}.ieeesa-cancel-modal-confirm-dialog .ieeesa-confirmation .mat-mdc-dialog-content{text-align:center;padding:0 0 1em!important}.mat-mdc-button,.mat-mdc-outlined-button{--mat-mdc-button-persistent-ripple-color: unset}@media (max-width: 768px){.ieeesa-cancel-modal-confirm-dialog{width:90vw!important}}.ieeesa-wrapper-border{border:1px solid #b2b7be;border-top:none;padding:1.5em;border-radius:0 0 4px 4px}.ieeesa-multi-select-autocomplete__mat-form-field{width:100%}.ieeesa-multi-select-autocomplete__label-left{display:flex}.ieeesa-multi-select-autocomplete__label-top{display:block}.ieeesa-multi-select-autocomplete__svg-clear-all{height:24px!important;width:24px!important;color:#878b8f}.ieeesa-multi-select-autocomplete__label{color:#49454f!important;font-size:.75rem!important}.ieeesa-multi-select-autocomplete__input::placeholder{color:#63666a!important;font-size:1rem!important}.ieeesa-multi-select-autocomplete__input{position:relative;z-index:1}.ieeesa-multi-select-autocomplete .mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-text-field__input{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:24px;color:#1c1b1f;letter-spacing:.03125em}.ieeesa-multi-select-autocomplete .mdc-notched-outline__leading,.ieeesa-multi-select-autocomplete .mdc-notched-outline__trailing,.ieeesa-multi-select-autocomplete .mdc-notched-outline__notch{border:unset;border-bottom:1px solid #878b8f;background:#fff!important;border-top:1px solid #878b8f;border-right:1px solid #878b8f;border-left:1px solid #878b8f;border-radius:4px;border-color:#878b8f!important}.ieeesa-multi-select-autocomplete .mdc-notched-outline__leading{border-right:unset}.ieeesa-multi-select-autocomplete .mdc-notched-outline__trailing{border-left:unset}.ieeesa-multi-select-autocomplete .mat-focused .mdc-notched-outline__leading,.ieeesa-multi-select-autocomplete .mat-focused .mdc-notched-outline__trailing,.ieeesa-multi-select-autocomplete .mat-focused .mdc-notched-outline__notch{border:unset;border-bottom:2px solid #00629b}.ieeesa-multi-select-autocomplete .mat-mdc-form-field-subscript-wrapper{display:none}.ieeesa-multi-select-autocomplete .mat-mdc-form-field{min-height:52px;width:-webkit-fill-available;width:-moz-available}.ieeesa-multi-select-autocomplete .mat-mdc-text-field-wrapper{height:auto;min-width:210px;width:auto}.ieeesa-multi-select-autocomplete .mat-mdc-form-field-focus-overlay{background:#fff}.ieeesa-multi-select-autocomplete:has(.mdc-text-field--focused) .ieeesa-multi-select-autocomplete__label{color:#00629b!important}.ieeesa-multi-select-autocomplete:has(.mdc-text-field--focused) .mdc-notched-outline__leading,.ieeesa-multi-select-autocomplete:has(.mdc-text-field--focused) .mdc-notched-outline__trailing,.ieeesa-multi-select-autocomplete:has(.mdc-text-field--focused) .mdc-notched-outline__notch{border:unset;border-bottom:2px solid #00629b;border-color:#00629b!important}.ieeesa-multi-select-autocomplete:has(.mdc-text-field--focused) .mdc-notched-outline__trailing,.ieeesa-multi-select-autocomplete:has(.mdc-text-field--focused) .mdc-notched-outline__leading{border-top:2px solid #00629b}.ieeesa-multi-select-autocomplete:has(.mdc-text-field--focused) .mdc-notched-outline__trailing{border-right:2px solid #00629b}.ieeesa-multi-select-autocomplete:has(.mdc-text-field--focused) .mdc-notched-outline__leading{border-left:2px solid #00629b}.ieeesa-multi-select-autocomplete:has(.mdc-text-field--invalid) .ieeesa-multi-select-autocomplete__label{color:#ba0c2f!important}.ieeesa-multi-select-autocomplete:has(.mdc-text-field--invalid) .mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.ieeesa-multi-select-autocomplete:has(.mdc-text-field--invalid) .mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing,.ieeesa-multi-select-autocomplete:has(.mdc-text-field--invalid) .mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__notch{border-width:2px}.ieeesa-multi-select-autocomplete:has(.mdc-text-field--invalid) .mdc-notched-outline__leading,.ieeesa-multi-select-autocomplete:has(.mdc-text-field--invalid) .mdc-notched-outline__trailing,.ieeesa-multi-select-autocomplete:has(.mdc-text-field--invalid) .mdc-notched-outline__notch{border:unset;border-bottom:2px solid #ba0c2f;border-color:#ba0c2f!important}.ieeesa-multi-select-autocomplete:has(.mdc-text-field--invalid) .mdc-notched-outline__trailing,.ieeesa-multi-select-autocomplete:has(.mdc-text-field--invalid) .mdc-notched-outline__leading{border-top:2px solid #ba0c2f}.ieeesa-multi-select-autocomplete:has(.mdc-text-field--invalid) .mdc-notched-outline__trailing{border-right:2px solid #ba0c2f}.ieeesa-multi-select-autocomplete:has(.mdc-text-field--invalid) .mdc-notched-outline__leading{border-left:2px solid #ba0c2f}.ieeesa-multi-select-autocomplete:has(.mdc-text-field--invalid) .ieeesa-label-lg-bold-16{color:#49454f}.ieeesa-multi-select-autocomplete .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mat-mdc-form-field-infix{padding:10px 0!important;width:80%}.ieeesa-multi-select-autocomplete .mat-mdc-form-field-icon-suffix{width:20%;display:flex;justify-content:flex-end}.ieeesa-multi-select-autocomplete .mdc-evolution-chip-set{min-height:5px;position:relative;z-index:1}.ieeesa-multi-select-autocomplete .mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled){padding:10px 0 10px 10px;border-radius:.25em;border:1px solid #79747e;background-color:linear-gradient(0deg,rgba(0,98,155,.05) 0%,rgba(0,98,155,.05) 100%),#fffbfe!important;--mdc-chip-elevated-container-color: $ieeesa-chips-background;max-width:100%}.ieeesa-multi-select-autocomplete .mdc-evolution-chip__icon--primary{color:#000!important;height:18px;width:18px}.ieeesa-multi-select-autocomplete .mdc-evolution-chip__graphic.mat-mdc-chip-graphic{display:none}.ieeesa-multi-select-autocomplete .mat-mdc-chip-action-label .ieeesa-label-lg-bold-16{color:#49454f;max-width:200px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.ieeesa-multi-select-autocomplete .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary{display:flex;justify-content:flex-start}@media (max-width: 767px){.ieeesa-multi-select-autocomplete .mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled){width:100%}.ieeesa-multi-select-autocomplete .mat-mdc-chip-action-label .ieeesa-label-lg-bold-16{max-width:120px}}.ieeesa-multi-select-autocomplete-overlay-panel .mdc-list-item{color:#000;font-family:Calibri Regular;font-size:1rem}.ieeesa-multi-select-autocomplete-overlay-panel .mat-primary .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after{display:none}.ieeesa-multi-select-autocomplete-overlay-panel .mdc-checkbox .mdc-checkbox__native-control:enabled:checked~.mdc-checkbox__background{background-color:#00629b;border-color:#00629b}.ieeesa-multi-select-autocomplete-overlay-panel .mat-mdc-option.mdc-list-item--selected:not(.mdc-list-item--disabled) .mdc-list-item__primary-text{color:#00629b}\n"] }]
306
- }], ctorParameters: function () { return [{ type: i1.FormUtilityService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { multiSelectAutoCompleteOptions: [{
307
- type: Input
308
- }], multiSelectAutoCompleteSearchValue: [{
309
- type: Output
310
- }], multiSelectAutoCompleteClearSearchValue: [{
311
- type: Output
312
- }], multiSelectAutoCompleteOptionsSelected: [{
313
- type: Output
314
- }], multiSelectAutoComplete: [{
315
- type: ViewChild,
316
- args: ['multiSelectAutoComplete']
317
- }], matACTrigger: [{
318
- type: ViewChild,
319
- args: ['autocompleteTrigger']
320
- }] } });
321
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGktc2VsZWN0LWF1dG9jb21wbGV0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzZW50YXRpb24vc3JjL2xpYi9jb21wb25lbnRzL211bHRpLXNlbGVjdC1hdXRvY29tcGxldGUvbXVsdGktc2VsZWN0LWF1dG9jb21wbGV0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzZW50YXRpb24vc3JjL2xpYi9jb21wb25lbnRzL211bHRpLXNlbGVjdC1hdXRvY29tcGxldGUvbXVsdGktc2VsZWN0LWF1dG9jb21wbGV0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3JELE9BQU8sRUFHTCxTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBQ04sU0FBUyxFQUNULGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUNMLHFCQUFxQixFQUNyQixnQ0FBZ0MsR0FFakMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN4QyxPQUFPLEVBQWEsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RFLE9BQU8sS0FBSyxxQkFBcUIsTUFBTSw2QkFBNkIsQ0FBQztBQUNyRSxPQUFPLEVBQXFCLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzVFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQU14RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUM1RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwwREFBMEQsQ0FBQzs7Ozs7Ozs7Ozs7OztBQUNsRzs7Ozs7OztHQU9HO0FBK0JILE1BQU0sT0FBTyxnQ0FBZ0M7SUFRM0M7OztPQUdHO0lBQ0gsSUFDSSw4QkFBOEIsQ0FBQyxLQUEyQjtRQUM1RCxJQUFJLENBQUMsc0JBQXNCLEdBQUcsS0FBSyxDQUFDO0lBQ3RDLENBQUM7SUFDRDs7Ozs7T0FLRztJQUNILElBQUksOEJBQThCO1FBQ2hDLE9BQU8sSUFBSSxDQUFDLHNCQUFzQixDQUFDO0lBQ3JDLENBQUM7SUFrQkQsNkRBQTZEO0lBQzdEO0lBQ0UsMENBQTBDO0lBQ2xDLGtCQUFzQztJQUM5QywwQ0FBMEM7SUFDekIsaUJBQW9DLENBQUMsNkNBQTZDOztRQUYzRix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBRTdCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUE1Q3ZELHVCQUFrQixHQUFhLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRzlDLG9CQUFlLEdBQW1CLEVBQUUsQ0FBQztRQW1CM0IsdUNBQWtDLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUNoRSw0Q0FBdUMsR0FDL0MsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUNuQiwyQ0FBc0MsR0FBRyxJQUFJLFlBQVksRUFFaEUsQ0FBQztRQUdKLGFBQVEsR0FBcUIsSUFBSSxPQUFPLEVBQVcsQ0FBQztRQUNwRCw4REFBOEQ7UUFDOUQsMEJBQXFCLEdBQVEscUJBQXFCLENBQUM7UUFDbkQsa0JBQWEsR0FDWCxJQUFJLENBQUMscUJBQXFCLEVBQUUsdUJBQXVCLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQztRQUNyRSxvQkFBZSxHQUNiLElBQUksQ0FBQyxxQkFBcUIsRUFBRSx1QkFBdUIsRUFBRSxLQUFLLEVBQUUsUUFBUSxDQUFDO1FBQ3ZFLGFBQVEsR0FDTixJQUFJLENBQUMscUJBQXFCLEVBQUUsdUJBQXVCLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQztJQU9uRSxDQUFDO0lBRUo7OztPQUdHO0lBQ0gsUUFBUTtRQUNOLElBQUksQ0FBQyxNQUFNO1lBQ1QsSUFBSSxDQUFDLE1BQU07Z0JBQ1gsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGtCQUFrQixDQUN4Qyx5QkFBeUIsRUFDekIsZUFBZSxDQUFDLGFBQWEsQ0FDOUIsQ0FBQztRQUNKLElBQUksQ0FBQyxLQUFLO1lBQ1IsSUFBSSxDQUFDLEtBQUs7Z0JBQ1YsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVksQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1FBQ2xFLElBQUksQ0FBQyw4QkFBOEI7WUFDakMsSUFBSSxDQUFDLE1BQU0sRUFBRSw4QkFBOEI7Z0JBQzNDLElBQUksQ0FBQyw4QkFBOEIsQ0FBQztRQUN0QyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsS0FBSztZQUFFLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUM7SUFDcEUsQ0FBQztJQUVEOzs7T0FHRztJQUNILGVBQWU7UUFDYixJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsTUFBTTtZQUM5QixJQUFJLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLFdBQVcsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM3RCxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3pDLENBQUM7SUFFRDs7O09BR0c7SUFDSCxjQUFjO1FBQ1osU0FBUyxDQUFDLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxhQUFhLEVBQUUsT0FBTyxDQUFDO2FBQzVELElBQUksQ0FDSCxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUN4Qiw4REFBOEQ7UUFDOUQsR0FBRyxDQUFDLENBQUMsS0FBVSxFQUFFLEVBQUUsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxFQUN6QyxNQUFNO1FBQ0osOERBQThEO1FBQzlELENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FDWCxHQUFHLEVBQUUsTUFBTTtZQUNULElBQUksQ0FBQyxxQkFBcUIsRUFBRSxZQUFZLEVBQUUsZUFBZTtZQUMzRCxHQUFHLEVBQUUsTUFBTSxLQUFLLENBQUMsQ0FDcEIsRUFDRCxZQUFZLENBQUMsSUFBSSxDQUFDLHFCQUFxQixFQUFFLFlBQVksRUFBRSxZQUFZLENBQUMsQ0FDckU7YUFDQSxTQUFTLENBQUMsQ0FBQyxJQUFZLEVBQUUsRUFBRTtZQUMxQixJQUFJLElBQUksS0FBSyxFQUFFO2dCQUFFLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ3pDLElBQUksQ0FBQyx1Q0FBdUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDMUQsQ0FBQyxDQUFDLENBQUM7UUFFTCxJQUFJLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLFdBQVcsQ0FBQyxFQUFFLFlBQVk7YUFDekQsSUFBSSxDQUNILFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQ3hCLE1BQU07UUFDSiw4REFBOEQ7UUFDOUQsQ0FBQyxHQUFRLEVBQUUsRUFBRSxDQUNYLEdBQUcsRUFBRSxNQUFNO1lBQ1QsSUFBSSxDQUFDLHFCQUFxQixFQUFFLFlBQVksRUFBRSxlQUFlO1lBQzNELEdBQUcsRUFBRSxNQUFNLEtBQUssQ0FBQyxDQUNwQixFQUNELFlBQVksQ0FBQyxJQUFJLENBQUMscUJBQXFCLEVBQUUsWUFBWSxFQUFFLFlBQVksQ0FBQyxDQUNyRTthQUNBLFNBQVMsQ0FBQyxDQUFDLElBQVksRUFBRSxFQUFFO1lBQzFCLElBQUksQ0FBQyxrQ0FBa0MsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDbkQsSUFBSSxJQUFJLEtBQUssRUFBRTtnQkFBRSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUMzQyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRDs7O09BR0c7SUFDSCxnQkFBZ0I7UUFDZCxJQUFJLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLFdBQVcsQ0FBQyxFQUFFLFFBQVEsQ0FDdEQsSUFBSSxDQUFDLGVBQWUsQ0FDckIsQ0FBQztRQUNGLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRSxNQUFNLEVBQUU7WUFDaEMsSUFBSSxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxXQUFXLENBQUMsRUFBRSxTQUFTLENBQUM7Z0JBQ25ELFFBQVEsRUFBRSxLQUFLO2FBQ2hCLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxHQUFHLENBQUMsS0FBd0I7UUFDMUIsSUFBSSxJQUFJLENBQUMsc0JBQXNCLENBQUMsTUFBTTtZQUFFLE9BQU87UUFDL0MsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxXQUFXLENBQUMsQ0FBQztRQUMxRCxNQUFNLEtBQUssR0FBRyxLQUFLLEVBQUUsU0FBUyxFQUFFLFlBQVksQ0FBQztRQUM3QyxNQUFNLEtBQUssR0FBRyxDQUFDLEtBQUssRUFBRSxLQUFLLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDMUMsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUM7WUFBRSxPQUFPO1FBQy9CLE1BQU0sU0FBUyxHQUFHLE9BQU8sRUFBRSxNQUFNLEVBQUUsQ0FBQyxXQUFXLENBQUMsRUFBRSxjQUFjLENBQUM7UUFDakUsTUFBTSxTQUFTLEdBQUcsT0FBTyxFQUFFLE1BQU0sRUFBRSxDQUFDLFdBQVcsQ0FBQyxFQUFFLGNBQWMsQ0FBQztRQUNqRSxJQUNFLENBQUMsS0FBSyxDQUFDLE1BQU0sSUFBSSxTQUFTLElBQUksS0FBSyxDQUFDLE1BQU0sSUFBSSxTQUFTLENBQUM7WUFDeEQsQ0FBQyxTQUFTLEtBQUssU0FBUyxJQUFJLFNBQVMsS0FBSyxTQUFTLENBQUMsRUFDcEQ7WUFDQSxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7WUFDbkQsSUFBSSxLQUFLO2dCQUFFLEtBQUssQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1lBQzVCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7U0FDakQ7SUFDSCxDQUFDO0lBQ0Q7Ozs7T0FJRztJQUNILGVBQWUsQ0FBQyxhQUEyQjtRQUN6QyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsZUFBZSxFQUFFLFNBQVMsQ0FDM0MsQ0FBQyxNQUFvQixFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxLQUFLLGFBQWEsQ0FBQyxFQUFFLENBQ3pELENBQUM7UUFDRixJQUFJLEtBQUssSUFBSSxDQUFDLEVBQUU7WUFDZCxJQUFJLENBQUMsZUFBZSxFQUFFLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDeEM7UUFDRCxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUN0QyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLFdBQVcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNoRCxJQUFJLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLFdBQVcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUM1RCxJQUFJLENBQUMsZUFBZSxHQUFHLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsc0JBQXNCLEdBQUcsRUFBRSxDQUFDO1lBQ2pDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1NBQ3pCO1FBQ0QsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCw4REFBOEQ7SUFDOUQsUUFBUSxDQUFDLE1BQVc7UUFDbEIsTUFBTSxLQUFLLEdBQUcsTUFBTSxFQUFFLEtBQUssQ0FBQztRQUM1QixJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNsQyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzdCO2FBQU07WUFDTCxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNsQztRQUNELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDaEQscUJBQXFCLENBQUMsR0FBRyxFQUFFO1lBQ3pCLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDdEQsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsb0JBQW9CLENBQUMsZUFBK0I7UUFDbEQsTUFBTSxnQkFBZ0IsR0FBRyxlQUFlLEVBQUUsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDdkQsT0FBTztnQkFDTCxFQUFFLEVBQUUsTUFBTSxDQUFDLEVBQUU7Z0JBQ2IsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJO2FBQ2xCLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxzQ0FBc0MsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxpQkFBaUIsQ0FBQyxNQUEwQjtRQUMxQyxPQUFPLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUN6QyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsU0FBUyxDQUFDLEtBQWEsRUFBRSxNQUFvQjtRQUMzQyxPQUFPLE1BQU0sQ0FBQyxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsa0JBQWtCLENBQUMsTUFBMEI7UUFDM0MsT0FBTyxJQUFJLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDckUsQ0FBQztJQUVEOzs7T0FHRztJQUNILGVBQWU7UUFDYixJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLFdBQVcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNoRCxJQUFJLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLFdBQVcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM1RCxJQUFJLENBQUMsZUFBZSxHQUFHLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsc0JBQXNCLEdBQUcsRUFBRSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDaEQsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVEOzs7T0FHRztJQUNILFdBQVc7UUFDVCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QixJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQzlCLENBQUM7K0dBN1FVLGdDQUFnQzttR0FBaEMsZ0NBQWdDLDBaQVpoQztZQUNUO2dCQUNFLE9BQU8sRUFBRSxnQ0FBZ0M7Z0JBQ3pDLFFBQVEsRUFBRTtvQkFDUixpQkFBaUIsRUFBRSxnREFBZ0Q7aUJBQ3BFO2FBQ0Y7U0FDRixvUUN6RUgseTFHQTZGQSx1eWVEekNJLFlBQVksNlZBQ1osbUJBQW1CLG8yQkFDbkIsa0JBQWtCLGlIQUNsQix3QkFBd0Isd0lBQ3hCLGVBQWUsMEhBQ2YscUJBQXFCLG9XQUNyQixjQUFjLHV2QkFDZCxhQUFhLDhCQUNiLGVBQWUsMkxBQ2YsaUJBQWlCLGdMQUNqQixjQUFjLDQ0QkFDZCxnQkFBZ0IsZ0lBQ2hCLHNCQUFzQjs7NEZBY2IsZ0NBQWdDO2tCQTlCNUMsU0FBUzsrQkFDRSxrQ0FBa0MsY0FDaEMsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osbUJBQW1CO3dCQUNuQixrQkFBa0I7d0JBQ2xCLHdCQUF3Qjt3QkFDeEIsZUFBZTt3QkFDZixxQkFBcUI7d0JBQ3JCLGNBQWM7d0JBQ2QsYUFBYTt3QkFDYixlQUFlO3dCQUNmLGlCQUFpQjt3QkFDakIsY0FBYzt3QkFDZCxnQkFBZ0I7d0JBQ2hCLHNCQUFzQjtxQkFDdkIsYUFDVTt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsZ0NBQWdDOzRCQUN6QyxRQUFRLEVBQUU7Z0NBQ1IsaUJBQWlCLEVBQUUsZ0RBQWdEOzZCQUNwRTt5QkFDRjtxQkFDRixpQkFHYyxpQkFBaUIsQ0FBQyxJQUFJO3lJQWVqQyw4QkFBOEI7c0JBRGpDLEtBQUs7Z0JBYUksa0NBQWtDO3NCQUEzQyxNQUFNO2dCQUNHLHVDQUF1QztzQkFBaEQsTUFBTTtnQkFFRyxzQ0FBc0M7c0JBQS9DLE1BQU07Z0JBRytCLHVCQUF1QjtzQkFBNUQsU0FBUzt1QkFBQyx5QkFBeUI7Z0JBQ0YsWUFBWTtzQkFBN0MsU0FBUzt1QkFBQyxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDT01NQSwgRU5URVIgfSBmcm9tICdAYW5ndWxhci9jZGsva2V5Y29kZXMnO1xyXG5pbXBvcnQge1xyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIElucHV0LFxyXG4gIE9uRGVzdHJveSxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFZpZXdDaGlsZCxcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHtcclxuICBNYXRBdXRvY29tcGxldGVNb2R1bGUsXHJcbiAgTUFUX0FVVE9DT01QTEVURV9ERUZBVUxUX09QVElPTlMsXHJcbiAgTWF0QXV0b2NvbXBsZXRlVHJpZ2dlcixcclxufSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9hdXRvY29tcGxldGUnO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXAsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XHJcbmltcG9ydCB7IE1hdENoZWNrYm94TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hlY2tib3gnO1xyXG5pbXBvcnQgeyBNYXRPcHRpb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcclxuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xyXG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcclxuaW1wb3J0IHsgU3ViamVjdCwgZnJvbUV2ZW50IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IG1hcCwgdGFrZVVudGlsLCBmaWx0ZXIsIGRlYm91bmNlVGltZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0ICogYXMgYXV0b2NvbXBsZXRlQ29uc3RJbmZvIGZyb20gJy4uLy4uL2Fzc2V0cy9jb25zdGFudHMuanNvbic7XHJcbmltcG9ydCB7IE1hdENoaXBJbnB1dEV2ZW50LCBNYXRDaGlwc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoaXBzJztcclxuaW1wb3J0IHsgRm9ybUNvbnRyb2xUeXBlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2Zvcm0tY29udHJvbC10eXBlcy5tb2RlbCc7XHJcbmltcG9ydCB7IEZvcm1VdGlsaXR5U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2Zvcm0tdXRpbGl0eS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQXV0b0NvbXBsZXRlT3B0aW9uIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2F1dG9jb21wbGV0ZS1vcHRpb24ubW9kZWwnO1xyXG5pbXBvcnQgeyBTZWxlY3RPcHRpb24gfSBmcm9tICdAaWVlZXNhLW5wbS9tb2RlbHMnO1xyXG5pbXBvcnQgeyBGaWVsZENvbmZpZyB9IGZyb20gJy4uLy4uL21vZGVscy9maWVsZC1jb25maWcubW9kZWwnO1xyXG5pbXBvcnQgeyBGb3JtRmllbGQgfSBmcm9tICcuLi8uLi9tb2RlbHMvZm9ybS1maWVsZC5tb2RlbCc7XHJcbmltcG9ydCB7IEZvcm1FcnJvckNvbXBvbmVudCB9IGZyb20gJy4uL2Zvcm0tZXJyb3IvZm9ybS1lcnJvci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBGb3JtU3VwcG9ydFRleHRDb21wb25lbnQgfSBmcm9tICcuLi9mb3JtLXN1cHBvcnQtdGV4dC9mb3JtLXN1cHBvcnQtdGV4dC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBNYXRUb29sdGlwTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XHJcbmltcG9ydCB7IFRleHRUcnVuY2F0ZWREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL3RleHQtdHJ1bmNhdGVkL3RleHQtdHJ1bmNhdGVkLmRpcmVjdGl2ZSc7XHJcbi8qKlxyXG4gKiBNdWx0aVNlbGVjdEF1dG9jb21wbGV0ZUNvbXBvbmVudCBhbGxvd3MgdG8gc2VhcmNoIHRoZSBvcHRpb24ocykgZnJvbSB0aGUgbGlzdCBhbmQgc2VsZWN0IHRoZSBvcHRpb24ocykgZnJvbSB0aGUgYXV0b2NvbXBsZXRlIHNlYXJjaCByZXN1bHRzLlxyXG4gKiBAY2xhc3MgTXVsdGlTZWxlY3RBdXRvY29tcGxldGVDb21wb25lbnRcclxuICogQGltcGxlbWVudHMge09uSW5pdH1cclxuICogQGltcGxlbWVudHMge0Zvcm1GaWVsZH1cclxuICogQGltcGxlbWVudHMge09uRGVzdHJveX1cclxuICogQGltcGxlbWVudHMge0FmdGVyVmlld0luaXR9XHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2llZWVzYS1tdWx0aS1zZWxlY3QtYXV0b2NvbXBsZXRlJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgICBGb3JtRXJyb3JDb21wb25lbnQsXHJcbiAgICBGb3JtU3VwcG9ydFRleHRDb21wb25lbnQsXHJcbiAgICBNYXRPcHRpb25Nb2R1bGUsXHJcbiAgICBNYXRBdXRvY29tcGxldGVNb2R1bGUsXHJcbiAgICBNYXRJbnB1dE1vZHVsZSxcclxuICAgIE1hdEljb25Nb2R1bGUsXHJcbiAgICBNYXRCdXR0b25Nb2R1bGUsXHJcbiAgICBNYXRDaGVja2JveE1vZHVsZSxcclxuICAgIE1hdENoaXBzTW9kdWxlLFxyXG4gICAgTWF0VG9vbHRpcE1vZHVsZSxcclxuICAgIFRleHRUcnVuY2F0ZWREaXJlY3RpdmUsXHJcbiAgXSxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTUFUX0FVVE9DT01QTEVURV9ERUZBVUxUX09QVElPTlMsXHJcbiAgICAgIHVzZVZhbHVlOiB7XHJcbiAgICAgICAgb3ZlcmxheVBhbmVsQ2xhc3M6ICdpZWVlc2EtbXVsdGktc2VsZWN0LWF1dG9jb21wbGV0ZS1vdmVybGF5LXBhbmVsJyxcclxuICAgICAgfSxcclxuICAgIH0sXHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vbXVsdGktc2VsZWN0LWF1dG9jb21wbGV0ZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vbXVsdGktc2VsZWN0LWF1dG9jb21wbGV0ZS5jb21wb25lbnQuc2NzcyddLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNdWx0aVNlbGVjdEF1dG9jb21wbGV0ZUNvbXBvbmVudFxyXG4gIGltcGxlbWVudHMgT25Jbml0LCBGb3JtRmllbGQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdFxyXG57XHJcbiAgc2VwYXJhdG9yS2V5c0NvZGVzOiBudW1iZXJbXSA9IFtFTlRFUiwgQ09NTUFdO1xyXG4gIGNvbmZpZyE6IEZpZWxkQ29uZmlnO1xyXG4gIGdyb3VwITogRm9ybUdyb3VwO1xyXG4gIHNlbGVjdGVkT3B0aW9uczogU2VsZWN0T3B0aW9uW10gPSBbXTtcclxuICBhdXRvQ29tcGxldGVPcHRpb25MaXN0ITogQXV0b0NvbXBsZXRlT3B0aW9uW107XHJcbiAgLyoqXHJcbiAgICogU2V0cyB0aGUgb3B0aW9ucyBmb3IgbXVsdGkgc2VsZWN0IGF1dG9jb21wbGV0ZS5cclxuICAgKiBAbWVtYmVyb2YgTXVsdGlTZWxlY3RBdXRvY29tcGxldGVDb21wb25lbnRcclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHNldCBtdWx0aVNlbGVjdEF1dG9Db21wbGV0ZU9wdGlvbnModmFsdWU6IEF1dG9Db21wbGV0ZU9wdGlvbltdKSB7XHJcbiAgICB0aGlzLmF1dG9Db21wbGV0ZU9wdGlvbkxpc3QgPSB2YWx1ZTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyB0aGUgYXV0b2NvbXBsZXRlIG9wdGlvbnMgbGlzdC5cclxuICAgKiBAcmVhZG9ubHlcclxuICAgKiBAdHlwZSB7QXV0b0NvbXBsZXRlT3B0aW9uW119XHJcbiAgICogQG1lbWJlcm9mIE11bHRpU2VsZWN0QXV0b2NvbXBsZXRlQ29tcG9uZW50XHJcbiAgICovXHJcbiAgZ2V0IG11bHRpU2VsZWN0QXV0b0NvbXBsZXRlT3B0aW9ucygpOiBBdXRvQ29tcGxldGVPcHRpb25bXSB7XHJcbiAgICByZXR1cm4gdGhpcy5hdXRvQ29tcGxldGVPcHRpb25MaXN0O1xyXG4gIH1cclxuICBAT3V0cHV0KCkgbXVsdGlTZWxlY3RBdXRvQ29tcGxldGVTZWFyY2hWYWx1ZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG4gIEBPdXRwdXQoKSBtdWx0aVNlbGVjdEF1dG9Db21wbGV0ZUNsZWFyU2VhcmNoVmFsdWUgPVxyXG4gICAgbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcbiAgQE91dHB1dCgpIG11bHRpU2VsZWN0QXV0b0NvbXBsZXRlT3B0aW9uc1NlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxcclxuICAgIEF1dG9Db21wbGV0ZU9wdGlvbltdXHJcbiAgPigpO1xyXG4gIEBWaWV3Q2hpbGQoJ211bHRpU2VsZWN0QXV0b0NvbXBsZXRlJykgbXVsdGlTZWxlY3RBdXRvQ29tcGxldGUhOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ2F1dG9jb21wbGV0ZVRyaWdnZXInKSBtYXRBQ1RyaWdnZXIhOiBNYXRBdXRvY29tcGxldGVUcmlnZ2VyO1xyXG4gIGRlc3Ryb3kkOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIGF1dG9jb21wbGV0ZUNvbnN0SW5mbzogYW55ID0gYXV0b2NvbXBsZXRlQ29uc3RJbmZvO1xyXG4gIHJlbW92ZUljb25VUkwgPVxyXG4gICAgdGhpcy5hdXRvY29tcGxldGVDb25zdEluZm8/Lm11bHRpU2VsZWN0QXV0b0NvbXBsZXRlPy5pY29ucz8ucmVtb3ZlO1xyXG4gIGNsZWFyQWxsSWNvblVSTCA9XHJcbiAgICB0aGlzLmF1dG9jb21wbGV0ZUNvbnN0SW5mbz8ubXVsdGlTZWxlY3RBdXRvQ29tcGxldGU/Lmljb25zPy5jbGVhckFsbDtcclxuICBjbGVhckFsbCA9XHJcbiAgICB0aGlzLmF1dG9jb21wbGV0ZUNvbnN0SW5mbz8ubXVsdGlTZWxlY3RBdXRvQ29tcGxldGU/LmxhYmVsLmNsZWFyQWxsO1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFycywgbm8tZW1wdHktZnVuY3Rpb25cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xyXG4gICAgcHJpdmF0ZSBmb3JtVXRpbGl0eVNlcnZpY2U6IEZvcm1VdGlsaXR5U2VydmljZSxcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xyXG4gICAgcHJpdmF0ZSByZWFkb25seSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWVtcHR5LWZ1bmN0aW9uXHJcbiAgKSB7fVxyXG5cclxuICAvKipcclxuICAgKiBJbXBsZW1lbnRhdGlvbiBvZiBuZ09uSW5pdCBsaWZlY3ljbGUgaG9vayBtZXRob2QgdG8gaW5pdGlhbGl6ZSBjb21wb25lbnRzIGluc3RhbmNlIHByb3BlcnRpZXMuXHJcbiAgICogQG1lbWJlcm9mIE11bHRpU2VsZWN0QXV0b2NvbXBsZXRlQ29tcG9uZW50XHJcbiAgICovXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmNvbmZpZyA9XHJcbiAgICAgIHRoaXMuY29uZmlnID8/XHJcbiAgICAgIHRoaXMuZm9ybVV0aWxpdHlTZXJ2aWNlLmdldEZvcm1GaWVsZENvbmZpZyhcclxuICAgICAgICAnbXVsdGlTZWxlY3RBdXRvY29tcGxldGUnLFxyXG4gICAgICAgIEZvcm1Db250cm9sVHlwZS5BVVRPX0NPTVBMRVRFXHJcbiAgICAgICk7XHJcbiAgICB0aGlzLmdyb3VwID1cclxuICAgICAgdGhpcy5ncm91cCA/P1xyXG4gICAgICB0aGlzLmZvcm1VdGlsaXR5U2VydmljZS5nZXRGb3JtR3JvdXAoJ211bHRpU2VsZWN0QXV0b2NvbXBsZXRlJyk7XHJcbiAgICB0aGlzLm11bHRpU2VsZWN0QXV0b0NvbXBsZXRlT3B0aW9ucyA9XHJcbiAgICAgIHRoaXMuY29uZmlnPy5tdWx0aVNlbGVjdEF1dG9Db21wbGV0ZU9wdGlvbnMgPz9cclxuICAgICAgdGhpcy5tdWx0aVNlbGVjdEF1dG9Db21wbGV0ZU9wdGlvbnM7XHJcbiAgICBpZiAodGhpcy5jb25maWc/LnZhbHVlKSB0aGlzLnNlbGVjdGVkT3B0aW9ucyA9IHRoaXMuY29uZmlnPy52YWx1ZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEluaXRpYWxpemUgdGhlIGZvcm0gY29udHJvbCBjaGFuZ2UgZXZlbnQgb25jZSB0aGUgZm9ybSBjb250cm9sIGlzIHJlYWR5IG9uIG5nQWZ0ZXJWaWV3SW5pdCBieSBjYWxsaW5nIG9uVmFsdWVDaGFuZ2VzIG1ldGhvZC5cclxuICAgKiBAbWVtYmVyb2YgTXVsdGlTZWxlY3RBdXRvY29tcGxldGVDb21wb25lbnRcclxuICAgKi9cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZE9wdGlvbnM/Lmxlbmd0aClcclxuICAgICAgdGhpcy5ncm91cD8uZ2V0KHRoaXMuY29uZmlnPy5jb250cm9sTmFtZSk/LnNldEVycm9ycyhudWxsKTtcclxuICAgIHRoaXMub25WYWx1ZUNoYW5nZXMoKTtcclxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRW1pdHMgYW4gbXVsdGlTZWxlY3RBdXRvQ29tcGxldGVTZWFyY2hWYWx1ZSBjaGFuZ2UgZXZlbnQgd2hlbiB0aGUgdmFsdWUgaXMgY2hhbmdlZCBhbmQgdmFsdWUgaXMgZ3JlYXRlciB0aGFuIG1pbkNoYXJUb1NlYXJjaCBvciBlcXVhbCB0byB6ZXJvLlxyXG4gICAqIEBtZW1iZXJvZiBNdWx0aVNlbGVjdEF1dG9jb21wbGV0ZUNvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9uVmFsdWVDaGFuZ2VzKCk6IHZvaWQge1xyXG4gICAgZnJvbUV2ZW50KHRoaXMubXVsdGlTZWxlY3RBdXRvQ29tcGxldGU/Lm5hdGl2ZUVsZW1lbnQsICdrZXl1cCcpXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSxcclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgICAgIG1hcCgoZXZlbnQ6IGFueSkgPT4gZXZlbnQ/LnRhcmdldD8udmFsdWUpLFxyXG4gICAgICAgIGZpbHRlcihcclxuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgICAgICAgICAocmVzOiBhbnkpID0+XHJcbiAgICAgICAgICAgIHJlcz8ubGVuZ3RoIDxcclxuICAgICAgICAgICAgICB0aGlzLmF1dG9jb21wbGV0ZUNvbnN0SW5mbz8uYXV0b2NvbXBsZXRlPy5taW5DaGFyVG9TZWFyY2ggJiZcclxuICAgICAgICAgICAgcmVzPy5sZW5ndGggIT09IDBcclxuICAgICAgICApLFxyXG4gICAgICAgIGRlYm91bmNlVGltZSh0aGlzLmF1dG9jb21wbGV0ZUNvbnN0SW5mbz8uYXV0b2NvbXBsZXRlPy5kZWJvdW5jZVRpbWUpXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZSgodGV4dDogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgaWYgKHRleHQgPT09ICcnKSB0aGlzLmhhbmRsZUZpZWxkRXJyb3IoKTtcclxuICAgICAgICB0aGlzLm11bHRpU2VsZWN0QXV0b0NvbXBsZXRlQ2xlYXJTZWFyY2hWYWx1ZS5lbWl0KHRleHQpO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICB0aGlzLmdyb3VwPy5jb250cm9sc1t0aGlzLmNvbmZpZz8uY29udHJvbE5hbWVdPy52YWx1ZUNoYW5nZXNcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLFxyXG4gICAgICAgIGZpbHRlcihcclxuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgICAgICAgICAocmVzOiBhbnkpID0+XHJcbiAgICAgICAgICAgIHJlcz8ubGVuZ3RoID49XHJcbiAgICAgICAgICAgICAgdGhpcy5hdXRvY29tcGxldGVDb25zdEluZm8/LmF1dG9jb21wbGV0ZT8ubWluQ2hhclRvU2VhcmNoIHx8XHJcbiAgICAgICAgICAgIHJlcz8ubGVuZ3RoID09PSAwXHJcbiAgICAgICAgKSxcclxuICAgICAgICBkZWJvdW5jZVRpbWUodGhpcy5hdXRvY29tcGxldGVDb25zdEluZm8/LmF1dG9jb21wbGV0ZT8uZGVib3VuY2VUaW1lKVxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoKHRleHQ6IHN0cmluZykgPT4ge1xyXG4gICAgICAgIHRoaXMubXVsdGlTZWxlY3RBdXRvQ29tcGxldGVTZWFyY2hWYWx1ZS5lbWl0KHRleHQpO1xyXG4gICAgICAgIGlmICh0ZXh0ID09PSAnJykgdGhpcy5oYW5kbGVGaWVsZEVycm9yKCk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSGFuZGxlcyBmaWVsZCBlcnJvciBieSBzZXR0aW5nIHRoZSBhcHByb3ByaWF0ZSBmb3JtIGNvbnRyb2wgZXJyb3JzLlxyXG4gICAqIEBtZW1iZXJvZiBNdWx0aVNlbGVjdEF1dG9jb21wbGV0ZUNvbXBvbmVudFxyXG4gICAqL1xyXG4gIGhhbmRsZUZpZWxkRXJyb3IoKTogdm9pZCB7XHJcbiAgICB0aGlzLmdyb3VwPy5jb250cm9sc1t0aGlzLmNvbmZpZz8uY29udHJvbE5hbWVdPy5zZXRWYWx1ZShcclxuICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbnNcclxuICAgICk7XHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZE9wdGlvbnM/Lmxlbmd0aCkge1xyXG4gICAgICB0aGlzLmdyb3VwPy5nZXQodGhpcy5jb25maWc/LmNvbnRyb2xOYW1lKT8uc2V0RXJyb3JzKHtcclxuICAgICAgICByZXF1aXJlZDogZmFsc2UsXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQWRkcyBhIG5ld2x5IGVudGVyZWQgb3B0aW9uIHRvIHRoZSBzZWxlY3RlZE9wdGlvbnMgYXJyYXkuXHJcbiAgICogQHBhcmFtIHsqfSBldmVudCAtVGhlIGV2ZW50IGNvbnRhaW5pbmcgdGhlIGlucHV0IGFuZCB2YWx1ZS5cclxuICAgKiBAbWVtYmVyb2YgTXVsdGlTZWxlY3RBdXRvY29tcGxldGVDb21wb25lbnRcclxuICAgKi9cclxuICBhZGQoZXZlbnQ6IE1hdENoaXBJbnB1dEV2ZW50KTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5hdXRvQ29tcGxldGVPcHRpb25MaXN0Lmxlbmd0aCkgcmV0dXJuO1xyXG4gICAgY29uc3QgY29udHJvbCA9IHRoaXMuZ3JvdXA/LmdldCh0aGlzLmNvbmZpZz8uY29udHJvbE5hbWUpO1xyXG4gICAgY29uc3QgaW5wdXQgPSBldmVudD8uY2hpcElucHV0Py5pbnB1dEVsZW1lbnQ7XHJcbiAgICBjb25zdCB2YWx1ZSA9IChldmVudD8udmFsdWUgfHwgJycpLnRyaW0oKTtcclxuICAgIGlmICh2YWx1ZS5sZW5ndGggPT09IDApIHJldHVybjtcclxuICAgIGNvbnN0IG1pbkxlbmd0aCA9IGNvbnRyb2w/LmVycm9ycz8uWydtaW5sZW5ndGgnXT8ucmVxdWlyZWRMZW5ndGg7XHJcbiAgICBjb25zdCBtYXhMZW5ndGggPSBjb250cm9sPy5lcnJvcnM/LlsnbWF4bGVuZ3RoJ10/LnJlcXVpcmVkTGVuZ3RoO1xyXG4gICAgaWYgKFxyXG4gICAgICAodmFsdWUubGVuZ3RoID49IG1pbkxlbmd0aCAmJiB2YWx1ZS5sZW5ndGggPD0gbWF4TGVuZ3RoKSB8fFxyXG4gICAgICAobWluTGVuZ3RoID09PSB1bmRlZmluZWQgJiYgbWF4TGVuZ3RoID09PSB1bmRlZmluZWQpXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbnMucHVzaCh7IGlkOiAnJywgbmFtZTogdmFsdWUgfSk7XHJcbiAgICAgIGlmIChpbnB1dCkgaW5wdXQudmFsdWUgPSAnJztcclxuICAgICAgdGhpcy5mb3JtYXRTZWxlY3RlZE9wdGlvbih0aGlzLnNlbGVjdGVkT3B0aW9ucyk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFJlbW92ZXMgYSBzZWxlY3RlZCBvcHRpb24gZnJvbSB0aGUgc2VsZWN0ZWRPcHRpb25zIGFycmF5LlxyXG4gICAqIEBwYXJhbSB7U2VsZWN0T3B0aW9ufSByZW1vdmVkT3B0aW9uIC1UaGUgb3B0aW9uIHRvIHJlbW92ZS5cclxuICAgKiBAbWVtYmVyb2YgTXVsdGlTZWxlY3RBdXRvY29tcGxldGVDb21wb25lbnRcclxuICAgKi9cclxuICBvbk9wdGlvblJlbW92ZWQocmVtb3ZlZE9wdGlvbjogU2VsZWN0T3B0aW9uKTogdm9pZCB7XHJcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuc2VsZWN0ZWRPcHRpb25zPy5maW5kSW5kZXgoXHJcbiAgICAgIChvcHRpb246IFNlbGVjdE9wdGlvbikgPT4gb3B0aW9uLmlkID09PSByZW1vdmVkT3B0aW9uLmlkXHJcbiAgICApO1xyXG4gICAgaWYgKGluZGV4ID49IDApIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbnM/LnNwbGljZShpbmRleCwgMSk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZE9wdGlvbnM/Lmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICB0aGlzLmdyb3VwLnZhbHVlW3RoaXMuY29uZmlnPy5jb250cm9sTmFtZV0gPSAnJztcclxuICAgICAgdGhpcy5ncm91cD8uY29udHJvbHNbdGhpcy5jb25maWc/LmNvbnRyb2xOYW1lXS5zZXRWYWx1ZSgnJyk7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25zID0gW107XHJcbiAgICAgIHRoaXMuYXV0b0NvbXBsZXRlT3B0aW9uTGlzdCA9IFtdO1xyXG4gICAgICB0aGlzLmhhbmRsZUZpZWxkRXJyb3IoKTtcclxuICAgIH1cclxuICAgIHRoaXMuZm9ybWF0U2VsZWN0ZWRPcHRpb24odGhpcy5zZWxlY3RlZE9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSGFuZGxlcyB0aGUgc2VsZWN0aW9uIG9mIGFuIGF1dG9jb21wbGV0ZSBvcHRpb24uXHJcbiAgICogQHBhcmFtIHtBdXRvQ29tcGxldGVPcHRpb259IG9wdGlvbiAgLVRoZSBzZWxlY3RlZCBhdXRvY29tcGxldGUgb3B0aW9uLlxyXG4gICAqIEByZXR1cm4ge0F1dG9Db21wbGV0ZU9wdGlvbn1cclxuICAgKiBAbWVtYmVyb2YgTXVsdGlTZWxlY3RBdXRvY29tcGxldGVDb21wb25lbnRcclxuICAgKi9cclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIG9uQ2hhbmdlKG9wdGlvbjogYW55KTogQXV0b0NvbXBsZXRlT3B0aW9uIHtcclxuICAgIGNvbnN0IHZhbHVlID0gb3B0aW9uPy52YWx1ZTtcclxuICAgIGlmICh0aGlzLmlzQ2hlY2tib3hTZWxlY3RlZCh2YWx1ZSkpIHtcclxuICAgICAgdGhpcy5vbk9wdGlvblJlbW92ZWQodmFsdWUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbnMucHVzaCh2YWx1ZSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmZvcm1hdFNlbGVjdGVkT3B0aW9uKHRoaXMuc2VsZWN0ZWRPcHRpb25zKTtcclxuICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XHJcbiAgICAgIHRoaXMubXVsdGlTZWxlY3RBdXRvQ29tcGxldGU/Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRm9ybWF0cyB0aGUgc2VsZWN0ZWQgb3B0aW9ucyBhbmQgZW1pdHMgdGhlIG11bHRpU2VsZWN0QXV0b0NvbXBsZXRlT3B0aW9uU2VsZWN0ZWQgZXZlbnQuXHJcbiAgICogQHBhcmFtIHtTZWxlY3RPcHRpb25bXX0gc2VsZWN0ZWRPcHRpb25zIC1BcnJheSBvZiBzZWxlY3RlZCBvcHRpb25zLlxyXG4gICAqIEBtZW1iZXJvZiBNdWx0aVNlbGVjdEF1dG9jb21wbGV0ZUNvbXBvbmVudFxyXG4gICAqL1xyXG4gIGZvcm1hdFNlbGVjdGVkT3B0aW9uKHNlbGVjdGVkT3B0aW9uczogU2VsZWN0T3B0aW9uW10pIHtcclxuICAgIGNvbnN0IGZvcm1hdHRlZE9wdGlvbnMgPSBzZWxlY3RlZE9wdGlvbnM/Lm1hcCgob3B0aW9uKSA9PiB7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgaWQ6IG9wdGlvbi5pZCxcclxuICAgICAgICBuYW1lOiBvcHRpb24ubmFtZSxcclxuICAgICAgfTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5tdWx0aVNlbGVjdEF1dG9Db21wbGV0ZU9wdGlvbnNTZWxlY3RlZD8uZW1pdChmb3JtYXR0ZWRPcHRpb25zKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERpc3BsYXlzIHRoZSBuYW1lIG9mIHRoZSBvcHRpb25cclxuICAgKiBAcGFyYW0ge0F1dG9Db21wbGV0ZU9wdGlvbn0gb3B0aW9uXHJcbiAgICogQHJldHVybiB7Kn0gIHtzdHJpbmd9XHJcbiAgICogQG1lbWJlcm9mIE11bHRpU2VsZWN0QXV0b2NvbXBsZXRlQ29tcG9uZW50XHJcbiAgICovXHJcbiAgZGlzcGxheU9wdGlvbk5hbWUob3B0aW9uOiBBdXRvQ29tcGxldGVPcHRpb24pOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIG9wdGlvbj8ubmFtZSA/IG9wdGlvbi5uYW1lIDogJyc7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUcmFja3MgdGhlIG9wdGlvbiBieSBpdHMgaW5kZXggb3IgaWQuXHJcbiAgICogQHBhcmFtIHtudW1iZXJ9IGluZGV4XHJcbiAgICogQHBhcmFtIHtTZWxlY3RPcHRpb259IG9wdGlvblxyXG4gICAqIEByZXR1cm4geyp9ICB7KG51bWJlciB8IHN0cmluZyl9XHJcbiAgICogQG1lbWJlcm9mIE11bHRpU2VsZWN0QXV0b2NvbXBsZXRlQ29tcG9uZW50XHJcbiAgICovXHJcbiAgdHJhY2tCeUZuKGluZGV4OiBudW1iZXIsIG9wdGlvbjogU2VsZWN0T3B0aW9uKTogbnVtYmVyIHwgc3RyaW5nIHtcclxuICAgIHJldHVybiBvcHRpb24uaWQ7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDaGVja3MgaWYgdGhlIGNoZWNrYm94IGlzIHNlbGVjdGVkLlxyXG4gICAqIEBwYXJhbSB7QXV0b0NvbXBsZXRlT3B0aW9ufSBvcHRpb25cclxuICAgKiBAcmV0dXJuIHsqfSAge2Jvb2xlYW59XHJcbiAgICogQG1lbWJlcm9mIE11bHRpU2VsZWN0QXV0b2NvbXBsZXRlQ29tcG9uZW50XHJcbiAgICovXHJcbiAgaXNDaGVja2JveFNlbGVjdGVkKG9wdGlvbjogQXV0b0NvbXBsZXRlT3B0aW9uKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZE9wdGlvbnM/LnNvbWUoKGl0ZW0pID0+IGl0ZW0uaWQgPT09IG9wdGlvbi5pZCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDbGVhcnMgYWxsIHNlbGVjdGVkIG9wdGlvbnMuXHJcbiAgICogQG1lbWJlcm9mIE11bHRpU2VsZWN0QXV0b2NvbXBsZXRlQ29tcG9uZW50XHJcbiAgICovXHJcbiAgY2xlYXJTZWxlY3Rpb25zKCk6IHZvaWQge1xyXG4gICAgdGhpcy5ncm91cC52YWx1ZVt0aGlzLmNvbmZpZz8uY29udHJvbE5hbWVdID0gJyc7XHJcbiAgICB0aGlzLmdyb3VwPy5jb250cm9sc1t0aGlzLmNvbmZpZz8uY29udHJvbE5hbWVdLnNldFZhbHVlKCcnKTtcclxuICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25zID0gW107XHJcbiAgICB0aGlzLmF1dG9Db21wbGV0ZU9wdGlvbkxpc3QgPSBbXTtcclxuICAgIHRoaXMuZm9ybWF0U2VsZWN0ZWRPcHRpb24odGhpcy5zZWxlY3RlZE9wdGlvbnMpO1xyXG4gICAgdGhpcy5oYW5kbGVGaWVsZEVycm9yKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBJbXBsZW1lbnRhdGlvbiBvZiBuZ09uRGVzdHJveSBsaWZlY3ljbGUgaG9vayBtZXRob2QgdG8gdW5zdWJzY3JpYmUgdGhlIG9wZW4gb2JzZXJ2YWJsZSBzdWJzY3JpcHRpb25zLlxyXG4gICAqIEBtZW1iZXJvZiBNdWx0aVNlbGVjdEF1dG9jb21wbGV0ZUNvbXBvbmVudFxyXG4gICAqL1xyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KHRydWUpO1xyXG4gICAgdGhpcy5kZXN0cm95JC51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2XHJcbiAgY2xhc3M9XCJpZWVlc2EtbXVsdGktc2VsZWN0LWF1dG9jb21wbGV0ZVwiXHJcbiAgW2Zvcm1Hcm91cF09XCJncm91cFwiXHJcbiAgKm5nSWY9XCJncm91cFwiXHJcbiAgW25nQ2xhc3NdPVwiXHJcbiAgICBjb25maWcuaXNMYWJlbEFsaWduZWRMZWZ0XHJcbiAgICAgID8gJ2llZWVzYS1tdWx0aS1zZWxlY3QtYXV0b2NvbXBsZXRlLWZpZWxkX19sYWJlbC1sZWZ0J1xyXG4gICAgICA6ICdpZWVlc2EtbXVsdGktc2VsZWN0LWF1dG9jb21wbGV0ZS1maWVsZF9fbGFiZWwtdG9wJ1xyXG4gIFwiXHJcbj5cclxuICA8bWF0LWxhYmVsIGNsYXNzPVwiaWVlZXNhLWJvZHktc20tMTQgaWVlZXNhLW11bHRpLXNlbGVjdC1hdXRvY29tcGxldGVfX2xhYmVsXCJcclxuICAgID57eyBjb25maWcubGFiZWwgfX08L21hdC1sYWJlbFxyXG4gID5cclxuICA8bWF0LWZvcm0tZmllbGRcclxuICAgIGNsYXNzPVwiaWVlZXNhLW11bHRpLXNlbGVjdC1hdXRvY29tcGxldGVfX21hdC1mb3JtLWZpZWxkXCJcclxuICAgIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCJcclxuICA+XHJcbiAgICA8bWF0LWNoaXAtZ3JpZFxyXG4gICAgICAjY2hpcEdyaWRcclxuICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJhdXRvY29tcGxldGVDb25zdEluZm8/Lm11bHRpU2VsZWN0QXV0b0NvbXBsZXRlPy5hcmlhTGFiZWw/LnNlbGVjdGVkT3B0aW9uc1wiXHJcbiAgICA+XHJcbiAgICAgIDxtYXQtY2hpcC1yb3dcclxuICAgICAgICAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIHNlbGVjdGVkT3B0aW9uczsgdHJhY2tCeTogdHJhY2tCeUZuXCJcclxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIm9wdGlvbj8ubmFtZVwiXHJcbiAgICAgICAgW3JlbW92YWJsZV09XCJ0cnVlXCJcclxuICAgICAgICAocmVtb3ZlZCk9XCJvbk9wdGlvblJlbW92ZWQob3B0aW9uKVwiXHJcbiAgICAgID5cclxuICAgICAgICA8cFxyXG4gICAgICAgICAgaWVlZXNhVGV4dFRydW5jYXRlZFxyXG4gICAgICAgICAgW21hdFRvb2x0aXBdPVwib3B0aW9uLm5hbWVcIlxyXG4gICAgICAgICAgY2xhc3M9XCJpZWVlc2EtbGFiZWwtbGctYm9sZC0xNiBtLTBcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIHt7IG9wdGlvbi5uYW1lIH19XHJcbiAgICAgICAgPC9wPlxyXG4gICAgICAgIDxidXR0b25cclxuICAgICAgICAgIG1hdENoaXBSZW1vdmVcclxuICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYXV0b2NvbXBsZXRlQ29uc3RJbmZvPy5tdWx0aVNlbGVjdEF1dG9Db21wbGV0ZT8uYXJpYUxhYmVsPy5yZW1vdmVPcHRpb24gKyBvcHRpb24ubmFtZVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPHN2ZyBjbGFzcz1cImllZWVzYS1jaGlwX19zdmctYXZhdGFyXCIgbWF0Q2hpcEF2YXRhcj5cclxuICAgICAgICAgICAgPHVzZSBbYXR0ci54bGluazpocmVmXT1cInJlbW92ZUljb25VUkxcIj48L3VzZT5cclxuICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L21hdC1jaGlwLXJvdz5cclxuICAgIDwvbWF0LWNoaXAtZ3JpZD5cclxuICAgIDxpbnB1dFxyXG4gICAgICBtYXRJbnB1dFxyXG4gICAgICBjbGFzcz1cImllZWVzYS1tdWx0aS1zZWxlY3QtYXV0b2NvbXBsZXRlX19pbnB1dCBpZWVlc2EtdGl0bGUtc20tMTZcIlxyXG4gICAgICBbbWF0QXV0b2NvbXBsZXRlXT1cIm1hdEF1dG9jb21wbGV0ZVwiXHJcbiAgICAgIFtwbGFjZWhvbGRlcl09XCJjb25maWcucGxhY2Vob2xkZXIgPz8gJydcIlxyXG4gICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cImNvbmZpZy5jb250cm9sTmFtZVwiXHJcbiAgICAgIFtuYW1lXT1cImNvbmZpZy5jb250cm9sTmFtZVwiXHJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiY29uZmlnLmFyaWFMYWJlbFwiXHJcbiAgICAgIFthcmlhLWRlc2NyaWJlZGJ5XT1cImNvbmZpZy5hcmlhRGVzY3JpYmVkQnlJZCA/PyAnJ1wiXHJcbiAgICAgICNtdWx0aVNlbGVjdEF1dG9Db21wbGV0ZVxyXG4gICAgICBbbWF0Q2hpcElucHV0U2VwYXJhdG9yS2V5Q29kZXNdPVwic2VwYXJhdG9yS2V5c0NvZGVzXCJcclxuICAgICAgKG1hdENoaXBJbnB1dFRva2VuRW5kKT1cImFkZCgkZXZlbnQpXCJcclxuICAgICAgW21hdENoaXBJbnB1dEZvcl09XCJjaGlwR3JpZFwiXHJcbiAgICAvPlxyXG4gICAgPG1hdC1hdXRvY29tcGxldGVcclxuICAgICAgI21hdEF1dG9jb21wbGV0ZT1cIm1hdEF1dG9jb21wbGV0ZVwiXHJcbiAgICAgIChvcHRpb25TZWxlY3RlZCk9XCJvbkNoYW5nZSgkZXZlbnQub3B0aW9uKVwiXHJcbiAgICAgIFtkaXNwbGF5V2l0aF09XCJkaXNwbGF5T3B0aW9uTmFtZVwiXHJcbiAgICAgIGNsYXNzPVwiaWVlZXNhLW11bHRpLXNlbGVjdC1hdXRvY29tcGxldGVfX2F1dG9jb21wbGV0ZS1saXN0XCJcclxuICAgID5cclxuICAgICAgPG1hdC1vcHRpb25cclxuICAgICAgICAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIGF1dG9Db21wbGV0ZU9wdGlvbkxpc3Q7IHRyYWNrQnk6IHRyYWNrQnlGblwiXHJcbiAgICAgICAgW3ZhbHVlXT1cIm9wdGlvblwiXHJcbiAgICAgID5cclxuICAgICAgICA8bWF0LWNoZWNrYm94IGNvbG9yPVwicHJpbWFyeVwiIFtjaGVja2VkXT1cImlzQ2hlY2tib3hTZWxlY3RlZChvcHRpb24pXCI+XHJcbiAgICAgICAgPC9tYXQtY2hlY2tib3g+XHJcbiAgICAgICAge3sgb3B0aW9uLm5hbWUgfX1cclxuICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgPC9tYXQtYXV0b2NvbXBsZXRlPlxyXG4gICAgPGJ1dHRvblxyXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgbWF0U3VmZml4XHJcbiAgICAgIG1hdC1pY29uLWJ1dHRvblxyXG4gICAgICBbbWF0VG9vbHRpcF09XCJjbGVhckFsbFwiXHJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYXV0b2NvbXBsZXRlQ29uc3RJbmZvLmFyaWFMYWJlbC5jbGVhclwiXHJcbiAgICAgICpuZ0lmPVwic2VsZWN0ZWRPcHRpb25zLmxlbmd0aCA+IDBcIlxyXG4gICAgICAoY2xpY2spPVwiY2xlYXJTZWxlY3Rpb25zKClcIlxyXG4gICAgPlxyXG4gICAgICA8c3ZnIGNsYXNzPVwiaWVlZXNhLW11bHRpLXNlbGVjdC1hdXRvY29tcGxldGVfX3N2Zy1jbGVhci1hbGxcIj5cclxuICAgICAgICA8dXNlIFthdHRyLnhsaW5rOmhyZWZdPVwiY2xlYXJBbGxJY29uVVJMXCI+PC91c2U+XHJcbiAgICAgIDwvc3ZnPlxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9tYXQtZm9ybS1maWVsZD5cclxuICA8aWVlZXNhLWZvcm0tZXJyb3IgW2Zvcm1Hcm91cF09XCJncm91cFwiIFtjb25maWddPVwiY29uZmlnXCI+IDwvaWVlZXNhLWZvcm0tZXJyb3I+XHJcbiAgPGllZWVzYS1mb3JtLXN1cHBvcnQtdGV4dFxyXG4gICAgW2Zvcm1Hcm91cF09XCJncm91cFwiXHJcbiAgICBbY29uZmlnXT1cImNvbmZpZ1wiXHJcbiAgPjwvaWVlZXNhLWZvcm0tc3VwcG9ydC10ZXh0PlxyXG48L2Rpdj5cclxuIl19