@seniorsistemas/angular-components 19.3.0 → 19.3.2

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 (254) hide show
  1. package/breadcrumb/lib/dynamic-breadcrumb/dynamic-breadcrumb.component.d.ts +1 -2
  2. package/calendar-mask/lib/calendar-mask/calendar-mask.directive.d.ts +0 -1
  3. package/chips/lib/chips/chips/chips.component.d.ts +1 -2
  4. package/code-editor/lib/code-editor/code-editor.component.d.ts +0 -2
  5. package/code-editor/lib/code-editor/infra/utils/custom-translations/custom-translations.module.d.ts +1 -3
  6. package/common/lib/svg-factory/svg-factory.directive.d.ts +1 -2
  7. package/content-generator/lib/content-generator/content-generator.component.d.ts +1 -6
  8. package/content-generator/lib/services/IAssist/iassist.service.d.ts +0 -3
  9. package/country-phone-picker/lib/country-phone-picker/country-phone-picker.component.d.ts +0 -3
  10. package/country-phone-picker/lib/country-phone-picker/country-phone-picker.service.d.ts +0 -2
  11. package/currency/lib/currency.service.d.ts +0 -2
  12. package/custom-fields/lib/custom-fields/custom-fields.component.d.ts +3 -7
  13. package/custom-fields/lib/custom-fields/custom-fields.service.d.ts +0 -2
  14. package/dynamic-form/dynamic-form/components/lookup/lookup.component.d.ts +0 -2
  15. package/dynamic-form/dynamic-form/form-field/fields/autocomplete/autocomplete-field.component.d.ts +1 -2
  16. package/dynamic-form/dynamic-form/form-field/fields/bignumber/bignumber-field.component.d.ts +1 -3
  17. package/dynamic-form/dynamic-form/form-field/fields/calendar/calendar-field.component.d.ts +1 -2
  18. package/dynamic-form/dynamic-form/form-field/fields/chips/chips-field.component.d.ts +1 -3
  19. package/dynamic-form/dynamic-form/form-field/fields/country-phone-picker/country-phone-picker-field.component.d.ts +1 -2
  20. package/dynamic-form/dynamic-form/form-field/fields/currency/currency-field.component.d.ts +1 -3
  21. package/dynamic-form/dynamic-form/form-field/fields/file-picker/file-picker-field.component.d.ts +1 -2
  22. package/dynamic-form/dynamic-form/form-field/fields/number/number-field.component.d.ts +1 -3
  23. package/dynamic-form/dynamic-form/form-field/fields/password/password-field.component.d.ts +1 -2
  24. package/dynamic-form/dynamic-form/form-field/fields/text/text-field.component.d.ts +1 -2
  25. package/dynamic-form/dynamic-form/form-field/fields/text-area/text-area-field.component.d.ts +1 -2
  26. package/empty-state/lib/empty-state/go-back/go-back.component.d.ts +0 -2
  27. package/esm2022/badge/lib/badge/badge.component.mjs +3 -3
  28. package/esm2022/breadcrumb/lib/dynamic-breadcrumb/dynamic-breadcrumb.component.mjs +10 -13
  29. package/esm2022/calendar-mask/lib/calendar-mask/calendar-mask.directive.mjs +7 -11
  30. package/esm2022/chips/lib/chips/chips/chips.component.mjs +5 -8
  31. package/esm2022/code-editor/lib/code-editor/code-editor.component.mjs +6 -9
  32. package/esm2022/code-editor/lib/code-editor/infra/utils/custom-translations/custom-translations.module.mjs +8 -13
  33. package/esm2022/common/lib/svg-factory/svg-factory.directive.mjs +6 -10
  34. package/esm2022/content-generator/lib/content-generator/content-generator.component.mjs +24 -30
  35. package/esm2022/content-generator/lib/services/IAssist/iassist.service.mjs +9 -12
  36. package/esm2022/country-phone-picker/lib/country-phone-picker/country-phone-picker.component.mjs +15 -23
  37. package/esm2022/country-phone-picker/lib/country-phone-picker/country-phone-picker.service.mjs +6 -9
  38. package/esm2022/currency/lib/currency.service.mjs +6 -9
  39. package/esm2022/custom-fields/lib/custom-fields/custom-fields.component.mjs +17 -25
  40. package/esm2022/custom-fields/lib/custom-fields/custom-fields.service.mjs +6 -9
  41. package/esm2022/dynamic-form/dynamic-form/components/lookup/lookup.component.mjs +22 -28
  42. package/esm2022/dynamic-form/dynamic-form/form-field/fields/autocomplete/autocomplete-field.component.mjs +6 -10
  43. package/esm2022/dynamic-form/dynamic-form/form-field/fields/bignumber/bignumber-field.component.mjs +12 -17
  44. package/esm2022/dynamic-form/dynamic-form/form-field/fields/calendar/calendar-field.component.mjs +5 -8
  45. package/esm2022/dynamic-form/dynamic-form/form-field/fields/chips/chips-field.component.mjs +12 -17
  46. package/esm2022/dynamic-form/dynamic-form/form-field/fields/country-phone-picker/country-phone-picker-field.component.mjs +5 -8
  47. package/esm2022/dynamic-form/dynamic-form/form-field/fields/currency/currency-field.component.mjs +13 -19
  48. package/esm2022/dynamic-form/dynamic-form/form-field/fields/file-picker/file-picker-field.component.mjs +6 -10
  49. package/esm2022/dynamic-form/dynamic-form/form-field/fields/number/number-field.component.mjs +14 -19
  50. package/esm2022/dynamic-form/dynamic-form/form-field/fields/password/password-field.component.mjs +5 -8
  51. package/esm2022/dynamic-form/dynamic-form/form-field/fields/text/text-field.component.mjs +5 -8
  52. package/esm2022/dynamic-form/dynamic-form/form-field/fields/text-area/text-area-field.component.mjs +5 -8
  53. package/esm2022/empty-state/lib/empty-state/go-back/go-back.component.mjs +8 -11
  54. package/esm2022/file-picker/lib/file-picker/file-picker.component.mjs +17 -21
  55. package/esm2022/gantt/lib/gantt/components/gantt/gantt.mjs +6 -2
  56. package/esm2022/gantt/lib/gantt/gantt.component.mjs +8 -4
  57. package/esm2022/global-search/lib/global-search/global-search.component.mjs +5 -8
  58. package/esm2022/image-cropper/lib/image-cropper/image-cropper.service.mjs +7 -12
  59. package/esm2022/infinite-scroll/lib/infinite-scroll/infinite-scroll.directive.mjs +5 -8
  60. package/esm2022/info-sign/lib/info-sign/info-sign.directive.mjs +6 -10
  61. package/esm2022/inline-edit/lib/inline-edit/components/fields/inline-edit-calendar/inline-edit-calendar.component.mjs +9 -12
  62. package/esm2022/inline-edit/lib/inline-edit/components/fields/inline-edit-number/inline-edit-number.component.mjs +14 -17
  63. package/esm2022/inline-edit/lib/inline-edit/components/inline-edit-item/inline-edit-item.component.mjs +12 -15
  64. package/esm2022/insights/lib/insights/components/insights-card/insights-card.component.mjs +15 -19
  65. package/esm2022/interactive-content/lib/interactive-content/interactive-content.directive.mjs +5 -8
  66. package/esm2022/kanban/lib/kanban/components/kanban-column/kanban-column.component.mjs +10 -13
  67. package/esm2022/kanban/lib/kanban/components/kanban-item/kanban-item.component.mjs +10 -13
  68. package/esm2022/kanban/lib/kanban/kanban.component.mjs +23 -17
  69. package/esm2022/loading-state/lib/loading-state/loading-state.directive.mjs +10 -16
  70. package/esm2022/locale/lib/locale/locale.service.mjs +8 -12
  71. package/esm2022/locale/lib/locale/pipes/localized-bignumber.pipe.mjs +6 -9
  72. package/esm2022/locale/lib/locale/pipes/localized-currency.pipe.mjs +6 -9
  73. package/esm2022/locale/lib/locale/pipes/localized-date.pipe.mjs +6 -9
  74. package/esm2022/locale/lib/locale/pipes/localized-number.pipe.mjs +6 -9
  75. package/esm2022/locale/lib/locale/pipes/localized-time.pipe.mjs +6 -9
  76. package/esm2022/localized-number-input/lib/localized-number-input/localized-number-input.directive.mjs +6 -9
  77. package/esm2022/navigation-button/lib/navigation-button/navigation-button.component.mjs +5 -8
  78. package/esm2022/numeric/lib/numeric.pipe.mjs +8 -12
  79. package/esm2022/numeric/lib/numeric.service.mjs +6 -9
  80. package/esm2022/password-strength/lib/password-strength/password-strength.component.mjs +8 -11
  81. package/esm2022/password-strength/lib/password-strength/password-strength.directive.mjs +10 -16
  82. package/esm2022/picklist/lib/picklist/picklist.component.mjs +5 -8
  83. package/esm2022/profile-picture-picker/lib/profile-picture-picker/profile-picture-picker.component.mjs +15 -19
  84. package/esm2022/progressbar/lib/progressbar/components/progressbar-determinate/progressbar-determinate.component.mjs +8 -11
  85. package/esm2022/progressbar/lib/progressbar/progressbar.module.mjs +5 -4
  86. package/esm2022/select-button/lib/select-button/select-button.component.mjs +3 -3
  87. package/esm2022/shared/lib/accessibility/paginator-accessibility.directive.mjs +8 -13
  88. package/esm2022/shared/lib/accessibility/table-checkbox-accessibility.directive.mjs +5 -8
  89. package/esm2022/slide-in-bar/lib/slide-in-bar/slide-in-bar.component.mjs +9 -12
  90. package/esm2022/speech-recognition/lib/speech-recognition/speech-recognition/speech-recognition.component.mjs +12 -16
  91. package/esm2022/speech-recognition/lib/speech-recognition/speech-recognition.service.mjs +12 -16
  92. package/esm2022/speech-recognition/lib/speech-recognition/text-to-speech.service.mjs +8 -10
  93. package/esm2022/split-button/lib/split-button/split-button.component.mjs +5 -8
  94. package/esm2022/table/lib/table/row-toggler/row-toggler.directive.mjs +7 -7
  95. package/esm2022/table/lib/table/table-column/table-columns.component.mjs +20 -29
  96. package/esm2022/table/lib/table/table-paging/table-paging.component.mjs +9 -16
  97. package/esm2022/table-header/lib/table-header/table-header-checkbox.component.mjs +11 -13
  98. package/esm2022/text-area/lib/text-area/text-area.component.mjs +5 -8
  99. package/esm2022/thumbnail/lib/thumbnail/thumbnail.component.mjs +8 -11
  100. package/esm2022/tiered-menu/lib/tiered-menu/components/tiered-menu/tiered-menu.component.mjs +16 -24
  101. package/esm2022/tiered-menu/lib/tiered-menu/components/tiered-menu-item/tiered-menu-item.component.mjs +8 -11
  102. package/esm2022/tiered-menu/lib/tiered-menu/components/tiered-menu-nested/tiered-menu-nested.component.mjs +12 -16
  103. package/esm2022/tiered-menu/lib/tiered-menu/tiered-menu.directive.mjs +13 -25
  104. package/esm2022/toast/lib/toast/toast.service.mjs +7 -12
  105. package/esm2022/tree/lib/tree/components/tree-node-item/tree-node-item.component.mjs +10 -14
  106. package/esm2022/workspace-switch/lib/workspace-switch/workspace-switch.component.mjs +6 -10
  107. package/fesm2022/seniorsistemas-angular-components-badge.mjs +2 -2
  108. package/fesm2022/seniorsistemas-angular-components-badge.mjs.map +1 -1
  109. package/fesm2022/seniorsistemas-angular-components-breadcrumb.mjs +10 -12
  110. package/fesm2022/seniorsistemas-angular-components-breadcrumb.mjs.map +1 -1
  111. package/fesm2022/seniorsistemas-angular-components-calendar-mask.mjs +6 -10
  112. package/fesm2022/seniorsistemas-angular-components-calendar-mask.mjs.map +1 -1
  113. package/fesm2022/seniorsistemas-angular-components-chips.mjs +4 -7
  114. package/fesm2022/seniorsistemas-angular-components-chips.mjs.map +1 -1
  115. package/fesm2022/seniorsistemas-angular-components-code-editor.mjs +10 -18
  116. package/fesm2022/seniorsistemas-angular-components-code-editor.mjs.map +1 -1
  117. package/fesm2022/seniorsistemas-angular-components-common.mjs +5 -9
  118. package/fesm2022/seniorsistemas-angular-components-common.mjs.map +1 -1
  119. package/fesm2022/seniorsistemas-angular-components-content-generator.mjs +29 -40
  120. package/fesm2022/seniorsistemas-angular-components-content-generator.mjs.map +1 -1
  121. package/fesm2022/seniorsistemas-angular-components-country-phone-picker.mjs +16 -28
  122. package/fesm2022/seniorsistemas-angular-components-country-phone-picker.mjs.map +1 -1
  123. package/fesm2022/seniorsistemas-angular-components-currency.mjs +5 -8
  124. package/fesm2022/seniorsistemas-angular-components-currency.mjs.map +1 -1
  125. package/fesm2022/seniorsistemas-angular-components-custom-fields.mjs +45 -59
  126. package/fesm2022/seniorsistemas-angular-components-custom-fields.mjs.map +1 -1
  127. package/fesm2022/seniorsistemas-angular-components-dynamic-form.mjs +108 -157
  128. package/fesm2022/seniorsistemas-angular-components-dynamic-form.mjs.map +1 -1
  129. package/fesm2022/seniorsistemas-angular-components-empty-state.mjs +4 -8
  130. package/fesm2022/seniorsistemas-angular-components-empty-state.mjs.map +1 -1
  131. package/fesm2022/seniorsistemas-angular-components-file-picker.mjs +17 -22
  132. package/fesm2022/seniorsistemas-angular-components-file-picker.mjs.map +1 -1
  133. package/fesm2022/seniorsistemas-angular-components-gantt.mjs +12 -4
  134. package/fesm2022/seniorsistemas-angular-components-gantt.mjs.map +1 -1
  135. package/fesm2022/seniorsistemas-angular-components-global-search.mjs +4 -7
  136. package/fesm2022/seniorsistemas-angular-components-global-search.mjs.map +1 -1
  137. package/fesm2022/seniorsistemas-angular-components-image-cropper.mjs +6 -11
  138. package/fesm2022/seniorsistemas-angular-components-image-cropper.mjs.map +1 -1
  139. package/fesm2022/seniorsistemas-angular-components-infinite-scroll.mjs +4 -7
  140. package/fesm2022/seniorsistemas-angular-components-infinite-scroll.mjs.map +1 -1
  141. package/fesm2022/seniorsistemas-angular-components-info-sign.mjs +5 -9
  142. package/fesm2022/seniorsistemas-angular-components-info-sign.mjs.map +1 -1
  143. package/fesm2022/seniorsistemas-angular-components-inline-edit.mjs +29 -38
  144. package/fesm2022/seniorsistemas-angular-components-inline-edit.mjs.map +1 -1
  145. package/fesm2022/seniorsistemas-angular-components-insights.mjs +17 -22
  146. package/fesm2022/seniorsistemas-angular-components-insights.mjs.map +1 -1
  147. package/fesm2022/seniorsistemas-angular-components-interactive-content.mjs +4 -7
  148. package/fesm2022/seniorsistemas-angular-components-interactive-content.mjs.map +1 -1
  149. package/fesm2022/seniorsistemas-angular-components-kanban.mjs +30 -30
  150. package/fesm2022/seniorsistemas-angular-components-kanban.mjs.map +1 -1
  151. package/fesm2022/seniorsistemas-angular-components-loading-state.mjs +7 -15
  152. package/fesm2022/seniorsistemas-angular-components-loading-state.mjs.map +1 -1
  153. package/fesm2022/seniorsistemas-angular-components-locale.mjs +22 -41
  154. package/fesm2022/seniorsistemas-angular-components-locale.mjs.map +1 -1
  155. package/fesm2022/seniorsistemas-angular-components-localized-number-input.mjs +5 -8
  156. package/fesm2022/seniorsistemas-angular-components-localized-number-input.mjs.map +1 -1
  157. package/fesm2022/seniorsistemas-angular-components-navigation-button.mjs +4 -7
  158. package/fesm2022/seniorsistemas-angular-components-navigation-button.mjs.map +1 -1
  159. package/fesm2022/seniorsistemas-angular-components-numeric.mjs +9 -16
  160. package/fesm2022/seniorsistemas-angular-components-numeric.mjs.map +1 -1
  161. package/fesm2022/seniorsistemas-angular-components-password-strength.mjs +13 -24
  162. package/fesm2022/seniorsistemas-angular-components-password-strength.mjs.map +1 -1
  163. package/fesm2022/seniorsistemas-angular-components-picklist.mjs +4 -7
  164. package/fesm2022/seniorsistemas-angular-components-picklist.mjs.map +1 -1
  165. package/fesm2022/seniorsistemas-angular-components-profile-picture-picker.mjs +14 -21
  166. package/fesm2022/seniorsistemas-angular-components-profile-picture-picker.mjs.map +1 -1
  167. package/fesm2022/seniorsistemas-angular-components-progressbar.mjs +11 -14
  168. package/fesm2022/seniorsistemas-angular-components-progressbar.mjs.map +1 -1
  169. package/fesm2022/seniorsistemas-angular-components-select-button.mjs +2 -2
  170. package/fesm2022/seniorsistemas-angular-components-select-button.mjs.map +1 -1
  171. package/fesm2022/seniorsistemas-angular-components-shared.mjs +10 -18
  172. package/fesm2022/seniorsistemas-angular-components-shared.mjs.map +1 -1
  173. package/fesm2022/seniorsistemas-angular-components-slide-in-bar.mjs +7 -10
  174. package/fesm2022/seniorsistemas-angular-components-slide-in-bar.mjs.map +1 -1
  175. package/fesm2022/seniorsistemas-angular-components-speech-recognition.mjs +23 -34
  176. package/fesm2022/seniorsistemas-angular-components-speech-recognition.mjs.map +1 -1
  177. package/fesm2022/seniorsistemas-angular-components-split-button.mjs +4 -7
  178. package/fesm2022/seniorsistemas-angular-components-split-button.mjs.map +1 -1
  179. package/fesm2022/seniorsistemas-angular-components-table-header.mjs +10 -12
  180. package/fesm2022/seniorsistemas-angular-components-table-header.mjs.map +1 -1
  181. package/fesm2022/seniorsistemas-angular-components-table.mjs +30 -47
  182. package/fesm2022/seniorsistemas-angular-components-table.mjs.map +1 -1
  183. package/fesm2022/seniorsistemas-angular-components-text-area.mjs +4 -7
  184. package/fesm2022/seniorsistemas-angular-components-text-area.mjs.map +1 -1
  185. package/fesm2022/seniorsistemas-angular-components-thumbnail.mjs +6 -9
  186. package/fesm2022/seniorsistemas-angular-components-thumbnail.mjs.map +1 -1
  187. package/fesm2022/seniorsistemas-angular-components-tiered-menu.mjs +30 -55
  188. package/fesm2022/seniorsistemas-angular-components-tiered-menu.mjs.map +1 -1
  189. package/fesm2022/seniorsistemas-angular-components-toast.mjs +6 -11
  190. package/fesm2022/seniorsistemas-angular-components-toast.mjs.map +1 -1
  191. package/fesm2022/seniorsistemas-angular-components-tree.mjs +9 -14
  192. package/fesm2022/seniorsistemas-angular-components-tree.mjs.map +1 -1
  193. package/fesm2022/seniorsistemas-angular-components-workspace-switch.mjs +5 -9
  194. package/fesm2022/seniorsistemas-angular-components-workspace-switch.mjs.map +1 -1
  195. package/file-picker/lib/file-picker/file-picker.component.d.ts +0 -4
  196. package/file-upload/README.md +9 -37
  197. package/gantt/lib/gantt/gantt.component.d.ts +1 -0
  198. package/global-search/lib/global-search/global-search.component.d.ts +1 -2
  199. package/ia-insight/README.md +17 -0
  200. package/image-cropper/lib/image-cropper/image-cropper.service.d.ts +1 -2
  201. package/infinite-scroll/lib/infinite-scroll/infinite-scroll.directive.d.ts +1 -2
  202. package/info-sign/lib/info-sign/info-sign.directive.d.ts +1 -2
  203. package/inline-edit/lib/inline-edit/components/fields/inline-edit-calendar/inline-edit-calendar.component.d.ts +1 -2
  204. package/inline-edit/lib/inline-edit/components/fields/inline-edit-number/inline-edit-number.component.d.ts +0 -2
  205. package/inline-edit/lib/inline-edit/components/inline-edit-item/inline-edit-item.component.d.ts +0 -2
  206. package/insights/lib/insights/components/insights-card/insights-card.component.d.ts +0 -4
  207. package/interactive-content/lib/interactive-content/interactive-content.directive.d.ts +1 -2
  208. package/kanban/lib/kanban/components/kanban-column/kanban-column.component.d.ts +0 -2
  209. package/kanban/lib/kanban/components/kanban-item/kanban-item.component.d.ts +0 -2
  210. package/kanban/lib/kanban/kanban.component.d.ts +2 -2
  211. package/loading-state/lib/loading-state/loading-state.directive.d.ts +1 -2
  212. package/locale/lib/locale/locale.service.d.ts +0 -3
  213. package/locale/lib/locale/pipes/localized-bignumber.pipe.d.ts +0 -2
  214. package/locale/lib/locale/pipes/localized-currency.pipe.d.ts +0 -2
  215. package/locale/lib/locale/pipes/localized-date.pipe.d.ts +0 -2
  216. package/locale/lib/locale/pipes/localized-number.pipe.d.ts +0 -2
  217. package/locale/lib/locale/pipes/localized-time.pipe.d.ts +0 -2
  218. package/localized-number-input/lib/localized-number-input/localized-number-input.directive.d.ts +0 -2
  219. package/navigation-button/lib/navigation-button/navigation-button.component.d.ts +1 -2
  220. package/numeric/lib/numeric.pipe.d.ts +0 -3
  221. package/numeric/lib/numeric.service.d.ts +0 -2
  222. package/package.json +12 -12
  223. package/password-strength/lib/password-strength/password-strength.component.d.ts +0 -2
  224. package/password-strength/lib/password-strength/password-strength.directive.d.ts +1 -2
  225. package/picklist/lib/picklist/picklist.component.d.ts +1 -2
  226. package/product-header/README.md +17 -0
  227. package/profile-picture-picker/lib/profile-picture-picker/profile-picture-picker.component.d.ts +0 -4
  228. package/progressbar/lib/progressbar/components/progressbar-determinate/progressbar-determinate.component.d.ts +0 -2
  229. package/progressbar/lib/progressbar/progressbar.module.d.ts +2 -1
  230. package/shared/lib/accessibility/paginator-accessibility.directive.d.ts +1 -3
  231. package/shared/lib/accessibility/table-checkbox-accessibility.directive.d.ts +1 -2
  232. package/slide-in-bar/lib/slide-in-bar/slide-in-bar.component.d.ts +0 -2
  233. package/speech-recognition/lib/speech-recognition/speech-recognition/speech-recognition.component.d.ts +0 -4
  234. package/speech-recognition/lib/speech-recognition/speech-recognition.service.d.ts +1 -5
  235. package/speech-recognition/lib/speech-recognition/text-to-speech.service.d.ts +1 -3
  236. package/split-button/lib/split-button/split-button.component.d.ts +1 -2
  237. package/table/lib/table/row-toggler/row-toggler.directive.d.ts +1 -1
  238. package/table/lib/table/table-column/table-columns.component.d.ts +2 -6
  239. package/table/lib/table/table-paging/table-paging.component.d.ts +0 -3
  240. package/table-header/lib/table-header/table-header-checkbox.component.d.ts +1 -1
  241. package/text-area/lib/text-area/text-area.component.d.ts +1 -2
  242. package/text-area-ia/README.md +17 -0
  243. package/thumbnail/lib/thumbnail/thumbnail.component.d.ts +0 -2
  244. package/tiered-menu/lib/tiered-menu/components/tiered-menu/tiered-menu.component.d.ts +1 -3
  245. package/tiered-menu/lib/tiered-menu/components/tiered-menu-item/tiered-menu-item.component.d.ts +0 -2
  246. package/tiered-menu/lib/tiered-menu/components/tiered-menu-nested/tiered-menu-nested.component.d.ts +0 -2
  247. package/tiered-menu/lib/tiered-menu/tiered-menu.directive.d.ts +1 -5
  248. package/toast/lib/toast/toast.service.d.ts +0 -2
  249. package/tree/lib/tree/components/tree-node-item/tree-node-item.component.d.ts +1 -3
  250. package/workspace-switch/lib/workspace-switch/workspace-switch.component.d.ts +1 -2
  251. package/confirm-dialog/README.md +0 -226
  252. package/numeric-mask/README.md +0 -395
  253. package/pin-code-field/README.md +0 -366
  254. package/spotlight/README.md +0 -311
@@ -1,12 +1,12 @@
1
1
  import { animate, query, stagger, style, transition, trigger } from '@angular/animations';
2
- import { Component, ElementRef, EventEmitter, Input, Output, ViewChild, input } from '@angular/core';
2
+ import { ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, Output, ViewChild, input, inject } from '@angular/core';
3
+ import { TranslateService } from '@ngx-translate/core';
3
4
  import * as i0 from "@angular/core";
4
- import * as i1 from "@ngx-translate/core";
5
- import * as i2 from "@angular/forms";
6
- import * as i3 from "primeng/inputtext";
5
+ import * as i1 from "@angular/forms";
6
+ import * as i2 from "primeng/inputtext";
7
7
  export class TreeNodeItemComponent {
8
- cdr;
9
- translateService;
8
+ cdr = inject(ChangeDetectorRef);
9
+ translateService = inject(TranslateService);
10
10
  ariaLevel = input(0);
11
11
  showCheckbox = input(false);
12
12
  treeNodeItem;
@@ -15,10 +15,6 @@ export class TreeNodeItemComponent {
15
15
  nodeExpanded = new EventEmitter();
16
16
  nodeCollapsed = new EventEmitter();
17
17
  input;
18
- constructor(cdr, translateService) {
19
- this.cdr = cdr;
20
- this.translateService = translateService;
21
- }
22
18
  get hasChildren() {
23
19
  return !!(this.treeNodeItem?.children && this.treeNodeItem.children.length > 0);
24
20
  }
@@ -102,8 +98,8 @@ export class TreeNodeItemComponent {
102
98
  treeNodeEditChildEvent(payload) {
103
99
  this.treeNodeEdit.emit(payload);
104
100
  }
105
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TreeNodeItemComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Component });
106
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: TreeNodeItemComponent, selector: "s-tree-node-item", inputs: { ariaLevel: { classPropertyName: "ariaLevel", publicName: "ariaLevel", isSignal: true, isRequired: false, transformFunction: null }, showCheckbox: { classPropertyName: "showCheckbox", publicName: "showCheckbox", isSignal: true, isRequired: false, transformFunction: null }, treeNodeItem: { classPropertyName: "treeNodeItem", publicName: "treeNodeItem", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { treeNodeItemClicked: "treeNodeItemClicked", treeNodeEdit: "treeNodeEdit", nodeExpanded: "nodeExpanded", nodeCollapsed: "nodeCollapsed" }, viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true, read: ElementRef }], ngImport: i0, template: "@if (treeNodeItem) {\n <div\n class=\"tree-node-item\"\n role=\"treeitem\"\n [class.tree-node-item-selected]=\"treeNodeItem.checked\"\n [class.selectable]=\"hasChildren\"\n [attr.aria-expanded]=\"hasChildren ? treeNodeItem.isExpanded : null\"\n [attr.aria-selected]=\"treeNodeItem.checked === true\"\n [attr.aria-label]=\"treeNodeItem.label\"\n [attr.aria-level]=\"ariaLevel()\"\n tabindex=\"0\"\n (keydown.enter)=\"handleTreeNodeItemClick($event)\"\n (keydown.arrowRight)=\"expandNode()\"\n (keydown.arrowLeft)=\"collapseNode()\"\n >\n @if (hasChildren || treeNodeItem.leaf === true) {\n <div\n class=\"arrow\"\n (click)=\"toggleExpanded(treeNodeItem)\"\n >\n @if (!treeNodeItem.isExpanded) {\n <i [class]=\"treeNodeItem.collapsedIcon || 'fas fa-chevron-right'\"></i>\n }\n @if (treeNodeItem.isExpanded) {\n <i [class]=\"treeNodeItem.expandedIcon || 'fas fa-chevron-down'\"></i>\n }\n </div>\n }\n\n <div\n class=\"tree-node-item-text\"\n (click)=\"handleTreeNodeItemClick($event)\"\n >\n @if (treeNodeItem.icon || treeNodeItem.isEditing) {\n <span class=\"tree-node-item-text-icon\">\n @if (treeNodeItem.icon && !treeNodeItem.isEditing) {\n <i [class]=\"treeNodeItem.icon\"></i>\n }\n @if (treeNodeItem.isEditing) {\n <i\n class=\"fas fa-edit edit\"\n (click)=\"saveEdit($event)\"\n ></i>\n }\n </span>\n }\n\n @if (showCheckbox() && !treeNodeItem.isEditing) {\n <span class=\"tree-node-item-text-checkbox\">\n <input\n type=\"checkbox\"\n [checked]=\"treeNodeItem.checked === true\"\n [indeterminate]=\"treeNodeItem.checked === null\"\n [attr.aria-checked]=\"treeNodeItem.checked === null ? 'mixed' : treeNodeItem.checked\"\n [attr.aria-label]=\"ariaLabel\"\n role=\"checkbox\"\n tabindex=\"0\"\n (keydown.enter)=\"onCheckboxEnter(treeNodeItem)\"\n />\n </span>\n }\n\n <span class=\"tree-node-item-text-label\">\n @if (treeNodeItem.isEditing) {\n <input\n #input\n type=\"text\"\n pInputText\n class=\"tree-node-item-text-input\"\n [(ngModel)]=\"treeNodeItem.editNewValue\"\n (keydown.enter)=\"saveEdit($event)\"\n (keydown.escape)=\"cancelEdit($event)\"\n (click)=\"$event.stopPropagation()\"\n aria-label=\"Editar nome do item\"\n aria-live=\"polite\"\n />\n } @else if (!treeNodeItem.isEditing) {\n {{ treeNodeItem.label }}\n }\n </span>\n\n @if (editable) {\n <span class=\"tree-node-item-text-editable\">\n <i\n class=\"fas fa-pencil-alt\"\n (click)=\"toggleEditing($event)\"\n aria-label=\"Editar item\"\n tabindex=\"0\"\n ></i>\n </span>\n }\n </div>\n </div>\n}\n\n@if (hasChildren && treeNodeItem.isExpanded) {\n <div\n @fadeExpand\n class=\"child\"\n role=\"group\"\n @childrenAnimation\n >\n @for (child of treeNodeItem.children; track $index) {\n <s-tree-node-item\n [showCheckbox]=\"showCheckbox()\"\n [treeNodeItem]=\"child\"\n [ariaLevel]=\"ariaLevel() + 1\"\n (treeNodeItemClicked)=\"handleTreeNodeItemClicked($event)\"\n (treeNodeEdit)=\"treeNodeEditChildEvent($event)\"\n (nodeExpanded)=\"nodeExpanded.emit($event)\"\n (nodeCollapsed)=\"nodeCollapsed.emit($event)\"\n class=\"child-item\"\n />\n }\n </div>\n}\n\n", styles: [".tree-node-item{width:100%;display:flex;cursor:pointer}.tree-node-item .arrow{padding:3px 9px;display:flex;align-items:center;justify-content:center}.tree-node-item-text{flex:1;display:flex;padding:3px 0;align-items:center}.tree-node-item-text:hover{background:#f1f7f8}.tree-node-item-text-icon{display:flex;align-items:center;justify-content:center;padding-right:9px}.tree-node-item-text-icon .edit{color:#428bca}.tree-node-item-text-label{color:#212533;font-family:Open Sans;font-size:14px;font-style:normal;font-weight:400;line-height:150%;display:flex;flex:1}.tree-node-item-text-checkbox{padding-right:9px;display:flex}.tree-node-item-text-checkbox input[type=checkbox]{accent-color:#428bca;width:14px;height:14px}.tree-node-item-text-editable{display:flex;align-items:center;justify-content:flex-end}.tree-node-item-text-editable i{padding:9px}.tree-node-item-text-input{flex:1}.tree-node-item.selectable .tree-node-item-text-label{font-family:Open Sans;font-size:14px;font-style:normal;font-weight:700}.tree-node-item.selectable *{cursor:pointer}.tree-node-item-selected .tree-node-item-text{background:#d5e8ec}.child{overflow:hidden;padding-left:2.2em;display:flex;flex-direction:column;gap:5px}.child-item:first-child{padding-top:5px}\n"], dependencies: [{ kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.InputText, selector: "[pInputText]", inputs: ["variant", "fluid", "pSize"] }, { kind: "component", type: TreeNodeItemComponent, selector: "s-tree-node-item", inputs: ["ariaLevel", "showCheckbox", "treeNodeItem"], outputs: ["treeNodeItemClicked", "treeNodeEdit", "nodeExpanded", "nodeCollapsed"] }], animations: [
101
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TreeNodeItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
102
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: TreeNodeItemComponent, selector: "s-tree-node-item", inputs: { ariaLevel: { classPropertyName: "ariaLevel", publicName: "ariaLevel", isSignal: true, isRequired: false, transformFunction: null }, showCheckbox: { classPropertyName: "showCheckbox", publicName: "showCheckbox", isSignal: true, isRequired: false, transformFunction: null }, treeNodeItem: { classPropertyName: "treeNodeItem", publicName: "treeNodeItem", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { treeNodeItemClicked: "treeNodeItemClicked", treeNodeEdit: "treeNodeEdit", nodeExpanded: "nodeExpanded", nodeCollapsed: "nodeCollapsed" }, viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true, read: ElementRef }], ngImport: i0, template: "@if (treeNodeItem) {\n <div\n class=\"tree-node-item\"\n role=\"treeitem\"\n [class.tree-node-item-selected]=\"treeNodeItem.checked\"\n [class.selectable]=\"hasChildren\"\n [attr.aria-expanded]=\"hasChildren ? treeNodeItem.isExpanded : null\"\n [attr.aria-selected]=\"treeNodeItem.checked === true\"\n [attr.aria-label]=\"treeNodeItem.label\"\n [attr.aria-level]=\"ariaLevel()\"\n tabindex=\"0\"\n (keydown.enter)=\"handleTreeNodeItemClick($event)\"\n (keydown.arrowRight)=\"expandNode()\"\n (keydown.arrowLeft)=\"collapseNode()\"\n >\n @if (hasChildren || treeNodeItem.leaf === true) {\n <div\n class=\"arrow\"\n (click)=\"toggleExpanded(treeNodeItem)\"\n >\n @if (!treeNodeItem.isExpanded) {\n <i [class]=\"treeNodeItem.collapsedIcon || 'fas fa-chevron-right'\"></i>\n }\n @if (treeNodeItem.isExpanded) {\n <i [class]=\"treeNodeItem.expandedIcon || 'fas fa-chevron-down'\"></i>\n }\n </div>\n }\n\n <div\n class=\"tree-node-item-text\"\n (click)=\"handleTreeNodeItemClick($event)\"\n >\n @if (treeNodeItem.icon || treeNodeItem.isEditing) {\n <span class=\"tree-node-item-text-icon\">\n @if (treeNodeItem.icon && !treeNodeItem.isEditing) {\n <i [class]=\"treeNodeItem.icon\"></i>\n }\n @if (treeNodeItem.isEditing) {\n <i\n class=\"fas fa-edit edit\"\n (click)=\"saveEdit($event)\"\n ></i>\n }\n </span>\n }\n\n @if (showCheckbox() && !treeNodeItem.isEditing) {\n <span class=\"tree-node-item-text-checkbox\">\n <input\n type=\"checkbox\"\n [checked]=\"treeNodeItem.checked === true\"\n [indeterminate]=\"treeNodeItem.checked === null\"\n [attr.aria-checked]=\"treeNodeItem.checked === null ? 'mixed' : treeNodeItem.checked\"\n [attr.aria-label]=\"ariaLabel\"\n role=\"checkbox\"\n tabindex=\"0\"\n (keydown.enter)=\"onCheckboxEnter(treeNodeItem)\"\n />\n </span>\n }\n\n <span class=\"tree-node-item-text-label\">\n @if (treeNodeItem.isEditing) {\n <input\n #input\n type=\"text\"\n pInputText\n class=\"tree-node-item-text-input\"\n [(ngModel)]=\"treeNodeItem.editNewValue\"\n (keydown.enter)=\"saveEdit($event)\"\n (keydown.escape)=\"cancelEdit($event)\"\n (click)=\"$event.stopPropagation()\"\n aria-label=\"Editar nome do item\"\n aria-live=\"polite\"\n />\n } @else if (!treeNodeItem.isEditing) {\n {{ treeNodeItem.label }}\n }\n </span>\n\n @if (editable) {\n <span class=\"tree-node-item-text-editable\">\n <i\n class=\"fas fa-pencil-alt\"\n (click)=\"toggleEditing($event)\"\n aria-label=\"Editar item\"\n tabindex=\"0\"\n ></i>\n </span>\n }\n </div>\n </div>\n}\n\n@if (hasChildren && treeNodeItem.isExpanded) {\n <div\n @fadeExpand\n class=\"child\"\n role=\"group\"\n @childrenAnimation\n >\n @for (child of treeNodeItem.children; track $index) {\n <s-tree-node-item\n [showCheckbox]=\"showCheckbox()\"\n [treeNodeItem]=\"child\"\n [ariaLevel]=\"ariaLevel() + 1\"\n (treeNodeItemClicked)=\"handleTreeNodeItemClicked($event)\"\n (treeNodeEdit)=\"treeNodeEditChildEvent($event)\"\n (nodeExpanded)=\"nodeExpanded.emit($event)\"\n (nodeCollapsed)=\"nodeCollapsed.emit($event)\"\n class=\"child-item\"\n />\n }\n </div>\n}\n\n", styles: [".tree-node-item{width:100%;display:flex;cursor:pointer}.tree-node-item .arrow{padding:3px 9px;display:flex;align-items:center;justify-content:center}.tree-node-item-text{flex:1;display:flex;padding:3px 0;align-items:center}.tree-node-item-text:hover{background:#f1f7f8}.tree-node-item-text-icon{display:flex;align-items:center;justify-content:center;padding-right:9px}.tree-node-item-text-icon .edit{color:#428bca}.tree-node-item-text-label{color:#212533;font-family:Open Sans;font-size:14px;font-style:normal;font-weight:400;line-height:150%;display:flex;flex:1}.tree-node-item-text-checkbox{padding-right:9px;display:flex}.tree-node-item-text-checkbox input[type=checkbox]{accent-color:#428bca;width:14px;height:14px}.tree-node-item-text-editable{display:flex;align-items:center;justify-content:flex-end}.tree-node-item-text-editable i{padding:9px}.tree-node-item-text-input{flex:1}.tree-node-item.selectable .tree-node-item-text-label{font-family:Open Sans;font-size:14px;font-style:normal;font-weight:700}.tree-node-item.selectable *{cursor:pointer}.tree-node-item-selected .tree-node-item-text{background:#d5e8ec}.child{overflow:hidden;padding-left:2.2em;display:flex;flex-direction:column;gap:5px}.child-item:first-child{padding-top:5px}\n"], dependencies: [{ kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i2.InputText, selector: "[pInputText]", inputs: ["variant", "fluid", "pSize"] }, { kind: "component", type: TreeNodeItemComponent, selector: "s-tree-node-item", inputs: ["ariaLevel", "showCheckbox", "treeNodeItem"], outputs: ["treeNodeItemClicked", "treeNodeEdit", "nodeExpanded", "nodeCollapsed"] }], animations: [
107
103
  trigger('fadeExpand', [
108
104
  transition(':enter', [
109
105
  style({ height: '0px', opacity: 0, overflow: 'hidden' }),
@@ -140,7 +136,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
140
136
  ]),
141
137
  ]),
142
138
  ], template: "@if (treeNodeItem) {\n <div\n class=\"tree-node-item\"\n role=\"treeitem\"\n [class.tree-node-item-selected]=\"treeNodeItem.checked\"\n [class.selectable]=\"hasChildren\"\n [attr.aria-expanded]=\"hasChildren ? treeNodeItem.isExpanded : null\"\n [attr.aria-selected]=\"treeNodeItem.checked === true\"\n [attr.aria-label]=\"treeNodeItem.label\"\n [attr.aria-level]=\"ariaLevel()\"\n tabindex=\"0\"\n (keydown.enter)=\"handleTreeNodeItemClick($event)\"\n (keydown.arrowRight)=\"expandNode()\"\n (keydown.arrowLeft)=\"collapseNode()\"\n >\n @if (hasChildren || treeNodeItem.leaf === true) {\n <div\n class=\"arrow\"\n (click)=\"toggleExpanded(treeNodeItem)\"\n >\n @if (!treeNodeItem.isExpanded) {\n <i [class]=\"treeNodeItem.collapsedIcon || 'fas fa-chevron-right'\"></i>\n }\n @if (treeNodeItem.isExpanded) {\n <i [class]=\"treeNodeItem.expandedIcon || 'fas fa-chevron-down'\"></i>\n }\n </div>\n }\n\n <div\n class=\"tree-node-item-text\"\n (click)=\"handleTreeNodeItemClick($event)\"\n >\n @if (treeNodeItem.icon || treeNodeItem.isEditing) {\n <span class=\"tree-node-item-text-icon\">\n @if (treeNodeItem.icon && !treeNodeItem.isEditing) {\n <i [class]=\"treeNodeItem.icon\"></i>\n }\n @if (treeNodeItem.isEditing) {\n <i\n class=\"fas fa-edit edit\"\n (click)=\"saveEdit($event)\"\n ></i>\n }\n </span>\n }\n\n @if (showCheckbox() && !treeNodeItem.isEditing) {\n <span class=\"tree-node-item-text-checkbox\">\n <input\n type=\"checkbox\"\n [checked]=\"treeNodeItem.checked === true\"\n [indeterminate]=\"treeNodeItem.checked === null\"\n [attr.aria-checked]=\"treeNodeItem.checked === null ? 'mixed' : treeNodeItem.checked\"\n [attr.aria-label]=\"ariaLabel\"\n role=\"checkbox\"\n tabindex=\"0\"\n (keydown.enter)=\"onCheckboxEnter(treeNodeItem)\"\n />\n </span>\n }\n\n <span class=\"tree-node-item-text-label\">\n @if (treeNodeItem.isEditing) {\n <input\n #input\n type=\"text\"\n pInputText\n class=\"tree-node-item-text-input\"\n [(ngModel)]=\"treeNodeItem.editNewValue\"\n (keydown.enter)=\"saveEdit($event)\"\n (keydown.escape)=\"cancelEdit($event)\"\n (click)=\"$event.stopPropagation()\"\n aria-label=\"Editar nome do item\"\n aria-live=\"polite\"\n />\n } @else if (!treeNodeItem.isEditing) {\n {{ treeNodeItem.label }}\n }\n </span>\n\n @if (editable) {\n <span class=\"tree-node-item-text-editable\">\n <i\n class=\"fas fa-pencil-alt\"\n (click)=\"toggleEditing($event)\"\n aria-label=\"Editar item\"\n tabindex=\"0\"\n ></i>\n </span>\n }\n </div>\n </div>\n}\n\n@if (hasChildren && treeNodeItem.isExpanded) {\n <div\n @fadeExpand\n class=\"child\"\n role=\"group\"\n @childrenAnimation\n >\n @for (child of treeNodeItem.children; track $index) {\n <s-tree-node-item\n [showCheckbox]=\"showCheckbox()\"\n [treeNodeItem]=\"child\"\n [ariaLevel]=\"ariaLevel() + 1\"\n (treeNodeItemClicked)=\"handleTreeNodeItemClicked($event)\"\n (treeNodeEdit)=\"treeNodeEditChildEvent($event)\"\n (nodeExpanded)=\"nodeExpanded.emit($event)\"\n (nodeCollapsed)=\"nodeCollapsed.emit($event)\"\n class=\"child-item\"\n />\n }\n </div>\n}\n\n", styles: [".tree-node-item{width:100%;display:flex;cursor:pointer}.tree-node-item .arrow{padding:3px 9px;display:flex;align-items:center;justify-content:center}.tree-node-item-text{flex:1;display:flex;padding:3px 0;align-items:center}.tree-node-item-text:hover{background:#f1f7f8}.tree-node-item-text-icon{display:flex;align-items:center;justify-content:center;padding-right:9px}.tree-node-item-text-icon .edit{color:#428bca}.tree-node-item-text-label{color:#212533;font-family:Open Sans;font-size:14px;font-style:normal;font-weight:400;line-height:150%;display:flex;flex:1}.tree-node-item-text-checkbox{padding-right:9px;display:flex}.tree-node-item-text-checkbox input[type=checkbox]{accent-color:#428bca;width:14px;height:14px}.tree-node-item-text-editable{display:flex;align-items:center;justify-content:flex-end}.tree-node-item-text-editable i{padding:9px}.tree-node-item-text-input{flex:1}.tree-node-item.selectable .tree-node-item-text-label{font-family:Open Sans;font-size:14px;font-style:normal;font-weight:700}.tree-node-item.selectable *{cursor:pointer}.tree-node-item-selected .tree-node-item-text{background:#d5e8ec}.child{overflow:hidden;padding-left:2.2em;display:flex;flex-direction:column;gap:5px}.child-item:first-child{padding-top:5px}\n"] }]
143
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.TranslateService }], propDecorators: { treeNodeItem: [{
139
+ }], propDecorators: { treeNodeItem: [{
144
140
  type: Input
145
141
  }], treeNodeItemClicked: [{
146
142
  type: Output
@@ -154,4 +150,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
154
150
  type: ViewChild,
155
151
  args: ['input', { read: ElementRef }]
156
152
  }] } });
157
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1ub2RlLWl0ZW0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL3RyZWUvc3JjL2xpYi90cmVlL2NvbXBvbmVudHMvdHJlZS1ub2RlLWl0ZW0vdHJlZS1ub2RlLWl0ZW0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL3RyZWUvc3JjL2xpYi90cmVlL2NvbXBvbmVudHMvdHJlZS1ub2RlLWl0ZW0vdHJlZS1ub2RlLWl0ZW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDMUYsT0FBTyxFQUFxQixTQUFTLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7O0FBK0J4SCxNQUFNLE9BQU8scUJBQXFCO0lBWVQ7SUFDQTtJQVpaLFNBQVMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckIsWUFBWSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QixZQUFZLENBQXdCO0lBQ25DLG1CQUFtQixHQUFHLElBQUksWUFBWSxFQUFnRCxDQUFDO0lBQ3ZGLFlBQVksR0FBRyxJQUFJLFlBQVksRUFBZ0IsQ0FBQztJQUNoRCxZQUFZLEdBQUcsSUFBSSxZQUFZLEVBQXdCLENBQUM7SUFDeEQsYUFBYSxHQUFHLElBQUksWUFBWSxFQUF3QixDQUFDO0lBRXpCLEtBQUssQ0FBZ0M7SUFFL0UsWUFDcUIsR0FBc0IsRUFDdEIsZ0JBQWtDO1FBRGxDLFFBQUcsR0FBSCxHQUFHLENB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USxFQUFFLElBQUksRUFBRSxDQUNyQjs2QkFDSixDQUFDO3lCQUNMLENBQUM7cUJBQ0w7cUhBS1EsWUFBWTtzQkFBcEIsS0FBSztnQkFDSSxtQkFBbUI7c0JBQTVCLE1BQU07Z0JBQ0csWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLGFBQWE7c0JBQXRCLE1BQU07Z0JBRW1DLEtBQUs7c0JBQTlDLFNBQVM7dUJBQUMsT0FBTyxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFuaW1hdGUsIHF1ZXJ5LCBzdGFnZ2VyLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBWaWV3Q2hpbGQsIGlucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IEludGVybmFsVHJlZU5vZGVJdGVtLCBUcmVlTm9kZUVkaXQgfSBmcm9tICcuLi8uLi9Nb2RlbHMvdHJlZS5tb2RlbHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3MtdHJlZS1ub2RlLWl0ZW0nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi90cmVlLW5vZGUtaXRlbS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vdHJlZS1ub2RlLWl0ZW0uY29tcG9uZW50LnNjc3MnXSxcbiAgICBhbmltYXRpb25zOiBbXG4gICAgICAgIHRyaWdnZXIoJ2ZhZGVFeHBhbmQnLCBbXG4gICAgICAgICAgICB0cmFuc2l0aW9uKCc6ZW50ZXInLCBbXG4gICAgICAgICAgICAgICAgc3R5bGUoeyBoZWlnaHQ6ICcwcHgnLCBvcGFjaXR5OiAwLCBvdmVyZmxvdzogJ2hpZGRlbicgfSksXG4gICAgICAgICAgICAgICAgYW5pbWF0ZSgnMjAwbXMgZWFzZS1vdXQnLCBzdHlsZSh7IGhlaWdodDogJyonLCBvcGFjaXR5OiAxIH0pKSxcbiAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgdHJhbnNpdGlvbignOmxlYXZlJywgW2FuaW1hdGUoJzE1MG1zIGVhc2UtaW4nLCBzdHlsZSh7IGhlaWdodDogJzBweCcsIG9wYWNpdHk6IDAgfSkpXSksXG4gICAgICAgIF0pLFxuICAgICAgICB0cmlnZ2VyKCdjaGlsZHJlbkFuaW1hdGlvbicsIFtcbiAgICAgICAgICAgIHRyYW5zaXRpb24oJzplbnRlcicsIFtcbiAgICAgICAgICAgICAgICBxdWVyeShcbiAgICAgICAgICAgICAgICAgICAgJzplbnRlcicsXG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMCwgdHJhbnNmb3JtOiAndHJhbnNsYXRlWSgtMTBweCknIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhZ2dlcig2MCwgW2FuaW1hdGUoJzIwMG1zIGVhc2Utb3V0Jywgc3R5bGUoeyBvcGFjaXR5OiAxLCB0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKDApJyB9KSldKSxcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgeyBvcHRpb25hbDogdHJ1ZSB9LFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICBdKSxcbiAgICAgICAgXSksXG4gICAgXSxcbn0pXG5leHBvcnQgY2xhc3MgVHJlZU5vZGVJdGVtQ29tcG9uZW50IHtcbiAgICByZWFkb25seSBhcmlhTGV2ZWwgPSBpbnB1dCgwKTtcbiAgICByZWFkb25seSBzaG93Q2hlY2tib3ggPSBpbnB1dChmYWxzZSk7XG4gICAgQElucHV0KCkgdHJlZU5vZGVJdGVtITogSW50ZXJuYWxUcmVlTm9kZUl0ZW07XG4gICAgQE91dHB1dCgpIHRyZWVOb2RlSXRlbUNsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHsgaXRlbTogSW50ZXJuYWxUcmVlTm9kZUl0ZW07IGV2ZW50OiBFdmVudCB9PigpO1xuICAgIEBPdXRwdXQoKSB0cmVlTm9kZUVkaXQgPSBuZXcgRXZlbnRFbWl0dGVyPFRyZWVOb2RlRWRpdD4oKTtcbiAgICBAT3V0cHV0KCkgbm9kZUV4cGFuZGVkID0gbmV3IEV2ZW50RW1pdHRlcjxJbnRlcm5hbFRyZWVOb2RlSXRlbT4oKTtcbiAgICBAT3V0cHV0KCkgbm9kZUNvbGxhcHNlZCA9IG5ldyBFdmVudEVtaXR0ZXI8SW50ZXJuYWxUcmVlTm9kZUl0ZW0+KCk7XG5cbiAgICBAVmlld0NoaWxkKCdpbnB1dCcsIHsgcmVhZDogRWxlbWVudFJlZiB9KSBpbnB1dCE6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgKSB7fVxuXG4gICAgZ2V0IGhhc0NoaWxkcmVuKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISEodGhpcy50cmVlTm9kZUl0ZW0/LmNoaWxkcmVuICYmIHRoaXMudHJlZU5vZGVJdGVtLmNoaWxkcmVuLmxlbmd0aCA+IDApO1xuICAgIH1cblxuICAgIGdldCBlZGl0YWJsZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHJlZU5vZGVJdGVtPy5lZGl0YWJsZSB8fCBmYWxzZTtcbiAgICB9XG5cbiAgICBnZXQgYXJpYUxhYmVsKCkge1xuICAgICAgICByZXR1cm4gYCR7dGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ3BsYXRmb3JtLmFuZ3VsYXJfY29tcG9uZW50cy5zZWxlY3QnKX0gJHt0aGlzLnRyZWVOb2RlSXRlbS5sYWJlbH1gO1xuICAgIH1cblxuICAgIGV4cGFuZE5vZGUoKSB7XG4gICAgICAgIGlmICh0aGlzLmhhc0NoaWxkcmVuICYmICF0aGlzLnRyZWVOb2RlSXRlbS5pc0V4cGFuZGVkKSB7XG4gICAgICAgICAgICB0aGlzLnRvZ2dsZUV4cGFuZGVkKHRoaXMudHJlZU5vZGVJdGVtKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbGxhcHNlTm9kZSgpIHtcbiAgICAgICAgaWYgKHRoaXMuaGFzQ2hpbGRyZW4gJiYgdGhpcy50cmVlTm9kZUl0ZW0uaXNFeHBhbmRlZCkge1xuICAgICAgICAgICAgdGhpcy50b2dnbGVFeHBhbmRlZCh0aGlzLnRyZWVOb2RlSXRlbSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkNoZWNrYm94RW50ZXIobm9kZTogSW50ZXJuYWxUcmVlTm9kZUl0ZW0pIHtcbiAgICAgICAgY29uc3QgbmV3U3RhdGUgPSBub2RlLmNoZWNrZWQgPT09IHRydWUgPyBmYWxzZSA6IHRydWU7XG4gICAgICAgIG5vZGUuY2hlY2tlZCA9IG5ld1N0YXRlO1xuICAgICAgICB0aGlzLnRyZWVOb2RlSXRlbUNsaWNrZWQuZW1pdCh7IGl0ZW06IG5vZGUsIGV2ZW50OiBuZXcgS2V5Ym9hcmRFdmVudCgna2V5ZG93bicsIHsga2V5OiAnRW50ZXInIH0pIH0pO1xuICAgIH1cblxuICAgIGhhbmRsZVRyZWVOb2RlSXRlbUNsaWNrKGV2ZW50OiBFdmVudCwgdHJlZU5vZGVJdGVtPzogSW50ZXJuYWxUcmVlTm9kZUl0ZW0pIHtcbiAgICAgICAgY29uc3QgaXRlbSA9IHRyZWVOb2RlSXRlbSB8fCB0aGlzLnRyZWVOb2RlSXRlbTtcbiAgICAgICAgdGhpcy50cmVlTm9kZUl0ZW1DbGlja2VkLmVtaXQoeyBpdGVtLCBldmVudCB9KTtcbiAgICB9XG5cbiAgICBoYW5kbGVUcmVlTm9kZUl0ZW1DbGlja2VkKHsgZXZlbnQsIGl0ZW0gfTogeyBldmVudDogRXZlbnQ7IGl0ZW06IEludGVybmFsVHJlZU5vZGVJdGVtIH0pIHtcbiAgICAgICAgaWYgKGl0ZW0uaXNFZGl0aW5nKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5oYW5kbGVUcmVlTm9kZUl0ZW1DbGljayhldmVudCwgaXRlbSk7XG4gICAgfVxuXG4gICAgdG9nZ2xlRXhwYW5kZWQodHJlZU5vZGVJdGVtOiBJbnRlcm5hbFRyZWVOb2RlSXRlbSkge1xuICAgICAgICB0cmVlTm9kZUl0ZW0uaXNFeHBhbmRlZCA9ICF0cmVlTm9kZUl0ZW0uaXNFeHBhbmRlZDtcbiAgICAgICAgaWYgKHRyZWVOb2RlSXRlbS5pc0V4cGFuZGVkKSB7XG4gICAgICAgICAgICB0aGlzLm5vZGVFeHBhbmRlZC5lbWl0KHRyZWVOb2RlSXRlbSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm5vZGVDb2xsYXBzZWQuZW1pdCh0cmVlTm9kZUl0ZW0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdG9nZ2xlRWRpdGluZygkZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgdGhpcy50cmVlTm9kZUl0ZW0uaXNFZGl0aW5nID0gIXRoaXMudHJlZU5vZGVJdGVtLmlzRWRpdGluZztcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICBpZiAodGhpcy50cmVlTm9kZUl0ZW0uaXNFZGl0aW5nKSB7XG4gICAgICAgICAgICB0aGlzLnRyZWVOb2RlSXRlbS5lZGl0TmV3VmFsdWUgPSB0aGlzLnRyZWVOb2RlSXRlbS5sYWJlbDtcbiAgICAgICAgICAgIGNvbnN0IGlucHV0ID0gdGhpcy5pbnB1dD8ubmF0aXZlRWxlbWVudDtcbiAgICAgICAgICAgIGlucHV0Py5mb2N1cygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY2FuY2VsRWRpdCgkZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgdGhpcy50cmVlTm9kZUl0ZW0uaXNFZGl0aW5nID0gZmFsc2U7XG4gICAgICAgIHRoaXMudHJlZU5vZGVJdGVtLmVkaXROZXdWYWx1ZSA9ICcnO1xuICAgICAgICB0aGlzLnRyZWVOb2RlSXRlbS5lZGl0UHJldmlvdXNWYWx1ZSA9ICcnO1xuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgc2F2ZUVkaXQoJGV2ZW50OiBFdmVudCkge1xuICAgICAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIHRoaXMudHJlZU5vZGVJdGVtLmlzRWRpdGluZyA9IGZhbHNlO1xuICAgICAgICBpZiAoIXRoaXMudHJlZU5vZGVJdGVtLmVkaXROZXdWYWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy50cmVlTm9kZUl0ZW0uZWRpdFByZXZpb3VzVmFsdWUgPSB0aGlzLnRyZWVOb2RlSXRlbS5sYWJlbDtcbiAgICAgICAgdGhpcy50cmVlTm9kZUl0ZW0ubGFiZWwgPSB0aGlzLnRyZWVOb2RlSXRlbS5lZGl0TmV3VmFsdWU7XG5cbiAgICAgICAgY29uc3QgcmV2ZXJ0QWN0aW9uID0gKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy50cmVlTm9kZUl0ZW0ubGFiZWwgPSB0aGlzLnRyZWVOb2RlSXRlbS5lZGl0UHJldmlvdXNWYWx1ZSBhcyBzdHJpbmc7XG4gICAgICAgICAgICB0aGlzLnRyZWVOb2RlSXRlbS5pc0VkaXRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy50cmVlTm9kZUVkaXQuZW1pdCh7XG4gICAgICAgICAgICByZXZlcnRBY3Rpb24sXG4gICAgICAgICAgICBpdGVtOiB0aGlzLnRyZWVOb2RlSXRlbSxcbiAgICAgICAgICAgIG5ld1ZhbHVlOiB0aGlzLnRyZWVOb2RlSXRlbS5lZGl0TmV3VmFsdWUsXG4gICAgICAgICAgICBwcmV2aW91c1ZhbHVlOiB0aGlzLnRyZWVOb2RlSXRlbS5lZGl0UHJldmlvdXNWYWx1ZSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgdHJlZU5vZGVFZGl0Q2hpbGRFdmVudChwYXlsb2FkOiBUcmVlTm9kZUVkaXQpIHtcbiAgICAgICAgdGhpcy50cmVlTm9kZUVkaXQuZW1pdChwYXlsb2FkKTtcbiAgICB9XG59XG4iLCJAaWYgKHRyZWVOb2RlSXRlbSkge1xuICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJ0cmVlLW5vZGUtaXRlbVwiXG4gICAgICAgIHJvbGU9XCJ0cmVlaXRlbVwiXG4gICAgICAgIFtjbGFzcy50cmVlLW5vZGUtaXRlbS1zZWxlY3RlZF09XCJ0cmVlTm9kZUl0ZW0uY2hlY2tlZFwiXG4gICAgICAgIFtjbGFzcy5zZWxlY3RhYmxlXT1cImhhc0NoaWxkcmVuXCJcbiAgICAgICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJoYXNDaGlsZHJlbiA/IHRyZWVOb2RlSXRlbS5pc0V4cGFuZGVkIDogbnVsbFwiXG4gICAgICAgIFthdHRyLmFyaWEtc2VsZWN0ZWRdPVwidHJlZU5vZGVJdGVtLmNoZWNrZWQgPT09IHRydWVcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInRyZWVOb2RlSXRlbS5sYWJlbFwiXG4gICAgICAgIFthdHRyLmFyaWEtbGV2ZWxdPVwiYXJpYUxldmVsKClcIlxuICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJoYW5kbGVUcmVlTm9kZUl0ZW1DbGljaygkZXZlbnQpXCJcbiAgICAgICAgKGtleWRvd24uYXJyb3dSaWdodCk9XCJleHBhbmROb2RlKClcIlxuICAgICAgICAoa2V5ZG93bi5hcnJvd0xlZnQpPVwiY29sbGFwc2VOb2RlKClcIlxuICAgID5cbiAgICAgICAgQGlmIChoYXNDaGlsZHJlbiB8fCB0cmVlTm9kZUl0ZW0ubGVhZiA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYXJyb3dcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVFeHBhbmRlZCh0cmVlTm9kZUl0ZW0pXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBAaWYgKCF0cmVlTm9kZUl0ZW0uaXNFeHBhbmRlZCkge1xuICAgICAgICAgICAgICAgICAgICA8aSBbY2xhc3NdPVwidHJlZU5vZGVJdGVtLmNvbGxhcHNlZEljb24gfHwgJ2ZhcyBmYS1jaGV2cm9uLXJpZ2h0J1wiPjwvaT5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgQGlmICh0cmVlTm9kZUl0ZW0uaXNFeHBhbmRlZCkge1xuICAgICAgICAgICAgICAgICAgICA8aSBbY2xhc3NdPVwidHJlZU5vZGVJdGVtLmV4cGFuZGVkSWNvbiB8fCAnZmFzIGZhLWNoZXZyb24tZG93bidcIj48L2k+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cblxuICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cInRyZWUtbm9kZS1pdGVtLXRleHRcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImhhbmRsZVRyZWVOb2RlSXRlbUNsaWNrKCRldmVudClcIlxuICAgICAgICA+XG4gICAgICAgICAgICBAaWYgKHRyZWVOb2RlSXRlbS5pY29uIHx8IHRyZWVOb2RlSXRlbS5pc0VkaXRpbmcpIHtcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRyZWUtbm9kZS1pdGVtLXRleHQtaWNvblwiPlxuICAgICAgICAgICAgICAgICAgICBAaWYgKHRyZWVOb2RlSXRlbS5pY29uICYmICF0cmVlTm9kZUl0ZW0uaXNFZGl0aW5nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBbY2xhc3NdPVwidHJlZU5vZGVJdGVtLmljb25cIj48L2k+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgQGlmICh0cmVlTm9kZUl0ZW0uaXNFZGl0aW5nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmFzIGZhLWVkaXQgZWRpdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNhdmVFZGl0KCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgQGlmIChzaG93Q2hlY2tib3goKSAmJiAhdHJlZU5vZGVJdGVtLmlzRWRpdGluZykge1xuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidHJlZS1ub2RlLWl0ZW0tdGV4dC1jaGVja2JveFwiPlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJ0cmVlTm9kZUl0ZW0uY2hlY2tlZCA9PT0gdHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5kZXRlcm1pbmF0ZV09XCJ0cmVlTm9kZUl0ZW0uY2hlY2tlZCA9PT0gbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWNoZWNrZWRdPVwidHJlZU5vZGVJdGVtLmNoZWNrZWQgPT09IG51bGwgPyAnbWl4ZWQnIDogdHJlZU5vZGVJdGVtLmNoZWNrZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhTGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgcm9sZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJvbkNoZWNrYm94RW50ZXIodHJlZU5vZGVJdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRyZWUtbm9kZS1pdGVtLXRleHQtbGFiZWxcIj5cbiAgICAgICAgICAgICAgICBAaWYgKHRyZWVOb2RlSXRlbS5pc0VkaXRpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAjaW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBJbnB1dFRleHRcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidHJlZS1ub2RlLWl0ZW0tdGV4dC1pbnB1dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInRyZWVOb2RlSXRlbS5lZGl0TmV3VmFsdWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwic2F2ZUVkaXQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bi5lc2NhcGUpPVwiY2FuY2VsRWRpdCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkVkaXRhciBub21lIGRvIGl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1saXZlPVwicG9saXRlXCJcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICB9IEBlbHNlIGlmICghdHJlZU5vZGVJdGVtLmlzRWRpdGluZykge1xuICAgICAgICAgICAgICAgICAgICB7eyB0cmVlTm9kZUl0ZW0ubGFiZWwgfX1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgIEBpZiAoZWRpdGFibGUpIHtcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRyZWUtbm9kZS1pdGVtLXRleHQtZWRpdGFibGVcIj5cbiAgICAgICAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmFzIGZhLXBlbmNpbC1hbHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUVkaXRpbmcoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiRWRpdGFyIGl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvaT5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxufVxuXG5AaWYgKGhhc0NoaWxkcmVuICYmIHRyZWVOb2RlSXRlbS5pc0V4cGFuZGVkKSB7XG4gICAgPGRpdlxuICAgICAgICBAZmFkZUV4cGFuZFxuICAgICAgICBjbGFzcz1cImNoaWxkXCJcbiAgICAgICAgcm9sZT1cImdyb3VwXCJcbiAgICAgICAgQGNoaWxkcmVuQW5pbWF0aW9uXG4gICAgPlxuICAgICAgICBAZm9yIChjaGlsZCBvZiB0cmVlTm9kZUl0ZW0uY2hpbGRyZW47IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgPHMtdHJlZS1ub2RlLWl0ZW1cbiAgICAgICAgICAgICAgICBbc2hvd0NoZWNrYm94XT1cInNob3dDaGVja2JveCgpXCJcbiAgICAgICAgICAgICAgICBbdHJlZU5vZGVJdGVtXT1cImNoaWxkXCJcbiAgICAgICAgICAgICAgICBbYXJpYUxldmVsXT1cImFyaWFMZXZlbCgpICsgMVwiXG4gICAgICAgICAgICAgICAgKHRyZWVOb2RlSXRlbUNsaWNrZWQpPVwiaGFuZGxlVHJlZU5vZGVJdGVtQ2xpY2tlZCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAodHJlZU5vZGVFZGl0KT1cInRyZWVOb2RlRWRpdENoaWxkRXZlbnQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKG5vZGVFeHBhbmRlZCk9XCJub2RlRXhwYW5kZWQuZW1pdCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAobm9kZUNvbGxhcHNlZCk9XCJub2RlQ29sbGFwc2VkLmVtaXQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlsZC1pdGVtXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgIH1cbiAgICA8L2Rpdj5cbn1cblxuIl19
153
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1ub2RlLWl0ZW0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL3RyZWUvc3JjL2xpYi90cmVlL2NvbXBvbmVudHMvdHJlZS1ub2RlLWl0ZW0vdHJlZS1ub2RlLWl0ZW0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL3RyZWUvc3JjL2xpYi90cmVlL2NvbXBvbmVudHMvdHJlZS1ub2RlLWl0ZW0vdHJlZS1ub2RlLWl0ZW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDMUYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFaEksT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7QUE2QnZELE1BQU0sT0FBTyxxQkFBcUI7SUFDYixHQUFHLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDaEMsZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFFcEQsU0FBUyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyQixZQUFZLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVCLFlBQVksQ0FBd0I7SUFDbkMsbUJBQW1CLEdBQUcsSUFBSSxZQUFZLEVBQWdELENBQUM7SUFDdkYsWUFBWSxHQUFHLElBQUksWUFBWSxFQUFnQixDQUFDO0lBQ2hELFlBQVksR0FBRyxJQUFJLFlBQVksRUFBd0IsQ0FBQztJQUN4RCxhQUFhLEdBQUcsSUFBSSxZQUFZLEVBQXdCLENBQUM7SUFFekIsS0FBSyxDQUFnQztJQUUvRSxJQUFJLFdBQVc7UUFDWCxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsUUFBUSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNwRixDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1IsT0FBTyxJQUFJLENBQUMsWUFBWSxFQUFFLFFBQVEsSUFBSSxLQUFLLENBQUM7SUFDaEQsQ0FBQztJQUVELElBQUksU0FBUztRQUNULE9BQU8sR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLG9DQUFvQyxDQUFDLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUMvRyxDQUFDO0lBRUQsVUFBVTtRQUNOLElBQUksSUFBSSxDQUFDLFdBQVcsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDcEQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDM0MsQ0FBQztJQUNMLENBQUM7SUFFRCxZQUFZO1FBQ1IsSUFBSSxJQUFJLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDbkQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDM0MsQ0FBQztJQUNMLENBQUM7SUFFRCxlQUFlLENBQUMsSUFBMEI7UUFDdEMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLE9BQU8sS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ3RELElBQUksQ0FBQyxPQUFPLEdBQUcsUUFBUSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLGFBQWEsQ0FBQyxTQUFTLEVBQUUsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDekcsQ0FBQztJQUVELHVCQUF1QixDQUFDLEtBQVksRUFBRSxZQUFtQztRQUNyRSxNQUFNLElBQUksR0FBRyxZQUFZLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQztRQUMvQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVELHlCQUF5QixDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBZ0Q7UUFDbkYsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDakIsT0FBTztRQUNYLENBQUM7UUFDRCxJQUFJLENBQUMsdUJBQXVCLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxjQUFjLENBQUMsWUFBa0M7UUFDN0MsWUFBWSxDQUFDLFVBQVUsR0FBRyxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUM7UUFDbkQsSUFBSSxZQUFZLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDekMsQ0FBQzthQUFNLENBQUM7WUFDSixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUMxQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGFBQWEsQ0FBQyxNQUFhO1FBQ3ZCLE1BQU0sQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsR0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDO1FBQzNELElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDekIsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQzlCLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDO1lBQ3pELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsYUFBYSxDQUFDO1lBQ3hDLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQztRQUNuQixDQUFDO0lBQ0wsQ0FBQztJQUVELFVBQVUsQ0FBQyxNQUFhO1FBQ3BCLE1BQU0sQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFDcEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ3BDLElBQUksQ0FBQyxZQUFZLENBQUMsaUJBQWlCLEdBQUcsRUFBRSxDQUFDO1FBQ3pDLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVELFFBQVEsQ0FBQyxNQUFhO1FBQ2xCLE1BQU0sQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFDcEMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDbEMsT0FBTztRQUNYLENBQUM7UUFFRCxJQUFJLENBQUMsWUFBWSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDO1FBQzlELElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDO1FBRXpELE1BQU0sWUFBWSxHQUFHLEdBQUcsRUFBRTtZQUN0QixJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLGlCQUEyQixDQUFDO1lBQ3hFLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztZQUNwQyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQzdCLENBQUMsQ0FBQztRQUNGLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDO1lBQ25CLFlBQVk7WUFDWixJQUFJLEVBQUUsSUFBSSxDQUFDLFlBQVk7WUFDdkIsUUFBUSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWTtZQUN4QyxhQUFhLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxpQkFBaUI7U0FDckQsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELHNCQUFzQixDQUFDLE9BQXFCO1FBQ3hDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3BDLENBQUM7d0dBN0dRLHFCQUFxQjs0RkFBckIscUJBQXFCLG1zQkFZRixVQUFVLDZCQzVDMUMsMC9JQXFIQSxtOUREckZhLHFCQUFxQix5TEF0QmxCO1lBQ1IsT0FBTyxDQUFDLFlBQVksRUFBRTtnQkFDbEIsVUFBVSxDQUFDLFFBQVEsRUFBRTtvQkFDakIsS0FBSyxDQUFDLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsQ0FBQztvQkFDeEQsT0FBTyxDQUFDLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7aUJBQ2hFLENBQUM7Z0JBQ0YsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDLE9BQU8sQ0FBQyxlQUFlLEVBQUUsS0FBSyxDQUFDLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDekYsQ0FBQztZQUNGLE9BQU8sQ0FBQyxtQkFBbUIsRUFBRTtnQkFDekIsVUFBVSxDQUFDLFFBQVEsRUFBRTtvQkFDakIsS0FBSyxDQUNELFFBQVEsRUFDUjt3QkFDSSxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxtQkFBbUIsRUFBRSxDQUFDO3dCQUNyRCxPQUFPLENBQUMsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO3FCQUM5RixFQUNELEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUNyQjtpQkFDSixDQUFDO2FBQ0wsQ0FBQztTQUNMOzs0RkFFUSxxQkFBcUI7a0JBMUJqQyxTQUFTOytCQUNJLGtCQUFrQixjQUdoQjt3QkFDUixPQUFPLENBQUMsWUFBWSxFQUFFOzRCQUNsQixVQUFVLENBQUMsUUFBUSxFQUFFO2dDQUNqQixLQUFLLENBQUMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxDQUFDO2dDQUN4RCxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQzs2QkFDaEUsQ0FBQzs0QkFDRixVQUFVLENBQUMsUUFBUSxFQUFFLENBQUMsT0FBTyxDQUFDLGVBQWUsRUFBRSxLQUFLLENBQUMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQzt5QkFDekYsQ0FBQzt3QkFDRixPQUFPLENBQUMsbUJBQW1CLEVBQUU7NEJBQ3pCLFVBQVUsQ0FBQyxRQUFRLEVBQUU7Z0NBQ2pCLEtBQUssQ0FDRCxRQUFRLEVBQ1I7b0NBQ0ksS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQztvQ0FDckQsT0FBTyxDQUFDLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztpQ0FDOUYsRUFDRCxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FDckI7NkJBQ0osQ0FBQzt5QkFDTCxDQUFDO3FCQUNMOzhCQVFRLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0ksbUJBQW1CO3NCQUE1QixNQUFNO2dCQUNHLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUVtQyxLQUFLO3NCQUE5QyxTQUFTO3VCQUFDLE9BQU8sRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhbmltYXRlLCBxdWVyeSwgc3RhZ2dlciwgc3R5bGUsIHRyYW5zaXRpb24sIHRyaWdnZXIgfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCwgVmlld0NoaWxkLCBpbnB1dCwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IEludGVybmFsVHJlZU5vZGVJdGVtLCBUcmVlTm9kZUVkaXQgfSBmcm9tICcuLi8uLi9Nb2RlbHMvdHJlZS5tb2RlbHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3MtdHJlZS1ub2RlLWl0ZW0nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi90cmVlLW5vZGUtaXRlbS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vdHJlZS1ub2RlLWl0ZW0uY29tcG9uZW50LnNjc3MnXSxcbiAgICBhbmltYXRpb25zOiBbXG4gICAgICAgIHRyaWdnZXIoJ2ZhZGVFeHBhbmQnLCBbXG4gICAgICAgICAgICB0cmFuc2l0aW9uKCc6ZW50ZXInLCBbXG4gICAgICAgICAgICAgICAgc3R5bGUoeyBoZWlnaHQ6ICcwcHgnLCBvcGFjaXR5OiAwLCBvdmVyZmxvdzogJ2hpZGRlbicgfSksXG4gICAgICAgICAgICAgICAgYW5pbWF0ZSgnMjAwbXMgZWFzZS1vdXQnLCBzdHlsZSh7IGhlaWdodDogJyonLCBvcGFjaXR5OiAxIH0pKSxcbiAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgdHJhbnNpdGlvbignOmxlYXZlJywgW2FuaW1hdGUoJzE1MG1zIGVhc2UtaW4nLCBzdHlsZSh7IGhlaWdodDogJzBweCcsIG9wYWNpdHk6IDAgfSkpXSksXG4gICAgICAgIF0pLFxuICAgICAgICB0cmlnZ2VyKCdjaGlsZHJlbkFuaW1hdGlvbicsIFtcbiAgICAgICAgICAgIHRyYW5zaXRpb24oJzplbnRlcicsIFtcbiAgICAgICAgICAgICAgICBxdWVyeShcbiAgICAgICAgICAgICAgICAgICAgJzplbnRlcicsXG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMCwgdHJhbnNmb3JtOiAndHJhbnNsYXRlWSgtMTBweCknIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhZ2dlcig2MCwgW2FuaW1hdGUoJzIwMG1zIGVhc2Utb3V0Jywgc3R5bGUoeyBvcGFjaXR5OiAxLCB0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKDApJyB9KSldKSxcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgeyBvcHRpb25hbDogdHJ1ZSB9LFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICBdKSxcbiAgICAgICAgXSksXG4gICAgXSxcbn0pXG5leHBvcnQgY2xhc3MgVHJlZU5vZGVJdGVtQ29tcG9uZW50IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG4gICAgcHJpdmF0ZSByZWFkb25seSB0cmFuc2xhdGVTZXJ2aWNlID0gaW5qZWN0KFRyYW5zbGF0ZVNlcnZpY2UpO1xuXG4gICAgcmVhZG9ubHkgYXJpYUxldmVsID0gaW5wdXQoMCk7XG4gICAgcmVhZG9ubHkgc2hvd0NoZWNrYm94ID0gaW5wdXQoZmFsc2UpO1xuICAgIEBJbnB1dCgpIHRyZWVOb2RlSXRlbSE6IEludGVybmFsVHJlZU5vZGVJdGVtO1xuICAgIEBPdXRwdXQoKSB0cmVlTm9kZUl0ZW1DbGlja2VkID0gbmV3IEV2ZW50RW1pdHRlcjx7IGl0ZW06IEludGVybmFsVHJlZU5vZGVJdGVtOyBldmVudDogRXZlbnQgfT4oKTtcbiAgICBAT3V0cHV0KCkgdHJlZU5vZGVFZGl0ID0gbmV3IEV2ZW50RW1pdHRlcjxUcmVlTm9kZUVkaXQ+KCk7XG4gICAgQE91dHB1dCgpIG5vZGVFeHBhbmRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8SW50ZXJuYWxUcmVlTm9kZUl0ZW0+KCk7XG4gICAgQE91dHB1dCgpIG5vZGVDb2xsYXBzZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEludGVybmFsVHJlZU5vZGVJdGVtPigpO1xuXG4gICAgQFZpZXdDaGlsZCgnaW5wdXQnLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSkgaW5wdXQhOiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xuXG4gICAgZ2V0IGhhc0NoaWxkcmVuKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISEodGhpcy50cmVlTm9kZUl0ZW0/LmNoaWxkcmVuICYmIHRoaXMudHJlZU5vZGVJdGVtLmNoaWxkcmVuLmxlbmd0aCA+IDApO1xuICAgIH1cblxuICAgIGdldCBlZGl0YWJsZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHJlZU5vZGVJdGVtPy5lZGl0YWJsZSB8fCBmYWxzZTtcbiAgICB9XG5cbiAgICBnZXQgYXJpYUxhYmVsKCkge1xuICAgICAgICByZXR1cm4gYCR7dGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ3BsYXRmb3JtLmFuZ3VsYXJfY29tcG9uZW50cy5zZWxlY3QnKX0gJHt0aGlzLnRyZWVOb2RlSXRlbS5sYWJlbH1gO1xuICAgIH1cblxuICAgIGV4cGFuZE5vZGUoKSB7XG4gICAgICAgIGlmICh0aGlzLmhhc0NoaWxkcmVuICYmICF0aGlzLnRyZWVOb2RlSXRlbS5pc0V4cGFuZGVkKSB7XG4gICAgICAgICAgICB0aGlzLnRvZ2dsZUV4cGFuZGVkKHRoaXMudHJlZU5vZGVJdGVtKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbGxhcHNlTm9kZSgpIHtcbiAgICAgICAgaWYgKHRoaXMuaGFzQ2hpbGRyZW4gJiYgdGhpcy50cmVlTm9kZUl0ZW0uaXNFeHBhbmRlZCkge1xuICAgICAgICAgICAgdGhpcy50b2dnbGVFeHBhbmRlZCh0aGlzLnRyZWVOb2RlSXRlbSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkNoZWNrYm94RW50ZXIobm9kZTogSW50ZXJuYWxUcmVlTm9kZUl0ZW0pIHtcbiAgICAgICAgY29uc3QgbmV3U3RhdGUgPSBub2RlLmNoZWNrZWQgPT09IHRydWUgPyBmYWxzZSA6IHRydWU7XG4gICAgICAgIG5vZGUuY2hlY2tlZCA9IG5ld1N0YXRlO1xuICAgICAgICB0aGlzLnRyZWVOb2RlSXRlbUNsaWNrZWQuZW1pdCh7IGl0ZW06IG5vZGUsIGV2ZW50OiBuZXcgS2V5Ym9hcmRFdmVudCgna2V5ZG93bicsIHsga2V5OiAnRW50ZXInIH0pIH0pO1xuICAgIH1cblxuICAgIGhhbmRsZVRyZWVOb2RlSXRlbUNsaWNrKGV2ZW50OiBFdmVudCwgdHJlZU5vZGVJdGVtPzogSW50ZXJuYWxUcmVlTm9kZUl0ZW0pIHtcbiAgICAgICAgY29uc3QgaXRlbSA9IHRyZWVOb2RlSXRlbSB8fCB0aGlzLnRyZWVOb2RlSXRlbTtcbiAgICAgICAgdGhpcy50cmVlTm9kZUl0ZW1DbGlja2VkLmVtaXQoeyBpdGVtLCBldmVudCB9KTtcbiAgICB9XG5cbiAgICBoYW5kbGVUcmVlTm9kZUl0ZW1DbGlja2VkKHsgZXZlbnQsIGl0ZW0gfTogeyBldmVudDogRXZlbnQ7IGl0ZW06IEludGVybmFsVHJlZU5vZGVJdGVtIH0pIHtcbiAgICAgICAgaWYgKGl0ZW0uaXNFZGl0aW5nKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5oYW5kbGVUcmVlTm9kZUl0ZW1DbGljayhldmVudCwgaXRlbSk7XG4gICAgfVxuXG4gICAgdG9nZ2xlRXhwYW5kZWQodHJlZU5vZGVJdGVtOiBJbnRlcm5hbFRyZWVOb2RlSXRlbSkge1xuICAgICAgICB0cmVlTm9kZUl0ZW0uaXNFeHBhbmRlZCA9ICF0cmVlTm9kZUl0ZW0uaXNFeHBhbmRlZDtcbiAgICAgICAgaWYgKHRyZWVOb2RlSXRlbS5pc0V4cGFuZGVkKSB7XG4gICAgICAgICAgICB0aGlzLm5vZGVFeHBhbmRlZC5lbWl0KHRyZWVOb2RlSXRlbSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm5vZGVDb2xsYXBzZWQuZW1pdCh0cmVlTm9kZUl0ZW0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdG9nZ2xlRWRpdGluZygkZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgdGhpcy50cmVlTm9kZUl0ZW0uaXNFZGl0aW5nID0gIXRoaXMudHJlZU5vZGVJdGVtLmlzRWRpdGluZztcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICBpZiAodGhpcy50cmVlTm9kZUl0ZW0uaXNFZGl0aW5nKSB7XG4gICAgICAgICAgICB0aGlzLnRyZWVOb2RlSXRlbS5lZGl0TmV3VmFsdWUgPSB0aGlzLnRyZWVOb2RlSXRlbS5sYWJlbDtcbiAgICAgICAgICAgIGNvbnN0IGlucHV0ID0gdGhpcy5pbnB1dD8ubmF0aXZlRWxlbWVudDtcbiAgICAgICAgICAgIGlucHV0Py5mb2N1cygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY2FuY2VsRWRpdCgkZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgdGhpcy50cmVlTm9kZUl0ZW0uaXNFZGl0aW5nID0gZmFsc2U7XG4gICAgICAgIHRoaXMudHJlZU5vZGVJdGVtLmVkaXROZXdWYWx1ZSA9ICcnO1xuICAgICAgICB0aGlzLnRyZWVOb2RlSXRlbS5lZGl0UHJldmlvdXNWYWx1ZSA9ICcnO1xuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgc2F2ZUVkaXQoJGV2ZW50OiBFdmVudCkge1xuICAgICAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIHRoaXMudHJlZU5vZGVJdGVtLmlzRWRpdGluZyA9IGZhbHNlO1xuICAgICAgICBpZiAoIXRoaXMudHJlZU5vZGVJdGVtLmVkaXROZXdWYWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy50cmVlTm9kZUl0ZW0uZWRpdFByZXZpb3VzVmFsdWUgPSB0aGlzLnRyZWVOb2RlSXRlbS5sYWJlbDtcbiAgICAgICAgdGhpcy50cmVlTm9kZUl0ZW0ubGFiZWwgPSB0aGlzLnRyZWVOb2RlSXRlbS5lZGl0TmV3VmFsdWU7XG5cbiAgICAgICAgY29uc3QgcmV2ZXJ0QWN0aW9uID0gKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy50cmVlTm9kZUl0ZW0ubGFiZWwgPSB0aGlzLnRyZWVOb2RlSXRlbS5lZGl0UHJldmlvdXNWYWx1ZSBhcyBzdHJpbmc7XG4gICAgICAgICAgICB0aGlzLnRyZWVOb2RlSXRlbS5pc0VkaXRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy50cmVlTm9kZUVkaXQuZW1pdCh7XG4gICAgICAgICAgICByZXZlcnRBY3Rpb24sXG4gICAgICAgICAgICBpdGVtOiB0aGlzLnRyZWVOb2RlSXRlbSxcbiAgICAgICAgICAgIG5ld1ZhbHVlOiB0aGlzLnRyZWVOb2RlSXRlbS5lZGl0TmV3VmFsdWUsXG4gICAgICAgICAgICBwcmV2aW91c1ZhbHVlOiB0aGlzLnRyZWVOb2RlSXRlbS5lZGl0UHJldmlvdXNWYWx1ZSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgdHJlZU5vZGVFZGl0Q2hpbGRFdmVudChwYXlsb2FkOiBUcmVlTm9kZUVkaXQpIHtcbiAgICAgICAgdGhpcy50cmVlTm9kZUVkaXQuZW1pdChwYXlsb2FkKTtcbiAgICB9XG59XG4iLCJAaWYgKHRyZWVOb2RlSXRlbSkge1xuICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJ0cmVlLW5vZGUtaXRlbVwiXG4gICAgICAgIHJvbGU9XCJ0cmVlaXRlbVwiXG4gICAgICAgIFtjbGFzcy50cmVlLW5vZGUtaXRlbS1zZWxlY3RlZF09XCJ0cmVlTm9kZUl0ZW0uY2hlY2tlZFwiXG4gICAgICAgIFtjbGFzcy5zZWxlY3RhYmxlXT1cImhhc0NoaWxkcmVuXCJcbiAgICAgICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJoYXNDaGlsZHJlbiA/IHRyZWVOb2RlSXRlbS5pc0V4cGFuZGVkIDogbnVsbFwiXG4gICAgICAgIFthdHRyLmFyaWEtc2VsZWN0ZWRdPVwidHJlZU5vZGVJdGVtLmNoZWNrZWQgPT09IHRydWVcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInRyZWVOb2RlSXRlbS5sYWJlbFwiXG4gICAgICAgIFthdHRyLmFyaWEtbGV2ZWxdPVwiYXJpYUxldmVsKClcIlxuICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJoYW5kbGVUcmVlTm9kZUl0ZW1DbGljaygkZXZlbnQpXCJcbiAgICAgICAgKGtleWRvd24uYXJyb3dSaWdodCk9XCJleHBhbmROb2RlKClcIlxuICAgICAgICAoa2V5ZG93bi5hcnJvd0xlZnQpPVwiY29sbGFwc2VOb2RlKClcIlxuICAgID5cbiAgICAgICAgQGlmIChoYXNDaGlsZHJlbiB8fCB0cmVlTm9kZUl0ZW0ubGVhZiA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYXJyb3dcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVFeHBhbmRlZCh0cmVlTm9kZUl0ZW0pXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBAaWYgKCF0cmVlTm9kZUl0ZW0uaXNFeHBhbmRlZCkge1xuICAgICAgICAgICAgICAgICAgICA8aSBbY2xhc3NdPVwidHJlZU5vZGVJdGVtLmNvbGxhcHNlZEljb24gfHwgJ2ZhcyBmYS1jaGV2cm9uLXJpZ2h0J1wiPjwvaT5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgQGlmICh0cmVlTm9kZUl0ZW0uaXNFeHBhbmRlZCkge1xuICAgICAgICAgICAgICAgICAgICA8aSBbY2xhc3NdPVwidHJlZU5vZGVJdGVtLmV4cGFuZGVkSWNvbiB8fCAnZmFzIGZhLWNoZXZyb24tZG93bidcIj48L2k+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cblxuICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cInRyZWUtbm9kZS1pdGVtLXRleHRcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImhhbmRsZVRyZWVOb2RlSXRlbUNsaWNrKCRldmVudClcIlxuICAgICAgICA+XG4gICAgICAgICAgICBAaWYgKHRyZWVOb2RlSXRlbS5pY29uIHx8IHRyZWVOb2RlSXRlbS5pc0VkaXRpbmcpIHtcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRyZWUtbm9kZS1pdGVtLXRleHQtaWNvblwiPlxuICAgICAgICAgICAgICAgICAgICBAaWYgKHRyZWVOb2RlSXRlbS5pY29uICYmICF0cmVlTm9kZUl0ZW0uaXNFZGl0aW5nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBbY2xhc3NdPVwidHJlZU5vZGVJdGVtLmljb25cIj48L2k+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgQGlmICh0cmVlTm9kZUl0ZW0uaXNFZGl0aW5nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmFzIGZhLWVkaXQgZWRpdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNhdmVFZGl0KCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgQGlmIChzaG93Q2hlY2tib3goKSAmJiAhdHJlZU5vZGVJdGVtLmlzRWRpdGluZykge1xuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidHJlZS1ub2RlLWl0ZW0tdGV4dC1jaGVja2JveFwiPlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJ0cmVlTm9kZUl0ZW0uY2hlY2tlZCA9PT0gdHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5kZXRlcm1pbmF0ZV09XCJ0cmVlTm9kZUl0ZW0uY2hlY2tlZCA9PT0gbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWNoZWNrZWRdPVwidHJlZU5vZGVJdGVtLmNoZWNrZWQgPT09IG51bGwgPyAnbWl4ZWQnIDogdHJlZU5vZGVJdGVtLmNoZWNrZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhTGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgcm9sZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJvbkNoZWNrYm94RW50ZXIodHJlZU5vZGVJdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRyZWUtbm9kZS1pdGVtLXRleHQtbGFiZWxcIj5cbiAgICAgICAgICAgICAgICBAaWYgKHRyZWVOb2RlSXRlbS5pc0VkaXRpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAjaW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBJbnB1dFRleHRcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidHJlZS1ub2RlLWl0ZW0tdGV4dC1pbnB1dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInRyZWVOb2RlSXRlbS5lZGl0TmV3VmFsdWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwic2F2ZUVkaXQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bi5lc2NhcGUpPVwiY2FuY2VsRWRpdCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkVkaXRhciBub21lIGRvIGl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1saXZlPVwicG9saXRlXCJcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICB9IEBlbHNlIGlmICghdHJlZU5vZGVJdGVtLmlzRWRpdGluZykge1xuICAgICAgICAgICAgICAgICAgICB7eyB0cmVlTm9kZUl0ZW0ubGFiZWwgfX1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgIEBpZiAoZWRpdGFibGUpIHtcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRyZWUtbm9kZS1pdGVtLXRleHQtZWRpdGFibGVcIj5cbiAgICAgICAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmFzIGZhLXBlbmNpbC1hbHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUVkaXRpbmcoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiRWRpdGFyIGl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvaT5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxufVxuXG5AaWYgKGhhc0NoaWxkcmVuICYmIHRyZWVOb2RlSXRlbS5pc0V4cGFuZGVkKSB7XG4gICAgPGRpdlxuICAgICAgICBAZmFkZUV4cGFuZFxuICAgICAgICBjbGFzcz1cImNoaWxkXCJcbiAgICAgICAgcm9sZT1cImdyb3VwXCJcbiAgICAgICAgQGNoaWxkcmVuQW5pbWF0aW9uXG4gICAgPlxuICAgICAgICBAZm9yIChjaGlsZCBvZiB0cmVlTm9kZUl0ZW0uY2hpbGRyZW47IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgPHMtdHJlZS1ub2RlLWl0ZW1cbiAgICAgICAgICAgICAgICBbc2hvd0NoZWNrYm94XT1cInNob3dDaGVja2JveCgpXCJcbiAgICAgICAgICAgICAgICBbdHJlZU5vZGVJdGVtXT1cImNoaWxkXCJcbiAgICAgICAgICAgICAgICBbYXJpYUxldmVsXT1cImFyaWFMZXZlbCgpICsgMVwiXG4gICAgICAgICAgICAgICAgKHRyZWVOb2RlSXRlbUNsaWNrZWQpPVwiaGFuZGxlVHJlZU5vZGVJdGVtQ2xpY2tlZCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAodHJlZU5vZGVFZGl0KT1cInRyZWVOb2RlRWRpdENoaWxkRXZlbnQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKG5vZGVFeHBhbmRlZCk9XCJub2RlRXhwYW5kZWQuZW1pdCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAobm9kZUNvbGxhcHNlZCk9XCJub2RlQ29sbGFwc2VkLmVtaXQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlsZC1pdGVtXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgIH1cbiAgICA8L2Rpdj5cbn1cblxuIl19
@@ -1,4 +1,4 @@
1
- import { Component, EventEmitter, HostBinding, HostListener, Input, Output, ViewChildren, } from '@angular/core';
1
+ import { ChangeDetectorRef, Component, ElementRef, EventEmitter, HostBinding, HostListener, Input, Output, ViewChildren, inject } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  import * as i1 from "@angular/common";
4
4
  /**
@@ -19,8 +19,8 @@ import * as i1 from "@angular/common";
19
19
  * @category Navegação
20
20
  */
21
21
  export class WorkspaceSwitchComponent {
22
- eRef;
23
- changeDetectorRef;
22
+ eRef = inject(ElementRef);
23
+ changeDetectorRef = inject(ChangeDetectorRef);
24
24
  /**
25
25
  * @description Lista de workspaces disponíveis para seleção. Campo obrigatório.
26
26
  * Cada item deve implementar a interface `Workspace`.
@@ -71,10 +71,6 @@ export class WorkspaceSwitchComponent {
71
71
  selectedItemIndex = 0;
72
72
  currentItemIndex = 0;
73
73
  _open = false;
74
- constructor(eRef, changeDetectorRef) {
75
- this.eRef = eRef;
76
- this.changeDetectorRef = changeDetectorRef;
77
- }
78
74
  tabindex = 0;
79
75
  onClickout(event) {
80
76
  if (!this.eRef.nativeElement.contains(event.target)) {
@@ -148,13 +144,13 @@ export class WorkspaceSwitchComponent {
148
144
  currentItem.nativeElement.scrollIntoView({ behavior: 'smooth', block: 'nearest' });
149
145
  }
150
146
  }
151
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: WorkspaceSwitchComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
147
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: WorkspaceSwitchComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
152
148
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: WorkspaceSwitchComponent, selector: "s-workspace-switch", inputs: { workspaces: "workspaces", footerButtonLabel: "footerButtonLabel", showFooterButton: "showFooterButton", disabled: "disabled" }, outputs: { footerButtonClicked: "footerButtonClicked", selected: "selected" }, host: { listeners: { "document:click": "onClickout($event)", "keydown": "onKeydown($event)" }, properties: { "attr.tabindex": "this.tabindex" } }, viewQueries: [{ propertyName: "listItems", predicate: ["listItem"], descendants: true }], ngImport: i0, template: "<div\n class=\"workspace-switch\"\n [ngClass]=\"{ 'workspace-switch--disabled': disabled }\"\n (blur)=\"buttonOnBlur()\"\n>\n <div\n class=\"button\"\n (click)=\"open = !open\"\n >\n <div class=\"item\">\n <span class=\"title\">{{ workspaces[selectedItemIndex].title }}</span>\n <span class=\"subtitle\">{{ workspaces[selectedItemIndex].subtitle }}</span>\n </div>\n <div class=\"icons\">\n <span class=\"fas fa-chevron-up\"></span>\n <span class=\"fas fa-chevron-down\"></span>\n </div>\n </div>\n <div\n *ngIf=\"!disabled && open\"\n class=\"drop-panel\"\n >\n <ul\n id=\"workspace-list\"\n class=\"workspace-list\"\n [ngStyle]=\"{ 'max-height': height + 'px' }\"\n >\n\n @for(workspace of workspaces; track workspace.id; let i = $index) {\n <li\n #listItem\n class=\"workspace\"\n [ngClass]=\"{\n 'workspace--focused': i === currentItemIndex && !workspace.disabled,\n 'workspace--disabled': workspace.disabled,\n }\"\n (click)=\"onSelectItem(workspace)\"\n >\n <div class=\"item\">\n <span class=\"title\">{{ workspace.title }}</span>\n <span class=\"subtitle\">{{ workspace.subtitle }}</span>\n </div>\n\n @if (i === selectedItemIndex) {\n <span class=\"active-icon fas fa-check\"></span>\n }\n </li>\n }\n\n </ul>\n <div\n *ngIf=\"showFooterButton\"\n class=\"footer\"\n >\n <div\n class=\"footer__button\"\n (click)=\"onFooterButtonClick()\"\n >\n <span class=\"footer__button__icon fas fa-plus\"></span>\n <span class=\"footer__button__title\">{{ footerButtonLabel }}</span>\n </div>\n </div>\n </div>\n</div>\n", styles: [".workspace-switch{border-radius:4px;border:1px solid transparent;width:324px}.workspace-switch .button{align-items:center;background-color:#fff;border:none;border-radius:3px;cursor:pointer;display:flex;justify-content:space-between;-webkit-user-select:none;user-select:none;width:100%}.workspace-switch .button .icons{display:flex;flex-direction:column;justify-content:space-between;margin:0 12px}.workspace-switch .drop-panel{background-color:#fff;border-radius:4px;box-shadow:0 1px 5px #00000040;cursor:pointer;margin:20px 0;padding-top:4px;position:absolute;width:324px}.workspace-switch .drop-panel .workspace-list{list-style:none;overflow:auto;padding:0}.workspace-switch .drop-panel .workspace-list .workspace{align-items:center;display:flex;justify-content:space-between;-webkit-user-select:none;user-select:none}.workspace-switch .drop-panel .workspace-list .workspace .active-icon{color:#7892a1;font-size:12px;margin:0 12px}.workspace-switch .drop-panel .workspace-list .workspace--focused{background-color:#f1f7f8}.workspace-switch .drop-panel .workspace-list .workspace--disabled .item .title,.workspace-switch .drop-panel .workspace-list .workspace--disabled .item .subtitle{color:#c1c1cc}.workspace-switch .drop-panel .workspace-list .workspace:hover:not(.workspace--disabled){background-color:#f1f7f8}.workspace-switch .drop-panel .footer{border-top:1px solid #ccc;padding:12px}.workspace-switch .drop-panel .footer .footer__button{align-items:center;border:1px solid #d8d8d8;border-radius:4px;padding:8px 12px;-webkit-user-select:none;user-select:none;display:flex;justify-content:center}.workspace-switch .drop-panel .footer .footer__button .footer__button__icon{color:#333;margin-right:8px}.workspace-switch .drop-panel .footer .footer__button:active{border:1px solid #428bca}.workspace-switch .item{align-items:flex-start;display:flex;flex-direction:column;justify-content:space-between;padding:12px}.workspace-switch .item .title{color:#333;font-family:Open Sans,sans-serif;font-size:14px;font-weight:700;line-height:150%;text-transform:uppercase}.workspace-switch .item .subtitle{color:#999;font-family:Open Sans,sans-serif;font-size:12px;font-weight:400;line-height:150%}.workspace-switch:focus{border:1px solid #428bca}.workspace-switch--disabled .button{cursor:default}.workspace-switch--disabled .button .icons,.workspace-switch--disabled .item .title,.workspace-switch--disabled .item .subtitle{color:#ccc}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] });
153
149
  }
154
150
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: WorkspaceSwitchComponent, decorators: [{
155
151
  type: Component,
156
152
  args: [{ selector: 's-workspace-switch', template: "<div\n class=\"workspace-switch\"\n [ngClass]=\"{ 'workspace-switch--disabled': disabled }\"\n (blur)=\"buttonOnBlur()\"\n>\n <div\n class=\"button\"\n (click)=\"open = !open\"\n >\n <div class=\"item\">\n <span class=\"title\">{{ workspaces[selectedItemIndex].title }}</span>\n <span class=\"subtitle\">{{ workspaces[selectedItemIndex].subtitle }}</span>\n </div>\n <div class=\"icons\">\n <span class=\"fas fa-chevron-up\"></span>\n <span class=\"fas fa-chevron-down\"></span>\n </div>\n </div>\n <div\n *ngIf=\"!disabled && open\"\n class=\"drop-panel\"\n >\n <ul\n id=\"workspace-list\"\n class=\"workspace-list\"\n [ngStyle]=\"{ 'max-height': height + 'px' }\"\n >\n\n @for(workspace of workspaces; track workspace.id; let i = $index) {\n <li\n #listItem\n class=\"workspace\"\n [ngClass]=\"{\n 'workspace--focused': i === currentItemIndex && !workspace.disabled,\n 'workspace--disabled': workspace.disabled,\n }\"\n (click)=\"onSelectItem(workspace)\"\n >\n <div class=\"item\">\n <span class=\"title\">{{ workspace.title }}</span>\n <span class=\"subtitle\">{{ workspace.subtitle }}</span>\n </div>\n\n @if (i === selectedItemIndex) {\n <span class=\"active-icon fas fa-check\"></span>\n }\n </li>\n }\n\n </ul>\n <div\n *ngIf=\"showFooterButton\"\n class=\"footer\"\n >\n <div\n class=\"footer__button\"\n (click)=\"onFooterButtonClick()\"\n >\n <span class=\"footer__button__icon fas fa-plus\"></span>\n <span class=\"footer__button__title\">{{ footerButtonLabel }}</span>\n </div>\n </div>\n </div>\n</div>\n", styles: [".workspace-switch{border-radius:4px;border:1px solid transparent;width:324px}.workspace-switch .button{align-items:center;background-color:#fff;border:none;border-radius:3px;cursor:pointer;display:flex;justify-content:space-between;-webkit-user-select:none;user-select:none;width:100%}.workspace-switch .button .icons{display:flex;flex-direction:column;justify-content:space-between;margin:0 12px}.workspace-switch .drop-panel{background-color:#fff;border-radius:4px;box-shadow:0 1px 5px #00000040;cursor:pointer;margin:20px 0;padding-top:4px;position:absolute;width:324px}.workspace-switch .drop-panel .workspace-list{list-style:none;overflow:auto;padding:0}.workspace-switch .drop-panel .workspace-list .workspace{align-items:center;display:flex;justify-content:space-between;-webkit-user-select:none;user-select:none}.workspace-switch .drop-panel .workspace-list .workspace .active-icon{color:#7892a1;font-size:12px;margin:0 12px}.workspace-switch .drop-panel .workspace-list .workspace--focused{background-color:#f1f7f8}.workspace-switch .drop-panel .workspace-list .workspace--disabled .item .title,.workspace-switch .drop-panel .workspace-list .workspace--disabled .item .subtitle{color:#c1c1cc}.workspace-switch .drop-panel .workspace-list .workspace:hover:not(.workspace--disabled){background-color:#f1f7f8}.workspace-switch .drop-panel .footer{border-top:1px solid #ccc;padding:12px}.workspace-switch .drop-panel .footer .footer__button{align-items:center;border:1px solid #d8d8d8;border-radius:4px;padding:8px 12px;-webkit-user-select:none;user-select:none;display:flex;justify-content:center}.workspace-switch .drop-panel .footer .footer__button .footer__button__icon{color:#333;margin-right:8px}.workspace-switch .drop-panel .footer .footer__button:active{border:1px solid #428bca}.workspace-switch .item{align-items:flex-start;display:flex;flex-direction:column;justify-content:space-between;padding:12px}.workspace-switch .item .title{color:#333;font-family:Open Sans,sans-serif;font-size:14px;font-weight:700;line-height:150%;text-transform:uppercase}.workspace-switch .item .subtitle{color:#999;font-family:Open Sans,sans-serif;font-size:12px;font-weight:400;line-height:150%}.workspace-switch:focus{border:1px solid #428bca}.workspace-switch--disabled .button{cursor:default}.workspace-switch--disabled .button .icons,.workspace-switch--disabled .item .title,.workspace-switch--disabled .item .subtitle{color:#ccc}\n"] }]
157
- }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }], propDecorators: { workspaces: [{
153
+ }], propDecorators: { workspaces: [{
158
154
  type: Input,
159
155
  args: [{ required: true }]
160
156
  }], footerButtonLabel: [{
@@ -180,4 +176,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
180
176
  type: HostListener,
181
177
  args: ['keydown', ['$event']]
182
178
  }] } });
183
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya3NwYWNlLXN3aXRjaC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvd29ya3NwYWNlLXN3aXRjaC9zcmMvbGliL3dvcmtzcGFjZS1zd2l0Y2gvd29ya3NwYWNlLXN3aXRjaC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvd29ya3NwYWNlLXN3aXRjaC9zcmMvbGliL3dvcmtzcGFjZS1zd2l0Y2gvd29ya3NwYWNlLXN3aXRjaC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUgsU0FBUyxFQUVULFlBQVksRUFDWixXQUFXLEVBQ1gsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBRU4sWUFBWSxHQUNmLE1BQU0sZUFBZSxDQUFDOzs7QUFJdkI7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQkc7QUFNSCxNQUFNLE9BQU8sd0JBQXdCO0lBdUVaO0lBQ0E7SUF2RXJCOzs7O09BSUc7SUFFSSxVQUFVLEdBQWdCLEVBQUUsQ0FBQztJQUVwQzs7OztPQUlHO0lBRUksaUJBQWlCLEdBQUcsV0FBVyxDQUFDO0lBRXZDOzs7OztPQUtHO0lBRUksZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO0lBRS9COzs7OztPQUtHO0lBRUksUUFBUSxHQUFHLEtBQUssQ0FBQztJQUV4Qjs7T0FFRztJQUVJLG1CQUFtQixHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7SUFFaEQ7OztPQUdHO0lBRUksUUFBUSxHQUE0QixJQUFJLFlBQVksRUFBRSxDQUFDO0lBR3ZELFNBQVMsR0FBaUMsSUFBSSxDQUFDO0lBRXRELElBQVcsSUFBSTtRQUNYLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUN0QixDQUFDO0lBRUQsSUFBVyxJQUFJLENBQUMsSUFBYTtRQUN6QixJQUFJLENBQUMsS0FBSyxHQUFHLElB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V0FBVyxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZGLENBQUM7SUFDTCxDQUFDO3dHQWhLUSx3QkFBd0I7NEZBQXhCLHdCQUF3QixnZ0JDdENyQyw0bkVBZ0VBOzs0RkQxQmEsd0JBQXdCO2tCQUxwQyxTQUFTOytCQUNJLG9CQUFvQjsrR0FXdkIsVUFBVTtzQkFEaEIsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBU2xCLGlCQUFpQjtzQkFEdkIsS0FBSztnQkFVQyxnQkFBZ0I7c0JBRHRCLEtBQUs7Z0JBVUMsUUFBUTtzQkFEZCxLQUFLO2dCQU9DLG1CQUFtQjtzQkFEekIsTUFBTTtnQkFRQSxRQUFRO3NCQURkLE1BQU07Z0JBSUEsU0FBUztzQkFEZixZQUFZO3VCQUFDLFVBQVU7Z0JBNEJqQixRQUFRO3NCQURkLFdBQVc7dUJBQUMsZUFBZTtnQkFJckIsVUFBVTtzQkFEaEIsWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFRbkMsU0FBUztzQkFEZixZQUFZO3VCQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbnB1dCxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBWaWV3Q2hpbGRyZW4sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBXb3Jrc3BhY2UgfSBmcm9tICcuL21vZGVscy93b3Jrc3BhY2UnO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBDb21wb25lbnRlIGRlIHNlbGXDp8OjbyBkZSB3b3Jrc3BhY2UgZXhpYmUgdW0gZHJvcGRvd24gY29tIGEgbGlzdGEgZGUgZXNwYcOnb3MgZGUgdHJhYmFsaG9cbiAqIGRpc3BvbsOtdmVpcywgcGVybWl0aW5kbyBhbyB1c3XDoXJpbyBhbHRlcm5hciBlbnRyZSBlbGVzLiBTdXBvcnRhIG5hdmVnYcOnw6NvIHBvciB0ZWNsYWRvXG4gKiAoc2V0YXMsIEVudGVyLCBFc2NhcGUpLCBlc3RhZG8gZGVzYWJpbGl0YWRvIGUgdW0gYm90w6NvIGRlIGHDp8OjbyBjdXN0b21pesOhdmVsIG5vIHJvZGFww6kuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYGh0bWxcbiAqIDxzLXdvcmtzcGFjZS1zd2l0Y2hcbiAqICAgW3dvcmtzcGFjZXNdPVwid29ya3NwYWNlc1wiXG4gKiAgIGZvb3RlckJ1dHRvbkxhYmVsPVwiQ3JpYXIgd29ya3NwYWNlXCJcbiAqICAgKHNlbGVjdGVkKT1cIm9uV29ya3NwYWNlU2VsZWN0KCRldmVudClcIlxuICogICAoZm9vdGVyQnV0dG9uQ2xpY2tlZCk9XCJvbkNyZWF0ZSgpXCJcbiAqIC8+XG4gKiBgYGBcbiAqXG4gKiBAY2F0ZWdvcnkgTmF2ZWdhw6fDo29cbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdzLXdvcmtzcGFjZS1zd2l0Y2gnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi93b3Jrc3BhY2Utc3dpdGNoLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi93b3Jrc3BhY2Utc3dpdGNoLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFdvcmtzcGFjZVN3aXRjaENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIExpc3RhIGRlIHdvcmtzcGFjZXMgZGlzcG9uw612ZWlzIHBhcmEgc2VsZcOnw6NvLiBDYW1wbyBvYnJpZ2F0w7NyaW8uXG4gICAgICogQ2FkYSBpdGVtIGRldmUgaW1wbGVtZW50YXIgYSBpbnRlcmZhY2UgYFdvcmtzcGFjZWAuXG4gICAgICogTGFuw6dhIHVtIGVycm8gZW0gcnVudGltZSBzZSBhIGxpc3RhIGVzdGl2ZXIgdmF6aWEuXG4gICAgICovXG4gICAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSlcbiAgICBwdWJsaWMgd29ya3NwYWNlczogV29ya3NwYWNlW10gPSBbXTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBSw7N0dWxvIGV4aWJpZG8gbm8gYm90w6NvIGRlIGHDp8OjbyBsb2NhbGl6YWRvIG5vIHJvZGFww6kgZG8gZHJvcGRvd24uXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCAnQWRpY2lvbmFyJ1xuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGZvb3RlckJ1dHRvbkxhYmVsID0gJ0FkaWNpb25hcic7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gQ29udHJvbGEgYSB2aXNpYmlsaWRhZGUgZG8gYm90w6NvIGRlIGHDp8OjbyBubyByb2RhcMOpIGRvIGRyb3Bkb3duLlxuICAgICAqIFF1YW5kbyBgZmFsc2VgLCBvIGJvdMOjbyBuw6NvIMOpIHJlbmRlcml6YWRvLlxuICAgICAqXG4gICAgICogQGRlZmF1bHQgdHJ1ZVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNob3dGb290ZXJCdXR0b24gPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFF1YW5kbyBgdHJ1ZWAsIG8gY29tcG9uZW50ZSBmaWNhIGRlc2FiaWxpdGFkbzogbsOjbyBhYnJlIG8gZHJvcGRvd24sXG4gICAgICogbsOjbyBlbWl0ZSBldmVudG9zIGUgZmljYSBpbmFjZXNzw612ZWwgdmlhIHRlY2xhZG8gKGB0YWJpbmRleCA9IC0xYCkuXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGRpc2FibGVkID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gRW1pdGlkbyBxdWFuZG8gbyB1c3XDoXJpbyBjbGljYSBubyBib3TDo28gZGUgYcOnw6NvIGRvIHJvZGFww6kgZG8gZHJvcGRvd24uXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIGZvb3RlckJ1dHRvbkNsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gRW1pdGlkbyBxdWFuZG8gbyB1c3XDoXJpbyBzZWxlY2lvbmEgdW0gd29ya3NwYWNlIGRhIGxpc3RhLlxuICAgICAqIFJldG9ybmEgbyBvYmpldG8gYFdvcmtzcGFjZWAgc2VsZWNpb25hZG8uXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHNlbGVjdGVkOiBFdmVudEVtaXR0ZXI8V29ya3NwYWNlPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBWaWV3Q2hpbGRyZW4oJ2xpc3RJdGVtJylcbiAgICBwdWJsaWMgbGlzdEl0ZW1zOiBRdWVyeUxpc3Q8RWxlbWVudFJlZj4gfCBudWxsID0gbnVsbDtcblxuICAgIHB1YmxpYyBnZXQgb3BlbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX29wZW47XG4gICAgfVxuXG4gICAgcHVibGljIHNldCBvcGVuKG9wZW46IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fb3BlbiA9IG9wZW47XG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuXG4gICAgICAgIGlmIChvcGVuKSB7XG4gICAgICAgICAgICB0aGlzLl9jYWxjdWxhdGVMaXN0TWF4SGVpZ2h0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgaGVpZ2h0ID0gMDtcbiAgICBwdWJsaWMgc2VsZWN0ZWRJdGVtSW5kZXggPSAwO1xuICAgIHB1YmxpYyBjdXJyZW50SXRlbUluZGV4ID0gMDtcblxuICAgIHByaXZhdGUgX29wZW4gPSBmYWxzZTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGVSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICkge31cblxuICAgIEBIb3N0QmluZGluZygnYXR0ci50YWJpbmRleCcpXG4gICAgcHVibGljIHRhYmluZGV4ID0gMDtcblxuICAgIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNsaWNrJywgWyckZXZlbnQnXSlcbiAgICBwdWJsaWMgb25DbGlja291dChldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuZVJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpIHtcbiAgICAgICAgICAgIHRoaXMub3BlbiA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bicsIFsnJGV2ZW50J10pXG4gICAgcHVibGljIG9uS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoZXZlbnQua2V5ID09PSAnRW50ZXInIHx8IGV2ZW50LmtleSA9PT0gJyAnKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5vcGVuKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgd29ya3NwYWNlID0gdGhpcy53b3Jrc3BhY2VzW3RoaXMuc2VsZWN0ZWRJdGVtSW5kZXhdO1xuXG4gICAgICAgICAgICAgICAgaWYgKHdvcmtzcGFjZS5kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1JbmRleCA9IHRoaXMuY3VycmVudEl0ZW1JbmRleDtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkLmVtaXQodGhpcy53b3Jrc3BhY2VzW3RoaXMuc2VsZWN0ZWRJdGVtSW5kZXhdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMub3BlbiA9ICF0aGlzLm9wZW47XG4gICAgICAgIH0gZWxzZSBpZiAoZXZlbnQua2V5ID09PSAnRXNjYXBlJykge1xuICAgICAgICAgICAgdGhpcy5vcGVuID0gZmFsc2U7XG4gICAgICAgIH0gZWxzZSBpZiAoZXZlbnQua2V5ID09PSAnQXJyb3dEb3duJykge1xuICAgICAgICAgICAgaWYgKHRoaXMuY3VycmVudEl0ZW1JbmRleCA8IHRoaXMud29ya3NwYWNlcy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50SXRlbUluZGV4Kys7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2Nyb2xsVG9DdXJyZW50SXRlbSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93VXAnKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5jdXJyZW50SXRlbUluZGV4ID4gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudEl0ZW1JbmRleC0tO1xuICAgICAgICAgICAgICAgIHRoaXMuX3Njcm9sbFRvQ3VycmVudEl0ZW0oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHRoaXMudGFiaW5kZXggPSAtMTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyB2YWxpZGF0aW9ucygpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLndvcmtzcGFjZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1dvcmtzcGFjZXMgbGlzdCBpcyBlbXB0eS4nKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBidXR0b25PbkJsdXIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMub3BlbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLmN1cnJlbnRJdGVtSW5kZXggPSB0aGlzLnNlbGVjdGVkSXRlbUluZGV4O1xuICAgIH1cblxuICAgIHB1YmxpYyBvblNlbGVjdEl0ZW0od29ya3NwYWNlOiBXb3Jrc3BhY2UpOiB2b2lkIHtcbiAgICAgICAgaWYgKHdvcmtzcGFjZS5kaXNhYmxlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5vcGVuID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtSW5kZXggPSB0aGlzLndvcmtzcGFjZXMuaW5kZXhPZih3b3Jrc3BhY2UpO1xuICAgICAgICB0aGlzLmN1cnJlbnRJdGVtSW5kZXggPSB0aGlzLnNlbGVjdGVkSXRlbUluZGV4O1xuICAgICAgICB0aGlzLnNlbGVjdGVkLmVtaXQod29ya3NwYWNlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25Gb290ZXJCdXR0b25DbGljaygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vcGVuID0gZmFsc2U7XG4gICAgICAgIHRoaXMuZm9vdGVyQnV0dG9uQ2xpY2tlZC5lbWl0KCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfY2FsY3VsYXRlTGlzdE1heEhlaWdodCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgd29ya3NwYWNlTGlzdFJlZiA9IHRoaXMuZVJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJyN3b3Jrc3BhY2UtbGlzdCcpO1xuICAgICAgICBjb25zdCB7IHRvcCB9ID0gd29ya3NwYWNlTGlzdFJlZi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgICAgICB0aGlzLmhlaWdodCA9IHdpbmRvdy5pbm5lckhlaWdodCAtIHRvcCAtIDIwIC0gKHRoaXMuc2hvd0Zvb3RlckJ1dHRvbiA/IDY0IDogMCk7XG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3Njcm9sbFRvQ3VycmVudEl0ZW0oKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRJdGVtID0gdGhpcy5saXN0SXRlbXM/LnRvQXJyYXkoKVt0aGlzLmN1cnJlbnRJdGVtSW5kZXhdO1xuICAgICAgICBpZiAoY3VycmVudEl0ZW0pIHtcbiAgICAgICAgICAgIGN1cnJlbnRJdGVtLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcoeyBiZWhhdmlvcjogJ3Ntb290aCcsIGJsb2NrOiAnbmVhcmVzdCcgfSk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbiIsIjxkaXZcbiAgICBjbGFzcz1cIndvcmtzcGFjZS1zd2l0Y2hcIlxuICAgIFtuZ0NsYXNzXT1cInsgJ3dvcmtzcGFjZS1zd2l0Y2gtLWRpc2FibGVkJzogZGlzYWJsZWQgfVwiXG4gICAgKGJsdXIpPVwiYnV0dG9uT25CbHVyKClcIlxuPlxuICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJidXR0b25cIlxuICAgICAgICAoY2xpY2spPVwib3BlbiA9ICFvcGVuXCJcbiAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJpdGVtXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRpdGxlXCI+e3sgd29ya3NwYWNlc1tzZWxlY3RlZEl0ZW1JbmRleF0udGl0bGUgfX08L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN1YnRpdGxlXCI+e3sgd29ya3NwYWNlc1tzZWxlY3RlZEl0ZW1JbmRleF0uc3VidGl0bGUgfX08L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaWNvbnNcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmFzIGZhLWNoZXZyb24tdXBcIj48L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZhcyBmYS1jaGV2cm9uLWRvd25cIj48L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXZcbiAgICAgICAgKm5nSWY9XCIhZGlzYWJsZWQgJiYgb3BlblwiXG4gICAgICAgIGNsYXNzPVwiZHJvcC1wYW5lbFwiXG4gICAgPlxuICAgICAgICA8dWxcbiAgICAgICAgICAgIGlkPVwid29ya3NwYWNlLWxpc3RcIlxuICAgICAgICAgICAgY2xhc3M9XCJ3b3Jrc3BhY2UtbGlzdFwiXG4gICAgICAgICAgICBbbmdTdHlsZV09XCJ7ICdtYXgtaGVpZ2h0JzogaGVpZ2h0ICsgJ3B4JyB9XCJcbiAgICAgICAgPlxuXG4gICAgICAgICAgICBAZm9yKHdvcmtzcGFjZSBvZiB3b3Jrc3BhY2VzOyB0cmFjayB3b3Jrc3BhY2UuaWQ7IGxldCBpID0gJGluZGV4KSB7XG4gICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAgICAjbGlzdEl0ZW1cbiAgICAgICAgICAgICAgICAgICBjbGFzcz1cIndvcmtzcGFjZVwiXG4gICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAnd29ya3NwYWNlLS1mb2N1c2VkJzogaSA9PT0gY3VycmVudEl0ZW1JbmRleCAmJiAhd29ya3NwYWNlLmRpc2FibGVkLFxuICAgICAgICAgICAgICAgICAgICAgICAnd29ya3NwYWNlLS1kaXNhYmxlZCc6IHdvcmtzcGFjZS5kaXNhYmxlZCxcbiAgICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25TZWxlY3RJdGVtKHdvcmtzcGFjZSlcIlxuICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGl0bGVcIj57eyB3b3Jrc3BhY2UudGl0bGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3VidGl0bGVcIj57eyB3b3Jrc3BhY2Uuc3VidGl0bGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICBAaWYgKGkgPT09IHNlbGVjdGVkSXRlbUluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhY3RpdmUtaWNvbiBmYXMgZmEtY2hlY2tcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIH1cblxuICAgICAgICA8L3VsPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgICAqbmdJZj1cInNob3dGb290ZXJCdXR0b25cIlxuICAgICAgICAgICAgY2xhc3M9XCJmb290ZXJcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmb290ZXJfX2J1dHRvblwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uRm9vdGVyQnV0dG9uQ2xpY2soKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmb290ZXJfX2J1dHRvbl9faWNvbiBmYXMgZmEtcGx1c1wiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZvb3Rlcl9fYnV0dG9uX190aXRsZVwiPnt7IGZvb3RlckJ1dHRvbkxhYmVsIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+XG4iXX0=
179
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya3NwYWNlLXN3aXRjaC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvd29ya3NwYWNlLXN3aXRjaC9zcmMvbGliL3dvcmtzcGFjZS1zd2l0Y2gvd29ya3NwYWNlLXN3aXRjaC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvd29ya3NwYWNlLXN3aXRjaC9zcmMvbGliL3dvcmtzcGFjZS1zd2l0Y2gvd29ya3NwYWNlLXN3aXRjaC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFhLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQUkxSzs7Ozs7Ozs7Ozs7Ozs7OztHQWdCRztBQU1ILE1BQU0sT0FBTyx3QkFBd0I7SUFDaEIsSUFBSSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUMxQixpQkFBaUIsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUUvRDs7OztPQUlHO0lBRUksVUFBVSxHQUFnQixFQUFFLENBQUM7SUFFcEM7Ozs7T0FJRztJQUVJLGlCQUFpQixHQUFHLFdBQVcsQ0FBQztJQUV2Qzs7Ozs7T0FLRztJQUVJLGdCQUFnQixHQUFHLElBQUksQ0FBQztJQUUvQjs7Ozs7T0FLRztJQUVJLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFFeEI7O09BRUc7SUFFSSxtQkFBbUIsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0lBRWhEOzs7T0FHRztJQUVJLFFBQVEsR0FBNEIsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUd2RCxTQUFTLEdBQWlDLElBQUksQ0FBQztJQUV0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O1lBQ2QsV0FBVyxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZGLENBQUM7SUFDTCxDQUFDO3dHQTlKUSx3QkFBd0I7NEZBQXhCLHdCQUF3QixnZ0JDMUJyQyw0bkVBZ0VBOzs0RkR0Q2Esd0JBQXdCO2tCQUxwQyxTQUFTOytCQUNJLG9CQUFvQjs4QkFjdkIsVUFBVTtzQkFEaEIsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBU2xCLGlCQUFpQjtzQkFEdkIsS0FBSztnQkFVQyxnQkFBZ0I7c0JBRHRCLEtBQUs7Z0JBVUMsUUFBUTtzQkFEZCxLQUFLO2dCQU9DLG1CQUFtQjtzQkFEekIsTUFBTTtnQkFRQSxRQUFRO3NCQURkLE1BQU07Z0JBSUEsU0FBUztzQkFEZixZQUFZO3VCQUFDLFVBQVU7Z0JBdUJqQixRQUFRO3NCQURkLFdBQVc7dUJBQUMsZUFBZTtnQkFJckIsVUFBVTtzQkFEaEIsWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFRbkMsU0FBUztzQkFEZixZQUFZO3VCQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSG9zdEJpbmRpbmcsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBRdWVyeUxpc3QsIFZpZXdDaGlsZHJlbiwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFdvcmtzcGFjZSB9IGZyb20gJy4vbW9kZWxzL3dvcmtzcGFjZSc7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIENvbXBvbmVudGUgZGUgc2VsZcOnw6NvIGRlIHdvcmtzcGFjZSBleGliZSB1bSBkcm9wZG93biBjb20gYSBsaXN0YSBkZSBlc3Bhw6dvcyBkZSB0cmFiYWxob1xuICogZGlzcG9uw612ZWlzLCBwZXJtaXRpbmRvIGFvIHVzdcOhcmlvIGFsdGVybmFyIGVudHJlIGVsZXMuIFN1cG9ydGEgbmF2ZWdhw6fDo28gcG9yIHRlY2xhZG9cbiAqIChzZXRhcywgRW50ZXIsIEVzY2FwZSksIGVzdGFkbyBkZXNhYmlsaXRhZG8gZSB1bSBib3TDo28gZGUgYcOnw6NvIGN1c3RvbWl6w6F2ZWwgbm8gcm9kYXDDqS5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgaHRtbFxuICogPHMtd29ya3NwYWNlLXN3aXRjaFxuICogICBbd29ya3NwYWNlc109XCJ3b3Jrc3BhY2VzXCJcbiAqICAgZm9vdGVyQnV0dG9uTGFiZWw9XCJDcmlhciB3b3Jrc3BhY2VcIlxuICogICAoc2VsZWN0ZWQpPVwib25Xb3Jrc3BhY2VTZWxlY3QoJGV2ZW50KVwiXG4gKiAgIChmb290ZXJCdXR0b25DbGlja2VkKT1cIm9uQ3JlYXRlKClcIlxuICogLz5cbiAqIGBgYFxuICpcbiAqIEBjYXRlZ29yeSBOYXZlZ2HDp8Ojb1xuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3Mtd29ya3NwYWNlLXN3aXRjaCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3dvcmtzcGFjZS1zd2l0Y2guY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3dvcmtzcGFjZS1zd2l0Y2guY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgV29ya3NwYWNlU3dpdGNoQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGVSZWYgPSBpbmplY3QoRWxlbWVudFJlZik7XG4gICAgcHJpdmF0ZSByZWFkb25seSBjaGFuZ2VEZXRlY3RvclJlZiA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gTGlzdGEgZGUgd29ya3NwYWNlcyBkaXNwb27DrXZlaXMgcGFyYSBzZWxlw6fDo28uIENhbXBvIG9icmlnYXTDs3Jpby5cbiAgICAgKiBDYWRhIGl0ZW0gZGV2ZSBpbXBsZW1lbnRhciBhIGludGVyZmFjZSBgV29ya3NwYWNlYC5cbiAgICAgKiBMYW7Dp2EgdW0gZXJybyBlbSBydW50aW1lIHNlIGEgbGlzdGEgZXN0aXZlciB2YXppYS5cbiAgICAgKi9cbiAgICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KVxuICAgIHB1YmxpYyB3b3Jrc3BhY2VzOiBXb3Jrc3BhY2VbXSA9IFtdO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFLDs3R1bG8gZXhpYmlkbyBubyBib3TDo28gZGUgYcOnw6NvIGxvY2FsaXphZG8gbm8gcm9kYXDDqSBkbyBkcm9wZG93bi5cbiAgICAgKlxuICAgICAqIEBkZWZhdWx0ICdBZGljaW9uYXInXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZm9vdGVyQnV0dG9uTGFiZWwgPSAnQWRpY2lvbmFyJztcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBDb250cm9sYSBhIHZpc2liaWxpZGFkZSBkbyBib3TDo28gZGUgYcOnw6NvIG5vIHJvZGFww6kgZG8gZHJvcGRvd24uXG4gICAgICogUXVhbmRvIGBmYWxzZWAsIG8gYm90w6NvIG7Do28gw6kgcmVuZGVyaXphZG8uXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCB0cnVlXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2hvd0Zvb3RlckJ1dHRvbiA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gUXVhbmRvIGB0cnVlYCwgbyBjb21wb25lbnRlIGZpY2EgZGVzYWJpbGl0YWRvOiBuw6NvIGFicmUgbyBkcm9wZG93bixcbiAgICAgKiBuw6NvIGVtaXRlIGV2ZW50b3MgZSBmaWNhIGluYWNlc3PDrXZlbCB2aWEgdGVjbGFkbyAoYHRhYmluZGV4ID0gLTFgKS5cbiAgICAgKlxuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZGlzYWJsZWQgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBFbWl0aWRvIHF1YW5kbyBvIHVzdcOhcmlvIGNsaWNhIG5vIGJvdMOjbyBkZSBhw6fDo28gZG8gcm9kYXDDqSBkbyBkcm9wZG93bi5cbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgZm9vdGVyQnV0dG9uQ2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBFbWl0aWRvIHF1YW5kbyBvIHVzdcOhcmlvIHNlbGVjaW9uYSB1bSB3b3Jrc3BhY2UgZGEgbGlzdGEuXG4gICAgICogUmV0b3JuYSBvIG9iamV0byBgV29ya3NwYWNlYCBzZWxlY2lvbmFkby5cbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgc2VsZWN0ZWQ6IEV2ZW50RW1pdHRlcjxXb3Jrc3BhY2U+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQFZpZXdDaGlsZHJlbignbGlzdEl0ZW0nKVxuICAgIHB1YmxpYyBsaXN0SXRlbXM6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPiB8IG51bGwgPSBudWxsO1xuXG4gICAgcHVibGljIGdldCBvcGVuKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fb3BlbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0IG9wZW4ob3BlbjogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9vcGVuID0gb3BlbjtcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICAgICAgaWYgKG9wZW4pIHtcbiAgICAgICAgICAgIHRoaXMuX2NhbGN1bGF0ZUxpc3RNYXhIZWlnaHQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBoZWlnaHQgPSAwO1xuICAgIHB1YmxpYyBzZWxlY3RlZEl0ZW1JbmRleCA9IDA7XG4gICAgcHVibGljIGN1cnJlbnRJdGVtSW5kZXggPSAwO1xuXG4gICAgcHJpdmF0ZSBfb3BlbiA9IGZhbHNlO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLnRhYmluZGV4JylcbiAgICBwdWJsaWMgdGFiaW5kZXggPSAwO1xuXG4gICAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6Y2xpY2snLCBbJyRldmVudCddKVxuICAgIHB1YmxpYyBvbkNsaWNrb3V0KGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5lUmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xuICAgICAgICAgICAgdGhpcy5vcGVuID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duJywgWyckZXZlbnQnXSlcbiAgICBwdWJsaWMgb25LZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmIChldmVudC5rZXkgPT09ICdFbnRlcicgfHwgZXZlbnQua2V5ID09PSAnICcpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLm9wZW4pIHtcbiAgICAgICAgICAgICAgICBjb25zdCB3b3Jrc3BhY2UgPSB0aGlzLndvcmtzcGFjZXNbdGhpcy5zZWxlY3RlZEl0ZW1JbmRleF07XG5cbiAgICAgICAgICAgICAgICBpZiAod29ya3NwYWNlLmRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbUluZGV4ID0gdGhpcy5jdXJyZW50SXRlbUluZGV4O1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWQuZW1pdCh0aGlzLndvcmtzcGFjZXNbdGhpcy5zZWxlY3RlZEl0ZW1JbmRleF0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5vcGVuID0gIXRoaXMub3BlbjtcbiAgICAgICAgfSBlbHNlIGlmIChldmVudC5rZXkgPT09ICdFc2NhcGUnKSB7XG4gICAgICAgICAgICB0aGlzLm9wZW4gPSBmYWxzZTtcbiAgICAgICAgfSBlbHNlIGlmIChldmVudC5rZXkgPT09ICdBcnJvd0Rvd24nKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5jdXJyZW50SXRlbUluZGV4IDwgdGhpcy53b3Jrc3BhY2VzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRJdGVtSW5kZXgrKztcbiAgICAgICAgICAgICAgICB0aGlzLl9zY3JvbGxUb0N1cnJlbnRJdGVtKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoZXZlbnQua2V5ID09PSAnQXJyb3dVcCcpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmN1cnJlbnRJdGVtSW5kZXggPiAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50SXRlbUluZGV4LS07XG4gICAgICAgICAgICAgICAgdGhpcy5fc2Nyb2xsVG9DdXJyZW50SXRlbSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgdGhpcy50YWJpbmRleCA9IC0xO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHZhbGlkYXRpb25zKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMud29ya3NwYWNlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignV29ya3NwYWNlcyBsaXN0IGlzIGVtcHR5LicpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGJ1dHRvbk9uQmx1cigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vcGVuID0gZmFsc2U7XG4gICAgICAgIHRoaXMuY3VycmVudEl0ZW1JbmRleCA9IHRoaXMuc2VsZWN0ZWRJdGVtSW5kZXg7XG4gICAgfVxuXG4gICAgcHVibGljIG9uU2VsZWN0SXRlbSh3b3Jrc3BhY2U6IFdvcmtzcGFjZSk6IHZvaWQge1xuICAgICAgICBpZiAod29ya3NwYWNlLmRpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLm9wZW4gPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1JbmRleCA9IHRoaXMud29ya3NwYWNlcy5pbmRleE9mKHdvcmtzcGFjZSk7XG4gICAgICAgIHRoaXMuY3VycmVudEl0ZW1JbmRleCA9IHRoaXMuc2VsZWN0ZWRJdGVtSW5kZXg7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWQuZW1pdCh3b3Jrc3BhY2UpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkZvb3RlckJ1dHRvbkNsaWNrKCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9wZW4gPSBmYWxzZTtcbiAgICAgICAgdGhpcy5mb290ZXJCdXR0b25DbGlja2VkLmVtaXQoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9jYWxjdWxhdGVMaXN0TWF4SGVpZ2h0KCk6IHZvaWQge1xuICAgICAgICBjb25zdCB3b3Jrc3BhY2VMaXN0UmVmID0gdGhpcy5lUmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignI3dvcmtzcGFjZS1saXN0Jyk7XG4gICAgICAgIGNvbnN0IHsgdG9wIH0gPSB3b3Jrc3BhY2VMaXN0UmVmLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgICAgIHRoaXMuaGVpZ2h0ID0gd2luZG93LmlubmVySGVpZ2h0IC0gdG9wIC0gMjAgLSAodGhpcy5zaG93Rm9vdGVyQnV0dG9uID8gNjQgOiAwKTtcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfc2Nyb2xsVG9DdXJyZW50SXRlbSgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY3VycmVudEl0ZW0gPSB0aGlzLmxpc3RJdGVtcz8udG9BcnJheSgpW3RoaXMuY3VycmVudEl0ZW1JbmRleF07XG4gICAgICAgIGlmIChjdXJyZW50SXRlbSkge1xuICAgICAgICAgICAgY3VycmVudEl0ZW0ubmF0aXZlRWxlbWVudC5zY3JvbGxJbnRvVmlldyh7IGJlaGF2aW9yOiAnc21vb3RoJywgYmxvY2s6ICduZWFyZXN0JyB9KTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuIiwiPGRpdlxuICAgIGNsYXNzPVwid29ya3NwYWNlLXN3aXRjaFwiXG4gICAgW25nQ2xhc3NdPVwieyAnd29ya3NwYWNlLXN3aXRjaC0tZGlzYWJsZWQnOiBkaXNhYmxlZCB9XCJcbiAgICAoYmx1cik9XCJidXR0b25PbkJsdXIoKVwiXG4+XG4gICAgPGRpdlxuICAgICAgICBjbGFzcz1cImJ1dHRvblwiXG4gICAgICAgIChjbGljayk9XCJvcGVuID0gIW9wZW5cIlxuICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW1cIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGl0bGVcIj57eyB3b3Jrc3BhY2VzW3NlbGVjdGVkSXRlbUluZGV4XS50aXRsZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3VidGl0bGVcIj57eyB3b3Jrc3BhY2VzW3NlbGVjdGVkSXRlbUluZGV4XS5zdWJ0aXRsZSB9fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJpY29uc1wiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmYXMgZmEtY2hldnJvbi11cFwiPjwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmFzIGZhLWNoZXZyb24tZG93blwiPjwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdlxuICAgICAgICAqbmdJZj1cIiFkaXNhYmxlZCAmJiBvcGVuXCJcbiAgICAgICAgY2xhc3M9XCJkcm9wLXBhbmVsXCJcbiAgICA+XG4gICAgICAgIDx1bFxuICAgICAgICAgICAgaWQ9XCJ3b3Jrc3BhY2UtbGlzdFwiXG4gICAgICAgICAgICBjbGFzcz1cIndvcmtzcGFjZS1saXN0XCJcbiAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsgJ21heC1oZWlnaHQnOiBoZWlnaHQgKyAncHgnIH1cIlxuICAgICAgICA+XG5cbiAgICAgICAgICAgIEBmb3Iod29ya3NwYWNlIG9mIHdvcmtzcGFjZXM7IHRyYWNrIHdvcmtzcGFjZS5pZDsgbGV0IGkgPSAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAgICAgICNsaXN0SXRlbVxuICAgICAgICAgICAgICAgICAgIGNsYXNzPVwid29ya3NwYWNlXCJcbiAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICd3b3Jrc3BhY2UtLWZvY3VzZWQnOiBpID09PSBjdXJyZW50SXRlbUluZGV4ICYmICF3b3Jrc3BhY2UuZGlzYWJsZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICd3b3Jrc3BhY2UtLWRpc2FibGVkJzogd29ya3NwYWNlLmRpc2FibGVkLFxuICAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvblNlbGVjdEl0ZW0od29ya3NwYWNlKVwiXG4gICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aXRsZVwiPnt7IHdvcmtzcGFjZS50aXRsZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdWJ0aXRsZVwiPnt7IHdvcmtzcGFjZS5zdWJ0aXRsZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgIEBpZiAoaSA9PT0gc2VsZWN0ZWRJdGVtSW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFjdGl2ZS1pY29uIGZhcyBmYS1jaGVja1wiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgfVxuXG4gICAgICAgIDwvdWw+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgICpuZ0lmPVwic2hvd0Zvb3RlckJ1dHRvblwiXG4gICAgICAgICAgICBjbGFzcz1cImZvb3RlclwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZvb3Rlcl9fYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib25Gb290ZXJCdXR0b25DbGljaygpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZvb3Rlcl9fYnV0dG9uX19pY29uIGZhcyBmYS1wbHVzXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZm9vdGVyX19idXR0b25fX3RpdGxlXCI+e3sgZm9vdGVyQnV0dG9uTGFiZWwgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -44,11 +44,11 @@ class BadgeComponent {
44
44
  }
45
45
  enableTruncateText = input(false);
46
46
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: BadgeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
47
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: BadgeComponent, selector: "s-badge", inputs: { type: { classPropertyName: "type", publicName: "type", isSignal: false, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: false, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: false, isRequired: false, transformFunction: null }, text: { classPropertyName: "text", publicName: "text", isSignal: false, isRequired: false, transformFunction: null }, selectable: { classPropertyName: "selectable", publicName: "selectable", isSignal: false, isRequired: false, transformFunction: null }, iconClass: { classPropertyName: "iconClass", publicName: "iconClass", isSignal: false, isRequired: false, transformFunction: null }, iconPosition: { classPropertyName: "iconPosition", publicName: "iconPosition", isSignal: false, isRequired: false, transformFunction: null }, infoSign: { classPropertyName: "infoSign", publicName: "infoSign", isSignal: false, isRequired: false, transformFunction: null }, enableTruncateText: { classPropertyName: "enableTruncateText", publicName: "enableTruncateText", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selected: "selected" }, host: { listeners: { "click": "onClick()" } }, ngImport: i0, template: "<span\n class=\"badge\"\n [ngClass]=\"{\n 'badge--pill': type === 'pill',\n 'badge--chip': type === 'chip',\n 'badge--red': color === 'red',\n 'badge--orange': color === 'orange',\n 'badge--yellow': color === 'yellow',\n 'badge--blue': color === 'blue',\n 'badge--green': color === 'green',\n 'badge--gray': color === 'gray',\n 'badge--selectable': selectable,\n }\"\n>\n <div class=\"flex items-center gap-2\">\n @if (infoSign) {\n <span *sInfoSign=\"infoSign.text; displayTime: infoSign.displayTime ?? 0\"></span>\n }\n @if (iconClass) {\n <span\n [class.pr-2]=\"text\"\n [class]=\"'badge-icon ' + iconClass\"\n [ngClass]=\"{\n 'badge-icon--left': iconPosition === 'left' && text,\n 'badge-icon--right': iconPosition === 'right' && text,\n }\"\n >\n </span>\n }\n </div>\n @if (title) {\n <span class=\"badge-title\">{{ title }}:</span>\n }\n <span\n class=\"badge-text\"\n [class.badge-text-truncated]=\"enableTruncateText()\"\n [sTooltip]=\"text\"\n [visible]=\"enableTruncateText()\"\n [checkTruncatedText]=\"enableTruncateText()\"\n >{{ text }}</span\n >\n</span>\n\n", styles: ["::ng-deep .info-sign .info-sign__icon{padding:0!important}.badge{align-items:center;max-width:100%;display:inline-flex;min-height:1.25rem;justify-content:center;min-width:20px;padding:0 .5rem}.badge--chip{border-radius:4px}.badge--pill{border-radius:12px}.badge .badge-title{color:#212533;font-family:Open Sans,sans-serif;font-size:12px;font-weight:700;line-height:150%;margin-right:.125rem}.badge-text{color:#212533;font-family:Open Sans,sans-serif;font-size:.75rem;font-weight:400;line-height:150%}.badge-text-truncated{text-overflow:ellipsis;overflow:hidden;line-clamp:1;-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box}.badge .badge-icon{color:#212533;font-size:10px}.badge .badge-icon--right{order:2}.badge--red{background-color:#fcd2d2;border:1px solid #c13018}.badge--orange{background-color:#fce3ba;border:1px solid #f8931f}.badge--yellow{background-color:#fef4e3;border:1px solid #fcbf10}.badge--blue{background-color:#d5e8ec;border:1px solid #428bca}.badge--green{background-color:#e6ffb3;border:1px solid #0c9348}.badge--gray{background-color:#e5eaea;border:1px solid #697882}.badge--selectable{cursor:pointer;-webkit-user-select:none;user-select:none}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.InfoSignDirective, selector: "[sInfoSign]", inputs: ["sInfoSign", "sInfoSignDisplayTime", "sInfoSignFocusedInputRef", "sInfoSignUseFocusedInputRef"] }, { kind: "directive", type: i3.TooltipDirective, selector: "[sTooltip]", inputs: ["sTooltip", "tooltipPosition", "showDelay", "displayTime", "tooltipEvent", "escape", "visible", "mobileBehavior", "focusedInputRef", "checkTruncatedText"] }] });
47
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: BadgeComponent, selector: "s-badge", inputs: { type: { classPropertyName: "type", publicName: "type", isSignal: false, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: false, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: false, isRequired: false, transformFunction: null }, text: { classPropertyName: "text", publicName: "text", isSignal: false, isRequired: false, transformFunction: null }, selectable: { classPropertyName: "selectable", publicName: "selectable", isSignal: false, isRequired: false, transformFunction: null }, iconClass: { classPropertyName: "iconClass", publicName: "iconClass", isSignal: false, isRequired: false, transformFunction: null }, iconPosition: { classPropertyName: "iconPosition", publicName: "iconPosition", isSignal: false, isRequired: false, transformFunction: null }, infoSign: { classPropertyName: "infoSign", publicName: "infoSign", isSignal: false, isRequired: false, transformFunction: null }, enableTruncateText: { classPropertyName: "enableTruncateText", publicName: "enableTruncateText", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selected: "selected" }, host: { listeners: { "click": "onClick()" } }, ngImport: i0, template: "<span\n class=\"badge\"\n [ngClass]=\"{\n 'badge--pill': type === 'pill',\n 'badge--chip': type === 'chip',\n 'badge--red': color === 'red',\n 'badge--orange': color === 'orange',\n 'badge--yellow': color === 'yellow',\n 'badge--blue': color === 'blue',\n 'badge--green': color === 'green',\n 'badge--gray': color === 'gray',\n 'badge--selectable': selectable,\n }\"\n>\n @if (infoSign) {\n <span *sInfoSign=\"infoSign.text; displayTime: infoSign.displayTime ?? 0\"></span>\n }\n @if (iconClass) {\n <span\n [class]=\"'badge-icon ' + iconClass\"\n [ngClass]=\"{\n 'badge-icon--left': iconPosition === 'left' && text,\n 'badge-icon--right': iconPosition === 'right' && text,\n }\"\n >\n </span>\n }\n @if (title) {\n <span class=\"badge-title\">{{ title }}:</span>\n }\n @if (text) {\n <span\n class=\"badge-text\"\n [class.badge-text-truncated]=\"enableTruncateText()\"\n [sTooltip]=\"text\"\n [visible]=\"enableTruncateText()\"\n [checkTruncatedText]=\"enableTruncateText()\"\n >{{text}}</span>\n }\n</span>\n\n", styles: ["::ng-deep .info-sign .info-sign__icon{padding:0!important}.badge{align-items:center;max-width:100%;display:inline-flex;gap:.5rem;min-height:1.25rem;justify-content:center;min-width:20px;padding:0 .5rem}.badge--chip{border-radius:4px}.badge--pill{border-radius:12px}.badge .badge-title{color:#212533;font-family:Open Sans,sans-serif;font-size:12px;font-weight:700;line-height:150%;margin-right:.125rem}.badge-text{color:#212533;font-family:Open Sans,sans-serif;font-size:.75rem;font-weight:400;line-height:150%}.badge-text-truncated{text-overflow:ellipsis;overflow:hidden;line-clamp:1;-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box}.badge .badge-icon{color:#212533;font-size:10px}.badge .badge-icon--right{order:2}.badge--red{background-color:#fcd2d2;border:1px solid #c13018}.badge--orange{background-color:#fce3ba;border:1px solid #f8931f}.badge--yellow{background-color:#fef4e3;border:1px solid #fcbf10}.badge--blue{background-color:#d5e8ec;border:1px solid #428bca}.badge--green{background-color:#e6ffb3;border:1px solid #0c9348}.badge--gray{background-color:#e5eaea;border:1px solid #697882}.badge--selectable{cursor:pointer;-webkit-user-select:none;user-select:none}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.InfoSignDirective, selector: "[sInfoSign]", inputs: ["sInfoSign", "sInfoSignDisplayTime", "sInfoSignFocusedInputRef", "sInfoSignUseFocusedInputRef"] }, { kind: "directive", type: i3.TooltipDirective, selector: "[sTooltip]", inputs: ["sTooltip", "tooltipPosition", "showDelay", "displayTime", "tooltipEvent", "escape", "visible", "mobileBehavior", "focusedInputRef", "checkTruncatedText"] }] });
48
48
  }
49
49
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: BadgeComponent, decorators: [{
50
50
  type: Component,
51
- args: [{ selector: 's-badge', template: "<span\n class=\"badge\"\n [ngClass]=\"{\n 'badge--pill': type === 'pill',\n 'badge--chip': type === 'chip',\n 'badge--red': color === 'red',\n 'badge--orange': color === 'orange',\n 'badge--yellow': color === 'yellow',\n 'badge--blue': color === 'blue',\n 'badge--green': color === 'green',\n 'badge--gray': color === 'gray',\n 'badge--selectable': selectable,\n }\"\n>\n <div class=\"flex items-center gap-2\">\n @if (infoSign) {\n <span *sInfoSign=\"infoSign.text; displayTime: infoSign.displayTime ?? 0\"></span>\n }\n @if (iconClass) {\n <span\n [class.pr-2]=\"text\"\n [class]=\"'badge-icon ' + iconClass\"\n [ngClass]=\"{\n 'badge-icon--left': iconPosition === 'left' && text,\n 'badge-icon--right': iconPosition === 'right' && text,\n }\"\n >\n </span>\n }\n </div>\n @if (title) {\n <span class=\"badge-title\">{{ title }}:</span>\n }\n <span\n class=\"badge-text\"\n [class.badge-text-truncated]=\"enableTruncateText()\"\n [sTooltip]=\"text\"\n [visible]=\"enableTruncateText()\"\n [checkTruncatedText]=\"enableTruncateText()\"\n >{{ text }}</span\n >\n</span>\n\n", styles: ["::ng-deep .info-sign .info-sign__icon{padding:0!important}.badge{align-items:center;max-width:100%;display:inline-flex;min-height:1.25rem;justify-content:center;min-width:20px;padding:0 .5rem}.badge--chip{border-radius:4px}.badge--pill{border-radius:12px}.badge .badge-title{color:#212533;font-family:Open Sans,sans-serif;font-size:12px;font-weight:700;line-height:150%;margin-right:.125rem}.badge-text{color:#212533;font-family:Open Sans,sans-serif;font-size:.75rem;font-weight:400;line-height:150%}.badge-text-truncated{text-overflow:ellipsis;overflow:hidden;line-clamp:1;-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box}.badge .badge-icon{color:#212533;font-size:10px}.badge .badge-icon--right{order:2}.badge--red{background-color:#fcd2d2;border:1px solid #c13018}.badge--orange{background-color:#fce3ba;border:1px solid #f8931f}.badge--yellow{background-color:#fef4e3;border:1px solid #fcbf10}.badge--blue{background-color:#d5e8ec;border:1px solid #428bca}.badge--green{background-color:#e6ffb3;border:1px solid #0c9348}.badge--gray{background-color:#e5eaea;border:1px solid #697882}.badge--selectable{cursor:pointer;-webkit-user-select:none;user-select:none}\n"] }]
51
+ args: [{ selector: 's-badge', template: "<span\n class=\"badge\"\n [ngClass]=\"{\n 'badge--pill': type === 'pill',\n 'badge--chip': type === 'chip',\n 'badge--red': color === 'red',\n 'badge--orange': color === 'orange',\n 'badge--yellow': color === 'yellow',\n 'badge--blue': color === 'blue',\n 'badge--green': color === 'green',\n 'badge--gray': color === 'gray',\n 'badge--selectable': selectable,\n }\"\n>\n @if (infoSign) {\n <span *sInfoSign=\"infoSign.text; displayTime: infoSign.displayTime ?? 0\"></span>\n }\n @if (iconClass) {\n <span\n [class]=\"'badge-icon ' + iconClass\"\n [ngClass]=\"{\n 'badge-icon--left': iconPosition === 'left' && text,\n 'badge-icon--right': iconPosition === 'right' && text,\n }\"\n >\n </span>\n }\n @if (title) {\n <span class=\"badge-title\">{{ title }}:</span>\n }\n @if (text) {\n <span\n class=\"badge-text\"\n [class.badge-text-truncated]=\"enableTruncateText()\"\n [sTooltip]=\"text\"\n [visible]=\"enableTruncateText()\"\n [checkTruncatedText]=\"enableTruncateText()\"\n >{{text}}</span>\n }\n</span>\n\n", styles: ["::ng-deep .info-sign .info-sign__icon{padding:0!important}.badge{align-items:center;max-width:100%;display:inline-flex;gap:.5rem;min-height:1.25rem;justify-content:center;min-width:20px;padding:0 .5rem}.badge--chip{border-radius:4px}.badge--pill{border-radius:12px}.badge .badge-title{color:#212533;font-family:Open Sans,sans-serif;font-size:12px;font-weight:700;line-height:150%;margin-right:.125rem}.badge-text{color:#212533;font-family:Open Sans,sans-serif;font-size:.75rem;font-weight:400;line-height:150%}.badge-text-truncated{text-overflow:ellipsis;overflow:hidden;line-clamp:1;-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box}.badge .badge-icon{color:#212533;font-size:10px}.badge .badge-icon--right{order:2}.badge--red{background-color:#fcd2d2;border:1px solid #c13018}.badge--orange{background-color:#fce3ba;border:1px solid #f8931f}.badge--yellow{background-color:#fef4e3;border:1px solid #fcbf10}.badge--blue{background-color:#d5e8ec;border:1px solid #428bca}.badge--green{background-color:#e6ffb3;border:1px solid #0c9348}.badge--gray{background-color:#e5eaea;border:1px solid #697882}.badge--selectable{cursor:pointer;-webkit-user-select:none;user-select:none}\n"] }]
52
52
  }], propDecorators: { type: [{
53
53
  type: Input
54
54
  }], color: [{
@@ -1 +1 @@
1
- {"version":3,"file":"seniorsistemas-angular-components-badge.mjs","sources":["../../projects/angular-components/badge/src/lib/badge/badge.component.ts","../../projects/angular-components/badge/src/lib/badge/badge.component.html","../../projects/angular-components/badge/src/lib/badge/badge.module.ts","../../projects/angular-components/badge/src/seniorsistemas-angular-components-badge.ts"],"sourcesContent":["import { Component, EventEmitter, HostListener, input, Input, Output } from '@angular/core';\n\nimport { BadgeColors } from './types/badge-colors';\nimport { BadgeTypes } from './types/badge-types';\n\n/**\n * @description Componente de badge (etiqueta) para exibir rótulos coloridos e clicáveis,\n * com suporte a ícones, variantes visuais (pill, tag) e estado selecionável.\n *\n * @example\n * ```html\n * <s-badge color=\"blue\" type=\"pill\" text=\"Ativo\" />\n * ```\n *\n * @category Feedback\n */\n@Component({\n selector: 's-badge',\n templateUrl: './badge.component.html',\n styleUrls: ['./badge.component.scss'],\n})\nexport class BadgeComponent {\n /** @description Variante visual do badge. @default 'pill' */\n @Input()\n public type?: BadgeTypes = 'pill';\n\n /** @description Cor do badge. @default 'blue' */\n @Input()\n public color?: BadgeColors = 'blue';\n\n /** @description Texto de título exibido no badge. */\n @Input()\n public title?: string;\n\n /** @description Texto principal exibido dentro do badge. */\n @Input()\n public text?: string;\n\n /** @description Habilita o modo selecionável, emitindo o evento `selected` ao clicar. @default false */\n @Input()\n public selectable = false;\n\n /** @description Classe CSS do ícone exibido no badge (ex.: `'fa fa-check'`). */\n @Input()\n public iconClass?: string;\n\n /** @description Posição do ícone em relação ao texto. @default 'left' */\n @Input()\n public iconPosition?: 'left' | 'right' = 'left';\n\n /** @description Configuração do info-sign exibido no badge, com texto e tempo de exibição opcional. */\n @Input() infoSign!: { text: string; displayTime?: number };\n\n /** @description Emitido ao clicar no badge, enviando o valor de `text`. */\n @Output()\n public selected = new EventEmitter<string>();\n\n @HostListener('click')\n public onClick(): void {\n this.selected.emit(this.text);\n }\n\n enableTruncateText = input(false);\n}\n\n","<span\n class=\"badge\"\n [ngClass]=\"{\n 'badge--pill': type === 'pill',\n 'badge--chip': type === 'chip',\n 'badge--red': color === 'red',\n 'badge--orange': color === 'orange',\n 'badge--yellow': color === 'yellow',\n 'badge--blue': color === 'blue',\n 'badge--green': color === 'green',\n 'badge--gray': color === 'gray',\n 'badge--selectable': selectable,\n }\"\n>\n <div class=\"flex items-center gap-2\">\n @if (infoSign) {\n <span *sInfoSign=\"infoSign.text; displayTime: infoSign.displayTime ?? 0\"></span>\n }\n @if (iconClass) {\n <span\n [class.pr-2]=\"text\"\n [class]=\"'badge-icon ' + iconClass\"\n [ngClass]=\"{\n 'badge-icon--left': iconPosition === 'left' && text,\n 'badge-icon--right': iconPosition === 'right' && text,\n }\"\n >\n </span>\n }\n </div>\n @if (title) {\n <span class=\"badge-title\">{{ title }}:</span>\n }\n <span\n class=\"badge-text\"\n [class.badge-text-truncated]=\"enableTruncateText()\"\n [sTooltip]=\"text\"\n [visible]=\"enableTruncateText()\"\n [checkTruncatedText]=\"enableTruncateText()\"\n >{{ text }}</span\n >\n</span>\n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\n\nimport { BadgeComponent } from './badge.component';\nimport { InfoSignModule } from '@seniorsistemas/angular-components/info-sign';\nimport { TooltipModule } from '@seniorsistemas/angular-components/tooltip';\nimport { TemplateModule } from '@seniorsistemas/angular-components/template';\n\n@NgModule({\n imports: [CommonModule, RouterModule, InfoSignModule, TooltipModule, TemplateModule],\n declarations: [BadgeComponent],\n exports: [BadgeComponent, RouterModule],\n})\nexport class BadgeModule {}\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"seniorsistemas-angular-components-badge.mjs","sources":["../../projects/angular-components/badge/src/lib/badge/badge.component.ts","../../projects/angular-components/badge/src/lib/badge/badge.component.html","../../projects/angular-components/badge/src/lib/badge/badge.module.ts","../../projects/angular-components/badge/src/seniorsistemas-angular-components-badge.ts"],"sourcesContent":["import { Component, EventEmitter, HostListener, input, Input, Output } from '@angular/core';\n\nimport { BadgeColors } from './types/badge-colors';\nimport { BadgeTypes } from './types/badge-types';\n\n/**\n * @description Componente de badge (etiqueta) para exibir rótulos coloridos e clicáveis,\n * com suporte a ícones, variantes visuais (pill, tag) e estado selecionável.\n *\n * @example\n * ```html\n * <s-badge color=\"blue\" type=\"pill\" text=\"Ativo\" />\n * ```\n *\n * @category Feedback\n */\n@Component({\n selector: 's-badge',\n templateUrl: './badge.component.html',\n styleUrls: ['./badge.component.scss'],\n})\nexport class BadgeComponent {\n /** @description Variante visual do badge. @default 'pill' */\n @Input()\n public type?: BadgeTypes = 'pill';\n\n /** @description Cor do badge. @default 'blue' */\n @Input()\n public color?: BadgeColors = 'blue';\n\n /** @description Texto de título exibido no badge. */\n @Input()\n public title?: string;\n\n /** @description Texto principal exibido dentro do badge. */\n @Input()\n public text?: string;\n\n /** @description Habilita o modo selecionável, emitindo o evento `selected` ao clicar. @default false */\n @Input()\n public selectable = false;\n\n /** @description Classe CSS do ícone exibido no badge (ex.: `'fa fa-check'`). */\n @Input()\n public iconClass?: string;\n\n /** @description Posição do ícone em relação ao texto. @default 'left' */\n @Input()\n public iconPosition?: 'left' | 'right' = 'left';\n\n /** @description Configuração do info-sign exibido no badge, com texto e tempo de exibição opcional. */\n @Input() infoSign!: { text: string; displayTime?: number };\n\n /** @description Emitido ao clicar no badge, enviando o valor de `text`. */\n @Output()\n public selected = new EventEmitter<string>();\n\n @HostListener('click')\n public onClick(): void {\n this.selected.emit(this.text);\n }\n\n enableTruncateText = input(false);\n}\n\n","<span\n class=\"badge\"\n [ngClass]=\"{\n 'badge--pill': type === 'pill',\n 'badge--chip': type === 'chip',\n 'badge--red': color === 'red',\n 'badge--orange': color === 'orange',\n 'badge--yellow': color === 'yellow',\n 'badge--blue': color === 'blue',\n 'badge--green': color === 'green',\n 'badge--gray': color === 'gray',\n 'badge--selectable': selectable,\n }\"\n>\n @if (infoSign) {\n <span *sInfoSign=\"infoSign.text; displayTime: infoSign.displayTime ?? 0\"></span>\n }\n @if (iconClass) {\n <span\n [class]=\"'badge-icon ' + iconClass\"\n [ngClass]=\"{\n 'badge-icon--left': iconPosition === 'left' && text,\n 'badge-icon--right': iconPosition === 'right' && text,\n }\"\n >\n </span>\n }\n @if (title) {\n <span class=\"badge-title\">{{ title }}:</span>\n }\n @if (text) {\n <span\n class=\"badge-text\"\n [class.badge-text-truncated]=\"enableTruncateText()\"\n [sTooltip]=\"text\"\n [visible]=\"enableTruncateText()\"\n [checkTruncatedText]=\"enableTruncateText()\"\n >{{text}}</span>\n }\n</span>\n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\n\nimport { BadgeComponent } from './badge.component';\nimport { InfoSignModule } from '@seniorsistemas/angular-components/info-sign';\nimport { TooltipModule } from '@seniorsistemas/angular-components/tooltip';\nimport { TemplateModule } from '@seniorsistemas/angular-components/template';\n\n@NgModule({\n imports: [CommonModule, RouterModule, InfoSignModule, TooltipModule, TemplateModule],\n declarations: [BadgeComponent],\n exports: [BadgeComponent, RouterModule],\n})\nexport class BadgeModule {}\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { input, inject, Component, Input, NgModule } from '@angular/core';
3
- import * as i1$1 from '@angular/router';
4
- import { Router, RouterModule, NavigationEnd, PRIMARY_OUTLET } from '@angular/router';
5
- import * as i2$1 from '@seniorsistemas/angular-components/common/deprecated-selector';
3
+ import * as i3 from '@angular/router';
4
+ import { Router, RouterModule, ActivatedRoute, NavigationEnd, PRIMARY_OUTLET } from '@angular/router';
5
+ import * as i1$1 from '@seniorsistemas/angular-components/common/deprecated-selector';
6
6
  import { DEPRECATED_CONFIG, DeprecatedSelectorDirective } from '@seniorsistemas/angular-components/common/deprecated-selector';
7
7
  import { Subject } from 'rxjs';
8
8
  import { takeUntil, filter } from 'rxjs/operators';
@@ -42,7 +42,7 @@ class BreadcrumbListComponent {
42
42
  }
43
43
  }
44
44
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: BreadcrumbListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
45
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: BreadcrumbListComponent, isStandalone: true, selector: "s-breadcrumb-list", inputs: { items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: "<nav\n [attr.aria-label]=\"'platform.angular_components.breadcrumb_aria_label' | translate\"\n class=\"mb-4 mt-4\"\n>\n <ol class=\"flex select-none flex-wrap items-center gap-3 pb-3 pt-3 [&_li]:font-open-sans [&_li]:text-sm\">\n @for (breadcrumbItem of items(); track $index; let first = $first; let last = $last) {\n <li class=\"flex items-center gap-3\">\n @if (!first) {\n <i\n class=\"fas fa-chevron-right\"\n aria-hidden=\"true\"\n ></i>\n }\n\n <ng-template #iconTemplate>\n <i\n [class]=\"breadcrumbItem.icon + (first ? ' text-criticality-blue' : '')\"\n aria-hidden=\"true\"\n ></i>\n </ng-template>\n\n @if (first && breadcrumbItem.icon && breadcrumbItem.disabledIcon) {\n <span\n class=\"flex items-center gap-1\"\n aria-hidden=\"true\"\n >\n <i\n [class]=\"breadcrumbItem.icon + ' text-grayscale-30'\"\n aria-hidden=\"true\"\n ></i>\n </span>\n }\n\n @if (breadcrumbItem.url) {\n <a\n [href]=\"breadcrumbItem.url\"\n [target]=\"breadcrumbItem.target\"\n class=\"flex items-center gap-1 text-criticality-blue\"\n [attr.aria-current]=\"last ? 'page' : null\"\n [attr.aria-label]=\"\n (first ? 'In\u00EDcio: ' : 'Navegar para ') +\n breadcrumbItem.label +\n (last ? ' (p\u00E1gina atual)' : '')\n \"\n >\n @if (breadcrumbItem.icon && !(first && breadcrumbItem.disabledIcon)) {\n <ng-container *ngTemplateOutlet=\"iconTemplate\"></ng-container>\n }\n @if (breadcrumbItem.label && !breadcrumbItem.hideLabel && !first) {\n <span>{{ breadcrumbItem.label }}</span>\n <span class=\"sr-only\"> (link externo)</span>\n }\n </a>\n } @else if (breadcrumbItem.routerLink && !breadcrumbItem.disabled) {\n <a\n [routerLink]=\"breadcrumbItem.routerLink\"\n [queryParams]=\"breadcrumbItem.queryParams\"\n [queryParamsHandling]=\"breadcrumbItem.queryParams ? null : 'preserve'\"\n [target]=\"breadcrumbItem.target\"\n (sInteractiveContent)=\"onActivateRoute(breadcrumbItem)\"\n class=\"flex cursor-pointer items-center gap-1 text-primary hover:no-underline\"\n [attr.aria-current]=\"last ? 'page' : null\"\n [attr.aria-label]=\"\n (first ? 'In\u00EDcio: ' : '') + breadcrumbItem.label + (last ? ' (p\u00E1gina atual)' : '')\n \"\n >\n @if (breadcrumbItem.icon && !(first && breadcrumbItem.disabledIcon)) {\n <ng-container *ngTemplateOutlet=\"iconTemplate\"></ng-container>\n }\n @if (breadcrumbItem.label && !breadcrumbItem.hideLabel) {\n <span>{{ breadcrumbItem.label }}</span>\n <span class=\"sr-only\"> (navega\u00E7\u00E3o interna)</span>\n }\n </a>\n } @else {\n <span\n class=\"flex items-center gap-1\"\n [attr.aria-current]=\"last ? 'page' : null\"\n >\n @if (breadcrumbItem.icon && !(first && breadcrumbItem.disabledIcon)) {\n <ng-container *ngTemplateOutlet=\"iconTemplate\"></ng-container>\n }\n @if (breadcrumbItem.label && !breadcrumbItem.hideLabel && !first) {\n <span>{{ breadcrumbItem.label }}</span>\n }\n </span>\n }\n </li>\n }\n </ol>\n</nav>\n\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "directive", type: InteractiveContentDirective, selector: "[sInteractiveContent]", inputs: ["focusable", "disabled", "stopPropagation"], outputs: ["sInteractiveContent"] }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i1$1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }] });
45
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: BreadcrumbListComponent, isStandalone: true, selector: "s-breadcrumb-list", inputs: { items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: "<nav\n [attr.aria-label]=\"'platform.angular_components.breadcrumb_aria_label' | translate\"\n class=\"mb-4 mt-4\"\n>\n <ol class=\"flex select-none flex-wrap items-center gap-3 pb-3 pt-3 [&_li]:font-open-sans [&_li]:text-sm\">\n @for (breadcrumbItem of items(); track $index; let first = $first; let last = $last) {\n <li class=\"flex items-center gap-3\">\n @if (!first) {\n <i\n class=\"fas fa-chevron-right\"\n aria-hidden=\"true\"\n ></i>\n }\n\n <ng-template #iconTemplate>\n <i\n [class]=\"breadcrumbItem.icon + (first ? ' text-criticality-blue' : '')\"\n aria-hidden=\"true\"\n ></i>\n </ng-template>\n\n @if (first && breadcrumbItem.icon && breadcrumbItem.disabledIcon) {\n <span\n class=\"flex items-center gap-1\"\n aria-hidden=\"true\"\n >\n <i\n [class]=\"breadcrumbItem.icon + ' text-grayscale-30'\"\n aria-hidden=\"true\"\n ></i>\n </span>\n }\n\n @if (breadcrumbItem.url) {\n <a\n [href]=\"breadcrumbItem.url\"\n [target]=\"breadcrumbItem.target\"\n class=\"flex items-center gap-1 text-criticality-blue\"\n [attr.aria-current]=\"last ? 'page' : null\"\n [attr.aria-label]=\"\n (first ? 'In\u00EDcio: ' : 'Navegar para ') +\n breadcrumbItem.label +\n (last ? ' (p\u00E1gina atual)' : '')\n \"\n >\n @if (breadcrumbItem.icon && !(first && breadcrumbItem.disabledIcon)) {\n <ng-container *ngTemplateOutlet=\"iconTemplate\"></ng-container>\n }\n @if (breadcrumbItem.label && !breadcrumbItem.hideLabel && !first) {\n <span>{{ breadcrumbItem.label }}</span>\n <span class=\"sr-only\"> (link externo)</span>\n }\n </a>\n } @else if (breadcrumbItem.routerLink && !breadcrumbItem.disabled) {\n <a\n [routerLink]=\"breadcrumbItem.routerLink\"\n [queryParams]=\"breadcrumbItem.queryParams\"\n [queryParamsHandling]=\"breadcrumbItem.queryParams ? null : 'preserve'\"\n [target]=\"breadcrumbItem.target\"\n (sInteractiveContent)=\"onActivateRoute(breadcrumbItem)\"\n class=\"flex cursor-pointer items-center gap-1 text-primary hover:no-underline\"\n [attr.aria-current]=\"last ? 'page' : null\"\n [attr.aria-label]=\"\n (first ? 'In\u00EDcio: ' : '') + breadcrumbItem.label + (last ? ' (p\u00E1gina atual)' : '')\n \"\n >\n @if (breadcrumbItem.icon && !(first && breadcrumbItem.disabledIcon)) {\n <ng-container *ngTemplateOutlet=\"iconTemplate\"></ng-container>\n }\n @if (breadcrumbItem.label && !breadcrumbItem.hideLabel) {\n <span>{{ breadcrumbItem.label }}</span>\n <span class=\"sr-only\"> (navega\u00E7\u00E3o interna)</span>\n }\n </a>\n } @else {\n <span\n class=\"flex items-center gap-1\"\n [attr.aria-current]=\"last ? 'page' : null\"\n >\n @if (breadcrumbItem.icon && !(first && breadcrumbItem.disabledIcon)) {\n <ng-container *ngTemplateOutlet=\"iconTemplate\"></ng-container>\n }\n @if (breadcrumbItem.label && !breadcrumbItem.hideLabel && !first) {\n <span>{{ breadcrumbItem.label }}</span>\n }\n </span>\n }\n </li>\n }\n </ol>\n</nav>\n\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "directive", type: InteractiveContentDirective, selector: "[sInteractiveContent]", inputs: ["focusable", "disabled", "stopPropagation"], outputs: ["sInteractiveContent"] }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i3.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }] });
46
46
  }
47
47
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: BreadcrumbListComponent, decorators: [{
48
48
  type: Component,
@@ -50,16 +50,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
50
50
  }] });
51
51
 
52
52
  class DynamicBreadcrumbComponent {
53
- _activatedRoute;
54
- _router;
53
+ _activatedRoute = inject(ActivatedRoute);
54
+ _router = inject(Router);
55
55
  homeUrl;
56
56
  targetHomeUrl = '_self';
57
57
  items = [];
58
58
  title;
59
59
  _ngUnsubscribe = new Subject();
60
- constructor(_activatedRoute, _router) {
61
- this._activatedRoute = _activatedRoute;
62
- this._router = _router;
60
+ constructor() {
63
61
  this._router.events
64
62
  .pipe(takeUntil(this._ngUnsubscribe), filter((event) => event instanceof NavigationEnd))
65
63
  .subscribe(() => this._onNavigationEnd());
@@ -132,7 +130,7 @@ class DynamicBreadcrumbComponent {
132
130
  }
133
131
  return title;
134
132
  }
135
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DynamicBreadcrumbComponent, deps: [{ token: i1$1.ActivatedRoute }, { token: i1$1.Router }], target: i0.ɵɵFactoryTarget.Component });
133
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DynamicBreadcrumbComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
136
134
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: DynamicBreadcrumbComponent, isStandalone: true, selector: "s-breadcrumb, s-dynamic-breadcrumb", inputs: { homeUrl: "homeUrl", targetHomeUrl: "targetHomeUrl" }, providers: [
137
135
  {
138
136
  provide: DEPRECATED_CONFIG,
@@ -142,7 +140,7 @@ class DynamicBreadcrumbComponent {
142
140
  removalVersion: '20.0.0',
143
141
  },
144
142
  },
145
- ], hostDirectives: [{ directive: i2$1.DeprecatedSelectorDirective }], ngImport: i0, template: "<h1 class=\"sds-page-title\">{{ title }}</h1>\n<s-breadcrumb-list [items]=\"items\" />\n\n", dependencies: [{ kind: "component", type: BreadcrumbListComponent, selector: "s-breadcrumb-list", inputs: ["items"] }] });
143
+ ], hostDirectives: [{ directive: i1$1.DeprecatedSelectorDirective }], ngImport: i0, template: "<h1 class=\"sds-page-title\">{{ title }}</h1>\n<s-breadcrumb-list [items]=\"items\" />\n\n", dependencies: [{ kind: "component", type: BreadcrumbListComponent, selector: "s-breadcrumb-list", inputs: ["items"] }] });
146
144
  }
147
145
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DynamicBreadcrumbComponent, decorators: [{
148
146
  type: Component,
@@ -156,7 +154,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
156
154
  },
157
155
  },
158
156
  ], template: "<h1 class=\"sds-page-title\">{{ title }}</h1>\n<s-breadcrumb-list [items]=\"items\" />\n\n" }]
159
- }], ctorParameters: () => [{ type: i1$1.ActivatedRoute }, { type: i1$1.Router }], propDecorators: { homeUrl: [{
157
+ }], ctorParameters: () => [], propDecorators: { homeUrl: [{
160
158
  type: Input
161
159
  }], targetHomeUrl: [{
162
160
  type: Input