@seniorsistemas/angular-components 19.9.3 → 19.9.5

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 (136) hide show
  1. package/autocomplete/README.md +4 -0
  2. package/autocomplete/lib/autocomplete/autocomplete.component.d.ts +7 -1
  3. package/autocomplete/lib/autocomplete/components/autocomplete-chip/autocomplete-chip.component.d.ts +3 -1
  4. package/checkbox/lib/checkbox/checkbox.component.d.ts +1 -6
  5. package/checkbox-list/lib/checkbox-list/checkbox-list.component.d.ts +8 -0
  6. package/content-generator/lib/content-generator/content-generator.component.d.ts +2 -2
  7. package/country-phone-picker/lib/country-phone-picker/country-phone-picker.component.d.ts +2 -0
  8. package/drawer/README.md +9 -2
  9. package/drawer/lib/drawer/drawer.component.d.ts +12 -1
  10. package/editor/lib/editor/editor.component.d.ts +1 -1
  11. package/esm2022/autocomplete/lib/autocomplete/autocomplete.component.mjs +10 -4
  12. package/esm2022/autocomplete/lib/autocomplete/components/autocomplete-chip/autocomplete-chip.component.mjs +5 -3
  13. package/esm2022/button/lib/button/button.component.mjs +3 -3
  14. package/esm2022/checkbox/lib/checkbox/checkbox.component.mjs +3 -9
  15. package/esm2022/checkbox-list/lib/checkbox-list/checkbox-list.component.mjs +17 -5
  16. package/esm2022/content-generator/lib/content-generator/content-generator.component.mjs +9 -8
  17. package/esm2022/country-phone-picker/lib/country-phone-picker/country-phone-picker.component.mjs +18 -3
  18. package/esm2022/drawer/lib/drawer/drawer.component.mjs +33 -11
  19. package/esm2022/drawer/lib/drawer/drawer.module.mjs +2 -2
  20. package/esm2022/dynamic-form/dynamic-form/components/lookup/lookup.component.mjs +3 -3
  21. package/esm2022/dynamic-form/dynamic-form/form-field/fields/bignumber/bignumber-field.component.mjs +3 -3
  22. package/esm2022/dynamic-form/dynamic-form/form-field/fields/boolean/boolean-switch-field/boolean-switch-field.component.mjs +3 -3
  23. package/esm2022/dynamic-form/dynamic-form/form-field/fields/checkbox/checkbox-field.component.mjs +4 -3
  24. package/esm2022/dynamic-form/dynamic-form/form-field/fields/currency/currency-field.component.mjs +3 -3
  25. package/esm2022/dynamic-form/dynamic-form/form-field/fields/number/number-field.component.mjs +3 -3
  26. package/esm2022/dynamic-form/dynamic-form/form-field/fields/password/password-field.component.mjs +3 -3
  27. package/esm2022/dynamic-form/dynamic-form/form-field/fields/select/select-field.component.mjs +2 -2
  28. package/esm2022/dynamic-form/dynamic-form/form-field/fields/text/text-field.component.mjs +3 -3
  29. package/esm2022/editor/lib/editor/editor.component.mjs +8 -8
  30. package/esm2022/file-picker/lib/file-picker/file-picker.component.mjs +4 -4
  31. package/esm2022/global-search/lib/global-search/components/dropdown/global-search-dropdown-item.component.mjs +4 -4
  32. package/esm2022/global-search/lib/global-search/global-search.module.mjs +2 -2
  33. package/esm2022/inline-edit/lib/inline-edit/components/fields/inline-edit-number/inline-edit-number.component.mjs +3 -3
  34. package/esm2022/inline-edit/lib/inline-edit/components/fields/inline-edit-text/inline-edit-text.component.mjs +2 -3
  35. package/esm2022/insights/lib/insights/components/insights-card/insights-card.component.mjs +21 -3
  36. package/esm2022/insights/lib/insights/components/insights-sidebar/insights-sidebar.component.mjs +14 -3
  37. package/esm2022/insights/lib/insights/insights.component.mjs +15 -4
  38. package/esm2022/paginator/lib/models/paginator.models.mjs +1 -1
  39. package/esm2022/paginator/lib/paginator/paginator.component.mjs +19 -13
  40. package/esm2022/profile-picture-picker/lib/profile-picture-picker/profile-picture-picker.component.mjs +19 -8
  41. package/esm2022/profile-picture-picker/lib/profile-picture-picker/profile-picture-picker.module.mjs +3 -4
  42. package/esm2022/rating-scale/lib/rating-scale/models/rating-scale-node.mjs +1 -1
  43. package/esm2022/rating-scale/lib/rating-scale/rating-scale.component.mjs +23 -3
  44. package/esm2022/select/lib/select/components/select-option/select-option.component.mjs +5 -3
  45. package/esm2022/select/lib/select/select.component.mjs +6 -4
  46. package/esm2022/side-sheet/lib/side-sheet/side-sheet.component.mjs +6 -5
  47. package/esm2022/slider/lib/slider/slider.component.mjs +3 -3
  48. package/esm2022/speech-recognition/lib/speech-recognition/speech-recognition/speech-recognition.component.mjs +58 -8
  49. package/esm2022/split-button/lib/split-button/split-button.component.mjs +11 -3
  50. package/esm2022/star-rating/star-rating/star-rating.component.mjs +3 -3
  51. package/esm2022/table/lib/table/table-column/table-columns.component.mjs +1 -1
  52. package/esm2022/table-header/lib/table-header/table-header-checkbox.component.mjs +14 -21
  53. package/esm2022/text-area/lib/text-area/text-area.component.mjs +3 -3
  54. package/esm2022/token-list/lib/token-list/token-list.component.mjs +7 -3
  55. package/esm2022/tooltip/lib/tooltip/tooltip.directive.mjs +3 -2
  56. package/esm2022/utils/lib/utils/utils.mjs +49 -3
  57. package/fesm2022/seniorsistemas-angular-components-autocomplete.mjs +13 -5
  58. package/fesm2022/seniorsistemas-angular-components-autocomplete.mjs.map +1 -1
  59. package/fesm2022/seniorsistemas-angular-components-button.mjs +2 -2
  60. package/fesm2022/seniorsistemas-angular-components-button.mjs.map +1 -1
  61. package/fesm2022/seniorsistemas-angular-components-checkbox-list.mjs +16 -4
  62. package/fesm2022/seniorsistemas-angular-components-checkbox-list.mjs.map +1 -1
  63. package/fesm2022/seniorsistemas-angular-components-checkbox.mjs +2 -8
  64. package/fesm2022/seniorsistemas-angular-components-checkbox.mjs.map +1 -1
  65. package/fesm2022/seniorsistemas-angular-components-content-generator.mjs +8 -6
  66. package/fesm2022/seniorsistemas-angular-components-content-generator.mjs.map +1 -1
  67. package/fesm2022/seniorsistemas-angular-components-country-phone-picker.mjs +17 -2
  68. package/fesm2022/seniorsistemas-angular-components-country-phone-picker.mjs.map +1 -1
  69. package/fesm2022/seniorsistemas-angular-components-drawer.mjs +32 -9
  70. package/fesm2022/seniorsistemas-angular-components-drawer.mjs.map +1 -1
  71. package/fesm2022/seniorsistemas-angular-components-dynamic-form.mjs +17 -17
  72. package/fesm2022/seniorsistemas-angular-components-dynamic-form.mjs.map +1 -1
  73. package/fesm2022/seniorsistemas-angular-components-editor.mjs +7 -7
  74. package/fesm2022/seniorsistemas-angular-components-editor.mjs.map +1 -1
  75. package/fesm2022/seniorsistemas-angular-components-file-picker.mjs +3 -3
  76. package/fesm2022/seniorsistemas-angular-components-file-picker.mjs.map +1 -1
  77. package/fesm2022/seniorsistemas-angular-components-global-search.mjs +3 -3
  78. package/fesm2022/seniorsistemas-angular-components-global-search.mjs.map +1 -1
  79. package/fesm2022/seniorsistemas-angular-components-inline-edit.mjs +3 -4
  80. package/fesm2022/seniorsistemas-angular-components-inline-edit.mjs.map +1 -1
  81. package/fesm2022/seniorsistemas-angular-components-insights.mjs +47 -7
  82. package/fesm2022/seniorsistemas-angular-components-insights.mjs.map +1 -1
  83. package/fesm2022/seniorsistemas-angular-components-paginator.mjs +18 -12
  84. package/fesm2022/seniorsistemas-angular-components-paginator.mjs.map +1 -1
  85. package/fesm2022/seniorsistemas-angular-components-profile-picture-picker.mjs +20 -9
  86. package/fesm2022/seniorsistemas-angular-components-profile-picture-picker.mjs.map +1 -1
  87. package/fesm2022/seniorsistemas-angular-components-rating-scale.mjs +22 -2
  88. package/fesm2022/seniorsistemas-angular-components-rating-scale.mjs.map +1 -1
  89. package/fesm2022/seniorsistemas-angular-components-select.mjs +9 -5
  90. package/fesm2022/seniorsistemas-angular-components-select.mjs.map +1 -1
  91. package/fesm2022/seniorsistemas-angular-components-side-sheet.mjs +5 -4
  92. package/fesm2022/seniorsistemas-angular-components-side-sheet.mjs.map +1 -1
  93. package/fesm2022/seniorsistemas-angular-components-slider.mjs +2 -2
  94. package/fesm2022/seniorsistemas-angular-components-slider.mjs.map +1 -1
  95. package/fesm2022/seniorsistemas-angular-components-speech-recognition.mjs +57 -7
  96. package/fesm2022/seniorsistemas-angular-components-speech-recognition.mjs.map +1 -1
  97. package/fesm2022/seniorsistemas-angular-components-split-button.mjs +10 -2
  98. package/fesm2022/seniorsistemas-angular-components-split-button.mjs.map +1 -1
  99. package/fesm2022/seniorsistemas-angular-components-star-rating.mjs +2 -2
  100. package/fesm2022/seniorsistemas-angular-components-star-rating.mjs.map +1 -1
  101. package/fesm2022/seniorsistemas-angular-components-table-header.mjs +13 -20
  102. package/fesm2022/seniorsistemas-angular-components-table-header.mjs.map +1 -1
  103. package/fesm2022/seniorsistemas-angular-components-table.mjs +1 -1
  104. package/fesm2022/seniorsistemas-angular-components-table.mjs.map +1 -1
  105. package/fesm2022/seniorsistemas-angular-components-text-area.mjs +2 -2
  106. package/fesm2022/seniorsistemas-angular-components-text-area.mjs.map +1 -1
  107. package/fesm2022/seniorsistemas-angular-components-token-list.mjs +6 -2
  108. package/fesm2022/seniorsistemas-angular-components-token-list.mjs.map +1 -1
  109. package/fesm2022/seniorsistemas-angular-components-tooltip.mjs +2 -1
  110. package/fesm2022/seniorsistemas-angular-components-tooltip.mjs.map +1 -1
  111. package/fesm2022/seniorsistemas-angular-components-utils.mjs +49 -3
  112. package/fesm2022/seniorsistemas-angular-components-utils.mjs.map +1 -1
  113. package/global-search/lib/global-search/global-search.module.d.ts +1 -1
  114. package/insights/README.md +12 -0
  115. package/insights/lib/insights/components/insights-card/insights-card.component.d.ts +22 -1
  116. package/insights/lib/insights/components/insights-sidebar/insights-sidebar.component.d.ts +9 -1
  117. package/insights/lib/insights/insights.component.d.ts +9 -1
  118. package/package.json +1 -3
  119. package/paginator/lib/models/paginator.models.d.ts +1 -0
  120. package/paginator/lib/paginator/paginator.component.d.ts +3 -1
  121. package/profile-picture-picker/lib/profile-picture-picker/profile-picture-picker.component.d.ts +3 -1
  122. package/rating-scale/README.md +38 -13
  123. package/rating-scale/lib/rating-scale/models/rating-scale-node.d.ts +8 -0
  124. package/rating-scale/lib/rating-scale/rating-scale.component.d.ts +4 -1
  125. package/select/README.md +2 -0
  126. package/select/lib/select/components/select-option/select-option.component.d.ts +3 -1
  127. package/select/lib/select/select.component.d.ts +3 -1
  128. package/side-sheet/README.md +4 -4
  129. package/side-sheet/lib/side-sheet/side-sheet.component.d.ts +1 -0
  130. package/speech-recognition/README.md +1 -0
  131. package/speech-recognition/lib/speech-recognition/speech-recognition/speech-recognition.component.d.ts +4 -1
  132. package/split-button/README.md +2 -0
  133. package/split-button/lib/split-button/split-button.component.d.ts +5 -1
  134. package/table-header/lib/table-header/table-header-checkbox.component.d.ts +1 -4
  135. package/token-list/lib/token-list/token-list.component.d.ts +3 -1
  136. package/utils/lib/utils/utils.d.ts +21 -0
@@ -1,11 +1,9 @@
1
1
  import { Component, Input, inject } from '@angular/core';
2
- import { CheckboxListComponent, } from '@seniorsistemas/angular-components/checkbox-list';
2
+ import { CheckboxComponent } from '@seniorsistemas/angular-components/checkbox';
3
3
  import { Table, TableService } from 'primeng/table';
4
4
  import { Subject } from 'rxjs';
5
5
  import { takeUntil } from 'rxjs/operators';
6
- import { FormsModule } from '@angular/forms';
7
6
  import * as i0 from "@angular/core";
8
- import * as i1 from "@angular/forms";
9
7
  /**
10
8
  * @description Componente de checkbox de cabeçalho para tabelas PrimeNG.
11
9
  * Integra-se automaticamente ao `TableService` para sincronizar o estado
@@ -32,12 +30,8 @@ export class TableHeaderCheckboxComponent {
32
30
  rowProps;
33
31
  /** @description Quando `true`, usa o objeto completo da linha em vez de propriedades específicas. */
34
32
  useAllObject;
35
- checkboxItems = {
36
- label: '',
37
- };
38
33
  checked = false;
39
34
  hasFocus = false;
40
- checkboxState = { checked: false };
41
35
  _ngUnsubscribe = new Subject();
42
36
  constructor() {
43
37
  this.table.tableService.valueSource$.pipe(takeUntil(this._ngUnsubscribe)).subscribe(() => {
@@ -62,10 +56,11 @@ export class TableHeaderCheckboxComponent {
62
56
  isDisabled() {
63
57
  return this.disabled || !this.table.value || !this.table.value.length;
64
58
  }
65
- onClick() {
59
+ onClick(checked) {
66
60
  if (!this.disabled) {
67
- if (this.table.value && this.table.value.length > 0)
68
- this.onToggleCheckbox(!this.checked);
61
+ if (this.table.value && this.table.value.length > 0) {
62
+ this.onToggleCheckbox(checked);
63
+ }
69
64
  }
70
65
  }
71
66
  updateCheckedState() {
@@ -145,26 +140,24 @@ export class TableHeaderCheckboxComponent {
145
140
  }
146
141
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TableHeaderCheckboxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
147
142
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: TableHeaderCheckboxComponent, isStandalone: true, selector: "s-table-header-checkbox", inputs: { id: "id", disabled: "disabled", rowProps: "rowProps", useAllObject: "useAllObject" }, ngImport: i0, template: `
148
- <s-checkbox-list
149
- [(ngModel)]="checkboxState"
150
- (ngModelChange)="onClick()"
151
- [data]="checkboxItems"
143
+ <s-checkbox
144
+ [checked]="checked"
145
+ (checkedChange)="onClick($event)"
152
146
  />
153
- `, isInline: true, dependencies: [{ kind: "component", type: CheckboxListComponent, selector: "s-checkbox-list", inputs: ["data"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
147
+ `, isInline: true, dependencies: [{ kind: "component", type: CheckboxComponent, selector: "s-checkbox", inputs: ["disabled", "checked", "indeterminate", "label", "ariaLabel", "ariaLabelledBy"], outputs: ["disabledChange", "checkedChange"] }] });
154
148
  }
155
149
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TableHeaderCheckboxComponent, decorators: [{
156
150
  type: Component,
157
151
  args: [{
158
152
  selector: 's-table-header-checkbox',
159
153
  template: `
160
- <s-checkbox-list
161
- [(ngModel)]="checkboxState"
162
- (ngModelChange)="onClick()"
163
- [data]="checkboxItems"
154
+ <s-checkbox
155
+ [checked]="checked"
156
+ (checkedChange)="onClick($event)"
164
157
  />
165
158
  `,
166
159
  standalone: true,
167
- imports: [CheckboxListComponent, FormsModule],
160
+ imports: [CheckboxComponent],
168
161
  }]
169
162
  }], ctorParameters: () => [], propDecorators: { id: [{
170
163
  type: Input
@@ -175,4 +168,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
175
168
  }], useAllObject: [{
176
169
  type: Input
177
170
  }] } });
178
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtaGVhZGVyLWNoZWNrYm94LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy90YWJsZS1oZWFkZXIvc3JjL2xpYi90YWJsZS1oZWFkZXIvdGFibGUtaGVhZGVyLWNoZWNrYm94LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTVFLE9BQU8sRUFHSCxxQkFBcUIsR0FDeEIsTUFBTSxrREFBa0QsQ0FBQztBQUMxRCxPQUFPLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQUU3Qzs7Ozs7Ozs7Ozs7OztHQWFHO0FBYUgsTUFBTSxPQUFPLDRCQUE0QjtJQUM1QixLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3RCLFlBQVksR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7SUFFdEMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFFekIsc0dBQXNHO0lBRS9GLEVBQUUsR0FBRywyQkFBMkIsNEJBQTRCLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQztJQUUvRSxzRUFBc0U7SUFFL0QsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUV4Qix1RkFBdUY7SUFFaEYsUUFBUSxDQUFZO0lBRTNCLHFHQUFxRztJQUU5RixZQUFZLENBQVc7SUFFdkIsYUFBYSxHQUFxQjtRQUNyQyxLQUFLLEVBQUUsRUFBRTtLQUNaLENBQUM7SUFFSyxPQUFPLEdBQUcs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LEVBQUUsQ0FBQztnQkFDckMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7b0JBQ2xDLE9BQU8sS0FBSyxDQUFDO2dCQUNqQixDQUFDO1lBQ0wsQ0FBQztZQUNELE9BQU8sSUFBSSxDQUFDO1FBQ2hCLENBQUM7SUFDTCxDQUFDO3dHQXJKUSw0QkFBNEI7NEZBQTVCLDRCQUE0QixtTEFWM0I7Ozs7OztLQU1ULDREQUVTLHFCQUFxQiw2RUFBRSxXQUFXOzs0RkFFbkMsNEJBQTRCO2tCQVp4QyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSx5QkFBeUI7b0JBQ25DLFFBQVEsRUFBRTs7Ozs7O0tBTVQ7b0JBQ0QsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLE9BQU8sRUFBRSxDQUFDLHFCQUFxQixFQUFFLFdBQVcsQ0FBQztpQkFDaEQ7d0RBU1UsRUFBRTtzQkFEUixLQUFLO2dCQUtDLFFBQVE7c0JBRGQsS0FBSztnQkFLQyxRQUFRO3NCQURkLEtBQUs7Z0JBS0MsWUFBWTtzQkFEbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7XHJcbiAgICBDaGVja2JveExpc3REYXRhLFxyXG4gICAgQ2hlY2tib3hMaXN0U3RhdGUsXHJcbiAgICBDaGVja2JveExpc3RDb21wb25lbnQsXHJcbn0gZnJvbSAnQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cy9jaGVja2JveC1saXN0JztcclxuaW1wb3J0IHsgVGFibGUsIFRhYmxlU2VydmljZSB9IGZyb20gJ3ByaW1lbmcvdGFibGUnO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG4vKipcclxuICogQGRlc2NyaXB0aW9uIENvbXBvbmVudGUgZGUgY2hlY2tib3ggZGUgY2FiZcOnYWxobyBwYXJhIHRhYmVsYXMgUHJpbWVORy5cclxuICogSW50ZWdyYS1zZSBhdXRvbWF0aWNhbWVudGUgYW8gYFRhYmxlU2VydmljZWAgcGFyYSBzaW5jcm9uaXphciBvIGVzdGFkb1xyXG4gKiBkZSBzZWxlw6fDo28gdG90YWwvcGFyY2lhbCBjb20gYXMgbGluaGFzIGRhIHRhYmVsYS5cclxuICpcclxuICogQGV4YW1wbGVcclxuICogYGBgaHRtbFxyXG4gKiA8dGg+XHJcbiAqICAgPHMtdGFibGUtaGVhZGVyLWNoZWNrYm94IFtyb3dQcm9wc109XCJbJ2lkJywgJ25hbWUnXVwiIC8+XHJcbiAqIDwvdGg+XHJcbiAqIGBgYFxyXG4gKlxyXG4gKiBAY2F0ZWdvcnkgRGF0YVxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ3MtdGFibGUtaGVhZGVyLWNoZWNrYm94JyxcclxuICAgIHRlbXBsYXRlOiBgXHJcbiAgICAgICAgPHMtY2hlY2tib3gtbGlzdFxyXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNoZWNrYm94U3RhdGVcIlxyXG4gICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvbkNsaWNrKClcIlxyXG4gICAgICAgICAgICBbZGF0YV09XCJjaGVja2JveEl0ZW1zXCJcclxuICAgICAgICAvPlxyXG4gICAgYCxcclxuICAgIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgICBpbXBvcnRzOiBbQ2hlY2tib3hMaXN0Q29tcG9uZW50LCBGb3Jtc01vZHVsZV0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUYWJsZUhlYWRlckNoZWNrYm94Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gICAgcmVhZG9ubHkgdGFibGUgPSBpbmplY3QoVGFibGUpO1xyXG4gICAgcmVhZG9ubHkgdGFibGVTZXJ2aWNlID0gaW5qZWN0KFRhYmxlU2VydmljZSk7XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyBuZXh0SWQgPSAwO1xyXG5cclxuICAgIC8qKiBAZGVzY3JpcHRpb24gSWRlbnRpZmljYWRvciDDum5pY28gZG8gY29tcG9uZW50ZSBubyBET00uIEdlcmFkbyBhdXRvbWF0aWNhbWVudGUgc2UgbsOjbyBpbmZvcm1hZG8uICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGlkID0gYHMtdGFibGUtaGVhZGVyLWNoZWNrYm94LSR7VGFibGVIZWFkZXJDaGVja2JveENvbXBvbmVudC5uZXh0SWQrK31gO1xyXG5cclxuICAgIC8qKiBAZGVzY3JpcHRpb24gRGVzYWJpbGl0YSBvIGNoZWNrYm94IGRlIGNhYmXDp2FsaG8uIEBkZWZhdWx0IGZhbHNlICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGRpc2FibGVkID0gZmFsc2U7XHJcblxyXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBMaXN0YSBkZSBwcm9wcmllZGFkZXMgZG9zIGl0ZW5zIGRhIGxpbmhhIHVzYWRhcyBwYXJhIGlkZW50aWZpY2HDp8Ojby4gKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgcm93UHJvcHM/OiBzdHJpbmdbXTtcclxuXHJcbiAgICAvKiogQGRlc2NyaXB0aW9uIFF1YW5kbyBgdHJ1ZWAsIHVzYSBvIG9iamV0byBjb21wbGV0byBkYSBsaW5oYSBlbSB2ZXogZGUgcHJvcHJpZWRhZGVzIGVzcGVjw61maWNhcy4gKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgdXNlQWxsT2JqZWN0PzogYm9vbGVhbjtcclxuXHJcbiAgICBwdWJsaWMgY2hlY2tib3hJdGVtczogQ2hlY2tib3hMaXN0RGF0YSA9IHtcclxuICAgICAgICBsYWJlbDogJycsXHJcbiAgICB9O1xyXG5cclxuICAgIHB1YmxpYyBjaGVja2VkID0gZmFsc2U7XHJcbiAgICBwdWJsaWMgaGFzRm9jdXMgPSBmYWxzZTtcclxuICAgIHB1YmxpYyBjaGVja2JveFN0YXRlOiBDaGVja2JveExpc3RTdGF0ZSA9IHsgY2hlY2tlZDogZmFsc2UgfTtcclxuXHJcbiAgICBwcml2YXRlIF9uZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcigpIHtcclxuICAgICAgICB0aGlzLnRhYmxlLnRhYmxlU2VydmljZS52YWx1ZVNvdXJjZSQucGlwZSh0YWtlVW50aWwodGhpcy5fbmdVbnN1YnNjcmliZSkpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuY2hlY2tlZCA9IHRoaXMudXBkYXRlQ2hlY2tlZFN0YXRlKCk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMudGFibGUudGFibGVTZXJ2aWNlLnNlbGVjdGlvblNvdXJjZSQucGlwZSh0YWtlVW50aWwodGhpcy5fbmdVbnN1YnNjcmliZSkpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuY2hlY2tlZCA9IHRoaXMudXBkYXRlQ2hlY2tlZFN0YXRlKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuY2hlY2tlZCA9IHRoaXMudXBkYXRlQ2hlY2tlZFN0YXRlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX25nVW5zdWJzY3JpYmUubmV4dCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBvbkZvY3VzKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuaGFzRm9jdXMgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBvbkJsdXIoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5oYXNGb2N1cyA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBpc0Rpc2FibGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmRpc2FibGVkIHx8ICF0aGlzLnRhYmxlLnZhbHVlIHx8ICF0aGlzLnRhYmxlLnZhbHVlLmxlbmd0aDtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgb25DbGljaygpOiB2b2lkIHtcclxuICAgICAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMudGFibGUudmFsdWUgJiYgdGhpcy50YWJsZS52YWx1ZS5sZW5ndGggPiAwKSB0aGlzLm9uVG9nZ2xlQ2hlY2tib3goIXRoaXMuY2hlY2tlZCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyB1cGRhdGVDaGVja2VkU3RhdGUoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMudGFibGUuZmlsdGVyZWRWYWx1ZSkge1xyXG4gICAgICAgICAgICBjb25zdCB2YWwgPSB0aGlzLnRhYmxlLmZpbHRlcmVkVmFsdWU7XHJcbiAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICB2YWwgJiZcclxuICAgICAgICAgICAgICAgIHZhbC5sZW5ndGggPiAwICYmXHJcbiAgICAgICAgICAgICAgICB0aGlzLnRhYmxlLnNlbGVjdGlvbiAmJlxyXG4gICAgICAgICAgICAgICAgdGhpcy50YWJsZS5zZWxlY3Rpb24ubGVuZ3RoID4gMCAmJlxyXG4gICAgICAgICAgICAgICAgdGhpcy5pc0FsbEZpbHRlcmVkVmFsdWVzQ2hlY2tlZCgpXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29uc3QgdmFsID0gdGhpcy50YWJsZS52YWx1ZTtcclxuICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgIHZhbCAmJlxyXG4gICAgICAgICAgICAgICAgdmFsLmxlbmd0aCA+IDAgJiZcclxuICAgICAgICAgICAgICAgIHRoaXMudGFibGUuc2VsZWN0aW9uICYmXHJcbiAgICAgICAgICAgICAgICB0aGlzLnRhYmxlLnNlbGVjdGlvbi5sZW5ndGggPiAwICYmXHJcbiAgICAgICAgICAgICAgICB0aGlzLmlzQWxsVmFsdWVzQ2hlY2tlZCgpXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBvblRvZ2dsZUNoZWNrYm94KGNoZWNrZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgICAgICBjb25zdCB7IGZpbHRlcmVkVmFsdWUsIHZhbHVlLCBkYXRhS2V5IH0gPSB0aGlzLnRhYmxlO1xyXG4gICAgICAgIGNvbnN0IGdyaWREYXRhID0gY2hlY2tlZCA/IChmaWx0ZXJlZFZhbHVlID8gZmlsdGVyZWRWYWx1ZS5zbGljZSgpIDogdmFsdWUuc2xpY2UoKSkgOiBbXTtcclxuXHJcbiAgICAgICAgaWYgKCFkYXRhS2V5KSByZXR1cm47XHJcblxyXG4gICAgICAgIGlmIChjaGVja2VkKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHVuc2VsZWN0ZWRzID0gZ3JpZERhdGFcclxuICAgICAgICAgICAgICAgIC5maWx0ZXIoXHJcbiAgICAgICAgICAgICAgICAgICAgKHJlY29yZCkgPT4gIXRoaXMudGFibGUuX3NlbGVjdGlvbi5maW5kKChzZWxlY3RlZDogYW55KSA9PiByZWNvcmRbZGF0YUtleV0gPT09IHNlbGVjdGVkW2RhdGFLZXldKSxcclxuICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgIC5tYXAoKHJlY29yZDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudXNlQWxsT2JqZWN0KSByZXR1cm4gcmVjb3JkO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXdSZWNvcmQ6IGFueSA9IHt9O1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnJvd1Byb3BzKSB0aGlzLnJvd1Byb3BzLmZvckVhY2goKHByb3A6IHN0cmluZykgPT4gKG5ld1JlY29yZFtwcm9wXSA9IHJlY29yZFtwcm9wXSkpO1xyXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgbmV3UmVjb3JkW2RhdGFLZXldID0gcmVjb3JkW2RhdGFLZXldO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXdSZWNvcmQ7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgdGhpcy50YWJsZS5fc2VsZWN0aW9uID0gWy4uLnRoaXMudGFibGUuX3NlbGVjdGlvbiwgLi4udW5zZWxlY3RlZHNdO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHZhbHVlLmZvckVhY2goKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy50YWJsZS5fc2VsZWN0aW9uID0gdGhpcy50YWJsZS5fc2VsZWN0aW9uLmZpbHRlcihcclxuICAgICAgICAgICAgICAgICAgICAocmVjb3JkOiBhbnkpID0+IHJlY29yZFtkYXRhS2V5XSAhPT0gZGF0YVtkYXRhS2V5XSxcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy50YWJsZS51cGRhdGVTZWxlY3Rpb25LZXlzKCk7XHJcbiAgICAgICAgdGhpcy50YWJsZS5zZWxlY3Rpb25DaGFuZ2UuZW1pdCh0aGlzLnRhYmxlLl9zZWxlY3Rpb24pO1xyXG4gICAgICAgIHRoaXMudGFibGVTZXJ2aWNlLm9uU2VsZWN0aW9uQ2hhbmdlKCk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnRhYmxlLmlzU3RhdGVmdWwoKSkgdGhpcy50YWJsZS5zYXZlU3RhdGUoKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgaXNBbGxGaWx0ZXJlZFZhbHVlc0NoZWNrZWQoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnRhYmxlLmZpbHRlcmVkVmFsdWUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGZvciAoY29uc3Qgcm93RGF0YSBvZiB0aGlzLnRhYmxlLmZpbHRlcmVkVmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIGlmICghdGhpcy50YWJsZS5pc1NlbGVjdGVkKHJvd0RhdGEpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgaXNBbGxWYWx1ZXNDaGVja2VkKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGlmICghdGhpcy50YWJsZS52YWx1ZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgZm9yIChjb25zdCByb3dEYXRhIG9mIHRoaXMudGFibGUudmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIGlmICghdGhpcy50YWJsZS5pc1NlbGVjdGVkKHJvd0RhdGEpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iXX0=
171
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtaGVhZGVyLWNoZWNrYm94LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy90YWJsZS1oZWFkZXIvc3JjL2xpYi90YWJsZS1oZWFkZXIvdGFibGUtaGVhZGVyLWNoZWNrYm94LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTVFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQUUzQzs7Ozs7Ozs7Ozs7OztHQWFHO0FBWUgsTUFBTSxPQUFPLDRCQUE0QjtJQUM1QixLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3RCLFlBQVksR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7SUFFdEMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFFekIsc0dBQXNHO0lBRS9GLEVBQUUsR0FBRywyQkFBMkIsNEJBQTRCLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQztJQUUvRSxzRUFBc0U7SUFFL0QsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUV4Qix1RkFBdUY7SUFFaEYsUUFBUSxDQUFZO0lBRTNCLHFHQUFxRztJQUU5RixZQUFZLENBQVc7SUFFdkIsT0FBTyxHQUFHLEtBQUssQ0FBQztJQUNoQixRQUFRLEdBQUcsS0FBSyxDQUFDO0lBRWhCLGNBQWMsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBRTdDO1FBQ0ksSUFBSSxDQUFD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O1lBQ0QsT0FBTyxJQUFJLENBQUM7UUFDaEIsQ0FBQztJQUNMLENBQUM7d0dBbEpRLDRCQUE0Qjs0RkFBNUIsNEJBQTRCLG1MQVQzQjs7Ozs7S0FLVCw0REFFUyxpQkFBaUI7OzRGQUVsQiw0QkFBNEI7a0JBWHhDLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLHlCQUF5QjtvQkFDbkMsUUFBUSxFQUFFOzs7OztLQUtUO29CQUNELFVBQVUsRUFBRSxJQUFJO29CQUNoQixPQUFPLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQztpQkFDL0I7d0RBU1UsRUFBRTtzQkFEUixLQUFLO2dCQUtDLFFBQVE7c0JBRGQsS0FBSztnQkFLQyxRQUFRO3NCQURkLEtBQUs7Z0JBS0MsWUFBWTtzQkFEbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IENoZWNrYm94Q29tcG9uZW50IH0gZnJvbSAnQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cy9jaGVja2JveCc7XHJcbmltcG9ydCB7IFRhYmxlLCBUYWJsZVNlcnZpY2UgfSBmcm9tICdwcmltZW5nL3RhYmxlJztcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG4vKipcclxuICogQGRlc2NyaXB0aW9uIENvbXBvbmVudGUgZGUgY2hlY2tib3ggZGUgY2FiZcOnYWxobyBwYXJhIHRhYmVsYXMgUHJpbWVORy5cclxuICogSW50ZWdyYS1zZSBhdXRvbWF0aWNhbWVudGUgYW8gYFRhYmxlU2VydmljZWAgcGFyYSBzaW5jcm9uaXphciBvIGVzdGFkb1xyXG4gKiBkZSBzZWxlw6fDo28gdG90YWwvcGFyY2lhbCBjb20gYXMgbGluaGFzIGRhIHRhYmVsYS5cclxuICpcclxuICogQGV4YW1wbGVcclxuICogYGBgaHRtbFxyXG4gKiA8dGg+XHJcbiAqICAgPHMtdGFibGUtaGVhZGVyLWNoZWNrYm94IFtyb3dQcm9wc109XCJbJ2lkJywgJ25hbWUnXVwiIC8+XHJcbiAqIDwvdGg+XHJcbiAqIGBgYFxyXG4gKlxyXG4gKiBAY2F0ZWdvcnkgRGF0YVxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ3MtdGFibGUtaGVhZGVyLWNoZWNrYm94JyxcclxuICAgIHRlbXBsYXRlOiBgXHJcbiAgICAgICAgPHMtY2hlY2tib3hcclxuICAgICAgICAgICAgW2NoZWNrZWRdPVwiY2hlY2tlZFwiXHJcbiAgICAgICAgICAgIChjaGVja2VkQ2hhbmdlKT1cIm9uQ2xpY2soJGV2ZW50KVwiXHJcbiAgICAgICAgLz5cclxuICAgIGAsXHJcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gICAgaW1wb3J0czogW0NoZWNrYm94Q29tcG9uZW50XSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFRhYmxlSGVhZGVyQ2hlY2tib3hDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgICByZWFkb25seSB0YWJsZSA9IGluamVjdChUYWJsZSk7XHJcbiAgICByZWFkb25seSB0YWJsZVNlcnZpY2UgPSBpbmplY3QoVGFibGVTZXJ2aWNlKTtcclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIG5leHRJZCA9IDA7XHJcblxyXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBJZGVudGlmaWNhZG9yIMO6bmljbyBkbyBjb21wb25lbnRlIG5vIERPTS4gR2VyYWRvIGF1dG9tYXRpY2FtZW50ZSBzZSBuw6NvIGluZm9ybWFkby4gKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgaWQgPSBgcy10YWJsZS1oZWFkZXItY2hlY2tib3gtJHtUYWJsZUhlYWRlckNoZWNrYm94Q29tcG9uZW50Lm5leHRJZCsrfWA7XHJcblxyXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBEZXNhYmlsaXRhIG8gY2hlY2tib3ggZGUgY2FiZcOnYWxoby4gQGRlZmF1bHQgZmFsc2UgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgZGlzYWJsZWQgPSBmYWxzZTtcclxuXHJcbiAgICAvKiogQGRlc2NyaXB0aW9uIExpc3RhIGRlIHByb3ByaWVkYWRlcyBkb3MgaXRlbnMgZGEgbGluaGEgdXNhZGFzIHBhcmEgaWRlbnRpZmljYcOnw6NvLiAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyByb3dQcm9wcz86IHN0cmluZ1tdO1xyXG5cclxuICAgIC8qKiBAZGVzY3JpcHRpb24gUXVhbmRvIGB0cnVlYCwgdXNhIG8gb2JqZXRvIGNvbXBsZXRvIGRhIGxpbmhhIGVtIHZleiBkZSBwcm9wcmllZGFkZXMgZXNwZWPDrWZpY2FzLiAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyB1c2VBbGxPYmplY3Q/OiBib29sZWFuO1xyXG5cclxuICAgIHB1YmxpYyBjaGVja2VkID0gZmFsc2U7XHJcbiAgICBwdWJsaWMgaGFzRm9jdXMgPSBmYWxzZTtcclxuXHJcbiAgICBwcml2YXRlIF9uZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcigpIHtcclxuICAgICAgICB0aGlzLnRhYmxlLnRhYmxlU2VydmljZS52YWx1ZVNvdXJjZSQucGlwZSh0YWtlVW50aWwodGhpcy5fbmdVbnN1YnNjcmliZSkpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuY2hlY2tlZCA9IHRoaXMudXBkYXRlQ2hlY2tlZFN0YXRlKCk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMudGFibGUudGFibGVTZXJ2aWNlLnNlbGVjdGlvblNvdXJjZSQucGlwZSh0YWtlVW50aWwodGhpcy5fbmdVbnN1YnNjcmliZSkpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuY2hlY2tlZCA9IHRoaXMudXBkYXRlQ2hlY2tlZFN0YXRlKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuY2hlY2tlZCA9IHRoaXMudXBkYXRlQ2hlY2tlZFN0YXRlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX25nVW5zdWJzY3JpYmUubmV4dCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBvbkZvY3VzKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuaGFzRm9jdXMgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBvbkJsdXIoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5oYXNGb2N1cyA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBpc0Rpc2FibGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmRpc2FibGVkIHx8ICF0aGlzLnRhYmxlLnZhbHVlIHx8ICF0aGlzLnRhYmxlLnZhbHVlLmxlbmd0aDtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgb25DbGljayhjaGVja2VkOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnRhYmxlLnZhbHVlICYmIHRoaXMudGFibGUudmFsdWUubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5vblRvZ2dsZUNoZWNrYm94KGNoZWNrZWQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyB1cGRhdGVDaGVja2VkU3RhdGUoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMudGFibGUuZmlsdGVyZWRWYWx1ZSkge1xyXG4gICAgICAgICAgICBjb25zdCB2YWwgPSB0aGlzLnRhYmxlLmZpbHRlcmVkVmFsdWU7XHJcbiAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICB2YWwgJiZcclxuICAgICAgICAgICAgICAgIHZhbC5sZW5ndGggPiAwICYmXHJcbiAgICAgICAgICAgICAgICB0aGlzLnRhYmxlLnNlbGVjdGlvbiAmJlxyXG4gICAgICAgICAgICAgICAgdGhpcy50YWJsZS5zZWxlY3Rpb24ubGVuZ3RoID4gMCAmJlxyXG4gICAgICAgICAgICAgICAgdGhpcy5pc0FsbEZpbHRlcmVkVmFsdWVzQ2hlY2tlZCgpXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29uc3QgdmFsID0gdGhpcy50YWJsZS52YWx1ZTtcclxuICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgIHZhbCAmJlxyXG4gICAgICAgICAgICAgICAgdmFsLmxlbmd0aCA+IDAgJiZcclxuICAgICAgICAgICAgICAgIHRoaXMudGFibGUuc2VsZWN0aW9uICYmXHJcbiAgICAgICAgICAgICAgICB0aGlzLnRhYmxlLnNlbGVjdGlvbi5sZW5ndGggPiAwICYmXHJcbiAgICAgICAgICAgICAgICB0aGlzLmlzQWxsVmFsdWVzQ2hlY2tlZCgpXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBvblRvZ2dsZUNoZWNrYm94KGNoZWNrZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgICAgICBjb25zdCB7IGZpbHRlcmVkVmFsdWUsIHZhbHVlLCBkYXRhS2V5IH0gPSB0aGlzLnRhYmxlO1xyXG4gICAgICAgIGNvbnN0IGdyaWREYXRhID0gY2hlY2tlZCA/IChmaWx0ZXJlZFZhbHVlID8gZmlsdGVyZWRWYWx1ZS5zbGljZSgpIDogdmFsdWUuc2xpY2UoKSkgOiBbXTtcclxuXHJcbiAgICAgICAgaWYgKCFkYXRhS2V5KSByZXR1cm47XHJcblxyXG4gICAgICAgIGlmIChjaGVja2VkKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHVuc2VsZWN0ZWRzID0gZ3JpZERhdGFcclxuICAgICAgICAgICAgICAgIC5maWx0ZXIoXHJcbiAgICAgICAgICAgICAgICAgICAgKHJlY29yZCkgPT4gIXRoaXMudGFibGUuX3NlbGVjdGlvbi5maW5kKChzZWxlY3RlZDogYW55KSA9PiByZWNvcmRbZGF0YUtleV0gPT09IHNlbGVjdGVkW2RhdGFLZXldKSxcclxuICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgIC5tYXAoKHJlY29yZDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudXNlQWxsT2JqZWN0KSByZXR1cm4gcmVjb3JkO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXdSZWNvcmQ6IGFueSA9IHt9O1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnJvd1Byb3BzKSB0aGlzLnJvd1Byb3BzLmZvckVhY2goKHByb3A6IHN0cmluZykgPT4gKG5ld1JlY29yZFtwcm9wXSA9IHJlY29yZFtwcm9wXSkpO1xyXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgbmV3UmVjb3JkW2RhdGFLZXldID0gcmVjb3JkW2RhdGFLZXldO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXdSZWNvcmQ7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgdGhpcy50YWJsZS5fc2VsZWN0aW9uID0gWy4uLnRoaXMudGFibGUuX3NlbGVjdGlvbiwgLi4udW5zZWxlY3RlZHNdO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHZhbHVlLmZvckVhY2goKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy50YWJsZS5fc2VsZWN0aW9uID0gdGhpcy50YWJsZS5fc2VsZWN0aW9uLmZpbHRlcihcclxuICAgICAgICAgICAgICAgICAgICAocmVjb3JkOiBhbnkpID0+IHJlY29yZFtkYXRhS2V5XSAhPT0gZGF0YVtkYXRhS2V5XSxcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy50YWJsZS51cGRhdGVTZWxlY3Rpb25LZXlzKCk7XHJcbiAgICAgICAgdGhpcy50YWJsZS5zZWxlY3Rpb25DaGFuZ2UuZW1pdCh0aGlzLnRhYmxlLl9zZWxlY3Rpb24pO1xyXG4gICAgICAgIHRoaXMudGFibGVTZXJ2aWNlLm9uU2VsZWN0aW9uQ2hhbmdlKCk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnRhYmxlLmlzU3RhdGVmdWwoKSkgdGhpcy50YWJsZS5zYXZlU3RhdGUoKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgaXNBbGxGaWx0ZXJlZFZhbHVlc0NoZWNrZWQoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnRhYmxlLmZpbHRlcmVkVmFsdWUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGZvciAoY29uc3Qgcm93RGF0YSBvZiB0aGlzLnRhYmxlLmZpbHRlcmVkVmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIGlmICghdGhpcy50YWJsZS5pc1NlbGVjdGVkKHJvd0RhdGEpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgaXNBbGxWYWx1ZXNDaGVja2VkKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGlmICghdGhpcy50YWJsZS52YWx1ZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgZm9yIChjb25zdCByb3dEYXRhIG9mIHRoaXMudGFibGUudmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIGlmICghdGhpcy50YWJsZS5pc1NlbGVjdGVkKHJvd0RhdGEpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iXX0=
@@ -102,7 +102,7 @@ export class TextAreaComponent {
102
102
  useExisting: forwardRef(() => TextAreaComponent),
103
103
  multi: true,
104
104
  },
105
- ], viewQueries: [{ propertyName: "textAreaElement", first: true, predicate: ["textArea"], descendants: true, read: ElementRef }], ngImport: i0, template: "@if (keyFilter) {\r\n <textarea\r\n #textArea\r\n class=\"textarea\"\r\n [pKeyFilter]=\"keyFilter\"\r\n [id]=\"inputId\"\r\n [rows]=\"rows\"\r\n [ngModel]=\"value\"\r\n (ngModelChange)=\"setValue($event)\"\r\n [disabled]=\"disabled\"\r\n [ngStyle]=\"inputStyle\"\r\n [readOnly]=\"readOnly\"\r\n [maxlength]=\"maxLength\"\r\n [placeholder]=\"placeholder ? placeholder : ''\"\r\n ></textarea>\r\n}\r\n\r\n@if (!keyFilter) {\r\n <textarea\r\n #textArea\r\n class=\"textarea\"\r\n [id]=\"inputId\"\r\n [rows]=\"rows\"\r\n [(ngModel)]=\"value\"\r\n [disabled]=\"disabled\"\r\n [ngStyle]=\"inputStyle\"\r\n [readOnly]=\"readOnly\"\r\n [maxlength]=\"maxLength\"\r\n [placeholder]=\"placeholder ? placeholder : ''\"\r\n (ngModelChange)=\"setValue($event)\"\r\n ></textarea>\r\n}\r\n\r\n@if (speechRecognition && renderTextArea) {\r\n <s-speech-recognition\r\n [textAreaElement]=\"textAreaElement.nativeElement\"\r\n [keepContext]=\"keepContext\"\r\n [speechRecognitionPlaceholder]=\"speechRecognitionPlaceholder\"\r\n (recognizedText)=\"handleRecognizedText($event)\"\r\n >\r\n </s-speech-recognition>\r\n}\r\n", styles: [".textarea{border-radius:3px;border:1px solid #c1c1cc;background:#fff;width:100%;max-width:100%;min-height:4em;min-width:10em;outline:none;padding:8px;display:block}.textarea:disabled{opacity:.5}.textarea:focus{transition:border-color .2s ease-out;border:1px solid #428bca}:host.ng-invalid.ng-dirty .textarea{border-color:#c13018}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.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: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: KeyFilter, selector: "[pKeyFilter]", inputs: ["pValidateOnly", "pKeyFilter"], outputs: ["ngModelChange"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: SpeechRecognitionComponent, selector: "s-speech-recognition", inputs: ["textAreaElement", "keepContext", "speechRecognitionPlaceholder"], outputs: ["recognizedText"] }] });
105
+ ], viewQueries: [{ propertyName: "textAreaElement", first: true, predicate: ["textArea"], descendants: true, read: ElementRef }], ngImport: i0, template: "@if (keyFilter) {\r\n <textarea\r\n #textArea\r\n class=\"textarea\"\r\n [pKeyFilter]=\"keyFilter\"\r\n [id]=\"inputId\"\r\n [rows]=\"rows\"\r\n [ngModel]=\"value\"\r\n (ngModelChange)=\"setValue($event)\"\r\n [disabled]=\"disabled\"\r\n [ngStyle]=\"inputStyle\"\r\n [readOnly]=\"readOnly\"\r\n [maxlength]=\"maxLength\"\r\n [placeholder]=\"placeholder ? placeholder : ''\"\r\n ></textarea>\r\n}\r\n\r\n@if (!keyFilter) {\r\n <textarea\r\n #textArea\r\n class=\"textarea\"\r\n [id]=\"inputId\"\r\n [rows]=\"rows\"\r\n [(ngModel)]=\"value\"\r\n [disabled]=\"disabled\"\r\n [ngStyle]=\"inputStyle\"\r\n [readOnly]=\"readOnly\"\r\n [maxlength]=\"maxLength\"\r\n [placeholder]=\"placeholder ? placeholder : ''\"\r\n (ngModelChange)=\"setValue($event)\"\r\n ></textarea>\r\n}\r\n\r\n@if (speechRecognition && renderTextArea) {\r\n <s-speech-recognition\r\n [textAreaElement]=\"textAreaElement.nativeElement\"\r\n [keepContext]=\"keepContext\"\r\n [speechRecognitionPlaceholder]=\"speechRecognitionPlaceholder\"\r\n [disabledSpeechRecognition]=\"disabled\"\r\n (recognizedText)=\"handleRecognizedText($event)\"\r\n />\r\n\r\n}\r\n", styles: [".textarea{border-radius:3px;border:1px solid #c1c1cc;background:#fff;width:100%;max-width:100%;min-height:4em;min-width:10em;outline:none;padding:8px;display:block}.textarea:disabled{opacity:.5}.textarea:focus{transition:border-color .2s ease-out;border:1px solid #428bca}:host.ng-invalid.ng-dirty .textarea{border-color:#c13018}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.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: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: KeyFilter, selector: "[pKeyFilter]", inputs: ["pValidateOnly", "pKeyFilter"], outputs: ["ngModelChange"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: SpeechRecognitionComponent, selector: "s-speech-recognition", inputs: ["textAreaElement", "keepContext", "speechRecognitionPlaceholder", "moreOptionsIconClass", "disabledSpeechRecognition"], outputs: ["recognizedText"] }] });
106
106
  }
107
107
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TextAreaComponent, decorators: [{
108
108
  type: Component,
@@ -112,7 +112,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
112
112
  useExisting: forwardRef(() => TextAreaComponent),
113
113
  multi: true,
114
114
  },
115
- ], standalone: true, imports: [FormsModule, KeyFilter, NgStyle, SpeechRecognitionComponent], template: "@if (keyFilter) {\r\n <textarea\r\n #textArea\r\n class=\"textarea\"\r\n [pKeyFilter]=\"keyFilter\"\r\n [id]=\"inputId\"\r\n [rows]=\"rows\"\r\n [ngModel]=\"value\"\r\n (ngModelChange)=\"setValue($event)\"\r\n [disabled]=\"disabled\"\r\n [ngStyle]=\"inputStyle\"\r\n [readOnly]=\"readOnly\"\r\n [maxlength]=\"maxLength\"\r\n [placeholder]=\"placeholder ? placeholder : ''\"\r\n ></textarea>\r\n}\r\n\r\n@if (!keyFilter) {\r\n <textarea\r\n #textArea\r\n class=\"textarea\"\r\n [id]=\"inputId\"\r\n [rows]=\"rows\"\r\n [(ngModel)]=\"value\"\r\n [disabled]=\"disabled\"\r\n [ngStyle]=\"inputStyle\"\r\n [readOnly]=\"readOnly\"\r\n [maxlength]=\"maxLength\"\r\n [placeholder]=\"placeholder ? placeholder : ''\"\r\n (ngModelChange)=\"setValue($event)\"\r\n ></textarea>\r\n}\r\n\r\n@if (speechRecognition && renderTextArea) {\r\n <s-speech-recognition\r\n [textAreaElement]=\"textAreaElement.nativeElement\"\r\n [keepContext]=\"keepContext\"\r\n [speechRecognitionPlaceholder]=\"speechRecognitionPlaceholder\"\r\n (recognizedText)=\"handleRecognizedText($event)\"\r\n >\r\n </s-speech-recognition>\r\n}\r\n", styles: [".textarea{border-radius:3px;border:1px solid #c1c1cc;background:#fff;width:100%;max-width:100%;min-height:4em;min-width:10em;outline:none;padding:8px;display:block}.textarea:disabled{opacity:.5}.textarea:focus{transition:border-color .2s ease-out;border:1px solid #428bca}:host.ng-invalid.ng-dirty .textarea{border-color:#c13018}\n"] }]
115
+ ], standalone: true, imports: [FormsModule, KeyFilter, NgStyle, SpeechRecognitionComponent], template: "@if (keyFilter) {\r\n <textarea\r\n #textArea\r\n class=\"textarea\"\r\n [pKeyFilter]=\"keyFilter\"\r\n [id]=\"inputId\"\r\n [rows]=\"rows\"\r\n [ngModel]=\"value\"\r\n (ngModelChange)=\"setValue($event)\"\r\n [disabled]=\"disabled\"\r\n [ngStyle]=\"inputStyle\"\r\n [readOnly]=\"readOnly\"\r\n [maxlength]=\"maxLength\"\r\n [placeholder]=\"placeholder ? placeholder : ''\"\r\n ></textarea>\r\n}\r\n\r\n@if (!keyFilter) {\r\n <textarea\r\n #textArea\r\n class=\"textarea\"\r\n [id]=\"inputId\"\r\n [rows]=\"rows\"\r\n [(ngModel)]=\"value\"\r\n [disabled]=\"disabled\"\r\n [ngStyle]=\"inputStyle\"\r\n [readOnly]=\"readOnly\"\r\n [maxlength]=\"maxLength\"\r\n [placeholder]=\"placeholder ? placeholder : ''\"\r\n (ngModelChange)=\"setValue($event)\"\r\n ></textarea>\r\n}\r\n\r\n@if (speechRecognition && renderTextArea) {\r\n <s-speech-recognition\r\n [textAreaElement]=\"textAreaElement.nativeElement\"\r\n [keepContext]=\"keepContext\"\r\n [speechRecognitionPlaceholder]=\"speechRecognitionPlaceholder\"\r\n [disabledSpeechRecognition]=\"disabled\"\r\n (recognizedText)=\"handleRecognizedText($event)\"\r\n />\r\n\r\n}\r\n", styles: [".textarea{border-radius:3px;border:1px solid #c1c1cc;background:#fff;width:100%;max-width:100%;min-height:4em;min-width:10em;outline:none;padding:8px;display:block}.textarea:disabled{opacity:.5}.textarea:focus{transition:border-color .2s ease-out;border:1px solid #428bca}:host.ng-invalid.ng-dirty .textarea{border-color:#c13018}\n"] }]
116
116
  }], propDecorators: { textAreaElement: [{
117
117
  type: ViewChild,
118
118
  args: ['textArea', { read: ElementRef }]
@@ -137,4 +137,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
137
137
  }], readOnly: [{
138
138
  type: Input
139
139
  }] } });
140
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1hcmVhLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy90ZXh0LWFyZWEvc3JjL2xpYi90ZXh0LWFyZWEvdGV4dC1hcmVhLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy90ZXh0LWFyZWEvc3JjL2xpYi90ZXh0LWFyZWEvdGV4dC1hcmVhLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRyxPQUFPLEVBQXdCLGlCQUFpQixFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RGLE9BQU8sRUFBb0IsU0FBUyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDaEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHVEQUF1RCxDQUFDOzs7QUFFbkc7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQkc7QUFlSCxNQUFNLE9BQU8saUJBQWlCO0lBQ1QsR0FBRyxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBRWpELFFBQVEsR0FBNEIsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO0lBQzdDLFNBQVMsR0FBNEIsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO0lBQzlDLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFDakIsS0FBSyxHQUFHLEVBQUUsQ0FBQztJQUNILGdCQUFnQixDQUE4QztJQUV0RSxJQUNXLGVBQWU7UUFDdEIsT0FBTyxJQUFJLENBQUMsZ0JBQW1ELENBQUM7SUFDcEUsQ0FBQztJQUVELElBQVcsZUFB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QUssRUFBRSxJQUFJO3lCQUNkO3FCQUNKLGNBQ1csSUFBSSxXQUNQLENBQUMsV0FBVyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsMEJBQTBCLENBQUM7OEJBWTNELGVBQWU7c0JBRHpCLFNBQVM7dUJBQUMsVUFBVSxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkFjbEMsT0FBTztzQkFBZixLQUFLO2dCQUVHLElBQUk7c0JBQVosS0FBSztnQkFFRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBRUcsU0FBUztzQkFBakIsS0FBSztnQkFFRyxXQUFXO3NCQUFuQixLQUFLO2dCQUVHLDRCQUE0QjtzQkFBcEMsS0FBSztnQkFFRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBTU8sVUFBVTtzQkFBdEIsS0FBSztnQkFVRyxRQUFRO3NCQUFoQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgZm9yd2FyZFJlZiwgSW5wdXQsIFZpZXdDaGlsZCwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiwgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEtleUZpbHRlclBhdHRlcm4sIEtleUZpbHRlciB9IGZyb20gJ3ByaW1lbmcva2V5ZmlsdGVyJztcclxuaW1wb3J0IHsgTmdTdHlsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IFNwZWVjaFJlY29nbml0aW9uQ29tcG9uZW50IH0gZnJvbSAnQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cy9zcGVlY2gtcmVjb2duaXRpb24nO1xyXG5cclxuLyoqXHJcbiAqIEBkZXNjcmlwdGlvbiBDb21wb25lbnRlIGRlIMOhcmVhIGRlIHRleHRvIGNvbSBzdXBvcnRlIGEgcmVjb25oZWNpbWVudG8gZGUgdm96LFxyXG4gKiBmaWx0cm8gZGUgdGVjbGFzLCBjb21wcmltZW50byBtw6F4aW1vIGUgaW50ZWdyYcOnw6NvIGNvbSBgQ29udHJvbFZhbHVlQWNjZXNzb3JgLlxyXG4gKiBSZW5kZXJpemEgY29uZGljaW9uYWxtZW50ZSBvIGNvbXBvbmVudGUgYFNwZWVjaFJlY29nbml0aW9uQ29tcG9uZW50YCBxdWFuZG9cclxuICogYSBmbGFnIGBzcGVlY2hSZWNvZ25pdGlvbmAgZXN0w6EgYXRpdmEuXHJcbiAqXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYGh0bWxcclxuICogPHMtdGV4dGFyZWFcclxuICogICBmb3JtQ29udHJvbE5hbWU9XCJkZXNjcmljYW9cIlxyXG4gKiAgIFtyb3dzXT1cIjZcIlxyXG4gKiAgIFttYXhMZW5ndGhdPVwiNTAwXCJcclxuICogICBwbGFjZWhvbGRlcj1cIkRpZ2l0ZSBhcXVpLi4uXCIgLz5cclxuICogYGBgXHJcbiAqXHJcbiAqIEBjYXRlZ29yeSBJbnB1dHNcclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdzLXRleHRhcmVhJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi90ZXh0LWFyZWEuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vdGV4dC1hcmVhLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBwcm92aWRlcnM6IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBUZXh0QXJlYUNvbXBvbmVudCksXHJcbiAgICAgICAgICAgIG11bHRpOiB0cnVlLFxyXG4gICAgICAgIH0sXHJcbiAgICBdLFxyXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICAgIGltcG9ydHM6IFtGb3Jtc01vZHVsZSwgS2V5RmlsdGVyLCBOZ1N0eWxlLCBTcGVlY2hSZWNvZ25pdGlvbkNvbXBvbmVudF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUZXh0QXJlYUNvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2RyID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcclxuXHJcbiAgICBvbkNoYW5nZTogKHZhbHVlOiBzdHJpbmcpID0+IHZvaWQgPSAoKSA9PiB7fTtcclxuICAgIG9uVG91Y2hlZDogKHZhbHVlOiBzdHJpbmcpID0+IHZvaWQgPSAoKSA9PiB7fTtcclxuICAgIGRpc2FibGVkID0gZmFsc2U7XHJcbiAgICB2YWx1ZSA9ICcnO1xyXG4gICAgcHJpdmF0ZSBfdGV4dEFyZWFFbGVtZW50OiBFbGVtZW50UmVmPEhUTUxUZXh0QXJlYUVsZW1lbnQ+IHwgdW5kZWZpbmVkO1xyXG5cclxuICAgIEBWaWV3Q2hpbGQoJ3RleHRBcmVhJywgeyByZWFkOiBFbGVtZW50UmVmIH0pXHJcbiAgICBwdWJsaWMgZ2V0IHRleHRBcmVhRWxlbWVudCgpOiBFbGVtZW50UmVmPEhUTUxUZXh0QXJlYUVsZW1lbnQ+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fdGV4dEFyZWFFbGVtZW50IGFzIEVsZW1lbnRSZWY8SFRNTFRleHRBcmVhRWxlbWVudD47XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHNldCB0ZXh0QXJlYUVsZW1lbnQodmFsdWU6IEVsZW1lbnRSZWY8SFRNTFRleHRBcmVhRWxlbWVudD4pIHtcclxuICAgICAgICB0aGlzLl90ZXh0QXJlYUVsZW1lbnQgPSB2YWx1ZTtcclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5yZW5kZXJUZXh0QXJlYSA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogQGRlc2NyaXB0aW9uIElkZW50aWZpY2Fkb3IgZG8gZWxlbWVudG8gYDx0ZXh0YXJlYT5gIG5vIERPTS4gQGRlZmF1bHQgJ3RleHRhcmVhLXtyYW5kb219JyAqL1xyXG4gICAgQElucHV0KCkgaW5wdXRJZCA9IGB0ZXh0YXJlYS0ke01hdGgucmFuZG9tKCl9YDtcclxuICAgIC8qKiBAZGVzY3JpcHRpb24gTsO6bWVybyBkZSBsaW5oYXMgdmlzw612ZWlzIG5vIHRleHRhcmVhLiBAZGVmYXVsdCA1ICovXHJcbiAgICBASW5wdXQoKSByb3dzID0gNTtcclxuICAgIC8qKiBAZGVzY3JpcHRpb24gSGFiaWxpdGEgbyBib3TDo28gZGUgcmVjb25oZWNpbWVudG8gZGUgdm96LiBAZGVmYXVsdCBmYWxzZSAqL1xyXG4gICAgQElucHV0KCkgc3BlZWNoUmVjb2duaXRpb24gPSBmYWxzZTtcclxuICAgIC8qKiBAZGVzY3JpcHRpb24gRmlsdHJvIGRlIHRlY2xhcyBhY2VpdGFzLCB1c2FuZG8gcGFkcsOjbyBvdSBleHByZXNzw6NvIHJlZ3VsYXIuICovXHJcbiAgICBASW5wdXQoKSBrZXlGaWx0ZXI6IFJlZ0V4cCB8IEtleUZpbHRlclBhdHRlcm4gfCBudWxsIHwgdW5kZWZpbmVkO1xyXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBRdWFuZG8gYHRydWVgLCBtYW50w6ltIG8gY29udGV4dG8gYW8gcmVpbmljaWFyIG8gcmVjb25oZWNpbWVudG8gZGUgdm96LiBAZGVmYXVsdCBmYWxzZSAqL1xyXG4gICAgQElucHV0KCkga2VlcENvbnRleHQgPSBmYWxzZTtcclxuICAgIC8qKiBAZGVzY3JpcHRpb24gUGxhY2Vob2xkZXIgZXhpYmlkbyBkdXJhbnRlIG8gcmVjb25oZWNpbWVudG8gZGUgdm96LiBAZGVmYXVsdCAnJyAqL1xyXG4gICAgQElucHV0KCkgc3BlZWNoUmVjb2duaXRpb25QbGFjZWhvbGRlciA9ICcnO1xyXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBOw7ptZXJvIG3DoXhpbW8gZGUgY2FyYWN0ZXJlcyBhY2VpdG9zLiBAZGVmYXVsdCBudWxsIChpbGltaXRhZG8pICovXHJcbiAgICBASW5wdXQoKSBtYXhMZW5ndGg6IG51bWJlciB8IG51bGwgPSBudWxsO1xyXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBUZXh0byBleGliaWRvIHF1YW5kbyBvIGNhbXBvIGVzdMOhIHZhemlvLiAqL1xyXG4gICAgQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZyB8IHVuZGVmaW5lZDtcclxuXHJcbiAgICBwcml2YXRlIF9pbnB1dFN0eWxlOiBQYXJ0aWFsPENTU1N0eWxlRGVjbGFyYXRpb24+ID0ge1xyXG4gICAgICAgIHJlc2l6ZTogJ3ZlcnRpY2FsJyxcclxuICAgIH07XHJcbiAgICAvKiogQGRlc2NyaXB0aW9uIEVzdGlsb3MgaW5saW5lIGFwbGljYWRvcyBhbyBlbGVtZW50byBgPHRleHRhcmVhPmAgaW50ZXJuby4gQGRlZmF1bHQgYHsgcmVzaXplOiAndmVydGljYWwnIH1gICovXHJcbiAgICBASW5wdXQoKSBnZXQgaW5wdXRTdHlsZSgpOiBQYXJ0aWFsPENTU1N0eWxlRGVjbGFyYXRpb24+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5faW5wdXRTdHlsZTtcclxuICAgIH1cclxuICAgIHNldCBpbnB1dFN0eWxlKHZhbHVlOiBQYXJ0aWFsPENTU1N0eWxlRGVjbGFyYXRpb24+KSB7XHJcbiAgICAgICAgdGhpcy5faW5wdXRTdHlsZSA9IHtcclxuICAgICAgICAgICAgLi4udmFsdWUsXHJcbiAgICAgICAgICAgIC4uLnRoaXMuX2lucHV0U3R5bGUsXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuICAgIC8qKiBAZGVzY3JpcHRpb24gQ29sb2NhIG8gdGV4dGFyZWEgZW0gbW9kbyBzb21lbnRlIGxlaXR1cmEuIEBkZWZhdWx0IGZhbHNlICovXHJcbiAgICBASW5wdXQoKSByZWFkT25seSA9IGZhbHNlO1xyXG5cclxuICAgIHJlbmRlclRleHRBcmVhID0gZmFsc2U7XHJcblxyXG4gICAgd3JpdGVWYWx1ZShvYmo6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMudmFsdWUgPSBvYmo7XHJcbiAgICB9XHJcblxyXG4gICAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBzdHJpbmcpID0+IHZvaWQpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLm9uQ2hhbmdlID0gZm47XHJcbiAgICB9XHJcblxyXG4gICAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xyXG4gICAgfVxyXG5cclxuICAgIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xyXG4gICAgfVxyXG5cclxuICAgIHNldFZhbHVlKHZhbHVlOiBzdHJpbmcgfCBudW1iZXIpIHtcclxuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZS50b1N0cmluZygpO1xyXG4gICAgICAgIHRoaXMud3JpdGVWYWx1ZSh0aGlzLnZhbHVlKTtcclxuICAgICAgICB0aGlzLm9uQ2hhbmdlKHRoaXMudmFsdWUpO1xyXG4gICAgICAgIHRoaXMub25Ub3VjaGVkKHRoaXMudmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIGhhbmRsZVJlY29nbml6ZWRUZXh0KHJlY29nbml6ZWRUZXh0OiBzdHJpbmcpIHtcclxuICAgICAgICB0aGlzLnNldFZhbHVlKHJlY29nbml6ZWRUZXh0KTtcclxuICAgIH1cclxufVxyXG4iLCJAaWYgKGtleUZpbHRlcikge1xyXG4gICAgPHRleHRhcmVhXHJcbiAgICAgICAgI3RleHRBcmVhXHJcbiAgICAgICAgY2xhc3M9XCJ0ZXh0YXJlYVwiXHJcbiAgICAgICAgW3BLZXlGaWx0ZXJdPVwia2V5RmlsdGVyXCJcclxuICAgICAgICBbaWRdPVwiaW5wdXRJZFwiXHJcbiAgICAgICAgW3Jvd3NdPVwicm93c1wiXHJcbiAgICAgICAgW25nTW9kZWxdPVwidmFsdWVcIlxyXG4gICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInNldFZhbHVlKCRldmVudClcIlxyXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcbiAgICAgICAgW25nU3R5bGVdPVwiaW5wdXRTdHlsZVwiXHJcbiAgICAgICAgW3JlYWRPbmx5XT1cInJlYWRPbmx5XCJcclxuICAgICAgICBbbWF4bGVuZ3RoXT1cIm1heExlbmd0aFwiXHJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyID8gcGxhY2Vob2xkZXIgOiAnJ1wiXHJcbiAgICA+PC90ZXh0YXJlYT5cclxufVxyXG5cclxuQGlmICgha2V5RmlsdGVyKSB7XHJcbiAgICA8dGV4dGFyZWFcclxuICAgICAgICAjdGV4dEFyZWFcclxuICAgICAgICBjbGFzcz1cInRleHRhcmVhXCJcclxuICAgICAgICBbaWRdPVwiaW5wdXRJZFwiXHJcbiAgICAgICAgW3Jvd3NdPVwicm93c1wiXHJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiXHJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICAgICAgICBbbmdTdHlsZV09XCJpbnB1dFN0eWxlXCJcclxuICAgICAgICBbcmVhZE9ubHldPVwicmVhZE9ubHlcIlxyXG4gICAgICAgIFttYXhsZW5ndGhdPVwibWF4TGVuZ3RoXCJcclxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXIgPyBwbGFjZWhvbGRlciA6ICcnXCJcclxuICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJzZXRWYWx1ZSgkZXZlbnQpXCJcclxuICAgID48L3RleHRhcmVhPlxyXG59XHJcblxyXG5AaWYgKHNwZWVjaFJlY29nbml0aW9uICYmIHJlbmRlclRleHRBcmVhKSB7XHJcbiAgICA8cy1zcGVlY2gtcmVjb2duaXRpb25cclxuICAgICAgICBbdGV4dEFyZWFFbGVtZW50XT1cInRleHRBcmVhRWxlbWVudC5uYXRpdmVFbGVtZW50XCJcclxuICAgICAgICBba2VlcENvbnRleHRdPVwia2VlcENvbnRleHRcIlxyXG4gICAgICAgIFtzcGVlY2hSZWNvZ25pdGlvblBsYWNlaG9sZGVyXT1cInNwZWVjaFJlY29nbml0aW9uUGxhY2Vob2xkZXJcIlxyXG4gICAgICAgIChyZWNvZ25pemVkVGV4dCk9XCJoYW5kbGVSZWNvZ25pemVkVGV4dCgkZXZlbnQpXCJcclxuICAgID5cclxuICAgIDwvcy1zcGVlY2gtcmVjb2duaXRpb24+XHJcbn1cclxuIl19
140
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1hcmVhLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy90ZXh0LWFyZWEvc3JjL2xpYi90ZXh0LWFyZWEvdGV4dC1hcmVhLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy90ZXh0LWFyZWEvc3JjL2xpYi90ZXh0LWFyZWEvdGV4dC1hcmVhLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRyxPQUFPLEVBQXdCLGlCQUFpQixFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RGLE9BQU8sRUFBb0IsU0FBUyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDaEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHVEQUF1RCxDQUFDOzs7QUFFbkc7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQkc7QUFlSCxNQUFNLE9BQU8saUJBQWlCO0lBQ1QsR0FBRyxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBRWpELFFBQVEsR0FBNEIsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO0lBQzdDLFNBQVMsR0FBNEIsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO0lBQzlDLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFDakIsS0FBSyxHQUFHLEVBQUUsQ0FBQztJQUNILGdCQUFnQixDQUE4QztJQUV0RSxJQUNXLGVBQWU7UUFDdEIsT0FBTyxJQUFJLENBQUMsZ0JBQW1ELENBQUM7SUFDcEUsQ0FBQztJQUVELElBQVcsZUFB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QUssRUFBRSxJQUFJO3lCQUNkO3FCQUNKLGNBQ1csSUFBSSxXQUNQLENBQUMsV0FBVyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsMEJBQTBCLENBQUM7OEJBWTNELGVBQWU7c0JBRHpCLFNBQVM7dUJBQUMsVUFBVSxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkFjbEMsT0FBTztzQkFBZixLQUFLO2dCQUVHLElBQUk7c0JBQVosS0FBSztnQkFFRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBRUcsU0FBUztzQkFBakIsS0FBSztnQkFFRyxXQUFXO3NCQUFuQixLQUFLO2dCQUVHLDRCQUE0QjtzQkFBcEMsS0FBSztnQkFFRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBTU8sVUFBVTtzQkFBdEIsS0FBSztnQkFVRyxRQUFRO3NCQUFoQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgZm9yd2FyZFJlZiwgSW5wdXQsIFZpZXdDaGlsZCwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiwgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEtleUZpbHRlclBhdHRlcm4sIEtleUZpbHRlciB9IGZyb20gJ3ByaW1lbmcva2V5ZmlsdGVyJztcclxuaW1wb3J0IHsgTmdTdHlsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IFNwZWVjaFJlY29nbml0aW9uQ29tcG9uZW50IH0gZnJvbSAnQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cy9zcGVlY2gtcmVjb2duaXRpb24nO1xyXG5cclxuLyoqXHJcbiAqIEBkZXNjcmlwdGlvbiBDb21wb25lbnRlIGRlIMOhcmVhIGRlIHRleHRvIGNvbSBzdXBvcnRlIGEgcmVjb25oZWNpbWVudG8gZGUgdm96LFxyXG4gKiBmaWx0cm8gZGUgdGVjbGFzLCBjb21wcmltZW50byBtw6F4aW1vIGUgaW50ZWdyYcOnw6NvIGNvbSBgQ29udHJvbFZhbHVlQWNjZXNzb3JgLlxyXG4gKiBSZW5kZXJpemEgY29uZGljaW9uYWxtZW50ZSBvIGNvbXBvbmVudGUgYFNwZWVjaFJlY29nbml0aW9uQ29tcG9uZW50YCBxdWFuZG9cclxuICogYSBmbGFnIGBzcGVlY2hSZWNvZ25pdGlvbmAgZXN0w6EgYXRpdmEuXHJcbiAqXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYGh0bWxcclxuICogPHMtdGV4dGFyZWFcclxuICogICBmb3JtQ29udHJvbE5hbWU9XCJkZXNjcmljYW9cIlxyXG4gKiAgIFtyb3dzXT1cIjZcIlxyXG4gKiAgIFttYXhMZW5ndGhdPVwiNTAwXCJcclxuICogICBwbGFjZWhvbGRlcj1cIkRpZ2l0ZSBhcXVpLi4uXCIgLz5cclxuICogYGBgXHJcbiAqXHJcbiAqIEBjYXRlZ29yeSBJbnB1dHNcclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdzLXRleHRhcmVhJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi90ZXh0LWFyZWEuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vdGV4dC1hcmVhLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBwcm92aWRlcnM6IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBUZXh0QXJlYUNvbXBvbmVudCksXHJcbiAgICAgICAgICAgIG11bHRpOiB0cnVlLFxyXG4gICAgICAgIH0sXHJcbiAgICBdLFxyXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICAgIGltcG9ydHM6IFtGb3Jtc01vZHVsZSwgS2V5RmlsdGVyLCBOZ1N0eWxlLCBTcGVlY2hSZWNvZ25pdGlvbkNvbXBvbmVudF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUZXh0QXJlYUNvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2RyID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcclxuXHJcbiAgICBvbkNoYW5nZTogKHZhbHVlOiBzdHJpbmcpID0+IHZvaWQgPSAoKSA9PiB7fTtcclxuICAgIG9uVG91Y2hlZDogKHZhbHVlOiBzdHJpbmcpID0+IHZvaWQgPSAoKSA9PiB7fTtcclxuICAgIGRpc2FibGVkID0gZmFsc2U7XHJcbiAgICB2YWx1ZSA9ICcnO1xyXG4gICAgcHJpdmF0ZSBfdGV4dEFyZWFFbGVtZW50OiBFbGVtZW50UmVmPEhUTUxUZXh0QXJlYUVsZW1lbnQ+IHwgdW5kZWZpbmVkO1xyXG5cclxuICAgIEBWaWV3Q2hpbGQoJ3RleHRBcmVhJywgeyByZWFkOiBFbGVtZW50UmVmIH0pXHJcbiAgICBwdWJsaWMgZ2V0IHRleHRBcmVhRWxlbWVudCgpOiBFbGVtZW50UmVmPEhUTUxUZXh0QXJlYUVsZW1lbnQ+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fdGV4dEFyZWFFbGVtZW50IGFzIEVsZW1lbnRSZWY8SFRNTFRleHRBcmVhRWxlbWVudD47XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHNldCB0ZXh0QXJlYUVsZW1lbnQodmFsdWU6IEVsZW1lbnRSZWY8SFRNTFRleHRBcmVhRWxlbWVudD4pIHtcclxuICAgICAgICB0aGlzLl90ZXh0QXJlYUVsZW1lbnQgPSB2YWx1ZTtcclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5yZW5kZXJUZXh0QXJlYSA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogQGRlc2NyaXB0aW9uIElkZW50aWZpY2Fkb3IgZG8gZWxlbWVudG8gYDx0ZXh0YXJlYT5gIG5vIERPTS4gQGRlZmF1bHQgJ3RleHRhcmVhLXtyYW5kb219JyAqL1xyXG4gICAgQElucHV0KCkgaW5wdXRJZCA9IGB0ZXh0YXJlYS0ke01hdGgucmFuZG9tKCl9YDtcclxuICAgIC8qKiBAZGVzY3JpcHRpb24gTsO6bWVybyBkZSBsaW5oYXMgdmlzw612ZWlzIG5vIHRleHRhcmVhLiBAZGVmYXVsdCA1ICovXHJcbiAgICBASW5wdXQoKSByb3dzID0gNTtcclxuICAgIC8qKiBAZGVzY3JpcHRpb24gSGFiaWxpdGEgbyBib3TDo28gZGUgcmVjb25oZWNpbWVudG8gZGUgdm96LiBAZGVmYXVsdCBmYWxzZSAqL1xyXG4gICAgQElucHV0KCkgc3BlZWNoUmVjb2duaXRpb24gPSBmYWxzZTtcclxuICAgIC8qKiBAZGVzY3JpcHRpb24gRmlsdHJvIGRlIHRlY2xhcyBhY2VpdGFzLCB1c2FuZG8gcGFkcsOjbyBvdSBleHByZXNzw6NvIHJlZ3VsYXIuICovXHJcbiAgICBASW5wdXQoKSBrZXlGaWx0ZXI6IFJlZ0V4cCB8IEtleUZpbHRlclBhdHRlcm4gfCBudWxsIHwgdW5kZWZpbmVkO1xyXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBRdWFuZG8gYHRydWVgLCBtYW50w6ltIG8gY29udGV4dG8gYW8gcmVpbmljaWFyIG8gcmVjb25oZWNpbWVudG8gZGUgdm96LiBAZGVmYXVsdCBmYWxzZSAqL1xyXG4gICAgQElucHV0KCkga2VlcENvbnRleHQgPSBmYWxzZTtcclxuICAgIC8qKiBAZGVzY3JpcHRpb24gUGxhY2Vob2xkZXIgZXhpYmlkbyBkdXJhbnRlIG8gcmVjb25oZWNpbWVudG8gZGUgdm96LiBAZGVmYXVsdCAnJyAqL1xyXG4gICAgQElucHV0KCkgc3BlZWNoUmVjb2duaXRpb25QbGFjZWhvbGRlciA9ICcnO1xyXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBOw7ptZXJvIG3DoXhpbW8gZGUgY2FyYWN0ZXJlcyBhY2VpdG9zLiBAZGVmYXVsdCBudWxsIChpbGltaXRhZG8pICovXHJcbiAgICBASW5wdXQoKSBtYXhMZW5ndGg6IG51bWJlciB8IG51bGwgPSBudWxsO1xyXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBUZXh0byBleGliaWRvIHF1YW5kbyBvIGNhbXBvIGVzdMOhIHZhemlvLiAqL1xyXG4gICAgQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZyB8IHVuZGVmaW5lZDtcclxuXHJcbiAgICBwcml2YXRlIF9pbnB1dFN0eWxlOiBQYXJ0aWFsPENTU1N0eWxlRGVjbGFyYXRpb24+ID0ge1xyXG4gICAgICAgIHJlc2l6ZTogJ3ZlcnRpY2FsJyxcclxuICAgIH07XHJcbiAgICAvKiogQGRlc2NyaXB0aW9uIEVzdGlsb3MgaW5saW5lIGFwbGljYWRvcyBhbyBlbGVtZW50byBgPHRleHRhcmVhPmAgaW50ZXJuby4gQGRlZmF1bHQgYHsgcmVzaXplOiAndmVydGljYWwnIH1gICovXHJcbiAgICBASW5wdXQoKSBnZXQgaW5wdXRTdHlsZSgpOiBQYXJ0aWFsPENTU1N0eWxlRGVjbGFyYXRpb24+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5faW5wdXRTdHlsZTtcclxuICAgIH1cclxuICAgIHNldCBpbnB1dFN0eWxlKHZhbHVlOiBQYXJ0aWFsPENTU1N0eWxlRGVjbGFyYXRpb24+KSB7XHJcbiAgICAgICAgdGhpcy5faW5wdXRTdHlsZSA9IHtcclxuICAgICAgICAgICAgLi4udmFsdWUsXHJcbiAgICAgICAgICAgIC4uLnRoaXMuX2lucHV0U3R5bGUsXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuICAgIC8qKiBAZGVzY3JpcHRpb24gQ29sb2NhIG8gdGV4dGFyZWEgZW0gbW9kbyBzb21lbnRlIGxlaXR1cmEuIEBkZWZhdWx0IGZhbHNlICovXHJcbiAgICBASW5wdXQoKSByZWFkT25seSA9IGZhbHNlO1xyXG5cclxuICAgIHJlbmRlclRleHRBcmVhID0gZmFsc2U7XHJcblxyXG4gICAgd3JpdGVWYWx1ZShvYmo6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMudmFsdWUgPSBvYmo7XHJcbiAgICB9XHJcblxyXG4gICAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBzdHJpbmcpID0+IHZvaWQpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLm9uQ2hhbmdlID0gZm47XHJcbiAgICB9XHJcblxyXG4gICAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xyXG4gICAgfVxyXG5cclxuICAgIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xyXG4gICAgfVxyXG5cclxuICAgIHNldFZhbHVlKHZhbHVlOiBzdHJpbmcgfCBudW1iZXIpIHtcclxuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZS50b1N0cmluZygpO1xyXG4gICAgICAgIHRoaXMud3JpdGVWYWx1ZSh0aGlzLnZhbHVlKTtcclxuICAgICAgICB0aGlzLm9uQ2hhbmdlKHRoaXMudmFsdWUpO1xyXG4gICAgICAgIHRoaXMub25Ub3VjaGVkKHRoaXMudmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIGhhbmRsZVJlY29nbml6ZWRUZXh0KHJlY29nbml6ZWRUZXh0OiBzdHJpbmcpIHtcclxuICAgICAgICB0aGlzLnNldFZhbHVlKHJlY29nbml6ZWRUZXh0KTtcclxuICAgIH1cclxufVxyXG4iLCJAaWYgKGtleUZpbHRlcikge1xyXG4gICAgPHRleHRhcmVhXHJcbiAgICAgICAgI3RleHRBcmVhXHJcbiAgICAgICAgY2xhc3M9XCJ0ZXh0YXJlYVwiXHJcbiAgICAgICAgW3BLZXlGaWx0ZXJdPVwia2V5RmlsdGVyXCJcclxuICAgICAgICBbaWRdPVwiaW5wdXRJZFwiXHJcbiAgICAgICAgW3Jvd3NdPVwicm93c1wiXHJcbiAgICAgICAgW25nTW9kZWxdPVwidmFsdWVcIlxyXG4gICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInNldFZhbHVlKCRldmVudClcIlxyXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcbiAgICAgICAgW25nU3R5bGVdPVwiaW5wdXRTdHlsZVwiXHJcbiAgICAgICAgW3JlYWRPbmx5XT1cInJlYWRPbmx5XCJcclxuICAgICAgICBbbWF4bGVuZ3RoXT1cIm1heExlbmd0aFwiXHJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyID8gcGxhY2Vob2xkZXIgOiAnJ1wiXHJcbiAgICA+PC90ZXh0YXJlYT5cclxufVxyXG5cclxuQGlmICgha2V5RmlsdGVyKSB7XHJcbiAgICA8dGV4dGFyZWFcclxuICAgICAgICAjdGV4dEFyZWFcclxuICAgICAgICBjbGFzcz1cInRleHRhcmVhXCJcclxuICAgICAgICBbaWRdPVwiaW5wdXRJZFwiXHJcbiAgICAgICAgW3Jvd3NdPVwicm93c1wiXHJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiXHJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICAgICAgICBbbmdTdHlsZV09XCJpbnB1dFN0eWxlXCJcclxuICAgICAgICBbcmVhZE9ubHldPVwicmVhZE9ubHlcIlxyXG4gICAgICAgIFttYXhsZW5ndGhdPVwibWF4TGVuZ3RoXCJcclxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXIgPyBwbGFjZWhvbGRlciA6ICcnXCJcclxuICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJzZXRWYWx1ZSgkZXZlbnQpXCJcclxuICAgID48L3RleHRhcmVhPlxyXG59XHJcblxyXG5AaWYgKHNwZWVjaFJlY29nbml0aW9uICYmIHJlbmRlclRleHRBcmVhKSB7XHJcbiAgICA8cy1zcGVlY2gtcmVjb2duaXRpb25cclxuICAgICAgICBbdGV4dEFyZWFFbGVtZW50XT1cInRleHRBcmVhRWxlbWVudC5uYXRpdmVFbGVtZW50XCJcclxuICAgICAgICBba2VlcENvbnRleHRdPVwia2VlcENvbnRleHRcIlxyXG4gICAgICAgIFtzcGVlY2hSZWNvZ25pdGlvblBsYWNlaG9sZGVyXT1cInNwZWVjaFJlY29nbml0aW9uUGxhY2Vob2xkZXJcIlxyXG4gICAgICAgIFtkaXNhYmxlZFNwZWVjaFJlY29nbml0aW9uXT1cImRpc2FibGVkXCJcclxuICAgICAgICAocmVjb2duaXplZFRleHQpPVwiaGFuZGxlUmVjb2duaXplZFRleHQoJGV2ZW50KVwiXHJcbiAgICAvPlxyXG5cclxufVxyXG4iXX0=
@@ -26,6 +26,8 @@ export class TokenListComponent {
26
26
  removableTokens = false;
27
27
  /** @description Quando `true`, remove os eventos de ponteiro (hover/clique) dos tokens. @default false */
28
28
  hidePointerEvents = false;
29
+ /** @description Classe do ícone do botão de remover token. @default 'far fa-times' */
30
+ removeIconClass = 'far fa-times';
29
31
  /** @description Emitido quando o usuário clica em um token não desabilitado. */
30
32
  tokenSelected = new EventEmitter();
31
33
  /** @description Emitido quando o usuário remove um token não desabilitado. */
@@ -41,11 +43,11 @@ export class TokenListComponent {
41
43
  }
42
44
  }
43
45
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TokenListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
44
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: TokenListComponent, isStandalone: true, selector: "s-token-list", inputs: { id: "id", tokens: "tokens", removableTokens: "removableTokens", hidePointerEvents: "hidePointerEvents" }, outputs: { tokenSelected: "tokenSelected", tokenRemoved: "tokenRemoved" }, ngImport: i0, template: "<div\n [id]=\"id\"\n class=\"token-list\"\n>\n @for (token of tokens; track $index) {\n <span\n [id]=\"token.id\"\n class=\"token\"\n [ngClass]=\"{\n 'no-pointer-events': hidePointerEvents,\n 'token--disabled': token.disabled,\n }\"\n >\n <a\n [id]=\"(token.id || 'token') + '-label'\"\n class=\"token-label\"\n (click)=\"onTokenSelected(token)\"\n >\n {{ token.label }}\n </a>\n @if (removableTokens && !token.notRemovable) {\n <span\n [id]=\"token.id + '-remove'\"\n class=\"far fa-times\"\n (click)=\"onTokenRemoved(token)\"\n >\n </span>\n }\n </span>\n }\n</div>\n", styles: [".no-pointer-events{pointer-events:none}.token-list{align-items:center;display:inline-flex;flex-wrap:wrap;max-width:100%;padding:0 10px;text-transform:none}.token-list .token{align-items:center;background-color:#e5eaea;border:1px solid #697882;border-radius:4px;color:#212533;display:flex;font:400 12px/150% Open Sans,sans-serif;gap:8px;margin:2px 5px 0 0;max-width:100%;padding:2px 8px;-webkit-user-select:none;user-select:none}.token-list .token-label{max-width:50ch;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.token-list .token:not(.token--disabled):hover,.token-list .token:not(.token--disabled):focus{background-color:#ccc}.token-list .token a{text-decoration:none;color:#212533}.token-list .token--disabled{opacity:50%}.token-list .token--disabled a{cursor:default}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
46
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: TokenListComponent, isStandalone: true, selector: "s-token-list", inputs: { id: "id", tokens: "tokens", removableTokens: "removableTokens", hidePointerEvents: "hidePointerEvents", removeIconClass: "removeIconClass" }, outputs: { tokenSelected: "tokenSelected", tokenRemoved: "tokenRemoved" }, ngImport: i0, template: "<div\n [id]=\"id\"\n class=\"token-list\"\n>\n @for (token of tokens; track $index) {\n <span\n [id]=\"token.id\"\n class=\"token\"\n [ngClass]=\"{\n 'no-pointer-events': hidePointerEvents,\n 'token--disabled': token.disabled,\n }\"\n >\n <a\n [id]=\"(token.id || 'token') + '-label'\"\n class=\"token-label\"\n (click)=\"onTokenSelected(token)\"\n >\n {{ token.label }}\n </a>\n @if (removableTokens && !token.notRemovable) {\n <span\n [id]=\"token.id + '-remove'\"\n [class]=\"removeIconClass\"\n (click)=\"onTokenRemoved(token)\"\n >\n </span>\n }\n </span>\n }\n</div>\n", styles: [".no-pointer-events{pointer-events:none}.token-list{align-items:center;display:inline-flex;flex-wrap:wrap;max-width:100%;padding:0 10px;text-transform:none}.token-list .token{align-items:center;background-color:#e5eaea;border:1px solid #697882;border-radius:4px;color:#212533;display:flex;font:400 12px/150% Open Sans,sans-serif;gap:8px;margin:2px 5px 0 0;max-width:100%;padding:2px 8px;-webkit-user-select:none;user-select:none}.token-list .token-label{max-width:50ch;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.token-list .token:not(.token--disabled):hover,.token-list .token:not(.token--disabled):focus{background-color:#ccc}.token-list .token a{text-decoration:none;color:#212533}.token-list .token--disabled{opacity:50%}.token-list .token--disabled a{cursor:default}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
45
47
  }
46
48
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TokenListComponent, decorators: [{
47
49
  type: Component,
48
- args: [{ selector: 's-token-list', standalone: true, imports: [NgClass], template: "<div\n [id]=\"id\"\n class=\"token-list\"\n>\n @for (token of tokens; track $index) {\n <span\n [id]=\"token.id\"\n class=\"token\"\n [ngClass]=\"{\n 'no-pointer-events': hidePointerEvents,\n 'token--disabled': token.disabled,\n }\"\n >\n <a\n [id]=\"(token.id || 'token') + '-label'\"\n class=\"token-label\"\n (click)=\"onTokenSelected(token)\"\n >\n {{ token.label }}\n </a>\n @if (removableTokens && !token.notRemovable) {\n <span\n [id]=\"token.id + '-remove'\"\n class=\"far fa-times\"\n (click)=\"onTokenRemoved(token)\"\n >\n </span>\n }\n </span>\n }\n</div>\n", styles: [".no-pointer-events{pointer-events:none}.token-list{align-items:center;display:inline-flex;flex-wrap:wrap;max-width:100%;padding:0 10px;text-transform:none}.token-list .token{align-items:center;background-color:#e5eaea;border:1px solid #697882;border-radius:4px;color:#212533;display:flex;font:400 12px/150% Open Sans,sans-serif;gap:8px;margin:2px 5px 0 0;max-width:100%;padding:2px 8px;-webkit-user-select:none;user-select:none}.token-list .token-label{max-width:50ch;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.token-list .token:not(.token--disabled):hover,.token-list .token:not(.token--disabled):focus{background-color:#ccc}.token-list .token a{text-decoration:none;color:#212533}.token-list .token--disabled{opacity:50%}.token-list .token--disabled a{cursor:default}\n"] }]
50
+ args: [{ selector: 's-token-list', standalone: true, imports: [NgClass], template: "<div\n [id]=\"id\"\n class=\"token-list\"\n>\n @for (token of tokens; track $index) {\n <span\n [id]=\"token.id\"\n class=\"token\"\n [ngClass]=\"{\n 'no-pointer-events': hidePointerEvents,\n 'token--disabled': token.disabled,\n }\"\n >\n <a\n [id]=\"(token.id || 'token') + '-label'\"\n class=\"token-label\"\n (click)=\"onTokenSelected(token)\"\n >\n {{ token.label }}\n </a>\n @if (removableTokens && !token.notRemovable) {\n <span\n [id]=\"token.id + '-remove'\"\n [class]=\"removeIconClass\"\n (click)=\"onTokenRemoved(token)\"\n >\n </span>\n }\n </span>\n }\n</div>\n", styles: [".no-pointer-events{pointer-events:none}.token-list{align-items:center;display:inline-flex;flex-wrap:wrap;max-width:100%;padding:0 10px;text-transform:none}.token-list .token{align-items:center;background-color:#e5eaea;border:1px solid #697882;border-radius:4px;color:#212533;display:flex;font:400 12px/150% Open Sans,sans-serif;gap:8px;margin:2px 5px 0 0;max-width:100%;padding:2px 8px;-webkit-user-select:none;user-select:none}.token-list .token-label{max-width:50ch;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.token-list .token:not(.token--disabled):hover,.token-list .token:not(.token--disabled):focus{background-color:#ccc}.token-list .token a{text-decoration:none;color:#212533}.token-list .token--disabled{opacity:50%}.token-list .token--disabled a{cursor:default}\n"] }]
49
51
  }], propDecorators: { id: [{
50
52
  type: Input
51
53
  }], tokens: [{
@@ -55,9 +57,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
55
57
  type: Input
56
58
  }], hidePointerEvents: [{
57
59
  type: Input
60
+ }], removeIconClass: [{
61
+ type: Input
58
62
  }], tokenSelected: [{
59
63
  type: Output
60
64
  }], tokenRemoved: [{
61
65
  type: Output
62
66
  }] } });
63
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW4tbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvdG9rZW4tbGlzdC9zcmMvbGliL3Rva2VuLWxpc3QvdG9rZW4tbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvdG9rZW4tbGlzdC9zcmMvbGliL3Rva2VuLWxpc3QvdG9rZW4tbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFJdkU7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFRSCxNQUFNLE9BQU8sa0JBQWtCO0lBQ3BCLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBRXpCLHNHQUFzRztJQUUvRixFQUFFLEdBQUcsZ0JBQWdCLGtCQUFrQixDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUM7SUFFMUQsZ0VBQWdFO0lBRXpELE1BQU0sQ0FBWTtJQUV6QiwwRUFBMEU7SUFFbkUsZUFBZSxHQUFHLEtBQUssQ0FBQztJQUUvQiwwR0FBMEc7SUFFbkcsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO0lBRWpDLGdGQUFnRjtJQUV6RSxhQUFhLEdBQXlCLElBQUksWUFBWSxFQUFFLENBQUM7SUFFaEUsOEVBQThFO0lBRXZFLFlBQVksR0FBeUIsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUV4RCxlQUFlLENBQUMsS0FBYTtRQUNoQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2xCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ25DLENBQUM7SUFDTCxDQUFDO0lBRU0sY0FBYyxDQUFDLEtBQWE7UUFDL0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNsQyxDQUFDO0lBQ0wsQ0FBQzt3R0FyQ1Esa0JBQWtCOzRGQUFsQixrQkFBa0IsdVFDM0IvQiwrM0JBK0JBLDYwQkROYyxPQUFPOzs0RkFFUixrQkFBa0I7a0JBUDlCLFNBQVM7K0JBQ0ksY0FBYyxjQUdaLElBQUksV0FDUCxDQUFDLE9BQU8sQ0FBQzs4QkFPWCxFQUFFO3NCQURSLEtBQUs7Z0JBS0MsTUFBTTtzQkFEWixLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtnQkFLbEIsZUFBZTtzQkFEckIsS0FBSztnQkFLQyxpQkFBaUI7c0JBRHZCLEtBQUs7Z0JBS0MsYUFBYTtzQkFEbkIsTUFBTTtnQkFLQSxZQUFZO3NCQURsQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdDbGFzcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBJVG9rZW4gfSBmcm9tICcuL21vZGVscy90b2tlbic7XHJcblxyXG4vKipcclxuICogQGRlc2NyaXB0aW9uIENvbXBvbmVudGUgZGUgbGlzdGEgZGUgdG9rZW5zIChldGlxdWV0YXMpIGNsaWPDoXZlaXMgZSBvcGNpb25hbG1lbnRlXHJcbiAqIHJlbW92w612ZWlzLiBFbWl0ZSBldmVudG9zIGFvIHNlbGVjaW9uYXIgb3UgcmVtb3ZlciB1bSB0b2tlbi5cclxuICpcclxuICogQGV4YW1wbGVcclxuICogYGBgaHRtbFxyXG4gKiA8cy10b2tlbi1saXN0XHJcbiAqICAgW3Rva2Vuc109XCJsaXN0YURlVG9rZW5zXCJcclxuICogICBbcmVtb3ZhYmxlVG9rZW5zXT1cInRydWVcIlxyXG4gKiAgICh0b2tlblNlbGVjdGVkKT1cIm9uVG9rZW5TZWxlY2lvbmFkbygkZXZlbnQpXCJcclxuICogICAodG9rZW5SZW1vdmVkKT1cIm9uVG9rZW5SZW1vdmlkbygkZXZlbnQpXCIgLz5cclxuICogYGBgXHJcbiAqXHJcbiAqIEBjYXRlZ29yeSBTdW1tYXJ5XHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAncy10b2tlbi1saXN0JyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi90b2tlbi1saXN0LmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL3Rva2VuLWxpc3QuY29tcG9uZW50LnNjc3MnXSxcclxuICAgIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgICBpbXBvcnRzOiBbTmdDbGFzc10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUb2tlbkxpc3RDb21wb25lbnQge1xyXG4gICAgcHVibGljIHN0YXRpYyBuZXh0SWQgPSAwO1xyXG5cclxuICAgIC8qKiBAZGVzY3JpcHRpb24gSWRlbnRpZmljYWRvciDDum5pY28gZG8gY29tcG9uZW50ZSBubyBET00uIEdlcmFkbyBhdXRvbWF0aWNhbWVudGUgc2UgbsOjbyBpbmZvcm1hZG8uICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGlkID0gYHMtdG9rZW4tbGlzdC0ke1Rva2VuTGlzdENvbXBvbmVudC5uZXh0SWQrK31gO1xyXG5cclxuICAgIC8qKiBAZGVzY3JpcHRpb24gTGlzdGEgZGUgdG9rZW5zIGV4aWJpZG9zLiBDYW1wbyBvYnJpZ2F0w7NyaW8uICovXHJcbiAgICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KVxyXG4gICAgcHVibGljIHRva2VucyE6IElUb2tlbltdO1xyXG5cclxuICAgIC8qKiBAZGVzY3JpcHRpb24gRXhpYmUgbyBib3TDo28gZGUgcmVtb8Onw6NvIGVtIGNhZGEgdG9rZW4uIEBkZWZhdWx0IGZhbHNlICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIHJlbW92YWJsZVRva2VucyA9IGZhbHNlO1xyXG5cclxuICAgIC8qKiBAZGVzY3JpcHRpb24gUXVhbmRvIGB0cnVlYCwgcmVtb3ZlIG9zIGV2ZW50b3MgZGUgcG9udGVpcm8gKGhvdmVyL2NsaXF1ZSkgZG9zIHRva2Vucy4gQGRlZmF1bHQgZmFsc2UgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgaGlkZVBvaW50ZXJFdmVudHMgPSBmYWxzZTtcclxuXHJcbiAgICAvKiogQGRlc2NyaXB0aW9uIEVtaXRpZG8gcXVhbmRvIG8gdXN1w6FyaW8gY2xpY2EgZW0gdW0gdG9rZW4gbsOjbyBkZXNhYmlsaXRhZG8uICovXHJcbiAgICBAT3V0cHV0KClcclxuICAgIHB1YmxpYyB0b2tlblNlbGVjdGVkOiBFdmVudEVtaXR0ZXI8SVRva2VuPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgICAvKiogQGRlc2NyaXB0aW9uIEVtaXRpZG8gcXVhbmRvIG8gdXN1w6FyaW8gcmVtb3ZlIHVtIHRva2VuIG7Do28gZGVzYWJpbGl0YWRvLiAqL1xyXG4gICAgQE91dHB1dCgpXHJcbiAgICBwdWJsaWMgdG9rZW5SZW1vdmVkOiBFdmVudEVtaXR0ZXI8SVRva2VuPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgICBwdWJsaWMgb25Ub2tlblNlbGVjdGVkKHRva2VuOiBJVG9rZW4pOiB2b2lkIHtcclxuICAgICAgICBpZiAoIXRva2VuLmRpc2FibGVkKSB7XHJcbiAgICAgICAgICAgIHRoaXMudG9rZW5TZWxlY3RlZC5uZXh0KHRva2VuKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG9uVG9rZW5SZW1vdmVkKHRva2VuOiBJVG9rZW4pOiB2b2lkIHtcclxuICAgICAgICBpZiAoIXRva2VuLmRpc2FibGVkKSB7XHJcbiAgICAgICAgICAgIHRoaXMudG9rZW5SZW1vdmVkLm5leHQodG9rZW4pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iLCI8ZGl2XG4gICAgW2lkXT1cImlkXCJcbiAgICBjbGFzcz1cInRva2VuLWxpc3RcIlxuPlxuICAgIEBmb3IgKHRva2VuIG9mIHRva2VuczsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgICBbaWRdPVwidG9rZW4uaWRcIlxuICAgICAgICAgICAgY2xhc3M9XCJ0b2tlblwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgJ25vLXBvaW50ZXItZXZlbnRzJzogaGlkZVBvaW50ZXJFdmVudHMsXG4gICAgICAgICAgICAgICAgJ3Rva2VuLS1kaXNhYmxlZCc6IHRva2VuLmRpc2FibGVkLFxuICAgICAgICAgICAgfVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgW2lkXT1cIih0b2tlbi5pZCB8fCAndG9rZW4nKSArICctbGFiZWwnXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInRva2VuLWxhYmVsXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib25Ub2tlblNlbGVjdGVkKHRva2VuKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3sgdG9rZW4ubGFiZWwgfX1cbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgIEBpZiAocmVtb3ZhYmxlVG9rZW5zICYmICF0b2tlbi5ub3RSZW1vdmFibGUpIHtcbiAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICBbaWRdPVwidG9rZW4uaWQgKyAnLXJlbW92ZSdcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZhciBmYS10aW1lc1wiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvblRva2VuUmVtb3ZlZCh0b2tlbilcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvc3Bhbj5cbiAgICB9XG48L2Rpdj5cbiJdfQ==
67
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW4tbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvdG9rZW4tbGlzdC9zcmMvbGliL3Rva2VuLWxpc3QvdG9rZW4tbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvdG9rZW4tbGlzdC9zcmMvbGliL3Rva2VuLWxpc3QvdG9rZW4tbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFJdkU7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFRSCxNQUFNLE9BQU8sa0JBQWtCO0lBQ3BCLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBRXpCLHNHQUFzRztJQUUvRixFQUFFLEdBQUcsZ0JBQWdCLGtCQUFrQixDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUM7SUFFMUQsZ0VBQWdFO0lBRXpELE1BQU0sQ0FBWTtJQUV6QiwwRUFBMEU7SUFFbkUsZUFBZSxHQUFHLEtBQUssQ0FBQztJQUUvQiwwR0FBMEc7SUFFbkcsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO0lBRWpDLHNGQUFzRjtJQUUvRSxlQUFlLEdBQUcsY0FBYyxDQUFDO0lBRXhDLGdGQUFnRjtJQUV6RSxhQUFhLEdBQXlCLElBQUksWUFBWSxFQUFFLENBQUM7SUFFaEUsOEVBQThFO0lBRXZFLFlBQVksR0FBeUIsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUV4RCxlQUFlLENBQUMsS0FBYTtRQUNoQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2xCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ25DLENBQUM7SUFDTCxDQUFDO0lBRU0sY0FBYyxDQUFDLEtBQWE7UUFDL0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNsQyxDQUFDO0lBQ0wsQ0FBQzt3R0F6Q1Esa0JBQWtCOzRGQUFsQixrQkFBa0IsMlNDM0IvQixvNEJBK0JBLDYwQkROYyxPQUFPOzs0RkFFUixrQkFBa0I7a0JBUDlCLFNBQVM7K0JBQ0ksY0FBYyxjQUdaLElBQUksV0FDUCxDQUFDLE9BQU8sQ0FBQzs4QkFPWCxFQUFFO3NCQURSLEtBQUs7Z0JBS0MsTUFBTTtzQkFEWixLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtnQkFLbEIsZUFBZTtzQkFEckIsS0FBSztnQkFLQyxpQkFBaUI7c0JBRHZCLEtBQUs7Z0JBS0MsZUFBZTtzQkFEckIsS0FBSztnQkFLQyxhQUFhO3NCQURuQixNQUFNO2dCQUtBLFlBQVk7c0JBRGxCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ0NsYXNzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IElUb2tlbiB9IGZyb20gJy4vbW9kZWxzL3Rva2VuJztcclxuXHJcbi8qKlxyXG4gKiBAZGVzY3JpcHRpb24gQ29tcG9uZW50ZSBkZSBsaXN0YSBkZSB0b2tlbnMgKGV0aXF1ZXRhcykgY2xpY8OhdmVpcyBlIG9wY2lvbmFsbWVudGVcclxuICogcmVtb3bDrXZlaXMuIEVtaXRlIGV2ZW50b3MgYW8gc2VsZWNpb25hciBvdSByZW1vdmVyIHVtIHRva2VuLlxyXG4gKlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGBodG1sXHJcbiAqIDxzLXRva2VuLWxpc3RcclxuICogICBbdG9rZW5zXT1cImxpc3RhRGVUb2tlbnNcIlxyXG4gKiAgIFtyZW1vdmFibGVUb2tlbnNdPVwidHJ1ZVwiXHJcbiAqICAgKHRva2VuU2VsZWN0ZWQpPVwib25Ub2tlblNlbGVjaW9uYWRvKCRldmVudClcIlxyXG4gKiAgICh0b2tlblJlbW92ZWQpPVwib25Ub2tlblJlbW92aWRvKCRldmVudClcIiAvPlxyXG4gKiBgYGBcclxuICpcclxuICogQGNhdGVnb3J5IFN1bW1hcnlcclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdzLXRva2VuLWxpc3QnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL3Rva2VuLWxpc3QuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vdG9rZW4tbGlzdC5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICAgIGltcG9ydHM6IFtOZ0NsYXNzXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFRva2VuTGlzdENvbXBvbmVudCB7XHJcbiAgICBwdWJsaWMgc3RhdGljIG5leHRJZCA9IDA7XHJcblxyXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBJZGVudGlmaWNhZG9yIMO6bmljbyBkbyBjb21wb25lbnRlIG5vIERPTS4gR2VyYWRvIGF1dG9tYXRpY2FtZW50ZSBzZSBuw6NvIGluZm9ybWFkby4gKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgaWQgPSBgcy10b2tlbi1saXN0LSR7VG9rZW5MaXN0Q29tcG9uZW50Lm5leHRJZCsrfWA7XHJcblxyXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBMaXN0YSBkZSB0b2tlbnMgZXhpYmlkb3MuIENhbXBvIG9icmlnYXTDs3Jpby4gKi9cclxuICAgIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pXHJcbiAgICBwdWJsaWMgdG9rZW5zITogSVRva2VuW107XHJcblxyXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBFeGliZSBvIGJvdMOjbyBkZSByZW1vw6fDo28gZW0gY2FkYSB0b2tlbi4gQGRlZmF1bHQgZmFsc2UgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgcmVtb3ZhYmxlVG9rZW5zID0gZmFsc2U7XHJcblxyXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBRdWFuZG8gYHRydWVgLCByZW1vdmUgb3MgZXZlbnRvcyBkZSBwb250ZWlybyAoaG92ZXIvY2xpcXVlKSBkb3MgdG9rZW5zLiBAZGVmYXVsdCBmYWxzZSAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBoaWRlUG9pbnRlckV2ZW50cyA9IGZhbHNlO1xyXG5cclxuICAgIC8qKiBAZGVzY3JpcHRpb24gQ2xhc3NlIGRvIMOtY29uZSBkbyBib3TDo28gZGUgcmVtb3ZlciB0b2tlbi4gQGRlZmF1bHQgJ2ZhciBmYS10aW1lcycgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgcmVtb3ZlSWNvbkNsYXNzID0gJ2ZhciBmYS10aW1lcyc7XHJcblxyXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBFbWl0aWRvIHF1YW5kbyBvIHVzdcOhcmlvIGNsaWNhIGVtIHVtIHRva2VuIG7Do28gZGVzYWJpbGl0YWRvLiAqL1xyXG4gICAgQE91dHB1dCgpXHJcbiAgICBwdWJsaWMgdG9rZW5TZWxlY3RlZDogRXZlbnRFbWl0dGVyPElUb2tlbj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBFbWl0aWRvIHF1YW5kbyBvIHVzdcOhcmlvIHJlbW92ZSB1bSB0b2tlbiBuw6NvIGRlc2FiaWxpdGFkby4gKi9cclxuICAgIEBPdXRwdXQoKVxyXG4gICAgcHVibGljIHRva2VuUmVtb3ZlZDogRXZlbnRFbWl0dGVyPElUb2tlbj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gICAgcHVibGljIG9uVG9rZW5TZWxlY3RlZCh0b2tlbjogSVRva2VuKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCF0b2tlbi5kaXNhYmxlZCkge1xyXG4gICAgICAgICAgICB0aGlzLnRva2VuU2VsZWN0ZWQubmV4dCh0b2tlbik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBvblRva2VuUmVtb3ZlZCh0b2tlbjogSVRva2VuKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCF0b2tlbi5kaXNhYmxlZCkge1xyXG4gICAgICAgICAgICB0aGlzLnRva2VuUmVtb3ZlZC5uZXh0KHRva2VuKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuIiwiPGRpdlxuICAgIFtpZF09XCJpZFwiXG4gICAgY2xhc3M9XCJ0b2tlbi1saXN0XCJcbj5cbiAgICBAZm9yICh0b2tlbiBvZiB0b2tlbnM7IHRyYWNrICRpbmRleCkge1xuICAgICAgICA8c3BhblxuICAgICAgICAgICAgW2lkXT1cInRva2VuLmlkXCJcbiAgICAgICAgICAgIGNsYXNzPVwidG9rZW5cIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICduby1wb2ludGVyLWV2ZW50cyc6IGhpZGVQb2ludGVyRXZlbnRzLFxuICAgICAgICAgICAgICAgICd0b2tlbi0tZGlzYWJsZWQnOiB0b2tlbi5kaXNhYmxlZCxcbiAgICAgICAgICAgIH1cIlxuICAgICAgICA+XG4gICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgIFtpZF09XCIodG9rZW4uaWQgfHwgJ3Rva2VuJykgKyAnLWxhYmVsJ1wiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ0b2tlbi1sYWJlbFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uVG9rZW5TZWxlY3RlZCh0b2tlbilcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7IHRva2VuLmxhYmVsIH19XG4gICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICBAaWYgKHJlbW92YWJsZVRva2VucyAmJiAhdG9rZW4ubm90UmVtb3ZhYmxlKSB7XG4gICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgW2lkXT1cInRva2VuLmlkICsgJy1yZW1vdmUnXCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cInJlbW92ZUljb25DbGFzc1wiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvblRva2VuUmVtb3ZlZCh0b2tlbilcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvc3Bhbj5cbiAgICB9XG48L2Rpdj5cbiJdfQ==
@@ -165,7 +165,8 @@ export class TooltipDirective {
165
165
  });
166
166
  }
167
167
  _createTooltip(useShowDelay = false, autoDestroy = true) {
168
- const tooltipText = this.tooltip() ?? '';
168
+ const tooltipValue = this.tooltip();
169
+ const tooltipText = tooltipValue === undefined || tooltipValue === null ? '' : String(tooltipValue);
169
170
  if (!tooltipText.length || this.overlayRef !== null)
170
171
  return;
171
172
  if (this.checkTruncatedText() && !this.contentIsTruncated)
@@ -274,4 +275,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
274
275
  type: HostListener,
275
276
  args: ['touchend']
276
277
  }] } });
277
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvdG9vbHRpcC9zcmMvbGliL3Rvb2x0aXAvdG9vbHRpcC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF3RCxPQUFPLEVBQWMsTUFBTSxzQkFBc0IsQ0FBQztBQUNqSCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUVILFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUdaLFNBQVMsRUFDVCxNQUFNLEVBQ04sS0FBSyxHQUNSLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUkxRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7QUFFdkQ7Ozs7Ozs7Ozs7O0dBV0c7QUFLSCxNQUFNLE9BQU8sZ0JBQWdCO0lBQ3pCOztPQUVHO0lBQ2EsT0FBTyxHQUFHLEtBQUssQ0FBcUIsU0FBUyxFQUFFLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7SUFFdEY7Ozs7O09BS0c7SUFDYSxlQUFlLEdBQUcsS0FBSyxDQUFtQixLQUFLLENBQUMsQ0FBQztJQUVqRTs7OztPQUlHO0lBQ2EsU0FBUyxHQUFHLEtBQUssQ0FBUyxHQUFHLENBQUMsQ0FBQztJQUUvQzs7O09BR0c7SUFDYSxXQUFXLEdBQUcsS0FBSyxDQUFxQixTQUFTLENBQUMsQ0FBQztJQUVuRTs7Ozs7OztPQU9HO0lBQ2EsWUFBWSxHQUFHLEtBQUssQ0FBZSxPQUFPLENBQUMsQ0FBQztJQUU1RDs7OztPQUlHO0lBQ2EsTUFBTSxHQUFHLEtBQUssQ0FBVSxLQUFLLENBQUMsQ0FBQztJQUUvQzs7Ozs7T0FLRztJQUNhLE9BQU8sR0FBRyxLQUFLLENBQVUsSUFBSSxDQUFD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QUFDLFNBQVM7Z0JBWWhCLE9BQU87c0JBRGIsWUFBWTt1QkFBQyxPQUFPO2dCQVFkLE1BQU07c0JBRFosWUFBWTt1QkFBQyxNQUFNO2dCQVFiLFlBQVk7c0JBRGxCLFlBQVk7dUJBQUMsWUFBWTtnQkFTbkIsWUFBWTtzQkFGbEIsWUFBWTt1QkFBQyxZQUFZOztzQkFDekIsWUFBWTt1QkFBQyxPQUFPO2dCQVFkLFlBQVk7c0JBRGxCLFlBQVk7dUJBQUMsWUFBWTtnQkFZbkIsVUFBVTtzQkFEaEIsWUFBWTt1QkFBQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29ubmVjdGVkUG9zaXRpb24sIEZsZXhpYmxlQ29ubmVjdGVkUG9zaXRpb25TdHJhdGVneSwgT3ZlcmxheSwgT3ZlcmxheVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IENvbXBvbmVudFBvcnRhbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHtcbiAgICBDb21wb25lbnRSZWYsXG4gICAgRGlyZWN0aXZlLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgUmVuZGVyZXIyLFxuICAgIGluamVjdCxcbiAgICBpbnB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IERlYm91bmNlVXRpbHMgfSBmcm9tICdAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzL2NvbW1vbic7XG5pbXBvcnQgeyBNb2JpbGVCZWhhdmlvciB9IGZyb20gJy4vbW9kZWxzL21vYmlsZS1iZWhhdmlvcic7XG5pbXBvcnQgeyBUb29sdGlwRXZlbnQgfSBmcm9tICcuL21vZGVscy90b29sdGlwLWV2ZW50JztcbmltcG9ydCB7IFRvb2x0aXBQb3NpdGlvbnMgfSBmcm9tICcuL21vZGVscy90b29sdGlwLXBvc2l0aW9uJztcbmltcG9ydCB7IFRvb2x0aXBDb21wb25lbnQgfSBmcm9tICcuL3Rvb2x0aXAuY29tcG9uZW50JztcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gRGlyZXRpdmEgcXVlIGV4aWJlIHVtIHRvb2x0aXAgKGRpY2EgZGUgZmVycmFtZW50YSkgZmx1dHVhbnRlIGFvIGludGVyYWdpciBjb20gbyBlbGVtZW50byBob3NwZWRlaXJvLlxuICogUG9zaWNpb25hLXNlIGF1dG9tYXRpY2FtZW50ZSBjb25zaWRlcmFuZG8gbyBlc3Bhw6dvIGRpc3BvbsOtdmVsIG5hIHRlbGEsIHV0aWxpemFuZG8gbyBDREsgT3ZlcmxheS5cbiAqIFN1cG9ydGEgZXZlbnRvcyBkZSBob3ZlciwgY2xpY2sgZSBmb2N1cywgYWzDqW0gZGUgY29tcG9ydGFtZW50b3MgY3VzdG9taXphZG9zIHBhcmEgbW9iaWxlLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGBodG1sXG4gKiA8YnV0dG9uIHNUb29sdGlwPVwiQ2xpcXVlIGFxdWlcIiB0b29sdGlwUG9zaXRpb249XCJ0b3BcIj5Bw6fDo288L2J1dHRvbj5cbiAqIGBgYFxuICpcbiAqIEBjYXRlZ29yeSBPdmVybGF5XG4gKi9cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW3NUb29sdGlwXScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgVG9vbHRpcERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGV4dG8gZXhpYmlkbyBubyB0b29sdGlwLiBRdWFuZG8gdmF6aW8gb3UgYHVuZGVmaW5lZGAsIG8gdG9vbHRpcCBuw6NvIMOpIHJlbmRlcml6YWRvLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSB0b29sdGlwID0gaW5wdXQ8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQsIHsgYWxpYXM6ICdzVG9vbHRpcCcgfSk7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gUG9zacOnw6NvIHByZWZlcmVuY2lhbCBkbyB0b29sdGlwIGVtIHJlbGHDp8OjbyBhbyBlbGVtZW50byBob3NwZWRlaXJvLlxuICAgICAqIE8gdG9vbHRpcCBzZSByZXBvc2ljaW9uYSBhdXRvbWF0aWNhbWVudGUgc2UgbsOjbyBob3V2ZXIgZXNwYcOnbyBzdWZpY2llbnRlLlxuICAgICAqXG4gICAgICogQGRlZmF1bHQgJ3RvcCdcbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgdG9vbHRpcFBvc2l0aW9uID0gaW5wdXQ8VG9vbHRpcFBvc2l0aW9ucz4oJ3RvcCcpO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRlbXBvIGVtIG1pbGlzc2VndW5kb3MgYW50ZXMgZG8gdG9vbHRpcCBhcGFyZWNlciBhcMOzcyBvIGV2ZW50byBkZSBhdGl2YcOnw6NvLlxuICAgICAqXG4gICAgICogQGRlZmF1bHQgNTAwXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IHNob3dEZWxheSA9IGlucHV0PG51bWJlcj4oNTAwKTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUZW1wbyBlbSBtaWxpc3NlZ3VuZG9zIHF1ZSBvIHRvb2x0aXAgcGVybWFuZWNlIHZpc8OtdmVsIGFww7NzIGFwYXJlY2VyLlxuICAgICAqIFF1YW5kbyBuw6NvIGluZm9ybWFkbywgbyB0b29sdGlwIHBlcm1hbmVjZSBhdMOpIG8gdXN1w6FyaW8gc2FpciBkbyBlbGVtZW50by5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgZGlzcGxheVRpbWUgPSBpbnB1dDxudW1iZXIgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gRXZlbnRvIGRvIGVsZW1lbnRvIGhvc3BlZGVpcm8gcXVlIGRpc3BhcmEgYSBleGliacOnw6NvIGRvIHRvb2x0aXAuXG4gICAgICogLSBgJ2hvdmVyJ2A6IGV4aWJlIGFvIHBhc3NhciBvIG1vdXNlIChwYWRyw6NvKS5cbiAgICAgKiAtIGAnY2xpY2snYDogZXhpYmUgYW8gY2xpY2FyLlxuICAgICAqIC0gYCdmb2N1cydgOiBleGliZSBhbyBmb2NhciBubyBlbGVtZW50by5cbiAgICAgKlxuICAgICAqIEBkZWZhdWx0ICdob3ZlcidcbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgdG9vbHRpcEV2ZW50ID0gaW5wdXQ8VG9vbHRpcEV2ZW50PignaG92ZXInKTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBRdWFuZG8gYHRydWVgLCBvIGNvbnRlw7pkbyBIVE1MIGRvIHRvb2x0aXAgw6kgZXNjYXBhZG8gYW50ZXMgZGUgc2VyIHJlbmRlcml6YWRvLlxuICAgICAqXG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgZXNjYXBlID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFF1YW5kbyBgZmFsc2VgLCBvIHRvb2x0aXAgbnVuY2Egw6kgZXhpYmlkbywgbWVzbW8gcXVlIGhhamEgaW50ZXJhw6fDo28gZG8gdXN1w6FyaW8uXG4gICAgICogw5p0aWwgcGFyYSBkZXNhYmlsaXRhciB0b29sdGlwcyBkaW5hbWljYW1lbnRlLlxuICAgICAqXG4gICAgICogQGRlZmF1bHQgdHJ1ZVxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSB2aXNpYmxlID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gQ29tcG9ydGFtZW50byBkbyB0b29sdGlwIGVtIGRpc3Bvc2l0aXZvcyBtw7N2ZWlzICh0b3VjaCkuXG4gICAgICogLSBgJ3ByZXNzaW5nJ2A6IGV4aWJlIGFvIHByZXNzaW9uYXIgZSBtYW50ZXIgbyB0b3F1ZSAocGFkcsOjbykuXG4gICAgICogLSBgJ25vbmUnYDogZGVzYWJpbGl0YSBvIHRvb2x0aXAgZW0gZGlzcG9zaXRpdm9zIHTDoXRlaXMuXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCAncHJlc3NpbmcnXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IG1vYmlsZUJlaGF2aW9yID0gaW5wdXQ8TW9iaWxlQmVoYXZpb3I+KCdwcmVzc2luZycpO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFJlZmVyw6puY2lhIGEgdW0gaW5wdXQgSFRNTCBwYXJhIHNpbmNyb25pemFyIGEgZXhpYmnDp8OjbyBkbyB0b29sdGlwIGNvbSBvIGZvY28gbm8gY2FtcG8uXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IGZvY3VzZWRJbnB1dFJlZiA9IGlucHV0PEhUTUxJbnB1dEVsZW1lbnQgfCBudWxsPihudWxsKTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBRdWFuZG8gYHRydWVgLCBvIHRvb2x0aXAgc8OzIMOpIGV4aWJpZG8gc2UgbyB0ZXh0byBkbyBlbGVtZW50byBlc3RpdmVyIHRydW5jYWRvIChvdmVyZmxvdykuXG4gICAgICogw5p0aWwgcGFyYSBjZWxscyBkZSB0YWJlbGEgb3UgZWxlbWVudG9zIGNvbSBgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXNgLlxuICAgICAqXG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgY2hlY2tUcnVuY2F0ZWRUZXh0ID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBlbGVtZW50UmVmID0gaW5qZWN0PEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+PihFbGVtZW50UmVmKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IG92ZXJsYXkgPSBpbmplY3QoT3ZlcmxheSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBkZWJvdW5jZVV0aWxzID0gaW5qZWN0KERlYm91bmNlVXRpbHMpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcmVuZGVyZXIgPSBpbmplY3QoUmVuZGVyZXIyKTtcblxuICAgIHByaXZhdGUgb3ZlcmxheVJlZjogT3ZlcmxheVJlZiB8IG51bGwgPSBudWxsO1xuICAgIHByaXZhdGUgY29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8VG9vbHRpcENvbXBvbmVudD4gfCBudWxsID0gbnVsbDtcbiAgICBwcml2YXRlIHBvc2l0aW9uQ2hhbmdlU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCBudWxsID0gbnVsbDtcbiAgICBwcml2YXRlIHNob3dUaW1lb3V0PzogbnVtYmVyO1xuICAgIHByaXZhdGUgdG91Y2hUaW1lb3V0PzogbnVtYmVyO1xuICAgIHByaXZhdGUgdG9vbHRpcENyZWF0ZWRCeUZvY3VzID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZWFkb25seSBkZWJvdW5jZUNyZWF0ZVRvb2x0aXBGdW5jdGlvbiA9IHRoaXMuZGVib3VuY2VVdGlscy5kZWJvdW5jZUxlYWRpbmcoKCkgPT5cbiAgICAgICAgdGhpcy5fY3JlYXRlVG9vbHRpcCh0cnVlLCB0cnVlKSxcbiAgICApO1xuXG4gICAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnZhbGlkYXRlUG9zaXRpb24oKTtcbiAgICAgICAgdGhpcy51cGRhdGVUb29sdGlwVmlzaWJpbGl0eVdoZW5Gb2N1c09uSW5wdXQoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGVzdHJveSgpO1xuICAgIH1cblxuICAgIC8vIHdoZW5ldmVyIHRoZSBjb21wb25lbnQgd2l0aCB0aGUgdG9vbHRpcCBpcyBjbGlja2VkIEkgZGVzdHJveSB0aGUgdG9vbHRpcC5cbiAgICAvLyB3aGVuZXZlciBhIGtleSBpcyBwcmVzc2VkIG9uIHRoZSBjb21wb25lbnQgd2l0aCB0aGUgdG9vbHRpcCBJIGRlc3Ryb3kgdGhlIHRvb2x0aXAuXG4gICAgQEhvc3RMaXN0ZW5lcignY2xpY2snKVxuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24nKVxuICAgIHB1YmxpYyBvbkNsaWNrKCk6IHZvaWQge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLnRvb2x0aXBFdmVudCgpID09PSAnaG92ZXInICYmXG4gICAgICAgICAgICAhbmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaCgvQW5kcm9pZC9pKSAmJlxuICAgICAgICAgICAgIW5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goL2lQaG9uZS9pKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMuZGVzdHJveSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignZm9jdXMnKVxuICAgIHB1YmxpYyBvbkZvY3VzKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy50b29sdGlwRXZlbnQoKSA9PT0gJ2ZvY3VzJykge1xuICAgICAgICAgICAgdGhpcy5fY3JlYXRlVG9vbHRpcCh0cnVlLCB0cnVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2JsdXInKVxuICAgIHB1YmxpYyBvbkJsdXIoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnRvb2x0aXBFdmVudCgpID09PSAnZm9jdXMnKSB7XG4gICAgICAgICAgICB0aGlzLmRlc3Ryb3koKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ21vdXNlZW50ZXInKVxuICAgIHB1YmxpYyBvbk1vdXNlRW50ZXIoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnRvb2x0aXBFdmVudCgpID09PSAnaG92ZXInIHx8IHRoaXMuZm9jdXNlZElucHV0UmVmKCkpIHtcbiAgICAgICAgICAgIHRoaXMuZGVib3VuY2VDcmVhdGVUb29sdGlwRnVuY3Rpb24oKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ21vdXNlbGVhdmUnKVxuICAgIEBIb3N0TGlzdGVuZXIoJ3doZWVsJylcbiAgICBwdWJsaWMgb25Nb3VzZUxlYXZlKCk6IHZvaWQge1xuICAgICAgICBpZiAoKHRoaXMudG9vbHRpcEV2ZW50KCkgPT09ICdob3ZlcicgfHwgdGhpcy5mb2N1c2VkSW5wdXRSZWYoKSkgJiYgIXRoaXMudG9vbHRpcENyZWF0ZWRCeUZvY3VzKSB7XG4gICAgICAgICAgICB0aGlzLmRlc3Ryb3koKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ3RvdWNoc3RhcnQnKVxuICAgIHB1YmxpYyBvblRvdWNoU3RhcnQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnRvb2x0aXBFdmVudCgpID09PSAnaG92ZXInKSB7XG4gICAgICAgICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KHRoaXMudG91Y2hUaW1lb3V0KTtcbiAgICAgICAgICAgIGNvbnN0IGRlbGF5ID0gdGhpcy5tb2JpbGVCZWhhdmlvcigpID09PSAncHJlc3NpbmcnID8gdGhpcy5zaG93RGVsYXkoKSA6IDA7XG4gICAgICAgICAgICB0aGlzLnRvdWNoVGltZW91dCA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9jcmVhdGVUb29sdGlwKHRydWUsIHRydWUpO1xuICAgICAgICAgICAgfSwgZGVsYXkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcigndG91Y2hlbmQnKVxuICAgIHB1YmxpYyBvblRvdWNoRW5kKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy50b29sdGlwRXZlbnQoKSA9PT0gJ2hvdmVyJyAmJiB0aGlzLm1vYmlsZUJlaGF2aW9yKCkgPT09ICdwcmVzc2luZycpIHtcbiAgICAgICAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQodGhpcy50b3VjaFRpbWVvdXQpO1xuICAgICAgICAgICAgdGhpcy5kZXN0cm95KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHZhbGlkYXRlUG9zaXRpb24oKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGNvbnRhaW5zUG9zaXRpb24gPSBbJ3RvcCcsICdyaWdodCcsICdib3R0b20nLCAnbGVmdCddLmluY2x1ZGVzKHRoaXMudG9vbHRpcFBvc2l0aW9uKCkpO1xuICAgICAgICBpZiAoIWNvbnRhaW5zUG9zaXRpb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVG9vbHRpcCBwb3NpdGlvbiBcIiR7dGhpcy50b29sdGlwUG9zaXRpb24oKX1cIiBpcyB1bmV4cGVjdGVkYCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBNYW5pcHVsYSBhIHZpc2liaWxpZGFkZSBkbyB0b29sdGlwIHF1YW5kbyBob3V2ZXIgdW1hIHJlZmVyw6puY2lhIGRlIGlucHV0LlxuICAgICAqL1xuICAgIHByaXZhdGUgdXBkYXRlVG9vbHRpcFZpc2liaWxpdHlXaGVuRm9jdXNPbklucHV0KCk6IHZvaWQge1xuICAgICAgICBjb25zdCBpbnB1dFJlZiA9IHRoaXMuZm9jdXNlZElucHV0UmVmKCk7XG4gICAgICAgIGlmICghaW5wdXRSZWYpIHJldHVybjtcblxuICAgICAgICB0aGlzLnJlbmRlcmVyLmxpc3RlbihpbnB1dFJlZiwgJ2ZvY3VzJywgKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fY3JlYXRlVG9vbHRpcChmYWxzZSwgZmFsc2UpO1xuICAgICAgICAgICAgdGhpcy50b29sdGlwQ3JlYXRlZEJ5Rm9jdXMgPSB0cnVlO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5saXN0ZW4oaW5wdXRSZWYsICdibHVyJywgKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5kZXN0cm95KCk7XG4gICAgICAgICAgICB0aGlzLnRvb2x0aXBDcmVhdGVkQnlGb2N1cyA9IGZhbHNlO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9jcmVhdGVUb29sdGlwKHVzZVNob3dEZWxheSA9IGZhbHNlLCBhdXRvRGVzdHJveSA9IHRydWUpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdG9vbHRpcFRleHQgPSB0aGlzLnRvb2x0aXAoKSA/PyAnJztcbiAgICAgICAgaWYgKCF0b29sdGlwVGV4dC5sZW5ndGggfHwgdGhpcy5vdmVybGF5UmVmICE9PSBudWxsKSByZXR1cm47XG5cbiAgICAgICAgaWYgKHRoaXMuY2hlY2tUcnVuY2F0ZWRUZXh0KCkgJiYgIXRoaXMuY29udGVudElzVHJ1bmNhdGVkKSByZXR1cm47XG5cbiAgICAgICAgY29uc3QgcG9zaXRpb25TdHJhdGVneSA9IHRoaXMuYnVpbGRQb3NpdGlvblN0cmF0ZWd5KCk7XG4gICAgICAgIGNvbnN0IHNjcm9sbFN0cmF0ZWd5ID0gdGhpcy5vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMucmVwb3NpdGlvbigpO1xuXG4gICAgICAgIHRoaXMub3ZlcmxheVJlZiA9IHRoaXMub3ZlcmxheS5jcmVhdGUoeyBwb3NpdGlvblN0cmF0ZWd5LCBzY3JvbGxTdHJhdGVneSB9KTtcblxuICAgICAgICBjb25zdCBwb3J0YWwgPSBuZXcgQ29tcG9uZW50UG9ydGFsKFRvb2x0aXBDb21wb25lbnQpO1xuICAgICAgICB0aGlzLmNvbXBvbmVudFJlZiA9IHRoaXMub3ZlcmxheVJlZi5hdHRhY2gocG9ydGFsKTtcblxuICAgICAgICB0aGlzLmNvbXBvbmVudFJlZi5zZXRJbnB1dCgndG9vbHRpcCcsIHRvb2x0aXBUZXh0KTtcbiAgICAgICAgdGhpcy5jb21wb25lbnRSZWYuc2V0SW5wdXQoJ2VzY2FwZScsIHRoaXMuZXNjYXBlKCkpO1xuICAgICAgICB0aGlzLmNvbXBvbmVudFJlZi5zZXRJbnB1dCgncG9zaXRpb24nLCB0aGlzLnRvb2x0aXBQb3NpdGlvbigpKTtcblxuICAgICAgICB0aGlzLnBvc2l0aW9uQ2hhbmdlU3Vic2NyaXB0aW9uID0gcG9zaXRpb25TdHJhdGVneS5wb3NpdGlvbkNoYW5nZXMuc3Vic2NyaWJlKChjaGFuZ2UpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG1hcHBlZFBvc2l0aW9uID0gdGhpcy5tYXBDZGtQb3NpdGlvblRvVG9vbHRpcFBvc2l0aW9uKGNoYW5nZS5jb25uZWN0aW9uUGFpcik7XG4gICAgICAgICAgICB0aGlzLmNvbXBvbmVudFJlZj8uc2V0SW5wdXQoJ3Bvc2l0aW9uJywgbWFwcGVkUG9zaXRpb24pO1xuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCBkZWxheSA9IHVzZVNob3dEZWxheSA/IHRoaXMuc2hvd0RlbGF5KCkgOiAwO1xuICAgICAgICB0aGlzLnNob3dUaW1lb3V0ID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5jb21wb25lbnRSZWY/LnNldElucHV0KCd2aXNpYmxlJywgdGhpcy52aXNpYmxlKCkpO1xuICAgICAgICB9LCBkZWxheSk7XG5cbiAgICAgICAgaWYgKGF1dG9EZXN0cm95ICYmIHRoaXMuZGlzcGxheVRpbWUoKSkge1xuICAgICAgICAgICAgd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZGVzdHJveSgpO1xuICAgICAgICAgICAgfSwgdGhpcy5kaXNwbGF5VGltZSgpISk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGJ1aWxkUG9zaXRpb25TdHJhdGVneSgpOiBGbGV4aWJsZUNvbm5lY3RlZFBvc2l0aW9uU3RyYXRlZ3kge1xuICAgICAgICBjb25zdCBwcmVmZXJyZWQgPSB0aGlzLnRvb2x0aXBQb3NpdGlvbigpO1xuICAgICAgICBjb25zdCBhbGxQb3NpdGlvbnM6IFRvb2x0aXBQb3NpdGlvbnNbXSA9IFsndG9wJywgJ2JvdHRvbScsICdsZWZ0JywgJ3JpZ2h0J107XG4gICAgICAgIGNvbnN0IG9yZGVyZWRQb3NpdGlvbnMgPSBbcHJlZmVycmVkLCAuLi5hbGxQb3NpdGlvbnMuZmlsdGVyKChwKSA9PiBwICE9PSBwcmVmZXJyZWQpXTtcblxuICAgICAgICByZXR1cm4gdGhpcy5vdmVybGF5XG4gICAgICAgICAgICAucG9zaXRpb24oKVxuICAgICAgICAgICAgLmZsZXhpYmxlQ29ubmVjdGVkVG8odGhpcy5lbGVtZW50UmVmKVxuICAgICAgICAgICAgLndpdGhQb3NpdGlvbnMob3JkZXJlZFBvc2l0aW9ucy5tYXAoKHApID0+IHRoaXMuZ2V0Q29ubmVjdGVkUG9zaXRpb24ocCkpKVxuICAgICAgICAgICAgLndpdGhGbGV4aWJsZURpbWVuc2lvbnMoZmFsc2UpXG4gICAgICAgICAgICAud2l0aFB1c2goZmFsc2UpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0Q29ubmVjdGVkUG9zaXRpb24ocG9zOiBUb29sdGlwUG9zaXRpb25zKTogQ29ubmVjdGVkUG9zaXRpb24ge1xuICAgICAgICBjb25zdCBvZmZzZXQgPSAxMDtcbiAgICAgICAgY29uc3QgcG9zaXRpb25NYXA6IFJlY29yZDxUb29sdGlwUG9zaXRpb25zLCBDb25uZWN0ZWRQb3NpdGlvbj4gPSB7XG4gICAgICAgICAgICB0b3A6IHsgb3JpZ2luWDogJ2NlbnRlcicsIG9yaWdpblk6ICd0b3AnLCBvdmVybGF5WDogJ2NlbnRlcicsIG92ZXJsYXlZOiAnYm90dG9tJywgb2Zmc2V0WTogLW9mZnNldCB9LFxuICAgICAgICAgICAgYm90dG9tOiB7IG9yaWdpblg6ICdjZW50ZXInLCBvcmlnaW5ZOiAnYm90dG9tJywgb3ZlcmxheVg6ICdjZW50ZXInLCBvdmVybGF5WTogJ3RvcCcsIG9mZnNldFk6IG9mZnNldCB9LFxuICAgICAgICAgICAgbGVmdDogeyBvcmlnaW5YOiAnc3RhcnQnLCBvcmlnaW5ZOiAnY2VudGVyJywgb3ZlcmxheVg6ICdlbmQnLCBvdmVybGF5WTogJ2NlbnRlcicsIG9mZnNldFg6IC1vZmZzZXQgfSxcbiAgICAgICAgICAgIHJpZ2h0OiB7IG9yaWdpblg6ICdlbmQnLCBvcmlnaW5ZOiAnY2VudGVyJywgb3ZlcmxheVg6ICdzdGFydCcsIG92ZXJsYXlZOiAnY2VudGVyJywgb2Zmc2V0WDogb2Zmc2V0IH0sXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBwb3NpdGlvbk1hcFtwb3NdO1xuICAgIH1cblxuICAgIHByaXZhdGUgbWFwQ2RrUG9zaXRpb25Ub1Rvb2x0aXBQb3NpdGlvbihwYWlyOiB7IG92ZXJsYXlYOiBzdHJpbmc7IG92ZXJsYXlZOiBzdHJpbmcgfSk6IFRvb2x0aXBQb3NpdGlvbnMge1xuICAgICAgICBpZiAocGFpci5vdmVybGF5WSA9PT0gJ2JvdHRvbScpIHJldHVybiAndG9wJztcbiAgICAgICAgaWYgKHBhaXIub3ZlcmxheVkgPT09ICd0b3AnKSByZXR1cm4gJ2JvdHRvbSc7XG4gICAgICAgIGlmIChwYWlyLm92ZXJsYXlYID09PSAnZW5kJykgcmV0dXJuICdsZWZ0JztcbiAgICAgICAgcmV0dXJuICdyaWdodCc7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBkZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KHRoaXMuc2hvd1RpbWVvdXQpO1xuICAgICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KHRoaXMudG91Y2hUaW1lb3V0KTtcbiAgICAgICAgdGhpcy5wb3NpdGlvbkNoYW5nZVN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5wb3NpdGlvbkNoYW5nZVN1YnNjcmlwdGlvbiA9IG51bGw7XG4gICAgICAgIGlmICh0aGlzLm92ZXJsYXlSZWYpIHtcbiAgICAgICAgICAgIHRoaXMub3ZlcmxheVJlZi5kaXNwb3NlKCk7XG4gICAgICAgICAgICB0aGlzLm92ZXJsYXlSZWYgPSBudWxsO1xuICAgICAgICAgICAgdGhpcy5jb21wb25lbnRSZWYgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXQgY29udGVudElzVHJ1bmNhdGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgIHJldHVybiBlbGVtZW50LnNjcm9sbEhlaWdodCA+IGVsZW1lbnQuY2xpZW50SGVpZ2h0IHx8IGVsZW1lbnQuc2Nyb2xsV2lkdGggPiBlbGVtZW50LmNsaWVudFdpZHRoO1xuICAgIH1cbn1cblxuIl19
278
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvdG9vbHRpcC9zcmMvbGliL3Rvb2x0aXAvdG9vbHRpcC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF3RCxPQUFPLEVBQWMsTUFBTSxzQkFBc0IsQ0FBQztBQUNqSCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUVILFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUdaLFNBQVMsRUFDVCxNQUFNLEVBQ04sS0FBSyxHQUNSLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUkxRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7QUFFdkQ7Ozs7Ozs7Ozs7O0dBV0c7QUFLSCxNQUFNLE9BQU8sZ0JBQWdCO0lBQ3pCOztPQUVHO0lBQ2EsT0FBTyxHQUFHLEtBQUssQ0FBcUIsU0FBUyxFQUFFLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7SUFFdEY7Ozs7O09BS0c7SUFDYSxlQUFlLEdBQUcsS0FBSyxDQUFtQixLQUFLLENBQUMsQ0FBQztJQUVqRTs7OztPQUlHO0lBQ2EsU0FBUyxHQUFHLEtBQUssQ0FBUyxHQUFHLENBQUMsQ0FBQztJQUUvQzs7O09BR0c7SUFDYSxXQUFXLEdBQUcsS0FBSyxDQUFxQixTQUFTLENBQUMsQ0FBQztJQUVuRTs7Ozs7OztPQU9HO0lBQ2EsWUFBWSxHQUFHLEtBQUssQ0FBZSxPQUFPLENBQUMsQ0FBQztJQUU1RDs7OztPQUlHO0lBQ2EsTUFBTSxHQUFHLEtBQUssQ0FBVSxLQUFLLENBQUMsQ0FBQztJQUUvQzs7Ozs7T0FLRztJQUNhLE9BQU8sR0FBRyxLQUFLLENBQVUsSUFBSSxDQUFD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O21CQUFDO29CQUNQLFFBQVEsRUFBRSxZQUFZO29CQUN0QixVQUFVLEVBQUUsSUFBSTtpQkFDbkI7OEJBdUdVLE9BQU87c0JBRmIsWUFBWTt1QkFBQyxPQUFPOztzQkFDcEIsWUFBWTt1QkFBQyxTQUFTO2dCQVloQixPQUFPO3NCQURiLFlBQVk7dUJBQUMsT0FBTztnQkFRZCxNQUFNO3NCQURaLFlBQVk7dUJBQUMsTUFBTTtnQkFRYixZQUFZO3NCQURsQixZQUFZO3VCQUFDLFlBQVk7Z0JBU25CLFlBQVk7c0JBRmxCLFlBQVk7dUJBQUMsWUFBWTs7c0JBQ3pCLFlBQVk7dUJBQUMsT0FBTztnQkFRZCxZQUFZO3NCQURsQixZQUFZO3VCQUFDLFlBQVk7Z0JBWW5CLFVBQVU7c0JBRGhCLFlBQVk7dUJBQUMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbm5lY3RlZFBvc2l0aW9uLCBGbGV4aWJsZUNvbm5lY3RlZFBvc2l0aW9uU3RyYXRlZ3ksIE92ZXJsYXksIE92ZXJsYXlSZWYgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBDb21wb25lbnRQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7XG4gICAgQ29tcG9uZW50UmVmLFxuICAgIERpcmVjdGl2ZSxcbiAgICBFbGVtZW50UmVmLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIFJlbmRlcmVyMixcbiAgICBpbmplY3QsXG4gICAgaW5wdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBEZWJvdW5jZVV0aWxzIH0gZnJvbSAnQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cy9jb21tb24nO1xuaW1wb3J0IHsgTW9iaWxlQmVoYXZpb3IgfSBmcm9tICcuL21vZGVscy9tb2JpbGUtYmVoYXZpb3InO1xuaW1wb3J0IHsgVG9vbHRpcEV2ZW50IH0gZnJvbSAnLi9tb2RlbHMvdG9vbHRpcC1ldmVudCc7XG5pbXBvcnQgeyBUb29sdGlwUG9zaXRpb25zIH0gZnJvbSAnLi9tb2RlbHMvdG9vbHRpcC1wb3NpdGlvbic7XG5pbXBvcnQgeyBUb29sdGlwQ29tcG9uZW50IH0gZnJvbSAnLi90b29sdGlwLmNvbXBvbmVudCc7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIERpcmV0aXZhIHF1ZSBleGliZSB1bSB0b29sdGlwIChkaWNhIGRlIGZlcnJhbWVudGEpIGZsdXR1YW50ZSBhbyBpbnRlcmFnaXIgY29tIG8gZWxlbWVudG8gaG9zcGVkZWlyby5cbiAqIFBvc2ljaW9uYS1zZSBhdXRvbWF0aWNhbWVudGUgY29uc2lkZXJhbmRvIG8gZXNwYcOnbyBkaXNwb27DrXZlbCBuYSB0ZWxhLCB1dGlsaXphbmRvIG8gQ0RLIE92ZXJsYXkuXG4gKiBTdXBvcnRhIGV2ZW50b3MgZGUgaG92ZXIsIGNsaWNrIGUgZm9jdXMsIGFsw6ltIGRlIGNvbXBvcnRhbWVudG9zIGN1c3RvbWl6YWRvcyBwYXJhIG1vYmlsZS5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgaHRtbFxuICogPGJ1dHRvbiBzVG9vbHRpcD1cIkNsaXF1ZSBhcXVpXCIgdG9vbHRpcFBvc2l0aW9uPVwidG9wXCI+QcOnw6NvPC9idXR0b24+XG4gKiBgYGBcbiAqXG4gKiBAY2F0ZWdvcnkgT3ZlcmxheVxuICovXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tzVG9vbHRpcF0nLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIFRvb2x0aXBEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRleHRvIGV4aWJpZG8gbm8gdG9vbHRpcC4gUXVhbmRvIHZhemlvIG91IGB1bmRlZmluZWRgLCBvIHRvb2x0aXAgbsOjbyDDqSByZW5kZXJpemFkby5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgdG9vbHRpcCA9IGlucHV0PHN0cmluZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkLCB7IGFsaWFzOiAnc1Rvb2x0aXAnIH0pO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFBvc2nDp8OjbyBwcmVmZXJlbmNpYWwgZG8gdG9vbHRpcCBlbSByZWxhw6fDo28gYW8gZWxlbWVudG8gaG9zcGVkZWlyby5cbiAgICAgKiBPIHRvb2x0aXAgc2UgcmVwb3NpY2lvbmEgYXV0b21hdGljYW1lbnRlIHNlIG7Do28gaG91dmVyIGVzcGHDp28gc3VmaWNpZW50ZS5cbiAgICAgKlxuICAgICAqIEBkZWZhdWx0ICd0b3AnXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IHRvb2x0aXBQb3NpdGlvbiA9IGlucHV0PFRvb2x0aXBQb3NpdGlvbnM+KCd0b3AnKTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUZW1wbyBlbSBtaWxpc3NlZ3VuZG9zIGFudGVzIGRvIHRvb2x0aXAgYXBhcmVjZXIgYXDDs3MgbyBldmVudG8gZGUgYXRpdmHDp8Ojby5cbiAgICAgKlxuICAgICAqIEBkZWZhdWx0IDUwMFxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBzaG93RGVsYXkgPSBpbnB1dDxudW1iZXI+KDUwMCk7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGVtcG8gZW0gbWlsaXNzZWd1bmRvcyBxdWUgbyB0b29sdGlwIHBlcm1hbmVjZSB2aXPDrXZlbCBhcMOzcyBhcGFyZWNlci5cbiAgICAgKiBRdWFuZG8gbsOjbyBpbmZvcm1hZG8sIG8gdG9vbHRpcCBwZXJtYW5lY2UgYXTDqSBvIHVzdcOhcmlvIHNhaXIgZG8gZWxlbWVudG8uXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IGRpc3BsYXlUaW1lID0gaW5wdXQ8bnVtYmVyIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEV2ZW50byBkbyBlbGVtZW50byBob3NwZWRlaXJvIHF1ZSBkaXNwYXJhIGEgZXhpYmnDp8OjbyBkbyB0b29sdGlwLlxuICAgICAqIC0gYCdob3ZlcidgOiBleGliZSBhbyBwYXNzYXIgbyBtb3VzZSAocGFkcsOjbykuXG4gICAgICogLSBgJ2NsaWNrJ2A6IGV4aWJlIGFvIGNsaWNhci5cbiAgICAgKiAtIGAnZm9jdXMnYDogZXhpYmUgYW8gZm9jYXIgbm8gZWxlbWVudG8uXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCAnaG92ZXInXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IHRvb2x0aXBFdmVudCA9IGlucHV0PFRvb2x0aXBFdmVudD4oJ2hvdmVyJyk7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gUXVhbmRvIGB0cnVlYCwgbyBjb250ZcO6ZG8gSFRNTCBkbyB0b29sdGlwIMOpIGVzY2FwYWRvIGFudGVzIGRlIHNlciByZW5kZXJpemFkby5cbiAgICAgKlxuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IGVzY2FwZSA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBRdWFuZG8gYGZhbHNlYCwgbyB0b29sdGlwIG51bmNhIMOpIGV4aWJpZG8sIG1lc21vIHF1ZSBoYWphIGludGVyYcOnw6NvIGRvIHVzdcOhcmlvLlxuICAgICAqIMOadGlsIHBhcmEgZGVzYWJpbGl0YXIgdG9vbHRpcHMgZGluYW1pY2FtZW50ZS5cbiAgICAgKlxuICAgICAqIEBkZWZhdWx0IHRydWVcbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgdmlzaWJsZSA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIENvbXBvcnRhbWVudG8gZG8gdG9vbHRpcCBlbSBkaXNwb3NpdGl2b3MgbcOzdmVpcyAodG91Y2gpLlxuICAgICAqIC0gYCdwcmVzc2luZydgOiBleGliZSBhbyBwcmVzc2lvbmFyIGUgbWFudGVyIG8gdG9xdWUgKHBhZHLDo28pLlxuICAgICAqIC0gYCdub25lJ2A6IGRlc2FiaWxpdGEgbyB0b29sdGlwIGVtIGRpc3Bvc2l0aXZvcyB0w6F0ZWlzLlxuICAgICAqXG4gICAgICogQGRlZmF1bHQgJ3ByZXNzaW5nJ1xuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBtb2JpbGVCZWhhdmlvciA9IGlucHV0PE1vYmlsZUJlaGF2aW9yPigncHJlc3NpbmcnKTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBSZWZlcsOqbmNpYSBhIHVtIGlucHV0IEhUTUwgcGFyYSBzaW5jcm9uaXphciBhIGV4aWJpw6fDo28gZG8gdG9vbHRpcCBjb20gbyBmb2NvIG5vIGNhbXBvLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBmb2N1c2VkSW5wdXRSZWYgPSBpbnB1dDxIVE1MSW5wdXRFbGVtZW50IHwgbnVsbD4obnVsbCk7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gUXVhbmRvIGB0cnVlYCwgbyB0b29sdGlwIHPDsyDDqSBleGliaWRvIHNlIG8gdGV4dG8gZG8gZWxlbWVudG8gZXN0aXZlciB0cnVuY2FkbyAob3ZlcmZsb3cpLlxuICAgICAqIMOadGlsIHBhcmEgY2VsbHMgZGUgdGFiZWxhIG91IGVsZW1lbnRvcyBjb20gYHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzYC5cbiAgICAgKlxuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IGNoZWNrVHJ1bmNhdGVkVGV4dCA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgZWxlbWVudFJlZiA9IGluamVjdDxFbGVtZW50UmVmPEhUTUxFbGVtZW50Pj4oRWxlbWVudFJlZik7XG4gICAgcHJpdmF0ZSByZWFkb25seSBvdmVybGF5ID0gaW5qZWN0KE92ZXJsYXkpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVib3VuY2VVdGlscyA9IGluamVjdChEZWJvdW5jZVV0aWxzKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJlbmRlcmVyID0gaW5qZWN0KFJlbmRlcmVyMik7XG5cbiAgICBwcml2YXRlIG92ZXJsYXlSZWY6IE92ZXJsYXlSZWYgfCBudWxsID0gbnVsbDtcbiAgICBwcml2YXRlIGNvbXBvbmVudFJlZjogQ29tcG9uZW50UmVmPFRvb2x0aXBDb21wb25lbnQ+IHwgbnVsbCA9IG51bGw7XG4gICAgcHJpdmF0ZSBwb3NpdGlvbkNoYW5nZVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uIHwgbnVsbCA9IG51bGw7XG4gICAgcHJpdmF0ZSBzaG93VGltZW91dD86IG51bWJlcjtcbiAgICBwcml2YXRlIHRvdWNoVGltZW91dD86IG51bWJlcjtcbiAgICBwcml2YXRlIHRvb2x0aXBDcmVhdGVkQnlGb2N1cyA9IGZhbHNlO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVib3VuY2VDcmVhdGVUb29sdGlwRnVuY3Rpb24gPSB0aGlzLmRlYm91bmNlVXRpbHMuZGVib3VuY2VMZWFkaW5nKCgpID0+XG4gICAgICAgIHRoaXMuX2NyZWF0ZVRvb2x0aXAodHJ1ZSwgdHJ1ZSksXG4gICAgKTtcblxuICAgIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy52YWxpZGF0ZVBvc2l0aW9uKCk7XG4gICAgICAgIHRoaXMudXBkYXRlVG9vbHRpcFZpc2liaWxpdHlXaGVuRm9jdXNPbklucHV0KCk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRlc3Ryb3koKTtcbiAgICB9XG5cbiAgICAvLyB3aGVuZXZlciB0aGUgY29tcG9uZW50IHdpdGggdGhlIHRvb2x0aXAgaXMgY2xpY2tlZCBJIGRlc3Ryb3kgdGhlIHRvb2x0aXAuXG4gICAgLy8gd2hlbmV2ZXIgYSBrZXkgaXMgcHJlc3NlZCBvbiB0aGUgY29tcG9uZW50IHdpdGggdGhlIHRvb2x0aXAgSSBkZXN0cm95IHRoZSB0b29sdGlwLlxuICAgIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJylcbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duJylcbiAgICBwdWJsaWMgb25DbGljaygpOiB2b2lkIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGhpcy50b29sdGlwRXZlbnQoKSA9PT0gJ2hvdmVyJyAmJlxuICAgICAgICAgICAgIW5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goL0FuZHJvaWQvaSkgJiZcbiAgICAgICAgICAgICFuYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKC9pUGhvbmUvaSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLmRlc3Ryb3koKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2ZvY3VzJylcbiAgICBwdWJsaWMgb25Gb2N1cygpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMudG9vbHRpcEV2ZW50KCkgPT09ICdmb2N1cycpIHtcbiAgICAgICAgICAgIHRoaXMuX2NyZWF0ZVRvb2x0aXAodHJ1ZSwgdHJ1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdibHVyJylcbiAgICBwdWJsaWMgb25CbHVyKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy50b29sdGlwRXZlbnQoKSA9PT0gJ2ZvY3VzJykge1xuICAgICAgICAgICAgdGhpcy5kZXN0cm95KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdtb3VzZWVudGVyJylcbiAgICBwdWJsaWMgb25Nb3VzZUVudGVyKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy50b29sdGlwRXZlbnQoKSA9PT0gJ2hvdmVyJyB8fCB0aGlzLmZvY3VzZWRJbnB1dFJlZigpKSB7XG4gICAgICAgICAgICB0aGlzLmRlYm91bmNlQ3JlYXRlVG9vbHRpcEZ1bmN0aW9uKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdtb3VzZWxlYXZlJylcbiAgICBASG9zdExpc3RlbmVyKCd3aGVlbCcpXG4gICAgcHVibGljIG9uTW91c2VMZWF2ZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCh0aGlzLnRvb2x0aXBFdmVudCgpID09PSAnaG92ZXInIHx8IHRoaXMuZm9jdXNlZElucHV0UmVmKCkpICYmICF0aGlzLnRvb2x0aXBDcmVhdGVkQnlGb2N1cykge1xuICAgICAgICAgICAgdGhpcy5kZXN0cm95KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCd0b3VjaHN0YXJ0JylcbiAgICBwdWJsaWMgb25Ub3VjaFN0YXJ0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy50b29sdGlwRXZlbnQoKSA9PT0gJ2hvdmVyJykge1xuICAgICAgICAgICAgd2luZG93LmNsZWFyVGltZW91dCh0aGlzLnRvdWNoVGltZW91dCk7XG4gICAgICAgICAgICBjb25zdCBkZWxheSA9IHRoaXMubW9iaWxlQmVoYXZpb3IoKSA9PT0gJ3ByZXNzaW5nJyA/IHRoaXMuc2hvd0RlbGF5KCkgOiAwO1xuICAgICAgICAgICAgdGhpcy50b3VjaFRpbWVvdXQgPSB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fY3JlYXRlVG9vbHRpcCh0cnVlLCB0cnVlKTtcbiAgICAgICAgICAgIH0sIGRlbGF5KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ3RvdWNoZW5kJylcbiAgICBwdWJsaWMgb25Ub3VjaEVuZCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMudG9vbHRpcEV2ZW50KCkgPT09ICdob3ZlcicgJiYgdGhpcy5tb2JpbGVCZWhhdmlvcigpID09PSAncHJlc3NpbmcnKSB7XG4gICAgICAgICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KHRoaXMudG91Y2hUaW1lb3V0KTtcbiAgICAgICAgICAgIHRoaXMuZGVzdHJveSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB2YWxpZGF0ZVBvc2l0aW9uKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBjb250YWluc1Bvc2l0aW9uID0gWyd0b3AnLCAncmlnaHQnLCAnYm90dG9tJywgJ2xlZnQnXS5pbmNsdWRlcyh0aGlzLnRvb2x0aXBQb3NpdGlvbigpKTtcbiAgICAgICAgaWYgKCFjb250YWluc1Bvc2l0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFRvb2x0aXAgcG9zaXRpb24gXCIke3RoaXMudG9vbHRpcFBvc2l0aW9uKCl9XCIgaXMgdW5leHBlY3RlZGApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTWFuaXB1bGEgYSB2aXNpYmlsaWRhZGUgZG8gdG9vbHRpcCBxdWFuZG8gaG91dmVyIHVtYSByZWZlcsOqbmNpYSBkZSBpbnB1dC5cbiAgICAgKi9cbiAgICBwcml2YXRlIHVwZGF0ZVRvb2x0aXBWaXNpYmlsaXR5V2hlbkZvY3VzT25JbnB1dCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaW5wdXRSZWYgPSB0aGlzLmZvY3VzZWRJbnB1dFJlZigpO1xuICAgICAgICBpZiAoIWlucHV0UmVmKSByZXR1cm47XG5cbiAgICAgICAgdGhpcy5yZW5kZXJlci5saXN0ZW4oaW5wdXRSZWYsICdmb2N1cycsICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2NyZWF0ZVRvb2x0aXAoZmFsc2UsIGZhbHNlKTtcbiAgICAgICAgICAgIHRoaXMudG9vbHRpcENyZWF0ZWRCeUZvY3VzID0gdHJ1ZTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMucmVuZGVyZXIubGlzdGVuKGlucHV0UmVmLCAnYmx1cicsICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZGVzdHJveSgpO1xuICAgICAgICAgICAgdGhpcy50b29sdGlwQ3JlYXRlZEJ5Rm9jdXMgPSBmYWxzZTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfY3JlYXRlVG9vbHRpcCh1c2VTaG93RGVsYXkgPSBmYWxzZSwgYXV0b0Rlc3Ryb3kgPSB0cnVlKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHRvb2x0aXBWYWx1ZSA9IHRoaXMudG9vbHRpcCgpO1xuICAgICAgICBjb25zdCB0b29sdGlwVGV4dCA9IHRvb2x0aXBWYWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHRvb2x0aXBWYWx1ZSA9PT0gbnVsbCA/ICcnIDogU3RyaW5nKHRvb2x0aXBWYWx1ZSk7XG4gICAgICAgIGlmICghdG9vbHRpcFRleHQubGVuZ3RoIHx8IHRoaXMub3ZlcmxheVJlZiAhPT0gbnVsbCkgcmV0dXJuO1xuXG4gICAgICAgIGlmICh0aGlzLmNoZWNrVHJ1bmNhdGVkVGV4dCgpICYmICF0aGlzLmNvbnRlbnRJc1RydW5jYXRlZCkgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IHBvc2l0aW9uU3RyYXRlZ3kgPSB0aGlzLmJ1aWxkUG9zaXRpb25TdHJhdGVneSgpO1xuICAgICAgICBjb25zdCBzY3JvbGxTdHJhdGVneSA9IHRoaXMub3ZlcmxheS5zY3JvbGxTdHJhdGVnaWVzLnJlcG9zaXRpb24oKTtcblxuICAgICAgICB0aGlzLm92ZXJsYXlSZWYgPSB0aGlzLm92ZXJsYXkuY3JlYXRlKHsgcG9zaXRpb25TdHJhdGVneSwgc2Nyb2xsU3RyYXRlZ3kgfSk7XG5cbiAgICAgICAgY29uc3QgcG9ydGFsID0gbmV3IENvbXBvbmVudFBvcnRhbChUb29sdGlwQ29tcG9uZW50KTtcbiAgICAgICAgdGhpcy5jb21wb25lbnRSZWYgPSB0aGlzLm92ZXJsYXlSZWYuYXR0YWNoKHBvcnRhbCk7XG5cbiAgICAgICAgdGhpcy5jb21wb25lbnRSZWYuc2V0SW5wdXQoJ3Rvb2x0aXAnLCB0b29sdGlwVGV4dCk7XG4gICAgICAgIHRoaXMuY29tcG9uZW50UmVmLnNldElucHV0KCdlc2NhcGUnLCB0aGlzLmVzY2FwZSgpKTtcbiAgICAgICAgdGhpcy5jb21wb25lbnRSZWYuc2V0SW5wdXQoJ3Bvc2l0aW9uJywgdGhpcy50b29sdGlwUG9zaXRpb24oKSk7XG5cbiAgICAgICAgdGhpcy5wb3NpdGlvbkNoYW5nZVN1YnNjcmlwdGlvbiA9IHBvc2l0aW9uU3RyYXRlZ3kucG9zaXRpb25DaGFuZ2VzLnN1YnNjcmliZSgoY2hhbmdlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBtYXBwZWRQb3NpdGlvbiA9IHRoaXMubWFwQ2RrUG9zaXRpb25Ub1Rvb2x0aXBQb3NpdGlvbihjaGFuZ2UuY29ubmVjdGlvblBhaXIpO1xuICAgICAgICAgICAgdGhpcy5jb21wb25lbnRSZWY/LnNldElucHV0KCdwb3NpdGlvbicsIG1hcHBlZFBvc2l0aW9uKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgZGVsYXkgPSB1c2VTaG93RGVsYXkgPyB0aGlzLnNob3dEZWxheSgpIDogMDtcbiAgICAgICAgdGhpcy5zaG93VGltZW91dCA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuY29tcG9uZW50UmVmPy5zZXRJbnB1dCgndmlzaWJsZScsIHRoaXMudmlzaWJsZSgpKTtcbiAgICAgICAgfSwgZGVsYXkpO1xuXG4gICAgICAgIGlmIChhdXRvRGVzdHJveSAmJiB0aGlzLmRpc3BsYXlUaW1lKCkpIHtcbiAgICAgICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmRlc3Ryb3koKTtcbiAgICAgICAgICAgIH0sIHRoaXMuZGlzcGxheVRpbWUoKSEpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBidWlsZFBvc2l0aW9uU3RyYXRlZ3koKTogRmxleGlibGVDb25uZWN0ZWRQb3NpdGlvblN0cmF0ZWd5IHtcbiAgICAgICAgY29uc3QgcHJlZmVycmVkID0gdGhpcy50b29sdGlwUG9zaXRpb24oKTtcbiAgICAgICAgY29uc3QgYWxsUG9zaXRpb25zOiBUb29sdGlwUG9zaXRpb25zW10gPSBbJ3RvcCcsICdib3R0b20nLCAnbGVmdCcsICdyaWdodCddO1xuICAgICAgICBjb25zdCBvcmRlcmVkUG9zaXRpb25zID0gW3ByZWZlcnJlZCwgLi4uYWxsUG9zaXRpb25zLmZpbHRlcigocCkgPT4gcCAhPT0gcHJlZmVycmVkKV07XG5cbiAgICAgICAgcmV0dXJuIHRoaXMub3ZlcmxheVxuICAgICAgICAgICAgLnBvc2l0aW9uKClcbiAgICAgICAgICAgIC5mbGV4aWJsZUNvbm5lY3RlZFRvKHRoaXMuZWxlbWVudFJlZilcbiAgICAgICAgICAgIC53aXRoUG9zaXRpb25zKG9yZGVyZWRQb3NpdGlvbnMubWFwKChwKSA9PiB0aGlzLmdldENvbm5lY3RlZFBvc2l0aW9uKHApKSlcbiAgICAgICAgICAgIC53aXRoRmxleGlibGVEaW1lbnNpb25zKGZhbHNlKVxuICAgICAgICAgICAgLndpdGhQdXNoKGZhbHNlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldENvbm5lY3RlZFBvc2l0aW9uKHBvczogVG9vbHRpcFBvc2l0aW9ucyk6IENvbm5lY3RlZFBvc2l0aW9uIHtcbiAgICAgICAgY29uc3Qgb2Zmc2V0ID0gMTA7XG4gICAgICAgIGNvbnN0IHBvc2l0aW9uTWFwOiBSZWNvcmQ8VG9vbHRpcFBvc2l0aW9ucywgQ29ubmVjdGVkUG9zaXRpb24+ID0ge1xuICAgICAgICAgICAgdG9wOiB7IG9yaWdpblg6ICdjZW50ZXInLCBvcmlnaW5ZOiAndG9wJywgb3ZlcmxheVg6ICdjZW50ZXInLCBvdmVybGF5WTogJ2JvdHRvbScsIG9mZnNldFk6IC1vZmZzZXQgfSxcbiAgICAgICAgICAgIGJvdHRvbTogeyBvcmlnaW5YOiAnY2VudGVyJywgb3JpZ2luWTogJ2JvdHRvbScsIG92ZXJsYXlYOiAnY2VudGVyJywgb3ZlcmxheVk6ICd0b3AnLCBvZmZzZXRZOiBvZmZzZXQgfSxcbiAgICAgICAgICAgIGxlZnQ6IHsgb3JpZ2luWDogJ3N0YXJ0Jywgb3JpZ2luWTogJ2NlbnRlcicsIG92ZXJsYXlYOiAnZW5kJywgb3ZlcmxheVk6ICdjZW50ZXInLCBvZmZzZXRYOiAtb2Zmc2V0IH0sXG4gICAgICAgICAgICByaWdodDogeyBvcmlnaW5YOiAnZW5kJywgb3JpZ2luWTogJ2NlbnRlcicsIG92ZXJsYXlYOiAnc3RhcnQnLCBvdmVybGF5WTogJ2NlbnRlcicsIG9mZnNldFg6IG9mZnNldCB9LFxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gcG9zaXRpb25NYXBbcG9zXTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG1hcENka1Bvc2l0aW9uVG9Ub29sdGlwUG9zaXRpb24ocGFpcjogeyBvdmVybGF5WDogc3RyaW5nOyBvdmVybGF5WTogc3RyaW5nIH0pOiBUb29sdGlwUG9zaXRpb25zIHtcbiAgICAgICAgaWYgKHBhaXIub3ZlcmxheVkgPT09ICdib3R0b20nKSByZXR1cm4gJ3RvcCc7XG4gICAgICAgIGlmIChwYWlyLm92ZXJsYXlZID09PSAndG9wJykgcmV0dXJuICdib3R0b20nO1xuICAgICAgICBpZiAocGFpci5vdmVybGF5WCA9PT0gJ2VuZCcpIHJldHVybiAnbGVmdCc7XG4gICAgICAgIHJldHVybiAncmlnaHQnO1xuICAgIH1cblxuICAgIHByaXZhdGUgZGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgd2luZG93LmNsZWFyVGltZW91dCh0aGlzLnNob3dUaW1lb3V0KTtcbiAgICAgICAgd2luZG93LmNsZWFyVGltZW91dCh0aGlzLnRvdWNoVGltZW91dCk7XG4gICAgICAgIHRoaXMucG9zaXRpb25DaGFuZ2VTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMucG9zaXRpb25DaGFuZ2VTdWJzY3JpcHRpb24gPSBudWxsO1xuICAgICAgICBpZiAodGhpcy5vdmVybGF5UmVmKSB7XG4gICAgICAgICAgICB0aGlzLm92ZXJsYXlSZWYuZGlzcG9zZSgpO1xuICAgICAgICAgICAgdGhpcy5vdmVybGF5UmVmID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMuY29tcG9uZW50UmVmID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0IGNvbnRlbnRJc1RydW5jYXRlZCgpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xuICAgICAgICByZXR1cm4gZWxlbWVudC5zY3JvbGxIZWlnaHQgPiBlbGVtZW50LmNsaWVudEhlaWdodCB8fCBlbGVtZW50LnNjcm9sbFdpZHRoID4gZWxlbWVudC5jbGllbnRXaWR0aDtcbiAgICB9XG59XG5cbiJdfQ==
@@ -42,11 +42,57 @@ export const getElementLeftoverContentAvailable = (element) => {
42
42
  freeDistanceToRight,
43
43
  };
44
44
  };
45
+ let scrollLockCount = 0;
46
+ let previousBodyOverflow = null;
47
+ /**
48
+ * @description Libera um lock de scroll adquirido via `disableScroll`. Como múltiplos overlays
49
+ * (ex: Drawer, SideSheet) podem estar abertos ao mesmo tempo e todos chamam essa mesma função,
50
+ * o scroll só é de fato reativado quando o último lock pendente é liberado — e restaura o valor
51
+ * de `overflow` anterior ao primeiro `disableScroll`, em vez de sempre forçar `'auto'`.
52
+ */
45
53
  export const enableScroll = () => {
46
- document.body.style.overflow = 'auto';
54
+ if (scrollLockCount === 0) {
55
+ return;
56
+ }
57
+ scrollLockCount--;
58
+ if (scrollLockCount === 0) {
59
+ document.body.style.overflow = previousBodyOverflow ?? '';
60
+ previousBodyOverflow = null;
61
+ }
47
62
  };
63
+ /**
64
+ * @description Bloqueia o scroll da página. Contabiliza quantos overlays pediram o bloqueio
65
+ * simultaneamente, para que fechar um não reative o scroll enquanto outro ainda estiver aberto.
66
+ */
48
67
  export const disableScroll = () => {
49
- document.body.style.overflow = 'hidden';
68
+ if (scrollLockCount === 0) {
69
+ previousBodyOverflow = document.body.style.overflow;
70
+ document.body.style.overflow = 'hidden';
71
+ }
72
+ scrollLockCount++;
73
+ };
74
+ /**
75
+ * @description Cria um controle de lock de scroll para uma instância (ex: um componente de
76
+ * overlay). Chamar `lock`/`unlock` várias vezes seguidas é seguro — cada instância só chama
77
+ * `disableScroll`/`enableScroll` (que ela mesma adquiriu, evitando liberar o lock de outro overlay
78
+ * por engano) na primeira vez que necessário.
79
+ */
80
+ export const createScrollLock = () => {
81
+ let locked = false;
82
+ return {
83
+ lock: () => {
84
+ if (!locked) {
85
+ disableScroll();
86
+ locked = true;
87
+ }
88
+ },
89
+ unlock: () => {
90
+ if (locked) {
91
+ enableScroll();
92
+ locked = false;
93
+ }
94
+ },
95
+ };
50
96
  };
51
97
  export function deepClone(value, weakMap = new WeakMap()) {
52
98
  if (value !== null && typeof value === 'object') {
@@ -101,4 +147,4 @@ export function deepClone(value, weakMap = new WeakMap()) {
101
147
  });
102
148
  return obj;
103
149
  }
104
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvdXRpbHMvc3JjL2xpYi91dGlscy91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFpQkEsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLENBQUMsTUFBTSxHQUFHLElBQUksRUFBRSxFQUFFO0lBQ3hDLE9BQU8sR0FBRyxNQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztBQUNoRyxDQUFDLENBQUM7QUFDRixNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLEtBQWMsRUFBRSxFQUFFLENBQUMsS0FBSyxLQUFLLElBQUksSUFBSSxLQUFLLEtBQUssU0FBUyxDQUFDO0FBQzNGLE1BQU0sQ0FBQyxNQUFNLCtCQUErQixHQUFHLENBQzNDLEtBQWdDLEVBQ2hDLFdBS0MsRUFDSCxFQUFFO0lBQ0EsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQztJQUM3QixNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDO0lBQzdCLE9BQU8sQ0FDSCxNQUFNLEdBQUcsV0FBVyxDQUFDLElBQUk7UUFDekIsTUFBTSxJQUFJLFdBQVcsQ0FBQyxLQUFLO1FBQzNCLE1BQU0sR0FBRyxXQUFXLENBQUMsR0FBRztRQUN4QixNQUFNLElBQUksV0FBVyxDQUFDLE1BQU0sQ0FDL0IsQ0FBQztBQUNOLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLENBQUMsT0FBb0IsRUFBbUIsRUFBRTtJQUM1RSxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMscUJBQXFCLEVBQUUs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RUFBRSxDQUFDO1FBQy9CLE9BQU8sS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQVEsQ0FBQztJQUNqQyxDQUFDO0lBRUQsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDeEQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFFeEIsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUVwQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7UUFDakIsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLHdCQUF3QixDQUFDLEtBQUssRUFBRSxHQUFHLENBQUUsQ0FBQztRQUUxRCxJQUFJLE9BQU8sSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsS0FBSyxHQUFHLFNBQVMsQ0FBRSxLQUFhLENBQUMsR0FBRyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDekQsQ0FBQztRQUVELE1BQU0sQ0FBQyxjQUFjLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUMxQyxDQUFDLENBQUMsQ0FBQztJQUVILE9BQU8sR0FBRyxDQUFDO0FBQ2YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIEVsZW1lbnRQb3NpdGlvbiA9IHtcbiAgICB0b3A6IG51bWJlcjtcbiAgICBsZWZ0OiBudW1iZXI7XG4gICAgcmlnaHQ6IG51bWJlcjtcbiAgICBlbGVtZW50SGVpZ2h0OiBudW1iZXI7XG4gICAgZWxlbWVudFdpZHRoOiBudW1iZXI7XG4gICAgZWxlbWVudFZlcnRpY2FsQ2VudGVyOiBudW1iZXI7XG4gICAgZWxlbWVudEhvcml6b250YWxDZW50ZXI6IG51bWJlcjtcbn07XG5cbmV4cG9ydCB0eXBlIEVsZW1lbnRMZWZ0b3ZlclBvc2l0aW9uID0ge1xuICAgIGZyZWVEaXN0YW5jZVRvQm90dG9tOiBudW1iZXI7XG4gICAgZnJlZURpc3RhbmNlVG9Ub3A6IG51bWJlcjtcbiAgICBmcmVlRGlzdGFuY2VUb0xlZnQ6IG51bWJlcjtcbiAgICBmcmVlRGlzdGFuY2VUb1JpZ2h0OiBudW1iZXI7XG59O1xuXG5leHBvcnQgY29uc3QgcmFuZG9tSGFzaCA9IChwcmVmaXggPSAnaWQnKSA9PiB7XG4gICAgcmV0dXJuIGAke3ByZWZpeH0tJHtNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJzdHJpbmcoMiwgOSl9LSR7RGF0ZS5ub3coKS50b1N0cmluZygzNil9YDtcbn07XG5leHBvcnQgY29uc3QgaXNOdWxsT3JVbmRlZmluZWQgPSAodmFsdWU6IHVua25vd24pID0+IHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQ7XG5leHBvcnQgY29uc3QgaXNNb3VzZVBvc2l0aW9uT3V0c2lkZU9mRWxlbWVudCA9IChcbiAgICBldmVudDogTW91c2VFdmVudCB8IFBvaW50ZXJFdmVudCxcbiAgICBlbGVtZW50QXJlYToge1xuICAgICAgICB0b3A6IG51bWJlcjtcbiAgICAgICAgcmlnaHQ6IG51bWJlcjtcbiAgICAgICAgbGVmdDogbnVtYmVyO1xuICAgICAgICBib3R0b206IG51bWJlcjtcbiAgICB9LFxuKSA9PiB7XG4gICAgY29uc3QgZXZlbnRYID0gZXZlbnQuY2xpZW50WDtcbiAgICBjb25zdCBldmVudFkgPSBldmVudC5jbGllbnRZO1xuICAgIHJldHVybiAoXG4gICAgICAgIGV2ZW50WCA8IGVsZW1lbnRBcmVhLmxlZnQgfHxcbiAgICAgICAgZXZlbnRYID49IGVsZW1lbnRBcmVhLnJpZ2h0IHx8XG4gICAgICAgIGV2ZW50WSA8IGVsZW1lbnRBcmVhLnRvcCB8fFxuICAgICAgICBldmVudFkgPj0gZWxlbWVudEFyZWEuYm90dG9tXG4gICAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRFbGVtZW50UG9zaXRpb25JbmZvID0gKGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogRWxlbWVudFBvc2l0aW9uID0+IHtcbiAgICBjb25zdCByZWN0ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBjb25zdCBzY3JvbGxUb3AgPSB3aW5kb3cuc2Nyb2xsWSB8fCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wO1xuICAgIGNvbnN0IHNjcm9sbExlZnQgPSB3aW5kb3cuc2Nyb2xsWCB8fCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsTGVmdDtcblxuICAgIGNvbnN0IGVsZW1lbnRIZWlnaHQgPSByZWN0LmhlaWdodDtcbiAgICBjb25zdCBlbGVtZW50V2lkdGggPSByZWN0LndpZHRoO1xuICAgIGNvbnN0IGVsZW1lbnRWZXJ0aWNhbENlbnRlciA9IGVsZW1lbnRIZWlnaHQgLyAyO1xuICAgIGNvbnN0IGVsZW1lbnRIb3Jpem9udGFsQ2VudGVyID0gZWxlbWVudFdpZHRoIC8gMjtcblxuICAgIHJldHVybiB7XG4gICAgICAgIHRvcDogcmVjdC50b3AgKyBzY3JvbGxUb3AsXG4gICAgICAgIGxlZnQ6IHJlY3QubGVmdCArIHNjcm9sbExlZnQsXG4gICAgICAgIHJpZ2h0OiByZWN0LmxlZnQgKyBzY3JvbGxMZWZ0ICsgZWxlbWVudFdpZHRoLFxuICAgICAgICBlbGVtZW50SGVpZ2h0LFxuICAgICAgICBlbGVtZW50V2lkdGgsXG4gICAgICAgIGVsZW1lbnRWZXJ0aWNhbENlbnRlcixcbiAgICAgICAgZWxlbWVudEhvcml6b250YWxDZW50ZXIsXG4gICAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRFbGVtZW50TGVmdG92ZXJDb250ZW50QXZhaWxhYmxlID0gKGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogRWxlbWVudExlZnRvdmVyUG9zaXRpb24gPT4ge1xuICAgIGNvbnN0IHdpbmRvd1dpZHRoID0gd2luZG93LmlubmVyV2lkdGg7XG4gICAgY29uc3QgcG9wb3ZlckVsZW1lbnRUcmlnZ2VyUmVjdCA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgY29uc3QgZnJlZURpc3RhbmNlVG9Cb3R0b20gPSB3aW5kb3cuaW5uZXJIZWlnaHQgLSBwb3BvdmVyRWxlbWVudFRyaWdnZXJSZWN0LmJvdHRvbTtcbiAgICBjb25zdCBmcmVlRGlzdGFuY2VUb1RvcCA9IHBvcG92ZXJFbGVtZW50VHJpZ2dlclJlY3QudG9wO1xuICAgIGNvbnN0IGZyZWVEaXN0YW5jZVRvTGVmdCA9IHBvcG92ZXJFbGVtZW50VHJpZ2dlclJlY3QubGVmdDtcbiAgICBjb25zdCBmcmVlRGlzdGFuY2VUb1JpZ2h0ID0gd2luZG93V2lkdGggLSBwb3BvdmVyRWxlbWVudFRyaWdnZXJSZWN0LnJpZ2h0O1xuICAgIHJldHVybiB7XG4gICAgICAgIGZyZWVEaXN0YW5jZVRvQm90dG9tLFxuICAgICAgICBmcmVlRGlzdGFuY2VUb1RvcCxcbiAgICAgICAgZnJlZURpc3RhbmNlVG9MZWZ0LFxuICAgICAgICBmcmVlRGlzdGFuY2VUb1JpZ2h0LFxuICAgIH07XG59O1xuXG5leHBvcnQgY29uc3QgZW5hYmxlU2Nyb2xsID0gKCk6IHZvaWQgPT4ge1xuICAgIGRvY3VtZW50LmJvZHkuc3R5bGUub3ZlcmZsb3cgPSAnYXV0byc7XG59O1xuXG5leHBvcnQgY29uc3QgZGlzYWJsZVNjcm9sbCA9ICgpOiB2b2lkID0+IHtcbiAgICBkb2N1bWVudC5ib2R5LnN0eWxlLm92ZXJmbG93ID0gJ2hpZGRlbic7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZGVlcENsb25lPFQ+KHZhbHVlOiBULCB3ZWFrTWFwID0gbmV3IFdlYWtNYXAoKSk6IFQge1xuICAgIGlmICh2YWx1ZSAhPT0gbnVsbCAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIGlmICh3ZWFrTWFwLmhhcyh2YWx1ZSkpIHJldHVybiB3ZWFrTWFwLmdldCh2YWx1ZSk7XG4gICAgfVxuXG4gICAgaWYgKHZhbHVlID09PSBudWxsIHx8IHR5cGVvZiB2YWx1ZSAhPT0gJ29iamVjdCcgfHwgdmFsdWUgaW5zdGFuY2VvZiBGdW5jdGlvbikge1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgICByZXR1cm4gbmV3IERhdGUodmFsdWUuZ2V0VGltZSgpKSBhcyBhbnk7XG4gICAgfVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgIGNvbnN0IGFycjogYW55W10gPSBbXTtcbiAgICAgICAgd2Vha01hcC5zZXQodmFsdWUsIGFycik7XG4gICAgICAgIHZhbHVlLmZvckVhY2goKGl0ZW0sIGkpID0+IHtcbiAgICAgICAgICAgIGFycltpXSA9IGRlZXBDbG9uZShpdGVtLCB3ZWFrTWFwKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBhcnIgYXMgYW55O1xuICAgIH1cblxuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIE1hcCkge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBuZXcgTWFwKCk7XG4gICAgICAgIHdlYWtNYXAuc2V0KHZhbHVlLCByZXN1bHQpO1xuICAgICAgICB2YWx1ZS5mb3JFYWNoKCh2LCBrKSA9PiB7XG4gICAgICAgICAgICByZXN1bHQuc2V0KGRlZXBDbG9uZShrLCB3ZWFrTWFwKSwgZGVlcENsb25lKHYsIHdlYWtNYXApKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiByZXN1bHQgYXMgYW55O1xuICAgIH1cblxuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIFNldCkge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBuZXcgU2V0KCk7XG4gICAgICAgIHdlYWtNYXAuc2V0KHZhbHVlLCByZXN1bHQpO1xuICAgICAgICB2YWx1ZS5mb3JFYWNoKCh2KSA9PiB7XG4gICAgICAgICAgICByZXN1bHQuYWRkKGRlZXBDbG9uZSh2LCB3ZWFrTWFwKSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcmVzdWx0IGFzIGFueTtcbiAgICB9XG5cbiAgICBpZiAoQXJyYXlCdWZmZXIuaXNWaWV3KHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gbmV3ICh2YWx1ZS5jb25zdHJ1Y3RvciBhcyBhbnkpKHZhbHVlKSBhcyBhbnk7XG4gICAgfVxuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZS5zbGljZSgwKSBhcyBhbnk7XG4gICAgfVxuXG4gICAgY29uc3Qgb2JqID0gT2JqZWN0LmNyZWF0ZShPYmplY3QuZ2V0UHJvdG90eXBlT2YodmFsdWUpKTtcbiAgICB3ZWFrTWFwLnNldCh2YWx1ZSwgb2JqKTtcblxuICAgIGNvbnN0IGtleXMgPSBSZWZsZWN0Lm93bktleXModmFsdWUpO1xuXG4gICAga2V5cy5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgY29uc3QgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodmFsdWUsIGtleSkhO1xuXG4gICAgICAgIGlmICgndmFsdWUnIGluIGRlc2MpIHtcbiAgICAgICAgICAgIGRlc2MudmFsdWUgPSBkZWVwQ2xvbmUoKHZhbHVlIGFzIGFueSlba2V5XSwgd2Vha01hcCk7XG4gICAgICAgIH1cblxuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIGRlc2MpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIG9iajtcbn1cbiJdfQ==
150
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvdXRpbHMvc3JjL2xpYi91dGlscy91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFpQkEsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLENBQUMsTUFBTSxHQUFHLElBQUksRUFBRSxFQUFFO0lBQ3hDLE9BQU8sR0FBRyxNQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztBQUNoRyxDQUFDLENBQUM7QUFDRixNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLEtBQWMsRUFBRSxFQUFFLENBQUMsS0FBSyxLQUFLLElBQUksSUFBSSxLQUFLLEtBQUssU0FBUyxDQUFDO0FBQzNGLE1BQU0sQ0FBQyxNQUFNLCtCQUErQixHQUFHLENBQzNDLEtBQWdDLEVBQ2hDLFdBS0MsRUFDSCxFQUFFO0lBQ0EsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQztJQUM3QixNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDO0lBQzdCLE9BQU8sQ0FDSCxNQUFNLEdBQUcsV0FBVyxDQUFDLElBQUk7UUFDekIsTUFBTSxJQUFJLFdBQVcsQ0FBQyxLQUFLO1FBQzNCLE1BQU0sR0FBRyxXQUFXLENBQUMsR0FBRztRQUN4QixNQUFNLElBQUksV0FBVyxDQUFDLE1BQU0sQ0FDL0IsQ0FBQztBQUNOLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLENBQUMsT0FBb0IsRUFBbUIsRUFBRTtJQUM1RSxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMscUJBQXFCLEVBQUUs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TyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFFeEIsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUVwQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7UUFDakIsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLHdCQUF3QixDQUFDLEtBQUssRUFBRSxHQUFHLENBQUUsQ0FBQztRQUUxRCxJQUFJLE9BQU8sSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsS0FBSyxHQUFHLFNBQVMsQ0FBRSxLQUFhLENBQUMsR0FBRyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDekQsQ0FBQztRQUVELE1BQU0sQ0FBQyxjQUFjLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUMxQyxDQUFDLENBQUMsQ0FBQztJQUVILE9BQU8sR0FBRyxDQUFDO0FBQ2YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIEVsZW1lbnRQb3NpdGlvbiA9IHtcbiAgICB0b3A6IG51bWJlcjtcbiAgICBsZWZ0OiBudW1iZXI7XG4gICAgcmlnaHQ6IG51bWJlcjtcbiAgICBlbGVtZW50SGVpZ2h0OiBudW1iZXI7XG4gICAgZWxlbWVudFdpZHRoOiBudW1iZXI7XG4gICAgZWxlbWVudFZlcnRpY2FsQ2VudGVyOiBudW1iZXI7XG4gICAgZWxlbWVudEhvcml6b250YWxDZW50ZXI6IG51bWJlcjtcbn07XG5cbmV4cG9ydCB0eXBlIEVsZW1lbnRMZWZ0b3ZlclBvc2l0aW9uID0ge1xuICAgIGZyZWVEaXN0YW5jZVRvQm90dG9tOiBudW1iZXI7XG4gICAgZnJlZURpc3RhbmNlVG9Ub3A6IG51bWJlcjtcbiAgICBmcmVlRGlzdGFuY2VUb0xlZnQ6IG51bWJlcjtcbiAgICBmcmVlRGlzdGFuY2VUb1JpZ2h0OiBudW1iZXI7XG59O1xuXG5leHBvcnQgY29uc3QgcmFuZG9tSGFzaCA9IChwcmVmaXggPSAnaWQnKSA9PiB7XG4gICAgcmV0dXJuIGAke3ByZWZpeH0tJHtNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJzdHJpbmcoMiwgOSl9LSR7RGF0ZS5ub3coKS50b1N0cmluZygzNil9YDtcbn07XG5leHBvcnQgY29uc3QgaXNOdWxsT3JVbmRlZmluZWQgPSAodmFsdWU6IHVua25vd24pID0+IHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQ7XG5leHBvcnQgY29uc3QgaXNNb3VzZVBvc2l0aW9uT3V0c2lkZU9mRWxlbWVudCA9IChcbiAgICBldmVudDogTW91c2VFdmVudCB8IFBvaW50ZXJFdmVudCxcbiAgICBlbGVtZW50QXJlYToge1xuICAgICAgICB0b3A6IG51bWJlcjtcbiAgICAgICAgcmlnaHQ6IG51bWJlcjtcbiAgICAgICAgbGVmdDogbnVtYmVyO1xuICAgICAgICBib3R0b206IG51bWJlcjtcbiAgICB9LFxuKSA9PiB7XG4gICAgY29uc3QgZXZlbnRYID0gZXZlbnQuY2xpZW50WDtcbiAgICBjb25zdCBldmVudFkgPSBldmVudC5jbGllbnRZO1xuICAgIHJldHVybiAoXG4gICAgICAgIGV2ZW50WCA8IGVsZW1lbnRBcmVhLmxlZnQgfHxcbiAgICAgICAgZXZlbnRYID49IGVsZW1lbnRBcmVhLnJpZ2h0IHx8XG4gICAgICAgIGV2ZW50WSA8IGVsZW1lbnRBcmVhLnRvcCB8fFxuICAgICAgICBldmVudFkgPj0gZWxlbWVudEFyZWEuYm90dG9tXG4gICAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRFbGVtZW50UG9zaXRpb25JbmZvID0gKGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogRWxlbWVudFBvc2l0aW9uID0+IHtcbiAgICBjb25zdCByZWN0ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBjb25zdCBzY3JvbGxUb3AgPSB3aW5kb3cuc2Nyb2xsWSB8fCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wO1xuICAgIGNvbnN0IHNjcm9sbExlZnQgPSB3aW5kb3cuc2Nyb2xsWCB8fCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsTGVmdDtcblxuICAgIGNvbnN0IGVsZW1lbnRIZWlnaHQgPSByZWN0LmhlaWdodDtcbiAgICBjb25zdCBlbGVtZW50V2lkdGggPSByZWN0LndpZHRoO1xuICAgIGNvbnN0IGVsZW1lbnRWZXJ0aWNhbENlbnRlciA9IGVsZW1lbnRIZWlnaHQgLyAyO1xuICAgIGNvbnN0IGVsZW1lbnRIb3Jpem9udGFsQ2VudGVyID0gZWxlbWVudFdpZHRoIC8gMjtcblxuICAgIHJldHVybiB7XG4gICAgICAgIHRvcDogcmVjdC50b3AgKyBzY3JvbGxUb3AsXG4gICAgICAgIGxlZnQ6IHJlY3QubGVmdCArIHNjcm9sbExlZnQsXG4gICAgICAgIHJpZ2h0OiByZWN0LmxlZnQgKyBzY3JvbGxMZWZ0ICsgZWxlbWVudFdpZHRoLFxuICAgICAgICBlbGVtZW50SGVpZ2h0LFxuICAgICAgICBlbGVtZW50V2lkdGgsXG4gICAgICAgIGVsZW1lbnRWZXJ0aWNhbENlbnRlcixcbiAgICAgICAgZWxlbWVudEhvcml6b250YWxDZW50ZXIsXG4gICAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRFbGVtZW50TGVmdG92ZXJDb250ZW50QXZhaWxhYmxlID0gKGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogRWxlbWVudExlZnRvdmVyUG9zaXRpb24gPT4ge1xuICAgIGNvbnN0IHdpbmRvd1dpZHRoID0gd2luZG93LmlubmVyV2lkdGg7XG4gICAgY29uc3QgcG9wb3ZlckVsZW1lbnRUcmlnZ2VyUmVjdCA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgY29uc3QgZnJlZURpc3RhbmNlVG9Cb3R0b20gPSB3aW5kb3cuaW5uZXJIZWlnaHQgLSBwb3BvdmVyRWxlbWVudFRyaWdnZXJSZWN0LmJvdHRvbTtcbiAgICBjb25zdCBmcmVlRGlzdGFuY2VUb1RvcCA9IHBvcG92ZXJFbGVtZW50VHJpZ2dlclJlY3QudG9wO1xuICAgIGNvbnN0IGZyZWVEaXN0YW5jZVRvTGVmdCA9IHBvcG92ZXJFbGVtZW50VHJpZ2dlclJlY3QubGVmdDtcbiAgICBjb25zdCBmcmVlRGlzdGFuY2VUb1JpZ2h0ID0gd2luZG93V2lkdGggLSBwb3BvdmVyRWxlbWVudFRyaWdnZXJSZWN0LnJpZ2h0O1xuICAgIHJldHVybiB7XG4gICAgICAgIGZyZWVEaXN0YW5jZVRvQm90dG9tLFxuICAgICAgICBmcmVlRGlzdGFuY2VUb1RvcCxcbiAgICAgICAgZnJlZURpc3RhbmNlVG9MZWZ0LFxuICAgICAgICBmcmVlRGlzdGFuY2VUb1JpZ2h0LFxuICAgIH07XG59O1xuXG5sZXQgc2Nyb2xsTG9ja0NvdW50ID0gMDtcbmxldCBwcmV2aW91c0JvZHlPdmVyZmxvdzogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIExpYmVyYSB1bSBsb2NrIGRlIHNjcm9sbCBhZHF1aXJpZG8gdmlhIGBkaXNhYmxlU2Nyb2xsYC4gQ29tbyBtw7psdGlwbG9zIG92ZXJsYXlzXG4gKiAoZXg6IERyYXdlciwgU2lkZVNoZWV0KSBwb2RlbSBlc3RhciBhYmVydG9zIGFvIG1lc21vIHRlbXBvIGUgdG9kb3MgY2hhbWFtIGVzc2EgbWVzbWEgZnVuw6fDo28sXG4gKiBvIHNjcm9sbCBzw7Mgw6kgZGUgZmF0byByZWF0aXZhZG8gcXVhbmRvIG8gw7psdGltbyBsb2NrIHBlbmRlbnRlIMOpIGxpYmVyYWRvIOKAlCBlIHJlc3RhdXJhIG8gdmFsb3JcbiAqIGRlIGBvdmVyZmxvd2AgYW50ZXJpb3IgYW8gcHJpbWVpcm8gYGRpc2FibGVTY3JvbGxgLCBlbSB2ZXogZGUgc2VtcHJlIGZvcsOnYXIgYCdhdXRvJ2AuXG4gKi9cbmV4cG9ydCBjb25zdCBlbmFibGVTY3JvbGwgPSAoKTogdm9pZCA9PiB7XG4gICAgaWYgKHNjcm9sbExvY2tDb3VudCA9PT0gMCkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIHNjcm9sbExvY2tDb3VudC0tO1xuICAgIGlmIChzY3JvbGxMb2NrQ291bnQgPT09IDApIHtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdyA9IHByZXZpb3VzQm9keU92ZXJmbG93ID8/ICcnO1xuICAgICAgICBwcmV2aW91c0JvZHlPdmVyZmxvdyA9IG51bGw7XG4gICAgfVxufTtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gQmxvcXVlaWEgbyBzY3JvbGwgZGEgcMOhZ2luYS4gQ29udGFiaWxpemEgcXVhbnRvcyBvdmVybGF5cyBwZWRpcmFtIG8gYmxvcXVlaW9cbiAqIHNpbXVsdGFuZWFtZW50ZSwgcGFyYSBxdWUgZmVjaGFyIHVtIG7Do28gcmVhdGl2ZSBvIHNjcm9sbCBlbnF1YW50byBvdXRybyBhaW5kYSBlc3RpdmVyIGFiZXJ0by5cbiAqL1xuZXhwb3J0IGNvbnN0IGRpc2FibGVTY3JvbGwgPSAoKTogdm9pZCA9PiB7XG4gICAgaWYgKHNjcm9sbExvY2tDb3VudCA9PT0gMCkge1xuICAgICAgICBwcmV2aW91c0JvZHlPdmVyZmxvdyA9IGRvY3VtZW50LmJvZHkuc3R5bGUub3ZlcmZsb3c7XG4gICAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUub3ZlcmZsb3cgPSAnaGlkZGVuJztcbiAgICB9XG4gICAgc2Nyb2xsTG9ja0NvdW50Kys7XG59O1xuXG5leHBvcnQgdHlwZSBTY3JvbGxMb2NrID0ge1xuICAgIGxvY2s6ICgpID0+IHZvaWQ7XG4gICAgdW5sb2NrOiAoKSA9PiB2b2lkO1xufTtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gQ3JpYSB1bSBjb250cm9sZSBkZSBsb2NrIGRlIHNjcm9sbCBwYXJhIHVtYSBpbnN0w6JuY2lhIChleDogdW0gY29tcG9uZW50ZSBkZVxuICogb3ZlcmxheSkuIENoYW1hciBgbG9ja2AvYHVubG9ja2AgdsOhcmlhcyB2ZXplcyBzZWd1aWRhcyDDqSBzZWd1cm8g4oCUIGNhZGEgaW5zdMOibmNpYSBzw7MgY2hhbWFcbiAqIGBkaXNhYmxlU2Nyb2xsYC9gZW5hYmxlU2Nyb2xsYCAocXVlIGVsYSBtZXNtYSBhZHF1aXJpdSwgZXZpdGFuZG8gbGliZXJhciBvIGxvY2sgZGUgb3V0cm8gb3ZlcmxheVxuICogcG9yIGVuZ2FubykgbmEgcHJpbWVpcmEgdmV6IHF1ZSBuZWNlc3PDoXJpby5cbiAqL1xuZXhwb3J0IGNvbnN0IGNyZWF0ZVNjcm9sbExvY2sgPSAoKTogU2Nyb2xsTG9jayA9PiB7XG4gICAgbGV0IGxvY2tlZCA9IGZhbHNlO1xuICAgIHJldHVybiB7XG4gICAgICAgIGxvY2s6ICgpID0+IHtcbiAgICAgICAgICAgIGlmICghbG9ja2VkKSB7XG4gICAgICAgICAgICAgICAgZGlzYWJsZVNjcm9sbCgpO1xuICAgICAgICAgICAgICAgIGxvY2tlZCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHVubG9jazogKCkgPT4ge1xuICAgICAgICAgICAgaWYgKGxvY2tlZCkge1xuICAgICAgICAgICAgICAgIGVuYWJsZVNjcm9sbCgpO1xuICAgICAgICAgICAgICAgIGxvY2tlZCA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgIH07XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZGVlcENsb25lPFQ+KHZhbHVlOiBULCB3ZWFrTWFwID0gbmV3IFdlYWtNYXAoKSk6IFQge1xuICAgIGlmICh2YWx1ZSAhPT0gbnVsbCAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIGlmICh3ZWFrTWFwLmhhcyh2YWx1ZSkpIHJldHVybiB3ZWFrTWFwLmdldCh2YWx1ZSk7XG4gICAgfVxuXG4gICAgaWYgKHZhbHVlID09PSBudWxsIHx8IHR5cGVvZiB2YWx1ZSAhPT0gJ29iamVjdCcgfHwgdmFsdWUgaW5zdGFuY2VvZiBGdW5jdGlvbikge1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgICByZXR1cm4gbmV3IERhdGUodmFsdWUuZ2V0VGltZSgpKSBhcyBhbnk7XG4gICAgfVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgIGNvbnN0IGFycjogYW55W10gPSBbXTtcbiAgICAgICAgd2Vha01hcC5zZXQodmFsdWUsIGFycik7XG4gICAgICAgIHZhbHVlLmZvckVhY2goKGl0ZW0sIGkpID0+IHtcbiAgICAgICAgICAgIGFycltpXSA9IGRlZXBDbG9uZShpdGVtLCB3ZWFrTWFwKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBhcnIgYXMgYW55O1xuICAgIH1cblxuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIE1hcCkge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBuZXcgTWFwKCk7XG4gICAgICAgIHdlYWtNYXAuc2V0KHZhbHVlLCByZXN1bHQpO1xuICAgICAgICB2YWx1ZS5mb3JFYWNoKCh2LCBrKSA9PiB7XG4gICAgICAgICAgICByZXN1bHQuc2V0KGRlZXBDbG9uZShrLCB3ZWFrTWFwKSwgZGVlcENsb25lKHYsIHdlYWtNYXApKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiByZXN1bHQgYXMgYW55O1xuICAgIH1cblxuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIFNldCkge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBuZXcgU2V0KCk7XG4gICAgICAgIHdlYWtNYXAuc2V0KHZhbHVlLCByZXN1bHQpO1xuICAgICAgICB2YWx1ZS5mb3JFYWNoKCh2KSA9PiB7XG4gICAgICAgICAgICByZXN1bHQuYWRkKGRlZXBDbG9uZSh2LCB3ZWFrTWFwKSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcmVzdWx0IGFzIGFueTtcbiAgICB9XG5cbiAgICBpZiAoQXJyYXlCdWZmZXIuaXNWaWV3KHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gbmV3ICh2YWx1ZS5jb25zdHJ1Y3RvciBhcyBhbnkpKHZhbHVlKSBhcyBhbnk7XG4gICAgfVxuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZS5zbGljZSgwKSBhcyBhbnk7XG4gICAgfVxuXG4gICAgY29uc3Qgb2JqID0gT2JqZWN0LmNyZWF0ZShPYmplY3QuZ2V0UHJvdG90eXBlT2YodmFsdWUpKTtcbiAgICB3ZWFrTWFwLnNldCh2YWx1ZSwgb2JqKTtcblxuICAgIGNvbnN0IGtleXMgPSBSZWZsZWN0Lm93bktleXModmFsdWUpO1xuXG4gICAga2V5cy5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgY29uc3QgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodmFsdWUsIGtleSkhO1xuXG4gICAgICAgIGlmICgndmFsdWUnIGluIGRlc2MpIHtcbiAgICAgICAgICAgIGRlc2MudmFsdWUgPSBkZWVwQ2xvbmUoKHZhbHVlIGFzIGFueSlba2V5XSwgd2Vha01hcCk7XG4gICAgICAgIH1cblxuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIGRlc2MpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIG9iajtcbn1cbiJdfQ==