@fundamental-ngx/core 0.58.2-rc.0 → 0.58.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (297) hide show
  1. package/fesm2022/fundamental-ngx-core-action-bar.mjs +26 -26
  2. package/fesm2022/fundamental-ngx-core-action-bar.mjs.map +1 -1
  3. package/fesm2022/fundamental-ngx-core-action-sheet.mjs +20 -20
  4. package/fesm2022/fundamental-ngx-core-action-sheet.mjs.map +1 -1
  5. package/fesm2022/fundamental-ngx-core-avatar-group-legacy.mjs +28 -28
  6. package/fesm2022/fundamental-ngx-core-avatar-group-legacy.mjs.map +1 -1
  7. package/fesm2022/fundamental-ngx-core-avatar-group.mjs +34 -34
  8. package/fesm2022/fundamental-ngx-core-avatar-group.mjs.map +1 -1
  9. package/fesm2022/fundamental-ngx-core-avatar.mjs +10 -10
  10. package/fesm2022/fundamental-ngx-core-avatar.mjs.map +1 -1
  11. package/fesm2022/fundamental-ngx-core-bar.mjs +25 -25
  12. package/fesm2022/fundamental-ngx-core-bar.mjs.map +1 -1
  13. package/fesm2022/fundamental-ngx-core-breadcrumb.mjs +10 -10
  14. package/fesm2022/fundamental-ngx-core-breadcrumb.mjs.map +1 -1
  15. package/fesm2022/fundamental-ngx-core-busy-indicator.mjs +15 -15
  16. package/fesm2022/fundamental-ngx-core-busy-indicator.mjs.map +1 -1
  17. package/fesm2022/fundamental-ngx-core-button.mjs +15 -15
  18. package/fesm2022/fundamental-ngx-core-button.mjs.map +1 -1
  19. package/fesm2022/fundamental-ngx-core-calendar.mjs +40 -40
  20. package/fesm2022/fundamental-ngx-core-calendar.mjs.map +1 -1
  21. package/fesm2022/fundamental-ngx-core-card.mjs +130 -126
  22. package/fesm2022/fundamental-ngx-core-card.mjs.map +1 -1
  23. package/fesm2022/fundamental-ngx-core-carousel.mjs +19 -19
  24. package/fesm2022/fundamental-ngx-core-carousel.mjs.map +1 -1
  25. package/fesm2022/fundamental-ngx-core-checkbox.mjs +7 -7
  26. package/fesm2022/fundamental-ngx-core-checkbox.mjs.map +1 -1
  27. package/fesm2022/fundamental-ngx-core-combobox.mjs +16 -16
  28. package/fesm2022/fundamental-ngx-core-combobox.mjs.map +1 -1
  29. package/fesm2022/fundamental-ngx-core-content-density.mjs +25 -25
  30. package/fesm2022/fundamental-ngx-core-content-density.mjs.map +1 -1
  31. package/fesm2022/fundamental-ngx-core-date-picker.mjs +13 -13
  32. package/fesm2022/fundamental-ngx-core-date-picker.mjs.map +1 -1
  33. package/fesm2022/fundamental-ngx-core-datetime-picker.mjs +13 -13
  34. package/fesm2022/fundamental-ngx-core-datetime-picker.mjs.map +1 -1
  35. package/fesm2022/fundamental-ngx-core-datetime.mjs +30 -30
  36. package/fesm2022/fundamental-ngx-core-datetime.mjs.map +1 -1
  37. package/fesm2022/fundamental-ngx-core-dialog.mjs +64 -64
  38. package/fesm2022/fundamental-ngx-core-dialog.mjs.map +1 -1
  39. package/fesm2022/fundamental-ngx-core-dynamic-page.mjs +52 -52
  40. package/fesm2022/fundamental-ngx-core-dynamic-page.mjs.map +1 -1
  41. package/fesm2022/fundamental-ngx-core-dynamic-side-content.mjs +13 -13
  42. package/fesm2022/fundamental-ngx-core-dynamic-side-content.mjs.map +1 -1
  43. package/fesm2022/fundamental-ngx-core-facets.mjs +17 -17
  44. package/fesm2022/fundamental-ngx-core-facets.mjs.map +1 -1
  45. package/fesm2022/fundamental-ngx-core-feed-input.mjs +17 -17
  46. package/fesm2022/fundamental-ngx-core-feed-input.mjs.map +1 -1
  47. package/fesm2022/fundamental-ngx-core-feed-list-item.mjs +22 -22
  48. package/fesm2022/fundamental-ngx-core-feed-list-item.mjs.map +1 -1
  49. package/fesm2022/fundamental-ngx-core-file-uploader.mjs +16 -16
  50. package/fesm2022/fundamental-ngx-core-file-uploader.mjs.map +1 -1
  51. package/fesm2022/fundamental-ngx-core-fixed-card-layout.mjs +13 -13
  52. package/fesm2022/fundamental-ngx-core-fixed-card-layout.mjs.map +1 -1
  53. package/fesm2022/fundamental-ngx-core-flexible-column-layout.mjs +7 -7
  54. package/fesm2022/fundamental-ngx-core-flexible-column-layout.mjs.map +1 -1
  55. package/fesm2022/fundamental-ngx-core-form.mjs +70 -70
  56. package/fesm2022/fundamental-ngx-core-form.mjs.map +1 -1
  57. package/fesm2022/fundamental-ngx-core-formatted-text.mjs +8 -8
  58. package/fesm2022/fundamental-ngx-core-formatted-text.mjs.map +1 -1
  59. package/fesm2022/fundamental-ngx-core-generic-tag.mjs +7 -7
  60. package/fesm2022/fundamental-ngx-core-generic-tag.mjs.map +1 -1
  61. package/fesm2022/fundamental-ngx-core-grid-list.mjs +47 -47
  62. package/fesm2022/fundamental-ngx-core-grid-list.mjs.map +1 -1
  63. package/fesm2022/fundamental-ngx-core-icon.mjs +8 -8
  64. package/fesm2022/fundamental-ngx-core-icon.mjs.map +1 -1
  65. package/fesm2022/fundamental-ngx-core-illustrated-message.mjs +19 -19
  66. package/fesm2022/fundamental-ngx-core-illustrated-message.mjs.map +1 -1
  67. package/fesm2022/fundamental-ngx-core-infinite-scroll.mjs +10 -8
  68. package/fesm2022/fundamental-ngx-core-infinite-scroll.mjs.map +1 -1
  69. package/fesm2022/fundamental-ngx-core-info-label.mjs +7 -7
  70. package/fesm2022/fundamental-ngx-core-info-label.mjs.map +1 -1
  71. package/fesm2022/fundamental-ngx-core-inline-help.mjs +7 -7
  72. package/fesm2022/fundamental-ngx-core-inline-help.mjs.map +1 -1
  73. package/fesm2022/fundamental-ngx-core-input-group.mjs +19 -19
  74. package/fesm2022/fundamental-ngx-core-input-group.mjs.map +1 -1
  75. package/fesm2022/fundamental-ngx-core-layout-grid.mjs +17 -17
  76. package/fesm2022/fundamental-ngx-core-layout-grid.mjs.map +1 -1
  77. package/fesm2022/fundamental-ngx-core-layout-panel.mjs +31 -31
  78. package/fesm2022/fundamental-ngx-core-layout-panel.mjs.map +1 -1
  79. package/fesm2022/fundamental-ngx-core-link.mjs +7 -7
  80. package/fesm2022/fundamental-ngx-core-link.mjs.map +1 -1
  81. package/fesm2022/fundamental-ngx-core-list.mjs +80 -80
  82. package/fesm2022/fundamental-ngx-core-list.mjs.map +1 -1
  83. package/fesm2022/fundamental-ngx-core-menu.mjs +58 -56
  84. package/fesm2022/fundamental-ngx-core-menu.mjs.map +1 -1
  85. package/fesm2022/fundamental-ngx-core-message-box.mjs +37 -37
  86. package/fesm2022/fundamental-ngx-core-message-box.mjs.map +1 -1
  87. package/fesm2022/fundamental-ngx-core-message-page.mjs +19 -19
  88. package/fesm2022/fundamental-ngx-core-message-page.mjs.map +1 -1
  89. package/fesm2022/fundamental-ngx-core-message-strip.mjs +25 -25
  90. package/fesm2022/fundamental-ngx-core-message-strip.mjs.map +1 -1
  91. package/fesm2022/fundamental-ngx-core-message-toast.mjs +17 -17
  92. package/fesm2022/fundamental-ngx-core-message-toast.mjs.map +1 -1
  93. package/fesm2022/fundamental-ngx-core-micro-process-flow.mjs +19 -19
  94. package/fesm2022/fundamental-ngx-core-micro-process-flow.mjs.map +1 -1
  95. package/fesm2022/fundamental-ngx-core-mobile-mode.mjs +3 -3
  96. package/fesm2022/fundamental-ngx-core-mobile-mode.mjs.map +1 -1
  97. package/fesm2022/fundamental-ngx-core-multi-combobox.mjs +22 -22
  98. package/fesm2022/fundamental-ngx-core-multi-combobox.mjs.map +1 -1
  99. package/fesm2022/fundamental-ngx-core-multi-input.mjs +15 -15
  100. package/fesm2022/fundamental-ngx-core-multi-input.mjs.map +1 -1
  101. package/fesm2022/fundamental-ngx-core-nested-list.mjs +40 -40
  102. package/fesm2022/fundamental-ngx-core-nested-list.mjs.map +1 -1
  103. package/fesm2022/fundamental-ngx-core-notification.mjs +88 -88
  104. package/fesm2022/fundamental-ngx-core-notification.mjs.map +1 -1
  105. package/fesm2022/fundamental-ngx-core-object-attribute.mjs +7 -7
  106. package/fesm2022/fundamental-ngx-core-object-attribute.mjs.map +1 -1
  107. package/fesm2022/fundamental-ngx-core-object-identifier.mjs +11 -11
  108. package/fesm2022/fundamental-ngx-core-object-identifier.mjs.map +1 -1
  109. package/fesm2022/fundamental-ngx-core-object-marker.mjs +7 -7
  110. package/fesm2022/fundamental-ngx-core-object-marker.mjs.map +1 -1
  111. package/fesm2022/fundamental-ngx-core-object-number.mjs +7 -7
  112. package/fesm2022/fundamental-ngx-core-object-number.mjs.map +1 -1
  113. package/fesm2022/fundamental-ngx-core-object-status.mjs +7 -7
  114. package/fesm2022/fundamental-ngx-core-object-status.mjs.map +1 -1
  115. package/fesm2022/fundamental-ngx-core-overflow-layout.mjs +31 -31
  116. package/fesm2022/fundamental-ngx-core-overflow-layout.mjs.map +1 -1
  117. package/fesm2022/fundamental-ngx-core-pagination.mjs +11 -11
  118. package/fesm2022/fundamental-ngx-core-pagination.mjs.map +1 -1
  119. package/fesm2022/fundamental-ngx-core-panel.mjs +19 -19
  120. package/fesm2022/fundamental-ngx-core-panel.mjs.map +1 -1
  121. package/fesm2022/fundamental-ngx-core-popover.mjs +42 -42
  122. package/fesm2022/fundamental-ngx-core-popover.mjs.map +1 -1
  123. package/fesm2022/fundamental-ngx-core-product-switch.mjs +13 -13
  124. package/fesm2022/fundamental-ngx-core-product-switch.mjs.map +1 -1
  125. package/fesm2022/fundamental-ngx-core-progress-indicator.mjs +7 -7
  126. package/fesm2022/fundamental-ngx-core-progress-indicator.mjs.map +1 -1
  127. package/fesm2022/fundamental-ngx-core-quick-view.mjs +37 -37
  128. package/fesm2022/fundamental-ngx-core-quick-view.mjs.map +1 -1
  129. package/fesm2022/fundamental-ngx-core-radio.mjs +7 -7
  130. package/fesm2022/fundamental-ngx-core-radio.mjs.map +1 -1
  131. package/fesm2022/fundamental-ngx-core-rating-indicator.mjs +10 -10
  132. package/fesm2022/fundamental-ngx-core-rating-indicator.mjs.map +1 -1
  133. package/fesm2022/fundamental-ngx-core-resizable-card-layout.mjs +10 -10
  134. package/fesm2022/fundamental-ngx-core-resizable-card-layout.mjs.map +1 -1
  135. package/fesm2022/fundamental-ngx-core-scroll-spy.mjs +7 -7
  136. package/fesm2022/fundamental-ngx-core-scroll-spy.mjs.map +1 -1
  137. package/fesm2022/fundamental-ngx-core-scrollbar.mjs +7 -7
  138. package/fesm2022/fundamental-ngx-core-scrollbar.mjs.map +1 -1
  139. package/fesm2022/fundamental-ngx-core-segmented-button.mjs +7 -7
  140. package/fesm2022/fundamental-ngx-core-segmented-button.mjs.map +1 -1
  141. package/fesm2022/fundamental-ngx-core-select.mjs +20 -20
  142. package/fesm2022/fundamental-ngx-core-select.mjs.map +1 -1
  143. package/fesm2022/fundamental-ngx-core-settings.mjs +52 -52
  144. package/fesm2022/fundamental-ngx-core-settings.mjs.map +1 -1
  145. package/fesm2022/fundamental-ngx-core-shared.mjs +3 -3
  146. package/fesm2022/fundamental-ngx-core-shared.mjs.map +1 -1
  147. package/fesm2022/fundamental-ngx-core-shellbar.mjs +88 -75
  148. package/fesm2022/fundamental-ngx-core-shellbar.mjs.map +1 -1
  149. package/fesm2022/fundamental-ngx-core-side-navigation.mjs +13 -13
  150. package/fesm2022/fundamental-ngx-core-side-navigation.mjs.map +1 -1
  151. package/fesm2022/fundamental-ngx-core-skeleton.mjs +12 -10
  152. package/fesm2022/fundamental-ngx-core-skeleton.mjs.map +1 -1
  153. package/fesm2022/fundamental-ngx-core-slider.mjs +10 -10
  154. package/fesm2022/fundamental-ngx-core-slider.mjs.map +1 -1
  155. package/fesm2022/fundamental-ngx-core-split-button.mjs +10 -10
  156. package/fesm2022/fundamental-ngx-core-split-button.mjs.map +1 -1
  157. package/fesm2022/fundamental-ngx-core-status-indicator.mjs +7 -7
  158. package/fesm2022/fundamental-ngx-core-status-indicator.mjs.map +1 -1
  159. package/fesm2022/fundamental-ngx-core-step-input.mjs +13 -9
  160. package/fesm2022/fundamental-ngx-core-step-input.mjs.map +1 -1
  161. package/fesm2022/fundamental-ngx-core-switch.mjs +7 -7
  162. package/fesm2022/fundamental-ngx-core-switch.mjs.map +1 -1
  163. package/fesm2022/fundamental-ngx-core-table.mjs +49 -49
  164. package/fesm2022/fundamental-ngx-core-table.mjs.map +1 -1
  165. package/fesm2022/fundamental-ngx-core-tabs.mjs +52 -52
  166. package/fesm2022/fundamental-ngx-core-tabs.mjs.map +1 -1
  167. package/fesm2022/fundamental-ngx-core-tests.mjs.map +1 -1
  168. package/fesm2022/fundamental-ngx-core-text.mjs +8 -8
  169. package/fesm2022/fundamental-ngx-core-text.mjs.map +1 -1
  170. package/fesm2022/fundamental-ngx-core-theming.mjs +7 -7
  171. package/fesm2022/fundamental-ngx-core-theming.mjs.map +1 -1
  172. package/fesm2022/fundamental-ngx-core-tile.mjs +94 -94
  173. package/fesm2022/fundamental-ngx-core-tile.mjs.map +1 -1
  174. package/fesm2022/fundamental-ngx-core-time-picker.mjs +8 -8
  175. package/fesm2022/fundamental-ngx-core-time-picker.mjs.map +1 -1
  176. package/fesm2022/fundamental-ngx-core-time.mjs +11 -11
  177. package/fesm2022/fundamental-ngx-core-time.mjs.map +1 -1
  178. package/fesm2022/fundamental-ngx-core-timeline.mjs +43 -43
  179. package/fesm2022/fundamental-ngx-core-timeline.mjs.map +1 -1
  180. package/fesm2022/fundamental-ngx-core-title.mjs +8 -8
  181. package/fesm2022/fundamental-ngx-core-title.mjs.map +1 -1
  182. package/fesm2022/fundamental-ngx-core-token.mjs +19 -15
  183. package/fesm2022/fundamental-ngx-core-token.mjs.map +1 -1
  184. package/fesm2022/fundamental-ngx-core-toolbar.mjs +47 -47
  185. package/fesm2022/fundamental-ngx-core-toolbar.mjs.map +1 -1
  186. package/fesm2022/fundamental-ngx-core-tree.mjs +32 -32
  187. package/fesm2022/fundamental-ngx-core-tree.mjs.map +1 -1
  188. package/fesm2022/fundamental-ngx-core-upload-collection.mjs +37 -37
  189. package/fesm2022/fundamental-ngx-core-upload-collection.mjs.map +1 -1
  190. package/fesm2022/fundamental-ngx-core-user-menu.mjs +64 -64
  191. package/fesm2022/fundamental-ngx-core-user-menu.mjs.map +1 -1
  192. package/fesm2022/fundamental-ngx-core-vertical-navigation.mjs +13 -13
  193. package/fesm2022/fundamental-ngx-core-vertical-navigation.mjs.map +1 -1
  194. package/fesm2022/fundamental-ngx-core-wizard.mjs +28 -28
  195. package/fesm2022/fundamental-ngx-core-wizard.mjs.map +1 -1
  196. package/fesm2022/fundamental-ngx-core.mjs +4 -4
  197. package/fesm2022/fundamental-ngx-core.mjs.map +1 -1
  198. package/package.json +113 -113
  199. package/{types/fundamental-ngx-core-shellbar.d.ts → shellbar/index.d.ts} +21 -13
  200. package/{types/fundamental-ngx-core-toolbar.d.ts → toolbar/index.d.ts} +7 -8
  201. /package/{types/fundamental-ngx-core-action-bar.d.ts → action-bar/index.d.ts} +0 -0
  202. /package/{types/fundamental-ngx-core-action-sheet.d.ts → action-sheet/index.d.ts} +0 -0
  203. /package/{types/fundamental-ngx-core-avatar.d.ts → avatar/index.d.ts} +0 -0
  204. /package/{types/fundamental-ngx-core-avatar-group.d.ts → avatar-group/index.d.ts} +0 -0
  205. /package/{types/fundamental-ngx-core-avatar-group-legacy.d.ts → avatar-group-legacy/index.d.ts} +0 -0
  206. /package/{types/fundamental-ngx-core-bar.d.ts → bar/index.d.ts} +0 -0
  207. /package/{types/fundamental-ngx-core-breadcrumb.d.ts → breadcrumb/index.d.ts} +0 -0
  208. /package/{types/fundamental-ngx-core-busy-indicator.d.ts → busy-indicator/index.d.ts} +0 -0
  209. /package/{types/fundamental-ngx-core-button.d.ts → button/index.d.ts} +0 -0
  210. /package/{types/fundamental-ngx-core-calendar.d.ts → calendar/index.d.ts} +0 -0
  211. /package/{types/fundamental-ngx-core-card.d.ts → card/index.d.ts} +0 -0
  212. /package/{types/fundamental-ngx-core-carousel.d.ts → carousel/index.d.ts} +0 -0
  213. /package/{types/fundamental-ngx-core-checkbox.d.ts → checkbox/index.d.ts} +0 -0
  214. /package/{types/fundamental-ngx-core-combobox.d.ts → combobox/index.d.ts} +0 -0
  215. /package/{types/fundamental-ngx-core-content-density.d.ts → content-density/index.d.ts} +0 -0
  216. /package/{types/fundamental-ngx-core-date-picker.d.ts → date-picker/index.d.ts} +0 -0
  217. /package/{types/fundamental-ngx-core-datetime.d.ts → datetime/index.d.ts} +0 -0
  218. /package/{types/fundamental-ngx-core-datetime-picker.d.ts → datetime-picker/index.d.ts} +0 -0
  219. /package/{types/fundamental-ngx-core-dialog.d.ts → dialog/index.d.ts} +0 -0
  220. /package/{types/fundamental-ngx-core-dynamic-page.d.ts → dynamic-page/index.d.ts} +0 -0
  221. /package/{types/fundamental-ngx-core-dynamic-side-content.d.ts → dynamic-side-content/index.d.ts} +0 -0
  222. /package/{types/fundamental-ngx-core-facets.d.ts → facets/index.d.ts} +0 -0
  223. /package/{types/fundamental-ngx-core-feed-input.d.ts → feed-input/index.d.ts} +0 -0
  224. /package/{types/fundamental-ngx-core-feed-list-item.d.ts → feed-list-item/index.d.ts} +0 -0
  225. /package/{types/fundamental-ngx-core-file-uploader.d.ts → file-uploader/index.d.ts} +0 -0
  226. /package/{types/fundamental-ngx-core-fixed-card-layout.d.ts → fixed-card-layout/index.d.ts} +0 -0
  227. /package/{types/fundamental-ngx-core-flexible-column-layout.d.ts → flexible-column-layout/index.d.ts} +0 -0
  228. /package/{types/fundamental-ngx-core-form.d.ts → form/index.d.ts} +0 -0
  229. /package/{types/fundamental-ngx-core-formatted-text.d.ts → formatted-text/index.d.ts} +0 -0
  230. /package/{types/fundamental-ngx-core-generic-tag.d.ts → generic-tag/index.d.ts} +0 -0
  231. /package/{types/fundamental-ngx-core-grid-list.d.ts → grid-list/index.d.ts} +0 -0
  232. /package/{types/fundamental-ngx-core-icon.d.ts → icon/index.d.ts} +0 -0
  233. /package/{types/fundamental-ngx-core-illustrated-message.d.ts → illustrated-message/index.d.ts} +0 -0
  234. /package/{types/fundamental-ngx-core.d.ts → index.d.ts} +0 -0
  235. /package/{types/fundamental-ngx-core-infinite-scroll.d.ts → infinite-scroll/index.d.ts} +0 -0
  236. /package/{types/fundamental-ngx-core-info-label.d.ts → info-label/index.d.ts} +0 -0
  237. /package/{types/fundamental-ngx-core-inline-help.d.ts → inline-help/index.d.ts} +0 -0
  238. /package/{types/fundamental-ngx-core-input-group.d.ts → input-group/index.d.ts} +0 -0
  239. /package/{types/fundamental-ngx-core-layout-grid.d.ts → layout-grid/index.d.ts} +0 -0
  240. /package/{types/fundamental-ngx-core-layout-panel.d.ts → layout-panel/index.d.ts} +0 -0
  241. /package/{types/fundamental-ngx-core-link.d.ts → link/index.d.ts} +0 -0
  242. /package/{types/fundamental-ngx-core-list.d.ts → list/index.d.ts} +0 -0
  243. /package/{types/fundamental-ngx-core-menu.d.ts → menu/index.d.ts} +0 -0
  244. /package/{types/fundamental-ngx-core-message-box.d.ts → message-box/index.d.ts} +0 -0
  245. /package/{types/fundamental-ngx-core-message-page.d.ts → message-page/index.d.ts} +0 -0
  246. /package/{types/fundamental-ngx-core-message-strip.d.ts → message-strip/index.d.ts} +0 -0
  247. /package/{types/fundamental-ngx-core-message-toast.d.ts → message-toast/index.d.ts} +0 -0
  248. /package/{types/fundamental-ngx-core-micro-process-flow.d.ts → micro-process-flow/index.d.ts} +0 -0
  249. /package/{types/fundamental-ngx-core-mobile-mode.d.ts → mobile-mode/index.d.ts} +0 -0
  250. /package/{types/fundamental-ngx-core-multi-combobox.d.ts → multi-combobox/index.d.ts} +0 -0
  251. /package/{types/fundamental-ngx-core-multi-input.d.ts → multi-input/index.d.ts} +0 -0
  252. /package/{types/fundamental-ngx-core-nested-list.d.ts → nested-list/index.d.ts} +0 -0
  253. /package/{types/fundamental-ngx-core-notification.d.ts → notification/index.d.ts} +0 -0
  254. /package/{types/fundamental-ngx-core-object-attribute.d.ts → object-attribute/index.d.ts} +0 -0
  255. /package/{types/fundamental-ngx-core-object-identifier.d.ts → object-identifier/index.d.ts} +0 -0
  256. /package/{types/fundamental-ngx-core-object-marker.d.ts → object-marker/index.d.ts} +0 -0
  257. /package/{types/fundamental-ngx-core-object-number.d.ts → object-number/index.d.ts} +0 -0
  258. /package/{types/fundamental-ngx-core-object-status.d.ts → object-status/index.d.ts} +0 -0
  259. /package/{types/fundamental-ngx-core-overflow-layout.d.ts → overflow-layout/index.d.ts} +0 -0
  260. /package/{types/fundamental-ngx-core-pagination.d.ts → pagination/index.d.ts} +0 -0
  261. /package/{types/fundamental-ngx-core-panel.d.ts → panel/index.d.ts} +0 -0
  262. /package/{types/fundamental-ngx-core-popover.d.ts → popover/index.d.ts} +0 -0
  263. /package/{types/fundamental-ngx-core-product-switch.d.ts → product-switch/index.d.ts} +0 -0
  264. /package/{types/fundamental-ngx-core-progress-indicator.d.ts → progress-indicator/index.d.ts} +0 -0
  265. /package/{types/fundamental-ngx-core-quick-view.d.ts → quick-view/index.d.ts} +0 -0
  266. /package/{types/fundamental-ngx-core-radio.d.ts → radio/index.d.ts} +0 -0
  267. /package/{types/fundamental-ngx-core-rating-indicator.d.ts → rating-indicator/index.d.ts} +0 -0
  268. /package/{types/fundamental-ngx-core-resizable-card-layout.d.ts → resizable-card-layout/index.d.ts} +0 -0
  269. /package/{types/fundamental-ngx-core-scroll-spy.d.ts → scroll-spy/index.d.ts} +0 -0
  270. /package/{types/fundamental-ngx-core-scrollbar.d.ts → scrollbar/index.d.ts} +0 -0
  271. /package/{types/fundamental-ngx-core-segmented-button.d.ts → segmented-button/index.d.ts} +0 -0
  272. /package/{types/fundamental-ngx-core-select.d.ts → select/index.d.ts} +0 -0
  273. /package/{types/fundamental-ngx-core-settings.d.ts → settings/index.d.ts} +0 -0
  274. /package/{types/fundamental-ngx-core-shared.d.ts → shared/index.d.ts} +0 -0
  275. /package/{types/fundamental-ngx-core-side-navigation.d.ts → side-navigation/index.d.ts} +0 -0
  276. /package/{types/fundamental-ngx-core-skeleton.d.ts → skeleton/index.d.ts} +0 -0
  277. /package/{types/fundamental-ngx-core-slider.d.ts → slider/index.d.ts} +0 -0
  278. /package/{types/fundamental-ngx-core-split-button.d.ts → split-button/index.d.ts} +0 -0
  279. /package/{types/fundamental-ngx-core-status-indicator.d.ts → status-indicator/index.d.ts} +0 -0
  280. /package/{types/fundamental-ngx-core-step-input.d.ts → step-input/index.d.ts} +0 -0
  281. /package/{types/fundamental-ngx-core-switch.d.ts → switch/index.d.ts} +0 -0
  282. /package/{types/fundamental-ngx-core-table.d.ts → table/index.d.ts} +0 -0
  283. /package/{types/fundamental-ngx-core-tabs.d.ts → tabs/index.d.ts} +0 -0
  284. /package/{types/fundamental-ngx-core-tests.d.ts → tests/index.d.ts} +0 -0
  285. /package/{types/fundamental-ngx-core-text.d.ts → text/index.d.ts} +0 -0
  286. /package/{types/fundamental-ngx-core-theming.d.ts → theming/index.d.ts} +0 -0
  287. /package/{types/fundamental-ngx-core-tile.d.ts → tile/index.d.ts} +0 -0
  288. /package/{types/fundamental-ngx-core-time.d.ts → time/index.d.ts} +0 -0
  289. /package/{types/fundamental-ngx-core-time-picker.d.ts → time-picker/index.d.ts} +0 -0
  290. /package/{types/fundamental-ngx-core-timeline.d.ts → timeline/index.d.ts} +0 -0
  291. /package/{types/fundamental-ngx-core-title.d.ts → title/index.d.ts} +0 -0
  292. /package/{types/fundamental-ngx-core-token.d.ts → token/index.d.ts} +0 -0
  293. /package/{types/fundamental-ngx-core-tree.d.ts → tree/index.d.ts} +0 -0
  294. /package/{types/fundamental-ngx-core-upload-collection.d.ts → upload-collection/index.d.ts} +0 -0
  295. /package/{types/fundamental-ngx-core-user-menu.d.ts → user-menu/index.d.ts} +0 -0
  296. /package/{types/fundamental-ngx-core-vertical-navigation.d.ts → vertical-navigation/index.d.ts} +0 -0
  297. /package/{types/fundamental-ngx-core-wizard.d.ts → wizard/index.d.ts} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"fundamental-ngx-core-time.mjs","sources":["../../../../libs/core/time/time-column/time-column.component.ts","../../../../libs/core/time/time-column/time-column.component.html","../../../../libs/core/time/errors.ts","../../../../libs/core/time/time.component.ts","../../../../libs/core/time/time.component.html","../../../../libs/core/time/time.module.ts","../../../../libs/core/time/fundamental-ngx-core-time.ts"],"sourcesContent":["import { DOWN_ARROW, SPACE, UP_ARROW } from '@angular/cdk/keycodes';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n HostBinding,\n HostListener,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n QueryList,\n SimpleChanges,\n ViewChild,\n ViewChildren,\n ViewEncapsulation\n} from '@angular/core';\nimport { BehaviorSubject, Subject, Subscription, combineLatest } from 'rxjs';\nimport { buffer, debounceTime, filter, map, tap } from 'rxjs/operators';\n\nimport { KeyUtil, resizeObservable } from '@fundamental-ngx/cdk/utils';\nimport { CarouselConfig, CarouselDirective, CarouselItemDirective, PanEndOutput } from '@fundamental-ngx/core/carousel';\n\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { SelectableViewItem } from '../models';\nimport { TimeColumnConfig } from './time-column-config';\n\nlet timeColumnUniqueId = 0;\n\nexport interface TimeColumnItemOutput<T> {\n value: T;\n after?: boolean;\n}\n\n@Component({\n selector: 'fd-time-column',\n templateUrl: './time-column.component.html',\n styleUrl: './time-column.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'fd-time__col'\n },\n imports: [ButtonComponent, CarouselDirective, CarouselItemDirective, FdTranslatePipe]\n})\nexport class TimeColumnComponent<K extends number, T extends SelectableViewItem<K> = SelectableViewItem<K>>\n implements AfterViewInit, OnInit, OnDestroy, OnChanges\n{\n /** items in row */\n @Input()\n rows: T[] = [];\n\n /**\n * @Input When set to false, hides the buttons that increment\n * and decrement the corresponding columns.\n */\n @Input()\n spinners = true;\n\n /** Currently chosen, centered time column item */\n @Input()\n set activeValue(activeItem: Nullable<T>) {\n if (!activeItem) {\n // omitting \"null\" and \"undefined\"\n return;\n }\n if (this._viewInit$.value && this._activeValue !== activeItem) {\n this._pickTime(this._getItem(activeItem), false);\n }\n this._activeValue = activeItem;\n }\n\n get activeValue(): Nullable<T> {\n return this._activeValue;\n }\n\n /** Defines if column is active, it has impact on behavior and visual */\n @Input()\n set active(value: boolean) {\n this._active = value;\n if (value && this._viewInit$.value) {\n this._changeDetRef.detectChanges();\n this._pickTime(this._getItem(this.activeValue), false);\n this._focusIndicator();\n }\n }\n\n get active(): boolean {\n return this._active;\n }\n\n /** Whether time column is meridian */\n @Input()\n @HostBinding('class.fd-time__col--period')\n meridian = false;\n\n /** Id of column, initiated with some default value */\n @Input()\n id: string = 'fd-time-column-' + timeColumnUniqueId++;\n\n /** I18n and labels */\n @Input()\n timeConfig: Nullable<TimeColumnConfig>;\n\n /** I18n and labels */\n @Input()\n columnTranslationsPreset: 'seconds' | 'minutes' | 'hours' | 'period';\n\n /**\n * Offset for carousel directive, active item is always the first one.\n * In case of having more items in carousel than 1, middle element should be active\n */\n @Input()\n set offset(value: number) {\n this._offset$.next(value);\n }\n get offset(): number {\n return this._offset$.value;\n }\n\n /**\n * Quantity of the elements to be shown at the same time in column\n */\n @Input()\n set elementsAtOnce(value: number) {\n this._elementsAtOnce$.next(value);\n }\n\n /** Event emitted, when active item is changed, by carousel */\n @Output()\n activeValueChange: EventEmitter<TimeColumnItemOutput<T>> = new EventEmitter<TimeColumnItemOutput<T>>();\n\n /** Event emitted, when certain column is activated */\n @Output()\n activeStateChange: EventEmitter<void> = new EventEmitter<void>();\n\n /** @hidden */\n @ViewChild(CarouselDirective)\n carousel: CarouselDirective;\n\n /** @hidden */\n @ViewChildren(CarouselItemDirective)\n items: QueryList<CarouselItemDirective<T>>;\n\n /** @hidden */\n @ViewChild('indicator', { read: ElementRef })\n indicator: ElementRef;\n\n /** @hidden */\n wrapperHeight: number;\n\n /**\n * Time to wait in milliseconds after the last keydown before\n * focusing or selecting option based on numeric/alpha keys.\n * @hidden\n */\n typeaheadDebounceInterval = 750;\n\n /** @hidden */\n config: CarouselConfig;\n\n /** @hidden */\n internalTranslationConfig: TimeColumnConfig | null = null;\n\n /** @hidden */\n get currentIndicatorId(): string {\n return this.id + '-current-indicator';\n }\n\n /** @hidden */\n get currentIndicatorValueId(): string {\n return this.currentIndicatorId + '-value';\n }\n\n /** @hidden */\n private _elementsAtOnce$ = new BehaviorSubject(7);\n\n /** @hidden */\n private _offset$ = new BehaviorSubject(3);\n\n /** @hidden */\n private _active = false;\n\n /** @hidden */\n private _queryKeyDownEvent: Subject<string> = new Subject<string>();\n\n /** @hidden */\n private _activeValue: Nullable<T>;\n\n /** @hidden */\n private _activeCarouselItem: CarouselItemDirective<T>;\n\n /** @hidden */\n private _isDragging = false;\n\n /** @hidden */\n private _viewInit$ = new BehaviorSubject<boolean>(false);\n\n /** @hidden */\n private _resize$ = new BehaviorSubject<boolean>(false);\n\n /** @hidden */\n private _subscriptions: Subscription = new Subscription();\n\n /** @hidden\n * logs numeric key inputs to set time using keyboard input.\n */\n private _keyLog: string[] = [];\n\n /** @hidden\n * Timeout variable used to set timeout for subsequent numeric key input to set time.\n */\n private _numericInputTimeout: ReturnType<typeof setTimeout>;\n\n /** @hidden */\n constructor(\n private _changeDetRef: ChangeDetectorRef,\n private _elmRef: ElementRef\n ) {\n this._subscriptions.add(\n combineLatest([this._viewInit$, this._elementsAtOnce$, this._offset$, this._resize$])\n .pipe(\n filter(([viewInit]) => viewInit),\n tap(([, elementsAtOnce, offset]) => {\n const averageHeight =\n this.items.toArray().reduce((acc, next) => acc + next.getHeight(), 0) / this.items.length;\n this.wrapperHeight = averageHeight * elementsAtOnce;\n const visibleButNotSelectedElements = Math.floor(elementsAtOnce / 2);\n if (offset !== 3) {\n this.items.first.element.style.marginTop = `${\n visibleButNotSelectedElements * averageHeight\n }px`;\n this.items.last.element.style.marginBottom = `${\n visibleButNotSelectedElements * averageHeight\n }px`;\n }\n\n if (this.activeValue) {\n this._pickTime(this._getItem(this.activeValue), false);\n }\n\n this._changeDetRef.detectChanges();\n })\n )\n .subscribe()\n );\n }\n\n /** @hidden */\n @HostListener('click')\n onItemClick(): void {\n this.activeStateChange.emit();\n }\n\n /** @hidden */\n @HostListener('keydown', ['$event'])\n keyDownHandler(event: KeyboardEvent): void {\n if (KeyUtil.isKeyCode(event, DOWN_ARROW)) {\n this.scrollDown();\n event.preventDefault();\n } else if (KeyUtil.isKeyCode(event, UP_ARROW)) {\n this.scrollUp();\n event.preventDefault();\n } else if (KeyUtil.isKeyType(event, 'numeric')) {\n this._numericKeyInputHandler(event);\n } else if (KeyUtil.isKeyType(event, 'alphabetical')) {\n this._alphaKeyInputHandler(event);\n }\n }\n\n /** @hidden */\n @HostListener('wheel', ['$event'])\n mouseScrollHandler(event: WheelEvent): void {\n event.preventDefault();\n if (this._active) {\n event.deltaY > 0 ? this.scrollDown() : this.scrollUp();\n }\n }\n\n /** @hidden */\n ngOnInit(): void {\n this._subscriptions.add(this._elementsAtOnce$.pipe(tap(() => this._setUpCarouselConfiguration())).subscribe());\n this._setUpQuerySubscription();\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._subscriptions.add(\n resizeObservable(this._elmRef.nativeElement).subscribe(() => {\n this._resize$.next(true);\n })\n );\n this._viewInit$.next(true);\n }\n\n /** @hidde */\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.columnTranslationsPreset) {\n this._updateInternalTranslationConfig();\n }\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n /** @hidden */\n spinnerButtonKeyupHandle(event: KeyboardEvent, upButton?: boolean): void {\n if (KeyUtil.isKeyCode(event, SPACE)) {\n if (upButton) {\n this.scrollUp();\n } else {\n this.scrollDown();\n }\n\n event.stopPropagation();\n event.preventDefault();\n }\n }\n\n /** @hidden */\n setValueOfActive(): void {\n if (this._active) {\n this._setUpInitialValue();\n }\n }\n\n /** It prevents from accidentally change the item by click event */\n handleDrag(isDragging: boolean): void {\n this._isDragging = isDragging;\n }\n\n /** Method that handles active item change */\n activeChangedHandle(output: PanEndOutput): void {\n const array = this.items.toArray();\n let index: number = array.findIndex((__item) => __item === output.item) + this.offset;\n\n if (index >= array.length) {\n index = index - array.length;\n }\n\n const _item = array[index];\n\n this._activeValue = _item.value;\n\n this.activeValueChange.emit({\n value: this._activeValue!,\n after: output.after\n });\n\n this._activeCarouselItem = _item;\n }\n\n /** Method that changes active item and triggers carousel scroll */\n pick(item: CarouselItemDirective<T>, index: number): void {\n const currentIndex: number = this.items.toArray().findIndex((_item) => _item === this._activeCarouselItem);\n /** To prevent from switching time, when it's being dragged */\n if (!this._isDragging) {\n this._pickTime(item, true, true, currentIndex < index);\n }\n }\n\n /** Method triggered by keyboard, or increment button */\n scrollUp(event?: MouseEvent): void {\n /** Keyboard events in reactive forms, shouldn't trigger this method */\n if (event && !event.clientX) {\n return;\n }\n let index: number = this.items.toArray().findIndex((_item) => _item === this._activeCarouselItem);\n if (index > 0) {\n index--;\n } else {\n index = this.rows.length - 1;\n }\n\n this._pickTime(this.items.toArray()[index], true, true, false);\n }\n\n /** Method triggered by keyboard, or decrement button */\n scrollDown(): void {\n let index: number = this.items.toArray().findIndex((_item) => _item === this._activeCarouselItem);\n if (index < this.rows.length - 1) {\n index++;\n } else {\n index = 0;\n }\n\n this._pickTime(this.items.toArray()[index], true, true, true);\n }\n\n /** Focus on column */\n focus(): void {\n this.indicator?.nativeElement.focus();\n }\n\n /**\n * Create id for column item\n * @param index column item index\n * @returns column item id\n * @hidden\n */\n _createColumnItemIdByIndex(index: number): string {\n return this.id + index;\n }\n\n /**\n * On focus callback\n * @hidden\n */\n _onFocusIndicator(): void {\n this.activeStateChange.emit();\n }\n\n /** @hidden\n * handles alphabetical key inputs to set period.\n */\n private _alphaKeyInputHandler(event: KeyboardEvent): void {\n if (event.key.toLowerCase() === 'a') {\n this._pickTimeOnValue('AM');\n } else if (event.key.toLowerCase() === 'p') {\n this._pickTimeOnValue('PM');\n }\n }\n\n /** @hidden\n * handles numeric key inputs to set time.\n */\n private _numericKeyInputHandler(event: KeyboardEvent): void {\n const lastItemValue = this.items.last.value.value; // value of last item in column\n\n this._numericInputTimeout && clearTimeout(this._numericInputTimeout);\n this._keyLog.push(event.key);\n const inputValue = parseInt(this._keyLog.join(''), 10); // converts keyLog elements to a number\n\n if (inputValue * 10 > lastItemValue || this._keyLog.length === lastItemValue.toString().length) {\n this._pickTimeOnValue(inputValue);\n } else {\n this._numericInputTimeout = setTimeout(() => {\n this._pickTimeOnValue(inputValue);\n }, 500);\n }\n }\n\n /** @hidden\n * set the time for given item value. used by _numericKeyInputHandler.\n */\n private _pickTimeOnValue(value: string | number): void {\n this._pickTime(\n this.items.find((item) => item.value.value === value),\n false,\n true,\n false\n );\n this._keyLog = []; // clear key log\n }\n\n /**\n * Method triggered by keyboard, or decrement button\n * Args:\n * item => picked carousel item, that should be centered\n * smooth => defines if transition time should be included in transform\n * emitEvent => defines if EventEmitter should be triggered by this change, set to false, when changed from outside\n * after => Defines if value was incremented/decremented, needed for hours to trigger AM/PM change\n * @hidden\n */\n private _pickTime(item?: CarouselItemDirective<T>, smooth?: boolean, emitEvent?: boolean, after?: boolean): void {\n if (!item) {\n return;\n }\n\n if (this.active) {\n this._triggerCarousel(item, smooth);\n }\n\n this._activeCarouselItem = item;\n this._activeValue = item.value;\n\n if (emitEvent) {\n this.activeValueChange.emit({\n value: item.value,\n after\n });\n }\n }\n\n /**\n * Returns item with passed value\n * @hidden\n */\n private _getItem(_item: Nullable<T>): CarouselItemDirective<T> | undefined {\n return this.items.find((item) => item.value?.value === _item?.value);\n }\n\n /** @hidden */\n private _triggerCarousel(item: CarouselItemDirective<T>, smooth?: boolean): void {\n const array = this.items.toArray();\n let index: number = array.findIndex((_item) => _item === item) - this.offset;\n\n if (index < 0) {\n index = array.length + index;\n }\n\n this.carousel.goToItem(array[index], smooth);\n }\n\n /**\n * Focus current indicator, which allows to handle keydown events inside column\n * @hidden\n */\n private _focusIndicator(): void {\n document.getElementById(this.currentIndicatorId)?.focus();\n }\n\n /** @hidden */\n private _getValue(value: string): any {\n if (!isNaN(Number(value))) {\n return Number(value);\n } else {\n return value;\n }\n }\n\n /** @hidden */\n private _setUpQuerySubscription(): void {\n const trigger = this._queryKeyDownEvent.pipe(debounceTime(this.typeaheadDebounceInterval));\n\n this._subscriptions.add(\n this._queryKeyDownEvent\n .pipe(\n buffer(trigger),\n map((keys) => keys.join('')),\n map((value) => this._getValue(value)),\n map((value) => this._getItem(value))\n )\n .subscribe((item) => this._pickTime(item, false, true))\n );\n }\n\n /** @hidden */\n private _setUpCarouselConfiguration(): void {\n const config: CarouselConfig = {\n gestureSupport: true,\n vertical: true,\n elementsAtOnce: this._elementsAtOnce$.value,\n transition: '150ms'\n };\n // Enable infinite scrolling only if not meridian column and have enough items\n // Need more items than elementsAtOnce for infinite scrolling to work\n if (!this.meridian && this.rows.length > this._elementsAtOnce$.value) {\n config.infinite = true;\n }\n this.config = config;\n }\n\n /** @hidden */\n private _setUpInitialValue(): void {\n if (!this._activeValue) {\n this._activeValue = this.items.first.value;\n }\n this._pickTime(this._getItem(this._activeValue), false);\n }\n\n /** @hidden */\n private _updateInternalTranslationConfig(): void {\n switch (this.columnTranslationsPreset) {\n case 'hours':\n this.internalTranslationConfig = {\n increaseLabel: 'coreTime.increaseHoursLabel',\n label: 'coreTime.hrsLabel',\n fullLabel: 'coreTime.hoursLabel',\n decreaseLabel: 'coreTime.decreaseHoursLabel',\n navigationInstruction: 'coreTime.navigationInstruction'\n };\n break;\n case 'minutes':\n this.internalTranslationConfig = {\n increaseLabel: 'coreTime.increaseMinutesLabel',\n label: 'coreTime.minLabel',\n fullLabel: 'coreTime.minutesLabel',\n decreaseLabel: 'coreTime.decreaseMinutesLabel',\n navigationInstruction: 'coreTime.navigationInstruction'\n };\n break;\n case 'seconds':\n this.internalTranslationConfig = {\n increaseLabel: 'coreTime.increaseSecondsLabel',\n label: 'coreTime.secLabel',\n fullLabel: 'coreTime.secondsLabel',\n decreaseLabel: 'coreTime.decreaseSecondsLabel',\n navigationInstruction: 'coreTime.navigationInstruction'\n };\n break;\n case 'period':\n this.internalTranslationConfig = {\n increaseLabel: 'coreTime.increasePeriodLabel',\n label: 'coreTime.periodLabel',\n fullLabel: 'coreTime.periodLabel',\n decreaseLabel: 'coreTime.decreasePeriodLabel',\n navigationInstruction: 'coreTime.navigationInstruction'\n };\n break;\n\n default:\n this.internalTranslationConfig = null;\n break;\n }\n this._changeDetRef.markForCheck();\n }\n}\n","<label class=\"fd-time__slider-label\">{{\n timeConfig?.label || (internalTranslationConfig && (internalTranslationConfig.label | fdTranslate))\n}}</label>\n@if (active && spinners) {\n <button\n fd-button\n fdType=\"transparent\"\n glyph=\"navigation-up-arrow\"\n tabindex=\"-1\"\n [title]=\"\n timeConfig?.decreaseLabel ||\n (internalTranslationConfig && (internalTranslationConfig.decreaseLabel | fdTranslate))\n \"\n [ariaLabel]=\"\n timeConfig?.decreaseLabel ||\n (internalTranslationConfig && (internalTranslationConfig.decreaseLabel | fdTranslate))\n \"\n (keyup)=\"spinnerButtonKeyupHandle($event, true)\"\n (click)=\"scrollUp($event)\"\n ></button>\n}\n<div\n class=\"fd-time__wrapper\"\n [class.fd-time__wrapper--active]=\"active\"\n [class.fd-time__wrapper--meridian]=\"meridian\"\n [style.height.px]=\"active ? wrapperHeight : ''\"\n>\n <ul\n class=\"fd-time__list\"\n [class.fd-time-column-custom-hidden]=\"!active\"\n [config]=\"config\"\n (click)=\"indicator.focus()\"\n (activeChange)=\"activeChangedHandle($event)\"\n (dragStateChange)=\"handleDrag($event)\"\n fdCarousel\n >\n @for (row of rows; track row; let index = $index) {\n <li\n class=\"fd-time__item\"\n fdCarouselItem\n #item=\"fdCarouselItem\"\n [id]=\"_createColumnItemIdByIndex(index)\"\n [attr.data-displayed-value]=\"row.value\"\n [value]=\"row\"\n >\n <span class=\"fd-time__unit\" role=\"button\" [attr.aria-label]=\"row.label\" (click)=\"pick(item, index)\">\n {{ row.label }}\n </span>\n </li>\n }\n </ul>\n <div\n class=\"fd-time__current-indicator\"\n #indicator\n tabindex=\"0\"\n role=\"listbox\"\n [attr.id]=\"currentIndicatorId\"\n [class.fd-time-column-custom-hidden]=\"!active\"\n [attr.aria-labelledby]=\"currentIndicatorValueId\"\n [attr.aria-description]=\"\n timeConfig?.navigationInstruction ||\n (internalTranslationConfig && (internalTranslationConfig.navigationInstruction | fdTranslate))\n \"\n (focus)=\"_onFocusIndicator()\"\n >\n <span\n class=\"fd-time-column-custom-hidden\"\n aria-atomic=\"true\"\n [attr.aria-hidden]=\"!active\"\n [attr.id]=\"currentIndicatorValueId\"\n [class.fd-time-column-custom-hidden]=\"active\"\n >\n {{ activeValue?.label }}\n {{\n timeConfig?.label || (internalTranslationConfig && (internalTranslationConfig.fullLabel | fdTranslate))\n }}\n </span>\n </div>\n @if (!active) {\n <span class=\"fd-time__item fd-time__item--collapsed\">\n {{ activeValue?.label }}\n </span>\n }\n</div>\n@if (active && spinners) {\n <button\n fd-button\n fdType=\"transparent\"\n glyph=\"navigation-down-arrow\"\n tabindex=\"-1\"\n [title]=\"\n timeConfig?.increaseLabel ||\n (internalTranslationConfig && (internalTranslationConfig.increaseLabel | fdTranslate))\n \"\n [ariaLabel]=\"\n timeConfig?.increaseLabel ||\n (internalTranslationConfig && (internalTranslationConfig.increaseLabel | fdTranslate))\n \"\n (keyup)=\"spinnerButtonKeyupHandle($event)\"\n (click)=\"scrollDown()\"\n ></button>\n}\n","/** Creates an error to be thrown when attempting to use an invalid date implementation. */\nexport function createMissingDateImplementationError(provider: string): Error {\n return Error(\n `FdTime: No provider found for ${provider}. You must import one of the following ` +\n `modules at your application root: FdDatetimeModule, or provide a ` +\n `custom implementation.`\n );\n}\n","import { LEFT_ARROW, RIGHT_ARROW } from '@angular/cdk/keycodes';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n ElementRef,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Optional,\n QueryList,\n SimpleChanges,\n ViewChildren,\n ViewEncapsulation,\n computed,\n forwardRef,\n inject,\n input\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Subscription } from 'rxjs';\n\nimport { KeyUtil, RtlService } from '@fundamental-ngx/cdk/utils';\nimport { DatetimeAdapter } from '@fundamental-ngx/core/datetime';\n\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ContentDensityObserver, contentDensityObserverProviders } from '@fundamental-ngx/core/content-density';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { createMissingDateImplementationError } from './errors';\nimport { Meridian, SelectableViewItem } from './models';\nimport { TimeColumnComponent } from './time-column/time-column.component';\n\nexport type FdTimeActiveView = 'hour' | 'minute' | 'second' | 'meridian';\n\ntype HourViewItem = SelectableViewItem<number>;\ntype MinuteViewItem = SelectableViewItem<number>;\ntype SecondViewItem = SelectableViewItem<number>;\ntype MeridianViewItem = SelectableViewItem<Meridian>;\n\n@Component({\n selector: 'fd-time',\n templateUrl: './time.component.html',\n styleUrl: './time.component.scss',\n host: {\n '(focusout)': '_focusOut($event)',\n '(blur)': 'onTouched()'\n },\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TimeComponent),\n multi: true\n },\n contentDensityObserverProviders()\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [TimeColumnComponent, FdTranslatePipe]\n})\nexport class TimeComponent<D> implements OnInit, OnChanges, OnDestroy, AfterViewInit, ControlValueAccessor {\n /**\n * @Input When set to false, uses the 24 hour clock (hours ranging from 0 to 23)\n * and does not display a period control.\n */\n @Input()\n meridian = false;\n\n /**\n * @Input When set to false, does not set the input field to invalid state on invalid entry.\n */\n @Input()\n validate = true;\n\n /**\n * @Input when set to true, time inputs won't allow to have 1 digit\n * for example 9 will become 09\n * but 12 will be kept as 12.\n */\n @Input()\n keepTwoDigits = false;\n\n /**\n * @Input Disables the component.\n */\n @Input()\n disabled: boolean;\n\n /**\n * @Input When set to false, hides the input for seconds.\n */\n @Input()\n displaySeconds = true;\n\n /** @Input When set to false, hides the input for minutes. */\n @Input()\n displayMinutes = true;\n\n /**\n * When set to false, hides the input for hours\n */\n @Input()\n displayHours = true;\n\n /** @Input Defines if time component should be used in tablet mode */\n @Input()\n tablet = false;\n\n /** @Input Defines quantity of the elements, that are visible at the same time. Should be odd number */\n @Input()\n elementsAtOnce = 7;\n\n /**\n * @Input An object that contains datetime representation\n */\n @Input()\n time: D;\n\n /** @Input Whether to show spinner buttons */\n @Input()\n spinnerButtons = true;\n\n /** @hidden */\n @ViewChildren(TimeColumnComponent)\n columns: QueryList<TimeColumnComponent<number, SelectableViewItem<number>>>;\n\n /**\n * The interval between selectable minutes (e.g., 1 for every minute, 5 for 5-minute intervals, 15 for 15-minute intervals).\n * Defaults to 1 (every minute).\n */\n readonly minuteStep = input<number>(1);\n\n /** Active column view to iterate with */\n activeView: FdTimeActiveView = 'hour';\n\n /**\n * @hidden\n * container for [0 - 23] hours\n */\n protected hourViewItems: HourViewItem[] = [];\n /**\n * @hidden\n * reference to currently selected hourViewItems element\n */\n protected activeHourViewItem?: HourViewItem;\n\n /**\n * @hidden\n * container for [0 - 59] minutes\n */\n protected minuteViewItems: MinuteViewItem[] = [];\n /**\n * @hidden\n * reference to currently selected minuteViewItems element\n */\n protected activeMinuteViewItem?: MinuteViewItem;\n\n /**\n * @hidden\n * container for [0 - 59] seconds\n */\n protected secondViewItems: SecondViewItem[] = [];\n /**\n * @hidden\n * reference to currently selected secondViewItems element\n */\n protected activeSecondViewItem?: SecondViewItem;\n\n /**\n * @hidden\n * container for [am, pm] meridian values\n */\n protected meridianViewItems: MeridianViewItem[] = [];\n /**\n * @hidden\n * reference to currently selected meridianViewItems element\n */\n protected activeMeridianViewItem?: MeridianViewItem;\n\n /** Offset computed signal */\n protected readonly offset = computed(() => Math.floor(this.elementsAtOnce / 2));\n\n /** Offset for minutes column, adjusted for minuteStep */\n protected readonly minuteOffset = computed(() => {\n const step = this.minuteStep();\n const stepCount = Math.ceil(60 / step);\n const effectiveElementsAtOnce = Math.min(this.elementsAtOnce, stepCount);\n // Ensure effective count is odd for proper centering (need equal items above and below focused item)\n const adjustedElementsAtOnce =\n effectiveElementsAtOnce % 2 === 0 ? effectiveElementsAtOnce - 1 : effectiveElementsAtOnce;\n return Math.floor(adjustedElementsAtOnce / 2);\n });\n\n /** @hidden */\n private readonly _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n private _subscriptions = new Subscription();\n\n /** @hidden */\n constructor(\n private _changeDetectorRef: ChangeDetectorRef,\n private _elementRef: ElementRef,\n // Use @Optional to avoid angular injection error message and throw our own which is more precise one\n @Optional() private _dateTimeAdapter: DatetimeAdapter<D>,\n readonly _contentDensityObserver: ContentDensityObserver,\n @Optional() private _rtlService: RtlService\n ) {\n if (!_dateTimeAdapter) {\n throw createMissingDateImplementationError('DateTimeAdapter');\n }\n\n this.time = this._getDefaultValue();\n }\n\n /** @hidden */\n ngOnInit(): void {\n this._dateTimeAdapter.localeChanges.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => {\n this._setUpViewGrid();\n this._changeDetectorRef.detectChanges();\n });\n\n this._setUpViewGrid();\n }\n\n /** @hidden\n * Reacts only when there is meridian, time, or minuteStep input change\n */\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.meridian || changes.time || changes.minuteStep) {\n this._setUpViewGrid();\n }\n if (changes.elementsAtOnce && changes.elementsAtOnce.currentValue % 2 === 0) {\n throw new Error('[elementsAtOnce] should be odd number');\n }\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this.refreshColumns();\n }\n\n /** @hidden */\n onChange: (value: D) => void = () => {};\n\n /** @hidden */\n onTouched = (): void => {};\n\n /** @hidden */\n registerOnChange(fn: (time: D) => void): void {\n this.onChange = fn;\n }\n\n /** @hidden */\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n /** @hidden */\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this._changeDetectorRef.detectChanges();\n }\n\n /** @hidden */\n refreshColumns(): void {\n this.columns.forEach((column) => column.setValueOfActive());\n }\n\n /**\n * @hidden\n * Handles meridian change.\n * This implicitly changes hours by +/- 12\n */\n handleMeridianChange(meridian: Meridian): void {\n let hourOffset: number = meridian === Meridian.AM ? -12 : 12;\n let currentHour = this._getModelHour();\n\n if (currentHour > 12 && meridian === Meridian.PM) {\n currentHour -= 12;\n } else if (currentHour === 12) {\n currentHour = 0;\n } else if (currentHour < 12 && meridian === Meridian.AM) {\n hourOffset = 0;\n }\n\n const newHour = Math.max(0, Math.min(23, currentHour + hourOffset));\n\n this.handleHourChange(newHour);\n }\n\n /** @hidden */\n handleSecondChange(second: number): void {\n this.time = this._dateTimeAdapter.setSeconds(this.time, second);\n this._calculateActiveSecondViewItem();\n this.onChange(this.time);\n }\n\n /** @hidden */\n handleMinuteChange(minute: number): void {\n this.time = this._dateTimeAdapter.setMinutes(this.time, minute);\n this._calculateActiveMinuteViewItem();\n this.onChange(this.time);\n }\n\n /**\n * @hidden\n * Handles changes of displayed hour value from template.\n */\n handleHourChange(hour: number): void {\n this.time = this._dateTimeAdapter.setHours(this.time, hour);\n this._calculateActiveHourViewItem();\n\n if (this.meridian) {\n this._calculateActiveMeridianViewItem();\n }\n\n this.onChange(this.time);\n }\n\n /** @hidden */\n handleNextColumnFocus(column: FdTimeActiveView): void {\n const columns = this._getVisibleColumnsWithRtl();\n let nextIndex = columns.indexOf(column) + 1;\n if (nextIndex >= columns.length) {\n nextIndex = 0;\n }\n this.changeActive(columns[nextIndex]);\n }\n\n /** @hidden */\n handlePreviousColumnFocus(column: FdTimeActiveView): void {\n const columns = this._getVisibleColumnsWithRtl();\n let nextIndex = columns.indexOf(column) - 1;\n if (nextIndex < 0) {\n nextIndex = columns.length - 1;\n }\n this.changeActive(columns[nextIndex]);\n }\n\n /** @hidden */\n handleKeyDownEvent(event: KeyboardEvent): void {\n if (KeyUtil.isKeyCode(event, LEFT_ARROW)) {\n this.handlePreviousColumnFocus(this.activeView);\n event.preventDefault();\n this.focusActiveColumn();\n } else if (KeyUtil.isKeyCode(event, RIGHT_ARROW)) {\n this.handleNextColumnFocus(this.activeView);\n event.preventDefault();\n this.focusActiveColumn();\n }\n }\n\n /** @hidden */\n writeValue(time: D): void {\n if (!time || !this._dateTimeAdapter.isValid(time)) {\n time = this._getDefaultValue();\n }\n this.time = time;\n\n this._setUpActiveViewItems();\n\n this._changeDetectorRef.detectChanges();\n }\n\n /** @hidden */\n changeActive(view: FdTimeActiveView): void {\n this.activeView = view;\n this._changeDetectorRef.detectChanges();\n }\n\n /** @hidden */\n isActive(view: FdTimeActiveView): boolean {\n return this.activeView === view;\n }\n\n /** @hidden */\n focusActiveColumn(): void {\n const column = this.columns.find(({ active }) => active);\n column?.focus();\n }\n\n /** @hidden */\n protected _focusOut(event: FocusEvent): void {\n if (!this._elementRef.nativeElement.contains(event.relatedTarget)) {\n this.onTouched();\n }\n }\n\n /**\n * Get visible time columns\n * @returns visible columns list @see {FdTimeActiveView[]}\n */\n private _getVisibleColumns(): FdTimeActiveView[] {\n const allOptions: Array<[boolean, FdTimeActiveView]> = [\n [this.displayHours, 'hour'],\n [this.displayMinutes, 'minute'],\n [this.displaySeconds, 'second'],\n [this.meridian, 'meridian']\n ];\n return allOptions.filter(([enabled]) => enabled).map(([, view]) => view);\n }\n\n /**\n * Get visible columns taking into account RTL\n * @returns visible columns list @see {FdTimeActiveView[]}\n */\n private _getVisibleColumnsWithRtl(): FdTimeActiveView[] {\n const columns = this._getVisibleColumns();\n return this._rtlService?.rtl.value ? columns.reverse() : columns;\n }\n\n /** @hidden */\n private _setUpViewGrid(): void {\n this._constructHourViewItems();\n this._constructMinuteViewItems();\n this._constructSecondViewItems();\n this._constructMeridianViewItems();\n // update reference to active view items\n this._setUpActiveViewItems();\n }\n\n /** @hidden */\n private _setUpActiveViewItems(): void {\n this._calculateActiveHourViewItem();\n this._calculateActiveMinuteViewItem();\n this._calculateActiveSecondViewItem();\n this._calculateActiveMeridianViewItem();\n }\n\n /** @hidden */\n private _constructHourViewItems(): void {\n this.hourViewItems = this._dateTimeAdapter\n .getHourNames({ meridian: this.meridian, twoDigit: this.keepTwoDigits })\n .map((name, hour) => ({\n value: hour,\n label: name\n }));\n }\n\n /** @hidden */\n private _constructMinuteViewItems(): void {\n const step = this.minuteStep();\n this.minuteViewItems = this._dateTimeAdapter\n .getMinuteNames({ twoDigit: this.keepTwoDigits, minuteStep: step })\n .map((name, index) => ({\n value: index * step,\n label: name\n }));\n }\n\n /** @hidden */\n private _constructSecondViewItems(): void {\n this.secondViewItems = this._dateTimeAdapter\n .getSecondNames({ twoDigit: this.keepTwoDigits })\n .map((name, second) => ({\n value: second,\n label: name\n }));\n }\n\n /** @hidden */\n private _constructMeridianViewItems(): void {\n const [amLabel, pmLabel] = this._dateTimeAdapter.getDayPeriodNames();\n this.meridianViewItems = [\n { value: Meridian.AM, label: amLabel },\n { value: Meridian.PM, label: pmLabel }\n ];\n }\n\n /** @hidden */\n private _calculateActiveHourViewItem(): void {\n const hour = this._getModelHour();\n this.activeHourViewItem = this.hourViewItems.find(({ value }) => value === hour);\n }\n\n /** @hidden */\n private _calculateActiveMinuteViewItem(): void {\n const minute = this._getModelMinute();\n const step = this.minuteStep();\n\n // Round to the nearest valid step and clamp to valid range\n const roundedMinute = Math.min(Math.round(minute / step) * step, 59);\n\n this.activeMinuteViewItem = this.minuteViewItems.find(({ value }) => value === roundedMinute);\n }\n\n /** @hidden */\n private _calculateActiveSecondViewItem(): void {\n const second = this._getModelSecond();\n this.activeSecondViewItem = this.secondViewItems.find(({ value }) => value === second);\n }\n\n /** @hidden */\n private _calculateActiveMeridianViewItem(): void {\n const meridian = this._getDayPeriodByHour();\n this.activeMeridianViewItem = this.meridianViewItems.find(({ value }) => value === meridian);\n }\n\n /**\n * @hidden\n * Model hours (0 - 23)\n */\n private _getModelHour(): number {\n return this._dateTimeAdapter.getHours(this.time);\n }\n\n /**\n * @hidden\n * Model minutes (0 - 59)\n */\n private _getModelMinute(): number {\n return this._dateTimeAdapter.getMinutes(this.time);\n }\n\n /**\n * @hidden\n * Model seconds (0 - 59)\n */\n private _getModelSecond(): number {\n return this._dateTimeAdapter.getSeconds(this.time);\n }\n\n /**\n * @hidden\n * Get meridian period based on a given hours\n */\n private _getDayPeriodByHour(hour = this._getModelHour()): Meridian {\n return this._isPm(hour) ? Meridian.PM : Meridian.AM;\n }\n\n /** @hidden */\n private _isPm(hours: number = this._getModelHour()): boolean {\n return hours >= 12;\n }\n\n /**\n * @hidden\n * @returns default time 00:00:00\n */\n private _getDefaultValue(): D {\n return this._dateTimeAdapter.today();\n }\n}\n","<div\n class=\"fd-time\"\n [class.is-compact]=\"_contentDensityObserver.isCompactSignal()\"\n (keydown)=\"handleKeyDownEvent($event)\"\n [class.fd-time--tablet]=\"tablet\"\n [attr.aria-label]=\"'coreTime.componentAriaName' | fdTranslate\"\n>\n <fd-time-column\n [active]=\"isActive('hour')\"\n [rows]=\"hourViewItems\"\n [offset]=\"offset()\"\n [elementsAtOnce]=\"elementsAtOnce\"\n [activeValue]=\"activeHourViewItem\"\n columnTranslationsPreset=\"hours\"\n [spinners]=\"spinnerButtons\"\n (activeValueChange)=\"handleHourChange($event.value.value)\"\n (activeStateChange)=\"changeActive('hour')\"\n ></fd-time-column>\n @if (displayMinutes) {\n <fd-time-column\n [active]=\"isActive('minute')\"\n [rows]=\"minuteViewItems\"\n [offset]=\"minuteOffset()\"\n [elementsAtOnce]=\"elementsAtOnce\"\n [activeValue]=\"activeMinuteViewItem\"\n columnTranslationsPreset=\"minutes\"\n [spinners]=\"spinnerButtons\"\n (activeValueChange)=\"handleMinuteChange($event.value.value)\"\n (activeStateChange)=\"changeActive('minute')\"\n ></fd-time-column>\n }\n @if (displaySeconds) {\n <fd-time-column\n [active]=\"isActive('second')\"\n [rows]=\"secondViewItems\"\n [offset]=\"offset()\"\n [elementsAtOnce]=\"elementsAtOnce\"\n [activeValue]=\"activeSecondViewItem\"\n columnTranslationsPreset=\"seconds\"\n [spinners]=\"spinnerButtons\"\n (activeValueChange)=\"handleSecondChange($event.value.value)\"\n (activeStateChange)=\"changeActive('second')\"\n ></fd-time-column>\n }\n @if (meridian) {\n <fd-time-column\n [active]=\"isActive('meridian')\"\n [rows]=\"meridianViewItems\"\n [activeValue]=\"activeMeridianViewItem\"\n [offset]=\"0\"\n [elementsAtOnce]=\"elementsAtOnce\"\n columnTranslationsPreset=\"period\"\n [meridian]=\"true\"\n [spinners]=\"spinnerButtons\"\n (activeValueChange)=\"handleMeridianChange($event.value.value)\"\n (activeStateChange)=\"changeActive('meridian')\"\n ></fd-time-column>\n }\n</div>\n","import { NgModule } from '@angular/core';\n\nimport { TimeColumnComponent } from './time-column/time-column.component';\nimport { TimeComponent } from './time.component';\n\n/**\n * @deprecated\n * Use direct imports of `TimeComponent`, `TimeColumnComponent`\n */\n@NgModule({\n imports: [TimeComponent, TimeColumnComponent],\n exports: [TimeComponent, TimeColumnComponent]\n})\nexport class TimeModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fundamental-ngx-core-time.mjs","sources":["../tmp-esm2022/time/time-column/time-column.component.js","../tmp-esm2022/time/errors.js","../tmp-esm2022/time/time.component.js","../tmp-esm2022/time/time.module.js","../tmp-esm2022/time/fundamental-ngx-core-time.js"],"sourcesContent":["import { DOWN_ARROW, SPACE, UP_ARROW } from '@angular/cdk/keycodes';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, HostBinding, HostListener, Input, Output, QueryList, ViewChild, ViewChildren, ViewEncapsulation } from '@angular/core';\nimport { BehaviorSubject, Subject, Subscription, combineLatest } from 'rxjs';\nimport { buffer, debounceTime, filter, map, tap } from 'rxjs/operators';\nimport { KeyUtil, resizeObservable } from '@fundamental-ngx/cdk/utils';\nimport { CarouselDirective, CarouselItemDirective } from '@fundamental-ngx/core/carousel';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport * as i0 from \"@angular/core\";\nlet timeColumnUniqueId = 0;\nexport class TimeColumnComponent {\n /** Currently chosen, centered time column item */\n set activeValue(activeItem) {\n if (!activeItem) {\n // omitting \"null\" and \"undefined\"\n return;\n }\n if (this._viewInit$.value && this._activeValue !== activeItem) {\n this._pickTime(this._getItem(activeItem), false);\n }\n this._activeValue = activeItem;\n }\n get activeValue() {\n return this._activeValue;\n }\n /** Defines if column is active, it has impact on behavior and visual */\n set active(value) {\n this._active = value;\n if (value && this._viewInit$.value) {\n this._changeDetRef.detectChanges();\n this._pickTime(this._getItem(this.activeValue), false);\n this._focusIndicator();\n }\n }\n get active() {\n return this._active;\n }\n /**\n * Offset for carousel directive, active item is always the first one.\n * In case of having more items in carousel than 1, middle element should be active\n */\n set offset(value) {\n this._offset$.next(value);\n }\n get offset() {\n return this._offset$.value;\n }\n /**\n * Quantity of the elements to be shown at the same time in column\n */\n set elementsAtOnce(value) {\n this._elementsAtOnce$.next(value);\n }\n /** @hidden */\n get currentIndicatorId() {\n return this.id + '-current-indicator';\n }\n /** @hidden */\n get currentIndicatorValueId() {\n return this.currentIndicatorId + '-value';\n }\n /** @hidden */\n constructor(_changeDetRef, _elmRef) {\n this._changeDetRef = _changeDetRef;\n this._elmRef = _elmRef;\n /** items in row */\n this.rows = [];\n /**\n * @Input When set to false, hides the buttons that increment\n * and decrement the corresponding columns.\n */\n this.spinners = true;\n /** Whether time column is meridian */\n this.meridian = false;\n /** Id of column, initiated with some default value */\n this.id = 'fd-time-column-' + timeColumnUniqueId++;\n /** Event emitted, when active item is changed, by carousel */\n this.activeValueChange = new EventEmitter();\n /** Event emitted, when certain column is activated */\n this.activeStateChange = new EventEmitter();\n /**\n * Time to wait in milliseconds after the last keydown before\n * focusing or selecting option based on numeric/alpha keys.\n * @hidden\n */\n this.typeaheadDebounceInterval = 750;\n /** @hidden */\n this.internalTranslationConfig = null;\n /** @hidden */\n this._elementsAtOnce$ = new BehaviorSubject(7);\n /** @hidden */\n this._offset$ = new BehaviorSubject(3);\n /** @hidden */\n this._active = false;\n /** @hidden */\n this._queryKeyDownEvent = new Subject();\n /** @hidden */\n this._isDragging = false;\n /** @hidden */\n this._viewInit$ = new BehaviorSubject(false);\n /** @hidden */\n this._resize$ = new BehaviorSubject(false);\n /** @hidden */\n this._subscriptions = new Subscription();\n /** @hidden\n * logs numeric key inputs to set time using keyboard input.\n */\n this._keyLog = [];\n this._subscriptions.add(combineLatest([this._viewInit$, this._elementsAtOnce$, this._offset$, this._resize$])\n .pipe(filter(([viewInit]) => viewInit), tap(([, elementsAtOnce, offset]) => {\n const averageHeight = this.items.toArray().reduce((acc, next) => acc + next.getHeight(), 0) / this.items.length;\n this.wrapperHeight = averageHeight * elementsAtOnce;\n const visibleButNotSelectedElements = Math.floor(elementsAtOnce / 2);\n if (offset !== 3) {\n this.items.first.element.style.marginTop = `${visibleButNotSelectedElements * averageHeight}px`;\n this.items.last.element.style.marginBottom = `${visibleButNotSelectedElements * averageHeight}px`;\n }\n if (this.activeValue) {\n this._pickTime(this._getItem(this.activeValue), false);\n }\n this._changeDetRef.detectChanges();\n }))\n .subscribe());\n }\n /** @hidden */\n onItemClick() {\n this.activeStateChange.emit();\n }\n /** @hidden */\n keyDownHandler(event) {\n if (KeyUtil.isKeyCode(event, DOWN_ARROW)) {\n this.scrollDown();\n event.preventDefault();\n }\n else if (KeyUtil.isKeyCode(event, UP_ARROW)) {\n this.scrollUp();\n event.preventDefault();\n }\n else if (KeyUtil.isKeyType(event, 'numeric')) {\n this._numericKeyInputHandler(event);\n }\n else if (KeyUtil.isKeyType(event, 'alphabetical')) {\n this._alphaKeyInputHandler(event);\n }\n }\n /** @hidden */\n mouseScrollHandler(event) {\n event.preventDefault();\n if (this._active) {\n event.deltaY > 0 ? this.scrollDown() : this.scrollUp();\n }\n }\n /** @hidden */\n ngOnInit() {\n this._subscriptions.add(this._elementsAtOnce$.pipe(tap(() => this._setUpCarouselConfiguration())).subscribe());\n this._setUpQuerySubscription();\n }\n /** @hidden */\n ngAfterViewInit() {\n this._subscriptions.add(resizeObservable(this._elmRef.nativeElement).subscribe(() => {\n this._resize$.next(true);\n }));\n this._viewInit$.next(true);\n }\n /** @hidde */\n ngOnChanges(changes) {\n if (changes.columnTranslationsPreset) {\n this._updateInternalTranslationConfig();\n }\n }\n /** @hidden */\n ngOnDestroy() {\n this._subscriptions.unsubscribe();\n }\n /** @hidden */\n spinnerButtonKeyupHandle(event, upButton) {\n if (KeyUtil.isKeyCode(event, SPACE)) {\n if (upButton) {\n this.scrollUp();\n }\n else {\n this.scrollDown();\n }\n event.stopPropagation();\n event.preventDefault();\n }\n }\n /** @hidden */\n setValueOfActive() {\n if (this._active) {\n this._setUpInitialValue();\n }\n }\n /** It prevents from accidentally change the item by click event */\n handleDrag(isDragging) {\n this._isDragging = isDragging;\n }\n /** Method that handles active item change */\n activeChangedHandle(output) {\n const array = this.items.toArray();\n let index = array.findIndex((__item) => __item === output.item) + this.offset;\n if (index >= array.length) {\n index = index - array.length;\n }\n const _item = array[index];\n this._activeValue = _item.value;\n this.activeValueChange.emit({\n value: this._activeValue,\n after: output.after\n });\n this._activeCarouselItem = _item;\n }\n /** Method that changes active item and triggers carousel scroll */\n pick(item, index) {\n const currentIndex = this.items.toArray().findIndex((_item) => _item === this._activeCarouselItem);\n /** To prevent from switching time, when it's being dragged */\n if (!this._isDragging) {\n this._pickTime(item, true, true, currentIndex < index);\n }\n }\n /** Method triggered by keyboard, or increment button */\n scrollUp(event) {\n /** Keyboard events in reactive forms, shouldn't trigger this method */\n if (event && !event.clientX) {\n return;\n }\n let index = this.items.toArray().findIndex((_item) => _item === this._activeCarouselItem);\n if (index > 0) {\n index--;\n }\n else {\n index = this.rows.length - 1;\n }\n this._pickTime(this.items.toArray()[index], true, true, false);\n }\n /** Method triggered by keyboard, or decrement button */\n scrollDown() {\n let index = this.items.toArray().findIndex((_item) => _item === this._activeCarouselItem);\n if (index < this.rows.length - 1) {\n index++;\n }\n else {\n index = 0;\n }\n this._pickTime(this.items.toArray()[index], true, true, true);\n }\n /** Focus on column */\n focus() {\n this.indicator?.nativeElement.focus();\n }\n /**\n * Create id for column item\n * @param index column item index\n * @returns column item id\n * @hidden\n */\n _createColumnItemIdByIndex(index) {\n return this.id + index;\n }\n /**\n * On focus callback\n * @hidden\n */\n _onFocusIndicator() {\n this.activeStateChange.emit();\n }\n /** @hidden\n * handles alphabetical key inputs to set period.\n */\n _alphaKeyInputHandler(event) {\n if (event.key.toLowerCase() === 'a') {\n this._pickTimeOnValue('AM');\n }\n else if (event.key.toLowerCase() === 'p') {\n this._pickTimeOnValue('PM');\n }\n }\n /** @hidden\n * handles numeric key inputs to set time.\n */\n _numericKeyInputHandler(event) {\n const lastItemValue = this.items.last.value.value; // value of last item in column\n this._numericInputTimeout && clearTimeout(this._numericInputTimeout);\n this._keyLog.push(event.key);\n const inputValue = parseInt(this._keyLog.join(''), 10); // converts keyLog elements to a number\n if (inputValue * 10 > lastItemValue || this._keyLog.length === lastItemValue.toString().length) {\n this._pickTimeOnValue(inputValue);\n }\n else {\n this._numericInputTimeout = setTimeout(() => {\n this._pickTimeOnValue(inputValue);\n }, 500);\n }\n }\n /** @hidden\n * set the time for given item value. used by _numericKeyInputHandler.\n */\n _pickTimeOnValue(value) {\n this._pickTime(this.items.find((item) => item.value.value === value), false, true, false);\n this._keyLog = []; // clear key log\n }\n /**\n * Method triggered by keyboard, or decrement button\n * Args:\n * item => picked carousel item, that should be centered\n * smooth => defines if transition time should be included in transform\n * emitEvent => defines if EventEmitter should be triggered by this change, set to false, when changed from outside\n * after => Defines if value was incremented/decremented, needed for hours to trigger AM/PM change\n * @hidden\n */\n _pickTime(item, smooth, emitEvent, after) {\n if (!item) {\n return;\n }\n if (this.active) {\n this._triggerCarousel(item, smooth);\n }\n this._activeCarouselItem = item;\n this._activeValue = item.value;\n if (emitEvent) {\n this.activeValueChange.emit({\n value: item.value,\n after\n });\n }\n }\n /**\n * Returns item with passed value\n * @hidden\n */\n _getItem(_item) {\n return this.items.find((item) => item.value?.value === _item?.value);\n }\n /** @hidden */\n _triggerCarousel(item, smooth) {\n const array = this.items.toArray();\n let index = array.findIndex((_item) => _item === item) - this.offset;\n if (index < 0) {\n index = array.length + index;\n }\n this.carousel.goToItem(array[index], smooth);\n }\n /**\n * Focus current indicator, which allows to handle keydown events inside column\n * @hidden\n */\n _focusIndicator() {\n document.getElementById(this.currentIndicatorId)?.focus();\n }\n /** @hidden */\n _getValue(value) {\n if (!isNaN(Number(value))) {\n return Number(value);\n }\n else {\n return value;\n }\n }\n /** @hidden */\n _setUpQuerySubscription() {\n const trigger = this._queryKeyDownEvent.pipe(debounceTime(this.typeaheadDebounceInterval));\n this._subscriptions.add(this._queryKeyDownEvent\n .pipe(buffer(trigger), map((keys) => keys.join('')), map((value) => this._getValue(value)), map((value) => this._getItem(value)))\n .subscribe((item) => this._pickTime(item, false, true)));\n }\n /** @hidden */\n _setUpCarouselConfiguration() {\n const config = {\n gestureSupport: true,\n vertical: true,\n elementsAtOnce: this._elementsAtOnce$.value,\n transition: '150ms'\n };\n // Enable infinite scrolling only if not meridian column and have enough items\n // Need more items than elementsAtOnce for infinite scrolling to work\n if (!this.meridian && this.rows.length > this._elementsAtOnce$.value) {\n config.infinite = true;\n }\n this.config = config;\n }\n /** @hidden */\n _setUpInitialValue() {\n if (!this._activeValue) {\n this._activeValue = this.items.first.value;\n }\n this._pickTime(this._getItem(this._activeValue), false);\n }\n /** @hidden */\n _updateInternalTranslationConfig() {\n switch (this.columnTranslationsPreset) {\n case 'hours':\n this.internalTranslationConfig = {\n increaseLabel: 'coreTime.increaseHoursLabel',\n label: 'coreTime.hrsLabel',\n fullLabel: 'coreTime.hoursLabel',\n decreaseLabel: 'coreTime.decreaseHoursLabel',\n navigationInstruction: 'coreTime.navigationInstruction'\n };\n break;\n case 'minutes':\n this.internalTranslationConfig = {\n increaseLabel: 'coreTime.increaseMinutesLabel',\n label: 'coreTime.minLabel',\n fullLabel: 'coreTime.minutesLabel',\n decreaseLabel: 'coreTime.decreaseMinutesLabel',\n navigationInstruction: 'coreTime.navigationInstruction'\n };\n break;\n case 'seconds':\n this.internalTranslationConfig = {\n increaseLabel: 'coreTime.increaseSecondsLabel',\n label: 'coreTime.secLabel',\n fullLabel: 'coreTime.secondsLabel',\n decreaseLabel: 'coreTime.decreaseSecondsLabel',\n navigationInstruction: 'coreTime.navigationInstruction'\n };\n break;\n case 'period':\n this.internalTranslationConfig = {\n increaseLabel: 'coreTime.increasePeriodLabel',\n label: 'coreTime.periodLabel',\n fullLabel: 'coreTime.periodLabel',\n decreaseLabel: 'coreTime.decreasePeriodLabel',\n navigationInstruction: 'coreTime.navigationInstruction'\n };\n break;\n default:\n this.internalTranslationConfig = null;\n break;\n }\n this._changeDetRef.markForCheck();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TimeColumnComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.1.4\", type: TimeColumnComponent, isStandalone: true, selector: \"fd-time-column\", inputs: { rows: \"rows\", spinners: \"spinners\", activeValue: \"activeValue\", active: \"active\", meridian: \"meridian\", id: \"id\", timeConfig: \"timeConfig\", columnTranslationsPreset: \"columnTranslationsPreset\", offset: \"offset\", elementsAtOnce: \"elementsAtOnce\" }, outputs: { activeValueChange: \"activeValueChange\", activeStateChange: \"activeStateChange\" }, host: { listeners: { \"click\": \"onItemClick()\", \"keydown\": \"keyDownHandler($event)\", \"wheel\": \"mouseScrollHandler($event)\" }, properties: { \"class.fd-time__col--period\": \"this.meridian\" }, classAttribute: \"fd-time__col\" }, viewQueries: [{ propertyName: \"carousel\", first: true, predicate: CarouselDirective, descendants: true }, { propertyName: \"indicator\", first: true, predicate: [\"indicator\"], descendants: true, read: ElementRef }, { propertyName: \"items\", predicate: CarouselItemDirective, descendants: true }], usesOnChanges: true, ngImport: i0, template: \"<label class=\\\"fd-time__slider-label\\\">{{\\n timeConfig?.label || (internalTranslationConfig && (internalTranslationConfig.label | fdTranslate))\\n}}</label>\\n@if (active && spinners) {\\n <button\\n fd-button\\n fdType=\\\"transparent\\\"\\n glyph=\\\"navigation-up-arrow\\\"\\n tabindex=\\\"-1\\\"\\n [title]=\\\"\\n timeConfig?.decreaseLabel ||\\n (internalTranslationConfig && (internalTranslationConfig.decreaseLabel | fdTranslate))\\n \\\"\\n [ariaLabel]=\\\"\\n timeConfig?.decreaseLabel ||\\n (internalTranslationConfig && (internalTranslationConfig.decreaseLabel | fdTranslate))\\n \\\"\\n (keyup)=\\\"spinnerButtonKeyupHandle($event, true)\\\"\\n (click)=\\\"scrollUp($event)\\\"\\n ></button>\\n}\\n<div\\n class=\\\"fd-time__wrapper\\\"\\n [class.fd-time__wrapper--active]=\\\"active\\\"\\n [class.fd-time__wrapper--meridian]=\\\"meridian\\\"\\n [style.height.px]=\\\"active ? wrapperHeight : ''\\\"\\n>\\n <ul\\n class=\\\"fd-time__list\\\"\\n [class.fd-time-column-custom-hidden]=\\\"!active\\\"\\n [config]=\\\"config\\\"\\n (click)=\\\"indicator.focus()\\\"\\n (activeChange)=\\\"activeChangedHandle($event)\\\"\\n (dragStateChange)=\\\"handleDrag($event)\\\"\\n fdCarousel\\n >\\n @for (row of rows; track row; let index = $index) {\\n <li\\n class=\\\"fd-time__item\\\"\\n fdCarouselItem\\n #item=\\\"fdCarouselItem\\\"\\n [id]=\\\"_createColumnItemIdByIndex(index)\\\"\\n [attr.data-displayed-value]=\\\"row.value\\\"\\n [value]=\\\"row\\\"\\n >\\n <span class=\\\"fd-time__unit\\\" role=\\\"button\\\" [attr.aria-label]=\\\"row.label\\\" (click)=\\\"pick(item, index)\\\">\\n {{ row.label }}\\n </span>\\n </li>\\n }\\n </ul>\\n <div\\n class=\\\"fd-time__current-indicator\\\"\\n #indicator\\n tabindex=\\\"0\\\"\\n role=\\\"listbox\\\"\\n [attr.id]=\\\"currentIndicatorId\\\"\\n [class.fd-time-column-custom-hidden]=\\\"!active\\\"\\n [attr.aria-labelledby]=\\\"currentIndicatorValueId\\\"\\n [attr.aria-description]=\\\"\\n timeConfig?.navigationInstruction ||\\n (internalTranslationConfig && (internalTranslationConfig.navigationInstruction | fdTranslate))\\n \\\"\\n (focus)=\\\"_onFocusIndicator()\\\"\\n >\\n <span\\n class=\\\"fd-time-column-custom-hidden\\\"\\n aria-atomic=\\\"true\\\"\\n [attr.aria-hidden]=\\\"!active\\\"\\n [attr.id]=\\\"currentIndicatorValueId\\\"\\n [class.fd-time-column-custom-hidden]=\\\"active\\\"\\n >\\n {{ activeValue?.label }}\\n {{\\n timeConfig?.label || (internalTranslationConfig && (internalTranslationConfig.fullLabel | fdTranslate))\\n }}\\n </span>\\n </div>\\n @if (!active) {\\n <span class=\\\"fd-time__item fd-time__item--collapsed\\\">\\n {{ activeValue?.label }}\\n </span>\\n }\\n</div>\\n@if (active && spinners) {\\n <button\\n fd-button\\n fdType=\\\"transparent\\\"\\n glyph=\\\"navigation-down-arrow\\\"\\n tabindex=\\\"-1\\\"\\n [title]=\\\"\\n timeConfig?.increaseLabel ||\\n (internalTranslationConfig && (internalTranslationConfig.increaseLabel | fdTranslate))\\n \\\"\\n [ariaLabel]=\\\"\\n timeConfig?.increaseLabel ||\\n (internalTranslationConfig && (internalTranslationConfig.increaseLabel | fdTranslate))\\n \\\"\\n (keyup)=\\\"spinnerButtonKeyupHandle($event)\\\"\\n (click)=\\\"scrollDown()\\\"\\n ></button>\\n}\\n\", styles: [\".fd-time__col .fd-carousel{transition:all .2s ease-in}.fd-time__list{overflow:visible}.fd-time-column-custom-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.fd-time__current-indicator{pointer-events:none}.fd-time__current-indicator:focus{outline:none}.fd-time--compact .fd-time__wrapper--meridian .fd-time__item:last-child.fd-time__item--collapsed,.fd-time .fd-time__wrapper--meridian .fd-time__item:last-child.fd-time__item--collapsed{margin-bottom:0;margin-top:0}\\n\"], dependencies: [{ kind: \"component\", type: ButtonComponent, selector: \"button[fd-button], a[fd-button], span[fd-button]\", inputs: [\"class\", \"id\"], exportAs: [\"fd-button\"] }, { kind: \"directive\", type: CarouselDirective, selector: \"[fdCarousel]\", inputs: [\"config\", \"active\"], outputs: [\"activeChange\", \"dragStateChange\"] }, { kind: \"directive\", type: CarouselItemDirective, selector: \"[fd-carousel-item], [fdCarouselItem]\", inputs: [\"value\", \"initialHeight\", \"initialWidth\", \"id\"], exportAs: [\"fdCarouselItem\"] }, { kind: \"pipe\", type: FdTranslatePipe, name: \"fdTranslate\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TimeColumnComponent, decorators: [{\n type: Component,\n args: [{ selector: 'fd-time-column', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {\n class: 'fd-time__col'\n }, imports: [ButtonComponent, CarouselDirective, CarouselItemDirective, FdTranslatePipe], template: \"<label class=\\\"fd-time__slider-label\\\">{{\\n timeConfig?.label || (internalTranslationConfig && (internalTranslationConfig.label | fdTranslate))\\n}}</label>\\n@if (active && spinners) {\\n <button\\n fd-button\\n fdType=\\\"transparent\\\"\\n glyph=\\\"navigation-up-arrow\\\"\\n tabindex=\\\"-1\\\"\\n [title]=\\\"\\n timeConfig?.decreaseLabel ||\\n (internalTranslationConfig && (internalTranslationConfig.decreaseLabel | fdTranslate))\\n \\\"\\n [ariaLabel]=\\\"\\n timeConfig?.decreaseLabel ||\\n (internalTranslationConfig && (internalTranslationConfig.decreaseLabel | fdTranslate))\\n \\\"\\n (keyup)=\\\"spinnerButtonKeyupHandle($event, true)\\\"\\n (click)=\\\"scrollUp($event)\\\"\\n ></button>\\n}\\n<div\\n class=\\\"fd-time__wrapper\\\"\\n [class.fd-time__wrapper--active]=\\\"active\\\"\\n [class.fd-time__wrapper--meridian]=\\\"meridian\\\"\\n [style.height.px]=\\\"active ? wrapperHeight : ''\\\"\\n>\\n <ul\\n class=\\\"fd-time__list\\\"\\n [class.fd-time-column-custom-hidden]=\\\"!active\\\"\\n [config]=\\\"config\\\"\\n (click)=\\\"indicator.focus()\\\"\\n (activeChange)=\\\"activeChangedHandle($event)\\\"\\n (dragStateChange)=\\\"handleDrag($event)\\\"\\n fdCarousel\\n >\\n @for (row of rows; track row; let index = $index) {\\n <li\\n class=\\\"fd-time__item\\\"\\n fdCarouselItem\\n #item=\\\"fdCarouselItem\\\"\\n [id]=\\\"_createColumnItemIdByIndex(index)\\\"\\n [attr.data-displayed-value]=\\\"row.value\\\"\\n [value]=\\\"row\\\"\\n >\\n <span class=\\\"fd-time__unit\\\" role=\\\"button\\\" [attr.aria-label]=\\\"row.label\\\" (click)=\\\"pick(item, index)\\\">\\n {{ row.label }}\\n </span>\\n </li>\\n }\\n </ul>\\n <div\\n class=\\\"fd-time__current-indicator\\\"\\n #indicator\\n tabindex=\\\"0\\\"\\n role=\\\"listbox\\\"\\n [attr.id]=\\\"currentIndicatorId\\\"\\n [class.fd-time-column-custom-hidden]=\\\"!active\\\"\\n [attr.aria-labelledby]=\\\"currentIndicatorValueId\\\"\\n [attr.aria-description]=\\\"\\n timeConfig?.navigationInstruction ||\\n (internalTranslationConfig && (internalTranslationConfig.navigationInstruction | fdTranslate))\\n \\\"\\n (focus)=\\\"_onFocusIndicator()\\\"\\n >\\n <span\\n class=\\\"fd-time-column-custom-hidden\\\"\\n aria-atomic=\\\"true\\\"\\n [attr.aria-hidden]=\\\"!active\\\"\\n [attr.id]=\\\"currentIndicatorValueId\\\"\\n [class.fd-time-column-custom-hidden]=\\\"active\\\"\\n >\\n {{ activeValue?.label }}\\n {{\\n timeConfig?.label || (internalTranslationConfig && (internalTranslationConfig.fullLabel | fdTranslate))\\n }}\\n </span>\\n </div>\\n @if (!active) {\\n <span class=\\\"fd-time__item fd-time__item--collapsed\\\">\\n {{ activeValue?.label }}\\n </span>\\n }\\n</div>\\n@if (active && spinners) {\\n <button\\n fd-button\\n fdType=\\\"transparent\\\"\\n glyph=\\\"navigation-down-arrow\\\"\\n tabindex=\\\"-1\\\"\\n [title]=\\\"\\n timeConfig?.increaseLabel ||\\n (internalTranslationConfig && (internalTranslationConfig.increaseLabel | fdTranslate))\\n \\\"\\n [ariaLabel]=\\\"\\n timeConfig?.increaseLabel ||\\n (internalTranslationConfig && (internalTranslationConfig.increaseLabel | fdTranslate))\\n \\\"\\n (keyup)=\\\"spinnerButtonKeyupHandle($event)\\\"\\n (click)=\\\"scrollDown()\\\"\\n ></button>\\n}\\n\", styles: [\".fd-time__col .fd-carousel{transition:all .2s ease-in}.fd-time__list{overflow:visible}.fd-time-column-custom-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.fd-time__current-indicator{pointer-events:none}.fd-time__current-indicator:focus{outline:none}.fd-time--compact .fd-time__wrapper--meridian .fd-time__item:last-child.fd-time__item--collapsed,.fd-time .fd-time__wrapper--meridian .fd-time__item:last-child.fd-time__item--collapsed{margin-bottom:0;margin-top:0}\\n\"] }]\n }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }], propDecorators: { rows: [{\n type: Input\n }], spinners: [{\n type: Input\n }], activeValue: [{\n type: Input\n }], active: [{\n type: Input\n }], meridian: [{\n type: Input\n }, {\n type: HostBinding,\n args: ['class.fd-time__col--period']\n }], id: [{\n type: Input\n }], timeConfig: [{\n type: Input\n }], columnTranslationsPreset: [{\n type: Input\n }], offset: [{\n type: Input\n }], elementsAtOnce: [{\n type: Input\n }], activeValueChange: [{\n type: Output\n }], activeStateChange: [{\n type: Output\n }], carousel: [{\n type: ViewChild,\n args: [CarouselDirective]\n }], items: [{\n type: ViewChildren,\n args: [CarouselItemDirective]\n }], indicator: [{\n type: ViewChild,\n args: ['indicator', { read: ElementRef }]\n }], onItemClick: [{\n type: HostListener,\n args: ['click']\n }], keyDownHandler: [{\n type: HostListener,\n args: ['keydown', ['$event']]\n }], mouseScrollHandler: [{\n type: HostListener,\n args: ['wheel', ['$event']]\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS1jb2x1bW4uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3RpbWUvdGltZS1jb2x1bW4vdGltZS1jb2x1bW4uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3RpbWUvdGltZS1jb2x1bW4vdGltZS1jb2x1bW4uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDcEUsT0FBTyxFQUVILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osV0FBVyxFQUNYLFlBQVksRUFDWixLQUFLLEVBSUwsTUFBTSxFQUNOLFNBQVMsRUFFVCxTQUFTLEVBQ1QsWUFBWSxFQUNaLGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdFLE9BQU8sRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3ZFLE9BQU8sRUFBa0IsaUJBQWlCLEVBQUUscUJBQXFCLEVBQWdCLE1BQU0sZ0NBQWdDLENBQUM7QUFHeEgsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7QUFJeEQsSUFBSSxrQkFBa0IsR0FBRyxDQUFDLENBQUM7QUFrQjNCLE1BQU0sT0FBTyxtQkFBbUI7SUFjNUIsa0RBQWtE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QUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRE9XTl9BUlJPVywgU1BBQ0UsIFVQX0FSUk9XIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcbmltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBRdWVyeUxpc3QsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0NoaWxkcmVuLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBTdWJqZWN0LCBTdWJzY3JpcHRpb24sIGNvbWJpbmVMYXRlc3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGJ1ZmZlciwgZGVib3VuY2VUaW1lLCBmaWx0ZXIsIG1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBLZXlVdGlsLCByZXNpemVPYnNlcnZhYmxlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgQ2Fyb3VzZWxDb25maWcsIENhcm91c2VsRGlyZWN0aXZlLCBDYXJvdXNlbEl0ZW1EaXJlY3RpdmUsIFBhbkVuZE91dHB1dCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9jYXJvdXNlbCc7XG5cbmltcG9ydCB7IE51bGxhYmxlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2J1dHRvbic7XG5pbXBvcnQgeyBGZFRyYW5zbGF0ZVBpcGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2kxOG4nO1xuaW1wb3J0IHsgU2VsZWN0YWJsZVZpZXdJdGVtIH0gZnJvbSAnLi4vbW9kZWxzJztcbmltcG9ydCB7IFRpbWVDb2x1bW5Db25maWcgfSBmcm9tICcuL3RpbWUtY29sdW1uLWNvbmZpZyc7XG5cbmxldCB0aW1lQ29sdW1uVW5pcXVlSWQgPSAwO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRpbWVDb2x1bW5JdGVtT3V0cHV0PFQ+IHtcbiAgICB2YWx1ZTogVDtcbiAgICBhZnRlcj86IGJvb2xlYW47XG59XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZmQtdGltZS1jb2x1bW4nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi90aW1lLWNvbHVtbi5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmw6ICcuL3RpbWUtY29sdW1uLmNvbXBvbmVudC5zY3NzJyxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICdmZC10aW1lX19jb2wnXG4gICAgfSxcbiAgICBpbXBvcnRzOiBbQnV0dG9uQ29tcG9uZW50LCBDYXJvdXNlbERpcmVjdGl2ZSwgQ2Fyb3VzZWxJdGVtRGlyZWN0aXZlLCBGZFRyYW5zbGF0ZVBpcGVdXG59KVxuZXhwb3J0IGNsYXNzIFRpbWVDb2x1bW5Db21wb25lbnQ8SyBleHRlbmRzIG51bWJlciwgVCBleHRlbmRzIFNlbGVjdGFibGVWaWV3SXRlbTxLPiA9IFNlbGVjdGFibGVWaWV3SXRlbTxLPj5cbiAgICBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uSW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXNcbntcbiAgICAvKiogaXRlbXMgaW4gcm93ICovXG4gICAgQElucHV0KClcbiAgICByb3dzOiBUW10gPSBbXTtcblxuICAgIC8qKlxuICAgICAqIEBJbnB1dCBXaGVuIHNldCB0byBmYWxzZSwgaGlkZXMgdGhlIGJ1dHRvbnMgdGhhdCBpbmNyZW1lbnRcbiAgICAgKiBhbmQgZGVjcmVtZW50IHRoZSBjb3JyZXNwb25kaW5nIGNvbHVtbnMuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzcGlubmVycyA9IHRydWU7XG5cbiAgICAvKiogQ3VycmVudGx5IGNob3NlbiwgY2VudGVyZWQgdGltZSBjb2x1bW4gaXRlbSAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGFjdGl2ZVZhbHVlKGFjdGl2ZUl0ZW06IE51bGxhYmxlPFQ+KSB7XG4gICAgICAgIGlmICghYWN0aXZlSXRlbSkge1xuICAgICAgICAgICAgLy8gb21pdHRpbmcgXCJudWxsXCIgYW5kIFwidW5kZWZpbmVkXCJcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5fdmlld0luaXQkLnZhbHVlICYmIHRoaXMuX2FjdGl2ZVZhbHVlICE9PSBhY3RpdmVJdGVtKSB7XG4gICAgICAgICAgICB0aGlzLl9waWNrVGltZSh0aGlzLl9nZXRJdGVtKGFjdGl2ZUl0ZW0pLCBmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fYWN0aXZlVmFsdWUgPSBhY3RpdmVJdGVtO1xuICAgIH1cblxuICAgIGdldCBhY3RpdmVWYWx1ZSgpOiBOdWxsYWJsZTxUPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hY3RpdmVWYWx1ZTtcbiAgICB9XG5cbiAgICAvKiogRGVmaW5lcyBpZiBjb2x1bW4gaXMgYWN0aXZlLCBpdCBoYXMgaW1wYWN0IG9uIGJlaGF2aW9yIGFuZCB2aXN1YWwgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgYWN0aXZlKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX2FjdGl2ZSA9IHZhbHVlO1xuICAgICAgICBpZiAodmFsdWUgJiYgdGhpcy5fdmlld0luaXQkLnZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLl9jaGFuZ2VEZXRSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgdGhpcy5fcGlja1RpbWUodGhpcy5fZ2V0SXRlbSh0aGlzLmFjdGl2ZVZhbHVlKSwgZmFsc2UpO1xuICAgICAgICAgICAgdGhpcy5fZm9jdXNJbmRpY2F0b3IoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldCBhY3RpdmUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hY3RpdmU7XG4gICAgfVxuXG4gICAgLyoqIFdoZXRoZXIgdGltZSBjb2x1bW4gaXMgbWVyaWRpYW4gKi9cbiAgICBASW5wdXQoKVxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuZmQtdGltZV9fY29sLS1wZXJpb2QnKVxuICAgIG1lcmlkaWFuID0gZmFsc2U7XG5cbiAgICAvKiogSWQgb2YgY29sdW1uLCBpbml0aWF0ZWQgd2l0aCBzb21lIGRlZmF1bHQgdmFsdWUgKi9cbiAgICBASW5wdXQoKVxuICAgIGlkOiBzdHJpbmcgPSAnZmQtdGltZS1jb2x1bW4tJyArIHRpbWVDb2x1bW5VbmlxdWVJZCsrO1xuXG4gICAgLyoqIEkxOG4gYW5kIGxhYmVscyAqL1xuICAgIEBJbnB1dCgpXG4gICAgdGltZUNvbmZpZzogTnVsbGFibGU8VGltZUNvbHVtbkNvbmZpZz47XG5cbiAgICAvKiogSTE4biBhbmQgbGFiZWxzICovXG4gICAgQElucHV0KClcbiAgICBjb2x1bW5UcmFuc2xhdGlvbnNQcmVzZXQ6ICdzZWNvbmRzJyB8ICdtaW51dGVzJyB8ICdob3VycycgfCAncGVyaW9kJztcblxuICAgIC8qKlxuICAgICAqIE9mZnNldCBmb3IgY2Fyb3VzZWwgZGlyZWN0aXZlLCBhY3RpdmUgaXRlbSBpcyBhbHdheXMgdGhlIGZpcnN0IG9uZS5cbiAgICAgKiBJbiBjYXNlIG9mIGhhdmluZyBtb3JlIGl0ZW1zIGluIGNhcm91c2VsIHRoYW4gMSwgbWlkZGxlIGVsZW1lbnQgc2hvdWxkIGJlIGFjdGl2ZVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IG9mZnNldCh2YWx1ZTogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuX29mZnNldCQubmV4dCh2YWx1ZSk7XG4gICAgfVxuICAgIGdldCBvZmZzZXQoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX29mZnNldCQudmFsdWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUXVhbnRpdHkgb2YgdGhlIGVsZW1lbnRzIHRvIGJlIHNob3duIGF0IHRoZSBzYW1lIHRpbWUgaW4gY29sdW1uXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgZWxlbWVudHNBdE9uY2UodmFsdWU6IG51bWJlcikge1xuICAgICAgICB0aGlzLl9lbGVtZW50c0F0T25jZSQubmV4dCh2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqIEV2ZW50IGVtaXR0ZWQsIHdoZW4gYWN0aXZlIGl0ZW0gaXMgY2hhbmdlZCwgYnkgY2Fyb3VzZWwgKi9cbiAgICBAT3V0cHV0KClcbiAgICBhY3RpdmVWYWx1ZUNoYW5nZTogRXZlbnRFbWl0dGVyPFRpbWVDb2x1bW5JdGVtT3V0cHV0PFQ+PiA9IG5ldyBFdmVudEVtaXR0ZXI8VGltZUNvbHVtbkl0ZW1PdXRwdXQ8VD4+KCk7XG5cbiAgICAvKiogRXZlbnQgZW1pdHRlZCwgd2hlbiBjZXJ0YWluIGNvbHVtbiBpcyBhY3RpdmF0ZWQgKi9cbiAgICBAT3V0cHV0KClcbiAgICBhY3RpdmVTdGF0ZUNoYW5nZTogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKENhcm91c2VsRGlyZWN0aXZlKVxuICAgIGNhcm91c2VsOiBDYXJvdXNlbERpcmVjdGl2ZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZHJlbihDYXJvdXNlbEl0ZW1EaXJlY3RpdmUpXG4gICAgaXRlbXM6IFF1ZXJ5TGlzdDxDYXJvdXNlbEl0ZW1EaXJlY3RpdmU8VD4+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKCdpbmRpY2F0b3InLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgICBpbmRpY2F0b3I6IEVsZW1lbnRSZWY7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHdyYXBwZXJIZWlnaHQ6IG51bWJlcjtcblxuICAgIC8qKlxuICAgICAqIFRpbWUgdG8gd2FpdCBpbiBtaWxsaXNlY29uZHMgYWZ0ZXIgdGhlIGxhc3Qga2V5ZG93biBiZWZvcmVcbiAgICAgKiBmb2N1c2luZyBvciBzZWxlY3Rpbmcgb3B0aW9uIGJhc2VkIG9uIG51bWVyaWMvYWxwaGEga2V5cy5cbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgdHlwZWFoZWFkRGVib3VuY2VJbnRlcnZhbCA9IDc1MDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uZmlnOiBDYXJvdXNlbENvbmZpZztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgaW50ZXJuYWxUcmFuc2xhdGlvbkNvbmZpZzogVGltZUNvbHVtbkNvbmZpZyB8IG51bGwgPSBudWxsO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgY3VycmVudEluZGljYXRvcklkKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmlkICsgJy1jdXJyZW50LWluZGljYXRvcic7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgY3VycmVudEluZGljYXRvclZhbHVlSWQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudEluZGljYXRvcklkICsgJy12YWx1ZSc7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9lbGVtZW50c0F0T25jZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KDcpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9vZmZzZXQkID0gbmV3IEJlaGF2aW9yU3ViamVjdCgzKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfYWN0aXZlID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3F1ZXJ5S2V5RG93bkV2ZW50OiBTdWJqZWN0PHN0cmluZz4gPSBuZXcgU3ViamVjdDxzdHJpbmc+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2FjdGl2ZVZhbHVlOiBOdWxsYWJsZTxUPjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfYWN0aXZlQ2Fyb3VzZWxJdGVtOiBDYXJvdXNlbEl0ZW1EaXJlY3RpdmU8VD47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2lzRHJhZ2dpbmcgPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfdmlld0luaXQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3Jlc2l6ZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gICAgLyoqIEBoaWRkZW5cbiAgICAgKiBsb2dzIG51bWVyaWMga2V5IGlucHV0cyB0byBzZXQgdGltZSB1c2luZyBrZXlib2FyZCBpbnB1dC5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9rZXlMb2c6IHN0cmluZ1tdID0gW107XG5cbiAgICAvKiogQGhpZGRlblxuICAgICAqIFRpbWVvdXQgdmFyaWFibGUgdXNlZCB0byBzZXQgdGltZW91dCBmb3Igc3Vic2VxdWVudCBudW1lcmljIGtleSBpbnB1dCB0byBzZXQgdGltZS5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9udW1lcmljSW5wdXRUaW1lb3V0OiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgX2NoYW5nZURldFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgX2VsbVJlZjogRWxlbWVudFJlZlxuICAgICkge1xuICAgICAgICB0aGlzLl9zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgICAgICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMuX3ZpZXdJbml0JCwgdGhpcy5fZWxlbWVudHNBdE9uY2UkLCB0aGlzLl9vZmZzZXQkLCB0aGlzLl9yZXNpemUkXSlcbiAgICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyKChbdmlld0luaXRdKSA9PiB2aWV3SW5pdCksXG4gICAgICAgICAgICAgICAgICAgIHRhcCgoWywgZWxlbWVudHNBdE9uY2UsIG9mZnNldF0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGF2ZXJhZ2VIZWlnaHQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaXRlbXMudG9BcnJheSgpLnJlZHVjZSgoYWNjLCBuZXh0KSA9PiBhY2MgKyBuZXh0LmdldEhlaWdodCgpLCAwKSAvIHRoaXMuaXRlbXMubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy53cmFwcGVySGVpZ2h0ID0gYXZlcmFnZUhlaWdodCAqIGVsZW1lbnRzQXRPbmNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdmlzaWJsZUJ1dE5vdFNlbGVjdGVkRWxlbWVudHMgPSBNYXRoLmZsb29yKGVsZW1lbnRzQXRPbmNlIC8gMik7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAob2Zmc2V0ICE9PSAzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pdGVtcy5maXJzdC5lbGVtZW50LnN0eWxlLm1hcmdpblRvcCA9IGAke1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmxlQnV0Tm90U2VsZWN0ZWRFbGVtZW50cyAqIGF2ZXJhZ2VIZWlnaHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9cHhgO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaXRlbXMubGFzdC5lbGVtZW50LnN0eWxlLm1hcmdpbkJvdHRvbSA9IGAke1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmxlQnV0Tm90U2VsZWN0ZWRFbGVtZW50cyAqIGF2ZXJhZ2VIZWlnaHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9cHhgO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5hY3RpdmVWYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3BpY2tUaW1lKHRoaXMuX2dldEl0ZW0odGhpcy5hY3RpdmVWYWx1ZSksIGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbmdlRGV0UmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASG9zdExpc3RlbmVyKCdjbGljaycpXG4gICAgb25JdGVtQ2xpY2soKTogdm9pZCB7XG4gICAgICAgIHRoaXMuYWN0aXZlU3RhdGVDaGFuZ2UuZW1pdCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bicsIFsnJGV2ZW50J10pXG4gICAga2V5RG93bkhhbmRsZXIoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBET1dOX0FSUk9XKSkge1xuICAgICAgICAgICAgdGhpcy5zY3JvbGxEb3duKCk7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9IGVsc2UgaWYgKEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBVUF9BUlJPVykpIHtcbiAgICAgICAgICAgIHRoaXMuc2Nyb2xsVXAoKTtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH0gZWxzZSBpZiAoS2V5VXRpbC5pc0tleVR5cGUoZXZlbnQsICdudW1lcmljJykpIHtcbiAgICAgICAgICAgIHRoaXMuX251bWVyaWNLZXlJbnB1dEhhbmRsZXIoZXZlbnQpO1xuICAgICAgICB9IGVsc2UgaWYgKEtleVV0aWwuaXNLZXlUeXBlKGV2ZW50LCAnYWxwaGFiZXRpY2FsJykpIHtcbiAgICAgICAgICAgIHRoaXMuX2FscGhhS2V5SW5wdXRIYW5kbGVyKGV2ZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQEhvc3RMaXN0ZW5lcignd2hlZWwnLCBbJyRldmVudCddKVxuICAgIG1vdXNlU2Nyb2xsSGFuZGxlcihldmVudDogV2hlZWxFdmVudCk6IHZvaWQge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBpZiAodGhpcy5fYWN0aXZlKSB7XG4gICAgICAgICAgICBldmVudC5kZWx0YVkgPiAwID8gdGhpcy5zY3JvbGxEb3duKCkgOiB0aGlzLnNjcm9sbFVwKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zdWJzY3JpcHRpb25zLmFkZCh0aGlzLl9lbGVtZW50c0F0T25jZSQucGlwZSh0YXAoKCkgPT4gdGhpcy5fc2V0VXBDYXJvdXNlbENvbmZpZ3VyYXRpb24oKSkpLnN1YnNjcmliZSgpKTtcbiAgICAgICAgdGhpcy5fc2V0VXBRdWVyeVN1YnNjcmlwdGlvbigpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgICAgICAgIHJlc2l6ZU9ic2VydmFibGUodGhpcy5fZWxtUmVmLm5hdGl2ZUVsZW1lbnQpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fcmVzaXplJC5uZXh0KHRydWUpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5fdmlld0luaXQkLm5leHQodHJ1ZSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZSAqL1xuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgaWYgKGNoYW5nZXMuY29sdW1uVHJhbnNsYXRpb25zUHJlc2V0KSB7XG4gICAgICAgICAgICB0aGlzLl91cGRhdGVJbnRlcm5hbFRyYW5zbGF0aW9uQ29uZmlnKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zdWJzY3JpcHRpb25zLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBzcGlubmVyQnV0dG9uS2V5dXBIYW5kbGUoZXZlbnQ6IEtleWJvYXJkRXZlbnQsIHVwQnV0dG9uPzogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBpZiAoS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIFNQQUNFKSkge1xuICAgICAgICAgICAgaWYgKHVwQnV0dG9uKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zY3JvbGxVcCgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNjcm9sbERvd24oKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBzZXRWYWx1ZU9mQWN0aXZlKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fYWN0aXZlKSB7XG4gICAgICAgICAgICB0aGlzLl9zZXRVcEluaXRpYWxWYWx1ZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEl0IHByZXZlbnRzIGZyb20gYWNjaWRlbnRhbGx5IGNoYW5nZSB0aGUgaXRlbSBieSBjbGljayBldmVudCAqL1xuICAgIGhhbmRsZURyYWcoaXNEcmFnZ2luZzogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLl9pc0RyYWdnaW5nID0gaXNEcmFnZ2luZztcbiAgICB9XG5cbiAgICAvKiogTWV0aG9kIHRoYXQgaGFuZGxlcyBhY3RpdmUgaXRlbSBjaGFuZ2UgKi9cbiAgICBhY3RpdmVDaGFuZ2VkSGFuZGxlKG91dHB1dDogUGFuRW5kT3V0cHV0KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGFycmF5ID0gdGhpcy5pdGVtcy50b0FycmF5KCk7XG4gICAgICAgIGxldCBpbmRleDogbnVtYmVyID0gYXJyYXkuZmluZEluZGV4KChfX2l0ZW0pID0+IF9faXRlbSA9PT0gb3V0cHV0Lml0ZW0pICsgdGhpcy5vZmZzZXQ7XG5cbiAgICAgICAgaWYgKGluZGV4ID49IGFycmF5Lmxlbmd0aCkge1xuICAgICAgICAgICAgaW5kZXggPSBpbmRleCAtIGFycmF5Lmxlbmd0aDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IF9pdGVtID0gYXJyYXlbaW5kZXhdO1xuXG4gICAgICAgIHRoaXMuX2FjdGl2ZVZhbHVlID0gX2l0ZW0udmFsdWU7XG5cbiAgICAgICAgdGhpcy5hY3RpdmVWYWx1ZUNoYW5nZS5lbWl0KHtcbiAgICAgICAgICAgIHZhbHVlOiB0aGlzLl9hY3RpdmVWYWx1ZSEsXG4gICAgICAgICAgICBhZnRlcjogb3V0cHV0LmFmdGVyXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuX2FjdGl2ZUNhcm91c2VsSXRlbSA9IF9pdGVtO1xuICAgIH1cblxuICAgIC8qKiBNZXRob2QgdGhhdCBjaGFuZ2VzIGFjdGl2ZSBpdGVtIGFuZCB0cmlnZ2VycyBjYXJvdXNlbCBzY3JvbGwgKi9cbiAgICBwaWNrKGl0ZW06IENhcm91c2VsSXRlbURpcmVjdGl2ZTxUPiwgaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBjb25zdCBjdXJyZW50SW5kZXg6IG51bWJlciA9IHRoaXMuaXRlbXMudG9BcnJheSgpLmZpbmRJbmRleCgoX2l0ZW0pID0+IF9pdGVtID09PSB0aGlzLl9hY3RpdmVDYXJvdXNlbEl0ZW0pO1xuICAgICAgICAvKiogVG8gcHJldmVudCBmcm9tIHN3aXRjaGluZyB0aW1lLCB3aGVuIGl0J3MgYmVpbmcgZHJhZ2dlZCAqL1xuICAgICAgICBpZiAoIXRoaXMuX2lzRHJhZ2dpbmcpIHtcbiAgICAgICAgICAgIHRoaXMuX3BpY2tUaW1lKGl0ZW0sIHRydWUsIHRydWUsIGN1cnJlbnRJbmRleCA8IGluZGV4KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBNZXRob2QgdHJpZ2dlcmVkIGJ5IGtleWJvYXJkLCBvciBpbmNyZW1lbnQgYnV0dG9uICovXG4gICAgc2Nyb2xsVXAoZXZlbnQ/OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIC8qKiBLZXlib2FyZCBldmVudHMgaW4gcmVhY3RpdmUgZm9ybXMsIHNob3VsZG4ndCB0cmlnZ2VyIHRoaXMgbWV0aG9kICovXG4gICAgICAgIGlmIChldmVudCAmJiAhZXZlbnQuY2xpZW50WCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGxldCBpbmRleDogbnVtYmVyID0gdGhpcy5pdGVtcy50b0FycmF5KCkuZmluZEluZGV4KChfaXRlbSkgPT4gX2l0ZW0gPT09IHRoaXMuX2FjdGl2ZUNhcm91c2VsSXRlbSk7XG4gICAgICAgIGlmIChpbmRleCA+IDApIHtcbiAgICAgICAgICAgIGluZGV4LS07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpbmRleCA9IHRoaXMucm93cy5sZW5ndGggLSAxO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fcGlja1RpbWUodGhpcy5pdGVtcy50b0FycmF5KClbaW5kZXhdLCB0cnVlLCB0cnVlLCBmYWxzZSk7XG4gICAgfVxuXG4gICAgLyoqIE1ldGhvZCB0cmlnZ2VyZWQgYnkga2V5Ym9hcmQsIG9yIGRlY3JlbWVudCBidXR0b24gKi9cbiAgICBzY3JvbGxEb3duKCk6IHZvaWQge1xuICAgICAgICBsZXQgaW5kZXg6IG51bWJlciA9IHRoaXMuaXRlbXMudG9BcnJheSgpLmZpbmRJbmRleCgoX2l0ZW0pID0+IF9pdGVtID09PSB0aGlzLl9hY3RpdmVDYXJvdXNlbEl0ZW0pO1xuICAgICAgICBpZiAoaW5kZXggPCB0aGlzLnJvd3MubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgaW5kZXgrKztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGluZGV4ID0gMDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3BpY2tUaW1lKHRoaXMuaXRlbXMudG9BcnJheSgpW2luZGV4XSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSk7XG4gICAgfVxuXG4gICAgLyoqIEZvY3VzIG9uIGNvbHVtbiAqL1xuICAgIGZvY3VzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmluZGljYXRvcj8ubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZSBpZCBmb3IgY29sdW1uIGl0ZW1cbiAgICAgKiBAcGFyYW0gaW5kZXggY29sdW1uIGl0ZW0gaW5kZXhcbiAgICAgKiBAcmV0dXJucyBjb2x1bW4gaXRlbSBpZFxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBfY3JlYXRlQ29sdW1uSXRlbUlkQnlJbmRleChpbmRleDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaWQgKyBpbmRleDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBPbiBmb2N1cyBjYWxsYmFja1xuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBfb25Gb2N1c0luZGljYXRvcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5hY3RpdmVTdGF0ZUNoYW5nZS5lbWl0KCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW5cbiAgICAgKiBoYW5kbGVzIGFscGhhYmV0aWNhbCBrZXkgaW5wdXRzIHRvIHNldCBwZXJpb2QuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfYWxwaGFLZXlJbnB1dEhhbmRsZXIoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKGV2ZW50LmtleS50b0xvd2VyQ2FzZSgpID09PSAnYScpIHtcbiAgICAgICAgICAgIHRoaXMuX3BpY2tUaW1lT25WYWx1ZSgnQU0nKTtcbiAgICAgICAgfSBlbHNlIGlmIChldmVudC5rZXkudG9Mb3dlckNhc2UoKSA9PT0gJ3AnKSB7XG4gICAgICAgICAgICB0aGlzLl9waWNrVGltZU9uVmFsdWUoJ1BNJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlblxuICAgICAqIGhhbmRsZXMgbnVtZXJpYyBrZXkgaW5wdXRzIHRvIHNldCB0aW1lLlxuICAgICAqL1xuICAgIHByaXZhdGUgX251bWVyaWNLZXlJbnB1dEhhbmRsZXIoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgbGFzdEl0ZW1WYWx1ZSA9IHRoaXMuaXRlbXMubGFzdC52YWx1ZS52YWx1ZTsgLy8gdmFsdWUgb2YgbGFzdCBpdGVtIGluIGNvbHVtblxuXG4gICAgICAgIHRoaXMuX251bWVyaWNJbnB1dFRpbWVvdXQgJiYgY2xlYXJUaW1lb3V0KHRoaXMuX251bWVyaWNJbnB1dFRpbWVvdXQpO1xuICAgICAgICB0aGlzLl9rZXlMb2cucHVzaChldmVudC5rZXkpO1xuICAgICAgICBjb25zdCBpbnB1dFZhbHVlID0gcGFyc2VJbnQodGhpcy5fa2V5TG9nLmpvaW4oJycpLCAxMCk7IC8vIGNvbnZlcnRzIGtleUxvZyBlbGVtZW50cyB0byBhIG51bWJlclxuXG4gICAgICAgIGlmIChpbnB1dFZhbHVlICogMTAgPiBsYXN0SXRlbVZhbHVlIHx8IHRoaXMuX2tleUxvZy5sZW5ndGggPT09IGxhc3RJdGVtVmFsdWUudG9TdHJpbmcoKS5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuX3BpY2tUaW1lT25WYWx1ZShpbnB1dFZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX251bWVyaWNJbnB1dFRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9waWNrVGltZU9uVmFsdWUoaW5wdXRWYWx1ZSk7XG4gICAgICAgICAgICB9LCA1MDApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW5cbiAgICAgKiBzZXQgdGhlIHRpbWUgZm9yIGdpdmVuIGl0ZW0gdmFsdWUuIHVzZWQgYnkgX251bWVyaWNLZXlJbnB1dEhhbmRsZXIuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfcGlja1RpbWVPblZhbHVlKHZhbHVlOiBzdHJpbmcgfCBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fcGlja1RpbWUoXG4gICAgICAgICAgICB0aGlzLml0ZW1zLmZpbmQoKGl0ZW0pID0+IGl0ZW0udmFsdWUudmFsdWUgPT09IHZhbHVlKSxcbiAgICAgICAgICAgIGZhbHNlLFxuICAgICAgICAgICAgdHJ1ZSxcbiAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuX2tleUxvZyA9IFtdOyAvLyBjbGVhciBrZXkgbG9nXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTWV0aG9kIHRyaWdnZXJlZCBieSBrZXlib2FyZCwgb3IgZGVjcmVtZW50IGJ1dHRvblxuICAgICAqIEFyZ3M6XG4gICAgICogaXRlbSA9PiBwaWNrZWQgY2Fyb3VzZWwgaXRlbSwgdGhhdCBzaG91bGQgYmUgY2VudGVyZWRcbiAgICAgKiBzbW9vdGggPT4gZGVmaW5lcyBpZiB0cmFuc2l0aW9uIHRpbWUgc2hvdWxkIGJlIGluY2x1ZGVkIGluIHRyYW5zZm9ybVxuICAgICAqIGVtaXRFdmVudCA9PiBkZWZpbmVzIGlmIEV2ZW50RW1pdHRlciBzaG91bGQgYmUgdHJpZ2dlcmVkIGJ5IHRoaXMgY2hhbmdlLCBzZXQgdG8gZmFsc2UsIHdoZW4gY2hhbmdlZCBmcm9tIG91dHNpZGVcbiAgICAgKiBhZnRlciA9PiBEZWZpbmVzIGlmIHZhbHVlIHdhcyBpbmNyZW1lbnRlZC9kZWNyZW1lbnRlZCwgbmVlZGVkIGZvciBob3VycyB0byB0cmlnZ2VyIEFNL1BNIGNoYW5nZVxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9waWNrVGltZShpdGVtPzogQ2Fyb3VzZWxJdGVtRGlyZWN0aXZlPFQ+LCBzbW9vdGg/OiBib29sZWFuLCBlbWl0RXZlbnQ/OiBib29sZWFuLCBhZnRlcj86IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgaWYgKCFpdGVtKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5hY3RpdmUpIHtcbiAgICAgICAgICAgIHRoaXMuX3RyaWdnZXJDYXJvdXNlbChpdGVtLCBzbW9vdGgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fYWN0aXZlQ2Fyb3VzZWxJdGVtID0gaXRlbTtcbiAgICAgICAgdGhpcy5fYWN0aXZlVmFsdWUgPSBpdGVtLnZhbHVlO1xuXG4gICAgICAgIGlmIChlbWl0RXZlbnQpIHtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlVmFsdWVDaGFuZ2UuZW1pdCh7XG4gICAgICAgICAgICAgICAgdmFsdWU6IGl0ZW0udmFsdWUsXG4gICAgICAgICAgICAgICAgYWZ0ZXJcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBpdGVtIHdpdGggcGFzc2VkIHZhbHVlXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHByaXZhdGUgX2dldEl0ZW0oX2l0ZW06IE51bGxhYmxlPFQ+KTogQ2Fyb3VzZWxJdGVtRGlyZWN0aXZlPFQ+IHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXRlbXMuZmluZCgoaXRlbSkgPT4gaXRlbS52YWx1ZT8udmFsdWUgPT09IF9pdGVtPy52YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF90cmlnZ2VyQ2Fyb3VzZWwoaXRlbTogQ2Fyb3VzZWxJdGVtRGlyZWN0aXZlPFQ+LCBzbW9vdGg/OiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGFycmF5ID0gdGhpcy5pdGVtcy50b0FycmF5KCk7XG4gICAgICAgIGxldCBpbmRleDogbnVtYmVyID0gYXJyYXkuZmluZEluZGV4KChfaXRlbSkgPT4gX2l0ZW0gPT09IGl0ZW0pIC0gdGhpcy5vZmZzZXQ7XG5cbiAgICAgICAgaWYgKGluZGV4IDwgMCkge1xuICAgICAgICAgICAgaW5kZXggPSBhcnJheS5sZW5ndGggKyBpbmRleDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY2Fyb3VzZWwuZ29Ub0l0ZW0oYXJyYXlbaW5kZXhdLCBzbW9vdGgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEZvY3VzIGN1cnJlbnQgaW5kaWNhdG9yLCB3aGljaCBhbGxvd3MgdG8gaGFuZGxlIGtleWRvd24gZXZlbnRzIGluc2lkZSBjb2x1bW5cbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfZm9jdXNJbmRpY2F0b3IoKTogdm9pZCB7XG4gICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMuY3VycmVudEluZGljYXRvcklkKT8uZm9jdXMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldFZhbHVlKHZhbHVlOiBzdHJpbmcpOiBhbnkge1xuICAgICAgICBpZiAoIWlzTmFOKE51bWJlcih2YWx1ZSkpKSB7XG4gICAgICAgICAgICByZXR1cm4gTnVtYmVyKHZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2V0VXBRdWVyeVN1YnNjcmlwdGlvbigpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdHJpZ2dlciA9IHRoaXMuX3F1ZXJ5S2V5RG93bkV2ZW50LnBpcGUoZGVib3VuY2VUaW1lKHRoaXMudHlwZWFoZWFkRGVib3VuY2VJbnRlcnZhbCkpO1xuXG4gICAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgICAgICAgdGhpcy5fcXVlcnlLZXlEb3duRXZlbnRcbiAgICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICAgICAgYnVmZmVyKHRyaWdnZXIpLFxuICAgICAgICAgICAgICAgICAgICBtYXAoKGtleXMpID0+IGtleXMuam9pbignJykpLFxuICAgICAgICAgICAgICAgICAgICBtYXAoKHZhbHVlKSA9PiB0aGlzLl9nZXRWYWx1ZSh2YWx1ZSkpLFxuICAgICAgICAgICAgICAgICAgICBtYXAoKHZhbHVlKSA9PiB0aGlzLl9nZXRJdGVtKHZhbHVlKSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoaXRlbSkgPT4gdGhpcy5fcGlja1RpbWUoaXRlbSwgZmFsc2UsIHRydWUpKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2V0VXBDYXJvdXNlbENvbmZpZ3VyYXRpb24oKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGNvbmZpZzogQ2Fyb3VzZWxDb25maWcgPSB7XG4gICAgICAgICAgICBnZXN0dXJlU3VwcG9ydDogdHJ1ZSxcbiAgICAgICAgICAgIHZlcnRpY2FsOiB0cnVlLFxuICAgICAgICAgICAgZWxlbWVudHNBdE9uY2U6IHRoaXMuX2VsZW1lbnRzQXRPbmNlJC52YWx1ZSxcbiAgICAgICAgICAgIHRyYW5zaXRpb246ICcxNTBtcydcbiAgICAgICAgfTtcbiAgICAgICAgLy8gRW5hYmxlIGluZmluaXRlIHNjcm9sbGluZyBvbmx5IGlmIG5vdCBtZXJpZGlhbiBjb2x1bW4gYW5kIGhhdmUgZW5vdWdoIGl0ZW1zXG4gICAgICAgIC8vIE5lZWQgbW9yZSBpdGVtcyB0aGFuIGVsZW1lbnRzQXRPbmNlIGZvciBpbmZpbml0ZSBzY3JvbGxpbmcgdG8gd29ya1xuICAgICAgICBpZiAoIXRoaXMubWVyaWRpYW4gJiYgdGhpcy5yb3dzLmxlbmd0aCA+IHRoaXMuX2VsZW1lbnRzQXRPbmNlJC52YWx1ZSkge1xuICAgICAgICAgICAgY29uZmlnLmluZmluaXRlID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNvbmZpZyA9IGNvbmZpZztcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3NldFVwSW5pdGlhbFZhbHVlKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuX2FjdGl2ZVZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLl9hY3RpdmVWYWx1ZSA9IHRoaXMuaXRlbXMuZmlyc3QudmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fcGlja1RpbWUodGhpcy5fZ2V0SXRlbSh0aGlzLl9hY3RpdmVWYWx1ZSksIGZhbHNlKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3VwZGF0ZUludGVybmFsVHJhbnNsYXRpb25Db25maWcoKTogdm9pZCB7XG4gICAgICAgIHN3aXRjaCAodGhpcy5jb2x1bW5UcmFuc2xhdGlvbnNQcmVzZXQpIHtcbiAgICAgICAgICAgIGNhc2UgJ2hvdXJzJzpcbiAgICAgICAgICAgICAgICB0aGlzLmludGVybmFsVHJhbnNsYXRpb25Db25maWcgPSB7XG4gICAgICAgICAgICAgICAgICAgIGluY3JlYXNlTGFiZWw6ICdjb3JlVGltZS5pbmNyZWFzZUhvdXJzTGFiZWwnLFxuICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2NvcmVUaW1lLmhyc0xhYmVsJyxcbiAgICAgICAgICAgICAgICAgICAgZnVsbExhYmVsOiAnY29yZVRpbWUuaG91cnNMYWJlbCcsXG4gICAgICAgICAgICAgICAgICAgIGRlY3JlYXNlTGFiZWw6ICdjb3JlVGltZS5kZWNyZWFzZUhvdXJzTGFiZWwnLFxuICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0aW9uSW5zdHJ1Y3Rpb246ICdjb3JlVGltZS5uYXZpZ2F0aW9uSW5zdHJ1Y3Rpb24nXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ21pbnV0ZXMnOlxuICAgICAgICAgICAgICAgIHRoaXMuaW50ZXJuYWxUcmFuc2xhdGlvbkNvbmZpZyA9IHtcbiAgICAgICAgICAgICAgICAgICAgaW5jcmVhc2VMYWJlbDogJ2NvcmVUaW1lLmluY3JlYXNlTWludXRlc0xhYmVsJyxcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdjb3JlVGltZS5taW5MYWJlbCcsXG4gICAgICAgICAgICAgICAgICAgIGZ1bGxMYWJlbDogJ2NvcmVUaW1lLm1pbnV0ZXNMYWJlbCcsXG4gICAgICAgICAgICAgICAgICAgIGRlY3JlYXNlTGFiZWw6ICdjb3JlVGltZS5kZWNyZWFzZU1pbnV0ZXNMYWJlbCcsXG4gICAgICAgICAgICAgICAgICAgIG5hdmlnYXRpb25JbnN0cnVjdGlvbjogJ2NvcmVUaW1lLm5hdmlnYXRpb25JbnN0cnVjdGlvbidcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnc2Vjb25kcyc6XG4gICAgICAgICAgICAgICAgdGhpcy5pbnRlcm5hbFRyYW5zbGF0aW9uQ29uZmlnID0ge1xuICAgICAgICAgICAgICAgICAgICBpbmNyZWFzZUxhYmVsOiAnY29yZVRpbWUuaW5jcmVhc2VTZWNvbmRzTGFiZWwnLFxuICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2NvcmVUaW1lLnNlY0xhYmVsJyxcbiAgICAgICAgICAgICAgICAgICAgZnVsbExhYmVsOiAnY29yZVRpbWUuc2Vjb25kc0xhYmVsJyxcbiAgICAgICAgICAgICAgICAgICAgZGVjcmVhc2VMYWJlbDogJ2NvcmVUaW1lLmRlY3JlYXNlU2Vjb25kc0xhYmVsJyxcbiAgICAgICAgICAgICAgICAgICAgbmF2aWdhdGlvbkluc3RydWN0aW9uOiAnY29yZVRpbWUubmF2aWdhdGlvbkluc3RydWN0aW9uJ1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdwZXJpb2QnOlxuICAgICAgICAgICAgICAgIHRoaXMuaW50ZXJuYWxUcmFuc2xhdGlvbkNvbmZpZyA9IHtcbiAgICAgICAgICAgICAgICAgICAgaW5jcmVhc2VMYWJlbDogJ2NvcmVUaW1lLmluY3JlYXNlUGVyaW9kTGFiZWwnLFxuICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2NvcmVUaW1lLnBlcmlvZExhYmVsJyxcbiAgICAgICAgICAgICAgICAgICAgZnVsbExhYmVsOiAnY29yZVRpbWUucGVyaW9kTGFiZWwnLFxuICAgICAgICAgICAgICAgICAgICBkZWNyZWFzZUxhYmVsOiAnY29yZVRpbWUuZGVjcmVhc2VQZXJpb2RMYWJlbCcsXG4gICAgICAgICAgICAgICAgICAgIG5hdmlnYXRpb25JbnN0cnVjdGlvbjogJ2NvcmVUaW1lLm5hdmlnYXRpb25JbnN0cnVjdGlvbidcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHRoaXMuaW50ZXJuYWxUcmFuc2xhdGlvbkNvbmZpZyA9IG51bGw7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0UmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbn1cbiIsIjxsYWJlbCBjbGFzcz1cImZkLXRpbWVfX3NsaWRlci1sYWJlbFwiPnt7XG4gICAgdGltZUNvbmZpZz8ubGFiZWwgfHwgKGludGVybmFsVHJhbnNsYXRpb25Db25maWcgJiYgKGludGVybmFsVHJhbnNsYXRpb25Db25maWcubGFiZWwgfCBmZFRyYW5zbGF0ZSkpXG59fTwvbGFiZWw+XG5AaWYgKGFjdGl2ZSAmJiBzcGlubmVycykge1xuICAgIDxidXR0b25cbiAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgIGZkVHlwZT1cInRyYW5zcGFyZW50XCJcbiAgICAgICAgZ2x5cGg9XCJuYXZpZ2F0aW9uLXVwLWFycm93XCJcbiAgICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgICAgIFt0aXRsZV09XCJcbiAgICAgICAgICAgIHRpbWVDb25maWc/LmRlY3JlYXNlTGFiZWwgfHxcbiAgICAgICAgICAgIChpbnRlcm5hbFRyYW5zbGF0aW9uQ29uZmlnICYmIChpbnRlcm5hbFRyYW5zbGF0aW9uQ29uZmlnLmRlY3JlYXNlTGFiZWwgfCBmZFRyYW5zbGF0ZSkpXG4gICAgICAgIFwiXG4gICAgICAgIFthcmlhTGFiZWxdPVwiXG4gICAgICAgICAgICB0aW1lQ29uZmlnPy5kZWNyZWFzZUxhYmVsIHx8XG4gICAgICAgICAgICAoaW50ZXJuYWxUcmFuc2xhdGlvbkNvbmZpZyAmJiAoaW50ZXJuYWxUcmFuc2xhdGlvbkNvbmZpZy5kZWNyZWFzZUxhYmVsIHwgZmRUcmFuc2xhdGUpKVxuICAgICAgICBcIlxuICAgICAgICAoa2V5dXApPVwic3Bpbm5lckJ1dHRvbktleXVwSGFuZGxlKCRldmVudCwgdHJ1ZSlcIlxuICAgICAgICAoY2xpY2spPVwic2Nyb2xsVXAoJGV2ZW50KVwiXG4gICAgPjwvYnV0dG9uPlxufVxuPGRpdlxuICAgIGNsYXNzPVwiZmQtdGltZV9fd3JhcHBlclwiXG4gICAgW2NsYXNzLmZkLXRpbWVfX3dyYXBwZXItLWFjdGl2ZV09XCJhY3RpdmVcIlxuICAgIFtjbGFzcy5mZC10aW1lX193cmFwcGVyLS1tZXJpZGlhbl09XCJtZXJpZGlhblwiXG4gICAgW3N0eWxlLmhlaWdodC5weF09XCJhY3RpdmUgPyB3cmFwcGVySGVpZ2h0IDogJydcIlxuPlxuICAgIDx1bFxuICAgICAgICBjbGFzcz1cImZkLXRpbWVfX2xpc3RcIlxuICAgICAgICBbY2xhc3MuZmQtdGltZS1jb2x1bW4tY3VzdG9tLWhpZGRlbl09XCIhYWN0aXZlXCJcbiAgICAgICAgW2NvbmZpZ109XCJjb25maWdcIlxuICAgICAgICAoY2xpY2spPVwiaW5kaWNhdG9yLmZvY3VzKClcIlxuICAgICAgICAoYWN0aXZlQ2hhbmdlKT1cImFjdGl2ZUNoYW5nZWRIYW5kbGUoJGV2ZW50KVwiXG4gICAgICAgIChkcmFnU3RhdGVDaGFuZ2UpPVwiaGFuZGxlRHJhZygkZXZlbnQpXCJcbiAgICAgICAgZmRDYXJvdXNlbFxuICAgID5cbiAgICAgICAgQGZvciAocm93IG9mIHJvd3M7IHRyYWNrIHJvdzsgbGV0IGluZGV4ID0gJGluZGV4KSB7XG4gICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZkLXRpbWVfX2l0ZW1cIlxuICAgICAgICAgICAgICAgIGZkQ2Fyb3VzZWxJdGVtXG4gICAgICAgICAgICAgICAgI2l0ZW09XCJmZENhcm91c2VsSXRlbVwiXG4gICAgICAgICAgICAgICAgW2lkXT1cIl9jcmVhdGVDb2x1bW5JdGVtSWRCeUluZGV4KGluZGV4KVwiXG4gICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1kaXNwbGF5ZWQtdmFsdWVdPVwicm93LnZhbHVlXCJcbiAgICAgICAgICAgICAgICBbdmFsdWVdPVwicm93XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZkLXRpbWVfX3VuaXRcIiByb2xlPVwiYnV0dG9uXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJyb3cubGFiZWxcIiAoY2xpY2spPVwicGljayhpdGVtLCBpbmRleClcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgcm93LmxhYmVsIH19XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgfVxuICAgIDwvdWw+XG4gICAgPGRpdlxuICAgICAgICBjbGFzcz1cImZkLXRpbWVfX2N1cnJlbnQtaW5kaWNhdG9yXCJcbiAgICAgICAgI2luZGljYXRvclxuICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICByb2xlPVwibGlzdGJveFwiXG4gICAgICAgIFthdHRyLmlkXT1cImN1cnJlbnRJbmRpY2F0b3JJZFwiXG4gICAgICAgIFtjbGFzcy5mZC10aW1lLWNvbHVtbi1jdXN0b20taGlkZGVuXT1cIiFhY3RpdmVcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiY3VycmVudEluZGljYXRvclZhbHVlSWRcIlxuICAgICAgICBbYXR0ci5hcmlhLWRlc2NyaXB0aW9uXT1cIlxuICAgICAgICAgICAgdGltZUNvbmZpZz8ubmF2aWdhdGlvbkluc3RydWN0aW9uIHx8XG4gICAgICAgICAgICAoaW50ZXJuYWxUcmFuc2xhdGlvbkNvbmZpZyAmJiAoaW50ZXJuYWxUcmFuc2xhdGlvbkNvbmZpZy5uYXZpZ2F0aW9uSW5zdHJ1Y3Rpb24gfCBmZFRyYW5zbGF0ZSkpXG4gICAgICAgIFwiXG4gICAgICAgIChmb2N1cyk9XCJfb25Gb2N1c0luZGljYXRvcigpXCJcbiAgICA+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgICBjbGFzcz1cImZkLXRpbWUtY29sdW1uLWN1c3RvbS1oaWRkZW5cIlxuICAgICAgICAgICAgYXJpYS1hdG9taWM9XCJ0cnVlXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtaGlkZGVuXT1cIiFhY3RpdmVcIlxuICAgICAgICAgICAgW2F0dHIuaWRdPVwiY3VycmVudEluZGljYXRvclZhbHVlSWRcIlxuICAgICAgICAgICAgW2NsYXNzLmZkLXRpbWUtY29sdW1uLWN1c3RvbS1oaWRkZW5dPVwiYWN0aXZlXCJcbiAgICAgICAgPlxuICAgICAgICAgICAge3sgYWN0aXZlVmFsdWU/LmxhYmVsIH19XG4gICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgIHRpbWVDb25maWc/LmxhYmVsIHx8IChpbnRlcm5hbFRyYW5zbGF0aW9uQ29uZmlnICYmIChpbnRlcm5hbFRyYW5zbGF0aW9uQ29uZmlnLmZ1bGxMYWJlbCB8IGZkVHJhbnNsYXRlKSlcbiAgICAgICAgICAgIH19XG4gICAgICAgIDwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgICBAaWYgKCFhY3RpdmUpIHtcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJmZC10aW1lX19pdGVtIGZkLXRpbWVfX2l0ZW0tLWNvbGxhcHNlZFwiPlxuICAgICAgICAgICAge3sgYWN0aXZlVmFsdWU/LmxhYmVsIH19XG4gICAgICAgIDwvc3Bhbj5cbiAgICB9XG48L2Rpdj5cbkBpZiAoYWN0aXZlICYmIHNwaW5uZXJzKSB7XG4gICAgPGJ1dHRvblxuICAgICAgICBmZC1idXR0b25cbiAgICAgICAgZmRUeXBlPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICBnbHlwaD1cIm5hdmlnYXRpb24tZG93bi1hcnJvd1wiXG4gICAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICBbdGl0bGVdPVwiXG4gICAgICAgICAgICB0aW1lQ29uZmlnPy5pbmNyZWFzZUxhYmVsIHx8XG4gICAgICAgICAgICAoaW50ZXJuYWxUcmFuc2xhdGlvbkNvbmZpZyAmJiAoaW50ZXJuYWxUcmFuc2xhdGlvbkNvbmZpZy5pbmNyZWFzZUxhYmVsIHwgZmRUcmFuc2xhdGUpKVxuICAgICAgICBcIlxuICAgICAgICBbYXJpYUxhYmVsXT1cIlxuICAgICAgICAgICAgdGltZUNvbmZpZz8uaW5jcmVhc2VMYWJlbCB8fFxuICAgICAgICAgICAgKGludGVybmFsVHJhbnNsYXRpb25Db25maWcgJiYgKGludGVybmFsVHJhbnNsYXRpb25Db25maWcuaW5jcmVhc2VMYWJlbCB8IGZkVHJhbnNsYXRlKSlcbiAgICAgICAgXCJcbiAgICAgICAgKGtleXVwKT1cInNwaW5uZXJCdXR0b25LZXl1cEhhbmRsZSgkZXZlbnQpXCJcbiAgICAgICAgKGNsaWNrKT1cInNjcm9sbERvd24oKVwiXG4gICAgPjwvYnV0dG9uPlxufVxuIl19","/** Creates an error to be thrown when attempting to use an invalid date implementation. */\nexport function createMissingDateImplementationError(provider) {\n return Error(`FdTime: No provider found for ${provider}. You must import one of the following ` +\n `modules at your application root: FdDatetimeModule, or provide a ` +\n `custom implementation.`);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3RpbWUvZXJyb3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDJGQUEyRjtBQUMzRixNQUFNLFVBQVUsb0NBQW9DLENBQUMsUUFBZ0I7SUFDakUsT0FBTyxLQUFLLENBQ1IsaUNBQWlDLFFBQVEseUNBQXlDO1FBQzlFLG1FQUFtRTtRQUNuRSx3QkFBd0IsQ0FDL0IsQ0FBQztBQUNOLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiogQ3JlYXRlcyBhbiBlcnJvciB0byBiZSB0aHJvd24gd2hlbiBhdHRlbXB0aW5nIHRvIHVzZSBhbiBpbnZhbGlkIGRhdGUgaW1wbGVtZW50YXRpb24uICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTWlzc2luZ0RhdGVJbXBsZW1lbnRhdGlvbkVycm9yKHByb3ZpZGVyOiBzdHJpbmcpOiBFcnJvciB7XG4gICAgcmV0dXJuIEVycm9yKFxuICAgICAgICBgRmRUaW1lOiBObyBwcm92aWRlciBmb3VuZCBmb3IgJHtwcm92aWRlcn0uIFlvdSBtdXN0IGltcG9ydCBvbmUgb2YgdGhlIGZvbGxvd2luZyBgICtcbiAgICAgICAgICAgIGBtb2R1bGVzIGF0IHlvdXIgYXBwbGljYXRpb24gcm9vdDogRmREYXRldGltZU1vZHVsZSwgb3IgcHJvdmlkZSBhIGAgK1xuICAgICAgICAgICAgYGN1c3RvbSBpbXBsZW1lbnRhdGlvbi5gXG4gICAgKTtcbn1cbiJdfQ==","import { LEFT_ARROW, RIGHT_ARROW } from '@angular/cdk/keycodes';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, DestroyRef, ElementRef, Input, Optional, QueryList, ViewChildren, ViewEncapsulation, computed, forwardRef, inject, input } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Subscription } from 'rxjs';\nimport { KeyUtil, RtlService } from '@fundamental-ngx/cdk/utils';\nimport { DatetimeAdapter } from '@fundamental-ngx/core/datetime';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ContentDensityObserver, contentDensityObserverProviders } from '@fundamental-ngx/core/content-density';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { createMissingDateImplementationError } from './errors';\nimport { TimeColumnComponent } from './time-column/time-column.component';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@fundamental-ngx/core/datetime\";\nimport * as i2 from \"@fundamental-ngx/core/content-density\";\nimport * as i3 from \"@fundamental-ngx/cdk/utils\";\nexport class TimeComponent {\n /** @hidden */\n constructor(_changeDetectorRef, _elementRef, \n // Use @Optional to avoid angular injection error message and throw our own which is more precise one\n _dateTimeAdapter, _contentDensityObserver, _rtlService) {\n this._changeDetectorRef = _changeDetectorRef;\n this._elementRef = _elementRef;\n this._dateTimeAdapter = _dateTimeAdapter;\n this._contentDensityObserver = _contentDensityObserver;\n this._rtlService = _rtlService;\n /**\n * @Input When set to false, uses the 24 hour clock (hours ranging from 0 to 23)\n * and does not display a period control.\n */\n this.meridian = false;\n /**\n * @Input When set to false, does not set the input field to invalid state on invalid entry.\n */\n this.validate = true;\n /**\n * @Input when set to true, time inputs won't allow to have 1 digit\n * for example 9 will become 09\n * but 12 will be kept as 12.\n */\n this.keepTwoDigits = false;\n /**\n * @Input When set to false, hides the input for seconds.\n */\n this.displaySeconds = true;\n /** @Input When set to false, hides the input for minutes. */\n this.displayMinutes = true;\n /**\n * When set to false, hides the input for hours\n */\n this.displayHours = true;\n /** @Input Defines if time component should be used in tablet mode */\n this.tablet = false;\n /** @Input Defines quantity of the elements, that are visible at the same time. Should be odd number */\n this.elementsAtOnce = 7;\n /** @Input Whether to show spinner buttons */\n this.spinnerButtons = true;\n /**\n * The interval between selectable minutes (e.g., 1 for every minute, 5 for 5-minute intervals, 15 for 15-minute intervals).\n * Defaults to 1 (every minute).\n */\n this.minuteStep = input(1, ...(ngDevMode ? [{ debugName: \"minuteStep\" }] : []));\n /** Active column view to iterate with */\n this.activeView = 'hour';\n /**\n * @hidden\n * container for [0 - 23] hours\n */\n this.hourViewItems = [];\n /**\n * @hidden\n * container for [0 - 59] minutes\n */\n this.minuteViewItems = [];\n /**\n * @hidden\n * container for [0 - 59] seconds\n */\n this.secondViewItems = [];\n /**\n * @hidden\n * container for [am, pm] meridian values\n */\n this.meridianViewItems = [];\n /** Offset computed signal */\n this.offset = computed(() => Math.floor(this.elementsAtOnce / 2), ...(ngDevMode ? [{ debugName: \"offset\" }] : []));\n /** Offset for minutes column, adjusted for minuteStep */\n this.minuteOffset = computed(() => {\n const step = this.minuteStep();\n const stepCount = Math.ceil(60 / step);\n const effectiveElementsAtOnce = Math.min(this.elementsAtOnce, stepCount);\n // Ensure effective count is odd for proper centering (need equal items above and below focused item)\n const adjustedElementsAtOnce = effectiveElementsAtOnce % 2 === 0 ? effectiveElementsAtOnce - 1 : effectiveElementsAtOnce;\n return Math.floor(adjustedElementsAtOnce / 2);\n }, ...(ngDevMode ? [{ debugName: \"minuteOffset\" }] : []));\n /** @hidden */\n this._destroyRef = inject(DestroyRef);\n /** @hidden */\n this._subscriptions = new Subscription();\n /** @hidden */\n this.onChange = () => { };\n /** @hidden */\n this.onTouched = () => { };\n if (!_dateTimeAdapter) {\n throw createMissingDateImplementationError('DateTimeAdapter');\n }\n this.time = this._getDefaultValue();\n }\n /** @hidden */\n ngOnInit() {\n this._dateTimeAdapter.localeChanges.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => {\n this._setUpViewGrid();\n this._changeDetectorRef.detectChanges();\n });\n this._setUpViewGrid();\n }\n /** @hidden\n * Reacts only when there is meridian, time, or minuteStep input change\n */\n ngOnChanges(changes) {\n if (changes.meridian || changes.time || changes.minuteStep) {\n this._setUpViewGrid();\n }\n if (changes.elementsAtOnce && changes.elementsAtOnce.currentValue % 2 === 0) {\n throw new Error('[elementsAtOnce] should be odd number');\n }\n }\n /** @hidden */\n ngOnDestroy() {\n this._subscriptions.unsubscribe();\n }\n /** @hidden */\n ngAfterViewInit() {\n this.refreshColumns();\n }\n /** @hidden */\n registerOnChange(fn) {\n this.onChange = fn;\n }\n /** @hidden */\n registerOnTouched(fn) {\n this.onTouched = fn;\n }\n /** @hidden */\n setDisabledState(isDisabled) {\n this.disabled = isDisabled;\n this._changeDetectorRef.detectChanges();\n }\n /** @hidden */\n refreshColumns() {\n this.columns.forEach((column) => column.setValueOfActive());\n }\n /**\n * @hidden\n * Handles meridian change.\n * This implicitly changes hours by +/- 12\n */\n handleMeridianChange(meridian) {\n let hourOffset = meridian === \"AM\" /* Meridian.AM */ ? -12 : 12;\n let currentHour = this._getModelHour();\n if (currentHour > 12 && meridian === \"PM\" /* Meridian.PM */) {\n currentHour -= 12;\n }\n else if (currentHour === 12) {\n currentHour = 0;\n }\n else if (currentHour < 12 && meridian === \"AM\" /* Meridian.AM */) {\n hourOffset = 0;\n }\n const newHour = Math.max(0, Math.min(23, currentHour + hourOffset));\n this.handleHourChange(newHour);\n }\n /** @hidden */\n handleSecondChange(second) {\n this.time = this._dateTimeAdapter.setSeconds(this.time, second);\n this._calculateActiveSecondViewItem();\n this.onChange(this.time);\n }\n /** @hidden */\n handleMinuteChange(minute) {\n this.time = this._dateTimeAdapter.setMinutes(this.time, minute);\n this._calculateActiveMinuteViewItem();\n this.onChange(this.time);\n }\n /**\n * @hidden\n * Handles changes of displayed hour value from template.\n */\n handleHourChange(hour) {\n this.time = this._dateTimeAdapter.setHours(this.time, hour);\n this._calculateActiveHourViewItem();\n if (this.meridian) {\n this._calculateActiveMeridianViewItem();\n }\n this.onChange(this.time);\n }\n /** @hidden */\n handleNextColumnFocus(column) {\n const columns = this._getVisibleColumnsWithRtl();\n let nextIndex = columns.indexOf(column) + 1;\n if (nextIndex >= columns.length) {\n nextIndex = 0;\n }\n this.changeActive(columns[nextIndex]);\n }\n /** @hidden */\n handlePreviousColumnFocus(column) {\n const columns = this._getVisibleColumnsWithRtl();\n let nextIndex = columns.indexOf(column) - 1;\n if (nextIndex < 0) {\n nextIndex = columns.length - 1;\n }\n this.changeActive(columns[nextIndex]);\n }\n /** @hidden */\n handleKeyDownEvent(event) {\n if (KeyUtil.isKeyCode(event, LEFT_ARROW)) {\n this.handlePreviousColumnFocus(this.activeView);\n event.preventDefault();\n this.focusActiveColumn();\n }\n else if (KeyUtil.isKeyCode(event, RIGHT_ARROW)) {\n this.handleNextColumnFocus(this.activeView);\n event.preventDefault();\n this.focusActiveColumn();\n }\n }\n /** @hidden */\n writeValue(time) {\n if (!time || !this._dateTimeAdapter.isValid(time)) {\n time = this._getDefaultValue();\n }\n this.time = time;\n this._setUpActiveViewItems();\n this._changeDetectorRef.detectChanges();\n }\n /** @hidden */\n changeActive(view) {\n this.activeView = view;\n this._changeDetectorRef.detectChanges();\n }\n /** @hidden */\n isActive(view) {\n return this.activeView === view;\n }\n /** @hidden */\n focusActiveColumn() {\n const column = this.columns.find(({ active }) => active);\n column?.focus();\n }\n /** @hidden */\n _focusOut(event) {\n if (!this._elementRef.nativeElement.contains(event.relatedTarget)) {\n this.onTouched();\n }\n }\n /**\n * Get visible time columns\n * @returns visible columns list @see {FdTimeActiveView[]}\n */\n _getVisibleColumns() {\n const allOptions = [\n [this.displayHours, 'hour'],\n [this.displayMinutes, 'minute'],\n [this.displaySeconds, 'second'],\n [this.meridian, 'meridian']\n ];\n return allOptions.filter(([enabled]) => enabled).map(([, view]) => view);\n }\n /**\n * Get visible columns taking into account RTL\n * @returns visible columns list @see {FdTimeActiveView[]}\n */\n _getVisibleColumnsWithRtl() {\n const columns = this._getVisibleColumns();\n return this._rtlService?.rtl.value ? columns.reverse() : columns;\n }\n /** @hidden */\n _setUpViewGrid() {\n this._constructHourViewItems();\n this._constructMinuteViewItems();\n this._constructSecondViewItems();\n this._constructMeridianViewItems();\n // update reference to active view items\n this._setUpActiveViewItems();\n }\n /** @hidden */\n _setUpActiveViewItems() {\n this._calculateActiveHourViewItem();\n this._calculateActiveMinuteViewItem();\n this._calculateActiveSecondViewItem();\n this._calculateActiveMeridianViewItem();\n }\n /** @hidden */\n _constructHourViewItems() {\n this.hourViewItems = this._dateTimeAdapter\n .getHourNames({ meridian: this.meridian, twoDigit: this.keepTwoDigits })\n .map((name, hour) => ({\n value: hour,\n label: name\n }));\n }\n /** @hidden */\n _constructMinuteViewItems() {\n const step = this.minuteStep();\n this.minuteViewItems = this._dateTimeAdapter\n .getMinuteNames({ twoDigit: this.keepTwoDigits, minuteStep: step })\n .map((name, index) => ({\n value: index * step,\n label: name\n }));\n }\n /** @hidden */\n _constructSecondViewItems() {\n this.secondViewItems = this._dateTimeAdapter\n .getSecondNames({ twoDigit: this.keepTwoDigits })\n .map((name, second) => ({\n value: second,\n label: name\n }));\n }\n /** @hidden */\n _constructMeridianViewItems() {\n const [amLabel, pmLabel] = this._dateTimeAdapter.getDayPeriodNames();\n this.meridianViewItems = [\n { value: \"AM\" /* Meridian.AM */, label: amLabel },\n { value: \"PM\" /* Meridian.PM */, label: pmLabel }\n ];\n }\n /** @hidden */\n _calculateActiveHourViewItem() {\n const hour = this._getModelHour();\n this.activeHourViewItem = this.hourViewItems.find(({ value }) => value === hour);\n }\n /** @hidden */\n _calculateActiveMinuteViewItem() {\n const minute = this._getModelMinute();\n const step = this.minuteStep();\n // Round to the nearest valid step and clamp to valid range\n const roundedMinute = Math.min(Math.round(minute / step) * step, 59);\n this.activeMinuteViewItem = this.minuteViewItems.find(({ value }) => value === roundedMinute);\n }\n /** @hidden */\n _calculateActiveSecondViewItem() {\n const second = this._getModelSecond();\n this.activeSecondViewItem = this.secondViewItems.find(({ value }) => value === second);\n }\n /** @hidden */\n _calculateActiveMeridianViewItem() {\n const meridian = this._getDayPeriodByHour();\n this.activeMeridianViewItem = this.meridianViewItems.find(({ value }) => value === meridian);\n }\n /**\n * @hidden\n * Model hours (0 - 23)\n */\n _getModelHour() {\n return this._dateTimeAdapter.getHours(this.time);\n }\n /**\n * @hidden\n * Model minutes (0 - 59)\n */\n _getModelMinute() {\n return this._dateTimeAdapter.getMinutes(this.time);\n }\n /**\n * @hidden\n * Model seconds (0 - 59)\n */\n _getModelSecond() {\n return this._dateTimeAdapter.getSeconds(this.time);\n }\n /**\n * @hidden\n * Get meridian period based on a given hours\n */\n _getDayPeriodByHour(hour = this._getModelHour()) {\n return this._isPm(hour) ? \"PM\" /* Meridian.PM */ : \"AM\" /* Meridian.AM */;\n }\n /** @hidden */\n _isPm(hours = this._getModelHour()) {\n return hours >= 12;\n }\n /**\n * @hidden\n * @returns default time 00:00:00\n */\n _getDefaultValue() {\n return this._dateTimeAdapter.today();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TimeComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i1.DatetimeAdapter, optional: true }, { token: i2.ContentDensityObserver }, { token: i3.RtlService, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.1.4\", type: TimeComponent, isStandalone: true, selector: \"fd-time\", inputs: { meridian: { classPropertyName: \"meridian\", publicName: \"meridian\", isSignal: false, isRequired: false, transformFunction: null }, validate: { classPropertyName: \"validate\", publicName: \"validate\", isSignal: false, isRequired: false, transformFunction: null }, keepTwoDigits: { classPropertyName: \"keepTwoDigits\", publicName: \"keepTwoDigits\", isSignal: false, isRequired: false, transformFunction: null }, disabled: { classPropertyName: \"disabled\", publicName: \"disabled\", isSignal: false, isRequired: false, transformFunction: null }, displaySeconds: { classPropertyName: \"displaySeconds\", publicName: \"displaySeconds\", isSignal: false, isRequired: false, transformFunction: null }, displayMinutes: { classPropertyName: \"displayMinutes\", publicName: \"displayMinutes\", isSignal: false, isRequired: false, transformFunction: null }, displayHours: { classPropertyName: \"displayHours\", publicName: \"displayHours\", isSignal: false, isRequired: false, transformFunction: null }, tablet: { classPropertyName: \"tablet\", publicName: \"tablet\", isSignal: false, isRequired: false, transformFunction: null }, elementsAtOnce: { classPropertyName: \"elementsAtOnce\", publicName: \"elementsAtOnce\", isSignal: false, isRequired: false, transformFunction: null }, time: { classPropertyName: \"time\", publicName: \"time\", isSignal: false, isRequired: false, transformFunction: null }, spinnerButtons: { classPropertyName: \"spinnerButtons\", publicName: \"spinnerButtons\", isSignal: false, isRequired: false, transformFunction: null }, minuteStep: { classPropertyName: \"minuteStep\", publicName: \"minuteStep\", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { \"focusout\": \"_focusOut($event)\", \"blur\": \"onTouched()\" } }, providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TimeComponent),\n multi: true\n },\n contentDensityObserverProviders()\n ], viewQueries: [{ propertyName: \"columns\", predicate: TimeColumnComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: \"<div\\n class=\\\"fd-time\\\"\\n [class.is-compact]=\\\"_contentDensityObserver.isCompactSignal()\\\"\\n (keydown)=\\\"handleKeyDownEvent($event)\\\"\\n [class.fd-time--tablet]=\\\"tablet\\\"\\n [attr.aria-label]=\\\"'coreTime.componentAriaName' | fdTranslate\\\"\\n>\\n <fd-time-column\\n [active]=\\\"isActive('hour')\\\"\\n [rows]=\\\"hourViewItems\\\"\\n [offset]=\\\"offset()\\\"\\n [elementsAtOnce]=\\\"elementsAtOnce\\\"\\n [activeValue]=\\\"activeHourViewItem\\\"\\n columnTranslationsPreset=\\\"hours\\\"\\n [spinners]=\\\"spinnerButtons\\\"\\n (activeValueChange)=\\\"handleHourChange($event.value.value)\\\"\\n (activeStateChange)=\\\"changeActive('hour')\\\"\\n ></fd-time-column>\\n @if (displayMinutes) {\\n <fd-time-column\\n [active]=\\\"isActive('minute')\\\"\\n [rows]=\\\"minuteViewItems\\\"\\n [offset]=\\\"minuteOffset()\\\"\\n [elementsAtOnce]=\\\"elementsAtOnce\\\"\\n [activeValue]=\\\"activeMinuteViewItem\\\"\\n columnTranslationsPreset=\\\"minutes\\\"\\n [spinners]=\\\"spinnerButtons\\\"\\n (activeValueChange)=\\\"handleMinuteChange($event.value.value)\\\"\\n (activeStateChange)=\\\"changeActive('minute')\\\"\\n ></fd-time-column>\\n }\\n @if (displaySeconds) {\\n <fd-time-column\\n [active]=\\\"isActive('second')\\\"\\n [rows]=\\\"secondViewItems\\\"\\n [offset]=\\\"offset()\\\"\\n [elementsAtOnce]=\\\"elementsAtOnce\\\"\\n [activeValue]=\\\"activeSecondViewItem\\\"\\n columnTranslationsPreset=\\\"seconds\\\"\\n [spinners]=\\\"spinnerButtons\\\"\\n (activeValueChange)=\\\"handleSecondChange($event.value.value)\\\"\\n (activeStateChange)=\\\"changeActive('second')\\\"\\n ></fd-time-column>\\n }\\n @if (meridian) {\\n <fd-time-column\\n [active]=\\\"isActive('meridian')\\\"\\n [rows]=\\\"meridianViewItems\\\"\\n [activeValue]=\\\"activeMeridianViewItem\\\"\\n [offset]=\\\"0\\\"\\n [elementsAtOnce]=\\\"elementsAtOnce\\\"\\n columnTranslationsPreset=\\\"period\\\"\\n [meridian]=\\\"true\\\"\\n [spinners]=\\\"spinnerButtons\\\"\\n (activeValueChange)=\\\"handleMeridianChange($event.value.value)\\\"\\n (activeStateChange)=\\\"changeActive('meridian')\\\"\\n ></fd-time-column>\\n }\\n</div>\\n\", styles: [\".fd-input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:var(--sapField_BackgroundStyle,var(--sapField_BackgroundStyle));background-color:var(--sapField_Background,var(--sapField_Background));border:0;border:var(--sapField_BorderWidth) var(--sapField_BorderStyle) var(--sapField_BorderColor);border-radius:var(--sapField_BorderCornerRadius);-webkit-box-shadow:var(--sapField_Shadow);box-shadow:var(--sapField_Shadow);-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapField_TextColor);cursor:text;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:var(--fdInput_Height,var(--sapElement_Height));line-height:normal;margin-block:0;margin-block:var(--fdInput_Field_Margin_Block,.25rem);margin-inline:0;min-height:var(--fdInput_Height,var(--sapElement_Height));min-width:2.75rem;outline:none;overflow:hidden;padding-block:0;padding-inline:0;padding-inline:var(--fdInput_Field_Padding_Inline,.625rem);text-overflow:ellipsis;text-shadow:var(--fdInput_Text_Shadow);white-space:nowrap;width:100%;z-index:1}.fd-input:after,.fd-input:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-input::-webkit-input-placeholder{color:var(--sapField_PlaceholderTextColor);font-style:var(--fdPlaceholder_Font_Style)}.fd-input::-moz-placeholder{color:var(--sapField_PlaceholderTextColor);font-style:var(--fdPlaceholder_Font_Style)}.fd-input:-ms-input-placeholder{color:var(--sapField_PlaceholderTextColor);font-style:var(--fdPlaceholder_Font_Style)}.fd-input::-ms-input-placeholder{color:var(--sapField_PlaceholderTextColor);font-style:var(--fdPlaceholder_Font_Style)}.fd-input::placeholder{color:var(--sapField_PlaceholderTextColor);font-style:var(--fdPlaceholder_Font_Style)}.fd-input[dir=rtl]::-webkit-input-placeholder,[dir=rtl] .fd-input::-webkit-input-placeholder{text-indent:.125rem}.fd-input[dir=rtl]::-moz-placeholder,[dir=rtl] .fd-input::-moz-placeholder{text-indent:.125rem}.fd-input[dir=rtl]:-ms-input-placeholder,[dir=rtl] .fd-input:-ms-input-placeholder{text-indent:.125rem}.fd-input[dir=rtl]::-ms-input-placeholder,[dir=rtl] .fd-input::-ms-input-placeholder{text-indent:.125rem}.fd-input[dir=rtl]::placeholder,[dir=rtl] .fd-input::placeholder{text-indent:.125rem}.fd-input::-moz-selection{background-color:var(--sapSelectedColor);color:var(--sapContent_ContrastTextColor)}.fd-input::selection{background-color:var(--sapSelectedColor);color:var(--sapContent_ContrastTextColor)}.fd-input::-ms-clear{display:none}.fd-input.is-hover,.fd-input:hover{background:var(--sapField_Hover_BackgroundStyle,var(--sapField_Hover_BackgroundStyle));background-color:var(--sapField_Hover_Background,var(--sapField_Hover_Background));border-color:var(--sapField_Hover_BorderColor);-webkit-box-shadow:var(--fdInput_Box_Shadow_Hover);box-shadow:var(--fdInput_Box_Shadow_Hover)}.fd-input.is-focus,.fd-input:focus{background:var(--sapField_Focus_Background,var(--sapField_Focus_Background));-webkit-box-shadow:none;box-shadow:none;outline:var(--fdInput_Outline_Color) var(--sapContent_FocusStyle) var(--sapContent_FocusWidth);outline-offset:var(--fdInput_Outline_Offset);z-index:5}.fd-input[type=search]::-webkit-search-cancel-button,.fd-input[type=search]::-webkit-search-decoration,.fd-input[type=search]::-webkit-search-results-button,.fd-input[type=search]::-webkit-search-results-decoration{-webkit-appearance:none;appearance:none}.fd-input[aria-expanded=false]{z-index:0}.fd-input.is-expanded,.fd-input[aria-expanded=true]{z-index:4}.fd-input[class*=-compact],.fd-input[class*=-condensed],[class*=-compact] .fd-input:not([class*=-cozy]),[class*=-condensed] .fd-input:not([class*=-cozy]){-webkit-box-sizing:border-box;box-sizing:border-box;height:var(--fdInput_Compact_Height,var(--sapElement_Compact_Height));margin-block:var(--fdInput_Field_Compact_Margin_Block,.1875rem);margin-inline:0;min-height:var(--fdInput_Compact_Height,var(--sapElement_Compact_Height));min-width:var(--fdInput_Field_Compact_Min_Width,2rem);padding-block:0;padding-inline:var(--fdInput_Field_Compact_Padding,.5rem)}.fd-input--no-number-spinner{-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.fd-input--no-number-spinner::-webkit-inner-spin-button,.fd-input--no-number-spinner::-webkit-outer-spin-button{-webkit-appearance:none;appearance:none;margin-block:0;margin-inline:0}.fd-input.right-align{text-align:right}.fd-input.is-success{background:var(--sapField_SuccessBackgroundStyle);background-color:var(--sapField_SuccessBackground);border:var(--sapField_SuccessColor) var(--sapField_SuccessBorderWidth) var(--sapField_SuccessBorderStyle);-webkit-box-shadow:var(--sapField_SuccessShadow);box-shadow:var(--sapField_SuccessShadow)}.fd-input.is-success.is-hover,.fd-input.is-success:hover{background-color:var(--fdInput_Success_Background_Color_Hover);border-color:var(--sapField_SuccessColor);-webkit-box-shadow:var(--fdInput_Success_Box_Shadow_Hover);box-shadow:var(--fdInput_Success_Box_Shadow_Hover)}.fd-input.is-success.is-focus,.fd-input.is-success:focus{background:var(--sapField_Focus_Background);outline-color:var(--fdInput_Success_Outline_Color);z-index:5}.fd-input.is-success.is-focus.is-hover,.fd-input.is-success.is-focus:hover,.fd-input.is-success:focus.is-hover,.fd-input.is-success:focus:hover{-webkit-box-shadow:none;box-shadow:none}.fd-input.is-success.is-expanded,.fd-input.is-success[aria-expanded=true]{background:var(--sapField_Focus_Background);-webkit-box-shadow:none;box-shadow:none;outline:var(--sapContent_FocusWidth) var(--sapContent_FocusStyle) var(--fdInput_Success_Outline_Color);outline-offset:var(--fdInput_Outline_Offset)}.fd-input.is-error{background:var(--sapField_InvalidBackgroundStyle);background-color:var(--sapField_InvalidBackground);border:var(--sapField_InvalidColor) var(--sapField_InvalidBorderWidth) var(--sapField_InvalidBorderStyle);-webkit-box-shadow:var(--sapField_InvalidShadow);box-shadow:var(--sapField_InvalidShadow)}.fd-input.is-error.is-hover,.fd-input.is-error:hover{background-color:var(--fdInput_Error_Background_Color_Hover);border-color:var(--sapField_InvalidColor);-webkit-box-shadow:var(--fdInput_Error_Box_Shadow_Hover);box-shadow:var(--fdInput_Error_Box_Shadow_Hover)}.fd-input.is-error.is-focus,.fd-input.is-error:focus{background:var(--sapField_Focus_Background);outline-color:var(--fdInput_Error_Outline_Color);z-index:5}.fd-input.is-error.is-focus.is-hover,.fd-input.is-error.is-focus:hover,.fd-input.is-error:focus.is-hover,.fd-input.is-error:focus:hover{-webkit-box-shadow:none;box-shadow:none}.fd-input.is-error.is-expanded,.fd-input.is-error[aria-expanded=true]{background:var(--sapField_Focus_Background);-webkit-box-shadow:none;box-shadow:none;outline:var(--sapContent_FocusWidth) var(--sapContent_FocusStyle) var(--fdInput_Error_Outline_Color);outline-offset:var(--fdInput_Outline_Offset)}.fd-input.is-warning{background:var(--sapField_WarningBackgroundStyle);background-color:var(--sapField_WarningBackground);border:var(--sapField_WarningColor) var(--sapField_WarningBorderWidth) var(--sapField_WarningBorderStyle);-webkit-box-shadow:var(--sapField_WarningShadow);box-shadow:var(--sapField_WarningShadow)}.fd-input.is-warning.is-hover,.fd-input.is-warning:hover{background-color:var(--fdInput_Warning_Background_Color_Hover);border-color:var(--sapField_WarningColor);-webkit-box-shadow:var(--fdInput_Warning_Box_Shadow_Hover);box-shadow:var(--fdInput_Warning_Box_Shadow_Hover)}.fd-input.is-warning.is-focus,.fd-input.is-warning:focus{background:var(--sapField_Focus_Background);outline-color:var(--fdInput_Warning_Outline_Color);z-index:5}.fd-input.is-warning.is-focus.is-hover,.fd-input.is-warning.is-focus:hover,.fd-input.is-warning:focus.is-hover,.fd-input.is-warning:focus:hover{-webkit-box-shadow:none;box-shadow:none}.fd-input.is-warning.is-expanded,.fd-input.is-warning[aria-expanded=true]{background:var(--sapField_Focus_Background);-webkit-box-shadow:none;box-shadow:none;outline:var(--sapContent_FocusWidth) var(--sapContent_FocusStyle) var(--fdInput_Warning_Outline_Color);outline-offset:var(--fdInput_Outline_Offset)}.fd-input.is-alert{background:var(--sapField_WarningBackgroundStyle);background-color:var(--sapField_WarningBackground);border:var(--sapField_WarningColor) var(--sapField_WarningBorderWidth) var(--sapField_WarningBorderStyle)}.fd-input.is-alert.is-hover,.fd-input.is-alert:hover{background-color:var(--fdInput_Warning_Background_Color_Hover);border-color:var(--sapField_WarningColor);-webkit-box-shadow:var(--fdInput_Warning_Box_Shadow_Hover);box-shadow:var(--fdInput_Warning_Box_Shadow_Hover)}.fd-input.is-alert.is-focus,.fd-input.is-alert:focus{background:var(--sapField_Focus_Background);outline-color:var(--fdInput_Warning_Outline_Color);z-index:5}.fd-input.is-alert.is-focus.is-hover,.fd-input.is-alert.is-focus:hover,.fd-input.is-alert:focus.is-hover,.fd-input.is-alert:focus:hover{-webkit-box-shadow:none;box-shadow:none}.fd-input.is-alert.is-expanded,.fd-input.is-alert[aria-expanded=true]{background:var(--sapField_Focus_Background);-webkit-box-shadow:none;box-shadow:none;outline:var(--sapContent_FocusWidth) var(--sapContent_FocusStyle) var(--fdInput_Warning_Outline_Color);outline-offset:var(--fdInput_Outline_Offset)}.fd-input.is-information{background:var(--sapField_InformationBackgroundStyle);background-color:var(--sapField_InformationBackground);border:var(--sapField_InformationColor) var(--sapField_InformationBorderWidth) var(--sapField_InformationBorderStyle);-webkit-box-shadow:var(--sapField_InformationShadow);box-shadow:var(--sapField_InformationShadow)}.fd-input.is-information.is-hover,.fd-input.is-information:hover{background-color:var(--fdInput_Information_Background_Color_Hover);border-color:var(--sapField_InformationColor);-webkit-box-shadow:var(--fdInput_Information_Box_Shadow_Hover);box-shadow:var(--fdInput_Information_Box_Shadow_Hover)}.fd-input.is-information.is-focus,.fd-input.is-information:focus{background:var(--sapField_Focus_Background);outline-color:var(--fdInput_Information_Outline_Color);z-index:5}.fd-input.is-information.is-focus.is-hover,.fd-input.is-information.is-focus:hover,.fd-input.is-information:focus.is-hover,.fd-input.is-information:focus:hover{-webkit-box-shadow:none;box-shadow:none}.fd-input.is-information.is-expanded,.fd-input.is-information[aria-expanded=true]{background:var(--sapField_Focus_Background);-webkit-box-shadow:none;box-shadow:none;outline:var(--sapContent_FocusWidth) var(--sapContent_FocusStyle) var(--fdInput_Information_Outline_Color);outline-offset:var(--fdInput_Outline_Offset)}.fd-input.is-alert,.fd-input.is-error,.fd-input.is-warning{font-style:var(--fdInput_State_Text_Style);font-weight:var(--fdInput_State_Font_Weight)}.fd-input.is-alert::-webkit-input-placeholder,.fd-input.is-error::-webkit-input-placeholder,.fd-input.is-warning::-webkit-input-placeholder{font-weight:var(--fdInput_State_Font_Weight)}.fd-input.is-alert::-moz-placeholder,.fd-input.is-error::-moz-placeholder,.fd-input.is-warning::-moz-placeholder{font-weight:var(--fdInput_State_Font_Weight)}.fd-input.is-alert:-ms-input-placeholder,.fd-input.is-error:-ms-input-placeholder,.fd-input.is-warning:-ms-input-placeholder{font-weight:var(--fdInput_State_Font_Weight)}.fd-input.is-alert::-ms-input-placeholder,.fd-input.is-error::-ms-input-placeholder,.fd-input.is-warning::-ms-input-placeholder{font-weight:var(--fdInput_State_Font_Weight)}.fd-input.is-alert::placeholder,.fd-input.is-error::placeholder,.fd-input.is-warning::placeholder{font-weight:var(--fdInput_State_Font_Weight)}.fd-input.is-alert.is-focus,.fd-input.is-alert:focus,.fd-input.is-error.is-focus,.fd-input.is-error:focus,.fd-input.is-information.is-focus,.fd-input.is-information:focus,.fd-input.is-warning.is-focus,.fd-input.is-warning:focus{outline-offset:var(--fdInput_Outline_Offset_States);z-index:5}.fd-input.is-error::-webkit-input-placeholder{color:var(--sapField_TextColor)}.fd-input.is-error::-moz-placeholder{color:var(--sapField_TextColor)}.fd-input.is-error:-ms-input-placeholder{color:var(--sapField_TextColor)}.fd-input.is-error::-ms-input-placeholder{color:var(--sapField_TextColor)}.fd-input.is-error::placeholder{color:var(--sapField_TextColor)}.fd-input.is-disabled,.fd-input:disabled,.fd-input[aria-disabled=true]{opacity:var(--sapContent_DisabledOpacity);pointer-events:none}.fd-input.is-disabled::-webkit-input-placeholder,.fd-input:disabled::-webkit-input-placeholder,.fd-input[aria-disabled=true]::-webkit-input-placeholder{color:var(--fdInput_Non_Interactive_State_Placeholder_Color);opacity:0}.fd-input.is-disabled::-moz-placeholder,.fd-input:disabled::-moz-placeholder,.fd-input[aria-disabled=true]::-moz-placeholder{color:var(--fdInput_Non_Interactive_State_Placeholder_Color);opacity:0}.fd-input.is-disabled:-ms-input-placeholder,.fd-input:disabled:-ms-input-placeholder,.fd-input[aria-disabled=true]:-ms-input-placeholder{color:var(--fdInput_Non_Interactive_State_Placeholder_Color);opacity:0}.fd-input.is-disabled::-ms-input-placeholder,.fd-input:disabled::-ms-input-placeholder,.fd-input[aria-disabled=true]::-ms-input-placeholder{color:var(--fdInput_Non_Interactive_State_Placeholder_Color);opacity:0}.fd-input.is-disabled::placeholder,.fd-input:disabled::placeholder,.fd-input[aria-disabled=true]::placeholder{color:var(--fdInput_Non_Interactive_State_Placeholder_Color);opacity:0}.fd-input.is-readonly,.fd-input[aria-readonly=true],.fd-input[readonly]{--fdInput_Outline_Offset:-.25rem;background:var(--sapField_ReadOnly_BackgroundStyle);background-color:var(--sapField_ReadOnly_Background);border-color:var(--sapField_ReadOnly_BorderColor);-webkit-box-shadow:none;box-shadow:none}.fd-input.is-readonly::-webkit-input-placeholder,.fd-input[aria-readonly=true]::-webkit-input-placeholder,.fd-input[readonly]::-webkit-input-placeholder{color:var(--fdInput_Non_Interactive_State_Placeholder_Color);opacity:0}.fd-input.is-readonly::-moz-placeholder,.fd-input[aria-readonly=true]::-moz-placeholder,.fd-input[readonly]::-moz-placeholder{color:var(--fdInput_Non_Interactive_State_Placeholder_Color);opacity:0}.fd-input.is-readonly:-ms-input-placeholder,.fd-input[aria-readonly=true]:-ms-input-placeholder,.fd-input[readonly]:-ms-input-placeholder{color:var(--fdInput_Non_Interactive_State_Placeholder_Color);opacity:0}.fd-input.is-readonly::-ms-input-placeholder,.fd-input[aria-readonly=true]::-ms-input-placeholder,.fd-input[readonly]::-ms-input-placeholder{color:var(--fdInput_Non_Interactive_State_Placeholder_Color);opacity:0}.fd-input.is-readonly::placeholder,.fd-input[aria-readonly=true]::placeholder,.fd-input[readonly]::placeholder{color:var(--fdInput_Non_Interactive_State_Placeholder_Color);opacity:0}.fd-input.is-readonly.is-focus,.fd-input.is-readonly.is-hover,.fd-input.is-readonly:focus,.fd-input.is-readonly:hover,.fd-input[aria-readonly=true].is-focus,.fd-input[aria-readonly=true].is-hover,.fd-input[aria-readonly=true]:focus,.fd-input[aria-readonly=true]:hover,.fd-input[readonly].is-focus,.fd-input[readonly].is-hover,.fd-input[readonly]:focus,.fd-input[readonly]:hover{--fdInput_Outline_Offset:-.25rem;background:var(--sapField_ReadOnly_BackgroundStyle);background-color:var(--sapField_ReadOnly_Background);border-color:var(--sapField_ReadOnly_BorderColor);-webkit-box-shadow:none;box-shadow:none}.fd-input.is-readonly.is-focus,.fd-input.is-readonly:focus,.fd-input[aria-readonly=true].is-focus,.fd-input[aria-readonly=true]:focus,.fd-input[readonly].is-focus,.fd-input[readonly]:focus{z-index:5}.fd-time{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0;--fdTime_Item_Height:2.875rem;--fdTime_Dropdown_Padding:1rem;--fdTime_Wrapper_Height:20.125rem;--fdTime_Unit_Line_Height:2.75rem;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding-block:var(--fdTime_Dropdown_Padding);padding-inline:var(--fdTime_Dropdown_Padding)}.fd-time:after,.fd-time:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-time__col{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);display:-webkit-box;display:-ms-flexbox;display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-margin-end:.5rem;margin-inline-end:.5rem}.fd-time__col:after,.fd-time__col:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-time__col:last-child{-webkit-margin-end:0;margin-inline-end:0}.fd-time__current-indicator{border:0;border:.0625rem solid var(--sapList_SelectionBorderColor);border-radius:var(--sapButton_BorderCornerRadius);-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:var(--fdTime_Item_Height);left:0;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0;position:absolute;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);width:3rem}.fd-time__current-indicator:after,.fd-time__current-indicator:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-time__wrapper{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);display:-webkit-box;display:-ms-flexbox;display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;overflow:hidden;position:relative;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;width:3rem}.fd-time__wrapper:after,.fd-time__wrapper:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-time__wrapper--active{height:var(--fdTime_Wrapper_Height);max-height:var(--fdTime_Wrapper_Height);-webkit-box-pack:initial;-ms-flex-pack:initial;justify-content:normal}.fd-time__wrapper--meridian .fd-time__item:first-child{margin-top:calc(var(--fdTime_Item_Height)*3)}.fd-time__wrapper--meridian .fd-time__item:last-child{-webkit-margin-after:calc(var(--fdTime_Item_Height)*3);margin-block-end:calc(var(--fdTime_Item_Height)*3)}.fd-time__wrapper--meridian .fd-time__list{height:var(--fdTime_Wrapper_Height)}.fd-time__item{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);display:-webkit-box;display:-ms-flexbox;display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;background-color:var(--sapLegend_WorkingBackground);border:.0625rem solid var(--sapList_Background);border-radius:var(--sapButton_BorderCornerRadius);cursor:default;height:var(--fdTime_Item_Height);min-height:var(--fdTime_Item_Height);text-shadow:var(--fdTime_Text_Shadow);width:3rem}.fd-time__item:after,.fd-time__item:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-time__item:hover{background-color:var(--sapList_Hover_Background)}.fd-time__item:active{background-color:var(--sapContent_Selected_Background);border-color:transparent;color:var(--sapContent_Selected_TextColor)}.fd-time__item--current{background-color:var(--sapList_Background);border-color:var(--sapList_SelectionBorderColor)}.fd-time__item--current:hover{background-color:var(--sapList_Hover_Background)}.fd-time__item--collapsed,.fd-time__item--current:active{background-color:var(--sapContent_Selected_Background);border-color:transparent;color:var(--sapContent_Selected_TextColor)}.fd-time__item--collapsed:hover{background-color:var(--sapContent_Selected_Hover_Background)}.fd-time__item--hidden{visibility:hidden}.fd-time__unit{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);color:inherit;display:block;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:100%;line-height:normal;line-height:var(--fdTime_Unit_Line_Height);margin-block:0;margin-inline:0;overflow:hidden;padding-block:0;padding-inline:0;text-align:center;text-overflow:ellipsis;white-space:nowrap;width:100%;z-index:2}.fd-time__unit:after,.fd-time__unit:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-time__list{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0;-ms-overflow-style:none;overflow:hidden;scrollbar-width:none}.fd-time__list:after,.fd-time__list:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-time__list::-webkit-scrollbar{display:none}.fd-time__slider-label{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapContent_LabelColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;max-width:100%;position:relative;text-overflow:ellipsis;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;-webkit-margin-end:.5rem;cursor:text;margin-inline-end:.5rem;-ms-flex-item-align:start;align-self:flex-start;font-size:var(--sapFontSmallSize);height:2rem;line-height:2rem;margin-block:0;margin-inline:0;overflow:hidden;padding-block:0;padding-inline:0;text-overflow:clip;white-space:nowrap;-ms-flex-item-align:auto;align-self:auto}.fd-time__slider-label:after,.fd-time__slider-label:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-time__control{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0}.fd-time__control:after,.fd-time__control:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-time--tablet{--fdTime_Dropdown_Padding:.5rem;--fdTime_Item_Height:2.875rem}.fd-time[class*=-compact],.fd-time[class*=-condensed],[class*=-compact] .fd-time:not([class*=-cozy]),[class*=-condensed] .fd-time:not([class*=-cozy]){--fdTime_Dropdown_Padding:.5rem;--fdTime_Item_Height:2rem;--fdTime_Wrapper_Height:14rem;--fdTime_Unit_Line_Height:1.875rem}.fd-time--scrollable .fd-time__list{overflow:auto}.fd-time__list{touch-action:pan-x;-webkit-user-select:none;user-select:none;-webkit-user-drag:none;-webkit-tap-highlight-color:rgba(0,0,0,0)}\\n/*! Bundled license information:\\n\\nfundamental-styles/dist/time.css:\\n (*!\\n * Fundamental Library Styles v0.40.1\\n * Copyright (c) 2025 SAP SE or an SAP affiliate company.\\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\\n *)\\n*/\\n\"], dependencies: [{ kind: \"component\", type: TimeColumnComponent, selector: \"fd-time-column\", inputs: [\"rows\", \"spinners\", \"activeValue\", \"active\", \"meridian\", \"id\", \"timeConfig\", \"columnTranslationsPreset\", \"offset\", \"elementsAtOnce\"], outputs: [\"activeValueChange\", \"activeStateChange\"] }, { kind: \"pipe\", type: FdTranslatePipe, name: \"fdTranslate\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TimeComponent, decorators: [{\n type: Component,\n args: [{ selector: 'fd-time', host: {\n '(focusout)': '_focusOut($event)',\n '(blur)': 'onTouched()'\n }, providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TimeComponent),\n multi: true\n },\n contentDensityObserverProviders()\n ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [TimeColumnComponent, FdTranslatePipe], template: \"<div\\n class=\\\"fd-time\\\"\\n [class.is-compact]=\\\"_contentDensityObserver.isCompactSignal()\\\"\\n (keydown)=\\\"handleKeyDownEvent($event)\\\"\\n [class.fd-time--tablet]=\\\"tablet\\\"\\n [attr.aria-label]=\\\"'coreTime.componentAriaName' | fdTranslate\\\"\\n>\\n <fd-time-column\\n [active]=\\\"isActive('hour')\\\"\\n [rows]=\\\"hourViewItems\\\"\\n [offset]=\\\"offset()\\\"\\n [elementsAtOnce]=\\\"elementsAtOnce\\\"\\n [activeValue]=\\\"activeHourViewItem\\\"\\n columnTranslationsPreset=\\\"hours\\\"\\n [spinners]=\\\"spinnerButtons\\\"\\n (activeValueChange)=\\\"handleHourChange($event.value.value)\\\"\\n (activeStateChange)=\\\"changeActive('hour')\\\"\\n ></fd-time-column>\\n @if (displayMinutes) {\\n <fd-time-column\\n [active]=\\\"isActive('minute')\\\"\\n [rows]=\\\"minuteViewItems\\\"\\n [offset]=\\\"minuteOffset()\\\"\\n [elementsAtOnce]=\\\"elementsAtOnce\\\"\\n [activeValue]=\\\"activeMinuteViewItem\\\"\\n columnTranslationsPreset=\\\"minutes\\\"\\n [spinners]=\\\"spinnerButtons\\\"\\n (activeValueChange)=\\\"handleMinuteChange($event.value.value)\\\"\\n (activeStateChange)=\\\"changeActive('minute')\\\"\\n ></fd-time-column>\\n }\\n @if (displaySeconds) {\\n <fd-time-column\\n [active]=\\\"isActive('second')\\\"\\n [rows]=\\\"secondViewItems\\\"\\n [offset]=\\\"offset()\\\"\\n [elementsAtOnce]=\\\"elementsAtOnce\\\"\\n [activeValue]=\\\"activeSecondViewItem\\\"\\n columnTranslationsPreset=\\\"seconds\\\"\\n [spinners]=\\\"spinnerButtons\\\"\\n (activeValueChange)=\\\"handleSecondChange($event.value.value)\\\"\\n (activeStateChange)=\\\"changeActive('second')\\\"\\n ></fd-time-column>\\n }\\n @if (meridian) {\\n <fd-time-column\\n [active]=\\\"isActive('meridian')\\\"\\n [rows]=\\\"meridianViewItems\\\"\\n [activeValue]=\\\"activeMeridianViewItem\\\"\\n [offset]=\\\"0\\\"\\n [elementsAtOnce]=\\\"elementsAtOnce\\\"\\n columnTranslationsPreset=\\\"period\\\"\\n [meridian]=\\\"true\\\"\\n [spinners]=\\\"spinnerButtons\\\"\\n (activeValueChange)=\\\"handleMeridianChange($event.value.value)\\\"\\n (activeStateChange)=\\\"changeActive('meridian')\\\"\\n ></fd-time-column>\\n }\\n</div>\\n\", styles: [\".fd-input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:var(--sapField_BackgroundStyle,var(--sapField_BackgroundStyle));background-color:var(--sapField_Background,var(--sapField_Background));border:0;border:var(--sapField_BorderWidth) var(--sapField_BorderStyle) var(--sapField_BorderColor);border-radius:var(--sapField_BorderCornerRadius);-webkit-box-shadow:var(--sapField_Shadow);box-shadow:var(--sapField_Shadow);-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapField_TextColor);cursor:text;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:var(--fdInput_Height,var(--sapElement_Height));line-height:normal;margin-block:0;margin-block:var(--fdInput_Field_Margin_Block,.25rem);margin-inline:0;min-height:var(--fdInput_Height,var(--sapElement_Height));min-width:2.75rem;outline:none;overflow:hidden;padding-block:0;padding-inline:0;padding-inline:var(--fdInput_Field_Padding_Inline,.625rem);text-overflow:ellipsis;text-shadow:var(--fdInput_Text_Shadow);white-space:nowrap;width:100%;z-index:1}.fd-input:after,.fd-input:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-input::-webkit-input-placeholder{color:var(--sapField_PlaceholderTextColor);font-style:var(--fdPlaceholder_Font_Style)}.fd-input::-moz-placeholder{color:var(--sapField_PlaceholderTextColor);font-style:var(--fdPlaceholder_Font_Style)}.fd-input:-ms-input-placeholder{color:var(--sapField_PlaceholderTextColor);font-style:var(--fdPlaceholder_Font_Style)}.fd-input::-ms-input-placeholder{color:var(--sapField_PlaceholderTextColor);font-style:var(--fdPlaceholder_Font_Style)}.fd-input::placeholder{color:var(--sapField_PlaceholderTextColor);font-style:var(--fdPlaceholder_Font_Style)}.fd-input[dir=rtl]::-webkit-input-placeholder,[dir=rtl] .fd-input::-webkit-input-placeholder{text-indent:.125rem}.fd-input[dir=rtl]::-moz-placeholder,[dir=rtl] .fd-input::-moz-placeholder{text-indent:.125rem}.fd-input[dir=rtl]:-ms-input-placeholder,[dir=rtl] .fd-input:-ms-input-placeholder{text-indent:.125rem}.fd-input[dir=rtl]::-ms-input-placeholder,[dir=rtl] .fd-input::-ms-input-placeholder{text-indent:.125rem}.fd-input[dir=rtl]::placeholder,[dir=rtl] .fd-input::placeholder{text-indent:.125rem}.fd-input::-moz-selection{background-color:var(--sapSelectedColor);color:var(--sapContent_ContrastTextColor)}.fd-input::selection{background-color:var(--sapSelectedColor);color:var(--sapContent_ContrastTextColor)}.fd-input::-ms-clear{display:none}.fd-input.is-hover,.fd-input:hover{background:var(--sapField_Hover_BackgroundStyle,var(--sapField_Hover_BackgroundStyle));background-color:var(--sapField_Hover_Background,var(--sapField_Hover_Background));border-color:var(--sapField_Hover_BorderColor);-webkit-box-shadow:var(--fdInput_Box_Shadow_Hover);box-shadow:var(--fdInput_Box_Shadow_Hover)}.fd-input.is-focus,.fd-input:focus{background:var(--sapField_Focus_Background,var(--sapField_Focus_Background));-webkit-box-shadow:none;box-shadow:none;outline:var(--fdInput_Outline_Color) var(--sapContent_FocusStyle) var(--sapContent_FocusWidth);outline-offset:var(--fdInput_Outline_Offset);z-index:5}.fd-input[type=search]::-webkit-search-cancel-button,.fd-input[type=search]::-webkit-search-decoration,.fd-input[type=search]::-webkit-search-results-button,.fd-input[type=search]::-webkit-search-results-decoration{-webkit-appearance:none;appearance:none}.fd-input[aria-expanded=false]{z-index:0}.fd-input.is-expanded,.fd-input[aria-expanded=true]{z-index:4}.fd-input[class*=-compact],.fd-input[class*=-condensed],[class*=-compact] .fd-input:not([class*=-cozy]),[class*=-condensed] .fd-input:not([class*=-cozy]){-webkit-box-sizing:border-box;box-sizing:border-box;height:var(--fdInput_Compact_Height,var(--sapElement_Compact_Height));margin-block:var(--fdInput_Field_Compact_Margin_Block,.1875rem);margin-inline:0;min-height:var(--fdInput_Compact_Height,var(--sapElement_Compact_Height));min-width:var(--fdInput_Field_Compact_Min_Width,2rem);padding-block:0;padding-inline:var(--fdInput_Field_Compact_Padding,.5rem)}.fd-input--no-number-spinner{-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.fd-input--no-number-spinner::-webkit-inner-spin-button,.fd-input--no-number-spinner::-webkit-outer-spin-button{-webkit-appearance:none;appearance:none;margin-block:0;margin-inline:0}.fd-input.right-align{text-align:right}.fd-input.is-success{background:var(--sapField_SuccessBackgroundStyle);background-color:var(--sapField_SuccessBackground);border:var(--sapField_SuccessColor) var(--sapField_SuccessBorderWidth) var(--sapField_SuccessBorderStyle);-webkit-box-shadow:var(--sapField_SuccessShadow);box-shadow:var(--sapField_SuccessShadow)}.fd-input.is-success.is-hover,.fd-input.is-success:hover{background-color:var(--fdInput_Success_Background_Color_Hover);border-color:var(--sapField_SuccessColor);-webkit-box-shadow:var(--fdInput_Success_Box_Shadow_Hover);box-shadow:var(--fdInput_Success_Box_Shadow_Hover)}.fd-input.is-success.is-focus,.fd-input.is-success:focus{background:var(--sapField_Focus_Background);outline-color:var(--fdInput_Success_Outline_Color);z-index:5}.fd-input.is-success.is-focus.is-hover,.fd-input.is-success.is-focus:hover,.fd-input.is-success:focus.is-hover,.fd-input.is-success:focus:hover{-webkit-box-shadow:none;box-shadow:none}.fd-input.is-success.is-expanded,.fd-input.is-success[aria-expanded=true]{background:var(--sapField_Focus_Background);-webkit-box-shadow:none;box-shadow:none;outline:var(--sapContent_FocusWidth) var(--sapContent_FocusStyle) var(--fdInput_Success_Outline_Color);outline-offset:var(--fdInput_Outline_Offset)}.fd-input.is-error{background:var(--sapField_InvalidBackgroundStyle);background-color:var(--sapField_InvalidBackground);border:var(--sapField_InvalidColor) var(--sapField_InvalidBorderWidth) var(--sapField_InvalidBorderStyle);-webkit-box-shadow:var(--sapField_InvalidShadow);box-shadow:var(--sapField_InvalidShadow)}.fd-input.is-error.is-hover,.fd-input.is-error:hover{background-color:var(--fdInput_Error_Background_Color_Hover);border-color:var(--sapField_InvalidColor);-webkit-box-shadow:var(--fdInput_Error_Box_Shadow_Hover);box-shadow:var(--fdInput_Error_Box_Shadow_Hover)}.fd-input.is-error.is-focus,.fd-input.is-error:focus{background:var(--sapField_Focus_Background);outline-color:var(--fdInput_Error_Outline_Color);z-index:5}.fd-input.is-error.is-focus.is-hover,.fd-input.is-error.is-focus:hover,.fd-input.is-error:focus.is-hover,.fd-input.is-error:focus:hover{-webkit-box-shadow:none;box-shadow:none}.fd-input.is-error.is-expanded,.fd-input.is-error[aria-expanded=true]{background:var(--sapField_Focus_Background);-webkit-box-shadow:none;box-shadow:none;outline:var(--sapContent_FocusWidth) var(--sapContent_FocusStyle) var(--fdInput_Error_Outline_Color);outline-offset:var(--fdInput_Outline_Offset)}.fd-input.is-warning{background:var(--sapField_WarningBackgroundStyle);background-color:var(--sapField_WarningBackground);border:var(--sapField_WarningColor) var(--sapField_WarningBorderWidth) var(--sapField_WarningBorderStyle);-webkit-box-shadow:var(--sapField_WarningShadow);box-shadow:var(--sapField_WarningShadow)}.fd-input.is-warning.is-hover,.fd-input.is-warning:hover{background-color:var(--fdInput_Warning_Background_Color_Hover);border-color:var(--sapField_WarningColor);-webkit-box-shadow:var(--fdInput_Warning_Box_Shadow_Hover);box-shadow:var(--fdInput_Warning_Box_Shadow_Hover)}.fd-input.is-warning.is-focus,.fd-input.is-warning:focus{background:var(--sapField_Focus_Background);outline-color:var(--fdInput_Warning_Outline_Color);z-index:5}.fd-input.is-warning.is-focus.is-hover,.fd-input.is-warning.is-focus:hover,.fd-input.is-warning:focus.is-hover,.fd-input.is-warning:focus:hover{-webkit-box-shadow:none;box-shadow:none}.fd-input.is-warning.is-expanded,.fd-input.is-warning[aria-expanded=true]{background:var(--sapField_Focus_Background);-webkit-box-shadow:none;box-shadow:none;outline:var(--sapContent_FocusWidth) var(--sapContent_FocusStyle) var(--fdInput_Warning_Outline_Color);outline-offset:var(--fdInput_Outline_Offset)}.fd-input.is-alert{background:var(--sapField_WarningBackgroundStyle);background-color:var(--sapField_WarningBackground);border:var(--sapField_WarningColor) var(--sapField_WarningBorderWidth) var(--sapField_WarningBorderStyle)}.fd-input.is-alert.is-hover,.fd-input.is-alert:hover{background-color:var(--fdInput_Warning_Background_Color_Hover);border-color:var(--sapField_WarningColor);-webkit-box-shadow:var(--fdInput_Warning_Box_Shadow_Hover);box-shadow:var(--fdInput_Warning_Box_Shadow_Hover)}.fd-input.is-alert.is-focus,.fd-input.is-alert:focus{background:var(--sapField_Focus_Background);outline-color:var(--fdInput_Warning_Outline_Color);z-index:5}.fd-input.is-alert.is-focus.is-hover,.fd-input.is-alert.is-focus:hover,.fd-input.is-alert:focus.is-hover,.fd-input.is-alert:focus:hover{-webkit-box-shadow:none;box-shadow:none}.fd-input.is-alert.is-expanded,.fd-input.is-alert[aria-expanded=true]{background:var(--sapField_Focus_Background);-webkit-box-shadow:none;box-shadow:none;outline:var(--sapContent_FocusWidth) var(--sapContent_FocusStyle) var(--fdInput_Warning_Outline_Color);outline-offset:var(--fdInput_Outline_Offset)}.fd-input.is-information{background:var(--sapField_InformationBackgroundStyle);background-color:var(--sapField_InformationBackground);border:var(--sapField_InformationColor) var(--sapField_InformationBorderWidth) var(--sapField_InformationBorderStyle);-webkit-box-shadow:var(--sapField_InformationShadow);box-shadow:var(--sapField_InformationShadow)}.fd-input.is-information.is-hover,.fd-input.is-information:hover{background-color:var(--fdInput_Information_Background_Color_Hover);border-color:var(--sapField_InformationColor);-webkit-box-shadow:var(--fdInput_Information_Box_Shadow_Hover);box-shadow:var(--fdInput_Information_Box_Shadow_Hover)}.fd-input.is-information.is-focus,.fd-input.is-information:focus{background:var(--sapField_Focus_Background);outline-color:var(--fdInput_Information_Outline_Color);z-index:5}.fd-input.is-information.is-focus.is-hover,.fd-input.is-information.is-focus:hover,.fd-input.is-information:focus.is-hover,.fd-input.is-information:focus:hover{-webkit-box-shadow:none;box-shadow:none}.fd-input.is-information.is-expanded,.fd-input.is-information[aria-expanded=true]{background:var(--sapField_Focus_Background);-webkit-box-shadow:none;box-shadow:none;outline:var(--sapContent_FocusWidth) var(--sapContent_FocusStyle) var(--fdInput_Information_Outline_Color);outline-offset:var(--fdInput_Outline_Offset)}.fd-input.is-alert,.fd-input.is-error,.fd-input.is-warning{font-style:var(--fdInput_State_Text_Style);font-weight:var(--fdInput_State_Font_Weight)}.fd-input.is-alert::-webkit-input-placeholder,.fd-input.is-error::-webkit-input-placeholder,.fd-input.is-warning::-webkit-input-placeholder{font-weight:var(--fdInput_State_Font_Weight)}.fd-input.is-alert::-moz-placeholder,.fd-input.is-error::-moz-placeholder,.fd-input.is-warning::-moz-placeholder{font-weight:var(--fdInput_State_Font_Weight)}.fd-input.is-alert:-ms-input-placeholder,.fd-input.is-error:-ms-input-placeholder,.fd-input.is-warning:-ms-input-placeholder{font-weight:var(--fdInput_State_Font_Weight)}.fd-input.is-alert::-ms-input-placeholder,.fd-input.is-error::-ms-input-placeholder,.fd-input.is-warning::-ms-input-placeholder{font-weight:var(--fdInput_State_Font_Weight)}.fd-input.is-alert::placeholder,.fd-input.is-error::placeholder,.fd-input.is-warning::placeholder{font-weight:var(--fdInput_State_Font_Weight)}.fd-input.is-alert.is-focus,.fd-input.is-alert:focus,.fd-input.is-error.is-focus,.fd-input.is-error:focus,.fd-input.is-information.is-focus,.fd-input.is-information:focus,.fd-input.is-warning.is-focus,.fd-input.is-warning:focus{outline-offset:var(--fdInput_Outline_Offset_States);z-index:5}.fd-input.is-error::-webkit-input-placeholder{color:var(--sapField_TextColor)}.fd-input.is-error::-moz-placeholder{color:var(--sapField_TextColor)}.fd-input.is-error:-ms-input-placeholder{color:var(--sapField_TextColor)}.fd-input.is-error::-ms-input-placeholder{color:var(--sapField_TextColor)}.fd-input.is-error::placeholder{color:var(--sapField_TextColor)}.fd-input.is-disabled,.fd-input:disabled,.fd-input[aria-disabled=true]{opacity:var(--sapContent_DisabledOpacity);pointer-events:none}.fd-input.is-disabled::-webkit-input-placeholder,.fd-input:disabled::-webkit-input-placeholder,.fd-input[aria-disabled=true]::-webkit-input-placeholder{color:var(--fdInput_Non_Interactive_State_Placeholder_Color);opacity:0}.fd-input.is-disabled::-moz-placeholder,.fd-input:disabled::-moz-placeholder,.fd-input[aria-disabled=true]::-moz-placeholder{color:var(--fdInput_Non_Interactive_State_Placeholder_Color);opacity:0}.fd-input.is-disabled:-ms-input-placeholder,.fd-input:disabled:-ms-input-placeholder,.fd-input[aria-disabled=true]:-ms-input-placeholder{color:var(--fdInput_Non_Interactive_State_Placeholder_Color);opacity:0}.fd-input.is-disabled::-ms-input-placeholder,.fd-input:disabled::-ms-input-placeholder,.fd-input[aria-disabled=true]::-ms-input-placeholder{color:var(--fdInput_Non_Interactive_State_Placeholder_Color);opacity:0}.fd-input.is-disabled::placeholder,.fd-input:disabled::placeholder,.fd-input[aria-disabled=true]::placeholder{color:var(--fdInput_Non_Interactive_State_Placeholder_Color);opacity:0}.fd-input.is-readonly,.fd-input[aria-readonly=true],.fd-input[readonly]{--fdInput_Outline_Offset:-.25rem;background:var(--sapField_ReadOnly_BackgroundStyle);background-color:var(--sapField_ReadOnly_Background);border-color:var(--sapField_ReadOnly_BorderColor);-webkit-box-shadow:none;box-shadow:none}.fd-input.is-readonly::-webkit-input-placeholder,.fd-input[aria-readonly=true]::-webkit-input-placeholder,.fd-input[readonly]::-webkit-input-placeholder{color:var(--fdInput_Non_Interactive_State_Placeholder_Color);opacity:0}.fd-input.is-readonly::-moz-placeholder,.fd-input[aria-readonly=true]::-moz-placeholder,.fd-input[readonly]::-moz-placeholder{color:var(--fdInput_Non_Interactive_State_Placeholder_Color);opacity:0}.fd-input.is-readonly:-ms-input-placeholder,.fd-input[aria-readonly=true]:-ms-input-placeholder,.fd-input[readonly]:-ms-input-placeholder{color:var(--fdInput_Non_Interactive_State_Placeholder_Color);opacity:0}.fd-input.is-readonly::-ms-input-placeholder,.fd-input[aria-readonly=true]::-ms-input-placeholder,.fd-input[readonly]::-ms-input-placeholder{color:var(--fdInput_Non_Interactive_State_Placeholder_Color);opacity:0}.fd-input.is-readonly::placeholder,.fd-input[aria-readonly=true]::placeholder,.fd-input[readonly]::placeholder{color:var(--fdInput_Non_Interactive_State_Placeholder_Color);opacity:0}.fd-input.is-readonly.is-focus,.fd-input.is-readonly.is-hover,.fd-input.is-readonly:focus,.fd-input.is-readonly:hover,.fd-input[aria-readonly=true].is-focus,.fd-input[aria-readonly=true].is-hover,.fd-input[aria-readonly=true]:focus,.fd-input[aria-readonly=true]:hover,.fd-input[readonly].is-focus,.fd-input[readonly].is-hover,.fd-input[readonly]:focus,.fd-input[readonly]:hover{--fdInput_Outline_Offset:-.25rem;background:var(--sapField_ReadOnly_BackgroundStyle);background-color:var(--sapField_ReadOnly_Background);border-color:var(--sapField_ReadOnly_BorderColor);-webkit-box-shadow:none;box-shadow:none}.fd-input.is-readonly.is-focus,.fd-input.is-readonly:focus,.fd-input[aria-readonly=true].is-focus,.fd-input[aria-readonly=true]:focus,.fd-input[readonly].is-focus,.fd-input[readonly]:focus{z-index:5}.fd-time{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0;--fdTime_Item_Height:2.875rem;--fdTime_Dropdown_Padding:1rem;--fdTime_Wrapper_Height:20.125rem;--fdTime_Unit_Line_Height:2.75rem;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding-block:var(--fdTime_Dropdown_Padding);padding-inline:var(--fdTime_Dropdown_Padding)}.fd-time:after,.fd-time:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-time__col{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);display:-webkit-box;display:-ms-flexbox;display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-margin-end:.5rem;margin-inline-end:.5rem}.fd-time__col:after,.fd-time__col:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-time__col:last-child{-webkit-margin-end:0;margin-inline-end:0}.fd-time__current-indicator{border:0;border:.0625rem solid var(--sapList_SelectionBorderColor);border-radius:var(--sapButton_BorderCornerRadius);-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:var(--fdTime_Item_Height);left:0;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0;position:absolute;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);width:3rem}.fd-time__current-indicator:after,.fd-time__current-indicator:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-time__wrapper{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);display:-webkit-box;display:-ms-flexbox;display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;overflow:hidden;position:relative;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;width:3rem}.fd-time__wrapper:after,.fd-time__wrapper:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-time__wrapper--active{height:var(--fdTime_Wrapper_Height);max-height:var(--fdTime_Wrapper_Height);-webkit-box-pack:initial;-ms-flex-pack:initial;justify-content:normal}.fd-time__wrapper--meridian .fd-time__item:first-child{margin-top:calc(var(--fdTime_Item_Height)*3)}.fd-time__wrapper--meridian .fd-time__item:last-child{-webkit-margin-after:calc(var(--fdTime_Item_Height)*3);margin-block-end:calc(var(--fdTime_Item_Height)*3)}.fd-time__wrapper--meridian .fd-time__list{height:var(--fdTime_Wrapper_Height)}.fd-time__item{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);display:-webkit-box;display:-ms-flexbox;display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;background-color:var(--sapLegend_WorkingBackground);border:.0625rem solid var(--sapList_Background);border-radius:var(--sapButton_BorderCornerRadius);cursor:default;height:var(--fdTime_Item_Height);min-height:var(--fdTime_Item_Height);text-shadow:var(--fdTime_Text_Shadow);width:3rem}.fd-time__item:after,.fd-time__item:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-time__item:hover{background-color:var(--sapList_Hover_Background)}.fd-time__item:active{background-color:var(--sapContent_Selected_Background);border-color:transparent;color:var(--sapContent_Selected_TextColor)}.fd-time__item--current{background-color:var(--sapList_Background);border-color:var(--sapList_SelectionBorderColor)}.fd-time__item--current:hover{background-color:var(--sapList_Hover_Background)}.fd-time__item--collapsed,.fd-time__item--current:active{background-color:var(--sapContent_Selected_Background);border-color:transparent;color:var(--sapContent_Selected_TextColor)}.fd-time__item--collapsed:hover{background-color:var(--sapContent_Selected_Hover_Background)}.fd-time__item--hidden{visibility:hidden}.fd-time__unit{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);color:inherit;display:block;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:100%;line-height:normal;line-height:var(--fdTime_Unit_Line_Height);margin-block:0;margin-inline:0;overflow:hidden;padding-block:0;padding-inline:0;text-align:center;text-overflow:ellipsis;white-space:nowrap;width:100%;z-index:2}.fd-time__unit:after,.fd-time__unit:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-time__list{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0;-ms-overflow-style:none;overflow:hidden;scrollbar-width:none}.fd-time__list:after,.fd-time__list:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-time__list::-webkit-scrollbar{display:none}.fd-time__slider-label{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapContent_LabelColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;max-width:100%;position:relative;text-overflow:ellipsis;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;-webkit-margin-end:.5rem;cursor:text;margin-inline-end:.5rem;-ms-flex-item-align:start;align-self:flex-start;font-size:var(--sapFontSmallSize);height:2rem;line-height:2rem;margin-block:0;margin-inline:0;overflow:hidden;padding-block:0;padding-inline:0;text-overflow:clip;white-space:nowrap;-ms-flex-item-align:auto;align-self:auto}.fd-time__slider-label:after,.fd-time__slider-label:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-time__control{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0}.fd-time__control:after,.fd-time__control:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-time--tablet{--fdTime_Dropdown_Padding:.5rem;--fdTime_Item_Height:2.875rem}.fd-time[class*=-compact],.fd-time[class*=-condensed],[class*=-compact] .fd-time:not([class*=-cozy]),[class*=-condensed] .fd-time:not([class*=-cozy]){--fdTime_Dropdown_Padding:.5rem;--fdTime_Item_Height:2rem;--fdTime_Wrapper_Height:14rem;--fdTime_Unit_Line_Height:1.875rem}.fd-time--scrollable .fd-time__list{overflow:auto}.fd-time__list{touch-action:pan-x;-webkit-user-select:none;user-select:none;-webkit-user-drag:none;-webkit-tap-highlight-color:rgba(0,0,0,0)}\\n/*! Bundled license information:\\n\\nfundamental-styles/dist/time.css:\\n (*!\\n * Fundamental Library Styles v0.40.1\\n * Copyright (c) 2025 SAP SE or an SAP affiliate company.\\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\\n *)\\n*/\\n\"] }]\n }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i1.DatetimeAdapter, decorators: [{\n type: Optional\n }] }, { type: i2.ContentDensityObserver }, { type: i3.RtlService, decorators: [{\n type: Optional\n }] }], propDecorators: { meridian: [{\n type: Input\n }], validate: [{\n type: Input\n }], keepTwoDigits: [{\n type: Input\n }], disabled: [{\n type: Input\n }], displaySeconds: [{\n type: Input\n }], displayMinutes: [{\n type: Input\n }], displayHours: [{\n type: Input\n }], tablet: [{\n type: Input\n }], elementsAtOnce: [{\n type: Input\n }], time: [{\n type: Input\n }], spinnerButtons: [{\n type: Input\n }], columns: [{\n type: ViewChildren,\n args: [TimeColumnComponent]\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvdGltZS90aW1lLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS90aW1lL3RpbWUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNoRSxPQUFPLEVBRUgsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFVBQVUsRUFDVixLQUFLLEVBSUwsUUFBUSxFQUNSLFNBQVMsRUFFVCxZQUFZLEVBQ1osaUJBQWlCLEVBQ2pCLFFBQVEsRUFDUixVQUFVLEVBQ1YsTUFBTSxFQUNOLEtBQUssRUFDUixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVwQyxPQUFPLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUVqRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsK0JBQStCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUNoSCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDeEQsT0FBTyxFQUFFLG9DQUFvQyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRWhFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDOzs7OztBQTZCMUUsTUFBTSxPQUFPLGFBQWE7SUEySXRCLGNBQWM7SUFDZCxZQUNZLGtCQUFxQyxFQUNy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USxFQUFFLGFBQWE7cUJBQzFCLGFBQ1U7d0JBQ1A7NEJBQ0ksT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsY0FBYyxDQUFDOzRCQUM1QyxLQUFLLEVBQUUsSUFBSTt5QkFDZDt3QkFDRCwrQkFBK0IsRUFBRTtxQkFDcEMsbUJBQ2dCLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUksV0FDNUIsQ0FBQyxtQkFBbUIsRUFBRSxlQUFlLENBQUM7OzBCQWtKMUMsUUFBUTs7MEJBRVIsUUFBUTt5Q0E1SWIsUUFBUTtzQkFEUCxLQUFLO2dCQU9OLFFBQVE7c0JBRFAsS0FBSztnQkFTTixhQUFhO3NCQURaLEtBQUs7Z0JBT04sUUFBUTtzQkFEUCxLQUFLO2dCQU9OLGNBQWM7c0JBRGIsS0FBSztnQkFLTixjQUFjO3NCQURiLEtBQUs7Z0JBT04sWUFBWTtzQkFEWCxLQUFLO2dCQUtOLE1BQU07c0JBREwsS0FBSztnQkFLTixjQUFjO3NCQURiLEtBQUs7Z0JBT04sSUFBSTtzQkFESCxLQUFLO2dCQUtOLGNBQWM7c0JBRGIsS0FBSztnQkFLTixPQUFPO3NCQUROLFlBQVk7dUJBQUMsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTEVGVF9BUlJPVywgUklHSFRfQVJST1cgfSBmcm9tICdAYW5ndWxhci9jZGsva2V5Y29kZXMnO1xuaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBEZXN0cm95UmVmLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3B0aW9uYWwsXG4gICAgUXVlcnlMaXN0LFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVmlld0NoaWxkcmVuLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uLFxuICAgIGNvbXB1dGVkLFxuICAgIGZvcndhcmRSZWYsXG4gICAgaW5qZWN0LFxuICAgIGlucHV0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IEtleVV0aWwsIFJ0bFNlcnZpY2UgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5pbXBvcnQgeyBEYXRldGltZUFkYXB0ZXIgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvZGF0ZXRpbWUnO1xuXG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBDb250ZW50RGVuc2l0eU9ic2VydmVyLCBjb250ZW50RGVuc2l0eU9ic2VydmVyUHJvdmlkZXJzIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2NvbnRlbnQtZGVuc2l0eSc7XG5pbXBvcnQgeyBGZFRyYW5zbGF0ZVBpcGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2kxOG4nO1xuaW1wb3J0IHsgY3JlYXRlTWlzc2luZ0RhdGVJbXBsZW1lbnRhdGlvbkVycm9yIH0gZnJvbSAnLi9lcnJvcnMnO1xuaW1wb3J0IHsgTWVyaWRpYW4sIFNlbGVjdGFibGVWaWV3SXRlbSB9IGZyb20gJy4vbW9kZWxzJztcbmltcG9ydCB7IFRpbWVDb2x1bW5Db21wb25lbnQgfSBmcm9tICcuL3RpbWUtY29sdW1uL3RpbWUtY29sdW1uLmNvbXBvbmVudCc7XG5cbmV4cG9ydCB0eXBlIEZkVGltZUFjdGl2ZVZpZXcgPSAnaG91cicgfCAnbWludXRlJyB8ICdzZWNvbmQnIHwgJ21lcmlkaWFuJztcblxudHlwZSBIb3VyVmlld0l0ZW0gPSBTZWxlY3RhYmxlVmlld0l0ZW08bnVtYmVyPjtcbnR5cGUgTWludXRlVmlld0l0ZW0gPSBTZWxlY3RhYmxlVmlld0l0ZW08bnVtYmVyPjtcbnR5cGUgU2Vjb25kVmlld0l0ZW0gPSBTZWxlY3RhYmxlVmlld0l0ZW08bnVtYmVyPjtcbnR5cGUgTWVyaWRpYW5WaWV3SXRlbSA9IFNlbGVjdGFibGVWaWV3SXRlbTxNZXJpZGlhbj47XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZmQtdGltZScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3RpbWUuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsOiAnLi90aW1lLmNvbXBvbmVudC5zY3NzJyxcbiAgICBob3N0OiB7XG4gICAgICAgICcoZm9jdXNvdXQpJzogJ19mb2N1c091dCgkZXZlbnQpJyxcbiAgICAgICAgJyhibHVyKSc6ICdvblRvdWNoZWQoKSdcbiAgICB9LFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFRpbWVDb21wb25lbnQpLFxuICAgICAgICAgICAgbXVsdGk6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgY29udGVudERlbnNpdHlPYnNlcnZlclByb3ZpZGVycygpXG4gICAgXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGltcG9ydHM6IFtUaW1lQ29sdW1uQ29tcG9uZW50LCBGZFRyYW5zbGF0ZVBpcGVdXG59KVxuZXhwb3J0IGNsYXNzIFRpbWVDb21wb25lbnQ8RD4gaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBBZnRlclZpZXdJbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gICAgLyoqXG4gICAgICogQElucHV0IFdoZW4gc2V0IHRvIGZhbHNlLCB1c2VzIHRoZSAyNCBob3VyIGNsb2NrIChob3VycyByYW5naW5nIGZyb20gMCB0byAyMylcbiAgICAgKiBhbmQgZG9lcyBub3QgZGlzcGxheSBhIHBlcmlvZCBjb250cm9sLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgbWVyaWRpYW4gPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqICBASW5wdXQgV2hlbiBzZXQgdG8gZmFsc2UsIGRvZXMgbm90IHNldCB0aGUgaW5wdXQgZmllbGQgdG8gaW52YWxpZCBzdGF0ZSBvbiBpbnZhbGlkIGVudHJ5LlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgdmFsaWRhdGUgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogQElucHV0IHdoZW4gc2V0IHRvIHRydWUsIHRpbWUgaW5wdXRzIHdvbid0IGFsbG93IHRvIGhhdmUgMSBkaWdpdFxuICAgICAqIGZvciBleGFtcGxlIDkgd2lsbCBiZWNvbWUgMDlcbiAgICAgKiBidXQgMTIgd2lsbCBiZSBrZXB0IGFzIDEyLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAga2VlcFR3b0RpZ2l0cyA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogQElucHV0IERpc2FibGVzIHRoZSBjb21wb25lbnQuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBkaXNhYmxlZDogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIEBJbnB1dCBXaGVuIHNldCB0byBmYWxzZSwgaGlkZXMgdGhlIGlucHV0IGZvciBzZWNvbmRzLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZGlzcGxheVNlY29uZHMgPSB0cnVlO1xuXG4gICAgLyoqIEBJbnB1dCBXaGVuIHNldCB0byBmYWxzZSwgaGlkZXMgdGhlIGlucHV0IGZvciBtaW51dGVzLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgZGlzcGxheU1pbnV0ZXMgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogV2hlbiBzZXQgdG8gZmFsc2UsIGhpZGVzIHRoZSBpbnB1dCBmb3IgaG91cnNcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGRpc3BsYXlIb3VycyA9IHRydWU7XG5cbiAgICAvKiogQElucHV0IERlZmluZXMgaWYgdGltZSBjb21wb25lbnQgc2hvdWxkIGJlIHVzZWQgaW4gdGFibGV0IG1vZGUgKi9cbiAgICBASW5wdXQoKVxuICAgIHRhYmxldCA9IGZhbHNlO1xuXG4gICAgLyoqIEBJbnB1dCBEZWZpbmVzIHF1YW50aXR5IG9mIHRoZSBlbGVtZW50cywgdGhhdCBhcmUgdmlzaWJsZSBhdCB0aGUgc2FtZSB0aW1lLiBTaG91bGQgYmUgb2RkIG51bWJlciAqL1xuICAgIEBJbnB1dCgpXG4gICAgZWxlbWVudHNBdE9uY2UgPSA3O1xuXG4gICAgLyoqXG4gICAgICogQElucHV0IEFuIG9iamVjdCB0aGF0IGNvbnRhaW5zIGRhdGV0aW1lIHJlcHJlc2VudGF0aW9uXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICB0aW1lOiBEO1xuXG4gICAgLyoqIEBJbnB1dCBXaGV0aGVyIHRvIHNob3cgc3Bpbm5lciBidXR0b25zICovXG4gICAgQElucHV0KClcbiAgICBzcGlubmVyQnV0dG9ucyA9IHRydWU7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGRyZW4oVGltZUNvbHVtbkNvbXBvbmVudClcbiAgICBjb2x1bW5zOiBRdWVyeUxpc3Q8VGltZUNvbHVtbkNvbXBvbmVudDxudW1iZXIsIFNlbGVjdGFibGVWaWV3SXRlbTxudW1iZXI+Pj47XG5cbiAgICAvKipcbiAgICAgKiBUaGUgaW50ZXJ2YWwgYmV0d2VlbiBzZWxlY3RhYmxlIG1pbnV0ZXMgKGUuZy4sIDEgZm9yIGV2ZXJ5IG1pbnV0ZSwgNSBmb3IgNS1taW51dGUgaW50ZXJ2YWxzLCAxNSBmb3IgMTUtbWludXRlIGludGVydmFscykuXG4gICAgICogRGVmYXVsdHMgdG8gMSAoZXZlcnkgbWludXRlKS5cbiAgICAgKi9cbiAgICByZWFkb25seSBtaW51dGVTdGVwID0gaW5wdXQ8bnVtYmVyPigxKTtcblxuICAgIC8qKiBBY3RpdmUgY29sdW1uIHZpZXcgdG8gaXRlcmF0ZSB3aXRoICovXG4gICAgYWN0aXZlVmlldzogRmRUaW1lQWN0aXZlVmlldyA9ICdob3VyJztcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBjb250YWluZXIgZm9yIFswIC0gMjNdIGhvdXJzXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGhvdXJWaWV3SXRlbXM6IEhvdXJWaWV3SXRlbVtdID0gW107XG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIHJlZmVyZW5jZSB0byBjdXJyZW50bHkgc2VsZWN0ZWQgaG91clZpZXdJdGVtcyBlbGVtZW50XG4gICAgICovXG4gICAgcHJvdGVjdGVkIGFjdGl2ZUhvdXJWaWV3SXRlbT86IEhvdXJWaWV3SXRlbTtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBjb250YWluZXIgZm9yIFswIC0gNTldIG1pbnV0ZXNcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgbWludXRlVmlld0l0ZW1zOiBNaW51dGVWaWV3SXRlbVtdID0gW107XG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIHJlZmVyZW5jZSB0byBjdXJyZW50bHkgc2VsZWN0ZWQgbWludXRlVmlld0l0ZW1zIGVsZW1lbnRcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgYWN0aXZlTWludXRlVmlld0l0ZW0/OiBNaW51dGVWaWV3SXRlbTtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBjb250YWluZXIgZm9yIFswIC0gNTldIHNlY29uZHNcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgc2Vjb25kVmlld0l0ZW1zOiBTZWNvbmRWaWV3SXRlbVtdID0gW107XG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIHJlZmVyZW5jZSB0byBjdXJyZW50bHkgc2VsZWN0ZWQgc2Vjb25kVmlld0l0ZW1zIGVsZW1lbnRcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgYWN0aXZlU2Vjb25kVmlld0l0ZW0/OiBTZWNvbmRWaWV3SXRlbTtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBjb250YWluZXIgZm9yIFthbSwgcG1dIG1lcmlkaWFuIHZhbHVlc1xuICAgICAqL1xuICAgIHByb3RlY3RlZCBtZXJpZGlhblZpZXdJdGVtczogTWVyaWRpYW5WaWV3SXRlbVtdID0gW107XG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIHJlZmVyZW5jZSB0byBjdXJyZW50bHkgc2VsZWN0ZWQgbWVyaWRpYW5WaWV3SXRlbXMgZWxlbWVudFxuICAgICAqL1xuICAgIHByb3RlY3RlZCBhY3RpdmVNZXJpZGlhblZpZXdJdGVtPzogTWVyaWRpYW5WaWV3SXRlbTtcblxuICAgIC8qKiBPZmZzZXQgY29tcHV0ZWQgc2lnbmFsICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IG9mZnNldCA9IGNvbXB1dGVkKCgpID0+IE1hdGguZmxvb3IodGhpcy5lbGVtZW50c0F0T25jZSAvIDIpKTtcblxuICAgIC8qKiBPZmZzZXQgZm9yIG1pbnV0ZXMgY29sdW1uLCBhZGp1c3RlZCBmb3IgbWludXRlU3RlcCAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBtaW51dGVPZmZzZXQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IHN0ZXAgPSB0aGlzLm1pbnV0ZVN0ZXAoKTtcbiAgICAgICAgY29uc3Qgc3RlcENvdW50ID0gTWF0aC5jZWlsKDYwIC8gc3RlcCk7XG4gICAgICAgIGNvbnN0IGVmZmVjdGl2ZUVsZW1lbnRzQXRPbmNlID0gTWF0aC5taW4odGhpcy5lbGVtZW50c0F0T25jZSwgc3RlcENvdW50KTtcbiAgICAgICAgLy8gRW5zdXJlIGVmZmVjdGl2ZSBjb3VudCBpcyBvZGQgZm9yIHByb3BlciBjZW50ZXJpbmcgKG5lZWQgZXF1YWwgaXRlbXMgYWJvdmUgYW5kIGJlbG93IGZvY3VzZWQgaXRlbSlcbiAgICAgICAgY29uc3QgYWRqdXN0ZWRFbGVtZW50c0F0T25jZSA9XG4gICAgICAgICAgICBlZmZlY3RpdmVFbGVtZW50c0F0T25jZSAlIDIgPT09IDAgPyBlZmZlY3RpdmVFbGVtZW50c0F0T25jZSAtIDEgOiBlZmZlY3RpdmVFbGVtZW50c0F0T25jZTtcbiAgICAgICAgcmV0dXJuIE1hdGguZmxvb3IoYWRqdXN0ZWRFbGVtZW50c0F0T25jZSAvIDIpO1xuICAgIH0pO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9kZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zdWJzY3JpcHRpb25zID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBfY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcml2YXRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgICAvLyBVc2UgQE9wdGlvbmFsIHRvIGF2b2lkIGFuZ3VsYXIgaW5qZWN0aW9uIGVycm9yIG1lc3NhZ2UgYW5kIHRocm93IG91ciBvd24gd2hpY2ggaXMgbW9yZSBwcmVjaXNlIG9uZVxuICAgICAgICBAT3B0aW9uYWwoKSBwcml2YXRlIF9kYXRlVGltZUFkYXB0ZXI6IERhdGV0aW1lQWRhcHRlcjxEPixcbiAgICAgICAgcmVhZG9ubHkgX2NvbnRlbnREZW5zaXR5T2JzZXJ2ZXI6IENvbnRlbnREZW5zaXR5T2JzZXJ2ZXIsXG4gICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgX3J0bFNlcnZpY2U6IFJ0bFNlcnZpY2VcbiAgICApIHtcbiAgICAgICAgaWYgKCFfZGF0ZVRpbWVBZGFwdGVyKSB7XG4gICAgICAgICAgICB0aHJvdyBjcmVhdGVNaXNzaW5nRGF0ZUltcGxlbWVudGF0aW9uRXJyb3IoJ0RhdGVUaW1lQWRhcHRlcicpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy50aW1lID0gdGhpcy5fZ2V0RGVmYXVsdFZhbHVlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZGF0ZVRpbWVBZGFwdGVyLmxvY2FsZUNoYW5nZXMucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZGVzdHJveVJlZikpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9zZXRVcFZpZXdHcmlkKCk7XG4gICAgICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuX3NldFVwVmlld0dyaWQoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlblxuICAgICAqIFJlYWN0cyBvbmx5IHdoZW4gdGhlcmUgaXMgbWVyaWRpYW4sIHRpbWUsIG9yIG1pbnV0ZVN0ZXAgaW5wdXQgY2hhbmdlXG4gICAgICovXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAoY2hhbmdlcy5tZXJpZGlhbiB8fCBjaGFuZ2VzLnRpbWUgfHwgY2hhbmdlcy5taW51dGVTdGVwKSB7XG4gICAgICAgICAgICB0aGlzLl9zZXRVcFZpZXdHcmlkKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNoYW5nZXMuZWxlbWVudHNBdE9uY2UgJiYgY2hhbmdlcy5lbGVtZW50c0F0T25jZS5jdXJyZW50VmFsdWUgJSAyID09PSAwKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1tlbGVtZW50c0F0T25jZV0gc2hvdWxkIGJlIG9kZCBudW1iZXInKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMudW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yZWZyZXNoQ29sdW1ucygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgb25DaGFuZ2U6ICh2YWx1ZTogRCkgPT4gdm9pZCA9ICgpID0+IHt9O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBvblRvdWNoZWQgPSAoKTogdm9pZCA9PiB7fTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHRpbWU6IEQpID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICByZWZyZXNoQ29sdW1ucygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jb2x1bW5zLmZvckVhY2goKGNvbHVtbikgPT4gY29sdW1uLnNldFZhbHVlT2ZBY3RpdmUoKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEhhbmRsZXMgbWVyaWRpYW4gY2hhbmdlLlxuICAgICAqIFRoaXMgaW1wbGljaXRseSBjaGFuZ2VzIGhvdXJzIGJ5ICsvLSAxMlxuICAgICAqL1xuICAgIGhhbmRsZU1lcmlkaWFuQ2hhbmdlKG1lcmlkaWFuOiBNZXJpZGlhbik6IHZvaWQge1xuICAgICAgICBsZXQgaG91ck9mZnNldDogbnVtYmVyID0gbWVyaWRpYW4gPT09IE1lcmlkaWFuLkFNID8gLTEyIDogMTI7XG4gICAgICAgIGxldCBjdXJyZW50SG91ciA9IHRoaXMuX2dldE1vZGVsSG91cigpO1xuXG4gICAgICAgIGlmIChjdXJyZW50SG91ciA+IDEyICYmIG1lcmlkaWFuID09PSBNZXJpZGlhbi5QTSkge1xuICAgICAgICAgICAgY3VycmVudEhvdXIgLT0gMTI7XG4gICAgICAgIH0gZWxzZSBpZiAoY3VycmVudEhvdXIgPT09IDEyKSB7XG4gICAgICAgICAgICBjdXJyZW50SG91ciA9IDA7XG4gICAgICAgIH0gZWxzZSBpZiAoY3VycmVudEhvdXIgPCAxMiAmJiBtZXJpZGlhbiA9PT0gTWVyaWRpYW4uQU0pIHtcbiAgICAgICAgICAgIGhvdXJPZmZzZXQgPSAwO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbmV3SG91ciA9IE1hdGgubWF4KDAsIE1hdGgubWluKDIzLCBjdXJyZW50SG91ciArIGhvdXJPZmZzZXQpKTtcblxuICAgICAgICB0aGlzLmhhbmRsZUhvdXJDaGFuZ2UobmV3SG91cik7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBoYW5kbGVTZWNvbmRDaGFuZ2Uoc2Vjb25kOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy50aW1lID0gdGhpcy5fZGF0ZVRpbWVBZGFwdGVyLnNldFNlY29uZHModGhpcy50aW1lLCBzZWNvbmQpO1xuICAgICAgICB0aGlzLl9jYWxjdWxhdGVBY3RpdmVTZWNvbmRWaWV3SXRlbSgpO1xuICAgICAgICB0aGlzLm9uQ2hhbmdlKHRoaXMudGltZSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBoYW5kbGVNaW51dGVDaGFuZ2UobWludXRlOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy50aW1lID0gdGhpcy5fZGF0ZVRpbWVBZGFwdGVyLnNldE1pbnV0ZXModGhpcy50aW1lLCBtaW51dGUpO1xuICAgICAgICB0aGlzLl9jYWxjdWxhdGVBY3RpdmVNaW51dGVWaWV3SXRlbSgpO1xuICAgICAgICB0aGlzLm9uQ2hhbmdlKHRoaXMudGltZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEhhbmRsZXMgY2hhbmdlcyBvZiBkaXNwbGF5ZWQgaG91ciB2YWx1ZSBmcm9tIHRlbXBsYXRlLlxuICAgICAqL1xuICAgIGhhbmRsZUhvdXJDaGFuZ2UoaG91cjogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMudGltZSA9IHRoaXMuX2RhdGVUaW1lQWRhcHRlci5zZXRIb3Vycyh0aGlzLnRpbWUsIGhvdXIpO1xuICAgICAgICB0aGlzLl9jYWxjdWxhdGVBY3RpdmVIb3VyVmlld0l0ZW0oKTtcblxuICAgICAgICBpZiAodGhpcy5tZXJpZGlhbikge1xuICAgICAgICAgICAgdGhpcy5fY2FsY3VsYXRlQWN0aXZlTWVyaWRpYW5WaWV3SXRlbSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5vbkNoYW5nZSh0aGlzLnRpbWUpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgaGFuZGxlTmV4dENvbHVtbkZvY3VzKGNvbHVtbjogRmRUaW1lQWN0aXZlVmlldyk6IHZvaWQge1xuICAgICAgICBjb25zdCBjb2x1bW5zID0gdGhpcy5fZ2V0VmlzaWJsZUNvbHVtbnNXaXRoUnRsKCk7XG4gICAgICAgIGxldCBuZXh0SW5kZXggPSBjb2x1bW5zLmluZGV4T2YoY29sdW1uKSArIDE7XG4gICAgICAgIGlmIChuZXh0SW5kZXggPj0gY29sdW1ucy5sZW5ndGgpIHtcbiAgICAgICAgICAgIG5leHRJbmRleCA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jaGFuZ2VBY3RpdmUoY29sdW1uc1tuZXh0SW5kZXhdKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGhhbmRsZVByZXZpb3VzQ29sdW1uRm9jdXMoY29sdW1uOiBGZFRpbWVBY3RpdmVWaWV3KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGNvbHVtbnMgPSB0aGlzLl9nZXRWaXNpYmxlQ29sdW1uc1dpdGhSdGwoKTtcbiAgICAgICAgbGV0IG5leHRJbmRleCA9IGNvbHVtbnMuaW5kZXhPZihjb2x1bW4pIC0gMTtcbiAgICAgICAgaWYgKG5leHRJbmRleCA8IDApIHtcbiAgICAgICAgICAgIG5leHRJbmRleCA9IGNvbHVtbnMubGVuZ3RoIC0gMTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNoYW5nZUFjdGl2ZShjb2x1bW5zW25leHRJbmRleF0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgaGFuZGxlS2V5RG93bkV2ZW50KGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmIChLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgTEVGVF9BUlJPVykpIHtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlUHJldmlvdXNDb2x1bW5Gb2N1cyh0aGlzLmFjdGl2ZVZpZXcpO1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIHRoaXMuZm9jdXNBY3RpdmVDb2x1bW4oKTtcbiAgICAgICAgfSBlbHNlIGlmIChLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgUklHSFRfQVJST1cpKSB7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZU5leHRDb2x1bW5Gb2N1cyh0aGlzLmFjdGl2ZVZpZXcpO1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIHRoaXMuZm9jdXNBY3RpdmVDb2x1bW4oKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgd3JpdGVWYWx1ZSh0aW1lOiBEKTogdm9pZCB7XG4gICAgICAgIGlmICghdGltZSB8fCAhdGhpcy5fZGF0ZVRpbWVBZGFwdGVyLmlzVmFsaWQodGltZSkpIHtcbiAgICAgICAgICAgIHRpbWUgPSB0aGlzLl9nZXREZWZhdWx0VmFsdWUoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnRpbWUgPSB0aW1lO1xuXG4gICAgICAgIHRoaXMuX3NldFVwQWN0aXZlVmlld0l0ZW1zKCk7XG5cbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY2hhbmdlQWN0aXZlKHZpZXc6IEZkVGltZUFjdGl2ZVZpZXcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5hY3RpdmVWaWV3ID0gdmlldztcbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgaXNBY3RpdmUodmlldzogRmRUaW1lQWN0aXZlVmlldyk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5hY3RpdmVWaWV3ID09PSB2aWV3O1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZm9jdXNBY3RpdmVDb2x1bW4oKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGNvbHVtbiA9IHRoaXMuY29sdW1ucy5maW5kKCh7IGFjdGl2ZSB9KSA9PiBhY3RpdmUpO1xuICAgICAgICBjb2x1bW4/LmZvY3VzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgX2ZvY3VzT3V0KGV2ZW50OiBGb2N1c0V2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnJlbGF0ZWRUYXJnZXQpKSB7XG4gICAgICAgICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IHZpc2libGUgdGltZSBjb2x1bW5zXG4gICAgICogQHJldHVybnMgdmlzaWJsZSBjb2x1bW5zIGxpc3QgQHNlZSB7RmRUaW1lQWN0aXZlVmlld1tdfVxuICAgICAqL1xuICAgIHByaXZhdGUgX2dldFZpc2libGVDb2x1bW5zKCk6IEZkVGltZUFjdGl2ZVZpZXdbXSB7XG4gICAgICAgIGNvbnN0IGFsbE9wdGlvbnM6IEFycmF5PFtib29sZWFuLCBGZFRpbWVBY3RpdmVWaWV3XT4gPSBbXG4gICAgICAgICAgICBbdGhpcy5kaXNwbGF5SG91cnMsICdob3VyJ10sXG4gICAgICAgICAgICBbdGhpcy5kaXNwbGF5TWludXRlcywgJ21pbnV0ZSddLFxuICAgICAgICAgICAgW3RoaXMuZGlzcGxheVNlY29uZHMsICdzZWNvbmQnXSxcbiAgICAgICAgICAgIFt0aGlzLm1lcmlkaWFuLCAnbWVyaWRpYW4nXVxuICAgICAgICBdO1xuICAgICAgICByZXR1cm4gYWxsT3B0aW9ucy5maWx0ZXIoKFtlbmFibGVkXSkgPT4gZW5hYmxlZCkubWFwKChbLCB2aWV3XSkgPT4gdmlldyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IHZpc2libGUgY29sdW1ucyB0YWtpbmcgaW50byBhY2NvdW50IFJUTFxuICAgICAqIEByZXR1cm5zIHZpc2libGUgY29sdW1ucyBsaXN0IEBzZWUge0ZkVGltZUFjdGl2ZVZpZXdbXX1cbiAgICAgKi9cbiAgICBwcml2YXRlIF9nZXRWaXNpYmxlQ29sdW1uc1dpdGhSdGwoKTogRmRUaW1lQWN0aXZlVmlld1tdIHtcbiAgICAgICAgY29uc3QgY29sdW1ucyA9IHRoaXMuX2dldFZpc2libGVDb2x1bW5zKCk7XG4gICAgICAgIHJldHVybiB0aGlzLl9ydGxTZXJ2aWNlPy5ydGwudmFsdWUgPyBjb2x1bW5zLnJldmVyc2UoKSA6IGNvbHVtbnM7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zZXRVcFZpZXdHcmlkKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jb25zdHJ1Y3RIb3VyVmlld0l0ZW1zKCk7XG4gICAgICAgIHRoaXMuX2NvbnN0cnVjdE1pbnV0ZVZpZXdJdGVtcygpO1xuICAgICAgICB0aGlzLl9jb25zdHJ1Y3RTZWNvbmRWaWV3SXRlbXMoKTtcbiAgICAgICAgdGhpcy5fY29uc3RydWN0TWVyaWRpYW5WaWV3SXRlbXMoKTtcbiAgICAgICAgLy8gdXBkYXRlIHJlZmVyZW5jZSB0byBhY3RpdmUgdmlldyBpdGVtc1xuICAgICAgICB0aGlzLl9zZXRVcEFjdGl2ZVZpZXdJdGVtcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2V0VXBBY3RpdmVWaWV3SXRlbXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2NhbGN1bGF0ZUFjdGl2ZUhvdXJWaWV3SXRlbSgpO1xuICAgICAgICB0aGlzLl9jYWxjdWxhdGVBY3RpdmVNaW51dGVWaWV3SXRlbSgpO1xuICAgICAgICB0aGlzLl9jYWxjdWxhdGVBY3RpdmVTZWNvbmRWaWV3SXRlbSgpO1xuICAgICAgICB0aGlzLl9jYWxjdWxhdGVBY3RpdmVNZXJpZGlhblZpZXdJdGVtKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jb25zdHJ1Y3RIb3VyVmlld0l0ZW1zKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmhvdXJWaWV3SXRlbXMgPSB0aGlzLl9kYXRlVGltZUFkYXB0ZXJcbiAgICAgICAgICAgIC5nZXRIb3VyTmFtZXMoeyBtZXJpZGlhbjogdGhpcy5tZXJpZGlhbiwgdHdvRGlnaXQ6IHRoaXMua2VlcFR3b0RpZ2l0cyB9KVxuICAgICAgICAgICAgLm1hcCgobmFtZSwgaG91cikgPT4gKHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogaG91cixcbiAgICAgICAgICAgICAgICBsYWJlbDogbmFtZVxuICAgICAgICAgICAgfSkpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY29uc3RydWN0TWludXRlVmlld0l0ZW1zKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBzdGVwID0gdGhpcy5taW51dGVTdGVwKCk7XG4gICAgICAgIHRoaXMubWludXRlVmlld0l0ZW1zID0gdGhpcy5fZGF0ZVRpbWVBZGFwdGVyXG4gICAgICAgICAgICAuZ2V0TWludXRlTmFtZXMoeyB0d29EaWdpdDogdGhpcy5rZWVwVHdvRGlnaXRzLCBtaW51dGVTdGVwOiBzdGVwIH0pXG4gICAgICAgICAgICAubWFwKChuYW1lLCBpbmRleCkgPT4gKHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogaW5kZXggKiBzdGVwLFxuICAgICAgICAgICAgICAgIGxhYmVsOiBuYW1lXG4gICAgICAgICAgICB9KSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jb25zdHJ1Y3RTZWNvbmRWaWV3SXRlbXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2Vjb25kVmlld0l0ZW1zID0gdGhpcy5fZGF0ZVRpbWVBZGFwdGVyXG4gICAgICAgICAgICAuZ2V0U2Vjb25kTmFtZXMoeyB0d29EaWdpdDogdGhpcy5rZWVwVHdvRGlnaXRzIH0pXG4gICAgICAgICAgICAubWFwKChuYW1lLCBzZWNvbmQpID0+ICh7XG4gICAgICAgICAgICAgICAgdmFsdWU6IHNlY29uZCxcbiAgICAgICAgICAgICAgICBsYWJlbDogbmFtZVxuICAgICAgICAgICAgfSkpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY29uc3RydWN0TWVyaWRpYW5WaWV3SXRlbXMoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IFthbUxhYmVsLCBwbUxhYmVsXSA9IHRoaXMuX2RhdGVUaW1lQWRhcHRlci5nZXREYXlQZXJpb2ROYW1lcygpO1xuICAgICAgICB0aGlzLm1lcmlkaWFuVmlld0l0ZW1zID0gW1xuICAgICAgICAgICAgeyB2YWx1ZTogTWVyaWRpYW4uQU0sIGxhYmVsOiBhbUxhYmVsIH0sXG4gICAgICAgICAgICB7IHZhbHVlOiBNZXJpZGlhbi5QTSwgbGFiZWw6IHBtTGFiZWwgfVxuICAgICAgICBdO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY2FsY3VsYXRlQWN0aXZlSG91clZpZXdJdGVtKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBob3VyID0gdGhpcy5fZ2V0TW9kZWxIb3VyKCk7XG4gICAgICAgIHRoaXMuYWN0aXZlSG91clZpZXdJdGVtID0gdGhpcy5ob3VyVmlld0l0ZW1zLmZpbmQoKHsgdmFsdWUgfSkgPT4gdmFsdWUgPT09IGhvdXIpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY2FsY3VsYXRlQWN0aXZlTWludXRlVmlld0l0ZW0oKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IG1pbnV0ZSA9IHRoaXMuX2dldE1vZGVsTWludXRlKCk7XG4gICAgICAgIGNvbnN0IHN0ZXAgPSB0aGlzLm1pbnV0ZVN0ZXAoKTtcblxuICAgICAgICAvLyBSb3VuZCB0byB0aGUgbmVhcmVzdCB2YWxpZCBzdGVwIGFuZCBjbGFtcCB0byB2YWxpZCByYW5nZVxuICAgICAgICBjb25zdCByb3VuZGVkTWludXRlID0gTWF0aC5taW4oTWF0aC5yb3VuZChtaW51dGUgLyBzdGVwKSAqIHN0ZXAsIDU5KTtcblxuICAgICAgICB0aGlzLmFjdGl2ZU1pbnV0ZVZpZXdJdGVtID0gdGhpcy5taW51dGVWaWV3SXRlbXMuZmluZCgoeyB2YWx1ZSB9KSA9PiB2YWx1ZSA9PT0gcm91bmRlZE1pbnV0ZSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jYWxjdWxhdGVBY3RpdmVTZWNvbmRWaWV3SXRlbSgpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgc2Vjb25kID0gdGhpcy5fZ2V0TW9kZWxTZWNvbmQoKTtcbiAgICAgICAgdGhpcy5hY3RpdmVTZWNvbmRWaWV3SXRlbSA9IHRoaXMuc2Vjb25kVmlld0l0ZW1zLmZpbmQoKHsgdmFsdWUgfSkgPT4gdmFsdWUgPT09IHNlY29uZCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jYWxjdWxhdGVBY3RpdmVNZXJpZGlhblZpZXdJdGVtKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBtZXJpZGlhbiA9IHRoaXMuX2dldERheVBlcmlvZEJ5SG91cigpO1xuICAgICAgICB0aGlzLmFjdGl2ZU1lcmlkaWFuVmlld0l0ZW0gPSB0aGlzLm1lcmlkaWFuVmlld0l0ZW1zLmZpbmQoKHsgdmFsdWUgfSkgPT4gdmFsdWUgPT09IG1lcmlkaWFuKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogTW9kZWwgaG91cnMgKDAgLSAyMylcbiAgICAgKi9cbiAgICBwcml2YXRlIF9nZXRNb2RlbEhvdXIoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGVUaW1lQWRhcHRlci5nZXRIb3Vycyh0aGlzLnRpbWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBNb2RlbCBtaW51dGVzICgwIC0gNTkpXG4gICAgICovXG4gICAgcHJpdmF0ZSBfZ2V0TW9kZWxNaW51dGUoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGVUaW1lQWRhcHRlci5nZXRNaW51dGVzKHRoaXMudGltZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIE1vZGVsIHNlY29uZHMgKDAgLSA1OSlcbiAgICAgKi9cbiAgICBwcml2YXRlIF9nZXRNb2RlbFNlY29uZCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGF0ZVRpbWVBZGFwdGVyLmdldFNlY29uZHModGhpcy50aW1lKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogR2V0IG1lcmlkaWFuIHBlcmlvZCBiYXNlZCBvbiBhIGdpdmVuIGhvdXJzXG4gICAgICovXG4gICAgcHJpdmF0ZSBfZ2V0RGF5UGVyaW9kQnlIb3VyKGhvdXIgPSB0aGlzLl9nZXRNb2RlbEhvdXIoKSk6IE1lcmlkaWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzUG0oaG91cikgPyBNZXJpZGlhbi5QTSA6IE1lcmlkaWFuLkFNO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfaXNQbShob3VyczogbnVtYmVyID0gdGhpcy5fZ2V0TW9kZWxIb3VyKCkpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIGhvdXJzID49IDEyO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAcmV0dXJucyBkZWZhdWx0IHRpbWUgMDA6MDA6MDBcbiAgICAgKi9cbiAgICBwcml2YXRlIF9nZXREZWZhdWx0VmFsdWUoKTogRCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kYXRlVGltZUFkYXB0ZXIudG9kYXkoKTtcbiAgICB9XG59XG4iLCI8ZGl2XG4gICAgY2xhc3M9XCJmZC10aW1lXCJcbiAgICBbY2xhc3MuaXMtY29tcGFjdF09XCJfY29udGVudERlbnNpdHlPYnNlcnZlci5pc0NvbXBhY3RTaWduYWwoKVwiXG4gICAgKGtleWRvd24pPVwiaGFuZGxlS2V5RG93bkV2ZW50KCRldmVudClcIlxuICAgIFtjbGFzcy5mZC10aW1lLS10YWJsZXRdPVwidGFibGV0XCJcbiAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidjb3JlVGltZS5jb21wb25lbnRBcmlhTmFtZScgfCBmZFRyYW5zbGF0ZVwiXG4+XG4gICAgPGZkLXRpbWUtY29sdW1uXG4gICAgICAgIFthY3RpdmVdPVwiaXNBY3RpdmUoJ2hvdXInKVwiXG4gICAgICAgIFtyb3dzXT1cImhvdXJWaWV3SXRlbXNcIlxuICAgICAgICBbb2Zmc2V0XT1cIm9mZnNldCgpXCJcbiAgICAgICAgW2VsZW1lbnRzQXRPbmNlXT1cImVsZW1lbnRzQXRPbmNlXCJcbiAgICAgICAgW2FjdGl2ZVZhbHVlXT1cImFjdGl2ZUhvdXJWaWV3SXRlbVwiXG4gICAgICAgIGNvbHVtblRyYW5zbGF0aW9uc1ByZXNldD1cImhvdXJzXCJcbiAgICAgICAgW3NwaW5uZXJzXT1cInNwaW5uZXJCdXR0b25zXCJcbiAgICAgICAgKGFjdGl2ZVZhbHVlQ2hhbmdlKT1cImhhbmRsZUhvdXJDaGFuZ2UoJGV2ZW50LnZhbHVlLnZhbHVlKVwiXG4gICAgICAgIChhY3RpdmVTdGF0ZUNoYW5nZSk9XCJjaGFuZ2VBY3RpdmUoJ2hvdXInKVwiXG4gICAgPjwvZmQtdGltZS1jb2x1bW4+XG4gICAgQGlmIChkaXNwbGF5TWludXRlcykge1xuICAgICAgICA8ZmQtdGltZS1jb2x1bW5cbiAgICAgICAgICAgIFthY3RpdmVdPVwiaXNBY3RpdmUoJ21pbnV0ZScpXCJcbiAgICAgICAgICAgIFtyb3dzXT1cIm1pbnV0ZVZpZXdJdGVtc1wiXG4gICAgICAgICAgICBbb2Zmc2V0XT1cIm1pbnV0ZU9mZnNldCgpXCJcbiAgICAgICAgICAgIFtlbGVtZW50c0F0T25jZV09XCJlbGVtZW50c0F0T25jZVwiXG4gICAgICAgICAgICBbYWN0aXZlVmFsdWVdPVwiYWN0aXZlTWludXRlVmlld0l0ZW1cIlxuICAgICAgICAgICAgY29sdW1uVHJhbnNsYXRpb25zUHJlc2V0PVwibWludXRlc1wiXG4gICAgICAgICAgICBbc3Bpbm5lcnNdPVwic3Bpbm5lckJ1dHRvbnNcIlxuICAgICAgICAgICAgKGFjdGl2ZVZhbHVlQ2hhbmdlKT1cImhhbmRsZU1pbnV0ZUNoYW5nZSgkZXZlbnQudmFsdWUudmFsdWUpXCJcbiAgICAgICAgICAgIChhY3RpdmVTdGF0ZUNoYW5nZSk9XCJjaGFuZ2VBY3RpdmUoJ21pbnV0ZScpXCJcbiAgICAgICAgPjwvZmQtdGltZS1jb2x1bW4+XG4gICAgfVxuICAgIEBpZiAoZGlzcGxheVNlY29uZHMpIHtcbiAgICAgICAgPGZkLXRpbWUtY29sdW1uXG4gICAgICAgICAgICBbYWN0aXZlXT1cImlzQWN0aXZlKCdzZWNvbmQnKVwiXG4gICAgICAgICAgICBbcm93c109XCJzZWNvbmRWaWV3SXRlbXNcIlxuICAgICAgICAgICAgW29mZnNldF09XCJvZmZzZXQoKVwiXG4gICAgICAgICAgICBbZWxlbWVudHNBdE9uY2VdPVwiZWxlbWVudHNBdE9uY2VcIlxuICAgICAgICAgICAgW2FjdGl2ZVZhbHVlXT1cImFjdGl2ZVNlY29uZFZpZXdJdGVtXCJcbiAgICAgICAgICAgIGNvbHVtblRyYW5zbGF0aW9uc1ByZXNldD1cInNlY29uZHNcIlxuICAgICAgICAgICAgW3NwaW5uZXJzXT1cInNwaW5uZXJCdXR0b25zXCJcbiAgICAgICAgICAgIChhY3RpdmVWYWx1ZUNoYW5nZSk9XCJoYW5kbGVTZWNvbmRDaGFuZ2UoJGV2ZW50LnZhbHVlLnZhbHVlKVwiXG4gICAgICAgICAgICAoYWN0aXZlU3RhdGVDaGFuZ2UpPVwiY2hhbmdlQWN0aXZlKCdzZWNvbmQnKVwiXG4gICAgICAgID48L2ZkLXRpbWUtY29sdW1uPlxuICAgIH1cbiAgICBAaWYgKG1lcmlkaWFuKSB7XG4gICAgICAgIDxmZC10aW1lLWNvbHVtblxuICAgICAgICAgICAgW2FjdGl2ZV09XCJpc0FjdGl2ZSgnbWVyaWRpYW4nKVwiXG4gICAgICAgICAgICBbcm93c109XCJtZXJpZGlhblZpZXdJdGVtc1wiXG4gICAgICAgICAgICBbYWN0aXZlVmFsdWVdPVwiYWN0aXZlTWVyaWRpYW5WaWV3SXRlbVwiXG4gICAgICAgICAgICBbb2Zmc2V0XT1cIjBcIlxuICAgICAgICAgICAgW2VsZW1lbnRzQXRPbmNlXT1cImVsZW1lbnRzQXRPbmNlXCJcbiAgICAgICAgICAgIGNvbHVtblRyYW5zbGF0aW9uc1ByZXNldD1cInBlcmlvZFwiXG4gICAgICAgICAgICBbbWVyaWRpYW5dPVwidHJ1ZVwiXG4gICAgICAgICAgICBbc3Bpbm5lcnNdPVwic3Bpbm5lckJ1dHRvbnNcIlxuICAgICAgICAgICAgKGFjdGl2ZVZhbHVlQ2hhbmdlKT1cImhhbmRsZU1lcmlkaWFuQ2hhbmdlKCRldmVudC52YWx1ZS52YWx1ZSlcIlxuICAgICAgICAgICAgKGFjdGl2ZVN0YXRlQ2hhbmdlKT1cImNoYW5nZUFjdGl2ZSgnbWVyaWRpYW4nKVwiXG4gICAgICAgID48L2ZkLXRpbWUtY29sdW1uPlxuICAgIH1cbjwvZGl2PlxuIl19","import { NgModule } from '@angular/core';\nimport { TimeColumnComponent } from './time-column/time-column.component';\nimport { TimeComponent } from './time.component';\nimport * as i0 from \"@angular/core\";\n/**\n * @deprecated\n * Use direct imports of `TimeComponent`, `TimeColumnComponent`\n */\nexport class TimeModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TimeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.1.4\", ngImport: i0, type: TimeModule, imports: [TimeComponent, TimeColumnComponent], exports: [TimeComponent, TimeColumnComponent] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TimeModule, imports: [TimeComponent, TimeColumnComponent] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TimeModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [TimeComponent, TimeColumnComponent],\n exports: [TimeComponent, TimeColumnComponent]\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvdGltZS90aW1lLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7QUFFakQ7OztHQUdHO0FBS0gsTUFBTSxPQUFPLFVBQVU7OEdBQVYsVUFBVTsrR0FBVixVQUFVLFlBSFQsYUFBYSxFQUFFLG1CQUFtQixhQUNsQyxhQUFhLEVBQUUsbUJBQW1COytHQUVuQyxVQUFVLFlBSFQsYUFBYSxFQUFFLG1CQUFtQjs7MkZBR25DLFVBQVU7a0JBSnRCLFFBQVE7bUJBQUM7b0JBQ04sT0FBTyxFQUFFLENBQUMsYUFBYSxFQUFFLG1CQUFtQixDQUFDO29CQUM3QyxPQUFPLEVBQUUsQ0FBQyxhQUFhLEVBQUUsbUJBQW1CLENBQUM7aUJBQ2hEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgVGltZUNvbHVtbkNvbXBvbmVudCB9IGZyb20gJy4vdGltZS1jb2x1bW4vdGltZS1jb2x1bW4uY29tcG9uZW50JztcbmltcG9ydCB7IFRpbWVDb21wb25lbnQgfSBmcm9tICcuL3RpbWUuY29tcG9uZW50JztcblxuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICogVXNlIGRpcmVjdCBpbXBvcnRzIG9mIGBUaW1lQ29tcG9uZW50YCwgYFRpbWVDb2x1bW5Db21wb25lbnRgXG4gKi9cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW1RpbWVDb21wb25lbnQsIFRpbWVDb2x1bW5Db21wb25lbnRdLFxuICAgIGV4cG9ydHM6IFtUaW1lQ29tcG9uZW50LCBUaW1lQ29sdW1uQ29tcG9uZW50XVxufSlcbmV4cG9ydCBjbGFzcyBUaW1lTW9kdWxlIHt9XG4iXX0=","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuZGFtZW50YWwtbmd4LWNvcmUtdGltZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS90aW1lL2Z1bmRhbWVudGFsLW5neC1jb3JlLXRpbWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0="],"names":[],"mappings":"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"}