@seniorsistemas/angular-components 19.3.1 → 19.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (254) hide show
  1. package/breadcrumb/lib/dynamic-breadcrumb/dynamic-breadcrumb.component.d.ts +1 -2
  2. package/calendar-mask/lib/calendar-mask/calendar-mask.directive.d.ts +0 -1
  3. package/chips/lib/chips/chips/chips.component.d.ts +1 -2
  4. package/code-editor/lib/code-editor/code-editor.component.d.ts +0 -2
  5. package/code-editor/lib/code-editor/infra/utils/custom-translations/custom-translations.module.d.ts +1 -3
  6. package/common/lib/svg-factory/svg-factory.directive.d.ts +1 -2
  7. package/content-generator/lib/content-generator/content-generator.component.d.ts +1 -6
  8. package/content-generator/lib/services/IAssist/iassist.service.d.ts +0 -3
  9. package/country-phone-picker/lib/country-phone-picker/country-phone-picker.component.d.ts +0 -3
  10. package/country-phone-picker/lib/country-phone-picker/country-phone-picker.service.d.ts +0 -2
  11. package/currency/lib/currency.service.d.ts +0 -2
  12. package/custom-fields/lib/custom-fields/custom-fields.component.d.ts +3 -7
  13. package/custom-fields/lib/custom-fields/custom-fields.service.d.ts +0 -2
  14. package/dynamic-form/dynamic-form/components/lookup/lookup.component.d.ts +0 -2
  15. package/dynamic-form/dynamic-form/form-field/fields/autocomplete/autocomplete-field.component.d.ts +1 -2
  16. package/dynamic-form/dynamic-form/form-field/fields/bignumber/bignumber-field.component.d.ts +1 -3
  17. package/dynamic-form/dynamic-form/form-field/fields/calendar/calendar-field.component.d.ts +1 -2
  18. package/dynamic-form/dynamic-form/form-field/fields/chips/chips-field.component.d.ts +1 -3
  19. package/dynamic-form/dynamic-form/form-field/fields/country-phone-picker/country-phone-picker-field.component.d.ts +1 -2
  20. package/dynamic-form/dynamic-form/form-field/fields/currency/currency-field.component.d.ts +1 -3
  21. package/dynamic-form/dynamic-form/form-field/fields/file-picker/file-picker-field.component.d.ts +1 -2
  22. package/dynamic-form/dynamic-form/form-field/fields/number/number-field.component.d.ts +1 -3
  23. package/dynamic-form/dynamic-form/form-field/fields/password/password-field.component.d.ts +1 -2
  24. package/dynamic-form/dynamic-form/form-field/fields/text/text-field.component.d.ts +1 -2
  25. package/dynamic-form/dynamic-form/form-field/fields/text-area/text-area-field.component.d.ts +1 -2
  26. package/empty-state/lib/empty-state/go-back/go-back.component.d.ts +0 -2
  27. package/esm2022/badge/lib/badge/badge.component.mjs +3 -3
  28. package/esm2022/breadcrumb/lib/dynamic-breadcrumb/dynamic-breadcrumb.component.mjs +10 -13
  29. package/esm2022/calendar-mask/lib/calendar-mask/calendar-mask.directive.mjs +7 -11
  30. package/esm2022/chips/lib/chips/chips/chips.component.mjs +5 -8
  31. package/esm2022/code-editor/lib/code-editor/code-editor.component.mjs +6 -9
  32. package/esm2022/code-editor/lib/code-editor/infra/utils/custom-translations/custom-translations.module.mjs +8 -13
  33. package/esm2022/common/lib/svg-factory/svg-factory.directive.mjs +6 -10
  34. package/esm2022/content-generator/lib/content-generator/content-generator.component.mjs +24 -30
  35. package/esm2022/content-generator/lib/services/IAssist/iassist.service.mjs +9 -12
  36. package/esm2022/country-phone-picker/lib/country-phone-picker/country-phone-picker.component.mjs +15 -23
  37. package/esm2022/country-phone-picker/lib/country-phone-picker/country-phone-picker.service.mjs +6 -9
  38. package/esm2022/currency/lib/currency.service.mjs +6 -9
  39. package/esm2022/custom-fields/lib/custom-fields/custom-fields.component.mjs +17 -25
  40. package/esm2022/custom-fields/lib/custom-fields/custom-fields.service.mjs +6 -9
  41. package/esm2022/dynamic-form/dynamic-form/components/lookup/lookup.component.mjs +22 -28
  42. package/esm2022/dynamic-form/dynamic-form/form-field/fields/autocomplete/autocomplete-field.component.mjs +6 -10
  43. package/esm2022/dynamic-form/dynamic-form/form-field/fields/bignumber/bignumber-field.component.mjs +12 -17
  44. package/esm2022/dynamic-form/dynamic-form/form-field/fields/calendar/calendar-field.component.mjs +5 -8
  45. package/esm2022/dynamic-form/dynamic-form/form-field/fields/chips/chips-field.component.mjs +12 -17
  46. package/esm2022/dynamic-form/dynamic-form/form-field/fields/country-phone-picker/country-phone-picker-field.component.mjs +5 -8
  47. package/esm2022/dynamic-form/dynamic-form/form-field/fields/currency/currency-field.component.mjs +13 -19
  48. package/esm2022/dynamic-form/dynamic-form/form-field/fields/file-picker/file-picker-field.component.mjs +6 -10
  49. package/esm2022/dynamic-form/dynamic-form/form-field/fields/number/number-field.component.mjs +14 -19
  50. package/esm2022/dynamic-form/dynamic-form/form-field/fields/password/password-field.component.mjs +5 -8
  51. package/esm2022/dynamic-form/dynamic-form/form-field/fields/text/text-field.component.mjs +5 -8
  52. package/esm2022/dynamic-form/dynamic-form/form-field/fields/text-area/text-area-field.component.mjs +5 -8
  53. package/esm2022/empty-state/lib/empty-state/go-back/go-back.component.mjs +8 -11
  54. package/esm2022/file-picker/lib/file-picker/file-picker.component.mjs +17 -21
  55. package/esm2022/gantt/lib/gantt/components/gantt/gantt.mjs +6 -2
  56. package/esm2022/gantt/lib/gantt/gantt.component.mjs +8 -4
  57. package/esm2022/global-search/lib/global-search/global-search.component.mjs +5 -8
  58. package/esm2022/image-cropper/lib/image-cropper/image-cropper.service.mjs +7 -12
  59. package/esm2022/infinite-scroll/lib/infinite-scroll/infinite-scroll.directive.mjs +5 -8
  60. package/esm2022/info-sign/lib/info-sign/info-sign.directive.mjs +6 -10
  61. package/esm2022/inline-edit/lib/inline-edit/components/fields/inline-edit-calendar/inline-edit-calendar.component.mjs +9 -12
  62. package/esm2022/inline-edit/lib/inline-edit/components/fields/inline-edit-number/inline-edit-number.component.mjs +14 -17
  63. package/esm2022/inline-edit/lib/inline-edit/components/inline-edit-item/inline-edit-item.component.mjs +12 -15
  64. package/esm2022/insights/lib/insights/components/insights-card/insights-card.component.mjs +15 -19
  65. package/esm2022/interactive-content/lib/interactive-content/interactive-content.directive.mjs +5 -8
  66. package/esm2022/kanban/lib/kanban/components/kanban-column/kanban-column.component.mjs +10 -13
  67. package/esm2022/kanban/lib/kanban/components/kanban-item/kanban-item.component.mjs +10 -13
  68. package/esm2022/kanban/lib/kanban/kanban.component.mjs +23 -17
  69. package/esm2022/loading-state/lib/loading-state/loading-state.directive.mjs +10 -16
  70. package/esm2022/locale/lib/locale/locale.service.mjs +8 -12
  71. package/esm2022/locale/lib/locale/pipes/localized-bignumber.pipe.mjs +6 -9
  72. package/esm2022/locale/lib/locale/pipes/localized-currency.pipe.mjs +6 -9
  73. package/esm2022/locale/lib/locale/pipes/localized-date.pipe.mjs +6 -9
  74. package/esm2022/locale/lib/locale/pipes/localized-number.pipe.mjs +6 -9
  75. package/esm2022/locale/lib/locale/pipes/localized-time.pipe.mjs +6 -9
  76. package/esm2022/localized-number-input/lib/localized-number-input/localized-number-input.directive.mjs +6 -9
  77. package/esm2022/navigation-button/lib/navigation-button/navigation-button.component.mjs +5 -8
  78. package/esm2022/numeric/lib/numeric.pipe.mjs +8 -12
  79. package/esm2022/numeric/lib/numeric.service.mjs +6 -9
  80. package/esm2022/password-strength/lib/password-strength/password-strength.component.mjs +8 -11
  81. package/esm2022/password-strength/lib/password-strength/password-strength.directive.mjs +10 -16
  82. package/esm2022/picklist/lib/picklist/picklist.component.mjs +5 -8
  83. package/esm2022/profile-picture-picker/lib/profile-picture-picker/profile-picture-picker.component.mjs +15 -19
  84. package/esm2022/progressbar/lib/progressbar/components/progressbar-determinate/progressbar-determinate.component.mjs +8 -11
  85. package/esm2022/progressbar/lib/progressbar/progressbar.module.mjs +5 -4
  86. package/esm2022/select-button/lib/select-button/select-button.component.mjs +3 -3
  87. package/esm2022/shared/lib/accessibility/paginator-accessibility.directive.mjs +8 -13
  88. package/esm2022/shared/lib/accessibility/table-checkbox-accessibility.directive.mjs +5 -8
  89. package/esm2022/slide-in-bar/lib/slide-in-bar/slide-in-bar.component.mjs +9 -12
  90. package/esm2022/speech-recognition/lib/speech-recognition/speech-recognition/speech-recognition.component.mjs +12 -16
  91. package/esm2022/speech-recognition/lib/speech-recognition/speech-recognition.service.mjs +12 -16
  92. package/esm2022/speech-recognition/lib/speech-recognition/text-to-speech.service.mjs +8 -10
  93. package/esm2022/split-button/lib/split-button/split-button.component.mjs +5 -8
  94. package/esm2022/table/lib/table/row-toggler/row-toggler.directive.mjs +7 -7
  95. package/esm2022/table/lib/table/table-column/table-columns.component.mjs +19 -28
  96. package/esm2022/table/lib/table/table-paging/table-paging.component.mjs +9 -16
  97. package/esm2022/table-header/lib/table-header/table-header-checkbox.component.mjs +11 -13
  98. package/esm2022/text-area/lib/text-area/text-area.component.mjs +5 -8
  99. package/esm2022/thumbnail/lib/thumbnail/thumbnail.component.mjs +8 -11
  100. package/esm2022/tiered-menu/lib/tiered-menu/components/tiered-menu/tiered-menu.component.mjs +16 -24
  101. package/esm2022/tiered-menu/lib/tiered-menu/components/tiered-menu-item/tiered-menu-item.component.mjs +8 -11
  102. package/esm2022/tiered-menu/lib/tiered-menu/components/tiered-menu-nested/tiered-menu-nested.component.mjs +12 -16
  103. package/esm2022/tiered-menu/lib/tiered-menu/tiered-menu.directive.mjs +13 -25
  104. package/esm2022/toast/lib/toast/toast.service.mjs +7 -12
  105. package/esm2022/tree/lib/tree/components/tree-node-item/tree-node-item.component.mjs +10 -14
  106. package/esm2022/workspace-switch/lib/workspace-switch/workspace-switch.component.mjs +6 -10
  107. package/fesm2022/seniorsistemas-angular-components-badge.mjs +2 -2
  108. package/fesm2022/seniorsistemas-angular-components-badge.mjs.map +1 -1
  109. package/fesm2022/seniorsistemas-angular-components-breadcrumb.mjs +10 -12
  110. package/fesm2022/seniorsistemas-angular-components-breadcrumb.mjs.map +1 -1
  111. package/fesm2022/seniorsistemas-angular-components-calendar-mask.mjs +6 -10
  112. package/fesm2022/seniorsistemas-angular-components-calendar-mask.mjs.map +1 -1
  113. package/fesm2022/seniorsistemas-angular-components-chips.mjs +4 -7
  114. package/fesm2022/seniorsistemas-angular-components-chips.mjs.map +1 -1
  115. package/fesm2022/seniorsistemas-angular-components-code-editor.mjs +10 -18
  116. package/fesm2022/seniorsistemas-angular-components-code-editor.mjs.map +1 -1
  117. package/fesm2022/seniorsistemas-angular-components-common.mjs +5 -9
  118. package/fesm2022/seniorsistemas-angular-components-common.mjs.map +1 -1
  119. package/fesm2022/seniorsistemas-angular-components-content-generator.mjs +29 -40
  120. package/fesm2022/seniorsistemas-angular-components-content-generator.mjs.map +1 -1
  121. package/fesm2022/seniorsistemas-angular-components-country-phone-picker.mjs +16 -28
  122. package/fesm2022/seniorsistemas-angular-components-country-phone-picker.mjs.map +1 -1
  123. package/fesm2022/seniorsistemas-angular-components-currency.mjs +5 -8
  124. package/fesm2022/seniorsistemas-angular-components-currency.mjs.map +1 -1
  125. package/fesm2022/seniorsistemas-angular-components-custom-fields.mjs +45 -59
  126. package/fesm2022/seniorsistemas-angular-components-custom-fields.mjs.map +1 -1
  127. package/fesm2022/seniorsistemas-angular-components-dynamic-form.mjs +108 -157
  128. package/fesm2022/seniorsistemas-angular-components-dynamic-form.mjs.map +1 -1
  129. package/fesm2022/seniorsistemas-angular-components-empty-state.mjs +4 -8
  130. package/fesm2022/seniorsistemas-angular-components-empty-state.mjs.map +1 -1
  131. package/fesm2022/seniorsistemas-angular-components-file-picker.mjs +17 -22
  132. package/fesm2022/seniorsistemas-angular-components-file-picker.mjs.map +1 -1
  133. package/fesm2022/seniorsistemas-angular-components-gantt.mjs +12 -4
  134. package/fesm2022/seniorsistemas-angular-components-gantt.mjs.map +1 -1
  135. package/fesm2022/seniorsistemas-angular-components-global-search.mjs +4 -7
  136. package/fesm2022/seniorsistemas-angular-components-global-search.mjs.map +1 -1
  137. package/fesm2022/seniorsistemas-angular-components-image-cropper.mjs +6 -11
  138. package/fesm2022/seniorsistemas-angular-components-image-cropper.mjs.map +1 -1
  139. package/fesm2022/seniorsistemas-angular-components-infinite-scroll.mjs +4 -7
  140. package/fesm2022/seniorsistemas-angular-components-infinite-scroll.mjs.map +1 -1
  141. package/fesm2022/seniorsistemas-angular-components-info-sign.mjs +5 -9
  142. package/fesm2022/seniorsistemas-angular-components-info-sign.mjs.map +1 -1
  143. package/fesm2022/seniorsistemas-angular-components-inline-edit.mjs +29 -38
  144. package/fesm2022/seniorsistemas-angular-components-inline-edit.mjs.map +1 -1
  145. package/fesm2022/seniorsistemas-angular-components-insights.mjs +17 -22
  146. package/fesm2022/seniorsistemas-angular-components-insights.mjs.map +1 -1
  147. package/fesm2022/seniorsistemas-angular-components-interactive-content.mjs +4 -7
  148. package/fesm2022/seniorsistemas-angular-components-interactive-content.mjs.map +1 -1
  149. package/fesm2022/seniorsistemas-angular-components-kanban.mjs +30 -30
  150. package/fesm2022/seniorsistemas-angular-components-kanban.mjs.map +1 -1
  151. package/fesm2022/seniorsistemas-angular-components-loading-state.mjs +7 -15
  152. package/fesm2022/seniorsistemas-angular-components-loading-state.mjs.map +1 -1
  153. package/fesm2022/seniorsistemas-angular-components-locale.mjs +22 -41
  154. package/fesm2022/seniorsistemas-angular-components-locale.mjs.map +1 -1
  155. package/fesm2022/seniorsistemas-angular-components-localized-number-input.mjs +5 -8
  156. package/fesm2022/seniorsistemas-angular-components-localized-number-input.mjs.map +1 -1
  157. package/fesm2022/seniorsistemas-angular-components-navigation-button.mjs +4 -7
  158. package/fesm2022/seniorsistemas-angular-components-navigation-button.mjs.map +1 -1
  159. package/fesm2022/seniorsistemas-angular-components-numeric.mjs +9 -16
  160. package/fesm2022/seniorsistemas-angular-components-numeric.mjs.map +1 -1
  161. package/fesm2022/seniorsistemas-angular-components-password-strength.mjs +13 -24
  162. package/fesm2022/seniorsistemas-angular-components-password-strength.mjs.map +1 -1
  163. package/fesm2022/seniorsistemas-angular-components-picklist.mjs +4 -7
  164. package/fesm2022/seniorsistemas-angular-components-picklist.mjs.map +1 -1
  165. package/fesm2022/seniorsistemas-angular-components-profile-picture-picker.mjs +14 -21
  166. package/fesm2022/seniorsistemas-angular-components-profile-picture-picker.mjs.map +1 -1
  167. package/fesm2022/seniorsistemas-angular-components-progressbar.mjs +11 -14
  168. package/fesm2022/seniorsistemas-angular-components-progressbar.mjs.map +1 -1
  169. package/fesm2022/seniorsistemas-angular-components-select-button.mjs +2 -2
  170. package/fesm2022/seniorsistemas-angular-components-select-button.mjs.map +1 -1
  171. package/fesm2022/seniorsistemas-angular-components-shared.mjs +10 -18
  172. package/fesm2022/seniorsistemas-angular-components-shared.mjs.map +1 -1
  173. package/fesm2022/seniorsistemas-angular-components-slide-in-bar.mjs +7 -10
  174. package/fesm2022/seniorsistemas-angular-components-slide-in-bar.mjs.map +1 -1
  175. package/fesm2022/seniorsistemas-angular-components-speech-recognition.mjs +23 -34
  176. package/fesm2022/seniorsistemas-angular-components-speech-recognition.mjs.map +1 -1
  177. package/fesm2022/seniorsistemas-angular-components-split-button.mjs +4 -7
  178. package/fesm2022/seniorsistemas-angular-components-split-button.mjs.map +1 -1
  179. package/fesm2022/seniorsistemas-angular-components-table-header.mjs +10 -12
  180. package/fesm2022/seniorsistemas-angular-components-table-header.mjs.map +1 -1
  181. package/fesm2022/seniorsistemas-angular-components-table.mjs +29 -46
  182. package/fesm2022/seniorsistemas-angular-components-table.mjs.map +1 -1
  183. package/fesm2022/seniorsistemas-angular-components-text-area.mjs +4 -7
  184. package/fesm2022/seniorsistemas-angular-components-text-area.mjs.map +1 -1
  185. package/fesm2022/seniorsistemas-angular-components-thumbnail.mjs +6 -9
  186. package/fesm2022/seniorsistemas-angular-components-thumbnail.mjs.map +1 -1
  187. package/fesm2022/seniorsistemas-angular-components-tiered-menu.mjs +30 -55
  188. package/fesm2022/seniorsistemas-angular-components-tiered-menu.mjs.map +1 -1
  189. package/fesm2022/seniorsistemas-angular-components-toast.mjs +6 -11
  190. package/fesm2022/seniorsistemas-angular-components-toast.mjs.map +1 -1
  191. package/fesm2022/seniorsistemas-angular-components-tree.mjs +9 -14
  192. package/fesm2022/seniorsistemas-angular-components-tree.mjs.map +1 -1
  193. package/fesm2022/seniorsistemas-angular-components-workspace-switch.mjs +5 -9
  194. package/fesm2022/seniorsistemas-angular-components-workspace-switch.mjs.map +1 -1
  195. package/file-picker/lib/file-picker/file-picker.component.d.ts +0 -4
  196. package/file-upload/README.md +9 -37
  197. package/gantt/lib/gantt/gantt.component.d.ts +1 -0
  198. package/global-search/lib/global-search/global-search.component.d.ts +1 -2
  199. package/ia-insight/README.md +17 -0
  200. package/image-cropper/lib/image-cropper/image-cropper.service.d.ts +1 -2
  201. package/infinite-scroll/lib/infinite-scroll/infinite-scroll.directive.d.ts +1 -2
  202. package/info-sign/lib/info-sign/info-sign.directive.d.ts +1 -2
  203. package/inline-edit/lib/inline-edit/components/fields/inline-edit-calendar/inline-edit-calendar.component.d.ts +1 -2
  204. package/inline-edit/lib/inline-edit/components/fields/inline-edit-number/inline-edit-number.component.d.ts +0 -2
  205. package/inline-edit/lib/inline-edit/components/inline-edit-item/inline-edit-item.component.d.ts +0 -2
  206. package/insights/lib/insights/components/insights-card/insights-card.component.d.ts +0 -4
  207. package/interactive-content/lib/interactive-content/interactive-content.directive.d.ts +1 -2
  208. package/kanban/lib/kanban/components/kanban-column/kanban-column.component.d.ts +0 -2
  209. package/kanban/lib/kanban/components/kanban-item/kanban-item.component.d.ts +0 -2
  210. package/kanban/lib/kanban/kanban.component.d.ts +2 -2
  211. package/loading-state/lib/loading-state/loading-state.directive.d.ts +1 -2
  212. package/locale/lib/locale/locale.service.d.ts +0 -3
  213. package/locale/lib/locale/pipes/localized-bignumber.pipe.d.ts +0 -2
  214. package/locale/lib/locale/pipes/localized-currency.pipe.d.ts +0 -2
  215. package/locale/lib/locale/pipes/localized-date.pipe.d.ts +0 -2
  216. package/locale/lib/locale/pipes/localized-number.pipe.d.ts +0 -2
  217. package/locale/lib/locale/pipes/localized-time.pipe.d.ts +0 -2
  218. package/localized-number-input/lib/localized-number-input/localized-number-input.directive.d.ts +0 -2
  219. package/navigation-button/lib/navigation-button/navigation-button.component.d.ts +1 -2
  220. package/numeric/lib/numeric.pipe.d.ts +0 -3
  221. package/numeric/lib/numeric.service.d.ts +0 -2
  222. package/package.json +13 -13
  223. package/password-strength/lib/password-strength/password-strength.component.d.ts +0 -2
  224. package/password-strength/lib/password-strength/password-strength.directive.d.ts +1 -2
  225. package/picklist/lib/picklist/picklist.component.d.ts +1 -2
  226. package/product-header/README.md +17 -0
  227. package/profile-picture-picker/lib/profile-picture-picker/profile-picture-picker.component.d.ts +0 -4
  228. package/progressbar/lib/progressbar/components/progressbar-determinate/progressbar-determinate.component.d.ts +0 -2
  229. package/progressbar/lib/progressbar/progressbar.module.d.ts +2 -1
  230. package/shared/lib/accessibility/paginator-accessibility.directive.d.ts +1 -3
  231. package/shared/lib/accessibility/table-checkbox-accessibility.directive.d.ts +1 -2
  232. package/slide-in-bar/lib/slide-in-bar/slide-in-bar.component.d.ts +0 -2
  233. package/speech-recognition/lib/speech-recognition/speech-recognition/speech-recognition.component.d.ts +0 -4
  234. package/speech-recognition/lib/speech-recognition/speech-recognition.service.d.ts +1 -5
  235. package/speech-recognition/lib/speech-recognition/text-to-speech.service.d.ts +1 -3
  236. package/split-button/lib/split-button/split-button.component.d.ts +1 -2
  237. package/table/lib/table/row-toggler/row-toggler.directive.d.ts +1 -1
  238. package/table/lib/table/table-column/table-columns.component.d.ts +2 -6
  239. package/table/lib/table/table-paging/table-paging.component.d.ts +0 -3
  240. package/table-header/lib/table-header/table-header-checkbox.component.d.ts +1 -1
  241. package/text-area/lib/text-area/text-area.component.d.ts +1 -2
  242. package/text-area-ia/README.md +17 -0
  243. package/thumbnail/lib/thumbnail/thumbnail.component.d.ts +0 -2
  244. package/tiered-menu/lib/tiered-menu/components/tiered-menu/tiered-menu.component.d.ts +1 -3
  245. package/tiered-menu/lib/tiered-menu/components/tiered-menu-item/tiered-menu-item.component.d.ts +0 -2
  246. package/tiered-menu/lib/tiered-menu/components/tiered-menu-nested/tiered-menu-nested.component.d.ts +0 -2
  247. package/tiered-menu/lib/tiered-menu/tiered-menu.directive.d.ts +1 -5
  248. package/toast/lib/toast/toast.service.d.ts +0 -2
  249. package/tree/lib/tree/components/tree-node-item/tree-node-item.component.d.ts +1 -3
  250. package/workspace-switch/lib/workspace-switch/workspace-switch.component.d.ts +1 -2
  251. package/confirm-dialog/README.md +0 -226
  252. package/numeric-mask/README.md +0 -395
  253. package/pin-code-field/README.md +0 -366
  254. package/spotlight/README.md +0 -311
@@ -1,15 +1,16 @@
1
1
  import { DomPortalOutlet, TemplatePortal } from '@angular/cdk/portal';
2
- import { Component, ElementRef, EventEmitter, forwardRef, HostListener, Inject, Input, Output, PLATFORM_ID, ViewChild, ViewContainerRef, } from '@angular/core';
2
+ import { Component, ElementRef, EventEmitter, forwardRef, HostListener, Input, Output, PLATFORM_ID, ViewChild, ViewContainerRef, inject } from '@angular/core';
3
3
  import { NG_VALUE_ACCESSOR, UntypedFormControl } from '@angular/forms';
4
+ import { TranslateService } from '@ngx-translate/core';
4
5
  import { isPlatformBrowser } from '@angular/common';
5
6
  import { isNullOrUndefined } from '@seniorsistemas/angular-components/utils';
7
+ import { CountryPhonePickerService } from './country-phone-picker.service';
6
8
  import { Ordination } from './models/ordination';
7
9
  import * as i0 from "@angular/core";
8
- import * as i1 from "./country-phone-picker.service";
9
- import * as i2 from "@ngx-translate/core";
10
- import * as i3 from "@angular/common";
11
- import * as i4 from "@angular/forms";
12
- import * as i5 from "ngx-mask";
10
+ import * as i1 from "@angular/common";
11
+ import * as i2 from "@angular/forms";
12
+ import * as i3 from "ngx-mask";
13
+ import * as i4 from "@ngx-translate/core";
13
14
  /**
14
15
  * @description Componente seletor de país e número de telefone com máscara dinâmica.
15
16
  * Exibe uma lista de países com seus códigos DDI e aplica automaticamente a máscara
@@ -27,10 +28,10 @@ import * as i5 from "ngx-mask";
27
28
  * @category Inputs
28
29
  */
29
30
  export class CountryPhonePickerComponent {
30
- _countryPhonePickerService;
31
- _translate;
32
- _eRef;
33
- platformId;
31
+ _countryPhonePickerService = inject(CountryPhonePickerService);
32
+ _translate = inject(TranslateService);
33
+ _eRef = inject(ElementRef);
34
+ platformId = inject(PLATFORM_ID);
34
35
  /**
35
36
  * @description Lista de códigos de país (ISO 3166-1 alpha-2) exibidos no seletor.
36
37
  * Quando vazia, todos os países disponíveis são listados.
@@ -73,12 +74,6 @@ export class CountryPhonePickerComponent {
73
74
  _open = false;
74
75
  _offsetTop = 0;
75
76
  _portalHost = null;
76
- constructor(_countryPhonePickerService, _translate, _eRef, platformId) {
77
- this._countryPhonePickerService = _countryPhonePickerService;
78
- this._translate = _translate;
79
- this._eRef = _eRef;
80
- this.platformId = platformId;
81
- }
82
77
  dropdownTemplate = null;
83
78
  viewContainerRef = null;
84
79
  dropElement = null;
@@ -298,14 +293,14 @@ export class CountryPhonePickerComponent {
298
293
  const portal = new TemplatePortal(this.dropdownTemplate, this.viewContainerRef);
299
294
  this._portalHost.attach(portal);
300
295
  }
301
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CountryPhonePickerComponent, deps: [{ token: i1.CountryPhonePickerService }, { token: i2.TranslateService }, { token: i0.ElementRef }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Component });
296
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CountryPhonePickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
302
297
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: CountryPhonePickerComponent, selector: "s-country-phone-picker", inputs: { countries: "countries", ordination: "ordination" }, outputs: { selected: "selected", focusLost: "focusLost" }, host: { listeners: { "document:click": "onClickout($event)", "keydown": "onKeydown($event)" } }, providers: [
303
298
  {
304
299
  provide: NG_VALUE_ACCESSOR,
305
300
  useExisting: forwardRef(() => CountryPhonePickerComponent),
306
301
  multi: true,
307
302
  },
308
- ], viewQueries: [{ propertyName: "phoneInput", first: true, predicate: ["phoneInput"], descendants: true, static: true }, { propertyName: "filterInput", first: true, predicate: ["filterInput"], descendants: true }, { propertyName: "dropdownTemplate", first: true, predicate: ["dropdownTemplate"], descendants: true }, { propertyName: "viewContainerRef", first: true, predicate: ["dropElement"], descendants: true, read: ViewContainerRef }, { propertyName: "dropElement", first: true, predicate: ["dropElement"], descendants: true, read: ElementRef }, { propertyName: "dropdownContainer", first: true, predicate: ["#dropdownContainer"], descendants: true, read: ElementRef }], ngImport: i0, template: "<div class=\"country-phone-picker\">\n <div\n #dropElement\n class=\"phone-input\"\n [class.phone-input--focused]=\"isFocused\"\n >\n <div\n class=\"drop\"\n (click)=\"open = !open\"\n >\n <span\n class=\"drop-flag\"\n [ngClass]=\"'fi fi-' + selectedItem?.id\"\n >\n </span>\n <span class=\"drop-icon fas fa-caret-down\"></span>\n </div>\n <p class=\"phone-ddi\">{{ selectedItem?.ddi }}</p>\n <input\n #phoneInput\n type=\"tel\"\n [mask]=\"mask\"\n [placeholder]=\"getPlaceholder()\"\n [formControl]=\"phone\"\n (focus)=\"onPhoneInputFocus()\"\n (blur)=\"onBlur(value)\"\n />\n </div>\n <ng-template #dropdownTemplate>\n @if (open) {\n <div\n #dropdownContainer\n class=\"dropdown\"\n [ngStyle]=\"{\n position: 'absolute',\n top: dropTop + 'px',\n left: dropLeft + 'px',\n }\"\n >\n <div class=\"search\">\n <input\n class=\"search-field\"\n type=\"text\"\n [formControl]=\"filter\"\n #filterInput\n />\n <span class=\"search-icon fas fa-search\"></span>\n <span\n class=\"search-clear fa fa-times\"\n (click)=\"onCleanFilter()\"\n ></span>\n </div>\n <ul class=\"select-list\">\n @for (country of filteredCountriesList; track $index) {\n <li\n class=\"select-option\"\n [ngClass]=\"{ 'select-option--focused': $index === currentItemIndex }\"\n (click)=\"onSelectItem(country)\"\n >\n <span\n class=\"select-option__flag\"\n [ngClass]=\"'fi fi-' + country.id\"\n >\n </span>\n <span class=\"select-option__name\">\n {{ 'platform.angular_components.country_name_' + country.id | translate }}\n </span>\n <span class=\"select-option__ddi\">\n {{ country.ddi }}\n </span>\n </li>\n }\n </ul>\n </div>\n }\n </ng-template>\n</div>\n", styles: [":host.ng-invalid.ng-dirty .phone-input{border-color:#c13018}.country-phone-picker:has(input:focus) .phone-input{border:1px solid #428bca}.country-phone-picker .phone-input{background-color:#fff;border:1px solid #d8d8d8;border-radius:4px;display:flex;line-height:normal;overflow:hidden}.country-phone-picker .phone-input .drop{align-items:center;cursor:pointer;display:flex}.country-phone-picker .phone-input .drop .drop-flag{margin-left:12px}.country-phone-picker .phone-input .drop .drop-icon{font-size:12px;margin:0 8px}.country-phone-picker .phone-input .phone-ddi{margin:8px 0}.country-phone-picker .phone-input input{border:none;flex-grow:1;font-family:Open Sans,sans-serif;font-size:14px;font-weight:400;line-height:150%;margin-left:8px}.country-phone-picker .phone-input input:focus{color:#697882;outline:0}.country-phone-picker .phone-input--focused{outline:2px solid #428bca}.dropdown{background-color:#fff;border-radius:4px;box-shadow:0 4px 5px #0003;padding:4px 0;position:absolute;margin:2px 0;z-index:999999}.dropdown .search{align-items:center;display:flex;padding:8px 12px}.dropdown .search .search-field{border:1px solid #d8d8d8;border-radius:4px;flex-grow:1;font-family:Open Sans,sans-serif;font-size:14px;font-weight:400;height:36px;line-height:150%;padding:0 32px 0 8px}.dropdown .search .search-icon{color:#333;font-size:12px;position:relative;right:24px}.dropdown .search .search-clear{color:#333;cursor:pointer;font-size:1rem}.dropdown .select-list{list-style:none;max-height:234px;min-width:360px;max-width:100vw;overflow:scroll;padding:0}.dropdown .select-list .select-option{cursor:pointer;display:flex;padding:12px;-webkit-user-select:none;user-select:none}.dropdown .select-list .select-option .select-option__flag{margin-right:12px}.dropdown .select-list .select-option .select-option__name{margin-right:.5rem;max-width:100%;overflow:hidden;text-overflow:ellipsis}.dropdown .select-list .select-option .select-option__ddi{color:#697882;font-size:14px;font-family:Open Sans,sans-serif;font-weight:400;line-height:150%}.dropdown .select-list .select-option:hover,.dropdown .select-list .select-option--focused{background-color:#e5eaea}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i4.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: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i5.NgxMaskDirective, selector: "input[mask], textarea[mask]", inputs: ["mask", "specialCharacters", "patterns", "prefix", "suffix", "thousandSeparator", "decimalMarker", "dropSpecialCharacters", "hiddenInput", "showMaskTyped", "placeHolderCharacter", "shownMaskExpression", "clearIfNotMatch", "validation", "separatorLimit", "allowNegativeNumbers", "leadZeroDateTime", "leadZero", "triggerOnMaskChange", "apm", "inputTransformFn", "outputTransformFn", "keepCharacterPositions", "instantPrefix"], outputs: ["maskFilled"], exportAs: ["mask", "ngxMask"] }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }] });
303
+ ], viewQueries: [{ propertyName: "phoneInput", first: true, predicate: ["phoneInput"], descendants: true, static: true }, { propertyName: "filterInput", first: true, predicate: ["filterInput"], descendants: true }, { propertyName: "dropdownTemplate", first: true, predicate: ["dropdownTemplate"], descendants: true }, { propertyName: "viewContainerRef", first: true, predicate: ["dropElement"], descendants: true, read: ViewContainerRef }, { propertyName: "dropElement", first: true, predicate: ["dropElement"], descendants: true, read: ElementRef }, { propertyName: "dropdownContainer", first: true, predicate: ["#dropdownContainer"], descendants: true, read: ElementRef }], ngImport: i0, template: "<div class=\"country-phone-picker\">\n <div\n #dropElement\n class=\"phone-input\"\n [class.phone-input--focused]=\"isFocused\"\n >\n <div\n class=\"drop\"\n (click)=\"open = !open\"\n >\n <span\n class=\"drop-flag\"\n [ngClass]=\"'fi fi-' + selectedItem?.id\"\n >\n </span>\n <span class=\"drop-icon fas fa-caret-down\"></span>\n </div>\n <p class=\"phone-ddi\">{{ selectedItem?.ddi }}</p>\n <input\n #phoneInput\n type=\"tel\"\n [mask]=\"mask\"\n [placeholder]=\"getPlaceholder()\"\n [formControl]=\"phone\"\n (focus)=\"onPhoneInputFocus()\"\n (blur)=\"onBlur(value)\"\n />\n </div>\n <ng-template #dropdownTemplate>\n @if (open) {\n <div\n #dropdownContainer\n class=\"dropdown\"\n [ngStyle]=\"{\n position: 'absolute',\n top: dropTop + 'px',\n left: dropLeft + 'px',\n }\"\n >\n <div class=\"search\">\n <input\n class=\"search-field\"\n type=\"text\"\n [formControl]=\"filter\"\n #filterInput\n />\n <span class=\"search-icon fas fa-search\"></span>\n <span\n class=\"search-clear fa fa-times\"\n (click)=\"onCleanFilter()\"\n ></span>\n </div>\n <ul class=\"select-list\">\n @for (country of filteredCountriesList; track $index) {\n <li\n class=\"select-option\"\n [ngClass]=\"{ 'select-option--focused': $index === currentItemIndex }\"\n (click)=\"onSelectItem(country)\"\n >\n <span\n class=\"select-option__flag\"\n [ngClass]=\"'fi fi-' + country.id\"\n >\n </span>\n <span class=\"select-option__name\">\n {{ 'platform.angular_components.country_name_' + country.id | translate }}\n </span>\n <span class=\"select-option__ddi\">\n {{ country.ddi }}\n </span>\n </li>\n }\n </ul>\n </div>\n }\n </ng-template>\n</div>\n", styles: [":host.ng-invalid.ng-dirty .phone-input{border-color:#c13018}.country-phone-picker:has(input:focus) .phone-input{border:1px solid #428bca}.country-phone-picker .phone-input{background-color:#fff;border:1px solid #d8d8d8;border-radius:4px;display:flex;line-height:normal;overflow:hidden}.country-phone-picker .phone-input .drop{align-items:center;cursor:pointer;display:flex}.country-phone-picker .phone-input .drop .drop-flag{margin-left:12px}.country-phone-picker .phone-input .drop .drop-icon{font-size:12px;margin:0 8px}.country-phone-picker .phone-input .phone-ddi{margin:8px 0}.country-phone-picker .phone-input input{border:none;flex-grow:1;font-family:Open Sans,sans-serif;font-size:14px;font-weight:400;line-height:150%;margin-left:8px}.country-phone-picker .phone-input input:focus{color:#697882;outline:0}.country-phone-picker .phone-input--focused{outline:2px solid #428bca}.dropdown{background-color:#fff;border-radius:4px;box-shadow:0 4px 5px #0003;padding:4px 0;position:absolute;margin:2px 0;z-index:999999}.dropdown .search{align-items:center;display:flex;padding:8px 12px}.dropdown .search .search-field{border:1px solid #d8d8d8;border-radius:4px;flex-grow:1;font-family:Open Sans,sans-serif;font-size:14px;font-weight:400;height:36px;line-height:150%;padding:0 32px 0 8px}.dropdown .search .search-icon{color:#333;font-size:12px;position:relative;right:24px}.dropdown .search .search-clear{color:#333;cursor:pointer;font-size:1rem}.dropdown .select-list{list-style:none;max-height:234px;min-width:360px;max-width:100vw;overflow:scroll;padding:0}.dropdown .select-list .select-option{cursor:pointer;display:flex;padding:12px;-webkit-user-select:none;user-select:none}.dropdown .select-list .select-option .select-option__flag{margin-right:12px}.dropdown .select-list .select-option .select-option__name{margin-right:.5rem;max-width:100%;overflow:hidden;text-overflow:ellipsis}.dropdown .select-list .select-option .select-option__ddi{color:#697882;font-size:14px;font-family:Open Sans,sans-serif;font-weight:400;line-height:150%}.dropdown .select-list .select-option:hover,.dropdown .select-list .select-option--focused{background-color:#e5eaea}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { 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.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.NgxMaskDirective, selector: "input[mask], textarea[mask]", inputs: ["mask", "specialCharacters", "patterns", "prefix", "suffix", "thousandSeparator", "decimalMarker", "dropSpecialCharacters", "hiddenInput", "showMaskTyped", "placeHolderCharacter", "shownMaskExpression", "clearIfNotMatch", "validation", "separatorLimit", "allowNegativeNumbers", "leadZeroDateTime", "leadZero", "triggerOnMaskChange", "apm", "inputTransformFn", "outputTransformFn", "keepCharacterPositions", "instantPrefix"], outputs: ["maskFilled"], exportAs: ["mask", "ngxMask"] }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }] });
309
304
  }
310
305
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CountryPhonePickerComponent, decorators: [{
311
306
  type: Component,
@@ -316,10 +311,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
316
311
  multi: true,
317
312
  },
318
313
  ], template: "<div class=\"country-phone-picker\">\n <div\n #dropElement\n class=\"phone-input\"\n [class.phone-input--focused]=\"isFocused\"\n >\n <div\n class=\"drop\"\n (click)=\"open = !open\"\n >\n <span\n class=\"drop-flag\"\n [ngClass]=\"'fi fi-' + selectedItem?.id\"\n >\n </span>\n <span class=\"drop-icon fas fa-caret-down\"></span>\n </div>\n <p class=\"phone-ddi\">{{ selectedItem?.ddi }}</p>\n <input\n #phoneInput\n type=\"tel\"\n [mask]=\"mask\"\n [placeholder]=\"getPlaceholder()\"\n [formControl]=\"phone\"\n (focus)=\"onPhoneInputFocus()\"\n (blur)=\"onBlur(value)\"\n />\n </div>\n <ng-template #dropdownTemplate>\n @if (open) {\n <div\n #dropdownContainer\n class=\"dropdown\"\n [ngStyle]=\"{\n position: 'absolute',\n top: dropTop + 'px',\n left: dropLeft + 'px',\n }\"\n >\n <div class=\"search\">\n <input\n class=\"search-field\"\n type=\"text\"\n [formControl]=\"filter\"\n #filterInput\n />\n <span class=\"search-icon fas fa-search\"></span>\n <span\n class=\"search-clear fa fa-times\"\n (click)=\"onCleanFilter()\"\n ></span>\n </div>\n <ul class=\"select-list\">\n @for (country of filteredCountriesList; track $index) {\n <li\n class=\"select-option\"\n [ngClass]=\"{ 'select-option--focused': $index === currentItemIndex }\"\n (click)=\"onSelectItem(country)\"\n >\n <span\n class=\"select-option__flag\"\n [ngClass]=\"'fi fi-' + country.id\"\n >\n </span>\n <span class=\"select-option__name\">\n {{ 'platform.angular_components.country_name_' + country.id | translate }}\n </span>\n <span class=\"select-option__ddi\">\n {{ country.ddi }}\n </span>\n </li>\n }\n </ul>\n </div>\n }\n </ng-template>\n</div>\n", styles: [":host.ng-invalid.ng-dirty .phone-input{border-color:#c13018}.country-phone-picker:has(input:focus) .phone-input{border:1px solid #428bca}.country-phone-picker .phone-input{background-color:#fff;border:1px solid #d8d8d8;border-radius:4px;display:flex;line-height:normal;overflow:hidden}.country-phone-picker .phone-input .drop{align-items:center;cursor:pointer;display:flex}.country-phone-picker .phone-input .drop .drop-flag{margin-left:12px}.country-phone-picker .phone-input .drop .drop-icon{font-size:12px;margin:0 8px}.country-phone-picker .phone-input .phone-ddi{margin:8px 0}.country-phone-picker .phone-input input{border:none;flex-grow:1;font-family:Open Sans,sans-serif;font-size:14px;font-weight:400;line-height:150%;margin-left:8px}.country-phone-picker .phone-input input:focus{color:#697882;outline:0}.country-phone-picker .phone-input--focused{outline:2px solid #428bca}.dropdown{background-color:#fff;border-radius:4px;box-shadow:0 4px 5px #0003;padding:4px 0;position:absolute;margin:2px 0;z-index:999999}.dropdown .search{align-items:center;display:flex;padding:8px 12px}.dropdown .search .search-field{border:1px solid #d8d8d8;border-radius:4px;flex-grow:1;font-family:Open Sans,sans-serif;font-size:14px;font-weight:400;height:36px;line-height:150%;padding:0 32px 0 8px}.dropdown .search .search-icon{color:#333;font-size:12px;position:relative;right:24px}.dropdown .search .search-clear{color:#333;cursor:pointer;font-size:1rem}.dropdown .select-list{list-style:none;max-height:234px;min-width:360px;max-width:100vw;overflow:scroll;padding:0}.dropdown .select-list .select-option{cursor:pointer;display:flex;padding:12px;-webkit-user-select:none;user-select:none}.dropdown .select-list .select-option .select-option__flag{margin-right:12px}.dropdown .select-list .select-option .select-option__name{margin-right:.5rem;max-width:100%;overflow:hidden;text-overflow:ellipsis}.dropdown .select-list .select-option .select-option__ddi{color:#697882;font-size:14px;font-family:Open Sans,sans-serif;font-weight:400;line-height:150%}.dropdown .select-list .select-option:hover,.dropdown .select-list .select-option--focused{background-color:#e5eaea}\n"] }]
319
- }], ctorParameters: () => [{ type: i1.CountryPhonePickerService }, { type: i2.TranslateService }, { type: i0.ElementRef }, { type: Object, decorators: [{
320
- type: Inject,
321
- args: [PLATFORM_ID]
322
- }] }], propDecorators: { countries: [{
314
+ }], propDecorators: { countries: [{
323
315
  type: Input
324
316
  }], ordination: [{
325
317
  type: Input
@@ -352,4 +344,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
352
344
  type: HostListener,
353
345
  args: ['keydown', ['$event']]
354
346
  }] } });
355
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291bnRyeS1waG9uZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL2NvdW50cnktcGhvbmUtcGlja2VyL3NyYy9saWIvY291bnRyeS1waG9uZS1waWNrZXIvY291bnRyeS1waG9uZS1waWNrZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL2NvdW50cnktcGhvbmUtcGlja2VyL3NyYy9saWIvY291bnRyeS1waG9uZS1waWNrZXIvY291bnRyeS1waG9uZS1waWNrZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RSxPQUFPLEVBQ0gsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osVUFBVSxFQUNWLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUVMLE1BQU0sRUFDTixXQUFXLEVBRVgsU0FBUyxFQUNULGdCQUFnQixHQUNuQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFJN0YsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFJN0UsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7Ozs7O0FBSWpEOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQWFILE1BQU0sT0FBTywyQkFBMkI7SUEwRGY7SUFDQTtJQUNBO0lBRUE7SUE3RHJCOzs7OztPQUtHO0lBRUksU0FBUyxHQUFhLEVBQUUsQ0FBQztJQUVoQzs7Ozs7T0FLRztJQUVJLFVBQVUsR0FBZSxV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LFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLDRCQUE0QixDQUFDOzRCQUMxRCxLQUFLLEVBQUUsSUFBSTt5QkFDZDtxQkFDSjs7MEJBK0RJLE1BQU07MkJBQUMsV0FBVzt5Q0FyRGhCLFNBQVM7c0JBRGYsS0FBSztnQkFVQyxVQUFVO3NCQURoQixLQUFLO2dCQVFDLFFBQVE7c0JBRGQsTUFBTTtnQkFRQSxTQUFTO3NCQURmLE1BQU07Z0JBSUEsVUFBVTtzQkFEaEIsU0FBUzt1QkFBQyxZQUFZLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUl4QixXQUFXO3NCQUQzQixTQUFTO3VCQUFDLGFBQWE7Z0JBOEJqQixnQkFBZ0I7c0JBRHRCLFNBQVM7dUJBQUMsa0JBQWtCO2dCQUl0QixnQkFBZ0I7c0JBRHRCLFNBQVM7dUJBQUMsYUFBYSxFQUFFLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFO2dCQUk3QyxXQUFXO3NCQURqQixTQUFTO3VCQUFDLGFBQWEsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBSXZDLGlCQUFpQjtzQkFEdkIsU0FBUzt1QkFBQyxvQkFBb0IsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBOEI5QyxVQUFVO3NCQURoQixZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDO2dCQVduQyxTQUFTO3NCQURmLFlBQVk7dUJBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRG9tUG9ydGFsT3V0bGV0LCBUZW1wbGF0ZVBvcnRhbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgZm9yd2FyZFJlZixcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgSW5qZWN0LFxuICAgIElucHV0LFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG4gICAgUExBVEZPUk1fSUQsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdDb250YWluZXJSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SLCBVbnR5cGVkRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcblxuaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgaXNOdWxsT3JVbmRlZmluZWQgfSBmcm9tICdAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzL3V0aWxzJztcbmltcG9ydCB7IENvdW50cnlQaG9uZVBpY2tlclNlcnZpY2UgfSBmcm9tICcuL2NvdW50cnktcGhvbmUtcGlja2VyLnNlcnZpY2UnO1xuXG5pbXBvcnQgeyBDb3VudHJ5UGhvbmVEYXRhIH0gZnJvbSAnLi9tb2RlbHMvY291bnRyeS1waG9uZS1kYXRhJztcbmltcG9ydCB7IE9yZGluYXRpb24gfSBmcm9tICcuL21vZGVscy9vcmRpbmF0aW9uJztcblxuaW1wb3J0IHsgUGhvbmVTZWxlY3Rpb25EYXRhIH0gZnJvbSAnLi9tb2RlbHMvcGhvbmUtc2VsZWN0aW9uLWRhdGEnO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBDb21wb25lbnRlIHNlbGV0b3IgZGUgcGHDrXMgZSBuw7ptZXJvIGRlIHRlbGVmb25lIGNvbSBtw6FzY2FyYSBkaW7Dom1pY2EuXG4gKiBFeGliZSB1bWEgbGlzdGEgZGUgcGHDrXNlcyBjb20gc2V1cyBjw7NkaWdvcyBEREkgZSBhcGxpY2EgYXV0b21hdGljYW1lbnRlIGEgbcOhc2NhcmFcbiAqIGRlIGZvcm1hdGHDp8OjbyBkbyBuw7ptZXJvIGNvbmZvcm1lIG8gcGHDrXMgc2VsZWNpb25hZG8uIEltcGxlbWVudGEge0BsaW5rIENvbnRyb2xWYWx1ZUFjY2Vzc29yfVxuICogcGFyYSBpbnRlZ3Jhw6fDo28gY29tIGZvcm11bMOhcmlvcyBBbmd1bGFyLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGBodG1sXG4gKiA8cy1jb3VudHJ5LXBob25lLXBpY2tlclxuICogICBmb3JtQ29udHJvbE5hbWU9XCJ0ZWxlZm9uZVwiXG4gKiAgIFtjb3VudHJpZXNdPVwiWydCUicsICdVUycsICdBUiddXCJcbiAqICAgKHNlbGVjdGVkKT1cIm9uUGFpc1NlbGVjaW9uYWRvKCRldmVudClcIiAvPlxuICogYGBgXG4gKlxuICogQGNhdGVnb3J5IElucHV0c1xuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3MtY291bnRyeS1waG9uZS1waWNrZXInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9jb3VudHJ5LXBob25lLXBpY2tlci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vY291bnRyeS1waG9uZS1waWNrZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBDb3VudHJ5UGhvbmVQaWNrZXJDb21wb25lbnQpLFxuICAgICAgICAgICAgbXVsdGk6IHRydWUsXG4gICAgICAgIH0sXG4gICAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQ291bnRyeVBob25lUGlja2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIExpc3RhIGRlIGPDs2RpZ29zIGRlIHBhw61zIChJU08gMzE2Ni0xIGFscGhhLTIpIGV4aWJpZG9zIG5vIHNlbGV0b3IuXG4gICAgICogUXVhbmRvIHZhemlhLCB0b2RvcyBvcyBwYcOtc2VzIGRpc3BvbsOtdmVpcyBzw6NvIGxpc3RhZG9zLlxuICAgICAqXG4gICAgICogQGRlZmF1bHQgW11cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBjb3VudHJpZXM6IHN0cmluZ1tdID0gW107XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gQ3JpdMOpcmlvIGRlIG9yZGVuYcOnw6NvIGRvcyBwYcOtc2VzIG5hIGxpc3RhLlxuICAgICAqIEFjZWl0YSBvcyB2YWxvcmVzIGRvIGVudW0gYE9yZGluYXRpb25gIChleC46IHBvciBub21lLCBwb3IgRERJLCBzZW0gb3JkZW5hw6fDo28pLlxuICAgICAqXG4gICAgICogQGRlZmF1bHQgT3JkaW5hdGlvbi5OT1xuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIG9yZGluYXRpb246IE9yZGluYXRpb24gPSBPcmRpbmF0aW9uLk5PO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEVtaXRpZG8gcXVhbmRvIG8gdXN1w6FyaW8gc2VsZWNpb25hIHVtIHBhw61zIG5vIGRyb3Bkb3duLlxuICAgICAqIEVtaXRlIHVtIG9iamV0byB7QGxpbmsgQ291bnRyeVBob25lRGF0YX0gY29tIGRhZG9zIGRvIHBhw61zIGVzY29saGlkby5cbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgc2VsZWN0ZWQ6IEV2ZW50RW1pdHRlcjxDb3VudHJ5UGhvbmVEYXRhPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBFbWl0aWRvIHF1YW5kbyBvIGNhbXBvIGRlIG7Dum1lcm8gZGUgdGVsZWZvbmUgcGVyZGUgbyBmb2NvLlxuICAgICAqIEVtaXRlIG8gb2JqZXRvIHtAbGluayBQaG9uZVNlbGVjdGlvbkRhdGF9IGNvbSBwYcOtcyBlIG7Dum1lcm8gYXR1YWlzLCBvdSBgbnVsbGAuXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIGZvY3VzTG9zdDogRXZlbnRFbWl0dGVyPFBob25lU2VsZWN0aW9uRGF0YSB8IG51bGw+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQFZpZXdDaGlsZCgncGhvbmVJbnB1dCcsIHsgc3RhdGljOiB0cnVlIH0pXG4gICAgcHVibGljIHBob25lSW5wdXQ6IEVsZW1lbnRSZWYgfCBudWxsID0gbnVsbDtcblxuICAgIEBWaWV3Q2hpbGQoJ2ZpbHRlcklucHV0JylcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZpbHRlcklucHV0OiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+IHwgbnVsbCA9IG51bGw7XG5cbiAgICBwdWJsaWMgaXNGb2N1c2VkID0gZmFsc2U7XG4gICAgcHVibGljIG1hc2s6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICAgIHB1YmxpYyBzZWxlY3RlZEl0ZW06IENvdW50cnlQaG9uZURhdGEgfCBudWxsID0gbnVsbDtcbiAgICBwdWJsaWMgY3VycmVudEl0ZW1JbmRleCA9IDA7XG4gICAgcHVibGljIGZpbHRlcmVkQ291bnRyaWVzTGlzdDogQ291bnRyeVBob25lRGF0YVtdID0gW107XG4gICAgcHVibGljIHBob25lID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbCgnJyk7XG4gICAgcHVibGljIGZpbHRlciA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woJycpO1xuXG4gICAgcHVibGljIGRyb3BUb3AgPSAwO1xuICAgIHB1YmxpYyBkcm9wTGVmdCA9IDA7XG4gICAgcHJpdmF0ZSBfdmFsdWU6IFBob25lU2VsZWN0aW9uRGF0YSB8IG51bGwgPSBudWxsO1xuICAgIHByaXZhdGUgX29uQ2hhbmdlPzogKHZhbHVlOiBQaG9uZVNlbGVjdGlvbkRhdGEpID0+IHZvaWQ7XG4gICAgcHJpdmF0ZSBfb25Ub3VjaGVkPzogKHZhbHVlOiBQaG9uZVNlbGVjdGlvbkRhdGEpID0+IHZvaWQ7XG4gICAgcHJpdmF0ZSBfY291bnRyaWVzTGlzdDogQ291bnRyeVBob25lRGF0YVtdID0gW107XG4gICAgcHJpdmF0ZSBfb3BlbiA9IGZhbHNlO1xuICAgIHByaXZhdGUgX29mZnNldFRvcCA9IDA7XG4gICAgcHJpdmF0ZSBfcG9ydGFsSG9zdDogRG9tUG9ydGFsT3V0bGV0IHwgbnVsbCA9IG51bGw7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBfY291bnRyeVBob25lUGlja2VyU2VydmljZTogQ291bnRyeVBob25lUGlja2VyU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBfdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF9lUmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBASW5qZWN0KFBMQVRGT1JNX0lEKVxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHBsYXRmb3JtSWQ6IE9iamVjdCxcbiAgICApIHt9XG5cbiAgICBAVmlld0NoaWxkKCdkcm9wZG93blRlbXBsYXRlJylcbiAgICBwdWJsaWMgZHJvcGRvd25UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IG51bGwgPSBudWxsO1xuXG4gICAgQFZpZXdDaGlsZCgnZHJvcEVsZW1lbnQnLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYgfSlcbiAgICBwdWJsaWMgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZiB8IG51bGwgPSBudWxsO1xuXG4gICAgQFZpZXdDaGlsZCgnZHJvcEVsZW1lbnQnLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgICBwdWJsaWMgZHJvcEVsZW1lbnQ6IEVsZW1lbnRSZWYgfCBudWxsID0gbnVsbDtcblxuICAgIEBWaWV3Q2hpbGQoJyNkcm9wZG93bkNvbnRhaW5lcicsIHsgcmVhZDogRWxlbWVudFJlZiB9KVxuICAgIHB1YmxpYyBkcm9wZG93bkNvbnRhaW5lcjogRWxlbWVudFJlZiB8IG51bGwgPSBudWxsO1xuXG4gICAgcHVibGljIGdldCB2YWx1ZSgpOiBQaG9uZVNlbGVjdGlvbkRhdGEgfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3ZhbHVlID8/IG51bGw7XG4gICAgfVxuXG4gICAgcHVibGljIHNldCB2YWx1ZSh2YWx1ZTogUGhvbmVTZWxlY3Rpb25EYXRhKSB7XG4gICAgICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7XG4gICAgICAgIHRoaXMubWFzayA9IHRoaXMuZ2V0TWFzaygpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgb3BlbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX29wZW47XG4gICAgfVxuXG4gICAgcHVibGljIHNldCBvcGVuKG9wZW46IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fb3BlbiA9IG9wZW47XG5cbiAgICAgICAgaWYgKG9wZW4pIHtcbiAgICAgICAgICAgIHRoaXMuX2NyZWF0ZURyb3Bkb3duUG9ydGFsKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAodGhpcy5fcG9ydGFsSG9zdD8uaGFzQXR0YWNoZWQoKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3BvcnRhbEhvc3QuZGV0YWNoKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnBob25lSW5wdXQ/Lm5hdGl2ZUVsZW1lbnQ/LmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDpjbGljaycsIFsnJGV2ZW50J10pXG4gICAgcHVibGljIG9uQ2xpY2tvdXQoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLl9lUmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xuICAgICAgICAgICAgY29uc3QgY2xpY2tlZE9uRmlsdGVySW5wdXQgPSB0aGlzLmZpbHRlcklucHV0Py5uYXRpdmVFbGVtZW50ID09PSBldmVudC50YXJnZXQ7XG4gICAgICAgICAgICBpZiAodGhpcy5vcGVuICYmICFjbGlja2VkT25GaWx0ZXJJbnB1dCkge1xuICAgICAgICAgICAgICAgIHRoaXMub3BlbiA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bicsIFsnJGV2ZW50J10pXG4gICAgcHVibGljIG9uS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoZXZlbnQua2V5ID09PSAnRW50ZXInIHx8IGV2ZW50LmtleSA9PT0gJyAnKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5vcGVuKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW0gPSB0aGlzLl9jb3VudHJpZXNMaXN0W3RoaXMuY3VycmVudEl0ZW1JbmRleF07XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZC5lbWl0KHRoaXMuc2VsZWN0ZWRJdGVtKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMub3BlbiA9ICF0aGlzLm9wZW47XG4gICAgICAgIH0gZWxzZSBpZiAoZXZlbnQua2V5ID09PSAnRXNjYXBlJykge1xuICAgICAgICAgICAgdGhpcy5vcGVuID0gZmFsc2U7XG4gICAgICAgIH0gZWxzZSBpZiAoZXZlbnQua2V5ID09PSAnQXJyb3dEb3duJykge1xuICAgICAgICAgICAgdGhpcy5fbW92ZVRvRG93bigpO1xuICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93VXAnKSB7XG4gICAgICAgICAgICB0aGlzLl9tb3ZlVG9VcCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHdyaXRlVmFsdWUodmFsdWU6IFBob25lU2VsZWN0aW9uRGF0YSk6IHZvaWQge1xuICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG5cbiAgICAgICAgaWYgKHZhbHVlPy5pZCkge1xuICAgICAgICAgICAgY29uc3QgY291bnRyeSA9IHRoaXMuX2NvdW50cmllc0xpc3QuZmlsdGVyKCh7IGlkIH0pID0+IGlkID09PSB2YWx1ZS5pZCk7XG4gICAgICAgICAgICBpZiAoY291bnRyeS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uU2VsZWN0SXRlbShjb3VudHJ5WzBdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh2YWx1ZT8ucmF3VmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMucGhvbmUuc2V0VmFsdWUodmFsdWUucmF3VmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2Uob25DaGFuZ2U6ICh2YWx1ZTogUGhvbmVTZWxlY3Rpb25EYXRhKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX29uQ2hhbmdlID0gb25DaGFuZ2U7XG4gICAgfVxuXG4gICAgcHVibGljIHJlZ2lzdGVyT25Ub3VjaGVkKG9uVG91Y2hlZDogKHZhbHVlOiBQaG9uZVNlbGVjdGlvbkRhdGEpID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fb25Ub3VjaGVkID0gb25Ub3VjaGVkO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY291bnRyaWVzID0gdGhpcy5fY291bnRyeVBob25lUGlja2VyU2VydmljZS5nZXRDb3VudHJpZXModGhpcy5vcmRpbmF0aW9uKTtcbiAgICAgICAgdGhpcy5maWx0ZXIudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSh0aGlzLl9maWx0ZXJDb3VudHJpZXMpO1xuXG4gICAgICAgIGlmICh0aGlzLmNvdW50cmllcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLl9jb3VudHJpZXNMaXN0ID0gY291bnRyaWVzLmZpbHRlcigoY291bnRyeSkgPT4gdGhpcy5jb3VudHJpZXMuaW5jbHVkZXMoY291bnRyeS5pZCkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fY291bnRyaWVzTGlzdCA9IGNvdW50cmllcztcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmZpbHRlcmVkQ291bnRyaWVzTGlzdCA9IHRoaXMuX2NvdW50cmllc0xpc3Q7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtID0gdGhpcy5fZ2V0U2VsZWN0ZWRDb3VudHJ5RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLm1hc2sgPSB0aGlzLmdldE1hc2soKTtcblxuICAgICAgICB0aGlzLnBob25lLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuc2VsZWN0ZWRJdGVtKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLnZhbHVlID0ge1xuICAgICAgICAgICAgICAgIGlkOiB0aGlzLnNlbGVjdGVkSXRlbS5pZCxcbiAgICAgICAgICAgICAgICBkZGk6IHRoaXMuc2VsZWN0ZWRJdGVtLmRkaSxcbiAgICAgICAgICAgICAgICByYXdWYWx1ZTogdmFsdWUgPz8gJycsXG4gICAgICAgICAgICAgICAgdmFsdWU6IHZhbHVlID8gYCR7dGhpcy5fYXBwbHlNYXNrKHZhbHVlKX1gIDogJycsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgaWYgKHRoaXMuX29uQ2hhbmdlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fb25DaGFuZ2UodGhpcy52YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBvblNlbGVjdEl0ZW0oY291bnRyeTogQ291bnRyeVBob25lRGF0YSk6IHZvaWQge1xuICAgICAgICB0aGlzLm9wZW4gPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW0gPSBjb3VudHJ5O1xuICAgICAgICB0aGlzLnBob25lLnNldFZhbHVlKCcnKTtcbiAgICAgICAgdGhpcy5jdXJyZW50SXRlbUluZGV4ID0gdGhpcy5fY291bnRyaWVzTGlzdC5pbmRleE9mKHRoaXMuc2VsZWN0ZWRJdGVtKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZC5lbWl0KHRoaXMuc2VsZWN0ZWRJdGVtKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25DbGVhbkZpbHRlcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5maWx0ZXIuc2V0VmFsdWUoJycpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvblBob25lSW5wdXRGb2N1cygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vcGVuID0gZmFsc2U7XG4gICAgICAgIHRoaXMuaXNGb2N1c2VkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25CbHVyKHZhbHVlOiBQaG9uZVNlbGVjdGlvbkRhdGEgfCBudWxsKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZm9jdXNMb3N0LmVtaXQodmFsdWUpO1xuICAgICAgICB0aGlzLmlzRm9jdXNlZCA9IGZhbHNlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRNYXNrKCk6IHN0cmluZyB8IG51bGwge1xuICAgICAgICBpZiAoIXRoaXMuc2VsZWN0ZWRJdGVtKSByZXR1cm4gbnVsbDtcbiAgICAgICAgY29uc3QgbWFzayA9IHRoaXMuc2VsZWN0ZWRJdGVtLm1hc2s7XG5cbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkobWFzaykpIHtcbiAgICAgICAgICAgIHJldHVybiAhdGhpcy52YWx1ZT8ucmF3VmFsdWUgfHwgdGhpcy52YWx1ZS5yYXdWYWx1ZS5sZW5ndGggPD0gbWFza1swXS5yZXBsYWNlKC9bXjBdL2csICcnKS5sZW5ndGhcbiAgICAgICAgICAgICAgICA/IG1hc2tbMF0gLy8gZml4b1xuICAgICAgICAgICAgICAgIDogbWFza1sxXTsgLy8gY2VsdWxhclxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIG1hc2s7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0UGxhY2Vob2xkZXIoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLm1hc2s/LnJlcGxhY2UoLzkvZywgJycpID8/ICctIE5PIE1BU0sgLSc7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZ2V0U2VsZWN0ZWRDb3VudHJ5RGVmYXVsdCgpOiBDb3VudHJ5UGhvbmVEYXRhIHtcbiAgICAgICAgaWYgKCF0aGlzLl9jb3VudHJpZXNMaXN0Lmxlbmd0aCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBjb3VudHJ5IGxvYWRlZCcpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZmlsdGVyZWRCeUJyID0gdGhpcy5fY291bnRyaWVzTGlzdC5maWx0ZXIoKGNvdW50cnk6IENvdW50cnlQaG9uZURhdGEpID0+IGNvdW50cnkuaWQgPT09ICdicicpO1xuXG4gICAgICAgIHJldHVybiBmaWx0ZXJlZEJ5QnIubGVuZ3RoID8gZmlsdGVyZWRCeUJyWzBdIDogdGhpcy5fY291bnRyaWVzTGlzdFswXTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9maWx0ZXJDb3VudHJpZXMgPSAodmFsdWU6IHN0cmluZykgPT4ge1xuICAgICAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLmZpbHRlcmVkQ291bnRyaWVzTGlzdCA9IHRoaXMuX2NvdW50cmllc0xpc3Q7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmZpbHRlcmVkQ291bnRyaWVzTGlzdCA9IHRoaXMuX2NvdW50cmllc0xpc3QuZmlsdGVyKChjb3VudHJ5KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgY291bnRyeU5hbWUgPSB0aGlzLl90cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgYHBsYXRmb3JtLmFuZ3VsYXJfY29tcG9uZW50cy5jb3VudHJ5X25hbWVfJHtjb3VudHJ5LmlkfWAsXG4gICAgICAgICAgICAgICAgKSBhcyBzdHJpbmc7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvdW50cnlOYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModmFsdWUudG9Mb3dlckNhc2UoKSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBwcml2YXRlIF9tb3ZlVG9VcCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudEl0ZW1JbmRleCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jdXJyZW50SXRlbUluZGV4LS07XG5cbiAgICAgICAgY29uc3Qgc2VsZWN0TGlzdDogYW55ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnNlbGVjdC1saXN0Jyk7XG4gICAgICAgIGNvbnN0IGl0ZW0gPSBzZWxlY3RMaXN0LmNoaWxkcmVuW3RoaXMuY3VycmVudEl0ZW1JbmRleF07XG5cbiAgICAgICAgaWYgKGl0ZW0ub2Zmc2V0VG9wIC0gc2VsZWN0TGlzdC5vZmZzZXRUb3AgPD0gdGhpcy5fb2Zmc2V0VG9wKSB7XG4gICAgICAgICAgICB0aGlzLl9vZmZzZXRUb3AgLT0gNDU7XG4gICAgICAgICAgICBzZWxlY3RMaXN0LnNjcm9sbFRvKDAsIHRoaXMuX29mZnNldFRvcCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBTQ1JPTExfT0ZGU0VUX1RIUkVTSE9MRCA9IDE4MDtcbiAgICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBTQ1JPTExfQU1PVU5UX1BFUl9JVEVNID0gNDU7XG5cbiAgICBwcml2YXRlIF9tb3ZlVG9Eb3duKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5jdXJyZW50SXRlbUluZGV4ID49IHRoaXMuX2NvdW50cmllc0xpc3QubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jdXJyZW50SXRlbUluZGV4Kys7XG5cbiAgICAgICAgY29uc3Qgc2VsZWN0TGlzdDogYW55ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnNlbGVjdC1saXN0Jyk7XG4gICAgICAgIGNvbnN0IGl0ZW0gPSBzZWxlY3RMaXN0LmNoaWxkcmVuW3RoaXMuY3VycmVudEl0ZW1JbmRleF07XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgaXRlbS5vZmZzZXRUb3AgLSBzZWxlY3RMaXN0Lm9mZnNldFRvcCA+XG4gICAgICAgICAgICB0aGlzLl9vZmZzZXRUb3AgKyBDb3VudHJ5UGhvbmVQaWNrZXJDb21wb25lbnQuU0NST0xMX09GRlNFVF9USFJFU0hPTERcbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLl9vZmZzZXRUb3AgKz0gQ291bnRyeVBob25lUGlja2VyQ29tcG9uZW50LlNDUk9MTF9BTU9VTlRfUEVSX0lURU07XG4gICAgICAgICAgICBzZWxlY3RMaXN0LnNjcm9sbFRvKDAsIHRoaXMuX29mZnNldFRvcCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIF9hcHBseU1hc2sodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGxldCBtYXNrO1xuXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMuc2VsZWN0ZWRJdGVtPy5tYXNrKSkge1xuICAgICAgICAgICAgY29uc3QgcmF3TWFzayA9IHRoaXMuc2VsZWN0ZWRJdGVtLm1hc2tbMF0ucmVwbGFjZSgvW14wXS9nLCAnJyk7XG4gICAgICAgICAgICBtYXNrID0gdmFsdWUubGVuZ3RoIDw9IHJhd01hc2subGVuZ3RoID8gdGhpcy5zZWxlY3RlZEl0ZW0ubWFza1swXSArICdcXDAnIDogdGhpcy5zZWxlY3RlZEl0ZW0ubWFza1sxXSArICdcXDAnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbWFzayA9IHRoaXMuc2VsZWN0ZWRJdGVtPy5tYXNrICsgJ1xcMCc7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgdG9rZW5zID0gJyc7XG4gICAgICAgIGxldCByZXBsYWNlID0gJyc7XG4gICAgICAgIGxldCBhY3VtdWxhZG9yID0gMDtcbiAgICAgICAgbGV0IGNvbnRhZG9yID0gMDtcblxuICAgICAgICBmb3IgKGNvbnN0IHRva2VuIG9mIG1hc2spIHtcbiAgICAgICAgICAgIGlmIChpc05hTihwYXJzZUludCh0b2tlbiwgMTApKSkge1xuICAgICAgICAgICAgICAgIGlmIChhY3VtdWxhZG9yKSB7XG4gICAgICAgICAgICAgICAgICAgIHRva2VucyArPSBgKFxcXFxkeyR7YWN1bXVsYWRvcn19KWA7XG5cbiAgICAgICAgICAgICAgICAgICAgY29udGFkb3IrKztcbiAgICAgICAgICAgICAgICAgICAgcmVwbGFjZSArPSBgJCR7Y29udGFkb3J9YDtcblxuICAgICAgICAgICAgICAgICAgICBhY3VtdWxhZG9yID0gMDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAodG9rZW4gIT09ICdcXDAnKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlcGxhY2UgKz0gdG9rZW47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBhY3VtdWxhZG9yKys7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0b2tlbnMgPSBgXiR7dG9rZW5zfSpgO1xuICAgICAgICByZXR1cm4gdGhpcy5waG9uZS52YWx1ZS5yZXBsYWNlKG5ldyBSZWdFeHAodG9rZW5zKSwgcmVwbGFjZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfY3JlYXRlRHJvcGRvd25Qb3J0YWwoKTogdm9pZCB7XG4gICAgICAgIGlmICghaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSB8fCBpc051bGxPclVuZGVmaW5lZCh0aGlzLmRyb3BFbGVtZW50KSkgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IGJvZHlFbGVtZW50ID0gZG9jdW1lbnQuYm9keTtcbiAgICAgICAgY29uc3QgZHJvcEVsZW1lbnRSZWN0ID0gdGhpcy5kcm9wRWxlbWVudC5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgICAgIHRoaXMuZHJvcFRvcCA9IGRyb3BFbGVtZW50UmVjdC5ib3R0b20gKyB3aW5kb3cuc2Nyb2xsWTtcbiAgICAgICAgdGhpcy5kcm9wTGVmdCA9IGRyb3BFbGVtZW50UmVjdC5sZWZ0ICsgd2luZG93LnNjcm9sbFg7XG5cbiAgICAgICAgdGhpcy5fcG9ydGFsSG9zdCA9IG5ldyBEb21Qb3J0YWxPdXRsZXQoYm9keUVsZW1lbnQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQpO1xuICAgICAgICBjb25zdCBwb3J0YWwgPSBuZXcgVGVtcGxhdGVQb3J0YWwoXG4gICAgICAgICAgICB0aGlzLmRyb3Bkb3duVGVtcGxhdGUgYXMgVGVtcGxhdGVSZWY8YW55PixcbiAgICAgICAgICAgIHRoaXMudmlld0NvbnRhaW5lclJlZiBhcyBWaWV3Q29udGFpbmVyUmVmLFxuICAgICAgICApO1xuICAgICAgICB0aGlzLl9wb3J0YWxIb3N0LmF0dGFjaChwb3J0YWwpO1xuICAgIH1cbn1cblxuIiwiPGRpdiBjbGFzcz1cImNvdW50cnktcGhvbmUtcGlja2VyXCI+XG4gICAgPGRpdlxuICAgICAgICAjZHJvcEVsZW1lbnRcbiAgICAgICAgY2xhc3M9XCJwaG9uZS1pbnB1dFwiXG4gICAgICAgIFtjbGFzcy5waG9uZS1pbnB1dC0tZm9jdXNlZF09XCJpc0ZvY3VzZWRcIlxuICAgID5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJkcm9wXCJcbiAgICAgICAgICAgIChjbGljayk9XCJvcGVuID0gIW9wZW5cIlxuICAgICAgICA+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZHJvcC1mbGFnXCJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCInZmkgZmktJyArIHNlbGVjdGVkSXRlbT8uaWRcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkcm9wLWljb24gZmFzIGZhLWNhcmV0LWRvd25cIj48L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8cCBjbGFzcz1cInBob25lLWRkaVwiPnt7IHNlbGVjdGVkSXRlbT8uZGRpIH19PC9wPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICNwaG9uZUlucHV0XG4gICAgICAgICAgICB0eXBlPVwidGVsXCJcbiAgICAgICAgICAgIFttYXNrXT1cIm1hc2tcIlxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImdldFBsYWNlaG9sZGVyKClcIlxuICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cInBob25lXCJcbiAgICAgICAgICAgIChmb2N1cyk9XCJvblBob25lSW5wdXRGb2N1cygpXCJcbiAgICAgICAgICAgIChibHVyKT1cIm9uQmx1cih2YWx1ZSlcIlxuICAgICAgICAvPlxuICAgIDwvZGl2PlxuICAgIDxuZy10ZW1wbGF0ZSAjZHJvcGRvd25UZW1wbGF0ZT5cbiAgICAgICAgQGlmIChvcGVuKSB7XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgI2Ryb3Bkb3duQ29udGFpbmVyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJkcm9wZG93blwiXG4gICAgICAgICAgICAgICAgW25nU3R5bGVdPVwie1xuICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgICAgICAgICAgICAgICAgdG9wOiBkcm9wVG9wICsgJ3B4JyxcbiAgICAgICAgICAgICAgICAgICAgbGVmdDogZHJvcExlZnQgKyAncHgnLFxuICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWFyY2hcIj5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNlYXJjaC1maWVsZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiZmlsdGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICNmaWx0ZXJJbnB1dFxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNlYXJjaC1pY29uIGZhcyBmYS1zZWFyY2hcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNlYXJjaC1jbGVhciBmYSBmYS10aW1lc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25DbGVhbkZpbHRlcigpXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJzZWxlY3QtbGlzdFwiPlxuICAgICAgICAgICAgICAgICAgICBAZm9yIChjb3VudHJ5IG9mIGZpbHRlcmVkQ291bnRyaWVzTGlzdDsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNlbGVjdC1vcHRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ3NlbGVjdC1vcHRpb24tLWZvY3VzZWQnOiAkaW5kZXggPT09IGN1cnJlbnRJdGVtSW5kZXggfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uU2VsZWN0SXRlbShjb3VudHJ5KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3Qtb3B0aW9uX19mbGFnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiJ2ZpIGZpLScgKyBjb3VudHJ5LmlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2VsZWN0LW9wdGlvbl9fbmFtZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAncGxhdGZvcm0uYW5ndWxhcl9jb21wb25lbnRzLmNvdW50cnlfbmFtZV8nICsgY291bnRyeS5pZCB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNlbGVjdC1vcHRpb25fX2RkaVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBjb3VudHJ5LmRkaSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICA8L25nLXRlbXBsYXRlPlxuPC9kaXY+XG4iXX0=
347
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291bnRyeS1waG9uZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL2NvdW50cnktcGhvbmUtcGlja2VyL3NyYy9saWIvY291bnRyeS1waG9uZS1waWNrZXIvY291bnRyeS1waG9uZS1waWNrZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL2NvdW50cnktcGhvbmUtcGlja2VyL3NyYy9saWIvY291bnRyeS1waG9uZS1waWNrZXIvY291bnRyeS1waG9uZS1waWNrZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLFdBQVcsRUFBZSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BMLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU3RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV2RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUM3RSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUczRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7OztBQUlqRDs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFhSCxNQUFNLE9BQU8sMkJBQTJCO0lBQ25C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QkFBd0IsYUFHdkI7d0JBQ1A7NEJBQ0ksT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsNEJBQTRCLENBQUM7NEJBQzFELEtBQUssRUFBRSxJQUFJO3lCQUNkO3FCQUNKOzhCQWVNLFNBQVM7c0JBRGYsS0FBSztnQkFVQyxVQUFVO3NCQURoQixLQUFLO2dCQVFDLFFBQVE7c0JBRGQsTUFBTTtnQkFRQSxTQUFTO3NCQURmLE1BQU07Z0JBSUEsVUFBVTtzQkFEaEIsU0FBUzt1QkFBQyxZQUFZLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUl4QixXQUFXO3NCQUQzQixTQUFTO3VCQUFDLGFBQWE7Z0JBc0JqQixnQkFBZ0I7c0JBRHRCLFNBQVM7dUJBQUMsa0JBQWtCO2dCQUl0QixnQkFBZ0I7c0JBRHRCLFNBQVM7dUJBQUMsYUFBYSxFQUFFLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFO2dCQUk3QyxXQUFXO3NCQURqQixTQUFTO3VCQUFDLGFBQWEsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBSXZDLGlCQUFpQjtzQkFEdkIsU0FBUzt1QkFBQyxvQkFBb0IsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBOEI5QyxVQUFVO3NCQURoQixZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDO2dCQVduQyxTQUFTO3NCQURmLFlBQVk7dUJBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRG9tUG9ydGFsT3V0bGV0LCBUZW1wbGF0ZVBvcnRhbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIGZvcndhcmRSZWYsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBQTEFURk9STV9JRCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCwgVmlld0NvbnRhaW5lclJlZiwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IsIFVudHlwZWRGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuXG5pbXBvcnQgeyBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBpc051bGxPclVuZGVmaW5lZCB9IGZyb20gJ0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvdXRpbHMnO1xuaW1wb3J0IHsgQ291bnRyeVBob25lUGlja2VyU2VydmljZSB9IGZyb20gJy4vY291bnRyeS1waG9uZS1waWNrZXIuc2VydmljZSc7XG5cbmltcG9ydCB7IENvdW50cnlQaG9uZURhdGEgfSBmcm9tICcuL21vZGVscy9jb3VudHJ5LXBob25lLWRhdGEnO1xuaW1wb3J0IHsgT3JkaW5hdGlvbiB9IGZyb20gJy4vbW9kZWxzL29yZGluYXRpb24nO1xuXG5pbXBvcnQgeyBQaG9uZVNlbGVjdGlvbkRhdGEgfSBmcm9tICcuL21vZGVscy9waG9uZS1zZWxlY3Rpb24tZGF0YSc7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIENvbXBvbmVudGUgc2VsZXRvciBkZSBwYcOtcyBlIG7Dum1lcm8gZGUgdGVsZWZvbmUgY29tIG3DoXNjYXJhIGRpbsOibWljYS5cbiAqIEV4aWJlIHVtYSBsaXN0YSBkZSBwYcOtc2VzIGNvbSBzZXVzIGPDs2RpZ29zIERESSBlIGFwbGljYSBhdXRvbWF0aWNhbWVudGUgYSBtw6FzY2FyYVxuICogZGUgZm9ybWF0YcOnw6NvIGRvIG7Dum1lcm8gY29uZm9ybWUgbyBwYcOtcyBzZWxlY2lvbmFkby4gSW1wbGVtZW50YSB7QGxpbmsgQ29udHJvbFZhbHVlQWNjZXNzb3J9XG4gKiBwYXJhIGludGVncmHDp8OjbyBjb20gZm9ybXVsw6FyaW9zIEFuZ3VsYXIuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYGh0bWxcbiAqIDxzLWNvdW50cnktcGhvbmUtcGlja2VyXG4gKiAgIGZvcm1Db250cm9sTmFtZT1cInRlbGVmb25lXCJcbiAqICAgW2NvdW50cmllc109XCJbJ0JSJywgJ1VTJywgJ0FSJ11cIlxuICogICAoc2VsZWN0ZWQpPVwib25QYWlzU2VsZWNpb25hZG8oJGV2ZW50KVwiIC8+XG4gKiBgYGBcbiAqXG4gKiBAY2F0ZWdvcnkgSW5wdXRzXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncy1jb3VudHJ5LXBob25lLXBpY2tlcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NvdW50cnktcGhvbmUtcGlja2VyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9jb3VudHJ5LXBob25lLXBpY2tlci5jb21wb25lbnQuc2NzcyddLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IENvdW50cnlQaG9uZVBpY2tlckNvbXBvbmVudCksXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICBdLFxufSlcbmV4cG9ydCBjbGFzcyBDb3VudHJ5UGhvbmVQaWNrZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9jb3VudHJ5UGhvbmVQaWNrZXJTZXJ2aWNlID0gaW5qZWN0KENvdW50cnlQaG9uZVBpY2tlclNlcnZpY2UpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX3RyYW5zbGF0ZSA9IGluamVjdChUcmFuc2xhdGVTZXJ2aWNlKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9lUmVmID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcGxhdGZvcm1JZCA9IGluamVjdDxPYmplY3Q+KFBMQVRGT1JNX0lEKTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBMaXN0YSBkZSBjw7NkaWdvcyBkZSBwYcOtcyAoSVNPIDMxNjYtMSBhbHBoYS0yKSBleGliaWRvcyBubyBzZWxldG9yLlxuICAgICAqIFF1YW5kbyB2YXppYSwgdG9kb3Mgb3MgcGHDrXNlcyBkaXNwb27DrXZlaXMgc8OjbyBsaXN0YWRvcy5cbiAgICAgKlxuICAgICAqIEBkZWZhdWx0IFtdXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgY291bnRyaWVzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIENyaXTDqXJpbyBkZSBvcmRlbmHDp8OjbyBkb3MgcGHDrXNlcyBuYSBsaXN0YS5cbiAgICAgKiBBY2VpdGEgb3MgdmFsb3JlcyBkbyBlbnVtIGBPcmRpbmF0aW9uYCAoZXguOiBwb3Igbm9tZSwgcG9yIERESSwgc2VtIG9yZGVuYcOnw6NvKS5cbiAgICAgKlxuICAgICAqIEBkZWZhdWx0IE9yZGluYXRpb24uTk9cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBvcmRpbmF0aW9uOiBPcmRpbmF0aW9uID0gT3JkaW5hdGlvbi5OTztcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBFbWl0aWRvIHF1YW5kbyBvIHVzdcOhcmlvIHNlbGVjaW9uYSB1bSBwYcOtcyBubyBkcm9wZG93bi5cbiAgICAgKiBFbWl0ZSB1bSBvYmpldG8ge0BsaW5rIENvdW50cnlQaG9uZURhdGF9IGNvbSBkYWRvcyBkbyBwYcOtcyBlc2NvbGhpZG8uXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHNlbGVjdGVkOiBFdmVudEVtaXR0ZXI8Q291bnRyeVBob25lRGF0YT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gRW1pdGlkbyBxdWFuZG8gbyBjYW1wbyBkZSBuw7ptZXJvIGRlIHRlbGVmb25lIHBlcmRlIG8gZm9jby5cbiAgICAgKiBFbWl0ZSBvIG9iamV0byB7QGxpbmsgUGhvbmVTZWxlY3Rpb25EYXRhfSBjb20gcGHDrXMgZSBuw7ptZXJvIGF0dWFpcywgb3UgYG51bGxgLlxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBmb2N1c0xvc3Q6IEV2ZW50RW1pdHRlcjxQaG9uZVNlbGVjdGlvbkRhdGEgfCBudWxsPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBWaWV3Q2hpbGQoJ3Bob25lSW5wdXQnLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICAgIHB1YmxpYyBwaG9uZUlucHV0OiBFbGVtZW50UmVmIHwgbnVsbCA9IG51bGw7XG5cbiAgICBAVmlld0NoaWxkKCdmaWx0ZXJJbnB1dCcpXG4gICAgcHJpdmF0ZSByZWFkb25seSBmaWx0ZXJJbnB1dDogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PiB8IG51bGwgPSBudWxsO1xuXG4gICAgcHVibGljIGlzRm9jdXNlZCA9IGZhbHNlO1xuICAgIHB1YmxpYyBtYXNrOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgICBwdWJsaWMgc2VsZWN0ZWRJdGVtOiBDb3VudHJ5UGhvbmVEYXRhIHwgbnVsbCA9IG51bGw7XG4gICAgcHVibGljIGN1cnJlbnRJdGVtSW5kZXggPSAwO1xuICAgIHB1YmxpYyBmaWx0ZXJlZENvdW50cmllc0xpc3Q6IENvdW50cnlQaG9uZURhdGFbXSA9IFtdO1xuICAgIHB1YmxpYyBwaG9uZSA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woJycpO1xuICAgIHB1YmxpYyBmaWx0ZXIgPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKCcnKTtcblxuICAgIHB1YmxpYyBkcm9wVG9wID0gMDtcbiAgICBwdWJsaWMgZHJvcExlZnQgPSAwO1xuICAgIHByaXZhdGUgX3ZhbHVlOiBQaG9uZVNlbGVjdGlvbkRhdGEgfCBudWxsID0gbnVsbDtcbiAgICBwcml2YXRlIF9vbkNoYW5nZT86ICh2YWx1ZTogUGhvbmVTZWxlY3Rpb25EYXRhKSA9PiB2b2lkO1xuICAgIHByaXZhdGUgX29uVG91Y2hlZD86ICh2YWx1ZTogUGhvbmVTZWxlY3Rpb25EYXRhKSA9PiB2b2lkO1xuICAgIHByaXZhdGUgX2NvdW50cmllc0xpc3Q6IENvdW50cnlQaG9uZURhdGFbXSA9IFtdO1xuICAgIHByaXZhdGUgX29wZW4gPSBmYWxzZTtcbiAgICBwcml2YXRlIF9vZmZzZXRUb3AgPSAwO1xuICAgIHByaXZhdGUgX3BvcnRhbEhvc3Q6IERvbVBvcnRhbE91dGxldCB8IG51bGwgPSBudWxsO1xuXG4gICAgQFZpZXdDaGlsZCgnZHJvcGRvd25UZW1wbGF0ZScpXG4gICAgcHVibGljIGRyb3Bkb3duVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCBudWxsID0gbnVsbDtcblxuICAgIEBWaWV3Q2hpbGQoJ2Ryb3BFbGVtZW50JywgeyByZWFkOiBWaWV3Q29udGFpbmVyUmVmIH0pXG4gICAgcHVibGljIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYgfCBudWxsID0gbnVsbDtcblxuICAgIEBWaWV3Q2hpbGQoJ2Ryb3BFbGVtZW50JywgeyByZWFkOiBFbGVtZW50UmVmIH0pXG4gICAgcHVibGljIGRyb3BFbGVtZW50OiBFbGVtZW50UmVmIHwgbnVsbCA9IG51bGw7XG5cbiAgICBAVmlld0NoaWxkKCcjZHJvcGRvd25Db250YWluZXInLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgICBwdWJsaWMgZHJvcGRvd25Db250YWluZXI6IEVsZW1lbnRSZWYgfCBudWxsID0gbnVsbDtcblxuICAgIHB1YmxpYyBnZXQgdmFsdWUoKTogUGhvbmVTZWxlY3Rpb25EYXRhIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLl92YWx1ZSA/PyBudWxsO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXQgdmFsdWUodmFsdWU6IFBob25lU2VsZWN0aW9uRGF0YSkge1xuICAgICAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xuICAgICAgICB0aGlzLm1hc2sgPSB0aGlzLmdldE1hc2soKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IG9wZW4oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9vcGVuO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXQgb3BlbihvcGVuOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX29wZW4gPSBvcGVuO1xuXG4gICAgICAgIGlmIChvcGVuKSB7XG4gICAgICAgICAgICB0aGlzLl9jcmVhdGVEcm9wZG93blBvcnRhbCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHRoaXMuX3BvcnRhbEhvc3Q/Lmhhc0F0dGFjaGVkKCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9wb3J0YWxIb3N0LmRldGFjaCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5waG9uZUlucHV0Py5uYXRpdmVFbGVtZW50Py5mb2N1cygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6Y2xpY2snLCBbJyRldmVudCddKVxuICAgIHB1YmxpYyBvbkNsaWNrb3V0KGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5fZVJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpIHtcbiAgICAgICAgICAgIGNvbnN0IGNsaWNrZWRPbkZpbHRlcklucHV0ID0gdGhpcy5maWx0ZXJJbnB1dD8ubmF0aXZlRWxlbWVudCA9PT0gZXZlbnQudGFyZ2V0O1xuICAgICAgICAgICAgaWYgKHRoaXMub3BlbiAmJiAhY2xpY2tlZE9uRmlsdGVySW5wdXQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm9wZW4gPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24nLCBbJyRldmVudCddKVxuICAgIHB1YmxpYyBvbktleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VudGVyJyB8fCBldmVudC5rZXkgPT09ICcgJykge1xuICAgICAgICAgICAgaWYgKHRoaXMub3Blbikge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtID0gdGhpcy5fY291bnRyaWVzTGlzdFt0aGlzLmN1cnJlbnRJdGVtSW5kZXhdO1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWQuZW1pdCh0aGlzLnNlbGVjdGVkSXRlbSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLm9wZW4gPSAhdGhpcy5vcGVuO1xuICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LmtleSA9PT0gJ0VzY2FwZScpIHtcbiAgICAgICAgICAgIHRoaXMub3BlbiA9IGZhbHNlO1xuICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93RG93bicpIHtcbiAgICAgICAgICAgIHRoaXMuX21vdmVUb0Rvd24oKTtcbiAgICAgICAgfSBlbHNlIGlmIChldmVudC5rZXkgPT09ICdBcnJvd1VwJykge1xuICAgICAgICAgICAgdGhpcy5fbW92ZVRvVXAoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyB3cml0ZVZhbHVlKHZhbHVlOiBQaG9uZVNlbGVjdGlvbkRhdGEpOiB2b2lkIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuXG4gICAgICAgIGlmICh2YWx1ZT8uaWQpIHtcbiAgICAgICAgICAgIGNvbnN0IGNvdW50cnkgPSB0aGlzLl9jb3VudHJpZXNMaXN0LmZpbHRlcigoeyBpZCB9KSA9PiBpZCA9PT0gdmFsdWUuaWQpO1xuICAgICAgICAgICAgaWYgKGNvdW50cnkubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vblNlbGVjdEl0ZW0oY291bnRyeVswXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodmFsdWU/LnJhd1ZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLnBob25lLnNldFZhbHVlKHZhbHVlLnJhd1ZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyByZWdpc3Rlck9uQ2hhbmdlKG9uQ2hhbmdlOiAodmFsdWU6IFBob25lU2VsZWN0aW9uRGF0YSkgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9vbkNoYW5nZSA9IG9uQ2hhbmdlO1xuICAgIH1cblxuICAgIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZChvblRvdWNoZWQ6ICh2YWx1ZTogUGhvbmVTZWxlY3Rpb25EYXRhKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX29uVG91Y2hlZCA9IG9uVG91Y2hlZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGNvdW50cmllcyA9IHRoaXMuX2NvdW50cnlQaG9uZVBpY2tlclNlcnZpY2UuZ2V0Q291bnRyaWVzKHRoaXMub3JkaW5hdGlvbik7XG4gICAgICAgIHRoaXMuZmlsdGVyLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUodGhpcy5fZmlsdGVyQ291bnRyaWVzKTtcblxuICAgICAgICBpZiAodGhpcy5jb3VudHJpZXM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5fY291bnRyaWVzTGlzdCA9IGNvdW50cmllcy5maWx0ZXIoKGNvdW50cnkpID0+IHRoaXMuY291bnRyaWVzLmluY2x1ZGVzKGNvdW50cnkuaWQpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2NvdW50cmllc0xpc3QgPSBjb3VudHJpZXM7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5maWx0ZXJlZENvdW50cmllc0xpc3QgPSB0aGlzLl9jb3VudHJpZXNMaXN0O1xuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbSA9IHRoaXMuX2dldFNlbGVjdGVkQ291bnRyeURlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5tYXNrID0gdGhpcy5nZXRNYXNrKCk7XG5cbiAgICAgICAgdGhpcy5waG9uZS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgaWYgKCF0aGlzLnNlbGVjdGVkSXRlbSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHtcbiAgICAgICAgICAgICAgICBpZDogdGhpcy5zZWxlY3RlZEl0ZW0uaWQsXG4gICAgICAgICAgICAgICAgZGRpOiB0aGlzLnNlbGVjdGVkSXRlbS5kZGksXG4gICAgICAgICAgICAgICAgcmF3VmFsdWU6IHZhbHVlID8/ICcnLFxuICAgICAgICAgICAgICAgIHZhbHVlOiB2YWx1ZSA/IGAke3RoaXMuX2FwcGx5TWFzayh2YWx1ZSl9YCA6ICcnLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGlmICh0aGlzLl9vbkNoYW5nZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX29uQ2hhbmdlKHRoaXMudmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25TZWxlY3RJdGVtKGNvdW50cnk6IENvdW50cnlQaG9uZURhdGEpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vcGVuID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtID0gY291bnRyeTtcbiAgICAgICAgdGhpcy5waG9uZS5zZXRWYWx1ZSgnJyk7XG4gICAgICAgIHRoaXMuY3VycmVudEl0ZW1JbmRleCA9IHRoaXMuX2NvdW50cmllc0xpc3QuaW5kZXhPZih0aGlzLnNlbGVjdGVkSXRlbSk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWQuZW1pdCh0aGlzLnNlbGVjdGVkSXRlbSk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uQ2xlYW5GaWx0ZXIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZmlsdGVyLnNldFZhbHVlKCcnKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25QaG9uZUlucHV0Rm9jdXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMub3BlbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLmlzRm9jdXNlZCA9IHRydWU7XG4gICAgfVxuXG4gICAgcHVibGljIG9uQmx1cih2YWx1ZTogUGhvbmVTZWxlY3Rpb25EYXRhIHwgbnVsbCk6IHZvaWQge1xuICAgICAgICB0aGlzLmZvY3VzTG9zdC5lbWl0KHZhbHVlKTtcbiAgICAgICAgdGhpcy5pc0ZvY3VzZWQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0TWFzaygpOiBzdHJpbmcgfCBudWxsIHtcbiAgICAgICAgaWYgKCF0aGlzLnNlbGVjdGVkSXRlbSkgcmV0dXJuIG51bGw7XG4gICAgICAgIGNvbnN0IG1hc2sgPSB0aGlzLnNlbGVjdGVkSXRlbS5tYXNrO1xuXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KG1hc2spKSB7XG4gICAgICAgICAgICByZXR1cm4gIXRoaXMudmFsdWU/LnJhd1ZhbHVlIHx8IHRoaXMudmFsdWUucmF3VmFsdWUubGVuZ3RoIDw9IG1hc2tbMF0ucmVwbGFjZSgvW14wXS9nLCAnJykubGVuZ3RoXG4gICAgICAgICAgICAgICAgPyBtYXNrWzBdIC8vIGZpeG9cbiAgICAgICAgICAgICAgICA6IG1hc2tbMV07IC8vIGNlbHVsYXJcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBtYXNrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGdldFBsYWNlaG9sZGVyKCk6IHN0cmluZyB8IG51bGwge1xuICAgICAgICByZXR1cm4gdGhpcy5tYXNrPy5yZXBsYWNlKC85L2csICcnKSA/PyAnLSBOTyBNQVNLIC0nO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2dldFNlbGVjdGVkQ291bnRyeURlZmF1bHQoKTogQ291bnRyeVBob25lRGF0YSB7XG4gICAgICAgIGlmICghdGhpcy5fY291bnRyaWVzTGlzdC5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignTm8gY291bnRyeSBsb2FkZWQnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGZpbHRlcmVkQnlCciA9IHRoaXMuX2NvdW50cmllc0xpc3QuZmlsdGVyKChjb3VudHJ5OiBDb3VudHJ5UGhvbmVEYXRhKSA9PiBjb3VudHJ5LmlkID09PSAnYnInKTtcblxuICAgICAgICByZXR1cm4gZmlsdGVyZWRCeUJyLmxlbmd0aCA/IGZpbHRlcmVkQnlCclswXSA6IHRoaXMuX2NvdW50cmllc0xpc3RbMF07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZWFkb25seSBfZmlsdGVyQ291bnRyaWVzID0gKHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5maWx0ZXJlZENvdW50cmllc0xpc3QgPSB0aGlzLl9jb3VudHJpZXNMaXN0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5maWx0ZXJlZENvdW50cmllc0xpc3QgPSB0aGlzLl9jb3VudHJpZXNMaXN0LmZpbHRlcigoY291bnRyeSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvdW50cnlOYW1lID0gdGhpcy5fdHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgIGBwbGF0Zm9ybS5hbmd1bGFyX2NvbXBvbmVudHMuY291bnRyeV9uYW1lXyR7Y291bnRyeS5pZH1gLFxuICAgICAgICAgICAgICAgICkgYXMgc3RyaW5nO1xuICAgICAgICAgICAgICAgIHJldHVybiBjb3VudHJ5TmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHZhbHVlLnRvTG93ZXJDYXNlKCkpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgcHJpdmF0ZSBfbW92ZVRvVXAoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRJdGVtSW5kZXggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY3VycmVudEl0ZW1JbmRleC0tO1xuXG4gICAgICAgIGNvbnN0IHNlbGVjdExpc3Q6IGFueSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5zZWxlY3QtbGlzdCcpO1xuICAgICAgICBjb25zdCBpdGVtID0gc2VsZWN0TGlzdC5jaGlsZHJlblt0aGlzLmN1cnJlbnRJdGVtSW5kZXhdO1xuXG4gICAgICAgIGlmIChpdGVtLm9mZnNldFRvcCAtIHNlbGVjdExpc3Qub2Zmc2V0VG9wIDw9IHRoaXMuX29mZnNldFRvcCkge1xuICAgICAgICAgICAgdGhpcy5fb2Zmc2V0VG9wIC09IDQ1O1xuICAgICAgICAgICAgc2VsZWN0TGlzdC5zY3JvbGxUbygwLCB0aGlzLl9vZmZzZXRUb3ApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgU0NST0xMX09GRlNFVF9USFJFU0hPTEQgPSAxODA7XG4gICAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgU0NST0xMX0FNT1VOVF9QRVJfSVRFTSA9IDQ1O1xuXG4gICAgcHJpdmF0ZSBfbW92ZVRvRG93bigpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudEl0ZW1JbmRleCA+PSB0aGlzLl9jb3VudHJpZXNMaXN0Lmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY3VycmVudEl0ZW1JbmRleCsrO1xuXG4gICAgICAgIGNvbnN0IHNlbGVjdExpc3Q6IGFueSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5zZWxlY3QtbGlzdCcpO1xuICAgICAgICBjb25zdCBpdGVtID0gc2VsZWN0TGlzdC5jaGlsZHJlblt0aGlzLmN1cnJlbnRJdGVtSW5kZXhdO1xuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIGl0ZW0ub2Zmc2V0VG9wIC0gc2VsZWN0TGlzdC5vZmZzZXRUb3AgPlxuICAgICAgICAgICAgdGhpcy5fb2Zmc2V0VG9wICsgQ291bnRyeVBob25lUGlja2VyQ29tcG9uZW50LlNDUk9MTF9PRkZTRVRfVEhSRVNIT0xEXG4gICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5fb2Zmc2V0VG9wICs9IENvdW50cnlQaG9uZVBpY2tlckNvbXBvbmVudC5TQ1JPTExfQU1PVU5UX1BFUl9JVEVNO1xuICAgICAgICAgICAgc2VsZWN0TGlzdC5zY3JvbGxUbygwLCB0aGlzLl9vZmZzZXRUb3ApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfYXBwbHlNYXNrKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBsZXQgbWFzaztcblxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLnNlbGVjdGVkSXRlbT8ubWFzaykpIHtcbiAgICAgICAgICAgIGNvbnN0IHJhd01hc2sgPSB0aGlzLnNlbGVjdGVkSXRlbS5tYXNrWzBdLnJlcGxhY2UoL1teMF0vZywgJycpO1xuICAgICAgICAgICAgbWFzayA9IHZhbHVlLmxlbmd0aCA8PSByYXdNYXNrLmxlbmd0aCA/IHRoaXMuc2VsZWN0ZWRJdGVtLm1hc2tbMF0gKyAnXFwwJyA6IHRoaXMuc2VsZWN0ZWRJdGVtLm1hc2tbMV0gKyAnXFwwJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG1hc2sgPSB0aGlzLnNlbGVjdGVkSXRlbT8ubWFzayArICdcXDAnO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHRva2VucyA9ICcnO1xuICAgICAgICBsZXQgcmVwbGFjZSA9ICcnO1xuICAgICAgICBsZXQgYWN1bXVsYWRvciA9IDA7XG4gICAgICAgIGxldCBjb250YWRvciA9IDA7XG5cbiAgICAgICAgZm9yIChjb25zdCB0b2tlbiBvZiBtYXNrKSB7XG4gICAgICAgICAgICBpZiAoaXNOYU4ocGFyc2VJbnQodG9rZW4sIDEwKSkpIHtcbiAgICAgICAgICAgICAgICBpZiAoYWN1bXVsYWRvcikge1xuICAgICAgICAgICAgICAgICAgICB0b2tlbnMgKz0gYChcXFxcZHske2FjdW11bGFkb3J9fSlgO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbnRhZG9yKys7XG4gICAgICAgICAgICAgICAgICAgIHJlcGxhY2UgKz0gYCQke2NvbnRhZG9yfWA7XG5cbiAgICAgICAgICAgICAgICAgICAgYWN1bXVsYWRvciA9IDA7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHRva2VuICE9PSAnXFwwJykge1xuICAgICAgICAgICAgICAgICAgICByZXBsYWNlICs9IHRva2VuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgYWN1bXVsYWRvcisrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdG9rZW5zID0gYF4ke3Rva2Vuc30qYDtcbiAgICAgICAgcmV0dXJuIHRoaXMucGhvbmUudmFsdWUucmVwbGFjZShuZXcgUmVnRXhwKHRva2VucyksIHJlcGxhY2UpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2NyZWF0ZURyb3Bkb3duUG9ydGFsKCk6IHZvaWQge1xuICAgICAgICBpZiAoIWlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkgfHwgaXNOdWxsT3JVbmRlZmluZWQodGhpcy5kcm9wRWxlbWVudCkpIHJldHVybjtcblxuICAgICAgICBjb25zdCBib2R5RWxlbWVudCA9IGRvY3VtZW50LmJvZHk7XG4gICAgICAgIGNvbnN0IGRyb3BFbGVtZW50UmVjdCA9IHRoaXMuZHJvcEVsZW1lbnQubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgICAgICB0aGlzLmRyb3BUb3AgPSBkcm9wRWxlbWVudFJlY3QuYm90dG9tICsgd2luZG93LnNjcm9sbFk7XG4gICAgICAgIHRoaXMuZHJvcExlZnQgPSBkcm9wRWxlbWVudFJlY3QubGVmdCArIHdpbmRvdy5zY3JvbGxYO1xuXG4gICAgICAgIHRoaXMuX3BvcnRhbEhvc3QgPSBuZXcgRG9tUG9ydGFsT3V0bGV0KGJvZHlFbGVtZW50LCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkKTtcbiAgICAgICAgY29uc3QgcG9ydGFsID0gbmV3IFRlbXBsYXRlUG9ydGFsKFxuICAgICAgICAgICAgdGhpcy5kcm9wZG93blRlbXBsYXRlIGFzIFRlbXBsYXRlUmVmPGFueT4sXG4gICAgICAgICAgICB0aGlzLnZpZXdDb250YWluZXJSZWYgYXMgVmlld0NvbnRhaW5lclJlZixcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5fcG9ydGFsSG9zdC5hdHRhY2gocG9ydGFsKTtcbiAgICB9XG59XG5cbiIsIjxkaXYgY2xhc3M9XCJjb3VudHJ5LXBob25lLXBpY2tlclwiPlxuICAgIDxkaXZcbiAgICAgICAgI2Ryb3BFbGVtZW50XG4gICAgICAgIGNsYXNzPVwicGhvbmUtaW5wdXRcIlxuICAgICAgICBbY2xhc3MucGhvbmUtaW5wdXQtLWZvY3VzZWRdPVwiaXNGb2N1c2VkXCJcbiAgICA+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiZHJvcFwiXG4gICAgICAgICAgICAoY2xpY2spPVwib3BlbiA9ICFvcGVuXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICBjbGFzcz1cImRyb3AtZmxhZ1wiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiJ2ZpIGZpLScgKyBzZWxlY3RlZEl0ZW0/LmlkXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZHJvcC1pY29uIGZhcyBmYS1jYXJldC1kb3duXCI+PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPHAgY2xhc3M9XCJwaG9uZS1kZGlcIj57eyBzZWxlY3RlZEl0ZW0/LmRkaSB9fTwvcD5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAjcGhvbmVJbnB1dFxuICAgICAgICAgICAgdHlwZT1cInRlbFwiXG4gICAgICAgICAgICBbbWFza109XCJtYXNrXCJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJnZXRQbGFjZWhvbGRlcigpXCJcbiAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJwaG9uZVwiXG4gICAgICAgICAgICAoZm9jdXMpPVwib25QaG9uZUlucHV0Rm9jdXMoKVwiXG4gICAgICAgICAgICAoYmx1cik9XCJvbkJsdXIodmFsdWUpXCJcbiAgICAgICAgLz5cbiAgICA8L2Rpdj5cbiAgICA8bmctdGVtcGxhdGUgI2Ryb3Bkb3duVGVtcGxhdGU+XG4gICAgICAgIEBpZiAob3Blbikge1xuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICNkcm9wZG93bkNvbnRhaW5lclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd25cIlxuICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cIntcbiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICAgICAgICAgICAgICAgIHRvcDogZHJvcFRvcCArICdweCcsXG4gICAgICAgICAgICAgICAgICAgIGxlZnQ6IGRyb3BMZWZ0ICsgJ3B4JyxcbiAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VhcmNoXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzZWFyY2gtZmllbGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImZpbHRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAjZmlsdGVySW5wdXRcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZWFyY2gtaWNvbiBmYXMgZmEtc2VhcmNoXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzZWFyY2gtY2xlYXIgZmEgZmEtdGltZXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uQ2xlYW5GaWx0ZXIoKVwiXG4gICAgICAgICAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwic2VsZWN0LWxpc3RcIj5cbiAgICAgICAgICAgICAgICAgICAgQGZvciAoY291bnRyeSBvZiBmaWx0ZXJlZENvdW50cmllc0xpc3Q7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3Qtb3B0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdzZWxlY3Qtb3B0aW9uLS1mb2N1c2VkJzogJGluZGV4ID09PSBjdXJyZW50SXRlbUluZGV4IH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvblNlbGVjdEl0ZW0oY291bnRyeSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0LW9wdGlvbl9fZmxhZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIidmaSBmaS0nICsgY291bnRyeS5pZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNlbGVjdC1vcHRpb25fX25hbWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ3BsYXRmb3JtLmFuZ3VsYXJfY29tcG9uZW50cy5jb3VudHJ5X25hbWVfJyArIGNvdW50cnkuaWQgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZWxlY3Qtb3B0aW9uX19kZGlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgY291bnRyeS5kZGkgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgPC9uZy10ZW1wbGF0ZT5cbjwvZGl2PlxuIl19
@@ -1,13 +1,10 @@
1
- import { Injectable } from '@angular/core';
1
+ import { Injectable, inject } from '@angular/core';
2
+ import { TranslateService } from '@ngx-translate/core';
2
3
  import { countries } from './resources/countries';
3
4
  import { Ordination } from './models/ordination';
4
5
  import * as i0 from "@angular/core";
5
- import * as i1 from "@ngx-translate/core";
6
6
  export class CountryPhonePickerService {
7
- _translate;
8
- constructor(_translate) {
9
- this._translate = _translate;
10
- }
7
+ _translate = inject(TranslateService);
11
8
  getCountries(ordination) {
12
9
  switch (ordination) {
13
10
  case Ordination.AZ:
@@ -33,10 +30,10 @@ export class CountryPhonePickerService {
33
30
  return bName.localeCompare(aName);
34
31
  });
35
32
  }
36
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CountryPhonePickerService, deps: [{ token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Injectable });
33
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CountryPhonePickerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
37
34
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CountryPhonePickerService });
38
35
  }
39
36
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CountryPhonePickerService, decorators: [{
40
37
  type: Injectable
41
- }], ctorParameters: () => [{ type: i1.TranslateService }] });
42
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291bnRyeS1waG9uZS1waWNrZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9jb3VudHJ5LXBob25lLXBpY2tlci9zcmMvbGliL2NvdW50cnktcGhvbmUtcGlja2VyL2NvdW50cnktcGhvbmUtcGlja2VyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUszQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7QUFHakQsTUFBTSxPQUFPLHlCQUF5QjtJQUNMO0lBQTdCLFlBQTZCLFVBQTRCO1FBQTVCLGVBQVUsR0FBVixVQUFVLENBQWtCO0lBQUksQ0FBQztJQUV2RCxZQUFZLENBQUMsVUFBc0I7UUFDdEMsUUFBUSxVQUFVLEVBQUUsQ0FBQztZQUNqQixLQUFLLFVBQVUsQ0FBQyxFQUFFO2dCQUNkLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7WUFDdEMsS0FBSyxVQUFVLENBQUMsRUFBRTtnQkFDZCxPQUFPLElBQUksQ0FBQyw2QkFBNkIsRUFBRSxDQUFDO1lBQ2hELEtBQUssVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUNuQjtnQkFDSSxPQUFPLFNBQVMsQ0FBQztRQUN6QixDQUFDO0lBQ0wsQ0FBQztJQUVPLG1CQUFtQjtRQUN2QixPQUFPLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFtQixFQUFFLENBQW1CLEVBQUUsRUFBRTtZQUMvRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQywrQkFBK0IsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDN0UsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsK0JBQStCLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBRTdFLE9BQU8sS0FBSyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN0QyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTyw2QkFBNkI7UUFDakMsT0FBTyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBbUIsRUFBRSxDQUFtQixFQUFFLEVBQUU7WUFDL0QsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsK0JBQStCLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQzdFLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLCtCQUErQixDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUU3RSxPQUFPLEtBQUssQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdEMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO3dHQS9CUSx5QkFBeUI7NEdBQXpCLHlCQUF5Qjs7NEZBQXpCLHlCQUF5QjtrQkFEckMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuXG5pbXBvcnQgeyBDb3VudHJ5UGhvbmVEYXRhIH0gZnJvbSAnLi9tb2RlbHMvY291bnRyeS1waG9uZS1kYXRhJztcbmltcG9ydCB7IGNvdW50cmllcyB9IGZyb20gJy4vcmVzb3VyY2VzL2NvdW50cmllcyc7XG5pbXBvcnQgeyBPcmRpbmF0aW9uIH0gZnJvbSAnLi9tb2RlbHMvb3JkaW5hdGlvbic7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBDb3VudHJ5UGhvbmVQaWNrZXJTZXJ2aWNlIHtcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IF90cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UpIHsgfVxuXG4gICAgcHVibGljIGdldENvdW50cmllcyhvcmRpbmF0aW9uOiBPcmRpbmF0aW9uKSB7XG4gICAgICAgIHN3aXRjaCAob3JkaW5hdGlvbikge1xuICAgICAgICAgICAgY2FzZSBPcmRpbmF0aW9uLkFaOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9zb3J0QWxwaGFiZXRpY2FsbHkoKTtcbiAgICAgICAgICAgIGNhc2UgT3JkaW5hdGlvbi5aQTpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fc29ydEFscGhhYmV0aWNhbGx5RGVzY2VuZGluZygpO1xuICAgICAgICAgICAgY2FzZSBPcmRpbmF0aW9uLk5POlxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gY291bnRyaWVzO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfc29ydEFscGhhYmV0aWNhbGx5KCk6IENvdW50cnlQaG9uZURhdGFbXSB7XG4gICAgICAgIHJldHVybiBjb3VudHJpZXMuc29ydCgoYTogQ291bnRyeVBob25lRGF0YSwgYjogQ291bnRyeVBob25lRGF0YSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgYU5hbWUgPSB0aGlzLl90cmFuc2xhdGUuaW5zdGFudChgcGxhdGZvcm0uYW5ndWxhcl9jb21wb25lbnRzXyR7YS5pZH1gKTtcbiAgICAgICAgICAgIGNvbnN0IGJOYW1lID0gdGhpcy5fdHJhbnNsYXRlLmluc3RhbnQoYHBsYXRmb3JtLmFuZ3VsYXJfY29tcG9uZW50c18ke2IuaWR9YCk7XG5cbiAgICAgICAgICAgIHJldHVybiBhTmFtZS5sb2NhbGVDb21wYXJlKGJOYW1lKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfc29ydEFscGhhYmV0aWNhbGx5RGVzY2VuZGluZygpOiBDb3VudHJ5UGhvbmVEYXRhW10ge1xuICAgICAgICByZXR1cm4gY291bnRyaWVzLnNvcnQoKGE6IENvdW50cnlQaG9uZURhdGEsIGI6IENvdW50cnlQaG9uZURhdGEpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGFOYW1lID0gdGhpcy5fdHJhbnNsYXRlLmluc3RhbnQoYHBsYXRmb3JtLmFuZ3VsYXJfY29tcG9uZW50c18ke2EuaWR9YCk7XG4gICAgICAgICAgICBjb25zdCBiTmFtZSA9IHRoaXMuX3RyYW5zbGF0ZS5pbnN0YW50KGBwbGF0Zm9ybS5hbmd1bGFyX2NvbXBvbmVudHNfJHtiLmlkfWApO1xuXG4gICAgICAgICAgICByZXR1cm4gYk5hbWUubG9jYWxlQ29tcGFyZShhTmFtZSk7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==
38
+ }] });
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291bnRyeS1waG9uZS1waWNrZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9jb3VudHJ5LXBob25lLXBpY2tlci9zcmMvbGliL2NvdW50cnktcGhvbmUtcGlja2VyL2NvdW50cnktcGhvbmUtcGlja2VyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFHdkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2xELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7QUFHakQsTUFBTSxPQUFPLHlCQUF5QjtJQUNqQixVQUFVLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFHaEQsWUFBWSxDQUFDLFVBQXNCO1FBQ3RDLFFBQVEsVUFBVSxFQUFFLENBQUM7WUFDakIsS0FBSyxVQUFVLENBQUMsRUFBRTtnQkFDZCxPQUFPLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1lBQ3RDLEtBQUssVUFBVSxDQUFDLEVBQUU7Z0JBQ2QsT0FBTyxJQUFJLENBQUMsNkJBQTZCLEVBQUUsQ0FBQztZQUNoRCxLQUFLLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDbkI7Z0JBQ0ksT0FBTyxTQUFTLENBQUM7UUFDekIsQ0FBQztJQUNMLENBQUM7SUFFTyxtQkFBbUI7UUFDdkIsT0FBTyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBbUIsRUFBRSxDQUFtQixFQUFFLEVBQUU7WUFDL0QsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsK0JBQStCLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQzdFLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLCtCQUErQixDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUU3RSxPQUFPLEtBQUssQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdEMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU8sNkJBQTZCO1FBQ2pDLE9BQU8sU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQW1CLEVBQUUsQ0FBbUIsRUFBRSxFQUFFO1lBQy9ELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLCtCQUErQixDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUM3RSxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQywrQkFBK0IsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFFN0UsT0FBTyxLQUFLLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RDLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzt3R0FoQ1EseUJBQXlCOzRHQUF6Qix5QkFBeUI7OzRGQUF6Qix5QkFBeUI7a0JBRHJDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuXG5pbXBvcnQgeyBDb3VudHJ5UGhvbmVEYXRhIH0gZnJvbSAnLi9tb2RlbHMvY291bnRyeS1waG9uZS1kYXRhJztcbmltcG9ydCB7IGNvdW50cmllcyB9IGZyb20gJy4vcmVzb3VyY2VzL2NvdW50cmllcyc7XG5pbXBvcnQgeyBPcmRpbmF0aW9uIH0gZnJvbSAnLi9tb2RlbHMvb3JkaW5hdGlvbic7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBDb3VudHJ5UGhvbmVQaWNrZXJTZXJ2aWNlIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IF90cmFuc2xhdGUgPSBpbmplY3QoVHJhbnNsYXRlU2VydmljZSk7XG5cblxuICAgIHB1YmxpYyBnZXRDb3VudHJpZXMob3JkaW5hdGlvbjogT3JkaW5hdGlvbikge1xuICAgICAgICBzd2l0Y2ggKG9yZGluYXRpb24pIHtcbiAgICAgICAgICAgIGNhc2UgT3JkaW5hdGlvbi5BWjpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fc29ydEFscGhhYmV0aWNhbGx5KCk7XG4gICAgICAgICAgICBjYXNlIE9yZGluYXRpb24uWkE6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3NvcnRBbHBoYWJldGljYWxseURlc2NlbmRpbmcoKTtcbiAgICAgICAgICAgIGNhc2UgT3JkaW5hdGlvbi5OTzpcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvdW50cmllcztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX3NvcnRBbHBoYWJldGljYWxseSgpOiBDb3VudHJ5UGhvbmVEYXRhW10ge1xuICAgICAgICByZXR1cm4gY291bnRyaWVzLnNvcnQoKGE6IENvdW50cnlQaG9uZURhdGEsIGI6IENvdW50cnlQaG9uZURhdGEpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGFOYW1lID0gdGhpcy5fdHJhbnNsYXRlLmluc3RhbnQoYHBsYXRmb3JtLmFuZ3VsYXJfY29tcG9uZW50c18ke2EuaWR9YCk7XG4gICAgICAgICAgICBjb25zdCBiTmFtZSA9IHRoaXMuX3RyYW5zbGF0ZS5pbnN0YW50KGBwbGF0Zm9ybS5hbmd1bGFyX2NvbXBvbmVudHNfJHtiLmlkfWApO1xuXG4gICAgICAgICAgICByZXR1cm4gYU5hbWUubG9jYWxlQ29tcGFyZShiTmFtZSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3NvcnRBbHBoYWJldGljYWxseURlc2NlbmRpbmcoKTogQ291bnRyeVBob25lRGF0YVtdIHtcbiAgICAgICAgcmV0dXJuIGNvdW50cmllcy5zb3J0KChhOiBDb3VudHJ5UGhvbmVEYXRhLCBiOiBDb3VudHJ5UGhvbmVEYXRhKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBhTmFtZSA9IHRoaXMuX3RyYW5zbGF0ZS5pbnN0YW50KGBwbGF0Zm9ybS5hbmd1bGFyX2NvbXBvbmVudHNfJHthLmlkfWApO1xuICAgICAgICAgICAgY29uc3QgYk5hbWUgPSB0aGlzLl90cmFuc2xhdGUuaW5zdGFudChgcGxhdGZvcm0uYW5ndWxhcl9jb21wb25lbnRzXyR7Yi5pZH1gKTtcblxuICAgICAgICAgICAgcmV0dXJuIGJOYW1lLmxvY2FsZUNvbXBhcmUoYU5hbWUpO1xuICAgICAgICB9KTtcbiAgICB9XG59XG4iXX0=
@@ -1,6 +1,6 @@
1
- import { Injectable } from '@angular/core';
1
+ import { Injectable, inject } from '@angular/core';
2
+ import { LocaleService } from '@seniorsistemas/angular-components/locale';
2
3
  import * as i0 from "@angular/core";
3
- import * as i1 from "@seniorsistemas/angular-components/locale";
4
4
  /**
5
5
  * @description Service for retrieving localized currency symbols using the browser's `Intl.NumberFormat` API.
6
6
  * Uses the locale configured in `LocaleService` to format currency parts and extract the symbol.
@@ -15,10 +15,7 @@ import * as i1 from "@seniorsistemas/angular-components/locale";
15
15
  * @category Currency
16
16
  */
17
17
  export class CurrencyService {
18
- localeService;
19
- constructor(localeService) {
20
- this.localeService = localeService;
21
- }
18
+ localeService = inject(LocaleService);
22
19
  getCurrencySymbol({ currency }) {
23
20
  const numberFormat = new Intl.NumberFormat(this.localeService.getLocaleOptions()?.locale, {
24
21
  style: 'currency',
@@ -28,11 +25,11 @@ export class CurrencyService {
28
25
  });
29
26
  return numberFormat.formatToParts(1).find((x) => x.type === 'currency')?.value ?? '';
30
27
  }
31
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CurrencyService, deps: [{ token: i1.LocaleService }], target: i0.ɵɵFactoryTarget.Injectable });
28
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CurrencyService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
32
29
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CurrencyService, providedIn: 'root' });
33
30
  }
34
31
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CurrencyService, decorators: [{
35
32
  type: Injectable,
36
33
  args: [{ providedIn: 'root' }]
37
- }], ctorParameters: () => [{ type: i1.LocaleService }] });
38
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VycmVuY3kuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9jdXJyZW5jeS9zcmMvbGliL2N1cnJlbmN5LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBSzNDOzs7Ozs7Ozs7Ozs7R0FZRztBQUVILE1BQU0sT0FBTyxlQUFlO0lBQ0s7SUFBN0IsWUFBNkIsYUFBNEI7UUFBNUIsa0JBQWEsR0FBYixhQUFhLENBQWU7SUFBRyxDQUFDO0lBRTdELGlCQUFpQixDQUFDLEVBQUUsUUFBUSxFQUEwQjtRQUNsRCxNQUFNLFlBQVksR0FBRyxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLE1BQU0sRUFBRTtZQUN0RixLQUFLLEVBQUUsVUFBVTtZQUNqQixRQUFRLEVBQUcsUUFBbUIsSUFBSSxLQUFLO1lBQ3ZDLGVBQWUsRUFBRSxjQUFjO1lBQy9CLHFCQUFxQixFQUFFLENBQUM7U0FDM0IsQ0FBQyxDQUFDO1FBRUgsT0FBTyxZQUFZLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxVQUFVLENBQUMsRUFBRSxLQUFLLElBQUksRUFBRSxDQUFDO0lBQ3pGLENBQUM7d0dBWlEsZUFBZTs0R0FBZixlQUFlLGNBREYsTUFBTTs7NEZBQ25CLGVBQWU7a0JBRDNCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBDdXJyZW5jeSB9IGZyb20gJy4vdHlwZXMvY3VycmVuY3knO1xuaW1wb3J0IHsgTG9jYWxlU2VydmljZSB9IGZyb20gJ0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvbG9jYWxlJztcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gU2VydmljZSBmb3IgcmV0cmlldmluZyBsb2NhbGl6ZWQgY3VycmVuY3kgc3ltYm9scyB1c2luZyB0aGUgYnJvd3NlcidzIGBJbnRsLk51bWJlckZvcm1hdGAgQVBJLlxuICogVXNlcyB0aGUgbG9jYWxlIGNvbmZpZ3VyZWQgaW4gYExvY2FsZVNlcnZpY2VgIHRvIGZvcm1hdCBjdXJyZW5jeSBwYXJ0cyBhbmQgZXh0cmFjdCB0aGUgc3ltYm9sLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBjdXJyZW5jeVNlcnZpY2UgPSBpbmplY3QoQ3VycmVuY3lTZXJ2aWNlKTtcbiAqXG4gKiAvLyBHZXQgdGhlIHN5bWJvbCBmb3IgQlJMIGluIHRoZSBhY3RpdmUgbG9jYWxlXG4gKiBjb25zdCBzeW1ib2wgPSBjdXJyZW5jeVNlcnZpY2UuZ2V0Q3VycmVuY3lTeW1ib2woeyBjdXJyZW5jeTogJ0JSTCcgfSk7IC8vICdSJCdcbiAqIGBgYFxuICogQGNhdGVnb3J5IEN1cnJlbmN5XG4gKi9cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgQ3VycmVuY3lTZXJ2aWNlIHtcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGxvY2FsZVNlcnZpY2U6IExvY2FsZVNlcnZpY2UpIHt9XG5cbiAgICBnZXRDdXJyZW5jeVN5bWJvbCh7IGN1cnJlbmN5IH06IHsgY3VycmVuY3k6IEN1cnJlbmN5IH0pOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBudW1iZXJGb3JtYXQgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQodGhpcy5sb2NhbGVTZXJ2aWNlLmdldExvY2FsZU9wdGlvbnMoKT8ubG9jYWxlLCB7XG4gICAgICAgICAgICBzdHlsZTogJ2N1cnJlbmN5JyxcbiAgICAgICAgICAgIGN1cnJlbmN5OiAoY3VycmVuY3kgYXMgc3RyaW5nKSA/PyAnQlJMJyxcbiAgICAgICAgICAgIGN1cnJlbmN5RGlzcGxheTogJ25hcnJvd1N5bWJvbCcsXG4gICAgICAgICAgICBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IDUsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBudW1iZXJGb3JtYXQuZm9ybWF0VG9QYXJ0cygxKS5maW5kKCh4KSA9PiB4LnR5cGUgPT09ICdjdXJyZW5jeScpPy52YWx1ZSA/PyAnJztcbiAgICB9XG59XG5cbiJdfQ==
34
+ }] });
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VycmVuY3kuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9jdXJyZW5jeS9zcmMvbGliL2N1cnJlbmN5LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHbkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDJDQUEyQyxDQUFDOztBQUUxRTs7Ozs7Ozs7Ozs7O0dBWUc7QUFFSCxNQUFNLE9BQU8sZUFBZTtJQUNQLGFBQWEsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7SUFHdkQsaUJBQWlCLENBQUMsRUFBRSxRQUFRLEVBQTBCO1FBQ2xELE1BQU0sWUFBWSxHQUFHLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLGdCQUFnQixFQUFFLEVBQUUsTUFBTSxFQUFFO1lBQ3RGLEtBQUssRUFBRSxVQUFVO1lBQ2pCLFFBQVEsRUFBRyxRQUFtQixJQUFJLEtBQUs7WUFDdkMsZUFBZSxFQUFFLGNBQWM7WUFDL0IscUJBQXFCLEVBQUUsQ0FBQztTQUMzQixDQUFDLENBQUM7UUFFSCxPQUFPLFlBQVksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLFVBQVUsQ0FBQyxFQUFFLEtBQUssSUFBSSxFQUFFLENBQUM7SUFDekYsQ0FBQzt3R0FiUSxlQUFlOzRHQUFmLGVBQWUsY0FERixNQUFNOzs0RkFDbkIsZUFBZTtrQkFEM0IsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQ3VycmVuY3kgfSBmcm9tICcuL3R5cGVzL2N1cnJlbmN5JztcbmltcG9ydCB7IExvY2FsZVNlcnZpY2UgfSBmcm9tICdAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzL2xvY2FsZSc7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFNlcnZpY2UgZm9yIHJldHJpZXZpbmcgbG9jYWxpemVkIGN1cnJlbmN5IHN5bWJvbHMgdXNpbmcgdGhlIGJyb3dzZXIncyBgSW50bC5OdW1iZXJGb3JtYXRgIEFQSS5cbiAqIFVzZXMgdGhlIGxvY2FsZSBjb25maWd1cmVkIGluIGBMb2NhbGVTZXJ2aWNlYCB0byBmb3JtYXQgY3VycmVuY3kgcGFydHMgYW5kIGV4dHJhY3QgdGhlIHN5bWJvbC5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgY3VycmVuY3lTZXJ2aWNlID0gaW5qZWN0KEN1cnJlbmN5U2VydmljZSk7XG4gKlxuICogLy8gR2V0IHRoZSBzeW1ib2wgZm9yIEJSTCBpbiB0aGUgYWN0aXZlIGxvY2FsZVxuICogY29uc3Qgc3ltYm9sID0gY3VycmVuY3lTZXJ2aWNlLmdldEN1cnJlbmN5U3ltYm9sKHsgY3VycmVuY3k6ICdCUkwnIH0pOyAvLyAnUiQnXG4gKiBgYGBcbiAqIEBjYXRlZ29yeSBDdXJyZW5jeVxuICovXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIEN1cnJlbmN5U2VydmljZSB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBsb2NhbGVTZXJ2aWNlID0gaW5qZWN0KExvY2FsZVNlcnZpY2UpO1xuXG5cbiAgICBnZXRDdXJyZW5jeVN5bWJvbCh7IGN1cnJlbmN5IH06IHsgY3VycmVuY3k6IEN1cnJlbmN5IH0pOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBudW1iZXJGb3JtYXQgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQodGhpcy5sb2NhbGVTZXJ2aWNlLmdldExvY2FsZU9wdGlvbnMoKT8ubG9jYWxlLCB7XG4gICAgICAgICAgICBzdHlsZTogJ2N1cnJlbmN5JyxcbiAgICAgICAgICAgIGN1cnJlbmN5OiAoY3VycmVuY3kgYXMgc3RyaW5nKSA/PyAnQlJMJyxcbiAgICAgICAgICAgIGN1cnJlbmN5RGlzcGxheTogJ25hcnJvd1N5bWJvbCcsXG4gICAgICAgICAgICBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IDUsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBudW1iZXJGb3JtYXQuZm9ybWF0VG9QYXJ0cygxKS5maW5kKCh4KSA9PiB4LnR5cGUgPT09ICdjdXJyZW5jeScpPy52YWx1ZSA/PyAnJztcbiAgICB9XG59XG5cbiJdfQ==