@tolle_/tolle-ui 18.2.24 → 18.2.25

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 (184) hide show
  1. package/esm2022/lib/accordion-item.component.mjs +17 -5
  2. package/esm2022/lib/alert-dialog-dynamic.component.mjs +1 -1
  3. package/esm2022/lib/alert-dialog.component.mjs +48 -10
  4. package/esm2022/lib/alert-dialog.service.mjs +13 -2
  5. package/esm2022/lib/alert.component.mjs +5 -5
  6. package/esm2022/lib/avatar.component.mjs +30 -9
  7. package/esm2022/lib/badge.component.mjs +41 -15
  8. package/esm2022/lib/breadcrumb-link.component.mjs +5 -5
  9. package/esm2022/lib/button.component.mjs +14 -3
  10. package/esm2022/lib/calendar.component.mjs +99 -17
  11. package/esm2022/lib/card.component.mjs +29 -9
  12. package/esm2022/lib/carousel/carousel.component.mjs +19 -3
  13. package/esm2022/lib/checkbox.component.mjs +44 -21
  14. package/esm2022/lib/collapsible.component.mjs +12 -4
  15. package/esm2022/lib/country-selector.component.mjs +140 -20
  16. package/esm2022/lib/data-table.component.mjs +27 -16
  17. package/esm2022/lib/date-picker.component.mjs +24 -4
  18. package/esm2022/lib/date-range-picker.component.mjs +37 -9
  19. package/esm2022/lib/dropdown-item.component.mjs +19 -5
  20. package/esm2022/lib/dropdown-label.component.mjs +3 -3
  21. package/esm2022/lib/dropdown-menu.component.mjs +3 -3
  22. package/esm2022/lib/dropdown-separator.component.mjs +3 -3
  23. package/esm2022/lib/dropdown-trigger.directive.mjs +7 -3
  24. package/esm2022/lib/empty-state.component.mjs +3 -3
  25. package/esm2022/lib/hover-card.component.mjs +4 -2
  26. package/esm2022/lib/input.component.mjs +7 -5
  27. package/esm2022/lib/label.component.mjs +2 -2
  28. package/esm2022/lib/masked-input.component.mjs +3 -3
  29. package/esm2022/lib/modal.component.mjs +58 -22
  30. package/esm2022/lib/modal.service.mjs +13 -1
  31. package/esm2022/lib/multi-select.component.mjs +228 -20
  32. package/esm2022/lib/otp.component.mjs +6 -3
  33. package/esm2022/lib/pagination.component.mjs +19 -9
  34. package/esm2022/lib/progress.component.mjs +8 -5
  35. package/esm2022/lib/radio-group.component.mjs +51 -3
  36. package/esm2022/lib/radio-item.component.mjs +46 -8
  37. package/esm2022/lib/radio-service.mjs +60 -1
  38. package/esm2022/lib/range-calendar.component.mjs +317 -98
  39. package/esm2022/lib/resizable-panel.component.mjs +5 -4
  40. package/esm2022/lib/scroll-area.component.mjs +5 -5
  41. package/esm2022/lib/segment.component.mjs +73 -7
  42. package/esm2022/lib/select-item.component.mjs +20 -2
  43. package/esm2022/lib/select-separator.component.mjs +3 -3
  44. package/esm2022/lib/select.component.mjs +221 -14
  45. package/esm2022/lib/separator.component.mjs +12 -6
  46. package/esm2022/lib/sheet-ref.mjs +8 -1
  47. package/esm2022/lib/sheet-wrapper.component.mjs +27 -11
  48. package/esm2022/lib/sheet.component.mjs +57 -16
  49. package/esm2022/lib/sheet.service.mjs +5 -1
  50. package/esm2022/lib/sidebar.component.mjs +73 -15
  51. package/esm2022/lib/skeleton.component.mjs +19 -5
  52. package/esm2022/lib/switch.component.mjs +59 -53
  53. package/esm2022/lib/tabs.component.mjs +75 -13
  54. package/esm2022/lib/tag-input.component.mjs +6 -3
  55. package/esm2022/lib/textarea.component.mjs +9 -7
  56. package/esm2022/lib/theme.service.mjs +114 -138
  57. package/esm2022/lib/toaster.component.mjs +19 -9
  58. package/esm2022/lib/toggle-group.component.mjs +76 -4
  59. package/esm2022/lib/tolle-config.mjs +1 -1
  60. package/esm2022/lib/tooltip.directive.mjs +41 -17
  61. package/esm2022/lib/utils/color.mjs +324 -0
  62. package/esm2022/public-api.mjs +2 -1
  63. package/fesm2022/tolle-ui.mjs +2645 -637
  64. package/fesm2022/tolle-ui.mjs.map +1 -1
  65. package/lib/alert-dialog.component.d.ts +10 -1
  66. package/lib/avatar.component.d.ts +16 -3
  67. package/lib/badge.component.d.ts +17 -5
  68. package/lib/button.component.d.ts +10 -3
  69. package/lib/calendar.component.d.ts +21 -3
  70. package/lib/card.component.d.ts +6 -0
  71. package/lib/carousel/carousel.component.d.ts +1 -0
  72. package/lib/checkbox.component.d.ts +12 -4
  73. package/lib/country-selector.component.d.ts +11 -2
  74. package/lib/date-picker.component.d.ts +1 -0
  75. package/lib/date-range-picker.component.d.ts +4 -1
  76. package/lib/dropdown-item.component.d.ts +4 -2
  77. package/lib/dropdown-trigger.directive.d.ts +1 -1
  78. package/lib/modal.component.d.ts +6 -0
  79. package/lib/multi-select.component.d.ts +20 -0
  80. package/lib/otp.component.d.ts +1 -0
  81. package/lib/progress.component.d.ts +1 -0
  82. package/lib/radio-group.component.d.ts +8 -0
  83. package/lib/radio-item.component.d.ts +10 -4
  84. package/lib/radio-service.d.ts +29 -0
  85. package/lib/range-calendar.component.d.ts +33 -4
  86. package/lib/segment.component.d.ts +13 -0
  87. package/lib/select-item.component.d.ts +4 -1
  88. package/lib/select.component.d.ts +20 -0
  89. package/lib/separator.component.d.ts +2 -0
  90. package/lib/sheet-wrapper.component.d.ts +4 -0
  91. package/lib/sheet.component.d.ts +10 -1
  92. package/lib/sidebar.component.d.ts +2 -0
  93. package/lib/skeleton.component.d.ts +9 -3
  94. package/lib/switch.component.d.ts +13 -20
  95. package/lib/tabs.component.d.ts +11 -1
  96. package/lib/theme.service.d.ts +21 -6
  97. package/lib/toaster.component.d.ts +2 -2
  98. package/lib/toggle-group.component.d.ts +20 -2
  99. package/lib/toggle.component.d.ts +1 -1
  100. package/lib/tolle-config.d.ts +8 -0
  101. package/lib/tooltip.directive.d.ts +3 -0
  102. package/lib/utils/color.d.ts +87 -0
  103. package/package.json +4 -1
  104. package/preset.js +28 -0
  105. package/public-api.d.ts +1 -0
  106. package/registry/docs-content.json +4214 -0
  107. package/registry/llms-full.txt +1599 -0
  108. package/registry/llms.txt +83 -0
  109. package/registry/manifest.json +4925 -0
  110. package/registry/r/accordion-item.json +21 -0
  111. package/registry/r/accordion.json +23 -0
  112. package/registry/r/alert-dialog-dynamic.json +31 -0
  113. package/registry/r/alert-dialog.json +26 -0
  114. package/registry/r/alert.json +23 -0
  115. package/registry/r/aspect-ratio.json +21 -0
  116. package/registry/r/avatar-fallback.json +16 -0
  117. package/registry/r/avatar.json +23 -0
  118. package/registry/r/badge.json +23 -0
  119. package/registry/r/breadcrumb-item.json +16 -0
  120. package/registry/r/breadcrumb-link.json +16 -0
  121. package/registry/r/breadcrumb-separator.json +16 -0
  122. package/registry/r/breadcrumb.json +21 -0
  123. package/registry/r/button-group.json +21 -0
  124. package/registry/r/button.json +23 -0
  125. package/registry/r/calendar.json +23 -0
  126. package/registry/r/card.json +21 -0
  127. package/registry/r/carousel.json +18 -0
  128. package/registry/r/checkbox.json +23 -0
  129. package/registry/r/collapsible.json +21 -0
  130. package/registry/r/context-menu-trigger.json +23 -0
  131. package/registry/r/context-menu.json +28 -0
  132. package/registry/r/country-selector.json +31 -0
  133. package/registry/r/data-table.json +38 -0
  134. package/registry/r/date-picker.json +27 -0
  135. package/registry/r/date-range-picker.json +32 -0
  136. package/registry/r/dropdown-item.json +21 -0
  137. package/registry/r/dropdown-label.json +16 -0
  138. package/registry/r/dropdown-menu.json +16 -0
  139. package/registry/r/dropdown-separator.json +16 -0
  140. package/registry/r/dropdown-trigger.json +20 -0
  141. package/registry/r/empty-state.json +23 -0
  142. package/registry/r/hover-card.json +23 -0
  143. package/registry/r/input.json +21 -0
  144. package/registry/r/label.json +21 -0
  145. package/registry/r/masked-input.json +21 -0
  146. package/registry/r/modal.json +36 -0
  147. package/registry/r/multi-select.json +33 -0
  148. package/registry/r/otp-group.json +16 -0
  149. package/registry/r/otp-slot.json +21 -0
  150. package/registry/r/otp.json +21 -0
  151. package/registry/r/pagination.json +32 -0
  152. package/registry/r/phone-number-input.json +34 -0
  153. package/registry/r/popover-content.json +21 -0
  154. package/registry/r/popover.json +18 -0
  155. package/registry/r/progress.json +21 -0
  156. package/registry/r/radio-group.json +26 -0
  157. package/registry/r/radio-item.json +26 -0
  158. package/registry/r/range-calendar.json +28 -0
  159. package/registry/r/resizable-panel-item.json +23 -0
  160. package/registry/r/resizable-panel.json +23 -0
  161. package/registry/r/resizable.json +21 -0
  162. package/registry/r/scroll-area.json +21 -0
  163. package/registry/r/segment.json +21 -0
  164. package/registry/r/select-group.json +21 -0
  165. package/registry/r/select-item.json +26 -0
  166. package/registry/r/select-separator.json +21 -0
  167. package/registry/r/select.json +31 -0
  168. package/registry/r/separator.json +21 -0
  169. package/registry/r/sheet-wrapper.json +31 -0
  170. package/registry/r/sheet.json +21 -0
  171. package/registry/r/sidebar.json +21 -0
  172. package/registry/r/skeleton.json +23 -0
  173. package/registry/r/slider.json +21 -0
  174. package/registry/r/switch.json +23 -0
  175. package/registry/r/tabs.json +23 -0
  176. package/registry/r/tag-input.json +25 -0
  177. package/registry/r/textarea.json +21 -0
  178. package/registry/r/toaster.json +26 -0
  179. package/registry/r/toggle-group.json +25 -0
  180. package/registry/r/toggle.json +23 -0
  181. package/registry/r/tolle-cell.json +16 -0
  182. package/registry/r/tooltip.json +23 -0
  183. package/registry/registry.json +1540 -0
  184. package/theme.css +56 -1
@@ -156,8 +156,8 @@ export class InputComponent {
156
156
  (focus)="onFocus()"
157
157
  (input)="onInputChange($event)"
158
158
  [class]="computedInputClass"
159
- [attr.aria-invalid]="error"
160
- [attr.aria-describedby]="error && errorMessage ? id + '-error' : null"
159
+ [attr.aria-invalid]="error || null"
160
+ [attr.aria-describedby]="error && errorMessage ? id + '-error' : (hint ? id + '-hint' : null)"
161
161
  />
162
162
 
163
163
  <div class="h-full flex items-center text-muted-foreground group-focus-within:text-primary transition-colors duration-200">
@@ -168,6 +168,7 @@ export class InputComponent {
168
168
  <ng-container *ngIf="!disabled">
169
169
  <p
170
170
  *ngIf="hint && !error"
171
+ [id]="id + '-hint'"
171
172
  class="text-xs text-muted-foreground px-1 transition-opacity duration-200"
172
173
  [class.opacity-0]="isFocused && hideHintOnFocus"
173
174
  >
@@ -226,8 +227,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
226
227
  (focus)="onFocus()"
227
228
  (input)="onInputChange($event)"
228
229
  [class]="computedInputClass"
229
- [attr.aria-invalid]="error"
230
- [attr.aria-describedby]="error && errorMessage ? id + '-error' : null"
230
+ [attr.aria-invalid]="error || null"
231
+ [attr.aria-describedby]="error && errorMessage ? id + '-error' : (hint ? id + '-hint' : null)"
231
232
  />
232
233
 
233
234
  <div class="h-full flex items-center text-muted-foreground group-focus-within:text-primary transition-colors duration-200">
@@ -238,6 +239,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
238
239
  <ng-container *ngIf="!disabled">
239
240
  <p
240
241
  *ngIf="hint && !error"
242
+ [id]="id + '-hint'"
241
243
  class="text-xs text-muted-foreground px-1 transition-opacity duration-200"
242
244
  [class.opacity-0]="isFocused && hideHintOnFocus"
243
245
  >
@@ -284,4 +286,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
284
286
  }], hideHintOnFocus: [{
285
287
  type: Input
286
288
  }] } });
287
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvdG9sbGUvc3JjL2xpYi9pbnB1dC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFpQyxTQUFTLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ3RILE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQXdCLGlCQUFpQixFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RGLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxZQUFZLENBQUM7Ozs7QUFzRWhDLE1BQU0sT0FBTyxjQUFjO0lBMEJMO0lBekJPLFlBQVksQ0FBZ0M7SUFFOUQsRUFBRSxHQUFXLFNBQVMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDaEUsS0FBSyxHQUFXLEVBQUUsQ0FBQztJQUNuQixJQUFJLEdBQVcsRUFBRSxDQUFDO0lBQ2xCLFlBQVksR0FBVyxFQUFFLENBQUM7SUFDMUIsSUFBSSxHQUFXLE1BQU0sQ0FBQztJQUN0QixXQUFXLEdBQVcsRUFBRSxDQUFDO0lBQ3pCLElBQUksR0FBbUMsU0FBUyxDQUFDO0lBQ2pELGNBQWMsR0FBVyxFQUFFLENBQUM7SUFDNUIsS0FBSyxHQUFXLEVBQUUsQ0FBQztJQUU1QixhQUFhO0lBQ0osUUFBUSxHQUFZLEtBQUssQ0FBQztJQUMxQixRQUFRLEdBQVksS0FBSyxDQUFDO0lBQzFCLEtBQUssR0FBWSxLQUFLLENBQUM7SUFFaEMsaUJBQWlCO0lBQ1IsZUFBZSxHQUFZLElBQUksQ0FBQztJQUV6QyxLQUFLLEdBQVEsRUFBRSxDQUFDO0lBQ2hCLFFBQVEsR0FBUSxHQUFH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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBdURULDJEQS9EUyxZQUFZLGtJQUFFLFdBQVc7OzRGQWlFeEIsY0FBYztrQkFwRTFCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGFBQWE7b0JBQ3ZCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsV0FBVyxDQUFDO29CQUNwQyxTQUFTLEVBQUU7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsZUFBZSxDQUFDOzRCQUM3QyxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjtvQkFDRCxRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F1RFQ7aUJBQ0Y7c0ZBRTRCLFlBQVk7c0JBQXRDLFNBQVM7dUJBQUMsY0FBYztnQkFFaEIsRUFBRTtzQkFBVixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBR0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFHRyxlQUFlO3NCQUF2QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgZm9yd2FyZFJlZiwgQ2hhbmdlRGV0ZWN0b3JSZWYsIEVsZW1lbnRSZWYsIFZpZXdDaGlsZCwgQWZ0ZXJWaWV3SW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiwgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBjbiB9IGZyb20gJy4vdXRpbHMvY24nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd0b2xsZS1pbnB1dCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEZvcm1zTW9kdWxlXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBJbnB1dENvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZVxuICAgIH1cbiAgXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBnYXAtMS41IHctZnVsbFwiPlxuICAgICAgPGxhYmVsXG4gICAgICAgICpuZ0lmPVwibGFiZWxcIlxuICAgICAgICBbZm9yXT1cImlkXCJcbiAgICAgICAgW2NsYXNzXT1cImNvbXB1dGVkTGFiZWxDbGFzc1wiPlxuICAgICAgICB7eyBsYWJlbCB9fVxuICAgICAgPC9sYWJlbD5cblxuICAgICAgPGRpdlxuICAgICAgICBbY2xhc3NdPVwiY29tcHV0ZWRDb250YWluZXJDbGFzc1wiXG4gICAgICAgIChjbGljayk9XCJmb2N1c0lucHV0KClcIlxuICAgICAgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaC1mdWxsIGZsZXggaXRlbXMtY2VudGVyIHRleHQtbXV0ZWQtZm9yZWdyb3VuZCBncm91cC1mb2N1cy13aXRoaW46dGV4dC1wcmltYXJ5IHRyYW5zaXRpb24tY29sb3JzIGR1cmF0aW9uLTIwMFwiPlxuICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltwcmVmaXhdXCI+PC9uZy1jb250ZW50PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICAjaW5wdXRFbGVtZW50XG4gICAgICAgICAgW2lkXT1cImlkXCJcbiAgICAgICAgICBbdHlwZV09XCJ0eXBlXCJcbiAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgW3JlYWRPbmx5XT1cInJlYWRvbmx5XCJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cInZhbHVlXCJcbiAgICAgICAgICAoYmx1cik9XCJvbkJsdXIoKVwiXG4gICAgICAgICAgKGZvY3VzKT1cIm9uRm9jdXMoKVwiXG4gICAgICAgICAgKGlucHV0KT1cIm9uSW5wdXRDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgW2NsYXNzXT1cImNvbXB1dGVkSW5wdXRDbGFzc1wiXG4gICAgICAgICAgW2F0dHIuYXJpYS1pbnZhbGlkXT1cImVycm9yXCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cImVycm9yICYmIGVycm9yTWVzc2FnZSA/IGlkICsgJy1lcnJvcicgOiBudWxsXCJcbiAgICAgICAgLz5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiaC1mdWxsIGZsZXggaXRlbXMtY2VudGVyIHRleHQtbXV0ZWQtZm9yZWdyb3VuZCBncm91cC1mb2N1cy13aXRoaW46dGV4dC1wcmltYXJ5IHRyYW5zaXRpb24tY29sb3JzIGR1cmF0aW9uLTIwMFwiPlxuICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltzdWZmaXhdXCI+PC9uZy1jb250ZW50PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWRpc2FibGVkXCI+XG4gICAgICAgIDxwXG4gICAgICAgICAgKm5nSWY9XCJoaW50ICYmICFlcnJvclwiXG4gICAgICAgICAgY2xhc3M9XCJ0ZXh0LXhzIHRleHQtbXV0ZWQtZm9yZWdyb3VuZCBweC0xIHRyYW5zaXRpb24tb3BhY2l0eSBkdXJhdGlvbi0yMDBcIlxuICAgICAgICAgIFtjbGFzcy5vcGFjaXR5LTBdPVwiaXNGb2N1c2VkICYmIGhpZGVIaW50T25Gb2N1c1wiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBoaW50IH19XG4gICAgICAgIDwvcD5cbiAgICAgICAgPHBcbiAgICAgICAgICAqbmdJZj1cImVycm9yICYmIGVycm9yTWVzc2FnZVwiXG4gICAgICAgICAgW2lkXT1cImlkICsgJy1lcnJvcidcIlxuICAgICAgICAgIGNsYXNzPVwidGV4dC14cyB0ZXh0LWRlc3RydWN0aXZlIHB4LTFcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgZXJyb3JNZXNzYWdlIH19XG4gICAgICAgIDwvcD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICBgLFxufSlcbmV4cG9ydCBjbGFzcyBJbnB1dENvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBBZnRlclZpZXdJbml0IHtcbiAgQFZpZXdDaGlsZCgnaW5wdXRFbGVtZW50JykgaW5wdXRFbGVtZW50ITogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcblxuICBASW5wdXQoKSBpZDogc3RyaW5nID0gYGlucHV0LSR7TWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyKDIsIDkpfWA7XG4gIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgaGludDogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIGVycm9yTWVzc2FnZTogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIHR5cGU6IHN0cmluZyA9ICd0ZXh0JztcbiAgQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBzaXplOiAneHMnIHwgJ3NtJyB8ICdkZWZhdWx0JyB8ICdsZycgPSAnZGVmYXVsdCc7XG4gIEBJbnB1dCgpIGNvbnRhaW5lckNsYXNzOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgY2xhc3M6IHN0cmluZyA9ICcnO1xuXG4gIC8vIE5ldyBTdGF0ZXNcbiAgQElucHV0KCkgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgcmVhZG9ubHk6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgZXJyb3I6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvLyBGb2N1cyBiZWhhdmlvclxuICBASW5wdXQoKSBoaWRlSGludE9uRm9jdXM6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIHZhbHVlOiBhbnkgPSAnJztcbiAgb25DaGFuZ2U6IGFueSA9ICgpID0+IHsgfTtcbiAgb25Ub3VjaGVkOiBhbnkgPSAoKSA9PiB7IH07XG4gIGlzRm9jdXNlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikgeyB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIGlmICh0aGlzLmlucHV0RWxlbWVudD8ubmF0aXZlRWxlbWVudC5oYXNBdHRyaWJ1dGUoJ2F1dG9mb2N1cycpKSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKSk7XG4gICAgfVxuICB9XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7IHRoaXMub25DaGFuZ2UgPSBmbjsgfVxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7IHRoaXMub25Ub3VjaGVkID0gZm47IH1cblxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIG9uSW5wdXRDaGFuZ2UoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMucmVhZG9ubHkgfHwgdGhpcy5kaXNhYmxlZCkgcmV0dXJuO1xuICAgIGNvbnN0IHZhbCA9IChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWU7XG4gICAgdGhpcy52YWx1ZSA9IHZhbDtcbiAgICB0aGlzLm9uQ2hhbmdlKHZhbCk7XG4gIH1cblxuICBvbkZvY3VzKCk6IHZvaWQge1xuICAgIHRoaXMuaXNGb2N1c2VkID0gdHJ1ZTtcbiAgfVxuXG4gIG9uQmx1cigpOiB2b2lkIHtcbiAgICB0aGlzLmlzRm9jdXNlZCA9IGZhbHNlO1xuICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gIH1cblxuICBmb2N1c0lucHV0KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5kaXNhYmxlZCAmJiB0aGlzLmlucHV0RWxlbWVudCkge1xuICAgICAgdGhpcy5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCByZWFkb25seSBjbiA9IGNuO1xuXG4gIGdldCBjb21wdXRlZExhYmVsQ2xhc3MoKSB7XG4gICAgcmV0dXJuIGNuKFxuICAgICAgXCJ0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtZm9yZWdyb3VuZCBsZWFkaW5nLW5vbmUgdHJhbnNpdGlvbi1vcGFjaXR5IGR1cmF0aW9uLTIwMFwiLFxuICAgICAgdGhpcy5kaXNhYmxlZCAmJiBcIm9wYWNpdHktNTBcIlxuICAgICk7XG4gIH1cblxuICBnZXQgY29tcHV0ZWRDb250YWluZXJDbGFzcygpIHtcbiAgICByZXR1cm4gY24oXG4gICAgICAvLyBCYXNlIHN0eWxlc1xuICAgICAgXCJncm91cCByZWxhdGl2ZSBmbGV4IGl0ZW1zLWNlbnRlciB3LWZ1bGwgcm91bmRlZC1tZCBib3JkZXIgdHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tMjAwXCIsXG4gICAgICBcImJnLWJhY2tncm91bmRcIixcblxuICAgICAgLy8gQm9yZGVyIGFuZCBzaGFkb3dcbiAgICAgIFwiYm9yZGVyLWlucHV0IHNoYWRvdy1zbVwiLFxuXG4gICAgICAvLyBTaXppbmdcbiAgICAgIHRoaXMuc2l6ZSA9PT0gJ3hzJyAmJiBcImgtOCBweC0yIGdhcC0xLjUgdGV4dC14c1wiLFxuICAgICAgdGhpcy5zaXplID09PSAnc20nICYmIFwiaC05IHB4LTMgZ2FwLTIgdGV4dC1zbVwiLFxuICAgICAgdGhpcy5zaXplID09PSAnZGVmYXVsdCcgJiYgXCJoLTEwIHB4LTMgZ2FwLTIgdGV4dC1zbVwiLFxuICAgICAgdGhpcy5zaXplID09PSAnbGcnICYmIFwiaC0xMSBweC00IGdhcC0zIHRleHQtYmFzZVwiLFxuXG4gICAgICAvLyBGb2N1cyBzdGF0ZSAtIFNJTVBMRSBBTkQgRUxFR0FOVCBMSUtFIFpBUkRVSVxuICAgICAgLy8gVGhlIG1hZ2ljIGhhcHBlbnMgaW4gQ1NTOiBib3JkZXIgZGFya2VucyBhdXRvbWF0aWNhbGx5IG9uIGZvY3VzXG4gICAgICAhKHRoaXMucmVhZG9ubHkgfHwgdGhpcy5kaXNhYmxlZCkgJiYgW1xuICAgICAgICBcImZvY3VzLXdpdGhpbjpib3JkZXItcHJpbWFyeS84MFwiLFxuICAgICAgICBcImZvY3VzLXdpdGhpbjpyaW5nLTRcIixcbiAgICAgICAgXCJmb2N1cy13aXRoaW46cmluZy1yaW5nLzMwXCIsXG4gICAgICAgIFwiZm9jdXMtd2l0aGluOnJpbmctb2Zmc2V0LTBcIixcbiAgICAgICAgXCJmb2N1cy13aXRoaW46c2hhZG93LW5vbmVcIixcbiAgICAgIF0sXG5cbiAgICAgIC8vIEVycm9yIHN0YXRlXG4gICAgICB0aGlzLmVycm9yICYmIFtcbiAgICAgICAgXCJib3JkZXItZGVzdHJ1Y3RpdmVcIixcbiAgICAgICAgISh0aGlzLnJlYWRvbmx5IHx8IHRoaXMuZGlzYWJsZWQpICYmIFtcbiAgICAgICAgICBcImZvY3VzLXdpdGhpbjpib3JkZXItZGVzdHJ1Y3RpdmUvODBcIixcbiAgICAgICAgICBcImZvY3VzLXdpdGhpbjpyaW5nLWRlc3RydWN0aXZlLzMwXCJcbiAgICAgICAgXVxuICAgICAgXSxcblxuICAgICAgLy8gRGlzYWJsZWQgc3RhdGVcbiAgICAgIHRoaXMuZGlzYWJsZWQgJiYgW1xuICAgICAgICBcImN1cnNvci1ub3QtYWxsb3dlZCBvcGFjaXR5LTUwXCIsXG4gICAgICAgIFwiYm9yZGVyLW9wYWNpdHktNTBcIlxuICAgICAgXSxcblxuICAgICAgLy8gUmVhZG9ubHkgc3RhdGVcbiAgICAgIHRoaXMucmVhZG9ubHkgJiYgW1xuICAgICAgICBcImN1cnNvci1kZWZhdWx0XCIsXG4gICAgICAgIFwiYm9yZGVyLWRhc2hlZFwiLFxuICAgICAgICAhdGhpcy5kaXNhYmxlZCAmJiBcImZvY3VzLXdpdGhpbjpyaW5nLTAgZm9jdXMtd2l0aGluOmJvcmRlci1vcGFjaXR5LTEwMFwiXG4gICAgICBdLFxuXG4gICAgICB0aGlzLmNvbnRhaW5lckNsYXNzXG4gICAgKTtcbiAgfVxuXG4gIGdldCBjb21wdXRlZElucHV0Q2xhc3MoKSB7XG4gICAgcmV0dXJuIGNuKFxuICAgICAgLy8gQmFzZSBzdHlsZXNcbiAgICAgIFwiZmxleC0xIGJnLXRyYW5zcGFyZW50IGJvcmRlci1ub25lIHAtMFwiLFxuICAgICAgXCJwbGFjZWhvbGRlcjp0ZXh0LW11dGVkLWZvcmVncm91bmRcIixcblxuICAgICAgLy8gUmVtb3ZlIGFsbCBkZWZhdWx0IGZvY3VzIHN0eWxlc1xuICAgICAgXCJmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0wIGZvY3VzOnNoYWRvdy1ub25lXCIsXG5cbiAgICAgIC8vIFRleHQgc2l6aW5nXG4gICAgICB0aGlzLnNpemUgPT09ICd4cycgJiYgXCJ0ZXh0LXhzXCIsXG4gICAgICB0aGlzLnNpemUgPT09ICdzbScgJiYgXCJ0ZXh0LXNtXCIsXG4gICAgICB0aGlzLnNpemUgPT09ICdkZWZhdWx0JyAmJiBcInRleHQtc21cIixcbiAgICAgIHRoaXMuc2l6ZSA9PT0gJ2xnJyAmJiBcInRleHQtYmFzZVwiLFxuXG4gICAgICAvLyBDdXJzb3Igc3RhdGVzXG4gICAgICB0aGlzLmRpc2FibGVkICYmIFwiY3Vyc29yLW5vdC1hbGxvd2VkXCIsXG4gICAgICB0aGlzLnJlYWRvbmx5ICYmIFwiY3Vyc29yLWRlZmF1bHRcIixcblxuICAgICAgLy8gVGV4dCBjb2xvclxuICAgICAgXCJ0ZXh0LWZvcmVncm91bmRcIixcblxuICAgICAgLy8gU2VsZWN0aW9uIGNvbG9yXG4gICAgICBcInNlbGVjdGlvbjpiZy1wcmltYXJ5LzIwIHNlbGVjdGlvbjp0ZXh0LWZvcmVncm91bmRcIixcblxuICAgICAgdGhpcy5jbGFzc1xuICAgICk7XG4gIH1cbn1cbiJdfQ==
289
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvdG9sbGUvc3JjL2xpYi9pbnB1dC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFpQyxTQUFTLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ3RILE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQXdCLGlCQUFpQixFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RGLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxZQUFZLENBQUM7Ozs7QUF1RWhDLE1BQU0sT0FBTyxjQUFjO0lBMEJMO0lBekJPLFlBQVksQ0FBZ0M7SUFFOUQsRUFBRSxHQUFXLFNBQVMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDaEUsS0FBSyxHQUFXLEVBQUUsQ0FBQztJQUNuQixJQUFJLEdBQVcsRUFBRSxDQUFDO0lBQ2xCLFlBQVksR0FBVyxFQUFFLENBQUM7SUFDMUIsSUFBSSxHQUFXLE1BQU0sQ0FBQztJQUN0QixXQUFXLEdBQVcsRUFBRSxDQUFDO0lBQ3pCLElBQUksR0FBbUMsU0FBUyxDQUFDO0lBQ2pELGNBQWMsR0FBVyxFQUFFLENBQUM7SUFDNUIsS0FBSyxHQUFXLEVBQUUsQ0FBQztJQUU1QixhQUFhO0lBQ0osUUFBUSxHQUFZLEtBQUssQ0FBQztJQUMxQixRQUFRLEdBQVksS0FBSyxDQUFDO0lBQzFCLEtBQUssR0FBWSxLQUFLLENBQUM7SUFFaEMsaUJBQWlCO0lBQ1IsZUFBZSxHQUFZLElBQUksQ0FBQztJQUV6QyxLQUFLLEdBQVEsRUFBRSxDQUFDO0lBQ2hCLFFBQVEsR0FBUSxHQUFH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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXdEVCwyREFoRVMsWUFBWSxrSUFBRSxXQUFXOzs0RkFrRXhCLGNBQWM7a0JBckUxQixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxhQUFhO29CQUN2QixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLFdBQVcsQ0FBQztvQkFDcEMsU0FBUyxFQUFFO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLGVBQWUsQ0FBQzs0QkFDN0MsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0Y7b0JBQ0QsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXdEVDtpQkFDRjtzRkFFNEIsWUFBWTtzQkFBdEMsU0FBUzt1QkFBQyxjQUFjO2dCQUVoQixFQUFFO3NCQUFWLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFHRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUdHLGVBQWU7c0JBQXZCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBmb3J3YXJkUmVmLCBDaGFuZ2VEZXRlY3RvclJlZiwgRWxlbWVudFJlZiwgVmlld0NoaWxkLCBBZnRlclZpZXdJbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SLCBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGNuIH0gZnJvbSAnLi91dGlscy9jbic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RvbGxlLWlucHV0JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRm9ybXNNb2R1bGVdLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IElucHV0Q29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfVxuICBdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGdhcC0xLjUgdy1mdWxsXCI+XG4gICAgICA8bGFiZWxcbiAgICAgICAgKm5nSWY9XCJsYWJlbFwiXG4gICAgICAgIFtmb3JdPVwiaWRcIlxuICAgICAgICBbY2xhc3NdPVwiY29tcHV0ZWRMYWJlbENsYXNzXCI+XG4gICAgICAgIHt7IGxhYmVsIH19XG4gICAgICA8L2xhYmVsPlxuXG4gICAgICA8ZGl2XG4gICAgICAgIFtjbGFzc109XCJjb21wdXRlZENvbnRhaW5lckNsYXNzXCJcbiAgICAgICAgKGNsaWNrKT1cImZvY3VzSW5wdXQoKVwiXG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJoLWZ1bGwgZmxleCBpdGVtcy1jZW50ZXIgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kIGdyb3VwLWZvY3VzLXdpdGhpbjp0ZXh0LXByaW1hcnkgdHJhbnNpdGlvbi1jb2xvcnMgZHVyYXRpb24tMjAwXCI+XG4gICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3ByZWZpeF1cIj48L25nLWNvbnRlbnQ+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgICNpbnB1dEVsZW1lbnRcbiAgICAgICAgICBbaWRdPVwiaWRcIlxuICAgICAgICAgIFt0eXBlXT1cInR5cGVcIlxuICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICBbcmVhZE9ubHldPVwicmVhZG9ubHlcIlxuICAgICAgICAgIFsobmdNb2RlbCldPVwidmFsdWVcIlxuICAgICAgICAgIChibHVyKT1cIm9uQmx1cigpXCJcbiAgICAgICAgICAoZm9jdXMpPVwib25Gb2N1cygpXCJcbiAgICAgICAgICAoaW5wdXQpPVwib25JbnB1dENoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICBbY2xhc3NdPVwiY29tcHV0ZWRJbnB1dENsYXNzXCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWludmFsaWRdPVwiZXJyb3IgfHwgbnVsbFwiXG4gICAgICAgICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJlcnJvciAmJiBlcnJvck1lc3NhZ2UgPyBpZCArICctZXJyb3InIDogKGhpbnQgPyBpZCArICctaGludCcgOiBudWxsKVwiXG4gICAgICAgIC8+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImgtZnVsbCBmbGV4IGl0ZW1zLWNlbnRlciB0ZXh0LW11dGVkLWZvcmVncm91bmQgZ3JvdXAtZm9jdXMtd2l0aGluOnRleHQtcHJpbWFyeSB0cmFuc2l0aW9uLWNvbG9ycyBkdXJhdGlvbi0yMDBcIj5cbiAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbc3VmZml4XVwiPjwvbmctY29udGVudD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFkaXNhYmxlZFwiPlxuICAgICAgICA8cFxuICAgICAgICAgICpuZ0lmPVwiaGludCAmJiAhZXJyb3JcIlxuICAgICAgICAgIFtpZF09XCJpZCArICctaGludCdcIlxuICAgICAgICAgIGNsYXNzPVwidGV4dC14cyB0ZXh0LW11dGVkLWZvcmVncm91bmQgcHgtMSB0cmFuc2l0aW9uLW9wYWNpdHkgZHVyYXRpb24tMjAwXCJcbiAgICAgICAgICBbY2xhc3Mub3BhY2l0eS0wXT1cImlzRm9jdXNlZCAmJiBoaWRlSGludE9uRm9jdXNcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgaGludCB9fVxuICAgICAgICA8L3A+XG4gICAgICAgIDxwXG4gICAgICAgICAgKm5nSWY9XCJlcnJvciAmJiBlcnJvck1lc3NhZ2VcIlxuICAgICAgICAgIFtpZF09XCJpZCArICctZXJyb3InXCJcbiAgICAgICAgICBjbGFzcz1cInRleHQteHMgdGV4dC1kZXN0cnVjdGl2ZSBweC0xXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGVycm9yTWVzc2FnZSB9fVxuICAgICAgICA8L3A+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgYCxcbn0pXG5leHBvcnQgY2xhc3MgSW5wdXRDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgQWZ0ZXJWaWV3SW5pdCB7XG4gIEBWaWV3Q2hpbGQoJ2lucHV0RWxlbWVudCcpIGlucHV0RWxlbWVudCE6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XG5cbiAgQElucHV0KCkgaWQ6IHN0cmluZyA9IGBpbnB1dC0ke01hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cigyLCA5KX1gO1xuICBASW5wdXQoKSBsYWJlbDogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIGhpbnQ6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBlcnJvck1lc3NhZ2U6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSB0eXBlOiBzdHJpbmcgPSAndGV4dCc7XG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgc2l6ZTogJ3hzJyB8ICdzbScgfCAnZGVmYXVsdCcgfCAnbGcnID0gJ2RlZmF1bHQnO1xuICBASW5wdXQoKSBjb250YWluZXJDbGFzczogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIGNsYXNzOiBzdHJpbmcgPSAnJztcblxuICAvLyBOZXcgU3RhdGVzXG4gIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIHJlYWRvbmx5OiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGVycm9yOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLy8gRm9jdXMgYmVoYXZpb3JcbiAgQElucHV0KCkgaGlkZUhpbnRPbkZvY3VzOiBib29sZWFuID0gdHJ1ZTtcblxuICB2YWx1ZTogYW55ID0gJyc7XG4gIG9uQ2hhbmdlOiBhbnkgPSAoKSA9PiB7IH07XG4gIG9uVG91Y2hlZDogYW55ID0gKCkgPT4geyB9O1xuICBpc0ZvY3VzZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHsgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBpZiAodGhpcy5pbnB1dEVsZW1lbnQ/Lm5hdGl2ZUVsZW1lbnQuaGFzQXR0cmlidXRlKCdhdXRvZm9jdXMnKSkge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LmZvY3VzKCkpO1xuICAgIH1cbiAgfVxuXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQgeyB0aGlzLm9uQ2hhbmdlID0gZm47IH1cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQgeyB0aGlzLm9uVG91Y2hlZCA9IGZuOyB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBvbklucHV0Q2hhbmdlKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnJlYWRvbmx5IHx8IHRoaXMuZGlzYWJsZWQpIHJldHVybjtcbiAgICBjb25zdCB2YWwgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbHVlO1xuICAgIHRoaXMudmFsdWUgPSB2YWw7XG4gICAgdGhpcy5vbkNoYW5nZSh2YWwpO1xuICB9XG5cbiAgb25Gb2N1cygpOiB2b2lkIHtcbiAgICB0aGlzLmlzRm9jdXNlZCA9IHRydWU7XG4gIH1cblxuICBvbkJsdXIoKTogdm9pZCB7XG4gICAgdGhpcy5pc0ZvY3VzZWQgPSBmYWxzZTtcbiAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICB9XG5cbiAgZm9jdXNJbnB1dCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZGlzYWJsZWQgJiYgdGhpcy5pbnB1dEVsZW1lbnQpIHtcbiAgICAgIHRoaXMuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgY24gPSBjbjtcblxuICBnZXQgY29tcHV0ZWRMYWJlbENsYXNzKCkge1xuICAgIHJldHVybiBjbihcbiAgICAgIFwidGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LWZvcmVncm91bmQgbGVhZGluZy1ub25lIHRyYW5zaXRpb24tb3BhY2l0eSBkdXJhdGlvbi0yMDBcIixcbiAgICAgIHRoaXMuZGlzYWJsZWQgJiYgXCJvcGFjaXR5LTUwXCJcbiAgICApO1xuICB9XG5cbiAgZ2V0IGNvbXB1dGVkQ29udGFpbmVyQ2xhc3MoKSB7XG4gICAgcmV0dXJuIGNuKFxuICAgICAgLy8gQmFzZSBzdHlsZXNcbiAgICAgIFwiZ3JvdXAgcmVsYXRpdmUgZmxleCBpdGVtcy1jZW50ZXIgdy1mdWxsIHJvdW5kZWQtbWQgYm9yZGVyIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTIwMFwiLFxuICAgICAgXCJiZy1iYWNrZ3JvdW5kXCIsXG5cbiAgICAgIC8vIEJvcmRlciBhbmQgc2hhZG93XG4gICAgICBcImJvcmRlci1pbnB1dCBzaGFkb3ctc21cIixcblxuICAgICAgLy8gU2l6aW5nXG4gICAgICB0aGlzLnNpemUgPT09ICd4cycgJiYgXCJoLTggcHgtMiBnYXAtMS41IHRleHQteHNcIixcbiAgICAgIHRoaXMuc2l6ZSA9PT0gJ3NtJyAmJiBcImgtOSBweC0zIGdhcC0yIHRleHQtc21cIixcbiAgICAgIHRoaXMuc2l6ZSA9PT0gJ2RlZmF1bHQnICYmIFwiaC0xMCBweC0zIGdhcC0yIHRleHQtc21cIixcbiAgICAgIHRoaXMuc2l6ZSA9PT0gJ2xnJyAmJiBcImgtMTEgcHgtNCBnYXAtMyB0ZXh0LWJhc2VcIixcblxuICAgICAgLy8gRm9jdXMgc3RhdGUgLSBTSU1QTEUgQU5EIEVMRUdBTlQgTElLRSBaQVJEVUlcbiAgICAgIC8vIFRoZSBtYWdpYyBoYXBwZW5zIGluIENTUzogYm9yZGVyIGRhcmtlbnMgYXV0b21hdGljYWxseSBvbiBmb2N1c1xuICAgICAgISh0aGlzLnJlYWRvbmx5IHx8IHRoaXMuZGlzYWJsZWQpICYmIFtcbiAgICAgICAgXCJmb2N1cy13aXRoaW46Ym9yZGVyLXByaW1hcnkvODBcIixcbiAgICAgICAgXCJmb2N1cy13aXRoaW46cmluZy00XCIsXG4gICAgICAgIFwiZm9jdXMtd2l0aGluOnJpbmctcmluZy8zMFwiLFxuICAgICAgICBcImZvY3VzLXdpdGhpbjpyaW5nLW9mZnNldC0wXCIsXG4gICAgICAgIFwiZm9jdXMtd2l0aGluOnNoYWRvdy1ub25lXCIsXG4gICAgICBdLFxuXG4gICAgICAvLyBFcnJvciBzdGF0ZVxuICAgICAgdGhpcy5lcnJvciAmJiBbXG4gICAgICAgIFwiYm9yZGVyLWRlc3RydWN0aXZlXCIsXG4gICAgICAgICEodGhpcy5yZWFkb25seSB8fCB0aGlzLmRpc2FibGVkKSAmJiBbXG4gICAgICAgICAgXCJmb2N1cy13aXRoaW46Ym9yZGVyLWRlc3RydWN0aXZlLzgwXCIsXG4gICAgICAgICAgXCJmb2N1cy13aXRoaW46cmluZy1kZXN0cnVjdGl2ZS8zMFwiXG4gICAgICAgIF1cbiAgICAgIF0sXG5cbiAgICAgIC8vIERpc2FibGVkIHN0YXRlXG4gICAgICB0aGlzLmRpc2FibGVkICYmIFtcbiAgICAgICAgXCJjdXJzb3Itbm90LWFsbG93ZWQgb3BhY2l0eS01MFwiLFxuICAgICAgICBcImJvcmRlci1vcGFjaXR5LTUwXCJcbiAgICAgIF0sXG5cbiAgICAgIC8vIFJlYWRvbmx5IHN0YXRlXG4gICAgICB0aGlzLnJlYWRvbmx5ICYmIFtcbiAgICAgICAgXCJjdXJzb3ItZGVmYXVsdFwiLFxuICAgICAgICBcImJvcmRlci1kYXNoZWRcIixcbiAgICAgICAgIXRoaXMuZGlzYWJsZWQgJiYgXCJmb2N1cy13aXRoaW46cmluZy0wIGZvY3VzLXdpdGhpbjpib3JkZXItb3BhY2l0eS0xMDBcIlxuICAgICAgXSxcblxuICAgICAgdGhpcy5jb250YWluZXJDbGFzc1xuICAgICk7XG4gIH1cblxuICBnZXQgY29tcHV0ZWRJbnB1dENsYXNzKCkge1xuICAgIHJldHVybiBjbihcbiAgICAgIC8vIEJhc2Ugc3R5bGVzXG4gICAgICBcImZsZXgtMSBiZy10cmFuc3BhcmVudCBib3JkZXItbm9uZSBwLTBcIixcbiAgICAgIFwicGxhY2Vob2xkZXI6dGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCIsXG5cbiAgICAgIC8vIFJlbW92ZSBhbGwgZGVmYXVsdCBmb2N1cyBzdHlsZXNcbiAgICAgIFwiZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzOnJpbmctMCBmb2N1czpzaGFkb3ctbm9uZVwiLFxuXG4gICAgICAvLyBUZXh0IHNpemluZ1xuICAgICAgdGhpcy5zaXplID09PSAneHMnICYmIFwidGV4dC14c1wiLFxuICAgICAgdGhpcy5zaXplID09PSAnc20nICYmIFwidGV4dC1zbVwiLFxuICAgICAgdGhpcy5zaXplID09PSAnZGVmYXVsdCcgJiYgXCJ0ZXh0LXNtXCIsXG4gICAgICB0aGlzLnNpemUgPT09ICdsZycgJiYgXCJ0ZXh0LWJhc2VcIixcblxuICAgICAgLy8gQ3Vyc29yIHN0YXRlc1xuICAgICAgdGhpcy5kaXNhYmxlZCAmJiBcImN1cnNvci1ub3QtYWxsb3dlZFwiLFxuICAgICAgdGhpcy5yZWFkb25seSAmJiBcImN1cnNvci1kZWZhdWx0XCIsXG5cbiAgICAgIC8vIFRleHQgY29sb3JcbiAgICAgIFwidGV4dC1mb3JlZ3JvdW5kXCIsXG5cbiAgICAgIC8vIFNlbGVjdGlvbiBjb2xvclxuICAgICAgXCJzZWxlY3Rpb246YmctcHJpbWFyeS8yMCBzZWxlY3Rpb246dGV4dC1mb3JlZ3JvdW5kXCIsXG5cbiAgICAgIHRoaXMuY2xhc3NcbiAgICApO1xuICB9XG59XG4iXX0=
@@ -6,7 +6,7 @@ export class LabelComponent {
6
6
  for;
7
7
  class = '';
8
8
  get computedClass() {
9
- return cn("text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70", this.class);
9
+ return cn("inline-flex items-center gap-2 select-none text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-50", this.class);
10
10
  }
11
11
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LabelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
12
12
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: LabelComponent, isStandalone: true, selector: "tolle-label", inputs: { for: "for", class: "class" }, ngImport: i0, template: `
@@ -38,4 +38,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
38
38
  }], class: [{
39
39
  type: Input
40
40
  }] } });
41
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFiZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvdG9sbGUvc3JjL2xpYi9sYWJlbC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxZQUFZLENBQUM7O0FBZWhDLE1BQU0sT0FBTyxjQUFjO0lBQ2QsR0FBRyxDQUFVO0lBQ2IsS0FBSyxHQUFXLEVBQUUsQ0FBQztJQUU1QixJQUFJLGFBQWE7UUFDYixPQUFPLEVBQUUsQ0FDTCw0RkFBNEYsRUFDNUYsSUFBSSxDQUFDLEtBQUssQ0FDYixDQUFDO0lBQ04sQ0FBQzt3R0FUUSxjQUFjOzRGQUFkLGNBQWMsK0dBVGI7Ozs7Ozs7R0FPWCwyREFSVyxZQUFZOzs0RkFVYixjQUFjO2tCQWIxQixTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxhQUFhO29CQUN2QixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO29CQUN2QixRQUFRLEVBQUU7Ozs7Ozs7R0FPWDtpQkFDRjs4QkFFWSxHQUFHO3NCQUFYLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IGNuIH0gZnJvbSAnLi91dGlscy9jbic7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndG9sbGUtbGFiZWwnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gICAgdGVtcGxhdGU6IGBcbiAgICA8bGFiZWxcbiAgICAgIFthdHRyLmZvcl09XCJmb3JcIlxuICAgICAgW2NsYXNzXT1cImNvbXB1dGVkQ2xhc3NcIlxuICAgID5cbiAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICA8L2xhYmVsPlxuICBgXG59KVxuZXhwb3J0IGNsYXNzIExhYmVsQ29tcG9uZW50IHtcbiAgICBASW5wdXQoKSBmb3I/OiBzdHJpbmc7XG4gICAgQElucHV0KCkgY2xhc3M6IHN0cmluZyA9ICcnO1xuXG4gICAgZ2V0IGNvbXB1dGVkQ2xhc3MoKSB7XG4gICAgICAgIHJldHVybiBjbihcbiAgICAgICAgICAgIFwidGV4dC1zbSBmb250LW1lZGl1bSBsZWFkaW5nLW5vbmUgcGVlci1kaXNhYmxlZDpjdXJzb3Itbm90LWFsbG93ZWQgcGVlci1kaXNhYmxlZDpvcGFjaXR5LTcwXCIsXG4gICAgICAgICAgICB0aGlzLmNsYXNzXG4gICAgICAgICk7XG4gICAgfVxufVxuIl19
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFiZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvdG9sbGUvc3JjL2xpYi9sYWJlbC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxZQUFZLENBQUM7O0FBZWhDLE1BQU0sT0FBTyxjQUFjO0lBQ2QsR0FBRyxDQUFVO0lBQ2IsS0FBSyxHQUFXLEVBQUUsQ0FBQztJQUU1QixJQUFJLGFBQWE7UUFDYixPQUFPLEVBQUUsQ0FDTCx1SUFBdUksRUFDdkksSUFBSSxDQUFDLEtBQUssQ0FDYixDQUFDO0lBQ04sQ0FBQzt3R0FUUSxjQUFjOzRGQUFkLGNBQWMsK0dBVGI7Ozs7Ozs7R0FPWCwyREFSVyxZQUFZOzs0RkFVYixjQUFjO2tCQWIxQixTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxhQUFhO29CQUN2QixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO29CQUN2QixRQUFRLEVBQUU7Ozs7Ozs7R0FPWDtpQkFDRjs4QkFFWSxHQUFHO3NCQUFYLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IGNuIH0gZnJvbSAnLi91dGlscy9jbic7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndG9sbGUtbGFiZWwnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gICAgdGVtcGxhdGU6IGBcbiAgICA8bGFiZWxcbiAgICAgIFthdHRyLmZvcl09XCJmb3JcIlxuICAgICAgW2NsYXNzXT1cImNvbXB1dGVkQ2xhc3NcIlxuICAgID5cbiAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICA8L2xhYmVsPlxuICBgXG59KVxuZXhwb3J0IGNsYXNzIExhYmVsQ29tcG9uZW50IHtcbiAgICBASW5wdXQoKSBmb3I/OiBzdHJpbmc7XG4gICAgQElucHV0KCkgY2xhc3M6IHN0cmluZyA9ICcnO1xuXG4gICAgZ2V0IGNvbXB1dGVkQ2xhc3MoKSB7XG4gICAgICAgIHJldHVybiBjbihcbiAgICAgICAgICAgIFwiaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIGdhcC0yIHNlbGVjdC1ub25lIHRleHQtc20gZm9udC1tZWRpdW0gbGVhZGluZy1ub25lIHBlZXItZGlzYWJsZWQ6Y3Vyc29yLW5vdC1hbGxvd2VkIHBlZXItZGlzYWJsZWQ6b3BhY2l0eS01MFwiLFxuICAgICAgICAgICAgdGhpcy5jbGFzc1xuICAgICAgICApO1xuICAgIH1cbn1cbiJdfQ==
@@ -194,7 +194,7 @@ export class MaskedInputComponent {
194
194
  (blur)="onBlur()"
195
195
  (focus)="onFocus()"
196
196
  [class]="computedInputClass"
197
- [attr.aria-invalid]="error"
197
+ [attr.aria-invalid]="error || null"
198
198
  [attr.aria-describedby]="error && errorMessage ? id + '-error' : null" />
199
199
 
200
200
  <!-- Suffix Icon -->
@@ -256,7 +256,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
256
256
  (blur)="onBlur()"
257
257
  (focus)="onFocus()"
258
258
  [class]="computedInputClass"
259
- [attr.aria-invalid]="error"
259
+ [attr.aria-invalid]="error || null"
260
260
  [attr.aria-describedby]="error && errorMessage ? id + '-error' : null" />
261
261
 
262
262
  <!-- Suffix Icon -->
@@ -316,4 +316,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
316
316
  type: ViewChild,
317
317
  args: ['inputEl', { static: true }]
318
318
  }] } });
319
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFza2VkLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3RvbGxlL3NyYy9saWIvbWFza2VkLWlucHV0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFDTCxVQUFVLEVBRVYsU0FBUyxHQUdWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQXdCLGlCQUFpQixFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RGLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxZQUFZLENBQUM7OztBQThEaEMsTUFBTSxPQUFPLG9CQUFvQjtJQXFDckI7SUFDQTtJQXJDRCxFQUFFLEdBQVcsZ0JBQWdCLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ3ZFLEtBQUssR0FBVyxFQUFFLENBQUM7SUFDbkIsSUFBSSxHQUFXLEVBQUUsQ0FBQztJQUNsQixZQUFZLEdBQVcsRUFBRSxDQUFDO0lBQzFCLElBQUksR0FBVyxFQUFFLENBQUM7SUFDbEIsV0FBVyxHQUFHLEVBQUUsQ0FBQztJQUNqQixJQUFJLEdBQUcsTUFBTSxDQUFDO0lBQ2QsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUNqQixRQUFRLEdBQUcsS0FBSyxDQUFDO0lBQ2pCLEtBQUssR0FBRyxFQUFFLENBQUM7SUFDWCxjQUFjLEdBQVcsRUFBRSxDQUFDO0lBQzVCLEtBQUssR0FBWSxLQUFLLENBQUM7SUFDdkIsSUFBSSxHQUFtQyxTQUFTLENBQUM7SUFDakQsU0FBUyxHQUFHLEtBQUssQ0FBQztJQUNsQixlQUFlLEdBQVksSUFBSSxDQUFDO0lBQ2hDLGVBQWUsQ0FB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QVksa0lBQUUsV0FBVzs7NEZBeUR4QixvQkFBb0I7a0JBNURoQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxvQkFBb0I7b0JBQzlCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsV0FBVyxDQUFDO29CQUNwQyxTQUFTLEVBQUU7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUscUJBQXFCLENBQUM7NEJBQ25ELEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGO29CQUNELFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0ErQ1Q7aUJBQ0Y7K0dBRVUsRUFBRTtzQkFBVixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBRWtDLE9BQU87c0JBQTlDLFNBQVM7dUJBQUMsU0FBUyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIGZvcndhcmRSZWYsXG4gIEVsZW1lbnRSZWYsXG4gIFZpZXdDaGlsZCxcbiAgQWZ0ZXJDb250ZW50Q2hlY2tlZCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiwgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBjbiB9IGZyb20gJy4vdXRpbHMvY24nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd0b2xsZS1tYXNrZWQtaW5wdXQnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBGb3Jtc01vZHVsZV0sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gTWFza2VkSW5wdXRDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwiZmxleCB3LWZ1bGwgZmxleC1jb2wgZ2FwLTEuNVwiPlxuICAgICAgPGxhYmVsICpuZ0lmPVwibGFiZWxcIiBbZm9yXT1cImlkXCIgW2NsYXNzXT1cImNvbXB1dGVkTGFiZWxDbGFzc1wiPlxuICAgICAgICB7eyBsYWJlbCB9fVxuICAgICAgPC9sYWJlbD5cblxuICAgICAgPGRpdiBbY2xhc3NdPVwiY29tcHV0ZWRDb250YWluZXJDbGFzc1wiIChjbGljayk9XCJmb2N1c0lucHV0KClcIj5cbiAgICAgICAgPCEtLSBQcmVmaXggSWNvbiAtLT5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiZmxleCBoLWZ1bGwgaXRlbXMtY2VudGVyIHRleHQtbXV0ZWQtZm9yZWdyb3VuZCB0cmFuc2l0aW9uLWNvbG9ycyBkdXJhdGlvbi0yMDAgZ3JvdXAtZm9jdXMtd2l0aGluOnRleHQtcHJpbWFyeVwiPlxuICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltwcmVmaXhdXCI+PC9uZy1jb250ZW50PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICAjaW5wdXRFbFxuICAgICAgICAgIFtpZF09XCJpZFwiXG4gICAgICAgICAgW3R5cGVdPVwidHlwZVwiXG4gICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgIFtyZWFkT25seV09XCJyZWFkb25seVwiXG4gICAgICAgICAgW3ZhbHVlXT1cImRpc3BsYXlWYWx1ZVwiXG4gICAgICAgICAgKGlucHV0KT1cIm9uSW5wdXQoJGV2ZW50KVwiXG4gICAgICAgICAgKGJsdXIpPVwib25CbHVyKClcIlxuICAgICAgICAgIChmb2N1cyk9XCJvbkZvY3VzKClcIlxuICAgICAgICAgIFtjbGFzc109XCJjb21wdXRlZElucHV0Q2xhc3NcIlxuICAgICAgICAgIFthdHRyLmFyaWEtaW52YWxpZF09XCJlcnJvclwiXG4gICAgICAgICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJlcnJvciAmJiBlcnJvck1lc3NhZ2UgPyBpZCArICctZXJyb3InIDogbnVsbFwiIC8+XG5cbiAgICAgICAgPCEtLSBTdWZmaXggSWNvbiAtLT5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiZmxleCBoLWZ1bGwgaXRlbXMtY2VudGVyIHRleHQtbXV0ZWQtZm9yZWdyb3VuZCB0cmFuc2l0aW9uLWNvbG9ycyBkdXJhdGlvbi0yMDAgZ3JvdXAtZm9jdXMtd2l0aGluOnRleHQtcHJpbWFyeVwiPlxuICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltzdWZmaXhdXCI+PC9uZy1jb250ZW50PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWRpc2FibGVkXCI+XG4gICAgICAgIDxwXG4gICAgICAgICAgKm5nSWY9XCJoaW50ICYmICFlcnJvclwiXG4gICAgICAgICAgY2xhc3M9XCJweC0xIHRleHQteHMgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kIHRyYW5zaXRpb24tb3BhY2l0eSBkdXJhdGlvbi0yMDBcIlxuICAgICAgICAgIFtjbGFzcy5vcGFjaXR5LTBdPVwiaXNGb2N1c2VkICYmIGhpZGVIaW50T25Gb2N1c1wiPlxuICAgICAgICAgIHt7IGhpbnQgfX1cbiAgICAgICAgPC9wPlxuICAgICAgICA8cCAqbmdJZj1cImVycm9yICYmIGVycm9yTWVzc2FnZVwiIFtpZF09XCJpZCArICctZXJyb3InXCIgY2xhc3M9XCJweC0xIHRleHQteHMgdGV4dC1kZXN0cnVjdGl2ZVwiPlxuICAgICAgICAgIHt7IGVycm9yTWVzc2FnZSB9fVxuICAgICAgICA8L3A+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgYCxcbn0pXG5leHBvcnQgY2xhc3MgTWFza2VkSW5wdXRDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgQWZ0ZXJDb250ZW50Q2hlY2tlZCB7XG4gIEBJbnB1dCgpIGlkOiBzdHJpbmcgPSBgbWFza2VkLWlucHV0LSR7TWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyKDIsIDkpfWA7XG4gIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgaGludDogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIGVycm9yTWVzc2FnZTogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIG1hc2s6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBwbGFjZWhvbGRlciA9ICcnO1xuICBASW5wdXQoKSB0eXBlID0gJ3RleHQnO1xuICBASW5wdXQoKSBkaXNhYmxlZCA9IGZhbHNlO1xuICBASW5wdXQoKSByZWFkb25seSA9IGZhbHNlO1xuICBASW5wdXQoKSBjbGFzcyA9ICcnO1xuICBASW5wdXQoKSBjb250YWluZXJDbGFzczogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIGVycm9yOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIHNpemU6ICd4cycgfCAnc20nIHwgJ2RlZmF1bHQnIHwgJ2xnJyA9ICdkZWZhdWx0JztcbiAgQElucHV0KCkgcmV0dXJuUmF3ID0gZmFsc2U7XG4gIEBJbnB1dCgpIGhpZGVIaW50T25Gb2N1czogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgpIGV4dGVybmFsRm9jdXNlZDogYm9vbGVhbiB8IHVuZGVmaW5lZDtcblxuICBAVmlld0NoaWxkKCdpbnB1dEVsJywgeyBzdGF0aWM6IHRydWUgfSkgaW5wdXRFbCE6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XG5cbiAgaGFzUHJlZml4ID0gZmFsc2U7XG4gIGhhc1N1ZmZpeCA9IGZhbHNlO1xuICBkaXNwbGF5VmFsdWUgPSAnJztcbiAgaXNGb2N1c2VkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSB0b2tlbnM6IHsgW2tleTogc3RyaW5nXTogUmVnRXhwIH0gPSB7XG4gICAgJzAnOiAvXFxkLyxcbiAgICAnOSc6IC9cXGQvLFxuICAgIGE6IC9bYS16XS9pLFxuICAgIEE6IC9bYS16XS9pLFxuICAgICcqJzogL1thLXowLTldL2ksXG4gIH07XG5cbiAgb25DaGFuZ2U6IGFueSA9ICgpID0+IHt9O1xuICBvblRvdWNoZWQ6IGFueSA9ICgpID0+IHt9O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZWw6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmXG4gICkge31cblxuICBuZ0FmdGVyQ29udGVudENoZWNrZWQoKSB7XG4gICAgY29uc3QgcHJlZml4ID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ1twcmVmaXhdJyk7XG4gICAgY29uc3Qgc3VmZml4ID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ1tzdWZmaXhdJyk7XG5cbiAgICBpZiAodGhpcy5oYXNQcmVmaXggIT09ICEhcHJlZml4IHx8IHRoaXMuaGFzU3VmZml4ICE9PSAhIXN1ZmZpeCkge1xuICAgICAgdGhpcy5oYXNQcmVmaXggPSAhIXByZWZpeDtcbiAgICAgIHRoaXMuaGFzU3VmZml4ID0gISFzdWZmaXg7XG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGNvbXB1dGVkTGFiZWxDbGFzcygpIHtcbiAgICByZXR1cm4gY24oXG4gICAgICAndGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LWZvcmVncm91bmQgbGVhZGluZy1ub25lIHRyYW5zaXRpb24tb3BhY2l0eSBkdXJhdGlvbi0yMDAnLFxuICAgICAgdGhpcy5kaXNhYmxlZCAmJiAnb3BhY2l0eS01MCdcbiAgICApO1xuICB9XG5cbiAgZ2V0IGNvbXB1dGVkQ29udGFpbmVyQ2xhc3MoKSB7XG4gICAgY29uc3QgZm9jdXNlZCA9IHRoaXMuZXh0ZXJuYWxGb2N1c2VkICE9PSB1bmRlZmluZWQgPyB0aGlzLmV4dGVybmFsRm9jdXNlZCA6IHRoaXMuaXNGb2N1c2VkO1xuICAgIHJldHVybiBjbihcbiAgICAgIC8vIEJhc2Ugc3R5bGVzXG4gICAgICAnZ3JvdXAgcmVsYXRpdmUgZmxleCBpdGVtcy1jZW50ZXIgdy1mdWxsIGJvcmRlciB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi0yMDAnLFxuICAgICAgJ2JnLWJhY2tncm91bmQgYm9yZGVyLWlucHV0IHNoYWRvdy1zbScsXG5cbiAgICAgIC8vIFNpemluZ1xuICAgICAgdGhpcy5zaXplID09PSAneHMnICYmICdoLTggcHgtMiBnYXAtMS41IHRleHQteHMnLFxuICAgICAgdGhpcy5zaXplID09PSAnc20nICYmICdoLTkgcHgtMyBnYXAtMiB0ZXh0LXNtJyxcbiAgICAgIHRoaXMuc2l6ZSA9PT0gJ2RlZmF1bHQnICYmICdoLTEwIHB4LTMgZ2FwLTIgdGV4dC1zbScsXG4gICAgICB0aGlzLnNpemUgPT09ICdsZycgJiYgJ2gtMTEgcHgtNCBnYXAtMyB0ZXh0LWJhc2UnLFxuXG4gICAgICAvLyBSb3VuZGVkIGNvcm5lcnNcbiAgICAgICdyb3VuZGVkLW1kJyxcblxuICAgICAgLy8gRm9jdXMgc3RhdGVcbiAgICAgICEodGhpcy5yZWFkb25seSB8fCB0aGlzLmRpc2FibGVkKSAmJiBbXG4gICAgICAgICdmb2N1cy13aXRoaW46cmluZy00JyxcbiAgICAgICAgJ2ZvY3VzLXdpdGhpbjpyaW5nLXJpbmcvMzAnLFxuICAgICAgICAnZm9jdXMtd2l0aGluOnJpbmctb2Zmc2V0LTAnLFxuICAgICAgICAnZm9jdXMtd2l0aGluOnNoYWRvdy1ub25lJyxcbiAgICAgICAgdGhpcy5lcnJvciA/ICdmb2N1cy13aXRoaW46Ym9yZGVyLWRlc3RydWN0aXZlLzgwJyA6ICdmb2N1cy13aXRoaW46Ym9yZGVyLXByaW1hcnkvODAnLFxuICAgICAgXSxcblxuICAgICAgLy8gRXJyb3Igc3RhdGVcbiAgICAgIHRoaXMuZXJyb3IgJiYgW1xuICAgICAgICAnYm9yZGVyLWRlc3RydWN0aXZlJyxcbiAgICAgICAgISh0aGlzLnJlYWRvbmx5IHx8IHRoaXMuZGlzYWJsZWQpICYmICdmb2N1cy13aXRoaW46cmluZy1kZXN0cnVjdGl2ZS8zMCcsXG4gICAgICBdLFxuXG4gICAgICAvLyBEaXNhYmxlZCBzdGF0ZVxuICAgICAgdGhpcy5kaXNhYmxlZCAmJiBbJ2N1cnNvci1ub3QtYWxsb3dlZCBvcGFjaXR5LTUwJywgJ2JvcmRlci1vcGFjaXR5LTUwJ10sXG5cbiAgICAgIC8vIFJlYWRvbmx5IHN0YXRlXG4gICAgICB0aGlzLnJlYWRvbmx5ICYmIFsnY3Vyc29yLWRlZmF1bHQnLCAnYm9yZGVyLWRhc2hlZCddLFxuXG4gICAgICB0aGlzLmNvbnRhaW5lckNsYXNzXG4gICAgKTtcbiAgfVxuXG4gIGdldCBjb21wdXRlZElucHV0Q2xhc3MoKSB7XG4gICAgcmV0dXJuIGNuKFxuICAgICAgLy8gQmFzZSBzdHlsZXNcbiAgICAgICdmbGV4LTEgYmctdHJhbnNwYXJlbnQgYm9yZGVyLW5vbmUgcC0wJyxcbiAgICAgICdwbGFjZWhvbGRlcjp0ZXh0LW11dGVkLWZvcmVncm91bmQnLFxuXG4gICAgICAvLyBSZW1vdmUgYWxsIGRlZmF1bHQgZm9jdXMgc3R5bGVzXG4gICAgICAnZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzOnJpbmctMCBmb2N1czpzaGFkb3ctbm9uZScsXG5cbiAgICAgIC8vIFRleHQgc2l6aW5nXG4gICAgICB0aGlzLnNpemUgPT09ICd4cycgJiYgJ3RleHQteHMnLFxuICAgICAgdGhpcy5zaXplID09PSAnc20nICYmICd0ZXh0LXNtJyxcbiAgICAgIHRoaXMuc2l6ZSA9PT0gJ2RlZmF1bHQnICYmICd0ZXh0LXNtJyxcbiAgICAgIHRoaXMuc2l6ZSA9PT0gJ2xnJyAmJiAndGV4dC1iYXNlJyxcblxuICAgICAgLy8gQ3Vyc29yIHN0YXRlc1xuICAgICAgdGhpcy5kaXNhYmxlZCAmJiAnY3Vyc29yLW5vdC1hbGxvd2VkJyxcbiAgICAgIHRoaXMucmVhZG9ubHkgJiYgJ2N1cnNvci1kZWZhdWx0JyxcblxuICAgICAgLy8gVGV4dCBjb2xvclxuICAgICAgJ3RleHQtZm9yZWdyb3VuZCcsXG5cbiAgICAgIC8vIFNlbGVjdGlvbiBjb2xvclxuICAgICAgJ3NlbGVjdGlvbjpiZy1wcmltYXJ5LzIwIHNlbGVjdGlvbjp0ZXh0LWZvcmVncm91bmQnLFxuXG4gICAgICB0aGlzLmNsYXNzXG4gICAgKTtcbiAgfVxuXG4gIGZvY3VzSW5wdXQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmRpc2FibGVkICYmIHRoaXMuaW5wdXRFbCkge1xuICAgICAgdGhpcy5pbnB1dEVsLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG4gIH1cblxuICBvbkZvY3VzKCk6IHZvaWQge1xuICAgIHRoaXMuaXNGb2N1c2VkID0gdHJ1ZTtcbiAgfVxuXG4gIG9uQmx1cigpOiB2b2lkIHtcbiAgICB0aGlzLmlzRm9jdXNlZCA9IGZhbHNlO1xuICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gIH1cblxuICAvLyAtLS0gTWFza2luZyBMb2dpYyAtLS1cbiAgb25JbnB1dChldmVudDogRXZlbnQpIHtcbiAgICBpZiAodGhpcy5yZWFkb25seSB8fCB0aGlzLmRpc2FibGVkKSByZXR1cm47XG4gICAgY29uc3QgaW5wdXQgPSBldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICBjb25zdCByYXcgPSB0aGlzLnVubWFzayhpbnB1dC52YWx1ZSk7XG4gICAgY29uc3QgbWFza2VkID0gdGhpcy5hcHBseU1hc2socmF3KTtcbiAgICB0aGlzLmRpc3BsYXlWYWx1ZSA9IG1hc2tlZDtcbiAgICBpbnB1dC52YWx1ZSA9IG1hc2tlZDtcbiAgICB0aGlzLnJldHVyblJhdyA/IHRoaXMub25DaGFuZ2UocmF3KSA6IHRoaXMub25DaGFuZ2UobWFza2VkKTtcbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlNYXNrKHJhd1ZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGxldCByYXdJbmRleCA9IDA7XG4gICAgbGV0IGZvcm1hdHRlZCA9ICcnO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5tYXNrLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAocmF3SW5kZXggPj0gcmF3VmFsdWUubGVuZ3RoKSBicmVhaztcbiAgICAgIGNvbnN0IG1hc2tDaGFyID0gdGhpcy5tYXNrW2ldO1xuICAgICAgY29uc3QgcmF3Q2hhciA9IHJhd1ZhbHVlW3Jhd0luZGV4XTtcbiAgICAgIGlmICh0aGlzLnRva2Vuc1ttYXNrQ2hhcl0pIHtcbiAgICAgICAgaWYgKHRoaXMudG9rZW5zW21hc2tDaGFyXS50ZXN0KHJhd0NoYXIpKSB7XG4gICAgICAgICAgZm9ybWF0dGVkICs9IHJhd0NoYXI7XG4gICAgICAgICAgcmF3SW5kZXgrKztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByYXdJbmRleCsrO1xuICAgICAgICAgIGktLTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZm9ybWF0dGVkICs9IG1hc2tDaGFyO1xuICAgICAgICBpZiAocmF3Q2hhciA9PT0gbWFza0NoYXIpIHJhd0luZGV4Kys7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmb3JtYXR0ZWQ7XG4gIH1cblxuICBwcml2YXRlIHVubWFzayh2YWw6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHZhbC5yZXBsYWNlKC9bXmEtekEtWjAtOV0vZywgJycpO1xuICB9XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgdGhpcy5kaXNwbGF5VmFsdWUgPSB2YWx1ZSA/IHRoaXMuYXBwbHlNYXNrKHRoaXMudW5tYXNrKHZhbHVlLnRvU3RyaW5nKCkpKSA6ICcnO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gIH1cblxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjbiA9IGNuO1xufVxuIl19
319
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFza2VkLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3RvbGxlL3NyYy9saWIvbWFza2VkLWlucHV0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFDTCxVQUFVLEVBRVYsU0FBUyxHQUdWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQXdCLGlCQUFpQixFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RGLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxZQUFZLENBQUM7OztBQThEaEMsTUFBTSxPQUFPLG9CQUFvQjtJQXFDckI7SUFDQTtJQXJDRCxFQUFFLEdBQVcsZ0JBQWdCLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ3ZFLEtBQUssR0FBVyxFQUFFLENBQUM7SUFDbkIsSUFBSSxHQUFXLEVBQUUsQ0FBQztJQUNsQixZQUFZLEdBQVcsRUFBRSxDQUFDO0lBQzFCLElBQUksR0FBVyxFQUFFLENBQUM7SUFDbEIsV0FBVyxHQUFHLEVBQUUsQ0FBQztJQUNqQixJQUFJLEdBQUcsTUFBTSxDQUFDO0lBQ2QsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUNqQixRQUFRLEdBQUcsS0FBSyxDQUFDO0lBQ2pCLEtBQUssR0FBRyxFQUFFLENBQUM7SUFDWCxjQUFjLEdBQVcsRUFBRSxDQUFDO0lBQzVCLEtBQUssR0FBWSxLQUFLLENBQUM7SUFDdkIsSUFBSSxHQUFtQyxTQUFTLENBQUM7SUFDakQsU0FBUyxHQUFHLEtBQUssQ0FBQztJQUNsQixlQUFlLEdBQVksSUFBSSxDQUFDO0lBQ2hDLGVBQWUsQ0FB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QVksa0lBQUUsV0FBVzs7NEZBeUR4QixvQkFBb0I7a0JBNURoQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxvQkFBb0I7b0JBQzlCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsV0FBVyxDQUFDO29CQUNwQyxTQUFTLEVBQUU7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUscUJBQXFCLENBQUM7NEJBQ25ELEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGO29CQUNELFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0ErQ1Q7aUJBQ0Y7K0dBRVUsRUFBRTtzQkFBVixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBRWtDLE9BQU87c0JBQTlDLFNBQVM7dUJBQUMsU0FBUyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIGZvcndhcmRSZWYsXG4gIEVsZW1lbnRSZWYsXG4gIFZpZXdDaGlsZCxcbiAgQWZ0ZXJDb250ZW50Q2hlY2tlZCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiwgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBjbiB9IGZyb20gJy4vdXRpbHMvY24nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd0b2xsZS1tYXNrZWQtaW5wdXQnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBGb3Jtc01vZHVsZV0sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gTWFza2VkSW5wdXRDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwiZmxleCB3LWZ1bGwgZmxleC1jb2wgZ2FwLTEuNVwiPlxuICAgICAgPGxhYmVsICpuZ0lmPVwibGFiZWxcIiBbZm9yXT1cImlkXCIgW2NsYXNzXT1cImNvbXB1dGVkTGFiZWxDbGFzc1wiPlxuICAgICAgICB7eyBsYWJlbCB9fVxuICAgICAgPC9sYWJlbD5cblxuICAgICAgPGRpdiBbY2xhc3NdPVwiY29tcHV0ZWRDb250YWluZXJDbGFzc1wiIChjbGljayk9XCJmb2N1c0lucHV0KClcIj5cbiAgICAgICAgPCEtLSBQcmVmaXggSWNvbiAtLT5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiZmxleCBoLWZ1bGwgaXRlbXMtY2VudGVyIHRleHQtbXV0ZWQtZm9yZWdyb3VuZCB0cmFuc2l0aW9uLWNvbG9ycyBkdXJhdGlvbi0yMDAgZ3JvdXAtZm9jdXMtd2l0aGluOnRleHQtcHJpbWFyeVwiPlxuICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltwcmVmaXhdXCI+PC9uZy1jb250ZW50PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICAjaW5wdXRFbFxuICAgICAgICAgIFtpZF09XCJpZFwiXG4gICAgICAgICAgW3R5cGVdPVwidHlwZVwiXG4gICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgIFtyZWFkT25seV09XCJyZWFkb25seVwiXG4gICAgICAgICAgW3ZhbHVlXT1cImRpc3BsYXlWYWx1ZVwiXG4gICAgICAgICAgKGlucHV0KT1cIm9uSW5wdXQoJGV2ZW50KVwiXG4gICAgICAgICAgKGJsdXIpPVwib25CbHVyKClcIlxuICAgICAgICAgIChmb2N1cyk9XCJvbkZvY3VzKClcIlxuICAgICAgICAgIFtjbGFzc109XCJjb21wdXRlZElucHV0Q2xhc3NcIlxuICAgICAgICAgIFthdHRyLmFyaWEtaW52YWxpZF09XCJlcnJvciB8fCBudWxsXCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cImVycm9yICYmIGVycm9yTWVzc2FnZSA/IGlkICsgJy1lcnJvcicgOiBudWxsXCIgLz5cblxuICAgICAgICA8IS0tIFN1ZmZpeCBJY29uIC0tPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJmbGV4IGgtZnVsbCBpdGVtcy1jZW50ZXIgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kIHRyYW5zaXRpb24tY29sb3JzIGR1cmF0aW9uLTIwMCBncm91cC1mb2N1cy13aXRoaW46dGV4dC1wcmltYXJ5XCI+XG4gICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3N1ZmZpeF1cIj48L25nLWNvbnRlbnQ+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZGlzYWJsZWRcIj5cbiAgICAgICAgPHBcbiAgICAgICAgICAqbmdJZj1cImhpbnQgJiYgIWVycm9yXCJcbiAgICAgICAgICBjbGFzcz1cInB4LTEgdGV4dC14cyB0ZXh0LW11dGVkLWZvcmVncm91bmQgdHJhbnNpdGlvbi1vcGFjaXR5IGR1cmF0aW9uLTIwMFwiXG4gICAgICAgICAgW2NsYXNzLm9wYWNpdHktMF09XCJpc0ZvY3VzZWQgJiYgaGlkZUhpbnRPbkZvY3VzXCI+XG4gICAgICAgICAge3sgaGludCB9fVxuICAgICAgICA8L3A+XG4gICAgICAgIDxwICpuZ0lmPVwiZXJyb3IgJiYgZXJyb3JNZXNzYWdlXCIgW2lkXT1cImlkICsgJy1lcnJvcidcIiBjbGFzcz1cInB4LTEgdGV4dC14cyB0ZXh0LWRlc3RydWN0aXZlXCI+XG4gICAgICAgICAge3sgZXJyb3JNZXNzYWdlIH19XG4gICAgICAgIDwvcD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICBgLFxufSlcbmV4cG9ydCBjbGFzcyBNYXNrZWRJbnB1dENvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBBZnRlckNvbnRlbnRDaGVja2VkIHtcbiAgQElucHV0KCkgaWQ6IHN0cmluZyA9IGBtYXNrZWQtaW5wdXQtJHtNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJzdHIoMiwgOSl9YDtcbiAgQElucHV0KCkgbGFiZWw6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBoaW50OiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgZXJyb3JNZXNzYWdlOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgbWFzazogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyID0gJyc7XG4gIEBJbnB1dCgpIHR5cGUgPSAndGV4dCc7XG4gIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XG4gIEBJbnB1dCgpIHJlYWRvbmx5ID0gZmFsc2U7XG4gIEBJbnB1dCgpIGNsYXNzID0gJyc7XG4gIEBJbnB1dCgpIGNvbnRhaW5lckNsYXNzOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgZXJyb3I6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgc2l6ZTogJ3hzJyB8ICdzbScgfCAnZGVmYXVsdCcgfCAnbGcnID0gJ2RlZmF1bHQnO1xuICBASW5wdXQoKSByZXR1cm5SYXcgPSBmYWxzZTtcbiAgQElucHV0KCkgaGlkZUhpbnRPbkZvY3VzOiBib29sZWFuID0gdHJ1ZTtcbiAgQElucHV0KCkgZXh0ZXJuYWxGb2N1c2VkOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXG4gIEBWaWV3Q2hpbGQoJ2lucHV0RWwnLCB7IHN0YXRpYzogdHJ1ZSB9KSBpbnB1dEVsITogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcblxuICBoYXNQcmVmaXggPSBmYWxzZTtcbiAgaGFzU3VmZml4ID0gZmFsc2U7XG4gIGRpc3BsYXlWYWx1ZSA9ICcnO1xuICBpc0ZvY3VzZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBwcml2YXRlIHRva2VuczogeyBba2V5OiBzdHJpbmddOiBSZWdFeHAgfSA9IHtcbiAgICAnMCc6IC9cXGQvLFxuICAgICc5JzogL1xcZC8sXG4gICAgYTogL1thLXpdL2ksXG4gICAgQTogL1thLXpdL2ksXG4gICAgJyonOiAvW2EtejAtOV0vaSxcbiAgfTtcblxuICBvbkNoYW5nZTogYW55ID0gKCkgPT4ge307XG4gIG9uVG91Y2hlZDogYW55ID0gKCkgPT4ge307XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBlbDogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgKSB7fVxuXG4gIG5nQWZ0ZXJDb250ZW50Q2hlY2tlZCgpIHtcbiAgICBjb25zdCBwcmVmaXggPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignW3ByZWZpeF0nKTtcbiAgICBjb25zdCBzdWZmaXggPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignW3N1ZmZpeF0nKTtcblxuICAgIGlmICh0aGlzLmhhc1ByZWZpeCAhPT0gISFwcmVmaXggfHwgdGhpcy5oYXNTdWZmaXggIT09ICEhc3VmZml4KSB7XG4gICAgICB0aGlzLmhhc1ByZWZpeCA9ICEhcHJlZml4O1xuICAgICAgdGhpcy5oYXNTdWZmaXggPSAhIXN1ZmZpeDtcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG4gIH1cblxuICBnZXQgY29tcHV0ZWRMYWJlbENsYXNzKCkge1xuICAgIHJldHVybiBjbihcbiAgICAgICd0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtZm9yZWdyb3VuZCBsZWFkaW5nLW5vbmUgdHJhbnNpdGlvbi1vcGFjaXR5IGR1cmF0aW9uLTIwMCcsXG4gICAgICB0aGlzLmRpc2FibGVkICYmICdvcGFjaXR5LTUwJ1xuICAgICk7XG4gIH1cblxuICBnZXQgY29tcHV0ZWRDb250YWluZXJDbGFzcygpIHtcbiAgICBjb25zdCBmb2N1c2VkID0gdGhpcy5leHRlcm5hbEZvY3VzZWQgIT09IHVuZGVmaW5lZCA/IHRoaXMuZXh0ZXJuYWxGb2N1c2VkIDogdGhpcy5pc0ZvY3VzZWQ7XG4gICAgcmV0dXJuIGNuKFxuICAgICAgLy8gQmFzZSBzdHlsZXNcbiAgICAgICdncm91cCByZWxhdGl2ZSBmbGV4IGl0ZW1zLWNlbnRlciB3LWZ1bGwgYm9yZGVyIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTIwMCcsXG4gICAgICAnYmctYmFja2dyb3VuZCBib3JkZXItaW5wdXQgc2hhZG93LXNtJyxcblxuICAgICAgLy8gU2l6aW5nXG4gICAgICB0aGlzLnNpemUgPT09ICd4cycgJiYgJ2gtOCBweC0yIGdhcC0xLjUgdGV4dC14cycsXG4gICAgICB0aGlzLnNpemUgPT09ICdzbScgJiYgJ2gtOSBweC0zIGdhcC0yIHRleHQtc20nLFxuICAgICAgdGhpcy5zaXplID09PSAnZGVmYXVsdCcgJiYgJ2gtMTAgcHgtMyBnYXAtMiB0ZXh0LXNtJyxcbiAgICAgIHRoaXMuc2l6ZSA9PT0gJ2xnJyAmJiAnaC0xMSBweC00IGdhcC0zIHRleHQtYmFzZScsXG5cbiAgICAgIC8vIFJvdW5kZWQgY29ybmVyc1xuICAgICAgJ3JvdW5kZWQtbWQnLFxuXG4gICAgICAvLyBGb2N1cyBzdGF0ZVxuICAgICAgISh0aGlzLnJlYWRvbmx5IHx8IHRoaXMuZGlzYWJsZWQpICYmIFtcbiAgICAgICAgJ2ZvY3VzLXdpdGhpbjpyaW5nLTQnLFxuICAgICAgICAnZm9jdXMtd2l0aGluOnJpbmctcmluZy8zMCcsXG4gICAgICAgICdmb2N1cy13aXRoaW46cmluZy1vZmZzZXQtMCcsXG4gICAgICAgICdmb2N1cy13aXRoaW46c2hhZG93LW5vbmUnLFxuICAgICAgICB0aGlzLmVycm9yID8gJ2ZvY3VzLXdpdGhpbjpib3JkZXItZGVzdHJ1Y3RpdmUvODAnIDogJ2ZvY3VzLXdpdGhpbjpib3JkZXItcHJpbWFyeS84MCcsXG4gICAgICBdLFxuXG4gICAgICAvLyBFcnJvciBzdGF0ZVxuICAgICAgdGhpcy5lcnJvciAmJiBbXG4gICAgICAgICdib3JkZXItZGVzdHJ1Y3RpdmUnLFxuICAgICAgICAhKHRoaXMucmVhZG9ubHkgfHwgdGhpcy5kaXNhYmxlZCkgJiYgJ2ZvY3VzLXdpdGhpbjpyaW5nLWRlc3RydWN0aXZlLzMwJyxcbiAgICAgIF0sXG5cbiAgICAgIC8vIERpc2FibGVkIHN0YXRlXG4gICAgICB0aGlzLmRpc2FibGVkICYmIFsnY3Vyc29yLW5vdC1hbGxvd2VkIG9wYWNpdHktNTAnLCAnYm9yZGVyLW9wYWNpdHktNTAnXSxcblxuICAgICAgLy8gUmVhZG9ubHkgc3RhdGVcbiAgICAgIHRoaXMucmVhZG9ubHkgJiYgWydjdXJzb3ItZGVmYXVsdCcsICdib3JkZXItZGFzaGVkJ10sXG5cbiAgICAgIHRoaXMuY29udGFpbmVyQ2xhc3NcbiAgICApO1xuICB9XG5cbiAgZ2V0IGNvbXB1dGVkSW5wdXRDbGFzcygpIHtcbiAgICByZXR1cm4gY24oXG4gICAgICAvLyBCYXNlIHN0eWxlc1xuICAgICAgJ2ZsZXgtMSBiZy10cmFuc3BhcmVudCBib3JkZXItbm9uZSBwLTAnLFxuICAgICAgJ3BsYWNlaG9sZGVyOnRleHQtbXV0ZWQtZm9yZWdyb3VuZCcsXG5cbiAgICAgIC8vIFJlbW92ZSBhbGwgZGVmYXVsdCBmb2N1cyBzdHlsZXNcbiAgICAgICdmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0wIGZvY3VzOnNoYWRvdy1ub25lJyxcblxuICAgICAgLy8gVGV4dCBzaXppbmdcbiAgICAgIHRoaXMuc2l6ZSA9PT0gJ3hzJyAmJiAndGV4dC14cycsXG4gICAgICB0aGlzLnNpemUgPT09ICdzbScgJiYgJ3RleHQtc20nLFxuICAgICAgdGhpcy5zaXplID09PSAnZGVmYXVsdCcgJiYgJ3RleHQtc20nLFxuICAgICAgdGhpcy5zaXplID09PSAnbGcnICYmICd0ZXh0LWJhc2UnLFxuXG4gICAgICAvLyBDdXJzb3Igc3RhdGVzXG4gICAgICB0aGlzLmRpc2FibGVkICYmICdjdXJzb3Itbm90LWFsbG93ZWQnLFxuICAgICAgdGhpcy5yZWFkb25seSAmJiAnY3Vyc29yLWRlZmF1bHQnLFxuXG4gICAgICAvLyBUZXh0IGNvbG9yXG4gICAgICAndGV4dC1mb3JlZ3JvdW5kJyxcblxuICAgICAgLy8gU2VsZWN0aW9uIGNvbG9yXG4gICAgICAnc2VsZWN0aW9uOmJnLXByaW1hcnkvMjAgc2VsZWN0aW9uOnRleHQtZm9yZWdyb3VuZCcsXG5cbiAgICAgIHRoaXMuY2xhc3NcbiAgICApO1xuICB9XG5cbiAgZm9jdXNJbnB1dCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZGlzYWJsZWQgJiYgdGhpcy5pbnB1dEVsKSB7XG4gICAgICB0aGlzLmlucHV0RWwubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cbiAgfVxuXG4gIG9uRm9jdXMoKTogdm9pZCB7XG4gICAgdGhpcy5pc0ZvY3VzZWQgPSB0cnVlO1xuICB9XG5cbiAgb25CbHVyKCk6IHZvaWQge1xuICAgIHRoaXMuaXNGb2N1c2VkID0gZmFsc2U7XG4gICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgfVxuXG4gIC8vIC0tLSBNYXNraW5nIExvZ2ljIC0tLVxuICBvbklucHV0KGV2ZW50OiBFdmVudCkge1xuICAgIGlmICh0aGlzLnJlYWRvbmx5IHx8IHRoaXMuZGlzYWJsZWQpIHJldHVybjtcbiAgICBjb25zdCBpbnB1dCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgIGNvbnN0IHJhdyA9IHRoaXMudW5tYXNrKGlucHV0LnZhbHVlKTtcbiAgICBjb25zdCBtYXNrZWQgPSB0aGlzLmFwcGx5TWFzayhyYXcpO1xuICAgIHRoaXMuZGlzcGxheVZhbHVlID0gbWFza2VkO1xuICAgIGlucHV0LnZhbHVlID0gbWFza2VkO1xuICAgIHRoaXMucmV0dXJuUmF3ID8gdGhpcy5vbkNoYW5nZShyYXcpIDogdGhpcy5vbkNoYW5nZShtYXNrZWQpO1xuICB9XG5cbiAgcHJpdmF0ZSBhcHBseU1hc2socmF3VmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgbGV0IHJhd0luZGV4ID0gMDtcbiAgICBsZXQgZm9ybWF0dGVkID0gJyc7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLm1hc2subGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmIChyYXdJbmRleCA+PSByYXdWYWx1ZS5sZW5ndGgpIGJyZWFrO1xuICAgICAgY29uc3QgbWFza0NoYXIgPSB0aGlzLm1hc2tbaV07XG4gICAgICBjb25zdCByYXdDaGFyID0gcmF3VmFsdWVbcmF3SW5kZXhdO1xuICAgICAgaWYgKHRoaXMudG9rZW5zW21hc2tDaGFyXSkge1xuICAgICAgICBpZiAodGhpcy50b2tlbnNbbWFza0NoYXJdLnRlc3QocmF3Q2hhcikpIHtcbiAgICAgICAgICBmb3JtYXR0ZWQgKz0gcmF3Q2hhcjtcbiAgICAgICAgICByYXdJbmRleCsrO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJhd0luZGV4Kys7XG4gICAgICAgICAgaS0tO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmb3JtYXR0ZWQgKz0gbWFza0NoYXI7XG4gICAgICAgIGlmIChyYXdDaGFyID09PSBtYXNrQ2hhcikgcmF3SW5kZXgrKztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZvcm1hdHRlZDtcbiAgfVxuXG4gIHByaXZhdGUgdW5tYXNrKHZhbDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdmFsLnJlcGxhY2UoL1teYS16QS1aMC05XS9nLCAnJyk7XG4gIH1cblxuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLmRpc3BsYXlWYWx1ZSA9IHZhbHVlID8gdGhpcy5hcHBseU1hc2sodGhpcy51bm1hc2sodmFsdWUudG9TdHJpbmcoKSkpIDogJyc7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNuID0gY247XG59XG4iXX0=
@@ -1,14 +1,20 @@
1
1
  import { Component, TemplateRef } from '@angular/core';
2
2
  import { CommonModule } from '@angular/common';
3
+ import { A11yModule } from '@angular/cdk/a11y';
3
4
  import { cn } from './utils/cn';
4
5
  import * as i0 from "@angular/core";
5
6
  import * as i1 from "./modal-ref";
6
7
  import * as i2 from "@angular/common";
8
+ import * as i3 from "@angular/cdk/a11y";
7
9
  export class ModalComponent {
8
10
  ref;
9
11
  contentType = 'string';
10
12
  content;
11
13
  modalClasses = '';
14
+ /** Stable, per-instance ids used to wire dialog ARIA relationships. */
15
+ _uid = Math.random().toString(36).substr(2, 9);
16
+ titleId = `tolle-modal-title-${this._uid}`;
17
+ descId = `tolle-modal-desc-${this._uid}`;
12
18
  constructor(ref) {
13
19
  this.ref = ref;
14
20
  }
@@ -17,13 +23,17 @@ export class ModalComponent {
17
23
  this.modalClasses = this.getModalSizeCss();
18
24
  this.determineContentType();
19
25
  }
26
+ /** Whether the auto-rendered header (title and/or close button) is shown. */
27
+ get hasHeader() {
28
+ return !!(this.ref.modal.showCloseButton || this.ref.modal.title);
29
+ }
20
30
  getModalSizeCss() {
21
31
  const { size } = this.ref.modal;
22
32
  return cn(
23
- // Base classes: Added 'w-full' and 'mx-auto'
24
- 'bg-background border border-border shadow-lg relative flex flex-col w-full mx-auto ', size === 'fullscreen' ? 'h-screen w-screen rounded-none' : 'rounded-md',
33
+ // Surface: overlay card that never exceeds the viewport (header stays, body scrolls).
34
+ 'bg-background text-foreground border border-border shadow-lg relative flex flex-col w-full mx-auto', size === 'fullscreen' ? 'h-screen w-screen rounded-none' : 'rounded-lg max-h-[85vh]',
25
35
  // Sizing scale with explicit max-widths
26
- size === 'xs' && 'max-w-[320px]', size === 'sm' && 'max-w-[425px]', size === 'default' && 'max-w-[544px]', size === 'lg' && 'max-w-[1024px]', size === 'xl' && 'max-w-[1280px]');
36
+ size === 'xs' && 'max-w-[320px]', size === 'sm' && 'max-w-[425px]', size === 'default' && 'max-w-[512px]', size === 'lg' && 'max-w-[1024px]', size === 'xl' && 'max-w-[1280px]');
27
37
  }
28
38
  determineContentType() {
29
39
  if (typeof this.content === 'string')
@@ -38,20 +48,33 @@ export class ModalComponent {
38
48
  cn = cn;
39
49
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ModalComponent, deps: [{ token: i1.ModalRef }], target: i0.ɵɵFactoryTarget.Component });
40
50
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: ModalComponent, isStandalone: true, selector: "tolle-modal", ngImport: i0, template: `
41
- <div [class]="modalClasses" class="pointer-events-auto" (mousedown)="$event.stopPropagation()">
51
+ <div [class]="modalClasses" class="pointer-events-auto"
52
+ role="dialog"
53
+ aria-modal="true"
54
+ [attr.aria-labelledby]="ref.modal.title ? titleId : null"
55
+ [attr.aria-describedby]="contentType === 'string' ? descId : null"
56
+ cdkTrapFocus cdkTrapFocusAutoCapture
57
+ (mousedown)="$event.stopPropagation()">
42
58
 
43
- <div *ngIf="ref.modal.showCloseButton || ref.modal.title" class="flex items-center justify-between px-6 pt-6">
44
- <h3 *ngIf="ref.modal.title" class="text-lg font-semibold text-foreground tracking-tight">
59
+ <!-- Header -->
60
+ <div *ngIf="hasHeader" class="flex shrink-0 items-start justify-between gap-4 px-6 pt-6 pb-4">
61
+ <h2 *ngIf="ref.modal.title" [id]="titleId" class="text-lg font-semibold leading-none tracking-tight text-foreground">
45
62
  {{ ref.modal.title }}
46
- </h3>
47
- <button *ngIf="ref.modal.showCloseButton" (click)="ref.close()" class="ml-auto p-1 text-muted-foreground hover:text-foreground hover:bg-accent rounded-md transition-colors">
48
- <i class="ri-close-line text-2xl"></i>
63
+ </h2>
64
+ <button
65
+ *ngIf="ref.modal.showCloseButton"
66
+ type="button"
67
+ (click)="ref.close()"
68
+ aria-label="Close"
69
+ class="-mr-2 -mt-2 ml-auto grid h-8 w-8 shrink-0 place-items-center rounded-md text-muted-foreground transition-colors hover:bg-accent hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring">
70
+ <i class="ri-close-line text-xl"></i>
49
71
  </button>
50
72
  </div>
51
73
 
52
- <div class="overflow-y-auto max-h-[100vh] text-foreground">
74
+ <!-- Body -->
75
+ <div class="min-h-0 flex-1 overflow-y-auto">
53
76
  <ng-container [ngSwitch]="contentType">
54
- <div *ngSwitchCase="'string'">{{ content }}</div>
77
+ <p *ngSwitchCase="'string'" [id]="descId" [class]="hasHeader ? 'px-6 pb-6 text-sm leading-relaxed text-muted-foreground' : 'p-6 text-sm leading-relaxed text-muted-foreground'">{{ content }}</p>
55
78
 
56
79
  <ng-container *ngSwitchCase="'template'">
57
80
  <ng-container *ngTemplateOutlet="asTemplate; context: ref.modal.context"></ng-container>
@@ -63,25 +86,38 @@ export class ModalComponent {
63
86
  </ng-container>
64
87
  </div>
65
88
  </div>
66
- `, isInline: true, styles: [":host{display:contents}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }] });
89
+ `, isInline: true, styles: [":host{display:contents}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "ngmodule", type: A11yModule }, { kind: "directive", type: i3.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }] });
67
90
  }
68
91
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ModalComponent, decorators: [{
69
92
  type: Component,
70
- args: [{ selector: 'tolle-modal', standalone: true, imports: [CommonModule], template: `
71
- <div [class]="modalClasses" class="pointer-events-auto" (mousedown)="$event.stopPropagation()">
93
+ args: [{ selector: 'tolle-modal', standalone: true, imports: [CommonModule, A11yModule], template: `
94
+ <div [class]="modalClasses" class="pointer-events-auto"
95
+ role="dialog"
96
+ aria-modal="true"
97
+ [attr.aria-labelledby]="ref.modal.title ? titleId : null"
98
+ [attr.aria-describedby]="contentType === 'string' ? descId : null"
99
+ cdkTrapFocus cdkTrapFocusAutoCapture
100
+ (mousedown)="$event.stopPropagation()">
72
101
 
73
- <div *ngIf="ref.modal.showCloseButton || ref.modal.title" class="flex items-center justify-between px-6 pt-6">
74
- <h3 *ngIf="ref.modal.title" class="text-lg font-semibold text-foreground tracking-tight">
102
+ <!-- Header -->
103
+ <div *ngIf="hasHeader" class="flex shrink-0 items-start justify-between gap-4 px-6 pt-6 pb-4">
104
+ <h2 *ngIf="ref.modal.title" [id]="titleId" class="text-lg font-semibold leading-none tracking-tight text-foreground">
75
105
  {{ ref.modal.title }}
76
- </h3>
77
- <button *ngIf="ref.modal.showCloseButton" (click)="ref.close()" class="ml-auto p-1 text-muted-foreground hover:text-foreground hover:bg-accent rounded-md transition-colors">
78
- <i class="ri-close-line text-2xl"></i>
106
+ </h2>
107
+ <button
108
+ *ngIf="ref.modal.showCloseButton"
109
+ type="button"
110
+ (click)="ref.close()"
111
+ aria-label="Close"
112
+ class="-mr-2 -mt-2 ml-auto grid h-8 w-8 shrink-0 place-items-center rounded-md text-muted-foreground transition-colors hover:bg-accent hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring">
113
+ <i class="ri-close-line text-xl"></i>
79
114
  </button>
80
115
  </div>
81
116
 
82
- <div class="overflow-y-auto max-h-[100vh] text-foreground">
117
+ <!-- Body -->
118
+ <div class="min-h-0 flex-1 overflow-y-auto">
83
119
  <ng-container [ngSwitch]="contentType">
84
- <div *ngSwitchCase="'string'">{{ content }}</div>
120
+ <p *ngSwitchCase="'string'" [id]="descId" [class]="hasHeader ? 'px-6 pb-6 text-sm leading-relaxed text-muted-foreground' : 'p-6 text-sm leading-relaxed text-muted-foreground'">{{ content }}</p>
85
121
 
86
122
  <ng-container *ngSwitchCase="'template'">
87
123
  <ng-container *ngTemplateOutlet="asTemplate; context: ref.modal.context"></ng-container>
@@ -95,4 +131,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
95
131
  </div>
96
132
  `, styles: [":host{display:contents}\n"] }]
97
133
  }], ctorParameters: () => [{ type: i1.ModalRef }] });
98
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvdG9sbGUvc3JjL2xpYi9tb2RhbC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxXQUFXLEVBQVEsTUFBTSxlQUFlLENBQUM7QUFDckUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxZQUFZLENBQUM7Ozs7QUF1Q2hDLE1BQU0sT0FBTyxjQUFjO0lBS047SUFKbkIsV0FBVyxHQUF3QyxRQUFRLENBQUM7SUFDNUQsT0FBTyxDQUFNO0lBQ2IsWUFBWSxHQUFHLEVBQUUsQ0FBQztJQUVsQixZQUFtQixHQUFhO1FBQWIsUUFBRyxHQUFILEdBQUcsQ0FBVTtJQUFHLENBQUM7SUFFcEMsUUFBUTtRQUNOLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQzNDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFTyxlQUFlO1FBQ3JCLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQztRQUVoQyxPQUFPLEVBQUU7UUFDUCw2Q0FBNkM7UUFDN0MscUZBQXFGLEVBRXJGLElBQUksS0FBSyxZQUFZLENBQUMsQ0FBQyxDQUFDLGdDQUFnQyxDQUFDLENBQUMsQ0FBQyxZQUFZO1FBRXZFLHdDQUF3QztRQUN4QyxJQUFJLEtBQUssSUFBSSxJQUFJLGVBQWUsRUFDaEMsSUFBSSxLQUFLLElBQUksSUFBSSxlQUFlLEVBQ2hDLElBQUksS0FBSyxTQUFTLElBQUksZUFBZSxFQUNyQyxJQUFJLEtBQUssSUFBSSxJQUFJLGdCQUFnQixFQUNqQyxJQUFJLEtBQUssSUFBSSxJQUFJLGdCQUFnQixDQUNsQyxDQUFDO0lBQ0osQ0FBQztJQUVPLG9CQUFvQjtRQUMxQixJQUFJLE9BQU8sSUFBSSxDQUFDLE9BQU8sS0FBSyxRQUFRO1lBQUUsSUFBSSxDQUFDLFdBQVcsR0FBRyxRQUFRLENBQUM7YUFDN0QsSUFBSSxJQUFJLENBQUMsT0FBTyxZQUFZLFdBQVc7WUFBRSxJQUFJLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQzs7WUFDdkUsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7SUFDdEMsQ0FBQztJQUVELElBQUksVUFBVSxLQUFLLE9BQU8sSUFBSSxDQUFDLE9BQTJCLENBQUMsQ0FBQyxDQUFDO0lBQzdELElBQUksV0FBVyxLQUFLLE9BQU8sSUFBSSxDQUFDLE9BQW9CLENBQUMsQ0FBQyxDQUFDO0lBQzdDLEVBQUUsR0FBRyxFQUFFLENBQUM7d0dBdkNQLGNBQWM7NEZBQWQsY0FBYyx1RUFqQ2Y7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMEJULGtHQTNCUyxZQUFZOzs0RkFrQ1gsY0FBYztrQkFyQzFCLFNBQVM7K0JBQ0UsYUFBYSxjQUNYLElBQUksV0FDUCxDQUFDLFlBQVksQ0FBQyxZQUNiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTBCVCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBUZW1wbGF0ZVJlZiwgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1vZGFsUmVmIH0gZnJvbSAnLi9tb2RhbC1yZWYnO1xuaW1wb3J0IHsgY24gfSBmcm9tICcuL3V0aWxzL2NuJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndG9sbGUtbW9kYWwnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IFtjbGFzc109XCJtb2RhbENsYXNzZXNcIiBjbGFzcz1cInBvaW50ZXItZXZlbnRzLWF1dG9cIiAobW91c2Vkb3duKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiPlxuXG4gICAgICA8ZGl2ICpuZ0lmPVwicmVmLm1vZGFsLnNob3dDbG9zZUJ1dHRvbiB8fCByZWYubW9kYWwudGl0bGVcIiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBweC02IHB0LTZcIj5cbiAgICAgICAgPGgzICpuZ0lmPVwicmVmLm1vZGFsLnRpdGxlXCIgY2xhc3M9XCJ0ZXh0LWxnIGZvbnQtc2VtaWJvbGQgdGV4dC1mb3JlZ3JvdW5kIHRyYWNraW5nLXRpZ2h0XCI+XG4gICAgICAgICAge3sgcmVmLm1vZGFsLnRpdGxlIH19XG4gICAgICAgIDwvaDM+XG4gICAgICAgIDxidXR0b24gKm5nSWY9XCJyZWYubW9kYWwuc2hvd0Nsb3NlQnV0dG9uXCIgKGNsaWNrKT1cInJlZi5jbG9zZSgpXCIgY2xhc3M9XCJtbC1hdXRvIHAtMSB0ZXh0LW11dGVkLWZvcmVncm91bmQgaG92ZXI6dGV4dC1mb3JlZ3JvdW5kIGhvdmVyOmJnLWFjY2VudCByb3VuZGVkLW1kIHRyYW5zaXRpb24tY29sb3JzXCI+XG4gICAgICAgICAgPGkgY2xhc3M9XCJyaS1jbG9zZS1saW5lIHRleHQtMnhsXCI+PC9pPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzPVwib3ZlcmZsb3cteS1hdXRvIG1heC1oLVsxMDB2aF0gdGV4dC1mb3JlZ3JvdW5kXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cImNvbnRlbnRUeXBlXCI+XG4gICAgICAgICAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwiJ3N0cmluZydcIj57eyBjb250ZW50IH19PC9kaXY+XG5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCIndGVtcGxhdGUnXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYXNUZW1wbGF0ZTsgY29udGV4dDogcmVmLm1vZGFsLmNvbnRleHRcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidjb21wb25lbnQnXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0NvbXBvbmVudE91dGxldD1cImFzQ29tcG9uZW50XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0eWxlczogW2BcbiAgICA6aG9zdCB7XG4gICAgICBkaXNwbGF5OiBjb250ZW50czsgLyogVGhpcyBtYWtlcyB0aGUgaG9zdCBcImRpc2FwcGVhclwiIHNvIHRoZSBkaXYgdGFyZ2V0cyB0aGUgb3ZlcmxheSBwYW5lIGRpcmVjdGx5ICovXG4gICAgfVxuICBgXVxufSlcbmV4cG9ydCBjbGFzcyBNb2RhbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIGNvbnRlbnRUeXBlOiAndGVtcGxhdGUnIHwgJ3N0cmluZycgfCAnY29tcG9uZW50JyA9ICdzdHJpbmcnO1xuICBjb250ZW50OiBhbnk7XG4gIG1vZGFsQ2xhc3NlcyA9ICcnO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyByZWY6IE1vZGFsUmVmKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuY29udGVudCA9IHRoaXMucmVmLm1vZGFsLmNvbnRlbnQ7XG4gICAgdGhpcy5tb2RhbENsYXNzZXMgPSB0aGlzLmdldE1vZGFsU2l6ZUNzcygpO1xuICAgIHRoaXMuZGV0ZXJtaW5lQ29udGVudFR5cGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0TW9kYWxTaXplQ3NzKCk6IHN0cmluZyB7XG4gICAgY29uc3QgeyBzaXplIH0gPSB0aGlzLnJlZi5tb2RhbDtcblxuICAgIHJldHVybiBjbihcbiAgICAgIC8vIEJhc2UgY2xhc3NlczogQWRkZWQgJ3ctZnVsbCcgYW5kICdteC1hdXRvJ1xuICAgICAgJ2JnLWJhY2tncm91bmQgYm9yZGVyIGJvcmRlci1ib3JkZXIgc2hhZG93LWxnIHJlbGF0aXZlIGZsZXggZmxleC1jb2wgdy1mdWxsIG14LWF1dG8gJyxcblxuICAgICAgc2l6ZSA9PT0gJ2Z1bGxzY3JlZW4nID8gJ2gtc2NyZWVuIHctc2NyZWVuIHJvdW5kZWQtbm9uZScgOiAncm91bmRlZC1tZCcsXG5cbiAgICAgIC8vIFNpemluZyBzY2FsZSB3aXRoIGV4cGxpY2l0IG1heC13aWR0aHNcbiAgICAgIHNpemUgPT09ICd4cycgJiYgJ21heC13LVszMjBweF0nLFxuICAgICAgc2l6ZSA9PT0gJ3NtJyAmJiAnbWF4LXctWzQyNXB4XScsXG4gICAgICBzaXplID09PSAnZGVmYXVsdCcgJiYgJ21heC13LVs1NDRweF0nLFxuICAgICAgc2l6ZSA9PT0gJ2xnJyAmJiAnbWF4LXctWzEwMjRweF0nLFxuICAgICAgc2l6ZSA9PT0gJ3hsJyAmJiAnbWF4LXctWzEyODBweF0nXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZGV0ZXJtaW5lQ29udGVudFR5cGUoKSB7XG4gICAgaWYgKHR5cGVvZiB0aGlzLmNvbnRlbnQgPT09ICdzdHJpbmcnKSB0aGlzLmNvbnRlbnRUeXBlID0gJ3N0cmluZyc7XG4gICAgZWxzZSBpZiAodGhpcy5jb250ZW50IGluc3RhbmNlb2YgVGVtcGxhdGVSZWYpIHRoaXMuY29udGVudFR5cGUgPSAndGVtcGxhdGUnO1xuICAgIGVsc2UgdGhpcy5jb250ZW50VHlwZSA9ICdjb21wb25lbnQnO1xuICB9XG5cbiAgZ2V0IGFzVGVtcGxhdGUoKSB7IHJldHVybiB0aGlzLmNvbnRlbnQgYXMgVGVtcGxhdGVSZWY8YW55PjsgfVxuICBnZXQgYXNDb21wb25lbnQoKSB7IHJldHVybiB0aGlzLmNvbnRlbnQgYXMgVHlwZTxhbnk+OyB9XG4gIHByb3RlY3RlZCBjbiA9IGNuO1xufVxuIl19
134
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvdG9sbGUvc3JjL2xpYi9tb2RhbC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxXQUFXLEVBQVEsTUFBTSxlQUFlLENBQUM7QUFDckUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUUvQyxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sWUFBWSxDQUFDOzs7OztBQW9EaEMsTUFBTSxPQUFPLGNBQWM7SUFVTjtJQVRuQixXQUFXLEdBQXdDLFFBQVEsQ0FBQztJQUM1RCxPQUFPLENBQU07SUFDYixZQUFZLEdBQUcsRUFBRSxDQUFDO0lBRWxCLHVFQUF1RTtJQUN0RCxJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELE9BQU8sR0FBRyxxQkFBcUIsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzNDLE1BQU0sR0FBRyxvQkFBb0IsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBRWxELFlBQW1CLEdBQWE7UUFBYixRQUFHLEdBQUgsR0FBRyxDQUFVO0lBQUcsQ0FBQztJQUVwQyxRQUFRO1FBQ04sSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUM7UUFDdEMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDM0MsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVELDZFQUE2RTtJQUM3RSxJQUFJLFNBQVM7UUFDWCxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLGVBQWUsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRU8sZUFBZTtRQUNyQixNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUM7UUFFaEMsT0FBTyxFQUFFO1FBQ1Asc0ZBQXNGO1FBQ3RGLG9HQUFvRyxFQUVwRyxJQUFJLEtBQUssWUFBWSxDQUFDLENBQUMsQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDLENBQUMseUJBQXlCO1FBRXBGLHdDQUF3QztRQUN4QyxJQUFJLEtBQUssSUFBSSxJQUFJLGVBQWUsRUFDaEMsSUFBSSxLQUFLLElBQUksSUFBSSxlQUFlLEVBQ2hDLElBQUksS0FBSyxTQUFTLElBQUksZUFBZSxFQUNyQyxJQUFJLEtBQUssSUFBSSxJQUFJLGdCQUFnQixFQUNqQyxJQUFJLEtBQUssSUFBSSxJQUFJLGdCQUFnQixDQUNsQyxDQUFDO0lBQ0osQ0FBQztJQUVPLG9CQUFvQjtRQUMxQixJQUFJLE9BQU8sSUFBSSxDQUFDLE9BQU8sS0FBSyxRQUFRO1lBQUUsSUFBSSxDQUFDLFdBQVcsR0FBRyxRQUFRLENBQUM7YUFDN0QsSUFBSSxJQUFJLENBQUMsT0FBTyxZQUFZLFdBQVc7WUFBRSxJQUFJLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQzs7WUFDdkUsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7SUFDdEMsQ0FBQztJQUVELElBQUksVUFBVSxLQUFLLE9BQU8sSUFBSSxDQUFDLE9BQTJCLENBQUMsQ0FBQyxDQUFDO0lBQzdELElBQUksV0FBVyxLQUFLLE9BQU8sSUFBSSxDQUFDLE9BQW9CLENBQUMsQ0FBQyxDQUFDO0lBQzdDLEVBQUUsR0FBRyxFQUFFLENBQUM7d0dBakRQLGNBQWM7NEZBQWQsY0FBYyx1RUE5Q2Y7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXVDVCxrR0F4Q1MsWUFBWSw2dUJBQUUsVUFBVTs7NEZBK0N2QixjQUFjO2tCQWxEMUIsU0FBUzsrQkFDRSxhQUFhLGNBQ1gsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLFVBQVUsQ0FBQyxZQUN6Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBdUNUIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIFRlbXBsYXRlUmVmLCBUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQTExeU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IE1vZGFsUmVmIH0gZnJvbSAnLi9tb2RhbC1yZWYnO1xuaW1wb3J0IHsgY24gfSBmcm9tICcuL3V0aWxzL2NuJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndG9sbGUtbW9kYWwnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBBMTF5TW9kdWxlXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IFtjbGFzc109XCJtb2RhbENsYXNzZXNcIiBjbGFzcz1cInBvaW50ZXItZXZlbnRzLWF1dG9cIlxuICAgICAgcm9sZT1cImRpYWxvZ1wiXG4gICAgICBhcmlhLW1vZGFsPVwidHJ1ZVwiXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwicmVmLm1vZGFsLnRpdGxlID8gdGl0bGVJZCA6IG51bGxcIlxuICAgICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJjb250ZW50VHlwZSA9PT0gJ3N0cmluZycgPyBkZXNjSWQgOiBudWxsXCJcbiAgICAgIGNka1RyYXBGb2N1cyBjZGtUcmFwRm9jdXNBdXRvQ2FwdHVyZVxuICAgICAgKG1vdXNlZG93bik9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5cblxuICAgICAgPCEtLSBIZWFkZXIgLS0+XG4gICAgICA8ZGl2ICpuZ0lmPVwiaGFzSGVhZGVyXCIgY2xhc3M9XCJmbGV4IHNocmluay0wIGl0ZW1zLXN0YXJ0IGp1c3RpZnktYmV0d2VlbiBnYXAtNCBweC02IHB0LTYgcGItNFwiPlxuICAgICAgICA8aDIgKm5nSWY9XCJyZWYubW9kYWwudGl0bGVcIiBbaWRdPVwidGl0bGVJZFwiIGNsYXNzPVwidGV4dC1sZyBmb250LXNlbWlib2xkIGxlYWRpbmctbm9uZSB0cmFja2luZy10aWdodCB0ZXh0LWZvcmVncm91bmRcIj5cbiAgICAgICAgICB7eyByZWYubW9kYWwudGl0bGUgfX1cbiAgICAgICAgPC9oMj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICpuZ0lmPVwicmVmLm1vZGFsLnNob3dDbG9zZUJ1dHRvblwiXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgKGNsaWNrKT1cInJlZi5jbG9zZSgpXCJcbiAgICAgICAgICBhcmlhLWxhYmVsPVwiQ2xvc2VcIlxuICAgICAgICAgIGNsYXNzPVwiLW1yLTIgLW10LTIgbWwtYXV0byBncmlkIGgtOCB3LTggc2hyaW5rLTAgcGxhY2UtaXRlbXMtY2VudGVyIHJvdW5kZWQtbWQgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kIHRyYW5zaXRpb24tY29sb3JzIGhvdmVyOmJnLWFjY2VudCBob3Zlcjp0ZXh0LWZvcmVncm91bmQgZm9jdXMtdmlzaWJsZTpvdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpyaW5nLTIgZm9jdXMtdmlzaWJsZTpyaW5nLXJpbmdcIj5cbiAgICAgICAgICA8aSBjbGFzcz1cInJpLWNsb3NlLWxpbmUgdGV4dC14bFwiPjwvaT5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBCb2R5IC0tPlxuICAgICAgPGRpdiBjbGFzcz1cIm1pbi1oLTAgZmxleC0xIG92ZXJmbG93LXktYXV0b1wiPlxuICAgICAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJjb250ZW50VHlwZVwiPlxuICAgICAgICAgIDxwICpuZ1N3aXRjaENhc2U9XCInc3RyaW5nJ1wiIFtpZF09XCJkZXNjSWRcIiBbY2xhc3NdPVwiaGFzSGVhZGVyID8gJ3B4LTYgcGItNiB0ZXh0LXNtIGxlYWRpbmctcmVsYXhlZCB0ZXh0LW11dGVkLWZvcmVncm91bmQnIDogJ3AtNiB0ZXh0LXNtIGxlYWRpbmctcmVsYXhlZCB0ZXh0LW11dGVkLWZvcmVncm91bmQnXCI+e3sgY29udGVudCB9fTwvcD5cblxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIid0ZW1wbGF0ZSdcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJhc1RlbXBsYXRlOyBjb250ZXh0OiByZWYubW9kYWwuY29udGV4dFwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2NvbXBvbmVudCdcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nQ29tcG9uZW50T3V0bGV0PVwiYXNDb21wb25lbnRcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgYCxcbiAgc3R5bGVzOiBbYFxuICAgIDpob3N0IHtcbiAgICAgIGRpc3BsYXk6IGNvbnRlbnRzOyAvKiBUaGlzIG1ha2VzIHRoZSBob3N0IFwiZGlzYXBwZWFyXCIgc28gdGhlIGRpdiB0YXJnZXRzIHRoZSBvdmVybGF5IHBhbmUgZGlyZWN0bHkgKi9cbiAgICB9XG4gIGBdXG59KVxuZXhwb3J0IGNsYXNzIE1vZGFsQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgY29udGVudFR5cGU6ICd0ZW1wbGF0ZScgfCAnc3RyaW5nJyB8ICdjb21wb25lbnQnID0gJ3N0cmluZyc7XG4gIGNvbnRlbnQ6IGFueTtcbiAgbW9kYWxDbGFzc2VzID0gJyc7XG5cbiAgLyoqIFN0YWJsZSwgcGVyLWluc3RhbmNlIGlkcyB1c2VkIHRvIHdpcmUgZGlhbG9nIEFSSUEgcmVsYXRpb25zaGlwcy4gKi9cbiAgcHJpdmF0ZSByZWFkb25seSBfdWlkID0gTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyKDIsIDkpO1xuICByZWFkb25seSB0aXRsZUlkID0gYHRvbGxlLW1vZGFsLXRpdGxlLSR7dGhpcy5fdWlkfWA7XG4gIHJlYWRvbmx5IGRlc2NJZCA9IGB0b2xsZS1tb2RhbC1kZXNjLSR7dGhpcy5fdWlkfWA7XG5cbiAgY29uc3RydWN0b3IocHVibGljIHJlZjogTW9kYWxSZWYpIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5jb250ZW50ID0gdGhpcy5yZWYubW9kYWwuY29udGVudDtcbiAgICB0aGlzLm1vZGFsQ2xhc3NlcyA9IHRoaXMuZ2V0TW9kYWxTaXplQ3NzKCk7XG4gICAgdGhpcy5kZXRlcm1pbmVDb250ZW50VHlwZSgpO1xuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGF1dG8tcmVuZGVyZWQgaGVhZGVyICh0aXRsZSBhbmQvb3IgY2xvc2UgYnV0dG9uKSBpcyBzaG93bi4gKi9cbiAgZ2V0IGhhc0hlYWRlcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISEodGhpcy5yZWYubW9kYWwuc2hvd0Nsb3NlQnV0dG9uIHx8IHRoaXMucmVmLm1vZGFsLnRpdGxlKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0TW9kYWxTaXplQ3NzKCk6IHN0cmluZyB7XG4gICAgY29uc3QgeyBzaXplIH0gPSB0aGlzLnJlZi5tb2RhbDtcblxuICAgIHJldHVybiBjbihcbiAgICAgIC8vIFN1cmZhY2U6IG92ZXJsYXkgY2FyZCB0aGF0IG5ldmVyIGV4Y2VlZHMgdGhlIHZpZXdwb3J0IChoZWFkZXIgc3RheXMsIGJvZHkgc2Nyb2xscykuXG4gICAgICAnYmctYmFja2dyb3VuZCB0ZXh0LWZvcmVncm91bmQgYm9yZGVyIGJvcmRlci1ib3JkZXIgc2hhZG93LWxnIHJlbGF0aXZlIGZsZXggZmxleC1jb2wgdy1mdWxsIG14LWF1dG8nLFxuXG4gICAgICBzaXplID09PSAnZnVsbHNjcmVlbicgPyAnaC1zY3JlZW4gdy1zY3JlZW4gcm91bmRlZC1ub25lJyA6ICdyb3VuZGVkLWxnIG1heC1oLVs4NXZoXScsXG5cbiAgICAgIC8vIFNpemluZyBzY2FsZSB3aXRoIGV4cGxpY2l0IG1heC13aWR0aHNcbiAgICAgIHNpemUgPT09ICd4cycgJiYgJ21heC13LVszMjBweF0nLFxuICAgICAgc2l6ZSA9PT0gJ3NtJyAmJiAnbWF4LXctWzQyNXB4XScsXG4gICAgICBzaXplID09PSAnZGVmYXVsdCcgJiYgJ21heC13LVs1MTJweF0nLFxuICAgICAgc2l6ZSA9PT0gJ2xnJyAmJiAnbWF4LXctWzEwMjRweF0nLFxuICAgICAgc2l6ZSA9PT0gJ3hsJyAmJiAnbWF4LXctWzEyODBweF0nXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZGV0ZXJtaW5lQ29udGVudFR5cGUoKSB7XG4gICAgaWYgKHR5cGVvZiB0aGlzLmNvbnRlbnQgPT09ICdzdHJpbmcnKSB0aGlzLmNvbnRlbnRUeXBlID0gJ3N0cmluZyc7XG4gICAgZWxzZSBpZiAodGhpcy5jb250ZW50IGluc3RhbmNlb2YgVGVtcGxhdGVSZWYpIHRoaXMuY29udGVudFR5cGUgPSAndGVtcGxhdGUnO1xuICAgIGVsc2UgdGhpcy5jb250ZW50VHlwZSA9ICdjb21wb25lbnQnO1xuICB9XG5cbiAgZ2V0IGFzVGVtcGxhdGUoKSB7IHJldHVybiB0aGlzLmNvbnRlbnQgYXMgVGVtcGxhdGVSZWY8YW55PjsgfVxuICBnZXQgYXNDb21wb25lbnQoKSB7IHJldHVybiB0aGlzLmNvbnRlbnQgYXMgVHlwZTxhbnk+OyB9XG4gIHByb3RlY3RlZCBjbiA9IGNuO1xufVxuIl19
@@ -16,6 +16,8 @@ export class ModalService {
16
16
  this.stack = stack;
17
17
  }
18
18
  open(config) {
19
+ // 0. Remember what was focused so we can restore it after the modal closes.
20
+ const previouslyFocused = document.activeElement;
19
21
  // 1. Create the Overlay (DOM placeholder)
20
22
  const overlayRef = this.createOverlay();
21
23
  // 2. Create the Controller (Ref)
@@ -25,6 +27,16 @@ export class ModalService {
25
27
  parent: this.injector,
26
28
  providers: [{ provide: ModalRef, useValue: modalRef }]
27
29
  });
30
+ // Escape-to-close: mirror the backdrop close path, but only for
31
+ // non-blocking modals (backdropClose !== false).
32
+ overlayRef.keydownEvents().subscribe((event) => {
33
+ if (event.key === 'Escape' && config.backdropClose !== false) {
34
+ event.preventDefault();
35
+ modalRef.close();
36
+ }
37
+ });
38
+ // Restore focus to the trigger once the overlay is torn down.
39
+ overlayRef.detachments().subscribe(() => previouslyFocused?.focus?.());
28
40
  // 4. Attach the UI Component to the Overlay
29
41
  const portal = new ComponentPortal(ModalComponent, null, injector);
30
42
  overlayRef.attach(portal);
@@ -62,4 +74,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
62
74
  type: Injectable,
63
75
  args: [{ providedIn: 'root' }]
64
76
  }], ctorParameters: () => [{ type: i1.Overlay }, { type: i0.Injector }, { type: i2.ModalStackService }] });
65
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3RvbGxlL3NyYy9saWIvbW9kYWwuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRCxPQUFPLEVBQVcsYUFBYSxFQUFjLE1BQU0sc0JBQXNCLENBQUM7QUFDMUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXRELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDdkMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDOzs7O0FBSW5ELE1BQU0sT0FBTyxZQUFZO0lBRWI7SUFDQTtJQUNBO0lBSFYsWUFDVSxPQUFnQixFQUNoQixRQUFrQixFQUNsQixLQUF3QjtRQUZ4QixZQUFPLEdBQVAsT0FBTyxDQUFTO1FBQ2hCLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDbEIsVUFBSyxHQUFMLEtBQUssQ0FBbUI7SUFDL0IsQ0FBQztJQUVKLElBQUksQ0FBVSxNQUFhO1FBQ3pCLDBDQUEwQztRQUMxQyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFFeEMsaUNBQWlDO1FBQ2pDLE1BQU0sUUFBUSxHQUFHLElBQUksUUFBUSxDQUFJLFVBQVUsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRWpFLDhEQUE4RDtRQUM5RCxNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDO1lBQy9CLE1BQU0sRUFBRSxJQUFJLENBQUMsUUFBUTtZQUNyQixTQUFTLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxDQUFDO1NBQ3ZELENBQUMsQ0FBQztRQUVILDRDQUE0QztRQUM1QyxNQUFNLE1BQU0sR0FBRyxJQUFJLGVBQWUsQ0FBQyxjQUFjLEVBQUUsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ25FLFVBQVUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFMUIsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztJQUVELHdDQUF3QztJQUN4QyxRQUFRO1FBQ04sSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRUQsbUJBQW1CO0lBQ1gsYUFBYTtRQUNuQixNQUFNLE1BQU0sR0FBRyxJQUFJLGFBQWEsQ0FBQztZQUMvQixXQUFXLEVBQUUsSUFBSTtZQUNqQixhQUFhLEVBQUUsQ0FBQyxzQkFBc0IsRUFBRSxhQUFhLEVBQUUsa0JBQWtCLENBQUM7WUFDMUUsVUFBVSxFQUFFO2dCQUNWLFFBQVE7Z0JBQ1IsUUFBUTtnQkFDUixNQUFNO2dCQUNOLGNBQWM7Z0JBQ2QsZ0JBQWdCO2dCQUNoQixxQkFBcUI7YUFDdEI7WUFDRCxjQUFjLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUU7WUFDckQsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUU7aUJBQ3RDLE1BQU0sRUFBRTtpQkFDUixrQkFBa0IsRUFBRTtpQkFDcEIsZ0JBQWdCLEVBQUU7U0FDdEIsQ0FBQyxDQUFDO1FBRUgsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNyQyxDQUFDO3dHQXJEVSxZQUFZOzRHQUFaLFlBQVksY0FEQyxNQUFNOzs0RkFDbkIsWUFBWTtrQkFEeEIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT3ZlcmxheSwgT3ZlcmxheUNvbmZpZywgT3ZlcmxheVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IENvbXBvbmVudFBvcnRhbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHsgTW9kYWwgfSBmcm9tICcuL21vZGFsJztcbmltcG9ydCB7IE1vZGFsUmVmIH0gZnJvbSAnLi9tb2RhbC1yZWYnO1xuaW1wb3J0IHsgTW9kYWxDb21wb25lbnQgfSBmcm9tICcuL21vZGFsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBNb2RhbFN0YWNrU2VydmljZSB9IGZyb20gJy4vbW9kYWwtc3RhY2suc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgTW9kYWxTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBvdmVybGF5OiBPdmVybGF5LFxuICAgIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIHByaXZhdGUgc3RhY2s6IE1vZGFsU3RhY2tTZXJ2aWNlXG4gICkge31cblxuICBvcGVuPFIgPSBhbnk+KGNvbmZpZzogTW9kYWwpOiBNb2RhbFJlZjxSPiB7XG4gICAgLy8gMS4gQ3JlYXRlIHRoZSBPdmVybGF5IChET00gcGxhY2Vob2xkZXIpXG4gICAgY29uc3Qgb3ZlcmxheVJlZiA9IHRoaXMuY3JlYXRlT3ZlcmxheSgpO1xuXG4gICAgLy8gMi4gQ3JlYXRlIHRoZSBDb250cm9sbGVyIChSZWYpXG4gICAgY29uc3QgbW9kYWxSZWYgPSBuZXcgTW9kYWxSZWY8Uj4ob3ZlcmxheVJlZiwgY29uZmlnLCB0aGlzLnN0YWNrKTtcblxuICAgIC8vIDMuIENyZWF0ZSBJbmplY3RvciB0byBhbGxvdyB0aGUgQ29tcG9uZW50IHRvIGFjY2VzcyB0aGUgUmVmXG4gICAgY29uc3QgaW5qZWN0b3IgPSBJbmplY3Rvci5jcmVhdGUoe1xuICAgICAgcGFyZW50OiB0aGlzLmluamVjdG9yLFxuICAgICAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBNb2RhbFJlZiwgdXNlVmFsdWU6IG1vZGFsUmVmIH1dXG4gICAgfSk7XG5cbiAgICAvLyA0LiBBdHRhY2ggdGhlIFVJIENvbXBvbmVudCB0byB0aGUgT3ZlcmxheVxuICAgIGNvbnN0IHBvcnRhbCA9IG5ldyBDb21wb25lbnRQb3J0YWwoTW9kYWxDb21wb25lbnQsIG51bGwsIGluamVjdG9yKTtcbiAgICBvdmVybGF5UmVmLmF0dGFjaChwb3J0YWwpO1xuXG4gICAgcmV0dXJuIG1vZGFsUmVmO1xuICB9XG5cbiAgLyoqIEdsb2JhbCBoZWxwZXIgdG8gY2xvc2UgZXZlcnl0aGluZyAqL1xuICBjbG9zZUFsbCgpIHtcbiAgICB0aGlzLnN0YWNrLmNsb3NlQWxsKCk7XG4gIH1cblxuICAvLyBtb2RhbC5zZXJ2aWNlLnRzXG4gIHByaXZhdGUgY3JlYXRlT3ZlcmxheSgpOiBPdmVybGF5UmVmIHtcbiAgICBjb25zdCBjb25maWcgPSBuZXcgT3ZlcmxheUNvbmZpZyh7XG4gICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcbiAgICAgIGJhY2tkcm9wQ2xhc3M6IFsnY2RrLW92ZXJsYXktYmFja2Ryb3AnLCAnYmctYmxhY2svODAnLCAnYmFja2Ryb3AtYmx1ci1zbSddLFxuICAgICAgcGFuZWxDbGFzczogW1xuICAgICAgICAndy1mdWxsJyxcbiAgICAgICAgJ2gtZnVsbCcsXG4gICAgICAgICdmbGV4JyxcbiAgICAgICAgJ2l0ZW1zLWNlbnRlcicsXG4gICAgICAgICdqdXN0aWZ5LWNlbnRlcicsXG4gICAgICAgICdwb2ludGVyLWV2ZW50cy1ub25lJ1xuICAgICAgXSxcbiAgICAgIHNjcm9sbFN0cmF0ZWd5OiB0aGlzLm92ZXJsYXkuc2Nyb2xsU3RyYXRlZ2llcy5ibG9jaygpLFxuICAgICAgcG9zaXRpb25TdHJhdGVneTogdGhpcy5vdmVybGF5LnBvc2l0aW9uKClcbiAgICAgICAgLmdsb2JhbCgpXG4gICAgICAgIC5jZW50ZXJIb3Jpem9udGFsbHkoKVxuICAgICAgICAuY2VudGVyVmVydGljYWxseSgpXG4gICAgfSk7XG5cbiAgICByZXR1cm4gdGhpcy5vdmVybGF5LmNyZWF0ZShjb25maWcpO1xuICB9XG5cblxufVxuIl19
77
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3RvbGxlL3NyYy9saWIvbW9kYWwuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRCxPQUFPLEVBQVcsYUFBYSxFQUFjLE1BQU0sc0JBQXNCLENBQUM7QUFDMUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXRELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDdkMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDOzs7O0FBSW5ELE1BQU0sT0FBTyxZQUFZO0lBRWI7SUFDQTtJQUNBO0lBSFYsWUFDVSxPQUFnQixFQUNoQixRQUFrQixFQUNsQixLQUF3QjtRQUZ4QixZQUFPLEdBQVAsT0FBTyxDQUFTO1FBQ2hCLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDbEIsVUFBSyxHQUFMLEtBQUssQ0FBbUI7SUFDL0IsQ0FBQztJQUVKLElBQUksQ0FBVSxNQUFhO1FBQ3pCLDRFQUE0RTtRQUM1RSxNQUFNLGlCQUFpQixHQUFHLFFBQVEsQ0FBQyxhQUFtQyxDQUFDO1FBRXZFLDBDQUEwQztRQUMxQyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFFeEMsaUNBQWlDO1FBQ2pDLE1BQU0sUUFBUSxHQUFHLElBQUksUUFBUSxDQUFJLFVBQVUsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRWpFLDhEQUE4RDtRQUM5RCxNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDO1lBQy9CLE1BQU0sRUFBRSxJQUFJLENBQUMsUUFBUTtZQUNyQixTQUFTLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxDQUFDO1NBQ3ZELENBQUMsQ0FBQztRQUVILGdFQUFnRTtRQUNoRSxpREFBaUQ7UUFDakQsVUFBVSxDQUFDLGFBQWEsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQW9CLEVBQUUsRUFBRTtZQUM1RCxJQUFJLEtBQUssQ0FBQyxHQUFHLEtBQUssUUFBUSxJQUFJLE1BQU0sQ0FBQyxhQUFhLEtBQUssS0FBSyxFQUFFLENBQUM7Z0JBQzdELEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQkFDdkIsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ25CLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILDhEQUE4RDtRQUM5RCxVQUFVLENBQUMsV0FBVyxFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLGlCQUFpQixFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUV2RSw0Q0FBNEM7UUFDNUMsTUFBTSxNQUFNLEdBQUcsSUFBSSxlQUFlLENBQUMsY0FBYyxFQUFFLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztRQUNuRSxVQUFVLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRTFCLE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFFRCx3Q0FBd0M7SUFDeEMsUUFBUTtRQUNOLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVELG1CQUFtQjtJQUNYLGFBQWE7UUFDbkIsTUFBTSxNQUFNLEdBQUcsSUFBSSxhQUFhLENBQUM7WUFDL0IsV0FBVyxFQUFFLElBQUk7WUFDakIsYUFBYSxFQUFFLENBQUMsc0JBQXNCLEVBQUUsYUFBYSxFQUFFLGtCQUFrQixDQUFDO1lBQzFFLFVBQVUsRUFBRTtnQkFDVixRQUFRO2dCQUNSLFFBQVE7Z0JBQ1IsTUFBTTtnQkFDTixjQUFjO2dCQUNkLGdCQUFnQjtnQkFDaEIscUJBQXFCO2FBQ3RCO1lBQ0QsY0FBYyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxFQUFFO1lBQ3JELGdCQUFnQixFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFO2lCQUN0QyxNQUFNLEVBQUU7aUJBQ1Isa0JBQWtCLEVBQUU7aUJBQ3BCLGdCQUFnQixFQUFFO1NBQ3RCLENBQUMsQ0FBQztRQUVILE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDckMsQ0FBQzt3R0FwRVUsWUFBWTs0R0FBWixZQUFZLGNBREMsTUFBTTs7NEZBQ25CLFlBQVk7a0JBRHhCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE92ZXJsYXksIE92ZXJsYXlDb25maWcsIE92ZXJsYXlSZWYgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBDb21wb25lbnRQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7IE1vZGFsIH0gZnJvbSAnLi9tb2RhbCc7XG5pbXBvcnQgeyBNb2RhbFJlZiB9IGZyb20gJy4vbW9kYWwtcmVmJztcbmltcG9ydCB7IE1vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi9tb2RhbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgTW9kYWxTdGFja1NlcnZpY2UgfSBmcm9tICcuL21vZGFsLXN0YWNrLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIE1vZGFsU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgb3ZlcmxheTogT3ZlcmxheSxcbiAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBwcml2YXRlIHN0YWNrOiBNb2RhbFN0YWNrU2VydmljZVxuICApIHt9XG5cbiAgb3BlbjxSID0gYW55Pihjb25maWc6IE1vZGFsKTogTW9kYWxSZWY8Uj4ge1xuICAgIC8vIDAuIFJlbWVtYmVyIHdoYXQgd2FzIGZvY3VzZWQgc28gd2UgY2FuIHJlc3RvcmUgaXQgYWZ0ZXIgdGhlIG1vZGFsIGNsb3Nlcy5cbiAgICBjb25zdCBwcmV2aW91c2x5Rm9jdXNlZCA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQgfCBudWxsO1xuXG4gICAgLy8gMS4gQ3JlYXRlIHRoZSBPdmVybGF5IChET00gcGxhY2Vob2xkZXIpXG4gICAgY29uc3Qgb3ZlcmxheVJlZiA9IHRoaXMuY3JlYXRlT3ZlcmxheSgpO1xuXG4gICAgLy8gMi4gQ3JlYXRlIHRoZSBDb250cm9sbGVyIChSZWYpXG4gICAgY29uc3QgbW9kYWxSZWYgPSBuZXcgTW9kYWxSZWY8Uj4ob3ZlcmxheVJlZiwgY29uZmlnLCB0aGlzLnN0YWNrKTtcblxuICAgIC8vIDMuIENyZWF0ZSBJbmplY3RvciB0byBhbGxvdyB0aGUgQ29tcG9uZW50IHRvIGFjY2VzcyB0aGUgUmVmXG4gICAgY29uc3QgaW5qZWN0b3IgPSBJbmplY3Rvci5jcmVhdGUoe1xuICAgICAgcGFyZW50OiB0aGlzLmluamVjdG9yLFxuICAgICAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBNb2RhbFJlZiwgdXNlVmFsdWU6IG1vZGFsUmVmIH1dXG4gICAgfSk7XG5cbiAgICAvLyBFc2NhcGUtdG8tY2xvc2U6IG1pcnJvciB0aGUgYmFja2Ryb3AgY2xvc2UgcGF0aCwgYnV0IG9ubHkgZm9yXG4gICAgLy8gbm9uLWJsb2NraW5nIG1vZGFscyAoYmFja2Ryb3BDbG9zZSAhPT0gZmFsc2UpLlxuICAgIG92ZXJsYXlSZWYua2V5ZG93bkV2ZW50cygpLnN1YnNjcmliZSgoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgIGlmIChldmVudC5rZXkgPT09ICdFc2NhcGUnICYmIGNvbmZpZy5iYWNrZHJvcENsb3NlICE9PSBmYWxzZSkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBtb2RhbFJlZi5jbG9zZSgpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gUmVzdG9yZSBmb2N1cyB0byB0aGUgdHJpZ2dlciBvbmNlIHRoZSBvdmVybGF5IGlzIHRvcm4gZG93bi5cbiAgICBvdmVybGF5UmVmLmRldGFjaG1lbnRzKCkuc3Vic2NyaWJlKCgpID0+IHByZXZpb3VzbHlGb2N1c2VkPy5mb2N1cz8uKCkpO1xuXG4gICAgLy8gNC4gQXR0YWNoIHRoZSBVSSBDb21wb25lbnQgdG8gdGhlIE92ZXJsYXlcbiAgICBjb25zdCBwb3J0YWwgPSBuZXcgQ29tcG9uZW50UG9ydGFsKE1vZGFsQ29tcG9uZW50LCBudWxsLCBpbmplY3Rvcik7XG4gICAgb3ZlcmxheVJlZi5hdHRhY2gocG9ydGFsKTtcblxuICAgIHJldHVybiBtb2RhbFJlZjtcbiAgfVxuXG4gIC8qKiBHbG9iYWwgaGVscGVyIHRvIGNsb3NlIGV2ZXJ5dGhpbmcgKi9cbiAgY2xvc2VBbGwoKSB7XG4gICAgdGhpcy5zdGFjay5jbG9zZUFsbCgpO1xuICB9XG5cbiAgLy8gbW9kYWwuc2VydmljZS50c1xuICBwcml2YXRlIGNyZWF0ZU92ZXJsYXkoKTogT3ZlcmxheVJlZiB7XG4gICAgY29uc3QgY29uZmlnID0gbmV3IE92ZXJsYXlDb25maWcoe1xuICAgICAgaGFzQmFja2Ryb3A6IHRydWUsXG4gICAgICBiYWNrZHJvcENsYXNzOiBbJ2Nkay1vdmVybGF5LWJhY2tkcm9wJywgJ2JnLWJsYWNrLzgwJywgJ2JhY2tkcm9wLWJsdXItc20nXSxcbiAgICAgIHBhbmVsQ2xhc3M6IFtcbiAgICAgICAgJ3ctZnVsbCcsXG4gICAgICAgICdoLWZ1bGwnLFxuICAgICAgICAnZmxleCcsXG4gICAgICAgICdpdGVtcy1jZW50ZXInLFxuICAgICAgICAnanVzdGlmeS1jZW50ZXInLFxuICAgICAgICAncG9pbnRlci1ldmVudHMtbm9uZSdcbiAgICAgIF0sXG4gICAgICBzY3JvbGxTdHJhdGVneTogdGhpcy5vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMuYmxvY2soKSxcbiAgICAgIHBvc2l0aW9uU3RyYXRlZ3k6IHRoaXMub3ZlcmxheS5wb3NpdGlvbigpXG4gICAgICAgIC5nbG9iYWwoKVxuICAgICAgICAuY2VudGVySG9yaXpvbnRhbGx5KClcbiAgICAgICAgLmNlbnRlclZlcnRpY2FsbHkoKVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRoaXMub3ZlcmxheS5jcmVhdGUoY29uZmlnKTtcbiAgfVxuXG5cbn1cbiJdfQ==