@ptsecurity/mosaic 13.2.0 → 13.3.0

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 (371) hide show
  1. package/_theming.scss +143 -44
  2. package/_visual.scss +340 -213
  3. package/button/button.component.d.ts +1 -1
  4. package/core/option/option.d.ts +1 -0
  5. package/core/validation/validation.d.ts +3 -3
  6. package/design-tokens/legacy-2017/tokens.d.ts +82 -36
  7. package/design-tokens/pt-2022/tokens.d.ts +78 -32
  8. package/esm2020/autocomplete/autocomplete-origin.directive.mjs +3 -3
  9. package/esm2020/autocomplete/autocomplete-trigger.directive.mjs +3 -3
  10. package/esm2020/autocomplete/autocomplete.component.mjs +3 -3
  11. package/esm2020/autocomplete/autocomplete.module.mjs +4 -4
  12. package/esm2020/button/button.component.mjs +29 -21
  13. package/esm2020/button/button.module.mjs +4 -4
  14. package/esm2020/button-toggle/button-toggle.component.mjs +6 -6
  15. package/esm2020/button-toggle/button-toggle.module.mjs +4 -4
  16. package/esm2020/card/card.component.mjs +3 -3
  17. package/esm2020/card/card.module.mjs +4 -4
  18. package/esm2020/checkbox/checkbox-module.mjs +4 -4
  19. package/esm2020/checkbox/checkbox-required-validator.mjs +3 -3
  20. package/esm2020/checkbox/checkbox.mjs +3 -3
  21. package/esm2020/core/common-behaviors/common-module.mjs +4 -4
  22. package/esm2020/core/error/error-options.mjs +6 -6
  23. package/esm2020/core/formatters/date/formatter.mjs +3 -3
  24. package/esm2020/core/formatters/index.mjs +4 -4
  25. package/esm2020/core/formatters/number/formatter.mjs +4 -4
  26. package/esm2020/core/forms/forms-module.mjs +4 -4
  27. package/esm2020/core/forms/forms.directive.mjs +6 -6
  28. package/esm2020/core/highlight/highlight.pipe.mjs +3 -3
  29. package/esm2020/core/highlight/index.mjs +4 -4
  30. package/esm2020/core/line/line.mjs +7 -7
  31. package/esm2020/core/option/action.mjs +3 -3
  32. package/esm2020/core/option/optgroup.mjs +3 -3
  33. package/esm2020/core/option/option-module.mjs +4 -4
  34. package/esm2020/core/option/option.mjs +10 -7
  35. package/esm2020/core/pop-up/pop-up-trigger.mjs +3 -3
  36. package/esm2020/core/pop-up/pop-up.mjs +3 -3
  37. package/esm2020/core/selection/pseudo-checkbox/pseudo-checkbox.mjs +3 -3
  38. package/esm2020/core/selection/pseudo-checkbox/pseudo-checkbox.module.mjs +4 -4
  39. package/esm2020/core/services/measure-scrollbar.service.mjs +3 -3
  40. package/esm2020/core/validation/validation.mjs +10 -5
  41. package/esm2020/datepicker/calendar-body.component.mjs +3 -3
  42. package/esm2020/datepicker/calendar.component.mjs +6 -6
  43. package/esm2020/datepicker/datepicker-input.directive.mjs +3 -3
  44. package/esm2020/datepicker/datepicker-intl.mjs +3 -3
  45. package/esm2020/datepicker/datepicker-module.mjs +4 -4
  46. package/esm2020/datepicker/datepicker-toggle.component.mjs +6 -6
  47. package/esm2020/datepicker/datepicker.component.mjs +6 -6
  48. package/esm2020/datepicker/month-view.component.mjs +3 -3
  49. package/esm2020/datepicker/multi-year-view.component.mjs +3 -3
  50. package/esm2020/datepicker/year-view.component.mjs +3 -3
  51. package/esm2020/design-tokens/legacy-2017/tokens.mjs +83 -37
  52. package/esm2020/design-tokens/pt-2022/tokens.mjs +79 -33
  53. package/esm2020/divider/divider.component.mjs +3 -3
  54. package/esm2020/divider/divider.module.mjs +4 -4
  55. package/esm2020/dl/dl.component.mjs +9 -9
  56. package/esm2020/dl/dl.module.mjs +4 -4
  57. package/esm2020/dropdown/dropdown-content.directive.mjs +3 -3
  58. package/esm2020/dropdown/dropdown-item.component.mjs +5 -5
  59. package/esm2020/dropdown/dropdown-trigger.directive.mjs +3 -3
  60. package/esm2020/dropdown/dropdown.component.mjs +6 -6
  61. package/esm2020/dropdown/dropdown.module.mjs +4 -4
  62. package/esm2020/form-field/cleaner.mjs +3 -3
  63. package/esm2020/form-field/form-field.mjs +7 -7
  64. package/esm2020/form-field/form-field.module.mjs +4 -4
  65. package/esm2020/form-field/hint.mjs +3 -3
  66. package/esm2020/form-field/password-hint.mjs +34 -15
  67. package/esm2020/form-field/prefix.mjs +3 -3
  68. package/esm2020/form-field/stepper.mjs +3 -3
  69. package/esm2020/form-field/suffix.mjs +3 -3
  70. package/esm2020/icon/icon.component.mjs +6 -6
  71. package/esm2020/icon/icon.module.mjs +4 -4
  72. package/esm2020/input/input-number-validators.mjs +6 -6
  73. package/esm2020/input/input-number.mjs +3 -3
  74. package/esm2020/input/input-password.mjs +12 -11
  75. package/esm2020/input/input.mjs +12 -11
  76. package/esm2020/input/input.module.mjs +4 -4
  77. package/esm2020/link/link.component.mjs +3 -3
  78. package/esm2020/link/link.module.mjs +4 -4
  79. package/esm2020/list/list-selection.component.mjs +11 -11
  80. package/esm2020/list/list.component.mjs +7 -7
  81. package/esm2020/list/list.module.mjs +4 -4
  82. package/esm2020/modal/css-unit.pipe.mjs +3 -3
  83. package/esm2020/modal/modal-control.service.mjs +3 -3
  84. package/esm2020/modal/modal.component.mjs +4 -4
  85. package/esm2020/modal/modal.directive.mjs +12 -12
  86. package/esm2020/modal/modal.module.mjs +4 -4
  87. package/esm2020/modal/modal.service.mjs +3 -3
  88. package/esm2020/navbar/navbar-item.component.mjs +80 -79
  89. package/esm2020/navbar/navbar.component.mjs +10 -10
  90. package/esm2020/navbar/navbar.module.mjs +4 -4
  91. package/esm2020/navbar/vertical-navbar.component.mjs +6 -6
  92. package/esm2020/popover/popover-confirm.component.mjs +8 -8
  93. package/esm2020/popover/popover.component.mjs +8 -8
  94. package/esm2020/popover/popover.module.mjs +4 -4
  95. package/esm2020/progress-bar/progress-bar.component.mjs +3 -3
  96. package/esm2020/progress-bar/progress-bar.module.mjs +4 -4
  97. package/esm2020/progress-spinner/progress-spinner.component.mjs +3 -3
  98. package/esm2020/progress-spinner/progress-spinner.module.mjs +4 -4
  99. package/esm2020/radio/radio.component.mjs +6 -6
  100. package/esm2020/radio/radio.module.mjs +4 -4
  101. package/esm2020/select/public-api.mjs +2 -1
  102. package/esm2020/select/select-option.directive.mjs +65 -0
  103. package/esm2020/select/select.component.mjs +16 -16
  104. package/esm2020/select/select.module.mjs +19 -10
  105. package/esm2020/sidebar/sidebar.component.mjs +9 -9
  106. package/esm2020/sidebar/sidebar.module.mjs +4 -4
  107. package/esm2020/sidepanel/sidepanel-container.component.mjs +5 -5
  108. package/esm2020/sidepanel/sidepanel-directives.mjs +15 -15
  109. package/esm2020/sidepanel/sidepanel.module.mjs +4 -4
  110. package/esm2020/sidepanel/sidepanel.service.mjs +3 -3
  111. package/esm2020/splitter/splitter.component.mjs +12 -12
  112. package/esm2020/splitter/splitter.module.mjs +4 -4
  113. package/esm2020/table/table.component.mjs +3 -3
  114. package/esm2020/table/table.module.mjs +4 -4
  115. package/esm2020/tabs/paginated-tab-header.mjs +3 -3
  116. package/esm2020/tabs/tab-body.component.mjs +6 -6
  117. package/esm2020/tabs/tab-content.directive.mjs +3 -3
  118. package/esm2020/tabs/tab-group.component.mjs +19 -19
  119. package/esm2020/tabs/tab-header.component.mjs +3 -3
  120. package/esm2020/tabs/tab-label-wrapper.directive.mjs +3 -3
  121. package/esm2020/tabs/tab-label.directive.mjs +3 -3
  122. package/esm2020/tabs/tab-nav-bar/tab-nav-bar.mjs +6 -6
  123. package/esm2020/tabs/tab.component.mjs +3 -3
  124. package/esm2020/tabs/tabs.module.mjs +4 -4
  125. package/esm2020/tags/tag-input.mjs +3 -3
  126. package/esm2020/tags/tag-list.component.mjs +6 -6
  127. package/esm2020/tags/tag.component.mjs +60 -60
  128. package/esm2020/tags/tag.module.mjs +4 -4
  129. package/esm2020/textarea/textarea.component.mjs +9 -8
  130. package/esm2020/textarea/textarea.module.mjs +4 -4
  131. package/esm2020/timepicker/timepicker.directive.mjs +3 -3
  132. package/esm2020/timepicker/timepicker.module.mjs +4 -4
  133. package/esm2020/toggle/toggle.component.mjs +3 -3
  134. package/esm2020/toggle/toggle.module.mjs +4 -4
  135. package/esm2020/tooltip/tooltip.component.mjs +14 -13
  136. package/esm2020/tooltip/tooltip.module.mjs +4 -4
  137. package/esm2020/tree/node.mjs +3 -3
  138. package/esm2020/tree/outlet.mjs +3 -3
  139. package/esm2020/tree/padding.directive.mjs +12 -9
  140. package/esm2020/tree/toggle.mjs +10 -10
  141. package/esm2020/tree/tree-base.mjs +6 -6
  142. package/esm2020/tree/tree-option.component.mjs +9 -9
  143. package/esm2020/tree/tree-selection.component.mjs +8 -6
  144. package/esm2020/tree/tree.mjs +3 -3
  145. package/esm2020/tree/tree.module.mjs +4 -4
  146. package/esm2020/tree-select/tree-select.component.mjs +14 -14
  147. package/esm2020/tree-select/tree-select.module.mjs +4 -4
  148. package/fesm2015/ptsecurity-mosaic-autocomplete.mjs +13 -13
  149. package/fesm2015/ptsecurity-mosaic-button-toggle.mjs +10 -10
  150. package/fesm2015/ptsecurity-mosaic-button.mjs +32 -24
  151. package/fesm2015/ptsecurity-mosaic-button.mjs.map +1 -1
  152. package/fesm2015/ptsecurity-mosaic-card.mjs +7 -7
  153. package/fesm2015/ptsecurity-mosaic-checkbox.mjs +10 -10
  154. package/fesm2015/ptsecurity-mosaic-core.mjs +89 -81
  155. package/fesm2015/ptsecurity-mosaic-core.mjs.map +1 -1
  156. package/fesm2015/ptsecurity-mosaic-datepicker.mjs +40 -40
  157. package/fesm2015/ptsecurity-mosaic-design-tokens.mjs +218 -80
  158. package/fesm2015/ptsecurity-mosaic-design-tokens.mjs.map +1 -1
  159. package/fesm2015/ptsecurity-mosaic-divider.mjs +7 -7
  160. package/fesm2015/ptsecurity-mosaic-dl.mjs +13 -13
  161. package/fesm2015/ptsecurity-mosaic-dropdown.mjs +19 -19
  162. package/fesm2015/ptsecurity-mosaic-dropdown.mjs.map +1 -1
  163. package/fesm2015/ptsecurity-mosaic-form-field.mjs +60 -38
  164. package/fesm2015/ptsecurity-mosaic-form-field.mjs.map +1 -1
  165. package/fesm2015/ptsecurity-mosaic-icon.mjs +10 -10
  166. package/fesm2015/ptsecurity-mosaic-input.mjs +33 -31
  167. package/fesm2015/ptsecurity-mosaic-input.mjs.map +1 -1
  168. package/fesm2015/ptsecurity-mosaic-link.mjs +7 -7
  169. package/fesm2015/ptsecurity-mosaic-list.mjs +21 -21
  170. package/fesm2015/ptsecurity-mosaic-list.mjs.map +1 -1
  171. package/fesm2015/ptsecurity-mosaic-modal.mjs +29 -29
  172. package/fesm2015/ptsecurity-mosaic-modal.mjs.map +1 -1
  173. package/fesm2015/ptsecurity-mosaic-navbar.mjs +97 -96
  174. package/fesm2015/ptsecurity-mosaic-navbar.mjs.map +1 -1
  175. package/fesm2015/ptsecurity-mosaic-popover.mjs +18 -18
  176. package/fesm2015/ptsecurity-mosaic-popover.mjs.map +1 -1
  177. package/fesm2015/ptsecurity-mosaic-progress-bar.mjs +7 -7
  178. package/fesm2015/ptsecurity-mosaic-progress-spinner.mjs +7 -7
  179. package/fesm2015/ptsecurity-mosaic-radio.mjs +10 -10
  180. package/fesm2015/ptsecurity-mosaic-select.mjs +99 -33
  181. package/fesm2015/ptsecurity-mosaic-select.mjs.map +1 -1
  182. package/fesm2015/ptsecurity-mosaic-sidebar.mjs +13 -13
  183. package/fesm2015/ptsecurity-mosaic-sidepanel.mjs +26 -26
  184. package/fesm2015/ptsecurity-mosaic-sidepanel.mjs.map +1 -1
  185. package/fesm2015/ptsecurity-mosaic-splitter.mjs +16 -16
  186. package/fesm2015/ptsecurity-mosaic-table.mjs +7 -7
  187. package/fesm2015/ptsecurity-mosaic-tabs.mjs +53 -53
  188. package/fesm2015/ptsecurity-mosaic-tabs.mjs.map +1 -1
  189. package/fesm2015/ptsecurity-mosaic-tags.mjs +74 -74
  190. package/fesm2015/ptsecurity-mosaic-tags.mjs.map +1 -1
  191. package/fesm2015/ptsecurity-mosaic-textarea.mjs +11 -10
  192. package/fesm2015/ptsecurity-mosaic-textarea.mjs.map +1 -1
  193. package/fesm2015/ptsecurity-mosaic-timepicker.mjs +7 -7
  194. package/fesm2015/ptsecurity-mosaic-toggle.mjs +7 -7
  195. package/fesm2015/ptsecurity-mosaic-tooltip.mjs +17 -16
  196. package/fesm2015/ptsecurity-mosaic-tooltip.mjs.map +1 -1
  197. package/fesm2015/ptsecurity-mosaic-tree-select.mjs +17 -17
  198. package/fesm2015/ptsecurity-mosaic-tree-select.mjs.map +1 -1
  199. package/fesm2015/ptsecurity-mosaic-tree.mjs +158 -155
  200. package/fesm2015/ptsecurity-mosaic-tree.mjs.map +1 -1
  201. package/fesm2020/ptsecurity-mosaic-autocomplete.mjs +13 -13
  202. package/fesm2020/ptsecurity-mosaic-button-toggle.mjs +10 -10
  203. package/fesm2020/ptsecurity-mosaic-button.mjs +32 -24
  204. package/fesm2020/ptsecurity-mosaic-button.mjs.map +1 -1
  205. package/fesm2020/ptsecurity-mosaic-card.mjs +7 -7
  206. package/fesm2020/ptsecurity-mosaic-checkbox.mjs +10 -10
  207. package/fesm2020/ptsecurity-mosaic-core.mjs +89 -81
  208. package/fesm2020/ptsecurity-mosaic-core.mjs.map +1 -1
  209. package/fesm2020/ptsecurity-mosaic-datepicker.mjs +40 -40
  210. package/fesm2020/ptsecurity-mosaic-design-tokens.mjs +218 -80
  211. package/fesm2020/ptsecurity-mosaic-design-tokens.mjs.map +1 -1
  212. package/fesm2020/ptsecurity-mosaic-divider.mjs +7 -7
  213. package/fesm2020/ptsecurity-mosaic-dl.mjs +13 -13
  214. package/fesm2020/ptsecurity-mosaic-dropdown.mjs +19 -19
  215. package/fesm2020/ptsecurity-mosaic-dropdown.mjs.map +1 -1
  216. package/fesm2020/ptsecurity-mosaic-form-field.mjs +57 -38
  217. package/fesm2020/ptsecurity-mosaic-form-field.mjs.map +1 -1
  218. package/fesm2020/ptsecurity-mosaic-icon.mjs +10 -10
  219. package/fesm2020/ptsecurity-mosaic-input.mjs +33 -31
  220. package/fesm2020/ptsecurity-mosaic-input.mjs.map +1 -1
  221. package/fesm2020/ptsecurity-mosaic-link.mjs +7 -7
  222. package/fesm2020/ptsecurity-mosaic-list.mjs +21 -21
  223. package/fesm2020/ptsecurity-mosaic-list.mjs.map +1 -1
  224. package/fesm2020/ptsecurity-mosaic-modal.mjs +29 -29
  225. package/fesm2020/ptsecurity-mosaic-modal.mjs.map +1 -1
  226. package/fesm2020/ptsecurity-mosaic-navbar.mjs +97 -96
  227. package/fesm2020/ptsecurity-mosaic-navbar.mjs.map +1 -1
  228. package/fesm2020/ptsecurity-mosaic-popover.mjs +18 -18
  229. package/fesm2020/ptsecurity-mosaic-popover.mjs.map +1 -1
  230. package/fesm2020/ptsecurity-mosaic-progress-bar.mjs +7 -7
  231. package/fesm2020/ptsecurity-mosaic-progress-spinner.mjs +7 -7
  232. package/fesm2020/ptsecurity-mosaic-radio.mjs +10 -10
  233. package/fesm2020/ptsecurity-mosaic-select.mjs +96 -32
  234. package/fesm2020/ptsecurity-mosaic-select.mjs.map +1 -1
  235. package/fesm2020/ptsecurity-mosaic-sidebar.mjs +13 -13
  236. package/fesm2020/ptsecurity-mosaic-sidepanel.mjs +26 -26
  237. package/fesm2020/ptsecurity-mosaic-sidepanel.mjs.map +1 -1
  238. package/fesm2020/ptsecurity-mosaic-splitter.mjs +16 -16
  239. package/fesm2020/ptsecurity-mosaic-table.mjs +7 -7
  240. package/fesm2020/ptsecurity-mosaic-tabs.mjs +53 -53
  241. package/fesm2020/ptsecurity-mosaic-tabs.mjs.map +1 -1
  242. package/fesm2020/ptsecurity-mosaic-tags.mjs +72 -72
  243. package/fesm2020/ptsecurity-mosaic-tags.mjs.map +1 -1
  244. package/fesm2020/ptsecurity-mosaic-textarea.mjs +11 -10
  245. package/fesm2020/ptsecurity-mosaic-textarea.mjs.map +1 -1
  246. package/fesm2020/ptsecurity-mosaic-timepicker.mjs +7 -7
  247. package/fesm2020/ptsecurity-mosaic-toggle.mjs +7 -7
  248. package/fesm2020/ptsecurity-mosaic-tooltip.mjs +17 -16
  249. package/fesm2020/ptsecurity-mosaic-tooltip.mjs.map +1 -1
  250. package/fesm2020/ptsecurity-mosaic-tree-select.mjs +17 -17
  251. package/fesm2020/ptsecurity-mosaic-tree-select.mjs.map +1 -1
  252. package/fesm2020/ptsecurity-mosaic-tree.mjs +155 -152
  253. package/fesm2020/ptsecurity-mosaic-tree.mjs.map +1 -1
  254. package/form-field/password-hint.d.ts +3 -1
  255. package/input/input-password.d.ts +4 -3
  256. package/input/input.d.ts +4 -3
  257. package/list/list-selection.component.d.ts +1 -1
  258. package/navbar/navbar-item.component.d.ts +18 -18
  259. package/package.json +4 -4
  260. package/prebuilt-themes/dark-theme.css +1 -1
  261. package/prebuilt-themes/default-theme.css +1 -1
  262. package/prebuilt-visual/default-visual.css +1 -1
  263. package/select/public-api.d.ts +1 -0
  264. package/select/select-option.directive.d.ts +20 -0
  265. package/select/select.module.d.ts +9 -7
  266. package/tags/tag.component.d.ts +20 -20
  267. package/textarea/textarea.component.d.ts +4 -3
  268. package/toggle/README.md +0 -0
  269. package/tree/padding.directive.d.ts +7 -5
  270. package/tree/tree-option.component.d.ts +2 -2
  271. package/design-tokens/legacy-2017/tokens/components/alert.json5 +0 -83
  272. package/design-tokens/legacy-2017/tokens/components/autocomplete.json5 +0 -11
  273. package/design-tokens/legacy-2017/tokens/components/badge.json5 +0 -174
  274. package/design-tokens/legacy-2017/tokens/components/button-toggle.json5 +0 -10
  275. package/design-tokens/legacy-2017/tokens/components/button.json5 +0 -143
  276. package/design-tokens/legacy-2017/tokens/components/card.json5 +0 -51
  277. package/design-tokens/legacy-2017/tokens/components/checkbox.json5 +0 -39
  278. package/design-tokens/legacy-2017/tokens/components/datepicker.json5 +0 -64
  279. package/design-tokens/legacy-2017/tokens/components/divider.json5 +0 -8
  280. package/design-tokens/legacy-2017/tokens/components/dl.json5 +0 -38
  281. package/design-tokens/legacy-2017/tokens/components/dropdown.json5 +0 -47
  282. package/design-tokens/legacy-2017/tokens/components/form-field.json5 +0 -91
  283. package/design-tokens/legacy-2017/tokens/components/forms.json5 +0 -52
  284. package/design-tokens/legacy-2017/tokens/components/input.json5 +0 -13
  285. package/design-tokens/legacy-2017/tokens/components/link.json5 +0 -56
  286. package/design-tokens/legacy-2017/tokens/components/list.json5 +0 -15
  287. package/design-tokens/legacy-2017/tokens/components/modal.json5 +0 -79
  288. package/design-tokens/legacy-2017/tokens/components/navbar.json5 +0 -69
  289. package/design-tokens/legacy-2017/tokens/components/optgroup.json5 +0 -10
  290. package/design-tokens/legacy-2017/tokens/components/option.json5 +0 -12
  291. package/design-tokens/legacy-2017/tokens/components/popover.json5 +0 -68
  292. package/design-tokens/legacy-2017/tokens/components/popup.json5 +0 -18
  293. package/design-tokens/legacy-2017/tokens/components/progress-bar.json5 +0 -13
  294. package/design-tokens/legacy-2017/tokens/components/progress-spinner.json5 +0 -7
  295. package/design-tokens/legacy-2017/tokens/components/radio.json5 +0 -44
  296. package/design-tokens/legacy-2017/tokens/components/select.json5 +0 -25
  297. package/design-tokens/legacy-2017/tokens/components/sidepanel.json5 +0 -30
  298. package/design-tokens/legacy-2017/tokens/components/table.json5 +0 -15
  299. package/design-tokens/legacy-2017/tokens/components/tabs.json5 +0 -101
  300. package/design-tokens/legacy-2017/tokens/components/tags.json5 +0 -132
  301. package/design-tokens/legacy-2017/tokens/components/textarea.json5 +0 -12
  302. package/design-tokens/legacy-2017/tokens/components/timepicker.json5 +0 -7
  303. package/design-tokens/legacy-2017/tokens/components/toggle.json5 +0 -79
  304. package/design-tokens/legacy-2017/tokens/components/tooltip.json5 +0 -83
  305. package/design-tokens/legacy-2017/tokens/components/tree.json5 +0 -12
  306. package/design-tokens/legacy-2017/tokens/properties/aliases.json5 +0 -3
  307. package/design-tokens/legacy-2017/tokens/properties/colors.json5 +0 -114
  308. package/design-tokens/legacy-2017/tokens/properties/font.json5 +0 -12
  309. package/design-tokens/legacy-2017/tokens/properties/globals.json5 +0 -49
  310. package/design-tokens/legacy-2017/tokens/properties/padding.json5 +0 -3
  311. package/design-tokens/legacy-2017/tokens/properties/palette.json5 +0 -163
  312. package/design-tokens/legacy-2017/tokens/properties/typography.json5 +0 -140
  313. package/design-tokens/pt-2022/tokens/components/alert.json5 +0 -83
  314. package/design-tokens/pt-2022/tokens/components/autocomplete.json5 +0 -11
  315. package/design-tokens/pt-2022/tokens/components/badge.json5 +0 -174
  316. package/design-tokens/pt-2022/tokens/components/button-toggle.json5 +0 -10
  317. package/design-tokens/pt-2022/tokens/components/button.json5 +0 -143
  318. package/design-tokens/pt-2022/tokens/components/card.json5 +0 -51
  319. package/design-tokens/pt-2022/tokens/components/checkbox.json5 +0 -39
  320. package/design-tokens/pt-2022/tokens/components/datepicker.json5 +0 -64
  321. package/design-tokens/pt-2022/tokens/components/divider.json5 +0 -8
  322. package/design-tokens/pt-2022/tokens/components/dl.json5 +0 -38
  323. package/design-tokens/pt-2022/tokens/components/dropdown.json5 +0 -47
  324. package/design-tokens/pt-2022/tokens/components/form-field.json5 +0 -91
  325. package/design-tokens/pt-2022/tokens/components/forms.json5 +0 -52
  326. package/design-tokens/pt-2022/tokens/components/input.json5 +0 -13
  327. package/design-tokens/pt-2022/tokens/components/link.json5 +0 -56
  328. package/design-tokens/pt-2022/tokens/components/list.json5 +0 -15
  329. package/design-tokens/pt-2022/tokens/components/modal.json5 +0 -79
  330. package/design-tokens/pt-2022/tokens/components/navbar.json5 +0 -69
  331. package/design-tokens/pt-2022/tokens/components/optgroup.json5 +0 -10
  332. package/design-tokens/pt-2022/tokens/components/option.json5 +0 -12
  333. package/design-tokens/pt-2022/tokens/components/popover.json5 +0 -68
  334. package/design-tokens/pt-2022/tokens/components/popup.json5 +0 -18
  335. package/design-tokens/pt-2022/tokens/components/progress-bar.json5 +0 -13
  336. package/design-tokens/pt-2022/tokens/components/progress-spinner.json5 +0 -7
  337. package/design-tokens/pt-2022/tokens/components/radio.json5 +0 -44
  338. package/design-tokens/pt-2022/tokens/components/select.json5 +0 -25
  339. package/design-tokens/pt-2022/tokens/components/sidepanel.json5 +0 -30
  340. package/design-tokens/pt-2022/tokens/components/table.json5 +0 -15
  341. package/design-tokens/pt-2022/tokens/components/tabs.json5 +0 -101
  342. package/design-tokens/pt-2022/tokens/components/tags.json5 +0 -132
  343. package/design-tokens/pt-2022/tokens/components/textarea.json5 +0 -12
  344. package/design-tokens/pt-2022/tokens/components/timepicker.json5 +0 -7
  345. package/design-tokens/pt-2022/tokens/components/toggle.json5 +0 -79
  346. package/design-tokens/pt-2022/tokens/components/tooltip.json5 +0 -83
  347. package/design-tokens/pt-2022/tokens/components/tree.json5 +0 -12
  348. package/design-tokens/pt-2022/tokens/properties/aliases.json5 +0 -3
  349. package/design-tokens/pt-2022/tokens/properties/colors.json5 +0 -116
  350. package/design-tokens/pt-2022/tokens/properties/font.json5 +0 -15
  351. package/design-tokens/pt-2022/tokens/properties/globals.json5 +0 -49
  352. package/design-tokens/pt-2022/tokens/properties/padding.json5 +0 -3
  353. package/design-tokens/pt-2022/tokens/properties/palette.json5 +0 -226
  354. package/design-tokens/pt-2022/tokens/properties/typography.json5 +0 -140
  355. package/design-tokens/style-dictionary/build.js +0 -62
  356. package/design-tokens/style-dictionary/configs/css.js +0 -13
  357. package/design-tokens/style-dictionary/configs/index.js +0 -48
  358. package/design-tokens/style-dictionary/configs/js.js +0 -9
  359. package/design-tokens/style-dictionary/configs/scss.js +0 -23
  360. package/design-tokens/style-dictionary/filters/color.js +0 -7
  361. package/design-tokens/style-dictionary/filters/palette.js +0 -7
  362. package/design-tokens/style-dictionary/filters/size.js +0 -7
  363. package/design-tokens/style-dictionary/filters/typography.js +0 -7
  364. package/design-tokens/style-dictionary/formats/palette.js +0 -25
  365. package/design-tokens/style-dictionary/formats/typography.js +0 -52
  366. package/design-tokens/style-dictionary/transformGroups/css.js +0 -13
  367. package/design-tokens/style-dictionary/transformGroups/scss.js +0 -12
  368. package/design-tokens/style-dictionary/transforms/attribute/palette.js +0 -9
  369. package/design-tokens/style-dictionary/transforms/attribute/prefix.js +0 -11
  370. package/design-tokens/style-dictionary/transforms/attribute/size.js +0 -8
  371. package/design-tokens/style-dictionary/transforms/attribute/typography.js +0 -9
@@ -11,8 +11,8 @@ import { McSuffix } from './suffix';
11
11
  import * as i0 from "@angular/core";
12
12
  export class McFormFieldModule {
13
13
  }
14
- /** @nocollapse */ /** @nocollapse */ McFormFieldModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: McFormFieldModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
15
- /** @nocollapse */ /** @nocollapse */ McFormFieldModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: McFormFieldModule, declarations: [McFormField,
14
+ /** @nocollapse */ /** @nocollapse */ McFormFieldModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.4", ngImport: i0, type: McFormFieldModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
15
+ /** @nocollapse */ /** @nocollapse */ McFormFieldModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.4", ngImport: i0, type: McFormFieldModule, declarations: [McFormField,
16
16
  McFormFieldWithoutBorders,
17
17
  McHint,
18
18
  McPasswordHint,
@@ -27,8 +27,8 @@ export class McFormFieldModule {
27
27
  McSuffix,
28
28
  McCleaner,
29
29
  McStepper] });
30
- /** @nocollapse */ /** @nocollapse */ McFormFieldModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: McFormFieldModule, imports: [[CommonModule, McIconModule]] });
31
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: McFormFieldModule, decorators: [{
30
+ /** @nocollapse */ /** @nocollapse */ McFormFieldModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.4", ngImport: i0, type: McFormFieldModule, imports: [[CommonModule, McIconModule]] });
31
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.4", ngImport: i0, type: McFormFieldModule, decorators: [{
32
32
  type: NgModule,
33
33
  args: [{
34
34
  declarations: [
@@ -6,9 +6,9 @@ export class McHint {
6
6
  this.id = `mc-hint-${nextHintUniqueId++}`;
7
7
  }
8
8
  }
9
- /** @nocollapse */ /** @nocollapse */ McHint.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: McHint, deps: [], target: i0.ɵɵFactoryTarget.Directive });
10
- /** @nocollapse */ /** @nocollapse */ McHint.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.0", type: McHint, selector: "mc-hint", inputs: { id: "id" }, host: { properties: { "attr.id": "id" }, classAttribute: "mc-hint" }, ngImport: i0 });
11
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: McHint, decorators: [{
9
+ /** @nocollapse */ /** @nocollapse */ McHint.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.4", ngImport: i0, type: McHint, deps: [], target: i0.ɵɵFactoryTarget.Directive });
10
+ /** @nocollapse */ /** @nocollapse */ McHint.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.4", type: McHint, selector: "mc-hint", inputs: { id: "id" }, host: { properties: { "attr.id": "id" }, classAttribute: "mc-hint" }, ngImport: i0 });
11
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.4", ngImport: i0, type: McHint, decorators: [{
12
12
  type: Directive,
13
13
  args: [{
14
14
  selector: 'mc-hint',
@@ -1,9 +1,9 @@
1
- import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input } from '@angular/core';
1
+ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, forwardRef, Inject, Input } from '@angular/core';
2
2
  import { McFormField } from './form-field';
3
3
  import * as i0 from "@angular/core";
4
- import * as i1 from "./form-field";
5
- import * as i2 from "@ptsecurity/mosaic/icon";
6
- import * as i3 from "@angular/common";
4
+ import * as i1 from "@ptsecurity/mosaic/icon";
5
+ import * as i2 from "@angular/common";
6
+ import * as i3 from "./form-field";
7
7
  let nextPasswordHintUniqueId = 0;
8
8
  export var PasswordRules;
9
9
  (function (PasswordRules) {
@@ -11,13 +11,14 @@ export var PasswordRules;
11
11
  PasswordRules[PasswordRules["UpperLatin"] = 1] = "UpperLatin";
12
12
  PasswordRules[PasswordRules["LowerLatin"] = 2] = "LowerLatin";
13
13
  PasswordRules[PasswordRules["Digit"] = 3] = "Digit";
14
- PasswordRules[PasswordRules["SpecialSymbols"] = 4] = "SpecialSymbols";
14
+ PasswordRules[PasswordRules["LatinAndSpecialSymbols"] = 4] = "LatinAndSpecialSymbols";
15
+ PasswordRules[PasswordRules["Custom"] = 5] = "Custom";
15
16
  })(PasswordRules || (PasswordRules = {}));
16
17
  export const regExpPasswordValidator = {
17
18
  [PasswordRules.LowerLatin]: RegExp(/^(?=.*?[a-z])/),
18
19
  [PasswordRules.UpperLatin]: RegExp(/^(?=.*?[A-Z])/),
19
20
  [PasswordRules.Digit]: RegExp(/^(?=.*?[0-9])/),
20
- [PasswordRules.SpecialSymbols]: RegExp(/^(?=.*?[" !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~"])/)
21
+ [PasswordRules.LatinAndSpecialSymbols]: RegExp(/[^ !`"'#№$%&()*+,-./:;<=>?@[\]^_{|}~A-Za-z0-9]/)
21
22
  };
22
23
  export class McPasswordHint {
23
24
  constructor(changeDetectorRef, formField) {
@@ -34,6 +35,9 @@ export class McPasswordHint {
34
35
  else if (!this.control.focused && !this.isValueChanged()) {
35
36
  this.hasError = !this.checkRule(this.control.value);
36
37
  }
38
+ if (!this.control.required && !this.control.value) {
39
+ this.checked = this.hasError = false;
40
+ }
37
41
  this.lastControlValue = this.control.value;
38
42
  this.changeDetectorRef.markForCheck();
39
43
  };
@@ -45,15 +49,24 @@ export class McPasswordHint {
45
49
  if (this.rule === null) {
46
50
  throw Error('You should set [rule] name');
47
51
  }
52
+ if (this.rule === PasswordRules.Custom && this.regex === undefined) {
53
+ throw Error('You should set [regex] for PasswordRules.Custom');
54
+ }
48
55
  if (this.rule === PasswordRules.Length && (this.min || this.max) === null) {
49
56
  throw Error('For [rule] "Length" need set [min] and [max]');
50
57
  }
51
58
  if (this.rule === PasswordRules.Length) {
52
59
  this.checkRule = this.checkLengthRule;
53
60
  }
54
- else if ([PasswordRules.UpperLatin, PasswordRules.LowerLatin, PasswordRules.Digit, PasswordRules.SpecialSymbols]
55
- .includes(this.rule)) {
56
- this.regex = this.regex || regExpPasswordValidator[this.rule];
61
+ else if ([PasswordRules.UpperLatin, PasswordRules.LowerLatin, PasswordRules.Digit].includes(this.rule)) {
62
+ this.regex = regExpPasswordValidator[this.rule];
63
+ this.checkRule = this.checkRegexRule;
64
+ }
65
+ else if (this.rule === PasswordRules.LatinAndSpecialSymbols) {
66
+ this.regex = regExpPasswordValidator[this.rule];
67
+ this.checkRule = this.checkSpecialSymbolsRegexRule;
68
+ }
69
+ else if (this.rule === PasswordRules.Custom) {
57
70
  this.checkRule = this.checkRegexRule;
58
71
  }
59
72
  else {
@@ -68,20 +81,23 @@ export class McPasswordHint {
68
81
  checkRegexRule(value) {
69
82
  return !!this.regex?.test(value);
70
83
  }
84
+ checkSpecialSymbolsRegexRule(value) {
85
+ return !!value && !this.regex?.test(value);
86
+ }
71
87
  isValueChanged() {
72
88
  return this.lastControlValue !== this.formField.control.value;
73
89
  }
74
90
  }
75
- /** @nocollapse */ /** @nocollapse */ McPasswordHint.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: McPasswordHint, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.McFormField }], target: i0.ɵɵFactoryTarget.Component });
76
- /** @nocollapse */ /** @nocollapse */ McPasswordHint.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.0", type: McPasswordHint, selector: "mc-password-hint", inputs: { id: "id", rule: "rule", min: "min", max: "max", regex: "regex" }, host: { properties: { "class.mc-password-hint_valid": "checked", "class.mc-password-hint_invalid": "hasError", "attr.id": "id" }, classAttribute: "mc-password-hint" }, ngImport: i0, template: `
91
+ /** @nocollapse */ /** @nocollapse */ McPasswordHint.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.4", ngImport: i0, type: McPasswordHint, deps: [{ token: i0.ChangeDetectorRef }, { token: forwardRef(() => McFormField) }], target: i0.ɵɵFactoryTarget.Component });
92
+ /** @nocollapse */ /** @nocollapse */ McPasswordHint.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.4", type: McPasswordHint, selector: "mc-password-hint", inputs: { id: "id", rule: "rule", min: "min", max: "max", regex: "regex" }, host: { properties: { "class.mc-password-hint_valid": "checked", "class.mc-password-hint_invalid": "hasError", "attr.id": "id" }, classAttribute: "mc-password-hint" }, ngImport: i0, template: `
77
93
  <i *ngIf="!checked" class="mc-password-hint__icon" mc-icon="mc-close-M_16"></i>
78
94
  <i *ngIf="checked" class="mc-password-hint__icon" mc-icon="mc-check_16"></i>
79
95
 
80
96
  <span class="mc-password-hint__text">
81
97
  <ng-content></ng-content>
82
98
  </span>
83
- `, isInline: true, components: [{ type: i2.McIcon, selector: "[mc-icon]", inputs: ["color"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.McIconCSSStyler, selector: "[mc-icon]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
84
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: McPasswordHint, decorators: [{
99
+ `, isInline: true, components: [{ type: i1.McIcon, selector: "[mc-icon]", inputs: ["color"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.McIconCSSStyler, selector: "[mc-icon]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
100
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.4", ngImport: i0, type: McPasswordHint, decorators: [{
85
101
  type: Component,
86
102
  args: [{
87
103
  selector: 'mc-password-hint',
@@ -101,7 +117,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImpor
101
117
  },
102
118
  changeDetection: ChangeDetectionStrategy.OnPush
103
119
  }]
104
- }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.McFormField }]; }, propDecorators: { id: [{
120
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i3.McFormField, decorators: [{
121
+ type: Inject,
122
+ args: [forwardRef(() => McFormField)]
123
+ }] }]; }, propDecorators: { id: [{
105
124
  type: Input
106
125
  }], rule: [{
107
126
  type: Input
@@ -112,4 +131,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImpor
112
131
  }], regex: [{
113
132
  type: Input
114
133
  }] } });
115
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFzc3dvcmQtaGludC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL21vc2FpYy9mb3JtLWZpZWxkL3Bhc3N3b3JkLWhpbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULEtBQUssRUFDUixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sY0FBYyxDQUFDOzs7OztBQUczQyxJQUFJLHdCQUF3QixHQUFHLENBQUMsQ0FBQztBQUVqQyxNQUFNLENBQU4sSUFBWSxhQU1YO0FBTkQsV0FBWSxhQUFhO0lBQ3JCLHFEQUFNLENBQUE7SUFDTiw2REFBVSxDQUFBO0lBQ1YsNkRBQVUsQ0FBQTtJQUNWLG1EQUFLLENBQUE7SUFDTCxxRUFBYyxDQUFBO0FBQ2xCLENBQUMsRUFOVyxhQUFhLEtBQWIsYUFBYSxRQU14QjtBQUVELE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHO0lBQ25DLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxlQUFlLENBQUM7SUFDbkQsQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLEVBQUUsTUFBTSxDQUFDLGVBQWUsQ0FBQztJQUNuRCxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsRUFBRSxNQUFNLENBQUMsZUFBZSxDQUFDO0lBQzlDLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxFQUFFLE1BQU0sQ0FBQywrQ0FBK0MsQ0FBQztDQUMxRixDQUFDO0FBcUJGLE1BQU0sT0FBTyxjQUFjO0lBb0J2QixZQUFvQixpQkFBb0MsRUFBVSxTQUFzQjtRQUFwRSxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQVUsY0FBUyxHQUFULFNBQVMsQ0FBYTtRQW5CL0UsT0FBRSxHQUFXLFdBQVcsd0JBQXdCLEVBQUUsRUFBRSxDQUFDO1FBUTlELGFBQVEsR0FBWSxLQUFLLENBQUM7UUFDMUIsWUFBTyxHQUFZLEtBQUssQ0FBQztRQXFDakIsZUFBVSxHQUFHLEdBQUcsRUFBRTtZQUN0QixJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUUsRUFBRTtnQkFDL0MsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7Z0JBRXRCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQ3JEO2lCQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsRUFBRTtnQkFDeEQsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUN2RDtZQUVELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztZQUMzQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDMUMsQ0FBQyxDQUFBO0lBdEMwRixDQUFDO0lBTjVGLElBQVksT0FBTztRQUNmLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUM7SUFDbEMsQ0FBQztJQU1ELGtCQUFrQjtRQUNkLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxJQUFJLEVBQUU7WUFDcEIsTUFBTSxLQUFLLENBQUMsNEJBQTRCLENBQUMsQ0FBQztTQUM3QztRQUVELElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxhQUFhLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssSUFBSSxFQUFFO1lBQ3ZFLE1BQU0sS0FBSyxDQUFDLDhDQUE4QyxDQUFDLENBQUM7U0FDL0Q7UUFFRCxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssYUFBYSxDQUFDLE1BQU0sRUFBRTtZQUNwQyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUM7U0FDekM7YUFBTSxJQUNILENBQUMsYUFBYSxDQUFDLFVBQVUsRUFBRSxhQUFhLENBQUMsVUFBVSxFQUFFLGFBQWEsQ0FBQyxLQUFLLEVBQUUsYUFBYSxDQUFDLGNBQWMsQ0FBQzthQUNsRyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUMxQjtZQUNFLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssSUFBSSx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDOUQsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO1NBQ3hDO2FBQU07WUFDSCxNQUFNLEtBQUssQ0FBQyxrQkFBa0IsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7U0FDOUM7UUFFRCxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxZQUFZO2FBQzlCLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQWVPLGVBQWUsQ0FBQyxLQUFhO1FBQ2pDLE9BQU8sS0FBSyxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsR0FBRyxJQUFJLEtBQUssQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQztJQUNoRSxDQUFDO0lBRU8sY0FBYyxDQUFDLEtBQWE7UUFDaEMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVPLGNBQWM7UUFDbEIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLEtBQUssSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO0lBQ2xFLENBQUM7O2lKQXRFUSxjQUFjO3FJQUFkLGNBQWMsNFNBaEJiOzs7Ozs7O0tBT1Q7MkZBU1EsY0FBYztrQkFsQjFCLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLGtCQUFrQjtvQkFDNUIsUUFBUSxFQUFFOzs7Ozs7O0tBT1Q7b0JBQ0QsSUFBSSxFQUFFO3dCQUNGLEtBQUssRUFBRSxrQkFBa0I7d0JBQ3pCLGdDQUFnQyxFQUFFLFNBQVM7d0JBQzNDLGtDQUFrQyxFQUFFLFVBQVU7d0JBQzlDLFdBQVcsRUFBRSxJQUFJO3FCQUNwQjtvQkFDRCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtpQkFDbEQ7a0lBRVksRUFBRTtzQkFBVixLQUFLO2dCQUVHLElBQUk7c0JBQVosS0FBSztnQkFFRyxHQUFHO3NCQUFYLEtBQUs7Z0JBQ0csR0FBRztzQkFBWCxLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgSW5wdXRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IE1jRm9ybUZpZWxkIH0gZnJvbSAnLi9mb3JtLWZpZWxkJztcblxuXG5sZXQgbmV4dFBhc3N3b3JkSGludFVuaXF1ZUlkID0gMDtcblxuZXhwb3J0IGVudW0gUGFzc3dvcmRSdWxlcyB7XG4gICAgTGVuZ3RoLFxuICAgIFVwcGVyTGF0aW4sXG4gICAgTG93ZXJMYXRpbixcbiAgICBEaWdpdCxcbiAgICBTcGVjaWFsU3ltYm9sc1xufVxuXG5leHBvcnQgY29uc3QgcmVnRXhwUGFzc3dvcmRWYWxpZGF0b3IgPSB7XG4gICAgW1Bhc3N3b3JkUnVsZXMuTG93ZXJMYXRpbl06IFJlZ0V4cCgvXig/PS4qP1thLXpdKS8pLFxuICAgIFtQYXNzd29yZFJ1bGVzLlVwcGVyTGF0aW5dOiBSZWdFeHAoL14oPz0uKj9bQS1aXSkvKSxcbiAgICBbUGFzc3dvcmRSdWxlcy5EaWdpdF06IFJlZ0V4cCgvXig/PS4qP1swLTldKS8pLFxuICAgIFtQYXNzd29yZFJ1bGVzLlNwZWNpYWxTeW1ib2xzXTogUmVnRXhwKC9eKD89Lio/W1wiICFcIiMkJSYnKCkqKywtLi86Ozw9Pj9AW1xcXV5fYHt8fX5cIl0pLylcbn07XG5cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdtYy1wYXNzd29yZC1oaW50JyxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8aSAqbmdJZj1cIiFjaGVja2VkXCIgY2xhc3M9XCJtYy1wYXNzd29yZC1oaW50X19pY29uXCIgbWMtaWNvbj1cIm1jLWNsb3NlLU1fMTZcIj48L2k+XG4gICAgICAgIDxpICpuZ0lmPVwiY2hlY2tlZFwiIGNsYXNzPVwibWMtcGFzc3dvcmQtaGludF9faWNvblwiIG1jLWljb249XCJtYy1jaGVja18xNlwiPjwvaT5cblxuICAgICAgICA8c3BhbiBjbGFzcz1cIm1jLXBhc3N3b3JkLWhpbnRfX3RleHRcIj5cbiAgICAgICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICAgICAgPC9zcGFuPlxuICAgIGAsXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ21jLXBhc3N3b3JkLWhpbnQnLFxuICAgICAgICAnW2NsYXNzLm1jLXBhc3N3b3JkLWhpbnRfdmFsaWRdJzogJ2NoZWNrZWQnLFxuICAgICAgICAnW2NsYXNzLm1jLXBhc3N3b3JkLWhpbnRfaW52YWxpZF0nOiAnaGFzRXJyb3InLFxuICAgICAgICAnW2F0dHIuaWRdJzogJ2lkJ1xuICAgIH0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgTWNQYXNzd29yZEhpbnQgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0IHtcbiAgICBASW5wdXQoKSBpZDogc3RyaW5nID0gYG1jLWhpbnQtJHtuZXh0UGFzc3dvcmRIaW50VW5pcXVlSWQrK31gO1xuXG4gICAgQElucHV0KCkgcnVsZTogUGFzc3dvcmRSdWxlcyB8IGFueTtcblxuICAgIEBJbnB1dCgpIG1pbjogbnVtYmVyO1xuICAgIEBJbnB1dCgpIG1heDogbnVtYmVyO1xuICAgIEBJbnB1dCgpIHJlZ2V4OiBSZWdFeHAgfCBudWxsO1xuXG4gICAgaGFzRXJyb3I6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBjaGVja2VkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBwcml2YXRlIGNoZWNrUnVsZTogKHZhbHVlOiBzdHJpbmcpID0+IGJvb2xlYW47XG5cbiAgICBwcml2YXRlIGdldCBjb250cm9sKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5mb3JtRmllbGQuY29udHJvbDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGxhc3RDb250cm9sVmFsdWU6IHN0cmluZztcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLCBwcml2YXRlIGZvcm1GaWVsZDogTWNGb3JtRmllbGQpIHt9XG5cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnJ1bGUgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHRocm93IEVycm9yKCdZb3Ugc2hvdWxkIHNldCBbcnVsZV0gbmFtZScpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMucnVsZSA9PT0gUGFzc3dvcmRSdWxlcy5MZW5ndGggJiYgKHRoaXMubWluIHx8IHRoaXMubWF4KSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgdGhyb3cgRXJyb3IoJ0ZvciBbcnVsZV0gXCJMZW5ndGhcIiBuZWVkIHNldCBbbWluXSBhbmQgW21heF0nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnJ1bGUgPT09IFBhc3N3b3JkUnVsZXMuTGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLmNoZWNrUnVsZSA9IHRoaXMuY2hlY2tMZW5ndGhSdWxlO1xuICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgW1Bhc3N3b3JkUnVsZXMuVXBwZXJMYXRpbiwgUGFzc3dvcmRSdWxlcy5Mb3dlckxhdGluLCBQYXNzd29yZFJ1bGVzLkRpZ2l0LCBQYXNzd29yZFJ1bGVzLlNwZWNpYWxTeW1ib2xzXVxuICAgICAgICAgICAgICAgIC5pbmNsdWRlcyh0aGlzLnJ1bGUpXG4gICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5yZWdleCA9IHRoaXMucmVnZXggfHwgcmVnRXhwUGFzc3dvcmRWYWxpZGF0b3JbdGhpcy5ydWxlXTtcbiAgICAgICAgICAgIHRoaXMuY2hlY2tSdWxlID0gdGhpcy5jaGVja1JlZ2V4UnVsZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IEVycm9yKGBVbmtub3duIFtydWxlXT0ke3RoaXMucnVsZX1gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZm9ybUZpZWxkLmNvbnRyb2wuc3RhdGVDaGFuZ2VzXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHRoaXMuY2hlY2tWYWx1ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjaGVja1ZhbHVlID0gKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5jb250cm9sLmZvY3VzZWQgJiYgdGhpcy5pc1ZhbHVlQ2hhbmdlZCgpKSB7XG4gICAgICAgICAgICB0aGlzLmhhc0Vycm9yID0gZmFsc2U7XG5cbiAgICAgICAgICAgIHRoaXMuY2hlY2tlZCA9IHRoaXMuY2hlY2tSdWxlKHRoaXMuY29udHJvbC52YWx1ZSk7XG4gICAgICAgIH0gZWxzZSBpZiAoIXRoaXMuY29udHJvbC5mb2N1c2VkICYmICF0aGlzLmlzVmFsdWVDaGFuZ2VkKCkpIHtcbiAgICAgICAgICAgIHRoaXMuaGFzRXJyb3IgPSAhdGhpcy5jaGVja1J1bGUodGhpcy5jb250cm9sLnZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMubGFzdENvbnRyb2xWYWx1ZSA9IHRoaXMuY29udHJvbC52YWx1ZTtcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNoZWNrTGVuZ3RoUnVsZSh2YWx1ZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB2YWx1ZS5sZW5ndGggPj0gdGhpcy5taW4gJiYgdmFsdWUubGVuZ3RoIDw9IHRoaXMubWF4O1xuICAgIH1cblxuICAgIHByaXZhdGUgY2hlY2tSZWdleFJ1bGUodmFsdWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISF0aGlzLnJlZ2V4Py50ZXN0KHZhbHVlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzVmFsdWVDaGFuZ2VkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5sYXN0Q29udHJvbFZhbHVlICE9PSB0aGlzLmZvcm1GaWVsZC5jb250cm9sLnZhbHVlO1xuICAgIH1cbn1cbiJdfQ==
134
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFzc3dvcmQtaGludC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL21vc2FpYy9mb3JtLWZpZWxkL3Bhc3N3b3JkLWhpbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxFQUNSLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxjQUFjLENBQUM7Ozs7O0FBRzNDLElBQUksd0JBQXdCLEdBQUcsQ0FBQyxDQUFDO0FBRWpDLE1BQU0sQ0FBTixJQUFZLGFBT1g7QUFQRCxXQUFZLGFBQWE7SUFDckIscURBQU0sQ0FBQTtJQUNOLDZEQUFVLENBQUE7SUFDViw2REFBVSxDQUFBO0lBQ1YsbURBQUssQ0FBQTtJQUNMLHFGQUFzQixDQUFBO0lBQ3RCLHFEQUFNLENBQUE7QUFDVixDQUFDLEVBUFcsYUFBYSxLQUFiLGFBQWEsUUFPeEI7QUFFRCxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRztJQUNuQyxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsRUFBRSxNQUFNLENBQUMsZUFBZSxDQUFDO0lBQ25ELENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxlQUFlLENBQUM7SUFDbkQsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLEVBQUUsTUFBTSxDQUFDLGVBQWUsQ0FBQztJQUM5QyxDQUFDLGFBQWEsQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxnREFBZ0QsQ0FBQztDQUNuRyxDQUFDO0FBcUJGLE1BQU0sT0FBTyxjQUFjO0lBb0J2QixZQUNZLGlCQUFvQyxFQUNHLFNBQXNCO1FBRDdELHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDRyxjQUFTLEdBQVQsU0FBUyxDQUFhO1FBckJoRSxPQUFFLEdBQVcsV0FBVyx3QkFBd0IsRUFBRSxFQUFFLENBQUM7UUFROUQsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUMxQixZQUFPLEdBQVksS0FBSyxDQUFDO1FBOENqQixlQUFVLEdBQUcsR0FBRyxFQUFFO1lBQ3RCLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRSxFQUFFO2dCQUMvQyxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztnQkFFdEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDckQ7aUJBQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxFQUFFO2dCQUN4RCxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQ3ZEO1lBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUU7Z0JBQy9DLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7YUFDeEM7WUFFRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7WUFDM0MsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzFDLENBQUMsQ0FBQTtJQWhERSxDQUFDO0lBVEosSUFBWSxPQUFPO1FBQ2YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQztJQUNsQyxDQUFDO0lBU0Qsa0JBQWtCO1FBQ2QsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLElBQUksRUFBRTtZQUNwQixNQUFNLEtBQUssQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO1NBQzdDO1FBRUQsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLGFBQWEsQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxTQUFTLEVBQUU7WUFDaEUsTUFBTSxLQUFLLENBQUMsaURBQWlELENBQUMsQ0FBQztTQUNsRTtRQUVELElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxhQUFhLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssSUFBSSxFQUFFO1lBQ3ZFLE1BQU0sS0FBSyxDQUFDLDhDQUE4QyxDQUFDLENBQUM7U0FDL0Q7UUFFRCxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssYUFBYSxDQUFDLE1BQU0sRUFBRTtZQUNwQyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUM7U0FDekM7YUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsRUFBRSxhQUFhLENBQUMsVUFBVSxFQUFFLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ3RHLElBQUksQ0FBQyxLQUFLLEdBQUcsdUJBQXVCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2hELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQztTQUN4QzthQUFNLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxhQUFhLENBQUMsc0JBQXNCLEVBQUU7WUFDM0QsSUFBSSxDQUFDLEtBQUssR0FBRyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDaEQsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsNEJBQTRCLENBQUM7U0FDdEQ7YUFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssYUFBYSxDQUFDLE1BQU0sRUFBRTtZQUMzQyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUM7U0FDeEM7YUFBTTtZQUNILE1BQU0sS0FBSyxDQUFDLGtCQUFrQixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztTQUM5QztRQUVELElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLFlBQVk7YUFDOUIsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBbUJPLGVBQWUsQ0FBQyxLQUFhO1FBQ2pDLE9BQU8sS0FBSyxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsR0FBRyxJQUFJLEtBQUssQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQztJQUNoRSxDQUFDO0lBRU8sY0FBYyxDQUFDLEtBQWE7UUFDaEMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVPLDRCQUE0QixDQUFDLEtBQWE7UUFDOUMsT0FBTyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVPLGNBQWM7UUFDbEIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLEtBQUssSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO0lBQ2xFLENBQUM7O2lKQXZGUSxjQUFjLG1EQXNCWCxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsV0FBVyxDQUFDO3FJQXRCaEMsY0FBYyw0U0FoQmI7Ozs7Ozs7S0FPVDsyRkFTUSxjQUFjO2tCQWxCMUIsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsa0JBQWtCO29CQUM1QixRQUFRLEVBQUU7Ozs7Ozs7S0FPVDtvQkFDRCxJQUFJLEVBQUU7d0JBQ0YsS0FBSyxFQUFFLGtCQUFrQjt3QkFDekIsZ0NBQWdDLEVBQUUsU0FBUzt3QkFDM0Msa0NBQWtDLEVBQUUsVUFBVTt3QkFDOUMsV0FBVyxFQUFFLElBQUk7cUJBQ3BCO29CQUNELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2lCQUNsRDs7MEJBdUJRLE1BQU07MkJBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBQzs0Q0FyQmhDLEVBQUU7c0JBQVYsS0FBSztnQkFFRyxJQUFJO3NCQUFaLEtBQUs7Z0JBRUcsR0FBRztzQkFBWCxLQUFLO2dCQUNHLEdBQUc7c0JBQVgsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyQ29udGVudEluaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIGZvcndhcmRSZWYsXG4gICAgSW5qZWN0LFxuICAgIElucHV0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBNY0Zvcm1GaWVsZCB9IGZyb20gJy4vZm9ybS1maWVsZCc7XG5cblxubGV0IG5leHRQYXNzd29yZEhpbnRVbmlxdWVJZCA9IDA7XG5cbmV4cG9ydCBlbnVtIFBhc3N3b3JkUnVsZXMge1xuICAgIExlbmd0aCxcbiAgICBVcHBlckxhdGluLFxuICAgIExvd2VyTGF0aW4sXG4gICAgRGlnaXQsXG4gICAgTGF0aW5BbmRTcGVjaWFsU3ltYm9scyxcbiAgICBDdXN0b21cbn1cblxuZXhwb3J0IGNvbnN0IHJlZ0V4cFBhc3N3b3JkVmFsaWRhdG9yID0ge1xuICAgIFtQYXNzd29yZFJ1bGVzLkxvd2VyTGF0aW5dOiBSZWdFeHAoL14oPz0uKj9bYS16XSkvKSxcbiAgICBbUGFzc3dvcmRSdWxlcy5VcHBlckxhdGluXTogUmVnRXhwKC9eKD89Lio/W0EtWl0pLyksXG4gICAgW1Bhc3N3b3JkUnVsZXMuRGlnaXRdOiBSZWdFeHAoL14oPz0uKj9bMC05XSkvKSxcbiAgICBbUGFzc3dvcmRSdWxlcy5MYXRpbkFuZFNwZWNpYWxTeW1ib2xzXTogUmVnRXhwKC9bXiAhYFwiJyPihJYkJSYoKSorLC0uLzo7PD0+P0BbXFxdXl97fH1+QS1aYS16MC05XS8pXG59O1xuXG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbWMtcGFzc3dvcmQtaGludCcsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPGkgKm5nSWY9XCIhY2hlY2tlZFwiIGNsYXNzPVwibWMtcGFzc3dvcmQtaGludF9faWNvblwiIG1jLWljb249XCJtYy1jbG9zZS1NXzE2XCI+PC9pPlxuICAgICAgICA8aSAqbmdJZj1cImNoZWNrZWRcIiBjbGFzcz1cIm1jLXBhc3N3b3JkLWhpbnRfX2ljb25cIiBtYy1pY29uPVwibWMtY2hlY2tfMTZcIj48L2k+XG5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJtYy1wYXNzd29yZC1oaW50X190ZXh0XCI+XG4gICAgICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgICAgIDwvc3Bhbj5cbiAgICBgLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICdtYy1wYXNzd29yZC1oaW50JyxcbiAgICAgICAgJ1tjbGFzcy5tYy1wYXNzd29yZC1oaW50X3ZhbGlkXSc6ICdjaGVja2VkJyxcbiAgICAgICAgJ1tjbGFzcy5tYy1wYXNzd29yZC1oaW50X2ludmFsaWRdJzogJ2hhc0Vycm9yJyxcbiAgICAgICAgJ1thdHRyLmlkXSc6ICdpZCdcbiAgICB9LFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIE1jUGFzc3dvcmRIaW50IGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCB7XG4gICAgQElucHV0KCkgaWQ6IHN0cmluZyA9IGBtYy1oaW50LSR7bmV4dFBhc3N3b3JkSGludFVuaXF1ZUlkKyt9YDtcblxuICAgIEBJbnB1dCgpIHJ1bGU6IFBhc3N3b3JkUnVsZXMgfCBhbnk7XG5cbiAgICBASW5wdXQoKSBtaW46IG51bWJlcjtcbiAgICBASW5wdXQoKSBtYXg6IG51bWJlcjtcbiAgICBASW5wdXQoKSByZWdleDogUmVnRXhwIHwgbnVsbDtcblxuICAgIGhhc0Vycm9yOiBib29sZWFuID0gZmFsc2U7XG4gICAgY2hlY2tlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgcHJpdmF0ZSBjaGVja1J1bGU6ICh2YWx1ZTogc3RyaW5nKSA9PiBib29sZWFuO1xuXG4gICAgcHJpdmF0ZSBnZXQgY29udHJvbCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybUZpZWxkLmNvbnRyb2w7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBsYXN0Q29udHJvbFZhbHVlOiBzdHJpbmc7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIEBJbmplY3QoZm9yd2FyZFJlZigoKSA9PiBNY0Zvcm1GaWVsZCkpIHByaXZhdGUgZm9ybUZpZWxkOiBNY0Zvcm1GaWVsZFxuICAgICkge31cblxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMucnVsZSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgdGhyb3cgRXJyb3IoJ1lvdSBzaG91bGQgc2V0IFtydWxlXSBuYW1lJyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5ydWxlID09PSBQYXNzd29yZFJ1bGVzLkN1c3RvbSAmJiB0aGlzLnJlZ2V4ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRocm93IEVycm9yKCdZb3Ugc2hvdWxkIHNldCBbcmVnZXhdIGZvciBQYXNzd29yZFJ1bGVzLkN1c3RvbScpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMucnVsZSA9PT0gUGFzc3dvcmRSdWxlcy5MZW5ndGggJiYgKHRoaXMubWluIHx8IHRoaXMubWF4KSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgdGhyb3cgRXJyb3IoJ0ZvciBbcnVsZV0gXCJMZW5ndGhcIiBuZWVkIHNldCBbbWluXSBhbmQgW21heF0nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnJ1bGUgPT09IFBhc3N3b3JkUnVsZXMuTGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLmNoZWNrUnVsZSA9IHRoaXMuY2hlY2tMZW5ndGhSdWxlO1xuICAgICAgICB9IGVsc2UgaWYgKFtQYXNzd29yZFJ1bGVzLlVwcGVyTGF0aW4sIFBhc3N3b3JkUnVsZXMuTG93ZXJMYXRpbiwgUGFzc3dvcmRSdWxlcy5EaWdpdF0uaW5jbHVkZXModGhpcy5ydWxlKSkge1xuICAgICAgICAgICAgdGhpcy5yZWdleCA9IHJlZ0V4cFBhc3N3b3JkVmFsaWRhdG9yW3RoaXMucnVsZV07XG4gICAgICAgICAgICB0aGlzLmNoZWNrUnVsZSA9IHRoaXMuY2hlY2tSZWdleFJ1bGU7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5ydWxlID09PSBQYXNzd29yZFJ1bGVzLkxhdGluQW5kU3BlY2lhbFN5bWJvbHMpIHtcbiAgICAgICAgICAgIHRoaXMucmVnZXggPSByZWdFeHBQYXNzd29yZFZhbGlkYXRvclt0aGlzLnJ1bGVdO1xuICAgICAgICAgICAgdGhpcy5jaGVja1J1bGUgPSB0aGlzLmNoZWNrU3BlY2lhbFN5bWJvbHNSZWdleFJ1bGU7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5ydWxlID09PSBQYXNzd29yZFJ1bGVzLkN1c3RvbSkge1xuICAgICAgICAgICAgdGhpcy5jaGVja1J1bGUgPSB0aGlzLmNoZWNrUmVnZXhSdWxlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgRXJyb3IoYFVua25vd24gW3J1bGVdPSR7dGhpcy5ydWxlfWApO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5mb3JtRmllbGQuY29udHJvbC5zdGF0ZUNoYW5nZXNcbiAgICAgICAgICAgIC5zdWJzY3JpYmUodGhpcy5jaGVja1ZhbHVlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNoZWNrVmFsdWUgPSAoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmNvbnRyb2wuZm9jdXNlZCAmJiB0aGlzLmlzVmFsdWVDaGFuZ2VkKCkpIHtcbiAgICAgICAgICAgIHRoaXMuaGFzRXJyb3IgPSBmYWxzZTtcblxuICAgICAgICAgICAgdGhpcy5jaGVja2VkID0gdGhpcy5jaGVja1J1bGUodGhpcy5jb250cm9sLnZhbHVlKTtcbiAgICAgICAgfSBlbHNlIGlmICghdGhpcy5jb250cm9sLmZvY3VzZWQgJiYgIXRoaXMuaXNWYWx1ZUNoYW5nZWQoKSkge1xuICAgICAgICAgICAgdGhpcy5oYXNFcnJvciA9ICF0aGlzLmNoZWNrUnVsZSh0aGlzLmNvbnRyb2wudmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0aGlzLmNvbnRyb2wucmVxdWlyZWQgJiYgIXRoaXMuY29udHJvbC52YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5jaGVja2VkID0gdGhpcy5oYXNFcnJvciA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5sYXN0Q29udHJvbFZhbHVlID0gdGhpcy5jb250cm9sLnZhbHVlO1xuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2hlY2tMZW5ndGhSdWxlKHZhbHVlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLmxlbmd0aCA+PSB0aGlzLm1pbiAmJiB2YWx1ZS5sZW5ndGggPD0gdGhpcy5tYXg7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjaGVja1JlZ2V4UnVsZSh2YWx1ZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIXRoaXMucmVnZXg/LnRlc3QodmFsdWUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2hlY2tTcGVjaWFsU3ltYm9sc1JlZ2V4UnVsZSh2YWx1ZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIXZhbHVlICYmICF0aGlzLnJlZ2V4Py50ZXN0KHZhbHVlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzVmFsdWVDaGFuZ2VkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5sYXN0Q29udHJvbFZhbHVlICE9PSB0aGlzLmZvcm1GaWVsZC5jb250cm9sLnZhbHVlO1xuICAgIH1cbn1cbiJdfQ==
@@ -2,9 +2,9 @@ import { Directive } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  export class McPrefix {
4
4
  }
5
- /** @nocollapse */ /** @nocollapse */ McPrefix.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: McPrefix, deps: [], target: i0.ɵɵFactoryTarget.Directive });
6
- /** @nocollapse */ /** @nocollapse */ McPrefix.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.0", type: McPrefix, selector: "[mcPrefix]", ngImport: i0 });
7
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: McPrefix, decorators: [{
5
+ /** @nocollapse */ /** @nocollapse */ McPrefix.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.4", ngImport: i0, type: McPrefix, deps: [], target: i0.ɵɵFactoryTarget.Directive });
6
+ /** @nocollapse */ /** @nocollapse */ McPrefix.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.4", type: McPrefix, selector: "[mcPrefix]", ngImport: i0 });
7
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.4", ngImport: i0, type: McPrefix, decorators: [{
8
8
  type: Directive,
9
9
  args: [{
10
10
  selector: '[mcPrefix]'
@@ -25,8 +25,8 @@ export class McStepper {
25
25
  $event.preventDefault();
26
26
  }
27
27
  }
28
- /** @nocollapse */ /** @nocollapse */ McStepper.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: McStepper, deps: [], target: i0.ɵɵFactoryTarget.Component });
29
- /** @nocollapse */ /** @nocollapse */ McStepper.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.0", type: McStepper, selector: "mc-stepper", outputs: { stepUp: "stepUp", stepDown: "stepDown" }, ngImport: i0, template: `
28
+ /** @nocollapse */ /** @nocollapse */ McStepper.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.4", ngImport: i0, type: McStepper, deps: [], target: i0.ɵɵFactoryTarget.Component });
29
+ /** @nocollapse */ /** @nocollapse */ McStepper.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.4", type: McStepper, selector: "mc-stepper", outputs: { stepUp: "stepUp", stepDown: "stepDown" }, ngImport: i0, template: `
30
30
  <i class="mc mc-icon mc-icon_light mc-second mc-stepper-step-up mc-angle-down-L_16"
31
31
  (mousedown)="onStepUp($event)">
32
32
  </i>
@@ -34,7 +34,7 @@ export class McStepper {
34
34
  (mousedown)="onStepDown($event)">
35
35
  </i>
36
36
  `, isInline: true });
37
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: McStepper, decorators: [{
37
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.4", ngImport: i0, type: McStepper, decorators: [{
38
38
  type: Component,
39
39
  args: [{
40
40
  selector: 'mc-stepper',
@@ -2,9 +2,9 @@ import { Directive } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  export class McSuffix {
4
4
  }
5
- /** @nocollapse */ /** @nocollapse */ McSuffix.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: McSuffix, deps: [], target: i0.ɵɵFactoryTarget.Directive });
6
- /** @nocollapse */ /** @nocollapse */ McSuffix.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.0", type: McSuffix, selector: "[mcSuffix]", ngImport: i0 });
7
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: McSuffix, decorators: [{
5
+ /** @nocollapse */ /** @nocollapse */ McSuffix.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.4", ngImport: i0, type: McSuffix, deps: [], target: i0.ɵɵFactoryTarget.Directive });
6
+ /** @nocollapse */ /** @nocollapse */ McSuffix.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.4", type: McSuffix, selector: "[mcSuffix]", ngImport: i0 });
7
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.4", ngImport: i0, type: McSuffix, decorators: [{
8
8
  type: Directive,
9
9
  args: [{
10
10
  selector: '[mcSuffix]'
@@ -4,9 +4,9 @@ import * as i0 from "@angular/core";
4
4
  // tslint:disable-next-line:naming-convention
5
5
  export class McIconCSSStyler {
6
6
  }
7
- /** @nocollapse */ /** @nocollapse */ McIconCSSStyler.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: McIconCSSStyler, deps: [], target: i0.ɵɵFactoryTarget.Directive });
8
- /** @nocollapse */ /** @nocollapse */ McIconCSSStyler.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.0", type: McIconCSSStyler, selector: "[mc-icon]", host: { classAttribute: "mc mc-icon" }, ngImport: i0 });
9
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: McIconCSSStyler, decorators: [{
7
+ /** @nocollapse */ /** @nocollapse */ McIconCSSStyler.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.4", ngImport: i0, type: McIconCSSStyler, deps: [], target: i0.ɵɵFactoryTarget.Directive });
8
+ /** @nocollapse */ /** @nocollapse */ McIconCSSStyler.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.4", type: McIconCSSStyler, selector: "[mc-icon]", host: { classAttribute: "mc mc-icon" }, ngImport: i0 });
9
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.4", ngImport: i0, type: McIconCSSStyler, decorators: [{
10
10
  type: Directive,
11
11
  args: [{
12
12
  selector: '[mc-icon]',
@@ -32,9 +32,9 @@ export class McIcon extends McIconMixinBase {
32
32
  return this._elementRef.nativeElement;
33
33
  }
34
34
  }
35
- /** @nocollapse */ /** @nocollapse */ McIcon.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: McIcon, deps: [{ token: i0.ElementRef }, { token: 'mc-icon', attribute: true }], target: i0.ɵɵFactoryTarget.Component });
36
- /** @nocollapse */ /** @nocollapse */ McIcon.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.0", type: McIcon, selector: "[mc-icon]", inputs: { color: "color" }, usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, styles: [".mc-icon-rotate_90{transform:rotate(90deg)}.mc-icon-rotate_180{transform:rotate(180deg)}.mc-icon-rotate_270{transform:rotate(270deg)}.mc-icon-flip-h{transform:scaleY(-1)}.mc-icon-flip-v{transform:scaleX(-1)}.mc-icon-flip-vh{transform:scale(-1)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
37
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: McIcon, decorators: [{
35
+ /** @nocollapse */ /** @nocollapse */ McIcon.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.4", ngImport: i0, type: McIcon, deps: [{ token: i0.ElementRef }, { token: 'mc-icon', attribute: true }], target: i0.ɵɵFactoryTarget.Component });
36
+ /** @nocollapse */ /** @nocollapse */ McIcon.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.4", type: McIcon, selector: "[mc-icon]", inputs: { color: "color" }, usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, styles: [".mc-icon-rotate_90{transform:rotate(90deg)}.mc-icon-rotate_180{transform:rotate(180deg)}.mc-icon-rotate_270{transform:rotate(270deg)}.mc-icon-flip-h{transform:scaleY(-1)}.mc-icon-flip-v{transform:scaleX(-1)}.mc-icon-flip-vh{transform:scale(-1)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
37
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.4", ngImport: i0, type: McIcon, decorators: [{
38
38
  type: Component,
39
39
  args: [{ selector: `[mc-icon]`, template: '<ng-content></ng-content>', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, inputs: ['color'], styles: [".mc-icon-rotate_90{transform:rotate(90deg)}.mc-icon-rotate_180{transform:rotate(180deg)}.mc-icon-rotate_270{transform:rotate(270deg)}.mc-icon-flip-h{transform:scaleY(-1)}.mc-icon-flip-v{transform:scaleX(-1)}.mc-icon-flip-vh{transform:scale(-1)}\n"] }]
40
40
  }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: undefined, decorators: [{
@@ -6,18 +6,18 @@ import { McIcon, McIconCSSStyler } from './icon.component';
6
6
  import * as i0 from "@angular/core";
7
7
  export class McIconModule {
8
8
  }
9
- /** @nocollapse */ /** @nocollapse */ McIconModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: McIconModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
10
- /** @nocollapse */ /** @nocollapse */ McIconModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: McIconModule, declarations: [McIcon,
9
+ /** @nocollapse */ /** @nocollapse */ McIconModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.4", ngImport: i0, type: McIconModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
10
+ /** @nocollapse */ /** @nocollapse */ McIconModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.4", ngImport: i0, type: McIconModule, declarations: [McIcon,
11
11
  McIconCSSStyler], imports: [CommonModule,
12
12
  A11yModule,
13
13
  PlatformModule], exports: [McIcon,
14
14
  McIconCSSStyler] });
15
- /** @nocollapse */ /** @nocollapse */ McIconModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: McIconModule, imports: [[
15
+ /** @nocollapse */ /** @nocollapse */ McIconModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.4", ngImport: i0, type: McIconModule, imports: [[
16
16
  CommonModule,
17
17
  A11yModule,
18
18
  PlatformModule
19
19
  ]] });
20
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: McIconModule, decorators: [{
20
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.4", ngImport: i0, type: McIconModule, decorators: [{
21
21
  type: NgModule,
22
22
  args: [{
23
23
  imports: [
@@ -31,9 +31,9 @@ export class MinValidator {
31
31
  this.validator = Validators.min(parseInt(this.min, 10));
32
32
  }
33
33
  }
34
- /** @nocollapse */ /** @nocollapse */ MinValidator.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: MinValidator, deps: [], target: i0.ɵɵFactoryTarget.Directive });
35
- /** @nocollapse */ /** @nocollapse */ MinValidator.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.0", type: MinValidator, selector: "[min][formControlName],[min][formControl],[min][ngModel]", inputs: { min: "min" }, host: { properties: { "attr.min": "min ? min : null" } }, providers: [MIN_VALIDATOR], usesOnChanges: true, ngImport: i0 });
36
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: MinValidator, decorators: [{
34
+ /** @nocollapse */ /** @nocollapse */ MinValidator.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.4", ngImport: i0, type: MinValidator, deps: [], target: i0.ɵɵFactoryTarget.Directive });
35
+ /** @nocollapse */ /** @nocollapse */ MinValidator.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.4", type: MinValidator, selector: "[min][formControlName],[min][formControl],[min][ngModel]", inputs: { min: "min" }, host: { properties: { "attr.min": "min ? min : null" } }, providers: [MIN_VALIDATOR], usesOnChanges: true, ngImport: i0 });
36
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.4", ngImport: i0, type: MinValidator, decorators: [{
37
37
  type: Directive,
38
38
  args: [{
39
39
  selector: '[min][formControlName],[min][formControl],[min][ngModel]',
@@ -75,9 +75,9 @@ export class MaxValidator {
75
75
  this.validator = Validators.max(parseInt(this.max, 10));
76
76
  }
77
77
  }
78
- /** @nocollapse */ /** @nocollapse */ MaxValidator.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: MaxValidator, deps: [], target: i0.ɵɵFactoryTarget.Directive });
79
- /** @nocollapse */ /** @nocollapse */ MaxValidator.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.0", type: MaxValidator, selector: "[max][formControlName],[max][formControl],[max][ngModel]", inputs: { max: "max" }, host: { properties: { "attr.max": "max ? max : null" } }, providers: [MAX_VALIDATOR], usesOnChanges: true, ngImport: i0 });
80
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: MaxValidator, decorators: [{
78
+ /** @nocollapse */ /** @nocollapse */ MaxValidator.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.4", ngImport: i0, type: MaxValidator, deps: [], target: i0.ɵɵFactoryTarget.Directive });
79
+ /** @nocollapse */ /** @nocollapse */ MaxValidator.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.4", type: MaxValidator, selector: "[max][formControlName],[max][formControl],[max][ngModel]", inputs: { max: "max" }, host: { properties: { "attr.max": "max ? max : null" } }, providers: [MAX_VALIDATOR], usesOnChanges: true, ngImport: i0 });
80
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.4", ngImport: i0, type: MaxValidator, decorators: [{
81
81
  type: Directive,
82
82
  args: [{
83
83
  selector: '[max][formControlName],[max][formControl],[max][ngModel]',
@@ -121,9 +121,9 @@ export class McNumberInput {
121
121
  }
122
122
  }
123
123
  }
124
- /** @nocollapse */ /** @nocollapse */ McNumberInput.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: McNumberInput, deps: [{ token: i0.ElementRef }, { token: i1.NgControl, optional: true, self: true }, { token: 'step', attribute: true }, { token: 'big-step', attribute: true }, { token: 'min', attribute: true }, { token: 'max', attribute: true }], target: i0.ɵɵFactoryTarget.Directive });
125
- /** @nocollapse */ /** @nocollapse */ McNumberInput.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.0", type: McNumberInput, selector: "input[mcInput][type=\"number\"]", inputs: { bigStep: "bigStep", step: "step", min: "min", max: "max" }, host: { listeners: { "blur": "focusChanged(false)", "focus": "focusChanged(true)", "paste": "onPaste($event)", "keydown": "onKeyDown($event)" } }, exportAs: ["mcNumericalInput"], ngImport: i0 });
126
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: McNumberInput, decorators: [{
124
+ /** @nocollapse */ /** @nocollapse */ McNumberInput.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.4", ngImport: i0, type: McNumberInput, deps: [{ token: i0.ElementRef }, { token: i1.NgControl, optional: true, self: true }, { token: 'step', attribute: true }, { token: 'big-step', attribute: true }, { token: 'min', attribute: true }, { token: 'max', attribute: true }], target: i0.ɵɵFactoryTarget.Directive });
125
+ /** @nocollapse */ /** @nocollapse */ McNumberInput.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.4", type: McNumberInput, selector: "input[mcInput][type=\"number\"]", inputs: { bigStep: "bigStep", step: "step", min: "min", max: "max" }, host: { listeners: { "blur": "focusChanged(false)", "focus": "focusChanged(true)", "paste": "onPaste($event)", "keydown": "onKeyDown($event)" } }, exportAs: ["mcNumericalInput"], ngImport: i0 });
126
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.4", ngImport: i0, type: McNumberInput, decorators: [{
127
127
  type: Directive,
128
128
  args: [{
129
129
  selector: `input[mcInput][type="number"]`,
@@ -2,7 +2,7 @@ import { FocusMonitor } from '@angular/cdk/a11y';
2
2
  import { Directionality } from '@angular/cdk/bidi';
3
3
  import { coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coercion';
4
4
  import { Overlay, ScrollDispatcher } from '@angular/cdk/overlay';
5
- import { ChangeDetectionStrategy, Component, Directive, ElementRef, Inject, Input, NgZone, Optional, Self, ViewContainerRef, ViewEncapsulation } from '@angular/core';
5
+ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Directive, ElementRef, Inject, Input, NgZone, Optional, Self, ViewContainerRef, ViewEncapsulation } from '@angular/core';
6
6
  import { FormControlName, FormGroupDirective, NG_VALIDATORS, NgControl, NgForm, NgModel } from '@angular/forms';
7
7
  import { ErrorStateMatcher, MC_VALIDATION, PopUpTriggers, setMosaicValidation } from '@ptsecurity/mosaic/core';
8
8
  import { McFormField, McFormFieldControl } from '@ptsecurity/mosaic/form-field';
@@ -80,9 +80,9 @@ export class McPasswordToggle extends McTooltipTrigger {
80
80
  this.focusMonitor.stopMonitoring(this.elementRef);
81
81
  }
82
82
  }
83
- /** @nocollapse */ /** @nocollapse */ McPasswordToggle.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: McPasswordToggle, deps: [{ token: i1.Overlay }, { token: i0.ElementRef }, { token: i0.NgZone }, { token: i1.ScrollDispatcher }, { token: i0.ViewContainerRef }, { token: MC_TOOLTIP_SCROLL_STRATEGY }, { token: i2.Directionality, optional: true }, { token: i3.FocusMonitor }, { token: i4.McFormField }], target: i0.ɵɵFactoryTarget.Component });
84
- /** @nocollapse */ /** @nocollapse */ McPasswordToggle.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.0", type: McPasswordToggle, selector: "mc-password-toggle", inputs: { content: ["mcTooltipNotHidden", "content"], mcTooltipHidden: "mcTooltipHidden", disabled: "disabled", tabIndex: "tabIndex" }, host: { listeners: { "click": "toggle()", "keydown.ENTER": "toggle()", "keydown.SPACE": "toggle()" }, properties: { "class.mc-eye_16": "hidden", "class.mc-eye-crossed_16": "!hidden", "attr.tabindex": "disabled ? null : tabIndex", "attr.disabled": "disabled || null" }, classAttribute: "mc-password-toggle mc" }, exportAs: ["mcPasswordToggle"], usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
85
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: McPasswordToggle, decorators: [{
83
+ /** @nocollapse */ /** @nocollapse */ McPasswordToggle.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.4", ngImport: i0, type: McPasswordToggle, deps: [{ token: i1.Overlay }, { token: i0.ElementRef }, { token: i0.NgZone }, { token: i1.ScrollDispatcher }, { token: i0.ViewContainerRef }, { token: MC_TOOLTIP_SCROLL_STRATEGY }, { token: i2.Directionality, optional: true }, { token: i3.FocusMonitor }, { token: i4.McFormField }], target: i0.ɵɵFactoryTarget.Component });
84
+ /** @nocollapse */ /** @nocollapse */ McPasswordToggle.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.4", type: McPasswordToggle, selector: "mc-password-toggle", inputs: { content: ["mcTooltipNotHidden", "content"], mcTooltipHidden: "mcTooltipHidden", disabled: "disabled", tabIndex: "tabIndex" }, host: { listeners: { "click": "toggle()", "keydown.ENTER": "toggle()", "keydown.SPACE": "toggle()" }, properties: { "class.mc-eye_16": "hidden", "class.mc-eye-crossed_16": "!hidden", "attr.tabindex": "disabled ? null : tabIndex", "attr.disabled": "disabled || null" }, classAttribute: "mc-password-toggle mc" }, exportAs: ["mcPasswordToggle"], usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
85
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.4", ngImport: i0, type: McPasswordToggle, decorators: [{
86
86
  type: Component,
87
87
  args: [{
88
88
  selector: `mc-password-toggle`,
@@ -118,13 +118,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImpor
118
118
  }] } });
119
119
  export class McInputPassword extends McInputMixinBase {
120
120
  // tslint:disable-next-line: naming-convention
121
- constructor(elementRef, rawValidators, mcValidation, ngControl, ngModel, formControlName, parentForm, parentFormGroup, defaultErrorStateMatcher, inputValueAccessor) {
121
+ constructor(elementRef, rawValidators, mcValidation, ngControl, ngModel, formControlName, parentForm, parentFormGroup, defaultErrorStateMatcher, inputValueAccessor, changeDetectorRef) {
122
122
  super(defaultErrorStateMatcher, parentForm, parentFormGroup, ngControl);
123
123
  this.elementRef = elementRef;
124
124
  this.rawValidators = rawValidators;
125
125
  this.mcValidation = mcValidation;
126
126
  this.ngModel = ngModel;
127
127
  this.formControlName = formControlName;
128
+ this.changeDetectorRef = changeDetectorRef;
128
129
  /**
129
130
  * Implemented as part of McFormFieldControl.
130
131
  * @docs-private
@@ -210,7 +211,7 @@ export class McInputPassword extends McInputMixinBase {
210
211
  return;
211
212
  }
212
213
  if (this.mcValidation.useValidation) {
213
- setMosaicValidation(this);
214
+ setMosaicValidation(this, this.changeDetectorRef);
214
215
  }
215
216
  }
216
217
  ngOnChanges() {
@@ -290,11 +291,11 @@ export class McInputPassword extends McInputMixinBase {
290
291
  return this.elementRef.nativeElement.validity?.badInput;
291
292
  }
292
293
  }
293
- /** @nocollapse */ /** @nocollapse */ McInputPassword.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: McInputPassword, deps: [{ token: i0.ElementRef }, { token: NG_VALIDATORS, optional: true, self: true }, { token: MC_VALIDATION, optional: true }, { token: i5.NgControl, optional: true, self: true }, { token: i5.NgModel, optional: true, self: true }, { token: i5.FormControlName, optional: true, self: true }, { token: i5.NgForm, optional: true }, { token: i5.FormGroupDirective, optional: true }, { token: i6.ErrorStateMatcher }, { token: MC_INPUT_VALUE_ACCESSOR, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Directive });
294
- /** @nocollapse */ /** @nocollapse */ McInputPassword.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.0", type: McInputPassword, selector: "input[mcInputPassword]", inputs: { errorStateMatcher: "errorStateMatcher", placeholder: "placeholder", disabled: "disabled", id: "id", required: "required", value: "value" }, host: { listeners: { "blur": "onBlur()", "focus": "focusChanged(true)", "input": "onInput()" }, properties: { "attr.id": "id", "attr.type": "elementType", "attr.placeholder": "placeholder", "attr.disabled": "disabled || null", "required": "required" }, classAttribute: "mc-input mc-input-password" }, providers: [{
294
+ /** @nocollapse */ /** @nocollapse */ McInputPassword.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.4", ngImport: i0, type: McInputPassword, deps: [{ token: i0.ElementRef }, { token: NG_VALIDATORS, optional: true, self: true }, { token: MC_VALIDATION, optional: true }, { token: i5.NgControl, optional: true, self: true }, { token: i5.NgModel, optional: true, self: true }, { token: i5.FormControlName, optional: true, self: true }, { token: i5.NgForm, optional: true }, { token: i5.FormGroupDirective, optional: true }, { token: i6.ErrorStateMatcher }, { token: MC_INPUT_VALUE_ACCESSOR, optional: true, self: true }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
295
+ /** @nocollapse */ /** @nocollapse */ McInputPassword.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.4", type: McInputPassword, selector: "input[mcInputPassword]", inputs: { errorStateMatcher: "errorStateMatcher", placeholder: "placeholder", disabled: "disabled", id: "id", required: "required", value: "value" }, host: { listeners: { "blur": "onBlur()", "focus": "focusChanged(true)", "input": "onInput()" }, properties: { "attr.id": "id", "attr.type": "elementType", "attr.placeholder": "placeholder", "attr.disabled": "disabled || null", "required": "required" }, classAttribute: "mc-input mc-input-password" }, providers: [{
295
296
  provide: McFormFieldControl, useExisting: McInputPassword
296
297
  }], exportAs: ["mcInputPassword"], usesInheritance: true, usesOnChanges: true, ngImport: i0 });
297
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: McInputPassword, decorators: [{
298
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.4", ngImport: i0, type: McInputPassword, decorators: [{
298
299
  type: Directive,
299
300
  args: [{
300
301
  selector: `input[mcInputPassword]`,
@@ -351,7 +352,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImpor
351
352
  }, {
352
353
  type: Inject,
353
354
  args: [MC_INPUT_VALUE_ACCESSOR]
354
- }] }]; }, propDecorators: { errorStateMatcher: [{
355
+ }] }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { errorStateMatcher: [{
355
356
  type: Input
356
357
  }], placeholder: [{
357
358
  type: Input
@@ -364,4 +365,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImpor
364
365
  }], value: [{
365
366
  type: Input
366
367
  }] } });
367
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtcGFzc3dvcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9tb3NhaWMvaW5wdXQvaW5wdXQtcGFzc3dvcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNwRixPQUFPLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDakUsT0FBTyxFQUVILHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsU0FBUyxFQUVULFVBQVUsRUFFVixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFHTixRQUFRLEVBQ1IsSUFBSSxFQUVKLGdCQUFnQixFQUNoQixpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNILGVBQWUsRUFDZixrQkFBa0IsRUFDbEIsYUFBYSxFQUNiLFNBQVMsRUFDVCxNQUFNLEVBQ04sT0FBTyxFQUVWLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUVILGlCQUFpQixFQUNqQixhQUFhLEVBRWIsYUFBYSxFQUNiLG1CQUFtQixFQUN0QixNQUFNLHlCQUF5QixDQUFDO0FBQ2pDLE9BQU8sRUFBRSxXQUFXLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNoRixPQUFPLEVBQUUsMEJBQTBCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRS9CLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUMzQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx3QkFB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QUFFLGVBQWU7U0FDNUQsQ0FBQzsyRkFFTyxlQUFlO2tCQXJCM0IsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsd0JBQXdCO29CQUNsQyxRQUFRLEVBQUUsaUJBQWlCO29CQUMzQixJQUFJLEVBQUU7d0JBQ0YsS0FBSyxFQUFFLDRCQUE0Qjt3QkFDbkMsd0ZBQXdGO3dCQUN4Riw4RUFBOEU7d0JBQzlFLFdBQVcsRUFBRSxJQUFJO3dCQUNqQixhQUFhLEVBQUUsYUFBYTt3QkFDNUIsb0JBQW9CLEVBQUUsYUFBYTt3QkFDbkMsaUJBQWlCLEVBQUUsa0JBQWtCO3dCQUNyQyxZQUFZLEVBQUUsVUFBVTt3QkFFeEIsUUFBUSxFQUFFLFVBQVU7d0JBQ3BCLFNBQVMsRUFBRSxvQkFBb0I7d0JBQy9CLFNBQVMsRUFBRSxXQUFXO3FCQUN6QjtvQkFDRCxTQUFTLEVBQUUsQ0FBQzs0QkFDUixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsV0FBVyxpQkFBaUI7eUJBQzVELENBQUM7aUJBQ0w7OzBCQW9IUSxRQUFROzswQkFBSSxJQUFJOzswQkFBSSxNQUFNOzJCQUFDLGFBQWE7OzBCQUN4QyxRQUFROzswQkFBSSxNQUFNOzJCQUFDLGFBQWE7OzBCQUNoQyxRQUFROzswQkFBSSxJQUFJOzswQkFDaEIsUUFBUTs7MEJBQUksSUFBSTs7MEJBQ2hCLFFBQVE7OzBCQUFJLElBQUk7OzBCQUNoQixRQUFROzswQkFDUixRQUFROzswQkFFUixRQUFROzswQkFBSSxJQUFJOzswQkFBSSxNQUFNOzJCQUFDLHVCQUF1Qjs0Q0F2SDlDLGlCQUFpQjtzQkFBekIsS0FBSztnQkEwQkcsV0FBVztzQkFBbkIsS0FBSztnQkFVRixRQUFRO3NCQURYLEtBQUs7Z0JBMkJGLEVBQUU7c0JBREwsS0FBSztnQkFnQkYsUUFBUTtzQkFEWCxLQUFLO2dCQWtCRixLQUFLO3NCQURSLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGb2N1c01vbml0b3IgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQgeyBEaXJlY3Rpb25hbGl0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9iaWRpJztcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSwgY29lcmNlTnVtYmVyUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHsgT3ZlcmxheSwgU2Nyb2xsRGlzcGF0Y2hlciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7XG4gICAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDb21wb25lbnQsXG4gICAgRGlyZWN0aXZlLFxuICAgIERvQ2hlY2ssXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5qZWN0LFxuICAgIElucHV0LFxuICAgIE5nWm9uZSxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95LFxuICAgIE9wdGlvbmFsLFxuICAgIFNlbGYsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NvbnRhaW5lclJlZixcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgRm9ybUNvbnRyb2xOYW1lLFxuICAgIEZvcm1Hcm91cERpcmVjdGl2ZSxcbiAgICBOR19WQUxJREFUT1JTLFxuICAgIE5nQ29udHJvbCxcbiAgICBOZ0Zvcm0sXG4gICAgTmdNb2RlbCxcbiAgICBWYWxpZGF0b3Jcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgICBDYW5VcGRhdGVFcnJvclN0YXRlLFxuICAgIEVycm9yU3RhdGVNYXRjaGVyLFxuICAgIE1DX1ZBTElEQVRJT04sXG4gICAgTWNWYWxpZGF0aW9uT3B0aW9ucyxcbiAgICBQb3BVcFRyaWdnZXJzLFxuICAgIHNldE1vc2FpY1ZhbGlkYXRpb25cbn0gZnJvbSAnQHB0c2VjdXJpdHkvbW9zYWljL2NvcmUnO1xuaW1wb3J0IHsgTWNGb3JtRmllbGQsIE1jRm9ybUZpZWxkQ29udHJvbCB9IGZyb20gJ0BwdHNlY3VyaXR5L21vc2FpYy9mb3JtLWZpZWxkJztcbmltcG9ydCB7IE1DX1RPT0xUSVBfU0NST0xMX1NUUkFURUdZLCBNY1Rvb2x0aXBUcmlnZ2VyIH0gZnJvbSAnQHB0c2VjdXJpdHkvbW9zYWljL3Rvb2x0aXAnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBNY0lucHV0TWl4aW5CYXNlIH0gZnJvbSAnLi9pbnB1dCc7XG5pbXBvcnQgeyBNQ19JTlBVVF9WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJy4vaW5wdXQtdmFsdWUtYWNjZXNzb3InO1xuXG5cbmxldCBuZXh0VW5pcXVlSWQgPSAwO1xuXG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiBgbWMtcGFzc3dvcmQtdG9nZ2xlYCxcbiAgICBleHBvcnRBczogJ21jUGFzc3dvcmRUb2dnbGUnLFxuICAgIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ21jLXBhc3N3b3JkLXRvZ2dsZSBtYycsXG4gICAgICAgICdbY2xhc3MubWMtZXllXzE2XSc6ICdoaWRkZW4nLFxuICAgICAgICAnW2NsYXNzLm1jLWV5ZS1jcm9zc2VkXzE2XSc6ICchaGlkZGVuJyxcblxuICAgICAgICAnW2F0dHIudGFiaW5kZXhdJzogJ2Rpc2FibGVkID8gbnVsbCA6IHRhYkluZGV4JyxcbiAgICAgICAgJ1thdHRyLmRpc2FibGVkXSc6ICdkaXNhYmxlZCB8fCBudWxsJyxcblxuICAgICAgICAnKGNsaWNrKSc6ICd0b2dnbGUoKScsXG4gICAgICAgICcoa2V5ZG93bi5FTlRFUiknOiAndG9nZ2xlKCknLFxuICAgICAgICAnKGtleWRvd24uU1BBQ0UpJzogJ3RvZ2dsZSgpJ1xuICAgIH0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBNY1Bhc3N3b3JkVG9nZ2xlIGV4dGVuZHMgTWNUb29sdGlwVHJpZ2dlciBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gICAgQElucHV0KCdtY1Rvb2x0aXBOb3RIaWRkZW4nKVxuICAgIGdldCBjb250ZW50KCk6IHN0cmluZyB8IFRlbXBsYXRlUmVmPGFueT4ge1xuICAgICAgICByZXR1cm4gKHRoaXMuZm9ybUZpZWxkLmNvbnRyb2wgYXMgTWNJbnB1dFBhc3N3b3JkKS5lbGVtZW50VHlwZSA9PT0gJ3Bhc3N3b3JkJyA/XG4gICAgICAgICAgICB0aGlzLm1jVG9vbHRpcEhpZGRlbiA6XG4gICAgICAgICAgICB0aGlzLl9jb250ZW50O1xuICAgIH1cblxuICAgIHNldCBjb250ZW50KGNvbnRlbnQ6IHN0cmluZyB8IFRlbXBsYXRlUmVmPGFueT4pIHtcbiAgICAgICAgdGhpcy5fY29udGVudCA9IGNvbnRlbnQ7XG5cbiAgICAgICAgdGhpcy51cGRhdGVEYXRhKCk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgbWNUb29sdGlwSGlkZGVuOiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgQElucHV0KClcbiAgICBnZXQgZGlzYWJsZWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZCA9PT0gdW5kZWZpbmVkID8gdGhpcy5mb3JtRmllbGQuZGlzYWJsZWQgOiB0aGlzLl9kaXNhYmxlZDtcbiAgICB9XG5cbiAgICBzZXQgZGlzYWJsZWQodmFsdWU6IGFueSkge1xuICAgICAgICB0aGlzLl9kaXNhYmxlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG5cbiAgICAgICAgdGhpcy5fZGlzYWJsZWQgPyB0aGlzLnN0b3BGb2N1c01vbml0b3IoKSA6IHRoaXMucnVuRm9jdXNNb25pdG9yKCk7XG4gICAgfVxuXG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5hbWluZy1jb252ZW50aW9uXG4gICAgcHJvdGVjdGVkIF9kaXNhYmxlZDogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpXG4gICAgZ2V0IHRhYkluZGV4KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLmRpc2FibGVkID8gLTEgOiB0aGlzLl90YWJJbmRleDtcbiAgICB9XG5cbiAgICBzZXQgdGFiSW5kZXgodmFsdWU6IG51bWJlcikge1xuICAgICAgICAvLyBJZiB0aGUgc3BlY2lmaWVkIHRhYkluZGV4IHZhbHVlIGlzIG51bGwgb3IgdW5kZWZpbmVkLCBmYWxsIGJhY2sgdG8gdGhlIGRlZmF1bHQgdmFsdWUuXG4gICAgICAgIHRoaXMuX3RhYkluZGV4ID0gdmFsdWUgIT0gbnVsbCA/IGNvZXJjZU51bWJlclByb3BlcnR5KHZhbHVlKSA6IDA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfdGFiSW5kZXg6IG51bWJlciA9IDA7XG5cbiAgICBnZXQgaGlkZGVuKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKHRoaXMuZm9ybUZpZWxkLmNvbnRyb2wgYXMgTWNJbnB1dFBhc3N3b3JkKS5lbGVtZW50VHlwZSA9PT0gJ3Bhc3N3b3JkJztcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgb3ZlcmxheTogT3ZlcmxheSxcbiAgICAgICAgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgbmdab25lOiBOZ1pvbmUsXG4gICAgICAgIHNjcm9sbERpc3BhdGNoZXI6IFNjcm9sbERpc3BhdGNoZXIsXG4gICAgICAgIGhvc3RWaWV3OiBWaWV3Q29udGFpbmVyUmVmLFxuICAgICAgICBASW5qZWN0KE1DX1RPT0xUSVBfU0NST0xMX1NUUkFURUdZKSBzY3JvbGxTdHJhdGVneSxcbiAgICAgICAgQE9wdGlvbmFsKCkgZGlyZWN0aW9uOiBEaXJlY3Rpb25hbGl0eSxcblxuICAgICAgICBwcml2YXRlIGZvY3VzTW9uaXRvcjogRm9jdXNNb25pdG9yLFxuICAgICAgICBwcml2YXRlIGZvcm1GaWVsZDogTWNGb3JtRmllbGRcbiAgICApIHtcbiAgICAgICAgc3VwZXIob3ZlcmxheSwgZWxlbWVudFJlZiwgbmdab25lLCBzY3JvbGxEaXNwYXRjaGVyLCBob3N0Vmlldywgc2Nyb2xsU3RyYXRlZ3ksIGRpcmVjdGlvbik7XG5cbiAgICAgICAgdGhpcy50cmlnZ2VyID0gYCR7UG9wVXBUcmlnZ2Vycy5Ib3Zlcn1gO1xuXG4gICAgICAgIHRoaXMucnVuRm9jdXNNb25pdG9yKCk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMuc3RvcEZvY3VzTW9uaXRvcigpO1xuICAgIH1cblxuICAgIHRvZ2dsZSgpIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHsgcmV0dXJuOyB9XG5cbiAgICAgICAgdGhpcy5oaWRlKCk7XG5cbiAgICAgICAgY29uc3QgaW5wdXQgPSB0aGlzLmZvcm1GaWVsZC5jb250cm9sIGFzIE1jSW5wdXRQYXNzd29yZDtcblxuICAgICAgICBpbnB1dC50b2dnbGVUeXBlKCk7XG5cbiAgICAgICAgdGhpcy51cGRhdGVEYXRhKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBydW5Gb2N1c01vbml0b3IoKSB7XG4gICAgICAgIHRoaXMuZm9jdXNNb25pdG9yLm1vbml0b3IodGhpcy5lbGVtZW50UmVmKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgob3JpZ2luKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKG9yaWdpbiA9PT0gJ2tleWJvYXJkJykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3coKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG9yaWdpbiA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZGUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0b3BGb2N1c01vbml0b3IoKSB7XG4gICAgICAgIHRoaXMuZm9jdXNNb25pdG9yLnN0b3BNb25pdG9yaW5nKHRoaXMuZWxlbWVudFJlZik7XG4gICAgfVxufVxuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogYGlucHV0W21jSW5wdXRQYXNzd29yZF1gLFxuICAgIGV4cG9ydEFzOiAnbWNJbnB1dFBhc3N3b3JkJyxcbiAgICBob3N0OiB7XG4gICAgICAgIGNsYXNzOiAnbWMtaW5wdXQgbWMtaW5wdXQtcGFzc3dvcmQnLFxuICAgICAgICAvLyBOYXRpdmUgaW5wdXQgcHJvcGVydGllcyB0aGF0IGFyZSBvdmVyd3JpdHRlbiBieSBBbmd1bGFyIGlucHV0cyBuZWVkIHRvIGJlIHN5bmNlZCB3aXRoXG4gICAgICAgIC8vIHRoZSBuYXRpdmUgaW5wdXQgZWxlbWVudC4gT3RoZXJ3aXNlIHByb3BlcnR5IGJpbmRpbmdzIGZvciB0aG9zZSBkb24ndCB3b3JrLlxuICAgICAgICAnW2F0dHIuaWRdJzogJ2lkJyxcbiAgICAgICAgJ1thdHRyLnR5cGVdJzogJ2VsZW1lbnRUeXBlJyxcbiAgICAgICAgJ1thdHRyLnBsYWNlaG9sZGVyXSc6ICdwbGFjZWhvbGRlcicsXG4gICAgICAgICdbYXR0ci5kaXNhYmxlZF0nOiAnZGlzYWJsZWQgfHwgbnVsbCcsXG4gICAgICAgICdbcmVxdWlyZWRdJzogJ3JlcXVpcmVkJyxcblxuICAgICAgICAnKGJsdXIpJzogJ29uQmx1cigpJyxcbiAgICAgICAgJyhmb2N1cyknOiAnZm9jdXNDaGFuZ2VkKHRydWUpJyxcbiAgICAgICAgJyhpbnB1dCknOiAnb25JbnB1dCgpJ1xuICAgIH0sXG4gICAgcHJvdmlkZXJzOiBbe1xuICAgICAgICBwcm92aWRlOiBNY0Zvcm1GaWVsZENvbnRyb2wsIHVzZUV4aXN0aW5nOiBNY0lucHV0UGFzc3dvcmRcbiAgICB9XVxufSlcbmV4cG9ydCBjbGFzcyBNY0lucHV0UGFzc3dvcmQgZXh0ZW5kcyBNY0lucHV0TWl4aW5CYXNlIGltcGxlbWVudHMgTWNGb3JtRmllbGRDb250cm9sPGFueT4sIE9uQ2hhbmdlcywgT25EZXN0cm95LCBEb0NoZWNrLFxuICAgIENhblVwZGF0ZUVycm9yU3RhdGUsIEFmdGVyQ29udGVudEluaXQsIE9uQ2hhbmdlcyB7XG5cbiAgICAvKiogQW4gb2JqZWN0IHVzZWQgdG8gY29udHJvbCB3aGVuIGVycm9yIG1lc3NhZ2VzIGFyZSBzaG93bi4gKi9cbiAgICBASW5wdXQoKSBlcnJvclN0YXRlTWF0Y2hlcjogRXJyb3JTdGF0ZU1hdGNoZXI7XG5cbiAgICAvKipcbiAgICAgKiBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIE1jRm9ybUZpZWxkQ29udHJvbC5cbiAgICAgKiBAZG9jcy1wcml2YXRlXG4gICAgICovXG4gICAgZm9jdXNlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBNY0Zvcm1GaWVsZENvbnRyb2wuXG4gICAgICogQGRvY3MtcHJpdmF0ZVxuICAgICAqL1xuICAgIHJlYWRvbmx5IHN0YXRlQ2hhbmdlczogU3ViamVjdDxhbnk+ID0gbmV3IFN1YmplY3Q8YW55PigpO1xuXG4gICAgLyoqXG4gICAgICogSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBNY0Zvcm1GaWVsZENvbnRyb2wuXG4gICAgICogQGRvY3MtcHJpdmF0ZVxuICAgICAqL1xuICAgIGNvbnRyb2xUeXBlOiBzdHJpbmcgPSAnaW5wdXQtcGFzc3dvcmQnO1xuXG4gICAgZWxlbWVudFR5cGU6IHN0cmluZyA9ICdwYXNzd29yZCc7XG5cbiAgICAvKipcbiAgICAgKiBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIE1jRm9ybUZpZWxkQ29udHJvbC5cbiAgICAgKiBAZG9jcy1wcml2YXRlXG4gICAgICovXG4gICAgQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZztcblxuICAgIHByb3RlY3RlZCB1aWQgPSBgbWMtaW5wdXQtJHtuZXh0VW5pcXVlSWQrK31gO1xuICAgIHByb3RlY3RlZCBwcmV2aW91c05hdGl2ZVZhbHVlOiBhbnk7XG5cbiAgICAvKipcbiAgICAgKiBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIE1jRm9ybUZpZWxkQ29udHJvbC5cbiAgICAgKiBAZG9jcy1wcml2YXRlXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICh0aGlzLm5nQ29udHJvbD8uZGlzYWJsZWQgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm5nQ29udHJvbC5kaXNhYmxlZDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZDtcbiAgICB9XG5cbiAgICBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fZGlzYWJsZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuXG4gICAgICAgIC8vIEJyb3dzZXJzIG1heSBub3QgZmlyZSB0aGUgYmx1ciBldmVudCBpZiB0aGUgaW5wdXQgaXMgZGlzYWJsZWQgdG9vIHF1aWNrbHkuXG4gICAgICAgIC8vIFJlc2V0IGZyb20gaGVyZSB0byBlbnN1cmUgdGhhdCB0aGUgZWxlbWVudCBkb2Vzbid0IGJlY29tZSBzdHVjay5cbiAgICAgICAgaWYgKHRoaXMuZm9jdXNlZCkge1xuICAgICAgICAgICAgdGhpcy5mb2N1c2VkID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIF9kaXNhYmxlZCA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBNY0Zvcm1GaWVsZENvbnRyb2wuXG4gICAgICogQGRvY3MtcHJpdmF0ZVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGlkKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pZDtcbiAgICB9XG5cbiAgICBzZXQgaWQodmFsdWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLl9pZCA9IHZhbHVlIHx8IHRoaXMudWlkO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2lkOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIE1jRm9ybUZpZWxkQ29udHJvbC5cbiAgICAgKiBAZG9jcy1wcml2YXRlXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBnZXQgcmVxdWlyZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZXF1aXJlZDtcbiAgICB9XG5cbiAgICBzZXQgcmVxdWlyZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fcmVxdWlyZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3JlcXVpcmVkID0gZmFsc2U7XG5cbiAgICAvLyB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC50eXBlID0gdGhpcy5fdHlwZTtcblxuICAgIC8qKlxuICAgICAqIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgTWNGb3JtRmllbGRDb250cm9sLlxuICAgICAqIEBkb2NzLXByaXZhdGVcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGdldCB2YWx1ZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5faW5wdXRWYWx1ZUFjY2Vzc29yLnZhbHVlO1xuICAgIH1cblxuICAgIHNldCB2YWx1ZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gdGhpcy52YWx1ZSkgeyByZXR1cm47IH1cblxuICAgICAgICB0aGlzLl9pbnB1dFZhbHVlQWNjZXNzb3IudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICAgIH1cblxuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogb3J0aG9kb3gtZ2V0dGVyLWFuZC1zZXR0ZXJcbiAgICBwcml2YXRlIF9pbnB1dFZhbHVlQWNjZXNzb3I6IHsgdmFsdWU6IGFueSB9O1xuXG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBuYW1pbmctY29udmVudGlvblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcm90ZWN0ZWQgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgQE9wdGlvbmFsKCkgQFNlbGYoKSBASW5qZWN0KE5HX1ZBTElEQVRPUlMpIHB1YmxpYyByYXdWYWxpZGF0b3JzOiBWYWxpZGF0b3JbXSxcbiAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChNQ19WQUxJREFUSU9OKSBwcml2YXRlIG1jVmFsaWRhdGlvbjogTWNWYWxpZGF0aW9uT3B0aW9ucyxcbiAgICAgICAgQE9wdGlvbmFsKCkgQFNlbGYoKSBuZ0NvbnRyb2w6IE5nQ29udHJvbCxcbiAgICAgICAgQE9wdGlvbmFsKCkgQFNlbGYoKSBwdWJsaWMgbmdNb2RlbDogTmdNb2RlbCxcbiAgICAgICAgQE9wdGlvbmFsKCkgQFNlbGYoKSBwdWJsaWMgZm9ybUNvbnRyb2xOYW1lOiBGb3JtQ29udHJvbE5hbWUsXG4gICAgICAgIEBPcHRpb25hbCgpIHBhcmVudEZvcm06IE5nRm9ybSxcbiAgICAgICAgQE9wdGlvbmFsKCkgcGFyZW50Rm9ybUdyb3VwOiBGb3JtR3JvdXBEaXJlY3RpdmUsXG4gICAgICAgIGRlZmF1bHRFcnJvclN0YXRlTWF0Y2hlcjogRXJyb3JTdGF0ZU1hdGNoZXIsXG4gICAgICAgIEBPcHRpb25hbCgpIEBTZWxmKCkgQEluamVjdChNQ19JTlBVVF9WQUxVRV9BQ0NFU1NPUikgaW5wdXRWYWx1ZUFjY2Vzc29yOiBhbnlcbiAgICApIHtcbiAgICAgICAgc3VwZXIoZGVmYXVsdEVycm9yU3RhdGVNYXRjaGVyLCBwYXJlbnRGb3JtLCBwYXJlbnRGb3JtR3JvdXAsIG5nQ29udHJvbCk7XG5cbiAgICAgICAgLy8gSWYgbm8gaW5wdXQgdmFsdWUgYWNjZXNzb3Igd2FzIGV4cGxpY2l0bHkgc3BlY2lmaWVkLCB1c2UgdGhlIGVsZW1lbnQgYXMgdGhlIGlucHV0IHZhbHVlXG4gICAgICAgIC8vIGFjY2Vzc29yLlxuICAgICAgICB0aGlzLl9pbnB1dFZhbHVlQWNjZXNzb3IgPSBpbnB1dFZhbHVlQWNjZXNzb3IgfHwgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICAgICAgdGhpcy5wcmV2aW91c05hdGl2ZVZhbHVlID0gdGhpcy52YWx1ZTtcblxuICAgICAgICAvLyBGb3JjZSBzZXR0ZXIgdG8gYmUgY2FsbGVkIGluIGNhc2UgaWQgd2FzIG5vdCBzcGVjaWZpZWQuXG4gICAgICAgIHRoaXMuaWQgPSB0aGlzLmlkO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLm5nQ29udHJvbCkgeyByZXR1cm47IH1cblxuICAgICAgICBpZiAodGhpcy5tY1ZhbGlkYXRpb24udXNlVmFsaWRhdGlvbikge1xuICAgICAgICAgICAgc2V0TW9zYWljVmFsaWRhdGlvbih0aGlzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKCkge1xuICAgICAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgbmdEb0NoZWNrKCkge1xuICAgICAgICBpZiAodGhpcy5uZ0NvbnRyb2wpIHtcbiAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gcmUtZXZhbHVhdGUgdGhpcyBvbiBldmVyeSBjaGFuZ2UgZGV0ZWN0aW9uIGN5Y2xlLCBiZWNhdXNlIHRoZXJlIGFyZSBzb21lXG4gICAgICAgICAgICAvLyBlcnJvciB0cmlnZ2VycyB0aGF0IHdlIGNhbid0IHN1YnNjcmliZSB0byAoZS5nLiBwYXJlbnQgZm9ybSBzdWJtaXNzaW9ucykuIFRoaXMgbWVhbnNcbiAgICAgICAgICAgIC8vIHRoYXQgd2hhdGV2ZXIgbG9naWMgaXMgaW4gaGVyZSBoYXMgdG8gYmUgc3VwZXIgbGVhbiBvciB3ZSByaXNrIGRlc3Ryb3lpbmcgdGhlIHBlcmZvcm1hbmNlLlxuICAgICAgICAgICAgdGhpcy51cGRhdGVFcnJvclN0YXRlKCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBXZSBuZWVkIHRvIGRpcnR5LWNoZWNrIHRoZSBuYXRpdmUgZWxlbWVudCdzIHZhbHVlLCBiZWNhdXNlIHRoZXJlIGFyZSBzb21lIGNhc2VzIHdoZXJlXG4gICAgICAgIC8vIHdlIHdvbid0IGJlIG5vdGlmaWVkIHdoZW4gaXQgY2hhbmdlcyAoZS5nLiB0aGUgY29uc3VtZXIgaXNuJ3QgdXNpbmcgZm9ybXMgb3IgdGhleSdyZVxuICAgICAgICAvLyB1cGRhdGluZyB0aGUgdmFsdWUgdXNpbmcgYGVtaXRFdmVudDogZmFsc2VgKS5cbiAgICAgICAgdGhpcy5kaXJ0eUNoZWNrTmF0aXZlVmFsdWUoKTtcbiAgICB9XG5cbiAgICB0b2dnbGVUeXBlKCkge1xuICAgICAgICB0aGlzLmVsZW1lbnRUeXBlID0gdGhpcy5lbGVtZW50VHlwZSA9PT0gJ3Bhc3N3b3JkJyA/ICd0ZXh0JyA6ICdwYXNzd29yZCc7XG4gICAgfVxuXG4gICAgLyoqIEZvY3VzZXMgdGhlIGlucHV0LiAqL1xuICAgIGZvY3VzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cblxuICAgIG9uQmx1cigpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMubmdDb250cm9sPy5jb250cm9sKSB7XG4gICAgICAgICAgICBjb25zdCBjb250cm9sID0gdGhpcy5uZ0NvbnRyb2wuY29udHJvbDtcblxuICAgICAgICAgICAgY29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgICAgICAgIChjb250cm9sLnN0YXR1c0NoYW5nZXMgYXMgRXZlbnRFbWl0dGVyPHN0cmluZz4pLmVtaXQoY29udHJvbC5zdGF0dXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5mb2N1c0NoYW5nZWQoZmFsc2UpO1xuICAgIH1cblxuICAgIC8qKiBDYWxsYmFjayBmb3IgdGhlIGNhc2VzIHdoZXJlIHRoZSBmb2N1c2VkIHN0YXRlIG9mIHRoZSBpbnB1dCBjaGFuZ2VzLiAqL1xuICAgIGZvY3VzQ2hhbmdlZChpc0ZvY3VzZWQ6IGJvb2xlYW4pIHtcbiAgICAgICAgaWYgKGlzRm9jdXNlZCA9PT0gdGhpcy5mb2N1c2VkKSB7IHJldHVybjsgfVxuXG4gICAgICAgIHRoaXMuZm9jdXNlZCA9IGlzRm9jdXNlZDtcbiAgICAgICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCh7IGZvY3VzZWQ6IHRoaXMuZm9jdXNlZCB9KTtcbiAgICB9XG5cbiAgICBvbklucHV0KCkge1xuICAgICAgICAvLyBUaGlzIGlzIGEgbm9vcCBmdW5jdGlvbiBhbmQgaXMgdXNlZCB0byBsZXQgQW5ndWxhciBrbm93IHdoZW5ldmVyIHRoZSB2YWx1ZSBjaGFuZ2VzLlxuICAgICAgICAvLyBBbmd1bGFyIHdpbGwgcnVuIGEgbmV3IGNoYW5nZSBkZXRlY3Rpb24gZWFjaCB0aW1lIHRoZSBgaW5wdXRgIGV2ZW50IGhhcyBiZWVuIGRpc3BhdGNoZWQuXG4gICAgICAgIC8vIEl0J3MgbmVjZXNzYXJ5IHRoYXQgQW5ndWxhciByZWNvZ25pemVzIHRoZSB2YWx1ZSBjaGFuZ2UsIGJlY2F1c2Ugd2hlbiBmbG9hdGluZ0xhYmVsXG4gICAgICAgIC8vIGlzIHNldCB0byBmYWxzZSBhbmQgQW5ndWxhciBmb3JtcyBhcmVuJ3QgdXNlZCwgdGhlIHBsYWNlaG9sZGVyIHdvbid0IHJlY29nbml6ZSB0aGVcbiAgICAgICAgLy8gdmFsdWUgY2hhbmdlcyBhbmQgd2lsbCBub3QgZGlzYXBwZWFyLlxuICAgICAgICAvLyBMaXN0ZW5pbmcgdG8gdGhlIGlucHV0IGV2ZW50IHdvdWxkbid0IGJlIG5lY2Vzc2FyeSB3aGVuIHRoZSBpbnB1dCBpcyB1c2luZyB0aGVcbiAgICAgICAgLy8gRm9ybXNNb2R1bGUgb3IgUmVhY3RpdmVGb3Jtc01vZHVsZSwgYmVjYXVzZSBBbmd1bGFyIGZvcm1zIGFsc28gbGlzdGVucyB0byBpbnB1dCBldmVudHMuXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBNY0Zvcm1GaWVsZENvbnRyb2wuXG4gICAgICogQGRvY3MtcHJpdmF0ZVxuICAgICAqL1xuICAgIGdldCBlbXB0eSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC52YWx1ZSAmJiAhdGhpcy5pc0JhZElucHV0KCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBNY0Zvcm1GaWVsZENvbnRyb2wuXG4gICAgICogQGRvY3MtcHJpdmF0ZVxuICAgICAqL1xuICAgIG9uQ29udGFpbmVyQ2xpY2soKSB7XG4gICAgICAgIHRoaXMuZm9jdXMoKTtcbiAgICB9XG5cbiAgICAvKiogRG9lcyBzb21lIG1hbnVhbCBkaXJ0eSBjaGVja2luZyBvbiB0aGUgbmF0aXZlIGlucHV0IGB2YWx1ZWAgcHJvcGVydHkuICovXG4gICAgcHJvdGVjdGVkIGRpcnR5Q2hlY2tOYXRpdmVWYWx1ZSgpIHtcbiAgICAgICAgaWYgKHRoaXMucHJldmlvdXNOYXRpdmVWYWx1ZSAhPT0gdGhpcy52YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5wcmV2aW91c05hdGl2ZVZhbHVlID0gdGhpcy52YWx1ZTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBDaGVja3Mgd2hldGhlciB0aGUgaW5wdXQgaXMgaW52YWxpZCBiYXNlZCBvbiB0aGUgbmF0aXZlIHZhbGlkYXRpb24uICovXG4gICAgcHJvdGVjdGVkIGlzQmFkSW5wdXQoKSB7XG4gICAgICAgIC8vIFRoZSBgdmFsaWRpdHlgIHByb3BlcnR5IHdvbid0IGJlIHByZXNlbnQgb24gcGxhdGZvcm0tc2VydmVyLlxuICAgICAgICByZXR1cm4gKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50IGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbGlkaXR5Py5iYWRJbnB1dDtcbiAgICB9XG59XG4iXX0=
368
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtcGFzc3dvcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9tb3NhaWMvaW5wdXQvaW5wdXQtcGFzc3dvcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNwRixPQUFPLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDakUsT0FBTyxFQUVILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFNBQVMsRUFFVCxVQUFVLEVBRVYsTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEVBR04sUUFBUSxFQUNSLElBQUksRUFFSixnQkFBZ0IsRUFDaEIsaUJBQWlCLEVBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDSCxlQUFlLEVBQ2Ysa0JBQWtCLEVBQ2xCLGFBQWEsRUFDYixTQUFTLEVBQ1QsTUFBTSxFQUNOLE9BQU8sRUFFVixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFFSCxpQkFBaUIsRUFDakIsYUFBYSxFQUViLGFBQWEsRUFDYixtQkFBbUIsRUFDdEIsTUFBTSx5QkFBeUIsQ0FBQztBQUNqQyxPQUFPLEVBQUUsV0FBVyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDaEYsT0FBTyxFQUFFLDBCQUEwQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDMUYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUvQixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDM0MsT0FBTyxFQUFFLHVCQUF1QixF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b250ZW50IjpbImltcG9ydCB7IEZvY3VzTW9uaXRvciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IERpcmVjdGlvbmFsaXR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2JpZGknO1xuaW1wb3J0IHsgY29lcmNlQm9vbGVhblByb3BlcnR5LCBjb2VyY2VOdW1iZXJQcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQgeyBPdmVybGF5LCBTY3JvbGxEaXNwYXRjaGVyIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHtcbiAgICBBZnRlckNvbnRlbnRJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBEaXJlY3RpdmUsXG4gICAgRG9DaGVjayxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgTmdab25lLFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT3B0aW9uYWwsXG4gICAgU2VsZixcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q29udGFpbmVyUmVmLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBGb3JtQ29udHJvbE5hbWUsXG4gICAgRm9ybUdyb3VwRGlyZWN0aXZlLFxuICAgIE5HX1ZBTElEQVRPUlMsXG4gICAgTmdDb250cm9sLFxuICAgIE5nRm9ybSxcbiAgICBOZ01vZGVsLFxuICAgIFZhbGlkYXRvclxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge1xuICAgIENhblVwZGF0ZUVycm9yU3RhdGUsXG4gICAgRXJyb3JTdGF0ZU1hdGNoZXIsXG4gICAgTUNfVkFMSURBVElPTixcbiAgICBNY1ZhbGlkYXRpb25PcHRpb25zLFxuICAgIFBvcFVwVHJpZ2dlcnMsXG4gICAgc2V0TW9zYWljVmFsaWRhdGlvblxufSBmcm9tICdAcHRzZWN1cml0eS9tb3NhaWMvY29yZSc7XG5pbXBvcnQgeyBNY0Zvcm1GaWVsZCwgTWNGb3JtRmllbGRDb250cm9sIH0gZnJvbSAnQHB0c2VjdXJpdHkvbW9zYWljL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgTUNfVE9PTFRJUF9TQ1JPTExfU1RSQVRFR1ksIE1jVG9vbHRpcFRyaWdnZXIgfSBmcm9tICdAcHRzZWN1cml0eS9tb3NhaWMvdG9vbHRpcCc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IE1jSW5wdXRNaXhpbkJhc2UgfSBmcm9tICcuL2lucHV0JztcbmltcG9ydCB7IE1DX0lOUFVUX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnLi9pbnB1dC12YWx1ZS1hY2Nlc3Nvcic7XG5cblxubGV0IG5leHRVbmlxdWVJZCA9IDA7XG5cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6IGBtYy1wYXNzd29yZC10b2dnbGVgLFxuICAgIGV4cG9ydEFzOiAnbWNQYXNzd29yZFRvZ2dsZScsXG4gICAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgICBob3N0OiB7XG4gICAgICAgIGNsYXNzOiAnbWMtcGFzc3dvcmQtdG9nZ2xlIG1jJyxcbiAgICAgICAgJ1tjbGFzcy5tYy1leWVfMTZdJzogJ2hpZGRlbicsXG4gICAgICAgICdbY2xhc3MubWMtZXllLWNyb3NzZWRfMTZdJzogJyFoaWRkZW4nLFxuXG4gICAgICAgICdbYXR0ci50YWJpbmRleF0nOiAnZGlzYWJsZWQgPyBudWxsIDogdGFiSW5kZXgnLFxuICAgICAgICAnW2F0dHIuZGlzYWJsZWRdJzogJ2Rpc2FibGVkIHx8IG51bGwnLFxuXG4gICAgICAgICcoY2xpY2spJzogJ3RvZ2dsZSgpJyxcbiAgICAgICAgJyhrZXlkb3duLkVOVEVSKSc6ICd0b2dnbGUoKScsXG4gICAgICAgICcoa2V5ZG93bi5TUEFDRSknOiAndG9nZ2xlKCknXG4gICAgfSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIE1jUGFzc3dvcmRUb2dnbGUgZXh0ZW5kcyBNY1Rvb2x0aXBUcmlnZ2VyIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgICBASW5wdXQoJ21jVG9vbHRpcE5vdEhpZGRlbicpXG4gICAgZ2V0IGNvbnRlbnQoKTogc3RyaW5nIHwgVGVtcGxhdGVSZWY8YW55PiB7XG4gICAgICAgIHJldHVybiAodGhpcy5mb3JtRmllbGQuY29udHJvbCBhcyBNY0lucHV0UGFzc3dvcmQpLmVsZW1lbnRUeXBlID09PSAncGFzc3dvcmQnID9cbiAgICAgICAgICAgIHRoaXMubWNUb29sdGlwSGlkZGVuIDpcbiAgICAgICAgICAgIHRoaXMuX2NvbnRlbnQ7XG4gICAgfVxuXG4gICAgc2V0IGNvbnRlbnQoY29udGVudDogc3RyaW5nIHwgVGVtcGxhdGVSZWY8YW55Pikge1xuICAgICAgICB0aGlzLl9jb250ZW50ID0gY29udGVudDtcblxuICAgICAgICB0aGlzLnVwZGF0ZURhdGEoKTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBtY1Rvb2x0aXBIaWRkZW46IHN0cmluZyB8IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBASW5wdXQoKVxuICAgIGdldCBkaXNhYmxlZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkID09PSB1bmRlZmluZWQgPyB0aGlzLmZvcm1GaWVsZC5kaXNhYmxlZCA6IHRoaXMuX2Rpc2FibGVkO1xuICAgIH1cblxuICAgIHNldCBkaXNhYmxlZCh2YWx1ZTogYW55KSB7XG4gICAgICAgIHRoaXMuX2Rpc2FibGVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcblxuICAgICAgICB0aGlzLl9kaXNhYmxlZCA/IHRoaXMuc3RvcEZvY3VzTW9uaXRvcigpIDogdGhpcy5ydW5Gb2N1c01vbml0b3IoKTtcbiAgICB9XG5cbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bmFtaW5nLWNvbnZlbnRpb25cbiAgICBwcm90ZWN0ZWQgX2Rpc2FibGVkOiBib29sZWFuO1xuXG4gICAgQElucHV0KClcbiAgICBnZXQgdGFiSW5kZXgoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGlzYWJsZWQgPyAtMSA6IHRoaXMuX3RhYkluZGV4O1xuICAgIH1cblxuICAgIHNldCB0YWJJbmRleCh2YWx1ZTogbnVtYmVyKSB7XG4gICAgICAgIC8vIElmIHRoZSBzcGVjaWZpZWQgdGFiSW5kZXggdmFsdWUgaXMgbnVsbCBvciB1bmRlZmluZWQsIGZhbGwgYmFjayB0byB0aGUgZGVmYXVsdCB2YWx1ZS5cbiAgICAgICAgdGhpcy5fdGFiSW5kZXggPSB2YWx1ZSAhPSBudWxsID8gY29lcmNlTnVtYmVyUHJvcGVydHkodmFsdWUpIDogMDtcbiAgICB9XG5cbiAgICBwcml2YXRlIF90YWJJbmRleDogbnVtYmVyID0gMDtcblxuICAgIGdldCBoaWRkZW4oKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAodGhpcy5mb3JtRmllbGQuY29udHJvbCBhcyBNY0lucHV0UGFzc3dvcmQpLmVsZW1lbnRUeXBlID09PSAncGFzc3dvcmQnO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBvdmVybGF5OiBPdmVybGF5LFxuICAgICAgICBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBuZ1pvbmU6IE5nWm9uZSxcbiAgICAgICAgc2Nyb2xsRGlzcGF0Y2hlcjogU2Nyb2xsRGlzcGF0Y2hlcixcbiAgICAgICAgaG9zdFZpZXc6IFZpZXdDb250YWluZXJSZWYsXG4gICAgICAgIEBJbmplY3QoTUNfVE9PTFRJUF9TQ1JPTExfU1RSQVRFR1kpIHNjcm9sbFN0cmF0ZWd5LFxuICAgICAgICBAT3B0aW9uYWwoKSBkaXJlY3Rpb246IERpcmVjdGlvbmFsaXR5LFxuXG4gICAgICAgIHByaXZhdGUgZm9jdXNNb25pdG9yOiBGb2N1c01vbml0b3IsXG4gICAgICAgIHByaXZhdGUgZm9ybUZpZWxkOiBNY0Zvcm1GaWVsZFxuICAgICkge1xuICAgICAgICBzdXBlcihvdmVybGF5LCBlbGVtZW50UmVmLCBuZ1pvbmUsIHNjcm9sbERpc3BhdGNoZXIsIGhvc3RWaWV3LCBzY3JvbGxTdHJhdGVneSwgZGlyZWN0aW9uKTtcblxuICAgICAgICB0aGlzLnRyaWdnZXIgPSBgJHtQb3BVcFRyaWdnZXJzLkhvdmVyfWA7XG5cbiAgICAgICAgdGhpcy5ydW5Gb2N1c01vbml0b3IoKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5zdG9wRm9jdXNNb25pdG9yKCk7XG4gICAgfVxuXG4gICAgdG9nZ2xlKCkge1xuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCkgeyByZXR1cm47IH1cblxuICAgICAgICB0aGlzLmhpZGUoKTtcblxuICAgICAgICBjb25zdCBpbnB1dCA9IHRoaXMuZm9ybUZpZWxkLmNvbnRyb2wgYXMgTWNJbnB1dFBhc3N3b3JkO1xuXG4gICAgICAgIGlucHV0LnRvZ2dsZVR5cGUoKTtcblxuICAgICAgICB0aGlzLnVwZGF0ZURhdGEoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJ1bkZvY3VzTW9uaXRvcigpIHtcbiAgICAgICAgdGhpcy5mb2N1c01vbml0b3IubW9uaXRvcih0aGlzLmVsZW1lbnRSZWYpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChvcmlnaW4pID0+IHtcbiAgICAgICAgICAgICAgICBpZiAob3JpZ2luID09PSAna2V5Ym9hcmQnKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvdygpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAob3JpZ2luID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGlkZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RvcEZvY3VzTW9uaXRvcigpIHtcbiAgICAgICAgdGhpcy5mb2N1c01vbml0b3Iuc3RvcE1vbml0b3JpbmcodGhpcy5lbGVtZW50UmVmKTtcbiAgICB9XG59XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiBgaW5wdXRbbWNJbnB1dFBhc3N3b3JkXWAsXG4gICAgZXhwb3J0QXM6ICdtY0lucHV0UGFzc3dvcmQnLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICdtYy1pbnB1dCBtYy1pbnB1dC1wYXNzd29yZCcsXG4gICAgICAgIC8vIE5hdGl2ZSBpbnB1dCBwcm9wZXJ0aWVzIHRoYXQgYXJlIG92ZXJ3cml0dGVuIGJ5IEFuZ3VsYXIgaW5wdXRzIG5lZWQgdG8gYmUgc3luY2VkIHdpdGhcbiAgICAgICAgLy8gdGhlIG5hdGl2ZSBpbnB1dCBlbGVtZW50LiBPdGhlcndpc2UgcHJvcGVydHkgYmluZGluZ3MgZm9yIHRob3NlIGRvbid0IHdvcmsuXG4gICAgICAgICdbYXR0ci5pZF0nOiAnaWQnLFxuICAgICAgICAnW2F0dHIudHlwZV0nOiAnZWxlbWVudFR5cGUnLFxuICAgICAgICAnW2F0dHIucGxhY2Vob2xkZXJdJzogJ3BsYWNlaG9sZGVyJyxcbiAgICAgICAgJ1thdHRyLmRpc2FibGVkXSc6ICdkaXNhYmxlZCB8fCBudWxsJyxcbiAgICAgICAgJ1tyZXF1aXJlZF0nOiAncmVxdWlyZWQnLFxuXG4gICAgICAgICcoYmx1ciknOiAnb25CbHVyKCknLFxuICAgICAgICAnKGZvY3VzKSc6ICdmb2N1c0NoYW5nZWQodHJ1ZSknLFxuICAgICAgICAnKGlucHV0KSc6ICdvbklucHV0KCknXG4gICAgfSxcbiAgICBwcm92aWRlcnM6IFt7XG4gICAgICAgIHByb3ZpZGU6IE1jRm9ybUZpZWxkQ29udHJvbCwgdXNlRXhpc3Rpbmc6IE1jSW5wdXRQYXNzd29yZFxuICAgIH1dXG59KVxuZXhwb3J0IGNsYXNzIE1jSW5wdXRQYXNzd29yZCBleHRlbmRzIE1jSW5wdXRNaXhpbkJhc2UgaW1wbGVtZW50cyBNY0Zvcm1GaWVsZENvbnRyb2w8YW55PiwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIERvQ2hlY2ssXG4gICAgQ2FuVXBkYXRlRXJyb3JTdGF0ZSwgQWZ0ZXJDb250ZW50SW5pdCwgT25DaGFuZ2VzIHtcblxuICAgIC8qKiBBbiBvYmplY3QgdXNlZCB0byBjb250cm9sIHdoZW4gZXJyb3IgbWVzc2FnZXMgYXJlIHNob3duLiAqL1xuICAgIEBJbnB1dCgpIGVycm9yU3RhdGVNYXRjaGVyOiBFcnJvclN0YXRlTWF0Y2hlcjtcblxuICAgIC8qKlxuICAgICAqIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgTWNGb3JtRmllbGRDb250cm9sLlxuICAgICAqIEBkb2NzLXByaXZhdGVcbiAgICAgKi9cbiAgICBmb2N1c2VkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIE1jRm9ybUZpZWxkQ29udHJvbC5cbiAgICAgKiBAZG9jcy1wcml2YXRlXG4gICAgICovXG4gICAgcmVhZG9ubHkgc3RhdGVDaGFuZ2VzOiBTdWJqZWN0PGFueT4gPSBuZXcgU3ViamVjdDxhbnk+KCk7XG5cbiAgICAvKipcbiAgICAgKiBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIE1jRm9ybUZpZWxkQ29udHJvbC5cbiAgICAgKiBAZG9jcy1wcml2YXRlXG4gICAgICovXG4gICAgY29udHJvbFR5cGU6IHN0cmluZyA9ICdpbnB1dC1wYXNzd29yZCc7XG5cbiAgICBlbGVtZW50VHlwZTogc3RyaW5nID0gJ3Bhc3N3b3JkJztcblxuICAgIC8qKlxuICAgICAqIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgTWNGb3JtRmllbGRDb250cm9sLlxuICAgICAqIEBkb2NzLXByaXZhdGVcbiAgICAgKi9cbiAgICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nO1xuXG4gICAgcHJvdGVjdGVkIHVpZCA9IGBtYy1pbnB1dC0ke25leHRVbmlxdWVJZCsrfWA7XG4gICAgcHJvdGVjdGVkIHByZXZpb3VzTmF0aXZlVmFsdWU6IGFueTtcblxuICAgIC8qKlxuICAgICAqIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgTWNGb3JtRmllbGRDb250cm9sLlxuICAgICAqIEBkb2NzLXByaXZhdGVcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKHRoaXMubmdDb250cm9sPy5kaXNhYmxlZCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubmdDb250cm9sLmRpc2FibGVkO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkO1xuICAgIH1cblxuICAgIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9kaXNhYmxlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG5cbiAgICAgICAgLy8gQnJvd3NlcnMgbWF5IG5vdCBmaXJlIHRoZSBibHVyIGV2ZW50IGlmIHRoZSBpbnB1dCBpcyBkaXNhYmxlZCB0b28gcXVpY2tseS5cbiAgICAgICAgLy8gUmVzZXQgZnJvbSBoZXJlIHRvIGVuc3VyZSB0aGF0IHRoZSBlbGVtZW50IGRvZXNuJ3QgYmVjb21lIHN0dWNrLlxuICAgICAgICBpZiAodGhpcy5mb2N1c2VkKSB7XG4gICAgICAgICAgICB0aGlzLmZvY3VzZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX2Rpc2FibGVkID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIE1jRm9ybUZpZWxkQ29udHJvbC5cbiAgICAgKiBAZG9jcy1wcml2YXRlXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBnZXQgaWQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lkO1xuICAgIH1cblxuICAgIHNldCBpZCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX2lkID0gdmFsdWUgfHwgdGhpcy51aWQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfaWQ6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgTWNGb3JtRmllbGRDb250cm9sLlxuICAgICAqIEBkb2NzLXByaXZhdGVcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGdldCByZXF1aXJlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3JlcXVpcmVkO1xuICAgIH1cblxuICAgIHNldCByZXF1aXJlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9yZXF1aXJlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcmVxdWlyZWQgPSBmYWxzZTtcblxuICAgIC8vIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnR5cGUgPSB0aGlzLl90eXBlO1xuXG4gICAgLyoqXG4gICAgICogSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBNY0Zvcm1GaWVsZENvbnRyb2wuXG4gICAgICogQGRvY3MtcHJpdmF0ZVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IHZhbHVlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pbnB1dFZhbHVlQWNjZXNzb3IudmFsdWU7XG4gICAgfVxuXG4gICAgc2V0IHZhbHVlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKHZhbHVlID09PSB0aGlzLnZhbHVlKSB7IHJldHVybjsgfVxuXG4gICAgICAgIHRoaXMuX2lucHV0VmFsdWVBY2Nlc3Nvci52YWx1ZSA9IHZhbHVlO1xuICAgICAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gICAgfVxuXG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBvcnRob2RveC1nZXR0ZXItYW5kLXNldHRlclxuICAgIHByaXZhdGUgX2lucHV0VmFsdWVBY2Nlc3NvcjogeyB2YWx1ZTogYW55IH07XG5cbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5hbWluZy1jb252ZW50aW9uXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByb3RlY3RlZCBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBAT3B0aW9uYWwoKSBAU2VsZigpIEBJbmplY3QoTkdfVkFMSURBVE9SUykgcHVibGljIHJhd1ZhbGlkYXRvcnM6IFZhbGlkYXRvcltdLFxuICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KE1DX1ZBTElEQVRJT04pIHByaXZhdGUgbWNWYWxpZGF0aW9uOiBNY1ZhbGlkYXRpb25PcHRpb25zLFxuICAgICAgICBAT3B0aW9uYWwoKSBAU2VsZigpIG5nQ29udHJvbDogTmdDb250cm9sLFxuICAgICAgICBAT3B0aW9uYWwoKSBAU2VsZigpIHB1YmxpYyBuZ01vZGVsOiBOZ01vZGVsLFxuICAgICAgICBAT3B0aW9uYWwoKSBAU2VsZigpIHB1YmxpYyBmb3JtQ29udHJvbE5hbWU6IEZvcm1Db250cm9sTmFtZSxcbiAgICAgICAgQE9wdGlvbmFsKCkgcGFyZW50Rm9ybTogTmdGb3JtLFxuICAgICAgICBAT3B0aW9uYWwoKSBwYXJlbnRGb3JtR3JvdXA6IEZvcm1Hcm91cERpcmVjdGl2ZSxcbiAgICAgICAgZGVmYXVsdEVycm9yU3RhdGVNYXRjaGVyOiBFcnJvclN0YXRlTWF0Y2hlcixcbiAgICAgICAgQE9wdGlvbmFsKCkgQFNlbGYoKSBASW5qZWN0KE1DX0lOUFVUX1ZBTFVFX0FDQ0VTU09SKSBpbnB1dFZhbHVlQWNjZXNzb3I6IGFueSxcbiAgICAgICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgICApIHtcbiAgICAgICAgc3VwZXIoZGVmYXVsdEVycm9yU3RhdGVNYXRjaGVyLCBwYXJlbnRGb3JtLCBwYXJlbnRGb3JtR3JvdXAsIG5nQ29udHJvbCk7XG5cbiAgICAgICAgLy8gSWYgbm8gaW5wdXQgdmFsdWUgYWNjZXNzb3Igd2FzIGV4cGxpY2l0bHkgc3BlY2lmaWVkLCB1c2UgdGhlIGVsZW1lbnQgYXMgdGhlIGlucHV0IHZhbHVlXG4gICAgICAgIC8vIGFjY2Vzc29yLlxuICAgICAgICB0aGlzLl9pbnB1dFZhbHVlQWNjZXNzb3IgPSBpbnB1dFZhbHVlQWNjZXNzb3IgfHwgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICAgICAgdGhpcy5wcmV2aW91c05hdGl2ZVZhbHVlID0gdGhpcy52YWx1ZTtcblxuICAgICAgICAvLyBGb3JjZSBzZXR0ZXIgdG8gYmUgY2FsbGVkIGluIGNhc2UgaWQgd2FzIG5vdCBzcGVjaWZpZWQuXG4gICAgICAgIHRoaXMuaWQgPSB0aGlzLmlkO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLm5nQ29udHJvbCkgeyByZXR1cm47IH1cblxuICAgICAgICBpZiAodGhpcy5tY1ZhbGlkYXRpb24udXNlVmFsaWRhdGlvbikge1xuICAgICAgICAgICAgc2V0TW9zYWljVmFsaWRhdGlvbih0aGlzLCB0aGlzLmNoYW5nZURldGVjdG9yUmVmKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKCkge1xuICAgICAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgbmdEb0NoZWNrKCkge1xuICAgICAgICBpZiAodGhpcy5uZ0NvbnRyb2wpIHtcbiAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gcmUtZXZhbHVhdGUgdGhpcyBvbiBldmVyeSBjaGFuZ2UgZGV0ZWN0aW9uIGN5Y2xlLCBiZWNhdXNlIHRoZXJlIGFyZSBzb21lXG4gICAgICAgICAgICAvLyBlcnJvciB0cmlnZ2VycyB0aGF0IHdlIGNhbid0IHN1YnNjcmliZSB0byAoZS5nLiBwYXJlbnQgZm9ybSBzdWJtaXNzaW9ucykuIFRoaXMgbWVhbnNcbiAgICAgICAgICAgIC8vIHRoYXQgd2hhdGV2ZXIgbG9naWMgaXMgaW4gaGVyZSBoYXMgdG8gYmUgc3VwZXIgbGVhbiBvciB3ZSByaXNrIGRlc3Ryb3lpbmcgdGhlIHBlcmZvcm1hbmNlLlxuICAgICAgICAgICAgdGhpcy51cGRhdGVFcnJvclN0YXRlKCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBXZSBuZWVkIHRvIGRpcnR5LWNoZWNrIHRoZSBuYXRpdmUgZWxlbWVudCdzIHZhbHVlLCBiZWNhdXNlIHRoZXJlIGFyZSBzb21lIGNhc2VzIHdoZXJlXG4gICAgICAgIC8vIHdlIHdvbid0IGJlIG5vdGlmaWVkIHdoZW4gaXQgY2hhbmdlcyAoZS5nLiB0aGUgY29uc3VtZXIgaXNuJ3QgdXNpbmcgZm9ybXMgb3IgdGhleSdyZVxuICAgICAgICAvLyB1cGRhdGluZyB0aGUgdmFsdWUgdXNpbmcgYGVtaXRFdmVudDogZmFsc2VgKS5cbiAgICAgICAgdGhpcy5kaXJ0eUNoZWNrTmF0aXZlVmFsdWUoKTtcbiAgICB9XG5cbiAgICB0b2dnbGVUeXBlKCkge1xuICAgICAgICB0aGlzLmVsZW1lbnRUeXBlID0gdGhpcy5lbGVtZW50VHlwZSA9PT0gJ3Bhc3N3b3JkJyA/ICd0ZXh0JyA6ICdwYXNzd29yZCc7XG4gICAgfVxuXG4gICAgLyoqIEZvY3VzZXMgdGhlIGlucHV0LiAqL1xuICAgIGZvY3VzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cblxuICAgIG9uQmx1cigpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMubmdDb250cm9sPy5jb250cm9sKSB7XG4gICAgICAgICAgICBjb25zdCBjb250cm9sID0gdGhpcy5uZ0NvbnRyb2wuY29udHJvbDtcblxuICAgICAgICAgICAgY29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgICAgICAgIChjb250cm9sLnN0YXR1c0NoYW5nZXMgYXMgRXZlbnRFbWl0dGVyPHN0cmluZz4pLmVtaXQoY29udHJvbC5zdGF0dXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5mb2N1c0NoYW5nZWQoZmFsc2UpO1xuICAgIH1cblxuICAgIC8qKiBDYWxsYmFjayBmb3IgdGhlIGNhc2VzIHdoZXJlIHRoZSBmb2N1c2VkIHN0YXRlIG9mIHRoZSBpbnB1dCBjaGFuZ2VzLiAqL1xuICAgIGZvY3VzQ2hhbmdlZChpc0ZvY3VzZWQ6IGJvb2xlYW4pIHtcbiAgICAgICAgaWYgKGlzRm9jdXNlZCA9PT0gdGhpcy5mb2N1c2VkKSB7IHJldHVybjsgfVxuXG4gICAgICAgIHRoaXMuZm9jdXNlZCA9IGlzRm9jdXNlZDtcbiAgICAgICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCh7IGZvY3VzZWQ6IHRoaXMuZm9jdXNlZCB9KTtcbiAgICB9XG5cbiAgICBvbklucHV0KCkge1xuICAgICAgICAvLyBUaGlzIGlzIGEgbm9vcCBmdW5jdGlvbiBhbmQgaXMgdXNlZCB0byBsZXQgQW5ndWxhciBrbm93IHdoZW5ldmVyIHRoZSB2YWx1ZSBjaGFuZ2VzLlxuICAgICAgICAvLyBBbmd1bGFyIHdpbGwgcnVuIGEgbmV3IGNoYW5nZSBkZXRlY3Rpb24gZWFjaCB0aW1lIHRoZSBgaW5wdXRgIGV2ZW50IGhhcyBiZWVuIGRpc3BhdGNoZWQuXG4gICAgICAgIC8vIEl0J3MgbmVjZXNzYXJ5IHRoYXQgQW5ndWxhciByZWNvZ25pemVzIHRoZSB2YWx1ZSBjaGFuZ2UsIGJlY2F1c2Ugd2hlbiBmbG9hdGluZ0xhYmVsXG4gICAgICAgIC8vIGlzIHNldCB0byBmYWxzZSBhbmQgQW5ndWxhciBmb3JtcyBhcmVuJ3QgdXNlZCwgdGhlIHBsYWNlaG9sZGVyIHdvbid0IHJlY29nbml6ZSB0aGVcbiAgICAgICAgLy8gdmFsdWUgY2hhbmdlcyBhbmQgd2lsbCBub3QgZGlzYXBwZWFyLlxuICAgICAgICAvLyBMaXN0ZW5pbmcgdG8gdGhlIGlucHV0IGV2ZW50IHdvdWxkbid0IGJlIG5lY2Vzc2FyeSB3aGVuIHRoZSBpbnB1dCBpcyB1c2luZyB0aGVcbiAgICAgICAgLy8gRm9ybXNNb2R1bGUgb3IgUmVhY3RpdmVGb3Jtc01vZHVsZSwgYmVjYXVzZSBBbmd1bGFyIGZvcm1zIGFsc28gbGlzdGVucyB0byBpbnB1dCBldmVudHMuXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBNY0Zvcm1GaWVsZENvbnRyb2wuXG4gICAgICogQGRvY3MtcHJpdmF0ZVxuICAgICAqL1xuICAgIGdldCBlbXB0eSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC52YWx1ZSAmJiAhdGhpcy5pc0JhZElucHV0KCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBNY0Zvcm1GaWVsZENvbnRyb2wuXG4gICAgICogQGRvY3MtcHJpdmF0ZVxuICAgICAqL1xuICAgIG9uQ29udGFpbmVyQ2xpY2soKSB7XG4gICAgICAgIHRoaXMuZm9jdXMoKTtcbiAgICB9XG5cbiAgICAvKiogRG9lcyBzb21lIG1hbnVhbCBkaXJ0eSBjaGVja2luZyBvbiB0aGUgbmF0aXZlIGlucHV0IGB2YWx1ZWAgcHJvcGVydHkuICovXG4gICAgcHJvdGVjdGVkIGRpcnR5Q2hlY2tOYXRpdmVWYWx1ZSgpIHtcbiAgICAgICAgaWYgKHRoaXMucHJldmlvdXNOYXRpdmVWYWx1ZSAhPT0gdGhpcy52YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5wcmV2aW91c05hdGl2ZVZhbHVlID0gdGhpcy52YWx1ZTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBDaGVja3Mgd2hldGhlciB0aGUgaW5wdXQgaXMgaW52YWxpZCBiYXNlZCBvbiB0aGUgbmF0aXZlIHZhbGlkYXRpb24uICovXG4gICAgcHJvdGVjdGVkIGlzQmFkSW5wdXQoKSB7XG4gICAgICAgIC8vIFRoZSBgdmFsaWRpdHlgIHByb3BlcnR5IHdvbid0IGJlIHByZXNlbnQgb24gcGxhdGZvcm0tc2VydmVyLlxuICAgICAgICByZXR1cm4gKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50IGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbGlkaXR5Py5iYWRJbnB1dDtcbiAgICB9XG59XG4iXX0=