@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
@@ -388,7 +388,7 @@ export class AutocompleteComponent {
388
388
  /**
389
389
  * Função utilizada para otimizar a renderização de listas no Angular, permitindo que o framework
390
390
  * identifique cada item de forma única pelo seu `id`. Deve ser utilizada como função de `trackBy`
391
- * em diretivas como `*ngFor`.
391
+ * em blocos como `@for`.
392
392
  * @param _ - Índice do item na lista (não utilizado).
393
393
  * @param item - Objeto do tipo `SuggestionWrapper<T>` que representa o item atual.
394
394
  * @returns O identificador único (`id`) do item.
@@ -580,7 +580,7 @@ export class AutocompleteComponent {
580
580
  useExisting: forwardRef(() => AutocompleteComponent),
581
581
  multi: true,
582
582
  },
583
- ], viewQueries: [{ propertyName: "inputEl", first: true, predicate: ["inputEl"], descendants: true, isSignal: true }], ngImport: i0, template: "<div\n #containerDiv\n cdkOverlayOrigin\n #trigger=\"cdkOverlayOrigin\"\n class=\"flex h-[35px] w-full items-center overflow-hidden rounded-[4px] border focus-within:border-2 focus-within:border-primary hover:bg-grayscale-10\"\n [class]=\"inputClass()\"\n [ngClass]=\"{\n 'pointer-events-none border-grayscale-20 bg-grayscale-5 text-grayscale-30': disabled(),\n 'pointer-events-auto border-grayscale-30 bg-grayscale-0 text-grayscale-90': !disabled(),\n 'border-criticality-red': invalid(),\n }\"\n>\n <div\n class=\"flex flex-grow gap-2 px-2\"\n [ngClass]=\"{\n 'border-r': dropdown(),\n 'border-grayscale-20': dropdown() && disabled(),\n 'border-grayscale-30 focus-within:border-r-2 focus-within:border-r-primary': dropdown() && !disabled(),\n 'bg-grayscale-5': disabled(),\n 'bg-grayscale-0': !disabled(),\n }\"\n >\n @if (multiple() && values().length > 0) {\n <div class=\"flex flex-wrap items-center gap-2\">\n @for (suggestion of values(); track suggestion) {\n <s-autocomplete-chip\n [suggestion]=\"suggestion\"\n [suggestionLabel]=\"suggestionLabel()\"\n (suggestionRemoved)=\"removeSuggestion($event)\"\n ></s-autocomplete-chip>\n }\n </div>\n }\n <input\n #inputEl\n class=\"min-h-[35px] grow outline-none\"\n type=\"text\"\n [placeholder]=\"placeholder() ?? 'platform.angular_components.type_to_search' | translate\"\n [readOnly]=\"readonly()\"\n [(ngModel)]=\"inputValue\"\n [attr.aria-disabled]=\"disabled()\"\n [attr.aria-autocomplete]=\"multiple() ? 'list' : 'both'\"\n [attr.aria-activedescendant]=\"focusedIndex() >= 0 ? filteredSuggestions()[focusedIndex()].id : null\"\n role=\"searchbox\"\n (input)=\"onInput($event)\"\n (keydown)=\"onKeyDown($event)\"\n (keyUp)=\"onKeyUp($event)\"\n (blur)=\"onInputBlur($event)\"\n (focus)=\"onInputFocus($event)\"\n />\n\n @if (loading()) {\n <div class=\"flex items-center justify-center\">\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"animate-spin\"\n >\n <circle\n cx=\"10\"\n cy=\"10\"\n r=\"9\"\n stroke=\"#428bca\"\n stroke-width=\"2\"\n fill=\"none\"\n stroke-dasharray=\"56.5\"\n stroke-dashoffset=\"10\"\n stroke-linecap=\"round\"\n />\n </svg>\n </div>\n } @else {\n @if (value() && !this.disabled()) {\n <button\n class=\"px-2\"\n (click)=\"clear()\"\n tabindex=\"-1\"\n >\n <i class=\"far fa-times text-grayscale-60\"></i>\n </button>\n }\n }\n </div>\n\n @if (dropdown()) {\n <button\n class=\"flex h-full w-[35px] flex-shrink-0 flex-grow-0 items-center justify-center hover:bg-grayscale-10\"\n (click)=\"toggleDropdown()\"\n >\n <i\n class=\"fas text-grayscale-90\"\n [class.fa-caret-down]=\"!isOpen()\"\n [class.fa-caret-up]=\"isOpen()\"\n ></i>\n </button>\n }\n</div>\n\n@if (showEmptyMessage() || (filteredSuggestions().length > 0 && !readonly())) {\n <ng-template\n #dropdownTemplate\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"isOpen()\"\n [cdkConnectedOverlayHasBackdrop]=\"true\"\n (backdropClick)=\"isOpen.set(false)\"\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n (detach)=\"isOpen.set(false)\"\n >\n <div\n [id]=\"'dropdown-container-' + componentId\"\n class=\"mt-0.5 rounded-[4px] bg-grayscale-0 py-1 shadow\"\n [style.width.px]=\"containerDiv.offsetWidth\"\n >\n <ul\n class=\"max-h-52 overflow-auto\"\n role=\"listbox\"\n >\n <!-- Virtual scroll -->\n @if (virtualScroll() && filteredSuggestions().length > 10) {\n <cdk-virtual-scroll-viewport\n [itemSize]=\"virtualScrollItemSize()\"\n class=\"h-52 overflow-auto\"\n >\n <ng-container\n *cdkVirtualFor=\"\n let suggestion of enrichedFilteredSuggestions();\n let i = $index;\n trackBy: trackById\n \"\n >\n <ng-container\n [ngTemplateOutlet]=\"suggestionItemTemplate\"\n [ngTemplateOutletContext]=\"{ suggestion, i }\"\n ></ng-container>\n </ng-container>\n </cdk-virtual-scroll-viewport>\n }\n\n <!-- Normal list -->\n @if (!virtualScroll() || filteredSuggestions().length <= 10) {\n @for (suggestion of enrichedFilteredSuggestions(); track suggestion.id; let i = $index) {\n <ng-container\n [ngTemplateOutlet]=\"suggestionItemTemplate\"\n [ngTemplateOutletContext]=\"{ suggestion, i }\"\n ></ng-container>\n }\n }\n\n @if (showEmptyMessage()) {\n <span class=\"p-3 text-grayscale-60\">{{\n emptyMessage() ?? 'platform.angular_components.no_records_found' | translate\n }}</span>\n }\n </ul>\n </div>\n </ng-template>\n}\n\n<ng-template\n #suggestionItemTemplate\n let-suggestion=\"suggestion\"\n let-i=\"i\"\n>\n <li\n [id]=\"suggestion.id\"\n class=\"rounded-sm flex cursor-pointer items-center gap-2 px-3 py-2 text-grayscale-70\"\n [class.bg-grayscale-10]=\"i === focusedIndex()\"\n [class.bg-grayscale-20]=\"suggestion.isSelected\"\n [attr.aria-selected]=\"suggestion.isSelected\"\n role=\"option\"\n (click)=\"selectSuggestion(suggestion.data)\"\n >\n @if (checkmark() && multiple() && suggestion.isSelected) {\n <i class=\"far fa-check\"></i>\n }\n {{ suggestionLabel() ? suggestion.data[suggestionLabel()!] : suggestion.data }}\n </li>\n</ng-template>\n\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: OverlayModule }, { kind: "directive", type: i3.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: i3.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "directive", type: i4.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { kind: "directive", type: i4.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { kind: "component", type: i4.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "ngmodule", type: ScrollingModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }, { kind: "component", type: AutocompleteChipComponent, selector: "s-autocomplete-chip", inputs: ["suggestion", "suggestionLabel"], outputs: ["suggestionRemoved"] }] });
583
+ ], viewQueries: [{ propertyName: "inputEl", first: true, predicate: ["inputEl"], descendants: true, isSignal: true }], ngImport: i0, template: "<div\n #containerDiv\n cdkOverlayOrigin\n #trigger=\"cdkOverlayOrigin\"\n class=\"flex h-[35px] w-full items-center overflow-hidden rounded-[4px] border focus-within:border-2 focus-within:border-primary hover:bg-grayscale-10\"\n [class]=\"inputClass()\"\n [ngClass]=\"{\n 'pointer-events-none border-grayscale-20 bg-grayscale-5 text-grayscale-30': disabled(),\n 'pointer-events-auto border-grayscale-30 bg-grayscale-0 text-grayscale-90': !disabled(),\n 'border-criticality-red': invalid(),\n }\"\n>\n <div\n class=\"flex flex-grow gap-2 px-2\"\n [ngClass]=\"{\n 'border-r': dropdown(),\n 'border-grayscale-20': dropdown() && disabled(),\n 'border-grayscale-30 focus-within:border-r-2 focus-within:border-r-primary': dropdown() && !disabled(),\n 'bg-grayscale-5': disabled(),\n 'bg-grayscale-0': !disabled(),\n }\"\n >\n @if (multiple() && values().length > 0) {\n <div class=\"flex flex-wrap items-center gap-2\">\n @for (suggestion of values(); track suggestion) {\n <s-autocomplete-chip\n [suggestion]=\"suggestion\"\n [suggestionLabel]=\"suggestionLabel()\"\n (suggestionRemoved)=\"removeSuggestion($event)\"\n ></s-autocomplete-chip>\n }\n </div>\n }\n <input\n #inputEl\n class=\"min-h-[35px] grow outline-none\"\n type=\"text\"\n [placeholder]=\"placeholder() ?? 'platform.angular_components.type_to_search' | translate\"\n [readOnly]=\"readonly()\"\n [(ngModel)]=\"inputValue\"\n [attr.aria-disabled]=\"disabled()\"\n [attr.aria-autocomplete]=\"multiple() ? 'list' : 'both'\"\n [attr.aria-activedescendant]=\"focusedIndex() >= 0 ? filteredSuggestions()[focusedIndex()].id : null\"\n role=\"searchbox\"\n (input)=\"onInput($event)\"\n (keydown)=\"onKeyDown($event)\"\n (keyUp)=\"onKeyUp($event)\"\n (blur)=\"onInputBlur($event)\"\n (focus)=\"onInputFocus($event)\"\n />\n\n @if (loading()) {\n <div class=\"flex items-center justify-center\">\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"animate-spin\"\n >\n <circle\n cx=\"10\"\n cy=\"10\"\n r=\"9\"\n stroke=\"#428bca\"\n stroke-width=\"2\"\n fill=\"none\"\n stroke-dasharray=\"56.5\"\n stroke-dashoffset=\"10\"\n stroke-linecap=\"round\"\n />\n </svg>\n </div>\n } @else {\n @if (value() && !this.disabled()) {\n <button\n class=\"px-2\"\n (click)=\"clear()\"\n tabindex=\"-1\"\n >\n <i class=\"far fa-times text-grayscale-60\"></i>\n </button>\n }\n }\n </div>\n\n @if (dropdown()) {\n <button\n class=\"flex h-full w-[35px] flex-shrink-0 flex-grow-0 items-center justify-center hover:bg-grayscale-10\"\n (click)=\"toggleDropdown()\"\n >\n <i\n class=\"fas text-grayscale-90\"\n [class.fa-caret-down]=\"!isOpen()\"\n [class.fa-caret-up]=\"isOpen()\"\n ></i>\n </button>\n }\n</div>\n\n@if (showEmptyMessage() || (filteredSuggestions().length > 0 && !readonly())) {\n <ng-template\n #dropdownTemplate\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"isOpen()\"\n [cdkConnectedOverlayHasBackdrop]=\"true\"\n (backdropClick)=\"isOpen.set(false)\"\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n (detach)=\"isOpen.set(false)\"\n >\n <div\n [id]=\"'dropdown-container-' + componentId\"\n class=\"mt-0.5 rounded-[4px] bg-grayscale-0 py-1 shadow\"\n [style.width.px]=\"containerDiv.offsetWidth\"\n >\n <ul\n class=\"max-h-52 overflow-auto\"\n role=\"listbox\"\n >\n <!-- Virtual scroll -->\n @if (virtualScroll() && filteredSuggestions().length > 10) {\n <cdk-virtual-scroll-viewport\n [itemSize]=\"virtualScrollItemSize()\"\n class=\"h-52 overflow-auto\"\n >\n <ng-container\n *cdkVirtualFor=\"\n let suggestion of enrichedFilteredSuggestions();\n let i = $index;\n trackBy: trackById\n \"\n >\n <ng-container\n [ngTemplateOutlet]=\"suggestionItemTemplate\"\n [ngTemplateOutletContext]=\"{ suggestion, i }\"\n ></ng-container>\n </ng-container>\n </cdk-virtual-scroll-viewport>\n }\n\n <!-- Normal list -->\n @if (!virtualScroll() || filteredSuggestions().length <= 10) {\n @for (suggestion of enrichedFilteredSuggestions(); track suggestion.id; let i = $index) {\n <ng-container\n [ngTemplateOutlet]=\"suggestionItemTemplate\"\n [ngTemplateOutletContext]=\"{ suggestion, i }\"\n ></ng-container>\n }\n }\n\n @if (showEmptyMessage()) {\n <span class=\"p-3 text-grayscale-60\">{{\n emptyMessage() ?? 'platform.angular_components.no_records_found' | translate\n }}</span>\n }\n </ul>\n </div>\n </ng-template>\n}\n\n<ng-template\n #suggestionItemTemplate\n let-suggestion=\"suggestion\"\n let-i=\"i\"\n>\n <li\n [id]=\"suggestion.id\"\n class=\"rounded-xsmall flex cursor-pointer items-center gap-2 px-3 py-2 text-grayscale-70\"\n [class.bg-grayscale-10]=\"i === focusedIndex()\"\n [class.bg-grayscale-20]=\"suggestion.isSelected\"\n [attr.aria-selected]=\"suggestion.isSelected\"\n role=\"option\"\n (click)=\"selectSuggestion(suggestion.data)\"\n >\n @if (checkmark() && multiple() && suggestion.isSelected) {\n <i class=\"far fa-check\"></i>\n }\n {{ suggestionLabel() ? suggestion.data[suggestionLabel()!] : suggestion.data }}\n </li>\n</ng-template>\n\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: OverlayModule }, { kind: "directive", type: i3.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: i3.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "directive", type: i4.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { kind: "directive", type: i4.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { kind: "component", type: i4.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "ngmodule", type: ScrollingModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }, { kind: "component", type: AutocompleteChipComponent, selector: "s-autocomplete-chip", inputs: ["suggestion", "suggestionLabel"], outputs: ["suggestionRemoved"] }] });
584
584
  }
585
585
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AutocompleteComponent, decorators: [{
586
586
  type: Component,
@@ -604,6 +604,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
604
604
  '[attr.aria-haspopup]': '"listbox"',
605
605
  '[attr.aria-owns]': 'isOpen() ? "dropdown-container-" + componentId : null',
606
606
  '(window:resize)': 'onWindowResize()',
607
- }, template: "<div\n #containerDiv\n cdkOverlayOrigin\n #trigger=\"cdkOverlayOrigin\"\n class=\"flex h-[35px] w-full items-center overflow-hidden rounded-[4px] border focus-within:border-2 focus-within:border-primary hover:bg-grayscale-10\"\n [class]=\"inputClass()\"\n [ngClass]=\"{\n 'pointer-events-none border-grayscale-20 bg-grayscale-5 text-grayscale-30': disabled(),\n 'pointer-events-auto border-grayscale-30 bg-grayscale-0 text-grayscale-90': !disabled(),\n 'border-criticality-red': invalid(),\n }\"\n>\n <div\n class=\"flex flex-grow gap-2 px-2\"\n [ngClass]=\"{\n 'border-r': dropdown(),\n 'border-grayscale-20': dropdown() && disabled(),\n 'border-grayscale-30 focus-within:border-r-2 focus-within:border-r-primary': dropdown() && !disabled(),\n 'bg-grayscale-5': disabled(),\n 'bg-grayscale-0': !disabled(),\n }\"\n >\n @if (multiple() && values().length > 0) {\n <div class=\"flex flex-wrap items-center gap-2\">\n @for (suggestion of values(); track suggestion) {\n <s-autocomplete-chip\n [suggestion]=\"suggestion\"\n [suggestionLabel]=\"suggestionLabel()\"\n (suggestionRemoved)=\"removeSuggestion($event)\"\n ></s-autocomplete-chip>\n }\n </div>\n }\n <input\n #inputEl\n class=\"min-h-[35px] grow outline-none\"\n type=\"text\"\n [placeholder]=\"placeholder() ?? 'platform.angular_components.type_to_search' | translate\"\n [readOnly]=\"readonly()\"\n [(ngModel)]=\"inputValue\"\n [attr.aria-disabled]=\"disabled()\"\n [attr.aria-autocomplete]=\"multiple() ? 'list' : 'both'\"\n [attr.aria-activedescendant]=\"focusedIndex() >= 0 ? filteredSuggestions()[focusedIndex()].id : null\"\n role=\"searchbox\"\n (input)=\"onInput($event)\"\n (keydown)=\"onKeyDown($event)\"\n (keyUp)=\"onKeyUp($event)\"\n (blur)=\"onInputBlur($event)\"\n (focus)=\"onInputFocus($event)\"\n />\n\n @if (loading()) {\n <div class=\"flex items-center justify-center\">\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"animate-spin\"\n >\n <circle\n cx=\"10\"\n cy=\"10\"\n r=\"9\"\n stroke=\"#428bca\"\n stroke-width=\"2\"\n fill=\"none\"\n stroke-dasharray=\"56.5\"\n stroke-dashoffset=\"10\"\n stroke-linecap=\"round\"\n />\n </svg>\n </div>\n } @else {\n @if (value() && !this.disabled()) {\n <button\n class=\"px-2\"\n (click)=\"clear()\"\n tabindex=\"-1\"\n >\n <i class=\"far fa-times text-grayscale-60\"></i>\n </button>\n }\n }\n </div>\n\n @if (dropdown()) {\n <button\n class=\"flex h-full w-[35px] flex-shrink-0 flex-grow-0 items-center justify-center hover:bg-grayscale-10\"\n (click)=\"toggleDropdown()\"\n >\n <i\n class=\"fas text-grayscale-90\"\n [class.fa-caret-down]=\"!isOpen()\"\n [class.fa-caret-up]=\"isOpen()\"\n ></i>\n </button>\n }\n</div>\n\n@if (showEmptyMessage() || (filteredSuggestions().length > 0 && !readonly())) {\n <ng-template\n #dropdownTemplate\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"isOpen()\"\n [cdkConnectedOverlayHasBackdrop]=\"true\"\n (backdropClick)=\"isOpen.set(false)\"\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n (detach)=\"isOpen.set(false)\"\n >\n <div\n [id]=\"'dropdown-container-' + componentId\"\n class=\"mt-0.5 rounded-[4px] bg-grayscale-0 py-1 shadow\"\n [style.width.px]=\"containerDiv.offsetWidth\"\n >\n <ul\n class=\"max-h-52 overflow-auto\"\n role=\"listbox\"\n >\n <!-- Virtual scroll -->\n @if (virtualScroll() && filteredSuggestions().length > 10) {\n <cdk-virtual-scroll-viewport\n [itemSize]=\"virtualScrollItemSize()\"\n class=\"h-52 overflow-auto\"\n >\n <ng-container\n *cdkVirtualFor=\"\n let suggestion of enrichedFilteredSuggestions();\n let i = $index;\n trackBy: trackById\n \"\n >\n <ng-container\n [ngTemplateOutlet]=\"suggestionItemTemplate\"\n [ngTemplateOutletContext]=\"{ suggestion, i }\"\n ></ng-container>\n </ng-container>\n </cdk-virtual-scroll-viewport>\n }\n\n <!-- Normal list -->\n @if (!virtualScroll() || filteredSuggestions().length <= 10) {\n @for (suggestion of enrichedFilteredSuggestions(); track suggestion.id; let i = $index) {\n <ng-container\n [ngTemplateOutlet]=\"suggestionItemTemplate\"\n [ngTemplateOutletContext]=\"{ suggestion, i }\"\n ></ng-container>\n }\n }\n\n @if (showEmptyMessage()) {\n <span class=\"p-3 text-grayscale-60\">{{\n emptyMessage() ?? 'platform.angular_components.no_records_found' | translate\n }}</span>\n }\n </ul>\n </div>\n </ng-template>\n}\n\n<ng-template\n #suggestionItemTemplate\n let-suggestion=\"suggestion\"\n let-i=\"i\"\n>\n <li\n [id]=\"suggestion.id\"\n class=\"rounded-sm flex cursor-pointer items-center gap-2 px-3 py-2 text-grayscale-70\"\n [class.bg-grayscale-10]=\"i === focusedIndex()\"\n [class.bg-grayscale-20]=\"suggestion.isSelected\"\n [attr.aria-selected]=\"suggestion.isSelected\"\n role=\"option\"\n (click)=\"selectSuggestion(suggestion.data)\"\n >\n @if (checkmark() && multiple() && suggestion.isSelected) {\n <i class=\"far fa-check\"></i>\n }\n {{ suggestionLabel() ? suggestion.data[suggestionLabel()!] : suggestion.data }}\n </li>\n</ng-template>\n\n" }]
607
+ }, template: "<div\n #containerDiv\n cdkOverlayOrigin\n #trigger=\"cdkOverlayOrigin\"\n class=\"flex h-[35px] w-full items-center overflow-hidden rounded-[4px] border focus-within:border-2 focus-within:border-primary hover:bg-grayscale-10\"\n [class]=\"inputClass()\"\n [ngClass]=\"{\n 'pointer-events-none border-grayscale-20 bg-grayscale-5 text-grayscale-30': disabled(),\n 'pointer-events-auto border-grayscale-30 bg-grayscale-0 text-grayscale-90': !disabled(),\n 'border-criticality-red': invalid(),\n }\"\n>\n <div\n class=\"flex flex-grow gap-2 px-2\"\n [ngClass]=\"{\n 'border-r': dropdown(),\n 'border-grayscale-20': dropdown() && disabled(),\n 'border-grayscale-30 focus-within:border-r-2 focus-within:border-r-primary': dropdown() && !disabled(),\n 'bg-grayscale-5': disabled(),\n 'bg-grayscale-0': !disabled(),\n }\"\n >\n @if (multiple() && values().length > 0) {\n <div class=\"flex flex-wrap items-center gap-2\">\n @for (suggestion of values(); track suggestion) {\n <s-autocomplete-chip\n [suggestion]=\"suggestion\"\n [suggestionLabel]=\"suggestionLabel()\"\n (suggestionRemoved)=\"removeSuggestion($event)\"\n ></s-autocomplete-chip>\n }\n </div>\n }\n <input\n #inputEl\n class=\"min-h-[35px] grow outline-none\"\n type=\"text\"\n [placeholder]=\"placeholder() ?? 'platform.angular_components.type_to_search' | translate\"\n [readOnly]=\"readonly()\"\n [(ngModel)]=\"inputValue\"\n [attr.aria-disabled]=\"disabled()\"\n [attr.aria-autocomplete]=\"multiple() ? 'list' : 'both'\"\n [attr.aria-activedescendant]=\"focusedIndex() >= 0 ? filteredSuggestions()[focusedIndex()].id : null\"\n role=\"searchbox\"\n (input)=\"onInput($event)\"\n (keydown)=\"onKeyDown($event)\"\n (keyUp)=\"onKeyUp($event)\"\n (blur)=\"onInputBlur($event)\"\n (focus)=\"onInputFocus($event)\"\n />\n\n @if (loading()) {\n <div class=\"flex items-center justify-center\">\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"animate-spin\"\n >\n <circle\n cx=\"10\"\n cy=\"10\"\n r=\"9\"\n stroke=\"#428bca\"\n stroke-width=\"2\"\n fill=\"none\"\n stroke-dasharray=\"56.5\"\n stroke-dashoffset=\"10\"\n stroke-linecap=\"round\"\n />\n </svg>\n </div>\n } @else {\n @if (value() && !this.disabled()) {\n <button\n class=\"px-2\"\n (click)=\"clear()\"\n tabindex=\"-1\"\n >\n <i class=\"far fa-times text-grayscale-60\"></i>\n </button>\n }\n }\n </div>\n\n @if (dropdown()) {\n <button\n class=\"flex h-full w-[35px] flex-shrink-0 flex-grow-0 items-center justify-center hover:bg-grayscale-10\"\n (click)=\"toggleDropdown()\"\n >\n <i\n class=\"fas text-grayscale-90\"\n [class.fa-caret-down]=\"!isOpen()\"\n [class.fa-caret-up]=\"isOpen()\"\n ></i>\n </button>\n }\n</div>\n\n@if (showEmptyMessage() || (filteredSuggestions().length > 0 && !readonly())) {\n <ng-template\n #dropdownTemplate\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"isOpen()\"\n [cdkConnectedOverlayHasBackdrop]=\"true\"\n (backdropClick)=\"isOpen.set(false)\"\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n (detach)=\"isOpen.set(false)\"\n >\n <div\n [id]=\"'dropdown-container-' + componentId\"\n class=\"mt-0.5 rounded-[4px] bg-grayscale-0 py-1 shadow\"\n [style.width.px]=\"containerDiv.offsetWidth\"\n >\n <ul\n class=\"max-h-52 overflow-auto\"\n role=\"listbox\"\n >\n <!-- Virtual scroll -->\n @if (virtualScroll() && filteredSuggestions().length > 10) {\n <cdk-virtual-scroll-viewport\n [itemSize]=\"virtualScrollItemSize()\"\n class=\"h-52 overflow-auto\"\n >\n <ng-container\n *cdkVirtualFor=\"\n let suggestion of enrichedFilteredSuggestions();\n let i = $index;\n trackBy: trackById\n \"\n >\n <ng-container\n [ngTemplateOutlet]=\"suggestionItemTemplate\"\n [ngTemplateOutletContext]=\"{ suggestion, i }\"\n ></ng-container>\n </ng-container>\n </cdk-virtual-scroll-viewport>\n }\n\n <!-- Normal list -->\n @if (!virtualScroll() || filteredSuggestions().length <= 10) {\n @for (suggestion of enrichedFilteredSuggestions(); track suggestion.id; let i = $index) {\n <ng-container\n [ngTemplateOutlet]=\"suggestionItemTemplate\"\n [ngTemplateOutletContext]=\"{ suggestion, i }\"\n ></ng-container>\n }\n }\n\n @if (showEmptyMessage()) {\n <span class=\"p-3 text-grayscale-60\">{{\n emptyMessage() ?? 'platform.angular_components.no_records_found' | translate\n }}</span>\n }\n </ul>\n </div>\n </ng-template>\n}\n\n<ng-template\n #suggestionItemTemplate\n let-suggestion=\"suggestion\"\n let-i=\"i\"\n>\n <li\n [id]=\"suggestion.id\"\n class=\"rounded-xsmall flex cursor-pointer items-center gap-2 px-3 py-2 text-grayscale-70\"\n [class.bg-grayscale-10]=\"i === focusedIndex()\"\n [class.bg-grayscale-20]=\"suggestion.isSelected\"\n [attr.aria-selected]=\"suggestion.isSelected\"\n role=\"option\"\n (click)=\"selectSuggestion(suggestion.data)\"\n >\n @if (checkmark() && multiple() && suggestion.isSelected) {\n <i class=\"far fa-check\"></i>\n }\n {{ suggestionLabel() ? suggestion.data[suggestionLabel()!] : suggestion.data }}\n </li>\n</ng-template>\n\n" }]
608
608
  }], ctorParameters: () => [] });
609
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9hdXRvY29tcGxldGUvc3JjL2xpYi9hdXRvY29tcGxldGUvYXV0b2NvbXBsZXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9hdXRvY29tcGxldGUvc3JjL2xpYi9hdXRvY29tcGxldGUvYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDekQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDSCxTQUFTLEVBQ1QsUUFBUSxFQUNSLFVBQVUsRUFFVixVQUFVLEVBQ1YsTUFBTSxFQUNOLEtBQUssRUFDTCxLQUFLLEVBQ0wsTUFBTSxFQUNOLE1BQU0sRUFDTixTQUFTLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUF3QixXQUFXLEVBQUUsaUJBQWlCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzRyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdkYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sNERBQTRELENBQUM7Ozs7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LGVBQWUsNEZBQ2YseUJBQXlCOzs0RkFpQnBCLHFCQUFxQjtrQkE1QmpDLFNBQVM7K0JBQ0ksZ0JBQWdCLGNBQ2QsSUFBSSxXQUVQO3dCQUNMLFlBQVk7d0JBQ1osV0FBVzt3QkFDWCxtQkFBbUI7d0JBQ25CLGFBQWE7d0JBQ2IsZUFBZTt3QkFDZixlQUFlO3dCQUNmLHlCQUF5QjtxQkFDNUIsYUFDVTt3QkFDUDs0QkFDSSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxzQkFBc0IsQ0FBQzs0QkFDcEQsS0FBSyxFQUFFLElBQUk7eUJBQ2Q7cUJBQ0osUUFDSzt3QkFDRixJQUFJLEVBQUUsVUFBVTt3QkFDaEIsc0JBQXNCLEVBQUUsVUFBVTt3QkFDbEMsc0JBQXNCLEVBQUUsV0FBVzt3QkFDbkMsa0JBQWtCLEVBQUUsdURBQXVEO3dCQUMzRSxpQkFBaUIsRUFBRSxrQkFBa0I7cUJBQ3hDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT3ZlcmxheU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IFNjcm9sbGluZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9zY3JvbGxpbmcnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIGNvbXB1dGVkLFxuICAgIERlc3Ryb3lSZWYsXG4gICAgRWxlbWVudFJlZixcbiAgICBmb3J3YXJkUmVmLFxuICAgIGluamVjdCxcbiAgICBpbnB1dCxcbiAgICBtb2RlbCxcbiAgICBvdXRwdXQsXG4gICAgc2lnbmFsLFxuICAgIHZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybXNNb2R1bGUsIE5HX1ZBTFVFX0FDQ0VTU09SLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZpbHRlciwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBBdXRvY29tcGxldGVDaGlwQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2F1dG9jb21wbGV0ZS1jaGlwL2F1dG9jb21wbGV0ZS1jaGlwLmNvbXBvbmVudCc7XG5cbi8qKlxuICogUmVwcmVzZW50YSB1bSBpdGVtIGRlIHN1Z2VzdMOjbyBlbmNhcHN1bGFkbywgdXRpbGl6YWRvIGVtIGNvbXBvbmVudGVzIGRlIGF1dG9jb21wbGV0ZS5cbiAqIEB0ZW1wbGF0ZSBUIFRpcG8gZG9zIGRhZG9zIGFzc29jaWFkb3Mgw6Agc3VnZXN0w6NvLlxuICogQHByb3BlcnR5IGRhdGEgT3MgZGFkb3MgZGEgc3VnZXN0w6NvLlxuICogQHByb3BlcnR5IGlkIElkZW50aWZpY2Fkb3Igw7puaWNvIGRhIHN1Z2VzdMOjby5cbiAqIEBwcm9wZXJ0eSBbaXNTZWxlY3RlZF0gSW5kaWNhIHNlIGEgc3VnZXN0w6NvIGVzdMOhIHNlbGVjaW9uYWRhLlxuICovXG5pbnRlcmZhY2UgU3VnZ2VzdGlvbldyYXBwZXI8VD4ge1xuICAgIGRhdGE6IFQ7XG4gICAgaWQ6IHN0cmluZztcbiAgICBpc1NlbGVjdGVkPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gQ29tcG9uZW50ZSBkZSBhdXRvY29tcGxldGFyIGNvbSBzdWdlc3TDtWVzIGRpbsOibWljYXMsIHN1cG9ydGFuZG8gc2VsZcOnw6NvIHNpbXBsZXNcbiAqIGUgbcO6bHRpcGxhLiBJbXBsZW1lbnRhIHtAbGluayBDb250cm9sVmFsdWVBY2Nlc3Nvcn0gcGFyYSBpbnRlZ3Jhw6fDo28gY29tIGZvcm11bMOhcmlvcyBBbmd1bGFyLlxuICogT2ZlcmVjZSBjYXJyZWdhbWVudG8gbGF6eSBkZSBzdWdlc3TDtWVzIHZpYSBvdXRwdXQgYGxhenlMb2FkYCwgdmlydHVhbGl6YcOnw6NvIGRlIGxpc3RhLFxuICogc2VsZcOnw6NvIGNvbSBjaGlwcyBubyBtb2RvIG3Dumx0aXBsbyBlIGFjZXNzaWJpbGlkYWRlIEFSSUEgY29tcGxldGEgKGNvbWJvYm94IHJvbGUpLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGBodG1sXG4gKiA8cy1hdXRvY29tcGxldGVcbiAqICAgZm9ybUNvbnRyb2xOYW1lPVwiY2lkYWRlXCJcbiAqICAgcGxhY2Vob2xkZXI9XCJCdXNjYXIgY2lkYWRlLi4uXCJcbiAqICAgW3N1Z2dlc3Rpb25zXT1cImNpZGFkZXNcIlxuICogICBzdWdnZXN0aW9uTGFiZWw9XCJub21lXCJcbiAqICAgW2RlbGF5XT1cIjQwMFwiXG4gKiAgIChjb21wbGV0ZU1ldGhvZCk9XCJidXNjYXIoJGV2ZW50KVwiIC8+XG4gKiBgYGBcbiAqXG4gKiBAY2F0ZWdvcnkgSW5wdXRzXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncy1hdXRvY29tcGxldGUnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2F1dG9jb21wbGV0ZS5jb21wb25lbnQuaHRtbCcsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgICAgIEZvcm1zTW9kdWxlLFxuICAgICAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgICAgICBPdmVybGF5TW9kdWxlLFxuICAgICAgICBTY3JvbGxpbmdNb2R1bGUsXG4gICAgICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgICAgICAgQXV0b2NvbXBsZXRlQ2hpcENvbXBvbmVudCxcbiAgICBdLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEF1dG9jb21wbGV0ZUNvbXBvbmVudCksXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICBdLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgcm9sZTogJ2NvbWJvYm94JyxcbiAgICAgICAgJ1thdHRyLmFyaWEtZXhwYW5kZWRdJzogJ2lzT3BlbigpJyxcbiAgICAgICAgJ1thdHRyLmFyaWEtaGFzcG9wdXBdJzogJ1wibGlzdGJveFwiJyxcbiAgICAgICAgJ1thdHRyLmFyaWEtb3duc10nOiAnaXNPcGVuKCkgPyBcImRyb3Bkb3duLWNvbnRhaW5lci1cIiArIGNvbXBvbmVudElkIDogbnVsbCcsXG4gICAgICAgICcod2luZG93OnJlc2l6ZSknOiAnb25XaW5kb3dSZXNpemUoKScsXG4gICAgfSxcbn0pXG5leHBvcnQgY2xhc3MgQXV0b2NvbXBsZXRlQ29tcG9uZW50PFQ+IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICAgIHByaXZhdGUgc3RhdGljIG5leHRJZCA9IDA7XG5cbiAgICAvKiogQGRlc2NyaXB0aW9uIExpc3RhIGVzdMOhdGljYSBkZSBzdWdlc3TDtWVzIGV4aWJpZGFzIG5vIGRyb3Bkb3duLiBObyBtb2RvIGxhenksIHByZWZpcmEgdXNhciBvIG91dHB1dCBgbGF6eUxvYWRgLiBAZGVmYXVsdCBbXSAqL1xuICAgIHB1YmxpYyBzdWdnZXN0aW9ucyA9IGlucHV0PFRbXT4oW10pO1xuXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBUZXh0byBleGliaWRvIG5vIGlucHV0IHF1YW5kbyBuZW5odW0gdmFsb3IgZXN0w6Egc2VsZWNpb25hZG8uICovXG4gICAgcHVibGljIHBsYWNlaG9sZGVyID0gaW5wdXQ8c3RyaW5nPigpO1xuXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBDaGF2ZSBkbyBvYmpldG8gZGUgc3VnZXN0w6NvIGN1am8gdmFsb3Igc2Vyw6EgZW1pdGlkbyBhbyBmb3JtdWzDoXJpby4gKi9cbiAgICBwdWJsaWMgc3VnZ2VzdGlvblZhbHVlID0gaW5wdXQ8a2V5b2YgVD4oKTtcblxuICAgIC8qKiBAZGVzY3JpcHRpb24gQ2hhdmUgZG8gb2JqZXRvIGRlIHN1Z2VzdMOjbyB1c2FkYSBjb21vIHRleHRvIGRlIGV4aWJpw6fDo28gbm8gZHJvcGRvd24uICovXG4gICAgcHVibGljIHN1Z2dlc3Rpb25MYWJlbCA9IGlucHV0PGtleW9mIFQ+KCk7XG5cbiAgICAvKiogQGRlc2NyaXB0aW9uIFRvcm5hIG8gY2FtcG8gc29tZW50ZSBsZWl0dXJhLCBpbXBlZGluZG8gZGlnaXRhw6fDo28gZSBzZWxlw6fDo28uIEBkZWZhdWx0IGZhbHNlICovXG4gICAgcHVibGljIHJlYWRvbmx5ID0gaW5wdXQoZmFsc2UpO1xuXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBNZW5zYWdlbSBleGliaWRhIG5vIGRyb3Bkb3duIHF1YW5kbyBuZW5odW1hIHN1Z2VzdMOjbyDDqSBlbmNvbnRyYWRhLiAqL1xuICAgIHB1YmxpYyBlbXB0eU1lc3NhZ2UgPSBpbnB1dDxzdHJpbmc+KCk7XG5cbiAgICAvKiogQGRlc2NyaXB0aW9uIFRlbXBvIGRlIGVzcGVyYSBlbSBtcyBhcMOzcyBhIMO6bHRpbWEgdGVjbGEgYW50ZXMgZGUgYWNpb25hciBhIGJ1c2NhIHBvciBzdWdlc3TDtWVzLiBAZGVmYXVsdCAzMDAgKi9cbiAgICBwdWJsaWMgZGVsYXkgPSBpbnB1dCgzMDApO1xuXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBFeGliZSBlc3RhZG8gZGUgZXJybyB2aXN1YWwgbm8gY2FtcG8gZGUgaW5wdXQuIEBkZWZhdWx0IGZhbHNlICovXG4gICAgcHVibGljIGludmFsaWQgPSBpbnB1dChmYWxzZSk7XG5cbiAgICAvKiogQGRlc2NyaXB0aW9uIEhhYmlsaXRhIHZpcnR1YWxpemHDp8OjbyBkYSBsaXN0YSBkZSBzdWdlc3TDtWVzIHBhcmEgbWVsaG9yIHBlcmZvcm1hbmNlIGNvbSBncmFuZGVzIHZvbHVtZXMgZGUgZGFkb3MuIEBkZWZhdWx0IGZhbHNlICovXG4gICAgcHVibGljIHZpcnR1YWxTY3JvbGwgPSBpbnB1dChmYWxzZSk7XG5cbiAgICAvKiogQGRlc2NyaXB0aW9uIEFsdHVyYSBmaXhhIGVtIHBpeGVscyBkZSBjYWRhIGl0ZW0gbm8gdmlydHVhbCBzY3JvbGwuIEBkZWZhdWx0IDM3ICovXG4gICAgcHVibGljIHZpcnR1YWxTY3JvbGxJdGVtU2l6ZSA9IGlucHV0KDM3KTtcblxuICAgIC8qKiBAZGVzY3JpcHRpb24gQXRpdmEgbyBjYXJyZWdhbWVudG8gYXNzw61uY3Jvbm8gZGUgc3VnZXN0w7VlcyB2aWEgbyBvdXRwdXQgYGxhenlMb2FkYC4gQGRlZmF1bHQgZmFsc2UgKi9cbiAgICBwdWJsaWMgbGF6eSA9IGlucHV0KGZhbHNlKTtcblxuICAgIC8qKiBAZGVzY3JpcHRpb24gRXhpYmUgdW0gYm90w6NvIGRlIGRyb3Bkb3duIHBhcmEgYWJyaXIgYSBsaXN0YSBzZW0gbmVjZXNzaWRhZGUgZGUgZGlnaXRhw6fDo28uIEBkZWZhdWx0IGZhbHNlICovXG4gICAgcHVibGljIGRyb3Bkb3duID0gaW5wdXQoZmFsc2UpO1xuXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBRdWFuZG8gYHRydWVgLCBvIHZhbG9yIGRvIGNhbXBvIGRldmUgc2VyIG9icmlnYXRvcmlhbWVudGUgdW1hIGRhcyBvcMOnw7VlcyBzdWdlcmlkYXMuIEBkZWZhdWx0IGZhbHNlICovXG4gICAgcHVibGljIGZvcmNlU2VsZWN0aW9uID0gaW5wdXQoZmFsc2UpO1xuXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBFeGliZSDDrWNvbmUgZGUgY2hlY2ttYXJrIGFvIGxhZG8gZGEgb3DDp8OjbyBzZWxlY2lvbmFkYSBubyBkcm9wZG93bi4gQGRlZmF1bHQgZmFsc2UgKi9cbiAgICBwdWJsaWMgY2hlY2ttYXJrID0gaW5wdXQoZmFsc2UpO1xuXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBIYWJpbGl0YSBzZWxlw6fDo28gZGUgbcO6bHRpcGxvcyBpdGVucyBleGliaWRvcyBjb21vIGNoaXBzIG5vIGNhbXBvLiBAZGVmYXVsdCBmYWxzZSAqL1xuICAgIHB1YmxpYyBtdWx0aXBsZSA9IGlucHV0KGZhbHNlKTtcblxuICAgIC8qKiBAZGVzY3JpcHRpb24gUXVhbnRpZGFkZSBtw61uaW1hIGRlIGNhcmFjdGVyZXMgbmVjZXNzw6FyaWEgcGFyYSBhY2lvbmFyIGEgYnVzY2EgcG9yIHN1Z2VzdMO1ZXMuIEBkZWZhdWx0IDEgKi9cbiAgICBwdWJsaWMgbWluTGVuZ3RoVG9TZWFyY2ggPSBpbnB1dCgxKTtcblxuICAgIC8qKiBAZGVzY3JpcHRpb24gQ2xhc3NlIENTUyBhZGljaW9uYWwgYXBsaWNhZGEgYW8gZWxlbWVudG8gYDxpbnB1dD5gIGludGVybm8uIEBkZWZhdWx0ICcnICovXG4gICAgcHVibGljIGlucHV0Q2xhc3MgPSBpbnB1dDxzdHJpbmc+KCcnKTtcblxuICAgIC8qKiBAZGVzY3JpcHRpb24gQ2hhdmUgZG8gb2JqZXRvIHVzYWRhIHBhcmEgY29tcGFyYcOnw6NvIGRlIGlkZW50aWRhZGUgZW50cmUgb3DDp8O1ZXMsIGV2aXRhbmRvIGR1cGxpY2F0YXMgbmEgc2VsZcOnw6NvIG3Dumx0aXBsYS4gKi9cbiAgICBwdWJsaWMgZGF0YUtleSA9IGlucHV0PGtleW9mIFQ+KCk7XG5cbiAgICAvKiogQGRlc2NyaXB0aW9uIFZhbG9yIGF0dWFsbWVudGUgc2VsZWNpb25hZG8gbm8gbW9kbyBzaW1wbGVzLCB2aWEgdHdvLXdheSBiaW5kaW5nLiAqL1xuICAgIHB1YmxpYyB2YWx1ZSA9IG1vZGVsPFQgfCBudWxsPigpO1xuXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBMaXN0YSBkZSB2YWxvcmVzIHNlbGVjaW9uYWRvcyBubyBtb2RvIG3Dumx0aXBsbywgdmlhIHR3by13YXkgYmluZGluZy4gQGRlZmF1bHQgW10gKi9cbiAgICBwdWJsaWMgdmFsdWVzID0gbW9kZWw8VFtdPihbXSk7XG5cbiAgICAvKiogQGRlc2NyaXB0aW9uIENvbnRyb2xhIG8gZXN0YWRvIGRlc2FiaWxpdGFkbyBkbyBjb21wb25lbnRlIHZpYSB0d28td2F5IGJpbmRpbmcuIEBkZWZhdWx0IGZhbHNlICovXG4gICAgcHVibGljIGRpc2FibGVkID0gbW9kZWwoZmFsc2UpO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEVtaXRpZG8gbm8gbW9kbyBsYXp5IHF1YW5kbyBvIHVzdcOhcmlvIGRpZ2l0YSBlIG8gY29tcG9uZW50ZSBlc3TDoSBwcm9udG8gcGFyYSByZWNlYmVyIG5vdmFzIHN1Z2VzdMO1ZXMuXG4gICAgICogTyBldmVudG8gY29udMOpbSBgcXVlcnlgICh0ZXh0byBkaWdpdGFkbykgZSBgcmVzcG9uc2VgIChmdW7Dp8OjbyBjYWxsYmFjayBwYXJhIGZvcm5lY2VyIG9zIGRhZG9zKS5cbiAgICAgKi9cbiAgICBwdWJsaWMgbGF6eUxvYWQgPSBvdXRwdXQ8eyBxdWVyeTogc3RyaW5nOyByZXNwb25zZTogKGRhdGE6IFRbXSkgPT4gdm9pZCB9PigpO1xuXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBFbWl0aWRvIHF1YW5kbyBvIHVzdcOhcmlvIHNlbGVjaW9uYSB1bWEgc3VnZXN0w6NvIGRvIGRyb3Bkb3duLiAqL1xuICAgIHB1YmxpYyBzZWxlY3RlZCA9IG91dHB1dDxUPigpO1xuXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBFbWl0aWRvIHF1YW5kbyBvIHVzdcOhcmlvIHJlbW92ZSB1bWEgc3VnZXN0w6NvIHNlbGVjaW9uYWRhIChtb2RvIG3Dumx0aXBsbykuICovXG4gICAgcHVibGljIHVuc2VsZWN0ZWQgPSBvdXRwdXQ8VD4oKTtcblxuICAgIC8qKiBAZGVzY3JpcHRpb24gRW1pdGlkbyBxdWFuZG8gbyBjYW1wbyBwZXJkZSBvIGZvY28uICovXG4gICAgcHVibGljIGJsdXJyZWQgPSBvdXRwdXQ8RXZlbnQ+KCk7XG5cbiAgICAvKiogQGRlc2NyaXB0aW9uIEVtaXRpZG8gcXVhbmRvIG8gY2FtcG8gw6kgbGltcG8gcGVsbyB1c3XDoXJpby4gKi9cbiAgICBwdWJsaWMgY2xlYXJlZCA9IG91dHB1dCgpO1xuXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBFbWl0aWRvIGEgY2FkYSBwcmVzc2lvbmFtZW50byBkZSB0ZWNsYSBubyBjYW1wbyBkZSBpbnB1dC4gKi9cbiAgICBwdWJsaWMga2V5VXAgPSBvdXRwdXQ8RXZlbnQ+KCk7XG5cbiAgICAvKiogQGRlc2NyaXB0aW9uIEVtaXRpZG8gcXVhbmRvIG8gY2FtcG8gcmVjZWJlIGZvY28uICovXG4gICAgcHVibGljIGZvY3VzZWQgPSBvdXRwdXQ8YW55PigpO1xuXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBFbWl0aWRvIHF1YW5kbyBvIHVzdcOhcmlvIGRpZ2l0YSBubyBjYW1wbywgZm9ybmVjZW5kbyBvIHRleHRvIGF0dWFsIHBhcmEgZmlsdHJhZ2VtIGRlIHN1Z2VzdMO1ZXMuICovXG4gICAgcHVibGljIGNvbXBsZXRlTWV0aG9kID0gb3V0cHV0PHsgcXVlcnk6IHN0cmluZyB9PigpO1xuXG4gICAgcHVibGljIGZvY3VzZWRJbmRleCA9IHNpZ25hbCgtMSk7XG4gICAgcHVibGljIGlzT3BlbiA9IHNpZ25hbChmYWxzZSk7XG4gICAgcHVibGljIGZpbHRlcmVkU3VnZ2VzdGlvbnMgPSBzaWduYWw8U3VnZ2VzdGlvbldyYXBwZXI8VD5bXT4oW10pO1xuICAgIHB1YmxpYyBzaG93RW1wdHlNZXNzYWdlID0gc2lnbmFsKGZhbHNlKTtcbiAgICBwdWJsaWMgZmlsdGVyVGV4dCA9IHNpZ25hbCgnJyk7XG4gICAgcHVibGljIGlucHV0VmFsdWUgPSBzaWduYWwoJycpO1xuICAgIHB1YmxpYyBsb2FkaW5nID0gc2lnbmFsKGZhbHNlKTtcblxuICAgIHB1YmxpYyBjb21wb25lbnRJZCA9IGBhdXRvY29tcGxldGVfJHtBdXRvY29tcGxldGVDb21wb25lbnQubmV4dElkKyt9YDtcbiAgICBwdWJsaWMgaW5wdXRFbCA9IHZpZXdDaGlsZDxFbGVtZW50UmVmPignaW5wdXRFbCcpO1xuXG4gICAgcHJpdmF0ZSBfaW5wdXRTdWJqZWN0JCA9IG5ldyBTdWJqZWN0PHN0cmluZz4oKTtcbiAgICBwcml2YXRlIF9sYXp5TG9hZFN1YmplY3QkID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xuICAgIHByaXZhdGUgX2Rlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG4gICAgcHJpdmF0ZSBfb25DaGFuZ2U/OiAodmFsdWU6IGFueSB8IGFueVtdKSA9PiB2b2lkO1xuICAgIHByaXZhdGUgX29uVG91Y2hlZD86ICgpID0+IHZvaWQ7XG5cbiAgICAvKipcbiAgICAgKiBDb21wdXRlZCBxdWUgcmV0b3JuYSB1bWEgbGlzdGEgZGUgc3VnZXN0w7VlcyBkbyB0aXBvIGBTdWdnZXN0aW9uV3JhcHBlcjxUPmAsXG4gICAgICogYWRpY2lvbmFuZG8gdW0gaWRlbnRpZmljYWRvciDDum5pY28gYSBjYWRhIHN1Z2VzdMOjby5cbiAgICAgKiBAcmV0dXJucyBVbWEgbGlzdGEgZGUgc3VnZXN0w7VlcyBwcm9jZXNzYWRhcyBjb20gaWRlbnRpZmljYWRvcmVzIMO6bmljb3MuXG4gICAgICovXG4gICAgcHVibGljIGludGVybmFsU3VnZ2VzdGlvbiA9IGNvbXB1dGVkPFN1Z2dlc3Rpb25XcmFwcGVyPFQ+W10+KCgpID0+IHtcbiAgICAgICAgY29uc3Qgb3B0cyA9IHRoaXMuc3VnZ2VzdGlvbnMoKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FkZElkVG9TdWdnZXN0aW9ucyhvcHRzKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIFJldG9ybmEgdW0gY29uanVudG8gKGBTZXRgKSBjb20gb3MgSURzIGRhcyBzdWdlc3TDtWVzIHNlbGVjaW9uYWRhcy5cbiAgICAgKi9cbiAgICBwdWJsaWMgc2VsZWN0ZWRTdWdnZXN0aW9uSWRzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICBpZiAoIXRoaXMubXVsdGlwbGUoKSkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY3VycmVudFZhbHVlcyA9IHRoaXMudmFsdWVzKCk7XG5cbiAgICAgICAgcmV0dXJuIG5ldyBTZXQoXG4gICAgICAgICAgICBjdXJyZW50VmFsdWVzLm1hcCgodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pbnRlcm5hbFN1Z2dlc3Rpb24oKS5maW5kKChzKSA9PiBKU09OLnN0cmluZ2lmeShzLmRhdGEpID09PSBKU09OLnN0cmluZ2lmeSh2YWx1ZSkpPy5pZDtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICApO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogUmV0b3JuYSB1bWEgbGlzdGEgZGUgc3VnZXN0w7VlcyBmaWx0cmFkYXMsIGVucmlxdWVjaWRhcyBjb20gYSBwcm9wcmllZGFkZSBgaXNTZWxlY3RlZGAuXG4gICAgICogQ2FkYSBzdWdlc3TDo28gcmVjZWJlIHVtIGNhbXBvIGJvb2xlYW5vIGBpc1NlbGVjdGVkYCBpbmRpY2FuZG8gc2UgZWxhIGVzdMOhIHNlbGVjaW9uYWRhLFxuICAgICAqIGNvbSBiYXNlIG5vcyBJRHMgZGFzIHN1Z2VzdMO1ZXMgc2VsZWNpb25hZGFzIGUgbm8gdmFsb3IgZGEgc3VnZXN0w6NvLlxuICAgICAqIEByZXR1cm5zIFVtYSBsaXN0YSBkZSBzdWdlc3TDtWVzIGZpbHRyYWRhcywgY2FkYSB1bWEgY29tIGEgcHJvcHJpZWRhZGUgYWRpY2lvbmFsIGBpc1NlbGVjdGVkYC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZW5yaWNoZWRGaWx0ZXJlZFN1Z2dlc3Rpb25zID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICBjb25zdCBmaWx0ZXJlZCA9IHRoaXMuZmlsdGVyZWRTdWdnZXN0aW9ucygpO1xuICAgICAgICBjb25zdCBzZWxlY3RlZElkcyA9IHRoaXMuc2VsZWN0ZWRTdWdnZXN0aW9uSWRzKCk7XG5cbiAgICAgICAgcmV0dXJuIGZpbHRlcmVkLm1hcCgoc3VnZ2VzdGlvbikgPT4gKHtcbiAgICAgICAgICAgIC4uLnN1Z2dlc3Rpb24sXG4gICAgICAgICAgICBpc1NlbGVjdGVkOiBzZWxlY3RlZElkcy5oYXMoc3VnZ2VzdGlvbi5pZCksXG4gICAgICAgIH0pKTtcbiAgICB9KTtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLl92YWxpZGF0ZUlucHV0cygpO1xuICAgICAgICB0aGlzLl9zZXR1cElucHV0RGVib3VuY2UoKTtcbiAgICAgICAgdGhpcy5fc2V0dXBMYXp5TG9hZERlYm91bmNlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGVmaW5lIG8gdmFsb3IgZG8gYXV0b2NvbXBsZXRlLlxuICAgICAqIEBwYXJhbSB2YWx1ZSBWYWxvciBhIHNlciBkZWZpbmlkbywgw7puaWNvIG91IGFycmF5LCBjb25mb3JtZSBzZWxlw6fDo28gbcO6bHRpcGxhLlxuICAgICAqIEB0aHJvd3MgU2UgbcO6bHRpcGxvIGZvciBmYWxzbyBlIHZhbHVlIGZvciBhcnJheS5cbiAgICAgKi9cbiAgICBwdWJsaWMgd3JpdGVWYWx1ZSh2YWx1ZTogVCB8IFRbXSk6IHZvaWQge1xuICAgICAgICBjb25zdCBzdWdnZXN0aW9uTGFiZWwgPSB0aGlzLnN1Z2dlc3Rpb25MYWJlbCgpO1xuXG4gICAgICAgIGlmICh2YWx1ZSAmJiB0aGlzLm11bHRpcGxlKCkpIHtcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICAgICAgICAgIHRoaXMudmFsdWVzLnNldCh2YWx1ZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMudmFsdWVzLnNldChbdmFsdWVdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIHZhbHVlIG11c3Qgbm90IGJlIGFuIGFycmF5IHdoZW4gbXVsdGlwbGUgaXMgZmFsc2UuJyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMudmFsdWUuc2V0KHZhbHVlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5pbnB1dFZhbHVlLnNldCghdmFsdWUgPyAnJyA6IHN1Z2dlc3Rpb25MYWJlbCA/IFN0cmluZyh2YWx1ZVtzdWdnZXN0aW9uTGFiZWxdKSA6IFN0cmluZyh2YWx1ZSkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVnaXN0cmEgdW1hIGZ1bsOnw6NvIGRlIGNhbGxiYWNrIHF1ZSBzZXLDoSBjaGFtYWRhIHNlbXByZSBxdWUgbyB2YWxvciBkbyBjb21wb25lbnRlIG11ZGFyLlxuICAgICAqIEBwYXJhbSBvbkNoYW5nZSBGdW7Dp8OjbyBhIHNlciBjaGFtYWRhIHF1YW5kbyBvIHZhbG9yIG11ZGFyLiBSZWNlYmUgbyBub3ZvIHZhbG9yIGNvbW8gYXJndW1lbnRvLCBxdWUgcG9kZSBzZXIgdW0gw7puaWNvIHZhbG9yIG91IHVtIGFycmF5IGRlIHZhbG9yZXMuXG4gICAgICovXG4gICAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2Uob25DaGFuZ2U6ICh2YWx1ZTogYW55IHwgYW55W10pID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fb25DaGFuZ2UgPSBvbkNoYW5nZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZWdpc3RyYSB1bWEgZnVuw6fDo28gZGUgY2FsbGJhY2sgcXVlIHNlcsOhIGNoYW1hZGEgcXVhbmRvIG8gY29tcG9uZW50ZSBmb3IgdG9jYWRvIChwZXJkZXIgbyBmb2NvKS5cbiAgICAgKiBAcGFyYW0gb25Ub3VjaGVkIEZ1bsOnw6NvIGRlIGNhbGxiYWNrIGEgc2VyIGNoYW1hZGEgcXVhbmRvIG8gY29tcG9uZW50ZSBmb3IgdG9jYWRvLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZChvblRvdWNoZWQ6ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fb25Ub3VjaGVkID0gb25Ub3VjaGVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERlZmluZSBvIGVzdGFkbyBkZSBkZXNhYmlsaXRhZG8gZG8gY29tcG9uZW50ZS5cbiAgICAgKiBAcGFyYW0gZGlzYWJsZWQgSW5kaWNhIHNlIG8gY29tcG9uZW50ZSBkZXZlIHNlciBkZXNhYmlsaXRhZG8gKGB0cnVlYCkgb3UgaGFiaWxpdGFkbyAoYGZhbHNlYCkuXG4gICAgICovXG4gICAgcHVibGljIHNldERpc2FibGVkU3RhdGU/KGRpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlzYWJsZWQuc2V0KGRpc2FibGVkKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBNYW5pcHVsYSBvIGV2ZW50byBkZSBlbnRyYWRhIGRvIHVzdcOhcmlvIG5vIGNhbXBvIGRlIHRleHRvIGRvIGF1dG9jb21wbGV0ZS5cbiAgICAgKiBFc3RlIG3DqXRvZG8gw6kgY2hhbWFkbyBzZW1wcmUgcXVlIG8gdXN1w6FyaW8gZGlnaXRhIGFsZ28gbm8gY2FtcG8gZGUgZW50cmFkYS5cbiAgICAgKiBFbGUgZXhlY3V0YSBhcyBzZWd1aW50ZXMgYcOnw7VlczpcbiAgICAgKiAtIERpc3BhcmEgbyBjYWxsYmFjayBkZSBcInRvdWNoZWRcIiBwYXJhIGNvbnRyb2xlIGRlIGZvcm11bMOhcmlvcy5cbiAgICAgKiAtIE9idMOpbSBvIHZhbG9yIGF0dWFsIGRvIGNhbXBvIGRlIGVudHJhZGEuXG4gICAgICogLSBTZSBvIG1vZG8gbGF6eSBlc3RpdmVyIGF0aXZhZG8sIGVtaXRlIG8gZXZlbnRvIGRlIGxhenlMb2FkIGNvbSBhIGNvbnN1bHRhIGUgYWJyZSBvIHBhaW5lbCBkZSBzdWdlc3TDtWVzLlxuICAgICAqIC0gQ2FzbyBjb250csOhcmlvLCBhdHVhbGl6YSBvIHRleHRvIGRlIGZpbHRybywgbm90aWZpY2Egb3Mgb2JzZXJ2YWRvcmVzIGUgYWJyZSBvIHBhaW5lbCBkZSBzdWdlc3TDtWVzIHNlIGhvdXZlciBzdWdlc3TDtWVzIGRpc3BvbsOtdmVpcy5cbiAgICAgKiBAcGFyYW0gZXZlbnQgRXZlbnRvIGRlIGVudHJhZGEgZG8gdGlwbyBgRXZlbnRgIHByb3ZlbmllbnRlIGRvIGNhbXBvIGRlIHRleHRvLlxuICAgICAqL1xuICAgIHB1YmxpYyBvbklucHV0KGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9vblRvdWNoZWQ/LigpO1xuXG4gICAgICAgIGNvbnN0IHZhbHVlID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZTtcblxuICAgICAgICBpZiAodGhpcy5sYXp5KCkpIHtcbiAgICAgICAgICAgIHRoaXMuX2xhenlMb2FkU3ViamVjdCQubmV4dCh2YWx1ZSk7XG4gICAgICAgICAgICB0aGlzLmlzT3Blbi5zZXQodHJ1ZSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmZpbHRlclRleHQuc2V0KHZhbHVlKTtcblxuICAgICAgICB0aGlzLmNvbXBsZXRlTWV0aG9kLmVtaXQoeyBxdWVyeTogdmFsdWUgfSk7XG5cbiAgICAgICAgdGhpcy5faW5wdXRTdWJqZWN0JC5uZXh0KHZhbHVlKTtcblxuICAgICAgICBpZiAodGhpcy5zdWdnZXN0aW9ucygpKSB7XG4gICAgICAgICAgICB0aGlzLmlzT3Blbi5zZXQodHJ1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBNYW5pcHVsYSBvIGV2ZW50byBkZSBwZXJkYSBkZSBmb2NvIChibHVyKSBkbyBjYW1wbyBkZSBlbnRyYWRhIGRvIGF1dG9jb21wbGV0ZS5cbiAgICAgKiBFc3RlIG3DqXRvZG8gdmVyaWZpY2Egc2UgbyB2YWxvciBkaWdpdGFkbyBwZWxvIHVzdcOhcmlvIGNvcnJlc3BvbmRlIGV4YXRhbWVudGUgYSBhbGd1bSBkb3MgaXRlbnMgc3VnZXJpZG9zLlxuICAgICAqIC0gU2UgaG91dmVyIGNvcnJlc3BvbmTDqm5jaWE6XG4gICAgICogICAtIE5vIG1vZG8gbcO6bHRpcGxvIChgbXVsdGlwbGVgKSwgYWRpY2lvbmEgbyBpdGVtIHNlbGVjaW9uYWRvIMOgIGxpc3RhIGRlIHZhbG9yZXMsIGNhc28gYWluZGEgbsOjbyBlc3RlamEgcHJlc2VudGUuXG4gICAgICogICAtIE5vIG1vZG8gc2ltcGxlcywgc2VsZWNpb25hIG8gaXRlbSBjb3JyZXNwb25kZW50ZSBzZSBhaW5kYSBuw6NvIGVzdGl2ZXIgc2VsZWNpb25hZG8uXG4gICAgICogLSBTZSBuw6NvIGhvdXZlciBjb3JyZXNwb25kw6puY2lhLCBsaW1wYSBvIGNhbXBvIGRlIGVudHJhZGEuXG4gICAgICovXG4gICAgcHVibGljIG9uSW5wdXRCbHVyKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBjb25zdCBpbnB1dFZhbHVlID0gU3RyaW5nKHRoaXMuaW5wdXRWYWx1ZSgpKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICBjb25zdCBzdWdnZXN0aW9ucyA9IHRoaXMuaW50ZXJuYWxTdWdnZXN0aW9uKCk7XG5cbiAgICAgICAgY29uc3QgbWF0Y2ggPSBzdWdnZXN0aW9ucy5maW5kKCh7IGRhdGEgfSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbGFiZWwgPSB0aGlzLnN1Z2dlc3Rpb25MYWJlbCgpID8gZGF0YVt0aGlzLnN1Z2dlc3Rpb25MYWJlbCgpIV0gOiBkYXRhO1xuICAgICAgICAgICAgcmV0dXJuIFN0cmluZyhsYWJlbCkudG9Mb3dlckNhc2UoKSA9PT0gaW5wdXRWYWx1ZTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKG1hdGNoKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5tdWx0aXBsZSgpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY3VycmVudFZhbHVlcyA9IHRoaXMudmFsdWVzKCk7XG4gICAgICAgICAgICAgICAgY29uc3QgZXhpc3RzID0gY3VycmVudFZhbHVlcy5zb21lKFxuICAgICAgICAgICAgICAgICAgICAodmFsdWUpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAodGhpcy5zdWdnZXN0aW9uVmFsdWUoKSA/IHZhbHVlW3RoaXMuc3VnZ2VzdGlvblZhbHVlKCkhXSA6IHZhbHVlKSA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLnN1Z2dlc3Rpb25WYWx1ZSgpID8gbWF0Y2guZGF0YVt0aGlzLnN1Z2dlc3Rpb25WYWx1ZSgpIV0gOiBtYXRjaC5kYXRhKSxcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGlmICghZXhpc3RzKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmFsdWVzLnNldChbLi4uY3VycmVudFZhbHVlcywgbWF0Y2guZGF0YV0pO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9vbkNoYW5nZT8uKHRoaXMudmFsdWVzKCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLmlucHV0VmFsdWUuc2V0KCcnKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMudmFsdWUoKSAhPT0gbWF0Y2guZGF0YSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdFN1Z2dlc3Rpb24obWF0Y2guZGF0YSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5pbnB1dFZhbHVlLnNldCgnJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEaXNwYXJhIG8gZXZlbnRvIGRlIGZvY28gcXVhbmRvIG8gY2FtcG8gZGUgZW50cmFkYSByZWNlYmUgZm9jby5cbiAgICAgKiBAcGFyYW0gZXZlbnQgTyBldmVudG8gZGUgZm9jbyBkaXNwYXJhZG8gcGVsbyBlbGVtZW50byBkZSBlbnRyYWRhLlxuICAgICAqL1xuICAgIHB1YmxpYyBvbklucHV0Rm9jdXMoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMuZm9jdXNlZC5lbWl0KGV2ZW50KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBNYW5pcHVsYSBldmVudG9zIGRlIHRlY2xhZG8gbm8gY29tcG9uZW50ZSBkZSBhdXRvY29tcGxldGUuXG4gICAgICogRXN0ZSBtw6l0b2RvIGdlcmVuY2lhIGEgbmF2ZWdhw6fDo28gZSBzZWxlw6fDo28gZGUgc3VnZXN0w7VlcyB1c2FuZG8gYXMgdGVjbGFzIGRvIHRlY2xhZG8uXG4gICAgICogLSAnQXJyb3dEb3duJzogTW92ZSBvIGZvY28gcGFyYSBhIHByw7N4aW1hIHN1Z2VzdMOjby5cbiAgICAgKiAtICdBcnJvd1VwJzogTW92ZSBvIGZvY28gcGFyYSBhIHN1Z2VzdMOjbyBhbnRlcmlvci5cbiAgICAgKiAtICdFbnRlcicgb3UgJ1RhYic6IFNlbGVjaW9uYSBhIHN1Z2VzdMOjbyBhdHVhbG1lbnRlIGZvY2FkYSBlIGZlY2hhIGEgbGlzdGEgZGUgc3VnZXN0w7Vlcy5cbiAgICAgKiAtICdFc2NhcGUnOiBGZWNoYSBhIGxpc3RhIGRlIHN1Z2VzdMO1ZXMgc2VtIHNlbGVjaW9uYXIgbmVuaHVtIGl0ZW0uXG4gICAgICogQHBhcmFtIGV2ZW50IE8gZXZlbnRvIGRlIHRlY2xhZG8gZGlzcGFyYWRvIHBlbG8gdXN1w6FyaW8uXG4gICAgICovXG4gICAgcHVibGljIG9uS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICBjb25zdCBzdWdnZXN0aW9ucyA9IHRoaXMuZmlsdGVyZWRTdWdnZXN0aW9ucygpO1xuXG4gICAgICAgIHRoaXMuX29uVG91Y2hlZD8uKCk7XG5cbiAgICAgICAgY29uc3QgX3NlbGVjdFN1Z2dlc3Rpb24gPSAoKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5mb2N1c2VkSW5kZXgoKSA+PSAwICYmIHRoaXMuZm9jdXNlZEluZGV4KCkgPCBzdWdnZXN0aW9ucy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0U3VnZ2VzdGlvbihzdWdnZXN0aW9uc1t0aGlzLmZvY3VzZWRJbmRleCgpXS5kYXRhKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICAgICAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgICAgICAgY2FzZSAnQXJyb3dEb3duJzpcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2ZvY3VzTmV4dFN1Z2dlc3Rpb24oc3VnZ2VzdGlvbnMpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnQXJyb3dVcCc6XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9mb2N1c1ByZXZpb3VzU3VnZ2VzdGlvbigpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnRW50ZXInOlxuICAgICAgICAgICAgY2FzZSAnVGFiJzpcbiAgICAgICAgICAgICAgICBfc2VsZWN0U3VnZ2VzdGlvbigpO1xuICAgICAgICAgICAgICAgIHRoaXMuaXNPcGVuLnNldChmYWxzZSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdFc2NhcGUnOlxuICAgICAgICAgICAgICAgIHRoaXMuaXNPcGVuLnNldChmYWxzZSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFbWl0ZSB1bSBldmVudG8gcXVhbmRvIHVtYSB0ZWNsYSDDqSBsaWJlcmFkYSBubyBjb21wb25lbnRlLiAgICAgKlxuICAgICAqIEBwYXJhbSBldmVudCBPIGV2ZW50byBkZSB0ZWNsYWRvIGFzc29jaWFkbyDDoCB0ZWNsYSBsaWJlcmFkYS5cbiAgICAgKi9cbiAgICBwdWJsaWMgb25LZXlVcChldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5rZXlVcC5lbWl0KGV2ZW50KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBGZWNoYSBvIGRyb3Bkb3duIGVtIGV2ZW50b3MgZGUgcmVkaW1lbnNpb25hbWVudG8gZGUgamFuZWxhLlxuICAgICAqL1xuICAgIHB1YmxpYyBvbldpbmRvd1Jlc2l6ZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaXNPcGVuKCkpIHtcbiAgICAgICAgICAgIHRoaXMuaXNPcGVuLnNldChmYWxzZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZWxlY2lvbmEgdW1hIHN1Z2VzdMOjbyBkYSBsaXN0YSBkZSBzdWdlc3TDtWVzLlxuICAgICAqIFNlIG8gbW9kbyBtw7psdGlwbG8gZXN0aXZlciBhdGl2YWRvIChgbXVsdGlwbGUoKWAgcmV0b3JuYSB0cnVlKSwgYWRpY2lvbmEgYSBzdWdlc3TDo28gw6AgbGlzdGEgZGUgc3VnZ2VzdMO1ZXMgc2VsZWNpb25hZGFzLFxuICAgICAqIGNhc28gZWxhIGFpbmRhIG7Do28gZXN0ZWphIHByZXNlbnRlLiBFbSBzZWd1aWRhLCBsaW1wYSBvIHZhbG9yIGRvIGNhbXBvIGRlIGVudHJhZGEuXG4gICAgICogU2UgbyBtb2RvIG3Dumx0aXBsbyBuw6NvIGVzdGl2ZXIgYXRpdmFkbywgZGVmaW5lIGEgc3VnZXN0w6NvIGNvbW8gdmFsb3Igc2VsZWNpb25hZG8gZSBhdHVhbGl6YSBvIGNhbXBvIGRlIGVudHJhZGFcbiAgICAgKiBjb20gbyByw7N0dWxvIGNvcnJlc3BvbmRlbnRlLlxuICAgICAqIEVtIGFtYm9zIG9zIGNhc29zLCBkaXNwYXJhIG8gY2FsbGJhY2sgYF9vbkNoYW5nZWAgY29tIG8gbm92byB2YWxvciBlIGZlY2hhIG8gcGFpbmVsIGRlIHN1Z2VzdMO1ZXMuXG4gICAgICogQHBhcmFtIHN1Z2dlc3Rpb24gLSBBIHN1Z2VzdMOjbyBhIHNlciBzZWxlY2lvbmFkYS5cbiAgICAgKi9cbiAgICBwdWJsaWMgc2VsZWN0U3VnZ2VzdGlvbihzdWdnZXN0aW9uOiBUKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm11bHRpcGxlKCkpIHtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRWYWx1ZXMgPSB0aGlzLnZhbHVlcygpO1xuICAgICAgICAgICAgY29uc3QgZXhpc3RzID0gY3VycmVudFZhbHVlcy5zb21lKFxuICAgICAgICAgICAgICAgICh2YWx1ZSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHRoaXMuc3VnZ2VzdGlvblZhbHVlKCkgPyB2YWx1ZVt0aGlzLnN1Z2dlc3Rpb25WYWx1ZSgpIV0gOiB2YWx1ZSkgPT09XG4gICAgICAgICAgICAgICAgICAgICh0aGlzLnN1Z2dlc3Rpb25WYWx1ZSgpID8gc3VnZ2VzdGlvblt0aGlzLnN1Z2dlc3Rpb25WYWx1ZSgpIV0gOiBzdWdnZXN0aW9uKSxcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGlmICghZXhpc3RzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZXMuc2V0KFsuLi5jdXJyZW50VmFsdWVzLCBzdWdnZXN0aW9uXSk7XG4gICAgICAgICAgICAgICAgdGhpcy5fb25DaGFuZ2U/Lih0aGlzLnZhbHVlcygpKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5pbnB1dFZhbHVlLnNldCgnJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlLnNldChzdWdnZXN0aW9uKTtcbiAgICAgICAgICAgIGNvbnN0IF92YWx1ZSA9IHRoaXMuc3VnZ2VzdGlvblZhbHVlKCkgPyBzdWdnZXN0aW9uW3RoaXMuc3VnZ2VzdGlvblZhbHVlKCkhXSA6IHN1Z2dlc3Rpb247XG4gICAgICAgICAgICBjb25zdCBfaW5wdXRWYWx1ZSA9IFN0cmluZyh0aGlzLnN1Z2dlc3Rpb25MYWJlbCgpID8gc3VnZ2VzdGlvblt0aGlzLnN1Z2dlc3Rpb25MYWJlbCgpIV0gOiBzdWdnZXN0aW9uKTtcblxuICAgICAgICAgICAgdGhpcy5pbnB1dFZhbHVlLnNldChfaW5wdXRWYWx1ZSk7XG4gICAgICAgICAgICB0aGlzLl9vbkNoYW5nZT8uKF92YWx1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNlbGVjdGVkLmVtaXQoc3VnZ2VzdGlvbik7XG4gICAgICAgIHRoaXMuaXNPcGVuLnNldChmYWxzZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTGltcGEgbyB2YWxvciBzZWxlY2lvbmFkbyBubyBjb21wb25lbnRlIGRlIGF1dG9jb21wbGV0ZS5cbiAgICAgKiBTZSBvIG1vZG8gbcO6bHRpcGxvIGVzdGl2ZXIgYXRpdmFkbywgcmVtb3ZlIHRvZG9zIG9zIHZhbG9yZXMgc2VsZWNpb25hZG9zLlxuICAgICAqIENhc28gY29udHLDoXJpbywgZGVmaW5lIG8gdmFsb3IgY29tbyBudWxvLlxuICAgICAqIFRhbWLDqW0gbGltcGEgYXMgc3VnZXN0w7VlcyBmaWx0cmFkYXMsIGZlY2hhIG8gcGFpbmVsIGRlIHN1Z2VzdMO1ZXNcbiAgICAgKiBlIGxpbXBhIG8gdmFsb3IgZG8gY2FtcG8gZGUgZW50cmFkYS5cbiAgICAgKi9cbiAgICBwdWJsaWMgY2xlYXIoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm11bHRpcGxlKCkpIHtcbiAgICAgICAgICAgIHRoaXMudmFsdWVzLnNldChbXSk7XG4gICAgICAgICAgICB0aGlzLl9vbkNoYW5nZT8uKHRoaXMudmFsdWVzKCkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy52YWx1ZS5zZXQobnVsbCk7XG4gICAgICAgICAgICB0aGlzLl9vbkNoYW5nZT8uKHRoaXMudmFsdWUoKSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmZpbHRlcmVkU3VnZ2VzdGlvbnMuc2V0KFtdKTtcbiAgICAgICAgdGhpcy5pc09wZW4uc2V0KGZhbHNlKTtcbiAgICAgICAgdGhpcy5pbnB1dFZhbHVlLnNldCgnJyk7XG4gICAgICAgIHRoaXMuY2xlYXJlZC5lbWl0KCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWx0ZXJuYSBhIGV4aWJpw6fDo28gZG8gZHJvcGRvd24gZGUgc3VnZXN0w7VlcyBkbyBhdXRvY29tcGxldGUuXG4gICAgICogRXN0ZSBtw6l0b2RvIGNvbmZpZ3VyYSBvIGRlYm91bmNlIGRvIGlucHV0LCB2ZXJpZmljYSBzZSBow6Egc3VnZXN0w7VlcyBmaWx0cmFkYXNcbiAgICAgKiBlLCBjYXNvIG7Do28gaGFqYSBzdWdlc3TDtWVzIGUgbyB0ZXh0byBkbyBmaWx0cm8gZXN0ZWphIHZhemlvLCByZWRlZmluZSBhcyBzdWdlc3TDtWVzIGZpbHRyYWRhcy5cbiAgICAgKiBQb3IgZmltLCBhbHRlcm5hIG8gZXN0YWRvIGRlIGFiZXJ0dXJhIGRvIGRyb3Bkb3duLlxuICAgICAqL1xuICAgIHB1YmxpYyB0b2dnbGVEcm9wZG93bigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc2V0dXBJbnB1dERlYm91bmNlKCk7XG5cbiAgICAgICAgaWYgKHRoaXMuZmlsdGVyVGV4dCgpID09PSAnJykge1xuICAgICAgICAgICAgaWYgKHRoaXMubGF6eSgpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbGF6eUxvYWRTdWJqZWN0JC5uZXh0KCcnKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXNldEZpbHRlcmVkU3VnZ2VzdGlvbnMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuaXNPcGVuLnNldCghdGhpcy5pc09wZW4oKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRnVuw6fDo28gdXRpbGl6YWRhIHBhcmEgb3RpbWl6YXIgYSByZW5kZXJpemHDp8OjbyBkZSBsaXN0YXMgbm8gQW5ndWxhciwgcGVybWl0aW5kbyBxdWUgbyBmcmFtZXdvcmtcbiAgICAgKiBpZGVudGlmaXF1ZSBjYWRhIGl0ZW0gZGUgZm9ybWEgw7puaWNhIHBlbG8gc2V1IGBpZGAuIERldmUgc2VyIHV0aWxpemFkYSBjb21vIGZ1bsOnw6NvIGRlIGB0cmFja0J5YFxuICAgICAqIGVtIGRpcmV0aXZhcyBjb21vIGAqbmdGb3JgLlxuICAgICAqIEBwYXJhbSBfIC0gw41uZGljZSBkbyBpdGVtIG5hIGxpc3RhIChuw6NvIHV0aWxpemFkbykuXG4gICAgICogQHBhcmFtIGl0ZW0gLSBPYmpldG8gZG8gdGlwbyBgU3VnZ2VzdGlvbldyYXBwZXI8VD5gIHF1ZSByZXByZXNlbnRhIG8gaXRlbSBhdHVhbC5cbiAgICAgKiBAcmV0dXJucyBPIGlkZW50aWZpY2Fkb3Igw7puaWNvIChgaWRgKSBkbyBpdGVtLlxuICAgICAqL1xuICAgIHB1YmxpYyB0cmFja0J5SWQoXzogbnVtYmVyLCBpdGVtOiBTdWdnZXN0aW9uV3JhcHBlcjxUPik6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBpdGVtLmlkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZSB1bWEgc3VnZXN0w6NvIGRhIGxpc3RhIGRlIHZhbG9yZXMgc2VsZWNpb25hZG9zLlxuICAgICAqIEBwYXJhbSBzdWdnZXN0aW9uIE8gaXRlbSBhIHNlciByZW1vdmlkbyBkYSBsaXN0YSBkZSBzdWdlc3TDtWVzLlxuICAgICAqL1xuICAgIHB1YmxpYyByZW1vdmVTdWdnZXN0aW9uKHN1Z2dlc3Rpb246IFQpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgc3VnZ2VzdGlvblZhbHVlID0gdGhpcy5zdWdnZXN0aW9uVmFsdWUoKTtcblxuICAgICAgICB0aGlzLnZhbHVlcy5zZXQoXG4gICAgICAgICAgICB0aGlzLnZhbHVlcygpLmZpbHRlcigodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoc3VnZ2VzdGlvblZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZVtzdWdnZXN0aW9uVmFsdWVdICE9PSBzdWdnZXN0aW9uW3N1Z2dlc3Rpb25WYWx1ZV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZSAhPT0gc3VnZ2VzdGlvbjtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICApO1xuICAgICAgICB0aGlzLl9vbkNoYW5nZT8uKHRoaXMudmFsdWVzKCkpO1xuICAgICAgICB0aGlzLnVuc2VsZWN0ZWQuZW1pdChzdWdnZXN0aW9uKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZWluaWNpYSBhIGxpc3RhIGRlIHN1Z2VzdMO1ZXMgZmlsdHJhZGFzLlxuICAgICAqIFNlIG8gbW9kbyBsYXp5IGVzdGl2ZXIgYXRpdmFkbywgZW1pdGUgdW0gZXZlbnRvIHBhcmEgY2FycmVnYXIgc3VnZXN0w7VlcyBjb20gdW1hIGNvbnN1bHRhIHZhemlhLlxuICAgICAqIEVtIHNlZ3VpZGEsIHJlZGVmaW5lIGFzIHN1Z2VzdMO1ZXMgZmlsdHJhZGFzIHBhcmEgbyB2YWxvciByZXRvcm5hZG8gcG9yIGBpbnRlcm5hbFN1Z2dlc3Rpb24oKWAuXG4gICAgICogQHByaXZhdGVcbiAgICAgKi9cbiAgICBwcml2YXRlIHJlc2V0RmlsdGVyZWRTdWdnZXN0aW9ucygpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMubGF6eSgpKSB7XG4gICAgICAgICAgICB0aGlzLl9sYXp5TG9hZFN1YmplY3QkLm5leHQoJycpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5maWx0ZXJlZFN1Z2dlc3Rpb25zLnNldCh0aGlzLmludGVybmFsU3VnZ2VzdGlvbigpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE1vdmUgbyBmb2NvIHBhcmEgYSBwcsOzeGltYSBzdWdlc3TDo28gbmEgbGlzdGEgZGUgc3VnZXN0w7Vlcywgc2UgaG91dmVyLlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHN1Z2dlc3Rpb25zIExpc3RhIGRlIHN1Z2VzdMO1ZXMgZGlzcG9uw612ZWlzLlxuICAgICAqL1xuICAgIHByaXZhdGUgX2ZvY3VzTmV4dFN1Z2dlc3Rpb24oc3VnZ2VzdGlvbnM6IFN1Z2dlc3Rpb25XcmFwcGVyPFQ+W10pOiB2b2lkIHtcbiAgICAgICAgbGV0IG5leHRJbmRleCA9IHRoaXMuZm9jdXNlZEluZGV4KCkgKyAxO1xuXG4gICAgICAgIGlmIChuZXh0SW5kZXggPCBzdWdnZXN0aW9ucy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuZm9jdXNlZEluZGV4LnNldChuZXh0SW5kZXgpO1xuICAgICAgICAgICAgdGhpcy5fc2Nyb2xsVG9Gb2N1c2VkU3VnZ2VzdGlvbigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTW92ZSBvIGZvY28gcGFyYSBhIHN1Z2VzdMOjbyBhbnRlcmlvciBuYSBsaXN0YSBkZSBzdWdlc3TDtWVzLCBzZSBob3V2ZXIuXG4gICAgICogQHByaXZhdGVcbiAgICAgKi9cbiAgICBwcml2YXRlIF9mb2N1c1ByZXZpb3VzU3VnZ2VzdGlvbigpOiB2b2lkIHtcbiAgICAgICAgbGV0IHByZXZJbmRleCA9IHRoaXMuZm9jdXNlZEluZGV4KCkgLSAxO1xuXG4gICAgICAgIGlmIChwcmV2SW5kZXggPj0gMCkge1xuICAgICAgICAgICAgdGhpcy5mb2N1c2VkSW5kZXguc2V0KHByZXZJbmRleCk7XG4gICAgICAgICAgICB0aGlzLl9zY3JvbGxUb0ZvY3VzZWRTdWdnZXN0aW9uKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSb2xhIGEgbGlzdGEgZGUgc3VnZXN0w7VlcyBwYXJhIGdhcmFudGlyIHF1ZSBhIHN1Z2VzdMOjbyBhdHVhbG1lbnRlIGZvY2FkYSBlc3RlamEgdmlzw612ZWwuXG4gICAgICogQHByaXZhdGVcbiAgICAgKi9cbiAgICBwcml2YXRlIF9zY3JvbGxUb0ZvY3VzZWRTdWdnZXN0aW9uKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBpZCA9IHRoaXMuZmlsdGVyZWRTdWdnZXN0aW9ucygpW3RoaXMuZm9jdXNlZEluZGV4KCldPy5pZDtcblxuICAgICAgICBpZiAoIWlkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKTtcbiAgICAgICAgZWw/LnNjcm9sbEludG9WaWV3KHsgYmxvY2s6ICduZWFyZXN0JyB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZGljaW9uYSB1bSBpZGVudGlmaWNhZG9yIMO6bmljbyBhIGNhZGEgc3VnZXN0w6NvIGZvcm5lY2lkYS5cbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSBzdWdnZXN0aW9ucyAtIFVtIGFycmF5IGRlIHN1Z2VzdMO1ZXMgZG8gdGlwbyBULlxuICAgICAqIEByZXR1cm5zIFVtIGFycmF5IGRlIG9iamV0b3MgYFN1Z2dlc3Rpb25XcmFwcGVyPFQ+YCwgY2FkYSB1bSBjb250ZW5kbyBhIHN1Z2VzdMOjbyBvcmlnaW5hbCBlIHVtIGlkZW50aWZpY2Fkb3Igw7puaWNvLlxuICAgICAqL1xuICAgIHByaXZhdGUgX2FkZElkVG9TdWdnZXN0aW9ucyhzdWdnZXN0aW9uczogVFtdKTogU3VnZ2VzdGlvbldyYXBwZXI8VD5bXSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICBzdWdnZXN0aW9ucz8ubWFwKChzdWdnZXN0aW9uKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgZGF0YTogc3VnZ2VzdGlvbixcbiAgICAgICAgICAgICAgICAgICAgaWQ6IHRoaXMuZGF0YUtleSgpXG4gICAgICAgICAgICAgICAgICAgICAgICA/IFN0cmluZyhzdWdnZXN0aW9uW3RoaXMuZGF0YUtleSgpIV0pXG4gICAgICAgICAgICAgICAgICAgICAgICA6ICgodHlwZW9mIHN1Z2dlc3Rpb24gIT09ICdvYmplY3QnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHN1Z2dlc3Rpb24/LnRvU3RyaW5nKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogT2JqZWN0LnZhbHVlcyhzdWdnZXN0aW9uIGFzIE9iamVjdCkuam9pbignXycpKSA/PyAnJyksXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0pID8/IFtdXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29uZmlndXJhIG8gZGVib3VuY2UgZSBzd2l0Y2hNYXAgcGFyYSBsYXp5IGxvYWRpbmcsIHJlc29sdmVuZG8gcmFjZSBjb25kaXRpb25zLlxuICAgICAqIEVzdGUgbcOpdG9kbyB1dGlsaXphIHN3aXRjaE1hcCBwYXJhIGNhbmNlbGFyIHJlcXVpc2nDp8O1ZXMgYW50ZXJpb3JlcyBhdXRvbWF0aWNhbWVudGVcbiAgICAgKiBxdWFuZG8gdW1hIG5vdmEgYnVzY2Egw6kgaW5pY2lhZGEsIGV2aXRhbmRvIHF1ZSByZXN1bHRhZG9zIGFudGlnb3Mgc29icmVzY3JldmFtXG4gICAgICogcmVzdWx0YWRvcyBtYWlzIHJlY2VudGVzLlxuICAgICAqIEBwcml2YXRlXG4gICAgICovXG4gICAgcHJpdmF0ZSBfc2V0dXBMYXp5TG9hZERlYm91bmNlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9sYXp5TG9hZFN1YmplY3QkXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBkZWJvdW5jZVRpbWUodGhpcy5kZWxheSgpKSxcbiAgICAgICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgocXVlcnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nLnNldCh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gVE9ETzogTWFudGVyIGZlY2hhZG8gbyBkcm9wZG93bmQgYXTDqSBhIGJ1c2NhIGVzdGl2ZXIgY29uY2x1w61kYVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IE9ic2VydmFibGU8VFtdPigoc3Vic2NyaWJlcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdGltZW91dElkID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzdWJzY3JpYmVyLmNsb3NlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJzY3JpYmVyLmVycm9yKG5ldyBFcnJvcignTGF6eSBsb2FkIHRpbWVvdXQnKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgMzAwMDApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZXNwb25zZUNhbGxiYWNrID0gKGRhdGE6IFRbXSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0SWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghc3Vic2NyaWJlci5jbG9zZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vic2NyaWJlci5uZXh0KGRhdGEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJzY3JpYmVyLmNvbXBsZXRlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sYXp5TG9hZC5lbWl0KHsgcXVlcnksIHJlc3BvbnNlOiByZXNwb25zZUNhbGxiYWNrIH0pO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZGVzdHJveVJlZiksXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgICAgICBuZXh0OiAoZGF0YTogVFtdKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZy5zZXQoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAvLyBUT0RPOiBBYnJpciBvIGRyb3Bkb3duIHNvbWVudGUgYXF1aVxuICAgICAgICAgICAgICAgICAgICBjb25zdCB3cmFwcGVkU3VnZ2VzdGlvbnMgPSB0aGlzLl9hZGRJZFRvU3VnZ2VzdGlvbnMoZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyZWRTdWdnZXN0aW9ucy5zZXQod3JhcHBlZFN1Z2dlc3Rpb25zKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG93RW1wdHlNZXNzYWdlLnNldCh3cmFwcGVkU3VnZ2VzdGlvbnMubGVuZ3RoID09PSAwKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nLnNldChmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIC8vIFRPRE86IEFicmlyIG8gZHJvcGRvd24gc29tZW50ZSBhcXVpXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0xhenkgbG9hZCBlcnJvcjonLCBlcnJvcik7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyZWRTdWdnZXN0aW9ucy5zZXQoW10pO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3dFbXB0eU1lc3NhZ2Uuc2V0KHRydWUpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb25maWd1cmEgbyBkZWJvdW5jZSBwYXJhIG8gaW5wdXQgZG8gYXV0b2NvbXBsZXRlLlxuICAgICAqIEVzdGUgbcOpdG9kbyB1dGlsaXphIHVtIFN1YmplY3QgcGFyYSBlc2N1dGFyIGFzIG11ZGFuw6dhcyBubyB2YWxvciBkbyBpbnB1dCxcbiAgICAgKiBhcGxpY2FuZG8gdW0gZGVib3VuY2UgY29tIG8gdGVtcG8gZGVmaW5pZG8gcG9yIGB0aGlzLmRlbGF5KClgLiBRdWFuZG8gdW0gbm92byB2YWxvciDDqSBlbWl0aWRvOlxuICAgICAqIC0gU2UgaG91dmVyIHZhbG9yLCBmaWx0cmEgYXMgc3VnZXN0w7VlcyBjb20gYmFzZSBubyB0ZXh0byBkaWdpdGFkbyBlIGF0dWFsaXphIGEgbGlzdGEgZGUgc3VnZXN0w7VlcyBmaWx0cmFkYXMuXG4gICAgICogLSBTZSBuw6NvIGhvdXZlciB2YWxvciBlIG8gZHJvcGRvd24gZXN0aXZlciBhdGl2bywgcmVzZXRhIGFzIHN1Z2VzdMO1ZXMgZmlsdHJhZGFzLlxuICAgICAqIC0gQ2FzbyBjb250csOhcmlvLCBsaW1wYSBhIGxpc3RhIGRlIHN1Z2VzdMO1ZXMgZmlsdHJhZGFzLlxuICAgICAqIFRhbWLDqW0gYXR1YWxpemEgbyBlc3RhZG8gZGEgbWVuc2FnZW0gZGUgbGlzdGEgdmF6aWEgZSwgc2UgYSBzZWxlw6fDo28gZm9yIGxpdnJlIChgZm9yY2VTZWxlY3Rpb25gIGZvciBmYWxzbyksXG4gICAgICogcHJvcGFnYSBhIG11ZGFuw6dhIGRlIHZhbG9yIHBhcmEgbyBmb3JtdWzDoXJpby5cbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqL1xuICAgIHByaXZhdGUgX3NldHVwSW5wdXREZWJvdW5jZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5faW5wdXRTdWJqZWN0JFxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgZGVib3VuY2VUaW1lKHRoaXMuZGVsYXkoKSksXG4gICAgICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICAgICAgICAgICBmaWx0ZXIoKHZhbHVlKSA9PiB2YWx1ZS5sZW5ndGggPj0gdGhpcy5taW5MZW5ndGhUb1NlYXJjaCgpIHx8IHZhbHVlLmxlbmd0aCA9PT0gMCksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuX2Rlc3Ryb3lSZWYpLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJlZFN1Z2dlc3Rpb25zLnNldChcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW50ZXJuYWxTdWdnZXN0aW9uKCkuZmlsdGVyKCh7IGRhdGEgfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxhYmVsID0gU3RyaW5nKHRoaXMuc3VnZ2VzdGlvbkxhYmVsKCkgPyBkYXRhW3RoaXMuc3VnZ2VzdGlvbkxhYmVsKCkhXSA6IGRhdGEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsYWJlbC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHZhbHVlLnRvTG93ZXJDYXNlKCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvd0VtcHR5TWVzc2FnZS5zZXQodGhpcy5maWx0ZXJlZFN1Z2dlc3Rpb25zKCkubGVuZ3RoID09PSAwKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZHJvcGRvd24oKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlc2V0RmlsdGVyZWRTdWdnZXN0aW9ucygpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyZWRTdWdnZXN0aW9ucy5zZXQoW10pO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5mb3JjZVNlbGVjdGlvbigpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX29uQ2hhbmdlPy4odmFsdWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFZhbGlkYSBhcyBlbnRyYWRhcyBkbyBjb21wb25lbnRlIGRlIGF1dG9jb21wbGV0ZS5cbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEB0aHJvd3Mge0Vycm9yfSBTZSBhcyBzdWdlc3TDtWVzIGZvcmVtIG9iamV0b3MgZSBgc3VnZ2VzdGlvbkxhYmVsYCBuw6NvIGZvciBmb3JuZWNpZG8uXG4gICAgICovXG4gICAgcHJpdmF0ZSBfdmFsaWRhdGVJbnB1dHMoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHN1Z2dlc3Rpb25zID0gdGhpcy5zdWdnZXN0aW9ucygpO1xuXG4gICAgICAgIGlmICghc3VnZ2VzdGlvbnMubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBoYXNPYmplY3RTdWdnZXN0aW9ucyA9IHN1Z2dlc3Rpb25zLnNvbWUoXG4gICAgICAgICAgICAoc3VnZ2VzdGlvbikgPT4gdHlwZW9mIHN1Z2dlc3Rpb24gPT09ICdvYmplY3QnICYmIHN1Z2dlc3Rpb24gIT09IG51bGwsXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKGhhc09iamVjdFN1Z2dlc3Rpb25zKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuc3VnZ2VzdGlvbkxhYmVsKCkpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBzdWdnZXN0aW9uTGFiZWwgaW5wdXQgbXVzdCBiZSBwcm92aWRlZCB3aGVuIHN1Z2dlc3Rpb25zIGFyZSBvYmplY3RzLicpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG4iLCI8ZGl2XG4gICAgI2NvbnRhaW5lckRpdlxuICAgIGNka092ZXJsYXlPcmlnaW5cbiAgICAjdHJpZ2dlcj1cImNka092ZXJsYXlPcmlnaW5cIlxuICAgIGNsYXNzPVwiZmxleCBoLVszNXB4XSB3LWZ1bGwgaXRlbXMtY2VudGVyIG92ZXJmbG93LWhpZGRlbiByb3VuZGVkLVs0cHhdIGJvcmRlciBmb2N1cy13aXRoaW46Ym9yZGVyLTIgZm9jdXMtd2l0aGluOmJvcmRlci1wcmltYXJ5IGhvdmVyOmJnLWdyYXlzY2FsZS0xMFwiXG4gICAgW2NsYXNzXT1cImlucHV0Q2xhc3MoKVwiXG4gICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAncG9pbnRlci1ldmVudHMtbm9uZSBib3JkZXItZ3JheXNjYWxlLTIwIGJnLWdyYXlzY2FsZS01IHRleHQtZ3JheXNjYWxlLTMwJzogZGlzYWJsZWQoKSxcbiAgICAgICAgJ3BvaW50ZXItZXZlbnRzLWF1dG8gYm9yZGVyLWdyYXlzY2FsZS0zMCBiZy1ncmF5c2NhbGUtMCB0ZXh0LWdyYXlzY2FsZS05MCc6ICFkaXNhYmxlZCgpLFxuICAgICAgICAnYm9yZGVyLWNyaXRpY2FsaXR5LXJlZCc6IGludmFsaWQoKSxcbiAgICB9XCJcbj5cbiAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiZmxleCBmbGV4LWdyb3cgZ2FwLTIgcHgtMlwiXG4gICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICdib3JkZXItcic6IGRyb3Bkb3duKCksXG4gICAgICAgICAgICAnYm9yZGVyLWdyYXlzY2FsZS0yMCc6IGRyb3Bkb3duKCkgJiYgZGlzYWJsZWQoKSxcbiAgICAgICAgICAgICdib3JkZXItZ3JheXNjYWxlLTMwIGZvY3VzLXdpdGhpbjpib3JkZXItci0yIGZvY3VzLXdpdGhpbjpib3JkZXItci1wcmltYXJ5JzogZHJvcGRvd24oKSAmJiAhZGlzYWJsZWQoKSxcbiAgICAgICAgICAgICdiZy1ncmF5c2NhbGUtNSc6IGRpc2FibGVkKCksXG4gICAgICAgICAgICAnYmctZ3JheXNjYWxlLTAnOiAhZGlzYWJsZWQoKSxcbiAgICAgICAgfVwiXG4gICAgPlxuICAgICAgICBAaWYgKG11bHRpcGxlKCkgJiYgdmFsdWVzKCkubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC13cmFwIGl0ZW1zLWNlbnRlciBnYXAtMlwiPlxuICAgICAgICAgICAgICAgIEBmb3IgKHN1Z2dlc3Rpb24gb2YgdmFsdWVzKCk7IHRyYWNrIHN1Z2dlc3Rpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgPHMtYXV0b2NvbXBsZXRlLWNoaXBcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzdWdnZXN0aW9uXT1cInN1Z2dlc3Rpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3N1Z2dlc3Rpb25MYWJlbF09XCJzdWdnZXN0aW9uTGFiZWwoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoc3VnZ2VzdGlvblJlbW92ZWQpPVwicmVtb3ZlU3VnZ2VzdGlvbigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvcy1hdXRvY29tcGxldGUtY2hpcD5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICNpbnB1dEVsXG4gICAgICAgICAgICBjbGFzcz1cIm1pbi1oLVszNXB4XSBncm93IG91dGxpbmUtbm9uZVwiXG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXIoKSA/PyAncGxhdGZvcm0uYW5ndWxhcl9jb21wb25lbnRzLnR5cGVfdG9fc2VhcmNoJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICBbcmVhZE9ubHldPVwicmVhZG9ubHkoKVwiXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cImlucHV0VmFsdWVcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1kaXNhYmxlZF09XCJkaXNhYmxlZCgpXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtYXV0b2NvbXBsZXRlXT1cIm11bHRpcGxlKCkgPyAnbGlzdCcgOiAnYm90aCdcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1hY3RpdmVkZXNjZW5kYW50XT1cImZvY3VzZWRJbmRleCgpID49IDAgPyBmaWx0ZXJlZFN1Z2dlc3Rpb25zKClbZm9jdXNlZEluZGV4KCldLmlkIDogbnVsbFwiXG4gICAgICAgICAgICByb2xlPVwic2VhcmNoYm94XCJcbiAgICAgICAgICAgIChpbnB1dCk9XCJvbklucHV0KCRldmVudClcIlxuICAgICAgICAgICAgKGtleWRvd24pPVwib25LZXlEb3duKCRldmVudClcIlxuICAgICAgICAgICAgKGtleVVwKT1cIm9uS2V5VXAoJGV2ZW50KVwiXG4gICAgICAgICAgICAoYmx1cik9XCJvbklucHV0Qmx1cigkZXZlbnQpXCJcbiAgICAgICAgICAgIChmb2N1cyk9XCJvbklucHV0Rm9jdXMoJGV2ZW50KVwiXG4gICAgICAgIC8+XG5cbiAgICAgICAgQGlmIChsb2FkaW5nKCkpIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgICAgICAgICAgIDxzdmdcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIyMFwiXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjIwXCJcbiAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyMCAyMFwiXG4gICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFuaW1hdGUtc3BpblwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlXG4gICAgICAgICAgICAgICAgICAgICAgICBjeD1cIjEwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGN5PVwiMTBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgcj1cIjlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzQyOGJjYVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1kYXNoYXJyYXk9XCI1Ni41XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1kYXNob2Zmc2V0PVwiMTBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICBAaWYgKHZhbHVlKCkgJiYgIXRoaXMuZGlzYWJsZWQoKSkge1xuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJweC0yXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNsZWFyKClcIlxuICAgICAgICAgICAgICAgICAgICB0YWJpbmRleD1cIi0xXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFyIGZhLXRpbWVzIHRleHQtZ3JheXNjYWxlLTYwXCI+PC9pPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgPC9kaXY+XG5cbiAgICBAaWYgKGRyb3Bkb3duKCkpIHtcbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgY2xhc3M9XCJmbGV4IGgtZnVsbCB3LVszNXB4XSBmbGV4LXNocmluay0wIGZsZXgtZ3Jvdy0wIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBob3ZlcjpiZy1ncmF5c2NhbGUtMTBcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZURyb3Bkb3duKClcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZmFzIHRleHQtZ3JheXNjYWxlLTkwXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuZmEtY2FyZXQtZG93bl09XCIhaXNPcGVuKClcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5mYS1jYXJldC11cF09XCJpc09wZW4oKVwiXG4gICAgICAgICAgICA+PC9pPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICB9XG48L2Rpdj5cblxuQGlmIChzaG93RW1wdHlNZXNzYWdlKCkgfHwgKGZpbHRlcmVkU3VnZ2VzdGlvbnMoKS5sZW5ndGggPiAwICYmICFyZWFkb25seSgpKSkge1xuICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAjZHJvcGRvd25UZW1wbGF0ZVxuICAgICAgICBjZGtDb25uZWN0ZWRPdmVybGF5XG4gICAgICAgIFtjZGtDb25uZWN0ZWRPdmVybGF5T3JpZ2luXT1cInRyaWdnZXJcIlxuICAgICAgICBbY2RrQ29ubmVjdGVkT3ZlcmxheU9wZW5dPVwiaXNPcGVuKClcIlxuICAgICAgICBbY2RrQ29ubmVjdGVkT3ZlcmxheUhhc0JhY2tkcm9wXT1cInRydWVcIlxuICAgICAgICAoYmFja2Ryb3BDbGljayk9XCJpc09wZW4uc2V0KGZhbHNlKVwiXG4gICAgICAgIGNka0Nvbm5lY3RlZE92ZXJsYXlCYWNrZHJvcENsYXNzPVwiY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BcIlxuICAgICAgICAoZGV0YWNoKT1cImlzT3Blbi5zZXQoZmFsc2UpXCJcbiAgICA+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIFtpZF09XCInZHJvcGRvd24tY29udGFpbmVyLScgKyBjb21wb25lbnRJZFwiXG4gICAgICAgICAgICBjbGFzcz1cIm10LTAuNSByb3VuZGVkLVs0cHhdIGJnLWdyYXlzY2FsZS0wIHB5LTEgc2hhZG93XCJcbiAgICAgICAgICAgIFtzdHlsZS53aWR0aC5weF09XCJjb250YWluZXJEaXYub2Zmc2V0V2lkdGhcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8dWxcbiAgICAgICAgICAgICAgICBjbGFzcz1cIm1heC1oLTUyIG92ZXJmbG93LWF1dG9cIlxuICAgICAgICAgICAgICAgIHJvbGU9XCJsaXN0Ym94XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8IS0tIFZpcnR1YWwgc2Nyb2xsIC0tPlxuICAgICAgICAgICAgICAgIEBpZiAodmlydHVhbFNjcm9sbCgpICYmIGZpbHRlcmVkU3VnZ2VzdGlvbnMoKS5sZW5ndGggPiAxMCkge1xuICAgICAgICAgICAgICAgICAgICA8Y2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0XG4gICAgICAgICAgICAgICAgICAgICAgICBbaXRlbVNpemVdPVwidmlydHVhbFNjcm9sbEl0ZW1TaXplKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJoLTUyIG92ZXJmbG93LWF1dG9cIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKmNka1ZpcnR1YWxGb3I9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHN1Z2dlc3Rpb24gb2YgZW5yaWNoZWRGaWx0ZXJlZFN1Z2dlc3Rpb25zKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpID0gJGluZGV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFja0J5OiB0cmFja0J5SWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwic3VnZ2VzdGlvbkl0ZW1UZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IHN1Z2dlc3Rpb24sIGkgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvY2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0PlxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIDwhLS0gTm9ybWFsIGxpc3QgLS0+XG4gICAgICAgICAgICAgICAgQGlmICghdmlydHVhbFNjcm9sbCgpIHx8IGZpbHRlcmVkU3VnZ2VzdGlvbnMoKS5sZW5ndGggPD0gMTApIHtcbiAgICAgICAgICAgICAgICAgICAgQGZvciAoc3VnZ2VzdGlvbiBvZiBlbnJpY2hlZEZpbHRlcmVkU3VnZ2VzdGlvbnMoKTsgdHJhY2sgc3VnZ2VzdGlvbi5pZDsgbGV0IGkgPSAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJzdWdnZXN0aW9uSXRlbVRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBzdWdnZXN0aW9uLCBpIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgQGlmIChzaG93RW1wdHlNZXNzYWdlKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLTMgdGV4dC1ncmF5c2NhbGUtNjBcIj57e1xuICAgICAgICAgICAgICAgICAgICAgICAgZW1wdHlNZXNzYWdlKCkgPz8gJ3BsYXRmb3JtLmFuZ3VsYXJfY29tcG9uZW50cy5ub19yZWNvcmRzX2ZvdW5kJyB8IHRyYW5zbGF0ZVxuICAgICAgICAgICAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L3VsPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxufVxuXG48bmctdGVtcGxhdGVcbiAgICAjc3VnZ2VzdGlvbkl0ZW1UZW1wbGF0ZVxuICAgIGxldC1zdWdnZXN0aW9uPVwic3VnZ2VzdGlvblwiXG4gICAgbGV0LWk9XCJpXCJcbj5cbiAgICA8bGlcbiAgICAgICAgW2lkXT1cInN1Z2dlc3Rpb24uaWRcIlxuICAgICAgICBjbGFzcz1cInJvdW5kZWQtc20gZmxleCBjdXJzb3ItcG9pbnRlciBpdGVtcy1jZW50ZXIgZ2FwLTIgcHgtMyBweS0yIHRleHQtZ3JheXNjYWxlLTcwXCJcbiAgICAgICAgW2NsYXNzLmJnLWdyYXlzY2FsZS0xMF09XCJpID09PSBmb2N1c2VkSW5kZXgoKVwiXG4gICAgICAgIFtjbGFzcy5iZy1ncmF5c2NhbGUtMjBdPVwic3VnZ2VzdGlvbi5pc1NlbGVjdGVkXCJcbiAgICAgICAgW2F0dHIuYXJpYS1zZWxlY3RlZF09XCJzdWdnZXN0aW9uLmlzU2VsZWN0ZWRcIlxuICAgICAgICByb2xlPVwib3B0aW9uXCJcbiAgICAgICAgKGNsaWNrKT1cInNlbGVjdFN1Z2dlc3Rpb24oc3VnZ2VzdGlvbi5kYXRhKVwiXG4gICAgPlxuICAgICAgICBAaWYgKGNoZWNrbWFyaygpICYmIG11bHRpcGxlKCkgJiYgc3VnZ2VzdGlvbi5pc1NlbGVjdGVkKSB7XG4gICAgICAgICAgICA8aSBjbGFzcz1cImZhciBmYS1jaGVja1wiPjwvaT5cbiAgICAgICAgfVxuICAgICAgICB7eyBzdWdnZXN0aW9uTGFiZWwoKSA/IHN1Z2dlc3Rpb24uZGF0YVtzdWdnZXN0aW9uTGFiZWwoKSFdIDogc3VnZ2VzdGlvbi5kYXRhIH19XG4gICAgPC9saT5cbjwvbmctdGVtcGxhdGU+XG5cbiJdfQ==
609
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9hdXRvY29tcGxldGUvc3JjL2xpYi9hdXRvY29tcGxldGUvYXV0b2NvbXBsZXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9hdXRvY29tcGxldGUvc3JjL2xpYi9hdXRvY29tcGxldGUvYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDekQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDSCxTQUFTLEVBQ1QsUUFBUSxFQUNSLFVBQVUsRUFFVixVQUFVLEVBQ1YsTUFBTSxFQUNOLEtBQUssRUFDTCxLQUFLLEVBQ0wsTUFBTSxFQUNOLE1BQU0sRUFDTixTQUFTLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUF3QixXQUFXLEVBQUUsaUJBQWlCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzRyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdkYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sNERBQTRELENBQUM7Ozs7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LGVBQWUsNEZBQ2YseUJBQXlCOzs0RkFpQnBCLHFCQUFxQjtrQkE1QmpDLFNBQVM7K0JBQ0ksZ0JBQWdCLGNBQ2QsSUFBSSxXQUVQO3dCQUNMLFlBQVk7d0JBQ1osV0FBVzt3QkFDWCxtQkFBbUI7d0JBQ25CLGFBQWE7d0JBQ2IsZUFBZTt3QkFDZixlQUFlO3dCQUNmLHlCQUF5QjtxQkFDNUIsYUFDVTt3QkFDUDs0QkFDSSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxzQkFBc0IsQ0FBQzs0QkFDcEQsS0FBSyxFQUFFLElBQUk7eUJBQ2Q7cUJBQ0osUUFDSzt3QkFDRixJQUFJLEVBQUUsVUFBVTt3QkFDaEIsc0JBQXNCLEVBQUUsVUFBVTt3QkFDbEMsc0JBQXNCLEVBQUUsV0FBVzt3QkFDbkMsa0JBQWtCLEVBQUUsdURBQXVEO3dCQUMzRSxpQkFBaUIsRUFBRSxrQkFBa0I7cUJBQ3hDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT3ZlcmxheU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcclxuaW1wb3J0IHsgU2Nyb2xsaW5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3Njcm9sbGluZyc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7XHJcbiAgICBDb21wb25lbnQsXHJcbiAgICBjb21wdXRlZCxcclxuICAgIERlc3Ryb3lSZWYsXHJcbiAgICBFbGVtZW50UmVmLFxyXG4gICAgZm9yd2FyZFJlZixcclxuICAgIGluamVjdCxcclxuICAgIGlucHV0LFxyXG4gICAgbW9kZWwsXHJcbiAgICBvdXRwdXQsXHJcbiAgICBzaWduYWwsXHJcbiAgICB2aWV3Q2hpbGQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcclxuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1zTW9kdWxlLCBOR19WQUxVRV9BQ0NFU1NPUiwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZpbHRlciwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuaW1wb3J0IHsgQXV0b2NvbXBsZXRlQ2hpcENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9hdXRvY29tcGxldGUtY2hpcC9hdXRvY29tcGxldGUtY2hpcC5jb21wb25lbnQnO1xyXG5cclxuLyoqXHJcbiAqIFJlcHJlc2VudGEgdW0gaXRlbSBkZSBzdWdlc3TDo28gZW5jYXBzdWxhZG8sIHV0aWxpemFkbyBlbSBjb21wb25lbnRlcyBkZSBhdXRvY29tcGxldGUuXHJcbiAqIEB0ZW1wbGF0ZSBUIFRpcG8gZG9zIGRhZG9zIGFzc29jaWFkb3Mgw6Agc3VnZXN0w6NvLlxyXG4gKiBAcHJvcGVydHkgZGF0YSBPcyBkYWRvcyBkYSBzdWdlc3TDo28uXHJcbiAqIEBwcm9wZXJ0eSBpZCBJZGVudGlmaWNhZG9yIMO6bmljbyBkYSBzdWdlc3TDo28uXHJcbiAqIEBwcm9wZXJ0eSBbaXNTZWxlY3RlZF0gSW5kaWNhIHNlIGEgc3VnZXN0w6NvIGVzdMOhIHNlbGVjaW9uYWRhLlxyXG4gKi9cclxuaW50ZXJmYWNlIFN1Z2dlc3Rpb25XcmFwcGVyPFQ+IHtcclxuICAgIGRhdGE6IFQ7XHJcbiAgICBpZDogc3RyaW5nO1xyXG4gICAgaXNTZWxlY3RlZD86IGJvb2xlYW47XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBAZGVzY3JpcHRpb24gQ29tcG9uZW50ZSBkZSBhdXRvY29tcGxldGFyIGNvbSBzdWdlc3TDtWVzIGRpbsOibWljYXMsIHN1cG9ydGFuZG8gc2VsZcOnw6NvIHNpbXBsZXNcclxuICogZSBtw7psdGlwbGEuIEltcGxlbWVudGEge0BsaW5rIENvbnRyb2xWYWx1ZUFjY2Vzc29yfSBwYXJhIGludGVncmHDp8OjbyBjb20gZm9ybXVsw6FyaW9zIEFuZ3VsYXIuXHJcbiAqIE9mZXJlY2UgY2FycmVnYW1lbnRvIGxhenkgZGUgc3VnZXN0w7VlcyB2aWEgb3V0cHV0IGBsYXp5TG9hZGAsIHZpcnR1YWxpemHDp8OjbyBkZSBsaXN0YSxcclxuICogc2VsZcOnw6NvIGNvbSBjaGlwcyBubyBtb2RvIG3Dumx0aXBsbyBlIGFjZXNzaWJpbGlkYWRlIEFSSUEgY29tcGxldGEgKGNvbWJvYm94IHJvbGUpLlxyXG4gKlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGBodG1sXHJcbiAqIDxzLWF1dG9jb21wbGV0ZVxyXG4gKiAgIGZvcm1Db250cm9sTmFtZT1cImNpZGFkZVwiXHJcbiAqICAgcGxhY2Vob2xkZXI9XCJCdXNjYXIgY2lkYWRlLi4uXCJcclxuICogICBbc3VnZ2VzdGlvbnNdPVwiY2lkYWRlc1wiXHJcbiAqICAgc3VnZ2VzdGlvbkxhYmVsPVwibm9tZVwiXHJcbiAqICAgW2RlbGF5XT1cIjQwMFwiXHJcbiAqICAgKGNvbXBsZXRlTWV0aG9kKT1cImJ1c2NhcigkZXZlbnQpXCIgLz5cclxuICogYGBgXHJcbiAqXHJcbiAqIEBjYXRlZ29yeSBJbnB1dHNcclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdzLWF1dG9jb21wbGV0ZScsXHJcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2F1dG9jb21wbGV0ZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBpbXBvcnRzOiBbXHJcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgICAgICAgT3ZlcmxheU1vZHVsZSxcclxuICAgICAgICBTY3JvbGxpbmdNb2R1bGUsXHJcbiAgICAgICAgVHJhbnNsYXRlTW9kdWxlLFxyXG4gICAgICAgIEF1dG9jb21wbGV0ZUNoaXBDb21wb25lbnQsXHJcbiAgICBdLFxyXG4gICAgcHJvdmlkZXJzOiBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQXV0b2NvbXBsZXRlQ29tcG9uZW50KSxcclxuICAgICAgICAgICAgbXVsdGk6IHRydWUsXHJcbiAgICAgICAgfSxcclxuICAgIF0sXHJcbiAgICBob3N0OiB7XHJcbiAgICAgICAgcm9sZTogJ2NvbWJvYm94JyxcclxuICAgICAgICAnW2F0dHIuYXJpYS1leHBhbmRlZF0nOiAnaXNPcGVuKCknLFxyXG4gICAgICAgICdbYXR0ci5hcmlhLWhhc3BvcHVwXSc6ICdcImxpc3Rib3hcIicsXHJcbiAgICAgICAgJ1thdHRyLmFyaWEtb3duc10nOiAnaXNPcGVuKCkgPyBcImRyb3Bkb3duLWNvbnRhaW5lci1cIiArIGNvbXBvbmVudElkIDogbnVsbCcsXHJcbiAgICAgICAgJyh3aW5kb3c6cmVzaXplKSc6ICdvbldpbmRvd1Jlc2l6ZSgpJyxcclxuICAgIH0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBdXRvY29tcGxldGVDb21wb25lbnQ8VD4gaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciB7XHJcbiAgICBwcml2YXRlIHN0YXRpYyBuZXh0SWQgPSAwO1xyXG5cclxuICAgIC8qKiBAZGVzY3JpcHRpb24gTGlzdGEgZXN0w6F0aWNhIGRlIHN1Z2VzdMO1ZXMgZXhpYmlkYXMgbm8gZHJvcGRvd24uIE5vIG1vZG8gbGF6eSwgcHJlZmlyYSB1c2FyIG8gb3V0cHV0IGBsYXp5TG9hZGAuIEBkZWZhdWx0IFtdICovXHJcbiAgICBwdWJsaWMgc3VnZ2VzdGlvbnMgPSBpbnB1dDxUW10+KFtdKTtcclxuXHJcbiAgICAvKiogQGRlc2NyaXB0aW9uIFRleHRvIGV4aWJpZG8gbm8gaW5wdXQgcXVhbmRvIG5lbmh1bSB2YWxvciBlc3TDoSBzZWxlY2lvbmFkby4gKi9cclxuICAgIHB1YmxpYyBwbGFjZWhvbGRlciA9IGlucHV0PHN0cmluZz4oKTtcclxuXHJcbiAgICAvKiogQGRlc2NyaXB0aW9uIENoYXZlIGRvIG9iamV0byBkZSBzdWdlc3TDo28gY3VqbyB2YWxvciBzZXLDoSBlbWl0aWRvIGFvIGZvcm11bMOhcmlvLiAqL1xyXG4gICAgcHVibGljIHN1Z2dlc3Rpb25WYWx1ZSA9IGlucHV0PGtleW9mIFQ+KCk7XHJcblxyXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBDaGF2ZSBkbyBvYmpldG8gZGUgc3VnZXN0w6NvIHVzYWRhIGNvbW8gdGV4dG8gZGUgZXhpYmnDp8OjbyBubyBkcm9wZG93bi4gKi9cclxuICAgIHB1YmxpYyBzdWdnZXN0aW9uTGFiZWwgPSBpbnB1dDxrZXlvZiBUPigpO1xyXG5cclxuICAgIC8qKiBAZGVzY3JpcHRpb24gVG9ybmEgbyBjYW1wbyBzb21lbnRlIGxlaXR1cmEsIGltcGVkaW5kbyBkaWdpdGHDp8OjbyBlIHNlbGXDp8Ojby4gQGRlZmF1bHQgZmFsc2UgKi9cclxuICAgIHB1YmxpYyByZWFkb25seSA9IGlucHV0KGZhbHNlKTtcclxuXHJcbiAgICAvKiogQGRlc2NyaXB0aW9uIE1lbnNhZ2VtIGV4aWJpZGEgbm8gZHJvcGRvd24gcXVhbmRvIG5lbmh1bWEgc3VnZXN0w6NvIMOpIGVuY29udHJhZGEuICovXHJcbiAgICBwdWJsaWMgZW1wdHlNZXNzYWdlID0gaW5wdXQ8c3RyaW5nPigpO1xyXG5cclxuICAgIC8qKiBAZGVzY3JpcHRpb24gVGVtcG8gZGUgZXNwZXJhIGVtIG1zIGFww7NzIGEgw7psdGltYSB0ZWNsYSBhbnRlcyBkZSBhY2lvbmFyIGEgYnVzY2EgcG9yIHN1Z2VzdMO1ZXMuIEBkZWZhdWx0IDMwMCAqL1xyXG4gICAgcHVibGljIGRlbGF5ID0gaW5wdXQoMzAwKTtcclxuXHJcbiAgICAvKiogQGRlc2NyaXB0aW9uIEV4aWJlIGVzdGFkbyBkZSBlcnJvIHZpc3VhbCBubyBjYW1wbyBkZSBpbnB1dC4gQGRlZmF1bHQgZmFsc2UgKi9cclxuICAgIHB1YmxpYyBpbnZhbGlkID0gaW5wdXQoZmFsc2UpO1xyXG5cclxuICAgIC8qKiBAZGVzY3JpcHRpb24gSGFiaWxpdGEgdmlydHVhbGl6YcOnw6NvIGRhIGxpc3RhIGRlIHN1Z2VzdMO1ZXMgcGFyYSBtZWxob3IgcGVyZm9ybWFuY2UgY29tIGdyYW5kZXMgdm9sdW1lcyBkZSBkYWRvcy4gQGRlZmF1bHQgZmFsc2UgKi9cclxuICAgIHB1YmxpYyB2aXJ0dWFsU2Nyb2xsID0gaW5wdXQoZmFsc2UpO1xyXG5cclxuICAgIC8qKiBAZGVzY3JpcHRpb24gQWx0dXJhIGZpeGEgZW0gcGl4ZWxzIGRlIGNhZGEgaXRlbSBubyB2aXJ0dWFsIHNjcm9sbC4gQGRlZmF1bHQgMzcgKi9cclxuICAgIHB1YmxpYyB2aXJ0dWFsU2Nyb2xsSXRlbVNpemUgPSBpbnB1dCgzNyk7XHJcblxyXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBBdGl2YSBvIGNhcnJlZ2FtZW50byBhc3PDrW5jcm9ubyBkZSBzdWdlc3TDtWVzIHZpYSBvIG91dHB1dCBgbGF6eUxvYWRgLiBAZGVmYXVsdCBmYWxzZSAqL1xyXG4gICAgcHVibGljIGxhenkgPSBpbnB1dChmYWxzZSk7XHJcblxyXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBFeGliZSB1bSBib3TDo28gZGUgZHJvcGRvd24gcGFyYSBhYnJpciBhIGxpc3RhIHNlbSBuZWNlc3NpZGFkZSBkZSBkaWdpdGHDp8Ojby4gQGRlZmF1bHQgZmFsc2UgKi9cclxuICAgIHB1YmxpYyBkcm9wZG93biA9IGlucHV0KGZhbHNlKTtcclxuXHJcbiAgICAvKiogQGRlc2NyaXB0aW9uIFF1YW5kbyBgdHJ1ZWAsIG8gdmFsb3IgZG8gY2FtcG8gZGV2ZSBzZXIgb2JyaWdhdG9yaWFtZW50ZSB1bWEgZGFzIG9ww6fDtWVzIHN1Z2VyaWRhcy4gQGRlZmF1bHQgZmFsc2UgKi9cclxuICAgIHB1YmxpYyBmb3JjZVNlbGVjdGlvbiA9IGlucHV0KGZhbHNlKTtcclxuXHJcbiAgICAvKiogQGRlc2NyaXB0aW9uIEV4aWJlIMOtY29uZSBkZSBjaGVja21hcmsgYW8gbGFkbyBkYSBvcMOnw6NvIHNlbGVjaW9uYWRhIG5vIGRyb3Bkb3duLiBAZGVmYXVsdCBmYWxzZSAqL1xyXG4gICAgcHVibGljIGNoZWNrbWFyayA9IGlucHV0KGZhbHNlKTtcclxuXHJcbiAgICAvKiogQGRlc2NyaXB0aW9uIEhhYmlsaXRhIHNlbGXDp8OjbyBkZSBtw7psdGlwbG9zIGl0ZW5zIGV4aWJpZG9zIGNvbW8gY2hpcHMgbm8gY2FtcG8uIEBkZWZhdWx0IGZhbHNlICovXHJcbiAgICBwdWJsaWMgbXVsdGlwbGUgPSBpbnB1dChmYWxzZSk7XHJcblxyXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBRdWFudGlkYWRlIG3DrW5pbWEgZGUgY2FyYWN0ZXJlcyBuZWNlc3PDoXJpYSBwYXJhIGFjaW9uYXIgYSBidXNjYSBwb3Igc3VnZXN0w7Vlcy4gQGRlZmF1bHQgMSAqL1xyXG4gICAgcHVibGljIG1pbkxlbmd0aFRvU2VhcmNoID0gaW5wdXQoMSk7XHJcblxyXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBDbGFzc2UgQ1NTIGFkaWNpb25hbCBhcGxpY2FkYSBhbyBlbGVtZW50byBgPGlucHV0PmAgaW50ZXJuby4gQGRlZmF1bHQgJycgKi9cclxuICAgIHB1YmxpYyBpbnB1dENsYXNzID0gaW5wdXQ8c3RyaW5nPignJyk7XHJcblxyXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBDaGF2ZSBkbyBvYmpldG8gdXNhZGEgcGFyYSBjb21wYXJhw6fDo28gZGUgaWRlbnRpZGFkZSBlbnRyZSBvcMOnw7VlcywgZXZpdGFuZG8gZHVwbGljYXRhcyBuYSBzZWxlw6fDo28gbcO6bHRpcGxhLiAqL1xyXG4gICAgcHVibGljIGRhdGFLZXkgPSBpbnB1dDxrZXlvZiBUPigpO1xyXG5cclxuICAgIC8qKiBAZGVzY3JpcHRpb24gVmFsb3IgYXR1YWxtZW50ZSBzZWxlY2lvbmFkbyBubyBtb2RvIHNpbXBsZXMsIHZpYSB0d28td2F5IGJpbmRpbmcuICovXHJcbiAgICBwdWJsaWMgdmFsdWUgPSBtb2RlbDxUIHwgbnVsbD4oKTtcclxuXHJcbiAgICAvKiogQGRlc2NyaXB0aW9uIExpc3RhIGRlIHZhbG9yZXMgc2VsZWNpb25hZG9zIG5vIG1vZG8gbcO6bHRpcGxvLCB2aWEgdHdvLXdheSBiaW5kaW5nLiBAZGVmYXVsdCBbXSAqL1xyXG4gICAgcHVibGljIHZhbHVlcyA9IG1vZGVsPFRbXT4oW10pO1xyXG5cclxuICAgIC8qKiBAZGVzY3JpcHRpb24gQ29udHJvbGEgbyBlc3RhZG8gZGVzYWJpbGl0YWRvIGRvIGNvbXBvbmVudGUgdmlhIHR3by13YXkgYmluZGluZy4gQGRlZmF1bHQgZmFsc2UgKi9cclxuICAgIHB1YmxpYyBkaXNhYmxlZCA9IG1vZGVsKGZhbHNlKTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBkZXNjcmlwdGlvbiBFbWl0aWRvIG5vIG1vZG8gbGF6eSBxdWFuZG8gbyB1c3XDoXJpbyBkaWdpdGEgZSBvIGNvbXBvbmVudGUgZXN0w6EgcHJvbnRvIHBhcmEgcmVjZWJlciBub3ZhcyBzdWdlc3TDtWVzLlxyXG4gICAgICogTyBldmVudG8gY29udMOpbSBgcXVlcnlgICh0ZXh0byBkaWdpdGFkbykgZSBgcmVzcG9uc2VgIChmdW7Dp8OjbyBjYWxsYmFjayBwYXJhIGZvcm5lY2VyIG9zIGRhZG9zKS5cclxuICAgICAqL1xyXG4gICAgcHVibGljIGxhenlMb2FkID0gb3V0cHV0PHsgcXVlcnk6IHN0cmluZzsgcmVzcG9uc2U6IChkYXRhOiBUW10pID0+IHZvaWQgfT4oKTtcclxuXHJcbiAgICAvKiogQGRlc2NyaXB0aW9uIEVtaXRpZG8gcXVhbmRvIG8gdXN1w6FyaW8gc2VsZWNpb25hIHVtYSBzdWdlc3TDo28gZG8gZHJvcGRvd24uICovXHJcbiAgICBwdWJsaWMgc2VsZWN0ZWQgPSBvdXRwdXQ8VD4oKTtcclxuXHJcbiAgICAvKiogQGRlc2NyaXB0aW9uIEVtaXRpZG8gcXVhbmRvIG8gdXN1w6FyaW8gcmVtb3ZlIHVtYSBzdWdlc3TDo28gc2VsZWNpb25hZGEgKG1vZG8gbcO6bHRpcGxvKS4gKi9cclxuICAgIHB1YmxpYyB1bnNlbGVjdGVkID0gb3V0cHV0PFQ+KCk7XHJcblxyXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBFbWl0aWRvIHF1YW5kbyBvIGNhbXBvIHBlcmRlIG8gZm9jby4gKi9cclxuICAgIHB1YmxpYyBibHVycmVkID0gb3V0cHV0PEV2ZW50PigpO1xyXG5cclxuICAgIC8qKiBAZGVzY3JpcHRpb24gRW1pdGlkbyBxdWFuZG8gbyBjYW1wbyDDqSBsaW1wbyBwZWxvIHVzdcOhcmlvLiAqL1xyXG4gICAgcHVibGljIGNsZWFyZWQgPSBvdXRwdXQoKTtcclxuXHJcbiAgICAvKiogQGRlc2NyaXB0aW9uIEVtaXRpZG8gYSBjYWRhIHByZXNzaW9uYW1lbnRvIGRlIHRlY2xhIG5vIGNhbXBvIGRlIGlucHV0LiAqL1xyXG4gICAgcHVibGljIGtleVVwID0gb3V0cHV0PEV2ZW50PigpO1xyXG5cclxuICAgIC8qKiBAZGVzY3JpcHRpb24gRW1pdGlkbyBxdWFuZG8gbyBjYW1wbyByZWNlYmUgZm9jby4gKi9cclxuICAgIHB1YmxpYyBmb2N1c2VkID0gb3V0cHV0PGFueT4oKTtcclxuXHJcbiAgICAvKiogQGRlc2NyaXB0aW9uIEVtaXRpZG8gcXVhbmRvIG8gdXN1w6FyaW8gZGlnaXRhIG5vIGNhbXBvLCBmb3JuZWNlbmRvIG8gdGV4dG8gYXR1YWwgcGFyYSBmaWx0cmFnZW0gZGUgc3VnZXN0w7Vlcy4gKi9cclxuICAgIHB1YmxpYyBjb21wbGV0ZU1ldGhvZCA9IG91dHB1dDx7IHF1ZXJ5OiBzdHJpbmcgfT4oKTtcclxuXHJcbiAgICBwdWJsaWMgZm9jdXNlZEluZGV4ID0gc2lnbmFsKC0xKTtcclxuICAgIHB1YmxpYyBpc09wZW4gPSBzaWduYWwoZmFsc2UpO1xyXG4gICAgcHVibGljIGZpbHRlcmVkU3VnZ2VzdGlvbnMgPSBzaWduYWw8U3VnZ2VzdGlvbldyYXBwZXI8VD5bXT4oW10pO1xyXG4gICAgcHVibGljIHNob3dFbXB0eU1lc3NhZ2UgPSBzaWduYWwoZmFsc2UpO1xyXG4gICAgcHVibGljIGZpbHRlclRleHQgPSBzaWduYWwoJycpO1xyXG4gICAgcHVibGljIGlucHV0VmFsdWUgPSBzaWduYWwoJycpO1xyXG4gICAgcHVibGljIGxvYWRpbmcgPSBzaWduYWwoZmFsc2UpO1xyXG5cclxuICAgIHB1YmxpYyBjb21wb25lbnRJZCA9IGBhdXRvY29tcGxldGVfJHtBdXRvY29tcGxldGVDb21wb25lbnQubmV4dElkKyt9YDtcclxuICAgIHB1YmxpYyBpbnB1dEVsID0gdmlld0NoaWxkPEVsZW1lbnRSZWY+KCdpbnB1dEVsJyk7XHJcblxyXG4gICAgcHJpdmF0ZSBfaW5wdXRTdWJqZWN0JCA9IG5ldyBTdWJqZWN0PHN0cmluZz4oKTtcclxuICAgIHByaXZhdGUgX2xhenlMb2FkU3ViamVjdCQgPSBuZXcgU3ViamVjdDxzdHJpbmc+KCk7XHJcbiAgICBwcml2YXRlIF9kZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xyXG4gICAgcHJpdmF0ZSBfb25DaGFuZ2U/OiAodmFsdWU6IGFueSB8IGFueVtdKSA9PiB2b2lkO1xyXG4gICAgcHJpdmF0ZSBfb25Ub3VjaGVkPzogKCkgPT4gdm9pZDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIENvbXB1dGVkIHF1ZSByZXRvcm5hIHVtYSBsaXN0YSBkZSBzdWdlc3TDtWVzIGRvIHRpcG8gYFN1Z2dlc3Rpb25XcmFwcGVyPFQ+YCxcclxuICAgICAqIGFkaWNpb25hbmRvIHVtIGlkZW50aWZpY2Fkb3Igw7puaWNvIGEgY2FkYSBzdWdlc3TDo28uXHJcbiAgICAgKiBAcmV0dXJucyBVbWEgbGlzdGEgZGUgc3VnZXN0w7VlcyBwcm9jZXNzYWRhcyBjb20gaWRlbnRpZmljYWRvcmVzIMO6bmljb3MuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBpbnRlcm5hbFN1Z2dlc3Rpb24gPSBjb21wdXRlZDxTdWdnZXN0aW9uV3JhcHBlcjxUPltdPigoKSA9PiB7XHJcbiAgICAgICAgY29uc3Qgb3B0cyA9IHRoaXMuc3VnZ2VzdGlvbnMoKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5fYWRkSWRUb1N1Z2dlc3Rpb25zKG9wdHMpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXRvcm5hIHVtIGNvbmp1bnRvIChgU2V0YCkgY29tIG9zIElEcyBkYXMgc3VnZXN0w7VlcyBzZWxlY2lvbmFkYXMuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzZWxlY3RlZFN1Z2dlc3Rpb25JZHMgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICAgICAgaWYgKCF0aGlzLm11bHRpcGxlKCkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBTZXQ8c3RyaW5nPigpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgY3VycmVudFZhbHVlcyA9IHRoaXMudmFsdWVzKCk7XHJcblxyXG4gICAgICAgIHJldHVybiBuZXcgU2V0KFxyXG4gICAgICAgICAgICBjdXJyZW50VmFsdWVzLm1hcCgodmFsdWUpID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmludGVybmFsU3VnZ2VzdGlvbigpLmZpbmQoKHMpID0+IEpTT04uc3RyaW5naWZ5KHMuZGF0YSkgPT09IEpTT04uc3RyaW5naWZ5KHZhbHVlKSk/LmlkO1xyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICApO1xyXG4gICAgfSk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXRvcm5hIHVtYSBsaXN0YSBkZSBzdWdlc3TDtWVzIGZpbHRyYWRhcywgZW5yaXF1ZWNpZGFzIGNvbSBhIHByb3ByaWVkYWRlIGBpc1NlbGVjdGVkYC5cclxuICAgICAqIENhZGEgc3VnZXN0w6NvIHJlY2ViZSB1bSBjYW1wbyBib29sZWFubyBgaXNTZWxlY3RlZGAgaW5kaWNhbmRvIHNlIGVsYSBlc3TDoSBzZWxlY2lvbmFkYSxcclxuICAgICAqIGNvbSBiYXNlIG5vcyBJRHMgZGFzIHN1Z2VzdMO1ZXMgc2VsZWNpb25hZGFzIGUgbm8gdmFsb3IgZGEgc3VnZXN0w6NvLlxyXG4gICAgICogQHJldHVybnMgVW1hIGxpc3RhIGRlIHN1Z2VzdMO1ZXMgZmlsdHJhZGFzLCBjYWRhIHVtYSBjb20gYSBwcm9wcmllZGFkZSBhZGljaW9uYWwgYGlzU2VsZWN0ZWRgLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZW5yaWNoZWRGaWx0ZXJlZFN1Z2dlc3Rpb25zID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGZpbHRlcmVkID0gdGhpcy5maWx0ZXJlZFN1Z2dlc3Rpb25zKCk7XHJcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRJZHMgPSB0aGlzLnNlbGVjdGVkU3VnZ2VzdGlvbklkcygpO1xyXG5cclxuICAgICAgICByZXR1cm4gZmlsdGVyZWQubWFwKChzdWdnZXN0aW9uKSA9PiAoe1xyXG4gICAgICAgICAgICAuLi5zdWdnZXN0aW9uLFxyXG4gICAgICAgICAgICBpc1NlbGVjdGVkOiBzZWxlY3RlZElkcy5oYXMoc3VnZ2VzdGlvbi5pZCksXHJcbiAgICAgICAgfSkpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgY29uc3RydWN0b3IoKSB7XHJcbiAgICAgICAgdGhpcy5fdmFsaWRhdGVJbnB1dHMoKTtcclxuICAgICAgICB0aGlzLl9zZXR1cElucHV0RGVib3VuY2UoKTtcclxuICAgICAgICB0aGlzLl9zZXR1cExhenlMb2FkRGVib3VuY2UoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIERlZmluZSBvIHZhbG9yIGRvIGF1dG9jb21wbGV0ZS5cclxuICAgICAqIEBwYXJhbSB2YWx1ZSBWYWxvciBhIHNlciBkZWZpbmlkbywgw7puaWNvIG91IGFycmF5LCBjb25mb3JtZSBzZWxlw6fDo28gbcO6bHRpcGxhLlxyXG4gICAgICogQHRocm93cyBTZSBtw7psdGlwbG8gZm9yIGZhbHNvIGUgdmFsdWUgZm9yIGFycmF5LlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgd3JpdGVWYWx1ZSh2YWx1ZTogVCB8IFRbXSk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IHN1Z2dlc3Rpb25MYWJlbCA9IHRoaXMuc3VnZ2VzdGlvbkxhYmVsKCk7XHJcblxyXG4gICAgICAgIGlmICh2YWx1ZSAmJiB0aGlzLm11bHRpcGxlKCkpIHtcclxuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnZhbHVlcy5zZXQodmFsdWUpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZXMuc2V0KFt2YWx1ZV0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XHJcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSB2YWx1ZSBtdXN0IG5vdCBiZSBhbiBhcnJheSB3aGVuIG11bHRpcGxlIGlzIGZhbHNlLicpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZS5zZXQodmFsdWUpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB0aGlzLmlucHV0VmFsdWUuc2V0KCF2YWx1ZSA/ICcnIDogc3VnZ2VzdGlvbkxhYmVsID8gU3RyaW5nKHZhbHVlW3N1Z2dlc3Rpb25MYWJlbF0pIDogU3RyaW5nKHZhbHVlKSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmVnaXN0cmEgdW1hIGZ1bsOnw6NvIGRlIGNhbGxiYWNrIHF1ZSBzZXLDoSBjaGFtYWRhIHNlbXByZSBxdWUgbyB2YWxvciBkbyBjb21wb25lbnRlIG11ZGFyLlxyXG4gICAgICogQHBhcmFtIG9uQ2hhbmdlIEZ1bsOnw6NvIGEgc2VyIGNoYW1hZGEgcXVhbmRvIG8gdmFsb3IgbXVkYXIuIFJlY2ViZSBvIG5vdm8gdmFsb3IgY29tbyBhcmd1bWVudG8sIHF1ZSBwb2RlIHNlciB1bSDDum5pY28gdmFsb3Igb3UgdW0gYXJyYXkgZGUgdmFsb3Jlcy5cclxuICAgICAqL1xyXG4gICAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2Uob25DaGFuZ2U6ICh2YWx1ZTogYW55IHwgYW55W10pID0+IHZvaWQpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9vbkNoYW5nZSA9IG9uQ2hhbmdlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmVnaXN0cmEgdW1hIGZ1bsOnw6NvIGRlIGNhbGxiYWNrIHF1ZSBzZXLDoSBjaGFtYWRhIHF1YW5kbyBvIGNvbXBvbmVudGUgZm9yIHRvY2FkbyAocGVyZGVyIG8gZm9jbykuXHJcbiAgICAgKiBAcGFyYW0gb25Ub3VjaGVkIEZ1bsOnw6NvIGRlIGNhbGxiYWNrIGEgc2VyIGNoYW1hZGEgcXVhbmRvIG8gY29tcG9uZW50ZSBmb3IgdG9jYWRvLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQob25Ub3VjaGVkOiAoKSA9PiB2b2lkKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fb25Ub3VjaGVkID0gb25Ub3VjaGVkO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRGVmaW5lIG8gZXN0YWRvIGRlIGRlc2FiaWxpdGFkbyBkbyBjb21wb25lbnRlLlxyXG4gICAgICogQHBhcmFtIGRpc2FibGVkIEluZGljYSBzZSBvIGNvbXBvbmVudGUgZGV2ZSBzZXIgZGVzYWJpbGl0YWRvIChgdHJ1ZWApIG91IGhhYmlsaXRhZG8gKGBmYWxzZWApLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc2V0RGlzYWJsZWRTdGF0ZT8oZGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmRpc2FibGVkLnNldChkaXNhYmxlZCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBNYW5pcHVsYSBvIGV2ZW50byBkZSBlbnRyYWRhIGRvIHVzdcOhcmlvIG5vIGNhbXBvIGRlIHRleHRvIGRvIGF1dG9jb21wbGV0ZS5cclxuICAgICAqIEVzdGUgbcOpdG9kbyDDqSBjaGFtYWRvIHNlbXByZSBxdWUgbyB1c3XDoXJpbyBkaWdpdGEgYWxnbyBubyBjYW1wbyBkZSBlbnRyYWRhLlxyXG4gICAgICogRWxlIGV4ZWN1dGEgYXMgc2VndWludGVzIGHDp8O1ZXM6XHJcbiAgICAgKiAtIERpc3BhcmEgbyBjYWxsYmFjayBkZSBcInRvdWNoZWRcIiBwYXJhIGNvbnRyb2xlIGRlIGZvcm11bMOhcmlvcy5cclxuICAgICAqIC0gT2J0w6ltIG8gdmFsb3IgYXR1YWwgZG8gY2FtcG8gZGUgZW50cmFkYS5cclxuICAgICAqIC0gU2UgbyBtb2RvIGxhenkgZXN0aXZlciBhdGl2YWRvLCBlbWl0ZSBvIGV2ZW50byBkZSBsYXp5TG9hZCBjb20gYSBjb25zdWx0YSBlIGFicmUgbyBwYWluZWwgZGUgc3VnZXN0w7Vlcy5cclxuICAgICAqIC0gQ2FzbyBjb250csOhcmlvLCBhdHVhbGl6YSBvIHRleHRvIGRlIGZpbHRybywgbm90aWZpY2Egb3Mgb2JzZXJ2YWRvcmVzIGUgYWJyZSBvIHBhaW5lbCBkZSBzdWdlc3TDtWVzIHNlIGhvdXZlciBzdWdlc3TDtWVzIGRpc3BvbsOtdmVpcy5cclxuICAgICAqIEBwYXJhbSBldmVudCBFdmVudG8gZGUgZW50cmFkYSBkbyB0aXBvIGBFdmVudGAgcHJvdmVuaWVudGUgZG8gY2FtcG8gZGUgdGV4dG8uXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBvbklucHV0KGV2ZW50OiBFdmVudCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX29uVG91Y2hlZD8uKCk7XHJcblxyXG4gICAgICAgIGNvbnN0IHZhbHVlID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMubGF6eSgpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2xhenlMb2FkU3ViamVjdCQubmV4dCh2YWx1ZSk7XHJcbiAgICAgICAgICAgIHRoaXMuaXNPcGVuLnNldCh0cnVlKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5maWx0ZXJUZXh0LnNldCh2YWx1ZSk7XHJcblxyXG4gICAgICAgIHRoaXMuY29tcGxldGVNZXRob2QuZW1pdCh7IHF1ZXJ5OiB2YWx1ZSB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5faW5wdXRTdWJqZWN0JC5uZXh0KHZhbHVlKTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuc3VnZ2VzdGlvbnMoKSkge1xyXG4gICAgICAgICAgICB0aGlzLmlzT3Blbi5zZXQodHJ1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTWFuaXB1bGEgbyBldmVudG8gZGUgcGVyZGEgZGUgZm9jbyAoYmx1cikgZG8gY2FtcG8gZGUgZW50cmFkYSBkbyBhdXRvY29tcGxldGUuXHJcbiAgICAgKiBFc3RlIG3DqXRvZG8gdmVyaWZpY2Egc2UgbyB2YWxvciBkaWdpdGFkbyBwZWxvIHVzdcOhcmlvIGNvcnJlc3BvbmRlIGV4YXRhbWVudGUgYSBhbGd1bSBkb3MgaXRlbnMgc3VnZXJpZG9zLlxyXG4gICAgICogLSBTZSBob3V2ZXIgY29ycmVzcG9uZMOqbmNpYTpcclxuICAgICAqICAgLSBObyBtb2RvIG3Dumx0aXBsbyAoYG11bHRpcGxlYCksIGFkaWNpb25hIG8gaXRlbSBzZWxlY2lvbmFkbyDDoCBsaXN0YSBkZSB2YWxvcmVzLCBjYXNvIGFpbmRhIG7Do28gZXN0ZWphIHByZXNlbnRlLlxyXG4gICAgICogICAtIE5vIG1vZG8gc2ltcGxlcywgc2VsZWNpb25hIG8gaXRlbSBjb3JyZXNwb25kZW50ZSBzZSBhaW5kYSBuw6NvIGVzdGl2ZXIgc2VsZWNpb25hZG8uXHJcbiAgICAgKiAtIFNlIG7Do28gaG91dmVyIGNvcnJlc3BvbmTDqm5jaWEsIGxpbXBhIG8gY2FtcG8gZGUgZW50cmFkYS5cclxuICAgICAqL1xyXG4gICAgcHVibGljIG9uSW5wdXRCbHVyKGV2ZW50OiBFdmVudCk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGlucHV0VmFsdWUgPSBTdHJpbmcodGhpcy5pbnB1dFZhbHVlKCkpLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgICAgY29uc3Qgc3VnZ2VzdGlvbnMgPSB0aGlzLmludGVybmFsU3VnZ2VzdGlvbigpO1xyXG5cclxuICAgICAgICBjb25zdCBtYXRjaCA9IHN1Z2dlc3Rpb25zLmZpbmQoKHsgZGF0YSB9KSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGxhYmVsID0gdGhpcy5zdWdnZXN0aW9uTGFiZWwoKSA/IGRhdGFbdGhpcy5zdWdnZXN0aW9uTGFiZWwoKSFdIDogZGF0YTtcclxuICAgICAgICAgICAgcmV0dXJuIFN0cmluZyhsYWJlbCkudG9Mb3dlckNhc2UoKSA9PT0gaW5wdXRWYWx1ZTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgaWYgKG1hdGNoKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLm11bHRpcGxlKCkpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRWYWx1ZXMgPSB0aGlzLnZhbHVlcygpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZXhpc3RzID0gY3VycmVudFZhbHVlcy5zb21lKFxyXG4gICAgICAgICAgICAgICAgICAgICh2YWx1ZSkgPT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMuc3VnZ2VzdGlvblZhbHVlKCkgPyB2YWx1ZVt0aGlzLnN1Z2dlc3Rpb25WYWx1ZSgpIV0gOiB2YWx1ZSkgPT09XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLnN1Z2dlc3Rpb25WYWx1ZSgpID8gbWF0Y2guZGF0YVt0aGlzLnN1Z2dlc3Rpb25WYWx1ZSgpIV0gOiBtYXRjaC5kYXRhKSxcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICBpZiAoIWV4aXN0cykge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmFsdWVzLnNldChbLi4uY3VycmVudFZhbHVlcywgbWF0Y2guZGF0YV0pO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX29uQ2hhbmdlPy4odGhpcy52YWx1ZXMoKSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLmlucHV0VmFsdWUuc2V0KCcnKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnZhbHVlKCkgIT09IG1hdGNoLmRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdFN1Z2dlc3Rpb24obWF0Y2guZGF0YSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmlucHV0VmFsdWUuc2V0KCcnKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBEaXNwYXJhIG8gZXZlbnRvIGRlIGZvY28gcXVhbmRvIG8gY2FtcG8gZGUgZW50cmFkYSByZWNlYmUgZm9jby5cclxuICAgICAqIEBwYXJhbSBldmVudCBPIGV2ZW50byBkZSBmb2NvIGRpc3BhcmFkbyBwZWxvIGVsZW1lbnRvIGRlIGVudHJhZGEuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBvbklucHV0Rm9jdXMoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5mb2N1c2VkLmVtaXQoZXZlbnQpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTWFuaXB1bGEgZXZlbnRvcyBkZSB0ZWNsYWRvIG5vIGNvbXBvbmVudGUgZGUgYXV0b2NvbXBsZXRlLlxyXG4gICAgICogRXN0ZSBtw6l0b2RvIGdlcmVuY2lhIGEgbmF2ZWdhw6fDo28gZSBzZWxlw6fDo28gZGUgc3VnZXN0w7VlcyB1c2FuZG8gYXMgdGVjbGFzIGRvIHRlY2xhZG8uXHJcbiAgICAgKiAtICdBcnJvd0Rvd24nOiBNb3ZlIG8gZm9jbyBwYXJhIGEgcHLDs3hpbWEgc3VnZXN0w6NvLlxyXG4gICAgICogLSAnQXJyb3dVcCc6IE1vdmUgbyBmb2NvIHBhcmEgYSBzdWdlc3TDo28gYW50ZXJpb3IuXHJcbiAgICAgKiAtICdFbnRlcicgb3UgJ1RhYic6IFNlbGVjaW9uYSBhIHN1Z2VzdMOjbyBhdHVhbG1lbnRlIGZvY2FkYSBlIGZlY2hhIGEgbGlzdGEgZGUgc3VnZXN0w7Vlcy5cclxuICAgICAqIC0gJ0VzY2FwZSc6IEZlY2hhIGEgbGlzdGEgZGUgc3VnZXN0w7VlcyBzZW0gc2VsZWNpb25hciBuZW5odW0gaXRlbS5cclxuICAgICAqIEBwYXJhbSBldmVudCBPIGV2ZW50byBkZSB0ZWNsYWRvIGRpc3BhcmFkbyBwZWxvIHVzdcOhcmlvLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgb25LZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XHJcbiAgICAgICAgY29uc3Qgc3VnZ2VzdGlvbnMgPSB0aGlzLmZpbHRlcmVkU3VnZ2VzdGlvbnMoKTtcclxuXHJcbiAgICAgICAgdGhpcy5fb25Ub3VjaGVkPy4oKTtcclxuXHJcbiAgICAgICAgY29uc3QgX3NlbGVjdFN1Z2dlc3Rpb24gPSAoKSA9PiB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmZvY3VzZWRJbmRleCgpID49IDAgJiYgdGhpcy5mb2N1c2VkSW5kZXgoKSA8IHN1Z2dlc3Rpb25zLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0U3VnZ2VzdGlvbihzdWdnZXN0aW9uc1t0aGlzLmZvY3VzZWRJbmRleCgpXS5kYXRhKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XHJcbiAgICAgICAgICAgIGNhc2UgJ0Fycm93RG93bic6XHJcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fZm9jdXNOZXh0U3VnZ2VzdGlvbihzdWdnZXN0aW9ucyk7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSAnQXJyb3dVcCc6XHJcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fZm9jdXNQcmV2aW91c1N1Z2dlc3Rpb24oKTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlICdFbnRlcic6XHJcbiAgICAgICAgICAgIGNhc2UgJ1RhYic6XHJcbiAgICAgICAgICAgICAgICBfc2VsZWN0U3VnZ2VzdGlvbigpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pc09wZW4uc2V0KGZhbHNlKTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlICdFc2NhcGUnOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5pc09wZW4uc2V0KGZhbHNlKTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEVtaXRlIHVtIGV2ZW50byBxdWFuZG8gdW1hIHRlY2xhIMOpIGxpYmVyYWRhIG5vIGNvbXBvbmVudGUuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gZXZlbnQgTyBldmVudG8gZGUgdGVjbGFkbyBhc3NvY2lhZG8gw6AgdGVjbGEgbGliZXJhZGEuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBvbktleVVwKGV2ZW50OiBFdmVudCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMua2V5VXAuZW1pdChldmVudCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBGZWNoYSBvIGRyb3Bkb3duIGVtIGV2ZW50b3MgZGUgcmVkaW1lbnNpb25hbWVudG8gZGUgamFuZWxhLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgb25XaW5kb3dSZXNpemUoKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuaXNPcGVuKCkpIHtcclxuICAgICAgICAgICAgdGhpcy5pc09wZW4uc2V0KGZhbHNlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTZWxlY2lvbmEgdW1hIHN1Z2VzdMOjbyBkYSBsaXN0YSBkZSBzdWdlc3TDtWVzLlxyXG4gICAgICogU2UgbyBtb2RvIG3Dumx0aXBsbyBlc3RpdmVyIGF0aXZhZG8gKGBtdWx0aXBsZSgpYCByZXRvcm5hIHRydWUpLCBhZGljaW9uYSBhIHN1Z2VzdMOjbyDDoCBsaXN0YSBkZSBzdWdnZXN0w7VlcyBzZWxlY2lvbmFkYXMsXHJcbiAgICAgKiBjYXNvIGVsYSBhaW5kYSBuw6NvIGVzdGVqYSBwcmVzZW50ZS4gRW0gc2VndWlkYSwgbGltcGEgbyB2YWxvciBkbyBjYW1wbyBkZSBlbnRyYWRhLlxyXG4gICAgICogU2UgbyBtb2RvIG3Dumx0aXBsbyBuw6NvIGVzdGl2ZXIgYXRpdmFkbywgZGVmaW5lIGEgc3VnZXN0w6NvIGNvbW8gdmFsb3Igc2VsZWNpb25hZG8gZSBhdHVhbGl6YSBvIGNhbXBvIGRlIGVudHJhZGFcclxuICAgICAqIGNvbSBvIHLDs3R1bG8gY29ycmVzcG9uZGVudGUuXHJcbiAgICAgKiBFbSBhbWJvcyBvcyBjYXNvcywgZGlzcGFyYSBvIGNhbGxiYWNrIGBfb25DaGFuZ2VgIGNvbSBvIG5vdm8gdmFsb3IgZSBmZWNoYSBvIHBhaW5lbCBkZSBzdWdlc3TDtWVzLlxyXG4gICAgICogQHBhcmFtIHN1Z2dlc3Rpb24gLSBBIHN1Z2VzdMOjbyBhIHNlciBzZWxlY2lvbmFkYS5cclxuICAgICAqL1xyXG4gICAgcHVibGljIHNlbGVjdFN1Z2dlc3Rpb24oc3VnZ2VzdGlvbjogVCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLm11bHRpcGxlKCkpIHtcclxuICAgICAgICAgICAgY29uc3QgY3VycmVudFZhbHVlcyA9IHRoaXMudmFsdWVzKCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGV4aXN0cyA9IGN1cnJlbnRWYWx1ZXMuc29tZShcclxuICAgICAgICAgICAgICAgICh2YWx1ZSkgPT5cclxuICAgICAgICAgICAgICAgICAgICAodGhpcy5zdWdnZXN0aW9uVmFsdWUoKSA/IHZhbHVlW3RoaXMuc3VnZ2VzdGlvblZhbHVlKCkhXSA6IHZhbHVlKSA9PT1cclxuICAgICAgICAgICAgICAgICAgICAodGhpcy5zdWdnZXN0aW9uVmFsdWUoKSA/IHN1Z2dlc3Rpb25bdGhpcy5zdWdnZXN0aW9uVmFsdWUoKSFdIDogc3VnZ2VzdGlvbiksXHJcbiAgICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgICBpZiAoIWV4aXN0cykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZXMuc2V0KFsuLi5jdXJyZW50VmFsdWVzLCBzdWdnZXN0aW9uXSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9vbkNoYW5nZT8uKHRoaXMudmFsdWVzKCkpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB0aGlzLmlucHV0VmFsdWUuc2V0KCcnKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnZhbHVlLnNldChzdWdnZXN0aW9uKTtcclxuICAgICAgICAgICAgY29uc3QgX3ZhbHVlID0gdGhpcy5zdWdnZXN0aW9uVmFsdWUoKSA/IHN1Z2dlc3Rpb25bdGhpcy5zdWdnZXN0aW9uVmFsdWUoKSFdIDogc3VnZ2VzdGlvbjtcclxuICAgICAgICAgICAgY29uc3QgX2lucHV0VmFsdWUgPSBTdHJpbmcodGhpcy5zdWdnZXN0aW9uTGFiZWwoKSA/IHN1Z2dlc3Rpb25bdGhpcy5zdWdnZXN0aW9uTGFiZWwoKSFdIDogc3VnZ2VzdGlvbik7XHJcblxyXG4gICAgICAgICAgICB0aGlzLmlucHV0VmFsdWUuc2V0KF9pbnB1dFZhbHVlKTtcclxuICAgICAgICAgICAgdGhpcy5fb25DaGFuZ2U/LihfdmFsdWUpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZC5lbWl0KHN1Z2dlc3Rpb24pO1xyXG4gICAgICAgIHRoaXMuaXNPcGVuLnNldChmYWxzZSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBMaW1wYSBvIHZhbG9yIHNlbGVjaW9uYWRvIG5vIGNvbXBvbmVudGUgZGUgYXV0b2NvbXBsZXRlLlxyXG4gICAgICogU2UgbyBtb2RvIG3Dumx0aXBsbyBlc3RpdmVyIGF0aXZhZG8sIHJlbW92ZSB0b2RvcyBvcyB2YWxvcmVzIHNlbGVjaW9uYWRvcy5cclxuICAgICAqIENhc28gY29udHLDoXJpbywgZGVmaW5lIG8gdmFsb3IgY29tbyBudWxvLlxyXG4gICAgICogVGFtYsOpbSBsaW1wYSBhcyBzdWdlc3TDtWVzIGZpbHRyYWRhcywgZmVjaGEgbyBwYWluZWwgZGUgc3VnZXN0w7Vlc1xyXG4gICAgICogZSBsaW1wYSBvIHZhbG9yIGRvIGNhbXBvIGRlIGVudHJhZGEuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBjbGVhcigpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5tdWx0aXBsZSgpKSB7XHJcbiAgICAgICAgICAgIHRoaXMudmFsdWVzLnNldChbXSk7XHJcbiAgICAgICAgICAgIHRoaXMuX29uQ2hhbmdlPy4odGhpcy52YWx1ZXMoKSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy52YWx1ZS5zZXQobnVsbCk7XHJcbiAgICAgICAgICAgIHRoaXMuX29uQ2hhbmdlPy4odGhpcy52YWx1ZSgpKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuZmlsdGVyZWRTdWdnZXN0aW9ucy5zZXQoW10pO1xyXG4gICAgICAgIHRoaXMuaXNPcGVuLnNldChmYWxzZSk7XHJcbiAgICAgICAgdGhpcy5pbnB1dFZhbHVlLnNldCgnJyk7XHJcbiAgICAgICAgdGhpcy5jbGVhcmVkLmVtaXQoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEFsdGVybmEgYSBleGliacOnw6NvIGRvIGRyb3Bkb3duIGRlIHN1Z2VzdMO1ZXMgZG8gYXV0b2NvbXBsZXRlLlxyXG4gICAgICogRXN0ZSBtw6l0b2RvIGNvbmZpZ3VyYSBvIGRlYm91bmNlIGRvIGlucHV0LCB2ZXJpZmljYSBzZSBow6Egc3VnZXN0w7VlcyBmaWx0cmFkYXNcclxuICAgICAqIGUsIGNhc28gbsOjbyBoYWphIHN1Z2VzdMO1ZXMgZSBvIHRleHRvIGRvIGZpbHRybyBlc3RlamEgdmF6aW8sIHJlZGVmaW5lIGFzIHN1Z2VzdMO1ZXMgZmlsdHJhZGFzLlxyXG4gICAgICogUG9yIGZpbSwgYWx0ZXJuYSBvIGVzdGFkbyBkZSBhYmVydHVyYSBkbyBkcm9wZG93bi5cclxuICAgICAqL1xyXG4gICAgcHVibGljIHRvZ2dsZURyb3Bkb3duKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX3NldHVwSW5wdXREZWJvdW5jZSgpO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5maWx0ZXJUZXh0KCkgPT09ICcnKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmxhenkoKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fbGF6eUxvYWRTdWJqZWN0JC5uZXh0KCcnKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMucmVzZXRGaWx0ZXJlZFN1Z2dlc3Rpb25zKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuaXNPcGVuLnNldCghdGhpcy5pc09wZW4oKSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBGdW7Dp8OjbyB1dGlsaXphZGEgcGFyYSBvdGltaXphciBhIHJlbmRlcml6YcOnw6NvIGRlIGxpc3RhcyBubyBBbmd1bGFyLCBwZXJtaXRpbmRvIHF1ZSBvIGZyYW1ld29ya1xyXG4gICAgICogaWRlbnRpZmlxdWUgY2FkYSBpdGVtIGRlIGZvcm1hIMO6bmljYSBwZWxvIHNldSBgaWRgLiBEZXZlIHNlciB1dGlsaXphZGEgY29tbyBmdW7Dp8OjbyBkZSBgdHJhY2tCeWBcclxuICAgICAqIGVtIGJsb2NvcyBjb21vIGBAZm9yYC5cclxuICAgICAqIEBwYXJhbSBfIC0gw41uZGljZSBkbyBpdGVtIG5hIGxpc3RhIChuw6NvIHV0aWxpemFkbykuXHJcbiAgICAgKiBAcGFyYW0gaXRlbSAtIE9iamV0byBkbyB0aXBvIGBTdWdnZXN0aW9uV3JhcHBlcjxUPmAgcXVlIHJlcHJlc2VudGEgbyBpdGVtIGF0dWFsLlxyXG4gICAgICogQHJldHVybnMgTyBpZGVudGlmaWNhZG9yIMO6bmljbyAoYGlkYCkgZG8gaXRlbS5cclxuICAgICAqL1xyXG4gICAgcHVibGljIHRyYWNrQnlJZChfOiBudW1iZXIsIGl0ZW06IFN1Z2dlc3Rpb25XcmFwcGVyPFQ+KTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gaXRlbS5pZDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJlbW92ZSB1bWEgc3VnZXN0w6NvIGRhIGxpc3RhIGRlIHZhbG9yZXMgc2VsZWNpb25hZG9zLlxyXG4gICAgICogQHBhcmFtIHN1Z2dlc3Rpb24gTyBpdGVtIGEgc2VyIHJlbW92aWRvIGRhIGxpc3RhIGRlIHN1Z2VzdMO1ZXMuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyByZW1vdmVTdWdnZXN0aW9uKHN1Z2dlc3Rpb246IFQpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBzdWdnZXN0aW9uVmFsdWUgPSB0aGlzLnN1Z2dlc3Rpb25WYWx1ZSgpO1xyXG5cclxuICAgICAgICB0aGlzLnZhbHVlcy5zZXQoXHJcbiAgICAgICAgICAgIHRoaXMudmFsdWVzKCkuZmlsdGVyKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHN1Z2dlc3Rpb25WYWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZVtzdWdnZXN0aW9uVmFsdWVdICE9PSBzdWdnZXN0aW9uW3N1Z2dlc3Rpb25WYWx1ZV07XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUgIT09IHN1Z2dlc3Rpb247XHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5fb25DaGFuZ2U/Lih0aGlzLnZhbHVlcygpKTtcclxuICAgICAgICB0aGlzLnVuc2VsZWN0ZWQuZW1pdChzdWdnZXN0aW9uKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJlaW5pY2lhIGEgbGlzdGEgZGUgc3VnZXN0w7VlcyBmaWx0cmFkYXMuXHJcbiAgICAgKiBTZSBvIG1vZG8gbGF6eSBlc3RpdmVyIGF0aXZhZG8sIGVtaXRlIHVtIGV2ZW50byBwYXJhIGNhcnJlZ2FyIHN1Z2VzdMO1ZXMgY29tIHVtYSBjb25zdWx0YSB2YXppYS5cclxuICAgICAqIEVtIHNlZ3VpZGEsIHJlZGVmaW5lIGFzIHN1Z2VzdMO1ZXMgZmlsdHJhZGFzIHBhcmEgbyB2YWxvciByZXRvcm5hZG8gcG9yIGBpbnRlcm5hbFN1Z2dlc3Rpb24oKWAuXHJcbiAgICAgKiBAcHJpdmF0ZVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHJlc2V0RmlsdGVyZWRTdWdnZXN0aW9ucygpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5sYXp5KCkpIHtcclxuICAgICAgICAgICAgdGhpcy5fbGF6eUxvYWRTdWJqZWN0JC5uZXh0KCcnKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmZpbHRlcmVkU3VnZ2VzdGlvbnMuc2V0KHRoaXMuaW50ZXJuYWxTdWdnZXN0aW9uKCkpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIE1vdmUgbyBmb2NvIHBhcmEgYSBwcsOzeGltYSBzdWdlc3TDo28gbmEgbGlzdGEgZGUgc3VnZXN0w7Vlcywgc2UgaG91dmVyLlxyXG4gICAgICogQHByaXZhdGVcclxuICAgICAqIEBwYXJhbSBzdWdnZXN0aW9ucyBMaXN0YSBkZSBzdWdlc3TDtWVzIGRpc3BvbsOtdmVpcy5cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfZm9jdXNOZXh0U3VnZ2VzdGlvbihzdWdnZXN0aW9uczogU3VnZ2VzdGlvbldyYXBwZXI8VD5bXSk6IHZvaWQge1xyXG4gICAgICAgIGxldCBuZXh0SW5kZXggPSB0aGlzLmZvY3VzZWRJbmRleCgpICsgMTtcclxuXHJcbiAgICAgICAgaWYgKG5leHRJbmRleCA8IHN1Z2dlc3Rpb25zLmxlbmd0aCkge1xyXG4gICAgICAgICAgICB0aGlzLmZvY3VzZWRJbmRleC5zZXQobmV4dEluZGV4KTtcclxuICAgICAgICAgICAgdGhpcy5fc2Nyb2xsVG9Gb2N1c2VkU3VnZ2VzdGlvbigpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIE1vdmUgbyBmb2NvIHBhcmEgYSBzdWdlc3TDo28gYW50ZXJpb3IgbmEgbGlzdGEgZGUgc3VnZXN0w7Vlcywgc2UgaG91dmVyLlxyXG4gICAgICogQHByaXZhdGVcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfZm9jdXNQcmV2aW91c1N1Z2dlc3Rpb24oKTogdm9pZCB7XHJcbiAgICAgICAgbGV0IHByZXZJbmRleCA9IHRoaXMuZm9jdXNlZEluZGV4KCkgLSAxO1xyXG5cclxuICAgICAgICBpZiAocHJldkluZGV4ID49IDApIHtcclxuICAgICAgICAgICAgdGhpcy5mb2N1c2VkSW5kZXguc2V0KHByZXZJbmRleCk7XHJcbiAgICAgICAgICAgIHRoaXMuX3Njcm9sbFRvRm9jdXNlZFN1Z2dlc3Rpb24oKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSb2xhIGEgbGlzdGEgZGUgc3VnZXN0w7VlcyBwYXJhIGdhcmFudGlyIHF1ZSBhIHN1Z2VzdMOjbyBhdHVhbG1lbnRlIGZvY2FkYSBlc3RlamEgdmlzw612ZWwuXHJcbiAgICAgKiBAcHJpdmF0ZVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9zY3JvbGxUb0ZvY3VzZWRTdWdnZXN0aW9uKCk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGlkID0gdGhpcy5maWx0ZXJlZFN1Z2dlc3Rpb25zKClbdGhpcy5mb2N1c2VkSW5kZXgoKV0/LmlkO1xyXG5cclxuICAgICAgICBpZiAoIWlkKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IGVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpO1xyXG4gICAgICAgIGVsPy5zY3JvbGxJbnRvVmlldyh7IGJsb2NrOiAnbmVhcmVzdCcgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBZGljaW9uYSB1bSBpZGVudGlmaWNhZG9yIMO6bmljbyBhIGNhZGEgc3VnZXN0w6NvIGZvcm5lY2lkYS5cclxuICAgICAqIEBwcml2YXRlXHJcbiAgICAgKiBAcGFyYW0gc3VnZ2VzdGlvbnMgLSBVbSBhcnJheSBkZSBzdWdlc3TDtWVzIGRvIHRpcG8gVC5cclxuICAgICAqIEByZXR1cm5zIFVtIGFycmF5IGRlIG9iamV0b3MgYFN1Z2dlc3Rpb25XcmFwcGVyPFQ+YCwgY2FkYSB1bSBjb250ZW5kbyBhIHN1Z2VzdMOjbyBvcmlnaW5hbCBlIHVtIGlkZW50aWZpY2Fkb3Igw7puaWNvLlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9hZGRJZFRvU3VnZ2VzdGlvbnMoc3VnZ2VzdGlvbnM6IFRbXSk6IFN1Z2dlc3Rpb25XcmFwcGVyPFQ+W10ge1xyXG4gICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgIHN1Z2dlc3Rpb25zPy5tYXAoKHN1Z2dlc3Rpb24pID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YTogc3VnZ2VzdGlvbixcclxuICAgICAgICAgICAgICAgICAgICBpZDogdGhpcy5kYXRhS2V5KClcclxuICAgICAgICAgICAgICAgICAgICAgICAgPyBTdHJpbmcoc3VnZ2VzdGlvblt0aGlzLmRhdGFLZXkoKSFdKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA6ICgodHlwZW9mIHN1Z2dlc3Rpb24gIT09ICdvYmplY3QnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gc3VnZ2VzdGlvbj8udG9TdHJpbmcoKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IE9iamVjdC52YWx1ZXMoc3VnZ2VzdGlvbiBhcyBPYmplY3QpLmpvaW4oJ18nKSkgPz8gJycpLFxyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgfSkgPz8gW11cclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ29uZmlndXJhIG8gZGVib3VuY2UgZSBzd2l0Y2hNYXAgcGFyYSBsYXp5IGxvYWRpbmcsIHJlc29sdmVuZG8gcmFjZSBjb25kaXRpb25zLlxyXG4gICAgICogRXN0ZSBtw6l0b2RvIHV0aWxpemEgc3dpdGNoTWFwIHBhcmEgY2FuY2VsYXIgcmVxdWlzacOnw7VlcyBhbnRlcmlvcmVzIGF1dG9tYXRpY2FtZW50ZVxyXG4gICAgICogcXVhbmRvIHVtYSBub3ZhIGJ1c2NhIMOpIGluaWNpYWRhLCBldml0YW5kbyBxdWUgcmVzdWx0YWRvcyBhbnRpZ29zIHNvYnJlc2NyZXZhbVxyXG4gICAgICogcmVzdWx0YWRvcyBtYWlzIHJlY2VudGVzLlxyXG4gICAgICogQHByaXZhdGVcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfc2V0dXBMYXp5TG9hZERlYm91bmNlKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX2xhenlMb2FkU3ViamVjdCRcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICBkZWJvdW5jZVRpbWUodGhpcy5kZWxheSgpKSxcclxuICAgICAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXHJcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoKHF1ZXJ5KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nLnNldCh0cnVlKTtcclxuICAgICAgICAgICAgICAgICAgICAvLyBUT0RPOiBNYW50ZXIgZmVjaGFkbyBvIGRyb3Bkb3duZCBhdMOpIGEgYnVzY2EgZXN0aXZlciBjb25jbHXDrWRhXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlPFRbXT4oKHN1YnNjcmliZXIpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdGltZW91dElkID0gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXN1YnNjcmliZXIuY2xvc2VkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vic2NyaWJlci5lcnJvcihuZXcgRXJyb3IoJ0xhenkgbG9hZCB0aW1lb3V0JykpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCAzMDAwMCk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZXNwb25zZUNhbGxiYWNrID0gKGRhdGE6IFRbXSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXRJZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXN1YnNjcmliZXIuY2xvc2VkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vic2NyaWJlci5uZXh0KGRhdGEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnNjcmliZXIuY29tcGxldGUoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubGF6eUxvYWQuZW1pdCh7IHF1ZXJ5LCByZXNwb25zZTogcmVzcG9uc2VDYWxsYmFjayB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuX2Rlc3Ryb3lSZWYpLFxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgICAgICAgbmV4dDogKGRhdGE6IFRbXSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZy5zZXQoZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIFRPRE86IEFicmlyIG8gZHJvcGRvd24gc29tZW50ZSBhcXVpXHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgd3JhcHBlZFN1Z2dlc3Rpb25zID0gdGhpcy5fYWRkSWRUb1N1Z2dlc3Rpb25zKGRhdGEpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyZWRTdWdnZXN0aW9ucy5zZXQod3JhcHBlZFN1Z2dlc3Rpb25zKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3dFbXB0eU1lc3NhZ2Uuc2V0KHdyYXBwZWRTdWdnZXN0aW9ucy5sZW5ndGggPT09IDApO1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcuc2V0KGZhbHNlKTtcclxuICAgICAgICAgICAgICAgICAgICAvLyBUT0RPOiBBYnJpciBvIGRyb3Bkb3duIHNvbWVudGUgYXF1aVxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0xhenkgbG9hZCBlcnJvcjonLCBlcnJvcik7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJlZFN1Z2dlc3Rpb25zLnNldChbXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG93RW1wdHlNZXNzYWdlLnNldCh0cnVlKTtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ29uZmlndXJhIG8gZGVib3VuY2UgcGFyYSBvIGlucHV0IGRvIGF1dG9jb21wbGV0ZS5cclxuICAgICAqIEVzdGUgbcOpdG9kbyB1dGlsaXphIHVtIFN1YmplY3QgcGFyYSBlc2N1dGFyIGFzIG11ZGFuw6dhcyBubyB2YWxvciBkbyBpbnB1dCxcclxuICAgICAqIGFwbGljYW5kbyB1bSBkZWJvdW5jZSBjb20gbyB0ZW1wbyBkZWZpbmlkbyBwb3IgYHRoaXMuZGVsYXkoKWAuIFF1YW5kbyB1bSBub3ZvIHZhbG9yIMOpIGVtaXRpZG86XHJcbiAgICAgKiAtIFNlIGhvdXZlciB2YWxvciwgZmlsdHJhIGFzIHN1Z2VzdMO1ZXMgY29tIGJhc2Ugbm8gdGV4dG8gZGlnaXRhZG8gZSBhdHVhbGl6YSBhIGxpc3RhIGRlIHN1Z2VzdMO1ZXMgZmlsdHJhZGFzLlxyXG4gICAgICogLSBTZSBuw6NvIGhvdXZlciB2YWxvciBlIG8gZHJvcGRvd24gZXN0aXZlciBhdGl2bywgcmVzZXRhIGFzIHN1Z2VzdMO1ZXMgZmlsdHJhZGFzLlxyXG4gICAgICogLSBDYXNvIGNvbnRyw6FyaW8sIGxpbXBhIGEgbGlzdGEgZGUgc3VnZXN0w7VlcyBmaWx0cmFkYXMuXHJcbiAgICAgKiBUYW1iw6ltIGF0dWFsaXphIG8gZXN0YWRvIGRhIG1lbnNhZ2VtIGRlIGxpc3RhIHZhemlhIGUsIHNlIGEgc2VsZcOnw6NvIGZvciBsaXZyZSAoYGZvcmNlU2VsZWN0aW9uYCBmb3IgZmFsc28pLFxyXG4gICAgICogcHJvcGFnYSBhIG11ZGFuw6dhIGRlIHZhbG9yIHBhcmEgbyBmb3JtdWzDoXJpby5cclxuICAgICAqIEBwcml2YXRlXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX3NldHVwSW5wdXREZWJvdW5jZSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9pbnB1dFN1YmplY3QkXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgZGVib3VuY2VUaW1lKHRoaXMuZGVsYXkoKSksXHJcbiAgICAgICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxyXG4gICAgICAgICAgICAgICAgZmlsdGVyKCh2YWx1ZSkgPT4gdmFsdWUubGVuZ3RoID49IHRoaXMubWluTGVuZ3RoVG9TZWFyY2goKSB8fCB2YWx1ZS5sZW5ndGggPT09IDApLFxyXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuX2Rlc3Ryb3lSZWYpLFxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAodmFsdWUpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbHRlcmVkU3VnZ2VzdGlvbnMuc2V0KFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmludGVybmFsU3VnZ2VzdGlvbigpLmZpbHRlcigoeyBkYXRhIH0pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxhYmVsID0gU3RyaW5nKHRoaXMuc3VnZ2VzdGlvbkxhYmVsKCkgPyBkYXRhW3RoaXMuc3VnZ2VzdGlvbkxhYmVsKCkhXSA6IGRhdGEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxhYmVsLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModmFsdWUudG9Mb3dlckNhc2UoKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG93RW1wdHlNZXNzYWdlLnNldCh0aGlzLmZpbHRlcmVkU3VnZ2VzdGlvbnMoKS5sZW5ndGggPT09IDApO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmRyb3Bkb3duKCkpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlc2V0RmlsdGVyZWRTdWdnZXN0aW9ucygpO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbHRlcmVkU3VnZ2VzdGlvbnMuc2V0KFtdKTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZm9yY2VTZWxlY3Rpb24oKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX29uQ2hhbmdlPy4odmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFZhbGlkYSBhcyBlbnRyYWRhcyBkbyBjb21wb25lbnRlIGRlIGF1dG9jb21wbGV0ZS5cclxuICAgICAqIEBwcml2YXRlXHJcbiAgICAgKiBAdGhyb3dzIHtFcnJvcn0gU2UgYXMgc3VnZXN0w7VlcyBmb3JlbSBvYmpldG9zIGUgYHN1Z2dlc3Rpb25MYWJlbGAgbsOjbyBmb3IgZm9ybmVjaWRvLlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF92YWxpZGF0ZUlucHV0cygpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBzdWdnZXN0aW9ucyA9IHRoaXMuc3VnZ2VzdGlvbnMoKTtcclxuXHJcbiAgICAgICAgaWYgKCFzdWdnZXN0aW9ucy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgaGFzT2JqZWN0U3VnZ2VzdGlvbnMgPSBzdWdnZXN0aW9ucy5zb21lKFxyXG4gICAgICAgICAgICAoc3VnZ2VzdGlvbikgPT4gdHlwZW9mIHN1Z2dlc3Rpb24gPT09ICdvYmplY3QnICYmIHN1Z2dlc3Rpb24gIT09IG51bGwsXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgaWYgKGhhc09iamVjdFN1Z2dlc3Rpb25zKSB7XHJcbiAgICAgICAgICAgIGlmICghdGhpcy5zdWdnZXN0aW9uTGFiZWwoKSkge1xyXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgc3VnZ2VzdGlvbkxhYmVsIGlucHV0IG11c3QgYmUgcHJvdmlkZWQgd2hlbiBzdWdnZXN0aW9ucyBhcmUgb2JqZWN0cy4nKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iLCI8ZGl2XG4gICAgI2NvbnRhaW5lckRpdlxuICAgIGNka092ZXJsYXlPcmlnaW5cbiAgICAjdHJpZ2dlcj1cImNka092ZXJsYXlPcmlnaW5cIlxuICAgIGNsYXNzPVwiZmxleCBoLVszNXB4XSB3LWZ1bGwgaXRlbXMtY2VudGVyIG92ZXJmbG93LWhpZGRlbiByb3VuZGVkLVs0cHhdIGJvcmRlciBmb2N1cy13aXRoaW46Ym9yZGVyLTIgZm9jdXMtd2l0aGluOmJvcmRlci1wcmltYXJ5IGhvdmVyOmJnLWdyYXlzY2FsZS0xMFwiXG4gICAgW2NsYXNzXT1cImlucHV0Q2xhc3MoKVwiXG4gICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAncG9pbnRlci1ldmVudHMtbm9uZSBib3JkZXItZ3JheXNjYWxlLTIwIGJnLWdyYXlzY2FsZS01IHRleHQtZ3JheXNjYWxlLTMwJzogZGlzYWJsZWQoKSxcbiAgICAgICAgJ3BvaW50ZXItZXZlbnRzLWF1dG8gYm9yZGVyLWdyYXlzY2FsZS0zMCBiZy1ncmF5c2NhbGUtMCB0ZXh0LWdyYXlzY2FsZS05MCc6ICFkaXNhYmxlZCgpLFxuICAgICAgICAnYm9yZGVyLWNyaXRpY2FsaXR5LXJlZCc6IGludmFsaWQoKSxcbiAgICB9XCJcbj5cbiAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiZmxleCBmbGV4LWdyb3cgZ2FwLTIgcHgtMlwiXG4gICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICdib3JkZXItcic6IGRyb3Bkb3duKCksXG4gICAgICAgICAgICAnYm9yZGVyLWdyYXlzY2FsZS0yMCc6IGRyb3Bkb3duKCkgJiYgZGlzYWJsZWQoKSxcbiAgICAgICAgICAgICdib3JkZXItZ3JheXNjYWxlLTMwIGZvY3VzLXdpdGhpbjpib3JkZXItci0yIGZvY3VzLXdpdGhpbjpib3JkZXItci1wcmltYXJ5JzogZHJvcGRvd24oKSAmJiAhZGlzYWJsZWQoKSxcbiAgICAgICAgICAgICdiZy1ncmF5c2NhbGUtNSc6IGRpc2FibGVkKCksXG4gICAgICAgICAgICAnYmctZ3JheXNjYWxlLTAnOiAhZGlzYWJsZWQoKSxcbiAgICAgICAgfVwiXG4gICAgPlxuICAgICAgICBAaWYgKG11bHRpcGxlKCkgJiYgdmFsdWVzKCkubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC13cmFwIGl0ZW1zLWNlbnRlciBnYXAtMlwiPlxuICAgICAgICAgICAgICAgIEBmb3IgKHN1Z2dlc3Rpb24gb2YgdmFsdWVzKCk7IHRyYWNrIHN1Z2dlc3Rpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgPHMtYXV0b2NvbXBsZXRlLWNoaXBcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzdWdnZXN0aW9uXT1cInN1Z2dlc3Rpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3N1Z2dlc3Rpb25MYWJlbF09XCJzdWdnZXN0aW9uTGFiZWwoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoc3VnZ2VzdGlvblJlbW92ZWQpPVwicmVtb3ZlU3VnZ2VzdGlvbigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvcy1hdXRvY29tcGxldGUtY2hpcD5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICNpbnB1dEVsXG4gICAgICAgICAgICBjbGFzcz1cIm1pbi1oLVszNXB4XSBncm93IG91dGxpbmUtbm9uZVwiXG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXIoKSA/PyAncGxhdGZvcm0uYW5ndWxhcl9jb21wb25lbnRzLnR5cGVfdG9fc2VhcmNoJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICBbcmVhZE9ubHldPVwicmVhZG9ubHkoKVwiXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cImlucHV0VmFsdWVcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1kaXNhYmxlZF09XCJkaXNhYmxlZCgpXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtYXV0b2NvbXBsZXRlXT1cIm11bHRpcGxlKCkgPyAnbGlzdCcgOiAnYm90aCdcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1hY3RpdmVkZXNjZW5kYW50XT1cImZvY3VzZWRJbmRleCgpID49IDAgPyBmaWx0ZXJlZFN1Z2dlc3Rpb25zKClbZm9jdXNlZEluZGV4KCldLmlkIDogbnVsbFwiXG4gICAgICAgICAgICByb2xlPVwic2VhcmNoYm94XCJcbiAgICAgICAgICAgIChpbnB1dCk9XCJvbklucHV0KCRldmVudClcIlxuICAgICAgICAgICAgKGtleWRvd24pPVwib25LZXlEb3duKCRldmVudClcIlxuICAgICAgICAgICAgKGtleVVwKT1cIm9uS2V5VXAoJGV2ZW50KVwiXG4gICAgICAgICAgICAoYmx1cik9XCJvbklucHV0Qmx1cigkZXZlbnQpXCJcbiAgICAgICAgICAgIChmb2N1cyk9XCJvbklucHV0Rm9jdXMoJGV2ZW50KVwiXG4gICAgICAgIC8+XG5cbiAgICAgICAgQGlmIChsb2FkaW5nKCkpIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgICAgICAgICAgIDxzdmdcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIyMFwiXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjIwXCJcbiAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyMCAyMFwiXG4gICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFuaW1hdGUtc3BpblwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlXG4gICAgICAgICAgICAgICAgICAgICAgICBjeD1cIjEwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGN5PVwiMTBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgcj1cIjlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzQyOGJjYVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1kYXNoYXJyYXk9XCI1Ni41XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1kYXNob2Zmc2V0PVwiMTBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICBAaWYgKHZhbHVlKCkgJiYgIXRoaXMuZGlzYWJsZWQoKSkge1xuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJweC0yXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNsZWFyKClcIlxuICAgICAgICAgICAgICAgICAgICB0YWJpbmRleD1cIi0xXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFyIGZhLXRpbWVzIHRleHQtZ3JheXNjYWxlLTYwXCI+PC9pPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgPC9kaXY+XG5cbiAgICBAaWYgKGRyb3Bkb3duKCkpIHtcbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgY2xhc3M9XCJmbGV4IGgtZnVsbCB3LVszNXB4XSBmbGV4LXNocmluay0wIGZsZXgtZ3Jvdy0wIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBob3ZlcjpiZy1ncmF5c2NhbGUtMTBcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZURyb3Bkb3duKClcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZmFzIHRleHQtZ3JheXNjYWxlLTkwXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuZmEtY2FyZXQtZG93bl09XCIhaXNPcGVuKClcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5mYS1jYXJldC11cF09XCJpc09wZW4oKVwiXG4gICAgICAgICAgICA+PC9pPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICB9XG48L2Rpdj5cblxuQGlmIChzaG93RW1wdHlNZXNzYWdlKCkgfHwgKGZpbHRlcmVkU3VnZ2VzdGlvbnMoKS5sZW5ndGggPiAwICYmICFyZWFkb25seSgpKSkge1xuICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAjZHJvcGRvd25UZW1wbGF0ZVxuICAgICAgICBjZGtDb25uZWN0ZWRPdmVybGF5XG4gICAgICAgIFtjZGtDb25uZWN0ZWRPdmVybGF5T3JpZ2luXT1cInRyaWdnZXJcIlxuICAgICAgICBbY2RrQ29ubmVjdGVkT3ZlcmxheU9wZW5dPVwiaXNPcGVuKClcIlxuICAgICAgICBbY2RrQ29ubmVjdGVkT3ZlcmxheUhhc0JhY2tkcm9wXT1cInRydWVcIlxuICAgICAgICAoYmFja2Ryb3BDbGljayk9XCJpc09wZW4uc2V0KGZhbHNlKVwiXG4gICAgICAgIGNka0Nvbm5lY3RlZE92ZXJsYXlCYWNrZHJvcENsYXNzPVwiY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BcIlxuICAgICAgICAoZGV0YWNoKT1cImlzT3Blbi5zZXQoZmFsc2UpXCJcbiAgICA+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIFtpZF09XCInZHJvcGRvd24tY29udGFpbmVyLScgKyBjb21wb25lbnRJZFwiXG4gICAgICAgICAgICBjbGFzcz1cIm10LTAuNSByb3VuZGVkLVs0cHhdIGJnLWdyYXlzY2FsZS0wIHB5LTEgc2hhZG93XCJcbiAgICAgICAgICAgIFtzdHlsZS53aWR0aC5weF09XCJjb250YWluZXJEaXYub2Zmc2V0V2lkdGhcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8dWxcbiAgICAgICAgICAgICAgICBjbGFzcz1cIm1heC1oLTUyIG92ZXJmbG93LWF1dG9cIlxuICAgICAgICAgICAgICAgIHJvbGU9XCJsaXN0Ym94XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8IS0tIFZpcnR1YWwgc2Nyb2xsIC0tPlxuICAgICAgICAgICAgICAgIEBpZiAodmlydHVhbFNjcm9sbCgpICYmIGZpbHRlcmVkU3VnZ2VzdGlvbnMoKS5sZW5ndGggPiAxMCkge1xuICAgICAgICAgICAgICAgICAgICA8Y2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0XG4gICAgICAgICAgICAgICAgICAgICAgICBbaXRlbVNpemVdPVwidmlydHVhbFNjcm9sbEl0ZW1TaXplKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJoLTUyIG92ZXJmbG93LWF1dG9cIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKmNka1ZpcnR1YWxGb3I9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHN1Z2dlc3Rpb24gb2YgZW5yaWNoZWRGaWx0ZXJlZFN1Z2dlc3Rpb25zKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpID0gJGluZGV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFja0J5OiB0cmFja0J5SWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwic3VnZ2VzdGlvbkl0ZW1UZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IHN1Z2dlc3Rpb24sIGkgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvY2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0PlxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIDwhLS0gTm9ybWFsIGxpc3QgLS0+XG4gICAgICAgICAgICAgICAgQGlmICghdmlydHVhbFNjcm9sbCgpIHx8IGZpbHRlcmVkU3VnZ2VzdGlvbnMoKS5sZW5ndGggPD0gMTApIHtcbiAgICAgICAgICAgICAgICAgICAgQGZvciAoc3VnZ2VzdGlvbiBvZiBlbnJpY2hlZEZpbHRlcmVkU3VnZ2VzdGlvbnMoKTsgdHJhY2sgc3VnZ2VzdGlvbi5pZDsgbGV0IGkgPSAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJzdWdnZXN0aW9uSXRlbVRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBzdWdnZXN0aW9uLCBpIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgQGlmIChzaG93RW1wdHlNZXNzYWdlKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLTMgdGV4dC1ncmF5c2NhbGUtNjBcIj57e1xuICAgICAgICAgICAgICAgICAgICAgICAgZW1wdHlNZXNzYWdlKCkgPz8gJ3BsYXRmb3JtLmFuZ3VsYXJfY29tcG9uZW50cy5ub19yZWNvcmRzX2ZvdW5kJyB8IHRyYW5zbGF0ZVxuICAgICAgICAgICAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L3VsPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxufVxuXG48bmctdGVtcGxhdGVcbiAgICAjc3VnZ2VzdGlvbkl0ZW1UZW1wbGF0ZVxuICAgIGxldC1zdWdnZXN0aW9uPVwic3VnZ2VzdGlvblwiXG4gICAgbGV0LWk9XCJpXCJcbj5cbiAgICA8bGlcbiAgICAgICAgW2lkXT1cInN1Z2dlc3Rpb24uaWRcIlxuICAgICAgICBjbGFzcz1cInJvdW5kZWQteHNtYWxsIGZsZXggY3Vyc29yLXBvaW50ZXIgaXRlbXMtY2VudGVyIGdhcC0yIHB4LTMgcHktMiB0ZXh0LWdyYXlzY2FsZS03MFwiXG4gICAgICAgIFtjbGFzcy5iZy1ncmF5c2NhbGUtMTBdPVwiaSA9PT0gZm9jdXNlZEluZGV4KClcIlxuICAgICAgICBbY2xhc3MuYmctZ3JheXNjYWxlLTIwXT1cInN1Z2dlc3Rpb24uaXNTZWxlY3RlZFwiXG4gICAgICAgIFthdHRyLmFyaWEtc2VsZWN0ZWRdPVwic3VnZ2VzdGlvbi5pc1NlbGVjdGVkXCJcbiAgICAgICAgcm9sZT1cIm9wdGlvblwiXG4gICAgICAgIChjbGljayk9XCJzZWxlY3RTdWdnZXN0aW9uKHN1Z2dlc3Rpb24uZGF0YSlcIlxuICAgID5cbiAgICAgICAgQGlmIChjaGVja21hcmsoKSAmJiBtdWx0aXBsZSgpICYmIHN1Z2dlc3Rpb24uaXNTZWxlY3RlZCkge1xuICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXIgZmEtY2hlY2tcIj48L2k+XG4gICAgICAgIH1cbiAgICAgICAge3sgc3VnZ2VzdGlvbkxhYmVsKCkgPyBzdWdnZXN0aW9uLmRhdGFbc3VnZ2VzdGlvbkxhYmVsKCkhXSA6IHN1Z2dlc3Rpb24uZGF0YSB9fVxuICAgIDwvbGk+XG48L25nLXRlbXBsYXRlPlxuXG4iXX0=
@@ -1,8 +1,9 @@
1
1
  import { Component, EventEmitter, HostListener, input, Input, Output } from '@angular/core';
2
+ import { NgClass } from '@angular/common';
3
+ import { InfoSignModule } from '@seniorsistemas/angular-components/info-sign';
4
+ import { TooltipDirective } from '@seniorsistemas/angular-components/tooltip';
2
5
  import * as i0 from "@angular/core";
3
- import * as i1 from "@angular/common";
4
- import * as i2 from "@seniorsistemas/angular-components/info-sign";
5
- import * as i3 from "@seniorsistemas/angular-components/tooltip";
6
+ import * as i1 from "@seniorsistemas/angular-components/info-sign";
6
7
  /**
7
8
  * @description Componente de badge (etiqueta) para exibir rótulos coloridos e clicáveis,
8
9
  * com suporte a ícones, variantes visuais (pill, tag) e estado selecionável.
@@ -38,11 +39,11 @@ export class BadgeComponent {
38
39
  }
39
40
  enableTruncateText = input(false);
40
41
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: BadgeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
41
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: BadgeComponent, selector: "s-badge", inputs: { type: { classPropertyName: "type", publicName: "type", isSignal: false, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: false, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: false, isRequired: false, transformFunction: null }, text: { classPropertyName: "text", publicName: "text", isSignal: false, isRequired: false, transformFunction: null }, selectable: { classPropertyName: "selectable", publicName: "selectable", isSignal: false, isRequired: false, transformFunction: null }, iconClass: { classPropertyName: "iconClass", publicName: "iconClass", isSignal: false, isRequired: false, transformFunction: null }, iconPosition: { classPropertyName: "iconPosition", publicName: "iconPosition", isSignal: false, isRequired: false, transformFunction: null }, infoSign: { classPropertyName: "infoSign", publicName: "infoSign", isSignal: false, isRequired: false, transformFunction: null }, enableTruncateText: { classPropertyName: "enableTruncateText", publicName: "enableTruncateText", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selected: "selected" }, host: { listeners: { "click": "onClick()" } }, ngImport: i0, template: "<span\n class=\"badge\"\n [ngClass]=\"{\n 'badge--pill': type === 'pill',\n 'badge--chip': type === 'chip',\n 'badge--red': color === 'red',\n 'badge--orange': color === 'orange',\n 'badge--yellow': color === 'yellow',\n 'badge--blue': color === 'blue',\n 'badge--green': color === 'green',\n 'badge--gray': color === 'gray',\n 'badge--selectable': selectable,\n }\"\n>\n @if (infoSign) {\n <span *sInfoSign=\"infoSign.text; displayTime: infoSign.displayTime ?? 0\"></span>\n }\n @if (iconClass) {\n <span\n [class]=\"'badge-icon ' + iconClass\"\n [ngClass]=\"{\n 'badge-icon--left': iconPosition === 'left' && text,\n 'badge-icon--right': iconPosition === 'right' && text,\n }\"\n >\n </span>\n }\n @if (title) {\n <span class=\"badge-title\">{{ title }}:</span>\n }\n @if (text) {\n <span\n class=\"badge-text\"\n [class.badge-text-truncated]=\"enableTruncateText()\"\n [sTooltip]=\"text\"\n [visible]=\"enableTruncateText()\"\n [checkTruncatedText]=\"enableTruncateText()\"\n >{{text}}</span>\n }\n</span>\n\n", styles: ["::ng-deep .info-sign .info-sign__icon{padding:0!important}.badge{align-items:center;max-width:100%;display:inline-flex;gap:.5rem;min-height:1.25rem;justify-content:center;min-width:20px;padding:0 .5rem}.badge--chip{border-radius:4px}.badge--pill{border-radius:12px}.badge .badge-title{color:#212533;font-family:Open Sans,sans-serif;font-size:12px;font-weight:700;line-height:150%;margin-right:.125rem}.badge-text{color:#212533;font-family:Open Sans,sans-serif;font-size:.75rem;font-weight:400;line-height:150%}.badge-text-truncated{text-overflow:ellipsis;overflow:hidden;line-clamp:1;-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box}.badge .badge-icon{color:#212533;font-size:10px}.badge .badge-icon--right{order:2}.badge--red{background-color:#fcd2d2;border:1px solid #c13018}.badge--orange{background-color:#fce3ba;border:1px solid #f8931f}.badge--yellow{background-color:#fef4e3;border:1px solid #fcbf10}.badge--blue{background-color:#d5e8ec;border:1px solid #428bca}.badge--green{background-color:#e6ffb3;border:1px solid #0c9348}.badge--gray{background-color:#e5eaea;border:1px solid #697882}.badge--selectable{cursor:pointer;-webkit-user-select:none;user-select:none}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.InfoSignDirective, selector: "[sInfoSign]", inputs: ["sInfoSign", "sInfoSignDisplayTime", "sInfoSignFocusedInputRef", "sInfoSignUseFocusedInputRef"] }, { kind: "directive", type: i3.TooltipDirective, selector: "[sTooltip]", inputs: ["sTooltip", "tooltipPosition", "showDelay", "displayTime", "tooltipEvent", "escape", "visible", "mobileBehavior", "focusedInputRef", "checkTruncatedText"] }] });
42
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: BadgeComponent, isStandalone: true, selector: "s-badge", inputs: { type: { classPropertyName: "type", publicName: "type", isSignal: false, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: false, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: false, isRequired: false, transformFunction: null }, text: { classPropertyName: "text", publicName: "text", isSignal: false, isRequired: false, transformFunction: null }, selectable: { classPropertyName: "selectable", publicName: "selectable", isSignal: false, isRequired: false, transformFunction: null }, iconClass: { classPropertyName: "iconClass", publicName: "iconClass", isSignal: false, isRequired: false, transformFunction: null }, iconPosition: { classPropertyName: "iconPosition", publicName: "iconPosition", isSignal: false, isRequired: false, transformFunction: null }, infoSign: { classPropertyName: "infoSign", publicName: "infoSign", isSignal: false, isRequired: false, transformFunction: null }, enableTruncateText: { classPropertyName: "enableTruncateText", publicName: "enableTruncateText", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selected: "selected" }, host: { listeners: { "click": "onClick()" } }, ngImport: i0, template: "<span\n class=\"badge inline-flex max-w-full min-h-5 min-w-5 items-center justify-center gap-2 px-2 overflow-hidden border\"\n [ngClass]=\"{\n 'badge--pill': type === 'pill',\n 'badge--chip': type === 'chip',\n 'badge--red': color === 'red',\n 'badge--orange': color === 'orange',\n 'badge--yellow': color === 'yellow',\n 'badge--blue': color === 'blue',\n 'badge--green': color === 'green',\n 'badge--gray': color === 'gray',\n 'badge--selectable': selectable,\n 'rounded-[10px]': type === 'pill',\n 'rounded-medium': type === 'chip',\n 'bg-sunset-orange-100 border-criticality-red': color === 'red',\n 'bg-buttercup-100 border-criticality-orange': color === 'orange',\n 'bg-buttercup-50 border-criticality-yellow': color === 'yellow',\n 'bg-hippie-blue-100 border-criticality-blue': color === 'blue',\n 'bg-lime-100 border-criticality-green': color === 'green',\n 'bg-grayscale-10 border-grayscale-60': color === 'gray',\n 'cursor-pointer select-none': selectable,\n }\"\n>\n @if (infoSign) {\n <span *sInfoSign=\"infoSign.text; displayTime: infoSign.displayTime ?? 0\"></span>\n }\n @if (iconClass) {\n <span\n [class]=\"'badge-icon inline-flex items-center justify-center text-[10px] text-grayscale-90 ' + iconClass\"\n [ngClass]=\"{\n 'badge-icon--left': iconPosition === 'left' && text,\n 'badge-icon--right': iconPosition === 'right' && text,\n 'order-2': iconPosition === 'right' && text,\n }\"\n >\n </span>\n }\n @if (title) {\n <span class=\"badge-title font-open-sans mr-0.5 text-xs font-bold leading-[150%] text-grayscale-90\">{{ title }}:</span>\n }\n @if (text) {\n <span\n class=\"badge-text font-open-sans text-xs font-normal leading-[150%] text-grayscale-90\"\n [class.badge-text-truncated]=\"enableTruncateText()\"\n [class.line-clamp-1]=\"enableTruncateText()\"\n [sTooltip]=\"text\"\n [visible]=\"enableTruncateText()\"\n [checkTruncatedText]=\"enableTruncateText()\"\n >{{text}}</span>\n }\n</span>\n\n", styles: ["::ng-deep .info-sign .info-sign__icon{padding:0!important}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: InfoSignModule }, { kind: "directive", type: i1.InfoSignDirective, selector: "[sInfoSign]", inputs: ["sInfoSign", "sInfoSignDisplayTime", "sInfoSignFocusedInputRef", "sInfoSignUseFocusedInputRef"] }, { kind: "directive", type: TooltipDirective, selector: "[sTooltip]", inputs: ["sTooltip", "tooltipPosition", "showDelay", "displayTime", "tooltipEvent", "escape", "visible", "mobileBehavior", "focusedInputRef", "checkTruncatedText"] }] });
42
43
  }
43
44
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: BadgeComponent, decorators: [{
44
45
  type: Component,
45
- args: [{ selector: 's-badge', template: "<span\n class=\"badge\"\n [ngClass]=\"{\n 'badge--pill': type === 'pill',\n 'badge--chip': type === 'chip',\n 'badge--red': color === 'red',\n 'badge--orange': color === 'orange',\n 'badge--yellow': color === 'yellow',\n 'badge--blue': color === 'blue',\n 'badge--green': color === 'green',\n 'badge--gray': color === 'gray',\n 'badge--selectable': selectable,\n }\"\n>\n @if (infoSign) {\n <span *sInfoSign=\"infoSign.text; displayTime: infoSign.displayTime ?? 0\"></span>\n }\n @if (iconClass) {\n <span\n [class]=\"'badge-icon ' + iconClass\"\n [ngClass]=\"{\n 'badge-icon--left': iconPosition === 'left' && text,\n 'badge-icon--right': iconPosition === 'right' && text,\n }\"\n >\n </span>\n }\n @if (title) {\n <span class=\"badge-title\">{{ title }}:</span>\n }\n @if (text) {\n <span\n class=\"badge-text\"\n [class.badge-text-truncated]=\"enableTruncateText()\"\n [sTooltip]=\"text\"\n [visible]=\"enableTruncateText()\"\n [checkTruncatedText]=\"enableTruncateText()\"\n >{{text}}</span>\n }\n</span>\n\n", styles: ["::ng-deep .info-sign .info-sign__icon{padding:0!important}.badge{align-items:center;max-width:100%;display:inline-flex;gap:.5rem;min-height:1.25rem;justify-content:center;min-width:20px;padding:0 .5rem}.badge--chip{border-radius:4px}.badge--pill{border-radius:12px}.badge .badge-title{color:#212533;font-family:Open Sans,sans-serif;font-size:12px;font-weight:700;line-height:150%;margin-right:.125rem}.badge-text{color:#212533;font-family:Open Sans,sans-serif;font-size:.75rem;font-weight:400;line-height:150%}.badge-text-truncated{text-overflow:ellipsis;overflow:hidden;line-clamp:1;-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box}.badge .badge-icon{color:#212533;font-size:10px}.badge .badge-icon--right{order:2}.badge--red{background-color:#fcd2d2;border:1px solid #c13018}.badge--orange{background-color:#fce3ba;border:1px solid #f8931f}.badge--yellow{background-color:#fef4e3;border:1px solid #fcbf10}.badge--blue{background-color:#d5e8ec;border:1px solid #428bca}.badge--green{background-color:#e6ffb3;border:1px solid #0c9348}.badge--gray{background-color:#e5eaea;border:1px solid #697882}.badge--selectable{cursor:pointer;-webkit-user-select:none;user-select:none}\n"] }]
46
+ args: [{ selector: 's-badge', standalone: true, imports: [NgClass, InfoSignModule, TooltipDirective], template: "<span\n class=\"badge inline-flex max-w-full min-h-5 min-w-5 items-center justify-center gap-2 px-2 overflow-hidden border\"\n [ngClass]=\"{\n 'badge--pill': type === 'pill',\n 'badge--chip': type === 'chip',\n 'badge--red': color === 'red',\n 'badge--orange': color === 'orange',\n 'badge--yellow': color === 'yellow',\n 'badge--blue': color === 'blue',\n 'badge--green': color === 'green',\n 'badge--gray': color === 'gray',\n 'badge--selectable': selectable,\n 'rounded-[10px]': type === 'pill',\n 'rounded-medium': type === 'chip',\n 'bg-sunset-orange-100 border-criticality-red': color === 'red',\n 'bg-buttercup-100 border-criticality-orange': color === 'orange',\n 'bg-buttercup-50 border-criticality-yellow': color === 'yellow',\n 'bg-hippie-blue-100 border-criticality-blue': color === 'blue',\n 'bg-lime-100 border-criticality-green': color === 'green',\n 'bg-grayscale-10 border-grayscale-60': color === 'gray',\n 'cursor-pointer select-none': selectable,\n }\"\n>\n @if (infoSign) {\n <span *sInfoSign=\"infoSign.text; displayTime: infoSign.displayTime ?? 0\"></span>\n }\n @if (iconClass) {\n <span\n [class]=\"'badge-icon inline-flex items-center justify-center text-[10px] text-grayscale-90 ' + iconClass\"\n [ngClass]=\"{\n 'badge-icon--left': iconPosition === 'left' && text,\n 'badge-icon--right': iconPosition === 'right' && text,\n 'order-2': iconPosition === 'right' && text,\n }\"\n >\n </span>\n }\n @if (title) {\n <span class=\"badge-title font-open-sans mr-0.5 text-xs font-bold leading-[150%] text-grayscale-90\">{{ title }}:</span>\n }\n @if (text) {\n <span\n class=\"badge-text font-open-sans text-xs font-normal leading-[150%] text-grayscale-90\"\n [class.badge-text-truncated]=\"enableTruncateText()\"\n [class.line-clamp-1]=\"enableTruncateText()\"\n [sTooltip]=\"text\"\n [visible]=\"enableTruncateText()\"\n [checkTruncatedText]=\"enableTruncateText()\"\n >{{text}}</span>\n }\n</span>\n\n", styles: ["::ng-deep .info-sign .info-sign__icon{padding:0!important}\n"] }]
46
47
  }], propDecorators: { type: [{
47
48
  type: Input
48
49
  }], color: [{
@@ -65,4 +66,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
65
66
  type: HostListener,
66
67
  args: ['click']
67
68
  }] } });
68
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFkZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL2JhZGdlL3NyYy9saWIvYmFkZ2UvYmFkZ2UuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL2JhZGdlL3NyYy9saWIvYmFkZ2UvYmFkZ2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7OztBQUs1Rjs7Ozs7Ozs7OztHQVVHO0FBTUgsTUFBTSxPQUFPLGNBQWM7SUFDdkIsNkRBQTZEO0lBRXRELElBQUksR0FBZ0IsTUFBTSxDQUFDO0lBRWxDLGlEQUFpRDtJQUUxQyxLQUFLLEdBQWlCLE1BQU0sQ0FBQztJQUVwQyxxREFBcUQ7SUFFOUMsS0FBSyxDQUFVO0lBRXRCLDREQUE0RDtJQUVyRCxJQUFJLENBQVU7SUFFckIsd0dBQXdHO0lBRWpHLFVBQVUsR0FBRyxLQUFLLENBQUM7SUFFMUIsZ0ZBQWdGO0lBRXpFLFNBQVMsQ0FBVTtJQUUxQix5RUFBeUU7SUFFbEUsWUFBWSxHQUFzQixNQUFNLENBQUM7SUFFaEQsdUdBQXVHO0lBQzlGLFFBQVEsQ0FBMEM7SUFFM0QsMkVBQTJFO0lBRXBFLFFBQVEsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO0lBR3RDLE9BQU87UUFDVixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVELGtCQUFrQixHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQzt3R0F6Q3pCLGNBQWM7NEZBQWQsY0FBYyx1eUNDckIzQiw2dkNBeUNBOzs0RkRwQmEsY0FBYztrQkFMMUIsU0FBUzsrQkFDSSxTQUFTOzhCQU9aLElBQUk7c0JBRFYsS0FBSztnQkFLQyxLQUFLO3NCQURYLEtBQUs7Z0JBS0MsS0FBSztzQkFEWCxLQUFLO2dCQUtDLElBQUk7c0JBRFYsS0FBSztnQkFLQyxVQUFVO3NCQURoQixLQUFLO2dCQUtDLFNBQVM7c0JBRGYsS0FBSztnQkFLQyxZQUFZO3NCQURsQixLQUFLO2dCQUlHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBSUMsUUFBUTtzQkFEZCxNQUFNO2dCQUlBLE9BQU87c0JBRGIsWUFBWTt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEhvc3RMaXN0ZW5lciwgaW5wdXQsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQmFkZ2VDb2xvcnMgfSBmcm9tICcuL3R5cGVzL2JhZGdlLWNvbG9ycyc7XG5pbXBvcnQgeyBCYWRnZVR5cGVzIH0gZnJvbSAnLi90eXBlcy9iYWRnZS10eXBlcyc7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIENvbXBvbmVudGUgZGUgYmFkZ2UgKGV0aXF1ZXRhKSBwYXJhIGV4aWJpciByw7N0dWxvcyBjb2xvcmlkb3MgZSBjbGljw6F2ZWlzLFxuICogY29tIHN1cG9ydGUgYSDDrWNvbmVzLCB2YXJpYW50ZXMgdmlzdWFpcyAocGlsbCwgdGFnKSBlIGVzdGFkbyBzZWxlY2lvbsOhdmVsLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGBodG1sXG4gKiA8cy1iYWRnZSBjb2xvcj1cImJsdWVcIiB0eXBlPVwicGlsbFwiIHRleHQ9XCJBdGl2b1wiIC8+XG4gKiBgYGBcbiAqXG4gKiBAY2F0ZWdvcnkgRmVlZGJhY2tcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdzLWJhZGdlJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vYmFkZ2UuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2JhZGdlLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEJhZGdlQ29tcG9uZW50IHtcbiAgICAvKiogQGRlc2NyaXB0aW9uIFZhcmlhbnRlIHZpc3VhbCBkbyBiYWRnZS4gQGRlZmF1bHQgJ3BpbGwnICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgdHlwZT86IEJhZGdlVHlwZXMgPSAncGlsbCc7XG5cbiAgICAvKiogQGRlc2NyaXB0aW9uIENvciBkbyBiYWRnZS4gQGRlZmF1bHQgJ2JsdWUnICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgY29sb3I/OiBCYWRnZUNvbG9ycyA9ICdibHVlJztcblxuICAgIC8qKiBAZGVzY3JpcHRpb24gVGV4dG8gZGUgdMOtdHVsbyBleGliaWRvIG5vIGJhZGdlLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHRpdGxlPzogc3RyaW5nO1xuXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBUZXh0byBwcmluY2lwYWwgZXhpYmlkbyBkZW50cm8gZG8gYmFkZ2UuICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgdGV4dD86IHN0cmluZztcblxuICAgIC8qKiBAZGVzY3JpcHRpb24gSGFiaWxpdGEgbyBtb2RvIHNlbGVjaW9uw6F2ZWwsIGVtaXRpbmRvIG8gZXZlbnRvIGBzZWxlY3RlZGAgYW8gY2xpY2FyLiBAZGVmYXVsdCBmYWxzZSAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNlbGVjdGFibGUgPSBmYWxzZTtcblxuICAgIC8qKiBAZGVzY3JpcHRpb24gQ2xhc3NlIENTUyBkbyDDrWNvbmUgZXhpYmlkbyBubyBiYWRnZSAoZXguOiBgJ2ZhIGZhLWNoZWNrJ2ApLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGljb25DbGFzcz86IHN0cmluZztcblxuICAgIC8qKiBAZGVzY3JpcHRpb24gUG9zacOnw6NvIGRvIMOtY29uZSBlbSByZWxhw6fDo28gYW8gdGV4dG8uIEBkZWZhdWx0ICdsZWZ0JyAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGljb25Qb3NpdGlvbj86ICdsZWZ0JyB8ICdyaWdodCcgPSAnbGVmdCc7XG5cbiAgICAvKiogQGRlc2NyaXB0aW9uIENvbmZpZ3VyYcOnw6NvIGRvIGluZm8tc2lnbiBleGliaWRvIG5vIGJhZGdlLCBjb20gdGV4dG8gZSB0ZW1wbyBkZSBleGliacOnw6NvIG9wY2lvbmFsLiAqL1xuICAgIEBJbnB1dCgpIGluZm9TaWduITogeyB0ZXh0OiBzdHJpbmc7IGRpc3BsYXlUaW1lPzogbnVtYmVyIH07XG5cbiAgICAvKiogQGRlc2NyaXB0aW9uIEVtaXRpZG8gYW8gY2xpY2FyIG5vIGJhZGdlLCBlbnZpYW5kbyBvIHZhbG9yIGRlIGB0ZXh0YC4gKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgc2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICAgIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJylcbiAgICBwdWJsaWMgb25DbGljaygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZC5lbWl0KHRoaXMudGV4dCk7XG4gICAgfVxuXG4gICAgZW5hYmxlVHJ1bmNhdGVUZXh0ID0gaW5wdXQoZmFsc2UpO1xufVxuXG4iLCI8c3BhblxuICAgIGNsYXNzPVwiYmFkZ2VcIlxuICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgJ2JhZGdlLS1waWxsJzogdHlwZSA9PT0gJ3BpbGwnLFxuICAgICAgICAnYmFkZ2UtLWNoaXAnOiB0eXBlID09PSAnY2hpcCcsXG4gICAgICAgICdiYWRnZS0tcmVkJzogY29sb3IgPT09ICdyZWQnLFxuICAgICAgICAnYmFkZ2UtLW9yYW5nZSc6IGNvbG9yID09PSAnb3JhbmdlJyxcbiAgICAgICAgJ2JhZGdlLS15ZWxsb3cnOiBjb2xvciA9PT0gJ3llbGxvdycsXG4gICAgICAgICdiYWRnZS0tYmx1ZSc6IGNvbG9yID09PSAnYmx1ZScsXG4gICAgICAgICdiYWRnZS0tZ3JlZW4nOiBjb2xvciA9PT0gJ2dyZWVuJyxcbiAgICAgICAgJ2JhZGdlLS1ncmF5JzogY29sb3IgPT09ICdncmF5JyxcbiAgICAgICAgJ2JhZGdlLS1zZWxlY3RhYmxlJzogc2VsZWN0YWJsZSxcbiAgICB9XCJcbj5cbiAgICBAaWYgKGluZm9TaWduKSB7XG4gICAgICAgIDxzcGFuICpzSW5mb1NpZ249XCJpbmZvU2lnbi50ZXh0OyBkaXNwbGF5VGltZTogaW5mb1NpZ24uZGlzcGxheVRpbWUgPz8gMFwiPjwvc3Bhbj5cbiAgICB9XG4gICAgQGlmIChpY29uQ2xhc3MpIHtcbiAgICAgICAgPHNwYW5cbiAgICAgICAgICAgIFtjbGFzc109XCInYmFkZ2UtaWNvbiAnICsgaWNvbkNsYXNzXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAnYmFkZ2UtaWNvbi0tbGVmdCc6IGljb25Qb3NpdGlvbiA9PT0gJ2xlZnQnICYmIHRleHQsXG4gICAgICAgICAgICAgICAgJ2JhZGdlLWljb24tLXJpZ2h0JzogaWNvblBvc2l0aW9uID09PSAncmlnaHQnICYmIHRleHQsXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgPlxuICAgICAgICA8L3NwYW4+XG4gICAgfVxuICAgIEBpZiAodGl0bGUpIHtcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWRnZS10aXRsZVwiPnt7IHRpdGxlIH19Ojwvc3Bhbj5cbiAgICB9XG4gICAgQGlmICh0ZXh0KSB7XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgICBjbGFzcz1cImJhZGdlLXRleHRcIlxuICAgICAgICAgICAgW2NsYXNzLmJhZGdlLXRleHQtdHJ1bmNhdGVkXT1cImVuYWJsZVRydW5jYXRlVGV4dCgpXCJcbiAgICAgICAgICAgIFtzVG9vbHRpcF09XCJ0ZXh0XCJcbiAgICAgICAgICAgIFt2aXNpYmxlXT1cImVuYWJsZVRydW5jYXRlVGV4dCgpXCJcbiAgICAgICAgICAgIFtjaGVja1RydW5jYXRlZFRleHRdPVwiZW5hYmxlVHJ1bmNhdGVUZXh0KClcIlxuICAgICAgICA+e3t0ZXh0fX08L3NwYW4+XG4gICAgfVxuPC9zcGFuPlxuXG4iXX0=
69
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFkZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL2JhZGdlL3NyYy9saWIvYmFkZ2UvYmFkZ2UuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL2JhZGdlL3NyYy9saWIvYmFkZ2UvYmFkZ2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSTVGLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDOUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNENBQTRDLENBQUM7OztBQUU5RTs7Ozs7Ozs7OztHQVVHO0FBUUgsTUFBTSxPQUFPLGNBQWM7SUFDdkIsNkRBQTZEO0lBRXRELElBQUksR0FBZ0IsTUFBTSxDQUFDO0lBRWxDLGlEQUFpRDtJQUUxQyxLQUFLLEdBQWlCLE1BQU0sQ0FBQztJQUVwQyxxREFBcUQ7SUFFOUMsS0FBSyxDQUFVO0lBRXRCLDREQUE0RDtJQUVyRCxJQUFJLENBQVU7SUFFckIsd0dBQXdHO0lBRWpHLFVBQVUsR0FBRyxLQUFLLENBQUM7SUFFMUIsZ0ZBQWdGO0lBRXpFLFNBQVMsQ0FBVTtJQUUxQix5RUFBeUU7SUFFbEUsWUFBWSxHQUFzQixNQUFNLENBQUM7SUFFaEQsdUdBQXVHO0lBQzlGLFFBQVEsQ0FBMEM7SUFFM0QsMkVBQTJFO0lBRXBFLFFBQVEsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO0lBR3RDLE9BQU87UUFDVixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVELGtCQUFrQixHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQzt3R0F6Q3pCLGNBQWM7NEZBQWQsY0FBYywyekNDMUIzQixzdUVBb0RBLHNIRDVCYyxPQUFPLG1GQUFFLGNBQWMscU5BQUUsZ0JBQWdCOzs0RkFFMUMsY0FBYztrQkFQMUIsU0FBUzsrQkFDSSxTQUFTLGNBR1AsSUFBSSxXQUNQLENBQUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxnQkFBZ0IsQ0FBQzs4QkFLN0MsSUFBSTtzQkFEVixLQUFLO2dCQUtDLEtBQUs7c0JBRFgsS0FBSztnQkFLQyxLQUFLO3NCQURYLEtBQUs7Z0JBS0MsSUFBSTtzQkFEVixLQUFLO2dCQUtDLFVBQVU7c0JBRGhCLEtBQUs7Z0JBS0MsU0FBUztzQkFEZixLQUFLO2dCQUtDLFlBQVk7c0JBRGxCLEtBQUs7Z0JBSUcsUUFBUTtzQkFBaEIsS0FBSztnQkFJQyxRQUFRO3NCQURkLE1BQU07Z0JBSUEsT0FBTztzQkFEYixZQUFZO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLCBpbnB1dCwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgQmFkZ2VDb2xvcnMgfSBmcm9tICcuL3R5cGVzL2JhZGdlLWNvbG9ycyc7XHJcbmltcG9ydCB7IEJhZGdlVHlwZXMgfSBmcm9tICcuL3R5cGVzL2JhZGdlLXR5cGVzJztcclxuaW1wb3J0IHsgTmdDbGFzcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEluZm9TaWduTW9kdWxlIH0gZnJvbSAnQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cy9pbmZvLXNpZ24nO1xyXG5pbXBvcnQgeyBUb29sdGlwRGlyZWN0aXZlIH0gZnJvbSAnQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cy90b29sdGlwJztcclxuXHJcbi8qKlxyXG4gKiBAZGVzY3JpcHRpb24gQ29tcG9uZW50ZSBkZSBiYWRnZSAoZXRpcXVldGEpIHBhcmEgZXhpYmlyIHLDs3R1bG9zIGNvbG9yaWRvcyBlIGNsaWPDoXZlaXMsXHJcbiAqIGNvbSBzdXBvcnRlIGEgw61jb25lcywgdmFyaWFudGVzIHZpc3VhaXMgKHBpbGwsIHRhZykgZSBlc3RhZG8gc2VsZWNpb27DoXZlbC5cclxuICpcclxuICogQGV4YW1wbGVcclxuICogYGBgaHRtbFxyXG4gKiA8cy1iYWRnZSBjb2xvcj1cImJsdWVcIiB0eXBlPVwicGlsbFwiIHRleHQ9XCJBdGl2b1wiIC8+XHJcbiAqIGBgYFxyXG4gKlxyXG4gKiBAY2F0ZWdvcnkgRmVlZGJhY2tcclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdzLWJhZGdlJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9iYWRnZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9iYWRnZS5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICAgIGltcG9ydHM6IFtOZ0NsYXNzLCBJbmZvU2lnbk1vZHVsZSwgVG9vbHRpcERpcmVjdGl2ZV0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBCYWRnZUNvbXBvbmVudCB7XHJcbiAgICAvKiogQGRlc2NyaXB0aW9uIFZhcmlhbnRlIHZpc3VhbCBkbyBiYWRnZS4gQGRlZmF1bHQgJ3BpbGwnICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIHR5cGU/OiBCYWRnZVR5cGVzID0gJ3BpbGwnO1xyXG5cclxuICAgIC8qKiBAZGVzY3JpcHRpb24gQ29yIGRvIGJhZGdlLiBAZGVmYXVsdCAnYmx1ZScgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgY29sb3I/OiBCYWRnZUNvbG9ycyA9ICdibHVlJztcclxuXHJcbiAgICAvKiogQGRlc2NyaXB0aW9uIFRleHRvIGRlIHTDrXR1bG8gZXhpYmlkbyBubyBiYWRnZS4gKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgdGl0bGU/OiBzdHJpbmc7XHJcblxyXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBUZXh0byBwcmluY2lwYWwgZXhpYmlkbyBkZW50cm8gZG8gYmFkZ2UuICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIHRleHQ/OiBzdHJpbmc7XHJcblxyXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBIYWJpbGl0YSBvIG1vZG8gc2VsZWNpb27DoXZlbCwgZW1pdGluZG8gbyBldmVudG8gYHNlbGVjdGVkYCBhbyBjbGljYXIuIEBkZWZhdWx0IGZhbHNlICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIHNlbGVjdGFibGUgPSBmYWxzZTtcclxuXHJcbiAgICAvKiogQGRlc2NyaXB0aW9uIENsYXNzZSBDU1MgZG8gw61jb25lIGV4aWJpZG8gbm8gYmFkZ2UgKGV4LjogYCdmYSBmYS1jaGVjaydgKS4gKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgaWNvbkNsYXNzPzogc3RyaW5nO1xyXG5cclxuICAgIC8qKiBAZGVzY3JpcHRpb24gUG9zacOnw6NvIGRvIMOtY29uZSBlbSByZWxhw6fDo28gYW8gdGV4dG8uIEBkZWZhdWx0ICdsZWZ0JyAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBpY29uUG9zaXRpb24/OiAnbGVmdCcgfCAncmlnaHQnID0gJ2xlZnQnO1xyXG5cclxuICAgIC8qKiBAZGVzY3JpcHRpb24gQ29uZmlndXJhw6fDo28gZG8gaW5mby1zaWduIGV4aWJpZG8gbm8gYmFkZ2UsIGNvbSB0ZXh0byBlIHRlbXBvIGRlIGV4aWJpw6fDo28gb3BjaW9uYWwuICovXHJcbiAgICBASW5wdXQoKSBpbmZvU2lnbiE6IHsgdGV4dDogc3RyaW5nOyBkaXNwbGF5VGltZT86IG51bWJlciB9O1xyXG5cclxuICAgIC8qKiBAZGVzY3JpcHRpb24gRW1pdGlkbyBhbyBjbGljYXIgbm8gYmFkZ2UsIGVudmlhbmRvIG8gdmFsb3IgZGUgYHRleHRgLiAqL1xyXG4gICAgQE91dHB1dCgpXHJcbiAgICBwdWJsaWMgc2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuXHJcbiAgICBASG9zdExpc3RlbmVyKCdjbGljaycpXHJcbiAgICBwdWJsaWMgb25DbGljaygpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkLmVtaXQodGhpcy50ZXh0KTtcclxuICAgIH1cclxuXHJcbiAgICBlbmFibGVUcnVuY2F0ZVRleHQgPSBpbnB1dChmYWxzZSk7XHJcbn1cclxuIiwiPHNwYW5cbiAgICBjbGFzcz1cImJhZGdlIGlubGluZS1mbGV4IG1heC13LWZ1bGwgbWluLWgtNSBtaW4tdy01IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBnYXAtMiBweC0yIG92ZXJmbG93LWhpZGRlbiBib3JkZXJcIlxuICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgJ2JhZGdlLS1waWxsJzogdHlwZSA9PT0gJ3BpbGwnLFxuICAgICAgICAnYmFkZ2UtLWNoaXAnOiB0eXBlID09PSAnY2hpcCcsXG4gICAgICAgICdiYWRnZS0tcmVkJzogY29sb3IgPT09ICdyZWQnLFxuICAgICAgICAnYmFkZ2UtLW9yYW5nZSc6IGNvbG9yID09PSAnb3JhbmdlJyxcbiAgICAgICAgJ2JhZGdlLS15ZWxsb3cnOiBjb2xvciA9PT0gJ3llbGxvdycsXG4gICAgICAgICdiYWRnZS0tYmx1ZSc6IGNvbG9yID09PSAnYmx1ZScsXG4gICAgICAgICdiYWRnZS0tZ3JlZW4nOiBjb2xvciA9PT0gJ2dyZWVuJyxcbiAgICAgICAgJ2JhZGdlLS1ncmF5JzogY29sb3IgPT09ICdncmF5JyxcbiAgICAgICAgJ2JhZGdlLS1zZWxlY3RhYmxlJzogc2VsZWN0YWJsZSxcbiAgICAgICAgJ3JvdW5kZWQtWzEwcHhdJzogdHlwZSA9PT0gJ3BpbGwnLFxuICAgICAgICAncm91bmRlZC1tZWRpdW0nOiB0eXBlID09PSAnY2hpcCcsXG4gICAgICAgICdiZy1zdW5zZXQtb3JhbmdlLTEwMCBib3JkZXItY3JpdGljYWxpdHktcmVkJzogY29sb3IgPT09ICdyZWQnLFxuICAgICAgICAnYmctYnV0dGVyY3VwLTEwMCBib3JkZXItY3JpdGljYWxpdHktb3JhbmdlJzogY29sb3IgPT09ICdvcmFuZ2UnLFxuICAgICAgICAnYmctYnV0dGVyY3VwLTUwIGJvcmRlci1jcml0aWNhbGl0eS15ZWxsb3cnOiBjb2xvciA9PT0gJ3llbGxvdycsXG4gICAgICAgICdiZy1oaXBwaWUtYmx1ZS0xMDAgYm9yZGVyLWNyaXRpY2FsaXR5LWJsdWUnOiBjb2xvciA9PT0gJ2JsdWUnLFxuICAgICAgICAnYmctbGltZS0xMDAgYm9yZGVyLWNyaXRpY2FsaXR5LWdyZWVuJzogY29sb3IgPT09ICdncmVlbicsXG4gICAgICAgICdiZy1ncmF5c2NhbGUtMTAgYm9yZGVyLWdyYXlzY2FsZS02MCc6IGNvbG9yID09PSAnZ3JheScsXG4gICAgICAgICdjdXJzb3ItcG9pbnRlciBzZWxlY3Qtbm9uZSc6IHNlbGVjdGFibGUsXG4gICAgfVwiXG4+XG4gICAgQGlmIChpbmZvU2lnbikge1xuICAgICAgICA8c3BhbiAqc0luZm9TaWduPVwiaW5mb1NpZ24udGV4dDsgZGlzcGxheVRpbWU6IGluZm9TaWduLmRpc3BsYXlUaW1lID8/IDBcIj48L3NwYW4+XG4gICAgfVxuICAgIEBpZiAoaWNvbkNsYXNzKSB7XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgICBbY2xhc3NdPVwiJ2JhZGdlLWljb24gaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHRleHQtWzEwcHhdIHRleHQtZ3JheXNjYWxlLTkwICcgKyBpY29uQ2xhc3NcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICdiYWRnZS1pY29uLS1sZWZ0JzogaWNvblBvc2l0aW9uID09PSAnbGVmdCcgJiYgdGV4dCxcbiAgICAgICAgICAgICAgICAnYmFkZ2UtaWNvbi0tcmlnaHQnOiBpY29uUG9zaXRpb24gPT09ICdyaWdodCcgJiYgdGV4dCxcbiAgICAgICAgICAgICAgICAnb3JkZXItMic6IGljb25Qb3NpdGlvbiA9PT0gJ3JpZ2h0JyAmJiB0ZXh0LFxuICAgICAgICAgICAgfVwiXG4gICAgICAgID5cbiAgICAgICAgPC9zcGFuPlxuICAgIH1cbiAgICBAaWYgKHRpdGxlKSB7XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2UtdGl0bGUgZm9udC1vcGVuLXNhbnMgbXItMC41IHRleHQteHMgZm9udC1ib2xkIGxlYWRpbmctWzE1MCVdIHRleHQtZ3JheXNjYWxlLTkwXCI+e3sgdGl0bGUgfX06PC9zcGFuPlxuICAgIH1cbiAgICBAaWYgKHRleHQpIHtcbiAgICAgICAgPHNwYW5cbiAgICAgICAgICAgIGNsYXNzPVwiYmFkZ2UtdGV4dCBmb250LW9wZW4tc2FucyB0ZXh0LXhzIGZvbnQtbm9ybWFsIGxlYWRpbmctWzE1MCVdIHRleHQtZ3JheXNjYWxlLTkwXCJcbiAgICAgICAgICAgIFtjbGFzcy5iYWRnZS10ZXh0LXRydW5jYXRlZF09XCJlbmFibGVUcnVuY2F0ZVRleHQoKVwiXG4gICAgICAgICAgICBbY2xhc3MubGluZS1jbGFtcC0xXT1cImVuYWJsZVRydW5jYXRlVGV4dCgpXCJcbiAgICAgICAgICAgIFtzVG9vbHRpcF09XCJ0ZXh0XCJcbiAgICAgICAgICAgIFt2aXNpYmxlXT1cImVuYWJsZVRydW5jYXRlVGV4dCgpXCJcbiAgICAgICAgICAgIFtjaGVja1RydW5jYXRlZFRleHRdPVwiZW5hYmxlVHJ1bmNhdGVUZXh0KClcIlxuICAgICAgICA+e3t0ZXh0fX08L3NwYW4+XG4gICAgfVxuPC9zcGFuPlxuXG4iXX0=
@@ -1,22 +1,17 @@
1
1
  import { NgModule } from '@angular/core';
2
- import { CommonModule } from '@angular/common';
3
2
  import { RouterModule } from '@angular/router';
4
3
  import { BadgeComponent } from './badge.component';
5
- import { InfoSignModule } from '@seniorsistemas/angular-components/info-sign';
6
- import { TooltipModule } from '@seniorsistemas/angular-components/tooltip';
7
- import { TemplateModule } from '@seniorsistemas/angular-components/template';
8
4
  import * as i0 from "@angular/core";
9
5
  export class BadgeModule {
10
6
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: BadgeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
11
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.14", ngImport: i0, type: BadgeModule, declarations: [BadgeComponent], imports: [CommonModule, RouterModule, InfoSignModule, TooltipModule, TemplateModule], exports: [BadgeComponent, RouterModule] });
12
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: BadgeModule, imports: [CommonModule, RouterModule, InfoSignModule, TooltipModule, TemplateModule, RouterModule] });
7
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.14", ngImport: i0, type: BadgeModule, imports: [RouterModule, BadgeComponent], exports: [BadgeComponent, RouterModule] });
8
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: BadgeModule, imports: [RouterModule, BadgeComponent, RouterModule] });
13
9
  }
14
10
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: BadgeModule, decorators: [{
15
11
  type: NgModule,
16
12
  args: [{
17
- imports: [CommonModule, RouterModule, InfoSignModule, TooltipModule, TemplateModule],
18
- declarations: [BadgeComponent],
13
+ imports: [RouterModule, BadgeComponent],
19
14
  exports: [BadgeComponent, RouterModule],
20
15
  }]
21
16
  }] });
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFkZ2UubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL2JhZGdlL3NyYy9saWIvYmFkZ2UvYmFkZ2UubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNkNBQTZDLENBQUM7O0FBTzdFLE1BQU0sT0FBTyxXQUFXO3dHQUFYLFdBQVc7eUdBQVgsV0FBVyxpQkFITCxjQUFjLGFBRG5CLFlBQVksRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLGFBQWEsRUFBRSxjQUFjLGFBRXpFLGNBQWMsRUFBRSxZQUFZO3lHQUU3QixXQUFXLFlBSlYsWUFBWSxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFFekQsWUFBWTs7NEZBRTdCLFdBQVc7a0JBTHZCLFFBQVE7bUJBQUM7b0JBQ04sT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFLGNBQWMsQ0FBQztvQkFDcEYsWUFBWSxFQUFFLENBQUMsY0FBYyxDQUFDO29CQUM5QixPQUFPLEVBQUUsQ0FBQyxjQUFjLEVBQUUsWUFBWSxDQUFDO2lCQUMxQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgUm91dGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuaW1wb3J0IHsgQmFkZ2VDb21wb25lbnQgfSBmcm9tICcuL2JhZGdlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJbmZvU2lnbk1vZHVsZSB9IGZyb20gJ0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvaW5mby1zaWduJztcbmltcG9ydCB7IFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzL3Rvb2x0aXAnO1xuaW1wb3J0IHsgVGVtcGxhdGVNb2R1bGUgfSBmcm9tICdAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzL3RlbXBsYXRlJztcblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBSb3V0ZXJNb2R1bGUsIEluZm9TaWduTW9kdWxlLCBUb29sdGlwTW9kdWxlLCBUZW1wbGF0ZU1vZHVsZV0sXG4gICAgZGVjbGFyYXRpb25zOiBbQmFkZ2VDb21wb25lbnRdLFxuICAgIGV4cG9ydHM6IFtCYWRnZUNvbXBvbmVudCwgUm91dGVyTW9kdWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgQmFkZ2VNb2R1bGUge31cblxuIl19
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFkZ2UubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL2JhZGdlL3NyYy9saWIvYmFkZ2UvYmFkZ2UubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7QUFNbkQsTUFBTSxPQUFPLFdBQVc7d0dBQVgsV0FBVzt5R0FBWCxXQUFXLFlBSFYsWUFBWSxFQUFFLGNBQWMsYUFDNUIsY0FBYyxFQUFFLFlBQVk7eUdBRTdCLFdBQVcsWUFIVixZQUFZLEVBQUUsY0FBYyxFQUNaLFlBQVk7OzRGQUU3QixXQUFXO2tCQUp2QixRQUFRO21CQUFDO29CQUNOLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxjQUFjLENBQUM7b0JBQ3ZDLE9BQU8sRUFBRSxDQUFDLGNBQWMsRUFBRSxZQUFZLENBQUM7aUJBQzFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUm91dGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuXHJcbmltcG9ydCB7IEJhZGdlQ29tcG9uZW50IH0gZnJvbSAnLi9iYWRnZS5jb21wb25lbnQnO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICAgIGltcG9ydHM6IFtSb3V0ZXJNb2R1bGUsIEJhZGdlQ29tcG9uZW50XSxcclxuICAgIGV4cG9ydHM6IFtCYWRnZUNvbXBvbmVudCwgUm91dGVyTW9kdWxlXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEJhZGdlTW9kdWxlIHt9XHJcbiJdfQ==