@seniorsistemas/angular-components 19.7.3-bugfix-ptfgap-1271-ddfd6e7b → 19.7.4

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 (646) hide show
  1. package/accordion/README.md +1 -0
  2. package/accordion/lib/accordion/accordion.component.d.ts +1 -1
  3. package/accordion/lib/accordion/accordion.module.d.ts +1 -6
  4. package/accordion/lib/accordion/components/accordion-panel/accordion-panel.component.d.ts +1 -1
  5. package/alert/README.md +1 -1
  6. package/alert/lib/alert/alert.component.d.ts +1 -1
  7. package/alert/lib/alert/alert.module.d.ts +1 -2
  8. package/autocomplete/README.md +1 -1
  9. package/autocomplete/lib/autocomplete/autocomplete.component.d.ts +1 -1
  10. package/badge/lib/badge/badge.component.d.ts +1 -1
  11. package/badge/lib/badge/badge.module.d.ts +3 -7
  12. package/bignumber-input/lib/bignumber-input/bignumber-input.directive.d.ts +1 -1
  13. package/bignumber-input/lib/bignumber-input/bignumber-input.module.d.ts +1 -2
  14. package/breadcrumb/README.md +9 -5
  15. package/button/README.md +1 -0
  16. package/calendar-mask/README.md +4 -2
  17. package/calendar-mask/lib/calendar-mask/calendar-mask.directive.d.ts +1 -1
  18. package/calendar-mask/lib/calendar-mask/calendar-mask.module.d.ts +1 -2
  19. package/card/lib/card/card.component.d.ts +1 -1
  20. package/card/lib/card/card.module.d.ts +1 -3
  21. package/chat/lib/chat/chat.component.d.ts +2 -1
  22. package/chat/lib/chat/chat.module.d.ts +3 -6
  23. package/chat/lib/chat/components/chat-message/chat-message.component.d.ts +1 -1
  24. package/checkbox-list/lib/checkbox-list/checkbox-list.component.d.ts +1 -1
  25. package/checkbox-list/lib/checkbox-list/checkbox-list.module.d.ts +1 -3
  26. package/chips/lib/chips/chip-item/chip-item.component.d.ts +1 -1
  27. package/chips/lib/chips/chips/chips.component.d.ts +1 -1
  28. package/chips/lib/chips/chips.module.d.ts +1 -6
  29. package/code-editor/README.md +1 -1
  30. package/code-editor/lib/code-editor/code-editor.component.d.ts +1 -1
  31. package/code-editor/lib/code-editor/code-editor.module.d.ts +1 -3
  32. package/code-editor/lib/code-editor/core/facades/core-facade.d.ts +1 -3
  33. package/code-editor/lib/code-editor/infra/cores/codemirror-6/codemirror-6-core.d.ts +2 -12
  34. package/collapse-link/lib/collapse-link/collapse-link.component.d.ts +1 -1
  35. package/collapse-link/lib/collapse-link/collapse-link.module.d.ts +1 -2
  36. package/common/deprecated-selector/README.md +120 -47
  37. package/common/lib/svg-factory/components/iassist-icon/iassist-icon.component.d.ts +1 -1
  38. package/common/lib/svg-factory/components/senior-icon/senior-icon.component.d.ts +1 -1
  39. package/common/lib/svg-factory/svg-factory.directive.d.ts +1 -1
  40. package/common/lib/svg-factory/svg-factory.module.d.ts +1 -4
  41. package/confirm-dialog/README.md +3 -1
  42. package/content-generator/README.md +2 -2
  43. package/content-generator/lib/content-generator/content-generator.component.d.ts +2 -1
  44. package/content-generator/lib/content-generator/content-generator.module.d.ts +1 -10
  45. package/control-errors/lib/control-errors/control-errors.component.d.ts +2 -2
  46. package/control-errors/lib/control-errors/control-errors.module.d.ts +1 -3
  47. package/country-phone-picker/README.md +1 -1
  48. package/country-phone-picker/lib/country-phone-picker/country-phone-picker.component.d.ts +2 -1
  49. package/country-phone-picker/lib/country-phone-picker/country-phone-picker.module.d.ts +1 -5
  50. package/currency/README.md +1 -1
  51. package/custom-fields/lib/custom-fields/custom-fields.component.d.ts +1 -1
  52. package/custom-fields/lib/custom-fields/custom-fields.module.d.ts +1 -7
  53. package/datepicker/README.md +44 -11
  54. package/datepicker/lib/datepicker/datepicker.component.d.ts +1 -0
  55. package/dynamic-form/dynamic-form/dynamic-form.module.d.ts +3 -5
  56. package/dynamic-form/dynamic-form/form-field/fields/currency/currency-field.component.d.ts +1 -0
  57. package/editable-overlay/lib/editable-overlay/editable-overlay.directive.d.ts +1 -1
  58. package/editable-overlay/lib/editable-overlay/editable-overlay.module.d.ts +1 -2
  59. package/editor/README.md +8 -0
  60. package/empty-state/lib/empty-state/empty-state.component.d.ts +1 -1
  61. package/empty-state/lib/empty-state/empty-state.module.d.ts +1 -3
  62. package/empty-state/lib/empty-state/go-back/go-back.component.d.ts +1 -1
  63. package/esm2022/accordion/lib/accordion/accordion.component.mjs +3 -3
  64. package/esm2022/accordion/lib/accordion/accordion.module.mjs +4 -10
  65. package/esm2022/accordion/lib/accordion/components/accordion-panel/accordion-panel.component.mjs +17 -8
  66. package/esm2022/alert/lib/alert/alert.component.mjs +4 -4
  67. package/esm2022/alert/lib/alert/alert.module.mjs +4 -6
  68. package/esm2022/autocomplete/lib/autocomplete/autocomplete.component.mjs +4 -4
  69. package/esm2022/badge/lib/badge/badge.component.mjs +7 -6
  70. package/esm2022/badge/lib/badge/badge.module.mjs +4 -9
  71. package/esm2022/bignumber-input/lib/bignumber-input/bignumber-input.directive.mjs +3 -2
  72. package/esm2022/bignumber-input/lib/bignumber-input/bignumber-input.module.mjs +4 -7
  73. package/esm2022/breadcrumb/lib/breadcrumb/breadcrumb.component.mjs +6 -7
  74. package/esm2022/button/lib/button/button.component.mjs +3 -3
  75. package/esm2022/calendar-mask/lib/calendar-mask/calendar-mask.directive.mjs +3 -2
  76. package/esm2022/calendar-mask/lib/calendar-mask/calendar-mask.module.mjs +4 -6
  77. package/esm2022/card/lib/card/card.component.mjs +4 -4
  78. package/esm2022/card/lib/card/card.module.mjs +4 -7
  79. package/esm2022/chat/lib/chat/chat.component.mjs +8 -7
  80. package/esm2022/chat/lib/chat/chat.module.mjs +7 -11
  81. package/esm2022/chat/lib/chat/components/chat-message/chat-message.component.mjs +6 -6
  82. package/esm2022/checkbox/lib/checkbox/checkbox.component.mjs +4 -5
  83. package/esm2022/checkbox-list/lib/checkbox-list/checkbox-list.component.mjs +6 -7
  84. package/esm2022/checkbox-list/lib/checkbox-list/checkbox-list.module.mjs +4 -7
  85. package/esm2022/chips/lib/chips/chip-item/chip-item.component.mjs +5 -5
  86. package/esm2022/chips/lib/chips/chips/chips.component.mjs +7 -7
  87. package/esm2022/chips/lib/chips/chips.module.mjs +4 -10
  88. package/esm2022/code-editor/lib/code-editor/code-editor.component.mjs +4 -4
  89. package/esm2022/code-editor/lib/code-editor/code-editor.module.mjs +8 -11
  90. package/esm2022/code-editor/lib/code-editor/core/facades/core-facade.mjs +1 -7
  91. package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/codemirror-6-core.mjs +22 -47
  92. package/esm2022/collapse-link/lib/collapse-link/collapse-link.component.mjs +4 -4
  93. package/esm2022/collapse-link/lib/collapse-link/collapse-link.module.mjs +4 -6
  94. package/esm2022/common/lib/svg-factory/components/iassist-icon/iassist-icon.component.mjs +3 -3
  95. package/esm2022/common/lib/svg-factory/components/senior-icon/senior-icon.component.mjs +3 -3
  96. package/esm2022/common/lib/svg-factory/svg-factory.directive.mjs +4 -3
  97. package/esm2022/common/lib/svg-factory/svg-factory.module.mjs +4 -14
  98. package/esm2022/content-generator/lib/content-generator/content-generator.component.mjs +28 -16
  99. package/esm2022/content-generator/lib/content-generator/content-generator.module.mjs +4 -42
  100. package/esm2022/control-errors/lib/control-errors/control-errors.component.mjs +3 -3
  101. package/esm2022/control-errors/lib/control-errors/control-errors.module.mjs +6 -9
  102. package/esm2022/country-phone-picker/lib/country-phone-picker/country-phone-picker.component.mjs +14 -14
  103. package/esm2022/country-phone-picker/lib/country-phone-picker/country-phone-picker.module.mjs +6 -28
  104. package/esm2022/custom-fields/lib/custom-fields/custom-fields.component.mjs +6 -6
  105. package/esm2022/custom-fields/lib/custom-fields/custom-fields.module.mjs +9 -35
  106. package/esm2022/datepicker/lib/datepicker/datepicker.component.mjs +6 -3
  107. package/esm2022/dialog/lib/src/dialog/dialog.component.mjs +3 -3
  108. package/esm2022/dynamic-form/dynamic-form/dynamic-form.module.mjs +4 -6
  109. package/esm2022/dynamic-form/dynamic-form/form-field/fields/boolean/boolean-radio-field/boolean-field.component.mjs +3 -3
  110. package/esm2022/dynamic-form/dynamic-form/form-field/fields/boolean/boolean-switch-field/boolean-switch-field.component.mjs +3 -3
  111. package/esm2022/dynamic-form/dynamic-form/form-field/fields/currency/currency-field.component.mjs +5 -3
  112. package/esm2022/dynamic-form/dynamic-form/form-field/fields/radio-button/radio-button-field.component.mjs +3 -3
  113. package/esm2022/editable-overlay/lib/editable-overlay/editable-overlay.directive.mjs +3 -2
  114. package/esm2022/editable-overlay/lib/editable-overlay/editable-overlay.module.mjs +4 -6
  115. package/esm2022/editor/lib/editor/editor.component.mjs +4 -4
  116. package/esm2022/empty-state/lib/empty-state/empty-state.component.mjs +4 -4
  117. package/esm2022/empty-state/lib/empty-state/empty-state.module.mjs +4 -7
  118. package/esm2022/empty-state/lib/empty-state/go-back/go-back.component.mjs +4 -4
  119. package/esm2022/fieldset/lib/fieldset/fieldset.component.mjs +5 -5
  120. package/esm2022/fieldset/lib/fieldset/fieldset.module.mjs +4 -7
  121. package/esm2022/file-picker/lib/file-picker/file-picker.component.mjs +10 -11
  122. package/esm2022/file-picker/lib/file-picker/file-picker.module.mjs +4 -11
  123. package/esm2022/gantt/lib/gantt/components/side-table/side-table.component.mjs +5 -5
  124. package/esm2022/gantt/lib/gantt/gantt.component.mjs +4 -4
  125. package/esm2022/gantt/lib/gantt/gantt.module.mjs +4 -12
  126. package/esm2022/global-search/lib/global-search/components/dropdown/global-search-dropdown-item.component.mjs +6 -7
  127. package/esm2022/global-search/lib/global-search/global-search.component.mjs +17 -10
  128. package/esm2022/global-search/lib/global-search/global-search.module.mjs +15 -33
  129. package/esm2022/grid-menu/lib/grid-menu/components/grid-menu-item/grid-menu-item.component.mjs +5 -4
  130. package/esm2022/grid-menu/lib/grid-menu/grid-menu.component.mjs +4 -4
  131. package/esm2022/grid-menu/lib/grid-menu/grid-menu.module.mjs +4 -7
  132. package/esm2022/help-popover/lib/help-popover/help-popover/help-popover.component.mjs +5 -5
  133. package/esm2022/help-popover/lib/help-popover/help-popover.directive.mjs +3 -2
  134. package/esm2022/help-popover/lib/help-popover/help-popover.module.mjs +5 -14
  135. package/esm2022/image-cropper/lib/image-cropper/image-cropper.component.mjs +7 -8
  136. package/esm2022/image-cropper/lib/image-cropper/image-cropper.module.mjs +4 -10
  137. package/esm2022/infinite-scroll/lib/infinite-scroll/infinite-scroll.directive.mjs +4 -3
  138. package/esm2022/infinite-scroll/lib/infinite-scroll/infinite-scroll.module.mjs +4 -6
  139. package/esm2022/info-sign/lib/info-sign/components/info-sign/info-sign.component.mjs +6 -6
  140. package/esm2022/info-sign/lib/info-sign/info-sign.directive.mjs +4 -3
  141. package/esm2022/info-sign/lib/info-sign/info-sign.module.mjs +4 -8
  142. package/esm2022/inline-edit/lib/inline-edit/components/fields/inline-edit-calendar/inline-edit-calendar.component.mjs +14 -10
  143. package/esm2022/inline-edit/lib/inline-edit/components/fields/inline-edit-content-generator/inline-edit-content-generator.component.mjs +7 -6
  144. package/esm2022/inline-edit/lib/inline-edit/components/fields/inline-edit-lookup/inline-edit-lookup.component.mjs +6 -6
  145. package/esm2022/inline-edit/lib/inline-edit/components/fields/inline-edit-number/inline-edit-number.component.mjs +34 -20
  146. package/esm2022/inline-edit/lib/inline-edit/components/fields/inline-edit-text/inline-edit-text.component.mjs +6 -6
  147. package/esm2022/inline-edit/lib/inline-edit/components/fields/inline-edit-text-area/inline-edit-text-area.component.mjs +7 -7
  148. package/esm2022/inline-edit/lib/inline-edit/components/inline-edit-item/inline-edit-item.component.mjs +16 -15
  149. package/esm2022/inline-edit/lib/inline-edit/inline-edit.component.mjs +3 -3
  150. package/esm2022/inline-edit/lib/inline-edit/inline-edit.module.mjs +4 -89
  151. package/esm2022/insights/lib/insights/components/insights-card/components/insights-card-loader/insights-card-loader.component.mjs +6 -6
  152. package/esm2022/insights/lib/insights/components/insights-card/insights-card.component.mjs +11 -10
  153. package/esm2022/insights/lib/insights/components/insights-sidebar/insights-sidebar.component.mjs +7 -7
  154. package/esm2022/insights/lib/insights/insights.component.mjs +4 -5
  155. package/esm2022/insights/lib/insights/insights.module.mjs +4 -34
  156. package/esm2022/kanban/lib/kanban/components/kanban-column/kanban-column.component.mjs +18 -22
  157. package/esm2022/kanban/lib/kanban/components/kanban-item/kanban-item.component.mjs +9 -8
  158. package/esm2022/kanban/lib/kanban/components/kanban-item-dragging/kanban-item-dragging.component.mjs +6 -6
  159. package/esm2022/kanban/lib/kanban/kanban.component.mjs +20 -11
  160. package/esm2022/kanban/lib/kanban/kanban.module.mjs +4 -41
  161. package/esm2022/label-value/lib/label-value/label-value.component.mjs +8 -8
  162. package/esm2022/label-value/lib/label-value/label-value.module.mjs +4 -10
  163. package/esm2022/lib/locale/fallback.mjs +3 -2
  164. package/esm2022/loading-state/lib/loading-state/components/dots-indicator/dots-indicator.components.mjs +3 -3
  165. package/esm2022/loading-state/lib/loading-state/components/logo-indicator/logo-indicator.component.mjs +4 -4
  166. package/esm2022/loading-state/lib/loading-state/components/progress-bar-indicator/progress-bar-indicator.component.mjs +4 -4
  167. package/esm2022/loading-state/lib/loading-state/loading-state.component.mjs +13 -7
  168. package/esm2022/loading-state/lib/loading-state/loading-state.directive.mjs +3 -2
  169. package/esm2022/loading-state/lib/loading-state/loading-state.module.mjs +4 -20
  170. package/esm2022/locale/lib/locale/locale.module.mjs +6 -8
  171. package/esm2022/locale/lib/locale/pipes/localized-bignumber-impure.pipe.mjs +6 -5
  172. package/esm2022/locale/lib/locale/pipes/localized-bignumber.pipe.mjs +16 -15
  173. package/esm2022/locale/lib/locale/pipes/localized-currency-impure.pipe.mjs +6 -5
  174. package/esm2022/locale/lib/locale/pipes/localized-currency.pipe.mjs +11 -10
  175. package/esm2022/locale/lib/locale/pipes/localized-date-impure.pipe.mjs +6 -5
  176. package/esm2022/locale/lib/locale/pipes/localized-date.pipe.mjs +3 -2
  177. package/esm2022/locale/lib/locale/pipes/localized-number.pipe.mjs +10 -7
  178. package/esm2022/locale/lib/locale/pipes/localized-time-impure.pipe.mjs +6 -5
  179. package/esm2022/locale/lib/locale/pipes/localized-time.pipe.mjs +3 -2
  180. package/esm2022/localized-number-input/lib/localized-number-input/localized-number-input.directive.mjs +7 -4
  181. package/esm2022/localized-number-input/lib/localized-number-input/localized-number-input.module.mjs +4 -6
  182. package/esm2022/mask/lib/mask/mask-formatter.module.mjs +3 -3
  183. package/esm2022/mask/lib/mask/mask-formatter.pipe.mjs +3 -2
  184. package/esm2022/mouse-events/lib/mouse-events/long-press.directive.mjs +3 -2
  185. package/esm2022/mouse-events/lib/mouse-events/mouse-events.module.mjs +5 -7
  186. package/esm2022/navigation-button/lib/navigation-button/navigation-button.component.mjs +8 -8
  187. package/esm2022/navigation-button/lib/navigation-button/navigation-button.module.mjs +4 -8
  188. package/esm2022/number-input/lib/number-input/number-input.directive.mjs +3 -2
  189. package/esm2022/number-input/lib/number-input/number-input.module.mjs +4 -6
  190. package/esm2022/numeric/lib/numeric.module.mjs +4 -6
  191. package/esm2022/numeric/lib/numeric.pipe.mjs +6 -3
  192. package/esm2022/numeric-mask/lib/numeric-mask/numeric-mask.directive.mjs +8 -3
  193. package/esm2022/object-card/lib/object-card/elements/field/object-card-field.component.mjs +7 -8
  194. package/esm2022/object-card/lib/object-card/elements/main/object-card-main.component.mjs +6 -8
  195. package/esm2022/object-card/lib/object-card/object-card.component.mjs +6 -6
  196. package/esm2022/object-card/lib/object-card/object-card.module.mjs +4 -10
  197. package/esm2022/paginator/lib/paginator/paginator.component.mjs +3 -3
  198. package/esm2022/panel/lib/panel/panel.component.mjs +15 -7
  199. package/esm2022/panel/lib/panel/panel.module.mjs +7 -10
  200. package/esm2022/password-strength/lib/password-strength/password-strength.component.mjs +4 -4
  201. package/esm2022/password-strength/lib/password-strength/password-strength.directive.mjs +4 -3
  202. package/esm2022/password-strength/lib/password-strength/password-strength.module.mjs +4 -7
  203. package/esm2022/pin-code-field/lib/pin-code-field/pin-code-field.component.mjs +5 -6
  204. package/esm2022/profile-picture-picker/lib/profile-picture-picker/profile-picture-picker.component.mjs +9 -10
  205. package/esm2022/profile-picture-picker/lib/profile-picture-picker/profile-picture-picker.module.mjs +5 -11
  206. package/esm2022/progressbar/lib/progressbar/components/progressbar-determinate/progressbar-determinate.component.mjs +8 -6
  207. package/esm2022/progressbar/lib/progressbar/components/progressbar-indeterminate/progressbar-indeterminate.component.mjs +4 -4
  208. package/esm2022/progressbar/lib/progressbar/progressbar.component.mjs +5 -5
  209. package/esm2022/progressbar/lib/progressbar/progressbar.module.mjs +4 -9
  210. package/esm2022/rating-scale/lib/rating-scale/rating-scale.component.mjs +5 -5
  211. package/esm2022/rating-scale/lib/rating-scale/rating-scale.module.mjs +6 -14
  212. package/esm2022/select/lib/select/components/select-option/select-option.component.mjs +3 -4
  213. package/esm2022/select/lib/select/select.component.mjs +3 -5
  214. package/esm2022/select-button/lib/select-button/components/select-button-item/select-button-item.component.mjs +5 -5
  215. package/esm2022/select-button/lib/select-button/select-button.component.mjs +6 -6
  216. package/esm2022/select-button/lib/select-button/select-button.module.mjs +6 -13
  217. package/esm2022/shared/lib/shared/border-button/border-button.component.mjs +5 -5
  218. package/esm2022/shared/lib/shared/border-button/border-button.module.mjs +7 -10
  219. package/esm2022/sidebar/lib/sidebar/sidebar.component.mjs +5 -5
  220. package/esm2022/sidebar/lib/sidebar/sidebar.module.mjs +4 -7
  221. package/esm2022/slide-in-bar/lib/slide-in-bar/slide-in-bar.component.mjs +6 -6
  222. package/esm2022/slide-in-bar/lib/slide-in-bar/slide-in-bar.module.mjs +7 -9
  223. package/esm2022/slider/lib/slider/slider.component.mjs +6 -6
  224. package/esm2022/slider/lib/slider/slider.module.mjs +6 -9
  225. package/esm2022/speech-recognition/lib/speech-recognition/speech-recognition/speech-recognition.component.mjs +4 -5
  226. package/esm2022/speech-recognition/lib/speech-recognition/speech-recognition.module.mjs +5 -13
  227. package/esm2022/split-button/lib/split-button/split-button.component.mjs +5 -5
  228. package/esm2022/split-button/lib/split-button/split-button.module.mjs +4 -6
  229. package/esm2022/star-rating/star-rating/star-rating.component.mjs +3 -3
  230. package/esm2022/stats-card/lib/stats-card/stats-card.component.mjs +6 -6
  231. package/esm2022/stats-card/lib/stats-card/stats-card.module.mjs +4 -8
  232. package/esm2022/stepper/lib/stepper/stepper.component.mjs +6 -6
  233. package/esm2022/stepper/lib/stepper/stepper.module.mjs +4 -7
  234. package/esm2022/structure/lib/structure/footer.component.mjs +3 -2
  235. package/esm2022/structure/lib/structure/header.component.mjs +5 -4
  236. package/esm2022/structure/lib/structure/structure.module.mjs +5 -7
  237. package/esm2022/switch/lib/switch/switch.component.mjs +4 -5
  238. package/esm2022/switch/lib/switch/switch.module.mjs +4 -6
  239. package/esm2022/table/lib/table/row-toggler/row-toggler.directive.mjs +6 -3
  240. package/esm2022/table/lib/table/table-column/table-columns.component.mjs +17 -9
  241. package/esm2022/table/lib/table/table-paging/table-paging.component.mjs +4 -4
  242. package/esm2022/table/lib/table/table.module.mjs +4 -34
  243. package/esm2022/table-header/lib/table-header/table-header-checkbox.component.mjs +19 -16
  244. package/esm2022/table-header/lib/table-header/table-header-checkox.module.mjs +4 -8
  245. package/esm2022/template/lib/template/template.module.mjs +4 -5
  246. package/esm2022/text-area/lib/text-area/text-area.component.mjs +9 -9
  247. package/esm2022/text-area/lib/text-area.module.mjs +5 -24
  248. package/esm2022/thumbnail/lib/thumbnail/thumbnail.component.mjs +5 -5
  249. package/esm2022/thumbnail/lib/thumbnail/thumbnail.module.mjs +7 -9
  250. package/esm2022/thumbnails/lib/thumbnails/components/thumbnail-item/components/thumbnail-item-image/thumbnail-item-image.component.mjs +6 -6
  251. package/esm2022/thumbnails/lib/thumbnails/components/thumbnail-item/components/thumbnail-item-video/thumbnail-item-video.component.mjs +9 -9
  252. package/esm2022/thumbnails/lib/thumbnails/components/thumbnail-item/thumbnail-item.component.mjs +25 -14
  253. package/esm2022/thumbnails/lib/thumbnails/thumbnails.component.mjs +4 -4
  254. package/esm2022/thumbnails/lib/thumbnails/thumbnails.module.mjs +6 -14
  255. package/esm2022/tiered-menu/lib/tiered-menu/components/tiered-menu/tiered-menu.component.mjs +7 -7
  256. package/esm2022/tiered-menu/lib/tiered-menu/components/tiered-menu-divider/tiered-menu-divider.component.mjs +3 -3
  257. package/esm2022/tiered-menu/lib/tiered-menu/components/tiered-menu-item/tiered-menu-item.component.mjs +4 -4
  258. package/esm2022/tiered-menu/lib/tiered-menu/components/tiered-menu-nested/tiered-menu-nested.component.mjs +6 -6
  259. package/esm2022/tiered-menu/lib/tiered-menu/tiered-menu.directive.mjs +4 -3
  260. package/esm2022/tiered-menu/lib/tiered-menu/tiered-menu.module.mjs +4 -20
  261. package/esm2022/tile/lib/tile/tile.component.mjs +6 -6
  262. package/esm2022/tile/lib/tile/tile.module.mjs +4 -7
  263. package/esm2022/timeline/lib/timeline/components/horizontal-timeline/horizontal-timeline.component.mjs +6 -6
  264. package/esm2022/timeline/lib/timeline/components/timeline-icon-item/timeline-icon-item.component.mjs +5 -5
  265. package/esm2022/timeline/lib/timeline/components/vertical-timeline/components/collapse-option/collapse-option.component.mjs +4 -4
  266. package/esm2022/timeline/lib/timeline/components/vertical-timeline/components/collapsed-items/collapsed-items.component.mjs +5 -5
  267. package/esm2022/timeline/lib/timeline/components/vertical-timeline/components/range-line/range-line.component.mjs +3 -3
  268. package/esm2022/timeline/lib/timeline/components/vertical-timeline/components/vertical-items/vertical-items.component.mjs +5 -5
  269. package/esm2022/timeline/lib/timeline/components/vertical-timeline/vertical-timeline.component.mjs +7 -7
  270. package/esm2022/timeline/lib/timeline/timeline.component.mjs +5 -6
  271. package/esm2022/timeline/lib/timeline/timeline.module.mjs +4 -20
  272. package/esm2022/toast/lib/toast/toast.component.mjs +4 -4
  273. package/esm2022/toast/lib/toast/toast.module.mjs +6 -7
  274. package/esm2022/token-list/lib/token-list/token-list.component.mjs +4 -4
  275. package/esm2022/token-list/lib/token-list/token-list.module.mjs +4 -6
  276. package/esm2022/tooltip/lib/tooltip/tooltip.module.mjs +3 -4
  277. package/esm2022/topbar/lib/topbar/topbar.component.mjs +3 -3
  278. package/esm2022/topbar/lib/topbar/topbar.module.mjs +7 -10
  279. package/esm2022/tree/lib/tree/components/tree-node-item/tree-node-item.component.mjs +6 -5
  280. package/esm2022/tree/lib/tree/tree.component.mjs +5 -5
  281. package/esm2022/tree/lib/tree/tree.module.mjs +4 -10
  282. package/esm2022/workspace-switch/lib/workspace-switch/workspace-switch.component.mjs +5 -5
  283. package/esm2022/workspace-switch/lib/workspace-switch/workspace-switch.module.mjs +4 -6
  284. package/fesm2022/seniorsistemas-angular-components-accordion.mjs +20 -17
  285. package/fesm2022/seniorsistemas-angular-components-accordion.mjs.map +1 -1
  286. package/fesm2022/seniorsistemas-angular-components-alert.mjs +6 -8
  287. package/fesm2022/seniorsistemas-angular-components-alert.mjs.map +1 -1
  288. package/fesm2022/seniorsistemas-angular-components-autocomplete.mjs +3 -3
  289. package/fesm2022/seniorsistemas-angular-components-autocomplete.mjs.map +1 -1
  290. package/fesm2022/seniorsistemas-angular-components-badge.mjs +8 -12
  291. package/fesm2022/seniorsistemas-angular-components-badge.mjs.map +1 -1
  292. package/fesm2022/seniorsistemas-angular-components-bignumber-input.mjs +5 -7
  293. package/fesm2022/seniorsistemas-angular-components-bignumber-input.mjs.map +1 -1
  294. package/fesm2022/seniorsistemas-angular-components-breadcrumb.mjs +5 -6
  295. package/fesm2022/seniorsistemas-angular-components-breadcrumb.mjs.map +1 -1
  296. package/fesm2022/seniorsistemas-angular-components-button.mjs +2 -2
  297. package/fesm2022/seniorsistemas-angular-components-button.mjs.map +1 -1
  298. package/fesm2022/seniorsistemas-angular-components-calendar-mask.mjs +5 -6
  299. package/fesm2022/seniorsistemas-angular-components-calendar-mask.mjs.map +1 -1
  300. package/fesm2022/seniorsistemas-angular-components-card.mjs +7 -9
  301. package/fesm2022/seniorsistemas-angular-components-card.mjs.map +1 -1
  302. package/fesm2022/seniorsistemas-angular-components-chat.mjs +15 -16
  303. package/fesm2022/seniorsistemas-angular-components-chat.mjs.map +1 -1
  304. package/fesm2022/seniorsistemas-angular-components-checkbox-list.mjs +7 -10
  305. package/fesm2022/seniorsistemas-angular-components-checkbox-list.mjs.map +1 -1
  306. package/fesm2022/seniorsistemas-angular-components-checkbox.mjs +3 -4
  307. package/fesm2022/seniorsistemas-angular-components-checkbox.mjs.map +1 -1
  308. package/fesm2022/seniorsistemas-angular-components-chips.mjs +14 -18
  309. package/fesm2022/seniorsistemas-angular-components-chips.mjs.map +1 -1
  310. package/fesm2022/seniorsistemas-angular-components-code-editor.mjs +26 -59
  311. package/fesm2022/seniorsistemas-angular-components-code-editor.mjs.map +1 -1
  312. package/fesm2022/seniorsistemas-angular-components-collapse-link.mjs +6 -8
  313. package/fesm2022/seniorsistemas-angular-components-collapse-link.mjs.map +1 -1
  314. package/fesm2022/seniorsistemas-angular-components-common.mjs +9 -16
  315. package/fesm2022/seniorsistemas-angular-components-common.mjs.map +1 -1
  316. package/fesm2022/seniorsistemas-angular-components-content-generator.mjs +28 -52
  317. package/fesm2022/seniorsistemas-angular-components-content-generator.mjs.map +1 -1
  318. package/fesm2022/seniorsistemas-angular-components-control-errors.mjs +5 -8
  319. package/fesm2022/seniorsistemas-angular-components-control-errors.mjs.map +1 -1
  320. package/fesm2022/seniorsistemas-angular-components-country-phone-picker.mjs +17 -37
  321. package/fesm2022/seniorsistemas-angular-components-country-phone-picker.mjs.map +1 -1
  322. package/fesm2022/seniorsistemas-angular-components-custom-fields.mjs +12 -35
  323. package/fesm2022/seniorsistemas-angular-components-custom-fields.mjs.map +1 -1
  324. package/fesm2022/seniorsistemas-angular-components-datepicker.mjs +5 -2
  325. package/fesm2022/seniorsistemas-angular-components-datepicker.mjs.map +1 -1
  326. package/fesm2022/seniorsistemas-angular-components-dialog.mjs +2 -2
  327. package/fesm2022/seniorsistemas-angular-components-dialog.mjs.map +1 -1
  328. package/fesm2022/seniorsistemas-angular-components-dynamic-form.mjs +12 -11
  329. package/fesm2022/seniorsistemas-angular-components-dynamic-form.mjs.map +1 -1
  330. package/fesm2022/seniorsistemas-angular-components-editable-overlay.mjs +5 -6
  331. package/fesm2022/seniorsistemas-angular-components-editable-overlay.mjs.map +1 -1
  332. package/fesm2022/seniorsistemas-angular-components-editor.mjs +3 -3
  333. package/fesm2022/seniorsistemas-angular-components-editor.mjs.map +1 -1
  334. package/fesm2022/seniorsistemas-angular-components-empty-state.mjs +8 -11
  335. package/fesm2022/seniorsistemas-angular-components-empty-state.mjs.map +1 -1
  336. package/fesm2022/seniorsistemas-angular-components-fieldset.mjs +6 -9
  337. package/fesm2022/seniorsistemas-angular-components-fieldset.mjs.map +1 -1
  338. package/fesm2022/seniorsistemas-angular-components-file-picker.mjs +11 -18
  339. package/fesm2022/seniorsistemas-angular-components-file-picker.mjs.map +1 -1
  340. package/fesm2022/seniorsistemas-angular-components-gantt.mjs +9 -16
  341. package/fesm2022/seniorsistemas-angular-components-gantt.mjs.map +1 -1
  342. package/fesm2022/seniorsistemas-angular-components-global-search.mjs +31 -47
  343. package/fesm2022/seniorsistemas-angular-components-global-search.mjs.map +1 -1
  344. package/fesm2022/seniorsistemas-angular-components-grid-menu.mjs +8 -10
  345. package/fesm2022/seniorsistemas-angular-components-grid-menu.mjs.map +1 -1
  346. package/fesm2022/seniorsistemas-angular-components-help-popover.mjs +10 -17
  347. package/fesm2022/seniorsistemas-angular-components-help-popover.mjs.map +1 -1
  348. package/fesm2022/seniorsistemas-angular-components-image-cropper.mjs +8 -14
  349. package/fesm2022/seniorsistemas-angular-components-image-cropper.mjs.map +1 -1
  350. package/fesm2022/seniorsistemas-angular-components-infinite-scroll.mjs +5 -6
  351. package/fesm2022/seniorsistemas-angular-components-infinite-scroll.mjs.map +1 -1
  352. package/fesm2022/seniorsistemas-angular-components-info-sign.mjs +9 -11
  353. package/fesm2022/seniorsistemas-angular-components-info-sign.mjs.map +1 -1
  354. package/fesm2022/seniorsistemas-angular-components-inline-edit.mjs +64 -121
  355. package/fesm2022/seniorsistemas-angular-components-inline-edit.mjs.map +1 -1
  356. package/fesm2022/seniorsistemas-angular-components-insights.mjs +22 -47
  357. package/fesm2022/seniorsistemas-angular-components-insights.mjs.map +1 -1
  358. package/fesm2022/seniorsistemas-angular-components-kanban.mjs +86 -113
  359. package/fesm2022/seniorsistemas-angular-components-kanban.mjs.map +1 -1
  360. package/fesm2022/seniorsistemas-angular-components-label-value.mjs +10 -16
  361. package/fesm2022/seniorsistemas-angular-components-label-value.mjs.map +1 -1
  362. package/fesm2022/seniorsistemas-angular-components-loading-state.mjs +40 -46
  363. package/fesm2022/seniorsistemas-angular-components-loading-state.mjs.map +1 -1
  364. package/fesm2022/seniorsistemas-angular-components-locale.mjs +40 -31
  365. package/fesm2022/seniorsistemas-angular-components-locale.mjs.map +1 -1
  366. package/fesm2022/seniorsistemas-angular-components-localized-number-input.mjs +9 -8
  367. package/fesm2022/seniorsistemas-angular-components-localized-number-input.mjs.map +1 -1
  368. package/fesm2022/seniorsistemas-angular-components-mask.mjs +4 -3
  369. package/fesm2022/seniorsistemas-angular-components-mask.mjs.map +1 -1
  370. package/fesm2022/seniorsistemas-angular-components-mouse-events.mjs +55 -56
  371. package/fesm2022/seniorsistemas-angular-components-mouse-events.mjs.map +1 -1
  372. package/fesm2022/seniorsistemas-angular-components-navigation-button.mjs +9 -13
  373. package/fesm2022/seniorsistemas-angular-components-navigation-button.mjs.map +1 -1
  374. package/fesm2022/seniorsistemas-angular-components-number-input.mjs +6 -6
  375. package/fesm2022/seniorsistemas-angular-components-number-input.mjs.map +1 -1
  376. package/fesm2022/seniorsistemas-angular-components-numeric-mask.mjs +7 -2
  377. package/fesm2022/seniorsistemas-angular-components-numeric-mask.mjs.map +1 -1
  378. package/fesm2022/seniorsistemas-angular-components-numeric.mjs +8 -7
  379. package/fesm2022/seniorsistemas-angular-components-numeric.mjs.map +1 -1
  380. package/fesm2022/seniorsistemas-angular-components-object-card.mjs +14 -21
  381. package/fesm2022/seniorsistemas-angular-components-object-card.mjs.map +1 -1
  382. package/fesm2022/seniorsistemas-angular-components-paginator.mjs +2 -2
  383. package/fesm2022/seniorsistemas-angular-components-paginator.mjs.map +1 -1
  384. package/fesm2022/seniorsistemas-angular-components-panel.mjs +17 -11
  385. package/fesm2022/seniorsistemas-angular-components-panel.mjs.map +1 -1
  386. package/fesm2022/seniorsistemas-angular-components-password-strength.mjs +8 -9
  387. package/fesm2022/seniorsistemas-angular-components-password-strength.mjs.map +1 -1
  388. package/fesm2022/seniorsistemas-angular-components-pin-code-field.mjs +4 -5
  389. package/fesm2022/seniorsistemas-angular-components-pin-code-field.mjs.map +1 -1
  390. package/fesm2022/seniorsistemas-angular-components-profile-picture-picker.mjs +11 -17
  391. package/fesm2022/seniorsistemas-angular-components-profile-picture-picker.mjs.map +1 -1
  392. package/fesm2022/seniorsistemas-angular-components-progressbar.mjs +15 -15
  393. package/fesm2022/seniorsistemas-angular-components-progressbar.mjs.map +1 -1
  394. package/fesm2022/seniorsistemas-angular-components-rating-scale.mjs +8 -15
  395. package/fesm2022/seniorsistemas-angular-components-rating-scale.mjs.map +1 -1
  396. package/fesm2022/seniorsistemas-angular-components-select-button.mjs +9 -15
  397. package/fesm2022/seniorsistemas-angular-components-select-button.mjs.map +1 -1
  398. package/fesm2022/seniorsistemas-angular-components-select.mjs +4 -6
  399. package/fesm2022/seniorsistemas-angular-components-select.mjs.map +1 -1
  400. package/fesm2022/seniorsistemas-angular-components-shared.mjs +8 -11
  401. package/fesm2022/seniorsistemas-angular-components-shared.mjs.map +1 -1
  402. package/fesm2022/seniorsistemas-angular-components-sidebar.mjs +7 -10
  403. package/fesm2022/seniorsistemas-angular-components-sidebar.mjs.map +1 -1
  404. package/fesm2022/seniorsistemas-angular-components-slide-in-bar.mjs +7 -9
  405. package/fesm2022/seniorsistemas-angular-components-slide-in-bar.mjs.map +1 -1
  406. package/fesm2022/seniorsistemas-angular-components-slider.mjs +8 -11
  407. package/fesm2022/seniorsistemas-angular-components-slider.mjs.map +1 -1
  408. package/fesm2022/seniorsistemas-angular-components-speech-recognition.mjs +7 -15
  409. package/fesm2022/seniorsistemas-angular-components-speech-recognition.mjs.map +1 -1
  410. package/fesm2022/seniorsistemas-angular-components-split-button.mjs +6 -8
  411. package/fesm2022/seniorsistemas-angular-components-split-button.mjs.map +1 -1
  412. package/fesm2022/seniorsistemas-angular-components-star-rating.mjs +2 -2
  413. package/fesm2022/seniorsistemas-angular-components-star-rating.mjs.map +1 -1
  414. package/fesm2022/seniorsistemas-angular-components-stats-card.mjs +8 -12
  415. package/fesm2022/seniorsistemas-angular-components-stats-card.mjs.map +1 -1
  416. package/fesm2022/seniorsistemas-angular-components-stepper.mjs +8 -11
  417. package/fesm2022/seniorsistemas-angular-components-stepper.mjs.map +1 -1
  418. package/fesm2022/seniorsistemas-angular-components-structure.mjs +18 -18
  419. package/fesm2022/seniorsistemas-angular-components-structure.mjs.map +1 -1
  420. package/fesm2022/seniorsistemas-angular-components-switch.mjs +6 -9
  421. package/fesm2022/seniorsistemas-angular-components-switch.mjs.map +1 -1
  422. package/fesm2022/seniorsistemas-angular-components-table-header.mjs +20 -21
  423. package/fesm2022/seniorsistemas-angular-components-table-header.mjs.map +1 -1
  424. package/fesm2022/seniorsistemas-angular-components-table.mjs +27 -45
  425. package/fesm2022/seniorsistemas-angular-components-table.mjs.map +1 -1
  426. package/fesm2022/seniorsistemas-angular-components-template.mjs +3 -4
  427. package/fesm2022/seniorsistemas-angular-components-template.mjs.map +1 -1
  428. package/fesm2022/seniorsistemas-angular-components-text-area.mjs +12 -30
  429. package/fesm2022/seniorsistemas-angular-components-text-area.mjs.map +1 -1
  430. package/fesm2022/seniorsistemas-angular-components-thumbnail.mjs +6 -8
  431. package/fesm2022/seniorsistemas-angular-components-thumbnail.mjs.map +1 -1
  432. package/fesm2022/seniorsistemas-angular-components-thumbnails.mjs +45 -37
  433. package/fesm2022/seniorsistemas-angular-components-thumbnails.mjs.map +1 -1
  434. package/fesm2022/seniorsistemas-angular-components-tiered-menu.mjs +14 -25
  435. package/fesm2022/seniorsistemas-angular-components-tiered-menu.mjs.map +1 -1
  436. package/fesm2022/seniorsistemas-angular-components-tile.mjs +8 -12
  437. package/fesm2022/seniorsistemas-angular-components-tile.mjs.map +1 -1
  438. package/fesm2022/seniorsistemas-angular-components-timeline.mjs +58 -124
  439. package/fesm2022/seniorsistemas-angular-components-timeline.mjs.map +1 -1
  440. package/fesm2022/seniorsistemas-angular-components-toast.mjs +4 -5
  441. package/fesm2022/seniorsistemas-angular-components-toast.mjs.map +1 -1
  442. package/fesm2022/seniorsistemas-angular-components-token-list.mjs +6 -8
  443. package/fesm2022/seniorsistemas-angular-components-token-list.mjs.map +1 -1
  444. package/fesm2022/seniorsistemas-angular-components-tooltip.mjs +2 -2
  445. package/fesm2022/seniorsistemas-angular-components-tooltip.mjs.map +1 -1
  446. package/fesm2022/seniorsistemas-angular-components-topbar.mjs +5 -8
  447. package/fesm2022/seniorsistemas-angular-components-topbar.mjs.map +1 -1
  448. package/fesm2022/seniorsistemas-angular-components-tree.mjs +10 -13
  449. package/fesm2022/seniorsistemas-angular-components-tree.mjs.map +1 -1
  450. package/fesm2022/seniorsistemas-angular-components-workspace-switch.mjs +6 -8
  451. package/fesm2022/seniorsistemas-angular-components-workspace-switch.mjs.map +1 -1
  452. package/fesm2022/seniorsistemas-angular-components.mjs +2 -1
  453. package/fesm2022/seniorsistemas-angular-components.mjs.map +1 -1
  454. package/fieldset/lib/fieldset/fieldset.component.d.ts +1 -1
  455. package/fieldset/lib/fieldset/fieldset.module.d.ts +1 -3
  456. package/file-picker/lib/file-picker/file-picker.component.d.ts +1 -1
  457. package/file-picker/lib/file-picker/file-picker.module.d.ts +1 -7
  458. package/gantt/lib/gantt/components/side-table/side-table.component.d.ts +1 -1
  459. package/gantt/lib/gantt/gantt.component.d.ts +1 -1
  460. package/gantt/lib/gantt/gantt.module.d.ts +1 -4
  461. package/global-search/README.md +12 -1
  462. package/global-search/lib/global-search/components/dropdown/global-search-dropdown-item.component.d.ts +1 -1
  463. package/global-search/lib/global-search/global-search.component.d.ts +1 -1
  464. package/global-search/lib/global-search/global-search.module.d.ts +8 -12
  465. package/grid-menu/README.md +27 -2
  466. package/grid-menu/lib/grid-menu/components/grid-menu-item/grid-menu-item.component.d.ts +1 -1
  467. package/grid-menu/lib/grid-menu/grid-menu.component.d.ts +1 -1
  468. package/grid-menu/lib/grid-menu/grid-menu.module.d.ts +1 -3
  469. package/help-popover/README.md +2 -2
  470. package/help-popover/lib/help-popover/help-popover/help-popover.component.d.ts +1 -1
  471. package/help-popover/lib/help-popover/help-popover.directive.d.ts +1 -1
  472. package/help-popover/lib/help-popover/help-popover.module.d.ts +2 -5
  473. package/ia-insight/README.md +1 -1
  474. package/image-cropper/README.md +2 -2
  475. package/image-cropper/lib/image-cropper/image-cropper.component.d.ts +1 -1
  476. package/image-cropper/lib/image-cropper/image-cropper.module.d.ts +3 -8
  477. package/infinite-scroll/lib/infinite-scroll/infinite-scroll.directive.d.ts +1 -1
  478. package/infinite-scroll/lib/infinite-scroll/infinite-scroll.module.d.ts +1 -2
  479. package/info-sign/README.md +1 -1
  480. package/info-sign/lib/info-sign/components/info-sign/info-sign.component.d.ts +2 -2
  481. package/info-sign/lib/info-sign/info-sign.directive.d.ts +1 -1
  482. package/info-sign/lib/info-sign/info-sign.module.d.ts +1 -4
  483. package/inline-edit/lib/inline-edit/components/fields/inline-edit-calendar/inline-edit-calendar.component.d.ts +7 -6
  484. package/inline-edit/lib/inline-edit/components/fields/inline-edit-content-generator/inline-edit-content-generator.component.d.ts +4 -4
  485. package/inline-edit/lib/inline-edit/components/fields/inline-edit-lookup/inline-edit-lookup.component.d.ts +4 -4
  486. package/inline-edit/lib/inline-edit/components/fields/inline-edit-number/inline-edit-number.component.d.ts +5 -4
  487. package/inline-edit/lib/inline-edit/components/fields/inline-edit-text/inline-edit-text.component.d.ts +4 -4
  488. package/inline-edit/lib/inline-edit/components/fields/inline-edit-text-area/inline-edit-text-area.component.d.ts +4 -4
  489. package/inline-edit/lib/inline-edit/components/inline-edit-item/inline-edit-item.component.d.ts +5 -4
  490. package/inline-edit/lib/inline-edit/inline-edit.component.d.ts +1 -1
  491. package/inline-edit/lib/inline-edit/inline-edit.module.d.ts +1 -23
  492. package/insights/lib/insights/components/insights-card/components/insights-card-loader/insights-card-loader.component.d.ts +1 -1
  493. package/insights/lib/insights/components/insights-card/insights-card.component.d.ts +2 -1
  494. package/insights/lib/insights/components/insights-sidebar/insights-sidebar.component.d.ts +1 -1
  495. package/insights/lib/insights/insights.component.d.ts +1 -1
  496. package/insights/lib/insights/insights.module.d.ts +3 -12
  497. package/kanban/lib/kanban/components/kanban-column/kanban-column.component.d.ts +5 -5
  498. package/kanban/lib/kanban/components/kanban-item/kanban-item.component.d.ts +4 -4
  499. package/kanban/lib/kanban/components/kanban-item-dragging/kanban-item-dragging.component.d.ts +1 -1
  500. package/kanban/lib/kanban/kanban.component.d.ts +1 -1
  501. package/kanban/lib/kanban/kanban.module.d.ts +3 -13
  502. package/label-value/lib/label-value/label-value.component.d.ts +1 -1
  503. package/label-value/lib/label-value/label-value.module.d.ts +1 -6
  504. package/loading-state/lib/loading-state/components/dots-indicator/dots-indicator.components.d.ts +1 -1
  505. package/loading-state/lib/loading-state/components/logo-indicator/logo-indicator.component.d.ts +1 -1
  506. package/loading-state/lib/loading-state/components/progress-bar-indicator/progress-bar-indicator.component.d.ts +1 -1
  507. package/loading-state/lib/loading-state/loading-state.component.d.ts +1 -1
  508. package/loading-state/lib/loading-state/loading-state.directive.d.ts +1 -1
  509. package/loading-state/lib/loading-state/loading-state.module.d.ts +1 -6
  510. package/locale/lib/locale/locale.module.d.ts +1 -2
  511. package/locale/lib/locale/pipes/localized-bignumber-impure.pipe.d.ts +3 -3
  512. package/locale/lib/locale/pipes/localized-bignumber.pipe.d.ts +3 -3
  513. package/locale/lib/locale/pipes/localized-currency-impure.pipe.d.ts +3 -3
  514. package/locale/lib/locale/pipes/localized-currency.pipe.d.ts +3 -3
  515. package/locale/lib/locale/pipes/localized-date-impure.pipe.d.ts +3 -3
  516. package/locale/lib/locale/pipes/localized-date.pipe.d.ts +1 -1
  517. package/locale/lib/locale/pipes/localized-number.pipe.d.ts +2 -2
  518. package/locale/lib/locale/pipes/localized-time-impure.pipe.d.ts +3 -3
  519. package/locale/lib/locale/pipes/localized-time.pipe.d.ts +1 -1
  520. package/localized-number-input/lib/localized-number-input/localized-number-input.directive.d.ts +2 -1
  521. package/localized-number-input/lib/localized-number-input/localized-number-input.module.d.ts +1 -2
  522. package/mask/lib/mask/mask-formatter.module.d.ts +1 -1
  523. package/mask/lib/mask/mask-formatter.pipe.d.ts +1 -1
  524. package/mouse-events/lib/mouse-events/long-press.directive.d.ts +1 -1
  525. package/mouse-events/lib/mouse-events/mouse-events.module.d.ts +3 -4
  526. package/navigation-button/lib/navigation-button/navigation-button.component.d.ts +1 -1
  527. package/navigation-button/lib/navigation-button/navigation-button.module.d.ts +1 -4
  528. package/number-input/lib/number-input/number-input.directive.d.ts +1 -1
  529. package/number-input/lib/number-input/number-input.module.d.ts +1 -2
  530. package/numeric/lib/numeric.module.d.ts +1 -2
  531. package/numeric/lib/numeric.pipe.d.ts +1 -1
  532. package/numeric-mask/lib/numeric-mask/numeric-mask.directive.d.ts +1 -0
  533. package/object-card/README.md +13 -1
  534. package/object-card/lib/object-card/elements/field/object-card-field.component.d.ts +1 -1
  535. package/object-card/lib/object-card/elements/main/object-card-main.component.d.ts +1 -1
  536. package/object-card/lib/object-card/object-card.component.d.ts +1 -1
  537. package/object-card/lib/object-card/object-card.module.d.ts +5 -10
  538. package/package.json +13 -13
  539. package/panel/lib/panel/panel.component.d.ts +6 -1
  540. package/panel/lib/panel/panel.module.d.ts +2 -4
  541. package/password-strength/lib/password-strength/password-strength.component.d.ts +1 -1
  542. package/password-strength/lib/password-strength/password-strength.directive.d.ts +1 -1
  543. package/password-strength/lib/password-strength/password-strength.module.d.ts +2 -4
  544. package/picklist/README.md +74 -2
  545. package/product-header/README.md +1 -1
  546. package/profile-picture-picker/README.md +1 -1
  547. package/profile-picture-picker/lib/profile-picture-picker/profile-picture-picker.component.d.ts +1 -1
  548. package/profile-picture-picker/lib/profile-picture-picker/profile-picture-picker.module.d.ts +1 -7
  549. package/progressbar/README.md +0 -1
  550. package/progressbar/lib/progressbar/components/progressbar-determinate/progressbar-determinate.component.d.ts +2 -1
  551. package/progressbar/lib/progressbar/components/progressbar-indeterminate/progressbar-indeterminate.component.d.ts +1 -1
  552. package/progressbar/lib/progressbar/progressbar.component.d.ts +1 -1
  553. package/progressbar/lib/progressbar/progressbar.module.d.ts +1 -5
  554. package/radio-button/README.md +0 -1
  555. package/rating-scale/README.md +1 -1
  556. package/rating-scale/lib/rating-scale/rating-scale.component.d.ts +2 -2
  557. package/rating-scale/lib/rating-scale/rating-scale.module.d.ts +1 -3
  558. package/select/lib/select/select.component.d.ts +1 -1
  559. package/select-button/README.md +1 -1
  560. package/select-button/lib/select-button/components/select-button-item/select-button-item.component.d.ts +1 -1
  561. package/select-button/lib/select-button/select-button.component.d.ts +1 -1
  562. package/select-button/lib/select-button/select-button.module.d.ts +1 -3
  563. package/shared/lib/shared/border-button/border-button.component.d.ts +1 -1
  564. package/shared/lib/shared/border-button/border-button.module.d.ts +1 -3
  565. package/sidebar/lib/sidebar/sidebar.component.d.ts +1 -1
  566. package/sidebar/lib/sidebar/sidebar.module.d.ts +2 -4
  567. package/slide-in-bar/README.md +1 -1
  568. package/slide-in-bar/lib/slide-in-bar/slide-in-bar.component.d.ts +1 -1
  569. package/slide-in-bar/lib/slide-in-bar/slide-in-bar.module.d.ts +1 -2
  570. package/slider/README.md +1 -1
  571. package/slider/lib/slider/slider.component.d.ts +1 -1
  572. package/slider/lib/slider/slider.module.d.ts +1 -3
  573. package/speech-recognition/README.md +1 -1
  574. package/speech-recognition/lib/speech-recognition/speech-recognition/speech-recognition.component.d.ts +1 -1
  575. package/speech-recognition/lib/speech-recognition/speech-recognition.module.d.ts +1 -3
  576. package/split-button/README.md +1 -1
  577. package/split-button/lib/split-button/split-button.component.d.ts +1 -1
  578. package/split-button/lib/split-button/split-button.module.d.ts +1 -2
  579. package/spotlight/README.md +1 -1
  580. package/star-rating/README.md +1 -1
  581. package/stats-card/README.md +1 -1
  582. package/stats-card/lib/stats-card/stats-card.component.d.ts +1 -1
  583. package/stats-card/lib/stats-card/stats-card.module.d.ts +1 -4
  584. package/stepper/lib/stepper/stepper.component.d.ts +1 -1
  585. package/stepper/lib/stepper/stepper.module.d.ts +1 -3
  586. package/structure/lib/structure/footer.component.d.ts +1 -1
  587. package/structure/lib/structure/header.component.d.ts +1 -1
  588. package/structure/lib/structure/structure.module.d.ts +1 -2
  589. package/switch/lib/switch/switch.component.d.ts +1 -1
  590. package/switch/lib/switch/switch.module.d.ts +1 -2
  591. package/table/README.md +9 -8
  592. package/table/lib/table/row-toggler/row-toggler.directive.d.ts +1 -1
  593. package/table/lib/table/table-column/table-columns.component.d.ts +1 -1
  594. package/table/lib/table/table-paging/table-paging.component.d.ts +1 -1
  595. package/table/lib/table/table.module.d.ts +5 -12
  596. package/table-header/lib/table-header/table-header-checkbox.component.d.ts +1 -1
  597. package/table-header/lib/table-header/table-header-checkox.module.d.ts +1 -4
  598. package/template/README.md +177 -0
  599. package/template/lib/template/template.module.d.ts +2 -3
  600. package/text-area/lib/text-area/text-area.component.d.ts +1 -1
  601. package/text-area/lib/text-area.module.d.ts +1 -5
  602. package/text-area-ia/README.md +1 -1
  603. package/thumbnail/lib/thumbnail/thumbnail.component.d.ts +1 -1
  604. package/thumbnail/lib/thumbnail/thumbnail.module.d.ts +1 -2
  605. package/thumbnails/lib/thumbnails/components/thumbnail-item/components/thumbnail-item-image/thumbnail-item-image.component.d.ts +1 -1
  606. package/thumbnails/lib/thumbnails/components/thumbnail-item/components/thumbnail-item-video/thumbnail-item-video.component.d.ts +2 -2
  607. package/thumbnails/lib/thumbnails/components/thumbnail-item/thumbnail-item.component.d.ts +5 -4
  608. package/thumbnails/lib/thumbnails/thumbnails.component.d.ts +1 -1
  609. package/thumbnails/lib/thumbnails/thumbnails.module.d.ts +1 -8
  610. package/tiered-menu/lib/tiered-menu/components/tiered-menu/tiered-menu.component.d.ts +1 -1
  611. package/tiered-menu/lib/tiered-menu/components/tiered-menu-divider/tiered-menu-divider.component.d.ts +1 -1
  612. package/tiered-menu/lib/tiered-menu/components/tiered-menu-item/tiered-menu-item.component.d.ts +1 -1
  613. package/tiered-menu/lib/tiered-menu/components/tiered-menu-nested/tiered-menu-nested.component.d.ts +1 -1
  614. package/tiered-menu/lib/tiered-menu/tiered-menu.directive.d.ts +1 -1
  615. package/tiered-menu/lib/tiered-menu/tiered-menu.module.d.ts +1 -6
  616. package/tile/lib/tile/tile.component.d.ts +1 -1
  617. package/tile/lib/tile/tile.module.d.ts +3 -5
  618. package/timeline/lib/timeline/components/horizontal-timeline/horizontal-timeline.component.d.ts +1 -1
  619. package/timeline/lib/timeline/components/timeline-icon-item/timeline-icon-item.component.d.ts +1 -1
  620. package/timeline/lib/timeline/components/vertical-timeline/components/collapse-option/collapse-option.component.d.ts +1 -1
  621. package/timeline/lib/timeline/components/vertical-timeline/components/collapsed-items/collapsed-items.component.d.ts +1 -1
  622. package/timeline/lib/timeline/components/vertical-timeline/components/range-line/range-line.component.d.ts +1 -1
  623. package/timeline/lib/timeline/components/vertical-timeline/components/vertical-items/vertical-items.component.d.ts +1 -1
  624. package/timeline/lib/timeline/components/vertical-timeline/vertical-timeline.component.d.ts +1 -1
  625. package/timeline/lib/timeline/timeline.component.d.ts +1 -1
  626. package/timeline/lib/timeline/timeline.module.d.ts +1 -5
  627. package/toast/lib/toast/toast.component.d.ts +1 -1
  628. package/toast/lib/toast/toast.module.d.ts +3 -3
  629. package/token-list/lib/token-list/token-list.component.d.ts +1 -1
  630. package/token-list/lib/token-list/token-list.module.d.ts +1 -2
  631. package/tooltip/lib/tooltip/tooltip.module.d.ts +1 -2
  632. package/topbar/lib/topbar/topbar.component.d.ts +1 -1
  633. package/topbar/lib/topbar/topbar.module.d.ts +3 -5
  634. package/tree/lib/tree/components/tree-node-item/tree-node-item.component.d.ts +1 -1
  635. package/tree/lib/tree/tree.component.d.ts +1 -1
  636. package/tree/lib/tree/tree.module.d.ts +1 -6
  637. package/workspace-switch/lib/workspace-switch/workspace-switch.component.d.ts +1 -1
  638. package/workspace-switch/lib/workspace-switch/workspace-switch.module.d.ts +1 -2
  639. package/esm2022/insights/lib/insights/components/insights-card/components/index.mjs +0 -2
  640. package/esm2022/timeline/lib/timeline/components/horizontal-timeline/horizontal-timeline.module.mjs +0 -20
  641. package/esm2022/timeline/lib/timeline/components/timeline-icon-item/timeline-icon-item.module.mjs +0 -19
  642. package/esm2022/timeline/lib/timeline/components/vertical-timeline/vertical-timeline.module.mjs +0 -33
  643. package/insights/lib/insights/components/insights-card/components/index.d.ts +0 -1
  644. package/timeline/lib/timeline/components/horizontal-timeline/horizontal-timeline.module.d.ts +0 -10
  645. package/timeline/lib/timeline/components/timeline-icon-item/timeline-icon-item.module.d.ts +0 -9
  646. package/timeline/lib/timeline/components/vertical-timeline/vertical-timeline.module.d.ts +0 -13
@@ -1,7 +1,7 @@
1
1
  import { Component, Input, inject } from '@angular/core';
2
2
  import { TranslateService } from '@ngx-translate/core';
3
+ import { NgStyle, NgClass } from '@angular/common';
3
4
  import * as i0 from "@angular/core";
4
- import * as i1 from "@angular/common";
5
5
  /**
6
6
  * @description Componente interno que exibe visualmente os indicadores de força de senha.
7
7
  * Utilizado em conjunto com a diretiva {@link PasswordStrengthDirective} para fornecer
@@ -95,11 +95,11 @@ export class PasswordStrengthComponent {
95
95
  });
96
96
  }
97
97
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PasswordStrengthComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
98
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: PasswordStrengthComponent, selector: "ng-component", inputs: { weakTitle: "weakTitle", mediumTitle: "mediumTitle", strongTitle: "strongTitle", description: "description" }, ngImport: i0, template: "<div\n class=\"password-strength\"\n [ngStyle]=\"{\n left: left + 'px',\n top: top + 'px',\n }\"\n [ngClass]=\"['password-strength--' + position]\"\n>\n <span class=\"password-strength-title\">{{ title }}</span>\n <div class=\"strength-indicators\">\n <span\n class=\"strength-indicator\"\n id=\"strength-indicator-1\"\n ></span>\n <span\n class=\"strength-indicator\"\n id=\"strength-indicator-2\"\n ></span>\n <span\n class=\"strength-indicator\"\n id=\"strength-indicator-3\"\n ></span>\n </div>\n <span class=\"content\">{{ description }}</span>\n</div>\n", styles: [".password-strength{position:fixed;transform:translate(-50%);background-color:#fff;border-radius:2px;box-shadow:0 0 5px 1px #ccc;padding:10px;width:232px;z-index:99999}.password-strength:after{content:\"\";position:absolute}.password-strength-title{font-family:Open Sans,sans-serif;font-size:14px;font-weight:700;line-height:150%}.password-strength .strength-indicators{display:flex;justify-content:space-between;padding:10px 0}.password-strength .strength-indicators .strength-indicator{background-color:#ccc;border-radius:2px;display:inline-block;height:3px;width:64px}.password-strength .strength-indicators .strength-indicator--weak{background-color:#c13018}.password-strength .strength-indicators .strength-indicator--medium{background-color:#fcbf10}.password-strength .strength-indicators .strength-indicator--strong{background-color:#0c9348}.password-strength .content{font-family:Open Sans,sans-serif;font-size:12px;font-weight:400;line-height:150%}.password-strength--top{transform:translate(-50%,-100%)}.password-strength--top:after{top:100%;right:calc(50% - 4px);border-left:8px solid transparent;border-right:8px solid transparent;border-top:8px solid #fff}.password-strength--right{transform:translateY(-50%)}.password-strength--right:after{bottom:calc(50% - 8px);left:-8px;border-top:8px solid transparent;border-right:8px solid #fff;border-bottom:8px solid transparent}.password-strength--left{transform:translate(-100%,-50%)}.password-strength--left:after{bottom:calc(50% - 8px);right:-8px;border-top:8px solid transparent;border-left:8px solid #fff;border-bottom:8px solid transparent}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] });
98
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: PasswordStrengthComponent, isStandalone: true, selector: "ng-component", inputs: { weakTitle: "weakTitle", mediumTitle: "mediumTitle", strongTitle: "strongTitle", description: "description" }, ngImport: i0, template: "<div\n class=\"password-strength\"\n [ngStyle]=\"{\n left: left + 'px',\n top: top + 'px',\n }\"\n [ngClass]=\"['password-strength--' + position]\"\n>\n <span class=\"password-strength-title\">{{ title }}</span>\n <div class=\"strength-indicators\">\n <span\n class=\"strength-indicator\"\n id=\"strength-indicator-1\"\n ></span>\n <span\n class=\"strength-indicator\"\n id=\"strength-indicator-2\"\n ></span>\n <span\n class=\"strength-indicator\"\n id=\"strength-indicator-3\"\n ></span>\n </div>\n <span class=\"content\">{{ description }}</span>\n</div>\n", styles: [".password-strength{position:fixed;transform:translate(-50%);background-color:#fff;border-radius:2px;box-shadow:0 0 5px 1px #ccc;padding:10px;width:232px;z-index:99999}.password-strength:after{content:\"\";position:absolute}.password-strength-title{font-family:Open Sans,sans-serif;font-size:14px;font-weight:700;line-height:150%}.password-strength .strength-indicators{display:flex;justify-content:space-between;padding:10px 0}.password-strength .strength-indicators .strength-indicator{background-color:#ccc;border-radius:2px;display:inline-block;height:3px;width:64px}.password-strength .strength-indicators .strength-indicator--weak{background-color:#c13018}.password-strength .strength-indicators .strength-indicator--medium{background-color:#fcbf10}.password-strength .strength-indicators .strength-indicator--strong{background-color:#0c9348}.password-strength .content{font-family:Open Sans,sans-serif;font-size:12px;font-weight:400;line-height:150%}.password-strength--top{transform:translate(-50%,-100%)}.password-strength--top:after{top:100%;right:calc(50% - 4px);border-left:8px solid transparent;border-right:8px solid transparent;border-top:8px solid #fff}.password-strength--right{transform:translateY(-50%)}.password-strength--right:after{bottom:calc(50% - 8px);left:-8px;border-top:8px solid transparent;border-right:8px solid #fff;border-bottom:8px solid transparent}.password-strength--left{transform:translate(-100%,-50%)}.password-strength--left:after{bottom:calc(50% - 8px);right:-8px;border-top:8px solid transparent;border-left:8px solid #fff;border-bottom:8px solid transparent}\n"], dependencies: [{ kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
99
99
  }
100
100
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PasswordStrengthComponent, decorators: [{
101
101
  type: Component,
102
- args: [{ template: "<div\n class=\"password-strength\"\n [ngStyle]=\"{\n left: left + 'px',\n top: top + 'px',\n }\"\n [ngClass]=\"['password-strength--' + position]\"\n>\n <span class=\"password-strength-title\">{{ title }}</span>\n <div class=\"strength-indicators\">\n <span\n class=\"strength-indicator\"\n id=\"strength-indicator-1\"\n ></span>\n <span\n class=\"strength-indicator\"\n id=\"strength-indicator-2\"\n ></span>\n <span\n class=\"strength-indicator\"\n id=\"strength-indicator-3\"\n ></span>\n </div>\n <span class=\"content\">{{ description }}</span>\n</div>\n", styles: [".password-strength{position:fixed;transform:translate(-50%);background-color:#fff;border-radius:2px;box-shadow:0 0 5px 1px #ccc;padding:10px;width:232px;z-index:99999}.password-strength:after{content:\"\";position:absolute}.password-strength-title{font-family:Open Sans,sans-serif;font-size:14px;font-weight:700;line-height:150%}.password-strength .strength-indicators{display:flex;justify-content:space-between;padding:10px 0}.password-strength .strength-indicators .strength-indicator{background-color:#ccc;border-radius:2px;display:inline-block;height:3px;width:64px}.password-strength .strength-indicators .strength-indicator--weak{background-color:#c13018}.password-strength .strength-indicators .strength-indicator--medium{background-color:#fcbf10}.password-strength .strength-indicators .strength-indicator--strong{background-color:#0c9348}.password-strength .content{font-family:Open Sans,sans-serif;font-size:12px;font-weight:400;line-height:150%}.password-strength--top{transform:translate(-50%,-100%)}.password-strength--top:after{top:100%;right:calc(50% - 4px);border-left:8px solid transparent;border-right:8px solid transparent;border-top:8px solid #fff}.password-strength--right{transform:translateY(-50%)}.password-strength--right:after{bottom:calc(50% - 8px);left:-8px;border-top:8px solid transparent;border-right:8px solid #fff;border-bottom:8px solid transparent}.password-strength--left{transform:translate(-100%,-50%)}.password-strength--left:after{bottom:calc(50% - 8px);right:-8px;border-top:8px solid transparent;border-left:8px solid #fff;border-bottom:8px solid transparent}\n"] }]
102
+ args: [{ standalone: true, imports: [NgStyle, NgClass], template: "<div\n class=\"password-strength\"\n [ngStyle]=\"{\n left: left + 'px',\n top: top + 'px',\n }\"\n [ngClass]=\"['password-strength--' + position]\"\n>\n <span class=\"password-strength-title\">{{ title }}</span>\n <div class=\"strength-indicators\">\n <span\n class=\"strength-indicator\"\n id=\"strength-indicator-1\"\n ></span>\n <span\n class=\"strength-indicator\"\n id=\"strength-indicator-2\"\n ></span>\n <span\n class=\"strength-indicator\"\n id=\"strength-indicator-3\"\n ></span>\n </div>\n <span class=\"content\">{{ description }}</span>\n</div>\n", styles: [".password-strength{position:fixed;transform:translate(-50%);background-color:#fff;border-radius:2px;box-shadow:0 0 5px 1px #ccc;padding:10px;width:232px;z-index:99999}.password-strength:after{content:\"\";position:absolute}.password-strength-title{font-family:Open Sans,sans-serif;font-size:14px;font-weight:700;line-height:150%}.password-strength .strength-indicators{display:flex;justify-content:space-between;padding:10px 0}.password-strength .strength-indicators .strength-indicator{background-color:#ccc;border-radius:2px;display:inline-block;height:3px;width:64px}.password-strength .strength-indicators .strength-indicator--weak{background-color:#c13018}.password-strength .strength-indicators .strength-indicator--medium{background-color:#fcbf10}.password-strength .strength-indicators .strength-indicator--strong{background-color:#0c9348}.password-strength .content{font-family:Open Sans,sans-serif;font-size:12px;font-weight:400;line-height:150%}.password-strength--top{transform:translate(-50%,-100%)}.password-strength--top:after{top:100%;right:calc(50% - 4px);border-left:8px solid transparent;border-right:8px solid transparent;border-top:8px solid #fff}.password-strength--right{transform:translateY(-50%)}.password-strength--right:after{bottom:calc(50% - 8px);left:-8px;border-top:8px solid transparent;border-right:8px solid #fff;border-bottom:8px solid transparent}.password-strength--left{transform:translate(-100%,-50%)}.password-strength--left:after{bottom:calc(50% - 8px);right:-8px;border-top:8px solid transparent;border-left:8px solid #fff;border-bottom:8px solid transparent}\n"] }]
103
103
  }], propDecorators: { weakTitle: [{
104
104
  type: Input
105
105
  }], mediumTitle: [{
@@ -110,4 +110,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
110
110
  type: Input,
111
111
  args: [{ required: true }]
112
112
  }] } });
113
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFzc3dvcmQtc3RyZW5ndGguY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL3Bhc3N3b3JkLXN0cmVuZ3RoL3NyYy9saWIvcGFzc3dvcmQtc3RyZW5ndGgvcGFzc3dvcmQtc3RyZW5ndGguY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL3Bhc3N3b3JkLXN0cmVuZ3RoL3NyYy9saWIvcGFzc3dvcmQtc3RyZW5ndGgvcGFzc3dvcmQtc3RyZW5ndGguY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWpFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7QUFLdkQ7Ozs7Ozs7R0FPRztBQUtILE1BQU0sT0FBTyx5QkFBeUI7SUFDakIsU0FBUyxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBRXREOzs7T0FHRztJQUVJLFNBQVMsQ0FBVTtJQUUxQjs7O09BR0c7SUFFSSxXQUFXLENBQVU7SUFFNUI7OztPQUdHO0lBRUksV0FBVyxDQUFVO0lBRTVCOzs7T0FHRztJQUVJLFdBQVcsQ0FBVTtJQUVyQixLQUFLLENBQVU7SUFDZixRQUFRLEdBQThCLE9BQU8sQ0FBQztJQUM5QyxJQUFJLEdBQUcsQ0FBQyxDQUFDO0lBQ1QsR0FBRyxHQUFHLENBQUMsQ0FBQztJQUNSLE9BQU8sR0FBRyxLQUFLLENBQUM7SUFFaEIsUUFBUTtRQUNYLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUNoQyxDQUFDO0lBRU0sMkJBQTJCO1FBQzlCLE1BQU0sZ0JBQWdCLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxvQkFBb0IsQ0FBQyxD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QyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7d0dBMUdRLHlCQUF5Qjs0RkFBekIseUJBQXlCLDRLQ25CdEMsbXNCQXlCQTs7NEZETmEseUJBQXlCO2tCQUpyQyxTQUFTOzs4QkFZQyxTQUFTO3NCQURmLEtBQUs7Z0JBUUMsV0FBVztzQkFEakIsS0FBSztnQkFRQyxXQUFXO3NCQURqQixLQUFLO2dCQVFDLFdBQVc7c0JBRGpCLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuXG5pbXBvcnQgeyBQYXNzd29yZFN0cmVuZ3RoUG9zaXRpb25zIH0gZnJvbSAnLi90eXBlcy9wYXNzd29yZC1wb3NpdGlvbnMnO1xuaW1wb3J0IHsgUGFzc3dvcmRTdHJlbmd0aHMgfSBmcm9tICcuL3R5cGVzL3Bhc3N3b3JkLXN0cmVuZ3Rocyc7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIENvbXBvbmVudGUgaW50ZXJubyBxdWUgZXhpYmUgdmlzdWFsbWVudGUgb3MgaW5kaWNhZG9yZXMgZGUgZm9yw6dhIGRlIHNlbmhhLlxuICogVXRpbGl6YWRvIGVtIGNvbmp1bnRvIGNvbSBhIGRpcmV0aXZhIHtAbGluayBQYXNzd29yZFN0cmVuZ3RoRGlyZWN0aXZlfSBwYXJhIGZvcm5lY2VyXG4gKiBmZWVkYmFjayBlbSB0ZW1wbyByZWFsIGVucXVhbnRvIG8gdXN1w6FyaW8gZGlnaXRhLCBtb3N0cmFuZG8gdHLDqnMgbsOtdmVpcyBkZSBmb3LDp2FcbiAqIChmcmFjYSwgbcOpZGlhIGUgZm9ydGUpIGNvbSB0w610dWxvcyBlIGluZGljYWRvcmVzIHZpc3VhaXMgY29uZmlndXLDoXZlaXMuXG4gKlxuICogQGNhdGVnb3J5IElucHV0c1xuICovXG5AQ29tcG9uZW50KHtcbiAgICB0ZW1wbGF0ZVVybDogJy4vcGFzc3dvcmQtc3RyZW5ndGguY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3Bhc3N3b3JkLXN0cmVuZ3RoLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFBhc3N3b3JkU3RyZW5ndGhDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRlID0gaW5qZWN0KFRyYW5zbGF0ZVNlcnZpY2UpO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRleHRvIHBlcnNvbmFsaXphZG8gZXhpYmlkbyBxdWFuZG8gYSBzZW5oYSDDqSBjbGFzc2lmaWNhZGEgY29tbyBmcmFjYS5cbiAgICAgKiBTZSBuw6NvIGluZm9ybWFkbywgdXRpbGl6YSBhIHRyYWR1w6fDo28gcGFkcsOjbyBkbyB0b2tlbiBgcGxhdGZvcm0uYW5ndWxhcl9jb21wb25lbnRzLndlYWtgLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHdlYWtUaXRsZT86IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUZXh0byBwZXJzb25hbGl6YWRvIGV4aWJpZG8gcXVhbmRvIGEgc2VuaGEgw6kgY2xhc3NpZmljYWRhIGNvbW8gbcOpZGlhLlxuICAgICAqIFNlIG7Do28gaW5mb3JtYWRvLCB1dGlsaXphIGEgdHJhZHXDp8OjbyBwYWRyw6NvIGRvIHRva2VuIGBwbGF0Zm9ybS5hbmd1bGFyX2NvbXBvbmVudHMubWVkaXVtYC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBtZWRpdW1UaXRsZT86IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUZXh0byBwZXJzb25hbGl6YWRvIGV4aWJpZG8gcXVhbmRvIGEgc2VuaGEgw6kgY2xhc3NpZmljYWRhIGNvbW8gZm9ydGUuXG4gICAgICogU2UgbsOjbyBpbmZvcm1hZG8sIHV0aWxpemEgYSB0cmFkdcOnw6NvIHBhZHLDo28gZG8gdG9rZW4gYHBsYXRmb3JtLmFuZ3VsYXJfY29tcG9uZW50cy5zdHJvbmdgLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHN0cm9uZ1RpdGxlPzogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIERlc2NyacOnw6NvIGNvbXBsZW1lbnRhciBleGliaWRhIGFiYWl4byBkb3MgaW5kaWNhZG9yZXMgZGUgZm9yw6dhLFxuICAgICAqIG9yaWVudGFuZG8gbyB1c3XDoXJpbyBzb2JyZSBvcyByZXF1aXNpdG9zIGVzcGVyYWRvcyBwYXJhIGEgc2VuaGEuIENhbXBvIG9icmlnYXTDs3Jpby5cbiAgICAgKi9cbiAgICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KVxuICAgIHB1YmxpYyBkZXNjcmlwdGlvbiE6IHN0cmluZztcblxuICAgIHB1YmxpYyB0aXRsZT86IHN0cmluZztcbiAgICBwdWJsaWMgcG9zaXRpb246IFBhc3N3b3JkU3RyZW5ndGhQb3NpdGlvbnMgPSAncmlnaHQnO1xuICAgIHB1YmxpYyBsZWZ0ID0gMDtcbiAgICBwdWJsaWMgdG9wID0gMDtcbiAgICBwdWJsaWMgdmlzaWJsZSA9IGZhbHNlO1xuXG4gICAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnRpdGxlID0gdGhpcy53ZWFrVGl0bGU7XG4gICAgfVxuXG4gICAgcHVibGljIHNldFBhc3N3b3JkU3RyZW5ndGhQb3NpdGlvbigpIHtcbiAgICAgICAgY29uc3QgcGFzc3dvcmRTdHJlbmd0aCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5wYXNzd29yZC1zdHJlbmd0aCcpO1xuXG4gICAgICAgIGlmICghcGFzc3dvcmRTdHJlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgc3dpdGNoICh0aGlzLnBvc2l0aW9uKSB7XG4gICAgICAgICAgICBjYXNlICd0b3AnOlxuICAgICAgICAgICAgICAgIHBhc3N3b3JkU3RyZW5ndGguY2xhc3NMaXN0LmFkZCgncGFzc3dvcmQtc3RyZW5ndGgtLXRvcCcpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAncmlnaHQnOlxuICAgICAgICAgICAgICAgIHBhc3N3b3JkU3RyZW5ndGguY2xhc3NMaXN0LmFkZCgncGFzc3dvcmQtc3RyZW5ndGgtLXJpZ2h0Jyk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdsZWZ0JzpcbiAgICAgICAgICAgICAgICBwYXNzd29yZFN0cmVuZ3RoLmNsYXNzTGlzdC5hZGQoJ3Bhc3N3b3JkLXN0cmVuZ3RoLS1sZWZ0Jyk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgdXBkYXRlSW5kaWNhdG9ycyhwYXNzd29yZFN0cmVuZ3RoOiBQYXNzd29yZFN0cmVuZ3Rocykge1xuICAgICAgICBjb25zdCBzdHJlbmd0aEluZGljYXRvcjEgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjc3RyZW5ndGgtaW5kaWNhdG9yLTEnKTtcbiAgICAgICAgY29uc3Qgc3RyZW5ndGhJbmRpY2F0b3IyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI3N0cmVuZ3RoLWluZGljYXRvci0yJyk7XG4gICAgICAgIGNvbnN0IHN0cmVuZ3RoSW5kaWNhdG9yMyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNzdHJlbmd0aC1pbmRpY2F0b3ItMycpO1xuXG4gICAgICAgIGNvbnN0IG9uSW5kaWNhdG9ycyA9IFtdO1xuICAgICAgICBjb25zdCBpbmRpY2F0b3JzID0gW3N0cmVuZ3RoSW5kaWNhdG9yMSwgc3RyZW5ndGhJbmRpY2F0b3IyLCBzdHJlbmd0aEluZGljYXRvcjNdO1xuXG4gICAgICAgIGxldCBzdHJlbmd0aENsYXNzOiBzdHJpbmc7XG5cbiAgICAgICAgc3dpdGNoIChwYXNzd29yZFN0cmVuZ3RoKSB7XG4gICAgICAgICAgICBjYXNlICd2ZXJ5V2Vhayc6XG4gICAgICAgICAgICAgICAgdGhpcy50aXRsZSA9IHRoaXMud2Vha1RpdGxlID8/IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ3BsYXRmb3JtLmFuZ3VsYXJfY29tcG9uZW50cy53ZWFrJyk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICd3ZWFrJzpcbiAgICAgICAgICAgICAgICB0aGlzLnRpdGxlID0gdGhpcy53ZWFrVGl0bGUgPz8gdGhpcy50cmFuc2xhdGUuaW5zdGFudCgncGxhdGZvcm0uYW5ndWxhcl9jb21wb25lbnRzLndlYWsnKTtcbiAgICAgICAgICAgICAgICBzdHJlbmd0aENsYXNzID0gJ3N0cmVuZ3RoLWluZGljYXRvci0td2Vhayc7XG4gICAgICAgICAgICAgICAgb25JbmRpY2F0b3JzLnB1c2goc3RyZW5ndGhJbmRpY2F0b3IxKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ21lZGl1bSc6XG4gICAgICAgICAgICAgICAgdGhpcy50aXRsZSA9IHRoaXMubWVkaXVtVGl0bGUgPz8gdGhpcy50cmFuc2xhdGUuaW5zdGFudCgncGxhdGZvcm0uYW5ndWxhcl9jb21wb25lbnRzLm1lZGl1bScpO1xuICAgICAgICAgICAgICAgIHN0cmVuZ3RoQ2xhc3MgPSAnc3RyZW5ndGgtaW5kaWNhdG9yLS1tZWRpdW0nO1xuICAgICAgICAgICAgICAgIG9uSW5kaWNhdG9ycy5wdXNoKHN0cmVuZ3RoSW5kaWNhdG9yMSk7XG4gICAgICAgICAgICAgICAgb25JbmRpY2F0b3JzLnB1c2goc3RyZW5ndGhJbmRpY2F0b3IyKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3N0cm9uZyc6XG4gICAgICAgICAgICAgICAgdGhpcy50aXRsZSA9IHRoaXMuc3Ryb25nVGl0bGUgPz8gdGhpcy50cmFuc2xhdGUuaW5zdGFudCgncGxhdGZvcm0uYW5ndWxhcl9jb21wb25lbnRzLnN0cm9uZycpO1xuICAgICAgICAgICAgICAgIHN0cmVuZ3RoQ2xhc3MgPSAnc3RyZW5ndGgtaW5kaWNhdG9yLS1zdHJvbmcnO1xuICAgICAgICAgICAgICAgIG9uSW5kaWNhdG9ycy5wdXNoKHN0cmVuZ3RoSW5kaWNhdG9yMSk7XG4gICAgICAgICAgICAgICAgb25JbmRpY2F0b3JzLnB1c2goc3RyZW5ndGhJbmRpY2F0b3IyKTtcbiAgICAgICAgICAgICAgICBvbkluZGljYXRvcnMucHVzaChzdHJlbmd0aEluZGljYXRvcjMpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgaW5kaWNhdG9ycy5mb3JFYWNoKChpbmRpY2F0b3IpID0+IHtcbiAgICAgICAgICAgIGluZGljYXRvcj8uY2xhc3NMaXN0LnJlbW92ZShcbiAgICAgICAgICAgICAgICAnc3RyZW5ndGgtaW5kaWNhdG9yLS13ZWFrJyxcbiAgICAgICAgICAgICAgICAnc3RyZW5ndGgtaW5kaWNhdG9yLS1tZWRpdW0nLFxuICAgICAgICAgICAgICAgICdzdHJlbmd0aC1pbmRpY2F0b3ItLXN0cm9uZycsXG4gICAgICAgICAgICApO1xuICAgICAgICB9KTtcblxuICAgICAgICBvbkluZGljYXRvcnMuZm9yRWFjaCgoaW5kaWNhdG9yKSA9PiB7XG4gICAgICAgICAgICBpbmRpY2F0b3I/LmNsYXNzTGlzdC5hZGQoc3RyZW5ndGhDbGFzcyk7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cblxuIiwiPGRpdlxuICAgIGNsYXNzPVwicGFzc3dvcmQtc3RyZW5ndGhcIlxuICAgIFtuZ1N0eWxlXT1cIntcbiAgICAgICAgbGVmdDogbGVmdCArICdweCcsXG4gICAgICAgIHRvcDogdG9wICsgJ3B4JyxcbiAgICB9XCJcbiAgICBbbmdDbGFzc109XCJbJ3Bhc3N3b3JkLXN0cmVuZ3RoLS0nICsgcG9zaXRpb25dXCJcbj5cbiAgICA8c3BhbiBjbGFzcz1cInBhc3N3b3JkLXN0cmVuZ3RoLXRpdGxlXCI+e3sgdGl0bGUgfX08L3NwYW4+XG4gICAgPGRpdiBjbGFzcz1cInN0cmVuZ3RoLWluZGljYXRvcnNcIj5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICAgIGNsYXNzPVwic3RyZW5ndGgtaW5kaWNhdG9yXCJcbiAgICAgICAgICAgIGlkPVwic3RyZW5ndGgtaW5kaWNhdG9yLTFcIlxuICAgICAgICA+PC9zcGFuPlxuICAgICAgICA8c3BhblxuICAgICAgICAgICAgY2xhc3M9XCJzdHJlbmd0aC1pbmRpY2F0b3JcIlxuICAgICAgICAgICAgaWQ9XCJzdHJlbmd0aC1pbmRpY2F0b3ItMlwiXG4gICAgICAgID48L3NwYW4+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgICBjbGFzcz1cInN0cmVuZ3RoLWluZGljYXRvclwiXG4gICAgICAgICAgICBpZD1cInN0cmVuZ3RoLWluZGljYXRvci0zXCJcbiAgICAgICAgPjwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgICA8c3BhbiBjbGFzcz1cImNvbnRlbnRcIj57eyBkZXNjcmlwdGlvbiB9fTwvc3Bhbj5cbjwvZGl2PlxuIl19
113
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFzc3dvcmQtc3RyZW5ndGguY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL3Bhc3N3b3JkLXN0cmVuZ3RoL3NyYy9saWIvcGFzc3dvcmQtc3RyZW5ndGgvcGFzc3dvcmQtc3RyZW5ndGguY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL3Bhc3N3b3JkLXN0cmVuZ3RoL3NyYy9saWIvcGFzc3dvcmQtc3RyZW5ndGgvcGFzc3dvcmQtc3RyZW5ndGguY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWpFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBSXZELE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7O0FBRW5EOzs7Ozs7O0dBT0c7QUFPSCxNQUFNLE9BQU8seUJBQXlCO0lBQ2pCLFNBQVMsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUV0RDs7O09BR0c7SUFFSSxTQUFTLENBQVU7SUFFMUI7OztPQUdHO0lBRUksV0FBVyxDQUFVO0lBRTVCOzs7T0FHRztJQUVJLFdBQVcsQ0FBVTtJQUU1Qjs7O09BR0c7SUFFSSxXQUFXLENBQVU7SUFFckIsS0FBSyxDQUFVO0lBQ2YsUUFBUSxHQUE4QixPQUFPLENBQUM7SUFDOUMsSUFBSSxHQUFHLENBQUMsQ0FBQztJQUNULEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDUixPQUFPLEdBQUcsS0FBSyxDQUFDO0lBRWhCLFFBQVE7UUFDWCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDaEMsQ0FBQztJQUVNLDJCQUEyQjtRQUM5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L0IsU0FBUyxFQUFFLFNBQVMsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDNUMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO3dHQTFHUSx5QkFBeUI7NEZBQXpCLHlCQUF5QixnTUN0QnRDLG1zQkF5QkEsNm5ERExjLE9BQU8sMkVBQUUsT0FBTzs7NEZBRWpCLHlCQUF5QjtrQkFOckMsU0FBUztpQ0FHTSxJQUFJLFdBQ1AsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDOzhCQVVwQixTQUFTO3NCQURmLEtBQUs7Z0JBUUMsV0FBVztzQkFEakIsS0FBSztnQkFRQyxXQUFXO3NCQURqQixLQUFLO2dCQVFDLFdBQVc7c0JBRGpCLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuXHJcbmltcG9ydCB7IFBhc3N3b3JkU3RyZW5ndGhQb3NpdGlvbnMgfSBmcm9tICcuL3R5cGVzL3Bhc3N3b3JkLXBvc2l0aW9ucyc7XHJcbmltcG9ydCB7IFBhc3N3b3JkU3RyZW5ndGhzIH0gZnJvbSAnLi90eXBlcy9wYXNzd29yZC1zdHJlbmd0aHMnO1xyXG5pbXBvcnQgeyBOZ1N0eWxlLCBOZ0NsYXNzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuXHJcbi8qKlxyXG4gKiBAZGVzY3JpcHRpb24gQ29tcG9uZW50ZSBpbnRlcm5vIHF1ZSBleGliZSB2aXN1YWxtZW50ZSBvcyBpbmRpY2Fkb3JlcyBkZSBmb3LDp2EgZGUgc2VuaGEuXHJcbiAqIFV0aWxpemFkbyBlbSBjb25qdW50byBjb20gYSBkaXJldGl2YSB7QGxpbmsgUGFzc3dvcmRTdHJlbmd0aERpcmVjdGl2ZX0gcGFyYSBmb3JuZWNlclxyXG4gKiBmZWVkYmFjayBlbSB0ZW1wbyByZWFsIGVucXVhbnRvIG8gdXN1w6FyaW8gZGlnaXRhLCBtb3N0cmFuZG8gdHLDqnMgbsOtdmVpcyBkZSBmb3LDp2FcclxuICogKGZyYWNhLCBtw6lkaWEgZSBmb3J0ZSkgY29tIHTDrXR1bG9zIGUgaW5kaWNhZG9yZXMgdmlzdWFpcyBjb25maWd1csOhdmVpcy5cclxuICpcclxuICogQGNhdGVnb3J5IElucHV0c1xyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vcGFzc3dvcmQtc3RyZW5ndGguY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vcGFzc3dvcmQtc3RyZW5ndGguY29tcG9uZW50LnNjc3MnXSxcclxuICAgIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgICBpbXBvcnRzOiBbTmdTdHlsZSwgTmdDbGFzc10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQYXNzd29yZFN0cmVuZ3RoQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRlID0gaW5qZWN0KFRyYW5zbGF0ZVNlcnZpY2UpO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGRlc2NyaXB0aW9uIFRleHRvIHBlcnNvbmFsaXphZG8gZXhpYmlkbyBxdWFuZG8gYSBzZW5oYSDDqSBjbGFzc2lmaWNhZGEgY29tbyBmcmFjYS5cclxuICAgICAqIFNlIG7Do28gaW5mb3JtYWRvLCB1dGlsaXphIGEgdHJhZHXDp8OjbyBwYWRyw6NvIGRvIHRva2VuIGBwbGF0Zm9ybS5hbmd1bGFyX2NvbXBvbmVudHMud2Vha2AuXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgd2Vha1RpdGxlPzogc3RyaW5nO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGRlc2NyaXB0aW9uIFRleHRvIHBlcnNvbmFsaXphZG8gZXhpYmlkbyBxdWFuZG8gYSBzZW5oYSDDqSBjbGFzc2lmaWNhZGEgY29tbyBtw6lkaWEuXHJcbiAgICAgKiBTZSBuw6NvIGluZm9ybWFkbywgdXRpbGl6YSBhIHRyYWR1w6fDo28gcGFkcsOjbyBkbyB0b2tlbiBgcGxhdGZvcm0uYW5ndWxhcl9jb21wb25lbnRzLm1lZGl1bWAuXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgbWVkaXVtVGl0bGU/OiBzdHJpbmc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAZGVzY3JpcHRpb24gVGV4dG8gcGVyc29uYWxpemFkbyBleGliaWRvIHF1YW5kbyBhIHNlbmhhIMOpIGNsYXNzaWZpY2FkYSBjb21vIGZvcnRlLlxyXG4gICAgICogU2UgbsOjbyBpbmZvcm1hZG8sIHV0aWxpemEgYSB0cmFkdcOnw6NvIHBhZHLDo28gZG8gdG9rZW4gYHBsYXRmb3JtLmFuZ3VsYXJfY29tcG9uZW50cy5zdHJvbmdgLlxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIHN0cm9uZ1RpdGxlPzogc3RyaW5nO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGRlc2NyaXB0aW9uIERlc2NyacOnw6NvIGNvbXBsZW1lbnRhciBleGliaWRhIGFiYWl4byBkb3MgaW5kaWNhZG9yZXMgZGUgZm9yw6dhLFxyXG4gICAgICogb3JpZW50YW5kbyBvIHVzdcOhcmlvIHNvYnJlIG9zIHJlcXVpc2l0b3MgZXNwZXJhZG9zIHBhcmEgYSBzZW5oYS4gQ2FtcG8gb2JyaWdhdMOzcmlvLlxyXG4gICAgICovXHJcbiAgICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KVxyXG4gICAgcHVibGljIGRlc2NyaXB0aW9uITogc3RyaW5nO1xyXG5cclxuICAgIHB1YmxpYyB0aXRsZT86IHN0cmluZztcclxuICAgIHB1YmxpYyBwb3NpdGlvbjogUGFzc3dvcmRTdHJlbmd0aFBvc2l0aW9ucyA9ICdyaWdodCc7XHJcbiAgICBwdWJsaWMgbGVmdCA9IDA7XHJcbiAgICBwdWJsaWMgdG9wID0gMDtcclxuICAgIHB1YmxpYyB2aXNpYmxlID0gZmFsc2U7XHJcblxyXG4gICAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMudGl0bGUgPSB0aGlzLndlYWtUaXRsZTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc2V0UGFzc3dvcmRTdHJlbmd0aFBvc2l0aW9uKCkge1xyXG4gICAgICAgIGNvbnN0IHBhc3N3b3JkU3RyZW5ndGggPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcucGFzc3dvcmQtc3RyZW5ndGgnKTtcclxuXHJcbiAgICAgICAgaWYgKCFwYXNzd29yZFN0cmVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHN3aXRjaCAodGhpcy5wb3NpdGlvbikge1xyXG4gICAgICAgICAgICBjYXNlICd0b3AnOlxyXG4gICAgICAgICAgICAgICAgcGFzc3dvcmRTdHJlbmd0aC5jbGFzc0xpc3QuYWRkKCdwYXNzd29yZC1zdHJlbmd0aC0tdG9wJyk7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSAncmlnaHQnOlxyXG4gICAgICAgICAgICAgICAgcGFzc3dvcmRTdHJlbmd0aC5jbGFzc0xpc3QuYWRkKCdwYXNzd29yZC1zdHJlbmd0aC0tcmlnaHQnKTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlICdsZWZ0JzpcclxuICAgICAgICAgICAgICAgIHBhc3N3b3JkU3RyZW5ndGguY2xhc3NMaXN0LmFkZCgncGFzc3dvcmQtc3RyZW5ndGgtLWxlZnQnKTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgdXBkYXRlSW5kaWNhdG9ycyhwYXNzd29yZFN0cmVuZ3RoOiBQYXNzd29yZFN0cmVuZ3Rocykge1xyXG4gICAgICAgIGNvbnN0IHN0cmVuZ3RoSW5kaWNhdG9yMSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNzdHJlbmd0aC1pbmRpY2F0b3ItMScpO1xyXG4gICAgICAgIGNvbnN0IHN0cmVuZ3RoSW5kaWNhdG9yMiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNzdHJlbmd0aC1pbmRpY2F0b3ItMicpO1xyXG4gICAgICAgIGNvbnN0IHN0cmVuZ3RoSW5kaWNhdG9yMyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNzdHJlbmd0aC1pbmRpY2F0b3ItMycpO1xyXG5cclxuICAgICAgICBjb25zdCBvbkluZGljYXRvcnMgPSBbXTtcclxuICAgICAgICBjb25zdCBpbmRpY2F0b3JzID0gW3N0cmVuZ3RoSW5kaWNhdG9yMSwgc3RyZW5ndGhJbmRpY2F0b3IyLCBzdHJlbmd0aEluZGljYXRvcjNdO1xyXG5cclxuICAgICAgICBsZXQgc3RyZW5ndGhDbGFzczogc3RyaW5nO1xyXG5cclxuICAgICAgICBzd2l0Y2ggKHBhc3N3b3JkU3RyZW5ndGgpIHtcclxuICAgICAgICAgICAgY2FzZSAndmVyeVdlYWsnOlxyXG4gICAgICAgICAgICAgICAgdGhpcy50aXRsZSA9IHRoaXMud2Vha1RpdGxlID8/IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ3BsYXRmb3JtLmFuZ3VsYXJfY29tcG9uZW50cy53ZWFrJyk7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSAnd2Vhayc6XHJcbiAgICAgICAgICAgICAgICB0aGlzLnRpdGxlID0gdGhpcy53ZWFrVGl0bGUgPz8gdGhpcy50cmFuc2xhdGUuaW5zdGFudCgncGxhdGZvcm0uYW5ndWxhcl9jb21wb25lbnRzLndlYWsnKTtcclxuICAgICAgICAgICAgICAgIHN0cmVuZ3RoQ2xhc3MgPSAnc3RyZW5ndGgtaW5kaWNhdG9yLS13ZWFrJztcclxuICAgICAgICAgICAgICAgIG9uSW5kaWNhdG9ycy5wdXNoKHN0cmVuZ3RoSW5kaWNhdG9yMSk7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSAnbWVkaXVtJzpcclxuICAgICAgICAgICAgICAgIHRoaXMudGl0bGUgPSB0aGlzLm1lZGl1bVRpdGxlID8/IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ3BsYXRmb3JtLmFuZ3VsYXJfY29tcG9uZW50cy5tZWRpdW0nKTtcclxuICAgICAgICAgICAgICAgIHN0cmVuZ3RoQ2xhc3MgPSAnc3RyZW5ndGgtaW5kaWNhdG9yLS1tZWRpdW0nO1xyXG4gICAgICAgICAgICAgICAgb25JbmRpY2F0b3JzLnB1c2goc3RyZW5ndGhJbmRpY2F0b3IxKTtcclxuICAgICAgICAgICAgICAgIG9uSW5kaWNhdG9ycy5wdXNoKHN0cmVuZ3RoSW5kaWNhdG9yMik7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSAnc3Ryb25nJzpcclxuICAgICAgICAgICAgICAgIHRoaXMudGl0bGUgPSB0aGlzLnN0cm9uZ1RpdGxlID8/IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ3BsYXRmb3JtLmFuZ3VsYXJfY29tcG9uZW50cy5zdHJvbmcnKTtcclxuICAgICAgICAgICAgICAgIHN0cmVuZ3RoQ2xhc3MgPSAnc3RyZW5ndGgtaW5kaWNhdG9yLS1zdHJvbmcnO1xyXG4gICAgICAgICAgICAgICAgb25JbmRpY2F0b3JzLnB1c2goc3RyZW5ndGhJbmRpY2F0b3IxKTtcclxuICAgICAgICAgICAgICAgIG9uSW5kaWNhdG9ycy5wdXNoKHN0cmVuZ3RoSW5kaWNhdG9yMik7XHJcbiAgICAgICAgICAgICAgICBvbkluZGljYXRvcnMucHVzaChzdHJlbmd0aEluZGljYXRvcjMpO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpbmRpY2F0b3JzLmZvckVhY2goKGluZGljYXRvcikgPT4ge1xyXG4gICAgICAgICAgICBpbmRpY2F0b3I/LmNsYXNzTGlzdC5yZW1vdmUoXHJcbiAgICAgICAgICAgICAgICAnc3RyZW5ndGgtaW5kaWNhdG9yLS13ZWFrJyxcclxuICAgICAgICAgICAgICAgICdzdHJlbmd0aC1pbmRpY2F0b3ItLW1lZGl1bScsXHJcbiAgICAgICAgICAgICAgICAnc3RyZW5ndGgtaW5kaWNhdG9yLS1zdHJvbmcnLFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBvbkluZGljYXRvcnMuZm9yRWFjaCgoaW5kaWNhdG9yKSA9PiB7XHJcbiAgICAgICAgICAgIGluZGljYXRvcj8uY2xhc3NMaXN0LmFkZChzdHJlbmd0aENsYXNzKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxufVxyXG4iLCI8ZGl2XG4gICAgY2xhc3M9XCJwYXNzd29yZC1zdHJlbmd0aFwiXG4gICAgW25nU3R5bGVdPVwie1xuICAgICAgICBsZWZ0OiBsZWZ0ICsgJ3B4JyxcbiAgICAgICAgdG9wOiB0b3AgKyAncHgnLFxuICAgIH1cIlxuICAgIFtuZ0NsYXNzXT1cIlsncGFzc3dvcmQtc3RyZW5ndGgtLScgKyBwb3NpdGlvbl1cIlxuPlxuICAgIDxzcGFuIGNsYXNzPVwicGFzc3dvcmQtc3RyZW5ndGgtdGl0bGVcIj57eyB0aXRsZSB9fTwvc3Bhbj5cbiAgICA8ZGl2IGNsYXNzPVwic3RyZW5ndGgtaW5kaWNhdG9yc1wiPlxuICAgICAgICA8c3BhblxuICAgICAgICAgICAgY2xhc3M9XCJzdHJlbmd0aC1pbmRpY2F0b3JcIlxuICAgICAgICAgICAgaWQ9XCJzdHJlbmd0aC1pbmRpY2F0b3ItMVwiXG4gICAgICAgID48L3NwYW4+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgICBjbGFzcz1cInN0cmVuZ3RoLWluZGljYXRvclwiXG4gICAgICAgICAgICBpZD1cInN0cmVuZ3RoLWluZGljYXRvci0yXCJcbiAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICAgIGNsYXNzPVwic3RyZW5ndGgtaW5kaWNhdG9yXCJcbiAgICAgICAgICAgIGlkPVwic3RyZW5ndGgtaW5kaWNhdG9yLTNcIlxuICAgICAgICA+PC9zcGFuPlxuICAgIDwvZGl2PlxuICAgIDxzcGFuIGNsYXNzPVwiY29udGVudFwiPnt7IGRlc2NyaXB0aW9uIH19PC9zcGFuPlxuPC9kaXY+XG4iXX0=
@@ -1,6 +1,6 @@
1
1
  import { ApplicationRef,
2
2
  // NOSONAR - 'ComponentFactoryResolver' is deprecated.
3
- ComponentFactoryResolver, Directive, ElementRef, HostListener, Injector, Input, inject } from '@angular/core';
3
+ ComponentFactoryResolver, Directive, ElementRef, HostListener, Injector, Input, inject, } from '@angular/core';
4
4
  import { isNullOrUndefined } from '@seniorsistemas/angular-components/utils';
5
5
  import { PasswordStrengthComponent } from './password-strength.component';
6
6
  import * as i0 from "@angular/core";
@@ -221,12 +221,13 @@ export class PasswordStrengthDirective {
221
221
  return 'strong';
222
222
  }
223
223
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PasswordStrengthDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
224
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: PasswordStrengthDirective, selector: "[sPasswordStrength]", inputs: { enabled: ["sPasswordStrength", "enabled"], passwordStrengthValidation: "passwordStrengthValidation", passwordStrengthPosition: "passwordStrengthPosition", passwordStrengthWeakTitle: "passwordStrengthWeakTitle", passwordStrengthMediumTitle: "passwordStrengthMediumTitle", passwordStrengthStrongTitle: "passwordStrengthStrongTitle", passwordStrengthDescription: "passwordStrengthDescription" }, host: { listeners: { "keyup": "onFocus()", "focus": "onFocus()", "blur": "onBlur()" } }, ngImport: i0 });
224
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: PasswordStrengthDirective, isStandalone: true, selector: "[sPasswordStrength]", inputs: { enabled: ["sPasswordStrength", "enabled"], passwordStrengthValidation: "passwordStrengthValidation", passwordStrengthPosition: "passwordStrengthPosition", passwordStrengthWeakTitle: "passwordStrengthWeakTitle", passwordStrengthMediumTitle: "passwordStrengthMediumTitle", passwordStrengthStrongTitle: "passwordStrengthStrongTitle", passwordStrengthDescription: "passwordStrengthDescription" }, host: { listeners: { "keyup": "onFocus()", "focus": "onFocus()", "blur": "onBlur()" } }, ngImport: i0 });
225
225
  }
226
226
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PasswordStrengthDirective, decorators: [{
227
227
  type: Directive,
228
228
  args: [{
229
229
  selector: '[sPasswordStrength]',
230
+ standalone: true,
230
231
  }]
231
232
  }], propDecorators: { enabled: [{
232
233
  type: Input,
@@ -254,4 +255,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
254
255
  type: HostListener,
255
256
  args: ['blur']
256
257
  }] } });
257
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFzc3dvcmQtc3RyZW5ndGguZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL3Bhc3N3b3JkLXN0cmVuZ3RoL3NyYy9saWIvcGFzc3dvcmQtc3RyZW5ndGgvcGFzc3dvcmQtc3RyZW5ndGguZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjO0FBQ3ZCLHNEQUFzRDtBQUN0RCx3QkFBd0IsRUFBZ0IsU0FBUyxFQUFFLFVBQVUsRUFBbUIsWUFBWSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JKLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBRTdFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLCtCQUErQixDQUFDOztBQUkxRTs7Ozs7Ozs7Ozs7Ozs7OztHQWdCRztBQUlILE1BQU0sT0FBTyx5QkFBeUI7SUFDakIsVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNoQyxNQUFNLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ2hDLHdCQUF3QixHQUFHLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO0lBQzVELFFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7SUFFN0M7Ozs7O09BS0c7SUFFSSxPQUFPLEdBQUcsSUFBSSxDQUFDO0lBRXRCOzs7Ozs7T0FNRztJQUVJLDBCQUEwQixDQUEwQztJQUUzRTs7Ozs7O09BTUc7SUFFSSx3QkFBd0IsR0FBOEIsT0FBTyxDQUFDO0lBRXJFOzs7T0FHRztJQUVJLHlCQUF5QixDQUFVO0lBRTFDOzs7T0FHRztJQUVJLDJCQUEyQixDQUFVO0lBRTVDOzs7T0FHRztJQUVJLDJCQUEyQixDQUFVO0lBRTVDOzs7T0FHRztJQUVJLDJCQUEyQixDQUFVO0lB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LE9BQU87Z0JBbUJkLE1BQU07c0JBRFosWUFBWTt1QkFBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXBwbGljYXRpb25SZWYsIFxuLy8gTk9TT05BUiAtICdDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXInIGlzIGRlcHJlY2F0ZWQuXG5Db21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsIENvbXBvbmVudFJlZiwgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBFbWJlZGRlZFZpZXdSZWYsIEhvc3RMaXN0ZW5lciwgSW5qZWN0b3IsIElucHV0LCBPbkluaXQsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaXNOdWxsT3JVbmRlZmluZWQgfSBmcm9tICdAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzL3V0aWxzJztcblxuaW1wb3J0IHsgUGFzc3dvcmRTdHJlbmd0aENvbXBvbmVudCB9IGZyb20gJy4vcGFzc3dvcmQtc3RyZW5ndGguY29tcG9uZW50JztcbmltcG9ydCB7IFBhc3N3b3JkU3RyZW5ndGhQb3NpdGlvbnMgfSBmcm9tICcuL3R5cGVzL3Bhc3N3b3JkLXBvc2l0aW9ucyc7XG5pbXBvcnQgeyBQYXNzd29yZFN0cmVuZ3RocyB9IGZyb20gJy4vdHlwZXMvcGFzc3dvcmQtc3RyZW5ndGhzJztcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gRGlyZXRpdmEgcXVlIGFkaWNpb25hIG8gY29tcG9ydGFtZW50byBkZSB2ZXJpZmljYcOnw6NvIGRlIGZvcsOnYSBkZSBzZW5oYVxuICogYSB1bSBjYW1wbyBkZSBpbnB1dCBleGlzdGVudGUuIEFvIHJlY2ViZXIgZm9jbyBvdSBhIGNhZGEgdGVjbGEgZGlnaXRhZGEsIGV4aWJlIG9cbiAqIGNvbXBvbmVudGUge0BsaW5rIFBhc3N3b3JkU3RyZW5ndGhDb21wb25lbnR9IHBvc2ljaW9uYWRvIGRpbmFtaWNhbWVudGUgYW8gcmVkb3IgZG8gY2FtcG8sXG4gKiBmb3JuZWNlbmRvIGZlZWRiYWNrIHZpc3VhbCBzb2JyZSBhIGZvcsOnYSBkYSBzZW5oYSBpbmZvcm1hZGEuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYGh0bWxcbiAqIDxpbnB1dFxuICogICB0eXBlPVwicGFzc3dvcmRcIlxuICogICBbc1Bhc3N3b3JkU3RyZW5ndGhdPVwidHJ1ZVwiXG4gKiAgIHBhc3N3b3JkU3RyZW5ndGhEZXNjcmlwdGlvbj1cIkEgc2VuaGEgZGV2ZSBjb250ZXIgbGV0cmFzIG1hacO6c2N1bGFzLCBuw7ptZXJvcyBlIGNhcmFjdGVyZXMgZXNwZWNpYWlzLlwiXG4gKiAgIFtwYXNzd29yZFN0cmVuZ3RoVmFsaWRhdGlvbl09XCJteVZhbGlkYXRvclwiIC8+XG4gKiBgYGBcbiAqXG4gKiBAY2F0ZWdvcnkgSW5wdXRzXG4gKi9cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW3NQYXNzd29yZFN0cmVuZ3RoXScsXG59KVxuZXhwb3J0IGNsYXNzIFBhc3N3b3JkU3RyZW5ndGhEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZWxlbWVudFJlZiA9IGluamVjdChFbGVtZW50UmVmKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFwcFJlZiA9IGluamVjdChBcHBsaWNhdGlvblJlZik7XG4gICAgcHJpdmF0ZSByZWFkb25seSBjb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIgPSBpbmplY3QoQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGluamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBIYWJpbGl0YSBvdSBkZXNhYmlsaXRhIG8gY29tcG9ydGFtZW50byBkYSBkaXJldGl2YS5cbiAgICAgKiBRdWFuZG8gYGZhbHNlYCwgbyBpbmRpY2Fkb3IgZGUgZm9yw6dhIG7Do28gc2Vyw6EgZXhpYmlkby5cbiAgICAgKlxuICAgICAqIEBkZWZhdWx0IHRydWVcbiAgICAgKi9cbiAgICBASW5wdXQoJ3NQYXNzd29yZFN0cmVuZ3RoJylcbiAgICBwdWJsaWMgZW5hYmxlZCA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gRnVuw6fDo28gY3VzdG9taXphZGEgZGUgdmFsaWRhw6fDo28gZGEgZm9yw6dhIGRhIHNlbmhhLlxuICAgICAqIFJlY2ViZSBvIGNvbnRlw7pkbyBhdHVhbCBkbyBjYW1wbyBlIGRldmUgcmV0b3JuYXIgdW0gdmFsb3IgZG8gdGlwbyB7QGxpbmsgUGFzc3dvcmRTdHJlbmd0aHN9XG4gICAgICogKGAndmVyeVdlYWsnYCwgYCd3ZWFrJ2AsIGAnbWVkaXVtJ2Agb3UgYCdzdHJvbmcnYCkuXG4gICAgICogU2UgbsOjbyBpbmZvcm1hZGEsIHV0aWxpemEgYSB2YWxpZGHDp8OjbyBwYWRyw6NvIGJhc2VhZGEgZW0gY3JpdMOpcmlvcyBkZSBjb21wcmltZW50byxcbiAgICAgKiBsZXRyYXMgbWFpw7pzY3VsYXMvbWluw7pzY3VsYXMsIG7Dum1lcm9zIGUgY2FyYWN0ZXJlcyBlc3BlY2lhaXMuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgcGFzc3dvcmRTdHJlbmd0aFZhbGlkYXRpb24/OiAoY29udGVudDogc3RyaW5nKSA9PiBQYXNzd29yZFN0cmVuZ3RocztcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBQb3Npw6fDo28gcHJlZmVyZW5jaWFsIG9uZGUgbyBpbmRpY2Fkb3IgZGUgZm9yw6dhIHNlcsOhIGV4aWJpZG8gZW0gcmVsYcOnw6NvIGFvIGNhbXBvLlxuICAgICAqIEFjZWl0YSBgJ3JpZ2h0J2AsIGAnbGVmdCdgIG91IGAndG9wJ2AuIE8gY29tcG9uZW50ZSB0ZW50YSBwb3NpY2lvbmFyIGF1dG9tYXRpY2FtZW50ZVxuICAgICAqIGVtIG91dHJvIGxhZG8gY2FzbyBuw6NvIGhhamEgZXNwYcOnbyBzdWZpY2llbnRlIG5hIHBvc2nDp8OjbyBlc3BlY2lmaWNhZGEuXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCAncmlnaHQnXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgcGFzc3dvcmRTdHJlbmd0aFBvc2l0aW9uOiBQYXNzd29yZFN0cmVuZ3RoUG9zaXRpb25zID0gJ3JpZ2h0JztcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUZXh0byBwZXJzb25hbGl6YWRvIGV4aWJpZG8gcXVhbmRvIGEgc2VuaGEgw6kgY2xhc3NpZmljYWRhIGNvbW8gZnJhY2EuXG4gICAgICogU2UgbsOjbyBpbmZvcm1hZG8sIHV0aWxpemEgYSB0cmFkdcOnw6NvIHBhZHLDo28uXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgcGFzc3dvcmRTdHJlbmd0aFdlYWtUaXRsZT86IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUZXh0byBwZXJzb25hbGl6YWRvIGV4aWJpZG8gcXVhbmRvIGEgc2VuaGEgw6kgY2xhc3NpZmljYWRhIGNvbW8gbcOpZGlhLlxuICAgICAqIFNlIG7Do28gaW5mb3JtYWRvLCB1dGlsaXphIGEgdHJhZHXDp8OjbyBwYWRyw6NvLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHBhc3N3b3JkU3RyZW5ndGhNZWRpdW1UaXRsZT86IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUZXh0byBwZXJzb25hbGl6YWRvIGV4aWJpZG8gcXVhbmRvIGEgc2VuaGEgw6kgY2xhc3NpZmljYWRhIGNvbW8gZm9ydGUuXG4gICAgICogU2UgbsOjbyBpbmZvcm1hZG8sIHV0aWxpemEgYSB0cmFkdcOnw6NvIHBhZHLDo28uXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgcGFzc3dvcmRTdHJlbmd0aFN0cm9uZ1RpdGxlPzogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIERlc2NyacOnw6NvIGNvbXBsZW1lbnRhciBleGliaWRhIG5vIGluZGljYWRvciBkZSBmb3LDp2EgZGUgc2VuaGEsXG4gICAgICogb3JpZW50YW5kbyBvIHVzdcOhcmlvIHNvYnJlIG9zIHJlcXVpc2l0b3MgZGEgc2VuaGEuIENhbXBvIG9icmlnYXTDs3Jpby5cbiAgICAgKi9cbiAgICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KVxuICAgIHB1YmxpYyBwYXNzd29yZFN0cmVuZ3RoRGVzY3JpcHRpb24hOiBzdHJpbmc7XG5cbiAgICBwcml2YXRlIGNvbXBvbmVudFJlZj86IG51bGwgfCBDb21wb25lbnRSZWY8UGFzc3dvcmRTdHJlbmd0aENvbXBvbmVudD47XG5cbiAgICBwdWJsaWMgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMudmFsaWRhdGVQcm9wZXJ0aWVzKCk7XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5dXAnKVxuICAgIEBIb3N0TGlzdGVuZXIoJ2ZvY3VzJylcbiAgICBwdWJsaWMgb25Gb2N1cygpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY29udGVudCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnZhbHVlID8/ICcnO1xuXG4gICAgICAgIHRoaXMuY3JlYXRlUGFzc3dvcmRTdHJlbmd0aCgpO1xuICAgICAgICBjb25zdCBjb21wb25lbnQgPSB0aGlzLmNvbXBvbmVudFJlZj8uaW5zdGFuY2U7XG4gICAgICAgIGlmICghY29tcG9uZW50KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNvbnRlbnQpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnBhc3N3b3JkU3RyZW5ndGhWYWxpZGF0aW9uKSB7XG4gICAgICAgICAgICAgICAgY29tcG9uZW50LnVwZGF0ZUluZGljYXRvcnModGhpcy5wYXNzd29yZFN0cmVuZ3RoVmFsaWRhdGlvbihjb250ZW50KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb21wb25lbnQudXBkYXRlSW5kaWNhdG9ycygndmVyeVdlYWsnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2JsdXInKVxuICAgIHB1YmxpYyBvbkJsdXIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGVzdHJveVBhc3N3b3JkU3RyZW5ndGgoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZVBhc3N3b3JkU3RyZW5ndGgoKSB7XG4gICAgICAgIGlmICh0aGlzLmVuYWJsZWQgJiYgaXNOdWxsT3JVbmRlZmluZWQodGhpcy5jb21wb25lbnRSZWYpKSB7XG4gICAgICAgICAgICBjb25zdCBjb21wb25lbnRGYWN0b3J5ID0gdGhpcy5jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkoUGFzc3dvcmRTdHJlbmd0aENvbXBvbmVudCk7XG4gICAgICAgICAgICB0aGlzLmNvbXBvbmVudFJlZiA9IGNvbXBvbmVudEZhY3RvcnkuY3JlYXRlKHRoaXMuaW5qZWN0b3IpO1xuICAgICAgICAgICAgdGhpcy5hcHBSZWYuYXR0YWNoVmlldyh0aGlzLmNvbXBvbmVudFJlZi5ob3N0Vmlldyk7XG4gICAgICAgICAgICBjb25zdCBkb21FbGVtID0gKHRoaXMuY29tcG9uZW50UmVmLmhvc3RWaWV3IGFzIEVtYmVkZGVkVmlld1JlZjxhbnk+KS5yb290Tm9kZXNbMF0gYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRvbUVsZW0pO1xuICAgICAgICAgICAgdGhpcy5zZXRQYXNzd29yZFN0cmVuZ3RoQ29tcG9uZW50UHJvcGVydGllcygpO1xuICAgICAgICAgICAgdGhpcy5zaG93UGFzc3dvcmRTdHJlbmd0aCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzaG93UGFzc3dvcmRTdHJlbmd0aCgpIHtcbiAgICAgICAgaWYgKHRoaXMuY29tcG9uZW50UmVmKSB7XG4gICAgICAgICAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS52aXNpYmxlID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIE5PU09OQVIgLSBSZWZhY3RvciB0aGlzIGZ1bmN0aW9uIHRvIHJlZHVjZSBpdHMgQ29nbml0aXZlIENvbXBsZXhpdHkgZnJvbSAxNiB0byB0aGUgMTUgYWxsb3dlZC5cbiAgICBwcml2YXRlIHNldFBhc3N3b3JkU3RyZW5ndGhDb21wb25lbnRQcm9wZXJ0aWVzKCkge1xuICAgICAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQodGhpcy5jb21wb25lbnRSZWYpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5wb3NpdGlvbiA9IHRoaXMucGFzc3dvcmRTdHJlbmd0aFBvc2l0aW9uO1xuICAgICAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS53ZWFrVGl0bGUgPSB0aGlzLnBhc3N3b3JkU3RyZW5ndGhXZWFrVGl0bGU7XG4gICAgICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLm1lZGl1bVRpdGxlID0gdGhpcy5wYXNzd29yZFN0cmVuZ3RoTWVkaXVtVGl0bGU7XG4gICAgICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLnN0cm9uZ1RpdGxlID0gdGhpcy5wYXNzd29yZFN0cmVuZ3RoU3Ryb25nVGl0bGU7XG4gICAgICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLmRlc2NyaXB0aW9uID0gdGhpcy5wYXNzd29yZFN0cmVuZ3RoRGVzY3JpcHRpb247XG5cbiAgICAgICAgY29uc3QgeyB0b3AsIHJpZ2h0LCBib3R0b20sIGxlZnQgfSA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgICAgIGNvbnN0IG1hcmdpbiA9IDIwO1xuICAgICAgICBjb25zdCBlbGVtZW50UmVmSGVpZ2h0ID0gYm90dG9tIC0gdG9wO1xuICAgICAgICBjb25zdCBlbGVtZW50UmVmV2lkdGggPSByaWdodCAtIGxlZnQ7XG4gICAgICAgIGNvbnN0IHNhZmVTcGFjZSA9IDE1MDtcblxuICAgICAgICBsZXQgcG9zaXRpb25lZCA9IGZhbHNlO1xuICAgICAgICBjb25zdCBpbnZhbGlkT3B0aW9uczogUGFzc3dvcmRTdHJlbmd0aFBvc2l0aW9uc1tdID0gW107XG5cbiAgICAgICAgd2hpbGUgKCFwb3NpdGlvbmVkKSB7XG4gICAgICAgICAgICBpZiAoaW52YWxpZE9wdGlvbnMuaW5jbHVkZXMoJ3RvcCcpICYmIGludmFsaWRPcHRpb25zLmluY2x1ZGVzKCdyaWdodCcpICYmIGludmFsaWRPcHRpb25zLmluY2x1ZGVzKCdsZWZ0JykpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRlc3Ryb3lQYXNzd29yZFN0cmVuZ3RoKCk7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBzcGFjZSB0byBzaG93IHBhc3N3b3JkIHN0cmVuZ3RoJyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHN3aXRjaCAodGhpcy5wYXNzd29yZFN0cmVuZ3RoUG9zaXRpb24pIHtcbiAgICAgICAgICAgICAgICBjYXNlICd0b3AnOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRvcFNoaWZ0ID0gdG9wO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByaWdodFNoaWZ0ID0gZG9jdW1lbnQuYm9keS5jbGllbnRXaWR0aCAtIHJpZ2h0O1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBsZWZ0U2hpZnQgPSBsZWZ0O1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IE1JTl9IT1JJWk9OVEFMX1NBRkVfU1BBQ0UgPSA1MDtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICB0b3BTaGlmdCA8PSBlbGVtZW50UmVmSGVpZ2h0ICsgc2FmZVNwYWNlIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICByaWdodFNoaWZ0IDwgTUlOX0hPUklaT05UQUxfU0FGRV9TUEFDRSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgbGVmdFNoaWZ0IDwgTUlOX0hPUklaT05UQUxfU0FGRV9TUEFDRVxuICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGFzc3dvcmRTdHJlbmd0aFBvc2l0aW9uID0gJ3JpZ2h0JztcbiAgICAgICAgICAgICAgICAgICAgICAgIGludmFsaWRPcHRpb25zLnB1c2goJ3RvcCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS50b3AgPSBNYXRoLnJvdW5kKHRvcCAtIG1hcmdpbik7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLmxlZnQgPSBNYXRoLnJvdW5kKGVsZW1lbnRSZWZXaWR0aCAvIDIgKyBsZWZ0KTtcbiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb25lZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlICdyaWdodCc6IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmlnaHRTaGlmdCA9IGRvY3VtZW50LmJvZHkuY2xpZW50V2lkdGggLSByaWdodDtcblxuICAgICAgICAgICAgICAgICAgICBpZiAocmlnaHRTaGlmdCA8PSBlbGVtZW50UmVmV2lkdGggKyBzYWZlU3BhY2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGFzc3dvcmRTdHJlbmd0aFBvc2l0aW9uID0gJ2xlZnQnO1xuICAgICAgICAgICAgICAgICAgICAgICAgaW52YWxpZE9wdGlvbnMucHVzaCgncmlnaHQnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UudG9wID0gTWF0aC5yb3VuZCh0b3AgKyBlbGVtZW50UmVmSGVpZ2h0IC8gMik7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLmxlZnQgPSBNYXRoLnJvdW5kKHJpZ2h0ICsgbWFyZ2luKTtcbiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb25lZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlICdsZWZ0Jzoge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBsZWZ0U2hpZnQgPSBsZWZ0O1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChsZWZ0U2hpZnQgPD0gZWxlbWVudFJlZldpZHRoICsgc2FmZVNwYWNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBhc3N3b3JkU3RyZW5ndGhQb3NpdGlvbiA9ICd0b3AnO1xuICAgICAgICAgICAgICAgICAgICAgICAgaW52YWxpZE9wdGlvbnMucHVzaCgnbGVmdCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS50b3AgPSBNYXRoLnJvdW5kKHRvcCArIGVsZW1lbnRSZWZIZWlnaHQgLyAyKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UubGVmdCA9IE1hdGgucm91bmQobGVmdCAtIG1hcmdpbik7XG4gICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLnBvc2l0aW9uID0gdGhpcy5wYXNzd29yZFN0cmVuZ3RoUG9zaXRpb247XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHZhbGlkYXRlUHJvcGVydGllcygpIHtcbiAgICAgICAgdGhpcy5wYXNzd29yZFN0cmVuZ3RoVmFsaWRhdGlvbiA9IHRoaXMucGFzc3dvcmRTdHJlbmd0aFZhbGlkYXRpb24gfHwgdGhpcy5kZWZhdWx0VmFsaWRhdG9yO1xuICAgIH1cblxuICAgIHByaXZhdGUgZGVzdHJveVBhc3N3b3JkU3RyZW5ndGgoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmNvbXBvbmVudFJlZikge1xuICAgICAgICAgICAgdGhpcy5hcHBSZWYuZGV0YWNoVmlldyh0aGlzLmNvbXBvbmVudFJlZi5ob3N0Vmlldyk7XG4gICAgICAgICAgICB0aGlzLmNvbXBvbmVudFJlZi5kZXN0cm95KCk7XG4gICAgICAgICAgICB0aGlzLmNvbXBvbmVudFJlZiA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGRlZmF1bHRWYWxpZGF0b3IoY29udGVudDogc3RyaW5nKTogUGFzc3dvcmRTdHJlbmd0aHMge1xuICAgICAgICBsZXQgcG9pbnRzID0gMDtcbiAgICAgICAgY29uc3QgUEFTU1dPUkRfTUlOX0xFTkdUSCA9IDY7XG4gICAgICAgIGNvbnN0IFdFRUtfQ1JJVEVSSUEgPSAxO1xuICAgICAgICBjb25zdCBNRURJVU1fQ1JJVEVSSUEgPSA0O1xuICAgICAgICBjb25zdCBTVFJPTkdfQ1JJVEVSSUEgPSA1O1xuXG4gICAgICAgIGNvbnN0IHJlZ0V4cFZhbGlkYXRpb25zID0gW1xuICAgICAgICAgICAgLyg/PS4qXFxkKS8sIC8vIG51bWJlclxuICAgICAgICAgICAgLyg/PS4qW2Etel0pLywgLy8gbG93ZXJjYXNlXG4gICAgICAgICAgICAvKD89LipbQS1aXSkvLCAvLyB1cHBlcmNhc2VcbiAgICAgICAgICAgIC8oPz0uKlshQCMkJSYqLlxcXFw9K15+LV0pLywgLy8gc3BlY2lhbCBjaGFyYWN0ZXJcbiAgICAgICAgXTtcblxuICAgICAgICBpZiAoY29udGVudC5sZW5ndGggPj0gUEFTU1dPUkRfTUlOX0xFTkdUSCkge1xuICAgICAgICAgICAgcG9pbnRzKys7XG4gICAgICAgIH1cblxuICAgICAgICByZWdFeHBWYWxpZGF0aW9ucy5mb3JFYWNoKCh2YWxpZGF0aW9uKSA9PiB7XG4gICAgICAgICAgICBpZiAodmFsaWRhdGlvbi50ZXN0KGNvbnRlbnQpKSB7XG4gICAgICAgICAgICAgICAgcG9pbnRzKys7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChwb2ludHMgPCBXRUVLX0NSSVRFUklBKSB7XG4gICAgICAgICAgICByZXR1cm4gJ3ZlcnlXZWFrJztcbiAgICAgICAgfVxuICAgICAgICBpZiAocG9pbnRzIDwgTUVESVVNX0NSSVRFUklBKSB7XG4gICAgICAgICAgICByZXR1cm4gJ3dlYWsnO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwb2ludHMgPCBTVFJPTkdfQ1JJVEVSSUEpIHtcbiAgICAgICAgICAgIHJldHVybiAnbWVkaXVtJztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gJ3N0cm9uZyc7XG4gICAgfVxufVxuXG4iXX0=
258
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFzc3dvcmQtc3RyZW5ndGguZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL3Bhc3N3b3JkLXN0cmVuZ3RoL3NyYy9saWIvcGFzc3dvcmQtc3RyZW5ndGgvcGFzc3dvcmQtc3RyZW5ndGguZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxjQUFjO0FBQ2Qsc0RBQXNEO0FBQ3RELHdCQUF3QixFQUV4QixTQUFTLEVBQ1QsVUFBVSxFQUVWLFlBQVksRUFDWixRQUFRLEVBQ1IsS0FBSyxFQUVMLE1BQU0sR0FDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUU3RSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7QUFJMUU7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQkc7QUFLSCxNQUFNLE9BQU8seUJBQXlCO0lBQ2pCLFVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDaEMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUNoQyx3QkFBd0IsR0FBRyxNQUFNLENBQUMsd0JBQXdCLENBQUMsQ0FBQztJQUM1RCxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRTdDOzs7OztPQUtHO0lBRUksT0FBTyxHQUFHLElBQUksQ0FBQztJQUV0Qjs7Ozs7O09BTUc7SUFFSSwwQkFBMEIsQ0FBMEM7SUFFM0U7Ozs7OztPQU1HO0lBRUksd0JBQXdCLEdBQThCLE9BQU8sQ0FBQztJQUVyRTs7O09BR0c7SUFFSSx5QkFBeUIsQ0FBVTtJQUUxQzs7O09BR0c7SUFFSSwyQkFBMkIsQ0FBVTtJQUU1Qzs7O09BR0c7SUFFSSwyQkFBMkIsQ0FBVTtJQUU1Qzs7O09BR0c7SUFFSSwyQkFBMkIsQ0FBVTtJQUVw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Tzs7c0JBQ3BCLFlBQVk7dUJBQUMsT0FBTztnQkFtQmQsTUFBTTtzQkFEWixZQUFZO3VCQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gICAgQXBwbGljYXRpb25SZWYsXHJcbiAgICAvLyBOT1NPTkFSIC0gJ0NvbXBvbmVudEZhY3RvcnlSZXNvbHZlcicgaXMgZGVwcmVjYXRlZC5cclxuICAgIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcclxuICAgIENvbXBvbmVudFJlZixcclxuICAgIERpcmVjdGl2ZSxcclxuICAgIEVsZW1lbnRSZWYsXHJcbiAgICBFbWJlZGRlZFZpZXdSZWYsXHJcbiAgICBIb3N0TGlzdGVuZXIsXHJcbiAgICBJbmplY3RvcixcclxuICAgIElucHV0LFxyXG4gICAgT25Jbml0LFxyXG4gICAgaW5qZWN0LFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBpc051bGxPclVuZGVmaW5lZCB9IGZyb20gJ0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvdXRpbHMnO1xyXG5cclxuaW1wb3J0IHsgUGFzc3dvcmRTdHJlbmd0aENvbXBvbmVudCB9IGZyb20gJy4vcGFzc3dvcmQtc3RyZW5ndGguY29tcG9uZW50JztcclxuaW1wb3J0IHsgUGFzc3dvcmRTdHJlbmd0aFBvc2l0aW9ucyB9IGZyb20gJy4vdHlwZXMvcGFzc3dvcmQtcG9zaXRpb25zJztcclxuaW1wb3J0IHsgUGFzc3dvcmRTdHJlbmd0aHMgfSBmcm9tICcuL3R5cGVzL3Bhc3N3b3JkLXN0cmVuZ3Rocyc7XHJcblxyXG4vKipcclxuICogQGRlc2NyaXB0aW9uIERpcmV0aXZhIHF1ZSBhZGljaW9uYSBvIGNvbXBvcnRhbWVudG8gZGUgdmVyaWZpY2HDp8OjbyBkZSBmb3LDp2EgZGUgc2VuaGFcclxuICogYSB1bSBjYW1wbyBkZSBpbnB1dCBleGlzdGVudGUuIEFvIHJlY2ViZXIgZm9jbyBvdSBhIGNhZGEgdGVjbGEgZGlnaXRhZGEsIGV4aWJlIG9cclxuICogY29tcG9uZW50ZSB7QGxpbmsgUGFzc3dvcmRTdHJlbmd0aENvbXBvbmVudH0gcG9zaWNpb25hZG8gZGluYW1pY2FtZW50ZSBhbyByZWRvciBkbyBjYW1wbyxcclxuICogZm9ybmVjZW5kbyBmZWVkYmFjayB2aXN1YWwgc29icmUgYSBmb3LDp2EgZGEgc2VuaGEgaW5mb3JtYWRhLlxyXG4gKlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGBodG1sXHJcbiAqIDxpbnB1dFxyXG4gKiAgIHR5cGU9XCJwYXNzd29yZFwiXHJcbiAqICAgW3NQYXNzd29yZFN0cmVuZ3RoXT1cInRydWVcIlxyXG4gKiAgIHBhc3N3b3JkU3RyZW5ndGhEZXNjcmlwdGlvbj1cIkEgc2VuaGEgZGV2ZSBjb250ZXIgbGV0cmFzIG1hacO6c2N1bGFzLCBuw7ptZXJvcyBlIGNhcmFjdGVyZXMgZXNwZWNpYWlzLlwiXHJcbiAqICAgW3Bhc3N3b3JkU3RyZW5ndGhWYWxpZGF0aW9uXT1cIm15VmFsaWRhdG9yXCIgLz5cclxuICogYGBgXHJcbiAqXHJcbiAqIEBjYXRlZ29yeSBJbnB1dHNcclxuICovXHJcbkBEaXJlY3RpdmUoe1xyXG4gICAgc2VsZWN0b3I6ICdbc1Bhc3N3b3JkU3RyZW5ndGhdJyxcclxuICAgIHN0YW5kYWxvbmU6IHRydWUsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQYXNzd29yZFN0cmVuZ3RoRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0IHtcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgZWxlbWVudFJlZiA9IGluamVjdChFbGVtZW50UmVmKTtcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgYXBwUmVmID0gaW5qZWN0KEFwcGxpY2F0aW9uUmVmKTtcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgY29tcG9uZW50RmFjdG9yeVJlc29sdmVyID0gaW5qZWN0KENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcik7XHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGluamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBkZXNjcmlwdGlvbiBIYWJpbGl0YSBvdSBkZXNhYmlsaXRhIG8gY29tcG9ydGFtZW50byBkYSBkaXJldGl2YS5cclxuICAgICAqIFF1YW5kbyBgZmFsc2VgLCBvIGluZGljYWRvciBkZSBmb3LDp2EgbsOjbyBzZXLDoSBleGliaWRvLlxyXG4gICAgICpcclxuICAgICAqIEBkZWZhdWx0IHRydWVcclxuICAgICAqL1xyXG4gICAgQElucHV0KCdzUGFzc3dvcmRTdHJlbmd0aCcpXHJcbiAgICBwdWJsaWMgZW5hYmxlZCA9IHRydWU7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAZGVzY3JpcHRpb24gRnVuw6fDo28gY3VzdG9taXphZGEgZGUgdmFsaWRhw6fDo28gZGEgZm9yw6dhIGRhIHNlbmhhLlxyXG4gICAgICogUmVjZWJlIG8gY29udGXDumRvIGF0dWFsIGRvIGNhbXBvIGUgZGV2ZSByZXRvcm5hciB1bSB2YWxvciBkbyB0aXBvIHtAbGluayBQYXNzd29yZFN0cmVuZ3Roc31cclxuICAgICAqIChgJ3ZlcnlXZWFrJ2AsIGAnd2VhaydgLCBgJ21lZGl1bSdgIG91IGAnc3Ryb25nJ2ApLlxyXG4gICAgICogU2UgbsOjbyBpbmZvcm1hZGEsIHV0aWxpemEgYSB2YWxpZGHDp8OjbyBwYWRyw6NvIGJhc2VhZGEgZW0gY3JpdMOpcmlvcyBkZSBjb21wcmltZW50byxcclxuICAgICAqIGxldHJhcyBtYWnDunNjdWxhcy9taW7DunNjdWxhcywgbsO6bWVyb3MgZSBjYXJhY3RlcmVzIGVzcGVjaWFpcy5cclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBwYXNzd29yZFN0cmVuZ3RoVmFsaWRhdGlvbj86IChjb250ZW50OiBzdHJpbmcpID0+IFBhc3N3b3JkU3RyZW5ndGhzO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGRlc2NyaXB0aW9uIFBvc2nDp8OjbyBwcmVmZXJlbmNpYWwgb25kZSBvIGluZGljYWRvciBkZSBmb3LDp2Egc2Vyw6EgZXhpYmlkbyBlbSByZWxhw6fDo28gYW8gY2FtcG8uXHJcbiAgICAgKiBBY2VpdGEgYCdyaWdodCdgLCBgJ2xlZnQnYCBvdSBgJ3RvcCdgLiBPIGNvbXBvbmVudGUgdGVudGEgcG9zaWNpb25hciBhdXRvbWF0aWNhbWVudGVcclxuICAgICAqIGVtIG91dHJvIGxhZG8gY2FzbyBuw6NvIGhhamEgZXNwYcOnbyBzdWZpY2llbnRlIG5hIHBvc2nDp8OjbyBlc3BlY2lmaWNhZGEuXHJcbiAgICAgKlxyXG4gICAgICogQGRlZmF1bHQgJ3JpZ2h0J1xyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIHBhc3N3b3JkU3RyZW5ndGhQb3NpdGlvbjogUGFzc3dvcmRTdHJlbmd0aFBvc2l0aW9ucyA9ICdyaWdodCc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAZGVzY3JpcHRpb24gVGV4dG8gcGVyc29uYWxpemFkbyBleGliaWRvIHF1YW5kbyBhIHNlbmhhIMOpIGNsYXNzaWZpY2FkYSBjb21vIGZyYWNhLlxyXG4gICAgICogU2UgbsOjbyBpbmZvcm1hZG8sIHV0aWxpemEgYSB0cmFkdcOnw6NvIHBhZHLDo28uXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgcGFzc3dvcmRTdHJlbmd0aFdlYWtUaXRsZT86IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBkZXNjcmlwdGlvbiBUZXh0byBwZXJzb25hbGl6YWRvIGV4aWJpZG8gcXVhbmRvIGEgc2VuaGEgw6kgY2xhc3NpZmljYWRhIGNvbW8gbcOpZGlhLlxyXG4gICAgICogU2UgbsOjbyBpbmZvcm1hZG8sIHV0aWxpemEgYSB0cmFkdcOnw6NvIHBhZHLDo28uXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgcGFzc3dvcmRTdHJlbmd0aE1lZGl1bVRpdGxlPzogc3RyaW5nO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGRlc2NyaXB0aW9uIFRleHRvIHBlcnNvbmFsaXphZG8gZXhpYmlkbyBxdWFuZG8gYSBzZW5oYSDDqSBjbGFzc2lmaWNhZGEgY29tbyBmb3J0ZS5cclxuICAgICAqIFNlIG7Do28gaW5mb3JtYWRvLCB1dGlsaXphIGEgdHJhZHXDp8OjbyBwYWRyw6NvLlxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIHBhc3N3b3JkU3RyZW5ndGhTdHJvbmdUaXRsZT86IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBkZXNjcmlwdGlvbiBEZXNjcmnDp8OjbyBjb21wbGVtZW50YXIgZXhpYmlkYSBubyBpbmRpY2Fkb3IgZGUgZm9yw6dhIGRlIHNlbmhhLFxyXG4gICAgICogb3JpZW50YW5kbyBvIHVzdcOhcmlvIHNvYnJlIG9zIHJlcXVpc2l0b3MgZGEgc2VuaGEuIENhbXBvIG9icmlnYXTDs3Jpby5cclxuICAgICAqL1xyXG4gICAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSlcclxuICAgIHB1YmxpYyBwYXNzd29yZFN0cmVuZ3RoRGVzY3JpcHRpb24hOiBzdHJpbmc7XHJcblxyXG4gICAgcHJpdmF0ZSBjb21wb25lbnRSZWY/OiBudWxsIHwgQ29tcG9uZW50UmVmPFBhc3N3b3JkU3RyZW5ndGhDb21wb25lbnQ+O1xyXG5cclxuICAgIHB1YmxpYyBuZ09uSW5pdCgpIHtcclxuICAgICAgICB0aGlzLnZhbGlkYXRlUHJvcGVydGllcygpO1xyXG4gICAgfVxyXG5cclxuICAgIEBIb3N0TGlzdGVuZXIoJ2tleXVwJylcclxuICAgIEBIb3N0TGlzdGVuZXIoJ2ZvY3VzJylcclxuICAgIHB1YmxpYyBvbkZvY3VzKCk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGNvbnRlbnQgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC52YWx1ZSA/PyAnJztcclxuXHJcbiAgICAgICAgdGhpcy5jcmVhdGVQYXNzd29yZFN0cmVuZ3RoKCk7XHJcbiAgICAgICAgY29uc3QgY29tcG9uZW50ID0gdGhpcy5jb21wb25lbnRSZWY/Lmluc3RhbmNlO1xyXG4gICAgICAgIGlmICghY29tcG9uZW50KSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGNvbnRlbnQpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMucGFzc3dvcmRTdHJlbmd0aFZhbGlkYXRpb24pIHtcclxuICAgICAgICAgICAgICAgIGNvbXBvbmVudC51cGRhdGVJbmRpY2F0b3JzKHRoaXMucGFzc3dvcmRTdHJlbmd0aFZhbGlkYXRpb24oY29udGVudCkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29tcG9uZW50LnVwZGF0ZUluZGljYXRvcnMoJ3ZlcnlXZWFrJyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIEBIb3N0TGlzdGVuZXIoJ2JsdXInKVxyXG4gICAgcHVibGljIG9uQmx1cigpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmRlc3Ryb3lQYXNzd29yZFN0cmVuZ3RoKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBjcmVhdGVQYXNzd29yZFN0cmVuZ3RoKCkge1xyXG4gICAgICAgIGlmICh0aGlzLmVuYWJsZWQgJiYgaXNOdWxsT3JVbmRlZmluZWQodGhpcy5jb21wb25lbnRSZWYpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNvbXBvbmVudEZhY3RvcnkgPSB0aGlzLmNvbXBvbmVudEZhY3RvcnlSZXNvbHZlci5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeShQYXNzd29yZFN0cmVuZ3RoQ29tcG9uZW50KTtcclxuICAgICAgICAgICAgdGhpcy5jb21wb25lbnRSZWYgPSBjb21wb25lbnRGYWN0b3J5LmNyZWF0ZSh0aGlzLmluamVjdG9yKTtcclxuICAgICAgICAgICAgdGhpcy5hcHBSZWYuYXR0YWNoVmlldyh0aGlzLmNvbXBvbmVudFJlZi5ob3N0Vmlldyk7XHJcbiAgICAgICAgICAgIGNvbnN0IGRvbUVsZW0gPSAodGhpcy5jb21wb25lbnRSZWYuaG9zdFZpZXcgYXMgRW1iZWRkZWRWaWV3UmVmPGFueT4pLnJvb3ROb2Rlc1swXSBhcyBIVE1MRWxlbWVudDtcclxuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkb21FbGVtKTtcclxuICAgICAgICAgICAgdGhpcy5zZXRQYXNzd29yZFN0cmVuZ3RoQ29tcG9uZW50UHJvcGVydGllcygpO1xyXG4gICAgICAgICAgICB0aGlzLnNob3dQYXNzd29yZFN0cmVuZ3RoKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgc2hvd1Bhc3N3b3JkU3RyZW5ndGgoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuY29tcG9uZW50UmVmKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLnZpc2libGUgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBOT1NPTkFSIC0gUmVmYWN0b3IgdGhpcyBmdW5jdGlvbiB0byByZWR1Y2UgaXRzIENvZ25pdGl2ZSBDb21wbGV4aXR5IGZyb20gMTYgdG8gdGhlIDE1IGFsbG93ZWQuXHJcbiAgICBwcml2YXRlIHNldFBhc3N3b3JkU3RyZW5ndGhDb21wb25lbnRQcm9wZXJ0aWVzKCkge1xyXG4gICAgICAgIGlmIChpc051bGxPclVuZGVmaW5lZCh0aGlzLmNvbXBvbmVudFJlZikpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UucG9zaXRpb24gPSB0aGlzLnBhc3N3b3JkU3RyZW5ndGhQb3NpdGlvbjtcclxuICAgICAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS53ZWFrVGl0bGUgPSB0aGlzLnBhc3N3b3JkU3RyZW5ndGhXZWFrVGl0bGU7XHJcbiAgICAgICAgdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UubWVkaXVtVGl0bGUgPSB0aGlzLnBhc3N3b3JkU3RyZW5ndGhNZWRpdW1UaXRsZTtcclxuICAgICAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5zdHJvbmdUaXRsZSA9IHRoaXMucGFzc3dvcmRTdHJlbmd0aFN0cm9uZ1RpdGxlO1xyXG4gICAgICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLmRlc2NyaXB0aW9uID0gdGhpcy5wYXNzd29yZFN0cmVuZ3RoRGVzY3JpcHRpb247XHJcblxyXG4gICAgICAgIGNvbnN0IHsgdG9wLCByaWdodCwgYm90dG9tLCBsZWZ0IH0gPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuXHJcbiAgICAgICAgY29uc3QgbWFyZ2luID0gMjA7XHJcbiAgICAgICAgY29uc3QgZWxlbWVudFJlZkhlaWdodCA9IGJvdHRvbSAtIHRvcDtcclxuICAgICAgICBjb25zdCBlbGVtZW50UmVmV2lkdGggPSByaWdodCAtIGxlZnQ7XHJcbiAgICAgICAgY29uc3Qgc2FmZVNwYWNlID0gMTUwO1xyXG5cclxuICAgICAgICBsZXQgcG9zaXRpb25lZCA9IGZhbHNlO1xyXG4gICAgICAgIGNvbnN0IGludmFsaWRPcHRpb25zOiBQYXNzd29yZFN0cmVuZ3RoUG9zaXRpb25zW10gPSBbXTtcclxuXHJcbiAgICAgICAgd2hpbGUgKCFwb3NpdGlvbmVkKSB7XHJcbiAgICAgICAgICAgIGlmIChpbnZhbGlkT3B0aW9ucy5pbmNsdWRlcygndG9wJykgJiYgaW52YWxpZE9wdGlvbnMuaW5jbHVkZXMoJ3JpZ2h0JykgJiYgaW52YWxpZE9wdGlvbnMuaW5jbHVkZXMoJ2xlZnQnKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5kZXN0cm95UGFzc3dvcmRTdHJlbmd0aCgpO1xyXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBzcGFjZSB0byBzaG93IHBhc3N3b3JkIHN0cmVuZ3RoJyk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHN3aXRjaCAodGhpcy5wYXNzd29yZFN0cmVuZ3RoUG9zaXRpb24pIHtcclxuICAgICAgICAgICAgICAgIGNhc2UgJ3RvcCc6IHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCB0b3BTaGlmdCA9IHRvcDtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCByaWdodFNoaWZ0ID0gZG9jdW1lbnQuYm9keS5jbGllbnRXaWR0aCAtIHJpZ2h0O1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGxlZnRTaGlmdCA9IGxlZnQ7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IE1JTl9IT1JJWk9OVEFMX1NBRkVfU1BBQ0UgPSA1MDtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0b3BTaGlmdCA8PSBlbGVtZW50UmVmSGVpZ2h0ICsgc2FmZVNwYWNlIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0U2hpZnQgPCBNSU5fSE9SSVpPTlRBTF9TQUZFX1NQQUNFIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxlZnRTaGlmdCA8IE1JTl9IT1JJWk9OVEFMX1NBRkVfU1BBQ0VcclxuICAgICAgICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wYXNzd29yZFN0cmVuZ3RoUG9zaXRpb24gPSAncmlnaHQnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpbnZhbGlkT3B0aW9ucy5wdXNoKCd0b3AnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS50b3AgPSBNYXRoLnJvdW5kKHRvcCAtIG1hcmdpbik7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UubGVmdCA9IE1hdGgucm91bmQoZWxlbWVudFJlZldpZHRoIC8gMiArIGxlZnQpO1xyXG4gICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY2FzZSAncmlnaHQnOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmlnaHRTaGlmdCA9IGRvY3VtZW50LmJvZHkuY2xpZW50V2lkdGggLSByaWdodDtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJpZ2h0U2hpZnQgPD0gZWxlbWVudFJlZldpZHRoICsgc2FmZVNwYWNlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGFzc3dvcmRTdHJlbmd0aFBvc2l0aW9uID0gJ2xlZnQnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpbnZhbGlkT3B0aW9ucy5wdXNoKCdyaWdodCcpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLnRvcCA9IE1hdGgucm91bmQodG9wICsgZWxlbWVudFJlZkhlaWdodCAvIDIpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLmxlZnQgPSBNYXRoLnJvdW5kKHJpZ2h0ICsgbWFyZ2luKTtcclxuICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbmVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGNhc2UgJ2xlZnQnOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbGVmdFNoaWZ0ID0gbGVmdDtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGxlZnRTaGlmdCA8PSBlbGVtZW50UmVmV2lkdGggKyBzYWZlU3BhY2UpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wYXNzd29yZFN0cmVuZ3RoUG9zaXRpb24gPSAndG9wJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgaW52YWxpZE9wdGlvbnMucHVzaCgnbGVmdCcpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLnRvcCA9IE1hdGgucm91bmQodG9wICsgZWxlbWVudFJlZkhlaWdodCAvIDIpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLmxlZnQgPSBNYXRoLnJvdW5kKGxlZnQgLSBtYXJnaW4pO1xyXG4gICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZGVmYXVsdDoge1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5wb3NpdGlvbiA9IHRoaXMucGFzc3dvcmRTdHJlbmd0aFBvc2l0aW9uO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHZhbGlkYXRlUHJvcGVydGllcygpIHtcclxuICAgICAgICB0aGlzLnBhc3N3b3JkU3RyZW5ndGhWYWxpZGF0aW9uID0gdGhpcy5wYXNzd29yZFN0cmVuZ3RoVmFsaWRhdGlvbiB8fCB0aGlzLmRlZmF1bHRWYWxpZGF0b3I7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBkZXN0cm95UGFzc3dvcmRTdHJlbmd0aCgpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5jb21wb25lbnRSZWYpIHtcclxuICAgICAgICAgICAgdGhpcy5hcHBSZWYuZGV0YWNoVmlldyh0aGlzLmNvbXBvbmVudFJlZi5ob3N0Vmlldyk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tcG9uZW50UmVmLmRlc3Ryb3koKTtcclxuICAgICAgICAgICAgdGhpcy5jb21wb25lbnRSZWYgPSBudWxsO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGRlZmF1bHRWYWxpZGF0b3IoY29udGVudDogc3RyaW5nKTogUGFzc3dvcmRTdHJlbmd0aHMge1xyXG4gICAgICAgIGxldCBwb2ludHMgPSAwO1xyXG4gICAgICAgIGNvbnN0IFBBU1NXT1JEX01JTl9MRU5HVEggPSA2O1xyXG4gICAgICAgIGNvbnN0IFdFRUtfQ1JJVEVSSUEgPSAxO1xyXG4gICAgICAgIGNvbnN0IE1FRElVTV9DUklURVJJQSA9IDQ7XHJcbiAgICAgICAgY29uc3QgU1RST05HX0NSSVRFUklBID0gNTtcclxuXHJcbiAgICAgICAgY29uc3QgcmVnRXhwVmFsaWRhdGlvbnMgPSBbXHJcbiAgICAgICAgICAgIC8oPz0uKlxcZCkvLCAvLyBudW1iZXJcclxuICAgICAgICAgICAgLyg/PS4qW2Etel0pLywgLy8gbG93ZXJjYXNlXHJcbiAgICAgICAgICAgIC8oPz0uKltBLVpdKS8sIC8vIHVwcGVyY2FzZVxyXG4gICAgICAgICAgICAvKD89LipbIUAjJCUmKi5cXFxcPStefi1dKS8sIC8vIHNwZWNpYWwgY2hhcmFjdGVyXHJcbiAgICAgICAgXTtcclxuXHJcbiAgICAgICAgaWYgKGNvbnRlbnQubGVuZ3RoID49IFBBU1NXT1JEX01JTl9MRU5HVEgpIHtcclxuICAgICAgICAgICAgcG9pbnRzKys7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZWdFeHBWYWxpZGF0aW9ucy5mb3JFYWNoKCh2YWxpZGF0aW9uKSA9PiB7XHJcbiAgICAgICAgICAgIGlmICh2YWxpZGF0aW9uLnRlc3QoY29udGVudCkpIHtcclxuICAgICAgICAgICAgICAgIHBvaW50cysrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGlmIChwb2ludHMgPCBXRUVLX0NSSVRFUklBKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAndmVyeVdlYWsnO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAocG9pbnRzIDwgTUVESVVNX0NSSVRFUklBKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAnd2Vhayc7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChwb2ludHMgPCBTVFJPTkdfQ1JJVEVSSUEpIHtcclxuICAgICAgICAgICAgcmV0dXJuICdtZWRpdW0nO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gJ3N0cm9uZyc7XHJcbiAgICB9XHJcbn1cclxuIl19
@@ -1,19 +1,16 @@
1
1
  import { NgModule } from '@angular/core';
2
- import { CommonModule } from '@angular/common';
3
2
  import { PasswordStrengthDirective } from './password-strength.directive';
4
- import { PasswordStrengthComponent } from './password-strength.component';
5
3
  import * as i0 from "@angular/core";
6
4
  export class PasswordStrengthModule {
7
5
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PasswordStrengthModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
8
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.14", ngImport: i0, type: PasswordStrengthModule, declarations: [PasswordStrengthComponent, PasswordStrengthDirective], imports: [CommonModule], exports: [PasswordStrengthDirective] });
9
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PasswordStrengthModule, imports: [CommonModule] });
6
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.14", ngImport: i0, type: PasswordStrengthModule, imports: [PasswordStrengthDirective], exports: [PasswordStrengthDirective] });
7
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PasswordStrengthModule });
10
8
  }
11
9
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PasswordStrengthModule, decorators: [{
12
10
  type: NgModule,
13
11
  args: [{
14
- imports: [CommonModule],
15
- declarations: [PasswordStrengthComponent, PasswordStrengthDirective],
12
+ imports: [PasswordStrengthDirective],
16
13
  exports: [PasswordStrengthDirective],
17
14
  }]
18
15
  }] });
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFzc3dvcmQtc3RyZW5ndGgubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL3Bhc3N3b3JkLXN0cmVuZ3RoL3NyYy9saWIvcGFzc3dvcmQtc3RyZW5ndGgvcGFzc3dvcmQtc3RyZW5ndGgubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzFFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLCtCQUErQixDQUFDOztBQU8xRSxNQUFNLE9BQU8sc0JBQXNCO3dHQUF0QixzQkFBc0I7eUdBQXRCLHNCQUFzQixpQkFIaEIseUJBQXlCLEVBQUUseUJBQXlCLGFBRHpELFlBQVksYUFFWix5QkFBeUI7eUdBRTFCLHNCQUFzQixZQUpyQixZQUFZOzs0RkFJYixzQkFBc0I7a0JBTGxDLFFBQVE7bUJBQUM7b0JBQ04sT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO29CQUN2QixZQUFZLEVBQUUsQ0FBQyx5QkFBeUIsRUFBRSx5QkFBeUIsQ0FBQztvQkFDcEUsT0FBTyxFQUFFLENBQUMseUJBQXlCLENBQUM7aUJBQ3ZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbmltcG9ydCB7IFBhc3N3b3JkU3RyZW5ndGhEaXJlY3RpdmUgfSBmcm9tICcuL3Bhc3N3b3JkLXN0cmVuZ3RoLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBQYXNzd29yZFN0cmVuZ3RoQ29tcG9uZW50IH0gZnJvbSAnLi9wYXNzd29yZC1zdHJlbmd0aC5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICAgIGRlY2xhcmF0aW9uczogW1Bhc3N3b3JkU3RyZW5ndGhDb21wb25lbnQsIFBhc3N3b3JkU3RyZW5ndGhEaXJlY3RpdmVdLFxuICAgIGV4cG9ydHM6IFtQYXNzd29yZFN0cmVuZ3RoRGlyZWN0aXZlXSxcbn0pXG5leHBvcnQgY2xhc3MgUGFzc3dvcmRTdHJlbmd0aE1vZHVsZSB7fVxuIl19
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFzc3dvcmQtc3RyZW5ndGgubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL3Bhc3N3b3JkLXN0cmVuZ3RoL3NyYy9saWIvcGFzc3dvcmQtc3RyZW5ndGgvcGFzc3dvcmQtc3RyZW5ndGgubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFekMsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sK0JBQStCLENBQUM7O0FBTTFFLE1BQU0sT0FBTyxzQkFBc0I7d0dBQXRCLHNCQUFzQjt5R0FBdEIsc0JBQXNCLFlBSHJCLHlCQUF5QixhQUN6Qix5QkFBeUI7eUdBRTFCLHNCQUFzQjs7NEZBQXRCLHNCQUFzQjtrQkFKbEMsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUUsQ0FBQyx5QkFBeUIsQ0FBQztvQkFDcEMsT0FBTyxFQUFFLENBQUMseUJBQXlCLENBQUM7aUJBQ3ZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IFBhc3N3b3JkU3RyZW5ndGhEaXJlY3RpdmUgfSBmcm9tICcuL3Bhc3N3b3JkLXN0cmVuZ3RoLmRpcmVjdGl2ZSc7XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gICAgaW1wb3J0czogW1Bhc3N3b3JkU3RyZW5ndGhEaXJlY3RpdmVdLFxyXG4gICAgZXhwb3J0czogW1Bhc3N3b3JkU3RyZW5ndGhEaXJlY3RpdmVdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUGFzc3dvcmRTdHJlbmd0aE1vZHVsZSB7fVxyXG4iXX0=
@@ -1,10 +1,9 @@
1
1
  import { Component, forwardRef, viewChildren, ElementRef, signal, input, output, effect, computed, model, inject, DestroyRef, } from '@angular/core';
2
- import { CommonModule } from '@angular/common';
2
+ import { NgClass } from '@angular/common';
3
3
  import { NG_VALUE_ACCESSOR } from '@angular/forms';
4
4
  import { TranslateModule } from '@ngx-translate/core';
5
5
  import * as i0 from "@angular/core";
6
- import * as i1 from "@angular/common";
7
- import * as i2 from "@ngx-translate/core";
6
+ import * as i1 from "@ngx-translate/core";
8
7
  /**
9
8
  * @description Componente de entrada de código PIN/OTP com campos individuais para cada dígito.
10
9
  * Implementa {@link ControlValueAccessor} para integração nativa com Reactive Forms
@@ -439,11 +438,11 @@ export class PinCodeFieldComponent {
439
438
  useExisting: forwardRef(() => PinCodeFieldComponent),
440
439
  multi: true,
441
440
  },
442
- ], viewQueries: [{ propertyName: "pinInputs", predicate: ["pinInput"], descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"gap-xsmall flex flex-col\">\n <div\n class=\"flex gap-2\"\n role=\"group\"\n aria-label=\"PIN code input\"\n [attr.aria-labelledby]=\"helpText() ? 'pin-help-text' : null\"\n >\n @for (input of inputs(); let i = $index; track i) {\n <input\n #pinInput\n type=\"text\"\n class=\"h-12 w-12 rounded-xbig border text-center text-lg font-medium transition-all duration-200\"\n [ngClass]=\"{\n 'border-criticality-red focus:ring-criticality-red': hasError(),\n 'border-grayscale-30 focus:border-primary focus:ring-primary': !hasError(),\n 'cursor-not-allowed bg-grayscale-10 text-grayscale-60': disabled(),\n 'bg-grayscale-0 text-grayscale-100 focus:outline-none': !disabled(),\n }\"\n [value]=\"input\"\n [disabled]=\"disabled()\"\n [attr.maxlength]=\"1\"\n [attr.inputmode]=\"alphanumeric() ? 'text' : 'numeric'\"\n [attr.aria-label]=\"\n alphanumeric()\n ? ('platform.angular_components.pin_code_character_index_of_total'\n | translate: { index: i + 1, length: length() })\n : ('platform.angular_components.pin_code_digit_index_of_total'\n | translate: { index: i + 1, length: length() })\n \"\n [attr.aria-describedby]=\"helpText() ? 'pin-help-text' : null\"\n [attr.aria-required]=\"true\"\n autocomplete=\"off\"\n (input)=\"onInput(i, $event)\"\n (keydown)=\"onKeyDown(i, $event)\"\n (paste)=\"onPaste($event)\"\n (focus)=\"onFocus(i)\"\n (blur)=\"onBlur(i)\"\n />\n }\n </div>\n\n @if (helpText()) {\n <div\n id=\"pin-help-text\"\n class=\"mt-small text-sm text-grayscale-60\"\n >\n {{ helpText() }}\n </div>\n }\n</div>\n\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }] });
441
+ ], viewQueries: [{ propertyName: "pinInputs", predicate: ["pinInput"], descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"gap-xsmall flex flex-col\">\n <div\n class=\"flex gap-2\"\n role=\"group\"\n aria-label=\"PIN code input\"\n [attr.aria-labelledby]=\"helpText() ? 'pin-help-text' : null\"\n >\n @for (input of inputs(); let i = $index; track i) {\n <input\n #pinInput\n type=\"text\"\n class=\"h-12 w-12 rounded-xbig border text-center text-lg font-medium transition-all duration-200\"\n [ngClass]=\"{\n 'border-criticality-red focus:ring-criticality-red': hasError(),\n 'border-grayscale-30 focus:border-primary focus:ring-primary': !hasError(),\n 'cursor-not-allowed bg-grayscale-10 text-grayscale-60': disabled(),\n 'bg-grayscale-0 text-grayscale-100 focus:outline-none': !disabled(),\n }\"\n [value]=\"input\"\n [disabled]=\"disabled()\"\n [attr.maxlength]=\"1\"\n [attr.inputmode]=\"alphanumeric() ? 'text' : 'numeric'\"\n [attr.aria-label]=\"\n alphanumeric()\n ? ('platform.angular_components.pin_code_character_index_of_total'\n | translate: { index: i + 1, length: length() })\n : ('platform.angular_components.pin_code_digit_index_of_total'\n | translate: { index: i + 1, length: length() })\n \"\n [attr.aria-describedby]=\"helpText() ? 'pin-help-text' : null\"\n [attr.aria-required]=\"true\"\n autocomplete=\"off\"\n (input)=\"onInput(i, $event)\"\n (keydown)=\"onKeyDown(i, $event)\"\n (paste)=\"onPaste($event)\"\n (focus)=\"onFocus(i)\"\n (blur)=\"onBlur(i)\"\n />\n }\n </div>\n\n @if (helpText()) {\n <div\n id=\"pin-help-text\"\n class=\"mt-small text-sm text-grayscale-60\"\n >\n {{ helpText() }}\n </div>\n }\n</div>\n\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }] });
443
442
  }
444
443
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PinCodeFieldComponent, decorators: [{
445
444
  type: Component,
446
- args: [{ selector: 's-pin-code-field', standalone: true, imports: [CommonModule, TranslateModule], providers: [
445
+ args: [{ selector: 's-pin-code-field', standalone: true, imports: [NgClass, TranslateModule], providers: [
447
446
  {
448
447
  provide: NG_VALUE_ACCESSOR,
449
448
  useExisting: forwardRef(() => PinCodeFieldComponent),
@@ -451,4 +450,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
451
450
  },
452
451
  ], template: "<div class=\"gap-xsmall flex flex-col\">\n <div\n class=\"flex gap-2\"\n role=\"group\"\n aria-label=\"PIN code input\"\n [attr.aria-labelledby]=\"helpText() ? 'pin-help-text' : null\"\n >\n @for (input of inputs(); let i = $index; track i) {\n <input\n #pinInput\n type=\"text\"\n class=\"h-12 w-12 rounded-xbig border text-center text-lg font-medium transition-all duration-200\"\n [ngClass]=\"{\n 'border-criticality-red focus:ring-criticality-red': hasError(),\n 'border-grayscale-30 focus:border-primary focus:ring-primary': !hasError(),\n 'cursor-not-allowed bg-grayscale-10 text-grayscale-60': disabled(),\n 'bg-grayscale-0 text-grayscale-100 focus:outline-none': !disabled(),\n }\"\n [value]=\"input\"\n [disabled]=\"disabled()\"\n [attr.maxlength]=\"1\"\n [attr.inputmode]=\"alphanumeric() ? 'text' : 'numeric'\"\n [attr.aria-label]=\"\n alphanumeric()\n ? ('platform.angular_components.pin_code_character_index_of_total'\n | translate: { index: i + 1, length: length() })\n : ('platform.angular_components.pin_code_digit_index_of_total'\n | translate: { index: i + 1, length: length() })\n \"\n [attr.aria-describedby]=\"helpText() ? 'pin-help-text' : null\"\n [attr.aria-required]=\"true\"\n autocomplete=\"off\"\n (input)=\"onInput(i, $event)\"\n (keydown)=\"onKeyDown(i, $event)\"\n (paste)=\"onPaste($event)\"\n (focus)=\"onFocus(i)\"\n (blur)=\"onBlur(i)\"\n />\n }\n </div>\n\n @if (helpText()) {\n <div\n id=\"pin-help-text\"\n class=\"mt-small text-sm text-grayscale-60\"\n >\n {{ helpText() }}\n </div>\n }\n</div>\n\n" }]
453
452
  }], ctorParameters: () => [] });
454
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGluLWNvZGUtZmllbGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL3Bpbi1jb2RlLWZpZWxkL3NyYy9saWIvcGluLWNvZGUtZmllbGQvcGluLWNvZGUtZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL3Bpbi1jb2RlLWZpZWxkL3NyYy9saWIvcGluLWNvZGUtZmllbGQvcGluLWNvZGUtZmllbGQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFDTixNQUFNLEVBQ04sUUFBUSxFQUNSLEtBQUssRUFDTCxNQUFNLEVBQ04sVUFBVSxHQUNiLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7O0FBRXREOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTZCRztBQWNILE1BQU0sT0FBTyxxQkFBcUI7SUFDdEIsTUFBTSxDQUFVLGlCQUFpQixHQUFHLENBQUMsQ0FBQztJQUN0QyxNQUFNLENBQVUsV0FBVyxHQUFHLEVBQUUsQ0FBQztJQUV6Qzs7Ozs7T0FLRztJQUNJLE1BQU0sR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFekI7Ozs7O09BS0c7SUFDSSxZQUFZLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRW5DOzs7OztPQUtHO0lBQ0ksUUFBUSxHQUFHLEtBQUssQ0FBQyxFQUFF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Q0FBQyxHQUFHLEVBQUUsc0JBQXNCLENBQUM7NEJBQ3BELEtBQUssRUFBRSxJQUFJO3lCQUNkO3FCQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgZm9yd2FyZFJlZixcbiAgICB2aWV3Q2hpbGRyZW4sXG4gICAgRWxlbWVudFJlZixcbiAgICBzaWduYWwsXG4gICAgaW5wdXQsXG4gICAgb3V0cHV0LFxuICAgIGVmZmVjdCxcbiAgICBjb21wdXRlZCxcbiAgICBtb2RlbCxcbiAgICBpbmplY3QsXG4gICAgRGVzdHJveVJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIENvbXBvbmVudGUgZGUgZW50cmFkYSBkZSBjw7NkaWdvIFBJTi9PVFAgY29tIGNhbXBvcyBpbmRpdmlkdWFpcyBwYXJhIGNhZGEgZMOtZ2l0by5cbiAqIEltcGxlbWVudGEge0BsaW5rIENvbnRyb2xWYWx1ZUFjY2Vzc29yfSBwYXJhIGludGVncmHDp8OjbyBuYXRpdmEgY29tIFJlYWN0aXZlIEZvcm1zXG4gKiBlIFRlbXBsYXRlLWRyaXZlbiBGb3JtcyBkbyBBbmd1bGFyLlxuICpcbiAqIEZ1bmNpb25hbGlkYWRlczpcbiAqIC0gQ2FtcG9zIHNlcGFyYWRvcyBlIG5hdmVnw6F2ZWlzIHBhcmEgY2FkYSBkw61naXRvIGRvIGPDs2RpZ29cbiAqIC0gQ29tcHJpbWVudG8gY29uZmlndXLDoXZlbCB2aWEgaW5wdXQgYGxlbmd0aGBcbiAqIC0gU3Vwb3J0ZSBhIGVudHJhZGEgbnVtw6lyaWNhIG91IGFsZmFudW3DqXJpY2FcbiAqIC0gTmF2ZWdhw6fDo28gcG9yIHRlY2xhZG8gKHNldGFzLCBiYWNrc3BhY2UpXG4gKiAtIFN1cG9ydGUgYSBjb2xhciAocGFzdGUpIGNvbSB0cnVuY2FtZW50byBhdXRvbcOhdGljbyBhbyB0YW1hbmhvIGRlZmluaWRvXG4gKiAtIEVzdGFkbyBkZSBlcnJvIHZpYSBpbnB1dCBgaW52YWxpZGBcbiAqIC0gQWNlc3NpYmlsaWRhZGUgY29tcGxldGEgY29tIEFSSUEgbGFiZWxzIGUgcm9sZXMgc2Vtw6JudGljb3NcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgaHRtbFxuICogPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtXCI+XG4gKiAgIDxzLXBpbi1jb2RlLWZpZWxkXG4gKiAgICAgZm9ybUNvbnRyb2xOYW1lPVwiY29kZVwiXG4gKiAgICAgW2xlbmd0aF09XCI2XCJcbiAqICAgICBbYWxwaGFudW1lcmljXT1cImZhbHNlXCJcbiAqICAgICBbaW52YWxpZF09XCIoZm9ybS5nZXQoJ2NvZGUnKT8uaW52YWxpZCAmJiBmb3JtLmdldCgnY29kZScpPy5kaXJ0eSkgfHwgZmFsc2VcIlxuICogICAgIGhlbHBUZXh0PVwiRGlnaXRlIHNldSBjw7NkaWdvIGRlIDYgZMOtZ2l0b3NcIlxuICogICAgIChjb2RlRmlsbGVkKT1cIm9uQ29kZUZpbGxlZCgkZXZlbnQpXCI+XG4gKiAgIDwvcy1waW4tY29kZS1maWVsZD5cbiAqIDwvZm9ybT5cbiAqIGBgYFxuICpcbiAqIEBjYXRlZ29yeSBJbnB1dHNcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdzLXBpbi1jb2RlLWZpZWxkJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vcGluLWNvZGUtZmllbGQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgVHJhbnNsYXRlTW9kdWxlXSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBQaW5Db2RlRmllbGRDb21wb25lbnQpLFxuICAgICAgICAgICAgbXVsdGk6IHRydWUsXG4gICAgICAgIH0sXG4gICAgXSxcbn0pXG5leHBvcnQgY2xhc3MgUGluQ29kZUZpZWxkQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICAgIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IExBU1RfSU5ERVhfT0ZGU0VUID0gMTtcbiAgICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBFTVBUWV9WQUxVRSA9ICcnO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIE7Dum1lcm8gZGUgY2FtcG9zIGRlIGVudHJhZGEgKGNvbXByaW1lbnRvIGRvIGPDs2RpZ28gUElOKS5cbiAgICAgKiBEZXZlIHNlciBhbyBtZW5vcyAxLlxuICAgICAqXG4gICAgICogQGRlZmF1bHQgNlxuICAgICAqL1xuICAgIHB1YmxpYyBsZW5ndGggPSBpbnB1dCg2KTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBQZXJtaXRlIGVudHJhZGEgYWxmYW51bcOpcmljYSBlIGRlIGNhcmFjdGVyZXMgZXNwZWNpYWlzLlxuICAgICAqIFF1YW5kbyBgZmFsc2VgLCBhY2VpdGEgYXBlbmFzIGTDrWdpdG9zIG51bcOpcmljb3MgKDDigJM5KS5cbiAgICAgKlxuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgcHVibGljIGFscGhhbnVtZXJpYyA9IGlucHV0KGZhbHNlKTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUZXh0byBkZSBhanVkYSBleGliaWRvIGFiYWl4byBkb3MgY2FtcG9zIGRlIGVudHJhZGEsXG4gICAgICogZm9ybmVjZW5kbyBpbnN0cnXDp8O1ZXMgYWRpY2lvbmFpcyBhbyB1c3XDoXJpby5cbiAgICAgKlxuICAgICAqIEBkZWZhdWx0ICcnXG4gICAgICovXG4gICAgcHVibGljIGhlbHBUZXh0ID0gaW5wdXQoJycpO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIENvbnRyb2xhIGEgdmlzdWFsaXphw6fDo28gZG8gZXN0YWRvIGRlIGVycm8gZG8gY29tcG9uZW50ZS5cbiAgICAgKiBRdWFuZG8gYHRydWVgLCBleGliZSBib3JkYSB2ZXJtZWxoYSBub3MgY2FtcG9zIGRlIGVudHJhZGEuXG4gICAgICogTm9ybWFsbWVudGUgdmluY3VsYWRvIGFvIGVzdGFkbyBgaW52YWxpZCAmJiBkaXJ0eWAgZG8gYEZvcm1Db250cm9sYC5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgaHRtbFxuICAgICAqIFtpbnZhbGlkXT1cIihjb250cm9sPy5pbnZhbGlkICYmIGNvbnRyb2w/LmRpcnR5KSB8fCBmYWxzZVwiXG4gICAgICogYGBgXG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICBwdWJsaWMgaW52YWxpZCA9IGlucHV0KGZhbHNlKTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBDb250cm9sYSBvIGVzdGFkbyBkZXNhYmlsaXRhZG8gZG8gY29tcG9uZW50ZSB2aWEgdHdvLXdheSBiaW5kaW5nLlxuICAgICAqIFF1YW5kbyBgdHJ1ZWAsIHRvZG9zIG9zIGNhbXBvcyBmaWNhbSBkZXNhYmlsaXRhZG9zIGUgYSBpbnRlcmHDp8OjbyBkbyB1c3XDoXJpbyDDqSBibG9xdWVhZGEuXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAqL1xuICAgIHB1YmxpYyBkaXNhYmxlZCA9IG1vZGVsKGZhbHNlKTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBFbWl0aWRvIHF1YW5kbyB0b2RvcyBvcyBjYW1wb3MgZG8gY8OzZGlnbyBQSU4gc8OjbyBwcmVlbmNoaWRvcy5cbiAgICAgKiBFbWl0ZSBvIGPDs2RpZ28gY29tcGxldG8gY29tbyBzdHJpbmcuXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYGh0bWxcbiAgICAgKiAoY29kZUZpbGxlZCk9XCJvbkNvZGVGaWxsZWQoJGV2ZW50KVwiXG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIGNvZGVGaWxsZWQgPSBvdXRwdXQ8c3RyaW5nPigpO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFNpZ25hbCBjb20gb3MgdmFsb3JlcyBhdHVhaXMgZGUgY2FkYSBjYW1wbyBkZSBlbnRyYWRhLlxuICAgICAqIE8gY29tcHJpbWVudG8gZG8gYXJyYXkgY29ycmVzcG9uZGUgYW8gdmFsb3IgZG8gaW5wdXQgYGxlbmd0aGAuXG4gICAgICovXG4gICAgcHVibGljIGlucHV0cyA9IHNpZ25hbDxzdHJpbmdbXT4oW10pO1xuXG4gICAgLyoqXG4gICAgICogU2lnbmFsIHRyYWNraW5nIHdoZXRoZXIgdGhlIGNvbXBvbmVudCBoYXMgYmVlbiB0b3VjaGVkIGJ5IHRoZSB1c2VyLlxuICAgICAqIFNldCB0byB0cnVlIHdoZW4gdGhlIGxhc3QgaW5wdXQgZmllbGQgbG9zZXMgZm9jdXMgKGJsdXIgZXZlbnQpLlxuICAgICAqL1xuICAgIHB1YmxpYyB0b3VjaGVkID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcblxuICAgIC8qKlxuICAgICAqIENvbXB1dGVkIHNpZ25hbCBpbmRpY2F0aW5nIHdoZXRoZXIgYWxsIFBJTiBjb2RlIGZpZWxkcyBhcmUgZmlsbGVkLlxuICAgICAqIFRydWUgb25seSB3aGVuIGV2ZXJ5IGZpZWxkIGNvbnRhaW5zIGEgbm9uLWVtcHR5IHZhbHVlLlxuICAgICAqL1xuICAgIHB1YmxpYyBpc0NvbXBsZXRlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5pbnB1dHMoKS5ldmVyeSgoaW5wdXQpID0+IGlucHV0ICE9PSAnJykpO1xuXG4gICAgLyoqXG4gICAgICogQ29tcHV0ZWQgc2lnbmFsIGNvbnRhaW5pbmcgdGhlIGNvbXBsZXRlIFBJTiBjb2RlIGFzIGEgam9pbmVkIHN0cmluZy5cbiAgICAgKiBSZXR1cm5zIGVtcHR5IHN0cmluZyBpZiBubyBpbnB1dHMgYXJlIGZpbGxlZC5cbiAgICAgKi9cbiAgICBwdWJsaWMgY3VycmVudFZhbHVlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5pbnB1dHMoKS5qb2luKCcnKSk7XG5cbiAgICAvKipcbiAgICAgKiBTaWduYWwgdHJhY2tpbmcgaWYgdGhlIGNvbXBvbmVudCBob3N0IGhhcyB0aGUgbmctaW52YWxpZCBjbGFzcyBmcm9tIEZvcm1Db250cm9sIHZhbGlkYXRvcnMuXG4gICAgICogVXBkYXRlZCByZWFjdGl2ZWx5IHdoZW5ldmVyIHRoZSBpbnZhbGlkIHN0YXRlIGNoYW5nZXMuXG4gICAgICovXG4gICAgcHJpdmF0ZSBoYXNOZ0ludmFsaWRDbGFzcyA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG5cbiAgICAvKipcbiAgICAgKiBTaWduYWwgdHJhY2tpbmcgaWYgdGhlIEZvcm1Db250cm9sIGlzIGRpcnR5LlxuICAgICAqIFVwZGF0ZWQgcmVhY3RpdmVseSB3aGVuZXZlciB0aGUgZGlydHkgc3RhdGUgY2hhbmdlcy5cbiAgICAgKi9cbiAgICBwcml2YXRlIGlzQ29udHJvbERpcnR5ID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcblxuICAgIC8qKlxuICAgICAqIENvbXB1dGVkIHNpZ25hbCBpbmRpY2F0aW5nIGlmIHRoZSBjb21wb25lbnQgc2hvdWxkIHNob3cgZXJyb3Igc3RhdGUuXG4gICAgICogUmV0dXJucyB0cnVlIGlmOlxuICAgICAqIC0gVGhlIGBpbnZhbGlkYCBpbnB1dCBpcyB0cnVlLCBPUlxuICAgICAqIC0gVGhlIGNvbXBvbmVudCBoYXMgdGhlIGBuZy1pbnZhbGlkYCBjbGFzcyBBTkQgdGhlIEZvcm1Db250cm9sIGlzIGRpcnR5ICh0b3VjaGVkL21vZGlmaWVkKVxuICAgICAqIFRoaXMgZW5zdXJlcyBlcnJvcnMgYXJlIG9ubHkgc2hvd24gdG8gdGhlIHVzZXIgYWZ0ZXIgdGhleSd2ZSBpbnRlcmFjdGVkIHdpdGggdGhlIGZpZWxkLlxuICAgICAqL1xuICAgIHB1YmxpYyBoYXNFcnJvciA9IGNvbXB1dGVkKCgpID0+IHRoaXMuaW52YWxpZCgpIHx8ICh0aGlzLmhhc05nSW52YWxpZENsYXNzKCkgJiYgdGhpcy5pc0NvbnRyb2xEaXJ0eSgpKSk7XG5cbiAgICAvKipcbiAgICAgKiBWaWV3Q2hpbGRyZW4gcmVmZXJlbmNlIHRvIGFsbCBpbnB1dCBET00gZWxlbWVudHMuXG4gICAgICogVXNlZCBmb3IgRE9NIG1hbmlwdWxhdGlvbiAoZm9jdXMsIHNlbGVjdGlvbikuXG4gICAgICovXG4gICAgcHVibGljIHBpbklucHV0cyA9IHZpZXdDaGlsZHJlbjxFbGVtZW50UmVmPigncGluSW5wdXQnKTtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgZWxlbWVudFJlZiA9IGluamVjdChFbGVtZW50UmVmKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG5cbiAgICBwcml2YXRlIG9uQ2hhbmdlOiAodmFsdWU6IHN0cmluZykgPT4gdm9pZCA9ICgpID0+IHt9O1xuICAgIHByaXZhdGUgb25Ub3VjaGVkOiAoKSA9PiB2b2lkID0gKCkgPT4ge307XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgZWZmZWN0KFxuICAgICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5ld0xlbmd0aCA9IHRoaXMubGVuZ3RoKCk7XG4gICAgICAgICAgICAgICAgaWYgKG5ld0xlbmd0aCA8IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKCdQSU4gY29kZSBsZW5ndGggbXVzdCBiZSBhdCBsZWFzdCAxJyk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaW5wdXRzKCkubGVuZ3RoICE9PSBuZXdMZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnB1dHMuc2V0KEFycmF5LmZyb20oeyBsZW5ndGg6IG5ld0xlbmd0aCB9LCAoKSA9PiAnJykpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH0sXG4gICAgICAgICk7XG5cbiAgICAgICAgLy8gTW9uaXRvciBuZy1pbnZhbGlkIGFuZCBuZy1kaXJ0eSBjbGFzc2VzIG9uIHRoZSBob3N0IGVsZW1lbnQgZm9yIHJlYWN0aXZlIGVycm9yIHN0YXRlXG4gICAgICAgIGVmZmVjdChcbiAgICAgICAgICAgICgpID0+IHtcbiAgICAgICAgICAgICAgICAvLyBBY2Nlc3MgaW5wdXRzIHRvIGNyZWF0ZSBkZXBlbmRlbmN5IG9uIGNoYW5nZXNcbiAgICAgICAgICAgICAgICB0aGlzLmlucHV0cygpO1xuICAgICAgICAgICAgICAgIHRoaXMuaW52YWxpZCgpO1xuXG4gICAgICAgICAgICAgICAgLy8gVXNlIHNldFRpbWVvdXQgdG8gZGVmZXIgdGhlIGNoZWNrIHRvIG5leHQgdGljayB0byBlbnN1cmUgQW5ndWxhciBoYXMgdXBkYXRlZCBET00gY2xhc3Nlc1xuICAgICAgICAgICAgICAgIGNvbnN0IHRpbWVvdXRJZCA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaG9zdEVsZW1lbnQgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaGFzTmdJbnZhbGlkID0gaG9zdEVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCduZy1pbnZhbGlkJyk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGlzRGlydHkgPSBob3N0RWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoJ25nLWRpcnR5Jyk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oYXNOZ0ludmFsaWRDbGFzcy5zZXQoaGFzTmdJbnZhbGlkKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0NvbnRyb2xEaXJ0eS5zZXQoaXNEaXJ0eSk7XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAvLyBDbGVhbnVwIHRpbWVvdXQgb24gY29tcG9uZW50IGRlc3Ryb3lcbiAgICAgICAgICAgICAgICB0aGlzLmRlc3Ryb3lSZWYub25EZXN0cm95KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXRJZCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9LFxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEhhbmRsZXMgaW5wdXQgZXZlbnQgb24gUElOIGNvZGUgZmllbGRzLlxuICAgICAqIFZhbGlkYXRlcyBjaGFyYWN0ZXIgaW5wdXQsIHByZXZlbnRzIG11bHRpcGxlIGNoYXJhY3RlcnMgcGVyIGZpZWxkLFxuICAgICAqIGF1dG8tYWR2YW5jZXMgdG8gbmV4dCBmaWVsZCB3aGVuIGNoYXJhY3RlciBpcyBlbnRlcmVkLlxuICAgICAqXG4gICAgICogQHBhcmFtIGluZGV4IC0gVGhlIGlucHV0IGZpZWxkIGluZGV4ICgwLWJhc2VkKVxuICAgICAqIEBwYXJhbSBldmVudCAtIFRoZSBpbnB1dCBldmVudFxuICAgICAqL1xuICAgIHB1YmxpYyBvbklucHV0KGluZGV4OiBudW1iZXIsIGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCgpKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gdGFyZ2V0LnZhbHVlO1xuXG4gICAgICAgIGlmICh2YWx1ZS5sZW5ndGggPiAxIHx8ICh2YWx1ZSAmJiAhdGhpcy5pc1ZhbGlkQ2hhcmFjdGVyKHZhbHVlKSkpIHtcbiAgICAgICAgICAgIHRoaXMuY2xlYXJJbnB1dCh0YXJnZXQpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zZXRJbnB1dEF0SW5kZXgoaW5kZXgsIHZhbHVlKTtcblxuICAgICAgICBpZiAodmFsdWUgJiYgaW5kZXggPCB0aGlzLmxlbmd0aCgpIC0gMSkge1xuICAgICAgICAgICAgdGhpcy5mb2N1c0FuZFNlbGVjdElucHV0KGluZGV4ICsgMSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5pc0NvbXBsZXRlKCkpIHtcbiAgICAgICAgICAgIHRoaXMuY29kZUZpbGxlZC5lbWl0KHRoaXMuY3VycmVudFZhbHVlKCkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSGFuZGxlcyBrZXlib2FyZCBldmVudHMgb24gUElOIGNvZGUgZmllbGRzLlxuICAgICAqIFN1cHBvcnRzIGFycm93IG5hdmlnYXRpb24gKGxlZnQvcmlnaHQpIGFuZCBiYWNrc3BhY2Uga2V5LlxuICAgICAqXG4gICAgICogS2V5Ym9hcmQgYmVoYXZpb3I6XG4gICAgICogLSBBcnJvd1JpZ2h0OiBNb3ZlIGZvY3VzIHRvIG5leHQgZmllbGRcbiAgICAgKiAtIEFycm93TGVmdDogTW92ZSBmb2N1cyB0byBwcmV2aW91cyBmaWVsZFxuICAgICAqIC0gQmFja3NwYWNlOiBDbGVhciBjdXJyZW50IG9yIHByZXZpb3VzIGZpZWxkIGFuZCBhZGp1c3QgZm9jdXNcbiAgICAgKlxuICAgICAqIEBwYXJhbSBpbmRleCAtIFRoZSBpbnB1dCBmaWVsZCBpbmRleCAoMC1iYXNlZClcbiAgICAgKiBAcGFyYW0gZXZlbnQgLSBUaGUga2V5Ym9hcmQgZXZlbnRcbiAgICAgKi9cbiAgICBwdWJsaWMgb25LZXlEb3duKGluZGV4OiBudW1iZXIsIGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkKCkpIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBrZXkgPSBldmVudC5rZXk7XG5cbiAgICAgICAgc3dpdGNoIChrZXkpIHtcbiAgICAgICAgICAgIGNhc2UgJ0Fycm93UmlnaHQnOlxuICAgICAgICAgICAgICAgIGlmIChpbmRleCA8IHRoaXMubGVuZ3RoKCkgLSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9jdXNBbmRTZWxlY3RJbnB1dChpbmRleCArIDEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ0Fycm93TGVmdCc6XG4gICAgICAgICAgICAgICAgaWYgKGluZGV4ID4gMCkge1xuICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvY3VzQW5kU2VsZWN0SW5wdXQoaW5kZXggLSAxKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdCYWNrc3BhY2UnOlxuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVCYWNrc3BhY2UoaW5kZXgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSGFuZGxlcyBwYXN0ZSAoY2xpcGJvYXJkKSBldmVudHMgb24gUElOIGNvZGUgZmllbGRzLlxuICAgICAqIEV4dHJhY3RzIHZhbGlkIGNoYXJhY3RlcnMgZnJvbSBwYXN0ZWQgY29udGVudCwgZmlsdGVycyBieSBjaGFyYWN0ZXIgdHlwZSxcbiAgICAgKiBhbmQgYXV0b21hdGljYWxseSB0cnVuY2F0ZXMgdG8gbWF0Y2ggZmllbGQgbGVuZ3RoLlxuICAgICAqXG4gICAgICogQmVoYXZpb3I6XG4gICAgICogLSBGaWx0ZXJzIGNoYXJhY3RlcnMgYmFzZWQgb24gYGFscGhhbnVtZXJpY2Agc2V0dGluZ1xuICAgICAqIC0gVHJ1bmNhdGVzIHRvIG1heGltdW0gZmllbGQgY291bnRcbiAgICAgKiAtIEZpbGxzIGF2YWlsYWJsZSBmaWVsZHMgd2l0aCBwYXN0ZWQgY29udGVudFxuICAgICAqIC0gRW1pdHMgY29kZUZpbGxlZCBldmVudCBpZiBhbGwgZmllbGRzIGFyZSBmaWxsZWRcbiAgICAgKlxuICAgICAqIEBwYXJhbSBldmVudCAtIFRoZSBjbGlwYm9hcmQgZXZlbnRcbiAgICAgKi9cbiAgICBwdWJsaWMgb25QYXN0ZShldmVudDogQ2xpcGJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQoKSkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgY29uc3QgdmFsaWRDaGFycyA9IHRoaXMuZXh0cmFjdFZhbGlkQ2hhcmFjdGVyc0Zyb21QYXN0ZShldmVudCk7XG5cbiAgICAgICAgaWYgKHZhbGlkQ2hhcnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBmaWxsZWRJbnB1dHMgPSBbLi4udmFsaWRDaGFycywgLi4uQXJyYXkodGhpcy5sZW5ndGgoKSAtIHZhbGlkQ2hhcnMubGVuZ3RoKS5maWxsKCcnKV07XG5cbiAgICAgICAgdGhpcy5pbnB1dHMuc2V0KGZpbGxlZElucHV0cyk7XG4gICAgICAgIHRoaXMudXBkYXRlVmFsdWUoKTtcblxuICAgICAgICAvLyBGb2N1cyBvbiB0aGUgZmlyc3QgZW1wdHkgaW5wdXQgb3IgdGhlIGxhc3QgZmlsbGVkIGlucHV0IGlmIGFsbCBhcmUgZmlsbGVkXG4gICAgICAgIGNvbnN0IGZpcnN0RW1wdHlJbmRleCA9IHZhbGlkQ2hhcnMubGVuZ3RoIDwgdGhpcy5sZW5ndGgoKSA/IHZhbGlkQ2hhcnMubGVuZ3RoIDogdmFsaWRDaGFycy5sZW5ndGggLSAxO1xuICAgICAgICB0aGlzLmZvY3VzQW5kU2VsZWN0SW5wdXQoZmlyc3RFbXB0eUluZGV4KTtcblxuICAgICAgICBpZiAodGhpcy5pc0NvbXBsZXRlKCkpIHtcbiAgICAgICAgICAgIHRoaXMuY29kZUZpbGxlZC5lbWl0KHRoaXMuY3VycmVudFZhbHVlKCkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSGFuZGxlcyBmb2N1cyBldmVudCBvbiBQSU4gY29kZSBmaWVsZHMuXG4gICAgICogU2VsZWN0cyBhbGwgdGV4dCBpbiB0aGUgaW5wdXQgZmllbGQgd2hlbiBmb2N1c2VkLlxuICAgICAqXG4gICAgICogQHBhcmFtIGluZGV4IC0gVGhlIGlucHV0IGZpZWxkIGluZGV4ICgwLWJhc2VkKVxuICAgICAqL1xuICAgIHB1YmxpYyBvbkZvY3VzKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaW5wdXQgPSB0aGlzLnBpbklucHV0cygpW2luZGV4XTtcbiAgICAgICAgaWYgKGlucHV0KSB7XG4gICAgICAgICAgICBpbnB1dC5uYXRpdmVFbGVtZW50LnNlbGVjdCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSGFuZGxlcyBibHVyIGV2ZW50IG9uIFBJTiBjb2RlIGZpZWxkcy5cbiAgICAgKiBNYXJrcyB0aGUgY29tcG9uZW50IGFzIHRvdWNoZWQgd2hlbiB0aGUgbGFzdCBpbnB1dCBmaWVsZCBsb3NlcyBmb2N1cy5cbiAgICAgKiBBbHNvIG5vdGlmaWVzIHRoZSByZWdpc3RlcmVkIG9uVG91Y2hlZCBjYWxsYmFjayBmb3IgRm9ybUNvbnRyb2wgaW50ZWdyYXRpb24uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gaW5kZXggLSBUaGUgaW5wdXQgZmllbGQgaW5kZXggKDAtYmFzZWQpXG4gICAgICovXG4gICAgcHVibGljIG9uQmx1cihpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIC8vIE9ubHkgbWFyayBhcyB0b3VjaGVkIHdoZW4gdGhlIExBU1QgaW5wdXQgbG9zZXMgZm9jdXNcbiAgICAgICAgaWYgKGluZGV4ID09PSB0aGlzLmxlbmd0aCgpIC0gUGluQ29kZUZpZWxkQ29tcG9uZW50LkxBU1RfSU5ERVhfT0ZGU0VUKSB7XG4gICAgICAgICAgICB0aGlzLnRvdWNoZWQuc2V0KHRydWUpO1xuICAgICAgICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENsZWFycyB0aGUgaW5wdXQgdmFsdWUgYXQgc3BlY2lmaWVkIGluZGV4IGFuZCBhZGp1c3RzIGZvY3VzIGFjY29yZGluZ2x5LlxuICAgICAqIElmIGN1cnJlbnQgZmllbGQgaXMgZW1wdHksIG1vdmVzIHRvIHByZXZpb3VzIGZpZWxkIGFuZCBjbGVhcnMgaXQuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSBpbmRleCAtIFRoZSBpbnB1dCBmaWVsZCBpbmRleCAoMC1iYXNlZClcbiAgICAgKi9cbiAgICBwcml2YXRlIGhhbmRsZUJhY2tzcGFjZShpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRJbnB1dHMgPSB0aGlzLmlucHV0cygpO1xuXG4gICAgICAgIC8vIElmIGN1cnJlbnQgaW5wdXQgaGFzIHZhbHVlLCBjbGVhciBpdFxuICAgICAgICBpZiAoY3VycmVudElucHV0c1tpbmRleF0pIHtcbiAgICAgICAgICAgIHRoaXMuc2V0SW5wdXRBdEluZGV4KGluZGV4LCBQaW5Db2RlRmllbGRDb21wb25lbnQuRU1QVFlfVkFMVUUpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gT3RoZXJ3aXNlLCBjbGVhciBwcmV2aW91cyBpbnB1dCBhbmQgZm9jdXMgaXRcbiAgICAgICAgaWYgKGluZGV4ID4gMCkge1xuICAgICAgICAgICAgdGhpcy5zZXRJbnB1dEF0SW5kZXgoaW5kZXggLSAxLCBQaW5Db2RlRmllbGRDb21wb25lbnQuRU1QVFlfVkFMVUUpO1xuICAgICAgICAgICAgdGhpcy5mb2N1c0FuZFNlbGVjdElucHV0KGluZGV4IC0gMSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSB2YWx1ZSBhdCBhIHNwZWNpZmljIGlucHV0IGZpZWxkIGluZGV4IGFuZCB1cGRhdGVzIHRoZSBmb3JtIHZhbHVlLlxuICAgICAqIFVwZGF0ZXMgdGhlIHNpZ25hbCBhbmQgdHJpZ2dlcnMgdGhlIGNoYW5nZSBkZXRlY3Rpb24gdmlhIG9uQ2hhbmdlIGNhbGxiYWNrLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0gaW5kZXggLSBUaGUgaW5wdXQgZmllbGQgaW5kZXggKDAtYmFzZWQpXG4gICAgICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIHNldCBpbiB0aGUgZmllbGRcbiAgICAgKi9cbiAgICBwcml2YXRlIHNldElucHV0QXRJbmRleChpbmRleDogbnVtYmVyLCB2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRJbnB1dHMgPSB0aGlzLmlucHV0cygpO1xuICAgICAgICBjdXJyZW50SW5wdXRzW2luZGV4XSA9IHZhbHVlO1xuICAgICAgICB0aGlzLmlucHV0cy5zZXQoWy4uLmN1cnJlbnRJbnB1dHNdKTtcbiAgICAgICAgdGhpcy51cGRhdGVWYWx1ZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEZvY3VzZXMgb24gYW5kIHNlbGVjdHMgdGV4dCBpbiB0aGUgaW5wdXQgZmllbGQgYXQgdGhlIHNwZWNpZmllZCBpbmRleC5cbiAgICAgKiBVc2VzIHF1ZXVlTWljcm90YXNrIHRvIGVuc3VyZSBET00gaXMgdXBkYXRlZCBiZWZvcmUgZm9jdXNpbmcuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSBpbmRleCAtIFRoZSBpbnB1dCBmaWVsZCBpbmRleCAoMC1iYXNlZClcbiAgICAgKi9cbiAgICBwcml2YXRlIGZvY3VzQW5kU2VsZWN0SW5wdXQoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBxdWV1ZU1pY3JvdGFzaygoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpbnB1dCA9IHRoaXMucGluSW5wdXRzKClbaW5kZXhdO1xuICAgICAgICAgICAgaWYgKGlucHV0KSB7XG4gICAgICAgICAgICAgICAgaW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICAgICAgICAgIGlucHV0Lm5hdGl2ZUVsZW1lbnQuc2VsZWN0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENsZWFycyB0aGUgdmFsdWUgb2YgYW4gaW5wdXQgZWxlbWVudC5cbiAgICAgKiBVc2VkIGZvciBpbnB1dCB2YWxpZGF0aW9uIHRvIHJlamVjdCBpbnZhbGlkIGNoYXJhY3RlcnMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB0YXJnZXQgLSBUaGUgSFRNTCBpbnB1dCBlbGVtZW50IHRvIGNsZWFyXG4gICAgICovXG4gICAgcHJpdmF0ZSBjbGVhcklucHV0KHRhcmdldDogSFRNTElucHV0RWxlbWVudCk6IHZvaWQge1xuICAgICAgICB0YXJnZXQudmFsdWUgPSAnJztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFeHRyYWN0cyB2YWxpZCBjaGFyYWN0ZXJzIGZyb20gcGFzdGVkIGNvbnRlbnQuXG4gICAgICogRmlsdGVycyBiYXNlZCBvbiBhbHBoYW51bWVyaWMgc2V0dGluZyBhbmQgbGltaXRzIHRvIGNvbXBvbmVudCdzIGxlbmd0aC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIGV2ZW50IC0gVGhlIGNsaXBib2FyZCBldmVudFxuICAgICAqIEByZXR1cm5zIEFycmF5IG9mIHZhbGlkIGNoYXJhY3RlcnMgZnJvbSB0aGUgcGFzdGVkIGNvbnRlbnRcbiAgICAgKi9cbiAgICBwcml2YXRlIGV4dHJhY3RWYWxpZENoYXJhY3RlcnNGcm9tUGFzdGUoZXZlbnQ6IENsaXBib2FyZEV2ZW50KTogc3RyaW5nW10ge1xuICAgICAgICBjb25zdCBwYXN0ZWRUZXh0ID0gKGV2ZW50LmNsaXBib2FyZERhdGE/LmdldERhdGEoJ3RleHQnKSB8fCAnJykudHJpbSgpO1xuICAgICAgICByZXR1cm4gcGFzdGVkVGV4dFxuICAgICAgICAgICAgLnNwbGl0KCcnKVxuICAgICAgICAgICAgLmZpbHRlcigoY2hhcikgPT4gdGhpcy5pc1ZhbGlkQ2hhcmFjdGVyKGNoYXIpKVxuICAgICAgICAgICAgLnNsaWNlKDAsIHRoaXMubGVuZ3RoKCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFZhbGlkYXRlcyBpZiBhIGNoYXJhY3RlciBpcyBhY2NlcHRhYmxlIGJhc2VkIG9uIGNvbXBvbmVudCBjb25maWd1cmF0aW9uLlxuICAgICAqIEZvciBudW1lcmljIG1vZGUsIGFjY2VwdHMgb25seSBkaWdpdHMgMC05LlxuICAgICAqIEZvciBhbHBoYW51bWVyaWMgbW9kZSwgYWNjZXB0cyBhbnkgbm9uLXdoaXRlc3BhY2UgY2hhcmFjdGVyLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0gY2hhciAtIFRoZSBjaGFyYWN0ZXIgdG8gdmFsaWRhdGVcbiAgICAgKiBAcmV0dXJucyB0cnVlIGlmIGNoYXJhY3RlciBpcyB2YWxpZCwgZmFsc2Ugb3RoZXJ3aXNlXG4gICAgICovXG4gICAgcHJpdmF0ZSBpc1ZhbGlkQ2hhcmFjdGVyKGNoYXI6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodGhpcy5hbHBoYW51bWVyaWMoKSkge1xuICAgICAgICAgICAgcmV0dXJuIGNoYXIudHJpbSgpLmxlbmd0aCA+IDA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIC9eWzAtOV0kLy50ZXN0KGNoYXIpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVwZGF0ZXMgdGhlIGZvcm0gdmFsdWUgYnkgY2FsbGluZyB0aGUgb25DaGFuZ2UgY2FsbGJhY2sgcmVnaXN0ZXJlZCBieSBGb3JtQ29udHJvbC5cbiAgICAgKiBUaGlzIGVuc3VyZXMgdGhlIHJlYWN0aXZlIGZvcm0gc3RheXMgc3luY2hyb25pemVkIHdpdGggY29tcG9uZW50IHN0YXRlLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKi9cbiAgICBwcml2YXRlIHVwZGF0ZVZhbHVlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uQ2hhbmdlKHRoaXMuY3VycmVudFZhbHVlKCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IgaW50ZXJmYWNlLlxuICAgICAqIENhbGxlZCBieSB0aGUgRm9ybUNvbnRyb2wgdG8gd3JpdGUgYSB2YWx1ZSB0byB0aGUgY29tcG9uZW50LlxuICAgICAqIE9ubHkgYWNjZXB0cyBzdHJpbmcgdmFsdWVzIHdpdGggbGVuZ3RoIG1hdGNoaW5nIHRoZSBjb21wb25lbnQncyBsZW5ndGggc2V0dGluZy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byB3cml0ZSAodHlwaWNhbGx5IGZyb20gdGhlIEZvcm1Db250cm9sKVxuICAgICAqL1xuICAgIHB1YmxpYyB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICBjb25zdCBzdHJpbmdWYWx1ZSA9IFN0cmluZyh2YWx1ZSk7XG4gICAgICAgICAgICBpZiAoc3RyaW5nVmFsdWUubGVuZ3RoID09PSB0aGlzLmxlbmd0aCgpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnB1dHMuc2V0KHN0cmluZ1ZhbHVlLnNwbGl0KCcnKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIGludGVyZmFjZS5cbiAgICAgKiBDYWxsZWQgYnkgdGhlIEZvcm1Db250cm9sIHdoZW4gdmFsdWUgY2hhbmdlcy5cbiAgICAgKiBSZWdpc3RlcnMgdGhlIGNhbGxiYWNrIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBjb21wb25lbnQgdmFsdWUgY2hhbmdlcy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBmbiAtIENhbGxiYWNrIGZ1bmN0aW9uIHRvIGludm9rZSB3aGVuIGNvbXBvbmVudCB2YWx1ZSBjaGFuZ2VzXG4gICAgICovXG4gICAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICh2YWx1ZTogc3RyaW5nKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIGludGVyZmFjZS5cbiAgICAgKiBDYWxsZWQgYnkgdGhlIEZvcm1Db250cm9sIHRvIHJlZ2lzdGVyIHRoZSB0b3VjaGVkIGNhbGxiYWNrLlxuICAgICAqIFRoZSBjYWxsYmFjayBpcyBpbnZva2VkIHdoZW4gdGhlIGxhc3QgaW5wdXQgZmllbGQgbG9zZXMgZm9jdXMuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZm4gLSBDYWxsYmFjayBmdW5jdGlvbiB0byBpbnZva2Ugd2hlbiBjb21wb25lbnQgaXMgdG91Y2hlZFxuICAgICAqL1xuICAgIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IgaW50ZXJmYWNlLlxuICAgICAqIENhbGxlZCBieSB0aGUgRm9ybUNvbnRyb2wgdG8gc2V0IHRoZSBkaXNhYmxlZCBzdGF0ZSBvZiB0aGUgY29tcG9uZW50LlxuICAgICAqIFVwZGF0ZXMgdGhlIGRpc2FibGVkIG1vZGVsIHRvIHJlZmxlY3QgdGhlIGZvcm0ncyBkaXNhYmxlZCBzdGF0ZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBpc0Rpc2FibGVkIC0gV2hldGhlciB0aGUgY29tcG9uZW50IHNob3VsZCBiZSBkaXNhYmxlZFxuICAgICAqL1xuICAgIHB1YmxpYyBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kaXNhYmxlZC5zZXQoaXNEaXNhYmxlZCk7XG4gICAgfVxufVxuXG4iLCI8ZGl2IGNsYXNzPVwiZ2FwLXhzbWFsbCBmbGV4IGZsZXgtY29sXCI+XG4gICAgPGRpdlxuICAgICAgICBjbGFzcz1cImZsZXggZ2FwLTJcIlxuICAgICAgICByb2xlPVwiZ3JvdXBcIlxuICAgICAgICBhcmlhLWxhYmVsPVwiUElOIGNvZGUgaW5wdXRcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiaGVscFRleHQoKSA/ICdwaW4taGVscC10ZXh0JyA6IG51bGxcIlxuICAgID5cbiAgICAgICAgQGZvciAoaW5wdXQgb2YgaW5wdXRzKCk7IGxldCBpID0gJGluZGV4OyB0cmFjayBpKSB7XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAjcGluSW5wdXRcbiAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJoLTEyIHctMTIgcm91bmRlZC14YmlnIGJvcmRlciB0ZXh0LWNlbnRlciB0ZXh0LWxnIGZvbnQtbWVkaXVtIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTIwMFwiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICAgICAnYm9yZGVyLWNyaXRpY2FsaXR5LXJlZCBmb2N1czpyaW5nLWNyaXRpY2FsaXR5LXJlZCc6IGhhc0Vycm9yKCksXG4gICAgICAgICAgICAgICAgICAgICdib3JkZXItZ3JheXNjYWxlLTMwIGZvY3VzOmJvcmRlci1wcmltYXJ5IGZvY3VzOnJpbmctcHJpbWFyeSc6ICFoYXNFcnJvcigpLFxuICAgICAgICAgICAgICAgICAgICAnY3Vyc29yLW5vdC1hbGxvd2VkIGJnLWdyYXlzY2FsZS0xMCB0ZXh0LWdyYXlzY2FsZS02MCc6IGRpc2FibGVkKCksXG4gICAgICAgICAgICAgICAgICAgICdiZy1ncmF5c2NhbGUtMCB0ZXh0LWdyYXlzY2FsZS0xMDAgZm9jdXM6b3V0bGluZS1ub25lJzogIWRpc2FibGVkKCksXG4gICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgW3ZhbHVlXT1cImlucHV0XCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQoKVwiXG4gICAgICAgICAgICAgICAgW2F0dHIubWF4bGVuZ3RoXT1cIjFcIlxuICAgICAgICAgICAgICAgIFthdHRyLmlucHV0bW9kZV09XCJhbHBoYW51bWVyaWMoKSA/ICd0ZXh0JyA6ICdudW1lcmljJ1wiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJcbiAgICAgICAgICAgICAgICAgICAgYWxwaGFudW1lcmljKClcbiAgICAgICAgICAgICAgICAgICAgICAgID8gKCdwbGF0Zm9ybS5hbmd1bGFyX2NvbXBvbmVudHMucGluX2NvZGVfY2hhcmFjdGVyX2luZGV4X29mX3RvdGFsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRyYW5zbGF0ZTogeyBpbmRleDogaSArIDEsIGxlbmd0aDogbGVuZ3RoKCkgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIDogKCdwbGF0Zm9ybS5hbmd1bGFyX2NvbXBvbmVudHMucGluX2NvZGVfZGlnaXRfaW5kZXhfb2ZfdG90YWwnXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgdHJhbnNsYXRlOiB7IGluZGV4OiBpICsgMSwgbGVuZ3RoOiBsZW5ndGgoKSB9KVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJoZWxwVGV4dCgpID8gJ3Bpbi1oZWxwLXRleHQnIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1yZXF1aXJlZF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgICAgICAgICAgIChpbnB1dCk9XCJvbklucHV0KGksICRldmVudClcIlxuICAgICAgICAgICAgICAgIChrZXlkb3duKT1cIm9uS2V5RG93bihpLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAocGFzdGUpPVwib25QYXN0ZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAoZm9jdXMpPVwib25Gb2N1cyhpKVwiXG4gICAgICAgICAgICAgICAgKGJsdXIpPVwib25CbHVyKGkpXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgIH1cbiAgICA8L2Rpdj5cblxuICAgIEBpZiAoaGVscFRleHQoKSkge1xuICAgICAgICA8ZGl2XG4gICAgICAgICAgICBpZD1cInBpbi1oZWxwLXRleHRcIlxuICAgICAgICAgICAgY2xhc3M9XCJtdC1zbWFsbCB0ZXh0LXNtIHRleHQtZ3JheXNjYWxlLTYwXCJcbiAgICAgICAgPlxuICAgICAgICAgICAge3sgaGVscFRleHQoKSB9fVxuICAgICAgICA8L2Rpdj5cbiAgICB9XG48L2Rpdj5cblxuIl19
453
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGluLWNvZGUtZmllbGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL3Bpbi1jb2RlLWZpZWxkL3NyYy9saWIvcGluLWNvZGUtZmllbGQvcGluLWNvZGUtZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL3Bpbi1jb2RlLWZpZWxkL3NyYy9saWIvcGluLWNvZGUtZmllbGQvcGluLWNvZGUtZmllbGQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFDTixNQUFNLEVBQ04sUUFBUSxFQUNSLEtBQUssRUFDTCxNQUFNLEVBQ04sVUFBVSxHQUNiLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7QUFFdEQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNkJHO0FBY0gsTUFBTSxPQUFPLHFCQUFxQjtJQUN0QixNQUFNLENBQVUsaUJBQWlCLEdBQUcsQ0FBQyxDQUFDO0lBQ3RDLE1BQU0sQ0FBVSxXQUFXLEdBQUcsRUFBRSxDQUFDO0lBRXpDOzs7OztPQUtHO0lBQ0ksTUFBTSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUV6Qjs7Ozs7T0FLRztJQUNJLFlBQVksR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7SUFFbkM7Ozs7O09BS0c7SUFDSSxRQUFRLEdBQUcsS0FBSyxDQUFDLEVBQUUs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QUFDLEdBQUcsRUFBRSxzQkFBc0IsQ0FBQzs0QkFDcEQsS0FBSyxFQUFFLElBQUk7eUJBQ2Q7cUJBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gICAgQ29tcG9uZW50LFxyXG4gICAgZm9yd2FyZFJlZixcclxuICAgIHZpZXdDaGlsZHJlbixcclxuICAgIEVsZW1lbnRSZWYsXHJcbiAgICBzaWduYWwsXHJcbiAgICBpbnB1dCxcclxuICAgIG91dHB1dCxcclxuICAgIGVmZmVjdCxcclxuICAgIGNvbXB1dGVkLFxyXG4gICAgbW9kZWwsXHJcbiAgICBpbmplY3QsXHJcbiAgICBEZXN0cm95UmVmLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgTmdDbGFzcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcblxyXG4vKipcclxuICogQGRlc2NyaXB0aW9uIENvbXBvbmVudGUgZGUgZW50cmFkYSBkZSBjw7NkaWdvIFBJTi9PVFAgY29tIGNhbXBvcyBpbmRpdmlkdWFpcyBwYXJhIGNhZGEgZMOtZ2l0by5cclxuICogSW1wbGVtZW50YSB7QGxpbmsgQ29udHJvbFZhbHVlQWNjZXNzb3J9IHBhcmEgaW50ZWdyYcOnw6NvIG5hdGl2YSBjb20gUmVhY3RpdmUgRm9ybXNcclxuICogZSBUZW1wbGF0ZS1kcml2ZW4gRm9ybXMgZG8gQW5ndWxhci5cclxuICpcclxuICogRnVuY2lvbmFsaWRhZGVzOlxyXG4gKiAtIENhbXBvcyBzZXBhcmFkb3MgZSBuYXZlZ8OhdmVpcyBwYXJhIGNhZGEgZMOtZ2l0byBkbyBjw7NkaWdvXHJcbiAqIC0gQ29tcHJpbWVudG8gY29uZmlndXLDoXZlbCB2aWEgaW5wdXQgYGxlbmd0aGBcclxuICogLSBTdXBvcnRlIGEgZW50cmFkYSBudW3DqXJpY2Egb3UgYWxmYW51bcOpcmljYVxyXG4gKiAtIE5hdmVnYcOnw6NvIHBvciB0ZWNsYWRvIChzZXRhcywgYmFja3NwYWNlKVxyXG4gKiAtIFN1cG9ydGUgYSBjb2xhciAocGFzdGUpIGNvbSB0cnVuY2FtZW50byBhdXRvbcOhdGljbyBhbyB0YW1hbmhvIGRlZmluaWRvXHJcbiAqIC0gRXN0YWRvIGRlIGVycm8gdmlhIGlucHV0IGBpbnZhbGlkYFxyXG4gKiAtIEFjZXNzaWJpbGlkYWRlIGNvbXBsZXRhIGNvbSBBUklBIGxhYmVscyBlIHJvbGVzIHNlbcOibnRpY29zXHJcbiAqXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYGh0bWxcclxuICogPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtXCI+XHJcbiAqICAgPHMtcGluLWNvZGUtZmllbGRcclxuICogICAgIGZvcm1Db250cm9sTmFtZT1cImNvZGVcIlxyXG4gKiAgICAgW2xlbmd0aF09XCI2XCJcclxuICogICAgIFthbHBoYW51bWVyaWNdPVwiZmFsc2VcIlxyXG4gKiAgICAgW2ludmFsaWRdPVwiKGZvcm0uZ2V0KCdjb2RlJyk/LmludmFsaWQgJiYgZm9ybS5nZXQoJ2NvZGUnKT8uZGlydHkpIHx8IGZhbHNlXCJcclxuICogICAgIGhlbHBUZXh0PVwiRGlnaXRlIHNldSBjw7NkaWdvIGRlIDYgZMOtZ2l0b3NcIlxyXG4gKiAgICAgKGNvZGVGaWxsZWQpPVwib25Db2RlRmlsbGVkKCRldmVudClcIj5cclxuICogICA8L3MtcGluLWNvZGUtZmllbGQ+XHJcbiAqIDwvZm9ybT5cclxuICogYGBgXHJcbiAqXHJcbiAqIEBjYXRlZ29yeSBJbnB1dHNcclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdzLXBpbi1jb2RlLWZpZWxkJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9waW4tY29kZS1maWVsZC5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gICAgaW1wb3J0czogW05nQ2xhc3MsIFRyYW5zbGF0ZU1vZHVsZV0sXHJcbiAgICBwcm92aWRlcnM6IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBQaW5Db2RlRmllbGRDb21wb25lbnQpLFxyXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZSxcclxuICAgICAgICB9LFxyXG4gICAgXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFBpbkNvZGVGaWVsZENvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcclxuICAgIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IExBU1RfSU5ERVhfT0ZGU0VUID0gMTtcclxuICAgIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IEVNUFRZX1ZBTFVFID0gJyc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAZGVzY3JpcHRpb24gTsO6bWVybyBkZSBjYW1wb3MgZGUgZW50cmFkYSAoY29tcHJpbWVudG8gZG8gY8OzZGlnbyBQSU4pLlxyXG4gICAgICogRGV2ZSBzZXIgYW8gbWVub3MgMS5cclxuICAgICAqXHJcbiAgICAgKiBAZGVmYXVsdCA2XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBsZW5ndGggPSBpbnB1dCg2KTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBkZXNjcmlwdGlvbiBQZXJtaXRlIGVudHJhZGEgYWxmYW51bcOpcmljYSBlIGRlIGNhcmFjdGVyZXMgZXNwZWNpYWlzLlxyXG4gICAgICogUXVhbmRvIGBmYWxzZWAsIGFjZWl0YSBhcGVuYXMgZMOtZ2l0b3MgbnVtw6lyaWNvcyAoMOKAkzkpLlxyXG4gICAgICpcclxuICAgICAqIEBkZWZhdWx0IGZhbHNlXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBhbHBoYW51bWVyaWMgPSBpbnB1dChmYWxzZSk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAZGVzY3JpcHRpb24gVGV4dG8gZGUgYWp1ZGEgZXhpYmlkbyBhYmFpeG8gZG9zIGNhbXBvcyBkZSBlbnRyYWRhLFxyXG4gICAgICogZm9ybmVjZW5kbyBpbnN0cnXDp8O1ZXMgYWRpY2lvbmFpcyBhbyB1c3XDoXJpby5cclxuICAgICAqXHJcbiAgICAgKiBAZGVmYXVsdCAnJ1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgaGVscFRleHQgPSBpbnB1dCgnJyk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAZGVzY3JpcHRpb24gQ29udHJvbGEgYSB2aXN1YWxpemHDp8OjbyBkbyBlc3RhZG8gZGUgZXJybyBkbyBjb21wb25lbnRlLlxyXG4gICAgICogUXVhbmRvIGB0cnVlYCwgZXhpYmUgYm9yZGEgdmVybWVsaGEgbm9zIGNhbXBvcyBkZSBlbnRyYWRhLlxyXG4gICAgICogTm9ybWFsbWVudGUgdmluY3VsYWRvIGFvIGVzdGFkbyBgaW52YWxpZCAmJiBkaXJ0eWAgZG8gYEZvcm1Db250cm9sYC5cclxuICAgICAqXHJcbiAgICAgKiBAZXhhbXBsZVxyXG4gICAgICogYGBgaHRtbFxyXG4gICAgICogW2ludmFsaWRdPVwiKGNvbnRyb2w/LmludmFsaWQgJiYgY29udHJvbD8uZGlydHkpIHx8IGZhbHNlXCJcclxuICAgICAqIGBgYFxyXG4gICAgICogQGRlZmF1bHQgZmFsc2VcclxuICAgICAqL1xyXG4gICAgcHVibGljIGludmFsaWQgPSBpbnB1dChmYWxzZSk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAZGVzY3JpcHRpb24gQ29udHJvbGEgbyBlc3RhZG8gZGVzYWJpbGl0YWRvIGRvIGNvbXBvbmVudGUgdmlhIHR3by13YXkgYmluZGluZy5cclxuICAgICAqIFF1YW5kbyBgdHJ1ZWAsIHRvZG9zIG9zIGNhbXBvcyBmaWNhbSBkZXNhYmlsaXRhZG9zIGUgYSBpbnRlcmHDp8OjbyBkbyB1c3XDoXJpbyDDqSBibG9xdWVhZGEuXHJcbiAgICAgKlxyXG4gICAgICogQGRlZmF1bHQgZmFsc2VcclxuICAgICAqL1xyXG4gICAgcHVibGljIGRpc2FibGVkID0gbW9kZWwoZmFsc2UpO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGRlc2NyaXB0aW9uIEVtaXRpZG8gcXVhbmRvIHRvZG9zIG9zIGNhbXBvcyBkbyBjw7NkaWdvIFBJTiBzw6NvIHByZWVuY2hpZG9zLlxyXG4gICAgICogRW1pdGUgbyBjw7NkaWdvIGNvbXBsZXRvIGNvbW8gc3RyaW5nLlxyXG4gICAgICpcclxuICAgICAqIEBleGFtcGxlXHJcbiAgICAgKiBgYGBodG1sXHJcbiAgICAgKiAoY29kZUZpbGxlZCk9XCJvbkNvZGVGaWxsZWQoJGV2ZW50KVwiXHJcbiAgICAgKiBgYGBcclxuICAgICAqL1xyXG4gICAgcHVibGljIGNvZGVGaWxsZWQgPSBvdXRwdXQ8c3RyaW5nPigpO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGRlc2NyaXB0aW9uIFNpZ25hbCBjb20gb3MgdmFsb3JlcyBhdHVhaXMgZGUgY2FkYSBjYW1wbyBkZSBlbnRyYWRhLlxyXG4gICAgICogTyBjb21wcmltZW50byBkbyBhcnJheSBjb3JyZXNwb25kZSBhbyB2YWxvciBkbyBpbnB1dCBgbGVuZ3RoYC5cclxuICAgICAqL1xyXG4gICAgcHVibGljIGlucHV0cyA9IHNpZ25hbDxzdHJpbmdbXT4oW10pO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2lnbmFsIHRyYWNraW5nIHdoZXRoZXIgdGhlIGNvbXBvbmVudCBoYXMgYmVlbiB0b3VjaGVkIGJ5IHRoZSB1c2VyLlxyXG4gICAgICogU2V0IHRvIHRydWUgd2hlbiB0aGUgbGFzdCBpbnB1dCBmaWVsZCBsb3NlcyBmb2N1cyAoYmx1ciBldmVudCkuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyB0b3VjaGVkID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIENvbXB1dGVkIHNpZ25hbCBpbmRpY2F0aW5nIHdoZXRoZXIgYWxsIFBJTiBjb2RlIGZpZWxkcyBhcmUgZmlsbGVkLlxyXG4gICAgICogVHJ1ZSBvbmx5IHdoZW4gZXZlcnkgZmllbGQgY29udGFpbnMgYSBub24tZW1wdHkgdmFsdWUuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBpc0NvbXBsZXRlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5pbnB1dHMoKS5ldmVyeSgoaW5wdXQpID0+IGlucHV0ICE9PSAnJykpO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ29tcHV0ZWQgc2lnbmFsIGNvbnRhaW5pbmcgdGhlIGNvbXBsZXRlIFBJTiBjb2RlIGFzIGEgam9pbmVkIHN0cmluZy5cclxuICAgICAqIFJldHVybnMgZW1wdHkgc3RyaW5nIGlmIG5vIGlucHV0cyBhcmUgZmlsbGVkLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgY3VycmVudFZhbHVlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5pbnB1dHMoKS5qb2luKCcnKSk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTaWduYWwgdHJhY2tpbmcgaWYgdGhlIGNvbXBvbmVudCBob3N0IGhhcyB0aGUgbmctaW52YWxpZCBjbGFzcyBmcm9tIEZvcm1Db250cm9sIHZhbGlkYXRvcnMuXHJcbiAgICAgKiBVcGRhdGVkIHJlYWN0aXZlbHkgd2hlbmV2ZXIgdGhlIGludmFsaWQgc3RhdGUgY2hhbmdlcy5cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBoYXNOZ0ludmFsaWRDbGFzcyA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTaWduYWwgdHJhY2tpbmcgaWYgdGhlIEZvcm1Db250cm9sIGlzIGRpcnR5LlxyXG4gICAgICogVXBkYXRlZCByZWFjdGl2ZWx5IHdoZW5ldmVyIHRoZSBkaXJ0eSBzdGF0ZSBjaGFuZ2VzLlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGlzQ29udHJvbERpcnR5ID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIENvbXB1dGVkIHNpZ25hbCBpbmRpY2F0aW5nIGlmIHRoZSBjb21wb25lbnQgc2hvdWxkIHNob3cgZXJyb3Igc3RhdGUuXHJcbiAgICAgKiBSZXR1cm5zIHRydWUgaWY6XHJcbiAgICAgKiAtIFRoZSBgaW52YWxpZGAgaW5wdXQgaXMgdHJ1ZSwgT1JcclxuICAgICAqIC0gVGhlIGNvbXBvbmVudCBoYXMgdGhlIGBuZy1pbnZhbGlkYCBjbGFzcyBBTkQgdGhlIEZvcm1Db250cm9sIGlzIGRpcnR5ICh0b3VjaGVkL21vZGlmaWVkKVxyXG4gICAgICogVGhpcyBlbnN1cmVzIGVycm9ycyBhcmUgb25seSBzaG93biB0byB0aGUgdXNlciBhZnRlciB0aGV5J3ZlIGludGVyYWN0ZWQgd2l0aCB0aGUgZmllbGQuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBoYXNFcnJvciA9IGNvbXB1dGVkKCgpID0+IHRoaXMuaW52YWxpZCgpIHx8ICh0aGlzLmhhc05nSW52YWxpZENsYXNzKCkgJiYgdGhpcy5pc0NvbnRyb2xEaXJ0eSgpKSk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBWaWV3Q2hpbGRyZW4gcmVmZXJlbmNlIHRvIGFsbCBpbnB1dCBET00gZWxlbWVudHMuXHJcbiAgICAgKiBVc2VkIGZvciBET00gbWFuaXB1bGF0aW9uIChmb2N1cywgc2VsZWN0aW9uKS5cclxuICAgICAqL1xyXG4gICAgcHVibGljIHBpbklucHV0cyA9IHZpZXdDaGlsZHJlbjxFbGVtZW50UmVmPigncGluSW5wdXQnKTtcclxuXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGVsZW1lbnRSZWYgPSBpbmplY3QoRWxlbWVudFJlZik7XHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XHJcblxyXG4gICAgcHJpdmF0ZSBvbkNoYW5nZTogKHZhbHVlOiBzdHJpbmcpID0+IHZvaWQgPSAoKSA9PiB7fTtcclxuICAgIHByaXZhdGUgb25Ub3VjaGVkOiAoKSA9PiB2b2lkID0gKCkgPT4ge307XHJcblxyXG4gICAgY29uc3RydWN0b3IoKSB7XHJcbiAgICAgICAgZWZmZWN0KFxyXG4gICAgICAgICAgICAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdMZW5ndGggPSB0aGlzLmxlbmd0aCgpO1xyXG4gICAgICAgICAgICAgICAgaWYgKG5ld0xlbmd0aCA8IDEpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oJ1BJTiBjb2RlIGxlbmd0aCBtdXN0IGJlIGF0IGxlYXN0IDEnKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pbnB1dHMoKS5sZW5ndGggIT09IG5ld0xlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRzLnNldChBcnJheS5mcm9tKHsgbGVuZ3RoOiBuZXdMZW5ndGggfSwgKCkgPT4gJycpKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9LFxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIC8vIE1vbml0b3IgbmctaW52YWxpZCBhbmQgbmctZGlydHkgY2xhc3NlcyBvbiB0aGUgaG9zdCBlbGVtZW50IGZvciByZWFjdGl2ZSBlcnJvciBzdGF0ZVxyXG4gICAgICAgIGVmZmVjdChcclxuICAgICAgICAgICAgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgLy8gQWNjZXNzIGlucHV0cyB0byBjcmVhdGUgZGVwZW5kZW5jeSBvbiBjaGFuZ2VzXHJcbiAgICAgICAgICAgICAgICB0aGlzLmlucHV0cygpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pbnZhbGlkKCk7XHJcblxyXG4gICAgICAgICAgICAgICAgLy8gVXNlIHNldFRpbWVvdXQgdG8gZGVmZXIgdGhlIGNoZWNrIHRvIG5leHQgdGljayB0byBlbnN1cmUgQW5ndWxhciBoYXMgdXBkYXRlZCBET00gY2xhc3Nlc1xyXG4gICAgICAgICAgICAgICAgY29uc3QgdGltZW91dElkID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGhvc3RFbGVtZW50ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaGFzTmdJbnZhbGlkID0gaG9zdEVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCduZy1pbnZhbGlkJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaXNEaXJ0eSA9IGhvc3RFbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygnbmctZGlydHknKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oYXNOZ0ludmFsaWRDbGFzcy5zZXQoaGFzTmdJbnZhbGlkKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzQ29udHJvbERpcnR5LnNldChpc0RpcnR5KTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIENsZWFudXAgdGltZW91dCBvbiBjb21wb25lbnQgZGVzdHJveVxyXG4gICAgICAgICAgICAgICAgdGhpcy5kZXN0cm95UmVmLm9uRGVzdHJveSgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXRJZCk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9LFxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBIYW5kbGVzIGlucHV0IGV2ZW50IG9uIFBJTiBjb2RlIGZpZWxkcy5cclxuICAgICAqIFZhbGlkYXRlcyBjaGFyYWN0ZXIgaW5wdXQsIHByZXZlbnRzIG11bHRpcGxlIGNoYXJhY3RlcnMgcGVyIGZpZWxkLFxyXG4gICAgICogYXV0by1hZHZhbmNlcyB0byBuZXh0IGZpZWxkIHdoZW4gY2hhcmFjdGVyIGlzIGVudGVyZWQuXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIGluZGV4IC0gVGhlIGlucHV0IGZpZWxkIGluZGV4ICgwLWJhc2VkKVxyXG4gICAgICogQHBhcmFtIGV2ZW50IC0gVGhlIGlucHV0IGV2ZW50XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBvbklucHV0KGluZGV4OiBudW1iZXIsIGV2ZW50OiBFdmVudCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkKCkpIHtcclxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XHJcbiAgICAgICAgY29uc3QgdmFsdWUgPSB0YXJnZXQudmFsdWU7XHJcblxyXG4gICAgICAgIGlmICh2YWx1ZS5sZW5ndGggPiAxIHx8ICh2YWx1ZSAmJiAhdGhpcy5pc1ZhbGlkQ2hhcmFjdGVyKHZhbHVlKSkpIHtcclxuICAgICAgICAgICAgdGhpcy5jbGVhcklucHV0KHRhcmdldCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuc2V0SW5wdXRBdEluZGV4KGluZGV4LCB2YWx1ZSk7XHJcblxyXG4gICAgICAgIGlmICh2YWx1ZSAmJiBpbmRleCA8IHRoaXMubGVuZ3RoKCkgLSAxKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZm9jdXNBbmRTZWxlY3RJbnB1dChpbmRleCArIDEpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMuaXNDb21wbGV0ZSgpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29kZUZpbGxlZC5lbWl0KHRoaXMuY3VycmVudFZhbHVlKCkpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEhhbmRsZXMga2V5Ym9hcmQgZXZlbnRzIG9uIFBJTiBjb2RlIGZpZWxkcy5cclxuICAgICAqIFN1cHBvcnRzIGFycm93IG5hdmlnYXRpb24gKGxlZnQvcmlnaHQpIGFuZCBiYWNrc3BhY2Uga2V5LlxyXG4gICAgICpcclxuICAgICAqIEtleWJvYXJkIGJlaGF2aW9yOlxyXG4gICAgICogLSBBcnJvd1JpZ2h0OiBNb3ZlIGZvY3VzIHRvIG5leHQgZmllbGRcclxuICAgICAqIC0gQXJyb3dMZWZ0OiBNb3ZlIGZvY3VzIHRvIHByZXZpb3VzIGZpZWxkXHJcbiAgICAgKiAtIEJhY2tzcGFjZTogQ2xlYXIgY3VycmVudCBvciBwcmV2aW91cyBmaWVsZCBhbmQgYWRqdXN0IGZvY3VzXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIGluZGV4IC0gVGhlIGlucHV0IGZpZWxkIGluZGV4ICgwLWJhc2VkKVxyXG4gICAgICogQHBhcmFtIGV2ZW50IC0gVGhlIGtleWJvYXJkIGV2ZW50XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBvbktleURvd24oaW5kZXg6IG51bWJlciwgZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCgpKSB7XHJcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IGtleSA9IGV2ZW50LmtleTtcclxuXHJcbiAgICAgICAgc3dpdGNoIChrZXkpIHtcclxuICAgICAgICAgICAgY2FzZSAnQXJyb3dSaWdodCc6XHJcbiAgICAgICAgICAgICAgICBpZiAoaW5kZXggPCB0aGlzLmxlbmd0aCgpIC0gMSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb2N1c0FuZFNlbGVjdElucHV0KGluZGV4ICsgMSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSAnQXJyb3dMZWZ0JzpcclxuICAgICAgICAgICAgICAgIGlmIChpbmRleCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9jdXNBbmRTZWxlY3RJbnB1dChpbmRleCAtIDEpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgJ0JhY2tzcGFjZSc6XHJcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVCYWNrc3BhY2UoaW5kZXgpO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSGFuZGxlcyBwYXN0ZSAoY2xpcGJvYXJkKSBldmVudHMgb24gUElOIGNvZGUgZmllbGRzLlxyXG4gICAgICogRXh0cmFjdHMgdmFsaWQgY2hhcmFjdGVycyBmcm9tIHBhc3RlZCBjb250ZW50LCBmaWx0ZXJzIGJ5IGNoYXJhY3RlciB0eXBlLFxyXG4gICAgICogYW5kIGF1dG9tYXRpY2FsbHkgdHJ1bmNhdGVzIHRvIG1hdGNoIGZpZWxkIGxlbmd0aC5cclxuICAgICAqXHJcbiAgICAgKiBCZWhhdmlvcjpcclxuICAgICAqIC0gRmlsdGVycyBjaGFyYWN0ZXJzIGJhc2VkIG9uIGBhbHBoYW51bWVyaWNgIHNldHRpbmdcclxuICAgICAqIC0gVHJ1bmNhdGVzIHRvIG1heGltdW0gZmllbGQgY291bnRcclxuICAgICAqIC0gRmlsbHMgYXZhaWxhYmxlIGZpZWxkcyB3aXRoIHBhc3RlZCBjb250ZW50XHJcbiAgICAgKiAtIEVtaXRzIGNvZGVGaWxsZWQgZXZlbnQgaWYgYWxsIGZpZWxkcyBhcmUgZmlsbGVkXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIGV2ZW50IC0gVGhlIGNsaXBib2FyZCBldmVudFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgb25QYXN0ZShldmVudDogQ2xpcGJvYXJkRXZlbnQpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCgpKSB7XHJcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcblxyXG4gICAgICAgIGNvbnN0IHZhbGlkQ2hhcnMgPSB0aGlzLmV4dHJhY3RWYWxpZENoYXJhY3RlcnNGcm9tUGFzdGUoZXZlbnQpO1xyXG5cclxuICAgICAgICBpZiAodmFsaWRDaGFycy5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgZmlsbGVkSW5wdXRzID0gWy4uLnZhbGlkQ2hhcnMsIC4uLkFycmF5KHRoaXMubGVuZ3RoKCkgLSB2YWxpZENoYXJzLmxlbmd0aCkuZmlsbCgnJyldO1xyXG5cclxuICAgICAgICB0aGlzLmlucHV0cy5zZXQoZmlsbGVkSW5wdXRzKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKCk7XHJcblxyXG4gICAgICAgIC8vIEZvY3VzIG9uIHRoZSBmaXJzdCBlbXB0eSBpbnB1dCBvciB0aGUgbGFzdCBmaWxsZWQgaW5wdXQgaWYgYWxsIGFyZSBmaWxsZWRcclxuICAgICAgICBjb25zdCBmaXJzdEVtcHR5SW5kZXggPSB2YWxpZENoYXJzLmxlbmd0aCA8IHRoaXMubGVuZ3RoKCkgPyB2YWxpZENoYXJzLmxlbmd0aCA6IHZhbGlkQ2hhcnMubGVuZ3RoIC0gMTtcclxuICAgICAgICB0aGlzLmZvY3VzQW5kU2VsZWN0SW5wdXQoZmlyc3RFbXB0eUluZGV4KTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuaXNDb21wbGV0ZSgpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29kZUZpbGxlZC5lbWl0KHRoaXMuY3VycmVudFZhbHVlKCkpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEhhbmRsZXMgZm9jdXMgZXZlbnQgb24gUElOIGNvZGUgZmllbGRzLlxyXG4gICAgICogU2VsZWN0cyBhbGwgdGV4dCBpbiB0aGUgaW5wdXQgZmllbGQgd2hlbiBmb2N1c2VkLlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBpbmRleCAtIFRoZSBpbnB1dCBmaWVsZCBpbmRleCAoMC1iYXNlZClcclxuICAgICAqL1xyXG4gICAgcHVibGljIG9uRm9jdXMoaW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGlucHV0ID0gdGhpcy5waW5JbnB1dHMoKVtpbmRleF07XHJcbiAgICAgICAgaWYgKGlucHV0KSB7XHJcbiAgICAgICAgICAgIGlucHV0Lm5hdGl2ZUVsZW1lbnQuc2VsZWN0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSGFuZGxlcyBibHVyIGV2ZW50IG9uIFBJTiBjb2RlIGZpZWxkcy5cclxuICAgICAqIE1hcmtzIHRoZSBjb21wb25lbnQgYXMgdG91Y2hlZCB3aGVuIHRoZSBsYXN0IGlucHV0IGZpZWxkIGxvc2VzIGZvY3VzLlxyXG4gICAgICogQWxzbyBub3RpZmllcyB0aGUgcmVnaXN0ZXJlZCBvblRvdWNoZWQgY2FsbGJhY2sgZm9yIEZvcm1Db250cm9sIGludGVncmF0aW9uLlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBpbmRleCAtIFRoZSBpbnB1dCBmaWVsZCBpbmRleCAoMC1iYXNlZClcclxuICAgICAqL1xyXG4gICAgcHVibGljIG9uQmx1cihpbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICAgICAgLy8gT25seSBtYXJrIGFzIHRvdWNoZWQgd2hlbiB0aGUgTEFTVCBpbnB1dCBsb3NlcyBmb2N1c1xyXG4gICAgICAgIGlmIChpbmRleCA9PT0gdGhpcy5sZW5ndGgoKSAtIFBpbkNvZGVGaWVsZENvbXBvbmVudC5MQVNUX0lOREVYX09GRlNFVCkge1xyXG4gICAgICAgICAgICB0aGlzLnRvdWNoZWQuc2V0KHRydWUpO1xyXG4gICAgICAgICAgICB0aGlzLm9uVG91Y2hlZCgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENsZWFycyB0aGUgaW5wdXQgdmFsdWUgYXQgc3BlY2lmaWVkIGluZGV4IGFuZCBhZGp1c3RzIGZvY3VzIGFjY29yZGluZ2x5LlxyXG4gICAgICogSWYgY3VycmVudCBmaWVsZCBpcyBlbXB0eSwgbW92ZXMgdG8gcHJldmlvdXMgZmllbGQgYW5kIGNsZWFycyBpdC5cclxuICAgICAqXHJcbiAgICAgKiBAcHJpdmF0ZVxyXG4gICAgICogQHBhcmFtIGluZGV4IC0gVGhlIGlucHV0IGZpZWxkIGluZGV4ICgwLWJhc2VkKVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGhhbmRsZUJhY2tzcGFjZShpbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgY3VycmVudElucHV0cyA9IHRoaXMuaW5wdXRzKCk7XHJcblxyXG4gICAgICAgIC8vIElmIGN1cnJlbnQgaW5wdXQgaGFzIHZhbHVlLCBjbGVhciBpdFxyXG4gICAgICAgIGlmIChjdXJyZW50SW5wdXRzW2luZGV4XSkge1xyXG4gICAgICAgICAgICB0aGlzLnNldElucHV0QXRJbmRleChpbmRleCwgUGluQ29kZUZpZWxkQ29tcG9uZW50LkVNUFRZX1ZBTFVFKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gT3RoZXJ3aXNlLCBjbGVhciBwcmV2aW91cyBpbnB1dCBhbmQgZm9jdXMgaXRcclxuICAgICAgICBpZiAoaW5kZXggPiAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0SW5wdXRBdEluZGV4KGluZGV4IC0gMSwgUGluQ29kZUZpZWxkQ29tcG9uZW50LkVNUFRZX1ZBTFVFKTtcclxuICAgICAgICAgICAgdGhpcy5mb2N1c0FuZFNlbGVjdElucHV0KGluZGV4IC0gMSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2V0cyB0aGUgdmFsdWUgYXQgYSBzcGVjaWZpYyBpbnB1dCBmaWVsZCBpbmRleCBhbmQgdXBkYXRlcyB0aGUgZm9ybSB2YWx1ZS5cclxuICAgICAqIFVwZGF0ZXMgdGhlIHNpZ25hbCBhbmQgdHJpZ2dlcnMgdGhlIGNoYW5nZSBkZXRlY3Rpb24gdmlhIG9uQ2hhbmdlIGNhbGxiYWNrLlxyXG4gICAgICpcclxuICAgICAqIEBwcml2YXRlXHJcbiAgICAgKiBAcGFyYW0gaW5kZXggLSBUaGUgaW5wdXQgZmllbGQgaW5kZXggKDAtYmFzZWQpXHJcbiAgICAgKiBAcGFyYW0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gc2V0IGluIHRoZSBmaWVsZFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHNldElucHV0QXRJbmRleChpbmRleDogbnVtYmVyLCB2YWx1ZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgY3VycmVudElucHV0cyA9IHRoaXMuaW5wdXRzKCk7XHJcbiAgICAgICAgY3VycmVudElucHV0c1tpbmRleF0gPSB2YWx1ZTtcclxuICAgICAgICB0aGlzLmlucHV0cy5zZXQoWy4uLmN1cnJlbnRJbnB1dHNdKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBGb2N1c2VzIG9uIGFuZCBzZWxlY3RzIHRleHQgaW4gdGhlIGlucHV0IGZpZWxkIGF0IHRoZSBzcGVjaWZpZWQgaW5kZXguXHJcbiAgICAgKiBVc2VzIHF1ZXVlTWljcm90YXNrIHRvIGVuc3VyZSBET00gaXMgdXBkYXRlZCBiZWZvcmUgZm9jdXNpbmcuXHJcbiAgICAgKlxyXG4gICAgICogQHByaXZhdGVcclxuICAgICAqIEBwYXJhbSBpbmRleCAtIFRoZSBpbnB1dCBmaWVsZCBpbmRleCAoMC1iYXNlZClcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBmb2N1c0FuZFNlbGVjdElucHV0KGluZGV4OiBudW1iZXIpOiB2b2lkIHtcclxuICAgICAgICBxdWV1ZU1pY3JvdGFzaygoKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGlucHV0ID0gdGhpcy5waW5JbnB1dHMoKVtpbmRleF07XHJcbiAgICAgICAgICAgIGlmIChpbnB1dCkge1xyXG4gICAgICAgICAgICAgICAgaW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xyXG4gICAgICAgICAgICAgICAgaW5wdXQubmF0aXZlRWxlbWVudC5zZWxlY3QoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2xlYXJzIHRoZSB2YWx1ZSBvZiBhbiBpbnB1dCBlbGVtZW50LlxyXG4gICAgICogVXNlZCBmb3IgaW5wdXQgdmFsaWRhdGlvbiB0byByZWplY3QgaW52YWxpZCBjaGFyYWN0ZXJzLlxyXG4gICAgICpcclxuICAgICAqIEBwcml2YXRlXHJcbiAgICAgKiBAcGFyYW0gdGFyZ2V0IC0gVGhlIEhUTUwgaW5wdXQgZWxlbWVudCB0byBjbGVhclxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGNsZWFySW5wdXQodGFyZ2V0OiBIVE1MSW5wdXRFbGVtZW50KTogdm9pZCB7XHJcbiAgICAgICAgdGFyZ2V0LnZhbHVlID0gJyc7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBFeHRyYWN0cyB2YWxpZCBjaGFyYWN0ZXJzIGZyb20gcGFzdGVkIGNvbnRlbnQuXHJcbiAgICAgKiBGaWx0ZXJzIGJhc2VkIG9uIGFscGhhbnVtZXJpYyBzZXR0aW5nIGFuZCBsaW1pdHMgdG8gY29tcG9uZW50J3MgbGVuZ3RoLlxyXG4gICAgICpcclxuICAgICAqIEBwcml2YXRlXHJcbiAgICAgKiBAcGFyYW0gZXZlbnQgLSBUaGUgY2xpcGJvYXJkIGV2ZW50XHJcbiAgICAgKiBAcmV0dXJucyBBcnJheSBvZiB2YWxpZCBjaGFyYWN0ZXJzIGZyb20gdGhlIHBhc3RlZCBjb250ZW50XHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgZXh0cmFjdFZhbGlkQ2hhcmFjdGVyc0Zyb21QYXN0ZShldmVudDogQ2xpcGJvYXJkRXZlbnQpOiBzdHJpbmdbXSB7XHJcbiAgICAgICAgY29uc3QgcGFzdGVkVGV4dCA9IChldmVudC5jbGlwYm9hcmREYXRhPy5nZXREYXRhKCd0ZXh0JykgfHwgJycpLnRyaW0oKTtcclxuICAgICAgICByZXR1cm4gcGFzdGVkVGV4dFxyXG4gICAgICAgICAgICAuc3BsaXQoJycpXHJcbiAgICAgICAgICAgIC5maWx0ZXIoKGNoYXIpID0+IHRoaXMuaXNWYWxpZENoYXJhY3RlcihjaGFyKSlcclxuICAgICAgICAgICAgLnNsaWNlKDAsIHRoaXMubGVuZ3RoKCkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmFsaWRhdGVzIGlmIGEgY2hhcmFjdGVyIGlzIGFjY2VwdGFibGUgYmFzZWQgb24gY29tcG9uZW50IGNvbmZpZ3VyYXRpb24uXHJcbiAgICAgKiBGb3IgbnVtZXJpYyBtb2RlLCBhY2NlcHRzIG9ubHkgZGlnaXRzIDAtOS5cclxuICAgICAqIEZvciBhbHBoYW51bWVyaWMgbW9kZSwgYWNjZXB0cyBhbnkgbm9uLXdoaXRlc3BhY2UgY2hhcmFjdGVyLlxyXG4gICAgICpcclxuICAgICAqIEBwcml2YXRlXHJcbiAgICAgKiBAcGFyYW0gY2hhciAtIFRoZSBjaGFyYWN0ZXIgdG8gdmFsaWRhdGVcclxuICAgICAqIEByZXR1cm5zIHRydWUgaWYgY2hhcmFjdGVyIGlzIHZhbGlkLCBmYWxzZSBvdGhlcndpc2VcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBpc1ZhbGlkQ2hhcmFjdGVyKGNoYXI6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGlmICh0aGlzLmFscGhhbnVtZXJpYygpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBjaGFyLnRyaW0oKS5sZW5ndGggPiAwO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gL15bMC05XSQvLnRlc3QoY2hhcik7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBVcGRhdGVzIHRoZSBmb3JtIHZhbHVlIGJ5IGNhbGxpbmcgdGhlIG9uQ2hhbmdlIGNhbGxiYWNrIHJlZ2lzdGVyZWQgYnkgRm9ybUNvbnRyb2wuXHJcbiAgICAgKiBUaGlzIGVuc3VyZXMgdGhlIHJlYWN0aXZlIGZvcm0gc3RheXMgc3luY2hyb25pemVkIHdpdGggY29tcG9uZW50IHN0YXRlLlxyXG4gICAgICpcclxuICAgICAqIEBwcml2YXRlXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgdXBkYXRlVmFsdWUoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5vbkNoYW5nZSh0aGlzLmN1cnJlbnRWYWx1ZSgpKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IgaW50ZXJmYWNlLlxyXG4gICAgICogQ2FsbGVkIGJ5IHRoZSBGb3JtQ29udHJvbCB0byB3cml0ZSBhIHZhbHVlIHRvIHRoZSBjb21wb25lbnQuXHJcbiAgICAgKiBPbmx5IGFjY2VwdHMgc3RyaW5nIHZhbHVlcyB3aXRoIGxlbmd0aCBtYXRjaGluZyB0aGUgY29tcG9uZW50J3MgbGVuZ3RoIHNldHRpbmcuXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIHdyaXRlICh0eXBpY2FsbHkgZnJvbSB0aGUgRm9ybUNvbnRyb2wpXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcclxuICAgICAgICBpZiAodmFsdWUpIHtcclxuICAgICAgICAgICAgY29uc3Qgc3RyaW5nVmFsdWUgPSBTdHJpbmcodmFsdWUpO1xyXG4gICAgICAgICAgICBpZiAoc3RyaW5nVmFsdWUubGVuZ3RoID09PSB0aGlzLmxlbmd0aCgpKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmlucHV0cy5zZXQoc3RyaW5nVmFsdWUuc3BsaXQoJycpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IgaW50ZXJmYWNlLlxyXG4gICAgICogQ2FsbGVkIGJ5IHRoZSBGb3JtQ29udHJvbCB3aGVuIHZhbHVlIGNoYW5nZXMuXHJcbiAgICAgKiBSZWdpc3RlcnMgdGhlIGNhbGxiYWNrIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBjb21wb25lbnQgdmFsdWUgY2hhbmdlcy5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gZm4gLSBDYWxsYmFjayBmdW5jdGlvbiB0byBpbnZva2Ugd2hlbiBjb21wb25lbnQgdmFsdWUgY2hhbmdlc1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBzdHJpbmcpID0+IHZvaWQpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLm9uQ2hhbmdlID0gZm47XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIGludGVyZmFjZS5cclxuICAgICAqIENhbGxlZCBieSB0aGUgRm9ybUNvbnRyb2wgdG8gcmVnaXN0ZXIgdGhlIHRvdWNoZWQgY2FsbGJhY2suXHJcbiAgICAgKiBUaGUgY2FsbGJhY2sgaXMgaW52b2tlZCB3aGVuIHRoZSBsYXN0IGlucHV0IGZpZWxkIGxvc2VzIGZvY3VzLlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBmbiAtIENhbGxiYWNrIGZ1bmN0aW9uIHRvIGludm9rZSB3aGVuIGNvbXBvbmVudCBpcyB0b3VjaGVkXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMub25Ub3VjaGVkID0gZm47XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIGludGVyZmFjZS5cclxuICAgICAqIENhbGxlZCBieSB0aGUgRm9ybUNvbnRyb2wgdG8gc2V0IHRoZSBkaXNhYmxlZCBzdGF0ZSBvZiB0aGUgY29tcG9uZW50LlxyXG4gICAgICogVXBkYXRlcyB0aGUgZGlzYWJsZWQgbW9kZWwgdG8gcmVmbGVjdCB0aGUgZm9ybSdzIGRpc2FibGVkIHN0YXRlLlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBpc0Rpc2FibGVkIC0gV2hldGhlciB0aGUgY29tcG9uZW50IHNob3VsZCBiZSBkaXNhYmxlZFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5kaXNhYmxlZC5zZXQoaXNEaXNhYmxlZCk7XHJcbiAgICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImdhcC14c21hbGwgZmxleCBmbGV4LWNvbFwiPlxuICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJmbGV4IGdhcC0yXCJcbiAgICAgICAgcm9sZT1cImdyb3VwXCJcbiAgICAgICAgYXJpYS1sYWJlbD1cIlBJTiBjb2RlIGlucHV0XCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImhlbHBUZXh0KCkgPyAncGluLWhlbHAtdGV4dCcgOiBudWxsXCJcbiAgICA+XG4gICAgICAgIEBmb3IgKGlucHV0IG9mIGlucHV0cygpOyBsZXQgaSA9ICRpbmRleDsgdHJhY2sgaSkge1xuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgI3BpbklucHV0XG4gICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiaC0xMiB3LTEyIHJvdW5kZWQteGJpZyBib3JkZXIgdGV4dC1jZW50ZXIgdGV4dC1sZyBmb250LW1lZGl1bSB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi0yMDBcIlxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAgICAgJ2JvcmRlci1jcml0aWNhbGl0eS1yZWQgZm9jdXM6cmluZy1jcml0aWNhbGl0eS1yZWQnOiBoYXNFcnJvcigpLFxuICAgICAgICAgICAgICAgICAgICAnYm9yZGVyLWdyYXlzY2FsZS0zMCBmb2N1czpib3JkZXItcHJpbWFyeSBmb2N1czpyaW5nLXByaW1hcnknOiAhaGFzRXJyb3IoKSxcbiAgICAgICAgICAgICAgICAgICAgJ2N1cnNvci1ub3QtYWxsb3dlZCBiZy1ncmF5c2NhbGUtMTAgdGV4dC1ncmF5c2NhbGUtNjAnOiBkaXNhYmxlZCgpLFxuICAgICAgICAgICAgICAgICAgICAnYmctZ3JheXNjYWxlLTAgdGV4dC1ncmF5c2NhbGUtMTAwIGZvY3VzOm91dGxpbmUtbm9uZSc6ICFkaXNhYmxlZCgpLFxuICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJpbnB1dFwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkKClcIlxuICAgICAgICAgICAgICAgIFthdHRyLm1heGxlbmd0aF09XCIxXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5pbnB1dG1vZGVdPVwiYWxwaGFudW1lcmljKCkgPyAndGV4dCcgOiAnbnVtZXJpYydcIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiXG4gICAgICAgICAgICAgICAgICAgIGFscGhhbnVtZXJpYygpXG4gICAgICAgICAgICAgICAgICAgICAgICA/ICgncGxhdGZvcm0uYW5ndWxhcl9jb21wb25lbnRzLnBpbl9jb2RlX2NoYXJhY3Rlcl9pbmRleF9vZl90b3RhbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0cmFuc2xhdGU6IHsgaW5kZXg6IGkgKyAxLCBsZW5ndGg6IGxlbmd0aCgpIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICA6ICgncGxhdGZvcm0uYW5ndWxhcl9jb21wb25lbnRzLnBpbl9jb2RlX2RpZ2l0X2luZGV4X29mX3RvdGFsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRyYW5zbGF0ZTogeyBpbmRleDogaSArIDEsIGxlbmd0aDogbGVuZ3RoKCkgfSlcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiaGVscFRleHQoKSA/ICdwaW4taGVscC10ZXh0JyA6IG51bGxcIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtcmVxdWlyZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgICAgICAoaW5wdXQpPVwib25JbnB1dChpLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAoa2V5ZG93bik9XCJvbktleURvd24oaSwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKHBhc3RlKT1cIm9uUGFzdGUoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKGZvY3VzKT1cIm9uRm9jdXMoaSlcIlxuICAgICAgICAgICAgICAgIChibHVyKT1cIm9uQmx1cihpKVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICB9XG4gICAgPC9kaXY+XG5cbiAgICBAaWYgKGhlbHBUZXh0KCkpIHtcbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgaWQ9XCJwaW4taGVscC10ZXh0XCJcbiAgICAgICAgICAgIGNsYXNzPVwibXQtc21hbGwgdGV4dC1zbSB0ZXh0LWdyYXlzY2FsZS02MFwiXG4gICAgICAgID5cbiAgICAgICAgICAgIHt7IGhlbHBUZXh0KCkgfX1cbiAgICAgICAgPC9kaXY+XG4gICAgfVxuPC9kaXY+XG5cbiJdfQ==