@taiga-ui/cdk 2.55.0 → 2.56.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 (659) hide show
  1. package/bundles/taiga-ui-cdk-abstract.umd.js +12 -12
  2. package/bundles/taiga-ui-cdk-abstract.umd.js.map +1 -1
  3. package/bundles/taiga-ui-cdk-abstract.umd.min.js.map +1 -1
  4. package/bundles/taiga-ui-cdk-classes.umd.js +1 -1
  5. package/bundles/taiga-ui-cdk-classes.umd.js.map +1 -1
  6. package/bundles/taiga-ui-cdk-classes.umd.min.js.map +1 -1
  7. package/bundles/taiga-ui-cdk-coercion.umd.js +1 -1
  8. package/bundles/taiga-ui-cdk-coercion.umd.js.map +1 -1
  9. package/bundles/taiga-ui-cdk-coercion.umd.min.js.map +1 -1
  10. package/bundles/taiga-ui-cdk-components-alert-host.umd.js +1 -1
  11. package/bundles/taiga-ui-cdk-components-alert-host.umd.js.map +1 -1
  12. package/bundles/taiga-ui-cdk-components-alert-host.umd.min.js.map +1 -1
  13. package/bundles/taiga-ui-cdk-components-dialog-host.umd.js +4 -4
  14. package/bundles/taiga-ui-cdk-components-dialog-host.umd.js.map +1 -1
  15. package/bundles/taiga-ui-cdk-components-dialog-host.umd.min.js.map +1 -1
  16. package/bundles/taiga-ui-cdk-components-dropdown-host.umd.js +2 -2
  17. package/bundles/taiga-ui-cdk-components-dropdown-host.umd.js.map +1 -1
  18. package/bundles/taiga-ui-cdk-components-dropdown-host.umd.min.js.map +1 -1
  19. package/bundles/taiga-ui-cdk-components-portal-host.umd.js +1 -1
  20. package/bundles/taiga-ui-cdk-components-portal-host.umd.js.map +1 -1
  21. package/bundles/taiga-ui-cdk-components-portal-host.umd.min.js.map +1 -1
  22. package/bundles/taiga-ui-cdk-constants.umd.js +15 -15
  23. package/bundles/taiga-ui-cdk-constants.umd.js.map +1 -1
  24. package/bundles/taiga-ui-cdk-constants.umd.min.js.map +1 -1
  25. package/bundles/taiga-ui-cdk-date-time.umd.js +35 -35
  26. package/bundles/taiga-ui-cdk-date-time.umd.js.map +1 -1
  27. package/bundles/taiga-ui-cdk-date-time.umd.min.js.map +1 -1
  28. package/bundles/taiga-ui-cdk-decorators.umd.js +1 -1
  29. package/bundles/taiga-ui-cdk-decorators.umd.js.map +1 -1
  30. package/bundles/taiga-ui-cdk-decorators.umd.min.js.map +1 -1
  31. package/bundles/taiga-ui-cdk-directives-active-zone.umd.js +3 -3
  32. package/bundles/taiga-ui-cdk-directives-active-zone.umd.js.map +1 -1
  33. package/bundles/taiga-ui-cdk-directives-active-zone.umd.min.js.map +1 -1
  34. package/bundles/taiga-ui-cdk-directives-auto-focus.umd.js +15 -15
  35. package/bundles/taiga-ui-cdk-directives-auto-focus.umd.js.map +1 -1
  36. package/bundles/taiga-ui-cdk-directives-auto-focus.umd.min.js.map +1 -1
  37. package/bundles/taiga-ui-cdk-directives-autofilled.umd.js +6 -6
  38. package/bundles/taiga-ui-cdk-directives-autofilled.umd.js.map +1 -1
  39. package/bundles/taiga-ui-cdk-directives-autofilled.umd.min.js.map +1 -1
  40. package/bundles/taiga-ui-cdk-directives-checked.umd.js +6 -6
  41. package/bundles/taiga-ui-cdk-directives-checked.umd.js.map +1 -1
  42. package/bundles/taiga-ui-cdk-directives-checked.umd.min.js.map +1 -1
  43. package/bundles/taiga-ui-cdk-directives-copy-processor.umd.js +3 -3
  44. package/bundles/taiga-ui-cdk-directives-copy-processor.umd.js.map +1 -1
  45. package/bundles/taiga-ui-cdk-directives-copy-processor.umd.min.js.map +1 -1
  46. package/bundles/taiga-ui-cdk-directives-drag.umd.js +4 -4
  47. package/bundles/taiga-ui-cdk-directives-drag.umd.js.map +1 -1
  48. package/bundles/taiga-ui-cdk-directives-drag.umd.min.js.map +1 -1
  49. package/bundles/taiga-ui-cdk-directives-droppable.umd.js +5 -5
  50. package/bundles/taiga-ui-cdk-directives-droppable.umd.js.map +1 -1
  51. package/bundles/taiga-ui-cdk-directives-droppable.umd.min.js.map +1 -1
  52. package/bundles/taiga-ui-cdk-directives-element.umd.js +2 -2
  53. package/bundles/taiga-ui-cdk-directives-element.umd.js.map +1 -1
  54. package/bundles/taiga-ui-cdk-directives-element.umd.min.js.map +1 -1
  55. package/bundles/taiga-ui-cdk-directives-focus-trap.umd.js +5 -5
  56. package/bundles/taiga-ui-cdk-directives-focus-trap.umd.js.map +1 -1
  57. package/bundles/taiga-ui-cdk-directives-focus-trap.umd.min.js.map +1 -1
  58. package/bundles/taiga-ui-cdk-directives-focus-visible.umd.js +2 -2
  59. package/bundles/taiga-ui-cdk-directives-focus-visible.umd.js.map +1 -1
  60. package/bundles/taiga-ui-cdk-directives-focus-visible.umd.min.js.map +1 -1
  61. package/bundles/taiga-ui-cdk-directives-focusable.umd.js +3 -3
  62. package/bundles/taiga-ui-cdk-directives-focusable.umd.js.map +1 -1
  63. package/bundles/taiga-ui-cdk-directives-focusable.umd.min.js.map +1 -1
  64. package/bundles/taiga-ui-cdk-directives-focused.umd.js +2 -2
  65. package/bundles/taiga-ui-cdk-directives-focused.umd.js.map +1 -1
  66. package/bundles/taiga-ui-cdk-directives-focused.umd.min.js.map +1 -1
  67. package/bundles/taiga-ui-cdk-directives-for-async.umd.js +1 -1
  68. package/bundles/taiga-ui-cdk-directives-for-async.umd.js.map +1 -1
  69. package/bundles/taiga-ui-cdk-directives-for-async.umd.min.js.map +1 -1
  70. package/bundles/taiga-ui-cdk-directives-for.umd.js +1 -1
  71. package/bundles/taiga-ui-cdk-directives-for.umd.js.map +1 -1
  72. package/bundles/taiga-ui-cdk-directives-for.umd.min.js.map +1 -1
  73. package/bundles/taiga-ui-cdk-directives-high-dpi.umd.js +1 -1
  74. package/bundles/taiga-ui-cdk-directives-high-dpi.umd.js.map +1 -1
  75. package/bundles/taiga-ui-cdk-directives-high-dpi.umd.min.js.map +1 -1
  76. package/bundles/taiga-ui-cdk-directives-hovered.umd.js +4 -4
  77. package/bundles/taiga-ui-cdk-directives-hovered.umd.js.map +1 -1
  78. package/bundles/taiga-ui-cdk-directives-hovered.umd.min.js.map +1 -1
  79. package/bundles/taiga-ui-cdk-directives-input-mode.umd.js +10 -10
  80. package/bundles/taiga-ui-cdk-directives-input-mode.umd.js.map +1 -1
  81. package/bundles/taiga-ui-cdk-directives-input-mode.umd.min.js.map +1 -1
  82. package/bundles/taiga-ui-cdk-directives-item.umd.js +1 -1
  83. package/bundles/taiga-ui-cdk-directives-item.umd.js.map +1 -1
  84. package/bundles/taiga-ui-cdk-directives-item.umd.min.js.map +1 -1
  85. package/bundles/taiga-ui-cdk-directives-let.umd.js +1 -1
  86. package/bundles/taiga-ui-cdk-directives-let.umd.js.map +1 -1
  87. package/bundles/taiga-ui-cdk-directives-let.umd.min.js.map +1 -1
  88. package/bundles/taiga-ui-cdk-directives-media.umd.js +12 -12
  89. package/bundles/taiga-ui-cdk-directives-media.umd.js.map +1 -1
  90. package/bundles/taiga-ui-cdk-directives-media.umd.min.js.map +1 -1
  91. package/bundles/taiga-ui-cdk-directives-obscured.umd.js +1 -1
  92. package/bundles/taiga-ui-cdk-directives-obscured.umd.js.map +1 -1
  93. package/bundles/taiga-ui-cdk-directives-obscured.umd.min.js.map +1 -1
  94. package/bundles/taiga-ui-cdk-directives-overscroll.umd.js +11 -11
  95. package/bundles/taiga-ui-cdk-directives-overscroll.umd.js.map +1 -1
  96. package/bundles/taiga-ui-cdk-directives-overscroll.umd.min.js.map +1 -1
  97. package/bundles/taiga-ui-cdk-directives-pan.umd.js +2 -2
  98. package/bundles/taiga-ui-cdk-directives-pan.umd.js.map +1 -1
  99. package/bundles/taiga-ui-cdk-directives-pan.umd.min.js.map +1 -1
  100. package/bundles/taiga-ui-cdk-directives-portal.umd.js +1 -1
  101. package/bundles/taiga-ui-cdk-directives-portal.umd.js.map +1 -1
  102. package/bundles/taiga-ui-cdk-directives-portal.umd.min.js.map +1 -1
  103. package/bundles/taiga-ui-cdk-directives-pressed.umd.js +1 -1
  104. package/bundles/taiga-ui-cdk-directives-pressed.umd.js.map +1 -1
  105. package/bundles/taiga-ui-cdk-directives-pressed.umd.min.js.map +1 -1
  106. package/bundles/taiga-ui-cdk-directives-prevent-default.umd.js +3 -3
  107. package/bundles/taiga-ui-cdk-directives-prevent-default.umd.js.map +1 -1
  108. package/bundles/taiga-ui-cdk-directives-prevent-default.umd.min.js.map +1 -1
  109. package/bundles/taiga-ui-cdk-directives-repeat-times.umd.js +1 -1
  110. package/bundles/taiga-ui-cdk-directives-repeat-times.umd.js.map +1 -1
  111. package/bundles/taiga-ui-cdk-directives-repeat-times.umd.min.js.map +1 -1
  112. package/bundles/taiga-ui-cdk-directives-resize.umd.js +2 -2
  113. package/bundles/taiga-ui-cdk-directives-resize.umd.js.map +1 -1
  114. package/bundles/taiga-ui-cdk-directives-resize.umd.min.js.map +1 -1
  115. package/bundles/taiga-ui-cdk-directives-swipe.umd.js +2 -2
  116. package/bundles/taiga-ui-cdk-directives-swipe.umd.js.map +1 -1
  117. package/bundles/taiga-ui-cdk-directives-swipe.umd.min.js.map +1 -1
  118. package/bundles/taiga-ui-cdk-directives-validator.umd.js +1 -1
  119. package/bundles/taiga-ui-cdk-directives-validator.umd.js.map +1 -1
  120. package/bundles/taiga-ui-cdk-directives-validator.umd.min.js.map +1 -1
  121. package/bundles/taiga-ui-cdk-directives-zoom.umd.js +3 -3
  122. package/bundles/taiga-ui-cdk-directives-zoom.umd.js.map +1 -1
  123. package/bundles/taiga-ui-cdk-directives-zoom.umd.min.js.map +1 -1
  124. package/bundles/taiga-ui-cdk-enums.umd.js.map +1 -1
  125. package/bundles/taiga-ui-cdk-enums.umd.min.js.map +1 -1
  126. package/bundles/taiga-ui-cdk-exceptions.umd.js +10 -10
  127. package/bundles/taiga-ui-cdk-exceptions.umd.js.map +1 -1
  128. package/bundles/taiga-ui-cdk-exceptions.umd.min.js.map +1 -1
  129. package/bundles/taiga-ui-cdk-observables.umd.js +7 -7
  130. package/bundles/taiga-ui-cdk-observables.umd.js.map +1 -1
  131. package/bundles/taiga-ui-cdk-observables.umd.min.js.map +1 -1
  132. package/bundles/taiga-ui-cdk-pipes-filter.umd.js +1 -1
  133. package/bundles/taiga-ui-cdk-pipes-filter.umd.js.map +1 -1
  134. package/bundles/taiga-ui-cdk-pipes-filter.umd.min.js.map +1 -1
  135. package/bundles/taiga-ui-cdk-pipes-mapper.umd.js +1 -1
  136. package/bundles/taiga-ui-cdk-pipes-mapper.umd.js.map +1 -1
  137. package/bundles/taiga-ui-cdk-pipes-mapper.umd.min.js.map +1 -1
  138. package/bundles/taiga-ui-cdk-services.umd.js +27 -27
  139. package/bundles/taiga-ui-cdk-services.umd.js.map +1 -1
  140. package/bundles/taiga-ui-cdk-services.umd.min.js.map +1 -1
  141. package/bundles/taiga-ui-cdk-tokens.umd.js +31 -31
  142. package/bundles/taiga-ui-cdk-tokens.umd.js.map +1 -1
  143. package/bundles/taiga-ui-cdk-tokens.umd.min.js.map +1 -1
  144. package/bundles/taiga-ui-cdk-utils-browser.umd.js +5 -5
  145. package/bundles/taiga-ui-cdk-utils-browser.umd.js.map +1 -1
  146. package/bundles/taiga-ui-cdk-utils-browser.umd.min.js.map +1 -1
  147. package/bundles/taiga-ui-cdk-utils-dom.umd.js +17 -11
  148. package/bundles/taiga-ui-cdk-utils-dom.umd.js.map +1 -1
  149. package/bundles/taiga-ui-cdk-utils-dom.umd.min.js +1 -1
  150. package/bundles/taiga-ui-cdk-utils-dom.umd.min.js.map +1 -1
  151. package/bundles/taiga-ui-cdk-utils-focus.umd.js +19 -19
  152. package/bundles/taiga-ui-cdk-utils-focus.umd.js.map +1 -1
  153. package/bundles/taiga-ui-cdk-utils-focus.umd.min.js.map +1 -1
  154. package/bundles/taiga-ui-cdk-utils-format.umd.js +2 -2
  155. package/bundles/taiga-ui-cdk-utils-format.umd.js.map +1 -1
  156. package/bundles/taiga-ui-cdk-utils-format.umd.min.js.map +1 -1
  157. package/bundles/taiga-ui-cdk-utils-math.umd.js +4 -4
  158. package/bundles/taiga-ui-cdk-utils-math.umd.js.map +1 -1
  159. package/bundles/taiga-ui-cdk-utils-math.umd.min.js.map +1 -1
  160. package/bundles/taiga-ui-cdk-utils-miscellaneous.umd.js +4 -4
  161. package/bundles/taiga-ui-cdk-utils-miscellaneous.umd.js.map +1 -1
  162. package/bundles/taiga-ui-cdk-utils-miscellaneous.umd.min.js.map +1 -1
  163. package/bundles/taiga-ui-cdk-utils-os.umd.js +1 -1
  164. package/bundles/taiga-ui-cdk-utils-os.umd.js.map +1 -1
  165. package/bundles/taiga-ui-cdk-utils-os.umd.min.js.map +1 -1
  166. package/bundles/taiga-ui-cdk-utils-svg.umd.js +1 -1
  167. package/bundles/taiga-ui-cdk-utils-svg.umd.js.map +1 -1
  168. package/bundles/taiga-ui-cdk-utils-svg.umd.min.js.map +1 -1
  169. package/directives/active-zone/taiga-ui-cdk-directives-active-zone.metadata.json +1 -1
  170. package/esm2015/abstract/control.js +4 -4
  171. package/esm2015/abstract/interactive.js +8 -8
  172. package/esm2015/abstract/portal-host.js +2 -2
  173. package/esm2015/abstract/theme-switcher.js +2 -2
  174. package/esm2015/classes/assert.js +2 -2
  175. package/esm2015/coercion/coerce-boolean-property.js +2 -2
  176. package/esm2015/components/alert-host/alert-host.component.js +2 -2
  177. package/esm2015/components/dialog-host/dialog-host.component.js +5 -5
  178. package/esm2015/components/dropdown-host/dropdown-host.component.js +3 -3
  179. package/esm2015/components/portal-host/portal.service.js +2 -2
  180. package/esm2015/constants/parent-animation.js +5 -5
  181. package/esm2015/constants/svg-node-filter.js +2 -2
  182. package/esm2015/constants/unicode-chars.js +11 -11
  183. package/esm2015/date-time/date-fillers.js +3 -3
  184. package/esm2015/date-time/date-format.js +3 -3
  185. package/esm2015/date-time/date-separator.js +3 -3
  186. package/esm2015/date-time/day-range.js +7 -7
  187. package/esm2015/date-time/day.js +14 -14
  188. package/esm2015/date-time/month.js +2 -2
  189. package/esm2015/date-time/time.js +7 -7
  190. package/esm2015/date-time/year.js +2 -2
  191. package/esm2015/decorators/pure.js +2 -2
  192. package/esm2015/directives/active-zone/active-zone.directive.js +4 -4
  193. package/esm2015/directives/auto-focus/autofocus.directive.js +2 -2
  194. package/esm2015/directives/auto-focus/autofocus.options.js +2 -2
  195. package/esm2015/directives/auto-focus/handlers/abstract.handler.js +2 -2
  196. package/esm2015/directives/auto-focus/handlers/default.handler.js +2 -2
  197. package/esm2015/directives/auto-focus/handlers/ios.handler.js +12 -12
  198. package/esm2015/directives/autofilled/autofilled-style.component.js +2 -2
  199. package/esm2015/directives/autofilled/autofilled.directive.js +6 -6
  200. package/esm2015/directives/checked/checked.directive.js +7 -7
  201. package/esm2015/directives/copy-processor/copy-processor.directive.js +4 -4
  202. package/esm2015/directives/drag/drag.directive.js +5 -5
  203. package/esm2015/directives/droppable/droppable.directive.js +5 -5
  204. package/esm2015/directives/element/element.directive.js +3 -3
  205. package/esm2015/directives/focus-trap/focus-trap.directive.js +6 -6
  206. package/esm2015/directives/focus-visible/focus-visible.directive.js +3 -3
  207. package/esm2015/directives/focusable/focusable.directive.js +4 -4
  208. package/esm2015/directives/focused/focused.directive.js +3 -3
  209. package/esm2015/directives/for/for.directive.js +2 -2
  210. package/esm2015/directives/for-async/for-async.directive.js +2 -2
  211. package/esm2015/directives/high-dpi/high-dpi.directive.js +2 -2
  212. package/esm2015/directives/hovered/hovered.directive.js +5 -5
  213. package/esm2015/directives/input-mode/input-mode.directive.js +11 -11
  214. package/esm2015/directives/item/item.directive.js +2 -2
  215. package/esm2015/directives/let/let.directive.js +2 -2
  216. package/esm2015/directives/media/media.directive.js +13 -13
  217. package/esm2015/directives/obscured/obscured.directive.js +2 -2
  218. package/esm2015/directives/overscroll/overscroll.directive.js +12 -12
  219. package/esm2015/directives/pan/pan.directive.js +3 -3
  220. package/esm2015/directives/portal/portal.directive.js +2 -2
  221. package/esm2015/directives/pressed/pressed.directive.js +2 -2
  222. package/esm2015/directives/prevent-default/prevent-default.directive.js +4 -4
  223. package/esm2015/directives/repeat-times/repeat-times.directive.js +2 -2
  224. package/esm2015/directives/resize/resize.directive.js +3 -3
  225. package/esm2015/directives/swipe/swipe.directive.js +3 -3
  226. package/esm2015/directives/validator/validator.directive.js +2 -2
  227. package/esm2015/directives/zoom/zoom.directive.js +4 -4
  228. package/esm2015/enums/autocomplete.js +1 -1
  229. package/esm2015/enums/input-mode.js +1 -1
  230. package/esm2015/enums/input-type.js +1 -1
  231. package/esm2015/enums/overscroll-mode.js +1 -1
  232. package/esm2015/exceptions/computed-document.exception.js +2 -2
  233. package/esm2015/exceptions/document-selection.exception.js +2 -2
  234. package/esm2015/exceptions/no-host.exception.js +2 -2
  235. package/esm2015/exceptions/owner-document.exception.js +2 -2
  236. package/esm2015/exceptions/pure.exception.js +2 -2
  237. package/esm2015/exceptions/table-sort-key.exception.js +2 -2
  238. package/esm2015/exceptions/ts-parser.exception.js +2 -2
  239. package/esm2015/exceptions/value-changes.exception.js +2 -2
  240. package/esm2015/exceptions/value-present.exception.js +2 -2
  241. package/esm2015/exceptions/xml-parsing.exception.js +2 -2
  242. package/esm2015/observables/drag-and-drop-from.js +2 -2
  243. package/esm2015/observables/focus-visible-observable.js +5 -5
  244. package/esm2015/observables/mouse-drag-finish-from.js +2 -2
  245. package/esm2015/observables/pressed-observable.js +2 -2
  246. package/esm2015/pipes/filter/filter.pipe.js +2 -2
  247. package/esm2015/pipes/mapper/mapper.pipe.js +2 -2
  248. package/esm2015/services/directive-styles.service.js +5 -5
  249. package/esm2015/services/hovered.service.js +4 -4
  250. package/esm2015/services/id.service.js +3 -3
  251. package/esm2015/services/obscured.service.js +2 -2
  252. package/esm2015/services/pan.service.js +5 -5
  253. package/esm2015/services/parents-scroll.service.js +2 -2
  254. package/esm2015/services/scroll.service.js +5 -5
  255. package/esm2015/services/static-request.service.js +3 -3
  256. package/esm2015/services/swipe.service.js +2 -2
  257. package/esm2015/services/zoom.service.js +3 -3
  258. package/esm2015/tokens/active-element.js +9 -9
  259. package/esm2015/tokens/alerts.js +2 -2
  260. package/esm2015/tokens/default-renderer.js +2 -2
  261. package/esm2015/tokens/dialogs.js +2 -2
  262. package/esm2015/tokens/focusable-item-accessor.js +2 -2
  263. package/esm2015/tokens/is-android.js +2 -2
  264. package/esm2015/tokens/is-apple.js +2 -2
  265. package/esm2015/tokens/is-chromium.js +2 -2
  266. package/esm2015/tokens/is-cypress.js +2 -2
  267. package/esm2015/tokens/is-firefox.js +3 -3
  268. package/esm2015/tokens/is-ios.js +2 -2
  269. package/esm2015/tokens/is-mobile.js +2 -2
  270. package/esm2015/tokens/is-webkit.js +2 -2
  271. package/esm2015/tokens/removed-element.js +2 -2
  272. package/esm2015/tokens/sanitizer.js +2 -2
  273. package/esm2015/tokens/swipe-options.js +2 -2
  274. package/esm2015/tokens/take-only-trusted-events.js +2 -2
  275. package/esm2015/tokens/touch-supported.js +3 -3
  276. package/esm2015/tokens/window-height.js +3 -3
  277. package/esm2015/tokens/zoom-options.js +2 -2
  278. package/esm2015/utils/browser/is-edge-older-than.js +2 -2
  279. package/esm2015/utils/browser/is-edge.js +2 -2
  280. package/esm2015/utils/browser/is-firefox.js +2 -2
  281. package/esm2015/utils/browser/is-ie.js +2 -2
  282. package/esm2015/utils/browser/is-safari.js +2 -2
  283. package/esm2015/utils/dom/custom-event.js +3 -3
  284. package/esm2015/utils/dom/get-actual-target.js +2 -2
  285. package/esm2015/utils/dom/get-clipboard-data-text.js +4 -4
  286. package/esm2015/utils/dom/get-document-or-shadow-root.js +2 -2
  287. package/esm2015/utils/dom/get-element-offset.js +2 -2
  288. package/esm2015/utils/dom/index.js +2 -1
  289. package/esm2015/utils/dom/is-element.js +5 -0
  290. package/esm2015/utils/dom/is-form-field.js +4 -4
  291. package/esm2015/utils/focus/is-native-keyboard-focusable.js +14 -14
  292. package/esm2015/utils/focus/is-native-mouse-focusable.js +3 -3
  293. package/esm2015/utils/focus/set-native-mouse-focused.js +5 -5
  294. package/esm2015/utils/format/pad-start.js +2 -2
  295. package/esm2015/utils/format/px.js +2 -2
  296. package/esm2015/utils/math/round.js +5 -5
  297. package/esm2015/utils/miscellaneous/ease-in-out-quad.js +2 -2
  298. package/esm2015/utils/miscellaneous/get-swipe-direction.js +3 -3
  299. package/esm2015/utils/miscellaneous/is-number.js +2 -2
  300. package/esm2015/utils/os/is-apple-platform.js +2 -2
  301. package/esm2015/utils/svg/svg-linear-gradient-processor.js +2 -2
  302. package/esm5/abstract/control.js +4 -4
  303. package/esm5/abstract/interactive.js +8 -8
  304. package/esm5/abstract/portal-host.js +2 -2
  305. package/esm5/abstract/theme-switcher.js +2 -2
  306. package/esm5/classes/assert.js +2 -2
  307. package/esm5/coercion/coerce-boolean-property.js +2 -2
  308. package/esm5/components/alert-host/alert-host.component.js +2 -2
  309. package/esm5/components/dialog-host/dialog-host.component.js +5 -5
  310. package/esm5/components/dropdown-host/dropdown-host.component.js +3 -3
  311. package/esm5/components/portal-host/portal.service.js +2 -2
  312. package/esm5/constants/parent-animation.js +5 -5
  313. package/esm5/constants/svg-node-filter.js +2 -2
  314. package/esm5/constants/unicode-chars.js +11 -11
  315. package/esm5/date-time/date-fillers.js +3 -3
  316. package/esm5/date-time/date-format.js +3 -3
  317. package/esm5/date-time/date-separator.js +3 -3
  318. package/esm5/date-time/day-range.js +8 -8
  319. package/esm5/date-time/day.js +15 -15
  320. package/esm5/date-time/month.js +2 -2
  321. package/esm5/date-time/time.js +7 -7
  322. package/esm5/date-time/year.js +2 -2
  323. package/esm5/decorators/pure.js +2 -2
  324. package/esm5/directives/active-zone/active-zone.directive.js +4 -4
  325. package/esm5/directives/auto-focus/autofocus.directive.js +2 -2
  326. package/esm5/directives/auto-focus/autofocus.options.js +2 -2
  327. package/esm5/directives/auto-focus/handlers/abstract.handler.js +2 -2
  328. package/esm5/directives/auto-focus/handlers/default.handler.js +2 -2
  329. package/esm5/directives/auto-focus/handlers/ios.handler.js +12 -12
  330. package/esm5/directives/autofilled/autofilled-style.component.js +2 -2
  331. package/esm5/directives/autofilled/autofilled.directive.js +6 -6
  332. package/esm5/directives/checked/checked.directive.js +7 -7
  333. package/esm5/directives/copy-processor/copy-processor.directive.js +4 -4
  334. package/esm5/directives/drag/drag.directive.js +5 -5
  335. package/esm5/directives/droppable/droppable.directive.js +6 -6
  336. package/esm5/directives/element/element.directive.js +3 -3
  337. package/esm5/directives/focus-trap/focus-trap.directive.js +6 -6
  338. package/esm5/directives/focus-visible/focus-visible.directive.js +3 -3
  339. package/esm5/directives/focusable/focusable.directive.js +4 -4
  340. package/esm5/directives/focused/focused.directive.js +3 -3
  341. package/esm5/directives/for/for.directive.js +2 -2
  342. package/esm5/directives/for-async/for-async.directive.js +2 -2
  343. package/esm5/directives/high-dpi/high-dpi.directive.js +2 -2
  344. package/esm5/directives/hovered/hovered.directive.js +5 -5
  345. package/esm5/directives/input-mode/input-mode.directive.js +11 -11
  346. package/esm5/directives/item/item.directive.js +2 -2
  347. package/esm5/directives/let/let.directive.js +2 -2
  348. package/esm5/directives/media/media.directive.js +13 -13
  349. package/esm5/directives/obscured/obscured.directive.js +2 -2
  350. package/esm5/directives/overscroll/overscroll.directive.js +12 -12
  351. package/esm5/directives/pan/pan.directive.js +3 -3
  352. package/esm5/directives/portal/portal.directive.js +2 -2
  353. package/esm5/directives/pressed/pressed.directive.js +2 -2
  354. package/esm5/directives/prevent-default/prevent-default.directive.js +4 -4
  355. package/esm5/directives/repeat-times/repeat-times.directive.js +2 -2
  356. package/esm5/directives/resize/resize.directive.js +3 -3
  357. package/esm5/directives/swipe/swipe.directive.js +3 -3
  358. package/esm5/directives/validator/validator.directive.js +2 -2
  359. package/esm5/directives/zoom/zoom.directive.js +4 -4
  360. package/esm5/enums/autocomplete.js +1 -1
  361. package/esm5/enums/input-mode.js +1 -1
  362. package/esm5/enums/input-type.js +1 -1
  363. package/esm5/enums/overscroll-mode.js +1 -1
  364. package/esm5/exceptions/computed-document.exception.js +2 -2
  365. package/esm5/exceptions/document-selection.exception.js +2 -2
  366. package/esm5/exceptions/no-host.exception.js +2 -2
  367. package/esm5/exceptions/owner-document.exception.js +2 -2
  368. package/esm5/exceptions/pure.exception.js +2 -2
  369. package/esm5/exceptions/table-sort-key.exception.js +2 -2
  370. package/esm5/exceptions/ts-parser.exception.js +2 -2
  371. package/esm5/exceptions/value-changes.exception.js +2 -2
  372. package/esm5/exceptions/value-present.exception.js +2 -2
  373. package/esm5/exceptions/xml-parsing.exception.js +2 -2
  374. package/esm5/observables/drag-and-drop-from.js +2 -2
  375. package/esm5/observables/focus-visible-observable.js +5 -5
  376. package/esm5/observables/mouse-drag-finish-from.js +2 -2
  377. package/esm5/observables/pressed-observable.js +2 -2
  378. package/esm5/pipes/filter/filter.pipe.js +2 -2
  379. package/esm5/pipes/mapper/mapper.pipe.js +2 -2
  380. package/esm5/services/directive-styles.service.js +5 -5
  381. package/esm5/services/hovered.service.js +5 -5
  382. package/esm5/services/id.service.js +3 -3
  383. package/esm5/services/obscured.service.js +2 -2
  384. package/esm5/services/pan.service.js +5 -5
  385. package/esm5/services/parents-scroll.service.js +2 -2
  386. package/esm5/services/scroll.service.js +5 -5
  387. package/esm5/services/static-request.service.js +3 -3
  388. package/esm5/services/swipe.service.js +2 -2
  389. package/esm5/services/zoom.service.js +5 -5
  390. package/esm5/tokens/active-element.js +10 -10
  391. package/esm5/tokens/alerts.js +2 -2
  392. package/esm5/tokens/default-renderer.js +2 -2
  393. package/esm5/tokens/dialogs.js +2 -2
  394. package/esm5/tokens/focusable-item-accessor.js +2 -2
  395. package/esm5/tokens/is-android.js +2 -2
  396. package/esm5/tokens/is-apple.js +2 -2
  397. package/esm5/tokens/is-chromium.js +2 -2
  398. package/esm5/tokens/is-cypress.js +2 -2
  399. package/esm5/tokens/is-firefox.js +3 -3
  400. package/esm5/tokens/is-ios.js +2 -2
  401. package/esm5/tokens/is-mobile.js +2 -2
  402. package/esm5/tokens/is-webkit.js +2 -2
  403. package/esm5/tokens/removed-element.js +2 -2
  404. package/esm5/tokens/sanitizer.js +2 -2
  405. package/esm5/tokens/swipe-options.js +2 -2
  406. package/esm5/tokens/take-only-trusted-events.js +2 -2
  407. package/esm5/tokens/touch-supported.js +3 -3
  408. package/esm5/tokens/window-height.js +3 -3
  409. package/esm5/tokens/zoom-options.js +2 -2
  410. package/esm5/utils/browser/is-edge-older-than.js +2 -2
  411. package/esm5/utils/browser/is-edge.js +2 -2
  412. package/esm5/utils/browser/is-firefox.js +2 -2
  413. package/esm5/utils/browser/is-ie.js +2 -2
  414. package/esm5/utils/browser/is-safari.js +2 -2
  415. package/esm5/utils/dom/custom-event.js +3 -3
  416. package/esm5/utils/dom/get-actual-target.js +2 -2
  417. package/esm5/utils/dom/get-clipboard-data-text.js +4 -4
  418. package/esm5/utils/dom/get-document-or-shadow-root.js +2 -2
  419. package/esm5/utils/dom/get-element-offset.js +2 -2
  420. package/esm5/utils/dom/index.js +2 -1
  421. package/esm5/utils/dom/is-element.js +5 -0
  422. package/esm5/utils/dom/is-form-field.js +4 -4
  423. package/esm5/utils/focus/is-native-keyboard-focusable.js +14 -14
  424. package/esm5/utils/focus/is-native-mouse-focusable.js +3 -3
  425. package/esm5/utils/focus/set-native-mouse-focused.js +5 -5
  426. package/esm5/utils/format/pad-start.js +2 -2
  427. package/esm5/utils/format/px.js +2 -2
  428. package/esm5/utils/math/round.js +5 -5
  429. package/esm5/utils/miscellaneous/ease-in-out-quad.js +2 -2
  430. package/esm5/utils/miscellaneous/get-swipe-direction.js +3 -3
  431. package/esm5/utils/miscellaneous/is-number.js +2 -2
  432. package/esm5/utils/os/is-apple-platform.js +2 -2
  433. package/esm5/utils/svg/svg-linear-gradient-processor.js +2 -2
  434. package/fesm2015/taiga-ui-cdk-abstract.js +12 -12
  435. package/fesm2015/taiga-ui-cdk-abstract.js.map +1 -1
  436. package/fesm2015/taiga-ui-cdk-classes.js +1 -1
  437. package/fesm2015/taiga-ui-cdk-classes.js.map +1 -1
  438. package/fesm2015/taiga-ui-cdk-coercion.js +1 -1
  439. package/fesm2015/taiga-ui-cdk-coercion.js.map +1 -1
  440. package/fesm2015/taiga-ui-cdk-components-alert-host.js +1 -1
  441. package/fesm2015/taiga-ui-cdk-components-alert-host.js.map +1 -1
  442. package/fesm2015/taiga-ui-cdk-components-dialog-host.js +4 -4
  443. package/fesm2015/taiga-ui-cdk-components-dialog-host.js.map +1 -1
  444. package/fesm2015/taiga-ui-cdk-components-dropdown-host.js +2 -2
  445. package/fesm2015/taiga-ui-cdk-components-dropdown-host.js.map +1 -1
  446. package/fesm2015/taiga-ui-cdk-components-portal-host.js +1 -1
  447. package/fesm2015/taiga-ui-cdk-components-portal-host.js.map +1 -1
  448. package/fesm2015/taiga-ui-cdk-constants.js +15 -15
  449. package/fesm2015/taiga-ui-cdk-constants.js.map +1 -1
  450. package/fesm2015/taiga-ui-cdk-date-time.js +33 -33
  451. package/fesm2015/taiga-ui-cdk-date-time.js.map +1 -1
  452. package/fesm2015/taiga-ui-cdk-decorators.js +1 -1
  453. package/fesm2015/taiga-ui-cdk-decorators.js.map +1 -1
  454. package/fesm2015/taiga-ui-cdk-directives-active-zone.js +3 -3
  455. package/fesm2015/taiga-ui-cdk-directives-active-zone.js.map +1 -1
  456. package/fesm2015/taiga-ui-cdk-directives-auto-focus.js +15 -15
  457. package/fesm2015/taiga-ui-cdk-directives-auto-focus.js.map +1 -1
  458. package/fesm2015/taiga-ui-cdk-directives-autofilled.js +6 -6
  459. package/fesm2015/taiga-ui-cdk-directives-autofilled.js.map +1 -1
  460. package/fesm2015/taiga-ui-cdk-directives-checked.js +6 -6
  461. package/fesm2015/taiga-ui-cdk-directives-checked.js.map +1 -1
  462. package/fesm2015/taiga-ui-cdk-directives-copy-processor.js +3 -3
  463. package/fesm2015/taiga-ui-cdk-directives-copy-processor.js.map +1 -1
  464. package/fesm2015/taiga-ui-cdk-directives-drag.js +4 -4
  465. package/fesm2015/taiga-ui-cdk-directives-drag.js.map +1 -1
  466. package/fesm2015/taiga-ui-cdk-directives-droppable.js +4 -4
  467. package/fesm2015/taiga-ui-cdk-directives-droppable.js.map +1 -1
  468. package/fesm2015/taiga-ui-cdk-directives-element.js +2 -2
  469. package/fesm2015/taiga-ui-cdk-directives-element.js.map +1 -1
  470. package/fesm2015/taiga-ui-cdk-directives-focus-trap.js +5 -5
  471. package/fesm2015/taiga-ui-cdk-directives-focus-trap.js.map +1 -1
  472. package/fesm2015/taiga-ui-cdk-directives-focus-visible.js +2 -2
  473. package/fesm2015/taiga-ui-cdk-directives-focus-visible.js.map +1 -1
  474. package/fesm2015/taiga-ui-cdk-directives-focusable.js +3 -3
  475. package/fesm2015/taiga-ui-cdk-directives-focusable.js.map +1 -1
  476. package/fesm2015/taiga-ui-cdk-directives-focused.js +2 -2
  477. package/fesm2015/taiga-ui-cdk-directives-focused.js.map +1 -1
  478. package/fesm2015/taiga-ui-cdk-directives-for-async.js +1 -1
  479. package/fesm2015/taiga-ui-cdk-directives-for-async.js.map +1 -1
  480. package/fesm2015/taiga-ui-cdk-directives-for.js +1 -1
  481. package/fesm2015/taiga-ui-cdk-directives-for.js.map +1 -1
  482. package/fesm2015/taiga-ui-cdk-directives-high-dpi.js +1 -1
  483. package/fesm2015/taiga-ui-cdk-directives-high-dpi.js.map +1 -1
  484. package/fesm2015/taiga-ui-cdk-directives-hovered.js +4 -4
  485. package/fesm2015/taiga-ui-cdk-directives-hovered.js.map +1 -1
  486. package/fesm2015/taiga-ui-cdk-directives-input-mode.js +10 -10
  487. package/fesm2015/taiga-ui-cdk-directives-input-mode.js.map +1 -1
  488. package/fesm2015/taiga-ui-cdk-directives-item.js +1 -1
  489. package/fesm2015/taiga-ui-cdk-directives-item.js.map +1 -1
  490. package/fesm2015/taiga-ui-cdk-directives-let.js +1 -1
  491. package/fesm2015/taiga-ui-cdk-directives-let.js.map +1 -1
  492. package/fesm2015/taiga-ui-cdk-directives-media.js +12 -12
  493. package/fesm2015/taiga-ui-cdk-directives-media.js.map +1 -1
  494. package/fesm2015/taiga-ui-cdk-directives-obscured.js +1 -1
  495. package/fesm2015/taiga-ui-cdk-directives-obscured.js.map +1 -1
  496. package/fesm2015/taiga-ui-cdk-directives-overscroll.js +11 -11
  497. package/fesm2015/taiga-ui-cdk-directives-overscroll.js.map +1 -1
  498. package/fesm2015/taiga-ui-cdk-directives-pan.js +2 -2
  499. package/fesm2015/taiga-ui-cdk-directives-pan.js.map +1 -1
  500. package/fesm2015/taiga-ui-cdk-directives-portal.js +1 -1
  501. package/fesm2015/taiga-ui-cdk-directives-portal.js.map +1 -1
  502. package/fesm2015/taiga-ui-cdk-directives-pressed.js +1 -1
  503. package/fesm2015/taiga-ui-cdk-directives-pressed.js.map +1 -1
  504. package/fesm2015/taiga-ui-cdk-directives-prevent-default.js +3 -3
  505. package/fesm2015/taiga-ui-cdk-directives-prevent-default.js.map +1 -1
  506. package/fesm2015/taiga-ui-cdk-directives-repeat-times.js +1 -1
  507. package/fesm2015/taiga-ui-cdk-directives-repeat-times.js.map +1 -1
  508. package/fesm2015/taiga-ui-cdk-directives-resize.js +2 -2
  509. package/fesm2015/taiga-ui-cdk-directives-resize.js.map +1 -1
  510. package/fesm2015/taiga-ui-cdk-directives-swipe.js +2 -2
  511. package/fesm2015/taiga-ui-cdk-directives-swipe.js.map +1 -1
  512. package/fesm2015/taiga-ui-cdk-directives-validator.js +1 -1
  513. package/fesm2015/taiga-ui-cdk-directives-validator.js.map +1 -1
  514. package/fesm2015/taiga-ui-cdk-directives-zoom.js +3 -3
  515. package/fesm2015/taiga-ui-cdk-directives-zoom.js.map +1 -1
  516. package/fesm2015/taiga-ui-cdk-enums.js.map +1 -1
  517. package/fesm2015/taiga-ui-cdk-exceptions.js +10 -10
  518. package/fesm2015/taiga-ui-cdk-exceptions.js.map +1 -1
  519. package/fesm2015/taiga-ui-cdk-observables.js +7 -7
  520. package/fesm2015/taiga-ui-cdk-observables.js.map +1 -1
  521. package/fesm2015/taiga-ui-cdk-pipes-filter.js +1 -1
  522. package/fesm2015/taiga-ui-cdk-pipes-filter.js.map +1 -1
  523. package/fesm2015/taiga-ui-cdk-pipes-mapper.js +1 -1
  524. package/fesm2015/taiga-ui-cdk-pipes-mapper.js.map +1 -1
  525. package/fesm2015/taiga-ui-cdk-services.js +24 -24
  526. package/fesm2015/taiga-ui-cdk-services.js.map +1 -1
  527. package/fesm2015/taiga-ui-cdk-tokens.js +30 -30
  528. package/fesm2015/taiga-ui-cdk-tokens.js.map +1 -1
  529. package/fesm2015/taiga-ui-cdk-utils-browser.js +5 -5
  530. package/fesm2015/taiga-ui-cdk-utils-browser.js.map +1 -1
  531. package/fesm2015/taiga-ui-cdk-utils-dom.js +17 -12
  532. package/fesm2015/taiga-ui-cdk-utils-dom.js.map +1 -1
  533. package/fesm2015/taiga-ui-cdk-utils-focus.js +19 -19
  534. package/fesm2015/taiga-ui-cdk-utils-focus.js.map +1 -1
  535. package/fesm2015/taiga-ui-cdk-utils-format.js +2 -2
  536. package/fesm2015/taiga-ui-cdk-utils-format.js.map +1 -1
  537. package/fesm2015/taiga-ui-cdk-utils-math.js +4 -4
  538. package/fesm2015/taiga-ui-cdk-utils-math.js.map +1 -1
  539. package/fesm2015/taiga-ui-cdk-utils-miscellaneous.js +4 -4
  540. package/fesm2015/taiga-ui-cdk-utils-miscellaneous.js.map +1 -1
  541. package/fesm2015/taiga-ui-cdk-utils-os.js +1 -1
  542. package/fesm2015/taiga-ui-cdk-utils-os.js.map +1 -1
  543. package/fesm2015/taiga-ui-cdk-utils-svg.js +1 -1
  544. package/fesm2015/taiga-ui-cdk-utils-svg.js.map +1 -1
  545. package/fesm5/taiga-ui-cdk-abstract.js +12 -12
  546. package/fesm5/taiga-ui-cdk-abstract.js.map +1 -1
  547. package/fesm5/taiga-ui-cdk-classes.js +1 -1
  548. package/fesm5/taiga-ui-cdk-classes.js.map +1 -1
  549. package/fesm5/taiga-ui-cdk-coercion.js +1 -1
  550. package/fesm5/taiga-ui-cdk-coercion.js.map +1 -1
  551. package/fesm5/taiga-ui-cdk-components-alert-host.js +1 -1
  552. package/fesm5/taiga-ui-cdk-components-alert-host.js.map +1 -1
  553. package/fesm5/taiga-ui-cdk-components-dialog-host.js +4 -4
  554. package/fesm5/taiga-ui-cdk-components-dialog-host.js.map +1 -1
  555. package/fesm5/taiga-ui-cdk-components-dropdown-host.js +2 -2
  556. package/fesm5/taiga-ui-cdk-components-dropdown-host.js.map +1 -1
  557. package/fesm5/taiga-ui-cdk-components-portal-host.js +1 -1
  558. package/fesm5/taiga-ui-cdk-components-portal-host.js.map +1 -1
  559. package/fesm5/taiga-ui-cdk-constants.js +15 -15
  560. package/fesm5/taiga-ui-cdk-constants.js.map +1 -1
  561. package/fesm5/taiga-ui-cdk-date-time.js +35 -35
  562. package/fesm5/taiga-ui-cdk-date-time.js.map +1 -1
  563. package/fesm5/taiga-ui-cdk-decorators.js +1 -1
  564. package/fesm5/taiga-ui-cdk-decorators.js.map +1 -1
  565. package/fesm5/taiga-ui-cdk-directives-active-zone.js +3 -3
  566. package/fesm5/taiga-ui-cdk-directives-active-zone.js.map +1 -1
  567. package/fesm5/taiga-ui-cdk-directives-auto-focus.js +15 -15
  568. package/fesm5/taiga-ui-cdk-directives-auto-focus.js.map +1 -1
  569. package/fesm5/taiga-ui-cdk-directives-autofilled.js +6 -6
  570. package/fesm5/taiga-ui-cdk-directives-autofilled.js.map +1 -1
  571. package/fesm5/taiga-ui-cdk-directives-checked.js +6 -6
  572. package/fesm5/taiga-ui-cdk-directives-checked.js.map +1 -1
  573. package/fesm5/taiga-ui-cdk-directives-copy-processor.js +3 -3
  574. package/fesm5/taiga-ui-cdk-directives-copy-processor.js.map +1 -1
  575. package/fesm5/taiga-ui-cdk-directives-drag.js +4 -4
  576. package/fesm5/taiga-ui-cdk-directives-drag.js.map +1 -1
  577. package/fesm5/taiga-ui-cdk-directives-droppable.js +5 -5
  578. package/fesm5/taiga-ui-cdk-directives-droppable.js.map +1 -1
  579. package/fesm5/taiga-ui-cdk-directives-element.js +2 -2
  580. package/fesm5/taiga-ui-cdk-directives-element.js.map +1 -1
  581. package/fesm5/taiga-ui-cdk-directives-focus-trap.js +5 -5
  582. package/fesm5/taiga-ui-cdk-directives-focus-trap.js.map +1 -1
  583. package/fesm5/taiga-ui-cdk-directives-focus-visible.js +2 -2
  584. package/fesm5/taiga-ui-cdk-directives-focus-visible.js.map +1 -1
  585. package/fesm5/taiga-ui-cdk-directives-focusable.js +3 -3
  586. package/fesm5/taiga-ui-cdk-directives-focusable.js.map +1 -1
  587. package/fesm5/taiga-ui-cdk-directives-focused.js +2 -2
  588. package/fesm5/taiga-ui-cdk-directives-focused.js.map +1 -1
  589. package/fesm5/taiga-ui-cdk-directives-for-async.js +1 -1
  590. package/fesm5/taiga-ui-cdk-directives-for-async.js.map +1 -1
  591. package/fesm5/taiga-ui-cdk-directives-for.js +1 -1
  592. package/fesm5/taiga-ui-cdk-directives-for.js.map +1 -1
  593. package/fesm5/taiga-ui-cdk-directives-high-dpi.js +1 -1
  594. package/fesm5/taiga-ui-cdk-directives-high-dpi.js.map +1 -1
  595. package/fesm5/taiga-ui-cdk-directives-hovered.js +4 -4
  596. package/fesm5/taiga-ui-cdk-directives-hovered.js.map +1 -1
  597. package/fesm5/taiga-ui-cdk-directives-input-mode.js +10 -10
  598. package/fesm5/taiga-ui-cdk-directives-input-mode.js.map +1 -1
  599. package/fesm5/taiga-ui-cdk-directives-item.js +1 -1
  600. package/fesm5/taiga-ui-cdk-directives-item.js.map +1 -1
  601. package/fesm5/taiga-ui-cdk-directives-let.js +1 -1
  602. package/fesm5/taiga-ui-cdk-directives-let.js.map +1 -1
  603. package/fesm5/taiga-ui-cdk-directives-media.js +12 -12
  604. package/fesm5/taiga-ui-cdk-directives-media.js.map +1 -1
  605. package/fesm5/taiga-ui-cdk-directives-obscured.js +1 -1
  606. package/fesm5/taiga-ui-cdk-directives-obscured.js.map +1 -1
  607. package/fesm5/taiga-ui-cdk-directives-overscroll.js +11 -11
  608. package/fesm5/taiga-ui-cdk-directives-overscroll.js.map +1 -1
  609. package/fesm5/taiga-ui-cdk-directives-pan.js +2 -2
  610. package/fesm5/taiga-ui-cdk-directives-pan.js.map +1 -1
  611. package/fesm5/taiga-ui-cdk-directives-portal.js +1 -1
  612. package/fesm5/taiga-ui-cdk-directives-portal.js.map +1 -1
  613. package/fesm5/taiga-ui-cdk-directives-pressed.js +1 -1
  614. package/fesm5/taiga-ui-cdk-directives-pressed.js.map +1 -1
  615. package/fesm5/taiga-ui-cdk-directives-prevent-default.js +3 -3
  616. package/fesm5/taiga-ui-cdk-directives-prevent-default.js.map +1 -1
  617. package/fesm5/taiga-ui-cdk-directives-repeat-times.js +1 -1
  618. package/fesm5/taiga-ui-cdk-directives-repeat-times.js.map +1 -1
  619. package/fesm5/taiga-ui-cdk-directives-resize.js +2 -2
  620. package/fesm5/taiga-ui-cdk-directives-resize.js.map +1 -1
  621. package/fesm5/taiga-ui-cdk-directives-swipe.js +2 -2
  622. package/fesm5/taiga-ui-cdk-directives-swipe.js.map +1 -1
  623. package/fesm5/taiga-ui-cdk-directives-validator.js +1 -1
  624. package/fesm5/taiga-ui-cdk-directives-validator.js.map +1 -1
  625. package/fesm5/taiga-ui-cdk-directives-zoom.js +3 -3
  626. package/fesm5/taiga-ui-cdk-directives-zoom.js.map +1 -1
  627. package/fesm5/taiga-ui-cdk-enums.js.map +1 -1
  628. package/fesm5/taiga-ui-cdk-exceptions.js +10 -10
  629. package/fesm5/taiga-ui-cdk-exceptions.js.map +1 -1
  630. package/fesm5/taiga-ui-cdk-observables.js +7 -7
  631. package/fesm5/taiga-ui-cdk-observables.js.map +1 -1
  632. package/fesm5/taiga-ui-cdk-pipes-filter.js +1 -1
  633. package/fesm5/taiga-ui-cdk-pipes-filter.js.map +1 -1
  634. package/fesm5/taiga-ui-cdk-pipes-mapper.js +1 -1
  635. package/fesm5/taiga-ui-cdk-pipes-mapper.js.map +1 -1
  636. package/fesm5/taiga-ui-cdk-services.js +27 -27
  637. package/fesm5/taiga-ui-cdk-services.js.map +1 -1
  638. package/fesm5/taiga-ui-cdk-tokens.js +31 -31
  639. package/fesm5/taiga-ui-cdk-tokens.js.map +1 -1
  640. package/fesm5/taiga-ui-cdk-utils-browser.js +5 -5
  641. package/fesm5/taiga-ui-cdk-utils-browser.js.map +1 -1
  642. package/fesm5/taiga-ui-cdk-utils-dom.js +17 -12
  643. package/fesm5/taiga-ui-cdk-utils-dom.js.map +1 -1
  644. package/fesm5/taiga-ui-cdk-utils-focus.js +19 -19
  645. package/fesm5/taiga-ui-cdk-utils-focus.js.map +1 -1
  646. package/fesm5/taiga-ui-cdk-utils-format.js +2 -2
  647. package/fesm5/taiga-ui-cdk-utils-format.js.map +1 -1
  648. package/fesm5/taiga-ui-cdk-utils-math.js +4 -4
  649. package/fesm5/taiga-ui-cdk-utils-math.js.map +1 -1
  650. package/fesm5/taiga-ui-cdk-utils-miscellaneous.js +4 -4
  651. package/fesm5/taiga-ui-cdk-utils-miscellaneous.js.map +1 -1
  652. package/fesm5/taiga-ui-cdk-utils-os.js +1 -1
  653. package/fesm5/taiga-ui-cdk-utils-os.js.map +1 -1
  654. package/fesm5/taiga-ui-cdk-utils-svg.js +1 -1
  655. package/fesm5/taiga-ui-cdk-utils-svg.js.map +1 -1
  656. package/package.json +1 -1
  657. package/utils/dom/index.d.ts +1 -0
  658. package/utils/dom/is-element.d.ts +1 -0
  659. package/utils/dom/taiga-ui-cdk-utils-dom.metadata.json +1 -1
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * {@link https://unicode-table.com/en/00A0/ Non-breaking space}.
3
3
  */
4
- export var CHAR_NO_BREAK_SPACE = '\u00A0';
4
+ export var CHAR_NO_BREAK_SPACE = "\u00A0";
5
5
  /**
6
6
  * {@link https://unicode-table.com/en/2013/ EN dash}
7
7
  * is used to indicate a range of numbers or a span of time.
@@ -9,7 +9,7 @@ export var CHAR_NO_BREAK_SPACE = '\u00A0';
9
9
  * ___
10
10
  * Don't confuse with {@link CHAR_EM_DASH} or {@link CHAR_HYPHEN}!
11
11
  */
12
- export var CHAR_EN_DASH = '\u2013';
12
+ export var CHAR_EN_DASH = "\u2013";
13
13
  /**
14
14
  * {@link https://unicode-table.com/en/2014/ EM dash}
15
15
  * is used to mark a break in a sentence.
@@ -17,7 +17,7 @@ export var CHAR_EN_DASH = '\u2013';
17
17
  * ___
18
18
  * Don't confuse with {@link CHAR_EN_DASH} or {@link CHAR_HYPHEN}!
19
19
  */
20
- export var CHAR_EM_DASH = '\u2014';
20
+ export var CHAR_EM_DASH = "\u2014";
21
21
  /**
22
22
  * {@link https://unicode-table.com/en/002D/ Hyphen (minus sign)}
23
23
  * is used to combine words.
@@ -25,32 +25,32 @@ export var CHAR_EM_DASH = '\u2014';
25
25
  * ___
26
26
  * Don't confuse with {@link CHAR_EN_DASH} or {@link CHAR_EM_DASH}!
27
27
  */
28
- export var CHAR_HYPHEN = '\u002D';
28
+ export var CHAR_HYPHEN = "-";
29
29
  /**
30
30
  * {@link https://unicode-table.com/en/2212/ Minus}
31
31
  * is used as math operator symbol or before negative digits.
32
32
  * ---
33
33
  * Can be used as `−`. Don't confuse with {@link CHAR_HYPHEN}
34
34
  */
35
- export var CHAR_MINUS = '\u2212';
35
+ export var CHAR_MINUS = "\u2212";
36
36
  /**
37
37
  * {@link https://unicode-table.com/en/002B/ Plus}
38
38
  */
39
- export var CHAR_PLUS = '\u002B';
39
+ export var CHAR_PLUS = "+";
40
40
  /**
41
41
  * {@link https://unicode-table.com/en/2022/ Bullet}.
42
42
  */
43
- export var CHAR_BULLET = '\u2022';
43
+ export var CHAR_BULLET = "\u2022";
44
44
  /**
45
45
  * {@link https://unicode-table.com/en/2026/ Suspension points}.
46
46
  */
47
- export var CHAR_ELLIPSIS = '\u2026';
47
+ export var CHAR_ELLIPSIS = "\u2026";
48
48
  /**
49
49
  * {@link https://unicode-table.com/en/00A4/ Suspension points}.
50
50
  */
51
- export var CHAR_CURRENCY_SIGN = '\u00A4';
51
+ export var CHAR_CURRENCY_SIGN = "\u00A4";
52
52
  /**
53
53
  * {@link https://unicode-table.com/en/200b/ Suspension points}.
54
54
  */
55
- export var CHAR_ZERO_WIDTH_SPACE = '\u200B';
56
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5pY29kZS1jaGFycy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0B0YWlnYS11aS9jZGsvY29uc3RhbnRzLyIsInNvdXJjZXMiOlsidW5pY29kZS1jaGFycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILE1BQU0sQ0FBQyxJQUFNLG1CQUFtQixHQUFHLFFBQVEsQ0FBQztBQUU1Qzs7Ozs7O0dBTUc7QUFDSCxNQUFNLENBQUMsSUFBTSxZQUFZLEdBQUcsUUFBUSxDQUFDO0FBRXJDOzs7Ozs7R0FNRztBQUNILE1BQU0sQ0FBQyxJQUFNLFlBQVksR0FBRyxRQUFRLENBQUM7QUFFckM7Ozs7OztHQU1HO0FBQ0gsTUFBTSxDQUFDLElBQU0sV0FBVyxHQUFHLFFBQVEsQ0FBQztBQUVwQzs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBQyxJQUFNLFVBQVUsR0FBRyxRQUFRLENBQUM7QUFFbkM7O0dBRUc7QUFDSCxNQUFNLENBQUMsSUFBTSxTQUFTLEdBQUcsUUFBUSxDQUFDO0FBRWxDOztHQUVHO0FBQ0gsTUFBTSxDQUFDLElBQU0sV0FBVyxHQUFHLFFBQVEsQ0FBQztBQUVwQzs7R0FFRztBQUNILE1BQU0sQ0FBQyxJQUFNLGFBQWEsR0FBRyxRQUFRLENBQUM7QUFFdEM7O0dBRUc7QUFDSCxNQUFNLENBQUMsSUFBTSxrQkFBa0IsR0FBRyxRQUFRLENBQUM7QUFFM0M7O0dBRUc7QUFDSCxNQUFNLENBQUMsSUFBTSxxQkFBcUIsR0FBRyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIHtAbGluayBodHRwczovL3VuaWNvZGUtdGFibGUuY29tL2VuLzAwQTAvIE5vbi1icmVha2luZyBzcGFjZX0uXG4gKi9cbmV4cG9ydCBjb25zdCBDSEFSX05PX0JSRUFLX1NQQUNFID0gJ1xcdTAwQTAnO1xuXG4vKipcbiAqIHtAbGluayBodHRwczovL3VuaWNvZGUtdGFibGUuY29tL2VuLzIwMTMvIEVOIGRhc2h9XG4gKiBpcyB1c2VkIHRvIGluZGljYXRlIGEgcmFuZ2Ugb2YgbnVtYmVycyBvciBhIHNwYW4gb2YgdGltZS5cbiAqIEBleGFtcGxlIDIwMDbigJMyMDIyXG4gKiBfX19cbiAqIERvbid0IGNvbmZ1c2Ugd2l0aCB7QGxpbmsgQ0hBUl9FTV9EQVNIfSBvciB7QGxpbmsgQ0hBUl9IWVBIRU59IVxuICovXG5leHBvcnQgY29uc3QgQ0hBUl9FTl9EQVNIID0gJ1xcdTIwMTMnO1xuXG4vKipcbiAqIHtAbGluayBodHRwczovL3VuaWNvZGUtdGFibGUuY29tL2VuLzIwMTQvIEVNIGRhc2h9XG4gKiBpcyB1c2VkIHRvIG1hcmsgYSBicmVhayBpbiBhIHNlbnRlbmNlLlxuICogQGV4YW1wbGUgVGFpZ2EgVUkg4oCUIHBvd2VyZnVsIHNldCBvZiBvcGVuIHNvdXJjZSBjb21wb25lbnRzIGZvciBBbmd1bGFyXG4gKiBfX19cbiAqIERvbid0IGNvbmZ1c2Ugd2l0aCB7QGxpbmsgQ0hBUl9FTl9EQVNIfSBvciB7QGxpbmsgQ0hBUl9IWVBIRU59IVxuICovXG5leHBvcnQgY29uc3QgQ0hBUl9FTV9EQVNIID0gJ1xcdTIwMTQnO1xuXG4vKipcbiAqIHtAbGluayBodHRwczovL3VuaWNvZGUtdGFibGUuY29tL2VuLzAwMkQvIEh5cGhlbiAobWludXMgc2lnbil9XG4gKiBpcyB1c2VkIHRvIGNvbWJpbmUgd29yZHMuXG4gKiBAZXhhbXBsZSB3ZWxsLWJlaGF2ZWRcbiAqIF9fX1xuICogRG9uJ3QgY29uZnVzZSB3aXRoIHtAbGluayBDSEFSX0VOX0RBU0h9IG9yIHtAbGluayBDSEFSX0VNX0RBU0h9IVxuICovXG5leHBvcnQgY29uc3QgQ0hBUl9IWVBIRU4gPSAnXFx1MDAyRCc7XG5cbi8qKlxuICoge0BsaW5rIGh0dHBzOi8vdW5pY29kZS10YWJsZS5jb20vZW4vMjIxMi8gTWludXN9XG4gKiBpcyB1c2VkIGFzIG1hdGggb3BlcmF0b3Igc3ltYm9sIG9yIGJlZm9yZSBuZWdhdGl2ZSBkaWdpdHMuXG4gKiAtLS1cbiAqIENhbiBiZSB1c2VkIGFzIGAmbWludXM7YC4gRG9uJ3QgY29uZnVzZSB3aXRoIHtAbGluayBDSEFSX0hZUEhFTn1cbiAqL1xuZXhwb3J0IGNvbnN0IENIQVJfTUlOVVMgPSAnXFx1MjIxMic7XG5cbi8qKlxuICoge0BsaW5rIGh0dHBzOi8vdW5pY29kZS10YWJsZS5jb20vZW4vMDAyQi8gUGx1c31cbiAqL1xuZXhwb3J0IGNvbnN0IENIQVJfUExVUyA9ICdcXHUwMDJCJztcblxuLyoqXG4gKiB7QGxpbmsgaHR0cHM6Ly91bmljb2RlLXRhYmxlLmNvbS9lbi8yMDIyLyBCdWxsZXR9LlxuICovXG5leHBvcnQgY29uc3QgQ0hBUl9CVUxMRVQgPSAnXFx1MjAyMic7XG5cbi8qKlxuICoge0BsaW5rIGh0dHBzOi8vdW5pY29kZS10YWJsZS5jb20vZW4vMjAyNi8gU3VzcGVuc2lvbiBwb2ludHN9LlxuICovXG5leHBvcnQgY29uc3QgQ0hBUl9FTExJUFNJUyA9ICdcXHUyMDI2JztcblxuLyoqXG4gKiB7QGxpbmsgaHR0cHM6Ly91bmljb2RlLXRhYmxlLmNvbS9lbi8wMEE0LyBTdXNwZW5zaW9uIHBvaW50c30uXG4gKi9cbmV4cG9ydCBjb25zdCBDSEFSX0NVUlJFTkNZX1NJR04gPSAnXFx1MDBBNCc7XG5cbi8qKlxuICoge0BsaW5rIGh0dHBzOi8vdW5pY29kZS10YWJsZS5jb20vZW4vMjAwYi8gU3VzcGVuc2lvbiBwb2ludHN9LlxuICovXG5leHBvcnQgY29uc3QgQ0hBUl9aRVJPX1dJRFRIX1NQQUNFID0gJ1xcdTIwMEInO1xuIl19
55
+ export var CHAR_ZERO_WIDTH_SPACE = "\u200B";
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5pY29kZS1jaGFycy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0B0YWlnYS11aS9jZGsvY29uc3RhbnRzLyIsInNvdXJjZXMiOlsidW5pY29kZS1jaGFycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILE1BQU0sQ0FBQyxJQUFNLG1CQUFtQixHQUFHLFFBQVEsQ0FBQztBQUU1Qzs7Ozs7O0dBTUc7QUFDSCxNQUFNLENBQUMsSUFBTSxZQUFZLEdBQUcsUUFBUSxDQUFDO0FBRXJDOzs7Ozs7R0FNRztBQUNILE1BQU0sQ0FBQyxJQUFNLFlBQVksR0FBRyxRQUFRLENBQUM7QUFFckM7Ozs7OztHQU1HO0FBQ0gsTUFBTSxDQUFDLElBQU0sV0FBVyxHQUFHLEdBQVEsQ0FBQztBQUVwQzs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBQyxJQUFNLFVBQVUsR0FBRyxRQUFRLENBQUM7QUFFbkM7O0dBRUc7QUFDSCxNQUFNLENBQUMsSUFBTSxTQUFTLEdBQUcsR0FBUSxDQUFDO0FBRWxDOztHQUVHO0FBQ0gsTUFBTSxDQUFDLElBQU0sV0FBVyxHQUFHLFFBQVEsQ0FBQztBQUVwQzs7R0FFRztBQUNILE1BQU0sQ0FBQyxJQUFNLGFBQWEsR0FBRyxRQUFRLENBQUM7QUFFdEM7O0dBRUc7QUFDSCxNQUFNLENBQUMsSUFBTSxrQkFBa0IsR0FBRyxRQUFRLENBQUM7QUFFM0M7O0dBRUc7QUFDSCxNQUFNLENBQUMsSUFBTSxxQkFBcUIsR0FBRyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIHtAbGluayBodHRwczovL3VuaWNvZGUtdGFibGUuY29tL2VuLzAwQTAvIE5vbi1icmVha2luZyBzcGFjZX0uXG4gKi9cbmV4cG9ydCBjb25zdCBDSEFSX05PX0JSRUFLX1NQQUNFID0gYFxcdTAwQTBgO1xuXG4vKipcbiAqIHtAbGluayBodHRwczovL3VuaWNvZGUtdGFibGUuY29tL2VuLzIwMTMvIEVOIGRhc2h9XG4gKiBpcyB1c2VkIHRvIGluZGljYXRlIGEgcmFuZ2Ugb2YgbnVtYmVycyBvciBhIHNwYW4gb2YgdGltZS5cbiAqIEBleGFtcGxlIDIwMDbigJMyMDIyXG4gKiBfX19cbiAqIERvbid0IGNvbmZ1c2Ugd2l0aCB7QGxpbmsgQ0hBUl9FTV9EQVNIfSBvciB7QGxpbmsgQ0hBUl9IWVBIRU59IVxuICovXG5leHBvcnQgY29uc3QgQ0hBUl9FTl9EQVNIID0gYFxcdTIwMTNgO1xuXG4vKipcbiAqIHtAbGluayBodHRwczovL3VuaWNvZGUtdGFibGUuY29tL2VuLzIwMTQvIEVNIGRhc2h9XG4gKiBpcyB1c2VkIHRvIG1hcmsgYSBicmVhayBpbiBhIHNlbnRlbmNlLlxuICogQGV4YW1wbGUgVGFpZ2EgVUkg4oCUIHBvd2VyZnVsIHNldCBvZiBvcGVuIHNvdXJjZSBjb21wb25lbnRzIGZvciBBbmd1bGFyXG4gKiBfX19cbiAqIERvbid0IGNvbmZ1c2Ugd2l0aCB7QGxpbmsgQ0hBUl9FTl9EQVNIfSBvciB7QGxpbmsgQ0hBUl9IWVBIRU59IVxuICovXG5leHBvcnQgY29uc3QgQ0hBUl9FTV9EQVNIID0gYFxcdTIwMTRgO1xuXG4vKipcbiAqIHtAbGluayBodHRwczovL3VuaWNvZGUtdGFibGUuY29tL2VuLzAwMkQvIEh5cGhlbiAobWludXMgc2lnbil9XG4gKiBpcyB1c2VkIHRvIGNvbWJpbmUgd29yZHMuXG4gKiBAZXhhbXBsZSB3ZWxsLWJlaGF2ZWRcbiAqIF9fX1xuICogRG9uJ3QgY29uZnVzZSB3aXRoIHtAbGluayBDSEFSX0VOX0RBU0h9IG9yIHtAbGluayBDSEFSX0VNX0RBU0h9IVxuICovXG5leHBvcnQgY29uc3QgQ0hBUl9IWVBIRU4gPSBgXFx1MDAyRGA7XG5cbi8qKlxuICoge0BsaW5rIGh0dHBzOi8vdW5pY29kZS10YWJsZS5jb20vZW4vMjIxMi8gTWludXN9XG4gKiBpcyB1c2VkIGFzIG1hdGggb3BlcmF0b3Igc3ltYm9sIG9yIGJlZm9yZSBuZWdhdGl2ZSBkaWdpdHMuXG4gKiAtLS1cbiAqIENhbiBiZSB1c2VkIGFzIGAmbWludXM7YC4gRG9uJ3QgY29uZnVzZSB3aXRoIHtAbGluayBDSEFSX0hZUEhFTn1cbiAqL1xuZXhwb3J0IGNvbnN0IENIQVJfTUlOVVMgPSBgXFx1MjIxMmA7XG5cbi8qKlxuICoge0BsaW5rIGh0dHBzOi8vdW5pY29kZS10YWJsZS5jb20vZW4vMDAyQi8gUGx1c31cbiAqL1xuZXhwb3J0IGNvbnN0IENIQVJfUExVUyA9IGBcXHUwMDJCYDtcblxuLyoqXG4gKiB7QGxpbmsgaHR0cHM6Ly91bmljb2RlLXRhYmxlLmNvbS9lbi8yMDIyLyBCdWxsZXR9LlxuICovXG5leHBvcnQgY29uc3QgQ0hBUl9CVUxMRVQgPSBgXFx1MjAyMmA7XG5cbi8qKlxuICoge0BsaW5rIGh0dHBzOi8vdW5pY29kZS10YWJsZS5jb20vZW4vMjAyNi8gU3VzcGVuc2lvbiBwb2ludHN9LlxuICovXG5leHBvcnQgY29uc3QgQ0hBUl9FTExJUFNJUyA9IGBcXHUyMDI2YDtcblxuLyoqXG4gKiB7QGxpbmsgaHR0cHM6Ly91bmljb2RlLXRhYmxlLmNvbS9lbi8wMEE0LyBTdXNwZW5zaW9uIHBvaW50c30uXG4gKi9cbmV4cG9ydCBjb25zdCBDSEFSX0NVUlJFTkNZX1NJR04gPSBgXFx1MDBBNGA7XG5cbi8qKlxuICoge0BsaW5rIGh0dHBzOi8vdW5pY29kZS10YWJsZS5jb20vZW4vMjAwYi8gU3VzcGVuc2lvbiBwb2ludHN9LlxuICovXG5leHBvcnQgY29uc3QgQ0hBUl9aRVJPX1dJRFRIX1NQQUNFID0gYFxcdTIwMEJgO1xuIl19
@@ -3,13 +3,13 @@ import { RANGE_SEPARATOR_CHAR } from './date-time';
3
3
  /**
4
4
  * @deprecated dont use it. See {@link TUI_DATE_FORMAT}
5
5
  */
6
- export var TUI_DATE_FILLER = new InjectionToken('date filler for Taiga UI', {
6
+ export var TUI_DATE_FILLER = new InjectionToken("date filler for Taiga UI", {
7
7
  factory: function () { return "dd.mm.yyyy"; },
8
8
  });
9
9
  /**
10
10
  * @deprecated dont use it
11
11
  */
12
- export var TUI_DATE_RANGE_FILLER = new InjectionToken('date range filler for Taiga UI', {
12
+ export var TUI_DATE_RANGE_FILLER = new InjectionToken("date range filler for Taiga UI", {
13
13
  factory: function () {
14
14
  var dateFiller = inject(TUI_DATE_FILLER);
15
15
  return "" + dateFiller + RANGE_SEPARATOR_CHAR + dateFiller;
@@ -28,4 +28,4 @@ export var DATE_FILLER_LENGTH = 10;
28
28
  * Used in {@link TuiInputDateRangeComponent}
29
29
  */
30
30
  export var DATE_RANGE_FILLER_LENGTH = 2 * DATE_FILLER_LENGTH + RANGE_SEPARATOR_CHAR.length;
31
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1maWxsZXJzLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHRhaWdhLXVpL2Nkay9kYXRlLXRpbWUvIiwic291cmNlcyI6WyJkYXRlLWZpbGxlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLE1BQU0sRUFBRSxjQUFjLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFckQsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sYUFBYSxDQUFDO0FBRWpEOztHQUVHO0FBQ0gsTUFBTSxDQUFDLElBQU0sZUFBZSxHQUFHLElBQUksY0FBYyxDQUFTLDBCQUEwQixFQUFFO0lBQ2xGLE9BQU8sRUFBRSxjQUFNLE9BQUEsWUFBWSxFQUFaLENBQVk7Q0FDOUIsQ0FBQyxDQUFDO0FBRUg7O0dBRUc7QUFDSCxNQUFNLENBQUMsSUFBTSxxQkFBcUIsR0FBRyxJQUFJLGNBQWMsQ0FDbkQsZ0NBQWdDLEVBQ2hDO0lBQ0ksT0FBTyxFQUFFO1FBQ0wsSUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBRTNDLE9BQU8sS0FBRyxVQUFVLEdBQUcsb0JBQW9CLEdBQUcsVUFBWSxDQUFDO0lBQy9ELENBQUM7Q0FDSixDQUNKLENBQUM7QUFFRjs7Ozs7O0dBTUc7QUFDSCxNQUFNLENBQUMsSUFBTSxrQkFBa0IsR0FBRyxFQUFFLENBQUM7QUFDckM7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLElBQU0sd0JBQXdCLEdBQ2pDLENBQUMsR0FBRyxrQkFBa0IsR0FBRyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2luamVjdCwgSW5qZWN0aW9uVG9rZW59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge1JBTkdFX1NFUEFSQVRPUl9DSEFSfSBmcm9tICcuL2RhdGUtdGltZSc7XG5cbi8qKlxuICogQGRlcHJlY2F0ZWQgZG9udCB1c2UgaXQuIFNlZSB7QGxpbmsgVFVJX0RBVEVfRk9STUFUfVxuICovXG5leHBvcnQgY29uc3QgVFVJX0RBVEVfRklMTEVSID0gbmV3IEluamVjdGlvblRva2VuPHN0cmluZz4oJ2RhdGUgZmlsbGVyIGZvciBUYWlnYSBVSScsIHtcbiAgICBmYWN0b3J5OiAoKSA9PiBgZGQubW0ueXl5eWAsXG59KTtcblxuLyoqXG4gKiBAZGVwcmVjYXRlZCBkb250IHVzZSBpdFxuICovXG5leHBvcnQgY29uc3QgVFVJX0RBVEVfUkFOR0VfRklMTEVSID0gbmV3IEluamVjdGlvblRva2VuPHN0cmluZz4oXG4gICAgJ2RhdGUgcmFuZ2UgZmlsbGVyIGZvciBUYWlnYSBVSScsXG4gICAge1xuICAgICAgICBmYWN0b3J5OiAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBkYXRlRmlsbGVyID0gaW5qZWN0KFRVSV9EQVRFX0ZJTExFUik7XG5cbiAgICAgICAgICAgIHJldHVybiBgJHtkYXRlRmlsbGVyfSR7UkFOR0VfU0VQQVJBVE9SX0NIQVJ9JHtkYXRlRmlsbGVyfWA7XG4gICAgICAgIH0sXG4gICAgfSxcbik7XG5cbi8qKlxuICogQGludGVybmFsICdkZC5tbS55eXl5Jy5sZW5ndGhcbiAqIFVzZWQgaW46XG4gKiAtIHtAbGluayBUdWlJbnB1dERhdGVDb21wb25lbnR9XG4gKiAtIHtAbGluayBUdWlJbnB1dERhdGVSYW5nZUNvbXBvbmVudH1cbiAqIC0ge0BsaW5rIFR1aUlucHV0RGF0ZVRpbWVDb21wb25lbnR9XG4gKi9cbmV4cG9ydCBjb25zdCBEQVRFX0ZJTExFUl9MRU5HVEggPSAxMDtcbi8qKlxuICogQGludGVybmFsXG4gKiBVc2VkIGluIHtAbGluayBUdWlJbnB1dERhdGVSYW5nZUNvbXBvbmVudH1cbiAqL1xuZXhwb3J0IGNvbnN0IERBVEVfUkFOR0VfRklMTEVSX0xFTkdUSCA9XG4gICAgMiAqIERBVEVfRklMTEVSX0xFTkdUSCArIFJBTkdFX1NFUEFSQVRPUl9DSEFSLmxlbmd0aDtcbiJdfQ==
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1maWxsZXJzLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHRhaWdhLXVpL2Nkay9kYXRlLXRpbWUvIiwic291cmNlcyI6WyJkYXRlLWZpbGxlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLE1BQU0sRUFBRSxjQUFjLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFckQsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sYUFBYSxDQUFDO0FBRWpEOztHQUVHO0FBQ0gsTUFBTSxDQUFDLElBQU0sZUFBZSxHQUFHLElBQUksY0FBYyxDQUFTLDBCQUEwQixFQUFFO0lBQ2xGLE9BQU8sRUFBRSxjQUFNLE9BQUEsWUFBWSxFQUFaLENBQVk7Q0FDOUIsQ0FBQyxDQUFDO0FBRUg7O0dBRUc7QUFDSCxNQUFNLENBQUMsSUFBTSxxQkFBcUIsR0FBRyxJQUFJLGNBQWMsQ0FDbkQsZ0NBQWdDLEVBQ2hDO0lBQ0ksT0FBTyxFQUFFO1FBQ0wsSUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBRTNDLE9BQU8sS0FBRyxVQUFVLEdBQUcsb0JBQW9CLEdBQUcsVUFBWSxDQUFDO0lBQy9ELENBQUM7Q0FDSixDQUNKLENBQUM7QUFFRjs7Ozs7O0dBTUc7QUFDSCxNQUFNLENBQUMsSUFBTSxrQkFBa0IsR0FBRyxFQUFFLENBQUM7QUFDckM7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLElBQU0sd0JBQXdCLEdBQ2pDLENBQUMsR0FBRyxrQkFBa0IsR0FBRyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2luamVjdCwgSW5qZWN0aW9uVG9rZW59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge1JBTkdFX1NFUEFSQVRPUl9DSEFSfSBmcm9tICcuL2RhdGUtdGltZSc7XG5cbi8qKlxuICogQGRlcHJlY2F0ZWQgZG9udCB1c2UgaXQuIFNlZSB7QGxpbmsgVFVJX0RBVEVfRk9STUFUfVxuICovXG5leHBvcnQgY29uc3QgVFVJX0RBVEVfRklMTEVSID0gbmV3IEluamVjdGlvblRva2VuPHN0cmluZz4oYGRhdGUgZmlsbGVyIGZvciBUYWlnYSBVSWAsIHtcbiAgICBmYWN0b3J5OiAoKSA9PiBgZGQubW0ueXl5eWAsXG59KTtcblxuLyoqXG4gKiBAZGVwcmVjYXRlZCBkb250IHVzZSBpdFxuICovXG5leHBvcnQgY29uc3QgVFVJX0RBVEVfUkFOR0VfRklMTEVSID0gbmV3IEluamVjdGlvblRva2VuPHN0cmluZz4oXG4gICAgYGRhdGUgcmFuZ2UgZmlsbGVyIGZvciBUYWlnYSBVSWAsXG4gICAge1xuICAgICAgICBmYWN0b3J5OiAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBkYXRlRmlsbGVyID0gaW5qZWN0KFRVSV9EQVRFX0ZJTExFUik7XG5cbiAgICAgICAgICAgIHJldHVybiBgJHtkYXRlRmlsbGVyfSR7UkFOR0VfU0VQQVJBVE9SX0NIQVJ9JHtkYXRlRmlsbGVyfWA7XG4gICAgICAgIH0sXG4gICAgfSxcbik7XG5cbi8qKlxuICogQGludGVybmFsICdkZC5tbS55eXl5Jy5sZW5ndGhcbiAqIFVzZWQgaW46XG4gKiAtIHtAbGluayBUdWlJbnB1dERhdGVDb21wb25lbnR9XG4gKiAtIHtAbGluayBUdWlJbnB1dERhdGVSYW5nZUNvbXBvbmVudH1cbiAqIC0ge0BsaW5rIFR1aUlucHV0RGF0ZVRpbWVDb21wb25lbnR9XG4gKi9cbmV4cG9ydCBjb25zdCBEQVRFX0ZJTExFUl9MRU5HVEggPSAxMDtcbi8qKlxuICogQGludGVybmFsXG4gKiBVc2VkIGluIHtAbGluayBUdWlJbnB1dERhdGVSYW5nZUNvbXBvbmVudH1cbiAqL1xuZXhwb3J0IGNvbnN0IERBVEVfUkFOR0VfRklMTEVSX0xFTkdUSCA9XG4gICAgMiAqIERBVEVfRklMTEVSX0xFTkdUSCArIFJBTkdFX1NFUEFSQVRPUl9DSEFSLmxlbmd0aDtcbiJdfQ==
@@ -1,5 +1,5 @@
1
1
  import { InjectionToken } from '@angular/core';
2
- export var TUI_DATE_FORMAT = new InjectionToken('Active date format for Taiga UI', {
3
- factory: function () { return 'DMY'; },
2
+ export var TUI_DATE_FORMAT = new InjectionToken("Active date format for Taiga UI", {
3
+ factory: function () { return "DMY"; },
4
4
  });
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1mb3JtYXQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AdGFpZ2EtdWkvY2RrL2RhdGUtdGltZS8iLCJzb3VyY2VzIjpbImRhdGUtZm9ybWF0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFHN0MsTUFBTSxDQUFDLElBQU0sZUFBZSxHQUFHLElBQUksY0FBYyxDQUM3QyxpQ0FBaUMsRUFDakM7SUFDSSxPQUFPLEVBQUUsY0FBTSxPQUFBLEtBQUssRUFBTCxDQUFLO0NBQ3ZCLENBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0aW9uVG9rZW59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtUdWlEYXRlTW9kZX0gZnJvbSAnQHRhaWdhLXVpL2Nkay90eXBlcyc7XG5cbmV4cG9ydCBjb25zdCBUVUlfREFURV9GT1JNQVQgPSBuZXcgSW5qZWN0aW9uVG9rZW48VHVpRGF0ZU1vZGU+KFxuICAgICdBY3RpdmUgZGF0ZSBmb3JtYXQgZm9yIFRhaWdhIFVJJyxcbiAgICB7XG4gICAgICAgIGZhY3Rvcnk6ICgpID0+ICdETVknLFxuICAgIH0sXG4pO1xuIl19
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1mb3JtYXQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AdGFpZ2EtdWkvY2RrL2RhdGUtdGltZS8iLCJzb3VyY2VzIjpbImRhdGUtZm9ybWF0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFHN0MsTUFBTSxDQUFDLElBQU0sZUFBZSxHQUFHLElBQUksY0FBYyxDQUM3QyxpQ0FBaUMsRUFDakM7SUFDSSxPQUFPLEVBQUUsY0FBTSxPQUFBLEtBQUssRUFBTCxDQUFLO0NBQ3ZCLENBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0aW9uVG9rZW59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtUdWlEYXRlTW9kZX0gZnJvbSAnQHRhaWdhLXVpL2Nkay90eXBlcyc7XG5cbmV4cG9ydCBjb25zdCBUVUlfREFURV9GT1JNQVQgPSBuZXcgSW5qZWN0aW9uVG9rZW48VHVpRGF0ZU1vZGU+KFxuICAgIGBBY3RpdmUgZGF0ZSBmb3JtYXQgZm9yIFRhaWdhIFVJYCxcbiAgICB7XG4gICAgICAgIGZhY3Rvcnk6ICgpID0+IGBETVlgLFxuICAgIH0sXG4pO1xuIl19
@@ -1,6 +1,6 @@
1
1
  import { InjectionToken } from '@angular/core';
2
- export var TUI_DATE_SEPARATOR = new InjectionToken('Date separator for Taiga UI components', {
3
- factory: function () { return '.'; },
2
+ export var TUI_DATE_SEPARATOR = new InjectionToken("Date separator for Taiga UI components", {
3
+ factory: function () { return "."; },
4
4
  });
5
5
  export var changeDateSeparator = function (dateString, newDateSeparator) { return dateString.replace(/[^0-9A-Za-zА-Яа-я]/gi, newDateSeparator); };
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1zZXBhcmF0b3IuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AdGFpZ2EtdWkvY2RrL2RhdGUtdGltZS8iLCJzb3VyY2VzIjpbImRhdGUtc2VwYXJhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFN0MsTUFBTSxDQUFDLElBQU0sa0JBQWtCLEdBQUcsSUFBSSxjQUFjLENBQ2hELHdDQUF3QyxFQUN4QztJQUNJLE9BQU8sRUFBRSxjQUFNLE9BQUEsR0FBRyxFQUFILENBQUc7Q0FDckIsQ0FDSixDQUFDO0FBRUYsTUFBTSxDQUFDLElBQU0sbUJBQW1CLEdBQUcsVUFDL0IsVUFBa0IsRUFDbEIsZ0JBQXdCLElBQ2YsT0FBQSxVQUFVLENBQUMsT0FBTyxDQUFDLHNCQUFzQixFQUFFLGdCQUFnQixDQUFDLEVBQTVELENBQTRELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGlvblRva2VufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IGNvbnN0IFRVSV9EQVRFX1NFUEFSQVRPUiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxzdHJpbmc+KFxuICAgICdEYXRlIHNlcGFyYXRvciBmb3IgVGFpZ2EgVUkgY29tcG9uZW50cycsXG4gICAge1xuICAgICAgICBmYWN0b3J5OiAoKSA9PiAnLicsXG4gICAgfSxcbik7XG5cbmV4cG9ydCBjb25zdCBjaGFuZ2VEYXRlU2VwYXJhdG9yID0gKFxuICAgIGRhdGVTdHJpbmc6IHN0cmluZyxcbiAgICBuZXdEYXRlU2VwYXJhdG9yOiBzdHJpbmcsXG4pOiBzdHJpbmcgPT4gZGF0ZVN0cmluZy5yZXBsYWNlKC9bXjAtOUEtWmEtetCQLdCv0LAt0Y9dL2dpLCBuZXdEYXRlU2VwYXJhdG9yKTtcbiJdfQ==
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1zZXBhcmF0b3IuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AdGFpZ2EtdWkvY2RrL2RhdGUtdGltZS8iLCJzb3VyY2VzIjpbImRhdGUtc2VwYXJhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFN0MsTUFBTSxDQUFDLElBQU0sa0JBQWtCLEdBQUcsSUFBSSxjQUFjLENBQ2hELHdDQUF3QyxFQUN4QztJQUNJLE9BQU8sRUFBRSxjQUFNLE9BQUEsR0FBRyxFQUFILENBQUc7Q0FDckIsQ0FDSixDQUFDO0FBRUYsTUFBTSxDQUFDLElBQU0sbUJBQW1CLEdBQUcsVUFDL0IsVUFBa0IsRUFDbEIsZ0JBQXdCLElBQ2YsT0FBQSxVQUFVLENBQUMsT0FBTyxDQUFDLHNCQUFzQixFQUFFLGdCQUFnQixDQUFDLEVBQTVELENBQTRELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGlvblRva2VufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IGNvbnN0IFRVSV9EQVRFX1NFUEFSQVRPUiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxzdHJpbmc+KFxuICAgIGBEYXRlIHNlcGFyYXRvciBmb3IgVGFpZ2EgVUkgY29tcG9uZW50c2AsXG4gICAge1xuICAgICAgICBmYWN0b3J5OiAoKSA9PiBgLmAsXG4gICAgfSxcbik7XG5cbmV4cG9ydCBjb25zdCBjaGFuZ2VEYXRlU2VwYXJhdG9yID0gKFxuICAgIGRhdGVTdHJpbmc6IHN0cmluZyxcbiAgICBuZXdEYXRlU2VwYXJhdG9yOiBzdHJpbmcsXG4pOiBzdHJpbmcgPT4gZGF0ZVN0cmluZy5yZXBsYWNlKC9bXjAtOUEtWmEtetCQLdCv0LAt0Y9dL2dpLCBuZXdEYXRlU2VwYXJhdG9yKTtcbiJdfQ==
@@ -9,7 +9,7 @@ import { TuiMonthRange } from './month-range';
9
9
  * @deprecated
10
10
  */
11
11
  export var isDateMode = function (dateMode) {
12
- return ['DMY', 'YMD', 'MDY'].includes(dateMode);
12
+ return ["DMY", "YMD", "MDY"].includes(dateMode);
13
13
  };
14
14
  /**
15
15
  * An immutable range of two {@link TuiDay} objects
@@ -43,8 +43,8 @@ var TuiDayRange = /** @class */ (function (_super) {
43
43
  * @return normalized day range object
44
44
  */
45
45
  TuiDayRange.normalizeParse = function (rangeString, dateMode) {
46
- if (dateMode === void 0) { dateMode = 'DMY'; }
47
- var dateFormat = isDateMode(dateMode) ? dateMode : 'DMY';
46
+ if (dateMode === void 0) { dateMode = "DMY"; }
47
+ var dateFormat = isDateMode(dateMode) ? dateMode : "DMY";
48
48
  var leftDay = TuiDay.normalizeParse(rangeString.slice(0, DATE_FILLER_LENGTH), dateFormat);
49
49
  if (rangeString.length < DATE_RANGE_FILLER_LENGTH) {
50
50
  return new TuiDayRange(leftDay, leftDay);
@@ -64,8 +64,8 @@ var TuiDayRange = /** @class */ (function (_super) {
64
64
  * @deprecated use {@link getFormattedDayRange} instead
65
65
  */
66
66
  get: function () {
67
- var from = this.from.getFormattedDay('DMY', '.');
68
- var to = this.to.getFormattedDay('DMY', '.');
67
+ var from = this.from.getFormattedDay("DMY", ".");
68
+ var to = this.to.getFormattedDay("DMY", ".");
69
69
  return "" + from + RANGE_SEPARATOR_CHAR + to;
70
70
  },
71
71
  enumerable: true,
@@ -99,8 +99,8 @@ var TuiDayRange = /** @class */ (function (_super) {
99
99
  return "" + from + RANGE_SEPARATOR_CHAR + to;
100
100
  };
101
101
  TuiDayRange.prototype.toString = function (dateFormat, dateSeparator) {
102
- if (dateFormat === void 0) { dateFormat = 'DMY'; }
103
- if (dateSeparator === void 0) { dateSeparator = '.'; }
102
+ if (dateFormat === void 0) { dateFormat = "DMY"; }
103
+ if (dateSeparator === void 0) { dateSeparator = "."; }
104
104
  var from = this.from.getFormattedDay(dateFormat, dateSeparator);
105
105
  var to = this.to.getFormattedDay(dateFormat, dateSeparator);
106
106
  return "" + from + RANGE_SEPARATOR_CHAR + to;
@@ -108,4 +108,4 @@ var TuiDayRange = /** @class */ (function (_super) {
108
108
  return TuiDayRange;
109
109
  }(TuiMonthRange));
110
110
  export { TuiDayRange };
111
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF5LXJhbmdlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHRhaWdhLXVpL2Nkay9kYXRlLXRpbWUvIiwic291cmNlcyI6WyJkYXktcmFuZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUdoRCxPQUFPLEVBQUMsa0JBQWtCLEVBQUUsd0JBQXdCLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1RSxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxhQUFhLENBQUM7QUFDakQsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLE9BQU8sQ0FBQztBQUM3QixPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRTVDOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxJQUFNLFVBQVUsR0FBRyxVQUFDLFFBQWdCO0lBQ3ZDLE9BQUEsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUM7QUFBeEMsQ0FBd0MsQ0FBQztBQUU3Qzs7R0FFRztBQUNIO0lBQWlDLCtCQUFhO0lBQzFDLHFCQUFxQixJQUFZLEVBQVcsRUFBVTtRQUF0RCxZQUNJLGtCQUFNLElBQUksRUFBRSxFQUFFLENBQUMsU0FHbEI7UUFKb0IsVUFBSSxHQUFKLElBQUksQ0FBUTtRQUFXLFFBQUUsR0FBRixFQUFFLENBQVE7UUFHbEQsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7O0lBQy9DLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxnQkFBSSxHQUFYLFVBQVksSUFBWSxFQUFFLElBQVk7UUFDbEMsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQztZQUM3QixDQUFDLENBQUMsSUFBSSxXQUFXLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQztZQUM3QixDQUFDLENBQUMsSUFBSSxXQUFXLENBQUMs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QUFPLEtBQUcsSUFBSSxHQUFHLG9CQUFvQixHQUFHLEVBQUksQ0FBQztJQUNqRCxDQUFDO0lBQ0wsa0JBQUM7QUFBRCxDQUFDLEFBakhELENBQWlDLGFBQWEsR0FpSDdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHt0dWlBc3NlcnR9IGZyb20gJ0B0YWlnYS11aS9jZGsvY2xhc3Nlcyc7XG5pbXBvcnQge1R1aURhdGVNb2RlfSBmcm9tICdAdGFpZ2EtdWkvY2RrL3R5cGVzJztcblxuaW1wb3J0IHtEQVRFX0ZJTExFUl9MRU5HVEgsIERBVEVfUkFOR0VfRklMTEVSX0xFTkdUSH0gZnJvbSAnLi9kYXRlLWZpbGxlcnMnO1xuaW1wb3J0IHtSQU5HRV9TRVBBUkFUT1JfQ0hBUn0gZnJvbSAnLi9kYXRlLXRpbWUnO1xuaW1wb3J0IHtUdWlEYXl9IGZyb20gJy4vZGF5JztcbmltcG9ydCB7VHVpTW9udGhSYW5nZX0gZnJvbSAnLi9tb250aC1yYW5nZSc7XG5cbi8qKlxuICogVGVtcG9yYXJ5IHR5cGUgZ3VhcmQgdG8gc2F0aXNmeSB0cy1vdmVybG9hZGluZyBvZiBub3JtYWxpemVQYXJzZSBtZXRob2RcbiAqIEBkZXByZWNhdGVkXG4gKi9cbmV4cG9ydCBjb25zdCBpc0RhdGVNb2RlID0gKGRhdGVNb2RlOiBzdHJpbmcpOiBkYXRlTW9kZSBpcyBUdWlEYXRlTW9kZSA9PlxuICAgIFsnRE1ZJywgJ1lNRCcsICdNRFknXS5pbmNsdWRlcyhkYXRlTW9kZSk7XG5cbi8qKlxuICogQW4gaW1tdXRhYmxlIHJhbmdlIG9mIHR3byB7QGxpbmsgVHVpRGF5fSBvYmplY3RzXG4gKi9cbmV4cG9ydCBjbGFzcyBUdWlEYXlSYW5nZSBleHRlbmRzIFR1aU1vbnRoUmFuZ2Uge1xuICAgIGNvbnN0cnVjdG9yKHJlYWRvbmx5IGZyb206IFR1aURheSwgcmVhZG9ubHkgdG86IFR1aURheSkge1xuICAgICAgICBzdXBlcihmcm9tLCB0byk7XG5cbiAgICAgICAgdHVpQXNzZXJ0LmFzc2VydChmcm9tLmRheVNhbWVPckJlZm9yZSh0bykpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgcmFuZ2UgZnJvbSB0d28gZGF5cyBhZnRlciBzb3J0aW5nIHRoZW1cbiAgICAgKlxuICAgICAqIEBwYXJhbSBkYXkxXG4gICAgICogQHBhcmFtIGRheTJcbiAgICAgKiBAcmV0dXJuIG5ldyByYW5nZSB3aXRoIHNvcnRlZCBkYXlzXG4gICAgICovXG4gICAgc3RhdGljIHNvcnQoZGF5MTogVHVpRGF5LCBkYXkyOiBUdWlEYXkpOiBUdWlEYXlSYW5nZSB7XG4gICAgICAgIHJldHVybiBkYXkxLmRheVNhbWVPckJlZm9yZShkYXkyKVxuICAgICAgICAgICAgPyBuZXcgVHVpRGF5UmFuZ2UoZGF5MSwgZGF5MilcbiAgICAgICAgICAgIDogbmV3IFR1aURheVJhbmdlKGRheTIsIGRheTEpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkXG4gICAgICovXG4gICAgc3RhdGljIG5vcm1hbGl6ZVBhcnNlKFxuICAgICAgICByYW5nZVN0cmluZzogc3RyaW5nLFxuICAgICAgICBkYXRlRmlsbGVyOiBzdHJpbmcsXG4gICAgICAgIGRhdGVSYW5nZUZpbGxlcjogc3RyaW5nLFxuICAgICk6IFR1aURheVJhbmdlO1xuICAgIHN0YXRpYyBub3JtYWxpemVQYXJzZShyYW5nZVN0cmluZzogc3RyaW5nLCBkYXRlTW9kZT86IFR1aURhdGVNb2RlKTogVHVpRGF5UmFuZ2U7XG5cbiAgICAvKipcbiAgICAgKiBQYXJzZSBhbmQgY29ycmVjdCBhIGRheSByYW5nZSBpbiBzdHJpbmcgZm9ybWF0XG4gICAgICpcbiAgICAgKiBAcGFyYW0gcmFuZ2VTdHJpbmcgYSBzdHJpbmcgb2YgZGF0ZXMgaW4gYSBmb3JtYXQgZGQubW0ueXl5eSAtIGRkLm1tLnl5eXlcbiAgICAgKiBAcGFyYW0gZGF0ZU1vZGUge0BsaW5rIFR1aURhdGVNb2RlfVxuICAgICAqIEByZXR1cm4gbm9ybWFsaXplZCBkYXkgcmFuZ2Ugb2JqZWN0XG4gICAgICovXG4gICAgc3RhdGljIG5vcm1hbGl6ZVBhcnNlKFxuICAgICAgICByYW5nZVN0cmluZzogc3RyaW5nLFxuICAgICAgICBkYXRlTW9kZTogc3RyaW5nIHwgVHVpRGF0ZU1vZGUgPSAnRE1ZJyxcbiAgICApOiBUdWlEYXlSYW5nZSB7XG4gICAgICAgIGNvbnN0IGRhdGVGb3JtYXQgPSBpc0RhdGVNb2RlKGRhdGVNb2RlKSA/IGRhdGVNb2RlIDogJ0RNWSc7XG5cbiAgICAgICAgY29uc3QgbGVmdERheSA9IFR1aURheS5ub3JtYWxpemVQYXJzZShcbiAgICAgICAgICAgIHJhbmdlU3RyaW5nLnNsaWNlKDAsIERBVEVfRklMTEVSX0xFTkdUSCksXG4gICAgICAgICAgICBkYXRlRm9ybWF0LFxuICAgICAgICApO1xuXG4gICAgICAgIGlmIChyYW5nZVN0cmluZy5sZW5ndGggPCBEQVRFX1JBTkdFX0ZJTExFUl9MRU5HVEgpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgVHVpRGF5UmFuZ2UobGVmdERheSwgbGVmdERheSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gVHVpRGF5UmFuZ2Uuc29ydChcbiAgICAgICAgICAgIGxlZnREYXksXG4gICAgICAgICAgICBUdWlEYXkubm9ybWFsaXplUGFyc2UoXG4gICAgICAgICAgICAgICAgcmFuZ2VTdHJpbmcuc2xpY2UoREFURV9GSUxMRVJfTEVOR1RIICsgUkFOR0VfU0VQQVJBVE9SX0NIQVIubGVuZ3RoKSxcbiAgICAgICAgICAgICAgICBkYXRlRm9ybWF0LFxuICAgICAgICAgICAgKSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBnZXQgaXNTaW5nbGVEYXkoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmZyb20uZGF5U2FtZSh0aGlzLnRvKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBIdW1hbiByZWFkYWJsZSBmb3JtYXQuXG4gICAgICogQGRlcHJlY2F0ZWQgdXNlIHtAbGluayBnZXRGb3JtYXR0ZWREYXlSYW5nZX0gaW5zdGVhZFxuICAgICAqL1xuICAgIGdldCBmb3JtYXR0ZWREYXlSYW5nZSgpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBmcm9tID0gdGhpcy5mcm9tLmdldEZvcm1hdHRlZERheSgnRE1ZJywgJy4nKTtcbiAgICAgICAgY29uc3QgdG8gPSB0aGlzLnRvLmdldEZvcm1hdHRlZERheSgnRE1ZJywgJy4nKTtcblxuICAgICAgICByZXR1cm4gYCR7ZnJvbX0ke1JBTkdFX1NFUEFSQVRPUl9DSEFSfSR7dG99YDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUZXN0cyByYW5nZXMgZm9yIGlkZW50aXR5XG4gICAgICpcbiAgICAgKiBAcGFyYW0gYW5vdGhlciBzZWNvbmQgcmFuZ2UgdG8gdGVzdCBhZ2FpbnN0IGN1cnJlbnRcbiAgICAgKiBAcmV0dXJuIGB0cnVlYCBpZiBkYXlzIGFyZSBpZGVudGljYWxcbiAgICAgKi9cbiAgICBkYXlTYW1lKGFub3RoZXI6IFR1aURheVJhbmdlKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmZyb20uZGF5U2FtZShhbm90aGVyLmZyb20pICYmIHRoaXMudG8uZGF5U2FtZShhbm90aGVyLnRvKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBMb2NrcyByYW5nZSBiZXR3ZWVuIHR3byBkYXlzIGluY2x1ZGVkLCBvciBsaW1pdHMgZnJvbSBvbmUgc2lkZSBpZiB0aGUgb3RoZXIgaXMgbnVsbFxuICAgICAqXG4gICAgICogQHBhcmFtIG1pblxuICAgICAqIEBwYXJhbSBtYXhcbiAgICAgKiBAcmV0dXJuIHJhbmdlIOKAlCBjbGFtcGVkIHJhbmdlXG4gICAgICovXG4gICAgZGF5TGltaXQobWluOiBUdWlEYXkgfCBudWxsLCBtYXg6IFR1aURheSB8IG51bGwpOiBUdWlEYXlSYW5nZSB7XG4gICAgICAgIHJldHVybiBuZXcgVHVpRGF5UmFuZ2UodGhpcy5mcm9tLmRheUxpbWl0KG1pbiwgbWF4KSwgdGhpcy50by5kYXlMaW1pdChtaW4sIG1heCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEh1bWFuIHJlYWRhYmxlIGZvcm1hdC5cbiAgICAgKi9cbiAgICBnZXRGb3JtYXR0ZWREYXlSYW5nZShkYXRlRm9ybWF0OiBUdWlEYXRlTW9kZSwgZGF0ZVNlcGFyYXRvcjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgZnJvbSA9IHRoaXMuZnJvbS5nZXRGb3JtYXR0ZWREYXkoZGF0ZUZvcm1hdCwgZGF0ZVNlcGFyYXRvcik7XG4gICAgICAgIGNvbnN0IHRvID0gdGhpcy50by5nZXRGb3JtYXR0ZWREYXkoZGF0ZUZvcm1hdCwgZGF0ZVNlcGFyYXRvcik7XG5cbiAgICAgICAgcmV0dXJuIGAke2Zyb219JHtSQU5HRV9TRVBBUkFUT1JfQ0hBUn0ke3RvfWA7XG4gICAgfVxuXG4gICAgdG9TdHJpbmcoZGF0ZUZvcm1hdDogVHVpRGF0ZU1vZGUgPSAnRE1ZJywgZGF0ZVNlcGFyYXRvcjogc3RyaW5nID0gJy4nKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgZnJvbSA9IHRoaXMuZnJvbS5nZXRGb3JtYXR0ZWREYXkoZGF0ZUZvcm1hdCwgZGF0ZVNlcGFyYXRvcik7XG4gICAgICAgIGNvbnN0IHRvID0gdGhpcy50by5nZXRGb3JtYXR0ZWREYXkoZGF0ZUZvcm1hdCwgZGF0ZVNlcGFyYXRvcik7XG5cbiAgICAgICAgcmV0dXJuIGAke2Zyb219JHtSQU5HRV9TRVBBUkFUT1JfQ0hBUn0ke3RvfWA7XG4gICAgfVxufVxuIl19
111
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF5LXJhbmdlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHRhaWdhLXVpL2Nkay9kYXRlLXRpbWUvIiwic291cmNlcyI6WyJkYXktcmFuZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUdoRCxPQUFPLEVBQUMsa0JBQWtCLEVBQUUsd0JBQXdCLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1RSxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxhQUFhLENBQUM7QUFDakQsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLE9BQU8sQ0FBQztBQUM3QixPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRTVDOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxJQUFNLFVBQVUsR0FBRyxVQUFDLFFBQWdCO0lBQ3ZDLE9BQUEsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUM7QUFBeEMsQ0FBd0MsQ0FBQztBQUU3Qzs7R0FFRztBQUNIO0lBQWlDLCtCQUFhO0lBQzFDLHFCQUFxQixJQUFZLEVBQVcsRUFBVTtRQUF0RCxZQUNJLGtCQUFNLElBQUksRUFBRSxFQUFFLENBQUMsU0FHbEI7UUFKb0IsVUFBSSxHQUFKLElBQUksQ0FBUTtRQUFXLFFBQUUsR0FBRixFQUFFLENBQVE7UUFHbEQsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7O0lBQy9DLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxnQkFBSSxHQUFYLFVBQVksSUFBWSxFQUFFLElBQVk7UUFDbEMsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQztZQUM3QixDQUFDLENBQUMsSUFBSSxXQUFXLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQztZQUM3QixDQUFDLENBQUMsSUFBSSxXQUFXLENBQUMs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QUFPLEtBQUcsSUFBSSxHQUFHLG9CQUFvQixHQUFHLEVBQUksQ0FBQztJQUNqRCxDQUFDO0lBQ0wsa0JBQUM7QUFBRCxDQUFDLEFBakhELENBQWlDLGFBQWEsR0FpSDdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHt0dWlBc3NlcnR9IGZyb20gJ0B0YWlnYS11aS9jZGsvY2xhc3Nlcyc7XG5pbXBvcnQge1R1aURhdGVNb2RlfSBmcm9tICdAdGFpZ2EtdWkvY2RrL3R5cGVzJztcblxuaW1wb3J0IHtEQVRFX0ZJTExFUl9MRU5HVEgsIERBVEVfUkFOR0VfRklMTEVSX0xFTkdUSH0gZnJvbSAnLi9kYXRlLWZpbGxlcnMnO1xuaW1wb3J0IHtSQU5HRV9TRVBBUkFUT1JfQ0hBUn0gZnJvbSAnLi9kYXRlLXRpbWUnO1xuaW1wb3J0IHtUdWlEYXl9IGZyb20gJy4vZGF5JztcbmltcG9ydCB7VHVpTW9udGhSYW5nZX0gZnJvbSAnLi9tb250aC1yYW5nZSc7XG5cbi8qKlxuICogVGVtcG9yYXJ5IHR5cGUgZ3VhcmQgdG8gc2F0aXNmeSB0cy1vdmVybG9hZGluZyBvZiBub3JtYWxpemVQYXJzZSBtZXRob2RcbiAqIEBkZXByZWNhdGVkXG4gKi9cbmV4cG9ydCBjb25zdCBpc0RhdGVNb2RlID0gKGRhdGVNb2RlOiBzdHJpbmcpOiBkYXRlTW9kZSBpcyBUdWlEYXRlTW9kZSA9PlxuICAgIFtgRE1ZYCwgYFlNRGAsIGBNRFlgXS5pbmNsdWRlcyhkYXRlTW9kZSk7XG5cbi8qKlxuICogQW4gaW1tdXRhYmxlIHJhbmdlIG9mIHR3byB7QGxpbmsgVHVpRGF5fSBvYmplY3RzXG4gKi9cbmV4cG9ydCBjbGFzcyBUdWlEYXlSYW5nZSBleHRlbmRzIFR1aU1vbnRoUmFuZ2Uge1xuICAgIGNvbnN0cnVjdG9yKHJlYWRvbmx5IGZyb206IFR1aURheSwgcmVhZG9ubHkgdG86IFR1aURheSkge1xuICAgICAgICBzdXBlcihmcm9tLCB0byk7XG5cbiAgICAgICAgdHVpQXNzZXJ0LmFzc2VydChmcm9tLmRheVNhbWVPckJlZm9yZSh0bykpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgcmFuZ2UgZnJvbSB0d28gZGF5cyBhZnRlciBzb3J0aW5nIHRoZW1cbiAgICAgKlxuICAgICAqIEBwYXJhbSBkYXkxXG4gICAgICogQHBhcmFtIGRheTJcbiAgICAgKiBAcmV0dXJuIG5ldyByYW5nZSB3aXRoIHNvcnRlZCBkYXlzXG4gICAgICovXG4gICAgc3RhdGljIHNvcnQoZGF5MTogVHVpRGF5LCBkYXkyOiBUdWlEYXkpOiBUdWlEYXlSYW5nZSB7XG4gICAgICAgIHJldHVybiBkYXkxLmRheVNhbWVPckJlZm9yZShkYXkyKVxuICAgICAgICAgICAgPyBuZXcgVHVpRGF5UmFuZ2UoZGF5MSwgZGF5MilcbiAgICAgICAgICAgIDogbmV3IFR1aURheVJhbmdlKGRheTIsIGRheTEpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkXG4gICAgICovXG4gICAgc3RhdGljIG5vcm1hbGl6ZVBhcnNlKFxuICAgICAgICByYW5nZVN0cmluZzogc3RyaW5nLFxuICAgICAgICBkYXRlRmlsbGVyOiBzdHJpbmcsXG4gICAgICAgIGRhdGVSYW5nZUZpbGxlcjogc3RyaW5nLFxuICAgICk6IFR1aURheVJhbmdlO1xuICAgIHN0YXRpYyBub3JtYWxpemVQYXJzZShyYW5nZVN0cmluZzogc3RyaW5nLCBkYXRlTW9kZT86IFR1aURhdGVNb2RlKTogVHVpRGF5UmFuZ2U7XG5cbiAgICAvKipcbiAgICAgKiBQYXJzZSBhbmQgY29ycmVjdCBhIGRheSByYW5nZSBpbiBzdHJpbmcgZm9ybWF0XG4gICAgICpcbiAgICAgKiBAcGFyYW0gcmFuZ2VTdHJpbmcgYSBzdHJpbmcgb2YgZGF0ZXMgaW4gYSBmb3JtYXQgZGQubW0ueXl5eSAtIGRkLm1tLnl5eXlcbiAgICAgKiBAcGFyYW0gZGF0ZU1vZGUge0BsaW5rIFR1aURhdGVNb2RlfVxuICAgICAqIEByZXR1cm4gbm9ybWFsaXplZCBkYXkgcmFuZ2Ugb2JqZWN0XG4gICAgICovXG4gICAgc3RhdGljIG5vcm1hbGl6ZVBhcnNlKFxuICAgICAgICByYW5nZVN0cmluZzogc3RyaW5nLFxuICAgICAgICBkYXRlTW9kZTogc3RyaW5nIHwgVHVpRGF0ZU1vZGUgPSBgRE1ZYCxcbiAgICApOiBUdWlEYXlSYW5nZSB7XG4gICAgICAgIGNvbnN0IGRhdGVGb3JtYXQgPSBpc0RhdGVNb2RlKGRhdGVNb2RlKSA/IGRhdGVNb2RlIDogYERNWWA7XG5cbiAgICAgICAgY29uc3QgbGVmdERheSA9IFR1aURheS5ub3JtYWxpemVQYXJzZShcbiAgICAgICAgICAgIHJhbmdlU3RyaW5nLnNsaWNlKDAsIERBVEVfRklMTEVSX0xFTkdUSCksXG4gICAgICAgICAgICBkYXRlRm9ybWF0LFxuICAgICAgICApO1xuXG4gICAgICAgIGlmIChyYW5nZVN0cmluZy5sZW5ndGggPCBEQVRFX1JBTkdFX0ZJTExFUl9MRU5HVEgpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgVHVpRGF5UmFuZ2UobGVmdERheSwgbGVmdERheSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gVHVpRGF5UmFuZ2Uuc29ydChcbiAgICAgICAgICAgIGxlZnREYXksXG4gICAgICAgICAgICBUdWlEYXkubm9ybWFsaXplUGFyc2UoXG4gICAgICAgICAgICAgICAgcmFuZ2VTdHJpbmcuc2xpY2UoREFURV9GSUxMRVJfTEVOR1RIICsgUkFOR0VfU0VQQVJBVE9SX0NIQVIubGVuZ3RoKSxcbiAgICAgICAgICAgICAgICBkYXRlRm9ybWF0LFxuICAgICAgICAgICAgKSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBnZXQgaXNTaW5nbGVEYXkoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmZyb20uZGF5U2FtZSh0aGlzLnRvKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBIdW1hbiByZWFkYWJsZSBmb3JtYXQuXG4gICAgICogQGRlcHJlY2F0ZWQgdXNlIHtAbGluayBnZXRGb3JtYXR0ZWREYXlSYW5nZX0gaW5zdGVhZFxuICAgICAqL1xuICAgIGdldCBmb3JtYXR0ZWREYXlSYW5nZSgpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBmcm9tID0gdGhpcy5mcm9tLmdldEZvcm1hdHRlZERheShgRE1ZYCwgYC5gKTtcbiAgICAgICAgY29uc3QgdG8gPSB0aGlzLnRvLmdldEZvcm1hdHRlZERheShgRE1ZYCwgYC5gKTtcblxuICAgICAgICByZXR1cm4gYCR7ZnJvbX0ke1JBTkdFX1NFUEFSQVRPUl9DSEFSfSR7dG99YDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUZXN0cyByYW5nZXMgZm9yIGlkZW50aXR5XG4gICAgICpcbiAgICAgKiBAcGFyYW0gYW5vdGhlciBzZWNvbmQgcmFuZ2UgdG8gdGVzdCBhZ2FpbnN0IGN1cnJlbnRcbiAgICAgKiBAcmV0dXJuIGB0cnVlYCBpZiBkYXlzIGFyZSBpZGVudGljYWxcbiAgICAgKi9cbiAgICBkYXlTYW1lKGFub3RoZXI6IFR1aURheVJhbmdlKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmZyb20uZGF5U2FtZShhbm90aGVyLmZyb20pICYmIHRoaXMudG8uZGF5U2FtZShhbm90aGVyLnRvKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBMb2NrcyByYW5nZSBiZXR3ZWVuIHR3byBkYXlzIGluY2x1ZGVkLCBvciBsaW1pdHMgZnJvbSBvbmUgc2lkZSBpZiB0aGUgb3RoZXIgaXMgbnVsbFxuICAgICAqXG4gICAgICogQHBhcmFtIG1pblxuICAgICAqIEBwYXJhbSBtYXhcbiAgICAgKiBAcmV0dXJuIHJhbmdlIOKAlCBjbGFtcGVkIHJhbmdlXG4gICAgICovXG4gICAgZGF5TGltaXQobWluOiBUdWlEYXkgfCBudWxsLCBtYXg6IFR1aURheSB8IG51bGwpOiBUdWlEYXlSYW5nZSB7XG4gICAgICAgIHJldHVybiBuZXcgVHVpRGF5UmFuZ2UodGhpcy5mcm9tLmRheUxpbWl0KG1pbiwgbWF4KSwgdGhpcy50by5kYXlMaW1pdChtaW4sIG1heCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEh1bWFuIHJlYWRhYmxlIGZvcm1hdC5cbiAgICAgKi9cbiAgICBnZXRGb3JtYXR0ZWREYXlSYW5nZShkYXRlRm9ybWF0OiBUdWlEYXRlTW9kZSwgZGF0ZVNlcGFyYXRvcjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgZnJvbSA9IHRoaXMuZnJvbS5nZXRGb3JtYXR0ZWREYXkoZGF0ZUZvcm1hdCwgZGF0ZVNlcGFyYXRvcik7XG4gICAgICAgIGNvbnN0IHRvID0gdGhpcy50by5nZXRGb3JtYXR0ZWREYXkoZGF0ZUZvcm1hdCwgZGF0ZVNlcGFyYXRvcik7XG5cbiAgICAgICAgcmV0dXJuIGAke2Zyb219JHtSQU5HRV9TRVBBUkFUT1JfQ0hBUn0ke3RvfWA7XG4gICAgfVxuXG4gICAgdG9TdHJpbmcoZGF0ZUZvcm1hdDogVHVpRGF0ZU1vZGUgPSBgRE1ZYCwgZGF0ZVNlcGFyYXRvcjogc3RyaW5nID0gYC5gKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgZnJvbSA9IHRoaXMuZnJvbS5nZXRGb3JtYXR0ZWREYXkoZGF0ZUZvcm1hdCwgZGF0ZVNlcGFyYXRvcik7XG4gICAgICAgIGNvbnN0IHRvID0gdGhpcy50by5nZXRGb3JtYXR0ZWREYXkoZGF0ZUZvcm1hdCwgZGF0ZVNlcGFyYXRvcik7XG5cbiAgICAgICAgcmV0dXJuIGAke2Zyb219JHtSQU5HRV9TRVBBUkFUT1JfQ0hBUn0ke3RvfWA7XG4gICAgfVxufVxuIl19
@@ -109,23 +109,23 @@ var TuiDay = /** @class */ (function (_super) {
109
109
  (1000 * 60 * 60 * 24));
110
110
  };
111
111
  TuiDay.parseRawDateString = function (date, dateMode) {
112
- if (dateMode === void 0) { dateMode = 'DMY'; }
113
- tuiAssert.assert(date.length === DATE_FILLER_LENGTH, '[parseRawDateString]: wrong date string length');
112
+ if (dateMode === void 0) { dateMode = "DMY"; }
113
+ tuiAssert.assert(date.length === DATE_FILLER_LENGTH, "[parseRawDateString]: wrong date string length");
114
114
  switch (dateMode) {
115
- case 'YMD':
115
+ case "YMD":
116
116
  return {
117
117
  day: parseInt(date.slice(8, 10), 10),
118
118
  month: parseInt(date.slice(5, 7), 10) - 1,
119
119
  year: parseInt(date.slice(0, 4), 10),
120
120
  };
121
- case 'MDY':
121
+ case "MDY":
122
122
  return {
123
123
  day: parseInt(date.slice(3, 5), 10),
124
124
  month: parseInt(date.slice(0, 2), 10) - 1,
125
125
  year: parseInt(date.slice(6, 10), 10),
126
126
  };
127
127
  default:
128
- case 'DMY':
128
+ case "DMY":
129
129
  return {
130
130
  day: parseInt(date.slice(0, 2), 10),
131
131
  month: parseInt(date.slice(3, 5), 10) - 1,
@@ -142,7 +142,7 @@ var TuiDay = /** @class */ (function (_super) {
142
142
  * @return normalized date
143
143
  */
144
144
  TuiDay.normalizeParse = function (rawDate, dateMode) {
145
- if (dateMode === void 0) { dateMode = 'DMY'; }
145
+ if (dateMode === void 0) { dateMode = "DMY"; }
146
146
  var _a = this.parseRawDateString(rawDate, dateMode), day = _a.day, month = _a.month, year = _a.year;
147
147
  return TuiDay.normalizeOf(year, month, day);
148
148
  };
@@ -153,7 +153,7 @@ var TuiDay = /** @class */ (function (_super) {
153
153
  * @throws exceptions if any part of the date is invalid
154
154
  */
155
155
  TuiDay.jsonParse = function (yearMonthDayString) {
156
- var _a = this.parseRawDateString(yearMonthDayString, 'YMD'), day = _a.day, month = _a.month, year = _a.year;
156
+ var _a = this.parseRawDateString(yearMonthDayString, "YMD"), day = _a.day, month = _a.month, year = _a.year;
157
157
  if (!TuiYear.isValidYear(year)) {
158
158
  throw new InvalidYearException(year);
159
159
  }
@@ -173,7 +173,7 @@ var TuiDay = /** @class */ (function (_super) {
173
173
  };
174
174
  Object.defineProperty(TuiDay.prototype, "formattedDayPart", {
175
175
  get: function () {
176
- return padStart(String(this.day), 2, '0');
176
+ return padStart(String(this.day), 2, "0");
177
177
  },
178
178
  enumerable: true,
179
179
  configurable: true
@@ -310,23 +310,23 @@ var TuiDay = /** @class */ (function (_super) {
310
310
  * Returns formatted whole date
311
311
  */
312
312
  TuiDay.prototype.getFormattedDay = function (dateFormat, separator) {
313
- tuiAssert.assert(separator.length === 1, 'Separator should consist of only 1 symbol');
313
+ tuiAssert.assert(separator.length === 1, "Separator should consist of only 1 symbol");
314
314
  var dd = this.formattedDayPart;
315
315
  var mm = this.formattedMonthPart;
316
316
  var yyyy = this.formattedYear;
317
317
  switch (dateFormat) {
318
- case 'YMD':
318
+ case "YMD":
319
319
  return "" + yyyy + separator + mm + separator + dd;
320
- case 'MDY':
320
+ case "MDY":
321
321
  return "" + mm + separator + dd + separator + yyyy;
322
- case 'DMY':
322
+ case "DMY":
323
323
  default:
324
324
  return "" + dd + separator + mm + separator + yyyy;
325
325
  }
326
326
  };
327
327
  TuiDay.prototype.toString = function (dateFormat, separator) {
328
- if (dateFormat === void 0) { dateFormat = 'DMY'; }
329
- if (separator === void 0) { separator = '.'; }
328
+ if (dateFormat === void 0) { dateFormat = "DMY"; }
329
+ if (separator === void 0) { separator = "."; }
330
330
  return this.getFormattedDay(dateFormat, separator);
331
331
  };
332
332
  TuiDay.prototype.toJSON = function () {
@@ -347,4 +347,4 @@ var TuiDay = /** @class */ (function (_super) {
347
347
  return TuiDay;
348
348
  }(TuiMonth));
349
349
  export { TuiDay };
350
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF5LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHRhaWdhLXVpL2Nkay9kYXRlLXRpbWUvIiwic291cmNlcyI6WyJkYXkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUVoRCxPQUFPLEVBQ0gsbUJBQW1CLEVBQ25CLHFCQUFxQixFQUNyQixvQkFBb0IsR0FDdkIsTUFBTSwwQkFBMEIsQ0FBQztBQUdsQyxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDcEQsT0FBTyxFQUFDLE9BQU8sRUFBRSxvQkFBb0IsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBRXZFLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ2xELE9BQU8sRUFBQyxZQUFZLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBQyxNQUFNLGFBQWEsQ0FBQztBQUNsRSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sU0FBUyxDQUFDO0FBQ2pDLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxRQUFRLENBQUM7QUFFL0IsNkJBQTZCO0FBQzdCOztHQUVHO0FBQ0g7SUFBNEIsMEJBQVE7SUFDaEMsZ0JBQVksSUFBWSxFQUFFLEtBQWEsRUFBVyxHQUFXO1FBQTdELFlBQ0ksa0JBQU0sSUFBSSxFQUFFLEtBQUssQ0FBQyxTQUVyQjtRQUhpRCxTQUFHLEdBQUgsR0FBRyxDQUFRO1FBRXpELFNBQVMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7O0lBQzFELENBQUM7SUFFRDs7T0FFRztJQUNJLDBCQUFtQixHQUExQixVQUEyQixJQUFVO1FBQ2pDLE9BQU8sSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFF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QU0sQ0FBQztZQUN2RCxLQUFLLEtBQUssQ0FBQztZQUNYO2dCQUNJLE9BQU8sS0FBRyxFQUFFLEdBQUcsU0FBUyxHQUFHLEVBQUUsR0FBRyxTQUFTLEdBQUcsSUFBTSxDQUFDO1NBQzFEO0lBQ0wsQ0FBQztJQUVELHlCQUFRLEdBQVIsVUFBUyxVQUErQixFQUFFLFNBQXVCO1FBQXhELDJCQUFBLEVBQUEsa0JBQStCO1FBQUUsMEJBQUEsRUFBQSxlQUF1QjtRQUM3RCxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRCx1QkFBTSxHQUFOO1FBQ0ksT0FBVSxpQkFBTSxNQUFNLFdBQUUsU0FBSSxJQUFJLENBQUMsZ0JBQWtCLENBQUM7SUFDeEQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsa0NBQWlCLEdBQWpCO1FBQ0ksT0FBTyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFRDs7T0FFRztJQUNILGdDQUFlLEdBQWY7UUFDSSxPQUFPLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFDTCxhQUFDO0FBQUQsQ0FBQyxBQTVaRCxDQUE0QixRQUFRLEdBNFpuQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7dHVpQXNzZXJ0fSBmcm9tICdAdGFpZ2EtdWkvY2RrL2NsYXNzZXMnO1xuaW1wb3J0IHtUdWlEYXlPZldlZWssIFR1aU1vbnRoTnVtYmVyfSBmcm9tICdAdGFpZ2EtdWkvY2RrL2VudW1zJztcbmltcG9ydCB7XG4gICAgSW52YWxpZERheUV4Y2VwdGlvbixcbiAgICBJbnZhbGlkTW9udGhFeGNlcHRpb24sXG4gICAgSW52YWxpZFllYXJFeGNlcHRpb24sXG59IGZyb20gJ0B0YWlnYS11aS9jZGsvZXhjZXB0aW9ucyc7XG5pbXBvcnQge1R1aURheUxpa2V9IGZyb20gJ0B0YWlnYS11aS9jZGsvaW50ZXJmYWNlcyc7XG5pbXBvcnQge1R1aURhdGVNb2RlfSBmcm9tICdAdGFpZ2EtdWkvY2RrL3R5cGVzJztcbmltcG9ydCB7cGFkU3RhcnR9IGZyb20gJ0B0YWlnYS11aS9jZGsvdXRpbHMvZm9ybWF0JztcbmltcG9ydCB7aW5SYW5nZSwgbm9ybWFsaXplVG9JbnROdW1iZXJ9IGZyb20gJ0B0YWlnYS11aS9jZGsvdXRpbHMvbWF0aCc7XG5cbmltcG9ydCB7REFURV9GSUxMRVJfTEVOR1RIfSBmcm9tICcuL2RhdGUtZmlsbGVycyc7XG5pbXBvcnQge0RBWVNfSU5fV0VFSywgTUlOX0RBWSwgTU9OVEhTX0lOX1lFQVJ9IGZyb20gJy4vZGF0ZS10aW1lJztcbmltcG9ydCB7VHVpTW9udGh9IGZyb20gJy4vbW9udGgnO1xuaW1wb3J0IHtUdWlZZWFyfSBmcm9tICcuL3llYXInO1xuXG4vLyBUT0RPOiBMb2NhbGl6ZWQgZm9ybWF0dGluZ1xuLyoqXG4gKiBJbW11dGFibGUgZGF0ZSBvYmplY3QsIGNvbnNpc3Rpbmcgb2YgZGF5LCBtb250aCBhbmQgeWVhclxuICovXG5leHBvcnQgY2xhc3MgVHVpRGF5IGV4dGVuZHMgVHVpTW9udGgge1xuICAgIGNvbnN0cnVjdG9yKHllYXI6IG51bWJlciwgbW9udGg6IG51bWJlciwgcmVhZG9ubHkgZGF5OiBudW1iZXIpIHtcbiAgICAgICAgc3VwZXIoeWVhciwgbW9udGgpO1xuICAgICAgICB0dWlBc3NlcnQuYXNzZXJ0KFR1aURheS5pc1ZhbGlkRGF5KHllYXIsIG1vbnRoLCBkYXkpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIHtAbGluayBUdWlEYXl9IGZyb20gbmF0aXZlIHtAbGluayBEYXRlfSBiYXNlZCBvbiBsb2NhbCB0aW1lIHpvbmVcbiAgICAgKi9cbiAgICBzdGF0aWMgZnJvbUxvY2FsTmF0aXZlRGF0ZShkYXRlOiBEYXRlKTogVHVpRGF5IHtcbiAgICAgICAgcmV0dXJuIG5ldyBUdWlEYXkoZGF0ZS5nZXRGdWxsWWVhcigpLCBkYXRlLmdldE1vbnRoKCksIGRhdGUuZ2V0RGF0ZSgpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIHtAbGluayBUdWlEYXl9IGZyb20gbmF0aXZlIHtAbGluayBEYXRlfSB1c2luZyBVVENcbiAgICAgKi9cbiAgICBzdGF0aWMgZnJvbVV0Y05hdGl2ZURhdGUoZGF0ZTogRGF0ZSk6IFR1aURheSB7XG4gICAgICAgIHJldHVybiBuZXcgVHVpRGF5KGRhdGUuZ2V0VVRDRnVsbFllYXIoKSwgZGF0ZS5nZXRVVENNb250aCgpLCBkYXRlLmdldFVUQ0RhdGUoKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2sgdmFsaWRpdHkgb2YgeWVhciwgbW9udGggYW5kIGRheVxuICAgICAqXG4gICAgICogQHBhcmFtIHllYXJcbiAgICAgKiBAcGFyYW0gbW9udGhcbiAgICAgKiBAcGFyYW0gZGF5XG4gICAgICogQHJldHVybiBib29sZWFuIHZhbGlkaXR5XG4gICAgICovXG4gICAgc3RhdGljIGlzVmFsaWREYXkoeWVhcjogbnVtYmVyLCBtb250aDogbnVtYmVyLCBkYXk6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgVHVpTW9udGguaXNWYWxpZE1vbnRoKHllYXIsIG1vbnRoKSAmJlxuICAgICAgICAgICAgTnVtYmVyLmlzSW50ZWdlcihkYXkpICYmXG4gICAgICAgICAgICBpblJhbmdlKFxuICAgICAgICAgICAgICAgIGRheSxcbiAgICAgICAgICAgICAgICBNSU5fREFZLFxuICAgICAgICAgICAgICAgIFR1aU1vbnRoLmdldE1vbnRoRGF5c0NvdW50KG1vbnRoLCBUdWlZZWFyLmlzTGVhcFllYXIoeWVhcikpICsgMSxcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCBET05UIFVTRSBJVCAod2lsbCBiZSBkZWxldGVkIHNvb24pXG4gICAgICpcbiAgICAgKiBDYWxjdWxhdGVkIGRheSBvbiBhIGNhbGVuZGFyIGdyaWRcbiAgICAgKlxuICAgICAqIEBwYXJhbSBtb250aFxuICAgICAqIEBwYXJhbSByb3cgcm93IGluIGEgY2FsZW5kYXJcbiAgICAgKiBAcGFyYW0gY29sIGNvbHVtbiBpbiBhIGNhbGVuZGFyXG4gICAgICogQHJldHVybiByZXN1bHRpbmcgZGF5IG9uIHRoZXNlIGNvb3JkaW5hdGVzIChjb3VsZCBleGNlZWQgcGFzc2VkIG1vbnRoKVxuICAgICAqL1xuICAgIHN0YXRpYyBnZXREYXlGcm9tTW9udGhSb3dDb2wobW9udGg6IFR1aU1vbnRoLCByb3c6IG51bWJlciwgY29sOiBudW1iZXIpOiBUdWlEYXkge1xuICAgICAgICB0dWlBc3NlcnQuYXNzZXJ0KE51bWJlci5pc0ludGVnZXIocm93KSk7XG4gICAgICAgIHR1aUFzc2VydC5hc3NlcnQoaW5SYW5nZShyb3csIDAsIDYpKTtcbiAgICAgICAgdHVpQXNzZXJ0LmFzc2VydChOdW1iZXIuaXNJbnRlZ2VyKGNvbCkpO1xuICAgICAgICB0dWlBc3NlcnQuYXNzZXJ0KGluUmFuZ2UoY29sLCAwLCBEQVlTX0lOX1dFRUspKTtcblxuICAgICAgICBsZXQgZGF5ID0gcm93ICogREFZU19JTl9XRUVLICsgY29sIC0gbW9udGgubW9udGhTdGFydERheXNPZmZzZXQgKyAxO1xuXG4gICAgICAgIGlmIChkYXkgPiBtb250aC5kYXlzQ291bnQpIHtcbiAgICAgICAgICAgIGRheSA9IGRheSAtIG1vbnRoLmRheXNDb3VudDtcbiAgICAgICAgICAgIG1vbnRoID0gbW9udGguYXBwZW5kKHttb250aDogMX0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGRheSA8PSAwKSB7XG4gICAgICAgICAgICBtb250aCA9IG1vbnRoLmFwcGVuZCh7bW9udGg6IC0xfSk7XG4gICAgICAgICAgICBkYXkgPSBtb250aC5kYXlzQ291bnQgKyBkYXk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbmV3IFR1aURheShtb250aC55ZWFyLCBtb250aC5tb250aCwgZGF5KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDdXJyZW50IGRheSBiYXNlZCBvbiBsb2NhbCB0aW1lIHpvbmVcbiAgICAgKi9cbiAgICBzdGF0aWMgY3VycmVudExvY2FsKCk6IFR1aURheSB7XG4gICAgICAgIGNvbnN0IG5hdGl2ZURhdGUgPSBuZXcgRGF0ZSgpO1xuICAgICAgICBjb25zdCB5ZWFyID0gbmF0aXZlRGF0ZS5nZXRGdWxsWWVhcigpO1xuICAgICAgICBjb25zdCBtb250aCA9IG5hdGl2ZURhdGUuZ2V0TW9udGgoKTtcbiAgICAgICAgY29uc3QgZGF5ID0gbmF0aXZlRGF0ZS5nZXREYXRlKCk7XG5cbiAgICAgICAgcmV0dXJuIG5ldyBUdWlEYXkoeWVhciwgbW9udGgsIGRheSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBjdXJyZW50IGRheSBiYXNlZCBvbiBVVENcbiAgICAgKi9cbiAgICBzdGF0aWMgY3VycmVudFV0YygpOiBUdWlEYXkge1xuICAgICAgICBjb25zdCBuYXRpdmVEYXRlID0gbmV3IERhdGUoKTtcbiAgICAgICAgY29uc3QgeWVhciA9IG5hdGl2ZURhdGUuZ2V0VVRDRnVsbFllYXIoKTtcbiAgICAgICAgY29uc3QgbW9udGggPSBuYXRpdmVEYXRlLmdldFVUQ01vbnRoKCk7XG4gICAgICAgIGNvbnN0IGRheSA9IG5hdGl2ZURhdGUuZ2V0VVRDRGF0ZSgpO1xuXG4gICAgICAgIHJldHVybiBuZXcgVHVpRGF5KHllYXIsIG1vbnRoLCBkYXkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhbGN1bGF0ZXMge0BsaW5rIFR1aURheX0gbm9ybWFsaXppbmcgeWVhciwgbW9udGggYW5kIGRheS4ge0BsaW5rIE5hTn0gaXMgdHVybmVkIGludG8gbWluaW1hbCB2YWx1ZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB5ZWFyIGFueSB5ZWFyIHZhbHVlLCBpbmNsdWRpbmcgaW52YWxpZFxuICAgICAqIEBwYXJhbSBtb250aCBhbnkgbW9udGggdmFsdWUsIGluY2x1ZGluZyBpbnZhbGlkIChtb250aHMgc3RhcnQgd2l0aCAwKVxuICAgICAqIEBwYXJhbSBkYXkgYW55IGRheSB2YWx1ZSwgaW5jbHVkaW5nIGludmFsaWRcbiAgICAgKiBAcmV0dXJuIG5vcm1hbGl6ZWQgZGF0ZVxuICAgICAqL1xuICAgIHN0YXRpYyBub3JtYWxpemVPZih5ZWFyOiBudW1iZXIsIG1vbnRoOiBudW1iZXIsIGRheTogbnVtYmVyKTogVHVpRGF5IHtcbiAgICAgICAgY29uc3Qgbm9ybWFsaXplZFllYXIgPSBUdWlZZWFyLm5vcm1hbGl6ZVllYXJQYXJ0KHllYXIpO1xuICAgICAgICBjb25zdCBub3JtYWxpemVkTW9udGggPSBUdWlNb250aC5ub3JtYWxpemVNb250aFBhcnQobW9udGgpO1xuICAgICAgICBjb25zdCBub3JtYWxpemVkRGF5ID0gVHVpRGF5Lm5vcm1hbGl6ZURheVBhcnQoXG4gICAgICAgICAgICBkYXksXG4gICAgICAgICAgICBub3JtYWxpemVkTW9udGgsXG4gICAgICAgICAgICBub3JtYWxpemVkWWVhcixcbiAgICAgICAgKTtcblxuICAgICAgICByZXR1cm4gbmV3IFR1aURheShub3JtYWxpemVkWWVhciwgbm9ybWFsaXplZE1vbnRoLCBub3JtYWxpemVkRGF5KTtcbiAgICB9XG5cbiAgICBzdGF0aWMgbGVuZ3RoQmV0d2Vlbihmcm9tOiBUdWlEYXksIHRvOiBUdWlEYXkpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gTWF0aC5yb3VuZChcbiAgICAgICAgICAgICh0by50b0xvY2FsTmF0aXZlRGF0ZSgpLmdldFRpbWUoKSAtIGZyb20udG9Mb2NhbE5hdGl2ZURhdGUoKS5nZXRUaW1lKCkpIC9cbiAgICAgICAgICAgICAgICAoMTAwMCAqIDYwICogNjAgKiAyNCksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgc3RhdGljIHBhcnNlUmF3RGF0ZVN0cmluZyhcbiAgICAgICAgZGF0ZTogc3RyaW5nLFxuICAgICAgICBkYXRlTW9kZTogVHVpRGF0ZU1vZGUgPSAnRE1ZJyxcbiAgICApOiB7ZGF5OiBudW1iZXI7IG1vbnRoOiBudW1iZXI7IHllYXI6IG51bWJlcn0ge1xuICAgICAgICB0dWlBc3NlcnQuYXNzZXJ0KFxuICAgICAgICAgICAgZGF0ZS5sZW5ndGggPT09IERBVEVfRklMTEVSX0xFTkdUSCxcbiAgICAgICAgICAgICdbcGFyc2VSYXdEYXRlU3RyaW5nXTogd3JvbmcgZGF0ZSBzdHJpbmcgbGVuZ3RoJyxcbiAgICAgICAgKTtcblxuICAgICAgICBzd2l0Y2ggKGRhdGVNb2RlKSB7XG4gICAgICAgICAgICBjYXNlICdZTUQnOlxuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIGRheTogcGFyc2VJbnQoZGF0ZS5zbGljZSg4LCAxMCksIDEwKSxcbiAgICAgICAgICAgICAgICAgICAgbW9udGg6IHBhcnNlSW50KGRhdGUuc2xpY2UoNSwgNyksIDEwKSAtIDEsXG4gICAgICAgICAgICAgICAgICAgIHllYXI6IHBhcnNlSW50KGRhdGUuc2xpY2UoMCwgNCksIDEwKSxcbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBjYXNlICdNRFknOlxuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIGRheTogcGFyc2VJbnQoZGF0ZS5zbGljZSgzLCA1KSwgMTApLFxuICAgICAgICAgICAgICAgICAgICBtb250aDogcGFyc2VJbnQoZGF0ZS5zbGljZSgwLCAyKSwgMTApIC0gMSxcbiAgICAgICAgICAgICAgICAgICAgeWVhcjogcGFyc2VJbnQoZGF0ZS5zbGljZSg2LCAxMCksIDEwKSxcbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgY2FzZSAnRE1ZJzpcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICBkYXk6IHBhcnNlSW50KGRhdGUuc2xpY2UoMCwgMiksIDEwKSxcbiAgICAgICAgICAgICAgICAgICAgbW9udGg6IHBhcnNlSW50KGRhdGUuc2xpY2UoMywgNSksIDEwKSAtIDEsXG4gICAgICAgICAgICAgICAgICAgIHllYXI6IHBhcnNlSW50KGRhdGUuc2xpY2UoNiwgMTApLCAxMCksXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFRPRE86IE1vdmUgbW9udGggYW5kIHllYXIgcmVsYXRlZCBjb2RlIGNvcnJlc3BvbmRpbmcgY2xhc3Nlc1xuICAgIC8qKlxuICAgICAqIFBhcnNpbmcgYSBzdHJpbmcgd2l0aCBkYXRlIHdpdGggbm9ybWFsaXphdGlvblxuICAgICAqXG4gICAgICogQHBhcmFtIHJhd0RhdGUgZGF0ZSBzdHJpbmdcbiAgICAgKiBAcGFyYW0gZGF0ZU1vZGUgZGF0ZSBmb3JtYXQgb2YgdGhlIGRhdGUgc3RyaW5nIChETVkgfCBNRFkgfCBZTUQpXG4gICAgICogQHJldHVybiBub3JtYWxpemVkIGRhdGVcbiAgICAgKi9cbiAgICBzdGF0aWMgbm9ybWFsaXplUGFyc2UocmF3RGF0ZTogc3RyaW5nLCBkYXRlTW9kZTogVHVpRGF0ZU1vZGUgPSAnRE1ZJyk6IFR1aURheSB7XG4gICAgICAgIGNvbnN0IHtkYXksIG1vbnRoLCB5ZWFyfSA9IHRoaXMucGFyc2VSYXdEYXRlU3RyaW5nKHJhd0RhdGUsIGRhdGVNb2RlKTtcblxuICAgICAgICByZXR1cm4gVHVpRGF5Lm5vcm1hbGl6ZU9mKHllYXIsIG1vbnRoLCBkYXkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFBhcnNpbmcgYSBkYXRlIHN0cmluZ2lmaWVkIGluIGEgdG9KU09OIGZvcm1hdFxuICAgICAqIEBwYXJhbSB5ZWFyTW9udGhEYXlTdHJpbmcgZGF0ZSBzdHJpbmcgaW4gZm9ybWF0IG9mIFlZWVktTU0tRERcbiAgICAgKiBAcmV0dXJuIGRhdGVcbiAgICAgKiBAdGhyb3dzIGV4Y2VwdGlvbnMgaWYgYW55IHBhcnQgb2YgdGhlIGRhdGUgaXMgaW52YWxpZFxuICAgICAqL1xuICAgIHN0YXRpYyBqc29uUGFyc2UoeWVhck1vbnRoRGF5U3RyaW5nOiBzdHJpbmcpOiBUdWlEYXkge1xuICAgICAgICBjb25zdCB7ZGF5LCBtb250aCwgeWVhcn0gPSB0aGlzLnBhcnNlUmF3RGF0ZVN0cmluZyh5ZWFyTW9udGhEYXlTdHJpbmcsICdZTUQnKTtcblxuICAgICAgICBpZiAoIVR1aVllYXIuaXNWYWxpZFllYXIoeWVhcikpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkWWVhckV4Y2VwdGlvbih5ZWFyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghVHVpTW9udGguaXNWYWxpZE1vbnRoKHllYXIsIG1vbnRoKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRNb250aEV4Y2VwdGlvbihtb250aCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoXG4gICAgICAgICAgICAhTnVtYmVyLmlzSW50ZWdlcihkYXkpIHx8XG4gICAgICAgICAgICAhaW5SYW5nZShcbiAgICAgICAgICAgICAgICBkYXksXG4gICAgICAgICAgICAgICAgTUlOX0RBWSxcbiAgICAgICAgICAgICAgICBUdWlNb250aC5nZXRNb250aERheXNDb3VudChtb250aCwgVHVpWWVhci5pc0xlYXBZZWFyKHllYXIpKSArIDEsXG4gICAgICAgICAgICApXG4gICAgICAgICkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWREYXlFeGNlcHRpb24oZGF5KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBuZXcgVHVpRGF5KHllYXIsIG1vbnRoLCBkYXkpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBzdGF0aWMgbm9ybWFsaXplRGF5UGFydChkYXk6IG51bWJlciwgbW9udGg6IG51bWJlciwgeWVhcjogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgICAgdHVpQXNzZXJ0LmFzc2VydChUdWlNb250aC5pc1ZhbGlkTW9udGgoeWVhciwgbW9udGgpKTtcblxuICAgICAgICBjb25zdCBtb250aERheXNDb3VudCA9IFR1aU1vbnRoLmdldE1vbnRoRGF5c0NvdW50KFxuICAgICAgICAgICAgbW9udGgsXG4gICAgICAgICAgICBUdWlZZWFyLmlzTGVhcFllYXIoeWVhciksXG4gICAgICAgICk7XG5cbiAgICAgICAgcmV0dXJuIG5vcm1hbGl6ZVRvSW50TnVtYmVyKGRheSwgMSwgbW9udGhEYXlzQ291bnQpO1xuICAgIH1cblxuICAgIGdldCBmb3JtYXR0ZWREYXlQYXJ0KCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBwYWRTdGFydChTdHJpbmcodGhpcy5kYXkpLCAyLCAnMCcpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIHVzZSB7QGxpbmsgZ2V0Rm9ybWF0dGVkRGF5fSBpbnN0ZWFkXG4gICAgICogRm9ybWF0dGVkIHdob2xlIGRhdGVcbiAgICAgKi9cbiAgICBnZXQgZm9ybWF0dGVkRGF5KCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBgJHt0aGlzLmZvcm1hdHRlZERheVBhcnR9LiR7dGhpcy5mb3JtYXR0ZWRNb250aH1gO1xuICAgIH1cblxuICAgIGdldCBpc1dlZWtlbmQoKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IGRheU9mV2VlayA9IHRoaXMuZGF5T2ZXZWVrKGZhbHNlKTtcblxuICAgICAgICByZXR1cm4gZGF5T2ZXZWVrID09PSBUdWlEYXlPZldlZWsuU2F0dXJkYXkgfHwgZGF5T2ZXZWVrID09PSBUdWlEYXlPZldlZWsuU3VuZGF5O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgZGF5IG9mIHdlZWtcbiAgICAgKlxuICAgICAqIEBwYXJhbSBzdGFydEZyb21Nb25kYXkgd2hldGhlciB3ZWVrIHN0YXJ0cyBmcm9tIE1vbmRheSBhbmQgbm90IGZyb20gU3VuZGF5XG4gICAgICogQHJldHVybiBkYXkgb2Ygd2VlayAoZnJvbSAwIHRvIDYpXG4gICAgICovXG4gICAgZGF5T2ZXZWVrKHN0YXJ0RnJvbU1vbmRheTogYm9vbGVhbiA9IHRydWUpOiBudW1iZXIge1xuICAgICAgICBjb25zdCBkYXlPZldlZWsgPSBzdGFydEZyb21Nb25kYXlcbiAgICAgICAgICAgID8gdGhpcy50b0xvY2FsTmF0aXZlRGF0ZSgpLmdldERheSgpIC0gMVxuICAgICAgICAgICAgOiB0aGlzLnRvTG9jYWxOYXRpdmVEYXRlKCkuZ2V0RGF5KCk7XG5cbiAgICAgICAgcmV0dXJuIGRheU9mV2VlayA8IDAgPyA2IDogZGF5T2ZXZWVrO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFBhc3NlZCBkYXRlIGlzIGFmdGVyIGN1cnJlbnRcbiAgICAgKi9cbiAgICBkYXlCZWZvcmUoYW5vdGhlcjogVHVpRGF5KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICB0aGlzLm1vbnRoQmVmb3JlKGFub3RoZXIpIHx8XG4gICAgICAgICAgICAodGhpcy5tb250aFNhbWUoYW5vdGhlcikgJiYgdGhpcy5kYXkgPCBhbm90aGVyLmRheSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQYXNzZWQgZGF0ZSBpcyBhZnRlciBvciBlcXVhbHMgdG8gY3VycmVudFxuICAgICAqL1xuICAgIGRheVNhbWVPckJlZm9yZShhbm90aGVyOiBUdWlEYXkpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRoaXMubW9udGhCZWZvcmUoYW5vdGhlcikgfHxcbiAgICAgICAgICAgICh0aGlzLm1vbnRoU2FtZShhbm90aGVyKSAmJiB0aGlzLmRheSA8PSBhbm90aGVyLmRheSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQYXNzZWQgZGF0ZSBpcyB0aGUgc2FtZSBhcyBjdXJyZW50XG4gICAgICovXG4gICAgZGF5U2FtZShhbm90aGVyOiBUdWlEYXkpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubW9udGhTYW1lKGFub3RoZXIpICYmIHRoaXMuZGF5ID09PSBhbm90aGVyLmRheTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQYXNzZWQgZGF0ZSBpcyBlaXRoZXIgYmVmb3JlIG9yIHRoZSBzYW1lIGFzIGN1cnJlbnRcbiAgICAgKi9cbiAgICBkYXlTYW1lT3JBZnRlcihhbm90aGVyOiBUdWlEYXkpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRoaXMubW9udGhBZnRlcihhbm90aGVyKSB8fFxuICAgICAgICAgICAgKHRoaXMubW9udGhTYW1lKGFub3RoZXIpICYmIHRoaXMuZGF5ID49IGFub3RoZXIuZGF5KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFBhc3NlZCBkYXRlIGlzIGJlZm9yZSBjdXJyZW50XG4gICAgICovXG4gICAgZGF5QWZ0ZXIoYW5vdGhlcjogVHVpRGF5KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICB0aGlzLm1vbnRoQWZ0ZXIoYW5vdGhlcikgfHxcbiAgICAgICAgICAgICh0aGlzLm1vbnRoU2FtZShhbm90aGVyKSAmJiB0aGlzLmRheSA+IGFub3RoZXIuZGF5KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENsYW1waW5nIGRhdGUgYmV0d2VlbiB0d28gbGltaXRzXG4gICAgICpcbiAgICAgKiBAcGFyYW0gbWluXG4gICAgICogQHBhcmFtIG1heFxuICAgICAqIEByZXR1cm4gY2xhbXBlZCBkYXRlXG4gICAgICovXG4gICAgZGF5TGltaXQobWluOiBUdWlEYXkgfCBudWxsLCBtYXg6IFR1aURheSB8IG51bGwpOiBUdWlEYXkge1xuICAgICAgICBpZiAobWluICE9PSBudWxsICYmIHRoaXMuZGF5QmVmb3JlKG1pbikpIHtcbiAgICAgICAgICAgIHJldHVybiBtaW47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobWF4ICE9PSBudWxsICYmIHRoaXMuZGF5QWZ0ZXIobWF4KSkge1xuICAgICAgICAgICAgcmV0dXJuIG1heDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8vIFRPRE86IDMuMCBDb25zaWRlciByZW1vdmluZyBgYmFja3dhcmRzYCBvcHRpb25cbiAgICAvKipcbiAgICAgKiBJbW11dGFibHkgYWx0ZXJzIGN1cnJlbnQgZGF5IGJ5IHBhc3NlZCBvZmZzZXRcbiAgICAgKlxuICAgICAqIElmIHJlc3VsdGluZyBtb250aCBoYXMgbW9yZSBkYXlzIHRoYW4gb3JpZ2luYWwgb25lLCBkYXRlIGlzIHJvdW5kZWQgdG8gdGhlIG1heGltdW0gZGF5XG4gICAgICogaW4gdGhlIHJlc3VsdGluZyBtb250aC4gT2Zmc2V0IG9mIGRheXMgd2lsbCBiZSBjYWxjdWxhdGVkIGJhc2VkIG9uIHRoZSByZXN1bHRlZCB5ZWFyIGFuZCBtb250aFxuICAgICAqIHRvIG5vdCBpbnRlcmZlcmUgd2l0aCBwYXJlbnQgY2xhc3NlcyBtZXRob2RzXG4gICAgICpcbiAgICAgKiBAcGFyYW0gb2Zmc2V0XG4gICAgICogQHBhcmFtIGJhY2t3YXJkcyBzaGlmdCBkYXRlIGJhY2t3YXJkc1xuICAgICAqIEByZXR1cm4gbmV3IGRhdGUgb2JqZWN0IGFzIGEgcmVzdWx0IG9mIG9mZnNldHRpbmcgY3VycmVudFxuICAgICAqL1xuICAgIGFwcGVuZChcbiAgICAgICAge3llYXIgPSAwLCBtb250aCA9IDAsIGRheSA9IDB9OiBUdWlEYXlMaWtlLFxuICAgICAgICBiYWNrd2FyZHM6IGJvb2xlYW4gPSBmYWxzZSxcbiAgICApOiBUdWlEYXkge1xuICAgICAgICBpZiAoYmFja3dhcmRzKSB7XG4gICAgICAgICAgICB5ZWFyICo9IC0xO1xuICAgICAgICAgICAgbW9udGggKj0gLTE7XG4gICAgICAgICAgICBkYXkgKj0gLTE7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB0b3RhbE1vbnRocyA9ICh0aGlzLnllYXIgKyB5ZWFyKSAqIE1PTlRIU19JTl9ZRUFSICsgdGhpcy5tb250aCArIG1vbnRoO1xuICAgICAgICBsZXQgeWVhcnMgPSBNYXRoLmZsb29yKHRvdGFsTW9udGhzIC8gTU9OVEhTX0lOX1lFQVIpO1xuICAgICAgICBsZXQgbW9udGhzID0gdG90YWxNb250aHMgJSBNT05USFNfSU5fWUVBUjtcblxuICAgICAgICBsZXQgZGF5cyA9XG4gICAgICAgICAgICBNYXRoLm1pbihcbiAgICAgICAgICAgICAgICB0aGlzLmRheSxcbiAgICAgICAgICAgICAgICBUdWlNb250aC5nZXRNb250aERheXNDb3VudChtb250aHMsIFR1aVllYXIuaXNMZWFwWWVhcih5ZWFycykpLFxuICAgICAgICAgICAgKSArIGRheTtcblxuICAgICAgICB3aGlsZSAoZGF5cyA+IFR1aU1vbnRoLmdldE1vbnRoRGF5c0NvdW50KG1vbnRocywgVHVpWWVhci5pc0xlYXBZZWFyKHllYXJzKSkpIHtcbiAgICAgICAgICAgIGRheXMgLT0gVHVpTW9udGguZ2V0TW9udGhEYXlzQ291bnQobW9udGhzLCBUdWlZZWFyLmlzTGVhcFllYXIoeWVhcnMpKTtcblxuICAgICAgICAgICAgaWYgKG1vbnRocyA9PT0gVHVpTW9udGhOdW1iZXIuRGVjZW1iZXIpIHtcbiAgICAgICAgICAgICAgICB5ZWFycysrO1xuICAgICAgICAgICAgICAgIG1vbnRocyA9IFR1aU1vbnRoTnVtYmVyLkphbnVhcnk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG1vbnRocysrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgd2hpbGUgKGRheXMgPCBNSU5fREFZKSB7XG4gICAgICAgICAgICBpZiAobW9udGhzID09PSBUdWlNb250aE51bWJlci5KYW51YXJ5KSB7XG4gICAgICAgICAgICAgICAgeWVhcnMtLTtcbiAgICAgICAgICAgICAgICBtb250aHMgPSBUdWlNb250aE51bWJlci5EZWNlbWJlcjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbW9udGhzLS07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGRheXMgKz0gVHVpTW9udGguZ2V0TW9udGhEYXlzQ291bnQobW9udGhzLCBUdWlZZWFyLmlzTGVhcFllYXIoeWVhcnMpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBuZXcgVHVpRGF5KHllYXJzLCBtb250aHMsIGRheXMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgZm9ybWF0dGVkIHdob2xlIGRhdGVcbiAgICAgKi9cbiAgICBnZXRGb3JtYXR0ZWREYXkoZGF0ZUZvcm1hdDogVHVpRGF0ZU1vZGUsIHNlcGFyYXRvcjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgdHVpQXNzZXJ0LmFzc2VydChcbiAgICAgICAgICAgIHNlcGFyYXRvci5sZW5ndGggPT09IDEsXG4gICAgICAgICAgICAnU2VwYXJhdG9yIHNob3VsZCBjb25zaXN0IG9mIG9ubHkgMSBzeW1ib2wnLFxuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IGRkID0gdGhpcy5mb3JtYXR0ZWREYXlQYXJ0O1xuICAgICAgICBjb25zdCBtbSA9IHRoaXMuZm9ybWF0dGVkTW9udGhQYXJ0O1xuICAgICAgICBjb25zdCB5eXl5ID0gdGhpcy5mb3JtYXR0ZWRZZWFyO1xuXG4gICAgICAgIHN3aXRjaCAoZGF0ZUZvcm1hdCkge1xuICAgICAgICAgICAgY2FzZSAnWU1EJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gYCR7eXl5eX0ke3NlcGFyYXRvcn0ke21tfSR7c2VwYXJhdG9yfSR7ZGR9YDtcbiAgICAgICAgICAgIGNhc2UgJ01EWSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGAke21tfSR7c2VwYXJhdG9yfSR7ZGR9JHtzZXBhcmF0b3J9JHt5eXl5fWA7XG4gICAgICAgICAgICBjYXNlICdETVknOlxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gYCR7ZGR9JHtzZXBhcmF0b3J9JHttbX0ke3NlcGFyYXRvcn0ke3l5eXl9YDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHRvU3RyaW5nKGRhdGVGb3JtYXQ6IFR1aURhdGVNb2RlID0gJ0RNWScsIHNlcGFyYXRvcjogc3RyaW5nID0gJy4nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0Rm9ybWF0dGVkRGF5KGRhdGVGb3JtYXQsIHNlcGFyYXRvcik7XG4gICAgfVxuXG4gICAgdG9KU09OKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBgJHtzdXBlci50b0pTT04oKX0tJHt0aGlzLmZvcm1hdHRlZERheVBhcnR9YDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIG5hdGl2ZSB7QGxpbmsgRGF0ZX0gYmFzZWQgb24gbG9jYWwgdGltZSB6b25lXG4gICAgICovXG4gICAgdG9Mb2NhbE5hdGl2ZURhdGUoKTogRGF0ZSB7XG4gICAgICAgIHJldHVybiBuZXcgRGF0ZSh0aGlzLnllYXIsIHRoaXMubW9udGgsIHRoaXMuZGF5KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIG5hdGl2ZSB7QGxpbmsgRGF0ZX0gYmFzZWQgb24gVVRDXG4gICAgICovXG4gICAgdG9VdGNOYXRpdmVEYXRlKCk6IERhdGUge1xuICAgICAgICByZXR1cm4gbmV3IERhdGUoRGF0ZS5VVEModGhpcy55ZWFyLCB0aGlzLm1vbnRoLCB0aGlzLmRheSkpO1xuICAgIH1cbn1cbiJdfQ==
350
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF5LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHRhaWdhLXVpL2Nkay9kYXRlLXRpbWUvIiwic291cmNlcyI6WyJkYXkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUVoRCxPQUFPLEVBQ0gsbUJBQW1CLEVBQ25CLHFCQUFxQixFQUNyQixvQkFBb0IsR0FDdkIsTUFBTSwwQkFBMEIsQ0FBQztBQUdsQyxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDcEQsT0FBTyxFQUFDLE9BQU8sRUFBRSxvQkFBb0IsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBRXZFLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ2xELE9BQU8sRUFBQyxZQUFZLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBQyxNQUFNLGFBQWEsQ0FBQztBQUNsRSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sU0FBUyxDQUFDO0FBQ2pDLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxRQUFRLENBQUM7QUFFL0IsNkJBQTZCO0FBQzdCOztHQUVHO0FBQ0g7SUFBNEIsMEJBQVE7SUFDaEMsZ0JBQVksSUFBWSxFQUFFLEtBQWEsRUFBVyxHQUFXO1FBQTdELFlBQ0ksa0JBQU0sSUFBSSxFQUFFLEtBQUssQ0FBQyxTQUVyQjtRQUhpRCxTQUFHLEdBQUgsR0FBRyxDQUFRO1FBRXpELFNBQVMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7O0lBQzFELENBQUM7SUFFRDs7T0FFRztJQUNJLDBCQUFtQixHQUExQixVQUEyQixJQUFVO1FBQ2pDLE9BQU8sSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFF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QU0sQ0FBQztZQUN2RCxLQUFLLEtBQUssQ0FBQztZQUNYO2dCQUNJLE9BQU8sS0FBRyxFQUFFLEdBQUcsU0FBUyxHQUFHLEVBQUUsR0FBRyxTQUFTLEdBQUcsSUFBTSxDQUFDO1NBQzFEO0lBQ0wsQ0FBQztJQUVELHlCQUFRLEdBQVIsVUFBUyxVQUErQixFQUFFLFNBQXVCO1FBQXhELDJCQUFBLEVBQUEsa0JBQStCO1FBQUUsMEJBQUEsRUFBQSxlQUF1QjtRQUM3RCxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRCx1QkFBTSxHQUFOO1FBQ0ksT0FBVSxpQkFBTSxNQUFNLFdBQUUsU0FBSSxJQUFJLENBQUMsZ0JBQWtCLENBQUM7SUFDeEQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsa0NBQWlCLEdBQWpCO1FBQ0ksT0FBTyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFRDs7T0FFRztJQUNILGdDQUFlLEdBQWY7UUFDSSxPQUFPLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFDTCxhQUFDO0FBQUQsQ0FBQyxBQTVaRCxDQUE0QixRQUFRLEdBNFpuQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7dHVpQXNzZXJ0fSBmcm9tICdAdGFpZ2EtdWkvY2RrL2NsYXNzZXMnO1xuaW1wb3J0IHtUdWlEYXlPZldlZWssIFR1aU1vbnRoTnVtYmVyfSBmcm9tICdAdGFpZ2EtdWkvY2RrL2VudW1zJztcbmltcG9ydCB7XG4gICAgSW52YWxpZERheUV4Y2VwdGlvbixcbiAgICBJbnZhbGlkTW9udGhFeGNlcHRpb24sXG4gICAgSW52YWxpZFllYXJFeGNlcHRpb24sXG59IGZyb20gJ0B0YWlnYS11aS9jZGsvZXhjZXB0aW9ucyc7XG5pbXBvcnQge1R1aURheUxpa2V9IGZyb20gJ0B0YWlnYS11aS9jZGsvaW50ZXJmYWNlcyc7XG5pbXBvcnQge1R1aURhdGVNb2RlfSBmcm9tICdAdGFpZ2EtdWkvY2RrL3R5cGVzJztcbmltcG9ydCB7cGFkU3RhcnR9IGZyb20gJ0B0YWlnYS11aS9jZGsvdXRpbHMvZm9ybWF0JztcbmltcG9ydCB7aW5SYW5nZSwgbm9ybWFsaXplVG9JbnROdW1iZXJ9IGZyb20gJ0B0YWlnYS11aS9jZGsvdXRpbHMvbWF0aCc7XG5cbmltcG9ydCB7REFURV9GSUxMRVJfTEVOR1RIfSBmcm9tICcuL2RhdGUtZmlsbGVycyc7XG5pbXBvcnQge0RBWVNfSU5fV0VFSywgTUlOX0RBWSwgTU9OVEhTX0lOX1lFQVJ9IGZyb20gJy4vZGF0ZS10aW1lJztcbmltcG9ydCB7VHVpTW9udGh9IGZyb20gJy4vbW9udGgnO1xuaW1wb3J0IHtUdWlZZWFyfSBmcm9tICcuL3llYXInO1xuXG4vLyBUT0RPOiBMb2NhbGl6ZWQgZm9ybWF0dGluZ1xuLyoqXG4gKiBJbW11dGFibGUgZGF0ZSBvYmplY3QsIGNvbnNpc3Rpbmcgb2YgZGF5LCBtb250aCBhbmQgeWVhclxuICovXG5leHBvcnQgY2xhc3MgVHVpRGF5IGV4dGVuZHMgVHVpTW9udGgge1xuICAgIGNvbnN0cnVjdG9yKHllYXI6IG51bWJlciwgbW9udGg6IG51bWJlciwgcmVhZG9ubHkgZGF5OiBudW1iZXIpIHtcbiAgICAgICAgc3VwZXIoeWVhciwgbW9udGgpO1xuICAgICAgICB0dWlBc3NlcnQuYXNzZXJ0KFR1aURheS5pc1ZhbGlkRGF5KHllYXIsIG1vbnRoLCBkYXkpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIHtAbGluayBUdWlEYXl9IGZyb20gbmF0aXZlIHtAbGluayBEYXRlfSBiYXNlZCBvbiBsb2NhbCB0aW1lIHpvbmVcbiAgICAgKi9cbiAgICBzdGF0aWMgZnJvbUxvY2FsTmF0aXZlRGF0ZShkYXRlOiBEYXRlKTogVHVpRGF5IHtcbiAgICAgICAgcmV0dXJuIG5ldyBUdWlEYXkoZGF0ZS5nZXRGdWxsWWVhcigpLCBkYXRlLmdldE1vbnRoKCksIGRhdGUuZ2V0RGF0ZSgpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIHtAbGluayBUdWlEYXl9IGZyb20gbmF0aXZlIHtAbGluayBEYXRlfSB1c2luZyBVVENcbiAgICAgKi9cbiAgICBzdGF0aWMgZnJvbVV0Y05hdGl2ZURhdGUoZGF0ZTogRGF0ZSk6IFR1aURheSB7XG4gICAgICAgIHJldHVybiBuZXcgVHVpRGF5KGRhdGUuZ2V0VVRDRnVsbFllYXIoKSwgZGF0ZS5nZXRVVENNb250aCgpLCBkYXRlLmdldFVUQ0RhdGUoKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2sgdmFsaWRpdHkgb2YgeWVhciwgbW9udGggYW5kIGRheVxuICAgICAqXG4gICAgICogQHBhcmFtIHllYXJcbiAgICAgKiBAcGFyYW0gbW9udGhcbiAgICAgKiBAcGFyYW0gZGF5XG4gICAgICogQHJldHVybiBib29sZWFuIHZhbGlkaXR5XG4gICAgICovXG4gICAgc3RhdGljIGlzVmFsaWREYXkoeWVhcjogbnVtYmVyLCBtb250aDogbnVtYmVyLCBkYXk6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgVHVpTW9udGguaXNWYWxpZE1vbnRoKHllYXIsIG1vbnRoKSAmJlxuICAgICAgICAgICAgTnVtYmVyLmlzSW50ZWdlcihkYXkpICYmXG4gICAgICAgICAgICBpblJhbmdlKFxuICAgICAgICAgICAgICAgIGRheSxcbiAgICAgICAgICAgICAgICBNSU5fREFZLFxuICAgICAgICAgICAgICAgIFR1aU1vbnRoLmdldE1vbnRoRGF5c0NvdW50KG1vbnRoLCBUdWlZZWFyLmlzTGVhcFllYXIoeWVhcikpICsgMSxcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCBET05UIFVTRSBJVCAod2lsbCBiZSBkZWxldGVkIHNvb24pXG4gICAgICpcbiAgICAgKiBDYWxjdWxhdGVkIGRheSBvbiBhIGNhbGVuZGFyIGdyaWRcbiAgICAgKlxuICAgICAqIEBwYXJhbSBtb250aFxuICAgICAqIEBwYXJhbSByb3cgcm93IGluIGEgY2FsZW5kYXJcbiAgICAgKiBAcGFyYW0gY29sIGNvbHVtbiBpbiBhIGNhbGVuZGFyXG4gICAgICogQHJldHVybiByZXN1bHRpbmcgZGF5IG9uIHRoZXNlIGNvb3JkaW5hdGVzIChjb3VsZCBleGNlZWQgcGFzc2VkIG1vbnRoKVxuICAgICAqL1xuICAgIHN0YXRpYyBnZXREYXlGcm9tTW9udGhSb3dDb2wobW9udGg6IFR1aU1vbnRoLCByb3c6IG51bWJlciwgY29sOiBudW1iZXIpOiBUdWlEYXkge1xuICAgICAgICB0dWlBc3NlcnQuYXNzZXJ0KE51bWJlci5pc0ludGVnZXIocm93KSk7XG4gICAgICAgIHR1aUFzc2VydC5hc3NlcnQoaW5SYW5nZShyb3csIDAsIDYpKTtcbiAgICAgICAgdHVpQXNzZXJ0LmFzc2VydChOdW1iZXIuaXNJbnRlZ2VyKGNvbCkpO1xuICAgICAgICB0dWlBc3NlcnQuYXNzZXJ0KGluUmFuZ2UoY29sLCAwLCBEQVlTX0lOX1dFRUspKTtcblxuICAgICAgICBsZXQgZGF5ID0gcm93ICogREFZU19JTl9XRUVLICsgY29sIC0gbW9udGgubW9udGhTdGFydERheXNPZmZzZXQgKyAxO1xuXG4gICAgICAgIGlmIChkYXkgPiBtb250aC5kYXlzQ291bnQpIHtcbiAgICAgICAgICAgIGRheSA9IGRheSAtIG1vbnRoLmRheXNDb3VudDtcbiAgICAgICAgICAgIG1vbnRoID0gbW9udGguYXBwZW5kKHttb250aDogMX0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGRheSA8PSAwKSB7XG4gICAgICAgICAgICBtb250aCA9IG1vbnRoLmFwcGVuZCh7bW9udGg6IC0xfSk7XG4gICAgICAgICAgICBkYXkgPSBtb250aC5kYXlzQ291bnQgKyBkYXk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbmV3IFR1aURheShtb250aC55ZWFyLCBtb250aC5tb250aCwgZGF5KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDdXJyZW50IGRheSBiYXNlZCBvbiBsb2NhbCB0aW1lIHpvbmVcbiAgICAgKi9cbiAgICBzdGF0aWMgY3VycmVudExvY2FsKCk6IFR1aURheSB7XG4gICAgICAgIGNvbnN0IG5hdGl2ZURhdGUgPSBuZXcgRGF0ZSgpO1xuICAgICAgICBjb25zdCB5ZWFyID0gbmF0aXZlRGF0ZS5nZXRGdWxsWWVhcigpO1xuICAgICAgICBjb25zdCBtb250aCA9IG5hdGl2ZURhdGUuZ2V0TW9udGgoKTtcbiAgICAgICAgY29uc3QgZGF5ID0gbmF0aXZlRGF0ZS5nZXREYXRlKCk7XG5cbiAgICAgICAgcmV0dXJuIG5ldyBUdWlEYXkoeWVhciwgbW9udGgsIGRheSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBjdXJyZW50IGRheSBiYXNlZCBvbiBVVENcbiAgICAgKi9cbiAgICBzdGF0aWMgY3VycmVudFV0YygpOiBUdWlEYXkge1xuICAgICAgICBjb25zdCBuYXRpdmVEYXRlID0gbmV3IERhdGUoKTtcbiAgICAgICAgY29uc3QgeWVhciA9IG5hdGl2ZURhdGUuZ2V0VVRDRnVsbFllYXIoKTtcbiAgICAgICAgY29uc3QgbW9udGggPSBuYXRpdmVEYXRlLmdldFVUQ01vbnRoKCk7XG4gICAgICAgIGNvbnN0IGRheSA9IG5hdGl2ZURhdGUuZ2V0VVRDRGF0ZSgpO1xuXG4gICAgICAgIHJldHVybiBuZXcgVHVpRGF5KHllYXIsIG1vbnRoLCBkYXkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhbGN1bGF0ZXMge0BsaW5rIFR1aURheX0gbm9ybWFsaXppbmcgeWVhciwgbW9udGggYW5kIGRheS4ge0BsaW5rIE5hTn0gaXMgdHVybmVkIGludG8gbWluaW1hbCB2YWx1ZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB5ZWFyIGFueSB5ZWFyIHZhbHVlLCBpbmNsdWRpbmcgaW52YWxpZFxuICAgICAqIEBwYXJhbSBtb250aCBhbnkgbW9udGggdmFsdWUsIGluY2x1ZGluZyBpbnZhbGlkIChtb250aHMgc3RhcnQgd2l0aCAwKVxuICAgICAqIEBwYXJhbSBkYXkgYW55IGRheSB2YWx1ZSwgaW5jbHVkaW5nIGludmFsaWRcbiAgICAgKiBAcmV0dXJuIG5vcm1hbGl6ZWQgZGF0ZVxuICAgICAqL1xuICAgIHN0YXRpYyBub3JtYWxpemVPZih5ZWFyOiBudW1iZXIsIG1vbnRoOiBudW1iZXIsIGRheTogbnVtYmVyKTogVHVpRGF5IHtcbiAgICAgICAgY29uc3Qgbm9ybWFsaXplZFllYXIgPSBUdWlZZWFyLm5vcm1hbGl6ZVllYXJQYXJ0KHllYXIpO1xuICAgICAgICBjb25zdCBub3JtYWxpemVkTW9udGggPSBUdWlNb250aC5ub3JtYWxpemVNb250aFBhcnQobW9udGgpO1xuICAgICAgICBjb25zdCBub3JtYWxpemVkRGF5ID0gVHVpRGF5Lm5vcm1hbGl6ZURheVBhcnQoXG4gICAgICAgICAgICBkYXksXG4gICAgICAgICAgICBub3JtYWxpemVkTW9udGgsXG4gICAgICAgICAgICBub3JtYWxpemVkWWVhcixcbiAgICAgICAgKTtcblxuICAgICAgICByZXR1cm4gbmV3IFR1aURheShub3JtYWxpemVkWWVhciwgbm9ybWFsaXplZE1vbnRoLCBub3JtYWxpemVkRGF5KTtcbiAgICB9XG5cbiAgICBzdGF0aWMgbGVuZ3RoQmV0d2Vlbihmcm9tOiBUdWlEYXksIHRvOiBUdWlEYXkpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gTWF0aC5yb3VuZChcbiAgICAgICAgICAgICh0by50b0xvY2FsTmF0aXZlRGF0ZSgpLmdldFRpbWUoKSAtIGZyb20udG9Mb2NhbE5hdGl2ZURhdGUoKS5nZXRUaW1lKCkpIC9cbiAgICAgICAgICAgICAgICAoMTAwMCAqIDYwICogNjAgKiAyNCksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgc3RhdGljIHBhcnNlUmF3RGF0ZVN0cmluZyhcbiAgICAgICAgZGF0ZTogc3RyaW5nLFxuICAgICAgICBkYXRlTW9kZTogVHVpRGF0ZU1vZGUgPSBgRE1ZYCxcbiAgICApOiB7ZGF5OiBudW1iZXI7IG1vbnRoOiBudW1iZXI7IHllYXI6IG51bWJlcn0ge1xuICAgICAgICB0dWlBc3NlcnQuYXNzZXJ0KFxuICAgICAgICAgICAgZGF0ZS5sZW5ndGggPT09IERBVEVfRklMTEVSX0xFTkdUSCxcbiAgICAgICAgICAgIGBbcGFyc2VSYXdEYXRlU3RyaW5nXTogd3JvbmcgZGF0ZSBzdHJpbmcgbGVuZ3RoYCxcbiAgICAgICAgKTtcblxuICAgICAgICBzd2l0Y2ggKGRhdGVNb2RlKSB7XG4gICAgICAgICAgICBjYXNlIGBZTURgOlxuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIGRheTogcGFyc2VJbnQoZGF0ZS5zbGljZSg4LCAxMCksIDEwKSxcbiAgICAgICAgICAgICAgICAgICAgbW9udGg6IHBhcnNlSW50KGRhdGUuc2xpY2UoNSwgNyksIDEwKSAtIDEsXG4gICAgICAgICAgICAgICAgICAgIHllYXI6IHBhcnNlSW50KGRhdGUuc2xpY2UoMCwgNCksIDEwKSxcbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBjYXNlIGBNRFlgOlxuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIGRheTogcGFyc2VJbnQoZGF0ZS5zbGljZSgzLCA1KSwgMTApLFxuICAgICAgICAgICAgICAgICAgICBtb250aDogcGFyc2VJbnQoZGF0ZS5zbGljZSgwLCAyKSwgMTApIC0gMSxcbiAgICAgICAgICAgICAgICAgICAgeWVhcjogcGFyc2VJbnQoZGF0ZS5zbGljZSg2LCAxMCksIDEwKSxcbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgY2FzZSBgRE1ZYDpcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICBkYXk6IHBhcnNlSW50KGRhdGUuc2xpY2UoMCwgMiksIDEwKSxcbiAgICAgICAgICAgICAgICAgICAgbW9udGg6IHBhcnNlSW50KGRhdGUuc2xpY2UoMywgNSksIDEwKSAtIDEsXG4gICAgICAgICAgICAgICAgICAgIHllYXI6IHBhcnNlSW50KGRhdGUuc2xpY2UoNiwgMTApLCAxMCksXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFRPRE86IE1vdmUgbW9udGggYW5kIHllYXIgcmVsYXRlZCBjb2RlIGNvcnJlc3BvbmRpbmcgY2xhc3Nlc1xuICAgIC8qKlxuICAgICAqIFBhcnNpbmcgYSBzdHJpbmcgd2l0aCBkYXRlIHdpdGggbm9ybWFsaXphdGlvblxuICAgICAqXG4gICAgICogQHBhcmFtIHJhd0RhdGUgZGF0ZSBzdHJpbmdcbiAgICAgKiBAcGFyYW0gZGF0ZU1vZGUgZGF0ZSBmb3JtYXQgb2YgdGhlIGRhdGUgc3RyaW5nIChETVkgfCBNRFkgfCBZTUQpXG4gICAgICogQHJldHVybiBub3JtYWxpemVkIGRhdGVcbiAgICAgKi9cbiAgICBzdGF0aWMgbm9ybWFsaXplUGFyc2UocmF3RGF0ZTogc3RyaW5nLCBkYXRlTW9kZTogVHVpRGF0ZU1vZGUgPSBgRE1ZYCk6IFR1aURheSB7XG4gICAgICAgIGNvbnN0IHtkYXksIG1vbnRoLCB5ZWFyfSA9IHRoaXMucGFyc2VSYXdEYXRlU3RyaW5nKHJhd0RhdGUsIGRhdGVNb2RlKTtcblxuICAgICAgICByZXR1cm4gVHVpRGF5Lm5vcm1hbGl6ZU9mKHllYXIsIG1vbnRoLCBkYXkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFBhcnNpbmcgYSBkYXRlIHN0cmluZ2lmaWVkIGluIGEgdG9KU09OIGZvcm1hdFxuICAgICAqIEBwYXJhbSB5ZWFyTW9udGhEYXlTdHJpbmcgZGF0ZSBzdHJpbmcgaW4gZm9ybWF0IG9mIFlZWVktTU0tRERcbiAgICAgKiBAcmV0dXJuIGRhdGVcbiAgICAgKiBAdGhyb3dzIGV4Y2VwdGlvbnMgaWYgYW55IHBhcnQgb2YgdGhlIGRhdGUgaXMgaW52YWxpZFxuICAgICAqL1xuICAgIHN0YXRpYyBqc29uUGFyc2UoeWVhck1vbnRoRGF5U3RyaW5nOiBzdHJpbmcpOiBUdWlEYXkge1xuICAgICAgICBjb25zdCB7ZGF5LCBtb250aCwgeWVhcn0gPSB0aGlzLnBhcnNlUmF3RGF0ZVN0cmluZyh5ZWFyTW9udGhEYXlTdHJpbmcsIGBZTURgKTtcblxuICAgICAgICBpZiAoIVR1aVllYXIuaXNWYWxpZFllYXIoeWVhcikpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkWWVhckV4Y2VwdGlvbih5ZWFyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghVHVpTW9udGguaXNWYWxpZE1vbnRoKHllYXIsIG1vbnRoKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRNb250aEV4Y2VwdGlvbihtb250aCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoXG4gICAgICAgICAgICAhTnVtYmVyLmlzSW50ZWdlcihkYXkpIHx8XG4gICAgICAgICAgICAhaW5SYW5nZShcbiAgICAgICAgICAgICAgICBkYXksXG4gICAgICAgICAgICAgICAgTUlOX0RBWSxcbiAgICAgICAgICAgICAgICBUdWlNb250aC5nZXRNb250aERheXNDb3VudChtb250aCwgVHVpWWVhci5pc0xlYXBZZWFyKHllYXIpKSArIDEsXG4gICAgICAgICAgICApXG4gICAgICAgICkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWREYXlFeGNlcHRpb24oZGF5KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBuZXcgVHVpRGF5KHllYXIsIG1vbnRoLCBkYXkpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBzdGF0aWMgbm9ybWFsaXplRGF5UGFydChkYXk6IG51bWJlciwgbW9udGg6IG51bWJlciwgeWVhcjogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgICAgdHVpQXNzZXJ0LmFzc2VydChUdWlNb250aC5pc1ZhbGlkTW9udGgoeWVhciwgbW9udGgpKTtcblxuICAgICAgICBjb25zdCBtb250aERheXNDb3VudCA9IFR1aU1vbnRoLmdldE1vbnRoRGF5c0NvdW50KFxuICAgICAgICAgICAgbW9udGgsXG4gICAgICAgICAgICBUdWlZZWFyLmlzTGVhcFllYXIoeWVhciksXG4gICAgICAgICk7XG5cbiAgICAgICAgcmV0dXJuIG5vcm1hbGl6ZVRvSW50TnVtYmVyKGRheSwgMSwgbW9udGhEYXlzQ291bnQpO1xuICAgIH1cblxuICAgIGdldCBmb3JtYXR0ZWREYXlQYXJ0KCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBwYWRTdGFydChTdHJpbmcodGhpcy5kYXkpLCAyLCBgMGApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIHVzZSB7QGxpbmsgZ2V0Rm9ybWF0dGVkRGF5fSBpbnN0ZWFkXG4gICAgICogRm9ybWF0dGVkIHdob2xlIGRhdGVcbiAgICAgKi9cbiAgICBnZXQgZm9ybWF0dGVkRGF5KCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBgJHt0aGlzLmZvcm1hdHRlZERheVBhcnR9LiR7dGhpcy5mb3JtYXR0ZWRNb250aH1gO1xuICAgIH1cblxuICAgIGdldCBpc1dlZWtlbmQoKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IGRheU9mV2VlayA9IHRoaXMuZGF5T2ZXZWVrKGZhbHNlKTtcblxuICAgICAgICByZXR1cm4gZGF5T2ZXZWVrID09PSBUdWlEYXlPZldlZWsuU2F0dXJkYXkgfHwgZGF5T2ZXZWVrID09PSBUdWlEYXlPZldlZWsuU3VuZGF5O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgZGF5IG9mIHdlZWtcbiAgICAgKlxuICAgICAqIEBwYXJhbSBzdGFydEZyb21Nb25kYXkgd2hldGhlciB3ZWVrIHN0YXJ0cyBmcm9tIE1vbmRheSBhbmQgbm90IGZyb20gU3VuZGF5XG4gICAgICogQHJldHVybiBkYXkgb2Ygd2VlayAoZnJvbSAwIHRvIDYpXG4gICAgICovXG4gICAgZGF5T2ZXZWVrKHN0YXJ0RnJvbU1vbmRheTogYm9vbGVhbiA9IHRydWUpOiBudW1iZXIge1xuICAgICAgICBjb25zdCBkYXlPZldlZWsgPSBzdGFydEZyb21Nb25kYXlcbiAgICAgICAgICAgID8gdGhpcy50b0xvY2FsTmF0aXZlRGF0ZSgpLmdldERheSgpIC0gMVxuICAgICAgICAgICAgOiB0aGlzLnRvTG9jYWxOYXRpdmVEYXRlKCkuZ2V0RGF5KCk7XG5cbiAgICAgICAgcmV0dXJuIGRheU9mV2VlayA8IDAgPyA2IDogZGF5T2ZXZWVrO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFBhc3NlZCBkYXRlIGlzIGFmdGVyIGN1cnJlbnRcbiAgICAgKi9cbiAgICBkYXlCZWZvcmUoYW5vdGhlcjogVHVpRGF5KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICB0aGlzLm1vbnRoQmVmb3JlKGFub3RoZXIpIHx8XG4gICAgICAgICAgICAodGhpcy5tb250aFNhbWUoYW5vdGhlcikgJiYgdGhpcy5kYXkgPCBhbm90aGVyLmRheSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQYXNzZWQgZGF0ZSBpcyBhZnRlciBvciBlcXVhbHMgdG8gY3VycmVudFxuICAgICAqL1xuICAgIGRheVNhbWVPckJlZm9yZShhbm90aGVyOiBUdWlEYXkpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRoaXMubW9udGhCZWZvcmUoYW5vdGhlcikgfHxcbiAgICAgICAgICAgICh0aGlzLm1vbnRoU2FtZShhbm90aGVyKSAmJiB0aGlzLmRheSA8PSBhbm90aGVyLmRheSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQYXNzZWQgZGF0ZSBpcyB0aGUgc2FtZSBhcyBjdXJyZW50XG4gICAgICovXG4gICAgZGF5U2FtZShhbm90aGVyOiBUdWlEYXkpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubW9udGhTYW1lKGFub3RoZXIpICYmIHRoaXMuZGF5ID09PSBhbm90aGVyLmRheTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQYXNzZWQgZGF0ZSBpcyBlaXRoZXIgYmVmb3JlIG9yIHRoZSBzYW1lIGFzIGN1cnJlbnRcbiAgICAgKi9cbiAgICBkYXlTYW1lT3JBZnRlcihhbm90aGVyOiBUdWlEYXkpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRoaXMubW9udGhBZnRlcihhbm90aGVyKSB8fFxuICAgICAgICAgICAgKHRoaXMubW9udGhTYW1lKGFub3RoZXIpICYmIHRoaXMuZGF5ID49IGFub3RoZXIuZGF5KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFBhc3NlZCBkYXRlIGlzIGJlZm9yZSBjdXJyZW50XG4gICAgICovXG4gICAgZGF5QWZ0ZXIoYW5vdGhlcjogVHVpRGF5KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICB0aGlzLm1vbnRoQWZ0ZXIoYW5vdGhlcikgfHxcbiAgICAgICAgICAgICh0aGlzLm1vbnRoU2FtZShhbm90aGVyKSAmJiB0aGlzLmRheSA+IGFub3RoZXIuZGF5KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENsYW1waW5nIGRhdGUgYmV0d2VlbiB0d28gbGltaXRzXG4gICAgICpcbiAgICAgKiBAcGFyYW0gbWluXG4gICAgICogQHBhcmFtIG1heFxuICAgICAqIEByZXR1cm4gY2xhbXBlZCBkYXRlXG4gICAgICovXG4gICAgZGF5TGltaXQobWluOiBUdWlEYXkgfCBudWxsLCBtYXg6IFR1aURheSB8IG51bGwpOiBUdWlEYXkge1xuICAgICAgICBpZiAobWluICE9PSBudWxsICYmIHRoaXMuZGF5QmVmb3JlKG1pbikpIHtcbiAgICAgICAgICAgIHJldHVybiBtaW47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobWF4ICE9PSBudWxsICYmIHRoaXMuZGF5QWZ0ZXIobWF4KSkge1xuICAgICAgICAgICAgcmV0dXJuIG1heDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8vIFRPRE86IDMuMCBDb25zaWRlciByZW1vdmluZyBgYmFja3dhcmRzYCBvcHRpb25cbiAgICAvKipcbiAgICAgKiBJbW11dGFibHkgYWx0ZXJzIGN1cnJlbnQgZGF5IGJ5IHBhc3NlZCBvZmZzZXRcbiAgICAgKlxuICAgICAqIElmIHJlc3VsdGluZyBtb250aCBoYXMgbW9yZSBkYXlzIHRoYW4gb3JpZ2luYWwgb25lLCBkYXRlIGlzIHJvdW5kZWQgdG8gdGhlIG1heGltdW0gZGF5XG4gICAgICogaW4gdGhlIHJlc3VsdGluZyBtb250aC4gT2Zmc2V0IG9mIGRheXMgd2lsbCBiZSBjYWxjdWxhdGVkIGJhc2VkIG9uIHRoZSByZXN1bHRlZCB5ZWFyIGFuZCBtb250aFxuICAgICAqIHRvIG5vdCBpbnRlcmZlcmUgd2l0aCBwYXJlbnQgY2xhc3NlcyBtZXRob2RzXG4gICAgICpcbiAgICAgKiBAcGFyYW0gb2Zmc2V0XG4gICAgICogQHBhcmFtIGJhY2t3YXJkcyBzaGlmdCBkYXRlIGJhY2t3YXJkc1xuICAgICAqIEByZXR1cm4gbmV3IGRhdGUgb2JqZWN0IGFzIGEgcmVzdWx0IG9mIG9mZnNldHRpbmcgY3VycmVudFxuICAgICAqL1xuICAgIGFwcGVuZChcbiAgICAgICAge3llYXIgPSAwLCBtb250aCA9IDAsIGRheSA9IDB9OiBUdWlEYXlMaWtlLFxuICAgICAgICBiYWNrd2FyZHM6IGJvb2xlYW4gPSBmYWxzZSxcbiAgICApOiBUdWlEYXkge1xuICAgICAgICBpZiAoYmFja3dhcmRzKSB7XG4gICAgICAgICAgICB5ZWFyICo9IC0xO1xuICAgICAgICAgICAgbW9udGggKj0gLTE7XG4gICAgICAgICAgICBkYXkgKj0gLTE7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB0b3RhbE1vbnRocyA9ICh0aGlzLnllYXIgKyB5ZWFyKSAqIE1PTlRIU19JTl9ZRUFSICsgdGhpcy5tb250aCArIG1vbnRoO1xuICAgICAgICBsZXQgeWVhcnMgPSBNYXRoLmZsb29yKHRvdGFsTW9udGhzIC8gTU9OVEhTX0lOX1lFQVIpO1xuICAgICAgICBsZXQgbW9udGhzID0gdG90YWxNb250aHMgJSBNT05USFNfSU5fWUVBUjtcblxuICAgICAgICBsZXQgZGF5cyA9XG4gICAgICAgICAgICBNYXRoLm1pbihcbiAgICAgICAgICAgICAgICB0aGlzLmRheSxcbiAgICAgICAgICAgICAgICBUdWlNb250aC5nZXRNb250aERheXNDb3VudChtb250aHMsIFR1aVllYXIuaXNMZWFwWWVhcih5ZWFycykpLFxuICAgICAgICAgICAgKSArIGRheTtcblxuICAgICAgICB3aGlsZSAoZGF5cyA+IFR1aU1vbnRoLmdldE1vbnRoRGF5c0NvdW50KG1vbnRocywgVHVpWWVhci5pc0xlYXBZZWFyKHllYXJzKSkpIHtcbiAgICAgICAgICAgIGRheXMgLT0gVHVpTW9udGguZ2V0TW9udGhEYXlzQ291bnQobW9udGhzLCBUdWlZZWFyLmlzTGVhcFllYXIoeWVhcnMpKTtcblxuICAgICAgICAgICAgaWYgKG1vbnRocyA9PT0gVHVpTW9udGhOdW1iZXIuRGVjZW1iZXIpIHtcbiAgICAgICAgICAgICAgICB5ZWFycysrO1xuICAgICAgICAgICAgICAgIG1vbnRocyA9IFR1aU1vbnRoTnVtYmVyLkphbnVhcnk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG1vbnRocysrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgd2hpbGUgKGRheXMgPCBNSU5fREFZKSB7XG4gICAgICAgICAgICBpZiAobW9udGhzID09PSBUdWlNb250aE51bWJlci5KYW51YXJ5KSB7XG4gICAgICAgICAgICAgICAgeWVhcnMtLTtcbiAgICAgICAgICAgICAgICBtb250aHMgPSBUdWlNb250aE51bWJlci5EZWNlbWJlcjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbW9udGhzLS07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGRheXMgKz0gVHVpTW9udGguZ2V0TW9udGhEYXlzQ291bnQobW9udGhzLCBUdWlZZWFyLmlzTGVhcFllYXIoeWVhcnMpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBuZXcgVHVpRGF5KHllYXJzLCBtb250aHMsIGRheXMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgZm9ybWF0dGVkIHdob2xlIGRhdGVcbiAgICAgKi9cbiAgICBnZXRGb3JtYXR0ZWREYXkoZGF0ZUZvcm1hdDogVHVpRGF0ZU1vZGUsIHNlcGFyYXRvcjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgdHVpQXNzZXJ0LmFzc2VydChcbiAgICAgICAgICAgIHNlcGFyYXRvci5sZW5ndGggPT09IDEsXG4gICAgICAgICAgICBgU2VwYXJhdG9yIHNob3VsZCBjb25zaXN0IG9mIG9ubHkgMSBzeW1ib2xgLFxuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IGRkID0gdGhpcy5mb3JtYXR0ZWREYXlQYXJ0O1xuICAgICAgICBjb25zdCBtbSA9IHRoaXMuZm9ybWF0dGVkTW9udGhQYXJ0O1xuICAgICAgICBjb25zdCB5eXl5ID0gdGhpcy5mb3JtYXR0ZWRZZWFyO1xuXG4gICAgICAgIHN3aXRjaCAoZGF0ZUZvcm1hdCkge1xuICAgICAgICAgICAgY2FzZSBgWU1EYDpcbiAgICAgICAgICAgICAgICByZXR1cm4gYCR7eXl5eX0ke3NlcGFyYXRvcn0ke21tfSR7c2VwYXJhdG9yfSR7ZGR9YDtcbiAgICAgICAgICAgIGNhc2UgYE1EWWA6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGAke21tfSR7c2VwYXJhdG9yfSR7ZGR9JHtzZXBhcmF0b3J9JHt5eXl5fWA7XG4gICAgICAgICAgICBjYXNlIGBETVlgOlxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gYCR7ZGR9JHtzZXBhcmF0b3J9JHttbX0ke3NlcGFyYXRvcn0ke3l5eXl9YDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHRvU3RyaW5nKGRhdGVGb3JtYXQ6IFR1aURhdGVNb2RlID0gYERNWWAsIHNlcGFyYXRvcjogc3RyaW5nID0gYC5gKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0Rm9ybWF0dGVkRGF5KGRhdGVGb3JtYXQsIHNlcGFyYXRvcik7XG4gICAgfVxuXG4gICAgdG9KU09OKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBgJHtzdXBlci50b0pTT04oKX0tJHt0aGlzLmZvcm1hdHRlZERheVBhcnR9YDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIG5hdGl2ZSB7QGxpbmsgRGF0ZX0gYmFzZWQgb24gbG9jYWwgdGltZSB6b25lXG4gICAgICovXG4gICAgdG9Mb2NhbE5hdGl2ZURhdGUoKTogRGF0ZSB7XG4gICAgICAgIHJldHVybiBuZXcgRGF0ZSh0aGlzLnllYXIsIHRoaXMubW9udGgsIHRoaXMuZGF5KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIG5hdGl2ZSB7QGxpbmsgRGF0ZX0gYmFzZWQgb24gVVRDXG4gICAgICovXG4gICAgdG9VdGNOYXRpdmVEYXRlKCk6IERhdGUge1xuICAgICAgICByZXR1cm4gbmV3IERhdGUoRGF0ZS5VVEModGhpcy55ZWFyLCB0aGlzLm1vbnRoLCB0aGlzLmRheSkpO1xuICAgIH1cbn1cbiJdfQ==
@@ -76,7 +76,7 @@ var TuiMonth = /** @class */ (function (_super) {
76
76
  };
77
77
  Object.defineProperty(TuiMonth.prototype, "formattedMonthPart", {
78
78
  get: function () {
79
- return padStart(String(this.month + 1), 2, '0');
79
+ return padStart(String(this.month + 1), 2, "0");
80
80
  },
81
81
  enumerable: true,
82
82
  configurable: true
@@ -206,4 +206,4 @@ var TuiMonth = /** @class */ (function (_super) {
206
206
  return TuiMonth;
207
207
  }(TuiYear));
208
208
  export { TuiMonth };
209
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9udGguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AdGFpZ2EtdWkvY2RrL2RhdGUtdGltZS8iLCJzb3VyY2VzIjpbIm1vbnRoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFHaEQsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQ3BELE9BQU8sRUFBQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUV2RSxPQUFPLEVBQUMsWUFBWSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFDLE1BQU0sYUFBYSxDQUFDO0FBQy9FLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxRQUFRLENBQUM7QUFFL0I7O0dBRUc7QUFDSDtJQUE4Qiw0QkFBTztJQUNqQzs7O09BR0c7SUFDSCxrQkFBWSxJQUFZLEVBQVcsS0FBYTtRQUFoRCxZQUNJLGtCQUFNLElBQUksQ0FBQyxTQUVkO1FBSGtDLFdBQUssR0FBTCxLQUFLLENBQVE7UUFFNUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDOztJQUN6RCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxxQkFBWSxHQUFuQixVQUFvQixJQUFZLEVBQUUsS0FBYTtRQUMzQyxPQUFPLE9BQU8sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksUUFBUSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3pFLENBQUM7SUFFRDs7T0FFRztJQUNJLDBCQUFpQixHQUF4QixVQUF5QixLQUFhLEVBQUUsVUFBbUI7UUFDdkQsU0FBUyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUVuRCxRQUFRLEtBQUssRUFBRTtZQUNYO2dCQUNJLE9BQU8sVUFBVSxDQUFDLENB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InNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7dHVpQXNzZXJ0fSBmcm9tICdAdGFpZ2EtdWkvY2RrL2NsYXNzZXMnO1xuaW1wb3J0IHtUdWlNb250aE51bWJlcn0gZnJvbSAnQHRhaWdhLXVpL2Nkay9lbnVtcyc7XG5pbXBvcnQge1R1aU1vbnRoTGlrZX0gZnJvbSAnQHRhaWdhLXVpL2Nkay9pbnRlcmZhY2VzJztcbmltcG9ydCB7cGFkU3RhcnR9IGZyb20gJ0B0YWlnYS11aS9jZGsvdXRpbHMvZm9ybWF0JztcbmltcG9ydCB7aW5SYW5nZSwgbm9ybWFsaXplVG9JbnROdW1iZXJ9IGZyb20gJ0B0YWlnYS11aS9jZGsvdXRpbHMvbWF0aCc7XG5cbmltcG9ydCB7REFZU19JTl9XRUVLLCBNQVhfTU9OVEgsIE1JTl9NT05USCwgTU9OVEhTX0lOX1lFQVJ9IGZyb20gJy4vZGF0ZS10aW1lJztcbmltcG9ydCB7VHVpWWVhcn0gZnJvbSAnLi95ZWFyJztcblxuLyoqXG4gKiBJbW11dGFibGUgb2JqZWN0IGNvbnNpc3Rpbmcgb2YgeWVhciBhbmQgbW9udGhcbiAqL1xuZXhwb3J0IGNsYXNzIFR1aU1vbnRoIGV4dGVuZHMgVHVpWWVhciBpbXBsZW1lbnRzIFR1aU1vbnRoTGlrZSB7XG4gICAgLyoqXG4gICAgICogQHBhcmFtIHllYXJcbiAgICAgKiBAcGFyYW0gbW9udGggKHN0YXJ0aW5nIHdpdGggMClcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3Rvcih5ZWFyOiBudW1iZXIsIHJlYWRvbmx5IG1vbnRoOiBudW1iZXIpIHtcbiAgICAgICAgc3VwZXIoeWVhcik7XG4gICAgICAgIHR1aUFzc2VydC5hc3NlcnQoVHVpTW9udGguaXNWYWxpZE1vbnRoKHllYXIsIG1vbnRoKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGVzdHMgbW9udGggYW5kIHllYXIgZm9yIHZhbGlkaXR5XG4gICAgICovXG4gICAgc3RhdGljIGlzVmFsaWRNb250aCh5ZWFyOiBudW1iZXIsIG1vbnRoOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIFR1aVllYXIuaXNWYWxpZFllYXIoeWVhcikgJiYgVHVpTW9udGguaXNWYWxpZE1vbnRoUGFydChtb250aCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBudW1iZXIgb2YgZGF5cyBpbiBhIG1vbnRoXG4gICAgICovXG4gICAgc3RhdGljIGdldE1vbnRoRGF5c0NvdW50KG1vbnRoOiBudW1iZXIsIGlzTGVhcFllYXI6IGJvb2xlYW4pOiBudW1iZXIge1xuICAgICAgICB0dWlBc3NlcnQuYXNzZXJ0KFR1aU1vbnRoLmlzVmFsaWRNb250aFBhcnQobW9udGgpKTtcblxuICAgICAgICBzd2l0Y2ggKG1vbnRoKSB7XG4gICAgICAgICAgICBjYXNlIFR1aU1vbnRoTnVtYmVyLkZlYnJ1YXJ5OlxuICAgICAgICAgICAgICAgIHJldHVybiBpc0xlYXBZZWFyID8gMjkgOiAyODtcbiAgICAgICAgICAgIGNhc2UgVHVpTW9udGhOdW1iZXIuQXByaWw6XG4gICAgICAgICAgICBjYXNlIFR1aU1vbnRoTnVtYmVyLkp1bmU6XG4gICAgICAgICAgICBjYXNlIFR1aU1vbnRoTnVtYmVyLlNlcHRlbWJlcjpcbiAgICAgICAgICAgIGNhc2UgVHVpTW9udGhOdW1iZXIuTm92ZW1iZXI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIDMwO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gMzE7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGN1cnJlbnQgbW9udGggYW5kIHllYXIgYmFzZWQgb24gbG9jYWwgdGltZSB6b25lXG4gICAgICogQG5vc2lkZWVmZmVjdHNcbiAgICAgKi9cbiAgICBzdGF0aWMgY3VycmVudExvY2FsKCk6IFR1aU1vbnRoIHtcbiAgICAgICAgY29uc3QgbmF0aXZlRGF0ZSA9IG5ldyBEYXRlKCk7XG5cbiAgICAgICAgcmV0dXJuIG5ldyBUdWlNb250aChuYXRpdmVEYXRlLmdldEZ1bGxZZWFyKCksIG5hdGl2ZURhdGUuZ2V0TW9udGgoKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBjdXJyZW50IG1vbnRoIGFuZCB5ZWFyIGJhc2VkIG9uIFVUQ1xuICAgICAqL1xuICAgIHN0YXRpYyBjdXJyZW50VXRjKCk6IFR1aU1vbnRoIHtcbiAgICAgICAgY29uc3QgbmF0aXZlRGF0ZSA9IG5ldyBEYXRlKCk7XG5cbiAgICAgICAgcmV0dXJuIG5ldyBUdWlNb250aChuYXRpdmVEYXRlLmdldFVUQ0Z1bGxZZWFyKCksIG5hdGl2ZURhdGUuZ2V0VVRDTW9udGgoKSk7XG4gICAgfVxuXG4gICAgc3RhdGljIGxlbmd0aEJldHdlZW4oZnJvbTogVHVpTW9udGgsIHRvOiBUdWlNb250aCk6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IGFic29sdXRlRnJvbSA9IGZyb20ubW9udGggKyBmcm9tLnllYXIgKiAxMjtcbiAgICAgICAgY29uc3QgYWJzb2x1dGVUbyA9IHRvLm1vbnRoICsgdG8ueWVhciAqIDEyO1xuXG4gICAgICAgIHJldHVybiBhYnNvbHV0ZVRvIC0gYWJzb2x1dGVGcm9tO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE5vcm1hbGl6ZXMgbnVtYmVyIGJ5IGNsYW1waW5nIGl0IGJldHdlZW4gbWluIGFuZCBtYXggbW9udGhcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgc3RhdGljIG5vcm1hbGl6ZU1vbnRoUGFydChtb250aDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIG5vcm1hbGl6ZVRvSW50TnVtYmVyKG1vbnRoLCBNSU5fTU9OVEgsIE1BWF9NT05USCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGVzdHMgbW9udGggZm9yIHZhbGlkaXR5XG4gICAgICovXG4gICAgcHJpdmF0ZSBzdGF0aWMgaXNWYWxpZE1vbnRoUGFydChtb250aDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBOdW1iZXIuaXNJbnRlZ2VyKG1vbnRoKSAmJiBpblJhbmdlKG1vbnRoLCBNSU5fTU9OVEgsIE1BWF9NT05USCArIDEpO1xuICAgIH1cblxuICAgIGdldCBmb3JtYXR0ZWRNb250aFBhcnQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHBhZFN0YXJ0KFN0cmluZyh0aGlzLm1vbnRoICsgMSksIDIsICcwJyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWRcbiAgICAgKiBGb3JtYXR0ZXIgbW9udGggYW5kIHllYXJcbiAgICAgKi9cbiAgICBnZXQgZm9ybWF0dGVkTW9udGgoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGAke3RoaXMuZm9ybWF0dGVkTW9udGhQYXJ0fS4ke3RoaXMuZm9ybWF0dGVkWWVhcn1gO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIERPTlQgVVNFIElUICh3aWxsIGJlIGRlbGV0ZWQgc29vbilcbiAgICAgKlxuICAgICAqIENhbGN1bGF0ZXMgbnVtYmVyIG9mIHdlZWtzIGluIGEgbW9udGggKGNvdW50aW5nIG5vbi1mdWxsIHdlZWtzKVxuICAgICAqL1xuICAgIGdldCB3ZWVrc1Jvd3NDb3VudCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gTWF0aC5jZWlsKCh0aGlzLm1vbnRoU3RhcnREYXlzT2Zmc2V0ICsgdGhpcy5kYXlzQ291bnQpIC8gREFZU19JTl9XRUVLKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGRheXMgaW4gYSBtb250aFxuICAgICAqL1xuICAgIGdldCBkYXlzQ291bnQoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIFR1aU1vbnRoLmdldE1vbnRoRGF5c0NvdW50KHRoaXMubW9udGgsIHRoaXMuaXNMZWFwWWVhcik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgRE9OVCBVU0UgSVQgKHdpbGwgYmUgZGVsZXRlZCBzb29uKVxuICAgICAqXG4gICAgICogQ29tcHV0ZXMgZGF5IG9mIHdlZWsgb2Zmc2V0IG9mIHRoZSBiZWdpbm5pbmcgb2YgdGhlIG1vbnRoXG4gICAgICovXG4gICAgZ2V0IG1vbnRoU3RhcnREYXlzT2Zmc2V0KCk6IG51bWJlciB7XG4gICAgICAgIGxldCByZXN1bHQgPSB0aGlzLnllYXJTdGFydERheXNPZmZzZXQ7XG5cbiAgICAgICAgZm9yIChsZXQgY3VycmVudE1vbnRoID0gMDsgY3VycmVudE1vbnRoIDw9IHRoaXMubW9udGggLSAxOyBjdXJyZW50TW9udGgrKykge1xuICAgICAgICAgICAgcmVzdWx0ICs9IFR1aU1vbnRoLmdldE1vbnRoRGF5c0NvdW50KGN1cnJlbnRNb250aCwgdGhpcy5pc0xlYXBZZWFyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXN1bHQgJSBEQVlTX0lOX1dFRUs7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUGFzc2VkIG1vbnRoIGFuZCB5ZWFyIGFyZSBhZnRlciBjdXJyZW50XG4gICAgICovXG4gICAgbW9udGhCZWZvcmUoYW5vdGhlcjogVHVpTW9udGgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRoaXMueWVhckJlZm9yZShhbm90aGVyKSB8fFxuICAgICAgICAgICAgKHRoaXMueWVhclNhbWUoYW5vdGhlcikgJiYgdGhpcy5tb250aCA8IGFub3RoZXIubW9udGgpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUGFzc2VkIG1vbnRoIGFuZCB5ZWFyIGFyZSBhZnRlciBvciB0aGUgc2FtZSBhcyBjdXJyZW50XG4gICAgICovXG4gICAgbW9udGhTYW1lT3JCZWZvcmUoYW5vdGhlcjogVHVpTW9udGgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRoaXMueWVhckJlZm9yZShhbm90aGVyKSB8fFxuICAgICAgICAgICAgKHRoaXMueWVhclNhbWUoYW5vdGhlcikgJiYgdGhpcy5tb250aCA8PSBhbm90aGVyLm1vbnRoKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFBhc3NlZCBtb250aCBhbmQgeWVhciBhcmUgdGhlIHNhbWUgYXMgY3VycmVudFxuICAgICAqL1xuICAgIG1vbnRoU2FtZShhbm90aGVyOiBUdWlNb250aCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy55ZWFyU2FtZShhbm90aGVyKSAmJiB0aGlzLm1vbnRoID09PSBhbm90aGVyLm1vbnRoO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFBhc3NlZCBtb250aCBhbmQgeWVhciBhcmUgZWl0aGVyIGJlZm9yZSBvciBlcXVhbCB0byBjdXJyZW50XG4gICAgICovXG4gICAgbW9udGhTYW1lT3JBZnRlcihhbm90aGVyOiBUdWlNb250aCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGhpcy55ZWFyQWZ0ZXIoYW5vdGhlcikgfHxcbiAgICAgICAgICAgICh0aGlzLnllYXJTYW1lKGFub3RoZXIpICYmIHRoaXMubW9udGggPj0gYW5vdGhlci5tb250aClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQYXNzZWQgbW9udGggYW5kIHllYXIgYXJlIGJlZm9yZSBjdXJyZW50XG4gICAgICovXG4gICAgbW9udGhBZnRlcihhbm90aGVyOiBUdWlNb250aCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGhpcy55ZWFyQWZ0ZXIoYW5vdGhlcikgfHxcbiAgICAgICAgICAgICh0aGlzLnllYXJTYW1lKGFub3RoZXIpICYmIHRoaXMubW9udGggPiBhbm90aGVyLm1vbnRoKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8vIFRPRE86IDMuMCBDb25zaWRlciByZW1vdmluZyBgYmFja3dhcmRzYCBvcHRpb25cbiAgICAvKipcbiAgICAgKiBJbW11dGFibHkgYWx0ZXJzIGN1cnJlbnQgbW9udGggYW5kIHllYXIgYnkgcGFzc2VkIG9mZnNldFxuICAgICAqXG4gICAgICogQHBhcmFtIG9mZnNldFxuICAgICAqIEBwYXJhbSBiYWNrd2FyZHMgc2hpZnQgZGF0ZSBiYWNrd2FyZHNcbiAgICAgKiBAcmV0dXJuIG5ldyBtb250aCBhbmQgeWVhciBvYmplY3QgYXMgYSByZXN1bHQgb2Ygb2Zmc2V0dGluZyBjdXJyZW50XG4gICAgICovXG4gICAgYXBwZW5kKHt5ZWFyID0gMCwgbW9udGggPSAwfTogVHVpTW9udGhMaWtlLCBiYWNrd2FyZHM6IGJvb2xlYW4gPSBmYWxzZSk6IFR1aU1vbnRoIHtcbiAgICAgICAgaWYgKGJhY2t3YXJkcykge1xuICAgICAgICAgICAgeWVhciAqPSAtMTtcbiAgICAgICAgICAgIG1vbnRoICo9IC0xO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdG90YWxNb250aHMgPSAodGhpcy55ZWFyICsgeWVhcikgKiBNT05USFNfSU5fWUVBUiArIHRoaXMubW9udGggKyBtb250aDtcblxuICAgICAgICByZXR1cm4gbmV3IFR1aU1vbnRoKFxuICAgICAgICAgICAgTWF0aC5mbG9vcih0b3RhbE1vbnRocyAvIE1PTlRIU19JTl9ZRUFSKSxcbiAgICAgICAgICAgIHRvdGFsTW9udGhzICUgTU9OVEhTX0lOX1lFQVIsXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgdG9TdHJpbmcoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybWF0dGVkTW9udGg7XG4gICAgfVxuXG4gICAgdmFsdWVPZigpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy50b0xvY2FsTmF0aXZlRGF0ZSgpLnZhbHVlT2YoKTtcbiAgICB9XG5cbiAgICB0b0pTT04oKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGAke3N1cGVyLnRvSlNPTigpfS0ke3RoaXMuZm9ybWF0dGVkTW9udGhQYXJ0fWA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBuYXRpdmUge0BsaW5rIERhdGV9IGJhc2VkIG9uIGxvY2FsIHRpbWUgem9uZVxuICAgICAqL1xuICAgIHRvTG9jYWxOYXRpdmVEYXRlKCk6IERhdGUge1xuICAgICAgICByZXR1cm4gbmV3IERhdGUodGhpcy55ZWFyLCB0aGlzLm1vbnRoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIG5hdGl2ZSB7QGxpbmsgRGF0ZX0gYmFzZWQgb24gVVRDXG4gICAgICovXG4gICAgdG9VdGNOYXRpdmVEYXRlKCk6IERhdGUge1xuICAgICAgICByZXR1cm4gbmV3IERhdGUoRGF0ZS5VVEModGhpcy55ZWFyLCB0aGlzLm1vbnRoKSk7XG4gICAgfVxufVxuIl19
209
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9udGguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AdGFpZ2EtdWkvY2RrL2RhdGUtdGltZS8iLCJzb3VyY2VzIjpbIm1vbnRoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFHaEQsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQ3BELE9BQU8sRUFBQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUV2RSxPQUFPLEVBQUMsWUFBWSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFDLE1BQU0sYUFBYSxDQUFDO0FBQy9FLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxRQUFRLENBQUM7QUFFL0I7O0dBRUc7QUFDSDtJQUE4Qiw0QkFBTztJQUNqQzs7O09BR0c7SUFDSCxrQkFBWSxJQUFZLEVBQVcsS0FBYTtRQUFoRCxZQUNJLGtCQUFNLElBQUksQ0FBQyxTQUVkO1FBSGtDLFdBQUssR0FBTCxLQUFLLENBQVE7UUFFNUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDOztJQUN6RCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxxQkFBWSxHQUFuQixVQUFvQixJQUFZLEVBQUUsS0FBYTtRQUMzQyxPQUFPLE9BQU8sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksUUFBUSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3pFLENBQUM7SUFFRDs7T0FFRztJQUNJLDBCQUFpQixHQUF4QixVQUF5QixLQUFhLEVBQUUsVUFBbUI7UUFDdkQsU0FBUyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUVuRCxRQUFRLEtBQUssRUFBRTtZQUNYO2dCQUNJLE9BQU8sVUFBVSxDQUFDLENB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InNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7dHVpQXNzZXJ0fSBmcm9tICdAdGFpZ2EtdWkvY2RrL2NsYXNzZXMnO1xuaW1wb3J0IHtUdWlNb250aE51bWJlcn0gZnJvbSAnQHRhaWdhLXVpL2Nkay9lbnVtcyc7XG5pbXBvcnQge1R1aU1vbnRoTGlrZX0gZnJvbSAnQHRhaWdhLXVpL2Nkay9pbnRlcmZhY2VzJztcbmltcG9ydCB7cGFkU3RhcnR9IGZyb20gJ0B0YWlnYS11aS9jZGsvdXRpbHMvZm9ybWF0JztcbmltcG9ydCB7aW5SYW5nZSwgbm9ybWFsaXplVG9JbnROdW1iZXJ9IGZyb20gJ0B0YWlnYS11aS9jZGsvdXRpbHMvbWF0aCc7XG5cbmltcG9ydCB7REFZU19JTl9XRUVLLCBNQVhfTU9OVEgsIE1JTl9NT05USCwgTU9OVEhTX0lOX1lFQVJ9IGZyb20gJy4vZGF0ZS10aW1lJztcbmltcG9ydCB7VHVpWWVhcn0gZnJvbSAnLi95ZWFyJztcblxuLyoqXG4gKiBJbW11dGFibGUgb2JqZWN0IGNvbnNpc3Rpbmcgb2YgeWVhciBhbmQgbW9udGhcbiAqL1xuZXhwb3J0IGNsYXNzIFR1aU1vbnRoIGV4dGVuZHMgVHVpWWVhciBpbXBsZW1lbnRzIFR1aU1vbnRoTGlrZSB7XG4gICAgLyoqXG4gICAgICogQHBhcmFtIHllYXJcbiAgICAgKiBAcGFyYW0gbW9udGggKHN0YXJ0aW5nIHdpdGggMClcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3Rvcih5ZWFyOiBudW1iZXIsIHJlYWRvbmx5IG1vbnRoOiBudW1iZXIpIHtcbiAgICAgICAgc3VwZXIoeWVhcik7XG4gICAgICAgIHR1aUFzc2VydC5hc3NlcnQoVHVpTW9udGguaXNWYWxpZE1vbnRoKHllYXIsIG1vbnRoKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGVzdHMgbW9udGggYW5kIHllYXIgZm9yIHZhbGlkaXR5XG4gICAgICovXG4gICAgc3RhdGljIGlzVmFsaWRNb250aCh5ZWFyOiBudW1iZXIsIG1vbnRoOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIFR1aVllYXIuaXNWYWxpZFllYXIoeWVhcikgJiYgVHVpTW9udGguaXNWYWxpZE1vbnRoUGFydChtb250aCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBudW1iZXIgb2YgZGF5cyBpbiBhIG1vbnRoXG4gICAgICovXG4gICAgc3RhdGljIGdldE1vbnRoRGF5c0NvdW50KG1vbnRoOiBudW1iZXIsIGlzTGVhcFllYXI6IGJvb2xlYW4pOiBudW1iZXIge1xuICAgICAgICB0dWlBc3NlcnQuYXNzZXJ0KFR1aU1vbnRoLmlzVmFsaWRNb250aFBhcnQobW9udGgpKTtcblxuICAgICAgICBzd2l0Y2ggKG1vbnRoKSB7XG4gICAgICAgICAgICBjYXNlIFR1aU1vbnRoTnVtYmVyLkZlYnJ1YXJ5OlxuICAgICAgICAgICAgICAgIHJldHVybiBpc0xlYXBZZWFyID8gMjkgOiAyODtcbiAgICAgICAgICAgIGNhc2UgVHVpTW9udGhOdW1iZXIuQXByaWw6XG4gICAgICAgICAgICBjYXNlIFR1aU1vbnRoTnVtYmVyLkp1bmU6XG4gICAgICAgICAgICBjYXNlIFR1aU1vbnRoTnVtYmVyLlNlcHRlbWJlcjpcbiAgICAgICAgICAgIGNhc2UgVHVpTW9udGhOdW1iZXIuTm92ZW1iZXI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIDMwO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gMzE7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGN1cnJlbnQgbW9udGggYW5kIHllYXIgYmFzZWQgb24gbG9jYWwgdGltZSB6b25lXG4gICAgICogQG5vc2lkZWVmZmVjdHNcbiAgICAgKi9cbiAgICBzdGF0aWMgY3VycmVudExvY2FsKCk6IFR1aU1vbnRoIHtcbiAgICAgICAgY29uc3QgbmF0aXZlRGF0ZSA9IG5ldyBEYXRlKCk7XG5cbiAgICAgICAgcmV0dXJuIG5ldyBUdWlNb250aChuYXRpdmVEYXRlLmdldEZ1bGxZZWFyKCksIG5hdGl2ZURhdGUuZ2V0TW9udGgoKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBjdXJyZW50IG1vbnRoIGFuZCB5ZWFyIGJhc2VkIG9uIFVUQ1xuICAgICAqL1xuICAgIHN0YXRpYyBjdXJyZW50VXRjKCk6IFR1aU1vbnRoIHtcbiAgICAgICAgY29uc3QgbmF0aXZlRGF0ZSA9IG5ldyBEYXRlKCk7XG5cbiAgICAgICAgcmV0dXJuIG5ldyBUdWlNb250aChuYXRpdmVEYXRlLmdldFVUQ0Z1bGxZZWFyKCksIG5hdGl2ZURhdGUuZ2V0VVRDTW9udGgoKSk7XG4gICAgfVxuXG4gICAgc3RhdGljIGxlbmd0aEJldHdlZW4oZnJvbTogVHVpTW9udGgsIHRvOiBUdWlNb250aCk6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IGFic29sdXRlRnJvbSA9IGZyb20ubW9udGggKyBmcm9tLnllYXIgKiAxMjtcbiAgICAgICAgY29uc3QgYWJzb2x1dGVUbyA9IHRvLm1vbnRoICsgdG8ueWVhciAqIDEyO1xuXG4gICAgICAgIHJldHVybiBhYnNvbHV0ZVRvIC0gYWJzb2x1dGVGcm9tO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE5vcm1hbGl6ZXMgbnVtYmVyIGJ5IGNsYW1waW5nIGl0IGJldHdlZW4gbWluIGFuZCBtYXggbW9udGhcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgc3RhdGljIG5vcm1hbGl6ZU1vbnRoUGFydChtb250aDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIG5vcm1hbGl6ZVRvSW50TnVtYmVyKG1vbnRoLCBNSU5fTU9OVEgsIE1BWF9NT05USCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGVzdHMgbW9udGggZm9yIHZhbGlkaXR5XG4gICAgICovXG4gICAgcHJpdmF0ZSBzdGF0aWMgaXNWYWxpZE1vbnRoUGFydChtb250aDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBOdW1iZXIuaXNJbnRlZ2VyKG1vbnRoKSAmJiBpblJhbmdlKG1vbnRoLCBNSU5fTU9OVEgsIE1BWF9NT05USCArIDEpO1xuICAgIH1cblxuICAgIGdldCBmb3JtYXR0ZWRNb250aFBhcnQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHBhZFN0YXJ0KFN0cmluZyh0aGlzLm1vbnRoICsgMSksIDIsIGAwYCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWRcbiAgICAgKiBGb3JtYXR0ZXIgbW9udGggYW5kIHllYXJcbiAgICAgKi9cbiAgICBnZXQgZm9ybWF0dGVkTW9udGgoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGAke3RoaXMuZm9ybWF0dGVkTW9udGhQYXJ0fS4ke3RoaXMuZm9ybWF0dGVkWWVhcn1gO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIERPTlQgVVNFIElUICh3aWxsIGJlIGRlbGV0ZWQgc29vbilcbiAgICAgKlxuICAgICAqIENhbGN1bGF0ZXMgbnVtYmVyIG9mIHdlZWtzIGluIGEgbW9udGggKGNvdW50aW5nIG5vbi1mdWxsIHdlZWtzKVxuICAgICAqL1xuICAgIGdldCB3ZWVrc1Jvd3NDb3VudCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gTWF0aC5jZWlsKCh0aGlzLm1vbnRoU3RhcnREYXlzT2Zmc2V0ICsgdGhpcy5kYXlzQ291bnQpIC8gREFZU19JTl9XRUVLKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGRheXMgaW4gYSBtb250aFxuICAgICAqL1xuICAgIGdldCBkYXlzQ291bnQoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIFR1aU1vbnRoLmdldE1vbnRoRGF5c0NvdW50KHRoaXMubW9udGgsIHRoaXMuaXNMZWFwWWVhcik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgRE9OVCBVU0UgSVQgKHdpbGwgYmUgZGVsZXRlZCBzb29uKVxuICAgICAqXG4gICAgICogQ29tcHV0ZXMgZGF5IG9mIHdlZWsgb2Zmc2V0IG9mIHRoZSBiZWdpbm5pbmcgb2YgdGhlIG1vbnRoXG4gICAgICovXG4gICAgZ2V0IG1vbnRoU3RhcnREYXlzT2Zmc2V0KCk6IG51bWJlciB7XG4gICAgICAgIGxldCByZXN1bHQgPSB0aGlzLnllYXJTdGFydERheXNPZmZzZXQ7XG5cbiAgICAgICAgZm9yIChsZXQgY3VycmVudE1vbnRoID0gMDsgY3VycmVudE1vbnRoIDw9IHRoaXMubW9udGggLSAxOyBjdXJyZW50TW9udGgrKykge1xuICAgICAgICAgICAgcmVzdWx0ICs9IFR1aU1vbnRoLmdldE1vbnRoRGF5c0NvdW50KGN1cnJlbnRNb250aCwgdGhpcy5pc0xlYXBZZWFyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXN1bHQgJSBEQVlTX0lOX1dFRUs7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUGFzc2VkIG1vbnRoIGFuZCB5ZWFyIGFyZSBhZnRlciBjdXJyZW50XG4gICAgICovXG4gICAgbW9udGhCZWZvcmUoYW5vdGhlcjogVHVpTW9udGgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRoaXMueWVhckJlZm9yZShhbm90aGVyKSB8fFxuICAgICAgICAgICAgKHRoaXMueWVhclNhbWUoYW5vdGhlcikgJiYgdGhpcy5tb250aCA8IGFub3RoZXIubW9udGgpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUGFzc2VkIG1vbnRoIGFuZCB5ZWFyIGFyZSBhZnRlciBvciB0aGUgc2FtZSBhcyBjdXJyZW50XG4gICAgICovXG4gICAgbW9udGhTYW1lT3JCZWZvcmUoYW5vdGhlcjogVHVpTW9udGgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRoaXMueWVhckJlZm9yZShhbm90aGVyKSB8fFxuICAgICAgICAgICAgKHRoaXMueWVhclNhbWUoYW5vdGhlcikgJiYgdGhpcy5tb250aCA8PSBhbm90aGVyLm1vbnRoKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFBhc3NlZCBtb250aCBhbmQgeWVhciBhcmUgdGhlIHNhbWUgYXMgY3VycmVudFxuICAgICAqL1xuICAgIG1vbnRoU2FtZShhbm90aGVyOiBUdWlNb250aCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy55ZWFyU2FtZShhbm90aGVyKSAmJiB0aGlzLm1vbnRoID09PSBhbm90aGVyLm1vbnRoO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFBhc3NlZCBtb250aCBhbmQgeWVhciBhcmUgZWl0aGVyIGJlZm9yZSBvciBlcXVhbCB0byBjdXJyZW50XG4gICAgICovXG4gICAgbW9udGhTYW1lT3JBZnRlcihhbm90aGVyOiBUdWlNb250aCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGhpcy55ZWFyQWZ0ZXIoYW5vdGhlcikgfHxcbiAgICAgICAgICAgICh0aGlzLnllYXJTYW1lKGFub3RoZXIpICYmIHRoaXMubW9udGggPj0gYW5vdGhlci5tb250aClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQYXNzZWQgbW9udGggYW5kIHllYXIgYXJlIGJlZm9yZSBjdXJyZW50XG4gICAgICovXG4gICAgbW9udGhBZnRlcihhbm90aGVyOiBUdWlNb250aCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGhpcy55ZWFyQWZ0ZXIoYW5vdGhlcikgfHxcbiAgICAgICAgICAgICh0aGlzLnllYXJTYW1lKGFub3RoZXIpICYmIHRoaXMubW9udGggPiBhbm90aGVyLm1vbnRoKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8vIFRPRE86IDMuMCBDb25zaWRlciByZW1vdmluZyBgYmFja3dhcmRzYCBvcHRpb25cbiAgICAvKipcbiAgICAgKiBJbW11dGFibHkgYWx0ZXJzIGN1cnJlbnQgbW9udGggYW5kIHllYXIgYnkgcGFzc2VkIG9mZnNldFxuICAgICAqXG4gICAgICogQHBhcmFtIG9mZnNldFxuICAgICAqIEBwYXJhbSBiYWNrd2FyZHMgc2hpZnQgZGF0ZSBiYWNrd2FyZHNcbiAgICAgKiBAcmV0dXJuIG5ldyBtb250aCBhbmQgeWVhciBvYmplY3QgYXMgYSByZXN1bHQgb2Ygb2Zmc2V0dGluZyBjdXJyZW50XG4gICAgICovXG4gICAgYXBwZW5kKHt5ZWFyID0gMCwgbW9udGggPSAwfTogVHVpTW9udGhMaWtlLCBiYWNrd2FyZHM6IGJvb2xlYW4gPSBmYWxzZSk6IFR1aU1vbnRoIHtcbiAgICAgICAgaWYgKGJhY2t3YXJkcykge1xuICAgICAgICAgICAgeWVhciAqPSAtMTtcbiAgICAgICAgICAgIG1vbnRoICo9IC0xO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdG90YWxNb250aHMgPSAodGhpcy55ZWFyICsgeWVhcikgKiBNT05USFNfSU5fWUVBUiArIHRoaXMubW9udGggKyBtb250aDtcblxuICAgICAgICByZXR1cm4gbmV3IFR1aU1vbnRoKFxuICAgICAgICAgICAgTWF0aC5mbG9vcih0b3RhbE1vbnRocyAvIE1PTlRIU19JTl9ZRUFSKSxcbiAgICAgICAgICAgIHRvdGFsTW9udGhzICUgTU9OVEhTX0lOX1lFQVIsXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgdG9TdHJpbmcoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybWF0dGVkTW9udGg7XG4gICAgfVxuXG4gICAgdmFsdWVPZigpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy50b0xvY2FsTmF0aXZlRGF0ZSgpLnZhbHVlT2YoKTtcbiAgICB9XG5cbiAgICB0b0pTT04oKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGAke3N1cGVyLnRvSlNPTigpfS0ke3RoaXMuZm9ybWF0dGVkTW9udGhQYXJ0fWA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBuYXRpdmUge0BsaW5rIERhdGV9IGJhc2VkIG9uIGxvY2FsIHRpbWUgem9uZVxuICAgICAqL1xuICAgIHRvTG9jYWxOYXRpdmVEYXRlKCk6IERhdGUge1xuICAgICAgICByZXR1cm4gbmV3IERhdGUodGhpcy55ZWFyLCB0aGlzLm1vbnRoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIG5hdGl2ZSB7QGxpbmsgRGF0ZX0gYmFzZWQgb24gVVRDXG4gICAgICovXG4gICAgdG9VdGNOYXRpdmVEYXRlKCk6IERhdGUge1xuICAgICAgICByZXR1cm4gbmV3IERhdGUoRGF0ZS5VVEModGhpcy55ZWFyLCB0aGlzLm1vbnRoKSk7XG4gICAgfVxufVxuIl19